summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2011-06-20 11:55:25 -0400
committerBehdad Esfahbod <behdad@behdad.org>2011-06-20 11:55:25 -0400
commite61eba94efffbdbec6f9e08f3fb04b75f0ba2a3f (patch)
treeef246cf44ee9d370152f92fe6bebbfd3f92cd567
parenta15ac5d3840552528874f1d5ad166eb00906ce80 (diff)
Switch fc-cat to use FcPatternFormat()
Added the a builtin "fccat" to FcPatternFormat().
-rw-r--r--doc/fcformat.fncs7
-rw-r--r--fc-cat/fc-cat.c39
-rw-r--r--src/fcformat.c3
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);