Commit cb773845 by Zack Weinberg Committed by Zack Weinberg

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
parent 71b7be38
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.
* tree.h: Prototype it.
......
......@@ -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.
......
......@@ -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
......
......@@ -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 ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment