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>
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
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 ();
+ }
}
/*
/* 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
}
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.
*/