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. --- .gitignore | 1 + src/util/util.c | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 8c275f4..4faf384 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ *#*# *.#*# *.a +*.exe *.o *.orig *.rej 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); goto error; } if ((flags & VIR_FILE_OP_FORCE_PERMS) @@ -1328,7 +1331,7 @@ static int virDirCreateNoFork(const char *path, mode_t mode, uid_t uid, gid_t gi && (chown(path, uid, gid) < 0)) { ret = errno; virReportSystemError(errno, _("cannot chown '%s' to (%u, %u)"), - path, uid, gid); + path, (int) uid, (int) gid); goto error; } if ((flags & VIR_DIR_CREATE_FORCE_PERMS) @@ -1407,14 +1410,14 @@ parenterror: ret = errno; virReportSystemError(errno, _("cannot set gid %u creating '%s'"), - gid, path); + (int) gid, path); goto childerror; } if ((uid != 0) && (setuid(uid) != 0)) { ret = errno; virReportSystemError(errno, _("cannot set uid %u creating '%s'"), - uid, path); + (int) uid, path); goto childerror; } if ((fd = open(path, openflags, mode)) < 0) { @@ -1436,7 +1439,7 @@ parenterror: && (fchown(fd, -1, gid) < 0)) { ret = errno; virReportSystemError(errno, _("cannot chown '%s' to (%u, %u)"), - path, uid, gid); + path, (int) uid, (int) gid); goto childerror; } if ((flags & VIR_FILE_OP_FORCE_PERMS) @@ -1517,13 +1520,13 @@ parenterror: if ((gid != 0) && (setgid(gid) != 0)) { ret = errno; virReportSystemError(errno, _("cannot set gid %u creating '%s'"), - gid, path); + (int) gid, path); goto childerror; } if ((uid != 0) && (setuid(uid) != 0)) { ret = errno; virReportSystemError(errno, _("cannot set uid %u creating '%s'"), - uid, path); + (int) uid, path); goto childerror; } if (mkdir(path, mode) < 0) { @@ -1547,7 +1550,7 @@ parenterror: ret = errno; virReportSystemError(errno, _("cannot chown '%s' to group %u"), - path, gid); + path, (int) gid); goto childerror; } if ((flags & VIR_DIR_CREATE_FORCE_PERMS) @@ -2564,7 +2567,7 @@ static char *virGetUserEnt(uid_t uid, if (getpwuid_r(uid, &pwbuf, strbuf, strbuflen, &pw) != 0 || pw == NULL) { virReportSystemError(errno, _("Failed to find user record for uid '%d'"), - uid); + (int) uid); VIR_FREE(strbuf); return NULL; } -- 1.6.6.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list