diff options
Diffstat (limited to 'contrib/gcc/cppmain.c')
-rw-r--r-- | contrib/gcc/cppmain.c | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/contrib/gcc/cppmain.c b/contrib/gcc/cppmain.c index 506ce05..0a45e86 100644 --- a/contrib/gcc/cppmain.c +++ b/contrib/gcc/cppmain.c @@ -1,5 +1,5 @@ /* CPP main program, using CPP Library. - Copyright (C) 1995 Free Software Foundation, Inc. + Copyright (C) 1995, 1997 Free Software Foundation, Inc. Written by Per Bothner, 1994-95. This program is free software; you can redistribute it and/or modify it @@ -20,28 +20,40 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. You are forbidden to forbid anyone else to use, share and improve what you give them. Help stamp out software-hoarding! */ -#include "cpplib.h" -#include <stdio.h> - #ifndef EMACS #include "config.h" -#endif /* not EMACS */ +#include "system.h" +#include "gansidecl.h" +#else +#include <stdio.h> extern char *getenv (); +#endif /* not EMACS */ + +#include "cpplib.h" char *progname; cpp_reader parse_in; cpp_options options; +#ifdef abort /* More 'friendly' abort that prints the line and file. config.h can #define abort fancy_abort if you like that sort of thing. */ +void +fatal (s) + char *s; +{ + fputs (s, stderr); + exit (FATAL_EXIT_CODE); +} void fancy_abort () { fatal ("Internal gcc abort."); } +#endif int @@ -50,27 +62,28 @@ main (argc, argv) char **argv; { char *p; - int i; - int argi = 1; /* Next argument to handle. */ + int argi = 1; /* Next argument to handle. */ struct cpp_options *opts = &options; p = argv[0] + strlen (argv[0]); while (p != argv[0] && p[-1] != '/') --p; progname = p; - init_parse_file (&parse_in); + cpp_reader_init (&parse_in); parse_in.data = opts; - init_parse_options (opts); + cpp_options_init (opts); argi += cpp_handle_options (&parse_in, argc - argi , argv + argi); - if (argi < argc) - fatal ("Invalid option `%s'", argv[argi]); + if (argi < argc && ! CPP_FATAL_ERRORS (&parse_in)) + cpp_fatal (&parse_in, "Invalid option `%s'", argv[argi]); + if (CPP_FATAL_ERRORS (&parse_in)) + exit (FATAL_EXIT_CODE); + parse_in.show_column = 1; - i = push_parse_file (&parse_in, opts->in_fname); - if (i != SUCCESS_EXIT_CODE) - return i; + if (! cpp_start_read (&parse_in, opts->in_fname)) + exit (FATAL_EXIT_CODE); /* Now that we know the input file is valid, open the output. */ @@ -86,7 +99,7 @@ main (argc, argv) { fwrite (parse_in.token_buffer, 1, CPP_WRITTEN (&parse_in), stdout); } - parse_in.limit = parse_in.token_buffer; + CPP_SET_WRITTEN (&parse_in, 0); kind = cpp_get_token (&parse_in); if (kind == CPP_EOF) break; |