jim 99/05/21 17:16:51
Modified: src/ap ap_snprintf.c
Log:
Really handle the short 'h' flag now
Revision Changes Path
1.29 +27 -4 apache-1.3/src/ap/ap_snprintf.c
Index: ap_snprintf.c
===================================================================
RCS file: /export/home/cvs/apache-1.3/src/ap/ap_snprintf.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- ap_snprintf.c 1999/05/21 22:41:43 1.28
+++ ap_snprintf.c 1999/05/22 00:16:50 1.29
@@ -585,6 +585,7 @@
/*
* Flag variables
*/
+ boolean_e is_short;
boolean_e is_long;
boolean_e is_quad;
boolean_e alternate_form;
@@ -687,18 +688,25 @@
if (*fmt == 'q') {
is_quad = YES;
is_long = NO;
+ is_short = NO;
fmt++;
}
else if (*fmt == 'l') {
+ is_quad = NO;
is_long = YES;
+ is_short = NO;
+ fmt++;
+ }
+ else if (*fmt == 'h') {
is_quad = NO;
+ is_long = NO;
+ is_short = YES;
fmt++;
}
else {
- if (*fmt == 'h') /* "short" backward compatibility */
- ++fmt;
- is_long = NO;
is_quad = NO;
+ is_long = NO;
+ is_short = NO;
}
/*
@@ -718,6 +726,8 @@
i_num = va_arg(ap, u_widest_int);
else if (is_long)
i_num = (widest_int) va_arg(ap, u_wide_int);
+ else if (is_short)
+ i_num = (widest_int) (unsigned short) va_arg(ap, unsigned
int);
else
i_num = (widest_int) va_arg(ap, unsigned int);
s = conv_10(i_num, 1, &is_negative,
@@ -731,6 +741,8 @@
i_num = va_arg(ap, widest_int);
else if (is_long)
i_num = (widest_int) va_arg(ap, wide_int);
+ else if (is_short)
+ i_num = (widest_int) (short) va_arg(ap, int);
else
i_num = (widest_int) va_arg(ap, int);
s = conv_10(i_num, 0, &is_negative,
@@ -751,6 +763,8 @@
ui_num = va_arg(ap, u_widest_int);
else if (is_long)
ui_num = (u_widest_int) va_arg(ap, u_wide_int);
+ else if (is_short)
+ ui_num = (u_widest_int) (unsigned short) va_arg(ap,
unsigned int);
else
ui_num = (u_widest_int) va_arg(ap, unsigned int);
s = conv_p2(ui_num, 3, *fmt,
@@ -769,6 +783,8 @@
ui_num = va_arg(ap, u_widest_int);
else if (is_long)
ui_num = (u_widest_int) va_arg(ap, u_wide_int);
+ else if (is_short)
+ ui_num = (u_widest_int) (unsigned short) va_arg(ap,
unsigned int);
else
ui_num = (u_widest_int) va_arg(ap, unsigned int);
s = conv_p2(ui_num, 4, *fmt,
@@ -862,7 +878,14 @@
case 'n':
- *(va_arg(ap, int *)) = cc;
+ if (is_quad)
+ *(va_arg(ap, widest_int *)) = cc;
+ else if (is_long)
+ *(va_arg(ap, long *)) = cc;
+ else if (is_short)
+ *(va_arg(ap, short *)) = cc;
+ else
+ *(va_arg(ap, int *)) = cc;
break;
/*