summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/mingw/ChangeLog5
-rw-r--r--winsup/mingw/mingwex/dirent.c21
2 files changed, 25 insertions, 1 deletions
diff --git a/winsup/mingw/ChangeLog b/winsup/mingw/ChangeLog
index a813425ec..86c63b5ba 100644
--- a/winsup/mingw/ChangeLog
+++ b/winsup/mingw/ChangeLog
@@ -1,5 +1,10 @@
2006-06-18 Danny Smith <dannysmith@users.sourceforge.net>
+ * mingwex/dirent.c (_tGetFileAttributes): New helper function.
+ (_topendir): Use it.
+
+2006-06-18 Danny Smith <dannysmith@users.sourceforge.net>
+
* include/sys/time.h: Add header guard. Add extern "C" bracketing
for __cplusplus.
(gettimeofday): Add prototype.
diff --git a/winsup/mingw/mingwex/dirent.c b/winsup/mingw/mingwex/dirent.c
index 3a841d2a9..399a8d1b3 100644
--- a/winsup/mingw/mingwex/dirent.c
+++ b/winsup/mingw/mingwex/dirent.c
@@ -28,6 +28,25 @@
#define SUFFIX _T("*")
#define SLASH _T("\\")
+
+/* Helper for opendir(). */
+static inline unsigned _tGetFileAttributes (const _TCHAR * tPath)
+{
+#ifdef _UNICODE
+ /* GetFileAttributesW does not work on W9x, so convert to ANSI */
+ if (_osver & 0x8000)
+ {
+ char aPath [MAX_PATH];
+ WideCharToMultiByte (CP_ACP, 0, tPath, -1, aPath, MAX_PATH, NULL,
+ NULL);
+ return GetFileAttributesA (aPath);
+ }
+ return GetFileAttributesW (tPath);
+#else
+ return GetFileAttributesA (tPath);
+#endif
+}
+
/*
* opendir
*
@@ -56,7 +75,7 @@ _topendir (const _TCHAR *szPath)
}
/* Attempt to determine if the given path really is a directory. */
- rc = GetFileAttributes (szPath);
+ rc = _tGetFileAttributes (szPath);
if (rc == (unsigned int)-1)
{
/* call GetLastError for more error info */