Peter Stephenson
7d1877da4e
41608 (plus tests): restore ERR_EXIT before function.
...
There was an exception to the usual ERR_EXIT pattern that causes
problems when executing a function in an else branch. It seems
the exception is no longer needed as the regression tests pass
without it.
2017-08-29 19:52:18 +01:00
Peter Stephenson
97d4bdbc7e
41590 modified as 41595: make ERR_RETURN more logical.
...
It now operates separately at each function depth.
To keep ERR_EXIT global, make the noerrexit variable usd bit flags.
Extend tests.
2017-08-24 19:46:20 +01:00
Peter Stephenson
ddb8675901
posted but has not shown up: fix fd problem in subshell.
...
Record fd's that have been saved in fdtable and if the shell
forks close them as they will never be restored.
2017-08-15 20:49:23 +01:00
Peter Stephenson
d4b94b5e83
41464, 41466: With POSIX_BUILTINS, exec only executes sexternal commands.
...
Document the default behaviour and add a test.
2017-07-27 09:22:04 +01:00
Barton E. Schaefer
a5ed661f25
41317: use heap allocation in getoutputfile() to plug memory leak
...
Heap is usable ever since addfilelist() of workers/31528 (commit 3c573222
).
2017-06-19 16:06:38 -07:00
Peter Stephenson
21b195562a
41043: Close pipes in shell when disowning background job.
...
This was missing in the case of &,, causing a file descriptor leak.
2017-05-03 11:30:15 +01:00
Peter Stephenson
ed4e37e45c
41020: Fix "command -p"; "-p" was incorrectly left in command arguments
...
Also add tests for known precommand modifier issues.
2017-04-28 10:22:43 +01:00
Peter Stephenson
d7110d8f01
41012: Fix premature exit from nested function in EXIT trap.
...
Also add check so we don't delay an exit if we were already in
an EXIT trap for the main shell, as we should in that case leave
immediately.
2017-04-27 18:56:18 +01:00
Peter Stephenson
408b92b168
41008: Handle expansions for precommand modifiers
2017-04-26 09:44:38 +01:00
Peter Stephenson
8b5102ccf5
40933: Ensure we get job text in sourced files.
...
This was turned off explicitly as it was assumed not to be needed,
but it is when code in a sourced file is suspended.
We'll need to see if this makes start up inefficient.
2017-04-04 18:54:10 +01:00
Peter Stephenson
64559abc1f
40796: MAGIC_EQUAL_SUBST not needed with parsed assignment.
...
If typeset family builtins are recognised as keywords then the value
is handled as a separate expansion and we don't need the old
magic behaviour, even if the option is set.
2017-03-09 09:52:23 +00:00
Peter Stephenson
f3f8537cfa
40760: Always tokenize unquoted - to Dash.
...
This fixes use of pattern match character ranges in unusual contexts.
Attempt to detect a tokenized - in cases where we don't care.
2017-03-07 10:43:58 +00:00
Barton E. Schaefer
5e61eaf855
40654: exit cleanly from special POSIXBUILTINS in subshells
...
This patch overloads the zsh_subshell counter which is meant for $ZSH_SUBSHELL, but no one has suggested a working alternate test.
2017-03-04 15:25:17 -08:00
Barton E. Schaefer
9f447578f0
40576 (tweaked): entersubsh(): unblock any signals that were blocked for trap handling
...
Also small improvement to loop that resets trap handlers
2017-02-20 13:26:49 -08:00
Peter Stephenson
c861b17bbf
40391: Add WARN_NESTED_VAR option and functions -W.
...
These are companions to WARN_CREATED_GLOBAL, warning when a variable
from an enclosing scope is altered.
2017-01-23 09:50:57 +00:00
Peter Stephenson
f90a0447aa
40353 with tweaks to whence -v: extend directory cache use.
...
Now used for all autoloaded functions after load, including those
where the file was found along fpath, reducing duplication of
directory names.
2017-01-16 10:31:56 +00:00
Peter Stephenson
178e62dbfe
40342: Add directory name cache for autoload file paths.
...
This renders "autoload /blah/blah/*" as efficient as use of
fpath.
2017-01-12 20:56:20 +00:00
Peter Stephenson
33799ae2b0
40335: More care with autoload function path.
...
If doing "autoload -X", the path present might actually be location
of file containing the function with the autoload -X. Add
an explicit flag to say it's a directory for autoload.
2017-01-12 13:54:29 +00:00
Peter Stephenson
47b7f2adef
unposted: more care with shell function filename.
...
When updating shfunc structure to change filename we should be
careful to free whatever's there already, we may now be the
directory in which to find the function definition. After loading
the field contains the full name of the file.
2017-01-11 12:11:22 +00:00
Peter Stephenson
f26d1ba6b0
Add features associated with autoloading a function using an absolute
...
path.
-d defaults to normal fpath
-r remembers the path without actually loading. May be combined with -d.
-R does the same but it's an error if not found
-X can now take a directory path: this is used to output not yet loaded
functions that have an associated path.
2017-01-11 11:26:13 +00:00
Peter Stephenson
0e4aa6f2f6
Additional case for ERR_RETURN and ERR_EXIT.
...
Don't trigger just because status is non-zero at end of
current shell group.
2016-12-05 12:29:23 +00:00
Peter Stephenson
c03228f9ed
Extra case for ERR_RETURN and ERR_EXIT.
...
Don't trigger just because status is non-zero at end of
complex shell construct as this may be a case we've already
suppressed.
2016-12-05 11:21:01 +00:00
Peter Stephenson
a62e1640bc
39958: Add extra byte to PATH_MAX allocations.
...
This ensures we've got enough space for a null, although this
isn't always needed.
2016-11-17 19:49:17 +00:00
Daniel Shahaf
c392e6c620
39915: whence: Honor PATH_DIRS option for arguments that start with './' or '../'.
...
While here, add some docstrings.
2016-11-17 15:28:42 +00:00
Peter Stephenson
5f1700755f
39901: No EXIT trap on LHS of pipeline.
...
There is a special case if the LHS is a shell construct.
Add unit tests for both cases.
2016-11-10 10:37:27 +00:00
Peter Stephenson
bcb52460f3
39571: Fix ERR_EXIT bug with && and function.
...
"foo && bar" inside a function could cause the code outside
the function not to perform ERR_EXIT or ERR_RETURN when needed.
2016-10-05 17:46:42 +01:00
Peter Stephenson
0854ee56bc
39568: "! <complex-command>" suppresses ERR_EXIT
2016-10-05 13:52:31 +01:00
Peter Stephenson
dc517212ca
39566: Improve usefulness of command_not_found_handler.
...
Don't behave as if command not found if return status is non-zero
as this may simply be the return status of the replacement command.
Let the function report a command not found instead.
2016-10-05 12:14:43 +01:00
Peter Stephenson
4ab3fcc90d
39545: Add some missing unqueue_signals().
...
All of these are added simply to fit existing logic in other branches.
2016-10-03 13:43:20 +01:00
Peter Stephenson
36a11804b4
39521: Refactor start of execcmd().
...
By splitting into _analyse and _exec execpline2() has easier
access to the state at the start of execution. Use this
to ensure we fork if this is a builtin with no arguments.
2016-10-03 09:59:01 +01:00
Peter Stephenson
6b2585147b
39540: "! command" should suppress ERR_EXIT and ERR_RETURN
2016-10-02 19:17:19 +01:00
Peter Stephenson
bb2bbcc944
39517: back off 39502 (WC_ASSIGN causes fork in pipe).
...
This isn't a robust fix as WC_ASSIGNs simply precede the main wordcode.
2016-09-30 11:34:15 +01:00
Barton E. Schaefer
736eb433ba
39507: TMPSUFFIX for =(...)
2016-09-29 14:55:49 -07:00
Barton E. Schaefer
e61ed2b80d
39470: failure to open a supposedly unique temp file name should result in an error
...
Also band-aid for signal-related race conditions in temp file name generation
2016-09-29 11:16:24 -07:00
Peter Stephenson
6ce696f352
39502: Fork for assignment in LHS of pipeline.
...
foo=bar | stuff
left the value of foo set to bar as we didn't realise we needed to
fork.
2016-09-29 17:29:58 +01:00
Peter Stephenson
07c8fbe596
34943: Fixes for "command" with multiple options.
...
These need to combine properly, and alos "command -p" with either
-v or -V needs to search for builtins and then using the default
system path.
2016-09-29 11:01:00 +01:00
Barton E. Schaefer
3b6002e53d
39437: use list_pipe_pid in assignment for clarity
2016-09-27 08:48:49 -07:00
Peter Stephenson
e35dcae40f
39436: Pass on status of SIGINT better.
...
Set lastval to 128 + SIGINT on interrupt.
Don't execute builtin if already interrupted at that point.
2016-09-25 19:18:43 +01:00
Peter Stephenson
759e5912fd
39435: Further fix for pgrp of funny pipelines.
...
Don't set gleader of SUBJOB at the point of creation if the
SUPERJOB has no processes yet.
2016-09-25 17:14:24 +01:00
Barton E. Schaefer
c8de0af359
39381: handle save/restore of variable values when "typeset"-related reserved words are prefixed by an assignment
2016-09-19 00:26:10 -07:00
Peter Stephenson
c355a5f41f
39362: another race with pipeline handling.
...
When forking the shell to control the right hand side, the
forked subshell now always starts its own process group, to
avoid getting a spurious additional SIGSTOP.
2016-09-16 21:55:55 +01:00
Peter Stephenson
327f3dd3ad
39359: Fix remaining race with orphaned subjob.
...
When shell is forked to run right hand side of pipieline it should
use its own PID as process group if the left hand side of the
pipeline has already exited.
2016-09-16 17:23:12 +01:00
Peter Stephenson
01ae64c0d7
39331: Reparent subjob on fork with exited superjob.
...
Fixes case of
v() { { vim - } always { true } }
ls | v
^Z
fg
Tentative fix: still a race at exit where zsh forked by ^Z
is stopped when restarted.
2016-09-16 09:39:33 +01:00
Peter Stephenson
23c1c774b9
39305: Fix error handling after parse for here document.
...
Keep the error status the same as before, but also retain
the interrupt status if that was non-zero.
2016-09-13 09:37:49 +01:00
Stephane Chazelas
8ce98c75f5
39125: More care needed decrementing SHLVL on exec.
...
Not needed in subshell.
2016-08-31 10:21:00 +01:00
Barton E. Schaefer
b312abc93b
39104: do not hash relative paths in findcmd()
2016-08-26 15:05:15 -07:00
Daniel Shahaf
f026a4dc12
38991: Make 'whence -v autoloaded-function' shows the defining filename.
...
This may also fix a problem whereby the %x prompt escape evaluated to
a function name rather than a filename, since %x is also backed by
scriptfilename.
2016-08-05 12:37:26 +00:00
Daniel Shahaf
7badf262c1
38653 + 38657: 'functions -T' tracing: recurse into anonymous functions.
2016-06-13 08:53:18 +00:00
Barton E. Schaefer
5ee05cf935
38350 (cf. Glenn Smith: 38348): Remove-all warning should warn about the root directory as well
2016-04-26 10:40:56 -07:00
Peter Stephenson
f4dfca490c
38114: Fix hang using ^Z with command subst.
...
In subshells started to perform substitutions disable signals
that require interactive handling.
2016-03-09 09:51:14 +00:00