Upgrade to Encode 1.11, from Dan Kogai.
[p5sagit/p5-mst-13.2.git] / reentr.h
index 6060fb7..9aa24e8 100644 (file)
--- a/reentr.h
+++ b/reentr.h
 #define REENTRANT_PROTO_B_B    1
 #define REENTRANT_PROTO_B_BI   2
 #define REENTRANT_PROTO_B_BW   3
-#define REENTRANT_PROTO_B_CCS  4
-#define REENTRANT_PROTO_B_IBI  5
-#define REENTRANT_PROTO_B_IBW  6
-#define REENTRANT_PROTO_B_SB   7
-#define REENTRANT_PROTO_B_SBI  8
-#define REENTRANT_PROTO_I_BI   9
-#define REENTRANT_PROTO_I_BW   10
-#define REENTRANT_PROTO_I_CCSBWR       11
-#define REENTRANT_PROTO_I_CCSD 12
-#define REENTRANT_PROTO_I_CII  13
-#define REENTRANT_PROTO_I_CIISD        14
-#define REENTRANT_PROTO_I_CSBI 15
-#define REENTRANT_PROTO_I_CSBIR        16
-#define REENTRANT_PROTO_I_CSBWR        17
-#define REENTRANT_PROTO_I_CSBWRE       18
-#define REENTRANT_PROTO_I_CSD  19
-#define REENTRANT_PROTO_I_CWISBWRE     20
-#define REENTRANT_PROTO_I_CWISD        21
-#define REENTRANT_PROTO_I_H    22
-#define REENTRANT_PROTO_I_IBI  23
-#define REENTRANT_PROTO_I_IBW  24
-#define REENTRANT_PROTO_I_ICBI 25
-#define REENTRANT_PROTO_I_ICSBWR       26
-#define REENTRANT_PROTO_I_ICSD 27
-#define REENTRANT_PROTO_I_ID   28
-#define REENTRANT_PROTO_I_IISD 29
-#define REENTRANT_PROTO_I_ISBWR        30
-#define REENTRANT_PROTO_I_ISD  31
-#define REENTRANT_PROTO_I_LISBI        32
-#define REENTRANT_PROTO_I_LISD 33
-#define REENTRANT_PROTO_I_LS   34
-#define REENTRANT_PROTO_I_S    35
-#define REENTRANT_PROTO_I_SB   36
-#define REENTRANT_PROTO_I_SBI  37
-#define REENTRANT_PROTO_I_SBIE 38
-#define REENTRANT_PROTO_I_SBIH 39
-#define REENTRANT_PROTO_I_SBIR 40
-#define REENTRANT_PROTO_I_SBWR 41
-#define REENTRANT_PROTO_I_SBWRE        42
-#define REENTRANT_PROTO_I_SD   43
-#define REENTRANT_PROTO_I_ST   44
-#define REENTRANT_PROTO_I_TISD 45
-#define REENTRANT_PROTO_I_TS   46
-#define REENTRANT_PROTO_I_TSBI 47
-#define REENTRANT_PROTO_I_TSBIR        48
-#define REENTRANT_PROTO_I_TSBWR        49
-#define REENTRANT_PROTO_I_TSR  50
-#define REENTRANT_PROTO_I_UISBWRE      51
-#define REENTRANT_PROTO_S_CBI  52
-#define REENTRANT_PROTO_S_CCSBI        53
-#define REENTRANT_PROTO_S_CIISBIE      54
-#define REENTRANT_PROTO_S_CSBI 55
-#define REENTRANT_PROTO_S_CSBIE        56
-#define REENTRANT_PROTO_S_CWISBIE      57
-#define REENTRANT_PROTO_S_CWISBWIE     58
-#define REENTRANT_PROTO_S_ICSBI        59
-#define REENTRANT_PROTO_S_ISBI 60
-#define REENTRANT_PROTO_S_LISBI        61
-#define REENTRANT_PROTO_S_SBI  62
-#define REENTRANT_PROTO_S_SBIE 63
-#define REENTRANT_PROTO_S_SBW  64
-#define REENTRANT_PROTO_S_TISBI        65
-#define REENTRANT_PROTO_S_TS   66
-#define REENTRANT_PROTO_S_TSBI 67
-#define REENTRANT_PROTO_S_TSBIE        68
-#define REENTRANT_PROTO_S_TWISBIE      69
-#define REENTRANT_PROTO_V_H    70
-#define REENTRANT_PROTO_V_ID   71
-#define REENTRANT_PROTO_V_S    72
+#define REENTRANT_PROTO_B_CCD  4
+#define REENTRANT_PROTO_B_CCS  5
+#define REENTRANT_PROTO_B_IBI  6
+#define REENTRANT_PROTO_B_IBW  7
+#define REENTRANT_PROTO_B_SB   8
+#define REENTRANT_PROTO_B_SBI  9
+#define REENTRANT_PROTO_I_BI   10
+#define REENTRANT_PROTO_I_BW   11
+#define REENTRANT_PROTO_I_CCSBWR       12
+#define REENTRANT_PROTO_I_CCSD 13
+#define REENTRANT_PROTO_I_CII  14
+#define REENTRANT_PROTO_I_CIISD        15
+#define REENTRANT_PROTO_I_CSBI 16
+#define REENTRANT_PROTO_I_CSBIR        17
+#define REENTRANT_PROTO_I_CSBWR        18
+#define REENTRANT_PROTO_I_CSBWRE       19
+#define REENTRANT_PROTO_I_CSD  20
+#define REENTRANT_PROTO_I_CWISBWRE     21
+#define REENTRANT_PROTO_I_CWISD        22
+#define REENTRANT_PROTO_I_D    23
+#define REENTRANT_PROTO_I_H    24
+#define REENTRANT_PROTO_I_IBI  25
+#define REENTRANT_PROTO_I_IBW  26
+#define REENTRANT_PROTO_I_ICBI 27
+#define REENTRANT_PROTO_I_ICSBWR       28
+#define REENTRANT_PROTO_I_ICSD 29
+#define REENTRANT_PROTO_I_ID   30
+#define REENTRANT_PROTO_I_IISD 31
+#define REENTRANT_PROTO_I_ISBWR        32
+#define REENTRANT_PROTO_I_ISD  33
+#define REENTRANT_PROTO_I_LISBI        34
+#define REENTRANT_PROTO_I_LISD 35
+#define REENTRANT_PROTO_I_LS   36
+#define REENTRANT_PROTO_I_SB   37
+#define REENTRANT_PROTO_I_SBI  38
+#define REENTRANT_PROTO_I_SBIE 39
+#define REENTRANT_PROTO_I_SBIH 40
+#define REENTRANT_PROTO_I_SBIR 41
+#define REENTRANT_PROTO_I_SBWR 42
+#define REENTRANT_PROTO_I_SBWRE        43
+#define REENTRANT_PROTO_I_SD   44
+#define REENTRANT_PROTO_I_ST   45
+#define REENTRANT_PROTO_I_TISD 46
+#define REENTRANT_PROTO_I_TS   47
+#define REENTRANT_PROTO_I_TSBI 48
+#define REENTRANT_PROTO_I_TSBIR        49
+#define REENTRANT_PROTO_I_TSBWR        50
+#define REENTRANT_PROTO_I_TSR  51
+#define REENTRANT_PROTO_I_UISBWRE      52
+#define REENTRANT_PROTO_S_CBI  53
+#define REENTRANT_PROTO_S_CCSBI        54
+#define REENTRANT_PROTO_S_CIISBIE      55
+#define REENTRANT_PROTO_S_CSBI 56
+#define REENTRANT_PROTO_S_CSBIE        57
+#define REENTRANT_PROTO_S_CWISBIE      58
+#define REENTRANT_PROTO_S_CWISBWIE     59
+#define REENTRANT_PROTO_S_ICSBI        60
+#define REENTRANT_PROTO_S_ISBI 61
+#define REENTRANT_PROTO_S_LISBI        62
+#define REENTRANT_PROTO_S_SBI  63
+#define REENTRANT_PROTO_S_SBIE 64
+#define REENTRANT_PROTO_S_SBW  65
+#define REENTRANT_PROTO_S_TISBI        66
+#define REENTRANT_PROTO_S_TS   67
+#define REENTRANT_PROTO_S_TSBI 68
+#define REENTRANT_PROTO_S_TSBIE        69
+#define REENTRANT_PROTO_S_TWISBIE      70
+#define REENTRANT_PROTO_V_D    71
+#define REENTRANT_PROTO_V_H    72
+#define REENTRANT_PROTO_V_ID   73
 
 /* Defines for indicating which special features are supported. */
 
