hush: fix EXIT trap recursion case; check redirection failures

function                                             old     new   delta                          
run_pipe                                            1299    1328     +29                          
hush_exit                                             90     102     +12                          
hush_main                                           1172    1179      +7                          
run_list                                            1226    1225      -1                          
------------------------------------------------------------------------------                    
(add/remove: 0/0 grow/shrink: 3/1 up/down: 48/-1)              Total: 47 bytes
This commit is contained in:
Denis Vlasenko
2009-04-09 13:43:11 +00:00
parent f81e8dbc74
commit efea9d2819
5 changed files with 74 additions and 30 deletions

View File

@@ -0,0 +1 @@
Once

View File

@@ -0,0 +1,4 @@
trap "echo Not shown" EXIT
(exit) # must be silent
trap "echo Once; exit" EXIT
{ exit; }

View File

@@ -0,0 +1,14 @@
hush: can't open '/does/not/exist': No such file or directory
One:1
hush: can't open '/cant/be/created': No such file or directory
One:1
Ok
hush: can't open '/cant/be/created': No such file or directory
Zero:0
hush: can't open '/cant/be/created': No such file or directory
One:1
hush: can't open '/cant/be/created': No such file or directory
One:1
hush: can't open '/cant/be/created': No such file or directory
Zero:0
Done

View File

@@ -0,0 +1,9 @@
echo Error >/does/not/exist; echo One:$?
t=BAD
t=Ok >>/cant/be/created; echo One:$?
echo $t
! >/cant/be/created; echo Zero:$?
exec >/cant/be/created; echo One:$?
exec /bin/true >/cant/be/created; echo One:$?
! exec /bin/true >/cant/be/created; echo Zero:$?
echo Done