[PATCH 8/9] qapi: Factor out compat_policy_input_ok()

Philippe Mathieu-Daudé philmd at redhat.com
Tue Oct 26 10:39:23 UTC 2021


On 10/26/21 11:46, Markus Armbruster wrote:
> Philippe Mathieu-Daudé <philmd at redhat.com> writes:
> 
>> On 10/25/21 07:25, Markus Armbruster wrote:
>>> The code to check policy for handling deprecated input is triplicated.
>>> Factor it out into compat_policy_input_ok() before I mess with it in
>>> the next commit.
>>>
>>> Signed-off-by: Markus Armbruster <armbru at redhat.com>
>>> ---
>>>  include/qapi/compat-policy.h |  7 +++++
>>>  qapi/qapi-visit-core.c       | 18 +++++--------
>>>  qapi/qmp-dispatch.c          | 51 +++++++++++++++++++++++++++---------
>>>  qapi/qobject-input-visitor.c | 19 +++-----------
>>>  4 files changed, 55 insertions(+), 40 deletions(-)
>>
>>> diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
>>> index 8cca18c891..e29ade134c 100644
>>> --- a/qapi/qmp-dispatch.c
>>> +++ b/qapi/qmp-dispatch.c
>>> @@ -28,6 +28,40 @@
>>>  
>>>  CompatPolicy compat_policy;
>>>  
>>> +static bool compat_policy_input_ok1(const char *adjective,
>>> +                                    CompatPolicyInput policy,
>>> +                                    ErrorClass error_class,
>>> +                                    const char *kind, const char *name,
>>> +                                    Error **errp)
>>> +{
>>> +    switch (policy) {
>>> +    case COMPAT_POLICY_INPUT_ACCEPT:
>>> +        return true;
>>> +    case COMPAT_POLICY_INPUT_REJECT:
>>> +        error_set(errp, error_class, "%s %s %s disabled by policy",
>>> +                  adjective, kind, name);
>>> +        return false;
>>> +    case COMPAT_POLICY_INPUT_CRASH:
>>> +    default:
>>> +        abort();
>>
>> g_assert_not_reached() provides a nicer user experience.
> 
> I find it hard to care for making the experience of a crash that should
> never ever happen nicer :)

Well COMPAT_POLICY_INPUT_CRASH can happen... What about:

   case COMPAT_POLICY_INPUT_CRASH:
       error_printf("%s %s %s disabled by policy",
                    adjective, kind, name);
       abort();
   default:
       g_assert_not_reached();




More information about the libvir-list mailing list