summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2010-08-23 12:53:11 +0100
committerRichard Jones <rjones@redhat.com>2010-08-23 12:56:14 +0100
commita2d4a8bf073c3551d174bd6c406e0cf3d27fb560 (patch)
tree83ecd024845b88db5f578529ecf2b5174f70616d /src
parent4d2f1632ad655130fafab3bf7fe8fa5cb59705d8 (diff)
downloadlibguestfs-a2d4a8bf073c3551d174bd6c406e0cf3d27fb560.tar.gz
libguestfs-a2d4a8bf073c3551d174bd6c406e0cf3d27fb560.tar.xz
libguestfs-a2d4a8bf073c3551d174bd6c406e0cf3d27fb560.zip
Factor out code for locating the temporary directory.
This is just code movement.
Diffstat (limited to 'src')
-rw-r--r--src/guestfs-internal.h1
-rw-r--r--src/launch.c32
2 files changed, 22 insertions, 11 deletions
diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h
index 966eeeb2..c8db8291 100644
--- a/src/guestfs-internal.h
+++ b/src/guestfs-internal.h
@@ -197,6 +197,7 @@ extern void *guestfs_safe_realloc (guestfs_h *g, void *ptr, int nbytes);
extern char *guestfs_safe_strdup (guestfs_h *g, const char *str);
extern char *guestfs_safe_strndup (guestfs_h *g, const char *str, size_t n);
extern void *guestfs_safe_memdup (guestfs_h *g, void *ptr, size_t size);
+extern const char *guestfs___tmpdir (void);
extern void guestfs___free_inspect_info (guestfs_h *g);
extern int guestfs___set_busy (guestfs_h *g);
extern int guestfs___end_busy (guestfs_h *g);
diff --git a/src/launch.c b/src/launch.c
index 0d7a3f34..4a479bc0 100644
--- a/src/launch.c
+++ b/src/launch.c
@@ -266,8 +266,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 +291,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);
@@ -877,6 +870,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.
*/