aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Färber <andreas.faerber@web.de>2011-06-02 19:58:06 +0200
committerBlue Swirl <blauwirbel@gmail.com>2011-06-15 19:58:48 +0000
commit953ffe0f935f40c0d6061d69e76e0339393b54f8 (patch)
tree4ccd1b5bffe7fca88063582a32653c1974a96d9e
parent1e36f6a5b573009267160edc33cb216c9621abc0 (diff)
Introduce format string for pid_t
BeOS and Haiku on i386 use long for 32-bit types, including pid_t. Using %d with pid_t therefore results in a warning. Unfortunately POSIX:2008 does not define a PRId* string for pid_t. In some places pid_t was previously casted to long and %ld hardcoded. The predecessor of this patch added another upcast for the simpletrace filename but was not applied to date. Since new uses of pid_t with %d keep creeping in, let's instead define an OS-dependent format string and use that consistently. Cc: Stefan Hajnoczi <stefanha@gmail.com> Cc: Blue Swirl <blauwirbel@gmail.com> Cc: Ingo Weinhold <ingo_weinhold@gmx.de> Cc: Gleb Natapov <gleb@redhat.com> Signed-off-by: Andreas Färber <andreas.faerber@web.de> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
-rwxr-xr-xconfigure2
-rw-r--r--os-posix.c2
-rw-r--r--os-win32.c2
-rw-r--r--osdep.h6
-rw-r--r--vl.c2
5 files changed, 10 insertions, 4 deletions
diff --git a/configure b/configure
index 4c4aa92198..44c092a292 100755
--- a/configure
+++ b/configure
@@ -3041,7 +3041,7 @@ if test "$trace_backend" = "simple"; then
fi
# Set the appropriate trace file.
if test "$trace_backend" = "simple"; then
- trace_file="\"$trace_file-%u\""
+ trace_file="\"$trace_file-\" FMT_pid"
fi
if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
diff --git a/os-posix.c b/os-posix.c
index 320419793a..7dfb27836b 100644
--- a/os-posix.c
+++ b/os-posix.c
@@ -368,7 +368,7 @@ int qemu_create_pidfile(const char *filename)
if (lockf(fd, F_TLOCK, 0) == -1) {
return -1;
}
- len = snprintf(buffer, sizeof(buffer), "%ld\n", (long)getpid());
+ len = snprintf(buffer, sizeof(buffer), FMT_pid "\n", getpid());
if (write(fd, buffer, len) != len) {
return -1;
}
diff --git a/os-win32.c b/os-win32.c
index d6d54c60b9..b6652af7f3 100644
--- a/os-win32.c
+++ b/os-win32.c
@@ -258,7 +258,7 @@ int qemu_create_pidfile(const char *filename)
if (file == INVALID_HANDLE_VALUE) {
return -1;
}
- len = snprintf(buffer, sizeof(buffer), "%ld\n", (long)getpid());
+ len = snprintf(buffer, sizeof(buffer), FMT_pid "\n", getpid());
ret = WriteFileEx(file, (LPCVOID)buffer, (DWORD)len,
&overlap, NULL);
if (ret == 0) {
diff --git a/osdep.h b/osdep.h
index 6eb9a49ec8..a81701749a 100644
--- a/osdep.h
+++ b/osdep.h
@@ -128,6 +128,12 @@ void qemu_vfree(void *ptr);
int qemu_madvise(void *addr, size_t len, int advice);
+#if defined(__HAIKU__) && defined(__i386__)
+#define FMT_pid "%ld"
+#else
+#define FMT_pid "%d"
+#endif
+
int qemu_create_pidfile(const char *filename);
int qemu_get_thread_id(void);
diff --git a/vl.c b/vl.c
index 7b83c43e73..dbdec7199a 100644
--- a/vl.c
+++ b/vl.c
@@ -1197,7 +1197,7 @@ void qemu_kill_report(void)
*/
fputc('\n', stderr);
} else {
- fprintf(stderr, " from pid %d\n", shutdown_pid);
+ fprintf(stderr, " from pid " FMT_pid "\n", shutdown_pid);
}
shutdown_signal = -1;
}