Commit Graph

68 Commits

Author SHA1 Message Date
Neil Booth
7868b4a252 cppfiles.c (_cpp_execute_include): Don't make a null-terminated copy of the filename.
* cppfiles.c (_cpp_execute_include): Don't make a null-terminated
	copy of the filename.  Don't use CPP_PREV_BUFFER.  Don't call
	strlen or strcpy; we already know the length.
	(_cpp_compare_file_date): Similarly.
	* cpphash.h (struct cpp_reader): Delete done_initialising.
	(CPP_PREV_BUFFER): Delete.
	* cppinit.c (cpp_start_read): Don't set done_initialising.
	* cpplex.c (parse_string): Guarantee null-termination.
	(_cpp_equiv_toklists): Remove.
	* cpplib.c (glue_header_name): Null-terminate.
	(do_line): Don't leak memory.
	* cpplib.h (BT_WEAK): Delete.
	* cppmain.c (cb_ident): Strings are now null-terminated.

From-SVN: r40233
2001-03-04 12:02:02 +00:00
Neil Booth
373e217703 cppfiles.c: Update comments.
* cppfiles.c: Update comments.
        (_cpp_read_file): Don't check for NULL filenames any more.
        * cppinit.c (cpp_start_read): Don't do canonicalization of
        in_fname and out_fname.  Use the passed file name exclusively.
        (_cpp_handle_options): Don't treat "-" as a command line option,
        but as a normal filename.
        (_cpp_post_options): Canonicalize in_fname and out_fname.
        * cppmain.c (printer_init): Don't check out_fname for NULL.
        * c-lex.c (orig_filename): Rename cpp_filename for clarity.
        (init_c_lex): Update, and use "" to represent stdin to CPP.
        (yyparse): Update.

From-SVN: r39938
2001-02-21 07:29:56 +00:00
Neil Booth
bd9697727b cpphash.h (struct cpp_buffer): Move saved_flags from cpp_reader.
* cpphash.h (struct cpp_buffer): Move saved_flags from cpp_reader.
        * cpplex.c (_cpp_lex_token): New token picks up the saved flags,
        and AVOID_LPASTE is cleared on meeting an unescaped newline.
        * cppmacro.c (builtin_macro): Set builtin flags here.
        (paste_all_tokens): Preserve AVOID_LPASTE on pasted token.
        (replace_args): Clarify intent.
        (cpp_get_token): Macro expansion tokens get the saved flags.
        Update.
        * cppmain.c (scan_buffer): Remove now-redundant print.printed
        check.

From-SVN: r39393
2001-02-01 19:13:53 +00:00
Neil Booth
26ec42ee4d cpphash.c (_cpp_cleanup_hashtable, [...]): Don't set fe_value.
* cpphash.c (_cpp_cleanup_hashtable, _cpp_lookup_with_hash)
        : Don't set fe_value.
        * cpplib.h (AVOID_LPASTE): New flag.
        (struct cpp_hashnode): Remove fe_value.
        * cpplex.c (cpp_avoid_paste): Don't paste '.' with a number.
        * cppmacro.c (builtin_macro): Don't set flags here.
        (replace_args): Set AVOID_LPASTE flag on first token of an
        argument, and the token following it.
        (cpp_get_token): Set AVOID_LPASTE flag on first token of a
        macro expansion, and on the token following it.  Do it for
        builtins too.
        * cppmain.c (scan_buffer): Avoid pasting only flagged tokens.

From-SVN: r39318
2001-01-28 11:22:23 +00:00
Alan Modra
95f4ac8b8a * cppmain.c (general_init): Don't use ANSI prototype.
From-SVN: r39073
2001-01-16 18:40:56 +00:00
Neil Booth
400023a387 c-parse.in (finish_parse): Add comment about cpp_destroy.
* c-parse.in (finish_parse): Add comment about cpp_destroy.
        * cp/lex.c (finish_parse): Similarly.
        * cppinit.c (cpp_cleanup): Rename cpp_destroy for clarity.
        Return the number of errors encountered.
        * cpplib.h (cpp_cleanup): Rename cpp_destroy, return int.
        * cppmain.c (main): Don't call cpp_destroy.

From-SVN: r39020
2001-01-14 22:00:20 +00:00
Neil Booth
6de8f7fc96 cppmain.c (do_preprocessing): New function; most of the old main.
* cppmain.c (do_preprocessing): New function; most of the old
        main.
        (main): Call it to do most of the work.
        (cb): Move from global scope to set_callbacks ().
        (setup_callbacks): Get the callback pointer.
        (general_init, printer_init): Clean up code and comments.

From-SVN: r39012
2001-01-14 16:44:50 +00:00
Neil Booth
d6d52dd655 cppfiles.c (_cpp_fake_include): New function.
* cppfiles.c (_cpp_fake_include): New function.
        * cpphash.h (_cpp_fake_include): New.
        * cpplib.c (do_line): Call _cpp_fake_include when entering
        header files in preprocessed input.
        * cppmain.c (cb_pragma_implementation): Remove handling.
	(setup_callbacks): Don't register pragmas.

From-SVN: r38987
2001-01-13 18:39:26 +00:00
Neil Booth
620ef26c8c 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
2001-01-13 14:24:34 +00:00
Neil Booth
7e96d768fe cppinit.c (cpp_handle_option): help_only is now part of the cpp_options structure.
* cppinit.c (cpp_handle_option): help_only is now part of the
        cpp_options structure.
        * cpplib.c (cpp_errors, cpp_get_options, cpp_get_callbacks,
        cpp_set_callbacks): New functions.
        * cpplib.h (cpp_callbacks): Break out as a named structure.
        (cpp_options): Move help_only here from cpp_reader.
        (CPP_FATAL_ERRORS): Update to use cpp_errors.
        (cpp_errors, cpp_get_options, cpp_get_callbacks,
        cpp_set_callbacks): New prototypes.
        * cppmain.c (main): Update for help_only.

From-SVN: r38971
2001-01-13 01:00:01 +00:00
Neil Booth
05e8172427 [multiple changes]
2001-01-11  Neil Booth  <neil@daikokuya.demon.co.uk>

        * cppinit.c (cpp_start_read): If -fpreprocessed, ignore
	-D, -U and -A, and don't initialize the builtins.
	* cppmain.c (cb_define, cb_undef): Unconditionally process
	the callback.
	* tradcpp.c (main): Fix typo.

2000-01-11  Mark Elbrecht  <snowball3@bigfoot.com>

        * cppfiles.c (cpp_included, find_include_file, _cpp_execute_include)
          (read_name_map): Use IS_ABSOLUTE_PATH.
        * tradcpp.c (get_filename): Likewise.

From-SVN: r38925
2001-01-11 21:30:16 +00:00
Neil Booth
5c5d1ea0c8 cppinit.c (OPT_g): Remove.
* cppinit.c (OPT_g): Remove.
        (cpp_handle_option): Update for removed -g3.
        (print_help): Update.
        * cpplib.h (struct cpp_options): Remove debug_output.
        * cppmain.c (setup_callbacks, cb_define): Update.
        * gcc.c (cpp_options): Translate -g3 to -dD.

From-SVN: r38881
2001-01-10 21:32:15 +00:00
Neil Booth
963024335a c-lang.c (c_post_options): Call cpp_post_options.
* c-lang.c (c_post_options): Call cpp_post_options.
        * cppmain.c (main): Similarly.
        * fix-header.c (read_scan_file): Similarly.
        * cp/decl2.c (cxx_post_options): Similarly.
        * objc/objc-act.c (objc_post_options): Similarly.
        * cppinit.c (cpp_start_read): Move option consistency checks
        to cpp_post_options.  Don't call init_dependency_output.
        If needed, add default target and main file dependency.
        (OPT_MD, OPT_MMD): Remove.
        (OPT_MF): New.
        (cpp_handle_option): Update for OPT_* changes.
        (cpp_post_options): New.
        (init_dependency_output): Command line -MF overrides environment
        variables.  Don't set default target etc.  Suppress output
        if dependencies are going to stdout.
        (print_help): Update.
        * cpplib.h (cpp_post_options): New.
        * gcc.c (cpp_options): Update for -MD, -MMD, -MF.

