Thanks, applied. On Thu, Jun 2, 2011 at 8:58 PM, Andreas Färber <andreas.faer...@web.de> wrote: > 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 <stefa...@gmail.com> > Cc: Blue Swirl <blauwir...@gmail.com> > Cc: Ingo Weinhold <ingo_weinh...@gmx.de> > Cc: Gleb Natapov <g...@redhat.com> > Signed-off-by: Andreas Färber <andreas.faer...@web.de> > --- > v2: Use %ld and long instead of %lu for Haiku for x86_64 compatibility. > > configure | 2 +- > os-posix.c | 2 +- > os-win32.c | 2 +- > osdep.h | 6 ++++++ > vl.c | 2 +- > 5 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/configure b/configure > index a318d37..0f2b6bf 100755 > --- a/configure > +++ b/configure > @@ -3037,7 +3037,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 3204197..7dfb278 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 d6d54c6..b6652af 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 970d767..97d167a 100644 > --- a/osdep.h > +++ b/osdep.h > @@ -127,6 +127,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 b362871..b7b98f0 100644 > --- a/vl.c > +++ b/vl.c > @@ -1191,7 +1191,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; > } > -- > 1.7.5.2.317.g391b14 > >