diff options
author | davi <davi@13f79535-47bb-0310-9956-ffa450edef68> | 2007-07-06 00:46:53 +0000 |
---|---|---|
committer | davi <davi@13f79535-47bb-0310-9956-ffa450edef68> | 2007-07-06 00:46:53 +0000 |
commit | 2e2b0adf2d49acdee49c29d56b41c73a2893bc3b (patch) | |
tree | b2ed82e25db4bc516aa04f23326d91dd26665b1d /strings/apr_snprintf.c | |
parent | 883ec0bbe77d1c6752269181a577812274c0a941 (diff) | |
download | libapr-2e2b0adf2d49acdee49c29d56b41c73a2893bc3b.tar.gz |
Convert wide* types to the portable apr types. Conversion table:
wide_int apr_int32_t
u_wide_int apr_uint32_t
widest_int apr_int64_t
u_widest_int apr_uint64_t
bool_int int
Passes testfmt.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@553679 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'strings/apr_snprintf.c')
-rw-r--r-- | strings/apr_snprintf.c | 115 |
1 files changed, 50 insertions, 65 deletions
diff --git a/strings/apr_snprintf.c b/strings/apr_snprintf.c index 5710c73c1..0213964e4 100644 --- a/strings/apr_snprintf.c +++ b/strings/apr_snprintf.c @@ -53,18 +53,6 @@ typedef enum { #define TRUE 1 #endif #define NUL '\0' -#define WIDE_INT long - -typedef WIDE_INT wide_int; -typedef unsigned WIDE_INT u_wide_int; -typedef apr_int64_t widest_int; -#ifdef __TANDEM -/* Although Tandem supports "long long" there is no unsigned variant. */ -typedef unsigned long u_widest_int; -#else -typedef apr_uint64_t u_widest_int; -#endif -typedef int bool_int; #define S_NULL "(null)" #define S_NULL_LEN 6 @@ -338,12 +326,12 @@ while (width > len) * (conv_10_quad), the other when we don't (conv_10). We're assuming the * latter is faster. */ -static char *conv_10(register wide_int num, register bool_int is_unsigned, - register bool_int *is_negative, char *buf_end, +static char *conv_10(register apr_int32_t num, register int is_unsigned, + register int *is_negative, char *buf_end, register apr_size_t *len) { register char *p = buf_end; - register u_wide_int magnitude = num; + register apr_uint32_t magnitude = num; if (is_unsigned) { *is_negative = FALSE; @@ -361,8 +349,8 @@ static char *conv_10(register wide_int num, register bool_int is_unsigned, * d. add 1 */ if (*is_negative) { - wide_int t = num + 1; - magnitude = ((u_wide_int) -t) + 1; + apr_int32_t t = num + 1; + magnitude = ((apr_uint32_t) -t) + 1; } } @@ -370,7 +358,7 @@ static char *conv_10(register wide_int num, register bool_int is_unsigned, * We use a do-while loop so that we write at least 1 digit */ do { - register u_wide_int new_magnitude = magnitude / 10; + register apr_uint32_t new_magnitude = magnitude / 10; *--p = (char) (magnitude - new_magnitude * 10 + '0'); magnitude = new_magnitude; @@ -381,22 +369,21 @@ static char *conv_10(register wide_int num, register bool_int is_unsigned, return (p); } -static char *conv_10_quad(widest_int num, register bool_int is_unsigned, - register bool_int *is_negative, char *buf_end, +static char *conv_10_quad(apr_int64_t num, register int is_unsigned, + register int *is_negative, char *buf_end, register apr_size_t *len) { register char *p = buf_end; - u_widest_int magnitude = num; + apr_uint64_t magnitude = num; /* * We see if we can use the faster non-quad version by checking the * number against the largest long value it can be. If <=, we * punt to the quicker version. */ - if ((magnitude <= ULONG_MAX && is_unsigned) - || (num <= LONG_MAX && num >= LONG_MIN && !is_unsigned)) - return(conv_10( (wide_int)num, is_unsigned, is_negative, - buf_end, len)); + if ((magnitude <= UINT32_MAX && is_unsigned) + || (num <= INT32_MAX && num >= INT32_MIN && !is_unsigned)) + return(conv_10(num, is_unsigned, is_negative, buf_end, len)); if (is_unsigned) { *is_negative = FALSE; @@ -414,8 +401,8 @@ static char *conv_10_quad(widest_int num, register bool_int is_unsigned, * d. add 1 */ if (*is_negative) { - widest_int t = num + 1; - magnitude = ((u_widest_int) -t) + 1; + apr_int64_t t = num + 1; + magnitude = ((apr_uint64_t) -t) + 1; } } @@ -423,7 +410,7 @@ static char *conv_10_quad(widest_int num, register bool_int is_unsigned, * We use a do-while loop so that we write at least 1 digit */ do { - u_widest_int new_magnitude = magnitude / 10; + apr_uint64_t new_magnitude = magnitude / 10; *--p = (char) (magnitude - new_magnitude * 10 + '0'); magnitude = new_magnitude; @@ -434,13 +421,11 @@ static char *conv_10_quad(widest_int num, register bool_int is_unsigned, return (p); } - - static char *conv_in_addr(struct in_addr *ia, char *buf_end, apr_size_t *len) { unsigned addr = ntohl(ia->s_addr); char *p = buf_end; - bool_int is_negative; + int is_negative; apr_size_t sub_len; p = conv_10((addr & 0x000000FF) , TRUE, &is_negative, p, &sub_len); @@ -461,7 +446,7 @@ static char *conv_in_addr(struct in_addr *ia, char *buf_end, apr_size_t *len) static char *conv_apr_sockaddr(apr_sockaddr_t *sa, char *buf_end, apr_size_t *len) { char *p = buf_end; - bool_int is_negative; + int is_negative; apr_size_t sub_len; char *ipaddr_str; @@ -529,7 +514,7 @@ static char *conv_os_thread_t(apr_os_thread_t *tid, char *buf_end, apr_size_t *l * in buf). */ static char *conv_fp(register char format, register double num, - boolean_e add_dp, int precision, bool_int *is_negative, + boolean_e add_dp, int precision, int *is_negative, char *buf, apr_size_t *len) { register char *s = buf; @@ -585,12 +570,12 @@ static char *conv_fp(register char format, register double num, if (format != 'f') { char temp[EXPONENT_LENGTH]; /* for exponent conversion */ apr_size_t t_len; - bool_int exponent_is_negative; + int exponent_is_negative; *s++ = format; /* either e or E */ decimal_point--; if (decimal_point != 0) { - p = conv_10((wide_int) decimal_point, FALSE, &exponent_is_negative, + p = conv_10((apr_int32_t) decimal_point, FALSE, &exponent_is_negative, &temp[EXPONENT_LENGTH], &t_len); *s++ = exponent_is_negative ? '-' : '+'; @@ -627,7 +612,7 @@ static char *conv_fp(register char format, register double num, * As with conv_10, we have a faster version which is used when * the number isn't quad size. */ -static char *conv_p2(register u_wide_int num, register int nbits, +static char *conv_p2(register apr_uint32_t num, register int nbits, char format, char *buf_end, register apr_size_t *len) { register int mask = (1 << nbits) - 1; @@ -646,7 +631,7 @@ static char *conv_p2(register u_wide_int num, register int nbits, return (p); } -static char *conv_p2_quad(u_widest_int num, register int nbits, +static char *conv_p2_quad(apr_uint64_t num, register int nbits, char format, char *buf_end, register apr_size_t *len) { register int mask = (1 << nbits) - 1; @@ -655,8 +640,8 @@ static char *conv_p2_quad(u_widest_int num, register int nbits, static const char upper_digits[] = "0123456789ABCDEF"; register const char *digits = (format == 'X') ? upper_digits : low_digits; - if (num <= ULONG_MAX) - return(conv_p2((u_wide_int)num, nbits, format, buf_end, len)); + if (num <= UINT32_MAX) + return(conv_p2((apr_uint32_t)num, nbits, format, buf_end, len)); do { *--p = digits[num & mask]; @@ -715,10 +700,10 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), char prefix_char; double fp_num; - widest_int i_quad = (widest_int) 0; - u_widest_int ui_quad; - wide_int i_num = (wide_int) 0; - u_wide_int ui_num; + apr_int64_t i_quad = 0; + apr_uint64_t ui_quad; + apr_int32_t i_num = 0; + apr_uint32_t ui_num; char num_buf[NUM_BUF_SIZE]; char char_buf[2]; /* for printing %% and %<unknown> */ @@ -736,7 +721,7 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), boolean_e print_blank; boolean_e adjust_precision; boolean_e adjust_width; - bool_int is_negative; + int is_negative; sp = vbuff->curpos; bep = vbuff->endpos; @@ -869,17 +854,17 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), switch (*fmt) { case 'u': if (var_type == IS_QUAD) { - i_quad = va_arg(ap, u_widest_int); + i_quad = va_arg(ap, apr_uint64_t); s = conv_10_quad(i_quad, 1, &is_negative, &num_buf[NUM_BUF_SIZE], &s_len); } else { if (var_type == IS_LONG) - i_num = (wide_int) va_arg(ap, u_wide_int); + i_num = (apr_int32_t) va_arg(ap, apr_uint32_t); else if (var_type == IS_SHORT) - i_num = (wide_int) (unsigned short) va_arg(ap, unsigned int); + i_num = (apr_int32_t) (unsigned short) va_arg(ap, unsigned int); else - i_num = (wide_int) va_arg(ap, unsigned int); + i_num = (apr_int32_t) va_arg(ap, unsigned int); s = conv_10(i_num, 1, &is_negative, &num_buf[NUM_BUF_SIZE], &s_len); } @@ -889,17 +874,17 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), case 'd': case 'i': if (var_type == IS_QUAD) { - i_quad = va_arg(ap, widest_int); + i_quad = va_arg(ap, apr_int64_t); s = conv_10_quad(i_quad, 0, &is_negative, &num_buf[NUM_BUF_SIZE], &s_len); } else { if (var_type == IS_LONG) - i_num = (wide_int) va_arg(ap, wide_int); + i_num = va_arg(ap, apr_int32_t); else if (var_type == IS_SHORT) - i_num = (wide_int) (short) va_arg(ap, int); + i_num = (short) va_arg(ap, int); else - i_num = (wide_int) va_arg(ap, int); + i_num = va_arg(ap, int); s = conv_10(i_num, 0, &is_negative, &num_buf[NUM_BUF_SIZE], &s_len); } @@ -916,17 +901,17 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), case 'o': if (var_type == IS_QUAD) { - ui_quad = va_arg(ap, u_widest_int); + ui_quad = va_arg(ap, apr_uint64_t); s = conv_p2_quad(ui_quad, 3, *fmt, &num_buf[NUM_BUF_SIZE], &s_len); } else { if (var_type == IS_LONG) - ui_num = (u_wide_int) va_arg(ap, u_wide_int); + ui_num = va_arg(ap, apr_uint32_t); else if (var_type == IS_SHORT) - ui_num = (u_wide_int) (unsigned short) va_arg(ap, unsigned int); + ui_num = (unsigned short) va_arg(ap, unsigned int); else - ui_num = (u_wide_int) va_arg(ap, unsigned int); + ui_num = va_arg(ap, unsigned int); s = conv_p2(ui_num, 3, *fmt, &num_buf[NUM_BUF_SIZE], &s_len); } @@ -941,17 +926,17 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), case 'x': case 'X': if (var_type == IS_QUAD) { - ui_quad = va_arg(ap, u_widest_int); + ui_quad = va_arg(ap, apr_uint64_t); s = conv_p2_quad(ui_quad, 4, *fmt, &num_buf[NUM_BUF_SIZE], &s_len); } else { if (var_type == IS_LONG) - ui_num = (u_wide_int) va_arg(ap, u_wide_int); + ui_num = va_arg(ap, apr_uint32_t); else if (var_type == IS_SHORT) - ui_num = (u_wide_int) (unsigned short) va_arg(ap, unsigned int); + ui_num = (unsigned short) va_arg(ap, unsigned int); else - ui_num = (u_wide_int) va_arg(ap, unsigned int); + ui_num = va_arg(ap, unsigned int); s = conv_p2(ui_num, 4, *fmt, &num_buf[NUM_BUF_SIZE], &s_len); } @@ -1089,7 +1074,7 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), case 'n': if (var_type == IS_QUAD) - *(va_arg(ap, widest_int *)) = cc; + *(va_arg(ap, apr_int64_t *)) = cc; else if (var_type == IS_LONG) *(va_arg(ap, long *)) = cc; else if (var_type == IS_SHORT) @@ -1113,14 +1098,14 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), */ case 'p': #if APR_SIZEOF_VOIDP == 8 - if (sizeof(void *) <= sizeof(u_widest_int)) { - ui_quad = (u_widest_int) va_arg(ap, void *); + if (sizeof(void *) <= sizeof(apr_uint64_t)) { + ui_quad = (apr_uint64_t) va_arg(ap, void *); s = conv_p2_quad(ui_quad, 4, 'x', &num_buf[NUM_BUF_SIZE], &s_len); } #else - if (sizeof(void *) <= sizeof(u_wide_int)) { - ui_num = (u_wide_int) va_arg(ap, void *); + if (sizeof(void *) <= sizeof(apr_uint32_t)) { + ui_num = (apr_uint32_t) va_arg(ap, void *); s = conv_p2(ui_num, 4, 'x', &num_buf[NUM_BUF_SIZE], &s_len); } |