diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 9f36db5a9..7f95f16fd 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2007-08-16 Corinna Vinschen + + * dir.cc (readdir_worker): Convert w32name to PUNICODE_STRING. + * sec_acl.cc (getacl): Convert debug output to print native NT path. + * security.cc (set_file_attribute): Ditto. + * syscalls.cc (try_to_bin): Ditto and fix buggy debug statement. + 2007-08-16 Corinna Vinschen * ntdll.h (RtlAcquirePebLock): Declare. diff --git a/winsup/cygwin/dir.cc b/winsup/cygwin/dir.cc index 72d6ac1ab..c1f325ea6 100644 --- a/winsup/cygwin/dir.cc +++ b/winsup/cygwin/dir.cc @@ -140,14 +140,15 @@ readdir_worker (DIR *dir, dirent *de) de->d_ino = ((fhandler_base *) dir->__fh)->get_namehash (); if (!is_dot && !is_dot_dot) { - const char *w32name = ((fhandler_base *) dir->__fh)->get_win32_name (); + PUNICODE_STRING w32name = + ((fhandler_base *) dir->__fh)->pc.get_nt_native_path (); DWORD devn = ((fhandler_base *) dir->__fh)->get_device (); /* Paths below /proc don't have a Win32 pendant. */ if (isproc_dev (devn)) - de->d_ino = hash_path_name (de->d_ino, "/"); - /* A drive's root dir has a trailing backslash already. */ - 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, L"/"); + else if (w32name->Buffer[w32name->Length / sizeof (WCHAR) - 1] + != L'\\') + de->d_ino = hash_path_name (de->d_ino, L"\\"); de->d_ino = hash_path_name (de->d_ino, de->d_name); } } diff --git a/winsup/cygwin/sec_acl.cc b/winsup/cygwin/sec_acl.cc index bd967f3d9..4ba5a2c1b 100644 --- a/winsup/cygwin/sec_acl.cc +++ b/winsup/cygwin/sec_acl.cc @@ -391,7 +391,7 @@ getacl (HANDLE handle, path_conv &pc, int nentries, __aclent32_t *aclbufp) aclbufp[i].a_perm &= ~(DENY_R | DENY_W | DENY_X); aclsort32 (pos, 0, aclbufp); } - syscall_printf ("%d = getacl (%s)", pos, pc.get_win32 ()); + syscall_printf ("%d = getacl (%S)", pos, pc.get_nt_native_path ()); return pos; } diff --git a/winsup/cygwin/security.cc b/winsup/cygwin/security.cc index daf2861ed..e4c82d538 100644 --- a/winsup/cygwin/security.cc +++ b/winsup/cygwin/security.cc @@ -715,8 +715,8 @@ set_file_attribute (HANDLE handle, path_conv &pc, } else ret = 0; - syscall_printf ("%d = set_file_attribute (%s, %d, %d, %p)", - ret, pc.get_win32 (), uid, gid, attribute); + syscall_printf ("%d = set_file_attribute (%S, %d, %d, %p)", + ret, pc.get_nt_native_path (), uid, gid, attribute); return ret; } diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 8e1c97961..63df37e2c 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -358,8 +358,8 @@ try_to_bin (path_conv &win32_path, HANDLE h) FileRenameInformation); } if (!NT_SUCCESS (status)) - debug_printf ("Move %s to %s failed, status = %p", win32_path.get_win32 (), - recycler, status); + debug_printf ("Move %S to %S failed, status = %p", + win32_path.get_nt_native_path (), &recycler, status); out: if (rootdir) NtClose (rootdir);