Bug#585006: xserver-xephyr: Cannot specify my complete keyboard layout options -- options which must include ', ' cannot be parsed
Package: xserver-xorg
Version: 1:7.7-2
Severity: important
Tags: upstream patch
In short, the comma character is used to split options up (as opposed
to, say, letting bash do it because presumabely bash doesn't have a
well-known set of quoting and escaping rules used for specifying
individual startup options to executables). In lieu of doing it
properly, the included patch allows options (-keybd, -mouse, etc) to
include commas by prepending a backslash.
--- xorg-server-1.7.7.orig/hw/kdrive/src/kdrive.c
+++ xorg-server-1.7.7/hw/kdrive/src/kdrive.c
@@ -350,14 +350,23 @@
char *
KdParseFindNext (char *cur, char *delim, char *save, char *last)
{
- while (*cur && !strchr (delim, *cur))
+ char prev = '\0';
+
+ while (cur && *cur && *cur != ',' || (prev && prev == '\\'))
{
- *save++ = *cur++;
+ if (*cur == '\\' && (prev && prev != '\\'))
+ {
+ prev = *cur;
+ *cur++;
+ } else {
+ prev = *cur;
+ *save++ = *cur++;
+ }
}
*save = 0;
*last = *cur;
if (*cur)
- cur++;
+ cur++;
return cur;
}
Reply to: