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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/30/2012 12:15 PM, Marc-André Lureau wrote:
>> But we can use 'lld' because we made sure all libvirt code goes
>> via the gnulib printf replacements which guarentee %lld works
>> correctly.
> 
> Actually, it doesn't. The replacement is provided by the module
> "stdio" which isn't used (or perhaps indirectly?).

Rather, the replacement is provided by the snprintf, vasprintf, and
vsnprintf, modules.  As long as we go through one of those three
functions, we should be getting the GNU signature of %lld, and NOT the
mingw signature of %I64d.  If we fail to go through one of those three
functions (such as a raw printf), then we have to use the common subset
that is supported by both gnu and mingw.

> But even if it was
> used, it wouldn't be the POSIX version using gnuprintf format, it
> would be the "system" one. If we want the former, we would need
> "fprintf-posix" module, unfortunately, it seems to have incompatible
> licenses:

No, we intentionally do NOT want to use the native format.  Anywhere
that we are calling a *printf that has not gone through a gnulib module,
we have a bug in libvirt.

> 
> However, it would only solve the fprintf() call, not the fscanf() call
> which doesn't have equivalent "fscanf-posix" yet.

Correct, calls to fprintf are buggy, and fscanf is a disaster that
should be using virStrToLong_* instead.

> 
> An alternative to avoid casting everywhere is to use a couple of
> helper functions to do the job of:
> 
> fprintf(file, "%" PID_FORMAT, pid) and fscanf(file, "%" PID_FORMAT,
> pid) which I guess could be replaced by virFprintfPid() and
> virFscanfPid(). Agree?

Those helper functions are precisely what the gnulib module snprintf and
friends _already_ should be giving us.  We just have to use them correctly.

-- 
Eric Blake   eblake@xxxxxxxxxx    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list

[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]