Paul Eggert wrote: > Good idea, thanks. Two minor points: > > > if test -n "$BISON_LOCALEDIR"; then > > USER_LINGUAS="${LINGUAS-%UNSET%}" > > if test -n "$USER_LINGUAS"; then > > What is the significance of the %UNSET% here? I.e., why is an unset > LINGUAS treated as nonempty? Maybe a comment would help?
OK, I'm adding a comment. > > if test -n "$YACC"; then > > case "$YACC" in > > *bison*) > > if ($YACC --print-localedir) >/dev/null 2>&1; then > > This doesn't look quite right, since "yacc" is an alias for "bison" on > some implementations, so "yacc --print-localedir" will work. For > example, I've installed Bison 2.3 in my home directory, so: > > $ yacc -print-localedir > /home/eggert/opt/Linux-i686/bison-2.3/share/locale I didn't handle this case, fearing that a non-Bison yacc would create undesired files or read from standard input or things like that. But since you think it's safe, I'm changing it. > How about something like the following code instead? > It's a bit shorter and easier for me to read ... whereas I need extra comments in order to understand the intent of such code. I did this change, and installed it into gnulib. Bruno diff -u -r1.1 bison-i18n.m4 --- bison-i18n.m4 2 Aug 2006 13:33:14 -0000 1.1 +++ bison-i18n.m4 18 Aug 2006 19:30:43 -0000 @@ -1,5 +1,5 @@ -# bison-i18n.m4 serial 1 (bison-2.1) -dnl Copyright (C) 2005 Free Software Foundation, Inc. +# bison-i18n.m4 serial 2 +dnl Copyright (C) 2005-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -19,38 +19,27 @@ exit 1 fi BISON_LOCALEDIR= + BISON_USE_NLS=no if test "$USE_NLS" = yes; then + dnl Determine bison's localedir. dnl AC_PROG_YACC sets the YACC variable; other macros set the BISON variable. - if test -n "$YACC"; then - case "$YACC" in - *bison*) - if ($YACC --print-localedir) >/dev/null 2>&1; then - BISON_LOCALEDIR=`$YACC --print-localedir` - fi - ;; - esac - else - if test -n "$BISON"; then - if test "$BISON" != ":"; then - if ($BISON --print-localedir) >/dev/null 2>&1; then - BISON_LOCALEDIR=`$BISON --print-localedir` - fi - fi - fi + dnl But even is YACC is called "yacc", it may be a script that invokes bison + dnl and accepts the --print-localedir option. + dnl YACC's default value is empty; BISON's default value is :. + if (${YACC-${BISON-:}} --print-localedir) >/dev/null 2>&1; then + BISON_LOCALEDIR=`${YACC-${BISON-:}} --print-localedir` fi AC_SUBST([BISON_LOCALEDIR]) if test -n "$BISON_LOCALEDIR"; then + dnl There is no need to enable internationalization if the user doesn't + dnl want message catalogs. So look at the language/locale names for + dnl which the user wants message catalogs. This is $LINGUAS. If unset + dnl or empty, he wants all of them. USER_LINGUAS="${LINGUAS-%UNSET%}" if test -n "$USER_LINGUAS"; then BISON_USE_NLS=yes - else - BISON_USE_NLS=no fi - else - BISON_USE_NLS=no fi - else - BISON_USE_NLS=no fi if test $BISON_USE_NLS = yes; then AC_DEFINE([YYENABLE_NLS], 1,