X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;ds=sidebyside;f=fc-cat%2Ffc-cat.c;h=a2c238c358bf56b3a3f496a934303d17168d0ebf;hb=369b6b5bfbab57bbc7fb6482f6fd9c88e5057e5a;hp=bb804ab0271c1af7d8dfc2f59d976c138ddd9622;hpb=822ec78c54a24a0f1589154ac2d4906b02b111ef;p=fontconfig.git diff --git a/fc-cat/fc-cat.c b/fc-cat/fc-cat.c index bb804ab..a2c238c 100644 --- a/fc-cat/fc-cat.c +++ b/fc-cat/fc-cat.c @@ -31,10 +31,11 @@ #define HAVE_GETOPT 1 #endif -#include "../src/fccache.c" +#include #include "../fc-arch/fcarch.h" #include #include +#include #include #include #include @@ -148,10 +149,11 @@ static void usage (char *program) { #if HAVE_GETOPT_LONG - fprintf (stderr, "usage: %s [-V?] [--version] [--help] {*-%s.cache-2|directory}...\n", + fprintf (stderr, "usage: %s [-rv] [--recurse] [--verbose] [*-%s.cache-2|directory]...\n", program, FC_ARCHITECTURE); + fprintf (stderr, " %s [-V?] [--version] [--help]\n", program); #else - fprintf (stderr, "usage: %s [-fsvV?] {*-%s.cache-2|directory}...\n", + fprintf (stderr, "usage: %s [-rvV?] [*-%s.cache-2|directory]...\n", program, FC_ARCHITECTURE); #endif fprintf (stderr, "Reads font information cache from:\n"); @@ -159,9 +161,13 @@ usage (char *program) fprintf (stderr, " 2) related to a particular font directory\n"); fprintf (stderr, "\n"); #if HAVE_GETOPT_LONG + fprintf (stderr, " -r, --recurse recurse into subdirectories\n"); + fprintf (stderr, " -v, --verbose be verbose\n"); fprintf (stderr, " -V, --version display font config version and exit\n"); fprintf (stderr, " -?, --help display this help and exit\n"); #else + fprintf (stderr, " -r (recurse) recurse into subdirectories\n"); + fprintf (stderr, " -v (verbose) be verbose\n"); fprintf (stderr, " -V (version) display font config version and exit\n"); fprintf (stderr, " -? (help) display this help and exit\n"); #endif @@ -173,20 +179,20 @@ usage (char *program) */ static const FcChar8 * -file_base_name (const char *cache, const FcChar8 *file) +file_base_name (const FcChar8 *cache, const FcChar8 *file) { - const FcChar8 *cache_slash; - int cache_len = strlen (cache); + int cache_len = strlen ((char *) cache); - if (!strncmp (cache, file, cache_len) && file[cache_len] == '/') + if (!strncmp ((char *) cache, (char *) file, cache_len) && file[cache_len] == '/') return file + cache_len + 1; return file; } +#define FC_FONT_FILE_DIR ((FcChar8 *) ".dir") + static FcBool -cache_print_set (FcFontSet *set, FcStrSet *dirs, char *base_name, FcBool verbose) +cache_print_set (FcFontSet *set, FcStrSet *dirs, const FcChar8 *base_name, FcBool verbose) { - FcPattern *font; FcChar8 *name, *dir; const FcChar8 *file, *base; int ret; @@ -219,9 +225,7 @@ cache_print_set (FcFontSet *set, FcStrSet *dirs, char *base_name, FcBool verbose for (n = 0; n < set->nfont; n++) { - FcPattern **fonts = FcFontSetFonts (set); - FcPattern *encoded_font = fonts[n]; - FcPattern *font = FcEncodedOffsetToPtr (set, encoded_font, FcPattern); + FcPattern *font = set->fonts[n]; if (FcPatternGetString (font, FC_FILE, 0, (FcChar8 **) &file) != FcResultMatch) goto bail3; @@ -321,7 +325,7 @@ main (int argc, char **argv) { for (; i < argc; i++) { - if (!FcStrSetAddFilename (args, argv[i])) + if (!FcStrSetAddFilename (args, (const FcChar8 *) argv[i])) { fprintf (stderr, "%s: malloc failure\n", argv[0]); return 1; @@ -356,8 +360,6 @@ main (int argc, char **argv) while ((arg = FcStrListNext (arglist))) { int j; - off_t size; - intptr_t *cache_dirs; FcChar8 *cache_file = NULL; struct stat file_stat; @@ -373,17 +375,12 @@ main (int argc, char **argv) } dirs = FcStrSetCreate (); - fs = FcCacheSet (cache); - cache_dirs = FcCacheDirs (cache); - for (j = 0; j < cache->dirs_count; j++) + fs = FcCacheCopySet (cache); + for (j = 0; j < FcCacheNumSubdir (cache); j++) { - FcStrSetAdd (dirs, FcOffsetToPtr (cache_dirs, - cache_dirs[j], - FcChar8)); + FcStrSetAdd (dirs, FcCacheSubdir (cache, j)); if (recurse) - FcStrSetAdd (args, FcOffsetToPtr (cache_dirs, - cache_dirs[j], - FcChar8)); + FcStrSetAdd (args, FcCacheSubdir (cache, j)); } if (verbose) @@ -398,6 +395,7 @@ main (int argc, char **argv) FcStrSetDestroy (dirs); + FcFontSetDestroy (fs); FcDirCacheUnload (cache); if (cache_file) FcStrFree (cache_file);