2010/5/3 Eric Blake <eblake(a)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