* syscalls.cc (rename): Just return with 0 if filenames are identical,

per POSIX.  Drop comment added in previous patch.
This commit is contained in:
Corinna Vinschen 2008-03-12 18:54:24 +00:00
parent 48726c8a06
commit 0f7ac147bd
2 changed files with 7 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2008-03-12 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (rename): Just return with 0 if filenames are identical,
per POSIX. Drop comment added in previous patch.
2008-03-12 Corinna Vinschen <corinna@vinschen.de> 2008-03-12 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (rename): Handle a special case of trying to rename a * syscalls.cc (rename): Handle a special case of trying to rename a

View File

@ -1573,17 +1573,14 @@ rename (const char *oldpath, const char *newpath)
/* First check if oldpath and newpath only differ by case. If so, it's /* First check if oldpath and newpath only differ by case. If so, it's
just a request to change the case of the filename. By simply setting just a request to change the case of the filename. By simply setting
the file attributes to INVALID_FILE_ATTRIBUTES (which translates to the file attributes to INVALID_FILE_ATTRIBUTES (which translates to
"file doesn't exist"), all later tests are skipped. "file doesn't exist"), all later tests are skipped. */
If not, it's a request to change the case of the name of a mount
point. If we don't catch this here, the underlying directory would
be deleted, if it happens to be empty. */
if (newpc.exists () && equal_path) if (newpc.exists () && equal_path)
{ {
if (RtlEqualUnicodeString (oldpc.get_nt_native_path (), if (RtlEqualUnicodeString (oldpc.get_nt_native_path (),
newpc.get_nt_native_path (), newpc.get_nt_native_path (),
FALSE)) FALSE))
{ {
set_errno (EACCES); res = 0;
goto out; goto out;
} }
newpc.file_attributes (INVALID_FILE_ATTRIBUTES); newpc.file_attributes (INVALID_FILE_ATTRIBUTES);