From-SVN: r38777
2001-01-07 15:17:07 +00:00
Zack Weinberg
f4cdc36834 cpplib.h (struct cpp_reader): Add help_only field.
* cpplib.h (struct cpp_reader): Add help_only field.
	* cppinit.c (COMMAND_LINE_OPTIONS): Add OPT_version.
	(cpp_handle_option): Set pfile->help_only if we see -h,
	--help, -target-help, or --version.  Print version string but
	do not set help_only if we see -v or -version.  Make text
	printed by -v match that printed by (-)-version.

	* cppmain.c (main): Exit after option parsing if
	pfile->help_only is true.

	* toplev.c (independent_decode_option): Call print_version,
	then exit, if we see --version (but not -version).
	(print_version): Split lengthy message into two lines.

From-SVN: r38733
2001-01-05 23:41:00 +00:00
Neil Booth
3cab41338d * cppmain.c: Update print.lineno with -P.
From-SVN: r38359
2000-12-18 19:31:54 +00:00
Neil Booth
eb1f4d9d28 c-lex.c: s/change_file/file_change.
* c-lex.c: s/change_file/file_change.
        * cpplib.h: Similarly.
        * cppmain.c: Similarly.
        * fix-header.c: Similarly.
        * cppfiles.c (stack_include_file): Pass the buffer location and
        size to cpp_push_buffer.  Generate the file_change callback,
        so that sysp is already set.
        * cpphash.h: Add _cpp_do_file_change.
        * cpplib.c (do_line): Set buffer->sysp directly. Generate the
        file_change callback after setting sysp.
        (_cpp_do_file_change): Handle FC_ENTER and the FC_RENAME exception
        here.
        (cpp_push_buffer): Don't generate a callback.  Clear sysp.
        (cpp_pop_buffer): Clean up logic.

From-SVN: r38357
2000-12-18 19:00:26 +00:00
Neil Booth
dfbf62ec3d cppmain.c (check_multiline_token): New function.
* cppmain.c (check_multiline_token): New function.
        (scan_buffer): Use it.
        (cb_change_file): Restructure to avoid warning.
        * cpperror.c (print_location): Initialize col.

From-SVN: r38332
2000-12-17 14:46:34 +00:00
Philipp Thomas
04650349da protoize.c (main): Correctly set locale categories.
2000-12-14  Philipp Thomas  <pthomas@suse.de>
	* protoize.c (main): Correctly set locale categories.
	* gcc.c (main): Likewise.
	* cppmain.c (general_init): Likewise.
	* toplev.c (main): Likewise.
	* gcov.c (main): Likewise.
	* collect2.c (main): Likewise.

From-SVN: r38331
2000-12-17 14:35:05 +00:00
Neil Booth
ad2a084dbd c-lex.c: Move main_input_filename handling to FC_ENTER.
* c-lex.c: Move main_input_filename handling to FC_ENTER. Clean up.
        * cpperror.c (print_containing_files): Get right line number.
        (print_location): Output column of 1 if 0.
        * cppfiles.c (stack_include_file): cpp_push_buffer handles
        the callback.
        * cpphash.h (_cpp_do_file_change): No longer external.
        * cpplib.c (do_file_change): Now local to cpplib.c.
        (do_line): Fake a buffer stack for preprocessed files.
        (cpp_push_buffer): Create a file_change callback.  Handle faked
        buffers.
        (cpp_pop_buffer): Similarly.
        * cpplib.h: BUF_FAKE: New buffer type.
        * cppmain.c: Update to handle correct file renaming where a
        #line is the first line of the main file, and produce only
        the renamed file, not the original file, as output.

From-SVN: r38319
2000-12-17 00:13:54 +00:00
Neil Booth
8dc4676ddb cppmacro.c (cpp_scan_buffer_nooutput): Take a boolean indicating whether to scan all buffers on the stack or just one.
* cppmacro.c (cpp_scan_buffer_nooutput): Take a boolean
        indicating whether to scan all buffers on the stack or
        just one.
        * cppinit.c (do_includes): Update.
        * cppmain.c (main): Update.
        * cpplib.h: Update prototype.

From-SVN: r37829
2000-11-28 21:34:30 +00:00
Neil Booth
cf44ea5231 c-lex.h (parse_in): Change parse_in to a cpp_reader *.
* c-lex.h (parse_in): Change parse_in to a cpp_reader *.
	* c-decl.c (c_decode_option): Update to match.
	* c-lex.c (init_c_lex, yyparse): Update to match.
	* c-lang.c (lang_init_options): Use cpp_create_reader.
	* cppinit.c (cpp_init): Rename initialize.
	(cpp_reader_init): Rename cpp_create_reader.  Create the
	reader.  Initialize cpplib if appropriate.
	* cpplib.h (cpp_create_reader) New prototype.
	(cpp_init, cpp_reader_init): Delete prototypes.
	* cppmain.c (general_init, setup_callbacks): New functions.
	(main): Use them.
	* fix-header.c (scan_in): Change type to cpp_reader *.
	(read_scan_file): Update for new cpplib interface and scan_in type.

	* cp/decl.c (parse_in): Change to cpp_reader *.
	(lang_decode_option): Update.
	* cp/lex.c (lang_init_options): Use new cpplib interface.
	(init_cp_pragma, finish_parse, handle_pragma_implementation): Update.
	* cp/spew.c (read_token): Update.
	* objc/objc-act.c (lang_init_options): Update new cpplib interface.

From-SVN: r37826
2000-11-28 21:13:35 +00:00
Neil Booth
27e2564ac8 c-lex.c (cb_enter_file, [...]): Combine into the new function cb_change_file.
* c-lex.c (cb_enter_file, cb_leave_file, cb_rename_file):
        Combine into the new function cb_change_file.
        (init_c_lex): Update.
        * cppfiles.c (stack_include_file): Use _cpp_do_file_change.
        (cpp_syshdr_flags): Delete.
        * cpphash.h (_cpp_do_file_change): New prototype.
        Move struct cpp_buffer here from...
        * cpplib.h (struct cpp_buffer): ... here.
        (enum cpp_fc_reason, struct cpp_file_loc,
        struct_cpp_file_change, change_file): New.
        (enter_file, leave_file, rename_file, cpp_syshdr_flags): Delete.
        * cpplib.c (do_line): Update for new cb_change_file callback.
        (_cpp_do_file_change): New function.
        (_cpp_pop_buffer): Update to use it.
        * cppmain.c (move_printer): Delete.
        (main): Set up single callback cb_change_file.
        (cb_enter_file, cb_leave_file, cb_rename_file): Delete.
        (cb_change_file): New.
        * fix-header.c (cur_file, cb_change_file): New.
        (recognized_function, read_scan_file): Update.
        * scan-decls.c (scan_decls): Update.
        * scan.h (recognized_function): Update prototype.

From-SVN: r37784
2000-11-27 08:00:04 +00:00
Neil Booth
bdb05a7b49 cpplib.h (struct cpp_reader): Remove lang_asm.
* cpplib.h (struct cpp_reader): Remove lang_asm.
        (struct cpp_options): Remove c89. New members lang,
        extended_numbers.
        * cppexp.c (parse_number): Use them.
        * cpphash.h (VALID_SIGN): Use them.
        * cppinit.c (set_lang, cpp_start_read): Update.
        * cpplex.c (parse_string, _cpp_lex_token): Update.
        * cpplib.c (_cpp_handle_directive): Update.
        * cppmacro.c (parse_args): Update.
        * cppmain.c (scan_buffer): Update.

