cppmain.c (struct printer): Remove no_line_dirs.

* cppmain.c (struct printer): Remove no_line_dirs.
        (options, cb): New.
        (main, setup_callbacks, scan_buffer, printer_init, cb_define)
        : Use options rather than CPP_OPTION.
        (setup_callbacks): Use cb rather than pfile->cb.
        (main): No need to check for a buffer.  Use cpp_errors.
        (printer_init): Don't set no_line_dirs.
        (maybe_print_line): Use options not no_line_dirs.
        (cb_file_change): Don't call print_line if -P.

From-SVN: r38983
This commit is contained in:
Neil Booth 2001-01-13 14:24:34 +00:00 committed by Neil Booth
parent b61c5ed005
commit 620ef26c8c
2 changed files with 56 additions and 41 deletions

View File

@ -1,3 +1,15 @@
2001-01-13 Neil Booth <neil@daikokuya.demon.co.uk>
* cppmain.c (struct printer): Remove no_line_dirs.
(options, cb): New.
(main, setup_callbacks, scan_buffer, printer_init, cb_define)
: Use options rather than CPP_OPTION.
(setup_callbacks): Use cb rather than pfile->cb.
(main): No need to check for a buffer. Use cpp_errors.
(printer_init): Don't set no_line_dirs.
(maybe_print_line): Use options not no_line_dirs.
(cb_file_change): Don't call print_line if -P.
2001-01-13 Neil Booth <neil@daikokuya.demon.co.uk>
* c-lex.c (init_c_lex): Use cpp_get_callbacks to set

View File

