CPP_OPTION (pfile, warn_long_long) = !CPP_OPTION (pfile, c99);
CPP_OPTION (pfile, dollars_in_ident) = 1;
CPP_OPTION (pfile, warn_dollars) = 1;
+ CPP_OPTION (pfile, warn_variadic_macros) = 1;
/* Default CPP arithmetic to something sensible for the host for the
benefit of dumb users like fix-header. */
CPP_OPTION (pfile, bytes_big_endian) = 1; /* does not matter */
/* Default to no charset conversion. */
- CPP_OPTION (pfile, narrow_charset) = 0;
+ CPP_OPTION (pfile, narrow_charset) = _cpp_default_encoding ();
CPP_OPTION (pfile, wide_charset) = 0;
- /* Default the input character set to iso-8859-1 for now. */
- CPP_OPTION (pfile, input_charset) = "ISO-8859-1";
+ /* Default the input character set to UTF-8. */
+ CPP_OPTION (pfile, input_charset) = _cpp_default_encoding ();
/* A fake empty "directory" used as the starting point for files
looked up without a search path. Name cannot be '/' because we
}
/* Setup for processing input from the file named FNAME, or stdin if
- it is the empty string. Returns true if the file was found. */
-bool
-cpp_find_main_file (cpp_reader *pfile, const char *fname)
+ 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 (_cpp_find_failed (pfile->main_file))
return false;
- if (CPP_OPTION (pfile, working_directory))
- {
- const char *dir = getpwd ();
- char *dir_with_slashes = alloca (strlen (dir) + 3);
-
- memcpy (dir_with_slashes, dir, strlen (dir));
- memcpy (dir_with_slashes + strlen (dir), "//", 3);
-
- if (pfile->cb.dir_change)
- pfile->cb.dir_change (pfile, dir);
- }
- return true;
-}
-
-/* This function reads the file, but does not start preprocessing.
- This will generate at least one file change callback, and possibly
- a line change callback. */
-void
-cpp_push_main_file (cpp_reader *pfile)
-{
_cpp_stack_file (pfile, pfile->main_file, false);
/* For foo.i, read the original filename foo.c now, for the benefit
of the front ends. */
if (CPP_OPTION (pfile, preprocessed))
- read_original_filename (pfile);
-
- /* Set this here so the client can change the option if it wishes,
- and after stacking the main file so we don't trace the main
- file. */
- pfile->line_table->trace_includes = CPP_OPTION (pfile, print_include_names);
+ {
+ read_original_filename (pfile);
+ fname = pfile->line_table->maps[pfile->line_table->used-1].to_file;
+ }
+ return fname;
}
/* For preprocessed files, if the first tokens are of the form # NUM.
pfile->cb.dir_change (pfile, debugdir);
}
-
- /* We want to process the fake line changes as regular changes, to
- get them output. */
- _cpp_backup_tokens (pfile, 3);
-
- CPP_OPTION (pfile, working_directory) = false;
}
/* This is called at the end of preprocessing. It pops the last
buffer and writes dependency output, and returns the number of
errors.
-
+
Maybe it should also reset state, such that you could call
cpp_start_read with a new filename to restart processing. */
int