summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pw/pw.c
diff options
context:
space:
mode:
authorbapt <bapt@FreeBSD.org>2015-06-07 14:54:07 +0000
committerbapt <bapt@FreeBSD.org>2015-06-07 14:54:07 +0000
commitc79845f9d0b094d057a9d8bf12fd8e857a0c75ae (patch)
tree91029f120c260e2ecc4dcca50b313cd6e2fcba00 /usr.sbin/pw/pw.c
parentc6afeed630caacfd5c4b23de8544bf606a30af8f (diff)
downloadFreeBSD-src-c79845f9d0b094d057a9d8bf12fd8e857a0c75ae.zip
FreeBSD-src-c79845f9d0b094d057a9d8bf12fd8e857a0c75ae.tar.gz
Handle -C and -Y locally and stop adding them to arglist
Diffstat (limited to 'usr.sbin/pw/pw.c')
-rw-r--r--usr.sbin/pw/pw.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/usr.sbin/pw/pw.c b/usr.sbin/pw/pw.c
index 174a9dc..991019d 100644
--- a/usr.sbin/pw/pw.c
+++ b/usr.sbin/pw/pw.c
@@ -102,7 +102,7 @@ main(int argc, char *argv[])
char *config = NULL;
struct stat st;
char arg;
- bool relocated = false;
+ bool relocated, nis;
static const char *opts[W_NUM][M_NUM] =
{
@@ -130,6 +130,7 @@ main(int argc, char *argv[])
pw_group
};
+ relocated = nis = false;
conf.rootdir[0] = '\0';
strlcpy(conf.etcpath, _PATH_PWD, sizeof(conf.etcpath));
@@ -210,10 +211,20 @@ main(int argc, char *argv[])
optarg = NULL;
while ((ch = getopt(argc, argv, opts[which][mode])) != -1) {
- if (ch == '?')
+ switch (ch) {
+ case '?':
errx(EX_USAGE, "unknown switch");
- else
+ break;
+ case 'C':
+ config = optarg;
+ break;
+ case 'Y':
+ nis = true;
+ break;
+ default:
addarg(&arglist, ch, optarg);
+ break;
+ }
optarg = NULL;
}
@@ -234,7 +245,6 @@ main(int argc, char *argv[])
* Set our base working path if not overridden
*/
- config = getarg(&arglist, 'C') ? getarg(&arglist, 'C')->val : NULL;
if (config == NULL) { /* Only override config location if -C not specified */
asprintf(&config, "%s/pw.conf", conf.etcpath);
if (config == NULL)
@@ -252,7 +262,7 @@ main(int argc, char *argv[])
* If everything went ok, and we've been asked to update
* the NIS maps, then do it now
*/
- if (ch == EXIT_SUCCESS && getarg(&arglist, 'Y') != NULL) {
+ if (ch == EXIT_SUCCESS && nis) {
pid_t pid;
fflush(NULL);
OpenPOWER on IntegriCloud