Annotation of gcc/cppmain.c, revision 1.1.1.1

1.1       root        1: /* CPP main program, using CPP Library.
                      2:    Copyright (C) 1995 Free Software Foundation, Inc.
                      3:    Written by Per Bothner, 1994-95.
                      4: 
                      5: This program is free software; you can redistribute it and/or modify it
                      6: under the terms of the GNU General Public License as published by the
                      7: Free Software Foundation; either version 2, or (at your option) any
                      8: later version.
                      9: 
                     10: This program is distributed in the hope that it will be useful,
                     11: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     13: GNU General Public License for more details.
                     14: 
                     15: You should have received a copy of the GNU General Public License
                     16: along with this program; if not, write to the Free Software
                     17: Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
                     18: 
                     19:  In other words, you are welcome to use, share and improve this program.
                     20:  You are forbidden to forbid anyone else to use, share and improve
                     21:  what you give them.   Help stamp out software-hoarding!  */
                     22: 
                     23: #include "cpplib.h"
                     24: #include <stdio.h>
                     25: 
                     26: #ifndef EMACS
                     27: #include "config.h"
                     28: #endif /* not EMACS */
                     29: 
                     30: extern char *getenv ();
                     31: 
                     32: char *progname;
                     33: 
                     34: cpp_reader parse_in;
                     35: cpp_options options;
                     36: 
                     37: /* More 'friendly' abort that prints the line and file.
                     38:    config.h can #define abort fancy_abort if you like that sort of thing.  */
                     39: 
                     40: void
                     41: fancy_abort ()
                     42: {
                     43:   fatal ("Internal gcc abort.");
                     44: }
                     45: 
                     46: 
                     47: int
                     48: main (argc, argv)
                     49:      int argc;
                     50:      char **argv;
                     51: {
                     52:   char *p;
                     53:   int i;
                     54:   int argi = 1;  /* Next argument to handle. */
                     55:   struct cpp_options *opts = &options;
                     56: 
                     57:   p = argv[0] + strlen (argv[0]);
                     58:   while (p != argv[0] && p[-1] != '/') --p;
                     59:   progname = p;
                     60: 
                     61:   init_parse_file (&parse_in);
                     62:   parse_in.data = opts;
                     63: 
                     64:   init_parse_options (opts);
                     65:   
                     66:   argi += cpp_handle_options (&parse_in, argc - argi , argv + argi);
                     67:   if (argi < argc)
                     68:     fatal ("Invalid option `%s'", argv[argi]);
                     69:   parse_in.show_column = 1;
                     70: 
                     71:   i = push_parse_file (&parse_in, opts->in_fname);
                     72:   if (i != SUCCESS_EXIT_CODE)
                     73:     return i;
                     74: 
                     75:   /* Now that we know the input file is valid, open the output.  */
                     76: 
                     77:   if (!opts->out_fname || !strcmp (opts->out_fname, ""))
                     78:     opts->out_fname = "stdout";
                     79:   else if (! freopen (opts->out_fname, "w", stdout))
                     80:     cpp_pfatal_with_name (&parse_in, opts->out_fname);
                     81: 
                     82:   for (;;)
                     83:     {
                     84:       enum cpp_token kind;
                     85:       if (! opts->no_output)
                     86:        {
                     87:          fwrite (parse_in.token_buffer, 1, CPP_WRITTEN (&parse_in), stdout);
                     88:        }
                     89:       parse_in.limit = parse_in.token_buffer;
                     90:       kind = cpp_get_token (&parse_in);
                     91:       if (kind == CPP_EOF)
                     92:        break;
                     93:     }
                     94: 
                     95:   cpp_finish (&parse_in);
                     96: 
                     97:   if (parse_in.errors)
                     98:     exit (FATAL_EXIT_CODE);
                     99:   exit (SUCCESS_EXIT_CODE);
                    100: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.