diff options
Diffstat (limited to 'nss/nss_files')
-rw-r--r-- | nss/nss_files/files-alias.c | 5 | ||||
-rw-r--r-- | nss/nss_files/files-hosts.c | 6 | ||||
-rw-r--r-- | nss/nss_files/files-network.c | 4 | ||||
-rw-r--r-- | nss/nss_files/files-parse.c | 14 | ||||
-rw-r--r-- | nss/nss_files/files-service.c | 5 |
5 files changed, 24 insertions, 10 deletions
diff --git a/nss/nss_files/files-alias.c b/nss/nss_files/files-alias.c index 733e599103..84d771d94e 100644 --- a/nss/nss_files/files-alias.c +++ b/nss/nss_files/files-alias.c @@ -1,5 +1,5 @@ /* Mail alias file parser in nss_files module. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -200,7 +200,8 @@ get_next_alias (const char *match, struct aliasent *result, looking for. If it does not match we simply ignore all lines until the next line containing the start of a new alias is found. */ - ignore = match != NULL && strcmp (result->alias_name, match) != 0; + ignore = (match != NULL + && strcasecmp (result->alias_name, match) != 0); while (! ignore) { diff --git a/nss/nss_files/files-hosts.c b/nss/nss_files/files-hosts.c index d6c4152507..2379919f49 100644 --- a/nss/nss_files/files-hosts.c +++ b/nss/nss_files/files-hosts.c @@ -1,5 +1,5 @@ /* Hosts file parser in nss_files module. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -89,14 +89,14 @@ DB_LOOKUP (hostbyname, ,, if (result->h_addrtype != ((_res.options & RES_USE_INET6) ? AF_INET6 : AF_INET)) continue; - LOOKUP_NAME (h_name, h_aliases) + LOOKUP_NAME_CASE (h_name, h_aliases) }, const char *name) DB_LOOKUP (hostbyname2, ,, { if (result->h_addrtype != af) continue; - LOOKUP_NAME (h_name, h_aliases) + LOOKUP_NAME_CASE (h_name, h_aliases) }, const char *name, int af) DB_LOOKUP (hostbyaddr, ,, diff --git a/nss/nss_files/files-network.c b/nss/nss_files/files-network.c index ac5acd5c4e..8180d46e9d 100644 --- a/nss/nss_files/files-network.c +++ b/nss/nss_files/files-network.c @@ -1,5 +1,5 @@ /* Networks file parser in nss_files module. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -44,7 +44,7 @@ LINE_PARSER #include "files-XXX.c" DB_LOOKUP (netbyname, ,, - LOOKUP_NAME (n_name, n_aliases), + LOOKUP_NAME_CASE (n_name, n_aliases), const char *name) DB_LOOKUP (netbyaddr, ,, diff --git a/nss/nss_files/files-parse.c b/nss/nss_files/files-parse.c index 76df1c6ff0..198b359b4c 100644 --- a/nss/nss_files/files-parse.c +++ b/nss/nss_files/files-parse.c @@ -1,5 +1,5 @@ /* Common code for file-based database parsers in nss_files module. - Copyright (C) 1996, 1997 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -232,6 +232,18 @@ parse_list (char *line, struct parser_data *data, size_t datalen, int *errnop) break; \ } +#define LOOKUP_NAME_CASE(nameelt, aliaselt) \ +{ \ + char **ap; \ + if (! strcasecmp (name, result->nameelt)) \ + break; \ + for (ap = result->aliaselt; *ap; ++ap) \ + if (! strcasecmp (name, *ap)) \ + break; \ + if (*ap) \ + break; \ +} + /* This is defined by db-*.c to include "../nss_db/db-XXX.c" instead. */ #ifndef GENERIC diff --git a/nss/nss_files/files-service.c b/nss/nss_files/files-service.c index 317b4fa9cc..186b8a27fc 100644 --- a/nss/nss_files/files-service.c +++ b/nss/nss_files/files-service.c @@ -39,7 +39,8 @@ LINE_PARSER #include GENERIC -DB_LOOKUP (servbyname, 1 + strlen (name), (".%s/%s", name, proto), +DB_LOOKUP (servbyname, 2 + strlen (name) + strlen (proto), + (".%s/%s", name, proto), { /* Must match both protocol (if specified) and name. */ if (proto != NULL && strcmp (result->s_proto, proto)) @@ -48,7 +49,7 @@ DB_LOOKUP (servbyname, 1 + strlen (name), (".%s/%s", name, proto), }, const char *name, const char *proto) -DB_LOOKUP (servbyport, 20, ("=%d/%s", port, proto), +DB_LOOKUP (servbyport, 21 + strlen (proto), ("=%d/%s", port, proto), { /* Must match both port and protocol. */ if (result->s_port == port |