[PATCH libxkbcommon 3/4] makekeys: Receive the keysym files as arguments
walter harms
wharms at bfs.de
Sun Feb 26 04:09:16 PST 2012
Am 25.02.2012 23:25, schrieb Ran Benita:
> This integrates part of libX11 commit
> 00175397480b76d32bf82b0c7c94c91a2a95954e
> makekeys: Scan vendor keysyms as well as core
>
> Since we can't really live without vendor keysyms, scan them all in to
> generate ks_tables.h, rather than only doing the core ones, and leaving
> the vendor syms to be manually synchronised with XKeysymDB.
>
> Signed-off-by: Daniel Stone <daniel at fooishbar.org>
> Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>
>
> Signed-off-by: Ran Benita <ran234 at gmail.com>
> ---
> configure.ac | 25 ++++++++--------
> makekeys/Makefile.am | 3 ++
> makekeys/makekeys.c | 78 ++++++++++++++++++++++++++++----------------------
> src/Makefile.am | 4 +--
> 4 files changed, 61 insertions(+), 49 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index e6a8f15..786556c 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -77,19 +77,18 @@ AC_MSG_CHECKING([for X11 includedir])
> includex11dir="`$PKG_CONFIG --variable=includex11dir xproto`"
> AC_MSG_RESULT([$includex11dir])
>
> -# Obtain full path for keysymdef header file
> -AC_MSG_CHECKING([for keysymdef.h])
> -KEYSYMDEF_H="$includex11dir/keysymdef.h"
> -test -f "$KEYSYMDEF_H" || AC_MSG_ERROR([can't locate keysymdef.h in $includex11dir])
> -AC_MSG_RESULT([$KEYSYMDEF_H])
> -AC_SUBST([KEYSYMDEF_H])
> -
> -# Obtain full path for XF86keysym header file
> -AC_MSG_CHECKING([for XF86keysym.h])
> -XF86KEYSYM_H="$includex11dir/XF86keysym.h"
> -test -f "$XF86KEYSYM_H" || AC_MSG_ERROR([can't locate XF86keysym.h in $includex11dir])
> -AC_MSG_RESULT([$XF86KEYSYM_H])
> -AC_SUBST([XF86KEYSYM_H])
> +AC_MSG_CHECKING([keysym definitions])
> +KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11
> +FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h"
> +for i in $FILES; do
> + if test -f "$KEYSYMDEFDIR/$i"; then
> + KEYSYMDEFS="$KEYSYMDEFS $KEYSYMDEFDIR/$i"
> + elif test "x$i" = "xkeysymdef.h"; then
> + AC_MSG_ERROR([Cannot find keysymdef.h])
> + fi
> +done
> +AC_MSG_RESULT([$KEYSYMDEFS])
> +AC_SUBST(KEYSYMDEFS)
>
> # Define a configuration option for the XKB config root
> xkb_base=`$PKG_CONFIG --variable=xkb_base xkeyboard-config`
> diff --git a/makekeys/Makefile.am b/makekeys/Makefile.am
> index 75ed164..a7ef6e0 100644
> --- a/makekeys/Makefile.am
> +++ b/makekeys/Makefile.am
> @@ -2,4 +2,7 @@ AM_CFLAGS = $(X11_CFLAGS) $(CWARNFLAGS)
>
> # need to use build-native compiler
> CC = $(CC_FOR_BUILD)
> +CPPFLAGS = $(CPPFLAGS_FOR_BUILD)
> +CFLAGS = $(CFLAGS_FOR_BUILD)
> +LDFLAGS = $(LDFLAGS_FOR_BUILD)
> noinst_PROGRAMS = makekeys
> diff --git a/makekeys/makekeys.c b/makekeys/makekeys.c
> index fdccaf0..1334e15 100644
> --- a/makekeys/makekeys.c
> +++ b/makekeys/makekeys.c
> @@ -170,9 +170,10 @@ int
> main(int argc, char *argv[])
> {
> int ksnum = 0;
> + FILE *fptr;
> int max_rehash;
> Signature sig;
> - int i, j, k, z;
> + int i, j, k, l, z;
> char *name;
> char c;
> int first;
> @@ -183,45 +184,54 @@ main(int argc, char *argv[])
> char key[128];
> char buf[1024];
>
> + for (l = 1; l < argc; l++) {
> + fptr = fopen(argv[l], "r");
> + if (!fptr) {
> + fprintf(stderr, "couldn't open %s\n", argv[l]);
> + continue;
> + }
>
> - while (fgets(buf, sizeof(buf), stdin)) {
> - int ret;
> + while (fgets(buf, sizeof(buf), fptr)) {
> + int ret;
>
> - /* Manage keysyms from keysymdef.h */
> - ret = get_keysym(buf, key, ksnum);
> - if (!ret) {
> - ret = get_keysym_alias(buf, key, ksnum);
> - if (ret == -1)
> - continue;
> - }
> + /* Manage keysyms from keysymdef.h */
> + ret = get_keysym(buf, key, ksnum);
> + if (!ret) {
> + ret = get_keysym_alias(buf, key, ksnum);
> + if (ret == -1)
> + continue;
> + }
> +
> + /* Manage keysyms from XF86keysym.h */
> + if (!ret)
> + ret = get_xf86_keysym(buf, key, sizeof(key), ksnum);
> + if (!ret) {
> + ret = get_xf86_keysym_alias(buf, key, sizeof(key), ksnum);
> + if (ret < 1)
> + continue;
> + }
>
> - /* Manage keysyms from XF86keysym.h */
> - if (!ret)
> - ret = get_xf86_keysym(buf, key, sizeof(key), ksnum);
> - if (!ret) {
> - ret = get_xf86_keysym_alias(buf, key, sizeof(key), ksnum);
> - if (ret < 1)
> + if (info[ksnum].val > 0x1fffffff) {
> + fprintf(stderr,
> + "ignoring illegal keysym (%s), remove it from .h file!\n",
> + key);
> continue;
> + }
> + name = malloc((unsigned)strlen(key) + 1);
> + if (!name) {
> + fprintf(stderr, "makekeys: out of memory!\n");
> + exit(1);
> + }
> + (void)strcpy(name, key);
> + info[ksnum].name = name;
this looks like:
info[ksnum].name = strdup(key);
re,
wh
> + ksnum++;
> + if (ksnum == KTNUM) {
> + fprintf(stderr, "makekeys: too many keysyms!\n");
> + exit(1);
> + }
> }
>
> - if (info[ksnum].val > 0x1fffffff) {
> - fprintf(stderr,
> - "ignoring illegal keysym (%s), remove it from .h file!\n",
> - key);
> - continue;
> - }
> - name = malloc((unsigned)strlen(key) + 1);
> - if (!name) {
> - fprintf(stderr, "makekeys: out of memory!\n");
> - exit(1);
> - }
> - (void)strcpy(name, key);
> - info[ksnum].name = name;
> - ksnum++;
> - if (ksnum == KTNUM) {
> - fprintf(stderr, "makekeys: too many keysyms!\n");
> - exit(1);
> - }
> + fclose(fptr);
> }
>
> /* Special case NoSymbol. */
> diff --git a/src/Makefile.am b/src/Makefile.am
> index b9a12b9..9df6f81 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -26,5 +26,5 @@ libxkbcommon_la_SOURCES = \
> BUILT_SOURCES = ks_tables.h
> CLEANFILES = $(BUILT_SOURCES)
>
> -ks_tables.h: $(top_builddir)/makekeys/makekeys$(EXEEXT) $(KEYSYMDEF_H) $(XF86KEYSYM_H)
> - $(AM_V_GEN)cat $(KEYSYMDEF_H) $(XF86KEYSYM_H) | $(top_builddir)/makekeys/makekeys$(EXEEXT) > $@
> +ks_tables.h: $(KEYSYMDEFS) $(top_builddir)/makekeys/makekeys$(EXEEXT)
> + $(top_builddir)/makekeys/makekeys $(KEYSYMDEFS) > $@
More information about the xorg-devel
mailing list