From f822677c56afd9b760c7ad370b29e589ea9fdac8 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 15 Jul 2013 13:32:24 -0700 Subject: [PATCH] * lib/tmpdir.c: Simplify code to add slash; no need for a loop. --- ChangeLog | 1 + lib/tmpdir.c | 17 ++++++----------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6929de02d..9b0cccdb3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,7 @@ (path_search): Don't put slash after directory if __VMS. Problem reported by Steven M. Schweda in . + Simplify code to add slash; no need for a loop. Do not remove trailing slash from "//". Do not assume dlen <= INT_MAX. diff --git a/lib/tmpdir.c b/lib/tmpdir.c index aa2164dfa..405c4bd1b 100644 --- a/lib/tmpdir.c +++ b/lib/tmpdir.c @@ -89,11 +89,7 @@ path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx, { const char *d; size_t dlen, plen; -#ifdef __VMS - bool add_slash = false; -#else - bool add_slash = true; -#endif + bool add_slash; if (!pfx || !pfx[0]) { @@ -143,13 +139,12 @@ path_search (char *tmpl, size_t tmpl_len, const char *dir, const char *pfx, } } - /* Remove trailing slashes, except remove just one from "//". */ dlen = strlen (dir); - if (dlen == 2 && ISSLASH (dir[0]) && ISSLASH (dir[1])) - dlen--; - else - while (0 < dlen && ISSLASH (dir[dlen - 1])) - dlen--; + add_slash = dlen != 0 && !ISSLASH (dir[dlen - 1]); +#ifdef __VMS + if (dlen != 0 && dir[dlen - 1] == ':') + add_slash = false; +#endif /* check we have room for "${dir}/${pfx}XXXXXX\0" */ if (tmpl_len < dlen + add_slash + plen + 6 + 1) -- 2.11.0