comparison src/lisp.h @ 4952:19a72041c5ed

Mule-izing, various fixes related to char * arguments -------------------- ChangeLog entries follow: -------------------- modules/ChangeLog addition: 2010-01-26 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: * postgresql/postgresql.c (CHECK_LIVE_CONNECTION): * postgresql/postgresql.c (print_pgresult): * postgresql/postgresql.c (Fpq_conn_defaults): * postgresql/postgresql.c (Fpq_connectdb): * postgresql/postgresql.c (Fpq_connect_start): * postgresql/postgresql.c (Fpq_result_status): * postgresql/postgresql.c (Fpq_res_status): Mule-ize large parts of it. 2010-01-26 Ben Wing <ben@xemacs.org> * ldap/eldap.c (print_ldap): * ldap/eldap.c (allocate_ldap): Use write_ascstring(). src/ChangeLog addition: 2010-01-26 Ben Wing <ben@xemacs.org> * alloc.c: * alloc.c (build_ascstring): * alloc.c (build_msg_cistring): * alloc.c (staticpro_1): * alloc.c (staticpro_name): * alloc.c (staticpro_nodump_1): * alloc.c (staticpro_nodump_name): * alloc.c (unstaticpro_nodump_1): * alloc.c (mcpro_1): * alloc.c (mcpro_name): * alloc.c (object_memory_usage_stats): * alloc.c (common_init_alloc_early): * alloc.c (init_alloc_once_early): * buffer.c (print_buffer): * buffer.c (vars_of_buffer): * buffer.c (common_init_complex_vars_of_buffer): * buffer.c (init_initial_directory): * bytecode.c (invalid_byte_code): * bytecode.c (print_compiled_function): * bytecode.c (mark_compiled_function): * chartab.c (print_table_entry): * chartab.c (print_char_table): * config.h.in: * console-gtk.c: * console-gtk.c (gtk_device_to_console_connection): * console-gtk.c (gtk_semi_canonicalize_console_connection): * console-gtk.c (gtk_canonicalize_console_connection): * console-gtk.c (gtk_semi_canonicalize_device_connection): * console-gtk.c (gtk_canonicalize_device_connection): * console-stream.c (stream_init_frame_1): * console-stream.c (vars_of_console_stream): * console-stream.c (init_console_stream): * console-x.c (x_semi_canonicalize_console_connection): * console-x.c (x_semi_canonicalize_device_connection): * console-x.c (x_canonicalize_device_connection): * console-x.h: * data.c (eq_with_ebola_notice): * data.c (Fsubr_interactive): * data.c (Fnumber_to_string): * data.c (digit_to_number): * device-gtk.c (gtk_init_device): * device-msw.c (print_devmode): * device-x.c (x_event_name): * dialog-msw.c (handle_directory_dialog_box): * dialog-msw.c (handle_file_dialog_box): * dialog-msw.c (vars_of_dialog_mswindows): * doc.c (weird_doc): * doc.c (Fsnarf_documentation): * doc.c (vars_of_doc): * dumper.c (pdump): * dynarr.c: * dynarr.c (Dynarr_realloc): * editfns.c (Fuser_real_login_name): * editfns.c (get_home_directory): * elhash.c (print_hash_table_data): * elhash.c (print_hash_table): * emacs.c (main_1): * emacs.c (vars_of_emacs): * emodules.c: * emodules.c (_emodules_list): * emodules.c (Fload_module): * emodules.c (Funload_module): * emodules.c (Flist_modules): * emodules.c (find_make_module): * emodules.c (attempt_module_delete): * emodules.c (emodules_load): * emodules.c (emodules_doc_subr): * emodules.c (emodules_doc_sym): * emodules.c (syms_of_module): * emodules.c (vars_of_module): * emodules.h: * eval.c (print_subr): * eval.c (signal_call_debugger): * eval.c (build_error_data): * eval.c (signal_error): * eval.c (maybe_signal_error): * eval.c (signal_continuable_error): * eval.c (maybe_signal_continuable_error): * eval.c (signal_error_2): * eval.c (maybe_signal_error_2): * eval.c (signal_continuable_error_2): * eval.c (maybe_signal_continuable_error_2): * eval.c (signal_ferror): * eval.c (maybe_signal_ferror): * eval.c (signal_continuable_ferror): * eval.c (maybe_signal_continuable_ferror): * eval.c (signal_ferror_with_frob): * eval.c (maybe_signal_ferror_with_frob): * eval.c (signal_continuable_ferror_with_frob): * eval.c (maybe_signal_continuable_ferror_with_frob): * eval.c (syntax_error): * eval.c (syntax_error_2): * eval.c (maybe_syntax_error): * eval.c (sferror): * eval.c (sferror_2): * eval.c (maybe_sferror): * eval.c (invalid_argument): * eval.c (invalid_argument_2): * eval.c (maybe_invalid_argument): * eval.c (invalid_constant): * eval.c (invalid_constant_2): * eval.c (maybe_invalid_constant): * eval.c (invalid_operation): * eval.c (invalid_operation_2): * eval.c (maybe_invalid_operation): * eval.c (invalid_change): * eval.c (invalid_change_2): * eval.c (maybe_invalid_change): * eval.c (invalid_state): * eval.c (invalid_state_2): * eval.c (maybe_invalid_state): * eval.c (wtaerror): * eval.c (stack_overflow): * eval.c (out_of_memory): * eval.c (print_multiple_value): * eval.c (issue_call_trapping_problems_warning): * eval.c (backtrace_specials): * eval.c (backtrace_unevalled_args): * eval.c (Fbacktrace): * eval.c (warn_when_safe): * event-Xt.c (modwarn): * event-Xt.c (modbarf): * event-Xt.c (check_modifier): * event-Xt.c (store_modifier): * event-Xt.c (emacs_Xt_format_magic_event): * event-Xt.c (describe_event): * event-gtk.c (dragndrop_data_received): * event-gtk.c (store_modifier): * event-gtk.c (gtk_reset_modifier_mapping): * event-msw.c (dde_eval_string): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (FROB): * event-msw.c (emacs_mswindows_format_magic_event): * event-stream.c (external_debugging_print_event): * event-stream.c (execute_help_form): * event-stream.c (vars_of_event_stream): * events.c (print_event_1): * events.c (print_event): * events.c (event_equal): * extents.c (print_extent_1): * extents.c (print_extent): * extents.c (vars_of_extents): * faces.c (print_face): * faces.c (complex_vars_of_faces): * file-coding.c: * file-coding.c (print_coding_system): * file-coding.c (print_coding_system_in_print_method): * file-coding.c (default_query_method): * file-coding.c (find_coding_system): * file-coding.c (make_coding_system_1): * file-coding.c (chain_print): * file-coding.c (undecided_print): * file-coding.c (gzip_print): * file-coding.c (vars_of_file_coding): * file-coding.c (complex_vars_of_file_coding): * fileio.c: * fileio.c (report_file_type_error): * fileio.c (report_error_with_errno): * fileio.c (report_file_error): * fileio.c (barf_or_query_if_file_exists): * fileio.c (vars_of_fileio): * floatfns.c (matherr): * fns.c (print_bit_vector): * fns.c (Fmapconcat): * fns.c (add_suffix_to_symbol): * fns.c (add_prefix_to_symbol): * frame-gtk.c: * frame-gtk.c (Fgtk_window_id): * frame-x.c (def): * frame-x.c (x_cde_transfer_callback): * frame.c: * frame.c (Fmake_frame): * gc.c (show_gc_cursor_and_message): * gc.c (vars_of_gc): * glyphs-eimage.c (png_instantiate): * glyphs-eimage.c (tiff_instantiate): * glyphs-gtk.c (gtk_print_image_instance): * glyphs-msw.c (mswindows_print_image_instance): * glyphs-x.c (x_print_image_instance): * glyphs-x.c (update_widget_face): * glyphs.c (make_string_from_file): * glyphs.c (print_image_instance): * glyphs.c (signal_image_error): * glyphs.c (signal_image_error_2): * glyphs.c (signal_double_image_error): * glyphs.c (signal_double_image_error_2): * glyphs.c (xbm_mask_file_munging): * glyphs.c (pixmap_to_lisp_data): * glyphs.h: * gui.c (gui_item_display_flush_left): * hpplay.c (player_error_internal): * hpplay.c (myHandler): * intl-win32.c: * intl-win32.c (langcode_to_lang): * intl-win32.c (sublangcode_to_lang): * intl-win32.c (Fmswindows_get_locale_info): * intl-win32.c (lcid_to_locale_mule_or_no): * intl-win32.c (mswindows_multibyte_to_unicode_print): * intl-win32.c (complex_vars_of_intl_win32): * keymap.c: * keymap.c (print_keymap): * keymap.c (ensure_meta_prefix_char_keymapp): * keymap.c (Fkey_description): * keymap.c (Ftext_char_description): * lisp.h: * lisp.h (struct): * lisp.h (DECLARE_INLINE_HEADER): * lread.c (Fload_internal): * lread.c (locate_file): * lread.c (read_escape): * lread.c (read_raw_string): * lread.c (read1): * lread.c (read_list): * lread.c (read_compiled_function): * lread.c (init_lread): * lrecord.h: * marker.c (print_marker): * marker.c (marker_equal): * menubar-msw.c (displayable_menu_item): * menubar-x.c (command_builder_operate_menu_accelerator): * menubar.c (vars_of_menubar): * minibuf.c (reinit_complex_vars_of_minibuf): * minibuf.c (complex_vars_of_minibuf): * mule-charset.c (Fmake_charset): * mule-charset.c (complex_vars_of_mule_charset): * mule-coding.c (iso2022_print): * mule-coding.c (fixed_width_query): * number.c (bignum_print): * number.c (ratio_print): * number.c (bigfloat_print): * number.c (bigfloat_finalize): * objects-msw.c: * objects-msw.c (mswindows_color_to_string): * objects-msw.c (mswindows_color_list): * objects-tty.c: * objects-tty.c (tty_font_list): * objects-tty.c (tty_find_charset_font): * objects-xlike-inc.c (xft_find_charset_font): * objects-xlike-inc.c (endif): * print.c: * print.c (write_istring): * print.c (write_ascstring): * print.c (Fterpri): * print.c (Fprint): * print.c (print_error_message): * print.c (print_vector_internal): * print.c (print_cons): * print.c (print_string): * print.c (printing_unreadable_object): * print.c (print_internal): * print.c (print_float): * print.c (print_symbol): * process-nt.c (mswindows_report_winsock_error): * process-nt.c (nt_canonicalize_host_name): * process-unix.c (unix_canonicalize_host_name): * process.c (print_process): * process.c (report_process_error): * process.c (report_network_error): * process.c (make_process_internal): * process.c (Fstart_process_internal): * process.c (status_message): * process.c (putenv_internal): * process.c (vars_of_process): * process.h: * profile.c (vars_of_profile): * rangetab.c (print_range_table): * realpath.c (vars_of_realpath): * redisplay.c (vars_of_redisplay): * search.c (wordify): * search.c (Freplace_match): * sheap.c (sheap_adjust_h): * sound.c (report_sound_error): * sound.c (Fplay_sound_file): * specifier.c (print_specifier): * symbols.c (Fsubr_name): * symbols.c (do_symval_forwarding): * symbols.c (set_default_buffer_slot_variable): * symbols.c (set_default_console_slot_variable): * symbols.c (store_symval_forwarding): * symbols.c (default_value): * symbols.c (defsymbol_massage_name_1): * symbols.c (defsymbol_massage_name_nodump): * symbols.c (defsymbol_massage_name): * symbols.c (defsymbol_massage_multiword_predicate_nodump): * symbols.c (defsymbol_massage_multiword_predicate): * symbols.c (defsymbol_nodump): * symbols.c (defsymbol): * symbols.c (defkeyword): * symbols.c (defkeyword_massage_name): * symbols.c (check_module_subr): * symbols.c (deferror_1): * symbols.c (deferror): * symbols.c (deferror_massage_name): * symbols.c (deferror_massage_name_and_message): * symbols.c (defvar_magic): * symeval.h: * symeval.h (DEFVAR_SYMVAL_FWD): * sysdep.c: * sysdep.c (init_system_name): * sysdll.c: * sysdll.c (MAYBE_PREPEND_UNDERSCORE): * sysdll.c (dll_function): * sysdll.c (dll_variable): * sysdll.c (dll_error): * sysdll.c (dll_open): * sysdll.c (dll_close): * sysdll.c (image_for_address): * sysdll.c (my_find_image): * sysdll.c (search_linked_libs): * sysdll.h: * sysfile.h: * sysfile.h (DEFAULT_DIRECTORY_FALLBACK): * syswindows.h: * tests.c (DFC_CHECK_LENGTH): * tests.c (DFC_CHECK_CONTENT): * tests.c (Ftest_hash_tables): * text.c (vars_of_text): * text.h: * tooltalk.c (tt_opnum_string): * tooltalk.c (tt_message_arg_ival_string): * tooltalk.c (Ftooltalk_default_procid): * tooltalk.c (Ftooltalk_default_session): * tooltalk.c (init_tooltalk): * tooltalk.c (vars_of_tooltalk): * ui-gtk.c (Fdll_load): * ui-gtk.c (type_to_marshaller_type): * ui-gtk.c (Fgtk_import_function_internal): * ui-gtk.c (emacs_gtk_object_printer): * ui-gtk.c (emacs_gtk_boxed_printer): * unicode.c (unicode_to_ichar): * unicode.c (unicode_print): * unicode.c (unicode_query): * unicode.c (vars_of_unicode): * unicode.c (complex_vars_of_unicode): * win32.c: * win32.c (mswindows_report_process_error): * window.c (print_window): * xemacs.def.in.in: BASIC IDEA: Further fixing up uses of char * and CIbyte * to reflect their actual semantics; Mule-izing some code; redoing of the not-yet-working code to handle message translation. Clean up code to handle message-translation (not yet working). Create separate versions of build_msg_string() for working with Ibyte *, CIbyte *, and Ascbyte * arguments. Assert that Ascbyte * arguments are pure-ASCII. Make build_msg_string() be the same as build_msg_ascstring(). Create same three versions of GETTEXT() and DEFER_GETTEXT(). Also create build_defer_string() and variants for the equivalent of DEFER_GETTEXT() when building a string. Remove old CGETTEXT(). Clean up code where GETTEXT(), DEFER_GETTEXT(), build_msg_string(), etc. was being called and introduce some new calls to build_msg_string(), etc. Remove GETTEXT() from calls to weird_doc() -- we assume that the message snarfer knows about weird_doc(). Remove uses of DEFER_GETTEXT() from error messages in sysdep.c and instead use special comments /* @@@begin-snarf@@@ */ and /* @@@end-snarf@@@ */ that the message snarfer presumably knows about. Create build_ascstring() and use it in many instances in place of build_string(). The purpose of having Ascbyte * variants is to make the code more self-documenting in terms of what sort of semantics is expected for char * strings. In fact in the process of looking for uses of build_string(), much improperly Mule-ized was discovered. Mule-ize a lot of code as described in previous paragraph, e.g. in sysdep.c. Make the error functions take Ascbyte * strings and fix up a couple of places where non-pure-ASCII strings were being passed in (file-coding.c, mule-coding.c, unicode.c). (It's debatable whether we really need to make the error functions work this way. It helps catch places where code is written in a way that message translation won't work, but we may well never implement message translation.) Make staticpro() and friends take Ascbyte * strings instead of raw char * strings. Create a const_Ascbyte_ptr dynarr type to describe what's held by staticpro_names[] and friends, create pdump descriptions for const_Ascbyte_ptr dynarrs, and use them in place of specially-crafted staticpro descriptions. Mule-ize certain other functions (e.g. x_event_name) by correcting raw use of char * to Ascbyte *, Rawbyte * or another such type, and raw use of char[] buffers to another type (usually Ascbyte[]). Change many uses of write_c_string() to write_msg_string(), write_ascstring(), etc. Mule-ize emodules.c, emodules.h, sysdll.h. Fix some un-Mule-ized code in intl-win32.c. A comment in event-Xt.c and the limitations of the message snarfer (make-msgfile or whatever) is presumably incorrect -- it should be smart enough to handle function calls spread over more than one line. Clean up code in event-Xt.c that was written awkwardly for this reason. In config.h.in, instead of NEED_ERROR_CHECK_TYPES_INLINES, create a more general XEMACS_DEFS_NEEDS_INLINE_DECLS to indicate when inlined functions need to be declared in xemacs.defs.in.in, and make use of it in xemacs.defs.in.in. We need to do this because postgresql.c now calls qxestrdup(), which is an inline function. Make nconc2() and other such functions MODULE_API and put them in xemacs.defs.in.in since postgresql.c now uses them. Clean up indentation in lread.c and a few other places. In text.h, document ASSERT_ASCTEXT_ASCII() and ASSERT_ASCTEXT_ASCII_LEN(), group together the stand-in encodings and add some more for DLL symbols, function and variable names, etc.
author Ben Wing <ben@xemacs.org>
date Tue, 26 Jan 2010 23:22:30 -0600
parents 8b63e21b0436
children 304aebb79cd3
comparison
equal deleted inserted replaced
4951:de60897044f4 4952:19a72041c5ed
519 b) [Extbyte] pointer to text in some external format, which can be 519 b) [Extbyte] pointer to text in some external format, which can be
520 defined as all formats other than the internal one 520 defined as all formats other than the internal one
521 c) [Ascbyte] pure ASCII text 521 c) [Ascbyte] pure ASCII text
522 d) [Binbyte] binary data that is not meant to be interpreted as text 522 d) [Binbyte] binary data that is not meant to be interpreted as text
523 e) [Rawbyte] general data in memory, where we don't care about whether 523 e) [Rawbyte] general data in memory, where we don't care about whether
524 it's text or binary 524 it's text or binary; often used when computing memory-
525 based/byte-based offsets of pointers
525 f) [Boolbyte] a zero or a one 526 f) [Boolbyte] a zero or a one
526 g) [Bitbyte] a byte used for bit fields 527 g) [Bitbyte] a byte used for bit fields
527 h) [Chbyte] null-semantics `char *'; used when casting an argument to 528 h) [Chbyte] null-semantics `char *'; used when casting an argument to
528 an external API where the the other types may not be 529 an external API where the the other types may not be
529 appropriate 530 appropriate
2043 typedef struct 2044 typedef struct
2044 { 2045 {
2045 Dynarr_declare (unsigned long); 2046 Dynarr_declare (unsigned long);
2046 } unsigned_long_dynarr; 2047 } unsigned_long_dynarr;
2047 2048
2049 typedef const Ascbyte *const_Ascbyte_ptr;
2050 typedef struct
2051 {
2052 Dynarr_declare (const Ascbyte *);
2053 } const_Ascbyte_ptr_dynarr;
2054
2055 extern const struct sized_memory_description const_Ascbyte_ptr_description;
2056 extern const struct sized_memory_description const_Ascbyte_ptr_dynarr_description;
2057
2048 typedef struct 2058 typedef struct
2049 { 2059 {
2050 Dynarr_declare (int); 2060 Dynarr_declare (int);
2051 } int_dynarr; 2061 } int_dynarr;
2052 2062
3833 Fformat() should format the untranslated args[0] and return that, 3843 Fformat() should format the untranslated args[0] and return that,
3834 and also call Fgettext() on args[0] and, if that is different, 3844 and also call Fgettext() on args[0] and, if that is different,
3835 format it and store it in the `string-translatable' property of the 3845 format it and store it in the `string-translatable' property of the
3836 returned string. See Fgettext(). 3846 returned string. See Fgettext().
3837 3847
3838 CGETTEXT() is the same as GETTEXT() but works with char * strings 3848 The variations IGETTEXT, CIGETTEXT and ASCGETTEXT operate on
3839 instead of Ibyte * strings. 3849 Ibyte *, CIbyte *, and Ascbyte * strings, respectively. The
3840 3850 ASCGETTEXT version has an assert check to verify that its string
3841 build_msg_string() is a shorthand for build_string (GETTEXT (x)). 3851 really is pure-ASCII. Plain GETTEXT is defined as ASCGETTEXT, and
3842 build_msg_intstring() is a shorthand for build_intstring (GETTEXT (x)). 3852 so works the same way. (There are no versions that work for Extbyte *.
3853 Translate to internal format before working on it.)
3854
3855 There are similar functions for building a Lisp string from a C
3856 string and translating in the process. They again come in three
3857 variants: build_msg_istring(), build_msg_cistring(), and
3858 build_msg_ascstring(). Again, build_msg_ascstring() asserts that
3859 its text is pure-ASCII, and build_msg_string() is the same as
3860 build_msg_ascstring().
3843 */ 3861 */
3844 3862
3845 #define GETTEXT(x) (x) 3863 /* Return value NOT Ascbyte, because the result in general will have been
3846 #define CGETTEXT(x) (x) 3864 translated into a foreign language. */
3847 #define LISP_GETTEXT(x) (x) 3865 DECLARE_INLINE_HEADER (const CIbyte *ASCGETTEXT (const Ascbyte *s))
3848 3866 {
3849 /* DEFER_GETTEXT is used to identify strings which are translated when 3867 ASSERT_ASCTEXT_ASCII (s);
3850 they are referenced instead of when they are defined. 3868 return s;
3851 These include Qerror_messages and initialized arrays of strings. 3869 }
3870
3871 DECLARE_INLINE_HEADER (const Ibyte *IGETTEXT (const Ibyte *s))
3872 {
3873 return s;
3874 }
3875
3876 DECLARE_INLINE_HEADER (const CIbyte *CIGETTEXT (const CIbyte *s))
3877 {
3878 return s;
3879 }
3880
3881 DECLARE_INLINE_HEADER (Lisp_Object LISP_GETTEXT (Lisp_Object s))
3882 {
3883 return s;
3884 }
3885
3886 #define GETTEXT ASCGETTEXT
3887
3888 MODULE_API Lisp_Object build_msg_istring (const Ibyte *);
3889 MODULE_API Lisp_Object build_msg_cistring (const CIbyte *);
3890 MODULE_API Lisp_Object build_msg_ascstring (const Ascbyte *);
3891 #define build_msg_string build_msg_ascstring
3892
3893
3894 /* DEFER_GETTEXT() and variants are used to identify strings which are not
3895 meant to be translated immediately, but instead at some later time.
3896 This is used in strings that are stored somewhere at dump or
3897 initialization time, at a time when the current language environment is
3898 not set. It is the duty of the user of the string to call GETTEXT or
3899 some variant at the appropriate time. DEFER_GETTTEXT() serves only as a
3900 marker that the string is translatable, and will as a result be snarfed
3901 during message snarfing (see above).
3902
3903 build_defer_string() and variants are the deferred equivalents of
3904 build_msg_string() and variants. Similarly to DEFER_GETTEXT(), they
3905 don't actually do any translation, but serve as place markers for
3906 message snarfing. However, they may do something more than just build
3907 a Lisp string -- in particular, they may store a string property
3908 indicating that the string is translatable (see discussion above about
3909 this property).
3852 */ 3910 */
3853 #define DEFER_GETTEXT(x) (x) 3911
3912 DECLARE_INLINE_HEADER (const Ascbyte *DEFER_ASCGETTEXT (const Ascbyte *s))
3913 {
3914 ASSERT_ASCTEXT_ASCII (s);
3915 return s;
3916 }
3917
3918 DECLARE_INLINE_HEADER (const Ibyte *DEFER_IGETTEXT (const Ibyte *s))
3919 {
3920 return s;
3921 }
3922
3923 DECLARE_INLINE_HEADER (const CIbyte *DEFER_CIGETTEXT (const CIbyte *s))
3924 {
3925 return s;
3926 }
3927
3928 #define DEFER_GETTEXT DEFER_ASCGETTEXT
3929
3930 MODULE_API Lisp_Object build_defer_istring (const Ibyte *);
3931 MODULE_API Lisp_Object build_defer_cistring (const CIbyte *);
3932 MODULE_API Lisp_Object build_defer_ascstring (const Ascbyte *);
3933
3934 #define build_defer_string build_defer_ascstring
3935
3936
3937 void write_msg_istring (Lisp_Object stream, const Ibyte *str);
3938 void write_msg_cistring (Lisp_Object stream, const CIbyte *str);
3939 void write_msg_ascstring (Lisp_Object stream, const Ascbyte *str);
3940
3941 #define write_msg_string write_msg_ascstring
3854 3942
3855 3943
3856 /************************************************************************/ 3944 /************************************************************************/
3857 /* Garbage collection / GC-protection */ 3945 /* Garbage collection / GC-protection */
3858 /************************************************************************/ 3946 /************************************************************************/
4140 extern Lisp_Object_ptr_dynarr *staticpros_nodump; 4228 extern Lisp_Object_ptr_dynarr *staticpros_nodump;
4141 #ifdef DEBUG_XEMACS 4229 #ifdef DEBUG_XEMACS
4142 4230
4143 /* Help debug crashes gc-marking a staticpro'ed object. */ 4231 /* Help debug crashes gc-marking a staticpro'ed object. */
4144 4232
4145 MODULE_API void staticpro_1 (Lisp_Object *, Ascbyte *); 4233 MODULE_API void staticpro_1 (Lisp_Object *, const Ascbyte *);
4146 MODULE_API void staticpro_nodump_1 (Lisp_Object *, Ascbyte *); 4234 MODULE_API void staticpro_nodump_1 (Lisp_Object *, const Ascbyte *);
4147 /* g++ 4.3 complains about the conversion of const char to char. 4235 #define staticpro(ptr) staticpro_1 (ptr, #ptr)
4148 These end up in a dynarray, so we would need to define a whole new class 4236 #define staticpro_nodump(ptr) staticpro_nodump_1 (ptr, #ptr)
4149 of dynarray just to handle the const char stuff.
4150 ####Check to see how hard this might be. */
4151 #define staticpro(ptr) staticpro_1 (ptr, (Ascbyte *) #ptr)
4152 #define staticpro_nodump(ptr) staticpro_nodump_1 (ptr, (Ascbyte *) #ptr)
4153 4237
4154 #ifdef HAVE_SHLIB 4238 #ifdef HAVE_SHLIB
4155 MODULE_API void unstaticpro_nodump_1 (Lisp_Object *, Ascbyte *); 4239 MODULE_API void unstaticpro_nodump_1 (Lisp_Object *, const Ascbyte *);
4156 #define unstaticpro_nodump(ptr) unstaticpro_nodump_1 (ptr, (Ascbyte *) #ptr) 4240 #define unstaticpro_nodump(ptr) unstaticpro_nodump_1 (ptr, #ptr)
4157 #endif 4241 #endif
4158 4242
4159 #else 4243 #else
4160 4244
4161 /* Call staticpro (&var) to protect static variable `var'. */ 4245 /* Call staticpro (&var) to protect static variable `var'. */
4174 4258
4175 #ifdef NEW_GC 4259 #ifdef NEW_GC
4176 extern Lisp_Object_dynarr *mcpros; 4260 extern Lisp_Object_dynarr *mcpros;
4177 #ifdef DEBUG_XEMACS 4261 #ifdef DEBUG_XEMACS
4178 /* Help debug crashes gc-marking a mcpro'ed object. */ 4262 /* Help debug crashes gc-marking a mcpro'ed object. */
4179 MODULE_API void mcpro_1 (Lisp_Object, char *); 4263 MODULE_API void mcpro_1 (Lisp_Object, const Ascbyte *);
4180 #define mcpro(ptr) mcpro_1 (ptr, #ptr) 4264 #define mcpro(ptr) mcpro_1 (ptr, #ptr)
4181 #else /* not DEBUG_XEMACS */ 4265 #else /* not DEBUG_XEMACS */
4182 /* Call mcpro (&var) to protect mc variable `var'. */ 4266 /* Call mcpro (&var) to protect mc variable `var'. */
4183 MODULE_API void mcpro (Lisp_Object); 4267 MODULE_API void mcpro (Lisp_Object);
4184 #endif /* not DEBUG_XEMACS */ 4268 #endif /* not DEBUG_XEMACS */
4274 int c_readonly (Lisp_Object); 4358 int c_readonly (Lisp_Object);
4275 int lisp_readonly (Lisp_Object); 4359 int lisp_readonly (Lisp_Object);
4276 MODULE_API void copy_lisp_object (Lisp_Object dst, Lisp_Object src); 4360 MODULE_API void copy_lisp_object (Lisp_Object dst, Lisp_Object src);
4277 MODULE_API Lisp_Object build_intstring (const Ibyte *); 4361 MODULE_API Lisp_Object build_intstring (const Ibyte *);
4278 MODULE_API Lisp_Object build_string (const CIbyte *); 4362 MODULE_API Lisp_Object build_string (const CIbyte *);
4363 MODULE_API Lisp_Object build_ascstring (const Ascbyte *);
4279 MODULE_API Lisp_Object build_ext_string (const Extbyte *, Lisp_Object); 4364 MODULE_API Lisp_Object build_ext_string (const Extbyte *, Lisp_Object);
4280 MODULE_API Lisp_Object build_msg_intstring (const Ibyte *);
4281 MODULE_API Lisp_Object build_msg_string (const CIbyte *);
4282 MODULE_API Lisp_Object make_string (const Ibyte *, Bytecount); 4365 MODULE_API Lisp_Object make_string (const Ibyte *, Bytecount);
4283 MODULE_API Lisp_Object make_ext_string (const Extbyte *, EMACS_INT, Lisp_Object); 4366 MODULE_API Lisp_Object make_ext_string (const Extbyte *, EMACS_INT, Lisp_Object);
4284 void init_string_ascii_begin (Lisp_Object string); 4367 void init_string_ascii_begin (Lisp_Object string);
4285 Lisp_Object make_uninit_string (Bytecount); 4368 Lisp_Object make_uninit_string (Bytecount);
4286 MODULE_API Lisp_Object make_float (double); 4369 MODULE_API Lisp_Object make_float (double);
4386 4469
4387 /* Defined in bytecode.c */ 4470 /* Defined in bytecode.c */
4388 EXFUN (Fbyte_code, 3); 4471 EXFUN (Fbyte_code, 3);
4389 4472
4390 DECLARE_DOESNT_RETURN (invalid_byte_code 4473 DECLARE_DOESNT_RETURN (invalid_byte_code
4391 (const CIbyte *reason, Lisp_Object frob)); 4474 (const Ascbyte *reason, Lisp_Object frob));
4392 4475
4393 extern Lisp_Object Qbyte_code, Qinvalid_byte_code; 4476 extern Lisp_Object Qbyte_code, Qinvalid_byte_code;
4394 4477
4395 /* Defined in callint.c */ 4478 /* Defined in callint.c */
4396 EXFUN (Fcall_interactively, 3); 4479 EXFUN (Fcall_interactively, 3);
4644 Lisp_Object maybe_signal_continuable_ferror (Lisp_Object, Lisp_Object, 4727 Lisp_Object maybe_signal_continuable_ferror (Lisp_Object, Lisp_Object,
4645 Error_Behavior, 4728 Error_Behavior,
4646 const CIbyte *, ...) 4729 const CIbyte *, ...)
4647 PRINTF_ARGS (4, 5); 4730 PRINTF_ARGS (4, 5);
4648 4731
4649 Lisp_Object build_error_data (const CIbyte *reason, Lisp_Object frob); 4732 Lisp_Object build_error_data (const Ascbyte *reason, Lisp_Object frob);
4650 DECLARE_DOESNT_RETURN (signal_error (Lisp_Object, const CIbyte *, 4733 DECLARE_DOESNT_RETURN (signal_error (Lisp_Object, const Ascbyte *,
4651 Lisp_Object)); 4734 Lisp_Object));
4652 void maybe_signal_error (Lisp_Object, const CIbyte *, Lisp_Object, 4735 void maybe_signal_error (Lisp_Object, const Ascbyte *, Lisp_Object,
4653 Lisp_Object, Error_Behavior); 4736 Lisp_Object, Error_Behavior);
4654 Lisp_Object signal_continuable_error (Lisp_Object, const CIbyte *, 4737 Lisp_Object signal_continuable_error (Lisp_Object, const Ascbyte *,
4655 Lisp_Object); 4738 Lisp_Object);
4656 Lisp_Object maybe_signal_continuable_error (Lisp_Object, const CIbyte *, 4739 Lisp_Object maybe_signal_continuable_error (Lisp_Object, const Ascbyte *,
4657 Lisp_Object, 4740 Lisp_Object,
4658 Lisp_Object, Error_Behavior); 4741 Lisp_Object, Error_Behavior);
4659 DECLARE_DOESNT_RETURN (signal_ferror_with_frob (Lisp_Object, Lisp_Object, 4742 DECLARE_DOESNT_RETURN (signal_ferror_with_frob (Lisp_Object, Lisp_Object,
4660 const CIbyte *, ...)) 4743 const Ascbyte *, ...))
4661 PRINTF_ARGS(3, 4); 4744 PRINTF_ARGS(3, 4);
4662 void maybe_signal_ferror_with_frob (Lisp_Object, Lisp_Object, Lisp_Object, 4745 void maybe_signal_ferror_with_frob (Lisp_Object, Lisp_Object, Lisp_Object,
4663 Error_Behavior, 4746 Error_Behavior,
4664 const CIbyte *, ...) PRINTF_ARGS (5, 6); 4747 const Ascbyte *, ...) PRINTF_ARGS (5, 6);
4665 Lisp_Object signal_continuable_ferror_with_frob (Lisp_Object, Lisp_Object, 4748 Lisp_Object signal_continuable_ferror_with_frob (Lisp_Object, Lisp_Object,
4666 const CIbyte *, 4749 const Ascbyte *,
4667 ...) PRINTF_ARGS (3, 4); 4750 ...) PRINTF_ARGS (3, 4);
4668 Lisp_Object maybe_signal_continuable_ferror_with_frob (Lisp_Object, 4751 Lisp_Object maybe_signal_continuable_ferror_with_frob (Lisp_Object,
4669 Lisp_Object, 4752 Lisp_Object,
4670 Lisp_Object, 4753 Lisp_Object,
4671 Error_Behavior, 4754 Error_Behavior,
4672 const CIbyte *, ...) 4755 const Ascbyte *, ...)
4673 PRINTF_ARGS (5, 6); 4756 PRINTF_ARGS (5, 6);
4674 DECLARE_DOESNT_RETURN (signal_error_2 (Lisp_Object, const CIbyte *, 4757 DECLARE_DOESNT_RETURN (signal_error_2 (Lisp_Object, const Ascbyte *,
4675 Lisp_Object, Lisp_Object)); 4758 Lisp_Object, Lisp_Object));
4676 void maybe_signal_error_2 (Lisp_Object, const CIbyte *, Lisp_Object, 4759 void maybe_signal_error_2 (Lisp_Object, const Ascbyte *, Lisp_Object,
4677 Lisp_Object, Lisp_Object, Error_Behavior); 4760 Lisp_Object, Lisp_Object, Error_Behavior);
4678 Lisp_Object signal_continuable_error_2 (Lisp_Object, const CIbyte *, 4761 Lisp_Object signal_continuable_error_2 (Lisp_Object, const Ascbyte *,
4679 Lisp_Object, Lisp_Object); 4762 Lisp_Object, Lisp_Object);
4680 Lisp_Object maybe_signal_continuable_error_2 (Lisp_Object, const CIbyte *, 4763 Lisp_Object maybe_signal_continuable_error_2 (Lisp_Object, const Ascbyte *,
4681 Lisp_Object, Lisp_Object, 4764 Lisp_Object, Lisp_Object,
4682 Lisp_Object, 4765 Lisp_Object,
4683 Error_Behavior); 4766 Error_Behavior);
4684 4767
4685 4768
4688 (Lisp_Object)); 4771 (Lisp_Object));
4689 MODULE_API DECLARE_DOESNT_RETURN (signal_circular_list_error (Lisp_Object)); 4772 MODULE_API DECLARE_DOESNT_RETURN (signal_circular_list_error (Lisp_Object));
4690 MODULE_API DECLARE_DOESNT_RETURN (signal_circular_property_list_error 4773 MODULE_API DECLARE_DOESNT_RETURN (signal_circular_property_list_error
4691 (Lisp_Object)); 4774 (Lisp_Object));
4692 4775
4693 DECLARE_DOESNT_RETURN (syntax_error (const CIbyte *reason, 4776 DECLARE_DOESNT_RETURN (syntax_error (const Ascbyte *reason,
4694 Lisp_Object frob)); 4777 Lisp_Object frob));
4695 DECLARE_DOESNT_RETURN (syntax_error_2 (const CIbyte *reason, 4778 DECLARE_DOESNT_RETURN (syntax_error_2 (const Ascbyte *reason,
4696 Lisp_Object frob1, 4779 Lisp_Object frob1,
4697 Lisp_Object frob2)); 4780 Lisp_Object frob2));
4698 void maybe_syntax_error (const CIbyte *, Lisp_Object, Lisp_Object, 4781 void maybe_syntax_error (const Ascbyte *, Lisp_Object, Lisp_Object,
4699 Error_Behavior); 4782 Error_Behavior);
4700 DECLARE_DOESNT_RETURN (sferror (const CIbyte *reason, Lisp_Object frob)); 4783 DECLARE_DOESNT_RETURN (sferror (const Ascbyte *reason, Lisp_Object frob));
4701 DECLARE_DOESNT_RETURN (sferror_2 (const CIbyte *reason, Lisp_Object frob1, 4784 DECLARE_DOESNT_RETURN (sferror_2 (const Ascbyte *reason, Lisp_Object frob1,
4702 Lisp_Object frob2)); 4785 Lisp_Object frob2));
4703 void maybe_sferror (const CIbyte *, Lisp_Object, Lisp_Object, 4786 void maybe_sferror (const Ascbyte *, Lisp_Object, Lisp_Object,
4704 Error_Behavior); 4787 Error_Behavior);
4705 MODULE_API DECLARE_DOESNT_RETURN (invalid_argument (const CIbyte *reason, 4788 MODULE_API DECLARE_DOESNT_RETURN (invalid_argument (const Ascbyte *reason,
4706 Lisp_Object frob)); 4789 Lisp_Object frob));
4707 MODULE_API DECLARE_DOESNT_RETURN (invalid_argument_2 (const CIbyte *reason, 4790 MODULE_API DECLARE_DOESNT_RETURN (invalid_argument_2 (const Ascbyte *reason,
4708 Lisp_Object frob1, 4791 Lisp_Object frob1,
4709 Lisp_Object frob2)); 4792 Lisp_Object frob2));
4710 void maybe_invalid_argument (const CIbyte *, Lisp_Object, Lisp_Object, 4793 void maybe_invalid_argument (const Ascbyte *, Lisp_Object, Lisp_Object,
4711 Error_Behavior); 4794 Error_Behavior);
4712 MODULE_API DECLARE_DOESNT_RETURN (invalid_operation (const CIbyte *reason, 4795 MODULE_API DECLARE_DOESNT_RETURN (invalid_operation (const Ascbyte *reason,
4713 Lisp_Object frob)); 4796 Lisp_Object frob));
4714 MODULE_API DECLARE_DOESNT_RETURN (invalid_operation_2 (const CIbyte *reason, 4797 MODULE_API DECLARE_DOESNT_RETURN (invalid_operation_2 (const Ascbyte *reason,
4715 Lisp_Object frob1, 4798 Lisp_Object frob1,
4716 Lisp_Object frob2)); 4799 Lisp_Object frob2));
4717 MODULE_API void maybe_invalid_operation (const CIbyte *, Lisp_Object, 4800 MODULE_API void maybe_invalid_operation (const Ascbyte *, Lisp_Object,
4718 Lisp_Object, Error_Behavior); 4801 Lisp_Object, Error_Behavior);
4719 DECLARE_DOESNT_RETURN (invalid_state (const CIbyte *reason, 4802 DECLARE_DOESNT_RETURN (invalid_state (const Ascbyte *reason,
4720 Lisp_Object frob)); 4803 Lisp_Object frob));
4721 DECLARE_DOESNT_RETURN (invalid_state_2 (const CIbyte *reason, 4804 DECLARE_DOESNT_RETURN (invalid_state_2 (const Ascbyte *reason,
4722 Lisp_Object frob1, 4805 Lisp_Object frob1,
4723 Lisp_Object frob2)); 4806 Lisp_Object frob2));
4724 void maybe_invalid_state (const CIbyte *, Lisp_Object, Lisp_Object, 4807 void maybe_invalid_state (const Ascbyte *, Lisp_Object, Lisp_Object,
4725 Error_Behavior); 4808 Error_Behavior);
4726 DECLARE_DOESNT_RETURN (invalid_change (const CIbyte *reason, 4809 DECLARE_DOESNT_RETURN (invalid_change (const Ascbyte *reason,
4727 Lisp_Object frob)); 4810 Lisp_Object frob));
4728 DECLARE_DOESNT_RETURN (invalid_change_2 (const CIbyte *reason, 4811 DECLARE_DOESNT_RETURN (invalid_change_2 (const Ascbyte *reason,
4729 Lisp_Object frob1, 4812 Lisp_Object frob1,
4730 Lisp_Object frob2)); 4813 Lisp_Object frob2));
4731 void maybe_invalid_change (const CIbyte *, Lisp_Object, Lisp_Object, 4814 void maybe_invalid_change (const Ascbyte *, Lisp_Object, Lisp_Object,
4732 Error_Behavior); 4815 Error_Behavior);
4733 MODULE_API DECLARE_DOESNT_RETURN (invalid_constant (const CIbyte *reason, 4816 MODULE_API DECLARE_DOESNT_RETURN (invalid_constant (const Ascbyte *reason,
4734 Lisp_Object frob)); 4817 Lisp_Object frob));
4735 DECLARE_DOESNT_RETURN (invalid_constant_2 (const CIbyte *reason, 4818 DECLARE_DOESNT_RETURN (invalid_constant_2 (const Ascbyte *reason,
4736 Lisp_Object frob1, 4819 Lisp_Object frob1,
4737 Lisp_Object frob2)); 4820 Lisp_Object frob2));
4738 void maybe_invalid_constant (const CIbyte *, Lisp_Object, Lisp_Object, 4821 void maybe_invalid_constant (const Ascbyte *, Lisp_Object, Lisp_Object,
4739 Error_Behavior); 4822 Error_Behavior);
4740 DECLARE_DOESNT_RETURN (wtaerror (const CIbyte *reason, Lisp_Object frob)); 4823 DECLARE_DOESNT_RETURN (wtaerror (const Ascbyte *reason, Lisp_Object frob));
4741 MODULE_API DECLARE_DOESNT_RETURN (out_of_memory (const CIbyte *reason, 4824 MODULE_API DECLARE_DOESNT_RETURN (out_of_memory (const Ascbyte *reason,
4742 Lisp_Object frob)); 4825 Lisp_Object frob));
4743 DECLARE_DOESNT_RETURN (stack_overflow (const CIbyte *reason, 4826 DECLARE_DOESNT_RETURN (stack_overflow (const Ascbyte *reason,
4744 Lisp_Object frob)); 4827 Lisp_Object frob));
4745 4828
4746 Lisp_Object signal_void_function_error (Lisp_Object); 4829 Lisp_Object signal_void_function_error (Lisp_Object);
4747 Lisp_Object signal_invalid_function_error (Lisp_Object); 4830 Lisp_Object signal_invalid_function_error (Lisp_Object);
4748 Lisp_Object signal_wrong_number_of_arguments_error (Lisp_Object, int); 4831 Lisp_Object signal_wrong_number_of_arguments_error (Lisp_Object, int);
4912 int internal_bind_int (int *addr, int newval); 4995 int internal_bind_int (int *addr, int newval);
4913 int internal_bind_lisp_object (Lisp_Object *addr, Lisp_Object newval); 4996 int internal_bind_lisp_object (Lisp_Object *addr, Lisp_Object newval);
4914 void do_autoload (Lisp_Object, Lisp_Object); /* GCPROs both arguments */ 4997 void do_autoload (Lisp_Object, Lisp_Object); /* GCPROs both arguments */
4915 Lisp_Object un_autoload (Lisp_Object); 4998 Lisp_Object un_autoload (Lisp_Object);
4916 void warn_when_safe_lispobj (Lisp_Object, Lisp_Object, Lisp_Object); 4999 void warn_when_safe_lispobj (Lisp_Object, Lisp_Object, Lisp_Object);
4917 MODULE_API void warn_when_safe (Lisp_Object, Lisp_Object, const CIbyte *, 5000 MODULE_API void warn_when_safe (Lisp_Object, Lisp_Object, const Ascbyte *,
4918 ...) PRINTF_ARGS (3, 4); 5001 ...) PRINTF_ARGS (3, 4);
4919 extern int backtrace_with_internal_sections; 5002 extern int backtrace_with_internal_sections;
4920 5003
4921 extern Lisp_Object Vdebug_on_error; 5004 extern Lisp_Object Vdebug_on_error;
4922 extern Lisp_Object Vstack_trace_on_error; 5005 extern Lisp_Object Vstack_trace_on_error;
5031 EXFUN (Fverify_visited_file_modtime, 1); 5114 EXFUN (Fverify_visited_file_modtime, 1);
5032 5115
5033 void record_auto_save (void); 5116 void record_auto_save (void);
5034 void force_auto_save_soon (void); 5117 void force_auto_save_soon (void);
5035 DECLARE_DOESNT_RETURN (report_error_with_errno (Lisp_Object errtype, 5118 DECLARE_DOESNT_RETURN (report_error_with_errno (Lisp_Object errtype,
5036 const CIbyte *string, 5119 const Ascbyte *reason,
5037 Lisp_Object data)); 5120 Lisp_Object data));
5038 DECLARE_DOESNT_RETURN (report_file_type_error (Lisp_Object errtype, 5121 DECLARE_DOESNT_RETURN (report_file_type_error (Lisp_Object errtype,
5039 Lisp_Object oserrmess, 5122 Lisp_Object oserrmess,
5040 const CIbyte *string, 5123 const Ascbyte *reason,
5041 Lisp_Object data)); 5124 Lisp_Object data));
5042 DECLARE_DOESNT_RETURN (report_file_error (const CIbyte *, Lisp_Object)); 5125 DECLARE_DOESNT_RETURN (report_file_error (const Ascbyte *, Lisp_Object));
5043 Lisp_Object lisp_strerror (int); 5126 Lisp_Object lisp_strerror (int);
5044 Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object); 5127 Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object);
5045 int internal_delete_file (Lisp_Object); 5128 int internal_delete_file (Lisp_Object);
5046 Ibyte *find_end_of_directory_component (const Ibyte *path, 5129 Ibyte *find_end_of_directory_component (const Ibyte *path,
5047 Bytecount len); 5130 Bytecount len);
5138 int retval, 5221 int retval,
5139 Lisp_Object obj1, Lisp_Object obj2, 5222 Lisp_Object obj1, Lisp_Object obj2,
5140 int depth); 5223 int depth);
5141 int internal_equal (Lisp_Object, Lisp_Object, int); 5224 int internal_equal (Lisp_Object, Lisp_Object, int);
5142 int internal_equalp (Lisp_Object obj1, Lisp_Object obj2, int depth); 5225 int internal_equalp (Lisp_Object obj1, Lisp_Object obj2, int depth);
5143 Lisp_Object concat2 (Lisp_Object, Lisp_Object); 5226 Lisp_Object MODULE_API concat2 (Lisp_Object, Lisp_Object);
5144 Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object); 5227 Lisp_Object MODULE_API concat3 (Lisp_Object, Lisp_Object, Lisp_Object);
5145 Lisp_Object vconcat2 (Lisp_Object, Lisp_Object); 5228 Lisp_Object MODULE_API vconcat2 (Lisp_Object, Lisp_Object);
5146 Lisp_Object vconcat3 (Lisp_Object, Lisp_Object, Lisp_Object); 5229 Lisp_Object MODULE_API vconcat3 (Lisp_Object, Lisp_Object, Lisp_Object);
5147 Lisp_Object nconc2 (Lisp_Object, Lisp_Object); 5230 Lisp_Object MODULE_API nconc2 (Lisp_Object, Lisp_Object);
5148 Lisp_Object bytecode_nconc2 (Lisp_Object *); 5231 Lisp_Object bytecode_nconc2 (Lisp_Object *);
5149 void check_losing_bytecode (const char *, Lisp_Object); 5232 void check_losing_bytecode (const char *, Lisp_Object);
5150 5233
5151 Lisp_Object add_suffix_to_symbol (Lisp_Object symbol, 5234 Lisp_Object add_suffix_to_symbol (Lisp_Object symbol,
5152 const Ascbyte *ascii_string); 5235 const Ascbyte *ascii_string);
5301 void debug_short_backtrace (int); 5384 void debug_short_backtrace (int);
5302 void debug_backtrace (void); 5385 void debug_backtrace (void);
5303 /* NOTE: Do not call this with the data of a Lisp_String. Use princ. 5386 /* NOTE: Do not call this with the data of a Lisp_String. Use princ.
5304 * Note: stream should be defaulted before calling 5387 * Note: stream should be defaulted before calling
5305 * (eg Qnil means stdout, not Vstandard_output, etc) */ 5388 * (eg Qnil means stdout, not Vstandard_output, etc) */
5389 MODULE_API void write_istring (Lisp_Object stream, const Ibyte *str);
5390 /* Same goes for this function. */
5306 MODULE_API void write_c_string (Lisp_Object stream, const CIbyte *str); 5391 MODULE_API void write_c_string (Lisp_Object stream, const CIbyte *str);
5307 /* Same goes for this function. */ 5392 /* Same goes for this function. */
5308 MODULE_API void write_string (Lisp_Object stream, const Ibyte *str); 5393 MODULE_API void write_ascstring (Lisp_Object stream, const Ascbyte *str);
5309 /* Same goes for this function. */ 5394 /* Same goes for this function. */
5310 void write_string_1 (Lisp_Object stream, const Ibyte *str, Bytecount size); 5395 void write_string_1 (Lisp_Object stream, const Ibyte *str, Bytecount size);
5311 void write_eistring (Lisp_Object stream, const Eistring *ei); 5396 void write_eistring (Lisp_Object stream, const Eistring *ei);
5312 5397
5313 /* Higher-level (printf-style) ways to output data: */ 5398 /* Higher-level (printf-style) ways to output data: */