diff options
Diffstat (limited to 'system/pdksh/patches/110_Debian-exit-negative-number.patch')
-rw-r--r-- | system/pdksh/patches/110_Debian-exit-negative-number.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/system/pdksh/patches/110_Debian-exit-negative-number.patch b/system/pdksh/patches/110_Debian-exit-negative-number.patch new file mode 100644 index 0000000000..d7af113275 --- /dev/null +++ b/system/pdksh/patches/110_Debian-exit-negative-number.patch @@ -0,0 +1,46 @@ +Fix problem with `exit -1' giving `ksh: exit: -1: unknown option' (see bug#502934) + +Index: pdksh-5.2.14/c_sh.c +=================================================================== +--- pdksh-5.2.14.orig/c_sh.c 2009-09-19 11:38:39.000000000 +0200 ++++ pdksh-5.2.14/c_sh.c 2009-09-19 11:39:33.000000000 +0200 +@@ -534,9 +534,14 @@ + int n; + char *arg; + +- if (ksh_getopt(wp, &builtin_opt, null) == '?') +- return 1; +- arg = wp[builtin_opt.optind]; ++ if (!Flag(FPOSIX) // not posix ++ && *wp && *(wp + 1) && !*(wp + 2)) // only one argument passed ++ arg=*(wp + 1); // code regardless of starting with '-' or not ++ else { ++ if (ksh_getopt(wp, &builtin_opt, null) == '?') ++ return 1; ++ arg = wp[builtin_opt.optind]; ++ } + + if (arg) { + if (!getn(arg, &n)) { +Index: pdksh-5.2.14/tests/debian-110.t +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ pdksh-5.2.14/tests/debian-110.t 2009-09-19 11:41:59.000000000 +0200 +@@ -0,0 +1,17 @@ ++name: debian-110-1 ++description: ++ Check if exit -1 is allowed for ! posix ++stdin: ++ (set +o posix; exit -1); echo A $? ++expected-stdout: ++ A 255 ++--- ++name: debian-110-2 ++description: ++ Check if exit -1 is not allowed for posix ++stdin: ++ (set -o posix; exit -1); echo A $? ++expected-stdout: ++ A 1 ++expected-fail: yes ++--- |