In the function ‘guestfs_int_make_temp_path’, allow an optional
extension to be specified. For example:
r = guestfs_int_make_temp_path (g, "ls", "txt");
will create paths like ‘<tmpdir>/ls123.txt’.
NULL can also be passed for the extension, which means no extension.
---
lib/drives.c | 2 +-
lib/file.c | 8 ++++----
lib/guestfs-internal.h | 2 +-
lib/journal.c | 2 +-
lib/tmpdirs.c | 8 ++++++--
lib/tsk.c | 4 ++--
lib/yara.c | 2 +-
7 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/lib/drives.c b/lib/drives.c
index ec8bdbbe4..117c8bf85 100644
--- a/lib/drives.c
+++ b/lib/drives.c
@@ -421,7 +421,7 @@ create_drive_dev_null (guestfs_h *g,
data->format = "raw";
}
- tmpfile = guestfs_int_make_temp_path (g, "devnull");
+ tmpfile = guestfs_int_make_temp_path (g, "devnull", "img");
if (tmpfile == NULL)
return NULL;
diff --git a/lib/file.c b/lib/file.c
index 73c983c2b..fa3189a71 100644
--- a/lib/file.c
+++ b/lib/file.c
@@ -87,7 +87,7 @@ guestfs_impl_read_file (guestfs_h *g, const char *path, size_t *size_r)
char *ret = NULL;
struct stat statbuf;
- tmpfile = guestfs_int_make_temp_path (g, "cat");
+ tmpfile = guestfs_int_make_temp_path (g, "cat", NULL);
if (tmpfile == NULL)
goto err;
@@ -213,7 +213,7 @@ guestfs_impl_find (guestfs_h *g, const char *directory)
char **ret = NULL;
size_t i, count, size;
- tmpfile = guestfs_int_make_temp_path (g, "find");
+ tmpfile = guestfs_int_make_temp_path (g, "find", "txt");
if (tmpfile == NULL)
goto err;
@@ -317,7 +317,7 @@ write_or_append (guestfs_h *g, const char *path,
(g, path, content, size);
/* Write the content out to a temporary file. */
- tmpfile = guestfs_int_make_temp_path (g, "write");
+ tmpfile = guestfs_int_make_temp_path (g, "write", NULL);
if (tmpfile == NULL)
goto err;
@@ -513,7 +513,7 @@ guestfs_impl_ls (guestfs_h *g, const char *directory)
char **ret = NULL;
size_t i, count, size;
- tmpfile = guestfs_int_make_temp_path (g, "ls");
+ tmpfile = guestfs_int_make_temp_path (g, "ls", "txt");
if (tmpfile == NULL)
goto err;
diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h
index d24435011..f3379da7d 100644
--- a/lib/guestfs-internal.h
+++ b/lib/guestfs-internal.h
@@ -661,7 +661,7 @@ extern int guestfs_int_set_env_tmpdir (guestfs_h *g, const char
*envname, const
extern int guestfs_int_set_env_runtimedir (guestfs_h *g, const char *envname, const char
*runtimedir);
extern int guestfs_int_lazy_make_tmpdir (guestfs_h *g);
extern int guestfs_int_lazy_make_sockdir (guestfs_h *g);
-extern char *guestfs_int_make_temp_path (guestfs_h *g, const char *name);
+extern char *guestfs_int_make_temp_path (guestfs_h *g, const char *name, const char
*extension);
extern char *guestfs_int_lazy_make_supermin_appliance_dir (guestfs_h *g);
extern void guestfs_int_remove_tmpdir (guestfs_h *g);
extern void guestfs_int_remove_sockdir (guestfs_h *g);
diff --git a/lib/journal.c b/lib/journal.c
index f36e66117..75a16c8bc 100644
--- a/lib/journal.c
+++ b/lib/journal.c
@@ -66,7 +66,7 @@ guestfs_impl_journal_get (guestfs_h *g)
size_t i, j, size;
uint64_t len;
- tmpfile = guestfs_int_make_temp_path (g, "journal");
+ tmpfile = guestfs_int_make_temp_path (g, "journal", NULL);
if (tmpfile == NULL)
goto err;
diff --git a/lib/tmpdirs.c b/lib/tmpdirs.c
index 344475d1b..605bf90fb 100644
--- a/lib/tmpdirs.c
+++ b/lib/tmpdirs.c
@@ -228,7 +228,8 @@ guestfs_int_lazy_make_sockdir (guestfs_h *g)
* Returns a unique path or NULL on error.
*/
char *
-guestfs_int_make_temp_path (guestfs_h *g, const char *name)
+guestfs_int_make_temp_path (guestfs_h *g,
+ const char *name, const char *extension)
{
int ret = 0;
@@ -236,7 +237,10 @@ guestfs_int_make_temp_path (guestfs_h *g, const char *name)
if (ret < 0)
return NULL;
- return safe_asprintf (g, "%s/%s%d", g->tmpdir, name, ++g->unique);
+ return safe_asprintf (g, "%s/%s%d%s%s",
+ g->tmpdir, name, ++g->unique,
+ extension ? "." : "",
+ extension ? extension : "");
}
/**
diff --git a/lib/tsk.c b/lib/tsk.c
index da9ca8dad..09e514bd2 100644
--- a/lib/tsk.c
+++ b/lib/tsk.c
@@ -43,7 +43,7 @@ guestfs_impl_filesystem_walk (guestfs_h *g, const char *mountable)
int ret = 0;
CLEANUP_UNLINK_FREE char *tmpfile = NULL;
- tmpfile = guestfs_int_make_temp_path (g, "filesystem_walk");
+ tmpfile = guestfs_int_make_temp_path (g, "filesystem_walk", NULL);
if (tmpfile == NULL)
return NULL;
@@ -60,7 +60,7 @@ guestfs_impl_find_inode (guestfs_h *g, const char *mountable, int64_t
inode)
int ret = 0;
CLEANUP_UNLINK_FREE char *tmpfile = NULL;
- tmpfile = guestfs_int_make_temp_path (g, "find_inode");
+ tmpfile = guestfs_int_make_temp_path (g, "find_inode", NULL);
if (tmpfile == NULL)
return NULL;
diff --git a/lib/yara.c b/lib/yara.c
index 7e4683101..edced3be8 100644
--- a/lib/yara.c
+++ b/lib/yara.c
@@ -43,7 +43,7 @@ guestfs_impl_yara_scan (guestfs_h *g, const char *path)
int r;
CLEANUP_UNLINK_FREE char *tmpfile = NULL;
- tmpfile = guestfs_int_make_temp_path (g, "yara_scan");
+ tmpfile = guestfs_int_make_temp_path (g, "yara_scan", NULL);
if (tmpfile == NULL)
return NULL;
--
2.13.2