diff options
author | Adam Mitz <mitza@objectcomputing.com> | 2022-12-15 02:01:58 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-15 02:01:58 -0600 |
commit | 8022b6898339d0027578c0af19888dc8f2752b9c (patch) | |
tree | 486b5258beb8be4a036328cdbf978f82c174a93c | |
parent | 67518043f1e02e67b02f057f9b183354bb070fd0 (diff) | |
parent | 8e6ccc97292c56438e09268ed344d53b5b409591 (diff) | |
download | ATCD-8022b6898339d0027578c0af19888dc8f2752b9c.tar.gz |
Merge pull request #1999 from DOCGroup/elliottc/disable_readdir_r
[ace6tao2] Allow disabling of ACE_OS::readdir_r
-rw-r--r-- | ACE/ace/Dirent.inl | 15 | ||||
-rw-r--r-- | ACE/ace/OS_NS_dirent.cpp | 1 | ||||
-rw-r--r-- | ACE/ace/OS_NS_dirent.h | 2 | ||||
-rw-r--r-- | ACE/ace/OS_NS_dirent.inl | 2 |
4 files changed, 16 insertions, 4 deletions
diff --git a/ACE/ace/Dirent.inl b/ACE/ace/Dirent.inl index 3e420f1cc71..04f6f716e7a 100644 --- a/ACE/ace/Dirent.inl +++ b/ACE/ace/Dirent.inl @@ -56,9 +56,18 @@ ACE_INLINE int ACE_Dirent::read (struct ACE_DIRENT *entry, struct ACE_DIRENT **result) { - return this->dirp_ - ? ACE_OS::readdir_r (this->dirp_, entry, result) - : 0; + int status = EBADF; + if (this->dirp_ && entry && result) + { + ACE_DIRENT* ptr = ACE_OS::readdir (this->dirp_); + if (ptr) + { + *entry = *ptr; + } + *result = ptr; + status = 0; + } + return status; } ACE_INLINE void diff --git a/ACE/ace/OS_NS_dirent.cpp b/ACE/ace/OS_NS_dirent.cpp index 182667c7243..a5efb466c06 100644 --- a/ACE/ace/OS_NS_dirent.cpp +++ b/ACE/ace/OS_NS_dirent.cpp @@ -181,7 +181,6 @@ ACE_OS::scandir_emulation (const ACE_TCHAR *dirname, int nfiles = 0; int fail = 0; - // @@ This code shoulduse readdir_r() rather than readdir(). for (dp = ACE_OS::readdir (dirp); dp != 0; dp = ACE_OS::readdir (dirp)) diff --git a/ACE/ace/OS_NS_dirent.h b/ACE/ace/OS_NS_dirent.h index 8a35cd9f931..e19b4b1efb4 100644 --- a/ACE/ace/OS_NS_dirent.h +++ b/ACE/ace/OS_NS_dirent.h @@ -86,10 +86,12 @@ namespace ACE_OS { ACE_NAMESPACE_INLINE_FUNCTION struct ACE_DIRENT *readdir (ACE_DIR *); +#if !defined (ACE_DISABLE_READDIR_R) ACE_NAMESPACE_INLINE_FUNCTION int readdir_r (ACE_DIR *dirp, struct ACE_DIRENT *entry, struct ACE_DIRENT **result); +#endif /* !ACE_DISABLE_READDIR_R */ ACE_NAMESPACE_INLINE_FUNCTION void rewinddir (ACE_DIR *); diff --git a/ACE/ace/OS_NS_dirent.inl b/ACE/ace/OS_NS_dirent.inl index 145ccb17970..ae7c291f18f 100644 --- a/ACE/ace/OS_NS_dirent.inl +++ b/ACE/ace/OS_NS_dirent.inl @@ -65,6 +65,7 @@ readdir (ACE_DIR *d) #endif /* ACE_HAS_DIRENT */ } +#if !defined (ACE_DISABLE_READDIR_R) ACE_INLINE int readdir_r (ACE_DIR *dirp, struct ACE_DIRENT *entry, @@ -94,6 +95,7 @@ readdir_r (ACE_DIR *dirp, #endif /* ACE_HAS_REENTRANT_FUNCTIONS */ } +#endif /* !ACE_DISABLE_READDIR_R */ ACE_INLINE void rewinddir (ACE_DIR *d) |