<feed xmlns='http://www.w3.org/2005/Atom'>
<title>zsh/Src/exec.c, branch zsh-5.9</title>
<subtitle>[no description]</subtitle>
<id>http://git.sudomsg.com/mirror/zsh/atom/Src/exec.c?h=zsh-5.9</id>
<link rel='self' href='http://git.sudomsg.com/mirror/zsh/atom/Src/exec.c?h=zsh-5.9'/>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/'/>
<updated>2022-04-30T03:37:09Z</updated>
<entry>
<title>50136: Fix =(nosuchcommand) race/deadlock first reported in workers/42609</title>
<updated>2022-04-30T03:37:09Z</updated>
<author>
<name>Bart Schaefer</name>
<email>schaefer@zsh.org</email>
</author>
<published>2022-04-30T03:37:09Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=8181708feb35c647aa9b9692875a1ebf893ade6b'/>
<id>urn:sha1:8181708feb35c647aa9b9692875a1ebf893ade6b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>50162: Fix multios with current-shell "exec" (aka nullexec).</title>
<updated>2022-04-29T00:03:31Z</updated>
<author>
<name>Bart Schaefer</name>
<email>schaefer@zsh.org</email>
</author>
<published>2022-04-29T00:03:31Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=0ccc3c149413921fbf5c00696bf350333927eb64'/>
<id>urn:sha1:0ccc3c149413921fbf5c00696bf350333927eb64</id>
<content type='text'>
</content>
</entry>
<entry>
<title>50049: care with signed characters</title>
<updated>2022-04-25T16:51:59Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2022-04-12T13:10:08Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=c5a891a29d1d4f946181f6699bcf7f6fe35b43e6'/>
<id>urn:sha1:c5a891a29d1d4f946181f6699bcf7f6fe35b43e6</id>
<content type='text'>
Some signed-to-unsigned casts needed for a couple of cases of pointers
used as indices.
</content>
</entry>
<entry>
<title>49906 (Bart), 49911: Fixes to querying jobs in subshell.</title>
<updated>2022-03-30T08:28:43Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2022-03-30T08:28:43Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=98e46340867028808e71e7f3373881cb7e5b6764'/>
<id>urn:sha1:98e46340867028808e71e7f3373881cb7e5b6764</id>
<content type='text'>
Don't attempt to query invalid job off end of table, resulting in
crashes from $jobtstates.

If background task started in subshell, look at tatsks within subshell
instead of main shell.  Document and add test.
</content>
</entry>
<entry>
<title>49813: &lt;&lt;&lt;: Document newline behavior and fix optimization</title>
<updated>2022-03-30T06:07:39Z</updated>
<author>
<name>Mikael Magnusson</name>
<email>mikachu@gmail.com</email>
</author>
<published>2022-03-08T18:34:20Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=d7b8619396d806d390126c2abd1c3ce099fe7f59'/>
<id>urn:sha1:d7b8619396d806d390126c2abd1c3ce099fe7f59</id>
<content type='text'>
The =(&lt;&lt;&lt;foo) optimization forgot to add a newline, but =(cat&lt;&lt;&lt;foo)
always did, make the behavior consistent, and document it.
</content>
</entry>
<entry>
<title>49694 + doc: Allow using empty STTY= to freeze tty for a single command</title>
<updated>2022-01-30T17:14:54Z</updated>
<author>
<name>Mikael Magnusson</name>
<email>mikachu@gmail.com</email>
</author>
<published>2022-01-18T22:20:53Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=8bf0f0cf45606971d1433b36ce21ab45f6226004'/>
<id>urn:sha1:8bf0f0cf45606971d1433b36ce21ab45f6226004</id>
<content type='text'>
Previously, doing this would just run stty with no arguments, which
normally causes it to print some terminal settings to stdout.
</content>
</entry>
<entry>
<title>github #82: Fix typos</title>
<updated>2021-11-12T22:54:34Z</updated>
<author>
<name>Dimitris Apostolou</name>
<email>dimitris.apostolou@icloud.com</email>
</author>
<published>2021-11-12T21:33:37Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=356dcb20cef387a5eea5f8fcbfe123b24e3bb928'/>
<id>urn:sha1:356dcb20cef387a5eea5f8fcbfe123b24e3bb928</id>
<content type='text'>
</content>
</entry>
<entry>
<title>49353: Fix comments in sourced file.</title>
<updated>2021-09-09T19:05:39Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2021-09-09T19:05:39Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=db46c9cd5844240fb6015666c8e2a12a0a3a6ead'/>
<id>urn:sha1:db46c9cd5844240fb6015666c8e2a12a0a3a6ead</id>
<content type='text'>
If the file was sourced from an interactive shell with
INTERACTIVE_COMMENTS not set, comments were not parsed.

Note there is a remaining edge case where the sourced
file is in fact entered at the comment line.
</content>
</entry>
<entry>
<title>49307 with doc update: POSIX_TRAPS fix.</title>
<updated>2021-08-26T08:46:39Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2021-08-26T08:46:39Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=0a80579ed18b4004a99b5dc062ce874c0bdc3201'/>
<id>urn:sha1:0a80579ed18b4004a99b5dc062ce874c0bdc3201</id>
<content type='text'>
With POSIX_TRAPS set, an ignored signal stays ignored when entering
a subshell.
</content>
</entry>
<entry>
<title>48857: declare "volatile" all globals that may be modified by signal handlers</title>
<updated>2021-05-17T02:51:11Z</updated>
<author>
<name>Bart Schaefer</name>
<email>schaefer@ipost.com</email>
</author>
<published>2021-05-17T02:51:11Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=cf5c4828d1cdfd79e369a6b3323466bc961851c4'/>
<id>urn:sha1:cf5c4828d1cdfd79e369a6b3323466bc961851c4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>47794: exec: run final pipeline command in a subshell in sh mode</title>
<updated>2021-04-10T22:56:39Z</updated>
<author>
<name>brian m. carlson</name>
<email>sandals@crustytoothpaste.net</email>
</author>
<published>2021-01-04T00:23:00Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=f7a417388c73e7cfefb8e93fa8beba193fb1dd1f'/>
<id>urn:sha1:f7a417388c73e7cfefb8e93fa8beba193fb1dd1f</id>
<content type='text'>
zsh typically runs the final command in a pipeline in the main shell
instead of a subshell.  However, POSIX specifies that all commands in a
pipeline run in a subshell, but permits zsh's behavior as an extension.
The default /bin/sh implementations on various Linux distros and the
BSDs always use a subshell for all components of a pipeline.

Since zsh may be used as /bin/sh in some cases (such as macOS Catalina),
it makes sense to have the common sh behavior when emulating sh, so do
that by checking for being the final item of a multi-item pipeline and
creating a subshell in that case.

