From owner-freebsd-bugs Fri Nov 3 09:04:17 1995 Return-Path: owner-bugs Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id JAA18442 for bugs-outgoing; Fri, 3 Nov 1995 09:04:17 -0800 Received: from marble.eps.nagoya-u.ac.jp (marble.eps.nagoya-u.ac.jp [133.6.57.68]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id JAA18425 for ; Fri, 3 Nov 1995 09:04:04 -0800 Received: from marble.eps.nagoya-u.ac.jp (localhost [127.0.0.1]) by marble.eps.nagoya-u.ac.jp (8.6.12+2.4W/3.3W9) with ESMTP id CAA08762; Sat, 4 Nov 1995 02:03:55 +0900 Message-Id: <199511031703.CAA08762@marble.eps.nagoya-u.ac.jp> To: freebsd-bugs@freefall.freebsd.org, bde@zeta.org.au Subject: Re: bin/809: printf goroup bug [`.' optional precision] In-Reply-To: Your message of "Fri, 3 Nov 1995 01:10:02 -0800" References: <199511030910.BAA00216@freefall.freebsd.org> X-Mailer: Mew beta version 0.96 on Emacs 19.28.1, Mule 2.3 Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Date: Sat, 04 Nov 1995 02:03:54 +0900 From: KATO Takenori Sender: owner-bugs@FreeBSD.org Precedence: bulk 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