aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Smith <dannysmith@users.sourceforge.net>2003-10-02 21:29:51 +0000
committerDanny Smith <dannysmith@users.sourceforge.net>2003-10-02 21:29:51 +0000
commitc536f54adab29e9646a91639ce205ec91b1f9234 (patch)
treedd216ce22553db3a70c37c088993b74c04a025ef
parent3a3f30763c4a4f467d77e168b91065997942fc5f (diff)
downloadnewlib-c536f54adab29e9646a91639ce205ec91b1f9234.zip
newlib-c536f54adab29e9646a91639ce205ec91b1f9234.tar.gz
newlib-c536f54adab29e9646a91639ce205ec91b1f9234.tar.bz2
* mingwex/dirent.c (_treaddir): Reset errno to 0 if end
of directory.
-rw-r--r--winsup/mingw/ChangeLog5
-rw-r--r--winsup/mingw/mingwex/dirent.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/winsup/mingw/ChangeLog b/winsup/mingw/ChangeLog
index 212a47c..2ccd140 100644
--- a/winsup/mingw/ChangeLog
+++ b/winsup/mingw/ChangeLog
@@ -1,3 +1,8 @@
+2003-10-03 Danny Smith <dannysmith@users.sourceforge.net>
+
+ * mingwex/dirent.c (_treaddir): Reset errno to 0 if end
+ of directory.
+
2003-09-29 Danny Smith <dannysmith@users.sourceforge.net>
* include/stdlib.h: Guard non-ISO functions with
diff --git a/winsup/mingw/mingwex/dirent.c b/winsup/mingw/mingwex/dirent.c
index e3c81e1..bef2222 100644
--- a/winsup/mingw/mingwex/dirent.c
+++ b/winsup/mingw/mingwex/dirent.c
@@ -165,7 +165,12 @@ _treaddir (_TDIR * dirp)
/* Get the next search entry. */
if (_tfindnext (dirp->dd_handle, &(dirp->dd_dta)))
{
- /* We are off the end or otherwise error. */
+ /* We are off the end or otherwise error.
+ _findnext sets errno to ENOENT if no more file
+ Undo this. */
+ DWORD winerr = GetLastError();
+ if (winerr == ERROR_NO_MORE_FILES)
+ errno = 0;
_findclose (dirp->dd_handle);
dirp->dd_handle = -1;
dirp->dd_stat = -1;