summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Humblet <phumblet@phumblet.no-ip.org>2005-01-26 04:34:19 +0000
committerPierre Humblet <phumblet@phumblet.no-ip.org>2005-01-26 04:34:19 +0000
commit9df58602b69f36522d9715c3c3f3516c72e981d9 (patch)
treedef1a68bc28c589c9f2b43c43105354fe3404620
parent0e32d1ffcda1234552dec05f0ceb631521959870 (diff)
downloadcygnal-9df58602b69f36522d9715c3c3f3516c72e981d9.tar.gz
cygnal-9df58602b69f36522d9715c3c3f3516c72e981d9.tar.bz2
cygnal-9df58602b69f36522d9715c3c3f3516c72e981d9.zip
2005-01-26 Pierre Humblet <pierre.humblet@ieee.org>
* path.cc (path_conv::check): Return ENOTDIR rather than ENOENT when a component is not a directory. Remove unreachable code. (digits): Delete.
-rw-r--r--winsup/cygwin/ChangeLog6
-rw-r--r--winsup/cygwin/path.cc20
2 files changed, 11 insertions, 15 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 06751a193..db63828a4 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,9 @@
+2005-01-26 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * path.cc (path_conv::check): Return ENOTDIR rather than ENOENT
+ when a component is not a directory. Remove unreachable code.
+ (digits): Delete.
+
2005-01-25 Christopher Faylor <cgf@timesys.com>
* pinfo.h (pinfo::init): Make third parameter non-optional and
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index c636fb547..a9d6292d7 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -655,12 +655,6 @@ path_conv::check (const char *src, unsigned opt,
full_path[3] = '\0';
}
- if ((opt & PC_SYM_IGNORE) && pcheck_case == PCHECK_RELAXED)
- {
- fileattr = GetFileAttributes (this->path);
- goto out;
- }
-
symlen = sym.check (full_path, suff, opt | fs.has_ea ());
if (sym.minor || sym.major)
@@ -706,6 +700,11 @@ path_conv::check (const char *src, unsigned opt,
error = sym.error;
if (component == 0)
add_ext_from_sym (sym);
+ else if (!(sym.fileattr & FILE_ATTRIBUTE_DIRECTORY))
+ {
+ error = ENOTDIR;
+ goto out;
+ }
if (pcheck_case == PCHECK_RELAXED)
goto out; // file found
/* Avoid further symlink evaluation. Only case checks are
@@ -939,15 +938,6 @@ path_conv::~path_conv ()
}
}
-static __inline int
-digits (const char *name)
-{
- char *p;
- int n = strtol (name, &p, 10);
-
- return p > name && !*p ? n : -1;
-}
-
/* Return true if src_path is a valid, internally supported device name.
In that case, win32_path gets the corresponding NT device name and
dev is appropriately filled with device information. */