Signed-off-by: Cole Robinson <crobinso@xxxxxxxxxx> --- src/storage/storage_backend.c | 31 ++++++------------------------- 1 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c index 2acbf90..63ba686 100644 --- a/src/storage/storage_backend.c +++ b/src/storage/storage_backend.c @@ -607,28 +607,19 @@ enum { static int virStorageBackendQEMUImgBackingFormat(const char *qemuimg) { - const char *const qemuarg[] = { qemuimg, "-h", NULL }; - const char *const qemuenv[] = { "LC_ALL=C", NULL }; - pid_t child = 0; - int status; - int newstdout = -1; char *help = NULL; - enum { MAX_HELP_OUTPUT_SIZE = 1024*8 }; char *start; char *end; char *tmp; int ret = -1; + virCommandPtr cmd = virCommandNewArgList(qemuimg, "-h", NULL); - if (virExec(qemuarg, qemuenv, NULL, - &child, -1, &newstdout, NULL, VIR_EXEC_CLEAR_CAPS) < 0) - goto cleanup; + virCommandAddEnvString(cmd, "LC_ALL=C"); + virCommandSetOutputBuffer(cmd, &help); + virCommandClearCaps(cmd); - if (virFileReadLimFD(newstdout, MAX_HELP_OUTPUT_SIZE, &help) < 0) { - virReportSystemError(errno, - _("Unable to read '%s -h' output"), - qemuimg); + if (virCommandRun(cmd, NULL) < 0) goto cleanup; - } start = strstr(help, " create "); end = strstr(start, "\n"); @@ -641,18 +632,8 @@ static int virStorageBackendQEMUImgBackingFormat(const char *qemuimg) ret = QEMU_IMG_BACKING_FORMAT_NONE; cleanup: + virCommandFree(cmd); VIR_FREE(help); - VIR_FORCE_CLOSE(newstdout); - if (child) { - while (waitpid(child, &status, 0) == -1 && errno == EINTR); - if (status) { - tmp = virCommandTranslateStatus(status); - VIR_WARN("Unexpected status, qemu probably failed: %s", - NULLSTR(tmp)); - VIR_FREE(tmp); - } - } - return ret; } -- 1.7.4.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list