Move lock creation to own function for cache
authorenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 7 Feb 2011 21:33:22 +0000 (21:33 +0000)
committerenglebass <englebass@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Mon, 7 Feb 2011 21:33:22 +0000 (21:33 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/efreet@56786 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

ChangeLog
src/bin/efreet_desktop_cache_create.c

index 7a49176..25e988a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -53,3 +53,4 @@
 
        * Don't create cache dir several times
        * Do efreet_init before using efreet_*() functions
+       * Move lock creation to own function for desktop cache
index e0e51f1..62051ac 100644 (file)
@@ -188,6 +188,30 @@ cache_scan(const char *path, const char *base_id, int priority, int recurse, int
     return 1;
 }
 
+static int
+cache_lock_file(void)
+{
+    char file[PATH_MAX];
+    struct flock fl;
+    int lockfd;
+
+    snprintf(file, sizeof(file), "%s/efreet/desktop_data.lock", efreet_cache_home_get());
+    lockfd = open(file, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
+    if (lockfd < 0) return -1;
+
+    memset(&fl, 0, sizeof(struct flock));
+    fl.l_type = F_WRLCK;
+    fl.l_whence = SEEK_SET;
+    if (fcntl(lockfd, F_SETLK, &fl) < 0)
+    {
+        if (verbose) printf("LOCKED! You may want to delete %s if this persists\n", file);
+        close(lockfd);
+        return -1;
+    }
+
+    return lockfd;
+}
+
 int
 main(int argc, char **argv)
 {
@@ -206,7 +230,6 @@ main(int argc, char **argv)
     struct stat st;
     int changed = 0;
     int i;
-    struct flock fl;
     char file[PATH_MAX] = { '\0' };
     char util_file[PATH_MAX] = { '\0' };
 
@@ -238,20 +261,9 @@ main(int argc, char **argv)
     if (!ecore_file_mkpath(file)) goto efreet_error;
 
     /* lock process, so that we only run one copy of this program */
-    snprintf(file, sizeof(file), "%s/efreet/desktop_data.lock", efreet_cache_home_get());
-    lockfd = open(file, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
-    if (lockfd < 0) goto efreet_error;
-    memset(&fl, 0, sizeof(struct flock));
-    fl.l_type = F_WRLCK;
-    fl.l_whence = SEEK_SET;
-    if (fcntl(lockfd, F_SETLK, &fl) < 0)
-    {
-        if (verbose)
-        {
-            printf("LOCKED! You may want to delete %s if this persists\n", file);
-        }
-        goto efreet_error;
-    }
+    lockfd = cache_lock_file();
+    if (lockfd == -1) goto efreet_error;
+
     edd = efreet_desktop_edd();
     if (!edd) goto edd_error;