From 5de9c2745c5539909973771844bcbef3e94c2070 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 23 Apr 2015 15:02:32 +0200 Subject: 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 --- winsup/cygwin/path.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'winsup/cygwin/path.cc') diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index ea5595698..b1a02e133 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 () { -- cgit v1.2.3