[Spice-devel] [PATCH spice-server 01/33] Use PRIxPTR constant for string formatting

Frediano Ziglio fziglio at redhat.com
Sat Dec 22 15:02:36 UTC 2018


> 
> On Fri, Dec 21, 2018 at 4:03 PM Frediano Ziglio <fziglio at redhat.com> wrote:
> >
> > These constants are meant to be used in format string for size_t
> > types. Use them for portability.
> 
> PRI*PTR is for [u]intptr_t.
> 
> There are some claims that z is supported since VC2015 on stackoverflow.
> 

They are right, msdn states the same. But is up to the CRT you are using,
MingW without __USE_MINGW_ANSI_STDIO does not accept it.
On the other hand I64 is always supported.

> I assume we are mainly interested in mingw, we should set
> __USE_MINGW_ANSI_STDIO=1 instead.
> 

Mainly does not mean only. I suppose here you mean "we could use
__USE_MINGW_ANSI_STDIO for MingW and assume other compiler uses
newer CRT libraries supporting 'z' modifier". In that case 'z'
could be used for size_t. 'l' is not an option for pointers as
Windows 64 is LLP64 while Linux 64 is LP64 so for pthread_id
PRIxPTR looks fine for me.

Is there a specific PRIxxxx constant for size_t type?