From the comment above execpline(), we know the following:

 last1 is a flag that this command is the last command in a shell that
 is about to exit, so we can exec instead of forking.  It gets passed
 all the way down to execcmd() which actually makes the decision.  A 0
 is always passed if the command is not the last in the pipeline. […]
 If last1 is zero but the command is at the end of a pipeline, we pass
 2 down to execcmd().

So there are three cases to consider in this code:

• last1 is 0, which means we are not at the end of a pipeline, in which
 case we should not change behavior.
• last1 is 1, which means we are effectively running in a subshell,
 because nothing that happens due to the exec is going to affect the
 actual shell, since it will have been replaced.  So there is nothing
 to do here.
• last1 is 2, which means our command is at the end of the pipeline, so
 in sh mode we should create a subshell by forking.

input is nonzero if the input to this process is a pipe that we've
opened.  At the end of a multi-stage pipeline, it will necessarily be
nonzero.

Note that several of the tests may appear bizarre, since most developers
do not place useless variable assignments directly at the end of a
pipeline.  However, as the function tests demonstrate, there are cases
where assignments may occur when a shell function is used at the end of
a command.  The remaining assignment tests simply test additional cases,
such as the use of local, that would otherwise be untested.
</content>
</entry>
<entry>
<title>Allow more scripts without #!</title>
<updated>2021-02-16T09:16:20Z</updated>
<author>
<name>Justine Tunney</name>
<email>jtunney@gmail.com</email>
</author>
<published>2021-01-26T05:34:50Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=326d9c203b3980c0f841bc62b06e37134c6e51ea'/>
<id>urn:sha1:326d9c203b3980c0f841bc62b06e37134c6e51ea</id>
<content type='text'>
This change modifies the zsh binary safety check surrounding execve() so
it can run shell scripts having concatenated binary content. We're using
the same safety check as FreeBSD /bin/sh [1]. POSIX was recently revised
to require this behavior:

    "The input file may be of any type, but the initial portion of the
     file intended to be parsed according to the shell grammar (XREF to
     XSH 2.10.2 Shell Grammar Rules) shall consist of characters and
     shall not contain the NUL character. The shell shall not enforce
     any line length limits."

    "Earlier versions of this standard required that input files to the
     shell be text files except that line lengths were unlimited.
     However, that was overly restrictive in relation to the fact that
     shells can parse a script without a trailing newline, and in
     relation to a common practice of concatenating a shell script
     ending with an 'exit' or 'exec $command' with a binary data payload
     to form a single-file self-extracting archive." [2] [3]

One example use case of such scripts, is the Cosmopolitan C Library [4]
which configuse the GNU Linker to output a polyglot shell+binary format
that runs on Linux / Mac / Windows / FreeBSD / OpenBSD.

[1] https://github.com/freebsd/freebsd-src/commit/9a1cd363318b7e9e70ef6af27d1675b371c16b1a
[2] http://austingroupbugs.net/view.php?id=1250
[3] http://austingroupbugs.net/view.php?id=1226#c4394
[4] https://justine.lol/cosmopolitan/index.html
</content>
</entry>
<entry>
<title>46268: suppress a useless compiler warning around nice()</title>
<updated>2020-07-28T09:46:14Z</updated>
<author>
<name>Roman Perepelitsa</name>
<email>roman.perepelitsa@gmail.com</email>
</author>
<published>2020-07-27T12:56:09Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=41e318727e6fdca70b28431a10a60a73aa6f43bf'/>
<id>urn:sha1:41e318727e6fdca70b28431a10a60a73aa6f43bf</id>
<content type='text'>
From nice(2):

    To detect an error, set errno to 0 before the call, and check
    whether it is nonzero after nice() returns -1.
</content>
</entry>
<entry>
<title>46175/0003: Fix the RM_STAR_SILENT bug from the parent commit.</title>
<updated>2020-07-05T11:11:59Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>d.s@daniel.shahaf.name</email>
</author>
<published>2020-07-03T13:38:58Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=cf134c15a09c9be7fac7628372a8f897ec84f9fa'/>
<id>urn:sha1:cf134c15a09c9be7fac7628372a8f897ec84f9fa</id>
<content type='text'>
</content>
</entry>
<entry>
<title>46026: Add CLOBBER_EMPTY option.</title>
<updated>2020-06-09T17:07:01Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2020-06-09T17:04:46Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=3df604a4be76db6ccf285eda6b4b3f5f6ec7497d'/>
<id>urn:sha1:3df604a4be76db6ccf285eda6b4b3f5f6ec7497d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>users/24909: Don't clean up special file list too early.</title>
<updated>2020-06-08T19:52:53Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2020-06-08T19:52:53Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=d7e90f1c7c08ab88c6e0e7c68e64f0e1ea51893d'/>
<id>urn:sha1:d7e90f1c7c08ab88c6e0e7c68e64f0e1ea51893d</id>
<content type='text'>
When running a function, remove special files used for substitution
after the function has run rather than before.
</content>
</entry>
<entry>
<title>45923 (with memory leak fixed, cf. 45924): zprof: Don't tally all anonymous functions as though they were a single function named "(anon)".</title>
<updated>2020-05-28T19:40:40Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>d.s@daniel.shahaf.name</email>
</author>
<published>2020-05-26T22:06:39Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=fb1aa3fe1e78ee1f521b64db062addf74ea9d263'/>
<id>urn:sha1:fb1aa3fe1e78ee1f521b64db062addf74ea9d263</id>
<content type='text'>
Before:

    % zmodload zsh/zprof
    % () :
    % () :
    % zprof
    num  calls                time                       self            name
    -----------------------------------------------------------------------------------
     1)    2           0.08     0.04  100.00%      0.08     0.04  100.00%  (anon)

After:

    % zmodload zsh/zprof
    % () :
    % () :
    % zprof
    num  calls                time                       self            name
    -----------------------------------------------------------------------------------
     1)    1           0.04     0.04   50.45%      0.04     0.04   50.45%  (anon) [:3]
     2)    1           0.04     0.04   49.55%      0.04     0.04   49.55%  (anon) [:2]
