summaryrefslogtreecommitdiff
path: root/libc/inet/getnet.c
diff options
context:
space:
mode:
authorCarmelo Amoroso <carmelo.amoroso@st.com>2010-11-28 21:09:47 +0100
committerCarmelo Amoroso <carmelo.amoroso@st.com>2010-11-28 21:09:47 +0100
commit57f6cce72c889f2e7b342e87a565a064320a6ee2 (patch)
tree5466406472918d3adb63398f5fb9ea1511a5e73f /libc/inet/getnet.c
parent4ec89b87bc0eea8d9ca6b50564d12eeb3b1b0119 (diff)
parent5dea871ac73ef4608022c058b50adc946917f9b9 (diff)
Merge commit 'origin/master' into prelink
Conflicts: ldso/include/dl-hash.h Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
Diffstat (limited to 'libc/inet/getnet.c')
-rw-r--r--libc/inet/getnet.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/libc/inet/getnet.c b/libc/inet/getnet.c
index c604b63d3..9049f97af 100644
--- a/libc/inet/getnet.c
+++ b/libc/inet/getnet.c
@@ -27,9 +27,11 @@ aliases: case sensitive optional space or tab separated list of other names
#include <bits/uClibc_mutex.h>
__UCLIBC_MUTEX_STATIC(mylock, PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP);
-#define MAXALIASES 35
-#define BUFSZ (80) /* one line */
-#define SBUFSIZE (BUFSZ + 1 + (sizeof(char *) * MAXALIASES))
+#define MINTOKENS 2
+#define MAXALIASES 8
+#define MAXTOKENS (MINTOKENS + MAXALIASES + 1)
+#define BUFSZ (255) /* one line */
+#define SBUFSIZE (BUFSZ + 1 + (sizeof(char *) * MAXTOKENS))
static parser_t *netp = NULL;
static struct netent nete;
@@ -65,10 +67,8 @@ int getnetent_r(struct netent *result_buf,
int *h_errnop
)
{
- char **alias, *cp = NULL;
- char **net_aliases;
char **tok = NULL;
- const size_t aliaslen = sizeof(*net_aliases) * MAXALIASES;
+ const size_t aliaslen = sizeof(char *) * MAXTOKENS;
int ret = ERANGE;
*result = NULL;
@@ -86,7 +86,7 @@ int getnetent_r(struct netent *result_buf,
netp->data_len = aliaslen;
netp->line_len = buflen - aliaslen;
/* <name>[[:space:]]<netnumber>[[:space:]][<aliases>] */
- if (!config_read(netp, &tok, 3, 2, "# \t/", PARSE_NORMAL)) {
+ if (!config_read(netp, &tok, MAXTOKENS-1, MINTOKENS, "# \t/", PARSE_NORMAL)) {
goto DONE;
}
result_buf->n_name = *(tok++);
@@ -110,16 +110,7 @@ int getnetent_r(struct netent *result_buf,
sa4_to_uint32(addri->ai_addr);
freeaddrinfo(addri);
}
- result_buf->n_aliases = alias = net_aliases = tok;
- cp = *alias;
- while (cp && *cp) {
- if (alias < &net_aliases[MAXALIASES - 1])
- *alias++ = cp;
- cp = strpbrk(cp, " \t");
- if (cp != NULL)
- *cp++ = '\0';
- }
- *alias = NULL;
+ result_buf->n_aliases = tok;
*result = result_buf;
ret = 0;
DONE: