SEGV in s/// and UTF-8
[p5sagit/p5-mst-13.2.git] / reentr.h
index c4622da..310fe97 100644 (file)
--- a/reentr.h
+++ b/reentr.h
@@ -24,6 +24,8 @@
 #ifdef __hpux
 #   undef HAS_CRYPT_R
 #   undef HAS_DRAND48_R
+#   undef HAS_ENDGRENT_R
+#   undef HAS_ENDPWENT_R
 #   undef HAS_GETGRENT_R
 #   undef HAS_GETPWENT_R
 #   undef HAS_SETLOCALE_R
 
 /* The getgrent getgrgid getgrnam using ptr? */
 
-#if (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIR)
+#if defined(HAS_GETGRENT_R) && (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIR)
 #   define GETGRENT_R_HAS_PTR
 #else
 #   undef  GETGRENT_R_HAS_PTR
 #endif
-#if (GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBIR)
+#if defined(HAS_GETGRGID_R) && (GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETGRGID_R_PROTO == REENTRANT_PROTO_I_TSBIR)
 #   define GETGRGID_R_HAS_PTR
 #else
 #   undef  GETGRGID_R_HAS_PTR
 #endif
-#if (GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR)
+#if defined(HAS_GETGRNAM_R) && (GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETGRNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR)
 #   define GETGRNAM_R_HAS_PTR
 #else
 #   undef  GETGRNAM_R_HAS_PTR
 
 /* The getpwent getpwnam getpwuid using ptr? */
 
-#if (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIR)
+#if defined(HAS_GETPWENT_R) && (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBWR || GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIR)
 #   define GETPWENT_R_HAS_PTR
 #else
 #   undef  GETPWENT_R_HAS_PTR
 #endif
-#if (GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR)
+#if defined(HAS_GETPWNAM_R) && (GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR || GETPWNAM_R_PROTO == REENTRANT_PROTO_I_CSBIR)
 #   define GETPWNAM_R_HAS_PTR
 #else
 #   undef  GETPWNAM_R_HAS_PTR
 #endif
-#if (GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBIR)
+#if defined(HAS_GETPWUID_R) && (GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBWR || GETPWUID_R_PROTO == REENTRANT_PROTO_I_TSBIR)
 #   define GETPWUID_R_HAS_PTR
 #else
 #   undef  GETPWUID_R_HAS_PTR
 
 /* The getspent getspnam using ptr? */
 
-#if (GETSPNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR)
+#if defined(HAS_GETSPNAM_R) && (GETSPNAM_R_PROTO == REENTRANT_PROTO_I_CSBWR)
 #   define GETSPNAM_R_HAS_PTR
 #else
 #   undef  GETSPNAM_R_HAS_PTR
 
 /* The getgrent getgrgid getgrnam using fptr? */
 
-#if (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
+#if defined(HAS_GETGRENT_R) && (GETGRENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
 #   define GETGRENT_R_HAS_FPTR
 #else
 #   undef  GETGRENT_R_HAS_FPTR
 
 /* The getpwent getpwnam getpwuid using fptr? */
 
-#if (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
+#if defined(HAS_GETPWENT_R) && (GETPWENT_R_PROTO == REENTRANT_PROTO_I_SBIH)
 #   define GETPWENT_R_HAS_FPTR
 #else
 #   undef  GETPWENT_R_HAS_FPTR
 
 /* The gethostent gethostbyaddr gethostbyname using ptr? */
 
-#if (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE)
+#if defined(HAS_GETHOSTENT_R) && (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE)
 #   define GETHOSTENT_R_HAS_PTR
 #else
 #   undef  GETHOSTENT_R_HAS_PTR
 #endif
-#if (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE)
+#if defined(HAS_GETHOSTBYADDR_R) && (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE)
 #   define GETHOSTBYADDR_R_HAS_PTR
 #else
 #   undef  GETHOSTBYADDR_R_HAS_PTR
 #endif
-#if (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
+#if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
 #   define GETHOSTBYNAME_R_HAS_PTR
 #else
 #   undef  GETHOSTBYNAME_R_HAS_PTR
 
 /* The getnetent getnetbyaddr getnetbyname using ptr? */
 
-#if (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE)
+#if defined(HAS_GETNETENT_R) && (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE)
 #   define GETNETENT_R_HAS_PTR
 #else
 #   undef  GETNETENT_R_HAS_PTR
 #endif
-#if (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE)
+#if defined(HAS_GETNETBYADDR_R) && (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE)
 #   define GETNETBYADDR_R_HAS_PTR
 #else
 #   undef  GETNETBYADDR_R_HAS_PTR
 #endif
-#if (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
+#if defined(HAS_GETNETBYNAME_R) && (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
 #   define GETNETBYNAME_R_HAS_PTR
 #else
 #   undef  GETNETBYNAME_R_HAS_PTR
 
 /* The getprotoent getprotobyname getprotobynumber using ptr? */
 
-#if (GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBWR)
+#if defined(HAS_GETPROTOENT_R) && (GETPROTOENT_R_PROTO == REENTRANT_PROTO_I_SBWR)
 #   define GETPROTOENT_R_HAS_PTR
 #else
 #   undef  GETPROTOENT_R_HAS_PTR
 #endif
-#if (GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWR)
+#if defined(HAS_GETPROTOBYNAME_R) && (GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWR)
 #   define GETPROTOBYNAME_R_HAS_PTR
 #else
 #   undef  GETPROTOBYNAME_R_HAS_PTR
 #endif
-#if (GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_I_ISBWR)
+#if defined(HAS_GETPROTOBYNUMBER_R) && (GETPROTOBYNUMBER_R_PROTO == REENTRANT_PROTO_I_ISBWR)
 #   define GETPROTOBYNUMBER_R_HAS_PTR
 #else
 #   undef  GETPROTOBYNUMBER_R_HAS_PTR
 
 /* The getservent getservbyname getservbyport using ptr? */
 
-#if (GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBWR)
+#if defined(HAS_GETSERVENT_R) && (GETSERVENT_R_PROTO == REENTRANT_PROTO_I_SBWR)
 #   define GETSERVENT_R_HAS_PTR
 #else
 #   undef  GETSERVENT_R_HAS_PTR
 #endif
-#if (GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSBWR)
+#if defined(HAS_GETSERVBYNAME_R) && (GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSBWR)
 #   define GETSERVBYNAME_R_HAS_PTR
 #else
 #   undef  GETSERVBYNAME_R_HAS_PTR
 #endif
-#if (GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_I_ICSBWR)
+#if defined(HAS_GETSERVBYPORT_R) && (GETSERVBYPORT_R_PROTO == REENTRANT_PROTO_I_ICSBWR)
 #   define GETSERVBYPORT_R_HAS_PTR
 #else
 #   undef  GETSERVBYPORT_R_HAS_PTR
 
 /* The gethostent gethostbyaddr gethostbyname using errno? */
 
-#if (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_S_SBIE)
+#if defined(HAS_GETHOSTENT_R) && (GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETHOSTENT_R_PROTO == REENTRANT_PROTO_S_SBIE)
 #   define GETHOSTENT_R_HAS_ERRNO
 #else
 #   undef  GETHOSTENT_R_HAS_ERRNO
 #endif
-#if (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBWIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CIISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CSBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TSBIE)
+#if defined(HAS_GETHOSTBYADDR_R) && (GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_I_CWISBWRE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBWIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TWISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CIISBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_CSBIE || GETHOSTBYADDR_R_PROTO == REENTRANT_PROTO_S_TSBIE)
 #   define GETHOSTBYADDR_R_HAS_ERRNO
 #else
 #   undef  GETHOSTBYADDR_R_HAS_ERRNO
 #endif
-#if (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE || GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBIE)
+#if defined(HAS_GETHOSTBYNAME_R) && (GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE || GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_S_CSBIE)
 #   define GETHOSTBYNAME_R_HAS_ERRNO
 #else
 #   undef  GETHOSTBYNAME_R_HAS_ERRNO
 
 /* The getnetent getnetbyaddr getnetbyname using errno? */
 
-#if (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETNETENT_R_PROTO == REENTRANT_PROTO_S_SBIE)
+#if defined(HAS_GETNETENT_R) && (GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBWRE || GETNETENT_R_PROTO == REENTRANT_PROTO_I_SBIE || GETNETENT_R_PROTO == REENTRANT_PROTO_S_SBIE)
 #   define GETNETENT_R_HAS_ERRNO
 #else
 #   undef  GETNETENT_R_HAS_ERRNO
 #endif
-#if (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE)
+#if defined(HAS_GETNETBYADDR_R) && (GETNETBYADDR_R_PROTO == REENTRANT_PROTO_I_UISBWRE)
 #   define GETNETBYADDR_R_HAS_ERRNO
 #else
 #   undef  GETNETBYADDR_R_HAS_ERRNO
 #endif
-#if (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
+#if defined(HAS_GETNETBYNAME_R) && (GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSBWRE)
 #   define GETNETBYNAME_R_HAS_ERRNO
 #else
 #   undef  GETNETBYNAME_R_HAS_ERRNO