1 diff -ur mksh-56.orig/eval.c mksh-56/eval.c
2 --- mksh-56.orig/eval.c 2017-08-12 22:10:26.321676398 +0200
3 +++ mksh-56/eval.c 2017-08-12 22:40:32.672676143 +0200
12 diff -ur mksh-56.orig/misc.c mksh-56/misc.c
13 --- mksh-56.orig/misc.c 2017-08-12 22:10:26.321676398 +0200
14 +++ mksh-56/misc.c 2017-08-12 22:40:32.672676143 +0200
18 /* check for negation */
19 - if (ISMAGIC(p[0]) && ord(p[1]) == ord('!')) {
20 + if (ISMAGIC(p[0]) && (ord(p[1]) == ord('!') || ord(p[1]) == ord(NOT2))) {
24 diff -ur mksh-56.orig/sh.h mksh-56/sh.h
25 --- mksh-56.orig/sh.h 2017-08-12 22:10:26.325009789 +0200
26 +++ mksh-56/sh.h 2017-08-12 22:40:32.696009488 +0200
29 #define MAGIC KSH_BEL /* prefix for *?[!{,} during expand */
30 #define ISMAGIC(c) (ord(c) == ord(MAGIC))
33 EXTERN const char *safe_prompt; /* safe prompt if PS1 substitution fails */
35 diff -ur mksh-56.orig/check.t mksh-56/check.t
36 --- mksh-56.orig/check.t 2017-08-12 22:10:26.321676398 +0200
37 +++ mksh-56/check.t 2017-08-12 22:41:46.886083258 +0200
39 !bc +bc ,bc 0bc 1bc ^bc cbc
40 !bc +bc ,bc -bc 0bc 1bc ^bc cbc
43 + !bc +bc ,bc -bc 0bc 1bc ^bc cbc