Make sudo's usage info better when mutually exclusive args are given and don't rely on argument order to detect this; nick@zeta.org.au

This commit is contained in:
Todd C. Miller
1999-03-30 06:01:46 +00:00
parent 2c7a8ba7b4
commit 1b56f53a40

38
sudo.c
View File

@@ -109,6 +109,7 @@ struct env_table {
*/
static int parse_args __P((void));
static void usage __P((int));
static void usage_excl __P((int));
static void load_globals __P((int));
static int check_sudoers __P((void));
static int load_cmnd __P((int));
@@ -594,9 +595,6 @@ static int parse_args()
usage(1);
}
if (excl)
usage(1); /* only one -? option allowed */
switch (NewArgv[0][1]) {
#ifdef HAVE_KERB5
case 'r':
@@ -639,23 +637,33 @@ static int parse_args()
break;
case 'v':
ret = MODE_VALIDATE;
excl++;
if (excl && excl != 'v')
usage_excl(1);
excl = 'v';
break;
case 'k':
ret = MODE_KILL;
excl++;
if (excl && excl != 'k')
usage_excl(1);
excl = 'k';
break;
case 'l':
ret = MODE_LIST;
excl++;
if (excl && excl != 'l')
usage_excl(1);
excl = 'l';
break;
case 'V':
ret = MODE_VERSION;
excl++;
if (excl && excl != 'V')
usage_excl(1);
excl = 'V';
break;
case 'h':
ret = MODE_HELP;
excl++;
if (excl && excl != 'h')
usage_excl(1);
excl = 'h';
break;
case 's':
ret |= MODE_SHELL;
@@ -696,6 +704,20 @@ static int parse_args()
/**********************************************************************
*
* usage_excl()
*
* Tell which options are mutually exclusive and exit
*/
static void usage_excl(exit_val)
int exit_val;
{
(void) fprintf(stderr, "Only one of the -v, -k, -l, -V and -h options may be used\n");
usage(exit_val);
}
/**********************************************************************
*
* usage()