'trap' compliency?
Denys Vlasenko
vda.linux at googlemail.com
Sun Sep 27 00:07:36 UTC 2009
On Saturday 26 September 2009 17:49, Cristian Ionescu-Idbohrn wrote:
> On Thu, 24 Sep 2009, Denys Vlasenko wrote:
>
> > I see. It's an EXIT trap firing when `trap` terminates...
> >
> > It's not easy to fix due to some peculiarities of ash.c code.
> >
> > Simplest but dirty solution would be to to unset EXIT trap
> > in `trap`, but it will not show EXIT in `trap` output too.
> > Which is bad, but "less bad" that what we have now.
>
> I see you found a less dirty solution :) Super, as what I'm chasing is
> exactly EXIT traps.
>
> I also see you mimic bash exactly, WRT output from $(trap). I can't
> really understand why bash is doing that unuseful thing as adding the SIG
> in front of the signal name. As I previously wrote:
>
> On Wed, 23 Sep 2009, Cristian Ionescu-Idbohrn wrote:
> >
> > http://www.opengroup.org/onlinepubs/009695399/utilities/trap.html
> > says:
> >
> > "The condition can be EXIT, 0 (equivalent to EXIT), or a signal specified
> > using a symbolic name, without the SIG prefix"
> >
> > You've chosen to add the "SIG" in front of all the signal names. May I
> > ask why?
> >
> > bash's choice is to do something more inconsistent, IMO:
> >
> > trap -- 'echo Ho' EXIT
> > trap -- 'echo Ho' SIGINT
> > trap -- 'echo Ho' SIGTERM
> >
> > no "SIG" in front of EXIT.
> > Thing is, if the quoted piece above is to be followed when doing:
> >
> > eval "$save_traps"
> >
> > then $(trap) should output:
> >
> > trap -- 'echo Ho' EXIT
> > trap -- 'echo Ho' INT
> > trap -- 'echo Ho' TERM
> >
> > Does that seem reasonable?
>
> Yes, it does :) Just skip the SIG thing. bash does that itself if you
> ask it to be POSIXLY_CORRECT.
>
> ,----
> | If bash is invoked with the name sh, it tries to mimic the startup
> | behavior of historical versions of sh as closely as possible, while
> | conforming to the POSIX standard as well.
> `----
>
> Try something like this in the test scripts:
>
> set -o | egrep -q -w posix && set -o posix
Thanks!
I removed SIG prefix in git.
--
vda
More information about the busybox
mailing list