Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2001-04-17 15:47:37 +0400
committerCorinna Vinschen <corinna@vinschen.de>2001-04-17 15:47:37 +0400
commit0f565126273e2d9aafb956933fc5b86ca01fddf4 (patch)
treec078f7d7a7113dd906b5e4928604240f7563a7b6 /winsup/cygwin/syscalls.cc
parent77eb506d60c57c50773fe9e02daa7d83cfc31e49 (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.cc6
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;
}