</content>
</entry>
<entry>
<title>45583/0008: Add the 'function -T' syntax.</title>
<updated>2020-03-22T02:23:53Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>d.s@daniel.shahaf.name</email>
</author>
<published>2020-03-19T18:00:16Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=386d9ac8ff961b8f0333d09511e927ab31011658'/>
<id>urn:sha1:386d9ac8ff961b8f0333d09511e927ab31011658</id>
<content type='text'>
Config/version.mk was bumped in the previous commit.
</content>
</entry>
<entry>
<title>45583/0007: WC_FUNCDEF: Add a placeholder element.</title>
<updated>2020-03-22T02:23:53Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>d.s@daniel.shahaf.name</email>
</author>
<published>2020-03-18T19:57:49Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=a3c6c5513dcfc25d952735449bf6da476d905184'/>
<id>urn:sha1:a3c6c5513dcfc25d952735449bf6da476d905184</id>
<content type='text'>
</content>
</entry>
<entry>
<title>45583/0001: internal: Remove a redundant assignment.</title>
<updated>2020-03-22T02:23:52Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>d.s@daniel.shahaf.name</email>
</author>
<published>2020-03-18T19:42:08Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=e94e828efd4835a45bab4e37f9e3b16fd09b3f78'/>
<id>urn:sha1:e94e828efd4835a45bab4e37f9e3b16fd09b3f78</id>
<content type='text'>
The value is overwritten five lines below, without being read in the interim.
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'origin/master' into 5.9</title>
<updated>2020-03-07T21:36:46Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>danielsh@apache.org</email>
</author>
<published>2020-03-07T21:36:46Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=6fc8e8628f9c3da6e4b83c3de67e44376708cbcb'/>
<id>urn:sha1:6fc8e8628f9c3da6e4b83c3de67e44376708cbcb</id>
<content type='text'>
* Test/D02glob.ztst:
  On the "unreadable directories can be globbed (users/24619, users/24626)"
  test, resolve conflicts by removing the Cygwin-only skip that has been added
  in master, since the test is passing on this branch.  This effectively reverts
  workers/45492.  See discussion starting in workers/45504.

* origin/master:
  unposted: Remove 'sgi', as that OpenBSD port has been discontinued.
  45509: fix typos in B01cd.ztst
  45490 (+45495 and a test): refactor rlimits.c
  github #49: Fix typo: longson should be loongson
  users/24710: Fix job control problem with sudo.
  45492: skip test added by users/24633 on Cygwin
  45488: COMP_WORDS for bash need "$@"-style quoting
  45487: Missing mod_export declarations for AIX
  45447: Complete vcs_info_hookadd and vcs_info_hookdel. Expose _vcs_info_hooks as a top-level helper function.
  45463: test: kill: Document why we use SIGURG
  45453: builtins: kill: Do not signal current process group when pid is empty
  45452: builtins: kill: Add `kill ''` regression test with explicit sigspec
  45451: builtins: kill: Add basic test suite
  github #48/0002: vcs_info git: properly detect bare repositories
  github #48/0001: vcs_info git: avoid warnings in bare repositories
  unposted: Post-release version bump
  unposted: Release 5.8
  CVE-2019-20044: Update change log for preceding commits
  Update NEWS/README
  Add unsetopt/PRIVILEGED tests
  Clean up error-message white space
  Improve PRIVILEGED fixes (again)
  Improve PRIVILEGED fixes
  Drop privileges securely
  unposted: V01zmodload: Fix failing test from workers/45385
  45423: _su: Improve arg handling, shell look-ups
  unposted: _zip: Recognise '--'
  45385: Add a test for 'zmodload -Fa' preemptively disabling ("blacklisting"?) features.
  unposted: Test release: 5.7.1-test-3
  zsh/system: Fix infinite loop in sysread
  _diff_options: Restore -w completion lost in workers/43351
  unposted: Fix ChangeLog typo.
  45368: Add tests for workers/45367's issue about double slashes in 'cd -P' and /home/daniel/in/zsh.
  45373: Fix ERR_EXIT bug in else branch of if.
  45372: Record a symlink loop bug involving :P
  45365: _git: Fix __git_recent_branches for the case when a commit has an empty message
  45343: Queue signals around arithmetic evaluations
  45344: Document where third-party completion functions should be installed.
  45345: internal: ztst.vim: Fix highlighting of zsh comments in test payload
  unposted: internal: Add some comments and fix indentation.  No functional change.
  45340: internal: Document the difference between paramtab and realparamtab.
  45332: _git: add completion for git-version
  _brace_parameter: add missing \

Conflicts:
	ChangeLog
	Test/D02glob.ztst
	Test/V01zmodload.ztst
</content>
</entry>
<entry>
<title>users/24710: Fix job control problem with sudo.</title>
<updated>2020-02-27T20:42:16Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2020-02-27T20:42:16Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=14ea665a903b26a658ef1d2ca974a9b48e09eff1'/>
<id>urn:sha1:14ea665a903b26a658ef1d2ca974a9b48e09eff1</id>
<content type='text'>
If we use kill to test for continued existence of a process group,
we should check on failure that the error is ESRCH, as EPERM
indicates the group still has memebers but running privileged
so should be left alone.
</content>
</entry>
<entry>
<title>45343: Queue signals around arithmetic evaluations</title>
<updated>2020-01-29T09:02:49Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>danielsh@apache.org</email>
</author>
<published>2020-01-26T01:17:00Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=581585dfc66e2bb18434cdd1ad2f5899b12a86dd'/>
<id>urn:sha1:581585dfc66e2bb18434cdd1ad2f5899b12a86dd</id>
<content type='text'>
The queueing added in execarith() in 45083 is reverted since the callee
does this now.
</content>
</entry>
<entry>
<title>45131: Make a function that redefines itself preserve its tracedness.</title>
<updated>2019-12-26T04:20:10Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>danielsh@apache.org</email>
</author>
<published>2019-12-22T04:52:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=ca6f4466e661f185d083e09c55fb93d16e0736cc'/>
<id>urn:sha1:ca6f4466e661f185d083e09c55fb93d16e0736cc</id>
<content type='text'>
This makes it easy to apply local tracing ('functions -T') to autoloadable
functions that redefines themselves when first loaded.
</content>
</entry>
<entry>
<title>45083: Add signal protection to execarith().</title>
<updated>2019-12-18T10:51:59Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2019-12-18T10:51:59Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=fd068221b7fbbcfe89ec74c7eeb0138e90e14b13'/>
<id>urn:sha1:fd068221b7fbbcfe89ec74c7eeb0138e90e14b13</id>
<content type='text'>
Otherwise we could get re-entrancy in memory functions when
setting variables.
</content>
</entry>
<entry>
<title>45066: internal: Document forklevel, locallevel, and exit_pending.</title>
<updated>2019-12-18T06:01:50Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>danielsh@apache.org</email>
</author>
<published>2019-12-17T07:44:28Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=ae7e291873c1f80c51f53db934a87df2c0eaf821'/>
<id>urn:sha1:ae7e291873c1f80c51f53db934a87df2c0eaf821</id>
<content type='text'>
</content>
</entry>
<entry>
<title>45058: internal: Add symbolic names to possible values of zexit()'s "from_where" parameter. No functional change.</title>
<updated>2019-12-17T05:12:36Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>danielsh@apache.org</email>
</author>
<published>2019-12-17T04:43:48Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=8bc4400762289e5cdbcfa50aab5982f8e7e28dfc'/>
<id>urn:sha1:8bc4400762289e5cdbcfa50aab5982f8e7e28dfc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>45025: fix re-entrancy problem with memory management in readoutput().</title>
<updated>2019-12-15T19:04:04Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2019-12-15T19:04:04Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=1baf0d1f553631ecb641e98f4bf48bc2a44e5b82'/>
<id>urn:sha1:1baf0d1f553631ecb641e98f4bf48bc2a44e5b82</id>
<content type='text'>
This could cause a signal received during $(...) to corrupt memory.
</content>
</entry>
<entry>
<title>45004: Fix typos in comments</title>
<updated>2019-12-11T02:37:39Z</updated>
<author>
<name>Martijn Dekker</name>
<email>martijn@inlv.org</email>
</author>
<published>2019-12-10T19:41:08Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=c578f0a08b9257f3db85dab5431270f1a6eb8858'/>
<id>urn:sha1:c578f0a08b9257f3db85dab5431270f1a6eb8858</id>
<content type='text'>
</content>
</entry>
<entry>
<title>44841: Better checking of errors from "nice"</title>
<updated>2019-10-16T16:41:41Z</updated>
<author>
<name>_RuRo_ (Андрей Стоцкий)</name>
<email>ruro.ruro@ya.ru</email>
</author>
<published>2019-10-16T16:26:06Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=59901e61cb3e7c8c36bb77c722102e2b9504dc5c'/>
<id>urn:sha1:59901e61cb3e7c8c36bb77c722102e2b9504dc5c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>44635: Don't apply STAT_NOPRINT to backgrounded jobs</title>
<updated>2019-08-03T18:48:18Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2019-08-03T18:48:18Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=e0d063a2ade821baf570eb300d4be93692b494f8'/>
<id>urn:sha1:e0d063a2ade821baf570eb300d4be93692b494f8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>44480: Don't automatically close externally visible file descroptors.</title>
<updated>2019-07-02T12:42:53Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2019-07-02T12:42:53Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=3bdf4d6641fb34d1c2f130abddb847169a793afe'/>
<id>urn:sha1:3bdf4d6641fb34d1c2f130abddb847169a793afe</id>
<content type='text'>
These are descriptors marked FDT_EXTERNAL.

