Mercurial > hg > xemacs-beta
annotate src/device-tty.c @ 4976:16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
-------------------- ChangeLog entries follow: --------------------
src/ChangeLog addition:
2010-02-04 Ben Wing <ben@xemacs.org>
* alloc.c (release_breathing_space):
* alloc.c (resize_string):
* alloc.c (sweep_lcrecords_1):
* alloc.c (SWEEP_FIXED_TYPE_BLOCK_1):
* alloc.c (ADDITIONAL_FREE_compiled_function):
* alloc.c (compact_string_chars):
* alloc.c (ADDITIONAL_FREE_string):
* alloc.c (sweep_strings):
* alloca.c (xemacs_c_alloca):
* alsaplay.c (alsa_play_sound_file):
* buffer.c (init_initial_directory):
* buffer.h:
* buffer.h (BUFFER_FREE):
* console-stream.c (stream_delete_console):
* console-tty.c (free_tty_console_struct):
* data.c (Fnumber_to_string):
* device-gtk.c (gtk_init_device):
* device-gtk.c (free_gtk_device_struct):
* device-gtk.c (gtk_delete_device):
* device-msw.c (mswindows_delete_device):
* device-msw.c (msprinter_delete_device):
* device-tty.c (free_tty_device_struct):
* device-tty.c (tty_delete_device):
* device-x.c (x_init_device):
* device-x.c (free_x_device_struct):
* device-x.c (x_delete_device):
* dialog-msw.c (handle_directory_dialog_box):
* dialog-x.c (dbox_descriptor_to_widget_value):
* dired-msw.c (Fmswindows_insert_directory):
* dired.c (free_user_cache):
* dired.c (user_name_completion_unwind):
* doc.c (unparesseuxify_doc_string):
* doc.c (Fsubstitute_command_keys):
* doprnt.c (emacs_doprnt_1):
* dumper.c (pdump_load_finish):
* dumper.c (pdump_file_free):
* dumper.c (pdump_file_unmap):
* dynarr.c:
* dynarr.c (Dynarr_free):
* editfns.c (uncache_home_directory):
* editfns.c (Fset_time_zone_rule):
* elhash.c:
* elhash.c (pdump_reorganize_hash_table):
* elhash.c (maphash_unwind):
* emacs.c (make_arg_list_1):
* emacs.c (free_argc_argv):
* emacs.c (sort_args):
* emacs.c (Frunning_temacs_p):
* emodules.c (attempt_module_delete):
* eval.c (free_pointer):
* event-Xt.c (unselect_filedesc):
* event-Xt.c (emacs_Xt_select_process):
* event-gtk.c (unselect_filedesc):
* event-gtk.c (dragndrop_data_received):
* event-msw.c (winsock_closer):
* event-msw.c (mswindows_dde_callback):
* event-msw.c (mswindows_wnd_proc):
* event-stream.c (finalize_command_builder):
* event-stream.c (free_command_builder):
* extents.c (free_gap_array):
* extents.c (free_extent_list):
* extents.c (free_soe):
* extents.c (extent_fragment_delete):
* extents.c (extent_priority_sort_function):
* file-coding.c (make_coding_system_1):
* file-coding.c (coding_finalizer):
* file-coding.c (set_coding_stream_coding_system):
* file-coding.c (chain_finalize_coding_stream_1):
* file-coding.c (chain_finalize):
* file-coding.c (free_detection_state):
* file-coding.c (coding_category_symbol_to_id):
* fileio.c:
* fileio.c (Ffile_name_directory):
* fileio.c (if):
* fileio.c (Ffile_symlink_p):
* filelock.c (FREE_LOCK_INFO):
* filelock.c (current_lock_owner):
* font-mgr.c (Ffc_name_unparse):
* font-mgr.c (Ffc_pattern_duplicate):
* frame-gtk.c (gtk_delete_frame):
* frame-msw.c (mswindows_delete_frame):
* frame-msw.c (msprinter_delete_frame):
* frame-x.c (x_cde_destroy_callback):
* frame-x.c (Fcde_start_drag_internal):
* frame-x.c (x_cde_transfer_callback):
* frame-x.c (x_delete_frame):
* frame.c (update_frame_title):
* frame.c (Fset_frame_pointer):
* gc.c (register_for_finalization):
* gccache-gtk.c (free_gc_cache):
* gccache-gtk.c (gc_cache_lookup):
* gccache-x.c (free_gc_cache):
* gccache-x.c (gc_cache_lookup):
* glyphs-eimage.c:
* glyphs-eimage.c (jpeg_instantiate_unwind):
* glyphs-eimage.c (gif_instantiate_unwind):
* glyphs-eimage.c (png_instantiate_unwind):
* glyphs-eimage.c (png_instantiate):
* glyphs-eimage.c (tiff_instantiate_unwind):
* glyphs-gtk.c (convert_EImage_to_GDKImage):
* glyphs-gtk.c (gtk_finalize_image_instance):
* glyphs-gtk.c (gtk_init_image_instance_from_eimage):
* glyphs-gtk.c (gtk_xpm_instantiate):
* glyphs-msw.c (convert_EImage_to_DIBitmap):
* glyphs-msw.c (mswindows_init_image_instance_from_eimage):
* glyphs-msw.c (mswindows_initialize_image_instance_mask):
* glyphs-msw.c (xpm_to_eimage):
* glyphs-msw.c (mswindows_xpm_instantiate):
* glyphs-msw.c (xbm_create_bitmap_from_data):
* glyphs-msw.c (mswindows_finalize_image_instance):
* glyphs-x.c (convert_EImage_to_XImage):
* glyphs-x.c (x_finalize_image_instance):
* glyphs-x.c (x_init_image_instance_from_eimage):
* glyphs-x.c (x_xpm_instantiate):
* gui-x.c (free_popup_widget_value_tree):
* hash.c (free_hash_table):
* hash.c (grow_hash_table):
* hash.c (pregrow_hash_table_if_necessary):
* imgproc.c (build_EImage_quantable):
* insdel.c (uninit_buffer_text):
* intl-win32.c (convert_multibyte_to_internal_malloc):
* intl.c:
* intl.c (Fset_current_locale):
* keymap.c:
* keymap.c (where_is_recursive_mapper):
* keymap.c (where_is_internal):
* lisp.h:
* lisp.h (xfree):
* lstream.c (Lstream_close):
* lstream.c (resizing_buffer_closer):
* mule-coding.c:
* mule-coding.c (iso2022_finalize_detection_state):
* nt.c:
* nt.c (mswindows_get_long_filename):
* nt.c (nt_get_resource):
* nt.c (init_mswindows_environment):
* nt.c (get_cached_volume_information):
* nt.c (mswindows_opendir):
* nt.c (mswindows_closedir):
* nt.c (mswindows_readdir):
* nt.c (mswindows_stat):
* nt.c (mswindows_getdcwd):
* nt.c (Fmswindows_long_file_name):
* ntplay.c (nt_play_sound_file):
* ntplay.c (play_sound_data_1):
* number-gmp.c (gmp_free):
* number-gmp.c (init_number_gmp):
* number-mp.c (bignum_to_string):
* number-mp.c (BIGNUM_TO_TYPE):
* number.c (bignum_print):
* number.c (bignum_convfree):
* number.c (ratio_print):
* number.c (bigfloat_print):
* number.c (bigfloat_finalize):
* objects-gtk.c (gtk_finalize_color_instance):
* objects-gtk.c (gtk_finalize_font_instance):
* objects-msw.c (mswindows_finalize_color_instance):
* objects-msw.c (mswindows_finalize_font_instance):
* objects-tty.c (tty_finalize_color_instance):
* objects-tty.c (tty_finalize_font_instance):
* objects-tty.c (tty_font_list):
* objects-x.c (x_finalize_color_instance):
* objects-x.c (x_finalize_font_instance):
* process.c:
* process.c (finalize_process):
* realpath.c:
* redisplay.c (add_propagation_runes):
* regex.c:
* regex.c (xfree):
* regex.c (REGEX_FREE_STACK):
* regex.c (FREE_STACK_RETURN):
* regex.c (regex_compile):
* regex.c (regexec):
* regex.c (regfree):
* scrollbar-gtk.c (gtk_free_scrollbar_instance):
* scrollbar-gtk.c (gtk_release_scrollbar_instance):
* scrollbar-msw.c (mswindows_free_scrollbar_instance):
* scrollbar-msw.c (unshow_that_mofo):
* scrollbar-x.c (x_free_scrollbar_instance):
* scrollbar-x.c (x_release_scrollbar_instance):
* select-gtk.c (emacs_gtk_selection_handle):
* select-msw.c (mswindows_own_selection):
* select-x.c:
* select-x.c (x_handle_selection_request):
* select-x.c (unexpect_property_change):
* select-x.c (x_handle_property_notify):
* select-x.c (receive_incremental_selection):
* select-x.c (x_get_window_property_as_lisp_data):
* select-x.c (Fx_get_cutbuffer_internal):
* specifier.c (finalize_specifier):
* syntax.c (uninit_buffer_syntax_cache):
* sysdep.c (qxe_allocating_getcwd):
* sysdep.c (qxe_lstat):
* sysdep.c (copy_in_passwd):
* sysdep.c (qxe_ctime):
* sysdep.c (closedir):
* sysdep.c (DIRSIZ):
* termcap.c (tgetent):
* termcap.c (tprint):
* tests.c (Ftest_data_format_conversion):
* text.c (new_dfc_convert_copy_data):
* text.h (eifree):
* text.h (eito_alloca):
* text.h (eito_external):
* toolbar-msw.c (mswindows_output_toolbar):
* ui-gtk.c (CONVERT_RETVAL):
* ui-gtk.c (__allocate_object_storage):
* unicode.c (free_from_unicode_table):
* unicode.c (free_to_unicode_table):
* unicode.c (free_charset_unicode_tables):
* win32.c (mswindows_read_link_1):
Rename: xfree(VAL, TYPE)->xfree(VAL)
Command used:
gr 'xfree *\((.*),.*\);' 'xfree (\1);' *.[ch]
Followed by grepping for 'xfree.*,' and fixing anything left.
Rationale: Having to specify the TYPE argument is annoying and
error-prone. It was originally put in to work around warnings
due to strict aliasing but years and years ago I rewrote it
in a way that doesn't use the TYPE argument at all and no one
has complained since then. (And anyway, XEmacs is far from
ever being in compliance with strict aliasing and would require
far-reaching changes to get that way.)
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Thu, 04 Feb 2010 07:28:14 -0600 |
parents | e34711681f30 |
children | d0c14ea98592 b5df3737028a |
rev | line source |
---|---|
428 | 1 /* TTY device functions. |
2 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois. | |
3 Copyright (C) 1994, 1995 Free Software Foundation, Inc. | |
4 Copyright (C) 1996 Ben Wing. | |
5 | |
6 This file is part of XEmacs. | |
7 | |
8 XEmacs is free software; you can redistribute it and/or modify it | |
9 under the terms of the GNU General Public License as published by the | |
10 Free Software Foundation; either version 2, or (at your option) any | |
11 later version. | |
12 | |
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with XEmacs; see the file COPYING. If not, write to | |
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
21 Boston, MA 02111-1307, USA. */ | |
22 | |
23 /* Synched up with: Not in FSF. */ | |
24 | |
25 /* Authors: Ben Wing and Chuck Thompson. */ | |
26 | |
27 #include <config.h> | |
28 #include "lisp.h" | |
29 | |
872 | 30 #include "device-impl.h" |
428 | 31 #include "events.h" |
32 #include "faces.h" | |
33 #include "frame.h" | |
34 #include "lstream.h" | |
35 #include "redisplay.h" | |
36 #include "sysdep.h" | |
37 | |
872 | 38 #include "console-tty-impl.h" |
800 | 39 #include "console-stream.h" |
40 | |
558 | 41 #include "sysfile.h" |
428 | 42 #include "syssignal.h" /* for SIGWINCH */ |
43 | |
4477
e34711681f30
Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents:
3092
diff
changeset
|
44 Lisp_Object Qmake_device_early_tty_entry_point; |
428 | 45 |
46 | |
3092 | 47 #ifdef NEW_GC |
48 static const struct memory_description tty_device_data_description_1 [] = { | |
49 { XD_END } | |
50 }; | |
51 | |
52 DEFINE_LRECORD_IMPLEMENTATION ("tty-device", tty_device, | |
53 1, /*dumpable-flag*/ | |
54 0, 0, 0, 0, 0, | |
55 tty_device_data_description_1, | |
56 Lisp_Tty_Device); | |
57 #endif /* NEW_GC */ | |
58 | |
428 | 59 static void |
60 allocate_tty_device_struct (struct device *d) | |
61 { | |
3092 | 62 #ifdef NEW_GC |
63 d->device_data = alloc_lrecord_type (struct tty_device, &lrecord_tty_device); | |
64 #else /* not NEW_GC */ | |
428 | 65 d->device_data = xnew_and_zero (struct tty_device); |
3092 | 66 #endif /* not NEW_GC */ |
428 | 67 } |
68 | |
69 static void | |
2286 | 70 tty_init_device (struct device *d, Lisp_Object UNUSED (props)) |
428 | 71 { |
72 struct console *con = XCONSOLE (DEVICE_CONSOLE (d)); | |
73 Lisp_Object terminal_type = CONSOLE_TTY_DATA (con)->terminal_type; | |
74 | |
4477
e34711681f30
Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents:
3092
diff
changeset
|
75 /* Run part of the elisp side of the TTY device initialization. |
e34711681f30
Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents:
3092
diff
changeset
|
76 The post-init is run in the tty_finish_init_device() method. */ |
e34711681f30
Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents:
3092
diff
changeset
|
77 call0 (Qmake_device_early_tty_entry_point); |
e34711681f30
Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents:
3092
diff
changeset
|
78 |
428 | 79 DEVICE_INFD (d) = CONSOLE_TTY_DATA (con)->infd; |
80 DEVICE_OUTFD (d) = CONSOLE_TTY_DATA (con)->outfd; | |
81 | |
82 allocate_tty_device_struct (d); | |
83 init_baud_rate (d); | |
84 | |
85 switch (init_tty_for_redisplay (d, (char *) XSTRING_DATA (terminal_type))) | |
86 { | |
87 #if 0 | |
88 case TTY_UNABLE_OPEN_DATABASE: | |
89 suppress_early_error_handler_backtrace = 1; | |
563 | 90 signal_error (Qio_error, "Can't access terminal information database", Qunbound); |
428 | 91 break; |
92 #endif | |
93 case TTY_TYPE_UNDEFINED: | |
94 suppress_early_error_handler_backtrace = 1; | |
563 | 95 signal_error (Qio_error, "Terminal type undefined (or can't access database?)", |
96 terminal_type); | |
428 | 97 break; |
98 case TTY_TYPE_INSUFFICIENT: | |
99 suppress_early_error_handler_backtrace = 1; | |
563 | 100 signal_error (Qio_error, "Terminal type not powerful enough to run Emacs", |
101 terminal_type); | |
428 | 102 break; |
103 case TTY_SIZE_UNSPECIFIED: | |
104 suppress_early_error_handler_backtrace = 1; | |
563 | 105 signal_error (Qio_error, "Can't determine window size of terminal", Qunbound); |
428 | 106 break; |
107 case TTY_INIT_SUCCESS: | |
108 break; | |
109 default: | |
2500 | 110 ABORT (); |
428 | 111 } |
112 | |
113 init_one_device (d); | |
114 } | |
115 | |
3092 | 116 #ifndef NEW_GC |
428 | 117 static void |
118 free_tty_device_struct (struct device *d) | |
119 { | |
1726 | 120 if (d->device_data) |
4976
16112448d484
Rename xfree(FOO, TYPE) -> xfree(FOO)
Ben Wing <ben@xemacs.org>
parents:
4477
diff
changeset
|
121 xfree (d->device_data); |
428 | 122 } |
123 | |
124 static void | |
125 tty_delete_device (struct device *d) | |
126 { | |
127 free_tty_device_struct (d); | |
128 } | |
3092 | 129 #endif /* not NEW_GC */ |
428 | 130 |
131 #ifdef SIGWINCH | |
132 | |
133 static SIGTYPE | |
2286 | 134 tty_device_size_change_signal (int UNUSED (signo)) |
428 | 135 { |
136 int old_errno = errno; | |
137 asynch_device_change_pending++; | |
138 #ifdef HAVE_UNIXOID_EVENT_LOOP | |
139 signal_fake_event (); | |
140 #endif | |
141 EMACS_REESTABLISH_SIGNAL (SIGWINCH, tty_device_size_change_signal); | |
142 errno = old_errno; | |
143 SIGRETURN; | |
144 } | |
145 | |
146 /* frame_change_signal does nothing but set a flag that it was called. | |
147 When redisplay is called, it will notice that the flag is set and | |
148 call handle_pending_device_size_change to do the actual work. */ | |
149 static void | |
150 tty_asynch_device_change (void) | |
151 { | |
152 Lisp_Object devcons, concons; | |
153 | |
154 DEVICE_LOOP_NO_BREAK (devcons, concons) | |
155 { | |
156 int width, height; | |
157 Lisp_Object tail; | |
158 struct device *d = XDEVICE (XCAR (devcons)); | |
159 struct console *con = XCONSOLE (DEVICE_CONSOLE (d)); | |
160 | |
161 if (!DEVICE_TTY_P (d)) | |
162 continue; | |
163 | |
164 get_tty_device_size (d, &width, &height); | |
165 if (width > 0 && height > 0 | |
166 && (CONSOLE_TTY_DATA (con)->width != width | |
167 || CONSOLE_TTY_DATA (con)->height != height)) | |
168 { | |
169 CONSOLE_TTY_DATA (con)->width = width; | |
170 CONSOLE_TTY_DATA (con)->height = height; | |
171 | |
172 for (tail = DEVICE_FRAME_LIST (d); | |
173 !NILP (tail); | |
174 tail = XCDR (tail)) | |
175 { | |
176 struct frame *f = XFRAME (XCAR (tail)); | |
177 | |
178 /* We know the frame is tty because we made sure that the | |
179 device is tty. */ | |
180 change_frame_size (f, height, width, 1); | |
181 } | |
182 } | |
183 } | |
184 } | |
185 | |
186 #endif /* SIGWINCH */ | |
187 | |
188 static Lisp_Object | |
189 tty_device_system_metrics (struct device *d, | |
190 enum device_metrics m) | |
191 { | |
192 struct console *con = XCONSOLE (DEVICE_CONSOLE (d)); | |
193 switch (m) | |
194 { | |
195 case DM_size_device: | |
196 return Fcons (make_int (CONSOLE_TTY_DATA (con)->width), | |
197 make_int (CONSOLE_TTY_DATA (con)->height)); | |
198 default: /* No such device metric property for TTY devices */ | |
199 return Qunbound; | |
200 } | |
201 } | |
202 | |
203 /************************************************************************/ | |
204 /* initialization */ | |
205 /************************************************************************/ | |
206 | |
207 void | |
208 syms_of_device_tty (void) | |
209 { | |
3092 | 210 #ifdef NEW_GC |
211 INIT_LRECORD_IMPLEMENTATION (tty_device); | |
212 #endif /* NEW_GC */ | |
213 | |
4477
e34711681f30
Don't determine whether to call general device-type code at startup,
Aidan Kehoe <kehoea@parhasard.net>
parents:
3092
diff
changeset
|
214 DEFSYMBOL (Qmake_device_early_tty_entry_point); |
428 | 215 } |
216 | |
217 void | |
218 console_type_create_device_tty (void) | |
219 { | |
220 /* device methods */ | |
221 CONSOLE_HAS_METHOD (tty, init_device); | |
3092 | 222 #ifndef NEW_GC |
428 | 223 CONSOLE_HAS_METHOD (tty, delete_device); |
3092 | 224 #endif /* not NEW_GC */ |
428 | 225 #ifdef SIGWINCH |
226 CONSOLE_HAS_METHOD (tty, asynch_device_change); | |
227 #endif /* SIGWINCH */ | |
228 CONSOLE_HAS_METHOD (tty, device_system_metrics); | |
229 } | |
230 | |
231 void | |
232 init_device_tty (void) | |
233 { | |
234 #ifdef SIGWINCH | |
235 if (initialized && !noninteractive) | |
613 | 236 EMACS_SIGNAL (SIGWINCH, tty_device_size_change_signal); |
428 | 237 #endif /* SIGWINCH */ |
238 } |