diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-10-07 10:06:31 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-10-07 10:06:31 -0400 |
commit | 684ae515993269277448150a1ca70db3b94aa5bd (patch) | |
tree | 493609057fdfc4aa2dd41f8d6e0c2047616b5d9c /nss/getent.c | |
parent | 21fd49a9ef9c21cd2c87d0facf9f53bedb5cea20 (diff) | |
download | glibc-684ae515993269277448150a1ca70db3b94aa5bd.zip glibc-684ae515993269277448150a1ca70db3b94aa5bd.tar.gz glibc-684ae515993269277448150a1ca70db3b94aa5bd.tar.bz2 |
Implement caching of nscd
Diffstat (limited to 'nss/getent.c')
-rw-r--r-- | nss/getent.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/nss/getent.c b/nss/getent.c index 9d43e2f..b843433 100644 --- a/nss/getent.c +++ b/nss/getent.c @@ -480,18 +480,28 @@ netgroup_keys (int number, char *key[]) return 3; } - for (i = 0; i < number; ++i) + if (number == 4) + { + char *host = strcmp (key[1], "*") == 0 ? NULL : key[1]; + char *user = strcmp (key[2], "*") == 0 ? NULL : key[2]; + char *domain = strcmp (key[3], "*") == 0 ? NULL : key[3]; + + printf ("%-21s (%s,%s,%s) = %d\n", + key[0], host ?: "", user ?: "", domain ?: "", + innetgr (key[0], host, user, domain)); + } + else if (number == 1) { - if (!setnetgrent (key[i])) + if (!setnetgrent (key[0])) result = 2; else { char *p[3]; - printf ("%-21s", key[i]); + printf ("%-21s", key[0]); while (getnetgrent (p, p + 1, p + 2)) - printf (" (%s, %s, %s)", p[0] ?: " ", p[1] ?: "", p[2] ?: ""); + printf (" (%s,%s,%s)", p[0] ?: " ", p[1] ?: "", p[2] ?: ""); putchar_unlocked ('\n'); } } |