* 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>
* 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;
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
trailing slash initially and add it back on at the end due to Windows
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;
}
else if ((p = strrchr (src, '\\')) &&
(p[1] == '\0' || strcmp (p, "\\.") == 0))
need_directory = 1;
is_relpath = !isabspath (src);
error = normalize_posix_path (src, path_copy);