diff options
Diffstat (limited to 'ACE/ace/OS_NS_dirent.inl')
-rw-r--r-- | ACE/ace/OS_NS_dirent.inl | 54 |
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); |