summaryrefslogtreecommitdiff
path: root/lib/libc/stdio/vfprintf.c
diff options
context:
space:
mode:
authorkleink <kleink@NetBSD.org>2001-12-02 20:12:03 +0000
committerkleink <kleink@NetBSD.org>2001-12-02 20:12:03 +0000
commitdcf4ce2588d281b763542cefebafc07b76743014 (patch)
treebedc36cb83c98e819e2e8c3763bc5f70c390a8e0 /lib/libc/stdio/vfprintf.c
parentfbd78c8e3c19fb909fcb588ffc8e8d52e42bded6 (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.c19
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)