[libvirt] [PATCH libvirt 3/6] Fix warnings about pid_t printf format on mingw64

Marc-André Lureau mlureau at redhat.com
Thu Jan 26 00:22:30 UTC 2012


Hi

----- Mensaje original -----
> Also, I'm not quite convinced on your approach.  While it's nice to
> hide
> the type behind a macro:
> >  
> > +#ifdef _WIN64
> > +/* XXX gnu_printf prefers lld while non-gnu printf expect
> > PRId64... */
> 
> Libvirt should not be using non-gnu printf.  What function call gave
> you
> that warning, so that we can fix it to use gnu printf?

They come from fprintf and fscanf here:

util/virpidfile.c: In function 'virPidFileWritePath':
util/virpidfile.c:72:5: warning: unknown conversion type character 'l' in format [-Wformat]
util/virpidfile.c:72:5: warning: too many arguments for format [-Wformat-extra-args]
util/virpidfile.c: In function 'virPidFileReadPath':
util/virpidfile.c:130:5: warning: unknown conversion type character 'l' in format [-Wformat]
util/virpidfile.c:130:5: warning: too many arguments for format [-Wformat-extra-args]


> > +# define PID_FORMAT "lld"
> > +#else
> > +# define PID_FORMAT "d"
> > +#endif
> 
> the decision should _not_ be based on _WIN64, but instead on a
> configure-time test on the underlying type of pid_t.  And since
> _that_
> gets difficult, I'd almost rather go with the simpler approach of:
> 
> "%" PRIdMAX, (intmax_t) pid
> 
> everywhere that we currently use
> 
> "%d", pid
> 

I thought about using that solution, but I prefer the format macro. Tbh, I wish some of these would be part of gnulib (perhaps some already are). glib also has a bunch of these, although not pid_t.




More information about the libvir-list mailing list