summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordana <dana@dana.is>2025-05-13 22:11:59 -0500
committerdana <dana@dana.is>2025-05-13 22:14:09 -0500
commita2f390701ad0fe2253c721356138ec21b7120362 (patch)
treec36e6593874965d24be45c6c9b13520384022cc4
parent53602: "typeset -nu" always refers to at a call level above the declaration (diff)
downloadzsh-a2f390701ad0fe2253c721356138ec21b7120362.tar
zsh-a2f390701ad0fe2253c721356138ec21b7120362.tar.gz
zsh-a2f390701ad0fe2253c721356138ec21b7120362.tar.bz2
zsh-a2f390701ad0fe2253c721356138ec21b7120362.tar.lz
zsh-a2f390701ad0fe2253c721356138ec21b7120362.tar.xz
zsh-a2f390701ad0fe2253c721356138ec21b7120362.tar.zst
zsh-a2f390701ad0fe2253c721356138ec21b7120362.zip
53588: zsystem flock: handle optargs in the same word
with small tweak to test, just in case
-rw-r--r--ChangeLog5
-rw-r--r--Src/Modules/system.c6
-rw-r--r--Test/V14system.ztst10
3 files changed, 18 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 4ec70d964..a070e6d4e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2025-05-13 dana@dana.is <dana@dana.is>
+
+ * 53588 (tweaked): Src/Modules/system.c, Test/V14system.ztst:
+ make `zsystem flock` handle optargs in the same word
+
2025-05-12 Bart Schaefer <schaefer@zsh.org>
* 53602: Doc/Zsh/func.yo, Src/params.c, Test/K01nameref.ztst:
diff --git a/Src/Modules/system.c b/Src/Modules/system.c
index 929a8b002..f1c0d7042 100644
--- a/Src/Modules/system.c
+++ b/Src/Modules/system.c
@@ -572,7 +572,7 @@ bin_zsystem_flock(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
/* variable for fd */
if (optptr[1]) {
fdvar = optptr + 1;
- optptr += strlen(fdvar) - 1;
+ optptr += strlen(fdvar);
} else if (*args) {
fdvar = *args++;
}
@@ -592,7 +592,7 @@ bin_zsystem_flock(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
/* timeout in seconds */
if (optptr[1]) {
optarg = optptr + 1;
- optptr += strlen(optarg) - 1;
+ optptr += strlen(optarg);
} else if (!*args) {
zwarnnam(nam, "flock: option %c requires a numeric timeout",
opt);
@@ -622,7 +622,7 @@ bin_zsystem_flock(char *nam, char **args, UNUSED(Options ops), UNUSED(int func))
/* retry interval in seconds */
if (optptr[1]) {
optarg = optptr + 1;
- optptr += strlen(optarg) - 1;
+ optptr += strlen(optarg);
} else if (!*args) {
zwarnnam(nam,
"flock: option %c requires "
diff --git a/Test/V14system.ztst b/Test/V14system.ztst
index 81253324f..bcabe4082 100644
--- a/Test/V14system.ztst
+++ b/Test/V14system.ztst
@@ -148,6 +148,16 @@ F:This timing test might fail due to process scheduling issues unrelated to zsh.
?elapsed time seems OK
F:This timing test might fail due to process scheduling issues unrelated to zsh.
+ (
+ zsystem flock -t 0.1 -i 0.1 -f XYZ $tst_dir/file
+ echo $XYZ
+ zsystem flock -t0.1 -i0.1 -fZYX $tst_dir/file
+ echo $ZYX
+ )
+0:regression: zsystem flock optarg parsing
+*><->
+*><->
+
unset chars REPLY
print -n a few words | sysread -i 0 -c chars
ret=$?