> 
> 
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> >  server/gstreamer-encoder.c | 2 +-
> >  server/red-channel.c       | 5 +++--
> >  server/red-client.c        | 4 ++--
> >  server/red-replay-qxl.c    | 4 ++--
> >  server/reds.c              | 4 ++--
> >  5 files changed, 10 insertions(+), 9 deletions(-)
> >
> > diff --git a/server/gstreamer-encoder.c b/server/gstreamer-encoder.c
> > index 04f0c02f..f81fa223 100644
> > --- a/server/gstreamer-encoder.c
> > +++ b/server/gstreamer-encoder.c
> > @@ -1080,7 +1080,7 @@ static void set_gstenc_bitrate(SpiceGstEncoder
> > *encoder)
> >          break;
> >          }
> >      default:
> > -        spice_warning("the %s property has an unsupported type %zu",
> > +        spice_warning("the %s property has an unsupported type %" PRIuPTR,
> >                        prop, param->value_type);
> >      }
> >      spice_debug("setting the GStreamer %s to %"PRIu64, prop,
> >      gst_bit_rate);
> > diff --git a/server/red-channel.c b/server/red-channel.c
> > index 448b690e..b94d26b7 100644
> > --- a/server/red-channel.c
> > +++ b/server/red-channel.c
> > @@ -190,7 +190,7 @@ red_channel_constructed(GObject *object)
> >  {
> >      RedChannel *self = RED_CHANNEL(object);
> >
> > -    red_channel_debug(self, "thread_id 0x%lx", self->priv->thread_id);
> > +    red_channel_debug(self, "thread_id 0x%" PRIxPTR,
> > self->priv->thread_id);
> >
> >      RedChannelClass *klass = RED_CHANNEL_GET_CLASS(self);
> >
> > @@ -468,7 +468,8 @@ void red_channel_remove_client(RedChannel *channel,
> > RedChannelClient *rcc)
> >      g_return_if_fail(channel == red_channel_client_get_channel(rcc));
> >
> >      if (!pthread_equal(pthread_self(), channel->priv->thread_id)) {
> > -        red_channel_warning(channel, "channel->thread_id (0x%lx) !=
> > pthread_self (0x%lx)."
> > +        red_channel_warning(channel,
> > +                            "channel->thread_id (0x%" PRIxPTR ") !=
> > pthread_self (0x%" PRIxPTR ")."
> >                              "If one of the threads is != io-thread && !=
> >                              vcpu-thread, "
> >                              "this might be a BUG",
> >                              channel->priv->thread_id, pthread_self());
> > diff --git a/server/red-client.c b/server/red-client.c
> > index 7d14bd19..66bda8da 100644
> > --- a/server/red-client.c
> > +++ b/server/red-client.c
> > @@ -176,7 +176,7 @@ void red_client_migrate(RedClient *client)
> >      RedChannel *channel;
> >
> >      if (!pthread_equal(pthread_self(), client->thread_id)) {
> > -        spice_warning("client->thread_id (0x%lx) != pthread_self (0x%lx)."
> > +        spice_warning("client->thread_id (0x%" PRIxPTR ") != pthread_self
> > (0x%" PRIxPTR ")."
> >                        "If one of the threads is != io-thread && !=
> >                        vcpu-thread,"
> >                        " this might be a BUG",
> >                        client->thread_id, pthread_self());
> > @@ -194,7 +194,7 @@ void red_client_destroy(RedClient *client)
> >      RedChannelClient *rcc;
> >
> >      if (!pthread_equal(pthread_self(), client->thread_id)) {
> > -        spice_warning("client->thread_id (0x%lx) != pthread_self (0x%lx)."
> > +        spice_warning("client->thread_id (0x%" PRIxPTR ") != pthread_self
> > (0x%" PRIxPTR ")."
> >                        "If one of the threads is != io-thread && !=
> >                        vcpu-thread,"
> >                        " this might be a BUG",
> >                        client->thread_id,
> > diff --git a/server/red-replay-qxl.c b/server/red-replay-qxl.c
> > index 6958a495..b3c61769 100644
> > --- a/server/red-replay-qxl.c
> > +++ b/server/red-replay-qxl.c
> > @@ -227,7 +227,7 @@ static replay_t read_binary(SpiceReplay *replay, const
> > char *prefix, size_t *siz
> >      uint8_t *zlib_buffer;
> >      z_stream strm;
> >
> > -    snprintf(template, sizeof(template), "binary %%d %s %%ld:%%n",
> > prefix);
> > +    snprintf(template, sizeof(template), "binary %%d %s %%" PRIdPTR
> > ":%%n", prefix);
> >      replay_fscanf_check(replay, template, &with_zlib, size,
> >      &replay->end_pos);
> >      if (replay->error) {
> >          return REPLAY_ERROR;
> > @@ -266,7 +266,7 @@ static replay_t read_binary(SpiceReplay *replay, const
> > char *prefix, size_t *siz
> >              exit(1);
> >          }
> >          if ((ret = inflate(&strm, Z_NO_FLUSH)) != Z_STREAM_END) {
> > -            spice_error("inflate error %d (disc: %ld)", ret, *size -
> > strm.total_out);
> > +            spice_error("inflate error %d (disc: %" PRIdPTR ")", ret,
> > *size - strm.total_out);
> >              if (ret == Z_DATA_ERROR) {
> >                  /* last operation may be wrong. since we do the recording
> >                   * in red_worker, when there is a shutdown from the
> >                   vcpu/io thread
> > diff --git a/server/reds.c b/server/reds.c
> > index cdbb94cb..98a3435d 100644
> > --- a/server/reds.c
> > +++ b/server/reds.c
> > @@ -1149,7 +1149,7 @@ static void
> > reds_on_main_agent_monitors_config(RedsState *reds,
> >      }
> >      spice_buffer_append(cmc, message, size);
> >      if (sizeof(VDAgentMessage) > cmc->offset) {
> > -        spice_debug("not enough data yet. %zd", cmc->offset);
> > +        spice_debug("not enough data yet. %" PRIdPTR, cmc->offset);
> >          return;
> >      }
> >      msg_header = (VDAgentMessage *)cmc->buffer;
> > @@ -1157,7 +1157,7 @@ static void
> > reds_on_main_agent_monitors_config(RedsState *reds,
> >          goto overflow;
> >      }
> >      if (msg_header->size > cmc->offset - sizeof(VDAgentMessage)) {
> > -        spice_debug("not enough data yet. %zd", cmc->offset);
> > +        spice_debug("not enough data yet. %" PRIdPTR, cmc->offset);
> >          return;
> >      }
> >      if (msg_header->size < sizeof(VDAgentMonitorsConfig)) {

Frediano


More information about the Spice-devel mailing list