Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2001-06-16 00:35:51 +0400
committerChristopher Faylor <me@cgf.cx>2001-06-16 00:35:51 +0400
commit947ab99ee964fe52e1c02f2d6e63e50bb533fcc0 (patch)
treedbfcee1f223fd14103ba76a19acc5c924ee12aaf /winsup/cygwin/path.cc
parentdb77b1b43eb68d34d5730b02dea826dd8f3bef95 (diff)
* path.cc (path_conv::check): Deal more robustly with foo/ behavior.
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r--winsup/cygwin/path.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index cffbecebd..414efcf11 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -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);