From-SVN: r37761
2000-11-26 17:31:13 +00:00
Neil Booth
dd07b88447 c-lang.c (lang_init_options): Update call to cpp_reader_init.
* c-lang.c (lang_init_options): Update call to
	cpp_reader_init.
	* cppmain.c (main): Similarly.
	* fix-header.c (read_scan_file): Similarly.
	* cp/lex.c (lang_init_options): Similarly.
	* objc/objc-act.c (lang_init_options): Similarly.
	* cppexp.c (parse_number): Only warn for unextended C89.
	* cppinit.c (set_lang): New function.
	(cpp_reader_init): Take a LANG argument and pass it to set_lang.
	(COMMAND_LINE_OPTIONS): New option std=c++98.
	(cpp_handle_option): Use set_lang.
	* cpplib.h (enum_c_lang): New enumeration.  Update comments.

From-SVN: r37587
2000-11-20 18:27:32 +00:00
Richard Henderson
3a59c77cc6 * cppmain.c (scan_buffer): Don't avoid paste for assembly.
From-SVN: r37184
2000-11-01 00:53:36 -08:00
Geoff Keating
926c56780f cpphash.c (cpp_forall_identifiers): Add context variable for callback routine.
* cpphash.c (cpp_forall_identifiers): Add context variable
	for callback routine.
	* cppmain.c (dump_macro): Update to match cpp_forall_identifiers
	change.
	(main): Call cpp_forall_identifiers with null context.
	* cpplib.h (cpp_forall_identifiers): Update prototype.

	* cppmain.c: Make `parse_in' and `print' static.

From-SVN: r37119
2000-10-29 07:07:20 +00:00
Neil Booth
93c80368d9 New macro expander.
2000-10-28  Neil Booth  <neilb@earthling.net>

	New macro expander.

	* cpplib.c (struct answer): New.
	(struct if_stack): Use cpp_lexer_pos rather than line and col.
	Rename cmacro mi_cmacro.
	(struct directive, KANDR, STDC89, EXTENSION, COND, IF_COND, INCL,
	IN_I): New directive and flags.
	(skip_rest_of_line, check_eol, run_directive, glue_header_name,
	parse_answer, parse_assertion, find_answer): New functions.
	(parse_ifdef, detect_if_not_defined, validate_else): Remove.
	(lex_macro_node): New function to replace parse_ifdef and
	get_define_node.

	(_cpp_handle_directive): New function, combines _cpp_check_directive
	and _cpp_check_linemarker.

	(do_define, do_undef, parse_include, do_include, do_import,
	do_include_next, read_line_number, do_line, do_ident, do_pragma,
	do_pragma_once, do_pragma_poison, do_pragma_dependency):
	Update for new token getting interface.

	(do_ifdef, do_ifndef, do_if, do_else, do_endif, push_conditional)
	: Update for new multiple-include optimisation technique.
	(do_elif): Don't forget to invalidate controlling macros.

	(unwind_if_stack, cpp_defined, cpp_push_buffer, cpp_pop_buffer): Update.
	(parse_assertion, parse_answer, find_answer, _cpp_test_assertion):
	Functions to handle assertions with the new token interface.
	(do_assert, do_unassert): Use them.

	(cpp_define, _cpp_define_builtin, cpp_undef, cpp_assert, cpp_unassert):
	Use run_directive.

	(_cpp_init_stacks): Register directive names.  Don't register special
	nodes.

	* cpperror.c (print_containing_files, _cpp_begin_message): Update to
	new position recording regime.
	(cpp_ice, cpp_fatal, cpp_error, cpp_error_with_line, cpp_warning,
	cpp_warning_with_line, cpp_pedwarn, cpp_pedwarn_with_line,
	cpp_pedwarn_with_file_and_line): Update for _cpp_begin_message changes.
	(cpp_type2name): Move to cpplex.c.

	* cppexp.c (parse_charconst): spec_nodes is no longer a pointer.
	(parse_defined): Update to handle new multiple include optimisation
	method.  Remove poisoned identifier warning.
	(parse_assertion, TYPE_NAME): Delete.
	(lex): Update for multiple include optimisation, removal of
	CPP_DEFINED, to use _cpp_test_assertion for assertions and
	cpp_token_as_text.
	(_cpp_parse_expr): Update for MI optimisation, and to use op_as_text.
	(op_as_text): New function, to wrap cpp_token_as_text.

	* cppfiles.c (stack_include_file, _cpp_pop_file_buffer):
	Update for MI optimisation.
	(_cpp_execute_include): Take a token rather than 3 arguments.  Fix
	segfault on diagnostic.
	(_cpp_compare_file_date): Take a token rather than 3 args.
	(cpp_read_file): Work correctly for zero-length files.

	* cpphash.c (_cpp_init_macros, _cpp_cleanup_macros): Rename
	_cpp_init_hashtable and _cpp_cleanup_hashtable.
	(cpp_lookup): Place identifiers at front of identifier pool
	for _cpp_lookup_with_hash.
	(_cpp_lookup_with_hash): Require identifiers to be at the front of
	the identifier pool.  Commit the memory if not already in the
	hash table.

	* cppinit.c (cpp_reader_init): Move cpp_init_completed test to top.
	Initialise various members of cpp_reader, memory pools, and the
	special nodes.
	(cpp_printer_init): Delete.
	(cpp_cleanup): Update.
	(struct builtin, builtin_array, initialize_builtins): Update for new
	hashnode definition and builtin handling.
	(cpp_start_read, cpp_finish): Don't take or initialise a
	printer.  Update.

	* cpplib.h (cpp_printer, cpp_toklist, CPP_DEFINED, BOL,
	PASTED, VAR_ARGS, BEG_OF_FILE, IN_DIRECTIVE, KNOWN_DIRECTIVE,
	T_VOID, T_SPECLINE, T_DATE, T_FILE, T_BASE_FILE, T_INCLUDE_LEVEL,
	T_TIME, T_STDC, T_OPERATOR, T_POISON, T_MACRO, T_ASSERTION): Delete.
	(struct cpp_pool, struct cpp_macro, struct cpp_lexer_pos,
	struct cpp_lookahead, CPP_DHASH, enum mi_state, enum mi_ind,
	NO_EXPAND, VARARGS_FIRST, struct cpp_token_with_pos,
	struct toklist, struct cpp_context, struct specnodes,
	TOKEN_LOOKAHEAD, TOKEN_BUFFSIZE, NODE_OPERATOR, NODE_POISONED,
	NODE_BUILTIN, NODE_DIAGNOSTIC, NT_VOID, NT_MACRO, NT_ASSERTION,
	enum builtin_type, cpp_can_paste): New.
	(struct cpp_token): Delete line and col members.
	(struct cpp_buffer): New member output_lineno.
	(struct lexer_state): Delete indented, in_lex_line, seen_dot.
	Add va_args_ok, poisoned_ok, prevent_expansion, parsing_args.
	(struct cpp_reader): New members lexer_pos, macro_pos, directive_pos,
	ident_pool, temp_string_pool, macro_pool, argument_pool, string_pool,
	base_context, context, directive, mi_state, mi_if_not_defined,
	mi_lexed, mi_cmacro, mi_ind_cmacro, la_read, la_write, la_unused,
	mlstring_pos, macro_buffer, macro_buffer_len.
	Delete members mls_line, mls_column, token_list, potential_control_macro,
	temp_tokens, temp_cap, temp_alloced, temp_used, first_directive_token,
	context_cap, cur_context, no_expand_level, paste_level, contexts, args,
	save_parameter_spellings, need_newline, .
	Change type of date, time and spec_nodes members.
	Change prototypes for include and ident callbacks.
	(struct cpp_hashnode): Change type of name.  Remove union members
	expansion and code.  Add members macro, operator and builtin.

	(cpp_token_len, cpp_token_as_text, cpp_spell_token, cpp_start_read,
	cpp_finish, cpp_avoid_paste, cpp_get_token, cpp_get_line,
	cpp_get_output_line, cpp_macro_definition, cpp_start_lookahead,
	cpp_stop_lookahead): New prototypes.
	(cpp_printer_init, cpp_dump_definition): Delete prototypes.

	(U_CHAR, U, ustrcmp, ustrncmp, ustrlen, uxstrdup, ustrchr, ufputs):
	Move from cpphash.h.

	* cpphash.h (U_CHAR, U, ustrcmp, ustrncmp, ustrlen, uxstrdup, ustrchr,
	ufputs): Move to cpplib.h.
	(enum spell_type, struct token_spelling, _cpp_token_spellings, TOKEN_SPELL,
	TOKEN_NAME, struct answer, FREE_ANSWER, KANDR, STDC89, EXTENSION,
	COND, EXPAND, INCL, COMMENTS, IN_I, struct directive, directive_handler,
	struct spec_nodes, _cpp_digraph_spellings, _cpp_free_temp_tokens,
	_cpp_init_input_buffer, _cpp_grow_token_buffer, _cpp_init_toklist,
	_cpp_clear_toklist, _cpp_expand_token_space, _cpp_expand_name_space,
	_cpp_equiv_tokens, _cpp_equiv_toklists, _cpp_process_directive,
	_cpp_run_directive, _cpp_get_line, _cpp_get_raw_token, _cpp_glue_header_name,
	_cpp_can_paste, _cpp_check_directive, _cpp_check_linemarker,
	_cpp_parse_assertion, _cpp_find_answer): Delete.
	(VALID_SIGN, ALIGN, POOL_FRONT, POOL_LIMIT, POOL_BASE, POOL_SIZE,
	POOL_USED, POOL_COMMIT, struct cpp_chunk, _cpp_lex_token, _cpp_init_pool,
	_cpp_free_pool, _cpp_pool_reserve, _cpp_pool_alloc, _cpp_next_chunk,
	_cpp_lock_pool, _cpp_unlock_pool, _cpp_test_assertion,
	_cpp_handle_directive, DSC): New.
	(struct include_file): New member defined.

	(DO_NOT_REREAD, _cpp_begin_message, _cpp_execute_include,
	_cpp_compare_file_date): Update.
	(_cpp_pop_context, _cpp_get_token, _cpp_free_lookaheads, _cpp_push_token): New.
	(_cpp_init_macros, _cpp_cleanup_macros): Rename to _cpp_init_hashtable,
	_cpp_cleanup_hashtable.

	* Makefile.in: Remove cppoutput.c.

	* cppoutput.c: Delete

	* fixheader.c (read_scan_file): Update for new cpp_get_token
	prototype.
	(recognized_function): New argument LINE.

	* scan-decls.c (skip_to_closing_brace, scan_decls): Update for
	new cpp_get_token prototype.

	* scan.h (recognized_function): Update prototype.

	* po/POTFILES.in: Remove cppoutput.c.

