* path.cc (path_conv::check): Deal more robustly with foo/ behavior.

This commit is contained in:
Christopher Faylor 2001-06-15 20:35:51 +00:00
parent db77b1b43e
commit 947ab99ee9
2 changed files with 10 additions and 6 deletions

View File

@ -1,3 +1,7 @@
Fri Jun 15 14:34:19 2001 Christopher Faylor <cgf@cygnus.com>
* path.cc (path_conv::check): Deal more robustly with foo/ behavior.
Fri Jun 15 11:15:00 2001 Corinna Vinschen <corinna@vinschen.de> Fri Jun 15 11:15:00 2001 Corinna Vinschen <corinna@vinschen.de>
* fhandler_tape.cc (fhandler_dev_tape::tape_status): Set size * fhandler_tape.cc (fhandler_dev_tape::tape_status): Set size

View File

@ -411,18 +411,18 @@ path_conv::check (const char *src, unsigned opt,
{ {
MALLOC_CHECK; MALLOC_CHECK;
assert (src); assert (src);
char *p = strrchr (src, '/');
char *p = strrchr (src, '\0');
/* Detect if the user was looking for a directory. We have to strip the /* Detect if the user was looking for a directory. We have to strip the
trailing slash initially and add it back on at the end due to Windows trailing slash initially and add it back on at the end due to Windows
brain damage. */ brain damage. */
if (p) if (--p > src)
{ {
if (p[1] == '\0' || strcmp (p, "/.") == 0) if (isdirsep (*p))
need_directory = 1;
else if (--p > src && p[1] == '.' && isdirsep (*p))
need_directory = 1; need_directory = 1;
} }
else if ((p = strrchr (src, '\\')) &&
(p[1] == '\0' || strcmp (p, "\\.") == 0))
need_directory = 1;
is_relpath = !isabspath (src); is_relpath = !isabspath (src);
error = normalize_posix_path (src, path_copy); error = normalize_posix_path (src, path_copy);