]> sourceware.org Git - newlib-cygwin.git/commitdiff
Cygwin: rmdir: handle /dev in fhandler_dev::rmdir
authorCorinna Vinschen <corinna@vinschen.de>
Tue, 19 Jan 2021 09:50:36 +0000 (10:50 +0100)
committerCorinna Vinschen <corinna@vinschen.de>
Tue, 19 Jan 2021 09:54:35 +0000 (10:54 +0100)
The isdev_dev check in rmdir is unclean.  Create a virtual method
fhandler_dev::rmdir to handle this transparently.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
winsup/cygwin/dir.cc
winsup/cygwin/fhandler.h
winsup/cygwin/fhandler_dev.cc

index f912a9e47b75bc2ae76441bcc3e6fe66f4e12255..7762557d6cf2ed64d34a7c2cc6c250bbaf469dff 100644 (file)
@@ -410,8 +410,6 @@ rmdir (const char *dir)
        set_errno (ENOENT);
       else if (has_dot_last_component (dir, false))
        set_errno (EINVAL);
-      else if (isdev_dev (fh->dev ()))
-       set_errno (ENOTEMPTY);
       else if (!fh->rmdir ())
        res = 0;
       delete fh;
index e1829e28f78dd333c0fcc642c7a59e8a2ca556eb..af1ef3a45c9dd815c8b1478edb596f1b42a8ca49 100644 (file)
@@ -1765,6 +1765,7 @@ public:
   int close ();
   int __reg2 fstat (struct stat *buf);
   int __reg2 fstatvfs (struct statvfs *buf);
+  int rmdir ();
   DIR __reg2 *opendir (int fd);
   int __reg3 readdir (DIR *, dirent *);
   void rewinddir (DIR *);
index 28b0e3cf01f374eed7010dd1f89d2be194348f10..5fd75a58e3765526cd88243bc0cee091676c2117 100644 (file)
@@ -107,6 +107,13 @@ fhandler_dev::fstatvfs (struct statvfs *sfs)
   return ret;
 }
 
+int
+fhandler_dev::rmdir ()
+{
+  set_errno (ENOTEMPTY);
+  return -1;
+}
+
 DIR *
 fhandler_dev::opendir (int fd)
 {
This page took 0.036642 seconds and 5 git commands to generate.