summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2011-01-27 10:12:34 +0000
committerRichard W.M. Jones <rjones@redhat.com>2011-02-03 18:41:49 +0000
commit99f0d8859fdc8f6c81873d4cdd1c8c780ac25e84 (patch)
treeb64a7ff421682e465b05db470ac9e0eecd3ff43f
parent5ae752559284efd925fb7959c5760d4fee25f1d6 (diff)
downloadlibguestfs-99f0d8859fdc8f6c81873d4cdd1c8c780ac25e84.tar.gz
libguestfs-99f0d8859fdc8f6c81873d4cdd1c8c780ac25e84.tar.xz
libguestfs-99f0d8859fdc8f6c81873d4cdd1c8c780ac25e84.zip
lib: Move appliance launching to separate function.
This is just code motion.
-rw-r--r--src/launch.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/src/launch.c b/src/launch.c
index a7a86b97..775f7a68 100644
--- a/src/launch.c
+++ b/src/launch.c
@@ -70,6 +70,7 @@
#include "guestfs-internal-actions.h"
#include "guestfs_protocol.h"
+static int launch_appliance (guestfs_h *g);
static int qemu_supports (guestfs_h *g, const char *option);
/* Add a string to the current command line. */
@@ -350,32 +351,19 @@ static int is_openable (guestfs_h *g, const char *path, int flags);
int
guestfs__launch (guestfs_h *g)
{
- int r;
- int wfd[2], rfd[2];
- char unixsock[256];
- struct sockaddr_un addr;
-
/* Configured? */
- if (!g->cmdline) {
- error (g, _("you must call guestfs_add_drive before guestfs_launch"));
- return -1;
- }
-
if (g->state != CONFIG) {
error (g, _("the libguestfs handle has already been launched"));
return -1;
}
- /* Start the clock ... */
- gettimeofday (&g->launch_t, NULL);
-
/* Make the temporary directory. */
if (!g->tmpdir) {
TMP_TEMPLATE_ON_STACK (dir_template);
g->tmpdir = safe_strdup (g, dir_template);
if (mkdtemp (g->tmpdir) == NULL) {
perrorf (g, _("%s: cannot create temporary directory"), dir_template);
- goto cleanup0;
+ return -1;
}
}
@@ -386,6 +374,28 @@ guestfs__launch (guestfs_h *g)
if (chmod (g->tmpdir, 0755) == -1)
fprintf (stderr, "chmod: %s: %m (ignored)\n", g->tmpdir);
+ return launch_appliance (g);
+}
+
+static int
+launch_appliance (guestfs_h *g)
+{
+ int r;
+ int wfd[2], rfd[2];
+ char unixsock[256];
+ struct sockaddr_un addr;
+
+ /* At present you must add drives before starting the appliance. In
+ * future when we enable hotplugging you won't need to do this.
+ */
+ if (!g->cmdline) {
+ error (g, _("you must call guestfs_add_drive before guestfs_launch"));
+ return -1;
+ }
+
+ /* Start the clock ... */
+ gettimeofday (&g->launch_t, NULL);
+
/* Locate and/or build the appliance. */
char *kernel = NULL, *initrd = NULL, *appliance = NULL;
if (guestfs___build_appliance (g, &kernel, &initrd, &appliance) == -1)