mirror of
https://github.com/sheumann/hush.git
synced 2024-12-26 10:32:02 +00:00
Fix an option parsing bug where things like
chmod -r /tmp/file wholdn't work (since it thought -r was an option). Doh! -Erik
This commit is contained in:
parent
2368a387ed
commit
ce82c8ab77
@ -76,6 +76,7 @@ static int fileAction(const char *fileName, struct stat *statbuf, void* junk)
|
||||
|
||||
int chmod_chown_chgrp_main(int argc, char **argv)
|
||||
{
|
||||
int stopIt = FALSE;
|
||||
int recursiveFlag = FALSE;
|
||||
char *groupName=NULL;
|
||||
char *p=NULL;
|
||||
@ -94,26 +95,28 @@ int chmod_chown_chgrp_main(int argc, char **argv)
|
||||
|
||||
/* Parse options */
|
||||
while (--argc >= 0 && *argv && (**argv == '-')) {
|
||||
while (*++(*argv)) {
|
||||
while (stopIt==FALSE && *++(*argv)) {
|
||||
switch (**argv) {
|
||||
case 'R':
|
||||
recursiveFlag = TRUE;
|
||||
break;
|
||||
default:
|
||||
errorMsg(invalid_option, **argv);
|
||||
usage(appUsage);
|
||||
theMode=*argv-1;
|
||||
stopIt = TRUE;
|
||||
}
|
||||
}
|
||||
if (stopIt==TRUE)
|
||||
break;
|
||||
argv++;
|
||||
}
|
||||
|
||||
if (argc == 0 || *argv == NULL) {
|
||||
errorMsg(too_few_args);
|
||||
usage(appUsage);
|
||||
}
|
||||
|
||||
if (whichApp == CHMOD_APP) {
|
||||
theMode = *argv;
|
||||
if (theMode==NULL)
|
||||
theMode = *argv;
|
||||
} else {
|
||||
|
||||
/* Find the selected group */
|
||||
@ -152,7 +155,7 @@ int chmod_chown_chgrp_main(int argc, char **argv)
|
||||
}
|
||||
|
||||
/* Ok, ready to do the deed now */
|
||||
if (argc <= 1) {
|
||||
if (argc < 1) {
|
||||
fatalError(too_few_args);
|
||||
}
|
||||
while (argc-- > 1) {
|
||||
|
Loading…
Reference in New Issue
Block a user