Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Mar 1999 20:47:48 +0000 (GMT)
From:      Doug Rabson <dfr@nlsystems.com>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        current@freebsd.org
Subject:   Re: Proposed change to printf
Message-ID:  <Pine.BSF.4.05.9903112046340.27198-100000@herring.nlsystems.com>
In-Reply-To: <199903111116.WAA12554@godzilla.zeta.org.au>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.05.9903112046340.27198-100000>