Make print_timestamped_message into a cross-module function.
[libguestfs.git] / src / launch.c
index 0d7a3f3..9deb0cf 100644 (file)
@@ -255,7 +255,6 @@ dir_contains_files (const char *dir, ...)
   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);
@@ -266,8 +265,6 @@ static const char *initrd_name = "initramfs." REPO "." host_cpu ".img";
 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];
@@ -293,16 +290,11 @@ guestfs__launch (guestfs_h *g)
   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);
@@ -407,7 +399,7 @@ guestfs__launch (guestfs_h *g)
   }
 
   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)
@@ -470,7 +462,7 @@ guestfs__launch (guestfs_h *g)
   }
 
   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) {
@@ -837,7 +829,7 @@ guestfs__launch (guestfs_h *g)
   }
 
   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
@@ -877,6 +869,23 @@ guestfs__launch (guestfs_h *g)
   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.
  */
@@ -972,8 +981,8 @@ timeval_diff (const struct timeval *x, const struct timeval *y)
   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;