Deleted Added
full compact
vfprintf.c (5707) vfprintf.c (7033)
1/*-
2 * Copyright (c) 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Chris Torek.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 488 unchanged lines hidden (view full) ---

497 if ((long)ulval < 0) {
498 ulval = -ulval;
499 sign = '-';
500 }
501 }
502 base = 10;
503 goto number;
504#ifdef FLOATING_POINT
1/*-
2 * Copyright (c) 1990, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Chris Torek.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 488 unchanged lines hidden (view full) ---

497 if ((long)ulval < 0) {
498 ulval = -ulval;
499 sign = '-';
500 }
501 }
502 base = 10;
503 goto number;
504#ifdef FLOATING_POINT
505 case 'e': /* anomalous precision */
505 case 'e':
506 case 'E':
506 case 'E':
507 prec = (prec == -1) ?
508 DEFPREC + 1 : prec + 1;
509 /* FALLTHROUGH */
510 case 'f': /* always print trailing zeroes */
511 if (prec != 0)
512 flags |= ALT;
507 case 'f':
508 goto fp_begin;
513 case 'g':
514 case 'G':
509 case 'g':
510 case 'G':
515 if (prec == -1)
511 if (prec == 0)
512 prec = 1;
513fp_begin: if (prec == -1)
516 prec = DEFPREC;
514 prec = DEFPREC;
517fp_begin: _double = va_arg(ap, double);
515 if (flags & LONGDBL)
516 _double = (double)va_arg(ap, long double);
517 else
518 _double = va_arg(ap, double);
518 /* do this before tricky precision changes */
519 if (isinf(_double)) {
520 if (_double < 0)
521 sign = '-';
522 cp = "Inf";
523 size = 3;
524 break;
525 }

--- 197 unchanged lines hidden (view full) ---

723
724 /* the string or number proper */
725#ifdef FLOATING_POINT
726 if ((flags & FPT) == 0) {
727 PRINT(cp, size);
728 } else { /* glue together f_p fragments */
729 if (ch >= 'f') { /* 'f' or 'g' */
730 if (_double == 0) {
519 /* do this before tricky precision changes */
520 if (isinf(_double)) {
521 if (_double < 0)
522 sign = '-';
523 cp = "Inf";
524 size = 3;
525 break;
526 }

--- 197 unchanged lines hidden (view full) ---

724
725 /* the string or number proper */
726#ifdef FLOATING_POINT
727 if ((flags & FPT) == 0) {
728 PRINT(cp, size);
729 } else { /* glue together f_p fragments */
730 if (ch >= 'f') { /* 'f' or 'g' */
731 if (_double == 0) {
731 /* kludge for __dtoa irregularity */
732 if (prec == 0 ||
733 (flags & ALT) == 0) {
732 /* kludge for __dtoa irregularity */
733 if (prec == 0 && (flags & ALT) == 0) {
734 PRINT("0", 1);
735 } else {
736 PRINT("0.", 2);
737 PAD(ndig - 1, zeroes);
738 }
739 } else if (expt <= 0) {
740 PRINT("0.", 2);
741 PAD(-expt, zeroes);

--- 52 unchanged lines hidden (view full) ---

794 double value;
795 int ndigits, flags, *decpt, ch, *length;
796 char *sign;
797{
798 int mode, dsgn;
799 char *digits, *bp, *rve;
800
801 if (ch == 'f')
734 PRINT("0", 1);
735 } else {
736 PRINT("0.", 2);
737 PAD(ndig - 1, zeroes);
738 }
739 } else if (expt <= 0) {
740 PRINT("0.", 2);
741 PAD(-expt, zeroes);

--- 52 unchanged lines hidden (view full) ---

794 double value;
795 int ndigits, flags, *decpt, ch, *length;
796 char *sign;
797{
798 int mode, dsgn;
799 char *digits, *bp, *rve;
800
801 if (ch == 'f')
802 mode = 3;
802 mode = 3; /* ndigits after the decimal point */
803 else {
803 else {
804 mode = 2;
804 /*
805 * To obtain ndigits after the decimal point for the 'e'
806 * and 'E' formats, round to ndigits + 1 significant
807 * figures.
808 */
809 if (ch == 'e' || ch == 'E')
810 ndigits++;
811 mode = 2; /* ndigits significant digits */
805 }
806 if (value < 0) {
807 value = -value;
808 *sign = '-';
809 } else
810 *sign = '\000';
811 digits = __dtoa(value, mode, ndigits, decpt, &dsgn, &rve);
812 }
813 if (value < 0) {
814 value = -value;
815 *sign = '-';
816 } else
817 *sign = '\000';
818 digits = __dtoa(value, mode, ndigits, decpt, &dsgn, &rve);
812 if (flags & ALT) { /* Print trailing zeros */
819 if ((ch != 'g' && ch != 'G') || flags & ALT) {
820 /* print trailing zeros */
813 bp = digits + ndigits;
814 if (ch == 'f') {
815 if (*digits == '0' && value)
816 *decpt = -ndigits + 1;
817 bp += *decpt;
818 }
819 if (value == 0) /* kludge for __dtoa irregularity */
820 rve = bp;

--- 38 unchanged lines hidden ---
821 bp = digits + ndigits;
822 if (ch == 'f') {
823 if (*digits == '0' && value)
824 *decpt = -ndigits + 1;
825 bp += *decpt;
826 }
827 if (value == 0) /* kludge for __dtoa irregularity */
828 rve = bp;

--- 38 unchanged lines hidden ---