[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