From 28878014c991744161142507dc312c963d1a51d5 Mon Sep 17 00:00:00 2001 From: Sebastian Dransfeld Date: Fri, 11 Jun 2010 21:43:07 +0000 Subject: [PATCH] flock -> fcntl flock isn't portable. Fix some headers too. SVN revision: 49649 --- legacy/efreet/src/bin/efreet_desktop_cache_create.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/legacy/efreet/src/bin/efreet_desktop_cache_create.c b/legacy/efreet/src/bin/efreet_desktop_cache_create.c index 2c9f18d4f6..52f01a6134 100644 --- a/legacy/efreet/src/bin/efreet_desktop_cache_create.c +++ b/legacy/efreet/src/bin/efreet_desktop_cache_create.c @@ -7,13 +7,13 @@ #include #include #include -#include #include #include #include #include #include +#include #include #include "Efreet.h" @@ -212,6 +212,7 @@ main(int argc, char **argv) struct stat st; int changed = 0; int i; + struct flock fl; for (i = 1; i < argc; i++) { @@ -239,9 +240,12 @@ main(int argc, char **argv) /* lock process, so that we only run one copy of this program */ snprintf(file, sizeof(file), "%s/.efreet/desktop_data.lock", efreet_home_dir_get()); - fd = open(file, O_CREAT | O_RDONLY, S_IRUSR | S_IWUSR); + fd = open(file, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); if (fd < 0) goto efreet_error; - if (flock(fd, LOCK_EX | LOCK_NB) < 0) + memset(&fl, 0, sizeof(struct flock)); + fl.l_type = F_WRLCK; + fl.l_whence = SEEK_SET; + if (fcntl(fd, F_SETLK, &fl) < 0) { if (verbose) {