On Sun, 2009-10-04 at 06:57 -0400, Thomas Dickey wrote:
> On Sun, 4 Oct 2009, Mark Kettenis wrote:
> >>> @@ -219,7 +219,7 @@ port_rep_inb(xf86Int10InfoPtr pInt,
> >>>      register int inc =3D d_f ? -1 : 1;
> >>>      CARD32 dst =3D base;
> >>>      if (PRINT_PORT && DEBUG_IO_TRACE())
> >>> - ErrorF(" rep_insb(%#x) %ld bytes at %8.8lx %s\n",
> >>> + ErrorF(" rep_insb(%#x) %" PRId32 " bytes at %8.8" PRIx32 " %s\n",
> >>>           port, count, base, d_f ? "up" : "down");
> >>>      while (count--) {
> >>>   MEM_WB(pInt, dst, x_inb(port));
> >>
> >> Is this portable beyond glibc? Alan? Matthieu?
> >
> > The PRId32 and PRIx32 defines are part of C99.
> >
> > That said, the consensus among many groups of developers is that they
> > are ugly, make the code harder to read and can be easily avoided by
> > using appropriate casts.
> 
> beyond being merely ugly, different versions of gcc give warnings for
> combinations that are quiet in other versions of gcc.

The problem in this particular case is that there's no pretty way to
silence these warnings, because CARD32 is effectively:

#if __ILP32
typedef unsigned long CARD32;
#elif __LP64
typedef unsigned int CARD32;
#endif

Which means you'd actually need different format strings on different
architectures.  We could (should) fix this the sane way:

typedef uint32_t CARD32;

Which would then assuredly trigger more format warnings elsewhere.

- ajax

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
xorg-devel mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to