diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2016-09-11 17:22:02 -0700 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2016-09-11 17:22:02 -0700 |
commit | 26b4508ee339d834a500d940827b31c578d49e3e (patch) | |
tree | 67a33bff35ab0798cfee74c0e7d35d36d63e9205 | |
parent | ef019506aeab44d830efccef27a7c9727156300c (diff) | |
download | zsh-26b4508ee339d834a500d940827b31c578d49e3e.tar.gz zsh-26b4508ee339d834a500d940827b31c578d49e3e.tar.xz zsh-26b4508ee339d834a500d940827b31c578d49e3e.zip |
39268: "zsystem flock -t 0 ..." tries only once to flock and immediately returns success or failure
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Src/Modules/system.c | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index c806955f0..05a341def 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2016-09-11 Barton E. Schaefer <schaefer@zsh.org> + + * 39268: Src/Modules/system.c: "zsystem flock -t 0 ..." tries only + once to flock and immediately returns success or failure + 2016-09-11 Vin Shelton <ethersoft@gmail.com> * 39284: Doc/Zsh/compsys.yo: diff --git a/Src/Modules/system.c b/Src/Modules/system.c index 1ee61c00b..afaec262a 100644 --- a/Src/Modules/system.c +++ b/Src/Modules/system.c @@ -521,7 +521,7 @@ static int bin_zsystem_flock(char *nam, char **args, UNUSED(Options ops), UNUSED(int func)) { int cloexec = 1, unlock = 0, readlock = 0; - time_t timeout = 0; + zlong timeout = -1; char *fdvar = NULL; #ifdef HAVE_FCNTL_H struct flock lck; @@ -573,7 +573,7 @@ bin_zsystem_flock(char *nam, char **args, UNUSED(Options ops), UNUSED(int func)) } else { optarg = *args++; } - timeout = (time_t)mathevali(optarg); + timeout = mathevali(optarg); break; case 'u': @@ -650,7 +650,7 @@ bin_zsystem_flock(char *nam, char **args, UNUSED(Options ops), UNUSED(int func)) sleep(1); } } else { - while (fcntl(flock_fd, F_SETLKW, &lck) < 0) { + while (fcntl(flock_fd, timeout == 0 ? F_SETLK : F_SETLKW, &lck) < 0) { if (errflag) return 1; if (errno == EINTR) |