cpplib.c (do_include): Treat #include_next in the primary source file as #include plus warning.

1998-12-16  Zack Weinberg  <zack@rabi.phys.columbia.edu>
	* cpplib.c (do_include): Treat #include_next in the
	primary source file as #include plus warning.  Treat
	#include_next in a file included by absolute path as an
	error.  fp == CPP_NULL_BUFFER is a fatal inconsistency.

From-SVN: r24340
This commit is contained in:
Zack Weinberg 1998-12-16 13:23:47 +00:00 committed by Dave Brolley
parent 36b8337d5c
commit 692b872ea0
2 changed files with 27 additions and 8 deletions

View File

@ -1,3 +1,10 @@
1998-12-16 Zack Weinberg <zack@rabi.phys.columbia.edu>
* cpplib.c (do_include): Treat #include_next in the
primary source file as #include plus warning. Treat
#include_next in a file included by absolute path as an
error. fp == CPP_NULL_BUFFER is a fatal inconsistency.
Wed Dec 16 12:28:54 1998 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* cccp.c: Don't define MIN/MAX anymore.

View File

@ -2969,17 +2969,25 @@ do_include (pfile, keyword)
break;
if (fp == CPP_NULL_BUFFER (pfile))
fp = NULL;
/* For #include_next, skip in the search path
past the dir in which the containing file was found. */
if (skip_dirs)
{
if (fp)
cpp_fatal (pfile, "cpp internal error: fp == NULL_BUFFER in do_include");
return 1;
}
/* For #include_next, skip in the search path past the dir in which the
containing file was found. Treat files specified using an absolute path
as if there are no more directories to search. Treat the primary source
file like any other included source, but generate a warning. */
if (skip_dirs && CPP_PREV_BUFFER(fp) != CPP_NULL_BUFFER (pfile))
{
if (fp->ihash->foundhere != ABSOLUTE_PATH)
search_start = fp->ihash->foundhere->next;
}
else
{
if (skip_dirs)
cpp_warning (pfile, "#include_next in primary source file");
if (angle_brackets)
search_start = CPP_OPTIONS (pfile)->bracket_include;
else
@ -4730,8 +4738,12 @@ cpp_start_read (pfile, fname)
fp = cpp_push_buffer (pfile, NULL, 0);
if (!fp)
return 0;
if (opts->in_fname == NULL)
opts->in_fname = "";
if (opts->in_fname == NULL || *opts->in_fname == 0)
{
opts->in_fname = fname;
if (opts->in_fname == NULL)
opts->in_fname = "";
}
fp->nominal_fname = fp->fname = opts->in_fname;
fp->lineno = 0;