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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list