[Fontconfig] fontconfig: Branch 'master'

Akira TAGOH tagoh at kemper.freedesktop.org
Sun Jun 17 18:53:32 PDT 2012


 src/fcatomic.c |   14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

New commits:
commit 4353df754fcf4126ff4a69ccfef1a59450e5a7c7
Author: Akira TAGOH <akira at tagoh.org>
Date:   Mon Jun 18 10:52:21 2012 +0900

    clean up the lock file properly on even hardlink-not-supported filesystem.

diff --git a/src/fcatomic.c b/src/fcatomic.c
index bc7b07b..350744a 100644
--- a/src/fcatomic.c
+++ b/src/fcatomic.c
@@ -105,6 +105,7 @@ FcAtomicLock (FcAtomic *atomic)
 #ifdef HAVE_LINK
     int		fd = -1;
     FILE	*f = 0;
+    FcBool	no_link = FcFalse;
 
     strcpy ((char *) atomic->tmp, (char *) atomic->file);
     strcat ((char *) atomic->tmp, TMP_NAME);
@@ -137,6 +138,7 @@ FcAtomicLock (FcAtomic *atomic)
 	 * the hard link. so better try to fallback
 	 */
 	ret = mkdir ((char *) atomic->lck, 0600);
+	no_link = FcTrue;
     }
     (void) unlink ((char *) atomic->tmp);
 #else
@@ -156,8 +158,16 @@ FcAtomicLock (FcAtomic *atomic)
 	    if ((long int) (now - lck_stat.st_mtime) > 10 * 60)
 	    {
 #ifdef HAVE_LINK
-		if (unlink ((char *) atomic->lck) == 0)
-		    return FcAtomicLock (atomic);
+		if (no_link)
+		{
+		    if (rmdir ((char *) atomic->lck) == 0)
+			return FcAtomicLock (atomic);
+		}
+		else
+		{
+		    if (unlink ((char *) atomic->lck) == 0)
+			return FcAtomicLock (atomic);
+		}
 #else
 		if (rmdir ((char *) atomic->lck) == 0)
 		    return FcAtomicLock (atomic);


More information about the Fontconfig mailing list