@ -34,7 +34,6 @@ struct printer
const char *syshdr_flags; /* system header flags, if any. */
unsigned int lineno; /* line currently being written. */
unsigned char printed; /* nonzero if something output at lineno. */
unsigned char no_line_dirs; /* nonzero to output no line directives. */
};
int main PARAMS ((int, char **));
@ -62,7 +61,9 @@ static void cb_def_pragma PARAMS ((cpp_reader *));
static void do_pragma_implementation PARAMS ((cpp_reader *));
const char *progname; /* Needs to be global. */
static cpp_reader *pfile;
static cpp_reader *pfile; /* An opaque handle. */
static cpp_options *options; /* Options of pfile. */
static cpp_callbacks *cb; /* Callbacks of pfile. */
static struct printer print;
int
@ -75,6 +76,8 @@ main (argc, argv)
general_init (argv[0]);
/* Default language is GNU C89. */
pfile = cpp_create_reader (CLK_GNUC89);
options = cpp_get_options (pfile);
cb = cpp_get_callbacks (pfile);
argi += cpp_handle_options (pfile, argc - argi , argv + argi);
if (argi < argc && ! CPP_FATAL_ERRORS (pfile))
@ -87,7 +90,7 @@ main (argc, argv)
line, it will have set pfile->help_only to indicate this. Exit
successfully. [The library does not exit itself, because
e.g. cc1 needs to print its own --help message at this point.] */
if (CPP_OPTION (pfile, help_only))
if (options->help_only)
return (SUCCESS_EXIT_CODE);
/* Open the output now. We must do so even if no_output is on,
@ -98,19 +101,18 @@ main (argc, argv)
setup_callbacks ();
if (! cpp_start_read (pfile, CPP_OPTION (pfile, in_fname)))
if (! cpp_start_read (pfile, options->in_fname))
return (FATAL_EXIT_CODE);
if (CPP_BUFFER (pfile))
{
if (CPP_OPTION (pfile, no_output))
cpp_scan_buffer_nooutput (pfile, 1);
else
scan_buffer (pfile);
}
/* A successful cpp_start_read guarantees that we can call
cpp_scan_buffer_nooutput or cpp_get_token next. */
if (options->no_output)
cpp_scan_buffer_nooutput (pfile, 1);
else
scan_buffer (pfile);
/* -dM command line option. */
if (CPP_OPTION (pfile, dump_macros) == dump_only)
if (options->dump_macros == dump_only)
cpp_forall_identifiers (pfile, dump_macro, NULL);
cpp_finish (pfile);
@ -120,11 +122,12 @@ main (argc, argv)
if (print.printed)
putc ('\n', print.outf);
if (ferror (print.outf) || fclose (print.outf))
cpp_notice_from_errno (pfile, CPP_OPTION (pfile, out_fname));
cpp_notice_from_errno (pfile, options->out_fname);
if (pfile->errors)
return (FATAL_EXIT_CODE);
return (SUCCESS_EXIT_CODE);
if (cpp_errors (pfile))
return FATAL_EXIT_CODE;
return SUCCESS_EXIT_CODE;
}
/* Store the program name, and set the locale. */
@ -152,28 +155,27 @@ general_init (const char *argv0)
(void) textdomain (PACKAGE);
}
/* Set up the callbacks and register the pragmas we handle. */
/* Set up the callbacks as appropriate. */
static void
setup_callbacks ()
{
/* Set callbacks. */
if (! CPP_OPTION (pfile, no_output))
if (! options->no_output)
{
pfile->cb.ident = cb_ident;
pfile->cb.def_pragma = cb_def_pragma;
if (! CPP_OPTION (pfile, no_line_commands))
pfile->cb.file_change = cb_file_change;
cb->ident = cb_ident;
cb->def_pragma = cb_def_pragma;
if (! options->no_line_commands)
cb->file_change = cb_file_change;
}
if (CPP_OPTION (pfile, dump_includes))
pfile->cb.include = cb_include;
if (options->dump_includes)
cb->include = cb_include;
if (CPP_OPTION (pfile, dump_macros) == dump_names
|| CPP_OPTION (pfile, dump_macros) == dump_definitions)
if (options->dump_macros == dump_names
|| options->dump_macros == dump_definitions)
{
pfile->cb.define = cb_define;
pfile->cb.undef = cb_undef;
pfile->cb.poison = cb_def_pragma;
cb->define = cb_define;
cb->undef = cb_undef;
cb->poison = cb_def_pragma;
}
/* Register one #pragma which needs special handling. */
@ -220,7 +222,7 @@ scan_buffer (pfile)
}
else if (print.printed
&& ! (token->flags & PREV_WHITE)
&& CPP_OPTION (pfile, lang) != CLK_ASM
&& options->lang != CLK_ASM
&& cpp_avoid_paste (pfile, &tokens[1 - index], token))
token->flags |= PREV_WHITE;
@ -255,19 +257,18 @@ printer_init (pfile)
print.last_fname = 0;
print.lineno = 0;
print.printed = 0;
print.no_line_dirs = CPP_OPTION (pfile, no_line_commands);
if (CPP_OPTION (pfile, out_fname) == NULL)
CPP_OPTION (pfile, out_fname) = "";
if (options->out_fname == NULL)
options->out_fname = "";
if (CPP_OPTION (pfile, out_fname)[0] == '\0')
if (options->out_fname[0] == '\0')
print.outf = stdout;
else
{
print.outf = fopen (CPP_OPTION (pfile, out_fname), "w");
print.outf = fopen (options->out_fname, "w");
if (! print.outf)
{
cpp_notice_from_errno (pfile, CPP_OPTION (pfile, out_fname));
cpp_notice_from_errno (pfile, options-> out_fname);
return 1;
}
}
@ -290,7 +291,7 @@ maybe_print_line (line)
print.printed = 0;
}
if (print.no_line_dirs)
if (options->no_line_commands)
{
print.lineno = line;
return;
@ -348,7 +349,7 @@ cb_define (pfile, node)
fprintf (print.outf, "#define %s", node->name);
/* -dD command line option. */
if (CPP_OPTION (pfile, dump_macros) == dump_definitions)
if (options->dump_macros == dump_definitions)
fputs ((const char *) cpp_macro_definition (pfile, node), print.outf);
putc ('\n', print.outf);
@ -402,7 +403,9 @@ cb_file_change (pfile, fc)
flags = " 1";
else if (fc->reason == FC_LEAVE)
flags = " 2";
print_line (flags);
if (! options->no_line_commands)
print_line (flags);
}
}
@ -448,7 +451,7 @@ do_pragma_implementation (pfile)
/* Output? This is nasty, but we don't have [GCC] implementation in
the buffer. */
if (pfile->cb.def_pragma)
if (cb->def_pragma)
{
maybe_print_line (cpp_get_line (pfile)->output_line);
fputs ("#pragma GCC implementation ", print.outf);