OSDN Git Service

* dir.cc (rmdir): Report ENOENT when file doesn't exist rather than ENOTDIR.
authorcgf <cgf>
Tue, 28 Aug 2001 20:38:06 +0000 (20:38 +0000)
committercgf <cgf>
Tue, 28 Aug 2001 20:38:06 +0000 (20:38 +0000)
winsup/cygwin/ChangeLog
winsup/cygwin/dir.cc
winsup/cygwin/select.cc

index 25752aa..793476a 100644 (file)
@@ -1,3 +1,8 @@
+Tue Aug 28 16:37:17 2001  Christopher Faylor <cgf@cygnus.com>
+
+       * dir.cc (rmdir): Report ENOENT when file doesn't exist rather than
+       ENOTDIR.
+
 Mon Aug 27 11:58:19 2001  Christopher Faylor <cgf@cygnus.com>
 
        * select.cc (cygwin_select): Ensure that arguments are zeroed on
index e9628b3..83e38de 100644 (file)
@@ -352,9 +352,15 @@ rmdir (const char *dir)
       goto done;
     }
 
+  /* Does the file exist? */
+  if (real_dir.file_attributes () == (DWORD) -1)
+    {
+      set_errno (ENOENT);
+      goto done;
+    }
+
   /* Is `dir' a directory? */
-  if (real_dir.file_attributes () == (DWORD) -1 ||
-      !(real_dir.file_attributes () & FILE_ATTRIBUTE_DIRECTORY))
+  if  (!(real_dir.file_attributes () & FILE_ATTRIBUTE_DIRECTORY))
     {
       set_errno (ENOTDIR);
       goto done;
index 42762ba..6914cd2 100644 (file)
@@ -168,7 +168,8 @@ cygwin_select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
   /* Degenerate case.  No fds to wait for.  Just wait. */
   if (sel.start.next == NULL)
     {
-      if (WaitForSingleObject (signal_arrived, ms) == WAIT_OBJECT_0)
+      if (readfds != dummy_readfds && writefds != dummy_writefds && exceptfds != dummy_exceptfds &&
+      WaitForSingleObject (signal_arrived, ms) == WAIT_OBJECT_0)
        {
          select_printf ("signal received");
          set_sig_errno (EINTR);
@@ -480,9 +481,12 @@ static int
 poll_pipe (select_record *me, fd_set *readfds, fd_set *writefds,
           fd_set *exceptfds)
 {
-  return peek_pipe (me, 0) ?
-        set_bits (me, readfds, writefds, exceptfds) :
-        0;
+  int doit = me->read_ready || me->write_ready || me->except_ready;
+
+  if (!doit)
+    peek_pipe (me, 0);
+
+  return doit ? set_bits (me, readfds, writefds, exceptfds) : 0;
 }
 
 MAKEready(pipe)
@@ -1188,9 +1192,12 @@ static int
 poll_socket (select_record *me, fd_set *readfds, fd_set *writefds,
           fd_set *exceptfds)
 {
-  return peek_socket (me, 0) ?
-        set_bits (me, readfds, writefds, exceptfds) :
-        0;
+  int doit = me->read_ready || me->write_ready || me->except_ready;
+
+  if (!doit)
+    peek_socket (me, 0);
+
+  return doit ? set_bits (me, readfds, writefds, exceptfds) : 0;
 }
 
 MAKEready (socket)