cpphash.h (struct cpp_reader): Add print_version field.

* cpphash.h (struct cpp_reader): Add print_version field.
	* cppinit.c (cpp_handle_option): For -v, -version, and --version,
	just set print_version and other flags as appropriate.
	(cpp_post_options): Print version here if print_version is set.

	* toplev.c (exit_after_options): New flag.
	(independent_decode_option): Don't exit here; just set
	exit_after_options.
	(main): Exit after calling lang_hooks.post_options if
	exit_after_options is true.

	* cppinit.c (append_include_chain): Drop never-used case QUOTE.
	(merge_include_chains): Adjust comment to match code.

From-SVN: r40171
This commit is contained in:
Zack Weinberg 2001-03-02 00:42:28 +00:00 committed by Zack Weinberg
parent 71b7be38c3
commit cb7738452f
4 changed files with 47 additions and 16 deletions

View File

@ -1,3 +1,19 @@
2001-03-01 Zack Weinberg <zackw@stanford.edu>
* cpphash.h (struct cpp_reader): Add print_version field.
* cppinit.c (cpp_handle_option): For -v, -version, and --version,
just set print_version and other flags as appropriate.
(cpp_post_options): Print version here if print_version is set.
* toplev.c (exit_after_options): New flag.
(independent_decode_option): Don't exit here; just set
exit_after_options.
(main): Exit after calling lang_hooks.post_options if
exit_after_options is true.
* cppinit.c (append_include_chain): Drop never-used case QUOTE.
(merge_include_chains): Adjust comment to match code.
2001-03-01 Zack Weinberg <zackw@stanford.edu>
* stringpool.c (set_identifier): New function.

View File

@ -343,6 +343,10 @@ struct cpp_reader
/* True if we are skipping a failed conditional group. */
unsigned char skipping;
/* Whether to print our version number. Done this way so
we don't get it twice for -v -version. */
unsigned char print_version;
};
/* Character classes. Based on the more primitive macros in safe-ctype.h.

View File

@ -117,8 +117,9 @@ static void new_pending_directive PARAMS ((struct cpp_pending *,
static void output_deps PARAMS ((cpp_reader *));
static int parse_option PARAMS ((const char *));
/* Fourth argument to append_include_chain: chain to use. */
enum { QUOTE = 0, BRACKET, SYSTEM, AFTER };
/* Fourth argument to append_include_chain: chain to use.
Note it's never asked to append to the quote chain. */
enum { BRACKET = 0, SYSTEM, AFTER };
/* If we have designated initializers (GCC >2.7) these tables can be
initialized, constant data. Otherwise, they have to be filled in at
@ -250,7 +251,6 @@ append_include_chain (pfile, dir, path, cxx_aware)
switch (path)
{
case QUOTE: APPEND (pend, quote, new); break;
case BRACKET: APPEND (pend, brack, new); break;
case SYSTEM: APPEND (pend, systm, new); break;
case AFTER: APPEND (pend, after, new); break;
@ -338,7 +338,7 @@ merge_include_chains (pfile)
/* This is a bit tricky. First we drop dupes from the quote-include
list. Then we drop dupes from the bracket-include list.
Finally, if qtail and brack are the same directory, we cut out
brack.
brack and move brack up to point to qtail.
We can't just merge the lists and then uniquify them because
then we may lose directories from the <> search path that should
@ -1316,18 +1316,14 @@ cpp_handle_option (pfile, argc, argv)
verbose and -version. Historical reasons, don't ask. */
case OPT__version:
CPP_OPTION (pfile, help_only) = 1;
goto version;
pfile->print_version = 1;
break;
case OPT_v:
CPP_OPTION (pfile, verbose) = 1;
goto version;
pfile->print_version = 1;
break;
case OPT_version:
version:
fprintf (stderr, _("GNU CPP version %s (cpplib)"), version_string);
#ifdef TARGET_VERSION
TARGET_VERSION;
#endif
fputc ('\n', stderr);
pfile->print_version = 1;
break;
case OPT_C:
@ -1684,6 +1680,15 @@ void
cpp_post_options (pfile)
cpp_reader *pfile;
{
if (pfile->print_version)
{
fprintf (stderr, _("GNU CPP version %s (cpplib)"), version_string);
#ifdef TARGET_VERSION
TARGET_VERSION;
#endif
fputc ('\n', stderr);
}
/* Canonicalize in_fname and out_fname. We guarantee they are not
NULL, and that the empty string represents stdin / stdout. */
if (CPP_OPTION (pfile, in_fname) == NULL

View File

@ -391,6 +391,9 @@ int errorcount = 0;
int warningcount = 0;
int sorrycount = 0;
/* Nonzero if we should exit after parsing options. */
static int exit_after_options = 0;
/* The FUNCTION_DECL for the function currently being compiled,
or 0 if between functions. */
tree current_function_decl;
@ -4368,19 +4371,19 @@ independent_decode_option (argc, argv)
if (!strcmp (arg, "-help"))
{
display_help ();
exit (0);
exit_after_options = 1;
}
if (!strcmp (arg, "-target-help"))
{
display_target_options ();
exit (0);
exit_after_options = 1;
}
if (!strcmp (arg, "-version"))
{
print_version (stderr, "");
exit (0);
exit_after_options = 1;
}
/* Handle '--param <name>=<value>'. */
@ -4830,6 +4833,9 @@ main (argc, argv)
if (lang_hooks.post_options)
(*lang_hooks.post_options) ();
if (exit_after_options)
exit (0);
/* Reflect any language-specific diagnostic option setting. */
reshape_diagnostic_buffer ();