[libvirt] [PATCH] build: avoid compiler warning

Matthias Bolte matthias.bolte at googlemail.com
Mon May 3 21:41:38 UTC 2010


2010/5/3 Eric Blake <eblake at redhat.com>:
> Necessary on cygwin, where uid_t and gid_t are 4-byte long rather
> than int, causing gcc -Wformat warnings.
>
> * src/util/util.c (virFileOperationNoFork, virDirCreateNoFork)
> (virFileOperation, virDirCreate, virGetUserEnt): Cast uid_t and
> gid_t before passing to printf.
> * .gitignore: Ignore cygwin executables.

The .exe suffix is not cygwin specific. You should say here: Ignore
Windows executables.

> ---
>  .gitignore      |    1 +
>  src/util/util.c |   21 ++++++++++++---------
>  2 files changed, 13 insertions(+), 9 deletions(-)
>

> diff --git a/src/util/util.c b/src/util/util.c
> index 3209185..0c5a22b 100644
> --- a/src/util/util.c
> +++ b/src/util/util.c
> @@ -74,11 +74,14 @@
>  #include "util.h"
>  #include "memory.h"
>  #include "threads.h"
> +#include "verify.h"
>
>  #ifndef NSIG
>  # define NSIG 32
>  #endif
>
> +verify(sizeof (gid_t) <= sizeof (int) && sizeof (uid_t) <= sizeof (int));
> +
>  #define VIR_FROM_THIS VIR_FROM_NONE
>
>  #define virUtilError(code, ...)                                            \
> @@ -1277,7 +1280,7 @@ static int virFileOperationNoFork(const char *path, int openflags, mode_t mode,
>         && (fchown(fd, uid, gid) < 0)) {
>         ret = errno;
>         virReportSystemError(errno, _("cannot chown '%s' to (%u, %u)"),
> -                             path, uid, gid);
> +                             path, (int) uid, (int) gid);

Passing int for %u? Shouldn't this be a cast to unsigned int instead?

Matthias




More information about the libvir-list mailing list