Unverified Commit f6177d2a authored by Mike Gabriel's avatar Mike Gabriel

Merge branch 'uli42-pr/short_font_code' into 3.6.x

parents d94e9ba2 453edbd2
...@@ -30,6 +30,9 @@ CONFIGURE ?= ./configure --prefix="$(PREFIX)" ...@@ -30,6 +30,9 @@ CONFIGURE ?= ./configure --prefix="$(PREFIX)"
ifneq ($(shell pkg-config --exists xkbcomp && echo yes), yes) ifneq ($(shell pkg-config --exists xkbcomp && echo yes), yes)
$(warning xkbcomp devel package missing, using imake default values) $(warning xkbcomp devel package missing, using imake default values)
endif endif
ifneq ($(shell pkg-config --exists fontutil && echo yes), yes)
$(warning fontutil devel package missing, using imake default values)
endif
IMAKE_DEFINES ?= IMAKE_DEFINES ?=
...@@ -112,6 +115,8 @@ imakeconfig: ...@@ -112,6 +115,8 @@ imakeconfig:
(pkg-config --exists xkbcomp && echo "#define SystemXkbConfigDir `pkg-config xkbcomp --variable=xkbconfigdir`"; :) >>nx-X11/config/cf/nxconfig.def (pkg-config --exists xkbcomp && echo "#define SystemXkbConfigDir `pkg-config xkbcomp --variable=xkbconfigdir`"; :) >>nx-X11/config/cf/nxconfig.def
(pkg-config --exists xkbcomp && echo "#define SystemXkbBinDir `pkg-config xkbcomp --variable=prefix`/bin"; :) >>nx-X11/config/cf/nxconfig.def (pkg-config --exists xkbcomp && echo "#define SystemXkbBinDir `pkg-config xkbcomp --variable=prefix`/bin"; :) >>nx-X11/config/cf/nxconfig.def
(pkg-config --exists fontutil && echo "#define SystemFontRootDir `pkg-config fontutil --variable=fontrootdir`"; :) >>nx-X11/config/cf/nxconfig.def
# let's create the nx-X11 Makefiles now, once everything has been defined # let's create the nx-X11 Makefiles now, once everything has been defined
$(MAKE) -j1 -C nx-X11 Makefiles IMAKE_DEFINES="$(IMAKE_DEFINES)" $(MAKE) -j1 -C nx-X11 Makefiles IMAKE_DEFINES="$(IMAKE_DEFINES)"
......
...@@ -791,6 +791,10 @@ TCLIBDIR = TclLibDir ...@@ -791,6 +791,10 @@ TCLIBDIR = TclLibDir
#define SystemXkbBinDir /usr/bin #define SystemXkbBinDir /usr/bin
#endif #endif
#ifndef SystemFontDir
#define SystemFontDir /usr/share/fonts/X11
#endif
#ifndef ShLibDir #ifndef ShLibDir
#define ShLibDir UsrLibDir #define ShLibDir UsrLibDir
#endif #endif
...@@ -1668,6 +1672,7 @@ TCLIBDIR = TclLibDir ...@@ -1668,6 +1672,7 @@ TCLIBDIR = TclLibDir
SYSTEMUSRINCDIR = SystemUsrIncDir /* system's "/usr/include" */ SYSTEMUSRINCDIR = SystemUsrIncDir /* system's "/usr/include" */
SYSTEMXKBCONFDIR = SystemXkbConfigDir /* system's "/usr/share/xkb" */ SYSTEMXKBCONFDIR = SystemXkbConfigDir /* system's "/usr/share/xkb" */
SYSTEMXKBBINDIR = SystemXkbBinDir /* system's "/usr/bin" */ SYSTEMXKBBINDIR = SystemXkbBinDir /* system's "/usr/bin" */
SYSTEMFONTDIR = SystemFontDir /* system's "/usr/share/fonts/X11" */
SHLIBDIR = ShLibDir /* shared libraries */ SHLIBDIR = ShLibDir /* shared libraries */
LINTLIBDIR = LintlibDir /* lint libraries */ LINTLIBDIR = LintlibDir /* lint libraries */
MANPATH = ManPath /* top of manual page tree */ MANPATH = ManPath /* top of manual page tree */
......
...@@ -156,15 +156,15 @@ ...@@ -156,15 +156,15 @@
* this by default as NX intaller carries only misc and TTF in the * this by default as NX intaller carries only misc and TTF in the
* basic set of fonts installed under Windows. * basic set of fonts installed under Windows.
* *
#define DefaultFontPath $(FONTDIR)/misc/,$(FONTDIR)/Speedo/,$(FONTDIR)/Type1/,$(FONTDIR)/75dpi/,$(FONTDIR)/100dpi/ #define DefaultFontPath $(FONTDIR)/misc/,$(FONTDIR)/Type1/,$(FONTDIR)/75dpi/,$(FONTDIR)/100dpi/
*/ */
#if defined(LinuxArchitecture) || defined(SunArchitecture) || defined(FreeBSDArchitecture) #if defined(LinuxArchitecture) || defined(SunArchitecture) || defined(FreeBSDArchitecture)
#define DefaultFontPath $(FONTDIR)/misc/,$(FONTDIR)/Speedo/,$(FONTDIR)/Type1/,$(FONTDIR)/75dpi/,$(FONTDIR)/100dpi/,$(FONTDIR)/TTF/ #define DefaultFontPath $(FONTDIR)/misc/,$(FONTDIR)/Type1/,$(FONTDIR)/75dpi/,$(FONTDIR)/100dpi/,$(FONTDIR)/TTF/
#endif /* #if defined(LinuxArchitecture) || defined(SunArchitecture) */ #endif /* #if defined(LinuxArchitecture) || defined(SunArchitecture) */
#if defined(cygwinArchitecture) #if defined(cygwinArchitecture)
#define DefaultFontPath /mnt/NX/fonts/base/,/mnt/NX/fonts/misc/,/mnt/NX/fonts/Speedo/,/mnt/NX/fonts/Type1/,/mnt/NX/fonts/75dpi/,/mnt/NX/fonts/100dpi/,/mnt/NX/fonts/TTF/ #define DefaultFontPath /mnt/NX/fonts/base/,/mnt/NX/fonts/misc/,/mnt/NX/fonts/Type1/,/mnt/NX/fonts/75dpi/,/mnt/NX/fonts/100dpi/,/mnt/NX/fonts/TTF/
#endif /* #if defined(cygwinArchitecture) */ #endif /* #if defined(cygwinArchitecture) */
/* /*
......
...@@ -71,30 +71,22 @@ is" without express or implied warranty. ...@@ -71,30 +71,22 @@ is" without express or implied warranty.
#undef TEST #undef TEST
#undef DEBUG #undef DEBUG
#define NXAGENT_DEFAULT_FONT_DIR "/usr/share/nx/fonts" const char * nxagentFontDirs[] = {
#define NXAGENT_ALTERNATE_FONT_DIR "/usr/share/X11/fonts" SYSTEMFONTDIR,
#define NXAGENT_ALTERNATE_FONT_DIR_2 "/usr/share/fonts/X11" "/usr/share/nx/fonts",
#define NXAGENT_ALTERNATE_FONT_DIR_3 "/usr/X11R6/lib/X11/fonts" "/usr/share/X11/fonts",
"/usr/share/fonts/X11",
#define NXAGENT_DEFAULT_FONT_PATH \ "/usr/X11R6/lib/X11/fonts",
"/usr/share/nx/fonts/misc/,/usr/share/nx/fonts/Speedo/,\ NULL
/usr/share/nx/fonts/Type1/,/usr/share/nx/fonts/75dpi/,\ };
/usr/share/nx/fonts/100dpi/,/usr/share/nx/fonts/TTF/"
const char * nxagentFontSubdirs[] = {
#define NXAGENT_ALTERNATE_FONT_PATH \ "Type1",
"/usr/share/X11/fonts/misc/,/usr/share/X11/fonts/Speedo/,\ "75dpi",
/usr/share/X11/fonts/Type1/,/usr/share/X11/fonts/75dpi/,\ "100dpi",
/usr/share/X11/fonts/100dpi/,/usr/share/X11/fonts/TTF/" "TTF",
NULL
#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/"
#define NXAGENT_ALTERNATE_FONT_PATH_3 \
"/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_FONTCACHE_DEBUG
#undef NXAGENT_RECONNECT_FONT_DEBUG #undef NXAGENT_RECONNECT_FONT_DEBUG
...@@ -711,7 +703,7 @@ Bool nxagentUnrealizeFont(ScreenPtr pScreen, FontPtr pFont) ...@@ -711,7 +703,7 @@ Bool nxagentUnrealizeFont(ScreenPtr pScreen, FontPtr pFont)
int nxagentDestroyNewFontResourceType(void * p, XID id) int nxagentDestroyNewFontResourceType(void * p, XID id)
{ {
#ifdef TEST #ifdef TEST
fprintf(stderr, "nxagentDestroyNewFontResourceType: Destroying mirror id [%ld] for font at [%p].\n", fprintf(stderr, "%s: Destroying mirror id [%ld] for font at [%p].\n", __func__,
nxagentFontPriv((FontPtr) p) -> mirrorID, (void *) p); nxagentFontPriv((FontPtr) p) -> mirrorID, (void *) p);
#endif #endif
...@@ -1418,14 +1410,14 @@ static Bool nxagentGetFontServerPath(char * fontServerPath, int size) ...@@ -1418,14 +1410,14 @@ static Bool nxagentGetFontServerPath(char * fontServerPath, int size)
snprintf(fontServerPath, min(size, len + 1), "%s", path + 1); snprintf(fontServerPath, min(size, len + 1), "%s", path + 1);
#ifdef TEST #ifdef TEST
fprintf(stderr, "nxagentGetFontServerPath: Got path [%s].\n", fprintf(stderr, "%s: Got path [%s].\n", __func__,
fontServerPath); fontServerPath);
#endif #endif
} }
else else
{ {
#ifdef TEST #ifdef TEST
fprintf(stderr, "nxagentGetFontServerPath: WARNING! Font server tunneling not enabled.\n"); fprintf(stderr, "%s: WARNING! Font server tunneling not enabled.\n", __func__);
#endif #endif
return False; return False;
...@@ -1434,7 +1426,7 @@ static Bool nxagentGetFontServerPath(char * fontServerPath, int size) ...@@ -1434,7 +1426,7 @@ static Bool nxagentGetFontServerPath(char * fontServerPath, int size)
else else
{ {
#ifdef TEST #ifdef TEST
fprintf(stderr, "nxagentGetFontServerPath: WARNING! Failed to get path for font server tunneling.\n"); fprintf(stderr, "%s: WARNING! Failed to get path for font server tunneling.\n", __func__);
#endif #endif
return False; return False;
...@@ -1443,144 +1435,118 @@ static Bool nxagentGetFontServerPath(char * fontServerPath, int size) ...@@ -1443,144 +1435,118 @@ static Bool nxagentGetFontServerPath(char * fontServerPath, int size)
return True; return True;
} }
void nxagentVerifyDefaultFontPath(void) void nxagentVerifySingleFontPath(char **dest, const char *fontDir)
{ {
struct stat dirStat; if (!dest || !*dest)
static char *fontPath; return;
#ifdef TEST #ifdef TEST
fprintf(stderr, "nxagentVerifyDefaultFontPath: Going to search for one or more valid font paths.\n"); fprintf(stderr, "%s: Assuming fonts in directory [%s].\n", __func__,
validateString(fontDir));
#endif #endif
/* for (int i = 0; ; i++)
* Set the default font path as the first choice.
*/
if ((fontPath = strdup(defaultFontPath)) == NULL)
{ {
#ifdef WARNING char *tmppath = NULL;
fprintf(stderr, "nxagentVerifyDefaultFontPath: WARNING! Unable to allocate memory for a new font path. " int rc;
"Using the default font path [%s].\n", validateString(defaultFontPath));
#endif
return; const char *subdir = nxagentFontSubdirs[i];
}
if (stat(NXAGENT_DEFAULT_FONT_DIR, &dirStat) == 0 && if (subdir == NULL)
S_ISDIR(dirStat.st_mode) != 0) return;
{
/*
* Let's use the old "/usr/share/nx/fonts" style.
*/
#ifdef TEST
fprintf(stderr, "nxagentVerifyDefaultFontPath: Assuming fonts in directory [%s].\n",
validateString(NXAGENT_DEFAULT_FONT_DIR));
#endif
if (*fontPath != '\0') if (**dest != '\0')
{ {
fontPath = realloc(fontPath, strlen(fontPath) + strlen(NXAGENT_DEFAULT_FONT_PATH) + 2); rc = asprintf(&tmppath, "%s,%s/%s", *dest, fontDir, subdir);
strcat(fontPath, ",");
} }
else else
{ {
fontPath = realloc(fontPath, strlen(fontPath) + strlen(NXAGENT_DEFAULT_FONT_PATH) + 1); rc = asprintf(&tmppath, "%s/%s", fontDir, subdir);
} }
strcat(fontPath, NXAGENT_DEFAULT_FONT_PATH); if (rc == -1)
} return;
if (stat(NXAGENT_ALTERNATE_FONT_DIR, &dirStat) == 0 && free(*dest);
S_ISDIR(dirStat.st_mode) != 0) *dest = tmppath;
{ tmppath = NULL;
/* }
* Let's use the new "/usr/share/X11/fonts" path. }
*/
#ifdef TEST void nxagentVerifyDefaultFontPath(void)
fprintf(stderr, "nxagentVerifyDefaultFontPath: Assuming fonts in directory [%s].\n", {
validateString(NXAGENT_ALTERNATE_FONT_DIR)); static char *fontPath;
#endif
if (*fontPath != '\0') #ifdef TEST
{ fprintf(stderr, "%s: Going to search for one or more valid font paths.\n", __func__);
fontPath = realloc(fontPath, strlen(fontPath) + strlen(NXAGENT_ALTERNATE_FONT_PATH) + 2); #endif
strcat(fontPath, ",");
}
else
{
fontPath = realloc(fontPath, strlen(fontPath) + strlen(NXAGENT_ALTERNATE_FONT_PATH) + 1);
}
strcat(fontPath, NXAGENT_ALTERNATE_FONT_PATH); /*
} * Set the default font path as the first choice.
*/
if (stat(NXAGENT_ALTERNATE_FONT_DIR_2, &dirStat) == 0 && if ((fontPath = strdup(defaultFontPath)) == NULL)
S_ISDIR(dirStat.st_mode) != 0)
{ {
/* #ifdef WARNING
* Let's use the "/usr/share/fonts/X11" path. fprintf(stderr, "%s: WARNING! Unable to allocate memory for a new font path. "
*/ "Using the default font path [%s].\n", __func__,
validateString(defaultFontPath));
#ifdef TEST
fprintf(stderr, "nxagentVerifyDefaultFontPath: Assuming fonts in directory [%s].\n",
validateString(NXAGENT_ALTERNATE_FONT_DIR_2));
#endif #endif
if (*fontPath != '\0') return;
{
fontPath = realloc(fontPath, strlen(fontPath) + strlen(NXAGENT_ALTERNATE_FONT_PATH_2) + 2);
strcat(fontPath, ",");
}
else
{
fontPath = realloc(fontPath, strlen(fontPath) + strlen(NXAGENT_ALTERNATE_FONT_PATH_2) + 1);
}
strcat(fontPath, NXAGENT_ALTERNATE_FONT_PATH_2);
} }
if (stat(NXAGENT_ALTERNATE_FONT_DIR_3, &dirStat) == 0 && for (int i = 0; ; i++)
S_ISDIR(dirStat.st_mode) != 0)
{ {
/* int j;
* Let's use the "/usr/X11R6/lib/X11/fonts" path. const char *dir = nxagentFontDirs[i];
*/
#ifdef TEST if (dir == NULL)
fprintf(stderr, "nxagentVerifyDefaultFontPath: Assuming fonts in directory [%s].\n",
validateString(NXAGENT_ALTERNATE_FONT_DIR_3));
#endif
if (*fontPath != '\0')
{ {
fontPath = realloc(fontPath, strlen(fontPath) + strlen(NXAGENT_ALTERNATE_FONT_PATH_3) + 2); break;
strcat(fontPath, ",");
} }
else else
{ {
fontPath = realloc(fontPath, strlen(fontPath) + strlen(NXAGENT_ALTERNATE_FONT_PATH_3) + 1); for (j = 0; j <= i; j++)
} {
//if (strcmp(nxagentFontDirs[j], dir) == 0)
if (nxagentFontDirs[j] == dir)
{
break;
}
}
strcat(fontPath, NXAGENT_ALTERNATE_FONT_PATH_3); if (j == i)
{
nxagentVerifySingleFontPath(&fontPath, dir);
}
#ifdef TEST
else
{
fprintf(stderr, "%s: Skipping duplicate font dir [%s].\n", __func__,
validateString(dir));
}
#endif
}
} }
if (*fontPath == '\0')
if (*fontPath == '\0')
{ {
#ifdef WARNING #ifdef WARNING
fprintf(stderr, "nxagentVerifyDefaultFontPath: WARNING! Can't find a valid font directory.\n"); fprintf(stderr, "%s: WARNING! Can't find a valid font directory.\n", __func__);
fprintf(stderr, "%s: WARNING! Using font path [%s].\n", __func__,
fprintf(stderr, "nxagentVerifyDefaultFontPath: WARNING! Using font path [%s].\n", validateString(defaultFontPath));
validateString(defaultFontPath));
#endif #endif
} }
else else
{ {
/* do _not_ free defaultFontPath here - it's either set at compile time or
part of argv */
defaultFontPath = fontPath; defaultFontPath = fontPath;
#ifdef TEST #ifdef TEST
fprintf(stderr, "nxagentVerifyDefaultFontPath: Using font path [%s].\n", fprintf(stderr, "%s: Using font path [%s].\n", __func__,
validateString(defaultFontPath)); validateString(defaultFontPath));
#endif #endif
} }
......
...@@ -255,6 +255,7 @@ DEFINES = \ ...@@ -255,6 +255,7 @@ DEFINES = \
-DRANDR_15_INTERFACE=1 \ -DRANDR_15_INTERFACE=1 \
-DPANORAMIX \ -DPANORAMIX \
-UDEBUG_TREE \ -UDEBUG_TREE \
-DSYSTEMFONTDIR=\"$(SYSTEMFONTDIR)\" \
$(NULL) $(NULL)
all:: $(OBJS) all:: $(OBJS)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment