On Thu, Feb 15, 2024 at 05:46:28 -0800, Andrea Bolognani wrote:
On Thu, Feb 15, 2024 at 01:57:27PM +0100, Peter Krempa wrote:
> On Wed, Feb 14, 2024 at 18:11:11 +0100, Andrea Bolognani wrote:
> > In order to have a nice API while still keeping the
> > implementation short and readable, a small wrapper is required.
>
> Well arguably the wrapper is not needed unless you really want to use:
>
> return VIR_DOMAIN_CONTROLLER_MODEL_SCS*;
>
> rather than:
>
> *model = VIR_DOMAIN_CONTROLLER_MODEL_SCS*;
> return 0;
I really do want to be able to use the former style. It doesn't make
as big an impact here, but for the USB part the difference is quite
stark.
> So now this always returns 0 -> success, thus the return value is
> pointless. Further up the next patch which modifies the documentation
> still keeps the claim. Additionally the description will read:
>
> Not being able to come up with a value is NOT considered a failure.
>
> which will mean that this function will never fail.
>
> IMO it would be sufficient to just declare:
>
> virDomainControllerModelSCSI
> qemuDomainDefaultSCSIControllerModel(const virDomainDef *def,
> const virDomainControllerDef *cont,
> ...
>
> and just document the same claims. Thus if _DEFAULT is returned it's up
> to the caller to decide.
>
> Fabricating a return value doesn't seem to make much sense for me and
> once you only return success you might as well as return the value
> directly. It'd simplify the checker conditions.
You're right, I can absolutely get rid of the wrapper.
Failure states that needed to be reported actually existed at some
point, but those went away as I reworked the code, and I never went
back to reconsider the API.
Thanks a lot for the suggestion, and consider it done :)
You can use:
Reviewed-by: Peter Krempa <pkrempa(a)redhat.com>