Make all sysopen'ed file descriptors FDT_EXTERNAL.

Make =(...) call closem() consistent with other substitutions.

Document file descriptors are left open.
</content>
</entry>
<entry>
<title>44307: allow for atoi() returning a negative number</title>
<updated>2019-05-19T22:14:01Z</updated>
<author>
<name>Oliver Kiddle</name>
<email>okiddle@yahoo.co.uk</email>
</author>
<published>2019-05-19T22:14:01Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=3de2333b0821a1aaeb3ef98046212b5bf22b596c'/>
<id>urn:sha1:3de2333b0821a1aaeb3ef98046212b5bf22b596c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>44214: &lt;(...) substitutions shouldn't grab the terminal</title>
<updated>2019-04-10T08:44:58Z</updated>
<author>
<name>Eric Freese</name>
<email>ericdfreese@gmail.com</email>
</author>
<published>2019-04-09T18:34:04Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=5c165453ab1d0a91a0b7a5c8493bafddad4eaab2'/>
<id>urn:sha1:5c165453ab1d0a91a0b7a5c8493bafddad4eaab2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>44132: don't hash commands beginning with /</title>
<updated>2019-03-19T14:09:50Z</updated>
<author>
<name>Charles Blake</name>
<email>charlechaud@gmail.com</email>
</author>
<published>2019-03-16T20:01:57Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=084bf17c4bc28a2a651c69fdc9a5bdd6473c3b04'/>
<id>urn:sha1:084bf17c4bc28a2a651c69fdc9a5bdd6473c3b04</id>
<content type='text'>
</content>
</entry>
<entry>
<title>43723: file descriptor could leak on fork error</title>
<updated>2018-11-09T11:02:24Z</updated>
<author>
<name>Kamil Dudka</name>
<email>kdudka@redhat.com</email>
</author>
<published>2018-11-07T13:04:54Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=d1095bdf744c190c7e8ff126ba02caea8f63880d'/>
<id>urn:sha1:d1095bdf744c190c7e8ff126ba02caea8f63880d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>43660: extend 43653 when final exit is implicit.</title>
<updated>2018-10-09T13:38:26Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2018-10-09T13:38:26Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=bbccbe0c85887bfc15c57a0c5eb97e59f7cb9fa7'/>
<id>urn:sha1:bbccbe0c85887bfc15c57a0c5eb97e59f7cb9fa7</id>
<content type='text'>
Combine logic for case after committed to exit (shell_exiting) with
case where exit occurred in a function we nee to unwind (exit_pending).

Add sarky note for future generations to be confused at.
</content>
</entry>
<entry>
<title>43489: Add error checking on a new write() call.</title>
<updated>2018-09-25T19:35:15Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>d.s@daniel.shahaf.name</email>
</author>
<published>2018-09-18T18:57:12Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=db67cc2f4b5b1282cb2be719ebb6bfd5a52f9169'/>
<id>urn:sha1:db67cc2f4b5b1282cb2be719ebb6bfd5a52f9169</id>
<content type='text'>
Silences a compiler warning (write(2) is declared with warn_unused_result
in current Debian Unstable).
</content>
</entry>
<entry>
<title>43464: Another attachtty() fix.</title>
<updated>2018-09-16T18:13:38Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2018-09-16T18:13:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=551ff842721d6ca83727dbe6cd40178f46cc8201'/>
<id>urn:sha1:551ff842721d6ca83727dbe6cd40178f46cc8201</id>
<content type='text'>
If list_pipe_job triggered more than once we need to know
the most recent process group leader, so record that
both if the attach happened in the main shell on in
entersubsh().

Also don't pass back proocess group for ESUB_ASYNC subshells.
</content>
</entry>
<entry>
<title>43446: More entersubsh() / addproc() wiring.</title>
<updated>2018-09-12T08:22:10Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2018-09-12T08:22:10Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=7c5241edf37fbafc9e1f833aede76c524ce62bcb'/>
<id>urn:sha1:7c5241edf37fbafc9e1f833aede76c524ce62bcb</id>
<content type='text'>
Fix additional races by passing back use of list_pipe_job
from subshell.
</content>
</entry>
<entry>
<title>43409: Fix process group setting in main shell.</title>
<updated>2018-09-07T16:49:35Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2018-09-07T16:49:35Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=0d5275c6b94e798e813092f37bd40429bd9b0f8b'/>
<id>urn:sha1:0d5275c6b94e798e813092f37bd40429bd9b0f8b</id>
<content type='text'>
A newly forked subshell now reports back the process group it
will be using for the main shell to record.

This prevents an error where the shell incorrectly thought an
exiting process owned the terminal and so grabbed it back,
putting the foreground process into the background.
</content>
</entry>
<entry>
<title>CVE-2018-0502, CVE-2018-13259: Fix two security issues in shebang line parsing.</title>
<updated>2018-09-03T15:07:47Z</updated>
<author>
<name>Anthony Sottile</name>
<email>asottile@umich.edu</email>
</author>
<published>2018-09-03T14:39:25Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=1c4c7b6a4d17294df028322b70c53803a402233d'/>
<id>urn:sha1:1c4c7b6a4d17294df028322b70c53803a402233d</id>
<content type='text'>
See NEWS for more information.

