diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2017-02-27 13:11:33 +0100 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2017-02-27 13:11:33 +0100 |
commit | 5e68c1283c297fb428a9347517ea02576bd55546 (patch) | |
tree | f7395115b90efd6c0239d6d72c5bca49168f6380 /nx-X11/programs/Xserver/dix | |
parent | 0a5d26d121a8420feb25bd68c8f1623edf50e0a8 (diff) | |
parent | 3e8d98f3337a21cd9147c1ac4f27258c95bf41b0 (diff) | |
download | nx-libs-5e68c1283c297fb428a9347517ea02576bd55546.tar.gz nx-libs-5e68c1283c297fb428a9347517ea02576bd55546.tar.bz2 nx-libs-5e68c1283c297fb428a9347517ea02576bd55546.zip |
Merge branch 'sunweaver-pr/support-builtin-fonts' into 3.6.x
Attributes GH PR #316: https://github.com/ArcticaProject/nx-libs/pull/316
Reviewed by Mihai Moldovan <ionic@ionic.de> -- Fri, 17 Feb 2017 22:00:58 -0800
Ulrich Sibiller <uli42@gmx.de> -- Mon, 27 Feb 2017 03:11:55 -0800
Diffstat (limited to 'nx-X11/programs/Xserver/dix')
-rw-r--r-- | nx-X11/programs/Xserver/dix/dixfonts.c | 34 | ||||
-rw-r--r-- | nx-X11/programs/Xserver/dix/main.c | 2 |
2 files changed, 32 insertions, 4 deletions
diff --git a/nx-X11/programs/Xserver/dix/dixfonts.c b/nx-X11/programs/Xserver/dix/dixfonts.c index f7d047c2d..c8e5f6cf0 100644 --- a/nx-X11/programs/Xserver/dix/dixfonts.c +++ b/nx-X11/programs/Xserver/dix/dixfonts.c @@ -1824,6 +1824,9 @@ SetFontPath(ClientPtr client, int npaths, unsigned char *paths, int *error) int SetDefaultFontPath(char *path) { + char *temp_path, + *start, + *end; unsigned char *cp, *pp, *nump, @@ -1834,12 +1837,36 @@ SetDefaultFontPath(char *path) 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) { + if (asprintf(&temp_path, "%s%sbuilt-ins", path, *path ? "," : "") + == -1) + temp_path = NULL; + } + else { + temp_path = strdup(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 = (unsigned char *) ALLOCATE_LOCAL(len); - if (!newpath) + if (!newpath) { + free(temp_path); return BadAlloc; - pp = (unsigned char *) path; + } + pp = (unsigned char *) temp_path; cp++; while (*pp) { if (*pp == ',') { @@ -1858,6 +1885,7 @@ SetDefaultFontPath(char *path) err = SetFontPathElements(num, newpath, &bad, TRUE); DEALLOCATE_LOCAL(newpath); + free(temp_path); return err; } diff --git a/nx-X11/programs/Xserver/dix/main.c b/nx-X11/programs/Xserver/dix/main.c index 553ad6c03..7bd41d865 100644 --- a/nx-X11/programs/Xserver/dix/main.c +++ b/nx-X11/programs/Xserver/dix/main.c @@ -388,7 +388,7 @@ main(int argc, char *argv[], char *envp[]) SetFontPath(0, 0, (unsigned char *)defaultFontPath, &error); } else { if (SetDefaultFontPath(defaultFontPath) != Success) - ErrorF("failed to set default font path '%s'", + ErrorF("failed to set default font path '%s'\n", defaultFontPath); } if (!SetDefaultFont(defaultTextFont)) |