summaryrefslogtreecommitdiff
path: root/fc-cat/fc-cat.c
diff options
context:
space:
mode:
authorPatrick Lam <plam@MIT.EDU>2006-02-17 05:47:08 +0000
committerPatrick Lam <plam@MIT.EDU>2006-02-17 05:47:08 +0000
commit12f46c42fa583d8e23b8f97eebac77d7b0576ed2 (patch)
treef2d42a9cdd36bd61d89b657d48612758e0fbc1d2 /fc-cat/fc-cat.c
parent8c0d692125018052fa228721f30f760dfb0c0adf (diff)
Enable fc-cat to print out old-style cache info when given a directory
name.
Diffstat (limited to 'fc-cat/fc-cat.c')
-rw-r--r--fc-cat/fc-cat.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/fc-cat/fc-cat.c b/fc-cat/fc-cat.c
index d6247114..f466e3ec 100644
--- a/fc-cat/fc-cat.c
+++ b/fc-cat/fc-cat.c
@@ -377,6 +377,16 @@ bail2:
return FcFalse;
}
+FcBool
+FcFileIsDir (const FcChar8 *file)
+{
+ struct stat statb;
+
+ if (stat ((const char *) file, &statb) != 0)
+ return FcFalse;
+ return S_ISDIR(statb.st_mode);
+}
+
int
main (int argc, char **argv)
{
@@ -410,7 +420,21 @@ main (int argc, char **argv)
if (i >= argc)
usage (argv[0]);
- if ((name_buf = FcCacheFileRead (fs, dirs, argv[i])) != 0)
+ if (FcFileIsDir ((const FcChar8 *)argv[i]))
+ {
+ char * dummy_name = (char *)FcStrPlus ((FcChar8 *)argv[i],
+ (FcChar8 *)"/dummy");
+ if (!FcDirScanConfig (fs, dirs, 0, 0,
+ (const FcChar8 *)argv[i], FcFalse, 0))
+ fprintf (stderr, "couldn't load font dir %s\n", argv[i]);
+ else
+ {
+ /* sorry, we can't tell you where the cache file is. */
+ FcCachePrintSet (fs, dirs, dummy_name);
+ FcStrFree ((FcChar8 *)dummy_name);
+ }
+ }
+ else if ((name_buf = FcCacheFileRead (fs, dirs, argv[i])) != 0)
FcCachePrintSet (fs, dirs, name_buf);
else
{