comparison src/emacs.c @ 1204:e22b0213b713

[xemacs-hg @ 2003-01-12 11:07:58 by michaels] modules/ChangeLog: 2002-12-16 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: remove ifdef USE_KKCC. src/ChangeLog: 2003-01-08 Mike Sperber <mike@xemacs.org> * console.h (CDFW_CONSOLE): Don't lead to a crash if we're dealing with a dead window/frame/device/console. 2002-12-20 Mike Sperber <mike@xemacs.org> * ui-gtk.c: Fix typo from Ben's patch: emacs_ffi_data is a typedef, not a struct. emacs_gtk_object_data is a typedef, not a struct. * gtk-glue.c (gdk_event_to_emacs_event): Fix typos from Ben's patch: le -> emacs_event + rearrange the code. * event-gtk.c (gtk_event_to_emacs_event): Fix typos from Ben's patch: ..._UNDERLYING_GDK_EVENT -> ..._GDK_EVENT, ev -> key_event. * device-gtk.c: Fix typo from Ben's patch: x_keysym_map_hash_table -> x_keysym_map_hashtable. 2002-12-19 Mike Sperber <mike@xemacs.org> * menubar-x.c (set_frame_menubar): Initialize protect_me field of popup_data. 2002-12-16 Ben Wing <ben@xemacs.org> Major cleanup of KKCC, etc. KKCC, pdump-related: -- descriptions are written for all objects. this required some changes in the format of some objects, e.g. extents, popup-data, coding system, lstream, lcrecord-list. -- KKCC now handles weakness in markers, hash tables, elsewhere correctly (formerly, you'd eventually get a stack overflow due to endlessly expanding markers). -- textual changes: lrecord_description -> memory_description, struct_description -> sized_memory_description. -- extensive comment describing descriptions and pdump. -- redo XD_UNION so it works inline and change its format to provide sufficient info for pdump. implement XD_UNION in pdump. also add XD_UNION_DYNAMIC_SIZE, which works like XD_UNION except for when auto-computing structure sizes. -- add support for XD_INDIRECT in description offsets (used by extents). -- add support for "description maps", allowing for indirect descriptions that are retrieved from an object at run-time. this generalizes XD_CODING_SYSTEM_END, XD_SPECIFIER_END, etc., which have now been eliminated. -- add a fifth field "flags" to memory_description, to support flags that can be specified for this particular line. Currently defined flags are XD_FLAG_NO_KKCC (KKCC should ignore this entry; useful for the weakness above in markers, etc.), XD_FLAG_NO_PDUMP (pdump should ignore this entry), XD_FLAG_UNION_DEFAULT_ENTRY (in union maps, this specifies a "default" entry for all remaining values), and XD_FLAG_FREE_LISP_OBJECT (for use with lcrecord-lists). -- clean up the kkcc-itis in events, so that the differences between event data as separate objects and as a union are now minimized to a small number of places. with the new XD_UNION, we no longer need event data as separate objects, so this code is no longer ifdef USE_KKCC, but instead ifdef EVENT_DATA_AS_OBJECTS, not used by default. make sure that we explicitly free the separate event data objects when no longer in use, to maintain the invariant the event processing causes no consing. -- also remove other USE_KKCC ifdefs when not necessary. -- allow for KKCC compilation under MS Windows. -- fix README.kkcc. -- dump_add_root_object -> dump_add_root_lisp_object. -- implement dump_add_root_block and use this to handle dump_add_opaque. -- factor out some code duplicated in kkcc and pdump. Other allocation/object-related: -- change various *slots.h so MARKED_SLOT() call no longer includes semicolon. -- free_marker() takes a Lisp_Object not a direct pointer. -- make bit vectors lcrecords, like vectors, and eliminate code that essentially duplicated the lcrecord handling. -- additional asserts in FREE_FIXED_TYPE, formerly duplicated in the various callers of this. -- all lcrecord allocation functions now zero out the returned lcrecords. unnecessary calls to zero_lcrecord removed. add long comment describing these functions. -- extract out process and coding system slots, like for buffers, frames, etc. -- lcrecords now set the type of items sitting on the free list to lcrecord_type_free. -- changes to the way that gap arrays are allocated, for kkcc's benefit -- now, one single memory block with a stretchy array on the end, instead of a separate block holding the array. Error-checking-related: -- now can compile with C++ under MS Windows. clean up compile errors discovered that way. (a few were real problems) -- add C++ error-checking code to verify problems with mismatched GCPRO/UNGCPRO. (there were a few in the kkcc code.) add long comment about how to catch insufficient GCPRO (yes, it's possible using C++). -- add debug_p4(), a simple object printer, when debug_print() doesn't work. -- add dp() and db() as short synonyms of debug_print(), debug_backtrace(). -- `print' tries EXTREMELY hard to avoid core dumping when printing when crashing or from debug_print(), and tries as hard as it reasonably can in other situations. -- Correct the message output upon crashing to be more up-to-date. Event-related: -- document event-matches-key-specifier-p better. -- generalize the dispatch queues formerly duplicated in the various event implementations. add event methods to drain pending events. generalize and clean up QUIT handling, removing event-specific quit processing. allow arbitrary keystrokes, not just ASCII, to be the QUIT char. among other things, this should fix some longstanding bugs in X quit handling. long comment describing the various event queues. -- implement delaying of XFlush() if there are pending expose events. SOMEONE PLEASE TRY THIS OUT. -- Fix `xemacs -batch -l dunnet' under Cygwin. Try to fix under MS Windows but not quite there yet. Other: -- class -> class_ and no more C++ games with this item. new -> new_ in the lwlib code, so far not elsewhere. -- use `struct htentry' not `struct hentry' in elhash.c to avoid debugger confusion with hash.c. -- new macros ALIST_LOOP_3, ALIST_LOOP_4. * README.kkcc: * alloc.c: * alloc.c (deadbeef_memory): * alloc.c (allocate_lisp_storage): * alloc.c (copy_lisp_object): * alloc.c (ALLOCATE_FIXED_TYPE_1): * alloc.c (FREE_FIXED_TYPE): * alloc.c (make_vector_internal): * alloc.c (make_bit_vector_internal): * alloc.c (make_key_data): * alloc.c (make_button_data): * alloc.c (make_motion_data): * alloc.c (make_process_data): * alloc.c (make_timeout_data): * alloc.c (make_magic_data): * alloc.c (make_magic_eval_data): * alloc.c (make_eval_data): * alloc.c (make_misc_user_data): * alloc.c (struct string_chars_block): * alloc.c (mark_lcrecord_list): * alloc.c (make_lcrecord_list): * alloc.c (alloc_managed_lcrecord): * alloc.c (free_managed_lcrecord): * alloc.c (alloc_automanaged_lcrecord): * alloc.c (staticpro_1): * alloc.c (staticpro): * alloc.c (lispdesc_indirect_count_1): * alloc.c (lispdesc_indirect_description_1): * alloc.c (lispdesc_one_description_line_size): * alloc.c (lispdesc_structure_size): * alloc.c (mark_object_maybe_checking_free): * alloc.c (mark_with_description): * alloc.c (mark_struct_contents): * alloc.c (mark_object): * alloc.c (tick_lcrecord_stats): * alloc.c (free_cons): * alloc.c (free_key_data): * alloc.c (free_button_data): * alloc.c (free_motion_data): * alloc.c (free_process_data): * alloc.c (free_timeout_data): * alloc.c (free_magic_data): * alloc.c (free_magic_eval_data): * alloc.c (free_eval_data): * alloc.c (free_misc_user_data): * alloc.c (free_marker): * alloc.c (compact_string_chars): * alloc.c (gc_sweep): * alloc.c (garbage_collect_1): * alloc.c (Fgarbage_collect): * alloc.c (common_init_alloc_early): * alloc.c (init_alloc_early): * alloc.c (init_alloc_once_early): * buffer.c: * buffer.c (mark_buffer): * buffer.c (MARKED_SLOT): * buffer.c (cleanup_buffer_undo_lists): * buffer.c (Fget_file_buffer): * buffer.h (MARKED_SLOT): * bufslots.h: * bytecode.c: * callint.c: * casetab.c: * chartab.c: * chartab.c (symbol_to_char_table_type): * cmdloop.c: * cmdloop.c (Fcommand_loop_1): * config.h.in (new): * conslots.h: * console-gtk-impl.h (struct gtk_frame): * console-impl.h: * console-impl.h (struct console): * console-impl.h (MARKED_SLOT): * console-impl.h (CONSOLE_QUIT_EVENT): * console-msw-impl.h (XM_BUMPQUEUE): * console-msw.c (write_string_to_mswindows_debugging_output): * console-msw.h: * console-stream-impl.h: * console-stream-impl.h (struct stream_console): * console-stream.c: * console-stream.c (stream_init_console): * console-stream.h: * console-tty.c: * console-tty.h: * console-x.h: * console.c: * console.c (mark_console): * console.c (MARKED_SLOT): * console.c (allocate_console): * console.c (get_console_variant): * console.c (create_console): * console.c (delete_console_internal): * console.c (Fset_input_mode): * console.c (Fcurrent_input_mode): * console.c (common_init_complex_vars_of_console): * console.h: * console.h (console_variant): * console.h (device_metrics): * data.c: * data.c (Faref): * data.c (Faset): * data.c (decode_weak_list_type): * database.c: * debug.c (xemacs_debug_loop): * debug.c (FROB): * debug.c (Fadd_debug_class_to_check): * debug.c (Fdelete_debug_class_to_check): * debug.c (Fset_debug_classes_to_check): * debug.c (Fset_debug_class_types_to_check): * debug.c (Fdebug_types_being_checked): * debug.h (DASSERT): * device-gtk.c: * device-impl.h (struct device): * device-impl.h (MARKED_SLOT): * device-msw.c: * device-x.c: * device-x.c (x_init_device_class): * device-x.c (x_comp_visual_info): * device-x.c (x_try_best_visual_class): * device-x.c (x_init_device): * device-x.c (construct_name_list): * device-x.c (x_get_resource_prefix): * device-x.c (Fx_get_resource): * device-x.c (Fx_display_visual_class): * device.c: * device.c (MARKED_SLOT): * device.c (allocate_device): * device.c (Fmake_device): * device.c (delete_device_internal): * device.c (Fset_device_class): * device.h: * devslots.h: * devslots.h (MARKED_SLOT): * dialog-msw.c: * dired-msw.c (mswindows_ls_sort_fcn): * dired-msw.c (mswindows_get_files): * dired-msw.c (mswindows_format_file): * doprnt.c (parse_doprnt_spec): * dumper.c: * dumper.c (struct): * dumper.c (dump_add_root_block): * dumper.c (dump_add_root_struct_ptr): * dumper.c (dump_add_root_lisp_object): * dumper.c (pdump_struct_list_elt): * dumper.c (pdump_get_entry_list): * dumper.c (pdump_backtrace): * dumper.c (pdump_bump_depth): * dumper.c (pdump_register_sub): * dumper.c (pdump_register_object): * dumper.c (pdump_register_struct_contents): * dumper.c (pdump_register_struct): * dumper.c (pdump_store_new_pointer_offsets): * dumper.c (pdump_dump_data): * dumper.c (pdump_reloc_one): * dumper.c (pdump_allocate_offset): * dumper.c (pdump_scan_by_alignment): * dumper.c (pdump_dump_root_blocks): * dumper.c (pdump_dump_rtables): * dumper.c (pdump_dump_root_lisp_objects): * dumper.c (pdump): * dumper.c (pdump_load_finish): * dumper.c (pdump_file_get): * dumper.c (pdump_resource_get): * dumper.c (pdump_load): * editfns.c (save_excursion_restore): * editfns.c (user_login_name): * editfns.c (save_restriction_restore): * elhash.c: * elhash.c (htentry): * elhash.c (struct Lisp_Hash_Table): * elhash.c (HTENTRY_CLEAR_P): * elhash.c (LINEAR_PROBING_LOOP): * elhash.c (check_hash_table_invariants): * elhash.c (mark_hash_table): * elhash.c (hash_table_equal): * elhash.c (print_hash_table_data): * elhash.c (free_hentries): * elhash.c (make_general_lisp_hash_table): * elhash.c (decode_hash_table_weakness): * elhash.c (decode_hash_table_test): * elhash.c (Fcopy_hash_table): * elhash.c (resize_hash_table): * elhash.c (pdump_reorganize_hash_table): * elhash.c (find_htentry): * elhash.c (Fgethash): * elhash.c (Fputhash): * elhash.c (remhash_1): * elhash.c (Fremhash): * elhash.c (Fclrhash): * elhash.c (copy_compress_hentries): * elhash.c (elisp_maphash_unsafe): * elhash.c (finish_marking_weak_hash_tables): * elhash.c (prune_weak_hash_tables): * elhash.h: * emacs.c: * emacs.c (main_1): * emacs.c (main): * emacs.c (shut_down_emacs): * emodules.h (dump_add_root_lisp_object): * eval.c: * eval.c (unwind_to_catch): * eval.c (maybe_signal_error_1): * eval.c (maybe_signal_continuable_error_1): * eval.c (maybe_signal_error): * eval.c (maybe_signal_continuable_error): * eval.c (maybe_signal_error_2): * eval.c (maybe_signal_continuable_error_2): * eval.c (maybe_signal_ferror): * eval.c (maybe_signal_continuable_ferror): * eval.c (maybe_signal_ferror_with_frob): * eval.c (maybe_signal_continuable_ferror_with_frob): * eval.c (maybe_syntax_error): * eval.c (maybe_sferror): * eval.c (maybe_invalid_argument): * eval.c (maybe_invalid_constant): * eval.c (maybe_invalid_operation): * eval.c (maybe_invalid_change): * eval.c (maybe_invalid_state): * eval.c (Feval): * eval.c (call_trapping_problems): * eval.c (call_with_suspended_errors): * eval.c (warn_when_safe_lispobj): * eval.c (warn_when_safe): * eval.c (vars_of_eval): * event-Xt.c: * event-Xt.c (maybe_define_x_key_as_self_inserting_character): * event-Xt.c (x_to_emacs_keysym): * event-Xt.c (x_event_to_emacs_event): * event-Xt.c (emacs_Xt_enqueue_focus_event): * event-Xt.c (emacs_Xt_format_magic_event): * event-Xt.c (emacs_Xt_compare_magic_event): * event-Xt.c (emacs_Xt_hash_magic_event): * event-Xt.c (emacs_Xt_handle_magic_event): * event-Xt.c (Xt_timeout_to_emacs_event): * event-Xt.c (Xt_process_to_emacs_event): * event-Xt.c (signal_special_Xt_user_event): * event-Xt.c (emacs_Xt_next_event): * event-Xt.c (emacs_Xt_event_handler): * event-Xt.c (emacs_Xt_drain_queue): * event-Xt.c (emacs_Xt_event_pending_p): * event-Xt.c (check_if_pending_expose_event): * event-Xt.c (reinit_vars_of_event_Xt): * event-Xt.c (vars_of_event_Xt): * event-gtk.c: * event-gtk.c (IS_MODIFIER_KEY): * event-gtk.c (emacs_gtk_format_magic_event): * event-gtk.c (emacs_gtk_compare_magic_event): * event-gtk.c (emacs_gtk_hash_magic_event): * event-gtk.c (emacs_gtk_handle_magic_event): * event-gtk.c (gtk_to_emacs_keysym): * event-gtk.c (gtk_timeout_to_emacs_event): * event-gtk.c (gtk_process_to_emacs_event): * event-gtk.c (dragndrop_data_received): * event-gtk.c (signal_special_gtk_user_event): * event-gtk.c (emacs_gtk_next_event): * event-gtk.c (gtk_event_to_emacs_event): * event-gtk.c (generic_event_handler): * event-gtk.c (emacs_shell_event_handler): * event-gtk.c (emacs_gtk_drain_queue): * event-gtk.c (emacs_gtk_event_pending_p): * event-gtk.c (reinit_vars_of_event_gtk): * event-gtk.c (vars_of_event_gtk): * event-msw.c: * event-msw.c (struct winsock_stream): * event-msw.c (winsock_reader): * event-msw.c (winsock_writer): * event-msw.c (mswindows_enqueue_dispatch_event): * event-msw.c (mswindows_enqueue_misc_user_event): * event-msw.c (mswindows_enqueue_magic_event): * event-msw.c (mswindows_enqueue_process_event): * event-msw.c (mswindows_enqueue_mouse_button_event): * event-msw.c (mswindows_enqueue_keypress_event): * event-msw.c (mswindows_dequeue_dispatch_event): * event-msw.c (emacs_mswindows_drain_queue): * event-msw.c (mswindows_need_event_in_modal_loop): * event-msw.c (mswindows_need_event): * event-msw.c (mswindows_wm_timer_callback): * event-msw.c (dde_eval_string): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * event-msw.c (remove_timeout_mapper): * event-msw.c (emacs_mswindows_remove_timeout): * event-msw.c (emacs_mswindows_event_pending_p): * event-msw.c (emacs_mswindows_format_magic_event): * event-msw.c (emacs_mswindows_compare_magic_event): * event-msw.c (emacs_mswindows_hash_magic_event): * event-msw.c (emacs_mswindows_handle_magic_event): * event-msw.c (emacs_mswindows_select_console): * event-msw.c (emacs_mswindows_unselect_console): * event-msw.c (reinit_vars_of_event_mswindows): * event-msw.c (vars_of_event_mswindows): * event-stream.c: * event-stream.c (mark_command_builder): * event-stream.c (reset_command_builder_event_chain): * event-stream.c (allocate_command_builder): * event-stream.c (copy_command_builder): * event-stream.c (command_builder_append_event): * event-stream.c (event_stream_event_pending_p): * event-stream.c (event_stream_force_event_pending): * event-stream.c (maybe_read_quit_event): * event-stream.c (event_stream_drain_queue): * event-stream.c (remove_quit_p_event): * event-stream.c (event_stream_quit_p): * event-stream.c (echo_key_event): * event-stream.c (maybe_kbd_translate): * event-stream.c (execute_help_form): * event-stream.c (event_stream_generate_wakeup): * event-stream.c (enqueue_dispatch_event): * event-stream.c (enqueue_magic_eval_event): * event-stream.c (Fenqueue_eval_event): * event-stream.c (enqueue_misc_user_event): * event-stream.c (enqueue_misc_user_event_pos): * event-stream.c (next_event_internal): * event-stream.c (Fnext_event): * event-stream.c (Faccept_process_output): * event-stream.c (execute_internal_event): * event-stream.c (munge_keymap_translate): * event-stream.c (command_builder_find_leaf_no_mule_processing): * event-stream.c (command_builder_find_leaf): * event-stream.c (lookup_command_event): * event-stream.c (is_scrollbar_event): * event-stream.c (execute_command_event): * event-stream.c (Fdispatch_event): * event-stream.c (Fread_key_sequence): * event-stream.c (dribble_out_event): * event-stream.c (vars_of_event_stream): * event-tty.c (tty_timeout_to_emacs_event): * event-tty.c (emacs_tty_next_event): * event-tty.c (emacs_tty_drain_queue): * event-tty.c (reinit_vars_of_event_tty): * event-unixoid.c: * event-unixoid.c (find_tty_or_stream_console_from_fd): * event-unixoid.c (read_event_from_tty_or_stream_desc): * event-unixoid.c (drain_tty_devices): * event-unixoid.c (poll_fds_for_input): * events.c: * events.c (deinitialize_event): * events.c (zero_event): * events.c (mark_event): * events.c (print_event_1): * events.c (print_event): * events.c (event_equal): * events.c (event_hash): * events.c (Fmake_event): * events.c (Fdeallocate_event): * events.c (Fcopy_event): * events.c (map_event_chain_remove): * events.c (character_to_event): * events.c (event_to_character): * events.c (Fevent_to_character): * events.c (format_event_object): * events.c (upshift_event): * events.c (downshift_event): * events.c (event_upshifted_p): * events.c (Fevent_live_p): * events.c (Fevent_type): * events.c (Fevent_timestamp): * events.c (CHECK_EVENT_TYPE): * events.c (CHECK_EVENT_TYPE2): * events.c (CHECK_EVENT_TYPE3): * events.c (Fevent_key): * events.c (Fevent_button): * events.c (Fevent_modifier_bits): * events.c (event_x_y_pixel_internal): * events.c (event_pixel_translation): * events.c (Fevent_process): * events.c (Fevent_function): * events.c (Fevent_object): * events.c (Fevent_properties): * events.c (syms_of_events): * events.c (vars_of_events): * events.h: * events.h (struct event_stream): * events.h (struct Lisp_Key_Data): * events.h (KEY_DATA_KEYSYM): * events.h (EVENT_KEY_KEYSYM): * events.h (struct Lisp_Button_Data): * events.h (EVENT_BUTTON_BUTTON): * events.h (struct Lisp_Motion_Data): * events.h (EVENT_MOTION_X): * events.h (struct Lisp_Process_Data): * events.h (EVENT_PROCESS_PROCESS): * events.h (struct Lisp_Timeout_Data): * events.h (EVENT_TIMEOUT_INTERVAL_ID): * events.h (struct Lisp_Eval_Data): * events.h (EVENT_EVAL_FUNCTION): * events.h (struct Lisp_Misc_User_Data): * events.h (EVENT_MISC_USER_FUNCTION): * events.h (struct Lisp_Magic_Eval_Data): * events.h (EVENT_MAGIC_EVAL_INTERNAL_FUNCTION): * events.h (struct Lisp_Magic_Data): * events.h (EVENT_MAGIC_UNDERLYING): * events.h (EVENT_MAGIC_GDK_EVENT): * events.h (struct Lisp_Event): * events.h (XEVENT_CHANNEL): * events.h (SET_EVENT_TIMESTAMP_ZERO): * events.h (SET_EVENT_CHANNEL): * events.h (SET_EVENT_NEXT): * events.h (XSET_EVENT_TYPE): * events.h (struct command_builder): * extents.c: * extents.c (gap_array_adjust_markers): * extents.c (gap_array_recompute_derived_values): * extents.c (gap_array_move_gap): * extents.c (gap_array_make_gap): * extents.c (gap_array_insert_els): * extents.c (gap_array_delete_els): * extents.c (gap_array_make_marker): * extents.c (gap_array_delete_marker): * extents.c (gap_array_move_marker): * extents.c (make_gap_array): * extents.c (free_gap_array): * extents.c (extent_list_num_els): * extents.c (extent_list_insert): * extents.c (mark_extent_auxiliary): * extents.c (allocate_extent_auxiliary): * extents.c (decode_extent_at_flag): * extents.c (verify_extent_mapper): * extents.c (symbol_to_glyph_layout): * extents.c (syms_of_extents): * faces.c: * file-coding.c: * file-coding.c (struct_detector_category_description =): * file-coding.c (detector_category_dynarr_description_1): * file-coding.c (struct_detector_description =): * file-coding.c (detector_dynarr_description_1): * file-coding.c (MARKED_SLOT): * file-coding.c (mark_coding_system): * file-coding.c (coding_system_extra_description_map): * file-coding.c (coding_system_description): * file-coding.c (allocate_coding_system): * file-coding.c (symbol_to_eol_type): * file-coding.c (Fcoding_system_aliasee): * file-coding.c (set_coding_stream_coding_system): * file-coding.c (struct convert_eol_coding_system): * file-coding.c (struct undecided_coding_system): * file-coding.c (undecided_mark_coding_stream): * file-coding.c (coding_category_symbol_to_id): * file-coding.c (struct gzip_coding_system): * file-coding.c (coding_system_type_create): * file-coding.h: * file-coding.h (struct Lisp_Coding_System): * file-coding.h (CODING_SYSTEM_SLOT_DECLARATION): * file-coding.h (coding_system_variant): * file-coding.h (struct coding_system_methods): * file-coding.h (DEFINE_CODING_SYSTEM_TYPE_WITH_DATA): * file-coding.h (INITIALIZE_CODING_SYSTEM_TYPE_WITH_DATA): * file-coding.h (struct coding_stream): * fileio.c (Fsubstitute_in_file_name): * floatfns.c: * fns.c: * fns.c (base64_encode_1): * frame-gtk.c: * frame-gtk.c (Fgtk_start_drag_internal): * frame-impl.h (struct frame): * frame-impl.h (MARKED_SLOT): * frame-msw.c: * frame-x.c: * frame-x.c (Fcde_start_drag_internal): * frame-x.c (Foffix_start_drag_internal): * frame.c: * frame.c (MARKED_SLOT): * frame.c (allocate_frame_core): * frame.c (delete_frame_internal): * frame.c (Fmouse_position_as_motion_event): * frameslots.h: * frameslots.h (MARKED_SLOT_ARRAY): * free-hook.c: * glyphs-msw.c (mswindows_widget_instantiate): * glyphs-x.c: * glyphs-x.c (convert_EImage_to_XImage): * glyphs.c: * glyphs.c (process_image_string_instantiator): * glyphs.c (mark_image_instance): * glyphs.c (allocate_image_instance): * glyphs.c (unmap_subwindow): * glyphs.c (map_subwindow): * glyphs.c (syms_of_glyphs): * glyphs.c (specifier_type_create_image): * glyphs.h: * glyphs.h (struct text_image_instance): * glyphs.h (struct Lisp_Image_Instance): * gmalloc.c: * gmalloc.c ("C"): * gpmevent.c (Freceive_gpm_event): * gpmevent.c (gpm_next_event_cb): * gpmevent.c (vars_of_gpmevent): * gtk-glue.c (gdk_event_to_emacs_event): * gtk-xemacs.c (gtk_xemacs_class_init): * gui-msw.c: * gui-msw.c (mswindows_handle_gui_wm_command): * gui-msw.c (mswindows_translate_menu_or_dialog_item): * gui-x.c: * gui-x.c (mark_popup_data): * gui-x.c (snarf_widget_value_mapper): * gui-x.c (gcpro_popup_callbacks): * gui-x.c (ungcpro_popup_callbacks): * gui-x.c (free_popup_widget_value_tree): * gui-x.c (popup_selection_callback): * gui-x.h: * gui-x.h (struct popup_data): * gui.c: * gui.c (allocate_gui_item): * gutter.c (decode_gutter_position): * hash.c (NULL_ENTRY): * indent.c (vmotion_1): * indent.c (vmotion_pixels): * input-method-motif.c (res): * input-method-xlib.c (IMInstantiateCallback): * input-method-xlib.c (XIM_init_device): * input-method-xlib.c (res): * intl-encap-win32.c: * intl-encap-win32.c (qxeSHGetDataFromIDList): * intl-win32.c: * intl-win32.c (mswindows_multibyte_cp_type): * intl-win32.c (struct mswindows_multibyte_coding_system): * keymap.c: * keymap.c (make_key_description): * keymap.c (keymap_store): * keymap.c (get_keyelt): * keymap.c (keymap_lookup_1): * keymap.c (define_key_parser): * keymap.c (key_desc_list_to_event): * keymap.c (event_matches_key_specifier_p): * keymap.c (meta_prefix_char_p): * keymap.c (ensure_meta_prefix_char_keymapp): * keymap.c (Fdefine_key): * keymap.c (struct raw_lookup_key_mapper_closure): * keymap.c (raw_lookup_key): * keymap.c (raw_lookup_key_mapper): * keymap.c (lookup_keys): * keymap.c (lookup_events): * keymap.c (Flookup_key): * keymap.c (struct map_keymap_unsorted_closure): * keymap.c (map_keymap_unsorted_mapper): * keymap.c (map_keymap_sorted): * keymap.c (map_keymap_mapper): * keymap.c (map_keymap): * keymap.c (accessible_keymaps_mapper_1): * keymap.c (Faccessible_keymaps): * keymap.c (Fsingle_key_description): * keymap.c (raw_keys_to_keys): * keymap.c (format_raw_keys): * keymap.c (where_is_recursive_mapper): * keymap.c (where_is_internal): * keymap.c (describe_map_mapper_shadow_search): * keymap.c (keymap_lookup_inherited_mapper): * keymap.c (describe_map_mapper): * keymap.h (event_matches_key_specifier_p): * lisp.h: * lisp.h (this): * lisp.h (RETURN_NOT_REACHED): * lisp.h (struct Lisp_Vector): * lisp.h (struct Lisp_Bit_Vector): * lisp.h (UNGCPRO_1): * lisp.h (NUNGCPRO): * lisp.h (NNUNGCPRO): * lisp.h (DECLARE_INLINE_HEADER): * lrecord.h: * lrecord.h (struct lrecord_header): * lrecord.h (struct lcrecord_header): * lrecord.h (lrecord_type): * lrecord.h (struct lrecord_implementation): * lrecord.h (RECORD_DUMPABLE): * lrecord.h (memory_description_type): * lrecord.h (data_description_entry_flags): * lrecord.h (struct memory_description): * lrecord.h (struct sized_memory_description): * lrecord.h (XD_INDIRECT): * lrecord.h (XD_IS_INDIRECT): * lrecord.h (XD_DYNARR_DESC): * lrecord.h (DEFINE_BASIC_LRECORD_IMPLEMENTATION): * lrecord.h (MAKE_LRECORD_IMPLEMENTATION): * lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION): * lrecord.h (alloc_lcrecord_type): * lstream.c: * lstream.c (Lstream_new): * lstream.c (lisp_buffer_marker): * lstream.h: * lstream.h (lstream_implementation): * lstream.h (DEFINE_LSTREAM_IMPLEMENTATION): * lstream.h (DEFINE_LSTREAM_IMPLEMENTATION_WITH_DATA): * marker.c: * marker.c (copy_marker_1): * mem-limits.h: * menubar-gtk.c: * menubar-gtk.c (gtk_popup_menu): * menubar-msw.c: * menubar-msw.c (mswindows_popup_menu): * menubar-x.c (make_dummy_xbutton_event): * menubar-x.c (command_builder_operate_menu_accelerator): * menubar-x.c (menu_accelerator_safe_compare): * menubar-x.c (menu_accelerator_safe_mod_compare): * mule-charset.c: * mule-charset.c (make_charset): * mule-charset.c (Fcharset_property): * mule-coding.c: * mule-coding.c (ccs_description_1): * mule-coding.c (ccs_description =): * mule-coding.c (ccsd_description_1): * mule-coding.c (ccsd_description =): * nt.c (getpwnam): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_is_executable): * nt.c (read_unc_volume): * nt.c (mswindows_access): * nt.c (mswindows_link): * nt.c (mswindows_fstat): * nt.c (mswindows_stat): * nt.c (mswindows_executable_type): * nt.c (Fmswindows_short_file_name): * nt.c (Fmswindows_long_file_name): * objects-impl.h (struct Lisp_Color_Instance): * objects-impl.h (struct Lisp_Font_Instance): * objects-tty.c: * objects-x.c (allocate_nearest_color): * objects.c: * objects.c (Fmake_color_instance): * objects.c (Fmake_font_instance): * objects.c (font_instantiate): * opaque.c: * opaque.c (make_opaque): * opaque.c (make_opaque_ptr): * opaque.c (reinit_opaque_early): * opaque.c (init_opaque_once_early): * print.c: * print.c (printing_badness): * print.c (printing_major_badness): * print.c (print_internal): * print.c (debug_p4): * print.c (dp): * print.c (debug_backtrace): * process-nt.c (nt_create_process): * process-nt.c (get_internet_address): * process-unix.c: * process-unix.c (struct unix_process_data): * process-unix.c (get_internet_address): * process-unix.c (unix_alloc_process_data): * process-unix.c (unix_create_process): * process-unix.c (try_to_initialize_subtty): * process-unix.c (unix_kill_child_process): * process-unix.c (process_type_create_unix): * process.c: * process.c (mark_process): * process.c (MARKED_SLOT): * process.c (make_process_internal): * process.c (Fprocess_tty_name): * process.c (decode_signal): * process.h: * procimpl.h: * procimpl.h (struct process_methods): * procimpl.h (struct Lisp_Process): * rangetab.c: * realpath.c (readlink_and_correct_case): * redisplay-x.c (x_window_output_end): * redisplay-x.c (x_redraw_exposed_area): * redisplay-x.c (x_clear_frame): * redisplay.c: * redisplay.h: * redisplay.h (struct rune_dglyph): * redisplay.h (struct rune): * scrollbar.c: * scrollbar.c (create_scrollbar_instance): * specifier.c: * specifier.c (specifier_empty_extra_description_1): * specifier.c (make_specifier_internal): * specifier.c (decode_locale_type): * specifier.c (decode_how_to_add_specification): * specifier.h: * specifier.h (struct specifier_methods): * specifier.h (DEFINE_SPECIFIER_TYPE_WITH_DATA): * specifier.h (INITIALIZE_SPECIFIER_TYPE_WITH_DATA): * symbols.c: * symbols.c (Fsetplist): * symbols.c (default_value): * symbols.c (decode_magic_handler_type): * symbols.c (handler_type_from_function_symbol): * symbols.c (Fdefvaralias): * symbols.c (init_symbols_once_early): * symbols.c (reinit_symbols_early): * symsinit.h: * sysdep.c (sys_subshell): * sysdep.c (tty_init_sys_modes_on_device): * syswindows.h: * text.c (dfc_convert_to_external_format): * text.c (dfc_convert_to_internal_format): * text.c (reinit_eistring_early): * text.c (init_eistring_once_early): * text.c (reinit_vars_of_text): * text.h: * text.h (INC_IBYTEPTR_FMT): * text.h (DEC_IBYTEPTR_FMT): * toolbar.c: * toolbar.c (decode_toolbar_position): * tooltalk.c: * ui-gtk.c: * unexnt.c: * unexnt.c (_start): * unexnt.c (unexec): * unexnt.c (get_section_info): * unicode.c: * unicode.c (vars_of_unicode): * window.c: * window.c (allocate_window): * window.c (new_window_mirror): * window.c (update_mirror_internal): * winslots.h:
author michaels
date Sun, 12 Jan 2003 11:08:22 +0000
parents 8b464283e891
children f99d3d25df86
comparison
equal deleted inserted replaced
1203:5f2f8dcbfb3e 1204:e22b0213b713
254 #include "systty.h" 254 #include "systty.h"
255 #include "sysfile.h" 255 #include "sysfile.h"
256 #include "systime.h" 256 #include "systime.h"
257 #include "sysproc.h" /* for qxe_getpid() */ 257 #include "sysproc.h" /* for qxe_getpid() */
258 258
259 #ifdef PDUMP
260 #include "dumper.h"
261 #endif
262
263 #ifdef QUANTIFY 259 #ifdef QUANTIFY
264 #include <quantify.h> 260 #include <quantify.h>
265 #endif 261 #endif
266 262
267 #ifdef HAVE_SHLIB 263 #ifdef HAVE_SHLIB
697 being called for the second time in this invocation of xemacs; this 693 being called for the second time in this invocation of xemacs; this
698 happens as a result of using `run-temacs' in the command line, when 694 happens as a result of using `run-temacs' in the command line, when
699 invoking a bare (without dumped data) XEmacs (i.e. `temacs' with 695 invoking a bare (without dumped data) XEmacs (i.e. `temacs' with
700 the conventional dumper or `xemacs -nd' with the pdumper). See 696 the conventional dumper or `xemacs -nd' with the pdumper). See
701 Frun_emacs_from_temacs(). 697 Frun_emacs_from_temacs().
702
703 restart interacts with initialized as follows (per Olivier Galibert):
704
705 It's perverted.
706
707 initialized==0 => temacs
708 initialized!=0 && restart!=0 => run-temacs
709 initialized!=0 && restart==0 => either xemacs after conventional dump,
710 or xemacs post pdump_load()
711 */ 698 */
712 DECLARE_DOESNT_RETURN (main_1 (int, Extbyte **, Extbyte **, int)); 699 DECLARE_DOESNT_RETURN (main_1 (int, Extbyte **, Extbyte **, int));
713 DOESNT_RETURN 700 DOESNT_RETURN
714 main_1 (int argc, Extbyte **argv, Extbyte **envp, int restart) 701 main_1 (int argc, Extbyte **argv, Extbyte **envp, int restart)
715 { 702 {
1040 1027
1041 noninteractive1 = noninteractive; 1028 noninteractive1 = noninteractive;
1042 1029
1043 /****** Now initialize everything *******/ 1030 /****** Now initialize everything *******/
1044 1031
1032 /* NOTE NOTE NOTE:
1033
1034 In the code below, there are three different states we are concerned
1035 about:
1036
1037 "raw-temacs" == No dumped Lisp data present. `temacs', or (with pdump)
1038 `xemacs -nd'.
1039
1040 "run-temacs" == We are restarting. run-emacs-from-temacs is called,
1041 aka `run-temacs' on the command line.
1042
1043 "post-dump" == We are running an unexec()ed XEmacs, or we have loaded
1044 dump data using pdump_load().
1045
1046 initialized==0 => raw-temacs
1047 initialized!=0 && restart!=0 => run-temacs
1048 initialized!=0 && restart==0 => post-dump
1049
1050 When post-pdump_load(), we need to reinitialize various structures.
1051 This case is noted in the code below by
1052
1053 initialized +
1054 !restart +
1055 ifdef PDUMP.
1056
1057 In the comments below, "dump time" or "dumping" == raw-temacs.
1058 "run time" == run-temacs or post-dump.
1059 */
1060
1045 /* First, do really basic environment initialization -- catching signals 1061 /* First, do really basic environment initialization -- catching signals
1046 and the like. These functions have no dependence on any part of 1062 and the like. These functions have no dependence on any part of
1047 the Lisp engine and need to be done both at dump time and at run time. */ 1063 the Lisp engine and need to be done both at dump time and at run time. */
1048 1064
1049 init_signals_very_early (); 1065 init_signals_very_early ();
1073 /* purify_flag 1 is correct even if CANNOT_DUMP. 1089 /* purify_flag 1 is correct even if CANNOT_DUMP.
1074 * loadup.el will set to nil at end. */ 1090 * loadup.el will set to nil at end. */
1075 1091
1076 purify_flag = 0; 1092 purify_flag = 0;
1077 #ifdef PDUMP 1093 #ifdef PDUMP
1094 in_pdump = 0;
1078 if (restart) 1095 if (restart)
1079 initialized = 1; 1096 initialized = 1;
1080 else if (nodumpfile) 1097 else if (nodumpfile)
1081 { 1098 {
1082 initialized = 0; 1099 initialized = 0;
1127 #else 1144 #else
1128 if (!initialized) 1145 if (!initialized)
1129 purify_flag = 1; 1146 purify_flag = 1;
1130 #endif 1147 #endif
1131 1148
1149 init_alloc_early ();
1150
1132 if (!initialized) 1151 if (!initialized)
1133 { 1152 {
1134 /* Initialize things so that new Lisp objects 1153 /* Initialize things so that new Lisp objects
1135 can be created and objects can be staticpro'd. 1154 can be created and objects can be staticpro'd.
1136 Must be basically the very first thing done 1155 Must be basically the very first thing done
1153 /* Make sure that hash tables can be created. */ 1172 /* Make sure that hash tables can be created. */
1154 init_elhash_once_early (); 1173 init_elhash_once_early ();
1155 1174
1156 /* Make sure that eistrings can be created. */ 1175 /* Make sure that eistrings can be created. */
1157 init_eistring_once_early (); 1176 init_eistring_once_early ();
1158 } 1177
1159
1160 /* The following will get called in raw-temacs, post-dump/pdump-load XEmacs,
1161 and run-temacs. */
1162
1163 /* Initialize some vars that will also be reset post-dumping */
1164 init_alloc_early ();
1165
1166 if (!initialized)
1167 {
1168 /* Now declare all the symbols and define all the Lisp primitives. 1178 /* Now declare all the symbols and define all the Lisp primitives.
1169 1179
1170 The *only* thing that the syms_of_*() functions are allowed to do 1180 The *only* thing that the syms_of_*() functions are allowed to do
1171 is call one of the following: 1181 is call one of the following:
1172 1182
1589 #ifdef HAVE_X_WINDOWS 1599 #ifdef HAVE_X_WINDOWS
1590 image_instantiator_format_create_glyphs_x (); 1600 image_instantiator_format_create_glyphs_x ();
1591 #endif /* HAVE_X_WINDOWS */ 1601 #endif /* HAVE_X_WINDOWS */
1592 #ifdef HAVE_MS_WINDOWS 1602 #ifdef HAVE_MS_WINDOWS
1593 image_instantiator_format_create_glyphs_mswindows (); 1603 image_instantiator_format_create_glyphs_mswindows ();
1594 #endif /* HAVE_MSWINDOWS_WINDOWS */ 1604 #endif /* HAVE_MS_WINDOWS */
1595 #ifdef HAVE_GTK 1605 #ifdef HAVE_GTK
1596 image_instantiator_format_create_glyphs_gtk (); 1606 image_instantiator_format_create_glyphs_gtk ();
1597 #endif 1607 #endif
1598 1608
1599 /* Now initialize the lstream types and associated symbols. 1609 /* Now initialize the lstream types and associated symbols.
1652 - build_string() 1662 - build_string()
1653 - make_vector() 1663 - make_vector()
1654 - make_int() 1664 - make_int()
1655 - make_char() 1665 - make_char()
1656 - make_extent() 1666 - make_extent()
1657 - alloc_lcrecord() 1667 - basic_alloc_lcrecord()
1658 - Fcons() 1668 - Fcons()
1659 - listN() 1669 - listN()
1660 - make_lcrecord_list() 1670 - make_lcrecord_list()
1661 -- make_opaque_ptr() 1671 -- make_opaque_ptr()
1662 -- make_lisp_hash_table() (not allowed in 21.4!) 1672 -- make_lisp_hash_table() (not allowed in 21.4!)
2039 extern int always_gc; 2049 extern int always_gc;
2040 if (always_gc) /* purification debugging hack */ 2050 if (always_gc) /* purification debugging hack */
2041 garbage_collect_1 (); 2051 garbage_collect_1 ();
2042 } 2052 }
2043 #endif 2053 #endif
2054 }
2055
2044 #ifdef PDUMP 2056 #ifdef PDUMP
2045 } 2057 if (initialized && !restart) /* after successful pdump_load()
2046 else if (!restart) /* after successful pdump_load()
2047 (note, we are inside ifdef PDUMP) */ 2058 (note, we are inside ifdef PDUMP) */
2048 { 2059 {
2049 reinit_alloc_once_early (); 2060 reinit_alloc_early ();
2050 reinit_symbols_once_early (); 2061 reinit_symbols_early ();
2051 reinit_opaque_once_early (); 2062 reinit_opaque_early ();
2052 reinit_eistring_once_early (); 2063 reinit_eistring_early ();
2053 2064
2054 reinit_console_type_create_stream (); 2065 reinit_console_type_create_stream ();
2055 #ifdef HAVE_TTY 2066 #ifdef HAVE_TTY
2056 reinit_console_type_create_tty (); 2067 reinit_console_type_create_tty ();
2057 #endif 2068 #endif
2171 #endif 2182 #endif
2172 2183
2173 reinit_complex_vars_of_buffer_runtime_only (); 2184 reinit_complex_vars_of_buffer_runtime_only ();
2174 reinit_complex_vars_of_console_runtime_only (); 2185 reinit_complex_vars_of_console_runtime_only ();
2175 reinit_complex_vars_of_minibuf (); 2186 reinit_complex_vars_of_minibuf ();
2187 }
2176 #endif /* PDUMP */ 2188 #endif /* PDUMP */
2177 }
2178 2189
2179 /* CONGRATULATIONS!!! We have successfully initialized the Lisp 2190 /* CONGRATULATIONS!!! We have successfully initialized the Lisp
2180 engine. */ 2191 engine. */
2181 2192
2182 if (initialized) 2193 if (initialized)
2642 run_temacs_argc = nargs + 1; 2653 run_temacs_argc = nargs + 1;
2643 #if defined (HEAP_IN_DATA) && !defined(PDUMP) 2654 #if defined (HEAP_IN_DATA) && !defined(PDUMP)
2644 report_sheap_usage (0); 2655 report_sheap_usage (0);
2645 #endif 2656 #endif
2646 LONGJMP (run_temacs_catch, 1); 2657 LONGJMP (run_temacs_catch, 1);
2647 RETURN_NOT_REACHED (Qnil) 2658 RETURN_NOT_REACHED (Qnil);
2648 } 2659 }
2649 2660
2650 /* ARGSUSED */ 2661 /* ARGSUSED */
2651 int 2662 int
2652 main (int argc, char **argv, char **envp) 2663 main (int argc, char **argv, char **envp)
2785 /* VC++ documentation says that 2796 /* VC++ documentation says that
2786 GetExceptionCode() cannot be called inside the filter itself. */ 2797 GetExceptionCode() cannot be called inside the filter itself. */
2787 __except (mswindows_handle_hardware_exceptions (GetExceptionCode ())) {} 2798 __except (mswindows_handle_hardware_exceptions (GetExceptionCode ())) {}
2788 #endif 2799 #endif
2789 2800
2790 RETURN_NOT_REACHED (0) 2801 RETURN_NOT_REACHED (0);
2791 } 2802 }
2792 2803
2793 2804
2794 /************************************************************************/ 2805 /************************************************************************/
2795 /* dumping XEmacs (to a new EXE file) */ 2806 /* dumping XEmacs (to a new EXE file) */
2796 /************************************************************************/ 2807 /************************************************************************/
2797 2808
2798 #ifndef CANNOT_DUMP 2809 #ifndef CANNOT_DUMP
2799 2810
2800 #if !defined(PDUMP) || !defined(SYSTEM_MALLOC) 2811 #if !defined (PDUMP) || !defined (SYSTEM_MALLOC)
2801 extern char my_edata[]; 2812 extern Char_Binary my_edata[];
2802 #endif 2813 #endif
2803 2814
2804 extern void disable_free_hook (void); 2815 extern void disable_free_hook (void);
2805 2816
2806 DEFUN ("dump-emacs", Fdump_emacs, 2, 2, 0, /* 2817 DEFUN ("dump-emacs", Fdump_emacs, 2, 2, 0, /*
3159 stderr_out ("\nFatal error.\n\n"); 3170 stderr_out ("\nFatal error.\n\n");
3160 else 3171 else
3161 stderr_out ("\nFatal error (%d).\n\n", sig); 3172 stderr_out ("\nFatal error (%d).\n\n", sig);
3162 stderr_out 3173 stderr_out
3163 ("Your files have been auto-saved.\n" 3174 ("Your files have been auto-saved.\n"
3164 "Use `M-x recover-session' to recover them.\n" 3175 "Use `M-x recover-session' to recover them.\n"
3165 "\n" 3176 "\n"
3166 "Your version of XEmacs was distributed with a PROBLEMS file that may describe\n" 3177 "Your version of XEmacs was distributed with a PROBLEMS file that may describe\n"
3167 "your crash, and with luck a workaround. Please check it first, but do report\n" 3178 "your crash, and with luck a workaround. Please check it first, but do report\n"
3168 "the crash anyway. " 3179 "the crash anyway.\n\n"
3169 #ifdef INFODOCK 3180 #ifdef INFODOCK
3170 "\n\nPlease report this bug by selecting `Report-Bug' in the InfoDock menu.\n" 3181 "Please report this bug by selecting `Report-Bug' in the InfoDock menu, or\n"
3171 "*BE SURE* to include the XEmacs configuration from M-x describe-installation,\n" 3182 "(last resort) by emailing `crashes@xemacs.org' -- note that this is for XEmacs\n"
3172 "or the file Installation in the top directory of the build tree.\n" 3183 "in general, not just Infodock."
3173 #else 3184 #else
3174 "Please report this bug by invoking M-x report-emacs-bug,\n" 3185 "Please report this bug by invoking M-x report-emacs-bug, or by selecting\n"
3175 "or by selecting `Send Bug Report' from the Help menu. If necessary, send\n" 3186 "`Send Bug Report' from the Help menu. If that won't work, send ordinary\n"
3176 "ordinary email to `crashes@xemacs.org'. *MAKE SURE* to include the XEmacs\n" 3187 "email to `crashes@xemacs.org'."
3177 "configuration from M-x describe-installation, or equivalently the file\n" 3188 #endif
3178 "Installation in the top of the build tree.\n" 3189 " *MAKE SURE* to include this entire output\n"
3179 #endif 3190 "from this crash, especially including the Lisp backtrace, as well as the\n"
3180 #ifndef _MSC_VER 3191 "XEmacs configuration from M-x describe-installation (or equivalently, the\n"
3181 "\n" 3192 "file `Installation' in the top of the build tree).\n"
3182 "*Please* try *hard* to obtain a C stack backtrace; without it, we are unlikely\n" 3193 #ifdef _MSC_VER
3183 "to be able to analyze the problem. Locate the core file produced as a result\n" 3194 "\n"
3184 "of this crash (often called `core' or `core.<process-id>', and located in\n" 3195 "If you are fortunate enough to have some sort of debugging aid installed\n"
3185 "the directory in which you started XEmacs or your home directory), and type\n" 3196 "on your system, for example Visual C++, and you can get a C stack backtrace,\n"
3186 "\n" 3197 "*please* include it, as it will make our life far easier.\n"
3187 " gdb " 3198 "\n"
3199 #else
3200 "\n"
3201 "*Please* try *hard* to obtain a C stack backtrace; without it, we are unlikely\n"
3202 "to be able to analyze the problem. Locate the core file produced as a result\n"
3203 "of this crash (often called `core' or `core.<process-id>', and located in\n"
3204 "the directory in which you started XEmacs or your home directory), and type\n"
3205 "\n"
3206 " gdb "
3188 #endif 3207 #endif
3189 ); 3208 );
3190 #ifndef _MSC_VER 3209 #ifndef _MSC_VER
3191 { 3210 {
3192 const char *name; 3211 const char *name;
3209 stderr_out ("%s%s", dir, name); 3228 stderr_out ("%s%s", dir, name);
3210 } 3229 }
3211 stderr_out 3230 stderr_out
3212 (" core\n" 3231 (" core\n"
3213 "\n" 3232 "\n"
3214 "then type `where' at the debugger prompt. No GDB on your system? You may\n" 3233 "then type `where' at the debugger prompt. No GDB on your system? You may\n"
3215 "have DBX, or XDB, or SDB. (Ask your system administrator if you need help.)\n" 3234 "have DBX, or XDB, or SDB. (Ask your system administrator if you need help.)\n"
3216 "If no core file was produced, enable them (often with `ulimit -c unlimited'\n" 3235 "If no core file was produced, enable them (often with `ulimit -c unlimited')\n"
3217 "in case of future recurrance of the crash.\n"); 3236 "in case of future recurrance of the crash.\n");
3218 #endif /* _MSC_VER */ 3237 #endif /* _MSC_VER */
3219 } 3238 }
3220 3239
3221 stuff_buffered_input (stuff); 3240 stuff_buffered_input (stuff);
3222 3241