diff options
author | Patrick Lam <plam@MIT.EDU> | 2006-02-17 05:47:08 +0000 |
---|---|---|
committer | Patrick Lam <plam@MIT.EDU> | 2006-02-17 05:47:08 +0000 |
commit | 12f46c42fa583d8e23b8f97eebac77d7b0576ed2 (patch) | |
tree | f2d42a9cdd36bd61d89b657d48612758e0fbc1d2 | |
parent | 8c0d692125018052fa228721f30f760dfb0c0adf (diff) |
Enable fc-cat to print out old-style cache info when given a directory
name.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | fc-cat/fc-cat.c | 26 |
2 files changed, 31 insertions, 1 deletions
@@ -1,3 +1,9 @@ +2006-02-17 Patrick Lam <plam@mit.edu> + * fc-cat/fc-cat.c (main): + + Enable fc-cat to print out old-style cache info when given a + directory name. + 2006-02-16 Patrick Lam <plam@mit.edu> * src/fccache.c (FcDirCacheHasCurrentArch): diff --git a/fc-cat/fc-cat.c b/fc-cat/fc-cat.c index d624711..f466e3e 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 { |