Skip to content
Snippets Groups Projects
  1. Jun 11, 2013
  2. Jun 03, 2013
  3. May 09, 2013
  4. Apr 01, 2013
    • Ran Benita's avatar
      Replace flex scanner with a hand-written one · a392d268
      Ran Benita authored and Daniel Stone's avatar Daniel Stone committed
      
      The scanner is very similar in structure to the one in xkbcomp/rules.c.
      It avoids copying and has nicer error reporting.
      
      It uses gperf to generate a hashtable for the keywords, which gives a
      nice speed boost (compared to the naive strcasecmp method at least). But
      since there's hardly a reason to regenerate it every time and require
      people to install gperf, the output (keywords.c) is added here as well.
      
      Here are some stats from test/rulescomp:
      
      Before:
      compiled 1000 keymaps in 4.052939625s
      ==22063==   total heap usage: 101,101 allocs, 101,101 frees, 11,840,834 bytes allocated
      
      After:
      compiled 1000 keymaps in 3.519665434s
      ==26505==   total heap usage: 99,945 allocs, 99,945 frees, 7,033,608 bytes allocated
      
      Signed-off-by: default avatarRan Benita <ran234@gmail.com>
      a392d268
    • Ran Benita's avatar
      utils: add {un,}map_file to read an entire file · e4bceec8
      Ran Benita authored and Daniel Stone's avatar Daniel Stone committed
      
      This wraps the current mmap call and adds a fallback implementation for
      systems which do not have mmap (e.g. mingw).
      
      Signed-off-by: default avatarRan Benita <ran234@gmail.com>
      e4bceec8
    • Ran Benita's avatar
      Add scanner-utils.h for common scanner functions · 99f6e6fc
      Ran Benita authored and Daniel Stone's avatar Daniel Stone committed
      
      We want to share the same functions for another scanner.
      
      Signed-off-by: default avatarRan Benita <ran234@gmail.com>
      99f6e6fc
    • Daniel Stone's avatar
    • David Herrmann's avatar
      keymap: add xkb_keymap_new_from_buffer() · 36f55c49
      David Herrmann authored and Daniel Stone's avatar Daniel Stone committed
      
      The current API doesn't allow the caller to create keymaps from mmap()'ed
      files. The problem is, xkb_keymap_new_from_string() requires a terminating
      0 byte. However, there is no way to guarantee that when using mmap() so a
      user currently has to copy the whole file just to get the terminating zero
      byte (assuming they cannot use xkb_keymap_new_from_file()).
      
      This adds a new entry xkb_keymap_new_from_buffer() which takes a memory
      location and the buffer size in bytes.
      
      Internally, we depend on yy_scan_{string,byte}() helpers. According to
      flex documentation these already copy the input string because they are
      wrappers around yy_scan_buffer().
      yy_scan_buffer() on the other hand has some insane requirements. The
      buffer must be writeable and the last two bytes must be ASCII-NUL. But the
      buffer may contain other 0 bytes just fine.
      
      Because we don't want these constraints in our public API,
      xkb_keymap_new_from_buffer() needs to create a copy of the input memory.
      But it then calls yy_scan_buffer() directly. Hence, we have the same
      number of buffer-copies as with *_from_string() but without the
      terminating 0 requirement.
      The explicit yy_scan_buffer() call is preferred over yy_scan_byte() so the
      buffer-copy operation is not hidden somewhere in flex.
      
      Maybe some day we no longer depend on flex and can have a zero-copy API. A
      user could mmap() a file and it would get parsed right from this buffer.
      But until then, we shouldn't expose this limitation in the API but instead
      provide an API that some day can work with zero-copy.
      
      Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
      
      [ran: rebased on top of my branch]
      Conflicts:
      	Makefile.am
      	src/xkbcomp/xkbcomp.c
      36f55c49
    • Ran Benita's avatar
      xkbcomp/keymap: silence a gcc warning · 094f1dc2
      Ran Benita authored and Daniel Stone's avatar Daniel Stone committed
      
      src/xkbcomp/keymap.c:127:12: error: 'found' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      
      Not really, but why not.
      
      Signed-off-by: default avatarRan Benita <ran234@gmail.com>
      094f1dc2
    • Daniel Stone's avatar
      Add key-sequence checking to rulescomp · 38654f5e
      Daniel Stone authored
      
      Make sure we're actually getting the keymaps we're hoping to
      compile.
      
      Signed-off-by: Daniel Stone's avatarDaniel Stone <daniel@fooishbar.org>
      38654f5e
  5. Mar 19, 2013
  6. Mar 18, 2013
Loading