Bump version to 2.3.93.
Use open instead of fopen (requested by Phil Race for Sun). src/fccache.c (FcDirCacheWrite); Fix GCC4 warning and Makefile brokenness for /var/cache/fontconfig dir.
This commit is contained in:
parent
6f767cec49
commit
3bfae75d44
20
ChangeLog
20
ChangeLog
|
@ -1,4 +1,24 @@
|
||||||
|
2005-12-20 Patrick Lam <plam@mit.edu>
|
||||||
|
* ChangeLog:
|
||||||
|
* README:
|
||||||
|
* configure.in:
|
||||||
|
* fontconfig/fontconfig.h:
|
||||||
|
|
||||||
|
Bump version to 2.3.93.
|
||||||
|
|
||||||
2005-12-20 Patrick Lam <plam@mit.edu>
|
2005-12-20 Patrick Lam <plam@mit.edu>
|
||||||
|
* src/fcxml.c (FcConfigParseAndLoad):
|
||||||
|
|
||||||
|
Use open instead of fopen (requested by Phil Race for Sun).
|
||||||
|
|
||||||
|
2005-12-20 Patrick Lam <plam@mit.edu>
|
||||||
|
* src/fccache.c (FcDirCacheWrite);
|
||||||
|
* fc-cache/Makefile.am:
|
||||||
|
|
||||||
|
Fix GCC4 warning and Makefile brokenness for /var/cache/fontconfig
|
||||||
|
dir.
|
||||||
|
|
||||||
|
2005-12-20 Patrick Lam <plam@mit.edu>
|
||||||
* src/fcfreetype.c (FcFreeTypeQuery):
|
* src/fcfreetype.c (FcFreeTypeQuery):
|
||||||
|
|
||||||
Restore code to skip over PCF fonts that have no encoded
|
Restore code to skip over PCF fonts that have no encoded
|
||||||
|
|
17
README
17
README
|
@ -1,11 +1,24 @@
|
||||||
Fontconfig
|
Fontconfig
|
||||||
Font configuration and customization library
|
Font configuration and customization library
|
||||||
Version 2.3.92
|
Version 2.3.93
|
||||||
2005-11-04
|
2005-12-12
|
||||||
|
|
||||||
Check INSTALL for compilation and installation instructions.
|
Check INSTALL for compilation and installation instructions.
|
||||||
Report bugs to https://bugs.freedesktop.org in the fontconfig module.
|
Report bugs to https://bugs.freedesktop.org in the fontconfig module.
|
||||||
|
|
||||||
|
2.3.93
|
||||||
|
|
||||||
|
Create cache files in /var/cache/fontconfig with hashed filenames, if
|
||||||
|
possible, for added FHS compliance.
|
||||||
|
Make fc-cat read both per-directory and global cache files.
|
||||||
|
Add config file for Persian fonts from Sharif FarsiWeb, Inc.
|
||||||
|
Major performance improvements by Dirk Mueller, Stephen Kulow, and Michael Matz at SuSE: in particular, speed up FcFontSetMatch, and inline many functions.
|
||||||
|
Fix treatment of globs in config files, broken since 2.3.2 and discovered by Mathias Clasen.
|
||||||
|
Don't use freetype internal headers (patch by Matthias Clasen).
|
||||||
|
Further space improvements: create langsets statically, so that they can live in .rodata.
|
||||||
|
Properly align mmapped data structures to make e.g. ia64 happy.
|
||||||
|
Bug fixes.
|
||||||
|
|
||||||
2.3.92
|
2.3.92
|
||||||
|
|
||||||
Fix corrupted caches bugs from 2.3.91 (reported by Mike Fabian).
|
Fix corrupted caches bugs from 2.3.91 (reported by Mike Fabian).
|
||||||
|
|
|
@ -33,7 +33,7 @@ dnl This is the package version number, not the shared library
|
||||||
dnl version. This same version number must appear in fontconfig/fontconfig.h
|
dnl version. This same version number must appear in fontconfig/fontconfig.h
|
||||||
dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's
|
dnl Yes, it is a pain to synchronize version numbers. Unfortunately, it's
|
||||||
dnl not possible to extract the version number here from fontconfig.h
|
dnl not possible to extract the version number here from fontconfig.h
|
||||||
AM_INIT_AUTOMAKE(fontconfig, 2.3.92)
|
AM_INIT_AUTOMAKE(fontconfig, 2.3.93)
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
|
|
||||||
dnl libtool versioning
|
dnl libtool versioning
|
||||||
|
|
|
@ -31,6 +31,14 @@ AM_CPPFLAGS = -DPKGCACHEDIR='"${pkgcachedir}"'
|
||||||
|
|
||||||
pkgcache_DATA=stamp
|
pkgcache_DATA=stamp
|
||||||
|
|
||||||
|
uninstall-pkgcacheDATA:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
echo " $(RM) -rf '$(DESTDIR)$(pkgcachedir)'"; \
|
||||||
|
$(RM) -rf "$(DESTDIR)$(pkgcachedir)"
|
||||||
|
|
||||||
|
clean-generic:
|
||||||
|
$(RM) stamp
|
||||||
|
|
||||||
stamp:
|
stamp:
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ typedef int FcBool;
|
||||||
|
|
||||||
#define FC_MAJOR 2
|
#define FC_MAJOR 2
|
||||||
#define FC_MINOR 3
|
#define FC_MINOR 3
|
||||||
#define FC_REVISION 92
|
#define FC_REVISION 93
|
||||||
|
|
||||||
#define FC_VERSION ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
|
#define FC_VERSION ((FC_MAJOR * 10000) + (FC_MINOR * 100) + (FC_REVISION))
|
||||||
|
|
||||||
|
|
|
@ -669,18 +669,55 @@ FcDirCacheHasCurrentArch (const FcChar8 *dir)
|
||||||
FcBool
|
FcBool
|
||||||
FcDirCacheUnlink (const FcChar8 *dir)
|
FcDirCacheUnlink (const FcChar8 *dir)
|
||||||
{
|
{
|
||||||
FcChar8 *cache_file = FcStrPlus (dir, (FcChar8 *) "/" FC_DIR_CACHE_FILE);
|
char *cache_file = (char *)FcStrPlus (dir, (FcChar8 *) "/" FC_DIR_CACHE_FILE);
|
||||||
|
char *cache_hashed;
|
||||||
|
int fd, collisions;
|
||||||
struct stat cache_stat;
|
struct stat cache_stat;
|
||||||
|
char name_buf[FC_MAX_FILE_LEN];
|
||||||
|
|
||||||
|
/* First remove normal cache file. */
|
||||||
if (stat ((char *) cache_file, &cache_stat) == 0 &&
|
if (stat ((char *) cache_file, &cache_stat) == 0 &&
|
||||||
unlink ((char *)cache_file) != 0)
|
unlink ((char *)cache_file) != 0)
|
||||||
|
goto bail;
|
||||||
|
|
||||||
|
/* Next remove any applicable hashed files. */
|
||||||
|
fd = -1; collisions = 0;
|
||||||
|
do
|
||||||
{
|
{
|
||||||
FcStrFree (cache_file);
|
cache_hashed = FcDirCacheHashName (cache_file, collisions++);
|
||||||
return FcFalse;
|
if (!cache_hashed)
|
||||||
|
goto bail;
|
||||||
|
|
||||||
|
if (fd > 0)
|
||||||
|
close (fd);
|
||||||
|
fd = open(cache_hashed, O_RDONLY);
|
||||||
|
if (fd == -1)
|
||||||
|
{
|
||||||
|
FcStrFree ((FcChar8 *)cache_file);
|
||||||
|
return FcTrue;
|
||||||
|
}
|
||||||
|
|
||||||
|
FcCacheReadString (fd, name_buf, sizeof (name_buf));
|
||||||
|
if (!strlen(name_buf))
|
||||||
|
goto bail;
|
||||||
|
} while (strcmp (name_buf, cache_file) != 0);
|
||||||
|
|
||||||
|
FcStrFree ((FcChar8 *)cache_file);
|
||||||
|
close (fd);
|
||||||
|
|
||||||
|
if (stat ((char *) cache_hashed, &cache_stat) == 0 &&
|
||||||
|
unlink ((char *)cache_hashed) != 0)
|
||||||
|
{
|
||||||
|
FcStrFree ((FcChar8 *)cache_hashed);
|
||||||
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
FcStrFree (cache_file);
|
FcStrFree ((FcChar8 *)cache_hashed);
|
||||||
return FcTrue;
|
return FcTrue;
|
||||||
|
|
||||||
|
bail:
|
||||||
|
FcStrFree ((FcChar8 *)cache_file);
|
||||||
|
return FcFalse;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -856,6 +893,8 @@ FcDirCacheOpen (char *cache_file)
|
||||||
if (fd > 0)
|
if (fd > 0)
|
||||||
close (fd);
|
close (fd);
|
||||||
fd = open(cache_hashed, O_RDONLY);
|
fd = open(cache_hashed, O_RDONLY);
|
||||||
|
FcStrFree ((FcChar8 *)cache_hashed);
|
||||||
|
|
||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
return -1;
|
return -1;
|
||||||
FcCacheReadString (fd, name_buf, sizeof (name_buf));
|
FcCacheReadString (fd, name_buf, sizeof (name_buf));
|
||||||
|
@ -999,7 +1038,7 @@ FcBool
|
||||||
FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
|
FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
|
||||||
{
|
{
|
||||||
char *cache_file;
|
char *cache_file;
|
||||||
char *cache_to_open;
|
char *cache_hashed;
|
||||||
int fd, fd_orig, i, dirs_count;
|
int fd, fd_orig, i, dirs_count;
|
||||||
FcAtomic *atomic;
|
FcAtomic *atomic;
|
||||||
FcCache metadata;
|
FcCache metadata;
|
||||||
|
@ -1020,13 +1059,13 @@ FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
|
||||||
fd = -1; collisions = 0;
|
fd = -1; collisions = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
cache_to_open = FcDirCacheHashName (cache_file, collisions++);
|
cache_hashed = FcDirCacheHashName (cache_file, collisions++);
|
||||||
if (!cache_to_open)
|
if (!cache_hashed)
|
||||||
goto bail0;
|
goto bail0;
|
||||||
|
|
||||||
if (fd > 0)
|
if (fd > 0)
|
||||||
close (fd);
|
close (fd);
|
||||||
fd = open(cache_to_open, O_RDONLY);
|
fd = open(cache_hashed, O_RDONLY);
|
||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
break;
|
break;
|
||||||
FcCacheReadString (fd, name_buf, sizeof (name_buf));
|
FcCacheReadString (fd, name_buf, sizeof (name_buf));
|
||||||
|
@ -1047,7 +1086,7 @@ FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
|
||||||
if (FcDebug () & FC_DBG_CACHE)
|
if (FcDebug () & FC_DBG_CACHE)
|
||||||
printf ("FcDirCacheWriteDir cache_file \"%s\"\n", cache_file);
|
printf ("FcDirCacheWriteDir cache_file \"%s\"\n", cache_file);
|
||||||
|
|
||||||
atomic = FcAtomicCreate ((FcChar8 *)cache_to_open);
|
atomic = FcAtomicCreate ((FcChar8 *)cache_hashed);
|
||||||
if (!atomic)
|
if (!atomic)
|
||||||
goto bail1;
|
goto bail1;
|
||||||
|
|
||||||
|
@ -1056,7 +1095,7 @@ FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
|
||||||
/* Now try rewriting the original version of the file. */
|
/* Now try rewriting the original version of the file. */
|
||||||
FcAtomicDestroy (atomic);
|
FcAtomicDestroy (atomic);
|
||||||
|
|
||||||
atomic = FcAtomicCreate (cache_file);
|
atomic = FcAtomicCreate ((FcChar8 *)cache_file);
|
||||||
fd_orig = open (cache_file, O_RDONLY);
|
fd_orig = open (cache_file, O_RDONLY);
|
||||||
if (fd_orig == -1)
|
if (fd_orig == -1)
|
||||||
fd_orig = open((char *)FcAtomicOrigFile (atomic), O_RDONLY);
|
fd_orig = open((char *)FcAtomicOrigFile (atomic), O_RDONLY);
|
||||||
|
@ -1133,6 +1172,7 @@ FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
|
||||||
close(fd);
|
close(fd);
|
||||||
if (!FcAtomicReplaceOrig(atomic))
|
if (!FcAtomicReplaceOrig(atomic))
|
||||||
goto bail5;
|
goto bail5;
|
||||||
|
FcStrFree ((FcChar8 *)cache_hashed);
|
||||||
FcAtomicUnlock (atomic);
|
FcAtomicUnlock (atomic);
|
||||||
FcAtomicDestroy (atomic);
|
FcAtomicDestroy (atomic);
|
||||||
return FcTrue;
|
return FcTrue;
|
||||||
|
@ -1146,7 +1186,7 @@ FcDirCacheWrite (FcFontSet *set, FcStrSet *dirs, const FcChar8 *dir)
|
||||||
bail2:
|
bail2:
|
||||||
FcAtomicDestroy (atomic);
|
FcAtomicDestroy (atomic);
|
||||||
bail1:
|
bail1:
|
||||||
free (cache_to_open);
|
FcStrFree ((FcChar8 *)cache_hashed);
|
||||||
bail0:
|
bail0:
|
||||||
unlink ((char *)cache_file);
|
unlink ((char *)cache_file);
|
||||||
free (cache_file);
|
free (cache_file);
|
||||||
|
|
13
src/fcxml.c
13
src/fcxml.c
|
@ -22,6 +22,7 @@
|
||||||
* PERFORMANCE OF THIS SOFTWARE.
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <fcntl.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include "fcint.h"
|
#include "fcint.h"
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
|
@ -2355,7 +2356,7 @@ FcConfigParseAndLoad (FcConfig *config,
|
||||||
|
|
||||||
XML_Parser p;
|
XML_Parser p;
|
||||||
FcChar8 *filename;
|
FcChar8 *filename;
|
||||||
FILE *f;
|
int fd;
|
||||||
int len;
|
int len;
|
||||||
FcConfigParse parse;
|
FcConfigParse parse;
|
||||||
FcBool error = FcTrue;
|
FcBool error = FcTrue;
|
||||||
|
@ -2393,8 +2394,8 @@ FcConfigParseAndLoad (FcConfig *config,
|
||||||
if (FcDebug () & FC_DBG_CONFIG)
|
if (FcDebug () & FC_DBG_CONFIG)
|
||||||
printf ("\tLoading config file %s\n", filename);
|
printf ("\tLoading config file %s\n", filename);
|
||||||
|
|
||||||
f = fopen ((char *) filename, "r");
|
fd = open ((char *) filename, O_RDONLY);
|
||||||
if (!f) {
|
if (fd == -1) {
|
||||||
FcStrFree (filename);
|
FcStrFree (filename);
|
||||||
goto bail0;
|
goto bail0;
|
||||||
}
|
}
|
||||||
|
@ -2439,7 +2440,7 @@ FcConfigParseAndLoad (FcConfig *config,
|
||||||
goto bail3;
|
goto bail3;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
len = fread (buf, 1, BUFSIZ, f);
|
len = read (fd, buf, BUFSIZ);
|
||||||
if (len < 0)
|
if (len < 0)
|
||||||
{
|
{
|
||||||
FcConfigMessage (&parse, FcSevereError, "failed reading config file");
|
FcConfigMessage (&parse, FcSevereError, "failed reading config file");
|
||||||
|
@ -2463,8 +2464,8 @@ bail3:
|
||||||
bail2:
|
bail2:
|
||||||
XML_ParserFree (p);
|
XML_ParserFree (p);
|
||||||
bail1:
|
bail1:
|
||||||
fclose (f);
|
close (fd);
|
||||||
f = NULL;
|
fd = -1;
|
||||||
bail0:
|
bail0:
|
||||||
if (error && complain)
|
if (error && complain)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue