Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 7 Jun 2015 15:09:54 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r284121 - head/usr.sbin/pw
Message-ID:  <201506071509.t57F9s86011647@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bapt
Date: Sun Jun  7 15:09:53 2015
New Revision: 284121
URL: https://svnweb.freebsd.org/changeset/base/284121

Log:
  Handle dryrun (-N) via global pwconf

Modified:
  head/usr.sbin/pw/pw.c
  head/usr.sbin/pw/pw_group.c
  head/usr.sbin/pw/pw_user.c
  head/usr.sbin/pw/pwupd.h

Modified: head/usr.sbin/pw/pw.c
==============================================================================
--- head/usr.sbin/pw/pw.c	Sun Jun  7 14:57:16 2015	(r284120)
+++ head/usr.sbin/pw/pw.c	Sun Jun  7 15:09:53 2015	(r284121)
@@ -132,6 +132,7 @@ main(int argc, char *argv[])
 
 	relocated = nis = false;
 	conf.rootdir[0] = '\0';
+	conf.dryrun = false;
 	strlcpy(conf.etcpath, _PATH_PWD, sizeof(conf.etcpath));
 
 	LIST_INIT(&arglist);
@@ -218,6 +219,9 @@ main(int argc, char *argv[])
 		case 'C':
 			config = optarg;
 			break;
+		case 'N':
+			conf.dryrun = true;
+			break;
 		case 'Y':
 			nis = true;
 			break;
@@ -231,7 +235,7 @@ main(int argc, char *argv[])
 	/*
 	 * Must be root to attempt an update
 	 */
-	if (geteuid() != 0 && mode != M_PRINT && mode != M_NEXT && getarg(&arglist, 'N')==NULL)
+	if (geteuid() != 0 && mode != M_PRINT && mode != M_NEXT && !conf.dryrun)
 		errx(EX_NOPERM, "you must be root to run this program");
 
 	/*

Modified: head/usr.sbin/pw/pw_group.c
==============================================================================
--- head/usr.sbin/pw/pw_group.c	Sun Jun  7 14:57:16 2015	(r284120)
+++ head/usr.sbin/pw/pw_group.c	Sun Jun  7 15:09:53 2015	(r284121)
@@ -258,7 +258,7 @@ pw_group(int mode, struct cargs * args)
 		grp->gr_mem = members;
 	}
 
-	if (getarg(args, 'N') != NULL)
+	if (conf.dryrun)
 		return print_group(grp, getarg(args, 'P') != NULL);
 
 	if (mode == M_ADD && (rc = addgrent(grp)) != 0) {

Modified: head/usr.sbin/pw/pw_user.c
==============================================================================
--- head/usr.sbin/pw/pw_user.c	Sun Jun  7 14:57:16 2015	(r284120)
+++ head/usr.sbin/pw/pw_user.c	Sun Jun  7 15:09:53 2015	(r284121)
@@ -620,7 +620,7 @@ pw_user(int mode, struct cargs * args)
 	/*
 	 * Special case: -N only displays & exits
 	 */
-	if (getarg(args, 'N') != NULL)
+	if (conf.dryrun)
 		return print_user(pwd,
 				  getarg(args, 'P') != NULL,
 				  getarg(args, '7') != NULL);
@@ -872,9 +872,7 @@ pw_gidpolicy(struct cargs * args, char *
 			snprintf(tmp, sizeof(tmp), "%u", prefer);
 			addarg(&grpargs, 'g', tmp);
 		}
-		if (getarg(args, 'N'))
-		{
-			addarg(&grpargs, 'N', NULL);
+		if (conf.dryrun) {
 			addarg(&grpargs, 'q', NULL);
 			gid = pw_group(M_NEXT, &grpargs);
 		}
@@ -1035,7 +1033,7 @@ pw_password(struct userconf * cnf, struc
 		 * We give this information back to the user
 		 */
 		if (getarg(args, 'h') == NULL && getarg(args, 'H') == NULL &&
-		    getarg(args, 'N') == NULL) {
+		    !conf.dryrun) {
 			if (isatty(STDOUT_FILENO))
 				printf("Password for '%s' is: ", user);
 			printf("%s\n", pwbuf);

Modified: head/usr.sbin/pw/pwupd.h
==============================================================================
--- head/usr.sbin/pw/pwupd.h	Sun Jun  7 14:57:16 2015	(r284120)
+++ head/usr.sbin/pw/pwupd.h	Sun Jun  7 15:09:53 2015	(r284121)
@@ -35,6 +35,7 @@
 
 #include <pwd.h>
 #include <grp.h>
+#include <stdbool.h>
 
 #if defined(__FreeBSD__)
 #define	RET_SETGRENT	int
@@ -82,6 +83,7 @@ struct userconf {
 struct pwconf {
 	char		 rootdir[MAXPATHLEN];
 	char		 etcpath[MAXPATHLEN];
+	bool		 dryrun;
 	struct userconf	*userconf;
 };
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201506071509.t57F9s86011647>