Patch by Anthony Sottile and Buck Evan.
</content>
</entry>
<entry>
<title>43156, 43157: Need to allow for extra space in gethere().</title>
<updated>2018-07-10T13:42:02Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2018-07-10T13:42:02Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=3e9fc32fc3d6ac4931f82d666fa4f2f52ac5f65b'/>
<id>urn:sha1:3e9fc32fc3d6ac4931f82d666fa4f2f52ac5f65b</id>
<content type='text'>
The point can now increment twice per iteration.
</content>
</entry>
<entry>
<title>users/23531: Error exit/return fixes.</title>
<updated>2018-07-09T10:07:53Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2018-07-09T10:06:07Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=17178db1a4d8700c9e10862d0dd496f92c53f1cd'/>
<id>urn:sha1:17178db1a4d8700c9e10862d0dd496f92c53f1cd</id>
<content type='text'>
Fix regression with trap on left hand side of pipe.

Fix forced return from shell structure within nested function.

Fix tests exiting too early.

Add new test case.
</content>
</entry>
<entry>
<title>users/23472: Add $sysparams[procsubstpid] to zsh/system</title>
<updated>2018-06-15T14:02:36Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2018-06-15T14:02:36Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=9408c4825b339c43299a39b46811fc6153740e01'/>
<id>urn:sha1:9408c4825b339c43299a39b46811fc6153740e01</id>
<content type='text'>
</content>
</entry>
<entry>
<title>42101 (tweaked): assigning shell status to array was broken</title>
<updated>2018-05-11T08:29:14Z</updated>
<author>
<name>dana</name>
<email>dana@dana.is</email>
</author>
<published>2017-12-10T18:17:30Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=805192311f3426b852026b03e8ca4b421189fcf1'/>
<id>urn:sha1:805192311f3426b852026b03e8ca4b421189fcf1</id>
<content type='text'>
</content>
</entry>
<entry>
<title>unposted (branch fork_early): Fork early for pipelines.</title>
<updated>2018-05-01T09:27:35Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2018-04-20T10:17:06Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=faf0035e532cde45528806e7a05ad28a0ab7c0fb'/>
<id>urn:sha1:faf0035e532cde45528806e7a05ad28a0ab7c0fb</id>
<content type='text'>
If executing a command not at the end of a pipeline, and
not optimised in the calling code, we can fork before
"prefork" substitutions, at the same point as
for background commands.

Move fork before our preliminary scan of arguments to find
a command: in the cases of early fork
we don't need this information before forking.

Ensure we _exit if forked in execcmd_exec().

Rationalise use of forks and pipes.

Ensure we _exit instead of returning from execcmd_exec() if we
have forked.  Before the optimisation code after the fork always ran
to the check at the end, but that code is overkill for the logic
between the early fork and the existing one.

Remove old workaround to fork in caller of execcmd for current shell
constructs as no longer needed with early fork below.

Close input of newly created pipe on fork (destined for RHS of pipe
which we never execute): this replaces a workaround from
zsh-workers/32171, commit 9887fc3d7b.

Set last1 on early fork as needed by some instances of shell
constructs on LHS of pipeline to know they are exiting.
</content>
</entry>
<entry>
<title>47201: fix 42355 for multiple backslashes</title>
<updated>2018-04-29T19:05:39Z</updated>
<author>
<name>Ricardo Giorni</name>
<email>ricardo@giorni.co</email>
</author>
<published>2018-04-29T19:05:39Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=f7519811e1bbe990ff1c3d499ffb70cfc2d034f8'/>
<id>urn:sha1:f7519811e1bbe990ff1c3d499ffb70cfc2d034f8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>unposted: Correct process substitution buffer size in the PATH_DEV_FD codepath.</title>
<updated>2018-04-25T15:31:39Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>d.s@daniel.shahaf.name</email>
</author>
<published>2018-04-25T15:31:36Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=76b5b3a504f5a2d9062a82dec279c3d88d57e8ee'/>
<id>urn:sha1:76b5b3a504f5a2d9062a82dec279c3d88d57e8ee</id>
<content type='text'>
</content>
</entry>
<entry>
<title>42708: fix for process substitution.</title>
<updated>2018-04-24T10:48:11Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2018-04-24T09:57:03Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=95d861d0283e47c64980c844d66be44c6c4aad8a'/>
<id>urn:sha1:95d861d0283e47c64980c844d66be44c6c4aad8a</id>
<content type='text'>
Don't close associated file descriptors in the closem()
tidy up function as they should remain visible to external
processes.  Override if about to exit.

Unit test for the failing case: note this relies on the
existence of /proc/self/fd or equivalent.
</content>
</entry>
<entry>
<title>42684 (with extra comments): Fork early if in bg.</title>
<updated>2018-04-20T09:36:39Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2018-04-20T09:33:10Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=9e2afb92987d7fd96a838c15b6641cc1b634a825'/>
<id>urn:sha1:9e2afb92987d7fd96a838c15b6641cc1b634a825</id>
<content type='text'>
In execcmd the case of running the last command in a pipeline
asynchronously for the purpose of &amp; and &amp;! is easy to work out,
and we can avoid side effects and unnecessary execution time in
the parent shell by forking earlier.
</content>
</entry>
<entry>
<title>42630: Improve process group handling in pipelines.</title>
<updated>2018-04-17T16:14:20Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.stephenson@samsung.com</email>
</author>
<published>2018-04-13T11:09:34Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=3c74891fcd68d37c1629943f703ac70428e3ce9f'/>
<id>urn:sha1:3c74891fcd68d37c1629943f703ac70428e3ce9f</id>
<content type='text'>
If process group leader exits, allow a newly forked process to become
process leader.  If a foreground job, reattach the shell to the
terminal until that happens.

