keymap-dump: Print NoAction actions too

The failure mode here is a little irritating:
    - server loads map with ISO_Lock action
    - server dumps keymap to string, including:
      interpret ISO_Lock+AnyOfOrAll(None) {
          action= NoAction();
      };
      as we don't (yet) print ISO_Lock actions
    - client parses keymap from string
    - client dumps keymap to string, including:
      interpret ISO_Lock+AnyOfOrAll(None) {
      };
    - this results in a syntax error

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
dump
Fix multiple errors when merging symbol definitions

We were getting the size calculation wrong, as well as inconsistently
picking a merge strategy.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Symbols: Don't include NoSymbols in the map

Instead of using NoSymbol in the map, we use num_syms == 0 to signify
the non-presence of a symbol.  So instead of adding NoSymbol mappings
to the list regardless, detect them and set num_syms == 0.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Remove fake support for global group range settings

A symbols file may contain a global, non key specific setting for
the group out-of-range handling method (wrap, clamp, redirect). Only
that:

* Its parsed and kept in the SymbolsInfo, but is not otherwise used in
  any way (it's the same in the real xkbcomp).
* It's not used in any of xkeyboard-config files.
* It's not mentioned in the xkb specs (only the per-key ones).
* It doesn't make much sense anyway.

So remove the struct field, and emit an "unsupported, ignored" warning.
We don't increment the error count because of it, just continue (the
radio group warning just below is changed to do the same - there's no
reason to possibly abort the entire thing for it).

Signed-off-by: Ran Benita <ran234@gmail.com>

Conflicts:

	src/xkbcomp/symbols.c
Revert "dump"

(Ahem.)

This reverts commit f43f75fb83e94224000ebc6b0736182546781c5e.
Make xkb_map_get_as_string test more comprehensive

Add a test/dump.data file which contains the result we're expecting from
xkb_map_get_as_string run on a particularly complex set of keymaps, and
assert that the string representations are the same.  This means that
any updates to xkb_map_get_as_string will also need to update the test
data, but should also ensure that we don't have any more parser
regressions.

Compared with diff to the output of setxkbmap + xkbcomp for the same
keymap; seems completely solid.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Fix action= NoAction() printing

Print it explicitly, rather than type=0x00, with all the private data
too.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Work around stupid automake dependency-tracking bug

bison/flex-generated objects, when being run in a VPATH build with
--disable-dependency-tracking (i.e. Gentoo), would fail to be created
because automake didn't bother creating the destination directories
before trying to create the objects.

Fix this by depending on the destination directory stamp, which
according to the automake mailing list, should hopefully remain fairly
stable.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Use $(top_builddir) rather than relative paths

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Avoid duplicating keysyms for merge if possible

If we can merge cleanly (i.e. use the entirety of one entry rather than
having to go level by level), then just reuse the existing symbols array
and skip the entire merge process.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Fix tiny memory leak in dump test

We forgot to free the path we'd allocated with asprintf.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>