diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2001-04-17 15:47:37 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2001-04-17 15:47:37 +0400 |
commit | 0f565126273e2d9aafb956933fc5b86ca01fddf4 (patch) | |
tree | c078f7d7a7113dd906b5e4928604240f7563a7b6 /winsup/cygwin/syscalls.cc | |
parent | 77eb506d60c57c50773fe9e02daa7d83cfc31e49 (diff) |
* path.cc (path_conv::check): Set case_clash even if pcheck_case
is set to PCHECK_ADJUST when a case clash is given for the last
component in path.
(symlink_info::case_check): Ditto.
* syscalls.cc (_rename): Avoid overwriting an already existing file
if a case clash is given even if pcheck_case is set to PCHECK_ADJUST.
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r-- | winsup/cygwin/syscalls.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 933baafcf..5a9b24c0f 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -1246,7 +1246,7 @@ _rename (const char *oldpath, const char *newpath) /* Shortcut hack. */ char new_lnk_buf[MAX_PATH + 5]; - if (real_old.issymlink () && !real_new.error) + if (real_old.issymlink () && !real_new.error && !real_new.case_clash) { int len_old = strlen (real_old.get_win32 ()); if (strcasematch (real_old.get_win32 () + len_old - 4, ".lnk")) @@ -1258,10 +1258,10 @@ _rename (const char *oldpath, const char *newpath) } } - if (real_new.error) + if (real_new.error || real_new.case_clash) { syscall_printf ("-1 = rename (%s, %s)", oldpath, newpath); - set_errno (real_new.error); + set_errno (real_new.case_clash ? ECASECLASH : real_new.error); return -1; } |