diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2006-02-28 12:20:11 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2006-02-28 12:20:11 +0000 |
commit | 5d93840135c1ee31844c727abbd47ed5e5cde196 (patch) | |
tree | 093aee4d09330a5b8ffbe670d67027d8318df9cf | |
parent | 4f1558d1323640238c2cb3107aa33d28715101c1 (diff) | |
download | cygnal-5d93840135c1ee31844c727abbd47ed5e5cde196.tar.gz cygnal-5d93840135c1ee31844c727abbd47ed5e5cde196.tar.bz2 cygnal-5d93840135c1ee31844c727abbd47ed5e5cde196.zip |
* dir.cc (readdir_worker): Use slash as path separator when evaluating
namehash for paths below /proc.
* fhandler_netdrive.cc (fhandler_netdrive::readdir): Use expensive
inode number evaluation on share names.
-rw-r--r-- | winsup/cygwin/ChangeLog | 7 | ||||
-rw-r--r-- | winsup/cygwin/dir.cc | 6 | ||||
-rw-r--r-- | winsup/cygwin/fhandler_netdrive.cc | 5 |
3 files changed, 16 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 2f2ff920c..6722d781f 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2006-02-28 Corinna Vinschen <corinna@vinschen.de> + + * dir.cc (readdir_worker): Use slash as path separator when evaluating + namehash for paths below /proc. + * fhandler_netdrive.cc (fhandler_netdrive::readdir): Use expensive + inode number evaluation on share names. + 2006-02-27 Christopher Faylor <cgf@timesys.com> * fhandler_disk_file.cc (fhandler_disk_file::opendir): Only set diff --git a/winsup/cygwin/dir.cc b/winsup/cygwin/dir.cc index f1149bcf6..b81b83855 100644 --- a/winsup/cygwin/dir.cc +++ b/winsup/cygwin/dir.cc @@ -131,8 +131,12 @@ readdir_worker (DIR *dir, dirent *de) if (!is_dot && !is_dot_dot) { const char *w32name = ((fhandler_base *) dir->__fh)->get_win32_name (); + DWORD devn = ((fhandler_base *) dir->__fh)->get_device (); + /* Paths below /proc don't have a Win32 pendant. */ + if (devn == FH_PROC || devn == FH_PROCESS || devn == FH_REGISTRY) + de->d_ino = hash_path_name (de->d_ino, "/"); /* A drive's root dir has a trailing backslash already. */ - if (w32name[1] != ':' || w32name[2] != '\\' || w32name[3]) + else if (w32name[1] != ':' || w32name[2] != '\\' || w32name[3]) de->d_ino = hash_path_name (de->d_ino, "\\"); de->d_ino = hash_path_name (de->d_ino, de->d_name); } diff --git a/winsup/cygwin/fhandler_netdrive.cc b/winsup/cygwin/fhandler_netdrive.cc index 33833a63e..1cabce8b1 100644 --- a/winsup/cygwin/fhandler_netdrive.cc +++ b/winsup/cygwin/fhandler_netdrive.cc @@ -206,7 +206,10 @@ fhandler_netdrive::readdir (DIR *dir, dirent *de) dir->__d_position++; char *bs = strrchr (nro->lpRemoteName, '\\'); strcpy (de->d_name, bs ? bs + 1 : nro->lpRemoteName); - de->d_ino = hash_path_name (get_namehash (), de->d_name); + if (strlen (get_name ()) == 2) + de->d_ino = hash_path_name (get_namehash (), de->d_name); + else + de->d_ino = readdir_get_ino (dir, nro->lpRemoteName, false); res = 0; } |