diff options
Diffstat (limited to 'ext/mysqlnd/mysqlnd_portability.h')
| -rw-r--r-- | ext/mysqlnd/mysqlnd_portability.h | 298 | 
1 files changed, 150 insertions, 148 deletions
diff --git a/ext/mysqlnd/mysqlnd_portability.h b/ext/mysqlnd/mysqlnd_portability.h index b7c4c8f096..e4eadd9fba 100644 --- a/ext/mysqlnd/mysqlnd_portability.h +++ b/ext/mysqlnd/mysqlnd_portability.h @@ -61,36 +61,36 @@ This file is public domain and comes with NO WARRANTY of any kind */  /* Typdefs for easyier portability */ -#ifndef HAVE_INT8  #ifndef HAVE_INT8_T -typedef signed char int8;			/* Signed integer >= 8    bits */ +#ifndef HAVE_INT8 +typedef signed char int8_t;			/* Signed integer >= 8    bits */  #else -typedef int8_t int8;				/* Signed integer >= 8    bits */ +typedef int8 int8_t;				/* Signed integer >= 8    bits */  #endif  #endif -#ifndef HAVE_UINT8  #ifndef HAVE_UINT8_T -typedef unsigned char uint8;		/* Unsigned integer >= 8    bits */ +#ifndef HAVE_UINT8 +typedef unsigned char uint8_t;		/* Unsigned integer >= 8    bits */  #else -typedef uint8_t uint8;				/* Signed integer >= 8    bits */ +typedef uint8 uint8_t;				/* Signed integer >= 8    bits */  #endif  #endif -#ifndef HAVE_INT16  #ifndef HAVE_INT16_T -typedef signed short int16;			/* Signed integer >= 16 bits */ +#ifndef HAVE_INT16 +typedef signed short int16_t;		/* Signed integer >= 16 bits */  #else -typedef int16_t int16;				/* Signed integer >= 16 bits */ +typedef int16 int16_t;				/* Signed integer >= 16 bits */  #endif  #endif -#ifndef HAVE_UINT16  #ifndef HAVE_UINT16_T -typedef unsigned short uint16;		/* Signed integer >= 16 bits */ +#ifndef HAVE_UINT16 +typedef unsigned short uint16_t;		/* Signed integer >= 16 bits */  #else -typedef uint16_t uint16;			/* Signed integer >= 16 bits */ +typedef uint16 uint16_t;			/* Signed integer >= 16 bits */  #endif  #endif @@ -98,134 +98,136 @@ typedef uint16_t uint16;			/* Signed integer >= 16 bits */  typedef unsigned char uchar;		/* Short for unsigned char */  #endif -#ifndef HAVE_INT32 -#ifdef HAVE_INT32_T -typedef int32_t int32; +#ifndef HAVE_INT32_T +#ifdef HAVE_INT32 +typedef int32 int32_t;  #elif SIZEOF_INT == 4 -typedef signed int int32; +typedef signed int int32_t;  #elif SIZEOF_LONG == 4 -typedef signed long int32; +typedef signed long int32_t;  #else  error "Neither int nor long is of 4 bytes width"  #endif -#endif /* HAVE_INT32 */ +#endif /* HAVE_INT32_T */ -#ifndef HAVE_UINT32 -#ifdef HAVE_UINT32_T -typedef uint32_t uint32; +#ifndef HAVE_UINT32_T +#ifdef HAVE_UINT32 +typedef uint32 uint32_t;  #elif SIZEOF_INT == 4 -typedef unsigned int uint32; +typedef unsigned int uint32_t;  #elif SIZEOF_LONG == 4 -typedef unsigned long uint32; +typedef unsigned long uint32_t;  #else  #error "Neither int nor long is of 4 bytes width"  #endif -#endif /* HAVE_UINT32 */ +#endif /* HAVE_UINT32_T */ -#ifndef HAVE_INT64 -#ifdef HAVE_INT64_T -typedef int64_t int64; +#ifndef HAVE_INT64_T +#ifdef HAVE_INT64 +typedef int64 int64_t;  #elif SIZEOF_INT == 8 -typedef signed int int64; +typedef signed int int64_t;  #elif SIZEOF_LONG == 8 -typedef signed long int64; +typedef signed long int64_t;  #elif SIZEOF_LONG_LONG == 8  #ifdef PHP_WIN32 -typedef __int64 int64; +typedef __int64 int64_t;  #else -typedef signed long long int64; +typedef signed long long int64_t;  #endif  #else  #error "Neither int nor long nor long long is of 8 bytes width"  #endif -#endif /* HAVE_INT64 */ +#endif /* HAVE_INT64_T */ -#ifndef HAVE_UINT64 -#ifdef HAVE_UINT64_T -typedef uint64_t uint64; +#ifndef HAVE_UINT64_T +#ifdef HAVE_UINT64 +typedef uint64 uint64_t;  #elif SIZEOF_INT == 8 -typedef unsigned int uint64; +typedef unsigned int uint64_t;  #elif SIZEOF_LONG == 8 -typedef unsigned long uint64; +typedef unsigned long uint64_t;  #elif SIZEOF_LONG_LONG == 8  #ifdef PHP_WIN32 -typedef unsigned __int64 uint64; +typedef unsigned __int64 uint64_t;  #else -typedef unsigned long long uint64; +typedef unsigned long long uint64_t;  #endif  #else  #error "Neither int nor long nor long long is of 8 bytes width"  #endif -#endif /* HAVE_INT64 */ +#endif /* HAVE_INT64_T */  #ifdef PHP_WIN32  #define MYSQLND_LLU_SPEC "%I64u"  #define MYSQLND_LL_SPEC "%I64d" +#define MYSQLND_SZ_T_SPEC "%Id"  #ifndef L64  #define L64(x) x##i64  #endif  #else  #define MYSQLND_LLU_SPEC "%llu"  #define MYSQLND_LL_SPEC "%lld" +#define MYSQLND_SZ_T_SPEC "%zd"  #ifndef L64  #define L64(x) x##LL  #endif  #endif -typedef int64 longlong; -typedef uint64 ulonglong; +typedef int64_t longlong; +typedef uint64_t ulonglong;  #define int1store(T,A)	do { *((zend_uchar*) (T)) = (A); } while(0) -#define uint1korr(A)	(*(((uint8*)(A)))) +#define uint1korr(A)	(*(((uint8_t*)(A))))  /* Bit values are sent in reverted order of bytes, compared to normal !!! */ -#define bit_uint2korr(A) ((uint16) (((uint16) (((uchar*) (A))[1])) +\ -									((uint16) (((uchar*) (A))[0]) << 8))) -#define bit_uint3korr(A) ((uint32) (((uint32) (((uchar*) (A))[2])) +\ -									(((uint32) (((uchar*) (A))[1])) << 8) +\ -									(((uint32) (((uchar*) (A))[0])) << 16))) - -#define bit_uint4korr(A) ((uint32) (((uint32) (((uchar*) (A))[3])) +\ -									(((uint32) (((uchar*) (A))[2])) << 8) +\ -									(((uint32) (((uchar*) (A))[1])) << 16) +\ -									(((uint32) (((uchar*) (A))[0])) << 24))) - -#define bit_uint5korr(A)  ((ulonglong)(((uint32) ((uchar) (A)[4])) +\ -                                  (((uint32) ((uchar) (A)[3])) << 8) +\ -                                  (((uint32) ((uchar) (A)[2])) << 16) +\ -                                  (((uint32) ((uchar) (A)[1])) << 24)) +\ +#define bit_uint2korr(A) ((uint16_t) (((uint16_t) (((uchar*) (A))[1])) +\ +									((uint16_t) (((uchar*) (A))[0]) << 8))) +#define bit_uint3korr(A) ((uint32_t) (((uint32_t) (((uchar*) (A))[2])) +\ +									(((uint32_t) (((uchar*) (A))[1])) << 8) +\ +									(((uint32_t) (((uchar*) (A))[0])) << 16))) + +#define bit_uint4korr(A) ((uint32_t) (((uint32_t) (((uchar*) (A))[3])) +\ +									(((uint32_t) (((uchar*) (A))[2])) << 8) +\ +									(((uint32_t) (((uchar*) (A))[1])) << 16) +\ +									(((uint32_t) (((uchar*) (A))[0])) << 24))) + +#define bit_uint5korr(A)  ((ulonglong)(((uint32_t) ((uchar) (A)[4])) +\ +                                  (((uint32_t) ((uchar) (A)[3])) << 8) +\ +                                  (((uint32_t) ((uchar) (A)[2])) << 16) +\ +                                  (((uint32_t) ((uchar) (A)[1])) << 24)) +\                                 (((ulonglong) ((uchar) (A)[0])) << 32)) -#define bit_uint6korr(A)	((ulonglong)(((uint32) (((uchar*) (A))[5])) +\ -									(((uint32) (((uchar*) (A))[4])) << 8) +\ -									(((uint32) (((uchar*) (A))[3])) << 16) +\ -									(((uint32) (((uchar*) (A))[2])) << 24)) +\ -									(((ulonglong) (((uint32) (((uchar*) (A))[1])) +\ -									(((uint32) (((uchar*) (A))[0]) << 8)))) << 32)) +#define bit_uint6korr(A)	((ulonglong)(((uint32_t) (((uchar*) (A))[5])) +\ +									(((uint32_t) (((uchar*) (A))[4])) << 8) +\ +									(((uint32_t) (((uchar*) (A))[3])) << 16) +\ +									(((uint32_t) (((uchar*) (A))[2])) << 24)) +\ +									(((ulonglong) (((uint32_t) (((uchar*) (A))[1])) +\ +									(((uint32_t) (((uchar*) (A))[0]) << 8)))) << 32)) -#define bit_uint7korr(A)	((ulonglong)(((uint32) (((uchar*) (A))[6])) +\ -									(((uint32) (((uchar*) (A))[5])) << 8) +\ -									(((uint32) (((uchar*) (A))[4])) << 16) +\ -									(((uint32) (((uchar*) (A))[3])) << 24)) +\ -									(((ulonglong) (((uint32) (((uchar*) (A))[2])) +\ -									(((uint32) (((uchar*) (A))[1])) << 8) +\ -									(((uint32) (((uchar*) (A))[0])) << 16))) << 32)) +#define bit_uint7korr(A)	((ulonglong)(((uint32_t) (((uchar*) (A))[6])) +\ +									(((uint32_t) (((uchar*) (A))[5])) << 8) +\ +									(((uint32_t) (((uchar*) (A))[4])) << 16) +\ +									(((uint32_t) (((uchar*) (A))[3])) << 24)) +\ +									(((ulonglong) (((uint32_t) (((uchar*) (A))[2])) +\ +									(((uint32_t) (((uchar*) (A))[1])) << 8) +\ +									(((uint32_t) (((uchar*) (A))[0])) << 16))) << 32)) -#define bit_uint8korr(A) ((ulonglong)(((uint32) (((uchar*) (A))[7])) +\ -									(((uint32) (((uchar*) (A))[6])) << 8) +\ -									(((uint32) (((uchar*) (A))[5])) << 16) +\ -									(((uint32) (((uchar*) (A))[4])) << 24)) +\ -									(((ulonglong) (((uint32) (((uchar*) (A))[3])) +\ -									(((uint32) (((uchar*) (A))[2])) << 8) +\ -									(((uint32) (((uchar*) (A))[1])) << 16) +\ -									(((uint32) (((uchar*) (A))[0])) << 24))) << 32)) +#define bit_uint8korr(A) ((ulonglong)(((uint32_t) (((uchar*) (A))[7])) +\ +									(((uint32_t) (((uchar*) (A))[6])) << 8) +\ +									(((uint32_t) (((uchar*) (A))[5])) << 16) +\ +									(((uint32_t) (((uchar*) (A))[4])) << 24)) +\ +									(((ulonglong) (((uint32_t) (((uchar*) (A))[3])) +\ +									(((uint32_t) (((uchar*) (A))[2])) << 8) +\ +									(((uint32_t) (((uchar*) (A))[1])) << 16) +\ +									(((uint32_t) (((uchar*) (A))[0])) << 24))) << 32))  /* @@ -235,31 +237,31 @@ typedef uint64 ulonglong;  /* Optimized store functions for Intel x86, non-valid for WIN64 */  #if defined(__i386__) && !defined(_WIN64) -#define sint2korr(A)    (*((int16 *) (A))) -#define sint3korr(A)    ((int32) ((((uchar) (A)[2]) & 128) ? \ -                   (((uint32) 255L << 24) | \ -                   (((uint32) (uchar) (A)[2]) << 16) |\ -                   (((uint32) (uchar) (A)[1]) << 8) | \ -                    ((uint32) (uchar) (A)[0])) : \ -                   (((uint32) (uchar) (A)[2]) << 16) |\ -                   (((uint32) (uchar) (A)[1]) << 8) | \ -                    ((uint32) (uchar) (A)[0]))) +#define sint2korr(A)    (*((int16_t *) (A))) +#define sint3korr(A)    ((int32_t) ((((uchar) (A)[2]) & 128) ? \ +                   (((uint32_t) 255L << 24) | \ +                   (((uint32_t) (uchar) (A)[2]) << 16) |\ +                   (((uint32_t) (uchar) (A)[1]) << 8) | \ +                    ((uint32_t) (uchar) (A)[0])) : \ +                   (((uint32_t) (uchar) (A)[2]) << 16) |\ +                   (((uint32_t) (uchar) (A)[1]) << 8) | \ +                    ((uint32_t) (uchar) (A)[0])))  #define sint4korr(A)  (*((long *) (A))) -#define uint2korr(A)  (*((uint16 *) (A))) -#define uint3korr(A)  (uint32) (((uint32) ((uchar) (A)[0])) +\ -                               (((uint32) ((uchar) (A)[1])) << 8) +\ -                               (((uint32) ((uchar) (A)[2])) << 16)) +#define uint2korr(A)  (*((uint16_t *) (A))) +#define uint3korr(A)  (uint32_t) (((uint32_t) ((uchar) (A)[0])) +\ +                               (((uint32_t) ((uchar) (A)[1])) << 8) +\ +                               (((uint32_t) ((uchar) (A)[2])) << 16))  #define uint4korr(A)  (*((unsigned long *) (A)))  #define uint8korr(A)    (*((ulonglong *) (A)))  #define sint8korr(A)    (*((longlong *) (A))) -#define int2store(T,A)    *((uint16*) (T))= (uint16) (A) +#define int2store(T,A)    *((uint16_t*) (T))= (uint16_t) (A)  #define int3store(T,A)   { \                    *(T)=  (uchar) ((A));\ -                  *(T+1)=(uchar) (((uint) (A) >> 8));\ +                  *(T+1)=(uchar) (((uint32_t) (A) >> 8));\                    *(T+2)=(uchar) (((A) >> 16)); }  #define int4store(T,A)    *((long *) (T))= (long) (A)  #define int5store(T,A)    { \ @@ -278,7 +280,7 @@ typedef uint64 ulonglong;                *(((uchar *)(T))+4))=(uchar) (((A) >> 32)); \                *(((uchar *)(T))+5))=(uchar) (((A) >> 40)); } -#define int8store(T,A)    *((ulonglong *) (T))= (ulonglong) (A) +#define int8_tstore(T,A)    *((ulonglong *) (T))= (ulonglong) (A)  typedef union {    double v; @@ -298,53 +300,53 @@ typedef union {  #endif /* __i386__ */   #ifndef sint2korr -#define sint2korr(A)    (int16) (((int16) ((uchar) (A)[0])) +\ -                                 ((int16) ((int16) (A)[1]) << 8)) -#define sint3korr(A)    ((int32) ((((uchar) (A)[2]) & 128) ? \ -                  (((uint32) 255L << 24) | \ -                  (((uint32) (uchar) (A)[2]) << 16) |\ -                  (((uint32) (uchar) (A)[1]) << 8) | \ -                   ((uint32) (uchar) (A)[0])) : \ -                  (((uint32) (uchar) (A)[2]) << 16) |\ -                  (((uint32) (uchar) (A)[1]) << 8) | \ -                  ((uint32) (uchar) (A)[0]))) -#define sint4korr(A)  (int32) (((int32) ((uchar) (A)[0])) +\ -                              (((int32) ((uchar) (A)[1]) << 8)) +\ -                              (((int32) ((uchar) (A)[2]) << 16)) +\ -                              (((int32) ((int16) (A)[3]) << 24))) +#define sint2korr(A)    (int16_t) (((int16_t) ((uchar) (A)[0])) +\ +                                 ((int16_t) ((int16_t) (A)[1]) << 8)) +#define sint3korr(A)    ((int32_t) ((((uchar) (A)[2]) & 128) ? \ +                  (((uint32_t) 255L << 24) | \ +                  (((uint32_t) (uchar) (A)[2]) << 16) |\ +                  (((uint32_t) (uchar) (A)[1]) << 8) | \ +                   ((uint32_t) (uchar) (A)[0])) : \ +                  (((uint32_t) (uchar) (A)[2]) << 16) |\ +                  (((uint32_t) (uchar) (A)[1]) << 8) | \ +                  ((uint32_t) (uchar) (A)[0]))) +#define sint4korr(A)  (int32_t) (((int32_t) ((uchar) (A)[0])) +\ +                              (((int32_t) ((uchar) (A)[1]) << 8)) +\ +                              (((int32_t) ((uchar) (A)[2]) << 16)) +\ +                              (((int32_t) ((int16_t) (A)[3]) << 24)))  #define sint8korr(A)  (longlong) uint8korr(A) -#define uint2korr(A)  (uint16) (((uint16) ((uchar) (A)[0])) +\ -                               ((uint16) ((uchar) (A)[1]) << 8)) -#define uint3korr(A)  (uint32) (((uint32) ((uchar) (A)[0])) +\ -                               (((uint32) ((uchar) (A)[1])) << 8) +\ -                               (((uint32) ((uchar) (A)[2])) << 16)) -#define uint4korr(A)  (uint32) (((uint32) ((uchar) (A)[0])) +\ -                               (((uint32) ((uchar) (A)[1])) << 8) +\ -                               (((uint32) ((uchar) (A)[2])) << 16) +\ -                               (((uint32) ((uchar) (A)[3])) << 24)) - - -#define bit_uint8korr(A) ((ulonglong)(((uint32) (((uchar*) (A))[7])) +\ -									(((uint32) (((uchar*) (A))[6])) << 8) +\ -									(((uint32) (((uchar*) (A))[5])) << 16) +\ -									(((uint32) (((uchar*) (A))[4])) << 24)) +\ -									(((ulonglong) (((uint32) (((uchar*) (A))[3])) +\ -									(((uint32) (((uchar*) (A))[2])) << 8) +\ -									(((uint32) (((uchar*) (A))[1])) << 16) +\ -									(((uint32) (((uchar*) (A))[0])) << 24))) << 32)) - -#define uint8korr(A)	((ulonglong)(((uint32) ((uchar) (A)[0])) +\ -									(((uint32) ((uchar) (A)[1])) << 8) +\ -									(((uint32) ((uchar) (A)[2])) << 16) +\ -									(((uint32) ((uchar) (A)[3])) << 24)) +\ -									(((ulonglong) (((uint32) ((uchar) (A)[4])) +\ -									(((uint32) ((uchar) (A)[5])) << 8) +\ -									(((uint32) ((uchar) (A)[6])) << 16) +\ -									(((uint32) ((uchar) (A)[7])) << 24))) << 32)) - - -#define int2store(T,A)  do { uint def_temp= (uint) (A) ;\ +#define uint2korr(A)  (uint16_t) (((uint16_t) ((uchar) (A)[0])) +\ +                               ((uint16_t) ((uchar) (A)[1]) << 8)) +#define uint3korr(A)  (uint32_t) (((uint32_t) ((uchar) (A)[0])) +\ +                               (((uint32_t) ((uchar) (A)[1])) << 8) +\ +                               (((uint32_t) ((uchar) (A)[2])) << 16)) +#define uint4korr(A)  (uint32_t) (((uint32_t) ((uchar) (A)[0])) +\ +                               (((uint32_t) ((uchar) (A)[1])) << 8) +\ +                               (((uint32_t) ((uchar) (A)[2])) << 16) +\ +                               (((uint32_t) ((uchar) (A)[3])) << 24)) + + +#define bit_uint8korr(A) ((ulonglong)(((uint32_t) (((uchar*) (A))[7])) +\ +									(((uint32_t) (((uchar*) (A))[6])) << 8) +\ +									(((uint32_t) (((uchar*) (A))[5])) << 16) +\ +									(((uint32_t) (((uchar*) (A))[4])) << 24)) +\ +									(((ulonglong) (((uint32_t) (((uchar*) (A))[3])) +\ +									(((uint32_t) (((uchar*) (A))[2])) << 8) +\ +									(((uint32_t) (((uchar*) (A))[1])) << 16) +\ +									(((uint32_t) (((uchar*) (A))[0])) << 24))) << 32)) + +#define uint8korr(A)	((ulonglong)(((uint32_t) ((uchar) (A)[0])) +\ +									(((uint32_t) ((uchar) (A)[1])) << 8) +\ +									(((uint32_t) ((uchar) (A)[2])) << 16) +\ +									(((uint32_t) ((uchar) (A)[3])) << 24)) +\ +									(((ulonglong) (((uint32_t) ((uchar) (A)[4])) +\ +									(((uint32_t) ((uchar) (A)[5])) << 8) +\ +									(((uint32_t) ((uchar) (A)[6])) << 16) +\ +									(((uint32_t) ((uchar) (A)[7])) << 24))) << 32)) + + +#define int2store(T,A)  do { uint32_t def_temp= (uint32_t) (A) ;\                    *((uchar*) (T))  =  (uchar)(def_temp); \                    *((uchar*) (T+1)) = (uchar)((def_temp >> 8)); } while (0)  #define int3store(T,A)  do { /*lint -save -e734 */\ @@ -371,7 +373,7 @@ typedef union {                    *(((char *)(T))+3) = (char)(((A) >> 24)); \                    *(((char *)(T))+4) = (char)(((A) >> 32)); \                    *(((char *)(T))+5) = (char)(((A) >> 40)); } while (0) -#define int8store(T,A)        { uint def_temp= (uint) (A), def_temp2= (uint) ((A) >> 32); \ +#define int8store(T,A)        { uint32_t def_temp= (uint32_t) (A), def_temp2= (uint32_t) ((A) >> 32); \                    int4store((T),def_temp); \                    int4store((T+4),def_temp2); \                  } @@ -447,24 +449,24 @@ typedef union {  #ifdef WORDS_BIGENDIAN -#define ushortget(V,M)  { V = (uint16) (((uint16) ((uchar) (M)[1]))+\ -                                        ((uint16) ((uint16) (M)[0]) << 8)); } -#define shortget(V,M)   { V = (short) (((short) ((uchar) (M)[1]))+\ -                                       ((short) ((short) (M)[0]) << 8)); } -#define longget(V,M)    do { int32 def_temp;\ +#define ushortget(V,M)  { V = (uint16_t) (((uint16_t) ((uchar) (M)[1]))+\ +                                        ((uint16_t) ((uint16_t) (M)[0]) << 8)); } +#define shortget(V,M)   { V = (int16_t) (((int16_t) ((uchar) (M)[1]))+\ +                                       ((int16_t) ((int16_t) (M)[0]) << 8)); } +#define longget(V,M)    do { int32_t def_temp;\                ((char*) &def_temp)[0]=(M)[0];\                ((char*) &def_temp)[1]=(M)[1];\                ((char*) &def_temp)[2]=(M)[2];\                ((char*) &def_temp)[3]=(M)[3];\                (V)=def_temp; } while (0) -#define ulongget(V,M)    do { uint32 def_temp;\ +#define ulongget(V,M)    do { uint32_t def_temp;\                ((char*) &def_temp)[0]=(M)[0];\                ((char*) &def_temp)[1]=(M)[1];\                ((char*) &def_temp)[2]=(M)[2];\                ((char*) &def_temp)[3]=(M)[3];\                (V)=def_temp; }  while (0)  #define shortstore(T,A) do { \ -              uint def_temp=(uint) (A) ;\ +              uint32_t def_temp=(uint32_t) (A) ;\                *(((char *)(T))+1)=(char)(def_temp); \                *(((char *)(T))+0)=(char)(def_temp >> 8); } while (0)  #define longstore(T,A)  do { \  | 
