1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
Description: Test for xkb/rules/base instead of xkb/keymap.dir for setting XkbBaseDir
Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
Abstract:
In recent (as of 2014/06) X.org release, the keymap.dir file
has become obsolete. Let's test for the xkb/rules/base file
instead.
--- a/nx-X11/programs/Xserver/xkb/ddxLoad.c
+++ b/nx-X11/programs/Xserver/xkb/ddxLoad.c
@@ -180,7 +180,7 @@
#define NX_XKB_BASE_DIRECTORY "/usr/lib/X11/xkb"
#define NX_XKB_ALTERNATE_BASE_DIRECTORY "/usr/share/X11/xkb"
-#define NX_KEYMAP_DIR_FILE "keymap.dir"
+#define NX_XKB_RULES_BASE_FILE "rules/base"
#define NX_ALT_XKBCOMP_PATH "/usr/bin"
static char _NXXkbBasePath[PATH_MAX];
@@ -189,43 +189,43 @@
static int NXVerifyXkbBaseDirectory(const char *dirPath)
{
int size;
- char *keymapDirFilePath;
- struct stat keymapDirFileStat;
+ char *rulesBaseFilePath;
+ struct stat rulesBaseFileStat;
/*
- * If keymap.dir file
- * is not present into
- * Xkb Base Directory,
+ * 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_KEYMAP_DIR_FILE) + 1;
+ strlen(NX_XKB_RULES_BASE_FILE) + 1;
- if ((keymapDirFilePath = malloc((size + 1) * sizeof(char))) == NULL)
+ if ((rulesBaseFilePath = malloc((size + 1) * sizeof(char))) == NULL)
{
FatalError("NXVerifyXkbBaseDirectory: malloc failed.\n");
}
- strcpy(keymapDirFilePath, dirPath);
- strcat(keymapDirFilePath, "/");
- strcat(keymapDirFilePath, NX_KEYMAP_DIR_FILE);
+ strcpy(rulesBaseFilePath, dirPath);
+ strcat(rulesBaseFilePath, "/");
+ strcat(rulesBaseFilePath, NX_XKB_RULES_BASE_FILE);
#ifdef TEST
fprintf(stderr, "NXVerifyXkbBaseDirectory: Looking for [%s] file.\n",
- keymapDirFilePath);
+ rulesBaseFilePath);
#endif
- if (stat(keymapDirFilePath, &keymapDirFileStat) != 0)
+ if (stat(rulesBaseFilePath, &rulesBaseFileStat) != 0)
{
#ifdef TEST
fprintf(stderr, "NXVerifyXkbBaseDirectory: Can't find the keymap.dir file [%s].\n",
- keymapDirFilePath);
+ rulesBaseFilePath);
#endif
- free(keymapDirFilePath);
+ free(rulesBaseFilePath);
return 0;
}
@@ -235,7 +235,7 @@
dirPath);
#endif
- free(keymapDirFilePath);
+ free(rulesBaseFilePath);
return 1;
}
|