OSDN Git Service

Throughout remove all usage of wincap.access_denied_on_delete.
authorcorinna <corinna>
Thu, 22 Feb 2007 16:04:18 +0000 (16:04 +0000)
committercorinna <corinna>
Thu, 22 Feb 2007 16:04:18 +0000 (16:04 +0000)
* dir.cc (rmdir): Add existance check to be errno-compatible with Linux.
* fhandler_disk_file.cc (fhandler_disk_file::rmdir): Drop test for
non-existent dir on 9x share.
* syscalls.cc (unlink): Add comment.
* wincap.cc: Remove access_denied_on_delete flag throughout.
* wincap.h: Ditto.

winsup/cygwin/ChangeLog
winsup/cygwin/delqueue.cc
winsup/cygwin/dir.cc
winsup/cygwin/fhandler_disk_file.cc
winsup/cygwin/syscalls.cc
winsup/cygwin/wincap.cc
winsup/cygwin/wincap.h

index 8c99c3c..c856679 100644 (file)
@@ -1,5 +1,15 @@
 2007-02-22  Corinna Vinschen  <corinna@vinschen.de>
 
+       Throughout remove all usage of wincap.access_denied_on_delete.
+       * dir.cc (rmdir): Add existance check to be errno-compatible with Linux.
+       * fhandler_disk_file.cc (fhandler_disk_file::rmdir): Drop test for
+       non-existent dir on 9x share.
+       * syscalls.cc (unlink): Add comment.
+       * wincap.cc: Remove access_denied_on_delete flag throughout.
+       * wincap.h: Ditto.
+
+2007-02-22  Corinna Vinschen  <corinna@vinschen.de>
+
        * fhandler_disk_file.cc (fhandler_disk_file::closedir): Fix bug
        introduced by switching to NtClose.
 
index 76f2d6d..2cc14d5 100644 (file)
@@ -1,6 +1,6 @@
 /* delqueue.cc
 
-   Copyright 1996, 1998, 1999, 2000, 2001 Red Hat, Inc.
+   Copyright 1996, 1998, 1999, 2000, 2001, 2007 Red Hat, Inc.
 
 This file is part of Cygwin.
 
@@ -86,9 +86,7 @@ delqueue_list::process_queue ()
          {
            int res = GetLastError ();
            empty = 0;
-           if (res == ERROR_SHARING_VIOLATION ||
-               (wincap.access_denied_on_delete ()
-                && res == ERROR_ACCESS_DENIED))
+           if (res == ERROR_SHARING_VIOLATION)
              {
                /* File still inuse, that's ok */
                syscall_printf ("Still using %s", name[i]);
index 1b4e93a..63467b7 100644 (file)
@@ -309,6 +309,8 @@ rmdir (const char *dir)
     }
   else if (has_dot_last_component (dir, false))
     set_errno (fh->exists () ? EINVAL : ENOENT);
+  else if (!fh->exists ())
+    set_errno (ENOENT);
   else if (!fh->rmdir ())
     res = 0;
 
index 9bc7b83..a713655 100644 (file)
@@ -1404,16 +1404,6 @@ fhandler_disk_file::rmdir ()
     }
   else
     err = GetLastError ();
-  /* On 9X ERROR_ACCESS_DENIED is returned if you try to remove a
-     non-empty directory. */
-  if (err == ERROR_ACCESS_DENIED
-      && wincap.access_denied_on_delete ())
-    err = ERROR_DIR_NOT_EMPTY;
-  /* ...and, that's *not* funny, when trying to remove a non-existing
-     directory on a share, which is hosted by a 9x machine, the error
-     code ERROR_INVALID_FUNCTION is returned.  */
-  else if (err == ERROR_INVALID_FUNCTION)
-    err = ERROR_FILE_NOT_FOUND;
 
   __seterrno_from_win_error (err);
 
