diff mbox

error: report hints on stderr when no monitor

Message ID 20170105135957.12003-1-marcandre.lureau@redhat.com
State New
Headers show

Commit Message

Marc-André Lureau Jan. 5, 2017, 1:59 p.m. UTC
Report the error hint when running from the command line and reaching an
error, ex:

$ qemu-system-x86_64 -m 1Z
qemu-system-x86_64: -m 1Z: Parameter 'size' expects a size
You may use k, M, G or T suffixes for kilobytes, megabytes, gigabytes and terabytes.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 monitor.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Paolo Bonzini Jan. 5, 2017, 2:07 p.m. UTC | #1
On 05/01/2017 14:59, Marc-André Lureau wrote:
> Report the error hint when running from the command line and reaching an
> error, ex:
> 
> $ qemu-system-x86_64 -m 1Z
> qemu-system-x86_64: -m 1Z: Parameter 'size' expects a size
> You may use k, M, G or T suffixes for kilobytes, megabytes, gigabytes and terabytes.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  monitor.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/monitor.c b/monitor.c
> index a82f547488..e5cc11b5a5 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -3973,6 +3973,8 @@ void error_vprintf_unless_qmp(const char *fmt, va_list ap)
>  {
>      if (cur_mon && !monitor_cur_is_qmp()) {
>          monitor_vprintf(cur_mon, fmt, ap);
> +    } else if (!cur_mon) {
> +        vfprintf(stderr, fmt, ap);
>      }
>  }
>  
> 

Good idea!

Paolo
Eric Blake Jan. 5, 2017, 3:39 p.m. UTC | #2
On 01/05/2017 07:59 AM, Marc-André Lureau wrote:
> Report the error hint when running from the command line and reaching an
> error, ex:
> 
> $ qemu-system-x86_64 -m 1Z
> qemu-system-x86_64: -m 1Z: Parameter 'size' expects a size
> You may use k, M, G or T suffixes for kilobytes, megabytes, gigabytes and terabytes.

[unrelated, but this reminds me: qemu-io allows '1m' and '1M' as
synonyms, but our command line parser is picky and requires the spelling
'1M'.  I wouldn't mind if we unified those two parsers, and make size
parsing case-insensitive everywhere]

> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  monitor.c | 2 ++
>  1 file changed, 2 insertions(+)

Reviewed-by: Eric Blake <eblake@redhat.com>

> 
> diff --git a/monitor.c b/monitor.c
> index a82f547488..e5cc11b5a5 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -3973,6 +3973,8 @@ void error_vprintf_unless_qmp(const char *fmt, va_list ap)
>  {
>      if (cur_mon && !monitor_cur_is_qmp()) {
>          monitor_vprintf(cur_mon, fmt, ap);
> +    } else if (!cur_mon) {
> +        vfprintf(stderr, fmt, ap);
>      }
>  }
>  
>
Markus Armbruster Jan. 9, 2017, 12:18 p.m. UTC | #3
Marc-André Lureau <marcandre.lureau@redhat.com> writes:

> Report the error hint when running from the command line and reaching an

Not just any hint, only the ones printed with error_printf_unless_qmp().

> error, ex:
>
> $ qemu-system-x86_64 -m 1Z
> qemu-system-x86_64: -m 1Z: Parameter 'size' expects a size
> You may use k, M, G or T suffixes for kilobytes, megabytes, gigabytes and terabytes.

The last line is due to this patch.

Suggest to rephrase the commit message:

    error: Report certain hints on stderr when no monitor

    Hints printed with error_printf_unless_qmp() are suppressed outside
    monitor context.  Reproducer:

        $ qemu-system-x86_64 -m 1Z
        qemu-system-x86_64: -m 1Z: Parameter 'size' expects a size

    Print to stderr instead.  The reproducer now additionally prints:

        You may use k, M, G or T suffixes for kilobytes, megabytes, gigabytes and terabytes.

>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  monitor.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/monitor.c b/monitor.c
> index a82f547488..e5cc11b5a5 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -3973,6 +3973,8 @@ void error_vprintf_unless_qmp(const char *fmt, va_list ap)
>  {
>      if (cur_mon && !monitor_cur_is_qmp()) {
>          monitor_vprintf(cur_mon, fmt, ap);
> +    } else if (!cur_mon) {
> +        vfprintf(stderr, fmt, ap);
>      }
>  }

Preferably with an improved commit message:
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Marc-André Lureau Jan. 9, 2017, 12:32 p.m. UTC | #4
Hi

On Mon, Jan 9, 2017 at 1:23 PM Markus Armbruster <armbru@redhat.com> wrote:

> Marc-André Lureau <marcandre.lureau@redhat.com> writes:
>
> > Report the error hint when running from the command line and reaching an
>
> Not just any hint, only the ones printed with error_printf_unless_qmp().
>
> > error, ex:
> >
> > $ qemu-system-x86_64 -m 1Z
> > qemu-system-x86_64: -m 1Z: Parameter 'size' expects a size
> > You may use k, M, G or T suffixes for kilobytes, megabytes, gigabytes
> and terabytes.
>
> The last line is due to this patch.
>
> Suggest to rephrase the commit message:
>
>     error: Report certain hints on stderr when no monitor
>
>     Hints printed with error_printf_unless_qmp() are suppressed outside
>     monitor context.  Reproducer:
>
>         $ qemu-system-x86_64 -m 1Z
>         qemu-system-x86_64: -m 1Z: Parameter 'size' expects a size
>
>     Print to stderr instead.  The reproducer now additionally prints:
>
>         You may use k, M, G or T suffixes for kilobytes, megabytes,
> gigabytes and terabytes.
>
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  monitor.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/monitor.c b/monitor.c
> > index a82f547488..e5cc11b5a5 100644
> > --- a/monitor.c
> > +++ b/monitor.c
> > @@ -3973,6 +3973,8 @@ void error_vprintf_unless_qmp(const char *fmt,
> va_list ap)
> >  {
> >      if (cur_mon && !monitor_cur_is_qmp()) {
> >          monitor_vprintf(cur_mon, fmt, ap);
> > +    } else if (!cur_mon) {
> > +        vfprintf(stderr, fmt, ap);
> >      }
> >  }
>
> Preferably with an improved commit message:
> Reviewed-by: Markus Armbruster <armbru@redhat.com>
>

Markus, as maintainer of monitor.c, could you take the patch with the
commit message modified?

thanks
Markus Armbruster Jan. 9, 2017, 1:14 p.m. UTC | #5
Marc-André Lureau <marcandre.lureau@gmail.com> writes:

> Hi
>
> On Mon, Jan 9, 2017 at 1:23 PM Markus Armbruster <armbru@redhat.com> wrote:
>
>> Marc-André Lureau <marcandre.lureau@redhat.com> writes:
>>
>> > Report the error hint when running from the command line and reaching an
>>
>> Not just any hint, only the ones printed with error_printf_unless_qmp().
>>
>> > error, ex:
>> >
>> > $ qemu-system-x86_64 -m 1Z
>> > qemu-system-x86_64: -m 1Z: Parameter 'size' expects a size
>> > You may use k, M, G or T suffixes for kilobytes, megabytes, gigabytes
>> and terabytes.
>>
>> The last line is due to this patch.
>>
>> Suggest to rephrase the commit message:
>>
>>     error: Report certain hints on stderr when no monitor
>>
>>     Hints printed with error_printf_unless_qmp() are suppressed outside
>>     monitor context.  Reproducer:
>>
>>         $ qemu-system-x86_64 -m 1Z
>>         qemu-system-x86_64: -m 1Z: Parameter 'size' expects a size
>>
>>     Print to stderr instead.  The reproducer now additionally prints:
>>
>>         You may use k, M, G or T suffixes for kilobytes, megabytes,
>> gigabytes and terabytes.
>>
>> >
>> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>> > ---
>> >  monitor.c | 2 ++
>> >  1 file changed, 2 insertions(+)
>> >
>> > diff --git a/monitor.c b/monitor.c
>> > index a82f547488..e5cc11b5a5 100644
>> > --- a/monitor.c
>> > +++ b/monitor.c
>> > @@ -3973,6 +3973,8 @@ void error_vprintf_unless_qmp(const char *fmt,
>> va_list ap)
>> >  {
>> >      if (cur_mon && !monitor_cur_is_qmp()) {
>> >          monitor_vprintf(cur_mon, fmt, ap);
>> > +    } else if (!cur_mon) {
>> > +        vfprintf(stderr, fmt, ap);
>> >      }
>> >  }
>>
>> Preferably with an improved commit message:
>> Reviewed-by: Markus Armbruster <armbru@redhat.com>
>>
>
> Markus, as maintainer of monitor.c, could you take the patch with the
> commit message modified?

Yes.  It's in my error-next branch now.
diff mbox

Patch

diff --git a/monitor.c b/monitor.c
index a82f547488..e5cc11b5a5 100644
--- a/monitor.c
+++ b/monitor.c
@@ -3973,6 +3973,8 @@  void error_vprintf_unless_qmp(const char *fmt, va_list ap)
 {
     if (cur_mon && !monitor_cur_is_qmp()) {
         monitor_vprintf(cur_mon, fmt, ap);
+    } else if (!cur_mon) {
+        vfprintf(stderr, fmt, ap);
     }
 }