Attached is a patch for adding readdir_r

I would like to ask should I make this __forceinline ?
like the localtime_r and gmtime_r functions?

Please Review :)
From 22d04235c9e4e04442f2f93c53e84d95bff331a1 Mon Sep 17 00:00:00 2001
From: Martell Malone <[email protected]>
Date: Sat, 27 Jun 2015 17:00:01 +0100
Subject: [PATCH] add readdir_r support


diff --git a/mingw-w64-crt/misc/dirent.c b/mingw-w64-crt/misc/dirent.c
index f1ee0a2..c2e675e 100644
--- a/mingw-w64-crt/misc/dirent.c
+++ b/mingw-w64-crt/misc/dirent.c
@@ -201,6 +201,20 @@ _treaddir (_TDIR * dirp)
   return (struct _tdirent *) 0;
 }
 
+/*
+ * readdir_r
+ */
+struct _tdirent *
+_treaddir_r (_TDIR * dirp, struct _tdirent *entry struct _tdirent **result)
+{
+   errno = 0;
+   entry = _treaddir(dirp);
+   *result = entry;
+   if (entry == NULL && errno != 0) {
+       return -1;
+   }
+   return 0;
+}
 
 /*
  * closedir
diff --git a/mingw-w64-headers/crt/dirent.h b/mingw-w64-headers/crt/dirent.h
index 2d7a1b7..2c452de 100644
--- a/mingw-w64-headers/crt/dirent.h
+++ b/mingw-w64-headers/crt/dirent.h
@@ -62,6 +62,9 @@ typedef struct
 
 DIR* __cdecl __MINGW_NOTHROW opendir (const char*);
 struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);
+#ifdef _POSIX_C_SOURCE
+int __cdecl __MINGW_NOTHROW readdir_r (DIR*, struct dirent*, struct dirent*);
+#endif
 int __cdecl __MINGW_NOTHROW closedir (DIR*);
 void __cdecl __MINGW_NOTHROW rewinddir (DIR*);
 long __cdecl __MINGW_NOTHROW telldir (DIR*);
@@ -109,6 +112,9 @@ typedef struct
 
 _WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);
 struct _wdirent* __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);
+#ifdef _POSIX_C_SOURCE
+int __cdecl __MINGW_NOTHROW _wreaddir_r (_WDIR*, struct _wdirent*, struct 
_wdirent*);
+#endif
 int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);
 void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);
 long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);
diff --git a/mingw-w64-headers/crt/tchar.h b/mingw-w64-headers/crt/tchar.h
index 3567085..39f6be6 100644
--- a/mingw-w64-headers/crt/tchar.h
+++ b/mingw-w64-headers/crt/tchar.h
@@ -466,6 +466,7 @@ extern "C" {
 #define _topendir      _wopendir
 #define _tclosedir     _wclosedir
 #define _treaddir      _wreaddir
+#define _treaddir_r    _wreaddir_r
 #define _trewinddir    _wrewinddir
 #define _ttelldir      _wtelldir
 #define _tseekdir      _wseekdir
@@ -1038,6 +1039,7 @@ extern "C" {
 #define _topendir      opendir
 #define _tclosedir     closedir
 #define _treaddir      readdir
+#define _treaddir_r    readdir_r
 #define _trewinddir    rewinddir
 #define _ttelldir      telldir
 #define _tseekdir      seekdir
-- 
2.4.4

------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors 
network devices and physical & virtual servers, alerts via email & sms 
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to