summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/path.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2015-04-23 15:02:32 +0200
committerCorinna Vinschen <corinna@vinschen.de>2015-04-23 22:04:59 +0200
commit5abb0ed13c09a1ce68d3134c7a9369ccbb1a739b (patch)
treed755097720682e0bd9592456d5e5b8d912b86e9c /winsup/cygwin/path.cc
parent4e99630cfdfa582feb6deeb12f6fbee92d15d44e (diff)
downloadcygnal-5abb0ed13c09a1ce68d3134c7a9369ccbb1a739b.tar.gz
cygnal-5abb0ed13c09a1ce68d3134c7a9369ccbb1a739b.tar.bz2
cygnal-5abb0ed13c09a1ce68d3134c7a9369ccbb1a739b.zip
Handle unlinking in-use files on virtual drives
* path.cc (path_conv::set_nt_native_path): New function. * path.h (path_conv::set_nt_native_path): Add prototype. * syscall.cc (try_to_bin): Handle moving files to the recycler accessed via a local virtual drive (subst). Fix a problem renaming the file to the unique replacement name on Samba. Align comment. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r--winsup/cygwin/path.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index 1dd96cf10..446d746cc 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -486,6 +486,18 @@ get_nt_native_path (const char *path, UNICODE_STRING& upath, bool dos)
return &upath;
}
+/* Handle with extrem care! Only used in a certain instance in try_to_bin.
+ Every other usage needs a careful check. */
+void
+path_conv::set_nt_native_path (PUNICODE_STRING new_path)
+{
+ wide_path = (PWCHAR) crealloc_abort (wide_path, new_path->MaximumLength);
+ memcpy (wide_path, new_path->Buffer, new_path->Length);
+ uni_path.Length = new_path->Length;
+ uni_path.MaximumLength = new_path->MaximumLength;
+ uni_path.Buffer = wide_path;
+}
+
PUNICODE_STRING
path_conv::get_nt_native_path ()
{