Unblock signals when reading output for command subsitution so that
we can do this reattaching immediately.
</content>
</entry>
<entry>
<title>42624 (plus test): avoid freeing memory that's still needed</title>
<updated>2018-04-12T21:15:29Z</updated>
<author>
<name>Oliver Kiddle</name>
<email>okiddle@yahoo.co.uk</email>
</author>
<published>2018-04-12T21:15:04Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=65b265f3c0877823b72ffff6ba1083972c49a3a8'/>
<id>urn:sha1:65b265f3c0877823b72ffff6ba1083972c49a3a8</id>
<content type='text'>
This was occurring in a multiple function definition where a
function name is duplicated.
</content>
</entry>
<entry>
<title>42518, CVE-2018-1071: check bounds when copying path in hashcmd()</title>
<updated>2018-03-24T14:04:02Z</updated>
<author>
<name>Oliver Kiddle</name>
<email>okiddle@yahoo.co.uk</email>
</author>
<published>2018-03-24T14:02:41Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=679b71ec4d852037fe5f73d35bf557b0f406c8d4'/>
<id>urn:sha1:679b71ec4d852037fe5f73d35bf557b0f406c8d4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>42469: necessary repairs to 42465 found by "make check"</title>
<updated>2018-03-18T23:49:42Z</updated>
<author>
<name>Stephane Chazelas</name>
<email>stephane.chazelas@gmail.com</email>
</author>
<published>2018-03-18T23:49:42Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=d2350a1e8027e9550996464739885f5ec468bd83'/>
<id>urn:sha1:d2350a1e8027e9550996464739885f5ec468bd83</id>
<content type='text'>
</content>
</entry>
<entry>
<title>42465: Pass up error status from readoutput().</title>
<updated>2018-03-15T09:21:47Z</updated>
<author>
<name>Stephane Chazelas</name>
<email>stephane.chazelas@gmail.com</email>
</author>
<published>2018-03-14T14:42:48Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=1219eae82938c918f5183e89af4a54296256372f'/>
<id>urn:sha1:1219eae82938c918f5183e89af4a54296256372f</id>
<content type='text'>
This improves the consistency of error reporting from $(...) constructs.
</content>
</entry>
<entry>
<title>42355: Fix use of backslashes on here doc input.</title>
<updated>2018-02-12T10:06:45Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2018-02-12T10:06:45Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=47aa60950c488a49dc245659c126e3078bf499d0'/>
<id>urn:sha1:47aa60950c488a49dc245659c126e3078bf499d0</id>
<content type='text'>
Handling of white space in particular was confusing and inconsistent
with other shells.
</content>
</entry>
<entry>
<title>42043: ZSH_DEBUG_CMD should not WARN_CREATE_GLOBAL</title>
<updated>2018-01-14T11:07:32Z</updated>
<author>
<name>Barton E. Schaefer</name>
<email>schaefer@zsh.org</email>
</author>
<published>2018-01-14T11:07:32Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=b476d89fa279469fd24926db7f2b117a318ff38b'/>
<id>urn:sha1:b476d89fa279469fd24926db7f2b117a318ff38b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>33395: Improvments for function managment.</title>
<updated>2017-12-22T19:51:04Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2017-12-22T19:51:04Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=8ec3d17b4ba5f19ae24695c9532606f7f266e1f1'/>
<id>urn:sha1:8ec3d17b4ba5f19ae24695c9532606f7f266e1f1</id>
<content type='text'>
Functions defined inside other fucntions needs file line number
adding.  Particularly useful for anonymous fucntions.

Add flag to indicate a function is anonymous.  Done up to now
by comparing the name to a pointer but this is more consistent.
</content>
</entry>
<entry>
<title>users/13148 (and workers/42060): Abort the command line when replying</title>
<updated>2017-12-20T04:13:01Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>d.s@daniel.shahaf.name</email>
</author>
<published>2017-12-06T22:49:19Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=a9e60dc1794dadaae6d73a1de3f5cf8418336771'/>
<id>urn:sha1:a9e60dc1794dadaae6d73a1de3f5cf8418336771</id>
<content type='text'>
"[n] No" to the RM_STAR_SILENT prompt.

Patch by Stephane, rebased by Mikael.
</content>
</entry>
<entry>
<title>42123 (tweaked): take account of Dash in function names.</title>
<updated>2017-12-15T09:00:37Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-12-15T08:56:19Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=aab0f6d763b0eb3eb964c576953c9dd0b90916ae'/>
<id>urn:sha1:aab0f6d763b0eb3eb964c576953c9dd0b90916ae</id>
<content type='text'>
Needed when comparing word code function name with autoload request.

Add test.
</content>
</entry>
<entry>
<title>41802 (minor tweaks): use heap during shell function call.</title>
<updated>2017-10-04T08:18:51Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-10-04T08:18:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=e573857a033504f7918c4a2309151329820f115f'/>
<id>urn:sha1:e573857a033504f7918c4a2309151329820f115f</id>
<content type='text'>
Replaces stack for more efficient memory management.

Also fix debug message when FUNCNEST is increased.
</content>
</entry>
<entry>
<title>41787 (plus minor tweaks): use $FUNCSTACK for function nesting depth.</title>
<updated>2017-10-02T08:44:26Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-09-29T15:46:01Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=174e560a23e40725cd0b50669a52d831342e5246'/>
<id>urn:sha1:174e560a23e40725cd0b50669a52d831342e5246</id>
<content type='text'>
Initialised from existing configuration value.
</content>
</entry>
<entry>
<title>41789: Don't save fd if -1.</title>
<updated>2017-09-29T15:29:49Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-09-29T15:29:49Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=a1276c88e1137c643bb8055d719afc17cb37bf0f'/>
<id>urn:sha1:a1276c88e1137c643bb8055d719afc17cb37bf0f</id>
<content type='text'>
We try to move an fd which isn't opend but it will feel.
This needs handling specially in the new code for marking
saved fd's.
</content>
</entry>
<entry>
<title>41767: preserve nonzero exit status on interrupt</title>
<updated>2017-09-28T03:34:11Z</updated>
<author>
<name>Barton E. Schaefer</name>
<email>schaefer@zsh.org</email>
</author>
<published>2017-09-28T03:34:11Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=7a0718796a56be64b5498806b4d8491ef2f9bb7d'/>
<id>urn:sha1:7a0718796a56be64b5498806b4d8491ef2f9bb7d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>41761: Ensure status from interrupt is propagated by builtin</title>
<updated>2017-09-26T08:26:57Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-09-26T08:26:57Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=03af5fdbeed0930b5f1d3715ee1080fb993ed145'/>
<id>urn:sha1:03af5fdbeed0930b5f1d3715ee1080fb993ed145</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Updates for ksh array element syntax.</title>
<updated>2017-09-24T16:33:07Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2017-09-23T17:17:51Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=85b0dd71335c8ee6d4925be6b590cbe643edf196'/>
<id>urn:sha1:85b0dd71335c8ee6d4925be6b590cbe643edf196</id>
<content type='text'>
Move detection of key/value pairs down into prefork().

Detect normal array assignment and [key]=val array assignemnt
separately.  Mark key / value pairs with Marker and pass up flag.  Deal
with marked triads specially later on.
</content>
</entry>
<entry>
<title>41736: NO_INTERACTIVE_COMMENTS in $(...)</title>
<updated>2017-09-20T17:17:59Z</updated>
<author>
<name>Barton E. Schaefer</name>
<email>schaefer@zsh.org</email>
</author>
<published>2017-09-20T17:17:59Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=d1914c5af484791ee5d8f20261c08cecf113d3a9'/>
<id>urn:sha1:d1914c5af484791ee5d8f20261c08cecf113d3a9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>First go at var=([key]=value) syntax.</title>
<updated>2017-09-13T19:54:00Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2017-09-13T19:54:00Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=54b395844030342213cacba4c569a6c5e6781c46'/>
<id>urn:sha1:54b395844030342213cacba4c569a6c5e6781c46</id>
<content type='text'>
Works for both normal and typeset case, also var+=...

