aboutsummaryrefslogtreecommitdiff
path: root/debian/patches/0302_nx-X11_xkbbasedir-detection.full.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/0302_nx-X11_xkbbasedir-detection.full.patch')
-rw-r--r--debian/patches/0302_nx-X11_xkbbasedir-detection.full.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/debian/patches/0302_nx-X11_xkbbasedir-detection.full.patch b/debian/patches/0302_nx-X11_xkbbasedir-detection.full.patch
new file mode 100644
index 000000000..dac3d8a08
--- /dev/null
+++ b/debian/patches/0302_nx-X11_xkbbasedir-detection.full.patch
@@ -0,0 +1,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;
+ }