$NetBSD: patch-aa,v 1.5 2009/01/01 21:56:16 hasso Exp $ --- Xos_r.h.in.orig 2006-09-20 19:59:42.000000000 +0200 +++ Xos_r.h.in @@ -76,13 +76,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 @@ -188,6 +182,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 */ /* @@ -226,7 +227,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 @@ -330,7 +331,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__) /* SVR4 threads, AIX 4.2.0 and earlier and OSF/1 3.2 and earlier pthreads */ # define X_NEEDS_PWPARAMS typedef struct { @@ -410,7 +411,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 @@ -573,7 +574,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 @@ -656,15 +657,8 @@ extern int _Preaddir_r(DIR *, struct dir /* 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 */ @@ -691,7 +685,7 @@ extern int _Preaddir_r(DIR *, struct dir #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 @@ -831,7 +825,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 @@ -883,7 +877,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 @@ -1046,7 +1040,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