Handle dryrun (-N) via global pwconf
This commit is contained in:
parent
cdf878c881
commit
720254061f
@ -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");
|
||||
|
||||
/*
|
||||
|
@ -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) {
|
||||
|
@ -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 *nam, gid_t prefer)
|
||||
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, struct cargs * args, char const * user)
|
||||
* 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);
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user