From fa2ee53058b5102b7d3922a057e6d6b85ca830ff Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Thu, 19 Aug 2010 19:07:43 +0200 Subject: resolv: simplify MAXALIAS handling Signed-off-by: Bernhard Reutner-Fischer --- libc/inet/resolv.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c index d45e5f8a0..831f5215a 100644 --- a/libc/inet/resolv.c +++ b/libc/inet/resolv.c @@ -1597,7 +1597,7 @@ int attribute_hidden __read_etc_hosts_r( struct hostent **result, int *h_errnop) { - char **alias, *cp = NULL; + char **alias; char **host_aliases; char **tok = NULL; struct in_addr *h_addr0 = NULL; @@ -1632,33 +1632,24 @@ int attribute_hidden __read_etc_hosts_r( parser->line_len = buflen - aliaslen; *h_errnop = HOST_NOT_FOUND; /* [[:space:]][] */ - while (config_read(parser, &tok, 2, 2, "# \t", PARSE_NORMAL)) { + while (config_read(parser, &tok, MAXALIASES, 2, "# \t", PARSE_NORMAL)) { result_buf->h_aliases = alias = host_aliases = tok+1; - cp = *alias; - while (cp && *cp) { - if (alias < &host_aliases[MAXALIASES - 1]) - *alias++ = cp; - cp = strpbrk(cp, " \t"); - if (cp != NULL) - *cp++ = '\0'; - } - *alias = NULL; if (action == GETHOSTENT) { /* Return whatever the next entry happens to be. */ break; } - result_buf->h_name = *(result_buf->h_aliases++); if (action == GET_HOSTS_BYADDR) { - if (strcmp(name, result_buf->h_name) != 0) + if (strcmp(name, *tok) != 0) continue; } else { /* GET_HOSTS_BYNAME */ - alias = result_buf->h_aliases; - while ((cp = *(alias++))) - if (strcasecmp(name, cp) == 0) + while (*alias) { + if (strcasecmp(name, *(alias++)) == 0) goto found; + } continue; } found: + result_buf->h_name = *(result_buf->h_aliases++); result_buf->h_addr_list = (char**)(buf + ALIASOFF); *(result_buf->h_addr_list + 1) = '\0'; h_addr0 = (struct in_addr*)(buf + ALIASOFF + 2 * sizeof (char*)); -- cgit v1.2.3