Mercurial > hg > xemacs-beta
annotate src/objects-tty.c @ 4981:4aebb0131297
Cleanups/renaming of EXTERNAL_TO_C_STRING and friends
-------------------- ChangeLog entries follow: --------------------
modules/ChangeLog addition:
2010-02-05 Ben Wing <ben@xemacs.org>
* postgresql/postgresql.c:
* postgresql/postgresql.c (CHECK_LIVE_CONNECTION):
* postgresql/postgresql.c (Fpq_connectdb):
* postgresql/postgresql.c (Fpq_connect_start):
* postgresql/postgresql.c (Fpq_lo_import):
* postgresql/postgresql.c (Fpq_lo_export):
* ldap/eldap.c (Fldap_open):
* ldap/eldap.c (Fldap_search_basic):
* ldap/eldap.c (Fldap_add):
* ldap/eldap.c (Fldap_modify):
* ldap/eldap.c (Fldap_delete):
* canna/canna_api.c (Fcanna_initialize):
* canna/canna_api.c (Fcanna_store_yomi):
* canna/canna_api.c (Fcanna_parse):
* canna/canna_api.c (Fcanna_henkan_begin):
EXTERNAL_TO_C_STRING returns its argument instead of storing it
in a parameter, and is renamed to EXTERNAL_TO_ITEXT. Similar
things happen to related macros. See entry in src/ChangeLog.
More Mule-izing of postgresql.c. Extract out common code
between `pq-connectdb' and `pq-connect-start'. Fix places
that signal an error string using a formatted string to instead
follow the standard and have a fixed reason followed by the
particular error message stored as one of the frobs.
src/ChangeLog addition:
2010-02-05 Ben Wing <ben@xemacs.org>
* console-msw.c (write_string_to_mswindows_debugging_output):
* console-msw.c (Fmswindows_message_box):
* console-x.c (x_perhaps_init_unseen_key_defaults):
* console.c:
* database.c (dbm_get):
* database.c (dbm_put):
* database.c (dbm_remove):
* database.c (berkdb_get):
* database.c (berkdb_put):
* database.c (berkdb_remove):
* database.c (Fopen_database):
* device-gtk.c (gtk_init_device):
* device-msw.c (msprinter_init_device_internal):
* device-msw.c (msprinter_default_printer):
* device-msw.c (msprinter_init_device):
* device-msw.c (sync_printer_with_devmode):
* device-msw.c (Fmsprinter_select_settings):
* device-x.c (sanity_check_geometry_resource):
* device-x.c (Dynarr_add_validified_lisp_string):
* device-x.c (x_init_device):
* device-x.c (Fx_put_resource):
* device-x.c (Fx_valid_keysym_name_p):
* device-x.c (Fx_set_font_path):
* dialog-msw.c (push_lisp_string_as_unicode):
* dialog-msw.c (handle_directory_dialog_box):
* dialog-msw.c (handle_file_dialog_box):
* dialog-x.c (dbox_descriptor_to_widget_value):
* editfns.c (Fformat_time_string):
* editfns.c (Fencode_time):
* editfns.c (Fset_time_zone_rule):
* emacs.c (make_argc_argv):
* emacs.c (Fdump_emacs):
* emodules.c (emodules_load):
* eval.c:
* eval.c (maybe_signal_error_1):
* event-msw.c (Fdde_alloc_advise_item):
* event-msw.c (mswindows_dde_callback):
* event-msw.c (mswindows_wnd_proc):
* fileio.c (report_error_with_errno):
* fileio.c (Fsysnetunam):
* fileio.c (Fdo_auto_save):
* font-mgr.c (extract_fcapi_string):
* font-mgr.c (Ffc_config_app_font_add_file):
* font-mgr.c (Ffc_config_app_font_add_dir):
* font-mgr.c (Ffc_config_filename):
* frame-gtk.c (gtk_set_frame_text_value):
* frame-gtk.c (gtk_create_widgets):
* frame-msw.c (mswindows_init_frame_1):
* frame-msw.c (mswindows_set_title_from_ibyte):
* frame-msw.c (msprinter_init_frame_3):
* frame-x.c (x_set_frame_text_value):
* frame-x.c (x_set_frame_properties):
* frame-x.c (start_drag_internal_1):
* frame-x.c (x_cde_transfer_callback):
* frame-x.c (x_create_widgets):
* glyphs-eimage.c (my_jpeg_output_message):
* glyphs-eimage.c (jpeg_instantiate):
* glyphs-eimage.c (gif_instantiate):
* glyphs-eimage.c (png_instantiate):
* glyphs-eimage.c (tiff_instantiate):
* glyphs-gtk.c (xbm_instantiate_1):
* glyphs-gtk.c (gtk_xbm_instantiate):
* glyphs-gtk.c (gtk_xpm_instantiate):
* glyphs-gtk.c (gtk_xface_instantiate):
* glyphs-gtk.c (cursor_font_instantiate):
* glyphs-gtk.c (gtk_redisplay_widget):
* glyphs-gtk.c (gtk_widget_instantiate_1):
* glyphs-gtk.c (gtk_add_tab_item):
* glyphs-msw.c (mswindows_xpm_instantiate):
* glyphs-msw.c (bmp_instantiate):
* glyphs-msw.c (mswindows_resource_instantiate):
* glyphs-msw.c (xbm_instantiate_1):
* glyphs-msw.c (mswindows_xbm_instantiate):
* glyphs-msw.c (mswindows_xface_instantiate):
* glyphs-msw.c (mswindows_redisplay_widget):
* glyphs-msw.c (mswindows_widget_instantiate):
* glyphs-msw.c (add_tree_item):
* glyphs-msw.c (add_tab_item):
* glyphs-msw.c (mswindows_combo_box_instantiate):
* glyphs-msw.c (mswindows_widget_query_string_geometry):
* glyphs-x.c (x_locate_pixmap_file):
* glyphs-x.c (xbm_instantiate_1):
* glyphs-x.c (x_xbm_instantiate):
* glyphs-x.c (extract_xpm_color_names):
* glyphs-x.c (x_xpm_instantiate):
* glyphs-x.c (x_xface_instantiate):
* glyphs-x.c (autodetect_instantiate):
* glyphs-x.c (safe_XLoadFont):
* glyphs-x.c (cursor_font_instantiate):
* glyphs-x.c (x_redisplay_widget):
* glyphs-x.c (Fchange_subwindow_property):
* glyphs-x.c (x_widget_instantiate):
* glyphs-x.c (x_tab_control_redisplay):
* glyphs.c (pixmap_to_lisp_data):
* gui-x.c (menu_separator_style_and_to_external):
* gui-x.c (add_accel_and_to_external):
* gui-x.c (button_item_to_widget_value):
* hpplay.c (player_error_internal):
* hpplay.c (play_sound_file):
* hpplay.c (play_sound_data):
* intl.c (Fset_current_locale):
* lisp.h:
* menubar-gtk.c (gtk_xemacs_set_accel_keys):
* menubar-msw.c (populate_menu_add_item):
* menubar-msw.c (populate_or_checksum_helper):
* menubar-x.c (menu_item_descriptor_to_widget_value_1):
* nt.c (init_user_info):
* nt.c (get_long_basename):
* nt.c (nt_get_resource):
* nt.c (init_mswindows_environment):
* nt.c (get_cached_volume_information):
* nt.c (mswindows_readdir):
* nt.c (read_unc_volume):
* nt.c (mswindows_stat):
* nt.c (mswindows_getdcwd):
* nt.c (mswindows_executable_type):
* nt.c (Fmswindows_short_file_name):
* ntplay.c (nt_play_sound_file):
* objects-gtk.c:
* objects-gtk.c (gtk_valid_color_name_p):
* objects-gtk.c (gtk_initialize_font_instance):
* objects-gtk.c (gtk_font_list):
* objects-msw.c (font_enum_callback_2):
* objects-msw.c (parse_font_spec):
* objects-x.c (x_parse_nearest_color):
* objects-x.c (x_valid_color_name_p):
* objects-x.c (x_initialize_font_instance):
* objects-x.c (x_font_instance_truename):
* objects-x.c (x_font_list):
* objects-xlike-inc.c (XFUN):
* objects-xlike-inc.c (xft_find_charset_font):
* process-nt.c (mswindows_report_winsock_error):
* process-nt.c (nt_create_process):
* process-nt.c (get_internet_address):
* process-nt.c (nt_open_network_stream):
* process-unix.c:
* process-unix.c (allocate_pty):
* process-unix.c (get_internet_address):
* process-unix.c (unix_canonicalize_host_name):
* process-unix.c (unix_open_network_stream):
* realpath.c:
* select-common.h (lisp_data_to_selection_data):
* select-gtk.c (symbol_to_gtk_atom):
* select-gtk.c (atom_to_symbol):
* select-msw.c (symbol_to_ms_cf):
* select-msw.c (mswindows_register_selection_data_type):
* select-x.c (symbol_to_x_atom):
* select-x.c (x_atom_to_symbol):
* select-x.c (hack_motif_clipboard_selection):
* select-x.c (Fx_store_cutbuffer_internal):
* sound.c (Fplay_sound_file):
* sound.c (Fplay_sound):
* sound.h (sound_perror):
* sysdep.c:
* sysdep.c (qxe_allocating_getcwd):
* sysdep.c (qxe_execve):
* sysdep.c (copy_in_passwd):
* sysdep.c (qxe_getpwnam):
* sysdep.c (qxe_ctime):
* sysdll.c (dll_open):
* sysdll.c (dll_function):
* sysdll.c (dll_variable):
* sysdll.c (search_linked_libs):
* sysdll.c (dll_error):
* sysfile.h:
* sysfile.h (PATHNAME_CONVERT_OUT_TSTR):
* sysfile.h (PATHNAME_CONVERT_OUT_UTF_8):
* sysfile.h (PATHNAME_CONVERT_OUT):
* sysfile.h (LISP_PATHNAME_CONVERT_OUT):
* syswindows.h (ITEXT_TO_TSTR):
* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
* syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT):
* syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN):
* syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR):
* text.h:
* text.h (eicpy_ext_len):
* text.h (enum new_dfc_src_type):
* text.h (EXTERNAL_TO_ITEXT):
* text.h (GET_STRERROR):
* tooltalk.c (check_status):
* tooltalk.c (Fadd_tooltalk_message_arg):
* tooltalk.c (Fadd_tooltalk_pattern_attribute):
* tooltalk.c (Fadd_tooltalk_pattern_arg):
* win32.c (tstr_to_local_file_format):
* win32.c (mswindows_lisp_error_1):
* win32.c (mswindows_report_process_error):
* win32.c (Fmswindows_shell_execute):
* win32.c (mswindows_read_link_1):
Changes involving external/internal format conversion,
mostly code cleanup and renaming.
1. Eliminate the previous macros like LISP_STRING_TO_EXTERNAL
that stored its result in a parameter. The new version of
LISP_STRING_TO_EXTERNAL returns its result through the
return value, same as the previous NEW_LISP_STRING_TO_EXTERNAL.
Use the new-style macros throughout the code.
2. Rename C_STRING_TO_EXTERNAL and friends to ITEXT_TO_EXTERNAL,
in keeping with overall naming rationalization involving
Itext and related types.
Macros involved in previous two:
EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT
EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC
SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT
SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC
C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL
C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC
LISP_STRING_TO_EXTERNAL
LISP_STRING_TO_EXTERNAL_MALLOC
LISP_STRING_TO_TSTR
C_STRING_TO_TSTR -> ITEXT_TO_TSTR
TSTR_TO_C_STRING -> TSTR_TO_ITEXT
The following four still return their values through parameters,
since they have more than one value to return:
C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL
LISP_STRING_TO_SIZED_EXTERNAL
C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC
LISP_STRING_TO_SIZED_EXTERNAL_MALLOC
Sometimes additional casts had to be inserted, since the old
macros played strange games and completely defeated the type system
of the store params.
3. Rewrite many places where direct calls to TO_EXTERNAL_FORMAT
occurred with calls to one of the convenience macros listed above,
or to make_extstring().
4. Eliminate SIZED_C_STRING macros (they were hardly used, anyway)
and use a direct call to TO_EXTERNAL_FORMAT or TO_INTERNAL_FORMAT.
4. Use LISP_PATHNAME_CONVERT_OUT in many places instead of something
like LISP_STRING_TO_EXTERNAL(..., Qfile_name).
5. Eliminate some temporary variables that are no longer necessary
now that we return a value rather than storing it into a variable.
6. Some Mule-izing in database.c.
7. Error functions:
-- A bit of code cleanup in maybe_signal_error_1.
-- Eliminate report_file_type_error; it's just an alias for
signal_error_2 with params in a different order.
-- Fix some places in the hostname-handling code that directly
inserted externally-retrieved error strings into the
supposed ASCII "reason" param instead of doing the right thing
and sticking text descriptive of what was going on in "reason"
and putting the external message in a frob.
8. Use Ascbyte instead of CIbyte in process-unix.c and maybe one
or two other places.
9. Some code cleanup in copy_in_passwd() in sysdep.c.
10. Fix a real bug due to accidental variable shadowing in
tstr_to_local_file_format() in win32.c.
| author | Ben Wing <ben@xemacs.org> |
|---|---|
| date | Fri, 05 Feb 2010 11:02:24 -0600 |
| parents | 304aebb79cd3 |
| children | 16112448d484 |
| rev | line source |
|---|---|
| 428 | 1 /* TTY-specific Lisp objects. |
| 2 Copyright (C) 1995 Board of Trustees, University of Illinois. | |
| 793 | 3 Copyright (C) 1995, 1996, 2001, 2002 Ben Wing. |
| 428 | 4 |
| 5 This file is part of XEmacs. | |
| 6 | |
| 7 XEmacs is free software; you can redistribute it and/or modify it | |
| 8 under the terms of the GNU General Public License as published by the | |
| 9 Free Software Foundation; either version 2, or (at your option) any | |
| 10 later version. | |
| 11 | |
| 12 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
| 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| 15 for more details. | |
| 16 | |
| 17 You should have received a copy of the GNU General Public License | |
| 18 along with XEmacs; see the file COPYING. If not, write to | |
| 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
| 20 Boston, MA 02111-1307, USA. */ | |
| 21 | |
| 22 /* Synched up with: Not in FSF. */ | |
| 23 | |
| 24 #include <config.h> | |
| 25 #include "lisp.h" | |
| 26 | |
| 872 | 27 #include "console-tty-impl.h" |
| 428 | 28 #include "insdel.h" |
| 872 | 29 #include "objects-tty-impl.h" |
| 428 | 30 #include "device.h" |
| 771 | 31 #include "charset.h" |
| 428 | 32 |
|
4710
3a87551bfeb5
Fixes for a number of minor warnings issued by gcc. See xemacs-patches message
Jerry James <james@xemacs.org>
parents:
4353
diff
changeset
|
33 #ifdef NEW_GC |
|
3a87551bfeb5
Fixes for a number of minor warnings issued by gcc. See xemacs-patches message
Jerry James <james@xemacs.org>
parents:
4353
diff
changeset
|
34 # define UNUSED_IF_NEW_GC(decl) UNUSED (decl) |
|
3a87551bfeb5
Fixes for a number of minor warnings issued by gcc. See xemacs-patches message
Jerry James <james@xemacs.org>
parents:
4353
diff
changeset
|
35 #else |
|
3a87551bfeb5
Fixes for a number of minor warnings issued by gcc. See xemacs-patches message
Jerry James <james@xemacs.org>
parents:
4353
diff
changeset
|
36 # define UNUSED_IF_NEW_GC(decl) decl |
|
3a87551bfeb5
Fixes for a number of minor warnings issued by gcc. See xemacs-patches message
Jerry James <james@xemacs.org>
parents:
4353
diff
changeset
|
37 #endif |
|
3a87551bfeb5
Fixes for a number of minor warnings issued by gcc. See xemacs-patches message
Jerry James <james@xemacs.org>
parents:
4353
diff
changeset
|
38 |
| 428 | 39 /* An alist mapping from color names to a cons of (FG-STRING, BG-STRING). */ |
| 40 Lisp_Object Vtty_color_alist; | |
| 41 #if 0 /* This stuff doesn't quite work yet */ | |
| 42 Lisp_Object Vtty_dynamic_color_fg; | |
| 43 Lisp_Object Vtty_dynamic_color_bg; | |
| 44 #endif | |
| 45 | |
| 1204 | 46 static const struct memory_description tty_color_instance_data_description_1 [] = { |
| 47 { XD_LISP_OBJECT, offsetof (struct tty_color_instance_data, symbol) }, | |
| 48 { XD_END } | |
| 49 }; | |
| 50 | |
| 3092 | 51 #ifdef NEW_GC |
| 52 DEFINE_LRECORD_IMPLEMENTATION ("tty-color-instance-data", | |
| 53 tty_color_instance_data, | |
| 54 0, /*dumpable-flag*/ | |
| 55 0, 0, 0, 0, 0, | |
| 56 tty_color_instance_data_description_1, | |
| 57 struct tty_color_instance_data); | |
| 58 #else /* not NEW_GC */ | |
| 1204 | 59 const struct sized_memory_description tty_color_instance_data_description = { |
| 60 sizeof (struct tty_color_instance_data), tty_color_instance_data_description_1 | |
| 61 }; | |
| 3092 | 62 #endif /* not NEW_GC */ |
| 1204 | 63 |
| 64 static const struct memory_description tty_font_instance_data_description_1 [] = { | |
| 65 { XD_LISP_OBJECT, offsetof (struct tty_font_instance_data, charset) }, | |
| 66 { XD_END } | |
| 67 }; | |
| 68 | |
| 3092 | 69 #ifdef NEW_GC |
| 70 DEFINE_LRECORD_IMPLEMENTATION ("tty-font-instance-data", | |
| 71 tty_font_instance_data, | |
| 72 0, /*dumpable-flag*/ | |
| 73 0, 0, 0, 0, 0, | |
| 74 tty_font_instance_data_description_1, | |
| 75 struct tty_font_instance_data); | |
| 76 #else /* not NEW_GC */ | |
| 1204 | 77 const struct sized_memory_description tty_font_instance_data_description = { |
| 78 sizeof (struct tty_font_instance_data), tty_font_instance_data_description_1 | |
| 79 }; | |
| 3092 | 80 #endif /* not NEW_GC */ |
| 1204 | 81 |
| 428 | 82 DEFUN ("register-tty-color", Fregister_tty_color, 3, 3, 0, /* |
| 83 Register COLOR as a recognized TTY color. | |
| 84 COLOR should be a string. | |
| 85 Strings FG-STRING and BG-STRING should specify the escape sequences to | |
| 86 set the foreground and background to the given color, respectively. | |
| 87 */ | |
| 88 (color, fg_string, bg_string)) | |
| 89 { | |
| 90 CHECK_STRING (color); | |
| 91 CHECK_STRING (fg_string); | |
| 92 CHECK_STRING (bg_string); | |
| 93 | |
| 94 color = Fintern (color, Qnil); | |
| 95 Vtty_color_alist = Fremassq (color, Vtty_color_alist); | |
| 96 Vtty_color_alist = Fcons (Fcons (color, Fcons (fg_string, bg_string)), | |
| 97 Vtty_color_alist); | |
| 98 | |
| 99 return Qnil; | |
| 100 } | |
| 101 | |
| 102 DEFUN ("unregister-tty-color", Funregister_tty_color, 1, 1, 0, /* | |
| 103 Unregister COLOR as a recognized TTY color. | |
| 104 */ | |
| 105 (color)) | |
| 106 { | |
| 107 CHECK_STRING (color); | |
| 108 | |
| 109 color = Fintern (color, Qnil); | |
| 110 Vtty_color_alist = Fremassq (color, Vtty_color_alist); | |
| 111 return Qnil; | |
| 112 } | |
| 113 | |
| 114 DEFUN ("find-tty-color", Ffind_tty_color, 1, 1, 0, /* | |
| 115 Look up COLOR in the list of registered TTY colors. | |
| 116 If it is found, return a list (FG-STRING BG-STRING) of the escape | |
| 117 sequences used to set the foreground and background to the color, respectively. | |
| 118 If it is not found, return nil. | |
| 119 */ | |
| 120 (color)) | |
| 121 { | |
| 122 Lisp_Object result; | |
| 123 | |
| 124 CHECK_STRING (color); | |
| 125 | |
| 126 result = Fassq (Fintern (color, Qnil), Vtty_color_alist); | |
| 127 if (!NILP (result)) | |
| 128 return list2 (Fcar (Fcdr (result)), Fcdr (Fcdr (result))); | |
| 129 else | |
| 130 return Qnil; | |
| 131 } | |
| 132 | |
| 2527 | 133 static Lisp_Object |
| 134 tty_color_list (void) | |
| 428 | 135 { |
| 136 Lisp_Object result = Qnil; | |
| 137 Lisp_Object rest; | |
| 138 | |
| 139 LIST_LOOP (rest, Vtty_color_alist) | |
| 140 { | |
| 141 result = Fcons (Fsymbol_name (XCAR (XCAR (rest))), result); | |
| 142 } | |
| 143 | |
| 144 return Fnreverse (result); | |
| 145 } | |
| 146 | |
| 147 #if 0 | |
| 148 | |
| 149 /* This approach is too simplistic. The problem is that the | |
| 150 dynamic color settings apply to *all* text in the default color, | |
| 151 not just the text output after the escape sequence has been given. */ | |
| 152 | |
| 153 DEFUN ("set-tty-dynamic-color-specs", Fset_tty_dynamic_color_specs, 2, 2, 0, /* | |
| 154 Set the dynamic color specifications for TTY's. | |
| 155 FG and BG should be either nil or vaguely printf-like strings, | |
| 156 where each occurrence of %s is replaced with the color name and each | |
| 157 occurrence of %% is replaced with a single % character. | |
| 158 */ | |
| 159 (fg, bg)) | |
| 160 { | |
| 161 if (!NILP (fg)) | |
| 162 CHECK_STRING (fg); | |
| 163 if (!NILP (bg)) | |
| 164 CHECK_STRING (bg); | |
| 165 | |
| 166 Vtty_dynamic_color_fg = fg; | |
| 167 Vtty_dynamic_color_bg = bg; | |
| 168 | |
| 169 return Qnil; | |
| 170 } | |
| 171 | |
| 172 DEFUN ("tty-dynamic-color-specs", Ftty_dynamic_color_specs, 0, 0, 0, /* | |
| 173 Return the dynamic color specifications for TTY's as a list of (FG BG). | |
| 174 See `set-tty-dynamic-color-specs'. | |
| 175 */ | |
| 176 ()) | |
| 177 { | |
| 178 return list2 (Vtty_dynamic_color_fg, Vtty_dynamic_color_bg); | |
| 179 } | |
| 180 | |
| 181 #endif /* 0 */ | |
| 182 | |
| 183 static int | |
| 440 | 184 tty_initialize_color_instance (Lisp_Color_Instance *c, Lisp_Object name, |
| 2286 | 185 Lisp_Object UNUSED (device), |
| 186 Error_Behavior UNUSED (errb)) | |
| 428 | 187 { |
| 188 Lisp_Object result; | |
| 189 | |
| 190 name = Fintern (name, Qnil); | |
| 191 result = assq_no_quit (name, Vtty_color_alist); | |
| 192 | |
| 193 if (NILP (result)) | |
| 194 { | |
| 195 #if 0 | |
| 196 if (!STRINGP (Vtty_dynamic_color_fg) | |
| 197 && !STRINGP (Vtty_dynamic_color_bg)) | |
| 198 #endif | |
| 199 return 0; | |
| 200 } | |
| 201 | |
| 202 /* Don't allocate the data until we're sure that we will succeed. */ | |
| 3092 | 203 #ifdef NEW_GC |
| 204 c->data = alloc_lrecord_type (struct tty_color_instance_data, | |
| 205 &lrecord_tty_color_instance_data); | |
| 206 #else /* not NEW_GC */ | |
| 428 | 207 c->data = xnew (struct tty_color_instance_data); |
| 3092 | 208 #endif /* not NEW_GC */ |
| 428 | 209 COLOR_INSTANCE_TTY_SYMBOL (c) = name; |
| 210 | |
| 211 return 1; | |
| 212 } | |
| 213 | |
| 214 static void | |
| 440 | 215 tty_mark_color_instance (Lisp_Color_Instance *c) |
| 428 | 216 { |
| 217 mark_object (COLOR_INSTANCE_TTY_SYMBOL (c)); | |
| 218 } | |
| 219 | |
| 220 static void | |
| 2286 | 221 tty_print_color_instance (Lisp_Color_Instance *UNUSED (c), |
| 222 Lisp_Object UNUSED (printcharfun), | |
| 223 int UNUSED (escapeflag)) | |
| 428 | 224 { |
| 225 } | |
| 226 | |
| 227 static void | |
|
4710
3a87551bfeb5
Fixes for a number of minor warnings issued by gcc. See xemacs-patches message
Jerry James <james@xemacs.org>
parents:
4353
diff
changeset
|
228 tty_finalize_color_instance (Lisp_Color_Instance *UNUSED_IF_NEW_GC (c)) |
| 428 | 229 { |
| 4141 | 230 #ifndef NEW_GC |
| 428 | 231 if (c->data) |
| 1726 | 232 xfree (c->data, void *); |
| 4141 | 233 #endif /* not NEW_GC */ |
| 4117 | 234 } |
| 428 | 235 |
| 236 static int | |
| 440 | 237 tty_color_instance_equal (Lisp_Color_Instance *c1, |
| 238 Lisp_Color_Instance *c2, | |
| 2286 | 239 int UNUSED (depth)) |
| 428 | 240 { |
| 241 return (EQ (COLOR_INSTANCE_TTY_SYMBOL (c1), | |
| 242 COLOR_INSTANCE_TTY_SYMBOL (c2))); | |
| 243 } | |
| 244 | |
| 2515 | 245 static Hashcode |
| 2286 | 246 tty_color_instance_hash (Lisp_Color_Instance *c, int UNUSED (depth)) |
| 428 | 247 { |
| 248 return LISP_HASH (COLOR_INSTANCE_TTY_SYMBOL (c)); | |
| 249 } | |
| 250 | |
| 251 static int | |
| 2286 | 252 tty_valid_color_name_p (struct device *UNUSED (d), Lisp_Object color) |
| 428 | 253 { |
| 254 return (!NILP (assoc_no_quit (Fintern (color, Qnil), Vtty_color_alist))); | |
| 255 #if 0 | |
| 256 || STRINGP (Vtty_dynamic_color_fg) | |
| 257 || STRINGP (Vtty_dynamic_color_bg) | |
| 258 #endif | |
| 259 } | |
| 260 | |
| 261 | |
| 262 static int | |
| 440 | 263 tty_initialize_font_instance (Lisp_Font_Instance *f, Lisp_Object name, |
| 2286 | 264 Lisp_Object UNUSED (device), |
| 265 Error_Behavior UNUSED (errb)) | |
| 428 | 266 { |
| 867 | 267 Ibyte *str = XSTRING_DATA (name); |
| 428 | 268 Lisp_Object charset = Qnil; |
| 269 | |
| 2367 | 270 if (qxestrncmp_ascii (str, "normal", 6)) |
| 428 | 271 return 0; |
| 272 str += 6; | |
| 273 if (*str) | |
| 274 { | |
| 275 #ifdef MULE | |
| 276 if (*str != '/') | |
| 277 return 0; | |
| 278 str++; | |
|
4953
304aebb79cd3
function renamings to track names of char typedefs
Ben Wing <ben@xemacs.org>
parents:
4952
diff
changeset
|
279 charset = Ffind_charset (intern_istring (str)); |
| 428 | 280 if (NILP (charset)) |
| 281 return 0; | |
| 282 #else | |
| 283 return 0; | |
| 284 #endif | |
| 285 } | |
| 286 | |
| 287 /* Don't allocate the data until we're sure that we will succeed. */ | |
| 3092 | 288 #ifdef NEW_GC |
| 289 f->data = alloc_lrecord_type (struct tty_font_instance_data, | |
| 290 &lrecord_tty_font_instance_data); | |
| 291 #else /* not NEW_GC */ | |
| 428 | 292 f->data = xnew (struct tty_font_instance_data); |
| 3092 | 293 #endif /* not NEW_GC */ |
| 428 | 294 FONT_INSTANCE_TTY_CHARSET (f) = charset; |
| 295 #ifdef MULE | |
| 296 if (CHARSETP (charset)) | |
| 297 f->width = XCHARSET_COLUMNS (charset); | |
| 298 else | |
| 299 #endif | |
| 300 f->width = 1; | |
| 301 | |
| 302 f->proportional_p = 0; | |
| 303 f->ascent = f->height = 1; | |
| 304 f->descent = 0; | |
| 305 | |
| 306 return 1; | |
| 307 } | |
| 308 | |
| 309 static void | |
| 440 | 310 tty_mark_font_instance (Lisp_Font_Instance *f) |
| 428 | 311 { |
| 312 mark_object (FONT_INSTANCE_TTY_CHARSET (f)); | |
| 313 } | |
| 314 | |
| 315 static void | |
| 2286 | 316 tty_print_font_instance (Lisp_Font_Instance *UNUSED (f), |
| 317 Lisp_Object UNUSED (printcharfun), | |
| 318 int UNUSED (escapeflag)) | |
| 428 | 319 { |
| 320 } | |
| 321 | |
| 322 static void | |
|
4710
3a87551bfeb5
Fixes for a number of minor warnings issued by gcc. See xemacs-patches message
Jerry James <james@xemacs.org>
parents:
4353
diff
changeset
|
323 tty_finalize_font_instance (Lisp_Font_Instance *UNUSED_IF_NEW_GC (f)) |
| 428 | 324 { |
| 4141 | 325 #ifndef NEW_GC |
| 428 | 326 if (f->data) |
| 1726 | 327 xfree (f->data, void *); |
| 4141 | 328 #endif /* not NEW_GC */ |
| 4117 | 329 } |
| 428 | 330 |
| 331 static Lisp_Object | |
| 2527 | 332 tty_font_list (Lisp_Object UNUSED (pattern), Lisp_Object UNUSED (device), |
| 2286 | 333 Lisp_Object UNUSED (maxnumber)) |
| 428 | 334 { |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4710
diff
changeset
|
335 return list1 (build_ascstring ("normal")); |
| 428 | 336 } |
| 337 | |
| 338 #ifdef MULE | |
| 339 | |
| 340 static int | |
| 2286 | 341 tty_font_spec_matches_charset (struct device *UNUSED (d), Lisp_Object charset, |
| 867 | 342 const Ibyte *nonreloc, Lisp_Object reloc, |
| 872 | 343 Bytecount offset, Bytecount length, |
| 3841 | 344 enum font_specifier_matchspec_stages stage) |
| 428 | 345 { |
| 867 | 346 const Ibyte *the_nonreloc = nonreloc; |
| 428 | 347 |
| 872 | 348 if (stage) |
| 349 return 0; | |
| 350 | |
| 428 | 351 if (!the_nonreloc) |
| 352 the_nonreloc = XSTRING_DATA (reloc); | |
| 353 fixup_internal_substring (nonreloc, reloc, offset, &length); | |
| 354 the_nonreloc += offset; | |
| 355 | |
|
4353
4143b78d0df0
Merge an old patch of Ben's, involving font instantiation and charsets.
Aidan Kehoe <kehoea@parhasard.net>
parents:
4141
diff
changeset
|
356 if (NILP (charset)) |
| 428 | 357 return !memchr (the_nonreloc, '/', length); |
| 867 | 358 the_nonreloc = (const Ibyte *) memchr (the_nonreloc, '/', length); |
| 428 | 359 if (!the_nonreloc) |
| 360 return 0; | |
| 361 the_nonreloc++; | |
| 362 { | |
| 793 | 363 Lisp_Object s = symbol_name (XSYMBOL (XCHARSET_NAME (charset))); |
| 364 return !qxestrcmp (the_nonreloc, XSTRING_DATA (s)); | |
| 428 | 365 } |
| 366 } | |
| 367 | |
| 368 /* find a font spec that matches font spec FONT and also matches | |
| 369 (the registry of) CHARSET. */ | |
| 370 static Lisp_Object | |
| 371 tty_find_charset_font (Lisp_Object device, Lisp_Object font, | |
| 3659 | 372 Lisp_Object charset, |
| 373 enum font_specifier_matchspec_stages stage) | |
| 428 | 374 { |
| 867 | 375 Ibyte *fontname = XSTRING_DATA (font); |
| 428 | 376 |
| 872 | 377 if (stage) |
| 378 return Qnil; | |
| 379 | |
| 442 | 380 if (strchr ((const char *) fontname, '/')) |
| 428 | 381 { |
| 382 if (tty_font_spec_matches_charset (XDEVICE (device), charset, 0, | |
| 4124 | 383 font, 0, -1, initial)) |
| 428 | 384 return font; |
| 385 return Qnil; | |
| 386 } | |
| 387 | |
|
4353
4143b78d0df0
Merge an old patch of Ben's, involving font instantiation and charsets.
Aidan Kehoe <kehoea@parhasard.net>
parents:
4141
diff
changeset
|
388 if (NILP (charset)) |
| 428 | 389 return font; |
| 390 | |
|
4952
19a72041c5ed
Mule-izing, various fixes related to char * arguments
Ben Wing <ben@xemacs.org>
parents:
4710
diff
changeset
|
391 return concat3 (font, build_ascstring ("/"), |
| 428 | 392 Fsymbol_name (XCHARSET_NAME (charset))); |
| 393 } | |
| 394 | |
| 395 #endif /* MULE */ | |
| 396 | |
| 397 | |
| 398 /************************************************************************/ | |
| 399 /* initialization */ | |
| 400 /************************************************************************/ | |
| 401 | |
| 402 void | |
| 403 syms_of_objects_tty (void) | |
| 404 { | |
| 3092 | 405 #ifdef NEW_GC |
| 406 INIT_LRECORD_IMPLEMENTATION (tty_color_instance_data); | |
| 407 INIT_LRECORD_IMPLEMENTATION (tty_font_instance_data); | |
| 408 #endif /* NEW_GC */ | |
| 409 | |
| 428 | 410 DEFSUBR (Fregister_tty_color); |
| 411 DEFSUBR (Funregister_tty_color); | |
| 412 DEFSUBR (Ffind_tty_color); | |
| 413 #if 0 | |
| 414 DEFSUBR (Fset_tty_dynamic_color_specs); | |
| 415 DEFSUBR (Ftty_dynamic_color_specs); | |
| 416 #endif | |
| 417 } | |
| 418 | |
| 419 void | |
| 420 console_type_create_objects_tty (void) | |
| 421 { | |
| 422 /* object methods */ | |
| 423 CONSOLE_HAS_METHOD (tty, initialize_color_instance); | |
| 424 CONSOLE_HAS_METHOD (tty, mark_color_instance); | |
| 425 CONSOLE_HAS_METHOD (tty, print_color_instance); | |
| 426 CONSOLE_HAS_METHOD (tty, finalize_color_instance); | |
| 427 CONSOLE_HAS_METHOD (tty, color_instance_equal); | |
| 428 CONSOLE_HAS_METHOD (tty, color_instance_hash); | |
| 429 CONSOLE_HAS_METHOD (tty, valid_color_name_p); | |
| 2527 | 430 CONSOLE_HAS_METHOD (tty, color_list); |
| 428 | 431 |
| 432 CONSOLE_HAS_METHOD (tty, initialize_font_instance); | |
| 433 CONSOLE_HAS_METHOD (tty, mark_font_instance); | |
| 434 CONSOLE_HAS_METHOD (tty, print_font_instance); | |
| 435 CONSOLE_HAS_METHOD (tty, finalize_font_instance); | |
| 2527 | 436 CONSOLE_HAS_METHOD (tty, font_list); |
| 428 | 437 #ifdef MULE |
| 438 CONSOLE_HAS_METHOD (tty, font_spec_matches_charset); | |
| 439 CONSOLE_HAS_METHOD (tty, find_charset_font); | |
| 440 #endif | |
| 441 } | |
| 442 | |
| 443 void | |
| 444 vars_of_objects_tty (void) | |
| 445 { | |
| 446 staticpro (&Vtty_color_alist); | |
| 447 Vtty_color_alist = Qnil; | |
| 448 | |
| 449 #if 0 | |
| 450 staticpro (&Vtty_dynamic_color_fg); | |
| 451 Vtty_dynamic_color_fg = Qnil; | |
| 452 | |
| 453 staticpro (&Vtty_dynamic_color_bg); | |
| 454 Vtty_dynamic_color_bg = Qnil; | |
| 455 #endif | |
| 456 } |
