summaryrefslogtreecommitdiff
path: root/ACE/ace/OS_NS_dirent.inl
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ace/OS_NS_dirent.inl')
-rw-r--r--ACE/ace/OS_NS_dirent.inl54
1 files changed, 35 insertions, 19 deletions
diff --git a/ACE/ace/OS_NS_dirent.inl b/ACE/ace/OS_NS_dirent.inl
index a768a914887..862dd7d07c3 100644
--- a/ACE/ace/OS_NS_dirent.inl
+++ b/ACE/ace/OS_NS_dirent.inl
@@ -47,17 +47,18 @@ opendir (const ACE_TCHAR *filename)
#endif /* ACE_HAS_DIRENT */
}
-ACE_INLINE struct ACE_DIRENT *
+ACE_INLINE
+struct ACE_DIRENT *
readdir (ACE_DIR *d)
{
#if defined (ACE_HAS_DIRENT)
-# if defined (ACE_WIN32) && defined (ACE_LACKS_READDIR)
- return ACE_OS::readdir_emulation (d);
+# if defined (ACE_WIN32) && defined (ACE_LACKS_READDIR)
+ return ACE_OS::readdir_emulation (d);
# elif defined (ACE_HAS_WREADDIR) && defined (ACE_USES_WCHAR)
- return ::wreaddir (d);
-# else /* ACE_WIN32 && ACE_LACKS_READDIR */
- return ::readdir (d);
-# endif /* ACE_WIN32 && ACE_LACKS_READDIR */
+ return ::wreaddir (d);
+# else /* ACE_WIN32 && ACE_LACKS_READDIR */
+ return ::readdir (d);
+# endif /* ACE_WIN32 && ACE_LACKS_READDIR */
#else
ACE_UNUSED_ARG (d);
ACE_NOTSUP_RETURN (0);
@@ -66,8 +67,8 @@ readdir (ACE_DIR *d)
ACE_INLINE int
readdir_r (ACE_DIR *dirp,
- struct ACE_DIRENT *entry,
- struct ACE_DIRENT **result)
+ struct ACE_DIRENT *entry,
+ struct ACE_DIRENT **result)
{
#if !defined (ACE_HAS_REENTRANT_FUNCTIONS)
ACE_UNUSED_ARG (entry);
@@ -77,14 +78,29 @@ readdir_r (ACE_DIR *dirp,
return 0; // Keep iterating
else
return 1; // Oops, some type of error!
-#elif defined (ACE_HAS_DIRENT) && !defined (ACE_LACKS_READDIR_R)
-# if defined (ACE_HAS_3_PARAM_READDIR_R)
- return ::readdir_r (dirp, entry, result);
-# else
- // <result> had better not be 0!
- *result = ::readdir_r (dirp, entry);
- return 0;
-# endif /* sun */
+#elif defined (ACE_HAS_DIRENT) && !defined (ACE_LACKS_READDIR_R)
+# if (defined (sun) && (defined (_POSIX_PTHREAD_SEMANTICS) || \
+ (_FILE_OFFSET_BITS == 64) || \
+ (_POSIX_C_SOURCE - 0 >= 199506L))) || \
+ (!defined (sun) && (defined (ACE_HAS_PTHREADS_STD) || \
+ defined (ACE_HAS_PTHREADS_DRAFT7) || \
+ defined (_POSIX_SOURCE) || \
+ defined (__FreeBSD__) || \
+ defined (HPUX_11)))
+# if defined (__GNUG__) && defined (DIGITAL_UNIX)
+ return readdir_r (dirp, entry, result);
+# else
+ return ::readdir_r (dirp, entry, result);
+# endif /* defined (__GNUG__) && defined (DIGITAL_UNIX) */
+# else /* ! POSIX.1c - this is draft 4 or draft 6 */
+# if defined(__GNUC__) && defined (_AIX)
+ return ::readdir_r (dirp, entry, result);
+# else
+ // <result> had better not be 0!
+ *result = ::readdir_r (dirp, entry);
+ return 0;
+# endif /* AIX */
+# endif /* ! POSIX.1c */
#else /* ! ACE_HAS_DIRENT || ACE_LACKS_READDIR_R */
ACE_UNUSED_ARG (dirp);
ACE_UNUSED_ARG (entry);
@@ -145,7 +161,7 @@ scandir (const ACE_TCHAR *dirname,
ACE_INLINE void
seekdir (ACE_DIR *d, long loc)
{
-#if defined (ACE_HAS_DIRENT) && !defined (ACE_LACKS_SEEKDIR)
+#if defined (ACE_HAS_DIRENT) && !defined (ACE_LACKS_SEEKDIR)
::seekdir (d, loc);
#else /* ! ACE_HAS_DIRENT || ACE_LACKS_SEEKDIR */
ACE_UNUSED_ARG (d);
@@ -156,7 +172,7 @@ seekdir (ACE_DIR *d, long loc)
ACE_INLINE long
telldir (ACE_DIR *d)
{
-#if defined (ACE_HAS_DIRENT) && !defined (ACE_LACKS_TELLDIR)
+#if defined (ACE_HAS_DIRENT) && !defined (ACE_LACKS_TELLDIR)
return ::telldir (d);
#else /* ! ACE_HAS_DIRENT || ACE_LACKS_TELLDIR */
ACE_UNUSED_ARG (d);