Commit Graph

1331 Commits (e55a0cead1a5ce907de3171366c706280b9b875d)

Author SHA1 Message Date
Ran Benita e55a0cead1 Move src/xkbcomp/scanner-utils.h to src/
As we'll use it for things unrelated to xkbcomp.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 20:57:27 +02:00
Ran Benita 1aabc52235 build: fix configure test for yacc
It only works if 'bison' or 'byacc' are provided, but sometimes byacc
is installed as plain 'yacc'. The check fails for that.

I broke this in bdd8c11, restore Daniel's retrospectively clever check.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 20:50:58 +02:00
Ran Benita 28d5f7708c scanner: sort out scanner logging functions
First, make the rules and xkb scanners/parsers use the same logging
functions instead of rolling their own.

Second, use the gcc ##__VA_ARGS extension instead of dealing with C99
stupidity. I hope all relevant compilers support it.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 20:33:34 +02:00
Ran Benita c4259ff268 rules: always %-expand kccgst values
Previously the early-exit codepath might have left some values
unexpanded, and we'd go looking for e.g "%l%(v)".

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 15:18:22 +02:00
Ran Benita 067c8c25c4 test/rmlvo-to-kccgst: use default RMLVO values in translation
The tool's supposed to display exactly the same results as the library
code.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 13:15:58 +02:00
Ran Benita 2ecc0f8316 context: add xkb_context_sanitize_rule_names()
We want all the default logic in a test, so encapsulate it in this
function, and make all the get_default_* functions static.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 13:15:58 +02:00
Ran Benita c11f05e064 rules: print full path in error messages
There can be multiple include paths. But it's nicer in any case.
This also makes scanner_error actually use log_err instead of log_warn -
oops.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 12:26:40 +02:00
Ran Benita 537564cb10 rules: include the path in failed-to-map error message
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 12:26:40 +02:00
Ran Benita 043eda874d context: fix wrong VARIANT instead of LAYOUT getenv
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 12:26:40 +02:00
Ran Benita 16aab829bb ast: remove unneeded 'ctx' param to XkbFileCreate
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 23:21:19 +02:00
Ran Benita 8be2608a26 x11: don't trust keycode before testing its range
The assert is not very useful access the key just before.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 18:02:11 +02:00
Ran Benita 27a245891b keymap: reduce padding in struct xkb_sym_interpret
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 17:49:30 +02:00
Ran Benita 71a2593162 symbols: steal keys and modmaps when merging if possible
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 17:20:32 +02:00
Ran Benita a7d753e45a compat: steal interps and leds when merging if possible
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 17:20:28 +02:00
Ran Benita 35cab168f7 types: steal types when merging if possible
Like we do everywhere else. Removes some unnecessary allocations and
copying.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 16:49:45 +02:00
Ran Benita 3923aa71c2 doc: move some file comments into txt files in doc/
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 14:09:44 +02:00
Ran Benita e89516e976 state: check wrap_group_into_range() return value
It returns XKB_LAYOUT_INVALID in case num_groups == 0. So we shouldn't
just save it in the state.
Note, though, that this condition is generally impossible.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 14:09:42 +02:00
Ran Benita d53eef0d94 x11: add 0 < ctrls->numGroups <= 4 assertion
This only happens if something is wrong in the server; a valid keymap
cannot be had in any case.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 14:05:59 +02:00
Ran Benita 032f8b67f5 Remove m4/.gitkeep
Now there's a file in there.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 22:44:59 +02:00
Ran Benita 3d56aa3e60 keysym: use safe keysym comparison function
Instead of thinking about signed <-> unsigned an whatnot.
bsearch() is inline in glibc, so gcc optimizes this away anyway.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 17:58:39 +02:00
Ran Benita 68b0309792 scanner: make line and column unsigned
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 17:22:14 +02:00
Ran Benita cf513f70a2 rules: get rid of struct location
Use the scanner token_{line,column} like we do in the other places.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 17:15:37 +02:00
Ran Benita 973b8fd47e api: deprecate XKB_MAP_COMPILE_PLACEHOLDER, and use KEYMAP instead of MAP
The PLACEHOLDER was not meant to be used, but c++ doesn't like passing 0
to enums, so it was used. For this reason we add all the NO_FLAGS items,
so the PLACEHOLDER shouldn't be used anymore.

Second, XKB_MAP is the prefix we used ages ago, KEYMAP is the expected
prefix here. So deprecate that as well.

