Commit 953ffe0f authored by Andreas Färber's avatar Andreas Färber Committed by Blue Swirl

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: default avatarAndreas Färber <andreas.faerber@web.de>
Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
parent 1e36f6a5
......@@ -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
......
......@@ -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;
}
......
......@@ -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) {
......
......@@ -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);
......
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment