https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=2fb0813caa2e30c7e90285264a26c95c9ab4d097

commit 2fb0813caa2e30c7e90285264a26c95c9ab4d097
Author: Corinna Vinschen <cori...@vinschen.de>
Date:   Tue Dec 15 14:30:03 2015 +0100

    Drop has_recycle_dot_bin

Diff:
---
 winsup/cygwin/syscalls.cc | 63 +++++++----------------------------------------
 winsup/cygwin/wincap.cc   |  7 ------
 winsup/cygwin/wincap.h    |  2 --
 3 files changed, 9 insertions(+), 63 deletions(-)

diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index 0ffb8c1..23b9d82 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -223,12 +223,6 @@ static char desktop_ini[] =
 static char desktop_ini_ext[] =
   "LocalizedResourceName=@%SystemRoot%\\system32\\shell32.dll,-8964\r\n";
 
-static BYTE info2[] =
-{
-  0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-};
-
 enum bin_status
 {
   dont_move,
@@ -303,14 +297,7 @@ try_to_bin (path_conv &pc, HANDLE &fh, ACCESS_MASK access, 
ULONG flags)
   RtlInitEmptyUnicodeString (&recycler, recyclerbuf, sizeof recyclerbuf);
   if (!pc.isremote ())
     {
-      if (wincap.has_recycle_dot_bin ()) /* NTFS and FAT since Vista, ReFS */
-       RtlAppendUnicodeToString (&recycler, L"\\$Recycle.Bin\\");
-      else if (pc.fs_is_ntfs ())       /* NTFS up to 2K3 */
-       RtlAppendUnicodeToString (&recycler, L"\\RECYCLER\\");
-      else if (pc.fs_is_fat ())        /* FAT up to 2K3 */
-       RtlAppendUnicodeToString (&recycler, L"\\Recycled\\");
-      else
-       goto out;
+      RtlAppendUnicodeToString (&recycler, L"\\$Recycle.Bin\\");
       RtlInitCountedUnicodeString(&fname, pfni->FileName, 
pfni->FileNameLength);
       /* Is the file a subdir of the recycler? */
       if (RtlEqualUnicodePathPrefix (&fname, &recycler, TRUE))
@@ -431,13 +418,9 @@ try_to_bin (path_conv &pc, HANDLE &fh, ACCESS_MASK access, 
ULONG flags)
        }
       /* Then check if recycler exists by opening and potentially creating it.
         Yes, we can really do that.  Typically the recycle bin is created
-        by the first user actually using the bin.  Pre-Vista, the permissions
-        are the default permissions propagated from the root directory.
-        Since Vista the top-level recycle dir has explicit permissions. */
+        by the first user actually using the bin. */
       InitializeObjectAttributes (&attr, &recycler, OBJ_CASE_INSENSITIVE,
-                                 rootdir,
-                                 wincap.has_recycle_dot_bin ()
-                                 ? recycler_sd (true, true) : NULL);
+                                 rootdir, recycler_sd (true, true));
       recycler.Length = recycler_base_len;
       status = NtCreateFile (&recyclerdir,
                             READ_CONTROL
@@ -475,9 +458,8 @@ try_to_bin (path_conv &pc, HANDLE &fh, ACCESS_MASK access, 
ULONG flags)
              goto out;
            }
        }
-      /* The desktop.ini and INFO2 (pre-Vista) files are expected by
-        Windows Explorer.  Otherwise, the created bin is treated as
-        corrupted */
+      /* The desktop.ini file is expected by Windows Explorer.  Otherwise,
+         the created bin is treated as corrupted */
       if (io.Information == FILE_CREATED)
        {
          RtlInitUnicodeString (&fname, L"desktop.ini");
@@ -495,42 +477,15 @@ try_to_bin (path_conv &pc, HANDLE &fh, ACCESS_MASK 
access, ULONG flags)
            {
              status = NtWriteFile (tmp_fh, NULL, NULL, NULL, &io, desktop_ini,
                                    sizeof desktop_ini - 1, NULL, NULL);
+             if (NT_SUCCESS (status))
+               status = NtWriteFile (tmp_fh, NULL, NULL, NULL, &io,
+                                     desktop_ini_ext,
+                                     sizeof desktop_ini_ext - 1, NULL, NULL);
              if (!NT_SUCCESS (status))
                debug_printf ("NtWriteFile (%S) failed, status = %y",
                              &fname, status);
-             else if (wincap.has_recycle_dot_bin ())
-               {
-                 status = NtWriteFile (tmp_fh, NULL, NULL, NULL, &io,
-                                       desktop_ini_ext,
-                                       sizeof desktop_ini_ext - 1, NULL, NULL);
-                 if (!NT_SUCCESS (status))
-                   debug_printf ("NtWriteFile (%S) failed, status = %y",
-                                 &fname, status);
-               }
              NtClose (tmp_fh);
            }
-         if (!wincap.has_recycle_dot_bin ()) /* No INFO2 file since Vista */
-           {
-             RtlInitUnicodeString (&fname, L"INFO2");
-             status = NtCreateFile (&tmp_fh, FILE_GENERIC_WRITE, &attr, &io,
-                                    NULL, FILE_ATTRIBUTE_ARCHIVE
-                                          | FILE_ATTRIBUTE_HIDDEN,
-                                    FILE_SHARE_VALID_FLAGS, FILE_CREATE,
-                                    FILE_SYNCHRONOUS_IO_NONALERT
-                                    | FILE_NON_DIRECTORY_FILE, NULL, 0);
-               if (!NT_SUCCESS (status))
-                 debug_printf ("NtCreateFile (%S) failed, status = %y",
-                               &recycler, status);
-               else
-               {
-                 status = NtWriteFile (tmp_fh, NULL, NULL, NULL, &io, info2,
-                                       sizeof info2, NULL, NULL);
-                 if (!NT_SUCCESS (status))
-                   debug_printf ("NtWriteFile (%S) failed, status = %y",
-                                 &fname, status);
-                 NtClose (tmp_fh);
-               }
-           }
        }
       NtClose (recyclerdir);
       /* Shoot again. */
diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc
index ba11e24..78c5923 100644
--- a/winsup/cygwin/wincap.cc
+++ b/winsup/cygwin/wincap.cc
@@ -23,7 +23,6 @@ wincaps wincap_xpsp2 __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   is_server:false,
   has_mandatory_integrity_control:false,
   needs_count_in_si_lpres2:false,
-  has_recycle_dot_bin:false,
   has_gaa_on_link_prefix:false,
   has_gaa_largeaddress_bug:false,
   supports_all_posix_ai_flags:false,
@@ -58,7 +57,6 @@ wincaps wincap_2003 __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   is_server:false,
   has_mandatory_integrity_control:false,
   needs_count_in_si_lpres2:false,
-  has_recycle_dot_bin:false,
   has_gaa_on_link_prefix:false,
   has_gaa_largeaddress_bug:false,
   supports_all_posix_ai_flags:false,
@@ -93,7 +91,6 @@ wincaps wincap_vista __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   is_server:false,
   has_mandatory_integrity_control:true,
   needs_count_in_si_lpres2:true,
-  has_recycle_dot_bin:true,
   has_gaa_on_link_prefix:true,
   has_gaa_largeaddress_bug:true,
   supports_all_posix_ai_flags:true,
@@ -128,7 +125,6 @@ wincaps wincap_7 __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   is_server:false,
   has_mandatory_integrity_control:true,
   needs_count_in_si_lpres2:false,
-  has_recycle_dot_bin:true,
   has_gaa_on_link_prefix:true,
   has_gaa_largeaddress_bug:true,
   supports_all_posix_ai_flags:true,
@@ -163,7 +159,6 @@ wincaps wincap_8 __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   is_server:false,
   has_mandatory_integrity_control:true,
   needs_count_in_si_lpres2:false,
-  has_recycle_dot_bin:true,
   has_gaa_on_link_prefix:true,
   has_gaa_largeaddress_bug:false,
   supports_all_posix_ai_flags:true,
@@ -198,7 +193,6 @@ wincaps wincap_10 __attribute__((section 
(".cygwin_dll_common"), shared)) = {
   is_server:false,
   has_mandatory_integrity_control:true,
   needs_count_in_si_lpres2:false,
-  has_recycle_dot_bin:true,
   has_gaa_on_link_prefix:true,
   has_gaa_largeaddress_bug:false,
   supports_all_posix_ai_flags:true,
@@ -233,7 +227,6 @@ wincaps wincap_10_1511 __attribute__((section 
(".cygwin_dll_common"), shared)) =
   is_server:false,
   has_mandatory_integrity_control:true,
   needs_count_in_si_lpres2:false,
-  has_recycle_dot_bin:true,
   has_gaa_on_link_prefix:true,
   has_gaa_largeaddress_bug:false,
   supports_all_posix_ai_flags:true,
diff --git a/winsup/cygwin/wincap.h b/winsup/cygwin/wincap.h
index 2879b63..03b2213 100644
--- a/winsup/cygwin/wincap.h
+++ b/winsup/cygwin/wincap.h
@@ -16,7 +16,6 @@ struct wincaps
   unsigned is_server                                    : 1;
   unsigned has_mandatory_integrity_control             : 1;
   unsigned needs_count_in_si_lpres2                    : 1;
-  unsigned has_recycle_dot_bin                         : 1;
   unsigned has_gaa_on_link_prefix                      : 1;
   unsigned has_gaa_largeaddress_bug                    : 1;
   unsigned supports_all_posix_ai_flags                 : 1;
@@ -76,7 +75,6 @@ public:
   bool  IMPLEMENT (is_server)
   bool IMPLEMENT (has_mandatory_integrity_control)
   bool IMPLEMENT (needs_count_in_si_lpres2)
-  bool IMPLEMENT (has_recycle_dot_bin)
   bool IMPLEMENT (has_gaa_on_link_prefix)
   bool IMPLEMENT (has_gaa_largeaddress_bug)
   bool IMPLEMENT (supports_all_posix_ai_flags)

Reply via email to