[email protected] writes:
> From: Marc-André Lureau <[email protected]>
>
> The following "use qmp_dispatch()" commit will use the generated
> dispatch command table that is unaware of compile time conditionals.
>
> There are a few commands that are under #ifdef conditions in
> qmp-commands.hx. Move the qmp_query_spice fallback in the same location
> as the other fallbacks, return an error instead of abort() and update
> the comment.
>
> Signed-off-by: Marc-André Lureau <[email protected]>
> ---
> monitor.c | 14 ++++++++++++++
> qmp.c | 16 ----------------
> 2 files changed, 14 insertions(+), 16 deletions(-)
>
> diff --git a/monitor.c b/monitor.c
> index e7549b1..5e7ae21 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -4303,6 +4303,20 @@ QemuOptsList qemu_mon_opts = {
> },
> };
>
> +/*
> + * the QAPI schema is blissfully unaware #ifdef FOO commands, and the
> + * QAPI code generator happily generates a qmp_marshal_foo_cmd() that
> + * calls qmp_foo_cmd(). Provide it one, or else linking fails. FIXME
> + * Educate the QAPI schema on #ifdef commands.
Let's keep the FIXME on the same line as its text. Can touch up on commit.
> + */
> +#ifndef CONFIG_SPICE
> +SpiceInfo *qmp_query_spice(Error **errp)
> +{
> + error_setg(errp, QERR_FEATURE_DISABLED, "spice");
> + return NULL;
> +};
> +#endif
> +
> #ifndef TARGET_I386
> void qmp_rtc_reset_reinjection(Error **errp)
> {
> diff --git a/qmp.c b/qmp.c
> index b6d531e..884d1ab 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -161,22 +161,6 @@ VncInfo2List *qmp_query_vnc_servers(Error **errp)
> };
> #endif
>
> -#ifndef CONFIG_SPICE
> -/*
> - * qmp-commands.hx ensures that QMP command query-spice exists only
> - * #ifdef CONFIG_SPICE. Necessary for an accurate query-commands
> - * result. However, the QAPI schema is blissfully unaware of that,
> - * and the QAPI code generator happily generates a dead
> - * qmp_marshal_query_spice() that calls qmp_query_spice(). Provide it
> - * one, or else linking fails. FIXME Educate the QAPI schema on
> - * CONFIG_SPICE.
> - */
> -SpiceInfo *qmp_query_spice(Error **errp)
> -{
> - abort();
> -};
> -#endif
> -
> void qmp_cont(Error **errp)
> {
> Error *local_err = NULL;