[libvirt] [PATCH 1/9] fdstream: separate out virCommandPtr cleanup

Michal Privoznik mprivozn at redhat.com
Mon May 2 08:48:04 UTC 2016


On 25.04.2016 20:46, Cole Robinson wrote:
> Let's us de-nest some of the logic, and will simplify upcoming
> patches
> ---
>  src/fdstream.c | 73 +++++++++++++++++++++++++++++++++-------------------------
>  1 file changed, 42 insertions(+), 31 deletions(-)
> 
> diff --git a/src/fdstream.c b/src/fdstream.c
> index a6a0fbe..681b90e 100644
> --- a/src/fdstream.c
> +++ b/src/fdstream.c
> @@ -240,6 +240,46 @@ virFDStreamAddCallback(virStreamPtr st,
>      return ret;
>  }
>  
> +static int
> +virFDStreamCloseCommand(struct virFDStreamData *fdst)
> +{
> +    char buf[1024];
> +    ssize_t len;
> +    int status;
> +    int ret = -1;
> +
> +    if (!fdst->cmd)
> +        return 0;
> +
> +    if ((len = saferead(fdst->errfd, buf, sizeof(buf)-1)) < 0)
> +        buf[0] = '\0';
> +    else
> +        buf[len] = '\0';
> +
> +    virCommandRawStatus(fdst->cmd);
> +    if (virCommandWait(fdst->cmd, &status) < 0)
> +        goto error;
> +
> +    if (status != 0) {
> +        if (buf[0] != '\0') {
> +            virReportError(VIR_ERR_INTERNAL_ERROR, "%s", buf);
> +        } else if (WIFEXITED(status)) {
> +            virReportError(VIR_ERR_INTERNAL_ERROR,
> +                           _("I/O helper exited with status %d"),
> +                           WEXITSTATUS(status));
> +        } else {
> +            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                           _("I/O helper exited abnormally"));
> +        }
> +        goto error;
> +    }
> +
> +    ret = 0;
> + error:

Just a small nit, we tend to name 'cleanup' labels that are used in both
successful and unsuccessful return paths. So this should be 'cleanup' to
follow our style.

> +    virCommandFree(fdst->cmd);
> +    fdst->cmd = NULL;
> +    return ret;
> +}

Michal




More information about the libvir-list mailing list