introduced in the 2007-02-03 change. Bruno Haible reported that
the 2007-02-07 change would be dangerous in Turkish if we add a
language whose name contains "i", since "i" is not lowercase "I"
in Turkish.
* bootstrap.conf (gnulib_modules): Add c-strcase. Remove strcase.
* lib/.cvsignore: Add c-ctype.c, c-ctype.h, c-strcase.h,
c-strcasecomp.c, c-strncasecmp.c. Remove strcasecmp.c, strncasecmp.c.
* m4/.cvsignore: Remove strcase.m4.
* src/getargs.c: Revert 2007-02-07 change, as follows.
Include c-strcase.h.
(language_argmatch): Use c_strcasecmp rather than strcasecmp.
now that gnulib strcase has been fixed.
* bootstrap.conf (gnulib_modules): Remove c-strcase. Add strcase.
* lib/.cvsignore: Remove c-ctype.c, c-ctype.h, c-strcase.h,
c-strcasecomp.c, c-strncasecmp.c. Add strcasecmp.c, strncasecmp.c
* m4/.cvsignore: Add strcase.m4.
* src/getargs.c: Revert 2007-02-03 change, as follows.
Don't include c-strcase.h.
(language_argmatch): Use strcasecmp rather than c_strcasecmp.
strcasecmp has "unspecified behavior" outside the POSIX locale,
but it works fine in practice if at least one argument is ASCII,
as is the case in Bison.
the right spot for these files?
* bootstrap.conf (gnulib_modules): Add c-strcase.
* lib/.cvsignore: Add c-ctype.c c-ctype.h, c-strcasecomp.c,
c-strncasecmp.c.
* src/getargs.c: Include c-strcase.h.
(language_argmatch): Use c_strcasecmp rather than strcasecmp,
to avoid unspecified behavior.
instead of passing a yylexp argument to yypull_parse, and don't
generate yypull_parse or yyparse unless %push-pull-parser is declared.
Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-12/msg00163.html>.
* data/bison.m4 (b4_pull_if): New.
* data/c.m4 (b4_identification): Define YYPULL similar to YYPUSH.
* data/push.c: Improve M4 quoting a little.
(b4_generate_macro_args, b4_parenthesize): Remove.
(yyparse): If there's a b4_prefix, #define this to b4_prefix[parse]
any time a pull parser is requested.
Don't #define this as a wrapper around yypull_parse. Instead, when
both push and pull are requested, make it a function that does that
same thing.
(yypull_parse): If there's a b4_prefix, #define this to
b4_prefix[pull_parse] when both push and pull are requested.
Don't define this as a function unless both push and pull are
requested.
Remove the yylexp argument and hard-code yylex invocation instead.
* etc/bench.pl.in (bench_grammar): Use %push-pull-parser instead of
%push-parser.
* src/getargs.c (pull_parser): New global initialized to true.
* getargs.h (pull_parser): extern it.
* src/output.c (prepare): Insert pull_flag muscle.
* src/parse-gram.y (PERCENT_PUSH_PULL_PARSER): New token.
(prologue_declaration): Set both push_parser and pull_parser = true for
%push-pull-parser. Set push_parser = true and pull_parser = false for
%push-parser.
* src/scan-gram.l: Don't accept %push_parser as an alternative to
%push-parser since there's no backward-compatibility concern here.
Scan %push-pull-parser.
* tests/calc.at (Simple LALR(1) Calculator): Use %push-pull-parser
instead of %push-parser.
* tests/headers.at (export YYLTYPE): Make yylex static, and don't
prototype it in the module that calls yyparse.
* tests/input.at (Torturing the Scanner): Likewise.
* tests/local.at (AT_PUSH_IF): Check for %push-pull-parser as well.
Problem reported by Joel E. Denny.
2006-10-14 Jim Meyering <jim@meyering.net>
(Sync from coreutils.)
Work also when the working directory (with e.g. coreutils sources)
is version controlled with git, rather than CVS.
* bootstrap (CVS_only_file): Test for the existence of README-cvs,
rather than CVS.
In messages and comments, say e.g., "checked-out sources",
rather than "CVS sources".
(version_controlled_file): New function. Work for git as well as
for CVS. Don't use grep's -q option.
(slurp): Call it here, in place of CVS-specific code.
* bootstrap: Sync from coreutils, except add support for gnulib_files.
* bootstrap.conf: New file.
(gnulib_modules): Add configmake, inttypes, unistd.
(XGETTEXT_OPTIONS): Add complain, complain_at,
fatal, fatal_at, warn, warn_at, unexpected_end.
* configure.ac (AC_CONFIG_HEADERS): config.h is now in lib, not here.
(gl_USE_SYSTEM_EXTENSIONS): Remove; gl_EARLY now does this.
(gl_EARLY): Add.
(AM_STDBOOL_H): Remove; gl_INIT now dows this.
(gl_INIT): Add
(GNULIB_AUTOCONF_SNIPPET): Remove.
(AM_GNU_GETTEXT): Add; require formatstring macros since that's
the pickiest.
* lib/.cvsignore: Add inttypes_.h.
* lib/Makefile.am: Include gnulib.mk first so we can append to it.
(AM_CFLAGS): Add WERROR_CFLAGS, to be more like coreutils.
(BUILT_SOURCES, EXTRA_DIST, MOSTLYCLEANFILES): Remove
no-longer-necessary initializations.
(lib_SOURCES): Remove, replacing by libbison_a_SOURCES.
* lib/subpipe.c: Include <unistd.h> unconditionally, now that we
use the unistd module.
* src/system.h: Likewise.
* m4/.cvsignore: Remove *_gl.m4, gnulib.m4, inttypes_h.m4, uintmax_t.m4,
ulonglong.m4. Add gettext.m4, gnulib-cache.m4, gnulib-comp.m4,
gnulib-tool.m4, inttypes-h.m4, inttypes-pri.m4, inttypes.m4.
* src/Makefile.am (DEFS): Remove, since configmake does this for us.
(AM_CPPFLAGS): Remove -I../lib, since Automake does that for us.
* src/system.h: Include inttypes.h unconditionally, now that we
use the inttypes module. Don't bother to include stdint.h, since
inttypes.h now does that for us.
(LOCALEDIR): Remove, now that we use the configmake module.
* src/getargs.c: Include configmake.h.
* src/main.c: Likewise.
* src/output.c: Likewise.
* tests/atlocal.in (CPPFLAGS): Include from $abs_top_builddir/lib,
not from $abs_top_builddir, since config.h moved.
* bootstrap (gnulib-modules): Remove hard-locale, stdio-safer.
Add fopen-safer.
(gnulib_files): Add m4/warning.m4. Don't worry about files
overwritten by autopoint.
Replace gt_INTL_SUBDIR_CORE with an empty body in m4/gettext_gl.m4.
Suppress "id", "ms", "tr" translations for now, since gettext 0.15
rejects them.
Don't use autoreconf; instead, invoke autopoint etc. by hand,
so that we can remove the intl files at a better time.
(intl_files_to_remove): Remove aclocal.m4, since it gets
rebuilt anyway. Remove m4/inttypes_h.m4, m4/inttypes.m4,
m4/isc-posix.m4, m4/lib-ld.m4, m4/lib-prefix.m4, m4/po.m4,
m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4.
Add m4/inttypes-h.m4, m4/lock.m4, m4/visibility.m4.
Remove datarootdir hack; no longer needed.
* configure.ac: Use gl_WARNING_CFLAGS rather than BISON_WARNING.
(AM_GNU_GETTEXT_VERSION): Bump from 0.12 to 0.15.
* lib/.cvsignore: Remove hard-locale.c, hard-locale.h, strdup.c,
strdup.h.
* m4/.cvsignore: Remove hard-locale.m4, strdup.m4.
* m4/warning.m4: Remove from CVS, since we now use gnulib's version.
* bootstrap (gnulib_modules): Add stdint.
Remove special case for m4/onceonly_2_57.m4, since gnulib-tool
no longer copies it.
(intl_files_to_remove): Remove m4/longlong.m4 and m4/wchar_t.m4,
since stdint needs the former and wcwidth (which is now required
by mbswidth) needs the latter.
Append 'datarootdir = @datarootdir@' to po/Makefile.in.in, to
work around a compatibility glitch between gettext 0.14.6 and
Autoconf 2.60.
* configure.ac (AC_PREREQ): Require Autoconf 2.60.
Do not check for uintptr_t, since new stdint module does the right
thing.
* lib/.cvsignore: Remove alloca.c, alloca.h, alloca_.h.
Add stdint.h, stdint_.h, wcwidth.h.
* m4/.cvsignore: Remove alloca.m4, onceonly.m4.
Add absolute-header.m4, double-slash-root.m4, longlong.m4,
stdint.m4, wchar_t.m4, wcwidth.m4.
* src/files.c: Include <dirname.h> and <stdio-safer.h> in the
usual order for ../lib/*.h files.
(file_name_split): Use last_component, not base_name, to adjust
to gnulib changes.
* src/parse-gram.h: Include <strverscmp.h> in the usual order
for ../lib/*.h files.
(YYTYPE_INT16, YYTYPE_INT8, YYTYPE_UINT16, YYTYPE_UINT8):
Define unconditionally, since we now assume the stdint module.
* src/scan-skel.l: Include <dirname.h>.
(BASE_QPUTS): Use last_component, not base_name.
* src/system.h: Include <unlocked-io.h> in the usual order
for ../lib/*.h files. Include <stdint.h> unconditionally,
since we now use the stdint module.
(uintptr_t): Declare if UINTPTR_MAX is not defined, not
HAVE_UINTPTR_T, since we now use the stdint module.
(base_name): Remove decl, since files now include <dirname.h>
to get the decl.
* lib/abitset.c (abitset_resize): Rewrite to avoid warnings from
compilers that don't understand that abort () does not return.
* src/state.c (transitions_to): Likewise.
* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check
that '#include <cstdlib>' works.
* src/system.h (INT8_MIN, INT16_MIN, INT32_MIN, INT8_MAX):
(INT16_MAX, UINT8_MAX, INT32_MAX, UINT16_MAX, UINT32_MAX):
#undef if ! defined __STDC_VERSION__ || __STDC_VERSION__ < 199901,
for the benefit of some pre-C99 compilers.
* configure.ac: Don't use -Wnested-externs, as it's incompatible
with the new verify.h implementation.
* data/c.m4 (b4_yy_symbol_print_generate): YYUSE (yyoutput).
* data/glr.c (YYUSE): Depend on __GNUC__ as well.
* data/yacc.c (YYUSE): Likewise.
* data/lalr1.cc (yysyntax_error_): YYUSE (yystate).
* lib/subpipe.c (end_of_output_subpipe): The args are unused.
* src/parse-gram.y (declaration): Don't pass a string constant
to a function that expects char *, since GCC might complain
about the constant value.
* src/reader.c (symbol_typed_p): Add parens to pacify GCC.
* tests/cxx-type.at (_AT_TEST_GLR_CXXTYPES): #undef yylloc and yylval
before #defining them.
* tests/glr-regression.at
(Incorrectly initialized location for empty right-hand side in GLR):
In yyerror, use the msg arg.
(Corrupted semantic options if user action cuts parse):
(Incorrect lookahead during deterministic GLR):
(Incorrect lookahead during nondeterministic GLR):
Don't name a local var 'index'; it shadows string.h's 'index'.
GNU/Linux and Solaris that support unlocked I/O. The basic idea
is to use the gnlib unlocked-io module, and to prefer putc and
puts to printf when either will work (since the latter doesn't
come in an unlocked flavor).
* bootstrap (gnulib_modules): Add unlocked-io.
* data/c.m4 (yysymprint): Prefer puts and putc to printf.
* data/glr.c (YYFPUTC, YYFPUTS, YYDPUTS): New macros.
Prefer them to YYFPRINTF and YYDPRINTF if either will do,
and similarly for puts and putc and printf.
* data/yacc.c: Likewise.
* lib/bitset.c (bitset_print): Likewise.
* lib/bitset.h [USE_UNLOCKED_IO]: Include unlocked-io.h.
* lib/bitsetv.c (bitsetv_dump, debug-bitsetv): Prefer putc and puts
to printf.
* lib/lbitset.c (debug_lbitset): Likewise.
* src/closure.c (print_firsts, print_fderives): Likewise.
* src/gram.c (grammar_dump): Likewise.
* src/lalr.c (look_ahead_tokens_print): Likewise.
* src/output.c (escaped_output): Likewise.
(user_actions_output): Coalesce two printfs.
* src/parse-gram.h (%printer): Prefer putc and puts to printf.
* src/reduce.c (reduce_print): Likewise.
* src/state.c (state_rule_look_ahead_tokens_print): Likewise.
* src/system.h: Include unlocked-io.h rathe than stdio.h.
* lib/.cvsignore: Add verify.h.
* src/getargs.c: Use ARGMATCH_VERIFY rather than verify.
* src/system.h (verify): Remove.
Include verify.h instead.
* src/tables.c (tables_generate): Use new API for 'verify'.
* data/glr.c (ATTRIBUTE_UNUSED): Remove, since it infringes on
the user's name space. All uses changed to __attribute__
((__unused__)).
(yyFail, yyMemoryExhausted, yyreportAmbiguity):
Add __attribute__ ((__noreturn__)).
* etc/clcommit: Remove. We weren't using it, and it failed
"make maintainer-distcheck".
* Makefile.maint: Merge from coreutils.
(CVS_LIST, CVS_LIST_EXCEPT): New macros.
(syntax-check-rules): Change list of rules as described below.
(sc_cast_of_alloca_return_value, sc_dd_max_sym_length):
(sc_file_system, sc_obsolete_symbols, sc_prohibit_atoi_atof):
(sc_prohibit_jm_in_m4, sc_root_tests, sc_tight_scope):
(sc_trailing_space): New rules.
(sc_xalloc_h_in_src): Remove.
(sc_cast_of_argument_to_free, sc_cast_of_x_alloc_return_value):
(sc_space_tab, sc_error_exit_success, sc_changelog):
(sc_system_h_headers, sc_sun_os_names, sc_unmarked_diagnostics):
(makefile-check, po-check, author_mark_check):
(makefile_path_separator_check, copyright-check):
Use grep -n, to make it easier to find violations.
Use CVS_LIST and CVS_LIST_EXCEPT.
(header_regexp, h_re): Remove.
(dd_c): New macro.
(sc_dd_max_sym_length, .re-list, news-date-check): New rules.
(my-distcheck): Use more-modern GCC flags.
(signatures, %.asc): Remove.
(rel-files, announcement): Remove signatures.
Restore old updating code, even though we don't use it, so
that we're the same as coreutils.
(alpha, beta, major): Depend on news-date-check.
Make the upload commands.
* data/c.m4, data/lalr1.cc, data/yacc.c: Normalize white space.
* lib/abitset.h, lib/bbitset.h, lib/bitset.h: Likewise.
* lib/bitset_stats.c, lib/ebitset.h, lib/lbitset.c: Likewise.
* lib/libitset.h, lib/timevar.c, lib/vbitset.h: Likewise.
* src/Makefile.am, src/gram.c, src/muscle_tab.h: Likewise.
* src/parse-gram.y, src/system.h, src/tables.c, src/vcg.c: Likewise.
* src/vcg_defaults.h, tests/cxx-type.at, tests/existing.at: Likewise.
* tests/sets.at: Likewise.
* data/m4sugar/m4sugar.m4: Sync from Autoconf, except that
we comment out the Autoconf version number.
* doc/bison.texinfo (Calc++ Scanner): Don't use atoi, as
it's error-prone and "make maintainer-distcheck" rejects it.
* lib/subpipe.c: Include <fcntl.h> without checking for HAVE_FCNTL_H.
Indent calls to "error" to pacify "make maintainer-distcheck",
when the calls are not intended to be translated.
* m4/subpipe.m4 (BISON_PREREQ_SUBPIPE): Don't check for fcntl.h.
* src/Makefile.am (DEFS): Use +=, to pacify
"make maintainer-distcheck".
(bison_SOURCES): Add scan-skel.h.
(sc_tight_scope): New rule, from coreutils.
* src/files.c (src_extension, header_extension):
Now static, not extern.
* src/getargs.c (short_options): Likewise.
* src/muscle_tab.c (muscle_table): Likewise.
* src/parse-gram.y (current_class, current_type, current_prec):
Likewise.
* src/reader.c (grammar_end, previous_rule_end): Likewise.
* src/getargs.h: Redo comments to pacify "make maintainer-distcheck".
* src/main.c (main): Cast bindtextdomain and textdomain calls to
void, to avoid warning when NLS is disabled.
* src/output.c: Include scan-skel.h.
(scan_skel): Remove decl, since scan-skel.h does this.
(output_skeleton):
Indent calls to "error" to pacify "make maintainer-distcheck".
* src/print_graph.c: Don't include <obstack.h>, as system.h does this.
* src/reader.h (gram_end, gram_lineno): New decls to pacify
"make maintainer-distcheck".
* src/scan-skel.l (skel_lex, skel_get_lineno, skel_get_in):
(skel_get_out, skel_get_leng, skel_get_text, skel_set_lineno):
(skel_set_in, skel_set_out, skel_get_debug, skel_set_debug):
(skel_lex_destroy, scan_skel): Move these decls to...
* src/scan-skel.h: New file.
* src/uniqstr.c (uniqstr_assert):
Indent calls to "error" to pacify "make maintainer-distcheck".
* tests/Makefile.am ($(srcdir)/package.m4): Use $(VAR),
not @VAR@.
* tests/torture.at: Revamp to avoid misuse of atoi that
"make maintainer-distcheck" complained about.
* lib/bitset.c (bitset_print): Don't assume size_t can be printed
with %d format.
* lib/ebitset.c (min, max): Undef before defining.
* lib/vbitset.c (min, max): Likewise.
* lib/subpipe.c (create_subpipe): Save local variables in case
vfork clobbers them.
* tests/synclines.at (AT_SYNCLINES_COMPILE): Add support for the
error message syntax used by gcc-4.0.
Remove m4/glibc2.m4 (introduced by latest gnulib, but
we don't need it).
* lib/.cvsignore: Add dup-safer.c, fd-safer.c,
fopen-safer.c, stdio-safer.h, unistd-safer.h.
* lib/subpipe.c: Include "unistd-safer.h".
(create_subpipe): Make sure all the newly-created
file descriptors are > 2, so that diagnostics don't
get sent down them (which might cause Bison to hang, in theory).
* m4/.cvsignore: Add stdio-safer.m4, unistd-safer.m4.
* src/files.c (xfopen): Use fopen_safer, not fopen.