Fix fc-cat again. Sigh.
Internal interfaces in cache management changed again...
This commit is contained in:
parent
2d3387fd72
commit
76abb77f26
|
@ -273,6 +273,28 @@ bail2:
|
|||
return FcFalse;
|
||||
}
|
||||
|
||||
FcCache *
|
||||
FcCacheFileMap (const FcChar8 *file)
|
||||
{
|
||||
FcCache *cache;
|
||||
int fd;
|
||||
struct stat file_stat;
|
||||
|
||||
fd = open (file, O_RDONLY | O_BINARY);
|
||||
if (fd < 0)
|
||||
return NULL;
|
||||
if (fstat (fd, &file_stat) < 0) {
|
||||
close (fd);
|
||||
return NULL;
|
||||
}
|
||||
if (FcCacheLoad (fd, file_stat.st_size, &cache)) {
|
||||
close (fd);
|
||||
return cache;
|
||||
}
|
||||
close (fd);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
|
@ -322,30 +344,21 @@ main (int argc, char **argv)
|
|||
|
||||
for (; i < argc; i++)
|
||||
{
|
||||
int fd;
|
||||
int j;
|
||||
off_t size;
|
||||
intptr_t *cache_dirs;
|
||||
|
||||
if (FcFileIsDir ((const FcChar8 *)argv[i]))
|
||||
fd = FcDirCacheOpen (config, (const FcChar8 *) argv[i], &size);
|
||||
cache = FcDirCacheMap ((const FcChar8 *) argv[i], config);
|
||||
else
|
||||
fd = FcCacheFileOpen (argv[i], &size);
|
||||
if (fd < 0)
|
||||
cache = FcCacheFileMap (argv[i]);
|
||||
if (!cache)
|
||||
{
|
||||
perror (argv[i]);
|
||||
ret++;
|
||||
continue;
|
||||
}
|
||||
|
||||
cache = FcDirCacheMap (fd, size);
|
||||
close (fd);
|
||||
if (!cache)
|
||||
{
|
||||
fprintf (stderr, "%s: cannot map cache\n", argv[i]);
|
||||
ret++;
|
||||
continue;
|
||||
}
|
||||
dirs = FcStrSetCreate ();
|
||||
fs = FcCacheSet (cache);
|
||||
cache_dirs = FcCacheDirs (cache);
|
||||
|
|
|
@ -242,7 +242,7 @@ FcDirCacheProcess (FcConfig *config, const FcChar8 *dir,
|
|||
}
|
||||
|
||||
static FcBool
|
||||
FcDirCacheLoad (int fd, off_t size, void *closure)
|
||||
FcCacheLoad (int fd, off_t size, void *closure)
|
||||
{
|
||||
FcCache *cache;
|
||||
FcBool allocated = FcFalse;
|
||||
|
@ -303,13 +303,15 @@ FcDirCacheLoad (int fd, off_t size, void *closure)
|
|||
}
|
||||
|
||||
FcCache *
|
||||
FcDirCacheMap (int fd, off_t size)
|
||||
FcDirCacheMap (const FcChar8 *dir, FcConfig *config)
|
||||
{
|
||||
FcCache *cache;
|
||||
FcCache *cache = NULL;
|
||||
|
||||
if (FcDirCacheLoad (fd, size, &cache))
|
||||
return cache;
|
||||
if (!FcDirCacheProcess (config, dir,
|
||||
FcCacheLoad,
|
||||
&cache))
|
||||
return NULL;
|
||||
return cache;
|
||||
}
|
||||
|
||||
FcBool
|
||||
|
@ -322,9 +324,8 @@ FcDirCacheRead (FcFontSet * set, FcStrSet * dirs,
|
|||
intptr_t *cache_dirs;
|
||||
FcPattern **cache_fonts;
|
||||
|
||||
if (!FcDirCacheProcess (config, dir,
|
||||
FcDirCacheLoad,
|
||||
&cache))
|
||||
cache = FcDirCacheMap (dir, config);
|
||||
if (!cache)
|
||||
return FcFalse;
|
||||
|
||||
cache_set = FcCacheSet (cache);
|
||||
|
|
|
@ -500,15 +500,18 @@ FcBool
|
|||
FcDirCacheConsume (FILE *file, FcFontSet *set, FcStrSet *dirs,
|
||||
const FcChar8 *dir, char *dirname);
|
||||
|
||||
FcCache *
|
||||
FcDirCacheMap (int fd, off_t size);
|
||||
|
||||
void
|
||||
FcDirCacheUnmap (FcCache *cache);
|
||||
|
||||
FcBool
|
||||
FcDirCacheRead (FcFontSet * set, FcStrSet * dirs, const FcChar8 *dir, FcConfig *config);
|
||||
|
||||
FcCache *
|
||||
FcDirCacheMap (const FcChar8 *dir, FcConfig *config);
|
||||
|
||||
FcBool
|
||||
FcDirCacheLoad (int fd, off_t size, void *closure);
|
||||
|
||||
/* fccfg.c */
|
||||
|
||||
FcBool
|
||||
|
|
Loading…
Reference in New Issue