From-SVN: r37098
2000-10-28 17:59:06 +00:00
Neil Booth
d809068018 cpperror.c (_cpp_begin_message): Do the test for suppression of warnings and pedantic warnings before the "is a...
* cpperror.c (_cpp_begin_message):  Do the test for suppression
        of warnings and pedantic warnings before the "is a warning an
        error" tests.
	* cppinit.c (cpp_handle_option): Remove surplus \n.
	* cpplex.c (ON_REST_ARG): Delete.
	(skip_block_comment): Initialise prevc.
	(parse_args): Improve error messages.
	(maybe_paste_with_next): Use CONTEXT_VARARGS rather
	than ON_REST_ARG.
	* cpplib.c (cpp_push_buffer): Fix grammar in message.
	* cppmain.c (main): Set callbacks for #ident and #pragma
	only if no_output option is false.
	(do_pragma_implementation): Only call the #pragma handler
	if it is set in the cpp_reader structure.

From-SVN: r36655
2000-09-28 05:55:22 +00:00
Zack Weinberg
3cb553b468 [multiple changes]
2000-08-20  Zack Weinberg  <zack@wolery.cumb.org>

	* cppinit.c (cpp_init): Set global flag when called.
	(cpp_reader_init): Bomb out if cpp_init hasn't been called.

Sun Aug 20 01:41:35 MSD 2000 Dennis Chernoivanov <cdi@sparc.spb.su>

        * cpplex.c (cpp_scan_buffer): Move `output_line_command' just
        before `process_directive' so that newlines won't be missed
        for directives.
        (cpp_printf): Increment `print->lineno' when newline is emitted.

        * cppmain.c (cb_ident): Likewise.
        (cb_define): Likewise.
        (cb_undef): Likewise.
        (cb_include): Likewise.
        (cb_def_pragma): Likewise.
        (dump_macros_helper): Likewise.

	* gcc.dg/cpp/pragma-1.c: New test.
	* gcc.dg/cpp/pragma-2.c: New test.

From-SVN: r35825
2000-08-20 21:36:18 +00:00
Neil Booth
c154ba66ef cppinit.c (sort_options): Remove, put functionality in cpp_init.
* cppinit.c (sort_options): Remove, put functionality in
	cpp_init.
	(cpp_init): New.
	(initialize_builtins): Free memory.
	(cpp_start_read): Move init_IStable to cpp_init.

	* cpplib.h (cpp_init): New prototype.
	* cppmain.c (main): Call cpp_init.

From-SVN: r35763
2000-08-17 17:52:48 +00:00
Zack Weinberg
9ec7291f1f configure.in (--enable-c-cpplib): Uncomment.
* configure.in (--enable-c-cpplib): Uncomment.  Use AC_DEFINE
	instead of extra_c_flags.
	(--enable-c-mbchar): Use AC_DEFINE instead of extra_c_flags.
	* configure: Regenerate.
	* config.in: Regenerate.

	* cpperror.c (cpp_type2name): New function.
	* cpplex.c (lex_line): If we issued an error for an invalid
	preprocessing directive, discard that logical line.
	* cpplib.c (do_line): Call a hook function if the current file
	is renamed by #line.
	(do_ident): Pass the contents of the string, not the entire
	token, to the callback function.
	* cpplib.h (CPP_LAST_PUNCTUATOR): New #define.
	(cb.rename_file): New hook function.
	(cb.ident): Adjust prototype.
	(cpp_type2name): Prototype.
	* cppmacro.c (dump_macro_args): Correct precedence lossage.

	* cppmain.c (cb_ident): Update for changed interface.
	(cb_rename_file): New function.
	(main): Set rename callback.

From-SVN: r35593
2000-08-09 19:41:12 +00:00
Zack Weinberg
a36556a837 [multiple changes]
2000-08-04  Andreas Schwab  <schwab@suse.de>

	* cppmain.c (cb_def_pragma): Skip the first two tokens from the
	token list, which are always `#' and `pragma'.

