]> git.wh0rd.org - fontconfig.git/blobdiff - src/fcformat.c
Bug 44826 - <alias> must contain only a single <family>
[fontconfig.git] / src / fcformat.c
index bf9401740d4b946efa1d4f1293763875a9b60d2d..d8518f458252fba1abc6ee4b54111807c750a7c7 100644 (file)
@@ -7,9 +7,9 @@
  * documentation for any purpose is hereby granted without fee, provided that
  * the above copyright notice appear in all copies and that both that
  * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
+ * documentation, and that the name of the author(s) not be used in
  * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission.  Keith Packard makes no
+ * specific, written prior permission.  The authors make no
  * representations about the suitability of this software for any purpose.  It
  * is provided "as is" without express or implied warranty.
  *
@@ -62,6 +62,7 @@
  * unparse     FcNameUnparse
  * fcmatch     fc-match default
  * fclist      fc-list default
+ * fccat       fc-cat default
  * pkgkit      PackageKit package tag format
  *
  *
  *
  * - verbose builtin that is like FcPatternPrint
  * - allow indexing subexprs using '%{[idx]elt1,elt2{subexpr}}'
+ * - allow indexing in +, -, ? filtering?
  * - conditional/filtering/deletion on binding (using '(w)'/'(s)'/'(=)' notation)
  */
 
 
+#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}: }}%{=unparse}"
+#define FCLIST_FORMAT  "%{?file{%{file}: }}%{-file{%{=unparse}}}"
 #define PKGKIT_FORMAT  "%{[]family{font(%{family|downcase|delete( )})\n}}%{[]lang{font(:lang=%{lang|downcase|translate(_,-)})\n}}"
 
 
@@ -303,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);
@@ -436,6 +440,7 @@ interpret_filter_in (FcFormatContext *c,
 
     do
     {
+       /* XXX binding */
        if (!read_word (c) ||
            !FcObjectSetAdd (os, (const char *) c->word))
        {
@@ -608,7 +613,7 @@ interpret_enumerate (FcFormatContext *c,
     {
        FcLangSet *langset;
        if (FcResultMatch ==
-           FcPatternGetLangSet (pat, os->objects[0], idx, &langset))
+           FcPatternGetLangSet (pat, os->objects[0], 0, &langset))
        {
            FcStrSet *ss;
            if (!(ss = FcLangSetGetLangs (langset)) ||
@@ -636,6 +641,7 @@ interpret_enumerate (FcFormatContext *c,
            FcPatternDel (subpat, os->objects[0]);
            if ((lang = FcStrListNext (lang_strs)))
            {
+               /* XXX binding? */
                FcPatternAddString (subpat, os->objects[0], lang);
                done = FcFalse;
            }
@@ -654,6 +660,7 @@ interpret_enumerate (FcFormatContext *c,
                if (FcResultMatch ==
                    FcPatternGet (pat, os->objects[i], idx, &v))
                {
+                   /* XXX binding */
                    FcPatternAdd (subpat, os->objects[i], v, FcFalse);
                    done = FcFalse;
                }
@@ -728,7 +735,7 @@ interpret_simple (FcFormatContext *c,
        c->word = c->word + strlen ((const char *) c->word) + 1;
        /* for now we just support 'default value' */
        if (!expect_char (c, '-') ||
-           !read_chars (c, '\0'))
+           !read_chars (c, '|'))
        {
            c->word = orig;
            return FcFalse;
@@ -788,6 +795,8 @@ cescape (FcFormatContext *c,
         const FcChar8   *str,
         FcStrBuf        *buf)
 {
+    /* XXX escape \n etc? */
+
     while(*str)
     {
        switch (*str)
@@ -825,6 +834,8 @@ xmlescape (FcFormatContext *c,
           const FcChar8   *str,
           FcStrBuf        *buf)
 {
+    /* XXX escape \n etc? */
+
     while(*str)
     {
        switch (*str)