diff options
author | Ran Benita <ran234@gmail.com> | 2013-08-02 10:19:01 +0300 |
---|---|---|
committer | Ran Benita <ran234@gmail.com> | 2014-01-13 17:21:56 +0200 |
commit | 4884a8e636cede13c7598fe49d1fc35d22f78f14 (patch) | |
tree | 00be47ba74f76434279ba9712eefbaefccbd63c3 /src/keymap.c | |
parent | d63e0ab838ac0911f955c7b34e85aa3d8f033d19 (diff) | |
download | xorg-lib-libxkbcommon-4884a8e636cede13c7598fe49d1fc35d22f78f14.tar.gz |
keymap: move XkbEscapeMapName() to keymap.c.
So we can use it outside src/xkbcomp; it is not really specific to it.
Signed-off-by: Ran Benita <ran234@gmail.com>
Diffstat (limited to 'src/keymap.c')
-rw-r--r-- | src/keymap.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/keymap.c b/src/keymap.c index 96d250c..6f644ce 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -574,3 +574,27 @@ XkbResolveKeyAlias(struct xkb_keymap *keymap, xkb_atom_t name) return XKB_ATOM_NONE; } + +void +XkbEscapeMapName(char *name) +{ + /* + * All latin-1 alphanumerics, plus parens, slash, minus, underscore and + * wildcards. + */ + static const unsigned char legal[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xff, 0x83, + 0xfe, 0xff, 0xff, 0x87, 0xfe, 0xff, 0xff, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0xff + }; + + if (!name) + return; + + while (*name) { + if (!(legal[*name / 8] & (1 << (*name % 8)))) + *name = '_'; + name++; + } +} |