diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2011-06-20 11:55:25 -0400 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2011-06-20 11:55:25 -0400 |
commit | e61eba94efffbdbec6f9e08f3fb04b75f0ba2a3f (patch) | |
tree | ef246cf44ee9d370152f92fe6bebbfd3f92cd567 | |
parent | a15ac5d3840552528874f1d5ad166eb00906ce80 (diff) |
Switch fc-cat to use FcPatternFormat()
Added the a builtin "fccat" to FcPatternFormat().
-rw-r--r-- | doc/fcformat.fncs | 7 | ||||
-rw-r--r-- | fc-cat/fc-cat.c | 39 | ||||
-rw-r--r-- | src/fcformat.c | 3 |
3 files changed, 21 insertions, 28 deletions
diff --git a/doc/fcformat.fncs b/doc/fcformat.fncs index 125e6b43..c136e8cf 100644 --- a/doc/fcformat.fncs +++ b/doc/fcformat.fncs @@ -202,6 +202,13 @@ command on the pattern, without the final newline. </para></listitem></varlistentry> <varlistentry><term> +fccat +</term><listitem><para> +Expands to the output of the default output format of the fc-cat +command on the pattern, without the final newline. +</para></listitem></varlistentry> + +<varlistentry><term> pkgkit </term><listitem><para> Expands to the list of PackageKit font() tags for the pattern. diff --git a/fc-cat/fc-cat.c b/fc-cat/fc-cat.c index c6c39934..5ee947ec 100644 --- a/fc-cat/fc-cat.c +++ b/fc-cat/fc-cat.c @@ -194,11 +194,9 @@ file_base_name (const FcChar8 *cache, const FcChar8 *file) static FcBool cache_print_set (FcFontSet *set, FcStrSet *dirs, const FcChar8 *base_name, FcBool verbose) { - FcChar8 *name, *dir; - const FcChar8 *file, *base; - int ret; + FcChar8 *dir; + const FcChar8 *base; int n; - int id; int ndir = 0; FcStrList *list; @@ -227,37 +225,22 @@ cache_print_set (FcFontSet *set, FcStrSet *dirs, const FcChar8 *base_name, FcBoo for (n = 0; n < set->nfont; n++) { FcPattern *font = set->fonts[n]; + FcChar8 *s; - if (FcPatternGetString (font, FC_FILE, 0, (FcChar8 **) &file) != FcResultMatch) - goto bail3; - base = file_base_name (base_name, file); - if (FcPatternGetInteger (font, FC_INDEX, 0, &id) != FcResultMatch) - goto bail3; - if (!write_string (stdout, base)) - goto bail3; - if (PUTC (' ', stdout) == EOF) - goto bail3; - if (!write_int (stdout, id)) - goto bail3; - if (PUTC (' ', stdout) == EOF) - goto bail3; - name = FcNameUnparse (font); - if (!name) - goto bail3; - ret = write_string (stdout, name); - FcStrFree (name); - if (!ret) - goto bail3; - if (PUTC ('\n', stdout) == EOF) - goto bail3; + s = FcPatternFormat (font, "%{=fccat}\n"); + if (s) + { + printf ("%s", s); + free (s); + } } if (verbose && !set->nfont && !ndir) printf ("<empty>\n"); - + FcStrListDone (list); return FcTrue; - + bail3: FcStrListDone (list); bail2: diff --git a/src/fcformat.c b/src/fcformat.c index 4a850ee0..d8518f45 100644 --- a/src/fcformat.c +++ b/src/fcformat.c @@ -62,6 +62,7 @@ * unparse FcNameUnparse * fcmatch fc-match default * fclist fc-list default + * fccat fc-cat default * pkgkit PackageKit package tag format * * @@ -74,6 +75,7 @@ */ +#define FCCAT_FORMAT "\"%{file|basename|cescape}\" %{index} \"%{-file{%{=unparse|cescape}}}\"" #define FCMATCH_FORMAT "%{file:-<unknown filename>|basename}: \"%{family[0]:-<unknown family>}\" \"%{style[0]:-<unknown style>}\"" #define FCLIST_FORMAT "%{?file{%{file}: }}%{-file{%{=unparse}}}" #define PKGKIT_FORMAT "%{[]family{font(%{family|downcase|delete( )})\n}}%{[]lang{font(:lang=%{lang|downcase|translate(_,-)})\n}}" @@ -304,6 +306,7 @@ interpret_builtin (FcFormatContext *c, #define BUILTIN(name, format) \ else if (0 == strcmp ((const char *) c->word, name))\ ret = FcPatternFormatToBuf (pat, (const FcChar8 *) format, buf) + BUILTIN ("fccat", FCCAT_FORMAT); BUILTIN ("fcmatch", FCMATCH_FORMAT); BUILTIN ("fclist", FCLIST_FORMAT); BUILTIN ("pkgkit", PKGKIT_FORMAT); |