[libvirt] [PATCH] virtlogd: use PRIu64 to print 64bit types

Daniel P. Berrange berrange at redhat.com
Thu Nov 26 18:20:46 UTC 2015


On Thu, Nov 26, 2015 at 07:13:40PM +0100, Guido Günther wrote:
> On Thu, Nov 26, 2015 at 05:52:11PM +0000, Daniel P. Berrange wrote:
> > On Thu, Nov 26, 2015 at 06:46:13PM +0100, Guido Günther wrote:
> > > Otherwise we fail on 32bit with:
> > > 
> > > CC     logging/virtlogd-log_daemon_dispatch.o
> > > logging/log_daemon_dispatch.c: In function 'virLogManagerProtocolDispatchDomainReadLogFile':
> > > logging/log_daemon_dispatch.c:120:9: error: format '%zu' expects argument of type 'size_t', but argument 7 has type 'uint64_t' [-Werror=format]
> > > ---
> > >  src/logging/log_daemon_dispatch.c | 3 ++-
> > >  tests/virrotatingfiletest.c       | 4 +++-
> > >  2 files changed, 5 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/src/logging/log_daemon_dispatch.c b/src/logging/log_daemon_dispatch.c
> > > index 269255a..7391a6f 100644
> > > --- a/src/logging/log_daemon_dispatch.c
> > > +++ b/src/logging/log_daemon_dispatch.c
> > > @@ -21,6 +21,7 @@
> > >   */
> > >  
> > >  #include <config.h>
> > > +#include <inttypes.h>
> > >  
> > >  #include "rpc/virnetserver.h"
> > >  #include "rpc/virnetserverclient.h"
> > > @@ -118,7 +119,7 @@ virLogManagerProtocolDispatchDomainReadLogFile(virNetServerPtr server ATTRIBUTE_
> > >  
> > >      if (args->maxlen > VIR_LOG_MANAGER_PROTOCOL_STRING_MAX) {
> > >          virReportError(VIR_ERR_INTERNAL_ERROR,
> > > -                       _("Requested data len %zu is larger than maximum %d"),
> > > +                       _("Requested data len %"PRIu64" is larger than maximum %d"),
> > 
> > We don't ever use PRIu64 in libvirt - gnulib guarantees that %llu and
> > %lld are always used for formatting 64bit ints.
> 
> But with %llu I get on 64bit:
> 
> make[3]: Entering directory '/var/scratch/src/libvirt/upstream/libvirt/src'
>   CC       logging/virtlogd-log_daemon_dispatch.o
> logging/log_daemon_dispatch.c: In function 'virLogManagerProtocolDispatchDomainReadLogFile':
> logging/log_daemon_dispatch.c:120:8: error: format '%llu' expects argument of type 'long long unsigned int', but argument 7 has type 'uint64_t {aka long unsigned int}' [-Werror=format=]
>          virReportError(VIR_ERR_INTERNAL_ERROR,
>         ^
> cc1: all warnings being treated as errors

Oh that's just a stupid compiler not realizing the two types are in fact
the same size. Just cast the arg to (unsigned long long) for this.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list