Commit ae79697b by Zack Weinberg

cpplib.h: Merge struct cpp_options into struct cpp_reader.

	* cpplib.h: Merge struct cpp_options into struct cpp_reader.
	Reorder struct cpp_options and struct cpp_reader for better
	packing.  Replace CPP_OPTIONS macro with CPP_OPTION which
	takes two args.  Change all 'char' flags to 'unsigned char'.
	Move show_column flag into struct cpp_options.  Don't
	prototype cpp_options_init.
	* cpphash.h, cpperror.c, cppexp.c, cppfiles.c, cpphash.c,
	cppinit.c, cpplex.c, cpplib.c:
	Replace CPP_OPTIONS (pfile)->whatever with
	CPP_OPTION (pfile, whatever), and likewise for
	opts = CPP_OPTIONS (pfile); ... opts->whatever;

	* cppinit.c (merge_include_chains): Take a cpp_reader *.
	Extract CPP_OPTION (pfile, pending) and work with that
	directly.
	(cpp_options_init): Delete.
	(cpp_reader_init): Turn on on-by-default options here.
	Allocate the pending structure here.
	(cl_options, enum opt_code): Define these from the same table,
	kept in a large macro.  Add -fshow-column and -fno-show-column
	options.

	* cpperror.c (v_message): If show_column is off, don't print
	the column number.

	* cppmain.c: Update for new interface.
	* fix-header.c: Likewise.

