From 3de2333b0821a1aaeb3ef98046212b5bf22b596c Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Mon, 20 May 2019 00:14:01 +0200 Subject: 44307: allow for atoi() returning a negative number --- Src/utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Src/utils.c') diff --git a/Src/utils.c b/Src/utils.c index 32f600858..46cf7bcf6 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -3336,7 +3336,7 @@ morefmt: case '.': { long fnsec = nsec; - if (digs > 9) + if (digs < 0 || digs > 9) digs = 9; if (ztrftimebuf(&bufsize, digs)) return -1; -- cgit v1.2.3 From a98e13ed1f9c525947088ef9631e19e5477d5171 Mon Sep 17 00:00:00 2001 From: Jun-ichi Takimoto Date: Thu, 29 Aug 2019 18:21:50 +0900 Subject: 44714: Take account of CDABLE_VARS while checking spelling --- ChangeLog | 5 +++++ Src/utils.c | 2 ++ 2 files changed, 7 insertions(+) (limited to 'Src/utils.c') diff --git a/ChangeLog b/ChangeLog index 59f4f0c82..c24a61686 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2019-08-29 Jun-ichi Takimoto + + * 44714 (tweaked): Src/utils.c: Take account of CDABLE_VARS + while checking spelling + 2019-08-28 Jun-ichi Takimoto * 44710: Src/Builtins/rlimits.awk, Src/Builtins/rlimits.c, diff --git a/Src/utils.c b/Src/utils.c index 46cf7bcf6..1d916e71f 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -3159,6 +3159,8 @@ spckword(char **s, int hist, int cmd, int ask) scanhashtable(cmdnamtab, 1, 0, 0, spscan, 0); if (autocd) { char **pp; + if (cd_able_vars(unmeta(guess))) + return; for (pp = cdpath; *pp; pp++) { char bestcd[PATH_MAX + 1]; int thisdist; -- cgit v1.2.3 From 3c4b3c87983a989a8404c03639cef1ce5bcd6ef8 Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Tue, 17 Dec 2019 07:44:26 +0000 Subject: 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. --- ChangeLog | 3 +++ Src/utils.c | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+) (limited to 'Src/utils.c') diff --git a/ChangeLog b/ChangeLog index 2ea6116d8..5a8e6b956 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2019-12-18 Daniel Shahaf + * 45064: Src/utils.c: Fix the mktemp() warning, in debug + builds only. + * 45073: Doc/Zsh/contrib.yo: regex-replace docs: Simplify grammar (avoid a double negative, state defaults first). diff --git a/Src/utils.c b/Src/utils.c index 1d916e71f..086c0dfcb 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -2201,6 +2201,31 @@ gettempname(const char *prefix, int use_heap) #ifdef HAVE__MKTEMP /* Zsh uses mktemp() safely, so silence the warnings */ ret = (char *) _mktemp(ret); +#elif HAVE_MKSTEMP && defined(DEBUG) + { + /* zsh uses mktemp() safely (all callers use O_EXCL, and one of them + * uses mkfifo()/mknod(), as opposed to open()), but some compilers + * warn about this anyway and give no way to disable the warning. To + * appease them, use mkstemp() and then close the fd and unlink the + * filename, to match callers' expectations. + * + * But do this in debug builds only, because we don't want to suffer + * x3 the disk access (touch, unlink, touch again) in production. + */ + int fd; + errno = 0; + fd = mkstemp(ret); + if (fd < 0) + zwarn("can't get a temporary filename: %e", errno); + else { + close(fd); + ret = ztrdup(ret); + + errno = 0; + if (unlink(ret) < 0) + zwarn("unlinking a temporary filename failed: %e", errno); + } + } #else ret = (char *) mktemp(ret); #endif -- cgit v1.2.3 From 81185f4c6106d7ea2f7beaabbec7360c08e400d2 Mon Sep 17 00:00:00 2001 From: Daniel Shahaf Date: Thu, 26 Dec 2019 11:49:45 +0000 Subject: internal: Allow %L in zerrmsg() in non-debug builds, too. This will let error messages include long integers. --- Src/utils.c | 2 -- 1 file changed, 2 deletions(-) (limited to 'Src/utils.c') diff --git a/Src/utils.c b/Src/utils.c index 086c0dfcb..597689b02 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -325,12 +325,10 @@ zerrmsg(FILE *file, const char *fmt, va_list ap) nicezputs(s, file); break; } -#ifdef DEBUG case 'L': lnum = va_arg(ap, long); fprintf(file, "%ld", lnum); break; -#endif case 'd': num = va_arg(ap, int); fprintf(file, "%d", num); -- cgit v1.2.3 From ed21a7b70068b4250a25dcdc5b7213a789b0d0ca Mon Sep 17 00:00:00 2001 From: dana Date: Thu, 26 Dec 2019 14:57:07 -0600 Subject: unposted: zerrmsg(): Fix macro guard missed in previous commit --- ChangeLog | 5 +++++ Src/utils.c | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'Src/utils.c') diff --git a/ChangeLog b/ChangeLog index ca2ba6f2b..bb47097c4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2019-12-26 dana + + * unposted: Src/utils.c: Fix macro guard missed in previous + commit + 2019-12-26 Daniel Shahaf * unposted: Src/utils.c: internal: Allow %L in zerrmsg() in diff --git a/Src/utils.c b/Src/utils.c index 597689b02..f5667f389 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -287,9 +287,7 @@ zerrmsg(FILE *file, const char *fmt, va_list ap) { const char *str; int num; -#ifdef DEBUG long lnum; -#endif #ifdef HAVE_STRERROR_R #define ERRBUFSIZE (80) int olderrno; -- cgit v1.2.3