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>2006-02-04 07:31:34 +0300
committerChristopher Faylor <me@cgf.cx>2006-02-04 07:31:34 +0300
commit324ce34bd5924ecac453a5ae20c975b675785c4c (patch)
treec52f08656cd90b076eda434aa4ea5b289d4c48e3
parent19122010293a715be088a7fd87138a17777fa78e (diff)
* dir.cc (mkdir): Reorganize check for trailing dot to return correct error
when directory exists. * fhandler_disk_file.cc (fhandler_disk_file::mkdir): Remove special test for path ending in '.'.
-rw-r--r--winsup/cygwin/ChangeLog7
-rw-r--r--winsup/cygwin/dir.cc8
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc2
3 files changed, 9 insertions, 8 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index acf355b64..4ed1fa482 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,10 @@
+2006-02-03 Christopher Faylor <cgf@timesys.com>
+
+ * dir.cc (mkdir): Reorganize check for trailing dot to return correct
+ error when directory exists.
+ * fhandler_disk_file.cc (fhandler_disk_file::mkdir): Remove special
+ test for path ending in '.'.
+
2006-02-03 Corinna Vinschen <corinna@vinschen.de>
* path.cc (suffix_scan::lnk_match): Return true beginning with
diff --git a/winsup/cygwin/dir.cc b/winsup/cygwin/dir.cc
index 0b588b5fc..0caf2df3a 100644
--- a/winsup/cygwin/dir.cc
+++ b/winsup/cygwin/dir.cc
@@ -265,12 +265,6 @@ mkdir (const char *dir, mode_t mode)
if (efault.faulted (EFAULT))
return -1;
- if (has_dot_last_component (dir))
- {
- set_errno (ENOENT);
- return -1;
- }
-
if (!(fh = build_fh_name (dir, NULL, PC_SYM_NOFOLLOW)))
goto done; /* errno already set */;
@@ -279,6 +273,8 @@ mkdir (const char *dir, mode_t mode)
debug_printf ("got %d error from build_fh_name", fh->error ());
set_errno (fh->error ());
}
+ else if (has_dot_last_component (dir))
+ set_errno (fh->exists () ? EEXIST : ENOENT);
else if (!fh->mkdir (mode))
res = 0;
delete fh;
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index bc6fc3b31..be9d5128b 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -1257,8 +1257,6 @@ fhandler_disk_file::mkdir (mode_t mode)
#endif
res = 0;
}
- else if (pc.exists ())
- set_errno (EEXIST);
else
__seterrno ();