From-SVN: r32850
parent 7bde2862
2000-03-31 Zack Weinberg <zack@wolery.cumb.org>
* cpplib.h: Merge struct cpp_options into struct cpp_reader.
Reorder struct cpp_options and struct cpp_reader for better
packing. Replace CPP_OPTIONS macro with CPP_OPTION which
takes two args. Change all 'char' flags to 'unsigned char'.
Move show_column flag into struct cpp_options. Don't
prototype cpp_options_init.
* cpphash.h, cpperror.c, cppexp.c, cppfiles.c, cpphash.c,
cppinit.c, cpplex.c, cpplib.c:
Replace CPP_OPTIONS (pfile)->whatever with
CPP_OPTION (pfile, whatever), and likewise for
opts = CPP_OPTIONS (pfile); ... opts->whatever;
* cppinit.c (merge_include_chains): Take a cpp_reader *.
Extract CPP_OPTION (pfile, pending) and work with that
directly.
(cpp_options_init): Delete.
(cpp_reader_init): Turn on on-by-default options here.
Allocate the pending structure here.
(cl_options, enum opt_code): Define these from the same table,
kept in a large macro. Add -fshow-column and -fno-show-column
options.
* cpperror.c (v_message): If show_column is off, don't print
the column number.
* cppmain.c: Update for new interface.
* fix-header.c: Likewise.
2000-03-30 Geoff Keating <geoffk@cygnus.com> 2000-03-30 Geoff Keating <geoffk@cygnus.com>
* config/rs6000/t-aix43 (AR_FLAGS_FOR_TARGET): Adjust for new * config/rs6000/t-aix43 (AR_FLAGS_FOR_TARGET): Adjust for new
......
...@@ -121,7 +121,8 @@ v_message (pfile, is_error, file, line, col, msg, ap) ...@@ -121,7 +121,8 @@ v_message (pfile, is_error, file, line, col, msg, ap)
cpp_buf_line_and_col (ip, &line, &col); cpp_buf_line_and_col (ip, &line, &col);
print_containing_files (pfile, ip); print_containing_files (pfile, ip);
print_file_and_line (file, line, col); print_file_and_line (file, line,
CPP_OPTION (pfile, show_column) ? col : 0);
} }
else else
fprintf (stderr, "%s: ", progname); fprintf (stderr, "%s: ", progname);
...@@ -217,7 +218,7 @@ cpp_error VPARAMS ((cpp_reader * pfile, const char *msgid, ...)) ...@@ -217,7 +218,7 @@ cpp_error VPARAMS ((cpp_reader * pfile, const char *msgid, ...))
msgid = va_arg (ap, const char *); msgid = va_arg (ap, const char *);
#endif #endif
if (CPP_OPTIONS (pfile)->inhibit_errors) if (CPP_OPTION (pfile, inhibit_errors))
return; return;
v_message (pfile, 1, NULL, -1, -1, msgid, ap); v_message (pfile, 1, NULL, -1, -1, msgid, ap);
...@@ -245,7 +246,7 @@ cpp_error_with_line VPARAMS ((cpp_reader *pfile, int line, int column, ...@@ -245,7 +246,7 @@ cpp_error_with_line VPARAMS ((cpp_reader *pfile, int line, int column,
msgid = va_arg (ap, const char *); msgid = va_arg (ap, const char *);
#endif #endif
if (CPP_OPTIONS (pfile)->inhibit_errors) if (CPP_OPTION (pfile, inhibit_errors))
return; return;
v_message (pfile, 1, NULL, line, column, msgid, ap); v_message (pfile, 1, NULL, line, column, msgid, ap);
...@@ -277,7 +278,7 @@ cpp_warning VPARAMS ((cpp_reader * pfile, const char *msgid, ...)) ...@@ -277,7 +278,7 @@ cpp_warning VPARAMS ((cpp_reader * pfile, const char *msgid, ...))
msgid = va_arg (ap, const char *); msgid = va_arg (ap, const char *);
#endif #endif
if (CPP_OPTIONS (pfile)->inhibit_warnings) if (CPP_OPTION (pfile, inhibit_warnings))
return; return;
v_message (pfile, 0, NULL, -1, -1, msgid, ap); v_message (pfile, 0, NULL, -1, -1, msgid, ap);
...@@ -305,7 +306,7 @@ cpp_warning_with_line VPARAMS ((cpp_reader * pfile, int line, int column, ...@@ -305,7 +306,7 @@ cpp_warning_with_line VPARAMS ((cpp_reader * pfile, int line, int column,
msgid = va_arg (ap, const char *); msgid = va_arg (ap, const char *);
#endif #endif
if (CPP_OPTIONS (pfile)->inhibit_warnings) if (CPP_OPTION (pfile, inhibit_warnings))
return; return;
v_message (pfile, 0, NULL, line, column, msgid, ap); v_message (pfile, 0, NULL, line, column, msgid, ap);
...@@ -328,12 +329,12 @@ cpp_pedwarn VPARAMS ((cpp_reader * pfile, const char *msgid, ...)) ...@@ -328,12 +329,12 @@ cpp_pedwarn VPARAMS ((cpp_reader * pfile, const char *msgid, ...))
msgid = va_arg (ap, const char *); msgid = va_arg (ap, const char *);
#endif #endif
if (CPP_OPTIONS (pfile)->pedantic_errors if (CPP_OPTION (pfile, pedantic_errors)
? CPP_OPTIONS (pfile)->inhibit_errors ? CPP_OPTION (pfile, inhibit_errors)
: CPP_OPTIONS (pfile)->inhibit_warnings) : CPP_OPTION (pfile, inhibit_warnings))
return; return;
v_message (pfile, CPP_OPTIONS (pfile)->pedantic_errors, v_message (pfile, CPP_OPTION (pfile, pedantic_errors),
NULL, -1, -1, msgid, ap); NULL, -1, -1, msgid, ap);
va_end(ap); va_end(ap);
} }
...@@ -359,12 +360,12 @@ cpp_pedwarn_with_line VPARAMS ((cpp_reader * pfile, int line, int column, ...@@ -359,12 +360,12 @@ cpp_pedwarn_with_line VPARAMS ((cpp_reader * pfile, int line, int column,
msgid = va_arg (ap, const char *); msgid = va_arg (ap, const char *);
#endif #endif
if (CPP_OPTIONS (pfile)->pedantic_errors if (CPP_OPTION (pfile, pedantic_errors)
? CPP_OPTIONS (pfile)->inhibit_errors ? CPP_OPTION (pfile, inhibit_errors)
: CPP_OPTIONS (pfile)->inhibit_warnings) : CPP_OPTION (pfile, inhibit_warnings))
return; return;
v_message (pfile, CPP_OPTIONS (pfile)->pedantic_errors, v_message (pfile, CPP_OPTION (pfile, pedantic_errors),
NULL, line, column, msgid, ap); NULL, line, column, msgid, ap);
va_end(ap); va_end(ap);
} }
...@@ -396,12 +397,12 @@ cpp_pedwarn_with_file_and_line VPARAMS ((cpp_reader *pfile, ...@@ -396,12 +397,12 @@ cpp_pedwarn_with_file_and_line VPARAMS ((cpp_reader *pfile,
msgid = va_arg (ap, const char *); msgid = va_arg (ap, const char *);
#endif #endif
if (CPP_OPTIONS (pfile)->pedantic_errors if (CPP_OPTION (pfile, pedantic_errors)
? CPP_OPTIONS (pfile)->inhibit_errors ? CPP_OPTION (pfile, inhibit_errors)
: CPP_OPTIONS (pfile)->inhibit_warnings) : CPP_OPTION (pfile, inhibit_warnings))
return; return;
v_message (pfile, CPP_OPTIONS (pfile)->pedantic_errors, v_message (pfile, CPP_OPTION (pfile, pedantic_errors),
file, line, col, msgid, ap); file, line, col, msgid, ap);
va_end(ap); va_end(ap);
} }
......
...@@ -204,7 +204,7 @@ parse_number (pfile, start, end) ...@@ -204,7 +204,7 @@ parse_number (pfile, start, end)
cpp_error (pfile, "invalid number in #if expression"); cpp_error (pfile, "invalid number in #if expression");
goto error; goto error;
} }
else if (spec_long > (CPP_OPTIONS (pfile)->c89 ? 1 : 2)) else if (spec_long > (CPP_OPTION (pfile, c89) ? 1 : 2))
{ {
cpp_error (pfile, "too many `l' suffixes in integer constant"); cpp_error (pfile, "too many `l' suffixes in integer constant");
goto error; goto error;
...@@ -443,7 +443,7 @@ lex (pfile, skip_evaluation) ...@@ -443,7 +443,7 @@ lex (pfile, skip_evaluation)
op.unsignedp = 0; op.unsignedp = 0;
op.value = 0; op.value = 0;
if (CPP_OPTIONS (pfile)->warn_undef && !skip_evaluation) if (CPP_OPTION (pfile, warn_undef) && !skip_evaluation)
cpp_warning (pfile, "`%.*s' is not defined", cpp_warning (pfile, "`%.*s' is not defined",
(int) (tok_end - tok_start), tok_start); (int) (tok_end - tok_start), tok_start);
return op; return op;
...@@ -505,7 +505,7 @@ parse_escape (pfile, string_ptr, result_mask) ...@@ -505,7 +505,7 @@ parse_escape (pfile, string_ptr, result_mask)
return TARGET_BS; return TARGET_BS;
case 'e': case 'e':
case 'E': case 'E':
if (CPP_OPTIONS (pfile)->pedantic) if (CPP_PEDANTIC (pfile))
cpp_pedwarn (pfile, "non-ANSI-standard escape sequence, `\\%c'", c); cpp_pedwarn (pfile, "non-ANSI-standard escape sequence, `\\%c'", c);
return TARGET_ESC; return TARGET_ESC;
case 'f': case 'f':
......
...@@ -243,7 +243,7 @@ find_include_file (pfile, fname, search_start, ihash, before) ...@@ -243,7 +243,7 @@ find_include_file (pfile, fname, search_start, ihash, before)
name[path->nlen] = '/'; name[path->nlen] = '/';
strcpy (&name[path->nlen+1], fname); strcpy (&name[path->nlen+1], fname);
_cpp_simplify_pathname (name); _cpp_simplify_pathname (name);
if (CPP_OPTIONS (pfile)->remap) if (CPP_OPTION (pfile, remap))
name = remap_filename (pfile, name, path); name = remap_filename (pfile, name, path);
f = open_include_file (pfile, name); f = open_include_file (pfile, name);
...@@ -369,7 +369,7 @@ read_name_map (pfile, dirname) ...@@ -369,7 +369,7 @@ read_name_map (pfile, dirname)
char *name; char *name;
FILE *f; FILE *f;
for (map_list_ptr = CPP_OPTIONS (pfile)->map_list; map_list_ptr; for (map_list_ptr = CPP_OPTION (pfile, map_list); map_list_ptr;
map_list_ptr = map_list_ptr->map_list_next) map_list_ptr = map_list_ptr->map_list_next)
if (! strcmp (map_list_ptr->map_list_name, dirname)) if (! strcmp (map_list_ptr->map_list_name, dirname))
return map_list_ptr->map_list_map; return map_list_ptr->map_list_map;
...@@ -429,8 +429,8 @@ read_name_map (pfile, dirname) ...@@ -429,8 +429,8 @@ read_name_map (pfile, dirname)
fclose (f); fclose (f);
} }
map_list_ptr->map_list_next = CPP_OPTIONS (pfile)->map_list; map_list_ptr->map_list_next = CPP_OPTION (pfile, map_list);
CPP_OPTIONS (pfile)->map_list = map_list_ptr; CPP_OPTION (pfile, map_list) = map_list_ptr;
return map_list_ptr->map_list_map; return map_list_ptr->map_list_map;
} }
...@@ -511,9 +511,9 @@ _cpp_execute_include (pfile, fname, len, no_reinclude, search_start) ...@@ -511,9 +511,9 @@ _cpp_execute_include (pfile, fname, len, no_reinclude, search_start)
if (!search_start) if (!search_start)
{ {
if (angle_brackets) if (angle_brackets)
search_start = CPP_OPTIONS (pfile)->bracket_include; search_start = CPP_OPTION (pfile, bracket_include);
else if (CPP_OPTIONS (pfile)->ignore_srcdir) else if (CPP_OPTION (pfile, ignore_srcdir))
search_start = CPP_OPTIONS (pfile)->quote_include; search_start = CPP_OPTION (pfile, quote_include);
else else
search_start = CPP_BUFFER (pfile)->actual_dir; search_start = CPP_BUFFER (pfile)->actual_dir;
} }
...@@ -536,7 +536,7 @@ _cpp_execute_include (pfile, fname, len, no_reinclude, search_start) ...@@ -536,7 +536,7 @@ _cpp_execute_include (pfile, fname, len, no_reinclude, search_start)
if (fd == -1) if (fd == -1)
{ {
if (CPP_OPTIONS (pfile)->print_deps_missing_files if (CPP_OPTION (pfile, print_deps_missing_files)
&& CPP_PRINT_DEPS (pfile) > (angle_brackets || && CPP_PRINT_DEPS (pfile) > (angle_brackets ||
(pfile->system_include_depth > 0))) (pfile->system_include_depth > 0)))
{ {
...@@ -548,10 +548,10 @@ _cpp_execute_include (pfile, fname, len, no_reinclude, search_start) ...@@ -548,10 +548,10 @@ _cpp_execute_include (pfile, fname, len, no_reinclude, search_start)
struct file_name_list *ptr; struct file_name_list *ptr;
/* If requested as a system header, assume it belongs in /* If requested as a system header, assume it belongs in
the first system header directory. */ the first system header directory. */
if (CPP_OPTIONS (pfile)->bracket_include) if (CPP_OPTION (pfile, bracket_include))
ptr = CPP_OPTIONS (pfile)->bracket_include; ptr = CPP_OPTION (pfile, bracket_include);
else else
ptr = CPP_OPTIONS (pfile)->quote_include; ptr = CPP_OPTION (pfile, quote_include);
p = (char *) alloca (strlen (ptr->name) p = (char *) alloca (strlen (ptr->name)
+ strlen (fname) + 2); + strlen (fname) + 2);
...@@ -586,7 +586,7 @@ _cpp_execute_include (pfile, fname, len, no_reinclude, search_start) ...@@ -586,7 +586,7 @@ _cpp_execute_include (pfile, fname, len, no_reinclude, search_start)
deps_add_dep (pfile->deps, ihash->name); deps_add_dep (pfile->deps, ihash->name);
/* Handle -H option. */ /* Handle -H option. */
if (CPP_OPTIONS(pfile)->print_include_names) if (CPP_OPTION (pfile, print_include_names))
{ {
cpp_buffer *fp = CPP_BUFFER (pfile); cpp_buffer *fp = CPP_BUFFER (pfile);
while ((fp = CPP_PREV_BUFFER (fp)) != NULL) while ((fp = CPP_PREV_BUFFER (fp)) != NULL)
...@@ -753,7 +753,7 @@ read_include_file (pfile, fd, ihash) ...@@ -753,7 +753,7 @@ read_include_file (pfile, fd, ihash)
/* The ->actual_dir field is only used when ignore_srcdir is not in effect; /* The ->actual_dir field is only used when ignore_srcdir is not in effect;
see do_include */ see do_include */
if (!CPP_OPTIONS (pfile)->ignore_srcdir) if (!CPP_OPTION (pfile, ignore_srcdir))
fp->actual_dir = actual_directory (pfile, ihash->name); fp->actual_dir = actual_directory (pfile, ihash->name);
pfile->input_stack_listing_current = 0; pfile->input_stack_listing_current = 0;
...@@ -819,7 +819,7 @@ actual_directory (pfile, fname) ...@@ -819,7 +819,7 @@ actual_directory (pfile, fname)
x = (struct file_name_list *) xmalloc (sizeof (struct file_name_list)); x = (struct file_name_list *) xmalloc (sizeof (struct file_name_list));
x->name = dir; x->name = dir;
x->nlen = dlen; x->nlen = dlen;
x->next = CPP_OPTIONS (pfile)->quote_include; x->next = CPP_OPTION (pfile, quote_include);
x->alloc = pfile->actual_dirs; x->alloc = pfile->actual_dirs;
x->sysp = CPP_BUFFER (pfile)->system_header_p; x->sysp = CPP_BUFFER (pfile)->system_header_p;
x->name_map = NULL; x->name_map = NULL;
......
...@@ -406,7 +406,7 @@ collect_expansion (pfile, arglist) ...@@ -406,7 +406,7 @@ collect_expansion (pfile, arglist)
if (last_token == STRIZE) if (last_token == STRIZE)
cpp_error (pfile, "`#' is not followed by a macro argument name"); cpp_error (pfile, "`#' is not followed by a macro argument name");
if (CPP_TRADITIONAL (pfile) || CPP_OPTIONS (pfile)->warn_stringify) if (CPP_TRADITIONAL (pfile) || CPP_OPTION (pfile, warn_stringify))
goto maybe_trad_stringify; goto maybe_trad_stringify;
else else
goto norm; goto norm;
...@@ -480,7 +480,7 @@ collect_expansion (pfile, arglist) ...@@ -480,7 +480,7 @@ collect_expansion (pfile, arglist)
(int) argv[i].len, argv[i].name); (int) argv[i].len, argv[i].name);
continue; continue;
} }
if (CPP_OPTIONS (pfile)->warn_stringify) if (CPP_OPTION (pfile, warn_stringify))
cpp_warning (pfile, "macro argument `%.*s' is stringified", cpp_warning (pfile, "macro argument `%.*s' is stringified",
(int) argv[i].len, argv[i].name); (int) argv[i].len, argv[i].name);
...@@ -614,7 +614,7 @@ collect_formal_parameters (pfile) ...@@ -614,7 +614,7 @@ collect_formal_parameters (pfile)
cpp_error (pfile, "duplicate macro argument name `%s'", tok); cpp_error (pfile, "duplicate macro argument name `%s'", tok);
continue; continue;
} }
if (CPP_PEDANTIC (pfile) && CPP_OPTIONS (pfile)->c99 if (CPP_PEDANTIC (pfile) && CPP_OPTION (pfile, c99)
&& len == sizeof "__VA_ARGS__" - 1 && len == sizeof "__VA_ARGS__" - 1
&& !strncmp (tok, "__VA_ARGS__", len)) && !strncmp (tok, "__VA_ARGS__", len))
cpp_pedwarn (pfile, cpp_pedwarn (pfile,
...@@ -661,7 +661,7 @@ collect_formal_parameters (pfile) ...@@ -661,7 +661,7 @@ collect_formal_parameters (pfile)
those elsewhere. */ those elsewhere. */
if (argv[argc].len == 0) if (argv[argc].len == 0)
{ {
if (CPP_PEDANTIC (pfile) && ! CPP_OPTIONS (pfile)->c99) if (CPP_PEDANTIC (pfile) && ! CPP_OPTION (pfile, c99))
cpp_pedwarn (pfile, "C89 does not permit varargs macros"); cpp_pedwarn (pfile, "C89 does not permit varargs macros");
len = sizeof "__VA_ARGS__" - 1; len = sizeof "__VA_ARGS__" - 1;
...@@ -740,8 +740,8 @@ _cpp_create_definition (pfile, funlike) ...@@ -740,8 +740,8 @@ _cpp_create_definition (pfile, funlike)
pfile->no_macro_expand++; pfile->no_macro_expand++;
pfile->parsing_define_directive++; pfile->parsing_define_directive++;
CPP_OPTIONS (pfile)->discard_comments++; CPP_OPTION (pfile, discard_comments)++;
CPP_OPTIONS (pfile)->no_line_commands++; CPP_OPTION (pfile, no_line_commands)++;
if (funlike) if (funlike)
{ {
...@@ -760,15 +760,15 @@ _cpp_create_definition (pfile, funlike) ...@@ -760,15 +760,15 @@ _cpp_create_definition (pfile, funlike)
pfile->no_macro_expand--; pfile->no_macro_expand--;
pfile->parsing_define_directive--; pfile->parsing_define_directive--;
CPP_OPTIONS (pfile)->discard_comments--; CPP_OPTION (pfile, discard_comments)--;
CPP_OPTIONS (pfile)->no_line_commands--; CPP_OPTION (pfile, no_line_commands)--;
return defn; return defn;
err: err:
pfile->no_macro_expand--; pfile->no_macro_expand--;
pfile->parsing_define_directive--; pfile->parsing_define_directive--;
CPP_OPTIONS (pfile)->discard_comments--; CPP_OPTION (pfile, discard_comments)--;
CPP_OPTIONS (pfile)->no_line_commands--; CPP_OPTION (pfile, no_line_commands)--;
return 0; return 0;
} }
...@@ -1069,8 +1069,8 @@ _cpp_macroexpand (pfile, hp) ...@@ -1069,8 +1069,8 @@ _cpp_macroexpand (pfile, hp)
rest_args = 0; rest_args = 0;
/* Skip over the opening parenthesis. */ /* Skip over the opening parenthesis. */
CPP_OPTIONS (pfile)->discard_comments++; CPP_OPTION (pfile, discard_comments)++;
CPP_OPTIONS (pfile)->no_line_commands++; CPP_OPTION (pfile, no_line_commands)++;
pfile->no_macro_expand++; pfile->no_macro_expand++;
pfile->no_directives++; pfile->no_directives++;
...@@ -1102,8 +1102,8 @@ _cpp_macroexpand (pfile, hp) ...@@ -1102,8 +1102,8 @@ _cpp_macroexpand (pfile, hp)
i++; i++;
} }
while (token == CPP_COMMA); while (token == CPP_COMMA);
CPP_OPTIONS (pfile)->discard_comments--; CPP_OPTION (pfile, discard_comments)--;
CPP_OPTIONS (pfile)->no_line_commands--; CPP_OPTION (pfile, no_line_commands)--;
pfile->no_macro_expand--; pfile->no_macro_expand--;
pfile->no_directives--; pfile->no_directives--;
if (token != CPP_RPAREN) if (token != CPP_RPAREN)
...@@ -1457,7 +1457,7 @@ unsafe_chars (pfile, c1, c2) ...@@ -1457,7 +1457,7 @@ unsafe_chars (pfile, c1, c2)
goto letter; goto letter;
case '$': case '$':
if (CPP_OPTIONS (pfile)->dollars_in_ident) if (CPP_OPTION (pfile, dollars_in_ident))
goto letter; goto letter;
return 0; return 0;
......
...@@ -172,7 +172,7 @@ typedef struct ihash IHASH; ...@@ -172,7 +172,7 @@ typedef struct ihash IHASH;
#define IShspace 0x08 /* ' ' \t \f \v */ #define IShspace 0x08 /* ' ' \t \f \v */
#define ISspace 0x10 /* ' ' \t \f \v \n */ #define ISspace 0x10 /* ' ' \t \f \v \n */
#define _dollar_ok(x) ((x) == '$' && CPP_OPTIONS (pfile)->dollars_in_ident) #define _dollar_ok(x) ((x) == '$' && CPP_OPTION (pfile, dollars_in_ident))
#define is_idchar(x) ((_cpp_IStable[x] & ISidnum) || _dollar_ok(x)) #define is_idchar(x) ((_cpp_IStable[x] & ISidnum) || _dollar_ok(x))
#define is_idstart(x) ((_cpp_IStable[x] & ISidstart) || _dollar_ok(x)) #define is_idstart(x) ((_cpp_IStable[x] & ISidstart) || _dollar_ok(x))
...@@ -223,10 +223,10 @@ extern unsigned char _cpp_IStable[256]; ...@@ -223,10 +223,10 @@ extern unsigned char _cpp_IStable[256];
#define CPP_BUMP_LINE(PFILE) CPP_BUMP_BUFFER_LINE(CPP_BUFFER(PFILE)) #define CPP_BUMP_LINE(PFILE) CPP_BUMP_BUFFER_LINE(CPP_BUFFER(PFILE))
#define CPP_PREV_BUFFER(BUFFER) ((BUFFER)->prev) #define CPP_PREV_BUFFER(BUFFER) ((BUFFER)->prev)
#define CPP_PRINT_DEPS(PFILE) (CPP_OPTIONS (PFILE)->print_deps) #define CPP_PRINT_DEPS(PFILE) CPP_OPTION (PFILE, print_deps)
#define CPP_TRADITIONAL(PFILE) (CPP_OPTIONS(PFILE)->traditional) #define CPP_TRADITIONAL(PFILE) CPP_OPTION (PFILE, traditional)
#define CPP_PEDANTIC(PFILE) \ #define CPP_PEDANTIC(PFILE) \
(CPP_OPTIONS (PFILE)->pedantic && !CPP_BUFFER (pfile)->system_header_p) (CPP_OPTION (PFILE, pedantic) && !CPP_BUFFER (pfile)->system_header_p)
/* CPP_IS_MACRO_BUFFER is true if the buffer contains macro expansion. /* CPP_IS_MACRO_BUFFER is true if the buffer contains macro expansion.
(Note that it is false while we're expanding macro *arguments*.) */ (Note that it is false while we're expanding macro *arguments*.) */
......
...@@ -119,7 +119,7 @@ cpp_scan_buffer (pfile) ...@@ -119,7 +119,7 @@ cpp_scan_buffer (pfile)
{ {
cpp_buffer *buffer = CPP_BUFFER (pfile); cpp_buffer *buffer = CPP_BUFFER (pfile);
enum cpp_token token; enum cpp_token token;
if (CPP_OPTIONS (pfile)->no_output) if (CPP_OPTION (pfile, no_output))
{ {
long old_written = CPP_WRITTEN (pfile); long old_written = CPP_WRITTEN (pfile);
/* In no-output mode, we can ignore everything but directives. */ /* In no-output mode, we can ignore everything but directives. */
...@@ -193,12 +193,12 @@ cpp_expand_to_buffer (pfile, buf, length) ...@@ -193,12 +193,12 @@ cpp_expand_to_buffer (pfile, buf, length)
ip->has_escapes = 1; ip->has_escapes = 1;
/* Scan the input, create the output. */ /* Scan the input, create the output. */
save_no_output = CPP_OPTIONS (pfile)->no_output; save_no_output = CPP_OPTION (pfile, no_output);
CPP_OPTIONS (pfile)->no_output = 0; CPP_OPTION (pfile, no_output) = 0;
CPP_OPTIONS (pfile)->no_line_commands++; CPP_OPTION (pfile, no_line_commands)++;
cpp_scan_buffer (pfile); cpp_scan_buffer (pfile);
CPP_OPTIONS (pfile)->no_line_commands--; CPP_OPTION (pfile, no_line_commands)--;
CPP_OPTIONS (pfile)->no_output = save_no_output; CPP_OPTION (pfile, no_output) = save_no_output;
CPP_NUL_TERMINATE (pfile); CPP_NUL_TERMINATE (pfile);
} }
...@@ -264,7 +264,7 @@ skip_block_comment (pfile) ...@@ -264,7 +264,7 @@ skip_block_comment (pfile)
else if (c == '/' && prev_c == '*') else if (c == '/' && prev_c == '*')
return; return;
else if (c == '*' && prev_c == '/' else if (c == '*' && prev_c == '/'
&& CPP_OPTIONS (pfile)->warn_comments) && CPP_OPTION (pfile, warn_comments))
cpp_warning (pfile, "`/*' within comment"); cpp_warning (pfile, "`/*' within comment");
prev_c = c; prev_c = c;
...@@ -294,7 +294,7 @@ skip_line_comment (pfile) ...@@ -294,7 +294,7 @@ skip_line_comment (pfile)
/* \r cannot be a macro escape marker here. */ /* \r cannot be a macro escape marker here. */
if (!ACTIVE_MARK_P (pfile)) if (!ACTIVE_MARK_P (pfile))
CPP_BUMP_LINE (pfile); CPP_BUMP_LINE (pfile);
if (CPP_OPTIONS (pfile)->warn_comments) if (CPP_OPTION (pfile, warn_comments))
cpp_warning (pfile, "backslash-newline within line comment"); cpp_warning (pfile, "backslash-newline within line comment");
} }
} }
...@@ -325,9 +325,9 @@ skip_comment (pfile, m) ...@@ -325,9 +325,9 @@ skip_comment (pfile, m)
skip_line_comment (pfile); skip_line_comment (pfile);
return ' '; return ' ';
} }
else if (CPP_OPTIONS (pfile)->cplusplus_comments) else if (CPP_OPTION (pfile, cplusplus_comments))
{ {
if (CPP_OPTIONS (pfile)->c89 if (CPP_OPTION (pfile, c89)
&& CPP_PEDANTIC (pfile) && CPP_PEDANTIC (pfile)
&& ! CPP_BUFFER (pfile)->warned_cplusplus_comments) && ! CPP_BUFFER (pfile)->warned_cplusplus_comments)
{ {
...@@ -344,7 +344,7 @@ skip_comment (pfile, m) ...@@ -344,7 +344,7 @@ skip_comment (pfile, m)
return m; return m;
} }
else if (m == '-' && PEEKC() == '-' else if (m == '-' && PEEKC() == '-'
&& CPP_OPTIONS (pfile)->chill) && CPP_OPTION (pfile, chill))
{ {
skip_line_comment (pfile); skip_line_comment (pfile);
return ' '; return ' ';
...@@ -524,8 +524,8 @@ skip_string (pfile, c) ...@@ -524,8 +524,8 @@ skip_string (pfile, c)
strings of either variety at end of line. This is a strings of either variety at end of line. This is a
kludge around not knowing where comments are in these kludge around not knowing where comments are in these
languages. */ languages. */
if (CPP_OPTIONS (pfile)->lang_fortran if (CPP_OPTION (pfile, lang_fortran)
|| CPP_OPTIONS (pfile)->lang_asm) || CPP_OPTION (pfile, lang_asm))
{ {
FORWARD(-1); FORWARD(-1);
return; return;
...@@ -675,7 +675,6 @@ _cpp_lex_token (pfile) ...@@ -675,7 +675,6 @@ _cpp_lex_token (pfile)
{ {
register int c, c2, c3; register int c, c2, c3;
enum cpp_token token; enum cpp_token token;
struct cpp_options *opts = CPP_OPTIONS (pfile);
get_next: get_next:
c = GETC(); c = GETC();
...@@ -689,7 +688,7 @@ _cpp_lex_token (pfile) ...@@ -689,7 +688,7 @@ _cpp_lex_token (pfile)
goto op2; goto op2;
comment: comment:
if (opts->discard_comments) if (CPP_OPTION (pfile, discard_comments))
c = skip_comment (pfile, c); c = skip_comment (pfile, c);
else else
c = copy_comment (pfile, c); c = copy_comment (pfile, c);
...@@ -698,7 +697,7 @@ _cpp_lex_token (pfile) ...@@ -698,7 +697,7 @@ _cpp_lex_token (pfile)
/* Comments are equivalent to spaces. /* Comments are equivalent to spaces.
For -traditional, a comment is equivalent to nothing. */ For -traditional, a comment is equivalent to nothing. */
if (opts->traditional || !opts->discard_comments) if (CPP_TRADITIONAL (pfile) || !CPP_OPTION (pfile, discard_comments))
return CPP_COMMENT; return CPP_COMMENT;
else else
{ {
...@@ -745,12 +744,12 @@ _cpp_lex_token (pfile) ...@@ -745,12 +744,12 @@ _cpp_lex_token (pfile)
return c == '\'' ? CPP_CHAR : CPP_STRING; return c == '\'' ? CPP_CHAR : CPP_STRING;
case '$': case '$':
if (!opts->dollars_in_ident) if (!CPP_OPTION (pfile, dollars_in_ident))
goto randomchar; goto randomchar;
goto letter; goto letter;
case ':': case ':':
if (opts->cplusplus && PEEKC () == ':') if (CPP_OPTION (pfile, cplusplus) && PEEKC () == ':')
goto op2; goto op2;
goto randomchar; goto randomchar;
...@@ -775,7 +774,7 @@ _cpp_lex_token (pfile) ...@@ -775,7 +774,7 @@ _cpp_lex_token (pfile)
c2 = PEEKC (); c2 = PEEKC ();
if (c2 == '-') if (c2 == '-')
{ {
if (opts->chill) if (CPP_OPTION (pfile, chill))
goto comment; /* Chill style comment */ goto comment; /* Chill style comment */
else else
goto op2; goto op2;
...@@ -784,7 +783,7 @@ _cpp_lex_token (pfile) ...@@ -784,7 +783,7 @@ _cpp_lex_token (pfile)
goto op2; goto op2;
else if (c2 == '>') else if (c2 == '>')
{ {
if (opts->cplusplus && PEEKN (1) == '*') if (CPP_OPTION (pfile, cplusplus) && PEEKN (1) == '*')
{ {
/* In C++, there's a ->* operator. */ /* In C++, there's a ->* operator. */
token = CPP_OTHER; token = CPP_OTHER;
...@@ -842,7 +841,7 @@ _cpp_lex_token (pfile) ...@@ -842,7 +841,7 @@ _cpp_lex_token (pfile)
if (c2 == '=') if (c2 == '=')
goto op2; goto op2;
/* GNU C++ supports MIN and MAX operators <? and >?. */ /* GNU C++ supports MIN and MAX operators <? and >?. */
if (c2 != c && (!opts->cplusplus || c2 != '?')) if (c2 != c && (!CPP_OPTION (pfile, cplusplus) || c2 != '?'))
goto randomchar; goto randomchar;
FORWARD(1); FORWARD(1);
CPP_RESERVE (pfile, 4); CPP_RESERVE (pfile, 4);
...@@ -866,7 +865,7 @@ _cpp_lex_token (pfile) ...@@ -866,7 +865,7 @@ _cpp_lex_token (pfile)
} }
/* In C++ there's a .* operator. */ /* In C++ there's a .* operator. */
if (opts->cplusplus && c2 == '*') if (CPP_OPTION (pfile, cplusplus) && c2 == '*')
goto op2; goto op2;
if (c2 == '.' && PEEKN(1) == '.') if (c2 == '.' && PEEKN(1) == '.')
...@@ -917,7 +916,7 @@ _cpp_lex_token (pfile) ...@@ -917,7 +916,7 @@ _cpp_lex_token (pfile)
if (!is_numchar(c) && c != '.' if (!is_numchar(c) && c != '.'
&& ((c2 != 'e' && c2 != 'E' && ((c2 != 'e' && c2 != 'E'
&& ((c2 != 'p' && c2 != 'P') && ((c2 != 'p' && c2 != 'P')
|| CPP_OPTIONS (pfile)->c89)) || CPP_OPTION (pfile, c89)))
|| (c != '+' && c != '-'))) || (c != '+' && c != '-')))
break; break;
FORWARD(1); FORWARD(1);
...@@ -928,7 +927,7 @@ _cpp_lex_token (pfile) ...@@ -928,7 +927,7 @@ _cpp_lex_token (pfile)
return CPP_NUMBER; return CPP_NUMBER;
case 'b': case 'c': case 'd': case 'h': case 'o': case 'b': case 'c': case 'd': case 'h': case 'o':
case 'B': case 'C': case 'D': case 'H': case 'O': case 'B': case 'C': case 'D': case 'H': case 'O':
if (opts->chill && PEEKC () == '\'') if (CPP_OPTION (pfile, chill) && PEEKC () == '\'')
{ {
pfile->only_seen_white = 0; pfile->only_seen_white = 0;
CPP_RESERVE (pfile, 2); CPP_RESERVE (pfile, 2);
...@@ -1023,7 +1022,7 @@ _cpp_lex_token (pfile) ...@@ -1023,7 +1022,7 @@ _cpp_lex_token (pfile)
if (pfile->only_seen_white == 0) if (pfile->only_seen_white == 0)
pfile->only_seen_white = 1; pfile->only_seen_white = 1;
CPP_BUMP_LINE (pfile); CPP_BUMP_LINE (pfile);
if (! CPP_OPTIONS (pfile)->no_line_commands) if (! CPP_OPTION (pfile, no_line_commands))
{ {
pfile->lineno++; pfile->lineno++;
if (CPP_BUFFER (pfile)->lineno != pfile->lineno) if (CPP_BUFFER (pfile)->lineno != pfile->lineno)
...@@ -1466,12 +1465,12 @@ _cpp_read_and_prescan (pfile, fp, desc, len) ...@@ -1466,12 +1465,12 @@ _cpp_read_and_prescan (pfile, fp, desc, len)
if (t == 0) if (t == 0)
break; break;
if (CPP_OPTIONS (pfile)->warn_trigraphs) if (CPP_OPTION (pfile, warn_trigraphs))
{ {
unsigned long col; unsigned long col;
line_base = find_position (line_base, op, &line); line_base = find_position (line_base, op, &line);
col = op - line_base + 1; col = op - line_base + 1;
if (CPP_OPTIONS (pfile)->trigraphs) if (CPP_OPTION (pfile, trigraphs))
cpp_warning_with_line (pfile, line, col, cpp_warning_with_line (pfile, line, col,
"trigraph ??%c converted to %c", d, t); "trigraph ??%c converted to %c", d, t);
else else
...@@ -1480,7 +1479,7 @@ _cpp_read_and_prescan (pfile, fp, desc, len) ...@@ -1480,7 +1479,7 @@ _cpp_read_and_prescan (pfile, fp, desc, len)
} }
ip += 2; ip += 2;
if (CPP_OPTIONS (pfile)->trigraphs) if (CPP_OPTION (pfile, trigraphs))
{ {
op[-1] = t; /* Overwrite '?' */ op[-1] = t; /* Overwrite '?' */
if (t == '\\') if (t == '\\')
...@@ -1554,7 +1553,7 @@ _cpp_init_input_buffer (pfile) ...@@ -1554,7 +1553,7 @@ _cpp_init_input_buffer (pfile)
memset (tmp, SPECCASE_EMPTY, 1 << CHAR_BIT); memset (tmp, SPECCASE_EMPTY, 1 << CHAR_BIT);
tmp['\r'] = SPECCASE_CR; tmp['\r'] = SPECCASE_CR;
tmp['\\'] = SPECCASE_BACKSLASH; tmp['\\'] = SPECCASE_BACKSLASH;
if (CPP_OPTIONS (pfile)->trigraphs || CPP_OPTIONS (pfile)->warn_trigraphs) if (CPP_OPTION (pfile, trigraphs) || CPP_OPTION (pfile, warn_trigraphs))
tmp['?'] = SPECCASE_QUESTION; tmp['?'] = SPECCASE_QUESTION;
pfile->input_speccase = tmp; pfile->input_speccase = tmp;
......
...@@ -157,11 +157,11 @@ _cpp_handle_directive (pfile) ...@@ -157,11 +157,11 @@ _cpp_handle_directive (pfile)
input (preprocessed or fed back in by the C++ frontend). */ input (preprocessed or fed back in by the C++ frontend). */
if (c >= '0' && c <= '9') if (c >= '0' && c <= '9')
{ {
if (CPP_OPTIONS (pfile)->lang_asm) if (CPP_OPTION (pfile, lang_asm))
return 0; return 0;
if (CPP_PEDANTIC (pfile) if (CPP_PEDANTIC (pfile)
&& ! CPP_OPTIONS (pfile)->preprocessed && ! CPP_OPTION (pfile, preprocessed)
&& ! CPP_BUFFER (pfile)->manual_pop) && ! CPP_BUFFER (pfile)->manual_pop)
cpp_pedwarn (pfile, "`#' followed by integer"); cpp_pedwarn (pfile, "`#' followed by integer");
do_line (pfile); do_line (pfile);
...@@ -170,7 +170,7 @@ _cpp_handle_directive (pfile) ...@@ -170,7 +170,7 @@ _cpp_handle_directive (pfile)
/* If we are rescanning preprocessed input, don't obey any directives /* If we are rescanning preprocessed input, don't obey any directives
other than # nnn. */ other than # nnn. */
if (CPP_OPTIONS (pfile)->preprocessed) if (CPP_OPTION (pfile, preprocessed))
return 0; return 0;
/* Now find the directive name. */ /* Now find the directive name. */
...@@ -320,7 +320,7 @@ do_define (pfile) ...@@ -320,7 +320,7 @@ do_define (pfile)
ok = ! _cpp_compare_defs (pfile, def, hp->value.defn); ok = ! _cpp_compare_defs (pfile, def, hp->value.defn);
/* Redefining a constant is ok with -D. */ /* Redefining a constant is ok with -D. */
else if (hp->type == T_CONST || hp->type == T_STDC) else if (hp->type == T_CONST || hp->type == T_STDC)
ok = ! CPP_OPTIONS (pfile)->done_initializing; ok = ! pfile->done_initializing;
/* Otherwise it's not ok. */ /* Otherwise it's not ok. */
else else
ok = 0; ok = 0;
...@@ -331,7 +331,7 @@ do_define (pfile) ...@@ -331,7 +331,7 @@ do_define (pfile)
cpp_error (pfile, "redefining poisoned `%.*s'", len, sym); cpp_error (pfile, "redefining poisoned `%.*s'", len, sym);
else else
cpp_pedwarn (pfile, "`%.*s' redefined", len, sym); cpp_pedwarn (pfile, "`%.*s' redefined", len, sym);
if (hp->type == T_MACRO && CPP_OPTIONS (pfile)->done_initializing) if (hp->type == T_MACRO && pfile->done_initializing)
{ {
DEFINITION *d = hp->value.defn; DEFINITION *d = hp->value.defn;
cpp_pedwarn_with_file_and_line (pfile, d->file, d->line, d->col, cpp_pedwarn_with_file_and_line (pfile, d->file, d->line, d->col,
...@@ -354,10 +354,10 @@ do_define (pfile) ...@@ -354,10 +354,10 @@ do_define (pfile)
*slot = hp; *slot = hp;
} }
if (CPP_OPTIONS (pfile)->debug_output if (CPP_OPTION (pfile, debug_output)
|| CPP_OPTIONS (pfile)->dump_macros == dump_definitions) || CPP_OPTION (pfile, dump_macros) == dump_definitions)
_cpp_dump_definition (pfile, sym, len, def); _cpp_dump_definition (pfile, sym, len, def);
else if (CPP_OPTIONS (pfile)->dump_macros == dump_names) else if (CPP_OPTION (pfile, dump_macros) == dump_names)
pass_thru_directive (sym, len, pfile, T_DEFINE); pass_thru_directive (sym, len, pfile, T_DEFINE);
return 0; return 0;
...@@ -376,8 +376,8 @@ _cpp_output_line_command (pfile, file_change) ...@@ -376,8 +376,8 @@ _cpp_output_line_command (pfile, file_change)
long line; long line;
cpp_buffer *ip; cpp_buffer *ip;
if (CPP_OPTIONS (pfile)->no_line_commands if (CPP_OPTION (pfile, no_line_commands)
|| CPP_OPTIONS (pfile)->no_output) || CPP_OPTION (pfile, no_output))
return; return;
ip = cpp_file_buffer (pfile); ip = cpp_file_buffer (pfile);
...@@ -428,7 +428,7 @@ _cpp_output_line_command (pfile, file_change) ...@@ -428,7 +428,7 @@ _cpp_output_line_command (pfile, file_change)
} }
#ifndef NO_IMPLICIT_EXTERN_C #ifndef NO_IMPLICIT_EXTERN_C
/* Tell cc1plus if following text should be treated as C. */ /* Tell cc1plus if following text should be treated as C. */
if (ip->system_header_p == 2 && CPP_OPTIONS (pfile)->cplusplus) if (ip->system_header_p == 2 && CPP_OPTION (pfile, cplusplus))
{ {
CPP_PUTC_Q (pfile, ' '); CPP_PUTC_Q (pfile, ' ');
CPP_PUTC_Q (pfile, '4'); CPP_PUTC_Q (pfile, '4');
...@@ -513,7 +513,7 @@ do_include (pfile) ...@@ -513,7 +513,7 @@ do_include (pfile)
token = alloca (len + 1); token = alloca (len + 1);
strcpy (token, CPP_PWRITTEN (pfile)); strcpy (token, CPP_PWRITTEN (pfile));
if (CPP_OPTIONS (pfile)->dump_includes) if (CPP_OPTION (pfile, dump_includes))
pass_thru_directive (token, len, pfile, T_INCLUDE); pass_thru_directive (token, len, pfile, T_INCLUDE);
_cpp_execute_include (pfile, token, len, 0, 0); _cpp_execute_include (pfile, token, len, 0, 0);
...@@ -530,7 +530,7 @@ do_import (pfile) ...@@ -530,7 +530,7 @@ do_import (pfile)
if (CPP_PEDANTIC (pfile)) if (CPP_PEDANTIC (pfile))
cpp_pedwarn (pfile, "ANSI C does not allow `#import'"); cpp_pedwarn (pfile, "ANSI C does not allow `#import'");
if (CPP_OPTIONS (pfile)->warn_import if (CPP_OPTION (pfile, warn_import)
&& !CPP_BUFFER (pfile)->system_header_p && !pfile->import_warning) && !CPP_BUFFER (pfile)->system_header_p && !pfile->import_warning)
{ {
pfile->import_warning = 1; pfile->import_warning = 1;
...@@ -544,7 +544,7 @@ do_import (pfile) ...@@ -544,7 +544,7 @@ do_import (pfile)
token = alloca (len + 1); token = alloca (len + 1);
strcpy (token, CPP_PWRITTEN (pfile)); strcpy (token, CPP_PWRITTEN (pfile));
if (CPP_OPTIONS (pfile)->dump_includes) if (CPP_OPTION (pfile, dump_includes))
pass_thru_directive (token, len, pfile, T_IMPORT); pass_thru_directive (token, len, pfile, T_IMPORT);
_cpp_execute_include (pfile, token, len, 1, 0); _cpp_execute_include (pfile, token, len, 1, 0);
...@@ -568,7 +568,7 @@ do_include_next (pfile) ...@@ -568,7 +568,7 @@ do_include_next (pfile)
token = alloca (len + 1); token = alloca (len + 1);
strcpy (token, CPP_PWRITTEN (pfile)); strcpy (token, CPP_PWRITTEN (pfile));
if (CPP_OPTIONS (pfile)->dump_includes) if (CPP_OPTION (pfile, dump_includes))
pass_thru_directive (token, len, pfile, T_INCLUDE_NEXT); pass_thru_directive (token, len, pfile, T_INCLUDE_NEXT);
/* For #include_next, skip in the search path past the dir in which the /* For #include_next, skip in the search path past the dir in which the
...@@ -782,7 +782,7 @@ do_undef (pfile) ...@@ -782,7 +782,7 @@ do_undef (pfile)
HASHNODE *hp = *slot; HASHNODE *hp = *slot;
/* If we are generating additional info for debugging (with -g) we /* If we are generating additional info for debugging (with -g) we
need to pass through all effective #undef commands. */ need to pass through all effective #undef commands. */
if (CPP_OPTIONS (pfile)->debug_output) if (CPP_OPTION (pfile, debug_output))
pass_thru_directive (name, len, pfile, T_UNDEF); pass_thru_directive (name, len, pfile, T_UNDEF);
if (hp->type == T_POISON) if (hp->type == T_POISON)
cpp_error (pfile, "cannot undefine poisoned `%s'", hp->name); cpp_error (pfile, "cannot undefine poisoned `%s'", hp->name);
...@@ -1021,9 +1021,9 @@ do_pragma_poison (pfile) ...@@ -1021,9 +1021,9 @@ do_pragma_poison (pfile)
/* As a rule, don't include #pragma poison commands in output, /* As a rule, don't include #pragma poison commands in output,
unless the user asks for them. */ unless the user asks for them. */
writeit = (CPP_OPTIONS (pfile)->debug_output writeit = (CPP_OPTION (pfile, debug_output)
|| CPP_OPTIONS (pfile)->dump_macros == dump_definitions || CPP_OPTION (pfile, dump_macros) == dump_definitions
|| CPP_OPTIONS (pfile)->dump_macros == dump_names); || CPP_OPTION (pfile, dump_macros) == dump_names);
for (;;) for (;;)
{ {
...@@ -1399,7 +1399,7 @@ consider_directive_while_skipping (pfile, stack) ...@@ -1399,7 +1399,7 @@ consider_directive_while_skipping (pfile, stack)
} }
/* Don't let erroneous code go by. */ /* Don't let erroneous code go by. */
if (!CPP_OPTIONS (pfile)->lang_asm && CPP_PEDANTIC (pfile)) if (!CPP_OPTION (pfile, lang_asm) && CPP_PEDANTIC (pfile))
cpp_pedwarn (pfile, "invalid preprocessor directive name"); cpp_pedwarn (pfile, "invalid preprocessor directive name");
return 0; return 0;
} }
...@@ -1612,7 +1612,7 @@ do_assert (pfile) ...@@ -1612,7 +1612,7 @@ do_assert (pfile)
size_t blen, tlen; size_t blen, tlen;
unsigned long bhash, thash; unsigned long bhash, thash;
if (CPP_PEDANTIC (pfile) && CPP_OPTIONS (pfile)->done_initializing) if (CPP_PEDANTIC (pfile) && pfile->done_initializing)
cpp_pedwarn (pfile, "ANSI C does not allow `#assert'"); cpp_pedwarn (pfile, "ANSI C does not allow `#assert'");
_cpp_skip_hspace (pfile); _cpp_skip_hspace (pfile);
...@@ -1678,7 +1678,7 @@ do_unassert (pfile) ...@@ -1678,7 +1678,7 @@ do_unassert (pfile)
long baselen, thislen; long baselen, thislen;
HASHNODE *base, *this, *next; HASHNODE *base, *this, *next;
if (CPP_PEDANTIC (pfile) && CPP_OPTIONS (pfile)->done_initializing) if (CPP_PEDANTIC (pfile) && pfile->done_initializing)
cpp_pedwarn (pfile, "ANSI C does not allow `#unassert'"); cpp_pedwarn (pfile, "ANSI C does not allow `#unassert'");
_cpp_skip_hspace (pfile); _cpp_skip_hspace (pfile);
......
...@@ -28,7 +28,6 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ...@@ -28,7 +28,6 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
const char *progname; const char *progname;
cpp_reader parse_in; cpp_reader parse_in;
cpp_options options;
extern int main PARAMS ((int, char **)); extern int main PARAMS ((int, char **));
...@@ -38,9 +37,11 @@ main (argc, argv) ...@@ -38,9 +37,11 @@ main (argc, argv)
char **argv; char **argv;
{ {
char *p; char *p;
cpp_reader *pfile = &parse_in;
int argi = 1; /* Next argument to handle. */ int argi = 1; /* Next argument to handle. */
struct cpp_options *opts = &options;
enum cpp_token kind; enum cpp_token kind;
FILE *out;
const char *out_fname;
p = argv[0] + strlen (argv[0]); p = argv[0] + strlen (argv[0]);
while (p != argv[0] && p[-1] != '/') --p; while (p != argv[0] && p[-1] != '/') --p;
...@@ -54,47 +55,49 @@ main (argc, argv) ...@@ -54,47 +55,49 @@ main (argc, argv)
(void) bindtextdomain (PACKAGE, localedir); (void) bindtextdomain (PACKAGE, localedir);
(void) textdomain (PACKAGE); (void) textdomain (PACKAGE);
cpp_reader_init (&parse_in); cpp_reader_init (pfile);
parse_in.opts = opts;
cpp_options_init (opts); argi += cpp_handle_options (pfile, argc - argi , argv + argi);
if (argi < argc && ! CPP_FATAL_ERRORS (pfile))
argi += cpp_handle_options (&parse_in, argc - argi , argv + argi); cpp_fatal (pfile, "Invalid option %s", argv[argi]);
if (argi < argc && ! CPP_FATAL_ERRORS (&parse_in)) if (CPP_FATAL_ERRORS (pfile))
cpp_fatal (&parse_in, "Invalid option `%s'", argv[argi]);
if (CPP_FATAL_ERRORS (&parse_in))
return (FATAL_EXIT_CODE); return (FATAL_EXIT_CODE);
parse_in.show_column = 1; if (! cpp_start_read (pfile, CPP_OPTION (pfile, in_fname)))
if (! cpp_start_read (&parse_in, opts->in_fname))
return (FATAL_EXIT_CODE); return (FATAL_EXIT_CODE);
/* Now that we know the input file is valid, open the output. */ /* Now that we know the input file is valid, open the output. */
out_fname = CPP_OPTION (pfile, out_fname);
if (!opts->out_fname || !strcmp (opts->out_fname, "")) if (*out_fname == '\0')
opts->out_fname = "stdout";
else if (! freopen (opts->out_fname, "w", stdout))
{ {
cpp_notice_from_errno (&parse_in, opts->out_fname); out_fname = "stdout";
out = stdout;
}
else
{
out = fopen (out_fname, "w");
if (!out)
{
cpp_notice_from_errno (pfile, CPP_OPTION (pfile, out_fname));
return (FATAL_EXIT_CODE); return (FATAL_EXIT_CODE);
} }
}
if (! opts->no_output) if (! CPP_OPTION (pfile, no_output))
{ {
do do
{ {
kind = cpp_get_token (&parse_in); kind = cpp_get_token (pfile);
if (CPP_WRITTEN (&parse_in) >= BUFSIZ || kind == CPP_EOF) if (CPP_WRITTEN (pfile) >= BUFSIZ || kind == CPP_EOF)
{ {
size_t rem, count = CPP_WRITTEN (&parse_in); size_t rem, count = CPP_WRITTEN (pfile);
rem = fwrite (parse_in.token_buffer, 1, count, stdout); rem = fwrite (parse_in.token_buffer, 1, count, out);
if (rem < count) if (rem < count)
/* Write error. */ /* Write error. */
cpp_notice_from_errno (&parse_in, opts->out_fname); cpp_notice_from_errno (pfile, CPP_OPTION (pfile, out_fname));
CPP_SET_WRITTEN (&parse_in, 0); CPP_SET_WRITTEN (pfile, 0);
} }
} }
while (kind != CPP_EOF); while (kind != CPP_EOF);
...@@ -103,19 +106,22 @@ main (argc, argv) ...@@ -103,19 +106,22 @@ main (argc, argv)
{ {
do do
{ {
cpp_scan_buffer (&parse_in); cpp_scan_buffer (pfile);
kind = cpp_get_token (&parse_in); kind = cpp_get_token (pfile);
} }
while (kind != CPP_EOF); while (kind != CPP_EOF);
CPP_SET_WRITTEN (&parse_in, 0); CPP_SET_WRITTEN (pfile, 0);
} }
cpp_finish (&parse_in); cpp_finish (pfile);
if (fwrite (parse_in.token_buffer, 1, CPP_WRITTEN (&parse_in), stdout) if (fwrite (parse_in.token_buffer, 1, CPP_WRITTEN (pfile), out)
< CPP_WRITTEN (&parse_in)) < CPP_WRITTEN (pfile))
cpp_notice_from_errno (&parse_in, opts->out_fname); cpp_notice_from_errno (pfile, CPP_OPTION (pfile, out_fname));
if (ferror (out) || fclose (out))
cpp_notice_from_errno (pfile, CPP_OPTION (pfile, out_fname));
cpp_cleanup (&parse_in); cpp_cleanup (pfile);
if (parse_in.errors) if (parse_in.errors)
return (FATAL_EXIT_CODE); return (FATAL_EXIT_CODE);
......
...@@ -617,7 +617,6 @@ read_scan_file (in_fname, argc, argv) ...@@ -617,7 +617,6 @@ read_scan_file (in_fname, argc, argv)
char **argv; char **argv;
{ {
cpp_reader scan_in; cpp_reader scan_in;
cpp_options scan_options;
struct fn_decl *fn; struct fn_decl *fn;
int i; int i;
register struct symbol_list *cur_symbols; register struct symbol_list *cur_symbols;
...@@ -625,13 +624,11 @@ read_scan_file (in_fname, argc, argv) ...@@ -625,13 +624,11 @@ read_scan_file (in_fname, argc, argv)
obstack_init (&scan_file_obstack); obstack_init (&scan_file_obstack);
cpp_reader_init (&scan_in); cpp_reader_init (&scan_in);
scan_in.opts = &scan_options;
cpp_options_init (&scan_options);
/* We are going to be scanning a header file out of its proper context, /* We are going to be scanning a header file out of its proper context,
so ignore warnings and errors. */ so ignore warnings and errors. */
scan_options.inhibit_warnings = 1; CPP_OPTION (&scan_in, inhibit_warnings) = 1;
scan_options.inhibit_errors = 1; CPP_OPTION (&scan_in, inhibit_errors) = 1;
scan_options.no_line_commands = 1; CPP_OPTION (&scan_in, no_line_commands) = 1;
i = cpp_handle_options (&scan_in, argc, argv); i = cpp_handle_options (&scan_in, argc, argv);
if (i < argc && ! CPP_FATAL_ERRORS (&scan_in)) if (i < argc && ! CPP_FATAL_ERRORS (&scan_in))
cpp_fatal (&scan_in, "Invalid option `%s'", argv[i]); cpp_fatal (&scan_in, "Invalid option `%s'", argv[i]);
......
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