Teach xkb how to optionally run xkbcomp from $bindir instead of

$datadir/xkb.
This commit is contained in:
Kristian Høgsberg 2005-09-01 19:56:14 +00:00
parent 94fbdb5c6d
commit 287336f3c9
3 changed files with 16 additions and 3 deletions

View File

@ -176,7 +176,7 @@ char tmpname[PATH_MAX];
haveDir= False; haveDir= False;
buf = Xprintf( buf = Xprintf(
"'%s/xkbcomp' '-R%s/%s' -w %ld -l -vlfhpR '%s'" W32_tmparg, "'%s/xkbcomp' '-R%s/%s' -w %ld -l -vlfhpR '%s'" W32_tmparg,
XkbBaseDirectory,XkbBaseDirectory,componentDirs[what],(long) XkbBinDirectory,XkbBaseDirectory,componentDirs[what],(long)
((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:xkbDebugFlags)), ((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:xkbDebugFlags)),
file W32_tmpfile file W32_tmpfile
); );

View File

@ -243,16 +243,21 @@ char *cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile;
if (XkbBaseDirectory!=NULL) { if (XkbBaseDirectory!=NULL) {
#ifndef __UNIXOS2__ #ifndef __UNIXOS2__
char *xkbbasedir = XkbBaseDirectory; char *xkbbasedir = XkbBaseDirectory;
char *xkbbindir = XkbBinDirectory;
#else #else
/* relocate the basedir and replace the slashes with backslashes */ /* relocate the basedir and replace the slashes with backslashes */
char *xkbbasedir = (char*)__XOS2RedirRoot(XkbBaseDirectory); char *xkbbasedir = (char*)__XOS2RedirRoot(XkbBaseDirectory);
char *xkbbindir = (char*)__XOS2RedirRoot(XkbBinDirectory);
int i; int i;
for (i=0; i<strlen(xkbbasedir); i++) for (i=0; i<strlen(xkbbasedir); i++)
if (xkbbasedir[i]=='/') xkbbasedir[i]='\\'; if (xkbbasedir[i]=='/') xkbbasedir[i]='\\';
for (i=0; i<strlen(xkbbindir); i++)
if (xkbbindir[i]=='/') xkbbindir[i]='\\';
#endif #endif
cmd = Xprintf("\"%s" PATHSEPARATOR "xkbcomp\" -w %d \"-R%s\" -xkm %s%s -em1 %s -emp %s -eml %s keymap/%s \"%s%s.xkm\"", cmd = Xprintf("\"%s" PATHSEPARATOR "xkbcomp\" -w %d \"-R%s\" -xkm %s%s -em1 %s -emp %s -eml %s keymap/%s \"%s%s.xkm\"",
xkbbasedir, xkbbindir,
((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:(int)xkbDebugFlags)), ((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:(int)xkbDebugFlags)),
xkbbasedir,(map?"-m ":""),(map?map:""), xkbbasedir,(map?"-m ":""),(map?map:""),
PRE_ERROR_MSG,ERROR_PREFIX,POST_ERROR_MSG1,file, PRE_ERROR_MSG,ERROR_PREFIX,POST_ERROR_MSG1,file,
@ -337,16 +342,20 @@ char tmpname[PATH_MAX];
#endif #endif
#ifndef __UNIXOS2__ #ifndef __UNIXOS2__
char *xkbbasedir = XkbBaseDirectory; char *xkbbasedir = XkbBaseDirectory;
char *xkbbindir = XkbBinDirectory;
#else #else
int i; int i;
char *xkbbasedir = (char*)__XOS2RedirRoot(XkbBaseDirectory); char *xkbbasedir = (char*)__XOS2RedirRoot(XkbBaseDirectory);
char *xkbbindir = (char*)__XOS2RedirRoot(XkbBinDirectory);
for (i=0; i<strlen(xkbbasedir); i++) for (i=0; i<strlen(xkbbasedir); i++)
if (xkbbasedir[i]=='/') xkbbasedir[i]='\\'; if (xkbbasedir[i]=='/') xkbbasedir[i]='\\';
for (i=0; i<strlen(xkbbindir); i++)
if (xkbbindir[i]=='/') xkbbindir[i]='\\';
#endif #endif
buf = Xprintf( buf = Xprintf(
"\"%s" PATHSEPARATOR "xkbcomp\" -w %d \"-R%s\" -xkm \"%s\" -em1 %s -emp %s -eml %s \"%s%s.xkm\"", "\"%s" PATHSEPARATOR "xkbcomp\" -w %d \"-R%s\" -xkm \"%s\" -em1 %s -emp %s -eml %s \"%s%s.xkm\"",
xkbbasedir, xkbbindir,
((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:(int)xkbDebugFlags)), ((xkbDebugFlags<2)?1:((xkbDebugFlags>10)?10:(int)xkbDebugFlags)),
xkbbasedir, xkmfile, xkbbasedir, xkmfile,
PRE_ERROR_MSG,ERROR_PREFIX,POST_ERROR_MSG1, PRE_ERROR_MSG,ERROR_PREFIX,POST_ERROR_MSG1,

View File

@ -100,6 +100,9 @@ typedef struct _SrvXkmInfo {
#ifndef XKB_BASE_DIRECTORY #ifndef XKB_BASE_DIRECTORY
#define XKB_BASE_DIRECTORY "/usr/lib/X11/xkb" #define XKB_BASE_DIRECTORY "/usr/lib/X11/xkb"
#endif #endif
#ifndef XKB_BIN_DIRECTORY
#define XKB_BIN_DIRECTORY XKB_BASE_DIRECTORY
#endif
#ifndef XKB_DFLT_RULES_FILE #ifndef XKB_DFLT_RULES_FILE
#define XKB_DFLT_RULES_FILE "rules" #define XKB_DFLT_RULES_FILE "rules"
#endif #endif
@ -123,6 +126,7 @@ typedef struct _SrvXkmInfo {
#endif #endif
char * XkbBaseDirectory= XKB_BASE_DIRECTORY; char * XkbBaseDirectory= XKB_BASE_DIRECTORY;
char * XkbBinDirectory= XKB_BIN_DIRECTORY;
char * XkbInitialMap= NULL; char * XkbInitialMap= NULL;
int XkbWantAccessX= 0; int XkbWantAccessX= 0;
static XkbFileInfo * _XkbInitFileInfo= NULL; static XkbFileInfo * _XkbInitFileInfo= NULL;