summaryrefslogtreecommitdiff
path: root/libc/nss/getent.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/nss/getent.c')
-rw-r--r--libc/nss/getent.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/libc/nss/getent.c b/libc/nss/getent.c
index fd55c67d3..fc0d685f0 100644
--- a/libc/nss/getent.c
+++ b/libc/nss/getent.c
@@ -478,7 +478,6 @@ static int
netgroup_keys (int number, char *key[])
{
int result = 0;
- int i;
if (number == 0)
{
@@ -486,18 +485,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');
}
}