On Sun, 15 Apr 2018, Martijn Dekker wrote:
> Op 15-04-18 om 03:41 schreef Philip Guenther:
> > On Sun, 15 Apr 2018, Klemens Nanni wrote:
> > > It also badly effects non-empty cases:
> > ...
> > > $ ./obj/ksh -c alias
> > > autoload=''
> > > functions=''
> >
> > Hah! The original diff i actually broken (it tests the wrong variable)
> > but I fixed that by accident when I manually made the diff in my tree!
> >
> > So, uh, I'm no longer fine with the original diff...
>
> D'oh!
>
> That's embarrassing. Sorry about that. :-/
...
> --- misc.c 9 Apr 2018 17:53:36 -0000 1.70
> +++ misc.c 15 Apr 2018 02:06:55 -0000
> @@ -966,6 +966,12 @@ print_value_quoted(const char *s)
> const char *p;
> int inquote = 0;
>
> + /* Check for empty */
> + if (!*s) {
> + shprintf("''");
> + return;
> + }
> +
This thread was never resolved/committed. Looking again at the diffs, I
still think I prefer that we _not_ touch print_value_quoted(), as the
other callers all use the 'key=value' format and don't need special
handling of empty values, leaving a diff like the one below.
ok?
Philip
Index: bin/ksh/c_sh.c
===================================================================
RCS file: /data/src/openbsd/src/bin/ksh/c_sh.c,v
retrieving revision 1.63
diff -u -p -r1.63 c_sh.c
--- bin/ksh/c_sh.c 9 Apr 2018 17:53:36 -0000 1.63
+++ bin/ksh/c_sh.c 30 Dec 2018 22:24:19 -0000
@@ -478,7 +478,10 @@ c_trap(char **wp)
for (p = sigtraps, i = NSIG+1; --i >= 0; p++) {
if (p->trap != NULL) {
shprintf("trap -- ");
- print_value_quoted(p->trap);
+ if (p->trap[0])
+ print_value_quoted(p->trap);
+ else
+ shprintf("''");
shprintf(" %s\n", p->name);
}
}
Index: regress/bin/ksh/obsd-regress.t
===================================================================
RCS file: /data/src/openbsd/src/regress/bin/ksh/obsd-regress.t,v
retrieving revision 1.10
diff -u -p -r1.10 obsd-regress.t
--- regress/bin/ksh/obsd-regress.t 8 Dec 2018 21:03:51 -0000 1.10
+++ regress/bin/ksh/obsd-regress.t 30 Dec 2018 22:41:27 -0000
@@ -503,3 +503,20 @@ description:
stdin:
kill -s SIGINFO $$
---
+
+name: trap-ignore-output
+description:
+ trap output shows ignored signals correctly
+stdin:
+ trap '' SIGUSR1 SIGUSR2
+ trap "" SIGPIPE
+ trap exit SIGINT
+ trap exit\ 1 SIGTERM
+ trap
+expected-stdout:
+ trap -- exit INT
+ trap -- '' PIPE
+ trap -- 'exit 1' TERM
+ trap -- '' USR1
+ trap -- '' USR2
+---