@@ -575,7 +576,11 @@ typedef struct {
        size_t  _asctime_size;
 #endif /* HAS_ASCTIME_R */
 #ifdef HAS_CRYPT_R
+#if CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
+       CRYPTD* _crypt_data;
+#else
        struct crypt_data _crypt_struct;
+#endif
 #endif /* HAS_CRYPT_R */
 #ifdef HAS_CTIME_R
        char*   _ctime_buffer;
@@ -599,7 +604,7 @@ typedef struct {
 #ifdef HAS_GETHOSTBYNAME_R
        struct hostent  _gethostent_struct;
 #   if GETHOSTBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
-       struct hostent_data*    _gethostent_data;
+       struct hostent_data     _gethostent_data;
 #   else
        char*   _gethostent_buffer;
        size_t  _gethostent_size;
@@ -618,7 +623,7 @@ typedef struct {
 #ifdef HAS_GETNETBYNAME_R
        struct netent   _getnetent_struct;
 #   if GETNETBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
-       struct netent_data*     _getnetent_data;
+       struct netent_data      _getnetent_data;
 #   else
        char*   _getnetent_buffer;
        size_t  _getnetent_size;
@@ -633,7 +638,7 @@ typedef struct {
 #ifdef HAS_GETPROTOBYNAME_R
        struct protoent _getprotoent_struct;
 #   if GETPROTOBYNAME_R_PROTO == REENTRANT_PROTO_I_CSD
-       struct protoent_data*   _getprotoent_data;
+       struct protoent_data    _getprotoent_data;
 #   else
        char*   _getprotoent_buffer;
        size_t  _getprotoent_size;
@@ -659,7 +664,7 @@ typedef struct {
 #ifdef HAS_GETSERVBYNAME_R
        struct servent  _getservent_struct;
 #   if GETSERVBYNAME_R_PROTO == REENTRANT_PROTO_I_CCSD
-       struct servent_data*    _getservent_data;
+       struct servent_data     _getservent_data;
 #   else
        char*   _getservent_buffer;
        size_t  _getservent_size;
@@ -740,6 +745,9 @@ typedef struct {
 #   if !defined(crypt) && CRYPT_R_PROTO == REENTRANT_PROTO_B_CCS
 #       define crypt(a, b) crypt_r(a, b, &PL_reentrant_buffer->_crypt_struct)
 #   endif
+#   if !defined(crypt) && CRYPT_R_PROTO == REENTRANT_PROTO_B_CCD
+#       define crypt(a, b) crypt_r(a, b, &PL_reentrant_buffer->_crypt_data)
+#   endif
 #endif /* HAS_CRYPT_R */
 
 #ifdef HAS_CTERMID_R
@@ -784,31 +792,31 @@ typedef struct {
 
 #ifdef HAS_ENDHOSTENT_R
 #   undef endhostent
-#   if !defined(endhostent) && ENDHOSTENT_R_PROTO == REENTRANT_PROTO_I_S
-#       define endhostent() (((errno = endhostent_r(&PL_reentrant_buffer->_gethostent_struct))) == 0 ? &PL_reentrant_buffer->_gethostent_struct : 0)
+#   if !defined(endhostent) && ENDHOSTENT_R_PROTO == REENTRANT_PROTO_I_D
+#       define endhostent() (((errno = endhostent_r(&PL_reentrant_buffer->_gethostent_data))) == 0 ? 1 : 0)
 #   endif
-#   if !defined(endhostent) && ENDHOSTENT_R_PROTO == REENTRANT_PROTO_V_S
-#       define endhostent() endhostent_r(&PL_reentrant_buffer->_gethostent_struct)
+#   if !defined(endhostent) && ENDHOSTENT_R_PROTO == REENTRANT_PROTO_V_D
+#       define endhostent() endhostent_r(&PL_reentrant_buffer->_gethostent_data)
 #   endif
 #endif /* HAS_ENDHOSTENT_R */
 
 #ifdef HAS_ENDNETENT_R
 #   undef endnetent
-#   if !defined(endnetent) && ENDNETENT_R_PROTO == REENTRANT_PROTO_I_S
-#       define endnetent() (((errno = endnetent_r(&PL_reentrant_buffer->_getnetent_struct))) == 0 ? &PL_reentrant_buffer->_getnetent_struct : 0)
+#   if !defined(endnetent) && ENDNETENT_R_PROTO == REENTRANT_PROTO_I_D
+#       define endnetent() (((errno = endnetent_r(&PL_reentrant_buffer->_getnetent_data))) == 0 ? 1 : 0)
 #   endif
-#   if !defined(endnetent) && ENDNETENT_R_PROTO == REENTRANT_PROTO_V_S
-#       define endnetent() endnetent_r(&PL_reentrant_buffer->_getnetent_struct)
+#   if !defined(endnetent) && ENDNETENT_R_PROTO == REENTRANT_PROTO_V_D
+#       define endnetent() endnetent_r(&PL_reentrant_buffer->_getnetent_data)
 #   endif
 #endif /* HAS_ENDNETENT_R */
 
 #ifdef HAS_ENDPROTOENT_R
 #   undef endprotoent
-#   if !defined(endprotoent) && ENDPROTOENT_R_PROTO == REENTRANT_PROTO_I_S
-#       define endprotoent() (((errno = endprotoent_r(&PL_reentrant_buffer->_getprotoent_struct))) == 0 ? &PL_reentrant_buffer->_getprotoent_struct : 0)
+#   if !defined(endprotoent) && ENDPROTOENT_R_PROTO == REENTRANT_PROTO_I_D
+#       define endprotoent() (((errno = endprotoent_r(&PL_reentrant_buffer->_getprotoent_data))) == 0 ? 1 : 0)
 #   endif
-#   if !defined(endprotoent) && ENDPROTOENT_R_PROTO == REENTRANT_PROTO_V_S
-#       define endprotoent() endprotoent_r(&PL_reentrant_buffer->_getprotoent_struct)
+#   if !defined(endprotoent) && ENDPROTOENT_R_PROTO == REENTRANT_PROTO_V_D
+#       define endprotoent() endprotoent_r(&PL_reentrant_buffer->_getprotoent_data)
 #   endif
 #endif /* HAS_ENDPROTOENT_R */
 
@@ -824,11 +832,11 @@ typedef struct {
 
 #ifdef HAS_ENDSERVENT_R
 #   undef endservent
-#   if !defined(endservent) && ENDSERVENT_R_PROTO == REENTRANT_PROTO_I_S
-#       define endservent() (((errno = endservent_r(&PL_reentrant_buffer->_getservent_struct))) == 0 ? &PL_reentrant_buffer->_getservent_struct : 0)
+#   if !defined(endservent) && ENDSERVENT_R_PROTO == REENTRANT_PROTO_I_D
+#       define endservent() (((errno = endservent_r(&PL_reentrant_buffer->_getservent_data))) == 0 ? 1 : 0)
 #   endif
-#   if !defined(endservent) && ENDSERVENT_R_PROTO == REENTRANT_PROTO_V_S
-#       define endservent() endservent_r(&PL_reentrant_buffer->_getservent_struct)
+#   if !defined(endservent) && ENDSERVENT_R_PROTO == REENTRANT_PROTO_V_D
+#       define endservent() endservent_r(&PL_reentrant_buffer->_getservent_data)
 #   endif
 #endif /* HAS_ENDSERVENT_R */