* stdio-common/vfprintf.c: Remove limitation on size of precision
	for integers.
This commit is contained in:
Ulrich Drepper 1999-09-12 21:23:32 +00:00
parent 7814856974
commit 3e95f6602b
2 changed files with 53 additions and 50 deletions

View File

@ -1,5 +1,8 @@
1999-09-12 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/vfprintf.c: Remove limitation on size of precision
for integers.
* posix/fnmatch.c (internal_fnmatch): Make it compilable outside
glibc by defining internal_function if it isn't already.

View File

@ -687,19 +687,15 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
} \
} \
\
prec -= workend - string; \
\
if (prec > 0) \
/* Add zeros to the precision. */ \
while (prec-- > 0) \
*string-- = L_('0'); \
else if (number.word != 0 && alt && base == 8) \
if (prec <= workend - string && number.word != 0 && alt && base == 8) \
/* Add octal marker. */ \
*string-- = L_('0'); \
\
prec = MAX (0, prec - (workend - string)); \
\
if (!left) \
{ \
width -= workend - string; \
width -= workend - string + prec; \
\
if (number.word != 0 && alt && base == 16) \
/* Account for 0X hex marker. */ \
@ -708,63 +704,67 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
if (is_negative || showsign || space) \
--width; \
\
if (pad == L_('0')) \
if (pad == L_(' ')) \
{ \
while (width-- > 0) \
*string-- = L_('0'); \
\
if (number.word != 0 && alt && base == 16) \
{ \
*string-- = spec; \
*string-- = L_('0'); \
} \
\
if (is_negative) \
*string-- = L_('-'); \
else if (showsign) \
*string-- = L_('+'); \
else if (space) \
*string-- = L_(' '); \
PAD (L_(' ')); \
width = 0; \
} \
else \
\
if (is_negative) \
PUTC (L_('-'), s); \
else if (showsign) \
PUTC (L_('+'), s); \
else if (space) \
PUTC (L_(' '), s); \
\
if (number.word != 0 && alt && base == 16) \
{ \
if (number.word != 0 && alt && base == 16) \
{ \
*string-- = spec; \
*string-- = L_('0'); \
} \
\
if (is_negative) \
*string-- = L_('-'); \
else if (showsign) \
*string-- = L_('+'); \
else if (space) \
*string-- = L_(' '); \
\
while (width-- > 0) \
*string-- = L_(' '); \
PUTC (L_('0'), s); \
PUTC (spec, s); \
} \
\
width += prec; \
PAD (L_('0')); \
\
outstring (string + 1, workend - string); \
\
break; \
} \
else \
{ \
if (number.word != 0 && alt && base == 16) \
if (is_negative) \
{ \
*string-- = spec; \
*string-- = L_('0'); \
PUTC (L_('-'), s); \
--width; \
} \
else if (showsign) \
{ \
PUTC (L_('+'), s); \
--width; \
} \
else if (space) \
{ \
PUTC (L_(' '), s); \
--width; \
} \
\
if (is_negative) \
*string-- = L_('-'); \
else if (showsign) \
*string-- = L_('+'); \
else if (space) \
*string-- = L_(' '); \
if (number.word != 0 && alt && base == 16) \
{ \
PUTC (L_('0'), s); \
PUTC (spec, s); \
width -= 2; \
} \
\
width -= workend - string + prec; \
\
if (prec > 0) \
{ \
int temp = width; \
width = prec; \
PAD (L_('0'));; \
width = temp; \
} \
\
width -= workend - string; \
outstring (string + 1, workend - string); \
\
PAD (L_(' ')); \