diff --git a/ChangeLog b/ChangeLog index d03d28e49..41aff4261 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-02-08 Peter Stephenson + + * 19408: Src/Builtins/rlimits.c: fix option handling for ulimit -aH. + 2004-02-04 Oliver Kiddle * Mikael Magnusson: 19405: Completion/Unix/Command/_gphoto2: diff --git a/Src/Builtins/rlimits.c b/Src/Builtins/rlimits.c index 56f67f06c..db84d8425 100644 --- a/Src/Builtins/rlimits.c +++ b/Src/Builtins/rlimits.c @@ -462,7 +462,7 @@ bin_unlimit(char *nam, char **argv, Options ops, int func) static int bin_ulimit(char *name, char **argv, Options ops, int func) { - int res, resmask = 0, hard = 0, soft = 0, nres = 0; + int res, resmask = 0, hard = 0, soft = 0, nres = 0, all = 0; char *options; do { @@ -486,11 +486,12 @@ bin_ulimit(char *name, char **argv, Options ops, int func) soft = 1; continue; case 'a': - if (*argv || options[1] || resmask) { - zwarnnam(name, "no arguments required after -a", + if (resmask) { + zwarnnam(name, "no limits allowed with -a", NULL, 0); return 1; } + all = 1; resmask = (1 << RLIM_NLIMITS) - 1; nres = RLIM_NLIMITS; continue; @@ -547,6 +548,11 @@ bin_ulimit(char *name, char **argv, Options ops, int func) resmask |= 1 << res; nres++; } + if (all && res != -1) { + zwarnnam(name, "no limits allowed with -a", + NULL, 0); + return 1; + } } } if (!*argv || **argv == '-') { @@ -560,6 +566,10 @@ bin_ulimit(char *name, char **argv, Options ops, int func) nres++; continue; } + if (all) { + zwarnnam(name, "no arguments allowed after -a", NULL, 0); + return 1; + } if (res < 0) res = RLIMIT_FSIZE; if (strcmp(*argv, "unlimited")) {