[libvirt] [PATCH 1/2] bhyve: Separate out checks from virBhyveProbeCaps

John Ferlan jferlan at redhat.com
Wed Sep 21 20:43:18 UTC 2016



On 08/27/2016 09:11 AM, Roman Bogorodskiy wrote:
> From: Fabian Freyer <fabian.freyer at physik.tu-berlin.de>
> 
> At the moment this is just one check, but separating this out into a
> separate function makes checks more modular, allowing for more readable
> code once more checks are added. This also makes checks more easily
> testable.
> 
> Signed-off-by: Roman Bogorodskiy <bogorodskiy at gmail.com>
> ---
>  src/bhyve/bhyve_capabilities.c | 31 ++++++++++++++++++++++---------
>  1 file changed, 22 insertions(+), 9 deletions(-)
> 
> diff --git a/src/bhyve/bhyve_capabilities.c b/src/bhyve/bhyve_capabilities.c
> index 10c33b9..be68e51 100644
> --- a/src/bhyve/bhyve_capabilities.c
> +++ b/src/bhyve/bhyve_capabilities.c
> @@ -168,19 +168,13 @@ virBhyveProbeGrubCaps(virBhyveGrubCapsFlags *caps)
>      return ret;
>  }
>  
> -int
> -virBhyveProbeCaps(unsigned int *caps)
> +static int
> +bhyveProbeCapsRTC_UTC(unsigned int *caps, char *binary)
>  {
> -    char *binary, *help;
> +    char *help;
>      virCommandPtr cmd = NULL;
>      int ret = 0, exit;
>  
> -    binary = virFindFileInPath("bhyve");
> -    if (binary == NULL)
> -        goto out;
> -    if (!virFileIsExecutable(binary))
> -        goto out;
> -
>      cmd = virCommandNew(binary);
>      virCommandAddArg(cmd, "-h");
>      virCommandSetErrorBuffer(cmd, &help);
> @@ -195,6 +189,25 @@ virBhyveProbeCaps(unsigned int *caps)
>   out:
>      VIR_FREE(help);
>      virCommandFree(cmd);
> +    return ret;
> +}
> +
> +int
> +virBhyveProbeCaps(unsigned int *caps)
> +{
> +    char *binary;
> +    int ret = 0;
> +
> +    binary = virFindFileInPath("bhyve");
> +    if (binary == NULL)
> +        goto out;

The above could be optimized as:

    if (!(binary = virFindFileInPath("bhyve")))
        return 0;

> +    if (!virFileIsExecutable(binary))
> +        goto out;
> +
> +    if ((ret = bhyveProbeCapsRTC_UTC(caps, binary)))
> +        goto out;

Why even bother with the if construct - in either case you're going to out.

ACK with slight adjustments - seems reasonable to me.

John
> +
> + out:
>      VIR_FREE(binary);
>      return ret;
>  }
> 




More information about the libvir-list mailing list