This patch fixes the problem for me (I'm having the exact same
problem, where a fresh sid instalation fails with the "cannot
write" errors). It seems to me that the code in
FcDirCacheProcess() is wrong: since files are being modified in
the cache directory, "dir_stat.st_mtime <= file_stat.st_mtime"
will often be false for random reasons; even though I don't fully
understand what the logic behind the code is, that doesn't
sound right. Wouldn't the intention of that function be to return
true unless an error happens?
Regards,

--
Álvaro Martínez Echevarría          ame ATATAT acm.org

``Pero yo que he sentido una vez en mis manos temblar
la alegría / ya no podré morir nunca. / Pero yo que he
tocado una vez las agudas agujas del pino / ya no podré
morir nunca''. [José Hierro, "El muerto"]
--- fontconfig-2.4.1/src/fccache.c.OLD  2006-09-09 16:30:00.000000000 -0700
+++ fontconfig-2.4.1/src/fccache.c      2006-10-16 15:06:47.000000000 -0700
@@ -143,7 +143,7 @@
     FcStrList  *list;
     FcChar8    *cache_dir;
     struct stat file_stat, dir_stat;
-    FcBool     ret = FcFalse;
+    FcBool     ret = FcTrue;
 
     if (stat ((char *) dir, &dir_stat) < 0)
         return FcFalse;

Reply via email to