Annotation of gcc/cppmain.c, revision 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.