[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