aboutsummaryrefslogtreecommitdiffstats
path: root/mail/folder-browser.c
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2001-07-04 00:52:38 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2001-07-04 00:52:38 +0800
commitea9e4260969354a6479dceea253bb74d23c3acd9 (patch)
treeefc55e0149a5678bf5e5395c7481ec72069cb316 /mail/folder-browser.c
parent3f3936e0f9fb2acc990f0b0279740d740d945a24 (diff)
downloadgsoc2013-evolution-ea9e4260969354a6479dceea253bb74d23c3acd9.tar.gz
gsoc2013-evolution-ea9e4260969354a6479dceea253bb74d23c3acd9.tar.zst
gsoc2013-evolution-ea9e4260969354a6479dceea253bb74d23c3acd9.zip
Use mkdtemp if we have it, else use mktemp but make the code safer than it
2001-07-03 Jeffrey Stedfast <fejj@ximian.com> * folder-browser.c (message_list_drag_data_get): Use mkdtemp if we have it, else use mktemp but make the code safer than it was previously. * mail-display.c (launch_cb): Free the template string if the tempdir failed to be created. svn path=/trunk/; revision=10753
Diffstat (limited to 'mail/folder-browser.c')
-rw-r--r--mail/folder-browser.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/mail/folder-browser.c b/mail/folder-browser.c
index cee92b4d60..d9083333cc 100644
--- a/mail/folder-browser.c
+++ b/mail/folder-browser.c
@@ -188,24 +188,37 @@ message_list_drag_data_get (ETree *tree, int row, ETreePath path, int col,
switch (info) {
case DND_TARGET_TYPE_TEXT_URI_LIST:
{
- char dir_template[] = "/tmp/evolution-XXXXXX";
- const char *dirname, *filename;
+ char *uri_list, tmpdir, *tmpl;
CamelMimeMessage *message;
+ const char *filename;
CamelStream *stream;
char *uri_list;
+ char *tmpdir;
int fd;
- dirname = mktemp (dir_template);
- if (!dirname) {
+ tmpl = g_strdup ("/tmp/evolution.XXXXXX");
+#ifdef HAVE_MKDTEMP
+ tmpdir = mkdtemp (tmpl);
+#else
+ tmpdir = mktemp (tmpl);
+ if (tmpdir) {
+ if (mkdir (tmpdir, S_IRWXU) == -1)
+ tmpdir = NULL;
+ }
+#endif
+ if (!tmpdir) {
+ char *msg = g_strdup_printf (_("Could not create temporary "
+ "directory: %s"),
+ g_strerror (errno));
+ gnome_error_dialog (msg);
/* cleanup and abort */
for (i = 0; i < uids->len; i++)
g_free (uids->pdata[i]);
g_ptr_array_free (uids, TRUE);
+ g_free (tmpl);
return;
}
- mkdir (dirname, 0700);
-
message = camel_folder_get_message (fb->folder, uids->pdata[0], NULL);
g_free (uids->pdata[0]);