From 4ecbf79698e495808bea66403211a2449f0fff52 Mon Sep 17 00:00:00 2001 From: Marc Autret Date: Tue, 14 Aug 2001 11:28:48 +0000 Subject: [PATCH] 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. --- ChangeLog | 10 ++++++++++ NEWS | 4 ++-- src/files.c | 21 ++++++++++++--------- src/lex.c | 2 +- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index ef2baf2d..4f039d22 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +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 diff --git a/NEWS b/NEWS index 27c16351..e53400b2 100644 --- a/NEWS +++ b/NEWS @@ -21,8 +21,8 @@ Changes in version 1.28c: of the #line lines with path names including backslashes. * New directives. - `%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose' and - `%debug'. + `%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose', + `%debug', `%source_extension' and `%header_extension'. Changes in version 1.28: diff --git a/src/files.c b/src/files.c index cf1cdca6..402025bf 100644 --- a/src/files.c +++ b/src/files.c @@ -210,12 +210,16 @@ get_extension_index(const char *filename) static void compute_exts_from_gf(const char *ext) { - if (!src_extension) + /* Checks if SRC_EXTENSION is NULL. In the other case, %source_extension + was specified in the grammar file. */ + if (src_extension == NULL) { src_extension = tr(ext, 'y', 'c'); src_extension = tr(src_extension, 'Y', 'C'); } - if (!header_extension) + /* Checks if HEADER_EXTENSION is NULL. In the other case, + %header_extension was specified in the grammar file. */ + if (header_extension == NULL) { header_extension = tr(ext, 'y', 'h'); header_extension = tr(header_extension, 'Y', 'H'); @@ -226,13 +230,12 @@ compute_exts_from_gf(const char *ext) static void compute_exts_from_src(const char *ext) { - if (!src_extension) - src_extension = xstrdup(ext); - if (!header_extension) - { - header_extension = tr(ext, 'c', 'h'); - header_extension = tr(header_extension, 'C', 'H'); - } + /* We use this function when the user specifies `-o' or `--output', + so the extenions must be computed unconditionally from the file name + given by this option. */ + src_extension = xstrdup(ext); + header_extension = tr(ext, 'c', 'h'); + header_extension = tr(header_extension, 'C', 'H'); } /* FIXME: Should use xstrndup. */ diff --git a/src/lex.c b/src/lex.c index 05599980..4bd0a6f2 100644 --- a/src/lex.c +++ b/src/lex.c @@ -551,9 +551,9 @@ struct percent_table_struct percent_table[] = { "output_file", &spec_outfile, tok_setopt }, /* -o */ { "file_prefix", &spec_file_prefix, tok_setopt }, /* -b */ { "name_prefix", &spec_name_prefix, tok_setopt }, /* -p */ +#endif { "header_extension", NULL, tok_hdrext}, { "source_extension", NULL, tok_srcext}, -#endif { "verbose", &verbose_flag, tok_noop }, /* -v */ { "debug", &debug_flag, tok_noop }, /* -t */ { "semantic_parser", &semantic_parser, tok_noop }, -- 2.45.2