return tmpdir;
}
+int unlink_file_destructor(char *filename)
+{
+ unlink(filename);
+ return 0;
+}
+
char *maybe_temp_file(const void *ctx, const char *extension, bool keep,
const char *srcname)
{
struct stat st;
unsigned int count = 0;
- if (!keep)
- srcname = talloc_basename(ctx, srcname);
- else
- assert(srcname[0] == '/');
-
+ srcname = talloc_basename(ctx, srcname);
if (strrchr(srcname, '.'))
baselen = strrchr(srcname, '.') - srcname;
else
do {
f = talloc_asprintf(ctx, "%s/%.*s%s%s",
- keep ? "" : temp_dir(ctx),
+ temp_dir(ctx),
baselen, srcname,
suffix, extension);
talloc_free(suffix);
} while (lstat(f, &st) == 0);
if (tools_verbose)
- printf("Creating file %s\n", f);
+ printf("Creating %sfile %s\n", keep ? "" : "temporary ", f);
+
+ if (!keep)
+ talloc_set_destructor(f, unlink_file_destructor);
talloc_free(suffix);
return f;