(path_search): Don't put slash after directory if __VMS.
Problem reported by Steven M. Schweda in
<http://lists.gnu.org/archive/html/bug-gnulib/2013-07/msg00019.html>.
+ Simplify code to add slash; no need for a loop.
Do not remove trailing slash from "//".
Do not assume dlen <= INT_MAX.
{
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])
{
}
}
- /* 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)