#
f7cc73af |
| 01-Jan-2010 |
Jilles Tjoelker <jilles@FreeBSD.org> |
sh: Fix some bugs with backquoted builtins: - correctly handle error output in $(builtin 2>&1), clarify out1/out2 vs output/errout in the code - treat all builtins as regular builtins so errors do
sh: Fix some bugs with backquoted builtins: - correctly handle error output in $(builtin 2>&1), clarify out1/out2 vs output/errout in the code - treat all builtins as regular builtins so errors do not abort the shell and variable assignments do not persist - respect the caller's INTOFF
Some bugs still exist: - expansion errors may still abort the shell - some side effects of expansions and builtins persist
show more ...
|
#
06a8a57f |
| 31-Dec-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
sh: Allow command -pv and command -pV (lookup using _PATH_STDPATH).
|
#
92004afe |
| 30-Dec-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
sh: Ensure funcnest is decremented if there was an error in the function.
This will be important when things like 'command eval f' will be possible. Currently, the funcnest = 0 assignment in RESET (
sh: Ensure funcnest is decremented if there was an error in the function.
This will be important when things like 'command eval f' will be possible. Currently, the funcnest = 0 assignment in RESET (called when returning to the top level after an error in interactive mode) is really sufficient.
show more ...
|
#
384aedab |
| 27-Dec-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
sh: Various warning fixes (from WARNS=6 NO_WERROR=1): - const - initializations to silence -Wuninitialized (it was safe anyway) - remove nested extern declarations - rename "index" locals to "idx"
|
#
e1ef3141 |
| 29-Nov-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
Fix some cases where file descriptors from redirections leak to programs.
- Redirecting fds that were not open before kept two copies of the redirected file. sh -c '{ :; } 7>/dev/null; fstat -
Fix some cases where file descriptors from redirections leak to programs.
- Redirecting fds that were not open before kept two copies of the redirected file. sh -c '{ :; } 7>/dev/null; fstat -p $$; true' (both fd 7 and 10 remained open) - File descriptors used to restore things after redirection were not set close-on-exec, instead they were explicitly closed before executing a program normally and before executing a shell procedure. The latter must remain but the former is replaced by close-on-exec. sh -c 'exec 7</; { exec fstat -p $$; } 7>/dev/null; true' (fd 10 remained open)
The examples above are simpler than the testsuite because I do not want to use fstat or procstat in the testsuite.
show more ...
|
#
9922c6d2 |
| 22-Nov-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
Fix various things about SIGINT handling: * exception handlers are now run with interrupts disabled, which avoids many race conditions * fix some cases where SIGINT only aborts one command and cont
Fix various things about SIGINT handling: * exception handlers are now run with interrupts disabled, which avoids many race conditions * fix some cases where SIGINT only aborts one command and continues the script, in particular if a SIGINT causes an EINTR error which trumped the interrupt.
Example: sh -c 'echo < /some/fifo; echo This should not be printed' The fifo should not have writers. When pressing ctrl+c to abort the open, the shell used to continue with the next command.
Example: sh -c '/bin/echo < /some/fifo; echo This should not be printed' Similar. Note, however, that this particular case did not and does not work in interactive mode with job control enabled.
show more ...
|
#
eaa34893 |
| 22-Nov-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
sh: Ensure the same command input file is on top after executing a builtin.
This avoids weirdness when 'fc -e vi' or the like is done and there is a syntax error in the file. Formerly an interactive
sh: Ensure the same command input file is on top after executing a builtin.
This avoids weirdness when 'fc -e vi' or the like is done and there is a syntax error in the file. Formerly an interactive shell tried to execute stuff after the syntax error and exited.
This should also avoid similar issues with 'command eval' and 'command .' when 'command' is implemented properly as in NetBSD sh.
Special builtins did not have this problem since errors in them cause the shell to exit or to reset various state such as the current command input file.
show more ...
|
Revision tags: release/8.0.0_cvs, release/8.0.0 |
|
#
874108ae |
| 12-Nov-2009 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
MFC @199204
|
#
f6d21b6e |
| 11-Oct-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
MFC r196483,r196634: sh: Fix crash when undefining or redefining a currently executing function
Add a reference count to function definitions. Memory may leak if a SIGINT arrives in interactive mode
MFC r196483,r196634: sh: Fix crash when undefining or redefining a currently executing function
Add a reference count to function definitions. Memory may leak if a SIGINT arrives in interactive mode at exactly the wrong time, this will be fixed later by changing SIGINT handling.
PR: bin/137640 Approved by: re (kib)
show more ...
|
#
640b70e4 |
| 07-Oct-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
sh: Send the "xyz: not found" message to redirected fd 2. This also fixes that trying to execute a non-regular file with a command name without '/' returns 127 instead of 126. The fix is rather simpl
sh: Send the "xyz: not found" message to redirected fd 2. This also fixes that trying to execute a non-regular file with a command name without '/' returns 127 instead of 126. The fix is rather simplistic: treat CMDUNKNOWN as if the command were found as an external program. The resulting fork is a bit wasteful but executing unknown commands should not be very frequent.
PR: bin/137659
show more ...
|
#
10b3b545 |
| 17-Sep-2009 |
Dag-Erling Smørgrav <des@FreeBSD.org> |
Merge from head
|
#
cbd59a4f |
| 08-Sep-2009 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
- MFC from head@196987
|
#
e16947f8 |
| 29-Aug-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
sh: Fix crash with empty functions (f() { }) introduced in r196483
Empty pairs of braces are represented by a NULL node pointer, just like empty lines at the top level.
Support for empty pairs of b
sh: Fix crash with empty functions (f() { }) introduced in r196483
Empty pairs of braces are represented by a NULL node pointer, just like empty lines at the top level.
Support for empty pairs of braces may be removed later. They make the code more complex, have inconsistent behaviour (may or may not change $?), are not specified by POSIX and are not allowed by some other shells like bash, dash and ksh93.
Reported by: kan
show more ...
|
#
eb33e843 |
| 23-Aug-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
sh: Fix crash when undefining or redefining a currently executing function.
Add a reference count to function definitions. Memory may leak if multiple SIGINTs arrive in interactive mode, this will b
sh: Fix crash when undefining or redefining a currently executing function.
Add a reference count to function definitions. Memory may leak if multiple SIGINTs arrive in interactive mode, this will be fixed later by changing SIGINT handling.
PR: bin/137640
show more ...
|
#
09c817ba |
| 03-Jul-2009 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
- MFC
|
#
689f1cbb |
| 24-Jun-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
Quote -x tracing output so it is unambiguous.
It is usually but not always suitable for re-input to the shell.
Approved by: ed (mentor) (implicit)
|
#
4f6e4215 |
| 23-Jun-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
Do not fork for a subshell if it is the last thing this shell is doing (EV_EXIT). The fork is still done as normal if any traps are active.
In many cases, the fork can be avoided even without this c
Do not fork for a subshell if it is the last thing this shell is doing (EV_EXIT). The fork is still done as normal if any traps are active.
In many cases, the fork can be avoided even without this change by using {} instead of (), but in practice many scripts use (), likely because the syntax is simpler.
Example: sh -c '(/bin/sleep 10)& sleep 1;ps -p $! -o comm=' Now prints "sleep" instead of "sh". $! is more useful this way. Most shells (dash, bash, pdksh, ksh93, zsh) seem to print "sleep" for this.
Example: sh -c '( ( ( (ps jT))))' Now shows no waiting shell processes instead of four. Most shells (dash, bash, pdksh, ksh93, zsh) seem to show zero or one.
PR: bin/74404 Approved by: ed (mentor) (implicit)
show more ...
|
#
224fbf9f |
| 23-Jun-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
sh: Improve handling of setjmp/longjmp volatile: - remove ineffective and unnecessary (void) &var; [1] - remove some unnecessary volatile keywords - add a necessary volatile keyword - save the old ha
sh: Improve handling of setjmp/longjmp volatile: - remove ineffective and unnecessary (void) &var; [1] - remove some unnecessary volatile keywords - add a necessary volatile keyword - save the old handler before doing something that could use the saved value
Submitted by: Christoph Mallon [1] Approved by: ed (mentor)
show more ...
|
#
960da934 |
| 13-Jun-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
Avoid leaving unnecessary waiting shells in many forms of sh -c COMMAND.
This change only affects strings passed to -c, when the -s option is not used.
The approach is to check if there may be addi
Avoid leaving unnecessary waiting shells in many forms of sh -c COMMAND.
This change only affects strings passed to -c, when the -s option is not used.
The approach is to check if there may be additional data in the string after parsing each command. If there is none, use the EV_EXIT flag so that a fork may be omitted in specific cases.
If there are empty lines after the command, the check will not see the end and forks will not be omitted. The same thing seems to happen in bash.
Example: sh -c 'ps lT' No longer shows a shell process waiting for ps to finish.
PR: bin/113860 Reviewed by: stefanf Approved by: ed (mentor)
show more ...
|
#
6e28dacf |
| 13-Jun-2009 |
Jilles Tjoelker <jilles@FreeBSD.org> |
Don't skip forking for an external command if any traps are active.
Example: sh -c '(trap "echo trapped" EXIT; sleep 3)' now correctly prints "trapped".
With this check, it is no longer necessary
Don't skip forking for an external command if any traps are active.
Example: sh -c '(trap "echo trapped" EXIT; sleep 3)' now correctly prints "trapped".
With this check, it is no longer necessary to check for -T explicitly in that case.
This is a useful bugfix by itself and also important because I plan to skip forking more often.
PR: bin/113860 (part of) PR: bin/74404 (part of) Reviewed by: stefanf Approved by: ed (mentor)
show more ...
|
#
7e857dd1 |
| 12-Jun-2009 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
- Merge from HEAD
|
#
26286b8a |
| 01-Jun-2009 |
Ralf S. Engelschall <rse@FreeBSD.org> |
correctly test for __GNUC__ macro (non-GCC compilers do not have it defined at all)
|
#
cb806389 |
| 31-May-2009 |
Stefan Farfeleder <stefanf@FreeBSD.org> |
Fix the eval command in combination with set -e. Before this change the shell would always terminate if eval returned with a non-zero exit status regardless if the status was actually tested. Unfor
Fix the eval command in combination with set -e. Before this change the shell would always terminate if eval returned with a non-zero exit status regardless if the status was actually tested. Unfortunately a new file-scope variable is needed, the alternative would only be to add a new parameter to all built-ins.
PR: 134881
show more ...
|
Revision tags: release/7.2.0_cvs, release/7.2.0 |
|
#
9c797940 |
| 13-Apr-2009 |
Oleksandr Tymoshenko <gonzo@FreeBSD.org> |
- Merge from HEAD
|
#
8403b16a |
| 04-Apr-2009 |
Stefan Farfeleder <stefanf@FreeBSD.org> |
Don't let trailing empty lines overwrite the result of the last command with 0. This affects the built-ins eval, fc, and trap and also the string passed to sh with the -c option.
Submitted by: Jille
Don't let trailing empty lines overwrite the result of the last command with 0. This affects the built-ins eval, fc, and trap and also the string passed to sh with the -c option.
Submitted by: Jilles Tjoelker
show more ...
|