Switch fc-cat to use FcPatternFormat()

Added the a builtin "fccat" to FcPatternFormat().
This commit is contained in:
Behdad Esfahbod 2011-06-20 11:55:25 -04:00
parent a15ac5d384
commit e61eba94ef
3 changed files with 21 additions and 28 deletions

View File

@ -201,6 +201,13 @@ Expands to the output of the default output format of the fc-list
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>

View File

@ -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:

View File

@ -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);