On Wed, Jan 22, 2003 at 11:45:34PM -0500, Rodent of Unusual Size wrote: > Some headers with issues: > apr_fnmatch.h (FNM_foo) > apr_general.h (MAXIMUM_WAIT_OBJECTS) > apr_md5.h (MD5_DIGESTSIZE) > apr_network_io.h (MAX_SECONDS_TO_LINGER) > apr.hnw (READDIR_IS_THREAD_SAFE, ENUM_BITFIELD, > _POSIX_THREAD_SAFE_FUNCTIONS (?), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Whoa...this not not good. _POSIX_THREAD_SAFE_FUNCTIONS is a manifest POSIX constant that should *not* be defined by the application. A POSIX conformant application should include <unistd.h> and *check* the value of this constant only. See: http://www.opengroup.org/onlinepubs/007904975/basedefs/unistd.h.html Note, that the valid values of any of the POSIX manifest constants defined in <unistd.h> can be: - 200112L (or > 0) which means the feature is always supported - -1, means the feature is not supported at all - 0, means the option may be present, and the application must check at runtime with sysconf() to see if the feature is supported. It took me a while to get all this straight, but it is important to understand in order to write portable and compliant POSIX code. I recommend the attached patches. -- Craig Rodrigues http://home.attbi.com/~rodrigc [EMAIL PROTECTED]
Index: file_io/unix/dir.c =================================================================== RCS file: /home/cvspublic/apr/file_io/unix/dir.c,v retrieving revision 1.75 diff -u -r1.75 dir.c --- file_io/unix/dir.c 7 Jan 2003 00:52:52 -0000 1.75 +++ file_io/unix/dir.c 23 Jan 2003 05:33:09 -0000 @@ -61,6 +61,7 @@ #if APR_HAVE_LIMITS_H #include <limits.h> #endif +#include <unistd.h> static apr_status_t dir_cleanup(void *thedir) { @@ -176,7 +177,7 @@ apr_filetype_e type; #endif #if APR_HAS_THREADS && defined(_POSIX_THREAD_SAFE_FUNCTIONS) \ - && !defined(READDIR_IS_THREAD_SAFE) + && (_POSIX_THREAD_SAFE_FUNCTIONS > 0) && !defined(READDIR_IS_THREAD_SAFE) struct dirent *retent; ret = readdir_r(thedir->dirstruct, thedir->entry, &retent); Index: include/apr.hnw =================================================================== RCS file: /home/cvspublic/apr/include/apr.hnw,v retrieving revision 1.27 diff -u -r1.27 apr.hnw --- include/apr.hnw 14 Jan 2003 00:51:36 -0000 1.27 +++ include/apr.hnw 23 Jan 2003 05:33:10 -0000 @@ -89,7 +89,6 @@ #include <novsock2.h> -#define _POSIX_THREAD_SAFE_FUNCTIONS 1 #define READDIR_IS_THREAD_SAFE 1 #define APR_INLINE