diff options
author | Rémi Cardona <remi@gentoo.org> | 2009-09-14 17:09:59 +0200 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2009-09-16 11:44:08 +1000 |
commit | f56cbe1ef24415d0142b9a7d0ab0a031069ccb52 (patch) | |
tree | 609015dba4060e22e5df1547fb16ee299d14ffe3 | |
parent | 139368f7ae192b592e24d013e8ca5ce4175effe1 (diff) |
dix: append "built-ins" to the font path in SetDefaultFontPath
49b93df8a3002db7196aa3fc1fd8dca1c12a55d6 made the hard dependency on
a "fixed" font go away but only Xorg could use the built-ins fonts by
default.
With this commit, all DDXs get "built-ins" appended to their FontPath, not
just Xorg.
Tested with Xorg, Xvfb and Xnest.
Signed-off-by: Rémi Cardona <remi@gentoo.org>
Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Tested-by: Jon TURNEY <jon.turney@dronecode.org.uk>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | dix/dixfonts.c | 27 | ||||
-rw-r--r-- | hw/xfree86/common/xf86Config.c | 16 |
2 files changed, 25 insertions, 18 deletions
diff --git a/dix/dixfonts.c b/dix/dixfonts.c index 7d7ae71de..d0a46c744 100644 --- a/dix/dixfonts.c +++ b/dix/dixfonts.c @@ -1807,28 +1807,50 @@ SetFontPath(ClientPtr client, int npaths, unsigned char *paths, int *error) return err; } int SetDefaultFontPath(char *path) { + char *temp_path, + *start, + *end; unsigned char *cp, *pp, *nump, *newpath; int num = 1, len, err, size = 0, bad; + /* ensure temp_path contains "built-ins" */ + start = path; + while (1) { + start = strstr(start, "built-ins"); + if (start == NULL) + break; + end = start + strlen("built-ins"); + if ((start == path || start[-1] == ',') && (!*end || *end == ',')) + break; + start = end; + } + if (!start) { + temp_path = Xprintf("%s%sbuilt-ins", path, *path ? "," : ""); + } else { + temp_path = Xstrdup(path); + } + if (!temp_path) + return BadAlloc; + /* get enough for string, plus values -- use up commas */ - len = strlen(path) + 1; + len = strlen(temp_path) + 1; nump = cp = newpath = xalloc(len); if (!newpath) return BadAlloc; - pp = (unsigned char *) path; + pp = (unsigned char *) temp_path; cp++; while (*pp) { if (*pp == ',') { *nump = (unsigned char) size; nump = cp++; pp++; @@ -1841,12 +1863,13 @@ SetDefaultFontPath(char *path) } *nump = (unsigned char) size; err = SetFontPathElements(num, newpath, &bad, TRUE); xfree(newpath); + xfree(temp_path); return err; } int GetFontPath(ClientPtr client, int *count, int *length, unsigned char **result) diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c index e81eb0f63..82c39939e 100644 --- a/hw/xfree86/common/xf86Config.c +++ b/hw/xfree86/common/xf86Config.c @@ -611,28 +611,12 @@ configFiles(XF86ConfFilesPtr fileconf) defaultFontPath = fileconf->file_fontpath; } else pathFrom = X_DEFAULT; temp_path = defaultFontPath ? defaultFontPath : ""; - /* ensure defaultFontPath contains "built-ins" */ - start = strstr(temp_path, "built-ins"); - end = start + strlen("built-ins"); - if (start == NULL || - !((start == temp_path || start[-1] == ',') && (!*end || *end == ','))) { - defaultFontPath = Xprintf("%s%sbuilt-ins", - temp_path, *temp_path ? "," : ""); - if (must_copy == TRUE) { - if (defaultFontPath != NULL) { - must_copy = FALSE; - } - } else { - /* already made a copy of the font path */ - xfree(temp_path); - } - } /* xf86ValidateFontPath modifies its argument, but returns a copy of it. */ temp_path = must_copy ? xnfstrdup(defaultFontPath) : defaultFontPath; defaultFontPath = xf86ValidateFontPath(temp_path); xfree(temp_path); /* make fontpath more readable in the logfiles */ |