summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/cppmain.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>1999-08-26 09:30:50 +0000
committerobrien <obrien@FreeBSD.org>1999-08-26 09:30:50 +0000
commit0bedf4fb30066e5e1d4342a1d3914dae7d37cba7 (patch)
tree68d8110b41afd0ebbf39167b1a4918eea667a7c5 /contrib/gcc/cppmain.c
parentd4db5fb866b7ad5216abd5047774a3973b9901a9 (diff)
downloadFreeBSD-src-0bedf4fb30066e5e1d4342a1d3914dae7d37cba7.zip
FreeBSD-src-0bedf4fb30066e5e1d4342a1d3914dae7d37cba7.tar.gz
Virgin import of gcc from EGCS 1.1.2
Diffstat (limited to 'contrib/gcc/cppmain.c')
-rw-r--r--contrib/gcc/cppmain.c43
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;
OpenPOWER on IntegriCloud