summaryrefslogtreecommitdiffstats
path: root/src/guestfs.c
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2009-04-22 09:00:39 +0100
committerRichard Jones <rjones@redhat.com>2009-04-22 09:00:39 +0100
commit43db06ea892cc157324a6b837ca430607441c509 (patch)
treefc377195fcfda3b163d8f184a6965bb64b1bb018 /src/guestfs.c
parent54dd7be5855055a698291084c0074a1abac7b921 (diff)
downloadlibguestfs-43db06ea892cc157324a6b837ca430607441c509.tar.gz
libguestfs-43db06ea892cc157324a6b837ca430607441c509.tar.xz
libguestfs-43db06ea892cc157324a6b837ca430607441c509.zip
Allow qemu binary to be overridden at runtime.
Diffstat (limited to 'src/guestfs.c')
-rw-r--r--src/guestfs.c29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/guestfs.c b/src/guestfs.c
index 0bec3b74..1642019a 100644
--- a/src/guestfs.c
+++ b/src/guestfs.c
@@ -156,6 +156,7 @@ struct guestfs_h
int autosync;
const char *path;
+ const char *qemu;
char *last_error;
@@ -217,7 +218,9 @@ guestfs_create (void)
str = getenv ("LIBGUESTFS_PATH");
g->path = str != NULL ? str : GUESTFS_DEFAULT_PATH;
- /* XXX We should probably make QEMU configurable as well. */
+
+ str = getenv ("LIBGUESTFS_QEMU");
+ g->qemu = str != NULL ? str : QEMU;
g->main_loop = guestfs_get_default_main_loop ();
@@ -511,6 +514,22 @@ guestfs_get_path (guestfs_h *g)
return g->path;
}
+int
+guestfs_set_qemu (guestfs_h *g, const char *qemu)
+{
+ if (qemu == NULL)
+ g->qemu = QEMU;
+ else
+ g->qemu = qemu;
+ return 0;
+}
+
+const char *
+guestfs_get_qemu (guestfs_h *g)
+{
+ return g->qemu;
+}
+
/* Add a string to the current command line. */
static void
incr_cmdline_size (guestfs_h *g)
@@ -715,7 +734,7 @@ guestfs_launch (guestfs_h *g)
/* Set up the full command line. Do this in the subprocess so we
* don't need to worry about cleaning up.
*/
- g->cmdline[0] = (char *) QEMU;
+ g->cmdline[0] = (char *) g->qemu;
/* Construct the -net channel parameter for qemu. */
snprintf (vmchannel, sizeof vmchannel,
@@ -752,7 +771,7 @@ guestfs_launch (guestfs_h *g)
g->cmdline[g->cmdline_size-1] = NULL;
if (g->verbose) {
- fprintf (stderr, "%s", QEMU);
+ fprintf (stderr, "%s", g->qemu);
for (i = 0; g->cmdline[i]; ++i)
fprintf (stderr, " %s", g->cmdline[i]);
fprintf (stderr, "\n");
@@ -775,8 +794,8 @@ guestfs_launch (guestfs_h *g)
setpgid (0, 0);
#endif
- execv (QEMU, g->cmdline); /* Run qemu. */
- perror (QEMU);
+ execv (g->qemu, g->cmdline); /* Run qemu. */
+ perror (g->qemu);
_exit (1);
}