Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nx-libs
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dimbor
nx-libs
Commits
11a1f31d
Commit
11a1f31d
authored
Jul 05, 2018
by
Ulrich Sibiller
Committed by
Mike Gabriel
Nov 09, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no more own XkbBaseDirectory handling
Just use the existing xkb code
parent
d54f1fb7
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1 addition
and
361 deletions
+1
-361
Keyboard.c
nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
+0
-33
ddxLoad.c
nx-X11/programs/Xserver/xkb/ddxLoad.c
+1
-328
No files found.
nx-X11/programs/Xserver/hw/nxagent/Keyboard.c
View file @
11a1f31d
...
...
@@ -481,37 +481,6 @@ static int nxagentRestoreKeyboardDeviceData(DeviceIntPtr devBackup, DeviceIntPtr
static
int
nxagentFreeKeyboardDeviceData
(
DeviceIntPtr
dev
);
static
void
nxagentCheckXkbBaseDirectory
(
void
)
{
/*
* Set XkbBaseDirectory global
* variable appropriately.
*/
#ifdef TEST
fprintf
(
stderr
,
"nxagentCheckXkbBaseDirectory: "
"Before calling _NXGetXkbBasePath:
\n
"
);
fprintf
(
stderr
,
"nxagentCheckXkbBaseDirectory: "
"XkbBaseDirectory variable [%s].
\n
"
,
XkbBaseDirectory
);
#endif
XkbBaseDirectory
=
_NXGetXkbBasePath
(
XkbBaseDirectory
);
#ifdef TEST
fprintf
(
stderr
,
"nxagentCheckXkbBaseDirectory: "
"After calling _NXGetXkbBasePath:
\n
"
);
fprintf
(
stderr
,
"nxagentCheckXkbBaseDirectory: "
"XkbBaseDirectory variable [%s].
\n
"
,
XkbBaseDirectory
);
#endif
return
;
}
static
char
*
nxagentXkbGetRules
()
{
int
ret
;
...
...
@@ -820,8 +789,6 @@ N/A
* variable is checked.
*/
nxagentCheckXkbBaseDirectory
();
if
(
noXkbExtension
)
{
#ifdef TEST
fprintf
(
stderr
,
"nxagentKeyboardProc: No XKB extension.
\n
"
);
...
...
nx-X11/programs/Xserver/xkb/ddxLoad.c
View file @
11a1f31d
...
...
@@ -178,310 +178,6 @@ Win32System(const char *cmdline)
# endif
#endif
#ifdef NXAGENT_SERVER
#define NX_XKB_BASE_DIRECTORY "/usr/lib/X11/xkb"
#define NX_XKB_ALTERNATE_BASE_DIRECTORY "/usr/share/X11/xkb"
#define NX_XKB_RULES_BASE_FILE "rules/base"
#define NX_ALT_XKBCOMP_PATH "/usr/bin"
static
char
_NXXkbBasePath
[
PATH_MAX
];
static
char
_NXXkbCompPath
[
PATH_MAX
];
static
int
NXVerifyXkbBaseDirectory
(
const
char
*
dirPath
)
{
int
size
;
char
*
rulesBaseFilePath
;
struct
stat
rulesBaseFileStat
;
/*
* If rules/base file
* is not present inside
* the Xkb Base Directory,
* we suppose that the
* path is not valid.
*/
size
=
strlen
(
dirPath
)
+
strlen
(
"/"
)
+
strlen
(
NX_XKB_RULES_BASE_FILE
)
+
1
;
if
((
rulesBaseFilePath
=
malloc
((
size
+
1
)
*
sizeof
(
char
)))
==
NULL
)
{
FatalError
(
"NXVerifyXkbBaseDirectory: malloc failed.
\n
"
);
}
strcpy
(
rulesBaseFilePath
,
dirPath
);
strcat
(
rulesBaseFilePath
,
"/"
);
strcat
(
rulesBaseFilePath
,
NX_XKB_RULES_BASE_FILE
);
#ifdef TEST
fprintf
(
stderr
,
"NXVerifyXkbBaseDirectory: Looking for [%s] file.
\n
"
,
rulesBaseFilePath
);
#endif
if
(
stat
(
rulesBaseFilePath
,
&
rulesBaseFileStat
)
!=
0
)
{
#ifdef TEST
fprintf
(
stderr
,
"NXVerifyXkbBaseDirectory: Xkb Base Directory [%s] is not valid (can't find file [%s]).
\n
"
,
dirPath
,
rulesBaseFilePath
);
#endif
free
(
rulesBaseFilePath
);
return
0
;
}
#ifdef TEST
fprintf
(
stderr
,
"NXVerifyXkbBaseDirectory: Xkb Base Directory [%s] is valid.
\n
"
,
dirPath
);
#endif
free
(
rulesBaseFilePath
);
return
1
;
}
/*
* This function returns the directory
* containing the configuration files.
* This directory is referred by Xkb-
* BaseDirectory variable (generally
* it contains the hardcoded path at
* compile time). If the directory
* does not exist, the function will
* try a set of well known directories.
*/
char
*
_NXGetXkbBasePath
(
const
char
*
path
)
{
/*
* Check the xkb base directory only once.
*/
if
(
*
_NXXkbBasePath
!=
'\0'
)
{
return
_NXXkbBasePath
;
}
if
(
NXVerifyXkbBaseDirectory
(
XkbBaseDirectory
)
==
1
)
{
if
(
strlen
(
XkbBaseDirectory
)
+
1
>
PATH_MAX
)
{
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbBasePath: WARNING! Maximum length of xkb base path exceeded.
\n
"
);
#endif
goto
_NXGetXkbBasePathError
;
}
strcpy
(
_NXXkbBasePath
,
XkbBaseDirectory
);
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbBasePath: Using NX xkb base directory path [%s].
\n
"
,
_NXXkbBasePath
);
#endif
return
_NXXkbBasePath
;
}
if
(
NXVerifyXkbBaseDirectory
(
NX_XKB_BASE_DIRECTORY
)
==
1
)
{
if
(
strlen
(
NX_XKB_BASE_DIRECTORY
)
+
1
>
PATH_MAX
)
{
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbBasePath: WARNING! Maximum length of xkb base path exceeded.
\n
"
);
#endif
goto
_NXGetXkbBasePathError
;
}
strcpy
(
_NXXkbBasePath
,
NX_XKB_BASE_DIRECTORY
);
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbBasePath: Using NX xkb base directory path [%s].
\n
"
,
_NXXkbBasePath
);
#endif
return
_NXXkbBasePath
;
}
if
(
NXVerifyXkbBaseDirectory
(
NX_XKB_ALTERNATE_BASE_DIRECTORY
)
==
1
)
{
if
(
strlen
(
NX_XKB_ALTERNATE_BASE_DIRECTORY
)
+
1
>
PATH_MAX
)
{
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbBasePath: WARNING! Maximum length of xkb base path exceeded.
\n
"
);
#endif
goto
_NXGetXkbBasePathError
;
}
strcpy
(
_NXXkbBasePath
,
NX_XKB_ALTERNATE_BASE_DIRECTORY
);
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbBasePath: Using NX xkb base directory path [%s].
\n
"
,
_NXXkbBasePath
);
#endif
return
_NXXkbBasePath
;
}
_NXGetXkbBasePathError:
if
(
strlen
(
path
)
+
1
>
PATH_MAX
)
{
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbBasePath: WARNING! Maximum length of xkb base path exceeded.
\n
"
);
#endif
}
strcpy
(
_NXXkbBasePath
,
path
);
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbBasePath: Using default xkb base path [%s].
\n
"
,
_NXXkbBasePath
);
#endif
return
_NXXkbBasePath
;
}
static
int
NXVerifyXkbCompPath
(
char
*
path
)
{
char
*
xkbCompPath
;
int
xkbCompPathSize
;
struct
stat
xkbCompPathStat
;
if
(
path
==
NULL
)
{
return
0
;
}
xkbCompPathSize
=
strlen
(
path
)
+
strlen
(
"/"
)
+
strlen
(
"xkbcomp"
)
+
1
;
if
((
xkbCompPath
=
malloc
((
xkbCompPathSize
+
1
)
*
sizeof
(
char
)))
==
NULL
)
{
FatalError
(
"NXVerifyXkbCompPath: WARNING! malloc failed.
\n
"
);
return
0
;
}
strcpy
(
xkbCompPath
,
path
);
strcat
(
xkbCompPath
,
"/"
);
strcat
(
xkbCompPath
,
"xkbcomp"
);
if
(
stat
(
xkbCompPath
,
&
xkbCompPathStat
)
!=
0
)
{
#ifdef NX_TRANS_TEST
fprintf
(
stderr
,
"NXVerifyXkbCompPath: WARNING! Failed to stat xkbcomp path [%s].
\n
"
,
xkbCompPath
);
#endif
free
(
xkbCompPath
);
return
0
;
}
free
(
xkbCompPath
);
return
1
;
}
/*
* This function returns the directory
* containing the xkbcomp executable.
* The function will first try to locate
* the executable in the hardcoded path
* (the same path as the "base" xkb one)
* and, if the xkbcomp file couldn't be
* found, the function will not include
* an explicit path and will rely on the
* PATH environment to list the directory.
*/
char
*
_NXGetXkbCompPath
(
const
char
*
path
)
{
char
*
xkbCompPath
;
/*
* Check the xkbcomp executable
* directory only once.
*/
if
(
*
_NXXkbCompPath
!=
'\0'
)
{
return
_NXXkbCompPath
;
}
xkbCompPath
=
_NXGetXkbBasePath
(
path
);
if
(
NXVerifyXkbCompPath
(
xkbCompPath
)
==
1
)
{
if
(
strlen
(
xkbCompPath
)
+
1
>
PATH_MAX
)
{
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbCompPath: WARNING! Maximum length of xkbcomp path exceeded.
\n
"
);
#endif
goto
_NXGetXkbCompPathError
;
}
strcpy
(
_NXXkbCompPath
,
xkbCompPath
);
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbCompPath: Using xkbcomp path [%s].
\n
"
,
_NXXkbCompPath
);
#endif
return
_NXXkbCompPath
;
}
xkbCompPath
=
NX_ALT_XKBCOMP_PATH
;
if
(
NXVerifyXkbCompPath
(
xkbCompPath
)
==
1
)
{
if
(
strlen
(
xkbCompPath
)
+
1
>
PATH_MAX
)
{
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbCompPath: WARNING! Maximum length of xkbcomp path exceeded.
\n
"
);
#endif
goto
_NXGetXkbCompPathError
;
}
strcpy
(
_NXXkbCompPath
,
xkbCompPath
);
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbCompPath: Using NX xkbcomp path [%s].
\n
"
,
_NXXkbCompPath
);
#endif
return
_NXXkbCompPath
;
}
_NXGetXkbCompPathError:
if
(
strlen
(
path
)
+
1
>
PATH_MAX
)
{
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbCompPath: WARNING! Maximum length of xkbcomp path exceeded.
\n
"
);
#endif
}
strcpy
(
_NXXkbCompPath
,
path
);
#ifdef TEST
fprintf
(
stderr
,
"_NXGetXkbCompPath: Using default xkbcomp path [%s].
\n
"
,
_NXXkbCompPath
);
#endif
return
_NXXkbCompPath
;
}
#endif
static
void
OutputDirectory
(
char
*
outdir
,
...
...
@@ -547,24 +243,11 @@ char *cmd = NULL,file[PATH_MAX],xkm_output_dir[PATH_MAX],*map,*outFile;
XkbEnsureSafeMapName
(
outFile
);
OutputDirectory
(
xkm_output_dir
,
sizeof
(
xkm_output_dir
));
#ifdef NXAGENT_SERVER
if
(
_NXGetXkbCompPath
(
XkbBaseDirectory
)
!=
NULL
)
{
#else
if
(
XkbBaseDirectory
!=
NULL
)
{
#endif
#ifdef NXAGENT_SERVER
char
*
xkbbasedir
=
_NXGetXkbBasePath
(
XkbBaseDirectory
);
char
*
xkbbindir
=
_NXGetXkbCompPath
(
XkbBinDirectory
);
#else
char
*
xkbbasedir
=
XkbBaseDirectory
;
char
*
xkbbindir
=
XkbBinDirectory
;
#endif
cmd
=
Xprintf
(
"
\"
%s"
PATHSEPARATOR
"xkbcomp
\"
-w %d
\"
-R%s
\"
-xkm %s%s -em1 %s -emp %s -eml %s keymap/%s
\"
%s%s.xkm
\"
"
,
xkbbindir
,
((
xkbDebugFlags
<
2
)
?
1
:
((
xkbDebugFlags
>
10
)
?
10
:
(
int
)
xkbDebugFlags
)),
...
...
@@ -642,12 +325,7 @@ char tmpname[PATH_MAX];
(
void
)
mktemp
(
tmpname
);
#endif
#ifdef NXAGENT_SERVER
if
(
_NXGetXkbCompPath
(
XkbBaseDirectory
)
!=
NULL
)
{
#else
if
(
XkbBaseDirectory
!=
NULL
)
{
#endif
#ifndef WIN32
char
*
xkmfile
=
"-"
;
#else
...
...
@@ -655,13 +333,8 @@ char tmpname[PATH_MAX];
for xkbcomp. xkbcomp does not read from stdin. */
char
*
xkmfile
=
tmpname
;
#endif
#ifdef NXAGENT_SERVER
char
*
xkbbasedir
=
_NXGetXkbBasePath
(
XkbBaseDirectory
);
char
*
xkbbindir
=
_NXGetXkbCompPath
(
XkbBinDirectory
);
#else
char
*
xkbbasedir
=
XkbBaseDirectory
;
char
*
xkbbindir
=
XkbBinDirectory
;
#endif
buf
=
Xprintf
(
"
\"
%s"
PATHSEPARATOR
"xkbcomp
\"
-w %d
\"
-R%s
\"
-xkm
\"
%s
\"
-em1 %s -emp %s -eml %s
\"
%s%s.xkm
\"
"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment