[Fontconfig] fontconfig: Branch 'master'

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Oct 2 10:45:31 UTC 2018


 src/fcxml.c |   41 +++++++++++++++++++++++++++++++++--------
 1 file changed, 33 insertions(+), 8 deletions(-)

New commits:
commit 1aa8b700c3f09a31c78e7834e0db373f80b5e226
Author: Akira TAGOH <akira at tagoh.org>
Date:   Tue Oct 2 09:32:03 2018 +0000

    Add more prefix support in <dir> element
    
    Added two prefix modes:
      "relative" that makes the relative path be relative to current file
      "cwd" for relative to current working directory which implies current behavior.
    
    Resolves: https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/15

diff --git a/src/fcxml.c b/src/fcxml.c
index 7797502..9d75249 100644
--- a/src/fcxml.c
+++ b/src/fcxml.c
@@ -2073,16 +2073,36 @@ FcParseDir (FcConfigParse *parse)
 #endif
 
     attr = FcConfigGetAttribute (parse, "prefix");
-    if (attr && FcStrCmp (attr, (const FcChar8 *)"xdg") == 0)
+    data = FcStrBufDoneStatic (&parse->pstack->str);
+    if (attr)
     {
-	prefix = FcConfigXdgDataHome ();
-	/* home directory might be disabled.
-	 * simply ignore this element.
-	 */
-	if (!prefix)
-	    goto bail;
+	if (FcStrCmp (attr, (const FcChar8 *)"xdg") == 0)
+	{
+	    prefix = FcConfigXdgDataHome ();
+	    /* home directory might be disabled.
+	     * simply ignore this element.
+	     */
+	    if (!prefix)
+		goto bail;
+	}
+	else if (FcStrCmp (attr, (const FcChar8 *)"cwd") == 0)
+	{
+	}
+	else if (FcStrCmp (attr, (const FcChar8 *)"relative") == 0)
+	{
+	    prefix = FcStrDirname (parse->name);
+	    if (!prefix)
+		goto bail;
+	}
     }
-    data = FcStrBufDoneStatic (&parse->pstack->str);
+#ifndef _WIN32
+    /* For Win32, check this later for dealing with special cases */
+    else
+    {
+	if (!FcStrIsAbsoluteFilename (data) && data[0] != '~')
+	    FcConfigMessage (parse, FcSevereWarning, "Use of ambiguous <dir> element. please add prefix=\"cwd\" if current behavior is desired.");
+    }
+#endif
     if (!data)
     {
 	FcConfigMessage (parse, FcSevereError, "out of memory");
@@ -2153,6 +2173,11 @@ FcParseDir (FcConfigParse *parse)
 	    strcat ((char *) data, "\\");
 	strcat ((char *) data, "fonts");
     }
+    else if (!attr)
+    {
+	if (!FcStrIsAbsoluteFilename (data) && data[0] != '~')
+	    FcConfigMessage (parse, FcSevereWarning, "Use of ambiguous <dir> element. please add prefix=\"cwd\" if current behavior is desired.");
+    }
 #endif
     if (strlen ((char *) data) == 0)
 	FcConfigMessage (parse, FcSevereWarning, "empty font directory name ignored");


More information about the Fontconfig mailing list