[libvirt] [PATCH] virsh: avoid compiler warning on mingw

Daniel Veillard veillard at redhat.com
Fri Apr 29 01:02:55 UTC 2011


On Thu, Apr 28, 2011 at 03:11:23PM -0600, Eric Blake wrote:
> We don't use gnulib's sanitizations for vfprintf, but vshDebug
> was used with %zu, which means that it would fail on mingw.
> Thank goodness the compiler indirectly caught this for us :)
> 
> virsh.c: In function 'vshDebug':
> virsh.c:12105:5: warning: function might be possible candidate for
> 'ms_printf' format attribute [-Wmissing-format-attribute]
> 
> since mingw <stdio.h> hasn't yet added gcc attributes to vfprintf.
> 
> * tools/virsh.c (vshDebug): Avoid vfprintf.
> (vshPrintExtra): Use lighter-weight fputs.
> Reported by Matthias Bolte.
> ---
>  tools/virsh.c |   11 +++++++++--
>  1 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 27140f3..0212b99 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -12096,6 +12096,7 @@ static void
>  vshDebug(vshControl *ctl, int level, const char *format, ...)
>  {
>      va_list ap;
> +    char *str;
> 
>      va_start(ap, format);
>      vshOutputLogFile(ctl, VSH_ERR_DEBUG, format, ap);
> @@ -12105,8 +12106,14 @@ vshDebug(vshControl *ctl, int level, const char *format, ...)
>          return;
> 
>      va_start(ap, format);
> -    vfprintf(stdout, format, ap);
> +    if (virVasprintf(&str, format, ap) < 0) {
> +        /* Skip debug messages on low memory */
> +        va_end(ap);
> +        return;
> +    }
>      va_end(ap);
> +    fputs(str, stdout);
> +    VIR_FREE(str);
>  }
> 
>  static void
> @@ -12125,7 +12132,7 @@ vshPrintExtra(vshControl *ctl, const char *format, ...)
>          return;
>      }
>      va_end(ap);
> -    fprintf(stdout, "%s", str);
> +    fputs(str, stdout);
>      VIR_FREE(str);
>  }

  ACK,

Daniel

-- 
Daniel Veillard      | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
daniel at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/



More information about the libvir-list mailing list