Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 04 Nov 1995 02:03:54 +0900
From:      KATO Takenori <kato@eclogite.eps.nagoya-u.ac.jp>
To:        freebsd-bugs@freefall.freebsd.org, bde@zeta.org.au
Subject:   Re: bin/809: printf goroup bug [`.' optional precision]
Message-ID:  <199511031703.CAA08762@marble.eps.nagoya-u.ac.jp>
In-Reply-To: Your message of "Fri, 3 Nov 1995 01:10:02 -0800"
References:  <199511030910.BAA00216@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
I've made a fix for vfprintf bug.  Please take a look.

>  	printf("%.3d\n", -1);
>  	printf("%.3d\n", 1);
>  	printf("%+.3d\n", -1);
>  	printf("%+.3d\n", 1);
>  	printf("% .3d\n", -1);
>  	printf("% .3d\n", 1);
>  	printf("%#.3x\n", 1);

gives the following result:

-001
001
-001
+001
-001
 001
0x001

---------- BEGIN ----------
*** vfprintf.c.old	Sat Nov  4 00:29:15 1995
--- vfprintf.c	Sat Nov  4 00:32:44 1995
***************
*** 695,706 ****
  		 * Compute actual size, so we know how much to pad.
  		 * fieldsz excludes decimal prec; realsz includes it.
  		 */
! 		fieldsz = size;
  		if (sign)
! 			fieldsz++;
  		else if (flags & HEXPREFIX)
! 			fieldsz += 2;
! 		realsz = dprec > fieldsz ? dprec : fieldsz;
  
  		/* right-adjusting blank padding */
  		if ((flags & (LADJUST|ZEROPAD)) == 0)
--- 695,705 ----
  		 * Compute actual size, so we know how much to pad.
  		 * fieldsz excludes decimal prec; realsz includes it.
  		 */
! 		realsz = dprec > size ? dprec : size;
  		if (sign)
! 		    realsz++;
  		else if (flags & HEXPREFIX)
! 			realsz += 2;
  
  		/* right-adjusting blank padding */
  		if ((flags & (LADJUST|ZEROPAD)) == 0)
***************
*** 720,726 ****
  			PAD(width - realsz, zeroes);
  
  		/* leading zeroes from decimal precision */
! 		PAD(dprec - fieldsz, zeroes);
  
  		/* the string or number proper */
  #ifdef FLOATING_POINT
--- 719,725 ----
  			PAD(width - realsz, zeroes);
  
  		/* leading zeroes from decimal precision */
! 		PAD(dprec - size, zeroes);
  
  		/* the string or number proper */
  #ifdef FLOATING_POINT
---------- END ----------

----
KATO Takenori
Dept. Earth Planet. Sci. Nagoya Univ.  Nagoya 464-01 JAPAN
Voice: +81-52-789-2529   E-mail: kato@eclogite.eps.nagoya-u.ac.jp




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199511031703.CAA08762>