diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-03-31 00:16:53 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-03-31 00:16:53 +0000 |
commit | a70e964ee0ec3827b4d24ed3fbff1b614b1a0269 (patch) | |
tree | 9483b75961175d2d5f7509d95519b931514a91b8 /nss/getent.c | |
parent | e0dbb4810552c091065080cb61d631354040f826 (diff) | |
download | glibc-a70e964ee0ec3827b4d24ed3fbff1b614b1a0269.tar glibc-a70e964ee0ec3827b4d24ed3fbff1b614b1a0269.tar.gz glibc-a70e964ee0ec3827b4d24ed3fbff1b614b1a0269.tar.bz2 glibc-a70e964ee0ec3827b4d24ed3fbff1b614b1a0269.zip |
Update.
2004-03-30 Jakub Jelinek <jakub@redhat.com>
* nis/nss_nis/nis-service.c (_nss_nis_getservbyname_r): If protocol
== NULL, try name/tcp and name/udp first before falling back into
the sequential scanning. Use services.byname database for
sequential scanning.
(_nss_nis_getservbyport_r): Likewise. Just allocate sizeof (int) * 3
chars for integer.
* nis/nss_nis/nis-service.c (_nss_nis_getservbyport_r): Convert
proto to host by order for snprintf.
* nss/getent.c (services_keys): Don't implement lookups with
missing protocol using getservent loop, just pass NULL.
Diffstat (limited to 'nss/getent.c')
-rw-r--r-- | nss/getent.c | 55 |
1 files changed, 10 insertions, 45 deletions
diff --git a/nss/getent.c b/nss/getent.c index f43bc635dc..5738affd53 100644 --- a/nss/getent.c +++ b/nss/getent.c @@ -638,53 +638,18 @@ services_keys (int number, char *key[]) struct servent *serv; char *proto = strchr (key[i], '/'); - if (proto == NULL) - { - setservent (0); - if (isdigit (key[i][0])) - { - int port = htons (atol (key[i])); - while ((serv = getservent ()) != NULL) - if (serv->s_port == port) - { - print_services (serv); - break; - } - } - else - { - int j; - - while ((serv = getservent ()) != NULL) - if (strcmp (serv->s_name, key[i]) == 0) - { - print_services (serv); - break; - } - else - for (j = 0; serv->s_aliases[j]; ++j) - if (strcmp (serv->s_aliases[j], key[i]) == 0) - { - print_services (serv); - break; - } - } - endservent (); - } - else - { - *proto++ = '\0'; + if (proto != NULL) + *proto++ = '\0'; - if (isdigit (key[i][0])) - serv = getservbyport (htons (atol (key[i])), proto); - else - serv = getservbyname (key[i], proto); + if (isdigit (key[i][0])) + serv = getservbyport (htons (atol (key[i])), proto); + else + serv = getservbyname (key[i], proto); - if (serv == NULL) - result = 2; - else - print_services (serv); - } + if (serv == NULL) + result = 2; + else + print_services (serv); } return result; |