Doesn't make sense to test for protos if the
Jarkko Hietaniemi [Fri, 15 Mar 2002 20:46:10 +0000 (20:46 +0000)]
functions are not to be used (!= functions exist!)
This might be the key (well, a key) to the HP-UX
problems.

p4raw-id: //depot/perl@15249

reentr.h
reentr.pl

index c4622da..be2f617 100644 (file)
--- a/reentr.h
+++ b/reentr.h
 
 /* 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
index f9e2d3c..efa0724 100644 (file)
--- a/reentr.pl
+++ b/reentr.pl
@@ -295,7 +295,7 @@ EOF
        push @H, $h;
        my @h = grep { /$p/ } @{$seena{$f}};
        if (@h) {
-           push @define, "#if (" . join(" || ", map { "${F}_R_PROTO == REENTRANT_PROTO_$_" } @h) . ")\n";
+           push @define, "#if defined(HAS_${F}_R) && (" . join(" || ", map { "${F}_R_PROTO == REENTRANT_PROTO_$_" } @h) . ")\n";
 
            push @define, <<EOF;
 #   define $h