1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-10-13 11:21:13 +02:00
Commit graph

330 commits

Author SHA1 Message Date
Barton E. Schaefer
9958684574 36022 fix bug that some loop constructs could not be interrupted, revise signal queueing
There are two underlying ideas here:  (1) Keeping signals queued around
anything that's doing memory management (including push/pop of the heap)
has become crucial.  (2) Anytime the shell is going to run a command, be
it buitin or external, it must be both safe and necessary to process any
queued signals, so that the apparent order of signal arrival and command
execution is preserved.
2015-08-09 16:13:52 -07:00
Peter Stephenson
28a962f557 35849: close fd's from process substitution after fork
Leaving these hanging in parent could cause deadlock: test added.
2015-07-23 09:34:11 +01:00
Peter Stephenson
3af55c858f 35751: Fix ERR_RETURN and ERR_EXIT in "else" 2015-07-09 14:59:20 +01:00
Peter Stephenson
7708849b21 35655: APPEND_CREATE option for POSIX copmatible NO_CLOBBER 2015-06-29 19:01:31 +01:00
Barton E. Schaefer
ef08028346 35634: handle failure of gettempname() in namedpipe() 2015-06-27 12:50:40 -07:00
Peter Stephenson
b16d754d9c 35604: create empty arrays in typeset with array=() 2015-06-25 17:01:48 +01:00
Peter Stephenson
39b28980f3 various posts: Implement assignment parsing for typeset.
Typeset assignments now work like raw assignments except
for no "+=" and no GLOB_ASSIGN.

Documented in typeset builtin doc and mentioned in release notes.

Tests to ensure basic sanity.

Enabled by default, can be turned off by "disable -r" with typeset
family of commands.
2015-06-24 10:21:12 +01:00
Barton E. Schaefer
2cfe892414 35493: erase $_ when the command line is an assignment 2015-06-16 17:03:39 -07:00
Mikael Magnusson
4dc4e23376 GLOB_ASSIGN should only affect scalar assignments 2015-06-02 16:09:35 +02:00
Peter Stephenson
2b08d0ed67 35318: POSIX_BUILTINS behaviour for getopts.
It needs to keep OPTIND, as well as the index within the
string pointed to by OPTIND, global in this case.
2015-05-28 18:32:39 +01:00
Peter Stephenson
2f6a8a6c6c Tweak test for function level of exit.
Sometimes local level jumps so we need an inequality instead
of an equality.
2015-05-22 23:37:45 +01:00
Peter Stephenson
ec57c91b58 users/20203: nested functions in always blocks when exit pending 2015-05-13 16:17:04 +01:00
Peter Stephenson
c96a993d51 34989: AUTO_CD needs to call cd --.
Otherwise directories looking like options do the wrong thing.
2015-04-28 20:42:26 +01:00
Peter Stephenson
df5115a741 34979: Preserve job text when doing shell job fix.
This handles list_pipe_text in execlist() along with other
variables that are saved and restored and, in the special
case of source, cleared.
2015-04-28 09:22:37 +01:00
Peter Stephenson
e0cdf39fd9 34955: save and restore list_pipe_job with its friends
This is needed to stop source() messing up job control.
2015-04-24 16:34:51 +01:00
Peter Stephenson
3bf8cab82e 34900: assignment before an "exec".
Without POSXIBUILTIN: restore after, so we only get side effects.

With POSXIBUILTIN: keep set variable
2015-04-15 21:16:17 +01:00
Peter Stephenson
a2c579050f 34887: Fix POSIX_BUILTINS with assignment.
In the form
  var=val command special-builtin-or-func
the var is restored after execution, unlike the case where "command"
is absent.

Clear up case in code that handles this.

