Commit graph

3927 commits

Author SHA1 Message Date
Peter Stephenson
c557cee1a6 24581: Fix array assignments in shell word splitting and completion.
Assignments after the first were not recognised as such as without
the full parser the state didn't return to command position.
Fix this in bufferwords() and the completion miniparser.
2019-12-31 18:35:06 +00:00
dana
ed21a7b700 unposted: zerrmsg(): Fix macro guard missed in previous commit 2019-12-26 14:57:07 -06:00
Daniel Shahaf
81185f4c61 internal: Allow %L in zerrmsg() in non-debug builds, too.
This will let error messages include long integers.
2019-12-26 11:49:45 +00:00
Peter Stephenson
fd068221b7 45083: Add signal protection to execarith().
Otherwise we could get re-entrancy in memory functions when
setting variables.
2019-12-18 10:51:59 +00:00
Daniel Shahaf
a90e93f454 45076: internal: Simplify handling of try_tryflag. No functional change.
try_tryflag isn't assigned anywhere, other than at initialization and by these
lines, so we don't need to save and restore the value.
2019-12-18 06:01:55 +00:00
Daniel Shahaf
ae7e291873 45066: internal: Document forklevel, locallevel, and exit_pending. 2019-12-18 06:01:50 +00:00
Daniel Shahaf
a370f24137 45065: Make 'make -s' print nothing when it does nothing. 2019-12-18 06:01:49 +00:00
Daniel Shahaf
3c4b3c8798 45064: Fix the mktemp() warning, in debug builds only.
On Linux, linking to mktemp() generates the following warning:
.
    utils.o: In function `gettempname':
    ./Src/utils.c:2229: warning: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp'

The warning cannot be disabled.

Work around that by using mkstemp() instead, and massage its output so
it behaves like mktemp().  See the new comment for further details.
2019-12-18 06:01:47 +00:00
Daniel Shahaf
8bc4400762 45058: internal: Add symbolic names to possible values of zexit()'s "from_where" parameter. No functional change. 2019-12-17 05:12:36 +00:00
Daniel Shahaf
06c2a625b3 unposted: Update comment to reflect variable rename in 41012 (= zsh-5.3.1-182-gd7110d8f0). 2019-12-17 02:46:32 +00:00
Peter Stephenson
1baf0d1f55 45025: fix re-entrancy problem with memory management in readoutput().
This could cause a signal received during $(...) to corrupt memory.
2019-12-15 19:04:04 +00:00
Peter Stephenson
cb4dc95643 45009: POSIX_CD needs to suppress some forms of option.
Otherwise forms of argument allowed by POSIX are interpreted as
options instead.
2019-12-12 10:47:00 +00:00
Peter Stephenson
273d669a56 45001: Fix zero-length matches with ${...%...}
As the shortest match is preferred, zero-length matches beat any other.
2019-12-12 10:23:47 +00:00
Martijn Dekker
c578f0a08b 45004: Fix typos in comments 2019-12-11 02:37:39 +00:00
Peter Stephenson
ae58388619 44997: GLOB_COMPLETE fix for compctl file completion.
Dashes could cause problems in directory prefixes.
2019-12-10 10:32:48 +00:00
Oliver Kiddle
06e27e940a 44976: fixup describe-key-briefly for visual mode 2019-12-04 22:55:52 +01:00
Daniel Shahaf
2acbae3bad unposted: zstyle: Add a unit test and some comments. 2019-12-01 04:00:17 +00:00
Daniel Shahaf
87db974a84 users/24451: zgetcwd: Add a guard against returning an empty string. 2019-11-19 19:20:38 +00:00
Peter Stephenson
88d14451b0 users/24445: Add :P modifier to history code.
This was in the glob qualifier and variable code but got missed out
of the separate history modifier function.
2019-11-18 15:26:17 +00:00
Peter Stephenson
8c25d92e11 44864: Avoid inifinite loop in tty init.
If we can't grab the terminal in interactive mode, give
up after 100 goes.  This is a completely arbitrary choice;
we simply don't know what in the system could change the
result of looping further.
2019-10-28 11:56:19 +00:00
romkatv
6c6200520a unposted: fix indentation (whitespace-only change)
Indentatin in moveto was broken by 3eea35d0 (my bad), making it
difficult to read. This commit reverts it to what it used ot be.
While at it, fix indentation in a few other places in the same
file.
2019-10-28 12:00:55 +01:00
_RuRo_ (Андрей Стоцкий)
59901e61cb 44841: Better checking of errors from "nice" 2019-10-16 17:41:41 +01:00
Daniel Shahaf
72c6dbe1be unposted: functions -c: Fix typo 2019-10-10 03:45:02 +00:00
romkatv
243e46998e bug fix: infinite loop when tty disappears
When TTY disappears and there is at least one fd watcher, raw_getbyte() can
enter an infinite loop where it keeps calling poll() over and over again.

To reproduce, open a terminal, start zsh and type this:

  rm -f /tmp/fifo
  mkfifo /tmp/fifo
  exec 3<>/tmp/fifo
  do-nothing() {}
  zle -F 3 do-nothing

Then make TTY disappear. For example, kill the parent with `kill -9 $PPID`
and close the terminal window if it's still there. Observe that zsh is
consiming 100% CPU. Note that do-nothing() never gets called.

This patch makes the poll() loop in raw_getbyte() terminate when TTY is
signalling POLLHUP. This makes the behavior consistent with the case where
TTY disappears while no fd watchers are installed.
2019-10-04 14:18:18 +02:00
Jun-ichi Takimoto
a98e13ed1f 44714: Take account of CDABLE_VARS while checking spelling 2019-08-29 18:21:50 +09:00
Jun-ichi Takimoto
b82c24801f 44710: support RLIMIT_UMTXP on FreeBSD 2019-08-28 10:02:29 +09:00
Jun-ichi Takimoto
3da3fe770a 44709: incluce sys/capability.h only if HAVE_CAP_GET_PROC is defined 2019-08-28 09:39:13 +09:00
Peter Stephenson
d946f22a4c 44664: Fix problem with temporary assignment.
"foo=bar builtin" inside a function lost any variable from
enclosing scope.
2019-08-14 15:16:59 +01:00
Peter Stephenson
4fae525726 Copy functions using functions -c old new.
Documentation and test.
2019-08-03 19:53:51 +01:00
Peter Stephenson
e0d063a2ad 44635: Don't apply STAT_NOPRINT to backgrounded jobs 2019-08-03 19:48:18 +01:00
Shlomi Fish
90fa6ee042 44637: = doesn't need quoting in awk regexp.
Known to cause warnings in gawk 5.
2019-08-03 10:57:02 +01:00
Kamil Dudka
d6a9e222ec 44582: Fix foregoing commit to use DPUTS() better 2019-07-26 16:36:14 +01:00
Kamil Dudka
f9cd218787 44566: make sure Zle doesn't crash if history entry not found 2019-07-24 17:14:06 +01:00
Peter Stephenson
8cbbc04d97 44509: Prevent crash with modified path / PATH combination.
Crash came from "fn() { typeset -U path=($path); unset PATH; }".

Note PATH unset is global as only path was made local.
2019-07-15 09:44:47 +01:00
Bart Schaefer
5415e1d4df 44502: Quote function name for "autoload -X" 2019-07-08 17:56:57 -07:00
Peter Stephenson
3bdf4d6641 44480: Don't automatically close externally visible file descroptors.
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.
2019-07-02 13:42:53 +01:00
Martijn Dekker
700ec49581 44469: correct error on missing option argument 2019-07-01 09:42:22 +01:00
Peter Stephenson
4384fdc7f0 44446: Fix here document with file descriptor declarator.
Add unit test.
2019-06-24 20:19:19 +01:00
Martijn Dekker
1b1cb44161 44443: POSIX allows exporting readonly variables 2019-06-23 18:36:50 +01:00
Peter Stephenson
b8dc5a7f6d 44435: Handling digita arguments for :h and :t.
Pick number of leading or trailing path components to substitute.
Active in history, brace parameters, glob qualifiers.

Add tests for all three environments.
2019-06-20 11:13:05 +01:00
romkatv
80aa807a61 fix multiple bugs in countprompt
1. Height off by one in the presence of meta characters at the end of the line.

The following prompt has height 2 but countprompt used to return 3.

    PROMPT="${(pl.$COLUMNS..-.)}%f"$'\n'

You can observe the effects of the bug with esc-x followed by reset-prompt.

2. Width off by one when a line is broken in the middle of a wide character.

Assuming COLUMNS=79, the following prompt has width 2 but countprompt used to return 0.

    PROMPT="${(pl.40..\u3050.)}" zsh -df

Press ctrl-r or type ls<tab> to observe the effects of the bug.

3. Width off by 1-7 when a line is broken in the middle of a tab.

Assuming COLUMNS=79, the following prompt has width 1 but countprompt used to return 0.

    PROMPT="${(pl.10..\t.)}" zsh -df

Press Ctrl-R or type ls<TAB> to observe the effects of the bug.
2019-06-19 15:56:05 +01:00
Peter Stephenson
4b85edface 44361: Initialise variables in pattern matching.
These are used recursively and it's a bit obscure if there
are case where the value can leak.
2019-05-28 20:53:53 +01:00
romkatv
3eea35d085 fix cursor position with ZLE_RPROMPT_INDENT=0 2019-05-28 09:39:22 +01:00
Oliver Kiddle
a531a1ec2d 44345: fix wordcode traversal where ! without a following command could result in a crash 2019-05-23 01:05:01 +02:00
Oliver Kiddle
3de2333b08 44307: allow for atoi() returning a negative number 2019-05-20 00:14:01 +02:00
Oliver Kiddle
fae7c85331 44284: combination of -T and -p to typeset crashed the shell. 2019-05-14 23:36:59 +02:00
Oliver Kiddle
b5519b372b 44290: job number exceeding int range and wrapping to a negative number crashed the shell 2019-05-14 23:22:24 +02:00
Oliver Kiddle
d66fd7fcf5 44291: printf with argument specifier out of range for an int crashed the shell 2019-05-14 23:18:32 +02:00
Peter Stephenson
30e356eb1a 44296: "typeset Q= {X}" crashed the shell. 2019-05-14 12:10:10 +01:00
Peter Stephenson
95211f87ed 44259: Ensure we can set signals to default even if ignored.
Previously the shell didn't take account of signals marked as

ignored on entry, which was inconsistent with other behaviour.
2019-05-13 09:55:01 +01:00