Still to do: allow to be mixed with straight array assignment,
improve typeset -p, implement [key]+=value.
</content>
</entry>
<entry>
<title>41662: exec -a arguments weren't sanitised</title>
<updated>2017-09-10T17:02:52Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2017-09-10T17:02:52Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=c9df6bc8d46415e270273777c80025948762e897'/>
<id>urn:sha1:c9df6bc8d46415e270273777c80025948762e897</id>
<content type='text'>
</content>
</entry>
<entry>
<title>41608 (plus tests): restore ERR_EXIT before function.</title>
<updated>2017-08-29T18:52:18Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2017-08-27T19:28:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=7d1877da4e6fabde8f0b5eb2f9a9f03d83e6c28d'/>
<id>urn:sha1:7d1877da4e6fabde8f0b5eb2f9a9f03d83e6c28d</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>41590 modified as 41595: make ERR_RETURN more logical.</title>
<updated>2017-08-24T18:46:20Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2017-08-24T18:46:20Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=97d4bdbc7e86e6e8da0d4a059b118ffab289d3a9'/>
<id>urn:sha1:97d4bdbc7e86e6e8da0d4a059b118ffab289d3a9</id>
<content type='text'>
It now operates separately at each function depth.

To keep ERR_EXIT global, make the noerrexit variable usd bit flags.

Extend tests.
</content>
</entry>
<entry>
<title>posted but has not shown up: fix fd problem in subshell.</title>
<updated>2017-08-15T19:49:23Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2017-08-15T19:49:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=ddb86759012992fa6471bd738f906a4ed434b69f'/>
<id>urn:sha1:ddb86759012992fa6471bd738f906a4ed434b69f</id>
<content type='text'>
Record fd's that have been saved in fdtable and if the shell
forks close them as they will never be restored.
</content>
</entry>
<entry>
<title>41464, 41466: With POSIX_BUILTINS, exec only executes sexternal commands.</title>
<updated>2017-07-27T08:22:04Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-07-26T15:56:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=d4b94b5e8388c744a1d879fecb5af957b170c4c1'/>
<id>urn:sha1:d4b94b5e8388c744a1d879fecb5af957b170c4c1</id>
<content type='text'>
Document the default behaviour and add a test.
</content>
</entry>
<entry>
<title>41317: use heap allocation in getoutputfile() to plug memory leak</title>
<updated>2017-06-19T23:06:38Z</updated>
<author>
<name>Barton E. Schaefer</name>
<email>schaefer@zsh.org</email>
</author>
<published>2017-06-19T23:06:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=a5ed661f256b424a2db60b9dbacadc94fe78d843'/>
<id>urn:sha1:a5ed661f256b424a2db60b9dbacadc94fe78d843</id>
<content type='text'>
Heap is usable ever since addfilelist() of workers/31528 (commit 3c573222).
</content>
</entry>
<entry>
<title>41043: Close pipes in shell when disowning background job.</title>
<updated>2017-05-03T10:30:15Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-05-03T10:30:15Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=21b195562a54005b4341a037d2c02078787b7f2a'/>
<id>urn:sha1:21b195562a54005b4341a037d2c02078787b7f2a</id>
<content type='text'>
This was missing in the case of &amp;,, causing a file descriptor leak.
</content>
</entry>
<entry>
<title>41020: Fix "command -p"; "-p" was incorrectly left in command arguments</title>
<updated>2017-04-28T09:22:43Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-04-28T09:20:35Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=ed4e37e45c2f5761981cdc6027a5d6abc753176a'/>
<id>urn:sha1:ed4e37e45c2f5761981cdc6027a5d6abc753176a</id>
<content type='text'>
Also add tests for known precommand modifier issues.
</content>
</entry>
<entry>
<title>41012: Fix premature exit from nested function in EXIT trap.</title>
<updated>2017-04-27T17:56:18Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2017-04-27T17:56:18Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=d7110d8f01cae8c8d51c7abd0255f533cd8b8623'/>
<id>urn:sha1:d7110d8f01cae8c8d51c7abd0255f533cd8b8623</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>41008: Handle expansions for precommand modifiers</title>
<updated>2017-04-26T08:44:38Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-04-26T08:44:38Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=408b92b168078a338f5fc2c2f95f39f8aa8e5f67'/>
<id>urn:sha1:408b92b168078a338f5fc2c2f95f39f8aa8e5f67</id>
<content type='text'>
</content>
</entry>
<entry>
<title>40933: Ensure we get job text in sourced files.</title>
<updated>2017-04-04T17:54:10Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2017-04-04T17:54:10Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=8b5102ccf5f5b240ab35646c2d72a22c32c4b916'/>
<id>urn:sha1:8b5102ccf5f5b240ab35646c2d72a22c32c4b916</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>40796: MAGIC_EQUAL_SUBST not needed with parsed assignment.</title>
<updated>2017-03-09T09:52:23Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-03-09T09:52:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=64559abc1fdd375e5672a03c29c20a7a49259e29'/>
<id>urn:sha1:64559abc1fdd375e5672a03c29c20a7a49259e29</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>40760: Always tokenize unquoted - to Dash.</title>
<updated>2017-03-07T10:43:58Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-03-07T10:43:58Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=f3f8537cfa05414ad14494e809d9ebfeef86ebbc'/>
<id>urn:sha1:f3f8537cfa05414ad14494e809d9ebfeef86ebbc</id>
<content type='text'>
This fixes use of pattern match character ranges in unusual contexts.

Attempt to detect a tokenized - in cases where we don't care.
</content>
</entry>
<entry>
<title>40654: exit cleanly from special POSIXBUILTINS in subshells</title>
<updated>2017-03-04T23:25:17Z</updated>
<author>
<name>Barton E. Schaefer</name>
<email>schaefer@zsh.org</email>
</author>
<published>2017-03-04T23:25:17Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=5e61eaf855dc4bc94c35e9e950fb2e1d7f88d5af'/>
<id>urn:sha1:5e61eaf855dc4bc94c35e9e950fb2e1d7f88d5af</id>
<content type='text'>
This patch overloads the zsh_subshell counter which is meant for $ZSH_SUBSHELL, but no one has suggested a working alternate test.
</content>
</entry>
<entry>
<title>40576 (tweaked): entersubsh():  unblock any signals that were blocked for trap handling</title>
<updated>2017-02-20T21:26:49Z</updated>
<author>
<name>Barton E. Schaefer</name>
<email>schaefer@zsh.org</email>
</author>
<published>2017-02-20T00:45:10Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=9f447578f03b4c5040045a15808511e1d3c9919e'/>
<id>urn:sha1:9f447578f03b4c5040045a15808511e1d3c9919e</id>
<content type='text'>
Also small improvement to loop that resets trap handlers
</content>
</entry>
<entry>
<title>40391: Add WARN_NESTED_VAR option and functions -W.</title>
<updated>2017-01-23T09:50:57Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-01-23T09:50:57Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=c861b17bbf002129f29e22ab625fd3516ba792a2'/>
<id>urn:sha1:c861b17bbf002129f29e22ab625fd3516ba792a2</id>
<content type='text'>
These are companions to WARN_CREATED_GLOBAL, warning when a variable
from an enclosing scope is altered.
</content>
</entry>
<entry>
<title>40353 with tweaks to whence -v: extend directory cache use.</title>
<updated>2017-01-16T10:31:56Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-01-16T10:31:56Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=f90a0447aada3ad2fa114210c62b855a3e60cb1d'/>
<id>urn:sha1:f90a0447aada3ad2fa114210c62b855a3e60cb1d</id>
<content type='text'>
Now used for all autoloaded functions after load, including those
where the file was found along fpath, reducing duplication of
directory names.
</content>
</entry>
<entry>
<title>40342: Add directory name cache for autoload file paths.</title>
<updated>2017-01-12T20:56:20Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2017-01-12T20:56:20Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=178e62dbfe464b56e3f12b01a159781d39b7bd85'/>
<id>urn:sha1:178e62dbfe464b56e3f12b01a159781d39b7bd85</id>
<content type='text'>
This renders "autoload /blah/blah/*" as efficient as use of
fpath.
</content>
</entry>
<entry>
<title>40335: More care with autoload function path.</title>
<updated>2017-01-12T13:54:29Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-01-12T13:54:29Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=33799ae2b00c09445e2e47720bc740ec434416e4'/>
<id>urn:sha1:33799ae2b00c09445e2e47720bc740ec434416e4</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>unposted: more care with shell function filename.</title>
<updated>2017-01-11T12:11:22Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-01-11T12:11:22Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=47b7f2adef9d7e399af9d06a67b4db1ad55d4f32'/>
<id>urn:sha1:47b7f2adef9d7e399af9d06a67b4db1ad55d4f32</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Add features associated with autoloading a function using an absolute</title>
<updated>2017-01-11T11:26:13Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2017-01-11T11:26:13Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=f26d1ba6b01a358c83f28219c7a01e546e84d2ee'/>
<id>urn:sha1:f26d1ba6b01a358c83f28219c7a01e546e84d2ee</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Additional case for ERR_RETURN and ERR_EXIT.</title>
<updated>2016-12-05T12:29:23Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2016-12-05T12:29:23Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=0e4aa6f2f64fb276537adecfe755a752a3fcccb1'/>
<id>urn:sha1:0e4aa6f2f64fb276537adecfe755a752a3fcccb1</id>
<content type='text'>
Don't trigger just because status is non-zero at end of
current shell group.
</content>
</entry>
<entry>
<title>Extra case for ERR_RETURN and ERR_EXIT.</title>
<updated>2016-12-05T11:21:01Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2016-12-05T11:21:01Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=c03228f9ed28dfaa9ded49eabb93c04def5ac547'/>
<id>urn:sha1:c03228f9ed28dfaa9ded49eabb93c04def5ac547</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>39958: Add extra byte to PATH_MAX allocations.</title>
<updated>2016-11-17T19:49:17Z</updated>
<author>
<name>Peter Stephenson</name>
<email>p.w.stephenson@ntlworld.com</email>
</author>
<published>2016-11-17T19:49:17Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=a62e1640bcafbb82d86ea8d8ce057a83c4683d60'/>
<id>urn:sha1:a62e1640bcafbb82d86ea8d8ce057a83c4683d60</id>
<content type='text'>
This ensures we've got enough space for a null, although this
isn't always needed.
</content>
</entry>
<entry>
<title>39915: whence: Honor PATH_DIRS option for arguments that start with './' or '../'.</title>
<updated>2016-11-17T15:28:42Z</updated>
<author>
<name>Daniel Shahaf</name>
<email>d.s@daniel.shahaf.name</email>
</author>
<published>2016-11-11T02:25:21Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=c392e6c620163b84798e705dfd6608d6429b9677'/>
<id>urn:sha1:c392e6c620163b84798e705dfd6608d6429b9677</id>
<content type='text'>
While here, add some docstrings.
</content>
</entry>
<entry>
<title>39901: No EXIT trap on LHS of pipeline.</title>
<updated>2016-11-10T10:37:27Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2016-11-10T10:37:27Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=5f1700755f12677b608adef88c39e08df99c41f2'/>
<id>urn:sha1:5f1700755f12677b608adef88c39e08df99c41f2</id>
<content type='text'>
There is a special case if the LHS is a shell construct.
Add unit tests for both cases.
</content>
</entry>
<entry>
<title>39571: Fix ERR_EXIT bug with &amp;&amp; and function.</title>
<updated>2016-10-05T16:46:42Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2016-10-05T16:46:42Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=bcb52460f3069e2e4e3b05f966a2efd40471e366'/>
<id>urn:sha1:bcb52460f3069e2e4e3b05f966a2efd40471e366</id>
<content type='text'>
"foo &amp;&amp; bar" inside a function could cause the code outside
the function not to perform ERR_EXIT or ERR_RETURN when needed.
</content>
</entry>
<entry>
<title>39568: "! &lt;complex-command&gt;" suppresses ERR_EXIT</title>
<updated>2016-10-05T12:52:31Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2016-10-05T12:52:31Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=0854ee56bc559d7fd614eb7d59b61da84a9ce51f'/>
<id>urn:sha1:0854ee56bc559d7fd614eb7d59b61da84a9ce51f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>39566: Improve usefulness of command_not_found_handler.</title>
<updated>2016-10-05T11:14:43Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2016-10-05T11:14:43Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=dc517212caf3a8263cea9587bc6e96f7ff129b59'/>
<id>urn:sha1:dc517212caf3a8263cea9587bc6e96f7ff129b59</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>39545: Add some missing unqueue_signals().</title>
<updated>2016-10-03T12:43:20Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2016-10-03T12:43:20Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=4ab3fcc90d928d200f9e70c81189079c3316b42d'/>
<id>urn:sha1:4ab3fcc90d928d200f9e70c81189079c3316b42d</id>
<content type='text'>
All of these are added simply to fit existing logic in other branches.
</content>
</entry>
<entry>
<title>39521: Refactor start of execcmd().</title>
<updated>2016-10-03T08:59:01Z</updated>
<author>
<name>Peter Stephenson</name>
<email>pws@zsh.org</email>
</author>
<published>2016-10-03T08:59:01Z</published>
<link rel='alternate' type='text/html' href='http://git.sudomsg.com/mirror/zsh/commit/?id=36a11804b467d7553f8fdaed9320869d8d984f77'/>
<id>urn:sha1:36a11804b467d7553f8fdaed9320869d8d984f77</id>
<content type='text'>
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.
</content>
</entry>
</feed>
