Fix argument parsing in test(1) and chmod(1)

We just take the raw argument list as is. Using arg.h, arguments
beginning with - would have been "eaten up".
Writing a special "bailout" for arg.h was not a good option,
not because it's not impossible (done in 6 LOC), but because it
is a shoehorning around a corner case present for a few programs
which are broken by design by POSIX.
This commit is contained in:
FRIGN
2015-03-13 23:43:13 +01:00
parent ad6da18ca6
commit 3fa85f0f5e
3 changed files with 3 additions and 7 deletions

5
test.c
View File

@@ -148,10 +148,7 @@ main(int argc, char *argv[])
int (*narg[])(char *[]) = { noarg, onearg, twoarg, threearg, fourarg };
size_t len;
ARGBEGIN {
default:
break;
} ARGEND;
argv0 = argv[0], argc--, argv++;
len = strlen(argv0);
if (len && argv0[--len] == '[' && (!len || argv0[--len] == '/') && strcmp(argv[--argc], "]"))