aboutsummaryrefslogtreecommitdiff
path: root/src/inc.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2014-06-10 03:55:35 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2014-06-10 03:55:35 +0000
commitc78c4cbc71476468ccaaa64ee9d4b280b7bcd612 (patch)
treec359831fd3d1cdb258e9630a5ca5e73032b2aa65 /src/inc.c
parentb055e9771b979f98b4b3237ce8d98f75c56b988c (diff)
made mbox locking NFS-safe (#202).
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@3407 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src/inc.c')
-rw-r--r--src/inc.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/inc.c b/src/inc.c
index 7ae0426b..011a9fa9 100644
--- a/src/inc.c
+++ b/src/inc.c
@@ -1819,6 +1819,7 @@ static gint get_spool(FolderItem *dest, const gchar *mbox)
{
gint msgs, size;
gint lockfd;
+ LockType locktype = LOCK_FLOCK;
gchar tmp_mbox[MAXPATHLEN + 1];
GHashTable *folder_table = NULL;
@@ -1831,14 +1832,17 @@ static gint get_spool(FolderItem *dest, const gchar *mbox)
} else if (size < 0)
return -1;
- if ((lockfd = lock_mbox(mbox, LOCK_FLOCK)) < 0)
- return -1;
+ if ((lockfd = lock_mbox(mbox, locktype)) < 0) {
+ locktype = LOCK_FILE;
+ if ((lockfd = lock_mbox(mbox, locktype)) < 0)
+ return -1;
+ }
g_snprintf(tmp_mbox, sizeof(tmp_mbox), "%s%ctmpmbox.%p",
get_tmp_dir(), G_DIR_SEPARATOR, mbox);
if (copy_mbox(mbox, tmp_mbox) < 0) {
- unlock_mbox(mbox, lockfd, LOCK_FLOCK);
+ unlock_mbox(mbox, lockfd, locktype);
return -1;
}
@@ -1854,7 +1858,7 @@ static gint get_spool(FolderItem *dest, const gchar *mbox)
g_unlink(tmp_mbox);
if (msgs >= 0) empty_mbox(mbox);
- unlock_mbox(mbox, lockfd, LOCK_FLOCK);
+ unlock_mbox(mbox, lockfd, locktype);
if (!prefs_common.scan_all_after_inc) {
inc_update_folder_foreach(folder_table);