Simplify gpasswd's main():
Also split check_flags() out of main().
This commit is contained in:
@ -88,6 +88,7 @@ static void usage (void);
|
||||
static RETSIGTYPE catch_signals (int killed);
|
||||
static int check_list (const char *users);
|
||||
static void process_flags (int argc, char **argv);
|
||||
static void check_flags (int argc, int opt_index);
|
||||
static void open_files (void);
|
||||
static void close_files (void);
|
||||
#ifdef SHADOWGRP
|
||||
@ -265,6 +266,30 @@ static void process_flags (int argc, char **argv)
|
||||
usage ();
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the name of the group that is being affected. */
|
||||
group = argv[optind];
|
||||
|
||||
check_flags (argc, optind);
|
||||
}
|
||||
|
||||
/*
|
||||
* check_flags - check the validity of options
|
||||
*/
|
||||
static void check_flags (int argc, int opt_index)
|
||||
{
|
||||
/*
|
||||
* Make sure exclusive flags are exclusive
|
||||
*/
|
||||
if (aflg + dflg + rflg + Rflg + (Aflg || Mflg) > 1)
|
||||
usage ();
|
||||
|
||||
/*
|
||||
* Make sure one (and only one) group was provided
|
||||
*/
|
||||
if ((argc != (opt_index+1)) || (NULL == group)) {
|
||||
usage ();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -676,13 +701,6 @@ int main (int argc, char **argv)
|
||||
/* Parse the options */
|
||||
process_flags (argc, argv);
|
||||
|
||||
/*
|
||||
* Make sure exclusive flags are exclusive
|
||||
*/
|
||||
|
||||
if (aflg + dflg + rflg + Rflg + (Aflg || Mflg) > 1)
|
||||
usage ();
|
||||
|
||||
/*
|
||||
* Determine the name of the user that invoked this command. This
|
||||
* is really hit or miss because there are so many ways that command
|
||||
@ -701,14 +719,6 @@ int main (int argc, char **argv)
|
||||
}
|
||||
myname = xstrdup (pw->pw_name);
|
||||
|
||||
/*
|
||||
* Get the name of the group that is being affected. The group entry
|
||||
* will be completely replicated so it may be modified later on.
|
||||
*/
|
||||
|
||||
if (!(group = argv[optind]))
|
||||
usage ();
|
||||
|
||||
/*
|
||||
* Replicate the group so it can be modified later on.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user