Add tests.
2015-04-15 09:44:19 +01:00
Barton E. Schaefer
a4ff8e6957 34590: queue_signals() around more scopes that manipulate global state 2015-02-20 18:45:36 -08:00
Peter Stephenson
8ebe18c081 34530: PRINT_EXIT_VALUE with anonymous functions.
Simpler fix, avoiding structural changes.
2015-02-16 12:37:38 +00:00
Peter Stephenson
daa7d99702 34546: further $_ with anon function fix.
Also add tests.
2015-02-13 21:31:31 +00:00
Peter Stephenson
7e6faf7237 34519: $_ for arguments of anonymous function 2015-02-12 19:48:50 +00:00
Barton E. Schaefer
7398fea059 34514: Back out 34485, an alternate solution needs to be worked out.
(Tweaked to keep the unrelated hunk of the E01 test.)
2015-02-12 09:27:53 -08:00
Peter Stephenson
da86d6b4f2 34485: More rationalisation for anonymous functions.
Don't attempt to treat as "simple" case as there are too many
hidden problems.

Pull out some post-execution functions to a common case in
execcmd().
2015-02-09 16:39:29 +00:00
Peter Stephenson
e6d9642467 users/19751: remove error on failure to close file descriptor by number.
Keep it when closing file descriptor stored in a variable, i.e.
explicitly opened by the user.
2015-01-20 09:29:22 +00:00
Peter Stephenson
c6c9f5daf2 34322: bug with interface to parsestr() etc.
Was showing up in places like ${(e)...} where command substitution
could reallocate the token string, but actually there was never any
guarantee that the lexer wouldn't do that, so this was always
a bit iffy.
2015-01-18 22:38:57 +00:00
Peter Stephenson
cfd91eac07 Rearrange context saving.
Variables are now associated with the module that declares them, being
initialised and saved/restored there.  However, as many variables are
used for communication between modules, many of them are set in multiple
places, so the assignment is ambiguous.
2015-01-09 21:33:39 +00:00
Mikael Magnusson
bd2175fe7d 34134: anon funcs: don't leak shf and related data
Found by Coverity (Issue 439076).
2015-01-06 23:50:37 +01:00
Takeshi Banse
1cd8023570 34064: assignment before command replaces array with export even when KSH_ARRAYS 2014-12-27 22:05:05 -08:00
Barton E. Schaefer
d6a32ddeed 34065: following an "if" condition, do not test lastval for ERR_EXIT until a new command is run
Includes unposted regression tests.
2014-12-27 21:55:58 -08:00
Peter Stephenson
d067ebcacd 33876: etc.: Separate errors and keyboards interrupts
Combination of 12 commits from interrupt_abort branch.

Basic strategy is to introduce bits to errflag and to set and
reset them separately.

Remove interrupt status on return to main keymap.

Turn off ERRFLAG_INT for always block.

Restore bit thereafter: we probably need a new variable in order
to allow user interrupts to be reset in the always block.

Add TRY_BLOCK_INTERRUPT

This works the same as TRY_BLOCK_ERROR, but for a SIGINT, too.

Ensure propagation of SIGINT from exited job.

If received by foreground job, shell uses ERRFLAG_INT, not
ERRFLAG_ERROR, to set the new state.

Reset errflag before precmd()

Add always block in _main_completion to fix ZLS_COLORS

