svn commit: r250942 - head/usr.bin/getent

Guy Helmer ghelmer at FreeBSD.org
Thu May 23 20:52:31 UTC 2013


Author: ghelmer
Date: Thu May 23 20:52:30 2013
New Revision: 250942
URL: http://svnweb.freebsd.org/changeset/base/250942

Log:
  Add support for netgroup, based on patch in the PR but made consistent
  with existing style.
  
  PR:		bin/132692

Modified:
  head/usr.bin/getent/getent.c

Modified: head/usr.bin/getent/getent.c
==============================================================================
--- head/usr.bin/getent/getent.c	Thu May 23 19:50:36 2013	(r250941)
+++ head/usr.bin/getent/getent.c	Thu May 23 20:52:30 2013	(r250942)
@@ -61,6 +61,7 @@ static int	parsenum(const char *, unsign
 static int	ethers(int, char *[]);
 static int	group(int, char *[]);
 static int	hosts(int, char *[]);
+static int	netgroup(int, char *[]);
 static int	networks(int, char *[]);
 static int	passwd(int, char *[]);
 static int	protocols(int, char *[]);
@@ -89,6 +90,7 @@ static struct getentdb {
 	{	"rpc",		rpc,		},
 	{	"services",	services,	},
 	{	"shells",	shells,		},
+	{	"netgroup",	netgroup,	},
 	{	"utmpx",	utmpx,		},
 
 	{	NULL,		NULL,		},
@@ -571,6 +573,47 @@ shells(int argc, char *argv[])
 }
 
 /*
+ * netgroup
+ */
+static int
+netgroup(int argc, char *argv[])
+{
+	char		*host, *user, *domain;
+	int		first;
+	int		rv, i;
+
+	assert(argc > 1);
+	assert(argv != NULL);
+
+#define NETGROUPPRINT(s)	(((s) != NULL) ? (s) : "")
+
+	rv = RV_OK;
+	if (argc == 2) {
+		fprintf(stderr, "Enumeration not supported on netgroup\n");
+		rv = RV_NOENUM;
+	} else {
+		for (i = 2; i < argc; i++) {
+			setnetgrent(argv[i]);
+			first = 1;
+			while (getnetgrent(&host, &user, &domain) != 0) {
+				if (first) {
+					first = 0;
+					(void)fputs(argv[i], stdout);
+				}
+				(void)printf(" (%s,%s,%s)",
+				    NETGROUPPRINT(host),
+				    NETGROUPPRINT(user),
+				    NETGROUPPRINT(domain));
+			}
+			if (!first)
+				(void)putchar('\n');
+			endnetgrent();
+		}
+	}
+	return rv;
+}
+
+/*
  * utmpx
  */
 


More information about the svn-src-head mailing list