X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/66075dcfc8c50bec9218811020571cb20e997345..9bfe901c33190b9726bddabf8f192ad0c3a25500:/ChangeLog diff --git a/ChangeLog b/ChangeLog index 52e9b43a..cd1080aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1543 @@ +2001-11-19 Akim Demaille + + * src/getargs.c (statistics_flag): Replace with... + (trace_flag): New. + (longopts): Accept --trace instead of --statistics. + * src/getargs.h, src/options.c: Adjust. + * src/LR0.c, src/closure.c, src/derives.c, src/nullable.c, + * src/reduce.c: Use trace_flags instead of the CPP conditional TRACE. + +2001-11-19 Akim Demaille + + * src/LR0.c (new_itemsets, get_state): Use more arrays and less + pointers to clarify the code. + (save_reductions, save_shifts): Factor common parts of alternatives. + +2001-11-19 Akim Demaille + + * src/LR0.c (new_state, get_state): Complete TRACE code. + * src/closure.c: Include `reader.h' to get `tags', needed by the + trace code. + Rename the conditional DEBUG as TRACE. + Output consistently TRACEs to stderr, not stdout. + * src/derives.c: Likewise. + * src/reduce.c: (inaccessable_symbols): Using if is better style + than goto. + Use `#if TRACE' instead of `#if 0' for tracing code. + +2001-11-19 Akim Demaille + + * src/system.h (LIST_FREE, shortcpy): New. + * src/LR0.c: Use them. + * src/output.c (free_itemsets, free_reductions, free_shifts): + Remove, replaced by LIST_FREE. + + +2001-11-19 Akim Demaille + + * src/state.h (CORE_ALLOC, SHIFTS_ALLOC, ERRS_ALLOC) + (REDUCTIONS_ALLOC): New. + * src/LR0.c, src/conflicts.c: Use them to de-obfuscate memory + allocation. + + +2001-11-19 Akim Demaille + + * src/LR0.c (new_state): Complete trace code. + * src/nullable.c (set_nullable): Don't translate traces. + + +2001-11-19 Akim Demaille + + * src/print_graph.c (print_core): Better locality of variables. + * src/print.c (print_core): Likewise. + +2001-11-19 Akim Demaille + + * src/vcg.c: You do the output, so you are responsible of the + handling of VCG syntax, in particular: use quotearg. + * src/print_graph.c: Don't. + (print_actions): Don't output the actions as part of the nodes, + since that's the job of the edges. + (print_state): Don't output by hand: fill the node description, + and ask for its output. + +2001-11-19 Akim Demaille + + * src/bison.simple (yyparse): When reporting verbosely an error, + no longer issue additional quotes around token names. + * tests/calc.at: Adjust. + +2001-11-19 Akim Demaille + + * src/symtab.h, src/symtab.c: `line' is a new member of `bucket'. + * src/reader.c (record_rule_lines, rline, rline_allocated): Remove. + * src/output.c: Adjust. + + +2001-11-19 Akim Demaille + + * src/gram.h (rprec, rprecsym, rassoc): Remove, now part of... + (rule_t): this. + * src/conflicts.c, src/reader.c, src/reduce.c: Adjust. + +2001-11-19 Akim Demaille + + * src/gram.h (rule_t): New. + (rule_table): New. + (rrhs, rlhs): Remove, part of state_t. + * src/print_graph.c, src/closure.c, src/conflicts.c, src/derives.c, + * src/lalr.c, src/nullable.c, src/output.c, src/print.c, + * src/reader.c, src/reduce.c: Adjust. + + +2001-11-19 Akim Demaille + + * src/reader.c (symbols_output): New, extracted from... + (packsymbols): Here. + (reader): Call it. + +2001-11-19 Akim Demaille + + * src/lalr.c (set_maxrhs, maxrhs): Remove, replaced with... + (maxrhs): this new function. + +2001-11-19 Akim Demaille + + * src/lalr.c (F): New macro to access to the variable F. + Adjust. + +2001-11-19 Akim Demaille + + * src/lalr.h (LA): New macro to access to the variable LA. + * src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c: + * src/lalr.c: Adjust. + +2001-11-19 Akim Demaille + + * src/lalr.c (initialize_LA): Only initialize LA. Let... + (set_state_table): handle the `lookaheads' members. + + +2001-11-19 Akim Demaille + + * src/lalr.h (lookaheads): Removed array, which contents is now + member of... + (state_t): this structure. + * src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c: + Adjust. + +2001-11-19 Akim Demaille + + * src/lalr.h (consistent): Removed array, which contents is now + member of... + (state_t): this structure. + * src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c: + Adjust. + +2001-11-19 Akim Demaille + + * src/lalr.h (reduction_table, shift_table): Removed arrays, which + contents is now members of... + (state_t): this structure. + * src/output.c, src/lalr.c, src/print_graph.c, src/conflicts.c: + Adjust. + + +2001-11-19 Akim Demaille + + * src/lalr.h (state_t): New. + (state_table): Be a state_t * instead of a core **. + (accessing_symbol): Remove, part of state_t. + * src/lalr.c: Adjust. + (set_accessing_symbol): Merge into... + (set_state_table): this. + * src/print_graph.c, src/conflicts.c: Adjust. + +2001-11-14 Akim Demaille + + * tests/calc.at, tests/output.at, tests/regression.at, + * tests/testsuite.at, tests/torture.at: Rely on Autotest 2.52g: + now the tests are run in private dirs, therefore AC_CLEANUP and + family can be simplified to 0-ary. + * tests/atlocal.in: Now that we run `elsewhere' than in tests/, + use abs. path to find config.h. + * tests/calc.at (AT_CHECK_CALC): Don't try to check the compiler's + stderr, there can be way too much random noise. + Instead pass -Werror to GCC and rely on the exit status. + Reported by Wolfram Wagner. + +2001-11-14 Akim Demaille + + * src/bison.simple (yyparse): Let yyls1, yyss1 and yyvs1 be + defined only if yyoverflow is defined, to avoid `warning: unused + variable `yyvs1''. + Reported by The Test Suite. + +2001-11-14 Akim Demaille + + * src/print.c: Include reduce.h. + Reported by Hans Aberg. + +2001-11-14 Akim Demaille + + * src/lex.c, src/lex.h (token_buffer, unlexed_token_buffer): + Revert a previous patch: these are really const. + * src/conflicts.c (conflict_report): Additional useless pair of + braces to pacify GCC's warnings for `if () if () {} else {}'. + * src/lex.c (parse_percent_token): Replace equal_offset with + arg_offset. + arg is const. + Be sure to strdup `arg' when used, since there is no reason for + token_buffer not to change. + +2001-11-14 Akim Demaille + + * src/system.h (EXIT_SUCCESS, EXIT_FAILURE): Ensure a proper + definition. + * src/main.c (main): Use them. + Suggested by Hans Aberg. + +2001-11-12 Akim Demaille + + * src/system.h (ngettext): Now that we use ngettext, be sure to + provide a default definition when NLS are not used. + +2001-11-12 Akim Demaille + + * doc/bison.texinfo: Use `$' as shell prompt, not `%'. + Use @kbd to denote user input. + (Language and Grammar): ANSIfy the example. + Adjust its layout for info/notinfo. + (Location Tracking Calc): Output error messages to stderr. + Output locations in a more GNUtically correct way. + Fix a couple of Englishos. + Adjust @group/@end group pairs. + +2001-11-12 Akim Demaille + + %expext was not functioning at all. + + * src/conflicts.c (expected_conflicts): Set to -1. + (conflict_report): Use ngettext. + (conflicts_print): Check %expect and make its violation an error. + * doc/bison.texinfo (Expect Decl): Adjust. + * configure.in (AM_GNU_GETTEXT): Ask for ngettext. + * tests/regression.at (%expect not enough, %expect right) + (%expect too much): New. + +2001-11-12 Akim Demaille + + * tests/regression.at (Conflicts): Rename as... + (Unresolved SR Conflicts): this. + (Solved SR Conflicts): New. + +2001-11-12 Akim Demaille + + * src/reduce.c (print_results): Rename as... + (reduce_output): This. + Output to OUT, passed as argument, instead of output_obstack. + (dump_grammar): Likewise. + (reduce_free): New. + Also free V1. + (reduce_grammar): No longer call reduce_output, since... + * src/print.c (print_results): do it. + * src/main.c (main): Call reduce_free; + +2001-11-12 Akim Demaille + + * src/conflicts.c (print_reductions): Accept OUT as argument. + Output to it, not to output_obstack. + * src/print.c (print_actions): Adjust. + +2001-11-12 Akim Demaille + + * src/conflicts.c (count_sr_conflicts, count_rr_conflicts): Return + the result instead of using... + (src_total, rrc_total, src_count, rrc_count): Remove. + (any_conflicts): Remove. + (print_conflicts): Split into... + (conflicts_print, conflicts_output): New. + * src/conflicts.h: Adjust. + * src/main.c (main): Invoke both conflicts_output and conflicts_print. + * src/print.c (print_grammar): Issue `\n' between two rules. + * tests/regression.at (Conflicts): New. + Reported by Tom Lane. + +2001-11-12 Akim Demaille + + * tests/regression.at (Invalid input): Remove, duplicate with + ``Invalid input: 1''. + +2001-11-12 Akim Demaille + + * tests/torture.at (AT_DATA_STACK_TORTURE) + (Exploding the Stack Size with Alloca) + (Exploding the Stack Size with Malloc): New. + +2001-11-12 Akim Demaille + + * src/bison.simple (YYSTACK_REALLOC): New. + (yyparse) [!yyoverflow]: Use it and free the old stack. + Reported by Per Allansson. + +2001-11-12 Pascal Bart + + * src/bison.simple: Define type yystype instead of YYSTYPE, and + define CPP macro, which substitute YYSTYPE by yystype. + * src/reader.c (parse_union_decl): Output yystype/YYSTYPE as we do + with yyltype/YYLTYPE. This allows inclusion of the generated + header within the parser if the compiler, such as GGC, accepts + multiple equivalent #defines. + From Akim. + +2001-11-05 Akim Demaille + + * src/reader.c (symbols_output): New, extracted from... + (packsymbols): here. + (reader): Adjust. + +2001-11-05 Akim Demaille + + * src/lex.c (parse_percent_token): s/quotearg/quote/. + +2001-11-05 Akim Demaille + + * tests/regression.at (AT_TEST_CPP_GUARD_H): Adjust the clean up + pattern. + +2001-11-05 Akim Demaille + + * src/options.h (struct option_table_struct): set_flags is void*. + * src/options.c (longopts): Support `--output' and `%output'. + (usage): Adjust. + * src/lex.h (tok_setopt): Remove, replaced with... + (tok_intopt, tok_stropt): these new guys. + * src/lex.c (getopt.h): Not needed. + (token_buffer, unlexed_token_buffer): Not const. + (percent_table): Promote `-' over `_' in directive names. + Active `%name-prefix', `file-prefix', and `output'. + (parse_percent_token): Accept possible arguments to directives. + Promote `-' over `_' in directive names. + +2001-11-04 Akim Demaille + + * doc/bison.texinfo (Decl Summary): Split the list into + `directives for grammars' and `directives for bison'. + Sort'em. + Add description of `%name-prefix', `file-prefix', and `output'. + Promote `-' over `_' in directive names. + (Bison Options): s/%locactions/%locations/. Nice Freudian slip. + Simplify the description of `--name-prefix'. + Promote `-' over `_' in directive names. + Promote `--output' over `--output-file'. + Fix the description of `--defines'. + * tests/output.at: Exercise %file-prefix and %output. + +2001-11-02 Akim Demaille + + * doc/refcard.tex: Update. + +2001-11-02 Akim Demaille + + * src/symtab.h (SUNDEF): New. + * src/symtab.c (bucket_new): Init user_token_number to SUNDEF to + stand for `uninitialized', instead of 0. + * src/reader.c (packsymbols, parse_thong_decl): Adjust. + * src/lex.c (lex): Adjust. + + * tests/calc.at (_AT_DATA_CALC_Y): Declare a token for EOF. + Number it 0. + Let yylex return it instead of a plain 0. + Reported by Dick Streefland. + +2001-11-02 Akim Demaille + + * tests/regression.at (Mixing %token styles): New test. + +2001-11-02 Akim Demaille + + * src/reader.c (parse_thong_decl): Formatting changes. + (token_translations_init): New, extracted from... + (packsymbols): Here. + Adjust. + +2001-11-01 Akim Demaille + + * tests/regression.at (AT_TEST_CPP_GUARD_H): New. + Check that `9foo.y' produces correct cpp guards. + * src/files.c (compute_header_macro): Prepend `BISON_' to CPP + guards. + Reported by Wwp. + +2001-11-01 Akim Demaille + + * tests/regression.at (Invalid input: 2): New. + * src/lex.c (unlexed_token_buffer): New. + (lex, unlex): Adjust: when unlexing, be sure to save token_buffer + too. + Reported by Wwp. + +2001-11-01 Akim Demaille + + * tests/calc.at: Catch up with 1.30. + * configure.in: Bump to 1.49a. + Adjust to newer Autotest. + +2001-10-19 Pascal Bart + + * src/conflicts.c: Move global variables rrc_total and src_total ... + (print_conflicts): here. + * src/output.c (output): Free global variable user_toknums. + * src/lex.c (token_obstack): Become static. + +2001-10-18 Akim Demaille + + * tests/atlocal.in (GCC): Add. + * tests/calc.at: s/m4_match/m4_bmatch/. + s/m4_patsubst/m4_bpatsubst/. + (AT_CHECK_CALC): Check the compiler's stderr only if it's GCC. + * configure.in: AC_SUBST(GCC). + +2001-10-14 Marc Autret + + * src/options.c (create_long_option_table): Fix. + +2001-10-10 Akim Demaille + + * src/bison.simple: Be sure to set YYSTACK_USE_ALLOCA. + +2001-10-04 Akim Demaille + + * src/reader.c (parse_union_decl): Push the caracters in + union_obstack, not attrs_obstack. + +2001-10-04 Akim Demaille + + Merge in the branch 1.29. + + * src/reader.c (packsymbols): Use a temporary obstack for + `%%tokendef', since output_stack is already used elsewhere. + + 2001-10-02 Akim Demaille + + Bump 1.29d. + + 2001-10-02 Akim Demaille + + Version 1.29c. + + 2001-10-02 Akim Demaille + + * tests/regression.at (Invalid CPP headers): New. + From Alexander Belopolsky. + * src/files.c (compute_header_macro): Map non alnum chars to `_'. + + 2001-10-02 Akim Demaille + + * tests/regression.at (Invalid input): New. + * src/lex.c (lex): Be sure to set `token_buffer' in any case. + Reported by Shura. + + 2001-10-02 Akim Demaille + + * tests/calc.at: Now that --debug works, the tests must be adjusted. + + 2001-10-02 Akim Demaille + + * src/output.c (output_parser): Assert `skeleton'. + * src/files.c (skeleton_find): Look harder for skeletons on DOSish + systems. + From Shura. + + 2001-10-01 Marc Autret + + * src/lex.h: Echo modifications. + * src/lex.c (unlex): Parameter is now token_t. + From Hans Aberg. + + 2001-10-01 Marc Autret + + * src/main.c: Include lex.h. + From Hans Aberg. + + 2001-09-29 Akim Demaille + + * src/getargs.c (longopts): `--debug' is `-t', not `-d'. + + 2001-09-28 Akim Demaille + + * tests/testsuite.at: Update to newer Autotest. + * tests/Makefile.am (EXTRA_DIST): bison is not to be shipped. + + 2001-09-27 Akim Demaille + + Position independent wrapper. + + * tests/bison: Remove. + * tests/bison.in: New. + * configure.in: Adjust. + + 2001-09-27 Paul Eggert + + Port quotearg fixes from tar 1.13.24. + + * lib/quotearg.c: BSD/OS 4.1 wchar.h requires FILE and struct + tm to be declared. + (HAVE_MBSINIT): Undef if !HAVE_MBRTOWC. + (mbsinit): Define to 1 if !defined mbsinit && !HAVE_MBSINIT. + + * m4/Makefile.am (EXTRA_DIST): Add mbrtowc.m4. + * m4/mbrtowc.m4: New file. + * m4/prereq.m4 (jm_PREREQ_QUOTEARG): Check for mbsinit and stddef.h. + Use jm_FUNC_MBRTOWC instead of AC_CHECK_FUNCS(mbrtowc). + + 2001-09-27 Akim Demaille + + Bump to 1.29c. + + 2001-09-27 Akim Demaille + + Version 1.29b. + + 2001-09-25 Akim Demaille + + * src/system.h: Include `xalloc.h'. + Remove it from the C files. + * src/files.c (output_files): Free the obstacks. + * src/lex.c (init_lex): Rename as... + (lex_init): this. + (lex_free): New. + * src/main.c (main): Use it. + + 2001-09-24 Marc Autret + + * src/vcg.c (open_edge, close_edge, open_node, close_node): Change + to output informations in fout (FILE*). + (open_graph, close_graph): Likewise. + (output_graph, output_edge, output_node): Likewise. + * src/vcg.h: Update function prototypes. + * src/print_graph.c (print_graph): Open output graph file. + (print_actions): Adjust. + * src/files.h: Remove extern declaration. + * src/files.c: Remove graph_obstack declaration. + (open_files): Remove graph_obstack initialization. + (output_files): Remove graph_obstack saving. + + 2001-09-24 Marc Autret + + * src/files.c (compute_output_file_names): Fix. + + 2001-09-24 Marc Autret , + Akim Demaille + + * src/reader.c (reader): Remove call to free_symtab (). + * src/main.c (main): Call it here. + Include symtab.h. + * src/conflicts.c (initialize_conflicts): Rename as... + (solve_conflicts): this. + * src/print.c (print_core, print_actions, print_state) + (print_grammar): Dump to a file instead a `output_obstack'. + (print_results): Dump `output_obstack', and then proceed with the + FILE *. + * src/files.c (compute_output_file_names, close_files): New. + (output_files): Adjust. + * src/main.c (main): Adjust. + + 2001-09-23 Marc Autret + + * src/files.c (compute_header_macro): Computes header macro name + from spec_defines_file when given. + + 2001-09-23 Marc Autret + + * src/files.c (output_files): Add default extensions. + + 2001-09-22 Akim Demaille + + * src/conflicts.c (finalize_conflicts): Rename as... + (free_conflicts): this. + + 2001-09-22 Akim Demaille + + * src/gram.c (gram_free): Rename back as... + (dummy): this. + (output_token_translations): Free `token_translations'. + * src/symtab.c (free_symtab): Free the tag field. + + 2001-09-22 Akim Demaille + + Remove `translations' as it is always set to true. + + * src/gram.h: Adjust. + * src/reader.c (packsymbols, parse_token_decl): Adjust + * src/print.c (print_grammar): Adjust. + * src/output.c (output_token_translations): Adjust. + * src/lex.c (lex): Adjust. + * src/gram.c: Be sure the set pointers to NULL. + (dummy): Rename as... + (gram_free): this. + + 2001-09-22 Akim Demaille + + * configure.in: Invoke AM_LIB_DMALLOC. + * src/system.h: Use dmalloc. + * src/LR0.c: Be sure to have pointers initialized to NULL. + (allocate_itemsets): Allocate kernel_items only if needed. + + 2001-09-22 Akim Demaille + + * configure.in: Bump to 1.29b. + * tests/Makefile.am (DISTCLEANFILES): Add package.m4. + * tests/calc.at (_AT_DATA_CALC_Y): #undef malloc so that we don't + need xmalloc.c in calc.y. + From Pascal Bart. + + 2001-09-21 Akim Demaille + + Version 1.29a. + * Makefile.maint, config/config.guess, config/config.sub, + * config/missing: Update from masters. + * tests/Makefile.am ($(srcdir)/$(TESTSUITE)): No longer depend + upon package.m4. + * configure.in (ALL_LINGUAS): Add `tr'. + + 2001-09-21 Akim Demaille + + * tests/Makefile.am (package.m4): Move to... + ($(srcdir)/$(TESTSUITE)): here. + + 2001-09-20 Akim Demaille + + * src/complain.c: No longer try to be standalone: use system.h. + Don't assume __STDC__ is defined to 1. Just test if it is defined. + * src/complain.h: Likewise. + * src/reduce.c (useless_nonterminals, inaccessable_symbols): + Remove the unused variable `n'. + From Albert Chin-A-Young. + + 2001-09-18 Marc Autret + + * doc/bison.1: Update. + * doc/bison.texinfo (Bison Options): Update --defines and --graph + descriptions. + (Option Cross Key): Update. + Add --graph. + + 2001-09-18 Marc Autret + + * tests/regression.at: New test (comment in %union). + + 2001-09-18 Marc Autret + + * src/reader.c (parse_union_decl): Do not output '/'. Let copy_comment + do that. + Reported by Keith Browne. + + 2001-09-18 Marc Autret + + * tests/output.at: Add tests for --defines and --graph. + + 2001-09-18 Marc Autret + + * tests/output.at: Removes tests of %{header,src}_extension features. + + 2001-09-18 Akim Demaille + + * tests/Makefile.am (package.m4): New. + * tests/calc.at (_AT_CHECK_CALC): Just run `calc input'. + (_AT_CHECK_CALC_ERROR): Likewise. + Factor the `, ' part of verbose error messages. + + 2001-09-18 Marc Autret + + * src/getargs.c (longopts): Declare --defines and --graph as options + with optional arguments. + * src/files.h: Add extern declarations. + * src/files.c (spec_graph_file, spec_defines_file): New. + (output_files): Update. + Remove CPP-outed code. + + 2001-09-18 Marc Autret + + Turn off %{source,header}_extension feature. + + * src/files.c (compute_exts_from_gf): Update. + (compute_exts_from_src): Update. + (output_files): CPP-out useless code. + * src/files.h: Remove {header,source}_extension extern declarations. + * src/reader.c (parse_dquoted_param): CPP-out. + (parse_header_extension_decl): Remove. + (parse_source_extension_decl): Remove. + (read_declarations): Remove cases tok_{hdrext,srcext}. + * src/lex.c (percent_table): Remove {header,source}_extension entries. + * src/lex.h (token_t): Remove tok_hdrext and tok_srcext. + + 2001-09-10 Akim Demaille + + * tests/output.at (AT_CHECK_BISON_FLAGS, AT_CHECK_BISON_PERCENT): + (AT_CHECK_BISON_PERCENT_FLAGS): Merge into... + (AT_CHECK_OUTPUT): this. + Merely check ls' exit status, its output is useless. + + 2001-09-10 Akim Demaille + + * tests/calc.at: Use m4_match. + (_AT_DATA_CALC_Y): Check `yyin != NULL', not `stdin != NULL'. + + 2001-09-10 Marc Autret , + Akim Demaille + + * src/vcg.h (graph_s): color, textcolor, bordercolor are now + enum color_e. + * src/print_graph.c (print_graph): Initalize graph.layoutalgorithm + to `normal'. + * src/reader.c (parse_token_decl): Initialize token with tok_eof. + * src/lex.h: Adjust prototype. + (token_t): Add `tok_undef'. + * src/lex.c (struct percent_table_struct): Retval is now a token_t. + (parse_percent_token): Now returns token_t. + Add default statement in switch. + (lex): Separate `c' as an input variable, from the token_t result + part. + (unlexed): Is a token_t. + + 2001-09-10 Akim Demaille + + * configure.in: Bump to 1.29a. + + 2001-09-07 Akim Demaille + + Version 1.29. + + 2001-08-30 Akim Demaille + + * tests/atgeneral.m4, tests/atconfig.in, tests/suite.at: Remove. + * m4/atconfig.m4: Remove. + * tests/testsuite.at, tests/atlocal.in, tests/output.at, + * tests/bison: New. + * tests/regression.at, tests/calc.at: Use m4_define, AT_BANNER, + m4_if, m4_patsubst, and m4_regexp. + * tests/calc.at (_AT_CHECK_CALC, _AT_CHECK_CALC_ERROR): Use an + `input' file instead of echo. + + 2001-08-29 Akim Demaille + + Bump to 1.28e. + + 2001-08-29 Akim Demaille + + Version 1.28d. + + 2001-08-29 Paul Eggert + + * src/bison.simple (yyparse): Don't take the address of an + item before the start of an array, as that doesn't conform to + the C Standard. + + 2001-08-29 Robert Anisko + + * doc/bison.texinfo (Location Tracking Calc): New node. + + 2001-08-29 Paul Eggert + + * src/output.c (output): Do not define const, as this now + causes more problems than it cures. + + 2001-08-29 Akim Demaille + + * doc/bison.texinfo: Modernize `@node' and `@top' use: just name + the nodes. + Be sure to tag the `detailmenu'. + + 2001-08-29 Akim Demaille + + * Makefile.maint (do-po-update): Wget refuses to overwrite files: + download in a tmp dir. + + 2001-08-28 Marc Autret + + * config/depcomp: New file. + + 2001-08-28 Marc Autret + + * doc/bison.1 (mandoc): Adjust. + From Juan Manuel Guerrero. + + 2001-08-28 Marc Autret + + * src/print_graph.c (print_state): Fix. + + 2001-08-27 Marc Autret + + * src/vcg.h (classname_s, infoname_s, node_s): Constify the + char * members. + Echo modifications to the functions prototypes. + * src/vcg.c (add_classname, add_infoname): Adjust arguments. + + 2001-08-27 Marc Autret + + * src/vcg.c: Include `xalloc.h'. + (add_colorentry): New. + (add_classname): New. + (add_infoname): New. + * src/vcg.h: Add new prototypes. + + 2001-08-27 Akim Demaille + + * Makefile.maint: Sync. again with CVS Autoconf. + + 2001-08-27 Akim Demaille + + * Makefile.maint: Formatting changes. + (po-update, cvs-update, update): New targets. + (AMTAR): Remove. + + 2001-08-27 Akim Demaille + + * Makefile.am (AUTOMAKE_OPTIONS): 1.5. + * Makefile.maint: Sync. with CVS Autoconf. + + 2001-08-27 Marc Autret + + * src/vcg.h (struct infoname_s): New. + (struct colorentry_s): New. + (graph_s): New fields {vertical,horizontal}_order in structure. + Add `infoname' field. + Add `colorentry' field; + * src/vcg_defaults.h (G_VERTICAL_ORDER): New. + (G_HORIZONTAL_ORDER): New. + (G_INFONAME): New. + (G_COLORENTRY): New. + * src/vcg.c (output_graph): Add output of {vertical,horizontal}_order. + Add output of `infoname'. + Add output of `colorentry'. + + 2001-08-27 Marc Autret + + * src/reader.c (parse_dquoted_param): Rename variable `index' to `i'. + This one shadowed a global parameter. + + 2001-08-24 Marc Autret + + * src/print_graph.c (node_output_size): Declared POSIX `size_t' type, + instead of `unsigned'. + (print_state): Do not call obstack_object_size () in obstack_grow () + to avoid macro variables shadowing. + + 2001-08-23 Marc Autret + + * src/lex.c (percent_table): Typo: s/naem/name/. + Add graph option. + Normalize new options declarations. + + 2001-08-20 Pascal Bart + + * tests/suite.at: Exercise %header_extension and %source_extension. + + 2001-08-16 Marc Autret + + * src/reader.c (parse_dquoted_param): New. + (parse_header_extension_decl): Use it. + (parse_source_extension_decl): Likewise. + + 2001-08-16 Marc Autret + + * src/vcg.c: Remove includes of `complain.h' and `xalloc.h'. + (get_xxxx_str): Use assert () instead of complain (). + Remove return invokations in default cases. + (get_decision_str): Modify default behaviour. Remove second argument. + Echo modifications on calls. + (output_graph): Fix. + + 2001-08-16 Marc Autret + + * src/getargs.c (usage): Update with ``-g, --graph''. + + 2001-08-16 Marc Autret + + * doc/bison.texinfo (Bison Options): Add items `-g', `--graph'. + (Option Cross Key): Likewise. + * doc/bison.1: Update. + +2001-09-25 Pascal Bart + + * src/output.c (output_master_parser): Don't finish action_obstack. + (output_parser): Don't care about the muscle action, here. + (prepare): Copy the action_obstack in the action muscle. + (output): Free action_obstack. + +2001-09-23 Pascal Bart + + * src/reader.c (parse_union_decl): Add new obstack union_obstack. Which + will contain `%union' declaration. + (parse_union_decl): Delete #line directive output. + (parse_union_decl): Substitute /attrs_obstack/union_obstack for all + informations about %union. + (parse_union_decl): Copy the union_obstack in the muscle stype. + * src/bison.simple: Add new #line directive. + Add typdef %%stype YYSTYPE. + +2001-09-23 Pascal Bart + + * src/bison.simple: Add new `#line' directive. + +2001-09-22 Pascal Bart + + * src/bison.simple: New `#line' directive. + * src/output.c (output_parser): Support new dynamic muscle input_line. + +2001-09-22 Marc Autret + + * src/output.c (output_master_parser): New. + (output_parser): Be more re-entrant. + +2001-09-21 Marc Autret + + * src/reader.c (copy_definition, parse_union_decl): Update and use + `linef' muscle. + (copy_action): Likewise. + Use obstack_1grow (). + * src/muscle_tab.c (muscle_init): Add muscle `linef'. + +2001-09-21 Marc Autret + + * src/options.c (option_table): Adjust. + * src/lex.c (parse_percent_token): Fix. + +2001-09-20 Pascal Bart + + * src/options.c (symtab.h): Include it, need by lex.h. + +2001-09-20 Pascal Bart + + * src/lex.c (parse_percent_token): Change type of variable `tx', which + is now an option_table_struct*. + (option_strcmp): New function option_strcmp. + (parse_percent_token): Call option_strcmp. + * src/getargs.c (xalloc.h, options.h): Include it. + (getargs): Call create_long_option_table. + (getargs): Free longopts at the end of the function. + (shortopts): Move in options.c. + * src/options.c (create_long_option_table): New function. Convert + information from option_table to option structure. + * src/reader.c (options.h): Include it. + + * src/Makefile.am: Adjust. + * src/options.c (option_table): Create from longopts and percent_table. + * src/getargs.c (longopts): Delete. + * src/lex.c (struct percent_table_struct): Delete. + (percent_table): Delete. + (options.h): Include it. + * src/options.c: Create. + * src/options.h: Create. + Declare enum opt_access_e. + Define struct option_table_struct. + +2001-09-20 Marc Autret + + * doc/bison.texinfo: Adjust terminologies about prologue and epilogue + sections of Bison. + +2001-09-19 Pascal Bart + + * src/bison.simple: s/%%filename/%%skeleton. + * src/muscle_tab.c (getargs.h): Include it. + (muscle_init): Insert new muscle skeleton. + +2001-09-18 Pascal Bart + + * src/output.c (output_parser): Delete unused variable actions_dumped. + +2001-09-07 Pascal Bart + + * src/output.c (output): Delete call to reader_output_yylsp. + * src/reader.c (reader): Likewise. + * src/reader.h: Delete declaration of reader_output_yylsp. + +2001-09-02 Marc Autret + + * src/reader.c: Include muscle_tab.h. + (parse_union_decl): Update. + (parse_macro_decl): Rename parse_muscle_decl. + Update to use renamed functions and variable. + (read_declarations, copy_action, read_additionnal_code, : Updated + with correct variables and functions names. + (packsymbols, reader): Likewise. + + * src/reader.h (muscle_obstack): Extern declaration update. + + * src/output.c: Include muscle_tab.h + In all functions using macro_insert, change by using muscle_insert (). + (macro_obstack): Rename muscle_obstack. + Echo modifications in the whole file. + (MACRO_INSERT_INT): Rename MUSCLE_INSERT_INT. + (MACRO_INSERT_STRING): Rename MUSCLE_INSERT_STRING. + (MACRO_INSERT_PREFIX): Rename MUSCLE_INSERT_PREFIX. + + * src/muscle_tab.h: Update double inclusion macros. + (macro_entry_s): Rename muscle_entry_s. + Update prototypes. + + * src/muscle_tab.c: Include muscle_tab.h. + Rename macro_tabble to muscle_table. + (mhash1, mhash2, mcmp): Use muscle_entry. + (macro_init): Rename muscle_init. Update. + (macro_insert): Rename muscle_insert. Update. + (macro_find): Rename muscle_find. Update. + + * src/main.c: Include muscle_tab.h. + (main): Call muscle_init (). + * src/Makefile.am (bison_SOURCES): Echo modifications. + +2001-09-02 Marc Autret + + Now the files macro_tab.[ch] are named muscle_tab.[ch]. + + * src/muscle_tab.c, src/muscle_tab.h: Add files. + +2001-09-02 Marc Autret + + * src/macrotab.c, src/macrotab.h: Remove. + +2001-09-01 Pascal Bart + + * src/reader.c (copy_guard): Use muscle to specify the `#line' + filename. + +2001-09-01 Marc Autret + + * tests/calc.at (exp): Now, YYERROR_VERBOSE need to be set + to an explicit value to activate the feature. We do it here. + +2001-08-31 Pascal Bart + + * src/output.c (prepare): Delete the `filename' muscule insertion. + * src/reader.c (copy_action): Use `filename' muscule with `#line'. + (parse_union_decl): Likewise. + * src/macrotab.c (macro_init): Initialize filename by infile. + +2001-08-31 Marc Autret + + * src/bison.simple (YYLSP_NEEDED): New definition. + * src/output.c (prepare): Add macro insertion of `locations_flag' + +2001-08-31 Pascal Bart + + * src/output.c (prepare): Delete insertion of previous muscles, + and insert the `prefix' muscles. + * src/macrotab.c (macro_init): Likewise. + (macro_init): Initialization prefix directive by `yy'. + * src/bison.simple: Substitute all %%yylex, %%yychar, %%yylval, + %%yydebug, %%yyerror, %%yynerrs and %%yyparse by yylex, yychar, + yylval, yydebug, yyerror, yynerrs and yyparse. + New directive `#define' to substitute yydebug, ... with option + name_prefix. + +2001-08-31 Pascal Bart + + * src/main.c (main): Standardize. + * src/output.c (output_table_data, output_parser): Likewise. + * src/macrotab.h, src/macrotab.c, src/bison.simple: Likewise. + +2001-08-31 Pascal Bart , Marc Autret + + * src/reader.c (read_additionnal_code): Rename %%user_code to + %%epilogue. + * src/output.c (output): Rename %%declarations to %%prologue. + * src/bison.simple: Echo modifications. + +2001-08-31 Marc Autret + + * src/reader.c (readgram): CleanUp. + (output_token_defines): Likewise. + (packsymbols): Likewise. + (reader): Likewise. + * src/output.c (output): CPP-out useless code. + +2001-08-31 Pascal Bart + + * src/reader.c (reader): Delete obsolete call to function + output_trailers and output_headers. + * src/output.h: Remove obsolete functions prototypes of output_headers + and output_trailers. + +2001-08-30 Pascal Bart + + * src/main.c: Include macrotab.h. + * src/macrotab.h (macro_entry_s): Constify fields. + Adjust functions prototypes. + * src/macrotab.c (macro_insert): Constify key and value. + (macro_find): Constify key. + (macro_insert): Include 'xalloc.h' + (macro_insert): Use XMALLOC. + (macro_find): Constify return value. + * src/output.c (output_table_data): Rename table to table_data. + (output_parser): Constify macro_key, macro_value. + +2001-08-30 Marc Autret + + * src/reader.c (parse_skel_decl): New. + (read_declarations): Add case `tok_skel', call parse_skel_decl (). + * src/lex.h (token_t): New token `tok_skel'. + * src/lex.c (percent_table): Add skeleton option entry. + Standardize. + +2001-08-29 Marc Autret + + * src/bison.simple: Add %%user_code directive at the end. + * src/reader.c (read_additionnal_code): New. + (reader): Use it. + * src/output.c (output_program): Remove. + (output): Update. + +2001-08-28 Marc Autret + + * src/output.c (output_actions): Clean up. + (output_gram): CPP-out useless code. + * src/reader.c (reader): Clean up, CPP-out useless code. + +2001-08-28 Pascal Bart + + * src/output.c (output): Copy attrs_obstack in the '%%definitions' + directive. + * src/bison.simple: Add `%%definitions'. + +2001-08-28 Marc Autret + + * config/depcomp: New file. + +2001-08-27 Paul Eggert + + * src/bison.simple (yyparse): Don't take the address of an + item before the start of an array, as that doesn't conform to + the C Standard. + +2001-08-27 Robert Anisko + + * src/output.c (output): Remove the initialization of the macro + obstack. It was done too late here. + + * src/reader.c (parse_macro_decl): Fix. Use of the macro obstack was + completely wrong. + (reader): Initialize the macro obstack here, since we need it to grow + '%define' directives. + + * src/reader.h: Declare the macro obstack as extern. + +2001-08-27 Robert Anisko + + * src/output.c (output_parser): Fix. Store single '%' characters in + the output obstack instead of throwing them away. + +2001-08-27 Akim Demaille + + * Makefile.am (AUTOMAKE_OPTIONS): 1.5. + +2001-08-25 Robert Anisko + + * lib/Makefile.am: Adjust. + +2001-08-25 Robert Anisko + + * src/bison.simple: Update and add '%%' directives. + +2001-08-25 Robert Anisko + + * src/reader.c (reader): Remove calls to 'output_headers' and + 'output_trailers'. Remove some C output. + (readgram): Disable a piece of code that was writing a default + definition for 'YYSTYPE'. + (reader_output_yylsp): Remove. + (packsymbols): Output token defintions to a macro. + (copy_definition): Disable C output. + + * src/reader.c (parse_macro_decl): New function used to parse macro + declarations. + (copy_string2): Put the body of copy_string into this new function. + Add a parameter to let the caller choose whether he wants to copy the + string delimiters or not. + (copy_string): Be a simple call to copy_string2 with the last argument + bound to true. + (read_declarations): Add case for macro definition. + (copy_identifier): New. + (parse_macro_decl): Read macro identifiers using copy_identifier + rather than lex. + +2001-08-25 Robert Anisko + + * src/output.c (prepare): Add prefixed names. + (output_parser): Output semantic actions. + (output_parser): Fix bug on '%%line' directives. + + * src/output.c (output_headers): Remove. The C code printed by this + function should now be in the skeletons. + (output_trailers): Remove. + (output): Disable call to 'reader_output_yylsp'. + (output_rule_data): Do not output tables to the table obstack. + + * src/output.c: Remove some C dedicated output. + Improve the use of macro and output obstacks. + (output_defines): Remove. + + * src/output.c (output_token_translations): Associate 'translate' + table with a macro. No output to the table obstack. + (output_gram): Same for 'rhs' and 'prhs'. + (output_stos): Same for 'stos'. + (output_rule_data): Same for 'r1' and 'r2'. + (token_actions): Same for 'defact'. + (goto_actions): Same for 'defgoto'. + (output_base): Same for 'pact' and 'pgoto'. + (output_table): Same for 'table'. + (output_check): Same for 'check'. + + * src/output.c (output_table_data): New function. + (output_short_table): Remove. + (output_short_or_char_table): Remove. + + * src/output.c (output_parser): Replace most of the skeleton copy code + with something new. Skeletons are now processed character by character + rather than line by line, and Bison looks for '%%' macros. This is the + first step in making Bison's output process (a lot) more flexible. + (output_parser): Use the macro table. + +2001-08-25 Robert Anisko + + * src/main.c (main): Initialize the macro table. + +2001-08-25 Robert Anisko + + * src/lex.c (percent_table): Add tok_define. + * src/lex.h: Add tok_define. + +2001-08-25 Robert Anisko + + * src/macrotab.c: New file. + * src/macrotab.h: New file. + * src/Makefile.am: Update. + +2001-08-25 Robert Anisko + + * lib/hash.c: New file. + * lib/hash.h: New file. + * lib/Makefile.am: Update. + +2001-08-15 Akim Demaille + + Version 1.28c. + +2001-08-15 Marc Autret + + * src/reader.c (readgram): Indent output macro YYSTYPE. + (packsymbols): Likewise. + (output_token_defines): Likewise. + * src/files.c: Standardize. + (compute_header_macro): New. + (defines_obstack_save): New. Use compute_header_macro. + (output_files): Update. Use defines_obstack_save. + +2001-08-15 Akim Demaille + + * doc/bison.texinfo (Table of Symbols): Document + YYSTACK_USE_ALLOCA. + +2001-08-15 Akim Demaille + + * missing: Update from CVS Automake. + * config/config.guess, config/config.sub, config/texinfo.tex: + Update from gnu.org. + +2001-08-15 Akim Demaille + + * Makefile.maint: Sync with CVS Autoconf. + +2001-08-14 Pascal Bart + + * doc/bison.texinfo: Include GNU Free Documentation License from + `fdl.texi'. + * doc/fdl.texi: Add to package. + +2001-08-14 Marc Autret + + Turn on %{source,header}_extension features. + + * src/lex.c (percent_table): Un-CPP out header_extension and + source_extension. + * src/files.c (compute_exts_from_gf): Compare pointers with NULL. + (compute_exts_from_src): Remove conditions. It restores priorities + between options. + +2001-08-14 Marc Autret + + * src/files.c (compute_base_names): Add extensions computing when + `--file-prefix' used. + Standardize function calls. + +2001-08-13 Marc Autret + + * src/bison.simple (YYSTACK_USE_ALLOCA): Changed to allow users + defining it (defined but null disables alloca). + +2001-08-13 Marc Autret + + * src/bison.simple (_yy_memcpy): CPP reformat. + +2001-08-13 Pascal Bart + + * tests/atconfig.in (CPPFLAGS): Fix. + +2001-08-10 Pascal Bart + + * doc/bison.texinfo: Include GNU General Public License from + `gpl.texi'. + * doc/gpl.texi: Add to package. + +2001-08-10 Marc Autret + + * src/print_graph.h: Fix. + * src/reader.c (read_declarations): Use parse_header_extension_decl (). + +2001-08-10 Akim Demaille + + * src/system.h: Provide default declarations for stpcpy, strndup, + and strnlen. + +2001-08-10 Robert Anisko + + * doc/bison.texinfo (Locations): Update @$ stuff. + +2001-08-09 Robert Anisko + + * src/bison.simple (YYLLOC_DEFAULT): Update. + (yyparse): Adjust. + +2001-08-08 Marc Autret + + * doc/bison.texinfo: Change @samp{$<@dots{}>} to + @samp{$<@dots{}>@var{n}} in Section Actions in Mid-Rule. + Reported by Fabrice Bauzac. + +2001-08-08 Marc Autret + + * src/vcg_default.h: Use NULL instead of 0 to initialize pointers. + * src/vcg.c (output_node): Fix. + * src/vcg.h: Cleanup. + * src/print_graph.c: Add comments. + (node_output_size): New global variable. Simplify the formatting of + the VCG graph output. + (print_actions): Unused code is now used. It notifies the final state + and no action states in the VCG graph. It also give the reduce actions. + The `shift and goto' edges are red and the `go to state' edges are + blue. + Get the current node name and node_obstack by argument. + (node_obstack): New variable. + (print_state): Manage node_obstack. + (print_core): Use node_obstack given by argument. + A node is not only computed here but in print_actions also. + (print_graph): CPP out useless code instead of commenting it. + +2001-08-07 Pascal Bart + + * tests/atconfig.in (CPPFLAGS): Fix. + +2001-08-07 Akim Demaille + + * src/print_graph.c (quote): New. + (print_core): Use it. + +2001-08-06 Akim Demaille , Marc Autret + + * src/vcg.c (complain.h): Include it. + Unepitaize `return' invocations. + [NDEBUG] (main): Remove. + * src/vcg.h (node_t, edge_t, graph_t): Constify the char * members. + * src/files.c (open_files): Initialize graph_obstack. + * src/print_graph.c (print_actions): CPP out useless code. + (print_core): Don't output the last `\n' in labels. + Use `quote'. + * src/files.c (output_files): Output the VCG file. + * src/main.c (main): Invoke print_graph (); + +2001-08-06 Marc Autret + + Automaton VCG graph output. + Using option ``-g'' or long option ``--graph'', you can generate + a gram_filename.vcg file containing a VCG description of the LALR (1) + automaton of your grammar. + + * src/main.c: Call to print_graph() function. + * src/getargs.h: Update. + * src/getargs.c (options): Update to catch `-g' and `--graph' options. + (graph_flag): New flag. + (longopts): Update. + (getargs): Add case `g'. + * src/files.c (graph_obstack): New obstack struct. + (open_files): Initialize new obstack. + (output_files): Saves graph_obstack if required. + * src/files.h (graph_obstack): New extern declaration. + * src/Makefile.am: Add new source files. + +2001-08-06 Marc Autret + + * src/print_graph.c, src/print_graph.h (graph): New. + * src/vcg.h: New file. + * src/vcg.c: New file, VCG graph handling. + +2001-08-06 Marc Autret + + Add of %source_extension and %header_extension which specify + the source or/and the header output file extension. + + * src/files.c (compute_base_names): Remove initialisation of + src_extension and header_extension. + (compute_exts_from_gf): Update. + (compute_exts_from_src): Update. + (output_files): Update. + * src/reader.c (parse_header_extension_decl): New. + (parse_source_extension_decl): New. + (read_declarations): New case statements for the new tokens. + * src/lex.c (percent_table): Add entries for %source_extension + and %header_extension. + * src/lex.h (token_e): New tokens tok_hdrext and tok_srcext. + +2001-08-06 Marc Autret + + * configure.in: Bump to 1.28c. + * doc/bison.texinfo: Texinfo thingies. + +2001-08-04 Pascal Bart + + * tests/atconfig.in (CPPFLAGS): Add. + * tests/calc.at (AT_CHECK): Use CPPFLAGS. + +2001-08-03 Akim Demaille + + Version 1.28b. + +2001-08-03 Akim Demaille + + * tests/Makefile.am (check-local): Ship testsuite. + * tests/calc.at (_AT_DATA_CALC_Y): Prototype all the functions. + Include `string.h'. + +2001-08-03 Akim Demaille + + * configure.in: Try using -Wformat when compiling. + +2001-08-03 Akim Demaille + + * configure.in: Bump to 1.28b. + +2001-08-03 Akim Demaille + + * src/complain.c: Adjust strerror_r portability issues. + +2001-08-03 Akim Demaille + + Version 1.28a. + +2001-08-03 Akim Demaille + + * src/getargs.c, src/getarg.h (skeleton)): Constify. + * src/lex.c (literalchar): Avoid name clashes on `buf'. + * src/getargs.c: Include complain.h. + * src/files.c, src/files.h (skeleton_find): Avoid name clashes. + * lib/quotearg.c, lib/quotearg.h: Update from fileutils 4.1. + +2001-08-03 Akim Demaille + + * src/reader.c (readgram): Display hidden chars in error messages. + +2001-08-03 Akim Demaille + + Update to gettext 0.10.39. + +2001-08-03 Akim Demaille + + * lib/strspn.c: New. + +2001-08-01 Marc Autret + + * doc/bison.texinfo: Update. + * doc/bison.1 (mandoc): Update. + * src/system.h (EXT_GUARD_C, EXT_STYPE_H): Remove .c and .h. + * src/files.c: Support output files extensions computing. + (src_extension): New static variable. + (header_extension): New static variable. + (tr): New function. + (get_extension_index): New function, gets the index of an extension + filename in a string. + (compute_exts_from_gf): New function, computes extensions from the + grammar file extension. + (compute_exts_from_src): New functions, computes extensions from the + C source file extension, file given by ``-o'' option. + (compute_base_names): Update. + (output_files): Update. + +2001-08-01 Robert Anisko + + * doc/bison.texi: Document @$. + (Locations): New section. + +2001-07-18 Akim Demaille + + * Makefile.maint, GNUmakefile: New, from Autoconf 2.52. + * config/prev-version.txt, config/move-if-change: New. + * Makefile.am: Adjust. + +2001-07-08 Pascal Bart + + * src/bison.simple (yyparse): Suppress warning `comparaison + between signed and unsigned'. + +2001-07-05 Pascal Bart + + * src/getargs.h (raw_flag): Remove. + * src/getargs.c: Die on `-r'/`--raw'. + * src/lex.c (parse_percent_token): Die on `%raw'. + * src/reader.c (output_token_defines): Suppress call to `raw_flag'. + * tests/calc.at: Suppress test with option `--raw'. + +2001-07-14 Akim Demaille + + * config/: New. + * configure.in: Require Autoconf 2.50. + Update to gettext 0.10.38. + +2001-03-16 Akim Demaille + + * doc/bison.texinfo: ANSIfy the examples. + +2001-03-16 Akim Demaille + + * getargs.c (skeleton): New variable. + (longopts): --skeleton is a new option. + (shortopts, getargs): -S is a new option. + * getargs.h: Declare skeleton. + * output.c (output_parser): Use it. + +2001-03-16 Akim Demaille + + * m4/strerror_r.m4: New. + * m4/error.m4: Run AC_FUNC_STRERROR_R. + * lib/error.h, lib/error.c: Update. + +2001-03-16 Akim Demaille + + * src/getargs.c (longopts): Clean up. + +2001-02-21 Akim Demaille + + * src/reader.c (gensym): `gensym_count' is your own. + Use a static buf to create the symbol name, as token_buffer is no + longer a buffer. + +2001-02-08 Akim Demaille + + * src/conflicts.c (conflict_report): Be sure not to append to res + between two calls, which could happen if both first sprintf were + skipped, but not the first cp += strlen. + 2001-02-08 Akim Demaille * lib/memchr.c, lib/stpcpy.c, lib/strndup.c, lib/strnlen.c: