Make -- on the command line match the manual page.

The implied shell case has been simplified as a result.
This commit is contained in:
Todd C. Miller
2007-07-01 13:07:06 +00:00
parent ad86ccfb19
commit 49b66be51e

13
sudo.c
View File

@@ -754,11 +754,6 @@ parse_args(argc, argv)
} else } else
rval = MODE_RUN; rval = MODE_RUN;
if (NewArgc == 0 && rval == MODE_RUN) { /* no options and no command */
SET(rval, (MODE_IMPLIED_SHELL | MODE_SHELL));
return(rval);
}
while (NewArgc > 0) { while (NewArgc > 0) {
if (NewArgv[0][0] == '-') { if (NewArgv[0][0] == '-') {
if (NewArgv[0][1] != '\0' && NewArgv[0][2] != '\0') if (NewArgv[0][1] != '\0' && NewArgv[0][2] != '\0')
@@ -908,9 +903,7 @@ parse_args(argc, argv)
case '-': case '-':
NewArgc--; NewArgc--;
NewArgv++; NewArgv++;
if (rval == MODE_RUN) goto args_done;
SET(rval, (MODE_IMPLIED_SHELL | MODE_SHELL));
return(rval);
case '\0': case '\0':
warningx("'-' requires an argument"); warningx("'-' requires an argument");
usage(1); usage(1);
@@ -932,6 +925,8 @@ parse_args(argc, argv)
NewArgc--; NewArgc--;
NewArgv++; NewArgv++;
} }
args_done:
if (NewArgc > 0 && rval == MODE_LIST) if (NewArgc > 0 && rval == MODE_LIST)
rval = MODE_CHECK; rval = MODE_CHECK;
@@ -950,6 +945,8 @@ parse_args(argc, argv)
if ((NewArgc == 0 && (rval & MODE_EDIT)) || if ((NewArgc == 0 && (rval & MODE_EDIT)) ||
(NewArgc > 0 && !(rval & (MODE_RUN | MODE_EDIT | MODE_CHECK)))) (NewArgc > 0 && !(rval & (MODE_RUN | MODE_EDIT | MODE_CHECK))))
usage(1); usage(1);
if (NewArgc == 0 && rval == MODE_RUN)
SET(rval, (MODE_IMPLIED_SHELL | MODE_SHELL));
return(rval); return(rval);
} }