2000-08-04  Zack Weinberg  <zack@wolery.cumb.org>

	* tree.c (tree_expr_nonnegative_p): Move to...
	* fold-const.c: ... here.  Also handle BIND_EXPR and RTL_EXPR.
	(rtl_expr_nonnegative_p): New.
	* tree.h: Add prototype for rtl_expr_nonnegative_p.

	* real.h (CONST_DOUBLE_LOW, CONST_DOUBLE_HIGH, CONST_DOUBLE_MEM,
	CONST_DOUBLE_CHAIN: Move to...
	* rtl.h: ...here.  Use XCINT/XCEXP.

	* Makefile.in: Remove toplev.o from OBJS.  Add rule to make
	libbackend.a; add libbackend.a to STAGESTUFF.  Add BACKEND
	variable.  Use BACKEND when linking cc1, not OBJS.  Add BACKEND
	to VOL_FILES.

	* objc/Make-lang.in (cc1obj): Link with $(BACKEND).

ch:
	* Make-lang.in (cc1chill): Depend on $(BACKEND), not stamp-objlist.
	* Makefile.in (cc1chill): Link with $(BACKEND).  Define BACKEND,
	eliminate C_OBJS (was commented out), OBJS, OBJDEPS.
cp:
        * Make-lang.in (cc1plus): Depend on $(BACKEND), not stamp-objlist.
        * Makefile.in: Add C_OBJS, BACKEND; delete OBJS, OBJDEPS.
        (cc1plus): Link with $(BACKEND) and $(C_OBJS).
f:
	* Make-lang.in (f771): Depend on $(BACKEND), not stamp-objlist.
	* Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
	(f771): Link with $(BACKEND).
java:
	* Make-lang.in (jc1, jv-scan): Depend on $(BACKEND), not stamp-objlist.
	* Makefile.in: Add BACKEND; delete OBJS, OBJDEPS.
	(jc1): Link with $(BACKEND).
	(jv-scan): Depend on version.o, not all of $(OBJS) or $(BACKEND).

From-SVN: r35501
2000-08-05 00:50:02 +00:00
Zack Weinberg
5ef865d570 cppexp.c, [...]: Do not use 'legal' or 'illegal' in error messages and comments.
* cppexp.c, cppinit.c, cpplex.c, cpplib.c, cppmacro.c,
	cppspec.c: Do not use 'legal' or 'illegal' in error messages
	and comments.

	* cppmain.c (cb_define, cb_undef): Don't generate any output
	if not done_initializing.
	* cpplex.c (maybe_paste_with_next): When the token after a ##
	is an omitted rest argument, only delete the token before it
	if that token is a comma.  Do not warn about bogus token
	pastes for , ## rest_arg.

	* cpp.texi: Update.
	* cpp.1: Regenerate.

	* gcc.dg/cpp/macsyntx.c: Fix error regexp.

From-SVN: r35421
2000-08-02 07:08:49 +00:00
Zack Weinberg
58fea6afd9 cpperror.c (v_message): Split into _cpp_begin_message and v_message macro.
* cpperror.c (v_message): Split into _cpp_begin_message and
	v_message macro.  All callers updated.
	(_cpp_begin_message): Do inhibit_errors/inhibit_warnings
	checks here.

	* cppfiles.c (cpp_syshdr_flags): New function.
	(read_include_file): Don't call cpp_output_tokens.  Call
	enter_file hook.
	* cppinit.c (dump_macros_helper): Moved to cppmain.c.
	(cpp_reader_init): Don't initialize token_buffer.  Call
	_cpp_init_internal_pragmas.
	(cpp_cleanup): Don't clear token_buffer.
	(cpp_start_read): Don't worry about output from -D processing.
	Don't call cpp_output_tokens.
	(cpp_finish): Don't dump macros here.  Don't call
	cpp_output_tokens.
	* cppmacro.c (_cpp_dump_definition): Rename
	cpp_dump_definition.  Write directly to a FILE *.
	(dump_funlike_macro): Delete.
	(dump_macro_args): New.

	* cpplex.c (TOKEN_LEN): Convert to inline function.
	(_cpp_grow_token_buffer, safe_fwrite, cpp_output_tokens,
	cpp_scan_line, _cpp_dump_list): Delete.
	(cpp_printf, cpp_output_list): New.
	(output_line_command): Don't worry about entering or leaving files.
	(cpp_scan_buffer): Just output each token as we hit it.
	(process_directive): Don't call cpp_output_tokens.
	(_cpp_glue_header_name): Don't use token_buffer.
	(output_token, dump_param_spelling): Write directly to a FILE *.

	* cpplib.c (pass_thru_directive, dump_macro_name,
	pragma_dispatch, do_pragma_gcc): Delete.
	(do_define, do_undef, parse_include, do_line, do_ident, do_pragma,
	do_pragma_poison, cpp_pop_buffer): Call the appropriate hook
	functions.
	(do_error, do_warning, pragma_dependency): Call
	_cpp_begin_message, then cpp_output_list.
	(cpp_register_pragma, cpp_register_pragma_space,
	_cpp_init_internal_pragmas): New.
	(do_pragma): Walk the pragmas table here.
	(do_pragma_once, do_pragma_poison, do_pragma_system_header,
	do_pragma_dependency): Return void.
	(do_pragma_implementation): Moved to cppmain.c.

	* cpplib.h: Update prototypes.
	 (struct cpp_reader): Remove printer, token_buffer,
	token_buffer_size, and limit.  Add struct cb, and pragmas.
	(struct cpp_printer): Remove last_id and written.
	(CPP_WRITTEN, CPP_PWRITTEN, CPP_SET_WRITTEN,
	CPP_ADJUST_WRITTEN): Delete.
	* cpphash.h: Update prototypes.
	(ufputs): New wrapper.

	* cppmain.c (cb_define, cb_undef, cb_include, cb_ident,
	cb_enter_file, cb_leave_file, cb_def_pragma): New functions.
	(main): Set up callbacks.  Register #pragma implementation.
	Dump macros from here.

From-SVN: r35415
2000-08-02 01:13:45 +00:00
Zack Weinberg
711b88243b [multiple changes]
2000-02-17  Zack Weinberg  <zack@wolery.cumb.org>

	* cpphash.c: Don't include hashtab.h.  Most macro-handling code
	moved to cppmacro.c.
	(hash_HASHNODE, eq_HASHNODE, _cpp_dump_macro_hash,
	dump_hash_helper): Delete.
	(expand_hash, higher_prime_number, _cpp_lookup_with_hash,
	cpp_forall_identifiers): New. Implement specialized version of
	Vlad's expandable hash table.
	(cpp_lookup): Use new functions.
	(_cpp_init_macros, _cpp_cleanup_macros): Adjust for new
	implementation.
	* cppmacro.c: New file.
	* cppinit.c (dump_macros_helper): New.
	(cpp_finish): Iterate over the identifier table directly.
	* cpplex.c (parse_name): Calculate the hash of the identifier
	while we scan it.  Use _cpp_lookup_with_hash when we can.

	* cpphash.h: Update prototypes.
	(xcnewvec, HASHSTEP): New helper macros.
	* cpplib.h: Update prototypes.
	* Makefile.in (LIBCPP_OBJS): Add cppmacro.o.
	(cppmacro.o): New rule.
	(cpphash.o): Update deps.

	* cppmain.c: Do not set pfile->printer if no_output is on.

2000-02-15  Neil Booth  <neilb@earthling.net>

	* cpplib.c: Change all directive-handler functions to return
	void, not int.
	* cpphash.h: Update typedefs.

From-SVN: r35113
2000-07-18 00:59:49 +00:00
Zack Weinberg
041c31944c top level:
2000-07-03  Zack Weinberg  <zack@wolery.cumb.org>

	* fix-header.c (struct partial_proto): Remove unnecessary fields.
	(recognized_extern, recognized_function, read_scan_file):
	Update for new scheme.
	(check_protection): It's still a multiple include guard even
	if it doesn't always trigger.
	* scan-decls.c (skip_to_closing_brace, scan_decls): Update for
	new scheme.
	* scan.h: Declare struct cpp_token.  Update prototypes.

2000-07-03  Neil Booth  <neilb@earthling.net>
	    Zack Weinberg  <zack@wolery.cumb.org>

	Complete overhaul of the lexer and macro expander.

	* cpphash.c (object_defn, funct_defn, push_macro_expansion,
	arg, arglist, argdata, reflist, collect_objlike_expansion,
	collect_funlike_expansion, collect_params,
	warn_trad_stringify, trad_stringify, duplicate_arg_p, add_pat,
	unsafe_chars, macarg, compare_defs, special_symbol,
	scan_arguments, stringify, funlike_macroexpand,
	_cpp_quote_string, monthnames): Delete.
	(cpp_lookup, _cpp_free_definition, dump_funlike_macro,
	_cpp_create_definition, _cpp_dump_definition,
	dump_hash_helper): Adjust.
	(find_param, count_params, parse_define, var_args_str,
	check_macro_redefinition, save_expansion): New.

	* cpplex.c (skip_block_comment, skip_line_comment, parse_name,
        parse_string, output_line_command, trigraph_replace,
        lex_line, cpp_push_buffer, cpp_pop_buffer, cpp_output_tokens,
        cpp_scan_buffer_nooutput, cpp_scan_buffer, cpp_free_toklist,
        cpp_idcmp, _cpp_get_directive_token, _cpp_init_input_buffer,
	_cpp_skip_rest_of_line): Modify.

        (maybe_macroexpand, skip_comment, copy_comment, skip_string,
	find_position, null_warning, bump_column, expand_name_space,
	pedantic_whitespace, _cpp_output_list, _cpp_slice_toklist,
	_cpp_squeeze_toklist, _cpp_scan_until, _cpp_skip_hspace,
	_cpp_parse_name, _cpp_lex_token, cpp_get_non_space_token,
	_cpp_prescan): Delete.

	(dump_param_spelling, process_directive, lex_next,
        is_macro_disabled, stringify_arg, expand_context_stack,
        output_token, make_string_token, alloc_number_token,
        special_symbol, duplicate_token, maybe_paste_with_next,
        can_paste, prevent_macro_expansion, restore_macro_expansion,
        get_temp_token, release_temp_tokens, quote_string,
        token_names, token_spellings, _cpp_expand_name_space,
        _cpp_glue_header_name, _cpp_reserve_name_space,
        digraph_spellings, trigraph_ok, skip_whitespace, save_comment,
        placemarker_token, eof_token, cpp_context, macro_args,
        get_raw_token, parse_arg, parse_args, save_token,
        push_arg_context, push_macro_context, pop_context,
        do_pop_context, free_macro_args, _cpp_get_line,
        _cpp_run_directive): New.

	* cpplib.c (validate_else, parse_include, push_conditional,
	pass_thru_directive, read_line_number, parse_ifdef,
	detect_if_not_defined, _cpp_check_directive, do_define,
	do_undef, do_include, do_import, do_include_next, do_error,
	do_warning, do_ident, do_pragma, pragma_dispatch, gcc_pragmas,
	top_pragmas, do_pragma_gcc, do_pragma_implementation,
	do_pragma_poison, do_pragma_system_header,
	do_pragma_dependency, do_sccs, do_ifdef, do_ifndef, do_else,
	dl_elif, do_endif, _cpp_unwind_if_stack, do_assert,
	do_unassert, cpp_define, cpp_undef, cpp_assert, cpp_unassert,
	cpp_defined): Update for new scheme.
	(strtoul_for_line, get_define_node, dump_macro_name,
	_cpp_check_linemarker, _cpp_parse_assertion): New.
	(_cpp_handle_directive, do_pragma_default): Delete.

	* cpphash.h (struct predicate): Now struct answer.
	(enum spell_type, struct token_spelling, struct directive,
	directive_handler): New.
	Update prototypes.  Remove unused macros.
	* cpplib.h: Update prototypes.  Remove unused macros,
	structure definitions, and fields.

	* cpperror.c (print_containing_files, v_message): Adjust.
	* cppexp.c (parse_assertion, lex, parse_escape,
	_cpp_parse_expr): Adjust.
	* cppfiles.c (open_include_file, _cpp_execute_include,
	_cpp_compare_file_date, cpp_read_file, read_include_file):
	Adjust.
	* cppinit.c (dump_special_to_buffer): Delete.
	(append_include_chain, merge_include_chains, cpp_reader_init,
	cpp_cleanup, initialize_builtins, builtin_array, cpp_start_read,
	cpp_finish, handle_option, print_help): Adjust.
	* cppmain.c (main): Adjust.

testsuite:
2000-07-03  Zack Weinberg  <zack@wolery.cumb.org>

	* testsuite/gcc.dg/cpp/19951025-1.c: Adjust regexps.
	* testsuite/gcc.dg/cpp/19990703-1.c: Likewise.
	* testsuite/gcc.dg/cpp/20000625-1.c: Likewise.
	* testsuite/gcc.dg/cpp/20000625-2.c: Likewise.

	* testsuite/gcc.dg/cpp/macro1.c,
	testsuite/gcc.dg/cpp/paste1.c, testsuite/gcc.dg/cpp/paste2.c,
	testsuite/gcc.dg/cpp/paste3.c, testsuite/gcc.dg/cpp/paste4.c,
	testsuite/gcc.dg/cpp/strify1.c,
	testsuite/gcc.dg/cpp/strify2.c: New tests.

From-SVN: r34859
2000-07-04 01:58:21 +00:00
Mark Elbrecht
38b8de2fe1 cppmain.c (main): Use IS_DIR_SEPARATOR.
2000-05-11  Mark Elbrecht  <snowball3@bigfoot.com>

	* cppmain.c (main): Use IS_DIR_SEPARATOR.

From-SVN: r33854
2000-05-11 18:21:31 +00:00
Zack Weinberg
f2d5f0cca2 cpplex.c (cpp_output_tokens, [...]): New public interfaces.
* cpplex.c (cpp_output_tokens, cpp_scan_buffer_nooutput): New public
	interfaces.
	(safe_fwrite, output_line_command): New static functions.
	(cpp_expand_to_buffer): Now private to cpplib.
	(cpp_scan_buffer): Take a printer.

	* cpphash.h: Update prototypes.
	* cpplib.h: Update prototypes.
	(cpp_printer): New.
	(cpp_buffer): Remove last_nominal_fname.
	(cpp_reader): Remove lineno.

	* cppmain.c: Use a cpp_printer.
	* fix-header.c: No need to inhibit line commands.  Call
	cpp_start_read with no printer.

	* cpperror.c (cpp_notice_from_errno): Provide default name.
	* cppfiles.c (make_IHASH, _cpp_fake_ihash): New functions.
	(find_include_file, cpp_read_file): Use make_IHASH.
	(file_cleanup): Set control_macro and clear
	input_stack_listing_current here.
	(_cpp_execute_include): Don't output entering-file marker.
	* cpphash.c (special_symbol): Look for the line number in the
	buffer, not the reader.
	(_cpp_macroexpand): No need to disable line commands.
	(_cpp_dump_definition): No need to generate line commands.
	(dump_hash_helper): Remove excess newline from output.
	* cppinit.c (dump_special_to_buffer): No need to generate line
	commands.
	(cpp_printer_init): New.
	(cpp_start_read): Take a printer, and start it up if it's not
	NULL.  No need to generate line commands.
	(cpp_finish): Expect no buffers stacked at all.  Take a
	printer argument, and flush the output buffer if it's not
	NULL.
	* cpplex.c (_cpp_lex_token): Return EOF if there's no buffer.
	Don't put two hashes at the beginning of an assertion.
	(cpp_get_token): Don't increment pfile->lineno or emit line
	commands here.  Return EOF if there's no buffer when we get
	EOF.
	* cpplib.c (do_define, skip_if_group):
	No need to disable line commands.
	(_cpp_output_line_command): Delete function.
	(do_line): Don't emit line commands here, but set things up so
	they will be emitted if necessary.  Use _cpp_fake_ihash to
	make unique nominal_fnames if necessary.
	(do_elif, do_else, _cpp_handle_eof): Call cpp_error_with_line
	with 0 for column, not -1.
	(_cpp_handle_eof): Don't set the control macro here.  Don't
	clear input_stack_listing_current here.  Don't emit line
	commands.

From-SVN: r33159
2000-04-14 23:29:45 +00:00
Zack Weinberg
3a2b2c7a20 cppexp.c, [...]: Replace cpp_token with cpp_ttype everywhere.
* cppexp.c, cpphash.c, cpphash.h, cpplex.c, cpplib.c,
	cpplib.h, cppmain.c, fix-header.c, scan-decls.c: Replace
	cpp_token with cpp_ttype everywhere.
	* cpperror.c, cpphash.c, cpplex.c, cpplib.c, scan-decls.c:
	Replace cpp_buf_line_and_col with CPP_BUF_LINE and/or
	CPP_BUF_COL.  Line and column numbers are unsigned int, not
	long.
	* cpplex.c (cpp_buf_line_and_col): Delete.
	* cpplib.h (struct cpp_buffer, struct cpp_reader): Change
	'long lineno' to 'unsigned int lineno'.
	(CPP_BUF_LINE, CPP_BUF_COL): New macros.

From-SVN: r33076
2000-04-11 08:29:34 +00:00
Zack Weinberg
ae79697b72 cpplib.h: Merge struct cpp_options into struct cpp_reader.
* cpplib.h: Merge struct cpp_options into struct cpp_reader.
	Reorder struct cpp_options and struct cpp_reader for better
	packing.  Replace CPP_OPTIONS macro with CPP_OPTION which
	takes two args.  Change all 'char' flags to 'unsigned char'.
	Move show_column flag into struct cpp_options.  Don't
	prototype cpp_options_init.
	* cpphash.h, cpperror.c, cppexp.c, cppfiles.c, cpphash.c,
	cppinit.c, cpplex.c, cpplib.c:
	Replace CPP_OPTIONS (pfile)->whatever with
	CPP_OPTION (pfile, whatever), and likewise for
	opts = CPP_OPTIONS (pfile); ... opts->whatever;

	* cppinit.c (merge_include_chains): Take a cpp_reader *.
	Extract CPP_OPTION (pfile, pending) and work with that
	directly.
	(cpp_options_init): Delete.
	(cpp_reader_init): Turn on on-by-default options here.
	Allocate the pending structure here.
	(cl_options, enum opt_code): Define these from the same table,
	kept in a large macro.  Add -fshow-column and -fno-show-column
	options.

	* cpperror.c (v_message): If show_column is off, don't print
	the column number.

	* cppmain.c: Update for new interface.
	* fix-header.c: Likewise.

From-SVN: r32850
2000-03-31 23:16:11 +00:00
Zack Weinberg
f95e46b994 Makefile.in (STMP_FIXINC): New toggle.
* Makefile.in (STMP_FIXINC): New toggle.
	(LIBGCC2_DEPS): Delete all references.
	(stmp-headers): Delete target.  All references either deleted
	or changed to stmp-int-headers.
	(all.cross): Don't depend on stmp-headers or STMP_FIXPROTO.
	(LIBCPP_OBJS): Take out cppalloc.o.
	(cppalloc.o): Delete target.
	(stmp-int-hdrs): Depend on $(STMP_FIXINC).
	(gen-protos, fix-header): Link with libiberty.a.
	* build-make: Don't change FIXINCLUDES.  Override STMP_FIXINC
	to empty.
	* cp/Make-lang.in: Delete refs to LIBGCC2_DEPS.

	* configure.in: Remove refs to strerror.
	* acconfig.h: Take out NEED_DECLARATION_STRERROR.
	* system.h: Take out strerror stanza.

	* cpperror.c (my_strerror): Delete function.
	(cpp_error_from_errno, cpp_notice_from_errno): Use xstrerror.
	* cppmain.c (main): Call xmalloc_set_program_name first thing.
	* cppalloc.c: Delete file.
	* gen-protos.c: Don't provide xrealloc.

	* fixinc/fixincl.c, fixinc/fixlib.c, fixinc/procopen.c: Use
	xstrerror throughout.

From-SVN: r32200
2000-02-27 00:10:15 +00:00
Jeff Law
5e7b4e2509 Fix copyrights.
From-SVN: r32173
2000-02-25 22:59:31 -07:00
Zack Weinberg
c1212d2f09 cpplib.c (my_strerror, [...]): Move to cpperror.c.
* cpplib.c (my_strerror, cpp_error, cpp_error_with_line,
	cpp_error_from_errno, cpp_warning, cpp_warning_with_line,
	cpp_pedwarn, cpp_pedwarn_with_line,
	cpp_pedwarn_with_file_and_line): Move to cpperror.c.
	(cpp_print_file_and_line, v_cpp_error, v_cpp_warning,
	v_cpp_error_with_line, v_cpp_warning_with_line,
	cpp_message_from_errno, cpp_perror_with_name): Delete.

	* cpperror.c (cpp_print_containing_files): Take starting
	buffer as argument.
	(cpp_file_line_for_message): Rename to cpp_print_file_and_line.
	(v_cpp_message): Now called directly by all entry points.
	Remove -1 case.
	(cpp_pfatal_with_name, cpp_message): Delete.
	(cpp_notice_from_errno, cpp_ice): New functions.
	(cpp_notice): Is now for reporting error conditions, just
	without an associated file.
	(cpp_error, cpp_error_with_line): Don't do anything if
	opts->inhibit_errors is on.
	(cpp_pedwarn_with_file_and_line): Take column argument also.

	* cpplib.h: Update prototypes of exported functions.
	(struct cpp_options): Add inhibit_errors.

	* cppalloc.c, cppfiles.c: Use fprintf not cpp_notice for
	non-error messages.  Include intl.h.

	* cppinit.c, cppmain.c: Likewise.  Also, use
	cpp_notice_from_errno instead of cpp_perror_with_name or
	cpp_pfatal_with_name, and cpp_notice instead of cpp_message.

	* cppexp.c, cpphash.c, cppinit.c, cpplib.c: Use cpp_ice to
	report internal errors.

	* cpplib.c (do_define): Switch bcopy to memcpy.
	Give cpp_pedwarn_with_file_and_line a dummy column argument.

From-SVN: r31829
2000-02-06 23:46:18 +00:00
Zack Weinberg
40ea76de51 cpperror.c: Remove #ifdef EMACS block.
* cpperror.c: Remove #ifdef EMACS block.
	* cppmain.c: Likewise.
	* cpphash.c: Remove #if 0 blocks.
	* cppinit.c: Remove #if 0 blocks, and the -lint option.
	* cpplib.c: Remove #if 0 blocks and code referencing
	pcp_inside_if or for_lint.  Remove duplicate error message.
	Fix error messages for #else after #else or #elif.  Reformat.
	Remove archaic TODO list.
	* cpplib.h: Remove pcp_inside_if and for_lint flags.

From-SVN: r31817
2000-02-06 07:30:25 +00:00
Zack Weinberg
a9ae448346 cpplib.h (struct cpp_buffer: fname, [...]): Mark const.
1999-10-28 21:27 -0700  Zack Weinberg  <zack@bitmover.com>

	* cpplib.h (struct cpp_buffer: fname, nominal_fname,
	last_nominal_fname): Mark const.
	(struct include_hash: name, nshort, control_macro): Mark
	const.
	(struct macrodef: symnam): Mark const.
	(struct if_stack: fname): Mark const.
	(is_idchar, is_idstart, is_hor_space, trigraph_table): Delete.
	(IStable): New character-syntax array which encompasses all
	the old is_foo arrays.
	(is_idchar, is_numchar, is_idstart, is_numstart, is_hspace,
	is_space): New macros for interrogating IStable.
	(check_macro_name): Kill last argument.  All callers changed.

	* cppinit.c (initialize_char_syntax): Delete.
	(is_idchar, is_idstart, is_hor_space, is_space,
	trigraph_table): Delete.
	(IStable): New.  Initialize with clever macros to avoid
	information duplication.
	(builtin_array): Table of builtins to get rid of explicit list
	in initialize_builtins.
	(initialize_builtins): Use builtins_array.
	(cpp_start_read): Call init_IStable, and set IStable['$'] if
	opts->dollars_in_ident.

	* cppexp.c: Change all refs to is_xyz[] arrays to use new
	is_xyz() macros.
	(cpp_parse_expr): Avoid 'format string is not constant'
	warning. Use ISGRAPH to identify printable chars.
	* cppfiles.c: Change all refs to is_xyz[] arrays to use new
	is_xyz() macros.
	(read_and_prescan): Map trigraphs to chars with open-coded
	if-else-if-... sequence, not a lookup table.
	* cpphash.c: Change all refs to is_xyz[] arrays to use new
	is_xyz() macros.
	* cpplib.c: Change all refs to is_xyz[] arrays to use new
	is_xyz() macros.  Kill SKIP_ALL_WHITE_SPACE (unused).
	(check_macro_name): Remove ability to report an invalid
	assertion name, which is never used.
	(do_line): Constify a couple of char *'s.
	* cppmain.c (main): Call cpp_cleanup before returning.

From-SVN: r30252
1999-10-29 04:31:14 +00:00
Kaveh R. Ghazi
bcc5cac9a7 cpperror.c (cpp_file_line_for_message): Constify a char*.
* cpperror.c (cpp_file_line_for_message): Constify a char*.

	* cppexp.c (parse_number, parse_charconst, cpp_lex,
	cpp_parse_expr): Add static prototypes.
	(parse_charconst): Don't cast away const-ness.
	(token): Constify a char*.

	* cppfiles.c (file_name_list, include_hash, find_include_file,
	finclude, initialize_input_buffer): Constify a char*.
	(file_cleanup, find_position): Add static prototypes.

	* cpphash.c (macro_cleanup, macarg, timestamp, special_symbol,
	collect_expansion): Add static prototypes.
	(cpp_install, create_definition, monthnames): Constify a char*.

	* cpphash.h (cpp_install): Likewise.

	* cppinit.c (known_suffixes, default_include,
	dump_special_to_buffer, NAME, cpp_start_read, cpp_finish): Likewise.
	(base_name, dump_special_to_buffer, initialize_dependency_output):
	Add static prototypes.

	* cpplib.c (my_strerror): Constify a char*.
	(null_underflow, null_cleanup, skip_comment, copy_comment,
	copy_rest_of_line, handle_directive, pass_thru_directive,
	get_directive_token, read_line_number, cpp_print_file_and_line,
	v_cpp_error, v_cpp_warning, v_cpp_error_with_line,
	v_cpp_warning_with_line, detect_if_not_defined,
	consider_directive_while_skipping): Add static prototypes.
	(pass_thru_directive, check_macro_name, cpp_expand_to_buffer,
	cpp_pedwarn_with_file_and_line): Constify a char*.

	* cpplib.h (cpp_options, include_hash, progname, definition,
	cpp_pedwarn_with_file_and_line, cpp_expand_to_buffer,
	check_macro_name, cpp_pfatal_with_name, cpp_file_line_for_message,
	find_include_file, deps_output, include_hash): Constify a char*.

	* cppmain.c (progname): Constify.
	(main): Add prototype.  Use return, not exit.

	* fix-header.c (fatal, add_symbols, lookup_std_proto, write_lbrac,
	recognized_macro, check_macro_names, read_scan_file, write_rbrac,
	inf_skip_spaces, inf_read_upto, inf_scan_ident, inf_scan_ident,
	check_protection): Add static prototype.
	(xfree): Remove.
	(progname, recognized_macrom, recognized_extern): Constify a char*.
	(main): Add prototype.

	* gen-protos.c (progname): Constify a char*.

From-SVN: r29171
1999-09-07 15:41:26 +00:00
Zack Weinberg
5d83f44baa cpphash.c (macroexpand): Delete leading whitespace when arg is concatenated before.
Wed Aug  4 13:29:23 1999  Zack Weinberg  <zack@bitmover.com>

	* cpphash.c (macroexpand): Delete leading whitespace when arg
	is concatenated before.
	(unsafe_chars): Correct test for whether + and - can extend a
	token.

	* cppinit.c (cpp_start_read): Do dependencies for
	-include/-imacros files also.

	* cpplib.c (cpp_scan_buffer): In no-output mode, don't bother
	tokenizing non-directive lines.
	(cpp_expand_to_buffer): Temporarily disable no-output mode.
	* cppmain.c: In no-output mode, just call cpp_scan_buffer for
	the input file.

From-SVN: r28512
1999-08-04 20:39:33 +00:00
Zack Weinberg
2c826217f4 cppfiles.c (initialize_input_buffer): New function.
1999-05-10 18:21 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
	* cppfiles.c (initialize_input_buffer): New function.
	(finclude): Call it, if pfile->input_buffer is NULL.  Accept
	any character device as an input file.
	(read_and_prescan): Use pfile->input_buffer and
	pfile->input_speccase.
	* cppinit.c (cpp_cleanup): Free pfile->input_buffer and
	pfile->input_speccase.
	* cpplib.h (cpp_reader): Add input_buffer, input_speccase, and
	input_buffer_len members.  Use memcpy in CPP_PUTS_Q.
	* cppmain.c: Buffer output in the token_buffer; throttle
	number of calls to fwrite; check for errors from fwrite.

From-SVN: r26869
1999-05-10 11:24:36 -04:00
Zack Weinberg
3caee4a8ee cpphash.c (dump_definition): New function.
1999-04-26 19:16 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
	* cpphash.c (dump_definition): New function.
	* cpphash.h: Prototype it.
	* cpplib.c (handle_directive): Don't output anything here.
	Streamline.
	(pass_thru_directive): Take a length, not a pointer to the
	end.  All callers changed.
	(do_define): Handle -dD, -dN, -g3 entirely here.  Streamline.
	(do_include): Handle -dI here.
	(do_ident): Correct to match cccp.
	(do_pragma): Copy the pragma through here.
	(do_assert, do_unassert): Tidy.
	* cppinit.c (cpp_finish): If -dM was specified, walk the macro
	hash table and call dump_definition on all the entries.
	* cppmain.c: cpp_finish may produce output.

From-SVN: r26659
1999-04-26 16:41:02 +00:00
Zack Weinberg
34ca9541e7 cpperror.c, [...]: Never call abort.
1999-04-14 12:37 -0400  Zack Weinberg  <zack@rabi.columbia.edu>
	* cpperror.c, cppexp.c, cpplib.c: Never call abort.
	* cpphash.c: Only call abort when we detect corruption of the
	malloc arena.
	* cppmain.c: Don't define fatal or fancy_abort.

From-SVN: r26442
1999-04-14 09:40:56 +00:00