From a70e964ee0ec3827b4d24ed3fbff1b614b1a0269 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 31 Mar 2004 00:16:53 +0000 Subject: Update. 2004-03-30 Jakub Jelinek * 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. --- nss/getent.c | 55 ++++++++++--------------------------------------------- 1 file changed, 10 insertions(+), 45 deletions(-) (limited to 'nss') 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; -- cgit v1.2.3