index 5e2bb5b..ed11037 100644 (file)
@@ -392,11 +392,8 @@ unlink (const char *ourname)
     {
       SetFileAttributes (win32_name, (DWORD) win32_name);
 
-      /* Windows 9x seems to report ERROR_ACCESS_DENIED rather than sharing
-        violation. */
-      if ((wincap.access_denied_on_delete () && lasterr == ERROR_ACCESS_DENIED
-          && !win32_name.isremote ())
-         || lasterr == ERROR_SHARING_VIOLATION)
+      /* FIXME: Can we get rid of the delqueue now? */
+      if (lasterr == ERROR_SHARING_VIOLATION)
        {
          /* Add file to the "to be deleted" queue. */
          syscall_printf ("Sharing violation, couldn't delete file");
@@ -1443,14 +1440,7 @@ rename (const char *oldpath, const char *newpath)
       /* Since neither MoveFileEx(MOVEFILE_REPLACE_EXISTING) nor DeleteFile
         allow to remove directories, this case is handled separately. */
       if (!RemoveDirectoryA (real_new))
-       {
-         syscall_printf ("Can't remove target directory");
-         /* On 9X ERROR_ACCESS_DENIED is returned if you try to remove
-            a non-empty directory. */
-         if (GetLastError () == ERROR_ACCESS_DENIED
-             && wincap.access_denied_on_delete ())
-           SetLastError (ERROR_DIR_NOT_EMPTY);
-       }
+       syscall_printf ("Can't remove target directory");
       else if (MoveFile (real_old, real_new))
        res = 0;
     }
index baa708c..0be5446 100644 (file)
@@ -17,7 +17,6 @@ static NO_COPY wincaps wincap_unknown = {
   chunksize:0,
   heapslop:0x0,
   is_server:false,
-  access_denied_on_delete:false,
   has_delete_on_close:true,
   has_page_guard:true,
   has_security:true,
@@ -81,7 +80,6 @@ static NO_COPY wincaps wincap_nt4 = {
   chunksize:0,
   heapslop:0x0,
   is_server:false,
-  access_denied_on_delete:false,
   has_delete_on_close:true,
   has_page_guard:true,
   has_security:true,
@@ -145,7 +143,6 @@ static NO_COPY wincaps wincap_nt4sp4 = {
   chunksize:0,
   heapslop:0x0,
   is_server:false,
-  access_denied_on_delete:false,
   has_delete_on_close:true,
   has_page_guard:true,
   has_security:true,
@@ -209,7 +206,6 @@ static NO_COPY wincaps wincap_2000 = {
   chunksize:0,
   heapslop:0x0,
   is_server:false,
-  access_denied_on_delete:false,
   has_delete_on_close:true,
   has_page_guard:true,
   has_security:true,
@@ -273,7 +269,6 @@ static NO_COPY wincaps wincap_xp = {
   chunksize:0,
   heapslop:0x0,
   is_server:false,
-  access_denied_on_delete:false,
   has_delete_on_close:true,
   has_page_guard:true,
   has_security:true,
@@ -337,7 +332,6 @@ static NO_COPY wincaps wincap_2003 = {
   chunksize:0,
   heapslop:0x4,
   is_server:true,
-  access_denied_on_delete:false,
   has_delete_on_close:true,
   has_page_guard:true,
   has_security:true,
@@ -401,7 +395,6 @@ static NO_COPY wincaps wincap_vista = {
   chunksize:0,
   heapslop:0x4,
   is_server:false,
-  access_denied_on_delete:false,
   has_delete_on_close:true,
   has_page_guard:true,
   has_security:true,
index da046a1..645ded1 100644 (file)
@@ -17,7 +17,6 @@ struct wincaps
   DWORD    chunksize;
   DWORD    heapslop;
   unsigned is_server                                    : 1;
-  unsigned access_denied_on_delete                      : 1;
   unsigned has_delete_on_close                          : 1;
   unsigned has_page_guard                               : 1;
   unsigned has_security                                 : 1;
@@ -97,7 +96,6 @@ public:
   DWORD IMPLEMENT (chunksize)
   DWORD IMPLEMENT (heapslop)
   bool  IMPLEMENT (is_server)
-  bool  IMPLEMENT (access_denied_on_delete)
   bool  IMPLEMENT (has_delete_on_close)
   bool  IMPLEMENT (has_page_guard)
   bool  IMPLEMENT (has_security)