return 1;
}
-static void print_timestamped_message (guestfs_h *g, const char *fs, ...);
static int build_supermin_appliance (guestfs_h *g, const char *path, char **kernel, char **initrd);
static int is_openable (guestfs_h *g, const char *path, int flags);
static void print_cmdline (guestfs_h *g);
int
guestfs__launch (guestfs_h *g)
{
- const char *tmpdir;
- char dir_template[PATH_MAX];
int r, pmore;
size_t len;
int wfd[2], rfd[2];
gettimeofday (&g->launch_t, NULL);
/* Make the temporary directory. */
-#ifdef P_tmpdir
- tmpdir = P_tmpdir;
-#else
- tmpdir = "/tmp";
-#endif
-
- tmpdir = getenv ("TMPDIR") ? : tmpdir;
- snprintf (dir_template, sizeof dir_template, "%s/libguestfsXXXXXX", tmpdir);
-
if (!g->tmpdir) {
+ const char *tmpdir = guestfs___tmpdir ();
+ char dir_template[strlen (tmpdir) + 32];
+ sprintf (dir_template, "%s/libguestfsXXXXXX", tmpdir);
+
g->tmpdir = safe_strdup (g, dir_template);
if (mkdtemp (g->tmpdir) == NULL) {
perrorf (g, _("%s: cannot create temporary directory"), dir_template);
}
if (g->verbose)
- print_timestamped_message (g, "begin testing qemu features");
+ guestfs___print_timestamped_message (g, "begin testing qemu features");
/* Get qemu help text and version. */
if (qemu_supports (g, NULL) == -1)
}
if (g->verbose)
- print_timestamped_message (g, "finished testing qemu features");
+ guestfs___print_timestamped_message (g, "finished testing qemu features");
r = fork ();
if (r == -1) {
* from our UID) for security reasons.
*/
while (sock == -1) {
- sock = guestfs__accept_from_daemon (g);
+ sock = guestfs___accept_from_daemon (g);
if (sock == -1)
goto cleanup1;
*/
uint32_t size;
void *buf = NULL;
- r = guestfs__recv_from_daemon (g, &size, &buf);
+ r = guestfs___recv_from_daemon (g, &size, &buf);
free (buf);
if (r == -1) return -1;
}
if (g->verbose)
- print_timestamped_message (g, "appliance is up");
+ guestfs___print_timestamped_message (g, "appliance is up");
/* This is possible in some really strange situations, such as
* guestfsd starts up OK but then qemu immediately exits. Check for
return -1;
}
+const char *
+guestfs___tmpdir (void)
+{
+ const char *tmpdir;
+
+#ifdef P_tmpdir
+ tmpdir = P_tmpdir;
+#else
+ tmpdir = "/tmp";
+#endif
+
+ const char *t = getenv ("TMPDIR");
+ if (t) tmpdir = t;
+
+ return tmpdir;
+}
+
/* This function is used to print the qemu command line before it gets
* executed, when in verbose mode.
*/
return msec;
}
-static void
-print_timestamped_message (guestfs_h *g, const char *fs, ...)
+void
+guestfs___print_timestamped_message (guestfs_h *g, const char *fs, ...)
{
va_list args;
char *msg;