From ffe94510f526c1f0115f5bb2c5e206303e45b216 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Tue, 28 Aug 2001 20:38:07 +0000 Subject: [PATCH] * dir.cc (rmdir): Report ENOENT when file doesn't exist rather than ENOTDIR. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/dir.cc | 10 ++++++++-- winsup/cygwin/select.cc | 21 ++++++++++++++------- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 25752aaa5..793476af9 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +Tue Aug 28 16:37:17 2001 Christopher Faylor + + * dir.cc (rmdir): Report ENOENT when file doesn't exist rather than + ENOTDIR. + Mon Aug 27 11:58:19 2001 Christopher Faylor * select.cc (cygwin_select): Ensure that arguments are zeroed on diff --git a/winsup/cygwin/dir.cc b/winsup/cygwin/dir.cc index e9628b377..83e38deb5 100644 --- a/winsup/cygwin/dir.cc +++ b/winsup/cygwin/dir.cc @@ -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; diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index 42762baa5..6914cd236 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -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) -- 2.43.5