Ensures we get the right state of $ZLS_COLORS at the end of _main_complete
even if there's an interrupt.  However, the "right state" is a bit messy
as it depends on styles.
2014-12-11 09:41:17 +00:00
Oliver Kiddle
0d4b548d1e 33818: fix types passed to sizeof detected by coverity as being wrong 2014-11-30 23:19:55 +01:00
Barton E. Schaefer
49d6aace41 33816, 33819: GLOB_ASSIGN changes integer and floating type variables to string scalars 2014-11-28 13:30:22 -08:00
Barton E. Schaefer
2b615bedaf 33775: error opening file in $(<...) is not fatal 2014-11-23 16:02:48 -08:00
Barton E. Schaefer
7abd611a23 33614 (based on RedHat BZ-978613): signal safety when updating global state in execshfunc() 2014-11-06 10:50:20 -08:00
Peter Stephenson
023c2236e1 Treat exec from subshell as if forked
This removes weird behaviour when optimising the last command.
In particular SHLVL is correct from a subshell executed as the last
command.
2014-11-02 15:29:06 +00:00
Peter Stephenson
b4f7ccecd9 33531 with additions: retain status of exited background jobs.
Add linked list of unwaited-for background jobs.
Truncate at value of _SC_CHILD_MAX discarding oldest.
Remove old lastpid_status mechanism for latest exited process only.
Slightly tighten safety of permanently allocated linked lists so
that this doesn't compromise signal handling.
2014-10-26 17:47:42 +00:00
Barton E. Schaefer
2d4743ce50 33493: use correct command name in error messages about "ulimit" failure; restore internal copy of limits if setrlimit() fails, so the error won't repeat 2014-10-22 08:42:37 -07:00
Mikael Magnusson
49a3086bb6 33365: avoid buffer overflow for very long fds in >& fd syntax 2014-10-06 20:34:28 +02:00
Peter Stephenson
f16813792e 33325: fix ksh autoloads with redirections on function definitions 2014-10-02 16:15:10 +01:00
Barton E. Schaefer
32473f59a3 Merge branch 'master' of git://git.code.sf.net/p/zsh/code
Conflicts:
	ChangeLog
2014-09-29 17:52:33 -07:00
Peter Stephenson
8cb67e721b 33286: handle redirections for multiply named functions 2014-09-29 21:31:37 +01:00
Peter Stephenson
cf6b0f5663 33285: apply function definition redirections at execution 2014-09-29 21:02:59 +01:00
Barton E. Schaefer
60e31a45b0 33268: interactive shells treat SIGPIPE like SIGHUP if and only if SHTTY is disconnected 2014-09-29 08:59:31 -07:00
Barton E. Schaefer
a3b1e3ffb1 33100: check $fd more rigorously in "exec {fd}<&-" 2014-09-03 08:46:56 -07:00
Barton E. Schaefer
839a72de10 33077: SHTTY = -1 when closing it in closem() 2014-08-31 13:53:25 -07:00
Peter Stephenson
b5198b10a1 32768 with further modifications: LOCAL_LOOPS option. 2014-06-13 21:39:44 +01:00
Barton E. Schaefer
848badaa5f 32568: consistency in handling of errflag condition during substitutions
Affects for/select word lists, function definition name position, and
anonymous function argument lists.
2014-04-20 10:27:15 -07:00
Andrew Waldron
8189e12312 32552 (updated by 32560): fix segfault when using process substitution in anonymous function argument list
Also disallow process substitution in function name position.
2014-04-18 07:30:36 -07:00
Peter Stephenson
aede5c52bf 32176: plug additional deadlock-inducing pipe descriptor leaks 2013-12-21 17:41:21 -08:00
Barton E. Schaefer
9887fc3d7b 32171: close pipe descriptor in parent when left side is a shell construct to
prevent deadlock

