svn commit: r284121 - head/usr.sbin/pw
Baptiste Daroussin
bapt at FreeBSD.org
Sun Jun 7 15:09:55 UTC 2015
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;
};
More information about the svn-src-all
mailing list