From 4d114e022ca38e7aeb6cc2cc3715f7dca69c82a6 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 13 Jan 2010 20:01:53 +0100 Subject: Bug #606874 - mktemp disabled in latest glibc-2.11.90-8 --- e-util/e-mktemp.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'e-util/e-mktemp.c') diff --git a/e-util/e-mktemp.c b/e-util/e-mktemp.c index 509b312ee8..15b566877e 100644 --- a/e-util/e-mktemp.c +++ b/e-util/e-mktemp.c @@ -167,7 +167,7 @@ gchar * e_mktemp (const gchar *template) { GString *path; - gchar *ret; + gint fd; path = get_dir (TRUE); if (!path) @@ -179,10 +179,14 @@ e_mktemp (const gchar *template) else g_string_append (path, "unknown-XXXXXX"); - ret = mktemp (path->str); - g_string_free(path, ret == NULL); + fd = g_mkstemp (path->str); - return ret; + if (fd != -1) { + close (fd); + g_unlink (path->str); + } + + return g_string_free (path, fd == -1); } gint @@ -226,7 +230,17 @@ e_mkdtemp (const gchar *template) #ifdef HAVE_MKDTEMP tmpdir = mkdtemp (path->str); #else - tmpdir = mktemp (path->str); + { + gint fd = g_mkstemp (path->str); + if (fd == -1) { + tmpdir = NULL; + } else { + close (fd); + tmpdir = path->str; + g_unlink (tmpdir); + } + } + if (tmpdir) { if (g_mkdir (tmpdir, S_IRWXU) == -1) tmpdir = NULL; -- cgit