diff options
| author | kleink <kleink@NetBSD.org> | 2001-12-02 20:12:03 +0000 |
|---|---|---|
| committer | kleink <kleink@NetBSD.org> | 2001-12-02 20:12:03 +0000 |
| commit | dcf4ce2588d281b763542cefebafc07b76743014 (patch) | |
| tree | bedc36cb83c98e819e2e8c3763bc5f70c390a8e0 /lib/libc/stdio/vfprintf.c | |
| parent | fbd78c8e3c19fb909fcb588ffc8e8d52e42bded6 (diff) | |
C99:
* Recognize %F.
* Convert {Infinity,NaN} to {"inf","nan"} for %[efg], and to
{"INF","NAN"} for %[EFG].
Diffstat (limited to 'lib/libc/stdio/vfprintf.c')
| -rw-r--r-- | lib/libc/stdio/vfprintf.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/libc/stdio/vfprintf.c b/lib/libc/stdio/vfprintf.c index f042f383829..e0280dbb782 100644 --- a/lib/libc/stdio/vfprintf.c +++ b/lib/libc/stdio/vfprintf.c @@ -1,4 +1,4 @@ -/* $NetBSD: vfprintf.c,v 1.40 2001/11/28 11:58:22 kleink Exp $ */ +/* $NetBSD: vfprintf.c,v 1.41 2001/12/02 20:12:03 kleink Exp $ */ /*- * Copyright (c) 1990 The Regents of the University of California. @@ -41,7 +41,7 @@ #if 0 static char *sccsid = "@(#)vfprintf.c 5.50 (Berkeley) 12/16/92"; #else -__RCSID("$NetBSD: vfprintf.c,v 1.40 2001/11/28 11:58:22 kleink Exp $"); +__RCSID("$NetBSD: vfprintf.c,v 1.41 2001/12/02 20:12:03 kleink Exp $"); #endif #endif /* LIBC_SCCS and not lint */ @@ -469,6 +469,7 @@ reswitch: switch (ch) { case 'e': case 'E': case 'f': + case 'F': case 'g': case 'G': if (prec == -1) { @@ -487,12 +488,18 @@ reswitch: switch (ch) { if (isinf(_double)) { if (_double < 0) sign = '-'; - cp = "Inf"; + if (ch == 'E' || ch == 'F' || ch == 'G') + cp = "INF"; + else + cp = "inf"; size = 3; break; } if (isnan(_double)) { - cp = "NaN"; + if (ch == 'E' || ch == 'F' || ch == 'G') + cp = "NAN"; + else + cp = "nan"; size = 3; break; } @@ -506,13 +513,13 @@ reswitch: switch (ch) { else ch = 'g'; } - if (ch <= 'e') { /* 'e' or 'E' fmt */ + if (ch == 'e' || ch == 'E') { --expt; expsize = exponent(expstr, expt, ch); size = expsize + ndig; if (ndig > 1 || flags & ALT) ++size; - } else if (ch == 'f') { /* f fmt */ + } else if (ch == 'f' || ch == 'F') { if (expt > 0) { size = expt; if (prec || flags & ALT) |
