efreet: use eina_file_mkstemp() instead of mkstemp() for portability
authorVincent Torri <vincent dot torri at gmail dot com>
Tue, 29 Sep 2015 21:34:23 +0000 (23:34 +0200)
committerCedric BAIL <cedric@osg.samsung.com>
Tue, 13 Oct 2015 00:21:59 +0000 (17:21 -0700)
Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
src/bin/efreet/efreet_desktop_cache_create.c

index 498daa4..4ab9fc6 100644 (file)
@@ -280,7 +280,7 @@ main(int argc, char **argv)
     int i;
     char file[PATH_MAX] = { '\0' };
     char util_file[PATH_MAX] = { '\0' };
-    mode_t um;
+    Eina_Tmpstr *tmpstr = NULL;
 
     if (!eina_init()) goto eina_error;
     _efreet_desktop_cache_log_dom =
@@ -351,24 +351,22 @@ main(int argc, char **argv)
     }
 
     /* create cache */
-    snprintf(file, sizeof(file), "%s.XXXXXX", efreet_desktop_cache_file());
-    /* set secure umask for temporary files */
-    um = umask(0077);
-    tmpfd = mkstemp(file);
-    umask(um);
+    snprintf(file, sizeof(file), "%s.XXXXXX.cache", efreet_desktop_cache_file());
+    tmpfd = eina_file_mkstemp(file, &tmpstr);
     if (tmpfd < 0) goto error;
     close(tmpfd);
-    ef = eet_open(file, EET_FILE_MODE_READ_WRITE);
+    ef = eet_open(tmpstr, EET_FILE_MODE_READ_WRITE);
+    eina_tmpstr_del(tmpstr);
+    tmpstr = NULL;
     if (!ef) goto error;
 
-    snprintf(util_file, sizeof(util_file), "%s.XXXXXX", efreet_desktop_util_cache_file());
-    /* set secure umask for temporary files */
-    um = umask(0077);
-    tmpfd = mkstemp(util_file);
-    umask(um);
+    snprintf(util_file, sizeof(util_file), "%s.XXXXXX.cache", efreet_desktop_util_cache_file());
+    tmpfd = eina_file_mkstemp(util_file, &tmpstr);
     if (tmpfd < 0) goto error;
     close(tmpfd);
     util_ef = eet_open(util_file, EET_FILE_MODE_READ_WRITE);
+    eina_tmpstr_del(tmpstr);
+    tmpstr = NULL;
     if (!util_ef) goto error;
 
     /* write cache version */
@@ -524,6 +522,7 @@ main(int argc, char **argv)
     close(lockfd);
     return 0;
 error:
+    eina_tmpstr_del(tmpstr);
     if (stack) eina_inarray_free(stack);
     IF_FREE(dir);
 edd_error: