[Fontconfig] fontconfig: Branch 'master'
Akira TAGOH
tagoh at kemper.freedesktop.org
Mon May 28 00:00:14 PDT 2012
src/fcatomic.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
New commits:
commit 26160366d7ba5c7baf20ae091d5dd0388714df83
Author: Akira TAGOH <akira at tagoh.org>
Date: Mon May 28 15:58:56 2012 +0900
fcatomic: fallback to create a directory with FcAtomicLock
link(2) might be failed on the filesystem that doesn't support
the hard link. e.g. FcAtomicLock() always fails on FAT filesystem
when link(2) is available.
So that may be a good idea to fallback if link(2) is failed.
diff --git a/src/fcatomic.c b/src/fcatomic.c
index 33c1cc6..4f6ab01 100644
--- a/src/fcatomic.c
+++ b/src/fcatomic.c
@@ -130,6 +130,13 @@ FcAtomicLock (FcAtomic *atomic)
return FcFalse;
}
ret = link ((char *) atomic->tmp, (char *) atomic->lck);
+ if (ret < 0 && errno == EPERM)
+ {
+ /* the filesystem where atomic->lck points to may not supports
+ * the hard link. so better try to fallback
+ */
+ ret = mkdir ((char *) atomic->lck, 0600);
+ }
(void) unlink ((char *) atomic->tmp);
#else
ret = mkdir ((char *) atomic->lck, 0600);
@@ -195,7 +202,8 @@ void
FcAtomicUnlock (FcAtomic *atomic)
{
#ifdef HAVE_LINK
- unlink ((char *) atomic->lck);
+ if (unlink ((char *) atomic->lck) == -1)
+ rmdir ((char *) atomic->lck);
#else
rmdir ((char *) atomic->lck);
#endif
More information about the Fontconfig
mailing list