summaryrefslogtreecommitdiff
path: root/libcpp/files.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcpp/files.c')
-rw-r--r--libcpp/files.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/libcpp/files.c b/libcpp/files.c
index 7abae7ae6ec..260e787c329 100644
--- a/libcpp/files.c
+++ b/libcpp/files.c
@@ -504,7 +504,8 @@ _cpp_find_failed (_cpp_file *file)
_cpp_file *
_cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir,
- bool fake, int angle_brackets, bool implicit_preinclude,
+ int angle_brackets,
+ bool fake, bool implicit_preinclude, bool has_include,
location_t loc)
{
struct cpp_file_hash_entry *entry;
@@ -592,7 +593,8 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir,
return NULL;
}
- open_file_failed (pfile, file, angle_brackets, loc);
+ if (!has_include)
+ open_file_failed (pfile, file, angle_brackets, loc);
break;
}
@@ -1046,8 +1048,8 @@ _cpp_stack_include (cpp_reader *pfile, const char *fname, int angle_brackets,
if (!dir)
return false;
- _cpp_file *file = _cpp_find_file (pfile, fname, dir, false, angle_brackets,
- type == IT_DEFAULT, loc);
+ _cpp_file *file = _cpp_find_file (pfile, fname, dir, angle_brackets,
+ false, type == IT_DEFAULT, false, loc);
if (type == IT_DEFAULT && file == NULL)
return false;
@@ -1062,9 +1064,6 @@ open_file_failed (cpp_reader *pfile, _cpp_file *file, int angle_brackets,
int sysp = pfile->line_table->highest_line > 1 && pfile->buffer ? pfile->buffer->sysp : 0;
bool print_dep = CPP_OPTION (pfile, deps.style) > (angle_brackets || !!sysp);
- if (pfile->state.in__has_include__)
- return;
-
errno = file->err_no;
if (print_dep && CPP_OPTION (pfile, deps.missing_files) && errno == ENOENT)
{
@@ -1343,7 +1342,8 @@ cpp_clear_file_cache (cpp_reader *pfile)
void
_cpp_fake_include (cpp_reader *pfile, const char *fname)
{
- _cpp_find_file (pfile, fname, pfile->buffer->file->dir, true, 0, false, 0);
+ _cpp_find_file (pfile, fname, pfile->buffer->file->dir,
+ 0, true, false, false, 0);
}
/* Not everyone who wants to set system-header-ness on a buffer can
@@ -1461,7 +1461,8 @@ _cpp_compare_file_date (cpp_reader *pfile, const char *fname,
if (!dir)
return -1;
- file = _cpp_find_file (pfile, fname, dir, false, angle_brackets, false, 0);
+ file = _cpp_find_file (pfile, fname, dir, angle_brackets,
+ false, false, false, 0);
if (file->err_no)
return -1;
@@ -2004,9 +2005,11 @@ _cpp_has_header (cpp_reader *pfile, const char *fname, int angle_brackets,
enum include_type type)
{
cpp_dir *start_dir = search_path_head (pfile, fname, angle_brackets, type);
- _cpp_file *file = _cpp_find_file (pfile, fname, start_dir,
- /*fake=*/false, angle_brackets,
- /*implicit_preinclude=*/false, 0);
+ _cpp_file *file = _cpp_find_file (pfile, fname, start_dir, angle_brackets,
+ /*fake=*/false,
+ /*implicit_preinclude=*/false,
+ /*has_include=*/true,
+ 0);
return file->err_no != ENOENT;
}