aboutsummaryrefslogtreecommitdiff
path: root/nx-X11
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-02-27 13:11:33 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-02-27 13:11:33 +0100
commit5e68c1283c297fb428a9347517ea02576bd55546 (patch)
treef7395115b90efd6c0239d6d72c5bca49168f6380 /nx-X11
parent0a5d26d121a8420feb25bd68c8f1623edf50e0a8 (diff)
parent3e8d98f3337a21cd9147c1ac4f27258c95bf41b0 (diff)
downloadnx-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')
-rw-r--r--nx-X11/config/cf/X11.tmpl4
-rw-r--r--nx-X11/programs/Xserver/dix/dixfonts.c34
-rw-r--r--nx-X11/programs/Xserver/dix/main.c2
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Font.c58
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c47
-rw-r--r--nx-X11/programs/Xserver/include/dixfont.h2
6 files changed, 84 insertions, 63 deletions
diff --git a/nx-X11/config/cf/X11.tmpl b/nx-X11/config/cf/X11.tmpl
index 54f94355d..d5527cdc7 100644
--- a/nx-X11/config/cf/X11.tmpl
+++ b/nx-X11/config/cf/X11.tmpl
@@ -856,10 +856,10 @@ FCHOWN_DEFINES = -DHAS_FCHOWN
#define DocPdfDir $(DOCDIR)/PDF
#endif
#ifndef FontDir
-#define FontDir $(LIBDIR)/fonts
+#define FontDir $(USRDATADIR)/fonts
#endif
#ifndef FontEncDir
-#define FontEncDir $(LIBDIR)/fonts/encodings
+#define FontEncDir $(USRDATADIR)/fonts/encodings
#endif
#ifndef AdmDir
#define AdmDir /usr/adm
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))
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Font.c b/nx-X11/programs/Xserver/hw/nxagent/Font.c
index 5b9c31106..c9b9e3f75 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Font.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Font.c
@@ -69,38 +69,30 @@ is" without express or implied warranty.
#undef TEST
#undef DEBUG
-#define NXAGENT_DEFAULT_FONT_DIR "/usr/X11R6/lib/X11/fonts"
+#define NXAGENT_DEFAULT_FONT_DIR "/usr/share/nx/fonts"
#define NXAGENT_ALTERNATE_FONT_DIR "/usr/share/X11/fonts"
#define NXAGENT_ALTERNATE_FONT_DIR_2 "/usr/share/fonts/X11"
-#define NXAGENT_ALTERNATE_FONT_DIR_3 "/usr/share/fonts"
-#define NXAGENT_ALTERNATE_FONT_DIR_4 "/usr/NX/share/fonts"
+#define NXAGENT_ALTERNATE_FONT_DIR_3 "/usr/X11R6/lib/X11/fonts"
#define NXAGENT_DEFAULT_FONT_PATH \
-"/usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/Speedo/,\
-/usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/75dpi/,\
-/usr/X11R6/lib/X11/fonts/100dpi/,/usr/X11R6/lib/X11/fonts/TTF/,\
-/usr/NX/share/fonts/base"
+"/usr/share/nx/fonts/misc/,/usr/share/nx/fonts/Speedo/,\
+/usr/share/nx/fonts/Type1/,/usr/share/nx/fonts/75dpi/,\
+/usr/share/nx/fonts/100dpi/,/usr/share/nx/fonts/TTF/"
#define NXAGENT_ALTERNATE_FONT_PATH \
"/usr/share/X11/fonts/misc/,/usr/share/X11/fonts/Speedo/,\
/usr/share/X11/fonts/Type1/,/usr/share/X11/fonts/75dpi/,\
-/usr/share/X11/fonts/100dpi/,/usr/share/X11/fonts/TTF/,\
-/usr/NX/share/fonts/base"
+/usr/share/X11/fonts/100dpi/,/usr/share/X11/fonts/TTF/"
#define NXAGENT_ALTERNATE_FONT_PATH_2 \
"/usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Speedo/,\
/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,\
-/usr/share/fonts/X11/100dpi/,/usr/share/fonts/X11/TTF/,\
-/usr/NX/share/fonts/base"
+/usr/share/fonts/X11/100dpi/,/usr/share/fonts/X11/TTF/"
#define NXAGENT_ALTERNATE_FONT_PATH_3 \
-"/usr/share/fonts/misc/,/usr/share/fonts/Speedo/,\
-/usr/share/fonts/Type1/,/usr/share/fonts/75dpi/,\
-/usr/share/fonts/100dpi/,/usr/share/fonts/TTF/,\
-/usr/NX/share/fonts/base"
-
-#define NXAGENT_ALTERNATE_FONT_PATH_4 \
-"/usr/NX/share/fonts/base"
+"/usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/Speedo/,\
+/usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/75dpi/,\
+/usr/X11R6/lib/X11/fonts/100dpi/,/usr/X11R6/lib/X11/fonts/TTF/"
#undef NXAGENT_FONTCACHE_DEBUG
#undef NXAGENT_RECONNECT_FONT_DEBUG
@@ -1479,7 +1471,7 @@ void nxagentVerifyDefaultFontPath(void)
S_ISDIR(dirStat.st_mode) != 0)
{
/*
- * Let's use the old "/usr/X11R6/lib/X11/fonts" style.
+ * Let's use the old "/usr/share/nx/fonts" style.
*/
#ifdef TEST
@@ -1554,7 +1546,7 @@ void nxagentVerifyDefaultFontPath(void)
S_ISDIR(dirStat.st_mode) != 0)
{
/*
- * Let's use the "/usr/share/fonts" path.
+ * Let's use the "/usr/X11R6/lib/X11/fonts" path.
*/
#ifdef TEST
@@ -1574,32 +1566,6 @@ void nxagentVerifyDefaultFontPath(void)
strcat(fontPath, NXAGENT_ALTERNATE_FONT_PATH_3);
}
-
- if (stat(NXAGENT_ALTERNATE_FONT_DIR_4, &dirStat) == 0 &&
- S_ISDIR(dirStat.st_mode) != 0)
- {
- /*
- * Let's use the "/usr/NX/share/fonts" path.
- */
-
- #ifdef TEST
- fprintf(stderr, "nxagentVerifyDefaultFontPath: Assuming fonts in directory [%s].\n",
- validateString(NXAGENT_ALTERNATE_FONT_DIR_4));
- #endif
-
- if (*fontPath != '\0')
- {
- fontPath = realloc(fontPath, strlen(fontPath) + strlen(NXAGENT_ALTERNATE_FONT_PATH_4) + 2);
- strcat(fontPath, ",");
- }
- else
- {
- fontPath = realloc(fontPath, strlen(fontPath) + strlen(NXAGENT_ALTERNATE_FONT_PATH_4) + 1);
- }
-
- strcat(fontPath, NXAGENT_ALTERNATE_FONT_PATH_4);
- }
-
if (*fontPath == '\0')
{
#ifdef WARNING
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c b/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c
index 294a5727d..b3d7cc9d7 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/NXdixfonts.c
@@ -926,6 +926,9 @@ bail:
int
SetDefaultFontPath(char *path)
{
+ char *temp_path,
+ *start,
+ *end;
unsigned char *cp,
*pp,
*nump,
@@ -936,20 +939,41 @@ SetDefaultFontPath(char *path)
size = 0,
bad;
- /* get enough for string, plus values -- use up commas */
#ifdef NX_TRANS_SOCKET
- len = strlen(_NXGetFontPath(path)) + 1;
-#else
- len = strlen(path) + 1;
-#endif
+ path = (char *) _NXGetFontPath(path);
+#endif /* NX_TRANS_SOCKET */
+
+ start = path;
+
+ /* ensure temp_path contains "built-ins" */
+ 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(temp_path) + 1;
nump = cp = newpath = (unsigned char *) ALLOCATE_LOCAL(len);
- if (!newpath)
+ if (!newpath) {
+ free(temp_path);
return BadAlloc;
-#ifdef NX_TRANS_SOCKET
- pp = (unsigned char *) _NXGetFontPath(path);
-#else
- pp = (unsigned char *) path;
-#endif
+ }
+ pp = (unsigned char *) temp_path;
cp++;
while (*pp) {
if (*pp == ',') {
@@ -968,6 +992,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/include/dixfont.h b/nx-X11/programs/Xserver/include/dixfont.h
index 6582be24c..6149d2160 100644
--- a/nx-X11/programs/Xserver/include/dixfont.h
+++ b/nx-X11/programs/Xserver/include/dixfont.h
@@ -150,4 +150,6 @@ extern void InitGlyphCaching(void);
extern void SetGlyphCachingMode(int /*newmode*/);
+extern void register_fpe_functions(void);
+
#endif /* DIXFONT_H */