Simplify gpasswd's main():

Also split check_flags() out of main().
This commit is contained in:
nekral-guest 2007-12-27 21:19:57 +00:00
parent c81bf3e06f
commit c919701466
2 changed files with 26 additions and 16 deletions

View File

@ -10,7 +10,7 @@
update_group(). Split out from main() to simplify this (too) big
function.
* src/gpasswd.c: New functions: check_perms(), get_group(),
change_passwd(). Split out of main() to simplify main().
change_passwd(), check_flags(). Split out of main() to simplify main().
2007-12-27 Nicolas François <nicolas.francois@centraliens.net>

View File

@ -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.
*/