#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <netdb.h>
#include <string.h>
#include "getent.h"
int
dogetnetgr(const char **list)
{
uint_t cnt;
char *host, *user, *dom;
const char *host_filter, *user_filter, *dom_filter;
int rc = EXC_SUCCESS;
if (list == NULL || *list == NULL)
return (EXC_ENUM_NOT_SUPPORTED);
cnt = 0;
while (list[cnt] != NULL)
cnt++;
switch (cnt) {
case 1:
if (setnetgrent(list[0]) != 0)
return (EXC_ERROR);
printf("%s", list[0]);
while (getnetgrent(&host, &user, &dom) != 0) {
printf(" (%s,%s,%s)",
(host) ? host : "",
(user) ? user : "",
(dom) ? dom : "");
}
printf("\n");
break;
case 4:
host_filter = (strcmp(list[1], "*") == 0) ? NULL : list[1];
user_filter = (strcmp(list[2], "*") == 0) ? NULL : list[2];
dom_filter = (strcmp(list[3], "*") == 0) ? NULL : list[3];
printf("%-21s (%s,%s,%s) = %d\n", list[0],
(host_filter) ? host_filter : "",
(user_filter) ? user_filter : "",
(dom_filter) ? dom_filter : "",
innetgr(list[0], host_filter, user_filter, dom_filter));
break;
default:
rc = EXC_SYNTAX;
break;
}
return (rc);
}