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