From a5ded26850192990b33361222585dfee65e19848 Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Thu, 14 Jul 2011 13:29:10 +0000 Subject: [PATCH] * src/usermod.c (process_flags): Report usage if no options are provided. Update the error message. * src/usermod.c (process_flags): Check option compatibility and dependency before options are discarded when no changes are requested. --- ChangeLog | 5 ++++ src/usermod.c | 65 ++++++++++++++++++++++++--------------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1329c268..7457e740 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,11 @@ * src/usermod.c (move_home): It is always an error to use -m if the new home directory already exist (independently from the existence of the old home directory did not exist) + * src/usermod.c (process_flags): Report usage if no options are + provided. Update the error message. + * src/usermod.c (process_flags): Check option compatibility and + dependency before options are discarded when no changes are + requested. 2011-07-08 Nicolas François diff --git a/src/usermod.c b/src/usermod.c index eaf578a4..059d172a 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -1053,10 +1053,37 @@ static void process_flags (int argc, char **argv) } } - if (!anyflag) { - fprintf (stderr, _("%s: no flags given\n"), Prog); - exit (E_USAGE); + fprintf (stderr, _("%s: no options\n"), Prog); + usage (E_USAGE); + } + + if (aflg && (!Gflg)) { + fprintf (stderr, + _("%s: %s flag is only allowed with the %s flag\n"), + Prog, "-a", "-G"); + usage (E_USAGE); + } + + if ((Lflg && (pflg || Uflg)) || (pflg && Uflg)) { + fprintf (stderr, + _("%s: the -L, -p, and -U flags are exclusive\n"), + Prog); + usage (E_USAGE); + } + + if (oflg && !uflg) { + fprintf (stderr, + _("%s: %s flag is only allowed with the %s flag\n"), + Prog, "-o", "-u"); + usage (E_USAGE); + } + + if (mflg && !dflg) { + fprintf (stderr, + _("%s: %s flag is only allowed with the %s flag\n"), + Prog, "-m", "-d"); + usage (E_USAGE); } if (user_newid == user_id) { @@ -1106,38 +1133,6 @@ static void process_flags (int argc, char **argv) exit (E_USAGE); } - if (aflg && (!Gflg)) { - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-a", "-G"); - usage (E_USAGE); - exit (E_USAGE); - } - - if ((Lflg && (pflg || Uflg)) || (pflg && Uflg)) { - fprintf (stderr, - _("%s: the -L, -p, and -U flags are exclusive\n"), - Prog); - usage (E_USAGE); - exit (E_USAGE); - } - - if (oflg && !uflg) { - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-o", "-u"); - usage (E_USAGE); - exit (E_USAGE); - } - - if (mflg && !dflg) { - fprintf (stderr, - _("%s: %s flag is only allowed with the %s flag\n"), - Prog, "-m", "-d"); - usage (E_USAGE); - exit (E_USAGE); - } - /* local, no need for xgetpwnam */ if (lflg && (getpwnam (user_newname) != NULL)) { fprintf (stderr,