diff options
author | Niklas Hallqvist <niklas@cvs.openbsd.org> | 1995-12-20 01:06:22 +0000 |
---|---|---|
committer | Niklas Hallqvist <niklas@cvs.openbsd.org> | 1995-12-20 01:06:22 +0000 |
commit | c482518380683ee38d14024c1e362a0d681cf967 (patch) | |
tree | e69b4f6d3fee3aced20a41f3fdf543fc1c77fb5d /gnu/usr.bin/gcc/cpperror.c | |
parent | 76a62188d0db49c65b696d474c855a799fd96dce (diff) |
FSF GCC version 2.7.2
Diffstat (limited to 'gnu/usr.bin/gcc/cpperror.c')
-rw-r--r-- | gnu/usr.bin/gcc/cpperror.c | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/gnu/usr.bin/gcc/cpperror.c b/gnu/usr.bin/gcc/cpperror.c new file mode 100644 index 00000000000..5ba3b78f457 --- /dev/null +++ b/gnu/usr.bin/gcc/cpperror.c @@ -0,0 +1,128 @@ +/* Default error handlers for CPP Library. + Copyright (C) 1986, 87, 89, 92, 93, 94, 1995 Free Software Foundation, Inc. + Written by Per Bothner, 1994. + Based on CCCP program by by Paul Rubin, June 1986 + Adapted to ANSI C, Richard Stallman, Jan 1987 + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + In other words, you are welcome to use, share and improve this program. + You are forbidden to forbid anyone else to use, share and improve + what you give them. Help stamp out software-hoarding! */ + +#ifndef EMACS +#include "config.h" +#endif /* not EMACS */ + +#include "cpplib.h" +#include <stdio.h> + +/* Print the file names and line numbers of the #include + commands which led to the current file. */ + +void +cpp_print_containing_files (pfile) + cpp_reader *pfile; +{ + cpp_buffer *ip; + int i; + int first = 1; + + /* If stack of files hasn't changed since we last printed + this info, don't repeat it. */ + if (pfile->input_stack_listing_current) + return; + + ip = cpp_file_buffer (pfile); + + /* Give up if we don't find a source file. */ + if (ip == NULL) + return; + + /* Find the other, outer source files. */ + while ((ip = CPP_PREV_BUFFER (ip)), ip != CPP_NULL_BUFFER (pfile)) + { + long line, col; + cpp_buf_line_and_col (ip, &line, &col); + if (ip->fname != NULL) + { + if (first) + { + first = 0; + fprintf (stderr, "In file included"); + } + else + fprintf (stderr, ",\n "); + } + + fprintf (stderr, " from %s:%d", ip->nominal_fname, line); + } + if (! first) + fprintf (stderr, ":\n"); + + /* Record we have printed the status as of this time. */ + pfile->input_stack_listing_current = 1; +} + +void +cpp_file_line_for_message (pfile, filename, line, column) + cpp_reader *pfile; + char *filename; + int line, column; +{ + if (column > 0) + fprintf (stderr, "%s:%d:%d: ", filename, line, column); + else + fprintf (stderr, "%s:%d: ", filename, line); +} + +/* IS_ERROR is 1 for error, 0 for warning */ +void cpp_message (pfile, is_error, msg, arg1, arg2, arg3) + int is_error; + cpp_reader *pfile; + char *msg; + char *arg1, *arg2, *arg3; +{ + if (is_error) + pfile->errors++; + else + fprintf (stderr, "warning: "); + fprintf (stderr, msg, arg1, arg2, arg3); + fprintf (stderr, "\n"); +} + +void +fatal (str, arg) + char *str, *arg; +{ + fprintf (stderr, "%s: ", progname); + fprintf (stderr, str, arg); + fprintf (stderr, "\n"); + exit (FATAL_EXIT_CODE); +} + + +void +cpp_pfatal_with_name (pfile, name) + cpp_reader *pfile; + char *name; +{ + cpp_perror_with_name (pfile, name); +#ifdef VMS + exit (vaxc$errno); +#else + exit (FATAL_EXIT_CODE); +#endif +} |