aboutsummaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorPierre Humblet <phumblet@phumblet.no-ip.org>2003-06-01 19:37:13 +0000
committerPierre Humblet <phumblet@phumblet.no-ip.org>2003-06-01 19:37:13 +0000
commitc17e8306d06f795755b751fa8c0021c16d34fa25 (patch)
tree21a1fbca86dab1d297cf91442f1a1c9f0fc7f6e5 /winsup
parente59c6ff448d40938f4f09042d6689d7d1aa655fe (diff)
downloadnewlib-c17e8306d06f795755b751fa8c0021c16d34fa25.zip
newlib-c17e8306d06f795755b751fa8c0021c16d34fa25.tar.gz
newlib-c17e8306d06f795755b751fa8c0021c16d34fa25.tar.bz2
2003-06-01 Pierre Humblet <pierre.humblet@ieee.org>
* fhandler_disk_file.cc (fhandler_disk_file::fstat_by_name): Assume an existing directory is a root if FindFirstFile fails.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc24
2 files changed, 17 insertions, 12 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index a2049a2..b614335 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2003-06-01 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * fhandler_disk_file.cc (fhandler_disk_file::fstat_by_name): Assume
+ an existing directory is a root if FindFirstFile fails.
+
2003-05-30 Christopher Faylor <cgf@redhat.com>
* path.cc (mount_info::conv_to_win32_path): gcc warning about chroot_ok
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index 30e6785..c595022 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -108,18 +108,7 @@ fhandler_disk_file::fstat_by_name (struct __stat64 *buf, path_conv *pc)
set_errno (ENOENT);
res = -1;
}
- else if (pc->isdir () && strlen (*pc) <= strlen (pc->root_dir ()))
- {
- FILETIME ft = {};
- res = fstat_helper (buf, pc, ft, ft, ft, 0, 0);
- }
- else if ((handle = FindFirstFile (*pc, &local)) == INVALID_HANDLE_VALUE)
- {
- debug_printf ("FindFirstFile failed for '%s', %E", (char *) *pc);
- __seterrno ();
- res = -1;
- }
- else
+ else if ((handle = FindFirstFile (*pc, &local)) != INVALID_HANDLE_VALUE)
{
FindClose (handle);
res = fstat_helper (buf, pc,
@@ -129,6 +118,17 @@ fhandler_disk_file::fstat_by_name (struct __stat64 *buf, path_conv *pc)
local.nFileSizeHigh,
local.nFileSizeLow);
}
+ else if (pc->isdir ())
+ {
+ FILETIME ft = {};
+ res = fstat_helper (buf, pc, ft, ft, ft, 0, 0);
+ }
+ else
+ {
+ debug_printf ("FindFirstFile failed for '%s', %E", (char *) *pc);
+ __seterrno ();
+ res = -1;
+ }
return res;
}