git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Version 1.10.9.
[libguestfs.git]
/
src
/
launch.c
diff --git
a/src/launch.c
b/src/launch.c
index
e9a1741
..
310a88d
100644
(file)
--- a/
src/launch.c
+++ b/
src/launch.c
@@
-64,6
+64,7
@@
#include "c-ctype.h"
#include "glthread/lock.h"
#include "c-ctype.h"
#include "glthread/lock.h"
+#include "ignore-value.h"
#include "guestfs.h"
#include "guestfs-internal.h"
#include "guestfs.h"
#include "guestfs-internal.h"
@@
-688,7
+689,7
@@
launch_appliance (guestfs_h *g)
pid_t parent_pid = getppid ();
/* Writing to argv is hideously complicated and error prone. See:
pid_t parent_pid = getppid ();
/* Writing to argv is hideously complicated and error prone. See:
- * http://
anoncvs.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/misc/ps_status.c?rev=1.33.2.1;content-type=text%2Fplain
+ * http://
git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/utils/misc/ps_status.c;hb=HEAD
*/
/* Loop around waiting for one or both of the other processes to
*/
/* Loop around waiting for one or both of the other processes to
@@
-1030,6
+1031,7
@@
guestfs___print_timestamped_message (guestfs_h *g, const char *fs, ...)
free (msg);
}
free (msg);
}
+static int test_qemu_cmd (guestfs_h *g, const char *cmd, char **ret);
static int read_all (guestfs_h *g, FILE *fp, char **ret);
/* Test qemu binary (or wrapper) runs, and do 'qemu -help' and
static int read_all (guestfs_h *g, FILE *fp, char **ret);
/* Test qemu binary (or wrapper) runs, and do 'qemu -help' and
@@
-1042,38
+1044,48
@@
test_qemu (guestfs_h *g)
char cmd[1024];
FILE *fp;
char cmd[1024];
FILE *fp;
+ free (g->qemu_help);
+ g->qemu_help = NULL;
+ free (g->qemu_version);
+ g->qemu_version = NULL;
+
snprintf (cmd, sizeof cmd, "LC_ALL=C '%s' -nographic -help", g->qemu);
snprintf (cmd, sizeof cmd, "LC_ALL=C '%s' -nographic -help", g->qemu);
- fp = popen (cmd, "r");
/* qemu -help should always work (qemu -version OTOH wasn't
* supported by qemu 0.9). If this command doesn't work then it
* probably indicates that the qemu binary is missing.
*/
/* qemu -help should always work (qemu -version OTOH wasn't
* supported by qemu 0.9). If this command doesn't work then it
* probably indicates that the qemu binary is missing.
*/
- if (!fp) {
- /* XXX This error is never printed, even if the qemu binary
- * doesn't exist. Why?
- */
- error:
+ if (test_qemu_cmd (g, cmd, &g->qemu_help) == -1) {
perrorf (g, _("%s: command failed: If qemu is located on a non-standard path, try setting the LIBGUESTFS_QEMU environment variable."), cmd);
return -1;
}
perrorf (g, _("%s: command failed: If qemu is located on a non-standard path, try setting the LIBGUESTFS_QEMU environment variable."), cmd);
return -1;
}
- if (read_all (g, fp, &g->qemu_help) == -1)
- goto error;
-
- if (pclose (fp) == -1)
- goto error;
-
snprintf (cmd, sizeof cmd, "LC_ALL=C '%s' -nographic -version 2>/dev/null",
g->qemu);
snprintf (cmd, sizeof cmd, "LC_ALL=C '%s' -nographic -version 2>/dev/null",
g->qemu);
+ /* Intentionally ignore errors from qemu -version. */
+ ignore_value (test_qemu_cmd (g, cmd, &g->qemu_version));
+
+ return 0;
+}
+
+static int
+test_qemu_cmd (guestfs_h *g, const char *cmd, char **ret)
+{
+ FILE *fp;
+
fp = popen (cmd, "r");
fp = popen (cmd, "r");
- if (fp) {
- /* Intentionally ignore errors. */
- read_all (g, fp, &g->qemu_version);
+ if (fp == NULL)
+ return -1;
+
+ if (read_all (g, fp, ret) == -1) {
pclose (fp);
pclose (fp);
+ return -1;
}
}
+ if (pclose (fp) != 0)
+ return -1;
+
return 0;
}
return 0;
}