diff options
| author | Tim J. Robbins <tjr@FreeBSD.org> | 2003-04-14 12:15:59 +0000 |
|---|---|---|
| committer | Tim J. Robbins <tjr@FreeBSD.org> | 2003-04-14 12:15:59 +0000 |
| commit | d73c448b1cdd7f0755cd07c124d497bf616c8187 (patch) | |
| tree | e0c3d482653c6ffd92f546394dc385f47fcb9c24 /lib/libc | |
| parent | 3b74a935d67c1fa0c446459db4458a0260add9d3 (diff) | |
Notes
Diffstat (limited to 'lib/libc')
| -rw-r--r-- | lib/libc/stdio/vfwprintf.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/libc/stdio/vfwprintf.c b/lib/libc/stdio/vfwprintf.c index 3feacf2e4267..ee50d6408447 100644 --- a/lib/libc/stdio/vfwprintf.c +++ b/lib/libc/stdio/vfwprintf.c @@ -39,7 +39,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static char sccsid[] = "@(#)vfprintf.c 8.1 (Berkeley) 6/4/93"; #endif /* LIBC_SCCS and not lint */ -__FBSDID("FreeBSD: src/lib/libc/stdio/vfprintf.c,v 1.57 2003/04/07 03:17:39 ache Exp"); +__FBSDID("FreeBSD: src/lib/libc/stdio/vfprintf.c,v 1.58 2003/04/14 11:24:53 das Exp"); #endif __FBSDID("$FreeBSD$"); @@ -897,12 +897,14 @@ fp_begin: if (prec > 1 || flags & ALT) ++size; } else { - if (expt > 0) { + /* space for digits before decimal point */ + if (expt > 0) size = expt; - if (prec || flags & ALT) - size += prec + 1; - } else /* "0.X" */ - size = prec + 2; + else /* "0" */ + size = 1; + /* space for decimal pt and following digits */ + if (prec || flags & ALT) + size += prec + 1; if (grouping && expt > 0) { /* space for thousands' grouping */ nseps = nrepeats = 0; @@ -1135,9 +1137,9 @@ number: if ((dprec = prec) >= 0) } else { /* glue together f_p fragments */ if (!expchar) { /* %[fF] or sufficiently short %[gG] */ if (expt <= 0) { - buf[0] = '0'; - buf[1] = *decimal_point; - PRINT(buf, 2); + PRINT(zeroes, 1); + if (prec || flags & ALT) + PRINT(decimal_point, 1); PAD(-expt, zeroes); /* already handled initial 0's */ prec += expt; |
