comparison src/ChangeLog @ 826:6728e641994e

[xemacs-hg @ 2002-05-05 11:30:15 by ben] syntax cache, 8-bit-format, lots of code cleanup README.packages: Update info about --package-path. i.c: Create an inheritable event and pass it on to XEmacs, so that ^C can be handled properly. Intercept ^C and signal the event. "Stop Build" in VC++ now works. bytecomp-runtime.el: Doc string changes. compat.el: Some attempts to redo this to make it truly useful and fix the "multiple versions interacting with each other" problem. Not yet done. Currently doesn't work. files.el: Use with-obsolete-variable to avoid warnings in new revert-buffer code. xemacs.mak: Split up CFLAGS into a version without flags specifying the C library. The problem seems to be that minitar depends on zlib, which depends specifically on libc.lib, not on any of the other C libraries. Unless you compile with libc.lib, you get errors -- specifically, no _errno in the other libraries, which must make it something other than an int. (#### But this doesn't seem to obtain in XEmacs, which also uses zlib, and can be linked with any of the C libraries. Maybe zlib is used differently and doesn't need errno, or maybe XEmacs provides an int errno; ... I don't understand. Makefile.in.in: Fix so that packages are around when testing. abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, callint.c, casefiddle.c, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, cmds.c, console-msw.h, console-stream.c, console-x.c, console.c, console.h, data.c, device-msw.c, device.c, device.h, dialog-msw.c, dialog-x.c, dired-msw.c, dired.c, doc.c, doprnt.c, dumper.c, editfns.c, elhash.c, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, events.c, events.h, extents.c, extents.h, faces.c, file-coding.c, file-coding.h, fileio.c, fns.c, font-lock.c, frame-gtk.c, frame-msw.c, frame-x.c, frame.c, frame.h, glade.c, glyphs-gtk.c, glyphs-msw.c, glyphs-msw.h, glyphs-x.c, glyphs.c, glyphs.h, gui-msw.c, gui-x.c, gui.h, gutter.h, hash.h, indent.c, insdel.c, intl-win32.c, intl.c, keymap.c, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, marker.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-ccl.c, mule-charset.c, mule-coding.c, mule-wnnfns.c, nas.c, objects-msw.c, objects-x.c, opaque.c, postgresql.c, print.c, process-nt.c, process-unix.c, process.c, process.h, profile.c, rangetab.c, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-x.c, redisplay.c, redisplay.h, regex.c, regex.h, scrollbar-msw.c, search.c, select-x.c, specifier.c, specifier.h, symbols.c, symsinit.h, syntax.c, syntax.h, syswindows.h, tests.c, text.c, text.h, tooltalk.c, ui-byhand.c, ui-gtk.c, unicode.c, win32.c, window.c: Another big Ben patch. -- FUNCTIONALITY CHANGES: add partial support for 8-bit-fixed, 16-bit-fixed, and 32-bit-fixed formats. not quite done yet. (in particular, needs functions to actually convert the buffer.) NOTE: lots of changes to regex.c here. also, many new *_fmt() inline funs that take an Internal_Format argument. redo syntax cache code. make the cache per-buffer; keep the cache valid across calls to functions that use it. also keep it valid across insertions/deletions and extent changes, as much as is possible. eliminate the junky regex-reentrancy code by passing in the relevant lisp info to the regex routines as local vars. add general mechanism in extents code for signalling extent changes. fix numerous problems with the case-table implementation; yoshiki never properly transferred many algorithms from old-style to new-style case tables. redo char tables to support a default argument, so that mapping only occurs over changed args. change many chartab functions to accept Lisp_Object instead of Lisp_Char_Table *. comment out the code in font-lock.c by default, because font-lock.el no longer uses it. we should consider eliminating it entirely. Don't output bell as ^G in console-stream when not a TTY. add -mswindows-termination-handle to interface with i.c, so we can properly kill a build. add more error-checking to buffer/string macros. add some additional buffer_or_string_() funs. -- INTERFACE CHANGES AFFECTING MORE CODE: switch the arguments of write_c_string and friends to be consistent with write_fmt_string, which must have printcharfun first. change BI_* macros to BYTE_* for increased clarity; similarly for bi_* local vars. change VOID_TO_LISP to be a one-argument function. eliminate no-longer-needed CVOID_TO_LISP. -- char/string macro changes: rename MAKE_CHAR() to make_emchar() for slightly less confusion with make_char(). (The former generates an Emchar, the latter a Lisp object. Conceivably we should rename make_char() -> wrap_char() and similarly for make_int(), make_float().) Similar changes for other *CHAR* macros -- we now consistently use names with `emchar' whenever we are working with Emchars. Any remaining name with just `char' always refers to a Lisp object. rename macros with XSTRING_* to string_* except for those that reference actual fields in the Lisp_String object, following conventions used elsewhere. rename set_string_{data,length} macros (the only ones to work with a Lisp_String_* instead of a Lisp_Object) to set_lispstringp_* to make the difference clear. try to be consistent about caps vs. lowercase in macro/inline-fun names for chars and such, which wasn't the case before. we now reserve caps either for XFOO_ macros that reference object fields (e.g. XSTRING_DATA) or for things that have non-function semantics, e.g. directly modifying an arg (BREAKUP_EMCHAR) or evaluating an arg (any arg) more than once. otherwise, use lowercase. here is a summary of most of the macros/inline funs changed by all of the above changes: BYTE_*_P -> byte_*_p XSTRING_BYTE -> string_byte set_string_data/length -> set_lispstringp_data/length XSTRING_CHAR_LENGTH -> string_char_length XSTRING_CHAR -> string_emchar INTBYTE_FIRST_BYTE_P -> intbyte_first_byte_p INTBYTE_LEADING_BYTE_P -> intbyte_leading_byte_p charptr_copy_char -> charptr_copy_emchar LEADING_BYTE_* -> leading_byte_* CHAR_* -> EMCHAR_* *_CHAR_* -> *_EMCHAR_* *_CHAR -> *_EMCHAR CHARSET_BY_ -> charset_by_* BYTE_SHIFT_JIS* -> byte_shift_jis* BYTE_BIG5* -> byte_big5* REP_BYTES_BY_FIRST_BYTE -> rep_bytes_by_first_byte char_to_unicode -> emchar_to_unicode valid_char_p -> valid_emchar_p Change intbyte_strcmp -> qxestrcmp_c (duplicated functionality). -- INTERFACE CHANGES AFFECTING LESS CODE: use DECLARE_INLINE_HEADER in various places. remove '#ifdef emacs' from XEmacs-only files. eliminate CHAR_TABLE_VALUE(), which duplicated the functionality of get_char_table(). add BUFFER_TEXT_LOOP to simplify iterations over buffer text. define typedefs for signed and unsigned types of fixed sizes (INT_32_BIT, UINT_32_BIT, etc.). create ALIGN_FOR_TYPE as a higher-level interface onto ALIGN_SIZE; fix code to use it. add charptr_emchar_len to return the text length of the character pointed to by a ptr; use it in place of charcount_to_bytecount(..., 1). add emchar_len to return the text length of a given character. add types Bytexpos and Charxpos to generalize Bytebpos/Bytecount and Charbpos/Charcount, in code (particularly, the extents code and redisplay code) that works with either kind of index. rename redisplay struct params with names such as `charbpos' to e.g. `charpos' when they are e.g. a Charxpos, not a Charbpos. eliminate xxDEFUN in place of DEFUN; no longer necessary with changes awhile back to doc.c. split up big ugly combined list of EXFUNs in lisp.h on a file-by-file basis, since other prototypes are similarly split. rewrite some "*_UNSAFE" macros as inline funs and eliminate the _UNSAFE suffix. move most string code from lisp.h to text.h; the string code and text.h code is now intertwined in such a fashion that they need to be in the same place and partially interleaved. (you can't create forward references for inline funs) automated/lisp-tests.el, automated/symbol-tests.el, automated/test-harness.el: Fix test harness to output FAIL messages to stderr when in batch mode. Fix up some problems in lisp-tests/symbol-tests that were causing spurious failures.
author ben
date Sun, 05 May 2002 11:33:57 +0000
parents 39d30f8fadfd
children 28426972f654
comparison
equal deleted inserted replaced
825:eb3bc15a6e0f 826:6728e641994e
1 2002-05-05 Ben Wing <ben@xemacs.org>
2
3 * Makefile.in.in (batch_test_emacs):
4
5 Fix so that packages are around when testing.
6
7 * abbrev.c (struct abbrev_match_mapper_closure):
8 * abbrev.c (abbrev_match_mapper):
9 * abbrev.c (abbrev_match):
10 * abbrev.c (Fexpand_abbrev):
11 * alloc.c (deadbeef_memory):
12 * alloc.c (STRING_FULLSIZE):
13 * alloc.c (sledgehammer_check_ascii_begin):
14 * alloc.c (make_uninit_string):
15 * alloc.c (set_string_char):
16 * alloc.c (init_string_ascii_begin):
17 * alloc.c (make_string_nocopy):
18 * alloc.c (compact_string_chars):
19 * alloc.c (debug_string_purity_print):
20 * buffer.c (mark_buffer):
21 * buffer.c (print_buffer):
22 * buffer.c (finish_init_buffer):
23 * buffer.c (Fother_buffer):
24 * buffer.c (Fkill_buffer):
25 * buffer.h:
26 * buffer.h (struct buffer_text):
27 * buffer.h (struct buffer):
28 * buffer.h (BYTE_BUF_BEG):
29 * buffer.h (BYTE_BUF_BEGV):
30 * buffer.h (BYTE_BUF_ZV):
31 * buffer.h (BYTE_BUF_Z):
32 * buffer.h (BYTE_BUF_PT):
33 * buffer.h (INC_BYTEBPOS):
34 * buffer.h (make_charbpos):
35 * buffer.h (BYTE_BUF_FETCH_CHAR_RAW):
36 * buffer.h (BYTE_BUF_CHARPTR_COPY_EMCHAR):
37 * buffer.h (SET_BOTH_BUF_BEGV):
38 * buffer.h (SET_BOTH_BUF_ZV):
39 * buffer.h (BOTH_BUF_SET_PT):
40 * buffer.h (BUF_NARROWED):
41 * buffer.h (BYTE_BUF_CEILING_OF_IGNORE_ACCESSIBLE):
42 * buffer.h (BYTE_BUF_FLOOR_OF_IGNORE_ACCESSIBLE):
43 * bytecode.c (optimize_compiled_function):
44 * bytecode.c (print_compiled_function):
45 * bytecode.c (Fcompiled_function_annotation):
46 * callint.c (Fcall_interactively):
47 * casefiddle.c:
48 * casefiddle.c (casify_object):
49 * casefiddle.c (casify_region_internal):
50 * casetab.c:
51 * casetab.c (STRING256_P):
52 * casetab.c (print_case_table):
53 * casetab.c (allocate_case_table):
54 * casetab.c (Fmake_case_table):
55 * casetab.c (case_table_char):
56 * casetab.c (Fget_case_table):
57 * casetab.c (Fput_case_table):
58 * casetab.c (Fput_case_table_pair):
59 * casetab.c (Fcopy_case_table):
60 * casetab.c (compute_canon_mapper):
61 * casetab.c (compute_up_or_eqv_mapper):
62 * casetab.c (recompute_case_table):
63 * casetab.c (convert_old_style_syntax_string):
64 * casetab.c (set_case_table):
65 * casetab.c (Fset_standard_case_table):
66 * casetab.c (syms_of_casetab):
67 * casetab.c (complex_vars_of_casetab):
68 * casetab.h:
69 * casetab.h (struct Lisp_Case_Table):
70 * charset.h:
71 * charset.h (emchar_charset):
72 * charset.h (leading_byte_private_p):
73 * charset.h (private_leading_byte_prefix):
74 * charset.h (CHARSET_PRIVATE_P):
75 * charset.h (EMCHAR_FIELD1_MASK):
76 * charset.h (emchar_field1):
77 * charset.h (MIN_EMCHAR_FIELD2_OFFICIAL):
78 * charset.h (MIN_EMCHAR_FIELD1_OFFICIAL):
79 * charset.h (MIN_EMCHAR_FIELD2_PRIVATE):
80 * charset.h (MIN_EMCHAR_FIELD1_PRIVATE):
81 * charset.h (MIN_CHAR_OFFICIAL_TYPE9N):
82 * charset.h (BREAKUP_EMCHAR_1_UNSAFE):
83 * charset.h (BREAKUP_EMCHAR):
84 * chartab.c:
85 * chartab.c (char_table_entry_hash):
86 * chartab.c (decode_char_table_range):
87 * chartab.c (encode_char_table_range):
88 * chartab.c (struct ptemap):
89 * chartab.c (print_table_entry):
90 * chartab.c (print_char_table):
91 * chartab.c (char_table_equal):
92 * chartab.c (char_table_hash):
93 * chartab.c (set_char_table_default):
94 * chartab.c (fill_char_table):
95 * chartab.c (Freset_char_table):
96 * chartab.c (Fmake_char_table):
97 * chartab.c (get_non_ascii_char_table_value):
98 * chartab.c (Fchar_table_default):
99 * chartab.c (Fget_char_table):
100 * chartab.c (copy_mapper):
101 * chartab.c (copy_char_table_range):
102 * chartab.c (get_range_char_table):
103 * chartab.c (Fget_range_char_table):
104 * chartab.c (put_char_table):
105 * chartab.c (Fput_char_table):
106 * chartab.c (Fremove_char_table):
107 * chartab.c (map_over_charset_ascii_1):
108 * chartab.c (map_over_charset_control_1):
109 * chartab.c (map_over_charset_row):
110 * chartab.c (map_over_other_charset):
111 * chartab.c (map_char_table):
112 * chartab.c (slow_map_char_table_fun):
113 * chartab.c (Fmap_char_table):
114 * chartab.c (check_category_char):
115 * chartab.c (CATEGORY_SET):
116 * chartab.c (word_boundary_p):
117 * chartab.c (syms_of_chartab):
118 * chartab.h:
119 * chartab.h (struct Lisp_Char_Table):
120 * cmds.c:
121 * cmds.c (internal_self_insert):
122 * console-msw.h:
123 * console-stream.c (stream_clear_region):
124 * console-stream.c (stream_ring_bell):
125 * console-x.c (x_semi_canonicalize_console_connection):
126 * console.c (find_nonminibuffer_frame_not_on_console_predicate):
127 * console.h:
128 * data.c (eq_with_ebola_notice):
129 * data.c (Faref):
130 * data.c (Faset):
131 * device-msw.c (print_devmode):
132 * device.c (find_nonminibuffer_frame_not_on_device_predicate):
133 * device.h:
134 * device.h (struct pixel_to_glyph_translation_cache):
135 * dialog-msw.c (dialog_proc):
136 * dialog-x.c (maybe_run_dbox_text_callback):
137 * dired-msw.c:
138 * dired-msw.c (mswindows_get_files):
139 * dired.c:
140 * dired.c (Fdirectory_files):
141 * dired.c (file_name_completion):
142 * dired.c (user_name_completion):
143 * doc.c (unparesseuxify_doc_string):
144 * doprnt.c (emacs_doprnt_1):
145 * dumper.c:
146 * dumper.c (PDUMP_READ_ALIGNED):
147 * dumper.c (pdump_structure_size):
148 * dumper.c (pdump):
149 * dumper.c (pdump_load_finish):
150 * editfns.c:
151 * editfns.c (Fstring_to_char):
152 * editfns.c (Ftranslate_region):
153 * editfns.c (Fdelete_region):
154 * editfns.c (widen_buffer):
155 * editfns.c (Fnarrow_to_region):
156 * editfns.c (save_restriction_restore):
157 * elhash.c (print_hash_table_data):
158 * elhash.c (print_hash_table):
159 * elhash.c (Finternal_hash_value):
160 * emacs.c:
161 * emacs.c (main_1):
162 * emacs.c (standard_args):
163 * eval.c (print_subr):
164 * eval.c (Fuser_variable_p):
165 * eval.c (backtrace_specials):
166 * eval.c (Fbacktrace):
167 * event-Xt.c (USE_CHARSET):
168 * event-Xt.c (x_keysym_to_character):
169 * event-Xt.c (emacs_Xt_format_magic_event):
170 * event-gtk.c (emacs_gtk_format_magic_event):
171 * event-msw.c (mswindows_wnd_proc):
172 * event-msw.c (mswindows_find_frame):
173 * event-msw.c (FROB):
174 * event-msw.c (emacs_mswindows_format_magic_event):
175 * event-stream.c (external_debugging_print_event):
176 * event-stream.c (command_builder_find_leaf):
177 * event-stream.c (dribble_out_event):
178 * events.c (print_event_1):
179 * events.c (print_event):
180 * events.c (nth_of_key_sequence_as_event):
181 * events.c (Fevent_next):
182 * events.c (Fset_event_next):
183 * events.h:
184 * extents.c:
185 * extents.c (stack_of_extents):
186 * extents.c (memxpos_to_startind):
187 * extents.c (buffer_or_string_bytexpos_to_startind):
188 * extents.c (buffer_or_string_bytexpos_to_endind):
189 * extents.c (gap_array_adjust_markers):
190 * extents.c (gap_array_move_gap):
191 * extents.c (extent_list_locate_from_pos):
192 * extents.c (extent_list_at):
193 * extents.c (soe_dump):
194 * extents.c (soe_move):
195 * extents.c (extent_endpoint_byte):
196 * extents.c (extent_endpoint_char):
197 * extents.c (signal_single_extent_changed):
198 * extents.c (signal_extent_changed):
199 * extents.c (signal_extent_property_changed):
200 * extents.c (extent_attach):
201 * extents.c (extent_detach):
202 * extents.c (extent_in_region_p):
203 * extents.c (map_extents):
204 * extents.c (adjust_extents):
205 * extents.c (adjust_extents_for_deletion):
206 * extents.c (extent_find_end_of_run):
207 * extents.c (extent_find_beginning_of_run):
208 * extents.c (extent_fragment_update):
209 * extents.c (print_extent_1):
210 * extents.c (print_extent):
211 * extents.c (extent_remprop):
212 * extents.c (extent_endpoint_external):
213 * extents.c (Fextent_length):
214 * extents.c (Fnext_extent_change):
215 * extents.c (Fprevious_extent_change):
216 * extents.c (Fset_extent_parent):
217 * extents.c (set_extent_endpoints_1):
218 * extents.c (set_extent_endpoints):
219 * extents.c (set_extent_openness):
220 * extents.c (make_extent):
221 * extents.c (Fmake_extent):
222 * extents.c (Fset_extent_endpoints):
223 * extents.c (Fextent_in_region_p):
224 * extents.c (Fmap_extents):
225 * extents.c (struct slow_map_extent_children_arg):
226 * extents.c (slow_map_extent_children_function):
227 * extents.c (Fmap_extent_children):
228 * extents.c (struct extent_at_arg):
229 * extents.c (decode_extent_at_flag):
230 * extents.c (extent_at):
231 * extents.c (Fextent_at):
232 * extents.c (Fextents_at):
233 * extents.c (struct verify_extents_arg):
234 * extents.c (verify_extent_modification):
235 * extents.c (struct process_extents_for_insertion_arg):
236 * extents.c (process_extents_for_insertion_mapper):
237 * extents.c (process_extents_for_insertion):
238 * extents.c (struct process_extents_for_deletion_arg):
239 * extents.c (process_extents_for_deletion):
240 * extents.c (report_extent_modification_mapper):
241 * extents.c (report_extent_modification):
242 * extents.c (set_extent_invisible):
243 * extents.c (Fset_extent_face):
244 * extents.c (Fset_extent_mouse_face):
245 * extents.c (set_extent_glyph):
246 * extents.c (Fset_extent_begin_glyph_layout):
247 * extents.c (Fset_extent_end_glyph_layout):
248 * extents.c (Fset_extent_priority):
249 * extents.c (Fset_extent_property):
250 * extents.c (extent_properties):
251 * extents.c (ADD_PROP):
252 * extents.c (Fextent_properties):
253 * extents.c (do_highlight):
254 * extents.c (run_extent_copy_paste_internal):
255 * extents.c (run_extent_copy_function):
256 * extents.c (run_extent_paste_function):
257 * extents.c (run_extent_paste_function_char):
258 * extents.c (insert_extent):
259 * extents.c (struct add_string_extents_arg):
260 * extents.c (add_string_extents_mapper):
261 * extents.c (struct add_string_extents_the_hard_way_arg):
262 * extents.c (add_string_extents_the_hard_way_mapper):
263 * extents.c (add_string_extents):
264 * extents.c (struct splice_in_string_extents_arg):
265 * extents.c (splice_in_string_extents_mapper):
266 * extents.c (struct splice_in_string_extents_the_hard_way_arg):
267 * extents.c (splice_in_string_extents_the_hard_way_mapper):
268 * extents.c (splice_in_string_extents):
269 * extents.c (copy_string_extents_mapper):
270 * extents.c (copy_string_extents):
271 * extents.c (get_char_property):
272 * extents.c (get_char_property_char):
273 * extents.c (Fget_text_property):
274 * extents.c (Fget_char_property):
275 * extents.c (struct put_text_prop_arg):
276 * extents.c (put_text_prop_mapper):
277 * extents.c (put_text_prop_openness_mapper):
278 * extents.c (put_text_prop):
279 * extents.c (Fput_text_property):
280 * extents.c (Fadd_text_properties):
281 * extents.c (Fremove_text_properties):
282 * extents.c (next_single_property_change):
283 * extents.c (previous_single_property_change):
284 * extents.h:
285 * extents.h (struct extent):
286 * faces.c (print_face):
287 * faces.c (update_face_inheritance_mapper):
288 * faces.c (ensure_face_cachel_complete):
289 * faces.c (face_cachel_charset_font_metric_info):
290 * file-coding.c (print_coding_system):
291 * file-coding.c (print_coding_system_in_print_method):
292 * file-coding.c (chain_print):
293 * file-coding.c (no_conversion_convert):
294 * file-coding.c (undecided_print):
295 * file-coding.c (gzip_print):
296 * file-coding.h (DECLARE_CODING_SYSTEM_TYPE):
297 * file-coding.h (DECODE_ADD_BINARY_CHAR):
298 * fileio.c (Ffile_truename):
299 * fileio.c (expand_and_dir_to_file):
300 * fns.c (print_bit_vector):
301 * fns.c (Flength):
302 * fns.c (Fstring_lessp):
303 * fns.c (Fsplit_path):
304 * fns.c (Ffillarray):
305 * fns.c (Fbase64_encode_string):
306 * fns.c (Fbase64_decode_string):
307 * font-lock.c:
308 * font-lock.c (find_context):
309 * frame-gtk.c (gtk_set_frame_text_value):
310 * frame-msw.c (mswindows_get_mouse_position):
311 * frame-msw.c (mswindows_get_frame_parent):
312 * frame-x.c:
313 * frame-x.c (x_set_frame_text_value):
314 * frame.c:
315 * frame.c (allocate_frame_core):
316 * frame.c (Fignore_event):
317 * frame.h:
318 * glade.c (connector):
319 * glyphs-gtk.c:
320 * glyphs-gtk.c (convert_EImage_to_GDKImage):
321 * glyphs-gtk.c (gtk_print_image_instance):
322 * glyphs-gtk.c (gtk_locate_pixmap_file):
323 * glyphs-msw.c (mswindows_locate_pixmap_file):
324 * glyphs-msw.c (mswindows_print_image_instance):
325 * glyphs-msw.c (charset_of_text):
326 * glyphs-msw.h:
327 * glyphs-x.c (LISP_DEVICE_TO_X_SCREEN):
328 * glyphs-x.c (convert_EImage_to_XImage):
329 * glyphs-x.c (x_print_image_instance):
330 * glyphs-x.c (x_locate_pixmap_file):
331 * glyphs.c (check_instance_cache_mapper):
332 * glyphs.c (print_image_instance):
333 * glyphs.c (query_string_font):
334 * glyphs.c (check_valid_xbm_inline):
335 * glyphs.c (display_table_entry):
336 * glyphs.h:
337 * gui-msw.c (mswindows_handle_gui_wm_command):
338 * gui-x.c (mark_widget_value_mapper):
339 * gui-x.c (popup_selection_callback):
340 * gui.h:
341 * gutter.h (GUTTER_POS_LOOP):
342 * hash.h:
343 * indent.c:
344 * indent.c (column_at_point):
345 * indent.c (string_column_at_point):
346 * indent.c (byte_spaces_at_point):
347 * indent.c (Fcurrent_indentation):
348 * indent.c (Fmove_to_column):
349 * insdel.c (BYTE_BUF_GPT):
350 * insdel.c (SET_BYTE_BUF_GPT):
351 * insdel.c (SET_END_SENTINEL):
352 * insdel.c (set_buffer_point):
353 * insdel.c (gap_left):
354 * insdel.c (gap_right):
355 * insdel.c (move_gap):
356 * insdel.c (merge_gap_with_end_gap):
357 * insdel.c (make_gap):
358 * insdel.c (signal_before_change):
359 * insdel.c (signal_after_change):
360 * insdel.c (buffer_insert_string_1):
361 * insdel.c (buffer_delete_range):
362 * insdel.c (buffer_replace_char):
363 * insdel.c (make_string_from_buffer_1):
364 * insdel.c (init_buffer_text):
365 * intl-win32.c:
366 * intl-win32.c (Fmswindows_get_valid_code_pages):
367 * intl-win32.c (Fmswindows_get_console_code_page):
368 * intl-win32.c (Fmswindows_set_console_code_page):
369 * intl-win32.c (Fmswindows_get_console_output_code_page):
370 * intl-win32.c (Fmswindows_set_console_output_code_page):
371 * intl-win32.c (Fmswindows_get_code_page_charset):
372 * intl-win32.c (Fmswindows_get_valid_keyboard_layouts):
373 * intl-win32.c (Fmswindows_get_keyboard_layout):
374 * intl-win32.c (Fmswindows_set_keyboard_layout):
375 * intl-win32.c (mswindows_multibyte_to_unicode_print):
376 * intl.c:
377 * intl.c (Fignore_defer_gettext):
378 * keymap.c (print_keymap):
379 * keymap.c (keymap_lookup_directly):
380 * keymap.c (keymap_store):
381 * keymap.c (define_key_check_and_coerce_keysym):
382 * keymap.c (Fdefine_key):
383 * keymap.c (Flookup_key):
384 * keymap.c (map_keymap_mapper):
385 * keymap.c (Fkey_description):
386 * lisp-disunion.h:
387 * lisp-disunion.h (VALMASK):
388 * lisp-disunion.h (VOID_TO_LISP):
389 * lisp-union.h:
390 * lisp-union.h (union Lisp_Object):
391 * lisp-union.h (XPNTRVAL):
392 * lisp-union.h (XREALINT):
393 * lisp-union.h (INTP):
394 * lisp.h:
395 * lisp.h (DECLARE_POINTER_TYPE_ARITH_COUNT):
396 * lisp.h (MAX_ALIGN_SIZE):
397 * lisp.h (struct Lisp_String):
398 * lisp.h (set_lispstringp_length):
399 * lisp.h (XSET_STRING_LENGTH):
400 * lisp.h (FLEXIBLE_ARRAY_STRUCT_SIZEOF):
401 * lisp.h (SYMBOL_IS_KEYWORD):
402 * lread.c:
403 * lrecord.h:
404 * lrecord.h (DECLARE_LRECORD):
405 * lrecord.h (DECLARE_EXTERNAL_LRECORD):
406 * lrecord.h (DECLARE_NONRECORD):
407 * lstream.c (aligned_sizeof_lstream):
408 * lstream.c (Lstream_really_write):
409 * lstream.c (make_lisp_buffer_stream_1):
410 * lstream.c (make_lisp_buffer_input_stream):
411 * lstream.c (lisp_buffer_reader):
412 * lstream.c (lisp_buffer_writer):
413 * lstream.h:
414 * marker.c (print_marker):
415 * marker.c (byte_marker_position):
416 * marker.c (marker_position):
417 * marker.c (set_byte_marker_position):
418 * marker.c (set_marker_position):
419 * marker.c (Fbuffer_has_markers_at):
420 * menubar-gtk.c (__torn_off_sir):
421 * menubar-gtk.c (__activate_menu):
422 * menubar-gtk.c (__generic_button_callback):
423 * menubar-msw.c:
424 * menubar-x.c (pre_activate_callback):
425 * menubar-x.c (command_builder_operate_menu_accelerator):
426 * menubar-x.c (command_builder_find_menu_accelerator):
427 * menubar.c:
428 * menubar.c (Fnormalize_menu_item_name):
429 * minibuf.c:
430 * minibuf.c (Ftry_completion):
431 * minibuf.c (Fall_completions):
432 * minibuf.c (Fminibuffer_prompt):
433 * minibuf.c (Fminibuffer_prompt_width):
434 * minibuf.c (echo_area_append):
435 * mule-ccl.c:
436 * mule-ccl.c (CCL_WRITE_CHAR):
437 * mule-ccl.c (CCL_WRITE_STRING):
438 * mule-ccl.c (CCL_MAKE_CHAR):
439 * mule-ccl.c (ccl_driver):
440 * mule-charset.c (Fmake_charset):
441 * mule-charset.c (Fcharset_from_attributes):
442 * mule-coding.c (byte_shift_jis_two_byte_1_p):
443 * mule-coding.c (byte_shift_jis_two_byte_2_p):
444 * mule-coding.c (byte_shift_jis_katakana_p):
445 * mule-coding.c (shift_jis_convert):
446 * mule-coding.c (Fdecode_shift_jis_char):
447 * mule-coding.c (Fencode_shift_jis_char):
448 * mule-coding.c (byte_big5_two_byte_1_p):
449 * mule-coding.c (byte_big5_two_byte_2_p):
450 * mule-coding.c (big5_convert):
451 * mule-coding.c (decode_big5_char):
452 * mule-coding.c (Fencode_big5_char):
453 * mule-coding.c (charset_by_attributes_or_create_one):
454 * mule-coding.c (iso2022_decode):
455 * mule-coding.c (iso2022_encode):
456 * mule-coding.c (iso2022_print):
457 * mule-coding.c (iso2022_detect):
458 * mule-wnnfns.c (m2w):
459 * nas.c:
460 * objects-msw.c (mswindows_string_to_color):
461 * objects-msw.c (mswindows_font_spec_matches_charset):
462 * objects-x.c (x_font_instance_properties):
463 * opaque.c (aligned_sizeof_opaque):
464 * postgresql.c (print_pgconn):
465 * postgresql.c (print_pgresult):
466 * print.c:
467 * print.c (output_string):
468 * print.c (write_string_1):
469 * print.c (write_string):
470 * print.c (write_c_string):
471 * print.c (write_eistring):
472 * print.c (write_fmt_string):
473 * print.c (write_fmt_string_lisp):
474 * print.c (stderr_out_lisp):
475 * print.c (Fterpri):
476 * print.c (Fprint):
477 * print.c (print_error_message):
478 * print.c (print_vector_internal):
479 * print.c (print_cons):
480 * print.c (print_string):
481 * print.c (print_internal):
482 * print.c (print_float):
483 * print.c (print_symbol):
484 * process-nt.c (nt_create_process):
485 * process-unix.c (close_process_descs_mapfun):
486 * process.c (print_process):
487 * process.c (get_process_from_usid):
488 * process.c (Fstart_process_internal):
489 * process.c (status_message):
490 * process.c (status_notify):
491 * process.c (Fprocess_connection):
492 * process.c (getenv_internal):
493 * process.c (putenv_internal):
494 * process.h:
495 * profile.c (get_profiling_info_maphash):
496 * profile.c (mark_profiling_info_maphash):
497 * rangetab.c (print_range_table):
498 * rangetab.c (unified_range_table_copy_data):
499 * rangetab.c (align_the_damn_table):
500 * redisplay-gtk.c:
501 * redisplay-gtk.c (separate_textual_runs):
502 * redisplay-gtk.c (gtk_output_display_block):
503 * redisplay-msw.c (separate_textual_runs):
504 * redisplay-msw.c (mswindows_output_display_block):
505 * redisplay-output.c:
506 * redisplay-output.c (ADJ_CHARPOS):
507 * redisplay-output.c (redisplay_move_cursor):
508 * redisplay-output.c (redisplay_update_line):
509 * redisplay-x.c (separate_textual_runs):
510 * redisplay-x.c (x_output_display_block):
511 * redisplay.c:
512 * redisplay.c (position_redisplay_data_type):
513 * redisplay.c (struct prop_block):
514 * redisplay.c (generate_display_line):
515 * redisplay.c (add_hscroll_rune):
516 * redisplay.c (add_emchar_rune_1):
517 * redisplay.c (add_blank_rune):
518 * redisplay.c (add_octal_runes):
519 * redisplay.c (add_control_char_runes):
520 * redisplay.c (add_disp_table_entry_runes_1):
521 * redisplay.c (add_propagation_runes):
522 * redisplay.c (add_glyph_rune):
523 * redisplay.c (create_text_block):
524 * redisplay.c (add_margin_blank):
525 * redisplay.c (generate_modeline):
526 * redisplay.c (generate_fstring_runes):
527 * redisplay.c (create_string_text_block):
528 * redisplay.c (generate_string_display_line):
529 * redisplay.c (generate_displayable_area):
530 * redisplay.c (REGEN_INC_FIND_START_END):
531 * redisplay.c (regenerate_window_extents_only_changed):
532 * redisplay.c (regenerate_window_incrementally):
533 * redisplay.c (point_visible):
534 * redisplay.c (point_at_center):
535 * redisplay.c (update_internal_cache_list):
536 * redisplay.c (UPDATE_CACHE_RETURN):
537 * redisplay.c (pixel_to_glyph_translation):
538 * redisplay.h:
539 * redisplay.h (struct rune):
540 * redisplay.h (struct display_line):
541 * redisplay.h (struct extent_fragment):
542 * regex.c:
543 * regex.c (RE_TRANSLATE_1):
544 * regex.c (charptr_emchar):
545 * regex.c (INC_CHARPTR_FMT):
546 * regex.c (SYNTAX):
547 * regex.c (EXTEND_BUFFER):
548 * regex.c (regex_compile):
549 * regex.c (compile_range):
550 * regex.c (compile_extended_range):
551 * regex.c (re_compile_fastmap):
552 * regex.c (re_search):
553 * regex.c (re_search_2):
554 * regex.c (REGEX_PREFETCH):
555 * regex.c (WORDCHAR_P):
556 * regex.c (re_match):
557 * regex.c (re_match_2):
558 * regex.c (re_match_2_internal):
559 * regex.c (re_compile_pattern):
560 * regex.c (re_comp):
561 * regex.c (make-backup-files): Removed.
562 * regex.c (version-control): Removed.
563 * regex.c (trim-versions-without-asking): Removed.
564 * regex.c (End): Removed.
565 * regex.h:
566 * regex.h (RE_LISP_SHORT_CONTEXT_ARGS_DECL):
567 * scrollbar-msw.c (mswindows_free_scrollbar_instance):
568 * scrollbar-msw.c (mswindows_handle_scrollbar_event):
569 * scrollbar-msw.c (mswindows_handle_mousewheel_event):
570 * search.c:
571 * search.c (matcher_overflow):
572 * search.c (compile_pattern_1):
573 * search.c (compile_pattern):
574 * search.c (fixup_search_regs_for_buffer):
575 * search.c (looking_at_1):
576 * search.c (Fposix_looking_at):
577 * search.c (string_match_1):
578 * search.c (fast_string_match):
579 * search.c (byte_scan_buffer):
580 * search.c (scan_buffer):
581 * search.c (byte_find_next_newline_no_quit):
582 * search.c (byte_find_next_emchar_in_string):
583 * search.c (find_before_next_newline):
584 * search.c (skip_chars):
585 * search.c (search_command):
586 * search.c (trivial_regexp_p):
587 * search.c (search_buffer):
588 * search.c (simple_search):
589 * search.c (boyer_moore):
590 * search.c (set_search_regs):
591 * search.c (wordify):
592 * search.c (Freplace_match):
593 * search.c (match_limit):
594 * search.c (Fmatch_data):
595 * search.c (Fstore_match_data):
596 * select-x.c (hack_motif_clipboard_selection):
597 * select-x.c (Fx_store_cutbuffer_internal):
598 * specifier.c (print_specifier):
599 * specifier.c (aligned_sizeof_specifier):
600 * specifier.c (recompute_cached_specifier_everywhere_mapfun):
601 * specifier.h:
602 * specifier.h (DECLARE_SPECIFIER_TYPE):
603 * symbols.c (Fintern):
604 * symsinit.h:
605 * syntax.c:
606 * syntax.c (struct lisp_parse_state):
607 * syntax.c (find_defun_start):
608 * syntax.c (Fset_syntax_table):
609 * syntax.c (init_syntax_cache):
610 * syntax.c (update_syntax_cache):
611 * syntax.c (Fchar_syntax):
612 * syntax.c (charset_syntax):
613 * syntax.c (syntax_match):
614 * syntax.c (Fmatching_paren):
615 * syntax.c (WORD_BOUNDARY_P):
616 * syntax.c (scan_words):
617 * syntax.c (find_start_of_comment):
618 * syntax.c (find_end_of_comment):
619 * syntax.c (Fforward_comment):
620 * syntax.c (scan_lists):
621 * syntax.c (char_quoted):
622 * syntax.c (Fbackward_prefix_chars):
623 * syntax.c (scan_sexps_forward):
624 * syntax.c (Fparse_partial_sexp):
625 * syntax.c (copy_to_mirrortab):
626 * syntax.c (copy_if_not_already_present):
627 * syntax.c (update_just_this_syntax_table):
628 * syntax.c (update_syntax_table):
629 * syntax.c (syms_of_syntax):
630 * syntax.c (vars_of_syntax):
631 * syntax.c (complex_vars_of_syntax):
632 * syntax.h:
633 * syntax.h (SYNTAX_CODE):
634 * syntax.h (SYNTAX_FROM_CODE):
635 * syntax.h (SYNTAX_PREFIX):
636 * syntax.h (struct syntax_cache):
637 * syswindows.h:
638 * tests.c (Ftest_data_format_conversion):
639 * text.c:
640 * text.c (convert_emchar_string_into_malloced_string):
641 * text.c (COPY_TEXT_BETWEEN_FORMATS):
642 * text.c (copy_buffer_text_out):
643 * text.c (find_charsets_in_intbyte_string):
644 * text.c (find_charsets_in_emchar_string):
645 * text.c (intbyte_string_displayed_columns):
646 * text.c (emchar_string_displayed_columns):
647 * text.c (intbyte_string_nonascii_chars):
648 * text.c (eicpyout_malloc_fmt):
649 * text.c (skip_ascii):
650 * text.c (charcount_to_bytecount_fun):
651 * text.c (charbpos_to_bytebpos_func):
652 * text.c (bytebpos_to_charbpos_func):
653 * text.c (buffer_mule_signal_inserted_region):
654 * text.c (buffer_mule_signal_deleted_region):
655 * text.c (get_buffer_range_char):
656 * text.c (get_buffer_range_byte):
657 * text.c (get_string_pos_char):
658 * text.c (get_string_range_char):
659 * text.c (get_buffer_or_string_pos_char):
660 * text.c (get_buffer_or_string_pos_byte):
661 * text.c (get_buffer_or_string_range_char):
662 * text.c (get_buffer_or_string_range_byte):
663 * text.c (buffer_or_string_accessible_begin_char):
664 * text.c (buffer_or_string_accessible_end_char):
665 * text.c (buffer_or_string_accessible_begin_byte):
666 * text.c (buffer_or_string_accessible_end_byte):
667 * text.c (buffer_or_string_absolute_begin_char):
668 * text.c (buffer_or_string_absolute_end_char):
669 * text.c (buffer_or_string_absolute_begin_byte):
670 * text.c (buffer_or_string_absolute_end_byte):
671 * text.c (dfc_convert_to_external_format):
672 * text.c (dfc_convert_to_internal_format):
673 * text.c (non_ascii_set_charptr_emchar):
674 * text.c (non_ascii_charptr_emchar):
675 * text.c (non_ascii_valid_emchar_p):
676 * text.c (non_ascii_charptr_copy_emchar):
677 * text.c (Lstream_get_emchar_1):
678 * text.c (Fmake_char):
679 * text.c (Fchar_charset):
680 * text.c (Fchar_octet):
681 * text.c (Fsplit_char):
682 * text.c (lookup_composite_char):
683 * text.c (Fmake_composite_char):
684 * text.c (Fcomposite_char_string):
685 * text.h:
686 * text.h (rep_bytes_by_first_byte):
687 * text.h (byte_ascii_p):
688 * text.h (intbyte_leading_byte_p):
689 * text.h (emchar_multibyte_p):
690 * text.h (emchar_ascii_p):
691 * text.h (assert_valid_charptr):
692 * text.h (INC_CHARPTR):
693 * text.h (INC_CHARPTR_FMT):
694 * text.h (DEC_CHARPTR_FMT):
695 * text.h (VALIDATE_CHARPTR_BACKWARD):
696 * text.h (validate_intbyte_string_backward):
697 * text.h (simple_charptr_copy_emchar):
698 * text.h (charptr_emchar):
699 * text.h (valid_emchar_p):
700 * text.h (CHAR_INTP):
701 * text.h (eicpy_lstr):
702 * text.h (eicpy_raw_fmt):
703 * text.h (eicpy_raw):
704 * text.h (eicpy_rawz_fmt):
705 * text.h (eicpy_rawz):
706 * text.h (eicpyout_alloca):
707 * text.h (eicat_lstr):
708 * text.h (GET_STRERROR):
709 * tooltalk.c (tooltalk_message_callback):
710 * tooltalk.c (tooltalk_pattern_callback):
711 * ui-byhand.c (__generic_toolbar_callback):
712 * ui-byhand.c (__emacs_gtk_ctree_recurse_internal):
713 * ui-gtk.c (emacs_gtk_object_printer):
714 * ui-gtk.c (__internal_callback_destroy):
715 * ui-gtk.c (__internal_callback_marshal):
716 * ui-gtk.c (emacs_gtk_boxed_printer):
717 * ui-gtk.c (gtk_type_to_lisp):
718 * unicode.c (sledgehammer_check_from_table):
719 * unicode.c (sledgehammer_check_to_table):
720 * unicode.c (set_unicode_conversion):
721 * unicode.c (emchar_to_unicode):
722 * unicode.c (unicode_to_char):
723 * unicode.c (recalculate_unicode_precedence):
724 * unicode.c (Fchar_to_unicode):
725 * unicode.c (encode_unicode_char):
726 * unicode.c (unicode_convert):
727 * unicode.c (unicode_print):
728 * win32.c:
729 * win32.c (tstr_to_local_file_format):
730 * win32.c (mswindows_lisp_error_1):
731 * win32.c (Fmswindows_shell_execute):
732 * window.c (print_window):
733 * window.c (print_window_config):
734 * window.c (Fcurrent_pixel_column):
735
736 Another big Ben patch.
737
738 -- FUNCTIONALITY CHANGES:
739
740 add partial support for 8-bit-fixed, 16-bit-fixed, and
741 32-bit-fixed formats. not quite done yet. (in particular, needs
742 functions to actually convert the buffer.) NOTE: lots of changes
743 to regex.c here. also, many new *_fmt() inline funs that take an
744 Internal_Format argument.
745
746 redo syntax cache code. make the cache per-buffer; keep the cache
747 valid across calls to functions that use it. also keep it valid
748 across insertions/deletions and extent changes, as much as is
749 possible. eliminate the junky regex-reentrancy code by passing in
750 the relevant lisp info to the regex routines as local vars.
751
752 add general mechanism in extents code for signalling extent changes.
753
754 fix numerous problems with the case-table implementation; yoshiki
755 never properly transferred many algorithms from old-style to
756 new-style case tables.
757
758 redo char tables to support a default argument, so that mapping
759 only occurs over changed args. change many chartab functions to
760 accept Lisp_Object instead of Lisp_Char_Table *.
761
762 comment out the code in font-lock.c by default, because
763 font-lock.el no longer uses it. we should consider eliminating it
764 entirely.
765
766 Don't output bell as ^G in console-stream when not a TTY.
767
768 add -mswindows-termination-handle to interface with i.c, so we can
769 properly kill a build.
770
771 add more error-checking to buffer/string macros.
772
773 add some additional buffer_or_string_() funs.
774
775 -- INTERFACE CHANGES AFFECTING MORE CODE:
776
777 switch the arguments of write_c_string and friends to be
778 consistent with write_fmt_string, which must have printcharfun
779 first.
780
781 change BI_* macros to BYTE_* for increased clarity; similarly for
782 bi_* local vars.
783
784 change VOID_TO_LISP to be a one-argument function. eliminate
785 no-longer-needed CVOID_TO_LISP.
786
787 -- char/string macro changes:
788
789 rename MAKE_CHAR() to make_emchar() for slightly less confusion
790 with make_char(). (The former generates an Emchar, the latter a
791 Lisp object. Conceivably we should rename make_char() -> wrap_char()
792 and similarly for make_int(), make_float().)
793
794 Similar changes for other *CHAR* macros -- we now consistently use
795 names with `emchar' whenever we are working with Emchars. Any
796 remaining name with just `char' always refers to a Lisp object.
797
798 rename macros with XSTRING_* to string_* except for those that
799 reference actual fields in the Lisp_String object, following
800 conventions used elsewhere.
801
802 rename set_string_{data,length} macros (the only ones to work with
803 a Lisp_String_* instead of a Lisp_Object) to set_lispstringp_*
804 to make the difference clear.
805
806 try to be consistent about caps vs. lowercase in macro/inline-fun
807 names for chars and such, which wasn't the case before. we now
808 reserve caps either for XFOO_ macros that reference object fields
809 (e.g. XSTRING_DATA) or for things that have non-function semantics,
810 e.g. directly modifying an arg (BREAKUP_EMCHAR) or evaluating an
811 arg (any arg) more than once. otherwise, use lowercase.
812
813 here is a summary of most of the macros/inline funs changed by all
814 of the above changes:
815
816 BYTE_*_P -> byte_*_p
817 XSTRING_BYTE -> string_byte
818 set_string_data/length -> set_lispstringp_data/length
819 XSTRING_CHAR_LENGTH -> string_char_length
820 XSTRING_CHAR -> string_emchar
821 INTBYTE_FIRST_BYTE_P -> intbyte_first_byte_p
822 INTBYTE_LEADING_BYTE_P -> intbyte_leading_byte_p
823 charptr_copy_char -> charptr_copy_emchar
824 LEADING_BYTE_* -> leading_byte_*
825 CHAR_* -> EMCHAR_*
826 *_CHAR_* -> *_EMCHAR_*
827 *_CHAR -> *_EMCHAR
828 CHARSET_BY_ -> charset_by_*
829 BYTE_SHIFT_JIS* -> byte_shift_jis*
830 BYTE_BIG5* -> byte_big5*
831 REP_BYTES_BY_FIRST_BYTE -> rep_bytes_by_first_byte
832 char_to_unicode -> emchar_to_unicode
833 valid_char_p -> valid_emchar_p
834
835 Change intbyte_strcmp -> qxestrcmp_c (duplicated functionality).
836
837 -- INTERFACE CHANGES AFFECTING LESS CODE:
838
839 use DECLARE_INLINE_HEADER in various places.
840
841 remove '#ifdef emacs' from XEmacs-only files.
842
843 eliminate CHAR_TABLE_VALUE(), which duplicated the functionality
844 of get_char_table().
845
846 add BUFFER_TEXT_LOOP to simplify iterations over buffer text.
847
848 define typedefs for signed and unsigned types of fixed sizes
849 (INT_32_BIT, UINT_32_BIT, etc.).
850
851 create ALIGN_FOR_TYPE as a higher-level interface onto ALIGN_SIZE;
852 fix code to use it.
853
854 add charptr_emchar_len to return the text length of the character
855 pointed to by a ptr; use it in place of
856 charcount_to_bytecount(..., 1). add emchar_len to return the text
857 length of a given character.
858
859 add types Bytexpos and Charxpos to generalize Bytebpos/Bytecount
860 and Charbpos/Charcount, in code (particularly, the extents code
861 and redisplay code) that works with either kind of index. rename
862 redisplay struct params with names such as `charbpos' to
863 e.g. `charpos' when they are e.g. a Charxpos, not a Charbpos.
864
865 eliminate xxDEFUN in place of DEFUN; no longer necessary with
866 changes awhile back to doc.c.
867
868 split up big ugly combined list of EXFUNs in lisp.h on a
869 file-by-file basis, since other prototypes are similarly split.
870
871 rewrite some "*_UNSAFE" macros as inline funs and eliminate the
872 _UNSAFE suffix.
873
874 move most string code from lisp.h to text.h; the string code and
875 text.h code is now intertwined in such a fashion that they need
876 to be in the same place and partially interleaved. (you can't
877 create forward references for inline funs)
878
1 2002-04-30 Charles G. Waldman <cgw@xemacs.org> 879 2002-04-30 Charles G. Waldman <cgw@xemacs.org>
2 880
3 * sysdep.c (sys_siglist): change "signum" to "signal" 881 * sysdep.c (sys_siglist): change "signum" to "signal"
4 882
5 2002-04-24 Andy Piper <andy@xemacs.org> 883 2002-04-24 Andy Piper <andy@xemacs.org>