Add codepath for reading global cache files as well.
This commit is contained in:
parent
2c6fead73f
commit
6059daeddb
|
@ -1,3 +1,8 @@
|
||||||
|
2005-12-01 Patrick Lam <plam@mit.edu>
|
||||||
|
* fc-cat/fc-cat.c (FcCacheGlobalFileReadAndPrint, main):
|
||||||
|
|
||||||
|
Add codepath for reading global cache files as well.
|
||||||
|
|
||||||
2005-12-01 Behdad Esfahbod <behdad@cs.toronto.edu>
|
2005-12-01 Behdad Esfahbod <behdad@cs.toronto.edu>
|
||||||
reviewed by: plam
|
reviewed by: plam
|
||||||
|
|
||||||
|
|
|
@ -164,6 +164,59 @@ usage (char *program)
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static FcBool
|
||||||
|
FcCacheGlobalFileReadAndPrint (FcFontSet * set, FcStrSet *dirs, char * dir, char *cache_file)
|
||||||
|
{
|
||||||
|
char name_buf[8192];
|
||||||
|
int fd;
|
||||||
|
FcGlobalCacheDir *d, *next;
|
||||||
|
char * current_arch_machine_name;
|
||||||
|
char candidate_arch_machine_name[9+MACHINE_SIGNATURE_SIZE];
|
||||||
|
off_t current_arch_start = 0;
|
||||||
|
char subdirName[FC_MAX_FILE_LEN + 1 + 12 + 1];
|
||||||
|
|
||||||
|
if (!cache_file)
|
||||||
|
goto bail;
|
||||||
|
|
||||||
|
current_arch_machine_name = FcCacheMachineSignature();
|
||||||
|
fd = open(cache_file, O_RDONLY);
|
||||||
|
if (fd == -1)
|
||||||
|
goto bail;
|
||||||
|
|
||||||
|
current_arch_start = FcCacheSkipToArch(fd, current_arch_machine_name);
|
||||||
|
if (current_arch_start < 0)
|
||||||
|
goto bail1;
|
||||||
|
|
||||||
|
lseek (fd, current_arch_start, SEEK_SET);
|
||||||
|
if (FcCacheReadString (fd, candidate_arch_machine_name,
|
||||||
|
sizeof (candidate_arch_machine_name)) == 0)
|
||||||
|
goto bail1;
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
off_t targ;
|
||||||
|
|
||||||
|
FcCacheReadString (fd, name_buf, sizeof (name_buf));
|
||||||
|
if (!strlen(name_buf))
|
||||||
|
break;
|
||||||
|
printf ("fc-cat: printing global cache contents for dir %s\n",
|
||||||
|
name_buf);
|
||||||
|
|
||||||
|
if (!FcDirCacheConsume (fd, dir, set))
|
||||||
|
goto bail1;
|
||||||
|
|
||||||
|
FcCachePrintSet (set, dirs, name_buf);
|
||||||
|
|
||||||
|
FcFontSetDestroy (set);
|
||||||
|
set = FcFontSetCreate();
|
||||||
|
}
|
||||||
|
|
||||||
|
bail1:
|
||||||
|
close (fd);
|
||||||
|
bail:
|
||||||
|
return FcFalse;
|
||||||
|
}
|
||||||
|
|
||||||
/* read serialized state from the cache file */
|
/* read serialized state from the cache file */
|
||||||
static FcBool
|
static FcBool
|
||||||
FcCacheFileRead (FcFontSet * set, FcStrSet *dirs, char * dir, char *cache_file)
|
FcCacheFileRead (FcFontSet * set, FcStrSet *dirs, char * dir, char *cache_file)
|
||||||
|
@ -329,6 +382,14 @@ main (int argc, char **argv)
|
||||||
|
|
||||||
if (FcCacheFileRead (fs, dirs, dirname (strdup(argv[i])), argv[i]))
|
if (FcCacheFileRead (fs, dirs, dirname (strdup(argv[i])), argv[i]))
|
||||||
FcCachePrintSet (fs, dirs, argv[i]);
|
FcCachePrintSet (fs, dirs, argv[i]);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FcStrSetDestroy (dirs);
|
||||||
|
dirs = FcStrSetCreate ();
|
||||||
|
if (FcCacheGlobalFileReadAndPrint (fs, dirs, dirname (strdup (argv[i])),
|
||||||
|
argv[i]))
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
FcStrSetDestroy (dirs);
|
FcStrSetDestroy (dirs);
|
||||||
FcFontSetDestroy (fs);
|
FcFontSetDestroy (fs);
|
||||||
|
|
Loading…
Reference in New Issue