Also clean up ChangeLog entry that attributed 32119 to 32114
2013-12-20 23:03:46 -08:00
Daniel Shahaf
b28a6365f6 32091: WARN_CREATE_GLOBAL false positive.
In cases like () { foo=bar =true; }
2013-12-06 09:28:42 +00:00
Barton E. Schaefer
c98cbe25d2 31919: fix deadlock when a shell builtin with a multio redirection is used on the left side of a pipeline
Make sure stdin/out/err file descriptors are closed for the multio copy
process, which means not re-using those descriptors after they are closed
and marked FDT_UNUSED in fdtable[].  For completeness, initialize their
fdtable[] state to FDT_EXTERNAL.
2013-10-27 15:42:00 -07:00
Barton E. Schaefer
c39d2f8e49 31912: in closemn(), distinguish closing for >&- from closing for a real redirect
Fixes knock-on multios bug introduced by workers/20666 way back in 2005.
2013-10-27 11:27:41 -07:00
Peter Stephenson
9a044f1a6a Use VERBOSE option in execstring() 2013-10-19 23:08:24 +01:00
Peter Stephenson
8879c46a48 31846: fix NOEXEC option in execsimple() optimisation 2013-10-18 23:42:07 +01:00
Bart Schaefer
978b5bcc8d 31832: make execrestore() more signal-safe. 2013-10-17 07:35:05 -07:00
Peter Stephenson
68a9bab11d 31809: Make whitespace clear in trace output for patterns. 2013-10-10 17:12:50 +01:00
Peter Stephenson
709dbbbda8 31549: Fix third problem with file descriptor management.
Replace ad-hoc subsh_close file descriptor for pipe management with the new
job-based addfilelist() mechanism.
2013-07-21 18:23:04 +01:00
Peter Stephenson
39ab9952e8 31545: Use of FD_CLOEXEC to remove possibility of fd reuse.
File descriptors of mmap'd dump files are closed if and only if
an exec is performed.
2013-07-20 23:23:18 +01:00
Peter Stephenson
3c5732223f 31528: use job table to record file descriptors associated with process subst 2013-07-17 21:33:16 +01:00
Peter Stephenson
fdf2867e5f 31444: Basic code for enable/disable -p 2013-06-13 18:38:33 +01:00
Frank Terbeck
2405b0ac0c 31376: Make sure every execve() is prefixed by winch_unblock()
This was suggested by Bart Schaefer in 31375.
2013-05-05 20:33:36 +02:00
Frank Terbeck
9604bc9a9f Revert "31372: Do not block SIGWINCH for child processes"
This reverts commit f8ab02ad5f.

As Bart suggested in 31375.
2013-05-05 20:33:07 +02:00
Bart Schaefer
f8ab02ad5f 31372: Do not block SIGWINCH for child processes
Something similar may also be needed in the zpty and clone modules.
2013-05-05 11:27:39 +02:00
Peter Stephenson
fb3ad98f71 31141: Tighten NO_CLOBBER restrictions on {fd} syntax
to apply only if $fd is exactly an fd and nothing else.
2013-03-10 21:45:04 +00:00
Peter Stephenson
1869eeb393 30876: fix obscure failures to propagate non-zero status
from optimised simple commands within lists
2012-12-13 10:36:59 +00:00
Peter Stephenson
4b86cc48f7 30726: make shell options passed to emulate stick along with the emulation 2012-10-11 20:14:01 +00:00
Peter Stephenson
ad92cb3203 30724: shell code optimisd to use execsimple() doesn't have a valid thisjob 2012-10-11 16:36:14 +00:00
Peter Stephenson
4e2cdd7956 30722: fix some cases where emulations or options were not propagated properly
from the emulate command
2012-10-07 19:46:46 +00:00
Peter Stephenson
6f3ff6b653 30633: "functions -T" only traces marked function, not called functions 2012-08-21 18:03:01 +00:00
Peter Stephenson
86f8e8de69 30307 plus tweak suggsted by Wayne: use %lld for zlong when long long 2012-03-05 10:06:28 +00:00
Bart Schaefer
8c37e6f077 30272 (tweaked): most failures of fork() cause non-interactive shells to
exit nonzero; bad options to "exec" cause exit under POSIX_BUILTINS.
2012-03-01 03:33:18 +00:00
Peter Stephenson
53f893d062 30181, plus rename of PF_* flags to PREFORK_*:
Pass sh-wordsplitting instructions to paramsubst() using flags,
avoiding side effects of explicitly setting and unsetting the
SHWORDSPLIT option.
2012-02-12 20:27:48 +00:00
Frank Terbeck
c8381cda78 30111: Src/exec.c: Fix segfaults with exec options. 2012-01-16 22:14:11 +00:00
Peter Stephenson
93139f39f1 30000 plus some comments: Better POSIXJOBs behaviour.
Don't restore default SIGTTOU etc. behaviour if still doing job control.
Only carry on doing job control in subshell if it's a real
(...) subshell
2011-12-12 19:25:02 +00:00
Peter Stephenson
faa02346a8 29844, 29845: remove bogus
error on closing fd's 0 to 9; update test
2011-10-26 18:48:13 +00:00
Peter Stephenson
ca7269e82d users/16289: don't delete temporary files on disown.
Document.
2011-08-28 16:38:28 +00:00
Peter Stephenson
85b00bb0f7 29703: crash when failing to parse process substitutions 2011-08-17 20:26:05 +00:00
Bart Schaefer
516ea294b8 29677: Do not allow external processes in a pipeline to become suspended
when the end of the pipe is controlled by a builtin in the current shell
which cannot itself become suspended.
2011-08-14 18:34:27 +00:00
Bart Schaefer
92ee9324a9 29654: "wait" should resume stopped jobs identified by process ID as well
as by job number; temporary (?) workaround for pipelines getting lost if
TSTP is delivered when a shell builtin is the tail of the pipe.
2011-08-10 03:21:15 +00:00
Peter Stephenson
45913f43e5 29561: Allow closing of fd's not recorded by the shell 2011-07-25 10:20:09 +00:00
Peter Stephenson
a8657c4b40 29555: fix problem using open fd beyond max_zsh_fd 2011-07-19 09:26:56 +00:00
Peter Stephenson
e1680e6840 29503: Missing popheap() on failed autoload 2011-06-23 19:29:24 +00:00
Peter Stephenson
6062529d3f 29492: add argument handling to anonymous functions 2011-06-19 20:12:00 +00:00
Bart Schaefer
e39dfaeb95 29367, 29368: avoid redirecting the xtrace of simple commands along with
their standard error.
2011-05-24 15:49:03 +00:00
Mikael Magnusson
72cb7cfc6f 29307, 29308 + replies: Fix some doubled words in docs and comments. 2011-05-19 16:10:46 +00:00
Peter Stephenson
d89361739a 29165: use term.h globally if needed at all. 2011-05-09 09:49:08 +00:00
Peter Stephenson
17e3f742f1 29129: reading of end of fd array 2011-05-02 12:32:41 +00:00
Peter Stephenson
7bc97b920b 28866: with POSIX_BUILTINS "command" prefix resets specialness 2011-03-06 21:37:38 +00:00
Peter Stephenson
4bfb5daa7e 28795 plus typos noticed by Mikael: careful with forked shells 2011-02-23 09:47:05 +00:00
Peter Stephenson
dbbcbf67cb 28791: exit on errors with special builtins with POSIXBUILTINS 2011-02-22 20:09:20 +00:00
Peter Stephenson
0e792b9447 28784: exit on exec redirection error with POISX_BUILTINS 2011-02-21 11:28:49 +00:00
Peter Stephenson
3a23e82941 28762: fix coproc file desriptor closing 2011-02-17 19:52:41 +00:00
Peter Stephenson
246bcd10a7 Mikael: 28531: typos 2010-12-16 13:55:35 +00:00
Peter Stephenson
9371146ad7 28469: fix memory leak in anonymous function 2010-12-05 16:59:41 +00:00
Bart Schaefer
cf17c39832 28461: flush stderr in PRINT_EXIT_VALUE handling. 2010-11-27 19:46:32 +00:00
Peter Stephenson
f1495f5099 28259: Finally fix some ancient problems with here-documents 2010-09-14 14:46:26 +00:00
Peter Stephenson
8bc64084a4 28220 plus some comments: fix "HELLO=$HELLO shellfunc" 2010-08-31 19:32:56 +00:00
Peter Stephenson
c7ff1b79dd 28179, users/15314, users/15310, users/15200:
various job and process control fixes
2010-08-22 20:08:57 +00:00
Peter Stephenson
76aef28b31 28073: allow #! scripts to search path if interpreter not found 2010-07-15 18:44:12 +00:00