From owner-freebsd-current Thu Mar 11 12:47: 7 1999 Delivered-To: freebsd-current@freebsd.org Received: from herring.nlsystems.com (nlsys.demon.co.uk [158.152.125.33]) by hub.freebsd.org (Postfix) with ESMTP id DAC56151E5 for ; Thu, 11 Mar 1999 12:47:04 -0800 (PST) (envelope-from dfr@nlsystems.com) Received: from localhost (dfr@localhost) by herring.nlsystems.com (8.9.3/8.8.8) with ESMTP id UAA31228; Thu, 11 Mar 1999 20:47:48 GMT (envelope-from dfr@nlsystems.com) Date: Thu, 11 Mar 1999 20:47:48 +0000 (GMT) From: Doug Rabson To: Bruce Evans Cc: current@freebsd.org Subject: Re: Proposed change to printf In-Reply-To: <199903111116.WAA12554@godzilla.zeta.org.au> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Thu, 11 Mar 1999, Bruce Evans wrote: > >I want to make this change to printf so that it treats format codes like > >'%llx' as 64bit formats (i.e. the same as '%qx'). This convention is the > >same as that used by glibc. > > %llx is actually for unsigned long longs, and %qx is actually for > u_quad_t's. These types are different for FreeBSD on alphas. Printing > quad_t's using %llx should cause warnings from gcc -Wformat on alphas, > but printing them using %qx should work. I think gcc -Wformat doesn't > actually understand %q formats, so printing quad_t's using %qx gives > bogus warnings on alphas. > > However, %llx is more standard. It is in the C9x draft. %qx should go > away. Ok. > > >Index: vfprintf.c > >=================================================================== > >RCS file: /home/ncvs/src/lib/libc/stdio/vfprintf.c,v > >retrieving revision 1.20 > >diff -u -r1.20 vfprintf.c > >--- vfprintf.c 1998/09/16 04:17:44 1.20 > >+++ vfprintf.c 1999/02/20 10:20:08 > >@@ -545,7 +545,10 @@ > > flags |= SHORTINT; > > goto rflag; > > case 'l': > >- flags |= LONGINT; > >+ if (flags & LONGINT) > >+ flags |= QUADINT; > >+ else > >+ flags |= LONGINT; > > goto rflag; > > case 'q': > > flags |= QUADINT; > >@@ -1016,7 +1019,10 @@ > > flags |= SHORTINT; > > goto rflag; > > case 'l': > >- flags |= LONGINT; > >+ if (flags & LONGINT) > >+ flags |= QUADINT; > >+ else > >+ flags |= LONGINT; > > goto rflag; > > case 'q': > > flags |= QUADINT; > > This assumes that long longs have the same representation as quad_t's. > I suppose not doing a global change from quad_t to long long is best, > because the change should actually be to C9x's intmax_t to support C9x's > %m formats. So is the patch correct enough to commit then? -- Doug Rabson Mail: dfr@nlsystems.com Nonlinear Systems Ltd. Phone: +44 181 442 9037 To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message