From: Paul Eggert Date: Mon, 15 Jul 2013 20:32:24 +0000 (-0700) Subject: * lib/tmpdir.c: Simplify code to add slash; no need for a loop. X-Git-Tag: v0.1~90 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=f822677c56afd9b760c7ad370b29e589ea9fdac8;p=gnulib.git * lib/tmpdir.c: Simplify code to add slash; no need for a loop. --- 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)