The old names may still be used through the xkbcommon-compat.h header,
which is included by default (no need to include directly).

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:40:20 +02:00
Ran Benita 8cc9434fd2 x11: make sure not to use compat header
src/keymap.h already defines the necessary header guard, so just reverse
the include order.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:38:18 +02:00
Ran Benita ac42103b0d x11: make some #defines unsigned
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:25:22 +02:00
Ran Benita 8fcb44b8a6 x11: fix truncation of xkb controls mask off the wire
It's uint32_t, not uint16_t, so we were losing flags (not that it
matters in this case).

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:19:47 +02:00
Ran Benita f5465b56a3 x11: make msb_pos return unsigned
It was initially returning -1 for all-zero arguments, but now it returns
0.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:12:09 +02:00
Ran Benita a088c9ba77 keysym: fix types in bin_search
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:03:06 +02:00
Ran Benita 04bacf87ba state: optimize xkb_state_led_update_all()
Before:
    ran@ran:~/src/libxkbcommon$ ./test/bench-key-proc
    ran 20000000 iterations in 6.623018074s

After:
    ran@ran:~/src/libxkbcommon$ ./test/bench-key-proc
    ran 20000000 iterations in 4.762291091s

Not that anyone needs to process millions of keys per second...

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 15:57:22 +02:00
Ran Benita 769b91c580 Use (1u << idx) instead of (1 << idx) where appropriate
It doesn't matter (I think), since the implicit conversion doesn't have
any effect (e.g. sign-extension). But it's better to be aware of the
type.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 15:30:05 +02:00
Ran Benita 50b73ec0e7 Use unsigned int for saving darray_size return value
See: b9b3593cbd
So these should be unsigned int's now.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 15:10:09 +02:00
Ran Benita e2c336cb96 action: fix misleading cast
The type is uint8_t and so is the checked range.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 15:06:28 +02:00
Ran Benita bbd2a9c048 action: fix printing of underflowed value in error message
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 15:05:05 +02:00
Ran Benita 27e2066229 scanner-utils: add some likely/unlikely annotations
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 12:42:17 +02:00
Ran Benita 10643d8aa4 Define likely()/unlikely() macros
It serves as nice "hotspot" annotations, and can also help things, so
why not.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 12:42:16 +02:00
Ran Benita 0e20cfed67 Partially revert "ast: pack the ParseCommon struct"
This reverts commit 1e6e5669c6.

It's probably safe, but let's not take any chances, as I don't have any
esoteric arch to test on. But keep the ATTR in case it's ever useful.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 02:02:32 +02:00
Ran Benita 8aa2202d9d build: add -Wextra warnings
If it gets annoying, we can disable it. But for now it's clean.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 01:51:38 +02:00
Ran Benita 6ea15719d1 ast: use more suitable types in a few ast nodes
The int ones cannot be signed (they come as such from the scanner, and
NEGATE is never applied to them).

The uint32_t one is really an atom, but presumably the type was never
converted to xkb_atom_t.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 01:50:22 +02:00
Ran Benita b9b3593cbd darray: use unsigned int instead of size_t for array size
size_t is too large; if we ever need it, that's the least of our
problems. Besides, when we roll our own (e.g. in keymap.h) it's already
unsigned int. Instead, add some emergency overflow check. So, why?

- It plays nicer with all the other uint32_t's and unsigned int's (no
  extensions, etc.).
- Reduces keymap memory usage by 5% or so as a bonus.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 01:50:22 +02:00
Ran Benita 94e0be0dc7 test/state: fix tautological test
test/state.c:376:5: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:54:53 +02:00
Ran Benita 623b10f8c5 Fix sign-compare warnings
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:54:53 +02:00
Ran Benita 893f01301b symbols: reduce some loop iterators scope
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:19:12 +02:00
Ran Benita 5547a82f2a parser: fix unrecognized keysym handling
Integer may be negative, so also need to test >= 0.
Also, $$ was left uninitialized if the keysym wasn't recognized.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:11:44 +02:00
Ran Benita 5dbd136435 action: change xkb_pointer_button_action::button to uint8_t
In XkbPtrBtnAction it is unsigned char, don't know how it became signed.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:11:42 +02:00
Ran Benita fa87cdb8bd darray: cleanup
We have quite diverged from the upstream file, so let's make it at least
easier to look at. Remove some unused macros and rename some for
consistency.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:10:56 +02:00
Ran Benita 6f2df7df8c ast: make symsMapIndex unsigned
It doesn't need to be signed.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:10:56 +02:00
Ran Benita e9e3993221 action: Use ResolveInteger for PtrBtn.count, not ResolveButton
It's not a button.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-07 18:51:35 +02:00
Ran Benita e0137caceb action: check range of MovePtr X,Y values
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-07 18:48:16 +02:00
Ran Benita b82a0a8650 scanner: avoid strlen in keyword lookup, we know the len
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-07 18:12:29 +02:00
Ran Benita 2abff2a098 state: use the XKB_MOD_MASK constant
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-07 17:29:34 +02:00