Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Mar 1999 22:16:07 +1100
From:      Bruce Evans <bde@zeta.org.au>
To:        current@FreeBSD.ORG, dfr@nlsystems.com
Subject:   Re: Proposed change to printf
Message-ID:  <199903111116.WAA12554@godzilla.zeta.org.au>

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

>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.

Bruce


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?199903111116.WAA12554>