diff options
author | Jakub Jelinek <jakub@redhat.com> | 2015-11-19 09:27:12 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2015-11-19 09:27:12 +0100 |
commit | 46ce03de3afe6dcd7b23572ada199c28ffc10e70 (patch) | |
tree | 5835d3decb0a09480820c64a42a01462dccceb96 /libcpp/errors.c | |
parent | ee1326921d7cb8645bed87b2d9b71f1f74eb6605 (diff) | |
download | gcc-46ce03de3afe6dcd7b23572ada199c28ffc10e70.zip gcc-46ce03de3afe6dcd7b23572ada199c28ffc10e70.tar.gz gcc-46ce03de3afe6dcd7b23572ada199c28ffc10e70.tar.bz2 |
re PR preprocessor/60736 (Crash in preprocessor including stdc-predef.h when it does not exist on glibc-based systems)
PR preprocessor/60736
* include/cpplib.h (cpp_errno_filename): New prototype.
* errors.c (cpp_errno): Don't handle msgid "" specially, use
_(msgid) instead of msgid as argument to cpp_error.
(cpp_errno_filename): New function.
* files.c (read_file_guts): Use cpp_errno_filename instead of
cpp_errno.
(open_file_failed): Likewise. Use file->name if file->path is NULL
in diagnostics.
From-SVN: r230591
Diffstat (limited to 'libcpp/errors.c')
-rw-r--r-- | libcpp/errors.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/libcpp/errors.c b/libcpp/errors.c index 8790e10..c27a417 100644 --- a/libcpp/errors.c +++ b/libcpp/errors.c @@ -230,8 +230,18 @@ cpp_warning_with_line_syshdr (cpp_reader *pfile, int reason, bool cpp_errno (cpp_reader *pfile, int level, const char *msgid) { - if (msgid[0] == '\0') - msgid = _("stdout"); + return cpp_error (pfile, level, "%s: %s", _(msgid), xstrerror (errno)); +} + +/* Print a warning or error, depending on the value of LEVEL. Include + information from errno. Unlike cpp_errno, the argument is a filename + that is not localized, but "" is replaced with localized "stdout". */ + +bool +cpp_errno_filename (cpp_reader *pfile, int level, const char *filename) +{ + if (filename[0] == '\0') + filename = _("stdout"); - return cpp_error (pfile, level, "%s: %s", msgid, xstrerror (errno)); + return cpp_error (pfile, level, "%s: %s", filename, xstrerror (errno)); } |