From 93b55eeec022007d638c0a3b305765d44d3cd185 Mon Sep 17 00:00:00 2001 From: Daniel Stone Date: Fri, 9 Jul 2010 18:13:13 +0100 Subject: XStringToKeysym: Cope with 0x1234cafe-style input If we get input in the style of 0xdeadbeef, just return that exact keysym. Introduces a dependency on strtoul, which I'm told is OK on all the systems we care about. Signed-off-by: Daniel Stone Backported-to-NX-by: Ulrich Sibiller --- nx-X11/lib/X11/StrKeysym.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'nx-X11/lib/X11') diff --git a/nx-X11/lib/X11/StrKeysym.c b/nx-X11/lib/X11/StrKeysym.c index a05e755e9..21dec924b 100644 --- a/nx-X11/lib/X11/StrKeysym.c +++ b/nx-X11/lib/X11/StrKeysym.c @@ -27,6 +27,7 @@ in this Software without prior written authorization from The Open Group. #ifdef HAVE_CONFIG_H #include #endif +#include #include "Xlibint.h" #include #include @@ -153,6 +154,15 @@ XStringToKeysym(_Xconst char *s) return val | 0x01000000; } + if (strlen(s) > 2 && s[0] == '0' && s[1] == 'x') { + char *tmp = NULL; + val = strtoul(s, &tmp, 16); + if (val == ULONG_MAX || (tmp && *tmp != '\0')) + return NoSymbol; + else + return val; + } + /* Stupid inconsistency between the headers and XKeysymDB: the former has * no separating underscore, while some XF86* syms in the latter did. * As a last ditch effort, try without. */ -- cgit v1.2.3