summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Jones <rjones@trick.home.annexia.org>2009-06-16 09:56:19 +0100
committerRichard Jones <rjones@trick.home.annexia.org>2009-06-16 09:56:19 +0100
commit28e2bceefeedbef82dcc24e60e8a22da0960354a (patch)
tree5b956a2a1005e7ec45b0c43211eb210fc5a35d1a
parent2b4e82d6ca502581bc63fd873e4b55aa93463f62 (diff)
downloadlibguestfs-28e2bceefeedbef82dcc24e60e8a22da0960354a.tar.gz
libguestfs-28e2bceefeedbef82dcc24e60e8a22da0960354a.tar.xz
libguestfs-28e2bceefeedbef82dcc24e60e8a22da0960354a.zip
Fix build_supermin_appliance to return kernel / initrd names.
-rw-r--r--src/guestfs.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/guestfs.c b/src/guestfs.c
index 8f06d3ba..20fafc12 100644
--- a/src/guestfs.c
+++ b/src/guestfs.c
@@ -1148,17 +1148,26 @@ build_supermin_appliance (guestfs_h *g, const char *path,
char **kernel, char **initrd)
{
char cmd[4096];
- int r;
+ int r, len;
+
+ len = strlen (g->tmpdir);
+ *kernel = safe_malloc (g, len + 8);
+ snprintf (*kernel, len+8, "%s/kernel", g->tmpdir);
+ *initrd = safe_malloc (g, len + 8);
+ snprintf (*initrd, len+8, "%s/initrd", g->tmpdir);
snprintf (cmd, sizeof cmd,
"PATH='%s':$PATH "
- "guestfs-supermin-helper '%s' %s/kernel %s/initrd",
+ "guestfs-supermin-helper '%s' %s %s",
path,
- path, g->tmpdir, g->tmpdir);
+ path, *kernel, *initrd);
r = system (cmd);
if (r == -1 || WEXITSTATUS(r) != 0) {
error (g, _("external command failed: %s"), cmd);
+ free (*kernel);
+ free (*initrd);
+ *kernel = *initrd = NULL;
return -1;
}