$NetBSD: patch-aa,v 1.6 2010/01/15 18:03:32 tnn Exp $ --- Xos_r.h.in.orig 2009-09-23 23:51:43.000000000 +0000 +++ Xos_r.h.in @@ -73,13 +73,7 @@ in this Software without prior written a # include # ifndef X_NOT_POSIX -# ifdef _POSIX_SOURCE -# include -# else -# define _POSIX_SOURCE -# include -# undef _POSIX_SOURCE -# endif +# include # ifndef LINE_MAX # define X_LINE_MAX 2048 # else @@ -185,6 +179,13 @@ extern void XtProcessUnlock( # endif # endif +#undef _XOS_R_H_MTSAFE_DIRENTAPI +#undef _XOS_R_H_MTSAFE_NETDBAPI +#undef _XOS_R_H_MTSAFE_PWDAPI +#undef _XOS_R_H_MTSAFE_UNISTDAPI +#undef _XOS_R_H_MTSAFE_STRINGAPI +#undef _XOS_R_H_MTSAFE_TIMEAPI +#undef _XOS_R_H_MTSAFE_GRPAPI #endif /* !defined WIN32 */ /* @@ -214,7 +215,7 @@ extern void XtProcessUnlock( #if defined(X_INCLUDE_PWD_H) && !defined(_XOS_INCLUDED_PWD_H) # include -# if defined(XUSE_MTSAFE_API) || defined(XUSE_MTSAFE_PWDAPI) +# if defined(_XOS_R_H_MTSAFE_PWDAPI) # define XOS_USE_MTSAFE_PWDAPI 1 # endif #endif @@ -318,7 +319,7 @@ static __inline__ void _Xpw_copyPasswd(_ (_Xos_processUnlock), \ (p).pwp ) -#elif !defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(__APPLE__) +#elif !defined(_POSIX_THREAD_SAFE_FUNCTIONS) && !defined(__APPLE__) && !defined(__NetBSD__) && !defined(__DragonFly__) # define X_NEEDS_PWPARAMS typedef struct { struct passwd pws; @@ -384,7 +385,7 @@ typedef int _Xgetpwret; #if defined(X_INCLUDE_NETDB_H) && !defined(_XOS_INCLUDED_NETDB_H) \ && !defined(WIN32) # include -# if defined(XUSE_MTSAFE_API) || defined(XUSE_MTSAFE_NETDBAPI) +# if defined(_XOS_R_H_MTSAFE_NETDBAPI) # define XOS_USE_MTSAFE_NETDBAPI 1 # endif #endif @@ -543,7 +544,7 @@ typedef int _Xgetservbynameparams; /* du # define dirent direct # endif # endif -# if defined(XUSE_MTSAFE_API) || defined(XUSE_MTSAFE_DIRENTAPI) +# if defined(_XOS_R_H_MTSAFE_DIRENTAPI) # define XOS_USE_MTSAFE_DIRENTAPI 1 # endif #endif @@ -604,15 +605,8 @@ typedef struct { /* Pre-POSIX API, returns non-NULL on success. */ # define _XReaddir(d,p) (readdir_r((d), &(p).dir_entry)) # else -/* We have no idea what is going on. Fake it all using process locks. */ -# define _XReaddir(d,p) \ - ( (_Xos_processLock), \ - (((p).result = readdir((d))) ? \ - (memcpy(&((p).dir_entry), (p).result, (p).result->d_reclen), \ - ((p).result = &(p).dir_entry), 0) : \ - 0), \ - (_Xos_processUnlock), \ - (p).result ) +# define _XReaddir(d,p) \ + (readdir_r((d), &((p).dir_entry), &((p).result)) ? NULL : (p).result) # endif #endif /* X_INCLUDE_DIRENT_H */ @@ -639,7 +633,7 @@ typedef struct { #if defined(X_INCLUDE_UNISTD_H) && !defined(_XOS_INCLUDED_UNISTD_H) /* already included by */ -# if defined(XUSE_MTSAFE_API) || defined(XUSE_MTSAFE_UNISTDAPI) +# if defined(_XOS_R_H__MTSAFE_UNISTDAPI) # define XOS_USE_MTSAFE_UNISTDAPI 1 # endif #endif @@ -779,7 +773,7 @@ typedef struct { #if defined(X_INCLUDE_STRING_H) && !defined(_XOS_INCLUDED_STRING_H) /* has already been included by */ -# if defined(XUSE_MTSAFE_API) || defined(XUSE_MTSAFE_STRINGAPI) +# if defined(_XOS_R_H_MTSAFE_STRINGAPI) # define XOS_USE_MTSAFE_STRINGAPI 1 # endif #endif @@ -831,7 +825,7 @@ typedef char * _Xstrtokparams; #if defined(X_INCLUDE_TIME_H) && !defined(_XOS_INCLUDED_TIME_H) # include -# if defined(XUSE_MTSAFE_API) || defined(XUSE_MTSAFE_TIMEAPI) +# if defined(_XOS_R_H_MTSAFE_TIMEAPI) # define XOS_USE_MTSAFE_TIMEAPI 1 # endif #endif @@ -987,7 +981,7 @@ typedef struct tm _Xltimeparams; #if defined(X_INCLUDE_GRP_H) && !defined(_XOS_INCLUDED_GRP_H) # include -# if defined(XUSE_MTSAFE_API) || defined(XUSE_MTSAFE_GRPAPI) +# if defined(_XOS_R_H_MTSAFE_GRPAPI) # define XOS_USE_MTSAFE_GRPAPI 1 # endif #endif