if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
int newfd1 = dup(STDERR_FILENO);
int newfd2 = dup(STDERR_FILENO);
int newfd3 = dup(STDERR_FILENO);
+ int ret = -1;
virCommandPreserveFD(cmd, newfd1);
virCommandTransferFD(cmd, newfd3);
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
- return -1;
+ goto cleanup;
}
if (fcntl(newfd1, F_GETFL) < 0 ||
fcntl(newfd2, F_GETFL) < 0 ||
fcntl(newfd3, F_GETFL) >= 0) {
puts("fds in wrong state");
- return -1;
+ goto cleanup;
}
+ ret = checkoutput("test3");
+
+cleanup:
virCommandFree(cmd);
VIR_FORCE_CLOSE(newfd1);
VIR_FORCE_CLOSE(newfd2);
-
- return checkoutput("test3");
+ return ret;
}
static int test4(const void *unused ATTRIBUTE_UNUSED)
{
virCommandPtr cmd = virCommandNew(abs_builddir "/commandhelper");
- pid_t pid;
char *pidfile = virFilePid(abs_builddir, "commandhelper");
+ pid_t pid;
+ int ret = -1;
+
+ if (!pidfile)
+ goto cleanup;
virCommandSetPidFile(cmd, pidfile);
virCommandDaemonize(cmd);
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
- return -1;
+ goto cleanup;
}
if (virFileReadPid(abs_builddir, "commandhelper", &pid) != 0) {
printf("cannot read pidfile\n");
- return -1;
+ goto cleanup;
}
while (kill(pid, 0) != -1)
usleep(100*1000);
- virCommandFree(cmd);
+ ret = checkoutput("test4");
+cleanup:
+ virCommandFree(cmd);
VIR_FREE(pidfile);
-
- return checkoutput("test4");
+ return ret;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
- return -1;
+ goto cleanup;
}
+ if (!outactual)
+ goto cleanup;
virCommandFree(cmd);
+ cmd = NULL;
if (!STREQ(outactual, outexpect)) {
virtTestDifference(stderr, outactual, outexpect);
goto cleanup;
}
- if (checkoutput("test13") < 0)
- goto cleanup;
-
- ret = 0;
+ ret = checkoutput("test13");
cleanup:
+ virCommandFree(cmd);
VIR_FREE(outactual);
return ret;
}
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
- return -1;
+ goto cleanup;
}
+ if (!outactual || !erractual)
+ goto cleanup;
virCommandFree(cmd);
+ cmd = NULL;
if (!STREQ(outactual, outexpect)) {
virtTestDifference(stderr, outactual, outexpect);
goto cleanup;
}
- if (checkoutput("test14") < 0)
- goto cleanup;
-
- ret = 0;
+ ret = checkoutput("test14");
cleanup:
+ virCommandFree(cmd);
VIR_FREE(outactual);
VIR_FREE(erractual);
return ret;
if (virCommandRun(cmd, NULL) < 0) {
virErrorPtr err = virGetLastError();
printf("Cannot run child %s\n", err->message);
+ virCommandFree(cmd);
return -1;
}
if ((outactual = virCommandToString(cmd)) == NULL) {
virErrorPtr err = virGetLastError();
printf("Cannot convert to string: %s\n", err->message);
- return -1;
+ goto cleanup;
}
if ((fd = open(abs_builddir "/commandhelper.log",
O_CREAT | O_TRUNC | O_WRONLY, 0600)) < 0) {
goto cleanup;
}
- virCommandFree(cmd);
-
- if (checkoutput("test16") < 0)
- goto cleanup;
-
if (!STREQ(outactual, outexpect)) {
virtTestDifference(stderr, outactual, outexpect);
goto cleanup;
}
- ret = 0;
+
+ ret = checkoutput("test16");
cleanup:
+ virCommandFree(cmd);
VIR_FORCE_CLOSE(fd);
VIR_FREE(outactual);
return ret;