+2003-08-09 Per Bothner <pbothner@apple.com>
+
+ * cppinit.c (cpp_read_main_file): Split out source-independent
+ initialization to separate function ...
+ (cpp_post_options): New function.
+ * cppfiles.c (cpp_stack_file): Rename public name to ...
+ (_cpp_stack_file): New internal function name.
+ * cpplib.h: Update accordingly.
+ * cppinit.c: (cpp_create_reader): Initialize cpp_readers line here.
+ (cpp_read_main_file): Don't initialize line here.
+ * c-opts.c (c_common_post_options): Call cpp_post_options.
+ (c_common_parse_file): Call cpp_read_main_file, not cpp_stack_file.
+ * fix-header.c (read_scan_file): Call cpp_post_options.
+
2003-08-09 Per Bothner <per@bothner.com>
* c-decl.c (SCOPE_LIST_APPEND): Remove bogus line continuation.
}
cpp_get_callbacks (parse_in)->file_change = cb_file_change;
+ cpp_post_options (parse_in);
/* NOTE: we use in_fname here, not the one supplied. */
*pfilename = cpp_read_main_file (parse_in, in_fnames[0]);
/* Reset cpplib's macros and start a new file. */
cpp_undef_all (parse_in);
- cpp_stack_file (parse_in, in_fnames[file_index]);
+ cpp_read_main_file (parse_in, in_fnames[file_index]);
}
finish_options(in_fnames[file_index]);
/* Push an input buffer with the contents of FNAME, the empty string
for standard input. Return true if a buffer was stacked. */
bool
-cpp_stack_file (cpp_reader *pfile, const char *fname)
+_cpp_stack_file (cpp_reader *pfile, const char *fname)
{
struct cpp_dir *dir = &pfile->no_search_path;
/* Initialize the line map. Start at logical line 1, so we can use
a line number of zero for special states. */
linemap_init (&pfile->line_maps);
+ pfile->line = 1;
/* Initialize lexer state. */
pfile->state.save_comments = ! CPP_OPTION (pfile, discard_comments);
}
/* This is called after options have been parsed, and partially
- processed. Setup for processing input from the file named FNAME,
- or stdin if it is the empty string. Return the original filename
- on success (e.g. foo.i->foo.c), or NULL on failure. */
-const char *
-cpp_read_main_file (cpp_reader *pfile, const char *fname)
+ processed. */
+void
+cpp_post_options (cpp_reader *pfile)
{
sanity_checks (pfile);
/* Mark named operators before handling command line macros. */
if (CPP_OPTION (pfile, cplusplus) && CPP_OPTION (pfile, operator_names))
mark_named_operators (pfile);
+}
+/* Setup for processing input from the file named FNAME,
+ or stdin if it is the empty string. Return the original filename
+ on success (e.g. foo.i->foo.c), or NULL on failure. */
+const char *
+cpp_read_main_file (cpp_reader *pfile, const char *fname)
+{
if (CPP_OPTION (pfile, deps.style) != DEPS_NONE)
{
if (!pfile->deps)
deps_add_default_target (pfile->deps, fname);
}
- pfile->line = 1;
- if (!cpp_stack_file (pfile, fname))
+ if (! _cpp_stack_file (pfile, fname))
return NULL;
/* Set this here so the client can change the option if it wishes,
too. If there was an error opening the file, it returns NULL. */
extern const char *cpp_read_main_file (cpp_reader *, const char *);
-/* Stacks a new file. It will return false if there was an error
- opening the file. */
-extern bool cpp_stack_file (cpp_reader *, const char *);
-
/* Set up built-ins like __FILE__. */
extern void cpp_init_builtins (cpp_reader *, int);
+/* This is called after options have been parsed, and partially
+ processed. */
+extern void cpp_post_options (cpp_reader *);
+
/* Set up translation to the target character set. */
extern void cpp_init_iconv (cpp_reader *);
options = cpp_get_options (scan_in);
options->inhibit_warnings = 1;
options->inhibit_errors = 1;
+ cpp_post_options (scan_in);
if (! cpp_read_main_file (scan_in, in_fname))
exit (FATAL_EXIT_CODE);