diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2009-11-09 19:46:36 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2009-11-09 19:46:36 +0000 |
commit | 16a72f7e4b7d5c974dbd4c8fbaaa5ac8c3628db1 (patch) | |
tree | 4a8558fc0fad523efa1839e3cf50d06cbdf52d61 /winsup/cygwin/path.cc | |
parent | ed66791aba119e8f5f39d4749ad31b6b885b1d6f (diff) | |
download | cygnal-16a72f7e4b7d5c974dbd4c8fbaaa5ac8c3628db1.tar.gz cygnal-16a72f7e4b7d5c974dbd4c8fbaaa5ac8c3628db1.tar.bz2 cygnal-16a72f7e4b7d5c974dbd4c8fbaaa5ac8c3628db1.zip |
* path.cc (symlink_info::check_reparse_point): Always check
SubstituteName for volume string to recognize volume mount points.
Reuse subst when calling sys_wcstombs.
* syscalls.cc (rename): Set errno to EBUSY when trying to rename
volume mount points. Explain why.
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r-- | winsup/cygwin/path.cc | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 1f95073b9..daf780e84 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -1873,18 +1873,15 @@ symlink_info::check_reparse_point (HANDLE h) (WCHAR *)((char *)rp->MountPointReparseBuffer.PathBuffer + rp->MountPointReparseBuffer.SubstituteNameOffset), rp->MountPointReparseBuffer.SubstituteNameLength); - if (rp->MountPointReparseBuffer.PrintNameLength == 0 - || RtlEqualUnicodePathPrefix (&subst, &ro_u_volume, TRUE)) + if (RtlEqualUnicodePathPrefix (&subst, &ro_u_volume, TRUE)) { /* Volume mount point. Not treated as symlink. The return value of -1 is a hint for the caller to treat this as a volume mount point. */ return -1; } - sys_wcstombs (srcbuf, SYMLINK_MAX + 1, - (WCHAR *)((char *)rp->MountPointReparseBuffer.PathBuffer - + rp->MountPointReparseBuffer.SubstituteNameOffset), - rp->MountPointReparseBuffer.SubstituteNameLength / sizeof (WCHAR)); + sys_wcstombs (srcbuf, SYMLINK_MAX + 1, subst.Buffer, + subst.Length / sizeof (WCHAR)); pflags = PATH_SYMLINK | PATH_REP; fileattr &= ~FILE_ATTRIBUTE_DIRECTORY; } |