diff --git a/winsup/mingw/ChangeLog b/winsup/mingw/ChangeLog index ba5cfa72e..198f5664e 100644 --- a/winsup/mingw/ChangeLog +++ b/winsup/mingw/ChangeLog @@ -1,3 +1,12 @@ +2001-09-10 Earnie Boyd + + * dossh: Remove inadvertantly imported file. + +2001-09-10 Danny Smith + + * dirent.c (opendir): Use GetFileAttributes rather than stat + to determine if input arg is dir. + 2001-08-29 Danny Smith * include/stdarg.h (va_list): Typedef as __builtin_va_list if diff --git a/winsup/mingw/dirent.c b/winsup/mingw/dirent.c index 00041d76e..e3885f0ea 100644 --- a/winsup/mingw/dirent.c +++ b/winsup/mingw/dirent.c @@ -8,7 +8,7 @@ * Updated by Jeremy Bettis * Significantly revised and rewinddir, seekdir and telldir added by Colin * Peters - * + * * $Revision$ * $Author$ * $Date$ @@ -20,10 +20,12 @@ #include #include #include -#include #include +#define WIN32_LEAN_AND_MEAN +#include /* for GetFileAttributes */ + #define SUFFIX "*" #define SLASH "\\" @@ -33,12 +35,12 @@ * Returns a pointer to a DIR structure appropriately filled in to begin * searching a directory. */ -DIR * +DIR * opendir (const char *szPath) { DIR *nd; - struct _stat statDir; - + unsigned int rc; + errno = 0; if (!szPath) @@ -54,15 +56,16 @@ opendir (const char *szPath) } /* Attempt to determine if the given path really is a directory. */ - if (_stat (szPath, &statDir)) + rc = GetFileAttributes(szPath); + if (rc == -1) { - /* Error, stat should have set an error value. */ + /* call GetLastError for more error info */ + errno = ENOENT; return (DIR *) 0; } - - if (!S_ISDIR (statDir.st_mode)) + if (!(rc & FILE_ATTRIBUTE_DIRECTORY)) { - /* Error, stat reports not a directory. */ + /* Error, entry exists but not a directory. */ errno = ENOTDIR; return (DIR *) 0; } @@ -149,7 +152,7 @@ readdir (DIR * dirp) /* Start the search */ dirp->dd_handle = _findfirst (dirp->dd_name, &(dirp->dd_dta)); - if (dirp->dd_handle == -1) + if (dirp->dd_handle == -1) { /* Whoops! Seems there are no files in that * directory. */