2025-06-11  Alan Mackenzie  <acm@muc.de>

	Enhance the handling of syntax-table properties.  This enables C-u
	C-x = (`what-cursor-position') to work on, for example,
	unterminated string delimiters in C Mode.

	* syntax.c (Fchar_syntax): Enhance to handle a cons as argument
	SYNTAX_TABLE, treating this as an internal syntax code.

2025-06-07  Aidan Kehoe  <kehoea@parhasard.net>

	* s/windowsnt.h (HAVE_SHLIB):
	Windows supports dynamic loading of shared libraries, always
	#define this.

2025-06-09  Aidan Kehoe  <kehoea@parhasard.net>

	* array.h (Stynarr_verify_pos):
	Work around buggy warnings with the GCC-15 optimizer in this
	function. See comment.

	* backtrace.h (PUSH_BACKTRACE):
	Silence a dangling pointer warning with GCC-15 in this macro. The
	entire point of the macro is storing a stack address in a global
	variable, there is no other way to address this.

	* compiler.h (PRAGMA_PUSH_DIAGNOSTICS): New.
	* compiler.h (PRAGMA_POP_DIAGNOSTICS): New.
	* compiler.h (PRAGMA_IGNORE_DANGLING_POINTER): New.
	* compiler.h (PRAGMA_IGNORE_DEPRECATED): New.
	Provide these macros on GCC and clang, expanding to DO_NOTHING on
	other compilers.

	* emacs.c (main_1): Correct a spelling here in passing.

	* event-Xt.c (x_reset_modifier_mapping):
	Use PRAGMA_IGNORE_DEPRECATED when calling XKeycodeToKeysym(),
	motivation already documented.

	* fontcolor-xlike-inc.c (XFUN (font_spec_matches_charset)):
	Remove some unused variables, quiet a GCC-15 compiler warning.
	
	* lisp.h:
	* lisp.h (XGCPRO1, XGCPRO2, XGCPRO3, XGCPRO4, XGCPRO4):
	Implement all these in terms of XGCPRON_ARRAY(), which is simpler.

	* lisp.h (XGCPRO1_ARRAY): Implement this as a do {} while (0)
	block rather than a statement with repeated commas, since the
	latter does not work with PRAGMA_{PUSH,POP}_DIAGNOSTICS() and
	PRAGMA_IGNORE_DANGLING_POINTER() on GCC.
	Use those pragmas, the entire point of these macros is storing a
	stack address in a global variable, there is no other way to
	address this.
	* lisp.h (XGCPRO2_ARRAY): Ditto.
	* lisp.h (XGCPRO3_ARRAY): Ditto.
	* lisp.h (XGCPRO4_ARRAY): New, ditto.
	* lisp.h (XGCPRO5_ARRAY): New, ditto.

	* lread.c (locate_file_map_suffixes):
	Use emacs_snprintf() within this function for the sake of its
	bounds checking and avoiding GCC-15 warnings about strncpy(), 
	* realpath.c (qxe_realpath):
	Use memcpy() rather than strncpy here. No need for a memset(),
	since the existing code does not handle strncpy() inserting
	nulls.
	* regex.c (EXTEND_BUFFER):
	Avoid use after free warnings regarding OLD_BUFFER here (which are
	only likely to be an issue with a developer-hostile and
	standards-obsessed optimizing compiler, since it is not
	dereferenced), make it a size_t, and calculate a delta once when
	adjusting BUF_END, BEGALT, FIXUP_ALT_JUMP, LASTSTART, PENDING_EXACT.

	* search.c (looking_at_1):
	Pass the buffer's syntax cache explicitly to re_match_2() here,
	which setup_syntax_cache() within regex.c was going to pass back
	anyway.
	* search.c (search_buffer):
	Ditto.
	* syntax.c (setup_syntax_cache):
	Never accept NULL as a CACHE argument, it must either be OBJECT's
	syntax cache when OBJECT is a buffer, or valid pointer
	otherwise.  Add an assertion regarding the former.
	* syntax.c (setup_buffer_syntax_cache):
	Pass BUFFER->SYNTAX_CACHE to setup_syntax_cache() rather than
	NULL, quiet a GCC-15 warning.
	* text.c (new_dfc_convert_malloc): Initialize DST to NULL, quiet a
	GCC-15 warning.

2025-06-05  Alan Mackenzie  <acm@muc.de>

	Purge the PACKAGE_SUPPRESS mechanism from XEmacs.

	* lread.c (Vload_suppress_alist): Removed.
	* lread.c (check_if_suppressed): Removed.
	* lread.c: (locate_file_in_directory_mapper): No longer call
	check_if_suppressed.

2025-06-04  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (static detection_state_description_stynarr
	detection_state_description): Remove the static initialization of
	this, which was buggy, let C put it in BSS as all zeroes.
	* file-coding.c (coding_system_type_create):
	Call Stynarr_init on detection_state_description, avoiding this
	bug. Add the XD_END entry here.

2025-06-03  Alan Mackenzie  <acm@muc.de>

	* regex.c (re_match_2_internal): Correct the updating of the
	syntax cache so that it is current for the characters actually
	being read and compared.  Done in case wordbound:, case wordend:,
	case symend:.

2025-06-03  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (initialize_detector_description):
	Correct an offset in the created description, make the generated
	description identical to that previous to 466eb98833cc .
	I am not managing to create a test case for this, frustratingly.

2025-06-02  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (look_for_coding_cookie_last_page):
	This function appears to cause intermittent crashes (with
	corruption of the stack) on GCC-15 with
	optimization. #ifdef 0 it for the moment.
	* file-coding.c (Ffind_coding_system_magic_cookie_in_file):
	#ifdef 0 a call to it here.
	* file-coding.c (determine_real_coding_system):
	Ditto.	

2025-06-01  Aidan Kehoe  <kehoea@parhasard.net>

	* Makefile.in.in: Suppress the touch(1) calls in the make output
	when XEmacs is built.

2025-06-01  Aidan Kehoe  <kehoea@parhasard.net>

	* emacs.c (main_1):
	Remove call to reinit_coding_system_type_create_mule_coding(), no
	longer needed.
	* file-coding.c (coding_detector_description_lines_count):
	Removed, no longer needed.

	* file-coding.c (static detection_state_description_stynarr
			 detection_state_description): New.
	* file-coding.c (static const struct sized_memory_description
			 detection_state_description_elt_description): New.
	* file-coding.c (static const struct sized_memory_description
			 memory_description_dynarr_description): New.
	* file-coding.c (initialize_detector_description): New, now a C
	function rather than a macro in file-coding.h, with (currently
	theoretical) handling for detectors from modules.

	* file-coding.c (detection_state_description): This is now a
	Stynarr that is dumped and doesn't need any post pdump_load()
	initialization.
	* file-coding.c (syms_of_file_coding):
	Use detection_state_description.els_static for the memory
	description of struct detection_state.
	* file-coding.c (coding_system_type_create):
	Dump detection_state_description using its new memory
	description.

	* file-coding.h (DETECTOR_DESCRIPTION_OFFSET): Removed, now
	incorporated into initialize_detector_description().
	* file-coding.h: Remove declarations for
	coding_detector_description_lines_count,
	detection_state_description, no longer needed.
	* file-coding.h (INITIALIZE_DETECTOR_WITH_DESCRIPTION):
	Call initialize_detector_description() here rather than using a
	macro.
	* mule-coding.c (reinit_coding_system_type_create_mule_coding):
	Removed, no longer needed.
	* symsinit.h:
	Remove its declaration.

2025-05-26  Aidan Kehoe  <kehoea@parhasard.net>

	Remove support for static linking of postgresql, canna and ldap
	into the XEmacs binary if !HAVE_SHLIB, since that is very rare
	these days, the relevant code is not regularly tested, and it
	complicates development of the code generally.

	* Makefile.in.in:
	* Makefile.in.in (ldap_objs): Removed.
	* Makefile.in.in (mule_canna_objs): Removed.
	* Makefile.in.in (postgresql_objs): Removed.
	* Makefile.in.in (shlib_objs): Add emodules.o to this for
	consistency, avoid linking it into temacs if !HAVE_SHLIB.
	* Makefile.in.in (objs): Update this to no longer reference
	$ldap_objs and friends.
	* emacs.c (main_1):
	No longer call syms_of_canna_api(), syms_of_eldap(),
	syms_of_postgresql(), vars_of_canna_api(), vars_of_eldap(),
	vars_of_postgresql(), init_postgresql_from_environment().
	* emodules.c:
	Remove an #ifdef HAVE_SHLIB ... #endif from this file, now
	addressed in Makefile.in.in.
	* emodules.c (make_module):
	Change the name of an argument that shadows a global in this in
	passing, suppress a compiler warning.
	* inline.c:
	Remove code that checked whether ldap, postgresql were being
	linked into temacs, no longer supported.
	* lrecord.h (enum lrecord_type):
	Ditto.

2025-05-25  Aidan Kehoe  <kehoea@parhasard.net>

	Fix crashes after unloading modules, by keeping note of those
	subrs and DEFVAR_() created by each module in a weak list, and
	setting what had been pointers into the data segment of the
	unloaded module to values that will not crash XEmacs after
	unload.
	To this end, struct Lisp_Module becomes a full, new Lisp_Object;
	the list of loaded modules becomes just a Lisp list.
	Revise emodules_load() to use emacs_snprintf() rather than the
	prone-to-buffer-overruns strcpy(), strcat().

	* .gdbinit.in.in (lrecord_type_module): Add an entry for this.
	* alloc.c:
	* alloc.c (define_lisp_object):
	Change the LOADHIST_ATTACH() here to store the lrecord_type as an
	integer, avoiding (theoretical) issues with duplicate names.

	* emodules.c:
	* emodules.c (struct Lisp_Module):
	* emodules.c (make_module):
	* emodules.c (find_module):
	* emodules.c (add_module_loadhist_elt): New.
	* emodules.c (static Fixnum deadbeef_constant): New.
	* emodules.c (static Boolint deadbeef_boolint): New.
	* emodules.c (attempt_module_delete):
	* emodules.c (module_load_unwind):
	* emodules.c (emodules_load):
	* emodules.c (emodules_doc):
	* emodules.c (Fload_module):
	* emodules.c (Funload_module):
	* emodules.c (Flist_modules):
	* emodules.c (syms_of_module):
	* emodules.c (vars_of_module):
	Extensive changes as above. Reformat comments to fit with the rest
	of the C code.

	* lisp.h:
	Make Qfile_system_ignore_case_p available here, now it is used in
	emodules.c.
	Remove unloading_module, no longer used.
	Declare emodules_depth, add_module_loadhist_elt() here, now used
	in LOADHIST_ATTACH().
	* lisp.h (LOADHIST_ATTACH):
	Call add_module_loadhist_elt() if currently loading a module.
	* lrecord.h (enum lrecord_type):
	Add an entry for lrecord_type_module.
	* symbols.c (symbol_is_constant):
	Change the return type of this to be Boolint.
	* symbols.c (reject_constant_symbols):
	Revise this to avoid rejection of non-dumped SYMBOL_VALUE_MAGIC
	objects, a simpler way of allowing making variables from modules
	unbound while rejecting dumped SYMBOL_VALUE_MAGIC objects.
	* symbols.c (Fset):
	Delegate freeing the lcrecords to emodules.c.
	* symbols.c (defsymbol_massage_name_1):
	Do a LOADHIST_ATTACH if calling this function after dumping, which
	indicates we are being called from a module.
	* symbols.c (defsymbol_nodump):
	Ditto.
	* symbols.c (defsymbol):
	No longer call make_string_nocopy() here, that added no value.
	* symbols.c (defsubr_1):
	* symbols.c (defsubr):
	Move LOADHIST_ATTACH to this and to the following from
	defsubr_1().
	* symbols.c (defsubr_macro):

2025-05-25  Aidan Kehoe  <kehoea@parhasard.net>

	* emodules.c (Qmodule_string_coding_system): New variable, a
	coding system reflecting the encoding of symbol names and
	docstrings in the module currently being loaded.
	* emodules.c (module_load_unwind_coding): unwind-protect function
	to reset this on failure of loading the current module.
	* emodules.c (emodules_load):
	Check for emodule_coding as a symbol, error and fail on loading a
	module if this is not encountered.
	Set up the unwind-protect.
	Define a coding system alias reflecting the encountered
	emodule_coding.
	* emodules.c (emodules_doc):
	* emodules.c (emodules_doc_subr):
	* emodules.c (emodules_doc_sym):
	No longer taken an explicit CODING_SYSTEM_NAME argument in these
	functions.
	* emodules.c (syms_of_module):
	Do a DEFSYMBOL() for Qmodule_string_coding_system.
	* emodules.h:
	Update declaration of emodules_doc_subr(), emodules_doc_sym().
	* lisp.h:
	Make Qmodule_string_coding_system available here.
	* symbols.c (defsubr_1):
	Use it.
	* symbols.c (defvar_magic):
	Use it.
	* text.h:
	Remove the old Qemodule_string_encoding here.

2025-05-25  Aidan Kehoe  <kehoea@parhasard.net>

	* symeval.h (XSYMBOL_VALUE_FORWARD_OBJECT_MAGICFUN):
	Correct a typo in this macro.

2025-05-25  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (hash_table_test_validate):
	* elhash.c (decode_hash_table_test):
	* elhash.c (Fdefine_hash_table_test):
	* elhash.c (Fvalid_hash_table_test_p):
	* elhash.c (vars_of_elhash):
	Use assq_no_quit() here when dealing with elements of
	Vhash_table_test_weak_list in passing, since we know that is a
	valid internal-format list.
	* eval.c (Fmacroexpand):
	Call FassocX here, now Fassoc no longer available.
	* fontcolor-msw.c (font_enum_callback_2):
	Call assoc_no_quit() here, since we know font_enum->list is a
	valid internal-format list.
	* glyphs-gtk.c:
	* glyphs-gtk.c (cursor_name_to_index):
	Call Fassq() here, since we're looking for a symbol. Check the
	type of the result before calling Fcdr(), XFIXNUM().
	* lisp.h:
	Remove declaration for Fassoc() here. Add declaration for FassocX().
	* lread.c (Fload_internal):
	Use the implementation of Fassoc() when examining Vafter_load_alist.
	* select.c (Fselection_owner_p):
	We know Vselection_alist is a valid internal-format list, use
	assq_no_quit() when examining it.
	* sequence.c (Fassoc): Move to subr.el.
	* sequence.c (syms_of_sequence): Remove its DEFSUBR().

2025-05-24  Alan Mackenzie  <acm@muc.de>

	Make "\\_<" and "\\_>" work in regexp buffer searches.

	* search.c (trivial_regexp_p):
	Recognize "\\_" as a non-trivial sequence, so that C-M-s won't
	move to the next literal "_" with it.

2025-05-24  Aidan Kehoe  <kehoea@parhasard.net>

	* callint.c (Finteractive):
	Document the result of byte-compiling a list form here, too,
	already done in the docstring for
	#'compiled-function-interactive.

2025-05-19  Alan Mackenzie  <acm@muc.de>

	Prevent scan_sexps_forward interpreting very large argument as -1.

	* src/syntax.c (scan_sexps_forward):
	Change the type of parameter TARGETDEPTH from int to EMACS_INT
	so that the default argument from Fparse_partial_sexp,
	MOST_NEGATIVE_FIXNUM - 1, won't be wrongly converted to -1.

2025-05-19  Aidan Kehoe  <kehoea@parhasard.net>

	* Makefile.in.in:
	* Makefile.in.in ($(RAW_EXE)):
	NetBSD dd(1) does not do what Linux and friends do with seek=N
	count=0 where N is greater than the current file size, make sure
	that at least one byte is written, fixing the NetBSD build. Thank
	you Hauke Fath!

2025-05-12  Aidan Kehoe  <kehoea@parhasard.net>

	Sigh, I had known but did not document that making a separate rule
	for dump-data.o in Makefile.in.in failed with -flto, and so my
	last change provokes that failure. Revert the separate rule,
	incorporate it into the rule for temacs, document it this time
	around. 

	* Makefile.in.in (dump-data.o): Removed.
	* Makefile.in.in: Remove its entry in otherobjs.
	* Makefile.in.in ($(RAW_EXE)): Build it without an explicit rule
	when building temacs.

	* Makefile.in.in ($(PROGNAME)): Build dump-data.o without an
	explicit rule when building xemacs.

2025-05-11  Aidan Kehoe  <kehoea@parhasard.net>

	Correct dependency checks --with-dump-in-exec, avoid make(1)
	rebuilding temacs and xemacs all the time for no reason.

	* Makefile.in.in:
	* Makefile.in.in ($(LIB_SRC)/make-dump-id): Make this dependent on
	$(LIB_SRC)/make-dump-id.c so the recursive make is not called all
	the time.
	* Makefile.in.in (dump-data.o): New. Explicit rule for this,
	rather than subsuming it into that for $(RAW_EXE).
	* Makefile.in.in (@DUMP_FILE_NAME@): Explicit rule for this when
	DUMP_IN_EXEC, dependent on $(RAW_EXE), $(BLDSRC)/NEEDTODUMP,
	$(LIB_SRC)/DOC.
	* Makefile.in.in (dump-size): New. Explicit rule for this, with a
	dependency on @DUMP_FILE_NAME@.
	* Makefile.in.in (dump-size-correct): New. Rule that succeeds if
	the size of the dump file known at the time temacs was built is
	the same as the current dump file.
	* Makefile.in.in ($(PROGNAME)): New. Dependent on
	dump-size-correct, rebuilds dump-data.o and links the object files
	in the same way as for temacs, then mungs modification times with
	touch(1) to avoid needless rebuilding.
	* Makefile.in.in (mostlyclean):
	Add temacs-dump-size, dump-size-correct to the files removed here.
	* emacs.c:
	* emacs.c (Femacs_run_status):
	New entry to the plist returned, Qdump_in_exec, allowing
	update-elc.el to work out which file to check for dependency
	correctly.
	* emacs.c (syms_of_emacs):
	Call DEFSYMBOL() on Qdump_in_exec.
	* s/win32-native.h (DUMP_IN_EXEC):
	Document that we always dump into the exec file on windows native,
	for the sake of Femacs_run_status().

2025-05-10  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c:
	* file-coding.c (LENGTH):
	Cast the result of this macro to Bytecount, which works better
	with new uses in this file and is reasonable in the general
	sense.
	* file-coding.c (look_for_coding_cookie_first_page): New, more
	accurate, name for look_for_coding_system_magic_cookie().
	* file-coding.c (look_for_coding_cookie_last_page): New. Examine
	any Local variables: blocks at the end of the file for a coding
	cookie.
	* file-coding.c (Ffind_coding_system_magic_cookie_in_file):
	Revise docstring extensively.
	Revise to use look_for_coding_cookie_last_page() in addition to
	examining the beginning of a file for a coding cookie.
	* file-coding.c (determine_real_coding_system):
	Use look_for_coding_cookie_last_page here.
	* file-coding.c (undecided_decode):
	Use look_for_coding_cookie_first_page()'s new name here. Don't
	call look_for_coding_cookie_last_page(), this is not a seekable
	stream.

2025-05-10  Aidan Kehoe  <kehoea@parhasard.net>

	Clean-ups of file-coding.c and fileio.c in anticipation of
	supporting coding cookies on the last page.
	1. Make Vdebug_coding_detection into a Boolint called
	debug_coding_detection, and declare the related Lisp-visible
	variable with DEFVAR_BOOL.
	2. Add debug_out_no_conversion, which uses
	write_external_fmt_string_va() with Qno_conversion to deal with
	non-internal format text.
	3. Remove QScoding_system_cookie, no longer used.
	4. Fix some indentation in coding_system_methods_description_1.
	5. Correct a docstring for the Qconvert_eol_crlf coding system.
	6. Fix a couple of calls to debug_out_lisp() that used the old
	(pre e0c08299251d8ce9 ) convention of supplying NARGS, only used
	when Vdebug_coding_detection was non-nil. 
	* file-coding.c: Change the type, name of
	Vdebug_coding_detection.
	* file-coding.c (debug_out_no_conversion): New function.
	* file-coding.c (DEBUG_DETECTION): New macro.
	* file-coding.c (detect_coding_type): Use it.
	* file-coding.c (Fset_coding_priority_list): Use the new name for
	debug_coding_detection.
	* fileio.c (Fwrite_region_internal): Correct calls to
	debug_out_lisp(). Use the new name for debug_coding_detection.
	* fileio.c (Finsert_file_contents_internal): Ditto.
	* file-coding.h:
	Update declaration of debug_coding_detection.

2025-05-10  Aidan Kehoe  <kehoea@parhasard.net>

	Add a seek_from_end() Lstream method, needed in the bowels of
	coding detection to allow examination of coding cookies on the
	last page.

	* lstream.c:
	Add an entry for the method to the lstream implementation memory
	description.
	* lstream.c (Lstream_seek_from_end): New. Call the seek_from_end()
	method on an Lstream, returning 1 if successful, 0 otherwise.
	* lstream.c (stdio_seek_from_end): New. Implement this method for
	stdio streams.

	* lstream.c (struct filedesc_stream): Change the types of
	STARTING_POS, CURRENT_POS, END_POS to OFF_T in passing. Previous
	type was int, also signed, and they do not escape from outside
	this file, so unlikely to have any effect beyond supporting large
	values for the OFFSET arg to make_filedesc_stream_1().

	* lstream.c (filedesc_seek_from_end): New. Implement this method
	for filedesc streams.
	* lstream.c (vars_of_lstream): Document that the implementations
	have these methods.
	* lstream.h:
	Update comment.
	* lstream.h (lstream_implementation):
	Add a slot for the seek_from_end() method.
	Declare Lstream_seek_from_end().

2025-05-07  Aidan Kehoe  <kehoea@parhasard.net>

	Add support for \_<, \_> to regex.c, anchoring at a symbol begin
	and a symbol end. Thank you Alan Mackenzie.

	* regex.c (Ssymbol): New syntax code for the non-emacs
	compilation. 
	* regex.c (init_syntax_once):
	Initialize re_syntax_table using it in the same way as for Sword.

	* regex.c (enum):
	New values, symbeg, symend.
	* regex.c (print_partial_compiled_pattern):
	Print them.
	* regex.c (optimize_on_failure_jump):
	Basic handling for them in this function; support for them still
	to be added to mutually_exclusive_p().
	* regex.c (regex_compile):
	Interpret \_<, \_> them in the pattern to be compiled.
	* regex.c (re_compile_fastmap):
	Handle them in the same way as wordbeg, wordend here (although
	this is unsatisfactory).
	* regex.c (re_match_2_internal):
	Implement them when matching, logic the same as that of GNU.
	* regex.c (common_op_match_null_string_p):
	Handle them the same as wordbeg, wordend here; they are
	zero-length assertions so they can match the null string.

2025-05-04  Aidan Kehoe  <kehoea@parhasard.net>

	Maintenance on elhash.c.
	1. Calling check_hash_table_invariants() on every XHASH_TABLE()
	with ERROR_CHECK_STRUCTURES defined is unreasonably expensive for
	use of the hash tables from C. Turn this off unless a new
	SLEDGEHAMMER_CHECK_HASH_TABLES constant is defined.
	2. Update the hash_table_equal_function_t typedef to describe a
	function returning a Boolint.
	3. Fix some indentation, remove an enum that is no longer used,
	elhash.h.
	* elhash.c (check_hash_table_invariants):
	Wrap in a new #define.
	* elhash.c (lisp_object_eql_equal): Update type for this.
	* elhash.c (lisp_object_equal_equal): Ditto.
	* elhash.c (lisp_object_equalp_equal): Ditto.
	* elhash.c (lisp_object_general_equal): Ditto.
	* elhash.c (xhash_table): Wrap with
	SLEDGEHAMMER_CHECK_HASH_TABLES. No longer check for gc_in_progress
	which never made any sense. #define XHASH_TABLE to xhash_table if
	SLEDGEHAMMER_CHECK_HASH_TABLES is #defined.
	* elhash.c (Fcopy_hash_table):
	Use CHECK_HASH_TABLE() + XHASH_TABLE() rather than xhash_table()
	here.
	* elhash.c (pdump_reorganize_hash_table):
	Use XHASH_TABLE() rather than xhash_table() here.
	* elhash.c (Fgethash):
	Use CHECK_HASH_TABLE() + XHASH_TABLE() rather than xhash_table()
	here.
	* elhash.c (Fputhash):
	* elhash.c (Fremhash):
	* elhash.c (Fclrhash):
	* elhash.c (Fhash_table_count):
	* elhash.c (Fhash_table_size):
	* elhash.c (Fhash_table_rehash_size):
	* elhash.c (Fhash_table_rehash_threshold):
	* elhash.c (Fhash_table_weakness):
	* elhash.c (Fhash_table_type):
	* elhash.c (Fmaphash):
	* elhash.c (elisp_maphash_unsafe):
	* elhash.c (elisp_maphash):
	* elhash.c (elisp_map_remhash):
	Ditto for all the above functions.
	* elhash.h:
	Minor changes here.
	* gccache-x.c (gc_cache_eql): Update type here. 
	* glyphs.c (instantiator_eq_equal): Update type here.

2025-05-03  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c:
	* elhash.c (HASHCODE): Modify this to compare HTTP against
	Veq_hash_table_test, rather than HT->test, needed for other
	changes today.
	* elhash.c (LINEAR_PROBING_LOOP):
	* elhash.c (KEYS_EQUAL_P): Removed. More appropriate to do the
	constant comparison to Veq_hash_table_test outside of the loops
	this is called from.
	* elhash.c (choose_hash_table_test_for_lookup): New.
	Do the type-based optimization of comparisons that sequence.c has
	done for years now, attempting to use Veq_hash_table_test for
	lookup depending on the type of KEY.
	* elhash.c (find_htentry): Use it.

2025-04-27  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (PARSE_KEYWORDS_EXPAND): New. Just expand to its
	argument, used in working around an MSVC bug in processing
	__VA_ARGS__.
	* lisp.h (PARSE_KEYWORDS_ARGC): Use it, get recent changes working
	under MSVC.

2025-04-28  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (decode_mode_spec):
	Handle the %t spec properly once more, despite that it is now
	usually irrelevant.

2025-04-26  Aidan Kehoe  <kehoea@parhasard.net>

	New macros, SET_C_READONLY(), CLEAR_C_READONLY(), encapsulate
	access to an object's lrecord_header.
	* lrecord.h (SET_C_READONLY): New. Call
	SET_C_READONLY_RECORD_HEADER() on the header of a Lisp_Object.
	* lrecord.h (CLEAR_C_READONLY): New, for symmetry. Call
	CLEAR_C_READONLY_RECORD_HEADER on the header of a Lisp_Object.
	* lrecord.h (SET_LISP_READONLY_RECORD_HEADER) Move this a little
	later for clarity.
	* alloc.c (old_alloc_sized_lcrecord_1):
	Use SET_C_READONLY().
	* alloc.c (make_string_nocopy): Ditto.
	No need for SET_LISP_READONLY(), that is implicit in
	SET_C_READONLY().
	* alloc.c (mark_subrs_readonly):
	Use SET_C_READONLY().
	* opaque.c (init_opaque_once_early):
	Ditto.

2025-04-26  Aidan Kehoe  <kehoea@parhasard.net>

	* backtrace.h (SPECBIND):
	* backtrace.h (SPECBIND_FAST_UNSAFE):
	* backtrace.h (FSET_FAST_UNSAFE):
	(!SYMBOL_VALUE_MAGIC_P (X) || UNBOUNDP (X)) is now equivalent to
	!SYMBOL_VALUE_MAGIC_P(X), make this change in these macros, missed
	in 71db57be985b.
	* lisp.h (UNBOUNDP): Update documentation of this and Qunbound.
	* opaque.c:
	Remove declaration of Vopaque_ptr_free_list, no longer needed.
	* opaque.c (init_opaque_once_early):

	Set Qunbound as C-readonly, so it is not traced for GC, important
	for the many symbols that are #'fboundp and not #'boundp or
	vice-versa.
	Make the dumper aware of it but do not add it to STATICPROS.
	Both these things were the case pre-71db57be985b.
	Since it is now heap data it does now need a staticpro_nodump(),
	do this.
	* symbols.c:
	Correct comments here.

2025-04-26  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	Update the documentation regarding the (ongoing) need to GCPRO all
	strings, and the need to re-fetch the string data after every call
	to Lisp.
	
2025-04-26  Aidan Kehoe  <kehoea@parhasard.net>

	* callint.c (Finteractive):
	Update the documentation of the Lisp expression equivalent to the
	?c code letter in the documentation of this.

2025-04-26  Aidan Kehoe  <kehoea@parhasard.net>

	* xemacs.def.in.in:
	Update this file to reflect recent changes, get the C-only build
	working on Cygwin (the C++ build still fails regarding symbols in
	terminfo, still working on working around this).

2025-04-22  Aidan Kehoe  <kehoea@parhasard.net>

	* dumper.c (pdump):
	1. GCPRO Vstaticpros_nodump_block_offsets, motivation is the same
	as that for Vstaticpros_hash.
	2. Move the alert giving the undumpable types list after
	STATICPROS has been processed, given the bulk of Lisp_Objects are
	now reached from there.

2025-04-21  Aidan Kehoe  <kehoea@parhasard.net>

	REINITIALIZE_DETECTOR_WITH_DESCRIPTION() needs to be done post
	pdump_load(), restore that.
	* emacs.c (main_1):
	Call reinit_coding_system_type_create_mule_coding() once more.
	* file-coding.c (coding_system_type_create):
	Document that I would like to dump_add_root_block
	(detection_state_description ...).
	* mule-coding.c:
	* mule-coding.c (reinit_coding_system_type_create_mule_coding):
	Restore this.
	* symsinit.h:
	Restore its declaration.

2025-04-20  Aidan Kehoe  <kehoea@parhasard.net>

	* lstream.c (vars_of_lstream):
	Certain C implementations are anal about the restrictions on the
	complexity of initialization of static variables, even when those
	static variables have function scope. Work around that in this
	function, thank you Mats Lidell and the buildbot.

2025-04-20  Aidan Kehoe  <kehoea@parhasard.net>

	My first commit of the support for heap staticpros was buggy, fix
	that.
	* lrecord.h:
	* lrecord.h (enum memory_description_type):
	New entry, XD_BLOCK_OFFSET_PTR, needed to properly support
	staticpro() on the heap. Describes a pointer to an offset into a
	block, which block has been encountered elsewhere and so does not
	need to be dumped.
	* alloc.c (staticpro): Update and correct comments regarding
	staticpro() and heap objects.
	* dumper.c:
	Correct documentation of the process for working out if addresses
	in STATICPROS are in the heap.
	* dumper.c (static int pdump_min_shuffle_depth): New. Depth
	threshold checked at the registration stage to allow decisions to
	be made about whether pointers encountered should be moved from
	STATICPROS to STATICPROS_NODUMP.
	* dumper.c (shuffle_staticpros_if_needed):
	Respect it. Use find_htentry() rather than Fgethash() for reasons
	of speed.
	Take the offset within the current block as an argument, to allow
	the block to be found and to avoid dumping another block.
	* dumper.c (pdump_register_sub):
	Pass the offset of the current Lisp_Object to
	shuffle_staticpros_if_needed(). Handle XD_BLOCK_OFFSET_PTR.
	* dumper.c (pdump_store_new_pointer_offsets):
	Handle XD_BLOCK_OFFSET_PTR here, pull the offset saved from
	Vstaticpros_nodump_block_offsets, find the corresponding block,
	and store the save_offset of the block plus the offset from the
	hash table as *RDATA.
	* dumper.c (pdump_reloc_one):
	Handle XD_BLOCK_OFFSET_PTR in the same way as XD_BLOCK_PTR here.
	* dumper.c (pdump):
	Initialize Vstaticpros_nodump_block_offsets as a hash table.  Set
	pdump_min_shuffle_depth appropriately to limit shuffling from
	STATICPROS to STATICPROS_NODUMP, for root blocks and for
	STATICPRO, STATICPRO_NODUMP.
	* gc.c (lispdesc_one_description_line_size):
	* gc.c (kkcc_marking): 
	Handle XD_BLOCK_OFFSET_PTR in the same way as XD_BLOCK_PTR, not
	that it will come up.

2025-04-19  Aidan Kehoe  <kehoea@parhasard.net>

	Remove the qsort() of STATICPROS of the last commit, it slows down
	the GC slightly, the loss of speed at pdump() time doesn't matter,
	and less code is more maintainable than more code.
	Update some comments related to that.

	Update a comment here.
	* alloc.c (compare_staticpros): Removed, no longer needed.
	* dumper.c:
	* dumper.c (pdump_load_lispdesc_indirect_description):
	Update a comment for this.
	* dumper.c (pdump):
	Remove the qsort(). Update some comments.
	* lrecord.h:
	Correct a comment here in passing.

2025-04-19  Aidan Kehoe  <kehoea@parhasard.net>

	Handle heap addresses known to the dumper when these are passed to
	staticpro().
	Remove several functions and macros that only existed to work
	around the fact that staticpro() couldn't deal with heap
	addresses.

	* alloc.c (static const struct sized_memory_description
	staticpro_description): Moved to dumper.c.
	* alloc.c (static const struct sized_memory_description
	staticpros_description): Moved to dumper.c.
	* alloc.c (staticpro): Update a comment describing this.
	* alloc.c (staticpro_nodump): Update a comment describing this.	
	* alloc.c (common_init_alloc_early): Move initialization of
	staticpros_nodump from here to init_alloc_once_early().
	* alloc.c (init_alloc_once_early):

	* console-gtk.c:
	* console-gtk.c (reinit_console_type_create_gtk): Removed, no
	longer needed. Add a comment to mark end of file.

	* console-impl.h:
	* console-impl.h (INITIALIZE_CONSOLE_TYPE): Use defsymbol() rather
	than defsymbol_nodump() here.
	* console-impl.h (REINITIALIZE_CONSOLE_TYPE): Removed, no longer
	needed.

	* console-msw.c (reinit_console_type_create_mswindows): Removed,
	no longer needed.

	* console-tty.c (reinit_console_type_create_stream): Removed, no
	longer needed.
	* console-x.c (reinit_console_type_create_tty): Ditto.

	* dumper.c: Update copyright.
	* dumper.c (static const struct sized_memory_description
	staticpro_description):
	* dumper.c (static const struct sized_memory_description
	staticpros_description): Move these here from alloc.c.
	* dumper.c (static const struct sized_memory_description
	staticpro_nodump_description): New. 
	* dumper.c (static const struct sized_memory_description
	staticpros_nodump_description): New. Used for dumping
	STATICPROS_NODUMP, which reflects those heap entries in
	STATICPROS.
	Lengthy comments on both.
	* dumper.c (pdump_backtrace):
	Fix a format string in passing.
	* dumper.c (Vstaticpros_hash): New. A Lisp hash table used at dump
	time to check whether the addresses of heap Lisp_Objects are in
	STATICPROS.
	* dumper.c (compare_staticpros): New. Used to sort STATICPROS at
	dump time, which will make partitioning easier.
	* dumper.c (shuffle_staticpros_if_needed): New. If POBJ, the
	address of a Lisp_Object in the heap, is in Vstaticpros_hash, add
	it to STATICPROS_NODUMP, and remove it from STATICPROS,
	Vstaticpros_hash.
	* dumper.c (pdump_register_sub): Use it.
	* dumper.c (save_staticpros): New. Return an alist reflecting the
	address of STATICPROS and STATICPROS_NODUMP, and the existing
	objects pointed to in those arrays,
	* dumper.c (restore_staticpros): New. An unwind_protect that
	restores STATICPROS and STATICPROS_NODUMP following the dumper's
	modification of them.
	* dumper.c (pdump):
	Use them. Sort STATICPROS before registering objects for
	dump. Initialize Vstaticpros_hash to reflect all those addresses
	in STATICPROS.
	Handle STATICPROS and STATICPROS_NODUMP specially, after
	everything else has been registered. Clear Vstaticpros_hash before
	registering them so no shuffling takes place.
	
	* emacs.c (main_1):
	Call reinit_vars_of_lstream(), just re-introducted.
	Remove calls to other reinit_.*_type_create() functions, no longer
	needed.

	* file-coding.c (reinit_coding_system_type_create): Removed, no
	longer needed.
	* file-coding.h:
	* file-coding.h (INITIALIZE_CODING_SYSTEM_TYPE): Call defsymbol(),
	not defsymbol_nodump() on the predicate symbol.
	* file-coding.h (REINITIALIZE_CODING_SYSTEM_TYPE): Removed, no
	longer needed.
	* fontcolor.c (reinit_specifier_type_create_fontcolor): Removed,
	no longer needed.
	* glyphs.c (reinit_specifier_type_create_image): Removed, no
	longer needed.
	* gutter.c (reinit_specifier_type_create_gutter): Removed, no
	longer needed.
	* intl-win32.c (reinit_coding_system_type_create_intl_win32):
	Removed, no longer needed.
	* lstream.c:
	Make Vlstream_free_list into a Lisp_Object allocated in
	vars_of_lstream.
	New Lisp_Object * variable, lstream_free_list, pointing into
	Vlstream_free_list after reinit and pointing into a
	dump-time-specific at dump

	* lstream.c (Lstream_new):
	Use lstream_free_list here rather than Vlstream_free_list. No more
	need to staticpro_nodump().
	* lstream.c (Lstream_delete): Use lstream_free_list_here.
	* lstream.c (vars_of_lstream):
	Create Vdump_time_lstream_free_list here, a static Lisp
	vector. staticpro_nodump() it, make lstream_free_list point into
	it at dump time.
	Initialize Vlstream_free_list here, and staticpro() it.
	* lstream.c (reinit_vars_of_lstream): Restored, all it needs to do
	is set lstream_free_list to the vector data of
	Vlstream_free_list.
	* mule-coding.c (reinit_coding_system_type_create_mule_coding):
	Removed, no longer needed.
	* rangetab.c: Update a comment here in passing (relevant to the
	changes made today).
	* specifier.c (reinit_specifier_type_create): Removed, no longer
	needed.
	* specifier.h (INITIALIZE_SPECIFIER_TYPE): Use defsymbol(), not
	defsymbol_nodump() in this.
	* specifier.h (REINITIALIZE_SPECIFIER_TYPE): Removed, no longer
	needed.
	* symsinit.h: Remove declarations for various functions that have
	been removed.
	* toolbar.c (reinit_specifier_type_create_toolbar): Removed, no
	longer needed.
	* unicode.c (reinit_coding_system_type_create_unicode): Removed,
	no longer needed.

2025-04-14  Aidan Kehoe  <kehoea@parhasard.net>

	Call init_mule_charsets() at dump time after loadup, not after
	restart.
	Also call it from within #'run-emacs-from-temacs.
	Remove init_mule_coding(), which is empty.
	* alloc.c:
	* alloc.c (disksave_object_finalization):
	Update a comment here.
	Call init_mule_charset().
	* emacs.c (main_1):
	Remove calls to init_mule_charset(), init_mule_coding() from here.
	Add a call to init_mule_charset() to Frun_emacs_from_temacs.
	* mule-charset.c (init_mule_charset):
	Update a comment here.
	* mule-coding.c (init_mule_coding): Empty, removed.
	* symsinit.h:
	Remove declaration for init_mule_coding().

2025-04-13  Aidan Kehoe  <kehoea@parhasard.net>

	* inline.c:
	Only #include "../modules/ldap/eldap.h" if !defined (HAVE_SHLIB),
	fixing the C-only build for me. Similarly for the postgresql
	header.
	* lrecord.h:
	* lrecord.h (enum lrecord_type):
	If !defined (HAVE_SHLIB) restore entries for lrecord_type_pgconn,
	lrecord_type_pgresult, lrecord_type_ldap, and make
	DECLARE_MODULE_LISP_OBJECT identical to DECLARE_LISP_OBJECT.

2025-04-13  Aidan Kehoe  <kehoea@parhasard.net>

	Fix further bugs in calls to dump_add_nil_lisp_object(). Assert
	that any addresses pointed to by VARADDRESS are
	non-Qnull_pointer.
	* device.c (vars_of_device):
	Use staticpro_dump_nil on Vdefault_device_plist.
	* dumper.c (dump_add_nil_lisp_object_1):
	Assert that *VARADDRESS is non-Qnull_pointer. Should also be done
	by staticpro(), but that will be a lot more work.
	* editfns.c:
	* editfns.c (vars_of_editfns):
	Call staticpro_dump_nil() on Vsystem_name.
	* emacs.c (vars_of_emacs):
	Initialize Vsystem_type before calling DEFVAR_LISP() on it, avoid
	a crash in early GC.
	* lread.c (vars_of_lread):
	Initialize Vvalues in this function, avoid a crash in early GC.
	* process.c (vars_of_process):
	Initialize Vshell_file_name and Vprocess_environment on the same
	principle.

2025-04-10  Aidan Kehoe  <kehoea@parhasard.net>

	* text.h (extbyte_ascii_p): New inline function.
	* text.h (CHECK_ASCTEXT): New macro.
	* text.h (CHECK_ASCTEXT_LEN): New macro.
	* text.h (ASSERT_ASCTEXT_ASCII_LEN): Use extbyte_ascii_p() within
	this macro.
	* text.c (syms_of_text): New symbol, Qascii_textp;
	* emodules.c (emodules_doc):
	Use CHECK_ASCTEXT() on the supplied coding system name, so we
	error on both debug builds and normal builds rather than crashing
	on debug builds and corrupting internal text on non-debug builds.

2025-04-10  Aidan Kehoe  <kehoea@parhasard.net>

	Fix a bug in dump_add_nil_lisp_object(), I'm uncertain how this
	compiled for me before my last push.
	* dumper.c (dump_add_nil_lisp_object_1): New.
	Previous implementation of dump_add_nil_lisp_object.
	* dumper.c (dump_add_nil_lisp_object): Update this to also call
	dump_add_root_lisp_object() so the object is restored after load.
	* alloc.c:
	* alloc.c (staticpro_dump_nil):
	Use dump_add_nil_lisp_object_1() as is more appropriate for this.	

2025-04-10  Aidan Kehoe  <kehoea@parhasard.net>

	Use staticpro_dump_nil() in much more places, allowing removal of
	27 reinit_vars_of_FILE() functions, simplifying startup.

	In passing rename minibuf_window to Vminibuf_window, pre_gc_cursor
	to Vpre_gc_cursor.

	* buffer.c:
	* buffer.c (Fkill_buffer):
	Use Vminibuf_window's new name here.
	* buffer.c (reinit_vars_of_buffer): Removed.
	Vbuffer_alist is now initialized in vars_of_buffer() and GC
	protected with staticpro_dump_nil(). current_buffer initialized to
	zero by the C implementation.
	* buffer.c (init_vars_of_buffer):
	Initialize and staticpro_dump_nil Vbuffer_alist, Vbuffer_defaults,
	Vbuffer_local_symbols here.
	* buffer.c (common_init_complex_vars_of_buffer):
	Remove staticpro_nodump() for Vbuffer_defaults,
	Vbuffer_local_symbols here.
	* callint.c (Fcall_interactively):
	Use Vminibuf_window's new name here.
	* console-stream.c (init_console_stream):
	Ditto.
	* console.c (reinit_vars_of_console): Removed.
	* console.c (vars_of_console): Vconsole_list, Vselected_console,
	Vconsole_defaults, Vconsole_local_symbols initialized to Qnil and
	GC protected with staticpro_dump_nil() here.
	* console.c (common_init_complex_vars_of_console):
	Rearrange initialization of Vconsole_defaults,
	Vconsole_local_symbols here.
	* device-x.c (reinit_vars_of_device_x): Removed, contents
	delegated to the C implementation.
	* device.c (reinit_vars_of_device): Removed, use
	staticpro_dump_nil on Vdefault device in vars_of_device(),
	asynch_device_change_pending will be initialized to 0 by the C
	implementation.
	* emacs.c (main_1):
	Remove 27 calls to reinit_vars_of_FILE(), simplify startup.
	* emodules.c:
	* emodules.c (reinit_vars_of_module): Removed, contents delegated
	to the C implementation.
	* eval.c (vars_of_eval):
	Use dump_add_nil_lisp_object() on Vdebug_on_error and friends.
	* event-Xt.c (reinit_vars_of_event_Xt): Empty, removed.
	* event-gtk.c (reinit_vars_of_event_gtk): Empty, removed.
	* event-msw.c (reinit_vars_of_event_mswindows): Empty, removed.
	* event-stream.c (Fdispatch_event):
	Use Vminibuf_window's new name.
	* event-tty.c (vars_of_event_tty): Empty, removed.
	* events.c (reinit_vars_of_events): Move initialization of
	Vevent_resource to vars_of_events(), use
	dump_add_nil_lisp_object() on it.
	* file-coding.c (reinit_vars_of_file_coding): Empty, removed.
	* font-lock.c (reinit_vars_of_font_lock): Removed, contents
	delegated to the C implementation.
	* fontcolor.c (reinit_vars_of_fontcolor): Remove staticpro_nodump
	on Vthe_null_color_instance, Vthe_null_font_instance from
	here. Retain other code which cannot be done at dump time.
	* fontcolor.c (vars_of_fontcolor): Use staticpro_dump_nil() on the
	same variables.
	* frame-msw.c (reinit_vars_of_frame_mswindows): Removed.
	* frame-msw.c (vars_of_frame_mswindows):
	Use dump_add_nil_lisp_Object() on Vmswindows_frame_being_created.
	* frame.c (Factive_minibuffer_window):
	Use Vminibuf_window's new name here.
	* frame.c (delete_frame_internal): Ditto.
	* frame.c (Fmake_frame_invisible): Ditto.
	* frame.c (Ficonify_frame): Ditto.
	* gc.c:
	Use Vpre_gc_cursor's new name here.
	* gc.c (show_gc_cursor_and_message): Ditto.
	* gc.c (remove_gc_cursor_and_message): Ditto.
	* gc.c (vars_of_gc): Call staticpro_dump_nil() on Vpre_gc_cursor.
	* glyphs-widget.c (reinit_vars_of_glyphs_widget): Remove, delegate
	its contents to the C implementation.
	* glyphs.c (reinit_vars_of_glyphs): Ditto.
	* gui-x.c:
	* gui-x.c (static LWLIB_ID lwlib_id_tick): Static initialization
	to #x10000.
	* gui-x.c (reinit_vars_of_gui_x): Remove, delegate to the C
	implementation.
	* insdel.c (reinit_vars_of_insdel): Remove, delegate to the C
	implementation.
	* lread.c (init_lread): Remove re-initialization of Vvalues,
	Vload_descriptor_list, Vload_force_doc_string_list,
	Vload_file_name_internal, Vload_file_name from here.
	* lread.c (reinit_vars_of_lread): Removed, use staticpro_dump_nil
	on Vread_buffer_stream in vars_of_lread() instead.
	* lread.c (vars_of_lread):
	Use dump_add_nil_lisp_object(), staticpro_dump_nil() appropriately
	here.
	* menubar-gtk.c (reinit_vars_of_menubar_gtk): Empty, removed.
	* menubar-x.c:
	* menubar-x.c (static LWLIB_ID
	last_popup_menu_selection_callback_id): Initialize statically. 
	* menubar-x.c (reinit_vars_of_menubar_x): Removed, delegate to the
	C implementation. 
	* minibuf.c (read_minibuffer_internal_unwind):
	Use Vminibuf_window's new name.
	* minibuf.c (reinit_vars_of_minibuf): Removed, delegate to the C
	implementation.
	* minibuf.c (vars_of_minibuf): Use staticpro_dump_nil() on
	Vminibuffer_zero, Vecho_area_buffer.
	* minibuf.c (reinit_complex_vars_of_minibuf):
	Remove staticpro_nodump() for those variables.
	* mule-coding.c (reinit_vars_of_mule_coding): Empty, removed.
	* mule-wnnfns.c (reinit_vars_of_mule_wnn):
	Delegate initialization of some static variables to zero to the C
	implementation.
	* print.c (reinit_vars_of_print): Removed, delegate to the C
	implementation.
	* scrollbar-x.c:
	* scrollbar-x.c (int stupid_vertical_scrollbar_drag_hack): Static
	initialization to 1.
	* scrollbar-x.c (reinit_vars_of_scrollbar_x): Delegate to the C
	implementation.
	* select-x.c (reinit_vars_of_select_x): Removed, delegate to the C
	implementation.
	* symsinit.h:
	Remove declarations for various reinit_vars_of_FILE() functions.
	* undo.c (reinit_vars_of_undo): Removed, delegate to the C
	implementation.
	* window-impl.h:
	Use Vminibuf_window's new name.
	* window.c:
	Ditto.
	* window.c (Fnext_window): Ditto.
	* window.c (Fprevious_window): Ditto.
	* window.c (reinit_vars_of_window): Removed.
	* window.c (vars_of_window):
	staticpro_dump_nil (&Vminibuf_window) here.
	* window.h: Use Vwinibuf_window's new name here.

2025-04-09  Aidan Kehoe  <kehoea@parhasard.net>

	Add dump_add_nil_lisp_object(), staticpro_dump_nil(), telling the
	dumper that a given Lisp_Object in the data segment should be
	initialized to Qnil after pdump_load() irrespective of its value
	at dump time.
	* alloc.c:
	* alloc.c (staticpro_dump_nil): New.
	Add VARADDRESS to staticpros and call dump_add_nil_lisp_object()
	on it.
	* alloc.c (disksave_object_finalization): Remove variables from
	this now handled with dump_add_nil_lisp_object().
	* console-stream.c (vars_of_console_stream):
	Call dump_add_nil_lisp_object() on Vterminal_console,
	Vterminal_device, Vterminal_frame.
	* device.c (clear_default_devices):
	Remove Vdefault_device_plist = Qnil from this.
	* device.c (vars_of_device):
	Call dump_add_nil_lisp_object (&Vdefault_device_plist) here.
	* dumper.c (pdump_nil_lisp_objects): New Lisp_Object_ptr_dynarr.
	* dumper.c (dump_add_nil_lisp_object): New.
	Add an entry to pdump_nil_lisp_objects.
	* dumper.c (save_pdump_nil_lisp_objects): New. Return a Lisp vector
	reflecting the current values of those entries in
	pdump_nil_lisp_objects, and set them to Qnil.
	* dumper.c (restore_pdump_nil_lisp_objects): New. Given a Lisp
	vector created by save_pdump_nil_lisp_objects(), restore the saved
	values.
	* dumper.c (pdump):
	Call save_pdump_nil_lisp_objects(), then call
	restore_pdump_nil_lisp_objects() by means of an unwind-protect.
	Remove special-casing of Vterminal_console, Vterminal_frame,
	Vterminal_device.
	* emacs.c:
	Call dump_add_nil_lisp_object() on variables previously reset by
	disksave_object_finalization().
	* lread.c (vars_of_lread): Ditto.
	* process.c (vars_of_process): Ditto.
	* lisp.h:
	Declare staticpro_dump_nil().
	* lrecord.h:
	Declare dump_add_nil_lisp_object().

2025-04-09  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	* alloc.c (staticpro_dump_nil):

	* console-stream.c (vars_of_console_stream):
	* dumper.c:
	* dumper.c (dump_add_nil_lisp_object):
	* dumper.c (save_pdump_nil_lisp_objects):
	* dumper.c (restore_pdump_nil_lisp_objects):
	* dumper.c (pdump):
	* dumper.c (pdump_load_check):

2025-04-09  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	* alloc.c (common_init_alloc_early):
	* alloc.c (init_alloc_once_early):
	* lisp.h:
	* symbols.c (defsymbol_massage_name_1):
	* symbols.c (defsymbol_nodump):
	* symbols.c (defsymbol):
	Remove staticpro_names, staticpro_nodump_names. These interact
	poorly with modules if the value of DEBUG_XEMACS differs between
	the XEmacs binary and the module, and they are less necessary with
	recent GDB which resolves data segment pointers to their symbol
	name automatically.

2025-04-07  Aidan Kehoe  <kehoea@parhasard.net>

	Add define_lisp_object(), undef_lisp_object() for better
	encapsulation of creating new lrecord types.
	* alloc.c:
	* alloc.c (init_memory_usage_stats):
	Update a comment here.
	No longer initialize Vmemusage_stats_list from this function, we
	have some bootstrap-handling within the new define_lisp_object()
	that means it's more appropriate to leave it to
	init_alloc_once_early().
	* alloc.c (uninit_memory_usage_stats): Make this static, now it is
	called from undef_lisp_object().
	* alloc.c (define_lisp_object): New. Do the allocation and
	bare-bones initialization of an entry in
	lrecord_implementations_table, and bootstrap handling of NAME as
	did init_lrecord_implementation_name() previously.
	Call init_memory_usage_stats() from within this function, with the
	same bootstrap handling.
	Add an entry to the load history which will allow better
	integration with the module infrastructure going forward.
	* alloc.c (undef_lisp_object): New. Now a function called from
	UNDEF_MODULE_LISP_OBJECT(), which previously did the bulk of
	this. Be smarter if objects of the type being undefined still
	exist, preserve their names and, if possible, static sizes. Use an
	empty memory description (since the memory description is in
	static data which is unloaded with a module).
	* alloc.c (init_alloc_once_early):
	Initialize Vmemusage_stats_list here, to all zeroes.
	* alloc.c (syms_of_alloc):
	Check for zero values in Vmemusage_stats_list rather than
	Qnull_pointer entries, don't startle the garbage collector.
	* lrecord.h:
	Remove the declaration of uninit_memory_usage_stats() from here,
	now to be called only from undef_lisp_object.
	* lrecord.h (XD_INDIRECT):
	* lrecord.h (MAKE_LISP_OBJECT):
	Revist this to call define_lisp_object().
	* lrecord.h (DECLARE_LISP_OBJECT):
	Revise init_lrecord_type_##c_name() to return the numeric value of
	the lrecord_type, used in the call to define_lisp_object().
	* lrecord.h (DECLARE_MODULE_API_LISP_OBJECT):
	Ditto.
	* lrecord.h (DECLARE_MODULE_LISP_OBJECT):
	Ditto.

2025-04-06  Aidan Kehoe  <kehoea@parhasard.net>

	* syntax.c (find_start_of_comment):
	Check that FROM is > 1 before calling prev_bytebpos() on it, avoid
	a crash I've recently elicited.

2025-04-06  Aidan Kehoe  <kehoea@parhasard.net>

	Remove the Lisp_Subr structures from the data segment; they are
	copied to the dump file by pdump() anyway, so the data segment
	copies are leaked, and with modules Lisp code access to the data
	segment of unloaded modules ends badly.

	In passing, store the interned symbol as the NAME field, also
	ensuring that it does not point into the data segment of an
	unloaded module. Store PROMPT as a Lisp_Object, either Qnil or a
	string.

	Return the string name of the symbol from #'subr-name, preserving
	what our callers expect.  Similar for #'subr-interactive.
	
	* alloc.c:
	* alloc.c (make_subr):
	Remove a comment that is no longer true.
	* alloc.c (mark_subrs_readonly): New. Mark those subrs that
	are bound to interned symbols as C-readonly as was the case
	previous to this change.  Mark their interactive specs as
	C-readonly if they are strings.

	* alloc.c (disksave_object_finalization):
	Call it.
	* callint.c (Fcall_interactively):
	Now subr prompt data is stored as a string, treat it the same as
	compiled function prompt data.
	* data.c:
	* data.c (Fsubr_interactive):
	Handle the new data type for Lisp_Subr->prompt.
	* emacs.c (main_1):
	Re-order this, syms_of_eval() now needs to be called before
	anything that calls DEFSUBR().

	* eval.c:
	* eval.c (print_subr):
	Revise this to reflect the new members of Lisp_Subr.
	* eval.c (Fcommandp):
	Ditto.
	* general-slots.h:
	Add Qfunction_min_args, Qfunction_max_args here, used by
	sanity-checking within defsubr().

	* lisp.h:
	* lisp.h (struct Lisp_Subr):
	Revise this to make NAME, PROMPT Lisp_Objects. Re-order it
	following best practice.

	* lisp.h (subr_name):
	Revise this to return the string data of the symbol subr name.

	* lisp.h (DEFUN):
	* lisp.h (DEFUN_NORETURN):
	Communicate the arguments of these macros to defsubr() by means of
	an inline function.
	Declare defsubr(), defsubr_macro() in lisp.h so the compiler knows
	about their calling convention.

	* symbols.c:
	* symbols.c (Fsubr_name):
	Return the string name of the symbol subr name.

	* symbols.c (defsubr_1): New. Bulk of defsubr(),
	defsubr_macro(). Sanity-check the supplied arguments in the same
	way for built-ins as for subrs created by modules. No further need
	to copy a supplied Lisp_Subr to the C heap.
	* symbols.c (defsubr): Revise this to take LNAME, SUBR_FN,
	MIN_ARGS, MAX_ARGS, PROMPT as its arguments, and to return the
	interned symbol name of the subr, this latter used by tests.c.
	* symbols.c (defsubr_macro):
	Ditto.
	* symbols.c (defvar_magic): Move this before syms_of_symbols(),
	same structure as every other file.
	
	* symeval.h:
	* symeval.h (DEFSUBR_MACRO):
	Revise these to use the inline function created by DEFUN() to
	communicate arguments to us.

	* tests.c (TESTS_DEFSUBR):
	Use the fact that DEFSUBR() now returns the symbol bound in this
	macro.

2025-04-06  Aidan Kehoe  <kehoea@parhasard.net>

	Add a new #define for Lisp_Subr->max_args, KEYWORDS, numerically
	identical to MANY but explicitly making LNAME and MIN_ARGS
	available to PARSE_KEYWORDS() as static constants.
	If MAX_ARGS is KEYWORDS, force use of NARGS and ARGS for the
	argument vector length and name.
	Remove explicit use of NARGS and ARGS in calls to
	PARSE_KEYWORDS(), making use of this macro simpler.
	Remove use of GET_DEFUN_LISP_OBJECT() in preparation for future
	work.
	
	* lisp.h:
	* lisp.h (EXFUN_KEYWORDS): New.
	* lisp.h (KEYWORDS): New, numerically equivalent to MANY.
	* lisp.h (DECLARE_LISP_NAME_0): New, dummy to allow LNAME for a
	subr to be communicated to PARSE_KEYWORDS() for a subr that takes
	keyword arguments.
	* lisp.h (DEFUN):
	* lisp.h (DEFUN_NORETURN):
	Revise both these to pass LNAME, MIN_ARGS to the keyword parsing
	code explicitly.
	* lisp.h (GET_DEFUN_LISP_OBJECT): Removed.
	* lisp.h (DEFUN_KEYWORDS): New. Force NARGS, ARGS as the name of
	the arguments for a function declared with KEYWORDS as max_args.
	* lisp.h (PARSE_KEYWORDS_DEFUN_NAME): New. Given Fname, return its
	Lisp name as a constant C string.
	* lisp.h (PARSE_KEYWORDS_DEFUN_MIN_ARGS): New. Given Fname, return its
	min_args as a constant C short.

	* data.c:
	* data.c (Fparse_integer):
	* elhash.c:
	* elhash.c (Fmake_hash_table):
	* lstream.c:
	* lstream.c (Fmake_string_output_stream):
	* sequence.c:
	* sequence.c (Fcount):
	* sequence.c (FmemberX):
	* sequence.c (Fadjoin):
	* sequence.c (FassocX):
	* sequence.c (FrassocX):
	* sequence.c (Fposition):
	* sequence.c (Ffind):
	* sequence.c (FdeleteX):
	* sequence.c (FremoveX):
	* sequence.c (Fdelete_duplicates):
	* sequence.c (Fremove_duplicates):
	* sequence.c (Fmerge):
	* sequence.c (FsortX):
	* sequence.c (Ffill):
	* sequence.c (Freduce):
	* sequence.c (Freplace):
	* sequence.c (Fnsubstitute):
	* sequence.c (Fsubstitute):
	* sequence.c (Fsublis):
	* sequence.c (Fnsublis):
	* sequence.c (Fnsubst):
	* sequence.c (Ftree_equal):
	* sequence.c (Fmismatch):
	* sequence.c (Fsearch):
	* sequence.c (Funion):
	* sequence.c (Fset_exclusive_or):
	Update calls to DEFUN(), PARSE_KEYWORDS() to reflect the above
	changes.
	
	* gpmevent.c:
	* gpmevent.c (Fgpm_enable):
	* gpmevent.c (syms_of_gpmevent):
	* tooltalk.c (init_tooltalk):
	Avoid using GET_DEFUN_LISP_OBJECT() in these files, call the
	corresponding function using its Lisp symbol name

2025-04-06  Aidan Kehoe  <kehoea@parhasard.net>

	Simplify the PARSE_KEYWORDS() macro, no need to specify the number
	of keywords explicitly. Thank you for the technique, Dale Weiler.

	* lisp.h:
	* lisp.h (PARSE_KEYWORDS):
	Correct and update some documentation for this. Remove a couple of
	function calls that attempted to avoid using
	GET_DEFUN_LISP_OBJECT(), something I plan to remove entirely
	shortly anyway.
	* lisp.h (PARSE_KEYWORDS_ARGC_COUNTER): New.
	* lisp.h (PARSE_KEYWORDS_ARGC): New.
	* lisp.h (PARSE_KEYWORDS_CAT): New.
	* lisp.h (PARSE_KEYWORDS_CONCATENATE): New.
	* lisp.h (PARSE_KEYWORDS_7): Rename PARSE_KEYWORDS_8 to this.

	* data.c (Fparse_integer):
	* doprnt.c (Fformat_into):
	* elhash.c (Fmake_hash_table):
	* lstream.c (Fmake_string_output_stream):
	* print.c (Fwrite_sequence):
	* sequence.c (count_with_tail):
	* sequence.c (Fcount):
	* sequence.c (FmemberX):
	* sequence.c (Fadjoin):
	* sequence.c (FassocX):
	* sequence.c (FrassocX):
	* sequence.c (Fposition):
	* sequence.c (Ffind):
	* sequence.c (FdeleteX):
	* sequence.c (FremoveX):
	* sequence.c (Fdelete_duplicates):
	* sequence.c (Fremove_duplicates):
	* sequence.c (Fmerge):
	* sequence.c (FsortX):
	* sequence.c (Ffill):
	* sequence.c (Freduce):
	* sequence.c (Freplace):
	* sequence.c (Fnsubstitute):
	* sequence.c (Fsubstitute):
	* sequence.c (Fsublis):
	* sequence.c (Fnsublis):
	* sequence.c (Fnsubst):
	* sequence.c (Ftree_equal):
	* sequence.c (Fmismatch):
	* sequence.c (Fsearch):
	* sequence.c (venn):
	* sequence.c (nvenn):
	* sequence.c (Funion):
	* sequence.c (Fset_exclusive_or):
	* sequence.c (Fnset_exclusive_or):
	Call PARSE_KEYWORD(), PARSE_KEYWORDS_7() with their new calling
	conventions.

2025-04-05  Aidan Kehoe  <kehoea@parhasard.net>

	Add support for _fseeki64(), _ftelli64() on Windows.
	Quiet Visual Studio warnings on 64-bit platforms regarding type
	narrowing in dumper.c.

	* config.h.in:
	#define FSEEK, FTELL, OFF_T appropriately if we have a recent
	MSVC.
	* dumper.c:
	* dumper.c (struct):
	* dumper.c (pdump_block_list_elt):
	* dumper.c (pdump_make_hash):
	* dumper.c (pdump_add_block):
	* dumper.c (pdump_register_block_contents):
	* dumper.c (pdump_register_block):
	* dumper.c (pdump_store_new_pointer_offsets):
	* dumper.c (pdump_dump_data):
	Update types to better reflect 64-bit platforms in this file.

2025-04-05  Aidan Kehoe  <kehoea@parhasard.net>

	* dumper.c (pdump_align_stream):
	Use EMACS_DUMP_FILE_NAME appropriately when erroring.
	* dumper.c (pdump):
	Ditto.
	Avoid qxe_open() since that leads to pdump choking on
	Windows. Assert that EMACS_DUMP_FILE_NAME is entirely ASCII.

2025-03-20  Aidan Kehoe  <kehoea@parhasard.net>

	* editfns.c (Fcompare_buffer_substrings):
	Revise Fcompare_buffer_substrings() to avoid potentially O(N)
	BUF_FETCH_CHAR() calls. I note GNU has already done this. Extend the
	docstring (some inspiration taken from GNU's current docstring).

2025-04-06  Aidan Kehoe  <kehoea@parhasard.net>

	* .gdbinit.in.in: Remove entries for lrecord_type_ldap,
	lrecord_type_pgconn, lrecord_type_pgresult from this, now they are
	generated at module load time.

	* alloc.c (init_memory_usage_stats): Take TYPE as an int, now that
	is appropriate for DECLARE_MODULE_LISP_OBJECT().
	Add an assertion regarding its value.
	* alloc.c (uninit_memory_usage_stats): Ditto.
	* alloc.c (init_lrecord_implementation_name): Correct a comment. 
	* lrecord.h:
	* lrecord.h (enum lrecord_type):
	Remove lrecord_type_ldap, lrecord_type_pgconn,
	lrecord_type_pgresult from here.
	* lrecord.h (struct lrecord_implementation):
	Change the type of LRECORD_TYPE_INDEX to int, get
	DECLARE_MODULE_LISP_OBJECT() working.
	* lrecord.h (DECLARE_LISP_OBJECT): Be stricter about assertions
	here.
	* lrecord.h (DECLARE_MODULE_API_LISP_OBJECT): Ditto.

2025-03-18  Aidan Kehoe  <kehoea@parhasard.net>

	Move struct lrecord_implementation.name to being an interned
	symbol, which will things simpler for unloading modules and speed
	up Ftype_of() a little.

	* alloc.c:
	Update lrecord_implementation_description_1[] to reflect
	this. Correct some indentation in passing.
	* alloc.c (gc_plist_hack):
	Update argument types in this now the type of
	lrecord_implementation.name has changed.
	* alloc.c (pluralize_word): Ditto.
	* alloc.c (pluralize_and_append): Ditto.
	* alloc.c (object_memory_usage_stats): Ditto.
	* alloc.c (struct saved_object_name): New.
	* alloc.c (init_lrecord_implementation_name): New.
	Usually equivalent to lrecord_implementation_table[TIPO] = intern
	(NAME), but with some special handling for early bootstrap before
	it is possible to intern symbols.
	* data.c (Ftype_of):
	No need to intern() any more, just return the symbol naming the
	type for pointer types.
	* lrecord.h:
	* lrecord.h (struct lrecord_implementation): Update this.
	* lrecord.h (LRECORD_IMPLEMENTATION_IBYTE_NAME): Update this.
	* lrecord.h (MAKE_LISP_OBJECT): Update this to call
	init_lrecord_implementation_name().
	Declare init_lrecord_implementation_name().
	* symbols.c (init_symbols_once_early):
	Create Qnil as soon as we can intern strings, allowing the early
	bootstrapping code to clean up.

2025-03-18  Aidan Kehoe  <kehoea@parhasard.net>

	Wrap access to struct lrecord_implementation.name in preparation
	for further changes.

	* alloc.c (INCREMENT_CONS_COUNTER): Move the second argument here
	to being a pointer to the struct lrecord_implementation, which
	works better with e.g. the ALLOCATE_FIXED_TYPE() macros.
	* alloc.c (old_alloc_sized_lcrecord_1): Call
	INCREMENT_CONS_COUNTER() with its new convention.
	* alloc.c (ALLOCATE_FIXED_TYPE): Ditto.
	* alloc.c (NOSEEUM_ALLOCATE_FIXED_TYPE): Ditto.
	* alloc.c (allocate_big_string_chars): Ditto.
	* alloc.c (allocate_string_chars_struct): Ditto.
	* alloc.c (resize_string): Ditto.
	* data.c (Ftype_of):
	Use the wrapper just introduced.
	* dumper.c (pdump_backtrace): Ditto.
	* dumper.c (pdump_register_object): Ditto.
	* dumper.c (pdump): Ditto.
	* gc.c (kkcc_backtrace_1): Ditto.
	* lrecord.h (struct lrecord_implementation):
	Change the type of NAME to const CIbyte, in preparation for
	further changes.
	* lrecord.h (LRECORD_IMPLEMENTATION_IBYTE_NAME):
	Provide the accessor macro.
	* print.c (printing_unreadable_lisp_object): Use it.
	* print.c (external_object_printer): Use it.
	* print.c (internal_object_printer): Use it.
	* print.c (debug_p4): Use it.
	* symbols.c (print_symbol_value_magic): Use it.

2025-03-16  Aidan Kehoe  <kehoea@parhasard.net>

	* lrecord.h (struct lrecord_implementation):
	Reorder this to reduce wasted space given alignment
	requirements. Document the nsubst_structures_descend method.

2025-03-15  Aidan Kehoe  <kehoea@parhasard.net>

	Remove all the lrecord_implementation structures from the C data
	segment, just use those copies in the dump file (or the heap),
	making things simpler for modules and reducing memory usage for
	core XEmacs.

	* lrecord.h:
	* lrecord.h (LRECORD_IMPLEMENTATION): New. Give a built-in C type
	name (cons, bignum, etc) return a pointer to the
	lrecord_implementation of the corresponding Lisp object using
	lrecord_implementations_table.
	* lrecord.h (ALLOC_NORMAL_LISP_OBJECT):
	Use it.
	* lrecord.h (NORMAL_LISP_OBJECT_HEADER):
	Use it.
	* lrecord.h (ALLOC_C_READONLY_LISP_OBJECT):
	Use it.
	* lrecord.h (INIT_MEMORY_USAGE_STATS): Move this further up in the
	file.
	* lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT):
	Revise this to use the new calling convention for
	MAKE_LISP_OBJECT().
	* lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT):
	Ditto.
	* lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT):
	Ditto.
	* lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT):
	Ditto.
	* lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT):
	Ditto.
	* lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT):
	Ditto.
	* lrecord.h (DEFINE_NODUMP_LISP_OBJECT):
	Ditto.
	* lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT):
	Ditto.
	* lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT):
	Ditto.
	* lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT):
	Ditto.
	* lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT):
	Ditto.
	* lrecord.h (MAKE_LISP_OBJECT):
	Call init_lrecord_type_##c_name() here, initialize the enumeration
	for module objects if that is appropriate.
	* lrecord.h (UNDEF_LISP_OBJECT): Removed.
	* lrecord.h (UNDEF_MODULE_LISP_OBJECT):
	Revise this to subsume UNDEF_LISP_OBJECT().
	* lrecord.h (OBJECT_HAS_METHOD):
	Use LRECORD_IMPLEMENTATION() here.
	* lrecord.h (OBJECT_HAS_PREMETHOD):
	Ditto.
	* lrecord.h (OBJECT_HAS_NAMED_METHOD):
	Ditto.
	* lrecord.h (OBJECT_HAS_PROPERTY):
	Ditto.
	* lrecord.h (DECLARE_LISP_OBJECT_1): New.
	DECLARE_LISP_OBJECT without its init_lrecord_##c_name().
	* lrecord.h (DECLARE_MODULE_API_LISP_OBJECT): Use it.
	* lrecord.h (DECLARE_MODULE_LISP_OBJECT): Use it.
	* lrecord.h (DECLARE_LISP_OBJECT): Use it.

	* alloc.c:
	Call DECLARE_LISP_OBJECT() for Lisp_Free here, now that is
	needed.
	* alloc.c (Fcons):
	Move the DEFINE.*LISP_OBJECT() to init_alloc_once_early().
	Use LRECORD_IMPLEMENTATION (cons) rather than &lrecord_cons.
	* alloc.c (noseeum_cons):
	Ditto.	
	* alloc.c (make_float):
	Use LRECORD_IMPLEMENTATION (c_type) rather than &lrecord_c_type.
	* alloc.c (make_bignum): Ditto.
	* alloc.c (make_bignum_un): Ditto.
	* alloc.c (make_bignum_ll): Ditto. 
	* alloc.c (make_bignum_ull): Ditto.
	* alloc.c (make_bignum_bg): Ditto. 
	* alloc.c (make_ratio): Ditto.
	* alloc.c (make_ratio_bg): Ditto.
	* alloc.c (make_ratio_rt): Ditto.
	* alloc.c (make_bigfloat): Ditto.
	* alloc.c (make_bigfloat_bf): Ditto. 
	* alloc.c (make_bit_vector_internal): Ditto.
	* alloc.c (make_compiled_function): Ditto.
	* alloc.c (make_subr): Ditto.
	* alloc.c (Fmake_symbol): Ditto.
	* alloc.c (allocate_extent): Ditto.
	* alloc.c (allocate_event): Ditto. 
	* alloc.c (Fmake_marker): Ditto.
	* alloc.c (noseeum_make_marker): Ditto.
	* alloc.c (make_uninit_string): Ditto.
	* alloc.c (make_string_nocopy): Ditto.
	* alloc.c (make_lcrecord_list): Ditto.
	* alloc.c (init_memory_usage_stats): Create Vmemusage_stats_lists
	if it is Qnull_pointer, which means this function has been called
	from within DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT().
	* alloc.c (disksave_object_finalization_1):
	If ERROR_CHECK_TYPES, call error_check_free() once to suppress
	warnings.
	* alloc.c (init_alloc_once_early):
	Call DEFINE.*LISP_OBJECT() rather than the removed
	INIT_LISP_OBJECT() here. Reorder the calls to create the vector
	object first given it is needed for Vmemusage_stats_list.

	* buffer.c:
	* buffer.c (syms_of_buffer): Call DEFINE_NODUMP_LISP_OBJECT()
	here.
	* buffer.c (common_init_complex_vars_of_buffer):
	Use LRECORD_IMPLEMENTATION (c_type) rather than &lrecord_c_type.
	* bytecode.c:
	* bytecode.c (syms_of_bytecode):
	Call DEFINE.*LISP_OBJECT() rather than the removed INIT_LISP_OBJECT()
	here.

	* casetab.c (syms_of_casetab):
	Ditto.
	* chartab.c (syms_of_chartab):
	Ditto.
	* console.c (syms_of_console):
	Ditto.
	* console.c (common_init_complex_vars_of_console):
	Use LRECORD_IMPLEMENTATION (c_type) rather than &lrecord_c_type.

	* data.c (syms_of_data):
	Call DEFINE.*LISP_OBJECT() rather than the removed INIT_LISP_OBJECT()
	here.
	* database.c (syms_of_database): Ditto.
	* device-msw.c (syms_of_device_mswindows): Ditto.
	* device.c (syms_of_device): Ditto.
	* dialog-msw.c (syms_of_dialog_mswindows): Ditto.
	* elhash.c (init_elhash_once_early): Ditto.
	* emacs.c (main_1): Remove mention of INIT_LISP_OBJECT() from here.
	* eval.c (syms_of_eval):
	Call DEFINE.*LISP_OBJECT() rather than the removed INIT_LISP_OBJECT()
	here.
	* event-stream.c (syms_of_event_stream): Ditto.
	* events.c (syms_of_events): Ditto.
	* extents.c (syms_of_extents): Ditto.
	* faces.c (syms_of_faces): Ditto.
	* file-coding.c (syms_of_file_coding): Ditto.
	* floatfns.c (syms_of_floatfns): Ditto.
	* font-mgr.c (syms_of_font_mgr): Ditto.
	* fontcolor.c (syms_of_fontcolor): Ditto.
	* frame.c (syms_of_frame): Ditto.
	* glyphs.c (syms_of_glyphs): Ditto.
	* gui.c (syms_of_gui): Ditto.
	* keymap.c (syms_of_keymap): Ditto.
	* lstream.c:
	* lstream.c (Lstream_new):
	Use LRECORD_IMPLEMENTATION (c_type) rather than &lrecord_c_type.
	* lstream.c (syms_of_lstream):
	Call DEFINE.*LISP_OBJECT() rather than the removed INIT_LISP_OBJECT()
	here.
	* lstream.h (INIT_STACK_FIXED_BUFFER_OUTPUT_STREAM):
	Use LRECORD_IMPLEMENTATION (c_type) rather than &lrecord_c_type.
	* marker.c (syms_of_marker):
	Call DEFINE.*LISP_OBJECT() rather than the removed INIT_LISP_OBJECT()
	here.
	* mule-charset.c (syms_of_mule_charset):
	Ditto.
	* number.c (syms_of_number): Ditto.
	* opaque.c (init_opaque_once_early): Ditto.
	* process.c (syms_of_process): Ditto.
	* rangetab.c (syms_of_rangetab): Ditto.
	* scrollbar.c (syms_of_scrollbar): Ditto.
	* specifier.c (syms_of_specifier): Ditto.
	* symbols.c (init_symbols_once_early): Ditto.
	* toolbar.c (syms_of_toolbar): Ditto.
	* tooltalk.c (syms_of_tooltalk): Ditto.
	* ui-gtk.c (syms_of_ui_gtk): Ditto.
	* unicode.c (syms_of_unicode): Ditto.
	* window.c (syms_of_window): Ditto.

2025-03-11  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (redisplay_frame):
	Correct a bug in my last change elicited when f->old_buffer_alist
	is equal in length to f->buffer_alist, thank you Stephen
	Turnbull.
	* lisp.h (Freplace_list): Remove declaration for this in passing.

2025-03-08  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Freplace_list): Removed. Inappropriate to have it in C,
	now Freplace() is built-in.
	* fns.c (syms_of_fns):
	Remove its DEFSUBR.
	* redisplay.c (redisplay_frame):
	Replace  the only call to Freplace_list() from C with its
	implementation. 
	* sequence.c (syms_of_sequence):
	Define substring as an alias for subseq here rather than in
	subr.el, avoiding issues with feature checks when loading
	subr.elc.

2025-03-08  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (Fmake_byte_code):
	Eagerly call optimize_compiled_function if PURIFY_FLAG, since
	otherwise those compiled functions not called at dump time have
	their string instructions stored in the dump file, and those
	string instructions are leaked on first call since nothing in the
	dump file is swept.

2025-03-06  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c (compile_extended_range):
	If THIS_CHAR is not a valid Ichar, don't look it up in the
	translation table, avoiding crashes with error checking when
	invalid characters are within the range specified. Do include them
	in the range table, which will allow coalescing ranges that would
	otherwise not be.

2025-03-06  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c (re_wctype): Change type of LIMIT to Bytecount, as had
	always been the intention.
	* regex.h: Update its declaration.

2025-03-04  Aidan Kehoe  <kehoea@parhasard.net>

	Use C23's #embed, if available, for the dump file with
	DUMP_IN_EXEC. Fall back to Dale Weiler's INCBIN() as previously
	used if #embed is not available.
	clang-19 doesn't accept concatenation of EMACS_PROGNAME with
	".dmp" as a valid filename for #embed, add EMACS_DUMP_FILE_NAME to
	config.h and use that. Use DUMP_FILE_NAME as the corresponding
	autoconf variable.

	* Makefile.in.in:
	* Makefile.in.in ($(RAW_EXE)): Now we have the C compiler involved
	in embedding the dump file again, it attempts once more to put an
	all-zero dump file into BSS. Use Larry McVoy's magic values to
	prevent this as the insert-data-in-exec code used to.
	Use @DUMP_FILE_NAME@ instead of $(DUMP_TARGET).dmp throughout this
	file.
	* config.h.in (EMACS_DUMP_FILE_NAME):
	* dump-data.c: Use #embed for dumped_data if available. If #embed
	is available, we have a recent enough C implementation that
	<stdalign.h> is going to be available, use alignas() to force
	16-byte alignment.
	* dumper.c (pdump):
	Use EMACS_DUMP_FILE_NAME explicitly for the dump file name.

2025-03-03  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay-tty.c (tty_output_display_block):
	Placate warnings on recent Clang, variable length arrays are a C99
	extension not guaranteed to be available in C++.

2025-03-03  Aidan Kehoe  <kehoea@parhasard.net>

	* syswindows.h:
	Widen the front of the fight between the X11 headers and the Win32
	headers for the sake of the Cygwin compilation.
	* xemacs.def.in.in:
	Update this with newly-added functions that need to be visible to
	the modules.

2025-03-02  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (RESET_GCPROLIST): New macro, set GCPROLIST to NULL,
	avoiding tripping error checking.
	* emacs.c (Frun_emacs_from_temacs):
	Use it, since our stack is about to become invalid.

2025-03-01  Aidan Kehoe  <kehoea@parhasard.net>

	* lstream.h (DEFINE_LSTREAM_IMPLEMENTATION_WITH_DATA):
	Suppress warnings about interleaving declarations and code when
	compiling as C99.

2025-03-01  Aidan Kehoe  <kehoea@parhasard.net>

	Remove the EVENT_DATA_AS_OBJECTS code, not used in over twenty
	years and not adding any value. Commit generated with unifdef
	-UEVENT_DATA_AS_OBJECTS. 

	* alloc.c:
	* alloc.c (gc_sweep_1):
	* alloc.c (common_init_alloc_early):
	* events.c:
	* events.c (Fcopy_event):
	* events.c (syms_of_events):
	* events.h:
	* events.h (EVENT_FOO_BAR):
	* events.h (struct Lisp_Key_Data):
	* events.h (struct Lisp_Button_Data):
	* events.h (struct Lisp_Motion_Data):
	* events.h (struct Lisp_Process_Data):
	* events.h (struct Lisp_Timeout_Data):
	* events.h (struct Lisp_Eval_Data):
	* events.h (struct Lisp_Misc_User_Data):
	* events.h (struct Lisp_Magic_Eval_Data):
	* events.h (struct Lisp_Magic_Data):
	* events.h (struct Lisp_Event):
	* events.h (XSET_EVENT_NEXT):
	* lisp.h:
	* lrecord.h (enum lrecord_type):

2025-03-01  Aidan Kehoe  <kehoea@parhasard.net>

	* symeval.h (XSYMBOL_VALUE_MAGIC):
	Correct a compile time failure with --with-optimization, thank you
	the buildbot.

2025-02-28  Aidan Kehoe  <kehoea@parhasard.net>

	Fix further crash linked to the AMD64 red zone, this time with
	--with-optimize and GCC, which chooses to ignore the size of an
	array not written to. Change strategy to, within xemacs_c_alloca
	(), a non-leaf function, compare the address of a local variable
	to STACK_BOTTOM, already provided for gc.c, and work out the stack
	direction from that. Thank you Mats Lidell and the buildbot.

	* alloca.c (find_stack_direction): Remove this, it is currently
	too prone to failure with optimizing compilers.
	* alloca.c (xemacs_c_alloca): Implement it in a simpler way.

2025-02-28  Aidan Kehoe  <kehoea@parhasard.net>

	Add type checking for symbol_value_magic objects in the same way
	as for more conventional objects.

	* symbols.c:
	Update comments.

	* symbols.c (defvar_magic): 
	Update defvar_magic() to take a Lisp_Object as its second arg,
	reducing the need to cast. Add a type checking assertion to this
	function.

	* symeval.h:
	* symeval.h (enum symbol_value_type):
	Remove #if 0'd SYMVAL_CONSTANT_SYMBOL, which I don't plan to
	implement.
	* symeval.h (ASSERT_OK_FOR_MAGIC): New macro, checks that an enum
	symbol_value_type is for a type that has a MAGICFUN
	implementation.

	* symeval.h (DEFVAR_SYMVAL_FWD_NON_LISP): Use it. Call
	defvar_magic() with its new types.
	* symeval.h (DEFVAR_SYMVAL_FWD_OBJECT): Ditto.

2025-02-24  Aidan Kehoe  <kehoea@parhasard.net>

	Quiet compiler warnings, clang-19.
	* alloc.c (old_alloc_sized_c_readonly_lcrecord): Removed. Added as
	part of the support for allocating symbol_value_forward_fixnum and
	symbol_value_forward_boolint on the heap, but not actually used by
	that.

	* frame-x.c (x_cant_notify_wm_error):
	Use (void) for the arglist in the definition of this function.
	* gccache-x.c (define_gc_cache_hash_table_test):
	Ditto.

	* gpmevent.c (Freceive_gpm_event): Remove NUM_EVENTS, a debugging
	variable set but not used.
	* miscplay.c (reset_parsestate):
	Use (void) for the arglist in the definition of this function.
	* miscplay.c (parse_wave_complete): Ditto.

	* regex.c:
	* regex.c (optimize_on_failure_jump):
	* regex.c (regex_compile):
	* regex.c (at_begline_loc_p): Remove SYNTAX from the arglist for
	this, now unused.
	* regex.c (at_endline_loc_p): Ditto.
	* regex.c (compile_range): Ditto. Also remove REGNUM, set but not
	used.
	* regex.c (expression_match_null_string_p): Remove BUFP from the
	arglist for this, now unused.
	* search.c (matcher_overflow):
	Use (void) for the arglist in the definition of this function.
	* sysdll.c (dll_error):
	Ditto.

2025-02-24  Aidan Kehoe  <kehoea@parhasard.net>

	* number.c (Fcanonicalize_number):
	Error if NUMBER is not a number.
	* number.c (Fcoerce_number):
	Ditto. Give a better error message if TYPE is not supported.

2025-02-24  Aidan Kehoe  <kehoea@parhasard.net>

	* chartab.c:
	* chartab.c (word_boundary_p):
	Modernise the return type for this. Use EXTERNAL_LISP_LOOP_2()
	when examining Vword_separating_categories,
	Vword_combining_categories, so we error instead of provoking an
	infinite loop.
	* chartab.h:
	Update the return type for word_boundary_p().

2025-02-23  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fset):
	Call DUMPEDP on XPNTRVAL (valcontents) here, placating the union
	build. Thank you Mats Lidell and the buildbot.

2025-02-23  Aidan Kehoe  <kehoea@parhasard.net>

	Mark and dump through the VALUE field of the symbol-value-forward
	objects when appropriate, removing the need for staticpro() for
	those objects.
	Use XD_BLOCK_DATA_PTR to describe staticpros, struct
	console_methods.device_specific_frame_props.
	Remove the XD_DATA_POINTER description type, no longer needed now
	more fine-grained descriptions appropriate.

	* .gdbinit.in.in (Lisp): Add a couple of new symbol-value-magic
	types for this.
	* alloc.c:
	* alloc.c (old_alloc_sized_lcrecord_1): New. Equivalent to the
	following but with a C_READONLY_P flag; if this is non-zero, mark
	the returned object as C_READONLY (and LISP_READONLY, MARKed), and
	do not add it to all_lcrecords.

	* alloc.c (old_alloc_sized_lcrecord): Implement it in terms of
	old_alloc_sized_lcrecord_1().
	* alloc.c (old_alloc_sized_c_readonly_lcrecord). New. Call
	old_alloc_sized_lcrecord_1() with C_READONLY_P 1.
	* alloc.c (make_lcrecord_list): Correct the type of the SIZE
	argument to this.
	* alloc.c (alloc_managed_lcrecord_1): New. Refactored out to take
	a C_READONLY_P flag. Remove an #if 0'd block.
	* alloc.c (alloc_managed_lcrecord). Implement using
	alloc_managed_lcrecord_1().
	* alloc.c (free_managed_lcrecord): Unmark the record as C_READONLY.
	* alloc.c (alloc_automanaged_sized_lcrecord_1): New. Refactored
	out from the following, to take a C_READONLY_P flag.
	* alloc.c (alloc_automanaged_lcrecord): Implement in terms of
	previous.
	* alloc.c (alloc_automanaged_c_readonly_lcrecord) New. Used for
	symbol_value_forward_fixnum, symbol_value_forward_boolint.
	* alloc.c (staticpro_description_1): Use XD_BLOCK_DATA_PTR in
	this.
	* alloc.c (staticpro): No need for dump_add_root_lisp_object() in
	this now XD_BLOCK_DATA_PTR is used in the description.

	* buffer.c (DEFVAR_BUFFER_LOCAL_1):
	Implement this using DEFVAR_SYMVAL_FWD_OBJECT().
	* buffer.c (DEFVAR_BUFFER_DEFAULTS_MAGIC):
	Use DEFVAR_SYMVAL_FWD_OBJECT() to implement this.
	* console.c:
	Use XD_BLOCK_DATA_PTR to describe struct
	console_methods.device_specific_frame_props.
	* console.c (DEFVAR_CONSOLE_LOCAL_1):
	Implement this using DEFVAR_SYMVAL_FWD_OBJECT().
	* console.c (DEFVAR_CONSOLE_DEFAULTS_MAGIC):
	Ditto.
	* lrecord.h (enum lrecord_type):
	Add new entries, lrecord_type_symbol_value_forward_object (for
	when VALUE needs to be GCed) and
	lrecord_type_symbol_value_forward_fixnum,
	lrecord_type_symbol_value_forward_boolint, to allow pdump to dump
	the values without an explicit dump_add_opaque_int.
	* symbols.c:
	* symbols.c (static const struct memory_description
	symbol_value_magic_description_1): Revise this, the data pointer
	is no longer needed for the general symbol_value_magic
	description.
	* symbols.c (static const struct memory_description
	symbol_value_forward_object_description): New. Describe
	symbol_value_forward_object using XD_BLOCK_DATA_PTR.
	* symbols.c (static const struct memory_description
	symbol_value_forward_fixnum_description): New. Describe
	symbol_value_forward_fixnum using XD_BLOCK_DATA_PTR.
	* symbols.c (static const struct memory_description
	symbol_value_forward_boolint_description): New. Describe
	symbol_value_forward_boolint using XD_BLOCK_DATA_PTR.

	* symbols.c (do_symval_forwarding):
	Rearrange this to handle fixnums and boolint forwarding better,
	less need for casts.

	* symbols.c (set_default_buffer_slot_variable):
	Use symbol_value_forward_object() within this, rather than
	symbol_value_forward, now removed.
	* symbols.c (set_default_console_slot_variable):
	Ditto.
	* symbols.c (store_symval_forwarding):
	No need to check whether OVALUE is EQ to Qunbound, if we have
	already established that OVALUE is not SYMBOL_VALUE_MAGIC_P.
	Use the new symbol value magic types within this.
	* symbols.c (Fset):
	When making a SYMVAL_OBJECT_FORWARD unbound during unloading of a
	module, make its FORWARD pointer NULL and avoid GC choking.
	No longer unstaticpro_nodump().
	* symbols.c (default_value):
	Use XSYMBOL_VALUE_FORWARD_OBJECT() here.
	* symbols.c (symbol_value_buffer_local_info):
	Ditto.
	* symbols.c (init_symbols_once_early):
	Initialize the new symbol_value_forward objects.
	* symbols.c (defvar_magic):
	Change the type of the second arg here, to const struct
	symbol_value_magic *.
	* symeval.h:
	* symeval.h (struct symbol_value_magic):
	Revise this, don't include the VALUE * field, only used by a
	subset of those types that are SYMBOL_VALUE_MAGIC_P().
	* symeval.h (struct symbol_value_forward_object): New. A
	symbol_value_forward that points to a Lisp_Object and that should
	be dumped and GCed as such.
	* symeval.h (struct symbol_value_forward_fixnum): New. A
	symbol_value_forward that points to a Fixnum and that should
	be dumped as such; this fixnum can be ignored for GC.
	* symeval.h (struct symbol_value_forward_boolint): New. A
	symbol_value_forward that points to a Boolint and that should
	be dumped as such; this boolint can be ignored for GC.
	* symeval.h (struct symbol_value_buffer_local):
	Add a comment to the MAGIC field of this structure.
	* symeval.h (DEFVAR_SYMVAL_FWD_NON_LISP): New. Common
	implementation of DEFVAR_SYMVAL_FWD_FIXNUM(),
	DEFVAR_SYMVAL_FWD_BOOL().
	Allocate the structure on the heap rather than in the C data
	segment, avoiding leaking the original structure
	post-pdump_load().
	* symeval.h (DEFVAR_SYMVAL_FWD_OBJECT): Heavily revised. Allocate
	the struct symbol_value_forward_object as a Lisp object, don't
	mark it c_readonly (which means it will now be traversed for GC).
	* symeval.h (DEFVAR_LISP_MAGIC):
	Move this #define together with the others that use
	DEFVAR_SYMVAL_FWD_OBJECT().

2025-02-22  Aidan Kehoe  <kehoea@parhasard.net>

	Remove support for byte-compile-dynamic at runtime, no longer
	worth the decrease in speed and difficulties with files being
	recompiled and offsets getting incorrect with with RAM sizes as
	they are. I note GNU has already done this.
	
	* alloc.c (Fmake_byte_code):
	No longer accept INSTRUCTIIONS as a (FILE . POS) lazy offset.
	* bytecode.c:
	* bytecode.c (optimize_compiled_function):
	No longer call Ffetch_bytecode() from within this.
	* bytecode.c (Ffetch_bytecode): Removed.
	* bytecode.c (syms_of_bytecode): Remove its DEFSUBR.
	* doc.c (get_doc_string): Clarify that the functionality to load
	bytee code instructions and constants will be removed.
	* doc.c (read_doc_string): Remove this, no longer used.
	* lisp.h: Remove its declaration.
	* lread.c (read_compiled_function):
	Always immediately load lazy byte code instructions. Bracket this
	with #ifdef NEED_TO_HANDLE_21_4_CODE.

2025-02-22  Aidan Kehoe  <kehoea@parhasard.net>

	Avoid difficulties with byte-compile-dynamic and print-gensym,
	print-circle, just load the instructions and the compiled
	function constants if there might be a gensym or a recursive
	object in them, allowing them to reference gensyms in the argument
	list.
	* doc.c (get_doc_string): Make this non-static.
	* lisp.h: Declare it.
	* lread.c (read_compiled_function):
	Use it here.

2025-02-19  Aidan Kehoe  <kehoea@parhasard.net>

	Delay calls to FcInit() until
	lwlib-fonts.c:xft_open_font_by_name() or
	fontcolor-xlike-inc.c:xft_find_charset_font(), avoiding updating
	out-of-tree cache files at build time, something Gentoo does not
	like. Thank you for the bug report, Mats Lidell.
	* emacs.c (main_1):
	Remove the call to reinit_vars_of_font_mgr() here.
	* font-mgr.c (reinit_vars_of_font_mgr): Removed. All it did was
	call FcInit() basically directly after pdump_load(), for which
	there is no need, reasonable to delay until we open an X11 device.
	* symsinit.h:
	Remove its declaration.

2025-02-19  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c (re_match_2_internal):
	Correct an assertion here that was incompletely merged from GNU's code,
	picked up by Stephen Turnbull on an M1 mac, of course P isn't
	guaranteed to be >= BUFP->BUFFER, since P points into the stack
	copy of BUFP->BUFFER on XEmacs. Thank you Steve!

2025-02-14  Aidan Kehoe  <kehoea@parhasard.net>

	New data description enumeration values:
	1. XD_BLOCK_DATA_PTR, like XD_BLOCK_PTR but describing pointers
	into the C data segment. Added in preparation for further work.
	2. XD_MEMORY_DESCRIPTION, used for pointers to struct
	memory_description, will be useful if error checking added to
	pdump.
	2. XD_SIZED_MEMORY_DESCRIPTION, used for pointers to struct
	sized_memory_description, same motivation as previous.

	* alloc.c:
	* alloc.c (static const struct sized_memory_description
	c_data_pointer_description): Removed.
	* alloc.c (static const struct sized_memory_description
	memory_description_description): New.
	Use this to describe lrecord_memory_descriptions.
	
	* dumper.c (pdump_register_sub):
	Handle XD_BLOCK_DATA_PTR like XD_BLOCK_PTR, but add a
	corresponding entry to pdump_root_blocks in order that the address
	in the C data segment be updated correctly during
	pdump_load_finish().
	Handle XD_MEMORY_DESCRIPTION, XD_SIZED_MEMORY_DESCRIPTION like
	XD_DATA_POINTER.
	* dumper.c (pdump_store_new_pointer_offsets):
	Handle XD_BLOCK_DATA_PTR like XD_BLOCK_PTR here.
	* dumper.c (pdump_reloc_one): Ditto.
	Update some aspects of an outdated comment from Ben.
	* file-coding.c: Use XD_SIZED_MEMORY_DESCRIPTION in describing
	extra_description, stream_description within struct
	coding_system_methods.
	* gc.c (lispdesc_one_description_line_size):
	Add entries for XD_MEMORY_DESCRIPTION, XD_SIZED_MEMORY_DESCRIPTION.
	Handle XD_BLOCK_DATA_PTR like XD_BLOCK_PTR here.
	* gc.c (kkcc_marking): Ditto.
	* lrecord.h:
	Document XD_BLOCK_DATA_PTR, XD_MEMORY_DESCRIPTION,
	XD_SIZED_MEMORY_DESCRIPTION.
	* lrecord.h (enum memory_description_type):
	Add the enumeration values.
	* lstream.c: Use XD_SIZED_MEMORY_DESCRIPTION to describe
	extra_description within struct lstream_implementation.
	* specifier.c: Use XD_SIZED_MEMORY_DESCRIPTION to describe
	extra_description within struct specifier_methods.

2025-02-13  Aidan Kehoe  <kehoea@parhasard.net>

	Incorporate Stefan Monnier's change of 0683b6fa90db, 2000-03-26,
	which adds a distinct type of circularity checking for non-greedy
	operators.
	This can be optimized away if we know an expression cannot match
	the null string. Use our existing infrastructure for this (which
	had been used at runtime previous to 0b8b6fc94d06). Extend this to
	so we can determine if a duplicate instruction can match the null
	string.

	* regex.c: Update some comments at the opening of this file.
	* regex.c (enum): Add `on_failure_jump_nastyloop'.
	* regex.c (print_partial_compiled_pattern): Print it.
	* regex.c (CHECK_INFINITE_LOOP): Set a local variable indicating th
	* regex.c (enum reg_match_null_info): New. Enumeration documenting
	whether a group can match the null string, or if that is not yet
	known.
	* regex.c (reg_info_t): New. Type used by optimize_on_failure_jump
	for metadata about groups (offset within the pattern, whether they
	can match the null string).
	
	* regex.c (optimize_on_failure_jump): Rename from
	fixup_on_failure_jump_smart. When we encounter start_memory, save
	the offset within the string (don't call group_match_null_string_p
	yet, since that depends on the on_failure_jump_smart handling
	having done its work).
	When on_failure_jump_nastyloop is encountered, call
	group_match_null_string_p() on the groups seen so far, and rewrite
	the expression to on_failure_jump if the expression cannot match
	the null string.
	* regex.c (regex_compile):
	Use on_failure_jump_nastyloop here.
	* regex.c (re_compile_fastmap): Fix some indentation.
	* regex.c (re_search_2):
	* regex.c (re_match_2_internal):
	Implement on_failure_jump_nastyloop, thank you Stefan Monnier.
	* regex.c (expression_match_null_string_p): New.
	* regex.c (group_match_null_string_p): Update to take a reginfo_t
	argument. 
	* regex.c (alt_match_null_string_p): Ditto.
	* regex.c (common_op_match_null_string_p): Ditto. If
	on_failure_jump_loop or on_failure_jump_nastyloop is encountered,
	return true.

2025-02-12  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c:
	* regex.c (print_partial_compiled_pattern):
	Print /succeed for the succeed opcode.  Print accurate
	destinations for succeed_n, jump_n, set_number_at.
	* regex.c (DEBUG_COMPILE_PRINT): New. Analogous to
	DEBUG_MATCH_PRINT(), DEBUG_FAIL_PRINT().
	* regex.c (ENSURE_FAIL_STACK): Call DEBUG_MATCH_PRINT(), not
	DEBUG_PRINT(). 
	* regex.c (PUSH_FAILURE_REG): Ditto.
	* regex.c (POP_FAILURE_REG): Ditto.
	* regex.c (CHECK_INFINITE_LOOP): Ditto.
	* regex.c (PUSH_FAILURE_POINT): Ditto.
	* regex.c (POP_FAILURE_POINT): Ditto.
	* regex.c (fixup_on_failure_jump_smart):
	Call DEBUG_COMPILE_PRINT(), not DEBUG_PRINT().
	* regex.c (regex_compile):
	Clarify the documentation of re_ngroups.
	Use DEBUG_COMPILE_PRINT(), not DEBUG_PRINT().
	Correct some documentation now on_failure_jump_exclusive is used
	for ".*\n".
	* regex.c (mutually_exclusive_p):
	Use DEBUG_COMPILE_PRINT(), not DEBUG_PRINT() here.
	* regex.c (re_match_2_internal):
	Use DEBUG_MATCH_PRINT(), not DEBUG_PRINT() here.
	* regex.h (struct re_pattern_buffer):
	Clarify documentation of the re_ngroups field.

2025-02-03  Aidan Kehoe  <kehoea@parhasard.net>

	* cmds.c:
	Make Qkill_region available here.
	* cmds.c (Fdelete_char):
	Don't call Qkill_forward_chars from this function if KILLP, it has
	never added any value compared to calling Qkill_region directly as
	far back as our version control goes, since it is always supplied
	a fixnum argument.
	* cmds.c (syms_of_cmds):
	Supply a DEFSYMBOL for Qkill_region

2025-02-03  Aidan Kehoe  <kehoea@parhasard.net>

	Add the skip_ascii() optimization to the multibyte coding systems
	if the relevant charsets make that appropriate.
	Also provide a character_tell() method to allow the buffer
	insertion code to work out how many characters were inserted
	without counting them itself.

	* mule-coding.c:
	* mule-coding.c (struct multibyte_coding_stream):
	Store the count of characters seen in the coding stream.
	* mule-coding.c (multibyte_decode):
	Check the precedence array flags for whether we can call
	skip_ascii().
	Call it when appropriate, on the model of the same code in the
	UTF-8 decoder.
	* mule-coding.c (multibyte_character_tell):
	New method.
	* mule-coding.c (coding_system_type_create_mule_coding):
	Declare that multibyte has this method.

	* file-coding.c (print_coding_system):
	In passing, print the coding system's UID as we do for every other
	Lisp object.

2025-01-20  Aidan Kehoe  <kehoea@parhasard.net>

	Now NEWGC is gone, make the precedence_array objects dumpable.
	Use this in mule-coding.c for the multibyte coding systems and
	Big4, shift_jis.

	* lisp.h:
	Declare precedence_array_to_list(), for the sake of
	multibyte_getprop().

	* mule-coding.c (Vshift_jis_precedence, Vbig5_precedence):
	Removed. Store them in the corresponding coding system objects
	instead.

	* mule-coding.c (struct multibyte_coding_system):
	Put the predence array object into the multibyte_coding_stream as
	had always been the intention.
	* mule-coding.c (CODING_SYSTEM_MBCS_CHARSET_PRECEDENCE): New macro.
	* mule-coding.c (XCODING_SYSTEM_MBCS_CHARSET_PRECEDENCE): New macro.

	* mule-coding.c (struct multibyte_coding_stream):
	Remove the precedence array object from the coding stream, as was
	always the intention.
	* mule-coding.c (multibyte_coding_system_description): Update this.
	* mule-coding.c (multibyte_coding_stream_description): Update this.

	* mule-coding.c (multibyte_init_coding_stream):
	Remove generating the precedence_array from this function, done
	once at dump time for the coding system object itself instead.

	* mule-coding.c (multibyte_decode): Fetch the precedence array
	from the right place.
	* mule-coding.c (multibyte_encode): Ditto.
	* mule-coding.c (multibyte_init):
	Allocate the precedence array when initializing the coding
	system.

	* mule-coding.c (multibyte_putprop):
	Use add_charset_to_precedence_array() when Qcharsets was
	specified.

	* mule-coding.c (multibyte_getprop):
	Call precedence_array_to_list() when Qcharsets was specified.

	* mule-coding.c (multibyte_print):
	Print the charset names of the precedence array in this.

	* mule-coding.c (struct shift_jis_coding_system):
	Store the charset precedence in the shift_jis coding system
	object.
	* mule-coding.c (CODING_SYSTEM_SHIFT_JIS_CHARSET_PRECEDENCE): New
	macro.
	* mule-coding.c (XCODING_SYSTEM_SHIFT_JIS_CHARSET_PRECEDENCE): New
	macro.
	* mule-coding.c (shift_jis_encode): Fetch the precedence array
	from the right place.
	* mule-coding.c (shift_jis_init):
	Allocate the precedence array when initializing the coding
	system.

	* mule-coding.c (Fencode_shift_jis_char):
	Fetch the precedence array from the coding system object.

	* mule-coding.c (struct big5_coding_system):
	Store the charset precedence in the big5 coding system
	object.

	* mule-coding.c (CODING_SYSTEM_BIG5_CHARSET_PRECEDENCE): New macro.
	* mule-coding.c (XCODING_SYSTEM_BIG5_CHARSET_PRECEDENCE): New macro.
	* mule-coding.c (big5_encode): Fetch the precedence array
	from the right place.
	* mule-coding.c (big5_init):
	Allocate the precedence array when initializing the coding
	system.

	* mule-coding.c (Fencode_big5_char): Fetch the precedence array
	from the right place.
	* mule-coding.c (coding_system_type_create_mule_coding):
	No need for the finalize method for the multibyte coding systems,
	the precedence array's finalize method will be invoked if needed,
	and it usually won't be needed.
	Declare init methods for shift_jis, big5.
	* mule-coding.c (vars_of_mule_coding):
	Remove declaration for Vshift_jis_precedence, Vbig5_precedence.
	* mule-coding.c (init_mule_coding):
	This is now empty.
	* unicode.c:
	Define the precedence_array as a dumpable lisp object.
	* unicode.c (precedence_array_to_list):
	Make this function non-static.

2025-02-03  Aidan Kehoe  <kehoea@parhasard.net>

	Remove --without-mule as an option given maturity of the Mule
	code and limited development resources to devote to non-Mule bugs
	and features.

	Use unifdef -DMULE for this, which applies fairly cleanly apart
	from in regex.c, where most of the #ifdef MULE code had to be
	changed to #ifdef emacs.
	This changes also removes HAVE_DEFAULT_EOL_DETECTION, only
	relevant for non-MULE.

	* Makefile.in.in:
	* Makefile.in.in (mule_objs):
	* alloc.c:
	* alloc.c (init_string_ascii_end):
	* alloc.c (make_string):
	* alloc.c (disksave_object_finalization):
	* buffer.c:
	* buffer.c (finish_init_buffer):
	* buffer.c (syms_of_buffer):
	* buffer.c (common_init_complex_vars_of_buffer):
	* buffer.h:
	* buffer.h (struct buffer_text):
	* buffer.h (BUF_FORMAT):
	* bufslots.h:
	* charset.h:
	* chartab.c:
	* chartab.c (char_table_hash):
	* chartab.c (char_table_type_to_symbol):
	* chartab.c (symbol_to_char_table_type):
	* chartab.c (char_table_default_for_type):
	* chartab.c (decode_char_table_range):
	* chartab.c (Fchar_table_type_list):
	* chartab.c (Fvalid_char_table_type_p):
	* chartab.c (check_valid_char_table_value):
	* chartab.c (put_char_table_range):
	* chartab.c (map_char_table):
	* chartab.c (syms_of_chartab):
	* chartab.c (complex_vars_of_chartab):
	* chartab.h:
	* chartab.h (CHARTAB_LEVELS):
	* chartab.h (enum char_table_type):
	* chartab.h (CHAR_TABLE_CATEGORY_P):
	* chartab.h (enum chartab_range_type):
	* compiler.h:
	* config.h.in:
	* console-msw-impl.h (struct mswindows_frame):
	* console-msw-impl.h (FRAME_MSWINDOWS_CURSOR_X):
	* console-msw-impl.h (CHECK_MSWINDOWS_FRAME):
	* console-msw.h:
	* console-stream.c (stream_text_width):
	* depend (mule-ccl.o):
	* device-x.c:
	* device-x.c (coding_system_of_xrm_database):
	* device-x.c (x_init_device):
	* device-x.c (syms_of_device_x):
	* device.c (allocate_device):
	* devslots.h (MARKED_SLOT):
	* editfns.c (Ftranslate_region):
	* emacs.c (main_1):
	* emacs.c (main):
	* event-Xt.c (x_keysym_to_character):
	* event-msw.c (mswindows_wnd_proc):
	* events.c (character_to_event):
	* events.h:
	* events.h (struct Lisp_Key_Data):
	* faces.c:
	* faces.c (syms_of_faces):
	* faces.c (complex_vars_of_faces):
	* file-coding.c:
	* file-coding.c (make_coding_system_1):
	* file-coding.c (no_conversion_encode):
	* file-coding.c (complex_vars_of_file_coding):
	* file-coding.h:
	* fileio.c (a_write):
	* fontcolor-gtk.c (console_type_create_fontcolor_gtk):
	* fontcolor-gtk.c (vars_of_fontcolor_gtk):
	* fontcolor-msw.c:
	* fontcolor-msw.c (console_type_create_fontcolor_mswindows):
	* fontcolor-msw.c (reinit_vars_of_fontcolor_mswindows):
	* fontcolor-msw.c (vars_of_fontcolor_mswindows):
	* fontcolor-tty.c:
	* fontcolor-tty.c (tty_initialize_font_instance):
	* fontcolor-tty.c (console_type_create_fontcolor_tty):
	* fontcolor-tty.c (vars_of_fontcolor_tty):
	* fontcolor-x.c (console_type_create_fontcolor_x):
	* fontcolor-x.c (vars_of_fontcolor_x):
	* fontcolor-xlike-inc.c:
	* fontcolor.c:
	* fontcolor.c (font_instantiate):
	* fontcolor.c (specifier_type_create_fontcolor):
	* fontcolor.c (reinit_specifier_type_create_fontcolor):
	* frame-x.c (x_set_frame_text_value):
	* insdel.c (GAP_CAN_HOLD_SIZE_P):
	* insdel.c (buffer_insert_string_1):
	* insdel.c (buffer_delete_range):
	* insdel.c (buffer_replace_char):
	* insdel.c (init_buffer_text):
	* intl-win32.c:
	* intl-win32.c (lcid_to_locale_mule_or_no):
	* intl-win32.c (determine_code_page):
	* intl-win32.c (mswindows_multibyte_to_unicode_putprop):
	* intl-win32.c (syms_of_intl_win32):
	* intl-win32.c (vars_of_intl_win32):
	* intl-win32.c (complex_vars_of_intl_win32):
	* intl-win32.c (init_intl_win32):
	* intl-x.c:
	* intl-x.c (init_x_locale):
	* intl.c (vars_of_intl):
	* keymap.c (Ftext_char_description):
	* lisp.h:
	* lstream.h:
	* make-src-depend (PrintPatternDeps):
	* redisplay-msw.c (mswindows_output_cursor):
	* redisplay-msw.c (mswindows_output_display_block):
	* redisplay-x.c:
	* redisplay-x.c (separate_textual_runs_xft_mule):
	* redisplay-x.c (separate_textual_runs):
	* redisplay-xlike-inc.c:
	* redisplay-xlike-inc.c (XLIKE_output_display_block):
	* regex.c:
	* regex.c (enum):
	* regex.c (print_partial_compiled_pattern):
	* regex.c (re_error_msgid):
	* regex.c (re_wctype_to_bit):
	* regex.c (regex_compile):
	* regex.c (compile_char_class):
	* regex.c (re_compile_fastmap):
	* regex.c (re_search_2):
	* regex.c (re_match_2_internal):
	* regex.h (RE_LISP_CONTEXT_ARGS):
	* regex.h (enum):
	* search.c:
	* search.c (byte_scan_buffer):
	* search.c (byte_find_next_ichar_in_string):
	* search.c (trivial_regexp_p):
	* search.c (search_buffer):
	* search.c (boyer_moore):
	* select-x.c (hack_motif_clipboard_selection):
	* select-x.c (Fx_store_cutbuffer_internal):
	* select-xlike-inc.c (lisp_data_to_selection_data):
	* select.c (Fown_selection_internal):
	* select.c (Fget_selection_internal):
	* specifier.c (specifier_instance_from_inst_list):
	* syntax.c:
	* syntax.c (scan_words):
	* syntax.h:
	* sysdep.c (qxe_readdir):
	* sysdep.c (qxe_closedir):
	* tests.c (Ftest_data_format_conversion):
	* tests.c (DFC_CHECK_DATA_COND_MULE):
	* text.c:
	* text.c (round_up_to_valid_ichar):
	* text.c (round_down_to_valid_ichar):
	* text.c (copy_text_between_formats):
	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	* text.c (internal_to_external_charset_codepoint):
	* text.c (get_external_charset_codepoint):
	* text.c (reinit_vars_of_text):
	* text.c (vars_of_text):
	* text.h:
	* unicode.c:
	* unicode.c (unicode_encode):
	* unicode.c (syms_of_unicode):
	* unicode.c (complex_vars_of_unicode):
	* unicode.c (init_unicode):
	* unicode.h:
	* win32.c (mswindows_lisp_error_1):
	* xemacs.def.in.in:

2025-02-02  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Fwrite_region_internal):
	Increase the buffer size within this function, speeding up
	autosave of large files significantly in my testing.
	* fileio.c (Fdo_auto_save):
	GCPRO around calling auto save handlers in a more idiomatic way,
	that also avoids issues with Lisp code from echo_area_message().

2025-02-02  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c:
	Make obarray larger by default given that its htentries will leak
	on resizing after pdump_load().
	* symbols.c:
	OBARRAY_SIZE hasn't be used in this file since 2016, remove it.

2025-02-02  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (value_slot_past_magic):
	Fix a very old bug in this function, don't check whether
	*store_pointer is SYMBOL_VALUE_LISP_MAGIC_P() and then access the
	SHADOWED field of SYM, which cannot be SYMBOL_VALUE_LISP_MAGIC_P,
	since we know it is a symbol, a distinct type.

2025-02-02  Aidan Kehoe  <kehoea@parhasard.net>

	* cmds.c (Fself_insert_internal): Removed. Moved to cmdloop.el.
	* cmds.c (syms_of_cmds):
	Remove its DEFSUBR().

2025-02-01  Aidan Kehoe  <kehoea@parhasard.net>

	Suppress some warnings provoked in emacs.c, 64-bit native
	Windows.

	* emacs.c:
	* emacs.c (make_argc_argv):
	Correct the type of ARGV in this, Extbyte *** rather than Wexttext
	***, it is not used in Windows so the T string ambiguity never
	arose.
	Check the length of the list fits in a C int before
	casting. Adjust types in the body of the function.
	* emacs.c (free_argc_argv):
	Correct the type of ARGV in this.
	* emacs.c (argmatch):
	Modernise the declaration of this. Take MINLEN as a Charcount as
	works best with the body of the function.
	* emacs.c (SHEBANG_PROGNAME_LENGTH):
	No longer cast this to int, since we are comparing it to the
	result of wext_strlen(), a size_t.
	* emacs.c (main_1):
	When converting the windows termination handle to a HANDLE, use
	strotoll if we're running on 64-bit Windows.
	* emacs.c (Fkill_emacs):
	Cast XFIXNUM (arg) to int for standards compliance with C.
	* lisp.h:
	Update declaration of make_argc_argv(), free_argc_argv().
	* text.h (wext_strtoll):
	New #define.

2025-02-01  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h:
	* number.h (DEFINE_C_INTEGER_TYPE_LISP_CONVERSION):
	Suppress a couple of warnings provoked in headers, 64-bit native
	Windows.

2025-01-27  Aidan Kehoe  <kehoea@parhasard.net>

	* s/windowsnt.h:
	If we have Visual Studio 2015 or newer, #define HAVE_SNPRINTF and
	HAVE_VSNPRINTF as is appropriate.

2025-01-23  Aidan Kehoe  <kehoea@parhasard.net>

	Rename various C variables that reflect Fixnums from Vfoo_bar_baz
	to foo_bar_baz. I had introduced them all and it was misleading,
	suggesting that they were Lisp objects.

	* alloc.c:
	* alloc.c (vars_of_alloc):
	* bytecode.c (UNUSED):
	* data.c:
	* data.c (vars_of_data):
	* eval.c:
	* eval.c (bind_multiple_value_limits):
	* eval.c (Fmultiple_value_call):
	* event-Xt.c:
	* event-Xt.c (x_event_to_emacs_event):
	* event-Xt.c (vars_of_event_Xt):
	* gc.c:
	* lisp.h:
	* text.c:
	* text.c (vars_of_text):

2025-01-23  Aidan Kehoe  <kehoea@parhasard.net>

	Declare all those C variables for which DEFVAR_BOOL() or
	DEFVAR_CONST_BOOL() are used, as type Boolint. Generally a good
	idea, and done in preparation for further changes.

	* gc.c:
	* gc.c (vars_of_gc):
	Remove a duplicate DEFVAR_BOOL() for purify_flag, already done in
	alloc.c. 

	* alloc.c:
	* alloc.c (vars_of_alloc):
	Remove some incorrect information regarding purify_flag.
	
	* abbrev.c:
	* buffer.c:
	* bytecode.c:
	* bytecode.c (meter_code):
	* console-x.c:
	* console-x.c (x_initially_selected_for_input):
	* data.c:
	* data.c (eq_with_ebola_notice):
	* dired-msw.c:
	* editfns.c:
	* emacs.c:
	* emodules.c:
	* eval.c:
	* event-Xt.c:
	* event-gtk.c:
	* event-msw.c:
	* event-stream.c:
	* extents.c:
	* file-coding.c:
	* fileio.c:
	* filelock.c:
	* fontcolor-x.c:
	* frame.c:
	* glyphs.c:
	* lread.c:
	* menubar.c:
	* minibuf.c:
	* process.c:
	* redisplay.c:
	* redisplay.c (WINDOW_SCROLLED):
	* select-x.c:
	* symbols.c:
	* syntax.c:
	* window.c:
	Update declarations as above.

2025-01-20  Aidan Kehoe  <kehoea@parhasard.net>

	* emacs.c (main_1):
	Consolidate a couple of blocks to be called after successful
	pdump_load() for clarity.

2025-01-20  Aidan Kehoe  <kehoea@parhasard.net>

	Remove init_alloc_early(), which was basically empty.
	Move the error-checking code that was in it to
	common_init_alloc_early().
	Delegate much of what was in common_init_alloc_early() to the C
	implementation.
	* alloc.c:
	* alloc.c (Error_Behavior ERROR_ME, ERROR_ME_NOT, ERROR_ME_WARN,
	ERROR_ME_DEBUG_WARN): Initialize these statically.
	* alloc.c (init_alloc_early): Removed.
	* alloc.c (common_init_alloc_early):
	Remove initialization of various integers to zero, done by the C
	implementation anyway.
	staticpros_nodump is going to be zero at the point this is called,
	no need to check.
	* emacs.c (main_1):
	No longer call init_alloc_early().
	* symsinit.h:
	Remove its declaration.

2025-01-20  Aidan Kehoe  <kehoea@parhasard.net>

	init_eistring_once_early(), reinit_eistring_once_early() can be
	delegated to the C implementation, do that.
	* emacs.c (main_1):
	Don't call init_eistring_once_early() or reinit_eistring_early()
	in this function.
	Merge two blocks that are guarded by if (!initialized) for
	clarity.
	* symsinit.h:
	Remove the declarations of init_eistring_once_early(),
	reinit_eistring_once_early().
	* text.c (Eistring the_eistring_malloc_zero_init): Give this a
	static initialization with mallocp_ equal to one.
	Trust the C implementation to initialize the_eistring_zero_init to
	all zeroes.
	* text.c (reinit_eistring_early): Removed.
	* text.c (init_eistring_once_early): Removed.

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	Remove reinit_opaque_early(); all it does is creates a free list
	of Lisp_Opaque_Ptrs, something alloc.c will do automatically
	anyway.

	* emacs.c (main_1):
	Remove call to reinit_opaque_early() from here.
	* opaque.c:
	* opaque.c (make_opaque_ptr):
	Allocate the opaque_ptr using ALLOC_NORMAL_LISP_OBJECT(), which
	ultimately calls alloc_managed_lcrecord on a free list created on
	the fly anyway.
	* opaque.c (free_opaque_ptr):
	Call free_normal_lisp_object() here, which ultimately calls
	free_managed_lcrecord() anyway.
	* symsinit.h:
	Remove the declaration for reinit_opaque_early().

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	Move the call to fatal() when a window system was specified that
	we don't support, to check_compatibile_window_system().
	* emacs.c (check_compatible_window_system):
	Check MUST against an array of supported window systems, die if it
	is not encountered.
	* emacs.c (main_1):
	Remove separate explicit calls to fatal() from main_1().

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	Remove a couple of guards around catching signals that are irrelevant
	with PDUMP and are likely to cause problems with
	#'run-emacs-from-temacs.
	* data.c (init_data_very_early):
	* signal.c (init_signals_very_early):

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	Move compute_memusage_stats_length() to
	disksave_object_finalization() from reinit_vars_of_alloc(), since
	it can be done at dump time once all the object types have been
	initialized.
	This means that reinit_vars_of_alloc() is now empty, remove it.
	Allocate lrecord_stats_metadata on the heap, dump it using
	dump_add_root_block_ptr(), so at pdump_load() it's just a pointer
	being set rather than copying the block to BSS.

	* alloc.c (disksave_object_finalization):
	Call compute_memusage_stats_length() here.
	* alloc.c (reinit_vars_of_alloc): Removed.
	* alloc.c (init_alloc_once_early): Add lrecord_stats_metadata to
	the dump file #ifdef MEMORY_USAGE_STATS.

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	Move the Lstream_implementation object to the dump file, avoiding
	the need to explicitly re-initialize their methods post
	pdump_load ().

	* emacs.c (main_1):
	Remove creation of the lstream types from this block that dealt
	with post-pdump_load() call. Now the block is empty, remove it
	entirely.

	* event-msw.c (init_slurp_stream): Removed.
	* event-msw.c (init_shove_stream): Removed.
	* event-msw.c (init_winsock_stream): Removed.	
	* event-msw.c (vars_of_event_mswindows):
	Move DEFINE_LSTREAM_IMPLEMENTATION() for the various
	mswindows-specific lstream types to this function. Move the
	LSTREAM_HAS_METHOD() calls here too.

	* file-coding.c (lstream_type_create_file_coding): Removed.
	* file-coding.c (vars_of_file_coding):
	Move DEFINE_LSTREAM_IMPLEMENTATION() for the coding lstream to
	this function. Move the LSTREAM_HAS_METHOD() calls here too.

	* lstream.c:
	* lstream.c (lstream_type_create): Removed.
	* lstream.c (vars_of_lstream):
	Move DEFINE_LSTREAM_IMPLEMENTATION() for the various other lstream
	types to this function. Move the LSTREAM_HAS_METHOD() calls here
	too.

	* lstream.h:
	* lstream.h (DEFINE_LSTREAM_IMPLEMENTATION):
	* lstream.h (DEFINE_LSTREAM_IMPLEMENTATION_WITH_DATA):
	Revise this to xnew_and_zero() the Lstream implementation (rather
	than having it in the C data segment), and to make it known to the
	dump file.

	* lstream.h (DECLARE_LSTREAM): Declare an Lstream as a pointer
	rather than an array.
	Make lstream_implementation_description available to
	file-coding.c, event-msw.c.
	* symsinit.h:
	Remove declarations for functions to initialize the lstreams post
	pdump_load(), no longer needed.

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	* emacs.c (main_1):
	the_structure_type_dynarr in lread.c is dumped, there is no value
	to reiniting the structure types after pdump_load(), avoid this.

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	There's no actual need for the various init_gc_* functions, remove
	them.

	* emacs.c (main_1):
	Remove calls to init_gc_early (), init_gc_once_early(),
	reinit_gc_early(), not needed.
	Examine GC_CONS_THRESHOLD rather than ALWAYS_GC if ERROR_CHECK_GC
	and deciding whether to GC after calling the complex_vars_of()
	functions.

	* gc.c (int always_gc): Removed.
	Remove ALWAYS_GC, equivalent to setting gc-cons-threshold to -1,
	not visible to Lisp.
	* gc.c (recompute_need_to_garbage_collect):
	No longer check it in this function.
	* gc.c (show_gc_cursor_and_message): Update a comment now
	always_gc is gone.
	* gc.c (common_init_gc_early): Removed.
	This did various things that are better done by the portable
	dumper and by the C implementation.
	* gc.c (vars_of_gc): Trust the portable dumper to preserve
	gc_cons_percentage, gc_cons_threshold, Vgc_message.
	* gc.h:
	Remove the declarations for the various init_gc functions.

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	Remove the need to call init_lcrecord_lists after pdump_load(),
	just set a pointer into the dumped data instead, simplifying
	startup a little. Remove the initialization of
	lrecord_implementations_tablet to all zeroes, trust the C
	implementation to do that.

	* alloc.c (Vall_lcrecord_lists): New variable, a Lisp vector whose
	storage is to be used post pdump_load() for all_lcrecord_lists.
	* alloc.c (init_lcrecord_lists): Removed.
	* alloc.c (reinit_alloc_early):
	Just set all_lcrecord_lists to the vector data of
	Vall_lcrecord_lists, which is already garbage protected. Don't
	call init_lcrecord_lists().
	* alloc.c (init_alloc_once_early):
	During loadup initialize all_lcrecord_lists using xnew_array, move
	the former body of init_lcrecord_lists into this function.
	Initialize and staticpro() Vall_lcrecord_lists once vector objects
	are available.

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	* lstream.h (DECLARE_STACK_FIXED_BUFFER_LSTREAM):
	When declaring the Lisp_Object, initialize it to Qunbound,
	suppressing a compiler warning about a pointer to uninitialized
	data and provoking a more predictable error if we attempt to write
	to the stream before it's initialized.

	* lstream.h (INIT_STACK_FIXED_BUFFER_OUTPUT_STREAM):
	Do the initialization of the Lisp_Object to the stack lstream here.

2025-01-22  Aidan Kehoe  <kehoea@parhasard.net>

	Quiet various warnings when compiling on OpenBSD. Use snprintf()
	instead of sprintf() if available.
	Avoid strcpy(), strcat() since they don't do bounds checking, use
	emacs_printf_ascbyte instead.

	* alloc.c (pluralize_word):
	Be more careful about bounds checking in this function. Return the
	new length of the pluralized word.
	* alloc.c (pluralize_and_append):
	Use emacs_snprintf_ascbyte() instead of strcpy(), strcat(). Take
	BUFSIZE as an argument.
	* alloc.c (object_memory_usage_stats):
	Pass the buffer size to pluralize_and_append().
	* emacs.c:
	* emacs.c (assert_equal_failed):
	Use snprintf() if available. Inappropriate to use emacs_snprintf()
	when things are in an inconsistent state with XEmacs crashing.
	* event-Xt.c (x_reset_modifier_mapping):
	Document why I don't plan to remove a call to XKeycodeToKeysym().

2025-01-21  Aidan Kehoe  <kehoea@parhasard.net>

	Avoid calling various functions that require a working redisplay
	when the current window is on a stream device. Thank you for the
	bug report, Ulrich Müller.

	* window.h: Declare redisplayable_window_p() here.
	* indent.c (vmotion): Use it, don't attempt to scroll if redisplay
	infrastructure not available.
	* indent.c (vertical_motion_1): Use it, ditto.

	* window.c:
	* window.c (redisplayable_window_p): New. 
	* window.c (Fpos_visible_in_window_p):
	Return Qnil early if this is a window on a stream device.
	* window.c (Fwindow_end):
	Just return w->end_pos if WINDOW is on a stream device.
	* window.c (Fdelete_other_windows):
	Don't attempt to scroll if WINDOW is on a stream device.
	* window.c (window_scroll): Ditto.
	* window.c (Fcenter_to_window_line):
	Ditto.
	* window.c (get_current_pixel_pos):
	Return 0 if this window does not have an associated display
	buffer, rather than crashing.
	* window.c (Fcurrent_pixel_column): Call decode_window()
	appropriately in here.
	* window.c (Fcurrent_pixel_row): Ditto.

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	Move OBJECT_HAS_METHOD() calls to immediately follow
	INIT_LISP_OBJECT(), for clarity and to improve simplicity of
	startup (since many of the reinit_*_early() and *_objects_create()
	functions are no longer needed).

	* alloc.c (reinit_alloc_objects_early): Removed. Calls moved to
	init_alloc_once_early().
	* alloc.c (init_alloc_once_early):
	Call OBJECT_HAS_METHOD in this function
	* buffer.c (buffer_objects_create): Removed.
	* buffer.c (syms_of_buffer): Move its contents to this function,
	beside INIT_LISP_OBJECT().

	* bytecode.c (bytecode_objects_create): Removed.
	* bytecode.c (syms_of_bytecode): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* casetab.c (casetab_objects_create): Removed.
	* casetab.c (syms_of_casetab): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* chartab.c (chartab_objects_create): Removed.
	* chartab.c (syms_of_chartab): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* elhash.c:
	* elhash.c (hash_table_objects_create): Removed.
	* elhash.c (init_elhash_once_early): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* emacs.c (main_1):
	Remove calls to functions that are now no longer needed.

	* extents.c (extents_objects_create): Removed.
	* extents.c (syms_of_extents): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* faces.c (faces_objects_create): Removed.
	* faces.c (syms_of_faces): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* frame.c (frame_objects_create): Removed.
	* frame.c (init_frame): Correct some style here in passing.
	* frame.c (syms_of_frame): Move the contents of
	frame_object_create() to this function, beside INIT_LISP_OBJECT().

	* glyphs.c (glyphs_objects_create): Removed.
	* glyphs.c (syms_of_glyphs): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* lstream.c (lstream_objects_create): Removed.
	* lstream.c (syms_of_lstream): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* mule-charset.c (mule_charset_objects_create): Removed.
	* mule-charset.c (syms_of_mule_charset): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* process.c (reinit_process_early): Removed.
	* process.c (syms_of_process): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* rangetab.c:
	* rangetab.c (rangetab_objects_create): Removed.
	* rangetab.c (syms_of_rangetab): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* scrollbar.c (scrollbar_objects_create): Removed.
	* scrollbar.c (syms_of_scrollbar): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* specifier.c (specifier_objects_create): Removed.
	* specifier.c (syms_of_specifier): Move its contents to this
	function, beside INIT_LISP_OBJECT().

	* symbols.c: Remove the OBARRAY_SIZE #define in passing, no longer
	used in this file.
	* symbols.c (reinit_symbol_objects_early): Removed.
	* symbols.c (init_symbols_once_early): Move its contents to this
	function, beside INIT_LISP_OBJECT().
	* symsinit.h:
	Remove declarations for all the *_object_create() functions, no
	longer needed.

	* ui-gtk.c (ui_gtk_objects_create): Removed.
	* ui-gtk.c (syms_of_ui_gtk): Move its contents to this
	function, beside INIT_LISP_OBJECT().
	* window.c (window_objects_create): Removed.
	* window.c (syms_of_window): Move its contents to this
	function, beside INIT_LISP_OBJECT().

2025-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	Initialize the event stream objects using C macros, for symmetry,
	consistency with the specifier objects.

	* events.h:
	* events.h (struct event_stream):
	Rename the event_pending_p field of this to event_pending_p_cb,
	for symmetry with all the other fields.

	* events.h (DEFINE_EVENT_STREAM): New macro.
	Allocate an event stream object with xnew_and_zero(), and make the
	portable dumper aware of it.
	
	* events.h (EVENT_STREAM_HAS_METHOD): New macro, initialize a
	given method for an event stream.

	* events.h (HAS_EVENT_STREAM_METHOD_P): New macro, return non-zero
	if an event stream has a given method.

	* gpmevent.c (hook_event_callbacks_once):
	Adjust this given the new name for event_pending_p().

	* gpmevent.c (vars_of_gpmevent):
	Fix this in passing, staticpro() already does
	dump_add_root_lisp_object(), no need to do that explicitly.

	* event-Xt.c:
	* event-Xt.c (vars_of_event_Xt):
	Use the macros to initialize the event stream.

	* event-gtk.c:
	* event-gtk.c (vars_of_event_gtk):
	Use the macros to initialize the event stream.

	* event-msw.c:
	* event-msw.c (vars_of_event_mswindows):
	Use the macros to initialize the event stream.

	* event-stream.c:
	Adjust event_stream_description_1 to reflect the new name for the
	event_pending_p method.

	* event-stream.c (event_stream_event_pending_p):
	Adjust this function to reflect the new name for the
	event_pending_p method.

	* event-stream.c (event_stream_force_event_pending):
	Use HAVE_EVENT_STREAM_METHOD_P in this.

	* event-stream.c (event_stream_drain_queue):
	Ditto.
	* event-stream.c (Faccept_process_output):
	Update a comment here.

	* event-tty.c:
	* event-tty.c (vars_of_event_tty):
	Use the macros to initialize the event stream.

2025-01-18  Aidan Kehoe  <kehoea@parhasard.net>

	* device-gtk.c (gtk_init_device):
	Add a comment regarding a deprecated function which should stay.
	* device-gtk.c (Fgtk_keysym_on_keyboard_p):
	Use decode_gtk_device() rather than re-implementing it.
	* device-gtk.c (Fgtk_style_info):
	Ditto.
	* menubar-gtk.c:
	* menubar-gtk.c (menu_name_to_accelerator):
	Revise this to take a Lisp string, to respect our internal
	encoding, and to use our case infrastructure.
	* menubar-gtk.c (menu_convert):
	Move a statement after the declarations.
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	Call menu_name_to_accelerator with its new calling convention.
	* menubar-gtk.c (menu_create_menubar):
	Don't call gtk_widget_set_name() on ITEM before checking ITEM is
	non-NULL
	* toolbar-gtk.c (init_gtk_toolbar_stock_icons):
	Call make_lisp_hash_table() explicitly rather than call0 (intern
	("make-hash-table")).

2025-01-18  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	Move the declarations for Qzero, Qone, Qnull_pointer to this file
	(on union builds).
	* alloc.c (common_init_alloc_early):
	Move there initialization from here to init_alloc_once_early().
	* alloc.c (init_alloc_once_early):
	Initialize Qzero, Qone here, make them known to the portable dumper.
	* symbols.c:
	Move the declarations for Qzero, Qone, Qnull_pointer from this
	file, they're used far earlier in alloc.c, and they're not symbols
	in any event.

2025-01-18  Aidan Kehoe  <kehoea@parhasard.net>

	Move the event_stream and process_methods structures to the dump
	file, no need to explicitly initialize them post pdump-load.
	Similarly for filedesc_with_input, event-Xt.c.
	Declare filedesc_to_what_closure as an array in BSS, trust that
	C will initialize it to all zeroes.

	* event-Xt.c:
	* event-Xt.c (init_what_input_once) Removed. Leave this to the
	portable dumper and to the C implementation.
	* event-Xt.c (mark_what_as_being_ready):
	Access Vfiledesc_with_input as a Lisp vector.
	* event-Xt.c (unselect_filedesc): Ditto. 
	* event-Xt.c (Xt_process_to_emacs_event): Ditto.
	* event-Xt.c (Xt_tty_to_emacs_event): Ditto.
	* event-Xt.c (reinit_vars_of_event_Xt):
	Move creation of the struct event_stream to vars_of_event_Xt(),
	trust pdump_load() to restore it.

	* event-Xt.c (vars_of_event_Xt):
	Initialize Vfiledesc_with_input as a Lisp vector. Make it
	reachable for GC pre-dump, but unreachable for GC after
	pdump_load(), since it is usually 1024 in length and full of
	either Qnil or process objects that are reachable from
	Vprocess_list.
	Trust the C runtime to initialize filedesc_to_what_closure[] to all
	zeroes.

	* event-gtk.c:
	* event-gtk.c (mark_what_as_being_ready):
	* event-gtk.c (unselect_filedesc):
	* event-gtk.c (gtk_process_to_emacs_event):
	* event-gtk.c (gtk_tty_to_emacs_event):
	* event-gtk.c (reinit_vars_of_event_gtk):
	* event-gtk.c (vars_of_event_gtk):
	Exactly the same changes as for event-Xt.c, basically identical code.

	* event-msw.c (reinit_vars_of_event_mswindows):
	Move initializing the event stream object to
	vars_of_event_mswindows. Trust the C runtime to initialize
	mswindows_pending_timers_count, dde_eval_pending to 0, since
	they're in BSS.

	* event-msw.c (vars_of_event_mswindows):
	Initialize the event stream object here. Dump it, let pdump_load()
	restore it in the normal way.

	* event-stream.c:
	* event-stream.c (const struct sized_memory_description
	event_stream_description): New. Describe a struct event_stream for
	the sake of the portable dumper. Used by event-Xt.c, event-msw.c,
	event-tty.c.

	* event-tty.c:
	* event-tty.c (reinit_vars_of_event_tty): Make this empty.
	* event-tty.c (vars_of_event_tty):
	Initialize the event stream object here. Dump it, let pdump_load()
	restore it in the normal way.

	* events.h: Declare event_stream_description.

	* process-nt.c (process_type_create_nt): Remove this, move it into
	vars_of_process_nt().
	* process-nt.c (vars_of_process_nt): Initialize the process
	methods in this function.
	* process-unix.c:
	* process-nt.c (process_type_create_unix): Remove this, move it into
	vars_of_process_unix().
	* process-unix.c (vars_of_process_unix):
	Initialize the process methods in this function.
	* process.c (static const struct memory_description
	process_methods_description): New.
	* process.c (vars_of_process): Tell the portable dumper about the
	process methods, don't restore them explicitly.

2025-01-16  Aidan Kehoe  <kehoea@parhasard.net>

	Rearrange main_1() to avoid the need to save and restore values
	before and after loading the dump file.
	* emacs.c:
	Remove a comment cautioning about this issue.
	* emacs.c (main_1):
	Remove some SCO-specific code that has long been #ifdefed out.
	Handle the -mswindows-termination-handle command line argument
	first, since it's needed for debugging and it's not visible to
	Lisp.
	Next handle -nd (needed to decide on whether to load the dump
	file) and -sd (which immediately exits).
	Then load the dump file. Only after that, process the remaining
	command line arguments, overriding the restored Lisp-visible
	variables as appropriate.
	* emacs.c (standard_args):
	Remove -nuni from this, which option has been obsolete since Win95
	support was removed.
	Re-order the structure to reflect changed order of processing in
	main_1().
	* emacs.c (main):
	Correct a comment here.

2025-01-27  Aidan Kehoe  <kehoea@parhasard.net>

	* syswindows.h:
	Remove declarations for functions provided in ntheap.c, which had
	been used for unexec on that platform.
	* vm-limit.c:
	Don't attempt to provide malloc warnings if on win32_native, given
	we no longer provide gmalloc.o so this won't work, and we have
	removed the functions that give information on the data limits.
	* vm-limit.c (check_memory_limits):
	Remove long obsolete code that checks if pointers exceed the size
	available to Lisp for pointers, which never happens with the
	current implementation.

	* s/cygwin-common.h:
	Remove #defines for TEXT_START and HEAP_IN_DATA.

	* s/gnu.h:
	Remove #define for UNEXEC, no longer needed.
	* s/linux.h:
	Ditto. Remove #define for UNEXEC_USE_MAP_PRIVATE, no longer
	needed.
	Remove #defines for A_TEXT_OFFSET, A_TEXT_SEEK,
	ADJUST_EXEC_HEADER. Remove #define for SYSTEM_MALLOC, now
	obligatory.
	* s/mingw32.h:
	Remove #defines for TEXT_START, HEAP_IN_DATA, UNEXEC, no longer
	needed.
	* s/mingw32.h (OBJECTS_SYSTEM): Remove ntheap.o from this.
	* s/netbsd.h:
	Remove #defines for UNEXEC, HAVE_TEXT_START, A_TEXT_OFFSET,
	A_TEXT_SEEK from this file, no longer needed.
	* s/sol2.h: Remove #define for UNEXEC from this file, no longer
	needed.
	* s/usg5-4.h:
	Remove #define for ADDR_CORRECT from this file, no longer needed.

	* mem-limits.h:
	* mem-limits.h (get_lim_data): Remove the implementation of this
	for WIN32_NATIVE, no longer relevant.
	* nt.c (init_mswindows_environment):
	Remove a call to cache_system_info(), no longer needed now unexec
	is gone.
	* ntheap.c: Remove this file, which implemented unexec on
	WIN32_NATIVE. 

	* m/alpha.h (DATA_START):
	Remove #defines for TEXT_START, HEAP_IN_DATA, no longer needed.
	* m/arm.h:
	Remove #defines for TEXT_START, DATA_START, NO_REMAP, no longer
	needed.
	* m/hp800.h:
	Remove #defines for TEXT_START, DATA_START, NO_REMAP, UNEXEC, no
	longer needed.

	* m/ibmrs6000.h:
	Remove #defines for A_TEXT_OFFSET, ADDR_CORRECT, TEXT_START,
	DATA_START, UNEXEC, no longer needed.

	* m/intel386.h:
	Remove #defines for TEXT_START, NO_REMAP, no longer needed.
	
	* m/m68k.h:
	Remove #defines for TEXT_START, NO_REMAP, no longer needed.

	* m/mips.h:
	Remove #defines for TEXT_START, DATA_START, NO_REMAP, no longer needed.
	* m/powerpc.h:
	Remove #defines for NO_REMAP, ADDR_CORRECT and a couple more, no
	longer needed in absence of unexec.
	* m/sparc.h:
	Remove #defines for A_TEXT_OFFSET, A_TEXT_SEEK, no longer needed.
	* m/template.h (LOAD_AVE_CVT):
	* m/windowsnt.h:
	Remove #define for DATA_START, no longer needed.
	* Makefile.in.in ($(DUMP_TARGET)): Remove some code bracketed in
	#ifdef HEAP_IN_DATA, no longer needed with removal of unexec.
	* config.h.in:
	Remove the #define for SYSTEM_MALLOC, always on so not needed.
	Update comment regarding HAVE_MALLOC_WARNING, the glibc feature
	this relied on has been removed.
	* depend (ntheap.o): Remove entry for this.
	* emacs.c: Remove mention of ntheap.c

2025-01-24  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c:
	Declare force_valid_bytebpos_or_zero() before defining it in this
	file, suppress a warning.
	This should be used minimally (only other use is in scrollbar.c),
	intentionally not declared in a header.

2025-01-24  Aidan Kehoe  <kehoea@parhasard.net>

	Qnull_pointer breaks in the initialization of struct Lisp_Subr on
	Cygwin union builds, "initializer element is not constant." This
	is not rectified by declaring Qnull_pointer as const.
	Move DOC to the end of struct Lisp_Subr, just omit it in the DEFUN
	macro, which gives the same result (defined to be bitwise zero).

	This breaks binary compatibility with modules; however
	fb35ba719d24 of October did this recently anyway, and I plan
	further module bug fixes which should require bumping the module
	version number shortly. * lisp.h (struct Lisp_Subr): Rearrange
	this.

	Thank you for the bug report, Caj Svensson.

	* lisp.h DEFUN): Omit explicit initialization of Qnull_pointer.
	* lisp.h (DEFUN_NORETURN): Ditto.

2025-01-13  Aidan Kehoe  <kehoea@parhasard.net>

	* callint.c:
	* callint.c (Finteractive): Document limitations with string
	(interactive) specifications when writing code compatible with GNU
	Emacs.
	* callint.c (callint_prompt):
	Fix my bug in this, supply Qstring to the Fformat_into()
	call. Transform markers to integers as was previously done.
	* callint.c (Fcall_interactively):
	Clean up some cases within this, removed unneeded local variables
	for clarity.

2025-01-12  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c: (trace_out_and_die): Removed.
	* eval.c (signal_call_debugger):
	No longer call trace_out_and_die() on noninteractive debug builds,
	allow Lisp to override the debugger for the sake of testing.

2025-01-06  Aidan Kehoe  <kehoea@parhasard.net>

	* insdel.c (signal_before_change):
	* insdel.c (signal_after_change):
	Remove examination of before-change-function,
	after-change-function from these functions, only respect
	before-change-functions, after-change-functions, now we have
	symbol-value handlers in obsolete.el to make this possible.

2025-01-06  Aidan Kehoe  <kehoea@parhasard.net>

	Debug resize_string (), make its behaviour more uniform.
	* alloc.c:
	* alloc.c (resize_string):
	Define a couple of macros to make sure the string copying
	behaviour is the same for the various sizes encountered. Avoid
	corrupting the heap if shrinking a non-big string.
	* sequence.c (Fclear_string):
	Pass POS as -1 to resize_string here, since we are overwriting the
	whole thing.
	* sequence.c (concatenate): Adjust a comment here regarding
	resize_string().

2024-12-31  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h:
	* process.c:
	* process.c (syms_of_process):
	* tls.c:
	* tls.c (syms_of_tls):
	Make Qtls_error available and non-zero on non-TLS builds, given
	that we use this symbol in signalling an error when TLS support is
	unavailable.

2024-12-30  Aidan Kehoe  <kehoea@parhasard.net>

	* incbin.h:
	Specifying the type of the dumped data doesn't work with COFF
	output currently. This was already implemented for mingw,
	implement it for Cygwin too.

2024-12-27  Aidan Kehoe  <kehoea@parhasard.net>

	* abbrev.c (abbrev_obarray_has_blank_p):
	Modernise return type. Check OBARRAY is a hash table before
	calling oblookup() on it, avoid a (rare) crash. Thank you Henry
	S. Thompson.
	* abbrev.c (abbrev_match):
	Check TABLE is a hash table before calling elisp_maphash() on it.
	* abbrev.c (MATCHFUN):
	Check abbrev-start-location non-nil before calling
	abbrev_obarray_has_blank_p() in this macro.

2024-12-25  Aidan Kehoe  <kehoea@parhasard.net>

	* dumper.c (pdump_load):
	Avoid infinite loop when examining $PATH to find the XEmacs
	binary, --without-dump-in-exec.

2025-01-01  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (extract_object_file_name):
	Revise this, no need for NAME_NONRELOC, NAME_RELOC as arguments,
	take DOC_POS as an OFF_T.
	* doc.c (unparesseuxify_doc_string):
	Revise this, POSITION needs to be an OFF_T.
	* doc.c (open_doc_file): New. Open a documentation file (either
	Vinternal_doc_file_name or one specified in FILEPOS), and return
	the associated file descriptor. Refactored from get_doc_string(),
	get_object_file_name(), adjusted to prefer DOC-DUMP-ID over pure
	DOC if looking in doc-directory.
	If we added DUMP_ID to the file name successfully, update
	Vinternal_doc_file_name to reflect this.
	* doc.c (get_doc_string): Use open_doc_file ().
	* doc.c (get_object_file_name): Use open_doc_file ().
	* doc.c (Fbuilt_in_symbol_file):
	No need to fret about the sign of DOC_OFFSET,
	get_object_file_name() now does that for us.
	* lisp.h:
	Update the declaration of unparesseuxify_doc_string() here. 
	* lread.c (pas_de_holgazan_ici):
	Adjust types, call to unparesseuxify_doc_string() here.

2025-01-01  Aidan Kehoe  <kehoea@parhasard.net>

	* number.h (DEFINE_C_INTEGER_TYPE_LISP_CONVERSION):
	Correct a misspelling in this macro.

2024-12-24  Aidan Kehoe  <kehoea@parhasard.net>

	* device-gtk.c (gtk_delete_device):
	* device-x.c (x_delete_device):
	* emacs.c:
	* emacs.c (Fdump_emacs):
	FREE_CHECKING is no longer available. It depended on a glibc
	feature that was removed, and is no longer even
	auto-detected. Remove all mention of it.
	
	* lisp.h: Remove declaration of Freally_free(), previously in
	free-hook.c.

2024-12-22  Aidan Kehoe  <kehoea@parhasard.net>

	* Makefile.in.in:
	* Makefile.in.in ($(RAW_EXE)):
	If the dump size is known and DUMP_IN_EXEC is defined, build
	temacs with a dumped_data full of zeroes that reflects that size.
	No longer binary-patch with ../lib-src/insert-data-in-exec,
	instead relink if the dump size known to temacs is identical to
	the current dump size.
	If the dump sizes differ, rebuild temacs with the new dump file
	size and re-dump.
	Echo so the user has an idea what is going on with this.

	* dump-data.c (dumped_data):
	Use Dale Weiler's INCBIN to inline the dumped ata.
	* dump-data.c (dumped_data_size): Revise this, use the
	dumped_size variable generated by INCBIN.
	* dump-data.c (dumped_data_get): Revise this, just use dumped_data
	(already appropriately aligned by INCBIN()).
	* dump-data.c (dumped_data_max_size): Removed, no longer needed.
	* dump-data.c (dumped_data_align_offset): Removed, no longer
	needed.

	* dump-data.h: Remove declarations of functions removed from
	dump-data.c.
	* emacs.c (main_1):
	Remove the -si / --show-inline-info argument, no longer needed.

2024-12-20  Aidan Kehoe  <kehoea@parhasard.net>

	Remove lastfile.c, one more remnant of unexec, which makes revised
	handling of DUMP_IN_EXEC more difficult.
	* lastfile.c: Removed.
	* Makefile.in.in: Remove mention of lastfile.o from this.
	* depend (lastfile.o): Remove mention of lastfile.o from this.
	* emacs.c:
	Remove extern declaration of my_edata, no longer used.
	* emacs.c (Fdump_emacs):
	Ditto.

2024-12-20  Aidan Kehoe  <kehoea@parhasard.net>

	* dumper.c:
	#include "paths.h" here to allow a better-defined search for
	installed dump files.
	* dumper.c (pdump_align_table):
	Move the pdump_free function pointer inside the non-DUMP_IN_EXEC
	code.
	* dumper.c (DUMP_IN_EXEC): #define this to 1 on WIN32_NATIVE.
	* dumper.c (pdump_resource_get): New. Rename pdump_ram_try() to
	this on non-WIN32 builds for symmetry.
	* dumper.c (snprintf): Provide a very limited snprintf in this
	file for systems where it is not available.
	* dumper.c (pdump_file_try): Revise this to take a directory name
	and a file name, avoiding issues with shift_jis and multibyte
	characters that may have ASCII slash in them.
	Check in only two places for the dump file, either the directory
	the XEmacs executable was loaded from, or that configured at
	compile time (depending on PATH_EXEC, or PATH_PREFIX, or
	neither (just relative to where the XEmacs binary was found).
	* dumper.c (pdump_load):
	Make separate implementations of this for DUMP_IN_EXEC
	vs. non-DUMP_IN_EXEC.
	Have this take its argument as an Extbyte *, appropriate given no
	localisation available at this point of startup.
	Return a Boolint, a better type.
	For the non-DUMP_IN_EXEC implementation, handle the ambiguity of
	multibyte file names better by checking whether directories exist
	when there is a slash in argv[0].
	* dumper.h:
	Update the return type and argument type of pdump_load().
	* emacs.c:
	* emacs.c (Boolint inhibit_configured_paths): Make this available
	to other files, for the sake of pdump_load().
	* emacs.c (init_cmdargs):
	Remove the code to save initial_argc, initial_argv in passing, not
	used.
	* emacs.c (main_1):
	Cast the argument to pdump_load() as appropriate.
	* lisp.h:
	Declare inhibit_configured_paths here.

2024-12-20  Aidan Kehoe  <kehoea@parhasard.net>

	* s/windowsnt.h:
	Remove further unexec-specific code from this file.

2024-12-14  Aidan Kehoe  <kehoea@parhasard.net>

	* dired.c (file_name_completion):
	* fileio.c (Ffile_name_directory):
	* fileio.c (Fexpand_file_name):
	Remove long-unused code that checked the FILE_SYSTEM_CASE
	#define, superseded by #'file-system-ignore-case-p.

2024-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* toolbar.c: (Ftoolbar_button_p, Ftoolbar_specifier_p): Move these
	to Lisp.
	* toolbar.c (syms_of_toolbar):
	Remove the DEFSUBR()s from here.

2024-12-07  Aidan Kehoe  <kehoea@parhasard.net>

	On WIN32_NATIVE, given there is good native support for
	including the dump file in the executable, remove the support for
	loading it from an external file, avoid potential security issues
	stemming from loading this file which stores function pointers and
	thus should be regarded as having executable code.

	* dumper.c: (pdump_file_unmap): Remove the WIN32_NATIVE
	implementation of this.
	* dumper.c: (pdump_file_get): Remove the WIN32_NATIVE
	* dumper.c (pdump_resource_free):
	* dumper.c (pdump_file_try): Move this inside the non WIN32_NATIVE
	#ifdefs.
	* dumper.c (pdump_load):
	Adjust this function appropriately.

2024-12-02  Aidan Kehoe  <kehoea@parhasard.net>

	* number.c (internal_coerce_number):
	When converting a bignum to a fixnum, use bignum_to_emacs_int(),
	rather than bignum_to_long(), which will lose (more) data on
	certain platforms.

2024-12-01  Aidan Kehoe  <kehoea@parhasard.net>

	Get the native mswindows and Cygwin builds working once more.
	* device-msw.c (msprinter_reinit_device):
	Pass the FROM_IO_ERROR argument to
	msprinter_delete_device_internal().
	* device-msw.c (msprinter_delete_device):
	Take a FROM_IO_ERROR argument.

2024-11-21  Aidan Kehoe  <kehoea@parhasard.net>

	* incbin.h:
	Allow INCBIN_ALIGNMENT_INDEX to be specified explicitly and not
	auto-detected in this header.

2024-11-21  Aidan Kehoe  <kehoea@parhasard.net>

	* incbin.h: New. Import this header file, from Dave
	Weiler. Public domain, no licence issues.
	Include Dave's UNLICENSE.txt inline into the file.

2025-01-01  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c:
	Move definition of Qunbound to opaque.c.
	* emacs.c (main_1):
	Call init_opaque_once_early () before init_symbols_once_early (),
	now the former creates Qunbound.
	* opaque.c:
	* opaque.c (init_opaque_once_early):
	Qunbound is now a zero-length Lisp_Opaque object, no longer a
	symbol-value-magic.
	* symbols.c:
	Update documentation, remove mention of SYMVAL_UNBOUND_MARKER.
	* symbols.c (do_symval_forwarding):
	Since Qunbound is no longer symbol-value-magic, this function just
	returns valcontents when Qunbound is encountered. This was also
	the behaviour previously, so the change is correct by inspection.
	* symbols.c (Fset):
	Qunbound is no longer symbol-value-magic, so 
	if (!SYMBOL_VALUE_MAGIC_P (valcontents) || UNBOUNDP (valcontents))
	just becomes
	if (!SYMBOL_VALUE_MAGIC_P (valcontents))
	behaviour is exactly the same by inspection.
	* symbols.c (default_value):
	Since Qunbound is no longer symbol-value-magic, this function just
	returns valcontents when Qunbound is encountered. This was also
	the behaviour previously, so the change is correct by inspection.
	* symbols.c (Fmake_variable_buffer_local)
	Since Qunbound is no longer symbol-value-magic, the condition of
	the if statement is 0, and the code after the if statement is
	executed. This was also the behaviour previously, since the case
	within the switch just break;ed out of the switch statement,
	change is correct by inspection.
	* symbols.c (Fmake_local_variable)
	Exactly the same reasoning applies as for
	Fmake_variable_buffer_local (), twice in this function.
	* symbols.c (Fbuilt_in_variable_type):
	This returns Qnil since Qunbound is no longer symbol-value-magic;
	this was also the behaviour previously, correct by inspection.
	* symbols.c (static const struct symbol_value_magic
	guts_of_unbound_marker): Removed. No longer needed.
	* symbols.c (init_symbols_once_early):
	Remove initialisation of Qunbound from here.
	* symeval.h (enum symbol_value_type):
	Remove SYMVAL_UNBOUND_MARKER from this, no longer needed.

2024-11-09  Aidan Kehoe  <kehoea@parhasard.net>

	Attempt to avoid XEmacs crashing if the X11 server has crashed and
	we have other devices and consoles to fall back to. Thank you,
	Henry S. Thompson.

	* console-impl.h (struct console_methods):
	New flag to delete_device_method, FROM_IO_ERROR.
	* device-gtk.c (gtk_delete_device):
	Update declaration, flag not used on GTK.
	* device-msw.c (mswindows_delete_device):
	Update declaration, flag not used on mswindows.
	* device-msw.c (msprinter_delete_device_internal):
	Update declaration, flag not used on msprinter.
	* device-tty.c (tty_delete_device):
	Update declaration, flag not used on tty.
	* device-x.c (x_delete_device):
	Use it, avoid crashing XEmacs within XFreeGC when the X11 device
	has crashed
	* device.c (delete_device_internal):
	Pass FROM_IO_ERROR to the delete device methods.

2024-11-03  Aidan Kehoe  <kehoea@parhasard.net>

	* dumper.c (pdump_load_finish):
	Correct a cast here, thank you Mats Lidell and the buildbot.

2024-11-03  Aidan Kehoe  <kehoea@parhasard.net>

	Add thorough support for address space layout randomization, ASLR,
	now needed for macOS with Apple Silicon. This gives a 1% slowdown
	on my testing with ASLR turned off, which is acceptable.
	Configure change to turn this on by default not yet done, for the
	sake of better hg bisect behaviour.

	* alloc.c:
	* alloc.c (lrecord_implementation_description): New.
	* alloc.c (lrecord_implementation_pointer_description): New.
	We can no longer just dump the lrecord_implementation table as an
	opaque block, given data segment pointers are relocated.
	Ditto for the staticpros.
	* alloc.c (c_data_pointer_description): New. Describe a pointer to
	something in the C data segment.

	* alloc.c (init_alloc_once_early):
	Call dump_add_root_block() on lrecord_implementations_table,
	lrecord_memory_descriptions in this file rather than in dumper.c.

	* console.c:
	Be much more thorough in console_methods_description_1, now
	function pointers need to be relocated at pdump_load().
	* console.c (console_type_create):
	Remove the dead console type from the list in a way that is more
	friendly to pdump.
	* dumper.c:
	* dumper.c (struct pdump_static_pointer):
	Make the types of the fields of this struct more correct.

	* dumper.c (struct pdump_header):
	Add entries for the address of known C function and C data
	segment values at dump-time, to allow proper calculation of
	offsets at run time.

	* dumper.c (pdump_register_sub):
	Handle XD_FUNCTION_POINTER, XD_DATA_POINTER within this.
	* dumper.c (pdump_store_new_pointer_offsets):
	Update the opening comment to this fairly thoroughly.
	Handle XD_FUNCTION_POINTER, XD_DATA_POINTER within this function.

	* dumper.c (pdump_reloc_c_func): New. Given a pointer to a C
	function stored at dump time, return a value reflecting the
	run-time environment.
	* dumper.c (pdump_reloc_c_data): New. Given a pointer to somewhere
	in the C data segment stored at dump time, return a value
	reflecting the run-time environment.
	* dumper.c (pdump_reloc_lisp_object): New. Given a Lisp_Object
	stored at dump time, if it is non-NULL pointer type, return a
	value reflecting the run time environment.

	* dumper.c (pdump_reloc_lisp_data): New. Given a non-Lisp_Object
	heap value stored at dump time, if it is non-NULL pointer, return
	a value reflecting the run time environment.

	* dumper.c (pdump_load_lispdesc_indirect_description): New. Like
	lispdesc_indirect_description, but handles pdump_load()-time
	relocation of C data pointers.
	* dumper.c (pdump_reloc_one): Update not to take DELTA explicitly,
	now there are three that need to be observed.
	* dumper.c (pdump_dump_root_block_ptrs): Update to reflect
	corrected types of struct pdump_static_pointer.
	* dumper.c (pdump):
	Update some comments. Move dumping of
	lrecord_implementations_table, lrecord_memory_descriptions to
	alloc. Save the address of Fcons, lisp_object_description to the
	header.
	* dumper.c (pdump_load_finish):
	Handle relocation of data segment pointers as well as heap
	pointers in this function.
	* elhash.c:
	Document there are two C function pointers stored in
	hash_table_test_description.
	* eval.c:
	Document there is a C function pointer and two ASCII strings
	stored in Lisp_Subr.
	* events.c:
	Document there is a C function pointer stored in
	struct Lisp_Magic_Eval_Data.
	* file-coding.c:
	Document there are two C function pointers stored in
	struct detector.
	Document there are many C function pointers stored in
	struct coding_system_methods.
	* gc.c:
	* gc.c (lispdesc_one_description_line_size):
	Handle XD_DATA_POINTER, XD_FUNCTION_POINTER here.
	Move lrecord_memory_descriptions to alloc.c
	* gc.c (kkcc_marking):
	Handle XD_DATA_POINTER, XD_FUNCTION_POINTER here.
	* glyphs.c:
	Document there is a C function pointer stored in Lisp_Glyph.
	Document there is a C function pointer stored in ii_keyword_entry.
	Document there are many C function pointers stored in
	struct image_instantiator_methods.
	* lisp.h:
	* lisp.h (struct Lisp_Subr):
	Change the types of NAME, PROMPT to const Ascbyte *.
	* lread.c:
	* lread.c (structure_keyword_entry_description): New.
	* lread.c (structure_keyword_entry_dynarr_description): New.
	* lread.c (structure_type_description): New.
	* lread.c (structure_type_dynarr_description): New.
	Document the structure type infrastructure more thoroughly for the
	dumper.
	* lread.c (structure_type_create):
	Dump the structure type properly.

	* lrecord.h:
	Extensive updates to a long comment in this header.
	* lrecord.h (enum memory_description_type):
	New entries, XD_FUNCTION_POINTER, XD_DATA_POINTER in this enum.
	* lrecord.h (struct opaque_convert_functions):
	Comment documenting lack of a need for memory descriptions for
	this as of today.
	* lstream.c (lstream_implementation_description_1):
	Document there are many C function pointers, an ASCII string, and
	a data segment pointer stored in struct lstream_implementation.

	* lstream.h (lstream_implementation):
	Update the type of NAME to be, explicitly, Ascbyte *.
	* specifier.c (specifier_methods_description_1):
	Document there are many C function pointers, an ASCII string, and
	a data segment pointer stored in struct specifier_methods.
	* specifier.c (specifier_caching_description_1):
	Document that there are two C function pointers stored in struct
	specifier_caching.
	* symbols.c:
	* symbols.c (symbol_value_magic_description): New. Document that a
	symbol_value_magic stores a pointer to the data segment. 
	* symbols.c (symbol_value_buffer_local_description_1): Use it.
	* symbols.c (symbol_value_lisp_magic_description): Use it.
	* symbols.c (symbol_value_varalias_description): Use it.
	* symbols.c (symbol_value_forward_description): Use it.
	* ui-gtk.c:
	Document that there are two C function pointers in
	emacs_ffi_data.

2024-10-17  Aidan Kehoe  <kehoea@parhasard.net>

	* fontcolor.c (color_instantiate):
	Don't attempt to pass a Lisp_Object as an int to
	FACE_PROPERTY_INSTANCE_1, thank you Mats Lidell and the buildbot.

2024-10-14  Aidan Kehoe  <kehoea@parhasard.net>

	Supply file-name, coding system information for symbols loaded
	from modules.

	* alloc.c:
	* alloc.c (uninit_memory_usage_stats): New.
	* doc.c:
	* doc.c (Fbuilt_in_symbol_file):
	Check the plist of the variable-documentation property for file
	name information, as is supplied for variables in modules.
	* doc.c (syms_of_doc): Move Qsymbol_file to general-slots.h, now
	it is used by emodules.c.
	* emodules.c (Vknown_file_names): New. Weak list of file names
	known by emodules_doc_subr() and emodules_doc_sym().
	* emodules.c (emodules_doc): New. Implementation of the next two
	functions.
	* emodules.c (emodules_doc_subr):
	Revise this, accept FILE_NAME and CODING_SYSTEM_NAME, documenting
	the file a given subr was loaded from, and the coding system used
	for the file name and for the docstring.
	* emodules.c (emodules_doc_sym):
	Ditto.
	* emodules.c (vars_of_module):
	staticpro() Vknown_file_names.
	* emodules.h:
	* emodules.h (EMODULES_VERSION):
	Bump this, now emodules_doc_sym() and emodules_doc_sbur() take
	extra args.
	#define CDOCSUBR and CDOCSYM appropriately.
	* general-slots.h:
	Include Qsymbol_file here.
	* lrecord.h:
	* lrecord.h (UNDEF_LISP_OBJECT):
	Call uninit_memory_usage_stats() here.

2024-10-14  Aidan Kehoe  <kehoea@parhasard.net>

	Move the memory usage stats out of struct lrecord_implementation,
	given that does not work with module support.

	* lrecord.h:
	* lrecord.h (struct lrecord_implementation):
	Remove most of the memory usage infrastructure from this
	structure.
	* lrecord.h (INIT_MEMORY_USAGE_STATS):
	Call the new init_memory_usage_stats() within this #define,
	whether or not MEMORY_USAGE_STATS is defined.
	* lrecord.h (INIT_LISP_OBJECT_BEGINNING):
	Ditto.
	
	* alloc.c:
	* alloc.c (Vmemusage_stats_lists): New.
	Lisp vector storing what used to be stored in the
	memusage_stats_list field of lrecord_implementation; this is just
	staticpro()ed, making GC protection and dumping easier.

	* alloc.c (lrecord_stats_metadata): New C array, for other data
	related to memory usage and previously in struct
	lrecord_implementation.
	
	* alloc.c (init_memory_usage_stats): New. Called from
	INIT_LISP_OBJECT() whether or not MEMORY_USAGE_STATS support is
	included. 
	* alloc.c (tick_lrecord_stats):
	* alloc.c (finish_object_memory_usage_stats):
	* alloc.c (Fobject_memory_usage):
	* alloc.c (lisp_object_memory_usage_full):
	* alloc.c (compute_memusage_stats_length):
	* alloc.c (init_alloc_once_early):
	Create Vmemusage_stats_lists very early.
	* alloc.c (syms_of_alloc):
	Initialise those elements of Vmemusage_stats_lists that are
	Qnull_pointer to Qnil, now that is available.
	* buffer.c (vars_of_buffer):
	* casetab.c (vars_of_casetab):
	* casetab.c (complex_vars_of_casetab):
	* chartab.c (vars_of_chartab):
	* elhash.c (vars_of_elhash):
	* mule-charset.c (vars_of_mule_charset):
	* scrollbar.c (vars_of_scrollbar):
	* specifier.c (vars_of_specifier):
	* window.c (vars_of_window):
	* frame.c (vars_of_frame):
	Use INIT_MEMORY_USAGE_STATS instead of OBJECT_HAS_PROPERTY(...
	memusage_stats_list) within these files, now the memory usage
	stats are no longer in lrecord_implementation.

2024-10-14  Aidan Kehoe  <kehoea@parhasard.net>

	* emodules.c (find_make_module):
	Given we now unload modules, modules[i].soname can be NULL, check
	for this before calling qxestrcmp().
	* emodules.c (attempt_module_delete):
	After successful unload, set the pointer to the unload function to
	NULL.
	* lread.c (vars_of_lread): Update the docstring for load-history
	to document the (defun . SYMBOL) syntax.

2024-10-14  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	* alloc.c (make_subr): New.
	* alloc.c (sweep_subrs): New.
	* alloc.c (init_alloc_early): Call init_subr_alloc().
	* lisp.h: Declare make_subr.
	* symbols.c (check_module_subr):
	Call make_subr() in this macro, ALLOC_NORMAL_LISP_OBJECT() does
	not work.

2024-10-14  Aidan Kehoe  <kehoea@parhasard.net>

	Get unloading of modules working again, when MEMORY_USAGE_STATS is
	not defined

	* alloc.c:
	* alloc.c (unstaticpro_nodump_1):
	Operate on staticpros_nodump, as was intended.
	* alloc.c (unstaticpro_nodump): Ditto.
	* symeval.h (DEFVAR_SYMVAL_FWD_OBJECT):
	Call staticpro (), not staticpro_1 () in this macro, so the
	redefinition in emodules.h has a chance to do its thing.

2024-10-14  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (struct Lisp_Subr):
	Make the DOC field of this structure a Lisp_Object, simplifying
	dump and GC and avoiding memory leaks with docstrings for subrs in
	modules.
	Declare PROMPT and NAME as const CIbyte *, not const char *.
	* lisp.h (DEFUN):
	* lisp.h (DEFUN_NORETURN):
	Initialise DOC using Qnull_pointer, not 0.
	* doc.c:
	* doc.c (Fbuilt_in_symbol_file):
	No need for quite as many casts within this file.
	If XSUBR (fun)->doc is a Lisp string, retrieve its file name from
	its plist, in anticipation of work in this direction for modules.
	* doc.c (Fdocumentation):
	* doc.c (Fsnarf_documentation):
	* doc.c (verify_doc_mapper):
	* doc.c (syms_of_doc):
	Do a DEFSYMBOL for Qsymbol_file here.

	* lrecord.h:
	* lrecord.h (enum memory_description_type):
	* dumper.c:
	* dumper.c (pdump_register_sub):
	* dumper.c (pdump_store_new_pointer_offsets):
	* dumper.c (pdump_reloc_one):
	* gc.c (lispdesc_one_description_line_size):
	* gc.c (kkcc_marking):
	Remove the XD_DOC_STRING annotation from the dumper and the
	garbage collector, no longer needed.

	* emodules.c (emodules_doc_subr):
	Just build_ascstring () on DOC and set subr->doc to its result,
	avoid leaking the docstring on unload of the module.
	* eval.c:
	Annotate the DOC field of Lisp_Subr as a Lisp object.
	* symbols.c: (check_module_subr):
	Copy the subr structure to Lisp-allocated memory. Don't put a
	pointer to the new subr in the DOC field of the old subr, not
	needed.
	* symbols.c (defsubr):
	* symbols.c (defsubr_macro):
	Correct the load history entries for subrs loaded from modules in
	passing.

2024-10-13  Aidan Kehoe  <kehoea@parhasard.net>

	* bytecode.c:
	* bytecode.c (bytecode_arithop):
	Simplify the implementation of Bmax, Bmin in this file.
	* data.c (Fmax, Fmin):
	Move to Lisp, for the sake of maintainability (no need for #ifdef
	WITH_NUMBER_TYPES). There is no loss of speed for the usual case
	of byte-compiled code, since both functions have bytecodes.
	* data.c (syms_of_data):
	Remove the DEFSUBRs for these.
	* lisp.h:
	Remove their declarations.

2024-09-23  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c:
	* regex.c (enum):
	* regex.c (print_partial_compiled_pattern):
	* regex.c (fixup_on_failure_jump_smart):
	* regex.c (regex_compile):
	* regex.c (re_compile_fastmap):
	* regex.c (re_match_2_internal):
	Remove on_failure_keep_string_jump in favour of
	on_failure_jump_exclusive, reducing code size and failure stack
	usage.

2024-09-23  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.h (DETECTOR_DESCRIPTION_OFFSET): New macro.
	* file-coding.h (INITIALIZE_DETECTOR_DESCRIPTION):
	Use it, placate both g++ and -fsanitize=undefined at the same time.

2024-09-23  Aidan Kehoe  <kehoea@parhasard.net>

	* extents.c (Fset_extent_parent):
	Never pass a NULL first argument to qsort() in this function, even
	if the length of the array to be sorted is zero.
	* text.h (EI_ALLOC_AND_COPY):
	Never pass a NULL first argument to memcpy() in this macro, even
	if the length to be copied is zero.

2024-09-23  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (fixnum_to_string_base_10):
	* lisp.h (FLOAT_HASHCODE_FROM_DOUBLE):
	Further couple of casts for the sake of -fsanitize=undefined.

2024-09-23  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Fash): 
	Do bit shifting on EMACS_UINTs for the sake of -fsanitize=undefined.
	* regex.c:
	* regex.c (extract_number):
	Do bit shifting on an unsigned type for the sake of
	-fsanitize=undefined.
	* sysdep.c (get_random):
	Ditto.

2024-09-23  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.h (INITIALIZE_DETECTOR_DESCRIPTION):
	Use offsetof() rather than portable_offsetof() in this macro, for
	the sake of -fsanitize=undefined.
	* lisp.h:
	Motivate this change in a comment.

2024-09-22  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c:
	* file-coding.c (aligned_sizeof_coding_system): New.
	* file-coding.c (allocate_coding_system): Use it.
	Avoid misaligned coding systems objects in the dump file,
	previously addressed for lstreams, specifiers, opaque data in
	Martin Buchholz's change of 2001-01-24. Approach taken the same as
	that for specifiers.
	* file-coding.c (struct convert_eol_coding_system):
	Remove a dummy integer no longer needed.

2024-09-08  Aidan Kehoe  <kehoea@parhasard.net>

	* fontcolor.c (color_instantiate):
	* fontcolor.c (font_instantiate):
	* fontcolor.c (face_boolean_instantiate):
	* fontcolor.c (face_background_placement_instantiate):
	* glyphs.c (image_instantiate):
	* specifier.c (specifier_instance_from_inst_list):
	* specifier.h (struct specifier_methods):
	Avoid passing an int among the Lisp_Object va_args of the
	specifier instantiate methods, this is not portable behaviour,
	thank you clang and -fsanitize=undefined.

2024-09-23  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (Fvector):
	* alloc.c (make_string):
	* alloc.c (make_extstring):
	* array.c:
	* array.c (Dynarr_delete_many):
	* array.h:
	* file-coding.c (convert_eol_encode):
	* lstream.c (resizing_buffer_write_with_extents):
	Avoid calls to memcpy(), memmove() with N zero, thank you clang
	and -fsanitize=undefined.

2024-09-07  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (SET_LISP_READONLY): New macro, for symmetry with the
	rvalue LISP_READONLY macro.
	* alloc.c (make_string_nocopy):
	Mark the created string as readonly for Lisp, since this function
	is routinely called with CONTENTS as a C string literal, and those
	are not guaranteed writable. Use SET_LISP_READONLY() for this.

2024-08-18  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (make_string_nocopy):
	With ERROR_CHECK_TEXT, assert that we haven't been called on stack
	data.

2024-06-24  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (resize_string):
	Avoid calling free() on dumped data in this function.
	* alloc.c (verify_string_chars_integrity):
	Correct types in this function.
	* data.c (init_errors_once_early):
	Correct the docstring for the setting-constant error.

2024-08-26  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c:
	* regex.c (regex_compile):
	* regex.c (BAD_INTERVAL):
	* regex.c (at_begline_loc_p):
	* regex.c (at_endline_loc_p):
	* regex.c (compile_range):
	* regex.c (compile_extended_range):
	* regex.c (re_match_2_internal):
	* regex.h:
	* regex.h (RE_CHAR_CLASSES):
	* regex.h (RE_DOT_NEWLINE):
	* regex.h (RE_INTERVALS):
	* regex.h (RE_NO_POSIX_BACKTRACKING):
	* regex.h (RE_NO_MULTI_DIGIT_BK_REFS):
	Remove those regex syntax options that we don't use, for the sake
	of maintainability. Remove re_comp(), re_exec (), regcomp (),
	regexec (), regerror (), regfree (), for the same reason.

2024-08-26  Aidan Kehoe  <kehoea@parhasard.net>

	Move handling of on_failure_jump_smart to compile time, regex.c.

	* regex.c:
	* regex.c (PUSH_FAILURE_POINT): Fix a bug in passing when debugging.
	* regex.c (POP_FAILURE_POINT): Fix a bug in passing when debugging.

	* regex.c (fixup_on_failure_jump_smart): New.
	* regex.c (regex_compile): Call it.
	* regex.c (mutually_exclusive_p): Adjust the calling convention of
	this to reflect that it's only called at compilation of the
	regexp, not at match time.
	* regex.c (re_match_2_internal):
	Remove handling of on_failure_jump_smart from this funnction. 
	* regex.h:
	Remove RE_MUTUALLY_EXCLUSIVE_P_ARGS{,DECL} from this header, no
	longer needed.

2024-08-24  Aidan Kehoe  <kehoea@parhasard.net>

	Move the regex.c voluminous logging #defines to using variadic
	macros.
	* regex.c (DEBUG_PRINT): New.
	* regex.c (DEBUG_PRINT1, DEBUG_PRINT2, DEBUG_PRINT3,
	DEBUG_PRINT4): Removed.
	* regex.c (DEBUG_FAIL_PRINT): Revise.
	* regex.c (DEBUG_MATCH_PRINT): Revise.
	* regex.c (DEBUG_FAIL_PRINT_DOUBLE_STRING): Revise.
	* regex.c (DEBUG_MATCH_PRINT_DOUBLE_STRING): Revise.

	* regex.c (ENSURE_FAIL_STACK):
	* regex.c (PUSH_FAILURE_REG):
	* regex.c (POP_FAILURE_REG):
	* regex.c (CHECK_INFINITE_LOOP):
	* regex.c (PUSH_FAILURE_POINT):
	* regex.c (POP_FAILURE_POINT):
	* regex.c (regex_compile):
	* regex.c (mutually_exclusive_p):
	* regex.c (re_match_2_internal):
	Switch to DEBUG_PRINT() in all these functions.

2024-08-24  Aidan Kehoe  <kehoea@parhasard.net>

	Integrate Stefan Monnier's GNU change of March 2000, which removed
	the code to deal with inner groups with start_memory, stop_memory
	(making it more economic of pattern space), and allows much more
	shy groups than previously, since they do not require an internal
	register number.

	Significant changes necessary for the commit to work on XEmacs
	include being careful to use two bytes for the register numbers
	for start_memory, stop_memory, to preserve the code that copies
	the compiled pattern buffer to the stack when matching for the
	sake of re-entrancy, to error appropriately with patterns like
	"a++", which GNU accepts, and to replace GNU's use of
	NUM_NONREG_ITEMS with NUM_FAILURE_ITEMS, which better names the
	items in question.

	git commit 505bde11b0fb6f539db1ef0713f19c3c2d86064a	
	Author: Stefan Monnier <monnier@iro.umontreal.ca>
	Date:   Wed Mar 8 23:25:41 2000 +0000

	This is a big redesign of failure-stack and register handling,
	prompted by bugs revealed when trying to add shy-groups.  Overall,
	what happened is that loops are now structured a little
	differently, groups can be shy and the code is a little simpler.
    
	* regex.c: (enum re_opcode_t): Remove jump_past_alt, maybe_pop_jump,
	push_dummy_failure and dumy_failure_jump.
	Add on_failure_jump_(exclusive, loop and smart).
	Also fix the comment for (start|stop)_memory since they now only take
	one argument (the second has becomes unnecessary).
	(print_partial_compiled_pattern): Adjust for changes in re_opcode_t.
	(print_compiled_pattern): Use %ld to printf long ints and flush to make
	debugging a little easier.
	(union fail_stack_elt): Make the integer unsigned.
	(struct fail_stack_type): Add a `frame' element.
	(INIT_FAIL_STACK): Init `frame' as well.
	(POP_PATTERN_OP): New macro for re_compile_fastmap.
	(DEBUG_PUSH, DEBUG_POP): Remove.
	(NUM_REG_ITEMS): Remove.
	(NUM_NONREG_ITEMS): Adjust.
	(FAILURE_PAT, FAILURE_STR, NEXT_FAILURE_HANDLE, TOP_FAILURE_HANDLE):
	New macros for the cycle detection.
	(ENSURE_FAIL_STACK): New macro for PUSH_FAILURE_(REG|POINT).
	(PUSH_FAILURE_REG, POP_FAILURE_REG, CHECK_INFINITE_LOOP): New macros.
	(PUSH_FAILURE_POINT): Don't push registers any more.
	The pattern address pushed is not the destination of the jump
	but the source of it instead.
	(NUM_FAILURE_ITEMS): Remove.
	(POP_FAILURE_POINT): Adapt to the new stack structure (i.e. pop
	registers before the actual failure point).
	Don't hardcode any meaning for str==NULL anymore.
	(union register_info_type, REG_MATCH_NULL_STRING_P, IS_ACTIVE)
	(MATCHED_SOMETHING, EVER_MATCHED_SOMETHING, SET_REGS_MATCHED): Remove.
	(REG_UNSET_VALUE): Use NULL (why not?).
	(compile_range): Remove declaration since it doesn't exist.
	(struct compile_stack_elt_t): Remove inner_group_offset.
	(old_reg(start|end), reg_info, reg_dummy, reg_info_dummy): Remove.
	(regex_grow_registers): Remove dead code.
	(FIXUP_ALT_JUMP): New macro.
	(regex_compile): Add shy-groups
	Change loops to use on_failure_jump_smart&jump instead of
	on_failure_jump&maybe_pop_jump.
	Change + loops to eliminate the initial (dummy_failure_)jump.
	Remove c1_base (looks like unused variable to me).
	Use `jump' instead of `jump_past_alt' and don't bother with
	push_dummy_failure in alternatives since it is now unnecessary.
	Use FIXUP_ALT_JUMP.
	Eliminate a useless `#ifdef emacs' for (re)allocating the stack.
	(re_compile_fastmap): Remove dead variables i and num_regs.
	Exit from loop when bufp->can_be_null rather than jumping to `done'.
	Avoid jumping backwards so as to ensure termination.
	Use PATTERN_STACK_EMPTY and POP_PATTERN_OP.
	Improved handling of backreferences.
	Remove dead code in handling of `anychar'.
	(skip_noops, mutually_exclusive_p): New functions taken from the
	handling of `maybe_pop_jump' in re_match_2_internal.
	Slightly improve mutually_exclusive_p to handle ".+\n".
	((lowest|highest)_active_reg, NO_(LOWEST|HIGHEST)_ACTIVE_REG)
	Remove.
	(re_match_2_internal): Use %p instead of 0x%x when printf'ing ptrs.
	Don't SET_REGS_MATCHED anymore.  Remove many dead variables.
	Push register (in `start_memory') on the stack rather than storing it
	in old_reg(start|end).
	Remove the cycle detection from `stop_memory', replaced by the use
	of on_failure_jump_loop for greedy loops.
	Add code for the new on_failure_jump_<foo>.
	Remove ad-hoc code in `on_failure_jump' to push more registers
	in the case of a loop.
	Take out code from `maybe_pop_jump' into separate functions and
	adapt it to the semantics of `on_failure_jump_smart'.
	Remove jump_past_alt, dummy_failure_jump and push_dummy_failure.
	Remove dummy_failure handling and handling of `failures to jump
	to on_failure_jump' (this last one was already dead code, it seems).

	* regex.h:
	* regex.h (RE_EXECUTE_CHARSET_MULE_ARGS_DECL): New.
	* regex.h (RE_EXECUTE_CHARSET_MULE_ARGS): New.
	* regex.h (RE_MUTUALLY_EXCLUSIVE_P_ARGS_DECL): New.
	* regex.h (RE_MUTUALLY_EXCLUSIVE_P_ARGS): New.
	All provided to make mutually_exclusive_p () portable to XEmacs
	and to those files under lib-src/ that use regex.o.
	* regex.h (struct re_pattern_buffer):
	Update some comments in this file.

2024-08-18  Aidan Kehoe  <kehoea@parhasard.net>

	* fontcolor-x.c (x_print_font_instance):
	Use the appropriate format specifier for an address when printing
	an XFT font's address.
	* redisplay-x.c (x_output_string):
	Cast some members of an XRectangle structure, suppressing a
	warning from the C++ compiler.

2024-08-18  Aidan Kehoe  <kehoea@parhasard.net>

	* buffer.c (Vinhibit_read_only):
	Add information regarding the buffer-local status of this variable
	to its docstring (usually not buffer local, usually buffer-local
	in the minibuffer).

2024-06-20  Aidan Kehoe  <kehoea@parhasard.net>

	* bytecode.c: (Fcompiled_function_interactive): Give some more
	information in the docstring regarding what an interactive spec
	can be.
	* callint.c:
	* callint.c (quotify_args): Removed, no longer needed.
	* callint.c (Fcall_interactively):
	Update to use the metadata for the command history generated by
	byte-compiler, or to call #'byte-compile-annotate-interactive
	ourselves if this is not available (e.g. with an interpreted command).
	* callint.c (syms_of_callint):
	Define Qbyte_compile_annotate_interactive as a symbol, making the
	Lisp function available to #'call-interactively.

2024-06-25  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fapropos_internal): Removed. Now in lisp/apropos.el.

2024-05-17  Aidan Kehoe  <kehoea@parhasard.net>

	* fontcolor-x.c (get_string):
	Avoid leaking the result of XGetAtomName in this macro.
	* fontcolor-x.c (get_number):
	Use more braces in this macro to reduce the chance of bugs.
	* fontcolor-x.c (truename_via_random_props):
	Avoid calling XFree on stack memory allocate by
	EXTERNAL_TO_ITEXT(), now the get_string() macro has been
	corrected.

2024-05-01  Aidan Kehoe  <kehoea@parhasard.net>

	* callint.c (Fcall_interactively):
	When reading a character with the ?c interactive spec, just use
	the PROMPT argument to #'read-char rather than re-implementing
	it, giving better user feedback regarding the character typed.

2024-04-29  Aidan Kehoe  <kehoea@parhasard.net>

	Use the newer _CONST_X_STRING X11 #define instead of the
	xt-wrappers.h approach to suppressing warnings with string
	constants used for X11 String types. Update various declarations
	to String rather than char * to work better with this.

	Remove the Xt_RESOURCE macro, which basically hid casts to
	String.  Remove the Xt_SET_ARG macro for the same reason,

	Keep the Xt_SET_VALUE, Xt_GET_VALUE convenience macros, they
	remain of use. Put them in console-x-impl.h.

	Use BEGIN_C_DECLS/END_C_DECLS appropriately in  array.h,
	EmacsManager.h, lisp.h for a cleaner C++ build.
	
	* EmacsFrame.c:
	* EmacsFrame.c (res):
	* EmacsFrame.c (EmacsFrameSetCharSize):
	* EmacsManager.c:
	* EmacsManager.c (res):
	* EmacsManager.h:
	* EmacsShell-sub.c:
	* EmacsShell-sub.c (update_size_hints_internal):
	* array.h:
	* config.h.in:
	* console-x-impl.h:
	* device-x.c:
	* device-x.c (emacs_options):
	* device-x.c (sanity_check_geometry_resource):
	* device-x.c (x_init_device):
	* device-x.c (x_get_resource_prefix):
	* frame-x.c:
	* frame-x.c (x_wm_set_cell_size):
	* frame-x.c (x_wm_set_variable_size):
	* frame-x.c (x_wm_store_class_hints):
	* frame-x.c (x_set_frame_text_value):
	* frame-x.c (x_initialize_frame_size):
	* frame-x.c (x_create_widgets):
	* frame-x.c (x_set_frame_icon):
	* frame-x.c (x_set_frame_position):
	* frame-x.c (x_update_frame_external_traits):
	* glyphs-x.c (x_redisplay_widget):
	* glyphs-x.c (x_widget_instantiate):
	* glyphs-x.c (x_button_instantiate):
	* input-method-xlib.c (IMInstantiateCallback):
	* input-method-xlib.c (res):
	* input-method-xlib.c (EmacsXtCvtStringToXIMStyles):
	* lisp.h:
	* menubar-x.c (make_dummy_xbutton_event):
	* select-x.c (hack_motif_clipboard_selection):

2024-02-15  Richard Hopkins  <xemacs@unbit.co.uk>

	* keymap.c (control_meta_superify): Restore 'static' as all uses
	are in keymap.c and resolves [-Wmissing-prototypes].

2024-02-15  Richard Hopkins  <xemacs@unbit.co.uk>

	* fontcolor-tty.c (find_tty_closest_color_1): Resolve
	[-Wdeclaration-after-statement].

2024-02-15  Richard Hopkins  <xemacs@unbit.co.uk>

	Internally the color name is a symbol and now TTY_COLOR_ENTRY_NAME
	always returns a symbol rather than a symbol or a string; the
	conversion back to string is for consistency at the lisp level.

	* fontcolor-tty.c (find_tty_closest_color_1): Return entry as-is
	from color_alist.
	(Ffind_tty_closest_color): Convert color name to string here
	instead.

2024-02-15  Richard Hopkins  <xemacs@unbit.co.uk>

	* fontcolor-tty.c (Ffind_tty_color):
	(find_tty_closest_color_1):
	(tty_color_list):
	(tty_initialize_color_instance): Use new accessors rather than
	explicit car/cdr calls.

	* console-tty-impl.h (TTY_COLOR_ENTRY_NAME):
	(TTY_COLOR_ENTRY_DATA): New accessors for entry in color_alist
	which maps NAME to COLOR_DATA.
	(TTY_COLOR_DATA_FG_STRING):
	(TTY_COLOR_DATA_BG_STRING):
	(TTY_COLOR_DATA_RGB_VECTOR): New. Get appropriate value from the
	mapped COLOR_DATA.

2024-02-12  Richard Hopkins  <xemacs@unbit.co.uk>

	Add support on TTY for X color names and hex color strings that
	will fallback to an available device color.  This extracts the MSW
	implementation to make it available for use on both TTY and MSW.

	* fontcolor.h (Rgbref): New integral type to represent a color
	allowing [0-255] for each RGB component.
	(invalid_rgb): Declare it.
	(RGB_CONSTANT): New macro for initializing shared_X_color_map.
	(rgb_valid_p): New. Check if an Rgbref instance is valid and the
	RGB components can be used.
	(rgb_pack): New. Pack the given red, green and blue into a single
	Rgbref.
	(rgb_red): New. Extract the red component from an Rgbref.
	(rgb_green): New. Extract the green component from an Rgbref.
	(rgb_blue): New. Extract the blue component from an Rgbref.
	(shared_X_string_to_color): Declare it.
	(shared_X_color_to_string): Declare it.
	(shared_X_color_list): Declare it.

	* fontcolor.c (invalid_rgb): New. Sentinel value for an invalid
	RGB.
	(colormap_t): Moved from fontcolor-msw.c
	(shared_X_color_map): Extracted from mswindows_X_color_map.
	(hexval): Moved from fontcolor-msw.c.
	(colormap_t_compare): Moved from fontcolor-msw.c.
	(shared_X_string_to_color): New. Extracted from
	mswindows_X_string_to_color.
	(shared_X_color_to_string). New. Extracted from
	mswindows_color_to_string.
	(shared_X_color_list): New. Extracted from mswindows_color_list.

	* fontcolor-tty.c (tty_color_list): Use shared_X_color_list.
	(tty_initialize_color_instance): Use shared_X_string_to_color to
	support color names and hex strings.
	(tty_valid_color_name_p): Use shared_X_string_to_color to support
	color names and hex strings.

	* fontcolor-msw.c (colormap_t): Moved to fontcolor.c
	(mswindows_X_color_map): Moved to fontcolor.c.
	(hexval): Moved to fontcolor.c.
	(colormap_t_compare): Moved to fontcolor.c
	(mswindows_string_to_color): Use shared_X_string_to_color.
	(mswindows_color_to_string): Use shared_X_color_to_string.
	(mswindows_color_list): Use shared_X_color_list.

2023-11-19  Aidan Kehoe  <kehoea@parhasard.net>

	* scrollbar.c (update_scrollbar_instance):
	Fix my bug with buffer-position-based scrolling, thank you Richard
	Hopkins.
	NEW_SLIDER_SIZE as window_displayed_height() * 512 was never a
	good decision, far too big, and this misled the toolkits. The
	previous arithmetic is cheap, works for him, works for me, always
	worked for the toolkits.

2023-11-05  Aidan Kehoe  <kehoea@parhasard.net>

	* line-number.c:
	* line-number.c (byte_beginning_of_line): New.
	Given a line number, return the Bytebpos of the beginning of that
	line. This is the inverse of buffer_line_number ().

	* line-number.h:
	Declare it.

	* redisplay.c (force_valid_bytebpos_or_zero):
	Make this un-static given it's now used by
	scrollbar_slider_position_to_lisp ().
	* scrollbar-gtk.c:
	* scrollbar-gtk.c (gtk_update_scrollbar_instance_values):
	Fix handling of line-oriented scrolling.
	Use marker_byte_position() instead of marker_position(), given we
	function in either lines or byte positions.

	* scrollbar-gtk.c (scrollbar_cb):
	Use scrollbar_slider_position_to_lisp () when creating an argument
	to #'scrollbar-vertical-drag.
	* scrollbar-msw.c (mswindows_handle_scrollbar_event):
	Ditto.

	* scrollbar-x.c:
	* scrollbar-x.c (x_update_scrollbar_instance_values):
	Fix handling of line-oriented scrolling.
	Use marker_byte_position() instead of marker_position(), given we
	function in either lines or byte positions.

	* scrollbar-x.c (x_update_vertical_scrollbar_callback):
	Use scrollbar_slider_position_to_lisp () when creating an argument
	to #'scrollbar-vertical-drag.

	* scrollbar.c:
	* scrollbar.c (scrollbar_slider_position_to_lisp): New.
	* scrollbar.c (update_scrollbar_instance):
	Mark that scrolling is line-oriented or not explicitly when
	passing values to the toolkit code.
	* scrollbar.h:
	* scrollbar.h (struct scrollbar_instance):
	New field, line_oriented_scrolling_p.

2023-10-22  Aidan Kehoe  <kehoea@parhasard.net>

	* event-msw.c (mswindows_wnd_proc):
	Only respond to TTN_NEEDTEXTW, not TTN_NEEDTEXTA messages, when
	handling WM_NOTIFY. Change missed in 0f36f2ab4a32 , thank you Kurt
	Geisel.

2023-10-21  Aidan Kehoe  <kehoea@parhasard.net>

	1. Make upshift_event (), downshift_event (), event_upshifted_p ()
	also do the right things with non-ASCII keysyms with case.

	2. Only accept characters as the #'character-of-keysym property,
	an obsolescent way to document that a symbol has an associated
	character, and something never supported by GNU, so char-int
	confoundance should never have come up.

	* events.c:
	* events.c (event_to_character):
	Fixnums will never appear as event keysyms, don't check for them.
	Only check for characters as the character-of-keysym property and
	the related ascii-character property, these are XEmacs approaches
	to specifying associated characters that should not come up in GNU
	code.

	* events.c (upshift_event):
	Don't check for fixnums as event keysyms.  Generalise the case
	mapping to handle non-ASCII case transformation.
	* events.c (downshift_event):
	Ditto.
	* events.c (event_upshifted_p):
	Use a more modern return type here.
	Use a more modern implementation that deals with non-ASCII case
	transformation. 

	* keymap.c (event_matches_key_specifier_p):
	* keymap.c (meta_prefix_char_p):
	Use more modern return types types for these functions.
	
	* keymap.c (map_keymap_sort_predicate):
	* keymap.c (describe_map_mapper):
	* keymap.c (describe_map_sort_predicate):
	* keymap.c (describe_map):
	Only accept characters, not char-ints, for the character-of-keysym
	property in these functions.

	* keymap.h (event_matches_key_specifier_p):
	Update a return type here.

2023-10-20  Aidan Kehoe  <kehoea@parhasard.net>

	Some changes to get the latest beta building with Visual
	Studio from Kurt Geisel <kgeisel@outlook.com>. Thank you Kurt!

	* dumper.c (pdump_resource_get):
	Even though the resource segment is marked read/write, we now need
	to explicitly change the pages in the mapped resource address
	space to be writeable in order to allow pdump relocation to not
	hit write access violations.

	* lisp.h (max_align_t): Our definition of max_align_t is no longer
	needed from VS 2019 onwards.

	* nt.c (init_nt):
	Code that duplicates standard handles as non-inheritable breaks
	ucrt lookup of standard stream identifiers (stdout, stdin,
	stderr), which are now resolved as function calls (defined by the
	preprocessor) that assume the file handles in the global table are
	stable. This breaks non-console I/O and the build-time piping from
	i.exe.

2023-10-10  Richard Hopkins  <xemacs@unbit.co.uk>

	* fontcolor-tty.c (find_tty_closest_color_1): Internal function to
	find the closest color from the color_alist.

	* fontcolor-tty.c (Ffind_tty_closest_color): New.  From the given
	RGB components (0-255) it will find the closest registered color
	for the device.  Expose to lisp in preparation for use from
	#'font-tty-find-closest-color.

	* fontcolor-tty.c (syms_of_fontcolor_tty): Add
	Ffind_tty_closest_color.

2023-10-09  Richard Hopkins  <xemacs@unbit.co.uk>

	* fontcolor-tty-impl.h (struct tty_color_instance_data): Add
	fields for is_rgb_known, red, green and blue.

	* fontcolor-tty-impl.h (COLOR_INSTANCE_TTY_IS_RGB_KNOWN):
	(COLOR_INSTANCE_TTY_RED):
	(COLOR_INSTANCE_TTY_GREEN):
	(COLOR_INSTANCE_TTY_BLUE): New wrappers for new fields.

	* fontcolor-tty.c (tty_initialize_color_instance): Populate
	is_rgb_known, red, green and blue based on data populated in
	color_alist.

	* fontcolor-tty.c (tty_color_instance_rgb_components): New
	function implementing generic #'color-instance-rgb-components; the
	components are converted to 16-bit as required.

	* fontcolor-tty.c (console_type_create_fontcolor_tty): Register
	#'color-instance-rgb-components.

2023-10-08  Aidan Kehoe  <kehoea@parhasard.net>

	Recent Motif Xm.h unilaterally #defines USE_XFT if XFT is
	available, which makes building without it difficult for
	XEmacs. Change our #define to XEMACS_USE_XFT.
	Change some related #defines for symmetry.

	* console-xlike-inc.h (XEMACS_USE_XFT):
	* fontcolor-xlike-inc.c:
	* fontcolor-xlike-inc.c (XFUN):
	* fontcolor-xlike-inc.c (FcResultToString):
	* redisplay-x.c:
	* redisplay-x.c (x_get_gc):
	* redisplay-x.c (separate_textual_runs_xft_nomule):
	* redisplay-x.c (separate_textual_runs_xft_mule):
	* redisplay-x.c (separate_textual_runs):
	* redisplay-x.c (x_text_width_single_run):
	* redisplay-x.c (x_output_string):
	* redisplay-xlike-inc.c (XLIKE_output_display_block):

2023-10-05  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (Fwindow_end):
	window_display_buffer () can sometimes give NULL if the window has
	yet to be redisplayed, check for that in this function.

2023-10-04  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (set_lisp_search_registers):
	Force the correct order of START, END arguments to
	set_extent_endpoints(), thank you Jody Weissmann, thank you Henry
	S. Thompson.

2023-09-30  Aidan Kehoe  <kehoea@parhasard.net>

	Add modifiers.h, on the model of keymap-buttons.h. Use it in 
	those places where code iterates through modifiers.

	Print modifiers for motion, misc-user events, which was not done
	previously.
	Fix a bug in passing where list structure was not appropriately
	generated for motion events, thank you Henry S. Thompson. 
	
	* modifiers.h:
	* modifiers.h (XEmacs is free software): New.

	* events.c (print_event):
	Print modifiers for motion, misc-user events.
	* events.c (Fmake_event):
	Iterate through modifiers using modifiers.h when processing them.
	* events.c (format_event_object):
	Iterate through modifiers using modifiers.h when printing them.
	* events.c (Fevent_modifiers):
	Iterate through modifiers using modifiers.h when constructing a
	symbolic list of them.
	* events.h:
	* events.h (enum event_modifiers):
	Use FROB_MODIFIER and modifiers.h when constructing this enumeration.

	* keymap.c:
	* keymap.c (FROB_MODIFIER): Use this #define with modifiers.h when
	declaring symbols needed to declare modifiers.
	* keymap.c (bucky_sym_to_bucky_bit):
	Use modifiers.h within this function.
	* keymap.c (control_meta_superify):
	Ditto.
	* keymap.c (canonicalize_keysym):
	Ditto, error within this function rather than in callers when
	supplied with keysyms that are modifiers names and that are not
	buttons.
	* keymap.c (parse_list_keystroke): New. Refactored out of
	Fcanonicalize_keysym(), also used in define_key_parser().
	* keymap.c (Fcanonicalize_keysym): Use parse_list_keystroke ().
	* keymap.c (define_key_parser): Ditto.
	* keymap.c (Fsingle_key_description):
	Use modifiers.h in this function, avoid printing redundant
	modifiers multiply.
	For symmetry with treatment of event arguments, use
	character_to_event() to extract modifiers for control characters.
	* keymap.c (describe_map):
	Use modifiers.h when iterating through modifiers to print them.
	* keymap.c (syms_of_keymap):
	Use modifiers.h when iterating through modifier names for
	DEFSYMBOL().
	* keymap.h:
	Use modifiers.h when iterating through modifier names for
	declarations.
	* lisp.h:
	Remove declaration of control_meta_superify(), no longer used in
	events.c.

2023-10-07  Aidan Kehoe  <kehoea@parhasard.net>

	Clean up a few straggling remnants of the old mark algorithm,
	missed in cca3709a62ad .

	* alloc.c:
	Remove mention of objects' mark methods.
	* array.c (mark_Lisp_Object_dynarr): Removed, not necessary since
	KKCC is the only mark algorithm.
	* buffer.c (common_init_complex_vars_of_buffer):
	Remove mention of a mark method.
	* console-impl.h (struct console_methods): Remove the
	mark_console(), mark_device(), mark_frame(),
	mark_color_instance(), mark_font_instance(), and
	mark_image_instance() methods.
	* console-msw.c (console_type_create_mswindows):
	Remove mention of the mark_console() method.
	* console-tty.c (tty_initially_selected_for_input):
	Remove tty_mark_console ().
	* console-tty.c (console_type_create_tty):
	Remove mention of mark_consol().
	* console.c (common_init_complex_vars_of_console):
	* device-gtk.c:
	* device-gtk.c (console_type_create_device_gtk):
	Remove gtk_mark_device().
	* device-msw.c:
	Remove mswindows_mark_device(), msprinter_mark_device().
	* device-x.c:
	Remove x_mark_device().
	* file-coding.c:
	Remove chain_mark(), chain_mark_coding_stream_1(),
	chain_mark_coding_stream(), undecided_mark(), and
	undecided_mark_coding_stream().
	* file-coding.h (struct coding_system_methods):
	* file-coding.h (struct detector):
	Remove the mark methods from these structures.

	* fontcolor-msw.c:
	Remove mswindows_mark_color_instance(),
	mswindows_mark_font_instance(), 
	
	* fontcolor-tty.c:
	Remove tty_mark_color_instance(), tty_mark_font_instance().

	* fontcolor.c:
	Remove color_mark(), font_mark(), face_boolean_mark(),
	face_background_placement_mark().

	* frame-gtk.c:
	Remove gtk_mark_frame().

	* frame-msw.c:
	Remove mswindows_mark_frame(), msprinter_mark_frame().

	* frame-x.c:
	Remove x_mark_frame().

	* gc.c:
	Be clearer in the documentation here that we don't use mark
	methods at all.

	* gccache-x.h:
	Clarify how the hash table in the x_gc_cache is reachable for the
	GC.

	* glyphs.c:
	Remove image_mark().

	* gutter.c:
	Remove mark_gutters().
	* gutter.h:
	Remove its declaration.

	* intl-win32.c:
	Remove mswindows_multibyte_mark().
	* lisp.h:
	Remove declarations for mark_Lisp_Object_dynarr(),
	mark_buffer_syntax_cache().
	* lrecord.h:
	Update comments here to reflect that KKCC is the only mark
	algorithm and to update examples.

	* mule-ccl.c:
	Remove mark_ccl_program() from here.
	* mule-ccl.h:
	Remove its declaration.

	* mule-coding.c:
	Remove multibyte_mark_coding_stream(), multibyte_mark(),
	iso2022_mark_iso2022_coding_stream(),
	iso2022_mark_coding_stream(), iso2022_mark(),
	iso2022_mark_detection_state(), ccl_mark(), and
	ccl_mark_coding_stream().
	* redisplay.c:
	Remove mark_glyph_block_dynarr(), mark_redisplay_structs().
	* redisplay.h:
	Remove the declaration of mark_redisplay_structs().
	* specifier.h (struct specifier_methods):
	Remove the mark method.
	* syntax.c:
	Remove mark_buffer_syntax_cache().

2023-09-08  Aidan Kehoe  <kehoea@parhasard.net>

	* fontcolor-tty.c:
	Add information to mark escape_fore, escape_back with KKCC.

2023-08-26  Richard Hopkins  <xemacs@unbit.co.uk>

	Use the escape sequence found during initialization rather than
	re-lookup during redisplay.  This de-duplication should also help
	support hex/rgb codes in future as they won't be a key in
	color_alist.

	* redisplay-tty.c (set_foreground_to): Use provided escape
	sequence rather than re-lookup in color_alist.
	(set_background_to): Use provided escape sequence rather than
	re-lookup in color_alist.
	(tty_turn_on_face_1): Pass the escape sequence instead of color
	name to set_foreground_to / set_background_to.

	* fontcolor-tty.c (tty_initialize_color_instance): Populate
	escape_fore and escape_back with escape strings from color_alist.

	* fontcolor-tty.c (tty_mark_color_instance): Mark new escape_fore
	and escape_back.

	* fontcolor-tty-impl.h (struct tty_color_instance_data):
	(escape_fore): Add to hold ANSI escape sequence string.
	(escape_back): Add to hold ANSI escape sequence string.
	(COLOR_INSTANCE_TTY_ESCAPE_FORE): Wrapper for escape_fore.
	(COLOR_INSTANCE_TTY_ESCAPE_BACK): Wrapper for escape_back.

2023-08-10  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (portable_offsetof):
	Cast the result of this to Bytecount, rather than size_t, so its
	use (almost exclusively for the OFFSET field of struct
	memory_description) doesn't cause problems with clang++-11.

2023-08-06  Richard Hopkins  <xemacs@unbit.co.uk>

	* fontcolor-tty.c (Fregister_tty_color): Ensure rgb_vector_len is
	wrapped with #'make_integer for the "RGB-VECTOR must have a length
	of 3." error.

2023-08-05  Richard Hopkins  <xemacs@unbit.co.uk>
 
	Allow registering RGB values for TTY colors with the intention
	these can later be used to support HEX codes translation and
	fallback, along with 24-bit Trucolor support.

	* console-tty-impl.h (struct tty_console): Clairfy layout of
	color_alist for new rgb_vector element.

	* fontcolor-tty.c (Fregister_tty_color): Add new rgb_vector arg.
	This must be a 3-element vector with each element being an integer
	in the range 0-255; anything else signals an error.  Update
	color_alist accordingly.

	* fontcolor-tty.c (Ffind_tty_color): Update result to include new
	rgb_vector.

	* redisplay-tty.c (set_background_to): Update reference to
	bg_string due to color_alist updates to handle rgb_vector.
 
2023-08-06  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (control_meta_superify): Make this available to other
	files.
	Add the modifiers in strictly descending numerical order, to allow
	#'canonicalize-keysym to minimise consing.
	* events.c (Fevent_modifiers):
	Use control_meta_superify () in this function, to ensure this
	function and #'canonicalize-keysym give consistent resutls.

	* keymap.c (Fcanonicalize_keysym):
	If KEYSYM is already in canonical form (including the order of its
	modifiers), return it.
	* lisp.h:
	Declare control_meta_superify () for files that are not keymap.c.

2023-08-05  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c (enum did_munge_result): New.
	Enumeration documenting the various munging of events that
	munge_keymap_translate() and friends may have done.

	* event-stream.c (this_command_keys_shift_translated): New.
	A boolean variable to allow handle-pre-motion-command and
	handle-post-motion-command to know whether
	retry-undefined-key-binding-unshifted has been necessary. Name
	from GNU, implementation our own.

	* event-stream.c (munge_keymap_translate):
	Implement the enumeration for DID_MUNGE.
	* event-stream.c (command_builder_find_leaf_no_jit_binding):
	Ditto.
	* event-stream.c (command_builder_find_leaf):
	Ditto.
	* event-stream.c
	(command_builder_find_leaf_and_update_global_state):
	Check DID_MUNGE for MUNGED_RETRY_UPSHIFTED, set
	this_command_keys_shift_translated to non-zero if appropriate.
	* event-stream.c (reset_this_command_keys):
	Set this_command_keys_shift_translated to zero.
	* event-stream.c (vars_of_event_stream):
	Make this-command-keys-shift-translated available to Lisp.
	* events.c (Fevent_key):
	Extend the docstring of this some more.

2023-07-31  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (rewrite_rational_spec):
	Make the %z integer length modifier explicitly equivalent to the
	%l modifier when formatting for Lisp, avoid infinite loop.

2023-07-30  Aidan Kehoe  <kehoea@parhasard.net>

	Make algorithm used in #'find, #'position with :from-end and
	lists, strings the same as that with arrays; use
	list_position_cons_before() for the non :from-end list case, which
	is cheaper for the usual case where the test is #'eq and there is
	no key argument.

	* sequence.c:
	* sequence.c (list_position_cons_before):
	Update documentation for this function. Error if END and START are
	not valid bounding index designators, which it did not previously.

	* sequence.c (position):
	Call list_position_cons_before () and adjust the algorithm with
	:from-end and strings, lists as above.

	* sequence.c (Fdelete_duplicates):
	Be more careful about the END argument to
	list_position_cons_before () now that it's checked.
	* sequence.c (Fremove_duplicates):
	Be more careful about the END argument to
	list_position_cons_before () now that it's checked.

	* sequence.c (mismatch_list_string):
	* sequence.c (mismatch_list_array):
	* sequence.c (mismatch_string_array):
	Work around the compiler thinking an argument to make_integer ()
	with the ternary operator is non-idempotent in these functions, in
	passing.

2023-07-29  Aidan Kehoe  <kehoea@parhasard.net>

	* fontcolor-gtk.c (gtk_color_instance_rgb_components):
	Return something understood by Lisp (that is, three fixnums
	between 0 and 65535) under GTK3, rather than floats. 
	This fixes detection that a frame has a light background in
	#'get-frame-background-mode for me.

2023-07-22  Richard Hopkins  <xemacs@unbit.co.uk>

	* redisplay-tty.c (set_foreground_to):
	(set_background_to): Use console specific color_alist.

	* fontcolor.c (Fcolor_list): Provide device arg to #'color-list.

	* fontcolor-tty.c:
	(Vtty_color_alist): Remove; it's now an entry in struct
	tty_console.
	(Fregister_tty_color): Add new console arg.  Use console specific
	color_alist.
	(Funregister_tty_color): Add new console arg.  Use console
	specific color_alist.
	(Ffind_tty_color): Add new console arg.  Use console specific
	color_alist.
	(tty_color_list): Add device arg.  Use console specific
	color_alist.
	(tty_initialize_color_instance): Use existing device arg.  Use
	console specific color_alist.
	(tty_valid_color_name_p): Use console specific color_alist.
	(vars_of_fontcolor_tty): Delete staticpro call for the now deleted
	Vtty_color_alist.

	* fontcolor-msw.c (mswindows_color_list): Add UNUSED device arg.

	* fontcolor-gtk.c (gtk_color_list): Add UNUSED device arg.

	* device-tty.c:
	(Qmake_device_late_tty_entry_point): New.
	(tty_finish_init_device): New. Call
	#'make-device-late-tty-entry-point.
	(syms_of_device_tty): DEFSYMBOL Qmake_device_late_tty_entry_point.
	(console_type_create_device_tty): Provide finish_init_device
	method.

	* console-tty.c (tty_console_data_description_1): Add entry for
	color_alist.
	(allocate_tty_console_struct): Set color_alist entry to Qnil.
	(tty_init_console): Set color_alist entry to Qnil.
	(tty_mark_console): Mark color_alist.

	* console-tty-impl.h (struct tty_console): Add color_alist
	entry.

	* console-impl.h (struct console_methods): Add device arg for
	color_list_method.

2023-06-17  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (no_conversion_decode):
	* file-coding.c (no_conversion_encode):
	* unicode.c (unicode_decode):
	* unicode.c (unicode_encode):
	Restore the skip_ascii() optimization for the no-conversion and
	utf-8 coding systems, dropped in the course of the
	unicode-internal merge. This gives a 25% speedup on loading
	Unihan.txt as UTF-8, and a 33% speedup on loading it using
	no-conversion.
	Further work: add the skip_ascii() optimization to the multibyte
	code if the relevant charsets make that appropriate.

2023-05-17  Richard Hopkins <xemacs@unbit.co.uk>

	* src/device-msw.c (mswindows_device_system_metrics): Update
	DM_num_color_cells calculation for non RC_PALETTE devices
	to use BITSPIXEL and cap it to 24-bits.

	The previous calculation using SIZEPALETTE could return 0 or
	256 even when many more colors are available.  A consequence
	of this is that themes with (min-colors NUM) would not be
	respected.  Under the same scenario this change now makes
	(device-color-cells) => 16777216, which also matches the
	result from GNU Emacs on the same setup.  It may make sense
	to always use this calculation just like GNU does but for now
	respect the old calculation whilst more exposure is gained.

	The related commit in GNU Emacs was made available in the 24.3
	release.

	commit 821812e2477f45ac5f2572dd7d469b8408e351aa
	Author: Daniel Colascione <dancol@dancol.org>
	Date:   Mon Oct 8 10:44:42 2012 -0800

	* w32fns.c (Fx_display_color_cells): Instead of using NCOLORS,
	which is broke under remote desktop, calculating the number of
	colors available for a display based on the display's number of
	planes and number of bits per pixel per plane.  (bug#10397).

2023-05-13  Aidan Kehoe  <kehoea@parhasard.net>

	* XEmacs 21.5.35 "kohlrabi" is released.

2023-04-16  Aidan Kehoe  <kehoea@parhasard.net>

	* console-stream.c:
	* file-coding.c:
	* file-coding.c (MARKED_SLOT):
	* intl-win32.c:
	* mule-coding.c:
	* mule-coding.c (ccs_description_1):
	Visual Studio does not tolerate offsetof() in a struct
	description, use portable_offsetof() instead.

	* lisp-disunion.h (VALMASK):
	When left shifting to work this out, left shift 1 cast to an
	EMACS_UINT, rather than 1UL, which is a smaller type than
	EMACS_UINT on 64 bit Windows.
	* lisp.h (MOST_POSITIVE_FIXNUM_UNSIGNED): Similarly here.
	* lisp.h: Don't provide max_align_t if building under Visual Studio.

	* process-nt.c (alloc_process_memory):
	Examine the base address of the committed range appropriately on
	64 bit Windows.
	* process-nt.c (find_child_console): Declare this function
	appropriately.
	* emacs.c:

	* s/windowsnt.h:
	Provide appropriate SIZEOF_VOID_P, SIZEOF_LONG_LONG, ssize_t for
	AMD64 systems.
	Deal better with inline declarations on C++ builds.
	Require at minimum Windows 2000 when building, we use functions
	not available on Windows NT 4.0.

	* strftime.c:
	Just #include "systime.h", don't attempt to provide what it does
	ourselves.
	* sysproc.h:
	Adjust the path to Visual Studio's process.h.
	Conditionalise #define EWOULDBLOCK WSAEWOULDBLOCK to situations
	where EWOULDBLOCK (and friends) are not already defined.
	* systime.h:
	Recent Visual Studio makes tzname available as _tzname.

2023-04-16  Aidan Kehoe  <kehoea@parhasard.net>

	Quiet some warnings on the Visual Studio Express Edition 2005
	native build, which will make solving some 64-bit-specific
	problems easier.

	* fileio.c (Ffile_newer_than_file_p):
	Use a better type for MTIME1 in this function.
	* glyphs-msw.c (bmp_instantiate):
	Cast LEN to an EMACS_UINT before comparing it to the unsigned type
	in the bmp file header.
	* minibuf.c (map_completion):
	Don't return a value from this function that returns void.
	* mule-ccl.c (CCL_WRITE_CHAR):
	Cast CH to unsigned char before passing it to Dynarr_add(); we've
	checked its range appropriately.
	* number.h (DEFINE_C_INTEGER_TYPE_LISP_CONVERSION):
	Cast the double result of extract_float () before assigning it.
	* print.c (debug_print):
	Don't return a value from this function that returns void.
	* regex.c (regex_compile):
	Avoid a duplicate const qualifier when declaring STR (which is a
	re_char, a const type).
	* strftime.c (strftime):
	Cast an argument to add_char () to a char.

2023-04-16  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c:
	* regex.c (REGEX_REALLOCATE):
	Revise this to avoid the need for a DESTINATION variable.
	* regex.c (PUSH_FAILURE_POINT):
	Don't declare DESTINATION now there's no longer any need for it.
	* regex.c (re_compile_fastmap):
	Don't declare DESTINATION now there's no longer any need for it.

2023-04-16  Aidan Kehoe  <kehoea@parhasard.net>

	* alloca.c (ADDRESS_FUNCTION): Always return a pointer to char in
	this macro.
	* alloca.c (find_stack_direction):
	Avoid the AMD64 red zone confusing this function by making DUMMY a
	512 byte buffer, forcing stack allocation.

2023-04-06  Aidan Kehoe  <kehoea@parhasard.net>

	* syswindows.h:
	Adjust the header includes slightly.
	Just #include  <WinNls.h>, now needed for certain declarations
	with the Visual Studio headers.
	* syswindows.h (qxeReadConsole): New.
	Moved here from intl-encap-win32.c, recent Window headers require
	that the last argument be a pointer to a struct
	_CONSOLE_READCONSOLE_CONTROL rather than to void.

	* intl-encap-win32.c: Adjust this slightly given difficulties with
	recent Visual Studio headers.

	* intl-auto-encap-win32.h: Regenerate.

2023-04-03  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (generate_formatted_string_db):
	Avoid miscalculation of the required length of FORMAT_STR in this
	function, which led to slop at the end of the generated string,
	provoking crashes with ERROR_CHECK_TEXT when the generated string
	had non-ASCII.

2022-12-29  Caj E. Svensson <svenssonc@acm.org>

	* dialog-msw.c (dialog_proc)
	* event-msw.c (mswindows_wnd_proc, mswindows_find_frame)
	* frame-msw.c (mswindows_get_mouse_position, mswindows_get_frame_parent)
	Cast the Windows calls to qxeGetWindowLongPtr() with (const void *) to
	remove the compiler warnings when compiling under Cygwin.

2023-04-10  Aidan Kehoe  <kehoea@parhasard.net>

	Revise get_string_pos_byte () to minimise calls to
	string_char_length().

	* fns.c:
	* fns.c (Fcompare_strings):
	Use get_string_range_byte () in this function.
	* fns.c (Fsubstring_no_properties):
	Use get_string_range_byte () in this function.
	* sequence.c (Fsubseq):
	Use get_string_range_byte () in this function.
	* text.c:
	* text.c (get_string_pos_byte_1): New.
	Avoid calls to string_char_length () as much as possible when
	determining a byte offset into a string. Pass in the string char
	length if it is already known and use it.
	* text.c (get_string_range_byte):
	Use get_string_pos_byte_1 () here.
	* text.c (get_string_range_byte):
	Use get_string_pos_byte_1 () here.

2023-04-10  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (get_buffer_range_byte):
	If FROM or TO are nil it may be appropriate to use
	get_buffer_pos_byte() in this function, do that.

2022-11-26  Aidan Kehoe  <kehoea@parhasard.net>

	* process.c (Fstart_process_internal):
	Use set_marker_byte_position() here, avoid a needless
	charbpos_to_bytebpos().
	* process.c (process_setup_for_insertion):
	If writing to the end of the visible portion of the buffer, use
	BOTH_BUF_SET_PT() when setting point, avoiding a needles
	charbpos_to_bytebpos().
	* process.c (read_process_output):
	Use set_marker_byte_position() here after the insert.

2022-11-22  Aidan Kehoe  <kehoea@parhasard.net>

	* syntax.c (find_end_of_comment):
	Don't call BUF_FETCH_CHAR() here.
	* syntax.c (scan_lists):
	Dont subtract 1 from a Bytebpos, use prev_bytebpos() instead.
	* syntax.c (scan_sexps_forward):
	Be more careful about range before passing the result of XFIXNUM
	to charbpos_to_bytebpos().

2022-11-21  Aidan Kehoe  <kehoea@parhasard.net>

	* font-lock.c (find_context):
	Pass a byte position to the syntax cache code, fixing a bug. Use
	BYTE_BUF_FETCH_CHAR() now we have the byte position.

2022-11-20  Aidan Kehoe  <kehoea@parhasard.net>

	* syntax.c (scan_words):
	Fix a compilation problem with the definition of this, thank you
	G++ 11.

2022-11-20  Aidan Kehoe  <kehoea@parhasard.net>

	Move syntax.c to functioning in byte offsets, avoiding the
	implicit charbpos_to_bytebpos() of its frequent BUF_FETCH_CHAR()
	calls and bringing us a little close to removing the non-MULE
	build option.

	* font-lock.c:
	* font-lock.c (end_of_defun):
	Call scan_lists() with its new calling convention.
	* lisp.h:
	Declare the new byte_scan_words (), provided in addition to
	scan_words () given the former is used in several places.
	* regex.c (offset_to_bytexpos): New.
	Renamed and revised offset_to_charxpos().
	* regex.c (re_search_2):
	* regex.c (re_match_2):
	* regex.c (re_match_2_internal):
	Avoid potentially expensive bytebpos_to_charbpos() calls in these
	functions now the syntax cache deals in byte positions.

	* regex.h:
	* regex.h (Bytebpos):
	Give this a #define for non-XEmacs code using regex.h.
	* search.c (skip_chars):
	Now the syntax code deals in byte positions, use them in this
	function.

	* syntax.c:
	* syntax.c (struct lisp_parse_state):
	* syntax.c (find_defun_start):
	* syntax.c (Fsyntax_cache_info):
	* syntax.c (reset_syntax_cache_range):
	* syntax.c (setup_syntax_cache):
	* syntax.c (setup_buffer_syntax_cache):
	* syntax.c (update_syntax_cache):
	* syntax.c (signal_syntax_cache_extent_adjust):
	* syntax.c (scan_words):
	* syntax.c (byte_scan_words):
	* syntax.c (Fforward_word):
	* syntax.c (find_start_of_comment):
	* syntax.c (find_end_of_comment):
	* syntax.c (Fforward_comment):
	* syntax.c (scan_lists):
	* syntax.c (char_quoted):
	* syntax.c (Fscan_lists):
	* syntax.c (Fscan_sexps):
	* syntax.c (Fbackward_prefix_chars):
	* syntax.c (scan_sexps_forward):
	* syntax.c (Fparse_partial_sexp):
	* syntax.h:
	* syntax.h (struct syntax_cache):
	Revise all this to deal in byte positions.  Transform to character
	position when dealing with Lisp in #'parse-partial-sexp.

2022-11-19  Aidan Kehoe  <kehoea@parhasard.net>

	Move barf_if_buffer_read_only() to taking Bytebpos arguments, in
	preparation for moving the multiple_change infrastructure to
	function in byte positions.

	* buffer.c: (Fbarf_if_buffer_read_only):
	Call barf_if_buffer_read_only() with byte positions.
	
	* file-coding.c (encode_decode_coding_region):
	Call Fbarf_if_buffer_read_only() here given we use character
	positions.

	* fns.c (Fbase64_encode_region): Ditto.
	* fns.c (Fbase64_decode_region): Ditto.
	* insdel.c:
	* insdel.c (prepare_to_modify_buffer): Ditto.
	* insdel.c (barf_if_buffer_read_only): Take FROM and TO as
	Bytebpos, not Charbpos.
	* insdel.h:
	Update declaration for barf_if_buffer_read_only().
	* lisp.h:
	Declare Fbarf_if_buffer_read_only() here.

2022-11-05  Aidan Kehoe  <kehoea@parhasard.net>

	* indent.c:
	Correct some types for indent_tabs_mode,
	last_known_column_modified, 
	* indent.c (last_visible_position):
	Revise this to return a Bytebpos, and to check whether an
	invisible extent is start-open; if so, return its start, if not,
	return the position before its start.

	* indent.c (Findent_to):
	Call extent_at() with BYTE_BUF_PT() rather than Fextent_at(). Call
	last_visible_position() with its new calling convention. Avoid the
	need for byte-char conversion the vast majority of the time.
	* indent.c (Fcurrent_indentation):
	Use byte_find_next_newline(), extent_at() in this function,
	avoiding the cost of char-byte conversion.
	* indent.c (Fmove_to_column):
	Use byte_find_next_newline(), BYTE_BUF_FETCH_CHAR() in this
	function, avoiding char-byte conversion costs.
	Keep track of the character position and use BOTH_BUF_SET_PT()
	once the goal column is found, avoiding byte-char conversion
	costs. 
	* indent.c (Fcompute_motion): Remove this commented-out function,
	give some documentation on why this is reasonable.
	* indent.c (syms_of_indent):
	Remove the DEFSUBR for Fcompute_motion().
	* lisp.h:
	* search.c:
	Move byte_find_next_newline(), byte_find_next_newline_no_quit(),
	find_next_newline(), find_next_newline_no_quit() to being inline,
	give they are just wrappers around byte_scan_buffer() and
	scan_buffer().

2022-10-27  Aidan Kehoe  <kehoea@parhasard.net>

	* extents.h: Declare Fextent_live_p() here.
	* window.c (Fdelete_window):
	* window.c (Fset_window_buffer):
	Fextent_object () can error when EXTENT is not live, check this
	before calling it in these function.
	Reproducible crash revealing the bug elicited by Henry Thompson,
	thank you Henry!

2022-09-16  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* extents.c (next_previous_single_property_change):
	In extremely rare occasions, next_previous_single_property_change()
	gets stuck in an infinite loop in which
	extent_find_(end|beginning)_of_run returns the same byte position
	value it was called with. Remedy that.

2022-09-13  Aidan Kehoe  <kehoea@parhasard.net>

	Silence a couple of compile-time warnings elicited by gcc 11,
	Cygwin 2022-09-05.

	* fontcolor-msw.c (mswindows_print_font_instance):
	Cast a HFONT_VARIANT to an EMACS_UINT to suppress warnings
	regarding format strings.

	* glyphs-msw.c (bmp_instantiate):
	Check that the supplied bitmap data is at least enough for the
	bitmap size specified in the bitmap header, error if not.
	* glyphs-msw.c (mswindows_print_image_instance):
	Cast a HBITMAP to EMACS_UINT when printing using %zx.  Cast a
	HBITMAP (reflecting the pixmap mask) to EMACS_UINT when printing
	using %z.

2022-08-28  Aidan Kehoe  <kehoea@parhasard.net>

	Move Fstring_equal to lisp/obsolete.el.

	* buffer.c (assoc_ignore_text_properties): Remove.
	* buffer.c (Fget_file_buffer):
	Use internal_equal () instead of Fstring_equal (), now the latter
	functions is removed.
	* bytecode-ops.h (OPCODE):
	Only #define the string_equal opcode if NEED_TO_HANDLE_21_4_CODE
	is defined.
	* bytecode.c (UNUSED):
	Only implement Bstring_equal if NEED_TO_HANDLE_21_4_CODE is
	defined. Move the implementation here.
	* fns.c:
	* fns.c (syms_of_fns):
	Move Fstring_equal to obsolete.el.

	* lisp.h: Remove the declaration of Fstring_equal from here.
	* menubar.c (Fmenu_find_real_submenu):
	Call internal_equal rather than Fstring_equal here.
	* search.c (compile_pattern):
	Ditto.

2022-08-12  Aidan Kehoe  <kehoea@parhasard.net>

	* callint.c (callint_prompt):
	Correct a bug in this function, don't make_string() into args0[0]
	and then immediately overwrite that.

2022-08-04  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* emacs.c (static int inhibit_configured_paths):
	* emacs.c (main_1):
	* emacs.c (standard_args):
	Add a new -no-configured-paths command line flag that makes
	setup-paths.el ignore all configure's built-in paths.

	* emacs.c (Fconfigured_paths_disabledp):
	* emacs.c (syms_of_emacs):
	A simple function that returns whether -no-configured-paths was
	specified.

	* Makefile.in.in (BATCH):
	Add -no-configured-paths to batch building invocations.

2022-07-31  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* console-tty-impl.h (struct tty_console):
	* redisplay-tty.c (set_tty_modes):
	* redisplay-tty.c (init_tty_for_redisplay):
	Between XEmacs 21.4 and 21.5, redisplay-tty.c:init_tty_for_redisplay()
	switched "ve" and "vs" around in these lines (example from 21.4):

	TTY_SD (c).cursor_visible = tgetstr ("vs", &bufptr);
	TTY_SD (c).cursor_normal = tgetstr ("ve", &bufptr);

	(See
	https://www.gnu.org/software/termutils/manual/termcap-1.3/html_node/termcap_35.html
	for reference to what these mean. It's not very clearly stated, but
	"to enhance the cursor", at least in xterm, makes the cursor blink.)

	So in 21.4, redisplay-tty.c:set_tty_modes() did

	OUTPUT1_IF (c, TTY_SD (c).cursor_visible);

	which made the cursor blink during XEmacs running, and
	redisplay-tty.c:reset_tty_modes() did

	OUTPUT1_IF (c, TTY_SD (c).cursor_normal);

	that restored it to normal after exiting. However, in 21.5, those
	having switched around, the while-running cursor became normal, and
	closing XEmacs left the cursor blinking.

	Neither makes much sense, because nobody likes a blinking TTY cursor,
	which was probably the reason for the weird switcharoo. Therefore I
	removed struct tty_console.cursor_visible altogether, restored the
	assignment to cursor_normal to tgetstr("ve", ...) and made both
	set_tty_modes() and reset_tty_modes() do OUTPUT1_IF(...cursor_normal).

2022-07-29  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* charset.h (struct Lisp_Charset):
	* charset.h (CHARSET_AUTOLOAD_FAILED):
	* charset.h (XCHARSET_AUTOLOAD_FAILED):
	Add an autoload_failed field to struct Lisp_Charset and the
	corresponding macros. If an autoloaded character set fails to load,
	retries would previously essentially crash XEmacs by rendering it
	completely unresponsive...

	* unicode.c (hoida_unicode_lataamisvirhe):
	* unicode.c (autoload_charset_unicode_tables):
	* unicode.c (get_unicode_conversion_1):
	...so make the autoload mechanism emit a clear error message once and
	to mark an autoloaded charset that has a loading error as having
	failed autoloading, and from then on fail conversions with that
	charset.

	* unicode.c (compiled_unicode_table_handle_autoload_error):
	* unicode.c (compiled_unicode_table_load):
	Wrap the compiled unicode table loading in error handling so errors
	from it - which, turned out, can be caused by the autoloading message
	itself - don't terminate the charset loading process.

	* lread.c (Fload_internal):
	* lread.c (vars_of_lread):
	A new variable, load_never_display_messages, that suppresses
	displaying messages from #'load.

	* mule-charset.c (disksave_charset):
	Reset the autoload_failed flag to 0 when a charset is being saved to
	the disk, and therefore flagged for reloading.

2022-07-26  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* unicode.c (compiled_unicode_table_decode_init_col):
	Invert a broken check for the length of a compiled Unicode table
	column.

2022-07-24  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* unicode.c:
	Create a mechanism to dump the Unicode tables under etc/unicode to
	Lisp data structures and to read them back from them.

	Fload_unicode_mapping_table() will now try to call
	lisp/mule/compiled-unicode-tables.elc's
	#'set-compiled-unicode-file-search-table from autoloads, which, when
	existing, will set the variable Qcompiled_unicode_file_search_table
	to contain a compiled table of all etc/unicode files known to be
	used by the built-in Lisp code.

	If #'set-compiled-unicode-file-search-table is not defined or
	Qcompiled_unicode_file_search_table doesn't have an entry for a file,
	Fload_unicode_mapping_table() will use the old mechanism and look up
	the parsed data from either an absolute path or etc/unicode.

	A new Fdump_unicode_mapping_table() uses the same file table parsing
	mechanism, but returns a list of parsed entries. It's used by
	mule/compiled-unicode-tables.el at compile time to compose
	#'set-compiled-unicode-file-search-table.

	* config.h.in:
	Remove the define template of CYGWIN_SCANF_BUG with the test for it
	being removed from configure.

2022-07-15  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* redisplay.c (regenerate_window_incrementally):
	Change the calculation of the end of the unchanged region in the
	modified buffer from using BUF_Z() to BYTE_BUF_Z(), as it is
	calculated with that in insdel.c:buffer_signal_changed_region().
	This fixes a bug where the displayed window isn't redisplayed when
	enter is pressed while the cursor is in the beginning of a line.

	* number-mp.c:
	Complete the shift from emacs_snprintf() to emacs_snprintf_ascbyte()
	by changing the buffer types from Ibyte to Ascbyte.

	* sysdep.c (total_data_usage):
	I brain farted in the implementation of this by causing a potential
	use-after-free by calling kvm_close() before reading the value
	returned by kvm_getproc[s2](). Since libkvm owns and manages the
	memory aread of the values its API returns, that is outside its
	guarantees of availability. That is fixed now.

2022-07-14  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (rewrite_rational_spec):
	Fix a compile problem elicited by the buildbot when configured
	--with-bignum=gmp, thank you Mats Lidell!

2022-07-14  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c:
	* doprnt.c (EXPLICITLY_INVALID_CONVERTER):
	* doprnt.c (parse_doprnt_spec):
	Restrict the range of the minwidth and precision fields to be a
	bit more reasonable, there shouldn't be a need for either to be
	1152921504606846975 on a sixty-four bit machine, 65535 should be
	good enought.
	* doprnt.c (rewrite_rational_spec):
	Take an Error_Behavior argument.
	Call maybe_signal_error{,_1} appropriately in this function.
	If we would otherwise have signalled an error, return
	EXPLICITLY_INVALID_CONVERTER, so emacs_doprnt() knows to UNGCPRO and
	return.
	* doprnt.c (FIXNUM_SPEC_PREAMBLE_1):
	Call rewrite_rational_spec () with its ERRB argument.
	* doprnt.c (FIXNUM_SPEC_PREAMBLE):
	Call maybe_signal_error{,_1} appropriately in this function.	
	* doprnt.c (error_behavior_to_error_flags): New.
	* doprnt.c (emacs_doprnt):
	Adjust some further things to avoid Lisp errors and thus
	inappropriate code in redisplay.
	Use call_trapping_problems for prin1_to_string, print_internal if
	appropriate.

2022-07-14  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (emacs_doprnt):
	extract_float () can error, only call it if NUMBERP (OBJ),
	maybe_signal_error_1 () otherwise.
	* doprnt.c (format_into):
	Similarly in this function, for check_integer_range (),
	CHECK_BIGNUM(), out_of_memory (); replace them with corresponding
	maybe_signal_error_1 (), maybe_signal_error () calls.

2022-07-13  Aidan Kehoe  <kehoea@parhasard.net>

	Never return a negative value to Lisp when hashing, avoiding
	problems in obarray.el.  This will always have been a problem,
	since casting an unsigned long to an EMACS_INT will have returned
	a negative value for UINT_MAX on thirty-two bit machines, but was
	made more evident with dac90a20844f.
	* elhash.c (Feq_hash):
	* elhash.c (Feql_hash):
	* elhash.c (Fequal_hash):
	* elhash.c (Fequalp_hash):
	* number.h (make_unsigned_integer):

2022-07-11  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c:
	* doprnt.c (format_into):
	Revise this to return (more usefully) a Bytecount, not a
	Lisp_Object. 
	* doprnt.c (Fformat_into):
	Use the new calling convention for format_into (), keep the
	existing Lisp API.

	* callint.c:
	* callint.c (callint_prompt):
	Revise this, now format_into () returns a Bytecount, not a Lisp
	object.

	* lisp.h: Update the declaration of format_into().
	* redisplay.c (add_disp_table_entry_runes_1):
	Extend the display table handling to use format_into (), allowing
	arbitrary format strings.
	* redisplay.c (create_string_text_block):
	Update a comment here reflecting that this was done.

2022-07-11  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c:
	* doprnt.c (struct maybe_free_dynarr_info):
	* doprnt.c (maybe_free_dynarr):
	* doprnt.c (parse_doprnt_spec):
	* doprnt.c (get_doprnt_c_args):
	* doprnt.c (emacs_doprnt):
	* doprnt.c (write_fmt_string_va):
	* doprnt.c (write_external_fmt_string_va):
	* doprnt.c (write_fmt_string_lisp_va):
	* doprnt.c (write_fmt_string_lisp):
	* doprnt.c (emacs_vsnprintf):
	* doprnt.c (emacs_vsnprintf_ascbyte):
	* doprnt.c (format_into):
	* doprnt.c (follows): New.
	* doprnt.c (Fformat_into):
	* doprnt.c (syms_of_doprnt):
	Revise the formatting code to take an Error_Behavior argument and
	respect it appropriately in preparation for calling it within
	redisplay.
	Make this available to Lisp by means of a keyword argument to
	#'format-into.

	* callint.c (callint_prompt):
	Call format_into () with its new errb argument, ERROR_ME in this
	case. 
	* eval.c:
	* eval.c (decode_error_behavior): New. Given a Lisp symbol, return
	a corresponding Error_Behavior.
	* eval.c (syms_of_eval):
	Make some symbols available, used by decode_error_behavior ().

	* lisp.h:
	Adjust the declaration of format_into () to take its new
	Error_Behavior argument.
	Declare decode_error_behavior (), a new function.

2022-07-10  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* sysdep.c (total_data_usage):
	Implement total_data_usage() in terms of BSD libkvm.

	* sysdep.c (stuff_char):
	Compiler warning fix: if the system doesn't have the TIOCSTI ioctl,
	#ifdef directly to the error call instead of first assigning to a
	variable that is then left unused.

	* config.h.in
	libkvm related defines.

	* number-mp.c (bignum_set_long):
	* number-mp.c (bignum_set_ulong):
	* number-mp.c (bignum_set_llong):
	* number-mp.c (bignum_set_ullong):
	Switch from emacs_snprintf() to emacs_snprintf_ascbyte() to ensure that
	the hex strings to be parsed don't contain localized numbers.

	* data.c (parse_integer):
	Compiler warning fix: typecast signed int comparisons to EMACS_UINT.

	* search.c (chars_differ_in_non_final_bytes):
	Compiler warning fix: enclose this function inside #ifdef MULE.

2022-07-09  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c:
	* doprnt.c (union printf_arg):
	* doprnt.c (parse_doprnt_spec):
	* doprnt.c (get_doprnt_c_args):
	* doprnt.c (rewrite_rational_spec):
	* doprnt.c (emacs_doprnt):
	Revise the integer length modifiers made available to the C
	code. I had previously made the executive decision that HL_FLAG_L
	should always correspond to the bit width of an EMACS_INT, and had
	not cleanly implement HL_FLAG_LL. This was a bad decision as
	revealed by recent code from Jaakko which assumed, quite
	reasonably, standard C behaviour. It also meant compiler analysis
	of format strings was likely to be incorrect.
	As of now a new flag is implemented, HL_FLAG_Z, guaranteed
	equivalent to the bit width of an EMACS_INT. HL_FLAG_L now just
	reads a long from the arguments, HL_FLAG_LL reads a long long.
	The standard C meaning of the z modifier is that the argument is
	the same bit width as a size_t, which should give correct compiler
	analysis basically all of the time.

	* frame-x.c (x_create_widgets):
	Revise this in passing, accept the window ID as an integer, use
	our parse_integer () rather than sscanf () if the argument is a
	string.

	* alloc.c (INCREMENT_CONS_COUNTER):
	* alloc.c (NOSEEUM_INCREMENT_CONS_COUNTER):
	* buffer.c (Fgenerate_new_buffer_name):
	* bytecode.c (check_constants_index):
	* bytecode.c (print_compiled_function):
	* console-msw.c (GetConsoleHwnd):
	* device-msw.c (sync_printer_with_devmode):
	* device-x.c (x_IO_error_handler):
	* elhash.c (print_hash_table):
	* emacs.c (main_1):
	* emacs.c (assert_equal_failed):
	* emodules.c (emodules_load):
	* esd.c (esd_play_sound_data):
	* eval.c (print_multiple_value):
	* event-Xt.c (describe_event_window):
	* event-msw.c (debug_output_mswin_message):
	* events.c (print_event):
	* extents.c (soe_dump):
	* extents.c (soe_move):
	* extents.c (print_extent_1):
	* file-coding.c (detect_coding_type):
	* fontcolor-gtk.c (gtk_print_color_instance):
	* fontcolor-gtk.c (gtk_print_font_instance):
	* fontcolor-gtk.c (gtk_finalize_font_instance):
	* fontcolor-msw.c:
	* fontcolor-msw.c (mswindows_print_font_instance):
	* fontcolor-x.c (x_print_font_instance):
	* fontcolor-x.c (x_finalize_font_instance):
	* frame-gtk.c (Fgtk_window_id):
	* frame-msw.c (mswindows_window_id):
	* frame-msw.c (mswindows_frame_property):
	* frame-x.c (Fx_window_id):
	* gc.c (lispdesc_indirect_count_1):
	* glyphs-gtk.c (gtk_print_image_instance):
	* glyphs-msw.c (mswindows_print_image_instance):
	* glyphs-msw.c (mswindows_progress_gauge_redisplay):
	* glyphs-x.c (x_print_image_instance):
	* glyphs.c (print_image_instance):
	* input-method-xlib.c (describe_XIC):
	* keymap.c:
	* keymap.c (print_keymap):
	* marker.c (print_marker):
	* mule-ccl.c (ccl_driver):
	* number-gmp.c (bigfloat_to_string):
	* number-mp.c (bignum_set_long):
	* number-mp.c (bignum_set_ulong):
	* opaque.c (print_opaque):
	* opaque.c (print_opaque_ptr):
	* opaque.c (equal_opaque_ptr):
	* print.c (printing_major_badness):
	* print.c (print_gensym_or_circle):
	* print.c (debug_p4):
	* process-nt.c (send_signal_the_95_way):
	* process-unix.c (unix_init_process_io_handles):
	* process-unix.c (unix_open_network_stream):
	* rangetab.c (print_range_table):
	* regex.c (print_partial_compiled_pattern):
	* regex.c (print_compiled_pattern):
	* regex.c (PUSH_FAILURE_POINT):
	* regex.c (POP_FAILURE_POINT):
	* regex.c (re_match_2_internal):
	* scrollbar-x.c (x_create_scrollbar_instance):
	* strftime.c:
	* strftime.c (add_num_time_t):
	* sysdll.c (dll_error):
	* tls.c (tls_set_x509_key_file):
	* tooltalk.c (print_tooltalk_message):
	* tooltalk.c (print_tooltalk_pattern):
	* tooltalk.c (tt_opnum_string):
	* tooltalk.c (tt_message_arg_ival_string):
	* unicode.c (print_precedence_array):
	Use %zd instead of %ld for formatting EMACS_INTs in all these files.

2022-07-08  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* filelock.c:
	Cast pid_t to int in printf formats.

	* sysdep.c:
	Change the parameter type of sys_suspend_process() from pid_t to int
	so it matches the prototype in sysdep.h.

	* number-mp.c (bignum_size_hex_raw):
	* number-mp.c (bignum_size_decimal):
	* number-mp.c (bignum_set_long):
	* number-mp.c (bignum_set_llong):
	Add computationally expensive versions of calculations.

	* number-mp.c (bignum_set_long):
	* number-mp.c (bignum_set_ulong):
	* number-mp.c (bignum_set_llong):
	* number-mp.c (bignum_set_ullong):
	Switch calls of fixnum_to_string() and snprintf() to emacs_snprintf().
	This fixes bignum_set_long(b, LONG_MIN), which underflowed the Fixnum
	type in fixnum_to_string, causing the result to be -LONG_MIN.

	* number-openssl.h (bignum_size_*):
	* number-mp.h (bignum_size_*):
	Do the bignum size calculations as 64 bit uints for correctness' sake.
	Who knows if somebody wants to use numbers that are in the gigabyte
	range.

	* doprnt.c (Fnumber_to_string):
	* number.c (bignum_print):
	Remove the dependency on whether the bignum_size_* macros are defined,
	since all bignum types now implement them either as macros or as
	functions. Replace the preprocessor check with a check if calculating
	bignum sizes beforehand is expensive.

	* number.c (bignum_convert):
	Fix uchar <-> char pointer mismatch.

	* config.h.in:
	Add a define for whether libmp is a wrapper for OpenSSL bignums.

	* process-unix.c:
	Remove an unused variable.

2022-06-27  Stephen J. Turnbull  <turnbull@sk.tsukuba.ac.jp>

	* Makefile.in.in (LISP):
	Use build tree, not source tree, to unbreak modules build.
	(clean):
	Clean autoloads in both source tree (left over from before this
	change) and build tree.

2022-06-27  Aidan Kehoe  <kehoea@parhasard.net>

	* Makefile.in.in ($(LISP)/finder-inf.el):
	Don't remove finder-inf.el before regenerating it, Lisp will
	overwrite it.

2022-06-26  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* database.c:
	When compiling in both GDBM and Berkeley DB, the datatypes conflict if
	DB_DBM_HSEARCH is defined to non-zero, since BDB's db.h then defines a
	NDBM compatibility API. Define it to 0 - we don't use the NDBM API for
	BDB anyway.

2022-06-19  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* sysproc.h:
	Add netinet/tcp.h to HAVE_SOCKETS includes to generalize this header
	to be a common BSD socket API include.

	* tls.c:
	Wrap all calls to the OpenSSL SSL/TLS API to macros that reset the
	internal OpenSSL error queue before any calls. See the comments in the
	file for further details.

	Replace #includes of netinet/in.h and netinet/tcp.h with sysproc.h to
	fix build errors for missing setsockopt(2) prototypes, since it
	includes those and sys/socket.h.

	* tls.c (tls_open for NSS):
	Replace xmalloc()ed 256 byte struct sockaddr parameter to getsockname()
	with an union of struct sockaddr, struct sockaddr_in and
	struct sockaddr_in6. The previous code said

	if (getsockname (s, struct sockaddr *, &addrlen) == 0 && addrlen > 256)
	  allocate_more_space_for struct sockaddr()

	That's not how getsockname(2) works portably. Granted, the BSD socket
	API is made out of stupid, but according to my tests, the addrlen
	parameter is only modified to reflect the required size under Linux.
	In (at least) BSD, the structure will simply be untouched if addrlen
	isn't large enough to hold the requested address.

	Moreover, the previous test disregarded actual error codes. That has
	now been fixed, as has been removed allocating heap memory in where it
	was unnecessary.

	Move the setsockopt(2) call to after the check for initialization. Fix
	c++ compiler warnings by casting string constants to char * in
	external NSS API calls.

	* tls.c (nss_pk11_password):
	* tls.c (gnutls_pk11_password):
	* tls.c (openssl_password):
	In openssl_password(), remove a call to strncpy(3) that left the target
	buffer unterminated with a \0 if the prompted password overflows the
	size parameter.

	In nss_pk11_password() and openssl_password(), replace
	LISP_STRING_TO_EXTERNAL() and strlen(3)ing to get the length with calls
	to LISP_STRING_TO_SIZED_EXTERNAL().

	In all functions, wipe out the copied password in the stack (or
	emulated stack alloca) before calling Fclear_string(), since
	Fclear_string() xrealloc()s and thus might trigger error handling,
	longjmp(3)ing over the password in the stack and negating the whole
	point of wiping it from the working set.

	* mule-coding.c (iso2022_encode):
	Fix obviously incorrect if (c2 >= 32 || c2 <= 36) to >= 32 && <= 36.

	* number-openssl.c:
	Remove macro definitions of min() and max(), since they are already
	defined in the headers.

	* lisp.h:
	* data.c:
	* database.c:
	* editfns.c:
	* emacs.c:
	* extents.c:
	* insdel.c:
	* text.c:

	Fix compiler warnings.

2022-06-16  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	* emacs.c:
	* emacs.c (uintptr_t bss_end): Removed.
	* emacs.c (main_1):
	* lisp.h:
	* mem-limits.h:
	* mem-limits.h (get_lim_data):
	* nt.c (open_input_file):
	* nt.c (open_output_file):
	* ntheap.c:
	* ntheap.c (unsigned long  data_region_size): Removed.
	* ntheap.c (unsigned long  reserved_heap_size): Removed.
	* ntheap.c (EMACS_UINT  data_region_size): New.
	* ntheap.c (EMACS_UINT  reserved_heap_size): New.
	* ntheap.c (allocate_heap):
	* number-openssl.c (bignum_binary_bitop):
	* syswindows.h:
	* syswindows.h (file_data):
	* syswindows.h (UNINIT_EMACS_UINT):
	* s/usg5-4.h (LIBS_SYSTEM):
	Correct some further code that inappropriately assumed that long
	is the appropriate type to represent a pointer, use EMACS_UINT
	appropriately. 
	In the mswindows code use SIZE_T
	In passing remove some unexec-related code completely.

2022-06-13  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h:
	Explicitly make Hashcode the size of the underlying machine word.
	* lisp.h (FLOAT_HASHCODE_FROM_DOUBLE):
	Update a cast in the implementation of this; update a comment
	regarding hashing a C double and whether this should be different
	on 64-bit vs. 32 bit machines (it shouldn't).

2022-06-03  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* number-openssl.c (bignum_to_double):
	Remove unnecessary manual string -> integer conversion.

	* number-openssl.c (bignum_binary_bitop):
	* number-openssl.c (bignum_and_process):
	Change integer type from ulong to EMACS_UINT to ensure machine word
	size operations.

2022-05-22  Aidan Kehoe  <kehoea@parhasard.net>

	* number-openssl.c (bignum_bio_write):
	* number-openssl.c (init_number_openssl):
	OpenSSL 1.1.0l does not support BIO_meth_set_write_ex(), use
	BIO_meth_set_write() instead.

2022-05-19  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (fixnum_to_string_base_10):
	* tests.c (Ftest_fixnum_to_string):
	Avoid some confusion where SIZEOF_LONG was used where
	SIZEOF_EMACS_INT was more appropriate in these files.
	
2022-05-18  Jaakko Salomaa  <jaakko.salomaa@iki.fi>

	* number-openssl.c:
	* number-openssl.h:
	New bignum driver using the OpenSSL bignum API.

	* number.c (bignum_convert):
	* number.c (bignum_convfree):
	Modify a hardcoded GMP/MPIR API call to a #ifdef selection between
	GMP/MPIR, OpenSSL and doprnt.c:bignum_to_string().

	* doprnt.c (bignum_to_string):
	Call number.openssl.c:bignum_to_string_openssl() to render a string
	representation of a bignum when the number base is decimal or
	hexadecimal, and thus supported by the OpenSSL API.

	* Makefile.in.in:
	* config.h.in:
	* depend:
	* number.h:
	* number.c (init_number):
	Build and code framework support for the OpenSSL bignum driver.

2022-03-26  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fmake_variable_buffer_local):
	Set bfwd->current_value to VALCONTENTS once more, reverting part
	of my change of b9e401de31a6, and fixing a bug reported by Henry S
	Thompson, thank you Henry.

2022-03-19  Aidan Kehoe  <kehoea@parhasard.net>

	* editfns.c (Ffollowing_char, Fpreceding_char):
	Move these functions to Lisp. They are already marked obsolete in
	obsolete.el

	* editfns.c (syms_of_editfns):
	Remove the DEFSUBR()s for Ffollowing_char(), Fpreceding_char().

	* bytecode-ops.h: 
	* bytecode.c:
	Bracket Bfollowing_char, Bpreceding_char with #ifdef
	NEED_TO_HANDLE_21_4_CODE, they are long obsolete as bytecodes.
	Implement them in terms of Fchar_after() for the moment.

2022-03-21  Aidan Kehoe  <kehoea@parhasard.net>

	* extents.h:
	Remove init_buffer_extents(), which is trivial.
	Ranem uninit_buffer_extents() to uninit_object_extents() since we
	now also use it for strings.
	* buffer.c (finish_init_buffer):
	* buffer.c (Fkill_buffer):
	Use the new names in both these functions.

	* extents.c:
	* extents.c (uninit_object_extents): New. Renamed
	uninit_buffer_extents, now it is also used for strings. When used
	for strings, remove the struct extent_info from the string's plist.

	* search.c:
	* search.c (clear_lisp_search_registers):
	No longer eagerly clear all the extent info for any string
	encountered, delay that to just before the call to #'dump-emacs,
	saving the relevant strings in Vstrings_to_nuke_extents.
	* search.c (Freplace_match):
	Ditto.
	* search.c (Fstore_match_data):
	If purify_flag is non-zero and we are supplied a single-element
	list comprising an extent with its SEARCH property set to DISCARD,
	discard the extent information for those entries on
	Vstrings_to_nuke_extents, and set Vstrings_to_nuke_extents to Qnil.
	* search.c (vars_of_search):
	staticpro() Vstrings_to_nuke_extents for the sake of GC protection
	for temacs.

2022-03-14  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (Fcanonicalize_keysym):
	Only set KEYSYM from ELT if ELT was set to the satisfaction of the
	compiler, eliminate a compiler warning.
	* keymap.c (define_key_parser):
	Only set KEYSYM from the last element of SPEC if that element was
	set to the satisfaction of the compiler.
	* redisplay-tty.c:
	Correct a declaration for tputs(), fix the build under g++-11.

	* tls.c (openssl_error_string):
	* tls.c (openssl_report_error_stack):
	Remove calls to the deprecated ERR_func_error_string() from both
	these functions.

2022-02-17  Aidan Kehoe  <kehoea@parhasard.net>

	* extents.c:
	Update some documentation on extent_extent_list().
	* extents.c (extent_detach):
	Check that the extent's extent list is non-NULL before calling
	extent_list_delete() on it, thank you Henry S. Thompson.

2022-02-19  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h:
	Use more modern types types in the declaration of
	fast_string_match().
	* search.c:
	* search.c (looking_at_1):
	Use more modern types in the definition of this function.
	* search.c (string_match_1):
	Use more modern types in the definition of this function.
	Use get_string_pos_byte() rather than re-implementing it.
	* search.c (fast_string_match):
	Use more modern types in the definition of this function.
	Add to the comments in Fposix_string_match(), Fposix_looking_at(),
	clarifying that #'string-match-p, #'looking-at-p are reasonable
	alternatives if there is no need for the match data.

2022-01-25  Aidan Kehoe  <kehoea@parhasard.net>

	Represent internal register numbers with two bytes rather than one
	in compiled regular expressions.

	* regex.c:
	* regex.c (enum):
	Update comments in this to reflect this.

	* regex.c (print_partial_compiled_pattern):
	Update implementation to reflect this.

	* regex.c:
	Rename MAX_BUF_SIZE to RE_MAX_BUF_SIZE, move it to regex.h.
	Move MAX_REGNUM to regex.h.

	* regex.c (regex_compile):
	Remove code (never executed) that attempted to do nothing if
	bufp->re_ngroups was greater than or equal to MAX_REGNUM.
	Store the start_memory instruction as five bytes (four of which
	are two sixteen-bit register numbers) rather than three.
	Ditto with the stop_memory instruction.
	Store the duplicate instruction as three bytes rather than two.
	Use new values for NO_HIGHEST_ACTIVE_REG, NO_LOWEST_ACTIVE_REG.

	* regex.c (re_compile_fastmap):
	Use better types in this (regnum_t, not int)
	* regex.c (re_search_2):
	Ditto.
	* regex.c (re_match_2_internal):
	Implement the match part of start_memory, stop_memory, duplicate
	with two-byte register numbers.
	* regex.c (group_match_null_string_p):
	Update this to reflect the new arguments to start_memory.

	* regex.h:
	Move RE_MAX_BUF_SIZE, MAX_REGNUM to this file, document them.

	* regex.h (struct re_pattern_buffer):
	* regex.h (struct re_registers):
	Improve some types in these structures.

2022-01-20  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (common_init_alloc_early):
	Don't call init_string_chars_alloc twice; the only effect of this
	is that the first first_string_chars_block struct allocated is
	leaked, confirmed uambiguously by valgrind for me today, thank you
	valgrind.
	Thank you also Ben for raising the issue in a comment.

2021-12-23  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c (re_match_2_internal): Make an ALLOCA() copy of
	BUFP->BUFFER, and work on that, so we're never modifying the
	cached compiled regexp, and we're not in danger of bugs with
	re-entrancy.

	* search.c (looking_at_1):
	* search.c (string_match_1):
	* search.c (fast_string_match):
	* search.c (search_buffer):
	Update comments regarding re-entrancy and the compiled regexps in
	these functions.

2021-12-23  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c:
	* regex.c (STORE_MATCH_NUMBER): New #define.
	* regex.c (STORE_MATCH_NUMBER_AND_INCR): New #define.
	* regex.c (re_match_2_internal):
	Within this function, when writing to the compiled regexp, check
	the destination address for validity and give up, returning -2, if
	it is invalid. A good idea generally, and done today in
	preparation for moving the pattern buffer to the stack in
	re_match_2_internal(), making it truly re-entrant.

2021-12-23  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c:
	* regex.c (re_search_2):
	* regex.c (re_match_2_internal):
	In offset_post_relocation(), check LISPOBJ's BYTE_BUF_BEG rather
	that BYTE_BUF_BEGV(), given that it is possible that Lisp has
	changed the buffer's narrowing with re-entrant calls to these
	functions.
	Declare orig_buftext as const.

2021-12-19  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (bytecode_nconc2):
	Add a RETURN_NOT_REACHED(Qnil) to this function, quieting g++-6.0
	regarding a non-void function not returning.

2021-12-16  Aidan Kehoe  <kehoea@parhasard.net>

	Remove the NEED_SYNC_PROCESS_CODE, which only applied to
	Unix-oriented systems that either lack job control, mkdir, or
	rmdir. This are very very thin on the ground today, and anyone
	with one of those systems is welcome to use 21.4 or an earlier
	beta of 21.5.
	Change generated with unifdef -UNEED_SYNC_PROCESS_CODE and some
	manual editing.

	* process-unix.c (unix_reap_exited_processes): As above.
	* sysdep.c: Ditto.
	* sysproc.h (qxe_getpid): Ditto.

2021-12-16  Aidan Kehoe  <kehoea@parhasard.net>

	* sysdep.c:
	* systty.h:
	* unexec.c (adjust_lnnoptrs):
	Remove checks for obsolete system-specific pfa #define.
	* unexec.c: Remove this file completely, missed in the definitive
	move to PDUMP.

2021-12-13  Aidan Kehoe  <kehoea@parhasard.net>

	* ecrt0.c:
	* sysdep.c:
	Remove checks for the STRIDE #define from these files, specific to
	a machine no longer in wide use.
	
2021-12-10  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (check_coerce_octet):
	* text.c (get_external_charset_codepoint):
	* unicode.c (verify_load_unicode_args):
	Avoid problems in these functions when the result of XFIXNUM() is
	cast to int, check the range appropriately first. Thank you for
	the bug report, Mats Lidell!

2021-12-09  Aidan Kehoe  <kehoea@parhasard.net>

	* text.h:
	Remove the STRIDE typedef, which is just sizeof (STRIDE_TYPE) and
	adds no generality, and conflicts with system-specific code
	looking for features specific to a m68k machine of the
	1980s. This may well fix a subprocess problem on recent
	Cygwin. Thank you for the report, Henry Thompson!

2021-11-29  Aidan Kehoe  <kehoea@parhasard.net>

	Some minor updates to get things building with clang++-8.0 on
	Cygwin.

	* emacs.c (assert_failed):
	Make ((int *) 0) volatile, so dereferencing it is more likely to
	crash with C++. Thank you clang++.

	* events.h (fd_to_lisp_usid):
	Avoid a tautological-comparison warning when comparing FD to
	MOST_POSITIVE_FIXNUM by casting FD to (EMACS_INT).

	* alloca.c (xemacs_c_alloca):
	* chartab.h:
	* compiler.h:
	* filelock.c (lock_file):
	* filelock.c (unlock_file):
	* filelock.c (unlock_all_files):
	* filelock.c (Ffile_locked_p):
	* imgproc.c (get_histogram):
	* imgproc.c (largest_box):
	* imgproc.c (shrinkbox):
	* imgproc.c (splitbox):
	* imgproc.c (create_colorcell):
	* imgproc.c (map_colortable):
	* mule-ccl.c (ccl_driver):
	* text.c (non_ascii_set_itext_ichar):
	* unicode.c (encode_unicode_to_dynarr):
	Never use "register" in these files, always use REGISTER, which is
	#defined to the empty string with C++ builds.

	* config.h.in:
	New #define, DECLARE_INLINE_MODULE_API(), like
	DECLARE_INLINE_HEADER() but for functions that should also be
	available to modules.
	* lisp.h:
	Use the new #define for write_istring(), write_cistring(),
	write_ascstring().
	Declare write_string_1() using MODULE_API for symmetry.

	* toolbar-msw.c (mswindows_output_toolbar):
	Cast TOOLBAR_ID_BIAS to an EMACS_UINT to silence a warning
	regarding type width with its integer cast.

2021-11-16  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read1):
	Just use read_rational() and check_integer_range() for the NUMBER
	part of the #@NUMBER syntax, don't reimplement this, avoid
	overflow issues. Thank you for the comment, Stephen Turnbull.

2021-11-03  Aidan Kehoe  <kehoea@parhasard.net>

	Remove the object mark methods now KKCC is the only mark algorithm
	supported.

	* alloc.c:
	* alloc.c (cons_equal):
	* alloc.c (size_vector):
	* alloc.c (print_bit_vector):
	* alloc.c (string_equal):
	* alloc.c (make_lcrecord_list):
	* buffer.c:
	* buffer.c (print_buffer):
	* bytecode.c:
	* bytecode.c (compiled_function_equal):
	* casetab.c:
	* casetab.c (print_case_table):
	* casetab.c (allocate_case_table):
	* chartab.c:
	* chartab.c (init_chartab_tables):
	* chartab.c (print_category_table):
	* console.c:
	* console.c (print_console):
	* data.c:
	* data.c (print_weak_list):
	* data.c (print_ephemeron):
	* database.c:
	* database.c (print_database):
	* device-msw.c:
	* device-msw.c (print_devmode):
	* device.c:
	* device.c (print_device):
	* dialog-msw.c:
	* dialog-msw.c (dialog_proc):
	* elhash.c:
	* eval.c:
	* eval.c (size_multiple_value):
	* event-stream.c:
	* events.c:
	* events.c (print_event):
	* extents.c:
	* extents.c (finalize_extent_info):
	* extents.c (flush_cached_extent_info):
	* extents.c (object_stack_of_extents_force):
	* extents.c (print_extent_1):
	* extents.c (vars_of_extents):
	* extents.h:
	* faces.c:
	* faces.c (print_face):
	* faces.h:
	* file-coding.c:
	* file-coding.c (print_coding_system_properties):
	* file-coding.c (coding_rewinder):
	* file-coding.c (free_detection_state):
	* file-coding.c (lstream_type_create_file_coding):
	* floatfns.c:
	* floatfns.c (float_equal):
	* font-mgr.c:
	* font-mgr.c (Ffc_init):
	* fontcolor.c:
	* fontcolor.c (print_color_instance):
	* fontcolor.c (print_font_instance):
	* frame.c:
	* frame.c (print_frame):
	* gc.c (gc_prepare):
	* glyphs.c:
	* glyphs.c (print_image_instance):
	* glyphs.c (print_glyph):
	* glyphs.c (update_glyph_cachel_data):
	* glyphs.h:
	* gui.c:
	* gui.c (gui_item_hash):
	* gui.c (gui_error):
	* keymap.c:
	* keymap.c (print_keymap):
	* lisp.h:
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT):
	* lrecord.h (MAKE_LISP_OBJECT):
	* lrecord.h (MAKE_RECURSIVE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT):
	* lrecord.h (MAKE_MODULE_LISP_OBJECT):
	* lrecord.h (INIT_MEMORY_USAGE_STATS):
	* lstream.c:
	* lstream.c (print_lstream):
	* lstream.c (resizing_buffer_extent_info):
	* lstream.c (lisp_buffer_stream_startpos):
	* lstream.c (lstream_type_create):
	* lstream.c (vars_of_lstream):
	* lstream.h (lstream_implementation):
	* marker.c:
	* marker.c (print_marker):
	* mule-charset.c:
	* mule-charset.c (print_charset):
	* number.c:
	* opaque.c:
	* opaque.c (make_opaque_ptr):
	* process.c:
	* process.c (tls_connection_p):
	* rangetab.c:
	* rangetab.c (print_range_table):
	* scrollbar.c:
	* scrollbar.c (free_scrollbar_instance):
	* specifier.c:
	* symbols.c:
	* symbols.c (print_symbol_value_magic):
	* toolbar.c:
	* toolbar.c (Ftoolbar_button_p):
	* tooltalk.c:
	* tooltalk.c (print_tooltalk_message):
	* tooltalk.c (print_tooltalk_pattern):
	* ui-gtk.c:
	* ui-gtk.c (ffi_object_printer):
	* ui-gtk.c (emacs_gtk_object_finalizer):
	* unicode.c:
	* unicode.c (finalize_precedence_array):
	* window.c:
	* window.c (print_window):

2021-11-03  Aidan Kehoe  <kehoea@parhasard.net>

	Make our code play nicely with clang++-9.

	* compiler.h:
	Use builtin_unreachable() for RETURN_NOT_REACHED.
	Checked with clang-mp-3.4 and clang++-mp-9.0.
	* eval.c (unwind_to_catch):
	Use RETURN_NOT_REACHED() in this function.
	* fns.c:
	Move the code to check that we don't use the (C) symbol vector
	after all the header files, fixing the build.
	* profile.c (Fget_profiling_info):
	Correct some code initially written for the old non-Lisp hash
	table code, thank you clang++.

2021-11-02  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (update_mirror_internal):
	* window.c (find_window_mirror):
	* window.c (find_window_mirror_maybe):
	* window.c (window_needs_vertical_divider):
	* window.c (window_divider_width):
	* window.c (window_modeline_height):
	* window.c (WINDOW_INTEGER_SLOT):
	* window.c (Fdelete_window):
	* window.c (Fnext_window):
	* window.c (Fprevious_window):
	* window.c (Fsplit_window):
	* window.c (Fmove_to_window_line):
	Some code in this file assumed a window's frame was always
	non-nil, something now (correctly) only true for live windows,
	following my change of 7ee8e7200a8a . Thank you for the bug
	report, Henry Thompson!

2021-10-29  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-wnnfns.c:
	Some fixes for this file when building as C++, thank you Mats
	Lidell and the buildbot.
	Wrap the wnn header include files with
	BEGIN_C_DECLS/END_C_DECLS.
	Wrap a couple of declarations that the headers should provide but
	don't in BEGIN_C_DECLS/END_C_DECLS too.	

	* mule-wnnfns.c (Fwnn_open):
	* mule-wnnfns.c (Fwnn_dict_add):
	* mule-wnnfns.c (Fwnn_notrans_dict_add):
	* mule-wnnfns.c (Fwnn_bmodify_dict_add):
	Add casts to placate the C++ compiler in these functions
	(underlying problem is that the headers aren't very C++-compatible).
	* mule-wnnfns.c (vars_of_mule_wnn):
	Remove Qchinese_sisheng, defined in mule-charset.c
	* mule-wnnfns.c (yes_or_no):
	Adjust some indentation to be less misleading.

2021-10-28  Aidan Kehoe  <kehoea@parhasard.net>

	* mem-limits.h:
	* mem-limits.h (EXCEEDS_LISP_PTR):
	* vm-limit.c:
	And some more tweaks for Linux, thank you Mats and the buildbot
	for making me aware this is needed.

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

	* sysdep.h:
	* vm-limit.c:
	* vm-limit.c (start_of_data):
	* vm-limit.c (memory_warnings):
	And get the remove-unexec code building on Linux, which uses some
	features originally implemented for unexec for memory warnings.

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	* config.h.in:
	* data.c (finish_marking_weak_lists):
	* data.c (continue_marking_ephemerons):
	* data.c (finish_marking_ephemerons):
	* dumper.c (pdump):
	* elhash.c:
	* elhash.c (MARK_OBJ):
	* elhash.c (finish_marking_weak_hash_tables):
	* gc.c:
	* gc.c (mark_object):
	* gc.c (gc_mark_root_set):
	* gc.c (gc_finish_mark):
	* gc.c (garbage_collect_1):
	* lrecord.h:
	* lrecord.h (RECORD_DESCRIPTION):
	* lrecord.h (UNDEF_LISP_OBJECT):
	* lrecord.h (UNDEF_MODULE_LISP_OBJECT):
	* xemacs.def.in.in:
	Remove support for non-KKCC builds, KKCC is stable, performant
	code. Changes generated with unifdef -DUSE_KKCC=1.

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

	* emodules.h:
	* lrecord.h:
	* mem-limits.h:
	* mem-limits.h (get_lim_data):
	* ntheap.c (round_heap):
	A couple more changes to support removing unexec (these should
	have been part of the last commit; am unsure why I didn't pick
	them up in my testing).

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

	Remove support for unexec, only support PDUMP, which is stable and
	performant.
	Much of the changes generated with unifdef -DPDUMP=1.

	* Makefile.in.in:
	* Makefile.in.in (sheap_objs): Removed.
	* Makefile.in.in (objs):
	* Makefile.in.in (DUMP_TARGET):
	* Makefile.in.in (RAW_EXE): Removed.
	* Makefile.in.in (config.h paths.h Emacs.ad.h):
	* Makefile.in.in (-search-mmaps):
	* Makefile.in.in (mostlyclean):
	* alloc.c:
	* alloc.c (gc_sweep_1):
	* config.h.in:
	* console-stream.c:
	* depend: Regenerate using make-src-depend.
	* emacs.c:
	* emacs.c (main_1):
	* emacs.c (Femacs_run_status):
	* emacs.c (main):
	* emacs.c (Fdump_emacs):
	* emacs.c (really_abort):
	* frame.c (init_frame):
	* gc.c:
	* gc.c (lispdesc_indirect_count_1):
	* gc.c (GC_CHECK_NOT_FREE):
	* lrecord.h:
	* lrecord.h (dump_add_opaque):
	* lrecord.h (dump_add_opaque_int):
	* lrecord.h (dump_add_opaque_fixnum):
	* number.c (init_number):
	* ralloc.c (init_ralloc):
	* redisplay.c (init_redisplay):
	* sheap.c: File removed.
	* symbols.c (find_symbol_value):
	* symbols.c (find_symbol_value_quickly):
	* sysdep.c:
	* sysdep.c (total_data_usage):
	* sysdep.h:
	* unexaix.c: File removed.
	* unexalpha.c: File removed.
	* unexcw.c: File removed.
	* unexelf.c: File removed.
	* unexhp9k800.c: File removed.
	* unexnt.c: File removed.
	* unexsol2-6.c: File removed.

2021-10-27  Aidan Kehoe  <kehoea@parhasard.net>

	Update the source as suggested by autoupdate analysis of
	configure.ac.

	* config.h.in:
	* config.h.in (STDC_HEADERS): Remove.
	* config.h.in (TIME_WITH_SYS_TIME): Remove.
	* config.h.in (RETSIGTYPE): Remove.
	Follow autoupdate's advice that these are no longer necessary.
	* strftime.c:
	No need to support pre-C89 compilers.
	* sysdep.c (struct save_signal):
	* sysdep.c (save_signal_handlers):
	Signal return type is always void.
	* syssignal.h:
	Signal return type is always void.
	* systime.h:
	No need to distinguish TIME_WITH_SYS_TIME from HAVE_SYS_TIME_H.
	* unexec.c:
	No need to support pre-C89 compilers.

2021-10-23  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c:
	* lread.c (read1):
	* lread.c (syms_of_lread):
	* lread.c (vars_of_lread):
	Don't dither about supporting the Lisp backquote syntax, this has
	been standard XEmacs practice since before I needed to shave
	(which is to say, comfortably before the turn of the
	millennium). It is good code that works well, no need to support
	an alternative.
	Bracket the old Lisp backquote support with the
	NEED_TO_HANDLE_21_4_CODE #ifdef, given the removal of the old
	backquotes from packages we should be in a position to remove this
	completely soon.

2021-10-22  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	* alloc.c (FREE_OR_REALLOC_BEGIN):
	* alloc.c (memory_full):
	* alloc.c (DECREMENT_CONS_COUNTER):
	* alloc.c (copy_lisp_object):
	* alloc.c (zero_sized_lisp_object):
	* alloc.c (free_normal_lisp_object):
	* alloc.c (make_compiled_function):
	* alloc.c (make_uninit_string):
	* alloc.c (resize_string):
	* alloc.c (make_string_nocopy):
	* alloc.c (static const struct sized_memory_description mcpro_description): Removed.
	* alloc.c (static const struct sized_memory_description mcpros_description): Removed.
	* alloc.c (fixed_type_block_overhead):
	* alloc.c (lisp_object_storage_size):
	* alloc.c (object_memory_usage_stats):
	* alloc.c (garbage_collection_statistics):
	* alloc.c (sweep_lcrecords_1):
	* alloc.c (sweep_conses):
	* alloc.c (free_cons):
	* alloc.c (sweep_compiled_functions):
	* alloc.c (sweep_key_data):
	* alloc.c (sweep_button_data):
	* alloc.c (sweep_motion_data):
	* alloc.c (sweep_process_data):
	* alloc.c (sweep_timeout_data):
	* alloc.c (sweep_magic_data):
	* alloc.c (sweep_magic_eval_data):
	* alloc.c (sweep_eval_data):
	* alloc.c (sweep_misc_user_data):
	* alloc.c (sweep_markers):
	* alloc.c (compact_string_chars):
	* alloc.c (disksave_object_finalization_1):
	* alloc.c (disksave_object_finalization):
	* alloc.c (Fgarbage_collect):
	* alloc.c (common_init_alloc_early):
	* alloc.c (init_lcrecord_lists):
	* alloc.c (reinit_alloc_early):
	* alloc.c (init_alloc_once_early):
	* array.c:
	* array.c (Dynarr_resize):
	* array.c (Dynarr_free):
	* array.c (gap_array_make_gap):
	* array.c (gap_array_make_marker):
	* array.c (gap_array_delete_marker):
	* array.c (gap_array_delete_all_markers):
	* array.c (make_gap_array):
	* array.c (gap_array_clone):
	* array.c (free_gap_array):
	* array.c (gap_array_memory_usage):
	* array.c (syms_of_array):
	* array.h:
	* array.h (DECLARE_DYNARR_LISP_IMP):
	* array.h (Dynarr_new):
	* array.h (DYNARR_SET_LISP_IMP):
	* array.h (gap_array_marker):
	* array.h (gap_array):
	* array.h (XD_GAP_ARRAY_MARKER_DESC):
	* buffer.c:
	* buffer.c (syms_of_buffer):
	* buffer.c (DEFVAR_BUFFER_LOCAL_MAGIC):
	* buffer.h:
	* buffer.h (struct buffer_text):
	* buffer.h (struct buffer):
	* bytecode.c:
	* bytecode.c (optimize_compiled_function):
	* bytecode.c (mark_compiled_function):
	* bytecode.c (syms_of_bytecode):
	* bytecode.h:
	* bytecode.h (struct Lisp_Compiled_Function):
	* compiler.h (USED_IF_NEW_GC):
	* console-gtk-impl.h:
	* console-gtk-impl.h (struct gtk_device):
	* console-gtk-impl.h (struct gtk_frame):
	* console-msw-impl.h:
	* console-msw-impl.h (struct mswindows_device):
	* console-msw-impl.h (struct msprinter_device):
	* console-msw-impl.h (struct mswindows_frame):
	* console-msw-impl.h (FRAME_MSWINDOWS_HANDLE):
	* console-stream-impl.h:
	* console-stream-impl.h (struct stream_console):
	* console-stream.c:
	* console-stream.c (stream_init_console):
	* console-stream.c (stream_delete_console):
	* console-stream.h:
	* console-stream.h (stream_canonicalize_device_connection):
	* console-tty-impl.h:
	* console-tty-impl.h (struct tty_console):
	* console-tty-impl.h (struct tty_device):
	* console-tty.c:
	* console-tty.c (allocate_tty_console_struct):
	* console-tty.c (free_tty_console_struct):
	* console-x-impl.h:
	* console-x-impl.h (struct x_device):
	* console-x-impl.h (struct x_frame):
	* console-x-impl.h (FRAME_X_DATA):
	* console-x-impl.h (FRAME_X_Y):
	* console.c:
	* console.c (syms_of_console):
	* console.c (DEFVAR_CONSOLE_LOCAL_1):
	* console.c (DEFVAR_CONSOLE_LOCAL_MAGIC):
	* device-gtk.c:
	* device-gtk.c (allocate_gtk_device_struct):
	* device-gtk.c (free_gtk_device_struct):
	* device-gtk.c (gtk_delete_device):
	* device-gtk.c (syms_of_device_gtk):
	* device-msw.c:
	* device-msw.c (mswindows_init_device):
	* device-msw.c (mswindows_delete_device):
	* device-msw.c (msprinter_init_device):
	* device-msw.c (msprinter_delete_device):
	* device-msw.c (syms_of_device_mswindows):
	* device-tty.c:
	* device-tty.c (allocate_tty_device_struct):
	* device-tty.c (free_tty_device_struct):
	* device-tty.c (syms_of_device_tty):
	* device-tty.c (console_type_create_device_tty):
	* device-x.c:
	* device-x.c (allocate_x_device_struct):
	* device-x.c (free_x_device_struct):
	* device-x.c (x_delete_device):
	* device-x.c (syms_of_device_x):
	* device.c:
	* dumper.c:
	* dumper.c (pdump_objects_unmark):
	* dumper.c (PDUMP_HASHSIZE):
	* dumper.c (pdump_make_hash):
	* dumper.c (pdump_register_sub):
	* dumper.c (pdump_register_object):
	* dumper.c (pdump_store_new_pointer_offsets):
	* dumper.c (pdump_dump_rtables):
	* dumper.c (pdump):
	* dumper.c (pdump_load_finish):
	* dumper.c (pdump_load):
	* dumper.h:
	* elhash.c:
	* elhash.c (free_hentries):
	* elhash.c (static const struct sized_memory_description htentry_weak_description): Removed.
	* elhash.c (allocate_hash_table_entries):
	* elhash.c (resize_hash_table):
	* elhash.c (pdump_reorganize_hash_table):
	* elhash.c (init_elhash_once_early):
	* elhash.h:
	* elhash.h (htentry):
	* elhash.h (enum hash_table_weakness):
	* emacs.c:
	* emacs.c (main_1):
	* emacs.c (Fdump_emacs):
	* emacs.c (fatal_error_signal):
	* eval.c (Fsignal):
	* eval.c (handle_compiled_function_with_and_rest):
	* eval.c (funcall_compiled_function):
	* eval.c (Feval):
	* eval.c (Ffuncall):
	* eval.c (run_hook_with_args_in_buffer_1):
	* event-msw.c (mswindows_wnd_proc):
	* events.c (reinit_vars_of_events):
	* events.c (vars_of_events):
	* extents.c:
	* extents.c (extent_list_marker):
	* extents.c (extent_list):
	* extents.c (stack_of_extents):
	* extents.c (extent_list_make_marker):
	* extents.c (extent_list_delete_marker):
	* extents.c (allocate_extent_list):
	* extents.c (free_extent_list):
	* extents.c (flush_cached_extent_info):
	* extents.c (uninit_buffer_extents):
	* extents.c (allocate_soe):
	* extents.c (free_soe):
	* extents.c (syms_of_extents):
	* extents.h:
	* extents.h (glyph_layout):
	* faces.h:
	* faces.h (struct face_cachel):
	* faces.h (wrap_face):
	* file-coding.c:
	* file-coding.c (finalize_coding_system):
	* file-coding.c (sizeof_coding_system):
	* fontcolor-tty-impl.h:
	* fontcolor-tty-impl.h (struct tty_color_instance_data):
	* fontcolor-tty-impl.h (struct tty_font_instance_data):
	* fontcolor-tty.c:
	* fontcolor-tty.c (tty_initialize_color_instance):
	* fontcolor-tty.c (tty_finalize_color_instance):
	* fontcolor-tty.c (tty_initialize_font_instance):
	* fontcolor-tty.c (tty_finalize_font_instance):
	* fontcolor-tty.c (syms_of_fontcolor_tty):
	* fontcolor.c:
	* frame-gtk.c:
	* frame-gtk.c (allocate_gtk_frame_struct):
	* frame-gtk.c (gtk_delete_frame):
	* frame-gtk.c (syms_of_frame_gtk):
	* frame-msw.c:
	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_delete_frame):
	* frame-msw.c (syms_of_frame_mswindows):
	* frame-msw.c (reinit_vars_of_frame_mswindows):
	* frame-x.c:
	* frame-x.c (allocate_x_frame_struct):
	* frame-x.c (x_delete_frame):
	* frame-x.c (syms_of_frame_x):
	* frame.c:
	* frame.c (change_frame_size):
	* gc.c:
	* gc.c (recompute_need_to_garbage_collect):
	* gc.c (lispdesc_one_description_line_size):
	* gc.c (GC_CHECK_NOT_FREE):
	* gc.c (kkcc_gc_stack_push):
	* gc.c (kkcc_gc_stack_pop):
	* gc.c (kkcc_gc_stack_push_lisp_object):
	* gc.c (kkcc_marking):
	* gc.c (gc_prepare):
	* gc.c (gc_mark_root_set):
	* gc.c (gc_finish_mark):
	* gc.c (gc_finish):
	* gc.c (garbage_collect_1):
	* gc.c (common_init_gc_early):
	* gc.c (init_gc_early):
	* gc.c (syms_of_gc):
	* gc.c (vars_of_gc):
	* gc.c (complex_vars_of_gc):
	* gc.h:
	* glyphs.h:
	* glyphs.h (struct glyph_cachel):
	* glyphs.h (HSCROLL_GLYPH_INDEX):
	* lisp.h:
	* lisp.h (CONS_MARKED_P):
	* lisp.h (struct Lisp_String):
	* lisp.h (set_lispstringp_length):
	* lisp.h (XSTRING_LENGTH):
	* lisp.h (struct Lisp_Symbol):
	* lisp.h (CHECK_C_WRITEABLE):
	* lisp.h (DEFUN):
	* lrecord.h:
	* lrecord.h (ALLOC_NORMAL_LISP_OBJECT):
	* lrecord.h (struct lrecord_header):
	* lrecord.h (set_lheader_implementation):
	* lrecord.h (struct old_lcrecord_header):
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (enum memory_description_type):
	* lrecord.h (enum data_description_entry_flags):
	* lrecord.h (MAKE_LISP_OBJECT):
	* lrecord.h (MAKE_RECURSIVE_LISP_OBJECT):
	* lrecord.h (MAKE_MODULE_LISP_OBJECT):
	* lrecord.h (DUMPEDP):
	* lstream.c:
	* lstream.c (Lstream_new):
	* lstream.c (Lstream_delete):
	* lstream.c (Lstream_internal_error):
	* marker.c:
	* number.c:
	* opaque.c:
	* opaque.c (make_opaque_ptr):
	* opaque.c (free_opaque_ptr):
	* opaque.c (reinit_opaque_early):
	* opaque.c (init_opaque_once_early):
	* print.c (print_internal):
	* ralloc.c:
	* ralloc.c (r_alloc_free):
	* rangetab.c:
	* rangetab.h (struct range_table_entry):
	* specifier.c:
	* specifier.c (finalize_specifier):
	* specifier.c (set_specifier_caching):
	* specifier.c (syms_of_specifier):
	* specifier.h:
	* specifier.h (struct specifier_caching):
	* symbols.c:
	* symbols.c (guts_of_unbound_marker):
	* symbols.c (init_symbols_once_early):
	* symeval.h:
	* symeval.h (DEFVAR_SYMVAL_FWD):
	* symeval.h (DEFVAR_SYMVAL_FWD_INT):
	* syntax.c:
	* syntax.c (init_buffer_syntax_cache):
	* syntax.c (uninit_buffer_syntax_cache):
	* syntax.c (syms_of_syntax):
	* syntax.h:
	* syntax.h (struct syntax_cache):
	* tests.c (TESTS_DEFSUBR):
	* tests.c (syms_of_tests):
	* window.c:
	* window.c (allocate_window):
	* window.c (make_dummy_parent):
	* window.c (struct window_stats):
	* window.c (syms_of_window):
	* window.c (vars_of_window):
	* xemacs.def.in.in:
	Remove the incremental garbage collector, it is more unstable,
	slower and more memory-intensive than the old collection code.
	See documentation of this experience and the decision in
	internals.texi.
	Changes generated with unifdef -UNEW_GC.

2021-10-20  Aidan Kehoe  <kehoea@parhasard.net>

	* Makefile.in.in (win32_objs):
	* Makefile.in.in (unicode-encapsulate):
	Remove references to intl-auto-encap-win32.{c,obj} from this
	file, no longer used.
	
	* depend (gccache-xlike-inc.o): Removed.
	* depend (gccache-xlike.o): Removed.
	* depend (intl-auto-encap-win32.o): Removed.
	Regenerate this file, remove references to
	intl-auto-encap-win32.o; remove reerences to gccache-xlike* in
	passing.

	* intl-auto-encap-win32.c: Remove, all its functionality is now in
	the header file (see revision of
	../lib-src/make-mswin-unicode.pl).

	* intl-auto-encap-win32.h: Regenerate using the Cygwin w32api
	headers, removing runtime support for Win95/98/Me, with revision
	of the Cygwin types to be compatible with Visual Studio 8.

	* intl-encap-win32.c:
	Revise this file to work with the Cygwin w32api headers.

	* syswindows.h:
	Ditto.

2021-10-19  Aidan Kehoe  <kehoea@parhasard.net>

	* dialog-msw.c (handle_directory_proc):
	* event-msw.c (mswindows_wnd_proc):
	* glyphs-msw.c (add_tree_item):
	* glyphs-msw.c (add_tab_item):
	* toolbar-msw.c (mswindows_output_toolbar):
	Send wide messages explicitly when they are split, restoring
	functionality for the toolbar labels.

2021-10-19  Aidan Kehoe  <kehoea@parhasard.net>

	* syswindows.h:
	Remove some casts from qxeSetWindowLongPtr, qxeGetWindowLongPtr, 
	qxeSetClassPtr, qxeGetClassPtr, fixing the 64-bit Cygwin build for
	me.

2021-10-19  Aidan Kehoe  <kehoea@parhasard.net>

	* device-msw.c (mswindows_init_dde):
	Remove references to XEUNICODE_P, we always run as a Unicode
	program under Win32.
	* device-msw.c (Fmswindows_printer_list):
	Ditto, remove Windows 95/98/Me-specific code.
	* dumper.c (pdump_file_get):
	* dumper.c (pdump_load):
	Remove references to XEUNICODE_P, we always run as a Unicode
	program under Win32.

	* emacs.c (main_1):
	* emacs.c (main):
	Error early if we are started on a Win32 system without native support
	for Unicode.
	No longer do other work to attempt to support Windows 95/98/Me.

	* event-msw.c (Fdde_alloc_advise_item):
	* event-msw.c (mswindows_wnd_proc):
	Remove support for running as a non-Unicode program under Win32.

	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.c (XEUNICODE_P):
	#define this to 1 for the moment, until we revise this file to
	just declare inline headers for the sake of type compatibility. 

	* intl-auto-encap-win32.c (qxeGetClassLongPtr): Removed.
	* intl-auto-encap-win32.c (qxeGetWindowLongPtr): Removed.
	* intl-auto-encap-win32.c (qxeSetClassLongPtr): Removed.
	* intl-auto-encap-win32.c (qxeSetWindowLongPtr): Removed.
	Move all of these to syswindows.h.

	* intl-auto-encap-win32.h:
	Remove the declarations of the above functions from this file.

	* intl-encap-win32.c:
	* intl-encap-win32.c (qxeDefWindowProc):
	* intl-encap-win32.c (qxeCallWindowProc):
	* intl-encap-win32.c (qxeDefDlgProc):
	* intl-encap-win32.c (qxeDefMDIChildProc):
	* intl-encap-win32.c (qxeGetEnvironmentStrings):
	* intl-encap-win32.c (qxeUpdateICMRegKey):
	* intl-encap-win32.c (qxeSHGetSpecialFolderPath):
	* intl-encap-win32.c (qxeEnumResourceTypes):
	* intl-encap-win32.c (qxeEnumResourceNames):
	* intl-encap-win32.c (qxeEnumResourceLanguages):
	* intl-encap-win32.c (qxeFindFirstFile):
	* intl-encap-win32.c (qxeFindNextFile):
	* intl-encap-win32.c (qxeSHGetFileInfo):
	* intl-encap-win32.c (qxeSHBrowseForFolder):
	* intl-encap-win32.c (qxeSHAddToRecentDocs):
	* intl-encap-win32.c (qxeSHChangeNotify):
	* intl-encap-win32.c (qxeSHGetDataFromIDList):
	* intl-encap-win32.c (qxeCreateDC):
	* intl-encap-win32.c (qxeResetDC):
	* intl-encap-win32.c (qxeOpenPrinter):
	* intl-encap-win32.c (qxeDocumentProperties):
	* intl-encap-win32.c (qxePrintDlg):
	* intl-encap-win32.c (qxePageSetupDlg):
	* intl-encap-win32.c (qxeEnumFontFamiliesEx):
	* intl-encap-win32.c (qxeCreateFontIndirect):
	* intl-encap-win32.c (qxeImmSetCompositionFont):
	* intl-encap-win32.c (qxeImmGetCompositionFont):
	* intl-encap-win32.c (qxeImmSetCompositionString):
	* intl-encap-win32.c (qxeGetObject):
	* intl-encap-win32.c (qxeGetTextMetrics):
	* intl-encap-win32.c (qxeRegisterClass):
	* intl-encap-win32.c (qxeUnregisterClass):
	* intl-encap-win32.c (qxeRegisterClassEx):
	* intl-encap-win32.c (qxeSendMessage):
	Remove support for running as a non-Unicode program under Win32
	from this file.

	* intl-win32.c (determine_if_using_unicode): Removed.
	* intl-win32.c (complex_vars_of_intl_win32): Define
	Qmswindows_tstr as an alias for Qmswindows_unicode
	unconditionally. 
	* intl-win32.c (init_intl_win32):
	No need to dither about doing this again.

	* nt.c (mswindows_rename):
	* nt.c (mswindows_unlink):
	* nt.c (mswindows_utime):
	* nt.c (mswindows_getdcwd):
	Remove support for running as a non-Unicode program under Win32
	from this file.

	* process-nt.c (find_child_console):
	* process-nt.c (send_signal_the_95_way):
	* process-nt.c (send_signal):
	* process-nt.c (mswindows_compare_env):
	* process-nt.c (nt_create_process):
	Remove support for running as a non-Unicode program under Win32
	from this file.
	Maintain support for send_signal_the_95_way(), which was called
	previously when running on Win32 with Unicode support too.

	* select-msw.c (mswindows_own_selection):
	* select-msw.c (mswindows_get_foreign_selection)
	Remove support for running as a non-Unicode program under Win32
	from this file.

	* symsinit.h:
	Remove declaration for init_win32_very_very_early() here.

	* sysdep.c:
	* sysdep.c (sys_subshell):
	* sysdep.c (underlying_open_1):
	* sysdep.c (wext_retry_open):
	* sysdep.c (qxe_chdir):
	* sysdep.c (qxe_rmdir):
	* sysdep.c (qxe_allocating_getcwd):
	* sysdep.c (qxe_chmod):
	* sysdep.c (qxe_execve):
	Remove support for running as a non-Unicode program under Win32
	from this file.
	
	* syswindows.h:
	* syswindows.h (XEUNICODE_P):
	#define this unconditionally when #including
	intl-auto-encap-win32.h, pending revision of this to not need this.

	* syswindows.h (qxeGetWindowLongPtr): New. 
	* syswindows.h (qxeSetWindowLongPtr): New.
	* syswindows.h (qxeGetClassLongPtr): New.
	* syswindows.h (qxeSetClassLongPtr): New.
	All of these moved here from intl-auto-encap-win32.h. 
	
	* syswindows.h (XETCHAR_SIZE):
	* syswindows.h (ITEXT_TO_TSTR):
	* syswindows.h (build_tstr_string):
	* syswindows.h (DECLARE_INLINE_HEADER):
	* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
	* syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT):
	Remove support for running as a non-Unicode program under Win32
	from this file.
	
	* win32.c:
	* win32.c (mswindows_read_link_1):
	Remove support for running as a non-Unicode program under Win32
	from this file.

2021-10-19  Aidan Kehoe  <kehoea@parhasard.net>

	Quiet some warnings from Visual C++.
	* data.c (parse_integer):
	Visual C++ advises that unary - applied to an unsigned integer
	remains unsigned, correct this.
	* doprnt.c (Fnumber_to_string):
	Declare RADIXING as a UINT_16_BIT, to quiet the compiler (we are
	careful to check its range).
	* fns.c (split_string_by_ichar_1):
	Avoid multiplying a Bytecount by a double, to quiet the compiler
	regarding data loss.
	* xemacs.def.in.in:
	qxesprintf() no longer available here.

2021-10-19  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c:
	* data.c (Fdigit_char_p):
	Constrain our range of RADIX from one to the maximum value in
	RADIX-TABLE.
	* data.c (Fdigit_char):
	Document this, do the same in this function.
	* data.c (parse_integer):
	Instead of attempting and failing a minority of the time to detect
	overflow in this function, calculate that limiting number which,
	on next iteration, may overflow, and hand over the the bignum code
	when that is picked up.
	* data.c (Fparse_integer):
	Document a change to RADIX, zero is no longer accepted.

2021-10-18  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (Fdelete_slot):
	* window.c (make_dummy_parent):
	Be more systematic in initialising or clearing marker slots in
	these other functions in this file, now WINDOW_MARKER_SLOT is
	available in winslots.h

2021-10-11  Aidan Kehoe  <kehoea@parhasard.net>

	* winslots.h:
	Rework this file, doing two broad things:
	1. Remove the support for "saved" slots. This had been used when
	the window configuration implementation was in C, and is no longer
	relevant with Mike Sperber having moved it to window-xemacs.el.
	2. Provide syntactic support for integer (usually fixnum) and
	marker slots, allowing them to be initialised more systematically
	from allocate_window(). This has the happy consequence that uses
	of e.g. left_margin_width without checking its type (see
	margin_width_internal()) will no longer throw an assertion failure
	that small minority of times that a window is redisplayed without
	recompute_all_cached_specifiers_in_window () having been
	called. In theory shouldn't happen, but see the commit message
	for a backtrace.

	* window.c (WINDOW_INTEGER_SLOT_ARRAY):
	* window.c (allocate_window):
	* window.c (WINDOW_INTEGER_SLOT):
	* window.c (WINDOW_SLOT):
	* window.c (mark_window_as_deleted):
	Use the new syntax for winslots.h in this file.

2021-10-16  Aidan Kehoe  <kehoea@parhasard.net>

	* glyphs-eimage.c (tiff_instantiate):
	uint32 is deprecated, use our UINT_32_BIT type instead, thank you
	the Cygwin GCC install.

2021-09-14  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c:
	Remove qxesprintf(), no longer used, and superseded by
	emacs_snprintf(). 
	* lisp.h:
	Remove its declaration.

2021-09-09  Aidan Kehoe  <kehoea@parhasard.net>

	* ChangeLog:
	Update a link in this file now Bitbucket support for Mercurial is
	no longer extant.

2021-07-15  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c:
	* event-stream.c (vars_of_event_stream):
	Expose keystrokes_since_auto_save to Lisp, to allow e.g. more
	intelligent decisions made in pre-idle-hook about when to autosave.

2021-07-09  Aidan Kehoe  <kehoea@parhasard.net>

	* extents.c (print_extent):
	Fix some bugs in the printing of extent plists, put spaces between
	the elements, only print the plist at all if there are any non-nil
	elements.

2021-06-29  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (check_coerce_octet):
	Fix an incompatibility introduced by Ben in the unicode-internal
	code, OCTET1 can range from 0 to 31, inclusive, and from #x80 to
	#x9f, inclusive. It cannot range from 32 to 63.
	(internal_to_external_charset_codepoint): 
	Fix a related incompatibility in the result of #'split-char,
	(split-char ?\x80) now gives (control-1 0) as it did in all
	previous versions of XEmacs mule.
	Thank you for the bug report regarding latin-unity, Henry
	Thompson!

2021-06-10  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (ALIST_LOOP_4): Correct a bug in this macro, the name of
	the tail variable reflects _al4_tail_##car.
	* sequence.c (assoc_no_quit):
	Implement this using ALIST_LOOP_4() rather than inhibit-quit and
	Fassoc().

2021-06-10  Aidan Kehoe  <kehoea@parhasard.net>

	Remove hash.h, hash.c, no longer used, since the Lisp hash tables
	(elhash.[ch]) are preferred.

	* font-mgr.c: Remove an #include for hash.h.
	* gccache-x.c: Ditto.
	* elhash.c (memory_hash): Move this here from hash.c, it is used
	by the Lisp hash code.
	* hash.c: Removed.
	* hash.h: Removed.	
	* Makefile.in.in (objs): Remove hash.o from this list
	* process-nt.c: Remove an #include for hash.h.
	* process-unix.c: Ditto.
	* process.c: Ditto.
	* profile.c: Ditto.
	* ui-gtk.c: Ditto.
	* win32.c: Ditto.
	* depend: Regenerate.

2021-06-10  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c: Wrap the #include "syswindows.h" with #ifdef
	WIN32_NATIVE for the sake of the POSIX build.

2021-06-10  Aidan Kehoe  <kehoea@parhasard.net>

	Implement the mswindows_read_link() cache as a normal Lisp hash
	table.
	Be more careful about the result of GetTickCount() wrapping round.

	* alloc.c (disksave_object_finalization):
	Clear Vmswindows_read_link_hash before dumping, we don't want the
	path information for build time hanging around.
	* syswindows.h:
	Make Vmswindows_read_link_hash available to alloc.c
	* win32.c:
	* win32.c (mswindows_read_link_1):
	Use intern_istring when looking up the cache entry for a given
	file name, allowing us to use a normal Lisp hash table.
	Be more careful about the tick count wrapping around.
	Change the declaration of the function to take the length of
	FNAME, since it is always calculated anyway.
	* win32.c (mswindows_read_link):
	Call mswindows_read_link_1() with its new calling convention.
	* win32.c (vars_of_win32):
	Initialise and staticpro() Vmswindows_read_link_hash.

2021-05-27  Aidan Kehoe  <kehoea@parhasard.net>

	Move the main profiling hash table to being a Lisp hash table, it
	is safe to modify (but not to enlarge) this from a signal handler.

	* gc.c:
	No special marking for the profiling info now needed, remove the
	call to mark_profiling_info().
	* profile.c:
	Vbig_profile_table is now a Lisp hash table, declare it as such.
	* profile.c (create_profile_tables):
	Move the body of create_timing_profile_table() in here, no need to
	have it separate.

	* profile.c (static const struct sized_memory_description
	  hentry_description): Removed.
	* profile.c (static const struct sized_memory_description
	plain_hash_table_description): Removed.
	These were never used and are not necessary now Vbig_profile_table
	is a normal Lisp object.

	* profile.c (profile_sow_backtrace):
	Add entries for every function on the backtrace to
	Vbig_profile_table, ensuring there won't be a need to add an entry
	within sigprof_handler().
	* profile.c (profile_record_about_to_call):
	No need to pregrow_hash_table_if_necessary() here; do add zero entry
	for *bt->function to Vbig_profile_table.
	* profile.c (sigprof_handler):
	Call inchash_eq() on the corresponding entry in
	Vbig_profile_table; assert that the table hasn't been enlarged,
	this code cannot handle that.
	* profile.c (Fstart_profiling):
	Use the Lisp hash table functions when dealing with
	Vbig_profile_table.
	* profile.c (Fclear_profiling_info):
	Ditto.
	* profile.c (get_profiling_info_timing_maphash): Ditto.
	* profile.c (Fget_profiling_info): Ditto.
	* profile.c (set_profiling_info_timing_maphash): Ditto.
	* profile.c (Fset_profiling_info): Ditto.
	* profile.c (mark_profiling_info_maphash): Removed. No longer
	needed.
	* profile.c (mark_profiling_info): Ditto.
	* profile.c (vars_of_profile):
	Just staticpro() Vbig_profile_table, don't dither about adding a
	root block pointer.
	* profile.h:
	Remove the declaration of mark_profiling_info().

2021-05-26  Aidan Kehoe  <kehoea@parhasard.net>

	* process-unix.c (close_process_descs):
	Vusid_to_process is not used with event-Xt or event-gtk, loop
	through Vprocess_list instead when closing descriptors in a
	newly-forked subprocess.
	* procimpl.h: 
	Now Vusid_to_process is no longer used outside of process.c,
	remove it from this file.

2021-05-26  Aidan Kehoe  <kehoea@parhasard.net>

	* event-Xt.c (emacs_Xt_create_io_streams):
	* event-Xt.c (emacs_Xt_delete_io_streams):
	* event-Xt.c (debug_process_finalization):
	* event-gtk.c (emacs_gtk_create_io_streams):
	* event-gtk.c (emacs_gtk_delete_io_streams):
	* event-gtk.c (debug_process_finalization):
	* event-msw.c:
	* event-msw.c (lisp_to_HANDLE):
	* event-msw.c (NTPIPE_SLURP_STREAM_DATA):
	* event-msw.c (mswindows_need_event):
	* event-msw.c (emacs_mswindows_create_io_streams):
	* event-msw.c (emacs_mswindows_delete_io_streams):
	* event-stream.c (event_stream_create_io_streams):
	* event-stream.c (event_stream_delete_io_streams):
	* event-tty.c (emacs_tty_next_event):
	* event-tty.c (emacs_tty_create_io_streams):
	* event-tty.c (emacs_tty_delete_io_streams):
	* event-unixoid.c (event_stream_unixoid_create_io_streams):
	* event-unixoid.c (event_stream_unixoid_delete_io_streams):
	* event-unixoid.c (init_event_unixoid):
	* events.h:
	* events.h (struct event_stream):
	* general-slots.h:
	* lisp.h:
	* process-nt.c (nt_deactivate_process):
	* process-unix.c (close_process_descs):
	* process-unix.c (connect_to_file_descriptor):
	* process-unix.c (unix_deactivate_process):
	* process.c:
	* process.c (get_process_from_usid):
	* process.c (init_process_io_handles):
	* process.c (Fprocess_send_eof):
	* process.c (deactivate_process):
	* process.c (init_xemacs_process):
	* process.c (vars_of_process):
	* process.h:
	* procimpl.h:
	* procimpl.h (struct process_methods):
	Move the unique stream identifier (USID) type to being a
	Lisp_Object rather than a C integer type.
	Use the symbols Qdiscard, Qerror for USID_ERROR and USID_DONTHASH.
	Use a weak list for the USID to process mapping, rather than a
	native (non-Lisp) hash table, the number of streams will be
	comfortably less than a hundred most of the time.
	Provide lisp_to_HANDLE(), HANDLE_to_lisp() to this end in the
	win32 code.	

2021-05-26  Aidan Kehoe  <kehoea@parhasard.net>

	* frame-msw.c (mswindows_init_frame_1):
	* scrollbar-msw.c (mswindows_create_scrollbar_instance):
	Correct a couple of assertions in these functions, avoid crashing
	at startup on 32-bit Windows.

2021-05-19  Aidan Kehoe  <kehoea@parhasard.net>

	Implement fc_intern() using a normal Lisp hash table, warn if
	debug-xft is non-zero and the property name is not recognized.
	* font-mgr.c:
	* font-mgr.c (fc_intern):
	* font-mgr.c (vars_of_font_mgr):
	Initialize Vfc_property_name_hash_table here, and staticpro it.
	* font-mgr.c (reinit_vars_of_font_mgr):
	Remove the make_string_hash_table() call here.

2021-05-06  Aidan Kehoe  <kehoea@parhasard.net>

	The window point and saved_window_start caches are very small,
	much less than 100 elements, use weak lists rather than weak hash
	tables.

	* window.c (make_point_cache): New. Renamed from
	make_saved_buffer_point_cache().
	* window.c (get_point_cache): New.
	* window.c (put_point_cache): New.

	* window.c (allocate_window):
	* window.c (unshow_buffer):
	* window.c (Fdelete_window):
	* window.c (Fset_window_buffer):
	* window.c (make_dummy_parent):
	Use the new interface in all these functions.

2021-05-06  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fmake_variable_buffer_local):
	Don't store the current buffer in this function, this function
	doesn't actually directly make the symbol have a buffer-local
	value, and storing a buffer that isn't used leads to minor issues
	with buffers not getting garbage-collected when they should.

2021-05-11  Aidan Kehoe  <kehoea@parhasard.net>

	* emacs-marshals.c:
	* emacs-marshals.c (FOR_ALL_MARSHALLERS): New.  Regenerate this
	file, see ../lisp/gtk-marshal.el.
	* ui-gtk.c:
	Make the map from marshaller types to functions a compile-time
	constant, avoiding the creation of a hash table the first time a
	marshalled function is called.
	* ui-gtk.c (find_marshaller):
	Move this here from emacs-marshals.c.
	* ui-gtk.c (Fgtk_import_function_internal):
	No need to prepend "emacs_gtk_marshal_" to the argument passed to
	find_marshaller(). 

2021-04-29  Aidan Kehoe  <kehoea@parhasard.net>

	Since GTK has moved to Cairo, it is no longer useful to attempt to
	cache graphic contexts under that window system. Remove that code.

	* console-xlike-inc.h: Remove those declarations and types
	specific to the GC caching code.
	* depend: Regenerate.
	* gccache-gtk.c: Remove.
	* gccache-gtk.h: Remove.
	* gccache-x.h (X_SET_GC_FILL, X_SET_GC_PIXEL): Move these macros
	here, rename from XLIKE_SET_GC_{FILL,PIXEL}.
	* redisplay-x.c:
	* redisplay-x.c (x_get_gc): Move this here from
	redisplay-xlike-inc.c, renaming it from XLIKE_get_gc()
	* redisplay-x.c (x_output_horizontal_line): Call it using the new
	name. Use the X-specific GC masks.
	* redisplay-x.c (x_output_vertical_divider): Ditto.
	* redisplay-x.c (X_COLOR_TO_PIXEL): Add this, renamed from
	XLIKE_COLOR_TO_PIXEL, moved from console-xlike-inc.h
	* redisplay-x.c (x_flash): Use it, use the X-specific GC mask
	names and function names.
	* redisplay-x.c (x_output_blank): Ditto.
	* redisplay-x.c (x_output_eol_cursor): Ditto.
	* redisplay-x.c (x_output_xlike_pixmap): Ditto.
	* redisplay-x.c (x_output_string): Ditto.
	* redisplay-xlike-inc.c:
	Move XLIKE_get_gc() to redisplay-x.c.
	* redisplay-xlike-inc.c (XLIKE_output_blank):
	Use the X-specific names when appropriate.
	* redisplay-xlike-inc.c (XLIKE_output_pixmap):
	Ditto.

2021-04-22  Aidan Kehoe  <kehoea@parhasard.net>

	* fontcolor-xlike-inc.c (FcResultToString):
	* fontcolor-xlike-inc.c (FcTypeOfValueToString):
	Use emacs_snprintf_ascbyte() in both these functions rather than
	snprintf.
	* gpmevent.c (turn_off_gpm):
	Mule-ize this function.
	* gpmevent.c (Fgpm_enabled_p):
	Ditto.
	* gpmevent.c (Fgpm_enable):
	Ditto. Use emacs_snprintf() rather than snprintf(). Give a more
	informative error when the current tty is not a Linux console.
	* number-mp.c (bignum_set_long):
	Use fixnum_to_string here rather than snprintf().
	* process-unix.c (unix_open_network_stream):
	Use emacs_snprintf() rather than snprintf() here. Check the
	integer range for numeric ports.
	* tls.c (tls_set_x509_key_file):
	Use emacs_snprintf_ascbyte() here.

2021-04-20  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (redisplay_text_width_string): Removed.
	No longer used, and equivalent to
	redisplay_window_text_width_string(). On inspection the only
	difference appears to be the cachel updating, but r_w_t_w_s does
	that too, see separate_textual_runs_mule.
	* redisplay.h:
	Remove its declaration.

2021-04-17  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.h:
	Update the declaration of point_in_line_start_cache() here, to
	reflect byte positions.
	* window.c (Fwindow_displayed_text_pixel_height):
	Use the buffer byte positions with point_in_line_start_cache(),
	the last of the byte-char confusion in window.c

2021-04-16  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (decode_mode_spec): Fix a bug I introduced in
	3aad17c73ee3 of 2018, no need to add one twice to convert from
	zero-based to one-based line numbers.
	Thank you for the bug report Stephen Turnbull!

2021-04-15  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (point_visible):
	end_pos[CURRENT_DISP] is now the inclusive upper bound on the
	positions shown, not exclusive, revise this appropriately. Thank
	you for the bug report, Stephen Turnbull!

2021-04-14  Aidan Kehoe  <kehoea@parhasard.net>

	Correct some further byte-char confusion, #'move-to-window-line.

	* redisplay.h: line_at_center() returns a line number, so the
	appropriate type is Charcount, declare it as such.
	* redisplay.c (line_at_center): Update the definition accordingly.
	* redisplay.c (point_at_center): Update a call to line_at_center()
	accordingly.

	* window.c (Fmove_to_window_line):
	Call line_at_center(), point_at_center() with byte positions.

2021-04-14  Aidan Kehoe  <kehoea@parhasard.net>

	When examining the redisplay display lines for the sake of
	`event-point', `event-modeline-position' and friends, be certain
	never to return an invalid buffer position.

	* redisplay.c:
	* redisplay.c (force_valid_bytebpos_or_zero): New.
	* redisplay.c (force_valid_modeline_offset_or_negative): New.
	* redisplay.c (pixel_to_glyph_translation): Use them.

2021-03-25  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (redisplay_window):
	Init w->end_pos[DESIRED_DISP] early in this function, so the
	modeline code always has it available.

2021-03-25  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (point_visible):
	No need to declare B, the window's buffer, here.
	* redisplay.c (end_of_last_line_may_error): Removed. No longer
	used.
	* redisplay.c (pixel_to_glyph_translation):
	Don't call end_of_last_line_may_error() from this, since that
	enters redisplay and provokes a crash with error-checking turned
	on. Use the position of (*w)->end_pos[CURRENT_DISP] instead.
	* window.c:
	* window.c (Fwindow_end):
	Don't call end_of_last_line() if we're currently in redisplay,
	redisplay is not re-entrant.
	* signal.c (check_quit):
	Go back to the old check for proper wrapping within redisplay
	here, since we should no longer be entering redisplay
	recursively.

2021-03-24  Aidan Kehoe  <kehoea@parhasard.net>

	Move window_end_pos[] to being an array of markers.
	This avoids problems maintaining byte-char correspondence.

	* redisplay-output.c (redisplay_update_line):
	No need to update window_end_pos[] here, insdel.c has done that
	for us.
	* redisplay-output.c (redisplay_output_window):
	Copy the byte position of end_pos[DESIRED_DISP] to
	end_pos[CURRENT_DISP] as appropriate.
	* redisplay.c (real_current_modeline_height):
	Set w->end_pos[CMOTION_DISP] as appropriate here.
	* redisplay.c (regenerate_window):
	Initial set w->end_pos[type] to start_pos, then, as the display
	lines are processed, set it to the end of the last line
	processed.
	* redisplay.c (point_visible):
	Use w->end_pos[type].
	* redisplay.c (redisplay_window):
	If dealing with the echo area, save the position of
	w->end_pos[CURRENT_DISP] as we did with w->start[CURRENT_DISP],
	and restore after calling Lisp.
	* redisplay.c (decode_mode_spec):
	Update this to reference w->end_pos[] rather than
	w->window_end_pos[].
	* window-impl.h (struct window):
	Remove the Bytebpos window_end_pos[] elements from here.
	* winslots.h:
	Add end_pos as an array of window slots here, ensuring GC
	protection.
	* window.c (allocate_window):
	Init the end_pos slots here.
	* window.c (Fwindow_end):
	Use w->end_pos[CURRENT_DISP] here, rather than the end_bytepos of
	the last entry in the window display lines.
	* window.c (Fdelete_window):
	Unchain the end_pos[] markers here.
	* window.c (Fset_window_buffer):
	Initialise end_pos[CURRENT_DISP] here.
	* window.c (temp_output_buffer_show):
	Ditto.
	* window.c (make_dummy_parent):
	Ditto.
	* window.c (window_displayed_height):
	Use w->end_pos[] here.
	* window.c (window_scroll):
	Ditto.

2021-03-19  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay-output.c (ADJ_BYTEPOS):
	* redisplay-output.c (redisplay_move_cursor):
	ADJ_BYTEPOS can sometimes be zero, since runes' byte positions can
	be initialised to that. Don't trigger an assertion failure within
	set_marker_byte_position() when that happens. Thank you Stephen
	Turnbull!

2021-03-03  Aidan Kehoe  <kehoea@parhasard.net>

	Introduce search-error-on-bad-match-data, easing the debugging of
	inconsistent match data.
	* search.c:
	* search.c (search_warn_or_error): New. Depending on the value of
	search_error_on_bad_match_data, either error, or call
	warn_when_safe() 
	* search.c (canonicalize_lisp_search_registers_for_replace): Use
	it instead of warn_when_safe().
	* search.c (Freplace_match): Ditto.
	* search.c (match_limit): Ditto.
	* search.c (Fmatch_string): Ditto.
	* search.c (store_match_data_fixnums): Ditto.
	* search.c (store_match_data_markers): Ditto.
	* search.c (vars_of_search): Use DEFVAR_BOOL() to make it
	available to Lisp.

2021-02-26  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	GTK uses select() to wait for events under the hood, #define
	HAVE_UNIXOID_EVENT_LOOP with it too. This means that
	init_event_unixoid() will be called at startup, which may improve
	things with timeouts in GTK.

2021-02-26  Aidan Kehoe  <kehoea@parhasard.net>

	Get some of the GTK code compiling with C++.
	* frame-gtk.c (gtk_recompute_cell_sizes):
	Cast geometry_mask to a GdkWindowHints.
	* glyphs-gtk.c (gtk_xpm_instantiate):
	Cast the first argument to emacs_asprintf() in this function.

2021-02-21  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (store_match_data_fixnums):
	* search.c (store_match_data_markers):
	Warn on encountering badly-ordered match end positions in both
	these functions, they may well reflect corrupt saved match data.

2021-02-21  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (Freplace_match):
	Update some comments here.
	Don't attempt to access the saved buffer context if match zero is
	not an extent.
	Be more careful about which syntax table to use.

2021-02-19  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (store_match_data_fixnums):
	Correct a sign error in my last change.

2021-02-18  Aidan Kehoe  <kehoea@parhasard.net>

	Attempt to address an assertion failure Stephen Turnbull is
	seeing, thank you Stephen.

	* search.c (store_match_data_fixnums):
	Be careful that the first of the saved fixnums is less than the
	second.
	* search.c (store_match_data_markers):
	Ditto.

2021-02-18  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (Freplace_match):
	Correct the call to discard extent info when dumping, code dealing
	with case escapes.

2021-02-17  Aidan Kehoe  <kehoea@parhasard.net>

	Rename the ascii_begin string field to ascii_end, given that it
	reflects the *end* of the stretch of ASCII octets at the beginning
	of the string.

	* alloc.c:
	* alloc.c (sledgehammer_check_ascii_end):
	* alloc.c (make_uninit_string):
	* alloc.c (set_string_char):
	* alloc.c (Fmake_string):
	* alloc.c (init_string_ascii_end):
	* alloc.c (make_string):
	* alloc.c (make_string_nocopy):
	* buffer.c (Fstring_char_byte_converion_info):
	* data.c (Faref):
	* data.c (build_fixnum_to_char_maps):
	* event-stream.c (echo_key_event):
	* event-stream.c (lookup_command_event):
	* insdel.c (make_string_from_buffer_1):
	* lisp.h:
	* lisp.h (NUM_ASCII_END_BITS):
	* lisp.h (struct Lisp_String):
	Update and correct the description of ascii_end.
	* lisp.h (MAX_STRING_ASCII_END):
	* lisp.h (XSTRING_ASCII_END):
	* redisplay.c (generate_formatted_string_db):
	* sequence.c (position):
	* sequence.c (Fnreverse):
	* sequence.c (FsortX):
	* sequence.c (Fclear_string):
	* sequence.c (concatenate):
	* sequence.c (replace_string_range_1):
	* text.h:
	* text.h (SLEDGEHAMMER_CHECK_ASCII_END):

2021-02-15  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (Fmatch_string):
	If STRING and the extent object are #'equal but not #'eq, don't
	warn, there's no issue with that. Something we already did in
	canonicalize_lisp_search_registers_for_replace(), but also
	appropriate here.

2021-02-14  Aidan Kehoe  <kehoea@parhasard.net>

	A couple of cosmetic changes, search.c
	* search.c (trivial_regexp_p):
	Modernize the return value of this. Make its implementation more
	Mule-clean, use INC_IBYTEPTR() rather than looking at *s++.
	* search.c (chars_differ_in_non_final_bytes):
	Declare this as returning a Boolint, declare ASTR as being const
	Ibyte* rather than just Ibyte *.

2021-02-14  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (search_command): 
	LIM is a byte offset, compare it to BYTE_BUF_ZV(),
	BYTE_BUF_BEGV().

2021-02-14  Aidan Kehoe  <kehoea@parhasard.net>

	Remove the last of the needless byte->char conversions from
	search.c.

	* search.c: Update the declarations of simple_search(),
	boyer_moore(), search_buffer().
	* search.c (skip_chars):
	Use get_buffer_pos_char() here; document why we haven't switched
	to functioning in byte positions.
	Make the arguments a bit clearer.
	* search.c (search_command):
	Update the argument declarations of RE, POSIX, to be Boolints.
	Declare NP and LIM as Bytebpos immediately, use
	get_buffer_pos_byte() instead of reimplementing it avant la
	lettre.
	Set point from the byte result of the search_buffer() call, and
	then return make_fixnum (BUF_PT (buf)).
	* search.c (search_buffer):
	Update this to take a Bytebpos POS, LIM (instead of Charbpos
	CHARBPOS, BUFLIM), and to return a Bytebpos. Avoid needless
	char-byte conversion as a result.
	* search.c (simple_search):
	Update this to return a Bytebpos. Avoid needless byte-char
	conversion as a result.
	* search.c (boyer_moore):
	Ditto.

2021-02-14  Aidan Kehoe  <kehoea@parhasard.net>

	Move the match subexpression information to functioning in terms
	of extents, with lazy conversion to character offsets (meaning
	faster searches in large buffers), better warnings and more
	do-what-I-mean behavior generally.

	* gc.c (gc_prepare):
	Flush the unused extents from the Lisp search registers before GC.

	* general-slots.h: Add an entry for Qcontext here.
	* lisp.h: Declare flush_unused_lisp_search_registers() here.
	* lstream.h: Declare Fget_output_stream_string() for the sake of C
	code.

	* search.c:
	Declare Vsearch_registers, a cons of the number of registers
	available currently and a Lisp vector of extent objects reflecting
	those registers.
	Remove last_thing_searched, corresponding but more accurate
	information is available from the Lisp extents.

	* search.c (clear_lisp_search_registers): New. Clear the saved
	Lisp data regarding the search registers.
	* search.c (set_lisp_search_registers): New. Set Vsearch_registers
	from the data passed back into search_regs, allowing use of
	extents with lazy conversion to characters if needed.

	* search.c (canonicalize_lisp_search_registers_for_replace): New.
	Make sure that all saved search registers are extents before
	calling Freplace_match() on MATCH_OBJ, avoiding
	the kludgy cons-of-fixnum approach maintained a minority of the
	time given the need for compatibility.

	* search.c (flush_unused_lisp_search_registers): New.
	If the number of lazily saved but currently unused search
	registers is greater than 16, make the higher registers
	unreachable before GC, giving them a chance to be
	garbage-collected.

	* search.c (fixup_search_regs_for_string): Removed.
	* search.c (fixup_search_regs_for_buffer): Removed.
	Functionality of both these functions replaced by
	set_lisp_search_registers().
	
	* search.c (looking_at_1):
	Call set_lisp_search_registers() in this function.
	* search.c (string_match_1):
	Ditto.

	* search.c (Fstring_match):
	Update the docstring of this, encourage use of #'string-match-p.
	* search.c (Fposix_string_match):
	Ditto, encourage use of #'save-match-data.
	* search.c (search_buffer):
	Call set_lisp_search_registers() from this.
	* search.c (simple_search):
	Ditto. Set search_regs.start[0], search.regs.end[0],
	search.regs.num_regs explicitly. 
	* search.c (boyer_moore):
	Ditto.

	* search.c (set_search_regs): Removed. Functionality moved into
	set_lisp_search_registers().
	* search.c (clear_search_regs): Removed. Functionality moved into
	clear_lisp_search_registers().

	* search.c (Fsearch_backward):
	Update the docstring of this, encourage the use of
	`save-match-data'.
	* search.c (Fsearch_forward):
	Ditto.
	* search.c (Fword_search_forward):
	Ditto.
	* search.c (Fposix_search_forward):
	Ditto.
	* search.c (free_created_dynarrs): Removed.
	No longer needed.

	* search.c (Freplace_match):
	Update this to use the extent search register information,
	allowing warning with string or buffer arguments not consistent
	with those used at match time, using the same implementation for
	both buffers and strings for the regexp and case substitution into
	REPLACEMENT, and passing the case transformation backslash codes
	through using zero-length extents, rather than creating and
	freeing dynarrs.
	Also use saved match buffer context when replacing strings, and
	warn when this is inconsistent.

	* search.c (match_limit):
	Implement this using the register extent data, giving warnings
	when the current buffer is not that which had been used for
	searching.

	* search.c (Fmatch_string): Move this to C from subr.el, avoiding
	O(N) time complexity with the endpoints. Warn with inconsistent
	arguments and saved match data.
	* search.c (Fmatch_data_canonical): New. Return the saved matched
	data as extents, their canonical form in this XEmacs.
	* search.c (Fmatch_data):
	Caution against the INTEGERS argument.
	Transform the saved extent endpoints to markers without any
	byte-char conversion when the matched object is a buffer and
	INTEGERS is non-nil.
	Otherwise return nil (for elements that did not match) or fixnums
	in the old way for string matches.

	* search.c (store_match_data_fixnums): New. Used in this
	implementation of Fstore_match_data().
	* search.c (store_match_data_markers): New. Used in this
	implementation of Fstore_match_data().
	* search.c (Fstore_match_data): Heavily revised. Prefers the
	canonical form of match data, but handles markers without
	problems. Handles fixnums too, transforming negative fixnums to no
	match.
	* search.c (syms_of_search):
	DEFSUBR for Fmatch_string(), Fmatch_data_canonical() here.
	* search.c (reinit_vars_of_search):
	No need to initialize last_thing_searched here. Do initialize
	search_regs.{start,end,num_regs} to make things a little easier
	for the non-regexp search code.
	* search.c (vars_of_search):
	Make Vsearch_registers available here; also make
	Vcase_flag_symbol available, an uninterned symbol used in the
	Freplace_match() case transformation code.

2021-02-14  Aidan Kehoe  <kehoea@parhasard.net>

	Fix some bugs, add some functionality in anticipation of
	implementing the match data in terms of extents (rather than
	*character* positions stored as C integers).

	* extents-impl.h:
	The extent plists are not visible directly to Lisp, and we have
	never seen bugs with them in my couple of decades working on
	XEmacs. On a non debug build it is completely reasonable to offer
	extent_plist_{put,get,remprop} implemented in terms of their
	internal_plist_ counterparts, rather than
	external_plist_{get_put}, external_remprop, with their
	error-checking.
	* extents.c:
	* extents.c (object_extent_list_force): New.
	* extents.c (extent_attach): Use it, don't segfault on attaching
	to a string from C.
	* extents.c (print_extent_1):
	Leave printing the plist to print_extent(). Call
	Fextent_start_position(), Fextent_end_position() with their new
	optional arguments.
	* extents.c (print_extent):
	When printing the associated object, just call print_internal(),
	don't try to make our own object print infrastructure that fails
	when we add in another extent object type.
	* extents.c (extent_endpoint_external):
	Implement a new MARKERP argument to this function, returning
	markers and avoiding byte-char conversion when the extent is in a
	buffer. Make a choice for the marker insertion type depending on
	the Qstart_open, Qend_open properties.
	* extents.c (Fextent_start_position): Use this new argument to
	extent_endpoint_external(), document it.
	* extents.c (Fextent_end_position): Ditto.
	* extents.c (Fmap_extents):
	Call extent_endpoint_byte() here rather than
	Fextent_start_position(), Fextent_end_position(), since we need
	the byte positions ultimately anyway.
	* extents.c (Fmap_extent_children):
	Ditto.
	* extents.c (Fset_extent_property):
	Use the new extent_plist_remprop(), extent_plist_put() in this
	function if appropriate.
	* extents.c (Fextent_property):
	Use the new extent_plist_get() in this function as appropriate.
	* extents.c (splice_in_string_extents_mapper):
	* extents.c (splice_in_string_extents_the_hard_way_mapper):
	* extents.c (copy_string_extents_mapper):
	* extents.c (stretch_string_extents_buffer_mapper):
	* extents.c (stretch_string_extents_mapper):
	All of these functions incorrectly failed to pass through
	zero-length duplicable extents, correct that.
	* extents.h:
	Update the declarations for Fextent_start_position,
	Fextent_end_position(), add a declaration for Fcopy_extent().
	* undo.c (record_extent):
	Call Fextent_start_position(), Fextent_end_position() with their
	new args.

2021-02-08  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h: Declare generated_modeline_stringp().
	* buffer.c:
	* buffer.c (finish_init_buffer): Give the
	generated_modeline_string a non-nil Qgenerated_modeline_string
	property, to make it easier for the extent code to determine if
	redisplay needs to recalculate things.
	* buffer.c (generated_modeline_stringp): New.  Use this property,
	returning non-nil if its argument is (likely) the
	generated_modeline_string of a buffer.
	* buffer.c (syms_of_buffer):
	DEFSYMBOL Qgenerated_modeline_string, used by
	generated_modeline_stringp(), finish_init_buffer() above.
	* extents.c (signal_single_extent_changed):
	Call generated_modeline_stringp() as appropriate. Update a comment
	to reflect that it is available.

2021-02-09  Aidan Kehoe  <kehoea@parhasard.net>

	Move make_string_from_buffer() to taking a Bytebpos and a
	Bytecount, rather than working in characters.

	* abbrev.c (Fexpand_abbrev):
	Call Fbuffer_substring() rather than make_string_from_buffer()
	when saving the text the prompted the last abbreviation
	expansion.
	* editfns.c (Fbuffer_substring):
	* editfns.c (Fbuffer_substring_no_properties):
	Use get_buffer_range_byte() in these two function.
	* editfns.c (Ftranspose_regions):
	Use Fbuffer_substring() here.
	* file-coding.c (query_coding_1):
	Ditto.
	* insdel.c (buffer_insert_from_buffer_1):
	Call charbpos_to_bytebpos() before calling
	make_string_from_buffer() here.
	* insdel.c (make_string_from_buffer_1):
	* insdel.c (make_string_from_buffer):
	* insdel.c (make_string_from_buffer_no_extents):
	Update all these to work with Bytebpos and Bytecount.
	* lisp.h: Update their declarations.
	* undo.c (record_delete):
	Call Fbuffer_substring() rather than make_string_from_buffer()
	given we're working in character counts and positions.

2021-02-03  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (get_buffer_pos_both):
	Correct the handling of the GB_COERCE_RANGE flag in this function
	(which flag has yet to be used, so no bug actually exposed up to
	this point).

2021-01-28  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (Fwindow_end): 
	Call window_buffer () to get a Lisp_Object before calling EQ(),
	avoiding an assertion failure with error-checking builds.

2021-01-28  Aidan Kehoe  <kehoea@parhasard.net>

	Avoid a bytebpos_to_charbpos() followed by charbpos_to_bytebpos()
	with (goto-char MARKER). This has a particular performance impact
	with large VM buffers.

	* text.c (get_buffer_pos_both): New.
	Like get_buffer_pos_{byte,char}, but return both the character and
	the byte positions in *cpos_out, *bpos_out.

	* editfns.c (Fgoto_char):
	Use it.

	* lisp.h:
	Declare it.

2021-01-24  Aidan Kehoe  <kehoea@parhasard.net>

	Some further byte-char cleanups, documentation in the redisplay code.

	* redisplay.c (regenerate_window):
	Document window_end_pos[] some more.
	* redisplay.c (regenerate_window_extents_only_changed):
	* redisplay.c (regenerate_window_incrementally):
	Correct spelling in some comments in these functions.
	* redisplay.c (point_visible):
	In passing, don't ever set END to an invalid buffer position.
	* redisplay.c (update_line_start_cache):
	Don't ever set NEW_STARTP to an invalid buffer position, ditto for
	STARTP further down.
	* window.c:
	* window.c (window_max_line_len):
	Use the more correct window_display_buffer() when working out the
	window_max_line_len here.
	* window.c (Fwindow_end):
	Update the implementation of this to only ever call
	bytebpos_to_charbpos on a valid buffer position in the window's
	current buffer.
	* window.c (window_displayed_height):
	Correct some window_end_pos handling here.
	* window.c (window_scroll):
	Ditto.

2021-01-22  Aidan Kehoe  <kehoea@parhasard.net>

	Update some bitrotted GTK code.
	* event-gtk.c (dragndrop_data_received):
	* event-gtk.c (dragndrop_dropped):
	There has been some information hiding with the GtkSelectionData
	type, use the corresponding getter methods rather than accessing
	the structure data directly.
	* select-gtk.c (emacs_gtk_selection_handle):
	* select-gtk.c (emacs_gtk_selection_clear_event_handle):
	Use our new name for lisp_to_UINT_32_BIT in these two functions.

2021-01-22  Aidan Kehoe  <kehoea@parhasard.net>

	* scrollbar.c (update_scrollbar_instance):
	Revert to buffer position based scrolling rather than line based
	scrolling if the buffer is sufficiently big that the difference is
	not visible.

2021-01-21  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (Fcanonicalize_keysym):
	Double a backslash in this docstring so ?\x20 is shown as such in
	the generated DOC file.

2021-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (get_current_pixel_pos):
	Correct a pointer dereference here, thank you Microsoft Visual
	C++.	

2021-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	Move the display lines to working in terms of Bytebpos rather than
	Charbpos, moving closer still to having no byte->char conversion in
	redisplay.

	* device-impl.h (struct pixel_to_glyph_translation_cache):
	CHARPOS and CLOSEST are now Bytebpos, MODELINE_CLOSEST is a Bytecount.

	* events.c (event_pixel_translation):
	BUFP, CLOSEST, RET_BUFP, RET_CLOSEST are now Bytebpos,
	RET_MODELINE_CLOSEST and MODELINE_CLOSEST are Bytecounts.

	* events.c (Fevent_point):
	Adjst the result of event_pixel_translation to reflect that BUFP
	is now a Bytebpos, use bytebpos_to_charbpos() as appropriate.
	Document a subtlety with the relevant buffer, cross reference to
	the docstring for #'current-pixel-row.

	* events.c (Fevent_closest_point):
	Ditto.

	* events.c (Fevent_modeline_position):
	Adjst the result of event_pixel_translation to reflect that MBUFP
	is now a Bytebpos, use string_index_byte_to_char() as appropriate.

	* frame.c (Fmouse_position): Declare CHARBPOS and CLOSEST as
	Bytebpos, MODELINE_CLOSEST as Bytecount in this function

	* insdel.c (buffer_signal_changed_region):
	Have this take Bytebpos arguments, not Charbpos, change the range
	checks appropriately.

	* insdel.c (signal_after_change):
	Pass byte positions to buffer_signal_changed_region(); document
	that I feel the multiple changes infrastructure should work in
	terms of Bytebpos.

	* insdel.h:
	* insdel.h (struct each_buffer_change_data):
	Update the declaration of this structure to reflect Bytebpos
	rather than Charbpos

	* redisplay-output.c:
	* redisplay-output.c (compare_runes):
	Update a comment here now the runes have byte positions stored.

	* redisplay-output.c (ADJ_BYTEPOS): Rename ADJ_CHARPOS.

	* redisplay-output.c (redisplay_move_cursor):
	Update this to take a Bytebpos argument; in passing, explicitly
	document that NO_OUTPUT_END and the return value are Booleans.
	Update its implementation to work in terms of byte positions,
	calling set_marker_byte_position() as appropriate and using
	ADJ_BYTEPOS rather than ADJ_CHARPOS.

	* redisplay-output.c (redisplay_update_line):
	Work in terms of Bytebpos here.
	Add an assertion that dl->num_chars is 0xDEADBEEF if the current
	window is not to be truncated.

	* redisplay.c:
	* redisplay.c (position_redisplay_data_type):
	MODELINE_CHARPOS was set but not used in this structure, remove it.
	* redisplay.c (generate_display_line):
	Update this to take START_POS as a Bytebpos, and to return a
	Bytebpos.
	Remove BYTE_START_POS, a local variable, now superseded by
	START_POS.

	* redisplay.c (add_ichar_rune_1): No need to convert to a
	character position when creating the rune structure, runes now
	work in byte positions too.
	* redisplay.c (add_blank_rune):
	Ditto.

	* redisplay.c (add_disp_table_entry_runes_1):
	Correct a declaration type for LEN, which is a Bytecount, not a
	Bytebpos.

	* redisplay.c (add_glyph_rune):
	No need to convert to a character position when creating the rune
	structure.

	* redisplay.c (create_text_block):
	Use WINDOW_TRUNCATEP() instead of calling window_truncation_on()
	on every invocation.
	Correct some indentation, line wrapping.
	If window truncation isn't on, instead of saving an inaccurate
	random value as dl->num_chars, save 0xDEADBEEF, and add
	appropriate assertions.

	* redisplay.c (add_margin_blank):
	Save the rune's position as a Bytepos.
	* redisplay.c (generate_modeline):
	Ditto.
	Also remove manipulation of data->modeline_charpos, not actually
	used anywhere else.
	* redisplay.c (add_string_to_fstring_db_runes):
	Save the rune's position as a Bytepos.
	* redisplay.c (create_string_text_block):
	Take START_POS as a Bytepos, return a Bytepos.
	Make much the same other changes as were made to
	create_text_block().

	* redisplay.c (generate_string_display_line):
	Take START_POS as a Bytepos, return a Bytepos.
	Make much the same other changes as were made to
	generate_display_line().

	* redisplay.c (generate_displayable_area):
	Take START_POS as a Bytecount, don't process the string in terms
	of characters.

	* redisplay.c (regenerate_window):
	Take START_POS, POINT as Bytebpos, use set_marker_byte_position()
	as appropriate.

	* redisplay.c (REGEN_INC_FIND_START_END):
	Check for the display line BYTEPOS rather than CHARPOS.

	* redisplay.c (regenerate_window_extents_only_changed):
	Take STARTP, POINTM, BEG_UNCHANGED, END_UNCHANGED as Bytebpos and
	Bytecount as appropriate.
	Use set_marker_byte_position() as appropriate, return a Boolint
	declared as such.

	* redisplay.c (regenerate_window_incrementally):
	Ditto.
	* redisplay.c (regenerate_window_point_center):
	Ditto.
	* redisplay.c (point_visible):
	Ditto.
	* redisplay.c (line_at_center):
	Take START, POINT as Bytebpos.
	* redisplay.c (point_at_center):
	Ditto.
	* redisplay.c (redisplay_window):
	Set WINDOW_TRUNCATEP ourselves rather than having all the
	functions we call invoke window_truncation_on().
	Process STARTP and POINTM as Bytebpos.
	Call set_marker_byte_position() as appropriate.
	* redisplay.c (decode_mode_spec):
	window_end_pos[] now works in terms of bytes.
	* redisplay.c (update_internal_cache_list):
	No need to call charbpos_to_bytebpos() when updating the line
	start cache.
	* redisplay.c (update_line_start_cache):
	Ditto.
	* redisplay.c (pixel_to_glyph_translation):
	Operate in terms of Bytebpos and Bytecount in this function.
	* redisplay.h:
	* redisplay.h (struct rune):
	Revise this structure to include buffer and string byte positions,
	and to move the larger values earlier in the structure.
	* redisplay.h (struct display_line):
	Ditto.
	Declare point_at_center as taking a Bytebpos START and returning a
	Bytebpos.
	Declare generate_displayable_area(), pixel_to_glyph_translation(),
	redisplay_move_cursor() as taking Bytebpos arguments as
	appropriate.
	Declare redisplay_move_cursor() as returning Boolint and taking
	NO_OUTPUT_END as a Boolint.
	* scrollbar-gtk.c (gtk_update_scrollbar_instance_status):
	Call the new window_max_line_len() to force determination of the
	window max line line even if truncation is turned off.

	* scrollbar-msw.c (mswindows_handle_mousewheel_event):
	Declare a few variables used by pixel_to_glyph_translation() in
	terms of bytes as appropriate.

	* scrollbar.c (update_scrollbar_instance):
	Assert that w->max_line_len is not equal to 0xDEADBEEF, redisplay
	should have calculated it if window truncation is on.

	* window-impl.h:
	* window-impl.h (struct window):
	Add TRUNCATEP to this structure.
	Updates the type of MAX_LINE_LEN, WINDOW_END_POS, LAST_REDISPLAY_POS.
	* window-impl.h (WINDOW_TRUNCATEP): New, access TRUNCATEP as an
	lvalue. 
	* window-impl.h (WINDOW_SET_TRUNCATEP): New, set TRUNCATEP to
	NEWVAL. 

	* window.h (window_max_line_len): Declare this; if window
	truncation is on, return w->max_line_len, otherwise calculate what
	it would be were window truncation on and return that.

	* window.c:
	* window.c (window_max_line_len):
	Implement this.
	* window.c (window_truncation_on): Return a Boolint.
	Move checks that don't involve C function calls earlier, which
	should make us a little faster.
	* window.c (Fcenter_to_window_line):
	Fix my bug of 8a643f5e37, call set_marker_byte_position() as a
	replacement for Fset_marker(), inappropriate to call
	set_marker_byte_position_restricted().
	* window.c (get_current_pixel_pos):
	Call get_buffer_pos_byte() with the result of
	window_display_buffer (w); ignore the modeline completely, no
	buffer position can be over it.

2021-01-14  Aidan Kehoe  <kehoea@parhasard.net>

	Clean up 64-bit issues, thank you Cygwin, GCC, Clang and Microsoft.
	* dialog-msw.c (dialog_proc):
	Declare this as returning WPARAM (equivalent to a pointer to int),
	not BOOL.
	* event-msw.c:
	Provide lisp_to_HSZ(), HSZ_to_lisp() as static functions.
	* event-msw.c (Fdde_alloc_advise_item):
	Use HSZ_to_lisp() here.
	* event-msw.c (Fdde_free_advise_item):
	Use lisp_to_HSZ() here.
	* event-msw.c (Fdde_advise):
	Ditto.
	* event-msw.c (mswindows_dde_callback):
	Ditto.
	* event-msw.c (mswindows_wnd_proc):
	Quiet the compiler here, cast the result of GetKeyboardLayout(0)
	to an EMACS_UINT before passing it to &.
	Similarly with an argument to qxeMapVirtualKeyEx().
	Similarly with an argument to ToUnicodeEx(), ToAsciiEx().
	* event-msw.c (debug_output_mswin_message):
	Cast some parameters to stderr_out() in a way that is now
	portable, with our doprnt.c implementation.
	* frame-msw.c (mswindows_init_frame_1):
	Cast the third argument of qxeSetWindowLongPtr() to an LPARAM, add
	an assertion about the bit width of LPARAM vs. a void pointer.
	* frame-msw.c (mswindows_set_frame_icon):
	Ditto.
	* frame-msw.c (mswindows_set_frame_pointer):
	Ditto.
	* glyphs-msw.c (mswindows_subwindow_instantiate):
	Ditto.
	* glyphs-msw.c (mswindows_widget_instantiate):
	Ditto.
	* intl-auto-encap-win32.c (qxeSetWindowLongPtr):
	Use LRESULT as the result type for qxeSetWindowLongPtr, LPARAM as
	the type of its third arg, in an attempt at portability.
	* intl-encap-win32.c (qxeUpdateICMRegKey):
	No longer use a separate declaration for Cygwin here.
	* intl-encap-win32.c (qxeEnumResourceTypes):
	* intl-encap-win32.c (qxeEnumResourceNames):
	* intl-encap-win32.c (qxeEnumResourceLanguages):
	Declare the types of lpEnumFunc appropriately for these three
	functions.
	* intl-encap-win32.c (qxeImmSetCompositionString):
	This now only takes LPVOID for lpComp, lpRead, as per recent
	Cygwin headers.
	* intl-win32.c (mswindows_start_ime_composition):
	Be a little more compatible in our TranslateCharsetInfo() call.
	* menubar-msw.c:
	* menubar-msw.c (EMPTY_ITEM_ID):
	Don't lose bits randomly with this #define.
	* scrollbar-msw.c (mswindows_create_scrollbar_instance):
	* scrollbar-msw.c (mswindows_free_scrollbar_instance):
	* scrollbar-msw.c (mswindows_handle_scrollbar_event):
	Make uses of qxeSetWindowLongPtr() more compatible in this file.
	* syswindows.h:
	Use the newer convention for ImmSetCompositionString() here.
	* toolbar-msw.c (mswindows_clear_toolbar):
	Cast the fourth argument to qxeSendMessage to LPARAM appropriately.
	* win32.c (mswindows_lisp_error_1):
	Make better choices about the types passed to our internal string
	formatting functions here.
	* win32.c (setitimer_helper_proc):
	Update the declaration of this function.
	* console-msw.c:
	* console-msw.c (write_string_to_mswindows_debugging_output):
	The rest of our code now expects a Bytecount from this soft of
	function, return that.
	* console-msw.h:
	Update the declaration of
	write_string_to_mswindows_debugging_output() to reflect that.
	* data.c (Fdigit_char):
	Wrap the calls to Fcanonicalize_number() for the sake of the
	Windows build.
	* dialog-msw.c (dialog_proc): Update a comment here.
	* dialog-msw.c (handle_question_dialog_box):
	Place a limit on how many dialog_items we are given, cast
	dlg_tem.cdit to WORD appropriately.
	* dired-msw.c (mswindows_format_file):
	Use emacs_snprintf_ascbyte() here, declare BUF as Ascbyte.
	* glyphs-msw.c (mswindows_widget_instantiate):
	Cast the argument to the call to qxeSetWindowLongPtr() call here.
	* nt.c (mswindows_rename):
	TEMP_LEN is not a pointer, correct its initialisation.
	* regex.c:
	* regex.c (re_iswctype):
	Do an assert (0); return -1; in this function to quiet the C
	compiler.
	* sequence.c (position):
	Cast the result of XSTRING_ASCII_BEGIN() to a Bytecount.

2021-01-14  Aidan Kehoe  <kehoea@parhasard.net>

	Clean up some compiler warnings and convincing bugs elicited with
	64-bit Cygwin, both clang and GCC.
	These are general bugs, not specific to 64-bit support; further
	patch pending for the latter.

	* database.c (Fopen_database):
	Mark SUBTYPE used to quiet the compiler if HAVE_BERKELEY_DB is not
	defined.

	* device-msw.c (equal_devmode):
	Fix a bug here, don't just compare dm1->devmode against NULL twice.

	* event-msw.c (mswindows_wnd_proc):
	&& isn't a bitwise operator as was intended.

	* event-msw.c (emacs_mswindows_add_timeout):
	Move to EMACS_INT as the timeout ID, as have the other platforms.

	* event-msw.c (remove_timeout_mapper): Ditto.
	* event-msw.c (emacs_mswindows_remove_timeout): Ditto.
	* event-msw.c (emacs_mswindows_format_magic_event):
	Print the channel as a Lisp object, use write_fmt_string_lisp()
	for that, quieting the compiler.
	* fontcolor-msw.c (mswindows_color_to_string): buf[] no longer
	used, remove it.
	* fontcolor-msw.c (mswindows_print_color_instance):
	Be more careful about the type passed to write_fmt_string.
	* glyphs-msw.c (mswindows_widget_instantiate):
	STYLE not actually used. Declare ID as an EMACS_UINT to avoid
	warnings when using it as a handle.
	* glyphs-msw.c (mswindows_progress_gauge_instantiate):
	Move the declaration of WND inside the #if 0 that wraps its use.

	* intl-win32.c:
	* intl-win32.c (set_current_lcid):
	Only call mswindows_locale_to_code_page() if we use the output.
	* intl-win32.c (wcscpy): Keep declarations before code in this
	function.
	* intl-win32.c (wcsdup): Ditto.
	
	* process.c (status_message): NAME isn't used as a local variable,
	remove it.
	* regex.c (re_compile_fastmap):
	Cast P to (void *) when using it as the first argument to
	unified_range_table_get_range(), thank you the C++ compiler.
	* select-msw.c (mswindows_own_selection):
	* select-msw.c (mswindows_get_foreign_selection):
	is_X_type set but not used in these functions, remove.
	* sysdll.c (dll_error):
	Use emacs_sprintf_string() rather than build_ascstring + snprintf,
	so the bit-width of a type passed to %lu is more predictable.
	* win32.c (Fmswindows_shell_execute):
	Check SHOW_FLAG for range if it is non-nil, avoiding surprises
	with the XFIXNUM further down.

2021-01-13  Aidan Kehoe  <kehoea@parhasard.net>

	* number.h:
	Wrap declarations in this file in BEGIN_C_DECLS/END_C_DECLS, which
	allows me to build locally with g++ and, all going well, should
	help along the smoketest too.

2021-01-12  Aidan Kehoe  <kehoea@parhasard.net>

	* number.c:
	Remove duplicate declarations for the C variables Qrationalp,
	Qfloatingp, Qrealp, thank you Mats Lidell and the Buildbot.
	Remove Qbigfloatp too.

2021-01-11  Aidan Kehoe  <kehoea@parhasard.net>

	Move various number predicates to Lisp, they are easily and cheaply
	implemented there and their implementation is independent of
	whether the current process has support for bignums, ratios,
	bigfloats.

	* data.c:
	* data.c (Fnumerator, Fdenominator): Move these here from
	number.c, so they are available (and trivial) on builds without
	support for ratios.
	* data.c (syms_of_data):
	Add them here.

	* general-slots.h:
	Add symbols for some type predicates, moved from C to Lisp today.

	* number.c: (Fbignump, Fratiop, Frationalp, Fbigfloatp,
	Ffloatingp, Frealp): Removed, now in lisp/cl-extra.el.
	* number.c (Fnumerator, Fdenominator): Moved to data.c.
	* number.c (syms_of_number):
	Update this function to reflect the above changes.

	* number.h:
	Update this file to reflect changes in number.c. In passing remove
	declarations for Fintegerp(), Fevenp(), Foddp(), now in Lisp.

2021-01-11  Aidan Kehoe  <kehoea@parhasard.net>

	Move Fcar_safe(), Fcdr_safe(), Fcopy_sequence(), Fintegerp(),
	Fwrong_type_argument() to Lisp.

	Replace calls to the first two with the obvious C implementations;
	replace calls to Fcopy_sequence usually either with calls to
	Fcopy_list() for definite lists, or calls to concatenate() for
	objects that may be arrays.

	The other functions were not in general called from C.

	* buffer.c (finish_init_buffer):
	* buffer.c (Fbuffer_indirect_children):
	Replace calls to Fcopy_sequence() in these functions.

	* callint.c (Fcall_interactively):
	The args list can be copied with Fcopy_list(), quotify_args()
	explicitly traverses it as a list.

	* console.c (Fconsole_type_list):
	* console.c (Fconsole_list):
	* console.c (Fconsole_device_list):
	Fcopy_list() is fine in all these.

	* data.c:
	* data.c (Fwrong_type_argument): Removed.
	* data.c (Fintegerp): Removed.
	* data.c (Fcar_safe): Removed.
	* data.c (Fcdr_safe): Removed.	
	* data.c (syms_of_data):
	Remove declarations for all these, now in Lisp.

	* device.c (Fdevice_class_list):
	* device.c (Fdevice_frame_list):
	Fcopy_list() is fine for both these functions.

	* doc.c (Fbuilt_in_symbol_file):
	Use the obvious C implementation of Fcar_safe here.

	* editfns.c (Fsystem_name):
	Use concatenate() here instead of Fcopy_sequence.

	* emacs.c:
	* emacs.c (Finvocation_name):
	* emacs.c (Finvocation_directory):
	Use concatenate() in both these functions.

	* eval.c (Ffunctionp):
	Provide a better implementation of Ffunctionp() for autoloads.

	* eval.c (Fvalues_list):
	Make this implementation better in the course of removing
	Fcar_safe(), Fcdr_safe().

	* events.c (Fmake_event):
	Use Fcopy_list for the plist here.

	* extents.c (Fextent_children):
	* extents.c (copy_extent):
	* extents.c (memoize_extent_face_internal):
	* extents.c (Fset_extent_properties):
	Use Fcopy_list() rather than Fcopy_sequence() in these functions.

	* faces.c (Fcopy_face):
	Ditto.

	* file-coding.c (Fcoding_system_type_list):
	Ditto.

	* fileio.c (a_write):
	Use the obvious C implementation of Fcar_safe here.

	* fns.c (Fcopy_sequence): Removed, now in Lisp.
	* fns.c (syms_of_fns): Remove its declaration.

	* frame.c (allocate_frame_core):
	* frame.c (make_sure_its_a_fresh_plist):
	* frame.c (Fset_frame_properties):
	* frame.c (Fframe_properties):
	Use Fcopy_list() rather than Fcopy_sequence() in these functions.

	* glade.c (__almost_functionp):
	Use the obvious C implementation of Fcar_safe here.

	* glyphs-widget.c (layout_property):
	Use Fcopy_list() rather than Fcopy_sequence() in this function.

	* glyphs.c:
	* glyphs.c (alist_to_tagged_vector):
	Use make_uninit_vector() rather than allocating stack space and
	then moving the elements from there to a new vector.

	* glyphs.c (process_image_string_instantiator):
	* glyphs.c (Fimage_instance_type_list):
	* glyphs.c (image_copy_vector_instantiator):
	* glyphs.c (image_copy_instantiator):
	* glyphs.c (Fglyph_type_list):
	Use Fcopy_list() or concatenate() as appropriate in all these
	functions. 

	* gui.c (copy_gui_item_tree):
	Use Fcopy_list() here.

	* keymap.c (Fkeymap_parents):
	* keymap.c (Fset_keymap_parents):
	* keymap.c (copy_keymap_internal):
	Use Fcopy_list() in this file.

	* lisp.h: Remove declarations for functions now in Lisp.

	* lread.c (Fload_internal):
	Use concatenate() rather than Fcopy_sequence().

	* menubar-x.c (command_builder_find_menu_accelerator):
	Use Fcopy_list() here, we've already just checked that
	Vmenu_accelerator_modifiers is a list.

	* minibuf.c (Fminibuffer_prompt):
	Use concatenate() rather than Fcopy_sequence in this commented-out
	function.

	* mule-ccl.c (resolve_symbol_ccl_program):
	Use concatenate() rather than Fcopy_sequence() in this function.

	* print.c (print_error_message):
	Use the obvious C implementation of Fcar_safe here.

	* process.c:
	* process.c (Fprocess_list):
	Use Fcopy_list(), not Fcopy_sequence() here.
	* process.c (status_message):
	Use concat2(X, Qnil) rather than Fcopy_sequence(), would need
	another temp variable to use concatenate().

	* search.c:
	* search.c (compile_pattern_1):
	Use make_string() on a string's data to copy it, rather than a
	call to Fcopy_sequence.
	
	* sequence.c (safe_copy_tree):
	* sequence.c (Fsubstitute):
	Use Fcopy_list() or concatenate() in these functions, as appropriate.

	* specifier.c (Fspecifier_type_list):
	Use Fcopy_list() here.
	* specifier.c (Fspecifier_tag_list):
	Call (mapcar #'car ...) rather than writing C code to do that,
	then call concatenate() to add its result to copies of
	Vdevice_class_list, Vconsole_class_list.
	* tooltalk.c (Ftooltalk_pattern_plist_get):
	Use Fcopy_list() in this file.

2021-01-11  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Frequire):
	Document workarounds that avoid the compile-time evaluation of a
	top-level #'require form.

2020-11-29  Aidan Kehoe  <kehoea@parhasard.net>

	Be more careful about the encoding of text from strsignal().

	* sysdep.c:
	Declare the XEmacs-provided sys_siglists as arrays of Ascbyte *,
	emphasising that we don't plan to put any non-ASCII into them.
	* sysdep.c (strsignal):
	If using one of our sys_siglist, do an ASSERT_ASCTEXT_ASCII() so
	we're certain our coding system handling is sane.
	* syssignal.h:
	Declare strsignal() as extern.
	Provide a Qstrsignal_encoding, equivalent to Qnative if we have a
	system-provided strsignal() or a system-provided sys_siglist[],
	equivalent to Qbinary otherwise.
	* text.h:
	* text.h (GET_STRSIGNAL):
	Use Qstrsignal_encoding here.

2020-11-25  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	Include an entry here for HAVE_STRSIGNAL.
	* text.h:
	Provide a GET_STRSIGNAL macro here, on the model of GET_STRERROR,
	creating a stack-allocated internal format string corresponding
	to a given signal number.
	* process-unix.c (unix_reap_exited_processes):
	Use GET_STRSIGNAL().
	* process.c:
	Remove signal_name(), which duplicates strsignal().
	* process.c (update_process_status):
	Use GET_STRSIGNAL().
	* process.c (status_message):
	Use GET_STRSIGNAL().
	* process.h:
	Remove the declaration for signal_name().
	* sysdep.c:
	* sysdep.c (wait_for_termination):
	Use GET_STRSIGNAL(), copy it to the heap for synch_process_death.
	* sysdep.c (strsignal):
	Implement strsignal() in terms of sys_siglist[] for those systems
	without strsignal().
	* syssignal.h:
	Don't force sys_siglist[] to be declared.

2020-11-24  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (map_keymap_mapper):
	Revert to passing one-character keysyms to Lisp as symbols from
	#'map-keymap, as we have since Lucid Emacs.

2020-11-24  Aidan Kehoe  <kehoea@parhasard.net>

	* line-number.c (get_nearest_line_number):
	Avoid a crash with error checking turned on, ignore detached
	extents here (they mean the relevant text has been deleted).

2020-11-24  Aidan Kehoe  <kehoea@parhasard.net>

	Move a couple more functions from C to Lisp.
	* cmds.c:
	* cmds.c (Fpoint_at_eol):
	Document difficulty implementing #'point-at-bol in terms of
	#'point-of-eol.
	* cmds.c (Fdelete_backward_char): Move this to simple.el, its lisp
	implementation is trivial.
	* device.c:
	Move Fget_device to device.el, its Lisp implementation is trivial.

2020-11-17  Aidan Kehoe  <kehoea@parhasard.net>

	* event-gtk.c (gtk_event_to_emacs_event):
	Update one of the comments here.
	* events.c (Fmake_event):
	Call canonicalize_keysym() here, let it error if KEYSYM is not
	specified, or if it is inappropriate as a keysym.
	* events.c (format_event_object):
	Print an event's keysym (and modifiers) in its canonical form,
	hopefully making life a little easier for coders.
	* keymap.c:
	* keymap.c (make_key_description):
	When the Lisp_Key_Data's keysym is a character, print it as such,
	not as a symbol, since this is the canonical form and printing it
	as a symbol brings very little.
	No longer take a PRETTIFY arg.
	* keymap.c (canonicalize_keysym): New.
	Renamed from define_key_check_and_coerce_keysym().
	Return the canonical form of the keysym, take a MODIFIERS_INOUT
	pointer argument and update that if needed as was done previously.
	* keymap.c (Fcanonicalize_keysym):
	Make it available to Lisp. Take any modifiers if the keysym is
	supplied as a list.
	* keymap.c (define_key_parser):
	Call the new name of canonicalize_keysym().
	* keymap.c (Fdefine_key):
	* keymap.c (remap_command):
	* keymap.c (map_keymap_mapper):
	* keymap.c (accessible_keymaps_mapper_1):
	* keymap.c (Faccessible_keymaps):
	* keymap.c (raw_keys_to_keys):
	Call make_key_description() with its new calling convention in
	these functions.
	* keymap.c (syms_of_keymap):
	Make Fcanonicalize_keysym() available as a Lisp subr.
	* lisp.h:
	Make canonicalize_keysym() available to other files.

2020-11-03  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c:
	Revert the previous change to the docstring here, no need to
	rename FORMAT to FERMAT.
	* doprnt.c (emacs_doprnt):
	When supplied a non-char non-char-int, give a wrong type argument
	with the Qchar_or_char_int_p predicate.
	* general-slots.h:
	Add Qchar_or_char_int_p to these slots.

2020-10-29  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (Fset_window_start):
	If WINDOW is Qnil, don't pass it to set_window_start(), pass the
	result of decode_window() instead.

2020-10-29  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (get_doprnt_c_args):
	If a field width or precision was specified as an argument, read
	it from the args as an int. This means both those things work with
	C arguments and write_fmt_string().
	(emacs_doprnt): When the argument to '*' is not supplied as a
	Lisp_Object, read it from arg.l.

2020-10-26  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (set_window_start):
	Call set_marker_byte_position_restricted() within this,
	#'set-window-start always restricted its position arguments to the
	visible region.
	(Fset_window_start): Do this restriction within the
	get_buffer_pos_byte() call here too, using the GB_COERCE_RANGE
	flag to the call.

2020-10-21  Aidan Kehoe  <kehoea@parhasard.net>

	* line-number.c:
	Update some documentation here, LINE_NUMBER_RING_SIZE as 8 is
	fine, as is LINE_NUMBER_FAR as 2730.
	* line-number.c (insert_adjust_line_number_cache):
	Update this to compile as C++.

2020-10-20  Aidan Kehoe  <kehoea@parhasard.net>

	Rename insert_invalidate_line_number_cache() to
	insert_adjust_line_number_cache(). Revise it to preserve cache
	info if a short insertion contains one, and only one, newline.

	* insdel.c (buffer_insert_string_1):
	Call the function using the new name.
	* line-number.c:
	Update the docstring.
	* line-number.c (insert_adjust_line_number_cache):
	Revise this function.
	* line-number.h:
	Update its declaration.

2020-10-20  Aidan Kehoe  <kehoea@parhasard.net>

	* line-number.c:
	Update LINE_NUMBER_FAR to an empirically-discovered value that
	gives much the same performance for the non-cache vs. cache
	cases.

2020-10-20  Aidan Kehoe  <kehoea@parhasard.net>

	Move line-number.c to caching buffer positions as zero-length
	extents, avoiding issues with Finsert_before_markers().

	* line-number.c:
	* line-number.c (invalidate_line_number_cache):
	Manipulate the cached position as a zero-length extent.
	* line-number.c (get_nearest_line_number):
	Ditto.
	* line-number.c (add_position_to_cache):
	Ditto.
	* line-number.c (buffer_line_number):
	Change the declaration of this in passing to return a Charcount, a
	more correct type for a line number.
	* line-number.h (buffer_line_number):
	Ditto.
	* line-number.c (add_position_to_cache): Call
	set_extent_endpoints() here, so the stack of extents is kept
	current--set_extent_{start,end} don't do this.

2020-10-20  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (Fpos_visible_in_window_p):
	Pass GB_NO_ERROR_IF_BAD to get_buffer_pos_byte() here, previous to
	my f9b4cee0d743 of July this function never errored on invalid
	fixnum positions, and that behaviour should continue.

2020-10-19  Aidan Kehoe  <kehoea@parhasard.net>

	Make vertical scrollbars function in terms of lines, now we have
	the line number cache.

	* line-number.c:
	Document that the line number cache is now turned on if you have a
	vertical scroll bar.
	* line-number.c (allocate_line_number_cache):
	Correct a spelling in the docstring for this function.

	* scrollbar.c:
	* scrollbar.c (scrollbar_point):
	Update this to return the corresponding Bytebpos, not the
	Charbpos, saving some char-byte conversion for our callers.

	* scrollbar.c (update_scrollbar_instance):
	Use window_displayed_height() to get a (rough) number of lines
	displayed in the window for new_slider_size, and then
	buffer_line_number() for the position of scrollbar_point () and
	the position of the end of the visible portion of the buffer.
	
	* scrollbar.c (Fscrollbar_vertical_drag):
	Call set_window_start() with a Bytebpos here, rather than
	Fset_window_start()..

	* window.c:
	* window.c (set_window_start): New.
	Move the bulk of Fset_window_start() here, but take the new buffer
	position as a Bytebpos, which saves some byte-char conversion with
	Fscrollbar_vertical_drag().
	* window.c (Fset_window_start):
	Delegate the bulk of this to set_window_start().
	* window.c (Fwindow_dedicated_p):
	* window.h:
	Add a declaration for set_window_start() here.

2020-10-13  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (redisplay_window):
	Correct some byte-char confusion in this, vmotion() takes a Bytebpos.
	* scrollbar.c (Fscrollbar_page_up):
	Correct some byte-char confusion in this, just call
	Fvertical_motion() directly, rather than breaking it out into
	vmotion() and Fset_window_point().

2020-10-05  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (point_in_line_start_cache):
	Update this to compare line_start_cache_start() against
	BYTE_BUF_BEGV() (rather than BUF_BEGV()), similarly for
	line_start_cache_end() and BYTE_BUF_ZV(). Obviously correct, and
	fixes a performance issue for me.

2020-10-03  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (set_window_point):
	Revise this to fix the build, B needs to be declared outside of
	ERROR_CHECK_ANY.

2020-10-03  Aidan Kehoe  <kehoea@parhasard.net>

	Take up to #xFFFF repetitions when using the \{N,M\} regexp
	repetition syntax. Document this, error when supplied repetition
	numbers beyond that.

	* regex.c:
	* regex.c (EXTRACT_NUMBER):
	* regex.c (EXTRACT_NUMBER_AND_INCR):
	Revise these to always use the static function implementations
	(which will be inlined if and when optimization is turned on).
	* regex.c (EXTRACT_NONNEGATIVE): New.
	* regex.c (EXTRACT_NONNEGATIVE_AND_INCR): New.
	Like the corresponding EXTRACT_NUMBER() macros, but never return a
	negative number.
	Document why these are implemented while GNU doesn't.

	* regex.c (print_partial_compiled_pattern):
	Declare P as an re_char.
	* regex.c (re_error_msgid):
	Add an entry for REG_ESIZEBR here.
	* regex.c (BAD_INTERVAL):
	Take the error number as an argument to this macro.

	* regex.c (regex_compile):
	Cast the arguments to unified_range_table_{nentries,get_range} as
	appropriate.
	* regex.c (re_compile_fastmap):
	Use EXTRACT_NONNEGATIVE_AND_INCR() when processing succeed_n here,
	mostly for consistency.

	* regex.c (re_match_2_internal):
	Declare PEND as a re_char *; keep P as an unsigned char *, since
	it is repeatedly modified.
	* regex.c (group_match_null_string_p):
	Update this to declare P and END as re_char ** and re_char *,
	respectively.
	* regex.c (alt_match_null_string_p):
	Update this to declare P and END as re_char *.
	* regex.c (common_op_match_null_string_p):
	Update this to declare P and END as re_char ** and re_char *,
	respectively. 
	* regex.h:
	Document RE_DUP_MAX in this header, declare it explicitly as 0xFFFF.
	* regex.h (enum):
	Add an entry for N or M too beg in \{n,m\} in the reg_errcode_t
	enum.

2020-10-02  Aidan Kehoe  <kehoea@parhasard.net>

	Use Bytebpos values in the line start cache, not Charbpos, making
	scrolling cheaper and bringing us a step closer to eliminating
	significant byte-char conversion in redisplay.

	* indent.c:
	* indent.c (vmotion_1):
	As well as taking ORIG as a Bytebpos value and returning a
	Bytebpos value, take VTARGET and RET_VPOS as Charcount and pointer
	to Charcount values respectively, since they are line numbers.

	* indent.c (vmotion):
	Update this to return a Bytebpos, to take ORIG as a Bytebpos, and
	to take VTARGET as a Charcount and RET_VPOS as a Charcount *.

	* indent.c (vertical_motion_1):
	Make PIXELS into a Boolint in this function's arguments; implement
	it dealing with buffer byte positions rather than character
	positions.
	Use PIXVALUE if returning pixels, VALUE if returning line numbers.

	* indent.c (vmotion_pixels):
	Change this to deal with byte buffer positions, not characters.

	* indent.c (Fvertical_motion_pixels):
	Ditto.

	* lisp.h:
	Update the declarations for vmotion(), vmotion_pixels() to reflect
	that the line start cache operates in Bytebpos values.
	
	* redisplay.c:
	Revise the declaration of update_line_start_cache() here.
	* redisplay.c (generate_display_line):
	Adjust the calculation of dl->end_charpos here to take dl->offset
	into account. 
	* redisplay.c (create_text_block):
	* redisplay.c (create_string_text_block):
	* redisplay.c (generate_string_display_line):
	* redisplay.c (regenerate_window_extents_only_changed):
	Use set_marker_byte_position_restricted() in this function.
	* redisplay.c (regenerate_window_point_center):
	Update this to use the Bytebpos-oriented
	start_with_line_at_pixpos() function.
	* redisplay.c (redisplay_window):
	Update the line start cache using the relevant byte, not
	character, positions.
	* redisplay.c (update_internal_cache_list):
	Add Bytebpos-oriented line start cache entries here.
	* redisplay.c (line_start_cache_start):
	Update this to return a Bytebpos, not a Charbpos.
	* redisplay.c (line_start_cache_end):
	Ditto.
	* redisplay.c (point_in_line_start_cache):
	Update this to take POINT as a Bytebpos.
	* redisplay.c (start_end_of_last_line):
	Update this to use byte_find_next_newline_no_quit(), rather than
	its more expensive, character-oriented equivalent.
	* redisplay.c (start_of_last_line):
	* redisplay.c (end_of_last_line):
	* redisplay.c (end_of_last_line_may_error):
	Take Bytebpos STARTP arguments in this three functions, return a
	Bytebpos in all three.
	* redisplay.c (point_would_be_visible):
	Take byte oriented STARTP and POINT arguments, take PARTIALLY as a
	Boolint, return a Boolint.
	* redisplay.c (start_with_point_on_display_line):
	Revise to take POINT as a Bytebpos and to return a Bytebpos.
	* redisplay.c (start_with_line_at_pixpos):
	Ditto.
	* redisplay.c (update_line_start_cache):
	Revise this to take FROM and TO as Bytebpos rather than Charbpos
	values.
	* redisplay.c (pixel_to_glyph_translation):
	Revise call to end_of_last_line_may_error() to use a marker byte
	position.
	* redisplay.h (struct line_start_cache):
	Revise this to use Bytebpos START, END values.
	* redisplay.h:
	Revise declarations of start_of_last_line(), end_of_last_line(),
	start_with_line_at_pixpos(), start_with_point_on_display_line() to
	use Bytebpos STARTP and POINT values.
	* window.c (Fwindow_end):
	Revise this to reflect that end_of_last_line() now takes a
	Bytebpos STARTP argument.
	* window.c (set_window_point):
	Use set_marker_byte_position_restricted() here rather than
	re-implementing it. 
	* window.c (Fdelete_other_windows):
	Call start_with_line_at_pixpos() with its new calling convention.
	* window.c (Fset_window_buffer):
	Call set_marker_byte_position_restricted() here, rather than
	re-implementing it.
	* window.c (window_scroll):
	Call vmotion() with its new calling convention. 
	* window.c (Fcenter_to_window_line):
	Call start_with_point_on_display_line(),
	start_with_line_at_pixpos() with their new calling conventions.
	* window.c (Fmove_to_window_line):
	Revise to take the new calling convention for vmotion() into
	account.

2020-10-02  Aidan Kehoe  <kehoea@parhasard.net>

	* marker.c (set_marker_byte_position_restricted): New.
	Like set_marker_restricted(), but take a byte rather than a
	character position. Perform error checking analagous to
	set_marker_byte_position() when ERROR_CHECK_STRUCTURES is defined.
	* lisp.h: Declare it.

2020-08-01  Aidan Kehoe  <kehoea@parhasard.net>

	Add set_window_point, which is like Fset_window_point() but
	doesn't call Fgoto_char() with the selected window, and takes a
	Bytebpos POS, avoiding byte-char conversion overhead.

	* buffer.c (set_buffer_internal):
	Call set_window_point() from this function rather than
	Fset_window_point().
	* scrollbar.c (scrollbar_reset_cursor):
	Revise this to take a Bytebpos ORIG_PT, avoiding needless
	byte-char conversion.
	* scrollbar.c (Fscrollbar_to_top):
	Avoid needless byte-char conversion in this function.
	* scrollbar.c (Fscrollbar_to_bottom):
	Ditto.
	* scrollbar.c (Fscrollbar_vertical_drag):
	Ditto. Error when the car of VALUE is not a window, rather than
	leaving that to Fwindow_point().
	* window.c (set_window_point): New.
	Like Fset_window_point(), but don't special-case the selected
	window and the current buffer.
	* window.c (Fset_window_point):
	Use it.
	* window.c (Fmove_to_window_line):
	Use it. Declare VPOS, the result of vmotion(), as a Charbpos.
	* window.h:
	Declare set_window_point().

2020-08-01  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (readchar):
	When reading from a buffer, avoid needless char-byte conversion in
	the same way as when reading from a marker, no need to call the C
	function charbpos_to_bytebpos() for every character read.

2020-07-25  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (point_would_be_visible):
	Make this take a Bytebpos startp and point, which is cheaper for
	our callers.
	* redisplay.h: Adjust the declaration of
	point_would_be_visible().
	* scrollbar.c (scrollbar_reset_cursor):
	Use the new calling convention of point_would_be_visible(),
	minimise byte-char conversion in this function.
	* scrollbar.c (specifier_vars_of_scrollbar):
	In passing, make the initialisation of Vscrollbar_width a bit more
	maintainable.
	* window.c (Fpos_visible_in_window_p):
	Ditto.
	* window.c (Fset_window_point):
	Leave the type checking of POS to #'goto-char,
	set_marker_restricted(), in passing avoiding needless byte-char
	conversion.
	* window.c (Fset_window_point):
	Ditto.
	* window.c (Fselect_window):
	No need for char->byte conversion when setting the old selected
	window's point marker.
	If restricting the new byte position, avoid char->byte conversion
	completely.
	Otherwise, just do byte->char conversion for setting point, it's
	not needed to get the marker character position before doing
	that.
	* window.c (window_scroll):
	Drop a useless call to marker_position() on the point marker of
	the window.
	Access the relevant point value as a marker, rather than a fixnum,
	creating a new marker that minority of times that point is outside
	of the accessible region.
	Use the new calling convention for marker_byte_position().
	* window.c (Fmove_to_window_line):
	Minimise calls to marker_position() in this function.

2020-07-21  Aidan Kehoe  <kehoea@parhasard.net>

	* buffer.c (Fline_number):
	* editfns.c (Fchar_after):
	* editfns.c (Fchar_before):
	Use the new GB_ALLOW_NIL flag to get_buffer_pos_byte () in these
	functions.
	* text.c:
	Document GB_ALLOW_NIL when the result is not oriented towards
	buffer ranges.
	* text.c (get_buffer_pos_char):
	* text.c (get_buffer_pos_byte):
	Implement this change, so GB_ALLOW_NIL means to return the
	position of point in get_buffer_pos_{char,byte}.

2020-07-12  Aidan Kehoe  <kehoea@parhasard.net>

	* sequence.c (Fmapconcat):
	Update and correct the documentation of the allowed types of
	SEPARATOR and SEQUENCES.

2020-07-11  Alan Mackenzie  <acm@muc.de>

	Make Fscan_sexps respect syntax-table properties on putative
	terminating quotes whilst scanning strings (both directions).

	* syntax.c (scan_lists): New variables temp_code (forward),
	temp_code2 (backward) used to hold the syntax-table property of
	the current character and checking this when that character is a
	string quote.

2020-07-11  Alan Mackenzie  <acm@muc.de>

	Fix the value returned by Fforward_line.

	* cmds.c (Fforward_line): Negate the value returned by
	byte_beginning_of_line_p.

2020-07-11  Alan Mackenzie  <acm@muc.de>

	Prevent update_syntax_cache from accessing buffer parts outside
	the accessible region.  Do the same for Fextent_at, etc.

	* extents.c (Fextent_at, Fextents_at, get_char_property_char):
	Respect AT-FLAG and accessible region when accessing a buffer.

	* lisp.h (GB_NEED_CHAR_BEFORE. GB_NEED_CHAR_AFTER): New flags.

	* text.c: (get_buffer_pos_char, get_string_pos_char_1): Fix
	off-by-one's in determining the accessible portion of a buffer.

	* syntax.c (update_syntax_cache): Check POS is not right up
	against POINT-MAX before setting TMP_TABLE from POS.

2020-03-31  Aidan Kehoe  <kehoea@parhasard.net>

	* ExternalShell.c:
	Now we use emacs_snprintf_ascbyte(), #include lisp.h in this
	file. Thank you Andrï¿½s Ramï¿½rez.

2020-03-28  Aidan Kehoe  <kehoea@parhasard.net>

	* event-msw.c (Fdde_alloc_advise_item):
	Correct a bug here, NUM is the counter for the token, not NAME.
	* redisplay-tty.c (term_get_fkeys_1):
	Correct a bug here, intern_istring() doesn't accept Qnil as the
	package name.

2020-03-28  Aidan Kehoe  <kehoea@parhasard.net>

	Don't reimplement linked lists for timeouts, event-gtk.c, event-Xt.c.

	* data.c:
	Move the LISP_INTEGER_TO_C_TYPE(), C_TYPE_TO_LISP_INTEGER(),
	DEFINE_C_INTEGER_TYPE_LISP_CONVERSION() macros to number.h.

	* event-Xt.c:
	* event-Xt.c (Xt_timeout_callback):
	* event-Xt.c (emacs_Xt_add_timeout):
	* event-Xt.c (emacs_Xt_remove_timeout):
	* event-Xt.c (Xt_timeout_to_emacs_event):
	* event-Xt.c (emacs_Xt_next_event):
	* event-Xt.c (reinit_vars_of_event_Xt):
	* event-Xt.c (vars_of_event_Xt):
	* event-Xt.c (init_event_Xt_late):
	pending_timeouts, completed_timeouts were just linked lists. No
	need for a specialised structure implementation and memory
	allocation blocktype, use Lisp lists, Fcons(), and
	LIST_LOOP_DELETE_IF().
	The one thing that required Xt-specific code was the Lisp
	representation of an XtIntervalId; make this available and robust
	using DEFINE_C_INTEGER_TYPE_LISP_CONVERSION().
	
	* event-gtk.c:
	* event-gtk.c (gtk_timeout_callback):
	* event-gtk.c (emacs_gtk_add_timeout):
	* event-gtk.c (emacs_gtk_remove_timeout):
	* event-gtk.c (gtk_timeout_to_emacs_event):
	* event-gtk.c (emacs_gtk_next_event):
	* event-gtk.c (reinit_vars_of_event_gtk):
	* event-gtk.c (init_event_gtk_late):
	* event-gtk.c (vars_of_event_gtk):
	Same approach as with event-Xt.c, move to Lisp lists rather than
	rolling our own linked list implementation.
	
	* event-stream.c (event_stream_add_timeout):
	* event-stream.c (event_stream_remove_timeout):
	* event-stream.c (event_stream_resignal_wakeup):
	* event-stream.c (event_stream_force_event_pending):
	Revise the types of all these functions to use an EMACS_INT as the
	platform-specific interval ID, which is wide enough to store a
	pointer.
	
	* event-tty.c (emacs_tty_add_timeout):
	* event-tty.c (emacs_tty_remove_timeout):
	Ditto.

	* events.h:
	* events.h (struct event_stream):
	* events.h (struct Lisp_Timeout_Data):
	* events.h (struct Lisp_Timeout):
	Move types for platform-specific interval IDs here to being
	EMACS_INT (guaranteed big enough to hold a pointer) rather than int.

	* number.h:
	Move the LISP_INTEGER_TO_C_TYPE(), C_TYPE_TO_LISP_INTEGER(),
	DEFINE_C_INTEGER_TYPE_LISP_CONVERSION() macros here from data.c.

2020-03-28  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c (regex_compile):
	Add support for named non-shy ("explicitly numbered") groups.
	Explicitly use bufp->re_ngroups for the saved group info, making
	it clearer that the saved group number is the internal group
	number.
	* regex.c (re_match_2_internal):
	There can now be gaps in the external_to_internal_register map
	array; check for these when erroring with non-existing register
	references and when translating from internal to external
	registers after a successful match.
	* regex.h (struct re_pattern_buffer):
	Update the documentation of re_nsub, re_ngroups.
	* search.c (match_limit):
	Revise this to use check_integer_range() rather than
	re-implementing it.

2020-03-24  Aidan Kehoe  <kehoea@parhasard.net>

	Don't reimplement linked lists, struct expose_ignore.

	* frame-impl.h (struct frame):
	Move subwindow_exposures, subwindow_exposures_tail to
	frameslots.h, now they are Lisp_Objects.
	* frame.c:
	* frame.c (expose_ignore_description): Removed.
	* frame.c (allocate_frame_core):
	No need to initialize subwindow_exposures,
	subwindow_exposures_tail explicitly, now they are in
	frameslots.h.
	* frame.c (compute_frame_usage):
	Do an explicit loop through the subwindow_exposures Lisp list
	rather than re-implementing this.
	* frame.c (syms_of_frame):
	Always make the expose_ignore Lisp_Object available.
	* frameslots.h:
	Move subwindow_exposures, subwindow_exposure_tail here from
	frame-impl.h, now they're Lisp_Objects.
	* glyphs.h:
	* glyphs.h (struct expose_ignore):
	Update this declaration, there's no need for a NEXT slot, and the
	header is needed even when non-NEW_GC.
	* glyphs.c (check_for_ignored_expose):
	Do a normal Lisp LIST_LOOP_3 rather than re-implementing a linked
	list.
	* glyphs.c (register_ignored_expose):
	subwindow_exposures is now a normal Lisp list, implement this
	function using our normal Lisp list infrastructure rather than
	re-implementing it.
	* glyphs.c (vars_of_glyphs):
	No need for an expose_ignore_blocktype in this function.

2020-03-22  Aidan Kehoe  <kehoea@parhasard.net>

	* emacs.c (main_1):
	* lstream.c (Lstream_new):
	* lstream.c (vars_of_lstream):
	* symsinit.h:
	Drop reinit_vars_of_lstream() completely. Call staticpro_nodump()
	dynamically, at the point the lstream lcrecord_lists are created
	instead, which avoids an order-of-execution problem with very
	early calls to Lstream_new() and the old GC.

2020-03-22  Aidan Kehoe  <kehoea@parhasard.net>

	1. Switch away from sprintf(3) in the C code as much as possible,
	given that it doesn't do bounds checking and we have
	emacs_snprintf{_ascbyte} as core XEmacs code.

	2. Use write_external_fmt_string_va() in the glyphs error handling
	code now it's available.

	* ExternalShell.c (GetGeometry):
	Use emacs_snprintf_ascbyte() here.
	* alloc.c (object_memory_usage_stats):
	Ditto.
	* bytecode.c (assert_failed_with_remembered_ops):
	Ditto.
	* bytecode.c (UNUSED):
	Ditto.	
	* bytecode.c (init_opcode_table_multi_op):
	Ditto.	
	* console-msw.c (GetConsoleHwnd):
	Ditto.
	* data.c (DEFINE_C_INTEGER_TYPE_LISP_CONVERSION):
	Correct a spelling in this macro.
	* device-gtk.c (gtk_init_device):
	Use emacs_snprintf_ascbyte() here.
	* device-gtk.c (vars_of_device_gtk):
	Use emacs_sprintf_string() instead of qxesprintf() when
	constructing Vgtk_version.
	* device-msw.c (sync_printer_with_devmode):
	Use emacs_sprintf_string() instead of qxesprintf() when
	constructing the device connection Lisp string.
	* device-x.c (get_device_from_display):
	Be more careful about character types in this function,
	stderr_out() now takes Ibyte *s.
	* device-x.c (coding_system_of_xrm_database):
	Be more careful about the coding system when interpreting the
	result of XrmLocaleOfDatabase().
	* device-x.c (have_xemacs_resources_in_xrdb):
	Be a bit more careful about character types in this function.
	* device-x.c (x_init_device):
	Be more careful about character types and the file name coding
	system in this function. Use memcpy() when appropriate,
	emacs_snprintf() when not, when constructing strings to pass to
	the X11 functions.
	* device-x.c (x_error_handler):
	Be more careful about character types passed to stderr_out().
	* device-x.c (signal_if_x_error):
	Use emacs_sprintf_string() instead of qxesprintf with
	build_istring().
	Use emacs_snprintf_ascbyte() to construct a string to pass to
	XGetErrorDatabaseText().
	* device-x.c (x_IO_error_handler):
	Be a bit more careful about the types passed to stderr_out().
	* dialog-x.c (dbox_descriptor_to_widget_value):
	Use emacs_snprintf_ascbyte() instead of sprintf() + xstrdup().
	* dired-msw.c (mswindows_format_file):
	Use emacs_snprintf() instead of sprintf().
	* editfns.c (get_home_directory):
	Use emacs_asprintf() instead of qxesprintf() + xnew_ibytes().
	* editfns.c (Fcurrent_time_zone):
	Use emacs_sprintf_string() instead of qxesprintf() + build_istring().
	* emacs.c (guts_of_fatal_error_signal):
	Remove some long-obsolete Sun-specific code.
	* esd.c (esd_play_sound_data):
	Replace sprintf() with emacs_snprintf().
	* eval.c (safe_run_hook_trapping_problems):
	Replace qxesprintf() with emacs_snprintf().
	* eval.c (run_hook_with_args_in_buffer_trapping_problems):
	Ditto.
	* event-Xt.c (x_keysym_to_emacs_keysym):
	Replace sprintf() with emacs_snprintf().
	* extents.c (print_extent_1):
	Replace sprintf() with emacs_snprintf_ascbyte().
	* fileio.c (lisp_strerror):
	Replace qxesprintf() and build_istring() with emacs_sprintf_string().
	* filelock.c (lock_file_1):
	Replace qxesprintf() with emacs_snprintf().
	* filelock.c (lock_file):
	Replace qxesprintf() and build_istring() with emacs_sprintf_string().
	* fontcolor-msw.c (mswindows_color_to_string):
	Replace sprintf() and build_ascstring() with emacs_sprintf_string().
	* fontcolor-msw.c (font_enum_callback_2):
	Replace qxesprintf() with emacs_snprintf().
	* fontcolor-msw.c (create_hfont_from_font_spec):
	Ditto.
	* fontcolor-x.c (truename_via_random_props):
	Replace sprintf() with emacs_snprintf(), be more careful about
	character types.
	* frame-gtk.c (Fgtk_window_id):
	Used emacs_sprintf_string() instead of sprintf() with
	build_ascstring().
	* frame-msw.c (mswindows_window_id):
	Ditto.
	* frame-x.c (color_to_string):
	Replace qxesprintf() and build_istring() with
	emacs_sprintf_string().
	* frame-x.c (x_set_initial_frame_size):
	Replace sprintf with emacs_snprintf_ascbyte().
	* frame-x.c (Fx_window_id):
	Replace qxesprintf() and build_istring() with
	emacs_sprintf_string().
	* glyphs-eimage.c (struct tiff_error_struct):
	No longer needed, we just throw a Lisp error ourselves rather than
	longjmp()ing to a place that throws a Lisp error (so no jmp_buf
	needed) and we construct the error message as a Lisp string using
	write_external_fmt_string_va (). 

	* glyphs-eimage.c (tiff_error_func):
	See just above.

	* glyphs-eimage.c (tiff_warning_func):
	Use write_external_fmt_string_va() in this function.

	* glyphs-gtk.c (gtk_xpm_instantiate):
	Replace xnew_ascbytes() and sprintf() with emacs_asprintf ().
	* gtk-xemacs.c (xemacs_gtk_convert_color):
	Replace sprintf() and build_cistring() with emacs_sprintf_string ().
	* input-method-xlib.c (DefaultXIMStyles):
	Make this into a #define, to make it easier for the compiler to
	optimise away strlen() calls 
	* input-method-xlib.c (EmacsXtCvtStringToXIMStyles):

	* input-method-xlib.c (describe_Window):
	Use emacs_snprintf_ascbyte() instead of sprintf() here.
	* keymap.c (Ftext_char_description):
	Use emacs_snprintf() instead of qxesprintf ().
	Use emacs_snprintf("%08X" ...) and emacs_snprintf ("%04X" ...)
	instead of reimplementing these.

	* sound.h:
	* sound.h (sound_warn):
	* libsst.c:
	* libsst.c (dial;):
	* linuxplay.c (audio_init):
	* linuxplay.c (linux_play_data_or_file):
	* sunplay.c (init_device):
	* sunplay.c (play_sound_file):
	* sunplay.c (play_sound_data):
	Switch to emacs_snprintf() in the sound code, use warn_when_safe()
	for sound_warn(); all the strings can be represented in internal
	format without trouble.

	* md5.c (Fmd5):
	Use emacs_sprintf_string() rather than sprintf() with make_string().
	* mule-charset.c (make_charset):
	Ditto.
	* number-gmp.c (bigfloat_to_string):
	Use emacs_snprintf_ascbyte() when constructing scientific
	notation.
	* process-unix.c (allocate_pty_the_old_fashioned_way):
	Use emacs_snprintf() rather than qxesprintf().
	* print.c (printing_major_badness): 
	Ditto.
	* process.c (init_xemacs_process):
	Use emacs_sprintf_string() rather than alloca_ibytes() with
	qxesprintf(), build_istring().

	* redisplay-tty.c (term_get_fkeys_1):
	Use emacs_sprintf_string() rather than sprintf().

	* scrollbar-x.c (x_create_scrollbar_instance):
	Use emacs_asprintf() rather than sprintf() with xstrdup().
	* scrollbar-x.h (struct x_scrollbar_data):
	Document the scrollbar name as internal format.

	* sheap.c (report_sheap_usage):
	Use emacs_snprintf() in this function rather than sprintf().
	* strftime.c (add_num_time_t):
	Ditto.

	* tooltalk.c (tt_opnum_string):
	Use emacs_sprintf_string() rather than sprintf() +
	build_ascstring().
	* tooltalk.c (tt_message_arg_ival_string):
	Size BUF more clearly for the fixnum_to_string() call.

	* tooltalk.c (tt_message_arg_bval_vector):
	Mule-ize this function in passing.

	* unicode.c (allocate_jit_ucs_charset):
	Use Fintern (emacs_sprintf_string(...)) rather than sprintf() +
	intern().

2020-03-22  Aidan Kehoe  <kehoea@parhasard.net>

	Add write_external_fmt_string_va(), emacs_snprintf_ascbyte().

	* doprnt.c:
	* doprnt.c (write_external_fmt_string_va): New.
	Like write_fmt_string_va(), but takes CODESYS, a coding system
	describing the encoding the format string and any string arguments
	within VARGS.
	* doprnt.c (emacs_vsnprintf_ascbyte): New.
	Like emacs_vsnprintf(), but force ASCII digits for integer format
	specs, and with assertions turned on, assert that the input and
	the output are all ASCII.
	* doprnt.c (emacs_snprintf_ascbyte): New.  Like emacs_snprintf(),
	but force ASCII digits for integer format specs, and with
	assertions turned on, assert that the input and the output are all
	ASCII.
	* doprnt.c (get_doprnt_c_args):
	Correct some indentation here in passing.
	* lisp.h:
	Declare the externally visible functions.

2020-03-22  Aidan Kehoe  <kehoea@parhasard.net>

	Generalise the reverse mapping from fixnum weights to characters,
	rather than hard-coding Vfixnum_to_majuscule_map,
	Vfixnum_to_minuscle_map, Vfixnum_to_majuscule_ascii.  Use this
	generalisation in doprnt.c.

	* lisp.h (get_radix_table_greatest_radix): New.
	* lisp.h (get_radix_table_fixnum_majuscule_map): New.
	* lisp.h (get_radix_table_fixnum_minuscule_map): New.
	Make these three inline functions available to the Lisp code,
	generalising Vfixnum_to_majuscule_map, Vfixnum_to_majuscule_ascii
	as above.
	
	* data.c:
	* data.c (fill_majuscule_char_vector): Renamed from
	fill_ichar_array(). 
	Revise this to save the data into a Lisp vector, to reduce the
	chance of leaking memory on interruption or error.
	* data.c (fill_minuscule_char_vector): New.
	Similar to fill_majuscule_char_vector(), but generate results that
	prefer lowercase characters, rather calling DOWNCASE() on the
	first result, which may have issues if the lowercase characters
	thus arrived at don't have fixnum weights.
	* data.c (build_fixnum_to_char_maps):
	Use the two mapping functions.
	Save the generated data into Vdigit_fixnum_calculated_data, a weak
	alist mapping from the char-table to the generated majuscule,
	minuscule, and greatest radix information.
	* data.c (Fset_digit_fixnum_map):
	Revise this to use get_radix_table_greatest_radix() rather than
	calling build_fixnum_to_char_map() explicitly. 
	* data.c (Fdigit_char_p):
	Be a bit more reasonable about checking the possible values for
	RADIX.
	* data.c (Fdigit_char):
	Ditto.
	* data.c (Fparse_integer):
	Ditto.
	* data.c (vars_of_data):
	Add Vdigit_fixnum_calculated_data here.
	Initialise it for Vdigit_fixnum_ascii, Vdigit_fixnum_map.

	* doprnt.c:
	Revise this file to use the get_radix_table_* functions; for the
	externally-visible functions (fixnum_to_string(), bignum_to_string
	(), ratio_to_string()), use the associated char-table object to
	indicate which mapping to use.

	* doprnt.c (UNSIGNED_TYPE_TO_STRING_GENERAL_1):
	* doprnt.c (fixnum_to_string):
	* doprnt.c (bignum_to_string):
	* doprnt.c (ratio_to_string):
	* doprnt.c (Fnumber_to_string):
	* doprnt.c (FIXNUM_SPEC_PREAMBLE_1):
	* doprnt.c (FIXNUM_SPEC_PREAMBLE):
	* doprnt.c (emacs_doprnt):
	Revise this to take a TABLE argument, usually Vdigit_fixnum_map,
	and to determine the appropriate fixnum to majuscule or fixnum to
	minuscule map depending on it.

	* doprnt.c (write_fmt_string_va):
	* doprnt.c (write_fmt_string_lisp_va):
	* doprnt.c (write_fmt_string_lisp):
	* doprnt.c (emacs_vsnprintf):
	* doprnt.c (format_into):
	Revise all these functions to pass the TABLE argument to
	emacs_doprnt().

	* redisplay.c (decode_mode_spec):
	Call fixnum_to_string() with its new calling convention.

	* tests.c (Ftest_fixnum_to_string):
	Ditto.

2020-03-18  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	Update the implementation of the INLINE_HEADER macro and,
	indirectly, the DECLARE_INLINE_HEADER() macro.
	Add some more documentation and explanation.
	Rename the confusingly-named DONT_EXTERN_INLINE_HEADER_FUNCTIONS
	define to FORCE_INLINE_FUNCTION_DEFINITION.
	* inline.c (FORCE_INLINE_FUNCTION_DEFINITION):
	Use this new name in this file.

2020-03-17  Aidan Kehoe  <kehoea@parhasard.net>

	Do just enough native Windows 64-bit bug fixing to get building
	and running on Cygwin.

	* console-msw-impl.h:
	Change the XWL_* defines to XWLP_ for consistency with the native
	code. Correct the extra byte count needed on allocation.
	
	* console-msw.h:
	mswindows_output_console_string() now returns a Bytecount, correct
	that.

	* dialog-msw.c (dialog_proc):
	Use qxeSetWindowLongPtr(), qxeGetWindowLongPtr() as appropriate in
	this function.
	
	* event-msw.c:
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (mswindows_find_frame):
	Use qxeGetWindowLongPtr() as appropriate in these functions.

	* frame-msw.c (mswindows_init_frame_1):
	Use qxeSetWindowLongPtr() as appropriate in this function.
	* frame-msw.c (mswindows_set_frame_icon):
	* frame-msw.c (mswindows_set_frame_pointer):
	Use qxeSetClassLongPtr() in these two functions as appropriate.

	* frame-msw.c (mswindows_get_mouse_position):
	* frame-msw.c (mswindows_get_frame_parent):
	Use qxeSetWindowLongPtr() as appropriate in these functions.
	
	* glyphs-msw.c (mswindows_subwindow_instantiate):
	* glyphs-msw.c (mswindows_widget_instantiate):
	Use qxeGetWindowLongPtr(), qxeSetWindowLongPtr() as appropriate in
	these functions.

	* scrollbar-msw.c (mswindows_create_scrollbar_instance):
	* scrollbar-msw.c (mswindows_free_scrollbar_instance):
	* scrollbar-msw.c (mswindows_handle_scrollbar_event):
	Ditto.

2020-03-17  Aidan Kehoe  <kehoea@parhasard.net>

	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.c (qxeGetClassLongPtr):
	* intl-auto-encap-win32.c (qxeGetWindowLongPtr):
	* intl-auto-encap-win32.c (qxeSetClassLongPtr):
	* intl-auto-encap-win32.c (qxeSetWindowLongPtr):
	* intl-auto-encap-win32.h:
	Make these four functions available to the XEmacs code, necessary
	for 64-bit support.

2020-01-02  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (uint32_t_to_lisp, lisp_to_uint32_t):
	* data.c (int32_t_to_lisp, lisp_to_int32_t):
	Rename these using the UINT_32_BIT, INT_32_BIT XEmacs #defines,
	generate them automatically using the
	DEFINE_C_INTEGER_TYPE_LISP_CONVERSION() macro further down in the
	file, for the sake of code consistency, and, all going well, code
	reliability.

	* lisp.h:
	Use their new names here when declaring them.
	* select-gtk.c (gtk_own_selection):
	* select-gtk.c (gtk_disown_selection):
	* select-x.c:
	* select-x.c (x_handle_selection_request):
	* select-x.c (x_handle_selection_clear):
	* select-x.c (x_disown_selection):
	* select-xlike-inc.c (selection_data_to_lisp_data):
	* select-xlike-inc.c (lisp_data_to_selection_data):
	Use the new names for these functions throughout the code.

2019-07-28  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (intern_istring):
	Correct an assertion here that didn't take into account
	case-insensitive packages, thank you Stephen!

2019-06-18  Aidan Kehoe  <kehoea@parhasard.net>

	* emacs.c (main_1):
	Avoid a bootstrapping problem on old-Mule if there are any
	non-ASCII, non-Latin-1 executable names in PATH.
	* lread.c (locate_file_without_hash):
	Make this non-static, for the sake of emacs.c.
	* lisp.h:
	Declare locate_file_without_hash().

2019-04-23  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (syms_of_elhash):
	staticpro() Vequalp_hash_table_test, necessary for interning into
	a hash table having test #'equalp to actually work.

2019-04-22  Aidan Kehoe  <kehoea@parhasard.net>

	* process.c (getenv_internal):
	* process.c (putenv_internal):
	Vprocess_environment is a Lisp-accessible list, use the
	EXTERNAL_LIST_LOOP macros to iterate through it, avoiding issues
	with circular lists.

2019-04-14  Aidan Kehoe  <kehoea@parhasard.net>

	* cmds.c (Fforward_char):
	Make this usually free in terms of calls to charbpos_to_bytebpos().
	* cmds.c (Fforward_line):
	Avoid needless char-byte conversion in this function.
	* cmds.c (Fpoint_at_bol):
	Ditto.
	* cmds.c (Fpoint_at_eol):
	Ditto.
	* lisp.h:
	Remove the declaration for find_before_next_newline(), no longer
	used.
	* search.c :
	Remove find_before_next_newline(), only called by Fpoint_at_eol(),
	which now includes the (very simple) implementation of f_b_n_n().

2019-04-14  Aidan Kehoe  <kehoea@parhasard.net>

	Get Stephen's last change compiling, fix a clear bug.
	* balloon_help.c:
	Make the types, macros from from lisp.h, device.h, console-x.h
	available here.
	Use the XEmacs Boolint rather than making a new boolean.
	* balloon_help.c (show_help):
	* balloon_help.c (balloon_help_create):
	Wrap the pointer to the device returned by
	get_device_from_display(), making it a Lisp_Object, as we want.
	* balloon_help.c (balloon_help_hide):
	* device-x.c (x_device_system_metrics):
	Declare the parameters to XGetGeometry using the documented types.
	Return the pixel size as intended, rather than falling through to
	the DM_size_device_mm case.
	* device.c:
	Move Qsize_device to general-slots.h.
	* frame-x.c (x_set_frame_position):
	DPY isn't used, removed it.
	* general-slots.h:
	Move Qsize_device here.
	* lisp.h:
	Declare Fdevice_system_metric(), now it's used in frame_x.c,
	balloon_help.c.

2019-04-02  Stephen J. Turnbull  <turnbull@sk.tsukuba.ac.jp>

	* device-x.c (x_device_system_metrics):
	Use geometry of root window to get pixel size of display, not the
	Display* macros.  The Xlib macros (and functions!) seem to cache
	old values, which gives wrong results on displays that can change
	size on the fly.

	* frame-x.c (x_set_frame_position):
	* balloon_help.c (balloon_help_create):
	Use Fdevice_system_metric for width and height in case screen size
	has changed.  Change "frame_[wh]" to "screen_[wh]".

2019-03-23  Jerry James  <james@xemacs.org>

	* array.h (XD_DYNARR_DESC,XD_LISP_DYNARR_DESC): fix segfaults when
	undumping Dynarrs on 64-bit big endian architectures.  When the type
	of the len_ element was changed in commit c5889f9bb7f4, the memory
	description was not changed to match.

2019-03-21  Jerry James  <james@xemacs.org>

	* data.c (lisp_to_OFF_T): fix conversion on 32-bit systems.
	The lack of parentheses led to the upper bound being computed as 0.

2019-03-21  Jerry James  <james@xemacs.org>

	* redisplay.c (redisplay_window): add a missing XFIXNUM.

2019-03-21  Aidan Kehoe  <kehoea@parhasard.net>

	Move several more functions, not loop hotspots and easily
	implemented in Lisp, from C to Lisp.

	* abbrev.c:
	* abbrev.c (syms_of_abbrev):
	* abbrev.c (vars_of_abbrev):
	Move Finsert_abbrev_table_description() to abbrev.el.
	* bytecode.c (UNUSED):
	Fend_of_line() no longer in C, use its implementation.
	* callint.c:
	* callint.c (Fcall_interactively):
	* callint.c (syms_of_callint):
	* callint.c (vars_of_callint):
	Move Fprefix_numeric_value() to cmdloop.el, call it using its
	symbol as needed.
	* cmds.c:
	* cmds.c (syms_of_cmds):
	Move Fbackward_char(), Fbeginning_of_line(), Fend_of_line() to
	simple.el.
	* data.c (syms_of_data):
	Move Farrayp(), Fsequencep(), Fnatnump(), Fnonnegativep() to
	subr.el.
	* device-x.c (syms_of_device_x):
	Move Fdefault_x_device() to x-misc.el.
	* doprnt.c:
	* doprnt.c (syms_of_doprnt):
	Move Fformat() to subr.el.
	* editfns.c:
	* editfns.c (syms_of_editfns):
	Move Fchar_equal(), Fstring_to_char(), Fchar_to_string() to subr.el
	* event-msw.c (mswindows_dde_callback):
	Call Fformat_into() here, now Fformat() is in Lisp.
	* fileio.c (Fcopy_file):
	Call Fstring() here, now Fchar_to_string() is in Lisp.
	* lisp.h:
	* lread.c (read0):
	Call Fstring() here, now Fchar_to_string() is in Lisp.
	* macros.c (Fend_kbd_macro):
	* macros.c (Fexecute_kbd_macro):
	Call #'prefix-numeric-value through its Lisp symbol here, now it's
	no longer in C.
	* scrollbar.c (scrollbar_reset_cursor):
	Fbeginning_of_line() no longer in C, use its implementation.
	* sunpro.c:
	Call Fformat_into() here, now Fformat() is in Lisp.	
	* window.c (window_scroll):
	* window.c (Fscroll_left):
	* window.c (Fscroll_right):
	* window.c (Fcenter_to_window_line):
	* window.c (Fmove_to_window_line):
	Call #'prefix-numeric-value through its Lisp symbol here, now it's
	no longer in C.

2019-03-27  Aidan Kehoe  <kehoea@parhasard.net>

	* dired.c:
	* dired.c (Fuser_name_completion):
	* dired.c (user_name_completion):
	* dired.c (syms_of_dired):
	Remove Fuser_name_completion_1(), return its CDR as the second
	value from Fuser_name_completion() instead.

2019-03-10  Aidan Kehoe  <kehoea@parhasard.net>

	Mechanically change byte_marker_position() to
	marker_byte_position(), the GNU name for the same function, in our
	C sources.
	Include set_byte_marker_position() -> set_marker_byte_position()
	in this for symmetry, despite that GNU doesn't use the latter
	name.
	* bytecode.c (bytecode_arithcompare):
	* bytecode.c (bytecode_gtr):
	* bytecode.c (bytecode_lss):
	* bytecode.c (bytecode_leq):
	* bytecode.c (bytecode_geq):
	* bytecode.c (bytecode_arithop):
	* callint.c (check_mark):
	* callint.c (callint_prompt):
	* data.c (ARITHCOMPARE_MANY):
	* data.c (Fmax):
	* data.c (Fmin):
	* editfns.c (region_limit):
	* editfns.c (Fpoint_min_marker):
	* editfns.c (Fpoint_max_marker):
	* editfns.c (save_restriction_save):
	* editfns.c (save_restriction_restore):
	* extents.h:
	* fileio.c:
	* fileio.c (restore_point_unwind):
	* line-number.c (invalidate_line_number_cache):
	* line-number.c (get_nearest_line_number):
	* line-number.c (add_position_to_cache):
	* lisp.h:
	* lread.c (readchar):
	* lread.c (unreadchar):
	* lstream.c (lisp_buffer_reader):
	* lstream.c (lisp_buffer_rewinder):
	* lstream.c (lisp_buffer_marker):
	* marker.c (set_byte_marker_position):
	* marker.c (byte_marker_position):
	* marker.c (copy_marker_1):
	* print.c (output_string):
	* redisplay-output.c (redisplay_move_cursor):
	* redisplay-output.c (redisplay_update_line):
	* redisplay-output.c (redisplay_output_window):
	* redisplay.c (generate_display_line):
	* redisplay.c (create_text_block):
	* redisplay.c (regenerate_window_extents_only_changed):
	* redisplay.c (redisplay_window):
	* redisplay.c (decode_mode_spec):
	* syntax.c (signal_syntax_cache_extent_changed):
	* text.c (get_buffer_pos_byte):
	* window.c (Fset_window_start):
	* window.c (unshow_buffer):
	* window.c (Fdelete_other_windows):
	* window.c (Fset_window_buffer):
	* window.c (window_scroll):
	* window.c (Fcenter_to_window_line):
	* window.c (Fmove_to_window_line):

2019-03-10  Aidan Kehoe  <kehoea@parhasard.net>

	Make the modiff, save_modiff, face_change, auto_save_modified
	buffer slots into EMACS_INTs.
	Supply and use an arithcompare function for all of them that pays
	attention to the fact that they wrap around.
	* buffer.c (Fbuffer_modified_tick):
	Caution regarding ordinal comparisons with the result of this
	function.
	Use make_integer, not make_fixnum, there is no guarantee a fixnum
	will have the bit width to represent the complete value.
	* buffer.c (Fbuffer_modified_p):
	* buffer.c (Fset_buffer_modified_p):
	* buffer.c (Fkill_buffer):
	Use buf_tick_arithcompare() in these functions.
	* buffer.h:
	* buffer.h (struct buffer_text):
	* buffer.h (struct buffer):
	Use EMACS_INT as appropriate in these structures.
	* buffer.h (buf_tick_arithcompare): New.
	Compare two buffer tick values, heuristically comparing for
	wraparound.
	* fileio.c (Fdo_auto_save):
	Use buf_tick_arithcompare() as appropriate.
	* filelock.c (unlock_all_files):
	* filelock.c (Flock_buffer):
	* filelock.c (Funlock_buffer):
	* filelock.c (unlock_buffer):
	Use buf_tick_arithcompare() as appropriate in these functions.
	* insdel.c (signal_before_change):
	* insdel.c (prepare_to_modify_buffer):
	Use buf_tick_arithcompare() as appropriate in this file.
	* redisplay.c (regenerate_window_extents_only_changed):
	* redisplay.c (redisplay_window):
	* redisplay.c (decode_mode_spec):
	* redisplay.c (validate_line_start_cache):
	Use buf_tick_arithcompare() as appropriate in this file.
	* undo.c (undo_prelude):
	Ditto.
	* window.c (Fmove_to_window_line):
	Ditto.

2019-03-10  Aidan Kehoe  <kehoea@parhasard.net>

	* buffer.c (complex_vars_of_buffer):
	Document the revised format of the undo list, where the saved
	modification time is now whatever was supplied by make_time().
	* buffer.h (struct buffer):
	Make modtime and auto_save_failure_time into time_t, not int.
	* editfns.c (lisp_to_time):
	Give this a docstring, and declare it as returning a Boolint, for
	more clarity about what's going on with its return value.
	* fileio.c:
	* fileio.c (Fset_visited_file_modtime):
	Update the time of buf->modtime in this function.
	* lisp.h:
	Make lisp_to_time() generally available.
	* select-gtk.c (symbol_to_gtk_atom):
	No need to declare lisp_to_time() here, nor the long-obsolete
	time_to_lisp().
	* select-x.c:
	No need to declare lisp_to_time() here, and we are using
	lisp_to_uint32_t() anyway, as appropriate for X11.
	* undo.c (undo_prelude):
	Just call make_time() here when saving the modification time,
	don't implement it ourselves.
	* undo.c (Fprimitive_undo):
	Use lisp_to_time() here, rather than implementing it ourselves.

2019-03-10  Aidan Kehoe  <kehoea@parhasard.net>

	Move the buffer last_window_start to being a zero-length extent,
	not an int.

	Move the window saved point to being a zero-length extent also, to
	give better behaviour with editing and deleting as we saw
	previously with 
	http://mid.xemacs.org/539b.674c.c8912.0ca7@parhasard.net . 

	* buffer.c (finish_init_buffer):
	* buffer.c (Ferase_buffer):
	Initialise last_window_start as Qnil in both these functions,
	meaning use the beginning of the visible region within redisplay.

	* buffer.h (struct buffer): Remove last_window_start from the
	non-Lisp_Object part of the buffer slots.
	* bufslots.h:
	Save it here instead, mark it as a Lisp_Object as appropriate.
	* window.c (unshow_buffer):
	Save the last point for this window and the window start as
	zero-length extents rather than markers.
	* window.c (Fset_window_buffer):
	Use the zero-length extents rather than markers or ints.
	* window.c (delete_saved_window_start): New.
	Delete a saved window start zero-length extent, unless it is the
	last_window_start for the associated buffer.
	* window.c (Fdelete_window):
	Use this when cleaning up the saved_last_window_start_cache. 
	* winslots.h:
	Update the documentation for saved_point_cache,
	saved_last_window_start_cache.

2019-02-18  Aidan Kehoe  <kehoea@parhasard.net>

	Prefer byte_beginning_of_line_p() throughout the C code.
	* buffer.h:
	Make byte_beginning_of_line_p() inline, given its short length and
	its use in redisplay.
	Move it to this file from editfns.c given it needs access to
	buffer internals.
	* editfns.c (beginning_of_line_p): Remove this entirely.
	* lisp.h: Remove its declaration from lisp.h.
	* redisplay.c (create_text_block):
	Correct some BUF_FETCH_CHAR vs. BYTE_BUF_FETCH_CHAR confusion.
	* redisplay.c (redisplay_window):
	Call byte_beginning_of_line_p() in this function.
	* window.c (Fset_window_start):
	Leave the POSITION munging to set_marker_restricted(), something
	it's better at, anyway.
	Call byte_beginning_of_line_p() here.
	* window.c (Fdelete_other_windows):
	* window.c (Fset_window_buffer):
	* window.c (window_scroll):
	* window.c (Fcenter_to_window_line):
	* window.c (Fmove_to_window_line):
	Call byte_beginning_of_line_p() in these other functions too.

2019-02-18  Aidan Kehoe  <kehoea@parhasard.net>

	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	Wrap some calls to Lisp here, as appropriate for code run within
	redisplay.

2018-12-16  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (redisplay_window):
	Avoid problems with possibly having markers point inside
	characters, save the relevant positions as markers if needed.

2018-12-08  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (redisplay_window):
	Narrow the values passed to set_byte_marker_position() with
	old_pointm, old_startp here, as the old Fset_marker() code was
	effectively doing. Thank you for the bug report, Raymond Toy.

2018-11-19  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (create_text_block):
	Don't DEC_BYTEBPOS() with a bytebpos less than 1 in this function,
	thank you for the bug report, Raymond Toy!

2018-11-01  Jerry James  <james@xemacs.org>

	* tls.c (init_tls): Fix build with recent openssl versions.

2018-10-31  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay-output.c (redisplay_move_cursor):
	* redisplay-output.c (redisplay_update_line):
	* redisplay-output.c (redisplay_output_window):
	* redisplay.c:
	* redisplay.c (generate_display_line):
	* redisplay.c (regenerate_window_extents_only_changed):
	* redisplay.c (redisplay_window):
	Reduce the use of marker_position() in all these functions, using
	byte marker positions instead, making redisplay consistently a
	little faster and reducing unpredictable slowdowns on Mule.

	* redisplay.c (decode_mode_spec):
	Move the functionality window_line_number() into this function, no
	need for a static buffer.

2018-10-29  Aidan Kehoe  <kehoea@parhasard.net>

	* indent.c:
	* indent.c (column_at_point):
	* indent.c (string_column_at_point):
	* indent.c (current_column):
	* indent.c (Findent_to):
	* lisp.h:
	* redisplay.c (create_text_block):
	* redisplay.c (create_string_text_block):
	* redisplay.c (decode_mode_spec):
	Adjust column_at_point(), string_column_at_point() to take byte
	INIT_POS arguments, avoiding calls to BYTE_BUF_FETCH_CHAR() and
	its relatively expensive char-byte conversion.

2018-10-01  Aidan Kehoe  <kehoea@parhasard.net>

	* marker.c (Fmarker_position):
	Advise not to use this function in its docstring; give an example
	of a restricted use case where it is reasonable.

2018-09-17  Aidan Kehoe  <kehoea@parhasard.net>

	* buffer.c (Fline_number):
	Adjust the call to buffer_line_number() here to use the Bytebpos.
	* insdel.c (buffer_insert_string_1):
	Adjust the call to insert_invalidate_line_number_cache() to use
	the Bytebpos.
	* insdel.c (buffer_delete_range):
	Adjust the call to delete_invalidate_line_number_cache() to use
	the Bytebpos.
	* line-number.c (narrow_line_number_cache):
	Check the byte positions rather than the character positions here,
	for consistency.
	* line-number.c (invalidate_line_number_cache):
	Now POS is a bytebpos, use byte_marker_position(), rather than
	marker_position(), so that inserting a newline is no longer O(S),
	where S is the number of entries in the line number cache.
	* line-number.c (insert_invalidate_line_number_cache):
	Take FROM and TO as byte rather than character positions.
	* line-number.c (delete_invalidate_line_number_cache):
	Ditto.
	* line-number.c (get_nearest_line_number):
	Take BEG and POS as byte rather than character positions.
	* line-number.c (add_position_to_cache):
	Take POS as a byte position, which allows us to call
	set_byte_marker_position() on our Fmake_marker() argument, an O(1)
	operation.
	* line-number.c (buffer_line_number):
	Take POS as a byte position here.
	* line-number.h:
	* line-number.h (buffer_line_number):
	* line-number.h (insert_invalidate_line_number_cache):
	* line-number.h (delete_invalidate_line_number_cache):
	Update the declaration for these functions to reflect Bytebpos
	rather than Charbpos arguments.
	* lisp.h:
	Make byte_scan_buffer() available here.
	* redisplay.c (window_line_number):
	Adjust this so we're not doing marker_position() on the saved
	point marker, potentially O(N) on the position in the buffer.
	* search.c (byte_scan_buffer):
	Make this non-static (ideally we would delete scan_buffer()
	entirely).

2018-09-17  Aidan Kehoe  <kehoea@parhasard.net>

	* editfns.c (byte_beginning_of_line_p): New. Byte-oriented
	equivalent of beginning_of_line_p().
	* editfns.c (Ffollowing_char):
	* editfns.c (Fpreceding_char):
	* editfns.c (Fbobp):
	* editfns.c (Feobp):
	* editfns.c (Fbolp):
	* editfns.c (Feolp):
	* editfns.c (Fchar_after):
	* editfns.c (Fchar_before):
	Reduce calls to charbpos_to_bytebpos() in all these functions,
	which a) will lead to fewer O(N) operations (often zero O(N)
	operations) for a certain (rare) pattern of calls, and b)
	eliminates the C function overhead all the time, which is of value
	in itself, in these functions with byte codes.
	* lisp.h:
	Revise the declaration of beginning_of_line_p() to return a
	Boolint.

2018-08-26  Aidan Kehoe  <kehoea@parhasard.net>

	* bytecode.c:
	* text.h:
	* text.h (MAX_ICHAR_LEN_FORMAT): Move this here from
	bytecode.c. Don't implement it as ichar_len_fmt (CHAR_CODE_LIMIT -
	1, FMT), since that chokes when error-checking is turned
	on--CHAR_CODE_LIMIT - 1 is not guaranteed to be a valid Ichar on
	old-mule.

2018-08-21  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (readchar):
	Fix my bug here, BYTE_BUF_FETCH_CHAR() is the macro to use with a
	Bytebpos, using BUF_FETCH_CHAR () gives a bug with byte marker
	position.
	* editfns.c (save_restriction_restore):
	Work around what is almost certainly a compiler bug here, store
	the result of bytebpos_to_charbpos (BUF, BYTE_START) in a local
	variable, instead of passing it as an argument directly, avoiding
	incorrect calculated values for the character position.

2018-08-20  Aidan Kehoe  <kehoea@parhasard.net>

	* callint.c (check_mark):
	* callint.c (Fcall_interactively):
	* editfns.c:
	* editfns.c (Fpoint):
	* editfns.c (region_limit):
	* editfns.c (Fpoint_min_marker):
	* editfns.c (Fpoint_max_marker):
	* editfns.c (save_restriction_save):
	* editfns.c (save_restriction_restore):
	* editfns.c (transpose_markers):
	* fileio.c:
	* fileio.c (restore_point_unwind):
	* keymap.c (get_relevant_keymaps):
	* lisp.h:
	* lread.c (readchar):
	* lread.c (unreadchar):
	* lstream.c (lisp_buffer_reader):
	* lstream.c (lisp_buffer_writer):
	* lstream.c (lisp_buffer_write_with_extents):
	* lstream.c (lisp_buffer_rewinder):
	* lstream.c (lisp_buffer_marker):
	* marker.c:
	* marker.c (fixup_set_marker_args):
	* marker.c (set_marker_internal):
	* marker.c (set_byte_marker_position):
	* marker.c (Fset_marker):
	* marker.c (set_marker_restricted):
	* marker.c (copy_marker_1):
	* print.c (output_string):
	* text.c (get_buffer_pos_byte):
	* text.c (get_buffer_range_byte):
	Further reduce unnecessary marker byte-char conversion.
	In particular:
	-- Make #'copy-marker consistently O(1) with a marker argument.
	-- Make #'set-marker O(1) with a marker POSITION.
	-- Make set_marker_restricted O(1).
	-- Avoid any byte-char conversions with get_buffer_pos_byte ()
	with a marker POS.
	-- Avoid any byte-char conversions with get_buffer_range_byte ()
	with a marker FROM and a marker TO.

2018-08-15  Aidan Kehoe  <kehoea@parhasard.net>

	Calls to marker_position() are O(N), reduce them in bytecode.
	* buffer.h:
	* bytecode.c:
	* bytecode.c (bytecode_gtr):
	* bytecode.c (bytecode_lss):
	* bytecode.c (bytecode_leq):
	* bytecode.c (bytecode_geq):
	* bytecode.c (bytecode_arithop):
	* data.c:
	* data.c (Fmax):
	* data.c (Fmin):
	* insdel.c (init_buffer_text):
	* number.h:
	* number.h (promote_args_lazy):
	1. In bytecode and in interpreted code, if #'max, #'min are
	supplied marker arguments, return a marker result if they can be
	compared without converting to fixnums.
	2. In bytecode, when doing arithmetic comparisons between markers
	and fixnums, uses the fact the the byte marker position is always
	the inclusive upper bound on the character marker position, and
	that (byte_marker_position(OBJ) / MAX_ICHAR_LEN) is the inclusive
	lower bound, to convert O(N) operations to O(1) for a decent
	proportion of comparisons like (< MARKER (point-max)).
	3. Buffer format is actually fixed at compile time, make decisions
	regarding that easier for the compiler.

2018-08-12  Aidan Kehoe  <kehoea@parhasard.net>

	* fontcolor-x.c (x_font_instance_properties):
	Initialise name_len here to quieten the compiler.

2018-08-12  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c:
	* data.c (syms_of_data):
	* data.c (vars_of_data):
	* gc.c (gc_finish_mark):
	* gc.c (gc_finalize):
	* lisp.h:
	* lrecord.h (enum lrecord_type):
	Remove the weak-box implementation from C. It was never used
	enough to merit being in C, and it is easily implemented in Lisp
	using the weak list infrastructure.

2018-08-12  Aidan Kehoe  <kehoea@parhasard.net>

	* gc.c (gc_finish_mark):
	Move prune_weak_lists() before prune_weak_hash_tables(), so the
	latter doesn't encounter garbage hash tables.

2018-08-12  Aidan Kehoe  <kehoea@parhasard.net>

	Use an explicit weak list object for the weak hash tables, too.
	* device.c:
	* device.c (clear_all_console_local_caches): New. Provided so the
	weak list code doesn't think various subwindow_instance_cache weak
	hash tables are reachable at dump time.
	* elhash.c:
	* elhash.c (struct Lisp_Hash_Table):
	Remove the next_weak chain pointer, it's not used for non-weak
	hash tables, and we've moved to an explicit weak list object for
	weak hash tables.
	* elhash.c (make_general_lisp_hash_table):
	Use the explicit weak list object.
	* elhash.c (Fcopy_hash_table):
	Ditto.
	* elhash.c (finish_marking_weak_hash_tables):
	Simplify, using the explicit weak list infrastructure.
	* elhash.c (prune_weak_hash_tables):
	Ditto.
	* elhash.c (syms_of_elhash):
	This can be simplified now we're using the explicit weak list
	infrastructure.
	* elhash.c (vars_of_elhash):
	Ditto.
	* glyphs.c:
	* glyphs.c (clear_all_subwindow_instance_caches): New.
	Clear a window's subwindow instance caches when dumping, so pdump
	doesn't have to try to dump an image instance.
	* glyphs.c (clear_frame_subwindow_instance_caches): New. When
	handed a frame, clear its subwindow instance caches.
	* glyphs.h:
	Declare clear_frame_subwindow_instance_caches(). 

2018-08-12  Aidan Kehoe  <kehoea@parhasard.net>

	Use an explicit weak list object for the syntax table and
	specifier chains, no need for separate code and slots in the
	chartab and specifier objects.
	* chartab.c:
	* chartab.c (prune_syntax_tables): Removed.
	* chartab.c (decode_char_table_range):
	* chartab.c (make_char_table):
	* chartab.c (Fcopy_char_table):
	* chartab.c (vars_of_chartab):
	Vall_syntax_tables is now an explicit weak list object.
	* chartab.h:
	* chartab.h (struct Lisp_Char_Table):
	Remove the next_table chain element from this struct.
	* emacs.c (main_1):
	Move vars_of_data() even earlier in the startup sequence, so 
	Vall_weak_lists is available.
	* gc.c (gc_finish_mark):
	No longer call prune_specifiers(), prune_syntax_tables().
	* specifier.c:
	* specifier.c (cleanup_specifiers):
	* specifier.c (kill_specifier_buffer_locals):
	* specifier.c (make_specifier_internal):
	* specifier.c (vars_of_specifier):
	* specifier.h (struct Lisp_Specifier):
	Remove prune_specifiers and the next_specifier element in the
	struct.
	* syntax.c (update_syntax_table):
	Loop through the weak list list of Vall_syntax_tables, rather than
	chaining through the next_table slot.

2018-08-09  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (XSET_STRING_ASCII_BEGIN):
	Whoops, this behaved incorrectly with large strings, thank you the
	debug build. Non-debug builds had a performance issue, not a
	correctness issue.

2018-08-11  Aidan Kehoe  <kehoea@parhasard.net>

	* emacs.c (main_1):
	vars_of_specifier() uses the weak list infrastructure, and so it
	needs to be called after vars_of_data() so that the Vall_weak_lists
	object chain is initialised correctly.
	* lrecord.h:
	* lrecord.h (DUMP_ADD_WEAK_OBJECT_CHAIN):
	New #define, check that an object chain variable is the NULL
	pointer (as will be the case at early startup if it has not yet
	been used), then initialise it to Qnil and call
	dump_add_weak_object_chain(&var). Avoids the bug just fixed in
	main_1().
	* chartab.c (vars_of_chartab):
	Use it.
	* data.c:
	Make Vall_weak_lists available to elhash.c, which has some code
	that needs to modify it very early.
	* data.c (vars_of_data):
	Use it.
	* elhash.c:
	* elhash.c (syms_of_elhash):
	Call DUMP_ADD_WEAK_OBJECT_CHAIN() as appropriate. Set
	Vall_weak_lists Qnull_pointer after creating a weak list; the
	initial value will be corrupt.
	* specifier.c (vars_of_specifier):
	Call DUMP_ADD_WEAK_OBJECT_CHAIN() here.

2018-07-11  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c:
	* data.c (LISP_INTEGER_TO_C_TYPE):
	* data.c (C_TYPE_TO_LISP_INTEGER):
	* number.h:
	* number.h (bignum_fits_emacs_uint_p):
	Correct a couple of bugs in lisp_to_uid_t() on bignum, non-bignum
	builds.
	Provide lisp_to_gid_t(), gid_t_to_lisp() too, not yet used.
	Add a couple of comments to make grepping for the definitions
	easier.

2018-07-05  Aidan Kehoe  <kehoea@parhasard.net>

	* menubar.c (Fcompare_menu_text):
	Make this function more Mule-clean, don't give the wrong answer
	when there are zero characters within the strings to be compared.

2018-07-05  Aidan Kehoe  <kehoea@parhasard.net>

	* menubar.c:
	* menubar.c (vars_of_menubar):
	Move #'normalize-menu-text to Lisp, it's not called much and the
	occasional use of the function in builds without C menubar support
	is much more practical with it in Lisp.

2018-07-04  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Fdefmacro):
	Fnth() no longer available, use its implementation.
	* fns.c (Fnth, Fidentity): Move to subr.el.
	* fns.c (syms_of_fns): Remove their DEFSUBR()s from here.
	* lisp.h: Remove Fnth()'s declaration from here.
	* select.c (get_selection_raw_time):
	Fnth not available, use its implementation.

2018-07-04  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fspecial_operator_p):
	Change the name of the argument of this function to OBJECT in its
	docstring, to make it clearer that there is no error if the
	argument is a non-subr.

2018-06-30  Aidan Kehoe  <kehoea@parhasard.net>

	* glyphs.c (check_window_subwindow_cache):
	Use elisp_maphash_unsafe() here, we can't call Lisp, and the
	copy_compress_hentries() is relatively expensive.

2018-06-24  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (parse_doprnt_spec):
	Don't silently accept ?\000 as a converter character in user
	format strings.
	(VALID_CONVERTERS): This is no longer used, and was
	inaccurate. Remove it.

2018-05-25  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (Fsnarf_documentation):
	If the symbol being examined is an alias for a compiled function,
	and that compiled function already has documentation information,
	don't override that.

2018-05-19  Aidan Kehoe  <kehoea@parhasard.net>

	Fix some leaks in the GTK code.
	* event-gtk.c (gtk_reset_key_mapping):
	Avoid XKeysymToString() here, there's no need for it anymore, and
	it leaks.
	* glyphs-gtk.c (gtk_xpm_instantiate):
	XpmCreateDataFromImage() allocates its data on the heap, and
	that data needs to be freed.

2018-04-25  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Fatom, Flistp, Fnlistp, Fbitp, Fzerop, Ftrue_list_p):
	Move all these functions to Lisp, since they are easily
	implemented in Lisp, and having them in C necessitates extra space
	in the dumped executable with NEWGC.
	* data.c (Flistp):
	* data.c (syms_of_data):
	Remove various DEFSUBRs from here.

	* data.c (Fnonnegativep):
	Document that this returns t if OBJECT is a nonnegative rational,
	rather than a number in general.
	* data.c (Fnumberp):
	Document that this returns t if OBJECT is a floating point or a
	rational, rather than just an integer.
	* data.c:

	* lisp.h:
	* tooltalk.c (tooltalk_message_callback):
	Use Ffunctionp() here rather than re-implementing it.

2018-04-23  Aidan Kehoe  <kehoea@parhasard.net>

	* abbrev.c (Fexpand_abbrev):
	* alloc.c (struct):
	* alloc.c (malloc_after):
	* alloc.c (xmalloc):
	* alloc.c (xcalloc):
	* alloc.c (xrealloc):
	* alloc.c (xstrdup):
	* alloc.c (alloc_sized_lrecord_1):
	* alloc.c (alloc_sized_lrecord_array):
	* alloc.c (alloc_lrecord_array):
	* alloc.c (copy_lisp_object):
	* alloc.c (dbg_inhibit_dbg_symbol_deletion):
	* alloc.c (make_uninit_vector):
	* alloc.c (Fvector):
	* alloc.c (bit_vector_equal):
	* alloc.c (make_bit_vector):
	* alloc.c (string_equal):
	* alloc.c (resize_string):
	* alloc.c (set_string_char):
	* alloc.c (Fmake_string):
	* alloc.c (Fstring):
	* alloc.c (init_string_ascii_begin):
	* alloc.c (make_string):
	* alloc.c (dec_lrecord_stats):
	* alloc.c (lrecord_stats_heap_size):
	* alloc.c (pluralize_word):
	* array.c (Dynarr_realloc):
	* array.c (Dynarr_insert_many):
	* array.c (Dynarr_delete_many):
	* array.c (gap_array_move_gap):
	* array.h:
	* array.h (Dynarr_declare):
	* array.h (Dynarr_delete_object):
	* array.h (gap_array_marker):
	* buffer.c (MARKED_SLOT):
	* buffer.c (Fgenerate_new_buffer_name):
	* buffer.c (DEFVAR_BUFFER_LOCAL_1):
	* buffer.h (struct buffer):
	* bytecode.c (make_compiled_function_args):
	* bytecode.c (UNUSED):
	* callint.c (Fcall_interactively):
	* casefiddle.c (casify_object):
	* casefiddle.c (casify_region_internal):
	* charset.h:
	* chartab.c (clone_chartab_table):
	* chartab.c (put_char_table):
	* chartab.c (decode_char_table_range):
	* cmds.c (Fpoint_at_bol):
	* cmds.c (Fpoint_at_eol):
	* cmds.c (internal_self_insert):
	* console.c (delete_console_internal):
	* console.c (Fset_input_mode):
	* console.c (DEFVAR_CONSOLE_LOCAL_1):
	* console.h:
	* data.c (lisp_to_uint32_t):
	* data.c (lisp_to_int32_t):
	* data.c (rem_two_fixnum):
	* data.c (Flsh):
	* debug.c (FROB):
	* device.c (Fmake_device):
	* device.c (delete_device_internal):
	* device.c (Fset_device_baud_rate):
	* device.h:
	* doc.c (extract_object_file_name):
	* doc.c (Fsnarf_documentation):
	* doc.c (verify_doc_mapper):
	* doc.c (Fsubstitute_command_keys):
	* doprnt.c (Fnumber_to_string):
	* doprnt.c (emacs_doprnt):
	* editfns.c (Finsert_char):
	* editfns.c (save_restriction_restore):
	* elhash.c (internal_array_hash):
	* filelock.c (LOCK_PID_MAX):
	* filelock.c (fill_in_lock_file_name):
	* filelock.c (current_lock_owner):
	* indent.c:
	* indent.c (column_at_point):
	* indent.c (string_column_at_point):
	* indent.c (current_column):
	* indent.c (Findent_to):
	* indent.c (byte_spaces_at_point):
	* indent.c (Fmove_to_column):
	* indent.c (Fcompute_motion):
	* indent.c (vertical_motion_1):
	* indent.c (Fvertical_motion_pixels):
	* lisp-disunion.h (XCHARVAL):
	* lisp-disunion.h (wrap_pointer_1):
	* lisp.h:
	* lisp.h (ALLOCA):
	* lisp.h (XSET_STRING_ASCII_BEGIN):
	* lisp.h (CHECK_CHAR_COERCE_INT):
	* lisp.h (LISP_HASH):
	* lisp.h (struct gcpro):
	* lisp.h (DECLARE_INLINE_HEADER):
	* lrecord.h:
	* lrecord.h (set_lheader_implementation):
	* number.h:
	* number.h (integer_signum):
	* number.h (NATNUMP):
	* print.c (debug_short_backtrace):
	* search.c (find_before_next_newline):
	* syntax.c (scan_words):
	* syntax.h:
	* sysdep.c:
	* sysdep.c (wait_for_termination):
	* sysdep.c (sys_subshell):
	* sysdep.c (sys_suspend):
	* sysdep.c (init_sigio_on_device):
	* sysdep.c (qxe_readlink):
	* sysfile.h:
	* text.c (eifind_large_enough_buffer):
	* text.h:
	* text.h (ASSERT_ASCTEXT_ASCII_LEN):
	* text.h (struct):
	* text.h (EI_ALLOC):
	* text.h (eicpy_lstr_off):
	* text.h (eicpy_raw_fmt):
	* text.h (eicpy_ascii_len):
	* text.h (eicpy_ext_len):
	* text.h (eimake_string_off):
	* text.h (DECLARE_INLINE_HEADER):
	* text.h (eicat_1):
	* text.h (eicat_ascii):
	* text.h (eicat_raw):
	* text.h (eisub_1):
	* text.h (eisub_ascii):
	* text.h (EI_CASECHANGE):
	* undo.c (truncate_undo_list):
	* unicode.c (print_precedence_array):
	Be more careful about integer types within the C code, e.g. not
	using an int where a value represents a (possibly large) number of
	bytes, or characters, especially relevant for values like fill
	columns, which can usefully be set to most-positive-fixnum,
	something the code up to now dealt with badly on a 64-bit build.
	Issues flushed out using the -Wnarrowing GCC option.

	* lisp.h (XCHAR_OR_CHAR_INT):
	Provide an error-checking version of this to check uses with
	fixnums where valid_ichar_p() is not true.

	* lisp.h (GOOD_HASH):
	Set this to a prime number just over 2^32 on sixty-four bit
	architectures, of type Hashcode, an unsigned type, so modular
	arithmetic is defined.

2018-04-21  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c:
	Provide macros to generalise the two-way conversion
	between C integer types and Lisp values (fixnums, bignums, conses
	of fixnums and, because GNU, floats).
	Use these macros to generate conversion functions for OFF_T and
	for uid_t. There may be scope down the line for further types, it
	needs looking into.
	* dired.c (Ffile_attributes):
	Use OFF_T_to_lisp here.
	* editfns.c:
	* editfns.c (Ftemp_directory):
	* editfns.c (Fuser_login_name):
	* editfns.c (Fuser_uid):
	* editfns.c (Fuser_real_uid):
	Use lisp_to_uid_t, uid_t_to_lisp as appropriate in these
	functions.
	* fileio.c:
	Remove the old lisp_to_off_t(). Use the new lisp_to_OFF_T.
	* number.h:
	Declare the new generated conversion functions for OFF_T and for
	uid_t. 

2018-04-21  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (NUMBER_FITS_IN_A_FIXNUM, NUMBER_FITS_IN_A_FIXNUM):
	* number.h (make_integer, make_unsigned_integer):
	If the GCC extended expression syntax is available, use it and
	__typeof__ to catch non-idempotent arguments to these arguments,
	and to silence type-narrowing warnings for non-EMACS_INT
	arguments.

2018-04-21  Aidan Kehoe  <kehoea@parhasard.net>

	* gccache-x.c (gc_cache_hash):
	* gccache-x.c (x_gc_cache_lookup):
	Add a couple of casts here to placate the C++ compiler.
	* text.c (rep_bytes_by_first_byte):
	Don't use hexadecimal notation for 0xDEADBEEF in this table,
	that causes a compile problem with C++ on a thirty-two bit
	machine.

2018-04-16  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Finsert_file_contents_internal):
	Be clearer about not using an unitialised OFFSET in an lseek(2)
	call here. 
	* regex.c (re_wctype):
	Match the argument types used in the declaration in regex.h, to
	placate the C++ compiler.
	* text.c:
	Only make unicode_internal_handle_bad_ichar_to_unicode() available
	on unicode-internal builds.
	* tls.h (tls_negotiate):
	Rework this stub macro to mark its arguments as used.
	* vdb.c (Ftest_vdb):
	Quiet the compiler regarding one variable here.

2018-04-10  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	No need for HAVE_WCWIDTH anymore.
	* unicode.c (unicode_char_columns):
	Don't ever use wcwidth() in this function, it's not
	reliable, and this gives test failures with
	#'truncate-string-to-width. Document what we should use instead.

2018-04-10  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c (compile_char_class):
	Use CHAR_CODE_LIMIT instead of MOST_POSITIVE_FIXNUM as the upper
	bound for characters in the PRINT, GRAPH, NONASCII classes.
	* regex.c (re_compile_fastmap):
	Don't attempt to set_itext_ichar() with a non-character value
	under Unicode internal.

2018-04-10  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (lisp_to_off_t): New function.
	Decode a Lisp_Object into an OFF_T. Accept floats as well as
	integers, as does GNU (they have more need to, because they don't
	have bignums)
	* fileio.c (Finsert_file_contents_internal):
	Use it here.
	* fileio.c (Fwrite_region_internal):
	Interpret a numeric APPEND argument as specifying a byte offset in
	the output file to seek to before writing.

2018-04-07  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Fsubstitute_in_file_name): Fixup some whitespace here.
	* fileio.c (Finsert_file_contents_internal):
	Handle bignum values for START, END. Error if the difference
	between START and END means the relevant buffer would become too
	big to handle.
	* insdel.c (buffer_insert_string_1):
	Check the new buffer size in terms of characters, not bytes.
	* lstream.c (make_filedesc_stream_1):
	* lstream.c (make_filedesc_input_stream):
	* lstream.c (make_filedesc_output_stream):
	* lstream.h:
	Use the OFF_T type for the OFFSET argument to these functions,
	Bytecount for the COUNT argument, as has long been the most
	reasonable approach.

2018-04-06  Aidan Kehoe  <kehoea@parhasard.net>

	* process-unix.c:
	* process-unix.c (child_setup):
	When execve() fails, print the associated error message.

2018-01-04  Aidan Kehoe  <kehoea@parhasard.net>

	Move the X GC cache to using the Lisp hash table structure (as
	part of a more general approach to remove hash.c).
	Improve its hashing algorithm, giving better performance.
	Incorporate it directly into the x_device struct, don't allocate
	it separately.
	* console-x-impl.h:
	* console-x-impl.h (struct x_device):
	Incorporate the x_gc_cache directly here, not a pointer to it.
	* console-x-impl.h (DEVICE_X_GC_CACHE):
	Update the macro to reflect this.
	* device-x.c:
	Provide a new gc-cache hash table test object.
	* device-x.c (x_data_device_description):
	Document that the GC cache hash table is reachable from the X
	device for the new GC.
	* device-x.c (x_init_device):
	Init the already-allocate X GC ccache.
	* device-x.c (x_mark_device):
	Mark the table. No need to mark the other fields of the GC cache
	struct.
	* device-x.c (x_delete_device):
	Free the GC cache on deletion.
	* device-x.c (syms_of_device_x):
	Init the hash table test object.
	* device-x.c (reinit_console_type_create_device_x):
	* elhash.c (vars_of_elhash):
	Can't make the assertion about the number of built-in hash table
	tests any more.
	* gccache-x.c:
	Rework this file to use the Lisp hash table infrastructure and a
	better hashing algorithm.
	* gccache-x.c (gc_cache_eql): Rework this to use the Lisp hash
	table calling conventtion.
	* gccache-x.c (gc_cache_hash): Ditto.
	* gccache-x.c (define_gc_cache_hash_table_test): New. Provide the
	gc-cache Lisp hash table test.
	* gccache-x.c (init_x_gc_cache):
	Replacement for make_gc_cache. 
	* gccache-x.c (free_x_gc_cache_entries):
	Renamed; Nil out the hash table.
	* gccache-x.c (x_gc_cache_lookup):
	Rename to emphasise this is the X-specific cache.
	* gccache-x.c (describe_gc_cache):
	Adjust to reflect new structures.
	* gccache-x.h:
	Move the gc cache structure here, since it's now included in the X
	device structure.
	* gccache-x.h (GC_CACHE_SIZE):
	This is now here and remains 100.
	* redisplay-x.c (x_bevel_area):
	* redisplay-x.c (x_output_vertical_divider):
	* redisplay-x.c (x_flash):
	* redisplay-x.c (x_output_xlike_pixmap):
	Call x_gc_cache_lookup() in this file, rather than gc_cache_lookup().
	* redisplay-xlike-inc.c (XLIKE_get_gc):
	Ditto.

2017-12-30  Stephen J. Turnbull  <stephen@xemacs.org>

	* glyphs.c (print_image_instance): Use %p for subwindow id.

2017-12-29  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	Make WORDS_BIGENDIAN available again, thank you Jerry James.

2017-12-29  Stephen J. Turnbull  <stephen@xemacs.org>

	* event-gtk.c (emacs_gtk_drain_queue):
	Work around gdk_events_pending lossage.

2017-12-29  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (emacs_vsprintf_string):
	* doprnt.c (emacs_vasprintf):
	There is no need to forbid GC in these functions, the resizing
	buffer output stream cannot GC and continue, nor can
	write_fmt_string_lisp_va().
	Jerry James just showed a backtrace where forbidding GC here
	actually caused XEmacs to crash, early in startup when
	specpdl_size was unitialised and begin_gc_forbidden() did an
	infinite loop.

2017-12-29  Aidan Kehoe  <kehoea@parhasard.net>

	* print.c (output_string):
	Don't RETURN_UNGCPRO() a non-Lisp_Object value, thank you Jerry
	James.

2017-12-29  Aidan Kehoe  <kehoea@parhasard.net>

	* process.c:
	* process.c (generate_new_process_name): New.
	Function on the model of #'generate-new-buffer-name, returning a
	string based on its argument that does not refer to any existing
	process.
	* process.c (make_process_internal):
	Use it, avoid use of SUFFIX, a buffer that was too small for the
	use made of it.

2017-12-27  Aidan Kehoe  <kehoea@parhasard.net>

	Remove use of Eistring malloc buffers, have the corresponding
	functions write to Lisp streams instead, as they were usually
	ultimately doing anyway.
	
	* event-Xt.c (emacs_Xt_format_magic_event):
	Return a Bytecount here, helpful for its use as part of the
	write-to-Lisp-stream infrastructure.
	* event-gtk.c (emacs_gtk_format_magic_event):
	Ditto.
	* event-msw.c (emacs_mswindows_format_magic_event):
	Dito.
	* event-stream.c:
	* event-stream.c (event_stream_format_magic_event):
	Ditto.
	* event-stream.c (echo_key_event):
	Don't use an Eistring for the constructed string to echo the
	event, build it directly into command_builder->echo_buf, using a
	fixed_buffer Lisp output stream.
	* event-tty.c (emacs_tty_format_magic_event):
	Return zero, not void.
	* events.c (print_event_1): Removed.
	This mainly existed to provide a place to declare an Eistring. 
	* events.c (print_event):
	Use write_ascstring() and format_event_object() as appropriate.
	* events.c (format_event_object):
	Return a Bytecount, and print into a Lisp stream, rather than an
	Eistring.
	* events.h:
	Update the declaration of format_magic_event_cb(),
	format_event_object(), event_stream_format_magic_event().
	* events.h (struct event_stream):
	* gui-x.c (button_item_to_widget_value):
	Don't use an Eistring here, use a small Ibyte buffer; there's no
	value to generating a long strong.
	* gui.c (gui_item_display_flush_right):
	Ditto.
	* keymap.c:
	* keymap.c (EXPOSE_FIXED_BUFFER_INTERNALS):
	#define this when #including lstream.h, so where_is_to_Ibyte() can
	create a stack-based Lstream object.
	* keymap.c (Fsingle_key_description):
	Use a resizing_buffer Lisp stream in this function rather than an
	Eistring.
	* keymap.c (Fwhere_is_internal):
	Update the call to where_is_internal().
	* keymap.c (where_is_to_Ibyte): Renamed from where_is_to_char().
	Updated to use a stack fixed buffer lstream, and to return the
	number of bytes that would have been written to the buffer, on the
	model of emacs_asnprintf().
	* keymap.c (raw_keys_to_keys):
	Format into a stream, rather than an Eistring.
	* keymap.c (format_raw_keys):
	* keymap.c (where_is_recursive_mapper):
	When TARGET-BUFFER is non-nil, format into it with
	format_raw_keys(). Return the bytecount needed for them.
	* lisp.h:
	Rename and update the declaration of where_is_to_char() ->
	where_is_to_Ibyte().
	* lstream.h:
	* lstream.h (INIT_STACK_FIXED_BUFFER_OUTPUT_STREAM):
	TThere was an issue in the name of the third argument to this
	macro, correct it.
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	Limit the printed name of this callback to 64 characters.

2017-12-23  Aidan Kehoe  <kehoea@parhasard.net>

	* console-msw.c (mswindows_output_console_string):
	Return a Bytecount reflecting the number of Ibytes written from
	this function.
	* doprnt.c (write_string_1_lstream):
	* doprnt.c (write_lisp_string_lstream):
	Return a Bytecount, not void, in these two functions.
	* doprnt.c (doprnt_1):
	Use this.
	* doprnt.c (write_fmt_string_va):
	* doprnt.c (write_fmt_string):
	* doprnt.c (write_fmt_string_lisp_va):
	* doprnt.c (write_fmt_string_lisp):
	* doprnt.c (stderr_out):
	* doprnt.c (stdout_out):
	* doprnt.c (stderr_out_lisp):
	Return a Bytecount in all these functions, not void, pass through
	the result from the underlying call.
	* lisp.h:
	Adjust the declarations for these functions to reflect that they
	return a Bytecount.
	* print.c (write_string_to_stdio_stream_1):
	* print.c (write_string_to_stdio_stream):
	* print.c (write_string_to_external_output):
	Return the shortest of the results of the writes to the various
	destinations here.
	* print.c (write_string_to_external_output_va):
	* print.c (external_out):
	* print.c (output_string):
	* print.c (write_lisp_string):
	* print.c (write_string_1):
	* print.c (write_eistring):
	* print.c (debug_out):
	* print.c (debug_print):
	* print.c (debug_out_lisp):
	Return Bytecount values, not void, in all these functions.

2017-12-22  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay-x.c (separate_textual_runs_mule):
	The output of a charset's CCL program is just two octets, it is
	incorrect and buggy to transform it to an "external charset
	codepoint", something that will usually error in redisplay. Remove
	this unicode-internal change from Ben.

2017-12-20  Aidan Kehoe  <kehoea@parhasard.net>

	Use Lisp characters as the keysym for event objects reflecting
	keys with character mappings on X11, as we do on every other
	platform, and as Ben suggests.
	* event-Xt.c:
	* event-Xt.c (USE_UNICODE_MAP):
	Don't use the current buffer for the Unicode conversion precedence
	list, use the language-specific default in
	Vdefault_unicode_precedence_array.
	* event-Xt.c (x_keysym_to_character):
	Give useful values for ASCII values too.
	* event-Xt.c (maybe_define_x_key_as_self_inserting_character):
	Don't mess around with the character-of-keysym property here, now
	we no longer use symbol keysyms for X11 keys with character
	mappings.
	* event-Xt.c (x_has_keysym):
	Call m_d_x_k_a_s_i_c() with its new simpler calling convention.
	* event-Xt.c (x_keysym_to_emacs_keysym):
	Call x_keysym_to_character() early.
	* event-Xt.c (x_to_emacs_keysym):
	Drop the SIMPLE_P argument, not used.
	* event-Xt.c (x_event_to_emacs_event):
	Update calls to x_to_emacs_keysym() correspondingly in this function.

2017-12-20  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay-gtk.c (XLIKE_bevel_area):
	* redisplay-gtk.c (gtk_text_attributes):
	Correct the placement of some #ifdefs here, get the code building
	under GTK2 again.

2017-12-18  Aidan Kehoe  <kehoea@parhasard.net>

	* event-Xt.c:
	* event-Xt.c (USE_UNICODE_MAP):
	Add support for Hangul, Armenian, Georgian, Azeri, Vietnamese
	support here.
	Merge the unicode-internal changes into this file.
	* event-Xt.c (x_keysym_to_character):
	As above.
	* event-xlike-inc.c:
	Move the Hangul, Armenian, Georgian, Azeri, Vietnamese support from
	here. 
	* redisplay-gtk.c:
	* redisplay-x.c:
	* redisplay-x.c (separate_textual_runs_nomule):
	* redisplay-x.c (separate_textual_runs_xft_nomule):
	* redisplay-x.c (separate_textual_runs_xft_mule):
	* redisplay-x.c (separate_textual_runs_mule):
	* redisplay-x.c (x_text_width_single_run):
	* redisplay-x.c (x_text_width):
	* redisplay-x.c (x_window_output_begin):
	* redisplay-x.c (x_window_output_end):
	* redisplay-x.c (x_clear_region):
	* redisplay-x.c (x_clear_frame):
	* redisplay-x.c (x_bevel_area):
	* redisplay-x.c (x_output_horizontal_line):
	* redisplay-x.c (x_output_vertical_divider):
	* redisplay-x.c (x_ring_bell):
	* redisplay-x.c (x_flash):
	* redisplay-x.c (x_output_blank):
	* redisplay-x.c (x_output_eol_cursor):
	* redisplay-x.c (x_output_xlike_pixmap):
	* redisplay-x.c (x_output_string):
	Move all the X-specific stuff here from redisplay-xlike-inc.c,
	since it is no longer helpful on GTK with the end of support for
	GTK 1.0.
	* redisplay-xlike-inc.c:
	Delete all the newly-X-specific stuff from here.

2017-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* console-gtk.c (gtk_perhaps_init_unseen_key_defaults):
	Remove a buffer dependence here, use the default unicode
	precedence list when converting a keysym's Unicode code point to
	an XEmacs character.
	* device-gtk.c (gtk_init_device):
	On versions of GTK > 2.8.0, if gdk_screen_get_rgba_visual()
	failed, try with gdk_visual_get_best().
	When examining Vselection_converter_out_alist, Fsafe_length() is
	no longer available. Use Flist_length instead.
	* emacs.c (main_1):
	Remove complex_vars_of_event_gtk(), there's no need for it.
	* event-gtk.c:
	* event-gtk.c (handle_map_event):
	Check for possible resizing on the map event too.
	* event-gtk.c (gtk_keysym_to_emacs_keysym):
	Use unicode_to_ichar(), rather than Funicode_to_char() with the
	wrong number of arguments.
	* event-gtk.c (gtk_event_to_emacs_event):
	* event-gtk.c (register_event_name):
	Don't strdup into the heap.
	Assert that every character in NAME is ASCII, use
	build_ascstring() with the result of the transformation, using
	Qutf_8 is an issue very early in the build.
	* event-gtk.c (register_event_names):
	Return Vgdk_event_names from this function, so the return value
	can be used in vars_of_event_gtk().
	* event-gtk.c (vars_of_event_gtk):
	Use register_event_names() here.
	* event-gtk.c (complex_vars_of_event_gtk): Removed, no need for
	this, the relevant vars aren't actually complex.
	* faces.c (complex_vars_of_faces):
	Make some comments here a little more complete.
	* frame-gtk.c:
	* frame-gtk.c (gtk_recompute_cell_sizes):
	Make this take WIDTH_INCR and HEIGHT_INCR pointer output
	arguments, so callers can find out the effective character dimensions.
	* frame-gtk.c (gtk_set_initial_frame_size): Use this.
	* frame-gtk.c (gtk_set_frame_size): Use this.
	* frame-gtk.c (gtk_update_frame_external_traits): Use this.
	* frame.c:
	* frame.c (change_frame_size_1):
	Correct some comments here.
	* redisplay-gtk.c (XLIKE_output_eol_cursor):
	Some GTK version compatibility changes here.
	* redisplay-xlike-inc.c (XLIKE_text_width): Remove this
	completely, with Pango GTK and X11 have diverged sufficiently this
	doesn't help any more.
	* symsinit.h:
	Remove complex_vars_of_event_gtk() from this.

2017-12-12  Aidan Kehoe  <kehoea@parhasard.net>

	* process-unix.c (unix_init_process_io_handles):
	Set input FDs to non-blocking unconditionally, see recent patch
	posted to xemacs-beta from Johann "Myrkraverk" Oskarsson.

2017-12-02  Aidan Kehoe  <kehoea@parhasard.net>

	* bytecode.c (set_compiled_function_arglist):
	Check that NEW_ is a true list, avoid having a circular list in
	the compiled funcction down the line.
	* debug.c (Fset_debug_classes_to_check):
	Use EXTERNAL_LIST_LOOP_3() looping through CLASSES for circularity
	checking, leave the type checking to it.
	* eval.c (Fmultiple_value_prog1):
	ARGS is an external list, check for circularity and
	well-formedness.
	* keymap.c (Fsingle_key_description):
	If KEY is a cons, loop using EXTERNAL_LIST_LOOP_3(), giving us
	type and circularity checking.

2017-12-06  Aidan Kehoe  <kehoea@parhasard.net>

	* unicode.c (allocate_jit_ucs_charset):
	Ben removed the ccl-encode-to-ucs-2 CCL program even from the
	non-unicode-internal build, and this meant that redisplay of the
	just-in-time characters failed on X11.
	Address this and simplify the code by leaving charset-registries
	as nil for the just in time charsets, meaning the second-stage
	code always gets invoked, and we don't need the CCL program.

2017-11-30  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (describe_command):
	Correct the order of the arguments to Fprin1() here, avoid an
	error when calling #'describe-bindings.

2017-11-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* sysdep.c (total_data_usage):
	Document that sbrk(0) usage is still OK.

	* window.c (window_divider_width):
	* window-impl.h (MODELINE_OFF_SHADOW_THICKNESS_ADJUSTED):
	Use EMACS_INT_ABS to shut up compiler.

	* lread.c (read1): Comment too-clever logic.

	* vdb-posix.c (vdb_fault_handler):
	Add prototype to quiet clang (at least 4.0 and 5.0).

2017-11-23  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	Provide HAVE_GLIBC, since _GNU_SOURCE isn't specific enough to
	glibc.
	* alloc.c:
	* alloc.c (malloced_storage_size):
	* alloc.c (common_init_alloc_early):
	* emacs.c:
	* emacs.c (main):
	* gc.h:
	* ralloc.c:
	* ralloc.c (init_ralloc):
	Use the new HAVE_GLIBC define in these files, instead of _GNU_SOURCE.
	* ralloc.c:
	* ralloc.c (MAP_FLAGS):
	* unexelf.c (unexec):
	caddr_t is long deprecated, use void * instead when calling
	mmap().
	Accept MAP_ANON, an old BSDism, as an alias for MAP_ANONYMOUS.
	Be careful not to redefine an existing definition for MAP_ANONYMOUS

2017-11-23  Aidan Kehoe  <kehoea@parhasard.net>

	* gmalloc.c: Removed. Use the system malloc all the time instead.
	* config.h.in:
	Remove DOUG_LEA_MALLOC, USE_SYSTEM_MALLOC, USE_DEBUG_MALLOC from
	this file.
	Rename _NO_MALLOC_WARNING_ to HAVE_MALLOC_WARNING, invert its
	sense.
	* Makefile.in.in:
	Take a different approach as to whether to include vm-limit.o or
	free-hook.o.
	* alloc.c:
	* alloc.c (malloced_storage_size):
	Now we always use the system malloc, update this to use the GNU
	malloc accounting if we are on a glibc system.
	* alloc.c (common_init_alloc_early):
	Call mallopt() if we're on a glibc system.

	* emacs.c:
	* emacs.c (main_1):
	* emacs.c (main):
	* emacs.c (Fdump_emacs):
	* emacs.c (Fkill_emacs):
	Remove use of old glibc malloc hooks that are deprecated and
	removed from more recent versions.
	Call init_ralloc() early in every startup if we were built with
	REL_ALLOC support.
	Remove the use of malloc_set_state(), deprecated.
	* free-hook.c:
	Remove the debugging hooks for 
	* gc.h:
	* ralloc.c:
	* ralloc.c (init_ralloc):
	Avoid using the deprecated glibc malloc hooks in this file.
	* sysdep.c:
	SYSTEM_MALLOC is effectively always defined, don't check it.
	* text.h:
	* text.h (STRIDE_ALIGN_BITS):
	Rename ALIGN_BIGS, ALIGN_MASK, they conflict with ralloc.c.
	* vm-limit.c:
	Rename _NO_MALLOC_WARNING to HAVE_MALLOC_WARNING, reverse its
	sense.

2017-11-23  Aidan Kehoe  <kehoea@parhasard.net>

	* alloca.c (xemacs_c_alloca):
	If this is going to take an unsigned argument, as it always has,
	that unsigned argument needs to have the bit width of a
	size_t. Use it explicitly.
	Do some overflow checking, too, calling memory_full() if we find
	it.
	* lisp.h:
	Updatte the declaration of xemacs_c_alloca().

2017-11-17  Aidan Kehoe  <kehoea@parhasard.net>

	* specifier.c (error_or_quit_failed_instantiator_in_domain): New.
	The first time instantiation has failed for INSTANTIATOR in
	DOMAIN, throw an error. Otherwise, quit. Helpful for stopping an
	error message on every redisplay for an invalid instantiator.
	* fontcolor.c (color_instantiate): Use it.
	* glyphs-eimage.c (jpeg_instantiate): Use it.
	* glyphs-x.c (init_image_instance_from_x_image): Use it.
	* glyphs-x.c (image_instance_add_x_image): Use it.
	* glyphs-x.c (x_xpm_instantiate): Use it.
	* glyphs.c (image_instantiate): Use it.
	* lisp.h: Declare it.
	* specifier.c (vars_of_specifier):
	Make the weak alist that the function uses available at dump
	time.

2017-11-15  Aidan Kehoe  <kehoea@parhasard.net>

	* Makefile.in.in ($(RAW_EXE)):
	Place $start_flags after $ldflags in this make target, for that
	minority of cases where the user has specified LDFLAGS and,
	e.g. -no-pie in $start_flags is necessary to build.

2017-11-15  Aidan Kehoe  <kehoea@parhasard.net>

	* specifier.c (print_specifier):
	Cons less when printing the spec-list of a specifier, avoiding
	stack overflow with recursive specifiers due to the COPY_TREE_P
	argument passed by #'specifier-specs to
	specifier_get_external_inst_list().
	Thank you for the bug report, Raymond Toy!

2017-11-13  Aidan Kehoe  <kehoea@parhasard.net>

	* bytecode.c (bytecode_arithcompare):
	Rename a couple of local variables to quieten the compiler about
	shadowing.
	* doprnt.c (rewrite_floating_spec):
	Mark OBJ as used if HAVE_BIGFLOAT is not defined, to quieten the
	compiler.

2017-11-11  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c:
	* data.c (rem_two_fixnum): New.
	Return the result of the % operator on two EMACS_INTs. Standardise
	on the sign so we don't have to put up with the quirks of the
	local C implementation.
	* data.c (Frem):
	Document the meaning of %, cross reference to the C standard;
	document that the result will have the sign of NUMBER1.
	* lisp.h (EMACS_INT_ABS): New.
	Make a version of abs() available appropriate for an EMACS_INT.
	* doprnt.c (doprnt_1):
	Use this version of abs().

2017-11-09  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c (ccl_driver):
	Fix the build #ifdef CCL_DEBUG.

2017-11-07  Aidan Kehoe  <kehoea@parhasard.net>

	Quieten some compiler warnings:
	* data.c (uint32_t_to_lisp):
	Add a check for sizeof (ITEM), which quietens the
	tautological-constant-compare warning on clang.
	* linuxplay.c (linux_play_data_or_file):
	Declare a ssize_t variable to take the result of read(). There are
	a lot of issues with the types used for bytecounts for the sound
	code, but I'm not going to fix them all today.
	* tls.c:
	Wrap a couple of declarations of Lisp variables in #ifdef WITH_TLS.

2017-11-07  Aidan Kehoe  <kehoea@parhasard.net>

	valid_ichar_p() needs an EMACS_INT argument, not an Ichar
	argument, since it is usually used to examine values extracted
	from a Lisp_Object, and such values will be truncated giving
	incorrect values on a 64-bit build.
	Correct this, update associated C code.

	* doprnt.c (emacs_doprnt):
	Check whether the EMACS_INT value of OBJ is a valid Ichar, rather
	than truncating and giving incorrect values.

	* lisp.h (XCHAR_1):
	Ditto.
	* mule-ccl.c:
	* mule-ccl.c (ccl_driver):
	* mule-ccl.h:
	Most integer values in mule-ccl.{c,h} are stored to using XFIXNUM()
	or XCHAR_OR_FIXNUM(), and so declaring them as int will lead to
	truncation and errors down the line.
	Update their declaration to EMACS_INT, which will always have
	enough bits to handle the result of XFIXNUM().
	Use emacs_snprintf() when debug-printing these values, since we
	have %lx and %ld which fits the width of an EMACS_INT explicitly.
	Make STATUS in struct ccl_program{} into an enum.
	Make EOL_TYPE into an enum.
	Comment out a couple of fields not used in XEmacs.
	* symbols.c (store_symval_forwarding):
	#if HAVE_BIGNUM => #ifdef HAVE_BIGNUM.
	* text.c:
	* text.c (old_mule_non_ascii_valid_ichar_p):
	* text.h (valid_unicode_codepoint_p):
	Make these two functions return Boolints.

2017-11-02  Aidan Kehoe  <kehoea@parhasard.net>

	* editfns.c (make_time):
	Revert part of 417c790fd731, have this function return a list,
	never a cons. Thank you Raymond Toy!

2017-11-05  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h: 
	* fontcolor-xlike-inc.c: 
	Remove the last references to the unified Vcharset_chinese_big5
	charset, especially relevant with XFT. Thank you Stephen Turnbull
	and Raymond Toy!

2017-10-28  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (handle_possible_error_octet):
	Pass CONVERR_USE_PRIVATE to ichar_to_unicode(), allowing it to
	return an error octet, and allowing us to preserve error octets
	seen in external data.
	* mule-coding.c (multibyte_encode): 
	Document a consideration about which error octets to pass through.

2017-10-26  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-coding.c (iso2022_encode):
	Pass the new ALLOW_PRIVATE argument to encode_unicode_to_dynarr().
	* unicode.c:
	* unicode.c (struct unicode_coding_system):
	Add a new allow_private field here, respected on encoding and
	decoding.
	* unicode.c (CODING_SYSTEM_UNICODE_ALLOW_PRIVATE):
	New macro.
	* unicode.c (decode_utf_8):
	Make ALLOW_PRIVATE a Boolint in this function.
	* unicode.c (encode_unicode_to_dynarr):
	Take a new ALLOW_PRIVATE argument.
	* unicode.c (unicode_decode):
	* unicode.c (unicode_encode):
	Use the ALLOW_PRIVATE coding system property in these two functions.
	* unicode.c (unicode_putprop):
	Implement the ALLOW_PRIVATE property.
	* unicode.c (syms_of_unicode):
	Make Qallow_private available.
	* unicode.h:
	Declare encode_unicode_to_dynarr() as having an ALLOW_PRIVATE
	argument.

2017-10-19  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fapropos_internal):
	PREDICATE can call Lisp, use elisp_maphash() instead of
	elisp_maphash_unsafe() in this function.

2017-10-17  Aidan Kehoe  <kehoea@parhasard.net>

	* sequence.c (position):
	Handle START a bit better, use XSTRING_ASCII_BEGIN() so we don't
	have to step through each character for the constant-byte-length
	part of the string.

2017-10-13  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c:
	* doc.c (vars_of_doc):
	* text.c:
	* text.c (syms_of_text):
	Removed unused file-local C variables QSsubstitute,
	Qsubstitute_negated from these files.

2017-10-17  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (STRING_FULLSIZE):
	Correct the definition of this macro under NEW_GC, get the NEW_GC
	build working again.
	Incidentally wake up the buildbot with this commit.

2017-10-07  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Feval):
	Qunbound isn't a symbol, don't check for it once we've verified
	ORIGINAL_FUN is a symbol.

2017-10-09  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (old_mule_ichar_to_unicode):
	Correct the sense of an assertion here, thank you Mike Sperber!

2017-10-06  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h:
	* mule-charset.c:
	* mule-charset.c (syms_of_mule_charset):
	* mule-charset.c (complex_vars_of_mule_charset):
	* mule-charset.c (init_mule_charset):
	* mule-coding.c:
	* mule-coding.c (byte_big5_two_byte_1_p):
	* mule-coding.c (big5_decode):
	* mule-coding.c (big5_encode):
	* mule-coding.c (decode_big5_char):
	* mule-coding.c (big5_char_to_fake_codepoint):
	* mule-coding.c (Fencode_big5_char):
	* mule-coding.c (init_mule_coding):
	* text.c:
	* unicode.c (verify_load_unicode_args):
	Remove the attempt to implement Big5 as one charset under
	unicode-internal; this makes unicode-internal builds incompatible
	with byte-code compiled by 21.4 and even source code,
	e.g. leim/quail/Punct-B5.el.

2017-10-04  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (old_mule_ichar_to_unicode):
	Assert we haven't been handed an Ichar less than 256 in value.
	* text.c (unicode_internal_handle_bad_ichar_to_unicode): New.
	Handle a value passed to the inline ichar_to_unicode(), if CHR is
	not an official Unicode character and FAIL is not
	CONVERR_USE_PRIVATE. 
	* text.c (Fmake_char):
	Make this API compatible with GNU and with pre-unicode-internal,
	return a private character by default if HANDLE-ERROR is nil. 
	* text.c (Fchar_to_unicode):
	Return nil if HANDLE-ERROR is FAIL or nil here.
	* text.c (Funicode_to_char):
	* text.c (Fchar_to_charset_codepoint):
	* text.c (Fchar_charset):
	* text.c (Fsplit_char):
	Update the docstrings in this three functions.
	* text.h (ichar_to_unicode):	
	Make the implementation of this a bit more realistic with
	UNICODE_INTERNAL, use the new
	unicode_internal_handle_bad_ichar_to_unicode().

2017-09-30  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (old_mule_non_ascii_valid_ichar_p):
	Use CHAR_CODE_LIMIT here rather than a magic constant.
	* text.h:
	Give CHAR_CODE_LIMIT a more useful value on old-Mule, especially
	helpful for #'test-chars in mule-tests.el

2017-09-28  Stephen J. Turnbull  <stephen@xemacs.org>

	Fix crash in unicode_to_charset_codepoint_raw.

	* mule-coding.c (vars_of_mule_coding):
	Fix broken staticpro of Vbig5_precedence (cause of crash).

	* unicode.c (vars_of_unicode):
	Delete duplicated initialization of Vprecedence_array_cons_to_array.
	(Defect, but probably harmless.)

2017-09-25  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Fchar_to_int):
	Clarify the details of the integer to character mapping in the
	docstring, mentioning Unicode.
	* elhash.c (Fdefine_hash_table_test):
	Correct my understanding of the required range for hash values;
	since we get the modulus of the hash value base HT->SIZE, the most
	significant bits don't matter as much.
	* fns.c (Fstring_lessp):
	Fix a typo in a comment here.

2017-09-24  Aidan Kehoe  <kehoea@parhasard.net>

	* chartab.c (chartab_data_validate):
	Silence an unused-variable compiler warning here.
	* doprnt.c (bignum_to_string_1):
	Fix a bug in this function, thank you clang++4.0.
	* gc.c (KKCC_DO_CHECK_FREE):
	Avoid an unused-variable warning when not ERROR_CHECK_GC.
	* gccache-x.c (describe_gc_cache):
	Fix a bug in this function, thank you clang++4.0.
	* mule-charset.c (validate_charset_offset_or_size):
	Be a bit more idiomatic in getting an external list length, and
	silence a compiler warning while doing so.
	* redisplay.c (create_text_block):
	* redisplay.c (create_string_text_block):
	Fix the same bug in these two functions, thank you clang++4.0.
	* regex.c (re_compile_fastmap):
	* regex.c (re_search_2):
	* regex.c (re_match_2_internal):
	Silence compiler warnings in this file, both when #define EMACS
	and when not.
	* text.c (copy_buffer_text_out):
	Silence compiler warning here, add an assert to ensure the
	approach is OK.
	* unicode.c (free_precedence_array):
	* unicode.c (recalculate_unicode_precedence):
	Silence unused variable warnings in these two functions.

2017-09-24  Aidan Kehoe  <kehoea@parhasard.net>

	Error when passed values that would overflow, #'make-vector,
	#'make-string, #'make-bit-vector
	* lisp.h:
	Make ARRAY_DIMENSION_LIMIT more realistic; provide analagous
	but larger STRING_BYTE_TOTAL_SIZE_LIMIT,
	BIT_VECTOR_TOTAL_SIZE_LIMIT.
	* lisp.h (struct Lisp_Vector):
	SIZE is now an Elemcount, not a long.
	* alloc.c:
	Provide Vstring_total_size_limit, Vbit_vector_total_size_limit.
	* alloc.c (make_uninit_vector):
	Do our size calculation with EMACS_UINT; assert we haven't
	overflowed.
	* alloc.c (Fmake_vector):
	Check LENGTH for range more correctly.
	* alloc.c (Fvector):
	Check NARGS for range.
	* alloc.c (make_bit_vector_internal):
	Document why we don't need to check SIZEI for range in this
	function.
	* alloc.c (make_bit_vector_from_byte_vector):
	Check the range here, no point creating a bit vector where the
	trailing elements can't be referenced from Lisp.
	* alloc.c (Fmake_bit_vector):
	Check LENGTH using BIT_VECTOR_TOTAL_SIZE_LIMIT; check that BIT is
	a bit before allocating anything.
	* alloc.c (Fbit_vector):
	Check NARGS for range.
	* alloc.c (make_uninit_string):
	Do the length calculation and overflow assertion check with
	EMACS_UINTs, so GCC doesn't eliminate the check when optimising.
	* alloc.c (Fmake_string):
	Check LENGTH for possible overflow in this function.
	* alloc.c (Fstring):
	Check NARGS for possible overflow in this function.
	* alloc.c (vars_of_alloc):
	Provide, document `string-total-size-limit',
	`bit-vector-total-size-limit'.
	* event-stream.c (Frecent_keys):
	Use ARRAY_DIMENSION_LIMIT correctly here.
	* sequence.c (concatenate):
	Check for overflow before allocating strings, vectors, using
	unsigned arithmetic so GCC doesn't optimize away signed checks.

2017-09-24  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (do_symval_forwarding):
	* symbols.c (store_symval_forwarding):
	If we have bignum support, and a const-integer or built-in integer
	value (bit width one more than Lisp fixnums) needs bignum support
	to pass its value to Lisp, use that support.

2017-09-23  Aidan Kehoe  <kehoea@parhasard.net>

	* process.c (read_process_output): Have this return a Bytecount,
	not a Charcount; the precise number of characters wasn't used by
	our callers, so we were usually calling bytecount_to_charcount()
	for no reason.
	* process.h: Update the declaration of this function.

2017-06-28  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (Fchar_width):
	* text.c (syms_of_text):
	Move #'char-width to C, to allow it to be implemented in terms of
	ichar_columns(), since with unicode-internal (charset-width
	(char-charset X)) can now error.

2017-05-30  Aidan Kehoe  <kehoea@parhasard.net>

	* emacs.c (vars_of_emacs):
	If there's no associated #define, initialise xemacs-extra-name to
	nil.

2017-05-11  Aidan Kehoe  <kehoea@parhasard.net>

	* editfns.c (Fencode_time):
	Restrict the possible integer values passed as the ZONE argument
	to this function, as per the OS X and Linux documentation for
	tzset(3).

2017-05-11  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (resize_string):
	Use set_string_byte() here for the zero termination.
	* text.h:
	Make string_byte(), set_string_byte() into inline functions to
	work around g++ type (+/- template) difficulties with the macro
	versions.

2017-04-27  Stephen J. Turnbull  <stephen@xemacs.org>

	* chartab.c (char_table_print_preprocess):
	(char_table_nsubst_structures_descend):
	data.c (build_fixnum_to_char_map):
	Fix chartab_range initializers.

2017-04-21  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (intern_istring):
	Accept a vector PACKAGE here too, thank you for the bug report,
	Raymond Toy.	

2017-05-17  Aidan Kehoe  <kehoea@parhasard.net>

	* buffer.c (Fgenerate_new_buffer_name):
	Start the count here at <2> as documented, rather than 3.

2017-04-19  Aidan Kehoe  <kehoea@parhasard.net>

	* buffer.c:
	* buffer.c (get_buffer):
	Vbuffer_alist is an internal list, no need to GCPRO and call
	Fassoc.
	* buffer.c (Fgenerate_new_buffer_name):
	Update this to match GNU's current API; if NAME starts with a
	space, generate the candidate new buffer names using get_random(),
	start with suffixes of <2> rather than <1>.
	Don't make new Lisp strings or call get_buffer() in the loop.
	Copy string extent info to the new buffer name if NAME has extent
	info.

2017-03-19  Aidan Kehoe  <kehoea@parhasard.net>

	* gc.c (GC_CONS_THRESHOLD):
	Increase this (from about 2 megabytes to about 32) and the related
	incremental-GC defaults, giving better performance with modern RAM
	sizes.

2017-03-15  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read1):
	If a #@INTEGER docstring comment has an unreasonably large
	INTEGER, error, instead of silently wrapping. Thank you for the
	bug report, Hao Sun.

2017-03-13  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Flsh):
	Update mid.gmane.org to mid.xemacs.org. We miss you, Gmane.

2017-03-12  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c:
	* file-coding.c (coding_system_type_create):
	Sigh, that improved things but didn't resolve them. Revert the
	revert, and add a dummy integer to the no_conversion_coding_system
	structure.

2017-03-12  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c:
	* file-coding.c (coding_system_type_create):
	Revert to the pre-merge description of the no-conversion coding
	system type, the approach I had taken on the unicode-internal side
	leads to dumping problems with the C++ build.
	Thank you for the buildbot reports, Matsl!

2017-03-12  Aidan Kehoe  <kehoea@parhasard.net>

	Make some small changes to placate the buildbot.
	* charset.h (Vcharset_control_1):
	Make this available on non-Mule.
	* redisplay-xlike-inc.c:
	Restore ALLOCATE_RUNS_TEXT() for nonmule.
	* redisplay-xlike-inc.c (separate_textual_runs_xft_nomule):
	* redisplay-xlike-inc.c (separate_textual_runs_xft_mule):
	Declare TEXT_STORAGE as non-const, even for those functions where
	it is not modified, it is not worth the book-keeping to fight
	with the C++ compile for it.
	* text.c (ibyte_string_displayed_columns):
	Removed a compiler-placating USED() that's no longer necessary.

2017-03-12  Aidan Kehoe  <kehoea@parhasard.net>

	* text.h (itext_ichar_eql):
	Don't crash when ERROR_CHECK_TEXT is turned on and we're comparing
	an ASCII CH to a non-ASCII *str.

2017-03-11  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay-xlike-inc.c (separate_textual_runs_xft_mule):
	Correct a thinko here introduced in the last change, the new name
	is valid_unicode_leading_surrogate(). Thank you for the report,
	Mike Sperber!
	* redisplay-xlike-inc.c (separate_textual_runs_mule):
	And correct a problem with non-ASCII text introduced to the
	server-side X11 redisplay code while merging the unicode-internal
	branch.

2017-03-10  Aidan Kehoe  <kehoea@parhasard.net>

	Get the recent redisplay changes building on mswindows with
	unicode-internal.

	* file-coding.c (no_conversion_decode):
	* mule-coding.c (shift_jis_decode):
	* mule-coding.c (big5_decode):
	* mule-coding.c (restore_left_to_right_direction):
	* mule-coding.c (ensure_correct_direction):
	* mule-coding.c (iso2022_decode):
	Cast the Dynarr argument to DECODE_ADD_BINARY_CHAR(), now it's an
	inline function and the type checking chokes when passed an
	unsigned_char_dynarr *.
	* lisp.h:
	Declare Fvalues().

	* redisplay-msw.c:
	* redisplay-msw.c (separate_textual_runs):
	* redisplay-msw.c (mswindows_output_cursor):
	* redisplay-msw.c (mswindows_output_string):
	* redisplay-msw.c (mswindows_text_width):
	Merge the recent redisplay change that avoids needless Ibyte * ->
	Ichar conversion into the mswindows unicode-internal code.

	* redisplay-xlike-inc.c (separate_textual_runs_xft_mule):
	Correct this in passing, use valid_utf_16_leading_surrogate()
	instead of its old name.
	* sequence.c:
	Qsubstitute is now in general-slots.h, remove it from here.

2017-03-03  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (Fstring_match_p):
	If START is specified, adjust the returned value accordingly.

2017-02-20  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c:
	Add #'xemacs-hash-table-iterator-next, the runtime part of
	#'with-hash-table-iterator. 
	* elhash.c (syms_of_elhash):
	Make it available to C.

2017-02-18  Aidan Kehoe  <kehoea@parhasard.net>

	Further bug fixing in the regexp interval handling code, thank you
	for the bug report, Stephen Turnbull.

	* regex.c:
	* regex.c (itext_ichar_eql): Provide this for the external
	programs that use regex.c
	* regex.c (GET_UNSIGNED_NUMBER):
	Revise this not to eat the next character after a number, even
	with a zero-length number. Avoids a specific error seen with VM
	reported by Stephen Turnbull, which I finally manage to provoke
	today.
	* regex.c (BAD_INTERVAL): New, macro to give up on encountering an
	invalid macro or to fall back to parsing as a literal.
	* regex.c (regex_compile):
	1. Default LOWER_BOUND to 0 when parsing intervals, as does GNU
	since 2000.
	2. Error explicitly if an interval starts with +.
	3. Use BAD_INTERVAL() as appropriate.
	4. Adapt uses of GET_UNSIGNED_NUMBER() to its new calling
	convention.

2017-02-14  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Faref):
	Don't return zero with (aref STRING (length STRING)), error
	correctly instead.

2017-02-11  Aidan Kehoe  <kehoea@parhasard.net>

	New function, read_uninterned_symbol().
	* lread.c:
	* lread.c (read_atom_0):
	Make SAW_A_BACKSLASH into a Boolint.
	* lread.c (read_uninterned_symbol):
	New function, no point passing UNTERNED_SYMBOL into read_atom()
	when we know it's constant in value.
	* lread.c (read_atom):
	Move the body of read_uninterned_symbol() there.
	* lread.c (read_rational):
	* lread.c (read1):
	Call read_atom() with its new calling convention.

2017-02-11  Aidan Kehoe  <kehoea@parhasard.net>

	* console-stream.c (stream_text_width):
	* data.c (build_fixnum_to_char_map):
	* data.c (vars_of_data):
	* doprnt.c (fixnum_to_string):
	* doprnt.c (bignum_to_string_1):
	* doprnt.c (parse_doprnt_spec):
	* event-xlike-inc.c (endif):
	* print.c (Fwrite_sequence):
	* print.c (print_internal):
	* search.c (boyer_moore):
	* tests.c (Ftest_character_tell):
	* text.c:
	* text.c (ibyte_string_displayed_columns):
	Silence various compiler warnings on non-MULE.

2017-02-11  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (define_key_check_and_coerce_keysym):
	Accept (shift a) as equivalent to (A) in this function.
	Be cheaper about checking for one-character keysyms.
	* keymap.c (define_key_parser):
	Use EXTERNAL_LIST_LOOP_3() here when parsing an external list.
	* keymap.c (Fdefine_key):
	Update the docstring to reflect this change.

2017-02-11  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c:
	* doprnt.c (write_fmt_string_va):
	* doprnt.c (emacs_vsnprintf):
	When determining an upper bound for the number of format specs,
	pay attention to '*' as well as '%', write_fmt_string_va(),
	emacs_vsnprintf().
	Assert that we haven't been passed a '$', since that makes
	calculating an upper bound on the number of arguments to expect
	harder.

2017-02-11  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h:
	* lisp.h (PRIVATE_UNVERIFIED_LIST_LOOP_7):
	If SIGNALP is zero, actually stop when we detect a circular list,
	by setting HARE to Qunbound.
	Document this in the comment to SAFE_LIST_LOOP_3.
	* specifier.c (Fvalid_specifier_tag_set_p):
	Use SAFE_LIST_LOOP_3() in this function, now it doesn't choke on
	circular lists.

2017-02-11  Aidan Kehoe  <kehoea@parhasard.net>

	Be more careful to treat external lists as lists that may be
	malformed or circular.
	* eval.c:
	* eval.c (wants_debugger):
	Use EXTERNAL_LIST_LOOP_2 here for both lists.
	* eval.c (skip_debugger):
	Use EXTERNAL_LIST_LOOP_2 here for CONDITIONS, Vdebug_ignored_errors
	* eval.c (For):
	* eval.c (Fand):
	* eval.c (Fif):
	* eval.c (Fcond):
	* eval.c (Fprogn):
	* eval.c (Fprog1):
	* eval.c (Fprog2):
	* eval.c (FletX):
	* eval.c (Flet):
	* eval.c (Fwhile):
	Be more careful about GCPRO and dealing with argument lists that
	are not true lists in these special operators.

	* eval.c (Fwhen):
	* eval.c (Funless):
	Document why these two macros don't need the same GC protection
	as the special operators.

	* eval.c (Fquote):
	* eval.c (Ffunction):
	Be cheaper about checking for a wrong number of arguments here.

	* eval.c (Fthrow):
	GCPRO TAG, VALUE in this special operator, we didn't previously.
	* lread.c (build_load_history):
	Use our macros for external lists to traverse Vload_history,
	Vcurrent_load_list.
	* tls.c (tls_negotiate):
	KEYLIST is an external list and thus may be circular, use
	EXTERNAL_LIST_LOOP_2 appropriately.

2017-02-10  Aidan Kehoe  <kehoea@parhasard.net>

	Sync the #'run-hook family of functions' docstrings, APIs from
	GNU. Add #'run-hook-wrapped.
	* eval.c:
	* eval.c (Frun_hook):
	Accept zero arguments as does GNU.
	* eval.c (run_hook_wrapped_funcall): New.
	* eval.c (Frun_hook_wrapped): New, API from GNU.
	* eval.c (run_hook_with_args_in_buffer_1): Rename
	run_hook_with_args_in_buffer to this, make it static, add an extra
	FUNCALL argument to allow implementation of #'run-hook-wrapped.
	* eval.c (run_hook_with_args_in_buffer):
	Wrap run_hook_with_args_in_buffer_1(), providing a slightly more
	sane API.
	* eval.c (va_run_hook_with_args_in_buffer):
	Call run_hook_with_args_in_buffer_1(), no need for the extra C
	function call here.
	* eval.c (run_hook_with_args_in_buffer_trapping_problems_1):
	Ditto.
	* eval.c (syms_of_eval):
	Make #'run-hook-wrapped available.

2017-02-10  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (run_hook_with_args_in_buffer):
	Use GC_EXTERNAL_LIST_LOOP_2 in this function, for GC protection of
	the list structure and for detection of circular lists.
	When treating t as the value within a local hook to indicate that
	the global hook value should be used, only call the global hook
	once.
	Be more consistent about documented GC protection requirements,
	require that all of ARGS have GC protection. This won't affect
	anything, no non-interned hook symbols are used from the C code,
	the Lisp interpreter will GC protect uninterned symbols, and there
	is extensive (actually overdone) GCPROing in most C callers.

2017-02-09  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c (Vunread_command_events_tortoise,
	unread_command_events_counter):
	New variables, keep track of possible circularity in
	#'unread-command-events.
	* event-stream.c (unread_command_events_changed): New function,
	magic handler for #'unread-command-events, needed to keep the
	circularity tracking in sync.
	* event-stream.c (Fnext_event):
	Check for circularity when examining unread-command-events.
	* event-stream.c (vars_of_event_stream):
	GC protect those variables used for circularity-checking of
	unread-command-events.

2017-02-09  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c (detect_input_pending):
	Don't use Fsafe_length(), it's now in Lisp and we have the macro
	available to do the same in C.
	* fns.c (Fsafe_length): Removed. Now in subr.el.
	* fns.c (syms_of_fns): Ditto.
	* lisp.h: Ditto.

2017-01-25  Aidan Kehoe  <kehoea@parhasard.net>

	Don't eat the next non-digit Ibyte after a backreference,
	regex.c. Thank you Jerry James and the Fedora users!
	* regex.c:
	* regex.c (GET_UNSIGNED_NUMBER_1): New, like GET_UNSIGNED_NUMBER,
	but leave P pointing at the next non-digit.
	* regex.c (GET_UNSIGNED_NUMBER): Use it.
	* regex.c (regex_compile): Use it when parsing backreferences.

2017-01-23  Jeff Sparkes  <jsparkes@gmail.com>

	* glyphs-eimage.c (gif_instantiate_unwind): Update for giflib 5.1
	API change.
	(gif_decode_error_string): Take an error argument for new API.
	(gif_instantiate): New API changes.

2017-01-23  Aidan Kehoe  <kehoea@parhasard.net>

	Declare get_random() as returning an EMACS_INT, long does not
	necessarily have all the bits of a full-sized emacs word.
	Declare seed_random as taking an EMACS_INT for symmetry.

	* fns.c (Frandom):
	* lisp.h:
	* number-mp.c (bignum_random):
	* sysdep.c (seed_random):
	* sysdep.c (get_random):

2017-01-20  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c (re_match_2_internal):
	Use %ld in DEBUG_MATCH_PRINT2, since we're printing old_regstart,
	a ssize_t.
	* regex.h:
	Make regoff_t a Bytecount, not an int. Bytecount becomes ssize_t
	when emacs is not #defined.

2017-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (find_charsets_in_ibyte_string):
	STR and LEN are now used on non-Mule, remove the annotation that
	they're unused, hopefully placating the buildbot.

2017-01-15  Aidan Kehoe  <kehoea@parhasard.net>

	Merge further after hg's automatic merging of recent trunk
	changes. Some of my redisplay changes were invasive and change the
	approach we should take with GTK.
	
	* console-gtk.h:
	Remove gtk_get_gc(), restored by hg fetch.

	* redisplay-gtk.c:
	No need for the separate_textual_runs approach of the X11 code,
	pango should do all the fishing-for-appropriate-fonts work.
	
	* redisplay-gtk.c (gdk_draw_text_image):
	Adjust this function's signature now we no longer use textual runs.
	* redisplay-gtk.c (gtk_text_width):
	Adjust this function's signature to take an array of Ibytes,
	rather than an Ichar_dynarr.
	* redisplay-gtk.c (gtk_output_string):
	Ditto.
	Don't use the textual runs, Pango's responsibility will be (is)
	working out character coverage and so on.
	* redisplay-xlike-inc.c (XLIKE_output_display_block):
	Remove an errant merged Dynarr_reset().

2017-01-15  Aidan Kehoe  <kehoea@parhasard.net>

	Implement GNU's #'looking-at-p, #'string-match-p in C, the regexp
	code already provides for them on the C level.
	Don't provide GNU's 'inhibit-changing-match-data, *adding* special
	variables doesn't make our life better.
	* search.c (looking_at_1):
	New argument NODATA, specifying that the match data are not to be
	modified.
	* search.c (Flooking_at):
	Use the new signature.
	* search.c (Fposix_looking_at):
	Ditto.
	* search.c (Flooking_at_p): New. Equivalent to #'looking-at, but
	do not modify the match data even on success.
	* search.c (fast_string_match): Update the documentation comment
	for this.
	* search.c (Fstring_match_p): New. Equivalent to #'string-match,
	but do not modify the match data on success.
	* search.c (syms_of_search):
	Make Fstring_match_p, Flooking_at_p available here.
>>>>>>> other

2017-01-15  Aidan Kehoe  <kehoea@parhasard.net>

	Drop a lot of needless Ibyte -> Ichar conversion,
	redisplay-msw.c.
	This is the mswindows code corresponding to 64c9a3a479ce .

	* redisplay-msw.c (textual_run):
	No need for the number of Ichars in this structure.
	* redisplay-msw.c (separate_textual_runs):
	Rework this on the model of separate_textual_runs_xft_mule();
	just do the TO_EXTERNAL_FORMAT() once, not for every run seen,
	store the WCHARs and the textual runs on the stack.
	* redisplay-msw.c (mswindows_output_cursor):
	No need to call separate_textual_runs() in this function, call
	TO_EXTERNAL_FORMAT ourselves.
	* redisplay-msw.c (mswindows_output_string):
	Take an Ibyte pointer and a Bytecount rather than an Ichar_dyarr *
	here.
	* redisplay-msw.c (mswindows_output_display_block):
	Stack-allocate Ibytes rather than using an Ichar_dynarr here, as
	an argument to mswindows_output_string.
	* redisplay-msw.c (mswindows_text_width):
	Use the new calling convention for separate_textual_runs.

2017-01-14  Aidan Kehoe  <kehoea@parhasard.net>

	Fix some warnings, C99isms, to get the build working on Win32.
	No variable-length arrays for us!
	* doprnt.c (fixnum_to_string):
	* doprnt.c (Fnumber_to_string):
	* doprnt.c (get_doprnt_c_args):
	* doprnt.c (emacs_doprnt):
	* doprnt.c (write_fmt_string_va):
	* doprnt.c (emacs_vsnprintf):
	* tests.c (Ftest_fixnum_to_string):
	snprintf() isn't necessarily available, use sprintf() when
	cross-checking fixnum_to_string().

2017-01-14  Jerry James  <james@xemacs.org>

	* config.h.in (_POSIX_C_SOURCE): Do not redefine if set by system
	headers.
	(alloca): Ditto.

2017-01-14  Jerry James  <james@xemacs.org>

	* events.c (upshift_event): Fix sequence point error.

2017-01-14  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (lisp_to_uint32_t):
	Vmost_positive_fixnum is not a Lisp_Object, don't pass it to
	check_integer_range().
	Be explicit about casting to UINT_32_BIT when given a positive
	fixnum ITEM; there is an intended loss of precision with 64-bit
	EMACS_INTs.
	* select.c:
	* select.c (Fown_selection_internal):
	Update these comments to reflect current reality.

2017-01-10  Aidan Kehoe  <kehoea@parhasard.net>

	* sequence.c (Freverse):
	Use make_uninit_vector, make_uninit_string in this function, no
	need for a stack staging area.

2017-01-08  Aidan Kehoe  <kehoea@parhasard.net>

	Remove format(), recently introduced and used by almost nothing.
	Within #'format-into, if STREAM is the symbol `string', return a
	string reflecting the arguments rather than STREAM.
	This is the functionality of format(); use it in the one place
	that format() was used.

	Restore format as a local variable name, from fermat.
	* doprnt.c:
	* doprnt.c (parse_doprnt_spec):
	* doprnt.c (emacs_vsprintf_string):
	* doprnt.c (emacs_sprintf_string):
	* doprnt.c (emacs_vasprintf):
	* doprnt.c (emacs_asprintf):
	* doprnt.c (emacs_vsnprintf):
	* doprnt.c (emacs_snprintf):
	* doprnt.c (format_into):
	* doprnt.c (format):
	* callint.c:
	* callint.c (callint_prompt):
	* device-x.c (x_init_device):
	* frame-x.c (x_wm_hack_wm_protocols):
	* glyphs.c (decode_device_ii_format):
	* glyphs.c (decode_image_instantiator_format):
	* glyphs.c (valid_image_instantiator_format_p):
	* lisp.h:
	* lisp.h (DECLARE_INLINE_HEADER):
	* lisp.h (qxestrcoll):
	* print.c (debug_out_lisp):
	* redisplay.c (add_disp_table_entry_runes_1):
	* select-x.c (x_reply_selection_request):
	* select-x.c (x_handle_selection_request):
	* select-x.c (Fx_get_cutbuffer_internal):
	* select-xlike-inc.c:
	* select-xlike-inc.c (selection_data_to_lisp_data):
	* strftime.c (strftime):
	* text.c (qxesprintf):

2016-12-30  Aidan Kehoe  <kehoea@parhasard.net>

	Quiet compiler warnings, recent gcc-5, g++-5, clang-3.5.
	
	* buffer.c (cleanup_buffer_undo_lists):
	* buffer.c (Fget_file_buffer):
	* chartab.c (chartab_data_validate):
	* event-Xt.c (x_reset_modifier_mapping):
	* event-Xt.c (store_modifier):
	* event-stream.c (execute_help_form):
	* event-stream.c (Fnext_event):
	* fns.c (Fnbutlast):
	* fns.c (Fbutlast):
	* fns.c (Fold_assoc):
	* fns.c (Fold_assq):
	* fns.c (Fold_rassq):
	* fns.c (Fold_rassoc):
	* fontcolor-x.c (x_font_instance_properties):
	* gui-x.c (button_item_to_widget_value):
	* gutter.c:
	* gutter.c (gutter_visible_validate):
	* rangetab.c (rangetab_data_validate):
	* regex.c (re_match_2_internal):
	* search.c (search_buffer):
	* sequence.c (Fcount):
	* sequence.c (Fassoc):
	* sequence.c (Fassq):
	* sequence.c (FassocX):
	* sequence.c (Frassoc):
	* sequence.c (Frassq):
	* sequence.c (FrassocX):
	* sequence.c (list_delete_duplicates_from_end):
	* sequence.c (Ffill):
	* sequence.c (Fnset_exclusive_or):
	* sound.c (Fplay_sound_file):
	Silence unused variable warnings, either by removing the
	corresponding variables or marking them with USED (e.g. in those
	cases where they are necessary macro arguments). 

	* elhash.c (static const struct sized_memory_description
	hash_table_test_description_1): Renamed to
	hash_table_test_description[], the old definition of the former is
	not used. 
	
	* text.h:
	Cast the result of string_byte() to Ibyte, quieting the C++
	compiler.

	* lisp.h (PRIVATE_UNVERIFIED_LIST_LOOP_7):
	GCC feels that the result of the first argument to && is unused;
	switch to the ternary operator to quiet it. 
	* lisp.h (GET_EXTERNAL_LIST_LENGTH):
	Mark GELL-elt used to quiet the compiler.
	* lisp.h (XCLEAR_STRING_MODIFFP):
	No need for the comma operator, let this macro return 0.
	* number.h (make_integer, make_unsigned_integer):
	Sigh, when a C type is greater in size than a long, and so we're
	calling make_bignum_ll, the compiler complains about the
	make_bignum call (which will never be executed) with the larger
	value. Cast this to quiet it.

	Couple of more changes flushed out by the union build (thank you
	Mats Lidell, Raymond Toye and the buildbot):
	* glyphs-eimage.c (gif_instantiate):
	Bah, Vmost_positive_fixnum is not a Lisp_Object.
	* lisp.h (PRIVATE_UNVERIFIED_LIST_LOOP_7):
	Massage this to placate the Union build.

2016-12-30  Aidan Kehoe  <kehoea@parhasard.net>

	* glyphs-x.c (x_redisplay_widget):
	Use a malloc'd external string here, no point stuffing alloca'd
	data into the lwlib widget's text.
	* glyphs-x.c (x_widget_instantiate):
	If this is a text widget, store a malloc'd copy of the text into
	the lwlib widget.

2016-12-30  Aidan Kehoe  <kehoea@parhasard.net>

	* src/glyphs-eimage.c:
	Do some more validation on the GIF's height and width.
	Document why we won't run past the end of InterlacedOffset[] when
	reading an interlaced GIF. Add assertions to check this.
	Mask the pass count to quiet the compiler warning about running
	past the end.

2016-12-29  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h:
	Move END_C_DECLS after all the function declarations, following
	9bf84e216bf869, my change of 2016-10-29, which put some of them
	after it.

2016-12-27  Aidan Kehoe  <kehoea@parhasard.net>

	* menubar.c (Fnormalize_menu_text):
	Use the correct offset when writing the slack between the %% or %_
	sequences encountered to our resizing output stream.

2016-12-29  Aidan Kehoe  <kehoea@parhasard.net>

	* fontcolor-gtk.c:
	* fontcolor-gtk.c (gtk_font_describe_face):
	Build up the list of faces in a more reasonable way, don't try to
	merge sequences by using a string as the last argument to
	#'append.
	* fontcolor-gtk.c (gtk_font_list):
	Be a little more efficient here, don't traverse the entire
	constructed list of results with every face added.

2016-12-29  Aidan Kehoe  <kehoea@parhasard.net>

	Tidy up GTK keysym handling.

	* event-gtk.c (gtk_keysym_to_emacs_keysym):
	* event-gtk.c (gtk_to_emacs_keysym):
	Remove the SIMPLE_P argument to these, nothing uses it.
	* event-gtk.c:
	* event-gtk.c (keysym_obeys_caps_lock_p):
	Simplify and generalise this, use gdk_keyval_convert_case(), cf. the
	X11 change using XConvertCase().
	* event-gtk.c (gtk_event_to_emacs_event):
	Clarify and comment on Bill Perry's approach to whether shift
	should be stripped from graphic keysyms. His approach works quite
	well and is cheaper than the X11 approach, happily.
	* event-gtk.c (gtk_reset_key_mapping):
	Don't use the second argument to gtk_keysym_to_emacs_keysym().

2016-12-29  Aidan Kehoe  <kehoea@parhasard.net>

	* device-gtk.c (gtk_device_init_x_specific_cruft):
	Use the X Display *, not the GdkDisplay *, when telling the IO
	code to pay attention to the SIGIO signals associated with this
	Display.

2016-12-27  Aidan Kehoe  <kehoea@parhasard.net>

	Some by-hand tweaks to get the GTK branch building with recent
	changes.
	* glyphs-gtk.c (register_cursor_name):
	intern_istring()'s calling convention has changed, use the new
	one.
	* lisp.h:
	Declare Fmapconcat here.
	* select-xlike-inc.c (selection_data_to_lisp_data):
	Be more careful about using DEVICE_XATOM_TIMESTAMP().
	* ui-byhand.c (Fgtk_label_get):
	Correct some bad merging here.

2016-12-19  Aidan Kehoe  <kehoea@parhasard.net>

	* print.c (Fwrite_sequence):
	If END is specified, don't error on a circular list in this
	function.

2016-12-20  Aidan Kehoe  <kehoea@parhasard.net>

	Drop a lot of needless Ibyte -> Ichar conversion, redisplay.
	The most benefit to this will be from the GTK and XFT code, and is
	not yet directly visible.

	* cm.c (send_string_to_tty_console):
	Declare this with its STR argument const.
	* console-gtk.h:
	gtk_output_string(), take a vector of Ibytes rather than a Dynarr
	of Ichars.
	* console-impl.h (struct console_methods):
	(*text_width_method)(), take an Ibyte pointer and a byte length rather
	than an array of Ichars.
	(*output_string_method)(), take an Ibyte pointer and a byte length
	rather than an Ichar Dynarr.
	* console-stream.c (stream_text_width):
	Return a charcount here rather than just the byte length.
	* console-tty.h:
	Update this to reflect the const argument to
	send_string_to_tty_console().
	* console-x.h:
	Update x_output_string()'s prototype to take an Ibyte vector and
	length rather than an Ichar Dynarr.
	* faces.c (face_cachel_charset_font_metric_info):
	Take an array of Binbyte as an argument rather than unsigned char
	*, face_cachel_charset_font_metric_info().
	* faces.h:
	Ditto
	* frame.c:
	No need for a static Dynarr for the title string, an alloca'd
	buffer space is fine.
	* frame.c (generate_title_string):
	Ditto.
	* frame.c (init_frame):
	No need to allocate that new Dynarr when creating the frame.
	* glyphs.c (query_string_geometry):
	Make sure the face cachel is complete both when querying the
	height *and* the width.
	Compute the descent when it is requested on its own, don't require
	that the height be also requested.
	* lisp.h:
	Remove find_charsets_in_ichar_string(), no longer used.
	Remove ichar_string_displayed_columns(), no longer used.
	Remove convert_ibyte_string_into_ichar_dynarr(), no longer used.
	Remove convert_ichar_string_into_ibyte_dynarr(), no longer used.
	Remove convert_ichar_string_into_malloced_string(), no longer used.
	* redisplay-output.c:
	* redisplay-output.c (redisplay_output_layout):
	Call (*output_string_method) with its new calling convention,
	which removes the necessity to transform our Lisp string argument
	to an array of Ichars.
	* redisplay-tty.c:
	Remove tty_output_ichar_dynarr(), no longer used.
	* redisplay-tty.c (tty_text_width):
	Update the reflect the new Ibyte * calling convention.
	* redisplay-tty.c (tty_output_display_block):
	Use a stack-allocated array here for the text, rather than a
	Dynarr.
	* redisplay-tty.c (tty_output_ibyte_string):
	Take a const *STR argnument, rather than just an Ibyte * pointer.
	Remove tty_output_ichar_dynarr(), no longer used.
	* redisplay-xlike-inc.c:
	* redisplay-xlike-inc.c (struct textual_run):
	PTR is now an Extbyte, reflecting external-format data.
	Add ALLOCATE_RUNS_TEXT, a platform-specific #define allowing
	e.g. the Xft code to transform to UTF-16 when allocating the stack
	space for the text passed to it.
	* redisplay-xlike-inc.c (separate_textual_runs_nomule):
	Just use memcpy() in this, don't re-implement it, now we no longer
	have an Ichar * argument.
	* redisplay-xlike-inc.c (separate_textual_runs_xft_nomule):
	Trust the external-format conversion we did when allocating the
	space for our text.
	* redisplay-xlike-inc.c (separate_textual_runs_xft_mule):
	Ditto. Support non-BMP characters correctly.
	* redisplay-xlike-inc.c (separate_textual_runs_mule):
	Move to taking a vector of Ibytes rather than a vector of
	Ichars.
	Compress the loop of this function if the whole string is
	ASCII, use the skip_ascii inline function.
	* redisplay-xlike-inc.c (separate_textual_runs):
	Take a vector of Ibytes rather than a vector of Ichars.
	* redisplay-xlike-inc.c (XLIKE_text_width_single_run):
	On XFT builds, all XFT runs are of dimension two.
	* redisplay-xlike-inc.c (XLIKE_text_width):
	Take a vector of Ibyte * rather than of Ichar * here.
	* redisplay-xlike-inc.c (XLIKE_output_display_block):
	No need for a Dynarr of Ichars, when outputting strings, use
	Ibyte vectors allocated on the stack.
	* redisplay-xlike-inc.c (XLIKE_output_string):
	Don't take a Dynarr of Ichars, take a vector of Ibytes and a
	length.
	* redisplay.c:
	Remove redisplay_window_text_width_ichar_string(), no longer used.
	* redisplay.c (redisplay_window_text_width_string):
	No longer take a RELOC argument in this function; take just an
	Ibyte vector, a font index, and a byte length.
	* redisplay.c (redisplay_text_width_string):
	No longer implement this in terms of the Ichar width functions.
	* redisplay.c (add_ichar_rune_1):
	* redisplay.c (generate_fstring_runes):
	* redisplay.h:
	Update the declaration for redisplay_text_width_string() to
	reflect its changed API.
	* text.c:
	* text.c (convert_ibyte_string_into_ichar_string): Removed.
	* text.c (convert_ichar_string_into_ibyte_dynarr): Removed.
	* text.c (convert_ichar_string_into_malloced_string): Removed.
	* text.c (ichar_string_displayed_columns): Removed.	
	* text.c (ibyte_string_nonascii_chars): Removed.	
	* text.c (find_charsets_in_ibyte_string):
	Take an array of Binbytes here.
	Use the skip_ascii inline function, which will make it cheap for
	ASCII text.
	* toolbar-xlike.c (xlike_output_toolbar_button):
	Use the toolbar face when determining the metrics for an image
	text index.
	No longer bother with the Ichar dynarr, use a stack-allocated
	array of Ibyte *.

2016-12-10  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (uint32_t_to_lisp, int32_t_to_lisp):
	Use better conditions here when deciding whether a C value can fit
	into a Lisp fixnum.

2016-12-10  Aidan Kehoe  <kehoea@parhasard.net>

	Write to the normal stdio objects, stderr_out(), stdout_out().
	The only advantage with the previous implementation using
	write_string_to_external_output_va() was that long-ish output got
	truncated, which is not actually an advantage at all. The normal
	stdio objects don't GC (which is good, because
	write_string_to_external_output_va() uses them), so there's no
	GC-safety issue.

	* doprnt.c:
	* doprnt.c (stderr_out):
	* doprnt.c (stdout_out):
	Move these functions here from print.c.
	* doprnt.c (stderr_out_lisp):
	Call GETTEXT() on FMT for this function too, for consistency with
	the others.
	* print.c:
	Move stderr_out(), stdout_out() to doprnt.c with the bulk of the
	rest of the functions that take format strings.
	* lisp.h: Move their declarations together with the rest of the
	functions from doprnt.c.

2016-12-07  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (set_string_char):
	Check the index parameter for validity within this function, which
	is cheaper than in our callers.
	* data.c (Faref):
	Make this ON for Mule, not O2N.
	* data.c (Faset):
	Use set_string_char()'s new index checking rather than traversing
	the string needlessly for Mule strings.
	* lisp.h (struct Lisp_String):
	Document a problem with the ascii_begin field in strings.
	* text.h:
	Make set_string_char available on non-Mule for completeness.

2016-11-28  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (define_key_check_and_coerce_keysym):
	Don't redundantly call strlen on the keysym name, check the string
	length of the symbol name before calling qxememcmp on various
	GNU-specific keysym names, and don't redundantly check the
	various symbol objects corresponding to those GNU-specific keysym
	names when coercing the keysym.
	(define_key_check_and_coerce_keysym): Sigh, the C++ build doesn't
	like qxememcmp with Ibyte * arguments, just compare the interned
	symbols instead when looking for the GNU-specific keysym names,
	which is cheaper and will placate g++.

2016-11-25  Aidan Kehoe  <kehoea@parhasard.net>

	* casefiddle.c:
	* casefiddle.c (casify_object):
	* fns.c (split_string_by_ichar_1):
	* fns.c (split_external_path):
	* fns.c (split_env_path):
	* fns.c (Fsplit_string_by_char):
	* menubar.c:
	* menubar.c (Fnormalize_menu_text):
	* menubar.c (syms_of_menubar):
	Propagate extent information in a few more places.

2016-11-25  Aidan Kehoe  <kehoea@parhasard.net>

	* chartab.c (print_table_entry):
	* chartab.c (print_category_table):
	* mule-charset.c (print_charset):
	* mule-coding.c (multibyte_print):
	* mule-coding.c (iso2022_print):
	* rangetab.c (print_range_table):
	* unicode.c (print_precedence_array):
	More merging corrections, drop the no-longer-necessary NARGS
	argument to write_fmt_string_lisp ().

2016-11-23  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c:
	* file-coding.c (coding_character_tell):
	* file-coding.c (no_conversion_decode):
	* file-coding.c (no_conversion_character_tell):
	* file-coding.c (lstream_type_create_file_coding):
	* file-coding.c (coding_system_type_create):
	* file-coding.h (struct coding_system_methods):
	* tests.c (Ftest_character_tell):
	* unicode.c:
	* unicode.c (decode_utf_8):
	* unicode.c (unicode_decode):
	* unicode.c (unicode_character_tell):
	* unicode.c (coding_system_type_create_unicode):
	* unicode.h (struct unicode_coding_stream):
	Restore the character_tell methods for the no-conversion and
	Unicode coding system types, code that is useful for avoiding redundant
	byte-char conversion with huge buffers and had been imperfectly
	merged.
	Test the UTF-16 character tell implementation, newly added.

2016-11-23  Aidan Kehoe  <kehoea@parhasard.net>

	* charset.h:
	* charset.h (LEADING_BYTE_ASCII):
	* charset.h (ichar_charset):
	* doc.c (Fsubstitute_command_keys):
	* doprnt.c (fixnum_to_string):
	* doprnt.c (bignum_to_string_1):
	* doprnt.c (ratio_to_string_1):
	* doprnt.c (parse_doprnt_spec):
	* doprnt.c (emacs_doprnt):
	* print.c (print_internal):
	* text.h:
	* text.h (ichar_len_fmt):
	Rename ichar_itext_len() to ichar_len() for forward-compatibility
	with the unicode-internal branch.
	The latter name (with the same functionality) existed previously
	in charset.h, make it generally available on non-Mule builds.

2016-11-21  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (intern_istring):
	Only enlarge the hash table after we're done with PROBE, which is
	a htentry * pointing into the pre-enlargement hash table. Thank
	you Mats Lidell and the XEmacs package smoketest.

	* abbrev.c (abbrev_oblookup):
	Check that abbrev table objects are hash tables, not vectors
	(something missed on merging my code).
	* doc.c:
	#include "elhash.h" to give a declaration for elisp_maphash() and
	quiet the C++ build.

2016-11-20  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (write_fmt_string_va):
	Parse the format string into a stack-allocated SPECS dynarr in
	this function, as was done with emacs_vsnprintf, since we need to
	do a strlen() on the format string anyway and can check the number
	of %-signs in passing.
	Cast the argument to write_string_1() for the sake of the C++
	build.
	(parse_doprnt_spec):
	Don't use Vdigit_fixnum_ascii for the gross plausibility check for
	repositioning specifiers, minimum widths, there's no loss of
	flexibility (we only accept the ASCII digits anyway) and we're a
	little more robust when called with very early errors.

	* doprnt.c (write_fmt_string):
	Implement this in terms of write_fmt_string_va() now that the
	latter is cheaper than previously.

2016-11-20  Aidan Kehoe  <kehoea@parhasard.net>

	Implement obarray as a Lisp hash table object, rather than a vector.

	* abbrev.c:
	* abbrev.c (abbrev_match_mapper):
	* abbrev.c (abbrev_match):
	* abbrev.c (abbrev_oblookup):
	Move abbrev tables to being implemented in terms of Lisp hash
	table objects rather than the old-school obarray.
	* alloc.c:
	* alloc.c (Fmake_symbol):
	No need any more for the symbol next slot, obarray is implemented
	as a hash table with linear probing.
	* alloc.c (alloc_managed_lcrecord):
	list->free can be Qnull_pointer for objects allocated before Qnil
	is correctly initialised, handle this correctly.
	* doc.c (Fverify_documentation):
	elisp_maphash() rather than map_obarray(), now Vobarray is a hash
	table object.
	* elhash.c:
	* elhash.c (mark_hash_table_test):
	No need to have Qnil marked one more time, return http->name
	instead.
	* elhash.c (HASH_TABLE_DEFAULT_REHASH_THRESHOLD):
	* elhash.c (HASHCODE):
	* elhash.c (KEYS_EQUAL_P):
	Rename Vhash_table_test_eql, Vhash_table_test_eq to
	Veq_hash_table_test, Veql_hash_table_test.

	* elhash.c (oblookup): Moved here from symbols.c.
	Re-implement in terms of our Lisp hash tables, make it possible to
	use #'equalp as well as #'equal as a test.
	* elhash.c (intern_istring):
	Moved here from symbols.c. Use the new Lisp hash table
	implementation.
	* elhash.c (intern):
	Moved here from symbols.c.
	* elhash.c (intern_massaging_name):
	Ditto.
	* elhash.c (Fintern):
	Move here from symbols.c, support a Lisp hash table
	obarray. Support a vector PACKAGE by calling out to the autoloaded
	Lisp #'xemacs-intern-in-vector.
	* elhash.c (Fintern_soft):
	Move here from symbols.c, support a Lisp hash table
	obarray. Support a vector PACKAGE by calling out to the autoloaded
	Lisp #'xemacs-intern-soft-in-vector.
	* elhash.c (Funintern):
	Move here from symbols.c, support a Lisp hash table
	obarray. Support a vector PACKAGE by calling out to the autoloaded
	Lisp #'xemacs-unintern-in-vector.
	* elhash.c (hash_string):
	Move this here from symbols.c
	* elhash.c (Fmapatoms):
	Ditto.
	* elhash.c (itext_equalp_hash):
	Change string_equalp_hash to not necessarily use a Lisp string
	object, useful for symbols encountered by the Lisp reader.
	* elhash.c (string_equalp_hash):
	Implement this as a #define.
	* elhash.c (syms_of_elhash):
	Initialise the basic hash table tests here, make Fintern,
	Fintern_soft, Funintern, Fmapatoms available.
	Make obarray available here.
	* elhash.c (init_elhash_once_early):
	Create Vequal_hash_table_test very early; create Vobarray once it
	is created.
	* emacs.c (main_1):
	Call init_elhash_once_early() earlier in the startup sequence,
	since it now creates obarray.
	* general-slots.h:
	Make the symbols for the various default hash table tests
	available here.
	* lisp.h (struct Lisp_Symbol):
	* lisp.h (symbol_name):
	* lisp.h (XSYMBOL_NAME):
	No need for the symbol next pointers any more.
	* minibuf.c:
	* minibuf.c (map_completion_trad_obarray): New. Map FUNCTION
	across a traditional emacs obarray, with help from the Lisp
	#'xemacs-next-iteration-in-vector function.
	* minibuf.c (map_completion):
	Use it.
	* minibuf.c (ignore_completion_p):
	Since obarray (and presumably other packages) is (are) now a hash table,
	PREDICATE may be called with either one or two arguments if
	HASH_TABLE_P. Decide depending on how many arguments PREDICATE
	takes.
	* minibuf.c (Ftest_completion):
	Update the documentation here.
	* minibuf.c (syms_of_minibuf):
	We need the symbol xemacs-next-iteration-in-vector available to C.
	* minibuf.c (reinit_vars_of_minibuf):
	* symbols.c:
	* symbols.c (mark_symbol):
	No more need to mark through sym->next.
	Move most of the functions dealing with obarrays to elhash.c
	* symbols.c (Fapropos_internal):
	Implement this with the hash table code.
	* symbols.c (flush_all_buffer_local_cache_mapper): New.
	* symbols.c (flush_all_buffer_local_cache):
	Implement this using elisp_maphash_unsafe, rather then using our
	own implementation of mapatoms().
	* symbols.c (init_symbols_once_early):
	Intern Qnil using #'puthash.
	* symbols.c (syms_of_symbols):
	Remove Fintern and friends from here, they're in elhash.c
	* symbols.c (vars_of_symbols):
	Remove this, obarray is now in elhash.c

2016-11-20  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (maplist):
	Fix a bug in #'mapcon when FUNCTION returns nil.

2016-11-19  Aidan Kehoe  <kehoea@parhasard.net>

	Further build fixes:

	1. Don't use format as a local variable name, now it is the name of a
	globally-visible function.
	2. Move the recently-inlined fixup_internal_substring() to lisp.h
	from insdel.h, turns out a decent number of the places that used
	it didn't necessarily #include insdel.h, and it's fine to have it
	in lisp.h
	3. Put a declaration for build_fixnum_to_char_map() in lisp.h

	* device-x.c (x_init_device):
	* doc.c (Fsubstitute_command_keys):
	* doprnt.c:
	* doprnt.c (parse_doprnt_spec):
	* doprnt.c (emacs_vsprintf_string):
	* doprnt.c (emacs_sprintf_string):
	* doprnt.c (emacs_vasprintf):
	* doprnt.c (emacs_asprintf):
	* doprnt.c (emacs_vsnprintf):
	* doprnt.c (emacs_snprintf):
	* frame-x.c (x_wm_hack_wm_protocols):
	* glyphs.c (decode_device_ii_format):
	* glyphs.c (decode_image_instantiator_format):
	* glyphs.c (valid_image_instantiator_format_p):
	* insdel.h:
	* lisp.h:
	* lisp.h (DECLARE_INLINE_HEADER):
	* lisp.h (qxestrcoll):
	* print.c (debug_out_lisp):
	* redisplay.c (add_disp_table_entry_runes_1):
	* select-x.c (x_reply_selection_request):
	* select-x.c (x_handle_selection_request):
	* select-x.c (Fx_get_cutbuffer_internal):
	* select-xlike-inc.c:
	* select-xlike-inc.c (selection_data_to_lisp_data):
	* strftime.c (strftime):
	* text.c (qxesprintf):

	* text.h (ichar_ascii_p):
	Make this available on non-MULE builds, always giving 1.
	
2016-11-19  Aidan Kehoe  <kehoea@parhasard.net>

	* chartab.c (print_char_table):
	typename seems to be a reserved word in C++, rename this
	variable.
	* doc.c (Fsubstitute_command_keys):
	Do some casting here to placate the C++ compiler.
	* doprnt.c (emacs_doprnt):
	RETURN_UNGCPRO is only appropriate when returning a Lisp_Object,
	thank you the C++ compiler.
	* extents.h:
	#include "buffer.h" for the sake of stream_extent_position().
	* lread.c (read_rational):
	Do some casts to placate the C++ compiler.
	* number.h:
	Remove the declarations for {bignum,ratio}_to_string() now they're
	in lisp.h
	* redisplay.c (decode_mode_spec):
	Do some casts to placate the C++ compiler.
	* search.c (Freplace_match):
	Ditto.
	* sequence.c:
	Remove a couple of symbol declarations that are now in
	general-slots.h.
	* tls.h (tls_open):
	When there's no TLS support, make the stub implementations into
	legal C.

2016-11-19  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (Fsubstitute_command_keys):
	* doprnt.c:
	Document why we haven't yet implemented #'format-message or
	`text-quoting-style'.

2016-09-20  Aidan Kehoe  <kehoea@parhasard.net>

	* print.c:
	* print.c (long_to_string):
	Fix a bug here when supplied with LONG_MIN, since negation of that
	value fails.
	* tests.c (Ftest_long_to_string):
	Test this.
	* tests.c (syms_of_tests):
	Make the test available.

2016-10-07  Aidan Kehoe  <kehoea@parhasard.net>

	Remove the now-obsolete long_to_string(), ulong_to_bit_string ().
	* doprnt.c (emacs_doprnt_1):
	Remove the separate case for ?i, implement it with the same code
	as ?d.
	Use fixnum_to_string_base_10() when writing a float spec to pass
	to snprintf (), now long_to_string() is gone.
	* lisp.h:
	* lisp.h (DECIMAL_PRINT_SIZE): Take account of MAX_ICHAR_LEN in
	this value, since our number-to-string functions now support
	non-ASCII.
	Remove declarations for long_to_string(), ulong_to_bit_string().
	* number-mp.h (bignum_size_decimal):
	Update this to reflect the new definition of DECIMAL_PRINT_SIZE.
	* print.c:
	Remove implementations of long_to_string, ulong_to_bit_string.

2016-10-07  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (syms_of_data):
	Move the DEFSUBR() for #'number-to-string to doprnt.c, with its
	implementation.
	* doprnt.c:
	Document relative performance of fixnum_to_string_base_10 vs. the
	old long_to_string.
	* doprnt.c (Fnumber_to_string):
	* doprnt.c (parse_doprnt_spec):
	Don't support the enhanced-number-types-specific format
	converters when being called on C objects.
	* doprnt.c (get_doprnt_args):
	* doprnt.c (rewrite_rational_spec): New, refactored out.
	If SPEC reflects a rational number, rewrite it according to the
	type of *OBJ, if necessary.
	* doprnt.c (rewrite_floating_spec): New, refactored out.
	If SPEC reflects a float or a bigfloat, rewrite according to the
	type of *OBJ, if necessary.
	* doprnt.c (emacs_doprnt_1):
	Restructure this, make a big switch statement on the value of
	SPEC->CONVERTER, commonest cases first. Only adjust CONVERTER
	based on the type of OBJ if OBJ is not the expected Lisp type.
	* doprnt.c (emacs_doprnt):
	* doprnt.c (syms_of_doprnt):
	Move the DEFSUBR for #'number-to-string here.
	* redisplay.c (window_line_number):
	Return Ibyte * now, as does fixnum_to_string ().
	* tests.c (Ftest_fixnum_to_string):
	Update this with a correct value in the flag to
	fixnum_to_string().

2016-10-04  Aidan Kehoe  <kehoea@parhasard.net>

	Add functionality to convert rationals to strings of arbitrary
	base to doprnt.c, in preparation for integrating that
	functionality into #'format.

	* data.c:
	* data.c (digit_to_number):
	Move to doprnt.c.
	* doprnt.c:
	* doprnt.c (fixnum_to_string_rshift_1):
	New; convert a fixnum to a printed representation with radix a
	power of two.
	* doprnt.c (emacs_uint_to_string_rshift_1):
	New; convert an EMACS_UINT to a printed representation with radix
	a power of two.
	* doprnt.c (fixnum_to_string_general_1):
	New; convert a fixnum to a printed representation of arbitrary
	base.
	* doprnt.c (fixnum_to_string_base_10):
	New; convert a fixnum to a printed representation base ten, same
	algorithm as long_to_string ().
	* doprnt.c (fixnum_to_string):
	New general function, subsuming the functionality of
	long_to_string().
	* doprnt.c (bignum_to_string_1):
	New; converted a bignum to a string using Vfixnum_to_majuscule_map.
	* doprnt.c (bignum_to_string):
	Move this function here, extend it to allow its buffer to be
	stack-allocated.
	* doprnt.c (ratio_to_string_1):
	New; converted a ratio to a string using Vfixnum_to_majuscule_map.
	* doprnt.c (ratio_to_string):
	Move this function here, extend it to allow its buffer to be
	stack-allocated.
	* doprnt.c (Fnumber_to_string):
	Move this function here, use the _1 functions for ratios, bignums,
	and fixnums.
	* doprnt.c (emacs_doprnt_1):
	Use the new calling convention for bignum_to_string(),
	ratio_to_string(). 
	* lisp.h:
	Make {fixnum,bignum,ratio}_to_string() available here.
	* number-gmp.h:
	Make macros to size a buffer for text output available.
	Make mpz_tdiv_q_ui accessible, useful for the calculations for
	converting a bignum to a string in a given base.
	* number-mp.h:
	* number.c (bignum_print):
	Allocate the text to print on the stack when appropriate.
	* number.c (bignum_convert):
	Serialise this object more cheaply using base 16 rather than base 10.
	* number.c (bignum_deconvert):
	Deserialise this object using base 16.
	* number.c (ratio_print):
	Allocate the text for this on the stack.
	* print.c (print_internal):
	Use fixnum_to_string() when printing fixnums and checking for
	recursive structures.
	* redisplay.c (add_disp_table_entry_runes_1):
	Update documentation to use fixnum_to_string().
	* redisplay.c (window_line_number):
	Use fixnum_to_string() instead of long_to_string()
	* redisplay.c (decode_mode_spec):
	Ditto.
	* tests.c (Ftest_fixnum_to_string):
	Rename this from Ftest_long_to_string().
	* tooltalk.c (tt_message_arg_ival_string):
	Use fixnum_to_string () here.
	* tooltalk.c (tt_message_arg_bval_vector):
	Ditto.

2016-09-30  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c:
	* data.c (Fset_digit_fixnum_map):
	* data.c (Fdigit_char_p):
	* data.c (Fdigit_char):
	Update this to use Vfixnum_to_majuscule_ascii if appropriate.
	* data.c (Fparse_integer):
	* data.c (vars_of_data):
	Rename Vfixnum_to_char_map to Vfixnum_to_majuscule_map; add 
	Vfixnum_to_minuscule_map, for %x format strings, and
	Vfixnum_to_majuscule_ascii, for those cases where using the
	non-ASCII digits will definitely lead to errors.
	* lisp.h:
	Make Vfixnum_to_majuscule_map, Vfixnum_to_minuscule_map,
	Vfixnum_to_majuscule_ascii available to other files.

2016-09-30  Aidan Kehoe  <kehoea@parhasard.net>

	* text.h (itext_copy_ichar):
	Revise to be simpler and faster.
	* text.h (itext_ichar_eql): New.
	Return non-zero if a given Ichar is equivalent to that Ichar
	stored at a text address.
	* text.h (ichar_itext_len): New.
	Return the length in octets of an Ichar when represented as an
	Ibyte array.
	* text.c: (non_ascii_itext_copy_ichar): Removed.

2016-09-26  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (emacs_doprnt_1):
	Separate the clauses handling 's' and 'S', part of a broader
	simplification, of which more details coming later.

2016-09-26  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Fnumber_to_string):
	Use make_string here, now float_to_string returns the string
	length of the float.
	* elhash.c (print_hash_table):
	Be less complex and demanding here, use write_string_1 with
	float_to_string instead of calling write_fmt_string() and firing
	up the code in doprnt.c that is involved in that.
	* lisp.h:
	* print.c (float_to_string):
	float_to_string now returns a bytecount, the number of octets of
	output.
	* print.c (print_float):
	Use the return value of float_to_string() in this function.

2016-09-18  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c:
	* doprnt.c (Fformat_into): New.
	* doprnt.c (syms_of_doprnt): Make it available.
	Provide #'format-into, allowing callers to provide the
	resizing-buffer lstream object now that is visible from
	Lisp. Similar in concept to the first argument to Common Lisp
	#'format, though not (yet) as general.

2016-09-11  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	* alloc.c (make_uninit_vector): Rename make_vector_internal() to
	make_uninit_vector(), by analogy to its string homologue.
	* alloc.c (make_vector):
	Use the new name.
	* alloc.c (Fvector):
	Use the new name; use memcpy() in the implementation of this
	function, which should scream.
	* lisp.h:
	Provide a declaration for make_uninit_vector here.
	* sequence.c (concatenate):
	By analogy with the string code, if we know we're creating a
	vector, stage into the result rather than allocating space on the
	stack.

2016-11-07  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c:
	* data.c (Fchar_or_string_p, Fchar_int_p, Fchar_or_char_int_p):
	* data.c (Finteger_or_marker_p, Finteger_or_char_p):
	* data.c (Finteger_char_or_marker_p, Fnumber_or_marker_p):
	* data.c (Fnumber_char_or_marker_p):
	* data.c (syms_of_data):
	None of these functions are loop hotspots, they are all easily
	implemented in Lisp, and doing it that way is more economic of
	memory with NEW_GC. Move them to Lisp.

2016-11-07  Aidan Kehoe  <kehoea@parhasard.net>

	* frame.c (Fmake_frame):
	Don't fire up the regexp engine to look for a dot in the frame
	name, Fposition() is perfectly fine.
	* lisp.h:
	Declare Fposition() in this file.

2016-11-04  Aidan Kehoe  <kehoea@parhasard.net>

	Remove the badly-named word_to_lisp(), lisp_to_word(). Add
	{u,}int32_t_to_lisp and its inverse.

	* data.c:
	* data.c (uint32_t_to_lisp): New.
	* data.c (lisp_to_uint32_t): New.
	* data.c (int32_t_to_lisp): New.
	* data.c (lisp_to_int32_t): New.
	General functions to convert between Lisp values and thirty-two
	bit C integers. Use fixnums if they fit, otherwise bignums (if
	available), otherwise the traditional cons of two fixnums.
	Replace the badly-named word_to_lisp(), lisp_to_word() functions,
	used especially in the X11 code, where the C
	word-width-depends-on-the-machine-type constraint doesn't apply.
	* dired.c:
	Remove the #if 0'd wasteful_word_to_lisp() function, not used in
	decades.
	* editfns.c:
	* editfns.c (lisp_to_time):
	Accept bignums and fixnums in this function, for XEmacs builds
	where there is no need for the cons implementation.
	time_to_lisp(); removed.
	* editfns.c (Fformat_time_string):
	localtime(), gmtime() can return NULL, don't crash with this.
	* editfns.c (Fdecode_time):
	Ditto.
	* editfns.c (make_time):
	Just use a cons, not a list, for these time values.
	* editfns.c (Fcurrent_time_zone):
	Don't crash if localtime() gives NULL, as it may well.
	* fileio.c:
	* fileio.c (Fvisited_file_modtime):
	Use make_time () here, not the duplicated time_to_lisp ().
	* lisp-disunion.h:
	* lisp-disunion.h (make_fixnum):
	* lisp-disunion.h (FIXNUMP):
	Cast to EMACS_UINT before left-shifting a signed fixnum.
	* lisp.h:
	Document our new conversion functions.
	* number.h (bignum_to_emacs_uint):
	New #define.
	* select-gtk.c (emacs_gtk_selection_handle):
	* select-gtk.c (emacs_gtk_selection_clear_event_handle):
	* select-gtk.c (gtk_own_selection):
	* select-gtk.c (gtk_disown_selection):
	Use our new functions converting to 32-bit C integers.
	* select-x.c:
	* select-x.c (x_handle_selection_request):
	* select-x.c (x_handle_selection_clear):
	* select-x.c (x_disown_selection):
	Use our new convert-to-32-bits functions, don't faff around with
	our own implementations of this.
	* select-xlike-inc.c:
	* select-xlike-inc.c (selection_data_to_lisp_data):
	* select-xlike-inc.c (lisp_data_to_selection_data):
	Use our new convert-to-32-bits functions for selection data.
	* select.c (get_selection_raw_time):
	* select.c (Fget_selection_timestamp):
	No longer use word_to_lisp() in this file.

2016-11-16  Aidan Kehoe  <kehoea@parhasard.net>

	1. Call emacs_vsnprintf() from
	write_string_to_external_output_va(), and:
	2. Minimize non-stack allocation in emacs_vsnprintf() to make that
	workable, given that write_string_to_external_output_va() is
	called from various contexts where XEmacs is crashing and we may
	not have a working C heap or Lisp object allocation system.

	* lstream.h (DECLARE_STACK_FIXED_BUFFER_LSTREAM):
	Make various details of the fixed buffer lstream implementation
	visible here, but only if specifically requested.
	* lstream.c:
	* lstream.c (EXPOSE_FIXED_BUFFER_INTERNALS):
	* lstream.c (make_fixed_buffer_input_stream):
	* lstream.c (make_fixed_buffer_output_stream):
	* lstream.c (fixed_buffer_input_stream_ptr):
	* lstream.c (fixed_buffer_output_stream_ptr):
	Make the fixed buffer internal pointers into Ibyte pointers
	rather than unsigned char *. Move much of the implementation of
	this stream type to lstream.h, now doprnt.c uses it.
	* doprnt.c:
	#define EXPOSE_FIXED_BUFFER_INTERNALS before including lstream.h
	so emacs_vsnprintf() can force stack allocation of its
	fixed-buffer lstream.
	* doprnt.c (parse_doprnt_spec):
	Take a new SPECS argument, the specs Dynarr into which to write
	the parsed specs.  Allow a NULL value to specify that we should
	allocate it ourselves.
	* doprnt.c (write_fmt_string_va):
	* doprnt.c (write_fmt_string):
	* doprnt.c (write_fmt_string_lisp_va):
	* doprnt.c (write_fmt_string_lisp):
	* doprnt.c (format_into):
	Call parse_doprnt_spec with its new argument.
	* doprnt.c (emacs_vsnprintf):
	Revise this significantly, since it's now called from
	write_string_to_external_output_va() and is more likely to be
	called when XEmacs is crashing.
	In particular: count the number of percent signs in FORMAT, when
	checking for its string length.
	If there are no percent signs, just memmove the format string,
	don't even call emacs_doprnt().
	If there are percent signs, allocate the corresponding SPECS
	dynarr on the stack, so no heap allocation needs to take place.
	Then allocate the fixed-buffer lstream that emacs_doprnt() needs
	to write to on the stack, too, together with the ARGS array.
	This avoids relying on the C heap or on Lisp object allocation
	when printing, useful when preparing for armageddon.
	* print.c:
	* print.c (write_string_to_external_output_va):
	Use emacs_vsnprintf() here, rather than vsprintf(). Allocate a
	smaller buffer for it on the stack, though one certainly large enough to
	saturate the usual terminal emulator scrollback buffer.

	An old comment here mentions the idea of creating a new lstream
	that outputs using mswindows_output_console_string(), but it was
	written before we had the current reasonable code that calls that
	function.

2016-11-07  Aidan Kehoe  <kehoea@parhasard.net>

	Rename the emacs_v?sprintf_malloc* functions analogously to their
	usual Unix equivalents, asprintf and vasprintf. Update their
	callers appropriately.

	* doprnt.c:
	* doprnt.c (emacs_vasprintf_lisp): Renamed from
	emacs_vsprintf_malloc_lisp().
	* doprnt.c (emacs_asprintf_lisp): Renamed from
	emacs_sprintf_malloc_lisp().
	* doprnt.c (emacs_vasprintf): Renamed from
	emacs_vsprintf_malloc().
	* doprnt.c (emacs_asprintf): Renamed from emacs_sprintf_malloc().
	* lisp.h:
	Update the corresponding prototypes.
	* lread.c (OVERLONG_OCTAL_INFO):
	* lread.c (read_escape):
	Don't leak a string when erroring with a non-ISO-8859-1 octal
	character escape.
	* print.c (debug_out_lisp):
	Use emacs_vsprintf_malloc_lisp()'s new name.

2016-11-07  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (Fformat_into):
	Be a little clearer in documenting the STREAM argument.

2016-10-30  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (mark_vector):
	* alloc.c (vector_equal):
	* alloc.c (internal_bit_vector_equalp_hash):
	* alloc.c (tree_memory_usage_1):
	* bytecode.c (check_constants_index):
	* callint.c (Fcall_interactively):
	* event-Xt.c (x_event_to_emacs_event):
	* event-stream.c (extract_vector_nth_mouse_event):
	* events.c (Fdeallocate_event):
	* fontcolor-xlike-inc.c (XFUN):
	* fontcolor.c (face_boolean_instantiate):
	* glyphs-widget.c (substitute_keyword_value):
	* glyphs.c (find_keyword_in_vector_or_given):
	* glyphs.c (find_instantiator_differences):
	* glyphs.c (if):
	* glyphs.c (tagged_vector_to_alist):
	* glyphs.c (image_validate):
	* glyphs.c (image_copy_vector_instantiator):
	* gui.c (make_gui_item_from_keywords_internal):
	* gui.c (widget_gui_parse_item_keywords):
	* keymap.c (Fdefine_key):
	* keymap.c (get_relevant_keymaps):
	* keymap.c (accessible_keymaps_mapper_1):
	* lread.c (ebolify_bytecode_constants):
	* macros.c (store_kbd_macro_event):
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	* mule-ccl.h:
	* print.c (print_vector):
	Remove print_vector_internal(), no need for it.
	* print.c (debug_p4):
	* select.c:
	* sequence.c (safe_copy_tree):
	* symbols.c (map_obarray):
	* symbols.c (flush_all_buffer_local_cache):
	* toolbar.c (update_toolbar_button):
	* ui-byhand.c (Fgtk_curve_set_vector):
	Don't store the result of vector_length (), XVECTOR_LENGTH () into
	an int, it needs to be an Elemcount, which is the width of an
	EMACS_INT.

2016-11-03  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (bytebpos_to_charbpos_func):
	Differentiate between char->byte and byte->char conversion when
	profiling.
	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	Ditto, differentiate between external->internal and
	internal->external conversion when profiling.
	* text.c (vars_of_text):
	Two new profiling strings, for byte->char and external->internal
	conversion.

2016-10-29  Aidan Kehoe  <kehoea@parhasard.net>

	Give the compiler a chance to do strlen() at compile time,
	write_ascstring().

	* lisp.h:
	Move the string translation macros and inline functions to the end
	of the file, since they now need access to write_string_1(),
	qxestrlen().
	Make write_istring(), write_ascstring(), write_cistring() inline,
	since they are just wrappers around write_string_1() + strlen(),
	their arguments are often constant, and there is no prospect of
	our moving to a non-ASCII internal encoding soon.
	Move the DECIMAL_PRINT_SIZE() define beside fixnum_to_string (),
	for which it's most relevant.
	* print.c (write_istring, write_cistring, write_ascstring,
	write_msg_istring, write_msg_cistring, write_msg_ascstring):
	Move all these functions to lisp.h, make them inline.
	* print.c (print_string):
	No need to strlen() when writing an escaped backslash or double
	quote, just call write_string_1().

2016-10-29  Aidan Kehoe  <kehoea@parhasard.net>

	Handle integer default promotions, non-fixnum rationals better,
	write_fmt_string ().

	* doprnt.c:
	Make the various converter strings into #defines, now they're
	mostly not used and the compiler complains about unused
	variables.
	* doprnt.c (parse_doprnt_spec):
	Document that we don't accept the u modifier for explicit-bignum
	converters, something only really relevant to C-level
	arguments. Document why.
	* doprnt.c (get_doprnt_args):
	Handle default integer promotions correctly according to the C
	specs, something that the old code did too.
	Treat a %S spec as pointing to a Lisp object, with C-style args as
	well as Lisp style args.
	Handle the explicit bignum, ratio, and bigfloat converters, should
	C code need to use them.
	* doprnt.c (rewrite_rational_spec):
	With bit length flags and explicit bignum conversion specifiers,
	rewrite to the fixnum conversion specifiers when we're truncating
	the value.
	Use our 64-bit string conversion function when supplied with a bit
	length flag and the value may not fit in a fixnum.
	* doprnt.c (FIXNUM_SPEC_PREAMBLE):
	Handle the unsigned flag better when a C-level untagged integer is
	supplied.
	* doprnt.c (emacs_doprnt):
	Correct the optimisation for %S, print the object with quoting
	characters.
	When bit length flags are supplied with explicit bignum conversion
	specifiers, rewrite to a fixnum call as appropriate.
	* number.c (bignum_print):
	Use Vfixnum_to_majuscule_map correctly here.
	* number-mp.c (bignum_to_int): 
	Remove this, it's now in doprnt.c
	* number.c (bignum_convert):
	* number.c (ratio_print):
	Use Vfixnum_to_majuscule_map correctly here.
	* casetab.c (print_case_table):
	Use %S, now that's cheaper than %s for Lisp objects.

2016-10-26  Aidan Kehoe  <kehoea@parhasard.net>

	1. Add RADIX, RADIX-TABLE optional arguments to
	Fnumber_to_string().
	2. Extend the documentation comments in doprnt.c.
	3. With %S and no modifiers, call print_internal directly rather
	than prin1_to_string, saving a little memory.
	* data.c (build_fixnum_to_char_map):
	Make this function available to doprnt.c.
	* doprnt.c:
	Document the broad strokes of this file a bit better.
	* doprnt.c (fixnum_to_string):
	* doprnt.c (bignum_to_string):
	* doprnt.c (ratio_to_string):
	Revise these, no longer take a flags argument, take the fixnum ->
	char table explicitly, or Qnil for the default.
	Correct a check for a power-of-two radix in fixnum_to_string ().
	Correct a buffer-size calculation, fixnum_to_string ().
	* doprnt.c (Fnumber_to_string):
	Extend this to take optional RADIX, RADIX_TABLE arguments, as does
	#'digit-char.  Error if we're supplied a radix and a float, this
	is unimplemented.
	* doprnt.c (parse_doprnt_spec, rewrite_rational_spec,
	rewrite_floating_spec): Give docstrings for these functions.
	* doprnt.c (emacs_doprnt):
	When handling %S without any modifiers, call print_internal with
	STREAM as the PRINTCHARFUN argument, rather than creating and then
	immediately GCing a string.
	* doprnt.c (format_into):
	Call #'number-to-string with its new args.
	* file-coding.c (make_coding_system_1):
	Ditto.
	* lisp.h:
	Update the declarations for Fnumber_to_string(),
	fixnum_to_string(), bignum_to_string(), ratio_to_string().
	* number.h:
	Ditto.
	* print.c (print_internal):
	Call Fnumber_to_string with its new args.
	* process.c (status_message):
	* redisplay.c (add_disp_table_entry_runes_1):
	* redisplay.c (window_line_number):
	* redisplay.c (decode_mode_spec):
	* tests.c (Ftest_fixnum_to_string):
	* tooltalk.c (tt_message_arg_ival_string):
	Call fixnum_to_string() with its new calling convention in these
	files.

2016-10-26  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (emacs_vsprintf_string_lisp):
	Call write_fmt_string_lisp_va() here, not
	write_fmt_string_lisp(), fix a bug.

2016-10-25  Aidan Kehoe  <kehoea@parhasard.net>

	* insdel.c:
	* insdel.h:
	fixup_internal_substring() is very short and called every time
	output_string() is called; make it inline.
	* print.c (output_string):
	There's no need to GC protect with an lstream FUNCTION; remove
	it, document why.

2016-10-25  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (Fsubstitute_command_keys):
	Use our resizing_buffer output stream rather than a Lisp buffer
	here. This preserves non-duplicable extents, as described below,
	and avoids side effects from Lisp code that runs in every buffer
	created.
	* keymap.c:
	* keymap.c (describe_map_tree):
	Rename the BUFFER argument to STREAM.
	* keymap.c (describe_command):
	Use the generic stream functions, no need to make this specific to
	a buffer.
	* keymap.c (describe_map):
	Do the column accounting previously done within describe_command()
	here, so the output doesn't have to be a Lisp buffer.

2016-10-25  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c:
	* doc.c (Fsubstitute_command_keys):
	Revise this to pass through extent information when doing the
	substitution. This cut of the change does it by extending the use
	of the Lisp buffer, already used in this function, but has the
	problem that non-duplicable extents are not preserved (#'concat
	preserves them, as (now) does #'format, but most buffer-string
	interaction situations don't), and Lisp buffers the problem that
	too much of their implementation is exposed to Lisp; see GNU's
	problem with inhibit-modification-hooks.

2016-10-22  Aidan Kehoe  <kehoea@parhasard.net>

	1. Refactor functions in doprnt.c so emacs_doprnt_1 does less work
	and is cleaner, moving all the vargs parsing into its callers.

	2. Remove emacs_doprnt(), emacs_doprnt_va(), nothing outside this
	file calls them. Now the corresponding area of the XEmacs
	namespace is available, make emacs_doprnt_1() into emacs_doprnt(),
	doprnt_2() into doprnt_1().
	
	3. Remove get_args_needed(), its calculation can be done in
	passing by parse_doprnt_spec().

	4. Don't leak the specs dynarr when giving a syntax error in
	parse_doprnt_spec().

	5. Move the write_fmt_string{,_lisp} functions into doprnt.c from
	print.c.
	Make their implementations less expensive now emacs_doprnt() can
	write to an arbitrary stream itself, so no malloc() needed for
	every constructed string.
	Remove the need for an NARGS argument, now write_fmt_string_lisp
	calls parse_doprnt_spec itself.
	Update all the callers to write_fmt_string_lisp to no longer
	specify the NARGS argument.

	6. Remove emacs_sprintf, emacs_vsprintf, there was never any way
	to call them safely. Provide emacs_snprintf, emacs_vsnprintf
	instead.

	* doprnt.c:
	Remove the printf_arg_dynarr typedef, since we always know the
	length needed it's perfectly practical to allocate it on the
	stack.
	* doprnt.c (write_lisp_string_lstream):
	Update a comment here.
	Remove write_string_1_buffer(), write_lisp_string_buffer(), 
	write_string_1_marker(), write_lisp_string_marker(), they're
	overkill.
	* doprnt.c (doprnt_1):
	Rename this function from doprnt_2().
	* doprnt.c (NEXT_ASCBYTE):
	When throwing a syntax error, free the specs dynarr, don't leak it.
	* doprnt.c (parse_doprnt_spec):
	Return the maximum argnum seen into a new ARGS_NEEDED_OUT pointer.
	When throwing a syntax error, free the specs dynarr, don't leak
	it.
	Remove get_args_needed (), its logic is easily incorporated into
	parse_doprnt_spec().
	* doprnt.c (get_doprnt_args):
	No longer return a dynarr, instead write into the fixed-length
	buffer supplied, since we know how many args we need.
	* doprnt.c (emacs_doprnt):
	Remove the old emacs_doprnt, rename emacs_doprnt_1() to
	emacs_doprnt().
	Move much of the logic of this function to our callers.  In
	particular, all the vargs parsing and spec parsing is now
	performed by our callers, since the vargs parsing is dependent on
	the spec parsing to determine the number of arguments needed.
	GCPRO the local variable OBJ, since it may reflect a
	freshly-allocated string from prin1_to_string(), or a fresh bignum.
	Rename doprnt_2() to doprnt_1()
	Remove emacs_doprnt_va() and the old emacs_doprnt().
	* doprnt.c (format_into):
	New. The implementation of #'format-into.
	* doprnt.c (format):
	New. The implementation of #'format.
	* doprnt.c (write_fmt_string_va):
	New. Write a constructed string made from a C format string and C
	vargs to a given stream.
	* doprnt.c (write_fmt_string):
	Moved here from print.c. Write a constructed string made from a C
	format string and C args to a given stream.	
	* doprnt.c (write_fmt_string_lisp_va):
	New. Write a constructed string made from a C format string and
	Lisp_Object vargs to a given stream.
	* doprnt.c (write_fmt_string_lisp):
	Moved here from print.c. Write a constructed string made from a C
	format string and C args to a given stream.	
	* doprnt.c (stderr_out_lisp):
	Moved here from print.c, adjusted to no longer take an NARGS
	argument.
	* doprnt.c (emacs_vsprintf_string_lisp):
	API changed; return a Lisp string reflecting a C format string and
	an array of Lisp objects supplied using vargs.
	* doprnt.c (emacs_sprintf_string_lisp):
	API changed here to no longer need an NARGS argument.
	* doprnt.c (emacs_vsprintf_malloc_lisp):
	API changed here to no longer need an NARGS argument.
	* doprnt.c (emacs_sprintf_malloc_lisp):
	API changed here to no longer need an NARGS argument.
	* doprnt.c (emacs_vsprintf_string):
	Implementation changed slightly to call write_fmt_string_va ().
	* doprnt.c (emacs_sprintf_string):
	Implementation not changed.
	* doprnt.c (emacs_vsprintf_malloc):
	Implementation changed slightly.
	* doprnt.c (emacs_sprintf_malloc):
	Implementation not changed here.
	* doprnt.c (emacs_vsnprintf): New.  Remove emacs_vsprintf, writing
	to a fixed C buffer, since there is no way to call it safely. Add
	emacs_vsnprintf, which refuses to write beyond the specified end of the
	fixed C buffer, instead.
	* doprnt.c (emacs_snprintf):
	Remove emacs_sprintf, since there is no way to call it
	safely. Provide emacs_snprintf() instead.
	* doprnt.c (Fformat):
	Implement this in terms of format_into (), rather than the
	poorly-chosen emacs_vsprintf_string_lisp API.
	* doprnt.c (Fformat_into):
	Expand on the docstring for this a little.

	* callint.c:
	* callint.c (callint_prompt):
	Call the new format() now, not the badly-named
	emacs_vsprintf_string_lisp().

	* print.c:
	Move write_fmt_string(), write_fmt_string_lisp(),
	stderr_out_lisp() to doprnt.c.

	* print.c (Fprin1_to_string):
	No need to flush before calling resizing_buffer_to_lisp_string().
	* print.c (debug_out_lisp):
	Change this to no longer take the argument count, now we've
	updated doprnt.c to better handle that case.

	* lstream.c:
	* lstream.c (Lstream_write_with_extents):
	Change this to only accept string object arguments.
	* lstream.c (resizing_buffer_write_with_extents):
	Update this to only accept string object arguments.
	* lstream.c (resizing_buffer_to_lisp_string):
	* lstream.c (lisp_buffer_write_with_extents):
	New, write a string to a buffer with its extents.
	* lstream.c (lstream_type_create):
	Make this available.
	* lstream.h (lstream_implementation):
	Update the documentation for the write_with_extents() method to
	reflect the changed decision.

	* buffer.c (print_buffer):
	* bytecode.c (print_compiled_function):
	* casetab.c (print_case_table):
	* chartab.c (print_table_entry):
	* chartab.c (print_char_table):
	* console.c:
	* console.c (print_console):
	* database.c (print_database):
	* device-msw.c (print_devmode):
	* device-msw.c (finalize_devmode):
	* device.c:
	* device.c (print_device):
	* elhash.c (print_hash_table_data):
	* elhash.c (print_hash_table):
	* eval.c (maybe_get_trapping_problems_backtrace):
	* eval.c (issue_call_trapping_problems_warning):
	* event-Xt.c (describe_event_window):
	* event-Xt.c (XEvent_mode_to_string):
	* events.c (print_event):
	* extents.c (print_extent_1):
	* extents.c (print_extent):
	* faces.c (print_face):
	* file-coding.c (print_coding_system_properties):
	* file-coding.c (print_coding_system):
	* file-coding.c (print_coding_system_in_print_method):
	* file-coding.c (detect_coding_type):
	* file-coding.c (detected_coding_system):
	* file-coding.c (undecided_init_coding_stream):
	* file-coding.c (undecided_rewind_coding_stream):
	* fontcolor-xlike-inc.c (DEBUG_FONTS_LISP1):
	* fontcolor-xlike-inc.c (DEBUG_FONTS_LISP2):
	* fontcolor-xlike-inc.c (DEBUG_FONTS_LISP3):
	* fontcolor-xlike-inc.c (DEBUG_FONTS_LISP4):
	* fontcolor.c (print_color_instance):
	* fontcolor.c (print_font_instance):
	* glyphs.c:
	* glyphs.c (print_image_instance):
	* glyphs.c (incompatible_image_types):
	* glyphs.c (print_glyph):
	* intl-win32.c (mswindows_multibyte_to_unicode_print):
	* keymap.c (print_keymap):
	* mule-charset.c (print_charset):
	* mule-coding.c (FROB):
	* mule-coding.c (iso2022_print):
	* process.c (print_process):
	* rangetab.c (print_range_table):
	* specifier.c (print_specifier):
	* symsinit.h:
	* ui-gtk.c (ffi_object_printer):
	* unicode.c (unicode_print):
	* window.c (print_window):
	Remove the NARGS argument from the write_fmt_string_lisp() calls
	in these files.

2016-10-19  Aidan Kehoe  <kehoea@parhasard.net>

	1. Accept any output stream (as accepted by #'write-sequence,
	#'print, etc) in #'format-into.
	2. Implement stretching of string extents for text written to
	buffers as well as strings, lstreams.
	Correct the implementation for strings, lstreams.
	Add tests.
	* doprnt.c:
	* doprnt.c (struct printf_spec):
	Reorder this slightly given changed frequency of field access.
	* doprnt.c (HANDLE_SIGN_FLAG):
	* doprnt.c (HANDLE_SIGN_AND_NUMBER):
	Implement both of these with buffering local to doprnt_2(), rather
	than relying than relying on the lstream buffering as we used to.
	* doprnt.c (write_string_1_lstream):
	* doprnt.c (write_lisp_string_lstream):
	* doprnt.c (write_string_1_buffer):
	* doprnt.c (write_lisp_string_buffer):
	* doprnt.c (write_string_1_marker):
	* doprnt.c (write_lisp_string_marker):
	Static functions called by doprnt_2(), avoiding calls to
	output_string that make #'format needlessly slow for these common
	cases.
	* doprnt.c (doprnt_2):
	Buffer the padding, sign info with a local alloca'd array, rather
	than using the lstream buffering. This makes it possible to pass
	output to any stream accepted by #'write-sequence or
	write_string_1().
	When writing a string and not truncating it, use
	write_lisp_string() and thence copy_string_extents() rather than
	stretch_string_extents ().
	* doprnt.c (emacs_doprnt_1):
	Check text_before_len is non-zero before attempting to output the
	text before this format sequence.
	* doprnt.c (Fformat_into):
	Update this to avoid rejection of non-LSTREAMs, update the
	docstring accordingly. We will error now on a lower level.
	* extents.c:
	* extents.c (struct copy_string_extents_arg):
	* extents.c (copy_string_extents_mapper):
	* extents.c (copy_string_extents):
	Revert to the old implementation of this function, separate out
	copy_string_extents() and stretch_string_extents().
	* extents.c (struct stretch_string_extents_arg): New.
	* extents.c (stretch_string_extents_buffer_mapper): New.
	Mapper to copy extents where the source and the destination have
	differing byte lengths, and the target is a buffer.
	* extents.c (stretch_string_extents_mapper):
	Mapper to copy extents where the source and the destination have
	differing byte lengths, and the target is an lstream or a string.
	* extents.c (stretch_string_extents):
	Call the above two functions when appropriate.
	* extents.h (stream_extent_position): New.
	Return a bytecount appropriate for use when creating an extent
	with STREAM's current position as its end position or its start
	position.
	* lisp.h (write_lisp_string): New. Alternative to #'princ that
	doesn't require the preparation the Lisp printer does and doesn't
	truncate your string according to print-string-length.
	* lstream.h:
	extents.h now #includes this file, don't #include it, just declare
	struct extent info.
	* print.c:
	* print.c (write_lisp_string): New.
	* print.c (write_string_1): Make a text checking assertion a bit
	more idiomatic.

2016-10-15  Aidan Kehoe  <kehoea@parhasard.net>

	1. Make most of the fixnum conversion functions in doprnt.c take
	unsigned arguments, since emacs_doprnt_1() isn't interested in the
	minus sign anyway and that's simpler to implement.
	2. Add support for a pad character alternative to space, as
	implemented in SXEmacs.
	3. Document SXEmacs-compatible flags already implemented.
	4. Actually implement the h and l flags for Lisp arguments, where
	previously they were silently ignored. Implement hh and ll flags
	too.
	5. Now that %x, %o, and %b are signed by default, add an unsigned
	modifier u, and make %u on its own an alias for %ud.

	* doprnt.c (fixnum_to_string_rshift_1):
	Removed, in favour of emacs_uint_to_string_rshift_1().
	* doprnt.c (emacs_uint_to_string_rshift_1):
	Correct the comment documenting this function, fix some
	indentation.
	* doprnt.c (emacs_uint_to_string_general_1):
	Renamed and reworked from fixnum_to_string_general_1; take an
	unsigned argument, since our callers are not necessarily
	interested in the minus sign and the range is bigger.
	* doprnt.c (uint_64_bit_to_string):
	Make this available for supporting the ll bit length portably.
	* doprnt.c (fixnum_to_string):
	Adjust this to match the changed APIs of its called functions.
	* doprnt.c (bignum_to_string_1):
	Document this.
	* doprnt.c (bignum_to_string):
	Document this.
	* doprnt.c (ratio_to_string_1):
	* doprnt.c (ratio_to_string):
	Document these, wrap them in #ifdef HAVE_RATIO, implement code to
	allocate the buffer on the heap if that's appropriate.
	* doprnt.c (struct printf_spec):
	Order this more mercilessly from widest to narrowest, hopefully
	minimising padding needed.
	* doprnt.c (union printf_arg):
	Change the type of the l element to EMACS_INT and the type of the
	ul element to EMACS_UINT.
	Add a u64 element to this, for an explicitly-64-bit unsigned
	integer, used in implementing the combination of the unsigned
	modifier and the bit length.
	* doprnt.c (enum sign_flag): Rename SIGN_FLAG_SPACE to
	SIGN_FLAG_PADCHAR, now we support an explicit pad character.
	* doprnt.c (enum hl_flag): New.
	Parse C's length specifiers into this new enum.
	* doprnt.c (HANDLE_SIGN_FLAG):
	Support the pad character.
	* doprnt.c (HANDLE_SIGN_AND_NUMBER):
	Use ichar_itext_len here, so no need to set a second character
	buffer at runtime.
	* doprnt.c (doprnt_2):
	Rename the various variables that referred to spaces to reflect
	that they now mean an explicit pad character.
	* doprnt.c (NEXT_ASCBYTE):
	Rename this from NEXT_ASCII_BYTE, choosing a name with commonality
	with, e.g. write_ascbyte (), emphasising that I've thought
	carefully about it from a Mule perspective and it's fine as it is.
	Be a bit clearer in our error message.
	* doprnt.c (RESOLVE_FLAG_CONFLICTS):
	Update this to reflect the pad character.
	* doprnt.c (parse_doprnt_spec):
	On creating the specs dynarr, immediately size it such that it
	shouldn't need expansion the vast majority of the time.
	Add pad char handling.
	Use itext_ichar_eql, rather than uncleanly directly dereferencing
	an Ibyte *.
	Instead of calling parse_integer() on every converter seen, do a
	gross plausibility check for a possible digit first.
	Handle the new padchar flag, API taken from SXEmacs.
	Since we're examining the flag characters exhaustively, don't
	redundantly call strchr() on every iteration of the loop.
	Back up within the loop when we encounter an unknown character.
	Add support for the hh and ll flags.
	Accept u as a modifier, no longer as a converter character on its
	own; compromise on this for compatibility with C and with old
	XEmacs code by rewriting a non-modifier 'u' to "ud".
	* doprnt.c (get_doprnt_args):
	Be more internally consistent within XEmacs in the size of the
	arguments read when a length modifier is supplied, even if that is
	not consistent with the machine's C compiler.
	* doprnt.c (rewrite_rational_spec):
	Update this to do the work of supporting the bit length
	modifiers, relevant with fixnums and bignums.
	* doprnt.c (rewrite_floating_spec):
	rewrite_floating_spec() is only called from one place, it can be
	made simpler than I had planned originally.
	* doprnt.c (FIXNUM_SPEC_PREAMBLE_1): New. Refactored out from
	FIXNUM_SPEC_PREAMBLE(), to allow better handling of the bit length
	flags.
	* doprnt.c (emacs_doprnt_1):
	Make *largs const again, rewrite_rational_spec now modifies OBJ.
	Initialize OBJ, ARG outside the switch ().
	Call the fixnum conversion functions with their new calling
	conventions.
	Explicitly have a case to handle unsigned fixnum <= 64 bits in
	width, for the sake of the bit length support.
	* doprnt.c (Fformat):
	Extend the documentation of this function to include the new flag
	characters, the pad character, the newly-implemented (but not new)
	length modifiers, and the new unsigned modifier.
	* number.h (bignum_to_emacs_uint):
	Add this #define.

2016-10-15  Aidan Kehoe  <kehoea@parhasard.net>

	* number-gmp.c (bignum_to_llong):
	Correct the sense of the initialisation of the sign mask. I will
	have tests for this code soon.

2016-10-15  Aidan Kehoe  <kehoea@parhasard.net>

	* number-gmp.c (bignum_to_llong):
	* number-gmp.c (bignum_to_ullong):
	Don't implement this in terms of mpz_export(), since that always
	exports the whole bignum, and we don't actually want that, we only
	want those low-order bits that will fit into a long long.
	
	This hasn't caused any problems so far because we only
	called bignum_to_{u,}llong() in contexts where the bignum *fit* into
	the long long, but is an incompatiblity with what the MP bignum
	support does, with what one expects coming from C, and it has
	caused me a problem in some other (new) code.

2016-10-13  Jerry James  <james@xemacs.org>

	* tls.c (openssl_malloc): New function for use with OpenSSL >= 1.1.0.
	(openssl_realloc): Ditto.
	(openssl_free): Ditto.
	(init_tls): New initialization sequence for OpenSSL >= 1.1.0.

2016-09-07  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c (re_wctype):
	Take a new LENGTH argument.
	Update the implementation of the function to take into account
	the relative frequencies of the various character classes.

	This change is from Micha Nazarewicz introduced in GNU changeset
	4538a5e37, of 20160717, thank you Micha.
	* regex.c (regex_compile):
	Call re_wctype with its new argument.
	* regex.c (re_match_2_internal):
	Order the CLASS_BITS check to take into account relevant
	frequencies of the various character classes.
	* regex.h:
	Declare re_wctype with its new argument.
	Remove CHAR_CLASS_MAX_LENGTH, now it's no longer used.
	Add to the clarity of this file by defining ISALNUM to be
	equivalent in implementation to ISWORD, something it already was
	in regexp searches,
	* search.c (skip_chars):
	Use re_wctype()'s new calling convention.

2016-08-19  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c (maybe_echo_keys):
	If there is nothing to echo in command_builder->echo_buf, don't
	echo from it.
	* event-stream.c (Fnext_event):
	Don't echo mouse wheel events, this adds nothing to the user's
	decision as to what to type next.
	* events.h (event_mouse_wheel_p): New.
	Return non-zero if an event is a mouse wheel event.

2016-09-07  Aidan Kehoe  <kehoea@parhasard.net>

	Handle reading numbers better on builds without bignum support,
	read_atom ().

	* lisp.h:
	* lisp.h (enum parse_integer_flags): New.
	Add a new flag to parse_integer (), CHECK_OVERFLOW_SYNTAX. This is
	useful on builds without bignum support, where it tells
	parse_integer () to continue to check syntax rather than erroring
	immediately when it would otherwise overflow.
	parse_integer () can return Qunbound when this flag is set.
	* data.c (parse_integer):
	Change JUNK_ALLOWED to be FLAGS, instead.
	When we would overflow without bignum support, if
	CHECK_OVERFLOW_SYNTAX is non-zero, keep looking at the string, and
	return Qunbound if it is syntactically a valid integer.
	* data.c (Fparse_integer):
	Use parse_integer()'s new calling convention.
	* lread.c (read_atom):
	When reading a ratio, check for Qunbound, which we may see on
	non-bignum builds.

2016-08-04  Aidan Kehoe  <kehoea@parhasard.net>

	Create less garbage when reading symbols, lread.c.
	To support this, move intern_istring to taking LEN and RELOC
	arguments in the same way output_string() does.
	Implement Fintern () in terms of intern_istring (), not the other
	way around, since most symbols created are created by the Lisp
	reader, no point making Fintern () the cheaper path.

	* file-coding.c (find_coding_system):
	* file-coding.c (setup_eol_coding_systems):
	* file-coding.c (snarf_coding_system):
	Use intern() instead of intern_istring () in these functions.
	* file-coding.c (make_coding_system_1):
	Use Fintern() with emacs_sprintf_string_lisp() in this function to
	create symbols in a couple of places, since we're going to need a
	Lisp string anyway no need to output to malloc ().
	* fontcolor-tty.c (tty_initialize_font_instance):
	* fontcolor-x.c (x_font_instance_properties):
	* keymap.c (make_key_description):
	Use intern () in these functions rather than intern_istring ().
	* lisp.h:
	Provide intern_istring's new declaration.
	* lread.c (read_atom):
	Return early if we see an uninterned symbol.
	Don't cons up the symbol's name as a string if the symbol would be
	interned, leave that to intern_istring() if necessary.

	* select-gtk.c (atom_to_symbol):
	* select-x.c (x_atom_to_symbol):
	Usee intern() in these functions as appropriate.
	* symbols.c (intern_istring):
	Change to take a bytecount, a Lisp string, and a package
	argument.
	* symbols.c (intern):
	* symbols.c (intern_massaging_name):
	Call intern_istring() from these two functions.
	* symbols.c (Fintern):
	Call intern_istring() from this function, the implementation has
	been moved there.
	* unicode.c (unicode_to_ichar):
	Call intern () as appropriate, use listu () rather than awkwardly
	nconc'ing together sublists for the call to #'make-charset.

2016-09-08  Aidan Kehoe  <kehoea@parhasard.net>

	Add digit-fixnum-ascii, a version of digit-fixnum-map supporting
	only the ASCII digits; use this in parsing format specification
	offsets, width, and in regular expression parsing.
	* data.c:
	* data.c (Vdigit_fixnum_ascii): New.
	Version of `digit-fixnum-map' that supports only ASCII, used in
	parsing regular expressions and format specifications.
	* doprnt.c:
	* doprnt.c (struct printf_spec):
	ARGNUM is now an Elemcount, fitting better with the fact that it 
	* doprnt.c (parse_off_posnum): Delete.
	* doprnt.c (parse_doprnt_spec):
	Use parse_integer (), not parse_off_posnum in this function.
	* doprnt.c (syms_of_doprnt):
	* file-coding.c (find_coding_system_for_text_file):
	Add a dash to the end of the PREFIX arg to
	make_coding_system_internal.
	* file-coding.c (setup_eol_coding_systems):
	Ditto.
	* file-coding.c (make_coding_system_1):
	Call concat3 () rather than firing up the functions from doprnt.c
	before e.g. the syntax tables are available.
	Don't intern the name of our internal coding system when there's
	no need to; the symbol is reachable from
	Vcoding_system_hash_table, the coding system is reachable through
	of the non-internal coding system.
	* file-coding.c (chain_canonicalize_after_coding):
	Add a trailing dash here to the PREFIX argument of
	make_internal_coding_system.
	* lisp.h:
	Make Vdigit_fixnum_ascii available here.
	* regex.c (GET_UNSIGNED_NUMBER):
	Don't explicitly check for non-ASCII characters, leave that to
	parse_integer.
	* search.c (Freplace_match):
	Ditto.

2016-09-05  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c:
	* doprnt.c (struct printf_spec):
	In this structure minwidth and precision are Charcounts; declare
	them as such, rearrange things a little to group similary-sized
	objects together. There is still more scope for this, but I don't
	plan to do it now.
	New field, format_length, a bytecount describing the size of this
	format spec.
	* doprnt.c (doprnt_2):
	Revise this function significantly to support passing extent info
	to STREAM.
	Take new arguments, analogous to output_string() in print.c.
	Be lazy about counting characters except when absolutely
	necessary. Be lazy about padding except when absolutely
	necessary.
	Copy extent information across using the new
	stretch_string_extents.
	* doprnt.c (parse_doprnt_spec):
	Fill the spec.format_length field in SPEC in this function.
	* doprnt.c (emacs_doprnt_1):
	Call doprnt_2 with its new arguments.
	* doprnt.c (Fformat): Move this here from editfns.c.
	* doprnt.c (syms_of_doprnt): New. Now necessary.
	* emacs.c (main_1): Call syms_of_doprnt();
	* editfns.c (Fformat): Move to doprnt.c.
	* editfns.c (syms_of_editfns): Fformat removed from here.
	* extents.c:
	* extents.c (struct copy_string_extents_arg):
	Extend this to allow a difference in byte length between the new
	and the old object.
	* extents.c (copy_string_extents_mapper):
	Calculate the delta between the new and old byte length; if
	positive, insert the new text, conceptually, just after the new
	position, moving later extents even later in the string.
	Apply existing extent info as appropriate.
	* extents.c (copy_string_extents): Use the new fields in
	copy_string_extents_arg here.
	* extents.c (stretch_string_extents): New. Like
	copy_string_extents(), but the new length and the old_length can
	differ.
	* extents.h:
	Declare stretch_string_extents ();
	* lstream.c:
	* general-slots.h:
	Move Qstreamp here from lstream.c
	* symsinit.h:
	Add syms_of_doprnt here.

2016-08-31  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (emacs_doprnt_1):
	Our long_to_string () is documented as being faster than sprintf's
	%d, and that remains the case with my testing today (about 20%
	faster for sixteen-bit numbers than the C library implementation
	on this OS X machine). Use long_to_string() instead of calling
	sprintf for fixnums within #'format.

2016-08-31  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (emacs_doprnt_1):
	%c does not specify a number, handle it separate from the
	numbers. Accept a fixnum argument that is a valid character code,
	but do no accept other number values, in particular, fail on
	floats (instead of printing a random subset of the bit values as
	we did previously), ratios and bignums.
	Error when supplied with a precision, this makes no sense for a
	character value.
	* editfns.c (Fformat):
	Update the docstring of this to reflect a new restriction, that %c
	does not accept non-integer arguments.

2016-08-27  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (emacs_doprnt_va):
	Use the new bytecount result of long_to_string instead of calling
	strlen on its result.
	* lisp.h:
	New declaration for long_to_string, return a bytecount, not
	void. Change the type of the BUFFER argument to be Ascbyte *
	rather than char *.
	* print.c (long_to_string):
	Implement this change, returning the length of the string without
	the terminating '\0'.
	* print.c (print_internal):
	Use the new return value of long_to_string instead of calling
	strlen on its result.
	* redisplay.c (decode_mode_spec):
	Use the new return value of long_to_string.

2016-08-17  Aidan Kehoe  <kehoea@parhasard.net>

	Pass extent info to lstreams when writing strings to them.

	Make the resizing_buffer lstream type visible to Lisp using the
	Common Lisp #'make-string-output-stream API, allowing, for
	example, gnuserv.el to make much less garbage, and allowing the
	extent-preservation code to be tested at Lisp level.
	* buffer.h:
	buffer_or_string_{bytexpos_to_memxpos,memxpos_to_bytexpos}
	->object_{bytexpos_to_memxpos,memxpos_to_bytexpos}.
	* doprnt.c (emacs_vsprintf_string_lisp):
	* doprnt.c (emacs_vsprintf_string):
	Use resizing_buffer_to_lisp_string in these functions, preserve
	extent data.
	* extents.c:
	* extents.c (allocate_extent_info):
	Make this non-static, now it's used in lstream.c.
	* extents.c (object_bytexpos_to_startind):
	* extents.c (object_bytexpos_to_endind):
	* extents.c (object_extent_info):
	* extents.c (object_extent_list):
	* extents.c (object_extent_info_force):
	* extents.c (object_stack_of_extents):
	* extents.c (object_stack_of_extents_force):
	* extents.c (detach_all_extents):
	* extents.c (extent_extent_list):
	* extents.c (sledgehammer_extent_check):
	* extents.c (soe_dump):
	* extents.c (soe_insert):
	* extents.c (soe_delete):
	* extents.c (soe_move):
	* extents.c (soe_invalidate):
	* extents.c (extent_endpoint_byte):
	* extents.c (extent_endpoint_char):
	* extents.c (make_extent_detached):
	* extents.c (extent_first):
	* extents.c (extent_e_first):
	* extents.c (extent_last):
	* extents.c (extent_e_last):
	* extents.c (extent_in_region_p):
	* extents.c (map_extents):
	* extents.c (adjust_extents):
	* extents.c (adjust_extents_for_deletion):
	* extents.c (extent_find_end_of_run):
	* extents.c (extent_find_beginning_of_run):
	* extents.c (extent_fragment_update):
	* extents.c (decode_extent):
	* extents.c (set_extent_endpoints):
	* extents.c (Fset_extent_endpoints):
	* extents.c (verify_extent_modification):
	* extents.c (process_extents_for_insertion_mapper):
	* extents.c (process_extents_for_deletion):
	* extents.c (run_extent_copy_paste_internal):
	* extents.c (run_extent_copy_function):
	* extents.c (run_extent_paste_function):
	* extents.c (splice_in_string_extents_mapper):
	* extents.c (splice_in_string_extents_the_hard_way_mapper):
	* extents.c (struct copy_string_extents_arg):
	* extents.c (copy_string_extents_mapper):
	* extents.c (copy_string_extents):
	Change buffer_or_string -> object in calls to the renamed
	functions.
	Be lazier about byte->char offset conversion, only do it when Lisp
	is definitely going to be called.
	* extents.h:
	* lstream.c:
	* lstream.c (print_lstream):
	Resizing-buffer lstreams now escape to Lisp, print them as normal
	Lisp objects. 
	* lstream.c (Lstream_write_with_extents): New. Like Lstream_write,
	but preserve any extent information.
	* lstream.c (Lstream_extent_info): New. Return any extent
	information for an lstream.
	* lstream.c (struct resizing_buffer_stream):
	Rename and re-declare some elements of this structure.
	* lstream.c (make_resizing_buffer_output_stream):
	Allocate the extent info in this stream on creating it.
	* lstream.c (resizing_buffer_writer):
	* lstream.c (resizing_buffer_write_with_extents): New.
	Write to this resizing buffer preserving extent info.
	* lstream.c (resizing_buffer_marker): New. Mark the extent_info object
	associated with this lstream.
	* lstream.c (resizing_buffer_to_lisp_string):
	Copy extent info into the created string in this function.
	* lstream.c (Fmake_string_output_stream): New.
	Provide this Common Lisp API, used to access the already-existing
	resizing_buffer lstream type from Lisp.
	* lstream.c (Fget_output_stream_string): New.
	Return the content of a resizing_buffer as a string with extent
	info, and reset it. API from Common Lisp.
	* lstream.c (Fclear_output):
	Reset the contents of a resizing buffer without returning a
	string. API from Common Lisp.
	* lstream.c (syms_of_lstream):
	Make the new Lisp subrs available.
	* lstream.c (lstream_type_create):
	Make new Lstream methods available.
	* lstream.h:
	* lstream.h (CHECK_LSTREAM):
	Uncomment this, now resizing_buffer lstreams intentionally escape
	to Lisp.
	* lstream.h (lstream_implementation):
	Make the write_with_extents() and extent_info() lstream methods
	available outside this file.
	* print.c (output_string):
	Use write_with_extents () when ouputting a string to an Lstream,
	giving the extent info a chance to be preserved.
	* print.c (print_finish):
	In the frame kludge code, create a Lisp string from the resizing
	buffer and print that if that is needed to preserve extent info.
	* print.c (prin1_to_string):
	Use resizing_buffer_to_lisp_string() here, preserving extent info.
	* print.c (Ferror_message_string):
	Ditto.

2016-07-06  Aidan Kehoe  <kehoea@parhasard.net>

	* print.c (Fterpri): Move this to cl-extra.el, no need to have it
	in C, it's perfectly fine in performance terms and takes less
	space in the binary to have it in Lisp.
	* print.c (syms_of_print): Remove it from here too.

2016-07-02  Aidan Kehoe  <kehoea@parhasard.net>

	* sequence.c (struct merge_string_extents_struct):
	Drop ENTRY_LENGTH from this structure, we always use the string's
	length, and we have the string available.
	* sequence.c (concatenate):
	Only look for string extent info once, in the main loop, avoiding
	possible confusion and assertion failures if garbage (or worse,
	valid string pointers that were not expected to be there) end up
	in args_mse.  Thank you for the bug report, Stephen Turnbull.

2016-06-30  Aidan Kehoe  <kehoea@parhasard.net>

	Move #'concatenate to C, improve the implementation and
	algorithmic complexity of #'concat.
	* bytecode.c:
	* event-msw.c (dde_eval_string):
	* gc.c (show_gc_cursor_and_message):
	* gc.c (remove_gc_cursor_and_message):
	* gutter.c (construct_window_gutter_spec):
	* tls.c (gnutls_pk11_password):
	* tls.c (openssl_error_string):
	Call concatenate(), not Fconcat(), in these files.

	* fns.c (concat2, concat3, vconcat2, vconcat3, Fappend, Fconcat):
	Move these to sequence.c
	* fns.c (copy_list):
	Call concatenate() here, not concat().
	* fns.c (Also see): Removed.
	* fns.c (Fcopy_sequence):
	* fns.c (Fcopy_alist):
	* fns.c (arguments): Removed.
	* fns.c (nconc2):
	bytecode_nconc2() now does its own GCing, no need for us to.
	* fns.c (bytecode_nconc2):
	GCPRO in this function, document why.
	* fns.c (Fnconc):
	Don't GCPRO in this function, it is not called from C, and any
	Lisp calls will have their arguments GCPROd automatically.
	* fns.c (syms_of_fns):
	Move Fappend to sequence.c; move #'concat, #'vconcat, #'bvconcat
	to subr.el.
	* general-slots.h:
	Move 'bit-vector, 'vector here.
	* lisp.h:
	Declare concatenate(), the heavy lifting of #'concat.
	* sequence.c:
	* sequence.c (Fmapconcat):
	Call concatenate() rather than Fconcat().
	* sequence.c (Fmapcan):
	GCPRO the arguments to Fnconc() ourselves here.
	* sequence.c (struct merge_string_extents_struct):
	Move this here from fns.c().
	* sequence.c (concatenate):
	Re-implement concat(), previously in fns.c, in this file; use a
	much cheaper algorithm for the common case of all-string arguments and
	a string result, use a cheaper algorithm for append(), only
	traversing lists and strings once, call #'coerce as necessary.
	* sequence.c (Fconcatenate):
	Make concatenate() available to Lisp.
	* sequence.c (concat2, concat3, vconcat2, vconcat3): Moved here
	from fns.c.
	* sequence.c (Fappend): Moved here from fns.c, implemented in
	terms of concatenate().
	* sequence.c (syms_of_sequence):
	Make some subrs available here, move some symbols to
	general-slots.h.

2016-06-29  Aidan Kehoe  <kehoea@parhasard.net>

	* bytecode.c (ADJUST_STACK_GCPRO):
	Rename GCPRO_STACK to the less misleading ADJUST_STACK_GCPRO.
	Clarify what it does in a comment.
	Remove commented-out, confusing calls to GCPRO_STACK from before
	the active stack was systematically GCPRO'd.

2016-06-25  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Finsert_file_contents_internal):
	If the Lstream character count info wasn't available for one
	buffer read, don't assume it will never be available again for
	this stream, keep checking. We may be in the middle of a character
	in a Unicode coding system, which can throw off our calculation
	briefly.
	* insdel.c (buffer_insert_string_1):
	Ben changed the semantics of assertions on builds without
	assertions enabled--the statement is now always executed--so wrap
	an assertion that, when enabled, misses the point of the Lstream
	character count infrastructure entirely, in #ifdef
	ERROR_CHECK_TEXT.

2016-06-16  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c:
	* regex.c (regex_compile):
	Improve support for high-numbered backreferences here.
	* search.c (Freplace_match):
	Support backreferences greater than 9 in this function.

2016-05-31  Jerry James  <james@xemacs.org>

	* process-unix.c (unix_create_process): Move setsid call back to
	its original location for non-Cygwin platforms to fix M-x shell
	breakage under tcsh.

2016-05-31  Jerry James  <james@xemacs.org>

	* tls.c (init_tls): Do no attempt to disable SSLv2 with NSS 3.24.0
	and newer, where SSLv2 cannot be enabled.

2016-05-31  Aidan Kehoe  <kehoea@parhasard.net>

	* sequence.c (Freduce):
	Behave sensibly with a cons sequence, :from-end non-nil, and a
	zero-length range, avoid a crash in this context.

2016-05-07  Aidan Kehoe  <kehoea@parhasard.net>

	* sequence.c (sublis): GC protect the results returned by
	invocations of sublis(), if TEST does fancy things with ALIST they
	can become garbage behind our back.
	* sequence.c (subst): Document why GC protection not needed.

2016-04-24  Aidan Kehoe  <kehoea@parhasard.net>

	Fix a bug where a fixnum used as a key in a string's plist was
	silently corrupted.
	* alloc.c:
	* alloc.c (string_plist_ptr):
	Check a flag in the header to find out whether this string was
	ever modified, rather than assuming based on the type of the
	corresponding entry of the plist.
	* alloc.c (string_extent_info):
	New function, encapsulate access to the string's plist.
	* alloc.c (bump_string_modiff):
	Move this accessor here.
	* alloc.c (make_uninit_string):
	Clear the MODIFFP header flag on allocation.
	* alloc.c (Fstring_modified_tick):
	Move this here from fns.c, it's an accessor function, it makes
	more sense to have it here.
	* alloc.c (syms_of_alloc):
	* extents.c:
	* extents.c (buffer_or_string_extent_info):
	Use string_extent_info () here.
	* fns.c:
	* fns.c (syms_of_fns):
	Remove #'string-modified-tick, bump_string_modiff() from this
	file.
	* lisp.h:
	* lisp.h (struct Lisp_String):
	Add a header flag here, documenting whether a string has ever been
	modified.
	* lisp.h (MAX_STRING_ASCII_BEGIN): New definition.
	* lisp.h (XSTRING_MODIFFP):
	Make the flag available.

2016-04-14  Aidan Kehoe  <kehoea@parhasard.net>

	* print.c (output_string):
	When RELOC is a string and FUNCTION is a function, be more careful
	about FUNCTION possibly modifying RELOC and making our offset data
	invalid.
	Don't call bytecount_to_charcount when that is not necessary.
	* print.c (print_string):
	Check whether PRINTCHARFUN has made our string indices invalid,
	update as appropriate.
	Don't get the string char length when there's no need to.
	Operate in terms of Ichars, don't assume internal-format text is
	ASCII compatible.
	* print.c (print_symbol):
	Check whether PRINTCHARFUN has modified NAME's byte length, making
	sure we don't run off the end.
	Operate in terms of Ichars, don't assume internal-format text is
	ASCII compatible.

2016-03-31  Aidan Kehoe  <kehoea@parhasard.net>

	Clean up and finish the implementation of regular expression
	searching within relocating Lisp buffers. As well as relocating
	local pointers within re_match_2_internal() and re_search_2(),
	relocate pointers to regular expression register begin and end
	values, and pointers that are saved in the failure stack.

	* regex.c:
	* regex.c (offset_post_relocation): Make this inline.
	* regex.c (DEBUG_RUNTIME_FLAGS): New #define, zero on a non-debug
	build, reflects debug_regexps on a debug build, makes various
	things cheaper on a debug build.
	* regex.c (malloc_checking_assert): Make this available and empty
	if this is not XEmacs.
	* regex.c (PUSH_FAILURE_POINTER_1): New. This was previously
	PUSH_FAILURE_POINTER(). 
	* regex.c (PUSH_FAILURE_POINTER): Sanity-check the argument here
	when the relevant assertions are turned on.
	* regex.c (PUSH_FAILURE_RELOCATABLE): New. Push a relocatable
	pointer onto the failure stack; sanity-check its value when the
	relevant assertions are turned on.
	* regex.c (pop_failure_relocatable_1): New. Sanity-check a
	relocatable pointer, then pop and return it from the failure
	stack.
	* regex.c (POP_FAILURE_RELOCATABLE): New. Pop a relocatable
	pointer from the failure stack, calling
	pop_failure_relocatable_1() if appropriate.
	* regex.c (PUSH_FAILURE_POINT):
	Reorganise this to keep debugging code more to itself, making it
	easier to see what actual non-debug code is being excude.
	* regex.c (POP_FAILURE_POINT): Ditto.
	* regex.c (MAYBE_START_OVER_WITH_EXTENDED): Change the syntax of
	this macro to something clang prefers, in passing.
	* regex.c (re_match_2_internal):
	Initialise best_regstart, best_regend here too, with the rest of
	the register information.

2016-02-28  Aidan Kehoe  <kehoea@parhasard.net>

	* print.c (print_symbol):
	Small bugfix, recognise that a trailing sign excludes a symbol
	from potentially having number syntax.

2016-01-19  Stephen J. Turnbull  <stephen@xemacs.org>

	* editfns.c (Fsave_current_buffer): Improve docstring.

2015-06-22  Michael Sperber  <mike@xemacs.org>

	* redisplay-xlike-inc.c (XFT_FROB_LISP_COLOR): Use
	`xft_convert_color_1' instead of `xft_convert_color'.

2014-06-19  Stephen J. Turnbull  <stephen@xemacs.org>

	* device-x.c (x_IO_error_handler):  Check errno for a real error.

	On Mac OS X 10.9 "Mavericks" and 10.10 "Yosemite", x_IO_error_handler
	gets triggered by Cmd-W or clicking on the WM's close button:

	 xemacs: Fatal I/O Error 0 (Undefined error: 0) on display connection \
	 "/tmp/launch-HpN0rX/org.macosforge.xquartz:0.0"
	 after 3746329 requests (3746329 known processed) \
	with 0 events remaining.

	This is inappropriate because there are other frames open on the
	device.

2015-06-03  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (Fload_internal):
	Delegate calling the handler and #'substitute-in-file-name to #'load.
	Error correctly with a zero-length file name, instead of giving a
	bus error on my machine.
	Delegate the check for out-of-date ELC files to #'load, 
	avoiding a bug where the encoding of the ELC file and the source
	file differed.
	* lread.c (PRINT_LOADING_MESSAGE_1):
	This is simplified, now we no longer have to talk about
	out-of-date ELC files.

2015-05-15  Aidan Kehoe  <kehoea@parhasard.net>

	* buffer.c:
	* buffer.c (Fline_number): New C implementation, using the line
	number cache of line-number.c, with a new optional BUFFER
	argument.
	* buffer.c (syms_of_buffer):
	Make it available to Lisp.
	* line-number.c (buffer_line_number):
	New argument, RESPECT-NARROWING, describing whether to count from
	the beginning of the visible region or from the beginning of the
	buffer.
	* line-number.h:
	* line-number.h (buffer_line_number): Update its declaration.
	* redisplay.c (window_line_number): Call it with the new argument.

2015-05-11  Aidan Kehoe  <kehoea@parhasard.net>

	* unicode.c (encode_unicode_char):
	If we have no information on the Unicode mapping of a character,
	write U+FFFD unconditionally. Remove an old, incomplete,
	inappropriate attempt to preserve certain East Asian characters.

2015-05-10  Aidan Kehoe  <kehoea@parhasard.net>

	* floatfns.c (truncate_one_float):
	Fix a bug here when double_to_integer() (and previously
	float_to_int()) returned a bignum; this was silently treated as a
	fixnum, giving consistently incorrect remainders and less
	consistently-incorrect but still buggy divisors.

2015-05-10  Aidan Kehoe  <kehoea@parhasard.net>

	* floatfns.c (double_to_integer):
	Rename this from float_to_int to fit our newer, bignum-compatible
	terminology.
	GMP can signal SIGFPE when asked to turn NaN or infinity into a
	bignum, and we're not prepared to handle that signal if the OS float
	library routines don't do that, so check for those values
	explicitly.

	* floatfns.c (ceiling_two_float):
	* floatfns.c (ceiling_one_float):
	* floatfns.c (floor_two_float):
	* floatfns.c (floor_one_float):
	* floatfns.c (round_two_float):
	* floatfns.c (round_one_float):
	* floatfns.c (truncate_two_float):
	* floatfns.c (truncate_one_float):
	Call double_to_integer() with its new name.

	* number.c:
	Don't use the {bignum,ratio,bigfloat}_set_double functions
	directly here, with GMP they can choke when handed non-finite C
	doubles, call Ftruncate() and the new float_to_bigfloat() from
	floatfns.c. Maybe we should extend number-gmp.c with GMP-specific
	implementations that check for non-finite values.

2015-05-09  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Flogand):
	* data.c (Flogior):
	* data.c (Frem):
	* data.c (Flsh):
	Give less misleading errors in all these functions, e.g. supplying
	#'integer-char-or-marker as the predicate on wrong-type-argument,
	when float would not be accepted.

2015-05-09  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read_rational):
	Cast the call to memchr() here to placate the C++ compiler.

2015-05-08  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (init_errors_once_early):
	Move the Qunsupported_type here from numbers.c, so it's available
	when the majority of our types are not supported.
	* general-slots.h: Add it here, too.
	* number.c: Remove the definition of Qunsupported_type from here.

	* lread.c (read_atom):
	Check if the first character could reflect a rational, if so, call
	parse_integer(), don't check the syntax of the other
	characters. This allows us to accept the non-ASCII digit
	characters too.
	If that worked partially, but not completely, and the next char is
	a slash, try to parse as a ratio.
	If that fails, try isfloat_string(), but only if the first
	character could plausibly be part of a float.
	Otherwise, treat as a symbol.
	* lread.c (read_rational):
	Rename from read_integer. Handle ratios with the same radix
	specification as was used for integers.
	* lread.c (read1):
	Rename read_integer in this function. Support the Common Lisp
	#NNNrMMM syntax for parsing a number MMM of arbitrary radix NNN.

2015-05-08  Aidan Kehoe  <kehoea@parhasard.net>

	* general-slots.h: Sort the symbols in this file using the Lisp
	provided.
	* chartab.h (get_char_table_mirrors_ok):
	#define this correctly without ERROR_CHECK_TYPES.

2015-05-08  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (parse_integer):
	Fix a bug here with the interaction of negative bignums and a
	non-zero JUNK-ALLOWED argument.

2015-05-08  Aidan Kehoe  <kehoea@parhasard.net>

	* print.c (print_symbol):
	Revise this. No longer call isfloat_string() and isratio_string()
	on practically every symbol seen; check explicitly for the known
	float format in this function, which turns out to be a more
	limited and cheap job than you would think.
	Also check for integer and ratio syntax in passing.
	Use Vdigit_fixnum_map when working out whether a given character
	is a digit.
	* lisp.h:
	Make Vdigit_fixnum_map available generally.

2015-05-08  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Fstring_to_number):
	Canonicalise ratios in this function, as we do bignums.

2015-05-08  Aidan Kehoe  <kehoea@parhasard.net>

	* chartab.h (get_char_table):
	* chartab.h (get_char_table_mirrors_ok): New.
	Provide get_char_table_mirrors_ok, which differs from
	get_char_table only if ERROR_CHECK_TYPES is defined.
	Implement it, and get_char_table, using a macro wrapper of
	get_char_table_1, so that on builds without optimization each
	get_char_table no longer requires two C function calls.
	* chartab.c (updating_mirror_get_range_char_table):
	Use get_char_table_mirrors_ok.
	* syntax.h:
	Ditto.

2015-04-20  Jerry James  <james@xemacs.org>

	* lisp.h (max_align_t): Do not define if C11 or C++11, or a later
	version of either, is in use.
	(ALIGNOF): Define with native operators in C11 and C++11 and later.

2015-04-18  Aidan Kehoe  <kehoea@parhasard.net>

	* sequence.c (Fclear_string): New, API from GNU.  Zero a string's
	contents, making sure the text is not kept around even when the
	string's data is reallocated because of a changed character
	length.
	* sequence.c (syms_of_sequence): Make it available to Lisp.
	* lisp.h: Make it available to C code.
	* tls.c (nss_pk11_password): Use it.
	* tls.c (gnutls_pk11_password): Use it.
	* tls.c (openssl_password): Use it.

2015-04-09  Aidan Kehoe  <kehoea@parhasard.net>

	* tls.c (nss_pk11_password):
	* tls.c (gnutls_pk11_password):
	* tls.c (openssl_password):
	* tls.c (syms_of_tls):
	Our read-a-password function is #'read-passwd, not
	#'read-password, correct that in this file.

2015-04-09  Aidan Kehoe  <kehoea@parhasard.net>

	* tls.c:
	#include <openssl/x509v3.h> for its prototype for
	X509_check_host().
	* tls.c (tls_open):
	Pass the new fifth argument to X509_check_host().

2015-04-08  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (parse_integer):
	Fix a bug in my detecting a C overflow here.

2015-04-01  Aidan Kehoe  <kehoea@parhasard.net>

	* process.c (Fgetenv):
	When interactively showing a variable's value, use %S in the
	format string so quotation marks are escaped correctly.	

2015-03-31  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c (Faccept_process_output):
	Restore the current buffer even on non-local exit in this
	function, none of the code that uses #'accept-process-output is
	actually prepared to handle the current buffer changing.

2015-03-27  Vin Shelton  <acs@xemacs.org>

	* s/cygwin64.h: Fixed another stupid typo.

2015-03-27  Aidan Kehoe  <kehoea@parhasard.net>

	Fix a small bug, extent_detach(); minimise needless char-byte
	conversion, extents.c, sticking to byte positions in general in
	this file.
	* extents.c:
	* extents.c (signal_single_extent_changed):
	Pass byte endpoints to
	gutter_extent_signal_changed_region_maybe(),
	buffer_extent_signal_changed_region().
	* extents.c (extent_detach):
	Call signal_extent_changed() correctly, pass both extent endpoints
	rather than just the byte and character variants of the start.
	* extents.c (struct report_extent_modification_closure):
	Do this in terms of byte positions.
	* extents.c (report_extent_modification_mapper):
	Use byte positions, only converting to characters when we are
	definitely calling Lisp.
	* extents.c (report_extent_modification):
	Use byte positions in this API, move the byte-char conversion to
	our callers, simplifying extents.c (it all now works in byte
	positions).
	* extents.h:
	Update report_extent_modification's prototype.
	* gutter.c (gutter_extent_signal_changed_region_maybe):
	Use byte positions here, avoids needless byte-char conversion.
	* gutter.h:
	Update the prototype here.
	* insdel.c:
	* insdel.c (buffer_extent_signal_changed_region):
	Implement this in terms of byte positions.
	* insdel.c (signal_before_change):
	* insdel.c (signal_after_change):
	Call report_extent_modification() with byte positions, doing the
	char->byte conversion here rather than leaving it to extents.c.
	* insdel.h:
	* insdel.h (struct each_buffer_change_data):
	The extent unchanged info now describes bytecounts.

2015-03-26  Vin Shelton  <acs@xemacs.org>

        * m/x86_64.h: Deleted; caused bogus GNUMakefile generation
	on cygwin64.
	* s/cygwin64.h: Fixed typo in comment at head of file.

2015-03-26  Vin Shelton  <acs@xemacs.org>

	* s/cygwin32.h: Moved guts to cygwin-common.h.
	* s/cygwin-common.h: Created from cygwin32.h.
	* s/cygwin64.h:
	* m/x86_64.h: Created to support 64-bit cygwin.
	Work started by Henry S. Thompson  <ht@inf.ed.ac.uk>.

2015-03-24  Vin Shelton  <acs@xemacs.org>

	* data.c (build_fixnum_to_char_map): Cast cctable malloc call to
	avoid warning from VS6.

	* process-unix.c:  Move disconnect_controlling_terminal() call
	later in create_process_unix().  This is necessary for Cygwin, but
	seems to work on linux (at least), too.

2015-03-20  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (build_fixnum_to_char_map):
	Whoops, highest_value is a Lisp_Object, no need to extract the
	fixnum from radix_table->default_ when initialising it. Thank you
	Robert Delius Royar, Uwe Brauer, and the union build.

2015-03-17  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (fill_ichar_array):
	Be a bit more careful never to supply the C library's isupper()
	with a value outside of that range specified by the C
	standard. Thank you Vin Shelton for reporting the Linux
	segmentation violation this provokes, and happy St. Patrick's Day
	to everyone reading the XEmacs lists!
	(vars_of_data): Don't rely on zero termination here for
	Vfixnum_to_char_map, give an explicit bytecount. Again, thank you
	Vin!

2015-03-08  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Fparse_integer):
	Document a complication that arises when a leading minus sign has
	a digit weight but is nonetheles interpreted as a minus.

2015-03-15  Aidan Kehoe  <kehoea@parhasard.net>

	* text.h: Make CHAR_CODE_LIMIT available as a #define.
	* text.h (valid_ichar_p): Use it.
	* text.c: Make a fixnum Vchar_code_limit available here.
	* text.c (non_ascii_valid_ichar_p): Use CHAR_CODE_LIMIT.
	* text.c (vars_of_text): Make `char-code-limit' available to
	Lisp.

2015-03-14  Aidan Kehoe  <kehoea@parhasard.net>

	* general-slots.h (Qno_character_typed): New error symbol.
	* event-stream.c (syms_of_event_stream): Define it.
	New error, for those cases when a keystroke is to be treated as a
	character in some context but has no character equivalent.
	* cmds.c (Fself_insert_command):
	Use it.

2015-03-14  Aidan Kehoe  <kehoea@parhasard.net>

	Add support for GNU's help-event-list here, useful for accepting
	F1 and C-h as the help character at the same time.
	* event-stream.c:
	* event-stream.c (echo_key_event):
	Be better about calculation, comments here, in passing.
	* event-stream.c (help_char_p): New.
	* event-stream.c (execute_help_form):
	There's no need to reset the command builder here; the code that
	did relied on zero-termination, which we can't anymore, and did
	not actually discard the help character. Remove this.
	* event-stream.c (Fnext_event): Use help_char_p ().
	* event-stream.c (command_builder_find_leaf_no_jit_binding):
	Use help_char_p ().
	* event-stream.c (vars_of_event_stream):
	Make help-event-list available.

2015-03-14  Aidan Kehoe  <kehoea@parhasard.net>

	* .gdbinit.in.in (Lisp): lrecord_type_lcrecord_list is specific to
	non-NEW_GC, lrecord_type_string_direct_data and
	lrecord_type_string_indirect_data are specific to NEW_GC, correct
	this in this file.

2015-03-14  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (event_matches_key_specifier_p):
	If on a TTY, check the keysym and modifiers too, before converting
	both events to characters and comparing them. We may well have
	seen a function key (by means of function-key-map) and it is
	actively unhelpful for
	(event-matches-key-specifier-p (character-to-event 'f1) 'f1)
	to given nil when the current device is a TTY.

2015-03-12  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c (lookup_command_event):
	Check whether echo_buf_fill_pointer is negative before using it in
	arithmetic, avoiding a crash in GC.
	Oddly the old code didn't do this check and didn't crash, but its
	echo_buf was from malloced memory, not from our string data, so
	there may have been more room to manoeuvre.

2015-03-04  Aidan Kehoe  <kehoea@parhasard.net>

	* sequence.c (count_with_tail):
	Accept COUNT from #'substitute, #'nsubstitute too.
	* sequence.c (FdeleteX):
	Only remove COUNT from the arguments if FROM-END is non-nil.
	* sequence.c (Fnsubstitute):
	Remove COUNT from the arguments if specified and FROM-END is
	non-nil.
	* sequence.c (Fsubstitute):
	Remove COUNT from the arguments if specified and FROM-END is
	non-nil. Do this before calling count_with_tail(). When we
	encounter the cons return by count_with_tail(), use the
	replacement object.

2015-02-25  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read_atom): Use the new calling convention for
	parse_integer().
	* lisp.h: Change the declaration of parse_integer ().
	* number.h (bignum_set_emacs_int, make_bignum_emacs_uint):
	New #defines, used in data.c.
	* lread.c (read_integer): Ditto.
	* lread.c (read1): Ditto.
	* data.c (find_highest_value): New.
	* data.c (fill_ichar_array): New.
	* data.c (build_fixnum_to_char_map): New.
	* data.c (Fset_digit_fixnum_map): New.
	* data.c (Fdigit_char_p): Moved from cl-extra.el.
	* data.c (Fdigit_char): Moved from cl-extra.el.
	* data.c (parse_integer): Moved from lread.c.
	* data.c (Fparse_integer): Made available to Lisp.
	* data.c (syms_of_data): Make the new subrs available.
	* data.c (vars_of_data): Make the new vars available.
	Expose parse_integer to Lisp, make it follow the Common Lisp API
	(with some extensions, to allow us to support non ASCII digit
	characters).

2015-01-01  Jeff Sparkes  <jsparkes@gmail.com>

	* toolbar.c (update_frame_toolbars_geometry): Only clear the
	frame's toolbar if the frame size has changed.

2015-01-08  Stephen J. Turnbull  <stephen@xemacs.org>

	Fix progress bar crashes.
	Thanks to Ralf Soergel for diagnosis and a patch.

	* config.h.in (HAVE_ATHENA_I18N): New #define.

2014-12-13  Marcus Crestani  <crestani@xemacs.org>

	* dumper.c (pdump_register_sub): Don't leave fields uninitialized.

2014-12-13  Marcus Crestani  <crestani@xemacs.org>

	* dumper.c (pdump_align_stream):
	* dumper.c (pdump): Check return value of fseek.

2014-12-13  Marcus Crestani  <crestani@xemacs.org>

	* dumper.c (pdump_file_get): Check return value of lseek.

2014-12-13  Marcus Crestani  <crestani@xemacs.org>

	* dumper.c (pdump): fdopen returns NULL when it fails.

2014-12-05  Jerry James  <james@xemacs.org>

	* src/fileio.c (Ffile_truename): Fix off-by-one error.

2014-11-23  Michael Sperber  <mike@xemacs.org>

	* font-mgr.c (Ffc_name_unparse): Do the previous change to this
	file right and parse the pattern sans the charset.

2014-11-06  Vin Shelton  <acs@xemacs.org>

	* sysdep.c (set_descriptor_non_blocking): Don't call ioctl() on
	Windows native builds.
	* emacs.c (main_1): Conditionalize tls variables and initialization.
	* number.h: Elide Visual Studio warnings on NUMBER_TYPES expansion.

2014-11-05  Jerry James  <james@xemacs.org>

	* ExternalClient-Xlib.c (ExternalClientEventHandler): Cast integer
	to long before casting to XPointer, which may be larger than int.
	* database.c: Use BEGIN_C_DECLS/END_C_DECLS around dbm definitions.
	* lisp.h (ALLOCA): Use NULL instead of (void) 0 to placate g++.
	(MALLOC_OR_ALLOCA): Ditto.
	(XSTRING_LENGTH): Use an explicit temporary with NEW_GC so g++ 4.8
	won't create an uninitialized anonymous temporary.
	(XSTRING_DATA): Ditto.
	* sysdll.c: Check whether HAVE_LTDL is defined, not its value.
	* tls.c (tls_open): Add typecast to xmalloc call in the nss,
	gnutls, and openssl versions to satisfy g++.  In the gnutls version,
	use gnutls_certificate_type_t appropriately.

2014-10-25  Michael Sperber  <mike@xemacs.org>

	* fontcolor-x.c (x_font_instance_truename):
	* font-mgr.c (Ffc_name_unparse):
	* font-mgr.h (PRINT_XFT_PATTERN): Don't modify
	fontconfig pattern passed in in place.

2014-10-18  Aidan Kehoe  <kehoea@parhasard.net>

	Some changes to eliminate warnings with Apple clang version 1.7.
	* cm.c (send_string_to_tty_console):
	* doprnt.c (doprnt_2):
	* doprnt.c (parse_off_posnum):
	* event-stream.c (dribble_out_event):
	Cast various calls to Lstream_putc() to void when the result isn't
	being used, for the sake of clang.
	* lisp.h:
	Declare #'replace here too, it's used in event-stream.c.
	* lisp.h (ALLOCA):
	* lisp.h (MALLOC_OR_ALLOCA):
	Cast a couple of zeros in the context of the ternary operator to
	void to prevent unused value warnings with clang.
	* sysdep.c (child_setup_tty):
	* text.h (ASSERT_ASCTEXT_ASCII_LEN):
	Use DO_NOTHING in these files to quieten the compiler.

2014-10-18  Stephen J. Turnbull  <stephen@xemacs.org>

	* fontcolor-xlike-inc.c (xft_find_charset_font):
	* fontcolor-x.c (x_font_instance_truename):
	* font-mgr.h (PRINT_XFT_PATTERN):
	* font-mgr.c (Ffc_name_unparse):
	Protect Ffc_name_unparse from FcNameUnparse crash on charset property.

2014-10-08  Jerry James  <james@xemacs.org>

	* tls.c (init_tls): Remove blatant Fedoraism from the OpenSSL version.
	* tls.h (tls_open):
	(make_tls_input_stream):
	(make_tls_output_stream):
	(tls_get_fd): Fix build failures in the !WITH_TLS case.

2014-10-07  Jerry James  <james@xemacs.org>

	* Makefile.in.in: Add tls.o to the link.
	* config.h.in: Add TLS symbols (WITH_TLS, etc.).
	* emacs.c (main_1): Call new functions in tls.c.
	* events.h (STREAM_USE_TLS): New macro.
	* lisp.h (Ffill): Export for nss_pk11_password.
	* lstream.c (Lstream_tls_p): New function.
	(Lstream_tls_negotiate): New function.
	(struct filedesc_stream): Add tls_state member.
	(make_filedesc_stream_1): Add state parameter.  Use tls_get_fd.
	(make_filedesc_input_stream): Add state parameter.
	(make_filedesc_output_stream): Ditto.
	(filedesc_reader): Use tls_read if tls_state is non-null.
	(filedesc_writer): Use tls_write if tls_state is non-null.
	(filedesc_closer): Use tls_close if tls_state is non-null.
	(filedesc_tls_p): New function.
	(fildesc_tls_negotiater): New function.
	* lstream.h (Lstream_implementation): Add tls_p and tls_negotiater
	members.
	* process-nt.c (nt_open_network_stream): Add tls parameter.
	* process-unix.c (unix_open_network_stream): Ditto.  Call TLS
	functions to set up the socket, if requested.
	* process.c (tls_connection_p): New function.
	(print_process): Use it.
	(Fopen_network_stream_internal): Add optional tls argument.
	(Ftls_negotiate): New function.
	* tls.c: New file, with NSS, gnutls, and OpenSSL implementations.
	* tls.h: New file.

	* console-tty.c (tty_init_console):
	* doc.c (extract_object_file_name):
	(unparesseuxify_doc_string):
	* event-stream.c (Fopen_dribble_file):
	* event-unixoid.c (event_stream_unixoid_create_io_streams):
	* file-coding.c (Ffind_coding_system_magic_cookie_in_file):
	* fileio.c (Finsert_file_contents_internal):
	(Fwrite_region_internal):
	* gpmevent.c (tty_get_foreign_selection):
	* lread.c (Fload_internal): Supply new tls arg to
	make_filedesc_input_stream and make_filedesc_output_stream.

2014-09-30  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* editfns.c (Fencode_time): Switch signs when calculating the time
	zone string. (The offset indicates the value one must add to the
	local time to arrive at UTC.)

2014-09-23  Jerry James  <james@xemacs.org>

	* floatfns.c (round_two_bignum_1): Fix memory leak.
	(round_two_bigfloat): Ditto.

2014-09-06  Aidan Kehoe  <kehoea@parhasard.net>

	* select-x.c (Fx_store_cutbuffer_internal):
	Correct the order of XSTRING_{DATA,LENGTH} vs. CHECK_STRING, make
	sure the former is after the latter, avoiding crashes when passing
	in arguments of the wrong type, or when ERROR_CHECK_STRUCTURES is
	defined.

2014-08-03  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c (allocate_command_builder):
	* event-stream.c (Fnext_event):
	Use #'make-string rather than make_uninit_string() when allocating
	the command builder's echo_buf, avoiding having octets in the
	string that do not correspond to valid internal-format text.
	* buffer.c (finish_init_buffer):
	Pass a character as the second argument to #'make-string, not a
	fixnum.

2014-07-14  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c:
	* event-stream.c (mark_command_builder):
	* event-stream.c (finalize_command_builder): Removed.
	* event-stream.c (allocate_command_builder):
	* event-stream.c (free_command_builder): Removed. Use
	free_normal_lisp_object() instead.
	* event-stream.c (echo_key_event):
	* event-stream.c (regenerate_echo_keys_from_this_command_keys):
	Detach all extents here.
	* event-stream.c (maybe_echo_keys):
	* event-stream.c (reset_key_echo):
	* event-stream.c (execute_help_form):
	* event-stream.c (Fnext_event):
	* event-stream.c (command_builder_find_leaf_no_jit_binding):
	* event-stream.c (command_builder_find_leaf):
	* event-stream.c (lookup_command_event):
	* events.h (struct command_builder):
	Move the command builder's echo_buf to being a Lisp string rather
	than a malloced Ibyte array. This allows passing through extent
	information, which was previously dropped. It also simplifies the
	allocation and release code for the command builder.
	Rename echo_buf_index to echo_buf_fill_pointer, better reflecting
	its function.
	Don't rely on zero-termination (something not particularly
	compatible with Lisp-level code) when showing a substring of
	echo_buf that differs from that designated by
	echo_buf_fill_pointer, keep a separate counter instead and use
	that.
	* minibuf.c:
	* minibuf.c (echo_area_append):
	Use the new START and END keyword arguments to #'append-message,
	rather than consing a new string for basically every #'next-event
	prompt displayed.

2014-07-02  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (Fkeymapp):
	Autoload within this, as documented. Our callers are not prepared
	to do the intelligent thing if a symbol that is fboundp to an
	autoloaded keymap, is not itself #'keymapp.

2014-07-02  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c (Fnext_command_event):
	Only snooze displaying keystrokes if PROMPT is nil. If prompt is
	non-nil, our callers want to see it.

2014-06-19  Stephen J. Turnbull  <stephen@xemacs.org>

	* buffer.c (case_fold_search): Improve docstring.

2014-06-18  Aidan Kehoe  <kehoea@parhasard.net>

	Correct a couple of things in my last change.
	* extents.h:
	Make #'delete-extent available.
	* window.c:
	* window.c (delete_saved_point): New.
	* window.c (Fdelete_window): Delete the saved point extents on
	deletion of the window, since otherwise they will only be
	garbage-collected when the buffer is.
	* window.c (Fset_window_buffer): Correct a thinko here, use a
	saved point when it *hasn't* been detached.

2014-06-17  Aidan Kehoe  <kehoea@parhasard.net>

	* extents.h:
	* window.c:
	* window.c (unshow_buffer):
	* window.c (Fset_window_buffer):
	Use extents, rather than markers, for the window buffer point
	cache, so that when the text containing that window buffer point
	is deleted, the window display code uses the buffer's actual point
	instead of the position that the marker had been moved to.
	Fixes Michael Heinrich's problem of
	http://mid.xemacs.org/6zr42uxtf5.fsf@elektra.science-computing.de ,
	introduced by Ben's patch of
	https://foss.heptapod.net/xemacs/xemacs/-/commit/047d37eb70d70f43803e508e5522ea548a016cca

2014-05-08  Jerry James  <james@xemacs.org>

	* print.c (struct debug_bindings): Add print_circle field.
	(debug_print_exit): Restore print_circle.
	(debug_print_enter): Save print_circle binding and set it.

2014-05-06  Jerry James  <james@xemacs.org>

	* file-coding.c (encode_decode_coding_region): Signal an error if
	Lstream_read encounters an error (returns -1).
	(detect_coding_type): Ditto.  Add an argument for the stream error.
	(look_for_coding_system_magic_cookie): Ditto.
	(determine_real_coding_system): Pass new stream error argument.
	(undecided_convert): Ditto.
	(Ffind_coding_system_magic_cookie_in_file): Ditto.
	* lstream.c (Lstream_errno): New function.
	(struct filedesc_stream): Add saved_errno member.
	(make_filedesc_stream_1): Initialize it.
	(filedesc_reader): Set it.
	(filedesc_writer): Set it.
	(filedesc_error): New function.
	(lstream_type_create): Record that filedesc has an error method.
	* lstream.h (struct lstream_implementation): Add error member.
	(Lstream_errno): Declare.

2014-01-27  Michael Sperber  <mike@xemacs.org>

	* symbols.c (Fdefine_function): Allow optional `docstring'
	argument, as in GNU Emacs.

	* lisp.h (Qfunction_documentation): Add extern declaration.

	* doc.c (Fdocumentation_property): Move before its use.
	(Fdocumentation): Retrieve documentation from `define-function'
	docstring for symbols.

2014-01-23  Aidan Kehoe  <kehoea@parhasard.net>

	* text.h (buffered_bytecount_to_charcount): This was
	declared wrong for non-mule, correct this. Thank you Mats Lidell
	and the buildbot.

	* lstream.c (Lstream_read_1):
	Don't include the unread partial character in
	unget_character_count, since our consumers will never be aware of it.
	* text.c:
	* text.c (buffered_bytecount_to_charcount):
	A buffer consisting entirely of a partial character needs to be
	treated as a partial last character, not a partial first
	character, to avoid double-counting.

2014-01-22  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (buffered_bytecount_to_charcount): New.
	Return the number of characters in a coding or lstream buffer,
	including partial characters at the beginning of the buffer, but
	not including those at the end. Refactored from
	Lstream_character_tell().
	* text.h:
	* text.h (buffered_bytecount_to_charcount): Declare it.
	* lstream.c (Lstream_character_tell):
	Use the refactored buffered_bytecount_to_charcount () here, both
	for the unget buffer and in_buffer.
	* file-coding.c (coding_character_tell):
	Check the character count of the lstream buffer too, when passing
	back the character count from the coding stream.

2014-01-21  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (start_with_line_at_pixpos):
	Apply Julian Bradfield's change of
	slrnlc7tnv.l3h.jcb@home.stevens-bradfield.com , never returning a
	Charbpos before the visible region. Thank you Julian!

2014-01-20  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Fcopy_file, Finsert_file_contents_internal):
	Use alloca_{rawbytes,ibytes} here instead of the implicit alloca
	on the stack; doesn't change where the buffers are allocated for
	these two functions, but does mean that decisions about alloca
	vs. malloc based on buffer size are made in the same place
	(ultimately, the ALLOCA() macro).
	(READ_BUF_SIZE): Use an explicit hexadecimal constant for the
	0x20000 value for this, don't left-shift 2 16 times. Correct the
	last ChangeLog entry after Jerry James pointed out a mistake on my
	part. Thank you for review and discussion, Jerry and Stephen
	Turnbull.

2014-01-16  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (READ_BUF_SIZE):
	Stack sizes > 2**16 elicited bugs back in August 1996, but there's
	nothing to indicate this is still the case. GNU uses a block size
	of #x10000 without problems, we can afford to be a bit more
	adventurous with a value of #x20000.

	Use it in #'copy-file too, move its #define earlier to make that
	possible. Not relevant to the coding system buffering, but still
	helpful.

2014-01-16  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c:
	* file-coding.c (struct no_conversion_coding_stream):
	* file-coding.c (const struct sized_memory_description
	no_conversion_coding_stream_description): Removed.
	* file-coding.c (coding_system_type_create):
	Remove structure and description for struct
	no_conversion_coding_system, which confused pdump on some builds
	after the last change.

2014-01-16  Aidan Kehoe  <kehoea@parhasard.net>

	Pass character count information from the no-conversion and
	unicode coding systems to the buffer insertion code, making
	#'find-file on large buffers a little snappier (if
	ERROR_CHECK_TEXT is not defined).

	* file-coding.c:
	* file-coding.c (coding_character_tell): New.
	* file-coding.c (conversion_coding_stream_description): New.
	* file-coding.c (no_conversion_convert):
	Update characters_seen when decoding.
	* file-coding.c (no_conversion_character_tell): New.
	* file-coding.c (lstream_type_create_file_coding): Create the
	no_conversion type with data.
	* file-coding.c (coding_system_type_create):
	Make the character_tell method available here.
	* file-coding.h:
	* file-coding.h (struct coding_system_methods):
	Add a new character_tell() method, passing charcount information
	from the coding systems to the buffer code, avoiding duplicate
	bytecount-to-charcount work especially with large buffers.

	* fileio.c (Finsert_file_contents_internal):
	Update this to pass charcount information to
	buffer_insert_string_1(), if that is available from the lstream code.

	* insdel.c:
	* insdel.c (buffer_insert_string_1):
	Add a new CCLEN argument, giving the character count of the string
	to insert. It can be -1 to indicate that te function should work
	it out itself using bytecount_to_charcount(), as it used to.
	* insdel.c (buffer_insert_raw_string_1):
	* insdel.c (buffer_insert_lisp_string_1):
	* insdel.c (buffer_insert_ascstring_1):
	* insdel.c (buffer_insert_emacs_char_1):
	* insdel.c (buffer_insert_from_buffer_1):
	* insdel.c (buffer_replace_char):
	Update these functions to use the new calling convention.
	* insdel.h:
	* insdel.h (buffer_insert_string):
	Update this header to reflect the new buffer_insert_string_1()
	argument.

	* lstream.c (Lstream_character_tell): New.
	Return the number of characters *read* and seen by the consumer so
	far, taking into account the unget buffer, and buffered reading.

	* lstream.c (Lstream_unread):
	Update unget_character_count here as appropriate.
	* lstream.c (Lstream_rewind):
	Reset unget_character_count here too.

	* lstream.h:
	* lstream.h (struct lstream):
	Provide the character_tell method, add a new field,
	unget_character_count, giving the number of characters ever passed
	to Lstream_unread().
	Declare Lstream_character_tell().
	Make Lstream_ungetc(), which happens to be unused, an inline
	function rather than a macro, in the course of updating it to
	modify unget_character_count.

	* print.c (output_string):
	Use the new argument to buffer_insert_string_1().
	* tests.c:
	* tests.c (Ftest_character_tell):
	New test function.
	* tests.c (syms_of_tests):
	Make it available.
	* unicode.c:
	* unicode.c (struct unicode_coding_stream):
	* unicode.c (unicode_character_tell):
	New method.
	* unicode.c (unicode_convert):
	Update the character counter as appropriate.
	* unicode.c (coding_system_type_create_unicode):
	Make the character_tell method available.

2013-12-19  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c:
	* text.h:
	* text.h (skip_ascii):
	Move skip_ascii (), the very fast inline function from the
	bytecount-to-charcount code, to text.h, to allow the coding
	systems to use it too as needed.
	* file-coding.c (no_conversion_convert):
	Use skip_ascii() as appropriate here, halving the time taken to
	write large files in my tests (again, relevant to VM buffers, but
	not a panacea to our issues with them.)

2013-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h:
	* lisp.h (PARSE_KEYWORDS_8):
	Correct this in cases where we can have noticeably fewer arguments
	than KEYWORDS_OFFSET, check whether nargs > pk_offset.
	Declare check_sequence_range in this header.
	* print.c:
	* print.c (Fwrite_sequence) New:
	Write a sequence to a stream, in the same way #'write-char and
	#'terpri do. API from Common Lisp, not GNU, so while there is some
	char-int confoundance, it's more limited than usual with GNU APIs.
	* print.c (syms_of_print):
	Make it available.
	* sequence.c (check_sequence_range):
	Export this to other files.

2013-12-15  Aidan Kehoe  <kehoea@parhasard.net>

	* number.h:
	Only make promote_args_lazy() available on builds
	WITH_NUMBER_TYPES, in case linking complains about promote_args()
	not being available.

2013-12-15  Aidan Kehoe  <kehoea@parhasard.net>

	* bytecode.c (bytecode_arithcompare):
	* bytecode.c (bytecode_arithop):
	Call promote_args_lazy () in these two functions, only converting
	markers to fixnums if absolutely necessary (since that is ON with
	large, mule buffers).

	* data.c (BIGNUM_CASE):
	* data.c (RATIO_CASE):
	* data.c (BIGFLOAT_CASE):
	* data.c (ARITHCOMPARE_MANY):
	Call promote_args_lazy () here too if WITH_NUMBER_TYPES is defined.
	We're not doing the equivalent with the non-NUMBER_TYPES code, but
	that's mostly fine, we are doing it in the bytecode.

	* number.h:
	* number.h (NUMBER_TYPES):
	* number.h (promote_args_lazy):
	Add this, returning LAZY_MARKER_T if both arguments are markers
	that point to the same buffer.

2013-12-15  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Fmax):
	* data.c (Fmin):
	When an argument is a marker or a character, and WITH_NUMBER_TYPES
	is defined, return a fixnum in these functions as is documented
	and as the non-NUMBER_TYPES code does.

2013-09-10  Stephen J. Turnbull  <stephen@xemacs.org>

	* font-mgr.c: Fix a bunch of comments and reformat some docstrings.
	(Ffc_name_parse):
	Make FcNameParse signal invalid-argument when parse fails.

2013-09-09  Stephen J. Turnbull  <stephen@xemacs.org>

	* alloc.c (free_normal_lisp_object):
	Mark unused argument.

	* bytecode.c (bytecode_negate):
	* data.c (Fsub1):
	Shut up compiler warnings about always true comparisons.

	* dired.c (Ffile_attributes):
	Shut up compiler warnings about signedness in comparison.

	* editfns.c (Fencode_time):
	Fix addition of int to string to shut up compiler.  Still broken?

	* glyphs.c (check_valid_xbm_inline):
	Shut up compiler warnings about unused variable and signedness.

	* lread.c (unreadchar):
	Shut up compiler warning about unused format argument.

	* sysdep.c (child_setup_tty):
	Shut up compiler warning about empty if body.

2013-08-05  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c:
	* data.c (Fcar):
	* data.c (Fcdr):
	* data.c (Fmake_weak_box):
	* data.c (Fweak_box_ref):
	* data.c (init_marking_ephemerons):
	* data.c (continue_marking_ephemerons):
	* data.c (finish_marking_ephemerons):
	* data.c (prune_ephemerons):
	* data.c (zap_finalize_list):
	* data.c (ephemeron_equal):
	* data.c (ephemeron_hash):
	* data.c (Fmake_ephemeron):
	* data.c (Fephemeron_ref):
	* data.c (Fephemeronp):
	* sequence.c:
	* sequence.c (Fcopy_tree):
	* sequence.c (Freplace):
	Improve coding style here; #'car and #'cdr accept lists, not just
	cons cells, update their argument names to reflect that.
	Follow coding conventions in the weak box and ephemeron code.
	Don't needlessly abbreviate in copy-tree, use argument names from
	Common Lisp in #'merge and #'replace.
	Document ALIST better in #'nsublis, #'sublis.

2013-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.34 "kale" is released.

2013-06-17  Jerry James  <james@xemacs.org>

	* Makefile.in.in: Support bignums with MPIR.
	* config.h.in (WITH_MPIR): New macro.
	* number.c: Add MPIR support.
	* number.h: Ditto.
	* number-gmp.h: Ditto.
	(ratio_set_long_ulong): Canonicalize the ratio.
	(ratio_set_ulong_ulong): Ditto.
	* number-gmp.c (init_number_gmp): Add void param to silence GCC.
	* number-mp.c (init_number_mp): Ditto.

2013-07-10  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c:
	* keymap.c (key_desc_list_to_event):
	Drop the allow_menu_events argument.
	Don't accept lists starting with Qmenu_selection as describing
	keys, nothing generates them in a way this function
	understands. The intention is reasonable but the implementation
	was never documented and never finished.
	* keymap.c (syms_of_keymap):
	Drop Qmenu_selection.
	* events.c (Fcharacter_to_event):
	* keymap.h:
	Drop the allow_menu_events argument to key_desc_list_to_event.

2013-06-17  Jerry James  <james@xemacs.org>

	* alloc.c (make_bignum_un): New function.
	(make_bignum_ll): New function.
	(make_bignum_ull): New function.
	* config.h.in (HAVE_MP_SET_MEMORY_FUNCTIONS): Add.
	* data.c (Fplus): avoid unnecessary consing.
	(Ftimes): ditto.
	* glyphs.c (check_valid_xbm_inline): Since this function is called
	prior to dumping, when bignums are forbidden, do all arithmetic
	with C integers.
	* lisp.h (MOST_POSITIVE_FIXNUM_UNSIGNED): New constant.
	(MOST_POSITIVE_FIXNUM): Redefine in terms of the above.
	(UNSIGNED_NUMBER_FITS_IN_A_FIXNUM): New macro.
	* number-gmp.c (bignum_to_llong): New function.
	(bignum_to_ullong): New function.
	(bignum_set_llong): New function.
	(bigfloat_to_string): Adjust whitespace.
	(gmp_realloc): Ditto.
	(gmp_free): Ditto.
	* number-gmp.h (bignum_fits_llong): New macro.
	(bignum_fits_ullong): New macro.
	(bignum_set_ullong): New macro.
	* number-mp.c (bignum_long_sign_bit): Remove, didn't work.
	(bignum_min_llong): New variable.
	(bignum_max_llong): New variable.
	(bignum_max_ullong): New variable.
	(bignum_to_llong): New function.
	(bignum_to_ullong): New function.
	(bignum_set_long): Reimplement using MP_XTOM.
	(bignum_set_ulong): Ditto.
	(bignum_set_llong): New function.
	(bignum_set_ullong): New function.
	(bignum_clrbit): Fix a comment.
	(bignum_random_seed): Move to number-mp.h, since it is a no-op.
	(bignum_random): Implement.
	(mp_realloc): New function.
	(mp_free): New function.
	(init_number_mp): Use them.  Fix a comment.  Eliminate
	initialization of bignum_long_sign_bit.  Initialize
	bignum_min_llong, bignum_max_llong, and bignum_set_ullong.
	* number-mp.h (MP_XTOM): New macro.
	(bignum_fits_llong_p): New macro.
	(bignum_fits_ullong_p): New macro.
	(bignum_random_seed): New macro.
	* number.h: Implement bignums as long long integers.
	(make_bignum_ll): New macro.
	(make_integer): Accept a long long value.
	(make_unsigned_integer): New macro.
	(NATNUMP): Adjust whitespace.
	(non_fixnum_number_p): Ditto.

	* alloc.c (Fmake_list): Use make_unsigned_integer or make_fixnum
	instead of make_integer where it is appropriate to do so.
	* chartab.c (char_table_default_for_type): Ditto.
	* dired.c (Ffile_attributes): Ditto.
	* elhash.c (hash_table_size_validate): Ditto.
	* eval.c (Fmacroexpand): Ditto.
	* event-stream.c (Faccept_process_output): Ditto.
	(Frecent_keys): Ditto.
	* events.c (Fmake_event): Ditto.
	(Fevent_timestamp_lessp): Ditto.
	* font-mgr.c (Ffc_pattern_get): Ditto.
	* indent.c (Fmove_to_column): Ditto.
	* process.c (Fset_process_window_size): Ditto.
	* profile.c (Fstart_profiling): Ditto.
	* unicode.c (Fset_unicode_conversion): Ditto.
	(Funicode_to_char): Ditto.

2013-04-23  Vin Shelton  <acs@xemacs.org>

	* sysdep.c (qxe_getgrgid): Hack in WIN32_NATIVE group support.
	* dired.c (file_attributes): Add a hack for group name in native
	Windows builds.

2013-04-19  Mats Lidell  <matsl@xemacs.org>

	* sysdep.c (qxe_getgrgid): Encapsulation of getgrgid.
	* syspwd.h: Ditto.

	* dired.c (Ffile_attributes): Added optional ID-FORMAT for
	compatibility with GNU.

2013-03-28  Jerry James  <james@xemacs.org>

	* config.h.in: AC_FUNC_FSEEKO is the name of the autoconf macro.
	HAVE_FSEEKO is the name of the C preprocessor symbol.  Do not
	confuse the two.

2013-03-11  Vin Shelton  <acs@xemacs.org>

	* config.h.in: Move large file support outside WIN32_NO_CONFIGURE block.

2013-03-07  Jerry James  <james@xemacs.org>

	* array.c (stack_like_malloc): Define only if WIN32_ANY.
	(stack_like_free): Ditto.
	* array.h: Ditto.

2013-03-04  Jerry James  <james@xemacs.org>

	* config.h.in: Add placeholders and definitions needed for large
	file support.
	* dired.c (Ffile_attributes): Some elements of the stat structure
	can overflow a fixnum.  Allow them to be bignums, if possible.
	* dumper.c (pdump_align_stream): Use OFF_T, FTELL, and FSEEK macros
	to get large file support.
	(pdump): Ditto.

2013-03-02  Jerry James  <james@xemacs.org>

	* Makefile.in.in: If modules are built into the executable, assume
	that module source files are available in the current directory,
	since configure now creates soft links for them.

2013-02-22  Michael Sperber  <mike@xemacs.org>

	* event-stream.c (post_command_hook): Don't complain about throws
	out of `post-command-hook'.  This is quite common, for example to
	exit the minibuffer.

2013-02-04  Vin Shelton  <acs@xemacs.org>

	* syswindows.h: Fix the cygwin build by supporting win32api 3.14
	through appropriate guard macros.  Thanks to Mats Lidell.

2013-01-22  Jerry James  <james@xemacs.org>

	* general-slots.h: Add Q_visible.
	* gui.c (gui_item_add_keyval_pair): Add :visible as an alias to
	:included.
	* menubar.c (vars_of_menubar): Document that :visible is an alias
	to :included.
	* menubar-gtk.c (menu_convert): Ditto.
	* menubar-x.c (menu_item_descriptor_to_widget_value_1): Ditto.

2013-01-16  Jerry James  <james@xemacs.org>

	* menubar-x.c (set_frame_menubar): when a menubar specification has an
	error, don't fail an assert() and bring XEmacs down.  Instead, return
	0 to skip the faulty menu and show any errors in *Warnings*.

2013-01-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.33 "horseradish" is released.

2012-12-24  Stephen J. Turnbull  <stephen@xemacs.org>

	(Fself_insert_command): Oops, Aidan renamed make_int to make_fixnum.
	Adjust my patch to match.  Thank you, Mr. Buildbot (and matsl! :-)

2012-12-24  Stephen J. Turnbull  <stephen@xemacs.org>

	* cmds.c (Fself_insert_command):
	Allow noninteractive call with null argument.

2012-12-24  Stephen J. Turnbull  <stephen@xemacs.org>

	Based on patch by Benson and Steven Mitchell on XEmacs Beta
	<50D16FF7.4090708@bnin.net>.

	* sequence.c (venn): Fix bug in handling null arguments.
	Add null set short circuits, conditional on caller is `subsetp'.

2012-10-18  Stephen J. Turnbull  <stephen@xemacs.org>

	* fontcolor-xlike-inc.c (xft_find_charset_font):
	Improve charset not in table warning message.

2012-11-06  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (define_key_check_and_coerce_keysym):
	When worrying about GNU Emacs-like keysym syntax, if the symbol
	name starts with c-whatever (or s-whatever, or m-whatever), check
	for a function binding for that before erroring. Otherwise command
	remapping and C mode interact badly, since most of the C mode
	commands are regarded as GNU Emacs-style keysyms.

2012-11-06  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (event_binding):
	Do command remapping here for interactive lookups; avoids a
	relatively expensive repeated call to get_relevant_keymaps(), as
	was necessary in 7371081ce8f7 (which changeset has been backed
	out).

2012-10-14  Aidan Kehoe  <kehoea@parhasard.net>

	Respect face and display table information in the minibuffer
	prompt. Thanks for the bug report, Nelson Ferreira!
	* redisplay.c (struct prop_block):
	Add entries representing the minibuffer prompt explicitly to the
	union here.
	* redisplay.c (add_propagation_runes):
	Respect the face and the display table for the minibuffer prompt
	here.
	* redisplay.c (regenerate_window):
	Use the new union members when passing the minibuffer prompt info
	to add_propagation_runes().

2012-09-16  Aidan Kehoe  <kehoea@parhasard.net>

	* editfns.c (Fformat_time_string):
	Accept GNU's UNIVERSAL argument, which means we call gmtime()
	instead of localtime(). Thanks for the report of org-mode
	incompatibility, Matsl!

2012-09-07  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c:
	* file-coding.c (snarf_coding_system):
	Take a new parameter, FIND_CODING_SYSTEM_P, which indicates that
	find_coding_system() should be called.
	* file-coding.c (look_for_coding_system_magic_cookie):
	* file-coding.c (determine_real_coding_system):
	* file-coding.c (undecided_convert):
	Use this parameter.
	* file-coding.c (Ffind_coding_system_magic_cookie_in_file):
	New, moved from files.el, so we can use
	look_for_coding_system_magic_cookie's implementation.
	* file-coding.c (syms_of_file_coding):
	Make Ffind_coding_system_magic_cookie_in_file available.

2012-09-05  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c:
	* keymap.c (Fdefine_key):
	* keymap.c (remap_command):
	* keymap.c (Fremap_command):
	Don't sanity-check commands to be remapped with the (define-key
	KEYMAP [remap COMMAND1] COMMAND2) syntax, for better compatibility
	with GNU Emacs. Thank you Robert Pluim!

2012-09-02  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c (re_search_2):
	* regex.c (re_match_2):
	If the mirror syntax table is dirty, update it before the search,
	preventing a malloc() inside the search code, something which
	isn't allowed. Thank you Henry Thompson!

2012-08-12  Aidan Kehoe  <kehoea@parhasard.net>

	* specifier.c (define_specifier_tag):
	GC protect the list that Fcharset_list () gave back, it's freshly
	consed.
	Clear the alist entries for this tag in CHARSET's tag list if the
	charset_predicate is nil, so re-creating a charset tag works more
	effectively.
	* specifier.c (Fdefine_specifier_tag):
	Device-type-specific tags *are* available, even if that device
	type isn't; see specifier.el.

2012-08-06  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read1):
	* print.c (print_symbol):
	Adopt GNU's ## syntax for the interned symbol with the zero-length
	name.

2012-09-02  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c:
	Add command remapping, a more robust equivalent to
	#'substitute-key-definition.
	* keymap.c (CHECK_REMAPPING_POSITION): New.
	* keymap.c (keymap_equal): Correct a comment here.
	* keymap.c (Fdefine_key): Document the command remapping syntax.
	* keymap.c (Fremap_command): New.
	* keymap.c (command_remapping): New.
	* keymap.c (Fcommand_remapping): New.
	* keymap.c (commands_remapped_to_mapper): New.
	* keymap.c (commands_remapped_to_traverser): New.
	* keymap.c (Fcommands_remapped_to): New.
	* keymap.c (get_relevant_keymaps): Take a new POSITION argument.
	* keymap.c (Fcurrent_keymaps, event_binding):
	Supply the new POSITION argument to get_relevant_keymaps.
	* keymap.c (Fkey_binding):
	Add new arguments, NO-REMAP and POSITION.

	* keymap.c (map_keymap_mapper):
	* keymap.c (Fwhere_is_internal):
	* keymap.c (where_is_to_char):
	* keymap.c (where_is_recursive_mapper):
	Don't expose the key remapping in these functions. This conflicts
	with GNU, but is more sane for our callers. Access to command
	remapping is with the functions #'command-remapping,
	#'commands-remapped-to, and #'remap-command, not with the general
	keymap functions, apart from the compatibility hack in #'define-key.

	* keymap.c (syms_of_keymap):
	* keymap.c (vars_of_keymap):
	* keymap.c (complex_vars_of_keymap):
	* lisp.h: New CHECK_COMMAND macro.

2012-08-02  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.32 "habanero" is released.

2012-05-14  Aidan Kehoe  <kehoea@parhasard.net>

	* minibuf.c (Ftest_completion):
	Correct some documentation here.

2012-05-07  Jeff Sparkes  <jsparkes@gmail.com>

	* search.c (skip_chars): Add cast to Ibyte *.

2012-05-06  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c:
	* eval.c (Fmacroexpand):
	Don't prepend any supplied environment to
	Vbyte_compile_macro_environment, leave that up to our callers
	(that's what the &environment argument is for).
	Document that one should normally access
	byte-compile-macro-environment using the &environment lambda list
	keyword.

2012-05-04  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.c:
	Move various #defines and enums to regex.h, since we need them
	when implementing #'skip-chars-{backward,forward}.
	* regex.c (re_wctype):
	* regex.c (re_iswctype):
	Be more robust about case insensitivity here.
	* regex.c (regex_compile):
	* regex.h:
	* regex.h (RE_ISWCTYPE_ARG_DECL):
	* regex.h (CHAR_CLASS_MAX_LENGTH):
	* search.c (skip_chars):
	Implement support for the predefined character classes in this
	function.

2012-04-25  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (string_match_1): Actually use the POSIX argument here,
	pass it to compile_pattern(). Thank you for the bug report, Ilya
	Shlyakhter!

2012-04-21  Aidan Kehoe  <kehoea@parhasard.net>

	Support non-ASCII correctly in character classes ([:alnum:] and
	friends).

	* regex.c:
	* regex.c (ISBLANK, ISUNIBYTE): New. Make these and friends
	independent of the locale, since we want them to be consistent in
	XEmacs.
	* regex.c (print_partial_compiled_pattern): Print the flags for
	charset_mule; don't print non-ASCII as the character values in
	ranges, this breaks with locales.
	* regex.c (enum):
	Define various flags the charset_mule and charset_mule_not opcodes
	can now take.
	* regex.c (CHAR_CLASS_MAX_LENGTH): Update this.
	* regex.c (re_iswctype, re_wctype): New, from GNU.
	* regex.c (re_wctype_can_match_non_ascii): New; used when deciding
	on whether to use charset_mule or the ASCII-only regex character
	set opcode.
	* regex.c (regex_compile):
	Error correctly on long, non-existent character class names.
	Break out the handling of charsets that can match non-ASCII into a
	separate clause. Use compile_char_class when compiling character
	classes.
	* regex.c (compile_char_class): New. Used in regex_compile when
	compiling character sets that may match non-ASCII.
	* regex.c (re_compile_fastmap):
	If there are flags set for charset_mule or charset_mule_not, we
	can't use the fastmap (since we need to check syntax table values
	that aren't available there).
	* regex.c (re_match_2_internal):
	Check the new flags passed to the charset_mule{,_not} opcode,
	observe them if appropriate.
	* regex.h:
	* regex.h (enum):
	Expose re_wctype_t here, imported from GNU.

2012-04-21  Aidan Kehoe  <kehoea@parhasard.net>

	* regex.h (RE_SYNTAX_EMACS):
	Turn on character classes ([:alnum:] and friends) by default. This
	implementation is incomplete, am working on a version that handles
	non-ASCII characters correctly.

2012-02-12  Vin Shelton  <acs@xemacs.org>

	* sysproc.h: As of Cygwin 1.7.10, /usr/include/process.h has moved
	to /usr/include/cygwin/process.h, so sysproc.h could no longer
	find it.  It wasn't needed anyway, so remove the include under
	cygwin.

2012-04-14  Aidan Kehoe  <kehoea@parhasard.net>

	* number-mp.c (bignum_ceil): Remove a redundant double division
	from this function.

2012-01-08  Aidan Kehoe  <kehoea@parhasard.net>

	* device-x.c:
	* device-x.c (syms_of_device_x):
	Move #'x-keysym-on-keyboard{,-sans-modifiers}-p to Lisp, the hash
	table no longer stores the X keysyms, so we need to manipulate any
	strings we have been handed.
	* event-Xt.c (x_has_keysym):
	Don't call XKeysymToString() here, it leaks; trust
	x_keysym_to_emacs_keysym() instead.
	* event-Xt.c (x_keysym_to_emacs_keysym):
	No longer leak when looking up the strings for keysyms of the form
	UABCD.

2012-01-03  Didier Verna  <didier@xemacs.org>

	* faces.c (complex_vars_of_faces): Add missing foreback specifier
	values to the GUI Element face.

2012-01-01  Aidan Kehoe  <kehoea@parhasard.net>

	Add #'test-completion, API from GNU.
	Accept hash table COLLECTIONs in it and in the other
	completion-oriented functions, #'try-completion,
	#'all-completions, and those Lisp functions implemented in terms
	of them.

	* lisp.h: Update the prototype of map_obarray(), making FN
	compatible with the FUNCTION argument of elisp_maphash();

	* abbrev.c (abbrev_match_mapper):
	* abbrev.c (record_symbol):
	* doc.c (verify_doc_mapper):
	* symbols.c (mapatoms_1):
	* symbols.c (apropos_mapper):
	Update these mapper functions to reflect the new argument to
	map_obarray().

	* symbols.c (map_obarray):
	Call FN with two arguments, the string name of the symbol, and the
	symbol itself, for API (mapper) compatibility with
	elisp_maphash().

	* minibuf.c (map_completion): New. Map a maphash_function_t across
	a non function COLLECTION, as appropriate for #'try-completion and
	friends.
	* minibuf.c (map_completion_list): New. Map a maphash_function_t
	across a pseudo-alist, as appropriate for the completion
	functions.
	* minibuf.c (ignore_completion_p): PRED needs to be called with
	two args if and only if the collection is a hash table. Implement
	this.
	* minibuf.c (try_completion_mapper): New. The loop body of
	#'try-completion, refactored out.
	* minibuf.c (Ftry_completion): Use try_completion_mapper(),
	map_completion().
	* minibuf.c (all_completions_mapper): New. The loop body of
	#'all-completions, refactored out.
	* minibuf.c (Fall_completions): Use all_completions_mapper(),
	map_completion().
	* minibuf.c (test_completion_mapper): New. The loop body of
	#'test-completion.
	* minibuf.c (Ftest_completion): New, API from GNU.
	* minibuf.c (syms_of_minibuf): Make Ftest_completion available.

2011-12-30  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Fmacroexpand):
	Don't cons if ENVIRONMENT is the same object as
	byte-compile-macro-environment.
	Always look up symbol- and other macros in the (possibly modified)
	byte-compile-macro-environment, not the supplied ENVIRONMENT.
	byte-compile-macro-environment reflects ENVIRONMENT, so that's OK
	and preferred.

2011-12-28  Jerry James  <james@xemacs.org>

	* .gdbinit.in.in: fix symbol and string printing with pobj and NEW_GC.

2011-12-28  Jerry James  <james@xemacs.org>

	* lisp-disunion.h (make_fixnum): avoid losing bits off the left end
	if the value is of large magnitude and narrow type.
	(make_char_1): ditto.

2011-12-28  Didier Verna  <didier@xemacs.org>

	* console-impl.h (struct console_methods): Have the text_width
	methods expect a frame instead of a window pointer.
	* console-stream.c (stream_text_width):
	* redisplay-msw.c (mswindows_text_width):
	* redisplay-tty.c (tty_text_width):
	* redisplay-xlike-inc.c (XLIKE_text_width): Update accordingly.
	* redisplay-msw.c (mswindows_output_string):
	* redisplay-xlike-inc.c (XLIKE_output_string):
	* redisplay.c (redisplay_window_text_width_ichar_string):
	* redisplay.c (redisplay_text_width_string): Update the callers.
	This also fixes an uncertainty about always getting a window from
	a domain.

2011-12-28  Didier Verna  <didier@xemacs.org>

	* redisplay-xlike-inc.c (XLIKE_text_width_single_run): Get only
	what's needed as argument: an XLIKE_DISPLAY instead of a frame
	pointer.
	* redisplay-xlike-inc.c (XLIKE_text_width):
	* redisplay-xlike-inc.c (XLIKE_output_string): Update accordingly.
	Use the generic XLIKE_ name instead of the specific x_ one.

2011-12-27  Didier Verna  <didier@xemacs.org>

	* glyphs.c (update_image_instance):
	* glyphs.c (image_instantiate): More comments about the current
	glyphs cache coherency problem.

2011-12-27  Didier Verna  <didier@xemacs.org>

	* faces.c: Add a comment about the way background pixmaps are
	handled right now, just above MAYBE_UNFROB_BACKGROUND_PIXMAP.

2011-12-27  Didier Verna  <didier@xemacs.org>

	* faces.h (struct Lisp_Face): New 'foreback slot.
	* faces.h (struct face_cachel): New 'foreback and
	'foreback_specified slots.
	* faces.h (WINDOW_FACE_CACHEL_FOREBACK):
	* faces.h (FACE_FOREBACK): New macros.
	* faces.c: Declare Qforeback.
	* lisp.h: Externalize it.
	* faces.c (syms_of_faces): Define it.
	* faces.c (vars_of_faces): Update built-in face specifiers.
	* faces.c (complex_vars_of_faces): Update specifier fallbacks.
	* faces.c (mark_face):
	* faces.c (face_equal):
	* faces.c (face_getprop):
	* faces.c (face_putprop):
	* faces.c (face_remprop):
	* faces.c (face_plist):
	* faces.c (reset_face):
	* faces.c (update_face_inheritance_mapper):
	* faces.c (Fmake_face):
	* faces.c (mark_face_cachels):
	* faces.c (update_face_cachel_data):
	* faces.c (merge_face_cachel_data):
	* faces.c (reset_face_cachel):
	* faces.c (face_property_was_changed):
	* faces.c (Fcopy_face):
	* fontcolor.c (face_color_validate): Handle the foreback property.
	* redisplay-msw.c (mswindows_output_blank):
	* redisplay-msw.c (mswindows_output_string):
	* redisplay-output.c (redisplay_clear_region):
	* redisplay-xlike-inc.c (XLIKE_output_string):
	* redisplay-xlike-inc.c (XLIKE_output_blank): Use the face's
	foreback color instead of the foreground one for drawing a
	background bitmap.

2011-12-27  Didier Verna  <didier@xemacs.org>

	* redisplay-xlike-inc.c (XLIKE_output_blank): Fix comment typo.

2011-12-26  Didier Verna  <didier@xemacs.org>

	* lisp.h:
	* faces.c (mark_face):
	* faces.c (face_equal):
	* faces.c (face_getprop):
	* faces.c (face_putprop):
	* faces.c (face_remprop):
	* faces.c (face_plist):
	* faces.c (reset_face):
	* faces.c (update_face_inheritance_mapper):
	* faces.c (Fmake_face):
	* faces.c (update_face_cachel_data):
	* faces.c (merge_face_cachel_data):
	* faces.c (Fcopy_face):
	* faces.c (syms_of_faces):
	* faces.c (vars_of_faces):
	* faces.c (complex_vars_of_faces):
	* faces.h (struct Lisp_Face):
	* faces.h (struct face_cachel):
	* faces.h (WINDOW_FACE_CACHEL_SHRINK_P):
	* faces.h (FACE_SHRINK_P):
	* fontcolor.c (face_boolean_validate): Replace the 'flush property
	with the opposite 'shrink one.
	* redisplay.c (create_text_block):
	* redisplay.c (create_string_text_block): Ditto. Invert the logic
	for storing a new clear_findex in the display lines.

2011-12-23  Didier Verna  <didier@xemacs.org>

	* faces.h (struct Lisp_Face): New 'flush slot.
	* faces.h (struct face_cachel): New 'flush and 'flush_specified
	flags.
	* faces.h (WINDOW_FACE_CACHEL_FLUSH_P):
	* faces.h (FACE_FLUSH_P): New macros.
	* faces.c: Declare Qflush.
	* lisp.h: Externalize it.
	* faces.c (syms_of_faces): Define it.
	* faces.c (vars_of_faces): Update built-in face specifiers.
	* faces.c (complex_vars_of_faces): Update specifier fallbacks.
	* faces.c (mark_face):
	* faces.c (face_equal):
	* faces.c (face_getprop):
	* faces.c (face_putprop):
	* faces.c (face_remprop):
	* faces.c (face_plist):
	* faces.c (reset_face):
	* faces.c (update_face_inheritance_mapper):
	* faces.c (Fmake_face):
	* faces.c (update_face_cachel_data):
	* faces.c (merge_face_cachel_data):
	* faces.c (Fcopy_face):
	* fontcolor.c (face_boolean_validate): Handle the flush property.
	* redisplay.h (struct display_line): Rename 'default_findex slot to
	clearer name 'clear_findex.
	* redisplay.h (DISPLAY_LINE_INIT): Update accordingly.
	* redisplay-output.c (compare_display_blocks):
	* redisplay-output.c (output_display_line):
	* redisplay-output.c (redisplay_output_window):
	* redisplay.c (regenerate_window_extents_only_changed):
	* redisplay.c (regenerate_window_incrementally): Update the
	comparison tests between the current and desired display lines to
	cope for different 'clear_findex values.
	* redisplay.c (create_text_block): Initialize the display line's
	'clear_findex slot to DEFAULT_INDEX. Record a new 'clear_findex
	value when we encounter a newline character displayed in a flushed
	face.
	* redisplay.c (create_string_text_block): Record a new
	'clear_findex value when we encounter a newline character
	displayed in a flushed face.

2011-12-22  Aidan Kehoe  <kehoea@parhasard.net>

	* select-gtk.c (vars_of_select_gtk):
	* select-x.c:
	* select-x.c (x_handle_selection_request):
	* select-x.c (syms_of_select_x):
	* select-x.c (vars_of_select_x):
	* select.c:
	* select.c (handle_selection_clear):
	* select.c (syms_of_select):
	* select.c (vars_of_select):
	Use va_run_hooks_with_args for x-sent-selection-hooks
	and lost-selection-hooks, instead of rolling our own.

2011-12-22  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Fmacroexpand): Rename Fmacroexpand_internal, add the
	functionality that used to be in #'cl-macroexpand--it makes no
	sense for us, and needlessly slows things down, to have two
	separate functions.
	* eval.c:
	* eval.c (syms_of_eval):
	Move byte-compile-macro-environment here, now it's used by
	#'macroexpand.

2011-12-10  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read1): Add the zero, *then* flush, when reading an
	integer into Vread_buffer_stream.

2011-12-04  Aidan Kehoe  <kehoea@parhasard.net>

	* Makefile.in.in (objs):
	* depend:
	Add sequence.o to the list of objects and dependencies.

	* alloc.c:
	* alloc.c (mark_bit_vector):
	* alloc.c (print_bit_vector):
	* alloc.c (bit_vector_equal):
	* alloc.c (internal_bit_vector_equalp_hash):
	* alloc.c (bit_vector_hash):
	* alloc.c (init_alloc_once_early):
	Move the implementation of the bit vector type here from fns.c.

	* emacs.c (main_1):
	Call syms_of_sequence() here, now sequence.c is included.

	* fns.c (Fold_rassq):
	Move this together with the rest of the Fold_* functions.
	* fns.c:
	* fns.c (syms_of_fns):
	Move most functions dealing with sequences generally, and
	especially those taking key arguments, to a separate file,
	sequence.c.

	* general-slots.h:
	Qyes_or_no_p belong here, not fns.c.

	* lisp.h:
	Make Flist_length available here, it's used by sequence.c

	* sequence.c:
	* sequence.c (check_sequence_range):
	* sequence.c (Flength):
	* sequence.c (check_other_nokey):
	* sequence.c (check_other_key):
	* sequence.c (check_if_key):
	* sequence.c (check_match_eq_key):
	* sequence.c (check_match_eql_key):
	* sequence.c (check_match_equal_key):
	* sequence.c (check_match_equalp_key):
	* sequence.c (check_match_other_key):
	* sequence.c (check_lss_key):
	* sequence.c (check_lss_key_car):
	* sequence.c (check_string_lessp_key):
	* sequence.c (check_string_lessp_key_car):
	* sequence.c (get_check_match_function_1):
	* sequence.c (get_merge_predicate):
	* sequence.c (count_with_tail):
	* sequence.c (list_count_from_end):
	* sequence.c (string_count_from_end):
	* sequence.c (Fcount):
	* sequence.c (Fsubseq):
	* sequence.c (list_position_cons_before):
	* sequence.c (FmemberX):
	* sequence.c (Fadjoin):
	* sequence.c (FassocX):
	* sequence.c (FrassocX):
	* sequence.c (position):
	* sequence.c (Fposition):
	* sequence.c (Ffind):
	* sequence.c (delq_no_quit_and_free_cons):
	* sequence.c (FdeleteX):
	* sequence.c (FremoveX):
	* sequence.c (list_delete_duplicates_from_end):
	* sequence.c (Fdelete_duplicates):
	* sequence.c (Fremove_duplicates):
	* sequence.c (Fnreverse):
	* sequence.c (Freverse):
	* sequence.c (list_merge):
	* sequence.c (array_merge):
	* sequence.c (list_array_merge_into_list):
	* sequence.c (list_list_merge_into_array):
	* sequence.c (list_array_merge_into_array):
	* sequence.c (Fmerge):
	* sequence.c (list_sort):
	* sequence.c (array_sort):
	* sequence.c (FsortX):
	* sequence.c (Ffill):
	* sequence.c (mapcarX):
	* sequence.c (shortest_length_among_sequences):
	* sequence.c (Fmapconcat):
	* sequence.c (FmapcarX):
	* sequence.c (Fmapvector):
	* sequence.c (Fmapcan):
	* sequence.c (Fmap):
	* sequence.c (Fmap_into):
	* sequence.c (Fsome):
	* sequence.c (Fevery):
	* sequence.c (Freduce):
	* sequence.c (replace_string_range_1):
	* sequence.c (Freplace):
	* sequence.c (Fnsubstitute):
	* sequence.c (Fsubstitute):
	* sequence.c (subst):
	* sequence.c (sublis):
	* sequence.c (Fsublis):
	* sequence.c (nsublis):
	* sequence.c (Fnsublis):
	* sequence.c (Fsubst):
	* sequence.c (Fnsubst):
	* sequence.c (tree_equal):
	* sequence.c (Ftree_equal):
	* sequence.c (mismatch_from_end):
	* sequence.c (mismatch_list_list):
	* sequence.c (mismatch_list_string):
	* sequence.c (mismatch_list_array):
	* sequence.c (mismatch_string_array):
	* sequence.c (mismatch_string_string):
	* sequence.c (mismatch_array_array):
	* sequence.c (get_mismatch_func):
	* sequence.c (Fmismatch):
	* sequence.c (Fsearch):
	* sequence.c (venn):
	* sequence.c (nvenn):
	* sequence.c (Funion):
	* sequence.c (Fset_exclusive_or):
	* sequence.c (Fnset_exclusive_or):
	* sequence.c (syms_of_sequence):
	Add this file, containing those general functions that dealt with
	sequences that were in fns.c.

	* symsinit.h:
	Make syms_of_sequence() available here.

2011-12-03  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read1):
	Zero-terminate what we're giving to parse_integer(), it needs it
	if it's calling bignum_set_string().

2011-12-03  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read1):
	Don't wrap when reading expressions that use bignums as object
	labels, that can lead to ambiguity and it's not actually that hard
	to use parse_integer() to avoid it.

2011-11-26  Aidan Kehoe  <kehoea@parhasard.net>

	* number-mp.c (bignum_to_string):
	Don't overwrite the accumulator we've just set up for this
	function.

	* number-mp.c (BIGNUM_TO_TYPE):
	mp_itom() doesn't necessarily do what this code used to think with
	negative numbers, it can treat them as unsigned ints. Subtract
	numbers from bignum_zero instead of multiplying them by -1 to
	convert them to their negative equivalents.

	* number-mp.c (bignum_to_int):
	* number-mp.c (bignum_to_uint):
	* number-mp.c (bignum_to_long):
	* number-mp.c (bignum_to_ulong):
	* number-mp.c (bignum_to_double):
	Use the changed BIGNUM_TO_TYPE() in these functions.

	* number-mp.c (bignum_ceil):
	* number-mp.c (bignum_floor):
	In these functions, be more careful about rounding to positive and
	negative infinity, respectively. Don't use the sign of QUOTIENT
	when working out out whether to add or subtract one, rather use
	the sign QUOTIENT would have if arbitrary-precision division were
	done.

	* number-mp.h:
	* number-mp.h (MP_GCD):
	Wrap #include <mp.h> in BEGIN_C_DECLS/END_C_DECLS.

	* number.c (Fbigfloat_get_precision):
	* number.c (Fbigfloat_set_precision):
	Don't attempt to call XBIGFLOAT_GET_PREC if this build doesn't
	support big floats.

2011-11-21  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* .dbxrc.in: Move from etc/.dbxrc.in.

2011-11-21  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* .gdbinit.in.in: There is no lrecord_type_lcrecord_list when
	using the new garbage collector; print $lrecord_type when Lisp
	Object type is unknown to pobj.

2011-11-13  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (Fbuilt_in_symbol_file):
	Don't attempt to take file information from lazy docstring
	information in compiled functions; those functions are not
	built-in, and as such it's appropriate to give nil.
	Fix some indentation in passing.

2011-10-29  Stephen J. Turnbull  <stephen@xemacs.org>

	Prevent SIGPIPEs in deactivate_process().

	* process.c (deactivate_process):
	Use Lstream_close_noflush on output pipe instead of Lstream_close.

	* lstream.c (Lstream_close_noflush):
	New.  Factored out of Lstream_close.
	(Lstream_close): Use Lstream_close_noflush.

	* lstream.h (Lstream_close_noflush): Declare it.

2011-10-29  Stephen J. Turnbull  <stephen@xemacs.org>

	Prevent assert at frame.c, l. 6311 by initializing glyph cachels.

	* frame.c (Fmake_frame): Ensure that reset_glyph_cachels gets called.
	(setup_minibuffer_frame): Improve header comment.

	* redisplay.c (redisplay_window): Update comment.
	Remove code checking for uninitialized face_cachels and glyph_cachels.
	Can't happen in theory, and guarded by asserts in practice.

	* window.c (allocate_window): Update comment on reset_*_cachels.

2011-10-09  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (remassoc_no_quit):
	* fns.c (remrassq_no_quit):
	* fns.c (syms_of_fns):
	* fontcolor-tty.c (Fregister_tty_color):
	* fontcolor-tty.c (Funregister_tty_color):
	* fontcolor-tty.c (Ffind_tty_color):
	* lisp.h:
	Remove Fremassq, Fremrassq, Fremassoc, Fremrassoc, they're
	XEmacs-specific functions and Lisp callers should use (delete*
	... :key #'car) anyway. Keep the non-Lisp-visible _no_quit
	versions, calling FdeleteX from C with the appropriate arguments
	is ungainly.

2011-11-04  Jeff Sparkes  <jsparkes@gmail.com>

	* console.c (Fsuspend_console): Use FRAME_VISIBLE_P instead of
	f->visible.

	* console-stream.c (stream_init_frame_1): Ditto.

	* device-x.c (x_error_handler): Ditto.

	* frame.c (delete_frame_internal): Ditto.
	(Fframe_visible_p): Ditto.
	(Fframe_totally_visible_p): Ditto.
	(Fframe_iconified_p): Ditto.

	* frame-msw.c (mswindows_make_frame_visible): Ditto.
	(mswindows_make_frame_invisible): Ditto.
	(mswindows_iconify_frame): Ditto.

	* frame-tty.c (tty_make_frame_visible): Ditto.
	(tty_make_frame_invisible): Ditto.
	(tty_make_frame_hidden): Ditto.
	(tty_make_frame_unhidden): Ditto.

	* frame-x.c (x_frame_visible_p): Ditto.
	(x_focus_on_frame): Ditto.
	(x_popup_frame): Ditto.
	(x_init_frame_1): Ditto.

2011-10-09  Aidan Kehoe  <kehoea@parhasard.net>

	Do a couple of non-mechanical things that would otherwise have
	been included in the last change.
	* data.c:
	* data.c (Ftype_of):
	Return Qfixnum for fixnums, not Qinteger.
	* lisp.h (MOST_POSITIVE_FIXNUM):
	Delete an obsolete comment here.

2011-10-09  Aidan Kehoe  <kehoea@parhasard.net>

	* EmacsFrame.c (EmacsFrameSetValues):
	* README:
	* abbrev.c (Fexpand_abbrev):
	* abbrev.c (write_abbrev):
	* abbrev.c (describe_abbrev):
	* alloc.c (Fmake_list):
	* alloc.c (Fmake_vector):
	* alloc.c (Fmake_bit_vector):
	* alloc.c (Fmake_byte_code):
	* alloc.c (string_plist_ptr):
	* alloc.c (Fmake_string):
	* alloc.c (gc_plist_hack):
	* alloc.c (garbage_collection_statistics):
	* alloc.c (Fobject_memory_usage):
	* alloc.c (Ftotal_object_memory_usage):
	* alloc.c (Fconsing_since_gc):
	* alloc.c (Fmemory_limit):
	* alloc.c (Ftotal_memory_usage):
	* alloc.c (common_init_alloc_early):
	* buffer.c (finish_init_buffer):
	* buffer.c (MARKED_SLOT):
	* buffer.c (Fbuffer_modified_tick):
	* buffer.c (set_buffer_internal):
	* buffer.c (ADD_INT):
	* buffer.c (Fstring_char_byte_converion_info):
	* buffer.c (common_init_complex_vars_of_buffer):
	* buffer.c (complex_vars_of_buffer):
	* buffer.h:
	* buffer.h (make_charbpos):
	* bytecode.c:
	* bytecode.c (meter_code):
	* bytecode.c (bytecode_negate):
	* bytecode.c (bytecode_arithcompare):
	* bytecode.c (bytecode_arithop):
	* bytecode.c (UNUSED):
	* bytecode.c (check_opcode):
	* bytecode.c (optimize_compiled_function):
	* bytecode.c (set_compiled_function_documentation):
	* bytecode.c (Fcompiled_function_stack_depth):
	* bytecode.c (Fbyte_code):
	* callint.c (Fcall_interactively):
	* callint.c (Fprefix_numeric_value):
	* callint.c (syms_of_callint):
	* casefiddle.c (casify_word):
	* chartab.c (nsubst_structures_mapper):
	* chartab.c (decode_char_table_range):
	* chartab.c (encode_char_table_range):
	* chartab.c (Fmake_char_table):
	* chartab.c (Fcopy_char_table):
	* chartab.c (check_valid_char_table_value):
	* chartab.c (Fcheck_category_at):
	* chartab.c (Fset_category_table):
	* chartab.c (Fcategory_designator_p):
	* cmdloop.c (top_level_1):
	* cmdloop.c (initial_command_loop):
	* cmdloop.c (initial_error_handler):
	* cmdloop.c (Fcommand_loop_1):
	* cmds.c (Fforward_char):
	* cmds.c (Fbackward_char):
	* cmds.c (Fforward_line):
	* cmds.c (Fpoint_at_bol):
	* cmds.c (Fbeginning_of_line):
	* cmds.c (Fpoint_at_eol):
	* cmds.c (Fend_of_line):
	* cmds.c (Fdelete_char):
	* cmds.c (Fdelete_backward_char):
	* cmds.c (Fself_insert_command):
	* cmds.c (internal_self_insert):
	* console-gtk.c (gtk_perhaps_init_unseen_key_defaults):
	* console-msw.c (Fmswindows_message_box):
	* console-tty.c (tty_init_console):
	* console-x.c (x_canonicalize_console_connection):
	* console.c (delete_console_internal):
	* console.c (Fsuspend_console):
	* console.c (common_init_complex_vars_of_console):
	* console.c (MARKED_SLOT):
	* data.c (eq_with_ebola_notice):
	* data.c (Fsubr_min_args):
	* data.c (Fsubr_max_args):
	* data.c (Fchar_to_int):
	* data.c (Fint_to_char):
	* data.c (Ffixnump):
	* data.c (Faref):
	* data.c (Faset):
	* data.c (number_char_or_marker_to_int_or_double):
	* data.c (number_char_or_marker_to_double):
	* data.c (fixnum_char_or_marker_to_int):
	* data.c (ARITHCOMPARE_MANY):
	* data.c (Fneq):
	* data.c (Fzerop):
	* data.c (word_to_lisp):
	* data.c (lisp_to_word):
	* data.c (Fnumber_to_string):
	* data.c (Fstring_to_number):
	* data.c (Fplus):
	* data.c (Fminus):
	* data.c (Ftimes):
	* data.c (Fdiv):
	* data.c (Fquo):
	* data.c (Fmax):
	* data.c (Fmin):
	* data.c (Flogand):
	* data.c (Flogior):
	* data.c (Flogxor):
	* data.c (Flognot):
	* data.c (Frem):
	* data.c (Fmod):
	* data.c (Fash):
	* data.c (Flsh):
	* data.c (Fadd1):
	* data.c (Fsub1):
	* data.c (vars_of_data):
	* database.c (Fopen_database):
	* debug.c (FROB):
	* debug.c (Fset_debug_class_types_to_check):
	* device-gtk.c (Fgtk_display_visual_depth):
	* device-gtk.c (gtk_device_system_metrics):
	* device-msw.c (build_sysmetrics_cons):
	* device-msw.c (build_devicecaps_cons):
	* device-msw.c (mswindows_device_system_metrics):
	* device-msw.c (FROB):
	* device-msw.c (msprinter_device_system_metrics):
	* device-msw.c (print_dialog_worker):
	* device-msw.c (plist_get_margin):
	* device-msw.c (plist_set_margin):
	* device-msw.c (signal_enum_printer_error):
	* device-msw.c (Fmswindows_printer_list):
	* device-tty.c (tty_device_system_metrics):
	* device-x.c (Fx_get_resource):
	* device-x.c (Fx_display_visual_depth):
	* device-x.c (x_device_system_metrics):
	* device-x.c (Fx_server_version):
	* device-x.c (Fx_valid_keysym_name_p):
	* device.c (delete_device_internal):
	* device.c (Fset_device_baud_rate):
	* device.c (Fdevice_baud_rate):
	* device.c (Fdevice_printer_p):
	* dialog-msw.c (handle_directory_dialog_box):
	* dialog-msw.c (handle_file_dialog_box):
	* dialog-x.c (dbox_selection_callback):
	* dialog-x.c (x_make_dialog_box_internal):
	* dialog-x.c (syms_of_dialog_x):
	* dired.c:
	* dired.c (file_name_completion):
	* dired.c (user_name_completion):
	* dired.c (Ffile_attributes):
	* doc.c (extract_object_file_name):
	* doc.c (unparesseuxify_doc_string):
	* doc.c (get_doc_string):
	* doc.c (get_object_file_name):
	* doc.c (Fbuilt_in_symbol_file):
	* doc.c (Fdocumentation):
	* doc.c (Fdocumentation_property):
	* doc.c (Fsnarf_documentation):
	* doc.c (verify_doc_mapper):
	* doprnt.c (get_doprnt_args):
	* doprnt.c (emacs_doprnt_1):
	* editfns.c (buildmark):
	* editfns.c (Fpoint):
	* editfns.c (Fgoto_char):
	* editfns.c (region_limit):
	* editfns.c (save_excursion_save):
	* editfns.c (Fbuffer_size):
	* editfns.c (Fpoint_min):
	* editfns.c (Fpoint_max):
	* editfns.c (Fuser_login_name):
	* editfns.c (Fuser_uid):
	* editfns.c (Fuser_real_uid):
	* editfns.c (Femacs_pid):
	* editfns.c (Fcurrent_time):
	* editfns.c (lisp_to_time):
	* editfns.c (time_to_lisp):
	* editfns.c (Fdecode_time):
	* editfns.c (make_time):
	* editfns.c (Fencode_time):
	* editfns.c (Fcurrent_time_zone):
	* editfns.c (Finsert_char):
	* editfns.c (Fcompare_buffer_substrings):
	* editfns.c (Ftranslate_region):
	* editfns.c (save_restriction_save):
	* elhash.c (lisp_object_general_hash):
	* elhash.c (hash_table_size_validate):
	* elhash.c (decode_hash_table_size):
	* elhash.c (inchash_eq):
	* elhash.c (Fhash_table_count):
	* elhash.c (Fhash_table_size):
	* elhash.c (internal_hash):
	* elhash.c (Fdefine_hash_table_test):
	* elhash.c (vars_of_elhash):
	* emacs.c (make_argc_argv):
	* emacs.c (main_1):
	* emacs.c (Fkill_emacs):
	* emacs.c (vars_of_emacs):
	* emodules.c (Fload_module):
	* emodules.c (module_load_unwind):
	* eval.c:
	* eval.c (Fsetq):
	* eval.c (Fquote):
	* eval.c (Ffunction):
	* eval.c (Fdefmacro):
	* eval.c (Fmacroexpand_internal):
	* eval.c (Fthrow):
	* eval.c (Fcall_with_condition_handler):
	* eval.c (signal_wrong_number_of_arguments_error):
	* eval.c (funcall_compiled_function):
	* eval.c (function_argcount):
	* eval.c (multiple_value_aset):
	* eval.c (multiple_value_aref):
	* eval.c (bind_multiple_value_limits):
	* eval.c (multiple_value_call):
	* eval.c (Fmultiple_value_call):
	* eval.c (multiple_value_list_internal):
	* eval.c (Fbacktrace_debug):
	* eval.c (Fbacktrace):
	* eval.c (Fbacktrace_frame):
	* event-Xt.c (x_handle_sticky_modifiers):
	* event-msw.c (dde_eval_string):
	* event-stream.c (maybe_echo_keys):
	* event-stream.c (lisp_number_to_milliseconds):
	* event-stream.c (Fadd_timeout):
	* event-stream.c (Fdisable_timeout):
	* event-stream.c (Fadd_async_timeout):
	* event-stream.c (Fdisable_async_timeout):
	* event-stream.c (detect_input_pending):
	* event-stream.c (Fnext_event):
	* event-stream.c (Faccept_process_output):
	* event-stream.c (Fsleep_for):
	* event-stream.c (Fsit_for):
	* event-stream.c (Frecent_keys):
	* event-stream.c (Frecent_keys_ring_size):
	* event-stream.c (Fset_recent_keys_ring_size):
	* event-stream.c (Fdispatch_event):
	* event-stream.c (Fcurrent_event_timestamp):
	* event-stream.c (vars_of_event_stream):
	* event-xlike-inc.c (USE_UNICODE_MAP):
	* event-xlike-inc.c (endif):
	* events.c (print_event):
	* events.c (Fmake_event):
	* events.c (nth_of_key_sequence_as_event):
	* events.c (key_sequence_to_event_chain):
	* events.c (Fevent_timestamp):
	* events.c (TIMESTAMP_HALFSPACE):
	* events.c (Fevent_timestamp_lessp):
	* events.c (Fevent_button):
	* events.c (Fevent_modifier_bits):
	* events.c (Fevent_modifiers):
	* events.c (Fevent_window_x_pixel):
	* events.c (Fevent_window_y_pixel):
	* events.c (Fevent_x_pixel):
	* events.c (Fevent_y_pixel):
	* events.c (Fevent_point):
	* events.c (Fevent_closest_point):
	* events.c (Fevent_x):
	* events.c (Fevent_y):
	* events.c (Fevent_modeline_position):
	* events.c (Fevent_glyph_x_pixel):
	* events.c (Fevent_glyph_y_pixel):
	* events.c (Fevent_properties):
	* extents.c:
	* extents.c (print_extent_1):
	* extents.c (extent_endpoint_external):
	* extents.c (Fextent_length):
	* extents.c (Fnext_extent_change):
	* extents.c (Fprevious_extent_change):
	* extents.c (report_extent_modification_mapper):
	* extents.c (memoize_extent_face_internal):
	* extents.c (Fset_extent_priority):
	* extents.c (Fextent_priority):
	* extents.c (Fextent_property):
	* extents.c (extent_properties):
	* extents.c (run_extent_copy_paste_internal):
	* extents.c (next_previous_single_property_change_fn):
	* file-coding.c (default_query_method):
	* file-coding.c (encode_decode_coding_region):
	* file-coding.c (gzip_print):
	* file-coding.c (gzip_putprop):
	* file-coding.c (gzip_getprop):
	* fileio.c (close_file_unwind):
	* fileio.c (Ffile_modes):
	* fileio.c (Fset_file_modes):
	* fileio.c (Fset_default_file_modes):
	* fileio.c (Fdefault_file_modes):
	* fileio.c (build_annotations):
	* fileio.c (a_write):
	* fileio.c (auto_save_error):
	* fileio.c (do_auto_save_unwind):
	* fileio.c (Fdo_auto_save):
	* fileio.c (Fset_buffer_auto_saved):
	* floatfns.c:
	* floatfns.c (extract_float):
	* floatfns.c (Fexpt):
	* floatfns.c (Fabs):
	* floatfns.c (Ffloat):
	* floatfns.c (Flogb):
	* floatfns.c (CONVERT_WITHOUT_NUMBER_TYPES):
	* floatfns.c (MAYBE_CHAR_OR_MARKER):
	* floatfns.c (ceiling_two_fixnum):
	* floatfns.c (ceiling_two_bigfloat):
	* floatfns.c (ceiling_one_bigfloat):
	* floatfns.c (ceiling_one_mundane_arg):
	* floatfns.c (floor_two_fixnum):
	* floatfns.c (floor_two_bigfloat):
	* floatfns.c (floor_one_bigfloat):
	* floatfns.c (round_two_fixnum):
	* floatfns.c (round_two_bigfloat):
	* floatfns.c (round_one_bigfloat):
	* floatfns.c (truncate_two_fixnum):
	* floatfns.c (truncate_two_bigfloat):
	* floatfns.c (truncate_one_bigfloat):
	* floatfns.c (truncate_one_float):
	* fns.c (print_bit_vector):
	* fns.c (get_check_match_function_1):
	* fns.c (Frandom):
	* fns.c (Flength):
	* fns.c (Fsafe_length):
	* fns.c (Flist_length):
	* fns.c (count_with_tail):
	* fns.c (list_count_from_end):
	* fns.c (string_count_from_end):
	* fns.c (Fcompare_strings):
	* fns.c (Fstring_modified_tick):
	* fns.c (bump_string_modiff):
	* fns.c (concat):
	* fns.c (Fsubseq):
	* fns.c (Fnthcdr):
	* fns.c (Felt):
	* fns.c (Flast):
	* fns.c (Fnbutlast):
	* fns.c (Fbutlast):
	* fns.c (list_position_cons_before):
	* fns.c (position):
	* fns.c (FdeleteX):
	* fns.c (FremoveX):
	* fns.c (list_delete_duplicates_from_end):
	* fns.c (Fdelete_duplicates):
	* fns.c (Fremove_duplicates):
	* fns.c (BIT_VECTOR_TO_OBJECT_ARRAY):
	* fns.c (Fmerge):
	* fns.c (list_sort):
	* fns.c (FsortX):
	* fns.c (plists_differ):
	* fns.c (tweaked_internal_equal):
	* fns.c (internal_equal_trapping_problems):
	* fns.c (internal_equalp):
	* fns.c (Ffill):
	* fns.c (mapcarX):
	* fns.c (shortest_length_among_sequences):
	* fns.c (Fmapconcat):
	* fns.c (Freduce):
	* fns.c (replace_string_range_1):
	* fns.c (Freplace):
	* fns.c (Fnsubstitute):
	* fns.c (Fsubstitute):
	* fns.c (mismatch_from_end):
	* fns.c (mismatch_list_list):
	* fns.c (mismatch_list_string):
	* fns.c (mismatch_list_array):
	* fns.c (mismatch_string_array):
	* fns.c (mismatch_string_string):
	* fns.c (mismatch_array_array):
	* fns.c (Fsearch):
	* fns.c (Fload_average):
	* fns.c (Ffeaturep):
	* fns.c (base64_decode_1):
	* fns.c (Fbase64_encode_region):
	* fns.c (Fbase64_decode_region):
	* fns.c (Fbase64_decode_string):
	* font-lock.c (end_of_defun):
	* font-lock.c (Fsyntactically_sectionize):
	* font-mgr.c (Ffc_pattern_add):
	* font-mgr.c (Ffc_pattern_get):
	* font-mgr.c (Ffc_config_get_rescan_interval):
	* font-mgr.c (Ffc_config_set_rescan_interval):
	* font-mgr.c (Ffc_get_version):
	* font-mgr.c (Ffc_init_reinitialize):
	* fontcolor-gtk.c (gtk_color_instance_rgb_components):
	* fontcolor-gtk.c (gtk_valid_color_name_p):
	* fontcolor-msw.c (mswindows_color_instance_rgb_components):
	* fontcolor-msw.c (mswindows_valid_color_name_p):
	* fontcolor-x.c (x_color_instance_rgb_components):
	* fontcolor-x.c (x_font_instance_properties):
	* fontcolor-x.c (x_font_list):
	* fontcolor.c (Ffont_instance_ascent):
	* fontcolor.c (Ffont_instance_descent):
	* fontcolor.c (Ffont_instance_width):
	* fontcolor.c (Ffont_instance_proportional_p):
	* frame-gtk.c (gtk_frame_property):
	* frame-gtk.c (gtk_frame_properties):
	* frame-gtk.c (gtk_set_frame_properties):
	* frame-impl.h (FRAME_SCROLLBAR_WIDTH):
	* frame-impl.h (FRAME_RAW_THEORETICAL_TOOLBAR_SIZE):
	* frame-impl.h (FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH):
	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_frame_property):
	* frame-msw.c (mswindows_frame_properties):
	* frame-msw.c (mswindows_set_frame_properties):
	* frame-msw.c (msprinter_frame_property):
	* frame-msw.c (msprinter_frame_properties):
	* frame-msw.c (msprinter_set_frame_properties):
	* frame-tty.c:
	* frame-tty.c (tty_frame_property):
	* frame-tty.c (tty_frame_properties):
	* frame-x.c (x_frame_property):
	* frame-x.c (x_frame_properties):
	* frame-x.c (x_set_frame_properties):
	* frame.c (Fmake_frame):
	* frame.c (delete_frame_internal):
	* frame.c (Fmouse_pixel_position):
	* frame.c (Fmouse_position):
	* frame.c (Fset_mouse_position):
	* frame.c (Fset_mouse_pixel_position):
	* frame.c (Fprint_job_page_number):
	* frame.c (Fframe_modified_tick):
	* frame.c (Fframe_property):
	* frame.c (Fframe_properties):
	* frame.c (Fframe_pixel_height):
	* frame.c (Fframe_displayable_pixel_height):
	* frame.c (Fframe_pixel_width):
	* frame.c (Fframe_displayable_pixel_width):
	* frame.c (Fset_frame_height):
	* frame.c (Fset_frame_pixel_height):
	* frame.c (Fset_frame_displayable_pixel_height):
	* frame.c (Fset_frame_width):
	* frame.c (Fset_frame_pixel_width):
	* frame.c (Fset_frame_displayable_pixel_width):
	* frame.c (Fset_frame_size):
	* frame.c (Fset_frame_pixel_size):
	* frame.c (Fset_frame_displayable_pixel_size):
	* frame.c (Fset_frame_position):
	* frame.c (adjust_frame_size):
	* free-hook.c (Freally_free):
	* free-hook.c (really_free_one_entry):
	* glyphs-eimage.c (gif_instantiate):
	* glyphs-eimage.c (GETCOLOR):
	* glyphs-gtk.c (image_instance_convert_to_pointer):
	* glyphs-gtk.c (init_image_instance_from_xbm_inline):
	* glyphs-gtk.c (xbm_instantiate_1):
	* glyphs-gtk.c (gtk_xbm_instantiate):
	* glyphs-gtk.c (gtk_xpm_instantiate):
	* glyphs-gtk.c (check_valid_string_or_int):
	* glyphs-gtk.c (autodetect_normalize):
	* glyphs-gtk.c (gtk_progress_gauge_redisplay):
	* glyphs-gtk.c (gtk_register_gui_item):
	* glyphs-gtk.c (gtk_tab_control_callback):
	* glyphs-gtk.c (BUILD_GLYPH_INST):
	* glyphs-msw.c (init_image_instance_from_dibitmap):
	* glyphs-msw.c (mswindows_initialize_image_instance_icon):
	* glyphs-msw.c (xpm_to_eimage):
	* glyphs-msw.c (resource_name_to_resource):
	* glyphs-msw.c (mswindows_resource_instantiate):
	* glyphs-msw.c (init_image_instance_from_xbm_inline):
	* glyphs-msw.c (xbm_instantiate_1):
	* glyphs-msw.c (mswindows_xbm_instantiate):
	* glyphs-msw.c (mswindows_register_gui_item):
	* glyphs-msw.c (mswindows_subwindow_instantiate):
	* glyphs-msw.c (mswindows_widget_instantiate):
	* glyphs-msw.c (mswindows_progress_gauge_instantiate):
	* glyphs-msw.c (mswindows_progress_gauge_redisplay):
	* glyphs-msw.c (mswindows_control_wnd_proc):
	* glyphs-widget.c:
	* glyphs-widget.c (check_valid_int_or_function):
	* glyphs-widget.c (widget_query_geometry):
	* glyphs-widget.c (widget_instantiate):
	* glyphs-widget.c (layout_update):
	* glyphs-widget.c (layout_query_geometry):
	* glyphs-widget.c (layout_layout):
	* glyphs-widget.c (layout_property):
	* glyphs-widget.c (Fwidget_logical_to_character_width):
	* glyphs-widget.c (Fwidget_logical_to_character_height):
	* glyphs-x.c (image_instance_convert_to_pointer):
	* glyphs-x.c (init_image_instance_from_xbm_inline):
	* glyphs-x.c (xbm_instantiate_1):
	* glyphs-x.c (x_xbm_instantiate):
	* glyphs-x.c (x_xpm_instantiate):
	* glyphs-x.c (autodetect_normalize):
	* glyphs-x.c (x_progress_gauge_redisplay):
	* glyphs-x.c (BUILD_GLYPH_INST):
	* glyphs.c:
	* glyphs.c (process_image_string_instantiator):
	* glyphs.c (check_valid_int):
	* glyphs.c (alist_to_tagged_vector):
	* glyphs.c (normalize_image_instantiator):
	* glyphs.c (print_image_instance):
	* glyphs.c (make_image_instance_1):
	* glyphs.c (Fimage_instance_depth):
	* glyphs.c (Fimage_instance_height):
	* glyphs.c (Fimage_instance_width):
	* glyphs.c (bitmap_to_lisp_data):
	* glyphs.c (xbm_normalize):
	* glyphs.c (pixmap_to_lisp_data):
	* glyphs.c (image_instantiate):
	* glyphs.c (image_going_to_add):
	* glyphs.c (Fglyph_width):
	* glyphs.c (Fglyph_ascent):
	* glyphs.c (Fglyph_descent):
	* glyphs.c (Fglyph_height):
	* glyphs.c (glyph_baseline):
	* glyphs.c (subwindow_instantiate):
	* glyphs.c (Fimage_instance_subwindow_id):
	* glyphs.c (Fresize_subwindow):
	* glyphs.c (disable_glyph_animated_timeout):
	* gpmevent.c (Fgpm_enable):
	* gtk-glue.c (xemacs_list_to_array):
	* gtk-xemacs.c (FROB_FACE):
	* gtk-xemacs.c (smash_scrollbar_specifiers):
	* gtk-xemacs.c (smash_toolbar_specifiers):
	* gui-gtk.c (gcpro_popup_callbacks):
	* gui-gtk.c (ungcpro_popup_callbacks):
	* gui-gtk.c (get_gcpro_popup_callbacks):
	* gui-msw.c (mswindows_handle_gui_wm_command):
	* gui-x.c:
	* gui-x.c (gcpro_popup_callbacks):
	* gui-x.c (ungcpro_popup_callbacks):
	* gui-x.c (popup_handled_p):
	* gui.c (gui_item_id_hash):
	* gutter.c (calculate_gutter_size):
	* gutter.c (Fgutter_pixel_width):
	* gutter.c (Fgutter_pixel_height):
	* gutter.c (gutter_specs_changed_1):
	* gutter.c (gutter_specs_changed):
	* gutter.c (gutter_size_validate):
	* gutter.c (specifier_vars_of_gutter):
	* gutter.h (WINDOW_GUTTER_BORDER_WIDTH):
	* indent.c (last_visible_position):
	* indent.c (column_at_point):
	* indent.c (Fcurrent_column):
	* indent.c (Findent_to):
	* indent.c (byte_spaces_at_point):
	* indent.c (Fcurrent_indentation):
	* indent.c (Fmove_to_column):
	* indent.c (Fcompute_motion):
	* indent.c (vertical_motion_1):
	* indent.c (Fvertical_motion_pixels):
	* indent.c (syms_of_indent):
	* insdel.c (make_gap):
	* insdel.c (signal_before_change):
	* insdel.c (signal_after_change):
	* insdel.c (buffer_insert_string_1):
	* intl-win32.c:
	* intl-win32.c (mswindows_get_code_page_charset):
	* intl-win32.c (Fmswindows_get_locale_info):
	* intl-win32.c (enum_code_page_fn):
	* intl-win32.c (Fmswindows_get_console_code_page):
	* intl-win32.c (Fmswindows_set_console_code_page):
	* intl-win32.c (Fmswindows_get_console_output_code_page):
	* intl-win32.c (Fmswindows_set_console_output_code_page):
	* intl-win32.c (Fmswindows_get_code_page_charset):
	* intl-win32.c (Fmswindows_get_valid_keyboard_layouts):
	* intl-win32.c (Fmswindows_get_keyboard_layout):
	* intl-win32.c (Fmswindows_set_keyboard_layout):
	* intl-win32.c (mswindows_multibyte_to_unicode_putprop):
	* intl-win32.c (mswindows_multibyte_to_unicode_getprop):
	* intl-win32.c (mswindows_multibyte_to_unicode_print):
	* keymap.c (MAKE_MODIFIER_HASH_KEY):
	* keymap.c (print_keymap):
	* keymap.c (get_keyelt):
	* keymap.c (keymap_fullness):
	* keymap.c (Fkeymap_fullness):
	* keymap.c (event_matches_key_specifier_p):
	* keymap.c (ensure_meta_prefix_char_keymapp):
	* keymap.c (Fdefine_key):
	* keymap.c (raw_lookup_key_mapper):
	* keymap.c (lookup_events):
	* keymap.c (get_relevant_keymaps):
	* keymap.c (Fkey_binding):
	* keymap.c (map_keymap_sorted):
	* keymap.c (Faccessible_keymaps):
	* keymap.c (Fkey_description):
	* keymap.c (Fwhere_is_internal):
	* keymap.c (where_is_recursive_mapper):
	* keymap.c (describe_map_tree):
	* keymap.c (describe_command):
	* keymap.c (describe_map_mapper):
	* keymap.c (describe_map_sort_predicate):
	* keymap.c (describe_map):
	* line-number.c (narrow_line_number_cache):
	* line-number.c (get_nearest_line_number):
	* line-number.c (add_position_to_cache):
	* line-number.c (buffer_line_number):
	* lisp-disunion.h:
	* lisp-disunion.h (Lisp_Type_Fixnum_Bit):
	* lisp-disunion.h (make_fixnum):
	* lisp-disunion.h (FIXNUMP):
	* lisp-disunion.h (Qzero):
	* lisp-union.h:
	* lisp-union.h (union Lisp_Object):
	* lisp-union.h (XREALFIXNUM):
	* lisp-union.h (FIXNUMP):
	* lisp.h:
	* lisp.h (enum Lisp_Type):
	* lisp.h (FIXNUM_GCBITS):
	* lisp.h (HACKEQ_UNSAFE):
	* lisp.h (BITP):
	* lisp.h (XFIXNUM):
	* lisp.h (CHECK_FIXNUM):
	* lisp.h (CONCHECK_FIXNUM):
	* lisp.h (XCHAR_OR_FIXNUM):
	* lisp.h (CHAR_INTP):
	* lisp.h (CHECK_CHAR_COERCE_INT):
	* lisp.h (CHECK_FIXNUM_COERCE_CHAR):
	* lisp.h (CHECK_FIXNUM_COERCE_MARKER):
	* lisp.h (CHECK_FIXNUM_COERCE_CHAR_OR_MARKER):
	* lisp.h (XFLOATFIXNUM):
	* lisp.h (CONCHECK_FIXNUM_OR_FLOAT):
	* lisp.h (FIXNUM_OR_FLOATP):
	* lisp.h (PARSE_KEYWORDS):
	* lisp.h (ARRAY_DIMENSION_LIMIT):
	* lread.c (pas_de_holgazan_ici):
	* lread.c (load_force_doc_string_unwind):
	* lread.c (close_load_descs):
	* lread.c (Fload_internal):
	* lread.c (decode_mode_1):
	* lread.c (Feval_region):
	* lread.c (Fread_from_string):
	* lread.c (read_unicode_escape):
	* lread.c (read_atom):
	* lread.c (parse_integer):
	* lread.c (read_structure):
	* lread.c (read1):
	* lread.c (read_vector):
	* lread.c (read_compiled_function):
	* lstream.c (make_lisp_buffer_stream_1):
	* macros.c (Fstart_kbd_macro):
	* macros.c (Fend_kbd_macro):
	* macros.c (pop_kbd_macro_event):
	* macros.c (Fexecute_kbd_macro):
	* marker.c (Fmarker_position):
	* marker.c (set_marker_internal):
	* marker.c (copy_marker_1):
	* marker.c (init_buffer_markers):
	* marker.c (uninit_buffer_markers):
	* mc-alloc.c (Fmc_alloc_memory_usage):
	* mc-alloc.c (syms_of_mc_alloc):
	* menubar-msw.c (allocate_menu_item_id):
	* menubar-msw.c (populate_menu_add_item):
	* menubar-msw.c (mswindows_handle_wm_command):
	* menubar.c (Fcompare_menu_text):
	* minibuf.c:
	* minibuf.c (Fminibuffer_depth):
	* minibuf.c (read_minibuffer_internal_unwind):
	* minibuf.c (Fminibuffer_prompt_width):
	* mule-ccl.c (CCL_CALL_FOR_MAP_INSTRUCTION):
	* mule-ccl.c (CCL_WRITE_STRING):
	* mule-ccl.c (ccl_driver):
	* mule-ccl.c (resolve_symbol_ccl_program):
	* mule-ccl.c (ccl_get_compiled_code):
	* mule-ccl.c (setup_ccl_program):
	* mule-ccl.c (Fccl_execute):
	* mule-ccl.c (vars_of_mule_ccl):
	* mule-charset.c:
	* mule-charset.c (get_unallocated_leading_byte):
	* mule-charset.c (Fmake_charset):
	* mule-charset.c (Fcharset_from_attributes):
	* mule-charset.c (Fcharset_dimension):
	* mule-charset.c (Fcharset_property):
	* mule-charset.c (Fcharset_id):
	* mule-coding.c (Fdecode_shift_jis_char):
	* mule-coding.c (Fencode_shift_jis_char):
	* mule-coding.c (Fdecode_big5_char):
	* mule-coding.c (Fencode_big5_char):
	* mule-coding.c (charset_by_attributes_or_create_one):
	* mule-coding.c (decode_unicode_char):
	* mule-coding.c (fixed_width_skip_chars_data_given_strings):
	* mule-coding.c (fixed_width_query):
	* mule-wnnfns.c (Fwnn_dict_add):
	* mule-wnnfns.c (Fwnn_dict_delete):
	* mule-wnnfns.c (Fwnn_dict_list):
	* mule-wnnfns.c (Fwnn_dict_comment):
	* mule-wnnfns.c (Fwnn_begin_henkan):
	* mule-wnnfns.c (Fwnn_zenkouho):
	* mule-wnnfns.c (Fwnn_get_zenkouho):
	* mule-wnnfns.c (Fwnn_zenkouho_bun):
	* mule-wnnfns.c (Fwnn_zenkouho_suu):
	* mule-wnnfns.c (Fwnn_dai_top):
	* mule-wnnfns.c (Fwnn_dai_end):
	* mule-wnnfns.c (Fwnn_kakutei):
	* mule-wnnfns.c (Fwnn_bunsetu_henkou):
	* mule-wnnfns.c (Fwnn_inspect):
	* mule-wnnfns.c (Fwnn_bunsetu_kanji):
	* mule-wnnfns.c (Fwnn_bunsetu_yomi):
	* mule-wnnfns.c (Fwnn_bunsetu_suu):
	* mule-wnnfns.c (Fwnn_hindo_update):
	* mule-wnnfns.c (Fwnn_word_toroku):
	* mule-wnnfns.c (Fwnn_word_sakujo):
	* mule-wnnfns.c (Fwnn_word_use):
	* mule-wnnfns.c (Fwnn_word_info):
	* mule-wnnfns.c (Fwnn_hindo_set):
	* mule-wnnfns.c (Fwnn_dict_search):
	* mule-wnnfns.c (Fwnn_get_param):
	* mule-wnnfns.c (Fwnn_set_param):
	* mule-wnnfns.c (Fwnn_get_msg):
	* mule-wnnfns.c (Fwnn_hinsi_dicts):
	* mule-wnnfns.c (Fwnn_hinsi_list):
	* mule-wnnfns.c (Fwnn_notrans_dict_add):
	* mule-wnnfns.c (Fwnn_bmodify_dict_add):
	* mule-wnnfns.c (Fwnn_okuri_flag):
	* mule-wnnfns.c (Fwnn_prefix_flag):
	* mule-wnnfns.c (Fwnn_freq_func):
	* mule-wnnfns.c (Fwnn_numeric):
	* mule-wnnfns.c (Fwnn_alphabet):
	* mule-wnnfns.c (Fwnn_symbol):
	* mule-wnnfns.c (Fwnn_version):
	* mule-wnnfns.c (Fwnn_hinsi_number):
	* mule-wnnfns.c (syms_of_mule_wnn):
	* number.c:
	* number.c (Fdenominator):
	* number.c (Fbigfloat_get_precision):
	* number.c (Fbigfloat_set_precision):
	* number.c (default_float_precision_changed):
	* number.c (Fcanonicalize_number):
	* number.c (get_number_type):
	* number.c (promote_args):
	* number.c (Fcoerce_number):
	* number.c (vars_of_number):
	* number.h (INTEGERP):
	* number.h (make_integer):
	* number.h (NATNUMP):
	* number.h (CHECK_NATNUM):
	* print.c (output_string):
	* print.c (print_vector_internal):
	* print.c (print_cons):
	* print.c (print_string):
	* print.c (print_preprocess_inchash_eq):
	* print.c (print_seen_once):
	* print.c (print_nonsymbol_seen_once):
	* print.c (print_sort_get_numbers):
	* print.c (print_gensym_or_circle):
	* print.c (nsubst_structures_descend):
	* print.c (print_internal):
	* print.c (restore_inhibit_non_essential_conversion_operations):
	* print.c (begin_inhibit_non_essential_conversion_operations):
	* print.c (debug_print_enter):
	* print.c (debug_p4):
	* process-nt.c (validate_signal_number):
	* process-nt.c (nt_send_process):
	* process-nt.c (nt_open_network_stream):
	* process-nt.c (Fmswindows_set_process_priority):
	* process-unix.c:
	* process-unix.c (connect_to_file_descriptor):
	* process-unix.c (get_internet_address):
	* process-unix.c (child_setup):
	* process-unix.c (unix_update_status_if_terminated):
	* process-unix.c (unix_reap_exited_processes):
	* process-unix.c (unix_send_process):
	* process-unix.c (unix_kill_child_process):
	* process-unix.c (unix_open_network_stream):
	* process-unix.c (unix_open_multicast_group):
	* process.c (create_process):
	* process.c (Fstart_process_internal):
	* process.c (Fset_process_window_size):
	* process.c (read_process_output):
	* process.c (status_message):
	* process.c (status_notify):
	* process.c (Fprocess_exit_status):
	* process.c (decode_signal):
	* process.c (Fprocess_send_eof):
	* profile.c:
	* profile.c (profile_sow_backtrace):
	* profile.c (profile_reap_backtrace):
	* profile.c (Fstart_profiling):
	* profile.c (get_profiling_info_timing_maphash):
	* profile.c (Fget_profiling_info):
	* profile.c (set_profiling_info_timing_maphash):
	* ralloc.c:
	* ralloc.c (MLVAL):
	* rangetab.c (Fget_range_table):
	* rangetab.c (Fput_range_table):
	* rangetab.c (Fmap_range_table):
	* rangetab.c (rangetab_data_validate):
	* redisplay-msw.c (mswindows_output_vertical_divider):
	* redisplay-output.c (redisplay_move_cursor):
	* redisplay-output.c (redisplay_output_layout):
	* redisplay-output.c (redisplay_output_window):
	* redisplay-output.c (redisplay_redraw_exposed_area_1):
	* redisplay-output.c (redisplay_redraw_exposed_area):
	* redisplay-output.c (bevel_modeline):
	* redisplay-xlike-inc.c (XLIKE_get_gc):
	* redisplay-xlike-inc.c (XLIKE_output_string):
	* redisplay-xlike-inc.c (XLIKE_output_vertical_divider):
	* redisplay-xlike-inc.c (XLIKE_output_blank):
	* redisplay-xlike-inc.c (XLIKE_output_eol_cursor):
	* redisplay.c (tab_char_width):
	* redisplay.c (add_glyph_rune):
	* redisplay.c (create_text_block):
	* redisplay.c (generate_fstring_runes):
	* redisplay.c (create_string_text_block):
	* redisplay.c (regenerate_window):
	* redisplay.c (regenerate_window_extents_only_changed):
	* redisplay.c (regenerate_window_incrementally):
	* redisplay.c (regenerate_window_point_center):
	* redisplay.c (redisplay_window):
	* redisplay.c (validate_line_start_cache):
	* redisplay.c (update_line_start_cache):
	* scrollbar-gtk.c (scrollbar_cb):
	* scrollbar-msw.c (mswindows_handle_scrollbar_event):
	* scrollbar-x.c (x_update_vertical_scrollbar_callback):
	* scrollbar-x.c (x_update_horizontal_scrollbar_callback):
	* scrollbar.c (scrollbar_reset_cursor):
	* scrollbar.c (Fscrollbar_line_up):
	* scrollbar.c (Fscrollbar_line_down):
	* scrollbar.c (Fscrollbar_page_up):
	* scrollbar.c (Fscrollbar_page_down):
	* scrollbar.c (Fscrollbar_to_bottom):
	* scrollbar.c (Fscrollbar_vertical_drag):
	* scrollbar.c (Fscrollbar_set_hscroll):
	* scrollbar.c (specifier_vars_of_scrollbar):
	* search.c (string_match_1):
	* search.c (skip_chars):
	* search.c (search_command):
	* search.c (Freplace_match):
	* search.c (match_limit):
	* search.c (Fmatch_data):
	* search.c (Fstore_match_data):
	* select-gtk.c (gtk_get_foreign_selection):
	* select-msw.c (x_sym_p):
	* select-msw.c (symbol_to_ms_cf):
	* select-msw.c (ms_cf_to_symbol):
	* select-msw.c (mswindows_own_selection):
	* select-msw.c (mswindows_register_selection_data_type):
	* select-msw.c (mswindows_selection_data_type_name):
	* select-x.c:
	* select-x.c (x_get_foreign_selection):
	* select-x.c (Fx_get_cutbuffer_internal):
	* select-x.c (Fx_rotate_cutbuffers_internal):
	* select-xlike-inc.c (selection_data_to_lisp_data):
	* select-xlike-inc.c (lisp_data_to_selection_data):
	* select.c (Favailable_selection_types):
	* sgiplay.c (close_sound_file):
	* sgiplay.c (play_sound_file):
	* sgiplay.c (restore_audio_port):
	* sgiplay.c (audio_initialize):
	* sgiplay.c (set_channels):
	* sgiplay.c (set_output_format):
	* sound.c (Fplay_sound_file):
	* sound.c (parse_sound_alist_elt):
	* sound.c (Fplay_sound):
	* specifier.c:
	* specifier.c (print_specifier):
	* specifier.c (canonicalize_tag_set):
	* specifier.c (call_charset_predicate):
	* specifier.c (Fdefine_specifier_tag):
	* specifier.c (specifier_instance_1):
	* specifier.c (integer_validate):
	* specifier.h (XFIXNUMEGER_SPECIFIER):
	* symbols.c:
	* symbols.c (Fintern):
	* symbols.c (Fintern_soft):
	* symbols.c (Funintern):
	* symbols.c (oblookup):
	* 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 (Fset):
	* symbols.c (Fsetq_default):
	* symbols.c (symbol_value_buffer_local_info):
	* symbols.c (user_variable_alias_check_fun):
	* symbols.c (Fuser_variable_p):
	* syntax.c (Fsyntax_cache_info):
	* syntax.c (Fset_syntax_table):
	* syntax.c (reset_syntax_cache_range):
	* syntax.c (update_syntax_cache):
	* syntax.c (syntax_match):
	* syntax.c (Fforward_word):
	* syntax.c (Fforward_comment):
	* syntax.c (scan_lists):
	* syntax.c (Fscan_lists):
	* syntax.c (Fscan_sexps):
	* syntax.c (scan_sexps_forward):
	* syntax.c (Fparse_partial_sexp):
	* syntax.c (copy_to_mirrortab):
	* syntax.c (copy_if_not_already_present):
	* syntax.c (update_just_this_syntax_table):
	* syntax.c (define_standard_syntax):
	* syntax.c (SET_RANGE_SYNTAX):
	* syntax.c (complex_vars_of_syntax):
	* syntax.h:
	* sysdep.c:
	* sysdep.c (init_system_name):
	* sysdep.c (get_random):
	* tests.c:
	* tests.c (test_hash_tables_mapper):
	* tests.c (test_hash_tables_modifying_mapper):
	* tests.c (test_hash_tables_predicate):
	* tests.c (Ftest_hash_tables):
	* text.c (get_buffer_pos_char):
	* text.c (get_string_pos_char_1):
	* text.c (non_ascii_valid_ichar_p):
	* text.c (Fmake_char):
	* text.c (Fchar_octet):
	* text.c (Fsplit_char):
	* toolbar-msw.c (allocate_toolbar_item_id):
	* toolbar-msw.c (mswindows_clear_toolbar):
	* toolbar-msw.c (mswindows_output_toolbar):
	* toolbar-msw.c (mswindows_get_toolbar_button_text):
	* toolbar-msw.c (mswindows_handle_toolbar_wm_command):
	* toolbar-xlike.c (__prepare_button_area):
	* toolbar-xlike.c (xlike_get_button_size):
	* toolbar.c (Fcheck_toolbar_button_syntax):
	* toolbar.c (specifier_vars_of_toolbar):
	* tooltalk.c (tooltalk_constant_value):
	* tooltalk.c (Fadd_tooltalk_message_arg):
	* tooltalk.c (Fadd_tooltalk_pattern_arg):
	* tooltalk.c (init_tooltalk):
	* tooltalk.c (MAKE_CONSTANT):
	* tooltalk.c (vars_of_tooltalk):
	* tooltalk.h (CHECK_TOOLTALK_CONSTANT):
	* tooltalk.h (VALID_TOOLTALK_MESSAGEP):
	* ui-byhand.c (Fgtk_box_query_child_packing):
	* ui-byhand.c (Fgtk_button_box_get_child_size):
	* ui-byhand.c (Fgtk_calendar_get_date):
	* ui-byhand.c (Fgtk_clist_get_text):
	* ui-byhand.c (Fgtk_clist_get_selection):
	* ui-byhand.c (Fgtk_clist_get_pixmap):
	* ui-byhand.c (Fgtk_clist_get_pixtext):
	* ui-byhand.c (Fgtk_editable_insert_text):
	* ui-byhand.c (Fgtk_curve_get_vector):
	* ui-byhand.c (Fgtk_notebook_query_tab_label_packing):
	* ui-byhand.c (Fgtk_widget_get_pointer):
	* ui-byhand.c (generic_toolbar_insert_item):
	* ui-byhand.c (Fgtk_toolbar_insert_item):
	* ui-byhand.c (Fgtk_ctree_recurse):
	* ui-gtk.c:
	* ui-gtk.c (import_gtk_enumeration_internal):
	* ui-gtk.c (Fgtk_call_function):
	* ui-gtk.c (__internal_callback_destroy):
	* ui-gtk.c (Fgtk_signal_connect):
	* ui-gtk.c (Fgtk_fundamental_type):
	* ui-gtk.c (Fgtk_object_type):
	* ui-gtk.c (Fgtk_describe_type):
	* ui-gtk.c (gtk_type_to_lisp):
	* ui-gtk.c (lisp_to_gtk_type):
	* ui-gtk.c (lisp_to_gtk_ret_type):
	* ui-gtk.c (get_enumeration):
	* ui-gtk.c (symbol_to_enum):
	* ui-gtk.c (flags_to_list):
	* ui-gtk.c (enum_to_symbol):
	* undo.c (undo_prelude):
	* undo.c (record_insert):
	* undo.c (record_delete):
	* undo.c (record_property_change):
	* undo.c (Fprimitive_undo):
	* unicode.c (unicode_to_ichar):
	* unicode.c (Fchar_to_unicode):
	* unicode.c (Funicode_to_char):
	* unicode.c (add_lisp_string_to_skip_chars_range):
	* unicode.c (unicode_query):
	* unicode.c (vars_of_unicode):
	* win32.c (Fmswindows_shell_execute):
	* window-impl.h (MODELINE_OFF_SHADOW_THICKNESS_ADJUSTED):
	* window-impl.h (MODELINE_SHADOW_THICKNESS):
	* window.c (window_divider_width):
	* window.c (window_scrollbar_width):
	* window.c (window_scrollbar_height):
	* window.c (margin_width_internal):
	* window.c (Fpos_visible_in_window_p):
	* window.c (Fwindow_height):
	* window.c (Fwindow_displayed_height):
	* window.c (Fwindow_pixel_height):
	* window.c (Fwindow_text_area_height):
	* window.c (Fwindow_width):
	* window.c (Fwindow_full_width):
	* window.c (Fwindow_pixel_width):
	* window.c (Fwindow_hscroll):
	* window.c (Fmodeline_hscroll):
	* window.c (Fset_modeline_hscroll):
	* window.c (Fset_window_hscroll):
	* window.c (Fwindow_pixel_edges):
	* window.c (Fwindow_end):
	* window.c (Fwindow_last_line_visible_height):
	* window.c (Fset_window_point):
	* window.c (Fset_window_start):
	* window.c (unshow_buffer):
	* window.c (Fother_window):
	* window.c (window_loop):
	* window.c (buffer_window_count):
	* window.c (Fdelete_other_windows):
	* window.c (Fset_window_buffer):
	* window.c (Fselect_window):
	* window.c (temp_output_buffer_show):
	* window.c (Fsplit_window):
	* window.c (Fenlarge_window):
	* window.c (Fenlarge_window_pixels):
	* window.c (Fshrink_window):
	* window.c (Fshrink_window_pixels):
	* window.c (window_scroll):
	* window.c (Fscroll_left):
	* window.c (Fscroll_right):
	* window.c (Fcenter_to_window_line):
	* window.c (Fmove_to_window_line):
	* window.c (get_current_pixel_pos):
	* window.c (Fcurrent_pixel_column):
	* window.c (Fcurrent_pixel_row):
	* window.c (specifier_vars_of_window):
	* xemacs.def.in.in:
	Mechanically change INT (where it refers to non-bignum Lisp
	integers) to FIXNUM in our sources. Done for the following
	functions, enums, and macros: Lisp_Type_Int_Even,
	Lisp_Type_Int_Odd, INT_GCBITS, INT_VALBITS, make_int(), INTP(),
	XINT(), CHECK_INT(), XREALINT(), INT_PLUS(), INT_MINUS(),
	EMACS_INT_MAX (to MOST_POSITIVE_FIXNUM), EMACS_INT_MIN (to
	MOST_NEGATIVE_FIXNUM), NUMBER_FITS_IN_AN_EMACS_INT() to
	NUMBER_FITS_IN_A_FIXNUM(), XFLOATINT, XCHAR_OR_INT, INT_OR_FLOAT.
	The EMACS_INT typedef was not changed, it does not describe
	non-bignum Lisp integers.
	Script that did the change available in
	http://mid.xemacs.org/20067.17650.181273.12014@parhasard.net .

2011-09-06  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay-tty.c (init_tty_for_redisplay):
	Only set the console meta key flag to treat the eight bit as meta
	if the native coding system doesn't need that.
	* general-slots.h:
	* mule-coding.c:
	* mule-coding.c (syms_of_mule_coding):
	Move Qiso2022, Qseven to general-slots.h, they're now used in
	redisplay-tty.c.

2011-09-05  Stephen J. Turnbull  <stephen@xemacs.org>

	* chartab.c (nsubst_structures_mapper):
	Don't use MULE-only cases in non-MULE.

2011-09-04  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	* alloc.c (ALLOC_FROB_BLOCK_LISP_OBJECT_1):
	* alloc.c (ALLOC_FROB_BLOCK_LISP_OBJECT):
	* alloc.c (cons_print_preprocess):
	* alloc.c (vector_print_preprocess):
	* alloc.c (vector_nsubst_structures_descend):
	* alloc.c (Fmake_symbol):
	* alloc.c (UNMARK_symbol):
	* alloc.c (sweep_symbols):
	* alloc.c (reinit_alloc_objects_early):
	* alloc.c (reinit_alloc_early):
	* bytecode.c:
	* bytecode.c (compiled_function_print_preprocess):
	* bytecode.c (compiled_function_nsubst_structures_descend):
	* bytecode.c (set_compiled_function_arglist):
	* bytecode.c (set_compiled_function_interactive):
	* bytecode.c (bytecode_objects_create):
	* chartab.c:
	* chartab.c (print_preprocess_mapper):
	* chartab.c (nsubst_structures_mapper):
	* chartab.c (char_table_nsubst_structures_descend):
	* chartab.c (chartab_objects_create):
	* elhash.c:
	* elhash.c (nsubst_structures_map_hash_table):
	* elhash.c (hash_table_nsubst_structures_descend):
	* elhash.c (print_preprocess_mapper):
	* elhash.c (hash_table_print_preprocess):
	* elhash.c (inchash_eq):
	* elhash.c (hash_table_objects_create):
	* elhash.c (syms_of_elhash):
	* elhash.h:
	* emacs.c (main_1):
	* fns.c:
	* fns.c (check_eq_nokey):
	* fns.c (Fnsubst):
	* fns.c (syms_of_fns):
	* lisp.h:
	* lisp.h (struct Lisp_Symbol):
	* lisp.h (IN_OBARRAY):
	* lisp.h (struct):
	* lisp.h (PRINT_PREPROCESS):
	* lread.c (read1):
	* lrecord.h:
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT):
	* print.c:
	* print.c (PRINT_CIRCLE_LIMIT):
	* print.c (print_continuous_numbering_changed):
	* print.c (print_prepare):
	* print.c (print_finish):
	* print.c (Fprin1_to_string):
	* print.c (print_cons):
	* print.c (print_preprocess_inchash_eq):
	* print.c (print_preprocess):
	* print.c (print_sort_get_numbers):
	* print.c (print_sort_compare_ordinals):
	* print.c (print_gensym_or_circle):
	* print.c (nsubst_structures_descend):
	* print.c (nsubst_structures):
	* print.c (print_internal):
	* print.c (print_symbol):
	* print.c (vars_of_print):
	* rangetab.c:
	* rangetab.c (range_table_print_preprocess):
	* rangetab.c (range_table_nsubst_structures_descend):
	* rangetab.c (rangetab_objects_create):
	* rangetab.c (syms_of_rangetab):
	* symbols.c:
	* symbols.c (symbol_print_preprocess):
	* symbols.c (Fintern):
	* symbols.c (Funintern):
	* symbols.c (reinit_symbol_objects_early):
	* symbols.c (init_symbols_once_early):
	* symsinit.h:
	Implement print-circle, printing circular structures in a readable
	fashion, and treating them appropriately on read. This is by means
	of two new object methods, print_preprocess (detecting
	circularities), and nsubst_structures_descend (replacing
	placeholders with the read objects).
	Expose the substitution to Lisp via #'nsubst and its new
	:descend-structures keyword.
	Store information as to whether symbols are interned in obarray or
	not in their header, making checking for keywords and uninterned
	symbols (and thus printing) cheaper.
	Default print_gensym to t, as Common Lisp does, and as a
	more-than-decade old comment suggests.

2011-08-28  Aidan Kehoe  <kehoea@parhasard.net>

	* event-Xt.c (x_to_emacs_keysym):
	Take a new pointer argument, X_KEYSYM_OUT, where we store the X11
	keysym that we actually used.
	* event-Xt.c (x_event_to_emacs_event):
	Call x_to_emacs_keysym with its new pointer argument, so we have
	access to the X11 keysym used.
	When checking whether a keysym obeys caps lock, use the X11 keysym
	rather than the XEmacs keysym.
	When checking whether a key has two distinct keysyms depending on
	whether shift is pressed or not, use the X11 keysym passed back by
	x_to_emacs_keysym rather than working it out again using
	XLookupKeysym().
	* event-Xt.c (keysym_obeys_caps_lock_p):
	Use XConvertCase() in this function, now we're receiving the
	actual X keysym used.

2011-08-24  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	Move REALPATH_CORRECTS_CASE, DEFAULT_FILE_SYSTEM_IGNORE_CASE to
	../configure.ac rather than implementing them in terms of
	HAVE_DYLD here.

2011-08-23  Stephen Turnbull  <stephen@xemacs.org>

	Fix performance regression in refactored syntax cache setup.
	More doc improvements.

	* syntax.h (enum syntax_source):
	New.  Specify whether syntax is from property or buffer.
	(struct syntax_cache):
	Use enum syntax_source source, instead of no_syntax_table_prop
	and use_code.
	Improve comments.
	(SOURCE_IS_TABLE):
	New predicate.
	(SYNTAX_CODE_FROM_CACHE):
	Use it instead of use_code, and adjust logic.

	* syntax.c (syntax_cache_table_was_changed):
	Check cache->source (cache->no_syntax_table_prop is gone).
	(reset_syntax_cache_range):
	All information about OBJECT and BUFFER is in CACHE already.
	Also reset markers in OBJECT if it is a buffer.
	Rename INFINITE to VALID_EVERYWHERE.
	(init_syntax_cache):
	Initialize source (cache->no_syntax_table_prop is gone).
	Maybe initialize start and end to null markers.
	Initialize cache range with reset_syntax_cache_range.
	(update_syntax_cache):
	Use source instead of no_syntax_table_prop and use_code.
	(setup_syntax_cache):
	Add header comment.  Improve other comments.
	Make calls to reset_syntax_cache_range and init_syntax_cache match
	their prototypes.
	(init_buffer_syntax_cache):
	Use init_syntax_cache to do the work.
	(signal_syntax_cache_extent_changed):
	Make call to reset_syntax_cache_range match its prototype.
	Improve local variable naming.

2011-08-08  Stephen J. Turnbull  <stephen@xemacs.org>

	* syntax.c (update_syntax_cache):
	Use buffer_or_string_accessible_*, not buffer_or_string_absolute_*.
	Patch and test suggested by Alan Mackenzie.
	Fix initialization of insertion type for start and end in struct
	syntax_cache.

2011-08-06  Stephen J. Turnbull  <stephen@xemacs.org>

	* syntax.c:
	Remove some obsolete or unintelligible #### comments.
	Improve many toplevel comments.

	(Fsyntax_designator_chars):
	(Fchar_syntax):
	(Fmatching_paren):
	(Fforward_word):
	(Fforward_comment):
	(Fscan_lists):
	(Fscan_sexps):
	(Fbackward_prefix_chars):
	(parse-sexp-ignore-comments):
	(lookup-syntax-properties):
	(words-include-escapes):
	Improve docstrings.

	* syntax.h:
	Document functions and restrictions struct syntax_cache members.
	Improve many toplevel comments.
	Delete syntax code parsing macros unused for a decade or so.
	(#if 0'd out since May 2002.)

2011-08-06  Stephen J. Turnbull  <stephen@xemacs.org>

	* syntax.c (reset_buffer_syntax_cache_range):
	Rename to reset_syntax_cache_range.

	(setup_syntax_cache):
	(init_buffer_syntax_cache):
	(init_syntax_cache):
	(reset_syntax_cache_range):
	Refactor and document.

	(signal_syntax_cache_extent_changed):
	Remove obsolete comment.

2011-08-05  Stephen J. Turnbull  <stephen@xemacs.org>

	There are only (octal) 0200 ASCII characters, and only 128 values
	supplied in the definition.

	* syntax.h (syntax_spec_code):
	* syntax.c (syntax_spec_code):
	Declare array with correct dimension.
	* search.c (skip_chars):
	Correct bounds check on index of syntax_spec_code.

2011-08-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* search.c (byte_scan_buffer):
	Rename local variables to suppress GCC "shadowed global" warnings.
	The warnings are due to ANSI functions from <math.h> on Darwin.

2011-08-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* mule-coding.c (shift_jis_convert):
	* redisplay-xlike-inc.c (XLIKE_output_vertical_divider):
	Rename local variables to suppress GCC "shadowed global" warnings.
	The warnings are due to non-ANSI functions from <math.h> on Darwin.

2011-08-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* glyphs-eimage.c (png_instantiate): Rename a shadowing loop index
	which shadows another local to quiet GCC.

2011-08-03  Stephen J. Turnbull  <stephen@xemacs.org>

	* glyphs-eimage.c (_LARGEFILE64_SOURCE, _FILE_OFFSET_BITS):
	Define these macros to suppress GCC warnings caused by excessive
	zlib magic.

2011-08-03  Stephen J. Turnbull  <stephen@xemacs.org>

	* dumper.c (pdump_file_try): Add prototype to suppress GCC warning.

2011-06-25  Aidan Kehoe  <kehoea@parhasard.net>

	* console.c:
	* console.c (allocate_console):
	* console.c (vars_of_console):
	* console.c (complex_vars_of_console):
	* lisp.h:
	Add a new keymap variable, function-key-map-parent; use it as the
	parent of each console-specific function-key-map.  This is
	appropriate for things like x-compose processing.

2011-06-19  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c:
	* fns.c (list_delete_duplicates_from_end):
	Correct a couple of comments in this file.
	* fns.c (sublis):
	Remove a superfluous gcpro1.

2011-06-19  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (Feq_hash):
	Document that this returns, for non-immediate objects, a value
	that is unique among currently-reachable objects.

2011-05-29  Didier Verna  <didier@xemacs.org>

	* console-impl.h (struct console_methods): Remove device parameter
	from the clear_region method prototype.
	* redisplay-output.c (redisplay_clear_region): Remove the device
	parameter from the clear_region method call.
	* console-stream.c (stream_clear_region):
	* redisplay-msw.c (mswindows_clear_region):
	* redisplay-tty.c (tty_clear_region): Update accordingly.
	* redisplay-xlike-inc.c (XLIKE_clear_region): Ditto. Get the
	device from the frame structure instead.

2011-05-20  Jerry James  <james@xemacs.org>

	* Makefile.in.in: Default DESTDIR to the empty string, and use it in
	install targets.

2011-05-20  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	* data.c (Faref):
	* fns.c (check_losing_bytecode):
	* fns.c (concat):
	* fns.c (Felt):
	Remove the LOSING_BYTECODE compile-time option entirely. It
	allowed access to the elements of a compiled function using
	#'aref, and has been turned off since 1997.

2011-05-07  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c:
	* eval.c (Fdefmacro):
	* eval.c (syms_of_eval):
	Support macro-declaration-function in defmacro, incompletely and
	without documentation.
	* lisp.h:
	Declare Fnth here, necessary for the previous changes.

2011-05-07  Aidan Kehoe  <kehoea@parhasard.net>

	* s/netbsd.h:
	Remove an extraneous #endif, hopefully fixing the NetBSD and
	OpenBSD builds; thank you Adam Sjï¿½gren!

2011-05-07  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Fsplit_path): Removed.
	* fns.c (syms_of_fns):
	Move #'split-path to subr.el, as was always the intention.

2011-05-03  Stephen J. Turnbull  <stephen@xemacs.org>

	* dumper.c (pdump_file_try): Remove static qualifier.
	Thanks to Hans de Graaff of Gentoo and Marcus Crestani.

2011-05-01  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (parse_integer):
	GMP's mpz_set_string deals with a leading plus badly, make sure it
	never sees one coming from this function.

2010-12-31  Mike Kupfer  <mike.kupfer@xemacs.org>

	* redisplay.c (pixel_to_glyph_translation):
	Handle redisplay edge case.
	With motion events when entering a frame and the minibuffer is
	active, row and column can be zero, and there aren't any runes.

2011-04-30  Stephen J. Turnbull  <stephen@xemacs.org>

	* specifier.c (Fspecifier_matching_instance):
	Add comment about backward-incompatibility of MATCHSPEC.

2011-04-29  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.31 "ginger" is released.

2011-04-26  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.30 "garlic" is released.

2011-04-23  Aidan Kehoe  <kehoea@parhasard.net>

	* editfns.c:
	* editfns.c (syms_of_editfns):
	Implement #'char= in cl-extra.el, not here, accepting more than
	two arguments as Common Lisp specifies.

2011-04-17  Jeff Sparkes  <jsparkes@gmail.com>

	* device-tty.c (tty_device_system_metrics): Fix compile issues for
	C89 compilers.  Use log() instead of log2().

2011-04-04  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (count_with_tail):
	This can be legitimately called from #'delete* with a specified
	COUNT keyword value, accept this in the assertion.
	* fns.c (FdeleteX):
	* fns.c (FremoveX):
	If COUNT is specified and FROM-END is non-nil, set COUNT to nil in
	the argument vector, so count_with_tail doesn't see it when
	calculating the total number of times an item occurs.  Fixes
	problems with the interaction of :count and :from-end.

2011-04-04  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (FremoveX):
	* fns.c (sublis):
	Correct some nesting of GCPRO and UNGCPRO here, revealed by the
	the C++ build compiling core Lisp. Thank you Mats' buildbot!

2011-04-04  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (GC_EXTERNAL_LIST_LOOP_3, GC_EXTERNAL_LIST_LOOP_4): New.
	* fns.c (count_with_tail, list_position_cons_before, FassocX):
	* fns.c (FrassocX, position, FdeleteX, FremoveX):
	* fns.c (list_delete_duplicates_from_end):
	* fns.c (Fdelete_duplicates, Fremove_duplicates, Freduce):
	* fns.c (Fnsubstitute, Fsubstitute, sublis, nsublis, Fnsublis):
	* fns.c (venn, nvenn, Funion, Fset_exclusive_or, Fnset_exclusive_or):
	Use GC_EXTERNAL_LIST_LOOP_* in the sequence functions in fns.c
	where appropriate, there were some corner cases where my old
	approach was unsafe (mainly if the circularity checking's tortoise
	lost GCPRO protection.
	Add GC_EXTERNAL_LIST_LOOP_{3,4}, analogous to
	GC_EXTERNAL_LIST_LOOP_2.

2011-03-28  Jeff Sparkes  <jsparkes@gmail.com>

	* console-tty-impl.h (struct tty_console): Add field for number of
	displayable colors.
	* device-tty.c (tty_device_system_metrics): Return metrics for
	num-color-cells and num-bit-planes.  Tracker issue 757.
	* device.c: There are two required args for device-system-metric.
	* redisplay-tty.c (init_tty_for_redisplay): Retrieve number of
	colors from terminal description.  Default to 2 if none found.

2011-03-24  Jerry James  <james@xemacs.org>

	* alloc.c (listu): Assemble the list in the right order so we don't
	have to reverse it.
	(listn): Ditto.
	* dired.c (Ffile_attributes): Use listn instead of building an array
	to pass to Flist.  GC protect the mode string.
	* editfns.c (Fdecode_time): Use listn instead of Flist.
	* faces.c (vars_of_faces): Use listu instead of Flist.

2011-03-24  Jerry James  <james@xemacs.org>

	* README.kkcc: "occured" -> "occurred".
	* alloc.c (malloced_storage_size): "supress" -> "suppress".
	* buffer.c: "intial" -> "initial".
	* elhash.c (Fdefine_hash_table_test): "analagous" -> "analogous".
	* emacs.c: "targetting" -> "targeting".
	(shut_down_emacs): "recurrance" -> "reoccurrence".
	* event-stream.c: "accidentaly" -> "accidentally", and fix grammar.
	* extents.c: "occuring" -> "occurring".
	* faces.c (update_face_cachel_data): "appart" -> "apart", "begining"
	-> "beginning".
	* file-coding.c (Vkeyboard_coding_system): "interpet" -> "interpret".
	* fileio.c (Fmake_temp_name): "analagous" -> "analogous".
	* fontcolor-gtk.c: "sucess" -> "success".
	* frame-gtk.c (gtk_init_frame_2): "carefull" -> "careful", fix
	whitespace.
	* frame.c: "negotation" -> "negotiation".
	* glyphs-msw.c (mswindows_map_subwindow): "everytime" -> "every time".
	* glyphs-widget.c: "accomodate" -> "accommodate".
	(logical_unit_height): Ditto.
	(Fwidget_logical_to_character_height): Ditto.
	* gtk-xemacs.c (__nuke_background_items): "noticable" -> "noticeable".
	* menubar-gtk.c: "inital" -> "initial".
	* mule-ccl.c: "refered" -> "referred to".
	* nt.c (mswindows_stat): "noticable" -> "noticeable".
	* ntheap.c (recreate_heap): "commited" -> "committed".
	* s/cygwin32.h: "konw" -> "know".
	* sysdll.c: "dependant" -> "dependent".
	* syswindows.h: "targetting" -> "targeting".
	* text.c: "reversable" -> "reversible".
	* unexcw.c (copy_executable_and_dump_data_section): "addres" ->
	"address".
	* unicode.c (Funicode_precedence_list): "occurrance" -> "occurrence".
	* window.c (struct window_mirror_stats): "Ancilliary" -> "Ancillary".

2011-03-20  Mats Lidell  <matsl@xemacs.org>

	* alloca.c (find_stack_direction):
	* alloca.c (xemacs_c_alloca):
	Remove use of auto keyword. It is default and will be illegal in
	C++0X.

2011-03-17  Didier Verna  <didier@xemacs.org>

	* data.c (init_errors_once_early): Define Qextent_read_only error.
	* lisp.h: Declare it.
	* extents.c (verify_extent_mapper): Signal an extent-read-only
	error instead of a buffer-read-only one.

2011-03-15  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in (SUPPORT_CONFOUNDING_FUNCTIONS): New #define,
	equivalent NEED_TO_HANDLE_21_4_CODE by default, describing whether
	this XEmacs should support the old-eq, old-equal and related
	functions and byte codes.
	* bytecode.c (UNUSED):
	Only interpret old-eq, old-equal, old-memq if
	SUPPORT_CONFOUNDING_FUNCTIONS is defined.
	* data.c:
	Move Fold_eq to fns.c with the rest of the Fold_* functions.
	* fns.c:
	* fns.c (Fmemq):
	* fns.c (memq_no_quit):
	* fns.c (assoc_no_quit):
	* fns.c (Frassq):
	* fns.c (Fequal):
	* fns.c (Fold_equal):
	* fns.c (syms_of_fns):
	Group old-eq, old-equal, old-memq etc together, surround them with
	#ifdef SUPPORT_CONFOUNDING_FUNCTIONS.

2011-03-14  Aidan Kehoe  <kehoea@parhasard.net>

	* glyphs-eimage.c (png_instantiate):
	Update the PNG handling code to work with versions of the library
	where the png_info structure is no longer visible. Thank you for
	the report, Robert Delius Royar.

2011-03-12  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c (Fdispatch_event):
	As documented, allow pre-command-hook to usefully modify
	this-command even when this-command is nil (that is, we would
	normally throw an undefined-keystroke-sequence error). Don't throw
	that error if this-command was modified, instead try to execute
	the new value.
	Allow pre-command-hook to modify last-command-event in this
	specific context. Don't document this, for the moment.

2011-03-11  Aidan Kehoe  <kehoea@parhasard.net>

	* bytecode.c (optimize_byte_code):
	Only transform assignments to keywords to Bdiscard if
	NEED_TO_HANDLE_21_4_CODE is turned on. Cf. similar code in
	reject_constant_symbols().

2011-02-24  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Fsubstring_no_properties):
	Sigh, get_string_range_char checks the type of its START and END
	arguments, but doesn't check the type of its STRING
	argument. Thank you Raymond Toy!

2011-02-19  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Fset_exclusive_or):
	This function accepts the :stable keyword too, document this in
	its arglist.

2010-04-14  Ben Wing  <ben@xemacs.org>

	* array.h (Stynarr_declare):
	Remove extra semi-colon leading to syntax errors.
	* search.c (byte_scan_buffer):
	Rename some variables to avoid warnings about global shadowings.
	
	* text.c:
	* text.c (non_ascii_charset_codepoint_to_itext):
	* text.c (round_up_to_valid_ichar):
	* text.c (round_down_to_valid_ichar):
	Provide round_down_to_valid_ichar() and round_up_to_valid_ichar()
	when not Mule.
	
	* unicode.c (autoload_charset_unicode_tables):
	Don't fclose() in the first stage since we will do it later when
	we unbind, and doubly fclosing is fatal in Linux glibc.
	
	* window.c:
	Put ifdefs around find_window_mirror_maybe() to avoid warnings.

2010-04-07  Ben Wing  <ben@xemacs.org>

	* redisplay-msw.c (mswindows_output_vertical_divider):
	* redisplay-xlike-inc.c:

2011-02-16  Aidan Kehoe  <kehoea@parhasard.net>

	* xemacs.def.in.in:
	No longer export acons(), export Facons() instead, thank you Mats,
	Jerry and Jeff Sparkes.

2011-02-10  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (shortest_length_among_sequences):
	This was buggy, it always errored if the last argument was
	circular, even if other arguments were non-circular. Correct that.

2011-02-09  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (Facons):
	* alloc.c (Fobject_memory_usage):
	* alloc.c (syms_of_alloc):
	* faces.c (complex_vars_of_faces):
	* lisp.h:
	* mc-alloc.c (Fmc_alloc_memory_usage):
	Rename acons() to Facons(), make it visible to Lisp. Change uses
	of the function in C accordingly.

2011-02-07  Aidan Kehoe  <kehoea@parhasard.net>

	* keymap.c (describe_map_sort_predicate): Correct the order of
	arguments to map_keymap_sort_predicate() here. Thanks again, Mats.

2011-02-06  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fapropos_internal):
	Supply check_string_lessp_nokey explicitly as the CHECK_MERGE
	argument to list_sort(), NULL no longer works. Thank you Mats
	Lidell in IRC!

2011-02-05  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c:
	* fns.c (check_lss_key, check_lss_key_car): New.
	* fns.c (check_string_lessp_key check_string_lessp_key_car): New.
	* fns.c (get_merge_predicate): New.
	* fns.c (list_merge):
	* fns.c (array_merge):
	* fns.c (list_array_merge_into_list):
	* fns.c (list_list_merge_into_array):
	* fns.c (list_array_merge_into_array):
	* fns.c (Fmerge):
	* fns.c (list_sort):
	* fns.c (array_sort):
	* fns.c (FsortX):
	* fns.c (syms_of_fns):
	* lisp.h:
	Move #'sort, #'merge to using the same test approach as is used in
	the functions that take TEST, TEST-NOT and KEY arguments.  This
	allows us to avoid the Ffuncall() overhead when the most common
	PREDICATE arguments are supplied, in particular #'< and
	#'string-lessp.

	* fontcolor-msw.c (sort_font_list_function):
	* fontcolor-msw.c (mswindows_enumerate_fonts):
	* dired.c:
	* dired.c (Fdirectory_files):
	* fileio.c:
	* fileio.c (build_annotations):
	* fileio.c (syms_of_fileio):
	* keymap.c:
	* keymap.c (keymap_submaps):
	* keymap.c (map_keymap_sort_predicate):
	* keymap.c (describe_map_sort_predicate):
	* keymap.c (describe_map):
	Change the various C predicates passed to list_sort () and
	list_merge () to fit the new calling convention, returning
	non-zero if the first argument is less than the second, zero
	otherwise.

2011-01-30  Michael Sperber  <mike@xemacs.org>

	* redisplay.h:
	* redisplay.c:
	(redisplay_cancel_ritual_suicide):
	* eval.c (throw_or_bomb_out_unsafe):
	* device-x.c (x_IO_error_handler): Don't commit suicide when an X
	device dies.

2011-01-23  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (complex_vars_of_file_coding):
	* intl-win32.c (complex_vars_of_intl_win32):
	* profile.c (Fget_profiling_info):
	* unicode.c (complex_vars_of_unicode):
	Replace various awkward calls to nconc2 () with list6 () with
	analogous calls to Ben's relatively-recently introduced listu (),
	constructing a list from an arbitrary number of C arguments.

2011-01-18  Mike Sperber  <mike@xemacs.org>

	* s/freebsd.h: Zap. Not really needed anymore, and it has unclear
	license status.

2011-01-15  Aidan Kehoe  <kehoea@parhasard.net>

	* s/usg5-4.h (PTY_NAME_SPRINTF, PTY_TTY_NAME_SPRINTF):
	That didn't work; attempt with qxestrcpy_ascii(),
	qxestrncpy_ascii().

2011-01-14  Aidan Kehoe  <kehoea@parhasard.net>

	* s/hpux11.h (PTY_TTY_NAME_SPRINTF, PTY_NAME_SPRINTF):
	* s/usg5-4.h (PTY_TTY_NAME_SPRINTF, PTY_NAME_SPRINTF):
	Replace sprintf() with qxesprintf(), strcpy with qxestrpy(),
	hopefully fixing some platform-specific C++ builds.

2011-01-14  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Ffind): Use the correct subr information here, pass in
	the DEFAULT keyword argument value correctly.

2011-01-11  Aidan Kehoe  <kehoea@parhasard.net>

	* device-msw.c (Fmswindows_printer_list): Remove a Fdelete ()
	call here, remove the necessity for it.
	* fns.c (Fdelete, Fdelq):
	* lisp.h:
	Move #'delete, #'delq to Lisp, implemented in terms of #'delete*
	* select.c (Fown_selection_internal):
	* select.c (handle_selection_clear):
	Use delq_no_quit() in these functions, don't reimplement it or use
	Fdelq(), which is now gone.

2011-01-10  Aidan Kehoe  <kehoea@parhasard.net>

	* mc-alloc.c (get_used_list_index):
	Replace some C++ comments with C-style /* comments.

2011-01-02  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (FdeleteX, FremoveX, Fnsubstitute, Fsubstitute, syms_of_fns):
	Don't repeat the declaration and DEFSYMBOL() for Qnintersection in
	this file; don't assume that bignums are always available. Fixes
	some of the build problems the buildbot is showing me at the
	moment.
	(syms_of_fns): Remove a couple more duplicate symbol declarations.

2011-01-01  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (print_ephemeron, print_weak_list, print_weak_box):
	Be more helpful in printing these structures; show their contents,
	print their UIDs so it's possible to distinguish between them.

2010-12-30  Aidan Kehoe  <kehoea@parhasard.net>

	Move the heavy lifting from cl-seq.el to C, finally making those
	functions first-class XEmacs citizens, with circularity checking,
	built-in support for tests other than #'eql, and as much
	compatibility with current Common Lisp as Paul Dietz' tests require.

	* fns.c (check_eq_nokey, check_eq_key, check_eql_nokey)
	(check_eql_key, check_equal_nokey, check_equal_key)
	(check_equalp_nokey, check_equalp_key, check_string_match_nokey)
	(check_string_match_key, check_other_nokey, check_other_key)
	(check_if_nokey, check_if_key, check_match_eq_key)
	(check_match_eql_key, check_match_equal_key)
	(check_match_equalp_key, check_match_other_key): New. These are
	basically to provide function pointers to be used by Lisp
	functions that take TEST, TEST-NOT and KEY arguments.

	(get_check_match_function_1, get_check_test_function)
	(get_check_match_function): These functions work out which of the
	previous list of functions to use, given the keywords supplied by
	the user.

	(count_with_tail): New. This is the bones of #'count.
	(list_count_from_end, string_count_from_end): Utility functions
	for #'count.
	(Fcount): New, moved from cl-seq.el.
	(list_position_cons_before): New. The implementation of #'member*,
	and important in implementing various other functions.

	(FmemberX, Fadjoin, FassocX, FrassocX, Fposition, Ffind)
	(FdeleteX, FremoveX, Fdelete_duplicates, Fremove_duplicates)
	(Fnsubstitute, Fsubstitute, Fsublis, Fnsublis, Fsubst, Fnsubst)
	(Ftree_equal, Fmismatch, Fsearch, Fintersection, Fnintersection)
	(Fsubsetp, Fset_difference, Fnset_difference, Fnunion, Funion)
	(Fset_exclusive_or, Fnset_exclusive_or): New, moved here from
	cl-seq.el.

	(position): New. The implementation of #'find and #'position.
	(list_delete_duplicates_from_end, subst, sublis, nsublis)
	(tree_equal, mismatch_from_end, mismatch_list_list)
	(mismatch_list_string, mismatch_list_array)
	(mismatch_string_array, mismatch_string_string)
	(mismatch_array_array, get_mismatch_func): Helper C functions for
	the Lisp-visible functions.
	(venn, nvenn): New. The implementation of the main Lisp functions that
	treat lists as sets.

2010-12-30  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (DECLARE_N_KEYWORDS_8, DECLARE_N_KEYWORDS_9)
	(CHECK_N_KEYWORDS_8, CHECK_N_KEYWORDS_9):
	Support up to nine keywords in the PARSE_KEYWORDS() macro.

2010-12-30  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (syms_of_elhash):
	* chartab.c (syms_of_chartab):
	* abbrev.c (syms_of_abbrev):
	* general-slots.h:
	Move Qcount, Q_default, Q_test to general-slots.h, they're about
	to be used by other files. Rename Q_default to Q_default_, for the
	sake of the PARSE_KEYWORDS macro (given that default is a reserved
	identifier in C). Add SYMBOL_KEYWORD_GENERAL(), analogous to
	SYMBOL_GENERAL() to make this easier.

2010-12-29  Aidan Kehoe  <kehoea@parhasard.net>

	* floatfns.c (Ffloat): If we've been handed a bigfloat here, it's
	appropriate to give the same bigfloat back.

2010-11-30  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Ffill):
	Move all declarations before statements, for the sake of the
	Visual Studio build. Thank you Vin!

2010-11-24  Aidan Kehoe  <kehoea@parhasard.net>

	* font-mgr.c (Ffc_pattern_get): Fix my last change when both
	--with-union-type and --with-xft are specified, thank you Robert
	Delius Royar!

2010-11-20  Aidan Kehoe  <kehoea@parhasard.net>

	* abbrev.c (Fexpand_abbrev):
	* alloc.c:
	* alloc.c (Fmake_list):
	* alloc.c (Fmake_vector):
	* alloc.c (Fmake_bit_vector):
	* alloc.c (Fmake_byte_code):
	* alloc.c (Fmake_string):
	* alloc.c (vars_of_alloc):
	* bytecode.c (UNUSED):
	* bytecode.c (Fbyte_code):
	* chartab.c (decode_char_table_range):
	* cmds.c (Fself_insert_command):
	* data.c (check_integer_range):
	* data.c (Fnatnump):
	* data.c (Fnonnegativep):
	* data.c (Fstring_to_number):
	* elhash.c (hash_table_size_validate):
	* elhash.c (decode_hash_table_size):
	* eval.c (Fbacktrace_frame):
	* event-stream.c (lisp_number_to_milliseconds):
	* event-stream.c (Faccept_process_output):
	* event-stream.c (Frecent_keys):
	* event-stream.c (Fdispatch_event):
	* events.c (Fmake_event):
	* events.c (Fevent_timestamp):
	* events.c (Fevent_timestamp_lessp):
	* events.h:
	* events.h (struct command_builder):
	* file-coding.c (gzip_putprop):
	* fns.c:
	* fns.c (check_sequence_range):
	* fns.c (Frandom):
	* fns.c (Fnthcdr):
	* fns.c (Flast):
	* fns.c (Fnbutlast):
	* fns.c (Fbutlast):
	* fns.c (Fmember):
	* fns.c (Ffill):
	* fns.c (Freduce):
	* fns.c (replace_string_range_1):
	* fns.c (Freplace):
	* font-mgr.c (Ffc_pattern_get):
	* frame-msw.c (msprinter_set_frame_properties):
	* glyphs.c (check_valid_xbm_inline):
	* indent.c (Fmove_to_column):
	* intl-win32.c (mswindows_multibyte_to_unicode_putprop):
	* lisp.h:
	* lisp.h (ARRAY_DIMENSION_LIMIT):
	* lread.c (decode_mode_1):
	* mule-ccl.c (ccl_get_compiled_code):
	* number.h:
	* process-unix.c (unix_open_multicast_group):
	* process.c (Fset_process_window_size):
	* profile.c (Fstart_profiling):
	* unicode.c (Funicode_to_char):
	Change NATNUMP to return 1 for positive bignums; changes uses of
	it and of CHECK_NATNUM appropriately, usually by checking for an
	integer in an appropriate range.
	Add array-dimension-limit and use it in #'make-vector,
	#'make-string. Add array-total-size-limit, array-rank-limit while
	we're at it, for the sake of any Common Lisp-oriented code that
	uses these limits.
	Rename check_int_range to check_integer_range, have it take
	Lisp_Objects (and thus bignums) instead.
	Remove bignum_butlast(), just set int_n to an appropriately large
	integer if N is a bignum.
	Accept bignums in check_sequence_range(), change the functions
	that use check_sequence_range() appropriately.
	Move the definition of NATNUMP() to number.h; document why it's a
	reasonable name, contradicting an old comment.

2010-11-17  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (bignum_butlast): New.
	(Fnbutlast, Fbutlast): Use it.
	In #'butlast and #'nbutlast, if N is a bignum, we should always
	return nil. Bug revealed by Paul Dietz' test suite, thank you
	Paul.

2010-11-15  Aidan Kehoe  <kehoea@parhasard.net>

	* .gdbinit.in: Remove lrecord_type_popup_data,
	lrecord_type_window_configuration from this file, they're not
	used, and their presence breaks pobj in GDB at runtime for me.

2010-11-14  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Fnreverse):
	Check that non-list sequences are writable from Lisp before
	modifying them. (There's an argument that we should do this for
	list sequences too, but for the moment other code (e.g. #'setcar)
	doesn't.)
	(mapcarX): Initialise lisp_vals_staging, lisp_vals_type
	explicitly, for the sake of compile warnings. Check if
	lisp_vals_staging is non-NULL when deciding whether to replace a
	string's range.
	(Fsome): Cross-reference to #'find-if in the doc string for this
	function.
	(Freduce): GCPRO accum in this function, when a key argument is
	specicified it can be silently garbage-collected.  When deciding
	whether to iterate across a string, check whether the cursor
	exceeds the byte len; while iterating, increment an integer
	counter.  Don't ABORT() if check_sequence_range() returns when
	handed a suspicious sequence; it is legal to supply the length of
	SEQUENCE as the :end keyword value, and this will provoke our
	suspicions, legitimately enough. (Problems with this function
	revealed by Paul Dietz' ANSI test suite, thank you Paul Dietz.)
	(Freplace): Check list sequence lengths using the arguments, not
	the conses we're currently looking at, thank you Paul Dietz.

2010-11-14  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Frandom): Correct the docstring here, the name of the
	argument is LIMIT, not N.

2010-11-06  Aidan Kehoe  <kehoea@parhasard.net>

	* bytecode.c (bytecode_nreverse): Call Fnreverse() if SEQUENCE is
	not a cons in this function.
	(Fnreverse, Freverse):
	Accept sequences, not just lists, in these functions.

2010-11-06  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Flist_length): Error if LIST is dotted in this function;
	document this behaviour.

2010-10-25  Aidan Kehoe  <kehoea@parhasard.net>

	* specifier.c (specifier_instance_from_inst_list):
	Call call_with_suspended_errors() with ERROR_ME_WARN, explicitly;
	avoids the problem Giacomo Boffi describes in
	http://mid.xemacs.org/19617.52517.341117.388679@aiuole.stru.polimi.it
	, but the specifier instantiation bug that makes XEmacs fail for
	him is still visible.

2010-10-25  Aidan Kehoe  <kehoea@parhasard.net>

	* print.c (ulong_to_bit_string): If printing zero, actually print
	a zero, don't return the empty string.

2010-07-06  Stephen J. Turnbull  <stephen@xemacs.org>

	* emodules.c (emodules_load):
	Add one more dereference on f = dll_variable() in three places.
	We then use EXTERNAL_TO_ITEXT on it, which returns an alloca'd
	string, so I delete the unneeded alloca copy statements.
	Fixes error reported by Anders Odberg, confirmed in
	<rfawrpfhm3l.fsf@fangorn.uio.no>.

2010-06-14  Stephen J. Turnbull  <stephen@xemacs.org>

	* ui-byhand.c:
	* gtk-glue.c:
	Add copyright notice based on internal evidence.

2010-06-14  Stephen J. Turnbull  <stephen@xemacs.org>

	* number.h: Another permission consistency fix.

2010-10-14  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Fnbutlast, Fbutlast):
	Tighten up Common Lisp compatibility for these two functions; they
	need to operate on dotted lists without erroring.

2010-10-12  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (list_merge):
	Circularity checking here needs to be done independently for each
	list, they can't share a loop counter. Thank you for the bug
	report, Robert Pluim!

2010-09-20  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (GET_DEFUN_LISP_OBJECT): Make the NEW_GC version of this
	work, remove a needless and unhelpful semicolon.
	(GET_DEFUN_LISP_OBJECT): Remove a needless semicolon from the
	non-NEW_GC version of this.
	(PARSE_KEYWORDS): Fix the indentation for the DEBUG_XEMACS
	version of this macro.
	(PARSE_KEYWORDS): Use GET_DEFUN_LISP_OBJECT() for both the NEW_GC
	and non-NEW_GC versions of this macro, when working out the
	function's min args.

2010-09-18  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (PARSE_KEYWORDS):
	Turns out #elsif is not valid preprocessor syntax, who knew!

2010-09-18  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (PARSE_KEYWORDS):
	Correct the NEW_GC non-DEBUG_XEMACS version of this macro; under
	such builds S##function is a pointer, not a Lisp_Subr structure.

2010-09-18  Aidan Kehoe  <kehoea@parhasard.net>

	Simplify the API of PARSE_KEYWORDS for callers.

	* lisp.h (PARSE_KEYWORDS): Simply the API, while making the
	implementation a little more complex; work out KEYWORDS_OFFSET
	from the appropriate Lisp_Subr struct, take the function name as
	the C name of the DEFUN rather than a symbol visible as a
	Lisp_Object, on debug builds assert that we're actually in the
	function so we choke on badly-done copy-and-pasting,

	* lisp.h (PARSE_KEYWORDS_8): New. This is the old PARSE_KEYWORDS.

	* fns.c (Fmerge, FsortX, Ffill, Freduce, Freplace):
	Change to use the new PARSE_KEYWORDS syntax.
	* elhash.c (Fmake_hash_table): Chance to the new PARSE_KEYWORDS
	syntax, rename a define to correspond to what other files use.

	* symbols.c (intern_massaging_name):
	* buffer.c (ADD_INT):
	Rename intern_converting_underscores_to_dashes() to
	intern_massaging_name(), now it does a little more.

2010-09-18  Aidan Kehoe  <kehoea@parhasard.net>

	* termcap.c:
	Add a couple of missing includes here, which should fix builds
	that use this file. (I have no access to such builds, but Mats'
	buildbot shows output that indicates they fail at link time since
	DEVICE_BAUD_RATE and IS_DIRECTORY_SEP are available.)

2010-09-18  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Freduce):
	Move statements outside of the braces surrounding the
	EXTERNAL_LIST_LOOP_3 macro, fixing strict C89 builds. Thank you
	for the report, Vin!

2010-09-16  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Flist_length): New, moved here from cl-extra.el, needed
	by the next function.
	(shortest_length_among_sequences): New.
	(Fmapconcat, FmapcarX, Fmapvector, Fmapcan, Fmapc, Fmap)
	(Fmap_into, Fsome, Fevery):
	Use shortest_length_among_sequences() when working out how many
	iterations to do, only giving circular list errors if all
	arguments are circular.

2010-09-16  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Fsubseq):
	Change the string code to better fit in with the rest of this
	function (it still uses get_string_range_char(), though, which *may*
	diverge algorithmically from what we're doing).

	If dealing with a cons, only call #'length if we have reason to
	believe that the START and END arguments are badly specified, and
	check for circular lists ourselves when that's appropriate.

	If dealing with a vector, call Fvector() on the appropriate subset
	of the old vector's data directly, don't initialise the result
	with nil and then copy.

	(Ffill):
	Only check the range arguments for a cons SEQUENCE if we have good
	reason to think they were badly specified.

	(Freduce):
	Handle multiple values properly. Add bounds checking to this
	function, as specificied by ANSI Common Lisp.

2010-09-16  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Ffunction, Fquote):
	Add argument information in the arguments: () format for these two
	special operators.

2010-09-07  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Freplace):
	Replace an accidental double semi-colon with a single semi-colon,
	hopefully fixing Vin's Visual Studio 6 build. (Visual Studio 2005
	had no problem with it, oddly.)

2010-09-06  Aidan Kehoe  <kehoea@parhasard.net>

	Move #'replace to C; add bounds checking to it and to #'fill.

	* fns.c (Fsubseq, Ffill, mapcarX):
	Don't #'nreverse in #'subseq, use fill_string_range and check
	bounds in #'fill, use replace_string_range() in #'map-into
	avoiding quadratic time when modfiying the string.

	* fns.c (check_sequence_range, fill_string_range)
	(replace_string_range, replace_string_range_1, Freplace):
	New functions; check that arguments fit sequence dimensions, fill
	a string range with a given character, replace a string range from
	an Ibyte pointer.

2010-09-05  Aidan Kehoe  <kehoea@parhasard.net>

	* chartab.c (char_table_default_for_type,
	chartab_default_validate): New.
	(print_char_table, Freset_char_table, chartab_default_validate)
	(chartab_instantiate, structure_type_create_chartab):
	Accept keyword :default in the read syntax for char tables, and
	print the default when it is not what was expected for the
	time. Makes it a little easier to debug things.

2010-09-05  Aidan Kehoe  <kehoea@parhasard.net>

	* editfns.c (Fformat_time_string):
	Use two backslashes so that there is at least one present in the
	output of describe function, when describing the Roman month
	number syntax in this function's docstring. Thanks for provoking
	me to look at this, Stephen Turnbull.

2010-09-03  Aidan Kehoe  <kehoea@parhasard.net>

	* symsinit.h: Declare reinit_process_early() here, fixing the C++
	build; thank you for pointing this out, Adam Sjï¿½gren!
	* fontcolor-msw.c (mswindows_string_to_color):
	Cast the result of bsearch() to a colormap_t pointer, fixing the
	Visual Studio 2005 build.

2010-09-02  Aidan Kehoe  <kehoea@parhasard.net>

	* strftime.c (roman_upper, roman_lower, strftime):
	Implement Roman month numbers, as used in central and eastern
	Europe.
	* editfns.c (Fformat_time_string):
	Document two new escapes, to allow uppercase and lowercase Roman
	month numbers. Remove documentation of a bug that we didn't
	actually have.
	* text.h (Qtime_function_encoding): We know the text encoding
	coming from strftime(), because we always use the one in
	strftime.c. Don't use Qnative.

2010-09-01  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (list_merge, list_array_merge_into_list)
	(list_array_merge_into_array):
	Avoid algorithmic complexity surprises when checking for
	circularity in these functions.
	(Freduce): Fix some formatting, in passing.

	(mapcarX): Drop the SOME_OR_EVERY argument to this function;
	instead, take CALLER, a symbol reflecting the Lisp-visible
	function that called mapcarX(). Use CALLER with
	mapping_interaction_error() when sequences are modified
	illegally. Don't cons with #'some, #'every, not even a little.
	(Fmapconcat, FmapcarX, Fmapvector, Fmapcan, Fmapc, Fmap)
	(Fmap_into, Fsome, Fevery): Call mapcarX() with its new
	arguments.
	(Fmapcan): Don't unnecessarily complicate the nconc call.

	(maplist): Take CALLER, a symbol reflecting the Lisp-visible
	function that called maplist(), rather than having separate
	arguments to indicate mapl vs. mapcon.
	Avoid algorithmic complexity surprises when checking for
	circularity. In #'mapcon, check a given stretch of
	result for well-formedness once, which was not previously the
	case, despite what the comments said.
	(Fmaplist, Fmapl, Fmapcon):
	Call maplist() with its new arguments.

2010-09-02  Aidan Kehoe  <kehoea@parhasard.net>

	* process.c (process_getprop, process_putprop, process_remprop)
	(process_plist, process_setplist, reinit_process_early):
	Add functions to modify a process's property list.
	* process-slots.h (MARKED_SLOT): Add a plist slot.

	* fns.c (Fobject_setplist): New function, analogous to #'setplist,
	but more general.
	Update the documentation in the other plist functions to reflect
	that processes now have property lists.
	* emacs.c (main_1): Call reinit_process_early(), now processes have
	plist methods that need to be initialised.
	* symbols.c (reinit_symbol_objects_early): Fsetplist is the named
	setplist method for symbols.

2010-08-30  Aidan Kehoe  <kehoea@parhasard.net>

	* floatfns.c (ceiling_one_mundane_arg, floor_one_mundane_arg)
	(round_one_mundane_arg, truncate_one_mundane_arg):
	INTEGERP is always available, no need to wrap calls to it with
	#ifdef HAVE_BIGNUM.
	(Fceiling, Ffloor, Fround, Ftruncate, Ffceiling, Fffloor)
	(Ffround, Fftruncate):
	Correct some code formatting here.
	* doprnt.c (emacs_doprnt_1):
	Remove some needless #ifdef WITH_NUMBER_TYPES, now number.h is
	always #included.

2010-08-26  Adam Sjï¿½gren <asjo@koldfront.dk>

	* glyphs-eimage.c (gif_instantiate): Try harder to find an
	appropriate GIF colormap and then flag an error if one can't be
	found.

2010-08-21  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read_escape):
	Make error messages better reflect the text that was encountered,
	when overlong hex character escapes or non-Latin-1 octal character
	escapes are encountered.

2010-08-15  Aidan Kehoe  <kehoea@parhasard.net>

	* print.c (print_symbol):
	Escape any symbols that look like ratios, in the same way we do
	symbols that look like floats or integers. Prevents confusion in
	the Lisp reader.
	* lread.c (isratio_string): Make this available even on builds
	without HAVE_RATIO, so we can print symbols that look like ratios
	with the appropriate escapes.
	* lisp.h:
	Make isratio_string available even if HAVE_RATIO is not defined.

2010-07-24  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (PARSE_KEYWORDS):
	Always accept a nil :allow-other-keys keyword argument, as
	described in the ALLOW-OTHER-KEYS-NIL Common Lisp issue writeup,
	and as necessary for Paul Dietz' tests for #'reduce.

	* fns.c (mapping_interaction_error): New.
	(Freduce): Call mapping_interaction_error when KEY or FUNCTION
	have modified a string SEQUENCE such that the byte length of the
	string has changed, or such that the current cursor pointer
	doesn't point to the beginning of a character.
	Cf. the MAPPING-DESTRUCTIVE-INTERACTION Common Lisp issue
	writeup.
	When traversing a list, GCPRO the part of it we still have to
	traverse, to avoid any crashes if FUNCTION or KEY amputate it
	behind us and force a garbage collection.

2010-06-05  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* gc.c:
	* mc-alloc.c:
	Document the new allocator and the new garbage collector.

2010-06-13  Stephen J. Turnbull  <stephen@xemacs.org>

	* elhash.c:
	* emacs.c:
	* glade.c:
	* gtk-glue.c:
	* gtk-xemacs.c:
	* gtk-xemacs.h:
	* m/alpha.h:
	* number-gmp.c:
	* number-gmp.h:
	* number-mp.c:
	* number-mp.h:
	* number.c:
	* number.h:
	* s/hpux11-shr.h:
	* s/mach-bsd4-3.h:
	* s/sco7.h:
	* symsinit.h:
	* ui-byhand.c:
	* ui-gtk.c:
	* ui-gtk.h:
	Correct FSF address in permission notice.

2010-06-08  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (Fpurecopy):
	Moved to obsolete.el as an alias for #'identity, marked obsolete.

2010-06-06  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Freduce):
	Move this here from cl-seq.el, avoiding the need to cons.  This
	has been tested using Paul Dietz' test suite, and everything
	applicable passes, with the exception that the
	ALLOW-OTHER-KEYS-NIL Common Lisp issue (functions with &key must
	*always* accept :allow-other-keys nil) hasn't been implemented.

2010-06-02  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (vars_of_lread):
	* emacs.c:
	(shut_down_emacs, vars_of_emacs, complex_vars_of_emacs):
	* device-x.c (get_device_from_display)
	(have_xemacs_resources_in_xrdb):
	* device-gtk.c (Fgtk_init):
	* config.h.in:
	Remove all checks for InfoDock.

2010-06-21  Jeff Sparkes  <jsparkes@gmail.com>

	* console-x-impl.h (DEVICE_X_XFTDRAW): Define, instead of
	FRAME_X_FTDRAW.
	(struct x_device): Add XftDraw field.
	(struct x_frame): Remove XftDraw field.

	* device-x.c (x_delete_device): Free XftDraw here.

	* frame-x.c (x_delete_frame): Remove freeing of XftDraw.

	* redisplay-xlike-inc.c (XLIKE_output_string): Use
	DEVICE_X_XFTDRAW instead of FRAME_X_XFTDRAW when lazily creating
	XftDraw structure.

2010-06-01  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Fsubstring_no_properties):
	Add this function, API taken from GNU, though ours drops all
	extent data, not just properties.

2010-06-01  Aidan Kehoe  <kehoea@parhasard.net>

	* glyphs.c (syms_of_glyphs):
	Remove the definition of Q_data from this file, now it's in
	general-slots.h. Problem picked up by a C++ build.

2010-05-31  Aidan Kehoe  <kehoea@parhasard.net>

	* rangetab.c (print_range_table, rangetab_instantiate)
	(structure_type_create_rangetab):
	* chartab.c (print_char_table, chartab_instantiate)
	(structure_type_create_chartab):
	* faces.c (syms_of_faces, print_face, face_validate):

	Move structure syntax in these files to using keywords by default,
	as is done in Common Lisp and GNU Emacs, accepting for the moment
	the older non-keywords syntax too.

	* glyphs.h: No need to have Q_data here.
	* general-slots.h: Add Q_data, Q_type here.

	* config.h.in (NEED_TO_HANDLE_21_4_CODE):
	New #define, always 1 for the moment, replacing the previous
	never-really-used NO_NEED_TO_HANDLE_21_4_CODE, and avoiding
	confusing syntax.

	* eval.c (Ffuncall): Wrap the hack that allows #'throw to be
	funcalled in #ifdef NEED_TO_HANDLE_21_4_CODE.
	* elhash.c (syms_of_elhash): Move Q_type, Q_data to
	general-slots.h. Change to NEED_TO_HANDLE_21_4_CODE throughout
	this file.

2010-05-29  Aidan Kehoe  <kehoea@parhasard.net>

	* fontcolor-msw.c (mswindows_X_color_map): Sort this, case
	insensitively, by the color name.
	(colormap_t_compare): New function.
	(mswindows_string_to_color): When using symbolic color names, use
	binary search, not linear search.
	(mswindows_color_list): No need to start from the beginning of the
	array and call #'nreverse to get the colors in an intuitive order,
	just build the list starting from the end of the array.

2010-05-28  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* window.c (compute_window_usage): Unbreak `show-memory-usage' for
	NEW_GC.

2010-05-28  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* mc-alloc.c:
	* mc-alloc.c (visit_all_used_page_headers):
	* mc-alloc.c (install_page_in_used_list):
	* mc-alloc.c (mc_alloc_1):
	* mc-alloc.c (init_mc_allocator):
	* mc-alloc.c (Fmc_alloc_memory_usage): Allocate lrecord arrays in
	own size class.

2010-05-24  Mike Sperber  <mike@xemacs.org>

	* lread.c (read1): Accept #B<binary>, #O<octal>, and #X<hex>, just
	like GNU Emacs.

2010-05-17  Jeff Sparkes  <jsparkes@gmail.com>

	* buffer.c (complex_vars_of_buffer):
	Add buffer local variables buffer-display-count and
	buffer-display-time.
	(common_init_complex_vars_of_buffer):
	Initialize them here.

	* bufslots.h: Add slots for buffer-display-count and buffer-display-time.

	* window.c (Fset_window_buffer): Update buffer-display-count and
	buffer-display-time whenever a buffer is displayed.

2010-05-16  Aidan Kehoe  <kehoea@parhasard.net>

	Move `default-file-system-ignore-case' to C; pay attention to it
	in creating the directory hash tables for #'locate-file. Fix a bug
	where #'eq was specified when creating directory hash tables in
	dired.c.

	* config.h.in (DEFAULT_FILE_SYSTEM_IGNORE_CASE): This is 1 on
	Darwin.
	* dired.c (make_directory_hash_table): If
	#'file-system-ignore-case-p gives non-nil for a directory, created
	the associated hash table with #'equalp as its test. Never use
	#'eq as a directory hash table test.
	* fileio.c (vars_of_fileio):
	Move `default-file-system-ignore-case' here, so it can be a
	constant boolean reflecting a compile-time #define.
	* lisp.h: Update the declaration of make_directory_hash_table;
	remove the declaration of wasteful_word_to_lisp, which was
	#ifdef'd out.
	* lread.c (Flocate_file): Take out a debugging statement from
	this function.
	(locate_file_refresh_hashing): Call make_directory_hash_table with
	a Lisp string, not an Ibyte pointer.
	(vars_of_lread): If DEFAULT_FILE_SYSTEM_IGNORE_CASE is defined,
	use #'equalp as the hash table test for locate-file-hash-table,
	not #'equal.
	* s/win32-common.h (DEFAULT_FILE_SYSTEM_IGNORE_CASE):
	Case should normally be ignored in file names on Win32.

2010-04-29  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Fquote, Ffunction): Error on more than one argument to
	these special operators.
	* data.c (syms_of_data): Move Qquote to general-slots.h from this
	file, now it's used in eval.c

2010-04-17  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (Fdocumentation):
	If we have a zero length doc string in DOC, as may happen for
	undocumented compiled function objects which nonetheless have file
	information stored, return nil.
	(Fsnarf_documentation):
	DOC info existing for compiled functions without docstrings is
	perfectly legitimate, now the file is also used to store file names.
	* bytecode.c (set_compiled_function_documentation):
	Allow this function to set the documentation successfully for
	compiled function objects that don't currently have documentation;
	most relevant for functions without docstrings which have file
	information stored in DOC.

2010-04-15  Ben Wing  <ben@xemacs.org>

	* device-x.c (x_init_device):
	Don't declare something const if we're going to modify it.
	Clean up code to follow GNU coding standards.

2010-04-12  Ben Wing  <ben@xemacs.org>

	* specifier.c (specifier_memory_usage):
	Disable specifier memory-usage stats for now.  Sometimes they can
	end up with circularities in them and I'm not sure exactly whats
	going on to produce them.

2010-04-12  Ben Wing  <ben@xemacs.org>

	* charset.h:
	* lisp.h:
	* lisp.h (XREALLOC_ARRAY):
	* text.h:
	Port charset_codepoint_to_itext(), buffer_itext_to_charset_codepoint(),
	EXTBYTE_STRING_TO_ALLOCA(), `enum converr' from ben-unicode-internal,
	for use with the mule-wnnfns.c changes.

	* mule-wnnfns.c:
	* mule-wnnfns.c (Fwnn_open):
	* mule-wnnfns.c (Fwnn_dict_add):
	* mule-wnnfns.c (Fwnn_dict_list):
	* mule-wnnfns.c (Fwnn_get_zenkouho):
	* mule-wnnfns.c (Fwnn_inspect):
	* mule-wnnfns.c (Fwnn_bunsetu_kanji):
	* mule-wnnfns.c (Fwnn_bunsetu_yomi):
	* mule-wnnfns.c (Fwnn_word_info):
	* mule-wnnfns.c (Fwnn_dict_search):
	* mule-wnnfns.c (Fwnn_get_msg):
	* mule-wnnfns.c (Fwnn_fuzokugo_set):
	* mule-wnnfns.c (Fwnn_fuzokugo_get):
	* mule-wnnfns.c (Fwnn_hinsi_list):
	* mule-wnnfns.c (Fwnn_fisys_dict_add):
	* mule-wnnfns.c (Fwnn_fiusr_dict_add):
	* mule-wnnfns.c (Fwnn_notrans_dict_add):
	* mule-wnnfns.c (Fwnn_bmodify_dict_add):
	* mule-wnnfns.c (reinit_vars_of_mule_wnn):
	* mule-wnnfns.c (vars_of_mule_wnn):
	* mule-wnnfns.c (w2m):
	* mule-wnnfns.c (m2w):
	* mule-wnnfns.c (yes_or_no):
	* mule-wnnfns.c (puts2):
	* mule-wnnfns.c (check_wnn_server_type):
	Mule-ize, borrowed from ben-unicode-internal.

2010-04-09  Ben Wing  <ben@xemacs.org>

	* fileio.c (check_writable):
	* fileio.c (Fdo_auto_save):
	* redisplay-xlike-inc.c (separate_textual_runs_nomule):
	* redisplay-xlike-inc.c (separate_textual_runs_xft_nomule):
	* redisplay-xlike-inc.c (separate_textual_runs_xft_mule):
	* redisplay-xlike-inc.c (separate_textual_runs_mule):
	* redisplay-xlike-inc.c (XLIKE_output_string):
	* redisplay-xlike-inc.c (XLIKE_output_vertical_divider):
	* redisplay.c (create_text_block):
	* redisplay.c (regenerate_window):
	* redisplay.c (redisplay_window):
	* redisplay.c (redisplay_device):
	* redisplay.c (window_line_number):
	* redisplay.c (point_would_be_visible):
	* redisplay.c (compute_display_line_dynarr_usage):
	* specifier.c (prune_specifiers):
	* specifier.c (finalize_specifier):
	* specifier.c (make_magic_specifier):
	* specifier.c (charset_matches_specifier_tag_set_p):
	* specifier.c (Fdefine_specifier_tag):
	* specifier.c (setup_device_initial_specifier_tags):
	* specifier.c (bodily_specifier):
	* specifier.c (add_spec_to_ghost_specifier):
	* specifier.c (remove_ghost_specifier):
	* specifier.c (set_specifier_fallback):
	* specifier.c (specifier_instance_from_inst_list):
	* specifier.c (set_specifier_caching):
	Fix coding style to correspond to GNU standard.

2010-04-09  Didier Verna  <didier@xemacs.org>

	* fontcolor-xlike-inc.c (DEBUG_FONTS2):
	* fontcolor-xlike-inc.c (DEBUG_FONTS3):
	* fontcolor-xlike-inc.c (DEBUG_FONTS4):
	* fontcolor-xlike-inc.c (DEBUG_FONTS_LISP1):
	* fontcolor-xlike-inc.c (DEBUG_FONTS_LISP2):
	* fontcolor-xlike-inc.c (DEBUG_FONTS_LISP3):
	* fontcolor-xlike-inc.c (DEBUG_FONTS_LISP4): Conditionalize
	definitions on DEBUG_XEMACS, provide empty definitions otherwise.

2010-04-06  Ben Wing  <ben@xemacs.org>

	* elhash.c (Feq_hash):
	Cast to EMACS_INT to fix warning.

	* elhash.c (internal_hash):
	* elhash.c (Feql_hash):
	Fix spacing before parens.

	* general-slots.h:
	* xemacs.def.in.in:
	Export Qfixnump to fix eldap.c link error.

2010-04-06  Aidan Kehoe  <kehoea@parhasard.net>

	* toolbar-msw.c (allocate_toolbar_item_id)
	(mswindows_output_toolbar):
	* menubar-msw.c (allocate_menu_item_id, checksum_menu_item):
	* glyphs-msw.c (mswindows_image_instance_hash):
	* fontcolor-msw.c (mswindows_color_instance_equal):
	* device-msw.c (hash_devmode):
	Call internal_hash() with the correct number of arguments, declare
	various hash methods with the correct number of arguments, fixing
	the Win32 build. Thank you Vin.

2010-04-06  Aidan Kehoe  <kehoea@parhasard.net>

	* frame.c (print_frame):
	When printing a frame, print its device, making the output of
	#'frame-list a lot more helpful if using gnuclient.

2010-04-04  Ben Wing  <ben@xemacs.org>

	* fontcolor-xlike-inc.c (mule_to_fc_charset):
	* fontcolor-xlike-inc.c (struct charset_reporter):
	Don't try to kludgily look directly into the Unicode tables; use
	the API provided.

2010-04-04  Ben Wing  <ben@xemacs.org>

	* font-mgr.c:
	* font-mgr.c (fc_standard_properties):
	* font-mgr.c (Ffc_pattern_p):
	* font-mgr.c (Ffc_pattern_create):
	* font-mgr.c (Ffc_name_parse):
	* font-mgr.c (Ffc_name_unparse):
	* font-mgr.c (Ffc_pattern_duplicate):
	* font-mgr.c (Ffc_pattern_add):
	* font-mgr.c (Ffc_pattern_del):
	* font-mgr.c (Ffc_pattern_get):
	* font-mgr.c (fc_config_create_using):
	* font-mgr.c (fc_strlist_to_lisp_using):
	* font-mgr.c (fontset_to_list):
	* font-mgr.c (Ffc_config_p):
	* font-mgr.c (Ffc_config_create):
	* font-mgr.c (Ffc_config_destroy):
	* font-mgr.c (Ffc_config_up_to_date):
	* font-mgr.c (Ffc_config_build_fonts):
	* font-mgr.c (Ffc_config_get_config_dirs):
	* font-mgr.c (Ffc_config_get_font_dirs):
	* font-mgr.c (Ffc_config_get_config_files):
	* font-mgr.c (Ffc_config_get_cache):
	* font-mgr.c (Ffc_config_get_fonts):
	* font-mgr.c (Ffc_config_set_current):
	* font-mgr.c (Ffc_config_get_blanks):
	* font-mgr.c (Ffc_config_get_rescan_interval):
	* font-mgr.c (Ffc_config_set_rescan_interval):
	* font-mgr.c (Ffc_config_app_font_add_file):
	* font-mgr.c (Ffc_config_app_font_add_dir):
	* font-mgr.c (Ffc_config_app_font_clear):
	* font-mgr.c (Ffc_init_load_config):
	* font-mgr.c (Ffc_init_load_config_and_fonts):
	* font-mgr.c (Ffc_config_get_current):
	* font-mgr.c (size):
	* font-mgr.c (Ffc_font_render_prepare):
	* font-mgr.c (Ffc_font_match):
	* font-mgr.c (Ffc_font_sort):
	* font-mgr.c (Ffc_init):
	* font-mgr.c (Ffc_get_version):
	* font-mgr.c (Ffc_init_reinitialize):
	* font-mgr.c (Ffc_init_bring_up_to_date):
	* font-mgr.c (Fxlfd_font_name_p):
	* font-mgr.c (make_xlfd_font_regexp):
	* font-mgr.c (syms_of_font_mgr):
	* font-mgr.c (vars_of_font_mgr):
	* font-mgr.c (complex_vars_of_font_mgr):
	Fix the code to conform to GNU style standards.
	Rename xft-debug-level to debug-xft.

	* fontcolor-x.c:
	* fontcolor-x.c (vars_of_fontcolor_x):
	Rename debug-x-objects to debug-x-fonts.

	* fontcolor-xlike-inc.c:
	* fontcolor-xlike-inc.c (DEBUG_FONTS1):
	* fontcolor-xlike-inc.c (DEBUG_FONTS2):
	* fontcolor-xlike-inc.c (DEBUG_FONTS3):
	* fontcolor-xlike-inc.c (DEBUG_FONTS4):
	* fontcolor-xlike-inc.c (DEBUG_FONTS_LISP1):
	* fontcolor-xlike-inc.c (count_hyphens):
	* fontcolor-xlike-inc.c (XFUN):
	* fontcolor-xlike-inc.c (xlistfonts_checking_charset):
	* fontcolor-xlike-inc.c (xft_find_charset_font):
	Misc. code fixes, mostly cosmetic.  Get rid of some warnings.
	Fix the code to conform to GNU style standards.

	* lisp.h:
	* print.c:
	* print.c (debug_out_lisp):
	New function for doing printf-like formatting involving Lisp objects
	and outputting to the debug output.

2010-04-03  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Ffill):
	Be much more careful about resizing a string argument, update
	pointers to within the string data that may have been relocated
	with the string resize. Fixes a test hang reported by Vin Shelton;
	thanks, Vin.

2010-04-05  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.h:
	* elhash.c (struct Hash_Table_Test, lisp_object_eql_equal)
	(lisp_object_eql_hash, lisp_object_equal_equal)
	(lisp_object_equal_hash, lisp_object_equalp_hash)
	(lisp_object_equalp_equal, lisp_object_general_hash)
	(lisp_object_general_equal, Feq_hash, Feql_hash, Fequal_hash)
	(Fequalp_hash, define_hash_table_test, Fdefine_hash_table_test)
	(init_elhash_once_early, mark_hash_table_tests, string_equalp_hash):
	* glyphs.c (vars_of_glyphs):
	Add a new hash table test in C, #'equalp.
	Make it possible to specify new hash table tests with functions
	define_hash_table_test, #'define-hash-table-test.
	Use define_hash_table_test() in glyphs.c.
	Expose the hash functions (besides that used for #'equal) to Lisp,
	for people writing functions to be used with #'define-hash-table-test.
	Call define_hash_table_test() very early in temacs, to create the
	built-in hash table tests.

	* ui-gtk.c (emacs_gtk_boxed_hash):
	* specifier.h (struct specifier_methods):
	* specifier.c (specifier_hash):
	* rangetab.c (range_table_entry_hash, range_table_hash):
	* number.c (bignum_hash, ratio_hash, bigfloat_hash):
	* marker.c (marker_hash):
	* lrecord.h (struct lrecord_implementation):
	* keymap.c (keymap_hash):
	* gui.c (gui_item_id_hash, gui_item_hash):
	* glyphs.c (image_instance_hash, glyph_hash):
	* glyphs-x.c (x_image_instance_hash):
	* glyphs-msw.c (mswindows_image_instance_hash):
	* glyphs-gtk.c (gtk_image_instance_hash):
	* frame-msw.c (mswindows_set_title_from_ibyte):
	* fontcolor.c (color_instance_hash, font_instance_hash):
	* fontcolor-x.c (x_color_instance_hash):
	* fontcolor-tty.c (tty_color_instance_hash):
	* fontcolor-msw.c (mswindows_color_instance_hash):
	* fontcolor-gtk.c (gtk_color_instance_hash):
	* fns.c (bit_vector_hash):
	* floatfns.c (float_hash):
	* faces.c (face_hash):
	* extents.c (extent_hash):
	* events.c (event_hash):
	* data.c (weak_list_hash, weak_box_hash):
	* chartab.c (char_table_entry_hash, char_table_hash):
	* bytecode.c (compiled_function_hash):
	* alloc.c (vector_hash):
	Change the various object hash methods to take a new EQUALP
	parameter, hashing appropriately for #'equalp if it is true.

2010-04-02  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (FsortX, Ffill):
	Don't try to be clever with the ascii_begin string header slot in
	these functions, just call init_string_ascii_begin().

2010-04-02  Aidan Kehoe  <kehoea@parhasard.net>

	Avoid build failure, Apple's g++-4.0.1, Mac OS 10.4.
	* sysdll.c (search_linked_libs, dll_variable): Correct some casts
	for the C++ build.
	* regex.h (END_C_DECLS, BEGIN_C_DECLS): Wrap function declarations
	in extern "C" { ... } on the C++ build.
	* mule-ccl.c (ccl_driver): Initialise i, silencing a warning on
	a C++ build.
	* keymap.c (key_desc_list_to_event):
	Work around a bug in Apple's g++-4.0.1.

2010-03-31  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (STRING_DATA_TO_OBJECT_ARRAY)
	(BIT_VECTOR_TO_OBJECT_ARRAY, c_merge_predicate_key)
	(c_merge_predicate_nokey, list_merge, array_merge)
	(list_array_merge_into_list, list_list_merge_into_array)
	(list_array_merge_into_array, CHECK_KEY_ARGUMENT, Fmerge)
	(list_sort, array_sort, FsortX):
	Move #'sort*, #'fill, #'merge from cl-seq.el to C, extending the
	implementations of Fsort, Ffillarray, and merge() to do so.

	* keymap.c (keymap_submaps, map_keymap_sort_predicate)
	(describe_map_sort_predicate):
	Change the calling semantics of the C sort predicates to return a
	non-nil Lisp object if the first argument is less than the second,
	rather than C integers.

	* fontcolor-msw.c (sort_font_list_function):
	* fileio.c (build_annotations):
	* dired.c (Fdirectory_files):
	* abbrev.c (Finsert_abbrev_table_description):
	Call list_sort instead of Fsort, list_merge instead of merge() in
	these functions.

2010-03-29  Ben Wing  <ben@xemacs.org>

	* lisp.h (PRIVATE_UNVERIFIED_LIST_LOOP_7):
	Need to cast 0 to void (so both parts of conditional expression
	have void type) to fix C++ compilation.

2010-03-29  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (lisp_object_storage_size):
	* alloc.c (Fobject_memory_usage):
	* alloc.c (lisp_object_memory_usage_full):
	Don't crash if passed a non-record object (int or char).

	* alloc.c (tree_memory_usage_1):
	* lrecord.h:
	New function tree_memory_usage() to return the memory usage of
	a tree of conses and/or vectors.

	* lisp.h:
	* lisp.h (PRIVATE_UNVERIFIED_LIST_LOOP_7):
	Add SAFE_LIST_LOOP_* functions for looping over a list not known
	to be correct or non-circular, but without signalling an error --
	instead, just stop enumerating when an error detected.

	* emacs.c (main_1):
	* specifier.c:
	* specifier.c (specifier_memory_usage):
	* specifier.c (vars_of_specifier):
	* symsinit.h:
	Add memory usage info for specifiers.

2010-03-28  Ben Wing  <ben@xemacs.org>

	* chartab.c (put_char_table):
	* text.h (rep_bytes_by_first_byte):
	* text.h (valid_ibyteptr_p):
	Fix compile errors/warnings when not --with-mule.

	* font-mgr.c (fc_config_create_using):
	* fontcolor-xlike-inc.c (XFUN):
	Fix compile warnings when --with-xft.

2010-03-29  Ben Wing  <ben@xemacs.org>

	Fix bugs, make map-char-table smarter.

	* chartab.c:
	* chartab.c (create_new_chartab_table):
	* chartab.c (put_chartab_table):
	* chartab.c (put_char_table):
	Setting a new range that partially overlapped an existing range
	didn't work.
	
	* chartab.c (struct map_chartab_range):
	* chartab.c (map_chartab_table):
	* chartab.c (map_char_table):
	Group together adjacent ranges.  This should significantly reduce
	the number of times the mapping function is called and hide the
	page-table implementation.
	
	* chartab.c (print_char_table):
	* chartab.c (print_category_table):
	When printing char tables and category tables, print the UID.
	
	* chartab.c (Fcopy_category_table):
	`copy-category-table' was broken.

	* chartab.c (complex_vars_of_chartab):
	Create a category table using `make-category-table', not
	`copy-category-table'.
	
	* text.c (old_mule_round_up_to_valid_ichar):
	* text.c (old_mule_round_down_to_valid_ichar):
	Fix bug preventing this from working properly.

2010-03-29  Ben Wing  <ben@xemacs.org>

	* unicode.c (ensure_to_unicode_holds_range):
	If memory is dumped, allocate a new block and copy the existing one,
	rather than trying to realloc.

2010-03-29  Ben Wing  <ben@xemacs.org>

	* abbrev.c:
	* abbrev.c (describe_abbrev):
	* alloc.c:
	* alloc.c (common_init_alloc_early):
	* callint.c (Fprefix_numeric_value):
	* callint.c (syms_of_callint):
	* console.c (common_init_complex_vars_of_console):
	* data.c (Fdiv):
	* data.c (Fquo):
	* event-stream.c (vars_of_event_stream):
	* fileio.c (auto_save_error):
	* fileio.c (Fdo_auto_save):
	* fns.c:
	* fns.c (bump_string_modiff):
	* keymap.c (where_is_recursive_mapper):
	* lisp.h (ONEP):
	* lisp-disunion.h:
	* lisp-disunion.h (INT_PLUS1):
	* lisp-disunion.h (Qone):
	* lisp-union.h:
	* lisp-union.h (INT_MINUS):
	* macros.c (Fstart_kbd_macro):
	* marker.c (init_buffer_markers):
	* marker.c (uninit_buffer_markers):
	* minibuf.c (read_minibuffer_internal_unwind):
	* number.c (Fdenominator):
	* number.c (bigfloat_print):
	* print.c (print_symbol):
	* process-unix.c (get_internet_address):
	* scrollbar.c (Fscrollbar_line_up):
	* scrollbar.c (Fscrollbar_line_down):
	* symbols.c:
	* symbols.c (Fuser_variable_p):
	* syntax.c (reset_buffer_syntax_cache_range):
	* sysdep.c (init_system_name):
	* tests.c (Ftest_hash_tables):
	* unicode.c (allocate_jit_ucs_charset):
	* window.c (temp_output_buffer_show):
	* window.c (specifier_vars_of_window):
	Create Qone, similar to Qzero, along with ONEP.  Use it.

	* alloc.c (clone_bit_vector):
	* lisp.h:
	New function.
	
	* casetab.c (case_table_char):
	* casetab.c (compute_canon_mapper):
	* casetab.c (initialize_identity_mapper):
	* casetab.c (compute_up_or_eqv_mapper):
	* casetab.h:
	* chartab.c:
	* chartab.c (check_chartab_invariants):
	* chartab.c (clone_chartab_table):
	* chartab.c (create_new_chartab_table):
	* chartab.c (free_chartab_table):
	* chartab.c (compute_chartab_table_size_1):
	* chartab.c (compute_chartab_table_size):
	* chartab.c (compute_char_table_usage):
	* chartab.c (char_table_memory_usage):
	* chartab.c (put_chartab_table):
	* chartab.c (put_char_table):
	* chartab.c (map_chartab_table):
	* chartab.c (check_if_blank):
	* chartab.c (chartab_tables_equal):
	* chartab.c (char_table_equal):
	* chartab.c (hash_raw_chartab_val):
	* chartab.c (char_table_hash):
	* chartab.c (FROB1):
	* chartab.c (init_chartab_tables):
	* chartab.c (free_chartab_tables):
	* chartab.c (print_table_entry):
	* chartab.c (print_char_table):
	* chartab.c (Fmake_char_table):
	* chartab.c (Fcopy_char_table):
	* chartab.c (Fget_char_table):
	* chartab.c (put_char_table_range):
	* chartab.c (Fput_char_table):
	* chartab.c (map_char_table):
	* chartab.c (slow_map_char_table_fun):
	* chartab.c (chartab_data_validate):
	* chartab.c (chartab_instantiate):
	* chartab.c (category_table_equal):
	* chartab.c (check_char_in_category):
	* chartab.c (slow_map_category_table_fun):
	* chartab.c (syms_of_chartab):
	* chartab.c (vars_of_chartab):
	* chartab.c (structure_type_create_chartab):
	* chartab.h:
	* chartab.h (SUBTAB_ARRAY_FROM_SUBTAB):
	* chartab.h (ALLOCATE_LEVEL_1_CATEGORY_SUBTAB):
	* chartab.h (GET_CHAR_BYTES):
	* chartab.h (struct Lisp_Char_Table):
	* chartab.h (enum chartab_range_type):
	* chartab.h (CHAR_TABLES_PER_CATEGORY_TABLE):
	* chartab.h (DESIGNATOR_TO_CHAR_TABLE):
	* cmds.c (internal_self_insert):
	* cmds.c (vars_of_cmds):
	* editfns.c (Ftranslate_region):
	* glyphs.c (display_table_entry):
	* lrecord.h (enum lrecord_type):
	* syntax.c (syntax_match):
	* syntax.c (copy_to_mirrortab):
	* syntax.c (copy_if_not_already_present):
	* syntax.c (update_just_this_syntax_table):
	* syntax.h:
	* text.c:
	* text.c (old_mule_round_up_to_valid_ichar):
	* text.c (old_mule_round_down_to_valid_ichar):
	* text.c (Fchar_octet):
	Redo char tables and category tables again:

	(1) In a category table, store one char table per bit.  These char
	tables are category char tables, and at level 1 instead of storing
	a category subtable they store a size-256 bit vector.
	Accordingly, the `category-subtable' object has been removed. All
	the junk that involved multiplexing integral and Lisp_Object
	values into a void * pointer has been removed.  Now we're back to
	always just using Lisp_Object pointers.

	Accordingly, we rename/merge functions:

	get_char_table_lisp merged into get_char_table
	get_char_table_lisp_raw merged into get_char_table_raw
	get_char_table_lisp_1 -> get_char_table_1

	(2) We now efficiently store ranges of characters, not just single
	characters.  Essentially, at any level of the char tables, we can
	store a non-table Lisp object, indicating that all the characters
	spanned by that entry have the value of the given object.  Accordingly,
	put_char_table() now takes a range, and the function passed to
	map_char_table() is given a range.  Various places where
	map_char_table() is called have been changed.

	This also means that there is no more need for blank tables of the
	sort that still exist in the Unicode tables.
	
	IMPORTANT: The ranges passed in to put_char_table() may encompass
	non-characters, especially in old-Mule where there are lots of gaps
	in the representation of characters.  put_char_table() simply stores
	the ranges as-is, and does not try to avoid storing values for
	non-characters.  This doesn't affect get_char_table(), but it
	definitely does affect map_char_table().  To deal with this, we
	create new functions round_up_to_valid_ichar() and
	round_down_to_valid_ichar() that are used to take raw ranges in
	map_char_table() and coerce them into possibly smaller ranges where
	the characters on both ends are valid characters.  It may still be
	the case that characters within the range are invalid.

	This also means that if you copy a table in Lisp using
	`map-char-table', the new table may not be `equal' to the first table
	-- essentially, the "junk" areas where non-characters lie may be
	set in the original table but unset in the new table, and
	char_table_equal() isn't smart enough to ignore those "junk" areas.
	Possibly this can be fixed by making map_char_table() expand its
	ranges to the maximum extent.

	* text.h:
	* unicode.c (decode_utf_8):
	* unicode.c (unicode_decode):

	Rename the following functions and make them work correctly when
	passed any Unicode codepoint:

	valid_utf_16_first_surrogate() -> valid_unicode_leading_surrogate()
	valid_utf_16_last_surrogate() -> valid_unicode_trailing_surrogate()
	valid_utf_16_surrogate() -> valid_unicode_surrogate()

	Change the definition of valid_unicode_codepoint_p() to reject
	codepoints in the surrogate area.  This also affects valid_ichar_p().
	Also make valid_ichar_p() reject characters that don't fit into
	30 bits, which is as much as we can store.  Create ICHAR_MAX to
	represent the maximum Ichar that fits in 30 bits.
	Use the newer definition of valid_unicode_codepoint_p() in
	decode_utf_8() rather than manually duplicating it.

2010-03-25  Ben Wing  <ben@xemacs.org>

	* chartab.c: Expand comment at top about recent change involving
	category tables.
	* unicode.c: #ifdnef UNICODE_INTERNAL around a label to avoid a
	"label" unused" warning.

2010-03-25  Ben Wing  <ben@xemacs.org>

	* charset.h:
	* charset.h (to_unicode_base):
	* charset.h (ASSERT_VALID_CHARSET_CODEPOINT_OR_ERROR):
	* unicode.c:
	* unicode.c (needed_sizeof_to_unicode_base):
	* unicode.c (init_blank_unicode_tables):
	* unicode.c (init_charset_unicode_tables):
	* unicode.c (free_from_unicode_table):
	* unicode.c (free_to_unicode_table):
	* unicode.c (compute_from_unicode_table_size_1):
	* unicode.c (compute_to_unicode_table_size_1):
	* unicode.c (assert_not_any_blank_table):
	* unicode.c (sledgehammer_check_from_table):
	* unicode.c (sledgehammer_check_to_table):
	* unicode.c (sledgehammer_check_unicode_tables):
	* unicode.c (ensure_to_unicode_holds_range):
	* unicode.c (set_unicode_conversion_char_to_unicode):
	At the lowest level of the charset to-Unicode tables, store a
	`struct to_unicode_base *' of variable size, instead of a fixed
	size-256 array.  Since large charsets are usually of size 94x94,
	the lowest levels will consist of 94-element arrays instead of
	256-element arrays, saving more than half of the memory needed.
	This makes the memory usage for these tables comparable to what
	it was when charsets were not allowed to be larger than 96x96.

	Also, when initializing the to-Unicode tables, start with a
	blank table at level-2 rather than a 256-element table, and
	change functions that process the to-Unicode tables so they
	can handle this.  Change the functions that handle from-Unicode
	tables similarly, although we haven't yet made the corresponding
	change to the from-Unicode tables themselves.

2010-03-23  Ben Wing  <ben@xemacs.org>

	* alloc.c (free_normal_lisp_object): Fix unused var warning.
	
	* array.c:
	* array.c (Stynarr_insert_many_1):
	* array.h:
	* array.h (Stynarr_declare):
	* array.h (struct):
	* array.h (Stynarr_init):
	* array.h (Stynarr_free):
	* array.h (Stynarr_add):
	* faces.h:
	* faces.h (struct):
	* faces.h (struct face_cachel):
	* window.c:
	Stynarr code and especially the hacked-up way of describing stynarrs
	for KKCC had various problems that led to crashes.  Fix it by adding
	a nels_static tracking how many static elements have been created,
	and make Stynarr_declare() parallel to Dynarr_declare(), add add
	XD_STYNARR_DESC parallel to XD_DYNARR_DESC.
	
	Use new stynarr code to declare various foo-stynarr objects and
	associated descriptions; use both in face_cachel definition
	(faces.h) and description (window.c).
	
	* file-coding.c:
	* file-coding.c (chain_finalize_coding_stream_1):
	* file-coding.c (chain_finalize):
	When xfree()ing a value, set the value to 0 afterwards so KKCC
	doesn't end up trying to mark 0xDEADBEEF and crashing.
	
	* file-coding.c (detection_state_description_0): Deleted.
	* file-coding.c (mark_detection_state):
	`struct detection_state *' is actually a Lisp object, so declare it
	that way in the description or KKCC will crash.
	
	* file-coding.c (coding_system_type_create):
	* file-coding.h:
	* file-coding.h (INITIALIZE_DETECTOR_DESCRIPTION):
	* file-coding.h (INITIALIZE_DETECTOR_WITH_DESCRIPTION):
	* mule-coding.c (reinit_coding_system_type_create_mule_coding):
	Don't dump coding_detector_description_lines_count; instead, we
	need to reinitialize the description of a `struct detection_state'
	after pdump load because it's dynamically initialized; else we
	will get a KKCC crash due to uninitialized description.
	* gc.c (kkcc_backtrace_1):
	Stop backtracing when we reach the bottom; else, we crash.
	
	* mule-coding.c (iso2022_finalize_detection_state):
	When xfreeing a value, set the value to 0 afterwards so KKCC
	doesn't end up trying to mark 0xDEADBEEF and crashing.
	
2010-03-22  Ben Wing  <ben@xemacs.org>

	* casetab.c (case_table_char):
	* casetab.c (compute_canon_mapper):
	* casetab.c (initialize_identity_mapper):
	* casetab.c (compute_up_or_eqv_mapper):
	* casetab.h:
	* chartab.c:
	* chartab.c (init_blank_chartab_tables_1):
	* chartab.c (init_blank_chartab_tables):
	* chartab.c (copy_chartab_table):
	* chartab.c (create_new_chartab_table):
	* chartab.c (free_chartab_table):
	* chartab.c (compute_chartab_table_size_1):
	* chartab.c (compute_chartab_table_size):
	* chartab.c (compute_char_table_usage):
	* chartab.c (put_char_table):
	* chartab.c (map_chartab_table):
	* chartab.c (check_if_blank):
	* chartab.c (chartab_tables_equal):
	* chartab.c (char_table_equal):
	* chartab.c (hash_raw_chartab_val):
	* chartab.c (char_table_hash):
	* chartab.c (FROB1):
	* chartab.c (init_chartab_tables):
	* chartab.c (free_chartab_tables):
	* chartab.c (struct ptemap):
	* chartab.c (print_table_entry):
	* chartab.c (print_char_table):
	* chartab.c (check_non_category_char_table):
	* chartab.c (make_char_table):
	* chartab.c (Fmake_char_table):
	* chartab.c (Fcopy_char_table):
	* chartab.c (Fchar_table_default):
	* chartab.c (Fget_char_table):
	* chartab.c (check_valid_char_table_value):
	* chartab.c (put_char_table_range):
	* chartab.c (Fput_char_table):
	* chartab.c (Fremove_char_table):
	* chartab.c (map_char_table):
	* chartab.c (slow_map_char_table_fun):
	* chartab.c (Fmap_char_table):
	* chartab.c (init_blank_category_chartab_tables):
	* chartab.c (category_table_equal):
	* chartab.c (category_table_hash):
	* chartab.c (mark_category_table):
	* chartab.c (print_category_table):
	* chartab.c (Fmake_category_table):
	* chartab.c (check_category_table):
	* chartab.c (check_char_in_category):
	* chartab.c (Fcheck_category_at):
	* chartab.c (Fchar_in_category_p):
	* chartab.c (Fcopy_category_table):
	* chartab.c (struct slow_map_category_table_arg):
	* chartab.c (slow_map_category_table_fun):
	* chartab.c (Fmap_category_table):
	* chartab.c (word_boundary_p):
	* chartab.c (syms_of_chartab):
	* chartab.c (vars_of_chartab):
	* chartab.c (structure_type_create_chartab):
	* chartab.h:
	* chartab.h (ALLOCATE_LEVEL_N_SUBTAB):
	* chartab.h (FREE_ONE_SUBTAB):
	* chartab.h (SUBTAB_EQ):
	* chartab.h (enum chartab_range_type):
	* chartab.h (CATEGORY_DESIGNATORP):
	* cmds.c:
	* cmds.c (internal_self_insert):
	* cmds.c (vars_of_cmds):
	* editfns.c:
	* editfns.c (Ftranslate_region):
	* elhash.c:
	* elhash.c (print_hash_table_data):
	* glyphs.c (display_table_entry):
	* lisp.h:
	* lrecord.h (enum lrecord_type):
	* print.c:
	* print.c (vars_of_print):
	* rangetab.c (print_range_table):
	* regex.c (re_match_2_internal):
	* syntax.c (syntax_match):
	* syntax.c (copy_to_mirrortab):
	* syntax.c (copy_if_not_already_present):
	* syntax.h:
	Rewrite category tables to reduce memory usage.  Instead of a
	regular char table with pointers to bit vectors, we now have a
	category-table object holding a set of 12 special char tables,
	each of which reserves only 8 bits instead of 32 or 64 for each
	value, corresponding to 8 tags.  #### It might make sense to
	reserve even less space per char table, but we'd have to do some
	trickiness to stuff multiple values into a single byte.

	Add a variable `print-table-nonreadably-length' controlling the
	number of entries printed in char, range, and hash tables when
	`print-readably' is nil; defaults to 20. (When `print-readably'
	is t, we print everything out.)

	Renames:
	
	get_char_table -> get_char_table_lisp
	get_char_table_raw -> get_char_table_lisp_raw
	get_char_table_1 -> get_char_table_lisp_1

	We also add a new get_char_table and get_char_table_raw that
	return a void * pointer, which holds either a Lisp_Object or
	a bit array of 8 bits or whatever, for category char tables.

	To handle these new category tables, we have two new object
	types: category tables and category subtables (which sit at
	the lowest level of the page tables inside a char table, to
	hold the 8-bit-wide bit arrays).
	
2010-03-19  Ben Wing  <ben@xemacs.org>

	* charset.h:
	* charset.h (struct Lisp_Charset):
	* charset.h (CHARSET_DO_AUTOLOAD):
	* charset.h (XCHARSET_DO_AUTOLOAD):
	* lisp.h:
	Add a `do_autoload' flag indicating whether the Unicode tables need
	to be autoloaded still.

	In charset_codepoint_to_unicode_raw_1(), autoload Unicode tables
	if needed.
	
	* lisp.h:
	* lisp.h (XCADDDDDDR):
	Add X7TH() - X10TH(), as well as X1STCDR() - X10THCDR(), and
	corresponding XCAD*R and XDD*R macros.
	
	* mule-charset.c (Fmake_charset):
	Document the `unicode-map' property.
	
	* unicode.c (get_unicode_conversion_1):
	Autoload Unicode tables if needed.

	* unicode.c (set_unicode_conversion):
	Don't try to retrieve previous conversion if we haven't yet autoloaded
	the Unicode map, or we will trigger an infinite loop.

	* unicode.c (enum load_unicode_flags):
	* unicode.c (verify_load_unicode_args):
	New function, to verify arguments to `load-unicode-mapping-table'.
	Add bit flags to correspond to the `flags' argument.

	* lisp.h:
	* unicode.c (Fload_unicode_mapping_table):
	Use verify_load_unicode_args().  If filename is relative, expand it
	relative to `data-directory' (or `../etc' relative to `lisp-directory'
	during loadup).  Document this behavior in the docstring.
	
	* unicode.c (autoload_charset_unicode_tables):
	Load charset Unicode tables by calling Fload_unicode_mapping_table().
	
	* unicode.c (init_charset_unicode_map):
	Instead of directly loading the Unicode tables from a file,
	verify the arguments to `load-unicode-mapping-table', store them,
	and set the `do_autoload' flag, so that the tables will be autoloaded
	when needed.

2010-03-15  Ben Wing  <ben@xemacs.org>
2010-03-28  Ben Wing  <ben@xemacs.org>

	* window.c (find_window_mirror_internal):
	Stop looking if no window mirror, and return 0.

	* window.c (window_display_lines):
	* window.c (window_display_buffer):
	* window.c (set_window_display_buffer):
	Don't need to update window mirror before calling find_window_mirror
	because does the updating automatically.

2010-03-25  Ben Wing  <ben@xemacs.org>

	* abbrev.c:
	* abbrev.c (describe_abbrev):
	* alloc.c:
	* alloc.c (common_init_alloc_early):
	* callint.c (Fprefix_numeric_value):
	* callint.c (syms_of_callint):
	* console.c (common_init_complex_vars_of_console):
	* data.c (Fdiv):
	* data.c (Fquo):
	* event-stream.c (vars_of_event_stream):
	* fileio.c (auto_save_error):
	* fileio.c (Fdo_auto_save):
	* fns.c:
	* fns.c (bump_string_modiff):
	* keymap.c (where_is_recursive_mapper):
	* lisp.h (ONEP):
	* lisp-disunion.h:
	* lisp-disunion.h (INT_PLUS1):
	* lisp-disunion.h (Qone):
	* lisp-union.h:
	* lisp-union.h (INT_MINUS):
	* macros.c (Fstart_kbd_macro):
	* marker.c (init_buffer_markers):
	* marker.c (uninit_buffer_markers):
	* minibuf.c (read_minibuffer_internal_unwind):
	* number.c (Fdenominator):
	* number.c (bigfloat_print):
	* print.c (print_symbol):
	* process-unix.c (get_internet_address):
	* scrollbar.c (Fscrollbar_line_up):
	* scrollbar.c (Fscrollbar_line_down):
	* symbols.c:
	* symbols.c (Fuser_variable_p):
	* syntax.c (reset_buffer_syntax_cache_range):
	* sysdep.c (init_system_name):
	* tests.c (Ftest_hash_tables):
	* unicode.c (allocate_jit_ucs_charset):
	* window.c (temp_output_buffer_show):
	* window.c (specifier_vars_of_window):
	Create Qone, similar to Qzero, along with ONEP.  Use it.

	* alloc.c (clone_bit_vector):
	* lisp.h:
	New function.
	
	* casetab.c (case_table_char):
	* casetab.c (compute_canon_mapper):
	* casetab.c (initialize_identity_mapper):
	* casetab.c (compute_up_or_eqv_mapper):
	* casetab.h:
	* chartab.c:
	* chartab.c (check_chartab_invariants):
	* chartab.c (clone_chartab_table):
	* chartab.c (create_new_chartab_table):
	* chartab.c (free_chartab_table):
	* chartab.c (compute_chartab_table_size_1):
	* chartab.c (compute_chartab_table_size):
	* chartab.c (compute_char_table_usage):
	* chartab.c (char_table_memory_usage):
	* chartab.c (put_chartab_table):
	* chartab.c (put_char_table):
	* chartab.c (map_chartab_table):
	* chartab.c (check_if_blank):
	* chartab.c (chartab_tables_equal):
	* chartab.c (char_table_equal):
	* chartab.c (hash_raw_chartab_val):
	* chartab.c (char_table_hash):
	* chartab.c (FROB1):
	* chartab.c (init_chartab_tables):
	* chartab.c (free_chartab_tables):
	* chartab.c (print_table_entry):
	* chartab.c (print_char_table):
	* chartab.c (Fmake_char_table):
	* chartab.c (Fcopy_char_table):
	* chartab.c (Fget_char_table):
	* chartab.c (put_char_table_range):
	* chartab.c (Fput_char_table):
	* chartab.c (map_char_table):
	* chartab.c (slow_map_char_table_fun):
	* chartab.c (chartab_data_validate):
	* chartab.c (chartab_instantiate):
	* chartab.c (category_table_equal):
	* chartab.c (check_char_in_category):
	* chartab.c (slow_map_category_table_fun):
	* chartab.c (syms_of_chartab):
	* chartab.c (vars_of_chartab):
	* chartab.c (structure_type_create_chartab):
	* chartab.h:
	* chartab.h (SUBTAB_ARRAY_FROM_SUBTAB):
	* chartab.h (ALLOCATE_LEVEL_1_CATEGORY_SUBTAB):
	* chartab.h (GET_CHAR_BYTES):
	* chartab.h (struct Lisp_Char_Table):
	* chartab.h (enum chartab_range_type):
	* chartab.h (CHAR_TABLES_PER_CATEGORY_TABLE):
	* chartab.h (DESIGNATOR_TO_CHAR_TABLE):
	* cmds.c (internal_self_insert):
	* cmds.c (vars_of_cmds):
	* editfns.c (Ftranslate_region):
	* glyphs.c (display_table_entry):
	* lrecord.h (enum lrecord_type):
	* syntax.c (syntax_match):
	* syntax.c (copy_to_mirrortab):
	* syntax.c (copy_if_not_already_present):
	* syntax.c (update_just_this_syntax_table):
	* syntax.h:
	* text.c:
	* text.c (old_mule_round_up_to_valid_ichar):
	* text.c (old_mule_round_down_to_valid_ichar):
	* text.c (Fchar_octet):
	Redo char tables and category tables again:

	(1) In a category table, store one char table per bit.  These char
	tables are category char tables, and at level 1 instead of storing
	a category subtable they store a size-256 bit vector.
	Accordingly, the `category-subtable' object has been removed. All
	the junk that involved multiplexing integral and Lisp_Object
	values into a void * pointer has been removed.  Now we're back to
	always just using Lisp_Object pointers.

	Accordingly, we rename/merge functions:

	get_char_table_lisp merged into get_char_table
	get_char_table_lisp_raw merged into get_char_table_raw
	get_char_table_lisp_1 -> get_char_table_1

	(2) We now efficiently store ranges of characters, not just single
	characters.  Essentially, at any level of the char tables, we can
	store a non-table Lisp object, indicating that all the characters
	spanned by that entry have the value of the given object.  Accordingly,
	put_char_table() now takes a range, and the function passed to
	map_char_table() is given a range.  Various places where
	map_char_table() is called have been changed.

	This also means that there is no more need for blank tables of the
	sort that still exist in the Unicode tables.
	
	IMPORTANT: The ranges passed in to put_char_table() may encompass
	non-characters, especially in old-Mule where there are lots of gaps
	in the representation of characters.  put_char_table() simply stores
	the ranges as-is, and does not try to avoid storing values for
	non-characters.  This doesn't affect get_char_table(), but it
	definitely does affect map_char_table().  To deal with this, we
	create new functions round_up_to_valid_ichar() and
	round_down_to_valid_ichar() that are used to take raw ranges in
	map_char_table() and coerce them into possibly smaller ranges where
	the characters on both ends are valid characters.  It may still be
	the case that characters within the range are invalid.

	This also means that if you copy a table in Lisp using
	`map-char-table', the new table may not be `equal' to the first table
	-- essentially, the "junk" areas where non-characters lie may be
	set in the original table but unset in the new table, and
	char_table_equal() isn't smart enough to ignore those "junk" areas.
	Possibly this can be fixed by making map_char_table() expand its
	ranges to the maximum extent.

	* text.h:
	* unicode.c (decode_utf_8):
	* unicode.c (unicode_decode):

	Rename the following functions and make them work correctly when
	passed any Unicode codepoint:

	valid_utf_16_first_surrogate() -> valid_unicode_leading_surrogate()
	valid_utf_16_last_surrogate() -> valid_unicode_trailing_surrogate()
	valid_utf_16_surrogate() -> valid_unicode_surrogate()

	Change the definition of valid_unicode_codepoint_p() to reject
	codepoints in the surrogate area.  This also affects valid_ichar_p().
	Also make valid_ichar_p() reject characters that don't fit into
	30 bits, which is as much as we can store.  Create ICHAR_MAX to
	represent the maximum Ichar that fits in 30 bits.
	Use the newer definition of valid_unicode_codepoint_p() in
	decode_utf_8() rather than manually duplicating it.

2010-03-25  Ben Wing  <ben@xemacs.org>

	* chartab.c: Expand comment at top about recent change involving
	category tables.
	* unicode.c: #ifdnef UNICODE_INTERNAL around a label to avoid a
	"label" unused" warning.

2010-03-25  Ben Wing  <ben@xemacs.org>

	* charset.h:
	* charset.h (to_unicode_base):
	* charset.h (ASSERT_VALID_CHARSET_CODEPOINT_OR_ERROR):
	* unicode.c:
	* unicode.c (needed_sizeof_to_unicode_base):
	* unicode.c (init_blank_unicode_tables):
	* unicode.c (init_charset_unicode_tables):
	* unicode.c (free_from_unicode_table):
	* unicode.c (free_to_unicode_table):
	* unicode.c (compute_from_unicode_table_size_1):
	* unicode.c (compute_to_unicode_table_size_1):
	* unicode.c (assert_not_any_blank_table):
	* unicode.c (sledgehammer_check_from_table):
	* unicode.c (sledgehammer_check_to_table):
	* unicode.c (sledgehammer_check_unicode_tables):
	* unicode.c (ensure_to_unicode_holds_range):
	* unicode.c (set_unicode_conversion_char_to_unicode):
	At the lowest level of the charset to-Unicode tables, store a
	`struct to_unicode_base *' of variable size, instead of a fixed
	size-256 array.  Since large charsets are usually of size 94x94,
	the lowest levels will consist of 94-element arrays instead of
	256-element arrays, saving more than half of the memory needed.
	This makes the memory usage for these tables comparable to what
	it was when charsets were not allowed to be larger than 96x96.

	Also, when initializing the to-Unicode tables, start with a
	blank table at level-2 rather than a 256-element table, and
	change functions that process the to-Unicode tables so they
	can handle this.  Change the functions that handle from-Unicode
	tables similarly, although we haven't yet made the corresponding
	change to the from-Unicode tables themselves.

2010-03-23  Ben Wing  <ben@xemacs.org>

	* alloc.c (free_normal_lisp_object): Fix unused var warning.
	
	* array.c:
	* array.c (Stynarr_insert_many_1):
	* array.h:
	* array.h (Stynarr_declare):
	* array.h (struct):
	* array.h (Stynarr_init):
	* array.h (Stynarr_free):
	* array.h (Stynarr_add):
	* faces.h:
	* faces.h (struct):
	* faces.h (struct face_cachel):
	* window.c:
	Stynarr code and especially the hacked-up way of describing stynarrs
	for KKCC had various problems that led to crashes.  Fix it by adding
	a nels_static tracking how many static elements have been created,
	and make Stynarr_declare() parallel to Dynarr_declare(), add add
	XD_STYNARR_DESC parallel to XD_DYNARR_DESC.
	
	Use new stynarr code to declare various foo-stynarr objects and
	associated descriptions; use both in face_cachel definition
	(faces.h) and description (window.c).
	
	* file-coding.c:
	* file-coding.c (chain_finalize_coding_stream_1):
	* file-coding.c (chain_finalize):
	When xfree()ing a value, set the value to 0 afterwards so KKCC
	doesn't end up trying to mark 0xDEADBEEF and crashing.
	
	* file-coding.c (detection_state_description_0): Deleted.
	* file-coding.c (mark_detection_state):
	`struct detection_state *' is actually a Lisp object, so declare it
	that way in the description or KKCC will crash.
	
	* file-coding.c (coding_system_type_create):
	* file-coding.h:
	* file-coding.h (INITIALIZE_DETECTOR_DESCRIPTION):
	* file-coding.h (INITIALIZE_DETECTOR_WITH_DESCRIPTION):
	* mule-coding.c (reinit_coding_system_type_create_mule_coding):
	Don't dump coding_detector_description_lines_count; instead, we
	need to reinitialize the description of a `struct detection_state'
	after pdump load because it's dynamically initialized; else we
	will get a KKCC crash due to uninitialized description.
	* gc.c (kkcc_backtrace_1):
	Stop backtracing when we reach the bottom; else, we crash.
	
	* mule-coding.c (iso2022_finalize_detection_state):
	When xfreeing a value, set the value to 0 afterwards so KKCC
	doesn't end up trying to mark 0xDEADBEEF and crashing.
	
2010-03-22  Ben Wing  <ben@xemacs.org>

	* casetab.c (case_table_char):
	* casetab.c (compute_canon_mapper):
	* casetab.c (initialize_identity_mapper):
	* casetab.c (compute_up_or_eqv_mapper):
	* casetab.h:
	* chartab.c:
	* chartab.c (init_blank_chartab_tables_1):
	* chartab.c (init_blank_chartab_tables):
	* chartab.c (copy_chartab_table):
	* chartab.c (create_new_chartab_table):
	* chartab.c (free_chartab_table):
	* chartab.c (compute_chartab_table_size_1):
	* chartab.c (compute_chartab_table_size):
	* chartab.c (compute_char_table_usage):
	* chartab.c (put_char_table):
	* chartab.c (map_chartab_table):
	* chartab.c (check_if_blank):
	* chartab.c (chartab_tables_equal):
	* chartab.c (char_table_equal):
	* chartab.c (hash_raw_chartab_val):
	* chartab.c (char_table_hash):
	* chartab.c (FROB1):
	* chartab.c (init_chartab_tables):
	* chartab.c (free_chartab_tables):
	* chartab.c (struct ptemap):
	* chartab.c (print_table_entry):
	* chartab.c (print_char_table):
	* chartab.c (check_non_category_char_table):
	* chartab.c (make_char_table):
	* chartab.c (Fmake_char_table):
	* chartab.c (Fcopy_char_table):
	* chartab.c (Fchar_table_default):
	* chartab.c (Fget_char_table):
	* chartab.c (check_valid_char_table_value):
	* chartab.c (put_char_table_range):
	* chartab.c (Fput_char_table):
	* chartab.c (Fremove_char_table):
	* chartab.c (map_char_table):
	* chartab.c (slow_map_char_table_fun):
	* chartab.c (Fmap_char_table):
	* chartab.c (init_blank_category_chartab_tables):
	* chartab.c (category_table_equal):
	* chartab.c (category_table_hash):
	* chartab.c (mark_category_table):
	* chartab.c (print_category_table):
	* chartab.c (Fmake_category_table):
	* chartab.c (check_category_table):
	* chartab.c (check_char_in_category):
	* chartab.c (Fcheck_category_at):
	* chartab.c (Fchar_in_category_p):
	* chartab.c (Fcopy_category_table):
	* chartab.c (struct slow_map_category_table_arg):
	* chartab.c (slow_map_category_table_fun):
	* chartab.c (Fmap_category_table):
	* chartab.c (word_boundary_p):
	* chartab.c (syms_of_chartab):
	* chartab.c (vars_of_chartab):
	* chartab.c (structure_type_create_chartab):
	* chartab.h:
	* chartab.h (ALLOCATE_LEVEL_N_SUBTAB):
	* chartab.h (FREE_ONE_SUBTAB):
	* chartab.h (SUBTAB_EQ):
	* chartab.h (enum chartab_range_type):
	* chartab.h (CATEGORY_DESIGNATORP):
	* cmds.c:
	* cmds.c (internal_self_insert):
	* cmds.c (vars_of_cmds):
	* editfns.c:
	* editfns.c (Ftranslate_region):
	* elhash.c:
	* elhash.c (print_hash_table_data):
	* glyphs.c (display_table_entry):
	* lisp.h:
	* lrecord.h (enum lrecord_type):
	* print.c:
	* print.c (vars_of_print):
	* rangetab.c (print_range_table):
	* regex.c (re_match_2_internal):
	* syntax.c (syntax_match):
	* syntax.c (copy_to_mirrortab):
	* syntax.c (copy_if_not_already_present):
	* syntax.h:
	Rewrite category tables to reduce memory usage.  Instead of a
	regular char table with pointers to bit vectors, we now have a
	category-table object holding a set of 12 special char tables,
	each of which reserves only 8 bits instead of 32 or 64 for each
	value, corresponding to 8 tags.  #### It might make sense to
	reserve even less space per char table, but we'd have to do some
	trickiness to stuff multiple values into a single byte.

	Add a variable `print-table-nonreadably-length' controlling the
	number of entries printed in char, range, and hash tables when
	`print-readably' is nil; defaults to 20. (When `print-readably'
	is t, we print everything out.)

	Renames:
	
	get_char_table -> get_char_table_lisp
	get_char_table_raw -> get_char_table_lisp_raw
	get_char_table_1 -> get_char_table_lisp_1

	We also add a new get_char_table and get_char_table_raw that
	return a void * pointer, which holds either a Lisp_Object or
	a bit array of 8 bits or whatever, for category char tables.

	To handle these new category tables, we have two new object
	types: category tables and category subtables (which sit at
	the lowest level of the page tables inside a char table, to
	hold the 8-bit-wide bit arrays).
	
2010-03-19  Ben Wing  <ben@xemacs.org>

	* charset.h:
	* charset.h (struct Lisp_Charset):
	* charset.h (CHARSET_DO_AUTOLOAD):
	* charset.h (XCHARSET_DO_AUTOLOAD):
	* lisp.h:
	Add a `do_autoload' flag indicating whether the Unicode tables need
	to be autoloaded still.

	In charset_codepoint_to_unicode_raw_1(), autoload Unicode tables
	if needed.
	
	* lisp.h:
	* lisp.h (XCADDDDDDR):
	Add X7TH() - X10TH(), as well as X1STCDR() - X10THCDR(), and
	corresponding XCAD*R and XDD*R macros.
	
	* mule-charset.c (Fmake_charset):
	Document the `unicode-map' property.
	
	* unicode.c (get_unicode_conversion_1):
	Autoload Unicode tables if needed.

	* unicode.c (set_unicode_conversion):
	Don't try to retrieve previous conversion if we haven't yet autoloaded
	the Unicode map, or we will trigger an infinite loop.

	* unicode.c (enum load_unicode_flags):
	* unicode.c (verify_load_unicode_args):
	New function, to verify arguments to `load-unicode-mapping-table'.
	Add bit flags to correspond to the `flags' argument.

	* lisp.h:
	* unicode.c (Fload_unicode_mapping_table):
	Use verify_load_unicode_args().  If filename is relative, expand it
	relative to `data-directory' (or `../etc' relative to `lisp-directory'
	during loadup).  Document this behavior in the docstring.
	
	* unicode.c (autoload_charset_unicode_tables):
	Load charset Unicode tables by calling Fload_unicode_mapping_table().
	
	* unicode.c (init_charset_unicode_map):
	Instead of directly loading the Unicode tables from a file,
	verify the arguments to `load-unicode-mapping-table', store them,
	and set the `do_autoload' flag, so that the tables will be autoloaded
	when needed.

2010-03-22  Vin Shelton  <acs@xemacs.org>

	* window.c (vars_of_window): Move HAVE_SCROLLBARS test so the code
	can compile under Visual Studio 6.

2010-03-21  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (tick_lrecord_stats):
	Fix the union build after Ben's last change, don't assume that a
	Lisp_Object will fit into a Bytecount.

2010-03-20  Ben Wing  <ben@xemacs.org>

	* tests.c (Ftest_data_format_conversion):
	Fix remaining test failures with c-tests -- problem was with the
	tests, not the code being tested.

2010-03-15  Ben Wing  <ben@xemacs.org>

	* file-coding.c:
	* file-coding.c (find_coding_system):
	* file-coding.c (Ffind_coding_system):
	* file-coding.c (Fautoload_coding_system):
	* file-coding.c (coding_stream_set_state):
	* file-coding.c (coding_stream_call_converter_1):
	* file-coding.c (coding_stream_call_converter):
	* file-coding.c (coding_reader):
	* file-coding.c (coding_writer):
	* file-coding.c (coding_closer):
	* file-coding.c (coding_finalizer):
	* file-coding.c (coding_stream_get_error_info):
	* file-coding.c (set_coding_stream_coding_system):
	* file-coding.c (make_coding_stream_1):
	* file-coding.c (handle_encoding_error_after_output):
	* file-coding.c (handle_encoding_error_before_output):
	* file-coding.c (query_coding_1):
	* file-coding.c (chain_convert):
	* file-coding.c (chain_get_error_info):
	* file-coding.c (convert_eol_decode):
	* file-coding.c (output_bytes_in_ascii_and_hex):
	* file-coding.c (undecided_decode):
	* file-coding.c (gzip_decode):
	* file-coding.c (gzip_encode):
	* file-coding.h:
	* file-coding.h (DECLARE_CODING_SYSTEM_TYPE):
	* file-coding.h (struct coding_stream_state):
	* file-coding.h (struct coding_stream):
	* file-coding.h (CODING_STREAM_TYPE_DATA):
	* file-coding.h (DECODE_OUTPUT_PARTIAL_CHAR):
	* file-coding.h (ENCODING_ERROR_RETURN_OR_CONTINUE):
	* lstream.c:
	* lstream.c (Lstream_write):
	* lstream.c (Lstream_read):
	* lstream.c (Lstream_clear_error_occurred_p):
	* lstream.c (Lstream_set_error_occurred_p):
	* lstream.h:
	* mule-coding.c (multibyte_decode):
	* mule-coding.c (iso2022_decode):
	* mule-coding.c (iso2022_encode):
	* mule-coding.c (ccl_convert):
	* unicode.c:
	* unicode.c (unicode_decode):
	Finish implementation of query-coding mechanism.

	(1) Move `struct coding_stream' fields that encapsulate the current
	state of the conversion into a `struct coding_stream_state' stored
	inside `struct coding_stream'.  Add functions to retrieve and set
	the conversion state.

	(2) Extract code to call the convert method into separate functions.

	(3) Implement coding_stream_back_propagate_offset() to convert an
	offset in the other-end stream into an offset in this stream.
	Basically, need to seek back to a known place and move forward
	character by character until we have outputted the proper offset,
	and observe the input offset.

	(4) Use it in coding_writer().

	(5) Redo error-handling mechanism somewhat.  Lstream_error_occurred_p()
	now serves as an extra return value to Lstream_write() and
	Lstream_read(), and is not guaranteed to be accurate otherwise.
	Instead use coding_stream_get_error_info() to return info about
	coding errors.

	(6) Change good_written and total_written so when the values are set
	they incorporate the written_before_convert offset rather than
	having to subtract the value later.
	

2010-03-15  Ben Wing  <ben@xemacs.org>

	* file-coding.c (coding_writer):
	Add comments concerning what to do to implement back-propagation
	of error offsets.
	
	* file-coding.c (coding_rewinder):
	* file-coding.h (HAS_XCODESYSMETH_P):
	* file-coding.c (gzip_rewind_coding_stream):
	* file-coding.c (coding_system_type_create):
	* file-coding.h (struct coding_system_methods):
	* mule-coding.c (iso2022_rewind_coding_stream):
	* mule-coding.c (coding_system_type_create_mule_coding):
	* mule-coding.c (ccl_rewind_coding_stream):
	* unicode.c (unicode_rewind_coding_stream):
	* unicode.c (coding_system_type_create_unicode):
	When no rewind_coding_stream method, call init_coding_stream if
	available.  New macro HAS_XCODESYSMETH_P to make it easier to check
	if a method exists.  Eliminate rewind_coding_stream methods from
	a number of coding-system types, as they just called the
	init_coding_stream method (gzip, ...).
	
	* file-coding.c (coding_rewinder):
	* file-coding.c (set_coding_stream_coding_system):
	* file-coding.c (make_coding_stream_1):
	* file-coding.h (struct coding_stream):
	* file-coding.h (DECODE_OUTPUT_PARTIAL_CHAR):
	* mule-coding.c (struct multibyte_coding_stream):
	* mule-coding.c (multibyte_init_coding_stream):
	* mule-coding.c (multibyte_decode):
	* mule-coding.c (struct shift_jis_coding_system):
	* mule-coding.c (shift_jis_decode):
	* mule-coding.c (shift_jis_init_coding_stream):
	* mule-coding.c (struct big5_coding_system):
	* mule-coding.c (big5_decode):
	* mule-coding.c (big5_init_coding_stream):
	* mule-coding.c (struct iso2022_coding_stream):
	* mule-coding.c (iso2022_decode):
	Get rid of coding-stream state variable `ch'.  Move to type-specific
	state info.
	
	* file-coding.h (struct coding_system_methods):
	Add copy_coding_stream method, for use in implementing tell()
	on a stream (the whole state has to be copied).
	
	* file-coding.h (struct coding_stream):
	Add `data_copy' for storing a copy of the type-specific state data.
	(#### Perhaps not the final interface.)
	
	* lisp.h (Dynarr_delete_object):
	Flobmoxify (i.e. mangle) variable name to make it unique in macro.

	* lisp.h (Dynarr_copy):
	New macro.
	
	* mule-coding.c (struct iso2022_coding_stream):
	* mule-coding.c (reset_iso2022_decode):
	* mule-coding.c (reset_iso2022_encode):
	* mule-coding.c (iso2022_mark_iso2022_coding_stream):
	* mule-coding.c (iso2022_designate):
	* mule-coding.c (iso2022_encode):
	Get rid of Unicode-precedence object stored in the iso2022 stream.
	It's only used in one place -- substitute a loop over the charsets
	that would have been placed into the Unicode-precedence object.
	(Doing this eliminates some complexities with iso2022 state info.)
	
	* mule-coding.c (iso2022_copy_coding_stream):
	* mule-coding.c (iso2022_finalize_coding_stream):
	* mule-coding.c (coding_system_type_create_mule_coding):
	Add iso2022_copy_coding_stream, but only when
	ENABLE_COMPOSITE_CHARS.  iso2022_finalize_coding_stream now used
	only when ENABLE_COMPOSITE_CHARS.

2010-03-15  Ben Wing  <ben@xemacs.org>

	* file-coding.c:
	* file-coding.c (coding_rewinder):
	* file-coding.c (no_conversion_decode):
	* file-coding.c (no_conversion_encode):
	* file-coding.c (convert_eol_decode):
	* file-coding.c (convert_eol_encode):
	* file-coding.c (undecided_decode):
	* file-coding.c (internal_convert):
	* file-coding.c (gzip_decode):
	* file-coding.c (gzip_encode):
	* file-coding.c (gzip_convert):
	* file-coding.h:
	* file-coding.h (struct coding_stream):
	* intl-win32.c (mswindows_multibyte_convert):
	* mule-coding.c:
	* mule-coding.c (multibyte_decode):
	* mule-coding.c (multibyte_encode):
	* mule-coding.c (multibyte_convert):
	* mule-coding.c (shift_jis_decode):
	* mule-coding.c (shift_jis_encode):
	* mule-coding.c (big5_decode):
	* mule-coding.c (big5_encode):
	* mule-coding.c (iso2022_decode):
	* mule-coding.c (iso2022_encode):
	* mule-coding.c (iso2022_convert):
	* mule-coding.c (ccl_convert):
	* unicode.c:
	* unicode.c (unicode_decode):
	* unicode.c (unicode_encode):
	Create separate *_encode() and *_decode() routines, with correct
	type of the underlying unsigned char * pointers (UExtbyte for
	external, byte-oriented data vs. Ibyte for internal, character-
	oriented data).  Eliminate most of the partial-char mechanism for
	accumulating a partial character during encoding -- it's not
	necessary since we're always passed data in chunks of whole characters
	when encoding.  Eliminate COPY_PARTIAL_CHAR_BYTE.

2010-03-15  Ben Wing  <ben@xemacs.org>

	* console-tty.c (tty_init_console):
	* event-msw.c (make_ntpipe_input_stream):
	* event-msw.c (make_ntpipe_output_stream):
	* event-msw.c (winsock_closer):
	* event-msw.c (make_winsock_stream_1):
	* event-msw.c (make_winsock_input_stream):
	* event-msw.c (make_winsock_output_stream):
	* event-msw.c (get_winsock_stream_waitable):
	* file-coding.c:
	* file-coding.c (Fautoload_coding_system):
	* file-coding.c (setup_eol_coding_systems):
	* file-coding.c (make_coding_system_1):
	* file-coding.c (coding_reader):
	* file-coding.c (coding_writer):
	* file-coding.c (set_coding_character_mode):
	* file-coding.c (coding_closer):
	* file-coding.c (set_coding_stream_coding_system):
	* file-coding.c (make_coding_stream_1):
	* file-coding.c (make_coding_input_stream):
	* file-coding.c (make_coding_output_stream):
	* file-coding.c (encode_decode_coding_region):
	* file-coding.c (query_coding_1):
	* file-coding.c (chain_canonicalize_after_coding):
	* file-coding.c (chain_init_coding_streams_1):
	* file-coding.c (chain_convert):
	* file-coding.c (chain_finalize_coding_stream_1):
	* file-coding.c (chain_get_error_info):
	* file-coding.c (convert_eol_convert):
	* file-coding.c (convert_eol_canonicalize_after_coding):
	* file-coding.c (coding_category_symbol_to_id):
	* file-coding.c (detection_result_symbol_to_number):
	* file-coding.c (detect_coding_type):
	* file-coding.c (look_for_coding_system_magic_cookie):
	* file-coding.c (undecided_print):
	* file-coding.c (undecided_init_coding_stream):
	* file-coding.c (undecided_convert):
	* file-coding.c (undecided_canonicalize_after_coding):
	* file-coding.c (detect_coding_stream):
	* file-coding.c (Fdetect_coding_region):
	* file-coding.c (gzip_convert):
	* file-coding.h:
	* file-coding.h (struct coding_stream):
	* lstream.c:
	* lstream.c (finalize_lstream):
	* lstream.c (disksave_lstream):
	* lstream.c (Lstream_new):
	* lstream.c (Lstream_set_character_mode):
	* lstream.c (Lstream_unset_character_mode):
	* lstream.c (Lstream_reopen):
	* lstream.c (Lstream_really_write):
	* lstream.c (Lstream_write_1):
	* lstream.c (Lstream_write):
	* lstream.c (Lstream_raw_read):
	* lstream.c (Lstream_read_1):
	* lstream.c (Lstream_pseudo_close):
	* lstream.c (Lstream_close):
	* lstream.c (Lstream_fputc):
	* lstream.c (Lstream_set_error_occurred_p):
	* lstream.c (struct stdio_stream):
	* lstream.c (make_stdio_stream_1):
	* lstream.c (make_stdio_input_stream):
	* lstream.c (make_stdio_output_stream):
	* lstream.c (stdio_flusher):
	* lstream.c (stdio_closer):
	* lstream.c (struct filedesc_stream):
	* lstream.c (make_filedesc_stream_1):
	* lstream.c (make_filedesc_input_stream):
	* lstream.c (make_filedesc_output_stream):
	* lstream.c (filedesc_reader):
	* lstream.c (filedesc_write_single_byte):
	* lstream.c (filedesc_writer):
	* lstream.c (filedesc_closer):
	* lstream.c (filedesc_stream_set_pty_flushing):
	* lstream.c (make_lisp_string_input_stream):
	* lstream.c (lisp_string_reader):
	* lstream.c (make_fixed_buffer_input_stream):
	* lstream.c (make_fixed_buffer_output_stream):
	* lstream.c (make_resizing_buffer_output_stream):
	* lstream.c (make_dynarr_output_stream):
	* lstream.c (struct lisp_buffer_stream):
	* lstream.c (make_lisp_buffer_stream_1):
	* lstream.c (make_lisp_buffer_input_stream):
	* lstream.c (make_lisp_buffer_output_stream):
	* lstream.c (lisp_buffer_reader):
	* lstream.h:
	* lstream.h (LSTR_CLOSING):
	* lstream.h (LSTR_ALLOW_QUIT):
	* lstream.h (LSTR_PTY_FLUSHING):
	* lstream.h (LSTR_BLOCKED_OK):
	* process-unix.c (unix_send_process):
	* text.c (Lstream_fput_ichar):
	Cleanups of lstream code in preparation for further changes
	to query-coding-region mechanism:

	-- Rename Lstream flags from LSTREAM_FL_* to LSTR_*.
	-- Change Lstream_new() to take flags, ala read(), instead of
	   an fread()-style mode string.  Update lstream-type-specific flags
	   so they consistently start at 1 << 16, and eliminate various
           lstream-type-specific mechanisms for handling flags in favor of
	   unifying generic and type-specific flags and storing all the flags
	   in a single `flags' field in the Lstream.
	-- Add new "cumulative read/written" fields in the coding lstream;
	   stored, but not used yet.
	-- Instead of Lstream_write_no_store(), use a flag LSTR_NO_SQUIRREL.
	   Pass this flag in query_coding_1().  Propagate this flag from a
	   chain coding stream to the underlying coding streams.  Change
	   Lstream_write() to return number of bytes written instead of
	   just 0 or -1.
	-- Write a long comment about the workings of the chain coding system
	   and how it interacts with back-propagation of the good_read and
	   similar error offsets; not finished.
	-- Write code in chain_convert() to back-propagate error info;
	   doesn't yet actually convert the offsets properly.
	-- Add functions Lstream_set_error_occurred_p() and Lstream_is_type().
	

2010-03-14  Ben Wing  <ben@xemacs.org>

	* file-coding.c:
	Update `make-coding-system' doc string on safe-chars, safe-charsets.

2010-03-14  Ben Wing  <ben@xemacs.org>

	OVERALL CHANGES:

	-- New query-coding-region mechanism; instead of a separate
	mechanism, it simply tries to encode the data and watches for
	errors.  This requires a new mechanism for signalling errors in
	encoding methods, and the encoding methods of the various coding
	systems have to be modified appropriately.  We also need to
	improve error-handling in Lstreams so we can properly propagate
	these errors back to the caller.  In particular, previously errors
	were signalled by returning -1 from reader and writer methods, but
	this was only possible when no data was read or written.  Now the
	two (returning amount of data processed and signalling an error)
	have been separated, at least at the lowest level.  Higher levels
	still use the "-1 for error when no data processed" convention,
	but eventually this will change, too.

	-- Some cleanup and refactoring of UTF-8 handling code, especially
	between unicode.c (`unicode' coding system) and mule-coding.c
	(`iso2022' coding system).
	
	* charset.h: Spacing changes.
	
	* event-msw.c (ntpipe_slurp_reader):
	* event-msw.c (ntpipe_shove_writer):
	* event-msw.c (winsock_reader):
	* event-msw.c (winsock_writer):
	* file-coding.c (coding_reader):
	* file-coding.c (coding_writer):
	* lstream.c:
	* lstream.c (Lstream_really_write):
	* lstream.c (Lstream_write_1):
	* lstream.c (Lstream_write):
	* lstream.c (Lstream_raw_read):
	* lstream.c (Lstream_fputc):
	* lstream.c (Lstream_error_occurred_p):
	* lstream.c (make_lisp_buffer_input_stream):
	* lstream.c (make_lisp_buffer_output_stream):
	* lstream.h:
	* lstream.h (struct lstream):
	Lstream reader and writer methods now set a flag to signal an error
	rather than returning -1.  Modify all such methods and callers
	(Lstream_really_write(), Lstream_raw_read()) appropriately.

	Add a new function Lstream_write_no_store() for use with the new
	query-error mechanism below, that doesn't buffer (aka "squirrel
	away") remaining data when less than all of it was written.
	(We don't want this buffering when using the query-error mechanism
	because we purposely want to stop converting each time an error is
	encountered.) #### This should have a better name and perhaps
	better interface.  Perhaps we should never squirrel data away when
	an error occurs.  Currently we don't squirrel if an error occurs
	and no data was written, but we do if some data was written.

	Add new functions Lstream_error_occurred_p() and
	Lstream_clear_error_occurred_p() to query/clear the flag indicating
	that an error occurred.

	#### We should probably further modify the reader/writer interface
	to separate out returning 0 and encountering EOF.

	Factor out some duplicated code inside of filedesc_writer() into
	filedesc_write_single_byte().
	
	* extents.c:
	* extents.c (Fset_extent_face):
	* extents.h:
	Make map_extents() externally callable and better document the
	flags to the function.  Add EXFUN declarations for `delete-extent',
	`extent-face' and `duplicable'.
	
	* file-coding.c:
	* file-coding.c (Fvalid_coding_system_type_p):
	* file-coding.c (make_coding_stream_1):
	* file-coding.c (encode_decode_coding_region):
	* file-coding.c (cleanup_query_streams):
	* file-coding.c (query_coding_1):
	* file-coding.c (Fquery_coding_region):
	* file-coding.c (Fquery_coding_string):
	* file-coding.c (chain_init_coding_streams_1):
	* file-coding.c (chain_convert):
	* file-coding.c (chain_get_error_info):
	* file-coding.c (no_conversion_convert):
	* file-coding.c (convert_eol_convert):
	* file-coding.c (undecided_convert):
	* file-coding.c (internal_convert):
	* file-coding.c (gzip_convert):
	* file-coding.c (syms_of_file_coding):
	* file-coding.c (vars_of_file_coding):
	* file-coding.c (complex_vars_of_file_coding):
	* file-coding.h:
	* file-coding.h (enum handle_coding_error):
	* file-coding.h (enum coding_system_variant):
	* file-coding.h (struct coding_system_methods):
	* file-coding.h (INITIALIZE_CODING_SYSTEM_TYPE):
	* file-coding.h (struct coding_stream):
	* file-coding.h (LSTREAM_FL_NO_CLOSE_OTHER):
	* intl-win32.c:
	* intl-win32.c (mswindows_multibyte_to_unicode_convert):
	* intl-win32.c (complex_vars_of_intl_win32):
	* lisp.h:
	* mule-coding.c (multibyte_convert):
	* mule-coding.c (shift_jis_convert):
	* mule-coding.c (big5_convert):
	* mule-coding.c (struct iso2022_coding_stream):
	* mule-coding.c (parse_iso2022_esc):
	* mule-coding.c (iso2022_encode):
	* mule-coding.c (iso2022_convert):
	* mule-coding.c (ccl_convert):
	Eliminate default_query_method and all other stuff related to the
	old query-coding-region machinery.  Rewrite all the convert
	methods so that they indicate when an error occurs -- during
	decoding by inserting "error octets" into the stream of characters
	and during encoding by making note of where the error occurred in
	the source and sink streams. (Done using functions such as
	handle_encoding_error_after_output(),
	handle_encoding_error_before_output(),
	handle_standard_encoding_error(), handle_possible_error_octet(),
	ENCODING_ERROR_RETURN_OR_CONTINUE().) Add flags to
	make_coding_input_stream() and make_coding_output_stream() that
	allow different handling of errors -- either ignore them
	("continue"), stop on error, or stop but ignore invalid-sequence
	errors. (Generally speaming, invalid-sequence errors are
	data-preserving whereas unencodable errors are data-losing.)  Add
	coding_stream_get_error_info() to retrieve error info after an
	error has occurred.

	Write a new query-coding-region that uses this mechanism; also
	move query-coding-string into C, since it's only a minor change as
	everything is now done with streams.

	#### NOTE FIXME: There is still a major problem with the new
	query-error mechanism when we have a coding system with non-default
	EOL handling (i.e. `-mac' or `-dos'.)  Internally such a coding
	system is converted ("canonicalized") into a chain of two coding
	systems, one which handles the actual conversion and one which
	handles EOL conversion.  Propagating error positions back through
	the chain of coding systems is tricky and not yet written.
	There is some #if 0'ed out code that was a start but it won't
	get done till the next commit.

	Note also that the order of arguments to the `convert' methods
	has changed to group the source and its length together.
	
	Rename `make-coding-system-internal' back to `make-coding-system'
	and move its documentation back to C.

	Add a long comment about different properties of coding streams
	(input vs. output, decoding vs. encoding, byte vs. character source
	and/or sink).

	Fix documentation on LSTREAM_FL_NO_INIT_CHAR_MODE_WHEN_READING.

	Better document the fields in `struct coding_stream'.  Add new
	fields to handle the new error mechanism and new error-related flags.
	
	* mule-coding.c:
	* unicode.c (indicate_invalid_utf_8):
	Move add_unicode_to_dynarr() and indicate_invalid_utf_8()
	to unicode.c, move handle_possible_error_octet() to file-coding.c.
	
	* mule-coding.c (iso2022_decode):
	* unicode.c (decode_utf_8):
	* unicode.c (unicode_convert):
	Extract duplicated UTF-8-handling code (in unicode_convert() and
	iso2022_decode(), to handle UTF-8 inside of ISO-2022) to a single
	function decode_utf_8(), with a flag allow_private to determine
	whether we allow Unicode codepoints over #x10FFFF (yes with
	escape-quoted, no otherwise).

	Fix a bug (typo) in handling 4-byte UTF-8 sequences. (Actually
	turns out not to matter.)
	
	* mule-coding.c (iso2022_encode):
	* mule-coding.c (iso2022_convert):
	Fix some places with poor CONVERR_* error handling.
	
	* mule-coding.c (syms_of_mule_coding):
	* mule-coding.c (coding_system_type_create_mule_coding):
	* mule-coding.c (reinit_coding_system_type_create_mule_coding):
	* mule-coding.c (vars_of_mule_coding):
	Eliminate the `fixed-width' coding-system type, replaced by
	`multibyte'.
	
	* rangetab.c (put_range_table):
	Note in comment that the comparison method should probably be
	specifiable instead of always `eq'.
	
	* text.c (non_ascii_set_itext_ichar):
	Fix comment about where UTF-8 encoding code is duplicated.
	
	* unicode.c:
	* unicode.c (Fset_unicode_query_skip_chars_args): Removed.
	* unicode.c (syms_of_unicode):
	* unicode.c (coding_system_type_create_unicode):
	* unicode.c (complex_vars_of_unicode):
	Eliminate some stuff related to the old query-error mechanism.
	Kill `set-unicode-query-skip-chars-args'.
	
	* unicode.c (UNICODE_DECODE_ERROR_OCTET):
	Rename from DECODE_ERROR_OCTET(), because there is now another
	DECODE_ERROR_OCTET() that does less.
	
	* unicode.c (decode_unicode_to_dynarr):
	Rename decode_unicode_char to decode_unicode_to_dynarr_0() and
	extract part of it into decode_unicode_to_dynarr().
	
	* unicode.c (encode_unicode_to_dynarr):
	Rename encode_unicode_char to encode_unicode_to_dynarr() and
	clean up a lot.
	
	* unicode.c (unicode_convert):
	Get rid of use of `unsigned int' `unsigned char' etc. for
	integral types and use `int' consistently.

	* lisp.h:
	* unicode.h:
	Move `enum unicode_encoding_type' and related prototypes from
	lisp.h to unicode.h; move `struct unicode_coding_stream' from
	unicode.c to unicode.h as it's now used in mule-coding.c.

	* Makefile.in.in:
	general-late.el no longer dependent on whether compiled with
	--unicode-internal.

2010-03-08  Ben Wing  <ben@xemacs.org>

	* unicode.c:
	Support ranges of charset codepoints mapping onto ranges of
	Unicode codepoints.  Necessary in order to integrate GNU Emacs
	mapping tables.

2010-03-07  Ben Wing  <ben@xemacs.org>

	* file-coding.c (output_bytes_in_ascii_and_hex):
	* file-coding.c (detect_coding_type):
	* file-coding.c (undecided_init_coding_stream):
	* file-coding.c (undecided_rewind_coding_stream):
	Use debug_out* instead of stderr_out*, in case print-readably has
	been set.
	
	* file-coding.h:
	* file-coding.h (LSTREAM_FL_NO_INIT_CHAR_MODE_WHEN_READING):
	extern Vdebug_coding_detection.

	* fileio.c:
	* lread.c (Fload_internal):
	during load-internal, insert-file-contents-internal and
	write-region-internal, if `debug-coding-detection', show arguments
	to all calls.

	* lisp.h:
	* print.c:
	* print.c (fatal):
	* print.c (ext_print_begin):
	* print.c (debug_out_lisp):
	* print.c (debug_backtrace):
	* print.c (debug_short_backtrace):
	Clean up and rearrange; add debug_out_lisp(), for printf-like
	output involving Lisp objects.

2010-03-06  Ben Wing  <ben@xemacs.org>

	* charset.h (struct Lisp_Charset):
	* charset.h (CHARSET_BADVAL_UNICODE_CODE):
	* charset.h (XCHARSET_BADVAL_UNICODE_CODE):
	* text.c:
	* text.c (ichar_string_displayed_columns):
	* text.c (ibyte_string_nonascii_chars):
	* unicode.c:
	* unicode.c (find_badval_for_charset):
	* unicode.c (init_charset_unicode_tables):
	* unicode.c (set_unicode_conversion_char_to_unicode):
	* unicode.c (set_unicode_conversion_unicode_to_char):
	* unicode.c (set_unicode_conversion):
	* unicode.c (get_unicode_conversion_1):
	(1) Allow `nil' as a value to `set-unicode-conversion', to remove
	    a conversion for a particular charset codepoint.
	(2) Fix Unicode conversion so that all charset codepoints can be
	    assigned Unicode conversions.  We have to reserve one charset
	    codepoint as a "badval" to indicate that no conversion from
	    a particular Unicode codepoint exists.  Previously it was
	    impossible to assign a conversion to that charset codepoint,
	    but now we store the value specially in the charset and check
	    for it.  The setting for "badval" attempts to avoid any value
	    that is likely to exist in any known charsets, but the previous
	    value was set incorrectly so that it included an actual 
	    codepoint in `viscii'.  We also now have a test in mule-tests
	    that creates a 256x256 charset and checks that all codepoints
	    can be assigned conversions, to make sure we exercise the
	    "badval"-handling code.
	(3) There was still a bug in text.h that prevented non-Mule compiling;
	    fixed.
	(4) The previous check for setting a conversion for ascii or latin-1
	    was incorrect.

2010-03-06  Ben Wing  <ben@xemacs.org>

	* .gdbinit.in.in:
	* charset.h:
	* file-coding.c:
	* file-coding.c (coding_stream_extra_description_map):
	* file-coding.c (set_coding_stream_coding_system):
	* file-coding.c (sizeof_detection_state):
	* file-coding.c (allocate_detection_state):
	* file-coding.c (mark_detection_state):
	* file-coding.c (free_detection_state):
	* file-coding.c (struct undecided_coding_stream):
	* file-coding.c (undecided_init):
	* file-coding.c (undecided_mark):
	* file-coding.c (undecided_print):
	* file-coding.c (undecided_putprop):
	* file-coding.c (undecided_getprop):
	* file-coding.c (undecided_convert):
	* file-coding.c (syms_of_file_coding):
	* file-coding.c (coding_system_type_create):
	* file-coding.h:
	* file-coding.h (struct coding_system_methods):
	* file-coding.h (DEFINE_CODING_SYSTEM_TYPE_WITH_DATA):
	* file-coding.h (INITIALIZE_CODING_SYSTEM_TYPE_WITH_DATA):
	* file-coding.h (struct detection_state):
	* file-coding.h (struct detector_category):
	* file-coding.h (struct detector):
	* file-coding.h (struct coding_stream):
	* file-coding.h (CODING_STREAM_DATA):
	* gc.c:
	* gc.c (lispdesc_indirect_count_1):
	* gc.c (kkcc_backtrace_1):
	* gc.c (kkcc_short_backtrace):
	* gc.c (kkcc_marking):
	* gc.h:
	* gc.h (kkcc_detailed_backtrace):
	* inline.c:
	* intl-win32.c:
	* intl-win32.c (mswindows_multibyte_convert):
	* lisp.h:
	* lrecord.h:
	* lrecord.h (enum lrecord_type):
	* mule-ccl.c:
	* mule-ccl.c (syms_of_mule_ccl):
	* mule-ccl.h:
	* mule-coding.c:
	* mule-coding.c (struct multibyte_coding_stream):
	* mule-coding.c (struct iso2022_coding_stream):
	* mule-coding.c (iso2022_mark_iso2022_coding_stream):
	* mule-coding.c (iso2022_mark_coding_stream):
	* mule-coding.c (struct iso2022_detector):
	* mule-coding.c (iso2022_detect):
	* mule-coding.c (iso2022_mark_detection_state):
	* mule-coding.c (ccl_mark_coding_stream):
	* mule-coding.c (fixed_width_mark_coding_stream):
	* mule-coding.c (coding_system_type_create_mule_coding):
	* text.h:
	* unicode.c:
	Add general mechanisms for marking foo_coding_stream and
	foo_detector structures.  We have to add two mechanisms: one
	for old-GC (mark functions) and one for NEW_GC (KKCC/pdump
	object descriptions).  The latter is more of a pain and requires
	that we do some serious hacking in DEFINE_DETECTOR and friends.
	We also have to create a new `detection-state' Lisp object.
	All coding-system types that have associated data now have to
	provide a KKCC object description for the data.  Add descriptions
	and mark_coding_stream methods for iso2022, fixed-width, ccl and
	multibyte coding-system types.  We also add
	a new class of detectors with associated KKCC descriptions,
	when the foo_detector structure has Lisp objects in it;
	currently only iso2022 uses this.  Add a mark_detection_state()
	method for use in old-GC; again, only iso2022 uses this.

	Add mark_ccl_program() and a CCL-program KKCC description for
	use by the CCL coding-system type.

	Expand KKCC backtrace methods to four: short vs. detailed (detailed
	backtraces print the objects in question as opposed to just their
	types) and full vs. normal (normal prints only the 100 items at
	the top of the stack, instead of all of them).

	Clean up file-coding.h and add a big diagram at top showing
	how the various conversion and detection structures work.

	Clean up file-coding.c, rearranging code so that the detection
	code and the `undecided' coding system are no longer intermingled.

	Various fixes to charset.h and text.h to make things work under
	non-Mule; previous changes broke this.  Also change so that
	SLEDGEHAMMER_CHECK_TEXT is only defined when ERROR_CHECK_TEXT, not
	always.
	

2010-03-02  Ben Wing  <ben@xemacs.org>

	* file-coding.h (DECODE_OUTPUT_PARTIAL_CHAR):
	When there's a leftover partial, it's an error, so output an
	error octet character.
	
	* mule-coding.c (try_to_derive_character): Remove accidental
	debugging junk.
	* mule-coding.c (multibyte_print): Cosmetic fixes.
	* mule-coding.c (shift_jis_convert):
	* mule-coding.c (big5_convert):
	Rather than just outputting binary characters when an error is found,
	output an error-octet character.  Treat all high bytes other than
	those that correspond with Big5 or Shift-JIS character encoding
	sequences as errors.
	
	* mule-coding.c (iso2022_decode):
	* mule-coding.c (iso2022_encode):
	Output error-octet characters in various situations where errors
	occur.  FIXME: Currently, not guaranteed that we can exactly
	preserve the output upon various types of errors, although we try.
	We need to try harder and insert more error-octets.

	Upon encoding, recognize error-octet characters and output as such.
	(Same thing also happens now with Shift-JIS, and Big5, as well as
	Multibyte and Unicode, where it was doing it before.)

	Also fix a problem where interpretation of str->ch was changed from
	"0 means not there" to "-1 means not there" (so that zero bytes
	can be handled properly) but change wasn't propagated into code
	that Aidan had added.
	
	* mule-coding.c (ccl_convert):
	Comment fix.

2010-03-02  Ben Wing  <ben@xemacs.org>

	* charset.h: 
	* unicode.c:
	New functions unicode_to_one_charset_codepoint() and
	ichar_to_one_charset_codepoint() for converting a Unicode codepoint
	or Ichar to a charset codepoint of a single specified charset.
	
	* mule-coding.c:
	* mule-coding.c (handle_possible_error_octet):
	* mule-coding.c (try_to_derive_character):
	* mule-coding.c (multibyte_convert):
	Change the algorithm under old-Mule to iterate one charset at a
	time, in each charset trying to convert directly and then through
	Unicode-unification, rather than trying to convert directly on
	all charsets then do Unicode-unification on all charsets.

2010-03-02  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	* lisp.h (MULTIUSE_ALLOCA_FUNCALL_OK):
	New multi-use versions of ALLOCA() that are safe to use when
	more than one call to ALLOCA() occurs inside a single expression.
	Using GCC extensions, we can make all ALLOCA() calls safe in this
	way; otherwise we need additional trickery.
	
	* lisp.h (EXTBYTE_STRING_TO_ALLOCA):
	Fix defn of this macro.

	* lisp.h (C_STRING_TO_ALLOCA):
	Remove unused C_STRING_TO_ALLOCA.
	
	* text.c:
	* text.c (new_dfc_get_existing_size):
	* text.h:
	* text.h (NEW_DFC_CONVERT_1_ALLOCA):
	Fix DFC macros to use the multi-use versions of ALLOCA().

2010-03-02  Ben Wing  <ben@xemacs.org>

	* mule-wnnfns.c:
	* mule-wnnfns.c (Fwnn_open):
	* mule-wnnfns.c (Fwnn_dict_add):
	* mule-wnnfns.c (Fwnn_dict_list):
	* mule-wnnfns.c (Fwnn_get_zenkouho):
	* mule-wnnfns.c (Fwnn_inspect):
	* mule-wnnfns.c (Fwnn_bunsetu_kanji):
	* mule-wnnfns.c (Fwnn_bunsetu_yomi):
	* mule-wnnfns.c (Fwnn_word_info):
	* mule-wnnfns.c (Fwnn_dict_search):
	* mule-wnnfns.c (Fwnn_get_msg):
	* mule-wnnfns.c (Fwnn_fuzokugo_set):
	* mule-wnnfns.c (Fwnn_fuzokugo_get):
	* mule-wnnfns.c (Fwnn_hinsi_list):
	* mule-wnnfns.c (Fwnn_fisys_dict_add):
	* mule-wnnfns.c (Fwnn_fiusr_dict_add):
	* mule-wnnfns.c (Fwnn_notrans_dict_add):
	* mule-wnnfns.c (Fwnn_bmodify_dict_add):
	* mule-wnnfns.c (puts2):
	Fix compilation problems.

2010-02-28  Ben Wing  <ben@xemacs.org>

	* mule-coding.c (charsets_overlap): New function to properly
	compute whether two charsets overlap.
	* mule-coding.c (multibyte_putprop): Use it.
	

2010-02-28  Ben Wing  <ben@xemacs.org>

	* charset.h:
	* charset.h (ASSERT_VALID_CHARSET_CODEPOINT):
	* chartab.c (put_char_table):
	* chartab.c (map_char_table):
	* mule-charset.c (get_charset_limits):
	* mule-coding.c (multibyte_putprop):
	* objects-msw.c (mswindows_font_spec_matches_charset_stage_2):
	* text.c (get_external_charset_codepoint):
	* unicode.c (sledgehammer_check_to_table):
	Reverse args 3/4 of get_charset_limits so that the new order mirrors
	the logical range statement (LO1,LO2) - (HI1,HI2).  That is,
	logically it's a single two-dimensional range not two one-dimensional
	ranges, and the order now mirrors that.

2010-02-28  Ben Wing  <ben@xemacs.org>

	* charset.h:
	Add non-Mule XCHARSET_MIN_CODE and XCHARSET_MAX_CODE defs to
	get things to compile.

	Delete an erroneous assert triggered by preceding changes in
	multibyte encoding/decoding.

2010-02-28  Ben Wing  <ben@xemacs.org>

	* mule-coding.c:
	* mule-coding.c (add_unicode_to_dynarr):
	Move this function and macro DECODE_ERROR_OCTET up top so they can
	be used everywhere in the file.

	Various changes to multibyte:

	(1) Check for and disallow overlapping ranges.  Alternate code is in
	place to handle overlapping ranges, protected by an ifdef; but it
	needs more thought so it isn't enabled currently.

	(2) Implement Unicode unification under old-Mule -- if it can't
	convert directly between charset codepoint and character encoded
	using that charset, convert between charset codepoint and any
	character with the same Unicode mapping as the charset codepoint.

	(3) Implement proper error-handling -- or at least, insert error
	octets in a buffer upon error, and translate them back into raw
	octets upon write-out.

	In ISO-2022 decoding, instead of adding raw bytes upon invalid
	sequence, add equivalent error octets.

	Use UNICODE_PRIVATE_MAX instead of hardcoded number.
	
	* mule-coding.c (try_to_derive_character):
	* mule-coding.c (multibyte_convert):
	* mule-coding.c (multibyte_putprop):
	* mule-coding.c (big5_convert):
	* mule-coding.c (indicate_invalid_utf_8):
	* mule-coding.c (iso2022_decode):

2010-02-28  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	* redisplay-xlike-inc.c (separate_textual_runs_mule):
	* text.c (internal_to_external_charset_codepoint):
	* text.c (check_coerce_octet):
	* text.c (external_char_to_charset_codepoint):
	* text.c (Fchar_to_charset_codepoint):
	* text.c (Fchar_charset):
	* text.c (Fchar_octet):
	* text.c (Fsplit_char):
	Add munge_codepoints argument to
	internal_to_external_charset_codepoint so in a single step we
	convert from internal to external, either munged or not.  Remove
	the munge_codepoints argument from
	external_char_to_charset_codepoint().  Together, these get rid
	of assertion failures that came from have internal munged (i.e.
	invalid) codepoints.  It may also fix some CCL problems -- it
	definitely fixed a bug in CCL handling, where munging wasn't
	happening but was certainly expected.  Eliminate
	external_to_internal_charset_codepoint() --
	just use get_external_unicode_codepoint().  

2010-02-28  Ben Wing  <ben@xemacs.org>

	* text.h:
	* text.h (ibyte_first_byte_p):
	* unicode.c:
	* unicode.c (encode_unicode_char):
	* unicode.c (unicode_convert):
	* unicode.h:
	Add non-Mule defn of ibyte_first_byte_p(), now needed.

	Move some basic Unicode defns from text.h and unicode.c
	to unicode.h.	Add unicode_error_octet_code_p() to check if
	a particular Unicode codepoint is an error-octet codepoint.

	Use unicode_error_octet_code_p() and UNICODE_OFFICIAL_MAX in
	place of hard-coded values.  Simplify logic that handles
	error-octets.

2010-03-22  Vin Shelton  <acs@xemacs.org>

	* window.c (vars_of_window): Move HAVE_SCROLLBARS test so the code
	can compile under Visual Studio 6.

2010-03-21  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (tick_lrecord_stats):
	Fix the union build after Ben's last change, don't assume that a
	Lisp_Object will fit into a Bytecount.

2010-03-25  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (struct):
	* alloc.c (finish_object_memory_usage_stats):
	* alloc.c (object_memory_usage_stats):
	* alloc.c (Fobject_memory_usage):
	* alloc.c (lisp_object_memory_usage_full):
	* alloc.c (compute_memusage_stats_length):
	* lrecord.h:
	* lrecord.h (struct lrecord_implementation):
	Add fields to the `lrecord_implementation' structure to list an
	offset into the array of extra statistics in a
	`struct generic_usage_stats' and a length, listing the first slice
	of ancillary Lisp-object memory.  Compute automatically in
	compute_memusage_stats_length().  Use to add an entry
	`FOO-lisp-ancillary-storage' for object type FOO.

	Don't crash when an int or char is given to object-memory-usage,
	signal an error instead.

	Add functions lisp_object_memory_usage_full() and
	lisp_object_memory_usage() to compute the total memory usage of an
	object (sum of object, non-Lisp attached, and Lisp ancillary
	memory).

	* array.c:
	* array.c (gap_array_memory_usage):
	* array.h:
	Add function to return memory usage of a gap array.

	* buffer.c (struct buffer_stats):
	* buffer.c (compute_buffer_usage):
	* buffer.c (vars_of_buffer):
	* extents.c (compute_buffer_extent_usage):
	* marker.c:
	* marker.c (compute_buffer_marker_usage):
	* extents.h:
	* lisp.h:
	Remove `struct usage_stats' arg from compute_buffer_marker_usage()
	and compute_buffer_extent_usage() -- these are ancillary Lisp
	objects and don't get accumulated into `struct usage_stats';
	change the value of `memusage_stats_list' so that `markers' and
	`extents' memory is in Lisp-ancillary, where it belongs.

	In compute_buffer_marker_usage(), use lisp_object_memory_usage()
	rather than lisp_object_storage_size().

	* casetab.c:
	* casetab.c (case_table_memory_usage):
	* casetab.c (vars_of_casetab):
	* emacs.c (main_1):
	Add memory usage stats for case tables.

	* lisp.h:
	Add comment explaining the `struct generic_usage_stats' more,
	as well as the new fields in lrecord_implementation.

	* console-impl.h:
	* console-impl.h (struct console_methods):
	* scrollbar-gtk.c:
	* scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage):
	* scrollbar-msw.c:
	* scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage):
	* scrollbar-x.c:
	* scrollbar-x.c (x_compute_scrollbar_instance_usage):
	* scrollbar.c:
	* scrollbar.c (struct scrollbar_instance_stats):
	* scrollbar.c (compute_all_scrollbar_instance_usage):
	* scrollbar.c (scrollbar_instance_memory_usage):
	* scrollbar.c (scrollbar_objects_create):
	* scrollbar.c (vars_of_scrollbar):
	* scrollbar.h:
	* symsinit.h:
	* window.c:
	* window.c (find_window_mirror_maybe):
	* window.c (struct window_mirror_stats):
	* window.c (compute_window_mirror_usage):
	* window.c (window_mirror_memory_usage):
	* window.c (compute_window_usage):
	* window.c (window_objects_create):
	* window.c (syms_of_window):
	* window.c (vars_of_window):
	Redo memory-usage associated with windows, window mirrors, and
	scrollbar instances.  Should fix crash in find_window_mirror,
	among other things.  Properly assign memo ry to object memory,
	non-Lisp extra memory, and Lisp ancillary memory.  For example,
	redisplay structures are non-Lisp memory hanging off a window
	mirror, not a window; make it an ancillary Lisp-object field.
	Window mirrors and scrollbar instances have their own statistics,
	among other things.

2010-03-24  Ben Wing  <ben@xemacs.org>

	* array.h:
	* array.h (XD_LISP_DYNARR_DESC):
	* dumper.c (pdump_register_sub):
	* dumper.c (pdump_store_new_pointer_offsets):
	* dumper.c (pdump_reloc_one_mc):
	* elhash.c:
	* gc.c  (lispdesc_one_description_line_size):
	* gc.c (kkcc_marking):
	* lrecord.h:
	* lrecord.h (IF_NEW_GC):
	* lrecord.h (enum memory_description_type):
	* lrecord.h (enum data_description_entry_flags):
	* lrecord.h (struct opaque_convert_functions):
	Rename XD_LISP_OBJECT_BLOCK_PTR to XD_INLINE_LISP_OBJECT_BLOCK_PTR
	and document it in lrecord.h.

	* data.c:
	* data.c (finish_marking_weak_lists):
	* data.c (continue_marking_ephemerons):
	* data.c (finish_marking_ephemerons):
	* elhash.c (MARK_OBJ):
	* gc.c:
	* gc.c (lispdesc_indirect_count_1):
	* gc.c (struct):
	* gc.c (kkcc_bt_push):
	* gc.c (kkcc_gc_stack_push):
	* gc.c (kkcc_gc_stack_push_lisp_object):
	* gc.c (kkcc_gc_stack_repush_dirty_object):
	* gc.c (KKCC_DO_CHECK_FREE):
	* gc.c (mark_object_maybe_checking_free):
	* gc.c (mark_struct_contents):
	* gc.c (mark_lisp_object_block_contents):
	* gc.c (register_for_finalization):
	* gc.c (mark_object):
	* gc.h:
	* lisp.h:
	* profile.c:
	* profile.c (mark_profiling_info_maphash):
	Clean up KKCC code related to DEBUG_XEMACS.  Rename
	kkcc_backtrace() to kkcc_backtrace_1() and add two params: a
	`size' arg to control how many stack elements to print and a
	`detailed' arg to control whether Lisp objects are printed using
	`debug_print()'.  Create front-ends to kkcc_backtrace_1() --
	kkcc_detailed_backtrace(), kkcc_short_backtrace(),
	kkcc_detailed_backtrace_full(), kkcc_short_backtrace_full(), as
	well as shortened versions kbt(), kbts(), kbtf(), kbtsf() -- to
	call it with various parameter values.  Add an `is_lisp' field to
	the stack and backtrace structures and use it to keep track of
	whether an object pushed onto the stack is a Lisp object or a
	non-Lisp structure; in kkcc_backtrace_1(), don't try to print a
	non-Lisp structure as a Lisp object.

	* elhash.c:
	* extents.c:
	* file-coding.c:
	* lrecord.h:
	* lrecord.h (IF_NEW_GC):
	* marker.c:
	* marker.c (Fmarker_buffer):
	* mule-coding.c:
	* number.c:
	* rangetab.c:
	* specifier.c:
	New macros IF_OLD_GC(), IF_NEW_GC() to simplify declaration of
	Lisp objects when a finalizer may exist in one but not the other.
	Use them appropriately.

	* extents.c (finalize_extent_info):
	Don't zero out data->soe and data->extents before trying to free,
	else we get memory leaks.

	* lrecord.h (enum lrecord_type):
	Make the first lrecord type have value 1 not 0 so that 0 remains
	without implementation and attempts to interpret zeroed memory
	as a Lisp object will be more obvious.

	* array.c (Dynarr_free):
	* device-msw.c (msprinter_delete_device):
	* device-tty.c (free_tty_device_struct):
	* device-tty.c (tty_delete_device):
	* dialog-msw.c (handle_directory_dialog_box):
	* dialog-x.c:
	* emacs.c (free_argc_argv):
	* emodules.c (attempt_module_delete):
	* file-coding.c (chain_finalize_coding_stream_1):
	* file-coding.c (chain_finalize_coding_stream):
	* glyphs-eimage.c:
	* glyphs-eimage.c (jpeg_instantiate_unwind):
	* glyphs-eimage.c (gif_instantiate_unwind):
	* glyphs-eimage.c (png_instantiate_unwind):
	* glyphs-eimage.c (tiff_instantiate_unwind):
	* imgproc.c:
	* imgproc.c (build_EImage_quantable):
	* insdel.c (uninit_buffer_text):
	* mule-coding.c (iso2022_finalize_detection_state):
	* objects-tty.c (tty_finalize_color_instance):
	* objects-tty.c (tty_finalize_font_instance):
	* objects-tty.c (tty_font_list):
	* process.c:
	* process.c (finalize_process):
	* redisplay.c (add_propagation_runes):
	* scrollbar-gtk.c:
	* scrollbar-gtk.c (gtk_free_scrollbar_instance):
	* scrollbar-gtk.c (gtk_release_scrollbar_instance):
	* scrollbar-msw.c:
	* 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-x.c:
	* select-x.c (x_handle_selection_request):
	* syntax.c:
	* syntax.c (uninit_buffer_syntax_cache):
	* text.h (eifree):
	If possible, whenever we call xfree() on a field in a structure,
	set the field to 0 afterwards.  A lot of code is written so that
	it checks the value being freed to see if it is non-zero before
	freeing it -- doing this and setting the value to 0 afterwards
	ensures (a) we won't try to free twice if the cleanup code is
	called twice; (b) if the object itself stays around, KKCC won't
	crash when attempting to mark the freed field.

	* rangetab.c:
	Add a finalization method when not NEW_GC to avoid memory leaks.
	(#### We still get memory leaks when NEW_GC; need to convert gap
	array to Lisp object).

2010-03-22  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (objs):
	* array.c:
	* array.c (gap_array_adjust_markers):
	* array.c (gap_array_move_gap):
	* array.c (gap_array_make_gap):
	* array.c (gap_array_insert_els):
	* array.c (gap_array_delete_els):
	* array.c (gap_array_make_marker):
	* array.c (gap_array_delete_marker):
	* array.c (gap_array_delete_all_markers):
	* array.c (gap_array_clone):
	* array.h:
	* depend:
	* emacs.c (main_1):
	* extents.c:
	* extents.c (EXTENT_GAP_ARRAY_AT):
	* extents.c (extent_list_num_els):
	* extents.c (extent_list_locate):
	* extents.c (extent_list_at):
	* extents.c (extent_list_delete_all):
	* extents.c (allocate_extent_list):
	* extents.c (syms_of_extents):
	* extents.h:
	* extents.h (XEXTENT_LIST_MARKER):
	* lisp.h:
	* rangetab.c:
	* rangetab.c (mark_range_table):
	* rangetab.c (print_range_table):
	* rangetab.c (range_table_equal):
	* rangetab.c (range_table_hash):
	* rangetab.c (verify_range_table):
	* rangetab.c (get_range_table_pos):
	* rangetab.c (Fmake_range_table):
	* rangetab.c (Fcopy_range_table):
	* rangetab.c (Fget_range_table):
	* rangetab.c (put_range_table):
	* rangetab.c (Fclear_range_table):
	* rangetab.c (Fmap_range_table):
	* rangetab.c (unified_range_table_bytes_needed):
	* rangetab.c (unified_range_table_copy_data):
	* rangetab.c (unified_range_table_lookup):
	* rangetab.h:
	* rangetab.h (struct range_table_entry):
	* rangetab.h (struct Lisp_Range_Table):
	* rangetab.h (rangetab_gap_array_at):
	* symsinit.h:
	Rename dynarr.c to array.c.  Move gap array from extents.c to array.c.
	Extract dynarr, gap array and stack-like malloc into new file array.h.
	Rename GAP_ARRAY_NUM_ELS -> gap_array_length().  Add gap_array_at(),
	gap_array_atp().

	Rewrite range table code to use gap arrays.  Make put_range_table()
	smarter so that its operation is O(log n) for adding a localized
	range.

	* gc.c (lispdesc_block_size_1):
	Don't ABORT() when two elements are located at the same place.
	This will happen with a size-0 gap array -- both parts of the array
	(before and after gap) are in the same place.

2010-03-21  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (assert_proper_sizing):
	* alloc.c (c_readonly):
	* alloc.c (malloced_storage_size):
	* alloc.c (fixed_type_block_overhead):
	* alloc.c (lisp_object_storage_size):
	* alloc.c (inc_lrecord_stats):
	* alloc.c (dec_lrecord_stats):
	* alloc.c (pluralize_word):
	* alloc.c (object_memory_usage_stats):
	* alloc.c (Fobject_memory_usage):
	* alloc.c (compute_memusage_stats_length):
	* alloc.c (disksave_object_finalization_1):
	* alloc.c (Fgarbage_collect):
	* mc-alloc.c:
	* mc-alloc.c (mc_alloced_storage_size):
	* mc-alloc.h:
	No functionality change here.  Collect the allocations-statistics
	code that was scattered throughout alloc.c into one place.  Add
	remaining section headings so that all sections have headings
	clearly identifying the start of the section and its purpose.
	Expose mc_alloced_storage_size() even when not MEMORY_USAGE_STATS;
	this fixes build problems and is related to the export of
	lisp_object_storage_size() and malloced_storage_size() when
	non-MEMORY_USAGE_STATS in the previous change set.

2010-03-20  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (init_lrecord_stats):
	* alloc.c (free_normal_lisp_object):
	* alloc.c (struct):
	* alloc.c (clear_lrecord_stats):
	* alloc.c (tick_lrecord_stats):
	* alloc.c (COUNT_FROB_BLOCK_USAGE):
	* alloc.c (COPY_INTO_LRECORD_STATS):
	* alloc.c (sweep_strings):
	* alloc.c (UNMARK_string):
	* alloc.c (gc_sweep_1):
	* alloc.c (finish_object_memory_usage_stats):
	* alloc.c (object_memory_usage_stats):
	* alloc.c (object_dead_p):
	* alloc.c (fixed_type_block_overhead):
	* alloc.c (lisp_object_storage_size):
	* emacs.c (main_1):
	* lisp.h:
	* lrecord.h:
	Export lisp_object_storage_size() and malloced_storage_size() even
	when not MEMORY_USAGE_STATS, to get the non-MEMORY_USAGE_STATS
	build to compile.

	Don't export fixed_type_block_overhead() any more.

	Some code cleanup, rearrangement, add some section headers.

	Clean up various bugs especially involving computation of overhead
	and double-counting certain usage in total_gc_usage.  Add
	statistics computing the overhead used by all types.  Don't add a
	special entry for string headers in the object-memory-usage-stats
	because it's already present as just "string".  But do count the
	overhead used by long strings.  Don't try to call the
	memory_usage() methods when NEW_GC because there's nowhere obvious
	in the sweep stage to make the calls.

	* marker.c (compute_buffer_marker_usage):
	Just use lisp_object_storage_size() rather than trying to
	reimplement it.

2010-03-19  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (struct):
	* alloc.c (tick_lrecord_stats):
	* alloc.c (gc_sweep_1):
	* alloc.c (finish_object_memory_usage_stats):
	* alloc.c (object_memory_usage_stats):
	* alloc.c (compute_memusage_stats_length):
	Call new memory-usage mechanism at sweep time to compute extra
	memory utilization for all objects.  Add up the values element-by-
	element to get an aggregrate set of statistics, where each is the
	sum of the values of a single statistic across different objects
	of the same type.  At end of sweep time, call
	finish_object_memory_usage_stats() to add up all the aggreggrate
	stats that are related to non-Lisp memory storage to compute
	a single value, and add it to the list of values returned by
	`garbage-collect' and `object-memory-usage-stats'.

	* buffer.c (compute_buffer_text_usage):
	Don't crash on buffers without text (killed buffers?) and don't
	double-count indirect buffers.

	* elhash.c:
	* elhash.c (hash_table_objects_create):
	* elhash.c (vars_of_elhash):
	* symsinit.h:
	Add memory-usage method to count the size of `hentries'.

	* emacs.c (main_1):
	Call new functions in elhash.c, frame.c at init.

	* frame.c:
	* frame.c (compute_frame_usage):
	* frame.c (frame_memory_usage):
	* frame.c (frame_objects_create):
	* symsinit.h:
	Add memory-usage method to count gutter display structures,
	subwindow exposures.

	* gc.c (gc_finish):
	* lisp.h:
	Declare finish_object_memory_usage_stats(), call it in gc_finish().

	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (INIT_MEMORY_USAGE_STATS):
	New value in implementation struct to track number of non-Lisp-memory
	statistics.  Computed in alloc.c.


2010-03-18  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (disksave_object_finalization_1):
	* alloc.c (lisp_object_storage_size):
	* alloc.c (listu):
	* alloc.c (listn):
	* alloc.c (Fobject_memory_usage_stats):
	* alloc.c (compute_memusage_stats_length):
	* alloc.c (Fobject_memory_usage):
	* alloc.c (Ftotal_object_memory_usage):
	* alloc.c (malloced_storage_size):
	* alloc.c (common_init_alloc_early):
	* alloc.c (reinit_alloc_objects_early):
	* alloc.c (reinit_alloc_early):
	* alloc.c (init_alloc_once_early):
	* alloc.c (syms_of_alloc):
	* alloc.c (reinit_vars_of_alloc):
	* buffer.c:
	* buffer.c (struct buffer_stats):
	* buffer.c (compute_buffer_text_usage):
	* buffer.c (compute_buffer_usage):
	* buffer.c (buffer_memory_usage):
	* buffer.c (buffer_objects_create):
	* buffer.c (syms_of_buffer):
	* buffer.c (vars_of_buffer):
	* console-impl.h (struct console_methods):
	* dynarr.c (Dynarr_memory_usage):
	* emacs.c (main_1):
	* events.c (clear_event_resource):
	* extents.c:
	* extents.c (compute_buffer_extent_usage):
	* extents.c (extent_objects_create):
	* extents.h:
	* faces.c:
	* faces.c (compute_face_cachel_usage):
	* faces.c (face_objects_create):
	* faces.h:
	* general-slots.h:
	* glyphs.c:
	* glyphs.c (compute_glyph_cachel_usage):
	* glyphs.c (glyph_objects_create):
	* glyphs.h:
	* lisp.h:
	* lisp.h (struct usage_stats):
	* lrecord.h:
	* lrecord.h (enum lrecord_type):
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE):
	* lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT):
	* lrecord.h (MAKE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT):
	* lrecord.h (MAKE_MODULE_LISP_OBJECT):
	* lrecord.h (INIT_LISP_OBJECT):
	* lrecord.h (INIT_MODULE_LISP_OBJECT):
	* lrecord.h (UNDEF_LISP_OBJECT):
	* lrecord.h (UNDEF_MODULE_LISP_OBJECT):
	* lrecord.h (DECLARE_LISP_OBJECT):
	* lrecord.h (DECLARE_MODULE_API_LISP_OBJECT):
	* lrecord.h (DECLARE_MODULE_LISP_OBJECT):
	* lstream.c:
	* lstream.c (syms_of_lstream):
	* lstream.c (vars_of_lstream):
	* marker.c:
	* marker.c (compute_buffer_marker_usage):
	* mc-alloc.c (mc_alloced_storage_size):
	* mc-alloc.h:
	* mule-charset.c:
	* mule-charset.c (struct charset_stats):
	* mule-charset.c (compute_charset_usage):
	* mule-charset.c (charset_memory_usage):
	* mule-charset.c (mule_charset_objects_create):
	* mule-charset.c (syms_of_mule_charset):
	* mule-charset.c (vars_of_mule_charset):
	* redisplay.c:
	* redisplay.c (compute_rune_dynarr_usage):
	* redisplay.c (compute_display_block_dynarr_usage):
	* redisplay.c (compute_glyph_block_dynarr_usage):
	* redisplay.c (compute_display_line_dynarr_usage):
	* redisplay.c (compute_line_start_cache_dynarr_usage):
	* redisplay.h:
	* scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage):
	* scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage):
	* scrollbar-x.c (x_compute_scrollbar_instance_usage):
	* scrollbar.c (compute_scrollbar_instance_usage):
	* scrollbar.h:
	* symbols.c:
	* symbols.c (reinit_symbol_objects_early):
	* symbols.c (init_symbols_once_early):
	* symbols.c (reinit_symbols_early):
	* symbols.c (defsymbol_massage_name_1):
	* symsinit.h:
	* ui-gtk.c:
	* ui-gtk.c (emacs_gtk_object_getprop):
	* ui-gtk.c (emacs_gtk_object_putprop):
	* ui-gtk.c (ui_gtk_objects_create):
	* unicode.c (compute_from_unicode_table_size_1):
	* unicode.c (compute_to_unicode_table_size_1):
	* unicode.c (compute_from_unicode_table_size):
	* unicode.c (compute_to_unicode_table_size):
	* window.c:
	* window.c (struct window_stats):
	* window.c (compute_window_mirror_usage):
	* window.c (compute_window_usage):
	* window.c (window_memory_usage):
	* window.c (window_objects_create):
	* window.c (syms_of_window):
	* window.c (vars_of_window):
	* window.h:
	Redo memory-usage mechanism, make it general; add way of dynamically
	initializing Lisp object types -- OBJECT_HAS_METHOD(), similar to
	CONSOLE_HAS_METHOD().

	(1) Create OBJECT_HAS_METHOD(), OBJECT_HAS_PROPERTY() etc. for
	specifying that a Lisp object type has a particular method or
	property.  Call such methods with OBJECT_METH, MAYBE_OBJECT_METH,
	OBJECT_METH_OR_GIVEN; retrieve properties with OBJECT_PROPERTY.
	Methods that formerly required a DEFINE_*GENERAL_LISP_OBJECT() to
	specify them (getprop, putprop, remprop, plist, disksave) now
	instead use the dynamic-method mechanism.  The main benefit of
	this is that new methods or properties can be added without
	requiring that the declaration statements of all existing methods
	be modified.  We have to make the `struct lrecord_implementation'
	non-const, but I don't think this should have any effect on speed --
	the only possible method that's really speed-critical is the
	mark method, and we already extract those out into a separate
	(non-const) array for increased cache locality.

	Object methods need to be reinitialized after pdump, so we put
	them in separate functions such as face_objects_create(),
	extent_objects_create() and call them appropriately from emacs.c
	The only current object property (`memusage_stats_list') that
	objects can specify is a Lisp object and gets staticpro()ed so it
	only needs to be set during dump time, but because it references
	symbols that might not exist in a syms_of_() function, we
	initialize it in vars_of_().  There is also an object property
	(`num_extra_memusage_stats') that is automatically initialized based
	on `memusage_stats_list'; we do that in reinit_vars_of_alloc(),
	which is called after all vars_of_() functions are called.

	`disksaver' method was renamed `disksave' to correspond with the
	name normally given to the function (e.g. disksave_lstream()).

	(2) Generalize the memory-usage mechanism in `buffer-memory-usage',
	`window-memory-usage', `charset-memory-usage' into an object-type-
	specific mechanism called by a single function
	`object-memory-usage'.  (Former function `object-memory-usage'
	renamed to `total-object-memory-usage').  Generalize the mechanism
	of different "slices" so that we can have different "classes" of
	memory described and different "slices" onto each class; `t'
	separates classes, `nil' separates slices.  Currently we have
	three classes defined: the memory of an object itself,
	non-Lisp-object memory associated with the object (e.g. arrays or
	dynarrs stored as fields in the object), and Lisp-object memory
	associated with the object (other internal Lisp objects stored in
	the object).  This isn't completely finished yet and we might need
	to further separate the "other internal Lisp objects" class into
	two classes.

	The memory-usage mechanism uses a `struct usage_stats' (renamed
	from `struct overhead_stats') to describe a malloc-view onto a set
	of allocated memory (listing how much was requested and various
	types of overhead) and a more general `struct generic_usage_stats'
	(with a `struct usage_stats' in it) to hold all statistics about
	object memory.  `struct generic_usage_stats' contains an array of
	32 Bytecounts, which are statistics of unspecified semantics.  The
	intention is that individual types declare a corresponding struct
	(e.g. `struct window_stats') with the same structure but with
	specific fields in place of the array, corresponding to specific
	statistics.  The number of such statistics is an object property
	computed from the list of tags (Lisp symbols describing the
	statistics) stored in `memusage_stats_list'.  The idea here is to
	allow particular object types to customize the number and
	semantics of the statistics where completely avoiding consing.
	This doesn't matter so much yet, but the intention is to have the
	memory usage of all objects computed at the end of GC, at the same
	time as other statistics are currently computed.  The values for
	all statistics for a single type would be added up to compute
	aggregate values for all objects of a specific type.  To make this
	efficient, we can't allow any memory allocation at all.

	(3) Create some additional functions for creating lists that
	specify the elements directly as args rather than indirectly through
	an array: listn() (number of args given), listu() (list terminated
	by Qunbound).

	(4) Delete a bit of remaining unused C window_config stuff, also
	unused lrecord_type_popup_data.


2010-03-18  Ben Wing  <ben@xemacs.org>

	* tests.c:
	* tests.c (Ftest_data_format_conversion):
	Need to GCPRO newly created objects or we'll eventually get
	a crash due to occurrence of call2().

2010-03-16  Ben Wing  <ben@xemacs.org>

	* alloc.c (make_lcrecord_list):
	* alloc.c (alloc_managed_lcrecord):
	Fix compilation problems identified by Robert Delius Royar.

2010-03-15  Ben Wing  <ben@xemacs.org>

	* extents.c (Fprevious_single_property_change):
	* extents.c (Fnext_single_char_property_change):
	* extents.c (Fprevious_single_char_property_change):
	Fix see-also portion of documentation string.

2010-03-15  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (c_readonly):
	* alloc.c (deadbeef_memory):
	* alloc.c (make_compiled_function):
	* alloc.c (make_button_data):
	* alloc.c (make_motion_data):
	* alloc.c (make_process_data):
	* alloc.c (make_timeout_data):
	* alloc.c (make_magic_data):
	* alloc.c (make_magic_eval_data):
	* alloc.c (make_eval_data):
	* alloc.c (make_misc_user_data):
	* alloc.c (noseeum_make_marker):
	* alloc.c (ADDITIONAL_FREE_string):
	* alloc.c (common_init_alloc_early):
	* alloc.c (init_alloc_once_early):
	* bytecode.c (print_compiled_function):
	* bytecode.c (mark_compiled_function):
	* casetab.c:
	* casetab.c (print_case_table):
	* console.c:
	* console.c (print_console):
	* database.c (print_database):
	* database.c (finalize_database):
	* device-msw.c (sync_printer_with_devmode):
	* device-msw.c (print_devmode):
	* device-msw.c (finalize_devmode):
	* device.c:
	* device.c (print_device):
	* elhash.c:
	* elhash.c (print_hash_table):
	* eval.c (print_multiple_value):
	* eval.c (mark_multiple_value):
	* events.c (deinitialize_event):
	* events.c (print_event):
	* events.c (event_equal):
	* extents.c:
	* extents.c (soe_dump):
	* extents.c (soe_insert):
	* extents.c (soe_delete):
	* extents.c (soe_move):
	* extents.c (extent_fragment_update):
	* extents.c (print_extent_1):
	* extents.c (print_extent):
	* extents.c (vars_of_extents):
	* frame.c:
	* frame.c (print_frame):
	* free-hook.c:
	* free-hook.c (check_free):
	* glyphs.c:
	* glyphs.c (print_image_instance):
	* glyphs.c (print_glyph):
	* gui.c:
	* gui.c (copy_gui_item):
	* hash.c:
	* hash.c (NULL_ENTRY):
	* hash.c (KEYS_DIFFER_P):
	* keymap.c (print_keymap):
	* keymap.c (MARKED_SLOT):
	* lisp.h:
	* lrecord.h:
	* lrecord.h (LISP_OBJECT_UID):
	* lrecord.h (set_lheader_implementation):
	* lrecord.h (struct old_lcrecord_header):
	* lstream.c (print_lstream):
	* lstream.c (finalize_lstream):
	* marker.c (print_marker):
	* marker.c (marker_equal):
	* mc-alloc.c (visit_all_used_page_headers):
	* mule-charset.c:
	* mule-charset.c (print_charset):
	* objects.c (print_color_instance):
	* objects.c (print_font_instance):
	* objects.c (finalize_font_instance):
	* opaque.c (print_opaque):
	* opaque.c (print_opaque_ptr):
	* opaque.c (equal_opaque_ptr):
	* print.c (internal_object_printer):
	* print.c (enum printing_badness):
	* rangetab.c (print_range_table):
	* rangetab.c (range_table_equal):
	* specifier.c (print_specifier):
	* specifier.c (finalize_specifier):
	* symbols.c:
	* symbols.c (print_symbol_value_magic):
	* tooltalk.c:
	* tooltalk.c (print_tooltalk_message):
	* tooltalk.c (print_tooltalk_pattern):
	* window.c (print_window):
	* window.c (debug_print_window):
	(1) Make lrecord UID's have a separate UID space for each object.
	Otherwise, with 20-bit UID's, we rapidly wrap around, especially
	when common objects like conses and strings increment the UID value
	for every object created. (Originally I tried making two UID spaces,
	one for objects that always print readably and hence don't display
	the UID, and one for other objects.  But certain objects like markers
	for which a UID is displayed are still generated rapidly enough that
	UID overflow is a serious issue.) This also has the advantage of
	making UID values smaller, hence easier to remember -- their main
	purpose is to make it easier to keep track of different objects of
	the same type when debugging code.  Make sure we dump lrecord UID's
	so that we don't have problems with pdumped and non-dumped objects
	having the same UID.

	(2) Display UID's consistently whenever an object (a) doesn't
	consistently print readably (objects like cons and string, which
	always print readably, can't display a UID), and (b) doesn't
	otherwise have a unique property that makes objects of a
	particular type distinguishable. (E.g. buffers didn't and still
	don't print an ID, but the buffer name uniquely identifies the
	buffer.) Some types, such as event, extent, compiled-function,
	didn't always (or didn't ever) display an ID; others (such as
	marker, extent, lstream, opaque, opaque-ptr, any object using
	internal_object_printer()) used to display the actual machine
	pointer instead.

	(3) Rename NORMAL_LISP_OBJECT_UID to LISP_OBJECT_UID; make it work
	over all Lisp objects and take a Lisp object, not a struct pointer.

	(4) Some misc cleanups in alloc.c, elhash.c.

	(5) Change code in events.c that "deinitializes" an event so that
	it doesn't increment the event UID counter in the process.  Also
	use deadbeef_memory() to overwrite memory instead of doing the same
	with custom code.  In the process, make deadbeef_memory() in
	alloc.c always available, and delete extraneous copy in mc-alloc.c.
	Also capitalize all uses of 0xDEADBEEF.  Similarly in elhash.c
	call deadbeef_memory().

	(6) Resurrect "debug SOE" code in extents.c.  Make it conditional
	on DEBUG_XEMACS and on a `debug-soe' variable, rather than on
	SOE_DEBUG.  Make it output to stderr, not stdout.

	(7) Delete some custom print methods that were identical to
	external_object_printer().

2010-03-12  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	* lisp.h (redo-symbols): Removed.
	Put the Lisp variables and symbols where they belong, with other
	stuff related to the file they're in.

	* event-Xt.c (THIS_IS_X):
	* event-Xt.c (syms_of_event_Xt):
	* event-Xt.c (reinit_vars_of_event_Xt):
	* event-gtk.c:
	* event-gtk.c (syms_of_event_gtk):
	* event-gtk.c (reinit_vars_of_event_gtk):
	* event-stream.c:
	* event-stream.c (syms_of_event_stream):
	* event-stream.c (reinit_vars_of_event_stream):
	* events.c (reinit_vars_of_events):
	* events.c (vars_of_events):
	`sans-modifiers' was defsymbol'ed more than once.  Move it to
	events-stream.c. `self-insert-command' was defsymbol'ed more than once.
	Vevent_resource should be staticpro_nodump()ed as it's declared in
	a reinit_*() method.

	* lread.c (vars_of_lread):
	Vfile_domain wasn't staticpro'ed.

	* minibuf.c:
	* minibuf.c (reinit_complex_vars_of_minibuf):
	Vminibuffer_zero and Vecho_area_buffer weren't staticpro'ed.

2010-03-12  Ben Wing  <ben@xemacs.org>

	* redisplay-msw.c:
	* redisplay-msw.c (mswindows_output_dibitmap_region):
	* redisplay-msw.c (mswindows_output_pixmap):
	* redisplay-msw.c (mswindows_clear_region):
	Have a crack at implementing the `absolute' property for
	background pixmaps.  It seems to work; however, things don't
	work quite right in relation to window sizing/moving.  In particular,
	ideally when you move the window the background should stay in place
	but it doesn't; instead it moves, and when you hit C-l it gets
	redrawn in the "proper" place.  When resizing you get some serious
	jitter, apparently as first the image gets moved then redrawn in
	the correct offset position.  #### Not sure how to fix this.

2010-03-13  Ben Wing  <ben@xemacs.org>

	* alloc.c (alloc_sized_lrecord_1):
	* alloc.c (alloc_sized_lrecord_array):
	* alloc.c (old_alloc_sized_lcrecord):
	* alloc.c (disksave_object_finalization_1):
	* alloc.c (mark_lcrecord_list):
	* alloc.c (alloc_managed_lcrecord):
	* alloc.c (free_managed_lcrecord):
	* alloc.c (tick_lcrecord_stats):
	* alloc.c (sweep_lcrecords_1):
	* buffer.c (print_buffer):
	* buffer.c (DEFVAR_BUFFER_LOCAL_1):
	* casetab.c:
	* casetab.c (print_case_table):
	* console.c (print_console):
	* console.c (DEFVAR_CONSOLE_LOCAL_1):
	* data.c (print_weak_list):
	* data.c (print_weak_box):
	* data.c (print_ephemeron):
	* data.c (ephemeron_equal):
	* database.c (print_database):
	* database.c (finalize_database):
	* device-msw.c (sync_printer_with_devmode):
	* device-msw.c (print_devmode):
	* device-msw.c (finalize_devmode):
	* device.c:
	* device.c (print_device):
	* elhash.c:
	* elhash.c (print_hash_table):
	* eval.c (print_subr):
	* eval.c (print_multiple_value):
	* event-stream.c (event_stream_resignal_wakeup):
	* events.c (clear_event_resource):
	* events.c (zero_event):
	* events.c (print_event):
	* extents.c:
	* extents.c (print_extent):
	* file-coding.c (print_coding_system):
	* font-mgr.c:
	* font-mgr.c (Ffc_init):
	* frame.c:
	* frame.c (print_frame):
	* gc.c:
	* gc.c (GC_CHECK_NOT_FREE):
	* glyphs.c:
	* glyphs.c (print_image_instance):
	* glyphs.c (print_glyph):
	* gui.c (print_gui_item):
	* gui.c (copy_gui_item):
	* keymap.c (print_keymap):
	* keymap.c (MARKED_SLOT):
	* lisp.h:
	* lisp.h (struct Lisp_String):
	* lisp.h (DEFUN):
	* lisp.h (DEFUN_NORETURN):
	* lrecord.h:
	* lrecord.h (NORMAL_LISP_OBJECT_UID):
	* lrecord.h (struct lrecord_header):
	* lrecord.h (set_lheader_implementation):
	* lrecord.h (struct old_lcrecord_header):
	* lrecord.h (struct free_lcrecord_header):
	* marker.c (print_marker):
	* mule-charset.c:
	* mule-charset.c (print_charset):
	* objects.c (print_color_instance):
	* objects.c (print_font_instance):
	* objects.c (finalize_font_instance):
	* print.c (print_cons):
	* print.c (printing_unreadable_object_fmt):
	* print.c (printing_unreadable_lisp_object):
	* print.c (external_object_printer):
	* print.c (internal_object_printer):
	* print.c (debug_p4):
	* print.c (ext_print_begin):
	* process.c (print_process):
	* rangetab.c (print_range_table):
	* rangetab.c (range_table_equal):
	* scrollbar.c (free_scrollbar_instance):
	* specifier.c (print_specifier):
	* specifier.c (finalize_specifier):
	* symbols.c (guts_of_unbound_marker):
	* symeval.h:
	* symeval.h (DEFVAR_SYMVAL_FWD):
	* tooltalk.c:
	* tooltalk.c (print_tooltalk_message):
	* tooltalk.c (print_tooltalk_pattern):
	* ui-gtk.c (ffi_object_printer):
	* ui-gtk.c (emacs_gtk_object_printer):
	* ui-gtk.c (emacs_gtk_boxed_printer):
	* window.c (print_window):
	* window.c (free_window_mirror):
	* window.c (debug_print_window):
	* xemacs.def.in.in:
	(1) printing_unreadable_object -> printing_unreadable_object_fmt.
	(2) printing_unreadable_lcrecord -> printing_unreadable_lisp_object
	    and fix up so it no longer requires an lcrecord.

	These previous changes eliminate most of the remaining places where
	the terms `lcrecord' and `lrecord' occurred outside of specialized
	code.

	(3) Fairly major change: Reduce the number of words in an lcrecord
	from 3 to 2.  The third word consisted of a uid that duplicated the
	lrecord uid, and a single free bit, which was moved into the lrecord
	structure.  This reduces the size of the `uid' slot from 21 bits to
	20 bits.  Arguably this isn't enough -- we could easily have more than
	1,000,000 or so objects created in a session.  The answer is
	   (a) It doesn't really matter if we overflow the uid field because
	       it's only used for debugging, to identify an object uniquely
	       (or pretty much so).
	   (b) If we cared about it overflowing and wanted to reduce this,
	       we could make it so that cons, string, float and certain other
	       frob-block types that never print out the uid simply don't
	       store a uid in them and don't increment the lrecord_uid_counter.

	(4) In conjunction with (3), create new macro NORMAL_LISP_OBJECT_UID()
	    and use it to abstract out the differences between NEWGC and old-GC
	    in accessing the `uid' value from a "normal Lisp Object pointer".

	(5) In events.c, use zero_nonsized_lisp_object() in place of custom-
	    written equivalent.  In font-mgr.c use external_object_printer()
	    in place of custom-written equivalents.
2010-03-07  Ben Wing  <ben@xemacs.org>

	* number.c (bignum_finalize):
	* number.c (ratio_finalize):
	* number.c (bigfloat_finalize):
	Fix the finalizers to go with the new calling sequence.  Done
	previously but somehow got lost.

2010-03-06  Ben Wing  <ben@xemacs.org>

	* frame.c (change_frame_size_1):
	Add a comment about where FRAME_PIXWIDTH/FRAME_PIXHEIGHT is set.

2010-03-05  Ben Wing  <ben@xemacs.org>

	* frame.c:
	* frame.c (Fframe_pixel_height):
	* frame.c (Fframe_displayable_pixel_height):
	* frame.c (Fframe_pixel_width):
	* frame.c (Fframe_displayable_pixel_width):
	* frame.c (Fset_frame_pixel_height):
	* frame.c (Fset_frame_displayable_pixel_height):
	* frame.c (Fset_frame_pixel_width):
	* frame.c (Fset_frame_displayable_pixel_width):
	* frame.c (get_frame_char_size):
	* frame.c (change_frame_size_1):
	Make it so that `frame-pixel-height', `set-frame-pixel-height', etc.
	use updated values for the displayable or total pixel size that
	will reflect what will happen as of the next redisplay.  This
	basically means using the character-cell height and converting
	on-the-fly to pixel units.  In the process, make sure FRAME_CHARWIDTH/
	FRAME_CHARHEIGHT are always correct and change
	get_frame_char_size() to simply use them; the old logic in that
	function was inlined into change_frame_size_1(), which is the only
	place that needs the logic.

2010-03-05  Ben Wing  <ben@xemacs.org>

	* frame.c:
	* frame.c (frame_live_p):
	* frame.c (Fframep):
	* frame.c (Fdisable_frame):
	* frame.c (Fenable_frame):
	* frame.c (Fraise_frame):
	* frame.c (Fframe_name):
	* frame.c (Fset_frame_height):
	* frame.c (internal_set_frame_size):
	* frame.c (adjust_frame_size):
	Add documentation on the different types of units used to measure
	frame size.

	Add section headers to the various sections.

	Rearrange the location of some functions in the file to keep
	related functions together.  This especially goes for frame-sizing
	functions (internal_set_frame_size() and adjust_frame_size()),
	which have been moved so that they form a group with
	change_frame_size() and change_frame_size_1().

	No functionality should change.

2010-03-05  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (old_alloc_sized_lcrecord):
	* alloc.c (very_old_free_lcrecord):
	* alloc.c (copy_lisp_object):
	* alloc.c (zero_sized_lisp_object):
	* alloc.c (zero_nonsized_lisp_object):
	* alloc.c (lisp_object_storage_size):
	* alloc.c (free_normal_lisp_object):
	* alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC):
	* alloc.c (ALLOC_FROB_BLOCK_LISP_OBJECT):
	* alloc.c (Fcons):
	* alloc.c (noseeum_cons):
	* alloc.c (make_float):
	* alloc.c (make_bignum):
	* alloc.c (make_bignum_bg):
	* alloc.c (make_ratio):
	* alloc.c (make_ratio_bg):
	* alloc.c (make_ratio_rt):
	* alloc.c (make_bigfloat):
	* alloc.c (make_bigfloat_bf):
	* alloc.c (size_vector):
	* alloc.c (make_compiled_function):
	* alloc.c (Fmake_symbol):
	* alloc.c (allocate_extent):
	* alloc.c (allocate_event):
	* alloc.c (make_key_data):
	* alloc.c (make_button_data):
	* alloc.c (make_motion_data):
	* alloc.c (make_process_data):
	* alloc.c (make_timeout_data):
	* alloc.c (make_magic_data):
	* alloc.c (make_magic_eval_data):
	* alloc.c (make_eval_data):
	* alloc.c (make_misc_user_data):
	* alloc.c (Fmake_marker):
	* alloc.c (noseeum_make_marker):
	* alloc.c (size_string_direct_data):
	* alloc.c (make_uninit_string):
	* alloc.c (make_string_nocopy):
	* alloc.c (mark_lcrecord_list):
	* alloc.c (alloc_managed_lcrecord):
	* alloc.c (free_managed_lcrecord):
	* alloc.c (sweep_lcrecords_1):
	* alloc.c (malloced_storage_size):
	* buffer.c (allocate_buffer):
	* buffer.c (compute_buffer_usage):
	* buffer.c (DEFVAR_BUFFER_LOCAL_1):
	* buffer.c (nuke_all_buffer_slots):
	* buffer.c (common_init_complex_vars_of_buffer):
	* buffer.h (struct buffer_text):
	* buffer.h (struct buffer):
	* bytecode.c:
	* bytecode.c (make_compiled_function_args):
	* bytecode.c (size_compiled_function_args):
	* bytecode.h (struct compiled_function_args):
	* casetab.c (allocate_case_table):
	* casetab.h (struct Lisp_Case_Table):
	* charset.h (struct Lisp_Charset):
	* chartab.c (fill_char_table):
	* chartab.c (Fmake_char_table):
	* chartab.c (make_char_table_entry):
	* chartab.c (copy_char_table_entry):
	* chartab.c (Fcopy_char_table):
	* chartab.c (put_char_table):
	* chartab.h (struct Lisp_Char_Table_Entry):
	* chartab.h (struct Lisp_Char_Table):
	* console-gtk-impl.h (struct gtk_device):
	* console-gtk-impl.h (struct gtk_frame):
	* console-impl.h (struct console):
	* console-msw-impl.h (struct Lisp_Devmode):
	* console-msw-impl.h (struct mswindows_device):
	* console-msw-impl.h (struct msprinter_device):
	* console-msw-impl.h (struct mswindows_frame):
	* console-msw-impl.h (struct mswindows_dialog_id):
	* console-stream-impl.h (struct stream_console):
	* console-stream.c (stream_init_console):
	* console-tty-impl.h (struct tty_console):
	* console-tty-impl.h (struct tty_device):
	* console-tty.c (allocate_tty_console_struct):
	* console-x-impl.h (struct x_device):
	* console-x-impl.h (struct x_frame):
	* console.c (allocate_console):
	* console.c (nuke_all_console_slots):
	* console.c (DEFVAR_CONSOLE_LOCAL_1):
	* console.c (common_init_complex_vars_of_console):
	* data.c (make_weak_list):
	* data.c (make_weak_box):
	* data.c (make_ephemeron):
	* database.c:
	* database.c (struct Lisp_Database):
	* database.c (allocate_database):
	* database.c (finalize_database):
	* device-gtk.c (allocate_gtk_device_struct):
	* device-impl.h (struct device):
	* device-msw.c:
	* device-msw.c (mswindows_init_device):
	* device-msw.c (msprinter_init_device):
	* device-msw.c (finalize_devmode):
	* device-msw.c (allocate_devmode):
	* device-tty.c (allocate_tty_device_struct):
	* device-x.c (allocate_x_device_struct):
	* device.c:
	* device.c (nuke_all_device_slots):
	* device.c (allocate_device):
	* dialog-msw.c (handle_question_dialog_box):
	* elhash.c:
	* elhash.c (struct Lisp_Hash_Table):
	* elhash.c (finalize_hash_table):
	* elhash.c (make_general_lisp_hash_table):
	* elhash.c (Fcopy_hash_table):
	* elhash.h (htentry):
	* emacs.c (main_1):
	* eval.c:
	* eval.c (size_multiple_value):
	* event-stream.c (finalize_command_builder):
	* event-stream.c (allocate_command_builder):
	* event-stream.c (free_command_builder):
	* event-stream.c (event_stream_generate_wakeup):
	* event-stream.c (event_stream_resignal_wakeup):
	* event-stream.c (event_stream_disable_wakeup):
	* event-stream.c (event_stream_wakeup_pending_p):
	* events.h (struct Lisp_Timeout):
	* events.h (struct command_builder):
	* extents-impl.h:
	* extents-impl.h (struct extent_auxiliary):
	* extents-impl.h (struct extent_info):
	* extents-impl.h (set_extent_no_chase_aux_field):
	* extents-impl.h (set_extent_no_chase_normal_field):
	* extents.c:
	* extents.c (gap_array_marker):
	* extents.c (gap_array):
	* extents.c (extent_list_marker):
	* extents.c (extent_list):
	* extents.c (stack_of_extents):
	* extents.c (gap_array_make_marker):
	* extents.c (extent_list_make_marker):
	* extents.c (allocate_extent_list):
	* extents.c (SLOT):
	* extents.c (mark_extent_auxiliary):
	* extents.c (allocate_extent_auxiliary):
	* extents.c (attach_extent_auxiliary):
	* extents.c (size_gap_array):
	* extents.c (finalize_extent_info):
	* extents.c (allocate_extent_info):
	* extents.c (uninit_buffer_extents):
	* extents.c (allocate_soe):
	* extents.c (copy_extent):
	* extents.c (vars_of_extents):
	* extents.h:
	* faces.c (allocate_face):
	* faces.h (struct Lisp_Face):
	* faces.h (struct face_cachel):
	* file-coding.c:
	* file-coding.c (finalize_coding_system):
	* file-coding.c (sizeof_coding_system):
	* file-coding.c (Fcopy_coding_system):
	* file-coding.h (struct Lisp_Coding_System):
	* file-coding.h (MARKED_SLOT):
	* fns.c (size_bit_vector):
	* font-mgr.c:
	* font-mgr.c (finalize_fc_pattern):
	* font-mgr.c (print_fc_pattern):
	* font-mgr.c (Ffc_pattern_p):
	* font-mgr.c (Ffc_pattern_create):
	* font-mgr.c (Ffc_name_parse):
	* font-mgr.c (Ffc_name_unparse):
	* font-mgr.c (Ffc_pattern_duplicate):
	* font-mgr.c (Ffc_pattern_add):
	* font-mgr.c (Ffc_pattern_del):
	* font-mgr.c (Ffc_pattern_get):
	* font-mgr.c (fc_config_create_using):
	* font-mgr.c (fc_strlist_to_lisp_using):
	* font-mgr.c (fontset_to_list):
	* font-mgr.c (Ffc_config_p):
	* font-mgr.c (Ffc_config_up_to_date):
	* font-mgr.c (Ffc_config_build_fonts):
	* font-mgr.c (Ffc_config_get_cache):
	* font-mgr.c (Ffc_config_get_fonts):
	* font-mgr.c (Ffc_config_set_current):
	* font-mgr.c (Ffc_config_get_blanks):
	* font-mgr.c (Ffc_config_get_rescan_interval):
	* font-mgr.c (Ffc_config_set_rescan_interval):
	* font-mgr.c (Ffc_config_app_font_add_file):
	* font-mgr.c (Ffc_config_app_font_add_dir):
	* font-mgr.c (Ffc_config_app_font_clear):
	* font-mgr.c (size):
	* font-mgr.c (Ffc_config_substitute):
	* font-mgr.c (Ffc_font_render_prepare):
	* font-mgr.c (Ffc_font_match):
	* font-mgr.c (Ffc_font_sort):
	* font-mgr.c (finalize_fc_config):
	* font-mgr.c (print_fc_config):
	* font-mgr.h:
	* font-mgr.h (struct fc_pattern):
	* font-mgr.h (XFC_PATTERN):
	* font-mgr.h (struct fc_config):
	* font-mgr.h (XFC_CONFIG):
	* frame-gtk.c (allocate_gtk_frame_struct):
	* frame-impl.h (struct frame):
	* frame-msw.c (mswindows_init_frame_1):
	* frame-x.c (allocate_x_frame_struct):
	* frame.c (nuke_all_frame_slots):
	* frame.c (allocate_frame_core):
	* gc.c:
	* gc.c (GC_CHECK_NOT_FREE):
	* glyphs.c (finalize_image_instance):
	* glyphs.c (allocate_image_instance):
	* glyphs.c (Fcolorize_image_instance):
	* glyphs.c (allocate_glyph):
	* glyphs.c (unmap_subwindow_instance_cache_mapper):
	* glyphs.c (register_ignored_expose):
	* glyphs.h (struct Lisp_Image_Instance):
	* glyphs.h (struct Lisp_Glyph):
	* glyphs.h (struct glyph_cachel):
	* glyphs.h (struct expose_ignore):
	* gui.c (allocate_gui_item):
	* gui.h (struct Lisp_Gui_Item):
	* keymap.c (struct Lisp_Keymap):
	* keymap.c (make_keymap):
	* lisp.h:
	* lisp.h (struct Lisp_String_Direct_Data):
	* lisp.h (struct Lisp_String_Indirect_Data):
	* lisp.h (struct Lisp_Vector):
	* lisp.h (struct Lisp_Bit_Vector):
	* lisp.h (DECLARE_INLINE_LISP_BIT_VECTOR):
	* lisp.h (struct weak_box):
	* lisp.h (struct ephemeron):
	* lisp.h (struct weak_list):
	* lrecord.h:
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (MC_ALLOC_CALL_FINALIZER):
	* lrecord.h (struct lcrecord_list):
	* lstream.c (finalize_lstream):
	* lstream.c (sizeof_lstream):
	* lstream.c (Lstream_new):
	* lstream.c (Lstream_delete):
	* lstream.h (struct lstream):
	* marker.c:
	* marker.c (finalize_marker):
	* marker.c (compute_buffer_marker_usage):
	* mule-charset.c:
	* mule-charset.c (make_charset):
	* mule-charset.c (compute_charset_usage):
	* objects-impl.h (struct Lisp_Color_Instance):
	* objects-impl.h (struct Lisp_Font_Instance):
	* objects-tty-impl.h (struct tty_color_instance_data):
	* objects-tty-impl.h (struct tty_font_instance_data):
	* objects-tty.c (tty_initialize_color_instance):
	* objects-tty.c (tty_initialize_font_instance):
	* objects.c (finalize_color_instance):
	* objects.c (Fmake_color_instance):
	* objects.c (finalize_font_instance):
	* objects.c (Fmake_font_instance):
	* objects.c (reinit_vars_of_objects):
	* opaque.c:
	* opaque.c (sizeof_opaque):
	* opaque.c (make_opaque_ptr):
	* opaque.c (free_opaque_ptr):
	* opaque.h:
	* opaque.h (Lisp_Opaque):
	* opaque.h (Lisp_Opaque_Ptr):
	* print.c (printing_unreadable_lcrecord):
	* print.c (external_object_printer):
	* print.c (debug_p4):
	* process.c (finalize_process):
	* process.c (make_process_internal):
	* procimpl.h (struct Lisp_Process):
	* rangetab.c (Fmake_range_table):
	* rangetab.c (Fcopy_range_table):
	* rangetab.h (struct Lisp_Range_Table):
	* scrollbar.c:
	* scrollbar.c (create_scrollbar_instance):
	* scrollbar.c (compute_scrollbar_instance_usage):
	* scrollbar.h (struct scrollbar_instance):
	* specifier.c (finalize_specifier):
	* specifier.c (sizeof_specifier):
	* specifier.c (set_specifier_caching):
	* specifier.h (struct Lisp_Specifier):
	* specifier.h (struct specifier_caching):
	* symeval.h:
	* symeval.h (SYMBOL_VALUE_MAGIC_P):
	* symeval.h (DEFVAR_SYMVAL_FWD):
	* symsinit.h:
	* syntax.c (init_buffer_syntax_cache):
	* syntax.h (struct syntax_cache):
	* toolbar.c:
	* toolbar.c (allocate_toolbar_button):
	* toolbar.c (update_toolbar_button):
	* toolbar.h (struct toolbar_button):
	* tooltalk.c (struct Lisp_Tooltalk_Message):
	* tooltalk.c (make_tooltalk_message):
	* tooltalk.c (struct Lisp_Tooltalk_Pattern):
	* tooltalk.c (make_tooltalk_pattern):
	* ui-gtk.c:
	* ui-gtk.c (allocate_ffi_data):
	* ui-gtk.c (emacs_gtk_object_finalizer):
	* ui-gtk.c (allocate_emacs_gtk_object_data):
	* ui-gtk.c (allocate_emacs_gtk_boxed_data):
	* ui-gtk.h:
	* window-impl.h (struct window):
	* window-impl.h (struct window_mirror):
	* window.c (finalize_window):
	* window.c (allocate_window):
	* window.c (new_window_mirror):
	* window.c (mark_window_as_deleted):
	* window.c (make_dummy_parent):
	* window.c (compute_window_mirror_usage):
	* window.c (compute_window_usage):

	Overall point of this change and previous ones in this repository:

	(1) Introduce new, clearer terminology: everything other than int
	or char is a "record" object, which comes in two types: "normal
	objects" and "frob-block objects".  Fix up all places that
	referred to frob-block objects as "simple", "basic", etc.

	(2) Provide an advertised interface for doing operations on Lisp
	objects, including creating new types, that is clean and
	consistent in its naming, uses the above-referenced terms and
	avoids referencing "lrecords", "old lcrecords", etc., which should
	hide under the surface.

	(3) Make the size_in_bytes and finalizer methods take a
	Lisp_Object rather than a void * for consistency with other methods.

	(4) Separate finalizer method into finalizer and disksaver, so
	that normal finalize methods don't have to worry about disksaving.

	Other specifics:

	(1) Renaming:

	LISP_OBJECT_HEADER -> NORMAL_LISP_OBJECT_HEADER
	ALLOC_LISP_OBJECT -> ALLOC_NORMAL_LISP_OBJECT
	implementation->basic_p -> implementation->frob_block_p
	ALLOCATE_FIXED_TYPE_AND_SET_IMPL -> ALLOC_FROB_BLOCK_LISP_OBJECT
	*FCCONFIG*, wrap_fcconfig -> *FC_CONFIG*, wrap_fc_config
	*FCPATTERN*, wrap_fcpattern -> *FC_PATTERN*, wrap_fc_pattern

	(the last two changes make the naming of these macros consistent
	with the naming of all other macros, since the objects are named
	fc-config and fc-pattern with a hyphen)

	(2) Lots of documentation fixes in lrecord.h.

	(3) Eliminate macros for copying, freeing, zeroing objects, getting
	their storage size.  Instead, new functions:

	zero_sized_lisp_object()
	zero_nonsized_lisp_object()
	lisp_object_storage_size()
	free_normal_lisp_object()
	(copy_lisp_object() already exists)
	LISP_OBJECT_FROB_BLOCK_P() (actually a macro)

	Eliminated:

	free_lrecord()
	zero_lrecord()
	copy_lrecord()
	copy_sized_lrecord()
	old_copy_lcrecord()
	old_copy_sized_lcrecord()
	old_zero_lcrecord()
	old_zero_sized_lcrecord()
	LISP_OBJECT_STORAGE_SIZE()
	COPY_SIZED_LISP_OBJECT()
	COPY_SIZED_LCRECORD()
	COPY_LISP_OBJECT()
	ZERO_LISP_OBJECT()
	FREE_LISP_OBJECT()

	(4) Catch the remaining places where lrecord stuff was used directly
	and use the advertised interface, e.g. alloc_sized_lrecord() ->
	ALLOC_SIZED_LISP_OBJECT().

	(5) Make certain statically-declared pseudo-objects
	(buffer_local_flags, console_local_flags) have their lheader
	initialized correctly, so things like copy_lisp_object() can work
	on them.  Make extent_auxiliary_defaults a proper heap object
	Vextent_auxiliary_defaults, and make extent auxiliaries dumpable
	so that this object can be dumped.  allocate_extent_auxiliary()
	now just creates the object, and attach_extent_auxiliary()
	creates an extent auxiliary and attaches to an extent, like the
	old allocate_extent_auxiliary().

	(6) Create EXTENT_AUXILIARY_SLOTS macro, similar to the foo-slots.h
	files but in a macro instead of a file.  The purpose is to avoid
	duplication when iterating over all the slots in an extent auxiliary.
	Use it.

	(7) In lstream.c, don't zero out object after allocation because
	allocation routines take care of this.

	(8) In marker.c, fix a mistake in computing marker overhead.

	(9) In print.c, clean up printing_unreadable_lcrecord(),
	external_object_printer() to avoid lots of ifdef NEW_GC's.

	(10) Separate toolbar-button allocation into a separate
	allocate_toolbar_button() function for use in the example code
	in lrecord.h.

2010-01-20  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (very_old_free_lcrecord):
	* alloc.c (disksave_object_finalization_1):
	* alloc.c (make_lcrecord_list):
	* alloc.c (alloc_managed_lcrecord):
	* alloc.c (free_managed_lcrecord):
	* alloc.c (sweep_lcrecords_1):
	* buffer.c:
	* bytecode.c:
	* bytecode.c (Fcompiled_function_p):
	* chartab.c:
	* console-impl.h:
	* console-impl.h (CONSOLE_TYPE_P):
	* console.c:
	* console.c (set_quit_events):
	* data.c:
	* data.c (Fmake_ephemeron):
	* database.c:
	* database.c (finalize_database):
	* database.c (Fclose_database):
	* device-msw.c:
	* device-msw.c (finalize_devmode):
	* device-msw.c (allocate_devmode):
	* device.c:
	* elhash.c:
	* elhash.c (finalize_hash_table):
	* eval.c:
	* eval.c (bind_multiple_value_limits):
	* event-stream.c:
	* event-stream.c (finalize_command_builder):
	* events.c:
	* events.c (mark_event):
	* extents.c:
	* extents.c (finalize_extent_info):
	* extents.c (uninit_buffer_extents):
	* faces.c:
	* file-coding.c:
	* file-coding.c (finalize_coding_system):
	* file-coding.h:
	* file-coding.h (struct coding_system_methods):
	* file-coding.h (struct detector):
	* floatfns.c:
	* floatfns.c (extract_float):
	* fns.c:
	* fns.c (Fidentity):
	* font-mgr.c (finalize_fc_pattern):
	* font-mgr.c (finalize_fc_config):
	* frame.c:
	* glyphs.c:
	* glyphs.c (finalize_image_instance):
	* glyphs.c (unmap_subwindow_instance_cache_mapper):
	* gui.c:
	* gui.c (gui_error):
	* keymap.c:
	* lisp.h (struct Lisp_Symbol):
	* lrecord.h:
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (MC_ALLOC_CALL_FINALIZER):
	* lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE):
	* lrecord.h (DEFINE_DUMPABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_GENERAL_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_SIZABLE_GENERAL_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_GENERAL_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_FROB_BLOCK_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_INTERNAL_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_SIZABLE_INTERNAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_GENERAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_SIZABLE_GENERAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_FROB_BLOCK_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_FROB_BLOCK_GENERAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_FROB_BLOCK_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_INTERNAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_SIZABLE_INTERNAL_LISP_OBJECT):
	* lrecord.h (MAKE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_MODULE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_MODULE_GENERAL_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_DUMPABLE_MODULE_SIZABLE_GENERAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_MODULE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_MODULE_GENERAL_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_LISP_OBJECT):
	* lrecord.h (DEFINE_NODUMP_MODULE_SIZABLE_GENERAL_LISP_OBJECT):
	* lrecord.h (MAKE_MODULE_LISP_OBJECT):
	* lstream.c:
	* lstream.c (finalize_lstream):
	* lstream.c (disksave_lstream):
	* marker.c:
	* marker.c (finalize_marker):
	* mule-charset.c (make_charset):
	* number.c:
	* objects.c:
	* objects.c (finalize_color_instance):
	* objects.c (finalize_font_instance):
	* opaque.c:
	* opaque.c (make_opaque_ptr):
	* process-nt.c:
	* process-nt.c (nt_finalize_process_data):
	* process-nt.c (nt_deactivate_process):
	* process.c:
	* process.c (finalize_process):
	* procimpl.h (struct process_methods):
	* scrollbar.c:
	* scrollbar.c (free_scrollbar_instance):
	* specifier.c (finalize_specifier):
	* symbols.c:
	* toolbar.c:
	* toolbar.c (Ftoolbar_button_p):
	* tooltalk.c:
	* ui-gtk.c:
	* ui-gtk.c (emacs_gtk_object_finalizer):
	* ui-gtk.c (allocate_emacs_gtk_boxed_data):
	* window.c:
	* window.c (finalize_window):
	* window.c (mark_window_as_deleted):

	Separate out regular and disksave finalization.  Instead of a
	FOR_DISKSAVE argument to the finalizer, create a separate object
	method `disksaver'.  Make `finalizer' have only one argument.

	Go through and separate out all finalize methods into finalize
	and disksave.  Delete lots of thereby redundant disksave checking.
	Delete places that signal an error if we attempt to disksave --
	all of these objects are non-dumpable and we will get an error
	from pdump anyway if we attempt to dump them.  After this is done,
	only one object remains that has a disksave method -- lstream.

	Change DEFINE_*_LISP_OBJECT_WITH_PROPS to DEFINE_*_GENERAL_LISP_OBJECT,
	which is used for specifying either property methods or disksave
	methods (or in the future, any other less-used methods).

	Remove the for_disksave argument to finalize_process_data.  Don't
	provide a disksaver for processes because no one currently needs
	it.

	Clean up various places where objects didn't provide a print method.
	It was made mandatory in previous changes, and all methods now
	either provide their own print method or use internal_object_printer
	or external_object_printer.

	Change the definition of CONSOLE_LIVE_P to use the contype enum
	rather than looking into the conmeths structure -- in some weird
	situations with dead objects, the conmeths structure is NULL,
	and printing such objects from debug_print() will crash if we try
	to look into the conmeths structure.


2005-11-22  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (assert_proper_sizing):
	* alloc.c (alloc_sized_lrecord_1):
	* alloc.c (alloc_sized_lrecord):
	* alloc.c (noseeum_alloc_sized_lrecord):
	* alloc.c (alloc_lrecord):
	* alloc.c (old_alloc_sized_lcrecord):
	* alloc.c (make_vector_internal):
	* alloc.c (make_bit_vector_internal):
	* alloc.c (alloc_automanaged_sized_lcrecord):
	* buffer.c (allocate_buffer):
	* buffer.c (DEFVAR_BUFFER_LOCAL_1):
	* buffer.c (common_init_complex_vars_of_buffer):
	* casetab.c (allocate_case_table):
	* chartab.c (Fmake_char_table):
	* chartab.c (make_char_table_entry):
	* chartab.c (copy_char_table_entry):
	* chartab.c (Fcopy_char_table):
	* console.c (allocate_console):
	* console.c (DEFVAR_CONSOLE_LOCAL_1):
	* console.c (common_init_complex_vars_of_console):
	* data.c (make_weak_list):
	* data.c (make_weak_box):
	* data.c (make_ephemeron):
	* database.c (allocate_database):
	* device-msw.c (allocate_devmode):
	* device.c (allocate_device):
	* dialog-msw.c (handle_question_dialog_box):
	* elhash.c (make_general_lisp_hash_table):
	* elhash.c (Fcopy_hash_table):
	* emacs.c (main_1):
	* event-stream.c:
	* event-stream.c (allocate_command_builder):
	* event-stream.c (free_command_builder):
	* event-stream.c (mark_timeout):
	* event-stream.c (event_stream_generate_wakeup):
	* event-stream.c (event_stream_resignal_wakeup):
	* event-stream.c (event_stream_disable_wakeup):
	* event-stream.c (reinit_vars_of_event_stream):
	* extents.c (allocate_extent_auxiliary):
	* extents.c (allocate_extent_info):
	* extents.c (copy_extent):
	* faces.c (allocate_face):
	* file-coding.c (allocate_coding_system):
	* frame.c (allocate_frame_core):
	* glyphs.c (allocate_image_instance):
	* glyphs.c (allocate_glyph):
	* gui.c (allocate_gui_item):
	* keymap.c (make_keymap):
	* lrecord.h:
	* lrecord.h (ALLOC_LCRECORD):
	* lrecord.h (ALLOC_SIZED_LCRECORD):
	* lrecord.h (struct old_lcrecord_header):
	* lrecord.h (old_alloc_lcrecord_type):
	* lrecord.h (alloc_lrecord_type):
	* lrecord.h (noseeum_alloc_lrecord_type):
	* lstream.c (Lstream_new):
	* mule-charset.c (make_charset):
	* objects.c (Fmake_color_instance):
	* objects.c (Fmake_font_instance):
	* objects.c (reinit_vars_of_objects):
	* opaque.c (make_opaque):
	* opaque.c (make_opaque_ptr):
	* process.c (make_process_internal):
	* rangetab.c (Fmake_range_table):
	* rangetab.c (Fcopy_range_table):
	* scrollbar.c (create_scrollbar_instance):
	* specifier.c (make_specifier_internal):
	* symbols.c (Fdefvaralias):
	* toolbar.c (update_toolbar_button):
	* tooltalk.c (make_tooltalk_message):
	* tooltalk.c (make_tooltalk_pattern):
	* ui-gtk.c (allocate_ffi_data):
	* ui-gtk.c (allocate_emacs_gtk_object_data):
	* ui-gtk.c (allocate_emacs_gtk_boxed_data):
	* window.c (allocate_window):
	* window.c (new_window_mirror):
	* window.c (make_dummy_parent):
	Create a simpler interface for allocating/declaring Lisp objects;
	documented in lrecord.h.

	ALLOC_LCRECORD_TYPE -> ALLOC_LISP_OBJECT (returns a Lisp object
	                                          rather than a pointer),
	BASIC_ALLOC_LCRECORD -> ALLOC_SIZED_LISP_OBJECT
	DEFINE_LRECORD_IMPLEMENTATION -> DEFINE_*_LISP_OBJECT
	DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION -> DEFINE_*SIZABLE_*LISP_OBJECT
	DEFINE_LRECORD_*IMPLEMENTATION_WITH_PROPS -> DEFINE_*GENERAL_LISP_OBJECT
	DEFINE_BASIC_LRECORD_IMPLEMENTATION -> DEFINE_*FROB_BLOCK_LISP_OBJECT
	DEFINE_DUMPABLE_*/DEFINE_NODUMP_* instead of a 0 or 1 dumpable flag
	DEFINE_*INTERNAL_* for "internal" Lisp objects (shouldn't escape
							to Lisp)
	DEFINE_EXTERNAL_* -> DEFINE_MODULE_*
	MAKE_LRECORD_IMPLEMENTATION -> MAKE_LISP_OBJECT
	MAKE_EXTERNAL_LRECORD_IMPLEMENTATION -> MAKE_MODULE_LISP_OBJECT
	DECLARE_LRECORD -> DECLARE_LISP_OBJECT
	INIT_LRECORD_IMPLEMENTATION -> INIT_LISP_OBJECT
	alloc_lrecord -> alloc_sized_lrecord (since it takes a size)

	Dynarr_newf, Dynarr_lisp_newf: takes a Bytecount instead of an int

2010-03-05  Ben Wing  <ben@xemacs.org>

	* mule-coding.c:
	* mule-coding.c (iso2022_encode):
	Horrible bug: `escape-quoted' was failing to escape-quote special
	characters in the 0x80 - 0x9F range.  Who knows what breakage ensued?
	SAME BUG IN XEMACS 21.4; MUST BE FIXED THERE TOO.

2010-03-03  Ben Wing  <ben@xemacs.org>

	* lrecord.h: Fix outdated comment.

2010-03-03  Ben Wing  <ben@xemacs.org>

	* emacs.c:
	* emacs.c (assert_equal_failed):
	* lisp.h:
	* lisp.h (assert_equal):
	New fun assert_equal, asserting that two values == each other, and
	printing out both values upon failure.

	* frame-gtk.c (gtk_initialize_frame_size):
	* frame-impl.h:
	* frame-impl.h (FRAME_TOP_INTERNAL_BORDER_START):
	* frame-impl.h (FRAME_BOTTOM_INTERNAL_BORDER_START):
	* frame-impl.h (FRAME_LEFT_INTERNAL_BORDER_START):
	* frame-impl.h (FRAME_PANED_TOP_EDGE):
	* frame-impl.h (FRAME_NONPANED_SIZE):
	* frame-x.c (x_initialize_frame_size):
	* frame.c:
	* gutter.c (get_gutter_coords):
	* gutter.c (calculate_gutter_size):
	* gutter.h:
	* gutter.h (WINDOW_REAL_TOP_GUTTER_BOUNDS):
	* gutter.h (FRAME_TOP_GUTTER_BOUNDS):
	* input-method-xlib.c:
	* input-method-xlib.c (XIM_SetGeometry):
	* redisplay-output.c (clear_left_border):
	* redisplay-output.c (clear_right_border):
	* redisplay-output.c (redisplay_output_pixmap):
	* redisplay-output.c (redisplay_clear_region):
	* redisplay-output.c (redisplay_clear_top_of_window):
	* redisplay-output.c (redisplay_clear_to_window_end):
	* redisplay-xlike-inc.c (XLIKE_clear_frame):
	* redisplay.c:
	* redisplay.c (UPDATE_CACHE_RETURN):
	* redisplay.c (pixel_to_glyph_translation):
	* toolbar.c (update_frame_toolbars_geometry):
	* window.c (Fwindow_pixel_edges):
	Get rid of some redundant macros.  Consistently use the
	FRAME_TOP_*_START, FRAME_RIGHT_*_END, etc. format.  Rename
	FRAME_*_BORDER_* to FRAME_*_INTERNAL_BORDER_*. Comment out
	FRAME_BOTTOM_* for gutters and the paned area due to the
	uncertainty over where the paned area actually begins. (Eventually
	we should probably move the gutters outside the minibuffer so that
	the paned area is contiguous.) Use FRAME_PANED_* more often in the
	code to make things clearer.

	Update the diagram to show that the bottom gutter is inside the
	minibuffer (!) and that there are "junk boxes" when you have left
	and/or right gutters (dead boxes that are mistakenly left uncleared,
	unlike the corresponding scrollbar dead boxes).  Update the text
	appropriately to cover the bottom gutter position, etc.

	Rewrite gutter-geometry code to use the FRAME_*_GUTTER_* in place of
	equivalent expressions referencing other frame elements, to make the
	code more portable in case we move around the gutter location.

	Cleanup FRAME_*_GUTTER_BOUNDS() in gutter.h.

	Add some #### GEOM! comments where I think code is incorrect --
	typically, it wasn't fixed up properly when the gutter was added.

	Some cosmetic changes.

2010-03-02  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	* text.h:
	Move inclusion point of text.h earlier in lisp.h -- just before
	the definition of characters, which needs some of the stuff in
	text.h.  With text.h later, some basic character properties had to
	be defined in lisp.h -- put them back into text.h where they belong.
	Move some text in lisp.h at the point of text.h inclusion into
	text.h -- it serves as a mini-introduction.

2010-03-02  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in:
	* Makefile.in.in (objs):
	glyphs-shared.o, glyphs-eimage.o only needed when HAVE_WINDOW_SYSTEM.
	glyphs-widget.o should be too, but we need a bit of work ifdeffing
	out the subwindow stuff from redisplay.c et al.

	* bytecode.c (init_opcode_table_multi_op):
	Change var name to avoid shadowing with `basename'.

	* emacs.c (main_1):
	Don't call init/etc. routines for glyphs-shared, glyphs-eimage unless
	HAVE_WINDOW_SYSTEM is defined.

	* linuxplay.c:
	* linuxplay.c (sighandler):
	* vdb-posix.c (vdb_fault_handler):
	Use const for variables holding string constants to avoid C++
	warnings.

2010-03-02  Jerry James  <james@xemacs.org>

	* lread.c (read_atom): Signal a read error upon encountering a
	ratio constant with a zero denominator.

2010-03-03  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (Fsubstring): Removed.
	* search.c (Freplace_match):
	* minibuf.c (Ftry_completion):
	* lisp.h:
	* keymap.c (ensure_meta_prefix_char_keymapp):
	* dired.c (user_name_completion, file_name_completion):
	* console-x.c (x_canonicalize_console_connection):
	* bytecode.c (Bsubseq):
	* bytecode-ops.h (subseq):
	Move #'substring to Lisp, as an alias for #'subseq; change all
	C Fsubstring() calls to Fsubseq(), change the Bsubstring bytecode
	to Bsubseq.

	Motivation; not accepting vectors in #'substring is incompatible
	with GNU, and Common Lisp prefers #'subseq, it has no #'substring.

2010-03-02  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (print_multiple_value):
	Say #<INTERNAL OBJECT (XEmacs bug?) ...> when printing these, for
	consistency with the rest of the print code.

2010-03-01  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (PARSE_KEYWORDS): New macro, for parsing keyword
	arguments from C subrs.
	* elhash.c (Fmake_hash_table): Use it.
	* general-slots.h (Q_allow_other_keys): Add this symbol.
	* eval.c (non_nil_allow_other_keys_p):
	(invalid_keyword_argument):
	New functions, called from the keyword argument parsing code.
	* data.c (init_errors_once_early):
	Add the new invalid-keyword-argument error here.

2010-02-26  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (Fmake_coding_system_internal):
	Be somewhat clearer in this docstring, especially for the sake of
	people running non-Mule builds who will see this docstring when
	they do F1 f make-coding-system RET.

2010-02-25  Didier Verna  <didier@xemacs.org>

	The background-placement face property.
	* console-x-impl.h (struct x_frame): Add new slots x and y.
	* console-x-impl.h (FRAME_X_X, FRAME_X_Y): New slot accessors.
	* console-gtk-impl.h: Fake something similar for potential port.
	* frame-x.c (x_get_frame_text_position): New function.
	* frame-x.c (x_init_frame_3): Use it.
	* event-Xt.c (emacs_Xt_handle_magic_event): Eat spurious
	ConfigureNotify events, get the frame position and mark frame
	faces changed.
	* objects-impl.h: The face_background_placement_specifier
	structure and its accessors.
	* objects.c: New symbols Qabsolute and Qrelative.
	* objects.c (face_background_placement_create):
	* objects.c (face_background_placement_mark):
	* objects.c (face_background_placement_instantiate):
	* objects.c (face_background_placement_validate):
	* objects.c (face_background_placement_after_change):
	* objects.c (set_face_background_placement_attached_to): New.
	* objects.h (set_face_background_palcement_attached_to): Declare
	the one above.
	* objects.c (syms_of_objects):
	* objects.c (specifier_type_create_objects):
	* objects.c (reinit_specifier_type_create_objects):
	* objects.c (reinit_vars_of_objects): Update for the modifications
	above.
	* console-xlike-inc.h (XLIKE_GC_TS_X_ORIGIN, XLIKE_GC_TS_X_ORIGIN):
	New X11/Gtk compatibility macros.
	* redisplay-xlike-inc.c (XLIKE_get_gc): Add a background placement
	argument and handle it.
	* gtk-glue.c (face_to_gc):
	* redisplay-xlike-inc.c (XLIKE_output_string):
	* redisplay-xlike-inc.c (XLIKE_output_pixmap):
	* redisplay-xlike-inc.c (XLIKE_output_blank):
	* redisplay-xlike-inc.c (XLIKE_output_horizontal_line):
	* redisplay-xlike-inc.c (XLIKE_output_eol_cursor): Update
	accordingly.
	* console-impl.h (struct console_methods): Add a background
	placement (Lisp_Object) argument to the clear_region method.
	* console-stream.c (stream_clear_region):
	* redisplay-tty.c (tty_clear_region):
	* redisplay-msw.c (mswindows_clear_region):
	* redisplay-xlike-inc.c (XLIKE_clear_region): Update accordingly.
	* redisplay-output.c (redisplay_clear_region): Handle the
	background placement property and update the call to the
	clear_region method.
	* faces.h (struct Lisp_Face):
	* faces.h (struct face_cachel): Add a background placement slot.
	* faces.h (WINDOW_FACE_CACHEL_BACKGROUND_PLACEMENT): New accessor.
	* faces.c (mark_face):
	* faces.c (face_equal):
	* faces.c (face_getprop):
	* faces.c (face_putprop):
	* faces.c (face_remprop):
	* faces.c (face_plist):
	* faces.c (reset_face):
	* faces.c (mark_face_cachels):
	* faces.c (update_face_cachel_data):
	* faces.c (merge_face_cachel_data):
	* faces.c (reset_face_cachel):
	* faces.c (Fmake_face):
	* faces.c (Fcopy_face): Handle the background placement property.
	* faces.c (syms_of_faces):
	* faces.c (vars_of_faces):
	* faces.c (complex_vars_of_faces): Update accordingly.

2010-02-25  Ben Wing  <ben@xemacs.org>

	* frame-impl.h:
	Create some new macros for more clearly getting the size/edges
	of various rectangles surrounding the paned area.
	* frame.c (change_frame_size_1):
	Use the new macros.  Clean up change_frame_size_1 and make sure
	the internal border width gets taken into account -- that was what
	was causing the clipped bottom and right.

2010-02-25  Ben Wing  <ben@xemacs.org>

	* EmacsFrame.c (EmacsFrameSetValues):
	* frame-impl.h:
	* frame-impl.h (struct frame):
	* frame-impl.h (FRAME_THEORETICAL_TOP_TOOLBAR_HEIGHT):
	* frame-impl.h (FRAME_THEORETICAL_TOP_TOOLBAR_BORDER_WIDTH):
	* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_HEIGHT):
	* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH):
	* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_VISIBLE):
	* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BOUNDS):
	* frame.h:
	* frame.h (enum edge_pos):
	* gutter.c:
	* gutter.c (get_gutter_coords):
	* gutter.c (display_boxes_in_gutter_p):
	* gutter.c (construct_window_gutter_spec):
	* gutter.c (calculate_gutter_size_from_display_lines):
	* gutter.c (calculate_gutter_size):
	* gutter.c (output_gutter):
	* gutter.c (clear_gutter):
	* gutter.c (mark_gutters):
	* gutter.c (gutter_extent_signal_changed_region_maybe):
	* gutter.c (update_gutter_geometry):
	* gutter.c (update_frame_gutter_geometry):
	* gutter.c (update_frame_gutters):
	* gutter.c (reset_gutter_display_lines):
	* gutter.c (redraw_exposed_gutter):
	* gutter.c (redraw_exposed_gutters):
	* gutter.c (free_frame_gutters):
	* gutter.c (decode_gutter_position):
	* gutter.c (Fset_default_gutter_position):
	* gutter.c (Fgutter_pixel_width):
	* gutter.c (Fgutter_pixel_height):
	* gutter.c (recompute_overlaying_specifier):
	* gutter.c (gutter_specs_changed_1):
	* gutter.c (gutter_specs_changed):
	* gutter.c (top_gutter_specs_changed):
	* gutter.c (bottom_gutter_specs_changed):
	* gutter.c (left_gutter_specs_changed):
	* gutter.c (right_gutter_specs_changed):
	* gutter.c (gutter_geometry_changed_in_window):
	* gutter.c (init_frame_gutters):
	* gutter.c (specifier_vars_of_gutter):
	* gutter.h:
	* gutter.h (WINDOW_REAL_TOP_GUTTER_BOUNDS):
	* gutter.h (FRAME_TOP_GUTTER_BOUNDS):
	* lisp.h (enum edge_style):
	* native-gtk-toolbar.c:
	* native-gtk-toolbar.c (gtk_output_toolbar):
	* native-gtk-toolbar.c (gtk_clear_toolbar):
	* native-gtk-toolbar.c (gtk_output_frame_toolbars):
	* native-gtk-toolbar.c (gtk_initialize_frame_toolbars):
	* toolbar-msw.c:
	* toolbar-msw.c (TOOLBAR_HANDLE):
	* toolbar-msw.c (allocate_toolbar_item_id):
	* toolbar-msw.c (mswindows_clear_toolbar):
	* toolbar-msw.c (mswindows_output_toolbar):
	* toolbar-msw.c (mswindows_move_toolbar):
	* toolbar-msw.c (mswindows_redraw_exposed_toolbars):
	* toolbar-msw.c (mswindows_initialize_frame_toolbars):
	* toolbar-msw.c (mswindows_output_frame_toolbars):
	* toolbar-msw.c (mswindows_clear_frame_toolbars):
	* toolbar-msw.c (DELETE_TOOLBAR):
	* toolbar-msw.c (mswindows_free_frame_toolbars):
	* toolbar-msw.c (mswindows_get_toolbar_button_text):
	* toolbar-xlike.c:
	* toolbar-xlike.c (__prepare_button_area):
	* toolbar-xlike.c (XLIKE_OUTPUT_BUTTONS_LOOP):
	* toolbar-xlike.c (xlike_output_toolbar):
	* toolbar-xlike.c (xlike_clear_toolbar):
	* toolbar-xlike.c (xlike_output_frame_toolbars):
	* toolbar-xlike.c (xlike_clear_frame_toolbars):
	* toolbar-xlike.c (xlike_redraw_exposed_toolbar):
	* toolbar-xlike.c (xlike_redraw_exposed_toolbars):
	* toolbar-xlike.c (xlike_redraw_frame_toolbars):
	* toolbar.c:
	* toolbar.c (decode_toolbar_position):
	* toolbar.c (Fset_default_toolbar_position):
	* toolbar.c (mark_frame_toolbar_buttons_dirty):
	* toolbar.c (compute_frame_toolbar_buttons):
	* toolbar.c (set_frame_toolbar):
	* toolbar.c (compute_frame_toolbars_data):
	* toolbar.c (update_frame_toolbars_geometry):
	* toolbar.c (init_frame_toolbars):
	* toolbar.c (get_toolbar_coords):
	* toolbar.c (CHECK_TOOLBAR):
	* toolbar.c (toolbar_buttons_at_pixpos):
	* toolbar.c (CTB_ERROR):
	* toolbar.c (recompute_overlaying_specifier):
	* toolbar.c (specifier_vars_of_toolbar):
	* toolbar.h:
	* toolbar.h (SET_TOOLBAR_WAS_VISIBLE_FLAG):
	Create new enum edge_pos with TOP_EDGE, BOTTOM_EDGE, LEFT_EDGE,
	RIGHT_EDGE; subsume TOP_BORDER, TOP_GUTTER, enum toolbar_pos,
	enum gutter_pos, etc.

	Create EDGE_POS_LOOP, subsuming GUTTER_POS_LOOP.

	Create NUM_EDGES, use in many places instead of hardcoded '4'.

	Instead of top_toolbar_was_visible, bottom_toolbar_was_visible,
	etc. make an array toolbar_was_visible[NUM_EDGES].  This increases
	the frame size by 15 bytes or so (could be 3 if we use Boolbytes)
	but hardly seems w to matter -- frames are heavy weight objects
	anyway.  Same with top_gutter_was_visible, etc.

	Remove duplicated SET_TOOLBAR_WAS_VISIBLE_FLAG and put defn in
	one place (toolbar.h).

2010-02-24  Didier Verna  <didier@xemacs.org>

	Modify XLIKE_get_gc's prototype.
	* redisplay-xlike-inc.c (XLIKE_get_gc): Take a frame instead of a
	device as first argument.
	* redisplay-xlike-inc.c (XLIKE_output_string): Update caller.
	* redisplay-xlike-inc.c (XLIKE_output_pixmap): Ditto.
	* redisplay-xlike-inc.c (XLIKE_output_blank): Ditto.
	* redisplay-xlike-inc.c (XLIKE_output_horizontal_line): Ditto.
	* redisplay-xlike-inc.c (XLIKE_clear_region): Ditto.
	* redisplay-xlike-inc.c (XLIKE_output_eol_cursor): Ditto.
	* console-gtk.h (gtk_get_gc):  Take a frame instead of a device as
	first argument.
	* gtk-glue.c (face_to_gc): Update caller.

2010-02-24  Didier Verna  <didier@xemacs.org>

	* glyphs.c: Clarify comment about potential_pixmap_file_instantiator.
	* glyphs.c (xbm_mask_file_munging): Clarify comment, remove
	unreachable condition and provide a cuple of assertions.
	* glyphs.c (xbm_normalize): Clarify comments, error on mask file
	not found.
	* glyphs.c (xface_normalize): Ditto, and handle inline data properly.

2010-02-22  Ben Wing  <ben@xemacs.org>

	* EmacsFrame.c:
	* Makefile.in.in (x_objs):
	* Makefile.in.in (mswindows_objs):
	* Makefile.in.in (tty_objs):
	* Makefile.in.in (gtk_objs):
	* Makefile.in.in (objs):
	* console-tty.h:
	* console-x-impl.h:
	* console-x-impl.h (struct x_device):
	* console-x.h:
	* console-xlike-inc.h:
	* depend:
	* device-gtk.c:
	* device-msw.c:
	* device-x.c:
	* device-x.c (x_init_device):
	* device-x.c (x_finish_init_device):
	* device.c:
	* devslots.h (MARKED_SLOT):
	* emacs.c (main_1):
	* event-Xt.c:
	* event-gtk.c:
	* event-msw.c:
	* faces.c:
	* font-mgr.c:
	* fontcolor-gtk-impl.h:
	* fontcolor-gtk.c:
	* fontcolor-gtk.c (syms_of_fontcolor_gtk):
	* fontcolor-gtk.c (console_type_create_fontcolor_gtk):
	* fontcolor-gtk.c (vars_of_fontcolor_gtk):
	* fontcolor-gtk.h:
	* fontcolor-impl.h:
	* fontcolor-msw-impl.h:
	* fontcolor-msw.c:
	* fontcolor-msw.c (syms_of_fontcolor_mswindows):
	* fontcolor-msw.c (console_type_create_fontcolor_mswindows):
	* fontcolor-msw.c (reinit_vars_of_fontcolor_mswindows):
	* fontcolor-msw.c (vars_of_fontcolor_mswindows):
	* fontcolor-msw.h:
	* fontcolor-msw.h (mswindows_color_to_string):
	* fontcolor-tty-impl.h:
	* fontcolor-tty.c:
	* fontcolor-tty.c (syms_of_fontcolor_tty):
	* fontcolor-tty.c (console_type_create_fontcolor_tty):
	* fontcolor-tty.c (vars_of_fontcolor_tty):
	* fontcolor-tty.h:
	* fontcolor-x-impl.h:
	* fontcolor-x.c:
	* fontcolor-x.c (syms_of_fontcolor_x):
	* fontcolor-x.c (console_type_create_fontcolor_x):
	* fontcolor-x.c (vars_of_fontcolor_x):
	* fontcolor-x.c (Xatoms_of_fontcolor_x):
	* fontcolor-x.h:
	* fontcolor.c:
	* fontcolor.c (syms_of_fontcolor):
	* fontcolor.c (specifier_type_create_fontcolor):
	* fontcolor.c (reinit_specifier_type_create_fontcolor):
	* fontcolor.c (reinit_vars_of_fontcolor):
	* fontcolor.c (vars_of_fontcolor):
	* fontcolor.h:
	* fontcolor.h (set_face_boolean_attached_to):
	* frame-gtk.c:
	* frame-x.c:
	* glyphs-eimage.c:
	* glyphs-gtk.c:
	* glyphs-msw.c:
	* glyphs-widget.c:
	* glyphs-x.c:
	* glyphs.c:
	* gtk-glue.c:
	* gtk-glue.c (xemacs_type_register):
	* gtk-xemacs.c:
	* inline.c:
	* intl-win32.c:
	* lisp.h:
	* lrecord.h:
	* mule-charset.c:
	* native-gtk-toolbar.c:
	* redisplay-msw.c:
	* redisplay-tty.c:
	* redisplay.c:
	* select-x.c:
	* select.c:
	* symsinit.h:
	* toolbar-msw.c:
	* toolbar-msw.c (TOOLBAR_ITEM_ID_BITS):
	* toolbar-x.c:
	* ui-gtk.c:
	* window.c:
	Rename objects*.[ch] -> fontcolor*.[ch].  Fix up all references to
	the old files (e.g. in #include statements, Makefiles,
	functions like syms_of_objects_x(), etc.).

2010-02-22  Ben Wing  <ben@xemacs.org>

	* .gdbinit.in.in:
	* Makefile.in.in (batch_test_emacs):
	test-harness.el is in lisp directory now so change how we call it.

2010-02-22  Ben Wing  <ben@xemacs.org>

	* alloc.c (object_memory_usage_stats):
	Remove unused var.

2010-02-21  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC):
	* alloc.c (struct):
	* alloc.c (tick_lrecord_stats):
	* alloc.c (tick_lcrecord_stats):
	* alloc.c (sweep_lcrecords_1):
	* alloc.c (COUNT_FROB_BLOCK_USAGE):
	* alloc.c (SWEEP_FIXED_TYPE_BLOCK_1):
	* alloc.c (free_cons):
	* alloc.c (free_key_data):
	* alloc.c (free_button_data):
	* alloc.c (free_motion_data):
	* alloc.c (free_process_data):
	* alloc.c (free_timeout_data):
	* alloc.c (free_magic_data):
	* alloc.c (free_magic_eval_data):
	* alloc.c (free_eval_data):
	* alloc.c (free_misc_user_data):
	* alloc.c (free_marker):
	* alloc.c (gc_sweep_1):
	* alloc.c (HACK_O_MATIC):
	* alloc.c (FROB):
	* alloc.c (object_memory_usage_stats):
	* alloc.c (Fgarbage_collect):
	* dumper.c:
	* dumper.c (pdump_objects_unmark):
	* lrecord.h:
	* lrecord.h (enum lrecord_alloc_status):
	Fixes to memory-usage-tracking code, etc.

	(1) Incorporate NEW_GC stuff into FREE_FIXED_TYPE_WHEN_NOT_IN_GC
	to avoid duplication.

	(2) Rewrite tick_lcrecord_stats() to include separate
	tick_lrecord_stats(); use in dumper.c to note pdumped objects.

	(3) Instead of handling frob-block objects specially in
	object_memory_usage_stats(), have SWEEP_FIXED_TYPE_BLOCK_1
	increment the stats in lrecord_stats[] so that they get handled
	like other objects.

	(4) Pluralize entry as entries, etc.

2010-02-21  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (pluralize_word):
	New function to pluralize a word.
	* alloc.c (pluralize_and_append): New function.
	* alloc.c (object_memory_usage_stats):
	Clean up duplication.

2010-02-21  Vin Shelton  <acs@xemacs.org>

	* events.c (event_pixel_translation): Simplify assertion for
	Visual C 6.

2010-02-21  Ben Wing  <ben@xemacs.org>

	* gc.c (kkcc_marking): Fix compile error.
	* mc-alloc.c:
	#if 0 out some unused functions.

2010-02-21  Ben Wing  <ben@xemacs.org>

	* extents.c (process_extents_for_insertion_mapper):
	Assertion wasn't quite set up correctly in previous patch.

2010-02-20  Ben Wing  <ben@xemacs.org>

	* mule-charset.c:
	* mule-charset.c (split_combined_codepoint):
	* mule-charset.c (Fmap_charset_chars):
	* mule-charset.c (syms_of_mule_charset):
	map-charset-chars moved to C.

2010-02-20  Ben Wing  <ben@xemacs.org>

	* charset.h:
	* charset.h (CHARSET_MIN_CODE):
	* charset.h (XCHARSET_MIN_CODE):
	* charset.h (XCHARSET_ALGO_LOW):
	* mule-charset.c:
	* mule-charset.c (print_charset):
	* mule-charset.c (get_charset_limits):
	New macros X?CHARSET_(MIN|MAX)_CODE.  Use them instead of
	XCHARSET_OFFSET, XCHARSET_CHARS when appropriate.
	
	* mule-charset.c (Fcharset_property):
	When no final byte, return nil instead of ?\^@; fixes some `make
	check' issues.

	* mule-charset.c (Fcharsets_in_region):
	Return name of charsets, not charset objects; fixes some `make
	check' issues.
	
	* mule-charset.c (Fmap_charset_chars):
	New function, #if 0 still.

	* mule-charset.c (Fcharset_memory_usage):
	Fix doc string.

	* chartab.c:
	* chartab.c (compute_chartab_table_size):
	* chartab.c (compute_char_table_usage):
	* chartab.c (Fchar_table_memory_usage):
	* chartab.c (syms_of_chartab):
	New function char-table-memory-usage.
	
	* eval.c:
	Better doc string for `debugger'.
	
	* lisp.h:
	* lisp.h (UNICODE_PRIVATE_MAX):
	* lisp.h (enum unicode_encoding_type):
	* text.c (get_external_unicode_codepoint):
	* unicode.c (struct unicode_coding_system):
	* unicode.c (encode_unicode_char):
	* unicode.c (unicode_convert):
	* unicode.c (unicode_putprop):
	* unicode.c (decode_unicode):
	Rename `enum unicode_class' to `enum unicode_allow'.
	Rename `enum unicode_type' to `enum unicode_encoding_type'.
	Create UNICODE_OFFICIAL_MAX, UNICODE_PRIVATE_MAX and
	EMACS_INT_UNICODE_PRIVATE_MAX.  Use in valid_unicode_codepoint_p().
	Add an allow-private arg to decode_unicode(); use it, and review
	places where Unicode codepoints are called for to see whether they
	should allow private or not.
	
	* mule-coding.c:
	* mule-coding.c (Fdecode_shift_jis_char):
	* mule-coding.c (decode_big5_char):
	* mule-coding.c (Fdecode_big5_char):
	Don't allow a second arg `handle-error' to `decode-big5-char',
	just return nil on error.  Don't crash when unable to decode
	a Shift-JIS char, just return nil; fixes some `make check' issues.
	
	* regex.c (re_compile_fastmap):
	* text.h:
	Fix a bug in computing the fastmap; fixes some `make check' issues.
	Also do a better job determining the exact fastmap bounds of a
	Unicode range.  Create FIRST_TRAILING_BYTE and LAST_TRAILING_BYTE
	for use in this computation.
	
	* text.c:
	* text.c (ibyte_string_displayed_columns):
	* text.c (ichar_string_displayed_columns):
	Don't abort when non-Mule, since some of these functions are used
	in non-Mule.

2010-02-16  Ben Wing  <ben@xemacs.org>

	* frame-impl.h:
	* frame-impl.h (FRAME_INTERNAL_BORDER_WIDTH):
	* frame-impl.h (FRAME_REAL_TOOLBAR_BOUNDS):
	* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BOUNDS):
	* frame-impl.h (FRAME_BOTTOM_BORDER_START):
	* frame-impl.h (FRAME_LEFT_BORDER_START):
	* frame-impl.h (FRAME_RIGHT_BORDER_START):
	* frame.c (frame_conversion_internal_1):
	* frame.c (change_frame_size_1):
	* redisplay-output.c (clear_left_border):
	* redisplay-output.c (clear_right_border):
	* redisplay-output.c (redisplay_clear_top_of_window):
	* redisplay-output.c (redisplay_clear_to_window_end):
	* redisplay-output.c (redisplay_clear_bottom_of_window):
	Rename FRAME_BORDER_* to FRAME_INTERNAL_BORDER_*.  Add
	general FRAME_INTERNAL_BORDER_SIZE().  Add FRAME_REAL_TOOLBAR_BOUNDS()
	to encompass the entire size of the toolbar including its border.
	Add specific top/left/bottom/right versions of this macro.
	Rewrite FRAME_*_BORDER_START and FRAME_*_BORDER_END to take into use
	FRAME_REAL_*_TOOLBAR_BOUNDS().  Add some comments about existing
	problems in frame sizing and how they might be fixed.  Simplify
	change_frame_size_1() using the macros just created.

2010-02-15  Ben Wing  <ben@xemacs.org>

	* frame.c (change_frame_size_1):
	Simplify the logic in this function.

	(1) Don't allow 0 as the value of height or width.  The old code
	that tried to allow this was totally broken, anyway, so obviously
	this never happens any more.

	(2) Don't duplicate the code in frame_conversion_internal() that
	converts displayable pixel size to total pixel size -- just call
	that function.

2010-02-15  Ben Wing  <ben@xemacs.org>

	* EmacsFrame.c:
	* EmacsFrame.c (EmacsFrameResize):
	* console-msw-impl.h:
	* console-msw-impl.h (struct mswindows_frame):
	* console-msw-impl.h (FRAME_MSWINDOWS_TARGET_RECT):
	* device-tty.c:
	* device-tty.c (tty_asynch_device_change):
	* event-msw.c:
	* event-msw.c (mswindows_wnd_proc):
	* faces.c (Fface_list):
	* faces.h:
	* frame-gtk.c:
	* frame-gtk.c (gtk_set_initial_frame_size):
	* frame-gtk.c (gtk_set_frame_size):
	* frame-msw.c:
	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_set_frame_size):
	* frame-msw.c (mswindows_size_frame_internal):
	* frame-msw.c (msprinter_init_frame_3):
	* frame.c:
	* frame.c (enum):
	* frame.c (Fmake_frame):
	* frame.c (adjust_frame_size):
	* frame.c (store_minibuf_frame_prop):
	* frame.c (Fframe_property):
	* frame.c (Fframe_properties):
	* frame.c (Fframe_displayable_pixel_height):
	* frame.c (Fframe_displayable_pixel_width):
	* frame.c (internal_set_frame_size):
	* frame.c (Fset_frame_height):
	* frame.c (Fset_frame_pixel_height):
	* frame.c (Fset_frame_displayable_pixel_height):
	* frame.c (Fset_frame_width):
	* frame.c (Fset_frame_pixel_width):
	* frame.c (Fset_frame_displayable_pixel_width):
	* frame.c (Fset_frame_size):
	* frame.c (Fset_frame_pixel_size):
	* frame.c (Fset_frame_displayable_pixel_size):
	* frame.c (frame_conversion_internal_1):
	* frame.c (get_frame_displayable_pixel_size):
	* frame.c (change_frame_size_1):
	* frame.c (change_frame_size):
	* frame.c (generate_title_string):
	* frame.h:
	* gtk-xemacs.c:
	* gtk-xemacs.c (gtk_xemacs_size_request):
	* gtk-xemacs.c (gtk_xemacs_size_allocate):
	* gtk-xemacs.c (gtk_xemacs_paint):
	* gutter.c:
	* gutter.c (update_gutter_geometry):
	* redisplay.c (end_hold_frame_size_changes):
	* redisplay.c (redisplay_frame):
	* toolbar.c:
	* toolbar.c (update_frame_toolbars_geometry):
	* window.c:
	* window.c (frame_pixsize_valid_p):
	* window.c (check_frame_size):
	Various fixes to frame geometry to make it a bit easier to understand
	and fix some bugs.

	1. IMPORTANT: Some renamings.  Will need to be applied carefully to
	the carbon repository, in the following order:

	-- pixel_to_char_size -> pixel_to_frame_unit_size
	-- char_to_pixel_size -> frame_unit_to_pixel_size
	-- pixel_to_real_char_size -> pixel_to_char_size
	-- char_to_real_pixel_size -> char_to_pixel_size
	-- Reverse second and third arguments of change_frame_size() and
	   change_frame_size_1() to try to make functions consistent in
	   putting width before height.
	-- Eliminate old round_size_to_char, because it didn't really
	   do anything differently from round_size_to_real_char()
	-- round_size_to_real_char -> round_size_to_char; any places that
	   called the old round_size_to_char should just call the new one.

	2. IMPORTANT FOR CARBON: The set_frame_size() method is now passed
	   sizes in "frame units", like all other frame-sizing functions,
	   rather than some hacked-up combination of char-cell units and
	   total pixel size.  This only affects window systems that use
	   "pixelated geometry", and I'm not sure if Carbon is one of them.
	   MS Windows is pixelated, X and GTK are not.  For pixelated-geometry
	   systems, the size in set_frame_size() is in displayable pixels
	   rather than total pixels and needs to be converted appropriately;
	   take a look at the changes made to mswindows_set_frame_size()
	   method if necessary.
	
	3. Add a big long comment in frame.c describing how frame geometry
	   works.

	4. Remove MS Windows-specific character height and width fields,
	   duplicative and unused.

	5. frame-displayable-pixel-* and set-frame-displayable-pixel-*
	   didn't use to work on MS Windows, but they do now.

	6. In general, clean up the handling of "pixelated geometry" so
	   that fewer functions have to worry about this.  This is really
	   an abomination that should be removed entirely but that will
	   have to happen later.  Fix some buggy code in
	   frame_conversion_internal() that happened to "work" because it
	   was countered by oppositely buggy code in change_frame_size().

	7. Clean up some frame-size code in toolbar.c and use functions
	   already provided in frame.c instead of rolling its own.

	8. Fix check_frame_size() in window.c, which formerly didn't take
	   pixelated geometry into account.


2010-02-15  Ben Wing  <ben@xemacs.org>

	* mc-alloc.c:
	* mc-alloc.c (mc_realloc_1):
	* mc-alloc.c (set_dirty_bit):
	* mc-alloc.c (set_dirty_bit_for_address):
	* mc-alloc.c (get_dirty_bit):
	* mc-alloc.c (get_dirty_bit_for_address):
	* mc-alloc.c (set_protection_bit):
	* mc-alloc.c (set_protection_bit_for_address):
	* mc-alloc.c (get_protection_bit):
	* mc-alloc.c (get_protection_bit_for_address):
	* mc-alloc.c (get_page_start):
	* vdb-win32.c (win32_fault_handler):
	* vdb.c:
	Fix some compile warnings, make vdb test code conditional on
	DEBUG_XEMACS.
	
2010-02-15  Ben Wing  <ben@xemacs.org>

	* regex.c:
	* regex.c (DEBUG_FAIL_PRINT1):
	* regex.c (PUSH_FAILURE_POINT):
	* regex.c (POP_FAILURE_POINT):
	* regex.c (regex_compile):
	* regex.c (re_match_2_internal):
	* regex.h:
	* search.c:
	* search.c (search_buffer):
	* search.c (debug_regexps_changed):
	* search.c (vars_of_search):
	Add an internal variable debug_regexps and a corresponding Lisp
	variable `debug-regexps' that takes a list of areas in which to
	display debugging info about regex compilation and matching
	(currently three areas exist).  Use existing debugging code
	already in regex.c and modify it so that it recognizes the
	debug_regexps variable and the flags in it.

	Rename variable `debug-xemacs-searches' to just `debug-searches',
	consistent with other debug vars.

2010-02-10  Ben Wing  <ben@xemacs.org>

	* charset.h:
	* mule-ccl.c (ccl_driver):
	* mule-coding.c (multibyte_putprop):
	* search.c (boyer_moore):
	* unicode.c (get_unicode_conversion_1):
	Fix warnings due to shadowing local variables (some real bugs here)
	and declarations after statements.

2010-02-10  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	Add comment about @@####.
	
2010-02-08  Ben Wing  <ben@xemacs.org>

	* mule-coding.c (struct iso2022_coding_system):
	* mule-coding.c (struct iso2022_coding_stream):
	Use `Boolbyte' for a byte-wide flag instead of `unsigned char'.
	Remove `warned_chars'.  Correct the comment about the contents
	of the Unicode precedence array.
	
	* mule-coding.c (reset_iso2022_decode):
	* mule-coding.c (reset_iso2022_encode):
	* mule-coding.c (iso2022_mark_coding_stream):
	* mule-coding.c (iso2022_encode):
	Get rid of `warned_chars' and the whole warning mechanism since
	it never happens any more.  Fix problems under Unicode-internal
	with non-ISO2022-encodable characters -- they should properly be
	encoded as UTF-8.
	
	* mule-coding.c (FROB_INITIAL_CHARSET):
	Fix spacing typo.

2010-02-08  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (remove-config-dependent-elcs):
	Use $(RM) instead of just `rm' so it doesn't make things fail
	if the target doesn't exist.

2010-02-07  Ben Wing  <ben@xemacs.org>

	* alloc.c (disksave_object_finalization):
	Don't clear Unicode precedence when non-Mule, fn doesn't exist.
	
	* buffer.h:
	buffer_* versions of charset functions need to be defined even when
	non-Mule.
	
	* charset.h:
	* charset.h (INLINE_ASSERT_VALID_CHARSET_CODEPOINT):
	filtered_* versions of charset functions need to be defined even when
	non-Mule.
	
	* emacs.c (main_1):
	Don't call init_mule_* when non-Mule.
	
	* glyphs-msw.c:
	* glyphs-msw.c (charset_of_text):
	No need to special-case this when non-Mule.
	
	* text.c:
	* text.c (find_charsets_in_buffer):
	Fix comments.
	
	* unicode.c:
	Need a non-Mule version of decode_buffer_or_precedence_list.
	
	* unicode.c (syms_of_unicode):
	* unicode.c (init_unicode):
	Don't initialize or recalculate precedence arrays when non-Mule,
	since precedence array object doesn't exist.

2010-02-04  Ben Wing  <ben@xemacs.org>

	* chartab.c:
	* chartab.c (char_table_hash):
	* search.c (boyer_moore):
	Fix compile errors.

2010-01-29  Ben Wing  <ben@xemacs.org>

	* alloc.c (common_init_alloc_early):
	Fix compile error.
	
	* buffer.h:
	Fix unused-var warning.
	
	* regex.c:
	* regex.c (compile_extended_range):
	Delete stray code that (thankfully) triggered an use-of-uninit-var
	warning.

	* unicode.c:
	* unicode.c (get_unicode_conversion_1):
	* unicode.c (complex_vars_of_unicode):
	Fix compile error and unused-argument warning.

2010-01-28  Ben Wing  <ben@xemacs.org>

	* unicode.h:
	* unicode.h (struct precedence_array):
	Forgot to add this file.

2010-01-25  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in: New target `make-case-conv' to generate
	mule/uni-case-conv.el.

2010-01-24  Ben Wing  <ben@xemacs.org>

	* charset.h:
	* charset.h (HANDLE_CHARSET_CODEPOINT_ERROR):
	* mule-coding.c (decode_big5_char):
	* text.c (old_mule_unicode_to_ichar):
	Clean up, add HANDLE_UNICODE_ERROR, HANDLE_ICHAR_ERROR.
	Use them.
	
	* emacs.c (main_1):
	Comment fix.
	
	* mule-coding.c:
	* mule-coding.c (Fdecode_big5_char):
	Clean up doc string.
	
	* redisplay-xlike-inc.c:
	Remove accidental merge marker.
	
	* text.c (external_char_to_charset_codepoint):
	* text.c (Fchar_to_charset_codepoint):
	* text.c (Fchar_charset):
	* text.c (Fchar_octet):
	* text.c (Fsplit_char):
	Add a FAIL argument and use it.

	* lisp.h:
	* mule-coding.c (Fdecode_big5_char):
	* text.c (decode_handle_error):
	* text.c (Fmake_char):
	* text.c (Fchar_to_unicode):
	* text.c (Funicode_to_char):
	Add ALLOW_PRIVATE arg to decode_handle_error to control
	whether to allow `use-private'.
	
	* text.c (Funicode_to_charset_codepoint):
	* text.c (Fchar_to_charset_codepoint):
	* text.c (Fchar_charset):
	* text.c (Fchar_octet):
	* text.c (Fsplit_char):
	Add HANDLE-ERROR argument and document.
	
	* unicode.c:
	Delete non-Mule stubs of precedence-array functions.
	
	* unicode.c (print_precedence_array):
	New fun for displaying the contents of a precedence-array.
	
	* unicode.c (filter_precedence_array):
	* unicode.c (Fnormalized_unicode_precedence_list):
	Resurrect filter_precedence_array.
	Use in Fnormalized_unicode_precedence_list.
	
	* unicode.c (free_precedence_array):
	Comment fix.
	
	* lisp.h:
	* mule-coding.c (init_mule_coding):
	* unicode.c (simple_convert_predence_list_to_array):
	Rename internal_convert_precedence_list_to_array() to
	simple_convert_predence_list_to_array().

	* lisp.h:
	* text.c (external_char_to_charset_codepoint):
	* text.c (get_external_unicode_codepoint):
	* text.c (Funicode_to_char):
	* text.c (Funicode_to_charset_codepoint):
	* unicode.c (external_convert_precedence_list_to_array):
	* unicode.c (decode_buffer_or_precedence_list):
	Don't allow external_convert_precedence_list_to_array() to take
	a buffer, and don't directly retrieve a precedence list from a
	buffer.  Instead, use the buffer_*() charset-codepoint functions
	so that both the buffer-local and global precedence lists are
	consulted; use new fn decode_buffer_or_precedence_list() in
	doing this.
	
	* unicode.c (RUP_MAKE_FULL_P):
	* unicode.c (recalculate_unicode_precedence_1):
	* unicode.c (recalculate_unicode_precedence):
	Don't automatically make precedence lists full in
	recalculate_unicode_precedence_1(), because then buffer-local
	cached versions have everything in them.  Instead, add a flag
	RUP_MAKE_FULL_P and use it only when normalizing the default
	precedence list.
	
	* unicode.c (precedence_array_to_list):
	* unicode.c (Fnormalized_unicode_precedence_list):
	New fn precedence_array_to_list.  Use in
	Fnormalized_unicode_precedence_list.  Clean up
	Fnormalized_unicode_precedence_list to handle the
	BUFFER-OR-PRECEDENCE-ARRAY argument properly.
	
	* unicode.c (complex_vars_of_unicode):
	Set initial values of the default precedence arrays for use
	in unicode.el before the proper value gets set.
	Bracket precedence-array creation in #ifdef MULE.

2010-01-24  Ben Wing  <ben@xemacs.org>

	* lrecord.h (enum lrecord_type):
	Sort the order of types.

2010-01-24  Ben Wing  <ben@xemacs.org>

	* .gdbinit.in.in:
	Add all of the lrecord types to `pobj' and sort according to the
	order in lrecord.h.

2010-01-24  Ben Wing  <ben@xemacs.org>

	NOT WORKING, NEED TO CHECK IN TO SYNC WITH MAINLINE.
	
	* buffer.h:
	Create buffer_*() versions of charset-codepoint functions that
	take a precedence array.  Make them take a buffer instead and call
	the wrapped functions first on the buffer-local precedence array
	then the default one.

	* buffer.c (finish_init_buffer):
	* buffer.c (common_init_complex_vars_of_buffer):
	* buffer.c (complex_vars_of_buffer):
	* bufslots.h:
	* lisp.h:
	* unicode.c (free_precedence_array):
	* unicode.c (recalculate_unicode_precedence_1):
	* unicode.c (recalculate_unicode_precedence):
	* unicode.c (Fset_buffer_unicode_precedence_list,
	             Fset_default_unicode_precedence_list,
		     Fbuffer_unicode_precedence_list,
		     Fdefault_unicode_precedence_list):
	* unicode.c (syms_of_unicode):
	Remove buffer-local variable unicode-precedence-list.
	Instead have subrs `set-default-unicode-precedence-list',
	`set-buffer-unicode-precedence-list', etc.  Also resurrect
	Vdefault_unicode_precedence_array and
	Vdefault_unicode_precedence_list instead of using the
	buffer-defaults structure.
	
	Keep the cached buffer-local Unicode-precedence array but now it
	caches only the values specified in the buffer.  At buffer
	creation just allocate a blank precedence array for this field.

	Don't cache a combined buffer-local/global Unicode-precedence
	array because we don't use it anymore; instead, we have
	buffer_*() charset-codepoint functions (described above),
	which implement what this combined array was doing.
	
	* buffer.h:
	* charset.h:
	Rename ichar_charset_obsolete_me_baby_please() to
	buffer_ichar_charset_obsolete_me_baby(), add a `buffer' argument
	and move to buffer.h from charset.h.
	
	* charset.h (ichar_to_charset_codepoint, unicode_to_charset_codepoint):
	* charset.h (filtered_*()):
	* charset.h (HANDLE_CHARSET_CODEPOINT_ERROR):
	* mule-coding.c (Fencode_shift_jis_char):
	* mule-coding.c (Fencode_big5_char):
	* text.h:
	* text.c (old_mule_unicode_to_ichar):
	Add a `fail' argument to certain functions that took a precedence
	list but had no `fail' argument.  Use HANDLE_CHARSET_CODEPOINT_ERROR()
	to abstract the handle-failure behavior.

	Add various filtered_*() versions of all the functions that take
	a precedence list, allowing a predicate to be specified to control
	which charsets are processed.

	* charset.h (struct Lisp_Charset):
	* text.c (old_mule_unicode_to_ichar):
	* mule-coding.c (shift_jis_convert):
	* mule-coding.c (big5_convert):
	* unicode.c (add_charset_to_precedence_array):
	* unicode.c (unicode_convert):
	* unicode.h:
	Fix a longstanding problem: Don't do shortcuts involving ASCII
	if there is a charset higher in the precedence list that specifies
	Unicode translations involving ASCII characters.  Remove shortcuts
	involving Control-1 entirely.  Add flags to `struct Lisp_Charset'
	and `struct precedence_array' to facilitate this change.
	Track them in add_charset_to_precedence_array().
	Rename non_ascii_itext_to_charset_codepoint_raw() to just
	itext_to_charset_codepoint_raw() since it now has to handle
	ASCII as result of these changes.
	
	* chartab.c (Fmake_char_table): Comment fix, default value for
	syntax tables changed in 21.5 to `word' not `inherit'.

	* chartab.c (word_boundary_p):
	* chartab.h:
	* glyphs-msw.c (charset_of_text):
	* console-gtk.c (gtk_perhaps_init_unseen_key_defaults):
	* event-Xt.c:
	* event-xlike-inc.c (USE_UNICODE_MAP):
	* event-xlike-inc.c (endif):
	* glyphs-msw.c:
	* glyphs-msw.c (mswindows_widget_hfont):
	* lisp.h:
	* lread.c (read_unicode_escape):
	* mule-charset.c (Fcharsets_in_region):
	* mule-coding.c (add_unicode_to_dynarr):
	* mule-wnnfns.c (m2w):
	* redisplay-gtk.c (gtk_output_display_block):
	* redisplay-msw.c:
	* redisplay-msw.c (separate_textual_runs):
	* redisplay-msw.c (mswindows_output_cursor):
	* redisplay-msw.c (mswindows_output_string):
	* redisplay-msw.c (mswindows_output_display_block):
	* redisplay-msw.c (mswindows_text_width):
	* redisplay-x.c:
	* redisplay-x.c (x_text_width):
	* redisplay-x.c (x_output_display_block):
	* redisplay-x.c (x_output_string):
	* redisplay-xlike-inc.c (separate_textual_runs_nomule):
	* redisplay-xlike-inc.c (separate_textual_runs_xft_nomule):
	* redisplay-xlike-inc.c (separate_textual_runs_xft_mule):
	* redisplay-xlike-inc.c (separate_textual_runs_mule):
	* redisplay-xlike-inc.c (separate_textual_runs):
	* redisplay.c (add_ichar_rune_1):
	* syntax.c (Fset_syntax_table):
	* syntax.c (WORD_BOUNDARY_P):
	* syntax.c (scan_words):
	* unicode.c (decode_unicode_char):
	Add a `buffer' argument to various functions that used to call
	charset-codepoint functions that took a precedence array and
	passed in get_unicode_precedence().

	Don't call get_unicode_precedence() when calling charset-
	codepoint functions taking a precedence array, instead use the
	buffer_*() version of charset-codepoint functions and pass in
	`current_buffer' (@@#### FIXME) or a buffer derived from
	an argument or elsewhere.  In fact, delete get_unicode_precedence().

	Remove `precedence-list' argument from `charsets-in-region',
	use precedence-list from buffer argument.
	
	* mule-ccl.c (charset_7bit_p):
	* mule-ccl.c (ccl_driver):
	* mule-coding.c (ccl_convert):
	* mule-coding.c (fixed_width_convert):
	* mule-ccl.h:
	* redisplay-xlike-inc.c (separate_textual_runs_mule):
	Add a buffer argument to ccl_driver() and pass it in when
	possible, otherwise current_buffer. (See previous entry.)

	* redisplay-xlike-inc.c (separate_textual_runs_mule):
	If we can't convert to a charset codepoint, substitute the
	CANT_DISPLAY_CHAR (~).  @@#### Big hack, needs to be fixed.

	* depend: Regenerate.
	
	* faces.c (ensure_face_cachel_complete):
	* faces.c (face_cachel_char_font_metric_info):
	* lisp.h:
	* text.c (find_charsets_in_ibyte_string):
	* text.c (find_charsets_in_ichar_string):
	* text.c (find_charsets_in_buffer):
	Change `find_charsets_in*' to take a buffer argument instead of
	a precedence array, and use the buffer_*()
	version of charset-codepoint functions.
	
	* mule-ccl.c:
	* mule-ccl.c (CCL_HANDLE_ERROR):
	* mule-ccl.c (Fccl_execute):
	* mule-ccl.h:
	When DEBUG_XEMACS, turn on CCL_DEBUG.

	Clean up error-handling code when unable to convert or a
	bad charset or charset ID passed in.  Create new CCL error
	classes for these two types of errors.

	Use a filtering predicate to ensure that we only process
	"7-bit" charsets when we are forced to shove charset codepoints
	into 14 bits. (@@#### Nasty hack.  Don't maul the codepoints
	like this.  At least use 16 bits.)
	
	
	* mule-coding.c (reset_iso2022_unicode_precedence):
	* mule-coding.c (iso2022_encode):
	Don't create a full precedence array listing all charsets.
	Instead list only the ones derivable from the coding system
	(@@#### also currently ASCII and Control-1, should be removed),
	and implement the preference for ISO2022 charsets by using
	a filter predicate when converting to a charset codepoint.	

	* text.c (old_mule_non_ascii_itext_to_charset_codepoint_raw):
	Cosmetic change.

	* text.c (Funicode_to_char):
	Clean up doc string.

	* lisp.h:
	* text.c:
	* text.c (external_char_to_charset_codepoint):
	* text.c (get_external_unicode_codepoint):
	* text.c (Funicode_to_char):
	* text.c (Fchar_to_charset_codepoint):
	* text.c (Fchar_charset):
	* text.c (Fchar_octet):
	* text.c (Fsplit_char):
	* unicode.c (external_convert_precedence_list_to_array):
	Modify various subrs that took a precedence-list to have an
	argument that can either be a buffer (retrieve the buffer's
	precedence list) or an explicit precedence list.  Modify
	external_convert_precedence_list_to_array() to optionally
	allow buffers in place of predence lists.

	* unicode.c: Some rearrangement of code in header section.

	* text.c (old_mule_unicode_to_ichar):
	* unicode.c (get_unicode_conversion_1):
	* unicode.c (get_unicode_conversion):
	* unicode.c (unicode_to_charset_codepoint_raw):
	Abstract out the section to retrieve a mapping for a single
	charset from unicode_to_charset_codepoint_raw() (renamed from
	non_ascii_unicode_to_charset_codepoint).  Function
	get_unicode_conversion(), to do a single charset mapping,
	not currently used but was at one point and might be in the future.
	
2010-01-21  Ben Wing  <ben@xemacs.org>

	* buffer.c (finish_init_buffer):
	* buffer.c (common_init_complex_vars_of_buffer):
	* buffer.c (complex_vars_of_buffer):
	* bufslots.h:
	Create a new buffer-local variable `unicode-precedence-list'.
	Create a couple of extra buffer slots for caching an internal
	normalized version of the list.
	
	* emacs.c (main_1):
	Comment about new dependencies on complex_vars_of_buffer().
	
	* lisp.h:
	Declare some functions in unicode.c.
	
	* mule-charset.c:
	* mule-charset.c (remove_charset_from_hash_tables):
	* mule-charset.c (make_charset):
	* mule-charset.c (Fmake_charset):
	Put an unwind-protect around the code that handles initializing
	tags and unicode maps -- in case of error, remove the charset
	from the hash tables that record it.
	
	* mule-charset.c (Fset_charset_tags):
	* mule-charset.c (syms_of_mule_charset):
	New function `set-charset-tags'.
	
	* unicode.c:
	* unicode.c (allocate_jit_ucs_charset):
	Add tags `jit' and `internal' to JIT charsets.
	
	* unicode.c (free_precedence_array):
	Check that any global or buffer-local precedence array isn't
	being freed.
	
	* unicode.c (cplta_mapper):
	* unicode.c (convert_precedence_list_to_array_1):
	* unicode.c (convert_precedence_list_to_array):
	* unicode.c (internal_convert_precedence_list_to_array):
	* unicode.c (external_convert_precedence_list_to_array):
	Clean up and use bit flags rather than extra parameters for
	holding flags.
	
	* unicode.c (RUP_NUKE_BUFFER_SLOTS):
	* unicode.c (recalculate_unicode_precedence_1):
	* unicode.c (charset_created_recalculate_unicode_precedence):
	* unicode.c (disksave_clear_unicode_precedence):
	* unicode.c (unicode_precedence_list_changed):
	When recalculating the precedence arrays, compute both the
	global and buffer-local values.  Create another hash table
	to cache mappings from conses of buffer-local and default
	precedence arrays to the precedence array representing the
	combined value.  Create functions init_default_unicode_precedence()
	and init_buffer_unicode_precedence() to initialize default and
	buffer-local values of the caches when a new buffer is created.
	
	* unicode.c (syms_of_unicode):
	* unicode.c (init_unicode):
	Delete the various old functions for manipulating Unicode
	precedence list.  Access is now through the variable
	`unicode-precedence-list' and a single function
	`normalized-unicode-precedence-list'.  Delete the old hash
	table that holds the global precedence array.

	* lisp.h:
	* unicode.c (filter_precedence_array):
	No longer used, so #if-0 out.
	

2010-01-20  Ben Wing  <ben@xemacs.org>

	* tests.c (Ftest_data_format_conversion):
	Put in the right internal-format data under Unicode-internal;
	at least it doesn't crash any more.

2010-01-20  Ben Wing  <ben@xemacs.org>

	* search.c (boyer_moore):
	Initialize translate_prev_len in the right place in the inner
	loop; fixes `make check' failures.

2010-01-20  Ben Wing  <ben@xemacs.org>

	* alloc.c (disksave_object_finalization):
	* lisp.h:
	* unicode.c (disksave_clear_unicode_precedence):
	Clear Unicode precedence tables before dumping so we don't have
	precedence-array objects trying to get dumped.
	
	* device.c:
	* device.c (call_critical_lisp_code):
	* device.h:
	* lisp.h:
	Allow call_critical_lisp_code to be called by callers who don't
	have any devices to lock.
	
	* emacs.c (main_1):
	* intl.c (init_intl):
	* intl.c (syms_of_intl):
	* symsinit.h:
	* unicode.c (init_unicode):
	New function init_unicode() to recreate the Unicode precedence
	tables after dumping.  Call it from main_1().  Declare it in
	symsinit.h.  Use call_critical_lisp_code in init_intl() instead
	of home-grown code to do the same thing.
	
	* text.c (external_char_to_charset_codepoint):
	* text.c (Funicode_to_char):
	* unicode.c:
	* unicode.c (free_precedence_array):
	* unicode.c (convert_precedence_list_to_array_2):
	* unicode.c (cplta_mapper):
	* unicode.c (convert_precedence_list_to_array_1):
	* unicode.c (internal_convert_precedence_list_to_array):
	* unicode.c (external_convert_precedence_list_to_array):
	* unicode.c (recalculate_unicode_precedence_1):
	* unicode.c (recalculate_unicode_precedence):
	Redo somewhat the code handling precedence-array objects.
	For simplicity, don't overwrite an existing precedence-array
	object, but create a new one when we need to recalculate the
	precedence arrays.

	Fix a genuine bug: recalculating the precedence arrays, we
	didn't clear the precedence-array hash tables.  Clean up the
	code so that this always happens.

	When calling Lisp, if we're doing it from init_unicode(),
	wrap in call_critical_lisp_code().  Add a flag to various
	precedence-array functions to indicate whether we need to
	be wrapping in this way.

	* mule-charset.c (vars_of_mule_charset):
	* mule-coding.c:
	* mule-coding.c (struct multibyte_coding_system):
	* mule-coding.c (struct multibyte_coding_stream):
	* mule-coding.c (multibyte_init_coding_stream):
	* mule-coding.c (multibyte_convert):
	* mule-coding.c (multibyte_init):
	* mule-coding.c (multibyte_mark):
	* mule-coding.c (multibyte_finalize):
	* mule-coding.c (multibyte_putprop):
	* mule-coding.c (multibyte_getprop):
	* mule-coding.c (multibyte_print):
	* mule-coding.c (coding_system_type_create_mule_coding):
	Put back the old way of storing a Lisp-object dynarr of
	charsets rather than a precedence array in multibyte coding
	systems.  Instead, create the precedence array in the
	type-specific coding-stream object -- create two new methods
	multibyte_init_coding_stream() and multibyte_mark_coding_stream()
	for this purpose.  This way, no precedence arrays will be
	hanging around at dump time.


2010-01-17  Ben Wing  <ben@xemacs.org>

	* mule-charset.c:
	* mule-charset.c (Fcharset_short_name):
	* mule-charset.c (Fcharset_long_name):
	* mule-charset.c (Fcharset_description):
	* text.c:
	* text.c (Fchar_to_charset_codepoint):
	* text.c (Fchar_octet):
	* text.c (Fsplit_char):
	Rewrite many docstrings for additional clarity.  `make-char'
	got an especially thorough rewrite.

	* text.c (syms_of_text):
	Add comments about where some symbols are to be found, and
	a #### comment about Qsubstitute_negated.

2010-01-17  Ben Wing  <ben@xemacs.org>

	* mule-charset.c (make_charset):
	Initialize Unicode-map to Qnil, for charsets such as `ascii' without
	an explicit map.

2010-01-17  Ben Wing  <ben@xemacs.org>


	Fundamental changes:

	1) We no longer create the "internal" charsets.  Instead that
	happens in Lisp, and at run time we fetch pointers to the charsets
	using their names.

	2) When allocating ID's for charsets, we first allocate official
	ID's, then private ID's, then non-encodable ID's. (Under
	Unicode-internal, there is only one kind of ID.) Formerly under
	old-Mule, official ID's were reserved for charsets created in C,
	and Lisp-created charsets always went into private ID space even
	if there was room in the official ID space.
	
	* charset.h:
	* charset.h (struct charset_lookup):
	* mule-charset.c:

	Rename next_allocated_private_* to next_allocated_*.
	
	* emacs.c (main_1):
	* symsinit.h:
	* mule-charset.c (init_mule_charset):
	* mule-coding.c (complex_vars_of_mule_coding):
	* mule-coding.c (init_mule_coding):
	New init_mule_* functions.  Define them in mule-*.c, declare them
	in symsinit.h, and call them in emacs.c (but only when we have
	previously dumped).

	The charsets are no longer created during early initialization but
	during dumping, so at run-time, init_mule_charset() fetches the
	created charsets and stores them into variables.

	Some code to set precedence tables for Big5 and Shift-JIS depends
	on charsets being created, so move it out of
	complex_vars_of_mule_coding() (run at init time) to
	init_mule_coding() (run at run time, after init_mule_charset()).
	
	* lisp.h:
	Add external declarations for all charset symbols, so code can
	fetch charsets through Fget_charset() if necessary.
	
	* mule-charset.c (get_unallocated_encodable_charset_id):
	Rename next_charset_id -> next_non_encodable_charset_id.
	Fix up get_unallocated_encodable_charset_id() so that under
	old-Mule it allocates first official ID's, then private ID's.
	Previously it only allocated private ID's.
	
	* mule-charset.c (make_charset):
	Clean up code to allocate charset ID's.
	
	* mule-charset.c (syms_of_mule_charset):
	Set next_allocated_*_id to point to the beginning of allocatable
	official ID space rather than private ID space.
	
	* mule-charset.c (vars_of_mule_charset):
	Don't create charsets here, except for ascii, control-1,
	iso-8859-1 and composite.  For remaining charsets, set their value
	to nil.
	
	* mule-charset.c (complex_vars_of_mule_charset):
	Bracket code to create special fixed-offset Unicode charsets
	in FIXED_UNICODE_CHARSETS; not currently used.
	
	* mule-charset.c (enum fixed_unicode_charset_id):
	Delete enum CHARSET_ID_OFFICIAL; we fetch these charsets through
	symbols.  Take what's left of the enum and put it into `enum
	fixed_unicode_charset_id', only used when FIXED_UNICODE_CHARSETS.

	* text.h:
	Move CHARSET_ID_COMPOSITE here from mule-charset.c, and create
	constants for the boundaries of 1- and 2-dimensional official ID
	space.
	
	* unicode.c:
	When processing special `big5' flag, fetch the big5 charsets
	through their names, since we may be called at dump time when the
	charset variables have not been initialized. (Warning: This
	depends on the initialization of the Unicode map specified at
	creation time happening as the *very last* thing at creation, in
	particular after the charset has been added to the
	name->charset-object hash table.
	

2010-02-07  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (Dynarr_verify, Dynarr_verify_mod):
	If ERROR_CHECK_STRUCTURES is not defined, cast the argument in
	these two macros; fixes the g++ build.

2010-02-07  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Finsert_file_contents_internal):
	Only call format-decode if it has a function binding.
	(build_annotations): Only call format-annotate-function if it has
	a function binding; incidentally only calling #'car-less-than-car
	if *it* has a function binding.
	(syms_of_fileio): #'car-less-than-car and #'cdr-less-than-cdr are
	now in Lisp.

2010-02-20  Ben Wing  <ben@xemacs.org>

	* EmacsFrame.c:
	* EmacsFrame.c (EmacsFrameRecomputeCellSize):
	* alloca.c (i00afunc):
	* buffer.c:
	* buffer.c (MARKED_SLOT):
	* buffer.c (complex_vars_of_buffer):
	* cm.c:
	* cm.c (cmcheckmagic):
	* console.c:
	* console.c (MARKED_SLOT):
	* device-x.c:
	* device-x.c (x_get_visual_depth):
	* emacs.c (sort_args):
	* eval.c (throw_or_bomb_out):
	* event-stream.c:
	* event-stream.c (Fadd_timeout):
	* event-stream.c (Fadd_async_timeout):
	* event-stream.c (Frecent_keys):
	* events.c:
	* events.c (Fdeallocate_event):
	* events.c (event_pixel_translation):
	* extents.c:
	* extents.c (process_extents_for_insertion_mapper):
	* fns.c (Fbase64_encode_region):
	* fns.c (Fbase64_encode_string):
	* fns.c (Fbase64_decode_region):
	* fns.c (Fbase64_decode_string):
	* font-lock.c:
	* font-lock.c (find_context):
	* frame-x.c:
	* frame-x.c (x_wm_mark_shell_size_user_specified):
	* frame-x.c (x_wm_mark_shell_position_user_specified):
	* frame-x.c (x_wm_set_shell_iconic_p):
	* frame-x.c (x_wm_set_cell_size):
	* frame-x.c (x_wm_set_variable_size):
	* frame-x.c (x_wm_store_class_hints):
	* frame-x.c (x_wm_maybe_store_wm_command):
	* frame-x.c (x_initialize_frame_size):
	* frame.c (delete_frame_internal):
	* frame.c (change_frame_size_1):
	* free-hook.c (check_free):
	* free-hook.c (note_block_input):
	* free-hook.c (log_gcpro):
	* gccache-gtk.c (gc_cache_lookup):
	* gccache-x.c:
	* gccache-x.c (gc_cache_lookup):
	* glyphs-gtk.c:
	* glyphs-gtk.c (init_image_instance_from_gdk_pixmap):
	* glyphs-x.c:
	* glyphs-x.c (extract_xpm_color_names):
	* insdel.c:
	* insdel.c (move_gap):
	* keymap.c:
	* keymap.c (keymap_lookup_directly):
	* keymap.c (keymap_delete_inverse_internal):
	* keymap.c (accessible_keymaps_mapper_1):
	* keymap.c (where_is_recursive_mapper):
	* lisp.h:
	* lstream.c (make_lisp_buffer_stream_1):
	* macros.c:
	* macros.c (pop_kbd_macro_event):
	* mc-alloc.c (remove_page_from_used_list):
	* menubar-x.c:
	* menubar-x.c (set_frame_menubar):
	* ralloc.c:
	* ralloc.c (obtain):
	* ralloc.c (relinquish):
	* ralloc.c (relocate_blocs):
	* ralloc.c (resize_bloc):
	* ralloc.c (r_alloc_free):
	* ralloc.c (r_re_alloc):
	* ralloc.c (r_alloc_thaw):
	* ralloc.c (init_ralloc):
	* ralloc.c (Free_Addr_Block):
	* scrollbar-x.c:
	* scrollbar-x.c (x_update_scrollbar_instance_status):
	* sunplay.c (init_device):
	* unexnt.c:
	* unexnt.c (read_in_bss):
	* unexnt.c (map_in_heap):
	* window.c:
	* window.c (real_window):
	* window.c (window_display_lines):
	* window.c (window_display_buffer):
	* window.c (set_window_display_buffer):
	* window.c (unshow_buffer):
	* window.c (Fget_lru_window):
	if (...) ABORT(); ---> assert();

	More specifically:

	if (x == y) ABORT (); --> assert (x != y);
	if (x != y) ABORT (); --> assert (x == y);
	if (x > y) ABORT (); --> assert (x <= y);
	etc.
	if (!x) ABORT (); --> assert (x);
	if (x) ABORT (); --> assert (!x);

	DeMorgan's Law's applied and manually simplified:
	if (x && !y) ABORT (); --> assert (!x || y);
	if (!x || y >= z) ABORT (); --> assert (x && y < z);

	Checked to make sure that assert() of an expression with side
	effects ensures that the side effects get executed even when
	asserts are disabled, and add a comment about this being a
	requirement of any "disabled assert" expression.

	* depend:
	* make-src-depend:
	* make-src-depend (PrintDeps):
	Fix broken code in make-src-depend so it does what it was always
	supposed to do, which was separate out config.h and lisp.h and
	all the files they include into separate variables in the
	depend part of Makefile so that quick-build can turn off the
	lisp.h/config.h/text.h/etc. dependencies of the source files, to
	speed up recompilation.


2010-02-20  Ben Wing  <ben@xemacs.org>

	* EmacsFrame.c (EmacsFrameRecomputeCellSize):
	* faces.c (default_face_font_info):
	* faces.c (default_face_width_and_height):
	* faces.c (Fface_list):
	* faces.h:
	* frame-gtk.c (gtk_set_initial_frame_size):
	* frame-gtk.c (gtk_set_frame_size):
	* frame-gtk.c (gtk_recompute_cell_sizes):
	* frame.c:
	* frame.c (frame_conversion_internal_1):
	* frame.c (change_frame_size_1):
	* frame.c (change_frame_size):
	* glyphs-msw.c (mswindows_combo_box_instantiate):
	* glyphs-widget.c (widget_instantiate):
	* glyphs-widget.c (tree_view_query_geometry):
	* glyphs-widget.c (Fwidget_logical_to_character_width):
	* glyphs-widget.c (Fwidget_logical_to_character_height):
	* indent.c (vmotion_pixels):
	* redisplay-output.c (get_cursor_size_and_location):
	* redisplay-xlike-inc.c (XLIKE_output_eol_cursor):
	* redisplay-xlike-inc.c (XLIKE_flash):
	* redisplay.c (calculate_baseline):
	* redisplay.c (start_with_point_on_display_line):
	* redisplay.c (glyph_to_pixel_translation):
	* redisplay.c (pixel_to_glyph_translation):
	* window.c (margin_width_internal):
	* window.c (frame_size_valid_p):
	* window.c (frame_pixsize_valid_p):
	* window.c (check_frame_size):
	* window.c (set_window_pixsize):
	* window.c (window_pixel_height_to_char_height):
	* window.c (window_char_height_to_pixel_height):
	* window.c (window_displayed_height):
	* window.c (window_pixel_width_to_char_width):
	* window.c (window_char_width_to_pixel_width):
	* window.c (change_window_height):
	* window.c (window_scroll):
	* window.h:
	IMPORTANT: Aidan and Carbon Repo, please pay attention and fix
	appropriately!

	Rename: default_face_height_and_width -> default_face_width_and_height
	and reverse width/height arguments.

	Reverse width/height arguments to the following functions:
	-- default_face_font_info
	-- default_face_height_and_width (see above)
	-- check_frame_size
	-- frame_size_valid_p (made into a static function)

	Fix a redisplay bug where args to default_face_height_and_width
	were in the wrong order.


2010-02-20  Ben Wing  <ben@xemacs.org>

	* syswindows.h:
	Add table about GNU Emacs -> XEmacs Windows constants from
	the internals manual.

	* frame.c:
	Shrink size of diagram consistent with internals manual.

	* alloc.c:
	* compiler.h:
	* console.c:
	* events.c:
	* gc.c (gc_stat_start_new_gc):
	* gc.c (gc_stat_resume_gc):
	* gc.c (kkcc_marking):
	* gc.c (gc_1):
	* gc.c (gc):
	* objects-tty.c:
	* redisplay-msw.c:
	* redisplay-msw.c (mswindows_clear_region):
	* syntax.c:
	* syntax.c (ST_COMMENT_STYLE):
	* sysdep.c:
	Fix various compiler warnings.

2010-02-16  Ben Wing  <ben@xemacs.org>

	* frame-impl.h:
	* frame-impl.h (FRAME_INTERNAL_BORDER_WIDTH):
	* frame-impl.h (FRAME_REAL_TOOLBAR_BOUNDS):
	* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BOUNDS):
	* frame-impl.h (FRAME_BOTTOM_BORDER_START):
	* frame-impl.h (FRAME_LEFT_BORDER_START):
	* frame-impl.h (FRAME_RIGHT_BORDER_START):
	* frame.c (frame_conversion_internal_1):
	* frame.c (change_frame_size_1):
	* redisplay-output.c (clear_left_border):
	* redisplay-output.c (clear_right_border):
	* redisplay-output.c (redisplay_clear_top_of_window):
	* redisplay-output.c (redisplay_clear_to_window_end):
	* redisplay-output.c (redisplay_clear_bottom_of_window):
	Rename FRAME_BORDER_* to FRAME_INTERNAL_BORDER_*.  Add
	general FRAME_INTERNAL_BORDER_SIZE().  Add FRAME_REAL_TOOLBAR_BOUNDS()
	to encompass the entire size of the toolbar including its border.
	Add specific top/left/bottom/right versions of this macro.
	Rewrite FRAME_*_BORDER_START and FRAME_*_BORDER_END to take into use
	FRAME_REAL_*_TOOLBAR_BOUNDS().  Add some comments about existing
	problems in frame sizing and how they might be fixed.  Simplify
	change_frame_size_1() using the macros just created.

2010-02-15  Ben Wing  <ben@xemacs.org>

	* frame.c (change_frame_size_1):
	Simplify the logic in this function.

	(1) Don't allow 0 as the value of height or width.  The old code
	that tried to allow this was totally broken, anyway, so obviously
	this never happens any more.

	(2) Don't duplicate the code in frame_conversion_internal() that
	converts displayable pixel size to total pixel size -- just call
	that function.

2010-02-15  Ben Wing  <ben@xemacs.org>

	* EmacsFrame.c:
	* EmacsFrame.c (EmacsFrameResize):
	* console-msw-impl.h:
	* console-msw-impl.h (struct mswindows_frame):
	* console-msw-impl.h (FRAME_MSWINDOWS_TARGET_RECT):
	* device-tty.c:
	* device-tty.c (tty_asynch_device_change):
	* event-msw.c:
	* event-msw.c (mswindows_wnd_proc):
	* faces.c (Fface_list):
	* faces.h:
	* frame-gtk.c:
	* frame-gtk.c (gtk_set_initial_frame_size):
	* frame-gtk.c (gtk_set_frame_size):
	* frame-msw.c:
	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_set_frame_size):
	* frame-msw.c (mswindows_size_frame_internal):
	* frame-msw.c (msprinter_init_frame_3):
	* frame.c:
	* frame.c (enum):
	* frame.c (Fmake_frame):
	* frame.c (adjust_frame_size):
	* frame.c (store_minibuf_frame_prop):
	* frame.c (Fframe_property):
	* frame.c (Fframe_properties):
	* frame.c (Fframe_displayable_pixel_height):
	* frame.c (Fframe_displayable_pixel_width):
	* frame.c (internal_set_frame_size):
	* frame.c (Fset_frame_height):
	* frame.c (Fset_frame_pixel_height):
	* frame.c (Fset_frame_displayable_pixel_height):
	* frame.c (Fset_frame_width):
	* frame.c (Fset_frame_pixel_width):
	* frame.c (Fset_frame_displayable_pixel_width):
	* frame.c (Fset_frame_size):
	* frame.c (Fset_frame_pixel_size):
	* frame.c (Fset_frame_displayable_pixel_size):
	* frame.c (frame_conversion_internal_1):
	* frame.c (get_frame_displayable_pixel_size):
	* frame.c (change_frame_size_1):
	* frame.c (change_frame_size):
	* frame.c (generate_title_string):
	* frame.h:
	* gtk-xemacs.c:
	* gtk-xemacs.c (gtk_xemacs_size_request):
	* gtk-xemacs.c (gtk_xemacs_size_allocate):
	* gtk-xemacs.c (gtk_xemacs_paint):
	* gutter.c:
	* gutter.c (update_gutter_geometry):
	* redisplay.c (end_hold_frame_size_changes):
	* redisplay.c (redisplay_frame):
	* toolbar.c:
	* toolbar.c (update_frame_toolbars_geometry):
	* window.c:
	* window.c (frame_pixsize_valid_p):
	* window.c (check_frame_size):
	Various fixes to frame geometry to make it a bit easier to understand
	and fix some bugs.

	1. IMPORTANT: Some renamings.  Will need to be applied carefully to
	the carbon repository, in the following order:

	-- pixel_to_char_size -> pixel_to_frame_unit_size
	-- char_to_pixel_size -> frame_unit_to_pixel_size
	-- pixel_to_real_char_size -> pixel_to_char_size
	-- char_to_real_pixel_size -> char_to_pixel_size
	-- Reverse second and third arguments of change_frame_size() and
	   change_frame_size_1() to try to make functions consistent in
	   putting width before height.
	-- Eliminate old round_size_to_char, because it didn't really
	   do anything differently from round_size_to_real_char()
	-- round_size_to_real_char -> round_size_to_char; any places that
	   called the old round_size_to_char should just call the new one.

	2. IMPORTANT FOR CARBON: The set_frame_size() method is now passed
	   sizes in "frame units", like all other frame-sizing functions,
	   rather than some hacked-up combination of char-cell units and
	   total pixel size.  This only affects window systems that use
	   "pixelated geometry", and I'm not sure if Carbon is one of them.
	   MS Windows is pixelated, X and GTK are not.  For pixelated-geometry
	   systems, the size in set_frame_size() is in displayable pixels
	   rather than total pixels and needs to be converted appropriately;
	   take a look at the changes made to mswindows_set_frame_size()
	   method if necessary.

	3. Add a big long comment in frame.c describing how frame geometry
	   works.

	4. Remove MS Windows-specific character height and width fields,
	   duplicative and unused.

	5. frame-displayable-pixel-* and set-frame-displayable-pixel-*
	   didn't use to work on MS Windows, but they do now.

	6. In general, clean up the handling of "pixelated geometry" so
	   that fewer functions have to worry about this.  This is really
	   an abomination that should be removed entirely but that will
	   have to happen later.  Fix some buggy code in
	   frame_conversion_internal() that happened to "work" because it
	   was countered by oppositely buggy code in change_frame_size().

	7. Clean up some frame-size code in toolbar.c and use functions
	   already provided in frame.c instead of rolling its own.

	8. Fix check_frame_size() in window.c, which formerly didn't take
	   pixelated geometry into account.


2010-02-15  Ben Wing  <ben@xemacs.org>

	* mc-alloc.c:
	* mc-alloc.c (mc_realloc_1):
	* mc-alloc.c (set_dirty_bit):
	* mc-alloc.c (set_dirty_bit_for_address):
	* mc-alloc.c (get_dirty_bit):
	* mc-alloc.c (get_dirty_bit_for_address):
	* mc-alloc.c (set_protection_bit):
	* mc-alloc.c (set_protection_bit_for_address):
	* mc-alloc.c (get_protection_bit):
	* mc-alloc.c (get_protection_bit_for_address):
	* mc-alloc.c (get_page_start):
	* vdb-win32.c (win32_fault_handler):
	* vdb.c:
	Fix some compile warnings, make vdb test code conditional on
	DEBUG_XEMACS.

2010-02-15  Ben Wing  <ben@xemacs.org>

	* regex.c:
	* regex.c (DEBUG_FAIL_PRINT1):
	* regex.c (PUSH_FAILURE_POINT):
	* regex.c (POP_FAILURE_POINT):
	* regex.c (regex_compile):
	* regex.c (re_match_2_internal):
	* regex.h:
	* search.c:
	* search.c (search_buffer):
	* search.c (debug_regexps_changed):
	* search.c (vars_of_search):
	Add an internal variable debug_regexps and a corresponding Lisp
	variable `debug-regexps' that takes a list of areas in which to
	display debugging info about regex compilation and matching
	(currently three areas exist).  Use existing debugging code
	already in regex.c and modify it so that it recognizes the
	debug_regexps variable and the flags in it.

	Rename variable `debug-xemacs-searches' to just `debug-searches',
	consistent with other debug vars.

2010-02-20  Ben Wing  <ben@xemacs.org>

	* device-x.c (Fx_get_resource):
	* dynarr.c:
	* dynarr.c (Dynarr_realloc):
	* dynarr.c (Dynarr_newf):
	* dynarr.c (Dynarr_lisp_realloc):
	* dynarr.c (Dynarr_lisp_newf):
	* dynarr.c (Dynarr_resize):
	* dynarr.c (Dynarr_insert_many):
	* dynarr.c (Dynarr_delete_many):
	* dynarr.c (Dynarr_memory_usage):
	* dynarr.c (stack_like_free):
	* file-coding.c (coding_reader):
	* file-coding.c (gzip_convert):
	* gutter.c (output_gutter):
	* lisp.h:
	* lisp.h (Dynarr_declare):
	* lisp.h (DYNARR_SET_LISP_IMP):
	* lisp.h (CHECK_NATNUM):
	* profile.c (create_timing_profile_table):
	* redisplay-output.c (sync_rune_structs):
	* redisplay-output.c (sync_display_line_structs):
	* redisplay-output.c (redisplay_output_window):
	* redisplay.c:
	* redisplay.c (get_display_block_from_line):
	* redisplay.c (add_ichar_rune_1):
	* redisplay.c (ensure_modeline_generated):
	* redisplay.c (generate_displayable_area):
	* redisplay.c (regenerate_window):
	* redisplay.c (update_line_start_cache):
	* signal.c:
	* signal.c (check_quit):

	Lots of rewriting of dynarr code.

	(1) Lots of documentation added.  Also fix places that
	referenced a now-bogus internals node concerning redisplay
	critical sections.

	(2) Rename:

	Dynarr_add_lisp_string -> Dynarr_add_ext_lisp_string
	Dynarr_set_length -> Dynarr_set_lengthr ("restricted")
	Dynarr_increment -> Dynarr_incrementr
	Dynarr_resize_if -> Dynarr_resize_to_add

	(3) New functions:

	Dynarr_elsize = dy->elsize_
	Dynarr_set_length(): Set length, resizing as necessary
	Dynarr_set_length_and_zero(): Set length, resizing as necessary,
	  zeroing out new elements
	Dynarr_increase_length(), Dynarr_increase_length_and_zero():
	  Optimization of Dynarr_set_length(), Dynarr_set_length_and_zero()
	  when size is known to increase
	Dynarr_resize_to_fit(): Resize as necessary to fit a given length.
	Dynarr_set(): Set element at a given position, increasing length
	  as necessary and setting any newly created positions to 0

	(4) Use Elemcount, Bytecount.

	(5) Rewrite many macros as inline functions.

2010-02-20  Ben Wing  <ben@xemacs.org>

	* tests.c:
	Fix operation of c-tests.

2010-02-19  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (split_string_by_ichar_1):
	Use better types (e.g., not an Ichar for a buffer size) in this
	function when dealing with ESCAPECHAR.

2010-02-19  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (mapcarX):
	Correct this function, discarding multiple values when one
	SEQUENCE is supplied, choosing a better label name.  Correct the
	comment describing the SOME_OR_EVERY argument.

2010-02-12  Aidan Kehoe  <kehoea@parhasard.net>

	* syswindows.h:
	Remove the PDWORD_PTR typedef; it's not used in
	intl-auto-encap-win32.h , and it breaks the build with Visual C++
	2005 Express Edition and a 2005 copy of the SDK.

2010-02-20  Ben Wing  <ben@xemacs.org>

	* sysdep.c:
	* sysdep.c (qxe_reliable_signal):
	* sysdep.c (retry_open_1):
	* sysdep.c (retry_close):
	* sysdep.c (retry_read_1):
	* sysdep.c (retry_write_1):
	* sysdep.c (retry_fopen):
	* sysdep.c (retry_fclose):
	* sysdep.c (retry_fread):
	* sysdep.c (retry_fwrite):
	Remove conditionalization on INTERRUPTIBLE_IO, INTERRUPTIBLE_OPEN,
	INTERRUPTIBLE_CLOSE -- always check for EINTR as there's no harm
	in it.

	Remove old #if 0'ed out SA_RESTART code.

	Use manifest constant IRIX6_5 instead of IRIX.

	* Makefile.in.in:
	* dired.c:
	* dired.c (Ffile_attributes):
	Use manifest constant IRIX6_5 instead of IRIX.
	Eliminate constant BSD4_2, use BSD4_3 instead.

	* getloadavg.c:
	* getloadavg.c (getloadavg):
	* getloadavg.c (LDAV_PRIVILEGED):
	* getloadavg.c (LDAV_DONE):
	Sync with GNU 23.1.92.

2010-02-20  Ben Wing  <ben@xemacs.org>

	* s/README:
	* s/aix4-2.h:
	* s/aix4-2.h (MAIL_USE_LOCKF):
	* s/bsd-common.h:
	* s/freebsd.h:
	* s/freebsd.h (Carey):
	* s/freebsd.h (or):
	* s/gnu.h:
	* s/gnu.h (DATA_START):
	* s/hpux11-shr.h:
	* s/hpux11.h:
	* s/hpux11.h (random):
	* s/irix6-5.h:
	* s/linux.h:
	* s/mach-bsd4-3.h:
	* s/netbsd.h:
	* s/netbsd.h (or):
	* s/netbsd.h (A_TEXT_OFFSET):
	* s/netbsd.h (NO_MATHERR):
	* s/openbsd.h:
	* s/sol2.h:
	* s/usg5-4-2.h:
	* s/usg5-4.h:
	* s/usg5-4.h (or):
	* s/usg5-4.h (ORDINARY_LINK):
	Sync with GNU 23.1.92.

	Put back linux.h.

	Rename: bsd4-3.h -> bsd-common.h; irix6-0.h -> irix6-5.h.
	Delete: template.h (useless).

	Delete a whole bunch of obsolete stuff in sol2.h, linux.h,
	freebsd.h -- assume anything over 10 years old is sufficiently
	obsolete to be deleted.

	Remove LIBS_DEBUG, C_DEBUG_SWITCH, C_OPTIMIZE_SWITCH, KERNEL_FILE,
	LDAV_SYMBOL, most remaining PTY stuff, remaining TERMINFO/TERMCAP
	stuff.  Update README appropriately.

	Remove stuff in hpux11-shr.h duplicated in hpux11.h.

	Remove sco7.h, identical with usg5-4-2.h.

	Remove unused POSIX flag, BROKEN_TIOC*, NO_SIOCTL_H.

2010-02-20  Ben Wing  <ben@xemacs.org>

	* m/arm.h:
	* m/hp800.h:
	* m/intel386.h:
	* m/mips.h:
	* m/powerpc.h:
	* m/sparc.h:
	* m/template.h:
	Temporarily ifdef out all defines involving load-average stuff --
	using define ENABLE_SM_FILE_DECLS_OF_LOADAVG_STUFF, which is not
	defined.

	I'm pretty sure getloadavg.c will take care of defining stuff
	properly on all systems without the need to duplicate the info
	in m/*. --ben

	Delete LIBS_TERMCAP; configure auto-handles this.

	Delete extra stuff in hp800.h.

	Delete C_DEBUG_SWITCH, C_OPTIMIZE_SWITCH, LDAV_SYMBOL; incorporate
	some stuff into configure.ac.

2010-02-10  Ben Wing  <ben@xemacs.org>

	* text.h:
	* text.h (VALIDATE_IBYTEPTR_BACKWARD):
	* text.h (EI_ALLOC):
	* text.h (eicpyout_alloca_fmt):
	* text.h (eifree):
	* text.h (eito_alloca):
	* text.h (eito_external):
	* text.h (DFC_LISP_STRING_USE_CONVERTED_DATA):
	* text.h (EXTERNAL_TO_ITEXT):
	(1) Fix up long comment about the internal-external conversion
	macros to reflect the recent changes to the macros.

	(2) Reformat the macros in text.h so they line up properly.

2010-02-09  Jerry James  <james@xemacs.org>

	* s/hpux11-shr.h: Add license information from Marcus Thiessel.

2010-02-09  Ben Wing  <ben@xemacs.org>

	* dynarr.c (Dynarr_insert_many):
	* dynarr.c (Dynarr_delete_many):
	* emacs.c:
	* emacs.c (pause_so_user_can_read_messages):
	* emacs.c (Fkill_emacs):
	* emacs.c (guts_of_fatal_error_signal):
	* lisp.h:
	* lisp.h (INLINE_ERROR_CHECK_ARGS):
	* lisp.h (Dynarr_set_length_1):
	* lisp.h (Dynarr_set_length):
	* lisp.h (Dynarr_pop):
	Add ERROR_CHECK_DYNARR, dynarr_checking_assert().  Use it.
	Sort existing error-check categories in lisp.h, remove most of the
	(unused) assert variations from most categories.  Add a long
	comment about reorganizing the system by categories and
	subcategories.  Create ERROR_CHECK_ANY if any error-checking
	categories defined, and use it in emacs.c to define
	USER_IS_DEVELOPING_XEMACS.

	In emacs.c and cmdloop.c, don't display a message at early
	shutdown or fatal shutdown when on Cygwin, only Windows native --
	Cygwin has a working stderr that shows error output.

	Update comment in Dynarr_verify_pos_atp().


2010-02-09  Ben Wing  <ben@xemacs.org>

	* syswindows.h:
	Create a long comment about build flags such as WIN32_NATIVE,
	HAVE_MS_WINDOWS.

2010-02-09  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	Disabled inline assert should just use disabled_assert()
	not disabled_assert_at_line() otherwise you get compile errors.
	(Hasn't bitten us only because no one is currently using inline
	asserts -- but this is different in the Unicode-internal repo.)

2010-02-08  Ben Wing  <ben@xemacs.org>

	* charset.h:
	* charset.h (Fget_charset): Declare some fake charset defs so
	we can compile when non-Mule.
	* depend: Rebuild.

2010-02-08  Ben Wing  <ben@xemacs.org>

	* event-Xt.c:
	Add comment about simultaneous window-system consoles/devices.

2010-02-08  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	Add prototypes for debugging functions.

	* alloc.c (compact_string_chars): Make static.

	* console-x.c (x_initially_selected_for_input):
	* console-x.h:
	* console-x.h (X_ERROR_OCCURRED):
	Delete x_has_keysym() prototype from console-x.c, move to console-x.h.

	* eval.c (multiple_value_call):
	Real bug: Fix shadowing local vars.

	* event-unixoid.c (read_event_from_tty_or_stream_desc):
	* event-unixoid.c (signal_fake_event):
	* lread.c (check_if_suppressed):
	* strftime.c (strftime):
	Fix stupid global shadowing warnings.

	* event-unixoid.c (signal_fake_event):
	* event-unixoid.c (drain_signal_event_pipe):
	Use Rawbyte, not char.

	* frame.h: Remove old prototype.

	* gc.c:
	* gc.c (show_gc_cursor_and_message):
	* gc.c (remove_gc_cursor_and_message):
	* gc.c (gc_prepare):
	* gc.c (gc_finish_mark):
	* gc.c (gc_finalize):
	* gc.c (gc_sweep):
	* gc.c (gc_finish):
	* gc.c (gc_suspend_mark_phase):
	* gc.c (gc_resume_mark_phase):
	* gc.c (gc_mark):
	* gc.c (gc_resume_mark):
	Make fns static.

	* glyphs-eimage.c (gif_decode_error_string):
	Fix non-prototype.

	* lisp.h:
	Hack around global shadowing warnings involving `index'.

	* intl-win32.c (wcsncpy):
	* number-gmp.c (bigfloat_to_string):
	* objects-msw.c (mswindows_font_spec_matches_charset_stage_2):
	* specifier.c (call_charset_predicate):
	* specifier.c (DEFINE_SPECIFIER_TAG_FROB):
	Declarations cannot follow statements in standard C.

	* search.c (search_buffer): Fix local shadowing warnings.

2010-02-08  Ben Wing  <ben@xemacs.org>

	* faces.c:
	* faces.c (face_property_matching_instance):
	* faces.c (ensure_face_cachel_contains_charset):
	* faces.h (FACE_FONT):
	* lisp.h:
	* lisp.h (enum font_specifier_matchspec_stages):
	* objects-msw.c:
	* objects-msw.c (mswindows_font_spec_matches_charset):
	* objects-msw.c (mswindows_find_charset_font):
	* objects-tty.c:
	* objects-tty.c (tty_font_spec_matches_charset):
	* objects-tty.c (tty_find_charset_font):
	* objects-xlike-inc.c:
	* objects-xlike-inc.c (XFUN):
	* objects-xlike-inc.c (xft_find_charset_font):
	* objects.c:
	* objects.c (font_instantiate):
	* objects.c (FROB):
	* specifier.c:
	* specifier.c (charset_matches_specifier_tag_set_p):
	* specifier.c (call_charset_predicate):
	* specifier.c (define_specifier_tag):
	* specifier.c (Fdefine_specifier_tag):
	* specifier.c (setup_charset_initial_specifier_tags):
	* specifier.c (specifier_instance_from_inst_list):
	* specifier.c (FROB):
	* specifier.c (vars_of_specifier):
	* specifier.h:
	Rename the specifier-font-matching stages in preparation for
	eliminating shadowed warnings, some other related fixes from
	ben-unicode-internal.

	1. Rename raw enums:
	   initial	 -> STAGE_INITIAL
	   final	 -> STAGE_FINAL
	   impossible	 -> NUM_MATCHSPEC_STAGES
	2. Move `enum font_specifier_matchspec_stages' from
	   specifier.h to lisp.h.
	3. Whitespace changes to match coding standards.
	4. Eliminate unused second argument STAGE in charset predicates
	   that don't use it -- the code that calls the charset predicates
	   is now smart enough to supply the right number of arguments
	   automatically.
	5. Add some long(ish) comments and authorial notices, esp. in
	   objects.c.
	6. In specifier.c, change Vcharset_tag_lists from a vector over
	   leading bytes to a hash table over charsets.  This change is
	   unnecessary currently but doesn't hurt and will be required
	   when we merge in Unicode-internal.
	7. In specifier.c, extract out the code that calls charset predicates
	   into a function call_charset_predicate().

2010-02-08  Ben Wing  <ben@xemacs.org>

	* emacs.c:
	* emacs.c (assert_failed):
	Fix comments about when inhibit_non_essential_printing_operations
	is set and how used.  Increment/decrement in assert_failed rather
	than just setting/resetting to avoid hosing things in case we're
	called when the value is already non-zero.  Similarly increment/
	decrement in_assert_failed.

	* gc.c (gc_prepare):
	* gc.c (gc_finish):
	Increment/decrement inhibit_non_essential_printing_operations
	rather than setting/resetting.

	* print.c:
	* print.c (debug_out):
	* print.c (write_string_to_alternate_debugging_output):
	* print.c (restore_inhibit_non_essential_conversion_operations):
	* print.c (debug_print_exit):
	* print.c (debug_print_enter):
	* print.c (debug_prin1):
	* print.c (debug_p4):
	* print.c (ext_print_begin):
	* print.c (ext_print_end):
	* print.c (external_debug_print):
	* print.c (debug_p3):
	* print.c (debug_backtrace):
	* print.c (debug_short_backtrace):
	* print.c (vars_of_print):
	Lots of cleanup.  Fix debug_out() so it binds
	inhibit_non_essential_printing_operations around it to ensure no
	conversion.  Remove many other places that set the same var since
	the lower-level functions now all do it.  A few other places, add
	inhibit_non_essential_printing_operations bindings.Extract the
	code out that sets up and resets lots of bindings in debug_prin1()
	so that debug_backtrace() can use it, and rewrite it to use the
	new STORE_VOID_IN_LISP() rather than having to have a single
	static opaque structure holding all the bindings (and not handling
	reentrancy).  Fix raw `char' to be `CIbyte' in the declaration of
	`alternate_do_string'.

	* signal.c (check_what_happened):
	Fix bug: Don't try to check for QUIT when
	inhibit_non_essential_printing_operations or we may screw things
	up if QUIT happens during debug printing.

2010-02-08  Ben Wing  <ben@xemacs.org>

	* casetab.c (compute_canon_mapper):
	* casetab.c (initialize_identity_mapper):
	* casetab.c (compute_up_or_eqv_mapper):
	* casetab.c (recompute_case_table):
	* casetab.c (set_case_table):
	* chartab.c (copy_mapper):
	* chartab.c (copy_char_table_range):
	* chartab.c (get_range_char_table_1):
	* console.c (find_nonminibuffer_frame_not_on_console_predicate):
	* console.c (find_nonminibuffer_frame_not_on_console):
	* console.c (nuke_all_console_slots):
	* device.c:
	* device.c (find_nonminibuffer_frame_not_on_device_predicate):
	* device.c (find_nonminibuffer_frame_not_on_device):
	* dialog-msw.c (dialog_proc):
	* dialog-msw.c (handle_question_dialog_box):
	* dialog-x.c (maybe_run_dbox_text_callback):
	* eval.c:
	* eval.c (safe_run_hook_trapping_problems_1):
	* eval.c (safe_run_hook_trapping_problems):
	* event-msw.c:
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (mswindows_find_frame):
	* faces.c (update_face_inheritance_mapper):
	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_get_mouse_position):
	* frame-msw.c (mswindows_get_frame_parent):
	* glade.c (connector):
	* glade.c (Fglade_xml_signal_connect):
	* glade.c (Fglade_xml_signal_autoconnect):
	* glade.c (Fglade_xml_textdomain):
	* glyphs-msw.c (mswindows_subwindow_instantiate):
	* glyphs-msw.c (mswindows_widget_instantiate):
	* glyphs.c (check_instance_cache_mapper):
	* glyphs.c (check_window_subwindow_cache):
	* glyphs.c (check_image_instance_structure):
	* gui-x.c (snarf_widget_value_mapper):
	* gui-x.c (popup_selection_callback):
	* gui-x.c (button_item_to_widget_value):
	* keymap.c (map_keymap_mapper):
	* keymap.c (Fmap_keymap):
	* menubar-gtk.c (__torn_off_sir):
	* menubar-gtk.c (__activate_menu):
	* menubar-gtk.c (menu_convert):
	* menubar-gtk.c (__generic_button_callback):
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	* menubar-msw.c:
	* menubar-msw.c (EMPTY_ITEM_ID):
	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	* menubar-x.c (pre_activate_callback):
	* menubar-x.c (command_builder_operate_menu_accelerator):
	* menubar-x.c (command_builder_find_menu_accelerator):
	* print.c (print_internal):
	* process-unix.c (close_process_descs_mapfun):
	* process.c (get_process_from_usid):
	* process.c (init_process_io_handles):
	* profile.c (sigprof_handler):
	* profile.c (get_profiling_info_timing_maphash):
	* profile.c (Fget_profiling_info):
	* profile.c (set_profiling_info_timing_maphash):
	* profile.c (mark_profiling_info_maphash):
	* scrollbar-msw.c (mswindows_create_scrollbar_instance):
	* scrollbar-msw.c (mswindows_free_scrollbar_instance):
	* scrollbar-msw.c (mswindows_handle_scrollbar_event):
	* specifier.c (recompute_cached_specifier_everywhere_mapfun):
	* specifier.c (recompute_cached_specifier_everywhere):
	* syntax.c (copy_to_mirrortab):
	* syntax.c (copy_if_not_already_present):
	* syntax.c (update_just_this_syntax_table):
	* text.c (new_dfc_convert_now_damn_it):
	* text.h (LISP_STRING_TO_EXTERNAL):
	* tooltalk.c:
	* tooltalk.c (tooltalk_message_callback):
	* tooltalk.c (tooltalk_pattern_callback):
	* tooltalk.c (Fcreate_tooltalk_message):
	* tooltalk.c (Fcreate_tooltalk_pattern):
	* ui-byhand.c (__generic_toolbar_callback):
	* ui-byhand.c (generic_toolbar_insert_item):
	* ui-byhand.c (__emacs_gtk_ctree_recurse_internal):
	* ui-byhand.c (Fgtk_ctree_recurse):
	* ui-gtk.c (__internal_callback_destroy):
	* ui-gtk.c (__internal_callback_marshal):
	* ui-gtk.c (Fgtk_signal_connect):
	* ui-gtk.c (gtk_type_to_lisp):
	* ui-gtk.c (lisp_to_gtk_type):
	* ui-gtk.c (lisp_to_gtk_ret_type):
	* lisp-disunion.h:
	* lisp-disunion.h (NON_LVALUE):
	* lisp-union.h:
	* lisp.h (LISP_HASH):
	Rename:

	LISP_TO_VOID -> STORE_LISP_IN_VOID
	VOID_TO_LISP -> GET_LISP_FROM_VOID

	These new names are meant to clearly identify that the Lisp object
	is the source and void the sink, and that they can't be used the
	other way around -- they aren't exact opposites despite the old
	names.  The names are also important given the new functions
	created just below.  Also, clarify comments in lisp-union.h and
	lisp-disunion.h about the use of the functions.

	* lisp.h:
	New functions STORE_VOID_IN_LISP and GET_VOID_FROM_LISP.  These
	are different from the above in that the source is a void *
	(previously, you had to use make_opaque_ptr()).

	* eval.c (restore_lisp_object):
	* eval.c (record_unwind_protect_restoring_lisp_object):
	* eval.c (struct restore_int):
	* eval.c (restore_int):
	* eval.c (record_unwind_protect_restoring_int):
	* eval.c (free_pointer):
	* eval.c (record_unwind_protect_freeing):
	* eval.c (free_dynarr):
	* eval.c (record_unwind_protect_freeing_dynarr):
	* eval.c (unbind_to_1):
	Use STORE_VOID_IN_LISP and GET_VOID_FROM_LISP to eliminate the
	use of make_opaque_ptr() and mostly eliminate Lisp consing
	entirely in the use of these various record_unwind_protect_*
	functions as well as internal_bind_* (e.g. internal_bind_int).

	* tests.c:
	* tests.c (Ftest_store_void_in_lisp):
	* tests.c (syms_of_tests):
	* tests.c (vars_of_tests):
	Add an C-assert-style test to test STORE_VOID_IN_LISP and
	GET_VOID_FROM_LISP to make sure the same value comes back that
	was put in.

2010-02-09  Vin Shelton  <acs@xemacs.org>

	* objects-msw.c (mswindows_font_spec_matches_charset_stage_2):
	Declare hfont at start of a code block.

	* glyphs-eimage.c: Undefine and then redefine FAR around the jpeg
	header.

2010-02-08  Vin Shelton  <acs@xemacs.org>

	* nt.c (open_unc_volume): lpRemoteName is an XELPTSTR.

2010-02-07  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (Dynarr_verify, Dynarr_verify_mod):
	If ERROR_CHECK_STRUCTURES is not defined, cast the argument in
	these two macros; fixes the g++ build.

2010-02-07  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Finsert_file_contents_internal):
	Only call format-decode if it has a function binding.
	(build_annotations): Only call format-annotate-function if it has
	a function binding; incidentally only calling #'car-less-than-car
	if *it* has a function binding.
	(syms_of_fileio): #'car-less-than-car and #'cdr-less-than-cdr are
	now in Lisp.

2010-02-07  Ben Wing  <ben@xemacs.org>

	* fns.c: Qlist, Qstring mistakenly declared twice.
	* fns.c (mapcarX):
	(void) cast needed to avoid compile problem.

2010-02-07  Ben Wing  <ben@xemacs.org>

	* emacs.c (make_argc_argv):
	Cast to Wexttext * to fix compile error.

	* nt.c (init_user_info):
	Cast to CIbyte * to fix compile error.

	* nt.c (open_unc_volume):
	To fix compile error, store pathname into an Extbyte * variable
	then write into the dest, casting to LPTSTR.

	* emacs.c (debug_can_access_memory):
	* fileio.c (Fmake_temp_name):
	* fileio.c (a_write):
	* fns.c:
	* fns.c (check_losing_bytecode):
	* fns.c (plists_differ):
	* fns.c (internal_equal_trapping_problems):
	* fns.c (base64_value_to_char):
	* fns.c (base64_conversion_error):
	* fns.c (STORE_BYTE):
	* fns.c (vars_of_fns):
	* lisp.h:
	* nt.c (init_user_info):
	* nt.c (mswindows_readdir):
	* nt.c (mswindows_executable_type):
	Replace raw `char *' or `unsigned char *' with characterized type --
	Rawbyte, Binbyte, Boolbyte, Ibyte or Ascbyte.  This should fix at
	least one real bug -- in a_write(), the "speedy insert" code that
	checks for an unchanged region declared the file data read in as
	char[] but then compared the value to an Ichar.  Hence, any chars
	in the range 128-255 would always appear changed -- in particular,
	this algorithm would fail completely with binary data.


2010-02-07  Ben Wing  <ben@xemacs.org>

	* fns.c (mapcarX):
	C++ requires explicit cast to enum lrecord_type.

2010-02-06  Ben Wing  <ben@xemacs.org>

	* mule-wnnfns.c:
	Convert file to utf-8.

2010-02-03  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (mapcarX):
	Accept a new argument, indicating whether the function is being
	called from #'some or #'every. Implement it.
	Discard any multiple values where that is appropriate.
	(Fmapconcat, FmapcarX, Fmapvector, Fmapcan, Fmapc, Fmap)
	(Fmap_into):
	Pass the new flag to mapcarX.
	(Fsome, Fevery): Move these functions here from cl-extra.el;
	implement them in terms of mapcarX.
	(maplist): Discard multiple values where appropriate.

2010-02-06  Ben Wing  <ben@xemacs.org>

	* config.h.in: Add undef for TRUST_NDBM_H_PROTOTYPES.
	* database.c:
	* database.c (struct):
	Use TRUST_NDBM_H_PROTOTYPES to determine whether to include ndbm.h
	or to specify our own prototypes, in place of CYGWIN_HEADERS (or
	more generally, any random list of systems).
	* depend: Regenerate.

2010-02-05  Ben Wing  <ben@xemacs.org>

	* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
	Cast pointer when storing value to avoid problems because some
	store vars are Extbyte * and some are LPTSTR.

2010-02-05  Jerry James  <james@xemacs.org>

	* s/sco7.h: Add copyright and license header with the permission of
	Ron Record, the author.

2010-02-05  Ben Wing  <ben@xemacs.org>

	* depend:
	Regenerate.
	* make-src-depend (PrintPatternDeps):
	Remove refs to xgccache, no longer existent.

	* select-gtk.c (THIS_IS_GTK):
	* select-gtk.c (gtk_decline_selection_request):
	* select-x.c (THIS_IS_X):
	* select-xlike-inc.c:
	* select-xlike-inc.c (selection_data_to_lisp_data):
	Rename PROCESSING_X_CODE to THIS_IS_X and PROCESSING_GTK_CODE to
	THIS_SI_GTK for consistency with other xlike code.

	Rename select-xlike-inc.c from select-common.h, in keeping with
	xlike terminology.

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.

2010-02-05  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	* lisp.h (staticpro_nodump_1):
	Define staticpro_1 and staticpro_nodump_1 when not XEMACS_DEBUG.

	* symbols.c (defsymbol_massage_name_1):
	* symbols.c (defsymbol_massage_multiword_predicate):
	Cosmetic fixes.

2010-02-05  Ben Wing  <ben@xemacs.org>

	* bytecode.c (bytecode_assert):
	Use 0 instead of x in disabled_assert calls to avoid errors due
	to using undefined vars/params (they are defined only when
	ERROR_CHECK_BYTE_CODE, which also turns on/off the asserts).

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.)

2010-02-04  Ben Wing  <ben@xemacs.org>

	* emacs.c (SHEBANG_EXE_PROGNAME_LENGTH):
	* emacs.c (main_1):
	Restore old definition of SHEBANG_EXE_PROGNAME_LENGTH; not possible
	to ANSI-concatenate wide and narrow strings.
	* print.c (write_msg_istring):
	* print.c (write_msg_cistring):
	* print.c (write_msg_ascstring):
	Can't return a value in a void-declared function.

2010-02-04  Ben Wing  <ben@xemacs.org>

	* filelock.c:
	* filelock.c (fill_in_lock_file_name):
	Name the lock symlink file .#FN# instead of .#FN for file FN, so
	that the link file doesn't have a .c or .el or whatever extension,
	which confuses programs/functions that search by extension (e.g.
	etags, byte-recompile-directory, etc.).

2010-02-04  Ben Wing  <ben@xemacs.org>

	* symbols.c (defsymbol_massage_name_1):
	* symbols.c (defsymbol_nodump):
	* symbols.c (defsymbol):
	* symbols.c (defkeyword):
	* symeval.h (DEFVAR_SYMVAL_FWD_OBJECT):
	Put this back again:

	Make the various calls to staticpro() instead call staticpro_1(),
	passing in the name of the C var being staticpro'ed, so that it
	shows up in staticpro_names.  Otherwise staticpro_names just has
	1000+ copies of the word `location'.

2010-02-04  Ben Wing  <ben@xemacs.org>

	* bytecode.c (assert_failed_with_remembered_ops):
	* bytecode.c (init_opcode_table_multi_op):
	Declare some things const to shut up G++ v4 warnings.

	* redisplay.c (add_ibyte_string_runes):
	* redisplay.c (add_string_to_fstring_db_runes):
	* redisplay.c (generate_fstring_runes):
	* redisplay.c (window_line_number):
	* redisplay.c (decode_mode_spec):
	Use Ascbyte instead of char in various places.

2010-02-03  Ben Wing  <ben@xemacs.org>

	* frame.c (Fmake_frame):
	* glyphs.c:
	* glyphs.c (NUM_PRECACHED_GLYPHS):
	* glyphs.c (get_glyph_cachel_index):
	* glyphs.c (FROB):
	* glyphs.c (mark_glyph_cachels_as_not_updated):
	* redisplay.c (regenerate_window):
	* redisplay.c (redisplay_window):
	When creating a frame, call reset_glyph_cachels on the minibuffer
	window as well as the root window.  Fixes a crash due to other
	glyphs (e.g. the gutter glyph) getting in the glyph cachel before
	the pre-cached glyphs that are supposed to have fixed indices
	(continuation-glyph, truncation-glyph, etc.).

	Add a bunch of asserts to make sure that the glyph cachels always
	properly contain the pre-cached glyphs.

2010-02-03  Ben Wing  <ben@xemacs.org>

	* device-x.c (x_get_resource_prefix):
	* device-x.c (Fx_get_resource):
	* device-x.c (Fx_get_resource_prefix):
	* device-x.c (Fx_put_resource):
	* dialog-msw.c:
	* dialog-msw.c (handle_question_dialog_box):
	* dired-msw.c (mswindows_sort_files):
	* dired-msw.c (mswindows_get_files):
	* extents.c (extent_fragment_sort_by_priority):
	* extents.c (Fset_extent_parent):
	* file-coding.c (coding_reader):
	* file-coding.c (coding_writer):
	* file-coding.c (gzip_convert):
	* frame.c (generate_title_string):
	* gutter.c (calculate_gutter_size_from_display_lines):
	* indent.c (vmotion_1):
	* lread.c (read_bit_vector):
	* mule-coding.c (iso2022_decode):
	* rangetab.c:
	* rangetab.c (Fcopy_range_table):
	* rangetab.c (Fget_range_table):
	* rangetab.c (unified_range_table_copy_data):
	* redisplay-msw.c (mswindows_output_string):
	* redisplay-output.c (output_display_line):
	* redisplay-output.c (redisplay_move_cursor):
	* redisplay-output.c (redisplay_clear_bottom_of_window):
	* redisplay-tty.c (tty_output_ichar_dynarr):
	* redisplay-tty.c (set_foreground_to):
	* redisplay-tty.c (set_background_to):
	* redisplay-xlike-inc.c (XLIKE_output_string):
	* redisplay.c (redisplay_window_text_width_string):
	* redisplay.c (redisplay_text_width_string):
	* redisplay.c (create_text_block):
	* redisplay.c (SET_CURRENT_MODE_CHARS_PIXSIZE):
	* redisplay.c (generate_fstring_runes):
	* redisplay.c (regenerate_modeline):
	* redisplay.c (ensure_modeline_generated):
	* redisplay.c (real_current_modeline_height):
	* redisplay.c (create_string_text_block):
	* redisplay.c (regenerate_window):
	* redisplay.c (REGEN_INC_FIND_START_END):
	* redisplay.c (point_visible):
	* redisplay.c (redisplay_window):
	* redisplay.c (mark_glyph_block_dynarr):
	* redisplay.c (line_start_cache_start):
	* redisplay.c (start_with_line_at_pixpos):
	* redisplay.c (update_line_start_cache):
	* redisplay.c (glyph_to_pixel_translation):
	* redisplay.c (pixel_to_glyph_translation):
	* sysdep.c (qxe_readdir):
	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	* toolbar-common.c (common_output_toolbar_button):
	* window.c (window_modeline_height):
	* window.c (Fwindow_last_line_visible_height):
	* window.c (window_displayed_height):
	* window.c (window_scroll):
	* window.c (get_current_pixel_pos):
	Use Dynarr_begin() in place of Dynarr_atp (foo, 0).

	* dynarr.c (Dynarr_realloc):
	* dynarr.c (Dynarr_lisp_realloc):
	* dynarr.c (Dynarr_resize):
	* dynarr.c (Dynarr_insert_many):
	* dynarr.c (Dynarr_delete_many):
	* dynarr.c (Dynarr_memory_usage):
	* dynarr.c (stack_like_malloc):
	* dynarr.c (stack_like_free):
	* lisp.h:
	* lisp.h (DECLARE_DYNARR_LISP_IMP):
	* lisp.h (XD_DYNARR_DESC):
	* lisp.h (Dynarr_pop):
	* gutter.c (output_gutter):
	* redisplay-output.c (sync_rune_structs):
	* redisplay-output.c (redisplay_output_window):
	Redo the dynarr code, add greater checks.

	Rename the `len', `largest' and `max' members to `len_',
	`largest_' and `max_' to try and catch existing places that might
	directly modify these values.  Make new accessors Dynarr_largest()
	and Dynarr_max() and make them and existing Dynarr_length() be
	non-lvalues by adding '+ 0' to them; fix a couple of places in the
	redisplay code that tried to modify the length directly by setting
	Dynarr_length().  Use the accessors whenever possible even in the
	dynarr code itself.  The accessors also verify that 0 <= len <=
	largest <= max.  Rename settor function Dynarr_set_size() to
	Dynarr_set_length() and use it more consistently; also create
	lower-level Dynarr_set_length_1().  This latter function should be
	the only function that directly modifies the `len_' member of a
	Dynarr, and in the process makes sure that the `largest' value is
	kept correct.

	Consistently use ERROR_CHECK_STRUCTURES instead of
	ERROR_CHECK_TYPES for error-checking code.  Reintroduce the
	temporarily disabled verification code on the positions of
	Dynarr_at(), Dynarr_atp() and Dynarr_atp_past_end().
	Also create Dynarr_resize_if() in place of a repeated
	code fragment.  Clean up all the functions that modify Dynarrs to
	use the new macros and functions and verify the correctness of the
	Dynarr both before and after the change.

	Note that there are two kinds of verification -- one for accessing
	and one for modifying.  The difference is that the modify
	verification additionally checks to make sure that the Dynarr
	isn't locked. (This is used in redisplay to check for problems
	with reentrancy.)

	* lrecord.h: Move XD_DYNARR_DESC to lisp.h, grouping with the dynarr code.

2010-02-03  Jerry James  <james@xemacs.org>

	* s/mach-bsd4-3.h: Add historical copyright and license information,
	unearthed by Ben Wing.

2010-02-03  Ben Wing  <ben@xemacs.org>

	* bytecode.c:
	Fix minor compile problem.

2010-02-03  Ben Wing  <ben@xemacs.org>

	* symbols.c (defsymbol_massage_name_1):
	* symbols.c (defsymbol_nodump):
	* symbols.c (defsymbol):
	* symbols.c (defkeyword):
	* symeval.h (DEFVAR_SYMVAL_FWD_OBJECT):
	Temporarily back out staticpro-related changes in symbols.c and
	symeval.h to fix compile problems, will put back when `latest-fix'
	workspace gets merged in.

2010-02-03  Ben Wing  <ben@xemacs.org>

	* alloc.c (Fmake_byte_code):
	* lread.c:
	* lread.c (readevalloop):
	* lread.c (Fread):
	* lread.c (Fread_from_string):
	* lread.c (read_list_conser):
	* lread.c (read_list):
	* lread.c (vars_of_lread):
	Remove the old kludgy stuff bracketed by `#ifdef
	COMPILED_FUNCTION_ANNOTATION_HACK_OLD_WAY'.

2010-02-03  Ben Wing  <ben@xemacs.org>

	* alloc.c (Fmake_byte_code):
	* bytecode.h:
	* lisp.h:
	* lread.c:
	* lread.c (readevalloop):
	* lread.c (Fread):
	* lread.c (Fread_from_string):
	* lread.c (read_list_conser):
	* lread.c (read_list):
	* lread.c (vars_of_lread):
	* symbols.c:
	* symbols.c (Fdefine_function):
	Turn on the "compiled-function annotation hack".  Implement it
	properly by hooking into Fdefalias().  Note in the docstring to
	`defalias' that we do this.  Remove some old broken code and
	change code that implemented the old kludgy way of hooking into
	the Lisp reader into bracketed by `#ifdef
	COMPILED_FUNCTION_ANNOTATION_HACK_OLD_WAY', which is not enabled.

	Also enable byte-code metering when DEBUG_XEMACS -- this is a form
	of profiling for computing histograms of which sequences of two
	bytecodes are used most often.

	* bytecode-ops.h:
	* bytecode-ops.h (OPCODE):
	New file.  Extract out all the opcodes and declare them using
	OPCODE(), a bit like frame slots and such.  This way the file can
	be included multiple times if necessary to iterate multiple times
	over the byte opcodes.

	* bytecode.c:
	* bytecode.c (NUM_REMEMBERED_BYTE_OPS):
	* bytecode.c (OPCODE):
	* bytecode.c (assert_failed_with_remembered_ops):
	* bytecode.c (READ_UINT_2):
	* bytecode.c (READ_INT_1):
	* bytecode.c (READ_INT_2):
	* bytecode.c (PEEK_INT_1):
	* bytecode.c (PEEK_INT_2):
	* bytecode.c (JUMP_RELATIVE):
	* bytecode.c (JUMP_NEXT):
	* bytecode.c (PUSH):
	* bytecode.c (POP_WITH_MULTIPLE_VALUES):
	* bytecode.c (DISCARD):
	* bytecode.c (UNUSED):
	* bytecode.c (optimize_byte_code):
	* bytecode.c (optimize_compiled_function):
	* bytecode.c (Fbyte_code):
	* bytecode.c (vars_of_bytecode):
	* bytecode.c (init_opcode_table_multi_op):
	* bytecode.c (reinit_vars_of_bytecode):
	* emacs.c (main_1):
	* eval.c (funcall_compiled_function):
	* symsinit.h:
	Any time we change either the instruction pointer or the stack
	pointer, assert that we're going to move it to a valid location.
	This should catch failures right when they occur rather than
	sometime later.  This requires that we pass in another couple of
	parameters into some functions (only with error-checking enabled,
	see below).

	Also keep track, using a circular queue, of the last 100 byte
	opcodes seen, and when we hit an assert failure during byte-code
	execution, output the contents of the queue in a nice readable
	fashion.  This requires that bytecode-ops.h be included a second
	time so that a table mapping opcodes to the name of their operation
	can be constructed.  This table is constructed in new function
	reinit_vars_of_bytecode().

	Everything in the last two paras happens only when
	ERROR_CHECK_BYTE_CODE.

	Add some longish comments describing how the arrays that hold the
	stack and instructions, and the pointers used to access them, work.

	* gc.c:
	Import some code from my `latest-fix' workspace to mark the
	staticpro's in order from lowest to highest, rather than highest to
	lowest, so it's easier to debug when something goes wrong.

	* lisp.h (abort_with_message): Renamed from abort_with_msg().

	* symbols.c (defsymbol_massage_name_1):
	* symbols.c (defsymbol_nodump):
	* symbols.c (defsymbol):
	* symbols.c (defkeyword):
	* symeval.h (DEFVAR_SYMVAL_FWD_OBJECT):
	Make the various calls to staticpro() instead call staticpro_1(),
	passing in the name of the C var being staticpro'ed, so that it
	shows up in staticpro_names.  Otherwise staticpro_names just has
	1000+ copies of the word `location'.

2010-02-02  Ben Wing  <ben@xemacs.org>

	* bytecode.c (execute_rare_opcode):
	* lisp.h (abort_with_msg): New.
	When aborting due to unknown opcode, output more descriptive msg.

2010-02-01  Vin Shelton  <acs@xemacs.org>

	* intl-encap-win32.c: Added description of override keyword.
	Fix 2nd arg to CreateMDIWindowW.

	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.h: Fix 2nd arg to qxeCreateMDIWindow.

2010-02-01  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (internal_equalp):
	Use bytecode_arithcompare, which takes two args, instead of
	passing a stack pointer to Feqlsign.
	Use CANONCASE(), not DOWNCASE(), for case-insensitive character
	comparison.
	Correct a comment here.
	* casefiddle.c (casify_object): New operation in this function,
	CASE_CANONICALIZE.
	(Fcanoncase): New function, used for case-insensitive comparison.
	* lisp.h:
	Make Fcanoncase, bytecode_arithcompare visible here.
	* bytecode.c (bytecode_arithcompare):
	Make this visible to other files.

2010-02-03  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in:
	* Makefile.in.in (x_objs):
	* Makefile.in.in (gtk_gui_objs):
	* console-xlike-inc.h:
	* depend:
	* device-x.c:
	* emacs.c:
	* gccache-gtk.h:
	* gccache-gtk.h (gc_cache_lookup):
	* gccache-x.c:
	* gccache-x.c (GCCACHE_HASH):
	* gccache-x.h:
	* toolbar-gtk.c:
	* toolbar-gtk.c (gtk_initialize_frame_toolbars):
	* toolbar-x.c:
	* toolbar-x.c (x_initialize_frame_toolbars):
	* toolbar-xlike.c:
	* toolbar-xlike.c (xlike_draw_blank_toolbar_button):
	* toolbar-xlike.c (xlike_output_toolbar_button):
	* toolbar-xlike.c (xlike_get_button_size):
	* toolbar-xlike.c (XLIKE_OUTPUT_BUTTONS_LOOP):
	* toolbar-xlike.c (xlike_output_toolbar):
	* toolbar-xlike.c (xlike_clear_toolbar):
	* toolbar-xlike.c (xlike_output_frame_toolbars):
	* toolbar-xlike.c (xlike_clear_frame_toolbars):
	* toolbar-xlike.c (xlike_redraw_exposed_toolbar):
	* toolbar-xlike.c (xlike_redraw_exposed_toolbars):
	* toolbar-xlike.c (xlike_redraw_frame_toolbars):
	* toolbar-xlike.h:
	* toolbar-xlike.h (xlike_clear_frame_toolbars):
	Rename some files to make them consistent with general naming rules:

	xgccache.c -> gccache-x.c
	xgccache.h -> gccache-x.h
	toolbar-common.c -> toolbar-xlike.c
	toolbar-common.h -> toolbar-xlike.h

	Fix include-file references.  Also change the names of functions
	in now-named toolbar-xlike.c to be xlike_foo() instead of common_foo().

	Add a longish comment in console-xlike-inc.h describing the "xlike"
	system, how it works and what the various files are used for.


2010-02-01  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in:
	* compiler.h:
	* config.h.in:
	* console-x-impl.h:
	* console-x-impl.h (struct x_frame):
	* console-x-impl.h (FRAME_X_TOTALLY_VISIBLE_P):
	* console-x.h:
	* console-xlike-inc.h:
	* emacs.c (main_1):
	* faces.c (complex_vars_of_faces):
	* font-mgr.h:
	* frame-x.c (x_delete_frame):
	* frame-x.c (x_update_frame_external_traits):
	* glyphs-x.c (update_widget_face):
	* inline.c:
	* objects-x-impl.h:
	* objects-x-impl.h (struct x_color_instance_data):
	* objects-x-impl.h (struct x_font_instance_data):
	* objects-x.c:
	* objects-x.c (x_initialize_color_instance):
	* objects-x.c (x_initialize_font_instance):
	* objects-x.c (x_print_font_instance):
	* objects-x.c (x_finalize_font_instance):
	* objects-x.c (x_font_instance_truename):
	* objects-x.c (vars_of_objects_x):
	* objects-x.h:
	USE_XFT* -> HAVE_XFT*.  But in objects-xlike-inc.c and
	redisplay-xlike-inc.c, continue to use USE_XFT, and define
	it appropriately in console-xlike-inc.h when both HAVE_XFT
	and THIS_IS_X -- even if HAVE_XFT, we don't want to enable
	XFT code when included in a *-gtk.c file.


2010-02-01  Ben Wing  <ben@xemacs.org>

	* alloc.c (common_init_alloc_early):
	Fix compiler breakage.

2010-02-01  Ben Wing  <ben@xemacs.org>

	* objects-gtk-impl.h:
	* objects-gtk-impl.h (XCOLOR_INSTANCE_GTK_COLOR):
	* objects-gtk-impl.h (XFONT_INSTANCE_GTK_FONT):
	* objects-x-impl.h (XCOLOR_INSTANCE_X_COLOR):
	* objects-x-impl.h (XFONT_INSTANCE_X_FONT):
	Define XCOLOR_INSTANCE_X_COLOR, XCOLOR_INSTANCE_GTK_COLOR,
	XFONT_INSTANCE_X_FONT, XFONT_INSTANCE_GTK_FONT for convenience
	purposes.  Fixes compile bug in redisplay-xlike-inc.c.

2010-01-29  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	* objects.h (set_face_boolean_attached_to):
	Use lisp.h for EXFUN of Fregexp_quote, that's what it's for.

2010-02-01  Ben Wing  <ben@xemacs.org>

	* compiler.h:
	Create a USED() macro to force unused-var warnings to go away,
	in certain cases where it's inconvenient to do otherwise (e.g.
	when THIS_IS_GTK in redisplay-xlike-inc.c).

	* console-x.h:
	Remove unneeded decls, make some static.

	* redisplay-xlike-inc.c:
	* console-xlike-inc.h: New file.  Include defns from
	redisplay-xlike-inc.c that may be useful in other XLIKE files.
	Correct the handling of colors and font-style setting functions
	in the xlike defns.  Lots of fixes in the GTK-specific defns.

	* depend: Regenerate.

	* event-xlike-inc.c:
	* event-xlike-inc.c (USE_UNICODE_MAP):
	* event-xlike-inc.c (endif):
	* gccache-gtk.c:
	* gtk-glue.c (xemacs_list_to_gtklist):
	* gtk-glue.c (xemacs_gtklist_to_list):
	* gtk-glue.c (FROB):
	* gtk-glue.c (face_to_gc):
	* gtk-glue.c (face_to_style):
	* gtk-glue.c (gdk_event_to_emacs_event):
	* gtk-xemacs.h (struct _GtkXEmacs):
	* gtk-xemacs.h (struct _GtkXEmacsClass):
	* objects-xlike-inc.c:
	Cosmetic, comment fixes.

	* glyphs.c (pixmap_to_lisp_data):
	Unused var fixes.


	* gtk-glue.c:
	* gccache-gtk.c:
	* gtk-xemacs.c:
	* gtk-xemacs.h:
	* objects-xlike-inc.c:
	* ui-gtk.c:
	* ui-gtk.h:
	* xgccache.c:
	* xgccache.c (GC_CACHE_SIZE):
	* xgccache.h:
	Misc include-file fixes.

	* objects-xlike-inc.c (XFUN):
	* objects-xlike-inc.c (xlistfonts_checking_charset):
	Combine some ifdeffed stuff using defs in console-xlike-inc.h.

	* redisplay-gtk.c:
	* redisplay-gtk.c (THIS_IS_GTK):
	* redisplay-gtk.c (XLIKE_bevel_area):
	* redisplay-gtk.c (XLIKE_ring_bell):
	* redisplay-gtk.c (gdk_draw_text_image):
	Fix numerous compile problems.  Delete gtk_output_shadows(),
	which mostly duplicates generic bevel_modeline().  Fix up
	gtk_bevel_modeline() into XLIKE_bevel_area() and make use of
	the style var properly to set the appropriate GTK constant.

	* redisplay-x.c:
	* redisplay-x.c (XLIKE_window_output_begin):
	* redisplay-x.c (XLIKE_window_output_end):
	* redisplay-x.c (XLIKE_bevel_area):
	* redisplay-x.c (x_output_shadows):
	* redisplay-x.c (XLIKE_ring_bell):
	Make x_output_shadows be static.  Change the defn of various
	functions to look like XLIKE_foo() so it matches the calling
	convention elsewhere.

	* redisplay-xlike-inc.c:
	* redisplay-xlike-inc.c (NEED_GCCACHE_H):
	* redisplay-xlike-inc.c (XLIKE_text_width):
	* redisplay-xlike-inc.c (XLIKE_get_gc):
	* redisplay-xlike-inc.c (XLIKE_text_width_single_run):
	* redisplay-xlike-inc.c (XFT_FROB_LISP_COLOR):
	* redisplay-xlike-inc.c (XLIKE_output_xlike_pixmap):
	* redisplay-xlike-inc.c (XLIKE_output_pixmap):
	* redisplay-xlike-inc.c (XLIKE_output_vertical_divider):
	* redisplay-xlike-inc.c (XLIKE_flash):
	Lots of header fixes.  Lots of stuff moved to console-xlike-inc.h.
	Use XFUN() to generate function names instead of directly
	calling XLIKE_PASTE().  Remove unnecessary prototypes.
	Unify calls to text_width funs.  Make XLIKE_get_gc non-static
	since it's called from gtk.  Change the color-function calls
	and fill-style-setting calls to match the changes in
	console-xlike-inc.h.  Use USED() to avoid some warnings.

	* symsinit.h:
	Sort the prototypes, and add a fun `sort-symsinit' in a comment
	that does the sorting (using sort-regexp-fields).

	* symsinit.h (init_number):


	* sysgtk.h: New file, wraps the various GTK headers.
	* sysgdkx.h: New file, wraps <gtk/gdkx.h>.  Keep this separate to
	* event-gtk.h: Delete.  Combine stuff into console-gtk.h.
	help isolate X-specific code from GTK.

	* device-gtk.c:
	* event-gtk.c:
	* console-gtk.h:
	* frame-gtk.c:
	* gccache-gtk.c:
	* gccache-gtk.h:
	* glyphs-gtk.c (gtk_colorize_image_instance):
	* glyphs-gtk.h:
	* gtk-xemacs.h:
	* objects-gtk.c:
	* objects-gtk.c (MAX_FONT_COUNT):
	* ui-gtk.h:
	Use sysgtk.h or sysgdkx.h instead of directly including GTK
	headers.  Don't include event-gtk.h.

2010-02-01  Ben Wing  <ben@xemacs.org>

	* abbrev.c (abbrev_match_mapper):
	* buffer.h (CANON_TABLE_OF):
	* buffer.h:
	* editfns.c (Fchar_equal):
	* minibuf.c (scmp_1):
	* text.c (qxestrcasecmp_i18n):
	* text.c (qxestrncasecmp_i18n):
	* text.c (qxetextcasecmp):
	* text.c (qxetextcasecmp_matching):
	Create new macro CANONCASE that converts to a canonical mapping
	and use it to do caseless comparisons instead of DOWNCASE.

	* alloc.c:
	* alloc.c (cons_equal):
	* alloc.c (vector_equal):
	* alloc.c (string_equal):
	* bytecode.c (compiled_function_equal):
	* chartab.c (char_table_entry_equal):
	* chartab.c (char_table_equal):
	* data.c (weak_list_equal):
	* data.c (weak_box_equal):
	* data.c (ephemeron_equal):
	* device-msw.c (equal_devmode):
	* elhash.c (hash_table_equal):
	* events.c (event_equal):
	* extents.c (properties_equal):
	* extents.c (extent_equal):
	* faces.c:
	* faces.c (face_equal):
	* faces.c (face_hash):
	* floatfns.c (float_equal):
	* fns.c:
	* fns.c (bit_vector_equal):
	* fns.c (plists_differ):
	* fns.c (Fplists_eq):
	* fns.c (Fplists_equal):
	* fns.c (Flax_plists_eq):
	* fns.c (Flax_plists_equal):
	* fns.c (internal_equal):
	* fns.c (internal_equalp):
	* fns.c (internal_equal_0):
	* fns.c (syms_of_fns):
	* glyphs.c (image_instance_equal):
	* glyphs.c (glyph_equal):
	* glyphs.c (glyph_hash):
	* gui.c (gui_item_equal):
	* lisp.h:
	* lrecord.h (struct lrecord_implementation):
	* marker.c (marker_equal):
	* number.c (bignum_equal):
	* number.c (ratio_equal):
	* number.c (bigfloat_equal):
	* objects.c (color_instance_equal):
	* objects.c (font_instance_equal):
	* opaque.c (equal_opaque):
	* opaque.c (equal_opaque_ptr):
	* rangetab.c (range_table_equal):
	* specifier.c (specifier_equal):
	Add a `foldcase' param to the equal() method and use it to implement
	`equalp' comparisons.  Also add to plists_differ(), although we
	don't currently use it here.

	Rewrite internal_equalp().  Implement cross-type vector comparisons.
	Don't implement our own handling of numeric promotion -- just use
	the `=' primitive.

	Add internal_equal_0(), which takes a `foldcase' param and calls
	either internal_equal() or internal_equalp().

	* buffer.h:
	When given a 0 for buffer (which is the norm when functions don't
	have a specific buffer available), use the current buffer's table,
	not `standard-case-table'; otherwise the current settings are
	ignored.

	* casetab.c:
	* casetab.c (set_case_table):
	When handling old-style vectors of 256 in `set-case-table' don't
	overwrite the existing table!  Instead create a new table and
	populate.

	* device-msw.c (sync_printer_with_devmode):
	* lisp.h:
	* text.c (lisp_strcasecmp_ascii):
	Rename lisp_strcasecmp to lisp_strcasecmp_ascii and use
	lisp_strcasecmp_i18n for caseless comparisons in some places.

	* elhash.c:
	Delete unused lisp_string_hash and lisp_string_equal().

	* events.h:
	* keymap-buttons.h:
	* keymap.h:
	* keymap.c (keymap_lookup_directly):
	* keymap.c (keymap_store):
	* keymap.c (FROB):
	* keymap.c (key_desc_list_to_event):
	* keymap.c (describe_map_mapper):
	* keymap.c (INCLUDE_BUTTON_ZERO):
	New file keymap-buttons.h; use to handle buttons 1-26 in place of
	duplicating code 26 times.

	* frame-gtk.c (allocate_gtk_frame_struct):
	* frame-msw.c (mswindows_init_frame_1):
	Fix some comments about internal_equal() in redisplay that don't
	apply any more.

	* keymap-slots.h:
	* keymap.c:
	New file keymap-slots.h.  Use it to notate the slots in a keymap
	structure, similar to frameslots.h or coding-system-slots.h.

	* keymap.c (MARKED_SLOT):
	* keymap.c (keymap_equal):
	* keymap.c (keymap_hash):
	Implement.

2010-02-01  Ben Wing  <ben@xemacs.org>

	* syntax.c:
	* syntax.c (scan_lists):
	* syntax.c (syms_of_syntax):
	Declare `scan-error' as a type of `syntax-error'.  In `scan-lists'
	et al., don't signal a syntax error but instead a `scan-error', and
	pass a couple of integer arguments, for GNU compatibility.  Fixes
	problems with typing double-quote in texinfo.el.

2010-01-31  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fspecial_operator_p, syms_of_symbols):
	* eval.c (print_subr, Finteractive_p, Ffuncall)
	(Ffunction_min_args, Ffunction_max_args, vars_of_eval):
	* editfns.c:
	* data.c (Fsubr_max_args):
	* doc.c (Fbuilt_in_symbol_file):
	Change "special form" to "special operator" in our sources.

2010-01-31  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (search_buffer):
	When checking the octets of c for identity, don't compare the
	same octet with itself. Thank you Ben Wing!

2010-01-30  Ben Wing  <ben@xemacs.org>

	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.c (qxeExtractAssociatedIcon):
	* intl-auto-encap-win32.c (qxeExtractIconEx):
	* intl-auto-encap-win32.c (qxeCreateMDIWindow):
	* intl-auto-encap-win32.c (qxeCreateWindowStation):
	* intl-auto-encap-win32.c (qxeDdeCreateStringHandle):
	* intl-auto-encap-win32.c (qxeAbortSystemShutdown):
	* intl-auto-encap-win32.c (qxeRegConnectRegistry):
	* intl-auto-encap-win32.c (qxeGetICMProfile):
	* intl-auto-encap-win32.h:
	Rebuild.

	* intl-encap-win32.c:
	* intl-encap-win32.c (qxeUpdateICMRegKey):
	Delete manual definitions of functions with former errors in
	Cygwin headers but no longer.  Use "override" with some functions
	where Cygwin or VS6 accidentally omits a const declaration or
	includes an extra one.  Use "no" on SendMessageTimeout, which
	has an error in the VS6 prototype (you could manually fix this
	with an ifdef to split the Cygwin vs. VS6 calls, if we ever
	actually used this function).

2010-01-30  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (search_buffer):
	Don't use Boyer-Moore for case-insensitive search if the search
	pattern contains repeated Ibytes and the corresponding character
	has case information (or, equivalently, if one of its case
	equivalents would contain repeated Ibytes).

2010-01-31  Aidan Kehoe  <kehoea@parhasard.net>

	Move #'mapcar*, #'mapcan, #'mapc, #'map, #'mapl, #'mapcon to C;
	extend #'mapvector, #'mapconcat, #'mapcar to support more
	SEQUENCES; have them all error with circular lists.

	* fns.c (Fsubseq): Call CHECK_SEQUENCE here; Flength can return
	from the debugger if it errors with a non-sequence, leading to a
	crash in Fsubseq if sequence really is *not* a sequence.
	(mapcarX): Rename mapcar1 to mapcarX; rework it comprehensively to
	take an optional lisp output argument, and a varying number of
	sequences.
	Special-case a single list argument, as we used to, saving its
	elements in the stack space for the results before calling
	FUNCTION, so FUNCTION can corrupt the list all it
	wants. dead_wrong_type_argument() in the other cases if we
	encounter a non-cons where we expected a cons.
	(Fmapconcat):
	Accept further SEQUENCES after separator here. Special-case
	the idiom (mapconcat 'identity SEQUENCE), don't even funcall.
	(FmapcarX): Rename this from Fmapcar. Accept optional SEQUENCES.
	(Fmapvector): Accept optional SEQUENCES.
	(Fmapcan, Fmapc, Fmap): Move these here from cl-extra.el.
	(Fmap_into): New function, as specified by Common Lisp.
	(maplist): New function, the guts of the implementation of
	Fmaplist and Fmapl.
	(Fmaplist, Fmapl, Fmapcon): Move these from cl-extra.el.
	(syms_of_fns):
	Add a few needed symbols here, for the type tests
	used by #'map. Add the new subrs, with aliases for #'mapc-internal
	and #'mapcar.

	* general-slots.h: Declare Qcoerce here, now it's used in both
	indent.c and fns.c
	* indent.c (syms_of_indent): Qcoerce is gone from here.

	* lisp.h: Add ARRAYP(), SEQUENCEP(), and the corresponding CHECK_*
	macros. Declare Fbit_vector, Fstring, FmapcarX, now other files
	need to use them.
	* data.c (Farrayp, Fsequencep): Use ARRAYP and SEQUENCEP, just
	added to lisp.h

	* buffer.c (Fbuffer_list): Now Fmapcar has been renamed FmapcarX
	and takes MANY arguments, update this function to reflect that.

2010-01-28  Jerry James  <james@xemacs.org>

	* Makefile.in.in: Remove internationalization rules, since the
	lib-src programs they invoke are now gone.

2010-01-29  Ben Wing  <ben@xemacs.org>

	* search.c (boyer_moore): Fix longstanding bug involving
	searching for Control-1 chars; code was trying to directly
	extract the last byte in the textual representation of a char
	from an Ichar (and doing it in a buggy fashion) rather than
	just converting the Ichar to text and looking at the last byte.

2010-01-28  Ben Wing  <ben@xemacs.org>

	* syswindows.h:
	Add typedefs for PCVOID and PDWORD_PTR for non-Cygwin-headers folks
	(i.e. Visual Studio et al.).

2010-01-27  Aidan Kehoe  <kehoea@parhasard.net>

	* number.c (Fdenominator):
	Oops, change #else to #endif here; thank you Vin Shelton, thank
	you Robert Delius Royar.

2010-01-28  Ben Wing  <ben@xemacs.org>

	* device-x.c (x_init_device):
	* emodules.c (emodules_load):
	* emodules.c (emodules_doc_subr):
	* emodules.c (emodules_doc_sym):
	* emodules.h:
	Make the externally-called functions emodules_doc_sym() and
	emodules_doc_subr() take Ascbyte * pointers since they're usually
	passed string constants and we can't guarantee the encoding if
	it's not ASCII.  Fix pointer type in calls to dll_variable(), etc.

2010-01-27  Ben Wing  <ben@xemacs.org>

	* lread.c (vars_of_lread):
	Turn on load-ignore-out-of-date-elc-files by default.

2010-01-27  Ben Wing  <ben@xemacs.org>

	* event-unixoid.c (read_event_from_tty_or_stream_desc):
	Don't try to write one byte into a four-byte variable, leaving
	the rest undefined.  This is a recipe for crashing.

2010-01-27  Ben Wing  <ben@xemacs.org>

	* .gdbinit.in.in:
	* README:
	* abbrev.c (write_abbrev):
	* abbrev.c (describe_abbrev):
	* alloc.c (make_extstring):
	* alloc.c (build_istring):
	* alloc.c (build_cistring):
	* alloc.c (build_ascstring):
	* alloc.c (build_extstring):
	* alloc.c (build_msg_istring):
	* alloc.c (build_defer_istring):
	* buffer.c (Fgenerate_new_buffer_name):
	* buffer.c (init_buffer_2):
	* console-tty.c (tty_init_console):
	* console-x.c (get_display_arg_connection):
	* console-x.c (x_perhaps_init_unseen_key_defaults):
	* database.c (dbm_map):
	* database.c (dbm_get):
	* database.c (berkdb_get):
	* database.c (berkdb_map):
	* device-gtk.c (FROB_PIXMAP):
	* device-gtk.c (Fgtk_style_info):
	* device-msw.c (msprinter_default_printer):
	* device-msw.c (sync_printer_with_devmode):
	* device-x.c (coding_system_of_xrm_database):
	* device-x.c (x_init_device):
	* device-x.c (signal_if_x_error):
	* device-x.c (Fx_get_resource):
	* device-x.c (Fx_server_vendor):
	* device-x.c (Fx_get_font_path):
	* dialog-x.c (maybe_run_dbox_text_callback):
	* doc.c (extract_object_file_name):
	* doc.c (unparesseuxify_doc_string):
	* doc.c (get_doc_string):
	* doc.c (get_object_file_name):
	* doc.c (Fdocumentation):
	* doc.c (Fsnarf_documentation):
	* doc.c (Fsubstitute_command_keys):
	* editfns.c (init_editfns):
	* editfns.c (Ftemp_directory):
	* editfns.c (Fuser_login_name):
	* editfns.c (Fuser_real_login_name):
	* editfns.c (Fuser_home_directory):
	* editfns.c (Fformat_time_string):
	* editfns.c (Fcurrent_time_string):
	* editfns.c (Fcurrent_time_zone):
	* emacs.c:
	* emacs.c (main_1):
	* emodules.c (Flist_modules):
	* emodules.c (emodules_load):
	* emodules.c (emodules_doc_sym):
	* emodules.c (vars_of_module):
	* event-Xt.c (x_has_keysym):
	* event-gtk.c (emacs_gtk_format_magic_event):
	* event-gtk.c (dragndrop_data_received):
	* event-gtk.c (gtk_reset_key_mapping):
	* event-msw.c (mswindows_dde_callback):
	* event-msw.c (mswindows_wnd_proc):
	* faces.c (complex_vars_of_faces):
	* file-coding.c (find_coding_system):
	* file-coding.c (setup_eol_coding_systems):
	* file-coding.c (make_coding_system_1):
	* file-coding.c (snarf_coding_system):
	* fileio.c:
	* fileio.c (lisp_strerror):
	* fileio.c (Ffile_name_directory):
	* fileio.c (Ffile_name_as_directory):
	* fileio.c (Fdirectory_file_name):
	* fileio.c (if):
	* fileio.c (Ffile_symlink_p):
	* fileio.c (Fencrypt_string):
	* fileio.c (Fdecrypt_string):
	* filelock.c (lock_file):
	* filelock.c (Ffile_locked_p):
	* floatfns.c (matherr):
	* font-mgr.c (build_fcapi_string):
	* font-mgr.c (make_xlfd_font_regexp):
	* frame-msw.c (mswindows_window_id):
	* frame-msw.c (mswindows_frame_property):
	* frame-x.c:
	* frame-x.c (color_to_string):
	* frame-x.c (maybe_set_frame_title_format):
	* frame-x.c (x_cde_transfer_callback):
	* frame-x.c (Fx_window_id):
	* glade.c (connector):
	* glade.c (Fglade_xml_textdomain):
	* glade.c (syms_of_glade):
	* glyphs-eimage.c (jpeg_instantiate):
	* glyphs-eimage.c (png_instantiate):
	* glyphs-eimage.c (tiff_instantiate):
	* glyphs-gtk.c (font_instantiate):
	* glyphs-gtk.c (BUILD_GLYPH_INST):
	* glyphs-x.c (x_locate_pixmap_file):
	* glyphs-x.c (font_instantiate):
	* glyphs-x.c (x_widget_property):
	* glyphs-x.c (BUILD_GLYPH_INST):
	* glyphs.c (print_image_instance):
	* glyphs.c (bitmap_to_lisp_data):
	* glyphs.c (pixmap_to_lisp_data):
	* gpmevent.c (turn_off_gpm):
	* gpmevent.c (Fgpm_enabled_p):
	* gpmevent.c (Fgpm_enable):
	* gtk-glue.c (__make_string_mapper):
	* gtk-glue.c (xemacs_gtklist_to_list):
	* gtk-xemacs.c (FROB_FACE):
	* gtk-xemacs.c (xemacs_gtk_convert_color):
	* hpplay.c (player_error_internal):
	* hpplay.c (myHandler):
	* insdel.c (buffer_insert_ascstring_1):
	* insdel.h:
	* insdel.h (buffer_insert_ascstring):
	* intl.c (Fcurrent_locale):
	* intl.c (Fset_current_locale):
	* keymap.c (make_key_description):
	* keymap.c (Ftext_char_description):
	* keymap.c (describe_command):
	* keymap.c (describe_map):
	* lisp.h:
	* lread.c:
	* lread.c (locate_file_in_directory_mapper):
	* lread.c (locate_file_construct_suffixed_files_mapper):
	* mule-charset.c (Fmake_charset):
	* nt.c (Fmswindows_short_file_name):
	* nt.c (Fmswindows_long_file_name):
	* objects-gtk.c (__get_gtk_font_truename):
	* objects-gtk.c (__gtk_font_list_internal):
	* objects-msw.c (font_enum_callback_2):
	* objects-msw.c (create_hfont_from_font_spec):
	* objects-msw.c (mswindows_font_list):
	* objects-msw.c (mswindows_font_spec_matches_charset_stage_2):
	* objects-tty.c (tty_initialize_font_instance):
	* objects-x.c (x_font_truename):
	* objects-x.c (x_font_instance_truename):
	* objects-x.c (x_font_instance_properties):
	* objects-x.c (x_font_list):
	* print.c (write_cistring):
	* print.c (print_vector_internal):
	* print.c (print_cons):
	* process-nt.c (nt_canonicalize_host_name):
	* process-unix.c (unix_create_process):
	* process-unix.c (unix_canonicalize_host_name):
	* process.c (status_message):
	* process.c (status_notify):
	* process.c (init_xemacs_process):
	* process.c (syms_of_process):
	* redisplay-tty.c (term_get_fkeys_1):
	* redisplay-tty.c (CONDITIONAL_REASSIGN):
	* search.c (compile_pattern_1):
	* select-common.h (selection_data_to_lisp_data):
	* select-gtk.c (atom_to_symbol):
	* select-gtk.c (PROCESSING_GTK_CODE):
	* select-msw.c (mswindows_get_foreign_selection):
	* select-x.c (x_atom_to_symbol):
	* select-x.c (Fx_get_cutbuffer_internal):
	* symbols.c (intern_istring):
	* symbols.c (intern):
	* symbols.c (intern_converting_underscores_to_dashes):
	* symbols.c (Fintern):
	* sysdep.c (init_system_name):
	* sysdll.c (dll_error):
	* sysdll.c (dll_open):
	* syswindows.h:
	* syswindows.h (build_tstr_string):
	* tests.c (DFC_CHECK_LENGTH):
	* tests.c (DFC_CHECK_CONTENT):
	* tests.c (DFC_RESULT_PASS):
	* tests.c (Ftest_data_format_conversion):
	* text.c:
	* text.c (new_dfc_convert_now_damn_it):
	* text.h:
	* text.h (build_wext_string):
	* tooltalk.c (tt_build_c_string):
	* tooltalk.c (Ftooltalk_default_procid):
	* tooltalk.c (Ftooltalk_default_session):
	* tooltalk.c (init_tooltalk):
	* ui-byhand.c (Fgtk_clist_get_text):
	* ui-byhand.c (Fgtk_clist_get_pixtext):
	* ui-byhand.c (Fgtk_label_get):
	* ui-byhand.c (Fgtk_notebook_query_tab_label_packing):
	* ui-gtk.c (emacs_gtk_object_printer):
	* ui-gtk.c (emacs_gtk_boxed_printer):
	* ui-gtk.c (gtk_type_to_lisp):
	* ui-gtk.c (symbol_to_enum):
	* ui-gtk.c (enum_to_symbol):
	* unexaix.c (report_error):
	* unexaix.c (ERROR0):
	* unexec.c (report_error):
	* unexec.c (ERROR0):
	* unicode.c (unicode_to_ichar):
	* win32.c (tstr_to_local_file_format):
	* win32.c (Fmswindows_cygwin_to_win32_path):
	* win32.c (struct read_link_hash):
	* xemacs.def.in.in:

	Rename:

	write_c_string -> write_cistring
	build_intstring -> build_istring
	build_string -> build_cistring
	build_ext_string -> build_extstring
	make_ext_string -> make_extstring
	buffer_insert_c_string -> buffer_insert_ascstring
	intern_int -> intern_istring

	These functions have been renamed so that the naming harmonizes
	with the typedefs for strings: `cistring' along with CIbyte *,
	`istring' along with Ibyte *, `extstring' along with Extbyte *,
	`ascstring' along with Ascbyte *.

	Also make buffer_insert_ascstring take Ascbyte * and assert
	that its argument is ASCII.

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.

2010-01-26  Ben Wing  <ben@xemacs.org>

	* .gdbinit.in.in: Allow an argument to check-xemacs and check-temacs
	to check a specific file.

2010-01-24  Ben Wing  <ben@xemacs.org>

	* chartab.c (decode_char_table_range):
	* extents.c (extent_fragment_update):
	* objects-msw.c (initialize_font_instance):
	* process.c (Fgetenv):
	* redisplay-output.c (get_next_display_block):
	Fix warnings about possible use of uninitialized vars.

	* compiler.h:
	* compiler.h (REGISTER):
	* event-stream.c (is_scrollbar_event):
	* window.c (window_scrollbar_width):
	* window.c (window_scrollbar_height):
	* window.c (window_left_window_gutter_width):
	* window.c (window_right_window_gutter_width):
	Add USED_IF_SCROLLBARS.  Use it to fix warnings about unused
	vars when --with-scrollbars=no.

	* config.h.in:
	Change comment to explain better why DECLARE_INLINE_HEADER
	is needed.

	* dialog-msw.c:
	* emacs.c (SHEBANG_EXE_PROGNAME_LENGTH):
	* emacs.c (main_1):
	* event-msw.c (struct mswin_message_debug):
	* event-msw.c (debug_output_mswin_message):
	* font-mgr.c:
	* font-mgr.c (Ffc_config_filename):
	* glyphs-msw.c (struct):
	* glyphs-msw.c (bitmap_table):
	* glyphs-x.c (update_widget_face):
	* intl-win32.c (struct lang_to_string):
	* intl-win32.c (lang_to_string_table):
	* nas.c:
	* objects-xlike-inc.c:
	* objects-xlike-inc.c (xft_find_charset_font):
	* syswindows.h:
	* win32.c (mswindows_output_last_error):
	Fix g++ 4.3 complaints about implicit conversions of string
	literals (const char *) to char *.

	* lisp.h:
	G++ 4.3 needs #include <limits> to avoid errors about min/max.

	* lisp.h (disabled_assert_with_message):
	Use disabled_assert* whenever asserts are disabled.  Rewrite
	disabled_assert* to avoid complaints about unused vars by
	pretending to use the vars but casting them to (void).
	Remove code that defined assert() weirdly if DEBUG_XEMACS but
	not USE_ASSERTIONS -- configure sets USE_ASSERTIONS automatically
	when DEBUG_XEMACS, and if the user has forced it off, then
	so be it.

	* lisp.h (SYMBOL_KEYWORD):
	Put some of the combined `extern Lisp_Object's back under
	the file they are declared in.  Cosmetic fix.

	* number.h:
	Remove `extern Lisp_Object' decls that duplicate lisp.h,
	since they have different C vs. C++ linkage.

2010-01-21  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in:
	Oops.  Use two hashes for comments in Makefile.in.in.

2010-01-20  Ben Wing  <ben@xemacs.org>

	* symbols.c:
	Add long comment about the types of magic symbols, and the various
	declarations that go along with them.

2010-01-20  Ben Wing  <ben@xemacs.org>

	* .gdbinit.in.in:
	Moved here from etc/.gdbinit.in.
	Put @srcdir@ in various places rather than just `..' whenever
	Makefile.in.in does so.  Fixes various strange crashes and errors
	than occur when using `..'.
	* Makefile.in.in (config-changed):
	Add target, useful when building both Unicode-internal and
	old-Mule workspaces using --srcdir and don't run configure before
	switching from one to the other.

2010-01-20  Ben Wing  <ben@xemacs.org>

	* lrecord.h:
	* lrecord.h (enum lrecord_type):
	* lrecord.h (struct lrecord_implementation):
	Clean up description of finalizer methods.  Clean up and expand
	the long comment at the top of lrecord.h.  Add a section about why
	New-GC requires a bunch of new internal objects to be created (not
	completely understood).

2010-01-20  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	Disable error-checking code in Dynarr_at and related lookup
	functions.  It leads to a crash in the glyph-cachels code under
	Cygwin 1.7 and GCC 3.4.4.  I assume this is a compiler bug since
	the code in question doesn't (or shouldn't) modify anything.
	Changing the code from inline to non-inline didn't help.

2010-01-19  Ben Wing  <ben@xemacs.org>

	* console-impl.h (struct console_methods):
	* console-stream.c (stream_text_width):
	* redisplay-msw.c (mswindows_output_string):
	* redisplay-msw.c (mswindows_text_width):
	* redisplay-tty.c (tty_text_width):
	* redisplay-xlike-inc.c (XLIKE_text_width):
	* redisplay-xlike-inc.c (XLIKE_output_string):
	* redisplay.c:
	* redisplay.c (redisplay_window_text_width_ichar_string):
	* redisplay.c (redisplay_text_width_string):
	Change the text_width method to take a window instead of a frame.
	Needed for Unicode-internal.

2010-01-18  Ben Wing  <ben@xemacs.org>

	* redisplay-gtk.c:
	* redisplay-gtk.c (gtk_bevel_area):
	* redisplay-x.c:
	* redisplay-x.c (THIS_IS_X):
	* redisplay-xlike-inc.c:
	* redisplay-xlike-inc.c (XLIKE_text_width_single_run):
	* redisplay-xlike-inc.c (XLIKE_text_width):
	* redisplay-xlike-inc.c (XLIKE_output_display_block):
	* redisplay-xlike-inc.c (XLIKE_get_gc):
	* redisplay-xlike-inc.c (XLIKE_output_string):
	* redisplay-xlike-inc.c (XLIKE_OUTPUT_XLIKE_PIXMAP):
	* redisplay-xlike-inc.c (XLIKE_output_pixmap):
	* redisplay-xlike-inc.c (XLIKE_output_vertical_divider):
	* redisplay-xlike-inc.c (XLIKE_output_blank):
	* redisplay-xlike-inc.c (XLIKE_output_horizontal_line):
	* redisplay-xlike-inc.c (XLIKE_clear_region):
	* redisplay-xlike-inc.c (XLIKE_output_eol_cursor):
	* redisplay-xlike-inc.c (XLIKE_clear_frame_window):
	* redisplay-xlike-inc.c (XLIKE_clear_frame):
	* redisplay-xlike-inc.c (XLIKE_flash):
	* redisplay-xlike-inc.c (console_type_create_redisplay_XLIKE):
	Move lots more code into redisplay-xlike-inc.c.  Use macros to
	isolate the code that differs among X vs. GTK, to reduce the need
	for ifdefs in the middle of the code.  Now, redisplay-x.c and
	redisplay-gtk.c only contain a few functions whose implementation
	is completely different from one to the other, or which are not
	present at all in one of them.

	GTK code not currently tested, but it has bitrotted somewhat
	any.  Doing this will help keep it less bitrotty.

	* depend: Regenerate.

2010-01-18  Ben Wing  <ben@xemacs.org>

	* redisplay-xlike-inc.c:
	* redisplay-xlike-inc.c (separate_textual_runs_nomule):
	* redisplay-xlike-inc.c (separate_textual_runs_xft_nomule):
	* redisplay-xlike-inc.c (separate_textual_runs_xft_mule):
	* redisplay-xlike-inc.c (separate_textual_runs_mule):
	Break separate_textual_runs_* functions from redisplay-x.c.
	(Code in redisplay-gtk.c should have been identical but was
	bit-rotted.)

	* redisplay-gtk.c:
	* redisplay-x.c:
	Delete code, replace with include statement.

	* depend: Regenerate.

2010-01-18  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	* print.c:
	New variable `in_debug_print'.

	* alloc.c:
	* alloc.c (free_managed_lcrecord):
	If gc_in_progress and in_debug_print, just return instead of
	crashing. This only happens when the programmer calls debug_print()
	or a variation inside of a debugger, and is probably already
	diagnosing a crash.

	* print.c (struct debug_bindings):
	* print.c (debug_prin1_exit):
	* print.c (debug_prin1):
	At entrance, record the old value of in_debug_print in the
	debug_bindings, set up an unwind-protect to restore the old value,
	and set in_debug_print to 1.  In the unwind-protect, restore the
	old value.


2010-01-16  Ben Wing  <ben@xemacs.org>

	* win32.c (mswindows_read_link_1):
	Conditionalize COM support on HAVE_MS_WINDOWS because otherwise we
	haven't linked with the appropriate libraries.

2010-01-15  Ben Wing  <ben@xemacs.org>

	* doprnt.c (emacs_doprnt_1):
	Cosmetic: Use Qunbound, not Qnil as second arg to call to
	syntax_error() to get cleaner error message.

2010-01-15  Ben Wing  <ben@xemacs.org>

	* intl-encap-win32.c:
	Add `review' lines for all functions seen in the headers that we
	process but not yet associated with an encapsulation command.
	These will cause an error to be signaled if these functions are
	used.
	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.h:
	Regenerate.

2010-01-15  Ben Wing  <ben@xemacs.org>

	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.c (qxeExtractAssociatedIcon):
	* intl-auto-encap-win32.c (qxeShellExecuteEx):
	* intl-auto-encap-win32.c (qxeSHFileOperation):
	* intl-auto-encap-win32.c (qxeSHQueryRecycleBin):
	* intl-auto-encap-win32.c (qxeSHEmptyRecycleBin):
	* intl-auto-encap-win32.c (qxeWNetAddConnection):
	* intl-auto-encap-win32.c (qxeWNetAddConnection2):
	* intl-auto-encap-win32.c (qxeWNetAddConnection3):
	* intl-auto-encap-win32.c (qxeWNetCancelConnection):
	* intl-auto-encap-win32.c (qxeWNetCancelConnection2):
	* intl-auto-encap-win32.c (qxeWNetGetConnection):
	* intl-auto-encap-win32.c (qxeWNetUseConnection):
	* intl-auto-encap-win32.c (qxeWNetConnectionDialog1):
	* intl-auto-encap-win32.c (qxeWNetDisconnectDialog1):
	* intl-auto-encap-win32.c (qxeWNetOpenEnum):
	* intl-auto-encap-win32.c (qxeWNetEnumResource):
	* intl-auto-encap-win32.c (qxeWNetGetUniversalName):
	* intl-auto-encap-win32.c (qxeWNetGetUser):
	* intl-auto-encap-win32.c (qxeWNetGetProviderName):
	* intl-auto-encap-win32.c (qxeWNetGetNetworkInformation):
	* intl-auto-encap-win32.c (qxeWNetGetLastError):
	* intl-auto-encap-win32.c (qxeMultinetGetConnectionPerformance):
	* intl-auto-encap-win32.c (qxeAppendMenu):
	* intl-auto-encap-win32.c (qxeCopyAcceleratorTable):
	* intl-auto-encap-win32.c (qxeDlgDirSelectComboBoxEx):
	* intl-auto-encap-win32.c (qxeEnumDesktops):
	* intl-auto-encap-win32.c (qxeEnumWindowStations):
	* intl-auto-encap-win32.c (qxeGetClassInfo):
	* intl-auto-encap-win32.c (qxeGetClassLong):
	* intl-auto-encap-win32.c (qxeGetClassName):
	* intl-auto-encap-win32.c (qxeGetKeyboardLayoutName):
	* intl-auto-encap-win32.c (qxeGetWindowLong):
	* intl-auto-encap-win32.c (qxeGetUserObjectInformation):
	* intl-auto-encap-win32.c (qxeGetWindowTextLength):
	* intl-auto-encap-win32.c (qxeGrayString):
	* intl-auto-encap-win32.c (qxeInsertMenu):
	* intl-auto-encap-win32.c (qxeSetProp):
	* intl-auto-encap-win32.c (qxeEnumICMProfiles):
	* intl-auto-encap-win32.c (qxeExtTextOut):
	* intl-auto-encap-win32.c (qxeSetICMProfile):
	* intl-auto-encap-win32.c (qxeTextOut):
	* intl-auto-encap-win32.c (qxeSHGetPathFromIDList):
	* intl-auto-encap-win32.c (qxeFindText):
	* intl-auto-encap-win32.c (qxeReplaceText):
	* intl-auto-encap-win32.c (qxeImmInstallIME):
	* intl-auto-encap-win32.c (qxeImmGetDescription):
	* intl-auto-encap-win32.c (qxeImmGetIMEFileName):
	* intl-auto-encap-win32.c (qxeImmGetCompositionString):
	* intl-auto-encap-win32.c (qxeImmGetCandidateListCount):
	* intl-auto-encap-win32.c (qxeImmGetCandidateList):
	* intl-auto-encap-win32.c (qxeImmGetGuideLine):
	* intl-auto-encap-win32.c (qxeImmConfigureIME):
	* intl-auto-encap-win32.c (qxeImmEscape):
	* intl-auto-encap-win32.c (qxeImmGetConversionList):
	* intl-auto-encap-win32.c (qxeImmRegisterWord):
	* intl-auto-encap-win32.c (qxeImmUnregisterWord):
	* intl-auto-encap-win32.c (qxeImmEnumRegisterWord):
	* intl-auto-encap-win32.c (qxesndPlaySound):
	* intl-auto-encap-win32.c (qxePlaySound):
	* intl-auto-encap-win32.c (qxewaveOutGetErrorText):
	* intl-auto-encap-win32.c (qxewaveInGetErrorText):
	* intl-auto-encap-win32.c (qxemidiOutGetErrorText):
	* intl-auto-encap-win32.c (qxemidiInGetErrorText):
	* intl-auto-encap-win32.c (qxemmioStringToFOURCC):
	* intl-auto-encap-win32.c (qxemmioInstallIOProc):
	* intl-auto-encap-win32.c (qxemmioOpen):
	* intl-auto-encap-win32.c (qxemmioRename):
	* intl-auto-encap-win32.c (qxemciSendCommand):
	* intl-auto-encap-win32.c (qxemciSendString):
	* intl-auto-encap-win32.c (qxemciGetDeviceID):
	* intl-auto-encap-win32.c (qxemciGetErrorString):
	* intl-auto-encap-win32.h:
	* intl-auto-encap-win32.h (qxemciGetErrorString):
	Regenerate these files from Cygwin headers.

	* intl-encap-win32.c:
	Bracket more functions in HAVE_MS_WINDOWS, to fix build problems
	when building --with-msw=no on Cygwin.

	Fixes for Cygwin headers:
	-- Comment out IME.H, non-existent in Cygwin.
	-- Make MessageBoxIndirect a `no' (don't encapsulate but generate
	   error if used) because it has a structure parameter that needs
	   to be A/W split but is declared as FOO*, and our parser can't
	   split this.

2010-01-15  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in:
	Build xemacs-export.o whenever we're on any Windows OS (WIN32_ANY)
	instead of only when we build support for the GUI portion of
	MS-Windows (HAVE_MS_WINDOWS).

	Cosmetic: Use WIN32_ANY in place of equivalent
	(WIN32_NATIVE or CYGWIN).

2010-01-15  Ben Wing  <ben@xemacs.org>

	* emacs.c:
	* emacs.c (debug_can_access_memory):
	When checking for bad memory, we need to read all bytes from memory;
	try even harder to avoid the possibility that a super-optimizing
	compiler will optimize away the memory reads.

2010-01-15  Ben Wing  <ben@xemacs.org>

	* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
	* syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN):
	* syswindows.h (INTERNAL_MSWIN_TO_LOCAL_FILE_FORMAT):
	Declare some temporary pointer variables const to avoid compile
	errors under C++ and/or Visual Studio 6.

2010-01-27  Ben Wing  <ben@xemacs.org>

	* casetab.c: Typo in comment.

2010-01-24  Aidan Kehoe  <kehoea@parhasard.net>

	* number.c (Fnumerator, Fdenominator, Fcanonicalize_number):
	Be more careful to return integers in their canonical forms here,
	and to give the same answer all the time when treating a rational
	that is itself is an integer as a ratio.

2010-01-24  Aidan Kehoe  <kehoea@parhasard.net>

	Fix problems with #'eql, extended number types, and the hash table
	implementation; change the Bintegerp bytecode to fixnump semantics
	even on bignum builds, since #'integerp can have a fast
	implementation in terms of #'fixnump for most of its extant uses,
	but not vice-versa.

	* lisp.h: Always #include number.h; we want the macros provided in
	it, even if the various number types are not available.
	* number.h (NON_FIXNUM_NUMBER_P): New macro, giving 1 when its
	argument is of non-immediate number type.  Equivalent to FLOATP if
	WITH_NUMBER_TYPES is not defined.

	* elhash.c (lisp_object_eql_equal, lisp_object_eql_hash):
	Use NON_FIXNUM_NUMBER_P in these functions, instead of FLOATP,
	giving more correct behaviour in the presence of the extended
	number types.
	* bytecode.c (Bfixnump, execute_optimized_program):
	Rename Bintegerp to Bfixnump; change its semantics to reflect the
	new name on builds with bignum support.

	* data.c (Ffixnump, Fintegerp, syms_of_data, vars_of_data):
	Always make #'fixnump available, even on non-BIGNUM builds;
	always implement #'integerp in this file, even on BIGNUM builds.
	Move most-positive-fixnum, most-negative-fixnum here from
	number.c, so they are Lisp constants even on builds without number
	types, and attempts to change or bind them error.
	Use the NUMBERP and INTEGERP macros even on builds without
	extended number types.
	* data.c (fixnum_char_or_marker_to_int):
	Rename this function from integer_char_or_marker_to_int, to better
	reflect the arguments it accepts.

	* number.c (Fevenp, Foddp, syms_of_number):
	Never provide #'integerp in this file. Remove #'oddp,
	#'evenp; their implementations are overridden by those in cl.el.
	* number.c (vars_of_number):
	most-positive-fixnum, most-negative-fixnum are no longer here.

2010-01-17  Vin Shelton  <acs@xemacs.org>

	* fileio.c (check_writable): Remove cast from 2010-01-14

	* syswindows.h: Use consts in macros where appropriate in lieu of
	cast in check_writable().  Patch from Ben Wing.

2010-01-16  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	* floatfns.c (emacs_rint):
	Don't look for rint in configure, always use our own
	implementation that rounds to the even number in the case of
	ambiguity, for consistency with the bignum code.

2010-01-14  Vin Shelton  <acs@xemacs.org>

	* fileio.c (check_writable): Fix compilation error under Visual
	Studio 6.

	* sysfile.h:
	Add conditional definition for EOVERFLOW, which isn't defined
	under Visual Studio 6.

2010-01-14  Didier Verna  <didier@xemacs.org>

	* faces.c (complex_vars_of_faces): change X11 bgcolor fallback of
	default face to match that of gui element face.

2010-01-14  Ben Wing  <ben@xemacs.org>

	* buffer.h:
	* compiler.h:
	Don't use USED_IF_MULE_OR_CHECK_TEXT in buffer.h.  Eliminate since
	not used anywhere any more.

	* font-mgr.c (fontset_to_list):
	* font-mgr.c (Ffc_config_substitute):
	Don't use Fsignal() as it may return.  Use signal_error() instead
	or a more specific function such as invalid_state() or wtaerror().

2010-01-14  Ben Wing  <ben@xemacs.org>

	* syswindows.h: Don't define CYGWIN_HEADERS here.

2010-01-14  Ben Wing  <ben@xemacs.org>

	* s/cygwin32.h:
	* s/mingw32.h:
	Define here instead so it's available in all files.  Fixes
	compile problems in database.c in some cases.

2010-01-14  Ben Wing  <ben@xemacs.org>

	* glyphs-eimage.c:
	Turn on fixes for conflicts between jmorecfg.h and windows.h on
	Cygwin, too.

	* emacs.c (debug_can_access_memory):
	* lisp.h:
	Declare function const void * to avoid warnings.

	* sysfile.h:
	Include syswindows.h on Windows to avoid problems using things like
	PATHNAME_CONVERT_OUT.

	* sysfile.h (X_OK):
	* dialog-msw.c (handle_directory_proc):
	* dialog-msw.c (handle_directory_dialog_box):
	* nt.c (Fmswindows_short_file_name):
	* sysdep.c (qxe_allocating_getcwd):
	* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
	* unexcw.c (unexec):
	* unexnt.c (_start):
	* win32.c (mswindows_read_link_1):
	Rename PATH_MAX_EXTERNAL to PATH_MAX_TSTR to reflect its actual
	semantics.

	* unexcw.c:
	Remove include of syswindows.h that had been added because
	sysfile.h didn't include it.

2010-01-13  Ben Wing  <ben@xemacs.org>

	* specifier.c (specifier_instance_from_inst_list):
	Don't declare an unused variable, (void) 0 is enough.

	* text.h:
	Don't use USED_IF_MULE_OR_CHECK_TEXT().

2010-01-13  Ben Wing  <ben@xemacs.org>

	* debug.c (vars_of_debug):
	Provide `debug-xemacs' to signal we have a debug build;
	must do this to get previoug `debug-on-error' change to work.

2010-01-13  Jerry James  <james@xemacs.org>

	* font-mgr.c (Ffc_config_app_font_add_file): Fix parentheses.
	(Ffc_config_app_font_add_dir): Ditto.

2010-01-13  Jerry James  <james@xemacs.org>

	* Makefile.in.in: Remove CYGWIN && !PDUMP section.
	* depend: Regenerated.
	* s/cygwin.sc: Removed.
	* s/cygwin32.h (UNEXEC): Do not define.

2010-01-13  Ben Wing  <ben@xemacs.org>

	* print.c:
	* print.c (internal_object_printer):
	* print.c (enum printing_badness):
	* print.c (printing_major_badness):
	* print.c (print_internal):
	Clean up the part of the code that looks for things that might
	lead to crashing in the print code:
	-- Make the "badness" messages more consistent.
	-- Move the checks for circularities after the checks for bad
	   memory, since the checks for circularities involve accessing
	   memory (which could be bad).
	-- Add an extra check to see if the object's implementation structure
	   is bad memory.
	-- Add extra check for object itself being a null pointer or
	   implementation pointer being null.
	-- Add some extra comments to help in maintaining the code.

2010-01-13  Ben Wing  <ben@xemacs.org>

	* casetab.c (print_case_table):
	* console.c (print_console):
	* data.c (print_weak_list):
	* data.c (print_weak_box):
	* data.c (print_ephemeron):
	* data.c (ephemeron_equal):
	* database.c (print_database):
	* device-msw.c (print_devmode):
	* device.c (print_device):
	* eval.c:
	* file-coding.c (print_coding_system):
	* frame.c (print_frame):
	* glyphs.c (print_image_instance):
	* glyphs.c (print_glyph):
	* gui.c:
	* gui.c (print_gui_item):
	* keymap.c (print_keymap):
	* lisp.h:
	* mule-charset.c (print_charset):
	* objects.c (print_color_instance):
	* objects.c (print_font_instance):
	* print.c:
	* print.c (printing_unreadable_object):
	* print.c (printing_unreadable_lcrecord):
	* print.c (default_object_printer):
	* process.c (print_process):
	* tooltalk.c:
	* tooltalk.c (print_tooltalk_message):
	* tooltalk.c (print_tooltalk_pattern):
	* ui-gtk.c (ffi_object_printer):
	* ui-gtk.c (emacs_gtk_object_printer):
	* ui-gtk.c (emacs_gtk_boxed_printer):
	* window.c (print_window):
	New function printing_unreadable_lcrecord().  Automatically
	prints the type name and pointer value of the object.  Use it
	instead of printing_unreadable_object(); make that latter
	function local to print.c.

	* window.c (print_window):
	During creation, window may have Qt as its buffer. Don't
	crash if trying to print such a window.

2010-01-13  Ben Wing  <ben@xemacs.org>

	* dynarr.c:
	Add comment explaining Dynarr_largest() use.

	* dynarr.c (Dynarr_insert_many):
	In Dynarr_insert_many(), don't call Dynarr_resize() unless we
	actually need to resize, and note that an assert() that we are
	inserting at or below the current end could be wrong if code
	wants to access stuff between `len' and `largest'.

	* dynarr.c (stack_like_malloc):
	Don't just Dynarr_resize() to the right size; instead use
	Dynarr_reset() then Dynarr_add_many(), so that the 'len' and
	'largest' and such get set properly.

	* dynarr.c (Dynarr_insert_many):
	* dynarr.c (Dynarr_delete_many):
	* dynarr.c (Dynarr_memory_usage):
	* dynarr.c (stack_like_free):
	* faces.c (add_face_cachel):
	* gutter.c (output_gutter):
	* lisp.h:
	* lisp.h (Dynarr_declare):
	* lisp.h (Dynarr_length):
	* lisp.h (Dynarr_add):
	* lisp.h (Dynarr_increment):
	* lisp.h (Dynarr_pop):
	* lread.c (define_structure_type):
	* lread.c (define_structure_type_keyword):
	* lrecord.h:
	* lrecord.h (XD_DYNARR_DESC):
	* lrecord.h (XD_LISP_DYNARR_DESC):
	* redisplay-output.c (compare_display_blocks):
	* redisplay-output.c (output_display_line):
	* redisplay.c (add_ichar_rune_1):
	* redisplay.c (create_text_block):
	* redisplay.c (generate_formatted_string_db):
	* redisplay.c (create_string_text_block):
	* redisplay.c (point_visible):
	* redisplay.c (mark_glyph_block_dynarr):
	* redisplay.c (mark_redisplay_structs):
	* redisplay.c (line_start_cache_end):
	* redisplay.c (update_line_start_cache):
	* redisplay.c (glyph_to_pixel_translation):
	* redisplay.c (pixel_to_glyph_translation):
	Rename Dynarr member 'cur' to 'len' since it's the length of
	the dynarr, not really a pointer to a "current insertion point".

	Use type_checking_assert() instead of just assert() in some places.


	Add additional assertions (Dynarr_verify*()) to check that we're
	being given positions within range.  Use them in Dynarr_at,
	Dynarr_atp, etc.  New Dynarr_atp_allow_end() for retrieving a
	pointer to a position that might be the element past the last one.
	New Dynarr_past_lastp() to retrieve a pointer to the position
	past the last one, using Dynarr_atp_allow_end().  Change code
	appropriately to use it.

	Rename Dynarr_end() to Dynarr_lastp() (pointer to the last
	element) for clarity, and change code appropriately to use it.

	Change code appropriately to use Dynarr_begin().

	Rewrite Dynarr_add_many().  New version can accept a NULL pointer
	to mean "reserve space but don't put anything in it".  Used by
	stack_like_malloc().


2010-01-13  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	* lisp.h (inline_type_checking_assert):
	Add structure_checking_assert(), gc_checking_assert(), etc. for
	all types of error-checking.  Also FOO_checking_assert_with_message()
	and inline_FOO_checking_assert() -- the latter for use in an inline
	function where you want the calling function's line/file to be reported
	(requires some conspiracy with the function itself).

	Add disabled_assert(), disabled_assert_at_line(),
	disabled_assert_with_message(), for what to do when an assert is
	disabled.  Formerly, we used to do ((void) 0), but now we do
	((void) x), so the variable appears used and any side effects of the
	expression do get done.  In Unicode-internal, the standard assert()
	uses this, but not yet in this workspace.

2010-01-13  Ben Wing  <ben@xemacs.org>

	* cmdloop.c:
	During really-early-error-handler, exit to the debugger and abort
	if an error occurs and
	* lisp.h: extern Vdebug_on_error.

2010-01-12  Ben Wing  <ben@xemacs.org>

	* sheap.c:
	* sheap.c (more_static_core):
	Increase STATIC_HEAP_SLOP.
	Change heap-exhausted error message to mention the computed
	static heap size.

	* unexcw.c: Include syswindows.h to avoid compile error.

	* file-coding.c (default_query_method): Single = is intended.
	Rewrite using comma operator to make this clearer and avoid
	dependency on the value of an enum.

2010-01-11  Ben Wing  <ben@xemacs.org>

	* database.c:
	* intl-encap-win32.c (qxeUpdateICMRegKey):
	Cosmetic fixes.

	* device-x.c (signal_if_x_error):
	* editfns.c (Fformat_time_string):
	* editfns.c (Fencode_time):
	* editfns.c (Fcurrent_time_zone):
	* editfns.c (Fset_time_zone_rule):
	* event-gtk.c (gtk_reset_key_mapping):
	* fileio.c (Fsysnetunam):
	* font-mgr.c:
	* font-mgr.c (Ffc_config_app_font_add_dir):
	* font-mgr.c (Ffc_config_filename):
	* glyphs-eimage.c (my_jpeg_output_message):
	* glyphs-eimage.c (jpeg_instantiate):
	* glyphs-shared.c (read_bitmap_data_from_file):
	* glyphs-x.c (x_redisplay_widget):
	* glyphs-x.c (x_widget_instantiate):
	* glyphs-x.c (x_widget_property):
	* glyphs-x.c (x_tab_control_redisplay):
	* hpplay.c (player_error_internal):
	* hpplay.c (play_sound_file):
	* hpplay.c (play_sound_data):
	* process-unix.c:
	* process-unix.c (unix_canonicalize_host_name):
	* process.c (init_xemacs_process):
	* sound.h (sound_perror):
	* sysdep.c:
	* sysdep.c (qxe_execve):
	* sysdep.c (copy_in_passwd):
	* sysdep.c (qxe_getpwnam):
	* sysdep.c (qxe_ctime):
	* sysdll.c (dll_error):
	* sysdll.c (dll_open):
	* tooltalk.c (check_status):
	* tooltalk.c (Fadd_tooltalk_message_arg):
	* tooltalk.c (Fadd_tooltalk_pattern_attribute):
	* tooltalk.c (Fadd_tooltalk_pattern_arg):
	Change all occurrences of Qnative to some more specific encoding.
	Create Qtime_function_encoding, Qtime_zone_encoding,
	Quser_name_encoding, Qerror_message_encoding,
	Qjpeg_error_message_encoding, Qtooltalk_encoding, Qgtk_encoding,
	Qx_error_message_encoding.

	* intl-win32.c (init_intl_win32):
	Provide cygwin-use-utf-8 if this is the case.

	* fileio.c (Ffile_truename):
	* realpath.c:
	* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
	* syswindows.h (TSTR_TO_LOCAL_FILE_FORMAT):
	* syswindows.h (LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN):
	* syswindows.h (INTERNAL_MSWIN_TO_LOCAL_FILE_FORMAT):
	* syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR):
	* win32.c (urlify_filename):
	* win32.c (tstr_to_local_file_format):
	* win32.c (Fmswindows_cygwin_to_win32_path):
	Rename LOCAL_FILE_FORMAT_TO_INTERNAL_WIN32 and
	INTERNAL_WIN32_TO_LOCAL_FILE_FORMAT to
	LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN and
	INTERNAL_MSWIN_TO_LOCAL_FILE_FORMAT, since "win32" is a misnomer.

2010-01-11  Ben Wing  <ben@xemacs.org>

	* config.h.in:
	Add def for HAVE_CYGWIN_CONV_PATH.

	* dialog-msw.c (handle_directory_dialog_box):
	* dialog-msw.c (handle_file_dialog_box):
	* fileio.c:
	* fileio.c (Ffile_truename):
	* syswindows.h:
	* syswindows.h (CCP_POSIX_TO_WIN_T):
	* syswindows.h (LISP_LOCAL_FILE_FORMAT_TO_TSTR):
	* syswindows.h (INTERNAL_WIN32_TO_LOCAL_FILE_FORMAT):
	* syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR):
	* win32.c (urlify_filename):
	* win32.c (tstr_to_local_file_format):
	* win32.c (Fmswindows_shell_execute):
	* win32.c (Fmswindows_cygwin_to_win32_path):
	Rename LOCAL_FILE_FORMAT_TO_TSTR to LISP_LOCAL_FILE_FORMAT_TO_TSTR.
	Rename LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR to
	LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR.  Both of these renames
	reflect the fact that their 'in' argument is a Lisp object.

	Create new LOCAL_FILE_FORMAT_TO_TSTR that accepts an Ibyte *.

	Rename LOCAL_TO_WIN32_FILE_FORMAT to
	LOCAL_FILE_FORMAT_TO_INTERNAL_WIN32; rename WIN32_TO_LOCAL_FILE_FORMAT
	to INTERNAL_WIN32_TO_LOCAL_FILE_FORMAT similarly.
	This clarifies the fact that the result is a file in MS-Windows format
	rather than POSIX format, but still in internal-format instead of
	UTF-16.

	Fix up the *LOCAL_FILE_FORMAT* functions to use cygwin_conv_path()
	if available.  This converts between a UTF-8 POSIX path and a
	UTF-16 Windows path (or ANSI Windows path, in the increasingly
	unlikely situation that we're using Windows 9x).  Previously, we
	used an old API and operated on internal-format data, because the
	external format was unpredictable.  This doesn't work any more,
	even with the old API (it tries to convert to UTF-8).  So instead,
	when the new API is available we use the new API and operate on
	external-format data.  This necessitates that if we want to convert
	to/from internal-format Windows-style paths, we need to first convert
	to external format, do the conversion, and convert back to
	internal format.  To avoid this, we change some callers of the
	macros to use the right version (internal or external format
	destination) and avoid doing the internal/external conversions
	themselves.

	* realpath.c:
	* fileio.c (check_writable):
	Cosmetic fixes to check_writable.

	Avoid directly calling cygwin_conv_to_full_win32_path
	(fileio.c:check_writable did this) or cygwin_posix_to_win32_path_list
	(realpath.c:readlink_or_correct_case did this); use the
	*LOCAL_FILE_FORMAT* macros instead.

	* fileio.c (Ffile_exists_p):
	* glyphs-msw.c (mswindows_resource_instantiate):
	* sysdll.c (dll_open):
	* sysfile.h:
	* sysfile.h (PATHNAME_CONVERT_OUT_TSTR):
	Add PATHNAME_CONVERT_OUT_TSTR and PATHNAME_CONVERT_OUT_UTF_8 for
	conversion involving specified coding systems rather than `file-name'.
	Use them in *LOCAL_FILE_FORMAT* macros.

	* emacs.c (main_1):
	* symsinit.h:
	* unicode.c:
	New function complex_vars_of_unicode().  In it, create the utf-8
	coding system.  Call it appropriately in emacs.c.  Sort the
	prototypes of complex_vars_of_*() in symsinit.h, for cosmetic
	reasons.


2010-01-11  Ben Wing  <ben@xemacs.org>

	* regex.c (re_compile_fastmap):
	The code to compute the fastmap in charset_mule_not was totally
	messed up.  I'm surprised it hasn't led to more visible bugs.

2010-01-11  Ben Wing  <ben@xemacs.org>

	* rangetab.c:
	* rangetab.c (external_to_internal_adjust_ends):
	* rangetab.c (put_range_table):
	* rangetab.c (Fmap_range_table):
	* rangetab.c (struct unified_range_table):
	* rangetab.c (unified_range_table_copy_data):
	* rangetab.c (unified_range_table_get_range):
	Add an entry to unified range tables to keep track of their type.
	Factor out code to adjust the endpoints of ranges between the
	external format (either end can be open or closed) and internal
	format (always closed/open).  Use code also when returning
	ranges out of unified range tables.  Fixes an off-by-one error
	in regex.c where it was getting ranges with an end one greater
	than expected, since it creates closed-closed range tables and
	was getting passed the internal-format ranges.

2010-01-11  Ben Wing  <ben@xemacs.org>

	* config.h.in:
	* config.h.in (ERROR_CHECK_GLYPHS):
	Trying to avoid link errors referring to the ERROR_CHECK_TYPES
	functions, either in eldap.o (if we don't include references to
	ERROR_CHECK_TYPES in xemacs.def.in.in) or xemacs-export.o (if
	we do include such references):

	Add line for USE_GPLUSPLUS, set by configure.
	Define INLINE_HEADERS_ARE_STATIC when we add static to inline headers.
	(Possibly used when setting NEED_ERROR_CHECK_TYPES_INLINES.)
	Currently, set NEED_ERROR_CHECK_TYPES_INLINES when ERROR_CHECK_TYPES
	and USE_GPLUSPLUS.

	* xemacs.def.in.in:
	Use NEED_ERROR_CHECK_TYPES_INLINES here to bracket things like
	`error_check_cons' instead of just ERROR_CHECK_TYPES.

	* faces.c (complex_vars_of_faces):
	Bracket various font variables with defined(USE_XFT or MULE) to
	avoid warnings.

	* fileio.c:
	Make sure the `expand-file-name' handler returns a string, to
	avoid a potential crash.

	* floatfns.c (round_one_bigfloat_1):
	#if-0 out an assert that can never be triggered and which
	generates warnings "dereferencing type-punned pointer will break
	strict-aliasing rules".

	* redisplay-x.c (separate_textual_runs_nomule):
	Remove unused variable in non-Mule case.

	* specifier.c (charset_matches_specifier_tag_set_p):
	Variable CHARSET is unused when not Mule.

	* specifier.c (specifier_instance_from_inst_list):
	Add a comment questioning why font-specific stuff is littering
	specifier.c.

	* syswindows.h:
	Expand on the comments on a #if 0 I added in a previous patch.

	* vdb-win32.c:
	* vdb-win32.c (win32_fault_handler):
	* vdb-win32.c (vdb_install_signal_handler):
	Change return type to LONG instead of DWORD to avoid warning or
	error.

2010-01-11  Ben Wing  <ben@xemacs.org>

	* database.c: Cygwin prototypes in ndbm.h are incomplete and
	cause C++ compile errors; fix them.

	* fileio.c (check_writable):
	Fix compile errors.  Also move the call to C_STRING_TO_TSTR
	earlier, which is probably wrong, but fixed in a later patch.

	* intl-encap-win32.c (qxeGetICMProfile):
	Ifdef out a fix to work around a previous bogosity in Cygwin
	header files which has now been fixed.  Keeping in the fix
	led to compile errors. #### Proper way to do it is to figure
	out when it got fixed, perhaps put in a configure test, but it
	seems not worth it.

	* intl-encap-win32.c (qxeUpdateICMRegKey):
	Cosmetic change, undone in a later patch.
	* mule-charset.c (Fset_charset_ccl_program):
	Remove unused variable.
	* nas.c:
	#if-0 out some unused static code to avoid a warning.
	* syswindows.h:
	Don't declare prototypes for GetCurrentFiber and GetFiberData,
	it causes a compile error.
	* unicode.c (unicode_query):
	invalid_lower_limit might have been used uninitted, so initialize it.

2010-01-11  Ben Wing  <ben@xemacs.org>

	* config.h.in:
	Add def for HAVE_CYGWIN_CONV_PATH.

	* dialog-msw.c (handle_directory_dialog_box):
	* dialog-msw.c (handle_file_dialog_box):
	* fileio.c:
	* fileio.c (Ffile_truename):
	* syswindows.h:
	* syswindows.h (CCP_POSIX_TO_WIN_T):
	* syswindows.h (LISP_LOCAL_FILE_FORMAT_TO_TSTR):
	* syswindows.h (INTERNAL_WIN32_TO_LOCAL_FILE_FORMAT):
	* syswindows.h (LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR):
	* win32.c (urlify_filename):
	* win32.c (tstr_to_local_file_format):
	* win32.c (Fmswindows_shell_execute):
	* win32.c (Fmswindows_cygwin_to_win32_path):
	Rename LOCAL_FILE_FORMAT_TO_TSTR to LISP_LOCAL_FILE_FORMAT_TO_TSTR.
	Rename LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR to
	LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR.  Both of these renames
	reflect the fact that their 'in' argument is a Lisp object.

	Create new LOCAL_FILE_FORMAT_TO_TSTR that accepts an Ibyte *.

	Rename LOCAL_TO_WIN32_FILE_FORMAT to
	LOCAL_FILE_FORMAT_TO_INTERNAL_WIN32; rename WIN32_TO_LOCAL_FILE_FORMAT
	to INTERNAL_WIN32_TO_LOCAL_FILE_FORMAT similarly.
	This clarifies the fact that the result is a file in MS-Windows format
	rather than POSIX format, but still in internal-format instead of
	UTF-16.

	Fix up the *LOCAL_FILE_FORMAT* functions to use cygwin_conv_path()
	if available.  This converts between a UTF-8 POSIX path and a
	UTF-16 Windows path (or ANSI Windows path, in the increasingly
	unlikely situation that we're using Windows 9x).  Previously, we
	used an old API and operated on internal-format data, because the
	external format was unpredictable.  This doesn't work any more,
	even with the old API (it tries to convert to UTF-8).  So instead,
	when the new API is available we use the new API and operate on
	external-format data.  This necessitates that if we want to convert
	to/from internal-format Windows-style paths, we need to first convert
	to external format, do the conversion, and convert back to
	internal format.  To avoid this, we change some callers of the
	macros to use the right version (internal or external format
	destination) and avoid doing the internal/external conversions
	themselves.

	* realpath.c:
	* fileio.c (check_writable):
	Cosmetic fixes to check_writable.

	Avoid directly calling cygwin_conv_to_full_win32_path
	(fileio.c:check_writable did this) or cygwin_posix_to_win32_path_list
	(realpath.c:readlink_or_correct_case did this); use the
	*LOCAL_FILE_FORMAT* macros instead.

	* fileio.c (Ffile_exists_p):
	* glyphs-msw.c (mswindows_resource_instantiate):
	* sysdll.c (dll_open):
	* sysfile.h:
	* sysfile.h (PATHNAME_CONVERT_OUT_TSTR):
	Add PATHNAME_CONVERT_OUT_TSTR and PATHNAME_CONVERT_OUT_UTF_8 for
	conversion involving specified coding systems rather than `file-name'.
	Use them in *LOCAL_FILE_FORMAT* macros.

	* emacs.c (main_1):
	* symsinit.h:
	* unicode.c:
	New function complex_vars_of_unicode().  In it, create the utf-8
	coding system.  Call it appropriately in emacs.c.  Sort the
	prototypes of complex_vars_of_*() in symsinit.h, for cosmetic
	reasons.


2010-02-07  Aidan Kehoe  <kehoea@parhasard.net>

	* fns.c (split_string_by_ichar_1): Extend this to take UNESCAPE
	and ESCAPECHAR arguments.
	(split_external_path, split_env_path, Fsplit_string_by_char)
	(Fsplit_path):
	Pass the new arguments to split_string_by_ichar_1(); take a new
	optional argument, ESCAPE-CHAR, in #'split-string-by-char,
	allowing SEPCHAR to be escaped.

2010-01-09  Didier Verna  <didier@xemacs.org>

	* glyphs.c (query_string_font): Use proper domain for cachel
	updating.

2010-01-09  Didier Verna  <didier@xemacs.org>

	Fix query_string_geometry lookup domain.
	* redisplay.c (redisplay_window_text_width_ichar_string): Formerly
	named redisplay_text_width_ichar_string.
	* redisplay.c (redisplay_window_text_width_string): Formerly named
	redisplay_text_width_string. Make static.
	* redisplay.c (redisplay_text_width_string): Formerly named
	redisplay_frame_text_width_string. Generalize to accept any
	Lisp_Object domain argument (instead of only frames).
	* redisplay.c (add_ichar_rune_1): Update funcalls for the above
	renaming.
	* redisplay.c (generate_fstring_runes): Ditto.
	* redisplay.h: Ditto.
	* glyphs.c (query_string_geometry): Use proper domain for cachel
	updating and in generalized version of redisplay_text_width_string.

2010-01-08  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-charset.c (Fmake_charset):
	Change build_string with an Ibyte argument to build_intstring,
	fixing the build on Visual C++. Thank you for the report, Vin.

2010-01-07  Jerry James  <james@xemacs.org>

	* font-mgr.c (Ffc_font_match): Initialize result to FcResultMatch
	before calling FcFontMatch.
	* objects-xlike-inc.c (xft_find_charset_font): Ditto.

2010-01-07  Henrique Martins  <xemacs@martins.cc>

	* dired.c (file_name_completion): If a file is too big to stat(),
	ignore the error, since we don't use the size.

2010-01-07  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-charset.c:
	(syms_of_mule_charset, complex_vars_of_mule_charset):
	* lisp.h:
	Restore the creation of arabic-iso8859-6 in C, having it in Lisp
	isn't sufficient for X11 input to work.

2010-01-06  Jerry James  <james@xemacs.org>

	* emacs.c (main_1): Only call reinit_vars_of_number if
	WITH_NUMBER_TYPES.

2010-01-06  Jerry James  <james@xemacs.org>

	* alloc.c: Include valgrind header if USE_VALGRIND.
	(Fvalgrind_leak_check): New function.
	(Fvalgrind_quick_leak_check): New function.
	(syms_of_alloc): Declare the new functions.
	* config.h.in (USE_VALGRIND): New define.

2010-01-06  Jerry James  <james@xemacs.org>

	* emacs.c: Fix FSF address.
	(main_1): Call reinit_vars_of_number.
	* number-gmp.c: Fix FSF address.
	* number-gmp.h: Ditto.
	* number-mp.c: Ditto.
	* number-mp.h: Ditto.
	* number.h: Ditto.
	* number.c: Ditto.
	(bignum_finalize): New function.
	(ratio_finalize): New function.
	(bigfloat_finalize): New function.
	(vars_of_number): Don't create a bignum here.
	(reinit_vars_of_number): New function; create a bignum here.
	(init_number): Call reinit_vars_of_number if !PDUMP.
	* symsinit.h: Fix FSF address.  Declare reinit_vars_of_number.

2010-01-05  Jerry James  <james@xemacs.org>

	* font-mgr.c (Ffc_name_unparse): Return value of FcNameUnparse
	must be freed.

2009-12-31  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Ffunctionp):
	Special forms no longer give t in this function, in accordance
	with recent GNU Emacs and with Common Lisp.

2009-12-21  Jerry James  <james@xemacs.org>

	* config.h.in: Remove OffiX support.
	* device-x.c: Ditto.
	* dragdrop.c: Ditto.
	(vars_of_dragrop): Ditto
	* event-Xt.c: Ditto.
	(x_event_to_emacs_event): Ditto.
	* frame.c (vars_of_frame): Ditto
	* frame-x.c: Ditto.
	(Foffix_start_drag_internal): Remove.
	(syms_of_frame_x): Remove OffiX support..
	* Makefile.in.in: Ditto.
	* event-gtk.c: Don't include OffiX headers.
	* offix.c: Remove.
	* offic.h: Remove.
	* offix-cursors.h: Remove.
	* offix-types.h: Remove.
	* text.h (Qoffix_dnd_encoding): Remove, twice.
	* depend: Regenerate.

2009-11-27  Adrian Aichner  <adrian@xemacs.org>

	* nt.c (mswindows_getdcwd): Check first whether drive is valid
	with _getdrives() to avoid crash in _wgetdcwd(...) when linking
	against msvcrt8.  This fix was taken from the Mozilla project
	which experienced the same problem.

2009-12-19  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (reject_constant_symbols):
	Indicate that accepting attempted modification of keywords is a
	temporary thing.

2009-12-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* fns.c (Fcompare_strings): Coerce bounds to be within strings.

2009-12-18  Jerry James  <james@xemacs.org>

	* ppc.ldscript: Remove, obsolete.

2009-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* events.h (character_to_event_meta_behavior): New enumeration,
	describing what character_to_event should do with characters in
	the range ?\x80-?\xFF, and passed as the third argument to
	character_to_event instead of the binary use_console_meta_flag.
	* events.c (character_to_event, Fcharacter_to_event):
	* event-unixoid.c (read_event_from_tty_or_stream_desc):
	* event-stream.c (maybe_kbd_translate, maybe_kbd_translate):
	* event-msw.c (mswindows_need_event):
	Use the new enumeration.
	* event-Xt.c (x_to_emacs_keysym):
	Call character_to_event when we receive XLookupChars events,
	passing latin_1_maps_to_itself as the meta_behavior flag,
	addressing the problem FKtPp sees in 87bpi9mwpu.fsf@yahoo.com.cn

2009-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (HASH_TABLE_DEFAULT_REHASH_THRESHOLD):
	That last change was wrong in theory though not in practice; we're
	comparing function pointers, not enumeration values.

2009-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (HASH_TABLE_DEFAULT_REHASH_THRESHOLD):
	Cast the enumeration values here to integers before comparing
	them, fixing the build on VC++. Thank you Vin!

2009-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (HASH_TABLE_DEFAULT_REHASH_THRESHOLD):
	New macro, giving a default value for a hash table's rehash
	threshold given its size and test function.
	(print_hash_table): Print the hash table's rehash threshold if it
	has a non-default value. Ditto for its rehash size.
	(Fmake_hash_table): Supply the keyword arguments in a format
	understood by #'function-arglist.

2009-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (resize_string):
	Don't attempt to free dumped data in this function, avoiding an
	assertion failure.

2009-12-13  Stephen J. Turnbull  <stephen@xemacs.org>

	* unicode.c (unicode_query): Add missing return type.
	Thanks to 'mnewsam' on the tracker.

2009-12-09  Jerry James  <james@xemacs.org>

	* config.h.in: Remove HAVE_XMU.
	* s/windowsnt.h: Ditto.
	* device-x.c: Include needed Xmu headers instead of obsolete xmu.h.
	* EmacsFrame.c: Ditto.
	* glyphs-x.c: Ditto.
	* frame-x.c: Ditto.  Always include editres code.
	* xmu.c: Removed, obsolete.
	* xmu.h: Ditto.
	* depend: Regenerate.

2010-01-01  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-charset.c (Fmake_charset):
	Don't intern the symbols used to refer to temporary character
	sets, that doesn't bring us anything.

2009-12-05  Stephen J. Turnbull  <stephen@xemacs.org>

	* faces.c (complex_vars_of_faces): Explain why "*" isn't rewritten
	as a full XLFD.

2010-01-09  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c:
	(print_hash_table, print_hash_table_data)
	(hash_table_instantiate)
	(structure_type_create_hash_table_structure_name):
	(syms_of_elhash):
	Use keywords, not ordinary symbols, in the hash table read syntax,
	for compatibility with Common Lisp and recent GNU Emacs. Accept
	the non-keyword syntax, but don't allow mixing of the two styles.

2009-11-19  Vin Shelton  <acs@xemacs.org>

	* sysdep.c (sys_subshell): Restore sys_subshell(); it's necessary
	on Windows native builds.

2009-11-10  Jerry James  <james@xemacs.org>

	* Makefile.in.in: Drop support for dynodump and OSF1.
	* alloca.s: Drop support for old systems, namely hp9000s300, wicat,
	ns16000, ns32000, sequent, pyramid, att3b5, and Xenix.
	* broken-sun.h: Remove, unused.
	* compiler.h: Drop support for OSF1.
	* config.h.in: Modify comments about obsolete systems.  Drop NeXTstep
	and SunOS4 support.
	(DYNODUMP): Removed.
	* console.h: Remove reference to NeXTstep in a comment.
	* data.c (sign_extend_temp): Removed, unused.
	(sign_extend_lisp_int): Ditto.
	* depend: Regenerate.
	* ecrt0.c: Remove reference to DONT_NEED_ENVIRON, which is not defined
	by any supported system.  Remove support for obsolete systems.  Remove
	comments that refer to obsolete systems.
	* emacs.c (main_1): Remove NeXT support.  Remove references to
	EXTRA_INITIALIZE and NO_SUBPROCESSES, which are not defined by any
	supported system.
	* faces.c (complex_vars_of_faces): Remove comment that refers to
	NeXTstep.
	* fileio.c: Drop support for ancient versions of HP/UX.
	* getloadavg.c: Remove symbols defined only by obsolete systems from
	comment at the top listing symbols of interest.  Remove support for
	obsolete systems.
	(getloadavg): Drop code blocks specific to obsolete systems.
	* getpagesize.h: Remove reference to NBPC, which is not used by any
	supported system.
	* gmalloc.c: Remove reference to GMALLOC_NEEDS_SBRK_DECL, which is not
	used by any supported system.
	* hftctl.c: Remove, used only by ancient versions of AIX.
	* hpplay.c: Remove includes for HP/UX versions less than 11.
	* libsst.h: Remove support for SunOS 4.
	* m/arm.h: Remove comment about Xenix.
	* m/ibmrs6000.h: Remove hftctl support, which is only for very old
	versions of AIX.
	* m/intel386.h: Remove references to obsolete systems.
	* m/mips.h: Ditto.
	* nsselect.m: Remove (devoid of content) NeXT support file.
	* process-unix.c: Remove references to NO_SUBPROCESSES, SKTPAIR, and
	CONNECT_NEEDS_SLOWED_INTERRUPTS, which are not defined by any
	supported system.
	* process.c: Remove reference to NO_SUBPROCESSES.
	* process.h: Ditto.
	* regex.c: Remove reference to SWITCH_ENUM_BUG, which is not defined
	by an supported system, and hence SWITCH_ENUM_CAST as well.
	* s/aix4-2.h: Merge older include files in, and drop #define/#undef
	pairs.
	* s/bsd4-3.h: Ditto.
	* s/hpux11.h: Ditto.
	* s/irix6-0.h: Ditto.
	* s/usg5-4.h: Ditto.
	* s/hpux11-shr.h: Remove references to deleted version of HP/UX.
	* s/template.h: Remove references to ancient BSD versions.
	* strcmp.c: Removed, unused.
	* strcpy.c: Ditto.
	* sunOS-fix.c: Ditto.
	* sunplay.c (init_device): Remove SunOS4.0.3 code.
	* syntax.c (scan_sexps_forward): Remove comment about Apollo, but
	leave the code the way it is, because I prefer it this way.
	* sysdep.c: Remove code guarded by preprocessor symbols that are not
	defined on any supported system, namely ISC4_0, AIXHFT, IBMRTAIX,
	NO_SUBPROCESSES, RTU, USG_JOBCTRL, USE_GETOBAUD, _CX_UX, DGUX, ultrix,
	F_SETOWN_SOCK_NEG, SET_LINE_DISCIPLINE, BROKEN_CLOSEDIR, HPUX9, and
	NeXT.
	(sys_subshell): Remove, unused.
	* sysfile.h: Remove reference to hftctl.c.
	* sysproc.h: Remove code guarded by preprocessor symbols that are not
	defined on any supported system, namely NO_SUBPROCESSES, IRIS,
	NEED_NET_ERRNO_H, and USG_JOBCTRL.
	* syssignal.h: Remove reference to NeXT.
	* systty.h: Remove support for obsolete systems.  Remove support for
	BROKEN_TIOCGWINSZ, which is no longer needed.
	* unexaix.c (unrelocate_symbols): Remove code only needed on ancient
	versions of AIX.
	* unexec.c: Remove references to COFF_ENCAPSULATE and
	SECTION_ALIGNMENT, which are not needed on any supported system.
	Remove references to obsolete systems.

	* m/7300.h:
	* m/acorn.h:
	* m/alliant-2800.h:
	* m/alliant.h:
	* m/alliant1.h:
	* m/alliant4.h:
	* m/alpha.h:
	* m/altos.h:
	* m/amdahl.h:
	* m/apollo.h:
	* m/att3b.h:
	* m/aviion.h:
	* m/celerity.h:
	* m/clipper.h:
	* m/cnvrgnt.h:
	* m/convex.h:
	* m/cydra5.h:
	* m/delta.h:
	* m/delta88k.h:
	* m/dpx2.h:
	* m/dual.h:
	* m/elxsi.h:
	* m/ews4800r.h:
	* m/gould-np1.h:
	* m/gould.h:
	* m/hp300bsd.h:
	* m/hp9000s300.h:
	* m/i860.h:
	* m/ibm370aix.h:
	* m/ibmps2-aix.h:
	* m/ibmrt-aix.h:
	* m/ibmrt.h:
	* m/iris4d.h:
	* m/iris5d.h:
	* m/iris6d.h:
	* m/irist.h:
	* m/is386.h:
	* m/isi-ov.h:
	* m/luna88k.h:
	* m/masscomp.h:
	* m/mega68.h:
	* m/mg1.h:
	* m/mips-nec.h:
	* m/mips-siemens.h:
	* m/mips4.h:
	* m/ncr386.h:
	* m/news-risc.h:
	* m/news.h:
	* m/next.h:
	* m/nh3000.h:
	* m/nh4000.h:
	* m/ns16000.h:
	* m/ns32000.h:
	* m/nu.h:
	* m/orion.h:
	* m/orion105.h:
	* m/paragon.h:
	* m/pfa50.h:
	* m/plexus.h:
	* m/pmax.h:
	* m/pyramid.h:
	* m/pyrmips.h:
	* m/sequent-ptx.h:
	* m/sequent.h:
	* m/sgi-challenge.h:
	* m/sgi3000.h:
	* m/sps7.h:
	* m/stride.h:
	* m/sun1.h:
	* m/sun2.h:
	* m/sun3-68881.h:
	* m/sun3-fpa.h:
	* m/sun3-soft.h:
	* m/sun3.h:
	* m/sun386.h:
	* m/symmetry.h:
	* m/tad68k.h:
	* m/tahoe.h:
	* m/tandem-s2.h:
	* m/targon31.h:
	* m/tek4300.h:
	* m/tekxd88.h:
	* m/tower32.h:
	* m/tower32v3.h:
	* m/ustation.h:
	* m/vax.h:
	* m/wicat.h:
	* m/xps100.h:
	* s/3700.h:
	* s/386-ix.h:
	* s/386bsd.h:
	* s/aix3-1.h:
	* s/aix3-2-5.h:
	* s/aix3-2.h:
	* s/aix4-1.h:
	* s/aix4.h:
	* s/alliant-2800.h:
	* s/alliant.h:
	* s/altos.h:
	* s/amdahl.h:
	* s/bsd386.h:
	* s/bsd4-1.h:
	* s/bsd4-2.h:
	* s/bsdos2-1.h:
	* s/bsdos2.h:
	* s/bsdos3.h:
	* s/bsdos4.h:
	* s/cxux.h:
	* s/cxux7.h:
	* s/decosf1-2.h:
	* s/decosf1-3.h:
	* s/decosf3-1.h:
	* s/decosf3-2.h:
	* s/decosf4-0.h:
	* s/dgux.h:
	* s/dgux5-4r2.h:
	* s/dgux5-4r3.h:
	* s/dgux5-4r4.h:
	* s/domain.h:
	* s/esix.h:
	* s/esix5r4.h:
	* s/ewsux5r4.h:
	* s/hpux.h:
	* s/hpux10-shr.h:
	* s/hpux10.h:
	* s/hpux8-shr.h:
	* s/hpux8.h:
	* s/hpux9-shr.h:
	* s/hpux9-x11r4.h:
	* s/hpux9.h:
	* s/hpux9shxr4.h:
	* s/iris3-5.h:
	* s/iris3-6.h:
	* s/irix3-3.h:
	* s/irix4-0.h:
	* s/irix5-0.h:
	* s/irix5-1.h:
	* s/irix5-2.h:
	* s/irix5-3.h:
	* s/isc2-2.h:
	* s/isc3-0.h:
	* s/isc4-0.h:
	* s/isc4-1.h:
	* s/linux.h:
	* s/newsos5.h:
	* s/nextstep.h:
	* s/osf1.h:
	* s/ptx.h:
	* s/riscix1-1.h:
	* s/riscix1-2.h:
	* s/riscos5.h:
	* s/rtu.h:
	* s/sco4.h:
	* s/sco5-shr.h:
	* s/sco5.h:
	* s/sunos4-0-shr.h:
	* s/sunos4-0.h:
	* s/sunos4-1-1.h:
	* s/sunos4-1-2-shr.h:
	* s/sunos4-1-2.h:
	* s/sunos4-1-3-shr.h:
	* s/sunos4-1-3.h:
	* s/sunos4-1-4-shr.h:
	* s/sunos4-1-4.h:
	* s/sunos4-1-shr.h:
	* s/sunos4-1.h:
	* s/ultrix.h:
	* s/ultrix4-3.h:
	* s/umax.h:
	* s/umips.h:
	* s/unipl5-0.h:
	* s/unipl5-2.h:
	* s/usg5-0.h:
	* s/usg5-2-2.h:
	* s/usg5-2.h:
	* s/usg5-3.h:
	* s/xenix.h:
	* unexapollo.c:
	* unexconvex.c:
	* unexelfsgi.c:
	* unexencap.c:
	* unexenix.c:
	* unexfreebsd.c:
	* unexfx2800.c:
	* unexhp9k3.c:
	* unexmips.c:
	* unexnext.c:
	* unexsni.c:
	* unexsol2.c:
	* unexsunos4.c: Removed.

2009-11-18  Stephen J. Turnbull  <stephen@xemacs.org>

	Assorted cleanups.

	* font-mgr.h (CHECKING_LANG): Remove redundant conversion.

	* font-mgr.c: Update copyright notice and author headers.
	Reorder some functions.

	* objects-xlike-inc.c (xft_find_charset_font): Check for freeing NULL.

	Implement more of fontconfig API.

	* font-mgr.c: (Ffc_default_substitute):
	(Ffc_config_substitute):
	(Ffc_font_render_prepare):
	New functions.
	(Ffc_font_match):
	Gets optional argument CONFIG.
	(Ffc_config_destroy):
	Fix a typo.

	Reimplement FCSTRLIST_TO_LISP_USING as a function.

	(FCSTRLIST_TO_LISP_USING): Removed.
	(fcstrlist_to_lisp_using): New function.
	(Ffc_config_get_config_dirs):
	(Ffc_config_get_font_dirs):
	(Ffc_config_get_config_files):
	Replace FCSTRLIST_TO_LISP_USING with fcstrlist_to_lisp_using.

	Comment cleanups.

	* objects-xlike-inc.c (charset_reporter): Document RFC 3066.
	(xft_find_charset_font): Remove obsolete comment.

2009-10-18  Stephen J. Turnbull  <stephen@xemacs.org>

	* font-mgr.h (PRINT_XFT_PATTERN):
	Cast away some warnings.

	* font-mgr.h (PRINT_XFT_PATTERN):
	* objects-x.c (x_font_instance_truename):
	* objects-xlike-inc.c (xft_find_charset_font):
	* objects.c (font_instance_truename_internal):
	Improve error checking and reporting for Xft fonts.

	* font-mgr.c (vars_of_font_mgr):
	Set xft-debug-level to 0.

2008-07-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-xlike-inc.c (charset_table): Add names and ISO 639 codes
	for Arabic, Russian, and Thai.  Regional variants are lower-cased.

2009-11-16  Stephen J. Turnbull  <stephen@xemacs.org>

	Remove C asserts from test-format-data-conversion.
	See also changes in test-harness.el and c-tests.el in tests/automated.

	* tests.c
	(Ftest_hash_tables):
	(Ftest_data_format_conversion):
	Each now collects a list of test results and returns it.
	Update docstrings.
	(DFC_INITIALIZE):
	(DFC_CHECK_LENGTH):
	(DFC_CHECK_CONTENT):
	(DFC_RESULT_PASS):
	New macros.
	(DFC_CHECK_DATA_NUL):
	(DFC_CHECK_DATA):
	Use the new macros.
	Add an argument for the test description.
	(DFC_CHECK_DATA_COND_EOL_NUL)
	(DFC_CHECK_DATA_COND_EOL)
	(DFC_CHECK_DATA_COND_MULE_NUL):
	(DFC_CHECK_DATA_COND_MULE):
	Add an argument for the test description.

2009-11-17  Stephen J. Turnbull  <stephen@xemacs.org>

	Fix issue630.

	* regex.c (regex_compile):
	Sync treatment of normal_char to GNU Emacs 22.1.
	Thanks to Aidan Kehoe for the diagnosis and suggestion.
	(print_partial_compiled_pattern):
	Avoid buffer overrun in case of /exactn/0.

2009-11-15  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c (setup_ccl_program):
	Fix the union build, thank you Robert Delius Royar.

2009-11-15  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c (CCL_CALL_FOR_MAP_INSTRUCTION): Assert that we always
	have a symbol in this macro.
	(setup_ccl_program): Ensure we're not allocating unreachable
	memory in this function; all symbols must have been resolved in a
	given CCL program before this function is called.
	(find_ccl_program): New function, return a CCL program with all
	its symbols resolved if it is valid (possibly allocating memory),
	Qnil otherwise.
	(get_ccl_program): New function, exported to other files; call
	find_ccl_program, and error if it gives nil.
	(Fccl_program_p): Call find_ccl_program from this function instead
	of implementing the bulk of it here.
	(Fccl_execute): Call get_ccl_program instead of implementing the
	bulk of it here.
	(Fccl_execute_on_string): Ditto.
	* mule-ccl.h (Vfont_ccl_encoder_alist): Remove this declaration,
	it hasn't been used in years.
	(get_ccl_program): Declare this function.
	* mule-coding.c (ccl_putprop): Use get_ccl_program on any
	specified encode or decode CCL program property.
	(fixed_width_putprop): Ditto.
	* mule-charset.c (Fmake_charset): Use get_ccl_program on any
	specified ccl-program.
	(Fset_charset_ccl_program): Ditto.

2009-11-15  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Fquote_maybe):
	Move this function here from callint.c; make it more comprehensive
	about which types are self-quoting.
	* lisp.h: Declare Fquote_maybe here, since it's now used in
	callint.c and defined in eval.c
	* callint.c (Fquote_maybe): Remove this function from this file.

2009-11-11  Stephen Turnbull  <stephen@xemacs.org>

	* darwin.h: Remove.  Functionality implemented in configure.ac.
	* config.h.in (USE_PARAM_H): New.  Used by Darwin to #define BSD.

2009-11-09  Aidan Kehoe  <kehoea@parhasard.net>

	* sysfile.h (DEFAULT_DIRECTORY_FALLBACK):
	Move the WIN32_NATIVE definition inside the #ifdef emacs
	conditional, clear up the comment after #else; thanks for the
	build failure report, Vin!
	Cast DEFAULT_DIRECTORY_FALLBACK to (const CIbyte *) by default,
	which better reflects its contents.
	* editfns.c (get_home_directory):
	* buffer.c (init_initial_directory):
	Cast DEFAULT_DIRECTORY_FALLBACK to (Ibyte *) with functions that
	take that type, now that is necessary.

2009-11-09  Jerry James  <james@xemacs.org>

	* Makefile.in.in: Remove support for malloc.c ("old" GNU malloc).  Do
	not define GNU_MALLOC, which was only used to distinguish between
	"old" and "new" GNU malloc.
	* alloc.c (malloced_storage_size): Drop support for old GNU malloc,
	and recast the remaining test in terms of SYSTEM_MALLOC.
	* config.h.in (GNU_MALLOC): Remove.
	* depend: Regenerate.
	* emacs.c (main_1): Clean up old, now irrelevant, commented-out
	preprocessor checks.  Convert GNU_MALLOC test into an equivalent
	SYSTEM_MALLOC test.
	(voodoo_free_hook): Convert GNU_MALLOC test into an equivalent
	SYSTEM_MALLOC test.
	(Fkill_emacs): Ditto.
	* gc.h: Ditto.
	* malloc.c: Remove.
	* s/sunos4-0-shr.h: Defining GNU_MALLOC is no longer necessary.

2009-11-08  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (Fsave_window_excursion, save_window_excursion_unwind):
	Remove these functions, the first was masked by
	#'save-window-excursion in window.el, and the second can be easily
	replaced with Lisp primitives.
	* bytecode.c (Bsave_window_excursion) : Don't pass
	save_window_excursion_unwind to record_unwind_protect, now the
	former is gone.
	* event-stream.c (execute_help_form):
	Ditto.

2009-11-08  Aidan Kehoe  <kehoea@parhasard.net>

	* sysfile.h (DEFAULT_DIRECTORY_FALLBACK):
	New #define, "/" on Unix and "C:\\" on Win32 native, a directory
	that should "always" be available.
	* fileio.c (Fexpand_file_name): Use DEFAULT_DIRECTORY_FALLBACK
	here, instead of conditionalising on WIN32_NATIVE.
	* editfns.c (get_home_directory):
	Use DEFAULT_DIRECTORY_FALLBACK if looking up the home directory
	fails, on both Windows and Unix.
	* buffer.c (init_initial_directory):
	Don't give a fatal error if the current directory doesn't exist,
	chdir to DEFAULT_DIRECTORY_FALLBACK instead.

2009-11-02  Stephen Turnbull  <stephen@xemacs.org>

	Fix issue145.

	* process.c: Remove abbreviated comments on exported Lisp
	variables, and point to docstrings.
	(init_process_io_handles): Allow Vdefault_network_coding_system
	and Vdefault_process_coding_system to be nil.
	(Vdefault_network_coding_system):
	(Vdefault_process_coding_system):
	Document that these variables may be nil.

2009-10-26  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in (REALPATH_CORRECTS_CASE):
	New #define, available on Darwin.
	* realpath.c (readlink_or_correct_case):
	On Darwin, use realpath(3)'s case correction to get the canonical
	case for a file; thank you Robert Delius Royar!

2009-10-16  Michael Sperber  <mike@xemacs.org>

	* buffer.c (set_buffer_internal): Synchronize the window point
	with the current point when switching to another buffer.

2009-10-11  Michael Sperber  <mike@xemacs.org>

	* event-stream.c (post_command_hook): Run `post-command-hook'
	without INHIBIT_EXISTING_PERMANENT_DISPLAY_OBJECT_DELETION -
	deleting other windows off that hook is legitimate.

2009-10-08  Jerry James  <james@xemacs.org>

	* bytecode.c (bytecode_arithop): Make divide-by-zero errors
	noncontinuable.
	* floatfns.c (arith_error2): New macro for signaling divide-by-zero.
	(ceiling_two_fixnum): Handle a value returned from a continuable error.
	(ceiling_two_bignum): Ditto.
	(ceiling_two_ratio): Ditto.
	(ceiling_two_bigfloat): Ditto.
	(ceiling_two_float): Ditto.
	(floor_two_fixnum): Ditto.
	(floor_two_bignum): Ditto.
	(floor_two_ratio): Ditto.
	(floor_two_bigfloat): Ditto.
	(floor_two_float): Ditto.
	(round_two_fixnum): Ditto.
	(round_two_bignum): Ditto.
	(round_two_ratio): Ditto.
	(round_two_bigfloat): Ditto.
	(round_two_float): Ditto.
	(truncate_two_fixnum): Ditto.
	(truncate_two_bignum): Ditto.
	(truncate_two_ratio): Ditto.
	(truncate_two_bigfloat): Ditto.
	(truncate_two_float): Ditto.
	(truncate_one_ratio): Truncating zero should result in zero.

2009-10-10  Aidan Kehoe  <kehoea@parhasard.net>

	* rangetab.c (Frange_table_type):
	Correct the docstring for this function, don't reuse that of
	Frange_table_p.

2009-10-05  Jerry James  <james@xemacs.org>

	* emacs.c (main_1): Check the return value of dup() to quiet gcc.
	* input-method-xlib.c (describe_Window): Check the return value of
	system() to quiet gcc.
	* objects-tty.c (UNUSED_IF_NEW_GC): New macro.
	(tty_finalize_color_instance): Use it to quiet gcc.
	(tty_finalize_font_instance): Ditto.
	* syntax.c (UNUSED_IF_NEW_GC): New macro.
	(uninit_buffer_syntax_cache): Use it to quiet gcc.

2009-10-05  Jerry James  <james@xemacs.org>

	* glade.c: Add GPL v2 or later notice with explicit permission of
	Bill Perry (private email).
	* gtk-glue.c: Ditto.
	* gtk-xemacs.c: Ditto.
	* gtk-xemacs.h: Ditto.
	* ui-byhand.c: Ditto.
	* ui-gtk.c: Ditto.
	* ui-gtk.h: Ditto.
	* unexfx2800.c: Fix malformed comment.

2009-10-05  Jerry James  <james@xemacs.org>

	* Makefile.in.in: Remove internal GIF object files from link.
	* dgif_lib.c: Removed.
	* gif_io.c: Removed.
	* gifrlib.h: Removed.
	* glyphs-eimage.c: Use external giflib instead of internal GIF
	support.
	(gif_instantiate_unwind): Use giflib's FreeSavedImages call
	instead of the defunct GifFree.
	(gif_read_from_memory): Adapt signature to giflib.
	(gif_error_func): Removed.
	(gif_memory_close): Removed.
	(gif_decode_error_string): New function.
	(gif_instantiate): Adapt to giflib API.
	* libinterface.h: Include external giflib header instead of
	internal GIF header.

2009-06-28  Stephen J. Turnbull  <stephen@xemacs.org>

	* Makefile.in.in (mostlyclean):
	(versionclean):
	(extraclean-noconfig):
	(extraclean):
	Clean certain build and debug products.

2009-10-01  Mike Sperber  <mike@xemacs.org>

	* frame-x.c (x_focus_on_frame): Use correct timestamp with
	XSetInputFocus.

2009-09-30  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-coding.c (fixed_width_putprop):
	Register any CCL programs, avoiding crashes described by Robert
	Delius Royar. Though it's unclear why, I'll try to investigate
	once I'm on a 32-bit Unix machine regularly again.

2009-09-29  Mike Sperber  <mike@xemacs.org>

	* minibuf.c (Ftry_completion): If the collection is a list, allow
	plain elements instead of cons cells.  (As in GNU Emacs.)

2009-09-23  Stephen Turnbull  <stephen@xemacs.org>

	* glyphs-eimage.c (png_instantiate):
	Clean up PNG handling.  Fixes crash in issue570.

	Pad eimage buffer to handle overrun in libpng (fix crash).
	Reorder libpng setup and call png_read_update_info (display
	  images with transparency correctly).
	Make background handling code prettier.
	Make comment style more consistent.
	Remove some obsolete comments and #ifdefs.

2009-09-20  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (Flist):
	(Fvector):
	(Fbit_vector):
	(Fmake_byte_code):
	(Fstring):
	* data.c (Feqlsign):
	(Flss):
	(Fgtr):
	(Fleq):
	(Fgeq):
	(Fneq):
	(Fgtr):
	(Fplus):
	(Fminus):
	(Ftimes):
	(Fdiv):
	(Fquo):
	(Fmax):
	(Fmin):
	(Flogand):
	(Flogior):
	(Flogxor):
	* editfns.c (Fsave_excursion):
	(Fsave_current_buffer):
	(Fencode_time):
	(Finsert):
	(Finsert_before_markers):
	(Fsave_restriction):
	(Fformat):
	* elhash.c (Fmake_hash_table):
	* eval.c (Fdefun):
	(Fdefmacro):
	(Fcatch):
	(Funwind_protect):
	(Fcall_with_condition_handler):
	(Ffuncall):
	(Fapply):
	(Frun_hooks):
	* fns.c (Fappend):
	(Fconcat):
	(Fvconcat):
	(Fbvconcat):
	(Fnconc):
	* print.c (Fwith_output_to_temp_buffer):
	* process.c (Fstart_process_internal):
	* window.c (Fsave_window_excursion):
	* widget.c (Fwidget_apply):
	Add argument information, in a form understood by
	#'function-arglist, to all these MANY or UNEVALLED (that is to
	say, special-operator) built-in functions.

2009-09-20  Aidan Kehoe  <kehoea@parhasard.net>

	* general-slots.h:
	* mule-coding.c (syms_of_mule_coding):
	* mule-charset.c (syms_of_mule_charset):
	Move Qfrom_unicode to general-slots.h, now it's used in more than
	one file. Fixes the native Win32 build; thank you Vin!

2009-09-19  Aidan Kehoe  <kehoea@parhasard.net>

	Move the #'query-coding-region implementation to C.

	This is necessary because there is no reasonable way to access the
	corresponding mswindows-multibyte functionality from Lisp, and we
	need such functionality if we're going to have a reliable and
	portable #'query-coding-region implementation. However, this
	change doesn't yet provide #'query-coding-region for the
	mswindow-multibyte coding systems, there should be no functional
	differences between an XEmacs with this change and one without it.

	* mule-coding.c (struct fixed_width_coding_system):
	Add a new coding system type, fixed_width, and implement it. It
	uses the CCL infrastructure but has a much simpler creation API,
	and its own query_method, formerly in lisp/mule/mule-coding.el.
	* unicode.c:
	Move the Unicode query method implementation here from
	unicode.el.
	* lisp.h: Declare Fmake_coding_system_internal, Fcopy_range_table
	here.
	* intl-win32.c (complex_vars_of_intl_win32):
	Use Fmake_coding_system_internal, not Fmake_coding_system.
	* general-slots.h: Add Qsucceeded, Qunencodable, Qinvalid_sequence
	here.
	* file-coding.h (enum coding_system_variant):
	Add fixed_width_coding_system here.
	(struct coding_system_methods):
	Add query_method and query_lstream_method to the coding system
	methods.
	Provide flags for the query methods.
	Declare the default query method; initialise it correctly in
	INITIALIZE_CODING_SYSTEM_TYPE.
	* file-coding.c (default_query_method):
	New function, the default query method for coding systems that do
	not set it. Moved from coding.el.
	(make_coding_system_1):
	Accept new elements in PROPS in #'make-coding-system; aliases, a
	list of aliases; safe-chars and safe-charsets (these were
	previously accepted but not saved); and category.
	(Fmake_coding_system_internal):
	New function, what used to be #'make-coding-system--on Mule
	builds, we've now moved some of the functionality of this to
	Lisp.
	(Fcoding_system_canonical_name_p):
	Move this earlier in the file, since it's now called from within
	make_coding_system_1.
	(Fquery_coding_region):
	Move the implementation of this here, from coding.el.
	(complex_vars_of_file_coding):
	Call Fmake_coding_system_internal, not Fmake_coding_system;
	specify safe-charsets properties when we're a mule build.
	* extents.h (mouse_highlight_priority, Fset_extent_priority,
	Fset_extent_face, Fmap_extents):
	Make these available to other C files.

2009-09-11  Aidan Kehoe  <kehoea@parhasard.net>

	* unicode.c (unicode_convert):
	Fix a bug with error sequences and very short input strings.

2009-08-31  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (For, Fand):
	Don't declare val as REGISTER in these functions, for some reason
	it breaks the non-DEBUG union build. These functions are only
	called from interpreted code, the performance implication doesn't
	matter. Thank you Robert Delius Royar!
	* eval.c (Fmultiple_value_list_internal):
	Error on too many arguments.

2009-08-24  Jerry James  <james@xemacs.org>

	* lisp.h (INT_64_BIT): define as __int64 on WIN32.
	* glyphs-eimage.c (tiff_instantiate): cast argument of
	xnew_binbytes to size_t (guaranteed to fit because of immediately
	preceding check).

2009-08-11  Aidan Kehoe  <kehoea@parhasard.net>

	* floatfns.c (ROUNDING_CONVERT, CONVERT_WITH_NUMBER_TYPES)
	(CONVERT_WITHOUT_NUMBER_TYPES, MAYBE_TWO_ARGS_BIGNUM)
	(MAYBE_ONE_ARG_BIGNUM, MAYBE_TWO_ARGS_RATIO)
	(MAYBE_ONE_ARG_RATIO, MAYBE_TWO_ARGS_BIGFLOAT)
	(MAYBE_ONE_ARG_BIGFLOAT, MAYBE_EFF, MAYBE_CHAR_OR_MARKER):
	New macros, used in the implementation of the rounding functions.
	(ceiling_two_fixnum, ceiling_two_bignum, ceiling_two_ratio)
	(ceiling_two_bigfloat, ceiling_one_ratio, ceiling_one_bigfloat)
	(ceiling_two_float, ceiling_one_float, ceiling_one_mundane_arg)
	(floor_two_fixnum, floor_two_bignum, floor_two_ratio)
	(floor_two_bigfloat, floor_one_ratio, floor_one_bigfloat)
	(floor_two_float, floor_one_mundane_arg, round_two_fixnum)
	(round_two_bignum_1, round_two_bignum, round_two_ratio)
	(round_one_bigfloat_1, round_two_bigfloat, round_one_ratio)
	(round_one_bigfloat, round_two_float, round_one_float)
	(round_one_mundane_arg, truncate_two_fixnum)
	(truncate_two_bignum, truncate_two_ratio, truncate_two_bigfloat)
	(truncate_one_ratio, truncate_one_bigfloat, truncate_two_float)
	(truncate_one_float, truncate_one_mundane_arg):
	New functions, used in the implementation of the rounding
	functions.
	(Fceiling, Ffloor, Fround, Ftruncate, Ffceiling, Fffloor)
	(Ffround, Fftruncate):
	Revise to fully support Common Lisp conventions. This means:
	-- All functions have optional DIVISOR arguments
	-- All functions return multiple values; see #'values
	-- All functions do their arithmetic with the correct number types
	according to the contamination rules.
	-- #'round and #'fround always round towards the even number
	in ambiguous cases.
	* doprnt.c (emacs_doprnt_1):
	* number.c (internal_coerce_number):
	Call Ftruncate with two arguments, not one.
	* floatfns.c (Ffloat):
	Correct this, if NUMBER is a bignum.
	* lisp.h:
	Declare Ftruncate as taking two arguments.
	* number.c:
	Provide scratch_ratio2, init it appropriately.
	* number.h:
	Make scratch_ratio2 available.
	* number.h (BIGFLOAT_ARITH_RETURN):
	* number.h (BIGFLOAT_ARITH_RETURN1):
	Correct these functions.

2009-08-11  Aidan Kehoe  <kehoea@parhasard.net>

	* bytecode.c (enum Opcode /* Byte codes */):
	Add four new bytecodes, to deal with multiple values.
	(POP_WITH_MULTIPLE_VALUES): New macro.
	(POP): Modify this macro to ignore multiple values.
	(DISCARD_PRESERVING_MULTIPLE_VALUES): New macro.
	(DISCARD): Modify this macro to ignore multiple values.
	(TOP_WITH_MULTIPLE_VALUES): New macro.
	(TOP_ADDRESS): New macro.
	(TOP): Modify this macro to ignore multiple values.
	(TOP_LVALUE): New macro.
	(Bcall): Ignore multiple values where appropriate.
	(Breturn): Pass back multiple values.
	(Bdup): Preserve multiple values.
	Use TOP_LVALUE with most bytecodes that assign anything to
	anything.
	(Bbind_multiple_value_limits, Bmultiple_value_call,
	Bmultiple_value_list_internal, Bthrow): Implement the new
	bytecodes.
	(Bgotoifnilelsepop, Bgotoifnonnilelsepop, BRgotoifnilelsepop,
	BRgotoifnonnilelsepop):
	Discard any multiple values.
	* callint.c (Fcall_interactively):
	Ignore multiple values when calling #'eval, in two places.
	* device-x.c (x_IO_error_handler):
	* macros.c (pop_kbd_macro_event):
	* eval.c (Fsignal):
	* eval.c (flagged_a_squirmer):
	Call throw_or_bomb_out, not Fthrow, now that the latter is a
	special form.
	* eval.c:
	Make Qthrow, Qobsolete_throw available as symbols.
	Provide multiple_value_current_limit, multiple-values-limit (the
	latter as specified by Common Lisp.
	* eval.c (For):
	Ignore multiple values when comparing with Qnil, but pass any
	multiple values back for the last arg.
	* eval.c (Fand):
	Ditto.
	* eval.c (Fif):
	Ignore multiple values when examining the result of the
	condition.
	* eval.c (Fcond):
	Ignore multiple values when comparing what the clauses give, but
	pass them back if a clause gave non-nil.
	* eval.c (Fprog2):
	Never pass back multiple values.
	* eval.c (FletX, Flet):
	Ignore multiple when evaluating what exactly symbols should be
	bound to.
	* eval.c (Fwhile):
	Ignore multiple values when evaluating the test.
	* eval.c (Fsetq, Fdefvar, Fdefconst):
	Ignore multiple values.
	* eval.c (Fthrow):
	Declare this as a special form; ignore multiple values for TAG,
	preserve them for VALUE.
	* eval.c (throw_or_bomb_out):
	Make this available to other files, now Fthrow is a special form.
	* eval.c (Feval):
	Ignore multiple values when calling a compiled function, a
	non-special-form subr, or a lambda expression.
	* eval.c (Ffuncall):
	If we attempt to call #'throw (now a special form) as a function,
	don't error, call #'obsolete-throw instead.
	* eval.c (make_multiple_value, multiple_value_aset)
	(multiple_value_aref, print_multiple_value, mark_multiple_value)
	(size_multiple_value):
	Implement the multiple_value type. Add a long comment describing
	our implementation.
	* eval.c (bind_multiple_value_limits):
	New function, used by the bytecode and by #'multiple-value-call,
	#'multiple-value-list-internal.
	* eval.c (multiple_value_call):
	New function, used by the bytecode and #'multiple-value-call.
	* eval.c (Fmultiple_value_call):
	New special form.
	* eval.c (multiple_value_list_internal):
	New function, used by the byte code and
	#'multiple-value-list-internal.
	* eval.c (Fmultiple_value_list_internal, Fmultiple_value_prog1):
	New special forms.
	* eval.c (Fvalues, Fvalues_list):
	New Lisp functions.
	* eval.c (values2):
	New function, for C code returning multiple values.
	* eval.c (syms_of_eval):
	Make our new Lisp functions and symbols available.
	* eval.c (multiple-values-limit):
	Make this available to Lisp.
	* event-msw.c (dde_eval_string):
	* event-stream.c (execute_help_form):
	* glade.c (connector):
	* glyphs-widget.c (glyph_instantiator_to_glyph):
	* glyphs.c (evaluate_xpm_color_symbols):
	* gui-x.c (wv_set_evalable_slot, button_item_to_widget_value):
	* gui.c (gui_item_value, gui_item_display_flush_left):
	* lread.c (check_if_suppressed):
	* menubar-gtk.c (menu_convert, menu_descriptor_to_widget_1):
	* menubar-msw.c (populate_menu_add_item):
	* print.c (Fwith_output_to_temp_buffer):
	* symbols.c (Fsetq_default):
	Ignore multiple values when calling Feval.
	* symeval.h:
	Add the header declarations necessary for the multiple-values
	implementation.
	* inline.c:
	#include symeval.h, now that it has some inline functions.
	* lisp.h:
	Update Fthrow's declaration. Make throw_or_bomb_out available to
	all files.
	* lrecord.h (enum lrecord_type):
	Add the multiple_value type here.

2009-07-31  Stephen Turnbull  <stephen@xemacs.org>

	* glyphs-gtk.c (gtk_xpm_instantiate): Image instance pixmap
	hotspot coordinates are Lisp integers; make it so.
	Thanks to Karl Kleinpaste for reporting.

2009-07-31  Stephen Turnbull  <stephen@xemacs.org>

	* config.h.in (HAVE_DBM):
	* database.c (HAVE_DBM):
	Use gdbm/ndbm.h if needed (via NDBM_H_FILE).
	Thanks to Karl Kleinpaste for the report.

2009-07-28  Stephen Turnbull  <stephen@xemacs.org>

	* faces.c (ensure_face_cachel_contains_charset):
	(add_face_cachel):
	(update_face_cachel_data):
	Fix typos in comments and otherwise improve them.

2009-07-27  Stephen J. Turnbull  <stephen@xemacs.org>

	* eval.c (debug-on-error): Document interaction with process filters.

2009-07-15 Aidan Kehoe <kehoea@parhasard.net>

	* syntax.c (complex_vars_of_syntax):
	?\012 is whitespace, as it always should have been, thank you Karl
	Kleinpaste and the Gnus team!

2009-07-11  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (undecided_canonicalize_after_coding):
	If no data have been seen, or if
	coding_stream_canonicalize_after_coding gives nil, pass back
	str->codesys, which will be of type undecided (the same as the old
	behaviour) but will reflect any CODESYS argument passed to
	make_coding_input_stream. See also the change in lisp/code-files.el

2009-06-09  Jerry James  <james@xemacs.org>

	* glyphs-eimage.c (jpeg_instantiate):
	(gif_instantiate):
	(png_instantiate):
	(tiff_instantiate): Check for integer overflow before allocating
	memory for an image.

2009-06-20  Stephen Turnbull  <stephen@xemacs.org>

	* callint.c (Finteractive): Document that (interactive) must
	appear at the "top level" of a function definition to be effective.

2009-06-14  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (For):
	* eval.c (Fand):
	* eval.c (Fif):
	* eval.c (Fwhen):
	* eval.c (Fcond):
	* eval.c (Fprogn):
	* eval.c (Fprog1):
	* eval.c (Fprog2):
	* eval.c (FletX):
	* eval.c (Flet):
	* eval.c (Fwhile):
	* eval.c (Fdefvar):
	* eval.c (Fdefconst):
	* eval.c (Frun_hooks):
	* eval.c (Frun_hooks_with_args):
	* eval.c (Frun_hooks_with_args_until_success):
	* eval.c (Frun_hooks_with_args_until_failure):
	Add arguments information, understood by #'function-arglist, to
	all these special forms, functions and macros. Remove the
	argument information that was already there that was not
	understood by #'function-arglist.

2009-06-02  Ron Isaacson  <Ron.Isaacson@morganstanley.com>

	* nt.c (mswindows_link): Fix off-by-one bug in mswindows_link:
	need to include trailing NUL in length of file name.

2009-05-18  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.29 "garbanzo" is released.

2009-03-08  Ville Skyttï¿½  <scop@xemacs.org>

	* glyphs-gtk.c (init_image_instance_from_gdk_pixmap): Apply the
	2008-03-05 change from Dominique Quatravaux here as well even
	though the code is not enabled at the moment.

2009-02-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* eval.c (skip_debugger): Fix typo in preceding comment.

2009-02-11  Jerry James  <james@xemacs.org>

	* number-gmp.c (bigfloat_to_string): Fix broken string conversion.

2009-02-10  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (Fload_internal):
	Make load-file-name-internal readonly for Lisp code; make
	load-file-name a modifiable copy.
	(init_lread):
	Initialised Vload_file_name_internal, Vload_file_name to nil on
	each post-dump start.

2009-02-02  Stephen J. Turnbull  <stephen@xemacs.org>

	* frame-x.c (x_init_frame_2): Update comment per new info from HT.

2009-02-02  Stephen J. Turnbull  <stephen@xemacs.org>

	* frame-x.c (x_init_frame_2): Placate openbox by calling
	update_frame_icon.  Suggested by Henry S. Thompson
	<ht@inf.ed.ac.uk> in <f5btz7ghm5k@hildegard.inf.ed.ac.uk>.

2009-01-31  Aidan Kehoe  <kehoea@parhasard.net>

	* unicode.c (unicode_convert):
	Correct little-endian UTF-16 surrogate handling.

2009-01-16  Aidan Kehoe  <kehoea@parhasard.net>

	* chartab.c (print_table_entry):
	Print char table values correctly, eliminating some confusion
	between symbols and strings.

2009-01-10  Aidan Kehoe <kehoea@parhasard.net>

	* objects-msw.c (mswindows_font_spec_matches_charset_stage_2):
	Accept msprinter as well as mswindows devices here.

2008-12-30  Aidan Kehoe  <kehoea@parhasard.net>

	* device-x.c (Fx_get_font_path):
	Free the font path once we're finished with it.

2008-12-28  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (Fmake_coding_system):
	Document our use of the safe-chars and safe-charsets properties,
	and the differences compared to GNU.
	(make_coding_system_1): Don't drop the safe-chars and
	safe-charsets properties.
	(Fcoding_system_property): Return the safe-chars and safe-charsets
	properties when asked for them.
	* file-coding.h (CODING_SYSTEM_SAFE_CHARSETS):
	* coding-system-slots.h:
	Make the safe-chars and safe-charsets slots available in these
	headers.

2008-12-27  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (Fbuilt_in_symbol_file):
	Return a subr's filename immediately if we've found it. Check for
	compiled function and compiled macro docstrings in DOC too, and
	return them if they exist.
	The branch of the if statement focused on functions may have
	executed, but we may still want to check variable bindings; an
	else clause isn't appropriate.

2008-12-27  Vin Shelton  <acs@xemacs.org>

	* syswindows.h: Don't define wide character interfaces for Cygwin
	1.7 and up.

2008-12-22  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fdefine_function):
	* eval.c (define_function):
	Record explicitly that we're defining a function in the load
	history, in both these files.

2008-12-22  Aidan Kehoe  <kehoea@parhasard.net>

	* faces.c (Fbuilt_in_face_specifiers):
	Document that we're returning a copy.

2008-12-21  Aidan Kehoe  <kehoea@parhasard.net>

	* faces.c (Fbuilt_in_face_specifiers):
	Don't simply warn the user not to modify
	Vbuilt_in_face_specifiers, enforce this by returning a copy of the
	list.

2008-11-02  Stephen J. Turnbull  <stephen@xemacs.org>

	G++ 4.3 complains a lot about implicit conversions of string
	literals (const char *) to char *.  Shut it up.

	* console-x.h:
	* EmacsFrame.c:
	* EmacsManager.c:
	* EmacsShell-sub.c:
	#include ../lwlib/xt-wrappers.h.
	Cast class name to String.
	Cast action names to String.
	Rewrite resources to use Xt_RESOURCE.

	* console-x.h:
	Move Xt_SET_VALUE and Xt_GET_VALUE to ../lwlib/xt-wrappers.h.

	* console-x.h (describe_XRectangle):
	* input-method-xlib.c (describe_XRectangle):
	* emacs.c (argmatch):
	* emacs.c (check_compatible_window_system):
	* emodules.c (Fload_module):
	* emodules.c (Funload_module):
	* event-stream.c (external_debugging_print_event):
	* file-coding.h (struct subsidiary_type):
	* file-coding.c (struct subsidiary_type):
	* file-coding.c (setup_eol_coding_systems):
	* file-coding.c (make_coding_system_1):
	* file-coding.c (make_internal_coding_system):
	* gif_io.c (GifErrorString:
	* gif_io.c (GetGifError):
	* input-method-xlib.c (XIM_init_frame):
	* mule-coding.c (ccl_putprop):
	* print.c (printing_major_badness):
	* redisplay.c (generate_fstring_runes):
	Declare String or char * argument or variable as const.

	* EmacsFrame.c (EmacsFrameSetCharSize):
	* EmacsShell-sub.c (update_size_hints_internal):
	* EmacsShell-sub.c (SuperClassRootGeometryManager):
	* device-x.c (emacs_options):
	* device-x.c (compute_x_app_name):
	* device-x.c (have_xemacs_resources_in_xrdb):
	* device-x.c (x_init_device):
	* event-Xt.c (x_fallback_resources):
	* event-Xt.c (widgetActionsList):
	* event-Xt.c (emacs_Xt_event_add_widget_actions):
	* frame-x.c (x_wm_set_cell_size):
	* frame-x.c (x_wm_set_variable_size):
	* frame-x.c (x_set_frame_text_value):
	* frame-x.c (x_initialize_frame_size):
	* frame-x.c (x_create_widgets):
	* frame-x.c (x_set_frame_icon):
	* frame-x.c (x_set_frame_position):
	* frame-x.c (x_update_frame_external_traits):
	* glyphs-x.c (x_redisplay_widget):
	* glyphs-x.c (update_tab_widget_face):
	* glyphs-x.c (x_widget_instantiate):
	* glyphs-x.c (x_button_instantiate):
	* glyphs-x.c (x_progress_gauge_redisplay):
	* glyphs-x.c (x_tab_control_redisplay):
	* menubar-x.c (make_dummy_xbutton_event):
	Use Xt_SET_ARG, Xt_SET_VALUE, and Xt_GET_VALUE instead of raw Xt
	equivalents.
	Declare String or char * argument or local variable as const.
	Cast string literals to char* (or equivalent).

	* input-method-xlib.c:
	Use Xt_RESOURCE.

2008-11-25  Stephen J. Turnbull  <stephen@xemacs.org>

	* elhash.c (hash_table_data_validate):
	* elhash.c (decode_hash_table_rehash_size):
	* elhash.c (decode_hash_table_rehash_threshold):
	Document side effects used in these functions.

2008-11-20  Stephen J. Turnbull  <stephen@xemacs.org>

	* console-x-impl.h (struct x_frame): Clarify comment.

2008-11-01  Stephen J. Turnbull  <stephen@xemacs.org>

	* regex.c (re_search_2): Fix at_dot by changing charpos to bytepos.
	From Julian Bradfield <18654.1143.304851.782755@krk.inf.ed.ac.uk>.

2008-11-01  Stephen J. Turnbull  <stephen@xemacs.org>

	* mule-ccl.c (ccl_driver): Fix off-by-one error.
	By Julian Bradfield in <18691.16568.526264.972026@krk.inf.ed.ac.uk>.

2008-10-25  Stephen J. Turnbull  <stephen@xemacs.org>

	* lisp.h (static_pro): Cast out a warning.
	g++ 4.3 complains about the conversion of const char to char.
	These end up in a dynarray, so we would need to define a whole new
	class of dynarray just to handle the const char stuff.

2008-08-27  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fuser_variable_p):
	(map_varalias_chain):
	Use EQ() and !EQ(), don't compare two Lisp_Objects using == and
	!=. Fixes the union build, thank you Robert Delius Royar.

2008-08-23  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Fuser_variable_p): Moved to symbols.c
	* symbols.c (Fcustom_variable_p): Moved here from custom.el.
	(user_variable_alias_check_fun): Mapper function used in
	`user-variable-p'.
	(Fuser_variable_p): Moved here from eval.c, to allow it to examine
	the variable alias chain. Expanded to check each entry in the
	variable alias chain for signs of being a user variable;
	documentation updated, noting the differences between GNU's
	behaviour and ours (ours is a little more sensible)
	(map_varalias_chain): New.
	Given a C function, call it at least once for each symbol in a
	symbol's varalias chain, signalling an error if there's a cycle,
	and returning immediately if the function returns something other
	than Qzero.
	(Fdefvaralias): Correct the use of the word "alias" in the
	docstring and in the argument name. Motivate this in a
	comment. Add support for a DOCSTRING argument, something GNU has
	too, and document this
	* gc.c (vars_of_gc): Start the docstring of
	`garbage-collection-messages' with an asterisk, to indicate that
	it's a user variable.

2008-08-09  Aidan Kehoe  <kehoea@parhasard.net>

	Integrate Romain Francoise' 2005-09-14 (pre-GPLV3) GNU change,
	which can allow much better performace with some stupid
	filesystems:
	* fileio.c (write_region_inhibit_fsync): New variable.
	(Fwrite_region): Use it to skip call to fsync.
	(syms_of_fileio): Initialize it.

2008-08-10  Aidan Kehoe  <kehoea@parhasard.net>

	* objects-xlike-inc.c (charset_table): Remove the entry for
	Vcharset_arabic_iso8859_7, thank you Robert Delius Royar.

2008-08-05  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-charset.c (complex_vars_of_mule_charset):
	Remove Vcharset_arabic_iso8859_7.
	* lisp.h: Remove Vcharset_arabic_iso8859_7.
	See commentary in lisp/mule/iso-with-esc.el for motivation.

2008-08-03  Mats Lidell  <matsl@xemacs.org>

	* config.h.in: Renamed USE_XFT_GAUGE to USE_XFT_GAUGES in sync
	with configure.ac.

2008-07-20  John Paul Wallington  <jpw@pobox.com>

	* nt.c (Fmswindows_short_file_name, Fmswindows_long_file_name):
	Remove their interactive specs; they shouldn't be called interactively.

2008-07-17  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay.c (init_redisplay):
	Don't set window-system to 'stream if running noninteractively,
	revert to the documented behaviour.

2008-07-16  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read_escape):
	Error if we're handed an over-long hex character escape, something
	which arises reasonably frequently in code written for GNU.

2008-07-07  Aidan Kehoe  <kehoea@parhasard.net>

	Patch to make it up to the device-specific code whether
	various Lisp functions should be called during device creation,
	not relying on the startup code to decide this. Also, rename
	initial-window-system to initial-device-type (which makes more
	sense in this scheme), always set it.

	* redisplay.c (Vinitial_device_type): New.
	(Vinitial_window_system): Removed.
	Rename initial-window-system to initial-device type, making it
	a stream if we're noninteractive. Update its docstring.

	* device-x.c (Qmake_device_early_x_entry_point,
	Qmake_device_late_x_entry_point): New.
	Rename Qinit_pre_x_win, Qinit_post_x_win.
	(x_init_device): Call #'make-device-early-x-entry-point earlier,
	now we rely on it to find the application class and the
	app-defaults directory.
	(x_finish_init_device): Call #'make-device-late-x-entry-point with
	the created device.
	(Vx_app_defaults_directory): Always make this available, to
	simplify code in x-init.el.

	* device-tty.c (Qmake_device_early_tty_entry_point): New.
	Rename Qinit_pre_tty_win, rename Qinit_post_tty_win and move to
	frame-tty.c as Qmake_frame_after_init_entry_point.
	(tty_init_device): Call #'make-device-early-tty-entry-point before
	doing anything.
	* frame-tty.c (Qmake_frame_after_init_entry_point): New.
	* frame-tty.c (tty_after_init_frame): Have it call the
	better-named #'make-frame-after-init-entry-point function
	instead of #'init-post-tty-win (since it's called after frame, not
	device, creation).

	* device-msw.c (Qmake_device_early_mswindows_entry_point,
	Qmake_device_late_mswindows_entry_point): New.
	Rename Qinit_pre_mswindows_win, Qinit_post_mswindows_win.
	(mswindows_init_device): Call
	#'make-device-early-mswindows-entry-point here, instead of having
	its predecessor call us.
	(mswindows_finish_init_device): Call
	#'make-device-early-mswindows-entry-point, for symmetry with the
	other device types (though it's an empty function).

	* device-gtk.c (Qmake_device_early_gtk_entry_point,
	Qmake_device_late_gtk_entry_point): New.
	Rename Qinit_pre_gtk_win, Qinit_post_gtk_win.
	(gtk_init_device): Call #'make-device-early-gtk-entry-point; don't
	load ~/.xemacs/gtk-options.el ourselves, leave that to lisp.
	(gtk_finish_init_device): Call #'make-device-late-gtk-entry-point
	with the created device as an argument.

2008-07-10  Aidan Kehoe  <kehoea@parhasard.net>

	* redisplay-msw.c (mswindows_text_width_single_run):
	Explicitly check for the null font instance, and return zero if
	so. Avoids the crash documented in
	http://mid.xemacs.org/18473.32468.712317.149457@parhasard.net .

2008-05-27  Aidan Kehoe  <kehoea@parhasard.net>

	* editfns.c (Ftranslate_region):
	Correct a thinko in the last commit; I meant #'get-char-table, not
	#'put-char-table.

2008-05-25  Aidan Kehoe  <kehoea@parhasard.net>

	* chartab.c (Fmake_char_table):
	Document the default return values for the various char table
	types.
	* editfns.c (Ftranslate_region): Document why `generic' char tables
	are preferable to `char' char tables for this function.

2008-05-21  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Fmake_symbolic_link):
	Document behaviour when the underlying OS doesn't support symbolic
	links.

2008-05-13  Aidan Kehoe  <kehoea@parhasard.net>

	* emacs.c (SHEBANG_EXE_PROGNAME_LENGTH):
	Use WEXTSTRING separately on the two concatenated strings,
	avoiding an error on Win32.

2008-05-13  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in (_CRT_NONSTDC_NO_DEPRECATE):
	Define this, to avoid warnings about using standard POSIX and C9X
	functions on Win32; fixes part of Matthew Persico's problems of
	9ea6aaa80805081832r1a3308e9wb6d2bfea7457379f@mail.gmail.com .

2008-01-20  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in: Add SHEBANG_PROGNAME.
	* emacs.c (main_1):
	If we've been called using SHEBANG_PROGNAME, rewrite our arguments
	to add a --script argument.
	Also, handle the --script argument by setting noninteractive and
	vanilla.
	* lread.c (Fload_internal):
	If the first two characters of a file are #!, replace them with ;!
	before they get to the Lisp reader.

2008-04-26  Mike Sperber  <mike@xemacs.org>

	* window.c (set_window_pixsize): Round up when we're shrinking,
	down when we're growing * to make sure that pairs of grow / shrink
	meant to * cancel out actually do cancel out.  This fixes a
	problem with `resize-minibuffer-mode' where successive grow/shrink
	actions are meant to cancel out, but previously didn't.

2008-04-05  Aidan Kehoe  <kehoea@parhasard.net>

	* depend:
	Regenerate with LF line endings, not CRLF.

2008-03-15  Michael Sperber  <mike@xemacs.org>

	* lread.c (read1): Signal an error on ?\<newline>, thus preventing
	an assertion failure higher up.

2008-03-11  Stephen J. Turnbull  <stephen@xemacs.org>

	* specifier.c (CHECK_INSTANCE_ENTRY): Fix typo in comment.

2008-03-05  Dominique Quatravaux  <domq@cpan.org>

	* glyphs-gtk.c (init_image_instance_from_gdk_image):
	(gtk_colorize_image_instance):
	Use IMAGE_INSTANCE_PIXMAP_MASK (an lvalue), not
	IMAGE_INSTANCE_GTK_MASK (an rvalue).

2008-03-05  Dominique Quatravaux  <domq@cpan.org>

	* console-gtk.c (gtk_perhaps_init_unseen_key_defaults): Fix typo.

2008-02-28  Didier Verna  <didier@xemacs.org>

	* specifier.h (struct specifier_methods): Fix instantiate_method
	prototype to match the changes below.

2008-02-26  Didier Verna  <didier@xemacs.org>

	* specifier.c (CHECK_INSTANCE_ENTRY): See below.
	* specifier.c (specifier_instance_1): Propagate the no_fallback
	flag to ...
	* specifier.c (specifier_instance_from_inst_list): ... here, and
	in turn propagate it to the <specifier>_instantiate methods.
	* glyphs.c (image_instantiate): Handle the no_fallback flag.
	* objects.c (color_instantiate): Ditto.
	* objects.c (font_instantiate): Ditto.
	* objects.c (face_boolean_instantiate): Ditto.
	* specifier.c (specifier_matching_foo_from_inst_list): Update call
	to specifier_instance_from_inst_list accordingly.

2008-02-11  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (search_buffer):
	In the event that a character is not representable in the buffer,
	fail immediately. Prevents an assertion failure in the code to
	deal with whether Boyer-Moore search can be used for such
	characters.

2008-02-03  Jerry James  <james@xemacs.org>

	* redisplay.c (generate_displayable_area): If a line has been
	generated in place in the dynarray, use Dynarr_increment instead
	of Dynarr_add.
	* redisplay.c (regenerate_window): Ditto.

2008-02-01  Jerry James  <james@xemacs.org>

	* event-Xt.c (emacs_Xt_event_handler): Remove unnecessary call to
	SET_EVENT_MAGIC_X_EVENT.  See xemacs-beta message
	<870180fe080131201011b191ae5g1d70cbd2136f570c@mail.gmail.com>.

2008-01-30  Aidan Kehoe  <kehoea@parhasard.net>

	* search.c (debug-xemacs-searches):
	New variable, available on debug builds. Used in
	tests/automated/case-tests.el.
	(search_buffer): Only store the charset_base for characters with
	translations. Correct some comments, correct some checks. If
	debug_xemacs_searches is non-zero, record which search was used.
	(boyer_moore): Remove an assertion that was incorrect. Remove its
	documentation. Correct an assertion dealing with equivalence
	tables; we may end up looking through the equivalence table if a
	non-ASCII non-case character was searched for.

2008-01-25  Michael Sperber  <mike@xemacs.org>

	* emacs.c (vars_of_emacs): Zap mention of CVS.

2008-01-24 Mike Sperber   <mike@xemacs.org>

	* make-src-depend (PrintDeps): Fix Perl code that no longer works
	with Perl 5.10.

2008-01-21  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (Fputhash): Document the return value.
	(Fclrhash): Ditto.

2007-12-26  Aidan Kehoe  <kehoea@parhasard.net>

	* casetab.c:
	Extend and correct some case table documentation.
	* search.c (search_buffer):
	Correct a bug where only the first entry for a character in the
	case equivalence table was examined in determining if the
	Boyer-Moore search algorithm is appropriate.

	If there are case mappings outside of the charset and row of the
	characters specified in the search string, those case mappings can
	be safely ignored (and Boyer-Moore search can be used) if we know
	from the buffer statistics that the corresponding characters cannot
	occur.

	* search.c (boyer_moore):
	Assert that we haven't been passed a string with varying
	characters sets or rows within character sets. That's what
	simple_search is for.

	In the very rare event that a character in the search string has a
	canonical case mapping that is not in the same character set and
	row, don't try to search for the canonical character, search for
	some other character that is in the the desired character set and
	row. Assert that the case table isn't corrupt.

	Do not search for any character case mappings that cannot possibly
	occur in the buffer, given the buffer metadata about its
	contents.

2008-01-19  Aidan Kehoe  <kehoea@parhasard.net>

	* dired.c (Ffile_attributes): If bignums are available, use them
	for the file size when necessary. If they are not, be clearer
	about the check for whether the file size can fit in a Lisp
	integer.

2008-01-18  Jerry James  <james@xemacs.org>

	* device-x.c (x_init_device): Don't write to path or read from
	format when neither has been initialized.

2008-01-16  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (internal_hash):
	Make short lists with the same contents in a different order hash
	distinctly. Gives better performance for things like three-element
	lists describing colours. Thank you Sebastian Freundt!

2008-01-15  Aidan Kehoe  <kehoea@parhasard.net>

	* print.c (prin1_to_string): New.
	The guts of Fprin1_to_string, without resetting
	Vprint_gensym_alist.
	(Fprin1_to_string):
	Call prin1_to_string, wrapped with RESET_PRINT_GENSYM calls.
	* doprnt.c (emacs_doprnt_1):
	Call prin1_to_string, not Fprin1_to_string (dos veces). Avoids an
	inappropriate reset of print-gensym-alist.

2008-01-12  Aidan Kehoe  <kehoea@parhasard.net>

	* rangetab.c (Fmap_range_table):
	Clarify docstring. (If FUNCTION doesn't touch any range-table
	entry, things will also be correct.)

2008-01-09  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	Check that __STDC_VERSION__ is defined before examining its
	value. Eliminates a Cygwin warning.

2008-01-08  Aidan Kehoe  <kehoea@parhasard.net>

	* text.h (MAX_XETCHAR_SIZE): Remove, eliminating a redefinition
	warning on Win32.
	* dumper.c (pdump_load):
	Don't use PATH_MAX_EXTERNAL, instead allocate enough for the path
	+ DUMP_SLACK (space for .dmp and version information), already
	used on Win32 and #defined to be 100.

2008-01-08  Jerry James  <james@xemacs.org>

	* config.h.in (INLINE_HEADER): adapt to C99 inline semantics.

2008-01-07  Jerry James  <james@xemacs.org>

	* xemacs.def.in.in: Clarify the copyright and license.

2008-01-03  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Fmake_temp_name): Correct the comment to cross
	reference to make-temp-file, and not to this function.

2008-01-03  Stephen J. Turnbull  <stephen@xemacs.org>

	* doc.c (Fbuilt_in_symbol_file): Improve style.

2008-01-02  Aidan Kehoe  <kehoea@parhasard.net>

	* emacs.c (main_1):
	Call the new vars_of_console_gtk function.
	* console-gtk.c (vars_of_console_gtk): New.
	* console-gtk.c (gtk_perhaps_init_unseen_key_defaults):
	Correct the initialisation of the hash table, on the model of the
	MSW and TTY builds.

2008-01-02  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (Fbuilt_in_symbol_file):
	Don't check is fun zero in the condition, check that it's not
	nil. Fixes the union build; thank you Stephen.

2008-01-02  Mike Sperber  <mike@xemacs.org>

	* window.c (set_window_pixsize): Factor in the modeline when
	looking at window_min_width.  Remove obsolete comment about
	incorrect use of `default_face_height_and_width'.
	(change_window_height): Remove obsolete comment about
	incorrect use of `default_face_height_and_width'.

2007-12-30  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (Fbuilt_in_symbol_file):
	Take a new TYPE argument, specifying whether the function or
	variable definition of the symbol should be searched for.
	Handle built-in macros correctly.

2007-12-24  Aidan Kehoe  <kehoea@parhasard.net>

	* event-xlike-inc.c (x_keysym_to_character):
	* event-xlike-inc.c (gtk_keysym_to_character):
	Unify the typed character if possible, following the current value
	for the unicode precedence list.

2007-12-24  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fintern_soft):
	Provide a new optional third argument, DEFAULT, for those who want
	to check if "nil" is a symbol or not. (More realistically, general
	code that may get handed "nil" should probably use this argument.)

2007-12-23  Aidan Kehoe  <kehoea@parhasard.net>

	* objects-tty.c (tty_find_charset_font):
	* objects-msw.c (mswindows_font_spec_matches_charset_stage_2):
	* objects-msw.c (mswindows_font_spec_matches_charset_stage_1):
	* objects-xlike-inc.c (x_font_spec_matches_charset):
	* objects-xlike-inc.c (gtk_font_spec_matches_charset):
	If the charset is not specified when calling the
	font_spec_matches_charset device method, its value is Qnil, not
	Qunbound. See
	http://mid.xemacs.org/E1EfbmW-00029r-5G@iwi191.iwi.uni-sb.de and
	Ben Wing's patch of
	http://mid.xemacs.org/439FA06B.3090007@xemacs.org.

2007-12-22  Aidan Kehoe  <kehoea@parhasard.net>

	* database.c (Fopen_database):
	Actually respect the CODESYS argument; don't require EOL
	autodetection from the coding system, because autodetection mostly
	fails with reads of small amounts of data. It might be possible
	with an implicit #'map-database on open, though I don't think
	that's a great idea.
	* database.c (print_database):
	Give the coding system used for text conversion when printing a
	database object.

2007-12-20  Jerry James  <james@xemacs.org>

	* sound.c: Fix unused parameter warnings when HAVE_ALSA_SOUND.

2007-12-18  Kenny Chien <Kenny.Chien@morganstanley.com>

	* extw-Xt.c (extw_wait_for_response): Don't use undocumented
	internal Xt functions, avoiding inconsistent behavior between
	different Solaris versions.

2007-12-18  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fspecial_form_p):
	Following commentary from Jerry James, don't error if not passed a
	subr.

	Flesh out the docstring; give details of what a subr is, what a
	special form is, and why one should probably not write special
	forms oneself.

2007-12-18  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fspecial_form_p): New.
	For the use of advice.el, and perhaps other files; is SUBR a
	special form?

2007-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (emacs_doprnt_1):
	Add support for formatted printing of both longs and bignums as
	base 2.
	* editfns.c (Fformat):
	Document the new %b escape for #'format.
	* lisp.h:
	Make ulong_to_bit_string available beside long_to_string.
	* lread.c:
	Fix a bug where the integer base was being ignored in certain
	contexts; thank you Sebastian Freundt. This is necessary for
	correct behaviour of #'integer-to-bit-vector and
	#'bit-vector-to-integer, just added to subr.el
	* print.c (ulong_to_bit_string): New.
	Analagous to long_to_string, but used all the time when %b is
	encountered, since we can't pass that to sprintf.

2007-12-12  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	Make the results of the checks for
	FcConfigGetRescanInterval, FcConfigSetRescanInterval
	available.
	* font-mgr.h:
	If FcConfigSetRescanInterval and FcConfigGetRescanInterval are not
	available as functions, #define them to map to their old
	misspelled names.
	* font-mgr.c (Ffc_config_get_rescan_interval):
	* font-mgr.c (Ffc_config_set_rescan_interval):
	Use the correct spelling in
	FcConfigGetRescanInterval, FcConfigSetRescanInterval

2007-12-11  Aidan Kehoe  <kehoea@parhasard.net>

	* glyphs-eimage.c:
	Merge Ron Isaacson's patch of
	3ggprxj7ifh.wl_Ron.Isaacson@morganstanley.com , originally from
	Gennady Khokhorin. Prevents library incompatibilities on Win32.

2007-12-11  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Fsubstitute_in_file_name):
	On encountering non-existent environment variables or incorrect
	syntax for specifying environment variables (as is routine on
	Windows) don't error, instead pass the original strings through.

2007-12-05  Stephen J. Turnbull  <stephen@xemacs.org>

	* search.c (simple_search): Fix underrun in reverse search.
	(search_buffer): Clarify decision to use boyer_moore or not.

2007-12-06  Aidan Kehoe  <kehoea@parhasard.net>

	* tests.c (Ftest_data_format_conversion):
	Move those tests that expect that iso-8859-2 is ISO
	2022-compatible to testing iso-latin-2-with-esc instead.

2007-12-02  Ron Isaacson  <ron.isaacson@morganstanley.com>

	* frame.c (change_frame_size):
	(change_frame_size_1):
	Must reset pending flag per-frame, so do it in the latter.

2007-12-04  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c:
	* file-coding.c (find_coding_system):
	C-accessible version of #'find-coding-system that doesn't
	necessarily call the autoload code, for use in
	#'autoload-coding-system (which we allow to overwrite autoloaded
	coding systems) and make_coding_system_1 (which has to).
	* file-coding.c (Ffind_coding_system):
	Move the implementation to find_coding_system; call that function
	with a do_autoloads argument of 1.
	* file-coding.c (Fautoload_coding_system):
	New.
	* file-coding.c (add_coding_system_to_list_mapper):
	When returning a list of coding systems, don't call the autoload
	code.
	* file-coding.c (make_coding_system_1):
	* file-coding.c (Fcopy_coding_system):
	* file-coding.c (syms_of_file_coding):

	Implement autoloaded coding systems. The form to be evaluated to
	load a given coding system is stored as the value in
	Vcoding_system_hash_table; this form is evaluated if
	find-coding-system is called with the symbol name of the coding
	system as its argument.

	This is also tied in with the POSIX locale infrastructure by means
	of posix-charset-to-coding-system-hash.

2007-11-29  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c (ccl_driver):
	Take out a static variable I was using for debugging.

2007-11-26  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c:
	Default to a buffer size of 350 for the sprintf call, but increase
	it if the precision and minwidth indicate that it should be
	bigger. Issue reported by Hans de Graaff; bug originally fixed by
	Sebastian Freundt in SXEmacs following the change I merged on
	2006-11-28. Forks have their disadvantages.

2007-11-11  Mats Lidell  <matsl@xemacs.org>

	* events.h: Based on SXEmacs patch. Support for mouse button 6 to
	26.
	* keymap.h: Ditto.
	* keymap.c: Ditto.

2007-11-15  Aidan Kehoe  <kehoea@parhasard.net>

	* unicode.c (coding_system_type_create_unicode):
	* unicode.c (vars_of_unicode):
	Move the initialisation of Vnumber_of_jit_charsets,
	Vlast_jit_charset_final, Vcharset_descr to an #ifdef MULE block in
	vars_of_unicode. Fixes a build failure reported by Vin
	Shelton--thank you Vin!

2007-11-14  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read_unicode_escape):
	Correct the range check for Unicode characters specified with
	source-level escapes.
	* unicode.c:
	* unicode.c (unicode_to_ichar):
	* unicode.c (coding_system_type_create_unicode):
	Correct the dump behaviour for just-in-time Unicode code
	points. Update the docstring for #'unicode-to-char to indicate
	that code points will run out above around 400,000 in a session.

2007-11-14  Aidan Kehoe  <kehoea@parhasard.net>

	* editfns.c (vars_of_editfns):
	Correct the docstring of user-full-name.
	* fileio.c:
	* fileio.c (Fmake_temp_name):
	Document that make-temp-file is available and the best approach to
	this.
	* fileio.c (Fwrite_region_internal):
	Take a new arg, MUSTBENEW, to error if the file to be written
	already exists.
	* fileio.c (auto_save_1):
	Update a call to Fwrite_region_internal to pass the new argument.
	* fileio.c (syms_of_fileio):
	Provide 'excl as a symbol, for the calls to
	write-region-internal.

2007-11-05  Didier Verna  <didier@xemacs.org>

	* glyphs.c (potential_pixmap_file_instanciator): Fix comment
	describing its behavior.
	* glyphs.c (xbm_mask_file_munging): Update semantics of file and
	mask_file arguments to reflect recent changes in
	potential_pixmap_file_instanciator (see patch below).
	* glyphs-x.c (autodetect_normalize): Update call to
	xbm_mask_file_munging to reflect the above change.
	* glyphs-gtk.c (autodetect_normalize): Ditto.

2007-10-10  Didier Verna  <didier@xemacs.org>

	* glyphs.c (potential_pixmap_file_instantiator): Make a difference
	between not being able to locate a pixmap file, and not having a
	console method to do so.
	* glyphs.c (simple_image_type_normalize): Notice that difference,
	and don't err when the method is unavailable.
	* glyphs.c (xbm_normalize): Ditto.
	* glyphs.c (xface_normalize): Ditto.
	* glyphs.c (xpm_normalize): Ditto.
	* glyphs-shared.c (shared_resource_normalize): Ditto.
	* glyphs-x.c (x_locate_pixmap_file): Recognize ~ pathnames as
	fully qualified.

2007-10-03  Didier Verna  <didier@xemacs.org>

	* faces.c (reset_face_cachels): Check for noninteractive mode in
	the assertions below, in which case the cache is unused.

2007-10-03  Didier Verna  <didier@xemacs.org>

	* faces.c (reset_face_cachels): Assert correct order of built-in
	faces additions to the face cache, as per suggestion from Aidan.

2007-10-03  Didier Verna  <didier@xemacs.org>

	Again, fix some DEFAULT_INDEX == 0 assumptions. Actually, properly
	initialize display_line structures.

	* redisplay.h (DISPLAY_LINE_INIT): New macro. Properly initialize
	the default_index field to DEFAULT_INDEX.
	* frame.c (init_frame): Use it.
	* redisplay.c (ensure_modeline_generated): Ditto.
	* redisplay.c (generate_displayable_area): Ditto.
	* redisplay.c (regenerate_window): Ditto.
	* redisplay-output.c (sync_display_line_structs): Ditto.
	* redisplay-output.c (redisplay_output_layout): Ditto.

2004-12-08  Shyamal Prasad  <shyamal@member.fsf.org>

	* editfns.c:
	* editfns.c (Fformat_time_string):
	Added documentation for %z, %g, %G and %V specifiers. This synchs
	up the set of % specifiers for format-time-string with Emacs
	21.3.1. Make copy of static buffer returned by localtime().

	* strftime.c:
	* strftime.c (strftime):
	Implemented %z, %g, %G and %V in a style similar to existing
	implementation of other specifiers.

2007-09-30  Stephen J. Turnbull  <stephen@xemacs.org>

	* search.c (Freplace_match): Improve range-checking on STRBUFFER.

2007-09-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* search.c (Freplace_match): Allow STRBUFFER to specify a
	subexpression when the source is a string.

2007-09-30  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c:
	* mule-ccl.c (CCL_CALL_FOR_MAP_INSTRUCTION):
	* mule-ccl.c (ccl_driver):
	Merge Kenichi Handa's 2004-06-12 GNU bugfix, handling EOF in
	ccl_driver correctly.

2007-09-26  Didier Verna  <didier@xemacs.org>

	More fixes similar to previous patch:

	* faces.c (reset_face_cachels): Add informative comment about the
	order of faces cache addition.
	* redisplay.h: Ditto.
	* redisplay-output.c (output_display_line): Don't rely on
	DEFAULT_INDEX being 0.
	* redisplay.c (create_string_text_block): Ditto.

2007-09-26  Didier Verna  <didier@xemacs.org>

	* gutter.c (calculate_gutter_size): Don't hardwire face index to
	0: use DEFAULT_INDEX instead.

2006-11-26  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Fcommand_execute):
	* eval.c (Feval):
	* eval.c (Ffuncall):
	Use the PROFILE_DECLARE macro instead of declaring `struct
	backtrace backtrace' by hand.
	* profile.h:
	* profile.h (PROFILE_EXIT_FUNCTION):
	* profile.h (PROFILE_ENTER_FUNCTION):
	Check do_backtrace before passing the backtrace structure to
	profile_record_about_to_call, profile_record_just_called.

2007-08-28  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c (ccl_driver):
	Revert the last change to mule-ccl.c, on objection from SL
	Baur. The change to lisp.h in the same commit sufficed.

2007-08-17  Marcus Crestani  <crestani@xemacs.org>

	* buffer.c (Fkill_buffer):
	* objects-tty.c (tty_finalize_color_instance):
	* objects-tty.c (tty_finalize_font_instance):
	* objects-tty.c (console_type_create_objects_tty):
	* syntax.c (uninit_buffer_syntax_cache): Keep functions that do
	nothing for NEW_GC instead of removing them.

2007-08-18  Vin Shelton  <acs@xemacs.org>

	* frame-msw.c (mswindows_init_frame_3): Restore extra call to
	ShowWindow so that cygwin's run command can be used to open an
	XEmacs session.  Without this, no frame appears when the XEmacs
	process starts up.

2006-10-26  Nix  <nix@esperi.org.uk>

	* dumper.c (pdump_load): Statically allocate a large enough
	exe_path for all conceivable uses. Fixes a buffer overrun.
	* text.h (MAX_XETCHAR_SIZE): Define, for PATH_MAX_EXTERNAL.

2007-08-21  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c (ccl_driver):
	Don't pass XCHAR_OR_INT an argument of which the evaluation has
	side effects; thank you Mike Fabian.
	* lisp.h:
	Redundantly, don't multiply evaluate the argument to XCHAR_OR_INT;
	this should prevent the same error in the future.

2007-08-17  Marcus Crestani  <crestani@xemacs.org>

	* mc-alloc.c (L1_INDEX):
	* mc-alloc.c (PAGE_SIZE_ALIGNMENT):
	* mc-alloc.c (set_bit):
	* mc-alloc.c (init_mc_allocator): Use EMACS_UINT with bit
	shifting.

2007-08-15  Marcus Crestani  <crestani@xemacs.org>

	* database.c (dbm_map): Add typecast.
	* database.c (dbm_get): Add typecast.
	* gc.c (gc_state_type): Declare type.
	* objects-tty.c (tty_find_charset_font): Add typecast.
	* objects-xlike-inc.c (count_hyphens): Add typecast.
	* objects-xlike-inc.c (endif): Add typecast.

2007-08-15  Marcus Crestani  <crestani@xemacs.org>

	* input-method-xlib.c (EmacsFreeXIMStyles):
	* lisp.h:
	* process-unix.c (connect_to_file_descriptor):
	* process-unix.c (create_bidirectional_pipe):
	* process-unix.c (unix_create_process):
	* process-unix.c (unix_open_network_stream):
	* process-unix.c (unix_open_multicast_group): Convert pointers to
	EMACS_INTs instead of ints.
	* vdb.c (Ftest_vdb): Print adresses as pointers.

2007-08-14  Marcus Crestani  <crestani@xemacs.org>

	* s/sol2.h: Fix for GCC lossage not needed with SunOS 5.10.

2007-08-15  Marcus Crestani  <crestani@xemacs.org>

	* buffer.c (Fkill_buffer):
	* console-tty.c (free_tty_console_struct):
	* device-gtk.c (free_gtk_device_struct):
	* device-msw.c (mswindows_delete_device):
	* device-msw.c (msprinter_delete_device):
	* device-x.c (free_x_device_struct):
	* device-x.c (x_delete_device):
	* dynarr.c (Dynarr_lisp_realloc):
	* dynarr.c (Dynarr_free):
	* elhash.c:
	* elhash.c (finalize_hash_table):
	* elhash.c (resize_hash_table):
	* elhash.c (pdump_reorganize_hash_table):
	* extents.c (gap_array_delete_marker):
	* frame-gtk.c (gtk_delete_frame):
	* frame-msw.c (mswindows_delete_frame):
	* frame-x.c (x_delete_frame):
	* glyphs.c (check_for_ignored_expose):
	* mc-alloc.c (mc_realloc_1):
	* mc-alloc.h:
	* objects-tty.c (tty_finalize_color_instance):
	* objects-tty.c (tty_finalize_font_instance):
	* objects-tty.c (console_type_create_objects_tty):
	* syntax.c:
	* syntax.c (uninit_buffer_syntax_cache):
	* vdb.c (Ftest_vdb): Remove all calls to mc_free.

2006-12-29  Nix  <nix@esperi.org.uk>

	* gc.c (recompute_need_to_garbage_collect): Avoid numeric
	overflow in percentage calculation.

2007-08-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* sunpro.c (Fut_log_text): Fix mismatched parentheses, reorganize.
	Thanks to Paul Keusemann (for a suggested patch) and Rob McMahon
	for  reporting the issue.

2007-08-08  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Feval): Fix, stick with original error messages instead
	of referring to the indirected function.

	From Sebastian Freundt's mail
	nhtfy9sitjf.fsf@muck.math.tu-berlin.de , Tue Jan 30 12:30:07 UTC
	2007; complements 18005.16378.980760.860724@parhasard.net .

	This reverts the error message when M-: (no-such-function t) RET
	is called to the old "Symbol's function definition is void: ..."
	rather than the recent "Invalid function: #<INTERNAL OBJECT ..."

2007-07-31  Mike Sperber  <mike@xemacs.org>

	* file-coding.c (undecided_convert): Kludge to prevent infinite
	recursion.
	* file-coding.c (detected_coding_system): Change default from
	raw-text to binary.

2007-08-04  Aidan Kehoe  <kehoea@parhasard.net>

	* charset.h:
	* charset.h (enum unicode_type):
	Add UNICODE_UTF_32.
	* lisp.h:
	Add Qutf_32.
	* lread.c (read_unicode_escape):
	Error on an invalid Unicode escape; error on no mapping, as GNU does.

	* mule-coding.c:
	* mule-coding.c (dynarr_add_2022_one_dimension):
	* mule-coding.c (dynarr_add_2022_two_dimensions):
	* mule-coding.c (struct iso2022_coding_stream):
	* mule-coding.c (decode_unicode_char):
	* mule-coding.c (indicate_invalid_utf_8):
	* mule-coding.c (iso2022_decode):
	* unicode.c:
	* unicode.c (struct unicode_coding_stream):
	* unicode.c (decode_unicode_char):
	* unicode.c (DECODE_ERROR_OCTET):
	* unicode.c (indicate_invalid_utf_8):
	* unicode.c (encode_unicode_char_1):
	* unicode.c (encode_unicode_char):
	* unicode.c (unicode_convert):
	* unicode.c (unicode_putprop):
	* unicode.c (unicode_getprop):
	* unicode.c (syms_of_unicode):
	Make UTF-8 and UTF-16 handling more robust; indicate error
	sequences when decoding, passing the octets as distinct from the
	corresponding ISO8859-1 characters, and (by default) writing them
	to disk on encoding. Don't accept over-long UTF-8 sequences, codes
	>= #x110000, or UTF-16 surrogates on reading in the utf-8 coding
	system; represent them as error sequences.

	Do accept code points above #x110000 in the ISO IR 196 handling,
	since we decode Unicode error sequences to "Unicode" code points
	starting at 0x200000, and will need to save them as such in
	escape-quoted. Do not accept over-long UTF-8 sequences or UTF-16
	surrogates in escape-quoted.

	This change means that when a non-UTF-8 file is opened as UTF-8,
	one change made, and immediately saved, the non-ASCII characters
	are not corrupted. In Europe, this is a distinct win.

	Add UCS-4, UTF-32 as coding systems.

2007-07-26  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c (ccl_driver):
	op is an integer, not a Lisp_Object; don't use it to temporarily
	store a Lisp_Object. This change fixes the union build; thank you
	for the report, Robert Delius Royar.

2007-07-23  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c:
	Backslash a parenthesis at the start of a line, for the sake of
	our font lock engine.

2007-07-21  Aidan Kehoe  <kehoea@parhasard.net>

	* elhash.c (struct Lisp_Hash_Table):
	* elhash.c (HTENTRY_CLEAR_P):
	* elhash.c (find_htentry):
	* elhash.h:
	* elhash.h (htentry):
	Move struct Lisp_Hash_Table, HTENTRY_CLEAR_P, struct htentry to
	elhash.h, since mule-ccl.c needs to use them. Ditto adding a
	declaration for find_htentry to elhash.h, and removing the static
	from its declaration in elhash.c

	* file-coding.c:
	Add a backslash at the beginning of a line starting with a
	parenthesis, for the sake of our font lock engine.

	* mule-ccl.c:
	* mule-ccl.c (CCL_LookupIntConstTbl):
	* mule-ccl.c (CCL_WRITE_STRING):
	* mule-ccl.c (POSSIBLE_LEADING_BYTE_P):
	Fix a bug where the charset ID of ASCII was not recognised as
	being a possible leading byte.
	* mule-ccl.c (CCL_MAKE_CHAR):
	Take Mule character arguments in the same format as GNU.
	* mule-ccl.c (CCL_DEBUG):
	* mule-ccl.c (ccl_driver):
	* mule-ccl.c (resolve_symbol_ccl_program):
	* mule-ccl.c (Fccl_execute):
	* mule-ccl.c (vars_of_mule_ccl):
	Add Dave Love's hash table lookup CCL code, which has been in GNU
	for years.

	Move mule-to-unicode to accept its argument in the same format as
	write-multibyte-character.

	Move to accepting characters as well as integers in lots of
	places; with XEmacs (and even with GNU Emacs), where the
	character-integer map is not constant from one invocation to the
	next, it makes sense for CCL programs with character literals to
	accept those literals as characters, not integers.

	If we're a debug build, allow access to ccl-program-table from
	Lisp, which can make debugging things easier.

	Take out font-ccl-encoder-alist, since it was never implemented,
	and was not ever a stellar idea.

	Provide translation-hash-table-vector, as in GNU.

2007-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* event-unixoid.c (event_stream_unixoid_create_io_streams):
	* process-unix.c (unix_init_process_io_handles):
	Cast out bogus warnings about 64-bit value truncation.

2007-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* linuxplay.c (linux_play_data_or_file): More 64-bit tweaking, and
	a typo fix.

2007-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* sysdep.h (environ): Needs to be in C_DECLS for C++ build.

2007-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* compiler.h: Try to use USED with more compilers.  Thanks, Jerry!

2007-06-22  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (restore_int):
	* eval.c (record_unwind_protect_restoring_int):
	Conditionalise the munging of a C integer into a void pointer on
	whether it's necessary at compile time, using INT_VALBITS (which
	describes how many value bits a Lisp integer has) and INTBITS
	(describing how many value bits a C integer has).

2007-05-24  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c (Feval):
	Small optimisations from Sebastian Freundt's SXEmacs work; don't
	do the unnecessary book-keeping in the trivial cases, only look
	for an indirect function if the stored function is a bound
	symbol.

2007-05-24  Aidan Kehoe  <kehoea@parhasard.net>

	* free-hook.c (check_free):
	* lisp.h:
	* lisp.h (xfree):
	Inspired by some of Sebastian Freundt's SXEmacs work, use a 64-bit
	constant on 64-bit platforms when making sure pointers haven't
	been freed twice.

2007-05-22  Ville Skyttï¿½  <scop@xemacs.org>

	* Makefile.in.in ($(LISP)/finder-inf.el): Set lisp-directory
	to $(LISP) to ensure we're working with the correct finder*.

2007-05-21  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.28 "fuki" is released.

2007-05-13  Adrian Aichner  <adrian@xemacs.org>

	* abbrev.c: Sort abbreviations by name, similar to GNU Emacs.
	* abbrev.c (write_abbrev): Losely ported from GNU Emacs.
	* abbrev.c (describe_abbrev): Ditto.
	* abbrev.c (Finsert_abbrev_table_description): Ditto.

2007-05-03  Vin Shelton  <acs@xemacs.org>

	* dumper.c (pdump): Don't close an already-closed file
	descriptor.  Patch from Steve Higham.

2007-05-17  Vin Shelton  <acs@xemacs.org>

	* linuxplay.c (linux_play_data_or_file): Fix playing sound on
	64-bit linux.  Pathc from Hans de Graaff.

2007-05-18  Stephen J. Turnbull  <stephen@xemacs.org>

	* config.h.in (ERROR_CHECK_BYTE_CODE): Alphabetize ERROR_CHECK_*.

2007-04-30  Aidan Kehoe  <kehoea@parhasard.net>

	* unicode.c:
	* unicode.c (encode_unicode_char_1):
	* unicode.c (unicode_convert):
	Support non-BMP characters in UTF-16.

2007-05-12  Aidan Kehoe  <kehoea@parhasard.net>

	* event-Xt.c (x_reset_modifier_mapping):
	* event-gtk.c (gtk_reset_modifier_mapping):
	Zero out the device's modifier map once we've freed it, to prevent
	a double free on a re-entrant call.

2007-05-01  Stephen J. Turnbull  <stephen@xemacs.org>

	* font-mgr.c (Qfontsetp): Remove unused declaration.

	* font-mgr.c (xft-version): Make it a DEFVAR_CONST_INT.

	* font-mgr.c (fc-version): New: fontconfig.h version.

2007-01-02  Aidan Kehoe  <kehoea@parhasard.net>

	* faces.c:
	* faces.c (syms_of_faces):
	* faces.c (complex_vars_of_faces):
	New symbol and corresponding specifier tag,
	x-coverage-instantiator, used to group those fonts used for their
	extensive coverage for obscure characters in x-faces.el.

2007-04-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* redisplay-x.c (separate_textual_runs_nomule): Oops.  We agreed
	that memcpy didn't work, and used it anyway.  Fix it.

2007-04-15  Stephen J. Turnbull  <stephen@xemacs.org>

	* font-mgr.c (DestroyFontsetP): New enum.
	* font-mgr.c (fontset_to_list): Add destroyp argument of that type.
	* font-mgr.c (Ffc_font_list): Add argument.
	* font-mgr.c (Ffc_font_sort): Add argument.

	* font-mgr.h (fc_config): Declare new Lisp object type.
	* font-mgr.c (print_fc_config):
	* font-mgr.c (finalize_fc_config):
	* font-mgr.c (fc_config_p):
	* font-mgr.c (Qfc_configp):
	 Implement it.
	* font-mgr.c (syms_of_font_mgr):
	* font-mgr.c (complex_vars_of_font_mgr):
	* lrecord.h (lrecord_type_fc_config):
	Initialize it.

	* font-mgr.c (fc_config_create_using): New helper function.
	* font-mgr.c (FCSTRLIST_TO_LISP_USING): New helper macro.
	* font-mgr.c (Vfc_config_weak_list): Manage references to FcConfigs.

	* font-mgr.c (Ffc_get_version):
	* font-mgr.c (Ffc_config_create):
	* font-mgr.c (Ffc_config_get_current):
	* font-mgr.c (Ffc_config_set_current):
	* font-mgr.c (Ffc_config_up_to_date):
	* font-mgr.c (Ffc_config_build_fonts):
	* font-mgr.c (Ffc_config_get_config_dirs):
	* font-mgr.c (Ffc_config_get_font_dirs):
	* font-mgr.c (Ffc_config_get_config_files):
	* font-mgr.c (Ffc_config_get_cache):
	* font-mgr.c (Ffc_config_get_rescan_interval):
	* font-mgr.c (Ffc_config_set_rescan_interval):
	* font-mgr.c (Ffc_config_app_font_add_file):
	* font-mgr.c (Ffc_config_app_font_add_dir):
	* font-mgr.c (Ffc_config_app_font_clear):
	* font-mgr.c (Ffc_config_filename):
	* font-mgr.c (Ffc_init_load_config):
	* font-mgr.c (Ffc_init_load_config_and_fonts):
	* font-mgr.c (Ffc_init):
	* font-mgr.c (Ffc_init_reinitialize):
	Implemented operations.

	* font-mgr.c (Ffc_config_destroy):
	* font-mgr.c (Ffc_config_get_blanks):
	Stub operations.

2007-04-15  Stephen J. Turnbull  <stephen@xemacs.org>

	* font-mgr.c: Update FSF copyrights.

	* font-mgr.c (print_fc_pattern): New facility for fc-pattern
	objects.  Comment on need/implementation for equal/hash.

	* font-mgr.c (build_fcapi_string): New convenience macro.
	* font-mgr.c (Ffc_name_unparse):
	* font-mgr.c (Ffc_pattern_get):
	Use it.

	* font-mgr.c (Ffc_name_parse):
	* font-mgr.c (Ffc_font_match):
	Remove incorrect comments about memory leaks.

2007-04-01  Stephen J. Turnbull  <stephen@xemacs.org>

	Thanks to OG for review  and Aidan Kehoe for useful comments.

	* redisplay-x.c (separate_textual_runs_mule): Reorganize and document.

	(separate_textual_runs):
	(separate_textual_runs_mule):
	(separate_textual_runs_xft_nomule):
	Update or add "theory of operation" header comments.

	(separate_textual_runs_xft_mule): Trailing whitespace removal.

2007-03-30   Olivier Galibert <galibert@pobox.com>

	* redisplay-x.c (separate_textual_runs_xft_mule): Create.
	(separate_textual_runs_xft_nomule): Create.
	(separate_textual_runs_mule): Create.
	(separate_textual_runs_nomule): Create.
	(separate_textual_runs): Split the ifdef mess into 4 separate
	functions and simplify each.

2007-03-26  Stephen J. Turnbull  <stephen@xemacs.org>

	* chartab.c (Fcopy_char_table): Use EQ, not ==.

2007-03-24  Olivier Galibert  <galibert@pobox.com>

	* chartab.c (Fcopy_char_table): Simplify the mirror table
	handling: never copy a mirror table, just make a new one and mark
	it dirty.  Fixes http://article.gmane.org/gmane.emacs.xemacs.beta/17353

2007-01-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* eval.c (quote):
	(function):
	* fns.c (Frequire):
	Improve docstrings.

2007-02-21  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-tty.c (tty_font_spec_matches_charset): Use Aidan's enum.

	* objects-xlike-inc.c (xft_find_charset_font): FC_WIDTH is obsolete
	and may be undefined.

	* sysdll.c (image_for_address): const cleanliness for Darwin.

	* fileio.c (Finsert_file_contents_internal): Remove unused gcpro5.

2007-02-17  Stephen J. Turnbull  <stephen@xemacs.org>

	* glyphs-eimage.c (png_instantiate_unwind): Avoid recursion.
	(png_instantiate): Initialize setjmp_buffer early, and avoid
	recursive entry to error handler.

2007-02-19  Stephen J. Turnbull  <stephen@xemacs.org>

	* specifier.c (Fdevice_matching_specifier_tag_list):
	Don't take XCDR of possible non-cons.  Avoids crash in VM introduced
	or unmasked by Aidan's 2007-02-06 patch.

	(setup_device_initial_specifier_tags): Nuke unused variable.

2007-02-18  Stephen J. Turnbull  <stephen@xemacs.org>

	Code by Mike FABIAN <mfabian@suse.de>, Takashi Iwai <tiwai@suse.de>.
	See xemacs-beta <s3thctmf46c.fsf@magellan.suse.de>.  Thanks!
	Documentation marshalled by me.

	* select-x.c (x_get_window_property):
	The buffer for property data in 32-bit format is an array of longs,
	which need not be 32-bit.  Compute residual from partial reads and
	buffer sizes correctly for sizeof(long) == 8.

	* select-common.h: Refer to documentation in select-x.c.

2007-02-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* config.h.in: Move CANNA_NEW_WCHAR_AWARE here from canna_api.c.
	Remove crufty CANNA2 define, we can't support CANNA1 (IROHA).

2007-02-06  Aidan Kehoe  <kehoea@parhasard.net>

	* specifier.c (setup_device_initial_specifier_tags):
	Fix a bug where the mswindows specifier tag was matching X11
	devices, because the format of the DEVICE_USER_SPECIFIED_TAGS list
	wasn't being respected correctly.

2007-02-06  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-charset.c (complex_vars_of_mule_charset):
	iso8859-2 is not the X11 charset registry for the iso8859-4
	charset, my mistake.

2007-02-05  Mike Sperber  <mike@xemacs.org>

	* fileio.c (Finsert_file_contents_internal): Clean up dead
	`handler' variable.

2007-01-27  Mike Sperber  <mike@xemacs.org>

	* faces.c (complex_vars_of_faces): Move declarations of fontptr
	and fonts out of #ifdef MULE, unbreaking the non-MULE Xft build.

2007-01-20  Aidan Kehoe  <kehoea@parhasard.net>

	* eval.c:
	Document in more detail what happens with byte-compilation,
	`function', and `quote'.
	* fns.c:
	Mention that `require' is evaluated both at byte-compile time and
	at runtime.

2007-01-06  Vin Shelton  <acs@xemacs.org>

	* fileio.c (check_writable): Check old-style readonly bit first.

2006-12-21  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c:
	Update the make-coding-system docstring to reflect unicode-type
	* general-slots.h:
	New symbol, unicode-type, since 'type was being overridden when
	accessing a coding system's Unicode subtype.
	* intl-win32.c:
	Backslash a few parentheses, to help fontification along.
	* intl-win32.c (complex_vars_of_intl_win32):
	Use the 'unicode-type symbol, not 'type, when creating the
	Microsoft Unicode coding system.
	* unicode.c (unicode_putprop):
	* unicode.c (unicode_getprop):
	* unicode.c (unicode_print):
	Using 'type as the property name when working out what Unicode
	subtype a given coding system is was broken, since there's a
	general coding system property called 'type. Change the former to
	use 'unicode-type instead.

2006-12-27  Malcolm Purvis  <malcolmp@xemacs.org>

	* s/linux.h: Enable SYSTEM_MALLOC on ppc64, alpha and ia64
	systems.

2006-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* faces.c (complex_vars_of_faces):
	Don't use server-side fallbacks when building with XFT support.

2006-12-06  Dr. Volker Zell  <Dr.Volker.Zell@oracle.com>

	* config.h.in: New HAVE_U_INT*_T defines.
	* database.c: Only use u_int*_t typedefs if not already
	defined.

2006-12-08  Aidan Kehoe  <kehoea@parhasard.net>

	* specifier.c (charset_matches_specifier_tag_set_p):
	A charset's entry in Vcharset_tag_lists may be nil, if, when that
	charset was created, no tags with associated charset predicates
	existed. Accept this possibility, treat it as the tag not matching
	that charset.

2006-12-11  Aidan Kehoe  <kehoea@parhasard.net>

	* event-tty.c:
	* event-tty.c (emacs_tty_event_pending_p):
	* event-tty.c (reinit_vars_of_event_tty):
	Pay attention to the dispatch event queue, and input pending
	signals in emacs_tty_event_pending_p. Makes pure TTY builds more
	responsive.

2006-12-11  Aidan Kehoe  <kehoea@parhasard.net>

	* glyphs-eimage.c (png_warning_func):
	* glyphs-eimage.c (png_instantiate):
	* glyphs-eimage.c (tiff_warning_func):
	Decode external binary data as such before passing it to
	warn_when_safe().

2006-12-09  Vin Shelton  <acs@xemacs.org>

	* sound.c (init_native_sound): Fix typo in call to GTK_DEVICE
	macro.

2006-12-07  Vin Shelton  <acs@xemacs.org>

	* fileio.c: Added cast to qxeGetNamedSecurityInfofix call to fix
	VC6 build.

2006-11-24  Benson Margulies  <benson@dchbk.us>

	* fileio.c: Change check_writable to use the full Win32 mechanism
	to check access.
	* intl-auto-encap-win32.c: Add GetNamedSecurityInfo
	* intl-auto-encap-win32.h: Add GetNamedSecurityInfo
	* intl-auto-encap-win32.h Add qxeGetNamedSecurityInfo.
	* intl-encap-win32.c: Add aclapi.h : GetNamedSecurityInfo
	* syswindows.h: Add aclapi.h

2006-12-06  Aidan Kehoe  <kehoea@parhasard.net>

	* text.c (Fsplit_char):
	Make split-char available on non-Mule builds, taking out a
	superfluous call to get-charset to make that possible.

2006-11-30  Mike Sperber  <mike@xemacs.org>

	* fileio.c (Finsert_file_contents_internal): Don't call the
	file-name handler for `insert-file-contents' from here, which is
	too late.  Instead, do it from Lisp.SSper

2006-11-29  Dr. Volker Zell  <Dr.Volker.Zell@oracle.com>

	* sysdir.h: Revert workaround missing d_ino field from 'struct
	dirent' for Cygwin as it's back in again.

2006-11-29  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-charset.c (Fset_charset_registries):
	Add an optional argument FORCE, to allow specifying badly-formed
	CHARSET_REGISTRY-CHARSET_ENCODING combinations. Re-enables the
	sort of hacks described in 96wt67fa3f.fsf@mo.msk.ru from Ilya
	Golubev.

2006-11-29  Aidan Kehoe  <kehoea@parhasard.net>

	* sound.c (init_native_sound):
	Only X11 and GTK devices can possibly not be on the console of the
	associated machine. Fixes a crash when init_native_sound is called
	on a msprinter device.

2006-11-28  Aidan Kehoe  <kehoea@parhasard.net>

	* device-x.c:
	* device-x.c (coding_system_of_xrm_database):
	Cache the last db argument and resulting coding system, and return
	them--instead of calling Lisp--if the DB is the same pointer
	arument as last time.
	* faces.c (default_face_font_info):
	* window.c (window_displayed_height):
	Behave more gracefully if called when we have no information about
	the dimensions of the default face and window.

2006-11-28  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (emacs_doprnt_1):
	Ibyte -> Ascbyte, for the sake of the MSVC build. Thank you Vin.

2006-11-28  Aidan Kehoe  <kehoea@parhasard.net>

	* doprnt.c (emacs_doprnt_1):
	Integrate Sebastian Freundt's SXEmacs bug fix for cases where a
	format specifier overflows the allocated buffer with a float
	format string.

2006-11-23  Robert Pluim  <rpluim@gmail.com>

	* sysdep.c (strlwr): Don't intermix declarations and code.
	(wcslen): ditto

2006-11-23  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-coding.c (iso2022_decode):
	Only take the lower seven bits of any eight-bit character that
	would be illegal in UTF-8, when handling ISO/IR 196 escapes.

2006-11-14  Stephen J. Turnbull  <stephen@xemacs.org>

	* buffer.c (buffer-file-name): Document invariant.
	(buffer-file-truename): Sync wording to buffer-file-name.
	Thanks to Nelson Ferreira <nelson.ferreira@ieee.org> for report
	and discussion.

2006-11-20  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c (CCL_MAKE_CHAR):
	* mule-ccl.c (ccl_driver):
	Eliminate a CCL bug with control-1 chars and
	write-multibyte-character--thank you for the report, Ilya--and
	eliminate a crash when a non-existent charset ID is specified for
	a mule-to-unicode call.

2006-11-18  Mike Sperber  <mike@xemacs.org>

	* redisplay-x.c (separate_textual_runs): Don't try to call
	ichar_to_unicode on non-MULE.

2006-11-18  Mike Sperber  <mike@xemacs.org>

	* window.c (window_pixel_height_to_char_height): Cater to the
	possibility that defheight may be 0.

2006-11-15  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-charset.c:
	* mule-charset.c (Fcharsets_in_region):
	Added a charsets-in-region implementation in C.

2006-11-14  Aidan Kehoe  <kehoea@parhasard.net>

	* objects-xlike-inc.c (x_find_charset_font):
	Move the warn_when_safe call to where GCing is irrelevant; as
	things are it doesn't GC, but I'm more comfortable without that
	being relevant.
	* specifier.c (define_specifier_tag):
	Remove a couple of lines added for the sake of debugging; add a
	GCPRO1 for the allocated vector, since the call_trapping_problems
	can GC.

2006-11-12  Aidan Kehoe  <kehoea@parhasard.net>

	* charset.h:
	* mule-charset.c (set_charset_registries):
	Provide a C-accessible version of set-charset-registries that
	doesn't error. Called from x_find_charset_font.

	* faces.c (ensure_face_cachel_contains_charset):
	Correct my spelling.

	* faces.c (update_EmacsFrame):
	Don't update the frame if it isn't live.

	* faces.h:
	Add some documentation on FACE_FONT.

	* frame-gtk.c (gtk_update_frame_external_traits):
	* frame-x.c (x_update_frame_external_traits):
	In the event that FACE_FONT has deleted the frame, don't
	manipulate it further in update_frame_external_traits.

	* mule-charset.c:

	* mule-charset.c (Fset_charset_registries):
	Don't allow XLFD wildcards in charset registries. Call the
	factored-out C-callable version instead of implementing the guts
	of the function here.

	* objects-gtk.c:
	#include "charset.h"

	* objects-xlike-inc.c (x_find_charset_font,
	gtk_find_charset_font): In the event that the charset is ASCII and
	we haven't matched anything up to now, even with a pattern of "*",
	add "iso8859-1" to the charset's registry and try again.

	* window.c (window_pixel_width_to_char_width):
	The default width of a face may be zero; only divide by it if it's
	nonzero.

2006-11-11  Aidan Kehoe  <kehoea@parhasard.net>

	* specifier.c:
	Update the specifier-matching-instance documentation to reflect
	the new format of font-specifier MATCHSPECs.

2006-11-11  Aidan Kehoe  <kehoea@parhasard.net>

	* specifier.c:
	VM calls device-matching-specifier-tag-list; my taking it out of
	non-debug builds was misjudged, this change puts it back in.  I've
	also reverted a couple of incidental and wrong whitespace changes.

2006-11-09  Aidan Kehoe  <kehoea@parhasard.net>

	* specifier.c (specifier_instance_from_inst_list):
	Accept symbols as well as charset objects as the cons of a
	font-related specifier matchspec. Thank you Ilya.

2006-11-07  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-charset.c:
	Take the Qfinal declaration out of mule-charset.c; fixes the MSVC
	build. Sorry Vin!

2006-11-06  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-charset.c (Fmake_charset):
	* objects-msw.c (mswindows_font_spec_matches_charset):
	* specifier.c (syms_of_specifier):
	Three changes to prevent the build dying with MSVC and with
	DEBUG_XEMACS turned off--thank you Vin.

2006-11-05  Aidan Kehoe  <kehoea@parhasard.net>

	* charset.h:
	Prefer the charset-registries property to the charset-registry
	property; accept the latter for compatibility, warning when its
	regexp functionality is used.

	* charset.h (XCHARSET_CCL_PROGRAM):
	* charset.h (XCHARSET_NAME):
	Make dummy versions of these available in non-Mule.

	* console-impl.h:
	* console-impl.h (struct console_methods):
	Rename the last parameter to a couple of methods; reformat their
	declarations.

	* faces.c:
	* faces.c (face_property_matching_instance):
	* faces.c (ensure_face_cachel_contains_charset):
	* faces.c (merge_face_cachel_data):
	* faces.c (reset_face_cachel):
	* faces.c (mark_face_cachels_as_not_updated):
	* faces.c (syms_of_faces):
	* faces.c (vars_of_faces):
	* faces.c (complex_vars_of_faces):
	Provide a DEBUG_FACES macro; use it to make debugging output
	available in debug builds.
	Implement multi-stage font lookup, assigning the stages names, not
	numbers.
	Re-implement the cachel->font_specified cache using the
	infrastructure for Lisp bit vectors.

	* faces.h:
	* faces.h (struct face_cachel):
	* faces.h (FACE_CACHEL_FONT_UPDATED):
	* faces.h (FACE_FONT):
	Re-implement the cachel->font_specified cache using the
	infrastructure for Lisp bit vectors.

	* font-mgr.h:
	Move some XFT debug macros here from objects-x.c.

	* general-slots.h:
	Provide a few new symbols for the multi-stage font resolution
	process.

	* intl.c (init_intl):
	Correct a comment.

	* lisp.h:
	Provide a macro to declare an inline lisp bit vector where the
	size is fixed.
	Make Qregistries available all over, not Qregistry.

	* mule-charset.c:
	* mule-charset.c (mark_charset):
	* mule-charset.c (print_charset):
	* mule-charset.c (make_charset):
	* mule-charset.c (Fmake_charset):
	* mule-charset.c (Fcharset_property):
	* mule-charset.c (Fset_charset_ccl_program):
	* mule-charset.c (syms_of_mule_charset):
	* mule-charset.c (complex_vars_of_mule_charset):
	* mule-charset.c (CHINESE_CNS_PLANE):
	Prefer the charset-registries property to the charset-registry
	property; accept the latter for compatibility, warning when its
	regexp functionality is used.

	* objects-gtk.c:
	* objects-gtk.c (gtk_font_spec_matches_charset):
	* objects-gtk.c (gtk_find_charset_font):
	* objects-msw.c (mswindows_find_charset_font):
	* objects-tty.c (tty_find_charset_font):
	Redeclare various functions to work with the multi-stage lookup
	process. Include objects-xlike-inc.

	* objects-x.c:
	Provide a DEBUG_OBJECTS macro; use it to make debugging output
	available in debug builds.

	* objects-x.c (x_initialize_font_instance):
	* objects-x.c (x_print_font_instance):
	* objects-x.c (xlistfonts_checking_charset):
	* objects-x.c (vars_of_objects_x):
	Don't regex match on the output of XListFonts; instead, use the
	fixed strings of the charset-registries to comparatively limit the
	IPC that will happen.  Include objects-xlike-inc.c

	* objects-xlike-inc.c:
	* objects-xlike-inc.c (count_hyphens):
	New. How many ASCII minus characters in a string?

	* objects-xlike-inc.c (xlistfonts_checking_charset):
	* objects-xlike-inc.c (mule_to_fc_charset):
	* objects-xlike-inc.c (xft_find_charset_font):
	* objects-x.c (x_find_charset_font):
	Move some methods here to share them with GTK.

	* objects.c (print_font_instance):
	* objects.c (font_spec_matches_charset):
	* objects.c (font_validate_matchspec):
	* objects.c (font_instantiate):
	Redeclare some methods to take enums rather than numeric stages.

	* objects.h (EXFUN):
	Make Fregexp_quote available to mule-charset.c

	* redisplay-x.c:
	* redisplay-x.c (separate_textual_runs):
	Make this slightly faster, cleaner. Make it accept a face cachel
	pointer argument, and check it as to whether a given charset
	should be translated to UCS-2 before redisplay.

	* specifier.c:
	* specifier.c (charset_matches_specifier_tag_set_p):
	* specifier.c (define_specifier_tag):
	* specifier.c (Fdefine_specifier_tag):
	* specifier.c (setup_device_initial_specifier_tags):
	* specifier.c (setup_charset_initial_specifier_tags):
	* specifier.c (specifier_instance_from_inst_list):
	* specifier.c (syms_of_specifier):
	* specifier.c (vars_of_specifier):
	* specifier.h:
	Extend specifiers to allow limiting their applicability by using
	charset predicates. Document this.
	Run indent-region on the file, at Stephen's suggestion.

	* unicode.c (unicode_to_ichar):
	* unicode.c (syms_of_unicode):
	* unicode.c (vars_of_unicode):
	Use unicode-registries, a dumped vector, as the charset-registries
	of the on-the-fly JIT charsets.

2006-11-01  Adrian Aichner  <adrian@xemacs.org>

	* sysdep.c (wcslen): Check for NULL pointer.
	* sysdep.c (strlwr): Ditto.
	* nt.c (mswindows_getdcwd): Ditto (actual cause of reported
	crash).
	* intl-win32.c (wcscmp): Ditto.
	* intl-win32.c (wcslen): Ditto.
	* intl-win32.c (wcsncpy): Ditto.
	* intl-win32.c (wcscpy): Ditto.
	* intl-win32.c (wcsdup): Ditto.
	* fileio.c (Ffile_name_directory): Return Qnil when
	mswindows_getdcwd returns NULL working directory.

2006-10-30  Malcolm Purvis  <malcolmp@xemacs.org>

	* device-x.c (x_init_device):  Look in more directories when
	searching for the locale specific app-defaults files.

2006-10-28  Aidan Kehoe  <kehoea@parhasard.net>

	* event-xlike-inc.c:
	Rework the X11 keysym support to allow the use of Cyrillic keysyms
	that are not in ISO-8859-5.

2006-10-27  Aidan Kehoe  <kehoea@parhasard.net>

	* fileio.c (Finsert_file_contents_internal) : Clarify that we
	follow a more correct but more expensive design for buffers where
	the on-disk representation doesn't correspond directly to the
	XEmacs internal representation.

2006-08-29  Stephen J. Turnbull  <stephen@xemacs.org>

	* eval.c (Fcatch): Correct syntax of `throw' in docstring.

	* cmds.c (Fforward_line): Document that return can be negative.

2006-08-11  Stephen J. Turnbull  <stephen@xemacs.org>

	* frame.c (mouse-motion-handler): Document relation to hooks.

2006-08-24  Aidan Kehoe  <kehoea@parhasard.net>

	* console-tty-impl.h (struct tty_console):
	New flag; multiple_width, specifying whether East Asian characters
	take up two columns on this terminal. The macro to access it
	expands to a constant under non-Mule, so anything conditionalising
	on it will be optimised away.

	* console-tty.c:
	* console-tty.c (tty_init_console):
	Initialise tty_con->multiple_width; zero on non-Mule, one on Mule.

	* console-tty.c (Fconsole_tty_multiple_width): New.
	* console-tty.c (Fset_console_tty_multiple_width): New.
	* console-tty.c (syms_of_console_tty): Make them available outside
	console-tty.c.

	* redisplay-tty.c (tty_text_width):
	* redisplay-tty.c (tty_output_ibyte_string):
	Check that the relevant console has multiple-width characters
	before using something other than the number of characters in a
	string for the text width of that string.

	* text.c:
	* text.c (ibyte_string_displayed_columns):
	* text.c (ichar_string_displayed_columns):
	Remove some Mule conditionals; add some sanity-checking.

2006-08-23  Aidan Kehoe  <kehoea@parhasard.net>

	* syntax.c (complex_vars_of_syntax):
	Guillemets are now punctuation, not parentheses. AucTeX does this,
	and it's infinitely less annoying if you're dealing with German
	text or mixed German and French.

2006-08-03  Jerry James  <james@xemacs.org>

	* keymap.c (where_is_recursive_mapper): Use the freshly allocated
	storage instead of leaking it.

2006-08-06  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (Fsnarf_documentation):
	Add an assertion and a comment, rather than crashing in the
	76584th call of hash_string when someone's using a DOC file that
	doesn't conform to format.

2006-08-05  Aidan Kehoe  <kehoea@parhasard.net>

	* syntax.c (complex_vars_of_syntax):
	String literals are char[], not unsigned char[]. Cast them when
	passing to a function that takes UExtbyte *.

2006-08-05  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c (read_unicode_escape):
	Refactor this code out from read_escape, since it's now called
	from read_string as well.
	* lread.c (read_escape):
	Call read_unicode_escape instead of using inline code,
	* lread.c (read_string):
	Refactor out from read1, provide raw and honor_unicode options.
	* lread.c (read_raw_string):
	Added, a function that calls read_string with the correct
	arguments for a raw string.
	* lread.c (read1):
	Pass raw strings to read_raw_string; pass strings to read_string.

2006-08-04  Aidan Kehoe  <kehoea@parhasard.net>

	* event-tty.c (emacs_tty_next_event):
	Check dispatch_event_queue for pending events, since we add to
	that in drain_tty_devices(). Fixes dropped key sequences on TTY
	builds.

2006-08-04  Aidan Kehoe  <kehoea@parhasard.net>

	* syntax.c (Fsyntax_table_p):
	Make the docstring better reflect the code.
	* syntax.c (define_standard_syntax):
	Take a const UExtbyte * as the first argument, not a const char *

	* syntax.c (complex_vars_of_syntax):
	Use a macro instead of repeating code; don't redundantly set the
	syntax of the alphanumeric characters to ?w; define syntax for
	Latin 1 characters here instead of in Lisp; guillemets are string
	delimiters, not parentheses.


2006-07-18  Marcus Crestani  <crestani@xemacs.org>

	* .cvsignore: Add .dbxrc.in and .gdbinit.in.

2006-07-18  Marcus Crestani  <crestani@xemacs.org>

	* gc.c (kkcc_backtrace): Print adresses as pointers.
	* vdb-posix.c (vdb_fault_handler): Print adresses as pointers.

2006-07-18  Marcus Crestani  <crestani@xemacs.org>

	* alloc.c: Fix typo in string_direct_data_description.

2006-07-07  Jerry James  <james@xemacs.org>

	* sound.c (init_native_sound): Make the target of a strcpy be
	exactly the right size to hold the copied string.

2006-07-08  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h:
	* redisplay.c (add_octal_runes):
	* syntax.h:
	* text.c
	Change some comments to reflect a 21-bit character space.
	* text.c (non_ascii_valid_ichar_p):
	Check that no character value is greater than 2^^21, not
	2^^19. This fixes the Mule build when error-checking is turned on.

2006-07-08  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fsubr_name):
	Use the CHECK_SUBR macro instead of the GNU code's explicit if
	statement.

2006-07-08  Aidan Kehoe  <kehoea@parhasard.net>

	* charset.h:
	Move to 7 bits instead of 5 for the first field of a character.

2006-07-07  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in:
	Don't declare inline macros as `extern' if we're building a
	standalone program, because their extern definitions in inline.c
	are unlikely to be included.

2006-06-24  Stephen J. Turnbull  <stephen@xemacs.org>

	* gc.c (gc_mark_root_set): Quiet GCC 4 whining about unused values.

2006-06-29  Jerry James  <james@xemacs.org>

	* scrollbar-gtk.c (gtk_free_scrollbar_instance): Compare
	instance->scrollbar_data against NULL before using it.
	* scrollbar-msw.c (mswindows_free_scrollbar_instance): Compare
	sb->scrollbar_data against NULL before using it.

2006-06-22  Jerry James  <james@xemacs.org>

	* redisplay-gtk.c (gtk_output_display_block): Fix a Dynarr leak.
	Don't create the buffer if there is nothing to do.
	* redisplay-msw.c (mswindows_output_display_block): Ditto.
	* redisplay-output.c (redisplay_output_layout): Ditto.
	* redisplay-tty.c (tty_output_display_block): Ditto.
	* redisplay-x.c (x_output_display_block): Ditto.

2006-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* font-mgr.c (extract_fcapi_string):
	(fc_intern):
	(Ffc_name_parse):
	(Ffc_name_unparse):
	(Ffc_pattern_add):
	(Ffc_pattern_del):
	(Ffc_pattern_get):
	(string_list_to_fcobjectset):
	fc_intern and extract_fcapi_string should return
	[const] Extbyte *.  Make it so, update callers.

2006-05-26  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_initialize_font_instance):
	(x_font_instance_truename):
	(charset_table):
	(x_find_charset_font):
	Pander to GCC4 signed character paranoia.

2006-06-19  Jerry James  <james@xemacs.org>

	* device-x.c (x_IO_error_handler): Do not dereference d if it is
	NULL.
	* dialog-x.c (dbox_selection_callback): Ensure f is non-NULL, then
	dereference it, not the other way around.
	* emacs.c (main_1): restart is always 0 here.
	* extents.c (detach_all_extents): Call extent_list_delete_all with
	a non-NULL parameter only.
	* glyphs-widget.c (widget_query_geometry): Guard against possibly
	NULL width and height.
	* window.c (change_window_height): Restore use of CURCHARSIZE
	removed by 2006-06-16 change, to preserve the abstraction.

2006-06-19  Jerry James  <james@xemacs.org>

	* frame-x.c (x_set_frame_properties): Remove casts to silence GCC
	warnings about a missing sentinel.

2006-06-16  Jerry James  <james@xemacs.org>

	* dgif_lib.c (DGifCloseFile): Do not dereference GifFile before
	checking if it is NULL.  Also fix a memory leak.
	* fileio.c (Finsert_file_contents_internal): Remove dead code.
	* input-method-xlib.c (XIM_SetGeometry): Do not dereference f or
	xic before checking if they are NULL.
	* md5.c (Fmd5): Check whether Lstream_read encountered an error.
	* nas.c (Err): Fix a memory leak.
	* scrollbar-x.c (x_free_scrollbar_instance): Do not dereference
	instance->scrollbar_data before checking if it is NULL.
	* text.c (eicmp_1): Move assertions to before the point where they
	must be true for correctness.
	* vdb-posix.c (vdb_fault_handler): Guard against a return from
	ABORT().
	* window.c (change_window_height): Skip always true comparison in
	the expansion of CURCHARSIZE.

2006-06-16  Jerry James  <james@xemacs.org>

	* alloc.c: Don't add MODULE_DEFINABLE_TYPE_COUNT to
	countof (lrecord_implementations_table); the latter is already big
	enough.

2006-06-18  Aidan Kehoe  <kehoea@parhasard.net>

	* event-xlike-inc.c:
	Add support for three publishing keysyms with clear Unicode
	mappings. They would have been included in my commit of 2005-06-26
	had Markus Kuhn known about them.

2006-06-13  Jerry James  <james@xemacs.org>

	* lisp-union.h: Cast away bit restrictions on values retrieved
	from the Lisp_Object union.

2006-06-14  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c:
	Don't declare ccl-program as a symbol here, leave that to
	general-slots.h.
	* unicode.c (unicode_to_ichar):
	Use qxesprintf, not snprintf, change some types to allow
	complilation on Win32.

2006-06-03  Aidan Kehoe  <kehoea@parhasard.net>

	* charset.h:
	* charset.h (struct Lisp_Charset):
	* charset.h (CHARSET_ENCODE_AS_UTF_8):
	* charset.h (XCHARSET_ENCODE_AS_UTF_8):
	Add a flag `encode-as-utf-8' to the Mule charset structure; if
	set, it's an indication to ISO 2022-oriented coding systems that
	the characters of that charset should be encoded using the ISO-IR
	196 UTF-8 escape syntax, since they're not members of any other
	well-known character set we're aware of.

	Make enum unicode_type, encode_unicode_char and Funicode_to_char
	available outside of unicode.c

	* lread.c:
	* event-xlike-inc.c:
	Use the charset.h declaration of Funicode_to_char, don't declare
	it ourselves.

	My XFree86 installation has taken to passing me ASCII characters
	using the Unicode keysyms; accept them too.

	* general-slots.h:
	Make `ccl-program' and `encode-as-utf-8' available as symbols
	generally.

	* mule-ccl.c:
	Add CCL_MuleToUnicode, CCL_UnicodeToMule, implement them, enable
	and debug CCL_MAKE_CHAR, have CCL_WriteMultibyteChar2 segfault
	less, fix some grammar.

	* mule-charset.c (make_charset):
	* mule-charset.c (Fmake_charset):
	* mule-charset.c (Fcharset_property):
	* mule-charset.c (complex_vars_of_mule_charset):
	Require the encode_as_utf_8 property when calling make_charset ();
	accept it when creating a charset from Lisp in Fmake_charset.

	* mule-coding.c:
	* mule-coding.c (dynarr_add_2022_one_dimension):
	* mule-coding.c (dynarr_add_2022_two_dimensions):
	Add two convenience functions for iso2022_decode, to abstract out
	writing UTF-8 a little.

	* mule-coding.c (enum iso_esc_flag):
	Add one more state to reflect the existence of the UTF-8 escape.

	* mule-coding.c (struct iso2022_coding_stream):
	Add a counter variable to the state to permit handling
	variable-length UTF-8.

	* mule-coding.c (parse_iso2022_esc):
	Update the function to work with ISO_STATE_UTF_8; only the ESC % @
	escape is processed in that state, everything else is ignored and
	passed through by the error handler.

	* mule-coding.c (iso2022_decode):
	* mule-coding.c (iso2022_designate):
	* mule-coding.c (iso2022_encode):
	Handle the UTF-8 escape sequences in reading and in writing ISO
	2022.

	* redisplay-x.c (separate_textual_runs):
	Add a comment to the effect that the dimension stuff breaks when
	using CCL programs and registries to map to a bigger charset.

	* unicode.c:
	Add support for creating new characters on the fly as unknown
	Unicode code points are encountered.

	* unicode.c (get_free_codepoint): New.
	* unicode.c (unicode_to_ichar): Reworked to create new code points
	on the fly.
	* unicode.c (Funicode_to_char): Update the docstring.
	* unicode.c (struct unicode_coding_system):
	Move enum unicode_type into charset.h.

	* unicode.c (encode_unicode_char):
	encode_unicode_char isn't static any longer, mule-coding.c uses
	it.
	* unicode.c (syms_of_unicode):
	Make a couple of symbols available to unicode.c
	* unicode.c (vars_of_unicode):
	Tell the garbage collector about current_jit_charset, initialise
	it.

2006-05-25  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_find_charset_font): Keep local names local; wrap
	the spurious declaration in a block, don't move it.

2006-05-25  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (output_bytes_in_ascii_and_hex):
	I installed GCC 4.0 (which may not even have been necesssary,
	-pedantic might have done it) and it showed me that the problem my
	last commit intended to address was in eistr_ext rather than
	stderr_out.

2006-05-16  Andrey Slusar  <anrays@gmail.com>

	* objects-x.c (x_find_charset_font): Fix build with gcc 2.95.

2006-05-23  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (output_bytes_in_ascii_and_hex):
	Fix a Win32 build failure introduced by my last commit.

2006-05-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* .gdbinit.in: Moved to etc.
	* .dbxrc.in: Moved to etc.

2006-05-20  Stephen J. Turnbull  <stephen@xemacs.org>

	* tests.c (Ftest_data_format_conversion): Fix no-mule autodetect
	bugs.  Update FSF copyright.

2006-05-23  Aidan Kehoe  <kehoea@parhasard.net>

	* frame-x.c (x_set_frame_properties):
	Check that the frame is live and that the device is not being
	deleted before attempting anything.  Avoids calling X code if
	x_IO_error_handler has seen a broken pipe.

2006-05-22  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c (output_bytes_in_ascii_and_hex):
	Pass stderr_out internally-formatted data, don't use an external
	format.

2006-05-21  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c (extract_object_file_name):
	* doc.c (unparesseuxify_doc_string):
	Leave sufficient space for the '\0' sentinel when reading into the
	buffer.  The bug in unparesseuxify_doc_string had been there for
	ten years at least, but it was Fabrice Popineau's investigation of
	the code on the same model in extract_object_file_name that
	provoked its discovery.  Thank you Fabrice!

2006-05-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.27 "fiddleheads" is released.

2006-02-27  Joachim Schrod  <jschrod@acm.org>

	* mule-coding.c (iso2022_detect): Handle Latin-1 encoded files
	that have several high-byte chars in a row.

2006-05-08  Jerry James  <james@xemacs.org>

	* number.c (Fcanonicalize_number): Use EMACS_INT instead of int,
	which fixes bignum arithmetic on 64-bit platforms.
	* number.h (bignum_fits_emacs_int_p): New macro.
	* number.h (bignum_to_emacs_int): New macro.

2006-03-30  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_initialize_font_instance):
	Ensure that duplicative X font gets freed if we have an Xft font.
	Remove some redundant debug output.
	Comment on frequency of calls to this function.

2006-05-08  Stephen J. Turnbull  <stephen@xemacs.org>

	* EmacsShell-sub.c (RootGeometryManager):
	Change garbage to useful messages under DEBUG_GEOMETRY_MANAGEMENT.
	Based on a suggestion by Francois L'Archeveque.

2006-05-02  Stephen J. Turnbull  <stephen@xemacs.org>

	* doc.c (extract_object_file_name): Fix buffer overrun.

2006-04-30  Stephen J. Turnbull  <stephen@xemacs.org>

	Move geometry management from EmacsFrameResize to x_set_frame_size.
	Should fix "metacity maximization" bug.
	Provide (deprecated, temporary) backward compatibility option.

	* EmacsFrame.c (EmacsFrameResize):
	* frame-x.c (x_set_frame_size):
	Move call of EmacsManagerChangeSize.
	Don't bogusly notify WM about size changes the WM asked for.

	* console-x.c (wedge-metacity): New builtin Boolean Lisp variable.
	* console-x-impl.h (wedge_metacity): Declare C variable.
	* console-x.c (vars_of_console_x): New function to initialize it.
	* symsinit.h (vars_of_console_x): declare it.
	* emacs.c (main_1): Call vars_of_console_x.

	* EmacsFrameP.h (struct EmacsFrame):
	* EmacsManager.c (EmacsManagerChangeSize):
	* EmacsShell-sub.c (SuperClassRootGeometryManager):
	* console-x-impl.h (wedge_metacity):
	Various comments, some improved documentation, mostly sad comments
	on the state of the art of Xt programming.

	* frame-x.c (defi): #undef it.  (Random code cleanliness.)

2006-05-06  Aidan Kehoe  <kehoea@parhasard.net>

	* lisp.h (struct Lisp_Subr):
	Document that prompt, doc, and name should not be char *.
	* symbols.c (Fsubr_name):
	Cast name to const Ibyte * before returning it.
	* sysfile.h:
	Make versions of DIRECTORY_SEP, IS_DIRECTORY_SEP and IS_ANY_SEP
	available to make-docfile and other non-emacs processes on win32.

2006-04-30  Stephen J. Turnbull  <stephen@xemacs.org>

	* font-mgr.c (string_list_to_fcobjectset): Remove debugging output.

2006-04-29  Aidan Kehoe  <kehoea@parhasard.net>

	* symbols.c (Fsubr_name): New.
	Taken from the FSF. Needed to find the real name of a possibly
	aliased subr, in order to get its docstring.
	* sysfile.h:
	Make various file name primitives available to make-docfile and
	other non-emacs environments; define a constant that says how long
	a source filename can be in lib-src/DOC.

2006-04-29  Aidan Kehoe  <kehoea@parhasard.net>

	* doc.c:
	* doc.c (extract_object_file_name):
	* doc.c (get_object_file_name):
	* doc.c (Fbuilt_in_symbol_file):
	Support saving and recovering the source file name of a built-in
	symbol (that is, one created in C.)

2006-04-29  Aidan Kehoe  <kehoea@parhasard.net>

	* lread.c:
	* lread.c (read_escape):
	Support \uABCD and \U00ABCDEF for specifying characters by their
	Unicode code point.

2006-04-25  Stephen J. Turnbull  <stephen@xemacs.org>

	Repair busted commit, plus some gratuitous doc improvements.

	* emacs.c (main_1): Initialize display_use to NULL for clarity.

	* objects-x.c (x_color_list):
	(x_initialize_font_instance):
	(x_font_instance_truename):
	(x_find_charset_font):
	* font-mgr.h (Qfc_font_name_encoding):
	Qxft_font_name_encoding -> Qfc_font_name_encoding.

	* console.h (header comment):
	* font-mgr.c (vars_of_font_mgr):
	* redisplay.c (Vwindow_system):
	Improve comments.

2006-04-22  Jerry James  <james@xemacs.org>

	* event-stream.c (copy_command_builder): Also copy the console.

2006-04-23  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	* data.c:
	* data.c (Fconsp):
	* data.c (Flistp):
	Take on board feedback from Stephen on my last change; move the
	explanation of what a cons is to the cons docstring, add cross
	references to that from the consp and atomp docstrings.

2006-04-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* Makefile.in.in (x_objs): Change xft-fonts.o to font-mgr.o.

2006-04-17  Stephen J. Turnbull  <stephen@xemacs.org>

	* config.h.in: New symbol HAVE_FONTCONFIG.

2006-04-22  Stephen J. Turnbull  <stephen@xemacs.org>

	Rename xft-fonts.{c,h} to font-mgr.{c,h}.

	* font-mgr.c:
	* emacs.c:
	* symsinit.h:
	(syms_of_font_mgr):
	(vars_of_font_mgr):
	(reinit_vars_of_font_mgr):
	(complex_vars_of_font_mgr):
	Renamed from *_xft_fonts versions.

	* font-mgr.c:
	* inline.c:
	* objects-x.c:
	Update #includes and comments to refer to font-mgr.h.
	N.B. The feature provided by objects-x.c is still "xft-fonts",
	which is separate from the font management by fontconfig (from
	font-mgr.*).

2006-04-15  Stephen J. Turnbull  <stephen@xemacs.org>

	* console-x.h (<X11/Xft/Xft.h>): Don't cater to Xft v.1.

2006-04-17  Stephen J. Turnbull  <stephen@xemacs.org>

	* unicode.c: Improve comment on to/from_unicode table design.

2006-04-18  Jerry James  <james@xemacs.org>

	* alsaplay.c: Explicitly include ALSA's version.h for older
	versions of the library.  Thanks to Ilya Golubev.

2006-04-16  Aidan Kehoe  <kehoea@parhasard.net>

	* data.c (Fconsp):
	* data.c (Fsymbolp):
	* data.c (Fcar):
	* data.c (Flistp):
	* data.c (Fsetcar):
	* data.c (Fsetcdr):
	* data.c (Flss):
	* data.c (Fgtr):
	Short docstring clarifications to make life easier for people who
	are learning Lisp; explain what a cons is in the consp docstring,
	what a symbol is in the symbolp docstring, and so forth. Thank you
	Alan Mackenzie on emacs-devel.
	Expand on "monotonically increasing" and "monotonically
	decreasing" in the Flss and Fgtr docstrings.

2006-04-10  Jerry James  <james@xemacs.org>

	* alsaplay.c: Support pre-1.0.10 versions of the ALSA library.

2006-03-23  Tony Bennett  <tbennett@nvidia.com>

	* process-unix.c (unix_send_process): Reduce timeout for
	Faccept_process_output to 10ms.  This dramatically speeds up many
	functions that read from processes, eg, inferior interpreter
	processes as in ilisp or python-mode.

2006-03-31  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.26 "endive" is released.

2006-03-30  Adrian Aichner  <adrian@xemacs.org>

	* lisp.h (Dynarr_add): Add local variable imp to avoid VC6
	internal compiler error.

2006-03-26  Marcus Crestani  <crestani@xemacs.org>

	* gc.c: Remove functions for explicitly-freed statistics
	(the need to explicitly free went away with the asynchronous
	finalization patch).
	* gc.c (struct gc_state): EMACS_INT -> double, remove
	explicitly-freed statistics.
	* gc.c (Fgc_stats): Remove explicitly-freed statistics.
	* gc.c (PL): Use make_float.
	* gc.h: Remove prototypes and macros for explicitly-freed
	statistics.

2006-03-24  Jerry James  <james@xemacs.org>

	* alsaplay.c: New file providing support for sound with ALSA.
	* config.h.in: New symbol HAVE_ALSA_SOUND
	* sound.c: Add ALSA support.

2006-03-27  Mike Fabian  <mfabian@suse.de>

	* vdb-posix.c (vdb_install_signal_handler): Correct memset.

2006-03-26  Marcus Crestani  <crestani@xemacs.org>

	* alloc.c (malloc_warning): Move function into scope of
	MALLOC_END, add MALLOC_END.
	* alloc.c (memory_full): Add memory shortage indication, adjust
	error messages.
	* mc-alloc.c: Add memory_shortage.
	* mc-alloc.c (expand_heap): If memory is short, allocate only the
	needed pages, not more.
	* mc-alloc.h: Add memory_shortage.

2006-03-26  Marcus Crestani  <crestani@xemacs.org>

	* alloc.c (make_uninit_string): Use set_lispstringp_direct.
	* lisp.h (set_lispstringp_direct): New.

2006-03-21  Marcus Crestani  <crestani@xemacs.org>

	* mc-alloc.c (visit_all_used_page_headers):
	* mc-alloc.c (finalize_page_for_disksave):
	* mc-alloc.c (mc_finalize_for_disksave):
	* mc-alloc.c (sweep_page):
	* mc-alloc.c (mc_sweep):
	* mc-alloc.c (protect_heap_page):
	* mc-alloc.c (protect_heap_pages):
	* mc-alloc.c (unprotect_heap_page):
	* mc-alloc.c (unprotect_heap_pages):
	* mc-alloc.h: Return number of pages processed.
	* vdb.c (vdb_start_dirty_bits_recording): Adjust size of
	page_fault_table to its upper bound (= number of pages that
	contain BLACK objects) in advance, to avoid malloc in the signal
	handler.

2006-03-24  Stephen J. Turnbull  <stephen@xemacs.org>

	* file-coding.c (decode-coding-region, encode-coding-region):
	Convert to interactive commands, and adjust docstrings.

2006-03-21  Malcolm Purvis  <malcolmp@xemacs.org>

	* regex.c: Bump INIT_FAILURE_ALLOC and re_max_failures to the
	current values found in GNU Emacs.

2006-03-20  Marcus Crestani  <crestani@xemacs.org>

	* dynarr.c (Dynarr_realloc): Malloc correct size.
	* lisp.h: Dynamic array cleanup, remove duplicate code.

2006-03-17  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_font_instance_truename):
	Eliminate bogus pointer to nowhere.

2006-03-09  Jerry James  <james@xemacs.org>

	* profile.h (RETURN_UNGCPRO_EXIT_PROFILING): Add missing do.

2006-03-02  Marcus Crestani  <crestani@xemacs.org>

	* gc.c (show_gc_cursor_and_message): New.
	* gc.c (remove_gc_cursor_and_message): New.
	* gc.c (gc_prepare): Move mouse pointer code to
	show_gc_cursor_and_message.
	* gc.c (gc_finish): Move mouse pointer code to
	remove_gc_cursor_and_message.
	* gc.c (gc): Call show/remove_gc_cursor_and_message.
	* gc.c (garbage_collect_1): Call
	show/remove_gc_cursor_and_message.

2006-02-22  Marcus Crestani  <crestani@xemacs.org>

	Asynchronous finalization:

	* Makefile.in.in: Remove mc-alloc, replace with newgc.
	* alloc.c (alloc_lrecord): Add object that has a finalizer
	to Vall_finalizable_objs.
	* alloc.c (noseeum_alloc_lrecord): Add object that has a finalizer
	to Vall_finalizable_objs.
	* alloc.c (alloc_lrecord_array): Add object that has a finalizer
	to Vall_finalizable_objs.
	* alloc.c (free_lrecord): Disable manual free.
	* dumper.c (pdump_register_object): Objects with finalizers cannot
	be dumped.
	* eval.c (Ffuncall): Add call to run_finalizers.
	* gc.c (finalize_elem): New.
	* gc.c (add_finalizable_object): New.
	* gc.c (register_for_finalization): New.
	* gc.c (gc_finalize): Call register_for_finalization.
	* gc.c (gc_1): Move kkcc_gc_stack_free after finalization.
	* gc.c (common_init_gc_early): Add asynchronous finalization
	variables.
	* gc.c (init_gc_early): Add asynchronous finalization variables.
	* gc.c (vars_of_gc): Add asynchronous finalization variables.
	* gc.h: Add asynchronous finalization prototypes.
	* mc-alloc.c (finalize_heap): Remove.
	* mc-alloc.c (mc_free): Disable manual free.

	* elhash.c (finalize_hash_table): Remove unneeded finalizer for
	NEW_GC
	* extents.c (finalize_extent_info): Remove unneeded finalizer for
	NEW_GC.
	* file-coding.c (finalize_coding_system): Remove unneeded
	finalizer for NEW_GC.
	* gui.c (finalize_gui_item): Remove unneeded finalizer.
	* specifier.c (finalize_specifier): Remove unneeded finalizer for
	NEW_GC.

	Merge #ifdef MC_ALLOC into #ifdef NEW_GC, remove no longer needed
	MC_ALLOC specific code in all files:
	* alloc.c:
	* buffer.c:
	* bytecode.c:
	* bytecode.h:
	* config.h.in:
	* console-stream.c:
	* console.c:
	* dumper.c:
	* dumper.h:
	* elhash.c:
	* emacs.c:
	* event-msw.c:
	* event-stream.c:
	* extents.c:
	* extents.c:
	* faces.h:
	* file-coding.c:
	* gc.c:
	* glyphs.h:
	* lisp.h:
	* lrecord.h:
	* lstream.c:
	* marker.c:
	* mc-alloc.c:
	* mc-alloc.h:
	* opaque.c:
	* print.c:
	* ralloc.c:
	* specifier.c:
	* symbols.c:
	* symeval.h:
	* symsinit.h:
	* tests.c:
	* xemacs.def.in.in:

2006-02-26  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.25 "eggplant" is released.

2006-02-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* syntax.c: Move static functions in syntax_cache page to top.

2006-02-19  Stephen J. Turnbull  <stephen@xemacs.org>

	Fix crash (cf. Holger Schauer <yxz7j7xzk97.fsf@gimli.holgi.priv>).
	Improve nomenclature (some identifiers were misnamed with
	"syntax_table" although they are purely related to syntax cache).
	Add lots of comments explaining logic and use of arguments.

	* syntax.c (setup_syntax_cache):  Fix broken logic that
	initialized prev_change and next_change members to Qnil for syntax
	caches associated with buffers, triggering an assertion because
	the update functions expect those members to markers.

	* syntax.c (signal_syntax_cache_extent_changed):
	* syntax.c (reset_buffer_syntax_cache_range):
	Rename reset_buffer_cache_range to reset_buffer_syntax_cache_range.

	* lisp.h (signal_syntax_cache_extent_changed):
	* syntax.c (signal_syntax_cache_extent_changed)
	* syntax.c (update_syntax_cache):
	* extents.c (signal_single_extent_changed):
	Rename signal_syntax_table_extent_changed to
	signal_syntax_cache_extent_changed.

	* lisp.h (signal_syntax_cache_extent_adjust):
	* syntax.c (signal_syntax_cache_extent_adjust):
	* insdel.c (buffer_delete_range, buffer_insert_string_1):
	Rename signal_syntax_table_extent_adjust to
	signal_syntax_cache_extent_adjust.

	* syntax.h (update_syntax_cache): Fix typo in comment.

2006-02-16  Marcus Crestani  <crestani@xemacs.org>

	* xgccache.c (gc_cache_lookup): Remove "Cache full" warning.

2006-01-21  Marcus Crestani  <crestani@xemacs.org>

	* mc-alloc.c (init_mc_allocator): Cygwin claims to have a 64k
	page size, add it.

2006-01-20  Rick Rankin <rrankin1424-xemacs@yahoo.com>

	* sysdir.h: Workaround missing d_ino field from 'struct dirent'.

2006-01-19  Marcus Crestani  <crestani@xemacs.org>

	* dynarr.c (Dynarr_realloc): Determine size of memory region to
	copy correctly, fix types.
	* dynarr.c (Dynarr_lisp_realloc): Determine size of memory region
	to copy correctly.
	* dynarr.c (Dynarr_resize): Call Dynarr_realloc with number of
	elements instead of memory region size.

2006-01-19  Marcus Crestani  <crestani@xemacs.org>

	* objects-x.c (x_find_charset_font): Add cast to fix C++ build.

2005-11-25  Mike Sperber  <mike@xemacs.org>

	* nt.c (init_mswindows_environment): Add EMACSEARLYPACKAGES,
	EMACSLATEPACKAGES, EMACSLASTPACKAGES.

	* config.h.in:
	(PATH_EARLY_PACKAGE_DIRECTORIES, PATH_LATE_PACKAGE_DIRECTORIES)
	(PATH_LAST_PACKAGE_DIRECTORIES): Add.

	* paths.h.in:
	(PATH_EARLY_PACKAGE_DIRECTORIES, PATH_LATE_PACKAGE_DIRECTORIES)
	(PATH_LAST_PACKAGE_DIRECTORIES): Add.

	* emacs.c: Add Vconfigure_early_package_directories,
	Vconfigure_late_package_directories,
	Vconfigure_last_package_directories.
	(complex_vars_of_emacs): Set them.

2005-12-25  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c:
	* alloc.c (malloc_warning):
	* alloc.c (MALLOC_BEGIN):
	* alloc.c (FREE_OR_REALLOC_BEGIN):
	Revert the alloc warning bugfix, in response to Stephen's mail
	87acepzl6e.fsf@tleepslib.sk.tsukuba.ac.jp .

2005-12-24  Aidan Kehoe  <kehoea@parhasard.net>

	* objects-x.c (x_font_instance_truename):
	* objects-x.c (x_find_charset_font):
	Reintroduce my change of 2005-12-20 and Stephen's of 2005-12-23,
	which my last commit overrode.

2005-12-24  Aidan Kehoe  <kehoea@parhasard.net>

	* event-Xt.c:
	Add two new lisp variables, x-us-keymap-description and
	x-us-keymap-first-keycode to better provide a fallback to the US
	layout with keyboards where typing the Roman alphabet and those
	punctuation symbols that have command bindings associated with
	them is difficult.
	* event-Xt.c (x_event_to_emacs_event):
	Use those two Lisp variables to improve Russian C-x processing.
	* event-stream.c (command_builder_find_leaf):
	Make a comment more readable.

2005-12-24  Aidan Kehoe  <kehoea@parhasard.net>

	* alloc.c (MALLOC_BEGIN):
	Assert that we're either not in malloc, or warning about memory
	being low.
	* alloc.c (MALLOC_WARNING_BEGIN, MALLOC_WARNING_END):
	Add two clauses to set and clear a flag that we're in a low-memory
	warning situation.
	* alloc.c (malloc_warning):
	Move it after the definition of MALLOC_WARNING_BEGIN,
	MALLOC_WARNING_END

2005-12-24  Aidan Kehoe  <kehoea@parhasard.net>

	* objects-gtk.c (MAX_FONT_COUNT):
	* objects-x.c (MAX_FONT_COUNT): Increase MAX_FONT_COUNT from 5000
	to INT_MAX. Applies to both the X and GTK platforms.

2005-12-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_find_charset_font): More mule-ization.

2005-12-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_font_instance_truename): Mule-ize handling of
	font name (Xft names are UTF-8).  Fixes crash.

2005-12-20  Aidan Kehoe  <kehoea@parhasard.net>

	* objects-x.c (x_find_charset_font):
	Return Qnil on no match, not Qunbound. Fixes performance issues
	based on the use of this return value in
	objects.c:font_instantiate

2005-12-18  Aidan Kehoe  <kehoea@parhasard.net>

	* syntax.c (charset_syntax):
	* syntax.c (update_just_this_syntax_table):
	* syntax.c (complex_vars_of_syntax):
	To my embarrassment, my previous change didn't actually work. This
	change makes
	    (char-syntax (make-char 'chinese-cns11643-1 50 50))
	give ?w, the expected result after the last change.

2005-12-18  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.24 "dandelion" is released.

2005-12-14  Malcolm Purvis  <malcolmp@xemacs.org>

	* console.c (stuff_buffered_input): Compile body only if
	HAVE_TTY.

2005-12-18  Aidan Kehoe  <kehoea@parhasard.net>

	* chartab.c (Fmake_char_table):
	Set the default character class to word, not whitespace.

2005-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* buffer.c:
	standard-syntax-table and standard-category-table are not
	available from Lisp any more, don't mention as Lisp variables.

2005-12-17  Aidan Kehoe  <kehoea@parhasard.net>

	* console-x.c (x_perhaps_init_unseen_key_defaults):
	If the key name is a single character, and the keysym is NoSymbol,
	give it a default binding, if that is possible. This addresses the
	problem Zhang Wei points out in <871x118lc4.fsf@gmail.com>
	* event-Xt.c (x_to_emacs_keysym):
	Print the characters of a keysym's name directly if it's printable
	ASCII, or as an octal escape if it's not.

	Use keyboard-coding-system rather than undecided for decoding the
	keysym name passed to us by an input method.
	* file-coding.c (vars_of_file_coding):
	Document that keyboard-coding-system is also used for X11.

2005-11-29  Marcus Crestani  <crestani@xemacs.org>

	* xemacs.def.in.in: Condition error_check_* symbols on
	ERROR_CHECK_TYPES.

2005-11-29  Stephen J. Turnbull  <stephen@xemacs.org>

	* xemacs.def.in.in (error_check_cons, error_check_ldap):
	(error_check_opaque_ptr, error_check_pgconn, error_check_pgresult):
	(error_check_string, wrap_record_1, XINT_1): Add.  Patch by Rick
	Rankin <20051129041305.35172.qmail@web61022.mail.yahoo.com>.

2005-11-29  Stephen J. Turnbull  <stephen@xemacs.org>

	* xemacs.def.in.in (lrecord_uid_counter): Add it.  Patch by Rick
	Rankin <20051120054349.52906.qmail@web61019.mail.yahoo.com>.

2005-11-26  Stephen J. Turnbull  <stephen@xemacs.org>

	* dumper.c: Move comment to where it apparently belongs.

2005-11-27  Marcus Crestani  <crestani@xemacs.org>

	* lrecord.h: Remove NEWGC junk.

2005-11-27  Stephen J. Turnbull  <stephen@xemacs.org>

	Build fixes and dead code removal.

	* xft-fonts.c (Ffc_pattern_destroy): Delete.
	(syms_of_xft_fonts): Delete Ffc_pattern_destroy and comment out
	Fxft_name_unparse.

	* objects-x.c (DECLARE_DEBUG_FONTNAME): Renamed improved
	SET_DEBUG_FONTNAME.  Remove redundant debug level checks.

2004-12-19  Stephen J. Turnbull  <stephen@xemacs.org>

	* keymap.c (Fwhere_is_internal): Rewrite docstring.

2005-11-26  Stephen J. Turnbull  <stephen@xemacs.org>

	Merge Xft.

    2005-11-25  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c: Improve comments.

    2005-11-25  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.h:
	* xft-fonts.c:
	* redisplay-x.c:
	Remove or comment out dead code.

    2005-11-25  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_find_charset_font): Encapsulate debug print in macro.

    2005-11-25  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.h:
	* xft-fonts.c:
	* objects-x.c:
	Xft font names are encoded in UTF-8 (Qxft_font_name_encoding).

    2005-11-06  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.h:
	* xft-fonts.c:
	Substitute new *LCRECORD* macros for #ifdef MC_ALLOC.

    2005-09-10  Clemens Fruhwirth  <clemens@endorphin.org>

	* glyphs-x.c (update_widget_face): Wrap error checking of rf in an
	#ifdef USE_XFT.

    2005-09-25  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_initialize_font_instance): Must encode extname
	twice, Qxft_font_name_encoding != Qx_font_name_encoding.

    2005-09-25  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_finalize_font_instance): Add newline to message.

    2005-09-24  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_find_charset_font): Give user more control of
	debug verbosity.  Reduce verbosity at debug_xft=1.  Reduce
	verbosity of truename by removing properties that are rarely
	specified from fontconfig font name.

    2005-09-24  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_find_charset_font): Work around buggy return
	value in FcInit().

    2005-09-24  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c: Improve various header comments.
	(x_font_instance_truename): Remove obsolete #ifdef 0 code.

    2005-09-06  Stephen J. Turnbull  <stephen@xemacs.org>

	* console-x-impl.h (struct x_frame): Rewrite comment.

	* redisplay-x.c (x_output_string):
	* frame-x.c (x_delete_frame):
	Improve style, let compiler optimize.

    2005-09-05  Daniel Pittman <daniel@rimspace.net>

	* console-x-impl.h (struct x_frame): New member xftDraw.
	(FRAME_X_XFTDRAW): Accessor for xftDraw member.

	* redisplay-x.c (x_output_string): Lazily initialize frame's
	xftDraw member, and don't destroy it here.

	* frame-x.c (x_delete_frame): Destroy xftDraw here.

    2005-08-17  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.c (Ffc_pattern_create): Improve docstring, remove todo.
	(fc_intern): Add todo.

    2005-08-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.c (finalize_fc_pattern): New static function.
	Add it to lcrecord implementation of fc_pattern.

	* xft-fonts.c (Ffc_pattern_destroy): Disable with #if 0.

    2005-08-03  Stephen J. Turnbull  <stephen@xemacs.org>

	-- Minor cleanups. --

	* xft-fonts.c (Ffc_font_real_pattern):
	Update FIXME at top.
	(Ffc_font_sort):
	(Ffc_font_match):
	Improve docstrings.

	* xft-fonts.c (Ffc_pattern_destroy):
	Partially protect against double frees.

	-- Eliminate Lisp fc_fontset objects. --

	* xft-fonts.c (fontset_to_list): New helper function.
	(Ffc_list_fonts_pattern_objects):
	(Ffc_font_sort):
	Made to use `fontset_to_list' and return list.  Updated docstrings.

	* xft-fonts.h (struct fc_pattern): Removed fc_fontset member.
	(fc_fontset): Removed struct and lrecord declarations and typedef.
	(XFCFONTSET):
	(wrap_fcfontset):
	(FCFONTSETP):
	(CHECK_FCFONTSET):
	(CONCHECK_FCFONTSET):
	(XFCFONTSET_PTR):
	Removed macros.

	* xft-fonts.c (fcfontset_description):
	(fc_fontset):
	(Ffc_fontset_p):
	(Ffc_fontset_count):
	(Ffc_fontset_destroy):
	(Ffc_fontset_ref):
	Removed unused functions.
	(fcpattern_description): Removed fc_fontset member.
	(Ffc_pattern_create):
	(Ffc_name_parse):
	(Ffc_pattern_duplicate):
	(Ffc_pattern_destroy):
	(Ffc_font_match):
	(Ffc_font_real_pattern):
	Removed reference to fc_fontset member.
	(syms_of_xft_fonts): Removed DEFSYMBOLs, DEFSUBRs for fc_fontset.

	* lrecord.h (enum lrecord_type): Removed lrecord_fc_fontset.
	Removed indicies, which depended on #ifdefs so can't be accurate.

    2005-07-31  Daniel Pittman  <daniel@rimspace.net>

	* xft-fonts.c: Update Ffc_list_fonts_pattern_objects to use the
	FontConfig API nicely, preventing it from rebuilding the list of
	available fonts on *every* access.

    2005-06-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.c: MC_ALLOC-ify.
	* xft-fonts.h: MC_ALLOC-ify.

    2005-04-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.c:  Improve comment on property name hash table.

	(Ffc_list_fonts_pattern_objects):
	(Ffc_font_sort):
	(reinit_vars_of_xft_fonts):
	Call FcInit only once in reinit_vars_of_xft_fonts.

	(Ffc_list_fonts_pattern_objects):
	(Ffc_font_sort):
	Signal error if returned FcFontSet object is NULL.

	(string_list_to_fcobjectset): Use fc_intern.

	* objects-x.c ():  Move declaration of `name' out of #ifdef.

    2005-04-14  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.c (fc_intern): val is const.
	(xft_get_color): Use dead_wrong_type_argument.

	* objects-x.c (Qxft_font_name_encoding): New documentary #define.
	(truename_via_XListFonts): Improve comments.

	Followup on Aidan's partial cleanup/Mulization.

	* objects-x.c (DEBUG_XFT0):
	(DEBUG_XFT1):
	(DEBUG_XFT2):
	(PRINT_XFT_PATTERN):
	(CHECKING_LANG):
	Move to top of font object block.
	(DEBUG_XFT3):
	(DEBUG_XFT4):
	New.
	(x_initialize_font_instance):
	(x_finalize_font_instance):
	Use them.

	(x_font_instance_truename): Comment complaint about structure.
	Clarify variable usage by moving declaration inside block.

	(x_find_charset_font):  Clarify block structure by eliminating
	early returns.  Remove bogus "must free" comments.  Free FcPattern
	objects that were leaking.  Use block structure to indicate
	lifetimes of FcPattern objects.  Use "font" rather than "pattern"
	in names of FcPatterns that name fonts rather than search
	criteria.  Use shortnames more consistently in debug messages.
	#ifdef shortname vs longname return values.  Correct comment to
	note that FcCharSets are Unparsed to ASCII.  Don't ever fall
	through to X core fonts if we had an Xft font (it should be NULL
	anyway).  Use Qxft_font_name_encoding; this means we have to parse
	FONT separately for Qx_font_name_encoding.

    2005-04-10  Stephen J. Turnbull  <stephen@xemacs.org>

	Xft/fontconfig assumes that strings used as object names are
	statically allocated.  Implement a hash table to keep track of
	them:

	* xft-fonts.c (reinit_vars_of_xft_fonts): Initialize hash table.
	(fc_intern):
	New static functions.

	(fc_property_name_hash_table):
	(fc_standard_properties):
	New static variables.

	* symsinit.h (reinit_vars_of_xft_fonts): Declare it.

	* emacs.c (main_1): Call it.  Reorder complex_vars_of_xft_fonts.

	Renaming and reorganization:

	* xft-fonts.c: Group FcPattern stuff separately from FcFontSet in
	preparation for removing latter from LISP visibility.  Use
	"pattern" for Lisp_Objects, reserve "fcpat" for FcPatterns.
	Similarly change "object" to "property".

	(Ffc_pattern_destroy):
	(Ffc_fontset_destroy):
	Deprecate these; they should not be LISP-visible.

	(Ffc_pattern_print): Removed.

	(extract_fcapi_string): Make this a macro, because
	in C "inline" is a hint.  But this _must_ be a macro because it
	implicitly uses alloca.

    2005-04-09  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.c (fc-pattern-get-antialias):
	(fc-pattern-get-dpi):
	(fc-pattern-get-family):
	(fc-pattern-get-file):
	(fc-pattern-get-foundry):
	(fc-pattern-get-minspace):
	(fc-pattern-get-outline):
	(fc-pattern-get-pixelsize):
	(fc-pattern-get-rasterizer):
	(fc-pattern-get-scalable):
	(fc-pattern-get-scale):
	(fc-pattern-get-size):
	(fc-pattern-get-style):
	(fc-pattern-get-xlfd):
	(xft-pattern-get-core):
	(xft-pattern-get-encoding):
	(xft-pattern-get-render):
	(fc_get_pattern_bool):
	(fc_get_pattern_double):
	(fc_get_pattern_integer):
	(fc_get_pattern_string):
	(xft_font_open_name):
	Delete definitions of long-unused functions.

	(syms_of_xft_fonts):
	Delete references.

	* xft-fonts.h (fc_get_pattern_bool):
	(fc_get_pattern_double):
	(fc_get_pattern_integer):
	(fc_get_pattern_string):
	Delete declarations of long-unused helper functions.

	* xft-fonts.c (Ffc_font_match): s/poosible/possible/ in docstring.

    2005-04-01  Aidan Kehoe  <kehoea@parhasard.net>

	* objects-x.c:
	* objects-x.c (x_initialize_font_instance):
	* objects-x.c (CHECKING_LANG):
	General mule-sanity cleanup for the debug messages, to eliminate
	the issue Giacomo Boffi saw in
	16970.44359.621213.994821@boffi95.stru.polimi.it.

	* objects-x.c (x_find_charset_font):
	Font names are also treated as UTF-8; relatedly, when passing back
	the font's full name, the character coverage bitmap isn't included
	any more, because that would make it an invalid UTF-8 string.

    2005-03-10  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (charset_table): Fix ISO 639 code for Greek.  Reported
	by Stefan Holst <holst@mathematik.uni-mainz.de>.
	(charset_table): Add information for Hebrew, whine about ISO prices.

    2005-03-09  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_font_instance_truename): Try to fix XListFonts
	crash by not handing random Xft results to core Xlib functions.
	Replace bizarre gymnastics with simple FcNameUnparse.

    2005-03-07  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x-impl.h: Include lwlib-fonts.h

	* objects-x.c (x_font_instance_truename):
	* glyphs-x.c (update_widget_face):
	* frame-x.c (x_update_frame_external_traits):
	Use the correct variant of FONT_INSTANCE_{X,XFT}_FONT.
	Protect against access of uninitialized objects.

	* redisplay-x.c (x_get_gc): Fix typo.
	* (x_output_string): Add comments, clarify logic slightly.

    2005-03-05  Stephen J. Turnbull  <stephen@xemacs.org>

	Refactor language/charset checking in Xft.

	* objects-x.c (struct charset_reporter): New type.
	(charset_table): New internal table.
	(DEBUG_XFT0):
	(DEBUG_XFT1):
	(DEBUG_XFT2):
	(PRINT_XFT_PATTERN):
	(CHECKING_LANG):
	New debugging macros.
	(mule_to_fc_charset): New function.
	(x_find_charset_font): Completely rewrite Xft part using the above.

	Cache knowledge of charset in font instances.

	* objects-impl.h (struct Lisp_Font_Instance): New member charset.
	Update comment on use of truename.
	* objects.c (syms_of_objects): DEFSUBR Ffont_instance_charset.
	(Ffont_instance_charset): New accessor.
	(Fmake_font_instance): New argument CHARSET, update charset member.
	(font_instantiate): Update call to Fmake_font_instance.
	(font_instance_description): Add charset member.
	* objects.h (Fmake_font_instance):  Update EXFUN.
	(Ffont_instance_charset): New EXFUN.

	Make Xft debug level adjustable from Lisp.

	* xft-fonts.c (vars_of_xft_fonts): New DEFVAR_INT
	xft-debug-level (from debug_xft), adjust style of xft-version.
	* xft-fonts.h (debug_xft): Now Lisp-visible, change declaration.

	Miscellaneous.

	* lisp.h (Vcharset_iso8859_15): Export it.
	* faces.h (struct face_cachel): Update comment on space usage.
	* faces.c: Comment proposed changes to improve font handling.
	* frame-x.c:
	* EmacsShell-sub.c:
	Disable geometry debugging.

    2005-02-24  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.h:
	* xft-fonts.c:
	Update copyright notices.

	* xft.fonts.h (string_list_to_fcobjectset):
	(extract_fcapi_string):
	Delete; static function declarations don't belong in headers.

	* xft.fonts.c (string_list_to_fcobjectset):
	(extract_fcapi_string):
	Declare.

    2005-02-24  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_find_charset_font): ConfigSubstitute in the
	_pattern_ before matching.

    2005-02-24  Stephen J. Turnbull  <stephen@xemacs.org>

	* faces.c (complex_vars_of_faces): Default to monospace-12 for
	Xft.  (Suggestion by Aidan Kehoe.)

    2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>

	* xgccache.h (XE_GCONTEXT): Move out of DEBUG_XEMACS block.

    2005-02-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.c (debug_xft): Suppress all debug output for now.

    2005-02-21  Stephen J. Turnbull  <stephen@xemacs.org>

	* emacs.c (xemacs-release-date): New version info variable.
	* config.h.in (XEMACS_RELEASE_DATE): New config.h macro.

	* emacs.c (inhibit-early-packages):
	(inhibit-all-packages):
	(xemacs-extra-name): Improve docstrings.

    2005-02-21  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_finalize_font_instance): Improve debug message.

    2005-02-20  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_initialize_font_instance): Estimate average cell
	width based on dimensions of "representative" string.  Suppress
	some excessive debug output.  Get rid of spurious tests.

    2005-02-11  Eric Knauel  <eric@xemacs.org>

	* xft-fonts.c: throw away old code that was wrapped inside
	comments

    2005-02-11  Eric Knauel  <eric@xemacs.org>

	* xft-fonts.h: New prototype

	* xft-fonts.c (Ffc_name_parse, Ffc_pattern_add, Ffc_pattern_del)
	(Ffc_pattern_get, fc_font_real_pattern)
	(string_list_to_fcobjectset): Use extract_fcapi_string()
	(extract_fcapi_string): New function

    2005-02-09  Eric Knauel  <eric@xemacs.org>

	* xft-fonts.c (string_list_to_fcobjectset): Use loop macro instead
	of for.

    2005-02-03  Eric Knauel  <eric@xemacs.org>

	* lrecord.h (enum lrecord_type): remove lrecord for FcObjectSets

	* xft-fonts.h (struct fc_fontset): remove lrecord for FcObjectSets

	* xft-fonts.c (DEFINE_LRECORD_IMPLEMENTATION):
	(Ffc_objectset_create, Ffc_objectset_p, Ffc_objectset_add)
	(Ffc_objectset_destroy): remove lrecord for FcObjectSets
	(Ffc_list_fonts_pattern_objects): adapt for new representation of
	FcObjectSets
	(string_list_to_fcobjectset): New utility function

    2005-02-01  Stephen J. Turnbull  <stephen@xemacs.org>

	* redisplay-x.c (separate_textual_runs): Check for MULE properly.

    2005-01-28  Stephen J. Turnbull  <stephen@xemacs.org>

	* glyphs-widget.c (Fwidget_logical_to_character_height):
	(Fwidget_logical_to_character_width):
	(layout_query_geometry):
	(widget_update):
	Fix typos in docstrings and preceding comments.

    2005-01-26  Stephen J. Turnbull  <stephen@xemacs.org>

	* redisplay-x.c (x_output_string): Position strikethru by dl
	geometry.  Kludge to fix remnants from antialiased underscores.

    2004-12-19  Stephen J. Turnbull  <stephen@xemacs.org>

	* compiler.h (UNUSED): Document make-docfile.c hack.

    2004-12-19  Stephen J. Turnbull  <stephen@xemacs.org>

	* glyphs-x.c,objects-x.c: Deemphasize warnings (to debug or alert).

	* redisplay-x.c: Don't abort() when ichar_to_unicode returns error.

    2004-12-17  Stephen J. Turnbull  <stephen@xemacs.org>

	* regex.c (re_match_2_internal): DEBUG_PRINT "can match null".

    2004-12-10  Stephen J. Turnbull  <stephen@xemacs.org>

	* redisplay-x.c (x_text_width_single_run): Whitespace improvement.

    2004-12-09  Stephen J. Turnbull  <stephen@xemacs.org>

	* glyphs-widget.c (image_instantiator_progress_gauge):
	(image_instantiator_format_create_glyphs_widget):
	Fix typo guage->gauge.

	* emacs.c (main_1): Casting out devils (size_t).

	* compiler.h (USED_IF_XFT): New variant.
	* objects-x.c (x_font_spec_matches_charset):
	* redisplay-x.c (x_text_width_single_run):
	Use it.

	* config.h.in: Support USE_XFT_TABS and USE_XFT_GAUGE.

    2004-11-28  Stephen J. Turnbull  <stephen@xemacs.org>

	* objects-x.c (x_initialize_font_instance): Make sure
	FONT_INSTANCE_X_FONT is cleared for Xft fonts.  Add comments.
	Fiddle whitespace.
	(x_print_font_instance): Clarify printed font instance.

    2004-11-27  Stephen J. Turnbull  <stephen@xemacs.org>

	* xft-fonts.h: Declare debug_xft.

	* objects-x.c (x_font_instance_truename):
	Convert Xft* identifiers to Fc* versions.

	(x_initialize_font_instance):
	(x_find_charset_font):
	Condition debugging on debug_xft.  Get rid of unneeded "####
	debug" markers.  Change fprintf to stderr_out.

	(x_find_charset_font): Restore missing argument to
	DebugFcTypeOfValue.  Remove nonworking debug cruft.

	(FcResultToString):
	(FcTypeOfValueToString):
	(x_find_charset_font):
	Change DebugFc* to Fc*ToString.

    2004-11-20  Stephen J. Turnbull  <stephen@xemacs.org>

	Xft branch based on "Xft reloaded #3" patch by Eric Knauel and
	Mathias Neuebaur, and other contributors.

	* xft-fonts.h: New file.  Declares new Lisp objects wrapping
	FcPattern, FcFontSet, and FcObjectSet.
	* xft-fonts.c: New file.  Implements new Lisp objects wrapping
	FcPattern, FcFontSet, and FcObjectSet.
	* objects-x-impl.h: Declare XftFont component of font instance.
	* objects-x.c: Implement XftFont component of font instance.
	* redisplay-x.c: Implement drawing via Xft.

2005-11-21  Marcus Crestani  <crestani@xemacs.org>

	Incremental Garbage Collector

	* .cvsignore: Add .dbxrc and .gdbinit.

	* .dbxrc: Remove.
	* .dbxrc.in: New, used to generate .dbxrc: If newgc is enabled, do
	not break on SIGBUS and SIGSEGV.
	* .gdbinit: Remove.
	* .gdbinit: New, used to generate .gdbinit: If newgc is enabled,
	do not break on SIGBUS and SIGSEGV.

	* Makefile.in.in: Add gc.c, newgc_objs and vdb_objs.

	* alloc.c: Move the GC related code to gc.c: marking, gc hooks,
	garbage_collect_1, GC related Lisp functions and variables.  Left
	in alloc.c are the allocation functions, the definition of
	lrecords, the sweep functions of the old garbage collector, and
	root-set code like staticpro and mcpro.  Remove
	lrecord_string_data_stats.
	* alloc.c (DECREMENT_CONS_COUNTER): Remove call to
	recompute_need_to_garbage_collect.
	* alloc.c (init_lrecord_stats): Remove additionally allocated
	memory statistics, i.e. statistics for string data.
	* alloc.c (alloc_lrecord_array): New.
	* alloc.c (free_lrecord): Do not explicitly free during gc.  Add
	recompute_need_to_garbage_collect.
	* alloc.c (make_compiled_function): Field arguments is now a Lisp
	object, thus init it to Qnil rather than NULL.
	* alloc.c (struct string_chars_block):
	* alloc.c (finalize_string):
	* alloc.c (struct string_chars):
	* alloc.c (make_uninit_string):
	* alloc.c (resize_string):
	* alloc.c (make_string_nocopy):
	String data is now a Lisp object.  Remove code that handled string
	data specially.
	* alloc.c (init_lrecord_stats): Remove lrecord_string_data_stats.
	* alloc.c (common_init_alloc_early):
	* alloc.c (init_alloc_once_early):
	* alloc.c (syms_of_alloc):
	* alloc.c (vars_of_alloc):
	* alloc.c (complex_vars_of_alloc):
	Move init code to gc.c's inizializers.

	* buffer.c:
	* buffer.c (syms_of_buffer):
	* buffer.h:
	* buffer.h (struct buffer_text): Add new Lisp object: buffer_text.

	* bytecode.c:
	* bytecode.c (make_compiled_function_args):
	* bytecode.c (optimize_compiled_function):
	* bytecode.c (mark_compiled_function):
	* bytecode.c (finalize_compiled_function):
	* bytecode.c (syms_of_bytecode):
	* bytecode.h:
	* bytecode.h (struct compiled_function_args):
	* bytecode.h (struct Lisp_Compiled_Function): Add new Lisp object:
	compiled_function_args.

	* config.h.in: Add NEW_GC symbol, add VDB_* symbols, and symbols
	for functions and structs checked for vdb.

	* console-gtk-impl.h:
	* console-gtk-impl.h (struct gtk_device):
	* console-gtk-impl.h (struct gtk_frame):
	* console-msw-impl.h:
	* console-msw-impl.h (struct mswindows_device):
	* console-msw-impl.h (struct msprinter_device):
	* console-msw-impl.h (struct mswindows_frame):
	* console-stream-impl.h:
	* console-stream-impl.h (struct stream_console):
	* console-stream.c:
	* console-stream.c (stream_init_console):
	* console-stream.c (stream_delete_console):
	* console-stream.h:
	* console-tty-impl.h:
	* console-tty-impl.h (struct tty_console):
	* console-tty-impl.h (struct tty_device):
	* console-tty.c:
	* console-tty.c (allocate_tty_console_struct):
	* console-tty.c (free_tty_console_struct):
	* console-x-impl.h:
	* console-x-impl.h (struct x_device):
	* console-x-impl.h (struct x_frame):
	* console.c:
	* console.c (syms_of_console): Add new Lisp objects: tty_console,
	stream_consle.

	* device-gtk.c:
	* device-gtk.c (allocate_gtk_device_struct):
	* device-gtk.c (free_gtk_device_struct):
	* device-gtk.c (syms_of_device_gtk):
	* device-msw.c:
	* device-msw.c (mswindows_init_device):
	* device-msw.c (mswindows_delete_device):
	* device-msw.c (msprinter_init_device):
	* device-msw.c (msprinter_delete_device):
	* device-msw.c (syms_of_device_mswindows):
	* device-tty.c:
	* device-tty.c (free_tty_device_struct):
	* device-tty.c (syms_of_device_tty):
	* device-x.c:
	* device-x.c (allocate_x_device_struct):
	* device-x.c (free_x_device_struct):
	* device-x.c (syms_of_device_x):
	* device.c: Add new Lisp objects: x_device, gtk_device,
	tty_device, mswindows_device, msprinter_device.

	* dumper.c:
	* dumper.c (pdump_register_sub): Add XD_LISP_OBJECT_PTR.
	* dumper.c (pdump_register_object_array): New.
	* dumper.c (pdump_store_new_pointer_offsets): Add XD_LISP_OBJECT_PTR.
	* dumper.c (pdump_scan_lisp_objects_by_alignment): Remove assert,
	XD_LISP_OBJECT_PTR may occur as arrays.
	* dumper.c (pdump_reloc_one_mc): Add XD_LISP_OBJECT_PTR.
	* dumper.c (pdump_dump_rtables): Dump arrays.
	* dumper.c (pdump_load_finish): Store and restore state of
	allow_incremental_gc.  Remove lrecord_string_data_stats.

	* dynarr.c:
	* dynarr.c (Dynarr_lisp_newf): Special case dynamic Lisp array.
	* dynarr.c (Dynarr_resize): Special case dynamic Lisp array.
	* dynarr.c (Dynarr_free): Add dynamic Lisp array.

	* elhash.c:
	* elhash.c (htentry):
	* elhash.c (make_general_lisp_hash_table):
	* elhash.c (Fcopy_hash_table):
	* elhash.c (resize_hash_table):
	* elhash.c (pdump_reorganize_hash_table):
	* elhash.c (init_elhash_once_early):
	* elhash.h: Add new Lisp object: hash_table_entry. Make
	hash_table_entries Lisp objects.

	* emacs.c (main_1): Install platform's vdb signal handler, add GC
	init, add syms of GC and vdb, .
	* emacs.c: Replace garbage_collect_1 calls with gc_full calls.
	* emacs.c (fatal_error_signal): With vdb enabled, convert SIGSEGV
	and SIGBUS to SIGABRT.

	* eval.c (Fsignal): Incremental GC may always run, changes are
	caught by the write barrier.
	* eval.c (handle_compiled_function_with_and_rest):
	* eval.c (funcall_compiled_function):
	* eval.c (Feval): Invoke incremental GC if need to GC.
	* eval.c (Ffuncall): Invoke incremental GC if need to GC.
	* eval.c (run_hook_with_args_in_buffer): Add new Lisp object:
	compiled_function_args.

	* event-msw.c (mswindows_wnd_proc): Incremental GC may always run,
	changes are caught by the write barrier.
	* events.c (reinit_vars_of_events): Vevent_resource now
	collectible, staticpro it.

	* extents.c:
	* extents.c (gap_array_marker):
	* extents.c (gap_array):
	* extents.c (extent_list_marker):
	* extents.c (extent_list):
	* extents.c (stack_of_extents):
	* extents.c (gap_array_make_gap):
	* extents.c (gap_array_make_marker):
	* extents.c (gap_array_delete_marker):
	* extents.c (gap_array_delete_all_markers):
	* extents.c (make_gap_array):
	* extents.c (free_gap_array):
	* extents.c (extent_list_insert):
	* extents.c (extent_list_make_marker):
	* extents.c (extent_list_delete_marker):
	* extents.c (allocate_extent_list):
	* extents.c (free_extent_list):
	* extents.c (finalize_extent_info):
	* extents.c (flush_cached_extent_info):
	* extents.c (uninit_buffer_extents):
	* extents.c (allocate_soe):
	* extents.c (free_soe):
	* extents.c (syms_of_extents):
	* extents.h: Add new Lisp object: gap_array_marker, gap_array,
	extent_list_marker, extent_list, and stack_of_extents.

	* faces.h:
	* faces.h (struct face_cachel): Add new Lisp object: face cachel.

	* frame-gtk.c:
	* frame-gtk.c (allocate_gtk_frame_struct):
	* frame-gtk.c (gtk_delete_frame):
	* frame-gtk.c (syms_of_frame_gtk):
	* frame-msw.c:
	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_delete_frame):
	* frame-msw.c (syms_of_frame_mswindows):
	* frame-x.c:
	* frame-x.c (allocate_x_frame_struct):
	* frame-x.c (x_delete_frame):
	* frame-x.c (syms_of_frame_x):
	* frame.c:
	* frame.c (change_frame_size):
	* frame.c (syms_of_frame): Add new Lisp object: gtk_console,
	mswindows_console, and x_console.

	* glyphs.c (struct expose_ignore_blocktype):
	* glyphs.c (check_for_ignored_expose):
	* glyphs.c (register_ignored_expose):
	* glyphs.c (reinit_vars_of_glyphs):
	* glyphs.h:
	* glyphs.h (struct glyph_cachel):
	* glyphs.h (struct expose_ignore): Add new Lisp object:
	glyph_cachel and expose_ignore.

	* lisp.h: Move dynamic array definition down after lrecord
	inclusion.  Add dynamic lisp array macros.  Add direct and
	indirect string data. Add string accessors.  Remove
	lrecord_string_data_stats.
	* lisp.h (struct Lisp_String_Direct_Data): New.
	* lisp.h (struct Lisp_String_Indirect_Data): New.
	* lisp.h (struct Lisp_String): Add indirect flag and Lisp object
	data.

	* lrecord.h: Remove lrecord_type numbering.
	* lrecord.h (enum lrecord_type): Add new Lisp objects.
	* lrecord.h (MC_ALLOC_CALL_FINALIZER): Add GC statistics.
	* lrecord.h (enum memory_description_type): Add
	XD_LISP_OBJECT_BLOCK_PTR.
	* lrecord.h (XD_LISP_DYNARR_DESC): New.
	* lrecord.h (alloc_lrecord_array): New.

	* mc-alloc.c:
	* mc-alloc.c (MIN_HEAP_INCREASE):
	* mc-alloc.c (free_link):
	* mc-alloc.c (page_header):
	* mc-alloc.c (FREE_HEAP_PAGES):
	* mc-alloc.c (PH_BLACK_BIT):
	* mc-alloc.c (get_mark_bit_index):
	* mc-alloc.c (add_pages_to_lookup_table):
	* mc-alloc.c (alloc_bit_array):
	* mc-alloc.c (get_bit):
	* mc-alloc.c (set_bit):
	* mc-alloc.c (USE_PNTR_MARK_BITS):
	* mc-alloc.c (GET_BIT_WORD):
	* mc-alloc.c (SET_BIT_WORD):
	* mc-alloc.c (ZERO_MARK_BITS_PNTR):
	* mc-alloc.c (alloc_mark_bits):
	* mc-alloc.c (free_mark_bits):
	* mc-alloc.c (set_mark_bit):
	* mc-alloc.c (alloc_page_header):
	* mc-alloc.c (free_page_header):
	* mc-alloc.c (get_used_list_index):
	* mc-alloc.c (get_free_list_index):
	* mc-alloc.c (install_cell_free_list):
	* mc-alloc.c (install_page_in_used_list):
	* mc-alloc.c (remove_page_from_used_list):
	* mc-alloc.c (allocate_new_page):
	* mc-alloc.c (mc_alloc_1):
	* mc-alloc.c (mc_alloc_array):
	* mc-alloc.c (mc_alloc):
	* mc-alloc.c (mark_free_list):
	* mc-alloc.c (finalize_page):
	* mc-alloc.c (finalize_page_for_disksave):
	* mc-alloc.c (sweep_page):
	* mc-alloc.c (mc_free):
	* mc-alloc.c (mc_realloc_1):
	* mc-alloc.c (mc_realloc_array):
	* mc-alloc.c (init_mc_allocator):
	* mc-alloc.c (Fmc_alloc_memory_usage):
	* mc-alloc.c (maybe_mark_black):
	* mc-alloc.h: Add incremental garbage collector support, various
	cleanups.

	* objects-tty-impl.h:
	* objects-tty-impl.h (struct tty_color_instance_data):
	* objects-tty-impl.h (struct tty_font_instance_data):
	* objects-tty.c:
	* objects-tty.c (tty_initialize_color_instance):
	* objects-tty.c (tty_finalize_color_instance):
	* objects-tty.c (tty_initialize_font_instance):
	* objects-tty.c (tty_finalize_font_instance):
	* objects-tty.c (syms_of_objects_tty):
	* objects.c: New Lisp objects: color_instance_data and
	font_instance_data.

	* print.c (print_internal): New Lisp object: string_data.

	* specifier.c:
	* specifier.c (finalize_specifier):
	* specifier.c (set_specifier_caching):
	* specifier.c (syms_of_specifier):
	* specifier.h:
	* specifier.h (struct specifier_caching): New Lisp object:
	specifier caching.

	* syntax.c:
	* syntax.c (init_buffer_syntax_cache):
	* syntax.c (uninit_buffer_syntax_cache):
	* syntax.c (syms_of_syntax):
	* syntax.h:
	* syntax.h (struct syntax_cache): New Lisp object: syntax_cache.

	* window.c:
	* window.c (allocate_window):
	* window.c (make_dummy_parent):
	* window.c (syms_of_window): New Lisp objects: face_cachel,
	fache_cachel_dynarr, glyph_cachel, and glyph_cachel_dynarr.


	New files:
	* gc.c: Moved code from alloc.c.  Split up garbage_collect_1 in a
	couple of smaller functions.
	* gc.h: Incremental Garbage Collector

	* vdb-fake.c: Virtual dirty bit fake implementation.
	* vdb-mach.c: Virtual dirty bit implementation for Mach systems.
	* vdb-posix.c: Virtual dirty bit implementation for POSIX systems.
	* vdb-win32.c: Virtual dirty bit implementation for Win32 systems.

	* vdb.c:
	* vdb.h: Platform independent virtual dirty bit implementation.


	Remove files:
	* .dbxrc:
	* .gdbinit: Now generated by configure script.

2005-11-22  Malcolm Purvis  <malcolmp@xemacs.org>

	* frame-gtk.c (gtk_internal_frame_property_p):
	* glyphs-gtk.c (image_instance_convert_to_pointer):
	* glyphs-gtk.c (gtk_xpm_instantiate):
	* glyphs-gtk.h (IMAGE_INSTANCE_GTK_MASK):
	* gtk-xemacs.c (gtk_xemacs_expose):
	* redisplay-gtk.c (gtk_output_vertical_divider):
	Fix compilation errors and warnings that have appeared over the
	last few months.

2005-11-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* keymap.c (Fdefine_key): More focused docstring.

2005-11-20  Marcus Crestani  <crestani@xemacs.org>

	* lisp.h: Add default_object_printer prototype.
	* print.c (default_object_printer): Remove static.
	* print.c (print_internal): Use internal_object_printer if a
	object has no print method.
	* toolbar.c: Use default_object_printer for toolbar-button.

2005-11-22  Ben Wing  <ben@xemacs.org>

	* mule-coding.c (FROB):
	Fix crashes printing ISO2022 coding systems.

2005-11-22  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (mostlyclean):
	Ignore errors from rm during clean.

2005-11-18  Aidan Kehoe  <kehoea@parhasard.net>

	* window.c (change_window_height): Have change_window_height
	change the window width when requested to do so; fixes bugs and
	error messages with VM, BBDB.

2005-11-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* sound.c (USED_IF_HAVE_NATIVE_OR_NAS, USED_IF_HAVE_ANY):
	New conditional UNUSED macros.
	(Fplay_sound_file, Fdevice_sound_enabled_p, init_device_sound):
	Use them.

2005-11-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* event-Xt.c (x_to_emacs_keysym): Initialize len.

2005-11-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* database.c: Don't redefine integer types for Mac OS X, either.

2005-11-13  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (alloc_lrecord):
	* alloc.c (noseeum_alloc_lrecord):
	* alloc.c (make_uninit_string):
	* alloc.c (Fmake_string):
	* alloc.c (make_string_nocopy):
	* lrecord.h:
	* lrecord.h (struct lrecord_header):
	* lrecord.h (set_lheader_implementation):
	Move around the handling of setting of lheader->uid so it's in
	set_lheader_implementation() -- that way, even non-MC-ALLOC builds
	get useful uid's in their bare lrecords.  Redo related code for
	strings so the non-ascii count that is stored in the uid isn't hosed.

	* events.c:
	* events.c (deinitialize_event):
	* events.c (zero_event):
	Save and restore the uid around event zeroing/deadbeefing.

	* lisp.h:
	Set the correct value of MAX_STRING_ASCII_BEGIN under MC_ALLOC.

	* lisp.h (ZEROP):
	* lisp.h (XINT):
	* lisp.h (CHECK_INT):
	* lisp.h (CONCHECK_INT):
	* lisp.h (NATNUMP):
	* lisp.h (CHECK_NATNUM):
	* lisp.h (CONCHECK_NATNUM):
	* lisp.h (XCHAR):
	* lisp.h (XCHAR_OR_INT):
	* lisp.h (CHAR_INTP):
	rearrange the basic code handling ints and chars.  basic int stuff goes
	first, followed by basic char stuff, followed in turn by stuff that
	mixes ints and chars.  this is required since some basic defn's have
	become inline functions.

	XCHAR and CHARP have additional error-checking in that they check to make
	sure that the value in question is not just a character but a valid
	character (i.e. its numeric value is valid).

	* print.c:
	* print.c (debug_p4):
	debug_p4 now has a useful UID in all cases and uses it; but it also prints
	the raw header address (previously, you just got one of them).
	* text.h:
	some basic char defn's that belonged in lisp.h have been moved there.
	valid_ichar_p() is moved too since the inline functions need it.

2005-11-13  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (distclean-noconfig):
	Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig.
	Do some refactoring for cleanliness.

2005-11-07  Stephen J. Turnbull  <stephen@xemacs.org>

	* inline.c: Include modules headers regardless of HAVE_SHLIB.

2005-11-02  Marcus Crestani  <crestani@xemacs.org>

	* realpath.c (readlink_or_correct_case): Move the closing paren
	outside the ifdef.

2005-11-02  Marcus Crestani  <crestani@xemacs.org>

	* realpath.c (readlink_or_correct_case): Mark parameter as unused.

2005-10-29  Steve Youngs  <steve@sxemacs.org>

	* unexelf.c (unexec): Fix data types.
	From: Andrey Slusar <anrays@gmail.com>

2005-10-26  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.23 "daikon" is released.

2005-10-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* lrecord.h: Explain the EXTERNAL_LRECORD macros better.

2005-10-25  Ben Wing  <ben@xemacs.org>

	* config.h.in (EXTERN_C):
	Don't define new and catch under C++ any more.
	(Places using new were just fixed by the last patch, places using
	catch were fixed a couple of weeks ago.)

2005-10-25  Ben Wing  <ben@xemacs.org>

	* EmacsFrame.c (EmacsFrameInitialize):
	* EmacsFrame.c (EmacsFrameSetValues):
	* ExternalClient.c:
	* ExternalClient.c (externalClientInitialize):
	* ExternalShell.c:
	* ExternalShell.c (ExternalShellInitialize):
	* chartab.c (copy_char_table_entry):
	* chartab.c (Fcopy_char_table):
	* cmdloop.c:
	* cmdloop.c (initial_command_loop):
	* compiler.h:
	* console.c (Fvalid_console_type_p):
	* database.c:
	* device-msw.c:
	* device-x.c:
	* device.c (Fvalid_device_class_p):
	* device.c (Fdevice_class):
	* device.c (Fset_device_class):
	* device.c (Fdomain_device_type):
	* doc.c (Fsubstitute_command_keys):
	* dragdrop.c:
	* eval.c:
	* eval.c (throw_or_bomb_out):
	* eval.c (Fsignal):
	* event-msw.c:
	* event-msw.c (vars_of_event_mswindows):
	* event-stream.c (execute_internal_event):
	* event-stream.c (push_this_command_keys):
	* events.c:
	* extents.c (Fset_extent_parent):
	* extents.c (get_char_property):
	* extents.c (put_text_prop_mapper):
	* file-coding.c:
	* file-coding.c (Fvalid_coding_system_type_p):
	* file-coding.c (Fdetect_coding_region):
	* fns.c (Freplace_list):
	* frame-tty.c (tty_lower_frame):
	* frame.c:
	* frame.c (Fframe_visible_p):
	* gpmevent.c (Fgpm_enable):
	* gutter.c (Fset_default_gutter_position):
	* gutter.c (gutter_size_validate):
	* gutter.c (specifier_vars_of_gutter):
	* hash.c (KEYS_DIFFER_P):
	* imgproc.c (splitbox):
	* indent.c:
	* keymap.c:
	* keymap.c (copy_keymap_mapper):
	* keymap.c (define_key_check_and_coerce_keysym):
	* keymap.c (event_matches_key_specifier_p):
	* keymap.c (process_event_binding_result):
	* keymap.c (where_is_recursive_mapper):
	* lisp-union.h:
	* lisp-union.h (union Lisp_Object):
	* macros.c (store_kbd_macro_event):
	* malloc.c (realloc):
	* marker.c (copy_marker_1):
	* menubar-x.c (menu_move_down):
	* menubar.c:
	* menubar.c (vars_of_menubar):
	* mule-charset.c:
	* mule-charset.c (Fmake_charset):
	* mule-charset.c (Fcharset_property):
	* mule-charset.c (Fset_charset_ccl_program):
	* mule-charset.c (Fset_charset_registry):
	* number.c:
	* process.c:
	* profile.h:
	* ralloc.c (obtain):
	* redisplay.c:
	* redisplay.c (get_display_block_from_line):
	* redisplay.c (redisplay_frame):
	* redisplay.c (vars_of_redisplay):
	* redisplay.c (specifier_vars_of_redisplay):
	* select-common.h:
	* select.c:
	* select.c (vars_of_select):
	* syntax.c:
	* syntax.c (scan_sexps_forward):
	* sysfile.h:
	* sysproc.h:
	* systime.h:
	* syswindows.h:
	* toolbar.c (Fset_default_toolbar_position):
	* toolbar.c (Fcheck_toolbar_button_syntax):
	* toolbar.c (specifier_vars_of_toolbar):
	* tooltalk.c:
	* tooltalk.c (Freturn_tooltalk_message):
	* tooltalk.c (Fadd_tooltalk_message_arg):
	* tooltalk.c (Fadd_tooltalk_pattern_attribute):
	* tparam.c (tparam1):
	* unexaix.c (PERROR):
	* unexaix.c (ERROR0):
	* unexaix.c (unexec):
	* unexaix.c (make_hdr):
	* unexaix.c (copy_text_and_data):
	* unexaix.c (write_segment):
	* unexaix.c (copy_sym):
	* unexaix.c (mark_x):
	* unexaix.c (adjust_lnnoptrs):
	* unexaix.c (unrelocate_symbols):
	* unexalpha.c (unexec):
	* unexalpha.c (update_dynamic_symbols):
	* unexconvex.c (PERROR):
	* unexconvex.c (ERROR0):
	* unexconvex.c (entry_address;):
	* unexconvex.c (make_hdr):
	* unexconvex.c (new_;):
	* unexconvex.c (sptr;):
	* unexconvex.c (copy_sym):
	* unexconvex.c (name;):
	* unexec.c:
	* unexec.c (PERROR):
	* unexec.c (ERROR0):
	* unexec.c (unexec):
	* unexec.c (make_hdr):
	* unexec.c (write_segment):
	* unexec.c (copy_sym):
	* unexec.c (mark_x):
	* unexec.c (adjust_lnnoptrs):
	* unexhp9k800.c:
	* unexhp9k800.c (unexec):
	* unexhp9k800.c (copy_file):
	* unexhp9k800.c (copy_rest):
	* unexmips.c (unexec):
	* unicode.c:
	* unicode.c (Fchar_to_unicode):
	* window.c (make_dummy_parent):
	* window.c (Fsplit_window):
	* window.c (Fenlarge_window):
	new -> new_.
	'foo -> `foo'.

2005-10-25  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (old_basic_alloc_lcrecord):
	* alloc.c (very_old_free_lcrecord):
	* alloc.c (disksave_object_finalization_1):
	* alloc.c (copy_lisp_object):
	* alloc.c (make_lcrecord_list):
	* alloc.c (alloc_managed_lcrecord):
	* alloc.c (old_free_lcrecord):
	* alloc.c (GC_CHECK_NOT_FREE):
	* alloc.c (tick_lcrecord_stats):
	* alloc.c (sweep_lcrecords_1):
	* buffer.c (compute_buffer_usage):
	* buffer.c (DEFVAR_BUFFER_LOCAL_1):
	* console.c (DEFVAR_CONSOLE_LOCAL_1):
	* emacs.c:
	* emacs.c (main_1):
	* file-coding.c (allocate_coding_system):
	* lrecord.h:
	* lrecord.h (struct old_lcrecord_header):
	* lrecord.h (struct free_lcrecord_header):
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (struct lcrecord_list):
	* lrecord.h (old_alloc_lcrecord_type):
	* lrecord.h (old_copy_sized_lcrecord):
	* lrecord.h (old_zero_lcrecord):
	* lstream.c (Lstream_new):
	* mule-charset.c (compute_charset_usage):
	* print.c (debug_p4):
	* scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage):
	* scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage):
	* scrollbar-x.c (x_compute_scrollbar_instance_usage):
	* scrollbar.c (compute_scrollbar_instance_usage):
	* symbols.c (guts_of_unbound_marker):
	* symeval.h (DEFVAR_SYMVAL_FWD):
	* unicode.c (compute_from_unicode_table_size_1):
	* unicode.c (compute_to_unicode_table_size_1):
	* window.c (compute_window_mirror_usage):
	* window.c (compute_window_usage):
	* xemacs.def.in.in:
	rename `struct lcrecord_header' to `struct old_lcrecord_header';
	likewise for `old_basic_alloc_lcrecord', `old_free_lcrecord',
	`old_zero_lcrecord', `old_zero_sized_lcrecord', `old_copy_lcrecord',
	`old_copy_sized_lcrecord', `old_alloc_lcrecord_type'.  Created new
	LISPOBJ_STORAGE_SIZE() used only on objects created through allocation
	of Lisp-Object memory instead of basic xmalloc()/xfree().  This is
	distinguished from malloced_storage_size(), for non-Lisp-Objects.
	The definition of LISPOBJ_STORAGE_SIZE() can reduce down to
	malloced_storage_size() when not MC-ALLOC, but with MC-ALLOC it's
	a different function.

	The whole point other than cleaning up the use of LISPOBJ_STORAGE_SIZE
	is to make it harder to accidentally use the old kind (lowercase) of
	function in new code, since you get a compile error.

2005-10-25  Ben Wing  <ben@xemacs.org>

	* frame-msw.c (mswindows_window_id):
	Fix warning.

2005-10-24  Ben Wing  <ben@xemacs.org>

	* frame-msw.c:
	* frame-msw.c (decode_mswindows_frame):
	New function, like decode_x_frame.

	* frame-msw.c (mswindows_window_id):
	* frame-msw.c (mswindows_frame_property):
	* frame-msw.c (mswindows_internal_frame_property_p):
	* frame-msw.c (mswindows_frame_properties):
	* frame-msw.c (vars_of_frame_mswindows):
	Add `window-id' property for MS Windows frames.

2005-10-24  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (Lisp_Free):
	* alloc.c (Fcons):
	* alloc.c (noseeum_cons):
	* alloc.c (make_float):
	* alloc.c (make_bignum):
	* alloc.c (make_bignum_bg):
	* alloc.c (make_ratio):
	* alloc.c (make_ratio_bg):
	* alloc.c (make_ratio_rt):
	* alloc.c (make_bigfloat):
	* alloc.c (make_bigfloat_bf):
	* alloc.c (make_vector_internal):
	* alloc.c (make_bit_vector_internal):
	* alloc.c (make_compiled_function):
	* alloc.c (Fmake_symbol):
	* alloc.c (allocate_extent):
	* alloc.c (allocate_event):
	* alloc.c (make_key_data):
	* alloc.c (make_button_data):
	* alloc.c (make_motion_data):
	* alloc.c (make_process_data):
	* alloc.c (make_timeout_data):
	* alloc.c (make_magic_data):
	* alloc.c (make_magic_eval_data):
	* alloc.c (make_eval_data):
	* alloc.c (make_misc_user_data):
	* alloc.c (Fmake_marker):
	* alloc.c (noseeum_make_marker):
	* buffer.c (allocate_buffer):
	* buffer.c (compute_buffer_usage):
	* buffer.c (nuke_all_buffer_slots):
	* buffer.c (common_init_complex_vars_of_buffer):
	* buffer.h (struct buffer):
	* casetab.c (allocate_case_table):
	* casetab.h (struct Lisp_Case_Table):
	* charset.h (struct Lisp_Charset):
	* chartab.c (fill_char_table):
	* chartab.c (Fmake_char_table):
	* chartab.c (make_char_table_entry):
	* chartab.c (copy_char_table_entry):
	* chartab.c (Fcopy_char_table):
	* chartab.c (put_char_table):
	* chartab.h (struct Lisp_Char_Table_Entry):
	* chartab.h (struct Lisp_Char_Table):
	* console-impl.h (struct console):
	* console-msw-impl.h (struct Lisp_Devmode):
	* console-msw-impl.h (struct mswindows_dialog_id):
	* console.c (allocate_console):
	* console.c (nuke_all_console_slots):
	* console.c (common_init_complex_vars_of_console):
	* data.c (make_weak_list):
	* data.c (make_weak_box):
	* data.c (make_ephemeron):
	* database.c (struct Lisp_Database):
	* database.c (allocate_database):
	* device-impl.h (struct device):
	* device-msw.c (allocate_devmode):
	* device.c (nuke_all_device_slots):
	* device.c (allocate_device):
	* dialog-msw.c (handle_question_dialog_box):
	* elhash.c (struct Lisp_Hash_Table):
	* elhash.c (make_general_lisp_hash_table):
	* elhash.c (Fcopy_hash_table):
	* events.h (struct Lisp_Timeout):
	* events.h (struct command_builder):
	* extents-impl.h (struct extent_auxiliary):
	* extents-impl.h (struct extent_info):
	* extents.c (allocate_extent_auxiliary):
	* extents.c (allocate_extent_info):
	* extents.c (copy_extent):
	* faces.c (allocate_face):
	* faces.h (struct Lisp_Face):
	* file-coding.c (Fcopy_coding_system):
	* file-coding.h (struct Lisp_Coding_System):
	* frame-impl.h (struct frame):
	* frame.c (nuke_all_frame_slots):
	* frame.c (allocate_frame_core):
	* glyphs.c (allocate_image_instance):
	* glyphs.c (Fcolorize_image_instance):
	* glyphs.c (allocate_glyph):
	* glyphs.h (struct Lisp_Image_Instance):
	* glyphs.h (struct Lisp_Glyph):
	* gui.c (allocate_gui_item):
	* gui.h (struct Lisp_Gui_Item):
	* keymap.c (struct Lisp_Keymap):
	* keymap.c (make_keymap):
	* lisp.h (struct Lisp_Vector):
	* lisp.h (struct Lisp_Bit_Vector):
	* lisp.h (struct weak_box):
	* lisp.h (struct ephemeron):
	* lisp.h (struct weak_list):
	* lrecord.h:
	* lrecord.h (struct toolbar_button):
	* lstream.c (COPY_SIZED_LCRECORD):
	* lstream.h (struct lstream):
	* mule-charset.c (make_charset):
	* mule-charset.c (compute_charset_usage):
	* objects-impl.h (struct Lisp_Color_Instance):
	* objects-impl.h (struct Lisp_Font_Instance):
	* objects.c (Fmake_color_instance):
	* objects.c (Fmake_font_instance):
	* objects.c (reinit_vars_of_objects):
	* opaque.c (make_opaque):
	* opaque.h (Lisp_Opaque):
	* opaque.h (Lisp_Opaque_Ptr):
	* print.c (default_object_printer):
	* process.c (make_process_internal):
	* procimpl.h (struct Lisp_Process):
	* rangetab.c (Fmake_range_table):
	* rangetab.c (Fcopy_range_table):
	* rangetab.h (struct Lisp_Range_Table):
	* scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage):
	* scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage):
	* scrollbar-x.c (x_compute_scrollbar_instance_usage):
	* scrollbar.c (create_scrollbar_instance):
	* scrollbar.c (compute_scrollbar_instance_usage):
	* scrollbar.h (struct scrollbar_instance):
	* specifier.c (make_specifier_internal):
	* specifier.h (struct Lisp_Specifier):
	* symbols.c (Fdefvaralias):
	* symeval.h (SYMBOL_VALUE_MAGIC_P):
	* toolbar.c (update_toolbar_button):
	* toolbar.h (struct toolbar_button):
	* tooltalk.c (struct Lisp_Tooltalk_Message):
	* tooltalk.c (make_tooltalk_message):
	* tooltalk.c (struct Lisp_Tooltalk_Pattern):
	* tooltalk.c (make_tooltalk_pattern):
	* ui-gtk.c (allocate_ffi_data):
	* ui-gtk.c (allocate_emacs_gtk_object_data):
	* ui-gtk.c (allocate_emacs_gtk_boxed_data):
	* ui-gtk.h:
	* unicode.c (compute_from_unicode_table_size_1):
	* unicode.c (compute_to_unicode_table_size_1):
	* window-impl.h (struct window):
	* window-impl.h (struct window_mirror):
	* window.c (allocate_window):
	* window.c (new_window_mirror):
	* window.c (make_dummy_parent):
	* window.c (compute_window_mirror_usage):
	* window.c (compute_window_usage):
	Eliminate the majority of #ifdef MC_ALLOC occurrences through
	macros LCRECORD_HEADER, ALLOC_LCRECORD_TYPE, MALLOCED_STORAGE_SIZE,
	etc. (defined in lrecord.h).

2005-10-21  Stephen J. Turnbull  <stephen@xemacs.org>

	* Makefile.in.in (mule_canna_objs): Revert canna-api to canna_api.

2005-10-13  Ben Wing  <ben@xemacs.org>

	* config.h.in:
	* alloc.c:
	* alloc.c (struct):
	* alloc.c (alloc_lrecord):
	* alloc.c (noseeum_alloc_lrecord):
	* alloc.c (finalize_string):
	* alloc.c (make_uninit_string):
	* alloc.c (make_string_nocopy):
	* alloc.c (garbage_collect_1):
	* alloc.c (object_memory_usage_stats):
	* alloc.c (HACK_O_MATIC):
	* alloc.c (Fgarbage_collect):
	* alloc.c (Ftotal_memory_usage):
	* alloc.c (recompute_need_to_garbage_collect):
	* alloc.c (common_init_alloc_early):
	* alloc.c (syms_of_alloc):
	* alloc.c (vars_of_alloc):
	* dumper.c (pdump_load_finish):
	* emacs.c:
	* emacs.c (main_1):
	* emacs.c (shut_down_emacs):
	* lrecord.h:
	* lrecord.h (MC_ALLOC_CALL_FINALIZER):
	* mc-alloc.c (remove_cell):
	* mc-alloc.h:
	* symbols.c (init_symbols_once_early):
	Rename MC_ALLOC_TYPE_STATS to ALLOC_TYPE_STATS, since
	(with refactoring) this is not really specific to mc-alloc.
	Generalize code to implement the GC % threshold for garbage
	collecting.  Rename `lrecord-stats' to `object-memory-usage-stats'
	(defined when not mc-alloc, too).  Rename `memory-usage' to
	`total-memory-usage' and add `object-memory-usage'.  Bump
	gc_cons_threshold to 2,000,000 (suggestion by Stephen Turnbull).

	Avoid use of C++ reserved word `catch'.

	Change address for crash reporting to xemacs-beta@xemacs.org from
	crashes@xemacs.org.

	new -> new_ in emacs.c.

	Turn on _CRT_SECURE_NO_DEPRECATE under Visual C++ to avoid tons of
	warnings in VC8.

2005-10-10  Andrey Slusar <anrays@gmail.com>

	* unexelf.c: define `Elfw(type)' for FreeBSD alpha and all _LP64
	archs.
	From Dejan Lesjak <dejan.lesjak@ijs.si>

2005-10-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* Makefile.in.in (mule_canna_objs): Use correct name of .o.

2005-09-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* Makefile.in.in (HAVE_CANNA): Handle Canna as a module.

	* emacs.c (main_1): Update Canna initializers to *_canna_api names.

	* mule-canna.c: Moved to modules/canna/canna_api.c.

	* symsinit.h (syms_of_mule_canna):
	(vars_of_mule_canna):
	Rename to *_of_canna_api.

2005-09-29  Ben Wing  <ben@xemacs.org>

	* alloca.c (xemacs_c_alloca):
	Don't declare a variable `register' when it can be passed to
	xfree(), which may take its address.

	new -> new_.

2005-09-26  Marcus Crestani  <crestani@xemacs.org>

	* symbols.c (check_module_subr): Fix new allocator's module
	support: remove duplicating the subr.

2005-09-27  Ben Wing  <ben@xemacs.org>

	* glyphs.c:
	* glyphs.c (find_instantiator_differences):
	* glyphs.c (Fvalid_image_instance_type_p):
	* glyphs.c (Fimage_instance_type):
	* glyphs.c (Fcolorize_image_instance):
	* glyphs.c (Fglyph_type):
	* glyphs.c (glyph_image_instance):
	* glyphs.c (image_instantiator_format_create):
	* glyphs-eimage.c:
	* glyphs-eimage.c (jpeg_instantiate):
	* glyphs-eimage.c (gif_instantiate):
	* glyphs-eimage.c (png_instantiate):
	* glyphs-eimage.c (tiff_instantiate):
	* glyphs-x.c:
	* glyphs-x.c (image_instance_convert_to_pointer):
	* glyphs-x.c (init_image_instance_from_x_image):
	* glyphs-x.c (x_init_image_instance_from_eimage):
	* glyphs-x.c (x_xpm_instantiate):
	* glyphs-x.c (x_colorize_image_instance):
	* glyphs-gtk.c:
	* glyphs-gtk.c (image_instance_convert_to_pointer):
	* glyphs-gtk.c (init_image_instance_from_gdk_image):
	* glyphs-gtk.c (gtk_init_image_instance_from_eimage):
	* glyphs-gtk.c (gtk_xpm_instantiate):
	* glyphs-msw.c:
	* glyphs-msw.c (mswindows_init_image_instance_from_eimage):
	* console-impl.h:
	* console-impl.h (struct console_methods):
	Allow all kinds of color images (GIF, JPEG, ...) to be mouse pointers.
	new -> new_, 'foo -> `foo'.

2005-09-27  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (cppflags):
	Always include SRC, so <config.h> in lib-src always works.

2005-09-27  Ben Wing  <ben@xemacs.org>

	* sysdep.c (emacs_set_tty):
	* sysdep.c (qxe_link):
	* sysdep.c (qxe_rename):
	* sysdep.c (dup2):
	Fix bit-rotted dup2 code.  Also new -> new_.
	* nt.c:
	* nt.c (mswindows_closedir):
	* nt.c (mswindows_link):
	Fix possible use of uninitialized var.  Also new -> new_.

2005-09-27  Ben Wing  <ben@xemacs.org>

	* text.c (wcscmp_ascii):
	* text.c (COPY_TEXT_BETWEEN_FORMATS):
	* event-Xt.c (x_event_to_emacs_event):
	* event-Xt.c (ShellVisualPatch):
	* lisp.h:
	* lisp.h (assert_with_message):
	* number-gmp.c (bigfloat_to_string):
	* number-gmp.h:
	Fix compilation warnings.  A couple of changes of new -> new_,
	'foo -> `foo'.

2005-09-26  Ben Wing  <ben@xemacs.org>

	* specifier.c:
	* specifier.c (Fvalid_specifier_type_p):
	* specifier.c (Fvalid_specifier_locale_p):
	* specifier.c (Fvalid_specifier_domain_p):
	* specifier.c (Fvalid_specifier_locale_type_p):
	* specifier.c (Fdefine_specifier_tag):
	* specifier.c (specifier_get_external_inst_list):
	* specifier.c (Fspecifier_specs):
	* specifier.c (Fspecifier_fallback):
	* specifier.c (specifier_instance_from_inst_list):
	* specifier.c (CHECK_INSTANCE_ENTRY):
	* specifier.c (specifier_instance_1):
	* specifier.c (specifier_instance):
	* specifier.c (specifier_matching_foo):
	* specifier.c (Fspecifier_instance):
	* specifier.c (Fspecifier_instantiator):
	* specifier.c (Fspecifier_matching_instance):
	* specifier.c (specifier_matching_foo_from_inst_list):
	* specifier.c (syms_of_specifier):
	Add `specifier-instantiator' and related primitives.

2005-09-26  Ben Wing  <ben@xemacs.org>

	* rangetab.c:
	* rangetab.c (Fmap_range_table):
	Fix bug in handling of range endpoints when not start-closed, end-open.

2005-09-17  Olivier Galibert  <galibert@xemacs.org>

	* intl.c (Fset_current_locale): setlocale return string is valid
	only until the next setlocale call.

2005-09-12  Mike Alexander  <mta@arbortext.com>

	* intl-win32.c (mswindows_current_locale): Define in non-MULE
	build.

2005-09-14  Marcus Crestani  <crestani@xemacs.org>

	* mc-alloc.c (set_lookup_table): Adjust parameter to other memset
	calls.
	* mc-alloc.c (init_mc_allocator): Zero global allocator structure.

2005-09-14  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.22 "cucumber" is released.

2005-07-29  Darryl Okahata  <darrylo@xemacs.org>

	* extents.c (lispobj_gap_array_description_1): fix the memory
	descriptions for the "gap", "offset_past_gap", and "els_past_gap"
	members.  Before, they were incorrectly defined as "XD_INT"
	objects.  They've been corrected to use "XD_ELEMCOUNT" and
	"XD_BYTECOUNT", as that is how they are defined in the actual
	Gap_Array declaration.  This is important on systems where
	sizeof(int) != sizeof(long), such as some 64-bit systems.

2005-07-24  Fabrice Popineau <Fabrice.Popineau@supelec.fr>

	* frame-msw.c (mswindows_set_frame_size): Don't have a frame size
	change trigger restoring the frame.

2005-07-20  Didier Verna  <didier@xemacs.org>

	Following suggestions from Stephen J. Turnbull:
	* faces.c (Qcyclic_face_alias): New name for
	Qcyclic_face_aliasing.
	* faces.c (Ffind_face): Use it. Rename FACE_ALIASING_MAX_DEPTH to
	FACE_ALIAS_MAX_DEPTH.
	* faces.c (syms_of_faces): Ditto.

2005-07-19  Didier Verna  <didier@xemacs.org>

	* faces.c (Ffind_face): Implement face aliasing.
	* faces.c (syms_of_faces): Define Qface_alias symbol, and
	Qcyclic_face_aliasing error symbol.

2005-07-17  Aidan Kehoe  <kehoea@parhasard.net>

	* cmds.c (Fself_insert_command):
	* editfns.c (Fchar_to_string):
	* event-stream.c (Fnext_event):
	* event-stream.c (execute_command_event):
	* events.c (Fevent_to_character):
	* keymap.c (Ftext_char_description):
	* lisp.h:
	Add back the last argument to event-to-character; document that
	it's unused.

2005-07-11  Atanu Ghosh <atanu@icsi.berkeley.edu>

	* sysdll.c (dll_open): Under MacOS X return NULL under the
	filename is NULL.  Fixes problems finding local symbols under 10.4
	(Tiger)

2005-07-07  Aidan Kehoe  <kehoea@parhasard.net>

	* console-msw.c:
	* console-msw.c (mswindows_perhaps_init_unseen_key_defaults):
	* console-msw.c (vars_of_console_mswindows):
	Rename Qseen_characters to Vmswindows_seen_characters, dump it
	when pdump is in use.

	* console-tty.c (tty_perhaps_init_unseen_key_defaults):
	* console-tty.c (vars_of_console_tty):
	Rename Qseen_characters to Vttyxo_seen_characters, dump it
	when pdump is in use.

2005-06-29  Marcus Crestani  <crestani@xemacs.org>

	Fix C++ build for unexec.
	* unexelf.c: Adjust fatal and unexec to the declarations in
	lisp.h.
	* unexelf.c (unexec): Remove unneeded arguments from fatal calls.

2005-07-03  Aidan Kehoe  <kehoea@parhasard.net>

	* event-Xt.c:
	* event-gtk.c:
	* events.c (event_to_character):
	* general-slots.h:
	Move the Qkey_mapping variable to general-slots.h, now that it's
	used outside the platform specific keyboard warning code.

2005-06-28  Marcus Crestani  <crestani@xemacs.org>

	* console-x.c (x_perhaps_init_unseen_key_defaults): Use
	build_intstring to avoid type error.
	* event-Xt.c (x_keysym_to_emacs_keysym): Add cast to avoid type
	error.

2005-06-28  Marcus Crestani  <crestani@xemacs.org>

	* .cvsignore: Add dump-size, xemacs.def, xemacs.def.in.

2005-06-28  Marcus Crestani  <crestani@xemacs.org>

	* gpmevent.c: Remove workaround.
	* gpmevent.c (Fgpm_enable): Use GET_DEFUN_LISP_OBJECT to get
	Lisp_Object of a built-in function.
	* gpmevent.c (syms_of_gpmevent): Remove workaround.
	* lisp.h (GET_DEFUN_LISP_OBJECT): New. Returns Lisp_Object of a
	DEFUN.
	* tooltalk.c (init_tooltalk): Use GET_DEFUN_LISP_OBJECT to get
	Lisp_Object of a built-in function.

2005-06-26  Aidan Kehoe  <kehoea@parhasard.net>

	* event-stream.c (command_builder_find_leaf):
	* mule-ccl.c (POSSIBLE_LEADING_BYTE_P):
	* mule-ccl.c (ccl_driver):
	Couple of build fixes.

2005-06-26  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c (POSSIBLE_LEADING_BYTE_P): Add.
	* mule-ccl.c: Check that a character set exists before using it
	to create a character.

2005-06-26  Aidan Kehoe  <kehoea@parhasard.net>

	* cmds.c (Fself_insert_command):
	No 4th arg to event_to_character.

	* console-impl.h (struct console_methods): Add a new member
	method, perhaps_init_unseen_key_defaults, which is to allow the
	console to take appropriate action--often a default binding to
	self-insert-command--when notified about a character it may not
	have seen before.

	* console-gtk.c:
	Add gtk_perhaps_init_unseen_key_defaults, a new console method,
	and a hash table it uses.

	* console-msw.c:
	Add mswindows_perhaps_init_unseen_key_defaults, a new console
	method, and a hash table it uses.

	* console-tty.c:
	Add tty_perhaps_init_unseen_key_defaults, a new console method,
	and a hash table used by it.

	* console-x.c:
	* console-x.c (x_perhaps_init_unseen_key_defaults): New.
	Given a key, if it maps to a character and we weren't previously
	aware that it could be generated on console CON, and if it's
	unbound in the global map, bind it to self-insert-command. Return
	Qt if the binding was done; Qnil if not.

	* device-gtk.c:
	* device-gtk.c (vars_of_device_gtk):
	Add a hash table var used by gtk_perhaps_init_unseen_key_defaults.

	* editfns.c (Fchar_to_string):
	Call Fevent_to_character with three arguments, not four; don't
	express a belief that the only XEmacs character encoding is
	ASCII.

	* event-Xt.c:
	* event-Xt.c (maybe_define_x_key_as_self_inserting_character):
	ascii-character -> character-of-keysym property renaming.

	* event-Xt.c (x_has_keysym):
	Make it visible to the console code, make it a little more Mule-safe.

	* event-Xt.c (index_to_name):
	Move to Mule declaration conventions.

	* event-Xt.c (x_reset_modifier_mapping):
	Move large comment from Jamie before this function.

	* event-Xt.c (x_keysym_to_emacs_keysym):
	Move to Mule declaration conventions and coding practices.

	* event-Xt.c (x_event_to_emacs_event):
	Add some comments, and the initial steps necessary for Russian C-x
	support.

	* event-msw.c (mswindows_wnd_proc):
	Don't conditionalize Russian C-x support on Mule. (I'm not certain
	if this is correct on MSW, but it's the approach I'm taking on
	X11.)

	* event-stream.c:
	Add Russian C-x support, a var to enable and disable it, remove
	composed-character-default-binding in favour of
	self-insert-command, rename
	command_builder_find_leaf_no_mule_processing to
	command_builder_find_leaf_no_jit_binding, change
	command_builder_find_leaf to tell the console-specific code to
	perhaps add a binding for keys its never seen before, and then
	retry the lookup if it would otherwise fail.

	* event-stream.c (execute_command_event):
	event-to-character has three arguments now, not four.

	* event-stream.c (vars_of_event_stream):
	Formatting clean up for inhibit-input-event-recoding.

	* event-xlike-inc.c:
	* event-xlike-inc.c (endif):
	Move x_keysym_to_character here from event-Xt.c so it can be used
	by GTK 1.0 as well; greatly expand it, to handle many more
	characters than previously.

	* events.c:
	Rename the ascii-character property, remove
	character-set-property, remove the now unused fourth argument to
	event_to_character, ditto for the event-to-character,

	* events.h (enum alternative_key_chars):
	* events.h (struct Lisp_Key_Data):
	Russian C-x processing is no longer Mule specific. (Though I'm not
	certain why a Russian speaker would be using a non-Mule build.)

	* keymap.c:
	* keymap.c (event_matches_key_specifier_p):
	* keymap.c (map_keymap_sort_predicate):
	* keymap.c (Ftext_char_description):
	* keymap.c (elide_next_two_p):
	* keymap.c (describe_map):
	Rename ascii-character to character-of-keysym, stop pretending the
	internal encoding of XEmacs is purely ASCII,

	* lisp.h:
	* sysdep.c (tty_init_sys_modes_on_device):
	One less argument to event-to-character.

2005-06-23  Marcus Crestani  <crestani@xemacs.org>

	* dumper.c (pdump_load_finish): Use EMACS_INT for elt_count.

2005-06-19  Aidan Kehoe  <kehoea@parhasard.net>

	* file-coding.c:
	* mule-coding.c:
	The vernacular in Taiwan, and thus the language for which Big5 is
	most used, is Mandarin. Taiwanese does exist, but since the
	Chinese civil war, it's used less and less in Taiwan.

2005-06-06  Marcus Crestani  <crestani@xemacs.org>

	* lisp.h (DEFUN): Define S##fname here.
	* lisp.h (DEFUN_NORETURN): Define S##fname here.
	* symeval.h (DEFSUBR_MC_ALLOC): Use already defined S##fname.

2005-06-01  Marcus Crestani  <crestani@xemacs.org>

	* ralloc.c:
	* ralloc.c (r_alloc_free): Call refill_memory_reserve only if
	MC_ALLOC is not defined.

2005-05-28  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.21 "corn" is released.

2005-05-15  Marcus Crestani  <crestani@xemacs.org>

	* alloc.c: Add string data statistics.
	* alloc.c (dec_lrecord_stats): Use size of lrecord for statistics
	and cons counter bookkeeping.
	* alloc.c (finalize_string): Add string data statistics.
	* alloc.c (make_uninit_string): Add string data statistics.
	* alloc.c (make_string_nocopy): Add string data statistics.
	* alloc.c (kkcc_marking): Move break out of #ifdef.
	* alloc.c (Flrecord_stats): New. Collect lrecord statistics.
	* alloc.c (Fgarbage_collect): Use Flrecord_stats.
	* alloc.c (syms_of_alloc): Add Flrecord_stats.
	* dumper.c: Fix hash table.
	* dumper.c (pdump_make_hash): Fix hash table.
	* dumper.c (pdump_get_mc_addr): Fix hash table.
	* dumper.c (pdump_put_mc_addr): Fix hash table.
	* dumper.c (pdump_reloc_one_mc): Fix indentation.
	* dumper.c (pdump_load_finish): Add lrecord statistics
	bookkeeping.
	* lrecord.h: Add string data statistics.
	* mc-alloc.c (remove_cell): Lrecord statistics, fix indentation.
	* mule-charset.c: Marking through *_unicode_description not
	needed.
	* symbols.c (init_symbols_once_early): Bump lrecord statistics.
	* window.c: Marking through line_start_cache not needed.
	* xemacs.def.in.in: Fix typo.

2005-05-10  Aidan Kehoe  <kehoea@parhasard.net>

	* extents.c: Clarify that the atomic extent property is a kludge
	and will go away if and when we implement something better.

2005-05-06  Dr. Volker Zell  <Dr.Volker.Zell@oracle.com>

	* sysdep.c: Use autoconf 2.59's HAVE_DECL_SYS_SIGLIST instead of
	SYS_SIGLIST_DECLARED.

2005-05-05  Aidan Kehoe  <kehoea@parhasard.net>

	* extents.c: Add some info on atomic-extents.el to the
	set-extent-property docstring.

2005-05-05  Aidan Kehoe  <kehoea@parhasard.net>

	* select.c:
	* sound.c:
	Spelling fixes to docstrings.

2005-04-27  Stephen J. Turnbull  <stephen@xemacs.org>

	Allow suppression of WM decorations.

	* frame-x.c (Qoverride_redirect): New Lisp symbol.
	(syms_of_frame_x): DEFSYMBOL it.
	(x_create_widgets): Maybe set override_redirect property on frame.
	(x_init_frame_1): Parse override-redirect from arguments.
	(default-x-frame-plist): Document usage.

	* frame.c (vars_of_frame): Improve docstring.

2005-04-12  Stephen J. Turnbull  <stephen@xemacs.org>

	* print.c (stderr_out): Document need to convert arguments.

2005-04-06  Stephen J. Turnbull  <stephen@xemacs.org>

	(Fmap_char_table): Add note about proper usage.

2005-04-10  Stephen J. Turnbull  <stephen@xemacs.org>

	* eval.c (issue_call_trapping_problems_warning): Fix argument
	count in first call to emacs_sprintf_string_lisp.

2005-04-10  Marcus Crestani  <crestani@xemacs.org>

	* dumper.c (pdump_get_mc_addr): Use clearer code.
	* dumper.c (pdump_put_mc_addr): Use clearer code.
	* emacs.c (main_1): Initialize the new allocator only once.
	* mc-alloc.c (get_page_header): Split up the assertions to better
	spot the problem.
	* mc-alloc.c (mc_alloc_1): Move definitions of local variables to
	the beginning of the function.

2005-04-01  Melvin Hadasht <melvin.hadasht@free.fr>

	* text.c (new_dfc_convert_size): Move active code out of assert.

2005-04-01  Marcus Crestani  <crestani@xemacs.org>

	The new allocator.

	New configure flag: `MC_ALLOC':

	* config.h.in: Add new flag `MC_ALLOC'.

	New files:

	* Makefile.in.in: Add new object file mc-alloc.o.
	* depend: Add new files to dependencies.
	* mc-alloc.c: New.
	* mc-alloc.h: New.

	Running the new allocator from XEmacs:

	* alloc.c (deadbeef_memory): Moved to mc-alloc.c.
	* emacs.c (main_1): Initialize the new allocator and add
	syms_of_mc_alloc.
	* symsinit.h: Add syms_of_mc_alloc.

	New lrecord allocation and free functions:

	* alloc.c (alloc_lrecord): New. Allocates an lrecord, includes
	type checking and initializing of the lrecord_header.
	* alloc.c (noseeum_alloc_lrecord): Same as above, but increments
	the NOSEEUM cons counter.
	* alloc.c (free_lrecord): New. Calls the finalizer and frees the
	lrecord.
	* lrecord.h: Add lrecord allocation prototypes and comments.

	Remove old lrecord FROB block allocation:

	* alloc.c (allocate_lisp_storage): Former function to expand
	heap. Not needed anymore, remove.
	* alloc.c: Completely remove `Fixed-size type macros'
	* alloc.c (release_breathing_space): Remove.
	* alloc.c (memory_full): Remove release_breathing_space.
	* alloc.c (refill_memory_reserve): Remove.
	* alloc.c (TYPE_ALLOC_SIZE): Remove.
	* alloc.c (DECLARE_FIXED_TYPE_ALLOC): Remove.
	* alloc.c (ALLOCATE_FIXED_TYPE_FROM_BLOCK): Remove.
	* alloc.c (ALLOCATE_FIXED_TYPE_1): Remove.
	* alloc.c (ALLOCATE_FIXED_TYPE): Remove.
	* alloc.c (NOSEEUM_ALLOCATE_FIXED_TYPE): Remove.
	* alloc.c (struct Lisp_Free): Remove.
	* alloc.c (LRECORD_FREE_P): Remove.
	* alloc.c (MARK_LRECORD_AS_FREE): Remove.
	* alloc.c (MARK_LRECORD_AS_NOT_FREE): Remove.
	* alloc.c (PUT_FIXED_TYPE_ON_FREE_LIST): Remove.
	* alloc.c (FREE_FIXED_TYPE): Remove.
	* alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC): Remove.

	Allocate old lrecords with new allocator:

	* alloc.c: DECLARE_FIXED_TYPE_ALLOC removed for all lrecords
	defined in alloc.c.
	* alloc.c (Fcons): Allocate with new allocator.
	* alloc.c (noseeum_cons): Allocate with new allocator.
	* alloc.c (make_float): Allocate with new allocator.
	* alloc.c (make_bignum): Allocate with new allocator.
	* alloc.c (make_bignum_bg): Allocate with new allocator.
	* alloc.c (make_ratio): Allocate with new allocator.
	* alloc.c (make_ratio_bg): Allocate with new allocator.
	* alloc.c (make_ratio_rt): Allocate with new allocator.
	* alloc.c (make_bigfloat): Allocate with new allocator.
	* alloc.c (make_bigfloat_bf): Allocate with new allocator.
	* alloc.c (make_compiled_function): Allocate with new allocator.
	* alloc.c (Fmake_symbol): Allocate with new allocator.
	* alloc.c (allocate_extent): Allocate with new allocator.
	* alloc.c (allocate_event): Allocate with new allocator.
	* alloc.c (make_key_data): Allocate with new allocator.
	* alloc.c (make_button_data): Allocate with new allocator.
	* alloc.c (make_motion_data): Allocate with new allocator.
	* alloc.c (make_process_data): Allocate with new allocator.
	* alloc.c (make_timeout_data): Allocate with new allocator.
	* alloc.c (make_magic_data): Allocate with new allocator.
	* alloc.c (make_magic_eval_data): Allocate with new allocator.
	* alloc.c (make_eval_data): Allocate with new allocator.
	* alloc.c (make_misc_user_data): Allocate with new allocator.
	* alloc.c (Fmake_marker): Allocate with new allocator.
	* alloc.c (noseeum_make_marker): Allocate with new allocator.
	* alloc.c (make_uninit_string): Allocate with new allocator.
	* alloc.c (resize_string): Allocate with new allocator.
	* alloc.c (make_string_nocopy): Allocate with new allocator.

	Garbage Collection:

	* alloc.c (GC_CHECK_NOT_FREE): Remove obsolete assertions.
	* alloc.c (SWEEP_FIXED_TYPE_BLOCK): Remove.
	* alloc.c (SWEEP_FIXED_TYPE_BLOCK_1): Remove.
	* alloc.c (sweep_conses): Remove.
	* alloc.c (free_cons): Use new allocator to free.
	* alloc.c (sweep_compiled_functions): Remove.
	* alloc.c (sweep_floats): Remove.
	* alloc.c (sweep_bignums): Remove.
	* alloc.c (sweep_ratios): Remove.
	* alloc.c (sweep_bigfloats): Remove.
	* alloc.c (sweep_symbols): Remove.
	* alloc.c (sweep_extents): Remove.
	* alloc.c (sweep_events): Remove.
	* alloc.c (sweep_key_data): Remove.
	* alloc.c (free_key_data): Use new allocator to free.
	* alloc.c (sweep_button_data): Remove.
	* alloc.c (free_button_data): Use new allocator to free.
	* alloc.c (sweep_motion_data): Remove.
	* alloc.c (free_motion_data): Use new allocator to free.
	* alloc.c (sweep_process_data): Remove.
	* alloc.c (free_process_data): Use new allocator to free.
	* alloc.c (sweep_timeout_data): Remove.
	* alloc.c (free_timeout_data): Use new allocator to free.
	* alloc.c (sweep_magic_data): Remove.
	* alloc.c (free_magic_data): Use new allocator to free.
	* alloc.c (sweep_magic_eval_data): Remove.
	* alloc.c (free_magic_eval_data): Use new allocator to free.
	* alloc.c (sweep_eval_data): Remove.
	* alloc.c (free_eval_data): Use new allocator to free.
	* alloc.c (sweep_misc_user_data): Remove.
	* alloc.c (free_misc_user_data): Use new allocator to free.
	* alloc.c (sweep_markers): Remove.
	* alloc.c (free_marker): Use new allocator to free.
	* alloc.c (garbage_collect_1): Remove release_breathing_space.
	* alloc.c (gc_sweep): Remove all the old lcrecord and lrecord
	related	stuff. Sweeping now works like this: compact string
	chars, finalize, sweep.
	* alloc.c (common_init_alloc_early): Remove old lrecord
	initializations, remove breathing_space.
	* emacs.c (Fdump_emacs): Remove release_breathing_space.
	* lisp.h: Remove prototype for release_breathing_space.
	* lisp.h: Adjust the special cons mark makros.

	Lrecord Finalizer:

	* alloc.c: Add finalizer to lrecord definition.
	* alloc.c (finalize_string): Add finalizer for string.
	* bytecode.c: Add finalizer to lrecord definition.
	* bytecode.c (finalize_compiled_function): Add finalizer for
	compiled function.
	* marker.c: Add finalizer to lrecord definition.
	* marker.c (finalize_marker): Add finalizer for marker.

	These changes build the interface to mc-alloc:

	* lrecord.h (MC_ALLOC_CALL_FINALIZER): Tell mc-alloc how to
	finalize lrecords.
	* lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): Tell
	mc-alloc how to finalize for disksave.

	Unify lrecords and lcrecords:

	* lisp.h (struct Lisp_String): Adjust string union hack to
	new lrecord header.
	* lrecord.h: Adjust comments.
	* lrecord.h (struct lrecord_header): The new lrecord header
	includes type, lisp-readonly, free, and uid.
	* lrecord.h (set_lheader_implementation): Adjust to new
	lrecord_header.
	* lrecord.h (struct lrecord_implementation): The field basic_p
	for indication of an old lrecord is not needed anymore, remove.
	* lrecord.h (MAKE_LRECORD_IMPLEMENTATION): Remove basic_p.
	* lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION): Remove
	basic_p.
	* lrecord.h (copy_sized_lrecord): Remove distinction between
	old lrecords and lcrecords.
	* lrecord.h (copy_lrecord): Remove distinction between old
	lrecords and lcrecords.
	* lrecord.h (zero_sized_lrecord): Remove distinction between
	old lrecords and lcrecords.
	* lrecord.h (zero_lrecord): Remove distinction between old
	lrecords and lcrecords.

	Remove lcrecords and lcrecord lists:

	* alloc.c (basic_alloc_lcrecord): Not needed anymore, remove.
	* alloc.c (very_old_free_lcrecord): Not needed anymore, remove.
	* alloc.c (copy_lisp_object): No more distinction between
	lrecords and lcrecords.
	* alloc.c (all_lcrecords): Not needed anymore, remove.
	* alloc.c (make_vector_internal): Allocate as lrecord.
	* alloc.c (make_bit_vector_internal): Allocate as lrecord.
	* alloc.c: Completely remove `lcrecord lists'.
	* alloc.c (free_description): Remove.
	* alloc.c (lcrecord_list_description): Remove.
	* alloc.c (mark_lcrecord_list): Remove.
	* alloc.c (make_lcrecord_list): Remove.
	* alloc.c (alloc_managed_lcrecord): Remove.
	* alloc.c (free_managed_lcrecord): Remove.
	* alloc.c (alloc_automanaged_lcrecord): Remove.
	* alloc.c (free_lcrecord): Remove.
	* alloc.c (lcrecord_stats): Remove.
	* alloc.c (tick_lcrecord_stats): Remove.
	* alloc.c (disksave_object_finalization_1): Add call to
	mc_finalize_for_disksave. Remove the lcrecord way to visit all
	objects.
	* alloc.c (kkcc_marking): Remove XD_FLAG_FREE_LISP_OBJECT
	* alloc.c (sweep_lcrecords_1): Remove.
	* alloc.c (common_init_alloc_early): Remove everything related
	to lcrecords, remove old lrecord initializations,
	* alloc.c (init_lcrecord_lists): Not needed anymore, remove.
	* alloc.c (reinit_alloc_early): Remove everything related to
	lcrecords.
	* alloc.c (init_alloc_once_early): Remove everything related to
	lcrecords.
	* buffer.c (allocate_buffer): Allocate as lrecord.
	* buffer.c (nuke_all_buffer_slots): Use lrecord functions.
	* buffer.c (common_init_complex_vars_of_buffer): Allocate as
	lrecord.
	* buffer.h (struct buffer): Add lrecord_header.
	* casetab.c (allocate_case_table): Allocate as lrecord.
	* casetab.h (struct Lisp_Case_Table): Add lrecord_header.
	* charset.h (struct Lisp_Charset): Add lrecord_header.
	* chartab.c (fill_char_table): Use lrecord functions.
	* chartab.c (Fmake_char_table): Allocate as lrecord.
	* chartab.c (make_char_table_entry): Allocate as lrecord.
	* chartab.c (copy_char_table_entry): Allocate as lrecord.
	* chartab.c (Fcopy_char_table): Allocate as lrecord.
	* chartab.c (put_char_table): Use lrecord functions.
	* chartab.h (struct Lisp_Char_Table_Entry): Add lrecord_header.
	* chartab.h (struct Lisp_Char_Table): Add lrecord_header.
	* console-impl.h (struct console): Add lrecord_header.
	* console-msw-impl.h (struct Lisp_Devmode): Add lrecord_header.
	* console-msw-impl.h (struct mswindows_dialog_id): Add
	lrecord_header.
	* console.c (allocate_console): Allocate as lrecord.
	* console.c (nuke_all_console_slots): Use lrecord functions.
	* console.c (common_init_complex_vars_of_console): Allocate as
	lrecord.
	* data.c (make_weak_list): Allocate as lrecord.
	* data.c (make_weak_box): Allocate as lrecord.
	* data.c (make_ephemeron): Allocate as lrecord.
	* database.c (struct Lisp_Database): Add lrecord_header.
	* database.c (allocate_database): Allocate as lrecord.
	* device-impl.h (struct device): Add lrecord_header.
	* device-msw.c (allocate_devmode): Allocate as lrecord.
	* device.c (nuke_all_device_slots): Use lrecord functions.
	* device.c (allocate_device): Allocate as lrecord.
	* dialog-msw.c (handle_question_dialog_box): Allocate as lrecord.
	* elhash.c (struct Lisp_Hash_Table): Add lrecord_header.
	* elhash.c (make_general_lisp_hash_table): Allocate as lrecord.
	* elhash.c (Fcopy_hash_table): Allocate as lrecord.
	* event-stream.c: Lcrecord lists Vcommand_builder_free_list and
	Vtimeout_free_list are no longer needed. Remove.
	* event-stream.c (allocate_command_builder): Allocate as lrecord.
	* event-stream.c (free_command_builder): Use lrecord functions.
	* event-stream.c (event_stream_generate_wakeup): Allocate as
	lrecord.
	* event-stream.c (event_stream_resignal_wakeup): Use lrecord
	functions.
	* event-stream.c (event_stream_disable_wakeup): Use lrecord
	functions.
	* event-stream.c (reinit_vars_of_event_stream): Lcrecord lists
	remove.
	* events.h (struct Lisp_Timeout): Add lrecord_header.
	* events.h (struct command_builder): Add lrecord_header.
	* extents-impl.h (struct extent_auxiliary): Add lrecord_header.
	* extents-impl.h (struct extent_info): Add lrecord_header.
	* extents.c (allocate_extent_auxiliary): Allocate as lrecord.
	* extents.c (allocate_extent_info): Allocate as lrecord.
	* extents.c (copy_extent): Allocate as lrecord.
	* faces.c (allocate_face): Allocate as lrecord.
	* faces.h (struct Lisp_Face): Add lrecord_header.
	* file-coding.c (allocate_coding_system): Allocate as lrecord.
	* file-coding.c (Fcopy_coding_system): Allocate as lrecord.
	* file-coding.h (struct Lisp_Coding_System): Add lrecord_header.
	* fns.c (Ffillarray): Allocate as lrecord.
	* frame-impl.h (struct frame): Add lrecord_header.
	* frame.c (nuke_all_frame_slots): Use lrecord functions.
	* frame.c (allocate_frame_core): Allocate as lrecord.
	* glyphs.c (allocate_image_instance): Allocate as lrecord.
	* glyphs.c (Fcolorize_image_instance): Allocate as lrecord.
	* glyphs.c (allocate_glyph): Allocate as lrecord.
	* glyphs.h (struct Lisp_Image_Instance): Add lrecord_header.
	* glyphs.h (struct Lisp_Glyph): Add lrecord_header.
	* gui.c (allocate_gui_item): Allocate as lrecord.
	* gui.h (struct Lisp_Gui_Item): Add lrecord_header.
	* keymap.c (struct Lisp_Keymap): Add lrecord_header.
	* keymap.c (make_keymap): Allocate as lrecord.
	* lisp.h (struct Lisp_Vector): Add lrecord_header.
	* lisp.h (struct Lisp_Bit_Vector): Add lrecord_header.
	* lisp.h (struct weak_box): Add lrecord_header.
	* lisp.h (struct ephemeron): Add lrecord_header.
	* lisp.h (struct weak_list): Add lrecord_header.
	* lrecord.h (struct lcrecord_header): Not used, remove.
	* lrecord.h (struct free_lcrecord_header): Not used, remove.
	* lrecord.h (struct lcrecord_list): Not needed anymore, remove.
	* lrecord.h (lcrecord_list): Not needed anymore, remove.
	* lrecord.h: (enum data_description_entry_flags): Remove
	XD_FLAG_FREE_LISP_OBJECT.
	* lstream.c: Lrecord list Vlstream_free_list remove.
	* lstream.c (Lstream_new): Allocate as lrecord.
	* lstream.c (Lstream_delete): Use lrecod functions.
	* lstream.c (reinit_vars_of_lstream): Vlstream_free_list
	initialization remove.
	* lstream.h (struct lstream): Add lrecord_header.
	* emacs.c (main_1): Remove lstream initialization.
	* mule-charset.c (make_charset): Allocate as lrecord.
	* objects-impl.h (struct Lisp_Color_Instance): Add
	lrecord_header.
	* objects-impl.h (struct Lisp_Font_Instance): Add lrecord_header.
	* objects.c (Fmake_color_instance): Allocate as lrecord.
	* objects.c (Fmake_font_instance): Allocate as lrecord.
	* objects.c (reinit_vars_of_objects): Allocate as lrecord.
	* opaque.c: Lcreord list Vopaque_ptr_list remove.
	* opaque.c (make_opaque): Allocate as lrecord.
	* opaque.c (make_opaque_ptr): Allocate as lrecord.
	* opaque.c (free_opaque_ptr): Use lrecord functions.
	* opaque.c (reinit_opaque_early):
	* opaque.c (init_opaque_once_early): Vopaque_ptr_list
	initialization remove.
	* opaque.h (Lisp_Opaque): Add lrecord_header.
	* opaque.h (Lisp_Opaque_Ptr): Add lrecord_header.
	* emacs.c (main_1): Remove opaque variable initialization.
	* print.c (default_object_printer): Use new lrecord_header.
	* print.c (print_internal): Use new lrecord_header.
	* print.c (debug_p4): Use new lrecord_header.
	* process.c (make_process_internal): Allocate as lrecord.
	* procimpl.h (struct Lisp_Process): Add lrecord_header.
	* rangetab.c (Fmake_range_table): Allocate as lrecord.
	* rangetab.c (Fcopy_range_table): Allocate as lrecord.
	* rangetab.h (struct Lisp_Range_Table): Add lrecord_header.
	* scrollbar.c (create_scrollbar_instance): Allocate as lrecord.
	* scrollbar.h (struct scrollbar_instance): Add lrecord_header.
	* specifier.c (make_specifier_internal): Allocate as lrecord.
	* specifier.h (struct Lisp_Specifier): Add lrecord_header.
	* symbols.c:
	* symbols.c (Fmake_variable_buffer_local): Allocate as lrecord.
	* symbols.c (Fdontusethis_set_symbol_value_handler): Allocate
	as lrecord.
	* symbols.c (Fdefvaralias): Allocate as lrecord.
	* symeval.h (struct symbol_value_magic): Add lrecord_header.
	* toolbar.c (update_toolbar_button): Allocate as lrecord.
	* toolbar.h (struct toolbar_button): Add lrecord_header.
	* tooltalk.c (struct Lisp_Tooltalk_Message): Add lrecord_header.
	* tooltalk.c (make_tooltalk_message): Allocate as lrecord.
	* tooltalk.c (struct Lisp_Tooltalk_Pattern): Add lrecord_header.
	* tooltalk.c (make_tooltalk_pattern): Allocate as lrecord.
	* ui-gtk.c (allocate_ffi_data): Allocate as lrecord.
	* ui-gtk.c (allocate_emacs_gtk_object_data): Allocate as lrecord.
	* ui-gtk.c (allocate_emacs_gtk_boxed_data): Allocate as lrecord.
	* ui-gtk.h (structs): Add lrecord_header.
	* window-impl.h (struct window): Add lrecord_header.
	* window-impl.h (struct window_mirror): Add lrecord_header.
	* window.c (allocate_window): Allocate as lrecord.
	* window.c (new_window_mirror): Allocate as lrecord.
	* window.c (make_dummy_parent): Allocate as lrecord.

	MEMORY_USAGE_STATS

	* alloc.c (fixed_type_block_overhead): Not used anymore, remove.
	* buffer.c (compute_buffer_usage): Get storage size from new
	allocator.
	* marker.c (compute_buffer_marker_usage): Get storage size from
	new allocator.
	* mule-charset.c (compute_charset_usage): Get storage size from
	new allocator.
	* scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): Get
	storage size from new allocator.
	* scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage):
	Get storage size from new allocator.
	* scrollbar-x.c (x_compute_scrollbar_instance_usage): Get
	storage	size from new allocator.
	* scrollbar.c (compute_scrollbar_instance_usage): Get storage
	size from new allocator.
	* unicode.c (compute_from_unicode_table_size_1): Get storage
	size from new allocator.
	* unicode.c (compute_to_unicode_table_size_1): Get storage size
	from new allocator.
	* window.c (compute_window_mirror_usage): Get storage size from
	new allocator.
	* window.c (compute_window_usage): Get storage size from new
	allocator.

	MC_ALLOC_TYPE_STATS:

	* alloc.c (alloc_lrecord): Bump lrecord count.
	* alloc.c (noseeum_alloc_lrecord): Bump lrecord count.
	* alloc.c (struct lrecord_stats): Storage for counts.
	* alloc.c (init_lrecord_stats): Zero statistics.
	* alloc.c (inc_lrecord_stats): Increase the statistic.
	* alloc.c (dec_lrecord_stats): Decrease the statistic.
	* alloc.c (gc_plist_hack): Used to print the information.
	* alloc.c (Fgarbage_collect): Return the collected information.
	* mc-alloc.c (remove_cell): Decrease lrecord count.
	* mc-alloc.h: Set flag MC_ALLOC_TYPE_STATS.
	* emacs.c (main_1): Init lrecord statistics.
	* lrecord.h: Add prototypes for *_lrecord_stats.

	Strings:

	* alloc.c (Fmake_string): Initialize ascii_begin to zero.
	* alloc.c (gc_count_num_short_string_in_use): Remove.
	* alloc.c (gc_count_string_total_size): Remove.
	* alloc.c (gc_count_short_string_total_size): Remove.
	* alloc.c (debug_string_purity): Remove.
	* alloc.c (debug_string_purity_print): Remove.
	* alloc.c (sweep_strings): Remove.

	Remove static C-readonly Lisp objects:

	* alloc.c (c_readonly): Not needed anymore, remove.
	* alloc.c (GC_CHECK_LHEADER_INVARIANTS): Remove some obsolete
	lheader invariants assertions.
	* buffer.c (DEFVAR_BUFFER_LOCAL_1): Allocate dynamically.
	* console.c (DEFVAR_CONSOLE_LOCAL_1): Allocate dynamically.
	* gpmevent.c: Indirection via MC_ALLOC_Freceive_gpm_event.
	* gpmevent.c (Fgpm_enable): Allocate dynamically.
	* gpmevent.c (syms_of_gpmevent): Allocate dynamically.
	* lisp.h (C_READONLY): Not needed anymore, remove.
	* lisp.h (DEFUN): Allocate dynamically.
	* lrecord.h (C_READONLY_RECORD_HEADER_P): Not needed anymore,
	remove.
	* lrecord.h (SET_C_READONLY_RECORD_HEADER): Not needed anymore,
	remove.
	* symbols.c (guts_of_unbound_marker):
	* symeval.h (defsubr): Allocate dynamically.
	* symeval.h (DEFSUBR_MACRO): Allocate dynamically.
	* symeval.h (DEFVAR_ SYMVAL_FWD): Allocate dynamically.
	* tests.c (TESTS_DEFSUBR): Allocate dynamically.

	Definition of mcpro:

	* lisp.h: Add mcpro prototypes.
	* alloc.c (common_init_alloc_early): Add initialization for
	mcpros.
	* alloc.c (mcpro_description_1): New.
	* alloc.c (mcpro_description): New.
	* alloc.c (mcpros_description_1): New.
	* alloc.c (mcpros_description): New.
	* alloc.c (mcpro_one_name_description_1): New.
	* alloc.c (mcpro_one_name_description): New.
	* alloc.c (mcpro_names_description_1): New.
	* alloc.c (mcpro_names_description): New.
	* alloc.c (mcpros): New.
	* alloc.c (mcpro_names): New.
	* alloc.c (mcpro_1): New.
	* alloc.c (mc_pro): New.
	* alloc.c (garbage_collect_1): Add mcpros to root set.

	Usage of mcpro:

	* alloc.c (make_string_nocopy): Add string to root set.
	* symbols.c (init_symbols_once_early): Add Qunbound to root set.

	Changes to the Portable Dumper:

	* alloc.c (FREE_OR_REALLOC_BEGIN): Since dumped objects can be
	freed with the new allocator, remove assertion for !DUMPEDP.
	* dumper.c: Adjust comments, increase PDUMP_HASHSIZE.
	* dumper.c (pdump_make_hash): Shift address only 2 bytes, to
	avoid collisions.
	* dumper.c (pdump_objects_unmark): No more mark bits within
	the object, remove.
	* dumper.c (mc_addr_elt): New. Element data structure for mc
	hash table.
	* dumper.c (pdump_mc_hash): New hash table: `lookup table'.
	* dumper.c (pdump_get_mc_addr): New. Lookup for hash table.
	* dumper.c (pdump_get_indirect_mc_addr): New. Lookup for
	convertibles.
	* dumper.c (pdump_put_mc_addr): New. Putter for hash table.
	* dumper.c (pdump_dump_mc_data): New. Writes the table for
	relocation at load time to the dump file.
	* dumper.c (pdump_scan_lisp_objects_by_alignment): New.
	Visits all dumped Lisp objects.
	* dumper.c (pdump_scan_non_lisp_objects_by_alignment): New.
	Visits all other dumped objects.
	* dumper.c (pdump_reloc_one_mc): New. Updates all pointers
	of an object by using the hash table pdump_mc_hash.
	* dumper.c (pdump_reloc_one): Replaced by pdump_reloc_one_mc.
	* dumper.c (pdump): Change the structure of the dump file, add
	the mc post dump relocation table to dump file.
	* dumper.c (pdump_load_finish): Hand all dumped objects to the
	new allocator and use the mc post dump relocation table for
	relocating the dumped objects at dump file load time, free not
	longer used data structures.
	* dumper.c (pdump_load): Free the dump file.
	* dumper.h: Remove pdump_objects_unmark.
	* lrecord.h (DUMPEDP): Dumped objects can be freed, remove.

	DUMP_IN_EXEC:

	* Makefile.in.in: Linking for and with dump in executable only if
	DUMP_IN_EXEC is defined.
	* config.h.in: Add new flag `DUMP_IN_EXEC'
	* emacs.c: Condition dump-data.h on DUMP_IN_EXEC.
	* emacs.c (main_1): Flag `-si' only works if dump image is
	written	into executable.

	Miscellanious

	* lrecord.h (enum lrecord_type): Added numbers to all types,
	very handy for debugging.
	* xemacs.def.in.in: Add mc-alloc functions to make them visible
	to the modules.

2005-04-06  Stephen J. Turnbull  <stephen@xemacs.org>

	* chartab.c (Fchar_table_p):
	(Fget_range_char_table):
	(Fput_char_table):
	(Fmap_char_table):
	Describe range representation and fix typo.

2005-04-05  Aidan Kehoe  <kehoea@parhasard.net>

	* mule-ccl.c (ccl_driver): Calculate the charset and position code
	for control-1 characters properly, both when reading multibyte
	characters and writing them.

2005-03-31  Aidan Kehoe  <kehoea@parhasard.net>

	* unicode.c (set_unicode_conversion): Don't try to write to the
	non-existent conversion tables for ASCII and control-1, in the
	interest of not segfaulting.
	* unicode.c (unicode_convert): The "position code" for a control-1
	character has #xA0 added to it when encoded in Mule, unlike #x80
	for all the other non-ASCII character sets ; take this into
	account.

2005-03-29  Aidan Kehoe  <kehoea@parhasard.net>

	* event-Xt.c: Declare Funicode_to_char.
	* event-Xt.c (x_keysym_to_character): Use it, if we're handed a
	keysym for which it's appropriate.

2005-03-26  Jerry James  <james@xemacs.org>

	* dumper.c (BACKTRACE_MAX): New constant defining length of static
	backtrace array.
	* dumper.c (pdump_bump_depth): Use it, and avoid buffer overflow
	by fixing comparison.

2005-02-24  Andrey Slusar  <anrays@gmail.com>

	* unexelf.c: define `Elfw(type)' for FreeBSD alpha and amd64.

2005-03-25  Marcus Crestani  <crestani@xemacs.org>

	* device-x.c: Include process.h for egetenv.

2005-03-24  Aidan Kehoe  <kehoea@parhasard.net>

	* device-x.c (x_init_device): Only do the old application class
	determination behaviour if the
	USE_EMACS_AS_DEFAULT_APPLICATION_CLASS environment variable is
	set; otherwise, we use XEmacs.
	* device-x.c (vars_of_device_x): Update the docstring for
	x-emacs-application-class.
	* frame.c: default-frame-name is now "XEmacs", unless the old X11
	resources behaviour has been requested.

2005-03-15  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* alloc.c: Dynamically allocate KKCC backtrace stack and some
	minor typo-fixes for KKCC functions.
	* alloc.c (lispdesc_indirect_count_1): Condition kkcc_backtrace on
	DEBUG_XEMACS.
	* alloc.c (kkcc_bt_init): New.
	* alloc.c (kkcc_bt_stack_realloc): New.
	* alloc.c (kkcc_bt_free): New.
	* alloc.c (kkcc_bt_push): If stack size is exhausted, realloc the
	stack.
	* alloc.c (kkcc_marking): Init and free backtrace stack.

2005-03-13  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* alloc.c (KKCC_BT_STACK_SIZE): Temporary fix for KKCC
	backtrace. Thanks to Adrian.

2005-03-13  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	Fix native Windows build if DEBUG_XEMACS is not defined.
	* alloc.c (MALLOC_BEGIN): Remove unused parameter.
	* intl-win32.c (unicode_multibyte_convert_size): Move function
	call out of assert.

2005-03-11  David Robinow <drobinow@yahoo.com>

	* syssignal.h: Configure always sets HAVE_DECL_SYS_SIGLIST.  Test
	for non-zero.

2005-03-11  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.20 "cilantro" is released.

2005-03-07  Malcolm Purvis  <malcolmp@xemacs.org>

	* config.h.in: Remove trailing comments, which autoconf 2.59 does
	not like.  Use autoconf 2.59's HAVE_DECL_SYS_SIGLIST instead of
	SYS_SIGLIST_DECLARED.
	* syssignal.h: Use autoconf 2.59's HAVE_DECL_SYS_SIGLIST instead
	of SYS_SIGLIST_DECLARED.

2005-03-11  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* alloc.c (kkcc_backtrace): Fix C++ build: do typecasts correctly.

2005-03-09  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* database.c (berkdb_map): Add typecasts.

2005-03-01  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* alloc.c: Add functionality for backtracing the KKCC mark
	algorithm.
	* alloc.c (kkcc_backtrace): New.
	* alloc.c (kkcc_bt_push): New.
	* alloc.c (kkcc_gc_stack_push):
	* alloc.c (kkcc_gc_stack_push_lisp_object):
	* alloc.c (mark_object_maybe_checking_free):
	* alloc.c (mark_struct_contents):
	* alloc.c (kkcc_marking):
	* alloc.c (mark_object):
	* data.c (finish_marking_weak_lists):
	* data.c (continue_marking_ephemerons):
	* data.c (finish_marking_ephemerons):
	* elhash.c (MARK_OBJ):
	* lisp.h:
	* profile.c (mark_profiling_info_maphash): Add level (current
	depth of mark tree) and pos (position within description) as
	additional arguments to KKCC mark functions.

2004-10-25  Mike Alexander  <mta@arbortext.com>

	* Makefile.in.in (obj_src): Fix a typo in the PDUMP section

2005-03-02  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* redisplay.h (struct rune): make type field an int, to fix
	KKCC marking of unions.

2005-01-13  Stephen J. Turnbull  <stephen@xemacs.org>

	* regex.c (re_match_2_internal):
	* regex.h (struct re_pattern_buffer):
	Improve comments.  Add a DEBUG_PRINT2 for null matches.

2005-03-02  Aidan Kehoe  <kehoea@parhasard.net>

	* select-x.c (x_reply_selection_request): Check that
	XtWindowToWidget returns NULL before calling XtRegisterDrawable,
	document why.

2005-03-02  Aidan Kehoe  <kehoea@parhasard.net>

	* select-x.c (x_reply_selection_request): Make the error message
	in the absence of HAVE_XTREGISTERDRAWABLE more polite, pass a
	second argument to invalid_operation to have it actually compile
	in that case.

2005-03-01  Aidan Kehoe  <kehoea@parhasard.net>

	* config.h.in: New macro, HAVE_XTREGISTERDRAWABLE.
	* select-x.c (x_reply_selection_request): Use it.

2005-03-01  Aidan Kehoe  <kehoea@parhasard.net>

	* select-x.c (x_reply_selection_request): Wrap
	DEVICE_SELECTED_FRAME in XFRAME --> fixes a build failure.

2005-03-01  Aidan Kehoe  <kehoea@parhasard.net>

	* unicode.c: The Mule character encoding model means that extant
	Unicode coding systems will lose data. Make this clear in the
	docstring of unicode-to-char, give sample code to implement
	support for some desired code points should our distributors want
	to do that.

2005-02-28  Aidan Kehoe  <kehoea@parhasard.net>

	* select-gtk.c (emacs_gtk_selection_handle):
	* select-gtk.c (emacs_gtk_selection_clear_event_handle):
	Use get_selection_raw_timestamp instead of Fget_selection_timestamp.
	* select-gtk.c (gtk_own_selection):
	Cross reference to some debate in select-x.c
	* select-x.c:
	* select-x.c (x_handle_selection_request):
	Discuss Time vs. time_t--I think Time is _always_ thirty-two-bit
	and time_t is variable in size.
	* select-x.c (x_handle_selection_clear):
	Replace call to Fget_selection_timestamp with call to
	get_selection_raw_time, check that pasted data pointer is non-zero
	before trying to free it.
	* select.c:
	* select.c (Fown_selection_internal):
	Informative comment! Shouldn't actually be needed outside of the X
	world.
	* select.c (get_selection_raw_time): New function.
	* select.c (Fget_selection_timestamp): Rework to use
	get_selection_raw_time.
	* select.h:
	Make get_selection_raw_time available.

2005-02-26  Aidan Kehoe  <kehoea@parhasard.net>

	* select-x.c (x_reply_selection_request): Use XtRegisterDrawable
	to tell Xt not to drop PropertyChange events destined for the
	selection request target window. This makes incremental selection
	transfer work, instead of looping until interrupted.

2005-01-06  Andrey Slusar  <anrays@gmail.com>

	* s/freebsd.h: fix build on the FreeBSD 6

2005-02-21  Stephen J. Turnbull  <stephen@xemacs.org>

	* emacs.c (xemacs-release-date): New version info variable.
	* config.h.in (XEMACS_RELEASE_DATE): New config.h macro.

	* emacs.c (inhibit-early-packages):
	(inhibit-all-packages):
	(xemacs-extra-name): Improve docstrings.

2005-02-18  Jerry James  <james@xemacs.org>

	* number.c: Define USED_IF_BIGFLOAT.
	* number.c (Fcoerce_number): Use it.

2005-02-18  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.19 "chives" is released.

2005-02-04  Vin Shelton  <acs@xemacs.org>

	* lread.c (check_if_suppressed, check_if_suppressed):
	EXTERNAL_LIST_LOOP_2 declares variables and must be enclosed in
	braces.  Thanks, Fabrice.

2005-02-03  David Evers  <extsw@appliedgenerics.com>

	* process-unix.c (unix_send_process): Flush the last chunk, even
	when the pipe is blocked.

2005-02-03  Ben Wing  <ben@xemacs.org>

	* dumper.c:
	* dumper.c (pdump_file_try):
	* dumper.c (DUMP_SLACK):
	* dumper.c (pdump_load):
	Include extra DUMP_SLACK when allocating space for exe path.

	* glyphs-eimage.c:
	Reformat comment.

	* sysproc.h:
	Delete out-of-date comment about abort.

2005-02-03  Jerry James  <james@xemacs.org>

	* dumper.c (pdump_load_finish): Cast to Rawbyte * instead of char *.

2005-02-03  Jerry James  <james@xemacs.org>

	* config.h.in: Remove #define this c_this.
	* device-x.c (construct_name_list): Rename this -> this_widget.
	* eval.c (wants_debugger): Rename this -> curr.
	* frame.c (delete_frame_internal): Rename this -> this_frame.
	* gui-gtk.c (ungcpro_popup_callbacks): Rename this -> this_callback.
	* gui-gtk.c (get_gcpro_popup_callbacks): Ditto.
	* gui-x.c (gcpro_popup_callbacks): Ditto.
	* gui-x.c (ungcpro_popup_callbacks): Ditto.
	* lisp.h: Remove #undef this and #defin this c_this.
	* redisplay.c (generate_fstring_runes): Rename this -> this_str.

2005-02-01  Jerry James  <james@xemacs.org>

	* dumper.c: Olivier Galibert's changes to enable dumping data via
	a Java-like serialization/deserialization process.

	* number.c: OG's bignum conversion functions.  Also, use the
	dumping capability to initialize bigfloat-max-prec sanely.

	* alloc.c:
	* buffer.c:
	* bytecode.c:
	* console.c:
	* data.c:
	* device.c:
	* elhash.c:
	* eval.c:
	* events.c:
	* extents.c:
	* file-coding.c:
	* frame.c:
	* glyphs.c:
	* lstream.c:
	* marker.c:
	* mule-charset.c:
	* mule-coding.c:
	* objects.c:
	* profile.c:
	* rangetab.c:
	* redisplay.c:
	* specifier.c:
	* unicode.c:
	* window.c:
	Add curly braces to the data2 arg of each memory_description
	initializer.  Add a union member name to each reference to data2.

	* lrecord.h: Ditto.  OG changes to add and document
	XD_OPAQUE_PTR_CONVERTIBLE and XD_OPAQUE_DATA_CONVERTIBLE.  Add
	memory_contents_description to solve pointer aliasing problems.

2005-02-02  Ben Wing  <ben@xemacs.org>

	* lread.c:
	* lread.c (check_if_suppressed):
	* lread.c (Fload_internal):
	* lread.c (locate_file_in_directory_mapper):
	* lread.c (readevalloop):
	* lread.c (syms_of_lread):
	* lread.c (vars_of_lread):
	* lisp.h:
	Remove undeeded Vload_file_name_internal_the_purecopy,
	Qload_file_name -- use internal_bind_lisp_object instead of
	specbind.

	Add load-suppress-alist.

2005-02-02  Ben Wing  <ben@xemacs.org>

	* menubar.c:
	* menubar.c (Fcompare_menu_text):
	New fun to compare menu itext as if the two were normalized.

	* menubar.c (Fnormalize_menu_text):
	* menubar.c (syms_of_menubar):
	Rename; there are no external callers of this function.
	Remove unneeded BUFFER argument.  Don't downcase.
	(This will be done in compare-menu-text.)
	Document that return value may be same string.

2003-02-15  Ben Wing  <ben@xemacs.org>

	* syswindows.h: Define W32API_2_2 for w32api.h v2.2 or higher.
	Use it when defining a missing structure that is present in this
	version of w32api.h.
	* event-msw.c (mswindows_wnd_proc): Conditionalize bug fix on
	!W32API_2_2.

2005-01-31  Ben Wing  <ben@xemacs.org>

	* emacs.c:
	Define assert_failed() always.
	* lisp.h:
	Always define ABORT().

2005-01-29  Ben Wing  <ben@xemacs.org>

	* alloc.c (garbage_collect_1):
	* backtrace.h:
	* bytecode.c (execute_rare_opcode):
	* cmdloop.c:
	* cmdloop.c (initial_command_loop):
	* cmdloop.c (Frecursive_edit):
	* cmdloop.c (call_command_loop):
	* eval.c:
	* eval.c (call_debugger):
	* eval.c (Fcatch):
	* eval.c (internal_catch):
	* eval.c (throw_or_bomb_out):
	* eval.c (condition_case_1):
	* eval.c (maybe_get_trapping_problems_backtrace):
	* eval.c (flagged_a_squirmer):
	* eval.c (issue_call_trapping_problems_warning):
	* eval.c (call_trapping_problems):
	* lisp.h:
	* macros.c (Fexecute_kbd_macro):
	Also include a backtrace when we catch an attempt to throw outside
	of a function where call_trapping_problems() has been used.

2005-01-29  Ben Wing  <ben@xemacs.org>

	* file-coding.c (snarf_coding_system):
	Use UExtbyte for semantic correctness.
	* file-coding.c (look_for_coding_system_magic_cookie):
	Fix code that recognizes ;;;###coding cookie.

2005-01-27  Ben Wing  <ben@xemacs.org>

	* console-impl.h (struct console_methods):
	* objects-gtk.c:
	* objects-gtk.c (gtk_color_list):
	* objects-gtk.c (gtk_font_list):
	* objects-gtk.c (console_type_create_objects_gtk):
	* objects-gtk.c (__gtk_font_list_internal):
	* objects-msw.c:
	* objects-msw.c (mswindows_font_list):
	* objects-msw.c (mswindows_find_charset_font):
	* objects-msw.c (mswindows_color_list):
	* objects-msw.c (syms_of_objects_mswindows):
	* objects-msw.c (console_type_create_objects_mswindows):
	* objects-tty.c (tty_color_list):
	* objects-tty.c (tty_font_list):
	* objects-tty.c (syms_of_objects_tty):
	* objects-tty.c (console_type_create_objects_tty):
	* objects-x.c:
	* objects-x.c (x_color_list):
	* objects-x.c (x_font_list):
	* objects-x.c (console_type_create_objects_x):
	* objects.c:
	* objects.c (Fcolor_list):
	* objects.c (Ffont_list):
	* objects.c (syms_of_objects):
	list-fonts->font-list.  Create color-list.  Abstract out
	x/msw-specific versions and obsolete the x/msw-specific Lisp
	functions.

2005-01-27  Ben Wing  <ben@xemacs.org>

	* nt.c:
	* fileio.c:
	Fix sync comments.

	* config.h.in:
	* dired-msw.c (mswindows_get_files):
	* emacs.c (main_1):
	* event-msw.c (mswindows_wnd_proc):
	* fileio.c:
	* fileio.c (find_end_of_directory_component):
	* fileio.c (Ffile_name_directory):
	* fileio.c (Ffile_name_as_directory):
	* fileio.c (if):
	* fileio.c (Ffile_truename):
	* fileio.c (Ffile_readable_p):
	* fileio.c (Ffile_symlink_p):
	* fileio.c (Ffile_accessible_directory_p):
	* fileio.c (vars_of_fileio):
	* glyphs.c:
	* glyphs.c (pixmap_to_lisp_data):
	* lisp.h:
	* nt.c:
	* nt.c (get_long_basename):
	* nt.c (get_cached_volume_information):
	* nt.c (mswindows_readdir):
	* nt.c (open_unc_volume):
	* nt.c (mswindows_access):
	* nt.c (mswindows_link):
	* nt.c (mswindows_rename):
	* nt.c (mswindows_unlink):
	* nt.c (mswindows_stat):
	* nt.c (mswindows_utime):
	* nt.c (open_input_file):
	* nt.c (open_output_file):
	* nt.c (Fmswindows_short_file_name):
	* nt.c (init_nt):
	* process-nt.c (nt_create_process):
	* realpath.c:
	* realpath.c (readlink_or_correct_case):
	* realpath.c (qxe_realpath):
	* sound.c (Fplay_sound_file):
	* symsinit.h:
	* sysdep.c:
	* sysdep.c (qxe_lstat):
	* sysdep.c (qxe_stat):
	* sysfile.h:
	* syswindows.h:
	* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
	* syswindows.h (LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR):
	* win32.c:
	* win32.c (Fmswindows_shell_execute):
	* win32.c (struct read_link_hash):
	* win32.c (mswindows_read_link_1):
	* win32.c (mswindows_read_link):
	* win32.c (vars_of_win32):
	* win32.c (init_win32):
	Add support for treating shortcuts under Windows as symbolic links.
	Enabled with mswindows-shortcuts-are-links (t by default).  Rewrite
	lots of places to use PATHNAME_CONVERT_OUT, which is moved to
	sysfile.h.  Add PATHNAME_RESOLVE_LINKS, which only does things
	under Windows.

	Add profiling section for expand_file_name calls.

	* nt.c (mswindows_rename):
	* nt.c (mswindows_unlink):
	* sysdep.c (sys_subshell):
	Unicode-ize.

	* realpath.c (readlink_or_correct_case):
	Renamed from readlink_and_correct_case.  Fix some problems with
	Windows implementation due to incorrect understanding of workings
	of the function.

	* sound.c (Fplay_sound_file):
	* ntplay.c (nt_play_sound_file):
	* sound.c:
	* sound.h:
	Rename play_sound_file to nt_play_sound_file and pass
	internally-formatted data to it to avoid converting out and back
	again.

	* text.h:
	is_c -> is_ascii.

2005-01-26  Ben Wing  <ben@xemacs.org>

	* free-hook.c (check_free):
	Fix aliasing warning.

2005-01-26  Ben Wing  <ben@xemacs.org>

	* redisplay.c:
	* redisplay.c (generate_displayable_area):
	* redisplay.c (regenerate_window):
	* redisplay.h:
	* signal.c:
	* signal.c (check_quit):
	Move backtraces to internals manual.  Fix some race conditions
	leading to crashes due to incomplete protection of critical
	sections.  In signal.c, be more aggressive in catching incomplete
	critical section protection -- we cannot even check for QUIT,
	*EVER*, in a critical section.

2005-01-26  Ben Wing  <ben@xemacs.org>

	* emacs.c:
	Update history section.

2005-01-26  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	Clean up and generalize creation of string hash tables.
	Use Hashcode rather than unsigned long.

2005-01-26  Ben Wing  <ben@xemacs.org>

	* emacs-marshals.c:
	* emacs-marshals.c (initialize_marshaller_storage):
	* hash.c:
	* hash.c (string_equal):
	* hash.c (make_hash_table):
	* hash.h:
	* ui-gtk.c (type_already_imported_p):
	Clean up and generalize creation of string hash tables.

	* ui-gtk.c (emacs_gtk_boxed_hash):
	* elhash.h:
	* gccache-gtk.c (gc_cache_hash):
	* glyphs-gtk.c (gtk_image_instance_hash):
	* lrecord.h (struct lrecord_implementation):
	* marker.c (marker_hash):
	* objects-gtk.c (gtk_color_instance_hash):
	* objects-msw.c (mswindows_color_instance_hash):
	* objects-tty.c (tty_color_instance_hash):
	* objects-x.c (x_color_instance_hash):
	* objects.c (color_instance_hash):
	* objects.c (font_instance_hash):
	* opaque.c (hash_opaque):
	* opaque.c (hash_opaque_ptr):
	* rangetab.c (range_table_entry_hash):
	* rangetab.c (range_table_hash):
	* specifier.c (specifier_hash):
	* specifier.h (struct specifier_methods):
	* xgccache.c (gc_cache_hash):
	Use Hashcode rather than unsigned long.

2005-01-26  Ben Wing  <ben@xemacs.org>

	* profile.c:
	* profile.c (vars_of_profile):
	* profile.h:
	Add fillers for easier temporary profiling.
	Add RETURN_UNGCPRO_EXIT_PROFILING, RETURN_EXIT_PROFILING.

2005-01-25  Ben Wing  <ben@xemacs.org>

	* extents.c:
	* extents.c (next_previous_single_property_change):
	* extents.c (next_previous_single_property_change_fn):
	* extents.c (syms_of_extents):
	* extents.h:
	* indent.c (last_visible_position):
	* syntax.c (update_syntax_cache):
	Implement next/previous-single-char-property-change and make
	next/previous-single-property-change work like in FSF.

2005-01-25  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in:
	* Makefile.in.in (%.o):
	Don't compile executable as Windows (-mwindows) under Cygwin.
	Semi-recent changes to Cygwin's executable-startup handling make
	it impossible to access the TTY this way.

	Don't use special linker file under Cygwin (cygwin.sc) except
	when non-PDUMP (even in this case it is highly questionable); you
	get errors like

      1 [main] temacs 1364 fhandler_console::fixup_after_exec: error opening input console handle after exec, errno 13, Win32 error 5
   5820 [main] temacs 1364 fhandler_console::fixup_after_exec: error opening output console handle after exec, errno 13, Win32 error 5

2005-01-24  Ben Wing  <ben@xemacs.org>

	* bytecode.c (optimize_compiled_function):
	* print.c (ONE_DIGIT):
	Add casts to avoid warning.

	* compiler.h:
	Add MSC_VERSION and include definitions of DOESNT_RETURN and
	friends here, like for GCC.  Need different definitions for VC7
	and VC6.

	* s/windowsnt.h:
	Remove stuff moved to compiler.h.  Disable warning 4646	("function
	declared with __declspec(noreturn) has non-void return type")
	on VC7 since lots of Lisp primitives trigger this and there is
	no easy way to kludge around the warning.

	* glyphs-eimage.c:
	Some really nasty hacks to allow TIFF and JPEG to both be compiled.
	#### The better solution is to move the TIFF and JPEG code to
	different files.

	* glyphs-msw.c (mswindows_xbm_instantiate):
	Define __STDC__ to avoid problems with compface.h.

	* intl-auto-encap-win32.c (qxeImmGetCandidateListCount):
	* intl-auto-encap-win32.c (qxeFindResourceEx):
	* intl-auto-encap-win32.h:
	* intl-encap-win32.c:
	* intl-encap-win32.c (qxeImmGetCompositionFont):
	* syswindows.h:
	Those wankers at Microsoft cannot leave well enough alone.
	Various functions change parameter types semi-randomly between
	VC6 and VC7, so we need to include our own versions that
	can handle both kinds with appropriate casting.

	* EmacsFrame.c (EmacsFrameRecomputeCellSize):
	* EmacsShell-sub.c:
	* EmacsShell-sub.c (ABORT):
	* EmacsShell-sub.c (SuperClassRootGeometryManager):
	* EmacsShell-sub.c (RootGeometryManager):
	* EmacsShell.c:
	* EmacsShell.c (ABORT):
	* EmacsShell.c (EmacsShellUpdateSizeHints):
	* alloc.c:
	* alloc.c (very_old_free_lcrecord):
	* alloc.c (lispdesc_indirect_count_1):
	* alloc.c (lispdesc_one_description_line_size):
	* alloc.c (lispdesc_block_size_1):
	* alloc.c (kkcc_marking):
	* alloca.c (i00afunc):
	* buffer.c (delete_from_buffer_alist):
	* buffer.c (MARKED_SLOT):
	* bytecode.c (execute_rare_opcode):
	* bytecode.c (optimize_byte_code):
	* bytecode.c (Ffetch_bytecode):
	* charset.h:
	* chartab.c (char_table_type_to_symbol):
	* chartab.c (decode_char_table_range):
	* chartab.c (encode_char_table_range):
	* chartab.c (Freset_char_table):
	* chartab.c (get_range_char_table_1):
	* chartab.c (check_valid_char_table_value):
	* chartab.c (map_char_table):
	* chartab.c (chartab_instantiate):
	* cm.c (cmcheckmagic):
	* console-stream.c (stream_window_output_begin):
	* console-stream.c (stream_window_output_end):
	* console-stream.c (stream_frame_output_begin):
	* console-stream.c (stream_frame_output_end):
	* console-stream.c (stream_output_display_block):
	* console-stream.c (stream_clear_region):
	* console.c (get_console_variant):
	* console.c (MARKED_SLOT):
	* data.c (finish_marking_weak_lists):
	* data.c (encode_weak_list_type):
	* debug.h (DASSERT):
	* device-msw.c (mswindows_get_default_margin):
	* device-tty.c (tty_init_device):
	* device-x.c (get_device_from_display):
	* device-x.c (x_get_visual_depth):
	* doprnt.c (parse_doprnt_spec):
	* doprnt.c (get_doprnt_args):
	* dumper.c (pdump_unsupported_dump_type):
	* dumper.c (pdump_bump_depth):
	* dynarr.c (stack_like_free):
	* elhash.c (print_hash_table):
	* elhash.c (make_standard_lisp_hash_table):
	* elhash.c (hash_table_instantiate):
	* emacs.c:
	* emacs.c (sort_args):
	* emacs.c (main):
	* emacs.c (Fforce_debugging_signal):
	* emacs.c (assert_failed):
	* eval.c (throw_or_bomb_out):
	* eval.c (Fsignal):
	* eval.c (vars_of_eval):
	* event-Xt.c (emacs_Xt_mapping_action):
	* event-Xt.c (Xt_process_to_emacs_event):
	* event-gtk.c (gtk_process_to_emacs_event):
	* event-msw.c (mswindows_need_event):
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (emacs_mswindows_format_magic_event):
	* event-stream.c (Fadd_timeout):
	* event-stream.c (Fadd_async_timeout):
	* event-stream.c (execute_internal_event):
	* event-stream.c (Frecent_keys):
	* event-stream.c (extract_this_command_keys_nth_mouse_event):
	* event-stream.c (lookup_command_event):
	* events.c (mark_event):
	* events.c (event_equal):
	* events.c (event_hash):
	* events.c (Fmake_event):
	* events.c (Fdeallocate_event):
	* events.c (event_chain_find_previous):
	* events.c (event_to_character):
	* events.c (format_event_object):
	* events.c (Fevent_type):
	* events.c (event_pixel_translation):
	* events.c (Fevent_properties):
	* extents.c (extent_in_region_p):
	* extents.c (print_extent):
	* extents.c (process_extents_for_insertion_mapper):
	* extents.c (glyph_layout_to_symbol):
	* faces.c (face_validate):
	* file-coding.c (eol_type_to_symbol):
	* file-coding.c (subsidiary_coding_system):
	* file-coding.c (chain_conversion_end_type):
	* file-coding.c (convert_eol_print):
	* file-coding.c (convert_eol_getprop):
	* file-coding.c (convert_eol_canonicalize_after_coding):
	* file-coding.c (coding_category_id_to_symbol):
	* file-coding.c (detection_result_number_to_symbol):
	* fileio.c:
	* fns.c (concat):
	* fns.c (Fsubseq):
	* fns.c (mapcar1):
	* fns.c (Fbase64_encode_region):
	* fns.c (Fbase64_encode_string):
	* fns.c (Fbase64_decode_region):
	* fns.c (Fbase64_decode_string):
	* font-lock.c (find_context):
	* font-lock.c (context_to_symbol):
	* frame-gtk.c (gtk_set_frame_pointer):
	* frame-gtk.c (gtk_update_frame_external_traits):
	* frame-x.c (x_wm_mark_shell_size_user_specified):
	* frame-x.c (x_wm_mark_shell_position_user_specified):
	* frame-x.c (x_wm_set_shell_iconic_p):
	* frame-x.c (x_wm_set_cell_size):
	* frame-x.c (x_wm_set_variable_size):
	* frame-x.c (x_wm_store_class_hints):
	* frame-x.c (x_wm_maybe_store_wm_command):
	* frame-x.c (x_initialize_frame_size):
	* frame-x.c (x_update_frame_external_traits):
	* frame.c:
	* frame.c (delete_frame_internal):
	* frame.c (mouse_pixel_position_1):
	* frame.c (change_frame_size_1):
	* free-hook.c (check_free):
	* free-hook.c (check_realloc):
	* free-hook.c (note_block_input):
	* free-hook.c (log_gcpro):
	* gccache-gtk.c (gc_cache_lookup):
	* glyphs-eimage.c (tiff_memory_write):
	* glyphs-gtk.c (gtk_finalize_image_instance):
	* glyphs-gtk.c (init_image_instance_from_gdk_pixmap):
	* glyphs-gtk.c (init_image_instance_from_xbm_inline):
	* glyphs-gtk.c (gtk_xpm_instantiate):
	* glyphs-gtk.c (gtk_unmap_subwindow):
	* glyphs-gtk.c (gtk_map_subwindow):
	* glyphs-gtk.c (gtk_button_redisplay):
	* glyphs-msw.c:
	* glyphs-msw.c (init_image_instance_from_xbm_inline):
	* glyphs-x.c (init_image_instance_from_xbm_inline):
	* glyphs-x.c (extract_xpm_color_names):
	* glyphs-x.c (x_xpm_instantiate):
	* glyphs.c (get_image_instantiator_governing_domain):
	* glyphs.c (print_image_instance):
	* glyphs.c (image_instance_equal):
	* glyphs.c (image_instance_hash):
	* glyphs.c (encode_image_instance_type):
	* glyphs.c (inherit_instantiate):
	* glyphs.c (image_instantiate):
	* glyphs.c (allocate_glyph):
	* glyphs.c (Fglyph_type):
	* glyphs.c (display_table_entry):
	* gtk-glue.c (xemacs_list_to_gtklist):
	* gtk-glue.c (xemacs_gtklist_to_list):
	* gtk-glue.c (xemacs_list_to_array):
	* gutter.c (SET_GUTTER_WAS_VISIBLE_FLAG):
	* gutter.c (gutter_was_visible):
	* gutter.c (get_gutter_coords):
	* input-method-xlib.c (get_XIM_input):
	* insdel.c (move_gap):
	* intl-win32.c (determine_code_page):
	* intl-win32.c (mswindows_multibyte_to_unicode_getprop):
	* intl-win32.c (mswindows_multibyte_convert):
	* keymap.c (keymap_lookup_directly):
	* keymap.c (keymap_delete_inverse_internal):
	* keymap.c (ensure_meta_prefix_char_keymapp):
	* keymap.c (accessible_keymaps_mapper_1):
	* keymap.c (where_is_recursive_mapper):
	* lisp.h:
	* lisp.h (ABORT):
	* lisp.h (assert):
	* lread.c (read_atom):
	* lstream.c (Lstream_delete):
	* lstream.c (Lstream_really_write):
	* lstream.c (make_lisp_buffer_stream_1):
	* macros.c (pop_kbd_macro_event):
	* malloc.c (malloc):
	* malloc.c (free):
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	* menubar-gtk.c (menu_create_menubar):
	* menubar-msw.c (prune_menubar):
	* menubar-x.c (set_frame_menubar):
	* mule-coding.c (charset_by_attributes_or_create_one):
	* mule-coding.c (parse_iso2022_esc):
	* mule-coding.c (iso2022_encode):
	* native-gtk-toolbar.c (SET_TOOLBAR_WAS_VISIBLE_FLAG):
	* number.c:
	* number.c (get_number_type):
	* objects-msw.c (mswindows_list_fonts):
	* objects.c (color_instantiate):
	* objects.c (font_instantiate):
	* objects.c (face_boolean_instantiate):
	* print.c (printing_major_badness):
	* process-nt.c (nt_send_process):
	* process-unix.c (unix_send_process):
	* process.c (get_process):
	* ralloc.c (obtain):
	* ralloc.c (relinquish):
	* ralloc.c (relocate_blocs):
	* ralloc.c (resize_bloc):
	* ralloc.c (r_alloc_free):
	* ralloc.c (r_re_alloc):
	* ralloc.c (r_alloc_thaw):
	* ralloc.c (init_ralloc):
	* ralloc.c (Free_Addr_Block):
	* ralloc.c (r_alloc):
	* rangetab.c (range_table_type_to_symbol):
	* rangetab.c (print_range_table):
	* rangetab.c (rangetab_instantiate):
	* redisplay-gtk.c (gtk_output_display_block):
	* redisplay-msw.c (mswindows_output_display_block):
	* redisplay-output.c (get_next_display_block):
	* redisplay-output.c (get_cursor_size_and_location):
	* redisplay-output.c (redisplay_output_layout):
	* redisplay-output.c (redisplay_clear_region):
	* redisplay-tty.c (tty_output_display_block):
	* redisplay-x.c (x_output_display_block):
	* redisplay.c (add_propagation_runes):
	* redisplay.c (add_glyph_rune):
	* redisplay.c (add_margin_runes):
	* redisplay.c (create_left_glyph_block):
	* redisplay.c (create_right_glyph_block):
	* redisplay.c (regenerate_window):
	* redisplay.c (REGEN_INC_FIND_START_END):
	* redisplay.c (point_in_line_start_cache):
	* regex.c:
	* regex.c (ABORT):
	* regex.c (re_compile_fastmap):
	* regex.c (re_match_2_internal):
	* regex.c (regerror):
	* scrollbar-gtk.c (gtk_scrollbar_loop):
	* scrollbar-gtk.c (scrollbar_cb):
	* scrollbar-x.c (x_update_scrollbar_instance_status):
	* scrollbar-x.c (x_scrollbar_loop):
	* search.c (search_command):
	* search.c (Fmatch_data):
	* select-x.c (motif_clipboard_cb):
	* signal.c:
	* signal.c (qxe_setitimer):
	* signal.c (interrupt_signal):
	* specifier.c (specifier_add_spec):
	* specifier.c (specifier_instance):
	* specifier.h:
	* strftime.c (add_num_time_t):
	* sunplay.c (init_device):
	* symbols.c (do_symval_forwarding):
	* symbols.c (store_symval_forwarding):
	* symbols.c (Fset):
	* symbols.c (Fbuilt_in_variable_type):
	* symbols.c (handler_type_from_function_symbol):
	* sysdep.c (init_baud_rate):
	* sysproc.h:
	* text.c:
	* text.c (charbpos_to_bytebpos_func):
	* text.c (bytebpos_to_charbpos_func):
	* text.c (new_dfc_convert_now_damn_it):
	* text.h:
	* toolbar-common.c (__INTERNAL_MAPPED_P):
	* toolbar-common.c (SET_TOOLBAR_WAS_VISIBLE_FLAG):
	* toolbar-msw.c (SET_TOOLBAR_WAS_VISIBLE_FLAG):
	* toolbar.c (get_toolbar_coords):
	* ui-gtk.c (build_gtk_boxed):
	* ui-gtk.c (describe_gtk_arg):
	* ui-gtk.c (gtk_type_to_lisp):
	* ui-gtk.c (lisp_to_gtk_type):
	* ui-gtk.c (lisp_to_gtk_ret_type):
	* ui-gtk.c (lisp_to_flag):
	* unexnt.c (read_in_bss):
	* unexnt.c (map_in_heap):
	* unicode.c:
	* unicode.c (create_new_from_unicode_table):
	* unicode.c (sledgehammer_check_from_table):
	* unicode.c (sledgehammer_check_to_table):
	* unicode.c (set_unicode_conversion):
	* unicode.c (unicode_to_ichar):
	* unicode.c (encode_unicode_char_1):
	* unicode.c (unicode_convert):
	* unicode.c (unicode_getprop):
	* win32.c (mswindows_lisp_error_1):
	* window.c (real_window):
	* window.c (window_display_lines):
	* window.c (window_display_buffer):
	* window.c (set_window_display_buffer):
	* window.c (unshow_buffer):
	* window.c (window_loop):
	* window.c (Fget_lru_window):
	* xgccache.c (gc_cache_lookup):
	* s/windowsnt.h:

	abort() -> ABORT().  Eliminate preprocessor games with abort()
	since it creates huge problems in VC7, solvable only by including
	massive amounts of files in every compile (and not worth it).

2005-01-21  Robert Royar <xemacs@frinabulax.org>

	* database.c: Repair typo in NetBSD fix.

2005-01-21  Malcolm Purvis  <malcolmp@xemacs.org>

	* database.c (dbm_type):
	* database.c (dbm_subtype): Mark parameters as unused.

2005-01-21  Aidan Kehoe  <kehoea@parhasard.net>

	* database.c: Small warning fix for NetBSD, w.r.t. u_int_8_t being
	redefined.

2005-01-20  Malcolm Purvis  <malcolmp@xemacs.org>

	* event-gtk.c: Recognise AltGr as a valid modifier.

2005-01-12  Ville Skyttï¿½  <scop@xemacs.org>

	* console-x.h: #include X11/keysym.h before xintrinsic.h.

2005-01-06  Zajcev Evgeny <zevlg@yandex.ru>

	* scrollbar.c (compute_scrollbar_instance_usage):
	Only call device method compute_scrollbar_instance_usage() if it
	is defined.

2004-12-15  Stephen J. Turnbull  <stephen@xemacs.org>

	* EmacsManager.c (EmacsManagerChangeSize):
	Respect XtGeometryNo, and exit immediately if geometry change
	refused.  Fixes notorious metacity maximize bug.

2004-12-07  Malcolm Purvis  <malcolmp@xemacs.org>

	* Makefile.in.in: Always refer to make as $(MAKE) and use
	$(RECURSIVE_MAKE_ARGS) for other parameters.  This allows -j to
	work in GNU Make while removing need for POSIX compatible make on
	all systems.

2004-12-06  Ben Wing  <ben@xemacs.org>

	* rangetab.c (rangetab_instantiate):
	Fix compile error.

2004-12-05  Ben Wing  <ben@xemacs.org>

	* elhash.c:
	* elhash.c (find_htentry):
	* elhash.c (inchash_eq):
	* elhash.h:
	* profile.c (create_profile_tables):
	* profile.c (profile_record_consing):
	* profile.c (profile_record_about_to_call):
	Create inchash_eq() to allow direct incrementing of hash-table
	entry.  Use in profile.c to try to reduce profiling overhead.
	Increase initial size of profile hash tables to reduce profiling
	overhead.

	* buffer.c (init_initial_directory):
	* device-msw.c (mswindows_handle_page_setup_dialog_box):
	* dialog-msw.c (handle_directory_proc):
	* dialog-msw.c (handle_file_dialog_box):
	* dialog-msw.c:
	* dired-msw.c (mswindows_format_file):
	* dired-msw.c (mswindows_get_files):
	* editfns.c (Ftemp_directory):
	* event-msw.c (mswindows_wnd_proc):
	* events.c (format_event_object):
	* glyphs-msw.c (add_tab_item):
	* glyphs-msw.c (add_tree_item):
	* keymap.c (Fsingle_key_description):
	* keymap.c (format_raw_keys):
	* objects-msw.c (parse_font_spec):
	* process-nt.c (nt_create_process):
	* syswindows.h (build_tstr_string):
	* syswindows.h (qxetcslen):
	* text.c (eicmp_1):
	* text.h (eicat_ascii):
	* text.h (eicmp_ascii):
	* text.h (eicpy_ascii):
	* text.h (eicpy_ascii_len):
	* text.h (eistr_ascii):
	* text.h (eisub_ascii):
	* text.h:
	* unexnt.c (_start):
	Rename xetcs* -> qxetcs* for consistency with qxestr*.
	Rename ei*_c(_*) -> ei*_ascii(_*) since they work with ASCII-only
	strings not "C strings", whatever those are.  This is the last
	place where "c" was incorrectly being used for "ascii".

	* dialog-msw.c (handle_directory_proc):
	* dialog-msw.c (handle_directory_dialog_box):
	* dumper.c:
	* event-msw.c (mswindows_wnd_proc):
	* fileio.c (Ffile_truename):
	* glyphs-gtk.c (font_instantiate):
	* glyphs-x.c (font_instantiate):
	* nt.c (Fmswindows_short_file_name):
	* nt.c (mswindows_link):
	* process-nt.c (nt_create_process):
	* realpath.c (readlink_and_correct_case):
	* realpath.c (qxe_realpath):
	* sysdep.c (qxe_allocating_getcwd):
	* sysfile.h:
	* unexcw.c (unexec):
	* unexnext.c (unexec):
	* unexnt.c (_start):
	Try to avoid differences in systems that do or do not include
	final null byte in PATH_MAX.  Create PATH_MAX_INTERNAL and
	PATH_MAX_EXTERNAL and use them everywhere.  Rewrite code in
	dumper.c to avoid use of PATH_MAX.  When necessary in nt.c,
	use _MAX_PATH instead of MAX_PATH to be consistent with
	other places.

	* text.c (dfc_convert_to_internal_format):
	Code to short-circuit when binary or Unicode was not working
	due to EOL wrapping.  Fix this code to work when either no
	EOL autodetection or no CR's or LF's in the text.

	* lisp.h:
	* rangetab.c:
	* rangetab.c (range_table_symbol_to_type):
	* rangetab.c (range_table_type_to_symbol):
	* rangetab.c (print_range_table):
	* rangetab.c (verify_range_table):
	* rangetab.c (get_range_table):
	* rangetab.c (Frange_table_type):
	* rangetab.c (Fcopy_range_table):
	* rangetab.c (put_range_table):
	* rangetab.c (Fput_range_table):
	* rangetab.c (Fremove_range_table):
	* rangetab.c (rangetab_type_validate):
	* rangetab.c (rangetab_instantiate):
	* rangetab.c (syms_of_rangetab):
	* rangetab.c (structure_type_create_rangetab):
	* rangetab.h:
	* rangetab.h (enum range_table_type):
	* regex.c (vars_of_regex):
	* search.c (vars_of_search):
	Implement different types of ranges (open/closed start and end).
	Change default to be start-closed, end-open.

2004-11-12  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* Makefile.in.in: Fix pdump build for Cygwin.

2004-11-12  Ben Wing  <ben@xemacs.org>

	* text.c (find_pos_of_existing_active_alloca_convert):
	Two different occurrences of a string stringized from the exact
	same parameter may not necessarily be the same string, so check
	with strcmp.

2004-11-12  Jerry James  <james@xemacs.org>

	* lstream.c (Lstream_really_write): Don't call the flusher if the
	writer returned an error.

2004-11-11  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* text.h:
	* xemacs.def.in.in: rename new_dfc_convert_alloca to
	new_dfc_convert_copy_data

2004-11-07  Ben Wing  <ben@xemacs.org>

	* frame-x.c (x_set_frame_properties):
	Fix compile error.

2004-10-27  Ben Wing  <ben@xemacs.org>

	---------------------------------------------------------------
			     MULE-RELATED WORK:
	---------------------------------------------------------------

	---------------------------
	    byte-char conversion
	---------------------------

	* buffer.c:
	* buffer.h (BUFFER_TEXT_LOOP):
	* buffer.h (BYTE_BUF_CEILING_OF_IGNORE_ACCESSIBLE):
	* buffer.h (BYTE_BUF_FLOOR_OF):
	* buffer.h (NUM_CACHED_POSITIONS):
	* buffer.h (struct buffer_text):
	* buffer.h:
	* insdel.c (BUF_GPT_ADDR):
	* insdel.c (SET_BOTH_BUF_GPT):
	* insdel.c (SET_BOTH_BUF_Z):
	* insdel.c (buffer_delete_range):
	* insdel.c (buffer_insert_string_1):
	* insdel.c (gap_left):
	* insdel.c (gap_right):
	* insdel.c (init_buffer_text):
	* insdel.c (make_gap):
	* insdel.c (merge_gap_with_end_gap):
	* insdel.c (move_gap):
	* insdel.c:
	* text.c (buffer_mule_signal_deleted_region):
	* text.c (buffer_mule_signal_inserted_region):
	* text.c (bytebpos_to_charbpos_func):
	* text.c (charbpos_to_bytebpos_func):
	* text.c (skip_ascii):
	* text.c (skip_ascii_down):
	Port FSF algorithm for byte-char conversion, replacing broken
	previous version.  Track the char position of the gap.  Add
	functions to do char-byte conversion downwards as well as upwards.
	Move comments about algorithm workings to internals manual.

	---------------------------
	       work on types
	---------------------------

	* alloc.c:
	* alloc.c (gc_plist_hack):
	* console-x-impl.h (struct x_frame):
	* dump-data.c:
	* dump-data.c (dumped_data_size):
	* dump-data.c (dumped_data_max_size):
	* dump-data.c (dumped_data_align_offset):
	* dump-data.c (dumped_data_get):
	* dump-data.h:
	* dump-data.h (dumped_data_get):
	* dumper.c:
	* dumper.c (struct):
	* dumper.c (PDUMP_READ):
	* dumper.c (PDUMP_READ_ALIGNED):
	* dumper.c (pdump_objects_unmark):
	* dumper.c (pdump_register_sub):
	* dumper.c (pdump_register_struct_contents):
	* dumper.c (pdump_store_new_pointer_offsets):
	* dumper.c (pdump_reloc_one):
	* dumper.c (pdump_dump_root_struct_ptrs):
	* dumper.c (pdump_dump_root_lisp_objects):
	* dumper.c (pdump):
	* dumper.c (pdump_load_check):
	* dumper.c (pdump_load_finish):
	* dialog-msw.c:
	* dired-msw.c (mswindows_format_file):
	* doc.c (get_doc_string):
	* doc.c (Fsnarf_documentation):
	* doc.c (kludgily_ignore_lost_doc_p):
	* editfns.c:
	* esd.c (esd_play_sound_data):
	* event-gtk.h (emacs_shell_event_handler):
	* event-msw.c (mswindows_dde_callback):
	* events.c (format_event_object):
	* file-coding.c (struct subsidiary_type):
	* file-coding.c (setup_eol_coding_systems):
	* file-coding.c (make_coding_system_1):
	* file-coding.c (make_internal_coding_system):
	* file-coding.h:
	* fns.c (add_suffix_to_symbol):
	* fns.c (add_prefix_to_symbol):
	* glyphs-eimage.c (struct jpeg_unwind_data):
	* glyphs-eimage.c (jpeg_instantiate_unwind):
	* glyphs-eimage.c (jpeg_instantiate):
	* glyphs-eimage.c (struct gif_unwind_data):
	* glyphs-eimage.c (gif_instantiate_unwind):
	* glyphs-eimage.c (gif_memory_storage):
	* glyphs-eimage.c (gif_instantiate):
	* glyphs-eimage.c (struct png_memory_storage):
	* glyphs-eimage.c (struct png_unwind_data):
	* glyphs-eimage.c (png_instantiate_unwind):
	* glyphs-eimage.c (png_instantiate):
	* glyphs-eimage.c (struct tiff_unwind_data):
	* glyphs-eimage.c (tiff_instantiate_unwind):
	* glyphs-eimage.c (tiff_memory_storage):
	* glyphs-eimage.c (tiff_instantiate):
	* 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 (set_mono_pixel):
	* 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 (init_image_instance_from_xbm_inline):
	* glyphs-msw.c (xbm_instantiate_1):
	* glyphs-msw.c (mswindows_xbm_instantiate):
	* glyphs-msw.c (mswindows_xface_instantiate):
	* glyphs-shared.c (read_bitmap_data):
	* glyphs-shared.c (read_bitmap_data_from_file):
	* glyphs-x.c (convert_EImage_to_XImage):
	* glyphs-x.c (x_init_image_instance_from_eimage):
	* glyphs-x.c (pixmap_from_xbm_inline):
	* glyphs-x.c (init_image_instance_from_xbm_inline):
	* glyphs-x.c (xbm_instantiate_1):
	* glyphs-x.c (x_xbm_instantiate):
	* glyphs-x.c (x_xface_instantiate):
	* glyphs.c (bitmap_to_lisp_data):
	* glyphs.h:
	* gui.c (gui_error):
	* gui.c (gui_error_2):
	* hpplay.c (player_error_internal):
	* hpplay.c (play_sound_data):
	* imgproc.c (get_histogram):
	* imgproc.c (build_EImage_quantable):
	* intl-win32.c (lang_to_langcode):
	* intl-win32.c (sublang_to_langcode):
	* intl-win32.c (int_from_hex):
	* intl-win32.c (enum_locale_fn):
	* lrecord.h (DECLARE_LRECORD):
	* lrecord.h (DECLARE_MODULE_API_LRECORD):
	* lrecord.h (DECLARE_EXTERNAL_LRECORD):
	* lrecord.h (DECLARE_NONRECORD):
	* lrecord.h (copy_sized_lcrecord):
	* lrecord.h (zero_sized_lcrecord):
	* lrecord.h (DUMPEDP):
	* lstream.c (make_lisp_buffer_stream_1):
	* keymap.c (define_key_check_and_coerce_keysym):
	* lisp.h:
	* libsst.c:
	* linuxplay.c:
	* linuxplay.c (linux_play_data_or_file):
	* linuxplay.c (play_sound_data):
	* miscplay.c:
	* miscplay.c (waverequire):
	* miscplay.c (parsewave):
	* miscplay.c (parsesundecaudio):
	* miscplay.c (sndcnv8U_2mono):
	* miscplay.c (sndcnv8S_2mono):
	* miscplay.c (sndcnv2monounsigned):
	* miscplay.c (sndcnv2unsigned):
	* miscplay.c (int2ulaw):
	* miscplay.c (sndcnvULaw_2linear):
	* miscplay.c (sndcnvULaw_2mono):
	* miscplay.c (sndcnv16_2monoLE):
	* miscplay.c (sndcnv16_2monoBE):
	* miscplay.c (sndcnv2byteLE):
	* miscplay.c (sndcnv2byteBE):
	* miscplay.c (sndcnv2monobyteLE):
	* miscplay.c (sndcnv2monobyteBE):
	* miscplay.c (analyze_format):
	* miscplay.h (parse_wave_complete):
	* mule-coding.c (ccl_putprop):
	* nas.c:
	* nas.c (nas_play_sound_data):
	* nas.c (SndOpenDataForReading):
	* nas.c (cmpID):
	* nas.c (dread):
	* nas.c (dgetc):
	* nas.c (readChunk):
	* nas.c (WaveOpenDataForReading):
	* nas.c (SoundOpenDataForReading):
	* nt.c:
	* nt.c (init_mswindows_environment):
	* nt.c (mswindows_is_executable):
	* nt.c (mswindows_executable_type):
	* ntheap.c:
	* ntheap.c (round_to_next):
	* ntheap.c (get_data_start):
	* ntheap.c (get_data_end):
	* ntheap.c (allocate_heap):
	* ntheap.c (sbrk):
	* ntheap.c (recreate_heap):
	* ntplay.c:
	* ntplay.c (play_sound_file):
	* ntplay.c (play_sound_data_1):
	* ntplay.c (play_sound_data):
	* objects-msw.c (colormap_t):
	* objects-msw.c (fontmap_t):
	* objects-msw.c (mswindows_string_to_color):
	* objects-msw.c (mswindows_color_to_string):
	* objects-msw.c (match_font):
	* objects-msw.c (font_enum_callback_2):
	* objects-msw.c (sort_font_list_function):
	* objects-msw.c (parse_font_spec):
	* objects-msw.c (mswindows_font_spec_matches_charset_stage_1):
	* objects-tty.c (tty_initialize_font_instance):
	* objects-x.c (x_font_instance_properties):
	* print.c (printing_major_badness):
	* process-nt.c (mswindows_compare_env):
	* process-nt.c (get_internet_address):
	* process.c:
	* process.c (handle_signal):
	* process.c (deactivate_process):
	* redisplay.h:
	* select-common.h (selection_data_to_lisp_data):
	* select-common.h (lisp_data_to_selection_data):
	* select-gtk.c (emacs_gtk_selection_handle):
	* select-x.c (x_reply_selection_request):
	* select-x.c (x_handle_selection_request):
	* select-x.c (x_get_window_property):
	* select-x.c (receive_incremental_selection):
	* select-x.c (x_get_window_property_as_lisp_data):
	* select-x.c (Fx_get_cutbuffer_internal):
	* sgiplay.c:
	* sgiplay.c (play_sound_file):
	* sgiplay.c (play_sound_data):
	* sgiplay.c (audio_initialize):
	* sgiplay.c (play_internal):
	* sgiplay.c (write_mulaw_8_chunk):
	* sgiplay.c (write_linear_chunk):
	* sgiplay.c (struct):
	* sgiplay.c (parse_snd_header):
	* sound.c:
	* sound.c (report_sound_error):
	* sound.c (Fplay_sound):
	* sound.h:
	* sunplay.c (init_device):
	* sunplay.c (play_sound_file):
	* sunplay.c (play_sound_data):
	* sysfile.h:
	* sysdep.c (retry_fopen):
	* sysdep.c (qxe_fopen):
	* sysdep.c (wcslen):
	* syswindows.h (LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR):
	* text.c (ascii_strcasecmp):
	* text.c (qxestrcasecmp_ascii):
	* text.c (ascii_strncasecmp):
	* text.c (qxestrncasecmp_ascii):
	* text.c (convert_ibyte_string_into_ichar_dynarr):
	* text.c (convert_ibyte_string_into_ichar_string):
	* text.c (eicmp_1):
	* unexnt.c (unexec):
	* unexnt.c (get_section_info):
	* unexnt.c (copy_executable_and_dump_data_section):
	* unexnt.c (dump_bss_and_heap):
	* win32.c (urlify_filename):
	* win32.c (mswindows_lisp_error_1):
	* xgccache.c (gc_cache_lookup):
	* text.c (qxesprintf):
	Further work on types.  This creates a full set of types for all
	the basic semantics of `char' that I have so far identified, so that
	its semantics can always be identified for the purposes of proper
	Mule-safe code, and the raw use of `char' always avoided.

	(1) More type renaming, for consistency of naming.

	Char_ASCII -> Ascbyte
	UChar_ASCII -> UAscbyte
	Char_Binary -> CBinbyte
	UChar_Binary -> Binbyte
	SChar_Binary -> SBinbyte

	(2) Introduce Rawbyte, CRawbyte, Boolbyte, Chbyte, UChbyte, and
	Bitbyte and use them.

	(3) New types Itext, Wexttext and Textcount for separating out
	the concepts of bytes and textual units (different under UTF-16
	and UTF-32, which are potential internal encodings).

	(4) qxestr*_c -> qxestr*_ascii.

	* lisp.h (qxesscanf_ascii_1):
	New; goes with other qxe() functions. #### Maybe goes in a
	different section.

	* lisp.h:
	Group generic int-type defs together with EMACS_INT defs.

	* lisp.h (EXTTEXT_ZTERM_SIZE):
	* lisp.h (ITEXT_SIZE):
	* lisp.h (NON_ASCII_INTERNAL_FORMAT):
	* lisp.h (UTF16_IBYTE_FORMAT):
	* lisp.h (WEXTTEXT_IS_WIDE)
	New defns.

	* lisp.h (Boolean):
	New type to replace places where int occurs as a boolean.
	It's signed because occasionally people may want to use -1 as
	an error value, and because unsigned ints are viral -- see comments
	in the internals manual against using them.

	* dynarr.c:
	* dynarr.c (Dynarr_realloc):
	* dynarr.c (Dynarr_resize):
	int -> Bytecount.

	---------------------------
		 Mule-izing
	---------------------------

	* device-x.c:
	* device-x.c (Fx_server_vendor):
	* device-x.c (Fx_valid_keysym_name_p):
	* device-x.c (Fx_get_font_path):
	* device-x.c (Fx_set_font_path):
	* device-x.c (reinit_console_type_create_device_x):
	Partially Mule-ize.

	* dumper.c (see above):
	* dumper.c (pdump_file_get):
	* dumper.c (pdump_resource_get):
	* dumper.c (pdump_file_free):
	* dumper.c (pdump_ram_try):
	* dumper.c (pdump_file_try):
	* dumper.c (pdump_load):
	* dumper.h:
	Mule-ize.  Use Rawbyte.  Use stderr_out not printf.  Use wext_*().

	* sysdep.c:
	* sysdep.c (retry_open_1):
	* sysdep.c (retry_open):
	* sysdep.c (wext_retry_open):
	* syswindows.h:
	* text.c (wcscmp_ascii):
	* text.c (wcsncmp_ascii):
	New Wexttext API for manipulation of external text that may be
	Unicode (e.g. startup code under Windows).

	* emacs.c (make_arg_list_1):
	* emacs.c (make_arg_list):
	* emacs.c (make_argc_argv):
	* emacs.c (free_argc_argv):
	* emacs.c (init_cmdargs):
	* emacs.c (argmatch):
	* emacs.c (check_compatible_window_system):
	* emacs.c (struct standard_args):
	* emacs.c (sort_args):
	* emacs.c (main):
	* emacs.c (debug_can_access_memory):
	* emacs.c (shut_down_emacs):
	* emacs.c (guts_of_fatal_error_signal):
	* emacs.c (assert_failed):
	Mule-ize.  Properly deal with argv in external encoding.
	Use wext_*() and Wexttext.  Use Rawbyte.

	#if 0 some old junk on SCO that is unlikely to be correct.

	Rewrite allocation code in run-temacs.

	* emacs.c:
	* symsinit.h:
	* win32.c (init_win32_very_very_early):
	Rename win32 init function and call it even earlier, to
	initialize mswindows_9x_p even earlier, for use in startup code
	(XEUNICODE_P).

	* process.c (init_xemacs_process):
	Use _wenviron not environ under Windows, to get Unicode environment
	variables.

	* event-Xt.c (x_event_to_emacs_event):
	Mule-ize drag-n-drop related stuff.

	* dragdrop.c (dnd_url_hexify_string):
	* dragdrop.h:
	* frame-x.c:
	* frame-x.c (x_wm_set_cell_size):
	* frame-x.c (x_wm_set_variable_size):
	* frame-x.c (x_wm_hack_wm_protocols):
	* frame-x.c (x_wm_store_class_hints):
	* frame-x.c (x_wm_maybe_store_wm_command):
	* frame-x.c (x_frame_window_state):
	* frame-x.c (x_set_frame_text_value):
	* frame-x.c (x_set_initial_frame_size):
	* frame-x.c (x_set_frame_properties):
	* frame-x.c (maybe_set_frame_title_format):
	* frame-x.c (start_drag_internal_1):
	* frame-x.c (x_cde_destroy_callback):
	* frame-x.c (x_cde_convert_callback):
	* frame-x.c (abort_current_drag):
	* frame-x.c (Fcde_start_drag_internal):
	* frame-x.c (x_cde_transfer_callback):
	* frame-x.c (Foffix_start_drag_internal):
	* frame-x.c (x_initialize_frame_size):
	* frame-x.c (x_create_widgets):
	* frame-x.c (xemacs_XtPopup):
	* frame-x.c (x_popup_frame):
	* frame-x.c (x_set_frame_icon):
	* frame-x.c (x_set_frame_position):
	* frame-x.c (x_delete_frame):
	* frame-x.c (x_update_frame_external_traits):
	Mule-ize.

	* text.h:
	Add some more stand-in defines for particular kinds of conversion;
	use in Mule-ization work in frame-x.c etc.

	---------------------------
		 Freshening
	---------------------------

	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.c (qxePeekConsoleInput):
	* intl-auto-encap-win32.c (qxeReadConsoleInput):
	* intl-auto-encap-win32.c (qxeWriteConsoleInput):
	* intl-auto-encap-win32.c (qxeExtractAssociatedIcon):
	* intl-auto-encap-win32.c (qxeShellExecuteEx):
	* intl-auto-encap-win32.c (qxeSHQueryRecycleBin):
	* intl-auto-encap-win32.c (qxeSHEmptyRecycleBin):
	* intl-auto-encap-win32.c (qxeSHGetNewLinkInfo):
	* intl-auto-encap-win32.c (qxeSHInvokePrinterCommand):
	* intl-auto-encap-win32.c (qxewvsprintf):
	* intl-auto-encap-win32.c (qxeLoadKeyboardLayout):
	* intl-auto-encap-win32.c (qxeGetKeyboardLayoutName):
	* intl-auto-encap-win32.c (qxeOpenDesktop):
	* intl-auto-encap-win32.c (qxeEnumDesktops):
	* intl-auto-encap-win32.c (qxeCreateWindowStation):
	* intl-auto-encap-win32.c (qxeOpenWindowStation):
	* intl-auto-encap-win32.c (qxeEnumWindowStations):
	* intl-auto-encap-win32.c (qxeGetUserObjectInformation):
	* intl-auto-encap-win32.c (qxeSetUserObjectInformation):
	* intl-auto-encap-win32.c (qxeRegisterWindowMessage):
	* intl-auto-encap-win32.c (qxeGetMessage):
	* intl-auto-encap-win32.c (qxeDispatchMessage):
	* intl-auto-encap-win32.c (qxePeekMessage):
	* intl-auto-encap-win32.c (qxeSendMessageTimeout):
	* intl-auto-encap-win32.c (qxeSendNotifyMessage):
	* intl-auto-encap-win32.c (qxeSendMessageCallback):
	* intl-auto-encap-win32.c (qxePostMessage):
	* intl-auto-encap-win32.c (qxePostThreadMessage):
	* intl-auto-encap-win32.c (qxeGetClassInfoEx):
	* intl-auto-encap-win32.c (qxeCreateWindowEx):
	* intl-auto-encap-win32.c (qxeCreateDialogParam):
	* intl-auto-encap-win32.c (qxeCreateDialogIndirectParam):
	* intl-auto-encap-win32.c (qxeDialogBoxParam):
	* intl-auto-encap-win32.c (qxeDialogBoxIndirectParam):
	* intl-auto-encap-win32.c (qxeSetDlgItemText):
	* intl-auto-encap-win32.c (qxeGetDlgItemText):
	* intl-auto-encap-win32.c (qxeSendDlgItemMessage):
	* intl-auto-encap-win32.c (qxeCallMsgFilter):
	* intl-auto-encap-win32.c (qxeRegisterClipboardFormat):
	* intl-auto-encap-win32.c (qxeGetClipboardFormatName):
	* intl-auto-encap-win32.c (qxeCharToOem):
	* intl-auto-encap-win32.c (qxeOemToChar):
	* intl-auto-encap-win32.c (qxeCharToOemBuff):
	* intl-auto-encap-win32.c (qxeOemToCharBuff):
	* intl-auto-encap-win32.c (qxeCharUpper):
	* intl-auto-encap-win32.c (qxeCharUpperBuff):
	* intl-auto-encap-win32.c (qxeCharLower):
	* intl-auto-encap-win32.c (qxeCharLowerBuff):
	* intl-auto-encap-win32.c (qxeCharNext):
	* intl-auto-encap-win32.c (qxeCharPrev):
	* intl-auto-encap-win32.c (qxeMapVirtualKey):
	* intl-auto-encap-win32.c (qxeMapVirtualKeyEx):
	* intl-auto-encap-win32.c (qxeLoadAccelerators):
	* intl-auto-encap-win32.c (qxeCreateAcceleratorTable):
	* intl-auto-encap-win32.c (qxeCopyAcceleratorTable):
	* intl-auto-encap-win32.c (qxeTranslateAccelerator):
	* intl-auto-encap-win32.c (qxeLoadMenu):
	* intl-auto-encap-win32.c (qxeLoadMenuIndirect):
	* intl-auto-encap-win32.c (qxeChangeMenu):
	* intl-auto-encap-win32.c (qxeGetMenuString):
	* intl-auto-encap-win32.c (qxeInsertMenu):
	* intl-auto-encap-win32.c (qxeAppendMenu):
	* intl-auto-encap-win32.c (qxeModifyMenu):
	* intl-auto-encap-win32.c (qxeInsertMenuItem):
	* intl-auto-encap-win32.c (qxeGetMenuItemInfo):
	* intl-auto-encap-win32.c (qxeSetMenuItemInfo):
	* intl-auto-encap-win32.c (qxeDrawText):
	* intl-auto-encap-win32.c (qxeDrawTextEx):
	* intl-auto-encap-win32.c (qxeGrayString):
	* intl-auto-encap-win32.c (qxeDrawState):
	* intl-auto-encap-win32.c (qxeTabbedTextOut):
	* intl-auto-encap-win32.c (qxeGetTabbedTextExtent):
	* intl-auto-encap-win32.c (qxeSetProp):
	* intl-auto-encap-win32.c (qxeGetProp):
	* intl-auto-encap-win32.c (qxeRemoveProp):
	* intl-auto-encap-win32.c (qxeEnumPropsEx):
	* intl-auto-encap-win32.c (qxeEnumProps):
	* intl-auto-encap-win32.c (qxeSetWindowText):
	* intl-auto-encap-win32.c (qxeGetWindowText):
	* intl-auto-encap-win32.c (qxeGetWindowTextLength):
	* intl-auto-encap-win32.c (qxeMessageBox):
	* intl-auto-encap-win32.c (qxeMessageBoxEx):
	* intl-auto-encap-win32.c (qxeMessageBoxIndirect):
	* intl-auto-encap-win32.c (qxeGetWindowLong):
	* intl-auto-encap-win32.c (qxeSetWindowLong):
	* intl-auto-encap-win32.c (qxeGetClassLong):
	* intl-auto-encap-win32.c (qxeSetClassLong):
	* intl-auto-encap-win32.c (qxeFindWindow):
	* intl-auto-encap-win32.c (qxeFindWindowEx):
	* intl-auto-encap-win32.c (qxeGetClassName):
	* intl-auto-encap-win32.c (qxeSetWindowsHookEx):
	* intl-auto-encap-win32.c (qxeLoadBitmap):
	* intl-auto-encap-win32.c (qxeLoadCursor):
	* intl-auto-encap-win32.c (qxeLoadCursorFromFile):
	* intl-auto-encap-win32.c (qxeLoadIcon):
	* intl-auto-encap-win32.c (qxeLoadImage):
	* intl-auto-encap-win32.c (qxeLoadString):
	* intl-auto-encap-win32.c (qxeIsDialogMessage):
	* intl-auto-encap-win32.c (qxeDlgDirList):
	* intl-auto-encap-win32.c (qxeDlgDirSelectEx):
	* intl-auto-encap-win32.c (qxeDlgDirListComboBox):
	* intl-auto-encap-win32.c (qxeDlgDirSelectComboBoxEx):
	* intl-auto-encap-win32.c (qxeDefFrameProc):
	* intl-auto-encap-win32.c (qxeCreateMDIWindow):
	* intl-auto-encap-win32.c (qxeWinHelp):
	* intl-auto-encap-win32.c (qxeRegLoadKey):
	* intl-auto-encap-win32.c (qxeRegOpenKey):
	* intl-auto-encap-win32.c (qxeSetLocaleInfo):
	* intl-auto-encap-win32.c (qxeCopyMetaFile):
	* intl-auto-encap-win32.c (qxeCreateScalableFontResource):
	* intl-auto-encap-win32.c (qxeGetCharWidth):
	* intl-auto-encap-win32.c (qxeGetCharWidth32):
	* intl-auto-encap-win32.c (qxeGetCharWidthFloat):
	* intl-auto-encap-win32.c (qxeGetCharABCWidths):
	* intl-auto-encap-win32.c (qxeGetCharABCWidthsFloat):
	* intl-auto-encap-win32.c (qxeGetGlyphOutline):
	* intl-auto-encap-win32.c (qxeGetMetaFile):
	* intl-auto-encap-win32.c (qxeGetTextExtentPoint):
	* intl-auto-encap-win32.c (qxeGetTextExtentPoint32):
	* intl-auto-encap-win32.c (qxeGetTextExtentExPoint):
	* intl-auto-encap-win32.c (qxeGetCharacterPlacement):
	* intl-auto-encap-win32.c (qxeCopyEnhMetaFile):
	* intl-auto-encap-win32.c (qxeCreateEnhMetaFile):
	* intl-auto-encap-win32.c (qxeGetEnhMetaFile):
	* intl-auto-encap-win32.c (qxeGetEnhMetaFileDescription):
	* intl-auto-encap-win32.c (qxeTextOut):
	* intl-auto-encap-win32.c (qxeExtTextOut):
	* intl-auto-encap-win32.c (qxePolyTextOut):
	* intl-auto-encap-win32.c (qxeGetTextFace):
	* intl-auto-encap-win32.c (qxeGetKerningPairs):
	* intl-auto-encap-win32.c (qxeEnumICMProfiles):
	* intl-auto-encap-win32.c (qxeGetOpenFileName):
	* intl-auto-encap-win32.c (qxeGetSaveFileName):
	* intl-auto-encap-win32.c (qxeGetFileTitle):
	* intl-auto-encap-win32.c (qxeChooseColor):
	* intl-auto-encap-win32.c (qxeFindText):
	* intl-auto-encap-win32.c (qxeReplaceText):
	* intl-auto-encap-win32.c (qxeImmGetDescription):
	* intl-auto-encap-win32.c (qxeImmGetIMEFileName):
	* intl-auto-encap-win32.c (qxeMoveFile):
	* intl-auto-encap-win32.c (qxeMoveFileEx):
	* intl-auto-encap-win32.c (qxeGetNamedPipeHandleState):
	* intl-auto-encap-win32.c (qxeCallNamedPipe):
	* intl-auto-encap-win32.c (qxeWaitNamedPipe):
	* intl-auto-encap-win32.c (qxeSetVolumeLabel):
	* intl-auto-encap-win32.c (qxeGetVolumeInformation):
	* intl-auto-encap-win32.c (qxeClearEventLog):
	* intl-auto-encap-win32.c (qxeBackupEventLog):
	* intl-auto-encap-win32.c (qxeOpenEventLog):
	* intl-auto-encap-win32.c (qxeRegisterEventSource):
	* intl-auto-encap-win32.c (qxeOpenBackupEventLog):
	* intl-auto-encap-win32.c (qxeReadEventLog):
	* intl-auto-encap-win32.c (qxeReportEvent):
	* intl-auto-encap-win32.c (qxeAccessCheckAndAuditAlarm):
	* intl-auto-encap-win32.c (qxeObjectOpenAuditAlarm):
	* intl-auto-encap-win32.c (qxeObjectPrivilegeAuditAlarm):
	* intl-auto-encap-win32.c (qxeObjectCloseAuditAlarm):
	* intl-auto-encap-win32.c (qxeObjectDeleteAuditAlarm):
	* intl-auto-encap-win32.c (qxePrivilegedServiceAuditAlarm):
	* intl-auto-encap-win32.c (qxeSetFileSecurity):
	* intl-auto-encap-win32.c (qxeGetFileSecurity):
	* intl-auto-encap-win32.c (qxeFindFirstChangeNotification):
	* intl-auto-encap-win32.c (qxeIsBadStringPtr):
	* intl-auto-encap-win32.c (qxeLookupAccountSid):
	* intl-auto-encap-win32.c (qxeLookupAccountName):
	* intl-auto-encap-win32.c (qxeLookupPrivilegeValue):
	* intl-auto-encap-win32.c (qxeLookupPrivilegeName):
	* intl-auto-encap-win32.c (qxeLookupPrivilegeDisplayName):
	* intl-auto-encap-win32.c (qxeBuildCommDCB):
	* intl-auto-encap-win32.c (qxeBuildCommDCBAndTimeouts):
	* intl-auto-encap-win32.c (qxeCommConfigDialog):
	* intl-auto-encap-win32.c (qxeGetDefaultCommConfig):
	* intl-auto-encap-win32.c (qxeSetDefaultCommConfig):
	* intl-auto-encap-win32.c (qxeGetComputerName):
	* intl-auto-encap-win32.c (qxeSetComputerName):
	* intl-auto-encap-win32.c (qxeGetUserName):
	* intl-auto-encap-win32.c (qxeLogonUser):
	* intl-auto-encap-win32.c (qxeCreateProcessAsUser):
	* intl-auto-encap-win32.c (qxesndPlaySound):
	* intl-auto-encap-win32.c (qxePlaySound):
	* intl-auto-encap-win32.c (qxemidiInGetErrorText):
	* intl-auto-encap-win32.c (qxemmioInstallIOProc):
	* intl-auto-encap-win32.c (qxemmioOpen):
	* intl-auto-encap-win32.c (qxemmioRename):
	* intl-auto-encap-win32.c (qxemciSendCommand):
	* intl-auto-encap-win32.c (qxemciSendString):
	* intl-auto-encap-win32.c (qxemciGetDeviceID):
	* intl-auto-encap-win32.h:
	* intl-auto-encap-win32.h (EnumPrinters):
	* intl-auto-encap-win32.h (ResetPrinter):
	* intl-auto-encap-win32.h (SetJob):
	* intl-auto-encap-win32.h (GetJob):
	* intl-auto-encap-win32.h (EnumJobs):
	* intl-auto-encap-win32.h (AddPrinter):
	* intl-auto-encap-win32.h (SetPrinter):
	* intl-auto-encap-win32.h (GetPrinter):
	* intl-auto-encap-win32.h (AddPrinterDriver):
	* intl-auto-encap-win32.h (AddPrinterDriverEx):
	* intl-auto-encap-win32.h (EnumPrinterDrivers):
	* intl-auto-encap-win32.h (GetPrinterDriver):
	* intl-auto-encap-win32.h (GetPrinterDriverDirectory):
	* intl-auto-encap-win32.h (DeletePrinterDriver):
	* intl-auto-encap-win32.h (DeletePrinterDriverEx):
	* intl-auto-encap-win32.h (AddPerMachineConnection):
	* intl-auto-encap-win32.h (DeletePerMachineConnection):
	* intl-auto-encap-win32.h (EnumPerMachineConnections):
	* intl-auto-encap-win32.h (AddPrintProcessor):
	* intl-auto-encap-win32.h (EnumPrintProcessors):
	* intl-auto-encap-win32.h (GetPrintProcessorDirectory):
	* intl-auto-encap-win32.h (EnumPrintProcessorDatatypes):
	* intl-auto-encap-win32.h (DeletePrintProcessor):
	* intl-auto-encap-win32.h (StartDocPrinter):
	* intl-auto-encap-win32.h (AddJob):
	* intl-auto-encap-win32.h (AdvancedDocumentProperties):
	* intl-auto-encap-win32.h (GetPrinterData):
	* intl-auto-encap-win32.h (GetPrinterDataEx):
	* intl-auto-encap-win32.h (EnumPrinterData):
	* intl-auto-encap-win32.h (EnumPrinterDataEx):
	* intl-auto-encap-win32.h (EnumPrinterKey):
	* intl-auto-encap-win32.h (SetPrinterData):
	* intl-auto-encap-win32.h (SetPrinterDataEx):
	* intl-auto-encap-win32.h (DeletePrinterData):
	* intl-auto-encap-win32.h (DeletePrinterDataEx):
	* intl-auto-encap-win32.h (DeletePrinterKey):
	* intl-auto-encap-win32.h (PrinterMessageBox):
	* intl-auto-encap-win32.h (AddForm):
	* intl-auto-encap-win32.h (DeleteForm):
	* intl-auto-encap-win32.h (GetForm):
	* intl-auto-encap-win32.h (SetForm):
	* intl-auto-encap-win32.h (EnumForms):
	* intl-auto-encap-win32.h (EnumMonitors):
	* intl-auto-encap-win32.h (AddMonitor):
	* intl-auto-encap-win32.h (DeleteMonitor):
	* intl-auto-encap-win32.h (EnumPorts):
	* intl-auto-encap-win32.h (AddPort):
	* intl-auto-encap-win32.h (ConfigurePort):
	* intl-auto-encap-win32.h (DeletePort):
	* intl-auto-encap-win32.h (XcvData):
	* intl-auto-encap-win32.h (SetPort):
	* intl-auto-encap-win32.h (AddPrinterConnection):
	* intl-auto-encap-win32.h (DeletePrinterConnection):
	* intl-auto-encap-win32.h (AddPrintProvidor):
	* intl-auto-encap-win32.h (DeletePrintProvidor):
	* intl-auto-encap-win32.h (SetPrinterHTMLView):
	* intl-auto-encap-win32.h (GetPrinterHTMLView):
	* intl-auto-encap-win32.h (WNetAddConnection):
	* intl-auto-encap-win32.h (WNetAddConnection2):
	* intl-auto-encap-win32.h (WNetAddConnection3):
	* intl-auto-encap-win32.h (WNetCancelConnection):
	* intl-auto-encap-win32.h (WNetCancelConnection2):
	* intl-auto-encap-win32.h (WNetGetConnection):
	* intl-auto-encap-win32.h (WNetUseConnection):
	* intl-auto-encap-win32.h (WNetConnectionDialog1):
	* intl-auto-encap-win32.h (WNetDisconnectDialog1):
	* intl-auto-encap-win32.h (WNetOpenEnum):
	* intl-auto-encap-win32.h (WNetEnumResource):
	* intl-auto-encap-win32.h (WNetGetUniversalName):
	* intl-auto-encap-win32.h (WNetGetUser):
	* intl-auto-encap-win32.h (WNetGetProviderName):
	* intl-auto-encap-win32.h (WNetGetNetworkInformation):
	* intl-auto-encap-win32.h (WNetGetLastError):
	* intl-auto-encap-win32.h (MultinetGetConnectionPerformance):
	* intl-auto-encap-win32.h (GetBinaryType):
	* intl-auto-encap-win32.h (GetShortPathName):
	* intl-auto-encap-win32.h (GetLongPathName):
	* intl-auto-encap-win32.h (FreeEnvironmentStrings):
	* intl-auto-encap-win32.h (FormatMessage):
	* intl-auto-encap-win32.h (CreateMailslot):
	* intl-auto-encap-win32.h (EncryptFile):
	* intl-auto-encap-win32.h (DecryptFile):
	* intl-auto-encap-win32.h (OpenRaw):
	* intl-auto-encap-win32.h (QueryRecoveryAgents):
	* intl-auto-encap-win32.h (lstrcmp):
	* intl-auto-encap-win32.h (lstrcmpi):
	* intl-auto-encap-win32.h (lstrcpyn):
	* intl-auto-encap-win32.h (lstrcpy):
	* intl-auto-encap-win32.h (lstrcat):
	* intl-auto-encap-win32.h (lstrlen):
	* intl-auto-encap-win32.h (CreateMutex):
	* intl-auto-encap-win32.h (OpenMutex):
	* intl-auto-encap-win32.h (CreateEvent):
	* intl-auto-encap-win32.h (OpenEvent):
	* intl-auto-encap-win32.h (CreateSemaphore):
	* intl-auto-encap-win32.h (OpenSemaphore):
	* intl-auto-encap-win32.h (CreateWaitableTimer):
	* intl-auto-encap-win32.h (OpenWaitableTimer):
	* intl-auto-encap-win32.h (CreateFileMapping):
	* intl-auto-encap-win32.h (OpenFileMapping):
	* intl-auto-encap-win32.h (GetLogicalDriveStrings):
	* intl-auto-encap-win32.h (LoadLibrary):
	* intl-auto-encap-win32.h (LoadLibraryEx):
	* intl-auto-encap-win32.h (GetModuleFileName):
	* intl-auto-encap-win32.h (GetModuleHandle):
	* intl-auto-encap-win32.h (CreateProcess):
	* intl-auto-encap-win32.h (FatalAppExit):
	* intl-auto-encap-win32.h (GetStartupInfo):
	* intl-auto-encap-win32.h (GetCommandLine):
	* intl-auto-encap-win32.h (GetEnvironmentVariable):
	* intl-auto-encap-win32.h (SetEnvironmentVariable):
	* intl-auto-encap-win32.h (ExpandEnvironmentStrings):
	* intl-auto-encap-win32.h (OutputDebugString):
	* intl-auto-encap-win32.h (FindResource):
	* intl-auto-encap-win32.h (FindResourceEx):
	* intl-auto-encap-win32.h (EnumResourceTypes):
	* intl-auto-encap-win32.h (EnumResourceNames):
	* intl-auto-encap-win32.h (EnumResourceLanguages):
	* intl-auto-encap-win32.h (BeginUpdateResource):
	* intl-auto-encap-win32.h (UpdateResource):
	* intl-auto-encap-win32.h (EndUpdateResource):
	* intl-auto-encap-win32.h (GlobalAddAtom):
	* intl-auto-encap-win32.h (GlobalFindAtom):
	* intl-auto-encap-win32.h (GlobalGetAtomName):
	* intl-auto-encap-win32.h (AddAtom):
	* intl-auto-encap-win32.h (FindAtom):
	* intl-auto-encap-win32.h (GetAtomName):
	* intl-auto-encap-win32.h (GetProfileInt):
	* intl-auto-encap-win32.h (GetProfileString):
	* intl-auto-encap-win32.h (WriteProfileString):
	* intl-auto-encap-win32.h (GetProfileSection):
	* intl-auto-encap-win32.h (WriteProfileSection):
	* intl-auto-encap-win32.h (GetPrivateProfileInt):
	* intl-auto-encap-win32.h (GetPrivateProfileString):
	* intl-auto-encap-win32.h (WritePrivateProfileString):
	* intl-auto-encap-win32.h (GetPrivateProfileSection):
	* intl-auto-encap-win32.h (WritePrivateProfileSection):
	* intl-auto-encap-win32.h (GetPrivateProfileSectionNames):
	* intl-auto-encap-win32.h (GetPrivateProfileStruct):
	* intl-auto-encap-win32.h (WritePrivateProfileStruct):
	* intl-auto-encap-win32.h (GetDriveType):
	* intl-auto-encap-win32.h (GetSystemDirectory):
	* intl-auto-encap-win32.h (GetTempPath):
	* intl-auto-encap-win32.h (GetTempFileName):
	* intl-auto-encap-win32.h (GetWindowsDirectory):
	* intl-auto-encap-win32.h (SetCurrentDirectory):
	* intl-auto-encap-win32.h (GetCurrentDirectory):
	* intl-auto-encap-win32.h (GetDiskFreeSpace):
	* intl-auto-encap-win32.h (GetDiskFreeSpaceEx):
	* intl-auto-encap-win32.h (CreateDirectory):
	* intl-auto-encap-win32.h (CreateDirectoryEx):
	* intl-auto-encap-win32.h (RemoveDirectory):
	* intl-auto-encap-win32.h (GetFullPathName):
	* intl-auto-encap-win32.h (DefineDosDevice):
	* intl-auto-encap-win32.h (QueryDosDevice):
	* intl-auto-encap-win32.h (CreateFile):
	* intl-auto-encap-win32.h (SetFileAttributes):
	* intl-auto-encap-win32.h (GetFileAttributes):
	* intl-auto-encap-win32.h (GetFileAttributesEx):
	* intl-auto-encap-win32.h (GetCompressedFileSize):
	* intl-auto-encap-win32.h (DeleteFile):
	* intl-auto-encap-win32.h (FindFirstFileEx):
	* intl-auto-encap-win32.h (SearchPath):
	* intl-auto-encap-win32.h (CopyFile):
	* intl-auto-encap-win32.h (CopyFileEx):
	* intl-auto-encap-win32.h (MoveFile):
	* intl-auto-encap-win32.h (MoveFileEx):
	* intl-auto-encap-win32.h (MoveFileWithProgress):
	* intl-auto-encap-win32.h (CreateHardLink):
	* intl-auto-encap-win32.h (CreateNamedPipe):
	* intl-auto-encap-win32.h (GetNamedPipeHandleState):
	* intl-auto-encap-win32.h (CallNamedPipe):
	* intl-auto-encap-win32.h (WaitNamedPipe):
	* intl-auto-encap-win32.h (SetVolumeLabel):
	* intl-auto-encap-win32.h (GetVolumeInformation):
	* intl-auto-encap-win32.h (ClearEventLog):
	* intl-auto-encap-win32.h (BackupEventLog):
	* intl-auto-encap-win32.h (OpenEventLog):
	* intl-auto-encap-win32.h (RegisterEventSource):
	* intl-auto-encap-win32.h (OpenBackupEventLog):
	* intl-auto-encap-win32.h (ReadEventLog):
	* intl-auto-encap-win32.h (ReportEvent):
	* intl-auto-encap-win32.h (AccessCheckAndAuditAlarm):
	* intl-auto-encap-win32.h (AccessCheckByTypeAndAuditAlarm):
	* intl-auto-encap-win32.h (AccessCheckByTypeResultListAndAuditAlarm):
	* intl-auto-encap-win32.h (ObjectOpenAuditAlarm):
	* intl-auto-encap-win32.h (ObjectPrivilegeAuditAlarm):
	* intl-auto-encap-win32.h (ObjectCloseAuditAlarm):
	* intl-auto-encap-win32.h (ObjectDeleteAuditAlarm):
	* intl-auto-encap-win32.h (PrivilegedServiceAuditAlarm):
	* intl-auto-encap-win32.h (SetFileSecurity):
	* intl-auto-encap-win32.h (GetFileSecurity):
	* intl-auto-encap-win32.h (FindFirstChangeNotification):
	* intl-auto-encap-win32.h (ReadDirectoryChanges):
	* intl-auto-encap-win32.h (IsBadStringPtr):
	* intl-auto-encap-win32.h (LookupAccountSid):
	* intl-auto-encap-win32.h (LookupAccountName):
	* intl-auto-encap-win32.h (LookupPrivilegeValue):
	* intl-auto-encap-win32.h (LookupPrivilegeName):
	* intl-auto-encap-win32.h (LookupPrivilegeDisplayName):
	* intl-auto-encap-win32.h (BuildCommDCB):
	* intl-auto-encap-win32.h (BuildCommDCBAndTimeouts):
	* intl-auto-encap-win32.h (CommConfigDialog):
	* intl-auto-encap-win32.h (GetDefaultCommConfig):
	* intl-auto-encap-win32.h (SetDefaultCommConfig):
	* intl-auto-encap-win32.h (GetComputerName):
	* intl-auto-encap-win32.h (SetComputerName):
	* intl-auto-encap-win32.h (GetUserName):
	* intl-auto-encap-win32.h (LogonUser):
	* intl-auto-encap-win32.h (CreateProcessAsUser):
	* intl-auto-encap-win32.h (GetCurrentHwProfile):
	* intl-auto-encap-win32.h (GetVersionEx):
	* intl-auto-encap-win32.h (CreateJobObject):
	* intl-auto-encap-win32.h (OpenJobObject):
	* intl-auto-encap-win32.h (qxemciGetErrorString):
	Regenerate.

	---------------------------
		 Unicode-work
	---------------------------

	* intl-win32.c (convert_multibyte_to_unicode_malloc):
	* intl-win32.c (convert_unicode_to_multibyte_malloc):
	* intl-win32.c (unicode_multibyte_convert_now_damn_it):
	* intl-win32.c (unicode_multibyte_convert_size):
	* intl-win32.c (unicode_multibyte_convert_copy_data):
	* intl-win32.c (convert_multibyte_to_unicode_dynarr):
	* intl-win32.c (convert_unicode_to_multibyte_dynarr):
	* intl-win32.c (mswindows_multibyte_to_unicode_convert):
	* syswindows.h:
	Factor out common options to MultiByteToWideChar and
	WideCharToMultiByte.  Add convert_unicode_to_multibyte_malloc()
	and convert_unicode_to_multibyte_dynarr() and use.  Add stuff for
	alloca() conversion of multibyte/unicode.

	* alloc.c (build_ext_string):
	Use dfc_external_data_len() in case of unicode coding system.

	* alloc.c:
	* mule-charset.c:
	* mule-charset.c (make_charset):
	* mule-charset.c (syms_of_mule_charset):
	Don't zero out and reinit charset Unicode tables.  This fucks up
	dump-time loading.  Anyway, either we load them at dump time or
	run time, never both.

	* unicode.c (init_charset_unicode_tables):
	* unicode.c (vars_of_unicode):
	Dump the blank tables as well.

	---------------------------------------------------------------
		     DOCUMENTATION, MOSTLY MULE-RELATED:
	---------------------------------------------------------------

	* EmacsFrame.c (Xt_StringToScrollBarPlacement):
	* emodules.c:
	* event-Xt.c (x_to_emacs_keysym):
	* fileio.c (Fencrypt_string):
	* input-method-xlib.c (EmacsXtCvtStringToXIMStyles):
	* mule-wnnfns.c (Fwnn_open):
	* redisplay-gtk.c (gtk_output_string):
	* redisplay-gtk.c (gtk_text_width):
	* redisplay-tty.c (init_tty_for_redisplay):
	* redisplay-x.c (x_text_width):
	* regex.c:
	* sysdep.c (init_system_name):
	Add comment about Mule work needed.

	* text.h (NEW_DFC_CONVERT_1_ALLOCA):
	Add more documentation describing why DFC routines were not written
	to return their value.  Add some other DFC documentation.

	* console-msw.c:
	* console-msw.h:
	Add pointer to docs in win32.c.

	* emacs.c:
	Add comments on sources of doc info.

	* text.c:
	* text.c (NOTE): New.
	* text.c (Note): New.
	* charset.h (struct Lisp_Charset):
	* unicode.c:
	* intl-win32.c:
	* intl-win32.c (NOTE): New.
	* intl-win32.c (Abstract): New.
	* intl-encap-win32.c:
	* text.h:
	* text.h (internal_format):
	* file-coding.c (encode_decode_coding_region):
	* file-coding.c:
	* mule-coding.c (parse_iso2022_esc):
	Collect background comments and related to text matters and
	internationalization, and proposals for work to be done, in text.c
	or Internals manual, stuff related to specific textual API's in
	text.h, and stuff related to internal implementation of Unicode
	conversion in unicode.c.  Put lots of pointers to the comments to
	make them easier to find.

	* s/mingw32.h:
	* s/win32-common.h:
	* s/win32-native.h:
	* s/windowsnt.h:
	* win32.c:
	* win32.c (console-msw.h): New.
	* win32.c (process-nt.c): New.
	* win32.c (nt.c): New.
	* win32.c (win32.c): New.
	* win32.c (syswindows.h): New.
	* win32.c (intl-win32.c): New.
	* win32.c (intl-encap-win32.c): New.
	* win32.c (intl-auto-encap-win32.c): New.
	* win32.c (intl-auto-encap-win32.h): New.
	Add bunches of new documentation on the different kinds of
	builds and environments under Windows and how they work.
	Collect this info in win32.c.  Add pointers to these docs in
	the relevant s/* files.

	* emacs.c (mswindows_handle_hardware_exceptions_1):
	* emacs.c:
	Document places with long comments.
	Remove comment about exiting, move to internals manual, put
	in pointer.

	* event-stream.c:
	Move docs about event queues and focus to internals manual, put
	in pointer.

	* events.h:
	Move docs about event stream callbacks to internals manual, put
	in pointer.

	* profile.c:
	* redisplay.c (create_text_block):
	* signal.c:
	Move documentation to the Internals manual.

	* process-nt.c:
	Add pointer to comment in win32-native.el.

	* lisp.h:
	Add comments about some comment conventions.

	* lisp.h (xfree):
	Add comment about the second argument.

	* device-msw.c (msprinter_init_device):
	* redisplay-msw.c (mswindows_text_width_single_run):
	@@#### comments are out-of-date.

	---------------------------------------------------------------
		   PDUMP WORK (MOTIVATED BY UNICODE CHANGES)
	---------------------------------------------------------------

	* alloc.c (lispdesc_block_size_1):
	* alloc.c (lispdesc_one_description_line_size):
	* alloc.c (mark_struct_contents):
	* buffer.c:
	* buffer.c (complex_vars_of_buffer):
	* buffer.c (vars_of_buffer):
	* bytecode.c:
	* console-impl.h (INITIALIZE_CONSOLE_TYPE):
	* console.c (complex_vars_of_console):
	* console.c (console_type_create):
	* console.c:
	* device.c:
	* dumper.c (dump_add_root_block):
	* dumper.c (dump_add_root_block_ptr):
	* dumper.c (dump_add_root_lisp_object):
	* dumper.c (dump_add_weak_object_chain):
	* dumper.c (pdump_add_block):
	* dumper.c (pdump_allocate_offset):
	* dumper.c (pdump_block_list_elt):
	* dumper.c (pdump_desc_list_elt):
	* dumper.c (pdump_dump_data):
	* dumper.c (pdump_dump_root_blocks):
	* dumper.c (pdump_dump_rtables):
	* dumper.c (pdump_get_block_list):
	* dumper.c (pdump_register_block):
	* dumper.c (pdump_register_block_contents):
	* dumper.c (pdump_register_object):
	* dumper.c (pdump_scan_by_alignment):
	* alloc.c (lispdesc_one_description_line_size):
	* alloc.c (kkcc_marking):
	* dumper.c (pdump_register_sub):
	* lrecord.h:
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (memory_description_type):
	* elhash.c:
	* emodules.h:
	* events.c:
	* extents.c:
	* frame.c:
	* glyphs.c:
	* glyphs.h (INITIALIZE_DEVICE_IIFORMAT):
	* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM):
	* mule-charset.c (vars_of_mule_charset):
	* mule-coding.c:
	* objects.c:
	* profile.c (vars_of_profile):
	* rangetab.c:
	* redisplay.c:
	* specifier.c (specifier_type_create):
	* specifier.c:
	* specifier.h (INITIALIZE_SPECIFIER_TYPE):
	* window.c:
	* lstream.c (lstream_description):
	* file-coding.h (INITIALIZE_CODING_SYSTEM_TYPE):
	* file-coding.c (coding_system_description):
	* file-coding.c (coding_system_type_create):
	* lrecord.h (XD_DYNARR_DESC):
	PDUMP:

	Properly implement dump_add_root_block(), which never worked before,
	and is necessary for dumping Unicode tables.

	Pdump name changes for accuracy:
	XD_STRUCT_PTR -> XD_BLOCK_PTR.
	XD_STRUCT_ARRAY -> XD_BLOCK_ARRAY.
	XD_C_STRING -> XD_ASCII_STRING.
	*_structure_* -> *_block_*.

	* lrecord.h (XD_DYNARR_DESC): some comments added about
	dump_add_root_block() vs dump_add_root_block_ptr().

	* extents.c:
	remove incorrect comment about pdump problems with gap array.

	---------------------------------------------------------------
				    ALLOCATION
	---------------------------------------------------------------

	* abbrev.c (abbrev_oblookup):
	* alloc.c (MALLOC_BEGIN):
	* bytecode.c (compiled_function_instructions):
	* casefiddle.c (casify_object):
	* device-msw.c (Fmswindows_printer_list):
	* device-x.c:
	* dired-msw.c (mswindows_get_files):
	* doc.c (Fsubstitute_command_keys):
	* doc.c (unparesseuxify_doc_string):
	* doc.c:
	* doprnt.c (emacs_vsprintf_malloc):
	* doprnt.c (emacs_vsprintf_malloc_lisp):
	* dragdrop.c (dnd_url_hexify_string):
	* dragdrop.c:
	* editfns.c (Fformat_time_string):
	* editfns.c (Finsert_char):
	* editfns.c (get_home_directory):
	* emodules.c (emodules_load):
	* file-coding.c (setup_eol_coding_systems):
	* fileio.c (Fdirectory_file_name):
	* fileio.c (Ffile_name_directory):
	* fileio.c (Fsubstitute_in_file_name):
	* fileio.c (Fexpand_file_name):
	* filelock.c (MAKE_LOCK_NAME):
	* filelock.c (current_lock_owner):
	* filelock.c (lock_file):
	* filelock.c (lock_file_1):
	* fns.c (mapcar1):
	* glyphs-eimage.c (jpeg_instantiate):
	* glyphs-eimage.c (gif_instantiate):
	* glyphs-eimage.c (tiff_instantiate):
	* glyphs-gtk.c (gtk_xpm_instantiate):
	* glyphs-msw.c (mswindows_combo_box_property):
	* glyphs-msw.c (mswindows_widget_property):
	* glyphs-msw.c (convert_EImage_to_DIBitmap):
	* glyphs-msw.c (mswindows_initialize_image_instance_mask):
	* glyphs-msw.c (xbm_create_bitmap_from_data):
	* glyphs-x.c (convert_EImage_to_XImage):
	* glyphs-x.c (x_xface_instantiate):
	* gui-msw.c (mswindows_translate_menu_or_dialog_item):
	* gui-x.c (add_accel_and_to_external):
	* imgproc.c (create_colorcell):
	* imgproc.c (build_EImage_quantable):
	* intl-win32.c (Fmswindows_get_valid_keyboard_layouts):
	* intl-win32.c (convert_multibyte_to_unicode_malloc):
	* intl-win32.c (wcsdup):
	* lread.c (Fload_internal):
	* lread.c (locate_file_map_suffixes):
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	* menubar.c (Fnormalize_menu_item_name):
	* nt.c (init_mswindows_environment):
	* nt.c (get_cached_volume_information):
	* nt.c (get_volume_info):
	* nt.c (nt_get_resource):
	* objects-msw.c (mswindows_string_to_color):
	* objects-x.c (truename_via_random_props):
	* print.c (output_string):
	* process-nt.c (nt_create_process):
	* process-unix.c (child_setup):
	* process.c (init_xemacs_process):
	* realpath.c (readlink_and_correct_case):
	* redisplay.c (add_disp_table_entry_runes_1):
	* search.c (Fregexp_quote):
	* search.c (search_buffer):
	* search.c (wordify):
	* select-common.c (receive_incremental_selection):
	* symbols.c (check_module_subr):
	* sysdep.c (sys_subshell):
	* syswindows.h (LOCAL_TO_WIN32_FILE_FORMAT):
	* syswindows.h (WIN32_TO_LOCAL_FILE_FORMAT):
	* text.c (convert_ichar_string_into_malloced_string):
	* text.c (eito_malloc_1):
	* text.h (EI_CASECHANGE):
	* text.h (EI_ALLOC):
	* text.h (eicpy_c):
	* text.h (eicpyout_alloca_fmt):
	* text.h (eito_alloca):
	* text.h (LISP_STRING_TO_ALLOCA):
	* ui-byhand.c (Fgtk_curve_get_vector):
	* ui-byhand.c (Fgtk_curve_set_vector):
	* text.h:
	New macros {alloca,xnew}_{itext,{i,ext,raw,bin,asc}bytes} for
	more convenient allocation of these commonly requested items.
	Modify functions to use alloca_ibytes, alloca_array, alloca_extbytes,
	xnew_ibytes, etc. also XREALLOC_ARRAY, xnew.

	* alloc.c (FREE_FIXED_TYPE):
	* alloc.c (Fstring):
	* alloc.c (MALLOC_BEGIN):
	* alloc.c (free_managed_lcrecord):
	* alloc.c (garbage_collect_1):
	* alloc.c (init_alloc_once_early):
	* alloc.c (xcalloc):
	* alloc.c (xfree_1):
	* alloc.c (xrealloc):
	* alloc.c:
	Rewrite the allocation functions to factor out repeated code.
	Add assertions for freeing dumped data.

	* lisp.h (xmalloc_and_record_unwind):
	* lisp.h (xfree):
	Moved down and consolidated with other allocation stuff.

	* lisp.h:
	* dynarr.c (stack_like_malloc):
	* dynarr.c (stack_like_free):
	New functions for allocation that's very efficient when mostly in
	LIFO order.

	* lisp.h:
	* text.c (find_pos_of_existing_active_alloca_convert):
	* text.h (NEW_DFC_CONVERT_1_ALLOCA):
	* text.c (new_dfc_convert_now_damn_it):
	* text.c (new_dfc_convert_size):
	* text.c (new_dfc_convert_copy_data):
	* text.c (new_dfc_convert_malloc):
	* text.h:
	Factor out some stuff for general use by alloca()-conversion funs.

	* text.h (xmalloc_ibytes):
	* lisp.h:
	Fill out convenience routines for allocating various kinds of
	bytes and put them in lisp.h.  Use them in place of xmalloc(),
	ALLOCA().

	* text.h (SIZED_C_STRING_TO_EXTERNAL_MALLOC):
	* text.h (C_STRING_TO_SIZED_EXTERNAL_MALLOC):
	Fill out the convenience functions so the _MALLOC() kinds match
	the alloca() kinds.

	---------------------------------------------------------------
				ERROR-CHECKING
	---------------------------------------------------------------

	* text.h (eicpy_c):
	* text.h (eicpy_c_len):
	* text.h (eicat_c):
	* text.h (eisub_c):
	Create ASSERT_ASCTEXT_ASCII() and ASSERT_ASCTEXT_ASCII_LEN()
	from similar Eistring checkers and change the Eistring checkers to
	use them instead.


	---------------------------------------------------------------
			       MACROS IN LISP.H
	---------------------------------------------------------------

	* lisp.h (GCDECL1):
	* lisp.h (NNUNGCPRO):
	* lisp.h (XGCDECL1):
	* lisp.h (XGCPRO1):
	* lisp.h (XUNGCPRO):
	Redo GCPRO declarations.  Create a "base" set of functions that can
	be used to generate any kind of gcpro sets -- regular, ngcpro,
	nngcpro, private ones used in GC_EXTERNAL_LIST_LOOP_2.

	* buffer.c (Fkill_buffer):
	* callint.c (quotify_args):
	* chartab.c (chartab_data_validate):
	* console-msw.c:
	* device-x.c:
	* dialog-msw.c (handle_question_dialog_box):
	* dired.c (file_name_completion):
	* dired.c (Fdirectory_files):
	* dired.c (file_name_completion_stat):
	* extents.c (memoize_extent_face_internal):
	* extents.c (report_extent_modification_mapper):
	* ui-gtk.c (Fgtk_call_function):
	* ui-gtk.c (Fgtk_import_function_internal):
	* rangetab.c (rangetab_data_validate):
	* nt.c (init_mswindows_environment):
	* mule-coding.c (parse_charset_conversion_specs):
	* minibuf.c (regexp_ignore_completion_p):
	* menubar-msw.c (populate_or_checksum_helper):
	* menubar.c (Fmenu_find_real_submenu):
	* menubar-gtk.c (menu_create_menubar):
	* lread.c (locate_file_without_hash):
	* lread.c (Flocate_file):
	* lread.c (Flocate_file_clear_hashing):
	* lread.c (decode_mode):
	* lread.c (locate_file):
	* lisp.h (PROPERTY_LIST_LOOP):
	* lisp.h (GC_EXTERNAL_LIST_LOOP_2): New.
	* lisp.h (END_GC_EXTERNAL_LIST_LOOP): New.
	* lisp.h (EXTERNAL_LIST_LOOP): Deleted.
	* gutter.c (gutter_visible_validate):
	* glyphs.c (decode_image_instance_type_list):
	* glyphs.c (Fset_console_type_image_conversion_list):
	* glyphs-widget.c (check_valid_instantiator_list):
	* glyphs-widget.c (check_valid_item_list):
	* fns.c (Freplace_list):
	* fileio.c (Finsert_file_contents_internal):
	* fileio.c (Ffind_file_name_handler):
	* file-coding.c (Fset_coding_priority_list):
	* file-coding.c (chain_putprop):
	* specifier.c (display_table_validate):
	Eliminate EXTERNAL_LIST_LOOP, which does not check for circularities.
	Use EXTERNAL_LIST_LOOP_2 instead or EXTERNAL_LIST_LOOP_3
	or EXTERNAL_PROPERTY_LIST_LOOP_3 or GC_EXTERNAL_LIST_LOOP_2
	(new macro).  Removed/redid comments on EXTERNAL_LIST_LOOP.


	---------------------------------------------------------------
				 SPACING FIXES
	---------------------------------------------------------------

	* callint.c (Fcall_interactively):
	* hftctl.c (WR_REQ):
	* number-gmp.c (init_number_gmp):
	* process-unix.c (unix_deactivate_process):
	Spacing fixes.


	---------------------------------------------------------------
		     FIX FOR GEOMETRY PROBLEM IN FIRST FRAME
	---------------------------------------------------------------

	* unicode.c (init_charset_unicode_tables):
	Add workaround for newlib bug in sscanf() [should be fixed by
	release 1.5.12 of Cygwin].
	* toolbar.c (update_frame_toolbars_geometry):
	bug fix for problem of initial frame being 77 chars wide on Windows.
	will be overridden by my other ws.

	---------------------------------------------------------------
			FIX FOR LEAKING PROCESS HANDLES:
	---------------------------------------------------------------


	* process-nt.c (free_process_memory):
	* process-nt.c (alloc_process_memory):
	* process-nt.c (run_in_other_process):
	* process-nt.c (send_signal_the_nt_way):
	* process-nt.c (nt_finalize_process_data):
	* process-nt.c (nt_create_process):
	* process-nt.c (nt_deactivate_process):
	* process-nt.c (process_type_create_nt):
	Fixes for leaking handles.  Inspired by work done by Adrian Aichner
	<adrian@xemacs.org>.

	---------------------------------------------------------------
			FIX FOR CYGWIN BUG (Unicode-related):
	---------------------------------------------------------------

	* unicode.c (init_charset_unicode_tables):
	Add workaround for newlib bug in sscanf() [should be fixed by
	release 1.5.12 of Cygwin].

	---------------------------------------------------------------
				 WARNING FIXES:
	---------------------------------------------------------------

	* console-stream.c (init_console_stream):
	`reinit' is unused.

	* compiler.h:
	* event-msw.c (mswindows_wnd_proc):
	* frame-msw.c (mswindows_frame_totally_visible_p):
	* intl-encap-win32.c (qxeRegisterClass):
	* intl-encap-win32.c (qxeRegisterClassEx):
	* text.h (DFC_ALLOCA_USE_CONVERTED_DATA):
	Add stuff to deal with ANSI-aliasing warnings I got.

	* regex.c:
	* regex.c (itext_ichar):
	Gather includes together to avoid warning.

	---------------------------------------------------------------
			CHANGES TO INITIALIZATION ROUTINES:
	---------------------------------------------------------------

	* buffer.c (vars_of_buffer):
	* emacs.c (main_1):
	* console.c (vars_of_console):
	* debug.c (vars_of_debug):
	* device-x.c (vars_of_device_x):
	* device.c (vars_of_device):
	* dragdrop.c (vars_of_dragdrop):
	* emodules.c (vars_of_module):
	* eval.c (vars_of_eval):
	* eval.c (reinit_vars_of_eval):
	* event-Xt.c (vars_of_event_Xt):
	* event-gtk.c (vars_of_event_gtk):
	* event-msw.c (vars_of_event_mswindows):
	* event-stream.c (vars_of_event_stream):
	* event-tty.c (vars_of_event_tty):
	* events.c (vars_of_events):
	* extents.c (vars_of_extents):
	* faces.c (complex_vars_of_faces):
	* file-coding.c (vars_of_file_coding):
	* fileio.c (vars_of_fileio):
	* font-lock.c (vars_of_font_lock):
	* frame-msw.c (vars_of_frame_mswindows):
	* glyphs-widget.c (vars_of_glyphs_widget):
	* glyphs.c (vars_of_glyphs):
	* glyphs.c (complex_vars_of_glyphs):
	* gui-x.c (vars_of_gui_x):
	* insdel.c (vars_of_insdel):
	* lread.c (vars_of_lread):
	* lstream.c (vars_of_lstream):
	* menubar-gtk.c (vars_of_menubar_gtk):
	* menubar-x.c (vars_of_menubar_x):
	* minibuf.c (vars_of_minibuf):
	* mule-wnnfns.c (vars_of_mule_wnn):
	* objects-msw.c (vars_of_objects_mswindows):
	* objects.c (vars_of_objects):
	* print.c (vars_of_print):
	* scrollbar-x.c (vars_of_scrollbar_x):
	* search.c (vars_of_search):
	* select-x.c (vars_of_select_x):
	* text.c (reinit_vars_of_text):
	* text.c (vars_of_text):
	* undo.c (vars_of_undo):
	* unicode.c (vars_of_unicode):
	* window.c (vars_of_window):
	* symsinit.h:
	Call reinit_*() functions directly from emacs.c, for clarity.
	Factor out some redundant init code.  Move disallowed stuff
	that had crept into vars_of_glyphs() into complex_vars_of_glyphs().
	Call init_eval_semi_early() from eval.c not in the middle of
	vars_of_() in emacs.c since there should be no order dependency
	in the latter calls.

	---------------------------------------------------------------
				     ARMAGEDDON:
	---------------------------------------------------------------

	* alloc.c:
	* emacs.c:
	* lisp.h:
	* print.c (debug_backtrace):
	* print.c (debug_p3):
	* print.c (debug_p4):
	* print.c (debug_prin1):
	* print.c (print_internal):
	* print.c (printing_major_badness):
	* print.c (struct debug_bindings ):
	* print.c (write_string_to_stdio_stream_1):
	* print.c (write_string_to_external_output_va):
	* print.c (debug_prin1_exit):
	* print.c (write_string_to_alternate_debugging_output):
	Rename inhibit_non_essential_printing_operations to
	  inhibit_non_essential_conversion_operations.

	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	Assert on !inhibit_non_essential_conversion_operations.

	* console-msw.c (Fmswindows_message_box):
	* console-msw.c (GetConsoleHwnd):
	* console-msw.c (mswindows_output_console_string):
	* console-msw.c (write_string_to_mswindows_debugging_output):
	* print.c (write_string_to_stdio_stream_1):
	Don't do conversion in SetConsoleTitle or FindWindow to avoid
	problems during armageddon.  Put #errors for NON_ASCII_INTERNAL_FORMAT
	in places where problems would arise.

	---------------------------------------------------------------
			CHANGES TO THE BUILD PROCEDURE:
	---------------------------------------------------------------

	* config.h.in:
	* s/cxux.h:
	* s/usg5-4-2.h:
	* m/powerpc.h:
	Add comment about correct ordering of this file.
	Rearrange everything to follow this -- put all #undefs together
	and before the s&m files.  Add undefs for HAVE_ALLOCA, C_ALLOCA,
	BROKEN_ALLOCA_IN_FUNCTION_CALLS, STACK_DIRECTION.  Remove unused
	HAVE_STPCPY, HAVE_GETWD, HAVE_SETLOCALE.

	* m/gec63.h: Deleted; totally broken, not used at all, not in FSF.

	* m/7300.h:
	* m/acorn.h:
	* m/alliant-2800.h:
	* m/alliant.h:
	* m/altos.h:
	* m/altos.h (SWITCH_ENUM_BUG):
	* m/amdahl.h:
	* m/apollo.h:
	* m/att3b.h:
	* m/aviion.h:
	* m/celerity.h:
	* m/clipper.h:
	* m/cnvrgnt.h:
	* m/convex.h:
	* m/cydra5.h:
	* m/cydra5.h (DATA_START):
	* m/delta.h:
	* m/delta88k.h:
	* m/dpx2.h:
	* m/elxsi.h:
	* m/ews4800r.h:
	* m/gould.h:
	* m/hp300bsd.h (LOAD_AVE_TYPE):
	* m/hp800.h:
	* m/hp9000s300.h:
	* m/i860.h:
	* m/ibmps2-aix.h:
	* m/ibmps2-aix.h (LIBS_MACHINE):
	* m/ibmrs6000.h:
	* m/ibmrt-aix.h:
	* m/ibmrt.h:
	* m/intel386.h:
	* m/intel386.h (SEGMENT_MASK):
	* m/iris4d.h:
	* m/iris5d.h:
	* m/iris6d.h:
	* m/irist.h:
	* m/isi-ov.h:
	* m/luna88k.h:
	* m/m68k.h (ASSERT_VALID_POINTER):
	* m/masscomp.h:
	* m/mg1.h:
	* m/mips-nec.h:
	* m/mips-siemens.h:
	* m/mips.h:
	* m/news.h:
	* m/nh3000.h:
	* m/nh4000.h:
	* m/ns32000.h:
	* m/orion105.h:
	* m/pfa50.h:
	* m/plexus.h:
	* m/pmax.h:
	* m/powerpc.h:
	* m/pyrmips.h (CANNOT_DUMP):
	* m/sequent-ptx.h:
	* m/sequent.h:
	* m/sgi-challenge.h:
	* m/symmetry.h:
	* m/tad68k.h:
	* m/tahoe.h:
	* m/targon31.h:
	* m/tekxd88.h:
	* m/template.h:
	* m/tower32.h:
	* m/tower32v3.h:
	* m/ustation.h:
	* m/vax.h:
	* m/wicat.h:
	* m/xps100.h:
	* m/xps100.h (TERMINFO):
	Delete C_ALLOCA, HAVE_ALLOCA, STACK_DIRECTION,
	BROKEN_ALLOCA_IN_FUNCTION_CALLS.  All of this is auto-detected.
	When in doubt, I followed recent FSF sources, which also have
	these things deleted.


2002-04-05  Golubev I. N.  <gin@mo.msk.ru>

	* .gdbinit (pptype):
	Replace `ptype', which clashes with the gdb builtin `ptype'.

2004-09-02  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* buffer.c (Frecord_buffer): Make sure the argument is buffer
	to fix a crash.  Also, check the buffer is live and it
	really exists in buffer_list.  If the buffer is not in the list,
	prepend it.

2004-10-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.18 "chestnut" is released.

2004-10-19  Jerry James  <james@xemacs.org>

	* console-stream.c (init_console_stream): Mark another unused param.

2004-10-19  Jerry James  <james@xemacs.org>

	* events.c: Define USED_IF_TTY and USED_IF_TOOLBARS.  Use them to
	mark more unused parameters.
	* console.c: Define USED_IF_TTY and use it.
	* sysdep.c: Define USED_IF_TTY.  Mark more unused parameters.
	Update a URL in a comment.

2004-10-16  Malcolm Purvis  <malcolmp@xemacs.org>

	* gtk-xemacs.c (gtk_xemacs_size_allocate): Cast pointer to right type.

2004-10-14  Jerry James  <james@xemacs.org>

	* compiler.h: New USED_IF_MULE and USED_IF_MULE_OR_CHECK_TEXT macros.
	* glyphs-msw.c (charset_of_text): Use USED_IF_MULE.
	* intl-x.c (init_x_locale): Ditto.
	* intl-win32.c: Remove USED_IF_MULE definition.
	* regex.h: Mark RE_LISP_SHORT_CONTEXT_ARGS_DECL arguments unused.
	New RE_LISP_CONTEXT_ARGS_MULE_DECL macro for one unused case.

	* buffer.h:
	* device-x.c:
	* elhash.c:
	* objects.c:
	* regex.c:
	* search.c:
	* text.c:
	* text.h:
	* unicode.c:
	Mark more unused parameters.

2004-09-27  Jerry James  <james@xemacs.org>

	* gmalloc.c (malloc): Change log to log2 to quiet gcc 3.3.

2004-09-27  Jerry James  <james@xemacs.org>

	* sysdep.c: Mark more unused parameters with the UNUSED macro.

2004-09-21  Jerry James  <james@xemacs.org>

	* ExternalClient.c: Include compiler.h.
	* ExternalShell.c: Ditto.

2004-09-19  Stephen J. Turnbull  <stephen@xemacs.org>

	* file-coding.c: Improve explanatory comments, add diatribes.
	Fix some typos in comments.

2003-11-21  Stephen J. Turnbull  <stephen@xemacs.org>

	* dired.c (Fdirectory_files): MATCH is only tried against basename.

2003-11-02  Stephen J. Turnbull  <stephen@xemacs.org>

	* eval.c (Fcatch, Fthrow): Document that tags are compared with `eq'.

2003-10-31  Stephen J. Turnbull  <stephen@xemacs.org>

	* procimpl.h (struct Lisp_Process):
	* undo.c (Fprimitive_undo):
	Remove obsolete references to ENERGIZE in comments.

2004-07-18  Stephen J. Turnbull  <stephen@xemacs.org>

	* glyphs.c (Fimage_instance_type): Add 'widget to docstring.

2004-07-12  Stephen J. Turnbull  <stephen@xemacs.org>

	* glyphs-widget.c (tab_control_query_geometry):
	(logical_unit_height):
	Typos in comments.

2004-06-29  Stephen J. Turnbull  <stephen@xemacs.org>

	* syntax.c (Sextword): Doesn't seem to exist.  Move comment to
	Internals manual.

2004-09-21  Jerry James  <james@xemacs.org>

	* sound.c (Fwait_for_sounds): Factor out test for unused parameter.
	(Fconnected_to_nas_p): Ditto.

2004-05-14  Darryl Okahata  <darrylo@xemacs.org>

	* window.c (current-pixel-row, current-pixel-column).  Added a
	new function, ``current-pixel-row'', that returns the pixel row
	of point.  current-pixel-column was modified to share code with
	current-pixel-row''.

2004-09-14  Jerry James  <james@xemacs.org>

	* compiler.h: Change old UNUSED_ARG into UNUSED_ARG and
	ATTRIBUTE_UNUSED.  Create a new UNUSED macro that works in the
	common case.  Define conservatively for the Intel compiler.
	* dialog-x.c (dbox_descriptor_to_widget_value): Comment out
	declaration and assignment of unused variable title.
	(x_make_dialog_box_internal): Remove unused variable parent.
	* emacs.c (Fkill_emacs): Uno doesn't grok typeof.
	* file-coding.c (Fdefine_coding_system_alias): Remove unused
	variable real_coding_system.
	* glyphs.c (map_subwindow): Remove unused variable f.
	* gui-x.c (button_item_to_widget_value): Rename intlen to
	unused_intlen to quiet Uno.
	* miscplay.c (UNUSED): Removed in favor of compiler.h version.
	* mule-canna.c (Fcanna_touroku_string): Remove unused variable
	len.
	* mule-canna.c (Fcanna_henkan_next): Remove unused variable endp.
	* mule-ccl.c (CCL_WRITE_STRING): Remove unused variable bytes and
	fix some indentation problems.
	* number-gmp.h: Turn off gcc extensions for Uno.
	* redisplay-output.c (compare_display_blocks): #if 0 out
	declaration and assignment of unused variable block_end.
	* redisplay.c (regenerate_window_extents_only_changed): Remove
	unused variable new_start.
	(regenerate_window_incrementally): Ditto.
	* scrollbar.c (update_scrollbar_instance): #if 0 out declaration
	and assignment of unused variable new_window.
	* specifier.c (specifier_instance): Remove unused variable tag.
	* sysdep.c (tty_init_sys_modes_on_device): Define and assigne
	variable output_fd only when it will be used.
	(tty_reset_sys_modes_on_device): Ditto.
	* sysproc.h: Define the FD_* macros conservatively for Uno.
	* syssignal.h (SIG_ARG_MAYBE_UNUSED): New macro.
	* syswait.h: Define the W* macros conservatively for Uno.

	* EmacsFrame.c:
	* EmacsManager.c:
	* ExternalClient.c:
	* ExternalShell.c:
	* alloc.c:
	* balloon_help.c:
	* bytecode.c:
	* callint.c:
	* casetab.c:
	* chartab.c:
	* cm.c:
	* cmdloop.c:
	* console-gtk.c:
	* console-msw.c:
	* console-stream.c:
	* console-tty.c:
	* console-x.c:
	* console.c:
	* data.c:
	* database.c:
	* device-gtk.c:
	* device-msw.c:
	* device-tty.c:
	* device-x.c:
	* device.c:
	* dialog-gtk.c:
	* dialog-msw.c:
	* dired.c:
	* dumper.c:
	* editfns.c:
	* elhash.c:
	* emacs.c:
	* esd.c:
	* eval.c:
	* event-Xt.c:
	* event-gtk.c:
	* event-msw.c:
	* event-stream.c:
	* event-tty.c:
	* events.c:
	* extents.c:
	* faces.c:
	* file-coding.c:
	* fileio.c:
	* filemode.c:
	* floatfns.c:
	* fns.c:
	* frame-gtk.c:
	* frame-msw.c:
	* frame-tty.c:
	* frame-x.c:
	* frame.c:
	* free-hook.c:
	* glyphs-eimage.c:
	* glyphs-gtk.c:
	* glyphs-msw.c:
	* glyphs-shared.c:
	* glyphs-widget.c:
	* glyphs-x.c:
	* glyphs.c:
	* gpmevent.c:
	* gtk-xemacs.c:
	* gui-msw.c:
	* gui-x.c:
	* gui.c:
	* gutter.c:
	* hpplay.c:
	* input-method-motif.c:
	* input-method-xlib.c:
	* intl-win32.c:
	* intl-x.c:
	* keymap.c:
	* lread.c:
	* lstream.c:
	* marker.c:
	* menubar-gtk.c:
	* menubar-msw.c:
	* menubar-x.c:
	* menubar.c:
	* minibuf.c:
	* miscplay.c:
	* mule-charset.c:
	* mule-coding.c:
	* nas.c:
	* native-gtk-toolbar.c:
	* nt.c:
	* ntplay.c:
	* number-gmp.c:
	* number.c:
	* objects-gtk.c:
	* objects-msw.c:
	* objects-tty.c:
	* objects-x.c:
	* objects.c:
	* opaque.c:
	* print.c:
	* process-nt.c:
	* process-unix.c:
	* profile.c:
	* rangetab.c:
	* redisplay-gtk.c:
	* redisplay-msw.c:
	* redisplay-output.c:
	* redisplay-tty.c:
	* redisplay-x.c:
	* redisplay.c:
	* regex.c:
	* scrollbar-gtk.c:
	* scrollbar-msw.c:
	* scrollbar-x.c:
	* scrollbar.c:
	* search.c:
	* select-gtk.c:
	* select-msw.c:
	* select-x.c:
	* sgiplay.c:
	* signal.c:
	* sound.c:
	* specifier.c:
	* sunpro.c:
	* symbols.c:
	* syntax.c:
	* sysdep.c:
	* terminfo.c:
	* tests.c:
	* text.c:
	* text.h:
	* toolbar-gtk.c:
	* toolbar-msw.c:
	* toolbar-x.c:
	* toolbar.c:
	* tooltalk.c:
	* ui-byhand.c:
	* ui-gtk.c:
	* unexaix.c:
	* unexalpha.c:
	* unexconvex.c:
	* unexcw.c:
	* unexec.c:
	* unexelf.c:
	* unexelfsgi.c:
	* unexencap.c:
	* unexenix.c:
	* unexfreebsd.c:
	* unexfx2800.c:
	* unexhp9k3.c:
	* unexhp9k800.c:
	* unexmips.c:
	* unexnt.c:
	* unexsni.c:
	* unexsol2-6.c:
	* unexsol2.c:
	* unexsunos4.c:
	* unicode.c:
	* vm-limit.c:
	* win32.c:
	* window.c:
	Mark unused parameters with the UNUSED macro.

2004-09-19  Jerry James  <james@xemacs.org>

	* s/windowsnt.h (DECLARE_DOESNT_RETURN_TYPE): Remove extern so
	that static funcions can be declared.

2004-09-14  Jerry James  <james@xemacs.org>

	* mule-canna.c (CANNA_NEW_WCHAR_AWARE): Define to use new wchar
	interface.
	* mule-canna.c (call_Fding): Return an int to match the jrBeepFunc
	prototype.
	* mule-canna.c (Fcanna_initialize): The jrBeepFunc prototype is
	now given in the Canna headers.

2004-09-14  Jerry James  <james@xemacs.org>

	* gifrlib.h: Remove redundant extern declarations.

2004-09-14  Jerry James  <james@xemacs.org>

	* doprnt.c (emacs_doprnt_1): Change message to msg to eliminate a
	gcc shadow warning.
	* glyphs-gtk.c:
	* glyphs.h:
	Use enum image_instance_type and do not typedef the enum to
	image_instance_type to eliminate a gcc shadow warning.

2004-09-14  Jerry James  <james@xemacs.org>

	* linuxplay.c (linux_play_data_or_file): Fix type punning
	warning.

2004-09-14  Jerry James  <james@xemacs.org>

	* compiler.h: Change definition of RETURN_NOT_REACHED for icc.
	* glyphs-eimage.c (tiff_memory_write): Quiet gcc warning.

2004-09-13  Jerry James  <james@xemacs.org>

	* callproc.c: Really remove.

2004-09-13  Jerry James  <james@xemacs.org>

	* s/windowsnt.h: Define (DECLARE_)DOESNT_RETURN_TYPE instead of
	(DECLARE_)DOESNT_RETURN.
	* buffer.c (nsberror): Mark as noreturn.
	* cmdloop.c (Fcommand_loop_1): Mark as noreturn when
	!LISP_COMMAND_LOOP.
	* cmdloop.c (Freally_early_error_handler): Mark as noreturn.  Use
	RETURN_NOT_REACHED to quash compiler warnings.
	* cmdloop.c (command_loop_3): Ditto.
	* cmdloop.c (command_loop_2): Ditto.
	* cmdloop.c (call_command_loop): Ditto, both versions.
	* cmdloop.c (command_loop_1): Ditto, when !LISP_COMMAND_LOOP.
	* cmdloop.c (Fcommand_loop_1): Ditto, when !LISP_COMMAND_LOOP.
	* commands.h (call_command_loop): Declare as noreturn.
	* compiler.h: Define (DECLARE_)DOESNT_RETURN_TYPE for functions
	with non-void return types.  Use them to define
	(DECLARE_)DOESNT_RETURN.
	* device-x.c (x_IO_error_handler): Use RETURN_NOT_REACHED.
	* emacs.c (Frun_emacs_from_temacs): Mark as noreturn.
	* emacs.c (Fkill_emacs): Ditto.  Use RETURN_NOT_REACHED.
	* eval.c (unwind_to_catch): Declare as noreturn.
	* eval.c (throw_or_bomb_out): Ditto.  Remove comments about
	warnings that will now not be generated.
	* eval.c (Fthrow): Mark as noreturn.  Use RETURN_NOT_REACHED.
	* eval.c (Fsignal): Use RETURN_NOT_REACHED.
	* eval.c (flagged_a_squirmer): Mark as noreturn.  Use
	RETURN_NOT_REACHED.
	* fns.c (base64_conversion_error): Declare as noreturn.
	* frame-gtk.c (gtk_cant_notify_wm_error): Ditto.
	* frame-x.c (x_cant_notify_wm_error): Ditto.
	* gif_io.c (GifError): Mark as noreturn.
	* gif_io.c (GifInternError): Ditto.
	* gifrlib.h (GifInternError): Declare as noreturn.
	* gifrlib.h (GifError): Ditto.
	* lisp.h (EXFUN_NORETURN): New macro.
	* lisp.h (DEFUN_NORETURN): New macro.
	* lisp.h (Fkill_emacs): Declare as noreturn.
	* lisp.h (Fthrow): Ditto.
	* lread.c (read_syntax_error): Ditto.
	* minibuf.c (Fread_minibuffer_internal): Mark as noreturn.  Don't
	bother calling specpdl_depth and unbind_to_1 since
	call_command_loop never returns.
	* objects.c (finalose): Mark as noreturn.
	* objects.h (finalose): Declare as noreturn.
	* process-unix.c (child_setup): Ditto.
	* search.c (matcher_overflow): Ditto.
	* search.c (signal_failure): Ditto.  Make the return type void and
	remove the return statement.
	* search.c (search_command): Change the use of signal_failure to
	match, using RETURN_NOT_REACHED.

2004-08-18  Felix H. Gatzemeier  <f.g@tzemeier.info>

	* doprnt.c (emacs_doprnt_1): Use sprintf to format error messages
	from the formatting function.
	* eval.c (syntax_error): Emphasize that `reason' is not processed
	as a format string.

2004-09-11  Malcolm Purvis  <malcolmp@xemacs.org>

	* config.h.in: Added entries for sys/resource.h, sys/vlimit.h,
	getrlimit() and vlimit().
	* mem-limits.h: Use configure to check for the presence of
	OS-specific functions.  General cleanup.

2004-09-10  Jerry James  <james@xemacs.org>

	* intl-encap-win32.c (qxeDocumentProperties): Conditionalize
	Cygwin bug workaround on w32api header version.

2004-08-18  Felix H. Gatzemeier  <f.g@tzemeier.info>

	* alloc.c (malloced_storage_size): Renamed log to log2, twice,
	to fix a shadow warning in gcc 3.3.4.

2004-09-10  Malcolm Purvis  <malcolmp@xemacs.org>

	* Makefile.in.in: Enable support for parallel builds.

2004-08-26  Jerry James  <james@xemacs.org>

	* device-x.c (x_init_device): Remove unused variable device.
	* device-x.c (x_delete_device): Ditto.

2004-08-26  Jerry James  <james@xemacs.org>

	* eval.c (Ffuncall): Remove unused variable orig_fun.

2004-08-26  Jerry James  <james@xemacs.org>

	* event-Xt.c (emacs_Xt_unselect_console): Remove unused variable
	console.

2004-08-26  Jerry James  <james@xemacs.org>

	* event-stream.c (munge_keymap_translate): Remove unused variable n.

2004-08-26  Jerry James  <james@xemacs.org>

	* glyphs-eimage.c (tiff_memory_write): Use RETURN_NOT_REACHED.

2004-08-26  Jerry James  <james@xemacs.org>

	* gutter.c (output_gutter): Removed unused variable frame.

2004-08-25  Jerry James  <james@xemacs.org>

	* redisplay-x.c (x_output_string): Remove unused variable device.

2004-08-12  Jerry James  <james@xemacs.org>

	* window.c (margin_width_internal): Remove unused variable b.
	* toolbar-common.c (common_output_toolbar_button): Remove unused
	variable frame.

2004-08-10  Jerry James  <james@xemacs.org>

	* emacs.c (really_abort): make its return type DOESNT_RETURN.
	* lisp.h: declare really_abort with DECLARE_DOESNT_RETURN.

2004-08-04  Jerry James  <james@xemacs.org>

	* regex.c: Fix the previous patch by moving to the right place.

2004-08-03  Jerry James  <james@xemacs.org>

	* regex.c: Move #define gettext after #include "lisp.h" to avoid
	breaking the C++ build on Fedora systems.

2004-07-27  Malcolm Purvis  <malcolmp@xemacs.org>

	* frame-gtk.c (gtk_make_frame_visible):
	* frame-gtk.c (gtk_make_frame_invisible): Use map/unmap instead of
	show/hide.  This is what X uses and is prevents previously hidden
	widgets from suddenly reappearing.
	* gtk-xemacs.c (gtk_xemacs_paint):
	* gtk-xemacs.c (gtk_xemacs_draw):
	* gtk-xemacs.c (gtk_xemacs_expose): Only operate if the widget is
	drawable.
	* scrollbar-gtk.c (gtk_update_scrollbar_instance_status): Force
	size and location changes so that they can be seen before the next
	idle event.  Without this rapid changes to scrollbar properties
	are not seen.

2004-07-07  Malcolm Purvis  <malcolmp@xemacs.org>

	* console-gtk-impl.h:
	* console-gtk-impl.h (struct gtk_frame):
	* console-gtk-impl.h (FRAME_GTK_WIDGET_INSTANCE_HASH_TABLE):
	  Add hash tables track tab_control callback data.
	  Added #defines for GTK object data names.
	* console-gtk.h: Declaration of gtk_widget_to_frame().
	* frame-gtk.c (gtk_widget_to_frame): New.
	* frame-gtk.c (gtk_create_widgets):
	* frame-gtk.c (allocate_gtk_frame_struct):
	* frame-gtk.c (gtk_mark_frame):
	Manage frame callbakc hash tables.
	* glyphs-gtk.c (gtk_map_subwindow): Fix size and moving bugs.
	* glyphs-gtk.c (gtk_redisplay_widget): Use correct size for widgets.
	* glyphs-gtk.c (gtk_widget_instantiate_1): Force reconsideration
	of widget size.
	* glyphs-gtk.c (gtk_widget_query_geometry): New
	* glyphs-gtk.c (gtk_register_gui_item): New
	* glyphs-gtk.c (gtk_add_tab_item): New
	* glyphs-gtk.c (gtk_tab_control_callback): New
	* glyphs-gtk.c (gtk_tab_control_instantiate): New
	* glyphs-gtk.c (gtk_tab_control_redisplay): Set notebook page.
	Use correct list when loading item.
	* glyphs-gtk.c (image_instantiator_format_create_glyphs_gtk):
	Register new methods.
	* gtk-xemacs.c (gtk_xemacs_size_allocate): Use XEmacs size, not
	default size, for widgets.
	* gui-gtk.c: Improved comment.
	* gui-x.c:  Improved comment.
	* menubar-gtk.c (__generic_button_callback): Use
	gtk_widget_to_frame instead of __get_channel.
	* scrollbar-gtk.c:
	* ui-gtk.c: Use symbolic names for GTK object data.

2004-07-06  Lutz Euler  <lutz.euler@freenet.de>

	* syntax.c (setup_syntax_cache): Fix behavior for buffers
	containing multibyte chars.
	Fixes "Fatal error: assertion failed, file src/buffer.h, line 617,
	(x) >= ((Charbpos) 1) && x <= ((buf)->text->bufz + 0)"

2004-06-29  Jerry James  <james@xemacs.org>

	* specifier.c (check_valid_inst_list): Change LIST_LOOP to
	EXTERNAL_LIST_LOOP_2.
	* specifier.c (check_valid_spec_list): Ditto.

2004-06-16  Malcolm Purvis  <malcolmp@xemacs.org>

	* malloc.c (morecore): siz is a long because in some architectures
	(eg ia-64) an int cannot hold the address range.  Additional patch
	from the SuSe distribution.

2004-06-15  Malcolm Purvis  <malcolmp@xemacs.org>

	* emacs.c:
	* malloc.c: lim_data is a long because in some architectures
	(eg ia-64) an int cannot hold the address range.
	* mem-limits.h: lim-data is a long.  Linux uses getrlimit() instead
	of ulimit() because ulimit() always returns -1.
	* file-coding.h (struct Lisp_Coding_System): Moved a field to the
	end of the structure to work around alignment problems on the ia-64.
	* file-coding.c (struct convert_eol_coding_system): Added dummy
	field to work around alignment problems on the ia-64.

2004-06-08  Didier Verna  <didier@xemacs.org>

	* config.h.in (EXTERN_C_BLOCK_BEGIN): Remove.
	(EXTERN_C_BLOCK_END): Ditto.
	* nas.c: Use BEGIN_C_DECLS and END_C_DECLS instead.

2004-06-07  Adrian Aichner  <adrian@xemacs.org>

	* device-x.c (x_IO_error_handler): Phrase duplication typo fixes
	for typos found by
	xemacs-builds/adrian/typology/phrase-duplication-typo.pl.

2004-06-06  Ilya N. Golubev  <gin@mo.msk.ru>

	* extw-Xt.c (_XT_WAIT_FOR_SOMETHING): Fix: complete macro
	renaming: #define.

2004-06-03  Didier Verna  <didier@xemacs.org>

	* config.h.in (EXTERN_C_BLOCK_BEGIN): New macro.
	(EXTERN_C_BLOCK_END): Ditto.
	* nas.c: Use them around audio headers.
	* extw-Xt.c: Fix EXTERN_C usage (see 2004-06-02 below).

2004-06-02  Didier Verna  <didier@xemacs.org>

	C++ related fixes.

	* ExternalClient-Xlib.c (window_has_focus_p): Fix nchild parameter
	type.
	* ExternalClient.c (ComputeWindowAttributes): Fix old K&R function
	prototype.
	* ExternalClient.c (Destroy): Ditto.
	* ExternalClient.c (QueryGeometry): Ditto.
	* ExternalShell.c (EventHandler): Ditto.
	* ExternalShell.c (ExternalShellDestroy): Ditto.
	* ExternalShell.c (ChangeManaged): Ditto.
	* ExternalShell.c (ExternalShellRootGeometryManager): Ditto.
	* extw-Xt.c: Wrap `fatal' and `_XtWaitForSomething' function
	prototypes in EXTERN_C.
	* extw-Xt.c (_XT_WAIT_FOR_SOMETHING): Rename macro (previously
	_XtWaitForSomething).
	* extw-Xt.c (extw_wait_for_response): Use it.
	* nas.c (EXTERN_C): Wrap audio headers inclusion in EXTERN_C.

2004-05-21  Jerry James  <james@xemacs.org>

	* floatfns.c (Ffloat): Add missing return keyword.
	* number.h: Declare Qbignump, Qratiop, and Qbigfloatp in every case.
	* number.c: Ditto.
	* number.c (syms_of_number): Ditto.  Declare
	Fbigfloat_get_precision and Fbigfloat_set_precision.
	* number.c (Fbigfloat_get_precision): New function.
	* number.c (Fbigfloat_set_precision): New function.
	* number.c (vars_of_number): Clarify that default-float-precision
	of 0 means to create normal floats.  Change bigfloat-max-prec to
	bigfloat-maximum-precision.

2004-05-15  Malcolm Purvis  <malcolmp@xemacs.org>

	* glyphs-gtk.c (gtk_xpm_instantiate): Rewrite the XPM data to
	replace symbolic color entries with the real colors specified in
	xpm-color-symbols, before passing the XPM to gtk.
	* glyphs-gtk.h: Use the generic pixmap_image_instance.mask for masks,
	instead of a GTK specific field, so that it is used in by generic
	code.

2004-05-15  Malcolm Purvis  <malcolmp@xemacs.org>

	* event-gtk.c:
	* event-gtk.c (gtk_event_to_emacs_event):
	* menubar-gtk.c:
	* menubar-gtk.c (gtk_xemacs_menubar_class_init):
	* menubar-gtk.c (gtk_xemacs_menubar_size_request):
	* menubar-gtk.c (gtk_xemacs_accel_label_get_type):
	* menubar-gtk.c (gtk_xemacs_set_accel_keys):
	* menubar-gtk.c (__activate_menu):
	* menubar-gtk.c (convert_underscores):
	* menubar-gtk.c (remove_underscores):
	* menubar-gtk.c (menu_convert):
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	* menubar-gtk.c (menu_descriptor_to_widget):
	* menubar-gtk.c (menu_can_reuse_widget):
	* menubar-gtk.c (menu_create_menubar):
	* menubar-gtk.c (gtk_popup_menu):
	* menubar-gtk.c (Fgtk_build_xemacs_menu):

	Added support for Gtk menu bar and menu item mnemonics.

2004-05-10  Jerry James  <james@xemacs.org>

	* config.h.in: Add HAVE_LTDL.
	* emodules.c: Include LTDL headers, if needed.
	* emodules.c (vars_of_module): Add LTDL initialization code.
	* sysdll.c: Remove unused dll_init functions.  Add LTDL support.
	* sysdll.h: Remove dll_init declaration and adjust spacing.

2004-05-05  Chuck Hines <chuck.hines@baesystems.com>

	* dgif_lib.c (DGifSlurp): Changed do-while to while to stop
	coredump from deref of NULL ptr (ExtData)

2004-05-05  Jerry James  <james@xemacs.org>

	* number.c: Use DEFINE_BASIC_LRECORD_IMPLEMENTATION instead of
	DEFINE_LRECORD_IMPLEMENTATION for bignum, ratio, and bigfloat.
	* number.c (bignum_finalize): Remove; we already do this with an
	ADDITIONAL_FREE macro in alloc.c.
	* number.c (ratio_finalize): Ditto.
	* number.c (bigfloat_finalize): Ditto.
	* number.c (vars_of_number): Put all initialization of
	Vbigfloat_max_prec here, but leave some commented until we can
	dump bignums.
	* number.c (init_number): Remove Vbigfloat_max_prec
	initialization.

2004-05-03  Jerry James  <james@xemacs.org>

	* floatfns.c (Fexpt): Don't shadow the global symbol exp.
	* number.c: Remove unused testing function string_to_bignum and
	extraneous semicolon; thanks to Vin.
	* number.h: Add make_floating prototype.

2004-04-20  Malcolm Purvis  <malcolmpurvis@optushome.com.au>

	* console-gtk-impl.h: Include X11.h.
	* console-gtk-impl.h (struct gtk_device): Use X types for keysym data.
	* data.c (Fstring_to_number): Cast Ibtye to char* for atoX arg.
	* device-gtk.c (gtk_init_device): Convert gtkrc filename to extern
	encoding before use by GTK.
	* device-gtk.c (Fgtk_grab_pointer): Cast bitmask to expected type.
	* emacs-marshals.c: INT return type is gint, not guint.
	* event-gtk.c: Add args to gtk_keysym_to_emacs_keysym() prototype.
	* event-gtk.c (gtk_event_to_emacs_event): Cast button posn from
	double to int.
	* event-gtk.c (gtk_reset_key_mapping): Avoid casts to void* for
	keysym_map.
	* frame-gtk.c (gtk_set_initial_frame_size): Avoid '|' of bitfield enum.
	* frame-gtk.c (gtk_initialize_frame_size): Cast to right type.
	* frame-gtk.c (gtk_get_frame_parent): Cast to right type.
	* frame-gtk.c (gtk_set_frame_size): Avoid '|' of bitfield enum.
	* gccache-gtk.c: mask type is unsigned long, not enum.
	* gccache-gtk.c (gc_cache_lookup): mask type is unsigned long, not enum.
	* gccache-gtk.h (gc_cache_lookup): mask type is unsigned long, not enum
	* glade.c (Fglade_xml_signal_connect): Cast Ibtye to char*.
	* glyphs-gtk.c: Remove extra definition of Qxface.
	* glyphs-gtk.c (gtk_print_image_instance):  #ifdef, not #if, HAVE_SUBWINDOWS.
	* glyphs-gtk.c (gtk_finalize_image_instance): cast to right type.
	* glyphs-gtk.c (gtk_image_instance_equal): #ifdef, not #if, HAVE_SUBWINDOWS.
	* glyphs-gtk.c (gtk_image_instance_hash): #ifdef, not #if, HAVE_SUBWINDOWS.
	* glyphs-gtk.c (xbm_instantiate_1): Use Extbyte*, not char*.
	* glyphs-gtk.c (struct color_symbol): Use Ibyte, not char*.
	* glyphs-gtk.c (extract_xpm_color_names): Pass correct data to free_cons().
	* glyphs-gtk.c (gtk_xpm_instantiate): width, height are gint, not
	unsigned.  Use proper internal strcasecmp function.
	* glyphs-gtk.c (resource_name_to_resource): Expect
	image_instance_type, not int.
	* glyphs-gtk.c (resource_symbol_to_type): Return
	image_instance_type, not int.
	* glyphs-gtk.c (gtk_resource_instantiate): Use
	image_instance_type, not int.
	* glyphs-gtk.c (cursor_name_to_index): Return GdkCursorType, not
	gint.
	* glyphs-gtk.c (cursor_font_instantiate): Use  GdkCursorType, not
	gint.
	* glyphs-gtk.c (gtk_redisplay_widget): Commented out unused var.
	* glyphs-gtk.c (BUILD_GLYPH_INST): Use ExtByte, not char*
	* glyphs-gtk.c (gtk_colorize_image_instance): Cast to enum
	bitfield.
	* glyphs.h: typedef image_instance_type.
	* gtk-glue.c (xemacs_gtklist_to_list): Cast first arg of
	g_list_foreach() to right type.
	* gtk-glue.c (xemacs_list_to_array): Cast to cghar*.
	* gtk-glue.c (gdk_event_to_emacs_event): Cast button posn from
	double to int.
	* gtk-xemacs.c (gtk_xemacs_new): Cast constructor return to right type.
	* gtk-xemacs.c (gtk_xemacs_draw): Cast data to right type.
	* gui-gtk.c: Removed double definition of Qmenu_no_selection_hook.
	* menubar-gtk.c (gtk_xemacs_menubar_new): Cast constructor return to right type.
	* menubar-gtk.c (menu_name_to_accelerator): Remove unnecessary
	cast to unsigned char.
	* menubar-gtk.c (remove_underscores): Use Ibyte, char char*
	* menubar-gtk.c (menu_descriptor_to_widget_1): ditto
	* menubar-gtk.c (menu_can_reuse_widget): ditto
	* objects-gtk.c (gtk_initialize_font_instance): Cast to right type.
	* objects-gtk.c (gtk_find_charset_font): Use Ibyte, not char*.
	* objects-gtk.c (__get_gtk_font_truename): ditto.
	* redisplay-gtk.c (gtk_get_gc): Cast mask to right type.
	* redisplay-gtk.c (gtk_output_string):Font attibs are int, not
	unsigned.
	* scrollbar-gtk.c (scrollbar_cb): Cast to right type.
	* select-gtk.c (gtk_own_selection): Removed unused var selection_time.
	* sysdll.c (search_linked_libs): Count is unsigned.
	* sysdll.c (dll_function): Cast function pointer to void*.
	* ui-byhand.c (generic_toolbar_insert_item): Cast Ibyte to char*.
	* ui-gtk.c: Macro to hide manipulation of fundamental types.
	* ui-gtk.c (initialize_dll_cache): Type problems with literal
	strings.
	* ui-gtk.c (Fdll_load): Use Ibyte form of strdup.
	* ui-gtk.c (__allocate_object_storage): Cast during fundamental type test.
	* ui-gtk.c (type_to_marshaller_type): Cast during fundamental type test.
	* ui-gtk.c (__dll_mapper): Use CIbyte, not char*.
	* ui-gtk.c (Fgtk_import_function_internal): Cast during fundamental type test.
	* ui-gtk.c (Fgtk_call_function): Cast during fundamental type test.
	* ui-gtk.c (Fgtk_describe_type): Cast during fundamental type test.
	* ui-gtk.c (gtk_type_to_lisp): Cast during fundamental type test.
	* ui-gtk.c (lisp_to_gtk_type): Cast during fundamental type test.
	* ui-gtk.c (lisp_to_gtk_ret_type): Cast during fundamental type test.

2004-04-30  Jerry James  <james@xemacs.org>

	* number.c (vars_of_number): Fix comment.  Initialize
	bigfloat-max-prec when it is possible to do so safely.
	* number.c (init_number): If bigfloat-max-prec is a bignum, set it
	only when initialized.

2004-04-19  Jerry James  <james@xemacs.org>

	* data.c (sign_extend_lisp_int): Use INT_VALBITS instead of
	VALBITS to compute the location of the sign bit.
	* event-stream.c (Fcurrent_event_timestamp): Replace incorrect use
	of VALBITS with EMACS_INT_MAX.
	* events.c (Fevent_timestamp): Ditto.
	* events.c (TIMESTAMP_HALFSPACE): Change VALBITS to INT_VALBITS to
	compute the halfway point to timestamp wraparound.
	* floatfns.c (float_to_int): Compare against EMACS_INT_MAX and
	EMACS_INT_MIN instead of using VALBITS.
	* floatfns.c (Flogb): Use EMACS_INT_MIN instead of building an
	incorrect number with VALBITS.
	* fns.c (Frandom): Use INT_VALBITS instead of VALBITS to compute
	the denominator.
	* sysdep.c (get_random): Use INT_VALBITS instead of VALBITS to
	build random numbers.

2004-04-18  Jerry James  <james@xemacs.org>

	* dump-data.c (dumped_data_get): Change return type to char *.
	* dump-data.h (dumped_data_get): Ditto.

2004-04-15  Jerry James  <james@xemacs.org>

	* signal.c (check_what_happened): Remove check for proper
	redisplay wrapping.
	* signal.c (check_quit): Put the check here instead.

2004-04-18  Stephen J. Turnbull  <stephen@xemacs.org>

	* emacs.c (main_1): dumped_data_max_size and dumped_data_align_offset
	return size_t, so need %u format conversion.

2004-04-18  Stephen J. Turnbull  <stephen@xemacs.org>

	* Makefile.in.in ($(LISP)/finder-inf.el): Force removal.

2004-02-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* console.c (function_key_map): Reference `key-binding'.

	* keymap.c (Vkey_translation_map): Improve docstring.

2004-04-18  Olivier Galibert  <galibert@pobox.com>

	* emacs.c (main_1): Fix stupid logic error in -si handling.

2004-04-15  Jerry James  <james@xemacs.org>

	* number.c (Foddp): Lisp name should be oddp, not odd.  Thanks to
	Olivier Galibert.

2003-12-07  Olivier Galibert  <galibert@pobox.com>

	* Makefile.in.in: Add in-executable dump file support.

	* dump-data.h (dumped_data_get): Added.

	* dump-data.c: Added.

	* emacs.c (main_1): Add support for -si.

	* dumper.c (pdump_ram_try): Added.  Tries getting the dump file
	from within the executable itself.
	(pdump_load): Call pdump_ram_try.

2004-04-15  Jerry James  <james@xemacs.org>

	* data.c (Fstring_to_number): Skip leading '-' when finding the
	end of a number.

2004-04-14  Jerry James  <james@xemacs.org>

	* data.c (Fstring_to_number): Work around limitations of GMP
	string to number converting functions.
	* lread.c (read_atom): Comment fix: the behavior is not random.
	* number.c (string_to_bignum): Ditto.

2004-04-13  Jerry James  <james@xemacs.org>

	* data.c (Fstring_to_number): Skip leading + sign to avoid
	triggering random GMP behavior.
	* lread.c (read_atom): Ditto.
	* lread.c (isratio_string): Recognize ratio with leading + sign.
	* number.c (string_to_bignum): Skip leading + sign.

2004-01-30  Glynn Clements  <glynn.clements@virgin.net>

	* device-x.c (x_error_handler): Don't call stderr_out

2004-04-08  Jerry James  <james@xemacs.org>

	* data.c: Use #ifndef for functions unused with new number types.
	* data.c (digit_to_number): Unused when HAVE_BIGNUM.
	* number.c: Remove multiply defined symbols Qintegerp & Qnumberp.
	* number.c (syms_of_number): DEFSUBR(Ffloatingp) was omitted.
	* print.c (print_internal): g++ thinks that specdepth might be
	used undefined.  It isn't, but the compiler can't tell.

2004-04-07  Jerry James  <james@xemacs.org>

	* number.c (Fevenp): Change the C boolean into Qnil/Qt.  Thanks to
	Robert Royar, Stephen Turnbull, and Hrvoje Niksic.
	* number.c (Foddp): Ditto.

2004-04-06  Jerry James  <james@xemacs.org>

	* bytecode.c (bytecode_arithcompare): Provide a default case to
	silence ICC.
	* bytecode.c (bytecode_arithop): Ditto.
	* data.c (Fstring_to_number): Use Ibyte instead of char.
	* data.c (Fmax): Cast from Ibyte to char as needed.
	* data.c (Flogand): REALLY commit the previous patch to data.c.
	* doprnt.c (emacs_doprnt_1): Use Ibyte instead of char.
	* floatfns.c (Ffloor): Provide a default case to silence ICC.
	* lread.c (parse_integer): Cast from Ibyte to char.
	* number-gmp.c: Get the qxe_getpid prototype.
	* number.c (string_to_bignum): Cast from Ibyte to char.
	* number.c (get_number_type): ICC does not know that abort does
	not return.
	* number.c (internal_coerce_number): Ditto.
	* number.h: Declare get_number_type.

2004-04-06  Jerry James  <james@xemacs.org>

	* number-mp.c (bignum_set_string): Read negative numbers correctly.

2004-04-06  Jerry James  <james@xemacs.org>

	* data.c (Flogand): Fix for --use-union-type.
	* data.c (Flogior): Ditto.

2004-04-06  Jerry James  <james@xemacs.org>

	* number-mp.c (bignum_to_double): Original algorithm was wrong.

2004-04-06  Stephen J. Turnbull  <stephen@xemacs.org>

	* lisp.h (Other numeric types): Band-aid: #define make_integer.

2004-04-05  Jerry James  <james@xemacs.org>

	* Makefile.in.in (number_objs): New.
	* Makefile.in.in (objs): Use it.
	* alloc.c: Make comment more precise.
	* alloc.c (make_bignum): New function.
	* alloc.c (make_bignum_bg): New function.
	* alloc.c (make_ratio): New function.
	* alloc.c (make_ratio_bg): New function.
	* alloc.c (make_ratio_rt): New function.
	* alloc.c (make_bigfloat): New function.
	* alloc.c (make_bigfloat_bf): New function.
	* alloc.c (sweep_bignums): New function.
	* alloc.c (sweep_ratios): New function.
	* alloc.c (sweep_bigfloats): New function.
	* alloc.c (gc_sweep): Use the new sweep functions.
	* alloc.c (Fgarbage_collect): Report collected number objects.
	* alloc.c (common_init_alloc_early): Initialize number allocators.
	* bytecode.c (bytecode_negate): Negate more number types.
	* bytecode.c (bytecode_arithcompare): Compare more number types.
	* bytecode.c (bytecode_arithop): Operate on more number types.
	* bytecode.c (execute_optimized_program): Several changes in
	support of the new number types.
	* config.h.in: Add SIZEOF_DOUBLE, DOUBLE_BITS, WITH_NUMBER_TYPES,
	WITH_GMP, WITH_MP, MP_PREFIX, and HAVE_MP_MOVE.
	* data.c: Add symbol Qnonnegativep.
	* data.c (Ffixnump): New function.
	* data.c (Fnatnump): Work with bignums alos.
	* data.c (Fnonnegativep): New function.
	* data.c (Fnumberp): Return t for any number type.
	* data.c (ARITHCOMPARE_MANY): Add cases for the new number types.
	* data.c (Feqlsign): Work with the new number types.
	* data.c (Flss): Ditto.
	* data.c (Fgtr): Ditto.
	* data.c (Fleq): Ditto.
	* data.c (Fgeq): Ditto.
	* data.c (Fneq): Ditto.
	* data.c (Fzerop): Ditto.
	* data.c (Fnumber_to_string): Ditto.
	* data.c (Fstring_to_number): Ditto.
	* data.c (Fplus): Ditto.
	* data.c (Fminus): Ditto.
	* data.c (Ftimes): Ditto.
	* data.c (Fdiv): New function to produce ratios.
	* data.c (Fquo): Work with the new number types.
	* data.c (Fmax): Ditto.
	* data.c (Fmin): Ditto.
	* data.c (Flogand): Ditto.
	* data.c (Flogior): Ditto.
	* data.c (Flogxor): Ditto.
	* data.c (Flognot): Ditto.
	* data.c (Frem): Ditto.
	* data.c (Fmod): Ditto.
	* data.c (Fash): Ditto.
	* data.c (Flsh): Ditto.
	* data.c (Fadd1): Ditto.
	* data.c (Fsub1): Ditto.
	* data.c (syms_of_data): Declare new symbols and Lisp functions.
	* depend: Regenerate.
	* doprnt.c: Add converters for the new number types.
	* doprnt.c (union printf_arg): Add new obj field.
	* doprnt.c (get_doprnt_args): Use the new converters.
	* doprnt.c (emacs_doprnt_1): Convert and print the new number types.
	* emacs.c (main_1): Call syms_of_, vars_of_, and init_number.
	* floatfns.c (float_to_int): Convert to bignums if necessary.
	* floatfns.c (extract_float): Extract the new number types.
	* floatfns.c (Fexpt): Work with bignums.
	* floatfns.c (Fsqrt): Ditto.
	* floatfns.c (Fabs): Work with the new number types.
	* floatfns.c (Ffloat): Ditto.
	* floatfns.c (Fceiling): Ditto.
	* floatfns.c (Ffloor): Ditto.
	* floatfns.c (Fround): Ditto.
	* floatfns.c (Ftruncate): Ditto.
	* fns.c (Frandom): Update docstring and accept bignum limits.
	* fns.c (internal_equalp): Work with the new number types.
	* general-slots.h: Add new type name symbols.
	* lisp.h: Include number.h.  Add isratio_string prototype.
	Declare Qnonnegativep and Qnumberp.
	* lread.c (read_atom): Read ratios.
	* lread.c (parse_integer): Read bignums.
	* lread.c (isratio_string): New functions.
	* lrecord.h (lrecord_type): Add new number type values.
	* symsinit.h: Declare syms_of_, vars_of_, and init_number.
	* sysdep.c (seed_random): Set the bignum random seed.

2004-03-30  Zajcev Evgeny  <zevlg@yandex.ru>

	* window.c: Declare `allow_deletion_of_last_visible_frame' extern.
	* window.c (window_loop): [fix] Take into account
	`allow-deletion-of-last-visible-frame' variable.
	* window.c (replace-buffer-in-windows): Ditto.

2004-03-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.17 "chayote" is released.

2004-03-20  Adrian Aichner  <adrian@xemacs.org>

	* eval.c: Typo fixes.

2004-03-16  Jerry James  <james@xemacs.org>

	* alloc.c: Make gc_currently_forbidden readable in other files.
	* lisp.h: Add a declaration for gc_currently_forbidden.
	* print.c: Add a debug_bindings struct to bind without consing.
	* print.c (debug_prin1_bindings): New variable.
	* print.c (output_string): Avoid calling begin_gc_forbidden, which
	conses, if it is already forbidden.
	* print.c (print_internal): Do not bump print_depth, which
	involves consing, when inhibit_non_essential_printing_operations
	is set, in which case we set print_depth to zero anyway.
	* print.c (alternate_do_size): New variable.
	* print.c (alternate_do_string): Dynamically allocated to avoid a
	buffer overflow bug.
	* print.c (write_string_to_alternate_debugging_output): Make sure
	we do not overflow alternate_do_string.
	* print.c (debug_prin1_exit): New function.  Unbind variables
	bound by debug_prin1.
	* print.c (debug_prin1): Avoid using internal_bind_int, which
	conses; use debug_binding instead.  Always inhibit quit.
	* print.c (vars_of_print): Initialize debug_prin1_bindings,
	alternate_do_size, and alternate_do_string.

2004-03-15  Jerry James  <james@xemacs.org>

	* eval.c (grow_specpdl): Add some specpdl space, even when not
	debug-on-error or debug-on-signal.

2004-03-08  Lutz Euler  <lutz.euler@freenet.de>

	* lstream.c (Lstream_pseudo_close): Fix test for LSTREAM_FL_IS_OPEN.

2004-02-26  Jerry James  <james@xemacs.org>

	* console.h (device_metrics): New metrics num_screens,
	backing_store, save_under.
	* device-x.c (x_device_system_metrics): Support the new metrics.
	* device.c: Add symbols for the new metrics.
	* device.c (Fdevice_system_metric): Support the new metrics.
	* device.c (Fdevice_system_metrics): Ditto.
	* device.c (syms_of_device): Define symbols for the new metrics.

2004-02-25  Jerry James  <james@xemacs.org>

	* sysdep.h: Declare interrupt/quit-related symbols as C symbols.
	* xemacs.def.in.in: Fix placement error in previous patch.

2004-02-25  Jerry James  <james@xemacs.org>

	* general-slots.h: Make Qcritical, Qdelete, Qsearch, and Qsimple
	visible to modules (all are used by the LDAP module).
	* lisp.h: Make stuff in QUIT and QUITP visible to modules.
	* sysdep.h: Make speed_up_interrupts and slow_down_interrupts
	visible to modules (both are used by the LDAP module).
	* xemacs.def.in.in: Reflect all of the above additions to the
	module API.

2004-02-20  Stephen J. Turnbull  <stephen@xemacs.org>

	* bytecode.c (execute_optimized_program):
	Identify and mark more potential GC locations.
	Remove dead STATIC_GCPRO_STACK code and CPP constructs.
	Document GCPRO_STACK usage.

	* fns.c (Fnthcdr):
	(Fnth):
	(Felt):
	Propagate "This function can GC"s.
	(Fput):
	Propagate "This function cannot GC"s.

2004-02-17  Jerry James  <james@xemacs.org>

	* menubar-x.c (protected_menu_item_descriptor_to_widget_value_1):
	Move begin_gc_forbidden() here so it affects all callers.
	* menubar-x.c (menu_item_descriptor_to_widget_value): Call
	protected_menu_item_descriptor_to_widget_value_1 with
	call_trapping_problems.

2004-02-16  Jerry James  <james@xemacs.org>

	* gui-x.c (wv_set_evalable_slot): Check for eval within redisplay.

2004-02-14  Jerry James  <james@xemacs.org>

	* gui.c (gui_item_value): Remove in_redisplay parameter; check the
	in_display global variable instead.
	* gui.c (gui_item_active_p): Ditto.
	* gui.c (gui_item_selected_p): Ditto.
	* gui.c (gui_value_equal): Ditto.
	* gui.c (gui_item_equal_sans_selected): Ditto.
	* gui.c (gui_item_list_find_selected): Change calls to drop
	in_redisplay parameter.
	* gui.c (gui_item_included_p): Ditto.
	* gui.c (gui_item_equal): Ditto.
	* gui.h: Change prototypes accordingly.
	* dialog-msw.c (handle_question_dialog_box): Change calls to drop
	in_redisplay parameter.
	* glyphs-gtk.c (gtk_tab_control_redisplay): Ditto.
	* glyphs-msw.c (mswindows_redisplay_widget): Ditto.
	* glyphs-msw.c (mswindows_widget_instantiate): Ditto.
	* glyphs-msw.c (mswindows_button_instantiate): Ditto.
	* glyphs-msw.c (mswindows_button_redisplay): Ditto.
	* glyphs-msw.c (mswindows_tab_control_instantiate): Ditto.
	* glyphs-msw.c (mswindows_tab_control_redisplay): Ditto.
	* glyphs-widget.c (tab_control_order_only_changed): Ditto.
	* glyphs-x.c (x_tab_control_redisplay): Ditto.
	* menubar-msw.c (populate_menu_add_item): Ditto.
	* menubar.c (Fmenu_find_real_submenu): Ditto.

2004-01-28  Stephen J. Turnbull  <stephen@xemacs.org>

	* Makefile.in.in:  Use XE_CFLAGS, not CFLAGS.

2004-01-21  Jerry James  <james@xemacs.org>

	* unicode.c (struct unicode_coding_system): Make one bit fields
	unsigned.
	* unicode.c (decode_unicode_char): Ditto.
	* unicode.c (encode_unicode_char_1): Ditto.
	* unicode.c (encode_unicode_char): Ditto.
	* unicode.c (unicode_convert): Ditto.
	* unicode.c (struct utf_8_detector): Ditto.

2003-11-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* frame-x.c (x_wm_hack_wm_protocols):
	(x_frame_window_state):
	Get casts right to avoid aliasing issues.

	* glyphs.c (process_image_string_instantiator):
	(Fset_console_type_image_conversion_list):
	Change identifier to quiet compiler.

2003-11-10  Stephen J. Turnbull  <stephen@xemacs.org>

	* bytecode.c (execute_optimized_program): GCPRO_STACK main loop.

2004-01-16  Malcolm Purvis  <malcolmpurvis@optushome.com.au>

	* ui-gtk.c (__internal_callback_marshal): Marshalling data to
	return to GTK requires a different API to marshalling data to use
	as GTK parameters.
	* ui-gtk.c (lisp_to_gtk_ret_type): New.

2004-01-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* specifier.c (Fvalid_specifier_type_p): Fix docstring typo.

2003-12-29  Malcolm Purvis  <malcolmpurvis@optushome.com.au>

	* sysdll.c (dll_function): Added support for finding symbols in
	Darwin shared libraries as well in Darwin bundles.
	* sysdll.c (image_for_address): New.
	* sysdll.c (my_find_image): New.
	* sysdll.c (search_linked_libs): New.

2004-01-03  James C. McPherson  <james.mcpherson@optusnet.com.au>

	* doc.c (Fdocumentation_property): GCPROd variables cannot be
	declared register.
	* eval.c (Fprog1): Ditto.
	* eval.c (Fprog2): Ditto.
	* fns.c (Fnreverse): Ditto.
	* lread.c (readevalloop): Ditto.

2003-11-29  Jerry James  <james@xemacs.org>

	* emodules.c (emodules_load): Remove dll_error parameter.
	* sysdll.c: Ditto.
	* sysdll.h: Ditto.  Remove unused DLLEXPORT definitions.
	* ui-gtk.c (initialize_dll_cache): dll_open now takes a Lisp_Object.
	* ui-gtk.c (Fdll_load): Ditto.  Remove dll_error parameter.

2003-11-18  Jerry James  <james@xemacs.org>

	* config.h.in: Add TYPEOF.
	* emacs.c (voodoo_free_hook): Revert the previous patch and use
	TYPEOF instead.
	* emacs.c (Fkill_emacs): Ditto.
	* ralloc.c (init_ralloc): Ditto.
	* ralloc.c (r_alloc_reinit): Ditto.

2003-11-14  Jerry James  <james@xemacs.org>

	* emacs.c (voodoo_free_hook): ICC understands typeof.
	* emacs.c (Fkill_emacs): Ditto.
	* ralloc.c (init_ralloc): Ditto.
	* ralloc.c (r_alloc_reinit): Ditto.

2003-11-14  Jerry James  <james@xemacs.org>

	* config.h.in: Remove last traces of GNU DLD.

2003-11-01  Markus Kaltenbach  <makalten@informatik.uni-tuebingen.de>

	* alloc.c (garbage_collect_1):
	move kkcc_marking() call inside the while loop containing all
	the iterative calls for marking weak data structures since the
	entries on the kkcc_stack need to be processed after every run
	to mark attached objects

2003-10-16  Jerry James  <james@xemacs.org>

	* realpath.c (qxe_realpath): When a symbolic link to an absolute
	pathname is found, really start over.

2003-10-21  Stephen J. Turnbull  <stephen@xemacs.org>

	* bytecode.c (execute_optimized_program):
	Revert Mike's patch temporarily.

2003-10-11  Olivier Galibert  <galibert@pobox.com>

	* window.c (Fdelete_window): Dirty the mirror structure _before_
	marking the window deleted.

2003-10-14  Jerry James  <james@xemacs.org>

	* Makefile.in.in (shlib_objs): Remove emodules.o.
	* Makefile.in.in (objs): Add emodules.o; it always has content now.
	* emacs.c (main_1): Call vars_of_module to define module-extensions.
	* emodules.c: Always set Vmodule_load_path and Vmodule_extensions.
	* emodules.h: Vmodule_load_path is now static.

2003-10-15  Stephen J. Turnbull  <stephen@xemacs.org>

	* mule-charset.c (get_unallocated_leading_byte): #endif->#else.

2003-10-14  Jerry James  <james@xemacs.org>

	* compiler.h: Don't define __GNUC__ if using a non-GNU compiler.
	Use a consistent spacing scheme.

2003-08-14  Stephen J. Turnbull  <stephen@xemacs.org>

	* mule-charset.c (get_unallocated_leading_byte): Compiler quietus.

2003-10-13  Stephen J. Turnbull  <stephen@xemacs.org>

	* nas.c (AudioLibraryVersionMajor, AudioLibraryVersionMinor):
	Ensure they are #define'd.

2003-10-13  Stephen J. Turnbull  <stephen@xemacs.org>

	* frame-x.c (x_update_frame_external_traits): Fix XtSetArg idiom.

2003-10-14  Jerry James  <james@xemacs.org>

	* compiler.h: Check __GNUC_PATCHLEVEL__ definition.
	* depend: Regenerate.

2003-10-13  Jerry James  <james@xemacs.org>

	* dumper.h: Use {BEGIN,END}_C_DECLS instead of explicit #ifdef.
	* glyphs-eimage.c: Ditto.
	* glyphs-gtk.c: Ditto.
	* glyphs-msw.c: Ditto.
	* glyphs-x.c: Ditto.
	* gtk-xemacs.h: Ditto.
	* libinterface.h: Ditto.
	* lrecord.h: Ditto.
	* process.h: Ditto.
	* symeval.h: Ditto.
	* sysdll.h: Ditto.
	* syswindows.h: Ditto.
	* text.h: Ditto.
	* lisp.h: Ditto.  Move basic compiler defines to compiler.h.
	Remove redundant definitions.  Add MALLOC attribute to xmalloc,
	xcalloc, etc.  Change attribute uses to match new compiler.h.
	* compiler.h: New file containing basic compiler defines from lisp.h.
	* s/windowsnt.h (DECLARE_DOESNT_RETURN): Remove definitions now in
	compiler.h.

2003-10-10  Jerry James  <james@xemacs.org>

	* alloc.c (make_compiled_function): Fix C++ breakage introduced by
	2003-07-25 patch.

2003-07-25  Eric Benson  <eric_a_benson@yahoo.com>

	Delay the allocation and initialization of the args array in
	compiled_function objects from creation until first use, thus
	avoiding a bug in the portable dumper. See mail with subject
	"Symbol's value as variable is void: region" in the July 2003
	xemacs-beta archives.
	* alloc.c (make_compiled_function): initialize args, max_args,
	min_args, and args_in_array to zero.
	(Fmake_byte_code): Removed allocation and initialization of args
	array.
	* bytecode.c (optimize_compiled_function): Added allocation and
	initialization of args array.
	* eval.c (function_argcount): Added call to
	optimize_compiled_function.

2003-10-07  Jerry James  <james@xemacs.org>

	* emodules.c (vars_of_module): Make Vmodule_extensions visible to
	Lisp.  Move assignments next to the corresponding declarations.

2003-09-30  Jerry James  <james@xemacs.org>

	* Makefile.in.in (distclean): xemacs.def.in.in should not be
	removed.

2003-09-25  Jerry James  <james@xemacs.org>

	* alloc.c (xfree_1): Use this name even when not error checking.
	* device-tty.c (free_tty_device_struct): Use xfree type parameter,
	but error-checking version alters the original, not a local copy.
	* fileio.c (Ffile_name_directory): Don't xfree alloca'd memory;
	this is in an #if 0, but fix it anyway just in case.
	* lisp.h: Add a type parameter to the xfree declaration, and
	remove the alias when ERROR_CHECK_MALLOC is defined.
	Fix 2 incorrect comments pointing to structure declarations.
	* tparam.c: Remove unused free macro, and duplicate xmalloc and
	xrealloc declarations.
	* ui-gtk.c (CONVERT_RETVAL): Add type parameter to use of xfree,
	and fix some minor whitespace problems.
	* xemacs.def.in.in: Unconditionally export xfree_1

	* alloc.c:
	* alloca.c:
	* buffer.c:
	* buffer.h:
	* console-stream.c:
	* console-tty.c:
	* device-gtk.c:
	* device-msw.c:
	* device-x.c:
	* dialog-msw.c:
	* dialog-x.c:
	* dired-msw.c:
	* dired.c:
	* doc.c:
	* dumper.c:
	* dynarr.c:
	* editfns.c:
	* elhash.c:
	* emacs.c:
	* emodules.c:
	* eval.c:
	* event-Xt.c:
	* event-gtk.c:
	* event-msw.c:
	* event-stream.c:
	* extents.c:
	* file-coding.c:
	* fileio.c:
	* filelock.c:
	* frame-gtk.c:
	* frame-msw.c:
	* frame-x.c:
	* frame.c:
	* gccache-gtk.c:
	* glyphs-eimage.c:
	* glyphs-gtk.c:
	* glyphs-msw.c:
	* glyphs-x.c:
	* gui-x.c:
	* hash.c:
	* hftctl.c:
	* imgproc.c:
	* insdel.c:
	* intl-win32.c:
	* keymap.c:
	* lstream.c:
	* mule-coding.c:
	* nt.c:
	* ntplay.c:
	* objects-gtk.c:
	* objects-msw.c:
	* objects-tty.c:
	* objects-x.c:
	* process.c:
	* redisplay.c:
	* regex.c:
	* scrollbar-gtk.c:
	* scrollbar-msw.c:
	* scrollbar-x.c:
	* select-gtk.c:
	* select-msw.c:
	* select-x.c:
	* specifier.c:
	* syntax.c:
	* sysdep.c:
	* termcap.c:
	* tests.c:
	* text.c:
	* text.h:
	* toolbar-msw.c:
	* unicode.c:
	* xgccache.c:
	Add type parameter to uses of xfree.

2003-09-27  Stephen J. Turnbull  <stephen@xemacs.org>

	* search.c (trivial_regexp_p): Regexps containing "\{" are
	nontrivial.  Thanks to Manfred Bartz for reporting the bug and
	Stefan Monnier for suggesting a diagnosis.

2003-09-26  Steve Youngs  <youngs@xemacs.org>

	* XEmacs 21.5.16 "celeriac" is released.

2003-09-09  Jerry James  <james@xemacs.org>

	* redisplay.c (point_would_be_visible): Add PARTIALLY parameter to
	support new Fpos_visible_in_window_p parameter.
	* redisplay.h: Ditto.
	* scrollbar.c (scrollbar_reset_cursor): Use new
	point_would_be_visible parameter.
	* window.c (Fpos_visible_in_window_p): Add PARTALLY parameter for
	Emacs compatibility.
	(window_scroll): Use new point_would_be_visible parameter.

2003-09-21  Jerry James  <james@xemacs.org>

	* device-x.c (x_init_device): dll_open now takes a Lisp_Object.
	* emacs.c (make_arg_list_1): Remove useless call to dll_init.
	* emacs.c (main_1): Ditto.
	* emodules.c: char to CIbyte conversion.
	* emodules.c (Fload_module): Ditto.
	* emodules.c (Funload_module): Ditto.
	* emodules.c (find_make_module): Ditto, and use NULL.
	* emodules.c (emodules_load): Ditto, and pass Lisp_Objects to and
	from the sysdll routines.  Be careful about string conversions.
	* emodules.c (reinit_vars_of_module): Use NULL.
	* objects-msw.c (mswindows_find_charset_font): Fix call to
	mswindows_list_fonts broken by James LewisMoss' Sept 20 change.
	* symsinit.h: Do not mangle module initialization function names.
	* sysdll.c (MAYBE_PREPEND_UNDERSCORE): char to CIbyte conversion.
	* sysdll.c (dll_init): char to Extbyte conversion.
	* sysdll.c (dll_open): Take a Lisp_Object, possibly Qnil.
	* sysdll.c (dll_function): char to CIbyte conversion.
	* sysdll.c (dll_variable): Ditto.
	* sysdll.c (dll_error): Return a Lisp_Object, not a string.
	* sysdll.c (dll_close): Cast appropriately for C++.
	* sysdll.h: Change prototypes as per sysdll.c changes.
	* lisp.h: Make eval-related functions visible to modules.
	* xemacs.def.in.in: Ditto.

2003-09-20  Ilya N. Golubev  <gin@mo.msk.ru>

	* cmdloop.c (Fcommand_loop_1): Allow specifying elisp function for
	waiting user input while displaying message while in minibuffer.
	(Vminibuffer_echo_wait_function): New, associated variable...
	(vars_of_cmdloop): ... initialize it.

2003-09-20  James LewisMoss  <dres@lewismoss.org>

	* console-impl.h (struct console_methods): add third arg to list_fonts

	* objects.c (Flist_fonts): Add third arg to list-fonts: maxnumber

	* objects-gtk.c (gtk_list_fonts): Add third (ignored) arg for
	maxnumber.

	* objects-msw.c (mswindows_list_fonts): Add third (ignored) arg for
	maxnumber.

	* objects-tty.c (tty_list_fonts): Add third (ignored) arg for
	maxnumber.

	* objects-x.c (x_list_fonts): Add third arg to specify the maximum
	fonts recieved from the server.

2003-09-13  Martin Buchholz  <martin@xemacs.org>

	* s/sol2.h: Use OS_RELEASE=os_release_major*100+os_release_minor

2003-09-16  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* xemacs.def.in.in: Add lrecord_memory_descriptions.

2003-09-15  Jerry James  <james@xemacs.org>

	* depend: Regenerate.
	* dumper.h: Use extern "C" for C++ builds.
	* lrecord.h: Remove duplicated material from dumper.h and include
	that instead.

2003-09-15  Jerry James  <james@xemacs.org>

	* event-msw.c (debug_mswin_messages): Conditionally compile
	messages missing from the Cygwin headers.

2003-09-15  Jerry James  <james@xemacs.org>

	* event-msw.c (mswindows_wnd_proc): Use new w32api macros.
	* syswindows.h: Define w32api macros as 0 for non-Cygwin.
	* unexcw.c (CHECK_AOUT_POS): Add cast to quiet compiler.
	* unexcw.c (copy_executable_and_dump_data_section): Ditto.

2002-07-04  Jonathan Harris  <jonathan@xemacs.org>

	* intl-encap-win32.c:
	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.h:
	Remove GetLongPathNameW - API not available on Win95/NT4

2003-09-15  Jerry James  <james@xemacs.org>

	* syswindows.h: Quiet compiler warnings about struct stat.
	(W32API_VER):
	(W32API_INSTALLED_VER): New macros to compare w32api versions.
	(_SHQUERYRBINFO): Define for w32api < 2.4 only.

2003-09-11  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* alloc.c: Clean up #ifdef USE_KKCC, move stack code to better
	position. Add lrecord_memory_descriptions table.
	(KKCC_GC_STACK_FULL): Replace functions with macros.
	(KKCC_GC_STACK_EMPTY):
	(kkcc_gc_stack_push):
	(kkcc_gc_stack_pop):
	(kkcc_gc_stack_push_lisp_object):
	(mark_object): Add #ifdef to remove unused code.
	(garbage_collect_1): Remove some #ifdefs.
	* dumper.c (pdump): Dump lrecord_memory_descriptions table.
	* lrecord.h: Add lrecord_memory_descriptions.

2003-09-08  Mike Sperber  <mike@xemacs.org>

	* symbols.c (Fvariable_binding_locus): Add, as per suggestion from
	RMS at:
	http://article.gmane.org/gmane.emacs.pretest.bugs/1010

2003-09-03  Steve Youngs  <youngs@xemacs.org>

	* XEmacs 21.5.15 "celery" is released.

2003-08-30  Mike Sperber  <mike@xemacs.org>

	* bytecode.c (execute_optimized_program): Remove broken
	special-case code in Bvarset for buffer-local variables, reverting
	previous patch to bytecode.c from 2003-08-18 by Jerry James
	<james@xemacs.org>.

2003-08-28  Jerry James  <james@xemacs.org>

	* emodules.h: Add extern "C" declarations for C++ module builds.
	* lisp.h: Ditto.
	* lrecord.h: Ditto.
	* opaque.h: Ditto.
	* process.h: Ditto.
	* symeval.h: Ditto.
	* text.h: Ditto.
	* mule-canna.c: Make key_buffer char instead of unsigned char.
	* mule-canna.c (storeResults): 1st arg is char *, not unsigned
	char *.
	* mule-canna.c (Fcanna_initialize): Add casts for C++ builds.
	* mule-canna.c (Fcanna_finalize): Ditto.
	* mule-canna.c (Fcanna_touroku_string): Ditto.
	* mule-canna.c (Fcanna_store_yomi): Ditto.
	* mule-canna.c (Fcanna_parse): Ditto.
	* mule-canna.c (Fcanna_query_mode): Ditto, and change buf to
	unsigned char[] to reduce number of casts.
	* mule-canna.c (Fcanna_henkan_begin): Ditto.
	* mule-canna.c (Fcanna_henkan_next): Ditto.
	* mule-canna.c (mule_make_string): Ditto.
	* mule-wnnfns.c (Fwnn_open): Ditto.

2003-08-26  Nickolay Pakoulin  <npak@ispras.ru>

	* database.c (berkdb_get):
	(berkdb_map): Add type casts to satisfy C++ compilers.

2003-08-25  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* alloc.c (kkcc_gc_stack_init):
	(kkcc_gc_stack_free):
	(kkcc_gc_stack_realloc):
	(kkcc_gc_stack_full):
	(kkcc_gc_stack_empty):
	(kkcc_gc_stack_push):
	(kkcc_gc_stack_pop): Remove kkcc_gc_stack_count.
	(mark_object_maybe_checking_free): Push on stack instead of marking.
	(garbage_collect_1): Invoke kkcc_marking after finish_marking_*.

2003-08-21  Jerry James  <james@xemacs.org>

	* lrecord.h (DECLARE_MODULE_API_LRECORD): Also define when not
	ERROR_CHECK_TYPES.

2003-08-19  Renï¿½ Kyllingstad <listmailxemacs@kyllingstad.com>

	* alloc.c (kkcc_gc_stack_init):
	(kkcc_gc_stack_realloc): Missing casts for the return value of
	malloc and realloc.

2003-08-18  Jerry James  <james@xemacs.org>

	* Makefile.in.in (export_lib): New.
	* Makefile.in.in (xemacs-export.o): New.
	* Makefile.in.in (otherobjs): Use them.
	* emodules.c: Remove the EMODULES_DO_NOT_REDEFINE hack.
	* emodules.c (Fload_module): Document the ".dylib" extension.
	* emodules.c (emodules_doc_subr): Don't try to find the function
	associated with an autoload cookie.
	* emodules.h: Add MODULE_API markers.  Other part of
	EMODULES_DO_NOT_REDEFINE hack removal.  Define unstaticpro to
	unstaticpro_nodump for modules.
	* general-slots.h: Document and use SYMBOL_MODULE_API.
	* general.c (SYMBOL_MODULE_API): New.
	* lisp.h: Ditto.  Also define MODULE_API appropriately, and define
	SYMBOL_MODULE_API.
	* sysdll.c: Allow Cygin module building.
	* sysdll.c (dll_open): Use Unicode module names correctly.
	* sysdll.c (dll_error): Return an informative error message.
	* lisp-union.h: Add MODULE_API markers.
	* lrecord.h: Ditto.
	* mem-limits.h (get_lim_data): Ditto.
	* opaque.h: Ditto.
	* process.h: Ditto.
	* symeval.h: Ditto.
	* text.h: Ditto.

2003-08-18  Jerry James  <james@xemacs.org>

	* bytecode.c (execute_optimized_program): Setting a buffer-local
	variable with no default binding sets the default.

2003-08-18  Jerry James  <james@xemacs.org>

	* opaque.h: Remove unused (X)OPAQUE_MARKFUN definitions.

2003-08-12  Mike Sperber  <mike@xemacs.org>

	* bytecode.c (GCPRO_STACK): Added.
	(execute_optimized_program): Use GCPRO_STACK, fixing a space leak:
	Formerly, the byte-code engine would always hold on to the entire
	stack memory area, including the stuff above the top.  Now, we
	adjust the GCPRO record via GCPRO_STACK just before a GC may
	occur.

2003-07-31  Renï¿½ Kyllingstad  <listmailxemacs@kyllingstad.com>

	* event-msw.c (mswindows_enqueue_mouse_button_event):
	* event-msw.c (mswindows_wnd_proc):
	enqueue button{4,5}up events for scrollwheel event when
	mswindows_handle_mousewheel_event doesn't handle it.

2003-07-29  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>
	    Markus Kaltenbach  <makalten@informatik.uni-tuebingen.de>

	* README.kkcc: Aligned to the changes.
	* alloc.c: Implemented the kkcc_gc_stack.
	(kkcc_gc_stack_init):
	(kkcc_gc_stack_free):
	(kkcc_gc_stack_realloc):
	(kkcc_gc_stack_full):
	(kkcc_gc_stack_empty):
	(kkcc_gc_stack_push):
	(kkcc_gc_stack_pop):
	(kkcc_gc_stack_push_lisp_object):
	(mark_object_maybe_checking_free): Push objects on kkcc stack instead
	of marking.
	(mark_struct_contents): Push objects on kkcc stack instead of marking.
	(kkcc_marking): KKCC mark algorithm using the kkcc_gc_stack.
	(mark_object): Removed KKCC ifdefs.
	(garbage_collect_1): Push objects on kkcc stack instead of marking.
	* data.c: Added XD_FLAG_NO_KKCC to ephemeron_description and to
	weak_list_description.
	* data.c (finish_marking_weak_lists): Push objects on kkcc stack
	instead of marking.
	(continue_marking_ephemerons): Push objects on kkcc stack instead
	of marking.
	(finish_marking_ephemerons): Push objects on kkcc stack instead
	of marking.
	* elhash.c (finish_marking_weak_hash_tables): Push objects on kkcc
	stack instead of marking.
	* eval.c: Added XD_FLAG_NO_KKCC to subr_description.
	* lisp.h: Added prototype for kkcc_gc_stack_push_lisp_object.
	* profile.c (mark_profiling_info_maphash): Push keys on kkcc stack
	instead of marking.

2003-07-30  Jerry James  <james@xemacs.org>

	* sysdll.c: configure sets HAVE_DLD_INIT, not HAVE_INIT_DLD.

2003-07-24  Mike Sperber  <mike@xemacs.org>

	* lisp.h:
	* data.c:
	(init_marking_ephemerons):
	(continue_marking_ephemerons):
	(finish_marking_ephemerons):
	(prune_ephemerons):
	* alloc.c (garbage_collect_1): Rewrite the ephemeron marker once
	again to allow ephemerons to be used for implementing simple
	object finalization.
	* data.c (Fmake_ephemeron): Fix comments

2003-06-14  Ilya N. Golubev  <gin@mo.msk.ru>

	* .gdbinit (pobj): Fix printing of symbol names.

2003-07-02  Mike Sperber  <mike@xemacs.org>

	* toolbar.c (update_frame_toolbars_geometry): Update the frame
	size when correct information to compute it is actually available.
	Moreover, do it right via the frame method if it's available.

2003-06-30  Ilya N. Golubev  <gin@mo.msk.ru>

	* faces.c (complex_vars_of_faces): Fix missing commas in `fonts'
	initializer.

2003-06-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* data.c (eq_with_ebola_notice): Fix typo in comment.
	(Ftrue_list_p): Improve docstring.

2003-06-11  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* opaque.c: added opaque_ptr_description

2003-05-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* alloc.c (allocate_big_string_chars): New.
	(make_uninit_string): Use it.
	(resize_string): Use it.  Bump cons counter on realloc, too.

	Based on analysis and patch by Martin Buchholz <martin@xemacs.org>:
	<15409.4809.288773.686482@gargle.gargle.HOWL>.

2003-06-01  Steve Youngs  <youngs@xemacs.org>

	* XEmacs 21.5.14 "cassava" is released.

2003-05-20  Jerry James  <james@xemacs.org>

	* regex.c (re_match_2_internal): pos -> charpos to fix shadow warning.

2003-05-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* file-coding.c: DEFSYMBOL Qslightly_unlikely.
	(detection_result_number_to_symbol):
	(detection_result_symbol_to_number):
	Decode/encode corresponding result numbers.
	(detection_result_number_to_symbol):
	Use switch to get warnings about unhandled enumerators.
	(detect_coding_type): Add debug check for 0 detector categories.
	(undecided_init_coding_stream): Add debug output.

2003-05-15  Stephen J. Turnbull  <stephen@xemacs.org>

	* event-Xt.c (x_to_emacs_keysym): Fix typo in comment.

2003-05-10  Steve Youngs  <youngs@xemacs.org>

	* XEmacs 21.5.13 "cauliflower" is released.

2003-05-09  Stephen J. Turnbull  <stephen@xemacs.org>

	* search.c (search_regs): Make comment reflect reality.
	(clear_search_regs): Unconditionally clear global regs.
	(set_search_regs): Call clear_search_regs to clear unused regs.
	(looking_at_1):
	(string_match_1):
	(search_buffer):
	(simple_search):
	(boyer_moore):
	Don't call clear_search_regs directly.
	(Flooking_at):
	(Fposix_looking_at):
	(Fstring_match):
	(Fposix_string_match):
	(Fsearch_backward):
	(Fsearch_forward):
	(Fword_search_backward):
	(Fword_search_forward):
	(Fre_search_backward):
	(Fre_search_forward):
	(Fposix_search_backward):
	(Fposix_search_forward):
	Document that search/match failure preserves match data.
	(Freplace_match):
	(Fstore_match_data):
	Improve docstrings.

	* regex.c (re_match_2_internal): Init syn1, syn2 to quiet compiler.

	* regex.h (struct re_registers): Add comment.

2003-05-09  Stephen J. Turnbull  <stephen@xemacs.org>

	Various cleanups against the possibility that <sys/stat.h> does
	#define stat ... .

	* lisp.h: Remove struct stat declaration.

2003-05-06  Stephen J. Turnbull  <stephen@xemacs.org>

	* broken-sun.h: Warn about possibility of #define stat.

2000-07-22  Ilya N. Golubev  <gin@mo.msk.ru>

	* lisp.h (filemodestring): Remove

	* sysfile.h (filemodestring): Put it here

	* filemode.c (filemodestring): Note in comment where it is
	declared.

2003-05-09  Martin Buchholz  <martin@xemacs.org>

	* dumper.c (pdump_load): Pdump'ed XEmacs can't find its .dmp file.
	Scenario: Prepend ~/bin to PATH; then `mkdir ~/bin/xemacs'
	Result: "temacs can only be run in -batch mode."
	Fix: Check xemacs executable candidate for directory-ness.

2003-05-06  Martin Buchholz  <martin@xemacs.org>

	* database.c: Berkeley DB wants __STDC__ to be defined.

2003-04-05  Martin Buchholz  <martin@xemacs.org>

	* EmacsFrameP.h (EmacsFramePart):
	Kludge to allow compiling with Motif1, but linking with Motif2.

2003-05-04  Robert Pluim  <rpluim@bigfoot.com>

	* database.c: Don't use the u_int8_t etc typedefs on FreeBSD,
	  they conflict with <sys/types.h>.

2003-05-02  Andrew Begel  <abegel@CS.Berkeley.EDU>

	* lrecord.h: Added casts from int to enum lrecord_type to support
	externally defined lrecord types.

2003-05-01  Andrew Begel  <abegel@CS.Berkeley.EDU>

	* text.h (IBYTE_STRING_TO_ALLOCA): Removed a stray backslash from
	the preceding comment.

2003-05-02  Stephen J. Turnbull  <stephen@xemacs.org>

	* config.h.in (HAVE_INTPTR_T_IN_SYS_TYPES_H): New.
	lisp.h (intptr_t): Use it.

2003-04-24  Steve Youngs  <youngs@xemacs.org>

	* XEmacs 21.5.12 "carrot" is released.

2003-04-24  Matthew O. Persico  <persicom@acedsl.com>

	* unicode.c: Removed trailing commas in some enums; older
	(Solaris 2.7 cc) compiler produced volumous warnings.

	* text.c: Replaced char initialization of static Ibyte
	strcasecmp_charmap[] with octal numeric init. Apparently older
	(Solaris 2.7 cc) compiler treats quoted octals as signed,
	causing 256 signed-assigned-to-unsigned warnings.

	* lrecord.h: Removed trailing commas in some enums; older
	(Solaris 2.7 cc) compiler produced volumous warnings.

	* lisp.h: Removed trailing commas in some enums; older
	(Solaris 2.7 cc) compiler produced volumous warnings.

	* frame.c:  Removed trailing commas in some enums; older
	(Solaris 2.7 cc) compiler produced volumous warnings.

	* file-coding.h: Removed trailing commas in some enums; older
	(Solaris 2.7 cc) compiler produced volumous warnings.

2003-04-17  Stephen J. Turnbull  <stephen@xemacs.org>

	Fix stale match data after failed search bug.

	* search.c (search_buffer):
	Don't find null string if repetition count is 0.
	(string_match_1):
	(looking_at_1):
	(search_buffer):
	(simple_search):
	(boyer_moore):
	Clear all search regs as start, not unused ones on success.
	* regex.c (re_match_2_internal): Fix comment about clearing regs.

	* search.c (Freplace_match): Document error conditions in docstring.
	(These actually error now after a failed match.)

2003-04-16  Chris Palmer  <chris@nodewarrior.org>

	* sysdll.c (dll_open): Removed Objective C-ism to fix Mac build.

2003-04-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* menubar-gtk.c (gtk_xemacs_menubar_class_init):
	(gtk_xemacs_menubar_init):
	(gtk_xemacs_menubar_size_request):
	(menu_descriptor_to_widget_1):
	(menu_descriptor_to_widget):
	(popdown_menu_cb):
	(reinit_vars_of_menubar_gtk):
	* event-gtk.c (emacs_gtk_key_event_handler):
	(emacs_gtk_button_event_handler):
	(emacs_gtk_motion_event_handler):
	(reinit_vars_of_event_gtk):
	(event_name):
	Reformat function definitions correctly.

2003-04-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* symsinit.h (reinit_console_type_create_gtk):
	(reinit_vars_of_menubar_gtk):
	(reinit_vars_of_event_gtk):
	Declare.

2003-04-12  Malcolm Purvis  <malcolmpurvis@optushome.com.au>

	* event-gtk.c: Added missing declaration of
	non_fake_input_wait_mask.

2003-04-04  Daiki Ueno  <daiki@xemacs.org>

	* regex.c (re_match_2_internal): Fix charset/charset_not matching
	for extended characters.  Fixes KNOWN BUG matching ASCII character
	classes to mule characters.

2003-04-14  Steve Youngs  <youngs@xemacs.org>

	* glyphs.c:
	* glyphs.c (nothing_instantiate):
	* glyphs.c (Fmake_glyph_internal):
	* glyphs.c (Fglyphp):
	* glyphs.c (glyph_image_instance):
	* glyphs.c (glyph_image_instance_maybe):
	* glyphs.c (glyph_width):
	Work around a problem compiling with --use-union-type using
	Intel's ICC compiler.  From Martin Buchholz <martin@xemacs.org>
	See
	<http://list-archive.xemacs.org/xemacs-patches/200301/msg00132.html>

2003-04-08  Mike Sperber  <mike@xemacs.org>

	* Makefile.in.in ($(BLDSRC)/NEEDTODUMP): Depends on $(RAW_EXE).

2003-03-31  Mike Alexander  <mta@arbortext.com>

	* frame-msw.c (mswindows_set_frame_size): Call change_frame_size.

2003-03-25  Jerry James  <james@xemacs.org>

	* config.h.in: Add HAVE_DYLD to indicate Darwin/MacOSX dynamic
	linking (from Andrew Begel).
	* sysdll.c: Factor common code into MAYBE_PREPEND_UNDERSCORE.
	Try DL_LAZY and DL_NOW if RTLD_LAZY and RTLD_NOW are undefined.
	Add Andrew Begel's support for loading bundles using the
	Darwin/MacOSX native API.
	* sysdll.c (dll_function): Use MAYBE_PREPEND_UNDERSCORE.
	* sysdll.c (dll_variable): Ditto.
	* sysdll.c (dll_open): Minor whitespace fix.

2003-03-25  Andrew Begel  <abegel@cs.berkeley.edu>

	* emodules.c (vars_of_module): Add .dylib as an acceptable shared
	library file extension to support MacOS X.

2003-03-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* database.c (Fopen_database): DB_AUTO_COMMIT is invalid in
	Berkeley db 4.1 unless you have a transaction environment.

2003-03-21  Stephen J. Turnbull  <stephen@xemacs.org>

	* regex.c (re_match_2_internal): Fix matching degenerate word
	boundaries.

2003-03-09  Ben Wing  <ben@xemacs.org>

	* file-coding.c:
	* file-coding.c (look_for_coding_system_magic_cookie):
	Disable new check for the moment since it's all wrong and
	causes crashes.

2003-03-09  Ben Wing  <ben@xemacs.org>

	* file-coding.c:
	* file-coding.c (snarf_coding_system):
	* file-coding.c (look_for_coding_system_magic_cookie):
	* file-coding.c (vars_of_file_coding):
	Fix up internal magic-cookie code to also check for
	`;;;###coding system', already handled by the (redundant)
	code in files.el.

	* regex.c (re_match_2_internal):
	Fix problem with ordering of initializations and statements -- OK in
	C++, not in C.

	* search.c (fast_string_match):
	Indentation.

2003-03-06  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (build-the-mofo):
	* Makefile.in.in (.NO_PARALLEL): Removed.
	* Makefile.in.in (release): Removed.
	* Makefile.in.in (update-elc-2): Removed.
	* Makefile.in.in (link_deps):
	* Makefile.in.in (dump-id.c): New.
	* Makefile.in.in (load-shadows): Removed.
	* Makefile.in.in (.PHONY): Removed.
	* Makefile.in.in (FRC.needtodump): Removed.
	* Makefile.in.in (temacs_link_args):
	* Makefile.in.in (obj_src):
	Order sections in main build process and add comments.  Add
	additional dependencies to try and prevent later steps from
	happening when failures in earlier steps have occurred.

	* alloc.c (disksave_object_finalization):
	Don't arbitrarily clear Vconfigure_info_directory since it
	messes up separate build/source dirs.

	* console.c (get_console_variant):
	* console.c (Fvalid_console_type_p):
	* console.c (Fconsole_type):
	* console.h (console_variant):
	* device-msw.c:
	* device.c:
	Add accidentally omitted msprinter console and data descriptions.

	* print.c:
	* print.c (write_string_to_stdio_stream_1):
	* print.c (write_string_to_stdio_stream):
	* print.c (write_string_to_external_output_va):
	* print.c (stderr_out):
	* print.c (stdout_out):
	* print.c (debug_out):
	* print.c (fatal):
	* print.c (write_string_to_alternate_debugging_output):
	* print.c (debug_prin1):
	* print.c (ext_print_begin):
	* print.c (debug_print):
	* print.c (dpa):
	* print.c (debug_short_backtrace):
	* print.c (syms_of_print):
	* console-msw.c (write_string_to_mswindows_debugging_output):
	Add clear-left-side functionality to help keep stdio/stderr
	output from separate sources on separate lines.  Generalize
	the different kinds of debugging output. Add dpa().

	* profile.c:
	* profile.c (vars_of_profile):
	Add better docs on Unix/Windows differences.

	* regex.c:
	* regex.c (RE_TRANSLATE_1):
	* regex.c (REGEX_ALLOCATE_STACK):
	* regex.c (RE_MATCH_RELOCATE_MOVEABLE_DATA_POINTERS):
	* regex.c (RE_SEARCH_RELOCATE_MOVEABLE_DATA_POINTERS):
	* regex.c (re_search_2):
	* regex.c (re_match_2_internal):
	Fix problems with rel-alloc compilation caused by previous patch.

	* emacs.c (assert_failed):
	Seg fault rather than abort on Cygwin, since gdb doesn't trap
	aborts properly.

	* console-gtk-impl.h:
	* console-gtk-impl.h (struct gtk_frame):
	* console-gtk.h:
	* console-msw.h:
	* console-x-impl.h:
	* console-x-impl.h (struct x_frame):
	* console-x.h:
	* dialog-gtk.c:
	* dialog-x.c:
	* event-msw.c:
	* frame-gtk.c:
	* frame-gtk.c (allocate_gtk_frame_struct):
	* frame-gtk.c (gtk_mark_frame):
	* frame-x.c:
	* frame-x.c (allocate_x_frame_struct):
	* frame-x.c (x_mark_frame):
	* frameslots.h:
	* glyphs-gtk.c:
	* glyphs-x.c:
	* glyphs-x.c (x_redisplay_widget):
	* glyphs-x.c (x_button_redisplay):
	* glyphs-x.c (x_tab_control_redisplay):
	* gui-gtk.c:
	* gui-x.c:
	* gui-x.c (new_lwlib_id):
	* gui-x.c (struct widget_value_mapper):
	* gui-x.c (snarf_widget_value_mapper):
	* gui-x.c (snarf_widget_values_for_gcpro):
	* gui-x.c (gcpro_popup_callbacks):
	* gui-x.c (ungcpro_popup_callbacks):
	* gui-x.c (syms_of_gui_x):
	* gui-x.c (reinit_vars_of_gui_x):
	* inline.c:
	* menubar-gtk.c:
	* menubar-gtk.c (FRAME_GTK_MENUBAR_DATA):
	* menubar-gtk.c (set_frame_menubar):
	* menubar-gtk.c (gtk_update_frame_menubar_internal):
	* menubar-msw.c:
	* menubar-x.c:
	* menubar-x.c (MENUBAR_TYPE):
	* menubar-x.c (pre_activate_callback):
	* menubar-x.c (set_frame_menubar):
	* menubar-x.c (x_update_frame_menubar_internal):
	* menubar-x.c (x_free_frame_menubars):
	* menubar-x.c (command_builder_find_menu_accelerator):
	* menubar-x.c (Faccelerate_menu):
	* scrollbar-gtk.c:
	* scrollbar-x.c:
	* ui-gtk.c:
	Delete popup-data object.  Delete menubar_data field from frames,
	since its usage is frame-specific.  Delete menubar-msw.h,
	gui-x.h, gui-gtk.h.  Clean up handling of lwlib callback data
	GCPRO'ing and add missing GCPRO recomputation in widget code.

2003-03-01  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (xmalloc):
	* alloc.c (xcalloc):
	* alloc.c (xrealloc):
	* alloc.c (endif):
	* lisp.h (ALLOCA):
	* lisp.h (MALLOC_OR_ALLOCA):
	* lisp.h (DO_REALLOC):
	* ralloc.c:
	* ralloc.c (REGEX_MALLOC_CHECK):
	* ralloc.c (r_alloc):
	* ralloc.c (r_alloc_free):
	* ralloc.c (r_re_alloc):
	* regex.c:
	* regex.c (REGEX_ALLOCATE):
	* regex.c (REGEX_REALLOCATE):
	* regex.c (REGEX_ALLOCATE_STACK):
	* regex.c (TALLOC):
	* regex.c (INIT_FAIL_STACK):
	* regex.c (PUSH_FAILURE_POINT):
	* regex.c (EXTEND_BUFFER):
	* regex.c (FREE_STACK_RETURN):
	* regex.c (regex_compile):
	* regex.c (re_compile_fastmap):
	* regex.c (re_search_2):
	* regex.c (FREE_VARIABLES):
	* regex.c (re_match):
	* regex.c (re_match_2):
	* regex.c (re_match_2_internal):
	* regex.c (re_comp):
	* regex.c (regcomp):
	* regex.c (regexec):
	* regex.c (regfree):
	Use ALLOCA() in regex.c to avoid excessive stack allocation.
	Also fix subtle problem with REL_ALLOC() -- any call to malloc()
	(direct or indirect) may relocate rel-alloced data, causing
	buffer text to shift.  After any such call, regex must update
	all its pointers to such data.  Add a system, when
	ERROR_CHECK_MALLOC, whereby regex.c indicates all the places
	it is prepared to handle malloc()/realloc()/free(), and any
	calls anywhere in XEmacs outside of this will trigger an abort.

	* alloc.c (garbage_collect_1):
	* dialog-msw.c:
	* dialog-msw.c (dialog_proc):
	* eval.c:
	* eval.c (run_post_gc_hook):
	* eval.c (flagged_a_squirmer):
	* eval.c (issue_call_trapping_problems_warning):
	* eval.c (call_trapping_problems):
	* eval.c (run_hook_trapping_problems):
	* eval.c (safe_run_hook_trapping_problems):
	* eval.c (run_hook_with_args_in_buffer_trapping_problems):
	* eval.c (run_hook_with_args_trapping_problems):
	* eval.c (va_run_hook_with_args_trapping_problems):
	* eval.c (va_run_hook_with_args_in_buffer_trapping_problems):
	* eval.c (record_unwind_protect_restoring_int):
	* event-stream.c (run_pre_idle_hook):
	* event-stream.c (pre_command_hook):
	* event-stream.c (post_command_hook):
	* general-slots.h:
	* insdel.c:
	* insdel.c (signal_first_change):
	* insdel.c (signal_before_change):
	* insdel.c (signal_after_change):
	* lisp.h (POSTPONE_WARNING_ISSUE):
	* lisp.h:
	* menubar-msw.c:
	* menubar-msw.c (unsafe_handle_wm_initmenu_1):
	* menubar-x.c (pre_activate_callback):
	Change *run_hook*_trapping_problems to take a warning class, not
	a string.  Factor out code to issue warnings, add flag to
	call_trapping_problems() to postpone warning issue, and make
	*run_hook*_trapping_problems issue their own warnings tailored
	to the hook, postponed in the case of safe_run_hook_trapping_problems()
	so that the appropriate message can be issued about resetting to
	nil only when not `quit'.  Make record_unwind_protect_restoring_int()
	non-static.

	* dumper.c:
	* dumper.c (pdump_unsupported_dump_type):
	* dumper.c (pdump_register_sub):
	* dumper.c (pdump_store_new_pointer_offsets):
	* dumper.c (pdump_reloc_one):
	* dumper.c (pdump_dump_root_struct_ptrs):
	Issue notes about incremental linking problems under Windows.

	* fileio.c:
	* fileio.c (barf_or_query_if_file_exists):
	* fileio.c (Fsysnetunam):
	* fileio.c (Fencrypt_string):
	* fileio.c (Fdecrypt_string):
	* fileio.c (Fdo_auto_save):
	Mule-ize encrypt/decrypt-string code.

	* text.h (DEC_IBYTEPTR):
	* text.h (EI_ALLOC):
	* text.h (eicpy_lstr):
	* text.h (eicpy_raw_fmt):
	* text.h (eicpy_ch):
	* text.h (eicat_ch):
	* text.h (eisub_ei):
	* text.h (eisub_ch):
	* text.h (eito_external):
	* text.h (EI_CASECHANGE):
	Spacing changes.

2003-02-28  Ben Wing  <ben@xemacs.org>

	* m/acorn.h:
	* m/alliant-2800.h (UNEXEC):
	* m/alliant.h:
	* m/altos.h (TERMCAP):
	* m/amdahl.h:
	* m/arm.h:
	* m/att3b.h:
	* m/aviion.h:
	* m/clipper.h:
	* m/cnvrgnt.h:
	* m/convex.h:
	* m/cydra5.h:
	* m/delta.h:
	* m/delta88k.h:
	* m/dpx2.h:
	* m/elxsi.h:
	* m/ews4800r.h:
	* m/gould.h:
	* m/hp800.h:
	* m/hp9000s300.h:
	* m/i860.h:
	* m/ibmps2-aix.h:
	* m/ibmrs6000.h:
	* m/ibmrt-aix.h:
	* m/ibmrt.h:
	* m/intel386.h:
	* m/iris4d.h:
	* m/iris5d.h:
	* m/iris6d.h:
	* m/irist.h:
	* m/m68k.h:
	* m/masscomp.h:
	* m/mg1.h:
	* m/mips-nec.h:
	* m/mips-siemens.h:
	* m/mips.h:
	* m/nh3000.h:
	* m/nh4000.h:
	* m/ns32000.h:
	* m/plexus.h:
	* m/powerpc.h (N_BADMAG):
	* m/sequent-ptx.h:
	* m/sequent.h:
	* m/sgi-challenge.h:
	* m/stride.h:
	* m/tad68k.h:
	* m/targon31.h:
	* m/tekxd88.h:
	* m/template.h:
	* m/tower32.h:
	* m/tower32v3.h:
	* m/ustation.h:
	* m/wicat.h:
	* m/xps100.h:
	* data.c:
	* data.c (init_data_very_early):
	* doc.c (get_doc_string):
	* doc.c (Fsnarf_documentation):
	* editfns.c (init_editfns):
	* emacs.c:
	* emacs.c (main_1):
	* emacs.c (syms_of_emacs):
	* lrecord.h (DUMPEDP):
	* ntheap.c:
	* process-unix.c:
	* process-unix.c (unix_init_process):
	* sysdep.c:
	* sysdep.c (init_system_name):
	* unexec.c:
	Delete all support for bit-rotten CANNOT_DUMP.  Just use pdump.

2003-02-28  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (all):
	* Makefile.in.in (PROGNAME): Removed.
	* Makefile.in.in (DUMP_ID): Removed.
	* Makefile.in.in (DUMP_TARGET): Removed.
	* Makefile.in.in (RECURSIVE_MAKE):
	* Makefile.in.in (EXE_TARGET): Removed.
	* Makefile.in.in (SHELL): Removed.
	* Makefile.in.in (RM): Removed.
	* Makefile.in.in (lispdir): Removed.
	* Makefile.in.in (moduledir): Removed.
	* Makefile.in.in (.SUFFIXES): Removed.
	* Makefile.in.in (libsrc): Removed.
	* Makefile.in.in (etcdir): Removed.
	* Makefile.in.in (srcdir): Removed.
	* Makefile.in.in (SRC): New.
	* Makefile.in.in (lwlib_libs): Removed.
	* Makefile.in.in (lwlib_deps): Removed.
	* Makefile.in.in (LWLIB_SRCDIR):
	* Makefile.in.in (LIBI18N): Removed.
	* Makefile.in.in (X11_libs): Removed.
	* Makefile.in.in (LISP): New.
	* Makefile.in.in (ETC): New.
	* Makefile.in.in (SRCMODULES): New.
	* Makefile.in.in (LIB_SRC): New.
	* Makefile.in.in (BLDSRC): New.
	* Makefile.in.in (BLDMODULES): New.
	* Makefile.in.in (ldap_objs):
	* Makefile.in.in (postgresql_objs):
	* Makefile.in.in (win32_objs):
	* Makefile.in.in (cppflags): Removed.
	* Makefile.in.in (cflags): Removed.
	* Makefile.in.in (ldflags): Removed.
	* Makefile.in.in (.c.o): Removed.
	* Makefile.in.in (.c.i): Removed.
	* Makefile.in.in (.c.s): Removed.
	* Makefile.in.in (lwlib_lib): New.
	* Makefile.in.in (other_files):
	* Makefile.in.in (LIBES):
	* Makefile.in.in (mo_file):
	* Makefile.in.in (mo_dir): Removed.
	* Makefile.in.in (DO_TEMACS):
	* Makefile.in.in (RAW_EXE): New.
	* Makefile.in.in (dump_temacs):
	* Makefile.in.in (debug_temacs): Removed.
	* Makefile.in.in (.NO_PARALLEL):
	* Makefile.in.in (release):
	* Makefile.in.in (update-elc-2):
	* Makefile.in.in (.PHONY):
	* Makefile.in.in (update-elc): Removed.
	* Makefile.in.in (FRC.needtodump): New.
	* Makefile.in.in (NEEDTODUMP): Removed.
	* Makefile.in.in (link_deps):
	* Makefile.in.in (temacs_deps):
	* Makefile.in.in (temacs_link_args):
	* Makefile.in.in (dump-id.c):
	* Makefile.in.in (obj_src):
	* Makefile.in.in (fastdump):
	* Makefile.in.in (all-elc):
	* Makefile.in.in (TopLevelEmacsShell.o):
	* Makefile.in.in (TopLevelEmacsShell.c.rtl):
	* Makefile.in.in (TransientEmacsShell.o):
	* Makefile.in.in (TransientEmacsShell.c.rtl):
	* Makefile.in.in (ExternalClient-Xm-shared.o):
	* Makefile.in.in (ExternalClient-Xt-shared.o):
	* Makefile.in.in (ExternalClient-Xlib-shared.o):
	* Makefile.in.in (ExternalClient-Xm-nonshared.o):
	* Makefile.in.in (ExternalClient-Xt-nonshared.o):
	* Makefile.in.in (ExternalClient-Xlib-nonshared.o):
	* Makefile.in.in (extw-Xt-shared.o):
	* Makefile.in.in (extw-Xlib-shared.o):
	* Makefile.in.in (extw-Xt-nonshared.o):
	* Makefile.in.in (extw-Xlib-nonshared.o):
	* Makefile.in.in (libextcli_Xm.a):
	* Makefile.in.in (libextcli_Xt.a):
	* Makefile.in.in (libextcli_Xlib.a):
	* Makefile.in.in (extw_link_end):
	* Makefile.in.in (libextcli_Xm.so.1):
	* Makefile.in.in (libextcli_Xt.so.1):
	* Makefile.in.in (libextcli_Xlib.so.1):
	* Makefile.in.in (config.h):
	* Makefile.in.in (allocax.o):
	* Makefile.in.in (sunplay.o):
	* Makefile.in.in (xemacs_res.o):
	* Makefile.in.in (dortl):
	* Makefile.in.in (lint):
	* Makefile.in.in (check-features):
	* Makefile.in.in (rtcmacs):
	* Makefile.in.in (run-rtcmacs):
	* Makefile.in.in (debug-temacs):
	* Makefile.in.in (PURIFY_FLAGS):
	* Makefile.in.in (puremacs):
	* Makefile.in.in (quantmacs):
	* Makefile.in.in (covmacs):
	* Makefile.in.in (extraclean):
	* Makefile.in.in (relock):
	* Makefile.in.in (install):
	* Makefile.in.in (depend):
	* Makefile.in.in (FRC.unicode-encapsulate): New.
	* Makefile.in.in (unicode-encapsulate): New.
	Lots o' cleanup.  Use names like LISP, SRC instead of
	lispdir, srcdir, for consistency with xemacs.mak and the
	conventions in the rest of the file.  Eliminate use of ${...}
	in favor of $(...), to make it easier to move code between
	this file and xemacs.mak.  Fix dependency handling wrt
	NEEDTODUMP to eliminate problems some people (e.g. Vin) have
	been seeing with non-GNU makes.  Write a long section about
	the subtle but oh-so-important differences in dependency
	processing between nmake, make, and GNU make.  Add
	unicode-encapsulate target, from xemacs.mak.

	* chartab.c (fill_char_table):
	* chartab.c (put_char_table):
	* lrecord.h:
	Fix crash due to attempt to free objects across dump/undump.

2003-02-20  Mike Sperber  <mike@xemacs.org>

	* Makefile.in.in (update-elc-2): Sequentialize dependencies even
	more.

2003-02-23  Ben Wing  <ben@xemacs.org>

	* eval.c (unbind_to_hairy):
	damn those off-by-one errors.

2003-02-21  Ben Wing  <ben@xemacs.org>

	* redisplay.c:
	* redisplay.c (run_post_redisplay_actions):
	Don't get in an infinite loop running post-redisplay actions.

2003-02-20  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (garbage_collect_1):
	Make gc_currently_forbidden static.

	* config.h.in:
	* lisp.h:
	Move some stuff to lisp.h.

	* console-gtk.h:
	* console-impl.h:
	* console-impl.h (struct console_methods):
	* console-msw.h:
	* console-x.h:
	* event-Xt.c (emacs_Xt_handle_magic_event):
	* event-msw.c (emacs_mswindows_drain_queue):
	* event-msw.c (mswindows_handle_paint):
	* event-msw.c (emacs_mswindows_event_pending_p):
	* redisplay-gtk.c:
	* redisplay-gtk.c (gtk_clear_to_window_end):
	* redisplay-msw.c:
	* redisplay-msw.c (mswindows_redisplay_deadbox):
	* redisplay-msw.c (mswindows_clear_region):
	* redisplay-msw.c (mswindows_clear_frame):
	* redisplay-msw.c (console_type_create_redisplay_mswindows):
	* redisplay-output.c:
	* redisplay-output.c (redisplay_output_window):
	* redisplay-output.c (redisplay_redraw_exposed_window):
	* redisplay-output.c (redisplay_redraw_exposed_area):
	* redisplay-x.c:
	* redisplay-x.c (x_generate_shadow_pixels):
	* gtk-xemacs.c (gtk_xemacs_paint):
	* gtk-xemacs.c (gtk_xemacs_expose):
	Remove duplicated code to redraw exposed area.  Add deadbox
	method needed by the generalized redraw code.  Defer redrawing
	if already in redisplay.

	* frame-msw.c (mswindows_set_frame_size):
	* event-stream.c (event_stream_drain_queue):
	* event-stream.c (detect_input_pending):
	* event-stream.c (Finput_pending_p):
	* event-stream.c (event_stream_quit_p):
	* event-stream.c (run_pre_idle_hook):
	* event-stream.c (Fdiscard_input):
	* frame.c:
	Add comments about calling Lisp.

	* debug.c:
	* debug.c (FROB):
	* debug.c (syms_of_debug):
	* general-slots.h:
	Move generalish symbols to general-slots.h.

	* doprnt.c (get_doprnt_args):
	* doprnt.c (emacs_doprnt_1):
	reindent.

	* lisp.h (Dynarr_reset):
	* lisp.h (Dynarr_add):
	* lisp.h (Dynarr_increment):
	* lisp.h (Dynarr_pop):
	* lisp.h (Dynarr_delete_object):
	* dynarr.c:
	* dynarr.c (Dynarr_resize):
	* dynarr.c (Dynarr_insert_many):
	* dynarr.c (Dynarr_delete_many):
	* dynarr.c (Dynarr_memory_usage):
	Add debug code for locking a dynarr to catch invalid mods.
	Use in redisplay.c.

	* eval.c:
	* eval.c (throw_or_bomb_out):
	* eval.c (Fsignal):
	* eval.c (Feval):
	* eval.c (Ffuncall):
	* eval.c (set_trapping_problems_flags):
	* eval.c (call_trapping_problems):

	* file-coding.c:
	* file-coding.c (complex_vars_of_file_coding):
	Define file-name as alias for native not vice-versa.

	* frame-gtk.c:
	* frame-gtk.c (syms_of_frame_gtk):
	* frame-x.c:
	* frame-x.c (syms_of_frame_x):
	Move Qwindow_id to general-slots.

	* dialog-msw.c (handle_question_dialog_box):
	* glyphs-gtk.c (gtk_tab_control_redisplay):
	* glyphs-msw.c:
	* glyphs-msw.c (mswindows_redisplay_widget):
	* glyphs-msw.c (mswindows_widget_instantiate):
	* glyphs-msw.c (mswindows_button_instantiate):
	* glyphs-msw.c (mswindows_button_redisplay):
	* glyphs-msw.c (mswindows_tab_control_instantiate):
	* glyphs-msw.c (mswindows_tab_control_redisplay):
	* glyphs-widget.c:
	* glyphs-widget.c (widget_normalize):
	* glyphs-widget.c (tab_control_order_only_changed):
	* glyphs-widget.c (layout_query_geometry):
	* glyphs-x.c:
	* glyphs-x.c (x_widget_instantiate):
	* glyphs-x.c (x_button_instantiate):
	* glyphs-x.c (x_progress_gauge_instantiate):
	* glyphs-x.c (x_tab_control_instantiate):
	* glyphs-x.c (x_tab_control_redisplay):
	* gui.c:
	* gui.c (gui_item_value):
	* gui.c (gui_item_active_p):
	* gui.c (gui_item_selected_p):
	* gui.c (gui_item_list_find_selected):
	* gui.c (gui_item_included_p):
	* gui.c (gui_value_equal):
	* gui.c (gui_item_equal_sans_selected):
	* gui.c (gui_item_equal):
	* gui.h:
	* menubar-msw.c (populate_menu_add_item):
	* menubar.c (Fmenu_find_real_submenu):
	Ensure that various glyph functions that eval within redisplay
	protect the evals.  Same for calls to internal_equal().
	Modify various functions, e.g. gui_item_*(), to protect evals
	within redisplay, taking an in_redisplay parameter if it's
	possible for them to be called both inside and outside of
	redisplay.

	* gutter.c:
	* gutter.c (calculate_gutter_size):
	* gutter.c (redraw_exposed_gutters):
	* gutter.c (Fset_default_gutter_position):
	* gutter.c (gutter_specs_changed):
	* gutter.c (gutter_geometry_changed_in_window):
	Defer specifier-changed updating till after redisplay, if
	necessary, since we need to enter redisplay to do it.

	* gutter.c (Fredisplay_gutter_area):
	Do nothing if in redisplay.

	* lisp.h:
	Add version of alloca() for use in function calls.

	* lisp.h (XCADR):
	Add XCAD[D+]R up to 6 D's, and aliases X1ST, X2ND, etc.

	* frame.c (invalidate_vertical_divider_cache_in_frame):
	* frame.c (adjust_frame_size):
	* frame.c (store_minibuf_frame_prop):
	* frame.c (Fset_frame_properties):
	* frame.c (internal_set_frame_size):
	* frame.c (Fset_frame_height):
	* frame.c (Fset_frame_pixel_height):
	* frame.c (Fset_frame_displayable_pixel_height):
	* frame.c (Fset_frame_width):
	* frame.c (Fset_frame_pixel_width):
	* frame.c (Fset_frame_displayable_pixel_width):
	* frame.c (Fset_frame_size):
	* frame.c (Fset_frame_pixel_size):
	* frame.c (Fset_frame_displayable_pixel_size):
	* frame.c (change_frame_size_1):
	* frame.c (change_frame_size):
	* frame.h:
	* redisplay.c:
	* redisplay.c (REDISPLAY_PREEMPTION_CHECK					\):
	* redisplay.c (generate_displayable_area):
	* redisplay.c (regenerate_window):
	* redisplay.c (enter_redisplay_critical_section):
	* redisplay.c (exit_redisplay_critical_section):
	* redisplay.c (redisplay_frame):
	* redisplay.c (eval_within_redisplay):
	* redisplay.c (free_display_line):
	* redisplay.c (Fredisplay_echo_area):
	* redisplay.c (vars_of_redisplay):
	* redisplay.h:
	* signal.c (check_what_happened):
	* toolbar.c:
	* toolbar.c (Fset_default_toolbar_position):
	Redo critical-section code and move from frame.c to redisplay.c.
	Require that every place inside of redisplay catch errors itself,
	not at the edge of the critical section (thereby bypassing the
	rest of redisplay and leaving things in an inconsistent state).
	Introduce separate means of holding frame-size changes without
	entering a complete critical section.  Introduce "post-redisplay"
	methods for deferring things till after redisplay.  Abort if
	we enter redisplay reentrantly.  Disable all quit checking in
	redisplay since it's too dangerous.  Ensure that all calls to
	QUIT trigger an abort if unprotected.

	* redisplay.c:
	* scrollbar-gtk.c (gtk_update_frame_scrollbars):
	* scrollbar-x.c (x_update_frame_scrollbars):
	* scrollbar.c:
	* scrollbar.c (update_window_scrollbars):
	Create enter/exit_redisplay_critical_section_maybe() for code
	that needs to ensure it's in a critical section but doesn't
	interfere with an existing critical section.

	* sysdep.c:
	* sysdep.c (qxe_execve):
	Use _wexecve() when under Windows NT for Unicode correctness.

	* text.c:
	* text.c (new_dfc_convert_now_damn_it):
	* text.c (new_dfc_convert_malloc):
	* text.c (find_pos_of_existing_active_dfc_e2c):
	* text.c (new_dfc_convert_alloca):
	* text.c (new_dfc_convert_size):
	* text.c (reinit_vars_of_text):
	* text.h:
	* text.h (eicpy_ext_len):
	* text.h (eicpy_ext):
	* text.h (eito_external):
	* text.h (Qx_atom_name_encoding):
	Add new_dfc() functions, which return an alloca()ed value rather
	than requiring an lvalue. (Not really used yet; used in another
	workspace, to come.) Add some macros for SIZED_EXTERNAL.

	Update the encoding aliases after involved scrutinization of the
	X manual.

	* unicode.c:
	* unicode.c (init_blank_unicode_tables):
	* unicode.c (init_charset_unicode_tables):
	* unicode.c (syms_of_unicode):
	Answer the anonymous but suspiciously Turnbullian questions.
	Rename parse-unicode-translation-table to
	load-unicode-mapping-table, as suggested.

2003-02-19  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (all): New.
	* Makefile.in.in (EXE_TARGET):
	* Makefile.in.in (X11_libs):
	* Makefile.in.in (external_widget_objs):
	* Makefile.in.in (other_files):
	* Makefile.in.in (extw_link_beg): Removed.
	* Makefile.in.in (mo_file):
	* Makefile.in.in (extw_link_mid): Removed.
	* Makefile.in.in (extw_link_end): Removed.
	* Makefile.in.in (temacs_loadup): Removed.
	* Makefile.in.in (run_temacs): Removed.
	* Makefile.in.in (dump_temacs):
	* Makefile.in.in (DO_TEMACS): New.
	* Makefile.in.in (DO_XEMACS): New.
	* Makefile.in.in (debug_temacs):
	* Makefile.in.in (LISP): New.
	* Makefile.in.in (BATCH): New.
	* Makefile.in.in (BATCH_PACKAGES): New.
	* Makefile.in.in (TEMACS_BATCH): New.
	* Makefile.in.in (XEMACS_BATCH): New.
	* Makefile.in.in (XEMACS_BATCH_PACKAGES): New.
	* Makefile.in.in (temacs_loadup_args): New.
	* Makefile.in.in (dump_temacs_args): New.
	* Makefile.in.in (run_temacs_args): New.
	* Makefile.in.in (release):
	* Makefile.in.in (build-the-mofo): New.
	* Makefile.in.in (update-elc): New.
	* Makefile.in.in (update-elc-2): New.
	* Makefile.in.in (load-shadows): New.
	* Makefile.in.in (NEEDTODUMP): New.
	* Makefile.in.in (obj_src):
	* Makefile.in.in (FRC.update-elc.stamp): Removed.
	* Makefile.in.in (update-elc.stamp): Removed.
	* Makefile.in.in (dortl): Removed.
	* Makefile.in.in (link_deps): New.
	* Makefile.in.in (temacs_deps): New.
	* Makefile.in.in (temacs_link_args): New.
	* Makefile.in.in (dump-id.c): New.
	* Makefile.in.in (TopLevelEmacsShell.o):
	* Makefile.in.in (LINT.c): Removed.
	* Makefile.in.in (LINTFILES): Removed.
	* Makefile.in.in (LINTINCLUDES): Removed.
	* Makefile.in.in (LINTFLAGS): Removed.
	* Makefile.in.in (lint): Removed.
	* Makefile.in.in (dump_elcs): Removed.
	* Makefile.in.in (all-elc): New.
	* Makefile.in.in (dump-elcs): Removed.
	* Makefile.in.in (run-temacs): Removed.
	* Makefile.in.in (testdir): Removed.
	* Makefile.in.in (batch_test_emacs): Removed.
	* Makefile.in.in (check-temacs): Removed.
	* Makefile.in.in (rtc_patch.o): Removed.
	* Makefile.in.in (rtcmacs): Removed.
	* Makefile.in.in (run-rtcmacs): Removed.
	* Makefile.in.in (debug-temacs): Removed.
	* Makefile.in.in (PURIFY_PROG): Removed.
	* Makefile.in.in (PURIFY_LIBS): Removed.
	* Makefile.in.in (PURIFY_FLAGS): Removed.
	* Makefile.in.in (puremacs): Removed.
	* Makefile.in.in (libextcli_Xlib.a):
	* Makefile.in.in (QUANTIFY_PROG): Removed.
	* Makefile.in.in (QUANTIFY_HOME): Removed.
	* Makefile.in.in (QUANTIFY_FLAGS): Removed.
	* Makefile.in.in (quantmacs): Removed.
	* Makefile.in.in (PURECOV_PROG): Removed.
	* Makefile.in.in (covmacs): Removed.
	* Makefile.in.in (xemacs_res.o):
	* Makefile.in.in (clean):

	Major surgery.  Move all stuff related to building anything in the
	src/ directory from top-level Makefile.in.in to here.  Simplify
	the dependencies.  Rearrange into logical subsections.
	Synchronize the main compile/dump/build-elcs section with
	xemacs.mak, which is already clean and in good working order.
	Remove weirdo targets like `all-elc[s]', dump-elc[s], etc.  Add
	additional levels of macros \(e.g. DO_TEMACS, DO_XEMACS,
	TEMACS_BATCH, XEMACS_BATCH, XEMACS_BATCH_PACKAGES) to factor out
	duplicated stuff.  Clean up handling of "HEAP_IN_DATA" (Cygwin) so
	it doesn't need to ignore the return value from dumping.  Add
	.NO_PARALLEL since various aspects of building and dumping must be
	serialized but do not always have dependencies between them
	(this is impossible in some cases).  Everything related to src/
	now gets built in one pass in this directory by just running
	`make' (except the Makefiles themselves and config.h, paths.h,
	Emacs.ad.h, and other generated .h files).

	* console.c (Fvalid_console_type_p):
	Update list of possibly valid console types.

	* emacs.c:
	* emacs.c (check_compatible_window_system):
	* emacs.c (main_1):
	* emacs.c (standard_args):
	* emacs.c (sort_args):
	* emacs.c (main):
	Rationalize the specifying and handling of the type of the first
	frame.  This was originally prompted by a workspace in which I got
	GTK to compile under C++ and in the process fixed it so it could
	coexist with X in the same build -- hence, a combined
	TTY/X/MS-Windows/GTK build is now possible under Cygwin. (However,
	you can't simultaneously *display* more than one kind of device
	connection -- but getting that to work is not that difficult.
	Perhaps a project for a bored grad student.  I (ben) would do it
	but don't see the use.)  To make sense of this, I added new
	switches that can be used to specifically indicate the window
	system: -x [aka --use-x], -tty \[aka --use-tty], -msw [aka
	--use-ms-windows], -gtk [aka --use-gtk], and -gnome [aka
	--use-gnome, same as --use-gtk]. -nw continues as an alias for
	-tty.  When none have been given, XEmacs checks for other
	parameters implying particular device types (-t -> tty, -display
	-> x [or should it have same treatment as DISPLAY below?]), and
	has ad-hoc logic afterwards: if env var DISPLAY is set, use x (or
	gtk?  perhaps should check whether gnome is running), else MS
	Windows if it exsits, else TTY if it exists, else stream, and you
	must be running in batch mode.  This also fixes an existing bug
	whereby compiling with no x, no mswin, no tty, when running non-
	interactively (e.g. to dump) I get "sorry, must have TTY support".

	* emacs.c (Frun_emacs_from_temacs):
	Turn on Vstack_trace_on_error so that errors are debuggable even
	when occurring extremely early in reinitialization.
	* emacs.c (pause_so_user_can_read_messages):
	Try to make sure that the user can see message output under
	Windows (i.e. it doesn't just disappear right away) regardless of
	when it occurs, e.g. in the middle of creating the first frame.
	* emacs.c (Femacs_run_status):
	* emacs.c (syms_of_emacs):
	Define new function `emacs-run-status', indicating whether XEmacs
	is noninteractive or interactive, whether raw,
	post-dump/pdump-load or run-temacs, whether we are dumping,
	whether pdump is in effect.

	* event-stream.c:
	It's "mommas are fat", not "momas are fat".
	Fix other typo.
	* event-stream.c (Fnext_event):
	Conditionalize in_menu_callback check on HAVE_MENUBARS,
	because it won't exist on w/o menubar support,

	* lisp.h:
	More hackery on RETURN_NOT_REACHED.  Cygwin v3.2 DOES complain here
	if RETURN_NOT_REACHED() is blank, as it is for GCC 2.5+.  So make it
	blank only for GCC 2.5 through 2.999999999999999.

	Declare Vstack_trace_on_error.

	* profile.c:
	Need to include "profile.h" to fix warnings.

	* sheap.c (report_sheap_usage):
	Don't fatal() when need to rerun Make, just stderr_out() and exit(0).
	That way we can distinguish between a dumping failing expectedly
	(due to lack of stack space, triggering another dump) and unexpectedly,
	in which case, we want to stop building. (or go on, if -K is given)
	* syntax.c (Fmatching_paren):
	* syntax.c (find_start_of_comment):
	* syntax.h:
	Use ints where they belong, and enum syntaxcode's where they belong,
	and fix warnings thereby.

	* syntax.h:
	Fix crash caused by an edge condition in the syntax-cache macros.

	* text.h:
	* text.h (LISP_STRING_TO_ALLOCA):
	* text.h (alloca_ibytes):
	Spacing fixes.

	* xmotif.h:
	New file, to get around shadowing warnings.

	* EmacsManager.c:
	* event-Xt.c:
	* glyphs-x.c:
	* gui-x.c:
	* input-method-motif.c:
	* xmmanagerp.h:
	* xmprimitivep.h:
	Include xmotif.h.

	* alloc.c:
	Conditionalize in_malloc on ERROR_CHECK_MALLOC.

	* config.h.in:
	* file-coding.h:
	* fileio.c:
	* getloadavg.c (getloadavg):
	* select-x.c:
	* signal.c (qxe_setitimer):
	* sysdep.c (total_data_usage):
	* sysfile.h:
	* systime.h:
	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	* unicode.c (dfc_coding_system_is_unicode):
	Eliminate HAVE_WIN32_CODING_SYSTEMS, use WIN32_ANY instead.
	Replace defined (WIN32_NATIVE) || defined (CYGWIN) with WIN32_ANY.

	* lisp.h:
	More futile attempts to walk and chew gum at the same time when
	dealing with subr's that don't return.

2003-02-19  Ben Wing  <ben@xemacs.org>

	* eval.c (unbind_to_hairy):
	Don't check_quit() unless we're unbinding a real Lisp
	`unwind-protect' since check_quit() does lots of weird things and
	not all callers are prepared for it.
	* frame.c:
	* frame.c (delete_frame_internal):
	Make absolutely sure there is no quit checking while we are in a
	"critical section" during frame deletion.

2003-02-16  Steve Youngs  <youngs@xemacs.org>

	* XEmacs 21.5.11 "cabbage" is released.

2003-02-15  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (dynodump_deps):
	Don't delete the DOC file.  Implement quick-building here: not
	building the DOC file unless it doesn't exist, as the quick-build
	docs say.

	* config.h.in: Style changes.  Add HAVE_XLIKE.
	* emacs.c (main_1):
	* emacs.c (main):
	* emacs.c (Fdump_emacs):
	* emacs.c (voodoo_free_hook):
	* emacs.c (Fkill_emacs):
	* emacs.c (assert_failed):
	* emacs.c (vars_of_emacs):
	* emacs.c (__sti__iflPNGFile_c___):
	Nothing but niggly spacing changes -- one space before a paren
	starting a function-call arglist, please.

	* make-src-depend:
	When QUICK_BUILD, don't put lisp.h, config.h, and related as
	dependencies of all source files, so that changes to these files
	don't trigger total rebuilding of the src directory.
	Update info on what's a GTK-only and X-only file and use HAVE_XLIKE
	for files shared between GTK and X.

2003-02-14  Ben Wing  <ben@xemacs.org>

	* buffer.c:
	* syntax.c:
	Move syntax table description from buffer.c to syntax.c.

	* chartab.c:
	* chartab.c (set_char_table_dirty):
	* chartab.c (fill_char_table):
	* chartab.c (Fmake_char_table):
	* chartab.c (Fcopy_char_table):
	* chartab.c (get_range_char_table_1):
	* chartab.c (get_range_char_table):
	* chartab.c (put_char_table):
	* chartab.h:
	* chartab.h (struct Lisp_Char_Table):
	Free extra char table entries to avoid excessive garbage.
	Add flags for dirty and mirror_table_p to char tables.
	Add a back pointer from mirror tables to the original syntax table.
	When modifying a syntax table, don't update the mirror table right
	away, just mark as dirty.
	Add various asserts to make sure we are dealing with the right type
	of table (mirror or non-mirror).

	* font-lock.c:
	* font-lock.c (find_context):
	* syntax.c (init_syntax_cache):
	* syntax.c (setup_syntax_cache):
	* syntax.c (mark_buffer_syntax_cache):
	* syntax.c (init_buffer_syntax_cache):
	* syntax.c (syntax_cache_table_was_changed):
	* syntax.c (update_syntax_cache):
	* syntax.c (scan_lists):
	* syntax.c (scan_sexps_forward):
	* syntax.c (copy_if_not_already_present):
	* syntax.c (update_just_this_syntax_table):
	* syntax.c (update_syntax_table):
	* syntax.c (vars_of_syntax):
	* syntax.h:
	* syntax.h (struct syntax_cache):
	Add entry to syntax caches for the non-mirror table.  Set it
	appropriately when initializing the syntax table.  Use it, not
	the mirror table, for calls to syntax_match().
	Don't create a bogus float each time, just once at startup.
	Add some asserts, as in chartab.c.

	* syntax.h (SYNTAX_CODE_FROM_CACHE):
	When retrieving the syntax code, check the dirty flag and update
	the mirror tables as appropriate.
	Add some asserts, as above.

2003-02-14  Ben Wing  <ben@xemacs.org>

	* scrollbar.c (specifier_vars_of_scrollbar):
	Don't generate fallbacks for TTY's when not HAVE_TTY.

2003-02-13  Martin Buchholz  <martin@xemacs.org>

	Make XEmacs redisplay 10 times faster.
	If, that is, you're using a slow X connection and MoveOpaque.
	Use compress_exposure = XtExposeCompressMaximal | XtExposeNoRegion.
	Use compress_motion = TRUE.
	* EmacsFrame.c (emacsFrameClassRec):
	* EmacsShell-sub.c (EMACS_SHELL_CLASS_REC):
	* EmacsManager.c (emacsManagerClassRec):
	* xintrinsicp.h: Make sure XtExposeNoRegion is defined.

2003-02-13  Ben Wing  <ben@xemacs.org>

	* unicode.c (utf_16_detect):
	Don't get snafued w/division-by-zero.

2003-02-12  Ben Wing  <ben@xemacs.org>

	* profile.c:
	* profile.c (create_profile_tables):
	* profile.c (current_profile_function):
	* profile.c (profile_record_consing):
	* profile.c (profile_record_about_to_call):
	* profile.c (profile_record_just_called):
	* profile.c (sigprof_handler):
	* profile.c (Fstart_profiling):
	* profile.c (Fstop_profiling):
	* profile.c (Fclear_profiling_info):
	* profile.c (copy_hash_table_or_blank):
	* profile.c (Fget_profiling_info):
	* profile.c (set_profiling_info_timing_maphash):
	* profile.c (Fset_profiling_info):
	* profile.c (mark_profiling_info_maphash):
	* profile.c (mark_profiling_info):
	* profile.c (vars_of_profile):
	Major reworking.  Keep track of new information -- total
	function timing (includes descendants), GC usage, total GC usage
	(includes descendants).  New functions to be called appropriately
	from eval.c, alloc.c to keep track of this information.  Keep track
	of when we're actually in a function vs. in its profile, for more
	accurate timing counts.  Track profile overhead separately.  Create
	new mechanism for specifying "internal sections" that are tracked
	just like regular Lisp functions and even appear in the backtrace
	if `backtrace-with-internal-sections' is non-nil (t by default
	for error-checking builds).  Add some KKCC information for the
	straight (non-Elisp) hash table used by profile, which contains
	Lisp objects in its keys -- but not used yet.  Remove old ad-hoc
	methods for tracking garbage collection, redisplay (which was
	incorrect anyway when Lisp was called within these sections).
	Don't record any tick info when blocking under MS Windows, since
	the timer there is in real time rather than in process time.
	Make `start-profiling', `stop-profiling' interactive.  Be consistent
	wrt. recursive functions and functions currently on the stack when
	starting or stopping -- together these make implementing the
	`total' values extremely difficult.  When we start profiling, we
	act as if we just entered all the functions currently on the stack.
	Likewise when exiting.  Create vars in_profile for tracking
	time spent inside of profiling, and profiling_lock for setting
	exclusive access to the main hash table when reading from it or
	modifying it. (protects against getting screwed up by the signal
	handle going off at the same time.

	* profile.h: New file.
	Create macros for declaring internal profiling sections.

	* lisp.h:
	Move profile-related stuff to profile.h.

	* alloc.c:
	* alloc.c (INCREMENT_CONS_COUNTER_1):
	* alloc.c (DECREMENT_CONS_COUNTER):
	* alloc.c (garbage_collect_1):
	* alloc.c (vars_of_alloc):
	Keep track of total consing, for profile.
	Tell profile when we are consing.
	Use new profile-section method for noting garbage-collection.

	* alloc.c (xmalloc):
	* alloc.c (xcalloc):
	* alloc.c (xrealloc):
	* alloc.c (endif):
	Abort if we attempt to call the allocator reentrantly.

	* backtrace.h:
	* backtrace.h (FSET_FAST_UNSAFE):
	* eval.c:
	Add info for use by profile in the backtrace frame and transfer
	PUSH_BACKTRACE/POP_BACKTRACE from eval.c, for use with profile.

	* elhash.c: Author comment.

	* eval.c (vars_of_eval):
	* lisp.h:
	New Lisp var `backtrace-with-internal-sections'.  Set to t when
	error-checking is on.

	* eval.c:
	* eval.c (unwind_to_catch):
	When unwinding,

	* eval.c (Fcommand_execute):
	* eval.c (Feval):
	* eval.c (Ffuncall):
	Report to profile when we are about-to-call and just-called wrt. a
	function.

	* alloc.c (garbage_collect_1):
	* eval.c (backtrace_unevalled_args):
	* eval.c (Fbacktrace):
	* eval.c (Fbacktrace_frame):
	Allow for "fake" backtrace frames, for internal sections (used by
	profile and `backtrace-with-internal-sections'.

	* event-Xt.c:
	* event-Xt.c (emacs_Xt_next_event):
	* event-gtk.c:
	* event-gtk.c (emacs_gtk_next_event):
	* event-msw.c:
	* event-msw.c (mswindows_need_event):
	* event-tty.c:
	* event-tty.c (emacs_tty_next_event):
	Record when we are actually blocking on an event, for profile's sake.

	* event-stream.c:
	* event-stream.c (next_event_internal):
	* event-stream.c (Fnext_event):
	* event-stream.c (execute_internal_event):
	* event-stream.c (Fdispatch_event):
	* event-stream.c (syms_of_event_stream):
	* event-stream.c (vars_of_event_stream):
	Record internal profiling sections for getting, dispatching events.

	* extents.c:
	* extents.c (map_extents):
	* extents.c (vars_of_extents):
	Record internal profiling sections for map_extents.

	* hash.c: Author comment.
	* hash.c (grow_hash_table):
	* hash.h:
	Add pregrow_hash_table_if_necessary(). (Used in profile code
	since the signal handler is the main grower but can't allow
	a realloc().  We make sure, at critical points, that the table
	is large enough.)

	* lread.c:
	* lread.c (Fload_internal):
	* lread.c (done): New.
	* lread.c (syms_of_lread):
	* lread.c (vars_of_lread):
	Create internal profiling sections for `load' (which may be triggered
	internally by autoload, etc.).

	* redisplay.c:
	* redisplay.c (redisplay_without_hooks):
	* redisplay.c (vars_of_redisplay):
	Remove old profile_redisplay_flag.  Use new macros to declare
	internal profiling section for redisplay.

	* text.c (charbpos_to_bytebpos_func):
	* text.c (bytebpos_to_charbpos_func):
	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	* text.c (vars_of_text):
	Use new macros to declare internal profiling sections for
	char-byte conversion and internal-external conversion.

	SEMI-UNRELATED CHANGES:
	-----------------------

	* text.c:
	Update the long comments.

2003-02-07  Mike Sperber  <mike@xemacs.org>

	* scrollbar.c (specifier_vars_of_scrollbar):
	(specifier_vars_of_scrollbar): TTY devices don't have scrollbars.

2003-01-28  Martin Buchholz  <martin@xemacs.org>

	* config.h.in (_ALL_SOURCE): Guard against multiple definition.

2003-02-09  Ben Wing  <ben@xemacs.org>

	* console-stream.c:
	* console-stream.c (stream_clear_region):
	* console-stream.c (console_type_create_stream):
	Abort when any attempts to output a stream console are made.
	Should be caught sooner.

	* event-msw.c (mswindows_wnd_proc):
	Don't redisplay() during sizing when the frame has not yet been
	initialized completely.

	* event-stream.c (Fnext_event):
	* menubar-msw.c (mswindows_handle_wm_initmenupopup):
	* menubar-x.c (protected_menu_item_descriptor_to_widget_value):
	* menubar.c:
	* menubar.h:
	Restore in_menu_callback.  Bind it in menubar-{msw,x}.c when
	calling filter functions and the like.  Conditionalize on it, not
	in_modal_loop, when issuing error in `next-event', otherwise we
	bite the dust immediately -- event-msw.c purposely calls
	Fnext_event() in a modal loop, and knows what it's doing.

	* redisplay-output.c (redisplay_unmap_subwindows_maybe):
	* redisplay-output.c (redisplay_unmap_subwindows_except_us):
	Formatting fixes.

	* redisplay.c:
	* redisplay.c (redisplay_frame):
	* redisplay.c (Fredisplay_echo_area):
	* redisplay.c (redisplay_no_pre_idle_hook):
	* redisplay.c (syms_of_redisplay):
	* redisplay.c (vars_of_redisplay):
	* window.c (Fwindow_pixel_edges):
	* window.c (syms_of_window):
	* winslots.h:
	Delete lots of carcasses of attempts to add redisplay support for
	font-lock -- `pre/post-redisplay-hook', unimplemented junk from
	FSF (redisplay-end-trigger, `window-scroll-functions',
	`window-size-change-functions').  If we want to port some
	redisplay support from FSF, port the `fontified' property.

	* redisplay.c (redisplay_frame):
	Put in a check here (as well as redisplay_device()) for a stream
	frame.  We can get here directly through Lisp fun
	`redisplay-frame'.  Abort if frame not initialized.

	* redisplay.c (Fredisplay_echo_area):
	* redisplay.c (Fforce_cursor_redisplay):
	Check for stream frames/devices.

2003-02-07  Mike Sperber  <mike@xemacs.org>

	* alloc.c (GC_CHECK_NOT_FREE): Pull this out of USE_KKCC.

2003-02-07  Ben Wing  <ben@xemacs.org>

	* lread.c (Fload_internal):
	Eliminate printing `done' messages noninteractively since it's now
	obvious which files are loaded by which others.

2003-02-06  Andrew Begel  <abegel@CS.Berkeley.EDU>

	 * sysdll.c: Included lisp.h to define needed alloca_array.

2003-02-07  Jerry James  <james@xemacs.org>

	* sysdep.c (strlwr): Return the parameter.
	* sysdep.c (strupr): Ditto.  Depend on !HAVE_STRUPR.

2003-02-07  Ben Wing  <ben@xemacs.org>

	This contains two related changes:

	(1) Fix problems with reentrant calling of lwlib and associated
	    crashes when selecting menu items.
	(2) Improve redisplay handling of preemption.  Turn on lazy lock
	    and hold down page-down or page-up and you'll see what I mean.

	They are related because they both touch on the code that retrieves
	events and handles the internal queues.

	* console-msw.h:
	* event-msw.c:
	* event-msw.c (mswindows_unmodalize_signal_maybe):
	* event-msw.c (mswindows_unsafe_pump_events):
	* event-msw.c (mswindows_pump_outstanding_events):
	* event-msw.c (mswindows_need_event_in_modal_loop):
	* event-msw.c (mswindows_drain_windows_queue):
	* event-msw.c (mswindows_need_event):
	* event-msw.c (reinit_vars_of_event_mswindows):
	* event-stream.c (event_stream_protect_modal_loop):
	* events.h:
	* events.h (struct event_stream):
	* menubar-msw.c (struct handle_wm_initmenu):
	* menubar-msw.c (unsafe_handle_wm_initmenupopup):
	* menubar-msw.c (unsafe_handle_wm_initmenu):
	* menubar-msw.c (mswindows_handle_wm_initmenupopup):
	* menubar-msw.c (mswindows_handle_wm_initmenu):
	* menubar-x.c:
	* menubar-x.c (protected_menu_item_descriptor_to_widget_value):
	* menubar-x.c (pre_activate_callback):
	* menubar.h:

	mswindows_protect_modal_loop() has been generalized to
	event_stream_protect_modal_loop(), and moved to event-stream.c.
	mswindows_in_modal_loop ->in_modal_loop likewise.  Changes in
	event-msw.c and menubar-msw.c for the new names and calling format
	(use structures instead of static variables in menubar-msw.c).
	Delete former in_menu_callback and use in_modal_loop in its place.
	Remove emacs_mswindows_quit_check_disallowed_p(), superseded by
	in_modal_loop.  Use event_stream_protect_modal_loop() in
	pre_activate_callback() so that we get no lwlib reentrancy.

	Rearrange some of the code in event-msw.c to be grouped better.
	Make mswindows_drain_windows_queue() respect in_modal_loop and
	do nothing if so.

	* cmdloop.c (command_loop_3):
	* event-stream.c (Fnext_event):
	Don't conditionalize on LWLIB_MENUBARS_LUCID when giving error when
	in_modal_loop, and give better error.

	* event-Xt.c (emacs_Xt_next_event):
	* event-Xt.c (emacs_Xt_drain_queue):
	* event-gtk.c (emacs_gtk_drain_queue):
	If in_modal_loop, only retrieve process and timeout events.
	Don't retrieve any X events because processing them can lead
	to reentrancy in lwlib -> death.

	* event-stream.c:
	* event-stream.c (check_event_stream_ok):
	* event-stream.c (event_stream_handle_magic_event):
	* event-stream.c (event_stream_format_magic_event):
	* event-stream.c (event_stream_compare_magic_event):
	* event-stream.c (event_stream_hash_magic_event):
	* event-stream.c (event_stream_add_timeout):
	* event-stream.c (event_stream_remove_timeout):
	* event-stream.c (event_stream_select_console):
	* event-stream.c (event_stream_unselect_console):
	* event-stream.c (event_stream_select_process):
	* event-stream.c (event_stream_unselect_process):
	* event-stream.c (event_stream_create_io_streams):
	* event-stream.c (event_stream_delete_io_streams):
	* event-stream.c (event_stream_current_event_timestamp):
	* event-stream.c (event_stream_next_event):
	Remove unused parameter to check_event_stream_ok() and change
	all callers.

	* lisp.h:
	* event-stream.c (maybe_do_auto_save):
	* event-stream.c (emacs_handle_focus_change_preliminary):
	* event-stream.c (emacs_handle_focus_change_final):
	* event-stream.c (detect_input_pending):
	* event-stream.c (maybe_read_quit_event):
	* event-stream.c (remove_quit_p_event):
	* event-stream.c (event_stream_quit_p):
	* event-stream.c (event_stream_next_event):
	* event-stream.c (sit_for_unwind):
	* event-stream.c (Faccept_process_output):
	* event-stream.c (Fsleep_for):
	* event-stream.c (Fsit_for):
	* event-stream.c (maybe_kbd_translate):
	* event-stream.c (command_builder_find_leaf_no_mule_processing):
	* event-stream.c (reinit_vars_of_event_stream):
	Rearrange some functions for increased clarity -- in particular,
	group all the input-pending/QUIT-related stuff together, and
	put right next to next-event stuff, to which it's related.
	Add the concept of "HOW_MANY" -- when asking whether user input
	is pending, you can ask if at least HOW_MANY events are pending,
	not just if any are.  Add parameter to detect_input_pending()
	for this.  Change recursive_sit_for from a Lisp_Object (which
	could only be Qt or Qnil) to an int, like it should be.

	* event-Xt.c:
	* event-Xt.c (THIS_IS_X):
	* event-gtk.c:
	* event-gtk.c (THIS_IS_GTK):
	* event-xlike-inc.c: New file.
	Abstract out similar code in event_{Xt/gtk}_pending_p() and write
	only once, using include-file tricks.  Rewrite this function to
	implement HOW_MANY and only process events when not in_modal_loop.

	* event-msw.c (emacs_mswindows_event_pending_p):
	Implement HOW_MANY and only process events when not in_modal_loop.

	* event-tty.c:
	* event-tty.c (tty_timeout_to_emacs_event):
	* event-tty.c (emacs_tty_event_pending_p):
	Implement HOW_MANY.

	* redisplay.c:
	* redisplay.c (QUEUED_EVENTS_REQUIRED_FOR_PREEMPTION):
	* redisplay.c (init_redisplay):
	* redisplay.c (vars_of_redisplay):
	Add var `max-preempts' to control maximum number of preempts.
	(#### perhaps not useful) Rewrite preemption check so that,
	rather than preempting when any user events are available, only
	preempt when a certain number (currently 4) of them are backed up.
	This effectively allows redisplay to proceed to completion in the
	presence of a fast auto-repeat (usually the auto-repeating is
	generated dynamically as necessary), and you get much better
	display behavior with lazy-lock active.

	* event-unixoid.c:
	Comment changes.

	* event-stream.c (command_event_p_cb):
	* event-stream.c (Fdiscard_input):
	Rewrite discard-input much more simply and safely using the
	drain-queue functions.  I think the old version might loop
	forever if called when in_modal_loop.

	SEMI-UNRELATED CHANGES:
	-----------------------

	* event-stream.c (run_pre_idle_hook):
	Turn QUIT-checking back on when running the pre-idle hook so it
	can be quit out of.

	* indent.c:
	Document exact functioning of `vertical-motion' better, and its
	differences from GNU Emacs.

2003-02-06  Ben Wing  <ben@xemacs.org>

	* unicode.c:
	* unicode.c (struct utf_16_detector):
	* unicode.c (utf_16_detect):
	* unicode.c (struct utf_8_detector):
	* unicode.c (utf_8_detect):
	UTF-8 detector was totally bogus and detected almost anything as UTF-8.
	UTF-16 detector got overly happy with 0x2028's (line separator,
	also space+paren).

2003-02-06  Ben Wing  <ben@xemacs.org>

	* lread.c (Fload_internal):
	Oops.  Plain C can't handle declarations intermixed with statements.

2003-02-06  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (GC_CHECK_NOT_FREE):
	* alloc.c (mark_object_maybe_checking_free):
	* alloc.c (mark_with_description):
	* alloc.c (mark_object):
	Implement tail-recursion in KKCC when the last-marked object is
	a Lisp object, to avoid stack-overflow errors when marking long
	lists.  Factor out some duplicated error-checking into macros.

2003-02-05  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (update-elc.stamp):
	NOBYTECOMPILE -> BYTECOMPILE_CHANGE.

	* esd.c (esd_play_sound_data):
	Warning fixes.

	* fns.c:
	* fns.c (mark_bit_vector):
	* fns.c (Frequire):
	* fns.c (vars_of_fns):
	Eliminate bogus require-prints-loading-message; use already
	existent load-always-display-messages instead.  Make sure `load'
	knows we are coming from `require'.

	* lread.c:
	* lread.c (READCHARFUN_MAYBE):
	* lread.c (Fload_internal):
	* lread.c (PRINT_LOADING_MESSAGE_1):
	* lread.c (PRINT_LOADING_MESSAGE):
	* lread.c (vars_of_lread):
	Turn on `load-warn-when-source-newer' by default.  Change loading
	message to indicate when we are `require'ing.  Eliminate
	purify_flag hacks to display more messages; instead, loadup and
	friends specify this explicitly with
	`load-always-display-messages'.  Add spaces when batch to clearly
	indicate recursive loading.  Fassoc() does not GC so no need to
	gcpro.

	* gui-x.c:
	* gui-x.c (snarf_widget_values_for_gcpro):
	* gui-x.c (gcpro_popup_callbacks):
	* gui-x.h:
	* menubar-x.c:
	* menubar-x.c (pre_activate_callback):
	* menubar-x.c (set_frame_menubar):
	Fix up crashes when selecting menubar items due to lack of GCPROing
	of callbacks in lwlib structures.

	* eval.c (Fbacktrace):
	* lisp.h:
	* print.c:
	* print.c (canonicalize_printcharfun):
	Don't canonicalize to selected-frame when noninteractive, or
	backtraces get all screwed up as some values are printed through
	the stream console and some aren't.  Export
	canonicalize_printcharfun() and use in Fbacktrace().

2003-02-05  Stephen J. Turnbull  <stephen@xemacs.org>

	* config.h.in: New symbol: DLSYM_NEEDS_UNDERSCORE.

2003-01-09  Stephen J. Turnbull  <stephen@xemacs.org>

	* config.h.in: Restore USE_XFONTSET.

2003-02-04  Ben Wing  <ben@xemacs.org>

	* s/windowsnt.h:
	* s/windowsnt.h (HAVE_STRLWR):
	Windows has strupr(), strlwr().  Comment fixes.

2003-02-04  Ben Wing  <ben@xemacs.org>

	* text.h: Style fixes.

2003-01-31  Stephen J. Turnbull  <stephen@xemacs.org>

	* alloc.c (mark_object_maybe_checking_free): C macro syntax
	requires paren to immediately follow definiendum.

2003-01-30  Stephen J. Turnbull  <stephen@xemacs.org>

	* file-coding.c (vars_of_file_coding): Fprovide here ...
	(syms_of_file_coding): ... not here.  Dem's da rules.

2003-01-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* toolbar-msw.c:
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	* nt.c (mswindows_link):
	* event-msw.c (output_alt_keyboard_state):
	Change C++ style comments to C style.

2003-01-22  Vin Shelton  <acs@xemacs.org>

	* events.h: Change illegal (for C) // comment to /* */

2003-01-15  Jerry James  <james@eecs.ku.edu>

	* emodules.h: #undef everything we redefine for module code.

2003-01-14  Sergey Okhapkin <sos@prospect.com.ru>

	* Makefile.in.in (ldflags): re-order sections for gcc 3.2.
	* s/cygwin.sc: new linker file.

2003-01-11  Mike Sperber  <mike@xemacs.org>

	* window.c (Fdelete_window): Make sure that
	f->last_nonminibuf_window is set to a live window once we're done.
	(contains_window): Abstract this code out of Fdelete_window.

2003-01-10  Mike Sperber  <mike@xemacs.org>

	* window.c (Fdelete_other_windows): Prevent crash for combination
	windows.

2003-01-08  Mike Sperber <mike@xemacs.org>

	* console.h (CDFW_CONSOLE): Don't lead to a crash if we're dealing
	with a dead window/frame/device/console.

2002-12-20  Mike Sperber <mike@xemacs.org>

	* ui-gtk.c: Fix typo from Ben's patch: emacs_ffi_data is a
	typedef, not a struct.  emacs_gtk_object_data is a typedef, not a
	struct.


	* gtk-glue.c (gdk_event_to_emacs_event): Fix typos from Ben's
	patch: le -> emacs_event + rearrange the code.

	* event-gtk.c (gtk_event_to_emacs_event): Fix typos from Ben's
	patch: ..._UNDERLYING_GDK_EVENT -> ..._GDK_EVENT, ev -> key_event.

	* device-gtk.c: Fix typo from Ben's patch: x_keysym_map_hash_table
	-> x_keysym_map_hashtable.

2002-12-19  Mike Sperber <mike@xemacs.org>

	* menubar-x.c (set_frame_menubar): Initialize protect_me field of
	popup_data.

2002-12-16  Ben Wing  <ben@xemacs.org>
	Major cleanup of KKCC, etc.

	KKCC, pdump-related:

	-- descriptions are written for all objects.  this required some
	   changes in the format of some objects, e.g. extents, popup-data,
	   coding system, lstream, lcrecord-list.
	-- KKCC now handles weakness in markers, hash tables, elsewhere
	   correctly (formerly, you'd eventually get a stack overflow due
	   to endlessly expanding markers).
	-- textual changes: lrecord_description -> memory_description,
	   struct_description -> sized_memory_description.
	-- extensive comment describing descriptions and pdump.
	-- redo XD_UNION so it works inline and change its format to provide
	   sufficient info for pdump.  implement XD_UNION in pdump.  also add
	   XD_UNION_DYNAMIC_SIZE, which works like XD_UNION except for when
	   auto-computing structure sizes.
	-- add support for XD_INDIRECT in description offsets (used by
	   extents).
	-- add support for "description maps", allowing for indirect
	   descriptions that are retrieved from an object at run-time.  this
	   generalizes XD_CODING_SYSTEM_END, XD_SPECIFIER_END, etc., which
	   have now been eliminated.
	-- add a fifth field "flags" to memory_description, to support flags
	   that can be specified for this particular line.  Currently defined
	   flags are XD_FLAG_NO_KKCC (KKCC should ignore this entry; useful
	   for the weakness above in markers, etc.), XD_FLAG_NO_PDUMP (pdump
	   should ignore this entry), XD_FLAG_UNION_DEFAULT_ENTRY (in
	   union maps, this specifies a "default" entry for all remaining
	   values), and XD_FLAG_FREE_LISP_OBJECT (for use with lcrecord-lists).
	-- clean up the kkcc-itis in events, so that the differences
	   between event data as separate objects and as a union are now
	   minimized to a small number of places.  with the new XD_UNION, we
	   no longer need event data as separate objects, so this code is no
	   longer ifdef USE_KKCC, but instead ifdef EVENT_DATA_AS_OBJECTS,
	   not used by default.  make sure that we explicitly free the
	   separate event data objects when no longer in use, to maintain the
	   invariant the event processing causes no consing.
	-- also remove other USE_KKCC ifdefs when not necessary.
	-- allow for KKCC compilation under MS Windows.
	-- fix README.kkcc.
	-- dump_add_root_object -> dump_add_root_lisp_object.
	-- implement dump_add_root_block and use this to handle
	   dump_add_opaque.
	-- factor out some code duplicated in kkcc and pdump.

	Other allocation/object-related:

	-- change various *slots.h so MARKED_SLOT() call no longer
	   includes semicolon.
	-- free_marker() takes a Lisp_Object not a direct pointer.
	-- make bit vectors lcrecords, like vectors, and eliminate code
	   that essentially duplicated the lcrecord handling.
	-- additional asserts in FREE_FIXED_TYPE, formerly duplicated in
	   the various callers of this.
	-- all lcrecord allocation functions now zero out the returned
	   lcrecords.  unnecessary calls to zero_lcrecord removed.  add long
	   comment describing these functions.
	-- extract out process and coding system slots, like for buffers,
	   frames, etc.
	-- lcrecords now set the type of items sitting on the free list to
	   lcrecord_type_free.
	-- changes to the way that gap arrays are allocated, for kkcc's
	   benefit -- now, one single memory block with a stretchy array on
	   the end, instead of a separate block holding the array.

	Error-checking-related:

	-- now can compile with C++ under MS Windows.  clean up compile errors
	   discovered that way. (a few were real problems)
	-- add C++ error-checking code to verify problems with mismatched
	   GCPRO/UNGCPRO. (there were a few in the kkcc code.) add long
	   comment about how to catch insufficient GCPRO (yes, it's possible
	   using C++).
	-- add debug_p4(), a simple object printer, when debug_print()
	   doesn't work.
	-- add dp() and db() as short synonyms of debug_print(),
	   debug_backtrace().
	-- `print' tries EXTREMELY hard to avoid core dumping when printing
	   when crashing or from debug_print(), and tries as hard as it
	   reasonably can in other situations.
	-- Correct the message output upon crashing to be more up-to-date.

	Event-related:

	-- document event-matches-key-specifier-p better.
	-- generalize the dispatch queues formerly duplicated in the
	   various event implementations.  add event methods to drain pending
	   events.  generalize and clean up QUIT handling, removing
	   event-specific quit processing.  allow arbitrary keystrokes, not
	   just ASCII, to be the QUIT char.  among other things, this should
	   fix some longstanding bugs in X quit handling.  long comment
	   describing the various event queues.
	-- implement delaying of XFlush() if there are pending expose events.
	   SOMEONE PLEASE TRY THIS OUT.
	-- Fix `xemacs -batch -l dunnet' under Cygwin.  Try to fix under
	   MS Windows but not quite there yet.

	Other:

	-- class -> class_ and no more C++ games with this item.
	   new -> new_ in the lwlib code, so far not elsewhere.
	-- use `struct htentry' not `struct hentry' in elhash.c to avoid
	   debugger confusion with hash.c.
	-- new macros ALIST_LOOP_3, ALIST_LOOP_4.

	* README.kkcc:
	* alloc.c:
	* alloc.c (deadbeef_memory):
	* alloc.c (allocate_lisp_storage):
	* alloc.c (copy_lisp_object):
	* alloc.c (ALLOCATE_FIXED_TYPE_1):
	* alloc.c (FREE_FIXED_TYPE):
	* alloc.c (make_vector_internal):
	* alloc.c (make_bit_vector_internal):
	* alloc.c (make_key_data):
	* alloc.c (make_button_data):
	* alloc.c (make_motion_data):
	* alloc.c (make_process_data):
	* alloc.c (make_timeout_data):
	* alloc.c (make_magic_data):
	* alloc.c (make_magic_eval_data):
	* alloc.c (make_eval_data):
	* alloc.c (make_misc_user_data):
	* alloc.c (struct string_chars_block):
	* alloc.c (mark_lcrecord_list):
	* alloc.c (make_lcrecord_list):
	* alloc.c (alloc_managed_lcrecord):
	* alloc.c (free_managed_lcrecord):
	* alloc.c (alloc_automanaged_lcrecord):
	* alloc.c (staticpro_1):
	* alloc.c (staticpro):
	* alloc.c (lispdesc_indirect_count_1):
	* alloc.c (lispdesc_indirect_description_1):
	* alloc.c (lispdesc_one_description_line_size):
	* alloc.c (lispdesc_structure_size):
	* alloc.c (mark_object_maybe_checking_free):
	* alloc.c (mark_with_description):
	* alloc.c (mark_struct_contents):
	* alloc.c (mark_object):
	* alloc.c (tick_lcrecord_stats):
	* alloc.c (free_cons):
	* alloc.c (free_key_data):
	* alloc.c (free_button_data):
	* alloc.c (free_motion_data):
	* alloc.c (free_process_data):
	* alloc.c (free_timeout_data):
	* alloc.c (free_magic_data):
	* alloc.c (free_magic_eval_data):
	* alloc.c (free_eval_data):
	* alloc.c (free_misc_user_data):
	* alloc.c (free_marker):
	* alloc.c (compact_string_chars):
	* alloc.c (gc_sweep):
	* alloc.c (garbage_collect_1):
	* alloc.c (Fgarbage_collect):
	* alloc.c (common_init_alloc_early):
	* alloc.c (init_alloc_early):
	* alloc.c (init_alloc_once_early):
	* buffer.c:
	* buffer.c (mark_buffer):
	* buffer.c (MARKED_SLOT):
	* buffer.c (cleanup_buffer_undo_lists):
	* buffer.c (Fget_file_buffer):
	* buffer.h (MARKED_SLOT):
	* bufslots.h:
	* bytecode.c:
	* callint.c:
	* casetab.c:
	* chartab.c:
	* chartab.c (symbol_to_char_table_type):
	* cmdloop.c:
	* cmdloop.c (Fcommand_loop_1):
	* config.h.in (new):
	* conslots.h:
	* console-gtk-impl.h (struct gtk_frame):
	* console-impl.h:
	* console-impl.h (struct console):
	* console-impl.h (MARKED_SLOT):
	* console-impl.h (CONSOLE_QUIT_EVENT):
	* console-msw-impl.h (XM_BUMPQUEUE):
	* console-msw.c (write_string_to_mswindows_debugging_output):
	* console-msw.h:
	* console-stream-impl.h:
	* console-stream-impl.h (struct stream_console):
	* console-stream.c:
	* console-stream.c (stream_init_console):
	* console-stream.h:
	* console-tty.c:
	* console-tty.h:
	* console-x.h:
	* console.c:
	* console.c (mark_console):
	* console.c (MARKED_SLOT):
	* console.c (allocate_console):
	* console.c (get_console_variant):
	* console.c (create_console):
	* console.c (delete_console_internal):
	* console.c (Fset_input_mode):
	* console.c (Fcurrent_input_mode):
	* console.c (common_init_complex_vars_of_console):
	* console.h:
	* console.h (console_variant):
	* console.h (device_metrics):
	* data.c:
	* data.c (Faref):
	* data.c (Faset):
	* data.c (decode_weak_list_type):
	* database.c:
	* debug.c (xemacs_debug_loop):
	* debug.c (FROB):
	* debug.c (Fadd_debug_class_to_check):
	* debug.c (Fdelete_debug_class_to_check):
	* debug.c (Fset_debug_classes_to_check):
	* debug.c (Fset_debug_class_types_to_check):
	* debug.c (Fdebug_types_being_checked):
	* debug.h (DASSERT):
	* device-gtk.c:
	* device-impl.h (struct device):
	* device-impl.h (MARKED_SLOT):
	* device-msw.c:
	* device-x.c:
	* device-x.c (x_init_device_class):
	* device-x.c (x_comp_visual_info):
	* device-x.c (x_try_best_visual_class):
	* device-x.c (x_init_device):
	* device-x.c (construct_name_list):
	* device-x.c (x_get_resource_prefix):
	* device-x.c (Fx_get_resource):
	* device-x.c (Fx_display_visual_class):
	* device.c:
	* device.c (MARKED_SLOT):
	* device.c (allocate_device):
	* device.c (Fmake_device):
	* device.c (delete_device_internal):
	* device.c (Fset_device_class):
	* device.h:
	* devslots.h:
	* devslots.h (MARKED_SLOT):
	* dialog-msw.c:
	* dired-msw.c (mswindows_ls_sort_fcn):
	* dired-msw.c (mswindows_get_files):
	* dired-msw.c (mswindows_format_file):
	* doprnt.c (parse_doprnt_spec):
	* dumper.c:
	* dumper.c (struct):
	* dumper.c (dump_add_root_block):
	* dumper.c (dump_add_root_struct_ptr):
	* dumper.c (dump_add_root_lisp_object):
	* dumper.c (pdump_struct_list_elt):
	* dumper.c (pdump_get_entry_list):
	* dumper.c (pdump_backtrace):
	* dumper.c (pdump_bump_depth):
	* dumper.c (pdump_register_sub):
	* dumper.c (pdump_register_object):
	* dumper.c (pdump_register_struct_contents):
	* dumper.c (pdump_register_struct):
	* dumper.c (pdump_store_new_pointer_offsets):
	* dumper.c (pdump_dump_data):
	* dumper.c (pdump_reloc_one):
	* dumper.c (pdump_allocate_offset):
	* dumper.c (pdump_scan_by_alignment):
	* dumper.c (pdump_dump_root_blocks):
	* dumper.c (pdump_dump_rtables):
	* dumper.c (pdump_dump_root_lisp_objects):
	* dumper.c (pdump):
	* dumper.c (pdump_load_finish):
	* dumper.c (pdump_file_get):
	* dumper.c (pdump_resource_get):
	* dumper.c (pdump_load):
	* editfns.c (save_excursion_restore):
	* editfns.c (user_login_name):
	* editfns.c (save_restriction_restore):
	* elhash.c:
	* elhash.c (htentry):
	* elhash.c (struct Lisp_Hash_Table):
	* elhash.c (HTENTRY_CLEAR_P):
	* elhash.c (LINEAR_PROBING_LOOP):
	* elhash.c (check_hash_table_invariants):
	* elhash.c (mark_hash_table):
	* elhash.c (hash_table_equal):
	* elhash.c (print_hash_table_data):
	* elhash.c (free_hentries):
	* elhash.c (make_general_lisp_hash_table):
	* elhash.c (decode_hash_table_weakness):
	* elhash.c (decode_hash_table_test):
	* elhash.c (Fcopy_hash_table):
	* elhash.c (resize_hash_table):
	* elhash.c (pdump_reorganize_hash_table):
	* elhash.c (find_htentry):
	* elhash.c (Fgethash):
	* elhash.c (Fputhash):
	* elhash.c (remhash_1):
	* elhash.c (Fremhash):
	* elhash.c (Fclrhash):
	* elhash.c (copy_compress_hentries):
	* elhash.c (elisp_maphash_unsafe):
	* elhash.c (finish_marking_weak_hash_tables):
	* elhash.c (prune_weak_hash_tables):
	* elhash.h:
	* emacs.c:
	* emacs.c (main_1):
	* emacs.c (main):
	* emacs.c (shut_down_emacs):
	* emodules.h (dump_add_root_lisp_object):
	* eval.c:
	* eval.c (unwind_to_catch):
	* eval.c (maybe_signal_error_1):
	* eval.c (maybe_signal_continuable_error_1):
	* eval.c (maybe_signal_error):
	* eval.c (maybe_signal_continuable_error):
	* eval.c (maybe_signal_error_2):
	* eval.c (maybe_signal_continuable_error_2):
	* eval.c (maybe_signal_ferror):
	* eval.c (maybe_signal_continuable_ferror):
	* eval.c (maybe_signal_ferror_with_frob):
	* eval.c (maybe_signal_continuable_ferror_with_frob):
	* eval.c (maybe_syntax_error):
	* eval.c (maybe_sferror):
	* eval.c (maybe_invalid_argument):
	* eval.c (maybe_invalid_constant):
	* eval.c (maybe_invalid_operation):
	* eval.c (maybe_invalid_change):
	* eval.c (maybe_invalid_state):
	* eval.c (Feval):
	* eval.c (call_trapping_problems):
	* eval.c (call_with_suspended_errors):
	* eval.c (warn_when_safe_lispobj):
	* eval.c (warn_when_safe):
	* eval.c (vars_of_eval):
	* event-Xt.c:
	* event-Xt.c (maybe_define_x_key_as_self_inserting_character):
	* event-Xt.c (x_to_emacs_keysym):
	* event-Xt.c (x_event_to_emacs_event):
	* event-Xt.c (emacs_Xt_enqueue_focus_event):
	* event-Xt.c (emacs_Xt_format_magic_event):
	* event-Xt.c (emacs_Xt_compare_magic_event):
	* event-Xt.c (emacs_Xt_hash_magic_event):
	* event-Xt.c (emacs_Xt_handle_magic_event):
	* event-Xt.c (Xt_timeout_to_emacs_event):
	* event-Xt.c (Xt_process_to_emacs_event):
	* event-Xt.c (signal_special_Xt_user_event):
	* event-Xt.c (emacs_Xt_next_event):
	* event-Xt.c (emacs_Xt_event_handler):
	* event-Xt.c (emacs_Xt_drain_queue):
	* event-Xt.c (emacs_Xt_event_pending_p):
	* event-Xt.c (check_if_pending_expose_event):
	* event-Xt.c (reinit_vars_of_event_Xt):
	* event-Xt.c (vars_of_event_Xt):
	* event-gtk.c:
	* event-gtk.c (IS_MODIFIER_KEY):
	* event-gtk.c (emacs_gtk_format_magic_event):
	* event-gtk.c (emacs_gtk_compare_magic_event):
	* event-gtk.c (emacs_gtk_hash_magic_event):
	* event-gtk.c (emacs_gtk_handle_magic_event):
	* event-gtk.c (gtk_to_emacs_keysym):
	* event-gtk.c (gtk_timeout_to_emacs_event):
	* event-gtk.c (gtk_process_to_emacs_event):
	* event-gtk.c (dragndrop_data_received):
	* event-gtk.c (signal_special_gtk_user_event):
	* event-gtk.c (emacs_gtk_next_event):
	* event-gtk.c (gtk_event_to_emacs_event):
	* event-gtk.c (generic_event_handler):
	* event-gtk.c (emacs_shell_event_handler):
	* event-gtk.c (emacs_gtk_drain_queue):
	* event-gtk.c (emacs_gtk_event_pending_p):
	* event-gtk.c (reinit_vars_of_event_gtk):
	* event-gtk.c (vars_of_event_gtk):
	* event-msw.c:
	* event-msw.c (struct winsock_stream):
	* event-msw.c (winsock_reader):
	* event-msw.c (winsock_writer):
	* event-msw.c (mswindows_enqueue_dispatch_event):
	* event-msw.c (mswindows_enqueue_misc_user_event):
	* event-msw.c (mswindows_enqueue_magic_event):
	* event-msw.c (mswindows_enqueue_process_event):
	* event-msw.c (mswindows_enqueue_mouse_button_event):
	* event-msw.c (mswindows_enqueue_keypress_event):
	* event-msw.c (mswindows_dequeue_dispatch_event):
	* event-msw.c (emacs_mswindows_drain_queue):
	* event-msw.c (mswindows_need_event_in_modal_loop):
	* event-msw.c (mswindows_need_event):
	* event-msw.c (mswindows_wm_timer_callback):
	* event-msw.c (dde_eval_string):
	* event-msw.c (Fdde_alloc_advise_item):
	* event-msw.c (mswindows_dde_callback):
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (remove_timeout_mapper):
	* event-msw.c (emacs_mswindows_remove_timeout):
	* event-msw.c (emacs_mswindows_event_pending_p):
	* event-msw.c (emacs_mswindows_format_magic_event):
	* event-msw.c (emacs_mswindows_compare_magic_event):
	* event-msw.c (emacs_mswindows_hash_magic_event):
	* event-msw.c (emacs_mswindows_handle_magic_event):
	* event-msw.c (emacs_mswindows_select_console):
	* event-msw.c (emacs_mswindows_unselect_console):
	* event-msw.c (reinit_vars_of_event_mswindows):
	* event-msw.c (vars_of_event_mswindows):
	* event-stream.c:
	* event-stream.c (mark_command_builder):
	* event-stream.c (reset_command_builder_event_chain):
	* event-stream.c (allocate_command_builder):
	* event-stream.c (copy_command_builder):
	* event-stream.c (command_builder_append_event):
	* event-stream.c (event_stream_event_pending_p):
	* event-stream.c (event_stream_force_event_pending):
	* event-stream.c (maybe_read_quit_event):
	* event-stream.c (event_stream_drain_queue):
	* event-stream.c (remove_quit_p_event):
	* event-stream.c (event_stream_quit_p):
	* event-stream.c (echo_key_event):
	* event-stream.c (maybe_kbd_translate):
	* event-stream.c (execute_help_form):
	* event-stream.c (event_stream_generate_wakeup):
	* event-stream.c (enqueue_dispatch_event):
	* event-stream.c (enqueue_magic_eval_event):
	* event-stream.c (Fenqueue_eval_event):
	* event-stream.c (enqueue_misc_user_event):
	* event-stream.c (enqueue_misc_user_event_pos):
	* event-stream.c (next_event_internal):
	* event-stream.c (Fnext_event):
	* event-stream.c (Faccept_process_output):
	* event-stream.c (execute_internal_event):
	* event-stream.c (munge_keymap_translate):
	* event-stream.c (command_builder_find_leaf_no_mule_processing):
	* event-stream.c (command_builder_find_leaf):
	* event-stream.c (lookup_command_event):
	* event-stream.c (is_scrollbar_event):
	* event-stream.c (execute_command_event):
	* event-stream.c (Fdispatch_event):
	* event-stream.c (Fread_key_sequence):
	* event-stream.c (dribble_out_event):
	* event-stream.c (vars_of_event_stream):
	* event-tty.c (tty_timeout_to_emacs_event):
	* event-tty.c (emacs_tty_next_event):
	* event-tty.c (emacs_tty_drain_queue):
	* event-tty.c (reinit_vars_of_event_tty):
	* event-unixoid.c:
	* event-unixoid.c (find_tty_or_stream_console_from_fd):
	* event-unixoid.c (read_event_from_tty_or_stream_desc):
	* event-unixoid.c (drain_tty_devices):
	* event-unixoid.c (poll_fds_for_input):
	* events.c:
	* events.c (deinitialize_event):
	* events.c (zero_event):
	* events.c (mark_event):
	* events.c (print_event_1):
	* events.c (print_event):
	* events.c (event_equal):
	* events.c (event_hash):
	* events.c (Fmake_event):
	* events.c (Fdeallocate_event):
	* events.c (Fcopy_event):
	* events.c (map_event_chain_remove):
	* events.c (character_to_event):
	* events.c (event_to_character):
	* events.c (Fevent_to_character):
	* events.c (format_event_object):
	* events.c (upshift_event):
	* events.c (downshift_event):
	* events.c (event_upshifted_p):
	* events.c (Fevent_live_p):
	* events.c (Fevent_type):
	* events.c (Fevent_timestamp):
	* events.c (CHECK_EVENT_TYPE):
	* events.c (CHECK_EVENT_TYPE2):
	* events.c (CHECK_EVENT_TYPE3):
	* events.c (Fevent_key):
	* events.c (Fevent_button):
	* events.c (Fevent_modifier_bits):
	* events.c (event_x_y_pixel_internal):
	* events.c (event_pixel_translation):
	* events.c (Fevent_process):
	* events.c (Fevent_function):
	* events.c (Fevent_object):
	* events.c (Fevent_properties):
	* events.c (syms_of_events):
	* events.c (vars_of_events):
	* events.h:
	* events.h (struct event_stream):
	* events.h (struct Lisp_Key_Data):
	* events.h (KEY_DATA_KEYSYM):
	* events.h (EVENT_KEY_KEYSYM):
	* events.h (struct Lisp_Button_Data):
	* events.h (EVENT_BUTTON_BUTTON):
	* events.h (struct Lisp_Motion_Data):
	* events.h (EVENT_MOTION_X):
	* events.h (struct Lisp_Process_Data):
	* events.h (EVENT_PROCESS_PROCESS):
	* events.h (struct Lisp_Timeout_Data):
	* events.h (EVENT_TIMEOUT_INTERVAL_ID):
	* events.h (struct Lisp_Eval_Data):
	* events.h (EVENT_EVAL_FUNCTION):
	* events.h (struct Lisp_Misc_User_Data):
	* events.h (EVENT_MISC_USER_FUNCTION):
	* events.h (struct Lisp_Magic_Eval_Data):
	* events.h (EVENT_MAGIC_EVAL_INTERNAL_FUNCTION):
	* events.h (struct Lisp_Magic_Data):
	* events.h (EVENT_MAGIC_UNDERLYING):
	* events.h (EVENT_MAGIC_GDK_EVENT):
	* events.h (struct Lisp_Event):
	* events.h (XEVENT_CHANNEL):
	* events.h (SET_EVENT_TIMESTAMP_ZERO):
	* events.h (SET_EVENT_CHANNEL):
	* events.h (SET_EVENT_NEXT):
	* events.h (XSET_EVENT_TYPE):
	* events.h (struct command_builder):
	* extents.c:
	* extents.c (gap_array_adjust_markers):
	* extents.c (gap_array_recompute_derived_values):
	* extents.c (gap_array_move_gap):
	* extents.c (gap_array_make_gap):
	* extents.c (gap_array_insert_els):
	* extents.c (gap_array_delete_els):
	* extents.c (gap_array_make_marker):
	* extents.c (gap_array_delete_marker):
	* extents.c (gap_array_move_marker):
	* extents.c (make_gap_array):
	* extents.c (free_gap_array):
	* extents.c (extent_list_num_els):
	* extents.c (extent_list_insert):
	* extents.c (mark_extent_auxiliary):
	* extents.c (allocate_extent_auxiliary):
	* extents.c (decode_extent_at_flag):
	* extents.c (verify_extent_mapper):
	* extents.c (symbol_to_glyph_layout):
	* extents.c (syms_of_extents):
	* faces.c:
	* file-coding.c:
	* file-coding.c (struct_detector_category_description =):
	* file-coding.c (detector_category_dynarr_description_1):
	* file-coding.c (struct_detector_description =):
	* file-coding.c (detector_dynarr_description_1):
	* file-coding.c (MARKED_SLOT):
	* file-coding.c (mark_coding_system):
	* file-coding.c (coding_system_extra_description_map):
	* file-coding.c (coding_system_description):
	* file-coding.c (allocate_coding_system):
	* file-coding.c (symbol_to_eol_type):
	* file-coding.c (Fcoding_system_aliasee):
	* file-coding.c (set_coding_stream_coding_system):
	* file-coding.c (struct convert_eol_coding_system):
	* file-coding.c (struct undecided_coding_system):
	* file-coding.c (undecided_mark_coding_stream):
	* file-coding.c (coding_category_symbol_to_id):
	* file-coding.c (struct gzip_coding_system):
	* file-coding.c (coding_system_type_create):
	* file-coding.h:
	* file-coding.h (struct Lisp_Coding_System):
	* file-coding.h (CODING_SYSTEM_SLOT_DECLARATION):
	* file-coding.h (coding_system_variant):
	* file-coding.h (struct coding_system_methods):
	* file-coding.h (DEFINE_CODING_SYSTEM_TYPE_WITH_DATA):
	* file-coding.h (INITIALIZE_CODING_SYSTEM_TYPE_WITH_DATA):
	* file-coding.h (struct coding_stream):
	* fileio.c (Fsubstitute_in_file_name):
	* floatfns.c:
	* fns.c:
	* fns.c (base64_encode_1):
	* frame-gtk.c:
	* frame-gtk.c (Fgtk_start_drag_internal):
	* frame-impl.h (struct frame):
	* frame-impl.h (MARKED_SLOT):
	* frame-msw.c:
	* frame-x.c:
	* frame-x.c (Fcde_start_drag_internal):
	* frame-x.c (Foffix_start_drag_internal):
	* frame.c:
	* frame.c (MARKED_SLOT):
	* frame.c (allocate_frame_core):
	* frame.c (delete_frame_internal):
	* frame.c (Fmouse_position_as_motion_event):
	* frameslots.h:
	* frameslots.h (MARKED_SLOT_ARRAY):
	* free-hook.c:
	* glyphs-msw.c (mswindows_widget_instantiate):
	* glyphs-x.c:
	* glyphs-x.c (convert_EImage_to_XImage):
	* glyphs.c:
	* glyphs.c (process_image_string_instantiator):
	* glyphs.c (mark_image_instance):
	* glyphs.c (allocate_image_instance):
	* glyphs.c (unmap_subwindow):
	* glyphs.c (map_subwindow):
	* glyphs.c (syms_of_glyphs):
	* glyphs.c (specifier_type_create_image):
	* glyphs.h:
	* glyphs.h (struct text_image_instance):
	* glyphs.h (struct Lisp_Image_Instance):
	* gmalloc.c:
	* gmalloc.c ("C"):
	* gpmevent.c (Freceive_gpm_event):
	* gpmevent.c (gpm_next_event_cb):
	* gpmevent.c (vars_of_gpmevent):
	* gtk-glue.c (gdk_event_to_emacs_event):
	* gtk-xemacs.c (gtk_xemacs_class_init):
	* gui-msw.c:
	* gui-msw.c (mswindows_handle_gui_wm_command):
	* gui-msw.c (mswindows_translate_menu_or_dialog_item):
	* gui-x.c:
	* gui-x.c (mark_popup_data):
	* gui-x.c (snarf_widget_value_mapper):
	* gui-x.c (gcpro_popup_callbacks):
	* gui-x.c (ungcpro_popup_callbacks):
	* gui-x.c (free_popup_widget_value_tree):
	* gui-x.c (popup_selection_callback):
	* gui-x.h:
	* gui-x.h (struct popup_data):
	* gui.c:
	* gui.c (allocate_gui_item):
	* gutter.c (decode_gutter_position):
	* hash.c (NULL_ENTRY):
	* indent.c (vmotion_1):
	* indent.c (vmotion_pixels):
	* input-method-motif.c (res):
	* input-method-xlib.c (IMInstantiateCallback):
	* input-method-xlib.c (XIM_init_device):
	* input-method-xlib.c (res):
	* intl-encap-win32.c:
	* intl-encap-win32.c (qxeSHGetDataFromIDList):
	* intl-win32.c:
	* intl-win32.c (mswindows_multibyte_cp_type):
	* intl-win32.c (struct mswindows_multibyte_coding_system):
	* keymap.c:
	* keymap.c (make_key_description):
	* keymap.c (keymap_store):
	* keymap.c (get_keyelt):
	* keymap.c (keymap_lookup_1):
	* keymap.c (define_key_parser):
	* keymap.c (key_desc_list_to_event):
	* keymap.c (event_matches_key_specifier_p):
	* keymap.c (meta_prefix_char_p):
	* keymap.c (ensure_meta_prefix_char_keymapp):
	* keymap.c (Fdefine_key):
	* keymap.c (struct raw_lookup_key_mapper_closure):
	* keymap.c (raw_lookup_key):
	* keymap.c (raw_lookup_key_mapper):
	* keymap.c (lookup_keys):
	* keymap.c (lookup_events):
	* keymap.c (Flookup_key):
	* keymap.c (struct map_keymap_unsorted_closure):
	* keymap.c (map_keymap_unsorted_mapper):
	* keymap.c (map_keymap_sorted):
	* keymap.c (map_keymap_mapper):
	* keymap.c (map_keymap):
	* keymap.c (accessible_keymaps_mapper_1):
	* keymap.c (Faccessible_keymaps):
	* keymap.c (Fsingle_key_description):
	* keymap.c (raw_keys_to_keys):
	* keymap.c (format_raw_keys):
	* keymap.c (where_is_recursive_mapper):
	* keymap.c (where_is_internal):
	* keymap.c (describe_map_mapper_shadow_search):
	* keymap.c (keymap_lookup_inherited_mapper):
	* keymap.c (describe_map_mapper):
	* keymap.h (event_matches_key_specifier_p):
	* lisp.h:
	* lisp.h (this):
	* lisp.h (RETURN_NOT_REACHED):
	* lisp.h (struct Lisp_Vector):
	* lisp.h (struct Lisp_Bit_Vector):
	* lisp.h (UNGCPRO_1):
	* lisp.h (NUNGCPRO):
	* lisp.h (NNUNGCPRO):
	* lisp.h (DECLARE_INLINE_HEADER):
	* lrecord.h:
	* lrecord.h (struct lrecord_header):
	* lrecord.h (struct lcrecord_header):
	* lrecord.h (lrecord_type):
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (RECORD_DUMPABLE):
	* lrecord.h (memory_description_type):
	* lrecord.h (data_description_entry_flags):
	* lrecord.h (struct memory_description):
	* lrecord.h (struct sized_memory_description):
	* lrecord.h (XD_INDIRECT):
	* lrecord.h (XD_IS_INDIRECT):
	* lrecord.h (XD_DYNARR_DESC):
	* lrecord.h (DEFINE_BASIC_LRECORD_IMPLEMENTATION):
	* lrecord.h (MAKE_LRECORD_IMPLEMENTATION):
	* lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION):
	* lrecord.h (alloc_lcrecord_type):
	* lstream.c:
	* lstream.c (Lstream_new):
	* lstream.c (lisp_buffer_marker):
	* lstream.h:
	* lstream.h (lstream_implementation):
	* lstream.h (DEFINE_LSTREAM_IMPLEMENTATION):
	* lstream.h (DEFINE_LSTREAM_IMPLEMENTATION_WITH_DATA):
	* marker.c:
	* marker.c (copy_marker_1):
	* mem-limits.h:
	* menubar-gtk.c:
	* menubar-gtk.c (gtk_popup_menu):
	* menubar-msw.c:
	* menubar-msw.c (mswindows_popup_menu):
	* menubar-x.c (make_dummy_xbutton_event):
	* menubar-x.c (command_builder_operate_menu_accelerator):
	* menubar-x.c (menu_accelerator_safe_compare):
	* menubar-x.c (menu_accelerator_safe_mod_compare):
	* mule-charset.c:
	* mule-charset.c (make_charset):
	* mule-charset.c (Fcharset_property):
	* mule-coding.c:
	* mule-coding.c (ccs_description_1):
	* mule-coding.c (ccs_description =):
	* mule-coding.c (ccsd_description_1):
	* mule-coding.c (ccsd_description =):
	* nt.c (getpwnam):
	* nt.c (init_mswindows_environment):
	* nt.c (get_cached_volume_information):
	* nt.c (mswindows_is_executable):
	* nt.c (read_unc_volume):
	* nt.c (mswindows_access):
	* nt.c (mswindows_link):
	* nt.c (mswindows_fstat):
	* nt.c (mswindows_stat):
	* nt.c (mswindows_executable_type):
	* nt.c (Fmswindows_short_file_name):
	* nt.c (Fmswindows_long_file_name):
	* objects-impl.h (struct Lisp_Color_Instance):
	* objects-impl.h (struct Lisp_Font_Instance):
	* objects-tty.c:
	* objects-x.c (allocate_nearest_color):
	* objects.c:
	* objects.c (Fmake_color_instance):
	* objects.c (Fmake_font_instance):
	* objects.c (font_instantiate):
	* opaque.c:
	* opaque.c (make_opaque):
	* opaque.c (make_opaque_ptr):
	* opaque.c (reinit_opaque_early):
	* opaque.c (init_opaque_once_early):
	* print.c:
	* print.c (printing_badness):
	* print.c (printing_major_badness):
	* print.c (print_internal):
	* print.c (debug_p4):
	* print.c (dp):
	* print.c (debug_backtrace):
	* process-nt.c (nt_create_process):
	* process-nt.c (get_internet_address):
	* process-unix.c:
	* process-unix.c (struct unix_process_data):
	* process-unix.c (get_internet_address):
	* process-unix.c (unix_alloc_process_data):
	* process-unix.c (unix_create_process):
	* process-unix.c (try_to_initialize_subtty):
	* process-unix.c (unix_kill_child_process):
	* process-unix.c (process_type_create_unix):
	* process.c:
	* process.c (mark_process):
	* process.c (MARKED_SLOT):
	* process.c (make_process_internal):
	* process.c (Fprocess_tty_name):
	* process.c (decode_signal):
	* process.h:
	* procimpl.h:
	* procimpl.h (struct process_methods):
	* procimpl.h (struct Lisp_Process):
	* rangetab.c:
	* realpath.c (readlink_and_correct_case):
	* redisplay-x.c (x_window_output_end):
	* redisplay-x.c (x_redraw_exposed_area):
	* redisplay-x.c (x_clear_frame):
	* redisplay.c:
	* redisplay.h:
	* redisplay.h (struct rune_dglyph):
	* redisplay.h (struct rune):
	* scrollbar.c:
	* scrollbar.c (create_scrollbar_instance):
	* specifier.c:
	* specifier.c (specifier_empty_extra_description_1):
	* specifier.c (make_specifier_internal):
	* specifier.c (decode_locale_type):
	* specifier.c (decode_how_to_add_specification):
	* specifier.h:
	* specifier.h (struct specifier_methods):
	* specifier.h (DEFINE_SPECIFIER_TYPE_WITH_DATA):
	* specifier.h (INITIALIZE_SPECIFIER_TYPE_WITH_DATA):
	* symbols.c:
	* symbols.c (Fsetplist):
	* symbols.c (default_value):
	* symbols.c (decode_magic_handler_type):
	* symbols.c (handler_type_from_function_symbol):
	* symbols.c (Fdefvaralias):
	* symbols.c (init_symbols_once_early):
	* symbols.c (reinit_symbols_early):
	* symsinit.h:
	* sysdep.c (sys_subshell):
	* sysdep.c (tty_init_sys_modes_on_device):
	* syswindows.h:
	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	* text.c (reinit_eistring_early):
	* text.c (init_eistring_once_early):
	* text.c (reinit_vars_of_text):
	* text.h:
	* text.h (INC_IBYTEPTR_FMT):
	* text.h (DEC_IBYTEPTR_FMT):
	* toolbar.c:
	* toolbar.c (decode_toolbar_position):
	* tooltalk.c:
	* ui-gtk.c:
	* unexnt.c:
	* unexnt.c (_start):
	* unexnt.c (unexec):
	* unexnt.c (get_section_info):
	* unicode.c:
	* unicode.c (vars_of_unicode):
	* window.c:
	* window.c (allocate_window):
	* window.c (new_window_mirror):
	* window.c (update_mirror_internal):
	* winslots.h:

2003-01-08  Andy Piper  <andy@xemacs.org>

	* unexcw.c (copy_executable_and_dump_data_section): Set the stack
	reserve size during unexec().

2002-12-17  Daiki Ueno  <daiki@xemacs.org>

	* process-unix.c (unix_create_process): Set pipe write descriptor
	non-blocking.

2003-01-04  Steve Youngs  <youngs@xemacs.org>

	* XEmacs 21.5.10 "burdock" is released.

2002-12-15  Ben Wing  <ben@xemacs.org>

	* ChangeLog: Combine all ChangeLog files.
	* ChangeLog.1, ChangeLog.2: Deleted.

	* window.c (Fset_window_point): Correct to FSF behavior.  This
	fixes some bugs in GNUS reported by Jeff Miller.

2002-12-14  Ben Wing  <ben@xemacs.org>

	* frame.c (enter_redisplay_critical_section):
	* frame.c (exit_redisplay_critical_section):
	Inhibit GC during critical sections.

2002-12-12  Andy Piper  <andy@xemacs.org>

	* sheap.c (report_sheap_usage): fixup calculation.

2002-12-03  John Paul Wallington  <jpw@shootybangbang.com>

	* alloc.c (garbage_collection_messages): New variable.
	(vars_of_alloc): Declare and initialise it.
	(garbage_collect_1): Respect it.

2002-12-02  Mike Sperber <mike@xemacs.org>

	* The Great Window Configuration rewrite: Re-implement window
	configuration functionality in Emacs Lisp.

	* window.h (Fcurrent_window_configuration): Don't export anymore.
	(Qcurrent_window_configuration): Declare.
	(Qset_window_configuration): Declare.
	* event-stream.c (execute_help_form):
	* bytecode.c (execute_rare_opcode): Call out to Lisp to save
	window excursion.
	* window.c (Qcurrent_window_configuration): Declare.
	(Qwindow_configurationp):
	(Vwindow_configuration_free_list):
	(Qset_window_configuration):
	(Qtemp_buffer_show_hook):
	(struct saved_window):
	(struct window_config):
	(SAVED_WINDOW_N):
	(XWINDOW_CONFIGURATION):
	(wrap_window_configuration):
	(WINDOW_CONFIGURATIONP):
	(CHECK_WINDOW_CONFIGURATION):
	(mark_window_config):
	(sizeof_window_config_for_n_windows):
	(sizeof_window_config):
	(print_window_config):
	(saved_window_equal):
	(window_config_equal):
	(Fwindow_configuration_p):
	(mark_windows_in_use_closure):
	(mark_windows_in_use):
	(free_window_configuration):
	(Fset_window_configuration):
	(count_windows):
	(saved_window_index):
	(save_window_save):
	(Fcurrent_window_configuration):
	(Fsave_window_excursion): Remove.
	(mark_window_as_deleted): Rectify comment about
	`set-window-configuration'.
	(Fset_window_buffer): Reinstate code not activated because of old
	implementation of window configurations.
	(temp_output_buffer_show): Don't run `temp-buffer-show-hook'
	anymore---this wasn't supposed to happen anyway according to the
	documentation of `temp-buffer-show-function'.
	(reinit_vars_of_window): Don't do the window configuration stuff
	no more
	(vars_of_window): Don't set up `temp-buffer-show-hook' any more.

2002-12-02  Greg Allen  <greg_allen@westlb-systems.co.uk>

	* database.c: Fix open_database. Berkeley DB API has changed in
	4.1. see: http://www.sleepycat.com/docs/ref/upgrade.4.1/fop.html

2002-11-25  Mike Sperber <mike@xemacs.org>

	* frame.c (frame_conversion_internal): Convert pixel_to_char
	argument to an enum; allow additional option
	CHAR_TO_DISPLAYABLE_PIXEL.
	* frame.c (Fset_frame_pixel_height): Make `set-frame-pixel-height'
	conform to `frame-pixel-height'.
	(Fset_frame_displayable_pixel_height): New function, equivalent to
	old `set-frame-pixel-height'.
	(Fset_frame_width): Make `set-frame-pixel-width conform to
	`frame-pixel-width'.
	(Fset_frame_displayable_pixel_width): New function, equivalent to
	old `set-frame-pixel-width'.
	(Fset_frame_pixel_size): Make `set-frame-pixel-size conform to
	`frame-pixel-height' and `frame-pixel-width'.
	(Fset_frame_displayable_pixel_size): New function, equivalent to
	old `set-frame-size'.

2002-11-30  Ben Wing  <ben@xemacs.org>

	* eval.c:
	* eval.c (signal_call_debugger):
	Fix up C debugger entrance -- first output the error message, then
	stack trace, then exiting message, then force debugger.

	* frame-msw.c (mswindows_init_frame_1): Use EQ not EQUAL to avoid
	QUIT tripping.

	* toolbar-msw.c (mswindows_clear_toolbar): Indentation fixes.

2002-11-27  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (garbage_collect_1):
	Better redisplay-related assert.

	* elhash.c (xhash_table): Comment change.

	* eval.c:
	* eval.c (signal_call_debugger):
	* eval.c (throw_or_bomb_out):
	* eval.c (check_proper_critical_section_gc_protection):
	* eval.c (Fsignal):
	* eval.c (Feval):
	* eval.c (Ffuncall):
	* eval.c (flagged_a_squirmer):
	* eval.c (call_trapping_problems):
	* eval.c (warning_will_be_discarded):
	* eval.c (warn_when_safe_lispobj):
	* eval.c (warn_when_safe):
	* eval.c (vars_of_eval):
	Don't generate large warning strings (e.g. backtraces) when they will
	be discarded.

	Implement debug-on-error as documented -- it will enter the
	debugger and crash when an uncaught signal happens noninteractively
	and we are --debug.

	Better redisplay-related asserts.

	* frame-msw.c (mswindows_init_frame_1):
	* frame.c (enter_redisplay_critical_section):
	* lisp.h:
	* redisplay.c (redisplay_frame):
	* scrollbar-gtk.c (gtk_update_frame_scrollbars):
	* scrollbar-x.c (x_update_frame_scrollbars):
	* signal.c (check_quit):
	* sysdep.c:
	* sysdep.c (qxe_interruptible_open):

	Fix up documentation related to QUIT (which CANNOT garbage-collect
	under any circumstances), and to redisplay critical sections.

	* lread.c:
	* lread.c (Fload_internal):
	* lread.c (PRINT_LOADING_MESSAGE_1):
	* lread.c (locate_file_open_or_access_file):
	* lread.c (locate_file_in_directory_mapper):
	* lread.c (vars_of_lread):
	Add load-ignore-out-of-date-elc-files,
	load-always-display-messages, load-show-full-path-in-messages for
	more robust package compilation and debugging.

	* profile.c:
	* profile.c (create_call_count_profile_table):
	* profile.c (profile_increase_call_count):
	* profile.c (Fstart_profiling):
	* profile.c (Fclear_profiling_info):
	* profile.c (get_profiling_info_timing_maphash):
	* profile.c (Fget_profiling_info):
	* profile.c (set_profiling_info_timing_maphash):
	* profile.c (Fset_profiling_info):
	* profile.c (Fprofiling_active_p):
	* profile.c (syms_of_profile):
	* profile.c (vars_of_profile):
	Overhaul profile code.  Change format to include call count and be
	extensible for further info.  Remove call-count-profile-table.
	Add set-profiling-info.  See related profile.el changes (which
	SHOULD ABSOLUTELY be in the core!  Get rid of xemacs-devel and
	xemacs-base packages *yesterday*!).

2002-11-22  Ben Wing  <ben@xemacs.org>

	* fileio.c: Fix crashes due to incorrectly ported code from
	FSF.

	* realpath.c: Don't return EIO when a filename is incorrect,
	since the I/O error gets passed all the way up.  Clean up this
	file and avoid using macros as a poor-man's dispatch mechanism --
	it just makes it impossible to follow the code.

2002-11-17  Ben Wing  <ben@xemacs.org>

	* s/cygwin32.h:
	* s/cygwin32.h (TEXT_START):
	-fvtable-thunks is obsolete in GCC 3 and generates warnings.

	* s/mingw32.h:
	* s/windowsnt.h:
	Comment fixes.

2002-11-17  Ben Wing  <ben@xemacs.org>

	* emodules.h:
	Fix warnings from redefining symbols.

	* eval.c:
	* eval.c (call_with_condition_handler):
	* eval.c (run_post_gc_hook):
	* eval.c (Ffuncall):
	Fix C++ errors -- no automatic casting between function pointers
	and void *, function declarations inside of functions not allowed.

	* event-Xt.c (emacs_Xt_enqueue_focus_event):
	Warning fixes.

	* fileio.c (Ffile_truename):
	Warning fixes.
	Use LOCAL_TO_WIN32_FILE_FORMAT rather than duplicating it.

	* glyphs-x.c:
	* glyphs-x.c (x_map_subwindow):
	Fix style.

	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.h:
	* intl-encap-win32.c:
	* intl-encap-win32.c (qxeRegConnectRegistry):
	* syswindows.h (RegConnectRegistry):
	DdeCreateStringHandle needs to be manual due to new Cygwin bug.

	* intl-win32.c:
	* intl-win32.c (wcscmp):
	* intl-win32.c (wcslen):
	wcslen/wcscmp don't seem to exist under G++ 3, Cygwin.

	* lisp.h:
	* lisp-union.h:
	* lisp-disunion.h:
	* process-unix.c (unix_send_process):
	Ugh, C needs volatile and C++ must not have volatile.  Remove
	previous volatile hacks, which don't seem to be working any more.

	* sheap.c (STATIC_HEAP_SLOP):
	Try to get a working Cygwin build with old unexec.

	* sheap.c (more_static_core):
	No NL's in literals allowed.

	* symbols.c (Fset):
	Fix C++ errors.

	* syswindows.h:
	* syswindows.h (struct):
	* syswindows.h (tagNMDATETIMEFORMATW):
	* syswindows.h (tagNMTTDISPIFNOA):
	* syswindows.h (tagNMTTDISPINFOW):
	Fix Cygwin complaints now that some missing structs have been added.

2002-10-14  Jerry James  <james@xemacs.org>

	* alloc.c: Unconditionally use LISP_FLOAT_TYPE code.
	* bytecode.c: Ditto.
	* data.c: Ditto.
	* ecrt0.c: Ditto.
	* emacs.c: Ditto.
	* event-stream.c: Ditto.
	* floatfns.c: Ditto.
	* lisp.h: Ditto.
	* lread.c: Ditto.
	* print.c: Ditto.
	* config.h.in: Remove LISP_FLOAT_TYPE entry.
	* s/windowsnt.h: Remove LISP_FLOAT_TYPE definition.

2002-10-10  Stephen J. Turnbull  <stephen@xemacs.org>

	* emacs.c (shut_down_emacs): Improve crash message.

2002-10-17  Raymond Toy  <toy@rtp.ericsson.se>

	* nas.c: Update for NAS 1.6 and later, from Jon Trulson.  Was
	using the NAS private array SoundFileInfo that no longer exists in
	NAS 1.6 and later.  Preserve backward compatibility with NAS 1.5a
	and earlier.  This is broken for some versions between 1.5a and
	1.5f.

2002-10-20  Stephen Turnbull  <steve@tleepslib1>

	* ExternalClient.c (externalClientRealize): Suppress "unused" warning.

2002-10-19  Stephen Turnbull  <stephen@xemacs.org>

	* extw-Xt.c (isMine): Suppress signed-unsigned compare warning.

2002-10-19  Stephen Turnbull  <stephen@xemacs.org>

	* mule-canna.c (Fcanna_touroku_string):
	(Fcanna_change_mode):
	(Fcanna_do_function):
	Fix "unused variable" warnings.

2002-10-18  Stephen Turnbull  <stephen@xemacs.org>

	* event-Xt.c (enqueue_focus_event): Prototype it.

2002-10-24  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (layout_query_geometry): add in fiddle
	factor. Include border text in width layout calculation.
	(layout_layout): use BORDER_FIDDLE_FACTOR instead of 10.

2002-10-24  John Paul Wallington  <jpw@shootybangbang.com>

	* fns.c (Frequire): Add optional `noerror' argument.

2002-10-24  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (layout_query_geometry): only resize dynamically
	if static sizes haven't been set.

2002-09-21  Stephen J. Turnbull  <stephen@xemacs.org>

	* extents.c (Fset_extent_property): Document `syntax-table'
	property.

2002-08-20  Ben Sigelman  <bhsigelm@cs.brown.edu>

	* event-Xt.c (drain_X_queue): loop over while(XEventsQueued())
	instead of while(XtAppPending()&XtIMXEvent).  Upon a gdm logout,
	the xemacs process did not exit, but looped infinitely here.  This
	fixes that problem.

2002-10-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* regex.c (re_match_2_internal): Declare num_nonshy_regs in
	enclosing scope.

2002-09-09  Stephen J. Turnbull  <stephen@xemacs.org>

	* search.c (clear_unused_search_regs): New static function.
	(search_buffer):
	(simple_search):
	(boyer_moore):
	Use it.  Fixes "stale match data" bug reported by Martin Stjernholm.
	Minor clarifications in comments.

	* regex.c (re_match_2_internal): Ensure no stale submatches.

2002-09-26  Golubev I. N.  <gin@mo.msk.ru>

	* frame-x.c (x_delete_frame): do not call XtDisplay on a destroyed
	widget.

2002-09-22  Mike Sperber <mike@xemacs.org>

	* specifier.c (specifier_add_spec): Don't do anything if NILP
	(inst_list)---otherwise, assertions in the rest of the specifier
	code get violated.

2002-09-20  Mike Sperber <mike@xemacs.org>

	(This partially gets back my patch from 2002-07-20 without the
	bug.)
	* process-unix.c (child_setup): Remove Ben's comment noting
	confusion over the file descriptors >= 3: close_process_descs()
	doesn't close all.  Fix fd range to go up to MAXDESC-1 instead
	of 64.
	(unix_create_process): Call begin_dont_check_for_quit to inhibit
	unwanted interaction (and thus breaking of X event synchronicity)
	in the child.

2002-08-08  Jerry James  <james@xemacs.org>

	* Makefile.in.in: ldap.o and postgresql.o have moved.
	* alloc.c (unstaticpro_nodump_1): New function.
	* alloc.c (unstaticpro_nodump): Ditto.
	* depend: Regenerate.
	* eldap.c: Move to modules/ldap.
	* eldap.h: Ditto.
	* emacs.c (main_1): Call LDAP and PostgreSQL initialization
	functions only if they are not modules.
	* emodules.c: Define EMODULES_DO_NOT_REDEFINE to skip changes to
	core functions and macros made in emodules.h.
	* emodules.c (unloading_module): New variable to flag when a
	module unload is in progress.
	* emodules.c (emodules_list): New member unload, to hold a
	function for doing module cleanup at unload time.
	* emodules.c (Fload_module): Note that users should not call this
	function directly.
	* emodules.c (Funload_module): Ditto.  Compile it.  Call the
	module's unload function if it has one.
	* emodules.c (emodules_load): Stop working around formerly broken
	build_string() declaration.  Update load-history for module
	unloading.
	* emodules.c (syms_of_module): Add new symbols.
	* emodules.c (vars_of_module): Add unloading-module.  Make
	Vmodule_extensions use the new format.
	* emodules.h: Block paths from module code into the dump_add*
	functions.
	* emodules.h (EMODULES_VERSION): New version.
	* fileio.c: Add Qfile_name_nondirectory for use in emodules.c.
	* inline.c: eldap.h and postgresql.h have moved.
	* lisp.h: Add unstaticpro_nodump, unloading_module, Qmodule, and
	Qfile_name_sans_extension declarations.
	* lisp.h (Dynarr_delete_object): New macro.
	* lrecord.h (UNDEF_LRECORD_IMPLEMENTATION): New macro.
	* lrecord.h (UNDEF_EXTERNAL_LRECORD_IMPLEMENTATION): New macro.
	* postgresql.c: Move to modules/postgresql.
	* postgresql.h: Ditto.
	* symbols.c (reject_constant_symbols): Allow it if we are
	unloading a module.
	* symbols.c (Fset): Allow unbinding constant value forward symbols
	if we are unloading a module.
	* symbols.c (defsubr): Update the load history for modules.
	* symbols.c (defsubr_macro): Ditto.
	* symbols.c (defvar_magic): Ditto.

2002-08-29  Jerry James  <james@xemacs.org>

	* eldap.c: Put #endif tokens in a comment.

	* eldap.c (Fldap_status):
	* eldap.c (syms_of_eldap):
	* eldap.h:
	Change to Fldap_live_p to match Lisp name.

2002-08-19  Andy Piper  <andy@xemacs.org>

	* fileio.c (Ffile_truename): on cygwin using win32 normalize to
	win32 format.

	* realpath.c (xrealpath): normalize drive spec also so that dir
	sep chars are not mixed on cygwin.

2002-09-01  Mike Alexander  <mta@arbortext.com>

	* event-msw.c (winsock_closer): Use closesocket, not CloseHandle
	to close a socket.

2002-08-31  Seiichi Ikiuo  <ikiuo@polyphony.co.jp>

	* file-coding.h (detection_result): fix DET_LOWEST.

	* mule-coding.c
	(big5_detector): Add member 'seen_euc_char'.
	(big5_detect): It was made not to become the trouble of EUC.
	(iso2022_detector): Add member 'longest_even_high_byte'.
	(iso2022_detect): Fix checking for even/odd_high_byte_group.
	The judgment of EUC is changed.

	* unicode.c: Add DETECTOR_CATEGORY utf_8_bom.
	(utf_8_detector): Add member byteno, first_byte and second_byte.
	(utf_8_detect): The judgment of UTF-8-BOM is added.

2002-08-30  Steve Youngs  <youngs@xemacs.org>

	* XEmacs 21.5.9 "brussels sprouts" is released.

2002-08-29  Jerry James  <james@xemacs.org>

	* lisp.h: structrures -> structures.

2002-08-21  Jerry James  <james@xemacs.org>

	* getloadavg.c: Substitute syssignal.h for signal.h.
	* malloc.c: Ditto.
	* unexhp9k3.c: Ditto.
	* syssignal.h: Put NSIG setting code for SVR4 here.
	* s/usg5-4.h: Don't include signal.h.  Remove NSIG setting code,
	since signal.h has not yet been included.

2002-08-16  Steve Youngs  <youngs@xemacs.org>

	* config.h.in (XEMACS_EXTRA_NAME): New.

	* emacs.c (vars_of_emacs): Use it.

2002-08-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* eval.c (do_autoload): GCPRO both arguments and a local Lisp_Object.

	* callint.c (Fcall_interactively):
	* eval.c (function_argcount):
	(Fmacroexpand_internal):
	(Fcommand_execute):
	(Feval):
	(Ffuncall):
	* keymap.c (get_keymap):
	* lisp.h (do_autoload):
	Add comment that do_autoload GCPROs both arguments.

2002-08-20  Stephen J. Turnbull  <stephen@xemacs.org>

	* extents.c (SOE_DEBUG): Warn not to use this until debugging
	functions are rewritten.

2001-08-13  Dmitry Astapov  <adept@umc.com.ua>

	* event-Xt.c (maybe_define_x_key_as_self_inserting_character):
	Don't bogusly reinitialize ascii_character property.

2002-08-13  David Bush  <David.Bush@intel.com>

	* device-msw.c: Correct initialization list for devmode_description
	Add dumpable flag to msprinter-settings for USE_KKCC
	* dialog-msw.c: Add dumpable flag to mswindows-dialog-id for USE_KKCC
	* event-msw.c (mswindows_enqueue_misc_user_event): With USE_KKCC
	use mutator macros to set event parameters
	* event-msw.c (mswindows_enqueue_magic_event): With USE_KKCC
	use mutator macros to set event parameters
	* event-msw.c (mswindows_enqueue_process_event): With USE_KKCC
	use mutator macros to set event parameters
	* event-msw.c (mswindows_enqueue_mouse_button_event): Reorder
	event setup so event type is set first to support USE_KKCC.
	For USE_KKCC use mutator macros to set event parameters
	* event-msw.c (mswindows_enqueue_keypress_event): With USE_KKCC
	use mutator macros to set event parameters
	* event-msw.c (mswindows_dequeue_dispatch_event): With USE_KKCC
	use accessor to get and mutator macros to set event parameters
	* event-msw.c (mswindows_cancel_dispatch_event): With USE_KKCC
	use accessor macros to get event parameters
	* event-msw.c (mswindows_wm_timer_callback): With USE_KKCC
	use mutator macros to set event parameters
	* event-msw.c (mswindows_dde_callback): With USE_KKCC
	use mutator macros to set event parameters
	* event-msw.c (mswindows_wnd_proc): With USE_KKCC
	use mutator macros to set event parameters
	* event-msw.c (emacs_mswindows_remove_timeout): With USE_KKCC
	use mutator macros to set event parameters
	* event-msw.c (emacs_mswindows_format_magic_event): With USE_KKCC
	use accessor macro to access magic event type
	* event-msw.c (emacs_mswindows_compare_magic_event): With USE_KKCC
	use accessor macro to access magic event type
	* event-msw.c (emacs_mswindows_hash_magic_event): With USE_KKCC
	use accessor macro to access magic event type
	* event-msw.c (emacs_mswindows_handle_magic_event): With USE_KKCC
	use accessor macro to access magic event type and event data
	* event-msw.c (emacs_mswindows_quit_p): With USE_KKCC use event
	accessor and mutator macros to get/set event parameters
	* gui-msw.c (mswindows_handle_gui_wm_command): For USE_KKCC
	use mutator macros to set event parameters.  Make the event
	data type match the event type.
	* menubar-msw.c (mswindows_popup_menu): With USE_KKCC use
	accessor macros to extract button position

2002-08-12  David Bush  <David.Bush@intel.com>

	* events.c: Use DEFINE_BASIC_LRECORD_IMPLEMENTATION instead of
	DEFINE_LRECORD_IMPLEMENTATION for the new event data objects to cause
	the objects to be flagged as basic.

2002-08-08  Jerry James  <james@xemacs.org>

	* s/linux.h: Turn ORDINARY_LINK on for Linux.

2002-08-02  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	Additions for USE_KKCC:
	* tooltalk.c: Add dumpable-flag to tooltalk_message and
	tooltalk_pattern.
	* ui-gtk.c: Add dumpable-flag to emacs_ffi and emacs_gtk_object.
	Add description for emacs_gtk_boxed.

2002-08-12  Mike Sperber <mike@xemacs.org>

	* event-Xt.c (x_to_emacs_keysym):
	(enqueue_focus_event): Properly initialize event type for USE_KKCC
	(due to suggestions from David Bush <David.Bush@intel.com>).

2002-08-06  Jerry James  <james@xemacs.org>

	* window.c (Fsplit_window): Count only half of the divider width
	against the left window when splitting horizontally.

2002-07-29  Jerry James  <james@xemacs.org>

	* lread.c (locate_file): Any nonnegative return value indicates
	success if MODE is nonnegative.

2002-08-03  Brian A Palmer  <bpalmer@rescomp.Stanford.EDU>

	* fns.c (Fsplit_string_by_char): Make 2nd arg SEPCHAR a required
	argument.

2002-08-03  Steve Youngs  <youngs@xemacs.org>

	* objects-gtk.c: Fix '--with-mule' '--with-gtk' builds.
	From Vaclav Barta <vbar@comp.cz>.

2002-08-02  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>

	* postgresql.c: Add dumpable-flag to pgconn and pgresult for
	USE_KKCC.

2002-07-31  Didier Verna  <didier@xemacs.org>

	* file-coding.c (make_coding_system_1): Add missing call to
	`xfree (newname)'.

	* fix memory leak introduced by
	2002-04-14  Ben Wing  <ben@xemacs.org>:
	alloc.c (Fmake_byte_code): don't xnew_array of size 0.
	(sweep_compiled_functions): define ADDITIONAL_FREE_compiled_function
	to free the args field when needed.

2002-07-31  David Bush  <David.Bush@intel.com>

	* eldap.c: Add the dumpable-flag to the USE_KKCC version of
	DEFINE_LRECORD_IMPLEMENTATION for "ldap"

2002-08-01  Mike Sperber <mike@xemacs.org>

	* event-stream.c:
	* event-Xt.c:
	* events.h:
	* events.c:
	* alloc.c: Fix various kkcc-related nits that show up in MULE and
	union-type builds.

2002-07-31  David Bush  <David.Bush@intel.com>

	* events.c (event_equal): Correct comparison in MS Windows
	conditional code to use event structure defined for -use-kkcc.

2002-07-29  Sean MacLennan <seanm@seanm.ca>

	* glyphs-x.c (x_locate_pixmap_file): Test path not to be 0, before
	using it.

2002-07-29  Jonathan Harris  <jonathan@xemacs.org>

	* s/win32-native.h: Define HAVE_WCHAR_H for native Win32 build.

2002-07-17  Marcus Crestani  <crestani@informatik.uni-tuebingen.de>
	    Markus Kaltenbach  <makalten@informatik.uni-tuebingen.de>
	    Mike Sperber <mike@xemacs.org>

	configure flag to turn these changes on: --use-kkcc

	First we added a dumpable flag to lrecord_implementation. It shows,
	if the object is dumpable and should be processed by the dumper.
	* lrecord.h (struct lrecord_implementation): added dumpable flag
	(MAKE_LRECORD_IMPLEMENTATION): fitted the different makro definitions
	to the new lrecord_implementation and their calls.

	Then we changed mark_object, that it no longer needs a mark method for
	those types that have pdump descritions.
	* alloc.c:
	(mark_object): If the object has a description, the new mark algorithm
	is called, and the object is marked according to its description.
	Otherwise it uses the mark method like before.

	These procedures mark objects according to their descriptions. They
	are modeled on the corresponding pdumper procedures.
	(mark_with_description):
	(get_indirect_count):
	(structure_size):
	(mark_struct_contents):
	These procedures still call mark_object, this is needed while there are
	Lisp_Objects without descriptions left.

	We added pdump descriptions for many Lisp_Objects:
	* extents.c: extent_auxiliary_description
	* database.c: database_description
	* gui.c: gui_item_description
	* scrollbar.c: scrollbar_instance_description
	* toolbar.c: toolbar_button_description
	* event-stream.c: command_builder_description
	* mule-charset.c: charset_description
	* device-msw.c: devmode_description
	* dialog-msw.c: mswindows_dialog_id_description
	* eldap.c: ldap_description
	* postgresql.c: pgconn_description
			pgresult_description
	* tooltalk.c: tooltalk_message_description
		      tooltalk_pattern_description
	* ui-gtk.c: emacs_ffi_description
		    emacs_gtk_object_description

	* events.c:
	* events.h:
	* event-stream.c:
	* event-Xt.c:
	* event-gtk.c:
	* event-tty.c:
	To write a pdump description for Lisp_Event, we converted every struct
	in the union event to a Lisp_Object. So we created nine new
	Lisp_Objects: Lisp_Key_Data, Lisp_Button_Data, Lisp_Motion_Data,
	Lisp_Process_Data, Lisp_Timeout_Data, Lisp_Eval_Data,
	Lisp_Misc_User_Data, Lisp_Magic_Data, Lisp_Magic_Eval_Data.
	We also wrote makro selectors and mutators for the fields of the new
	designed Lisp_Event and added everywhere these new abstractions.


	We implemented XD_UNION support in (mark_with_description), so
	we can describe exspecially console/device specific data with XD_UNION.
	To describe with XD_UNION, we added a field to these objects, which
	holds the variant type of the object. This field is initialized in
	the appendant constructor. The variant is an integer, it has also to
	be described in an description, if XD_UNION is used.

	XD_UNION is used in following descriptions:
	* console.c: console_description
	(get_console_variant): returns the variant
	(create_console): added variant initialization
	* console.h (console_variant): the different console types
	* console-impl.h (struct console): added enum console_variant contype

	* device.c: device_description
	(Fmake_device): added variant initialization
	* device-impl.h (struct device): added enum console_variant devtype

	* objects.c: image_instance_description
		     font_instance_description
	(Fmake_color_instance): added variant initialization
	(Fmake_font_instance): added variant initialization
	* objects-impl.h (struct Lisp_Color_Instance): added color_instance_type
	* objects-impl.h (struct Lisp_Font_Instance): added font_instance_type

	* process.c: process_description
	(make_process_internal): added variant initialization
	* process.h (process_variant): the different process types

2002-07-27  Steve Youngs  <youngs@xemacs.org>

	* XEmacs 21.5.8 "broccoli" is released.

2002-07-25  Steve Youngs  <youngs@xemacs.org>

	* process-unix.c (child_setup):
	(unix_create_process):
	Revert Mike's patch of 2002-07-20.

2002-07-20  Mike Sperber <mike@xemacs.org>

	* eval.c (run_post_gc_hook): Use more correct flags when running
	post-gc-hook.

2002-07-20  Mike Sperber <mike@xemacs.org>

	* process-unix.c (child_setup): Don't try to close file
	descriptors for chid process once again---it's already being done
	in close_process_descs.
	(unix_create_process): Call begin_dont_check_for_quit to inhibit
	unwanted interaction (and thus breaking of X event synchronicity)
	in the child.

2002-07-15  Jerry James  <james@xemacs.org>

	* lisp.h: Make Qdll_error visible globally.
	* symbols.c (check_sane_subr): Revert 2002-06-26 change.
	Check only if !initialized.
	* symbols.c (check_module_subr): Add parameter.  Duplicate
	check_sane_subr checks, but signal an error instead of asserting.
	* symbols.c (defsubr): Use check_module_subr parameter.
	* symbols.c (defsubr_macro): Ditto.

2002-07-09  Mike Sperber <mike@xemacs.org>

	* config.h.in: Add USE_KKCC variable to enable upcoming new GC
	algorithms.

2002-07-14  Mike Alexander  <mta@arbortext.com>

	* event-msw.c (mswindows_need_event): Don't wait for a new message
	if the queue is not empty.  Suggested by Paul Moore.

2002-07-08  Stephen J. Turnbull  <stephen@xemacs.org>

	* lisp.h: Declare Fcdr_safe to be callable from C.

2002-07-08  Hrvoje Niksic  <hniksic@xemacs.org>

	* eval.c (Ffunctionp): Return nil for autoloaded macros and
	keymaps.

2002-07-08  Daiki Ueno  <daiki@xemacs.org>

	* glyphs-x.c (x_unmap_subwindow): Deal with the substantial windows.
	(x_map_subwindow): Likewise.

2002-07-08  Mike Sperber <mike@xemacs.org>

	* text.h: Only include wchar.h if we have it; define wcslen
	prototype if we don't.

	* config.h.in: Add stub for HAVE_WCHAR_H.

	* sysdep.c (wcslen): Added definition for systems which don't have
	it.

2002-07-08  Mike Sperber <mike@xemacs.org>

	* process.c (Fstart_process_internal): Do error checking before we
	fork off the child, so the child can't muck with the state of the
	parent.

2002-07-08  Mike Sperber <mike@xemacs.org>

	* ralloc.c (init_ralloc): Allocate properly for pdump.

	* emacs.c (main_1): Revert init_ralloc patch in favor of an
	easier-to-understand solution.

2002-07-05  David Bush  <David.Bush@intel.com>

	* console-msw-impl.h (struct Lisp_Devmode): Lisp_Devmode is typedef'ed
	in console-msw.h, don't do it again with the structure definition

2002-06-26  Jerry James  <james@xemacs.org>

	* symbols.c (check_sane_subr): Let the symbol be bound if it is an
	autoload cookie.

2002-06-24  Andy Piper  <andy@xemacs.org>

	* toolbar-x.c (console_type_create_toolbar_x): declare
	x_clear_frame_toolbars.
	* toolbar-gtk.c (console_type_create_toolbar_gtk): ditto.
	* toolbar-common.h (common_clear_frame_toolbars): ditto.

	* toolbar-common.c (COMMON_OUTPUT_BUTTONS_LOOP): output button if
	whole toolbar was cleared.

	* toolbar-msw.c (mswindows_clear_frame_toolbars): new
	function. Split out from mswindows_output_frame_toolbars.
	(mswindows_output_frame_toolbars): move clear pieces to
	mswindows_output_frame_toolbars.

	* toolbar-common.c (common_clear_frame_toolbars): new function. Split
	out from gtk_output_frame_toolbars.
	(common_output_frame_toolbars): move clear pieces to
	gtk_clear_frame_toolbars.

	* console-impl.h (struct console_methods): add
	clear_frame_toolbars_method.

	* redisplay.c (redisplay_frame): call
	update_frame_toolbars_geometry and re-order update_frame_toolbars.

	* toolbar.h: declare update_frame_toolbars_geometry.

	* toolbar.c (update_frame_toolbars_geometry): new function. Split
	out from update_frame_toolbars.  Call clear_frame_toolbars.
	(update_frame_toolbars): only output, do not change geometry.

	* redisplay.c: add frame_layout_changed.

	* redisplay.h: add frame_layout_changed.
	(CLASS_RESET_CHANGED_FLAGS): set it.
	(GLOBAL_RESET_CHANGED_FLAGS): ditto.
	(CLASS_REDISPLAY_FLAGS_CHANGEDP): test it.
	(GLOBAL_REDISPLAY_FLAGS_CHANGEDP): ditto.

	* device-impl.h (struct device): add frame_layout_changed.
	(MARK_DEVICE_FRAME_LAYOUT_CHANGED): new.

	* frame-impl.h (struct frame): add frame_layout_changed.
	(MARK_FRAME_LAYOUT_CHANGED): new.

2002-07-02  Paul Moore  <gustav@morpheus.demon.co.uk>

	* console-msw.h:
	* device-msw.c:
	* device-msw.c (mswindows_init_dde):
	* device-msw.c (mswindows_delete_device):
	  Initialise extra DDE strings for remote execution, and change
	  DDE initialisation to send ADVISE and REQUEST notifications.

	* emacs.c (main_1):
	  Add symbols of event_mswindows.

	* event-msw.c:
	* event-msw.c (mswindows_dde_callback):
	* event-msw.c (reinit_vars_of_event_mswindows):
	* event-msw.c (vars_of_event_mswindows):
	* event-msw.c (syms_of_event_mswindows):
	  Add DDE support for remote execution.

2002-06-12  Andy Piper  <andy@xemacs.org>

	* glyphs.c (query_string_geometry): check the string.

	* glyphs-widget.c (widget_logical_unit_height): cope with nil
	widget names.

2002-06-12  Andy Piper  <andy@xemacs.org>

	* frame-msw.c (msprinter_init_frame_3): calculate the frame size
	for printing on accurately.

2002-06-09  Rick Rankin <rick_rankin@yahoo.com>

	* event-msw.c (mswindows_wnd_proc): Add a handler for the
	WM_ACTIVATE message. Make sure that the frame is visible if the
	window is visible. This seemss to fix the problem where XEmacs
	appears to freeze after switching desktops with certain virtual
	window managers.
	(debug_output_mswin_message): Added code to output message
	parameters for WM_WINDOWPOSCHANGED,
	WM_WINDOWPOSCHANGING, WM_MOVE, and WM_SIZE messages.

2002-07-05  Jonathan Harris  <jonathan@xemacs.org>

	* emacs.c (main_1): Conditionalise calls to
	syms_of_dired_mswindows() and vars_of_dired_mswindows() on
	WIN32_NATIVE instead of redundant HAVE_MSW_C_DIRED

2002-07-03  Mike Sperber <mike@xemacs.org>

	* emacs.c (main_1): We need to call init_ralloc twice for PDUMP,
	otherwice ralloc won't do anything for us.

2002-07-01  Mike Sperber <mike@xemacs.org>

	* process-unix.c (unix_send_process): Mark coding_outstream as
	non-open upon SIGPIPE.

	* event-stream.c (execute_internal_event): Reinstate code to
	deactivate a dead network connection that got lost during the
	stdout/stderr separation.

	* event-stream.c (Fnext_event): Reorder switch cases to something
	that makes sense.

2002-06-27  Olivier Galibert  <galibert@pobox.com>

	* input-method-motif.c: Fix the #includes.

2002-07-02  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.7 "broccoflower" is released.

2002-07-02  Stephen J. Turnbull  <stephen@xemacs.org>

	* frame-impl.h (struct frame): Make comment refer to new file.

2002-06-27  Mike Sperber <mike@xemacs.org>

	* eval.c (Ffuncall): Run `post-gc-hook' if GC just happened.

	* alloc.c (garbage_collect_1): Delay running `post-gc-hook' until later.

	* data.c (prune_weak_boxes): Rewrite for better readability.

2002-06-23  Martin Kï¿½bele  <martin@mkoebele.de>
	    Jens Mï¿½ller <jmueller@informatik.uni-tuebingen.de>
	    Mike Sperber <mike@xemacs.org>

	* lrecord.h (lrecord_type): add lrecord_type_ephemeron
	to lrecord_type enumeration.

	* lisp.h (XEPHEMERON):
	(XEPHEMERON_REF):
	(XEPHEMERON_NEXT):
	(XEPHEMERON_FINALIZER):
	(XSET_EPHEMERON_NEXT):
	(XSET_EPHEMERON_VALUE):
	(XSET_EPHEMERON_KEY):
	(wrap_ephemeron):
	(EPHEMERONP):
	(CHECK_EPHEMERON):
	(CONCHECK_EPHEMERON):
	(struct ephemeron): Add representation of ephemerons.

	* alloc.c (garbage_collect_1):
	(finish_marking_ephemerons):
	(prune_ephemerons): Call.

	* data.c:
	(finish_marking_ephemerons):
	(prune_ephemerons):
	(mark_ephemeron):
	(print_ephemeron):
	(ephemeron_equal)
	(ephemeron_hash)::
	(make_ephemeron):
	(Fmake_ephemeron):
	(Fephemeronp):
	(Fephemeron_ref):
	(syms_of_data):
	(vars_of_data): Add implementation of ephemerons

2002-06-28  Steve Youngs  <youngs@xemacs.org>

	* inline.c: Include device-impl.h, extents-impl.h, frame-impl.h,
	and objects-impl.h to pick up some error_check_* functions.
	Remove console.h, extents.h, frame.h and objects.h because the
	*-impl.h files include them.

2002-06-17  Jerry James  <james@xemacs.org>

	* sysdll.c: Remove RTLD_GLOBAL initialization.
	* sysdll.c (dll_open): Do not use RTLD_GLOBAL.

2002-06-24  Mike Sperber  <mike@xemacs.org>

	* search.c (skip_chars): Fix a crash if NILP(lim).

2002-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* unicode.c: More comment and string fiddling.

2002-06-23  Stephen J. Turnbull  <stephen@xemacs.org>

	* unicode.c: Improve top-level comments and many docstrings.

	(Fparse_unicode_translation_table): Use right function name in error.

	(unicode_to_ichar): Renamed from unicode_to_char.
	(Funicode_to_char):
	(decode_unicode_char):
	Use new name.

	(add_charsets_to_precedence_list): Change the dynarr argument
	instead of the global precedence list.

	(Funicode_precedence_list): New function.
	(Fset_language_unicode_precedence_list,
	 Flanguage_unicode_precedence_list,
	 Fset_default_unicode_precedence_list,
	 Fdefault_unicode_precedence_list):
	Docstrings refer to docstring of Funicode_precedence_list.

	(set_unicode_conversion): Assert attempts to change Basic Latin
	(Unicode BMP, row 00).
	(Fset_unicode_conversion): Signal error on changes to Basic Latin.

2002-06-23  Malcolm Purvis  <malcolmpurvis@optushome.com.au>

	* dialog-gtk.c:
	* gpmevent.c:
	* gtk-glue.c:
	* gtk-xemacs.c:
	* menubar-gtk.c: Add required #include files to unbreak the build.

	* event-gtk.c (reinit_vars_of_event_gtk): Reinitialise new stream
	fields to unbreak the build.

2002-06-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* ExternalShell.c (hack_event_masks_1): Fix signed-unsigned warning.

	* eldap.c: #include process.h for report_process_error.

	* editfns.c: #include commands.h for zmacs_region_* declarations.

2002-06-22  Mike Sperber  <mike@xemacs.org>

	* faces.c (face_property_matching_instance): Only set cdr of
	matchspec if it's actually a cons.

	* console.h: Define opaque console_methods to unbreak the build.

	* objects.c (initialize_charset_font_caches):
	(invalidate_charset_font_caches): Only define if we're MULE.
	(font_instantiate): Unbreak for non-MULE.

2002-06-20  Ben Wing  <ben@xemacs.org>

	* s/cygwin32.h:
	Allow pdump to work under Cygwin (mmap is broken, so need to undefine
	HAVE_MMAP).

	* s/win32-common.h:
	* s/win32-common.h (NO_MATHERR):
	* s/windowsnt.h:

	Support for fastcall.  Add WIN32_ANY for identifying all Win32
	variants (Cygwin, native, MinGW).  Both of these are properly used
	in another ws.

2002-06-20  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (disksave_object_finalization):
	* alloc.c (garbage_collect_1):
	* balloon-x.c:
	* balloon-x.c (alloc_color):
	* balloon-x.c (init):
	* buffer.c:
	* buffer.c (Fkill_buffer):
	* bytecode.c:
	* callint.c:
	* cm.c:
	* cmdloop.c:
	* cmdloop.c (Frecursive_edit):
	* cmdloop.c (Fcommand_loop_1):
	* cmds.c:
	* console-gtk.c:
	* console-gtk.h:
	* console-msw.c:
	* console-msw.h:
	* console-msw.h (struct):
	* console-msw.h (wrap_mswindows_dialog_id):
	* console-stream.c:
	* console-stream.h:
	* console-stream.h (stream_canonicalize_device_connection):
	* console-tty.c:
	* console-tty.h:
	* console-x.c:
	* console-x.h:
	* console-x.h (Xt_SET_VALUE):
	* console.c:
	* console.c (Fcdfw_console):
	* console.h:
	* console.h (CDFW_CONSOLE):
	* device-gtk.c:
	* device-gtk.c (gtk_delete_device):
	* device-gtk.c (Fgtk_display_visual_class):
	* device-gtk.c (syms_of_device_gtk):
	* device-gtk.c (vars_of_device_gtk):
	* device-msw.c:
	* device-tty.c:
	* device-x.c:
	* device-x.c (x_init_device):
	* device-x.c (x_delete_device):
	* device-x.c (x_get_resource_prefix):
	* device-x.c (Fdefault_x_device):
	* device-x.c (vars_of_device_x):
	* device.c:
	* device.c (allocate_device):
	* device.c (device_console):
	* device.c (init_global_resources):
	* device.c (init_device_resources):
	* device.c (Fdefault_device):
	* device.c (Fmake_device):
	* device.c (delete_device_internal):
	* device.c (call_critical_lisp_code):
	* device.c (syms_of_device):
	* device.c (vars_of_device):
	* device.h:
	* devslots.h:
	* dialog-gtk.c:
	* dialog-msw.c:
	* dialog-x.c:
	* dialog.c:
	* dialog.c (Fmake_dialog_box_internal):
	* dired-msw.c:
	* editfns.c:
	* emacs.c:
	* event-Xt.c:
	* event-Xt.c (change_frame_visibility):
	* event-gtk.c:
	* event-gtk.c (change_frame_visibility):
	* event-gtk.c (gtk_event_to_emacs_event):
	* event-msw.c:
	* event-stream.c:
	* event-tty.c:
	* event-unixoid.c:
	* events.c:
	* extents.c:
	* extents.h:
	* extents.h (glyph_layout):
	* faces.c:
	* faces.c (face_property_matching_instance):
	* faces.c (init_global_faces):
	* faces.c (init_device_faces):
	* faces.c (complex_vars_of_faces):
	* fileio.c:
	* fns.c:
	* frame-gtk.c:
	* frame-gtk.c (INTERNAL_BORDER_WIDTH):
	* frame-msw.c:
	* frame-tty.c:
	* frame-x.c:
	* frame.c:
	* frame.c (decode_frame_or_selected):
	* frame.h:
	* frame.h (FW_FRAME):
	* frame.h (Value): Removed.
	* frame.h (0): Removed.
	* glyphs-eimage.c:
	* glyphs-gtk.c:
	* glyphs-gtk.c (gtk_locate_pixmap_file):
	* glyphs-msw.c:
	* glyphs-widget.c:
	* glyphs-x.c:
	* glyphs-x.c (x_locate_pixmap_file):
	* glyphs.c:
	* glyphs.c (decode_device_ii_format):
	* glyphs.c (Fimage_instance_instantiator):
	* glyphs.c (syms_of_glyphs):
	* glyphs.h:
	* gui-gtk.c:
	* gui-msw.c:
	* gui-x.c:
	* gui-x.c (popup_selection_callback):
	* gui.c:
	* gutter.c:
	* input-method-xlib.c:
	* intl-encap-win32.c:
	* intl-win32.c:
	* intl-win32.c (getacp):
	* intl-win32.c (mswindows_get_registry_charset):
	* intl-win32.c (syms_of_intl_win32):
	* intl-win32.c (vars_of_intl_win32):
	* keymap.c:
	* lisp.h:
	* macros.c:
	* menubar-gtk.c:
	* menubar-msw.c:
	* menubar-x.c:
	* menubar.c:
	* menubar.h:
	* minibuf.c:
	* mule-charset.c:
	* mule-charset.c (Fset_charset_ccl_program):
	* nt.c:
	* objects-gtk.c:
	* objects-gtk.c (gtk_initialize_font_instance):
	* objects-gtk.c (gtk_print_font_instance):
	* objects-gtk.c (gtk_font_instance_truename):
	* objects-gtk.c (gtk_font_spec_matches_charset):
	* objects-gtk.c (console_type_create_objects_gtk):
	* objects-gtk.c (gtk_find_charset_font):
	* objects-gtk.h:
	* objects-msw.c:
	* objects-msw.c (charset_map):
	* objects-msw.c (font_enum_callback_2):
	* objects-msw.c (sort_font_list_function):
	* objects-msw.c (mswindows_enumerate_fonts):
	* objects-msw.c (parse_font_spec):
	* objects-msw.c (create_hfont_from_font_spec):
	* objects-msw.c (initialize_font_instance):
	* objects-msw.c (mswindows_list_fonts):
	* objects-msw.c (mswindows_font_instance_truename):
	* objects-msw.c (mswindows_font_spec_matches_charset_stage_1):
	* objects-msw.c (mswindows_font_spec_matches_charset_stage_2):
	* objects-msw.c (mswindows_font_spec_matches_charset):
	* objects-msw.c (mswindows_find_charset_font):
	* objects-msw.h:
	* objects-msw.h (mswindows_color_to_string):
	* objects-tty.c:
	* objects-tty.c (tty_font_spec_matches_charset):
	* objects-tty.c (tty_find_charset_font):
	* objects-tty.h:
	* objects-x.c:
	* objects-x.c (x_initialize_font_instance):
	* objects-x.c (x_print_font_instance):
	* objects-x.c (x_font_instance_truename):
	* objects-x.c (x_font_spec_matches_charset):
	* objects-x.c (x_find_charset_font):
	* objects-x.c (console_type_create_objects_x):
	* objects-x.h:
	* objects.c:
	* objects.c (mark_font_instance):
	* objects.c (Fmake_font_instance):
	* objects.c (font_validate_matchspec):
	* objects.c (initialize_charset_font_caches):
	* objects.c (font_instantiate):
	* objects.c (reinit_vars_of_objects):
	* objects.h:
	* postgresql.c:
	* print.c:
	* process.h:
	* redisplay-gtk.c:
	* redisplay-msw.c:
	* redisplay-output.c:
	* redisplay-tty.c:
	* redisplay-x.c:
	* redisplay.c:
	* redisplay.c (text_cursor_visible_p_changed):
	* redisplay.h:
	* scrollbar-gtk.c:
	* scrollbar-msw.c:
	* scrollbar-x.c:
	* scrollbar.c:
	* select-gtk.c:
	* select-msw.c:
	* select-x.c:
	* select.c:
	* signal.c:
	* sound.c:
	* specifier.c:
	* specifier.c (print_specifier):
	* specifier.c (setup_device_initial_specifier_tags):
	* specifier.c (Fspecifier_matching_instance):
	* symbols.c:
	* syntax.c (signal_syntax_table_extent_changed):
	* sysdep.c:
	* syssignal.h:
	* syswindows.h:
	* toolbar-common.c:
	* toolbar-gtk.c:
	* toolbar-msw.c:
	* toolbar-msw.c (mswindows_clear_toolbar):
	* toolbar-msw.c (mswindows_free_frame_toolbars):
	* toolbar-x.c:
	* toolbar.c:
	* unicode.c:
	* window.c:
	* window.c (decode_window):
	* window.h:
	* window.h (WINDOW_XFRAME):
	* window.h (XWINDOW_FRAME):
	* window.h (CHECK_LIVE_WINDOW):
	* window.h (window_divider_width):

	The following are the major changes made:

	(1) Separation of various header files into an external and an
	internal version, similar to the existing separation of process.h
	and procimpl.h.  Eventually this should be done for all Lisp
	objects.  The external version has the same name as currently; the
	internal adds -impl.  The external file has XFOO() macros for
	objects, but the structure is opaque and defined only in the
	internal file.  It's now reasonable to move all prototypes in
	lisp.h into the appropriate external file, and this should be
	done.  Currently, separation has been done on extents.h,
	objects*.h, console.h, device.h, frame.h, and window.h.

	For c/d/f/w, the most basic properties are available in the
	external header file, with the macros resolving to functions.  In
	the internal header file, the macros are redefined to directly
	access the structure.  Also, the global MARK_FOO_CHANGED macros
	have been made into functions so that they can be accessed without
	needing to include lots of -impl headers -- they are used in
	almost exclusively in non-time-critical functions, and take up
	enough time that the function overhead will be negligible.
	Similarly, the function overhead from making the basic properties
	mentioned above into functions is negligible, and code that does
	heavy accessing of c/d/f/w structures inevitably ends up needing
	the internal header files, anyway.

	(2) More face changes.

	-- Major rewrite of objects-msw.c.  Now handles wildcard specs
	properly, rather than "truenaming" (or even worse, signalling an
	error, which previously happened with some of the fallbacks if you
	tried to use them in make-font-instance!).

	-- Split charset matching of fonts into two stages -- one to find
	a font specifically designed for a particular charset (by
	examining its registry), the second to find a Unicode font that
	can support the charset.  This needs to proceed as two complete,
	separate instantiations in order to work properly (otherwise many
	of the fonts in the HELLO page look wrong).  This should also make
	it easy to support iso10646 (Unicode) fonts under X.

	-- All default values for fonts are now completely specified in
	the fallbacks.  Stuff from mule-x-init.el has all been moved here,
	merged with the existing specs, and totally rethought so you get
	sensible results. (HELLO now looks much better!).

	-- Generalize the "default X/GTK device" stuff into a
	per-device-type "default device".

	-- Add mswindows-{set-}charset-registry.  In time,
	charset<->code-page conversion functions will be removed.

	-- Wrap protective code around calls to compute device specifier tags,
	and do this computation before calling the face initialization code
	because the latter may need these tags to be correctly updated.

	(3) Other changes.

	* EmacsFrame.c:
	* EmacsFrame.c (EmacsFrameSetValues):
	* glyphs-msw.c:
	* eval.c:
	* gui-x.c:
	* intl-encap-win32.c:
	* search.c (Fstore_match_data):
	* search.c:
	* signal.c:
	* toolbar-msw.c:
	* unicode.c:
	Warning fixes.

	* config.h.in:
	#undefs meant to be frobbed by configure *MUST* go inside of
	#ifndef WIN32_NO_CONFIGURE, and everything else *MUST* go outside!

	* eval.c (Fbacktrace):
	Let detailed backtraces be detailed.
	* specifier.c:
	Don't override user's print-string-length/print-length settings.

	* glyphs.c: New function image-instance-instantiator.

	* config.h.in:
	* sysdep.c (set_descriptor_non_blocking):
	* sysdep.c (SIG_PARAM_TYPE):
	* sysdep.c (struct save_signal):
	* sysdep.c (save_signal_handlers):
	* sysdep.c (retry_open):
	* sysdep.c (qxe_open):
	Changes for fastcall.

	* sysdep.c (qxe_rename):
	* nt.c (mswindows_rename):
	Fix up a previous botched patch that tried to add support for both
	EEXIST and EACCES.  IF THE BOTCHED PATCH WENT INTO 21.4, THIS FIXUP
	NEEDS TO GO IN, TOO.

	* search.c (skip_chars):
	Fix *evil* crash due to incorrect synching of syntax-cache code
	with 21.1.  THIS SHOULD GO INTO 21.4.

2002-06-07  William M. Perry  <wmperry@gnu.org>

	* frame-x.c (init_x_prop_symbols): Don't attempt to expose the
	toolbar pixels from the EmacsFrame widget, they no longer exist.
	(x_frame_properties): Ditto.
	(x_internal_frame_property_p): Don't check them for internal-ness
	either.

	* EmacsFrame.c: Removed references to the resources for toolbar
	colors.  These are now controlled completely by the 'toolbar'
	face.

	* EmacsFrameP.h: Removed obsolete toolbar pixel slots.

2002-06-05  Ben Wing  <ben@xemacs.org>

	* README.integral-types: Removed.
	* README.global-renaming: Added.

	Stuff specific to the integral types rename was moved to the
	Internals Manual.  The general scripts, suitable for any type
	of global search-and-replace, were moved to README.global-renaming.
	(In the internals manual, they need to be munged by replacing @
	with @@, and this precludes just cutting and pasting from the source
	file, which is what people are naturally going to do.)

2002-06-05  Ben Wing  <ben@xemacs.org>

	* abbrev.c (abbrev_match_mapper):
	* abbrev.c (abbrev_oblookup):
	* abbrev.c (obarray_has_blank_p):
	* abbrev.c (abbrev_count_case):
	* alloc.c (make_uninit_string):
	* alloc.c (resize_string):
	* alloc.c (set_string_char):
	* alloc.c (Fmake_string):
	* alloc.c (Fstring):
	* alloc.c (init_string_ascii_begin):
	* alloc.c (make_string):
	* alloc.c (build_intstring):
	* alloc.c (build_string):
	* alloc.c (build_msg_intstring):
	* alloc.c (build_msg_string):
	* alloc.c (make_string_nocopy):
	* alloc.c (debug_string_purity_print):
	* alloc.c (garbage_collect_1):
	* buffer.c:
	* buffer.c (Fgenerate_new_buffer_name):
	* buffer.c (directory_is_current_directory):
	* buffer.c (get_initial_directory):
	* buffer.c (init_initial_directory):
	* buffer.h:
	* buffer.h (struct buffer_text):
	* buffer.h (VALIDATE_BYTEBPOS_BACKWARD):
	* buffer.h (VALIDATE_BYTEBPOS_FORWARD):
	* buffer.h (BYTE_BUF_FETCH_CHAR):
	* buffer.h (BYTE_BUF_FETCH_CHAR_RAW):
	* buffer.h (BYTE_BUF_ITEXT_COPY_ICHAR):
	* buffer.h (BUFFER_TEXT_LOOP):
	* buffer.h (BUFFER_ALLOC):
	* bytecode.c (invalid_byte_code):
	* bytecode.c (READ_INSTRUCTION_CHAR):
	* bytecode.c (optimize_byte_code):
	* bytecode.c (compiled_function_instructions):
	* callint.c (callint_prompt):
	* callint.c (PROMPT):
	* casefiddle.c (casify_object):
	* casefiddle.c (casify_region_internal):
	* casetab.c (compute_up_or_eqv_mapper):
	* casetab.c (convert_old_style_syntax_string):
	* casetab.c (complex_vars_of_casetab):
	* charset.h:
	* charset.h (ichar_charset):
	* charset.h (BREAKUP_ICHAR):
	* charset.h (struct Lisp_Charset):
	* charset.h (CHARSET_LEADING_BYTE):
	* charset.h (struct charset_lookup):
	* charset.h (ICHAR_FIELD1_MASK):
	* charset.h (ichar_field1):
	* charset.h (MIN_ICHAR_FIELD2_OFFICIAL):
	* charset.h (MIN_ICHAR_FIELD1_OFFICIAL):
	* charset.h (MIN_ICHAR_FIELD2_PRIVATE):
	* charset.h (MIN_ICHAR_FIELD1_PRIVATE):
	* charset.h (MIN_CHAR_OFFICIAL_TYPE9N):
	* charset.h (BREAKUP_ICHAR_1_UNSAFE):
	* chartab.c (get_non_ascii_char_table_value):
	* chartab.c (put_char_table):
	* chartab.c (map_over_charset_ascii_1):
	* chartab.c (map_over_charset_row):
	* chartab.c (map_over_other_charset):
	* chartab.c (map_char_table):
	* chartab.c (chartab_instantiate):
	* chartab.c (check_category_char):
	* chartab.c (Fcheck_category_at):
	* chartab.c (Fchar_in_category_p):
	* chartab.c (word_boundary_p):
	* chartab.h:
	* chartab.h (struct chartab_range):
	* cmds.c:
	* cmds.c (Fself_insert_command):
	* cmds.c (internal_self_insert):
	* console-gtk.h:
	* console-msw.c (GetConsoleHwnd):
	* console-msw.c (mswindows_output_console_string):
	* console-msw.c (Fmswindows_debugging_output):
	* console-msw.c (write_string_to_mswindows_debugging_output):
	* console-msw.c (DSTRING):
	* console-msw.c (DSYMNAME):
	* console-msw.h:
	* console-stream.c (stream_text_width):
	* console-tty.c (tty_init_console):
	* console-x.c (split_up_display_spec):
	* console-x.c (x_semi_canonicalize_console_connection):
	* console-x.h:
	* console.h (struct console_methods):
	* console.h (struct console):
	* data.c (Fsubr_interactive):
	* data.c (Faref):
	* device-msw.c (msprinter_default_printer):
	* device-msw.c (sync_printer_with_devmode):
	* device-x.c (sanity_check_geometry_resource):
	* device-x.c (signal_if_x_error):
	* device-x.c (x_IO_error_handler):
	* device-x.c (Fx_get_resource_prefix):
	* dialog-msw.c (button_width):
	* dialog-msw.c (handle_question_dialog_box):
	* dired-msw.c (struct):
	* dired-msw.c (mswindows_get_files):
	* dired-msw.c (mswindows_format_file):
	* dired-msw.c (Fmswindows_insert_directory):
	* dired.c (Fdirectory_files):
	* dired.c (file_name_completion_stat):
	* dired.c (file_name_completion):
	* dired.c (struct user_name):
	* dired.c (user_name_completion):
	* dired.c (make_directory_hash_table):
	* dired.c (Ffile_attributes):
	* doc.c (unparesseuxify_doc_string):
	* doc.c (get_doc_string):
	* doc.c (weird_doc):
	* doc.c (Fsnarf_documentation):
	* doc.c (Fsubstitute_command_keys):
	* doprnt.c (union printf_arg):
	* doprnt.c (doprnt_2):
	* doprnt.c (parse_off_posnum):
	* doprnt.c (parse_doprnt_spec):
	* doprnt.c (get_doprnt_args):
	* doprnt.c (emacs_doprnt_1):
	* doprnt.c (emacs_doprnt_va):
	* doprnt.c (emacs_doprnt):
	* doprnt.c (emacs_vsprintf_string_lisp):
	* doprnt.c (emacs_sprintf_string_lisp):
	* doprnt.c (emacs_vsprintf_malloc_lisp):
	* doprnt.c (emacs_sprintf_malloc_lisp):
	* doprnt.c (emacs_vsprintf_string):
	* doprnt.c (emacs_sprintf_string):
	* doprnt.c (emacs_vsprintf_malloc):
	* doprnt.c (emacs_sprintf_malloc):
	* doprnt.c (emacs_vsprintf):
	* doprnt.c (emacs_sprintf):
	* editfns.c:
	* editfns.c (init_editfns):
	* editfns.c (Fchar_to_string):
	* editfns.c (Fstring_to_char):
	* editfns.c (Ftemp_directory):
	* editfns.c (Fuser_login_name):
	* editfns.c (user_login_name):
	* editfns.c (Fuser_full_name):
	* editfns.c (get_home_directory):
	* editfns.c (Fuser_home_directory):
	* editfns.c (Fcurrent_time_string):
	* editfns.c (Fcurrent_time_zone):
	* editfns.c (Finsert_char):
	* editfns.c (Fcompare_buffer_substrings):
	* editfns.c (Fsubst_char_in_region):
	* editfns.c (Ftranslate_region):
	* editfns.c (Fchar_equal):
	* eldap.c (Fldap_open):
	* emodules.c (emodules_load):
	* emodules.c (emodules_doc_subr):
	* emodules.c (emodules_doc_sym):
	* eval.c (print_subr):
	* 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 (printing_unreadable_object):
	* eval.c (struct call_trapping_problems):
	* eval.c (call_trapping_problems):
	* eval.c (va_call_trapping_problems):
	* eval.c (calln_trapping_problems):
	* eval.c (call0_trapping_problems):
	* eval.c (call1_trapping_problems):
	* eval.c (call2_trapping_problems):
	* eval.c (call3_trapping_problems):
	* eval.c (call4_trapping_problems):
	* eval.c (call5_trapping_problems):
	* eval.c (eval_in_buffer_trapping_problems):
	* eval.c (run_hook_trapping_problems):
	* eval.c (safe_run_hook_trapping_problems):
	* eval.c (run_hook_with_args_in_buffer_trapping_problems):
	* eval.c (run_hook_with_args_trapping_problems):
	* eval.c (va_run_hook_with_args_trapping_problems):
	* eval.c (va_run_hook_with_args_in_buffer_trapping_problems):
	* eval.c (warn_when_safe):
	* event-Xt.c (x_keysym_to_character):
	* event-Xt.c (x_to_emacs_keysym):
	* event-Xt.c (x_event_to_emacs_event):
	* event-Xt.c (check_for_tty_quit_char):
	* event-gtk.c (gtk_to_emacs_keysym):
	* event-gtk.c (dragndrop_data_received):
	* event-gtk.c (check_for_tty_quit_char):
	* event-msw.c (mswindows_dde_callback):
	* event-msw.c (mswindows_wnd_proc):
	* event-stream.c (allocate_command_builder):
	* event-stream.c (echo_key_event):
	* event-stream.c (maybe_kbd_translate):
	* event-stream.c (command_builder_find_leaf_no_mule_processing):
	* event-stream.c (command_builder_find_leaf):
	* event-stream.c (lookup_command_event):
	* event-stream.c (dribble_out_event):
	* event-unixoid.c (read_event_from_tty_or_stream_desc):
	* event-unixoid.c (event_stream_unixoid_create_io_streams):
	* events.c (character_to_event):
	* events.c (event_to_character):
	* events.c (Fevent_to_character):
	* events.c (nth_of_key_sequence_as_event):
	* events.h:
	* events.h (struct key_data):
	* events.h (struct command_builder):
	* file-coding.c (setup_eol_coding_systems):
	* file-coding.c (make_coding_system_1):
	* file-coding.c (no_conversion_convert):
	* file-coding.c (convert_eol_convert):
	* file-coding.c (look_for_coding_system_magic_cookie):
	* file-coding.h:
	* fileio.c:
	* fileio.c (report_file_type_error):
	* fileio.c (report_error_with_errno):
	* fileio.c (report_file_error):
	* fileio.c (lisp_strerror):
	* fileio.c (Ffile_name_directory):
	* fileio.c (Ffile_name_nondirectory):
	* fileio.c (file_name_as_directory):
	* fileio.c (Ffile_name_as_directory):
	* fileio.c (directory_file_name):
	* fileio.c (Fdirectory_file_name):
	* fileio.c (Fmake_temp_name):
	* fileio.c (if):
	* fileio.c (Ffile_truename):
	* fileio.c (Fsubstitute_in_file_name):
	* fileio.c (Ffile_name_absolute_p):
	* fileio.c (check_writable):
	* fileio.c (Ffile_writable_p):
	* fileio.c (Ffile_symlink_p):
	* fileio.c (a_write):
	* filelock.c (struct):
	* filelock.c (MAKE_LOCK_NAME):
	* filelock.c (fill_in_lock_file_name):
	* filelock.c (lock_file_1):
	* filelock.c (current_lock_owner):
	* filelock.c (lock_if_free):
	* filelock.c (lock_file):
	* filelock.c (unlock_file):
	* filelock.c (Ffile_locked_p):
	* fns.c:
	* fns.c (Fstring_lessp):
	* fns.c (concat):
	* fns.c (split_string_by_ichar_1):
	* fns.c (split_external_path):
	* fns.c (split_env_path):
	* fns.c (Fsplit_string_by_char):
	* fns.c (Fsplit_path):
	* fns.c (Ffillarray):
	* fns.c (mapcar1):
	* fns.c (ADVANCE_INPUT):
	* fns.c (base64_encode_1):
	* fns.c (STORE_BYTE):
	* fns.c (base64_decode_1):
	* fns.c (Fbase64_encode_region):
	* fns.c (Fbase64_encode_string):
	* fns.c (Fbase64_decode_region):
	* fns.c (Fbase64_decode_string):
	* fns.c (vars_of_fns):
	* font-lock.c (struct context_cache):
	* font-lock.c (find_context):
	* frame-gtk.c (gtk_set_frame_text_value):
	* frame-gtk.c (gtk_set_title_from_ibyte):
	* frame-gtk.c (gtk_set_icon_name_from_ibyte):
	* frame-gtk.c (console_type_create_frame_gtk):
	* frame-msw.c (mswindows_set_title_from_ibyte):
	* frame-msw.c (console_type_create_frame_mswindows):
	* frame-x.c (color_to_string):
	* frame-x.c (x_set_frame_text_value):
	* frame-x.c (x_set_title_from_ibyte):
	* frame-x.c (x_set_icon_name_from_ibyte):
	* frame-x.c (x_cde_transfer_callback):
	* frame-x.c (Fx_window_id):
	* frame-x.c (console_type_create_frame_x):
	* frame.c:
	* frame.c (allocate_frame_core):
	* frame.c (Fmake_frame):
	* frame.c (generate_title_string):
	* frame.c (update_frame_title):
	* frame.c (init_frame):
	* glyphs-eimage.c (my_jpeg_output_message):
	* glyphs-eimage.c (gif_instantiate):
	* glyphs-msw.c (struct color_symbol):
	* glyphs-msw.c (xpm_to_eimage):
	* glyphs-msw.c (struct):
	* glyphs-msw.c (resource_name_to_resource):
	* glyphs-msw.c (mswindows_xface_instantiate):
	* glyphs-msw.c (charset_of_text):
	* glyphs-msw.c (mswindows_widget_instantiate):
	* glyphs-x.c (x_locate_pixmap_file):
	* glyphs-x.c (x_xface_instantiate):
	* glyphs-x.c (safe_XLoadFont):
	* glyphs-x.c (font_instantiate):
	* 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 (query_string_geometry):
	* glyphs.c (query_string_font):
	* glyphs.c (display_table_entry):
	* glyphs.h:
	* gpmevent.c (tty_get_foreign_selection):
	* 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):
	* gui-x.h:
	* gui.c (separator_string_p):
	* gui.c (gui_name_accelerator):
	* gui.h:
	* hpplay.c (player_error_internal):
	* indent.c (column_at_point):
	* indent.c (string_column_at_point):
	* indent.c (byte_spaces_at_point):
	* indent.c (Fmove_to_column):
	* insdel.c (gap_left):
	* insdel.c (gap_right):
	* insdel.c (make_gap):
	* insdel.c (fixup_internal_substring):
	* insdel.c (buffer_insert_string_1):
	* insdel.c (buffer_insert_raw_string_1):
	* insdel.c (buffer_insert_c_string_1):
	* insdel.c (buffer_insert_emacs_char_1):
	* insdel.c (buffer_insert_c_char_1):
	* insdel.c (buffer_delete_range):
	* insdel.c (buffer_replace_char):
	* insdel.h:
	* intl-win32.c (convert_multibyte_to_internal_malloc):
	* keymap.c (make_key_description):
	* keymap.c (keymap_lookup_directly):
	* keymap.c (keymap_store):
	* keymap.c (define_key_check_and_coerce_keysym):
	* keymap.c (Fdefine_key):
	* keymap.c (Flookup_key):
	* keymap.c (map_keymap_sort_predicate):
	* keymap.c (Fkey_description):
	* keymap.c (Ftext_char_description):
	* keymap.c (describe_map):
	* keymap.c (vars_of_keymap):
	* line-number.c (insert_invalidate_line_number_cache):
	* line-number.h:
	* lisp-disunion.h:
	* lisp-union.h:
	* lisp.h:
	* lisp.h (struct):
	* lisp.h (struct Lisp_String):
	* lisp.h (XCHAR):
	* lisp.h (DECLARE_INLINE_HEADER):
	* lread.c:
	* lread.c (readchar):
	* lread.c (unreadchar):
	* lread.c (Fload_internal):
	* lread.c (locate_file_map_suffixes):
	* lread.c (locate_file_in_directory_mapper):
	* lread.c (locate_file_construct_suffixed_files_mapper):
	* lread.c (readevalloop):
	* lread.c (read0):
	* lread.c (read_escape):
	* lread.c (read_atom_0):
	* lread.c (read_atom):
	* lread.c (parse_integer):
	* lread.c (read_bit_vector):
	* lread.c (read_structure):
	* lread.c (reader_nextchar):
	* lread.c (read1):
	* lread.c (isfloat_string):
	* lread.c (sequence_reader):
	* lread.c (read_list_conser):
	* lread.c (read_list):
	* lread.c (read_vector):
	* lread.c (read_compiled_function):
	* lrecord.h:
	* lstream.c:
	* lstream.c (Lstream_really_write):
	* lstream.c (Lstream_read_1):
	* lstream.c (struct filedesc_stream):
	* lstream.c (filedesc_writer):
	* lstream.c (filedesc_stream_set_pty_flushing):
	* lstream.c (lisp_string_reader):
	* lstream.c (lisp_string_rewinder):
	* lstream.c (lisp_buffer_reader):
	* lstream.c (lisp_buffer_writer):
	* lstream.h:
	* lstream.h (Lstream_get_ichar):
	* md5.c (Fmd5):
	* menubar-msw.c:
	* menubar-msw.c (mswindows_translate_menu_or_dialog_item):
	* menubar-msw.c (displayable_menu_item):
	* menubar-msw.c (populate_menu_add_item):
	* menubar-msw.c (mswindows_char_is_accelerator):
	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	* menubar.c (Fnormalize_menu_item_name):
	* minibuf.c (scmp_1):
	* minibuf.c (regexp_ignore_completion_p):
	* minibuf.c (Fall_completions):
	* minibuf.c (echo_area_append):
	* minibuf.c (echo_area_message):
	* minibuf.c (message_internal):
	* minibuf.c (message_append_internal):
	* minibuf.c (message_1):
	* minibuf.c (message_append_1):
	* mule-ccl.c:
	* mule-ccl.c (CCL_WRITE_CHAR):
	* mule-ccl.c (CCL_WRITE_STRING):
	* mule-ccl.c (CCL_MAKE_CHAR):
	* mule-charset.c (make_charset):
	* mule-charset.c (Fmake_charset):
	* mule-coding.c (shift_jis_convert):
	* mule-coding.c (Fdecode_shift_jis_char):
	* mule-coding.c (Fencode_shift_jis_char):
	* mule-coding.c (big5_convert):
	* mule-coding.c (decode_big5_char):
	* mule-coding.c (Fdecode_big5_char):
	* mule-coding.c (Fencode_big5_char):
	* mule-coding.c (charset_by_attributes_or_create_one):
	* mule-coding.c (iso2022_decode):
	* mule-coding.c (iso2022_encode):
	* mule-wnnfns.c (Fwnn_dict_list):
	* mule-wnnfns.c (Fwnn_fuzokugo_get):
	* mule-wnnfns.c (m2w):
	* ndir.h:
	* nt.c:
	* nt.c (getpwnam):
	* nt.c (parse_root):
	* nt.c (get_long_basename):
	* nt.c (mswindows_get_long_filename):
	* nt.c (is_unc_volume):
	* nt.c (nt_get_resource):
	* nt.c (init_mswindows_environment):
	* nt.c (volume_info_data):
	* nt.c (lookup_volume_info):
	* nt.c (add_volume_info):
	* nt.c (get_cached_volume_information):
	* nt.c (get_volume_info):
	* nt.c (is_exec):
	* nt.c (mswindows_opendir):
	* nt.c (mswindows_readdir):
	* nt.c (open_unc_volume):
	* nt.c (read_unc_volume):
	* nt.c (unc_volume_file_attributes):
	* nt.c (mswindows_access):
	* nt.c (mswindows_link):
	* nt.c (mswindows_rename):
	* nt.c (mswindows_unlink):
	* nt.c (mswindows_fstat):
	* nt.c (mswindows_stat):
	* nt.c (mswindows_getdcwd):
	* nt.c (open_input_file):
	* nt.c (open_output_file):
	* nt.c (mswindows_executable_type):
	* nt.c (Fmswindows_short_file_name):
	* nt.c (Fmswindows_long_file_name):
	* nt.c (init_nt):
	* objects-gtk.c (gtk_parse_nearest_color):
	* objects-gtk.c (gtk_font_spec_matches_charset):
	* objects-gtk.c (gtk_find_charset_font):
	* objects-gtk.h:
	* objects-msw.c (hexval):
	* objects-msw.c (mswindows_string_to_color):
	* objects-msw.c (match_font):
	* objects-msw.c (font_enum_callback_2):
	* objects-msw.c (create_hfont_from_font_spec):
	* objects-msw.c (initialize_font_instance):
	* objects-msw.c (mswindows_list_fonts):
	* objects-msw.c (mswindows_font_instance_truename):
	* objects-msw.c (mswindows_font_spec_matches_charset_stage_1):
	* objects-msw.c (mswindows_font_spec_matches_charset):
	* objects-tty.c (tty_initialize_font_instance):
	* objects-tty.c (tty_font_spec_matches_charset):
	* objects-tty.c (tty_find_charset_font):
	* objects-x.c (x_font_instance_properties):
	* objects-x.c (x_font_spec_matches_charset):
	* objects-x.c (x_find_charset_font):
	* objects.c (font_spec_matches_charset):
	* objects.h:
	* postgresql.c (init_postgresql_from_environment):
	* print.c:
	* print.c (write_string_to_stdio_stream):
	* print.c (std_handle_out_va):
	* print.c (stderr_out):
	* print.c (stdout_out):
	* print.c (debug_out):
	* print.c (fatal):
	* print.c (output_string):
	* print.c (write_string_1):
	* print.c (write_string):
	* print.c (write_c_string):
	* print.c (write_fmt_string):
	* print.c (write_fmt_string_lisp):
	* print.c (stderr_out_lisp):
	* print.c (Fwrite_char):
	* print.c (float_to_string):
	* print.c (print_string):
	* print.c (print_internal):
	* print.c (print_symbol):
	* print.c (Falternate_debugging_output):
	* print.c (write_string_to_alternate_debugging_output):
	* print.c (Fexternal_debugging_output):
	* process-nt.c (mswindows_compare_env):
	* process-nt.c (nt_create_process):
	* process-nt.c (nt_send_process):
	* process-unix.c:
	* process-unix.c (allocate_pty):
	* process-unix.c (relocate_fd):
	* process-unix.c (child_setup):
	* process-unix.c (unix_create_process):
	* process-unix.c (unix_send_process):
	* process-unix.c (unix_process_send_eof):
	* process-unix.c (unix_kill_child_process):
	* process-unix.c (unix_canonicalize_host_name):
	* process-unix.c (unix_open_network_stream):
	* process.c (read_process_output):
	* process.c (send_process):
	* process.c (status_message):
	* process.c (decode_signal):
	* process.c (getenv_internal):
	* process.c (putenv_internal):
	* process.c (Fgetenv):
	* process.c (egetenv):
	* process.c (eputenv):
	* process.c (init_xemacs_process):
	* procimpl.h:
	* realpath.c:
	* realpath.c (mswindows_readlink_and_correct_case):
	* realpath.c (cygwin_readlink_and_correct_case):
	* realpath.c (mswindows_abs_start):
	* realpath.c (qxe_realpath):
	* redisplay-gtk.c:
	* redisplay-gtk.c (separate_textual_runs):
	* redisplay-gtk.c (gtk_text_width):
	* redisplay-gtk.c (gtk_output_display_block):
	* redisplay-gtk.c (gtk_output_string):
	* redisplay-msw.c (separate_textual_runs):
	* redisplay-msw.c (mswindows_output_cursor):
	* redisplay-msw.c (mswindows_output_string):
	* redisplay-msw.c (mswindows_output_display_block):
	* redisplay-msw.c (mswindows_text_width):
	* redisplay-output.c (redisplay_output_layout):
	* redisplay-tty.c:
	* redisplay-tty.c (tty_text_width):
	* redisplay-tty.c (tty_output_display_block):
	* redisplay-tty.c (tty_output_ibyte_string):
	* redisplay-tty.c (tty_output_ichar_dynarr):
	* redisplay-tty.c (substitute_in_dynamic_color_string):
	* redisplay-tty.c (set_foreground_to):
	* redisplay-tty.c (set_background_to):
	* redisplay-x.c:
	* redisplay-x.c (separate_textual_runs):
	* redisplay-x.c (x_text_width):
	* redisplay-x.c (x_output_display_block):
	* redisplay-x.c (x_output_string):
	* redisplay.c:
	* redisplay.c (position_redisplay_data_type):
	* redisplay.c (struct prop_block):
	* redisplay.c (redisplay_text_width_ichar_string):
	* redisplay.c (redisplay_text_width_string):
	* redisplay.c (redisplay_frame_text_width_string):
	* redisplay.c (add_ichar_rune_1):
	* redisplay.c (add_ichar_rune):
	* redisplay.c (add_ibyte_string_runes):
	* redisplay.c (ADD_NEXT_OCTAL_RUNE_CHAR):
	* redisplay.c (add_octal_runes):
	* redisplay.c (add_control_char_runes):
	* redisplay.c (add_disp_table_entry_runes_1):
	* redisplay.c (add_propagation_runes):
	* redisplay.c (add_glyph_rune):
	* redisplay.c (create_text_block):
	* redisplay.c (create_overlay_glyph_block):
	* redisplay.c (generate_formatted_string_db):
	* redisplay.c (add_string_to_fstring_db_runes):
	* redisplay.c (generate_fstring_runes):
	* redisplay.c (create_string_text_block):
	* redisplay.c (decode_mode_spec):
	* redisplay.c (init_redisplay):
	* redisplay.h:
	* redisplay.h (struct rune):
	* regex.c:
	* regex.c (RE_TRANSLATE_1):
	* regex.c (itext_ichar):
	* regex.c (INC_IBYTEPTR):
	* regex.c (PATFETCH_RAW):
	* regex.c (PATUNFETCH):
	* regex.c (regex_compile):
	* regex.c (compile_range):
	* regex.c (compile_extended_range):
	* regex.c (re_compile_fastmap):
	* regex.c (re_search_2):
	* regex.c (re_match_2_internal):
	* search.c:
	* search.c (TRANSLATE):
	* search.c (fixup_search_regs_for_string):
	* search.c (fast_string_match):
	* search.c (byte_scan_buffer):
	* search.c (scan_buffer):
	* search.c (byte_find_next_ichar_in_string):
	* search.c (skip_chars):
	* search.c (trivial_regexp_p):
	* search.c (search_buffer):
	* search.c (simple_search):
	* search.c (boyer_moore):
	* search.c (wordify):
	* search.c (Freplace_match):
	* search.c (Fregexp_quote):
	* select-common.h (lisp_data_to_selection_data):
	* select-gtk.c (atom_to_symbol):
	* select-x.c (x_atom_to_symbol):
	* select-x.c (hack_motif_clipboard_selection):
	* select-x.c (Fx_store_cutbuffer_internal):
	* sound.h (sound_perror):
	* symbols.c (intern_int):
	* symbols.c (intern):
	* symbols.c (intern_converting_underscores_to_dashes):
	* symbols.c (oblookup):
	* symbols.c (hash_string):
	* symbols.c (init_symbols_once_early):
	* symbols.c (defsymbol_massage_name_1):
	* symbols.c (defsymbol_nodump):
	* symbols.c (defsymbol):
	* symbols.c (defvar_magic):
	* syntax.c (struct lisp_parse_state):
	* syntax.c (syntax_match):
	* syntax.c (WORD_BOUNDARY_P):
	* syntax.c (scan_words):
	* syntax.c (find_start_of_comment):
	* syntax.c (Fforward_comment):
	* syntax.c (scan_lists):
	* syntax.c (Fbackward_prefix_chars):
	* syntax.c (scan_sexps_forward):
	* syntax.c (complex_vars_of_syntax):
	* syntax.h:
	* sysdep.c:
	* sysdep.c (sys_subshell):
	* sysdep.c (get_eof_char):
	* sysdep.c (init_system_name):
	* sysdep.c (qxe_open):
	* sysdep.c (qxe_interruptible_open):
	* sysdep.c (qxe_fopen):
	* sysdep.c (qxe_chdir):
	* sysdep.c (qxe_mkdir):
	* sysdep.c (qxe_opendir):
	* sysdep.c (qxe_readdir):
	* sysdep.c (qxe_rmdir):
	* sysdep.c (qxe_allocating_getcwd):
	* sysdep.c (qxe_access):
	* sysdep.c (qxe_eaccess):
	* sysdep.c (qxe_lstat):
	* sysdep.c (qxe_readlink):
	* sysdep.c (qxe_stat):
	* sysdep.c (qxe_chmod):
	* sysdep.c (qxe_link):
	* sysdep.c (qxe_rename):
	* sysdep.c (qxe_symlink):
	* sysdep.c (qxe_unlink):
	* sysdep.c (qxe_execve):
	* sysdep.c (qxe_getpwnam):
	* sysdep.c (qxe_ctime):
	* sysdep.h:
	* sysdir.h:
	* sysdir.h (qxe_allocating_getcwd):
	* sysfile.h:
	* sysfile.h (DECLARE_INLINE_HEADER):
	* sysproc.h:
	* syspwd.h:
	* systime.h:
	* syswindows.h:
	* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
	* syswindows.h (LOCAL_TO_WIN32_FILE_FORMAT):
	* syswindows.h (WIN32_TO_LOCAL_FILE_FORMAT):
	* syswindows.h (LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR):
	* syswindows.h (file_data):
	* syswindows.h (DECLARE_INLINE_HEADER):
	* termcap.c (tgetent):
	* tests.c (Ftest_data_format_conversion):
	* text.c:
	* text.c (qxesprintf):
	* text.c (qxestrcasecmp):
	* text.c (ascii_strcasecmp):
	* text.c (qxestrcasecmp_c):
	* text.c (qxestrcasecmp_i18n):
	* text.c (qxestrncasecmp):
	* text.c (ascii_strncasecmp):
	* text.c (qxestrncasecmp_c):
	* text.c (qxestrncasecmp_i18n):
	* text.c (qxememcmp):
	* text.c (qxememcmp4):
	* text.c (qxememcasecmp):
	* text.c (qxememcasecmp4):
	* text.c (qxetextcmp):
	* text.c (qxetextcmp_matching):
	* text.c (qxetextcasecmp):
	* text.c (qxetextcasecmp_matching):
	* text.c (lisp_strcasecmp):
	* text.c (convert_ibyte_string_into_ichar_dynarr):
	* text.c (convert_ibyte_string_into_ichar_string):
	* text.c (convert_ichar_string_into_ibyte_dynarr):
	* text.c (convert_ichar_string_into_malloced_string):
	* text.c (COPY_TEXT_BETWEEN_FORMATS):
	* text.c (copy_text_between_formats):
	* text.c (copy_buffer_text_out):
	* text.c (find_charsets_in_ibyte_string):
	* text.c (find_charsets_in_ichar_string):
	* text.c (ibyte_string_displayed_columns):
	* text.c (ichar_string_displayed_columns):
	* text.c (ibyte_string_nonascii_chars):
	* text.c (eistr_casefiddle_1):
	* text.c (eito_malloc_1):
	* text.c (eicmp_1):
	* text.c (eicpyout_malloc_fmt):
	* text.c (skip_ascii):
	* text.c (bytecount_to_charcount_fun):
	* text.c (charcount_to_bytecount_fun):
	* text.c (struct):
	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	* text.c (non_ascii_set_itext_ichar):
	* text.c (non_ascii_itext_ichar):
	* text.c (non_ascii_valid_ichar_p):
	* text.c (non_ascii_itext_copy_ichar):
	* text.c (Lstream_get_ichar_1):
	* text.c (Lstream_fput_ichar):
	* text.c (Lstream_funget_ichar):
	* text.c (Fmake_char):
	* text.c (Fchar_charset):
	* text.c (Fchar_octet):
	* text.c (Fsplit_char):
	* text.c (lookup_composite_char):
	* text.c (composite_char_string):
	* text.c (Fcomposite_char_string):
	* text.c (reinit_vars_of_text):
	* text.h:
	* text.h (MAX_ICHAR_LEN):
	* text.h (ibyte_first_byte_p):
	* text.h (ibyte_leading_byte_p):
	* text.h (ichar_multibyte_p):
	* text.h (ichar_ascii_p):
	* text.h (ichar_16_bit_fixed_p):
	* text.h (ichar_to_raw):
	* text.h (valid_ibyteptr_p):
	* text.h (assert_valid_ibyteptr):
	* text.h (INC_IBYTEPTR):
	* text.h (INC_IBYTEPTR_FMT):
	* text.h (DEC_IBYTEPTR):
	* text.h (DEC_IBYTEPTR_FMT):
	* text.h (VALIDATE_IBYTEPTR_BACKWARD):
	* text.h (VALIDATE_IBYTEPTR_FORWARD):
	* text.h (validate_ibyte_string_backward):
	* text.h (itext_ichar_len):
	* text.h (INC_BYTECOUNT):
	* text.h (simple_itext_ichar):
	* text.h (itext_ichar):
	* text.h (valid_ichar_p):
	* text.h (CHAR_INTP):
	* text.h (ASSERT_VALID_BYTE_STRING_INDEX_UNSAFE):
	* text.h (LISP_STRING_TO_ALLOCA):
	* text.h (alloca_ibytes):
	* text.h (struct):
	* text.h (EI_ALLOC):
	* text.h (eicpy_lstr_off):
	* text.h (eicpy_raw_fmt):
	* text.h (eicpy_rawz_fmt):
	* text.h (eicpy_ch):
	* text.h (eireset):
	* text.h (eito_alloca):
	* text.h (DECLARE_INLINE_HEADER):
	* text.h (eigetch):
	* text.h (eicat_c):
	* text.h (eicat_raw):
	* text.h (eicat_rawz):
	* text.h (eicat_ch):
	* text.h (eisub_1):
	* text.h (eisub_ch):
	* text.h (EI_CASECHANGE):
	* text.h (DFC_LISP_STRING_USE_CONVERTED_DATA):
	* text.h (GET_STRERROR):
	* toolbar-common.c (common_output_toolbar_button):
	* tooltalk.c (check_status):
	* tooltalk.c (tt_message_arg_bval_vector):
	* ui-gtk.c (lisp_to_gtk_type):
	* unexnt.c (unexec):
	* unexnt.c (get_bss_info_from_map_file):
	* unicode.c:
	* unicode.c (sledgehammer_check_from_table):
	* unicode.c (sledgehammer_check_to_table):
	* unicode.c (set_unicode_conversion):
	* unicode.c (ichar_to_unicode):
	* unicode.c (unicode_to_char):
	* unicode.c (Fchar_to_unicode):
	* unicode.c (Funicode_to_char):
	* unicode.c (decode_unicode_char):
	* unicode.c (encode_unicode_char):
	* unicode.c (unicode_convert):
	* win32.c (urlify_filename):
	* win32.c (tstr_to_local_file_format):
	* win32.c (mswindows_canonicalize_filename):
	* win32.c (mswindows_lisp_error_1):
	* win32.c (Fmswindows_cygwin_to_win32_path):

	Text/char naming rationalization.

	[a] distinguish between "charptr" when it refers to operations on
	the pointer itself and when it refers to operations on text; and
	[b] use consistent naming for everything referring to internal
	format, i.e.

	Itext == text in internal format
	Ibyte == a byte in such text
	Ichar == a char as represented in internal character format

	thus e.g.

	set_charptr_emchar -> set_itext_ichar

	The pre and post tags on either side of this change are:

	pre-internal-format-textual-renaming
	post-internal-format-textual-renaming

	See the Internals Manual for details of exactly how this was done,
	how to handle the change in your workspace, etc.

2002-06-04  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (widget_logical_unit_height): don't try and
	determine geometry of nil strings.

2002-06-03  Andy Piper  <andy@xemacs.org>

	* frame.c (frame_conversion_internal): add conversion appropriate
	for setting frame dimensions in pixels.

	* console.h (struct console_methods): add device-specific widget
	layout functions.

	* emacs.c (main_1): initialize glyph vars.

	* event-Xt.c (handle_focus_event_1): call handle_focus_event_2
	(handle_focus_event_2): new function. Allow focus to
	be set to a particular window and widget.
	(enqueue_focus_event): new function. Create a
	synthetic focus event.
	(emacs_Xt_handle_magic_event): call
	handle_focus_event_2.

	* frame.c (Fset_frame_pixel_height): new function. Allow
	pixel-based sizing. Does the right thing on character-oriented
	displays.
	(Fset_frame_pixel_width): ditto.
	(Fset_frame_pixel_size): ditto.
	(syms_of_frame): declare.

	* general-slots.h: add :vertically-justify and
	:horizontally-justify.

	* glyphs-msw.c (xbm_create_bitmap_from_data): warning fix.
	(mswindows_widget_border_width): new function.
	(mswindows_combo_box_instantiate): set border widths.
	(console_type_create_glyphs_mswindows): declare.

	* glyphs-widget.c:
	(check_valid_justification): allow vertical and horizontal
	justification.
	(widget_border_width): new function. Call device methods.
	(widget_instance_border_width): ditto.
	(logical_unit_height): new function. Determine the height of a
	logical-unit. Logical units are intended to provide grid-like
	layout for subcontrols in a layout. If the layout is
	:vertically-justify top then subcontrols will be positioned on
	logical-unit boundaries, thus allowing adjacent subcontrols to
	line up.
	(widget_logical_unit_height): ditto for widgets.
	(redisplay_widget): misc cleanup.
	(widget_spacing): new function. Call device specific
	methods. Intended to be the default gap between adjacent widgets.
	(widget_query_geometry): use new spacing functions to determine
	appropriate geometry.
	(initialize_widget_image_instance): initialize horizontal and
	vertical justification.
	(widget_instantiate): use logica-units where appropriate for
	sizing large widgets.
	(button_query_geometry): use widget_instance_border_width.
	(tree_view_query_geometry): ditto.
	(tab_control_query_geometry): ditto.
	(edit_field_query_geometry): new function.
	(layout_update): pick up :justify, :horizontally-justify and
	:vertically-justify none of which worked previously. :justify is
	used as a fallback for both horizontal and vertical justification.
	(layout_query_geometry): use logical units to size appropriately.
	(layout_layout): ditto.
	(Fwidget_logical_to_character_width): new function. Allow users to
	convert from logical units to characters so that frame sizes can
	be set appropriately.
	(Fwidget_logical_to_character_height): ditto.
	(syms_of_glyphs_widget): declare.
	(image_instantiator_edit_fields): add edit_field_query_geometry.
	(VALID_LAYOUT_KEYWORDS): declare :vertically-justify and
	:horizontally-justify.
	(specifier_vars_of_glyphs_widget): new function. Declare
	Vwidget_border_width which is not yet used.

	* glyphs-x.c (x_map_subwindow): enqueue appropriate focus events.
	(x_widget_border_width): new function.
	(x_widget_instantiate): create a sensible name for widgets.
	(console_type_create_glyphs_x): declare x_widget_border_width.

	* glyphs.h (DEFAULT_WIDGET_BORDER_WIDTH): new macro.
	(struct Lisp_Image_Instance): add :vertically-justify and
	:horizontally-justify.
	(LAYOUT_JUSTIFY_TOP): new.
	(IMAGE_INSTANCE_SUBWINDOW_H_JUSTIFY): new.
	(ROUND_UP): new macro. Round argument up to next integral
	interval.

	* redisplay-output.c (redisplay_output_layout): misc formatting.

	* symsinit.h: declare specifier_vars_of_glyphs_widget.

2002-05-16  Mathias Grimmberger  <mgri@zaphod.sax.de>

	* sysdep.c (sys_rename): Make sys_rename work for the case where
	Windows rename sets errno to EACCES if target file exists.

2002-05-21  Jonathan Harris  <jonathan@xemacs.org>

	* device-msw.c (mswindows_handle_page_setup_dialog_box):
	Fix detection of metric units to work on Win95

2002-05-25  Andy Piper  <andy@xemacs.org>

	* select-x.c (vars_of_select_x): Fix docstring of
	x-selection-strict-motif-ownership

2002-05-07  Nix  <nix@esperi.demon.co.uk>

	Supersedes 2002-04-17 patch.

	* process.h (PROCESS_LIVE_P): Use the process status as
	evidence of health, not the state of the input stream.
	(PROCESS_READABLE_P): Say if the process is readable
	from. (It may be dead nonetheless.)
	(CHECK_READABLE_PROCESS): Test for that condition.

	* process.c (create_process): Use PROCESS_READABLE_P.
	(read_process_output, set_process_filter): Likewise.

	* process.c (Fprocess_input_coding_system): Use CHECK_READABLE_PROCESS.
	(Fset_process_input_coding_system, Fprocess_coding_system): Likewise.

	This code is #if 0'd, this is not the time to add new functions:

	* process.c (Fprocess_readable_p): Report readability status.
	* process.c (Qprocess_readable_p): New, associated symbol...
	* process.c (syms_of_process): ... initialize it.

2002-05-06  Andy Piper  <andy@xemacs.org>

	* process.h (PROCESS_LIVE_P): revert previous change because of
	tty problems.

2002-04-27  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (mswindows_widget_instantiate): remove dead-code.

2002-04-26  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (mswindows_map_subwindow): observe :initial-focus
	behavior.

	* config.h.in: pull in 21.5.x change to stop alloca warnings under
	cygwin.

2002-06-02  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* process.c (remove_process): Don't invalidate the process marker
	after the process has died to make point synchronization in
	`call-process-internal' possible.

2002-06-01  Ben Wing  <ben@xemacs.org>

	* buffer.c (init_initial_directory):
	Fix bug noted by someone.

	* console-tty.h:
	* device.h (struct device):
	* emacs.c:
	* filelock.c:
	* nt.c:
	* process-nt.c:
	* process-unix.c:
	* process.c:
	* redisplay-tty.c:
	* sysdep.c:
	* sysproc.h:
	* win32.c:
	Redo problem with syssignal.h/sysproc.h dependence noted by Didier
	-- rather than require one included before the other
	(error-prone), just include syssignal.h from sysproc.h
	where it's needed.

	* inline.c:
	Include sysfile.h due to inline funs in that header.

	* extents.c (Fset_extent_parent):
	Fix bug noted by Andrew Cohen <cohen@andy.bu.edu>.

	* process-unix.c (unix_open_network_stream):
	* process-unix.c (unix_open_multicast_group):
	Fix other bug noted by Andrew Cohen <cohen@andy.bu.edu>.

	* process.c (syms_of_process):
	Add process-has-separate-stderr-p, used by call-process-internal.

2002-05-28  Martin Kï¿½bele <mkoebele@mkoebele.de>, Jens Mï¿½ller <jmueller@informatik.uni-tuebingen.de>

	* lrecord.h (lrecord_type): Add lrecord_type_weak_box to
	lrecord_type enumeration.

	* alloc.c (garbage_collect_1): Call prune_weak_boxes().

	* lisp.h (struct weak_box):
	* data.c:
	(prune_weak_boxes):
	(mark_weak_box):
	(print_weak_box):
	(weak_box_equal):
	(weak_box_hash):
	(make_weak_box):
	(Fmake_weak_box):
	(Fweak_box_ref):
	(Fweak_boxp):
	(syms_of_data):
	(vars_of_data): Add implementation of weak boxes.

2002-05-29  Ben Wing  <ben@xemacs.org>

	* event-msw.c:
	Oops, paren in wrong place.
	Oops, manifest constant needed earlier than defined.

2002-05-29  Didier Verna  <didier@xemacs.org>

	* process-unix.c (unix_canonicalize_host_name): change gai_error
	to gai_err to avoid shadow declaration.
	* process-unix.c (unix_open_network_stream): ditto.

2002-05-28  Didier Verna  <didier@xemacs.org>

	* emacs.c: comment the inclusion order of syssignal.h and sysproc.h.
	* filelock.c: ditto.
	* nt.c: ditto.
	* sysproc.h: ditto.
	* process-nt.c: ditto.
	* process-unix.c: include syssignal.h before sysproc.h.
	* process.c: ditto.
	* sysdep.c: ditto.
	* win32.c: ditto.

2002-05-28  Ben Wing  <ben@xemacs.org>

	================================================================
	       ALLOW SEPARATION OF STDOUT AND STDERR IN PROCESSES
	================================================================

	Standard output and standard error can be processed separately in
	a process.  Each can have its own buffer, its own mark in that buffer,
	and its filter function.  You can specify a separate buffer for stderr
	in `start-process' to get things started, or use the new primitives:

	set-process-stderr-buffer
	process-stderr-buffer
	process-stderr-mark
	set-process-stderr-filter
	process-stderr-filter

	Also, process-send-region takes a 4th optional arg, a buffer.

	Currently always uses a pipe() under Unix to read the error output.
	(#### Would a PTY be better?)

	* sysdep.h:
	* sysproc.h:
	* unexfreebsd.c (unexec):
	* unexsunos4.c (unexec):
	* nt.c (init_user_info):
	* emacs.c:
	* emacs.c (main_1):
	* callproc.c:
	* symsinit.h:
	* sysdep.c:
	* sysdep.c (wait_for_termination):
	* Makefile.in.in (objs):
	* process-unix.c (child_setup):
	Delete callproc.c.  Move child_setup() to process-unix.c.
	wait_for_termination() now only needed on a few really old systems.

	* console-msw.h:
	* event-Xt.c (emacs_Xt_select_process):
	* event-Xt.c (emacs_Xt_unselect_process):
	* event-Xt.c (emacs_Xt_create_io_streams):
	* event-Xt.c (emacs_Xt_delete_io_streams):
	* event-Xt.c (debug_process_finalization):
	* event-Xt.c (reinit_vars_of_event_Xt):
	* event-msw.c (get_process_stderr_waitable):
	* event-msw.c (emacs_mswindows_select_process):
	* event-msw.c (emacs_mswindows_unselect_process):
	* event-msw.c (emacs_mswindows_create_io_streams):
	* event-msw.c (emacs_mswindows_delete_io_streams):
	* event-msw.c (debug_process_finalization):
	* event-msw.c (reinit_vars_of_event_mswindows):
	* event-msw.c (vars_of_event_mswindows):
	* event-msw.c (lstream_type_create_mswindows_selectable):
	* event-stream.c (event_stream_select_process):
	* event-stream.c (event_stream_unselect_process):
	* event-stream.c (event_stream_create_io_streams):
	* event-stream.c (event_stream_delete_io_streams):
	* event-stream.c (Faccept_process_output):
	* event-tty.c (emacs_tty_select_process):
	* event-tty.c (emacs_tty_unselect_process):
	* event-tty.c (emacs_tty_create_io_streams):
	* event-tty.c (emacs_tty_delete_io_streams):
	* event-tty.c (reinit_vars_of_event_tty):
	* event-unixoid.c:
	* event-unixoid.c (get_process_infd):
	* event-unixoid.c (get_process_errfd):
	* event-unixoid.c (event_stream_unixoid_select_process):
	* event-unixoid.c (event_stream_unixoid_unselect_process):
	* event-unixoid.c (event_stream_unixoid_create_io_streams):
	* event-unixoid.c (event_stream_unixoid_delete_io_streams):
	* events.h:
	* events.h (struct event_stream):
	* process-nt.c:
	* process-nt.c (struct nt_process_data):
	* 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 (struct unix_process_data):
	* process-unix.c (UNIX_DATA):
	* process-unix.c (close_process_descs_mapfun):
	* process-unix.c (close_process_descs):
	* process-unix.c (connect_to_file_descriptor):
	* process-unix.c (process_signal_char):
	* process-unix.c (unix_alloc_process_data):
	* process-unix.c (unix_init_process_io_handles):
	* process-unix.c (unix_create_process):
	* process-unix.c (io_failure): Removed.
	* process-unix.c (unix_tooltalk_connection_p):
	* process-unix.c (unix_set_window_size):
	* process-unix.c (unix_reap_exited_processes):
	* process-unix.c (unix_deactivate_process):
	* process-unix.c (unix_kill_child_process):
	* process.c:
	* process.c (mark_process):
	* process.c (get_process_streams):
	* process.c (get_process_from_usid):
	* process.c (get_process_selected_p):
	* process.c (set_process_selected_p):
	* process.c (make_process_internal):
	* process.c (init_process_io_handles):
	* process.c (create_process):
	* process.c (Fstart_process_internal):
	* process.c (Fopen_multicast_group_internal):
	* process.c (process_setup_for_insertion):
	* process.c (read_process_output):
	* process.c (Fset_process_stderr_buffer):
	* process.c (Fprocess_stderr_mark):
	* process.c (set_process_filter):
	* process.c (Fset_process_filter):
	* process.c (Fset_process_stderr_filter):
	* process.c (Fprocess_stderr_filter):
	* process.c (exec_sentinel_unwind):
	* process.c (exec_sentinel):
	* process.c (status_notify):
	* process.c (Fprocess_send_eof):
	* process.c (deactivate_process):
	* process.c (syms_of_process):
	* process.c (vars_of_process):
	* process.h:
	* procimpl.h:
	* procimpl.h (struct process_methods):
	* procimpl.h (struct Lisp_Process):
	* procimpl.h (DATA_ERRSTREAM):
	Rewrite the process methods to handle a separate channel for
	error input.  Create Lstreams for reading in the error channel.
	Many process methods need change.  In general the changes are
	fairly clear as they involve duplicating what's used for reading
	the normal stdout and changing for stderr -- although tedious,
	as such changes are required throughout the entire process code.
	Rewrote the code that reads process output to do two loops, one
	for stdout and one for stderr.

	* gpmevent.c (get_process_infd):
	* gpmevent.c (Fgpm_enable):
	* tooltalk.c:
	* tooltalk.c (init_tooltalk):
	set_process_filter takes an argument for stderr.

	================================================================
			  NEW ERROR-TRAPPING MECHANISM
	================================================================

	Totally rewrite error trapping code to be unified and support more
	features.  Basic function is call_trapping_problems(), which lets
	you specify, by means of flags, what sorts of problems you want
	trapped.  these can include

	-- quit
	-- errors
	-- throws past the function
	-- creation of "display objects" (e.g. buffers)
	-- deletion of already-existing "display objects" (e.g. buffers)
	-- modification of already-existing buffers
	-- entering the debugger
	-- gc
	-- errors->warnings (ala suspended errors)

	etc.  All other error funs rewritten in terms of this one.
	Various older mechanisms removed or rewritten.

	* window.c (mark_window_as_deleted):
	* window.c (Fdelete_window):
	* window.c (Fset_window_configuration):
	* insdel.c (prepare_to_modify_buffer):
	* insdel.c (buffer_insert_string_1):
	* console.c (create_console):
	* buffer.c (finish_init_buffer):
	* device.c (allocate_device):
	* device.c (Fmake_device):
	* frame.c:
	* frame.c (Fmake_frame):
	* frame.c (allocate_frame_core):
	* frame.c (setup_normal_frame):
	* frame.c (delete_frame_internal):
	* window.c (Fsplit_window):
	* device.c (delete_device_internal):
	* console.c (delete_console_internal):
	* buffer.c (Fkill_buffer):
	When creating a display object, added call to
	note_object_created(), for use with trapping_problems mechanism.
	When deleting, call check_allowed_operation() and note_object
	deleted().

	The trapping-problems code records the objects created since the
	call-trapping-problems began.  Those objects can be deleted, but
	none others (i.e. previously existing ones).

	* bytecode.c (execute_rare_opcode):
	* cmdloop.c:
	* cmdloop.c (initial_command_loop):
	* cmdloop.c (Frecursive_edit):
	* cmdloop.c (call_command_loop):
	internal_catch takes another arg.

	* eval.c:
	Add long comments describing the "five lists" used to maintain
	state (backtrace, gcpro, specbind, etc.) in the Lisp engine.

	* backtrace.h:
	* eval.c (current_warning_level):
	* eval.c (call_debugger):
	* eval.c (signal_call_debugger):
	* eval.c (Fwhen):
	* eval.c (Fcatch):
	* eval.c (internal_catch):
	* eval.c (unwind_to_catch):
	* eval.c (throw_or_bomb_out):
	* eval.c (condition_bind_unwind):
	* eval.c (condition_case_1):
	* eval.c (Fcall_with_condition_handler):
	* eval.c (call_with_condition_handler):
	* eval.c (Fsignal):
	* eval.c (check_catchlist_sanity):
	* eval.c (check_specbind_stack_sanity):
	* eval.c (signal_quit):
	* eval.c (Feval):
	* eval.c (run_hook_list_with_args):
	* eval.c (run_hook):
	* eval.c (get_inhibit_flags):
	* eval.c (check_allowed_operation):
	* eval.c (note_object_created):
	* eval.c (note_object_deleted):
	* eval.c (struct call_trapping_problems):
	* eval.c (flagged_a_squirmer):
	* eval.c (call_trapping_problems_2):
	* eval.c (call_trapping_problems_1):
	* eval.c (call_trapping_problems):
	* eval.c (struct va_call_trapping_problems):
	* eval.c (va_call_trapping_problems_1):
	* eval.c (va_call_trapping_problems):
	* eval.c (call_with_suspended_errors):
	* eval.c (struct calln_trapping_problems):
	* eval.c (calln_trapping_problems_1):
	* eval.c (calln_trapping_problems):
	* eval.c (call1_trapping_problems):
	* eval.c (call2_trapping_problems):
	* eval.c (call3_trapping_problems):
	* eval.c (call4_trapping_problems):
	* eval.c (call5_trapping_problems):
	* eval.c (eval_in_buffer_trapping_problems_1):
	* eval.c (eval_in_buffer_trapping_problems):
	* eval.c (run_hook_trapping_problems):
	* eval.c (safe_run_hook_trapping_problems_1):
	* eval.c (safe_run_hook_trapping_problems):
	* eval.c (struct run_hook_with_args_in_buffer_trapping_problems):
	* eval.c (run_hook_with_args_in_buffer_trapping_problems_1):
	* eval.c (run_hook_with_args_in_buffer_trapping_problems):
	* eval.c (va_run_hook_with_args_trapping_problems):
	* eval.c (va_run_hook_with_args_in_buffer_trapping_problems):
	* eval.c (reinit_vars_of_eval):
	* eval.c (vars_of_eval):
	Implement trapping-problems mechanism, eliminate old mechanisms or
	redo in terms of new one.

	* frame.c (enter_redisplay_critical_section):
	* frame.c (exit_redisplay_critical_section):
	* gutter.c (redraw_exposed_gutters):
	* gutter.c (Fset_default_gutter_position):
	* gutter.c (Fredisplay_gutter_area):
	Flush out the concept of "critical display section", defined by
	the in_display() var.  Use an internal_bind() to get it reset,
	rather than just doing it at end, because there may be a non-local
	exit.

	* event-msw.c (struct mswindows_protect_modal_loop):
	* event-msw.c (mswindows_protect_modal_loop_1):
	* event-msw.c (mswindows_protect_modal_loop):
	* event-msw.c (mswindows_unmodalize_signal_maybe):
	* event-msw.c (mswindows_pump_outstanding_events):
	* event-msw.c (mswindows_need_event):
	* event-msw.c (mswindows_dde_callback):
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c:
	* event-msw.c (vars_of_event_mswindows):
	* event-msw.c (struct ntpipe_slurp_stream_shared_data):
	* event-msw.c (struct ntpipe_shove_stream):
	* event-stream.c (pre_command_hook):
	* event-stream.c (post_command_hook):
	* event-stream.c (vars_of_event_stream):
	* event-stream.c (run_pre_idle_hook):
	* console-msw.h:
	* device.c (call_critical_lisp_code): Rewrite.
	* dialog-msw.c (dialog_proc):
	* frame.c (adjust_frame_size):
	* frame.h:
	* intl.c (init_intl):
	* toolbar.c (Fset_default_toolbar_position):
	* toolbar.c (update_toolbar_button):
	* menubar-msw.c (unsafe_handle_wm_initmenu_1):
	* menubar-msw.c (mswindows_handle_wm_initmenupopup):
	* menubar-msw.c (mswindows_handle_wm_initmenu):
	* redisplay.c:
	* redisplay.c (call_redisplay_end_triggers):
	* redisplay.c (redisplay_frame):
	* redisplay.c (redisplay_no_pre_idle_hook):
	* redisplay.c (eval_within_redisplay):
	* redisplay.c (Fredisplay_echo_area):
	* alloc.c (garbage_collect_1):
	* menubar-x.c:
	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	* menubar-x.c (struct menu_item_descriptor_to_widget_value):
	* menubar-x.c (protected_menu_item_descriptor_to_widget_value_1):
	* menubar-x.c (protected_menu_item_descriptor_to_widget_value):
	* menubar-x.c (pre_activate_callback):
	Make use of new trapping-errors stuff and rewrite code based on
	old mechanisms.

	* glyphs-widget.c (widget_query_geometry):
	* glyphs-widget.c (layout_query_geometry):
	* redisplay.h:
	Protect calling Lisp in redisplay.

	* insdel.c (signal_first_change):
	* insdel.c (signal_before_change):
	* insdel.c (signal_after_change):
	Protect hooks against deleting existing buffers.

	* frame-msw.c (mswindows_init_frame_1):
	Use EQ, not EQUAL in hash tables whose keys are just numbers.
	Otherwise we run into stickiness in redisplay because
	internal_equal() can QUIT.

	================================================================
			       SIGNAL, C-G CHANGES
	================================================================

	Here we change the way that C-g interacts with event reading.  The
	idea is that a C-g occurring while we're reading a user event
	should be read as C-g, but elsewhere should be a QUIT.  The former
	code did all sorts of bizarreness -- requiring that no QUIT occurs
	anywhere in event-reading code (impossible to enforce given the
	stuff called or Lisp code invoked), and having some weird system
	involving enqueue/dequeue of a C-g and interaction with Vquit_flag
	-- and it didn't work.

	Now, we simply enclose all code where we want C-g read as an event
	with {begin/end}_dont_check_for_quit().  This completely turns off
	the mechanism that checks (and may remove or alter) C-g in the
	read-ahead queues, so we just get the C-g normal.

	Signal.c documents this very carefully.

	* cmdloop.c (Fcommand_loop_1):
	Correct use of dont_check_for_quit to new scheme, remove old
	out-of-date comments.

	* event-stream.c (maybe_echo_keys):
	* event-stream.c (enqueue_command_event_1):
	* event-stream.c (next_event_internal):
	* event-stream.c (Fnext_event):
	* event-stream.c (Fnext_command_event):
	* event-stream.c (Fdispatch_non_command_events):
	* event-stream.c (Fdiscard_input):
	* event-stream.c (Fsleep_for):
	* event-stream.c (Fsit_for):
	* event-stream.c (wait_delaying_user_input):
	* event-stream.c (execute_internal_event):
	* event-stream.c (lookup_command_event):
	* event-stream.c (Fread_key_sequence):
	* event-stream.c:
	* event-stream.c (event_stream_next_event):
	 Fix C-g handling to actually work.

	* device-x.c (get_device_from_display):
	* device-x.c (x_error_handler):
	* device-x.c (x_IO_error_handler):
	Disable quit checking when err out.

	* signal.c:
	* signal.c (handle_async_timeout_signal):
	* signal.c (check_what_happened):
	* signal.c (begin_dont_check_for_quit):
	* signal.c (check_quit):
	Cleanup.  Add large descriptive comment.

	* process-unix.c (unix_open_network_stream):
	* process-unix.c (unix_open_multicast_group):
	* process-nt.c (nt_open_network_stream):
	* sysdep.c (retry_read_1):
	* sysdep.c (retry_write_1):
	Use QUIT instead of REALLY_QUIT.
	It's not necessary to use REALLY_QUIT and just confuses the issue.

	* lisp.h (INTERNAL_QUITP): Comment quit handlers.

	================================================================
				 CONS CHANGES
	================================================================

	free_cons() now takes a Lisp_Object not the result of XCONS().
	car and cdr have been renamed so that they don't get used directly;
	go through XCAR(), XCDR() instead.

	* alloc.c (Fcons):
	* alloc.c (free_cons):
	* alloc.c (free_list):
	* alloc.c (free_alist):
	* dired.c (file_name_completion_unwind):
	* dired.c (user_name_completion_unwind):
	* editfns.c (save_excursion_save):
	* editfns.c (save_excursion_restore):
	* editfns.c (save_restriction_restore):
	* emodules.c (module_load_unwind):
	* fns.c:
	* fns.c (delq_no_quit_and_free_cons):
	* fns.c (merge_pred_function):
	* fns.c (tweaked_internal_equal):
	* glyphs-msw.c (extract_xpm_color_names):
	* glyphs-x.c (extract_xpm_color_names):
	* glyphs.c (image_instantiate_cache_result):
	* glyphs.c (image_instance_changed):
	* keymap.c (traverse_keymaps):
	* minibuf.c (read_minibuffer_internal_unwind):
	* search.c (free_created_dynarrs):
	* eval.c (specbind_unwind_local):
	* lread.c (various):
	* lisp.h (struct Lisp_Cons):
	* lisp.h (cons_car):
	Correct free_cons calling convention: now takes Lisp_Object,
	not Lisp_Cons

	* chartab.c (word_boundary_p):
	Eliminate direct use of ->car, ->cdr, should be black box.


	* callint.c (quotify_args):
	Rewrote using EXTERNAL_LIST_LOOP to avoid use of Lisp_Cons.

	================================================================
			   USE INTERNAL-BIND-*
	================================================================

	* eval.c (restore_lisp_object):
	* eval.c (restore_int):
	Cleanups of these funs.

	* alloc.c (begin_gc_forbidden):
	* fileio.c:
	* fileio.c (close_file_unwind):
	* fileio.c (Fdo_auto_save):
	* undo.c:
	* undo.c (Fprimitive_undo):
	* specifier.c:
	* specifier.c (unlock_ghost_specifiers_protected):
	* specifier.c (set_specifier_caching):
	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	* profile.c (struct get_profiling_info_closure):
	* profile.c (Fget_profiling_info):
	* lread.c:
	* lread.c (load_unwind):
	* lread.c (Fload_internal):
	* lread.c (read0):
	* lread.c (read1):
	* lread.c (read_list_conser):
	* lread.c (read_vector):
	* lread.c (read_compiled_function):
	* redisplay.c (Fredraw_frame):
	* redisplay.c (Fredisplay_frame):
	* redisplay.c (Fredraw_device):
	* redisplay.c (Note): New.
	* redisplay.c (Fredisplay_device):
	* redisplay.c (redisplay_without_hooks):
	* menubar-x.c (pre_activate_callback):
	* macros.c (Fexecute_kbd_macro):
	Rewrote to use internal_bind_int() and internal_bind_lisp_object()
	in place of whatever varied and cumbersome mechanisms were
	formerly there.


	================================================================
				SPECBIND SANITY
	================================================================

	* backtrace.h:
	- Improved comments

	* backtrace.h (SPECBIND):
	* backtrace.h (SPECBIND_FAST_UNSAFE):
	* backtrace.h (UNBIND_TO_GCPRO):
	* backtrace.h (UNBIND_TO):
	* backtrace.h (UNBIND_TO_GCPRO_VARIABLES_ONLY):
	* bytecode.c (execute_optimized_program):
	* eval.c (grow_specpdl):
	* eval.c (specbind):
	* eval.c (specbind_magic):
	* eval.c (record_unwind_protect):
	* eval.c (unbind_to_1):
	* eval.c (unbind_to_hairy):
	Add new mechanism check_specbind_stack_sanity() for sanity
	checking code each time the catchlist or specbind stack change.
	Removed older prototype of same mechanism.

	================================================================
				    MISC
	================================================================

	* lisp.h:
	* insdel.c:
	* window.c:
	* device.c:
	* console.c:
	* buffer.c:
	 Fleshed out authorship.

	* device-msw.c (mswindows_handle_page_setup_dialog_box):
	Correct bad Unicode-ization.

	* print.c (debug_print_no_newline):
	* print.c (debug_backtrace):
	Be more careful when not initialized or in fatal error handling.

	* search.c (looking_at_1):
	* search.c (string_match_1):
	* search.c (search_buffer):
	* search.c (Fstore_match_data):
	Eliminate running_asynch_code, an FSF holdover.

	* alloc.c (vars_of_alloc):
	* alloc.c:
	Added comments about gc-cons-threshold.

	* dialog-x.c:
	* dialog-x.c (dbox_descriptor_to_widget_value):
	Use begin_gc_forbidden() around code to build up a widget value
	tree, like in menubar-x.c.

	* gui.c (gui_item_id_hash): Use Qunbound not Qnil as the default for
	gethash.

	* lisp-disunion.h:
	* lisp-union.h:
	Added warnings on use of VOID_TO_LISP().

	* lisp.h:
	Use ERROR_CHECK_STRUCTURES to turn on
	ERROR_CHECK_TRAPPING_PROBLEMS and ERROR_CHECK_TYPECHECK

	* lisp.h (assert_with_message):
	Add assert_with_message.

	* lisp.h (GCPRO1_ARRAY):
	* lisp.h (NGCPRO1_ARRAY):
	* lisp.h (NNGCPRO1_ARRAY):
	Add macros for gcproing entire arrays. (You could do this before
	but it required manual twiddling the gcpro structure.)

	* lisp.h:
	Add prototypes for new functions defined elsewhere.

2002-05-23  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (objs):
	* Makefile.in.in (Emacs.ad.h):
	* Makefile.in.in (alloca.o): Removed.
	* Makefile.in.in (allocax.o): New.
	Add alloca.o.  Ensure that alloca.s doesn't compile into alloca.o,
	but allocax.o (not that it's currently used or anything.)

	* EmacsFrame.c (Xt_StringToScrollBarPlacement):
	* abbrev.c (abbrev_oblookup):
	* alloc.c:
	* alloc.c (allocate_lisp_storage):
	* alloc.c (recompute_funcall_allocation_flag):
	* alloc.c (recompute_need_to_garbage_collect):
	* alloc.c (common_init_alloc_once_early):
	* alloca.c:
	* alloca.c (hdr):
	* alloca.c (xemacs_c_alloca):
	* callint.c (Fcall_interactively):
	* callproc.c (Fold_call_process_internal):
	* config.h.in:
	* config.h.in (XEMACS_WANTS_C_ALLOCA):
	* device-msw.c (msprinter_default_printer):
	* device-msw.c (Fmswindows_printer_list):
	* device-x.c (x_init_device):
	* dired.c (Fdirectory_files):
	* dired.c (file_name_completion_stat):
	* doc.c (get_doc_string):
	* editfns.c (Fformat_time_string):
	* emacs.c (main_1):
	* emodules.c (emodules_load):
	* eval.c (Ffuncall):
	* event-Xt.c (x_to_emacs_keysym):
	* event-msw.c (mswindows_dde_callback):
	* event-msw.c (mswindows_wnd_proc):
	* event-stream.c (Fnext_event):
	* file-coding.c (setup_eol_coding_systems):
	* fileio.c:
	* fileio.c (Fdirectory_file_name):
	* fileio.c (if):
	* fileio.c (Fsubstitute_in_file_name):
	* fileio.c (Fencrypt_string):
	* fileio.c (Fdecrypt_string):
	* filelock.c (MAKE_LOCK_NAME):
	* filelock.c (lock_file_1):
	* filelock.c (current_lock_owner):
	* filelock.c (lock_file):
	* fns.c (concat):
	* fns.c (mapcar1):
	* fns.c (Fbase64_encode_region):
	* fns.c (Fbase64_encode_string):
	* fns.c (Fbase64_decode_region):
	* fns.c (Fbase64_decode_string):
	* glyphs-gtk.c (gtk_xface_instantiate):
	* glyphs-msw.c (mswindows_xface_instantiate):
	* glyphs-msw.c (mswindows_widget_property):
	* glyphs-msw.c (mswindows_combo_box_property):
	* glyphs-x.c (x_xface_instantiate):
	* gui-x.c (add_accel_and_to_external):
	* input-method-xlib.c (EmacsXtCvtStringToXIMStyles):
	* intl-win32.c (Fmswindows_get_valid_keyboard_layouts):
	* lisp.h:
	* lisp.h (alloca_new):
	* lisp.h (NOTE): New.
	* lisp.h (MAX_STRING_ASCII_BEGIN):
	* lread.c (Fload_internal):
	* lread.c (locate_file_map_suffixes):
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	* menubar-msw.c (mswindows_translate_menu_or_dialog_item):
	* menubar.c (Fnormalize_menu_item_name):
	* mule-wnnfns.c (Fwnn_open):
	* nt.c (init_mswindows_environment):
	* objects-msw.c (mswindows_string_to_color):
	* objects-msw.c (mswindows_font_instance_truename):
	* process-nt.c (nt_create_process):
	* realpath.c (cygwin_readlink_and_correct_case):
	* redisplay-gtk.c:
	* redisplay-gtk.c (gtk_text_width):
	* redisplay-gtk.c (gtk_output_string):
	* redisplay-output.c:
	* redisplay-output.c (compare_runes_2):
	* redisplay-x.c:
	* redisplay-x.c (x_text_width):
	* redisplay-x.c (x_output_string):
	* redisplay.c (generate_displayable_area):
	* redisplay.c (regenerate_window):
	* search.c (wordify):
	* search.c (Fregexp_quote):
	* select-msw.c (mswindows_own_selection):
	* sysdep.c (sys_subshell):
	* sysdep.c (init_system_name):
	* syswindows.h (LOCAL_TO_WIN32_FILE_FORMAT):
	* syswindows.h (WIN32_TO_LOCAL_FILE_FORMAT):
	* text.c (convert_emchar_string_into_malloced_string):
	* text.h:
	* text.h (EI_ALLOC):
	* text.h (eito_alloca):
	* text.h (EI_CASECHANGE):
	* text.h (DFC_ALLOCA_USE_CONVERTED_DATA):
	* text.h (DFC_C_STRING_ALLOCA_USE_CONVERTED_DATA):
	* text.h (GET_STRERROR):
	* ui-byhand.c (Fgtk_curve_get_vector):
	* ui-byhand.c (Fgtk_curve_set_vector):

	Fix Raymond Toy's crash.  Repeat to self: 2^21 - 1 is NOT the
	same as (2 << 21) - 1.

	Fix crashes due to excessive alloca().  replace alloca() with
	ALLOCA(), which calls the C alloca() [which uses xmalloc()]
	when the size is too big.  Insert in various places calls to
	try to flush the C alloca() stored info if there is any.

	Add MALLOC_OR_ALLOCA(), for places that expect to be alloca()ing
	large blocks.  This xmalloc()s when too large and records an
	unwind-protect to free -- relying on the caller to unbind_to()
	elsewhere in the function.  Use it in concat().

	Use MALLOC instead of ALLOCA in select-msw.c.

2002-05-21  Jonathan Harris  <jonathan@xemacs.org>

	* device-msw.c (mswindows_handle_page_setup_dialog_box):
	Fix detection of metric units to work on Win95

2002-05-17  Stephen J. Turnbull  <stephen@xemacs.org>

	* eldap.c (print_ldap): swap arguments of write_c_string.

2002-05-16  Ben Wing  <ben@xemacs.org>

	* bytecode.c (execute_rare_opcode):
	* editfns.c:
	* editfns.c (save_restriction_save):
	* editfns.c (save_restriction_restore):
	* editfns.c (Fsave_restriction):
	* lisp.h:
	* lread.c (Feval_region):
	Fix save-restriction to use markers rather than pseudo-markers
	(integers representing the amount of text on either side of the
	region).  That way, all inserts are handled correctly, not just
	those inside old restriction.

	Add buffer argument to save_restriction_save().

	* process.c:
	* process.c (process_setup_for_insertion):
	* process.c (read_process_output):
	* process.c (status_notify):
	Clean up very dirty and kludgy code that outputs into a buffer --
	use proper unwind protects, etc.

	* font-lock.c (find_context):
	Do save-restriction/widen around the function -- otherwise, incorrect
	results will ensue when a buffer has been narrowed before a call to
	e.g. `buffer-syntactic-context' -- something that happens quite often.

	* fileio.c:
	* fileio.c (Fmake_temp_name):
	* fileio.c (syms_of_fileio):
	Look for a handler for make-temp-name.

	* window.c:
	* window.c (allocate_window):
	* window.c (Fset_window_point):
	* window.c (unshow_buffer):
	* window.c (Fset_window_buffer):
	* window.c (make_dummy_parent):
	* winslots.h:
	Try to solve this annoying problem: have two frames displaying the
	buffer, in different places; in one, temporarily switch away to
	another buffer and then back -- and you've lost your position;
	it's reset to the other one in the other frame.  My current
	solution involves window-level caches of buffers and points (also
	a cache for window-start); when set-window-buffer is called, it
	looks to see if the buffer was previously visited in the window,
	and if so, uses the most recent point at that time. (It's a
	marker, so it handles changes.)

	#### Note: It could be argued that doing it on the frame level
	would be better -- e.g. if you visit a buffer temporarily through
	a grep, and then go back to that buffer, you presumably want the
	grep's position rather than some previous position provided
	everything was in the same frame, even though the grep was in
	another window in the frame.  However, doing it on the frame level
	fails when you have two windows on the same frame.  Perhaps we
	keep both a window and a frame cache, and use the frame cache if
	there are no other windows on the frame showing the buffer, else
	the window's cache?  This is probably something to be configurable
	using a specifier.  Suggestions please please please?

	* window.c (window_scroll):
	* window.c (Fmove_to_window_line):
	Clean up a bit code that deals with the annoyance of window-point
	vs. point.

2002-05-16  Stephen J. Turnbull  <stephen@xemacs.org>

	* select.c (Fown_selection_internal):
	* select.c (Fget_selection_internal):
	Revert Jerry James's 2002-04-23 patch.

2002-05-14  Ben Wing  <ben@xemacs.org>

	* font-lock.c (find_context):
	Don't use off the beginning position to initiate syntax cache.

2002-05-14  Ben Wing  <ben@xemacs.org>

	* text.c (copy_buffer_text_out): Fix bug leading to crashes
	with multibyte text.
	* win32.c (Fmswindows_shell_execute): Fix crash due to errant
	xfree().

2002-05-14  Ben Wing  <ben@xemacs.org>

	* callproc.c (Fold_call_process_internal):
	Use Fget_buffer_create() with a string buffer, as documented.

	* extents.c (signal_extent_changed): indentation.

	* lstream.c (lisp_buffer_reader): fix a bug in selective-display
	handling; not the crash we're seeing.

	* marker.c:
	* marker.c (byte_marker_position):
	* marker.c (set_byte_marker_position):
	delete superfluous error-checking -- it's already there in
	bytebpos_to_membpos() and vice-versa.

2002-05-13  Ben Wing  <ben@xemacs.org>

	* config.h.in:
	* font-lock.c:
	Reenable font-lock code since it's used by mouse.el.  The flag for
	this exists in config.h.in but not currently controllable through
	configure.

2002-05-13  Adrian Aichner  <adrian@xemacs.org>

	* callproc.c: Process-related docstring improvements spurred by
	Norbert Koch.

2002-05-09  Ben Wing  <ben@xemacs.org>

	* doprnt.c (emacs_doprnt_1):
	Use make_int() not make_char() when error about bad charval,
	or abort will occur.

	* extents.c (signal_extent_changed):
	Loop over children, not ourself -- avoid infinite loop.

	* lisp-disunion.h:
	* lisp-union.h:
	Rename make_char() to make_char_1 for error-checking purposes.

	* lread.c (read_escape):
	Syntax error if escape is outside of ISO-8859-1 range.
	Remove hopelessly broken (and unworkable) FSF_KEYS code.

	* mule-coding.c (Fdecode_shift_jis_char):
	* search.c (skip_chars):
	Spacing changes.

	* text.h:
	New make_char() -- verify that the char value is legal.

2002-04-23  Jerry James  <james@xemacs.org>

	* select.c (Fown_selection_internal): Document connection with
	interprogram-cut-function.
	* select.c (Fget_selection_internal): return Qnil if XEmacs owns
	the selection and it does not need coercion.
	Document connection with interprogram-paste-function.

2002-05-06  Jonathan Harris  <jonathan@xemacs.org>

	* console-msw.h:
	* event-msw.c (mswindows_wnd_proc):
	Condition references to menu accelerator functions on HAVE_MENUBARS.

	* frame-msw.c (mswindows_init_frame_3):
	Remove obsolete runemacs hack which called ShowWindow() twice.

	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.h:
	* intl-encap-win32.c:
	Use handwritten version of GetEnvironmentStrings() in
	intl-encap-win32.c.

	* ntproc.c: Removed.

	* s/windowsnt.h:
	Disable .data section renaming hack when using portable dumping.
	Force _WIN32_WINNT = 0x0400 since intl-auto-encap-win32.[ch]
	requires this.

2002-05-05  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (batch_test_emacs):

	Fix so that packages are around when testing.

	* abbrev.c (struct abbrev_match_mapper_closure):
	* abbrev.c (abbrev_match_mapper):
	* abbrev.c (abbrev_match):
	* abbrev.c (Fexpand_abbrev):
	* alloc.c (deadbeef_memory):
	* alloc.c (STRING_FULLSIZE):
	* alloc.c (sledgehammer_check_ascii_begin):
	* alloc.c (make_uninit_string):
	* alloc.c (set_string_char):
	* alloc.c (init_string_ascii_begin):
	* alloc.c (make_string_nocopy):
	* alloc.c (compact_string_chars):
	* alloc.c (debug_string_purity_print):
	* buffer.c (mark_buffer):
	* buffer.c (print_buffer):
	* buffer.c (finish_init_buffer):
	* buffer.c (Fother_buffer):
	* buffer.c (Fkill_buffer):
	* buffer.h:
	* buffer.h (struct buffer_text):
	* buffer.h (struct buffer):
	* buffer.h (BYTE_BUF_BEG):
	* buffer.h (BYTE_BUF_BEGV):
	* buffer.h (BYTE_BUF_ZV):
	* buffer.h (BYTE_BUF_Z):
	* buffer.h (BYTE_BUF_PT):
	* buffer.h (INC_BYTEBPOS):
	* buffer.h (make_charbpos):
	* buffer.h (BYTE_BUF_FETCH_CHAR_RAW):
	* buffer.h (BYTE_BUF_CHARPTR_COPY_EMCHAR):
	* buffer.h (SET_BOTH_BUF_BEGV):
	* buffer.h (SET_BOTH_BUF_ZV):
	* buffer.h (BOTH_BUF_SET_PT):
	* buffer.h (BUF_NARROWED):
	* buffer.h (BYTE_BUF_CEILING_OF_IGNORE_ACCESSIBLE):
	* buffer.h (BYTE_BUF_FLOOR_OF_IGNORE_ACCESSIBLE):
	* bytecode.c (optimize_compiled_function):
	* bytecode.c (print_compiled_function):
	* bytecode.c (Fcompiled_function_annotation):
	* callint.c (Fcall_interactively):
	* casefiddle.c:
	* casefiddle.c (casify_object):
	* casefiddle.c (casify_region_internal):
	* casetab.c:
	* casetab.c (STRING256_P):
	* casetab.c (print_case_table):
	* casetab.c (allocate_case_table):
	* casetab.c (Fmake_case_table):
	* casetab.c (case_table_char):
	* casetab.c (Fget_case_table):
	* casetab.c (Fput_case_table):
	* casetab.c (Fput_case_table_pair):
	* casetab.c (Fcopy_case_table):
	* casetab.c (compute_canon_mapper):
	* casetab.c (compute_up_or_eqv_mapper):
	* casetab.c (recompute_case_table):
	* casetab.c (convert_old_style_syntax_string):
	* casetab.c (set_case_table):
	* casetab.c (Fset_standard_case_table):
	* casetab.c (syms_of_casetab):
	* casetab.c (complex_vars_of_casetab):
	* casetab.h:
	* casetab.h (struct Lisp_Case_Table):
	* charset.h:
	* charset.h (emchar_charset):
	* charset.h (leading_byte_private_p):
	* charset.h (private_leading_byte_prefix):
	* charset.h (CHARSET_PRIVATE_P):
	* charset.h (EMCHAR_FIELD1_MASK):
	* charset.h (emchar_field1):
	* charset.h (MIN_EMCHAR_FIELD2_OFFICIAL):
	* charset.h (MIN_EMCHAR_FIELD1_OFFICIAL):
	* charset.h (MIN_EMCHAR_FIELD2_PRIVATE):
	* charset.h (MIN_EMCHAR_FIELD1_PRIVATE):
	* charset.h (MIN_CHAR_OFFICIAL_TYPE9N):
	* charset.h (BREAKUP_EMCHAR_1_UNSAFE):
	* charset.h (BREAKUP_EMCHAR):
	* chartab.c:
	* chartab.c (char_table_entry_hash):
	* chartab.c (decode_char_table_range):
	* chartab.c (encode_char_table_range):
	* chartab.c (struct ptemap):
	* chartab.c (print_table_entry):
	* chartab.c (print_char_table):
	* chartab.c (char_table_equal):
	* chartab.c (char_table_hash):
	* chartab.c (set_char_table_default):
	* chartab.c (fill_char_table):
	* chartab.c (Freset_char_table):
	* chartab.c (Fmake_char_table):
	* chartab.c (get_non_ascii_char_table_value):
	* chartab.c (Fchar_table_default):
	* chartab.c (Fget_char_table):
	* chartab.c (copy_mapper):
	* chartab.c (copy_char_table_range):
	* chartab.c (get_range_char_table):
	* chartab.c (Fget_range_char_table):
	* chartab.c (put_char_table):
	* chartab.c (Fput_char_table):
	* chartab.c (Fremove_char_table):
	* chartab.c (map_over_charset_ascii_1):
	* chartab.c (map_over_charset_control_1):
	* chartab.c (map_over_charset_row):
	* chartab.c (map_over_other_charset):
	* chartab.c (map_char_table):
	* chartab.c (slow_map_char_table_fun):
	* chartab.c (Fmap_char_table):
	* chartab.c (check_category_char):
	* chartab.c (CATEGORY_SET):
	* chartab.c (word_boundary_p):
	* chartab.c (syms_of_chartab):
	* chartab.h:
	* chartab.h (struct Lisp_Char_Table):
	* cmds.c:
	* cmds.c (internal_self_insert):
	* console-msw.h:
	* console-stream.c (stream_clear_region):
	* console-stream.c (stream_ring_bell):
	* console-x.c (x_semi_canonicalize_console_connection):
	* console.c (find_nonminibuffer_frame_not_on_console_predicate):
	* console.h:
	* data.c (eq_with_ebola_notice):
	* data.c (Faref):
	* data.c (Faset):
	* device-msw.c (print_devmode):
	* device.c (find_nonminibuffer_frame_not_on_device_predicate):
	* device.h:
	* device.h (struct pixel_to_glyph_translation_cache):
	* dialog-msw.c (dialog_proc):
	* dialog-x.c (maybe_run_dbox_text_callback):
	* dired-msw.c:
	* dired-msw.c (mswindows_get_files):
	* dired.c:
	* dired.c (Fdirectory_files):
	* dired.c (file_name_completion):
	* dired.c (user_name_completion):
	* doc.c (unparesseuxify_doc_string):
	* doprnt.c (emacs_doprnt_1):
	* dumper.c:
	* dumper.c (PDUMP_READ_ALIGNED):
	* dumper.c (pdump_structure_size):
	* dumper.c (pdump):
	* dumper.c (pdump_load_finish):
	* editfns.c:
	* editfns.c (Fstring_to_char):
	* editfns.c (Ftranslate_region):
	* editfns.c (Fdelete_region):
	* editfns.c (widen_buffer):
	* editfns.c (Fnarrow_to_region):
	* editfns.c (save_restriction_restore):
	* elhash.c (print_hash_table_data):
	* elhash.c (print_hash_table):
	* elhash.c (Finternal_hash_value):
	* emacs.c:
	* emacs.c (main_1):
	* emacs.c (standard_args):
	* eval.c (print_subr):
	* eval.c (Fuser_variable_p):
	* eval.c (backtrace_specials):
	* eval.c (Fbacktrace):
	* event-Xt.c (USE_CHARSET):
	* event-Xt.c (x_keysym_to_character):
	* event-Xt.c (emacs_Xt_format_magic_event):
	* event-gtk.c (emacs_gtk_format_magic_event):
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (mswindows_find_frame):
	* event-msw.c (FROB):
	* event-msw.c (emacs_mswindows_format_magic_event):
	* event-stream.c (external_debugging_print_event):
	* event-stream.c (command_builder_find_leaf):
	* event-stream.c (dribble_out_event):
	* events.c (print_event_1):
	* events.c (print_event):
	* events.c (nth_of_key_sequence_as_event):
	* events.c (Fevent_next):
	* events.c (Fset_event_next):
	* events.h:
	* extents.c:
	* extents.c (stack_of_extents):
	* extents.c (memxpos_to_startind):
	* extents.c (buffer_or_string_bytexpos_to_startind):
	* extents.c (buffer_or_string_bytexpos_to_endind):
	* extents.c (gap_array_adjust_markers):
	* extents.c (gap_array_move_gap):
	* extents.c (extent_list_locate_from_pos):
	* extents.c (extent_list_at):
	* extents.c (soe_dump):
	* extents.c (soe_move):
	* extents.c (extent_endpoint_byte):
	* extents.c (extent_endpoint_char):
	* extents.c (signal_single_extent_changed):
	* extents.c (signal_extent_changed):
	* extents.c (signal_extent_property_changed):
	* extents.c (extent_attach):
	* extents.c (extent_detach):
	* extents.c (extent_in_region_p):
	* extents.c (map_extents):
	* extents.c (adjust_extents):
	* extents.c (adjust_extents_for_deletion):
	* extents.c (extent_find_end_of_run):
	* extents.c (extent_find_beginning_of_run):
	* extents.c (extent_fragment_update):
	* extents.c (print_extent_1):
	* extents.c (print_extent):
	* extents.c (extent_remprop):
	* extents.c (extent_endpoint_external):
	* extents.c (Fextent_length):
	* extents.c (Fnext_extent_change):
	* extents.c (Fprevious_extent_change):
	* extents.c (Fset_extent_parent):
	* extents.c (set_extent_endpoints_1):
	* extents.c (set_extent_endpoints):
	* extents.c (set_extent_openness):
	* extents.c (make_extent):
	* extents.c (Fmake_extent):
	* extents.c (Fset_extent_endpoints):
	* extents.c (Fextent_in_region_p):
	* extents.c (Fmap_extents):
	* extents.c (struct slow_map_extent_children_arg):
	* extents.c (slow_map_extent_children_function):
	* extents.c (Fmap_extent_children):
	* extents.c (struct extent_at_arg):
	* extents.c (decode_extent_at_flag):
	* extents.c (extent_at):
	* extents.c (Fextent_at):
	* extents.c (Fextents_at):
	* extents.c (struct verify_extents_arg):
	* extents.c (verify_extent_modification):
	* extents.c (struct process_extents_for_insertion_arg):
	* extents.c (process_extents_for_insertion_mapper):
	* extents.c (process_extents_for_insertion):
	* extents.c (struct process_extents_for_deletion_arg):
	* extents.c (process_extents_for_deletion):
	* extents.c (report_extent_modification_mapper):
	* extents.c (report_extent_modification):
	* extents.c (set_extent_invisible):
	* extents.c (Fset_extent_face):
	* extents.c (Fset_extent_mouse_face):
	* extents.c (set_extent_glyph):
	* extents.c (Fset_extent_begin_glyph_layout):
	* extents.c (Fset_extent_end_glyph_layout):
	* extents.c (Fset_extent_priority):
	* extents.c (Fset_extent_property):
	* extents.c (extent_properties):
	* extents.c (ADD_PROP):
	* extents.c (Fextent_properties):
	* extents.c (do_highlight):
	* extents.c (run_extent_copy_paste_internal):
	* extents.c (run_extent_copy_function):
	* extents.c (run_extent_paste_function):
	* extents.c (run_extent_paste_function_char):
	* extents.c (insert_extent):
	* extents.c (struct add_string_extents_arg):
	* extents.c (add_string_extents_mapper):
	* extents.c (struct add_string_extents_the_hard_way_arg):
	* extents.c (add_string_extents_the_hard_way_mapper):
	* extents.c (add_string_extents):
	* extents.c (struct splice_in_string_extents_arg):
	* extents.c (splice_in_string_extents_mapper):
	* extents.c (struct splice_in_string_extents_the_hard_way_arg):
	* extents.c (splice_in_string_extents_the_hard_way_mapper):
	* extents.c (splice_in_string_extents):
	* extents.c (copy_string_extents_mapper):
	* extents.c (copy_string_extents):
	* extents.c (get_char_property):
	* extents.c (get_char_property_char):
	* extents.c (Fget_text_property):
	* extents.c (Fget_char_property):
	* extents.c (struct put_text_prop_arg):
	* extents.c (put_text_prop_mapper):
	* extents.c (put_text_prop_openness_mapper):
	* extents.c (put_text_prop):
	* extents.c (Fput_text_property):
	* extents.c (Fadd_text_properties):
	* extents.c (Fremove_text_properties):
	* extents.c (next_single_property_change):
	* extents.c (previous_single_property_change):
	* extents.h:
	* extents.h (struct extent):
	* faces.c (print_face):
	* faces.c (update_face_inheritance_mapper):
	* faces.c (ensure_face_cachel_complete):
	* faces.c (face_cachel_charset_font_metric_info):
	* file-coding.c (print_coding_system):
	* file-coding.c (print_coding_system_in_print_method):
	* file-coding.c (chain_print):
	* file-coding.c (no_conversion_convert):
	* file-coding.c (undecided_print):
	* file-coding.c (gzip_print):
	* file-coding.h (DECLARE_CODING_SYSTEM_TYPE):
	* file-coding.h (DECODE_ADD_BINARY_CHAR):
	* fileio.c (Ffile_truename):
	* fileio.c (expand_and_dir_to_file):
	* fns.c (print_bit_vector):
	* fns.c (Flength):
	* fns.c (Fstring_lessp):
	* fns.c (Fsplit_path):
	* fns.c (Ffillarray):
	* fns.c (Fbase64_encode_string):
	* fns.c (Fbase64_decode_string):
	* font-lock.c:
	* font-lock.c (find_context):
	* frame-gtk.c (gtk_set_frame_text_value):
	* frame-msw.c (mswindows_get_mouse_position):
	* frame-msw.c (mswindows_get_frame_parent):
	* frame-x.c:
	* frame-x.c (x_set_frame_text_value):
	* frame.c:
	* frame.c (allocate_frame_core):
	* frame.c (Fignore_event):
	* frame.h:
	* glade.c (connector):
	* glyphs-gtk.c:
	* glyphs-gtk.c (convert_EImage_to_GDKImage):
	* glyphs-gtk.c (gtk_print_image_instance):
	* glyphs-gtk.c (gtk_locate_pixmap_file):
	* glyphs-msw.c (mswindows_locate_pixmap_file):
	* glyphs-msw.c (mswindows_print_image_instance):
	* glyphs-msw.c (charset_of_text):
	* glyphs-msw.h:
	* glyphs-x.c (LISP_DEVICE_TO_X_SCREEN):
	* glyphs-x.c (convert_EImage_to_XImage):
	* glyphs-x.c (x_print_image_instance):
	* glyphs-x.c (x_locate_pixmap_file):
	* glyphs.c (check_instance_cache_mapper):
	* glyphs.c (print_image_instance):
	* glyphs.c (query_string_font):
	* glyphs.c (check_valid_xbm_inline):
	* glyphs.c (display_table_entry):
	* glyphs.h:
	* gui-msw.c (mswindows_handle_gui_wm_command):
	* gui-x.c (mark_widget_value_mapper):
	* gui-x.c (popup_selection_callback):
	* gui.h:
	* gutter.h (GUTTER_POS_LOOP):
	* hash.h:
	* indent.c:
	* indent.c (column_at_point):
	* indent.c (string_column_at_point):
	* indent.c (byte_spaces_at_point):
	* indent.c (Fcurrent_indentation):
	* indent.c (Fmove_to_column):
	* insdel.c (BYTE_BUF_GPT):
	* insdel.c (SET_BYTE_BUF_GPT):
	* insdel.c (SET_END_SENTINEL):
	* insdel.c (set_buffer_point):
	* insdel.c (gap_left):
	* insdel.c (gap_right):
	* insdel.c (move_gap):
	* insdel.c (merge_gap_with_end_gap):
	* insdel.c (make_gap):
	* insdel.c (signal_before_change):
	* insdel.c (signal_after_change):
	* insdel.c (buffer_insert_string_1):
	* insdel.c (buffer_delete_range):
	* insdel.c (buffer_replace_char):
	* insdel.c (make_string_from_buffer_1):
	* insdel.c (init_buffer_text):
	* intl-win32.c:
	* intl-win32.c (Fmswindows_get_valid_code_pages):
	* intl-win32.c (Fmswindows_get_console_code_page):
	* intl-win32.c (Fmswindows_set_console_code_page):
	* intl-win32.c (Fmswindows_get_console_output_code_page):
	* intl-win32.c (Fmswindows_set_console_output_code_page):
	* intl-win32.c (Fmswindows_get_code_page_charset):
	* intl-win32.c (Fmswindows_get_valid_keyboard_layouts):
	* intl-win32.c (Fmswindows_get_keyboard_layout):
	* intl-win32.c (Fmswindows_set_keyboard_layout):
	* intl-win32.c (mswindows_multibyte_to_unicode_print):
	* intl.c:
	* intl.c (Fignore_defer_gettext):
	* keymap.c (print_keymap):
	* keymap.c (keymap_lookup_directly):
	* keymap.c (keymap_store):
	* keymap.c (define_key_check_and_coerce_keysym):
	* keymap.c (Fdefine_key):
	* keymap.c (Flookup_key):
	* keymap.c (map_keymap_mapper):
	* keymap.c (Fkey_description):
	* lisp-disunion.h:
	* lisp-disunion.h (VALMASK):
	* lisp-disunion.h (VOID_TO_LISP):
	* lisp-union.h:
	* lisp-union.h (union Lisp_Object):
	* lisp-union.h (XPNTRVAL):
	* lisp-union.h (XREALINT):
	* lisp-union.h (INTP):
	* lisp.h:
	* lisp.h (DECLARE_POINTER_TYPE_ARITH_COUNT):
	* lisp.h (MAX_ALIGN_SIZE):
	* lisp.h (struct Lisp_String):
	* lisp.h (set_lispstringp_length):
	* lisp.h (XSET_STRING_LENGTH):
	* lisp.h (FLEXIBLE_ARRAY_STRUCT_SIZEOF):
	* lisp.h (SYMBOL_IS_KEYWORD):
	* lread.c:
	* lrecord.h:
	* lrecord.h (DECLARE_LRECORD):
	* lrecord.h (DECLARE_EXTERNAL_LRECORD):
	* lrecord.h (DECLARE_NONRECORD):
	* lstream.c (aligned_sizeof_lstream):
	* lstream.c (Lstream_really_write):
	* lstream.c (make_lisp_buffer_stream_1):
	* lstream.c (make_lisp_buffer_input_stream):
	* lstream.c (lisp_buffer_reader):
	* lstream.c (lisp_buffer_writer):
	* lstream.h:
	* marker.c (print_marker):
	* marker.c (byte_marker_position):
	* marker.c (marker_position):
	* marker.c (set_byte_marker_position):
	* marker.c (set_marker_position):
	* marker.c (Fbuffer_has_markers_at):
	* menubar-gtk.c (__torn_off_sir):
	* menubar-gtk.c (__activate_menu):
	* menubar-gtk.c (__generic_button_callback):
	* menubar-msw.c:
	* menubar-x.c (pre_activate_callback):
	* menubar-x.c (command_builder_operate_menu_accelerator):
	* menubar-x.c (command_builder_find_menu_accelerator):
	* menubar.c:
	* menubar.c (Fnormalize_menu_item_name):
	* minibuf.c:
	* minibuf.c (Ftry_completion):
	* minibuf.c (Fall_completions):
	* minibuf.c (Fminibuffer_prompt):
	* minibuf.c (Fminibuffer_prompt_width):
	* minibuf.c (echo_area_append):
	* mule-ccl.c:
	* mule-ccl.c (CCL_WRITE_CHAR):
	* mule-ccl.c (CCL_WRITE_STRING):
	* mule-ccl.c (CCL_MAKE_CHAR):
	* mule-ccl.c (ccl_driver):
	* mule-charset.c (Fmake_charset):
	* mule-charset.c (Fcharset_from_attributes):
	* mule-coding.c (byte_shift_jis_two_byte_1_p):
	* mule-coding.c (byte_shift_jis_two_byte_2_p):
	* mule-coding.c (byte_shift_jis_katakana_p):
	* mule-coding.c (shift_jis_convert):
	* mule-coding.c (Fdecode_shift_jis_char):
	* mule-coding.c (Fencode_shift_jis_char):
	* mule-coding.c (byte_big5_two_byte_1_p):
	* mule-coding.c (byte_big5_two_byte_2_p):
	* mule-coding.c (big5_convert):
	* mule-coding.c (decode_big5_char):
	* mule-coding.c (Fencode_big5_char):
	* mule-coding.c (charset_by_attributes_or_create_one):
	* mule-coding.c (iso2022_decode):
	* mule-coding.c (iso2022_encode):
	* mule-coding.c (iso2022_print):
	* mule-coding.c (iso2022_detect):
	* mule-wnnfns.c (m2w):
	* nas.c:
	* objects-msw.c (mswindows_string_to_color):
	* objects-msw.c (mswindows_font_spec_matches_charset):
	* objects-x.c (x_font_instance_properties):
	* opaque.c (aligned_sizeof_opaque):
	* postgresql.c (print_pgconn):
	* postgresql.c (print_pgresult):
	* print.c:
	* print.c (output_string):
	* print.c (write_string_1):
	* print.c (write_string):
	* print.c (write_c_string):
	* print.c (write_eistring):
	* print.c (write_fmt_string):
	* print.c (write_fmt_string_lisp):
	* print.c (stderr_out_lisp):
	* 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 (print_internal):
	* print.c (print_float):
	* print.c (print_symbol):
	* process-nt.c (nt_create_process):
	* process-unix.c (close_process_descs_mapfun):
	* process.c (print_process):
	* process.c (get_process_from_usid):
	* process.c (Fstart_process_internal):
	* process.c (status_message):
	* process.c (status_notify):
	* process.c (Fprocess_connection):
	* process.c (getenv_internal):
	* process.c (putenv_internal):
	* process.h:
	* profile.c (get_profiling_info_maphash):
	* profile.c (mark_profiling_info_maphash):
	* rangetab.c (print_range_table):
	* rangetab.c (unified_range_table_copy_data):
	* rangetab.c (align_the_damn_table):
	* redisplay-gtk.c:
	* redisplay-gtk.c (separate_textual_runs):
	* redisplay-gtk.c (gtk_output_display_block):
	* redisplay-msw.c (separate_textual_runs):
	* redisplay-msw.c (mswindows_output_display_block):
	* redisplay-output.c:
	* redisplay-output.c (ADJ_CHARPOS):
	* redisplay-output.c (redisplay_move_cursor):
	* redisplay-output.c (redisplay_update_line):
	* redisplay-x.c (separate_textual_runs):
	* redisplay-x.c (x_output_display_block):
	* redisplay.c:
	* redisplay.c (position_redisplay_data_type):
	* redisplay.c (struct prop_block):
	* redisplay.c (generate_display_line):
	* redisplay.c (add_hscroll_rune):
	* redisplay.c (add_emchar_rune_1):
	* redisplay.c (add_blank_rune):
	* redisplay.c (add_octal_runes):
	* redisplay.c (add_control_char_runes):
	* redisplay.c (add_disp_table_entry_runes_1):
	* redisplay.c (add_propagation_runes):
	* redisplay.c (add_glyph_rune):
	* redisplay.c (create_text_block):
	* redisplay.c (add_margin_blank):
	* redisplay.c (generate_modeline):
	* redisplay.c (generate_fstring_runes):
	* redisplay.c (create_string_text_block):
	* redisplay.c (generate_string_display_line):
	* redisplay.c (generate_displayable_area):
	* redisplay.c (REGEN_INC_FIND_START_END):
	* redisplay.c (regenerate_window_extents_only_changed):
	* redisplay.c (regenerate_window_incrementally):
	* redisplay.c (point_visible):
	* redisplay.c (point_at_center):
	* redisplay.c (update_internal_cache_list):
	* redisplay.c (UPDATE_CACHE_RETURN):
	* redisplay.c (pixel_to_glyph_translation):
	* redisplay.h:
	* redisplay.h (struct rune):
	* redisplay.h (struct display_line):
	* redisplay.h (struct extent_fragment):
	* regex.c:
	* regex.c (RE_TRANSLATE_1):
	* regex.c (charptr_emchar):
	* regex.c (INC_CHARPTR_FMT):
	* regex.c (SYNTAX):
	* regex.c (EXTEND_BUFFER):
	* regex.c (regex_compile):
	* regex.c (compile_range):
	* regex.c (compile_extended_range):
	* regex.c (re_compile_fastmap):
	* regex.c (re_search):
	* regex.c (re_search_2):
	* regex.c (REGEX_PREFETCH):
	* regex.c (WORDCHAR_P):
	* regex.c (re_match):
	* regex.c (re_match_2):
	* regex.c (re_match_2_internal):
	* regex.c (re_compile_pattern):
	* regex.c (re_comp):
	* regex.c (make-backup-files): Removed.
	* regex.c (version-control): Removed.
	* regex.c (trim-versions-without-asking): Removed.
	* regex.c (End): Removed.
	* regex.h:
	* regex.h (RE_LISP_SHORT_CONTEXT_ARGS_DECL):
	* scrollbar-msw.c (mswindows_free_scrollbar_instance):
	* scrollbar-msw.c (mswindows_handle_scrollbar_event):
	* scrollbar-msw.c (mswindows_handle_mousewheel_event):
	* search.c:
	* search.c (matcher_overflow):
	* search.c (compile_pattern_1):
	* search.c (compile_pattern):
	* search.c (fixup_search_regs_for_buffer):
	* search.c (looking_at_1):
	* search.c (Fposix_looking_at):
	* search.c (string_match_1):
	* search.c (fast_string_match):
	* search.c (byte_scan_buffer):
	* search.c (scan_buffer):
	* search.c (byte_find_next_newline_no_quit):
	* search.c (byte_find_next_emchar_in_string):
	* search.c (find_before_next_newline):
	* search.c (skip_chars):
	* search.c (search_command):
	* search.c (trivial_regexp_p):
	* search.c (search_buffer):
	* search.c (simple_search):
	* search.c (boyer_moore):
	* search.c (set_search_regs):
	* search.c (wordify):
	* search.c (Freplace_match):
	* search.c (match_limit):
	* search.c (Fmatch_data):
	* search.c (Fstore_match_data):
	* select-x.c (hack_motif_clipboard_selection):
	* select-x.c (Fx_store_cutbuffer_internal):
	* specifier.c (print_specifier):
	* specifier.c (aligned_sizeof_specifier):
	* specifier.c (recompute_cached_specifier_everywhere_mapfun):
	* specifier.h:
	* specifier.h (DECLARE_SPECIFIER_TYPE):
	* symbols.c (Fintern):
	* symsinit.h:
	* syntax.c:
	* syntax.c (struct lisp_parse_state):
	* syntax.c (find_defun_start):
	* syntax.c (Fset_syntax_table):
	* syntax.c (init_syntax_cache):
	* syntax.c (update_syntax_cache):
	* syntax.c (Fchar_syntax):
	* syntax.c (charset_syntax):
	* syntax.c (syntax_match):
	* syntax.c (Fmatching_paren):
	* syntax.c (WORD_BOUNDARY_P):
	* syntax.c (scan_words):
	* syntax.c (find_start_of_comment):
	* syntax.c (find_end_of_comment):
	* syntax.c (Fforward_comment):
	* syntax.c (scan_lists):
	* syntax.c (char_quoted):
	* syntax.c (Fbackward_prefix_chars):
	* syntax.c (scan_sexps_forward):
	* syntax.c (Fparse_partial_sexp):
	* syntax.c (copy_to_mirrortab):
	* syntax.c (copy_if_not_already_present):
	* syntax.c (update_just_this_syntax_table):
	* syntax.c (update_syntax_table):
	* syntax.c (syms_of_syntax):
	* syntax.c (vars_of_syntax):
	* syntax.c (complex_vars_of_syntax):
	* syntax.h:
	* syntax.h (SYNTAX_CODE):
	* syntax.h (SYNTAX_FROM_CODE):
	* syntax.h (SYNTAX_PREFIX):
	* syntax.h (struct syntax_cache):
	* syswindows.h:
	* tests.c (Ftest_data_format_conversion):
	* text.c:
	* text.c (convert_emchar_string_into_malloced_string):
	* text.c (COPY_TEXT_BETWEEN_FORMATS):
	* text.c (copy_buffer_text_out):
	* text.c (find_charsets_in_intbyte_string):
	* text.c (find_charsets_in_emchar_string):
	* text.c (intbyte_string_displayed_columns):
	* text.c (emchar_string_displayed_columns):
	* text.c (intbyte_string_nonascii_chars):
	* text.c (eicpyout_malloc_fmt):
	* text.c (skip_ascii):
	* text.c (charcount_to_bytecount_fun):
	* text.c (charbpos_to_bytebpos_func):
	* text.c (bytebpos_to_charbpos_func):
	* text.c (buffer_mule_signal_inserted_region):
	* text.c (buffer_mule_signal_deleted_region):
	* text.c (get_buffer_range_char):
	* text.c (get_buffer_range_byte):
	* text.c (get_string_pos_char):
	* text.c (get_string_range_char):
	* text.c (get_buffer_or_string_pos_char):
	* text.c (get_buffer_or_string_pos_byte):
	* text.c (get_buffer_or_string_range_char):
	* text.c (get_buffer_or_string_range_byte):
	* text.c (buffer_or_string_accessible_begin_char):
	* text.c (buffer_or_string_accessible_end_char):
	* text.c (buffer_or_string_accessible_begin_byte):
	* text.c (buffer_or_string_accessible_end_byte):
	* text.c (buffer_or_string_absolute_begin_char):
	* text.c (buffer_or_string_absolute_end_char):
	* text.c (buffer_or_string_absolute_begin_byte):
	* text.c (buffer_or_string_absolute_end_byte):
	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	* text.c (non_ascii_set_charptr_emchar):
	* text.c (non_ascii_charptr_emchar):
	* text.c (non_ascii_valid_emchar_p):
	* text.c (non_ascii_charptr_copy_emchar):
	* text.c (Lstream_get_emchar_1):
	* text.c (Fmake_char):
	* text.c (Fchar_charset):
	* text.c (Fchar_octet):
	* text.c (Fsplit_char):
	* text.c (lookup_composite_char):
	* text.c (Fmake_composite_char):
	* text.c (Fcomposite_char_string):
	* text.h:
	* text.h (rep_bytes_by_first_byte):
	* text.h (byte_ascii_p):
	* text.h (intbyte_leading_byte_p):
	* text.h (emchar_multibyte_p):
	* text.h (emchar_ascii_p):
	* text.h (assert_valid_charptr):
	* text.h (INC_CHARPTR):
	* text.h (INC_CHARPTR_FMT):
	* text.h (DEC_CHARPTR_FMT):
	* text.h (VALIDATE_CHARPTR_BACKWARD):
	* text.h (validate_intbyte_string_backward):
	* text.h (simple_charptr_copy_emchar):
	* text.h (charptr_emchar):
	* text.h (valid_emchar_p):
	* text.h (CHAR_INTP):
	* text.h (eicpy_lstr):
	* text.h (eicpy_raw_fmt):
	* text.h (eicpy_raw):
	* text.h (eicpy_rawz_fmt):
	* text.h (eicpy_rawz):
	* text.h (eicpyout_alloca):
	* text.h (eicat_lstr):
	* text.h (GET_STRERROR):
	* tooltalk.c (tooltalk_message_callback):
	* tooltalk.c (tooltalk_pattern_callback):
	* ui-byhand.c (__generic_toolbar_callback):
	* ui-byhand.c (__emacs_gtk_ctree_recurse_internal):
	* ui-gtk.c (emacs_gtk_object_printer):
	* ui-gtk.c (__internal_callback_destroy):
	* ui-gtk.c (__internal_callback_marshal):
	* ui-gtk.c (emacs_gtk_boxed_printer):
	* ui-gtk.c (gtk_type_to_lisp):
	* unicode.c (sledgehammer_check_from_table):
	* unicode.c (sledgehammer_check_to_table):
	* unicode.c (set_unicode_conversion):
	* unicode.c (emchar_to_unicode):
	* unicode.c (unicode_to_char):
	* unicode.c (recalculate_unicode_precedence):
	* unicode.c (Fchar_to_unicode):
	* unicode.c (encode_unicode_char):
	* unicode.c (unicode_convert):
	* unicode.c (unicode_print):
	* win32.c:
	* win32.c (tstr_to_local_file_format):
	* win32.c (mswindows_lisp_error_1):
	* win32.c (Fmswindows_shell_execute):
	* window.c (print_window):
	* window.c (print_window_config):
	* window.c (Fcurrent_pixel_column):
	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

2002-04-30  Charles G. Waldman <cgw@xemacs.org>

	* sysdep.c (sys_siglist): change "signum" to "signal"

2001-04-21  Martin Buchholz  <martin@xemacs.org>

	* s/darwin.h: New file.
	Thanks to Greg Parker <gparker@cs.stanford.edu>.

2002-04-23  Andreas Jaeger  <aj@suse.de>

	* s/linux.h (LIB_STANDARD): Define correctly for x86-64 and s390x
	which use lib64 for 64-bit libs.
	(START_FILES): Likewise.

2002-02-11  Mike Sperber  <mike@xemacs.org>

	* device-x.c:
	(x_IO_error_handler):
	(x_init_device): Temporarily keep device in static variable
	`device_being_initialized' so we can recover gracefully from
	internal XOpenDevice failure.  (XOpenDevice is documented to
	return NULL on failure, but sometimes calls the IO error handler
	instead.)

2002-01-31  John H. Palmieri  <palmieri@math.washington.edu>

	* dired.c (Ffile_name_all_completions): Change documentation --
	remove reference to completion-ignored-extensions.
	* dired.c (vars_of_dired): Change documentation for
	completion-ignored-extensions -- remove reference to
	file-name-all-completions.

2002-03-06  Jerry James  <james@xemacs.org>

	* emodules.c (emodules_load): Fix multiple loading of same module.

2002-01-25  Andrew Begel <abegel@cs.berkeley.edu>
	* sysdll.c (dll_open): Changed to use RTLD_NOW instead of
	RTLD_LAZY to avoid incorrect symbol binding when using nested
	shared libraries on Solaris.

2002-02-12  Stephen J. Turnbull  <stephen@xemacs.org>

	* fileio.c (Ffind_file_name_handler): Improve docstring.

2002-01-20  Stephen J. Turnbull  <stephen@xemacs.org>

	* fns.c (Fmapconcat): Improve docstring.

2002-01-03  Eric Gillespie, Jr.  <epg@pretzelnet.org>

	* device-gtk.c: Add prototype for
	emacs_gtk_selection_clear_event_handle.
	(gtk_init_device): Call gtk_selection_add_target for CLIPBOARD
	selection.  Setup signal handler for "selection_clear_event"
	(emacs_gtk_selection_clear_event_handle).

	* select-gtk.c (emacs_gtk_selection_clear_event_handle): Handle
	other applications owning the clipboard (based on
	x_handle_selection_clear).

2001-12-23  William M. Perry  <wmperry@gnu.org>

	* menubar-gtk.c (gtk_popup_menu)  Add sanity checks, fix crash.

2002-01-04  Martin Buchholz  <martin@xemacs.org>

	* keymap.c (define_key_alternate_name): Parenthesize EQ.

2001-12-17  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.4.6 "Common Lisp" is released.

	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)

2002-04-30  Charles G. Waldman <cgw@xemacs.org>

	* sysdep.c (sys_siglist): change "signum" to "signal"

2002-04-24  Andy Piper  <andy@xemacs.org>

	* redisplay.c (create_text_block): Don't actually add propagation
	data if the line ends after we have added a glyph.

	* lisp.h (Dynarr_end): Fix definition.

2002-04-22  Andy Piper  <andy@xemacs.org>

	* extents.c (extent_fragment_update): check for glyphs we have
	previously displayed.
	* extents.c (print_extent_1): warning removal.
	* extents.h: change prototype.
	* redisplay-output.c (redisplay_normalize_glyph_area): calculate
	widths correctly for wide glyphs.
	* redisplay.c (position_redisplay_data_type): add end_glyph_width.
	* redisplay.c (prop_type): add PROP_GLYPH.
	* redisplay.c (struct prop_block): add glyph type
	* redisplay.c (add_glyph_rune): when adding part of a glyph add it
	to the propagation data.
	* redisplay.c (create_text_block): if there is a glyph in the
	propagation data use it to salt extent_fragment_update.
	* redisplay.c (create_string_text_block): ditto.

2002-04-13  Nix  <nix@esperi.demon.co.uk>

	* redisplay.h (struct rune): Add ascent, descent, and yoffset fields.
	* redisplay-output.c (compare_runes): Compare them.
	* redisplay.c: Update copyright date.
	* redisplay.c (pos_data): Add need_baseline_computation field.
	* redisplay.c (add_glyph_rune): Update ascent, descent, and
	need_baseline_computation; zero yoffset. Set max_pixmap_height
	for all pixmaps, not just automatically positioned ones.
	* redisplay.c (calculate_yoffset): New, compute yoffset values.
	* redisplay.c (calculate_baseline): New, compute textual baseline.
	* redisplay.c (add_glyph_rune): Call them.
	* redisplay.c (create_text_block): Likewise.
	* redisplay.c (create_overlay_glyph_block): Likewise.
	* redisplay.c (add_margin_runes): Likewise.
	* redisplay.c (create_string_text_block): Likewise. Fix tabdamage.

	* redisplay.h: (redisplay_calculate_display_boxes): Change prototype.
	* redisplay-output.c (redisplay_calculate_display_boxes): Use yoffset.
	* redisplay-msw.c (mswindows_output_blank): Pass 0 as yoffset.
	* redisplay-msw.c (mswindows_output_string): Likewise.
	* redisplay-msw.c (mswindows_output_display_block): Pass yoffset.
	* redisplay-gtk.c (gtk_output_display_block): Likewise.
	* redisplay-x.c (x_output_display_block): Likewise.

2002-04-02  Andy Piper  <andy@xemacs.org>

	* dired-msw.c (mswindows_get_files):
	* nt.c (mswindows_stat): SetErrorMode() so that file errors are
	completely handled by XEmacs. Suggested by Thomas Vogler
	<mail@thomas-vogler.de>.

2002-04-01  Andy Piper  <andy@xemacs.org>

	* emacs.c (Fkill_emacs): Only output message box in interactive
	mode.

2002-03-14  Mike Alexander  <mta@arbortext.com>

	* event-msw.c (mswindows_unwait_process): New, remove process from
	wait list
	* process-nt.c (nt_finalize_process_data): Call
	mswindows_unwait_process
	* console-msw.h: Declare mswindows_unwait_process

2002-03-20  Andy Piper  <andy@xemacs.org>

	* menubar-msw.c (mswindows_popup_menu): warning removal.
	* dialog-msw.c (dialog_popped_down): ditto.

2002-02-13  Andy Piper  <andy@xemacs.org>

	* event-msw.c (mswindows_wnd_proc): only mark the frame visible if
	we did in fact enqueue the XM_MAPFRAME event.

2002-02-06  Adrian Aichner  <adrian@xemacs.org>

	* src/window.c (window_loop): Implement new UNDEDICATE_BUFFER
	operation.
	* src/buffer.c (kill_buffer): Undedicate windows showing BUF
	before replacing them.

	* redisplay.c (mark_redisplay): Remove call to
	update_frame_window_mirror.

	* src/window.c (undedicate_windows): Use it.
	* src/window.h: Add prototype.

2002-01-03  Andy Piper  <andy@xemacs.org>

	* realpath.c (ABS_LENGTH): dtrt for cygwin systems using drive
	letters.
	(xrealpath): ditto.

2001-12-11  Andy Piper  <andy@xemacs.org>

	* dialog-msw.c (dialog_popped_down): new function. unset popup_up_p.
	* dialog-msw.c (mswindows_make_dialog_box_internal): set
	popup_up_p.
	* menubar-msw.c (unsafe_handle_wm_initmenupopup_1): ditto.
	* menubar-msw.c (mswindows_handle_wm_command): ditto.
	* menubar-msw.c (mswindows_popup_menu): ditto.

2001-11-24  Andy Piper  <andy@xemacs.org>

	* window.c (Fsplit_window): Doc return type.

2001-07-30  Adrian Aichner  <adrian@xemacs.org>

	* event-msw.c: Typo fix.
	* event-msw.c (mswindows_wnd_proc): Set FRAME_VISIBLE_P after
	magic XM_MAPFRAME event has been sent.

2001-11-23  Andy Piper  <andy@xemacs.org>

	* event-msw.c (mswindows_wnd_proc): Don't pump mousewheel events.

2001-11-21  Andy Piper  <andy@xemacs.org>

	* scrollbar-msw.c (mswindows_handle_mousewheel_event): cope with
	mouse events outside the frame.

2001-11-15  Andy Piper  <andy@xemacs.org>

	(Fmswindows_shell_execute): fix handling of URL's under cygwin (again).

2001-11-14  Andy Piper  <andy@xemacs.org>

	* nt.c (REG_ROOT): change registry key to XEmacs.

2001-10-29  Andy Piper  <andy@xemacs.org>

	* dialog-msw.c (handle_directory_dialog_box): quit if the user
	cancels.

2002-04-15  Ben Wing  <ben@xemacs.org>

	* process.c: Need sysdep.h for environ.

2002-04-14  Ben Wing  <ben@xemacs.org>

	* lisp.h:
	Add support for strong type-checking of Bytecount, Bytebpos,
	Charcount, Charbpos, and others, by making them classes,
	overloading the operators to provide integer-like operation and
	carefully controlling what operations are allowed.  Not currently
	enabled in C++ builds because there are still a number of compile
	errors, and it won't really work till we merge in my "8-bit-Mule"
	workspace, in which I make use of the new types Charxpos,
	Bytexpos, Memxpos, representing a "position" either in a buffer or
	a string. (This is especially important in the extent code.)

	* abbrev.c:
	* abbrev.c (abbrev_oblookup):
	* alloc.c (STRING_CHARS_BLOCK_SIZE):
	* alloc.c (allocate_string_chars_struct):
	* alloc.c (make_uninit_string):
	* alloc.c (set_string_char):
	* alloc.c (build_intstring):
	* eval.c (record_unwind_protect_restoring_lisp_object):
	* eval.c (record_unwind_protect_restoring_int):
	* buffer.c (init_initial_directory):
	* buffer.h (BI_BUF_PTR_BYTE_POS):
	* buffer.h (real_charbpos_to_bytebpos):
	* editfns.c (Fuser_full_name):
	* editfns.c (Finsert_char):
	* fns.c (Ffillarray):
	* text.h:
	* text.h (REP_BYTES_BY_FIRST_BYTE_1):
	* text.h (simple_set_charptr_emchar):
	* text.h (DECLARE_INLINE_HEADER):
	* text.h (endif):
	Warning fixes, some of them related to new C++ strict type
	checking of Bytecount, Charbpos, etc.

	* dired.c (file_name_completion):
	Caught an actual error due to strong type checking -- char len
	being passed when should be byte len.

	* alloc.c:
	* alloc.c (DECREMENT_CONS_COUNTER):
	* alloc.c (memory_full):
	* alloc.c (Fmake_byte_code):
	* alloc.c (garbage_collect_1):
	* alloc.c (recompute_need_to_garbage_collect):
	* alloc.c (common_init_alloc_once_early):
	* backtrace.h:
	* backtrace.h (SPECBIND_FAST_UNSAFE):
	* bytecode.c:
	* bytecode.c (execute_optimized_program):
	* bytecode.c (mark_compiled_function):
	* bytecode.h:
	* bytecode.h (struct Lisp_Compiled_Function):
	* eval.c:
	* eval.c (handle_compiled_function_with_and_rest):
	* eval.c (funcall_compiled_function):
	* eval.c (Feval):
	* eval.c (Ffuncall):
	* eval.c (function_argcount):
	* sysdep.c (total_data_usage):
	Further optimize Ffuncall:

	-- process arg list at compiled-function creation time, converting
	into an array for extra-quick access at funcall time.
	-- rewrite funcall_compiled_function to use it, and inline this
	function.
	-- change the order of check for magic stuff in
	SPECBIND_FAST_UNSAFE to be faster.
	-- move the check for need to garbage collect into the allocation
	code, so only a single flag needs to be checked in funcall.


	* buffer.c (Fstring_char_byte_converion_info):
	* buffer.c (syms_of_buffer):
	* symbols.c:
	* symbols.c (intern_converting_underscores_to_dashes):

	add debug funs to check on mule optimization info in buffers and
	strings.

	* eval.c (init_eval_semi_early):
	* emacs.c (main_1):
	* text.c (reinit_eistring_once_early):
	* regex.c (vars_of_regex):
	* scrollbar-msw.c (vars_of_scrollbar_mswindows):
	* search.c (vars_of_search):
	Fix evil crashes due to eistrings not properly reinitialized under
	pdump.  Redo a bit some of the init routines; convert some
	complex_vars_of() into simple vars_of(), because they didn't need
	complex processing.

	* callproc.c:
	* callproc.c (call_process_kill):
	* callproc.c (call_process_cleanup):
	* callproc.c (Fold_call_process_internal):
	* callproc.c (child_setup):
	* callproc.c (syms_of_callproc):
	* callproc.c (getenv): Removed.
	* emacs.c:
	* emacs.c (main_1):
	* event-stream.c (check_event_stream_ok):
	* event-stream.c (init_event_stream):
	* nt.c:
	* nt.c (init_mswindows_environment):
	* nt.c (Fmswindows_long_file_name):
	* nt.c (init_nt):
	* process.c:
	* process.c (init_process_io_handles):
	* process.c (Fstart_process_internal):
	* process.c (getenv_internal):
	* process.c (putenv_internal):
	* process.c (getenv): New.
	* process.c (DEFUN):
	* process.c (Fgetenv):
	* process.c (egetenv):
	* process.c (init_xemacs_process):
	* process.c (syms_of_process):
	* process.c (vars_of_process):
	* process.h:
	* sysdep.c (wait_for_termination):
	* sysdep.c (init_baud_rate):
	* sysdep.c (emacs_get_tty):
	* sysdep.c (emacs_set_tty):
	* sysdep.c (tty_init_sys_modes_on_device):
	* sysdep.h:
	* syssignal.h:
	* syswindows.h:
	* ntproc.c: Delete.  Hallelujah, praise the Lord, there is no god
	but Allah!!!

	fix so that processes can be invoked in bare temacs -- thereby
	eliminating any need for callproc.c. (currently only eliminated
	under NT.) remove all crufty and unnecessary old process code in
	ntproc.c and elsewhere.  move non-callproc-specific stuff (mostly
	environment) into process.c, so callproc.c can be left out under
	NT.

	* console-tty.c (tty_init_console):
	* doc.c:
	* doc.c (unparesseuxify_doc_string):
	* doc.c (get_doc_string):
	* doc.c (Fsnarf_documentation):
	* file-coding.c:
	* file-coding.c (coding_reader):
	* file-coding.c (set_coding_character_mode):
	* file-coding.c (make_coding_stream_1):
	* file-coding.c (make_coding_output_stream):
	* file-coding.c (detect_coding_stream):
	* file-coding.h:
	* file-coding.h (struct coding_stream):
	* file-coding.h (LSTREAM_FL_NO_CLOSE_OTHER):
	* lstream.c:
	* lstream.c (Lstream_read_1):
	* lstream.c (Lstream_read):
	* lstream.c (Lstream_fgetc):
	* lstream.h (lstream_implementation):

	fix doc string handling so it works with Japanese, etc docs.
	change handling of "character mode" so callers don't have to
	manually set it (quite error-prone).

	* event-msw.c (init_event_mswindows_late): spacing fixes.

	* lread.c:
	* lread.c (pas_de_holgazan_ici):
	* lread.c (load_force_doc_string_unwind):
	* lread.c (readevalloop):
	* lread.c (read_list_conser):
	* lread.c (read_vector):

	eliminate unused crufty vintage-19 "FSF defun hack" code.

	* lrecord.h: improve pdump description docs.

	* buffer.c:
	* ntheap.c:
	* ntheap.c (round_to_next):
	* ntheap.c (get_data_start):
	* ntheap.c (get_data_end):
	* ntheap.c (allocate_heap):
	* ntheap.c (sbrk):
	* ntheap.c (recreate_heap):
	* unexnt.c:
	* unexnt.c (_start):
	* unexnt.c (unexec):
	* unexnt.c (get_bss_info_from_map_file):
	* unexnt.c (get_section_info):
	* unexnt.c (copy_executable_and_dump_data_section):
	* unexnt.c (dump_bss_and_heap):
	* unexnt.c (read_in_bss):
	* unexnt.c (map_in_heap):
	* win32.c:
	* win32.c (mswindows_get_module_file_name):
	* emacs.c (make_arg_list_1):
	* emacs.c (Fdump_emacs):
	Mule-ize some unexec and startup code.  It was pseudo-Mule-ized
	before by simply always calling the ...A versions of functions,
	but that won't cut it -- eventually we want to be able to run
	properly even if XEmacs has been installed in a Japanese
	directory. (The current problem is the timing of the loading of
	the Unicode tables; this will eventually be fixed.) Go through and
	fix various other places where the code was not Mule-clean.
	Provide a function mswindows_get_module_file_name() to get our own
	name without resort to PATH_MAX and such.  Add a big comment in
	main() about the problem with Unicode table load timing that I
	just alluded to.

	* emacs.c (guts_of_fatal_error_signal):
	* emacs.c (mswindows_handle_hardware_exceptions_1):
	When error-checking is enabled (interpreted as "user is developing
	XEmacs"), don't ask user to "pause to read messages" when a fatal
	error has occurred, because it will wedge if we are in an inner
	modal loop (typically when a menu is popped up) and make us unable
	to get a useful stack trace in the debugger.

	* text.c (update_entirely_ascii_p_flag):
	* text.c (charbpos_to_bytebpos_func):
	* text.c (bytebpos_to_charbpos_func):
	Correct update_entirely_ascii_p_flag to actually work.

	* lisp.h:
	* symsinit.h:
	 declarations for above changes.

2002-04-13  Jonathan Harris  <jonathan@xemacs.org>

	* unexnt.c (_start):
	* unexnt.c (unexec):
	* unexnt.c (map_in_heap):
	Clean up one remaining file where nonintercepted Windows calls
	were being used.

2002-04-07  William M. Perry  <wmperry@gnu.org>

	* event-gtk.c:
	* device-gtk.c:
	* glyphs-gtk.c:
	* frame-gtk.c:
	* gtk-xemacs.c:
	* menubar-gtk.c:
	* redisplay-gtk.c: Need to include device.h and window.h in a few
	places.  Not sure which .h has changed that was transparently
	pulling them in before, but...

2002-03-06  Jerry James  <james@xemacs.org>

	* emodules.c (emodules_load): Fix multiple loading of same module.

2002-04-05  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.6 "bok choi" is released.

2002-04-03  Ben Wing  <ben@xemacs.org>

	* console-tty.c (tty_init_console):
	* eval.c:
	* eval.c (restore_lisp_object):
	* eval.c (restore_int):
	* eval.c (record_unwind_protect_restoring_int):
	* event-unixoid.c (read_event_from_tty_or_stream_desc):
	* file-coding.c (coding_reader):
	* file-coding.c (make_coding_stream_1):
	* file-coding.c (make_coding_input_stream):
	* file-coding.c (make_coding_output_stream):
	* file-coding.c (detect_coding_stream):
	* file-coding.h:
	* file-coding.h (DETECTOR_HAS_METHOD):
	* file-coding.h (struct coding_stream):
	* lisp.h:
	* print.c (Fprin1):
	* print.c (Fprin1_to_string):
	* print.c (Fprinc):
	* print.c (Fprint):
	* print.c (print_internal):
	* print.c (debug_print_no_newline):
	* print.c (debug_backtrace):
	* sysdep.c (total_data_usage):

	Fix data corruption error in print.c from print_depth becoming
	negative.  Borrow primitives internal_bind_int,
	internal_bind_lisp_object from my stderr-proc ws, soon to be
	integrated; use them to properly bind print_depth et al.

	First fix for TTY problem.  The basic problem is I switched things
	so that the TTY I/O is filtered through a coding system, for the
	support of kterm and such, that speak JIS or similar
	encodings. (#### I ***swear*** I had this working way back in
	19.12.) Anyway, this introduced buffering issues, in which instead
	of one char being read, it tried to read 1024 chars.  I tried
	setting the stdin descriptor non-blocking, but it doesn't appear
	to work on Cygwin. (#### Andy, do you know anything about this?)
	So I fixed it elsewhere.  If you get weirdness on the TTY, look in
	console-tty.c and see how it gets the coding system; maybe there's
	a way to change it (and if not, there should be!).

	Also fix warning in sysdep.c.

2002-03-31  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (INCREMENT_CONS_COUNTER):
	* alloc.c (xmalloc):
	* alloc.c (xcalloc):
	* alloc.c (xrealloc):
	* alloc.c (Fmemory_limit):
	* alloc.c (Fmemory_usage):
	* alloc.c (common_init_alloc_once_early):
	* alloc.c (syms_of_alloc):
	* alloc.c (vars_of_alloc):
	* bytecode.c:
	* bytecode.c (Ffetch_bytecode):
	* chartab.c (symbol_to_char_table_type):
	* chartab.c (Fget_range_char_table):
	* chartab.c (check_valid_char_table_value):
	* data.c (Faref):
	* data.c (Faset):
	* data.c (Fquo):
	* data.c (Fmod):
	* data.c (decode_weak_list_type):
	* data.c (encode_weak_list_type):
	* elhash.c (decode_hash_table_weakness):
	* elhash.c (decode_hash_table_test):
	* emacs.c (main):
	* eval.c:
	* eval.c (Feval):
	* eval.c (Ffuncall):
	* event-Xt.c (x_to_emacs_keysym):
	* event-unixoid.c:
	* event-unixoid.c (poll_fds_for_input):
	* extents.c (decode_extent_at_flag):
	* extents.c (symbol_to_glyph_layout):
	* file-coding.c (symbol_to_eol_type):
	* file-coding.c (Fcoding_system_aliasee):
	* file-coding.c (coding_category_symbol_to_id):
	* fileio.c (report_file_type_error):
	* fileio.c (Fsubstitute_in_file_name):
	* fns.c:
	* fns.c (Fcompare_strings):
	* fns.c (internal_equalp):
	* fns.c (syms_of_fns):
	* glyphs.c (process_image_string_instantiator):
	* gutter.c (decode_gutter_position):
	* lisp-union.h:
	* lisp.h:
	* lisp.h (RETURN_NOT_REACHED):
	* mule-charset.c (Fcharset_property):
	* nt.c (mswindows_stat):
	* process-unix.c (unix_create_process):
	* process.c (decode_signal):
	* specifier.c (decode_locale_type):
	* specifier.c (decode_how_to_add_specification):
	* symbols.c (decode_magic_handler_type):
	* symbols.c (handler_type_from_function_symbol):
	* sysdep.c:
	* sysdep.c (start_of_data):
	* sysdep.c (total_data_usage):
	* sysdep.h (total_data_usage):
	* text.c:
	* text.c (qxestrncasecmp_i18n):
	* text.c (qxememcmp4):
	* text.c (qxememcasecmp4):
	* text.c (qxetextcmp):
	* text.c (qxetextcmp_matching):
	* text.c (qxetextcasecmp):
	* text.c (qxetextcasecmp_matching):
	* text.c (lisp_strcasecmp_i18n):
	* text.c (eicmp_1):
	* toolbar.c (decode_toolbar_position):
	* toolbar.c (Fset_default_toolbar_position):
	Try to implement GC triggering based on percentage of total memory
	usage.  Not currently activated (percentage set to 0) because not
	quite working.  Add `memory-usage' primitive to return XEmacs'
	idea of its memory usage.

	Add primitive compare-strings, compatible with FSF 21.1 -- can
	compare any part of two strings, optionally ignoring case.
	Improve qxe() functions in text.c for text comparison.

	Use RETURN_NOT_REACHED to try to avoid warnings about unreachable
	code.

	Add volatile_make_int() to fix warning in unix_send_process().


2002-03-31  Ben Wing  <ben@xemacs.org>

	* s/windowsnt.h:
	Use new ERROR_CHECK_ALL; not related to DEBUG_XEMACS.

2002-03-31  Ben Wing  <ben@xemacs.org>

	* alloc.c:
	* alloc.c (resize_string):
	* alloc.c (make_string):
	* alloc.c (make_string_nocopy):
	* alloc.c (common_init_alloc_once_early):
	* backtrace.h:
	* buffer.c:
	* buffer.c (print_buffer):
	* buffer.c (Fkill_buffer):
	* buffer.h:
	* buffer.h (membpos_to_bytebpos):
	* bytecode.c (print_compiled_function):
	* callproc.c (Fold_call_process_internal):
	* casetab.c (print_case_table):
	* charset.h (CHARSET_BY_LEADING_BYTE):
	* charset.h (MAKE_CHAR):
	* charset.h (breakup_char_1):
	* chartab.c:
	* chartab.c (print_chartab_range):
	* chartab.c (print_chartab_two_byte_charset):
	* chartab.c (print_char_table):
	* chartab.c (Fchar_table_p):
	* chartab.c (Fchar_table_type_list):
	* chartab.c (Fvalid_char_table_type_p):
	* chartab.c (Fchar_table_type):
	* chartab.c (Fput_char_table):
	* chartab.c (check_category_char):
	* cmdloop.c:
	* config.h.in:
	* console-msw.c (GetConsoleHwnd):
	* console-stream.c:
	* console-tty.c:
	* console-tty.c (tty_init_console):
	* console.c:
	* console.c (print_console):
	* console.h (error_check_console_type):
	* data.c (print_weak_list):
	* device-msw.c:
	* device-msw.c (mswindows_handle_page_setup_dialog_box):
	* device-msw.c (print_devmode):
	* device.c:
	* device.c (print_device):
	* device.h (error_check_device_type):
	* dired-msw.c:
	* dired-msw.c (Fmswindows_insert_directory):
	* dired.c:
	* dumper.c:
	* dumper.c (pdump_file_get):
	* dumper.c (pdump_resource_get):
	* dumper.c (pdump_load):
	* editfns.c:
	* editfns.c (save_excursion_save):
	* eldap.c (print_ldap):
	* elhash.c:
	* elhash.c (check_hash_table_invariants):
	* elhash.c (print_hash_table_data):
	* elhash.c (print_hash_table):
	* elhash.c (free_hentries):
	* emacs.c (vars_of_emacs):
	* eval.c:
	* eval.c (internal_catch):
	* eval.c (unwind_to_catch):
	* eval.c (condition_case_1):
	* eval.c (check_error_state_sanity):
	* event-Xt.c:
	* event-Xt.c (x_to_emacs_keysym):
	* event-gtk.c (gtk_to_emacs_keysym):
	* event-msw.c:
	* event-msw.c (mswindows_wnd_proc):
	* event-stream.c:
	* events.c:
	* events.c (print_event):
	* events.c (transfer_event_chain_pointer):
	* extents.c (print_extent_1):
	* extents.c (print_extent):
	* faces.c (print_face):
	* file-coding.c:
	* file-coding.c (print_coding_system_in_print_method):
	* file-coding.c (coding_closer):
	* file-coding.c (make_coding_stream_1):
	* file-coding.c (make_coding_input_stream):
	* file-coding.c (make_coding_output_stream):
	* file-coding.c (encode_decode_coding_region):
	* file-coding.c (chain_init_coding_streams_1):
	* file-coding.c (undecided_convert):
	* file-coding.c (detect_coding_stream):
	* file-coding.h:
	* file-coding.h (_coding_system_data):
	* file-coding.h (XSETCODING_SYSTEM_OF_TYPE):
	* file-coding.h (struct coding_stream):
	* fileio.c:
	* frame-msw.c:
	* frame.c:
	* frame.c (print_frame):
	* frame.h:
	* frame.h (error_check_frame_type):
	* glyphs-gtk.c:
	* glyphs-gtk.c (gtk_print_image_instance):
	* glyphs-gtk.c (write_lisp_string_to_temp_file):
	* glyphs-msw.c:
	* glyphs-msw.c (mswindows_print_image_instance):
	* glyphs-msw.c (mswindows_progress_gauge_redisplay):
	* glyphs-shared.c:
	* glyphs-widget.c:
	* glyphs-x.c (x_print_image_instance):
	* glyphs-x.c (x_progress_gauge_redisplay):
	* glyphs.c:
	* glyphs.c (print_image_instance):
	* glyphs.c (print_glyph):
	* glyphs.h:
	* glyphs.h (GLYPH_CACHEL_WIDTH):
	* glyphs.h (GLYPH_CACHEL_GLYPH):
	* insdel.c (fixup_internal_substring):
	* insdel.c (buffer_insert_lisp_string_1):
	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.c (qxeGetLongPathName):
	* intl-auto-encap-win32.h:
	* intl-encap-win32.c:
	* intl-encap-win32.c (qxeDefMDIChildProc):
	* intl-win32.c (mswindows_multibyte_to_unicode_print):
	* keymap.c (print_keymap):
	* lisp-union.h:
	* lisp-union.h (wrap_pointer_1):
	* lisp.h:
	* lread.c (Fload_internal):
	* lrecord.h:
	* lrecord.h (MAKE_LRECORD_IMPLEMENTATION):
	* lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION):
	* lrecord.h (wrap_record_1):
	* lstream.c (print_lstream):
	* lstream.h (error_check_lstream_type):
	* macros.c:
	* marker.c:
	* marker.c (print_marker):
	* marker.c (unchain_marker):
	* marker.c (bi_marker_position):
	* marker.c (set_bi_marker_position):
	* md5.c:
	* md5.c (Fmd5):
	* menubar-x.c:
	* menubar-x.c (command_builder_operate_menu_accelerator):
	* menubar.c:
	* mule-coding.c (iso2022_print):
	* mule-coding.c (FROB):
	* ntproc.c (_DebPrint):
	* ntproc.c (new_child):
	* ntproc.c (create_child):
	* ntproc.c (find_child_console):
	* ntproc.c (kill_will_disappear_soon):
	* objects-gtk.c (gtk_print_color_instance):
	* objects-gtk.c (gtk_print_font_instance):
	* objects-msw.c:
	* objects-msw.c (mswindows_font_instance_truename):
	* objects-x.c:
	* objects-x.c (x_print_color_instance):
	* objects-x.c (x_print_font_instance):
	* objects.c:
	* objects.c (print_color_instance):
	* objects.c (print_font_instance):
	* opaque.c:
	* opaque.c (print_opaque):
	* opaque.c (print_opaque_ptr):
	* print.c:
	* print.c (write_string_1):
	* print.c (default_object_printer):
	* print.c (internal_object_printer):
	* print.c (print_internal):
	* process-nt.c (send_signal_the_95_way):
	* process-nt.c (get_internet_address):
	* process-unix.c (unix_send_process):
	* process.c:
	* process.c (print_process):
	* process.c (init_process_io_handles):
	* rangetab.c:
	* rangetab.c (print_range_table):
	* redisplay-msw.c:
	* redisplay-output.c (sync_display_line_structs):
	* redisplay.c:
	* redisplay.c (ensure_modeline_generated):
	* redisplay.c (redisplay_without_hooks):
	* redisplay.c (sledgehammer_check_redisplay_structs_1):
	* regex.c:
	* regex.c (re_match_2_internal):
	* scrollbar-msw.c:
	* select-msw.c:
	* select-msw.c (mswindows_selection_data_type_name):
	* signal.c:
	* specifier.c:
	* specifier.c (print_specifier):
	* specifier.h:
	* specifier.h (_specifier_data):
	* symbols.c (mark_symbol_value_buffer_local):
	* symbols.c (print_symbol_value_magic):
	* sysdep.c:
	* syswindows.h:
	* syswindows.h (ERROR_WHEN_NONINTERCEPTED_FUNS_USED):
	* text.c:
	* text.c (bytecount_to_charcount):
	* text.c (charcount_to_bytecount):
	* text.c (charbpos_to_bytebpos_func):
	* text.c (bytebpos_to_charbpos_func):
	* text.c (dfc_convert_to_external_format):
	* text.c (dfc_convert_to_internal_format):
	* text.c (Lstream_get_emchar_1):
	* text.h:
	* text.h (DECLARE_INLINE_HEADER):
	* toolbar-msw.c:
	* tooltalk.c (print_tooltalk_message):
	* tooltalk.c (print_tooltalk_pattern):
	* ui-gtk.c (ffi_object_printer):
	* ui-gtk.c (emacs_gtk_object_printer):
	* ui-gtk.c (emacs_gtk_boxed_printer):
	* unicode.c:
	* unicode.c (Fchar_to_unicode):
	* unicode.c (unicode_print):
	* unicode.c (syms_of_unicode):
	* window.c:
	* window.c (print_window):
	* window.c (print_window_config):

	Redo error-checking macros: ERROR_CHECK_TYPECHECK ->
	ERROR_CHECK_TYPES, ERROR_CHECK_CHARBPOS -> ERROR_CHECK_TEXT, add
	ERROR_CHECK_DISPLAY, ERROR_CHECK_STRUCTURES.  Document these in
	config.h.in.  Fix code to follow docs.  Fix *_checking_assert()
	in accordance with new names.

	Attempt to fix periodic redisplay crash freeing display line
	structures.  Add first implementation of sledgehammer redisplay
	check.

	Redo print_*() to use write_fmt_string(), write_fmt_string_lisp().

	Fix bug in md5 handling.

	Rename character-to-unicode to char-to-unicode; same for
	unicode-to-char{acter}.

	Move chartab documentation to `make-char-table'.

	Some header cleanup.

	Clean up remaining places where nonintercepted Windows calls are
	being used.

2002-03-29  Jonathan Harris  <jonathan@xemacs.org>

	* device-msw.c (plist_get_margin): Add arg specifying mm or inches
	* device-msw.c (plist_set_margin): Fix multiplicand used for mm
	* device-msw.c (mswindows_handle_page_setup_dialog_box):
	Detect and handle case where machine is set up for metric units

	* intl-auto-encap-win32.c:
	* intl-auto-encap-win32.h:
	* intl-encap-win32.c:
	Add Get & SetLocaleInfo from winnls.h

2002-03-29  William M. Perry  <wmperry@gnu.org>

	* ui-gtk.c (Fgtk_import_function_internal):
	(emacs_gtk_object_finalizer):
	(build_gtk_object):
	(build_gtk_boxed): Use wrap_emacs_*() instead of wrap_*()
	for gtk_boxed, gtk_object, ffi

2002-03-24  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (gui_objs):
	* Makefile.in.in (objs):
	Always include gui.c, to fix compile error when TTY-only.

	* EmacsFrame.c (EmacsFrameSetValues):
	* abbrev.c:
	* abbrev.c (abbrev_match_mapper):
	* abbrev.c (Fexpand_abbrev):
	* alloc.c:
	* alloc.c (malloc_warning):
	* alloc.c (allocate_lisp_storage):
	* alloc.c (Fcons):
	* alloc.c (noseeum_cons):
	* alloc.c (make_float):
	* alloc.c (make_vector):
	* alloc.c (Fvector):
	* alloc.c (make_bit_vector_internal):
	* alloc.c (make_bit_vector):
	* alloc.c (make_bit_vector_from_byte_vector):
	* alloc.c (Fbit_vector):
	* alloc.c (make_compiled_function):
	* alloc.c (Fmake_symbol):
	* alloc.c (allocate_event):
	* alloc.c (Fmake_marker):
	* alloc.c (noseeum_make_marker):
	* alloc.c (mark_string):
	* alloc.c (string_plist_ptr):
	* alloc.c (allocate_string_chars_struct):
	* alloc.c (make_uninit_string):
	* alloc.c (resize_string):
	* alloc.c (set_string_char):
	* alloc.c (Fmake_string):
	* alloc.c (init_string_ascii_begin):
	* alloc.c (make_string_nocopy):
	* alloc.c (make_lcrecord_list):
	* alloc.c (allocate_managed_lcrecord):
	* alloc.c (ADDITIONAL_FREE_marker):
	* alloc.c (verify_string_chars_integrity):
	* alloc.c (compact_string_chars):
	* alloc.c (debug_string_purity_print):
	* alloc.c (UNMARK_string):
	* alloc.c (common_init_alloc_once_early):
	* buffer.c (Fdecode_buffer):
	* buffer.c (finish_init_buffer):
	* buffer.c (Fother_buffer):
	* buffer.c (Fcurrent_buffer):
	* buffer.c (Fbury_buffer):
	* buffer.c (common_init_complex_vars_of_buffer):
	* buffer.h (wrap_buffer):
	* buffer.h (buffer_or_string_charbpos_to_bytebpos):
	* buffer.h (buffer_or_string_bytebpos_to_charbpos):
	* buffer.h (buffer_or_string_charbpos_to_membpos):
	* buffer.h (buffer_or_string_membpos_to_charbpos):
	* bytecode.c (execute_optimized_program):
	* bytecode.h (wrap_compiled_function):
	* callint.c:
	* callint.c (Fcall_interactively):
	* callproc.c:
	* callproc.c (call_process_cleanup):
	* callproc.c (Fold_call_process_internal):
	* casetab.c:
	* casetab.c (allocate_case_table):
	* casetab.c (set_case_table):
	* casetab.h (wrap_case_table):
	* charset.h (wrap_charset):
	* chartab.c:
	* chartab.c (mark_char_table):
	* chartab.c (print_char_table):
	* chartab.c (Fmake_char_table):
	* chartab.c (make_char_table_entry):
	* chartab.c (copy_char_table_entry):
	* chartab.c (Fcopy_char_table):
	* chartab.h:
	* chartab.h (wrap_char_table_entry):
	* chartab.h (struct Lisp_Char_Table):
	* chartab.h (wrap_char_table):
	* cmds.c (Fpoint_at_bol):
	* console-msw.c:
	* console-msw.c (DSYMNAME):
	* console-msw.h (wrap_devmode):
	* console-msw.h (wrap_mswindows_dialog_id):
	* console-tty.c (tty_init_console):
	* console-tty.c (decode_tty_console):
	* console-x.c:
	* console-x.c (x_semi_canonicalize_console_connection):
	* console-x.h:
	* console.c (allocate_console):
	* console.c (create_console):
	* console.c (delete_console_internal):
	* console.c (common_init_complex_vars_of_console):
	* console.h (wrap_console):
	* data.c:
	* data.c (Faref):
	* data.c (Faset):
	* data.c (make_weak_list):
	* database.c:
	* database.c (wrap_database):
	* database.c (print_database):
	* database.c (finalize_database):
	* database.c (Fopen_database):
	* device-gtk.c (decode_gtk_device):
	* device-gtk.c (gtk_init_device):
	* device-gtk.c (gtk_delete_device):
	* device-msw.c (ensure_not_printing):
	* device-msw.c (Fmsprinter_get_settings):
	* device-msw.c (Fmsprinter_select_settings):
	* device-msw.c (Fmsprinter_apply_settings):
	* device-msw.c (finalize_devmode):
	* device-msw.c (allocate_devmode):
	* device-x.c:
	* device-x.c (decode_x_device):
	* device-x.c (x_init_device):
	* device-x.c (x_delete_device):
	* device-x.c (x_error_handler):
	* device-x.c (x_IO_error_handler):
	* device.c (allocate_device):
	* device.c (Fset_device_selected_frame):
	* device.c (Fmake_device):
	* device.c (delete_device_internal):
	* device.c (Fset_device_class):
	* device.h (wrap_device):
	* dialog-msw.c (handle_question_dialog_box):
	* doc.c:
	* doc.c (weird_doc):
	* doc.c (kludgily_ignore_lost_doc_p):
	* doc.c (verify_doc_mapper):
	* doprnt.c:
	* doprnt.c (NEXT_ASCII_BYTE):
	* doprnt.c (emacs_doprnt_1):
	* dumper.c (pdump_reloc_one):
	* dynarr.c (Dynarr_insert_many):
	* editfns.c (Fstring_to_char):
	* editfns.c (user_login_name):
	* editfns.c (Fuser_real_login_name):
	* editfns.c (Ftranslate_region):
	* eldap.c (make_ldap):
	* eldap.h (wrap_ldap):
	* elhash.c (make_general_lisp_hash_table):
	* elhash.c (Fcopy_hash_table):
	* elhash.h (wrap_hash_table):
	* emacs.c (mswindows_handle_hardware_exceptions_1):
	* eval.c:
	* eval.c (Fuser_variable_p):
	* eval.c (throw_or_bomb_out):
	* eval.c (Fsignal):
	* eval.c (restore_current_warning_level):
	* eval.c (call_with_suspended_errors_1):
	* eval.c (call_with_suspended_errors):
	* eval.c (maybe_signal_error_1):
	* eval.c (maybe_signal_continuable_error_1):
	* eval.c (eval_in_buffer_trapping_errors):
	* eval.c (warn_when_safe_lispobj):
	* eval.c (warn_when_safe):
	* eval.c (vars_of_eval):
	* event-Xt.c (x_event_to_emacs_event):
	* event-Xt.c (handle_focus_event_1):
	* event-Xt.c (change_frame_visibility):
	* event-Xt.c (handle_map_event):
	* event-Xt.c (handle_client_message):
	* event-Xt.c (emacs_Xt_handle_magic_event):
	* event-Xt.c (emacs_Xt_select_process):
	* event-Xt.c (emacs_Xt_select_console):
	* event-Xt.c (emacs_Xt_unselect_console):
	* event-Xt.c (emacs_Xt_next_event):
	* event-gtk.c (handle_focus_event_1):
	* event-gtk.c (change_frame_visibility):
	* event-gtk.c (handle_map_event):
	* event-gtk.c (handle_client_message):
	* event-gtk.c (emacs_gtk_handle_magic_event):
	* event-gtk.c (emacs_gtk_select_process):
	* event-gtk.c (emacs_gtk_select_console):
	* event-gtk.c (emacs_gtk_unselect_console):
	* event-gtk.c (dragndrop_data_received):
	* event-gtk.c (emacs_gtk_next_event):
	* event-gtk.c (gtk_event_to_emacs_event):
	* event-gtk.c (emacs_shell_event_handler):
	* event-msw.c (make_ntpipe_input_stream):
	* event-msw.c (make_ntpipe_output_stream):
	* event-msw.c (make_winsock_stream_1):
	* event-msw.c (mswindows_enqueue_process_event):
	* event-msw.c (emacs_mswindows_next_event):
	* event-msw.c (get_process_input_waitable):
	* event-msw.c (emacs_mswindows_select_process):
	* event-stream.c (wrap_command_builder):
	* event-stream.c (event_stream_next_event):
	* event-stream.c (echo_key_event):
	* event-stream.c (munge_keymap_translate):
	* event-stream.c (pre_command_hook):
	* event-stream.c (dribble_out_event):
	* event-tty.c (emacs_tty_next_event):
	* event-unixoid.c (read_event_from_tty_or_stream_desc):
	* events.c:
	* events.c (print_event_1):
	* events.c (print_event):
	* events.c (nth_of_key_sequence_as_event):
	* events.c (format_event_object):
	* events.c (Fevent_window):
	* events.h:
	* events.h (wrap_timeout):
	* events.h (wrap_event):
	* extents.c:
	* extents.c (allocate_extent_auxiliary):
	* extents.c (mark_extent_info):
	* extents.c (allocate_extent_info):
	* extents.c (decode_buffer_or_string):
	* extents.c (buffer_or_string_extent_info):
	* extents.c (buffer_or_string_extent_info_force):
	* extents.c (print_extent_2):
	* extents.c (extent_fragment_update):
	* extents.c (Fnext_extent):
	* extents.c (Fprevious_extent):
	* extents.c (Fnext_e_extent):
	* extents.c (Fprevious_e_extent):
	* extents.c (Fset_extent_parent):
	* extents.c (set_extent_endpoints_1):
	* extents.c (copy_extent):
	* extents.c (destroy_extent):
	* extents.c (Fmake_extent):
	* extents.c (Fcopy_extent):
	* extents.c (slow_map_extents_function):
	* extents.c (slow_map_extent_children_function):
	* extents.c (extent_at_mapper):
	* extents.c (report_extent_modification_mapper):
	* extents.c (Fextent_properties):
	* extents.c (Fforce_highlight_extent):
	* extents.c (run_extent_copy_paste_internal):
	* extents.c (insert_extent):
	* extents.c (splice_in_string_extents):
	* extents.c (put_text_prop_mapper):
	* extents.c (put_text_prop_openness_mapper):
	* extents.c (put_text_prop):
	* extents.h (wrap_extent):
	* extents.h (wrap_extent_auxiliary):
	* extents.h (wrap_extent_info):
	* faces.c:
	* faces.c (face_property_matching_instance):
	* faces.c (Fmake_face):
	* faces.c (init_device_faces):
	* faces.c (init_frame_faces):
	* faces.c (ensure_face_cachel_contains_charset):
	* faces.c (add_face_cachel):
	* faces.c (get_builtin_face_cache_index):
	* faces.c (get_extent_fragment_face_cache_index):
	* faces.c (update_frame_face_values):
	* faces.c (complex_vars_of_faces):
	* faces.h (wrap_face):
	* faces.h (FACE_PROPERTY_INSTANCE):
	* faces.h (FACE_FONT):
	* file-coding.c:
	* file-coding.c (setup_eol_coding_systems):
	* file-coding.c (make_coding_system_1):
	* file-coding.c (Fcopy_coding_system):
	* file-coding.c (make_coding_stream_1):
	* file-coding.c (convert_eol_print):
	* file-coding.c (convert_eol_putprop):
	* file-coding.c (convert_eol_getprop):
	* file-coding.c (detected_coding_system):
	* file-coding.c (complex_vars_of_file_coding):
	* file-coding.h:
	* file-coding.h (wrap_coding_system):
	* file-coding.h (XSETCODING_SYSTEM_OF_TYPE):
	* fileio.c (build_annotations):
	* fileio.c (auto_save_expand_name_error):
	* fileio.c (Fdo_auto_save):
	* filelock.c (lock_file):
	* fns.c (Fstring_equal):
	* fns.c (Fstring_lessp):
	* fns.c (Fstring_modified_tick):
	* fns.c (bump_string_modiff):
	* fns.c (Fsubstring):
	* fns.c (bad_bad_bunny):
	* fns.c (bad_bad_turtle):
	* fns.c (Ffillarray):
	* frame-gtk.c (decode_gtk_frame):
	* frame-gtk.c (gtk_set_frame_properties):
	* frame-gtk.c (resize_event_cb):
	* frame-gtk.c (delete_event_cb):
	* frame-gtk.c (cleanup_deleted_frame):
	* frame-gtk.c (gtk_get_mouse_position):
	* frame-gtk.c (gtk_update_frame_external_traits):
	* frame-msw.c:
	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_set_frame_properties):
	* frame-msw.c (error_frame_unsizable):
	* frame-tty.c (tty_schedule_frame_select):
	* frame-x.c:
	* frame-x.c (decode_x_frame):
	* frame-x.c (x_wm_maybe_store_wm_command):
	* frame-x.c (x_set_frame_properties):
	* frame-x.c (x_get_mouse_position):
	* frame-x.c (x_update_frame_external_traits):
	* frame.c (allocate_frame_core):
	* frame.c (setup_normal_frame):
	* frame.c (setup_minibuffer_frame):
	* frame.c (Fmake_frame):
	* frame.c (adjust_frame_size):
	* frame.c (device_selected_frame):
	* frame.c (Flast_nonminibuf_frame):
	* frame.c (Fset_frame_selected_window):
	* frame.c (Fnext_frame):
	* frame.c (Fprevious_frame):
	* frame.c (other_visible_frames):
	* frame.c (delete_frame_internal):
	* frame.c (Fdelete_frame):
	* frame.c (Fmouse_pixel_position):
	* frame.c (Fmouse_position):
	* frame.c (store_minibuf_frame_prop):
	* frame.c (dissect_as_face_setting):
	* frame.c (Fset_frame_properties):
	* frame.c (Fframe_property):
	* frame.c (Fframe_properties):
	* frame.c (Fset_frame_height):
	* frame.c (Fset_frame_width):
	* frame.c (Fset_frame_size):
	* frame.c (frame_conversion_internal):
	* frame.c (change_frame_size_1):
	* frame.c (update_frame_icon):
	* frame.h (wrap_frame):
	* free-hook.c (Freally_free):
	* general-slots.h:
	* glyphs-eimage.c:
	* glyphs-eimage.c (png_instantiate):
	* glyphs-gtk.c (extract_xpm_color_names):
	* glyphs-gtk.c (gtk_xpm_instantiate):
	* glyphs-gtk.c (gtk_redisplay_widget):
	* glyphs-msw.c (init_image_instance_from_dibitmap):
	* glyphs-msw.c (extract_xpm_color_names):
	* glyphs-msw.c (mswindows_resource_instantiate):
	* glyphs-msw.c (init_image_instance_from_xbm_inline):
	* glyphs-widget.c (check_valid_item_list):
	* glyphs-x.c (extract_xpm_color_names):
	* glyphs-x.c (x_xpm_instantiate):
	* glyphs-x.c (x_redisplay_widget):
	* glyphs.c:
	* glyphs.c (check_window_subwindow_cache):
	* glyphs.c (allocate_image_instance):
	* glyphs.c (decode_error_behavior_flag):
	* glyphs.c (encode_error_behavior_flag):
	* glyphs.c (invalidate_glyph_geometry_maybe):
	* glyphs.c (image_going_to_add):
	* glyphs.c (allocate_glyph):
	* glyphs.c (glyph_image_instance_maybe):
	* glyphs.c (Fglyph_width):
	* glyphs.c (Fglyph_ascent):
	* glyphs.c (Fglyph_descent):
	* glyphs.c (Fglyph_height):
	* glyphs.c (set_glyph_dirty_p):
	* glyphs.c (glyph_baseline):
	* glyphs.c (glyph_contrib_p):
	* glyphs.c (glyph_query_geometry):
	* glyphs.c (glyph_do_layout):
	* glyphs.c (update_glyph_cachel_data):
	* glyphs.c (mark_glyph_cachels_as_clean):
	* glyphs.c (unmap_subwindow):
	* glyphs.c (map_subwindow):
	* glyphs.c (add_glyph_animated_timeout):
	* glyphs.c (disable_glyph_animated_timeout):
	* glyphs.h:
	* glyphs.h (IMAGE_SPECIFIERP):
	* glyphs.h (wrap_image_instance):
	* glyphs.h (wrap_glyph):
	* gpmevent.c:
	* gpmevent.c (struct __gpm_state):
	* gpmevent.c (store_gpm_state):
	* gpmevent.c (restore_gpm_state):
	* gpmevent.c (clear_gpm_state):
	* gpmevent.c (Freceive_gpm_event):
	* gpmevent.c (turn_off_gpm):
	* gpmevent.c (tty_get_foreign_selection):
	* gpmevent.c (tty_selection_exists_p):
	* gpmevent.c (tty_own_selection):
	* gpmevent.c (tty_get_mouse_position):
	* gpmevent.c (tty_set_mouse_position):
	* gpmevent.c (gpm_event_pending_p):
	* gpmevent.c (gpm_next_event_cb):
	* gpmevent.c (hook_event_callbacks_once):
	* gpmevent.c (hook_console_methods_once):
	* gpmevent.c (Fgpm_enabled_p):
	* gpmevent.c (Fgpm_enable):
	* gpmevent.c (vars_of_gpmevent):
	* gpmevent.c (syms_of_gpmevent):
	* gtk-xemacs.c (smash_scrollbar_specifiers):
	* gtk-xemacs.c (smash_toolbar_specifiers):
	* gui-msw.c (mswindows_handle_gui_wm_command):
	* gui-x.c:
	* gui-x.c (gcpro_popup_callbacks):
	* gui-x.c (popup_selection_callback):
	* gui-x.c (button_item_to_widget_value):
	* gui-x.h (wrap_popup_data):
	* gui.c:
	* gui.c (FROB):
	* gui.c (gui_item_add_keyval_pair):
	* gui.c (allocate_gui_item):
	* gui.c (make_gui_item_from_keywords_internal):
	* gui.c (update_gui_item_keywords):
	* gui.c (gui_parse_item_keywords_no_errors):
	* gui.c (gui_item_display_flush_right):
	* gui.c (print_gui_item):
	* gui.c (finalize_gui_item):
	* gui.c (gui_error):
	* gui.c (gui_error_2):
	* gui.h (wrap_gui_item):
	* gutter.c (output_gutter):
	* gutter.h (GUTTER_SPECIFIERP):
	* indent.c:
	* indent.c (last_visible_position):
	* indent.c (string_column_at_point):
	* indent.c (Findent_to):
	* indent.c (Fcurrent_indentation):
	* indent.c (Fmove_to_column):
	* input-method-xlib.c:
	* input-method-xlib.c (XIM_init_device):
	* input-method-xlib.c (XIM_init_frame):
	* insdel.c:
	* insdel.c (begin_multiple_change):
	* insdel.c (signal_first_change):
	* insdel.c (signal_before_change):
	* insdel.c (signal_after_change):
	* insdel.c (prepare_to_modify_buffer):
	* insdel.c (buffer_insert_string_1):
	* insdel.c (barf_if_buffer_read_only):
	* keymap.c:
	* keymap.c (keymap_lookup_directly):
	* keymap.c (keymap_store):
	* keymap.c (make_keymap):
	* keymap.c (define_key_check_and_coerce_keysym):
	* keymap.c (key_desc_list_to_event):
	* keymap.c (Fdefine_key):
	* keymap.c (Flookup_key):
	* keymap.c (get_relevant_keymaps):
	* keymap.c (minor_mode_keymap_predicate):
	* keymap.c (map_keymap_sort_predicate):
	* keymap.c (Fkey_description):
	* keymap.c (Fsingle_key_description):
	* keymap.c (where_is_to_char):
	* keymap.c (format_raw_keys):
	* keymap.c (where_is_recursive_mapper):
	* keymap.c (where_is_internal):
	* keymap.h (wrap_keymap):
	* lisp-disunion.h:
	* lisp-union.h (XPNTRVAL):
	* lisp-union.h (make_int):
	* lisp-union.h (make_char):
	* lisp-union.h (wrap_pointer_1):
	* lisp.h:
	* lisp.h (dynarr):
	* lisp.h (error_behavior):
	* lisp.h (wrap_cons):
	* lisp.h (struct Lisp_String):
	* lisp.h (wrap_string):
	* lisp.h (set_string_char):
	* lisp.h (wrap_vector):
	* lisp.h (wrap_bit_vector):
	* lisp.h (struct Lisp_Symbol):
	* lisp.h (SYMBOL_IS_KEYWORD):
	* lisp.h (wrap_symbol):
	* lisp.h (XSYMBOL_NEXT):
	* lisp.h (wrap_subr):
	* lisp.h (wrap_marker):
	* lisp.h (wrap_float):
	* lisp.h (FLOATP):
	* lisp.h (wrap_weak_list):
	* lisp.h (wrap_lcrecord_list):
	* lread.c (Fread_from_string):
	* lrecord.h:
	* lrecord.h (wrap_toolbar_button):
	* lrecord.h (wrap_record_1):
	* lstream.c (Lstream_delete):
	* lstream.c (make_stdio_stream_1):
	* lstream.c (make_filedesc_stream_1):
	* lstream.c (make_lisp_string_input_stream):
	* lstream.c (make_fixed_buffer_input_stream):
	* lstream.c (make_fixed_buffer_output_stream):
	* lstream.c (make_resizing_buffer_output_stream):
	* lstream.c (make_dynarr_output_stream):
	* lstream.c (make_lisp_buffer_stream_1):
	* lstream.h (wrap_lstream):
	* marker.c (mark_marker):
	* marker.c (Fmarker_buffer):
	* marker.c (init_buffer_markers):
	* menubar-gtk.c (__generic_button_callback):
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	* menubar-msw.c (mswindows_handle_wm_command):
	* menubar-x.c (pre_activate_callback):
	* menubar-x.c (set_frame_menubar):
	* menubar-x.c (x_popup_menu):
	* menubar.c (Fnormalize_menu_item_name):
	* minibuf.c:
	* minibuf.c (Ftry_completion):
	* minibuf.c (Fall_completions):
	* minibuf.c (clear_echo_area_internal):
	* minibuf.c (echo_area_append):
	* minibuf.c (echo_area_status):
	* mule-canna.c (Fcanna_touroku_string):
	* mule-canna.c (Fcanna_change_mode):
	* mule-canna.c (Fcanna_do_function):
	* mule-ccl.c (Fccl_execute):
	* mule-charset.c:
	* mule-charset.c (print_charset):
	* mule-charset.c (make_charset):
	* mule-charset.c (Fmake_charset):
	* mule-charset.c (Fcharset_id):
	* mule-charset.c (syms_of_mule_charset):
	* mule-wnnfns.c (Fwnn_inspect):
	* native-gtk-toolbar.c (gtk_output_toolbar):
	* objects-msw.c:
	* objects-msw.c (mswindows_print_color_instance):
	* objects-msw.c (mswindows_color_instance_equal):
	* objects-msw.c (mswindows_color_instance_hash):
	* objects-msw.c (mswindows_print_font_instance):
	* objects-msw.c (mswindows_font_instance_truename):
	* objects-msw.c (mswindows_font_spec_matches_charset):
	* objects-tty.c:
	* objects-tty.c (tty_font_spec_matches_charset):
	* objects-x.c (x_font_instance_truename):
	* objects.c:
	* objects.c (finalose):
	* objects.c (Fmake_color_instance):
	* objects.c (font_instance_equal):
	* objects.c (font_instance_hash):
	* objects.c (Fmake_font_instance):
	* objects.c (Flist_fonts):
	* objects.c (reinit_vars_of_objects):
	* objects.h (COLOR_SPECIFIERP):
	* objects.h (FONT_SPECIFIERP):
	* objects.h (FACE_BOOLEAN_SPECIFIERP):
	* objects.h (wrap_color_instance):
	* objects.h (wrap_font_instance):
	* opaque.c (make_opaque):
	* opaque.h (wrap_opaque):
	* opaque.h (wrap_opaque_ptr):
	* postgresql.c (make_pgconn):
	* postgresql.c (make_pgresult):
	* postgresql.h (wrap_pgconn):
	* postgresql.h (wrap_pgresult):
	* print.c:
	* print.c (output_string):
	* print.c (write_eistring):
	* print.c (temp_output_buffer_setup):
	* print.c (print_string):
	* print.c (print_internal):
	* print.c (print_symbol):
	* process-unix.c:
	* process-unix.c (unix_canonicalize_host_name):
	* process.c (make_process_internal):
	* process.c (init_process_io_handles):
	* process.c (Fprocess_send_region):
	* process.c (status_message):
	* process.c (status_notify):
	* process.c (decode_signal):
	* process.c (handle_signal):
	* process.h (PROCESSP):
	* process.h (wrap_process):
	* rangetab.c (Fmake_range_table):
	* rangetab.c (Fcopy_range_table):
	* rangetab.h (wrap_range_table):
	* redisplay-gtk.c (gtk_output_display_block):
	* redisplay-gtk.c (gtk_output_string):
	* redisplay-gtk.c (gtk_output_pixmap):
	* redisplay-gtk.c (gtk_clear_to_window_end):
	* redisplay-gtk.c (gtk_output_eol_cursor):
	* redisplay-gtk.c (gtk_clear_frame):
	* redisplay-gtk.c (gtk_flash):
	* redisplay-msw.c:
	* redisplay-msw.c (mswindows_output_string):
	* redisplay-msw.c (mswindows_output_pixmap):
	* redisplay-msw.c (mswindows_output_display_block):
	* redisplay-output.c:
	* redisplay-output.c (compare_runes):
	* redisplay-output.c (get_cursor_size_and_location):
	* redisplay-output.c (clear_left_border):
	* redisplay-output.c (clear_right_border):
	* redisplay-output.c (output_display_line):
	* redisplay-output.c (redisplay_output_subwindow):
	* redisplay-output.c (redisplay_output_layout):
	* redisplay-output.c (redisplay_output_pixmap):
	* redisplay-output.c (redisplay_clear_top_of_window):
	* redisplay-output.c (redisplay_clear_to_window_end):
	* redisplay-tty.c:
	* redisplay-tty.c (tty_output_display_block):
	* redisplay-tty.c (tty_clear_to_window_end):
	* redisplay-tty.c (tty_turn_on_frame_face):
	* redisplay-tty.c (tty_turn_off_frame_face):
	* redisplay-x.c:
	* redisplay-x.c (x_output_display_block):
	* redisplay-x.c (x_output_string):
	* redisplay-x.c (x_output_eol_cursor):
	* redisplay-x.c (x_clear_frame):
	* redisplay-x.c (x_flash):
	* redisplay.c:
	* redisplay.c (redisplay_text_width_emchar_string):
	* redisplay.c (redisplay_frame_text_width_string):
	* redisplay.c (add_emchar_rune_1):
	* redisplay.c (add_intbyte_string_runes):
	* redisplay.c (add_disp_table_entry_runes_1):
	* redisplay.c (add_glyph_rune):
	* redisplay.c (create_text_block):
	* redisplay.c (create_overlay_glyph_block):
	* redisplay.c (create_left_glyph_block):
	* redisplay.c (create_right_glyph_block):
	* redisplay.c (generate_formatted_string_db):
	* redisplay.c (generate_fstring_runes):
	* redisplay.c (create_string_text_block):
	* redisplay.c (call_redisplay_end_triggers):
	* redisplay.c (redisplay_frame):
	* redisplay.c (start_with_point_on_display_line):
	* redisplay.c (glyph_to_pixel_translation):
	* redisplay.c (pixel_to_glyph_translation):
	* scrollbar-gtk.c (gtk_scrollbar_pointer_changed_in_window):
	* scrollbar-msw.c (mswindows_handle_mousewheel_event):
	* scrollbar-x.c (x_scrollbar_pointer_changed_in_window):
	* scrollbar.c (init_frame_scrollbars):
	* scrollbar.c (init_device_scrollbars):
	* scrollbar.h (wrap_scrollbar_instance):
	* search.c:
	* search.c (fixup_search_regs_for_string):
	* search.c (looking_at_1):
	* search.c (string_match_1):
	* search.c (bi_find_next_emchar_in_string):
	* search.c (search_buffer):
	* search.c (set_search_regs):
	* search.c (wordify):
	* search.c (Freplace_match):
	* search.c (Fstore_match_data):
	* select-gtk.c (gtk_own_selection):
	* select-x.c:
	* sound.c:
	* sound.c (Fding):
	* sound.c (vars_of_sound):
	* specifier.c:
	* specifier.c (make_specifier_internal):
	* specifier.c (canonicalize_tag_set):
	* specifier.c (setup_device_initial_specifier_tags):
	* specifier.c (NOTE): New.
	* specifier.c (recompute_one_cached_specifier_in_window):
	* specifier.c (recompute_one_cached_specifier_in_frame):
	* specifier.h:
	* specifier.h (wrap_specifier):
	* specifier.h (GENERIC_SPECIFIERP):
	* specifier.h (INTEGER_SPECIFIERP):
	* specifier.h (NATNUM_SPECIFIERP):
	* specifier.h (BOOLEAN_SPECIFIERP):
	* specifier.h (DISPLAYTABLE_SPECIFIERP):
	* strftime.c (add_num_time_t):
	* symbols.c:
	* symbols.c (mark_symbol):
	* symbols.c (Fintern):
	* symbols.c (Fintern_soft):
	* symbols.c (Funintern):
	* symbols.c (oblookup):
	* symbols.c (map_obarray):
	* symbols.c (Fsymbol_name):
	* symbols.c (set_up_buffer_local_cache):
	* symbols.c (flush_all_buffer_local_cache):
	* symbols.c (Fset):
	* symbols.c (Fdefvaralias):
	* symbols.c (init_symbols_once_early):
	* symbols.c (defsubr):
	* symbols.c (defsubr_macro):
	* symbols.c (defvar_magic):
	* symeval.h:
	* symeval.h (wrap_symbol_value_magic):
	* syntax.h:
	* syntax.h (SYNTAX_CACHE_BYTE_TO_CHAR):
	* syntax.h (SYNTAX_CACHE_OBJECT_BYTE_TO_CHAR):
	* text.c (get_buffer_pos_char):
	* text.c (get_buffer_range_char):
	* text.c (get_string_pos_byte):
	* text.c (get_string_range_byte):
	* text.h:
	* text.h (eiinit):
	* text.h (eiinit_malloc):
	* toolbar-common.c:
	* toolbar-common.c (common_output_toolbar_button):
	* toolbar-common.c (common_output_toolbar):
	* toolbar-common.c (common_clear_toolbar):
	* toolbar-msw.c:
	* toolbar-msw.c (mswindows_output_toolbar):
	* toolbar-msw.c (mswindows_handle_toolbar_wm_command):
	* toolbar.c (update_toolbar_button):
	* toolbar.c (init_frame_toolbars):
	* toolbar.c (init_device_toolbars):
	* toolbar.h (wrap_toolbar_button):
	* toolbar.h (TOOLBAR_SPECIFIERP):
	* tooltalk.c (make_tooltalk_message):
	* tooltalk.c (make_tooltalk_pattern):
	* tooltalk.c (init_tooltalk):
	* tooltalk.h (wrap_tooltalk_message):
	* tooltalk.h (wrap_tooltalk_pattern):
	* ui-gtk.c (Fgtk_import_function_internal):
	* ui-gtk.c (emacs_gtk_object_finalizer):
	* ui-gtk.c (build_gtk_object):
	* ui-gtk.c (build_gtk_boxed):
	* ui-gtk.c (lisp_to_gtk_type):
	* ui-gtk.h (wrap_emacs_ffi):
	* ui-gtk.h (wrap_emacs_gtk_object):
	* ui-gtk.h (wrap_emacs_gtk_boxed):
	* undo.c (undo_prelude):
	* vm-limit.c:
	* vm-limit.c (memory_warnings):
	* window.c:
	* window.c (allocate_window):
	* window.c (window_is_leftmost):
	* window.c (window_is_rightmost):
	* window.c (window_is_highest):
	* window.c (window_is_lowest):
	* window.c (margin_width_internal):
	* window.c (Fnext_window):
	* window.c (Fprevious_window):
	* window.c (Fnext_vertical_window):
	* window.c (window_loop):
	* window.c (buffer_window_count):
	* window.c (Fdelete_other_windows):
	* window.c (list_windows):
	* window.c (make_dummy_parent):
	* window.c (window_pixel_height_to_char_height):
	* window.c (window_char_height_to_pixel_height):
	* window.c (window_displayed_height):
	* window.c (window_pixel_width_to_char_width):
	* window.c (window_char_width_to_pixel_width):
	* window.c (change_window_height):
	* window.c (Fmove_to_window_line):
	* window.c (wrap_window_configuration):
	* window.c (Fcurrent_window_configuration):
	* window.h (wrap_window):
	* window.h (wrap_window_mirror):
	Eliminate XSETFOO.  Replace all usages with wrap_foo().

	Make symbol->name a Lisp_Object, not Lisp_String *.  Eliminate
	nearly all uses of Lisp_String * in favor of Lisp_Object, and
	correct macros so most of them favor Lisp_Object.

	Create new error-behavior ERROR_ME_DEBUG_WARN -- output warnings,
	but at level `debug' (usually ignored).  Use it when instantiating
	specifiers, so problems can be debugged.  Move
	log-warning-minimum-level into C so that we can optimize
	ERROR_ME_DEBUG_WARN.

	Fix warning levels consistent with new definitions.

	Add default_ and parent fields to char table; not yet implemented.

	New fun Dynarr_verify(); use for further error checking on Dynarrs.

	Rearrange code at top of lisp.h in conjunction with dynarr changes.

	Fix eifree().  Use Eistrings in various places
	(format_event_object(), where_is_to_char(), and callers thereof)
	to avoid fixed-size strings buffers.  New fun write_eistring().

	Reindent and fix GPM code to follow standards.

	Set default MS Windows font to Lucida Console (same size as
	Courier New but less interline spacing, so more lines fit).
	Increase default frame size on Windows to 50 lines. (If that's too
	big for the workspace, the frame will be shrunk as necessary.)

	Fix problem with text files with no newlines (). (Change
	`convert-eol' coding system to use `nil' for autodetect,
	consistent with make-coding-system.)

	Correct compile warnings in vm-limit.c.

	Fix handling of reverse-direction charsets to avoid errors when
	opening (e.g.) mule-ucs/lisp/reldata/uiso8859-6.el.

	Recode some object printing methods to use write_fmt_string()
	instead of a fixed buffer and sprintf.

	Turn on display of png comments as warnings (level `info'), now
	that they're unobtrusive.

	Revamped the sound documentation.

	Fixed bug in redisplay w.r.t. hscroll/truncation/continuation
	glyphs causing jumping up and down of the lines, since they're
	bigger than the line size. (It was seen most obviously when
	there's a horizontal scroll bar, e.g. do C-h a glyph or something
	like that.) The problem was that the glyph-contrib-p setting on
	glyphs was ignored even if it was set properly, which it wasn't
	until now.

2002-03-14  Mike Alexander  <mta@arbortext.com>

	* event-msw.c (mswindows_unwait_process): New, remove process from
	wait list
	* process-nt.c (nt_finalize_process_data): Call
	mswindows_unwait_process
	* console-msw.h: Declare mswindows_unwait_process

2002-03-21  William M. Perry  <wmperry@gnu.org>

	* event-gtk.c (emacs_gtk_force_event_pending): Bogus definition
	that does nothing right now.
	(reinit_vars_of_event_gtk): Register a force_event_pending
	handler.  This seems to cure the crashes at startup caused by the
	progress bar.

2002-03-21  Malcolm Purvis  <malcolmpurvis@optushome.com.au>

	* event-gtk.c (emacs_gtk_format_magic_event):  Fixed compilation
	typos.

2002-03-20  Ben Wing  <ben@xemacs.org>

	* chartab.c:
	* chartab.c (Fcheck_category_at):
	* chartab.c (Fchar_in_category_p):
	Fix bugs in implementation and doc strings.

	* config.h.in (type_checking_assert_at_line):
	Add foo_checking_assert_at_line() macros.  Not clear whether these
	are actually useful, though; I'll take them out if not.

	* symsinit.h:
	* emacs.c:
	* emacs.c (main_1):
	Some improvements to the timeline.  Rearrange a bit the init
	calls.  Add call for reinit_vars_of_object_mswindows() and
	declare in symsinit.h.

	* event-Xt.c:
	* event-Xt.c (emacs_Xt_format_magic_event):
	* event-Xt.c (describe_event_window):
	* event-Xt.c (describe_event):
	* event-Xt.c (emacs_Xt_event_handler):
	* event-Xt.c (reinit_vars_of_event_Xt):
	* event-gtk.c:
	* event-gtk.c (emacs_gtk_format_magic_event):
	* event-gtk.c (reinit_vars_of_event_gtk):
	* event-msw.c:
	* event-msw.c (emacs_mswindows_format_magic_event):
	* event-msw.c (reinit_vars_of_event_mswindows):
	* event-stream.c:
	* event-stream.c (event_stream_operation):
	* event-stream.c (check_event_stream_ok):
	* event-stream.c (event_stream_handle_magic_event):
	* event-tty.c:
	* event-tty.c (emacs_tty_format_magic_event):
	* event-tty.c (reinit_vars_of_event_tty):
	* events.c:
	* events.c (event_equal):
	* events.c (event_hash):
	* events.c (format_event_object):
	* events.h:
	* events.h (struct event_stream):
	* events.h (union magic_data):

	Introduce new event methods for printing, comparing, and hashing
	magic events, to avoid event-type-specific stuff that had crept
	into events.c. (And was crashing, since the channel in MS Windows
	magic events may be nil.)  Implement the methods in
	event-{tty,gtk,Xt,mswindows}.c.  Make wrapping functions
	event_stream_{compare,hash,format}_magic_event() to check if
	everything's OK and call the actual callback.  Fix events.c to use
	the new methods.  Add a new event-stream-operation
	EVENT_STREAM_NOTHING -- event stream not actually required to be
	able to do anything, just be open. (#### This
	event-stream-operation stuff needs to be rethought.)

	Fixed describe_event() in event-Xt.c to print its output to a
	stream, not always to stderr, so it can be used
	elsewhere. (e.g. in print-event when a magic event is
	encountered?)

	* lisp.h:
	* lisp.h (XCHAR_1):
	* lisp.h (XCHAR):
	* lisp.h (XINT_1):
	* lisp.h (XCHAR_OR_INT_1):
	* lrecord.h:
	* lrecord.h (DECLARE_LRECORD):
	* lrecord.h (DECLARE_EXTERNAL_LRECORD):
	* lrecord.h (DECLARE_NONRECORD):
	* lrecord.h (XRECORD):
	* lrecord.h (wrap_record_1):
	* lrecord.h (wrap_record):
	Define new assert_at_line(), for use in asserts inside of inline
	functions.  The assert will report the line and file of the inline
	function, which is almost certainly not what you want as it's
	useless.  what you want to see is where the pseudo-macro was
	called from.  So, when error-checking is on, we pass in the line
	and file into the macros, for accurate printout using
	assert_at_line().  Happens only when error-checking is defined so
	doesn't slow down non-error-checking builds.  Fix XCHAR, XINT,
	XCHAR_OR_INT, XFOO, and wrap_foo() in this fashion.

	* lstream.c:
	* lstream.c (resizing_buffer_stream_ptr):
	* lstream.h:
	Add resizing_buffer_to_lisp_string().

	* objects-gtk.c (gtk_find_charset_font): Fix typo.

	* objects-msw.c:
	* objects-msw.c (create_hfont_from_font_spec):
	* objects-msw.c (initialize_font_instance):
	* objects-msw.c (mswindows_font_spec_matches_charset_stage_1):
	* objects-msw.c (mswindows_font_spec_matches_charset):
	* objects-msw.c (reinit_vars_of_object_mswindows):
	* objects-msw.c (vars_of_objects_mswindows):
	Implement a smarter way of determining whether a font matches a
	charset.  Formerly we just looked at the "script" element of the
	font spec, converted it to a code page, and compared it with the
	code page derived from the charset.  Now, as well as doing this,
	we ask the font for the list of unicode ranges it supports, see
	what range the charset falls into (#### bogus! need to do this
	char-by-char), and see if any of the font's supported ranges
	include the charset's range.  also do some caching in
	Vfont_signature_data of previous inquiries.

	* charset.h:
	* text.c (Fmake_char):
	* mule-charset.c (get_charset_limits): New fun; extracted out of
	Fmake_char() and declare prototype in charset.h.

	* text.h: introduce assert_by_line() to make
	REP_BYTES_BY_FIRST_BYTE report the file and line more accurately
	in an assertion failure.

	* unicode.c (char_to_unicode):
	make non-static (used in objects-msw.c), declare in charset.h.

2002-03-18  Ben Wing  <ben@xemacs.org>

	* process.c:
	* process.c (init_process_io_handles):
	Obey coding-system-for-{read,write} if set.

2002-03-18  Ben Wing  <ben@xemacs.org>

	* fns.c:
	* fns.c (Frequire):
	* fns.c (vars_of_fns):
	* lread.c:
	* lread.c (Fload_internal):
	* lread.c (PRINT_LOADING_MESSAGE_1):
	Add variable require-prints-loading-message to cause loading
	messages to get printed when a file is loading during a `require',
	which normally doesn't happen.  This can be set using env var
	XEMACSDEBUG to debug problems with non-interactive compilation.
	Modify load-internal so it prints "Requiring: ..." instead of
	"Loading: ..." when appropriate.

2002-03-16  Ben Wing  <ben@xemacs.org>

	* cm.c (cmgoto):
	* file-coding.c:
	* file-coding.c (detection_result_symbol_to_number):
	fix warnings.

2002-03-16  IKEYAMA Tomonori <tomonori@suiyokai.org>

	* unicode.c (add_charsets_to_precedence_list): Fix passing wrong
	argument to XCHARSET_LEADING_BYTE.

2002-03-15  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* intl-encap-win32.c (copy_shfileinfoa_to_shfileinfow):
	  Take size parameter and assert it's big enough.
	* intl-encap-win32.c (qxeSHGetFileInfo):
	  Deal with the case where no fileinfo structure is passed in.

2002-03-14  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* intl-encap-win32.c: Remove EncryptFile, DecryptFile &
	  mciGetDeviceIDFromElementID - APIs are not available on Win98
	* intl-auto-encap-win32.c: ditto
	* intl-auto-encap-win32.h: ditto
	* intl-encap-win32.c: Remove 'dir' command.

2002-03-13  William M. Perry  <wmperry@gnu.org>

	* ui-gtk.c (__allocate_object_storage): Make static to avoid
	warnings.
	(type_to_marshaller_type): Ditto.

	* symsinit.h: Added some missing *_gtk_* functions to avoid
	warnings.

	* select-gtk.c: Add extern definitions of lisp_to_time and
	time_to_lisp to avoid warnings.

	* redisplay-gtk.c (gtk_flash): reorder select/poll stuff to avoid
	warning about 'poll' being implicitly defined.  Mirrors change
	made to redisplay-x.c some time ago.
	(gtk_bevel_area): Fix unused variable warning.

	* gtk-xemacs.c (smash_face_fallbacks): ifdef this out to avoid
	warnings.

	* glyphs-gtk.c (write_lisp_string_to_temp_file): Fix 'grpro3'
	typo.
	(gtk_locate_pixmap_file): Use split_external_path instead of
	decode_path.

	* gccache-gtk.c (gc_cache_hash): Fix signed/unsigned warning.

	* event-gtk.c: event-mods.h no longer needed.  event-gtk.h is.

	* emacs-marshals.c (our_string_hash): Make this function static to
	avoid warnings.

	* device-gtk.c (gtk_event_name): Fix signed/unsigned warning.

	* event-gtk.h: New header file to hold declarations from
	event-gtk.c that are used in other files.  The quest to remove
	compilation warnings from GTK files begins.

2002-03-15  Ben Wing  <ben@xemacs.org>

	* config.h.in:
	* sysdep.c:
	* sysdep.c (get_process_times_1):
	* sysfile.h:
	* systime.h:
	add HAVE_SYS_TIMES_H and use it to include sys/times.h, used for
	struct tms in new POSIX() function times().

2002-03-15  Ben Wing  <ben@xemacs.org>

	* .cvsignore:
	ignore .tmp files that are getting auto-created by VC.

	* Makefile.in.in (release):
	* Makefile.in.in (fastdump):
	* Makefile.in.in (dynodump_deps):
	* Makefile.in.in (dump-elcs):
	* Makefile.in.in (batch_test_emacs):
	* Makefile.in.in (run-rtcmacs):
	Use -no-packages to avoid problems with package files shadowing
	core files (e.g. unicode.el in mule-ucs).

	* alloc.c (disksave_object_finalization):
	* emacs.c:
	* emacs.c (argmatch):
	* emacs.c (main_1):
	* emacs.c (standard_args):
	* emacs.c (vars_of_emacs):
	* lisp.h:
	add new -no-packages.  make sure list of args for sorting is
	actually correct.  clean up arg parsing code.

2002-03-12  Ben Wing  <ben@xemacs.org>

	* The Great Mule Merge of March 2002:
	see node by that name in the Internals Manual.

2002-01-31  John H. Palmieri  <palmieri@math.washington.edu>

	* dired.c (Ffile_name_all_completions): Change documentation --
	remove reference to completion-ignored-extensions.
	* dired.c (vars_of_dired): Change documentation for
	completion-ignored-extensions -- remove reference to
	file-name-all-completions.

2002-03-05  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.5 "beets" is released.

2002-03-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* fileio.c (Fwrite_region_internal): Document use of start == Qnil.

2001-09-04   Daiki Ueno  <ueno@unixuser.org>

	* insdel.c (prepare_to_modify_buffer): Don't call the function
	ask-user-about-supersession-threat when CLASH_DETECTION is set.

2002-02-13  Ben Wing  <ben@xemacs.org>

	* event-stream.c (reset_key_echo):
	* event-stream.c (reset_this_command_keys):
	* event-stream.c (execute_command_event):
	If console is dead as a result of C-x 5 0, then post-command stuff
	needs to be careful and do only non-console-specific stuff.

2002-02-11  Mike Sperber  <mike@xemacs.org>

	* device-x.c:
	(x_IO_error_handler):
	(x_init_device): Temporarily keep device in static variable
	`device_being_initialized' so we can recover gracefully from
	internal XOpenDevice failure.  (XOpenDevice is documented to
	return NULL on failure, but sometimes calls the IO error handler
	instead.)

2002-02-12  Stephen J. Turnbull  <stephen@xemacs.org>

	* fileio.c (Ffind_file_name_handler): Improve docstring.

2002-01-20  Stephen J. Turnbull  <stephen@xemacs.org>

	* fns.c (Fmapconcat): Improve docstring.

2002-01-03  Eric Gillespie, Jr.  <epg@pretzelnet.org>

	* device-gtk.c: Add prototype for
	emacs_gtk_selection_clear_event_handle.
	(gtk_init_device): Call gtk_selection_add_target for CLIPBOARD
	selection.  Setup signal handler for "selection_clear_event"
	(emacs_gtk_selection_clear_event_handle).

	* select-gtk.c (emacs_gtk_selection_clear_event_handle): Handle
	other applications owning the clipboard (based on
	x_handle_selection_clear).

2002-02-02  William M. Perry  <wmperry@gnu.org>

	* winslots.h: New toolbar_shadow_thickness slot.

	* toolbar.c (Vtoolbar_shadow_thickness): New specifier to control
	thickness of toolbar shadows instead of relying on X resourcs.
	(toolbar_shadows_changed): New function to redraw toolbars if the
	thickness specifier is changed.
	(specifier_vars_of_toolbar): Arrange for caching and defaults for
	toolbar-shadow-thickness.

	* toolbar-x.c: Use the new redisplay-based toolbar code.

	* toolbar-common.c (__prepare_button_area): Look at
	toolbar-shadow-thickness specifier instead of window-system
	specific stuff.

	* gtk-xemacs.c (smash_scrollbar_specifiers): New function to set
	the toolbar-shadow-thickness specifier from GTK styles.

	* frameslots.h: New toolbar_shadow_thickness slot.

	* glyphs-gtk.c (extract_xpm_color_names): Resurrect the xpm color
	symbols stuff because the GTK XPM libraries do very weird things
	if you don't specify the transparency at all.  Reverting the patch
	of 12/22/01.

2002-01-26  Stephen J. Turnbull  <stephen@xemacs.org>

	* ChangeLog (2001-09-19 Ben Wing): Entry dosed with Dramamine.
	* README.integral-types: New file excised from ChangeLog.

2002-01-19  Jan Vroonhof  <jan@xemacs.org>

	* cmdloop.c: New variable Qdisabled_command_loop.
			Move Vdisabled_command_loop declaration here.
	* cmdloop.c (syms_of_cmdloop): Declare Qdisabled_command_loop.
	* eval.c (Fcommand_execute): Use the value of the symbol not
		the value of the value as the hook to run.
	* event-stream.c: Remove declaration of Vdisabled_command_loop
	* lisp.h: Declare Qdisabled_command_loop

2002-01-15  Adrian Aichner  <adrian@xemacs.org>

	* event-msw.c (mswindows_wnd_proc): Add handling of WM_SHOWWINDOW
	to fix problem switching between virtual desktops under virtuawin
	virtual window manager.

2002-01-10  Stephen J. Turnbull  <stephen@xemacs.org>

	* mule-charset.c (global):
	(syms_of_mule_charset):
	(complex_vars_of_mule_charset):
	Declare and initialize Vcharset_latin_iso8859_15.

	* mule-charset.h (LEADING_BYTE_OFFICIAL_1): Add LATIN_ISO8859_15.

2002-01-08  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.4 "bamboo" is released.

2001-07-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* config.h.in (IPV6_CANONICALIZE): New #define for --with-ipv6-lookup.
	* process-unix.c (unix_canonicalize_host_name):
	sysdep.c (init_system_name):
	Use it to conditionally support IPv6 canonicalization.

2002-01-04  Martin Buchholz  <martin@xemacs.org>

	* keymap.c (define_key_alternate_name): Parenthesize EQ.

2001-12-22  William M. Perry  <wmperry@gnu.org>

	* glyphs-gtk.c (gtk_xpm_instantiate): Don't bother doing the
	xpm-color-symbols checks, they are impossible to implement with
	GTK's XPM implementation. :(

2001-12-13  William M. Perry  <wmperry@gnu.org>

	* select-gtk.c (gtk_own_selection): Update to follow the new
	method signature.  Ignore owned_p as it appears to only be used
	for motif hacks.

	* redisplay-gtk.c (gtk_output_string): Fixed some warnings about
	signed/unsigned comparison.
	(gtk_output_gdk_pixmap): Remove clipping code as per change by
	andy@xemacs.org to the X11 code.
	(gtk_output_pixmap): Make this follow the output_pixmap method
	conventions and expose it.
	(gtk_output_horizontal_line): Renamed from output_hline, and
	expose it in our method structure.
	(gtk_ring_bell): Don't ring the bell if volume <= 0

	* toolbar-gtk.c (gtk_output_toolbar_button):
	(gtk_output_frame_toolbars):
	(gtk_redraw_exposed_toolbars):
	(gtk_redraw_frame_toolbars): These are now just aliases for the
	common_XXX() routines in toolbar-common.c

	* toolbar-common.c: New common toolbar implementation.  This file
	uses only the redisplay_XXX() functions and device methods to draw
	the toolbar, and so should be portable across all windowing
	systems (other than tty, and even then I imagine text-based stuff
	would work if you had a way to select it).

2001-12-11  Andy Piper  <andy@xemacs.org>

	* dialog-msw.c (dialog_popped_down): new function. unset popup_up_p.
	* dialog-msw.c (mswindows_make_dialog_box_internal): set
	popup_up_p.
	* menubar-msw.c (unsafe_handle_wm_initmenupopup_1): ditto.
	* menubar-msw.c (mswindows_handle_wm_command): ditto.
	* menubar-msw.c (mswindows_popup_menu): ditto.

2001-11-24  Andy Piper  <andy@xemacs.org>

	* window.c (Fsplit_window): Doc return type.

2001-07-30  Adrian Aichner  <adrian@xemacs.org>

	* event-msw.c: Typo fix.
	* event-msw.c (mswindows_wnd_proc): Set FRAME_VISIBLE_P after
	magic XM_MAPFRAME event has been sent.

2001-11-23  Andy Piper  <andy@xemacs.org>

	* event-msw.c (mswindows_wnd_proc): Don't pump mousewheel events.

2001-11-21  Andy Piper  <andy@xemacs.org>

	* scrollbar-msw.c (mswindows_handle_mousewheel_event): cope with
	mouse events outside the frame.

2001-11-15  Andy Piper  <andy@xemacs.org>

	(Fmswindows_shell_execute): fix handling of URL's under cygwin (again).

2001-11-14  Andy Piper  <andy@xemacs.org>

	* nt.c (REG_ROOT): change registry key to XEmacs.

2001-10-29  Andy Piper  <andy@xemacs.org>

	* dialog-msw.c (handle_directory_dialog_box): quit if the user
	cancels.

2001-12-16  Torsten Duwe  <duwe@caldera.de>

	* search.c (Freplace_match): Add missing sub-expression functionality.

	* buffer.c (decode_buffer): Add a check for pointer type to
	decode_buffer, before gcc's CSE optimization reorders a
	dereference in front of the allow_string test.

2001-11-16  Darryl Okahata  <darrylo@xemacs.org>

	* window.c (window_loop): Fix bug that sometimes prevented
	window_loop() from iterating across multiple devices.  Also, at
	Ben's request, changed infloop-detecting code to abort() instead
	of silently terminating window_loop().

2001-11-21  Stephen J. Turnbull  <stephen@xemacs.org>

	Based on analysis and patch by Simon Josefson <jas@extundo.com>.
	* editfns.c (make_time): New function.
	(Fencode_time): Use it instead of wasteful_word_to_lisp.
	* lisp.h (make_time): Prototype and comment it.
	* dired.c (wasteful_word_to_lisp): Deprecate.
	(Ffile_attributes): Use make_time() instead of wasteful_word_to_lisp().

2001-10-31  Kyle Jones  <kyle_jones@wonderworks.com>

	* fileio.c (auto_save_1): Use current coding system, not
	escape-quoted.

2001-11-13  Ben Wing  <ben@xemacs.org>

	* window.c:
	* window.c (window_truncation_on):
	* window.c (syms_of_window):
	truncate-partial-width-windows should respect the buffer being
	displayed, like other redisplay vars.

2001-11-13  Hirokazu FUKUI  <hfukui@sannet.ne.jp>

	* event-stream.c (Fread_key_sequence): save current buffer.

2001-10-29  Andrew Begel  <abegel@eecs.berkeley.edu>

	* ntheap.c (_heap_init): Don't redefine in VS.NET (MSC >= 1300).

2001-10-29  Andrew Begel  <abegel@eecs.berkeley.edu>

	* alloc.c (lcrecord_stats): Add space for types defined in modules.

2001-12-18  Adrian Aichner  <adrian@xemacs.org>

	* .cvsignore: Sort lines, add dump-id.c.

2001-12-13  William M. Perry  <wmperry@gnu.org>

	* glyphs-gtk.c (gtk_map_subwindow): Make sure that we always call
	gtk_fixed_put, even if the size allocations are the same.
	(gtk_subwindow_instantiate): Fixed compilation warnings.

2001-10-26  Mike Alexander  <mta@arbortext.com>

	* event-msw.c (slurper_free_shared_data_maybe): Free the pipe handle.

2001-10-25  Andy Piper  <andy@xemacs.org>

	* ChangeLog:
	* dialog-msw.c (handle_directory_proc): new function.
	 (handle_directory_dialog_box): new fucntion.
	 (handle_file_dialog_box): use new directory dialog support.
	 (mswindows_make_dialog_box_internal): ditto.
	* event-msw.c (mswindows_wnd_proc): minor fix to scrollbar event
	handling.
	(mswindows_find_frame): make global.
	* fileio.c (Fexpand_file_name): build fix.
	* general-slots.h: add Qdirectory.
	* scrollbar-msw.c (mswindows_handle_scrollbar_event): fix focus
	handling.
	* syswindows.h (LOCAL_TO_WIN32_FILE_FORMAT): fix problem with
	cygwin not leaving win32 paths unchanged.
	* win32.c (Fmswindows_cygwin_to_win32_path): new function. Use the
	cygwin runtime to do path conversion.
	(Fmswindows_shell_execute): fix cygwin handling of URLs.
	(syms_of_win32): add new function.
	* window.c (window_loop): build fix.

2001-10-15  Andy Piper  <andy@xemacs.org>

	(Fmswindows_shell_execute): fix handling of URL's under cygwin.

2001-08-30   Daiki Ueno  <ueno@unixuser.org>

	* process-unix.c (unix_open_multicast_group): Remove too much
	conversion between host and network byte order.

2001-09-19  Ben Wing  <ben@xemacs.org>

	* abbrev.c (abbrev_match_mapper):
	* abbrev.c (abbrev_oblookup):
	* abbrev.c (obarray_has_blank_p):
	* abbrev.c (abbrev_count_case):
	* abbrev.c (Fexpand_abbrev):
	* alloc.c (xmalloc):
	* alloc.c (xcalloc):
	* alloc.c (xmalloc_and_zero):
	* alloc.c (xrealloc):
	* alloc.c (deadbeef_memory):
	* alloc.c (allocate_lisp_storage):
	* alloc.c (alloc_lcrecord):
	* alloc.c (size_vector):
	* alloc.c (vector_hash):
	* alloc.c (make_vector_internal):
	* alloc.c (make_vector):
	* alloc.c (make_bit_vector_internal):
	* alloc.c (make_bit_vector):
	* alloc.c (make_bit_vector_from_byte_vector):
	* alloc.c (Fmake_marker):
	* alloc.c (noseeum_make_marker):
	* alloc.c (make_uninit_string):
	* alloc.c (resize_string):
	* alloc.c (set_string_char):
	* alloc.c (Fmake_string):
	* alloc.c (Fstring):
	* alloc.c (make_string):
	* alloc.c (build_string):
	* alloc.c (build_translated_string):
	* alloc.c (make_string_nocopy):
	* alloc.c (make_lcrecord_list):
	* alloc.c (tick_lcrecord_stats):
	* alloc.c (garbage_collect_1):
	* alloc.c (malloced_storage_size):
	* alloc.c (fixed_type_block_overhead):
	* blocktype.c (Blocktype_newf):
	* blocktype.h:
	* blocktype.h (Blocktype_declare):
	* buffer.c:
	* buffer.c (Fkill_buffer):
	* buffer.c (compute_buffer_text_usage):
	* buffer.c (struct):
	* buffer.c (reinit_vars_of_buffer):
	* buffer.c (directory_is_current_directory):
	* buffer.h:
	* buffer.h (struct buffer_text):
	* buffer.h (struct buffer):
	* buffer.h (VALID_CHARPTR_P):
	* buffer.h (REAL_INC_CHARBYTEBPOS):
	* buffer.h (INC_CHARBYTEBPOS):
	* buffer.h (DEC_CHARPTR):
	* buffer.h (VALIDATE_CHARPTR_FORWARD):
	* buffer.h (charptr_n_addr):
	* buffer.h (simple_set_charptr_emchar):
	* buffer.h (charptr_emchar):
	* buffer.h (set_charptr_emchar):
	* buffer.h (charptr_copy_char):
	* buffer.h (BI_BUF_BEG):
	* buffer.h (BI_BUF_PTR_BYTE_POS):
	* buffer.h (BUF_PTR_BYTE_POS):
	* buffer.h (BI_BUF_BYTE_ADDRESS):
	* buffer.h (BUF_BYTE_ADDRESS):
	* buffer.h (BI_BUF_BYTE_ADDRESS_BEFORE):
	* buffer.h (BUF_BYTE_ADDRESS_BEFORE):
	* buffer.h (valid_membpos_p):
	* buffer.h (bytebpos_to_membpos):
	* buffer.h (membpos_to_bytebpos):
	* buffer.h (membpos_to_charbpos):
	* buffer.h (buffer_or_string_bytebpos_to_membpos):
	* buffer.h (buffer_or_string_membpos_to_bytebpos):
	* buffer.h (buffer_or_string_charbpos_to_bytebpos):
	* buffer.h (VALID_BYTEBPOS_P):
	* buffer.h (ASSERT_VALID_BYTEBPOS_UNSAFE):
	* buffer.h (VALIDATE_BYTEBPOS_BACKWARD):
	* buffer.h (VALIDATE_BYTEBPOS_FORWARD):
	* buffer.h (INC_BYTEBPOS):
	* buffer.h (DEC_BYTEBPOS):
	* buffer.h (prev_bytebpos):
	* buffer.h (next_bytebpos):
	* buffer.h (BYTEBPOS_INVALID):
	* buffer.h (real_charbpos_to_bytebpos):
	* buffer.h (real_bytebpos_to_charbpos):
	* buffer.h (charbpos_to_bytebpos):
	* buffer.h (make_charbpos):
	* buffer.h (BUF_FETCH_CHAR):
	* buffer.h (BUF_CHARPTR_COPY_CHAR):
	* buffer.h (union):
	* buffer.h (DFC_LISP_STRING_USE_CONVERTED_DATA):
	* buffer.h (BUF_CEILING_OF):
	* buffer.h (BUF_FLOOR_OF):
	* buffer.h (BUF_CEILING_OF_IGNORE_ACCESSIBLE):
	* buffer.h (BUF_FLOOR_OF_IGNORE_ACCESSIBLE):
	* buffer.h (BUFFER_ALLOC):
	* buffer.h (intbyte_strcmp):
	* buffer.h (intbyte_memcmp):
	* bytecode.c (invalid_byte_code):
	* bytecode.c (optimize_byte_code):
	* bytecode.c (compiled_function_hash):
	* bytecode.c (compiled_function_instructions):
	* callint.c (check_mark):
	* callint.c (callint_prompt):
	* callint.c (PROMPT):
	* callint.c (Fcall_interactively):
	* callproc.c (Fold_call_process_internal):
	* callproc.c (getenv_internal):
	* callproc.c (Fgetenv):
	* callproc.c (egetenv):
	* callproc.c (init_callproc):
	* casefiddle.c (casify_object):
	* casefiddle.c (casify_region_internal):
	* casefiddle.c (casify_word):
	* chartab.c (char_table_entry_hash):
	* chartab.c (char_table_hash):
	* cmds.c (Fforward_char):
	* cmds.c (Fforward_line):
	* cmds.c (Fdelete_char):
	* config.h.in:
	* console-msw.c (mswindows_output_console_string):
	* console-msw.c (Fmswindows_debugging_output):
	* console-msw.c (DSTRING):
	* console-msw.c (DSYMNAME):
	* console-msw.c (mswindows_lisp_error):
	* console-msw.h:
	* console-x.c (split_up_display_spec):
	* console-x.c (x_semi_canonicalize_console_connection):
	* console.c (stuff_buffered_input):
	* console.h (struct console_methods):
	* data.c (weak_list_hash):
	* database.c (berkdb_get):
	* database.c (berkdb_map):
	* device-msw.c (msprinter_default_printer):
	* device-msw.c (hash_devmode):
	* device-msw.c (Fmswindows_printer_list):
	* device-x.c (validify_resource_component):
	* device-x.c (Fx_get_resource_prefix):
	* device.h (struct pixel_to_glyph_translation_cache):
	* dialog-msw.c (push_intbyte_string_as_unicode):
	* dialog-msw.c (handle_question_dialog_box):
	* dired.c (Fdirectory_files):
	* dired.c (file_name_completion):
	* dired.c (struct user_name):
	* dired.c (user_name_completion):
	* dired.c (make_directory_hash_table):
	* dired.c (Ffile_attributes):
	* doc.c (string_join):
	* doc.c (Fsnarf_documentation):
	* doc.c (Fsubstitute_command_keys):
	* doprnt.c (union printf_arg):
	* doprnt.c (doprnt_1):
	* doprnt.c (parse_off_posnum):
	* doprnt.c (parse_doprnt_spec):
	* doprnt.c (get_doprnt_args):
	* doprnt.c (emacs_doprnt_1):
	* doprnt.c (emacs_doprnt_2):
	* doprnt.c (emacs_doprnt_c):
	* doprnt.c (emacs_doprnt_va):
	* doprnt.c (emacs_doprnt_lisp):
	* doprnt.c (emacs_doprnt_lisp_2):
	* doprnt.c (emacs_doprnt_string_c):
	* doprnt.c (emacs_doprnt_string_va):
	* doprnt.c (emacs_doprnt_string_lisp):
	* doprnt.c (emacs_doprnt_string_lisp_2):
	* dumper.c:
	* dumper.c (struct):
	* dumper.c (dump_add_opaque):
	* dumper.c (pdump_align_stream):
	* dumper.c (pdump_size_to_align):
	* dumper.c (pdump_entry_list_elt):
	* dumper.c (pdump_add_entry):
	* dumper.c (pdump_get_indirect_count):
	* dumper.c (pdump_register_sub):
	* dumper.c (pdump_dump_data):
	* dumper.c (pdump_reloc_one):
	* dumper.c (pdump_allocate_offset):
	* dumper.c (pdump_dump_root_struct_ptrs):
	* dumper.c (pdump_dump_root_objects):
	* dumper.c (pdump_load_finish):
	* dumper.c (pdump_resource_get):
	* dumper.c (pdump_file_get):
	* dynarr.c (Dynarr_memory_usage):
	* editfns.c (Fchar_to_string):
	* editfns.c (buildmark):
	* editfns.c (charbpos_clip_to_bounds):
	* editfns.c (bytebpos_clip_to_bounds):
	* editfns.c (Fgoto_char):
	* editfns.c (save_excursion_save):
	* editfns.c (beginning_of_line_p):
	* editfns.c (Fchar_after):
	* editfns.c (Fchar_before):
	* editfns.c (Fformat_time_string):
	* editfns.c (Fcurrent_time_string):
	* editfns.c (Finsert_char):
	* editfns.c (Fbuffer_substring):
	* editfns.c (Fbuffer_substring_no_properties):
	* editfns.c (Finsert_buffer_substring):
	* editfns.c (Fcompare_buffer_substrings):
	* editfns.c (Fsubst_char_in_region):
	* editfns.c (Ftranslate_region):
	* editfns.c (Fdelete_region):
	* editfns.c (Fnarrow_to_region):
	* editfns.c (save_restriction_restore):
	* editfns.c (transpose_markers):
	* editfns.c (Ftranspose_regions):
	* eldap.c (Fldap_open):
	* eldap.c (Fldap_add):
	* eldap.c (Fldap_modify):
	* elhash.c:
	* elhash.c (struct Lisp_Hash_Table):
	* elhash.c (HASHCODE):
	* elhash.c (hash_table_size):
	* elhash.c (lisp_string_hash):
	* elhash.c (lisp_object_eql_hash):
	* elhash.c (lisp_object_equal_hash):
	* elhash.c (hash_table_hash):
	* elhash.c (compute_hash_table_derived_values):
	* elhash.c (make_standard_lisp_hash_table):
	* elhash.c (make_general_lisp_hash_table):
	* elhash.c (make_lisp_hash_table):
	* elhash.c (decode_hash_table_size):
	* elhash.c (resize_hash_table):
	* elhash.c (pdump_reorganize_hash_table):
	* elhash.c (enlarge_hash_table):
	* elhash.c (find_hentry):
	* elhash.c (remhash_1):
	* elhash.c (internal_array_hash):
	* elhash.c (internal_hash):
	* elhash.h:
	* emacs.c (split_string_by_emchar_1):
	* emacs.c (decode_path):
	* emacs.c (vars_of_emacs):
	* emodules.c (emodules_load):
	* emodules.c (emodules_doc_subr):
	* emodules.c (emodules_doc_sym):
	* eval.c (print_subr):
	* 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 (printing_unreadable_object):
	* eval.c (caught_a_squirmer):
	* eval.c (eval_in_buffer_trapping_errors):
	* eval.c (run_hook_trapping_errors):
	* eval.c (safe_run_hook_trapping_errors):
	* eval.c (call0_trapping_errors):
	* eval.c (call1_trapping_errors):
	* eval.c (call2_trapping_errors):
	* eval.c (warn_when_safe):
	* event-Xt.c (x_event_to_emacs_event):
	* event-Xt.c (describe_event_window):
	* event-gtk.c (dragndrop_data_received):
	* event-msw.c (ntpipe_slurp_reader):
	* event-msw.c (ntpipe_shove_writer):
	* event-msw.c (struct winsock_stream):
	* event-msw.c (winsock_initiate_read):
	* event-msw.c (winsock_reader):
	* event-msw.c (winsock_writer):
	* event-msw.c (emacs_mswindows_create_stream_pair):
	* event-stream.c:
	* event-stream.c (allocate_command_builder):
	* event-stream.c (echo_key_event):
	* event-stream.c (lookup_command_event):
	* event-stream.c (dribble_out_event):
	* event-unixoid.c (event_stream_unixoid_create_stream_pair):
	* events.c (event_hash):
	* events.c (format_event_object):
	* events.c (event_pixel_translation):
	* events.c (Fevent_point):
	* events.c (Fevent_closest_point):
	* events.h (struct command_builder):
	* extents.c:
	* extents.c (stack_of_extents):
	* extents.c (membpos_to_startind):
	* extents.c (bytebpos_to_startind):
	* extents.c (buffer_or_string_bytebpos_to_startind):
	* extents.c (buffer_or_string_bytebpos_to_endind):
	* extents.c (gap_array_adjust_markers):
	* extents.c (gap_array_move_gap):
	* extents.c (extent_list_locate_from_pos):
	* extents.c (extent_list_at):
	* extents.c (soe_dump):
	* extents.c (soe_move):
	* extents.c (extent_endpoint_bytebpos):
	* extents.c (extent_endpoint_charbpos):
	* extents.c (extent_changed_for_redisplay):
	* extents.c (extent_in_region_p):
	* extents.c (map_extents_bytebpos):
	* extents.c (map_extents):
	* extents.c (adjust_extents):
	* extents.c (adjust_extents_for_deletion):
	* extents.c (extent_find_end_of_run):
	* extents.c (extent_find_beginning_of_run):
	* extents.c (extent_fragment_update):
	* extents.c (extent_hash):
	* extents.c (extent_endpoint_external):
	* extents.c (Fextent_length):
	* extents.c (Fnext_extent_change):
	* extents.c (Fprevious_extent_change):
	* extents.c (set_extent_endpoints_1):
	* extents.c (set_extent_endpoints):
	* extents.c (make_extent_internal):
	* extents.c (copy_extent):
	* extents.c (Fmake_extent):
	* extents.c (Fset_extent_endpoints):
	* extents.c (Fextent_in_region_p):
	* extents.c (Fmap_extents):
	* extents.c (struct slow_map_extent_children_arg):
	* extents.c (slow_map_extent_children_function):
	* extents.c (Fmap_extent_children):
	* extents.c (struct extent_at_arg):
	* extents.c (extent_at_bytebpos):
	* extents.c (Fextent_at):
	* extents.c (Fextents_at):
	* extents.c (struct verify_extents_arg):
	* extents.c (verify_extent_modification):
	* extents.c (struct process_extents_for_insertion_arg):
	* extents.c (process_extents_for_insertion_mapper):
	* extents.c (process_extents_for_insertion):
	* extents.c (struct process_extents_for_deletion_arg):
	* extents.c (process_extents_for_deletion):
	* extents.c (report_extent_modification_mapper):
	* extents.c (report_extent_modification):
	* extents.c (run_extent_copy_paste_internal):
	* extents.c (run_extent_copy_function):
	* extents.c (run_extent_paste_function):
	* extents.c (update_extent):
	* extents.c (insert_extent):
	* extents.c (Finsert_extent):
	* extents.c (struct add_string_extents_arg):
	* extents.c (add_string_extents_mapper):
	* extents.c (add_string_extents):
	* extents.c (struct splice_in_string_extents_arg):
	* extents.c (splice_in_string_extents_mapper):
	* extents.c (splice_in_string_extents):
	* extents.c (copy_string_extents_mapper):
	* extents.c (copy_string_extents):
	* extents.c (get_text_property_bytebpos):
	* extents.c (get_text_property_1):
	* extents.c (struct put_text_prop_arg):
	* extents.c (put_text_prop_mapper):
	* extents.c (put_text_prop_openness_mapper):
	* extents.c (put_text_prop):
	* extents.c (Fput_text_property):
	* extents.c (Fadd_text_properties):
	* extents.c (Fremove_text_properties):
	* extents.h:
	* extents.h (struct extent):
	* faces.c (face_hash):
	* file-coding.c:
	* file-coding.c (detect_eol_type):
	* file-coding.c (detect_coding_type):
	* file-coding.c (determine_real_coding_system):
	* file-coding.c (Fdetect_coding_region):
	* file-coding.c (decoding_reader):
	* file-coding.c (decoding_writer):
	* file-coding.c (mule_decode):
	* file-coding.c (Fdecode_coding_region):
	* file-coding.c (encoding_reader):
	* file-coding.c (encoding_writer):
	* file-coding.c (mule_encode):
	* file-coding.c (Fencode_coding_region):
	* file-coding.c (detect_coding_sjis):
	* file-coding.c (decode_coding_sjis):
	* file-coding.c (encode_coding_sjis):
	* file-coding.c (detect_coding_big5):
	* file-coding.c (decode_coding_big5):
	* file-coding.c (encode_coding_big5):
	* file-coding.c (decode_ucs4):
	* file-coding.c (detect_coding_ucs4):
	* file-coding.c (decode_coding_ucs4):
	* file-coding.c (encode_coding_ucs4):
	* file-coding.c (detect_coding_utf8):
	* file-coding.c (decode_coding_utf8):
	* file-coding.c (encode_coding_utf8):
	* file-coding.c (detect_coding_iso2022):
	* file-coding.c (decode_coding_iso2022):
	* file-coding.c (encode_coding_iso2022):
	* file-coding.c (decode_coding_no_conversion):
	* file-coding.c (encode_coding_no_conversion):
	* file-coding.h (INTBYTE_FIRST_BYTE_P):
	* fileio.c (normalize_filename):
	* fileio.c (report_file_type_error):
	* fileio.c (report_error_with_errno):
	* fileio.c (report_file_error):
	* fileio.c (read_allowing_quit):
	* fileio.c (write_allowing_quit):
	* fileio.c (Ffile_name_directory):
	* fileio.c (Ffile_name_nondirectory):
	* fileio.c (Fmake_temp_name):
	* fileio.c (Fexpand_file_name):
	* fileio.c (Ffile_truename):
	* fileio.c (Fsubstitute_in_file_name):
	* fileio.c (barf_or_query_if_file_exists):
	* fileio.c (Ffile_name_absolute_p):
	* fileio.c (Ffile_symlink_p):
	* fileio.c (Fdo_auto_save):
	* filelock.c (MAKE_LOCK_NAME):
	* filelock.c (fill_in_lock_file_name):
	* floatfns.c (float_hash):
	* fns.c (print_bit_vector):
	* fns.c (bit_vector_hash):
	* fns.c (size_bit_vector):
	* fns.c (Flength):
	* fns.c (Fsafe_length):
	* fns.c (Fstring_lessp):
	* fns.c (copy_list):
	* fns.c (concat):
	* fns.c (Ffillarray):
	* fns.c (bytecode_nconc2):
	* fns.c (Fnconc):
	* fns.c (mapcar1):
	* fns.c (Fmapcar):
	* fns.c (Fmapvector):
	* fns.c (ADVANCE_INPUT):
	* fns.c (base64_encode_1):
	* fns.c (base64_decode_1):
	* fns.c (XMALLOC_OR_ALLOCA):
	* fns.c (Fbase64_encode_region):
	* fns.c (Fbase64_encode_string):
	* fns.c (Fbase64_decode_region):
	* fns.c (Fbase64_decode_string):
	* font-lock.c (struct context_cache):
	* font-lock.c (font_lock_maybe_update_syntactic_caches):
	* font-lock.c (beginning_of_defun):
	* font-lock.c (end_of_defun):
	* font-lock.c (setup_context_cache):
	* font-lock.c (find_context):
	* font-lock.c (Fsyntactically_sectionize):
	* frame-gtk.c (gtk_set_frame_text_value):
	* frame-gtk.c (gtk_set_title_from_intbyte):
	* frame-gtk.c (gtk_set_icon_name_from_intbyte):
	* frame-gtk.c (console_type_create_frame_gtk):
	* frame-msw.c (mswindows_set_title_from_intbyte):
	* frame-msw.c (console_type_create_frame_mswindows):
	* frame-x.c (x_set_frame_text_value):
	* frame-x.c (x_set_title_from_intbyte):
	* frame-x.c (x_set_icon_name_from_intbyte):
	* frame-x.c (x_set_frame_properties):
	* frame-x.c (x_cde_transfer_callback):
	* frame-x.c (console_type_create_frame_x):
	* frame.c (Fmake_frame):
	* frame.c (Fmouse_position):
	* frame.c (generate_title_string):
	* frame.c (update_frame_title):
	* gif_io.c (GifStdRead):
	* gif_io.c (GifStdWrite):
	* gif_io.c (GifRead):
	* gif_io.c (GifWrite):
	* gifrlib.h:
	* glyphs-eimage.c (jpeg_memory_src):
	* glyphs-eimage.c (jpeg_instantiate):
	* glyphs-eimage.c (gif_memory_storage):
	* glyphs-eimage.c (gif_read_from_memory):
	* glyphs-eimage.c (gif_instantiate):
	* glyphs-eimage.c (struct png_memory_storage):
	* glyphs-eimage.c (png_read_from_memory):
	* glyphs-eimage.c (png_instantiate):
	* glyphs-eimage.c (tiff_memory_storage):
	* glyphs-eimage.c (tiff_memory_read):
	* glyphs-eimage.c (tiff_instantiate):
	* glyphs-msw.c (mswindows_xpm_instantiate):
	* glyphs-msw.c (bmp_instantiate):
	* glyphs-msw.c (mswindows_xface_instantiate):
	* glyphs-msw.c (mswindows_image_instance_hash):
	* glyphs-msw.c (mswindows_widget_property):
	* glyphs-msw.c (mswindows_combo_box_property):
	* glyphs-x.c (x_image_instance_hash):
	* glyphs-x.c (write_lisp_string_to_temp_file):
	* glyphs.c (image_instance_hash):
	* glyphs.c (incompatible_image_types):
	* glyphs.c (query_string_geometry):
	* glyphs.c (query_string_font):
	* glyphs.c (instantiator_eq_hash):
	* glyphs.c (glyph_hash):
	* glyphs.h (struct Lisp_Image_Instance):
	* gpmevent.c (tty_get_foreign_selection):
	* 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):
	* gui-x.h:
	* gui.c (separator_string_p):
	* gui.c (gui_name_accelerator):
	* gui.c (gui_item_hash):
	* gui.h:
	* gutter.c (gutter_extent_signal_changed_region_maybe):
	* gutter.h:
	* hash.c:
	* hash.c (memory_hash):
	* hash.c (string_hash):
	* hash.c (hash_table_size):
	* hash.c (gethash):
	* hash.c (make_hash_table):
	* hash.c (make_general_hash_table):
	* hash.c (grow_hash_table):
	* hash.c (puthash):
	* hash.c (rehash):
	* hash.c (remhash):
	* hash.h:
	* hash.h (struct hash_table):
	* hpplay.c (player_error_internal):
	* indent.c:
	* indent.c (last_visible_position):
	* indent.c (column_at_point):
	* indent.c (string_column_at_point):
	* indent.c (Findent_to):
	* indent.c (bi_spaces_at_point):
	* indent.c (Fcurrent_indentation):
	* indent.c (Fmove_to_column):
	* indent.c (vmotion_1):
	* indent.c (vmotion):
	* indent.c (vertical_motion_1):
	* indent.c (vmotion_pixels):
	* indent.c (Fvertical_motion_pixels):
	* insdel.c:
	* insdel.c (MAX_CHARBPOS_GAP_SIZE_3):
	* insdel.c (bytecount_to_charcount):
	* insdel.c (charcount_to_bytecount):
	* insdel.c (charbpos_to_bytebpos_func):
	* insdel.c (bytebpos_to_charbpos_func):
	* insdel.c (buffer_mule_signal_inserted_region):
	* insdel.c (buffer_mule_signal_deleted_region):
	* insdel.c (charbpos_to_bytebpos):
	* insdel.c (bytebpos_to_charbpos):
	* insdel.c (get_buffer_pos_char):
	* insdel.c (get_buffer_pos_byte):
	* insdel.c (get_buffer_range_char):
	* insdel.c (get_buffer_range_byte):
	* insdel.c (get_string_range_char):
	* insdel.c (get_buffer_or_string_pos_char):
	* insdel.c (get_buffer_or_string_pos_byte):
	* insdel.c (get_buffer_or_string_range_char):
	* insdel.c (get_buffer_or_string_range_byte):
	* insdel.c (buffer_or_string_accessible_begin_char):
	* insdel.c (buffer_or_string_accessible_end_char):
	* insdel.c (buffer_or_string_accessible_begin_byte):
	* insdel.c (buffer_or_string_accessible_end_byte):
	* insdel.c (buffer_or_string_absolute_begin_char):
	* insdel.c (buffer_or_string_absolute_end_char):
	* insdel.c (buffer_or_string_absolute_begin_byte):
	* insdel.c (buffer_or_string_absolute_end_byte):
	* insdel.c (JUST_SET_POINT):
	* insdel.c (set_buffer_point):
	* insdel.c (do_marker_adjustment):
	* insdel.c (adjust_markers):
	* insdel.c (adjust_markers_for_insert):
	* insdel.c (gap_left):
	* insdel.c (gap_right):
	* insdel.c (move_gap):
	* insdel.c (merge_gap_with_end_gap):
	* insdel.c (make_gap):
	* insdel.c (buffer_signal_changed_region):
	* insdel.c (buffer_extent_signal_changed_region):
	* insdel.c (cancel_multiple_change):
	* insdel.c (begin_multiple_change):
	* insdel.c (signal_before_change):
	* insdel.c (signal_after_change):
	* insdel.c (prepare_to_modify_buffer):
	* insdel.c (fixup_internal_substring):
	* insdel.c (buffer_insert_string_1):
	* insdel.c (buffer_insert_raw_string_1):
	* insdel.c (buffer_insert_lisp_string_1):
	* insdel.c (buffer_insert_c_string_1):
	* insdel.c (buffer_insert_emacs_char_1):
	* insdel.c (buffer_insert_c_char_1):
	* insdel.c (buffer_insert_from_buffer_1):
	* insdel.c (buffer_delete_range):
	* insdel.c (buffer_replace_char):
	* insdel.c (make_string_from_buffer_1):
	* insdel.c (make_string_from_buffer):
	* insdel.c (make_string_from_buffer_no_extents):
	* insdel.c (barf_if_buffer_read_only):
	* insdel.c (find_charsets_in_intbyte_string):
	* insdel.c (intbyte_string_displayed_columns):
	* insdel.c (convert_intbyte_string_into_emchar_dynarr):
	* insdel.c (convert_intbyte_string_into_emchar_string):
	* insdel.c (convert_emchar_string_into_intbyte_dynarr):
	* insdel.c (convert_emchar_string_into_malloced_string):
	* insdel.c (reinit_vars_of_insdel):
	* insdel.c (init_buffer_text):
	* insdel.h:
	* insdel.h (struct buffer_text_change_data):
	* keymap.c (make_key_description):
	* keymap.c (make_keymap):
	* keymap.c (define_key_check_and_coerce_keysym):
	* keymap.c (Fsingle_key_description):
	* keymap.c (Ftext_char_description):
	* keymap.c (vars_of_keymap):
	* line-number.c (invalidate_line_number_cache):
	* line-number.c (insert_invalidate_line_number_cache):
	* line-number.c (delete_invalidate_line_number_cache):
	* line-number.c (get_nearest_line_number):
	* line-number.c (add_position_to_cache):
	* line-number.c (buffer_line_number):
	* line-number.h:
	* line-number.h (buffer_line_number):
	* lisp.h:
	* lisp.h (DO_REALLOC):
	* lisp.h (struct):
	* lisp.h (struct Lisp_Buffer_Cons):
	* lisp.h (struct Lisp_String):
	* lisp.h (set_string_char):
	* lisp.h (struct Lisp_Bit_Vector):
	* lisp.h (bit_vector_bit):
	* lisp.h (set_bit_vector_bit):
	* lisp.h (struct Lisp_Marker):
	* lisp.h (struct lcrecord_list):
	* lisp.h (struct overhead_stats):
	* lread.c:
	* lread.c (readchar):
	* lread.c (Fload_internal):
	* lread.c (read_atom):
	* lread.c (parse_integer):
	* lread.c (isfloat_string):
	* lrecord.h:
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (lrecord_description_type):
	* lrecord.h (struct struct_description):
	* lstream.c:
	* lstream.c (aligned_sizeof_lstream):
	* lstream.c (sizeof_lstream):
	* lstream.c (Lstream_flush_out):
	* lstream.c (Lstream_adding):
	* lstream.c (Lstream_write_1):
	* lstream.c (Lstream_write):
	* lstream.c (Lstream_raw_read):
	* lstream.c (Lstream_read_more):
	* lstream.c (Lstream_read):
	* lstream.c (Lstream_unread):
	* lstream.c (Lstream_fputc):
	* lstream.c (stdio_reader):
	* lstream.c (stdio_writer):
	* lstream.c (struct filedesc_stream):
	* lstream.c (filedesc_reader):
	* lstream.c (filedesc_writer):
	* lstream.c (filedesc_stream_set_pty_flushing):
	* lstream.c (lisp_string_reader):
	* lstream.c (lisp_string_rewinder):
	* lstream.c (struct fixed_buffer_stream):
	* lstream.c (make_fixed_buffer_input_stream):
	* lstream.c (make_fixed_buffer_output_stream):
	* lstream.c (fixed_buffer_reader):
	* lstream.c (fixed_buffer_writer):
	* lstream.c (struct resizing_buffer_stream):
	* lstream.c (resizing_buffer_writer):
	* lstream.c (dynarr_writer):
	* lstream.c (make_lisp_buffer_stream_1):
	* lstream.c (make_lisp_buffer_input_stream):
	* lstream.c (make_lisp_buffer_output_stream):
	* lstream.c (lisp_buffer_reader):
	* lstream.c (lisp_buffer_writer):
	* lstream.c (lisp_buffer_stream_startpos):
	* lstream.h:
	* lstream.h (lstream_implementation):
	* lstream.h (struct lstream):
	* malloc.c:
	* marker.c (marker_equal):
	* marker.c (marker_hash):
	* marker.c (set_marker_internal):
	* marker.c (bi_marker_position):
	* marker.c (marker_position):
	* marker.c (set_bi_marker_position):
	* marker.c (set_marker_position):
	* md5.c (Fmd5):
	* menubar-msw.c (mswindows_translate_menu_or_dialog_item):
	* menubar-msw.c (displayable_menu_item):
	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	* menubar-x.c (menu_accelerator_junk_on_error):
	* menubar.c (Fnormalize_menu_item_name):
	* minibuf.c (scmp_1):
	* minibuf.c (regexp_ignore_completion_p):
	* minibuf.c (clear_echo_area_internal):
	* minibuf.c (echo_area_append):
	* minibuf.c (echo_area_message):
	* minibuf.c (message_internal):
	* minibuf.c (message_append_internal):
	* minibuf.c (message_1):
	* minibuf.c (message_append_1):
	* mule-ccl.c (CCL_WRITE_CHAR):
	* mule-ccl.c (CCL_WRITE_STRING):
	* mule-charset.c (non_ascii_set_charptr_emchar):
	* mule-charset.c (non_ascii_charptr_emchar):
	* mule-charset.c (non_ascii_charptr_copy_char):
	* mule-charset.c (Lstream_get_emchar_1):
	* mule-charset.c (Lstream_fput_emchar):
	* mule-charset.c (Lstream_funget_emchar):
	* mule-charset.c (make_charset):
	* mule-charset.c (lookup_composite_char):
	* mule-charset.h:
	* mule-charset.h (LEADING_BYTE_PREFIX_P):
	* mule-charset.h (INTBYTE_FIRST_BYTE_P):
	* mule-charset.h (INTBYTE_LEADING_BYTE_P):
	* mule-charset.h (struct Lisp_Charset):
	* mule-charset.h (CHARSET_LEADING_BYTE):
	* mule-charset.h (CHARSET_BY_LEADING_BYTE):
	* mule-charset.h (REP_BYTES_BY_FIRST_BYTE):
	* mule-charset.h (CHAR_LEADING_BYTE):
	* mule-wnnfns.c (Fwnn_dict_list):
	* mule-wnnfns.c (Fwnn_fuzokugo_get):
	* mule-wnnfns.c (m2w):
	* objects-gtk.c (gtk_parse_nearest_color):
	* objects-gtk.c (gtk_font_spec_matches_charset):
	* objects-gtk.c (gtk_find_charset_font):
	* objects-gtk.h:
	* objects-msw.c (mswindows_font_spec_matches_charset):
	* objects-tty.c (tty_initialize_font_instance):
	* objects-tty.c (tty_font_spec_matches_charset):
	* objects-tty.c (tty_find_charset_font):
	* objects-x.c (x_font_instance_properties):
	* objects-x.c (x_font_spec_matches_charset):
	* objects-x.c (x_find_charset_font):
	* objects.c (font_spec_matches_charset):
	* objects.h:
	* opaque.c (aligned_sizeof_opaque):
	* opaque.c (sizeof_opaque):
	* opaque.c (make_opaque):
	* opaque.c (equal_opaque):
	* opaque.h:
	* opaque.h (Lisp_Opaque):
	* print.c (std_handle_out_external):
	* print.c (std_handle_out_va):
	* print.c (write_string_to_stdio_stream):
	* print.c (output_string):
	* print.c (write_char_internal):
	* print.c (write_string_1):
	* print.c (write_c_string):
	* print.c (Fwrite_char):
	* print.c (float_to_string):
	* print.c (print_string):
	* print.c (print_internal):
	* print.c (print_symbol):
	* print.c (Falternate_debugging_output):
	* print.c (Fexternal_debugging_output):
	* process-nt.c (alloc_process_memory):
	* process-nt.c (run_in_other_process):
	* process-nt.c (nt_send_process):
	* process-unix.c (unix_send_process):
	* process-unix.c (unix_process_send_eof):
	* process-unix.c (unix_kill_child_process):
	* process-unix.c (unix_canonicalize_host_name):
	* process-unix.c (unix_open_network_stream):
	* process.c:
	* process.c (read_process_output):
	* process.c (send_process):
	* process.c (Fprocess_send_region):
	* process.c (status_notify):
	* process.c (decode_signal):
	* procimpl.h:
	* redisplay-gtk.c (gtk_output_display_block):
	* redisplay-output.c:
	* redisplay-output.c (compare_runes):
	* redisplay-output.c (ADJ_CHARBPOS):
	* redisplay-output.c (redisplay_move_cursor):
	* redisplay-output.c (redisplay_output_layout):
	* redisplay-output.c (redisplay_update_line):
	* redisplay-tty.c:
	* redisplay-tty.c (tty_output_intbyte_string):
	* redisplay-tty.c (tty_output_emchar_dynarr):
	* redisplay-tty.c (substitute_in_dynamic_color_string):
	* redisplay-tty.c (set_foreground_to):
	* redisplay-tty.c (set_background_to):
	* redisplay.c:
	* redisplay.c (position_redisplay_data_type):
	* redisplay.c (struct prop_block):
	* redisplay.c (redisplay_text_width_string):
	* redisplay.c (redisplay_frame_text_width_string):
	* redisplay.c (generate_display_line):
	* redisplay.c (add_hscroll_rune):
	* redisplay.c (add_emchar_rune):
	* redisplay.c (add_intbyte_string_runes):
	* redisplay.c (add_blank_rune):
	* redisplay.c (add_disp_table_entry_runes_1):
	* redisplay.c (add_propagation_runes):
	* redisplay.c (add_glyph_rune):
	* redisplay.c (create_text_block):
	* redisplay.c (create_overlay_glyph_block):
	* redisplay.c (add_margin_blank):
	* redisplay.c (generate_formatted_string_db):
	* redisplay.c (generate_modeline):
	* redisplay.c (add_string_to_fstring_db_runes):
	* redisplay.c (generate_fstring_runes):
	* redisplay.c (create_string_text_block):
	* redisplay.c (generate_string_display_line):
	* redisplay.c (generate_displayable_area):
	* redisplay.c (regenerate_window):
	* redisplay.c (REGEN_INC_FIND_START_END):
	* redisplay.c (regenerate_window_extents_only_changed):
	* redisplay.c (regenerate_window_incrementally):
	* redisplay.c (regenerate_window_point_center):
	* redisplay.c (point_visible):
	* redisplay.c (line_at_center):
	* redisplay.c (point_at_center):
	* redisplay.c (redisplay_window):
	* redisplay.c (call_redisplay_end_triggers):
	* redisplay.c (window_line_number):
	* redisplay.c (decode_mode_spec):
	* redisplay.c (update_internal_cache_list):
	* redisplay.c (line_start_cache_start):
	* redisplay.c (line_start_cache_end):
	* redisplay.c (point_in_line_start_cache):
	* redisplay.c (point_would_be_visible):
	* redisplay.c (start_end_of_last_line):
	* redisplay.c (start_of_last_line):
	* redisplay.c (end_of_last_line):
	* redisplay.c (end_of_last_line_may_error):
	* redisplay.c (start_with_line_at_pixpos):
	* redisplay.c (start_with_point_on_display_line):
	* redisplay.c (update_line_start_cache):
	* redisplay.c (UPDATE_CACHE_RETURN):
	* redisplay.c (pixel_to_glyph_translation):
	* redisplay.c (init_redisplay):
	* redisplay.h:
	* redisplay.h (struct line_start_cache):
	* redisplay.h (struct rune):
	* redisplay.h (struct display_line):
	* redisplay.h (struct extent_fragment):
	* regex.c (struct):
	* regex.c (PATFETCH_EXTENDED):
	* regex.c (PATFETCH_RAW_EXTENDED):
	* regex.c (regex_compile):
	* regex.c (compile_extended_range):
	* regex.c (re_compile_fastmap):
	* regex.c (re_match_2_internal):
	* regex.c (regerror):
	* regex.h (Elemcount):
	* scrollbar-gtk.h (struct gtk_scrollbar_data):
	* scrollbar-msw.c (mswindows_handle_mousewheel_event):
	* scrollbar-x.h (struct x_scrollbar_data):
	* scrollbar.c (scrollbar_point):
	* scrollbar.c (update_scrollbar_instance):
	* scrollbar.c (scrollbar_reset_cursor):
	* scrollbar.c (Fscrollbar_page_up):
	* scrollbar.c (Fscrollbar_vertical_drag):
	* search.c:
	* search.c (fixup_search_regs_for_buffer):
	* search.c (looking_at_1):
	* search.c (fast_string_match):
	* search.c (bi_scan_buffer):
	* search.c (scan_buffer):
	* search.c (bi_find_next_newline_no_quit):
	* search.c (find_next_newline_no_quit):
	* search.c (find_next_newline):
	* search.c (bi_find_next_emchar_in_string):
	* search.c (find_before_next_newline):
	* search.c (skip_chars):
	* search.c (search_command):
	* search.c (trivial_regexp_p):
	* search.c (search_buffer):
	* search.c (simple_search):
	* search.c (boyer_moore):
	* search.c (set_search_regs):
	* search.c (wordify):
	* search.c (Freplace_match):
	* search.c (Fmatch_data):
	* search.c (Fregexp_quote):
	* select-common.h (selection_data_to_lisp_data):
	* select-common.h (lisp_data_to_selection_data):
	* select-gtk.c (atom_to_symbol):
	* select-gtk.c (emacs_gtk_selection_handle):
	* select-x.c (hack_motif_clipboard_selection):
	* select-x.c (x_reply_selection_request):
	* select-x.c (x_handle_selection_request):
	* select-x.c (copy_multiple_data):
	* select-x.c (x_get_window_property):
	* select-x.c (receive_incremental_selection):
	* select-x.c (x_get_window_property_as_lisp_data):
	* select-x.c (Fx_get_cutbuffer_internal):
	* select-x.c (Fx_store_cutbuffer_internal):
	* sheap.c (report_sheap_usage):
	* sound.c (Fplay_sound):
	* sound.h (sound_perror):
	* sound.h (sound_warn):
	* specifier.c (aligned_sizeof_specifier):
	* specifier.c (sizeof_specifier):
	* specifier.c (make_specifier_internal):
	* symbols.c (intern):
	* symbols.c (oblookup):
	* symbols.c (hash_string):
	* symbols.c (init_symbols_once_early):
	* symbols.c (defsymbol_massage_name_1):
	* symbols.c (defsymbol_nodump):
	* symbols.c (defsymbol):
	* symbols.c (defvar_magic):
	* syntax.c:
	* syntax.c (struct lisp_parse_state):
	* syntax.c (find_defun_start):
	* syntax.c (scan_words):
	* syntax.c (Fforward_word):
	* syntax.c (find_start_of_comment):
	* syntax.c (find_end_of_comment):
	* syntax.c (Fforward_comment):
	* syntax.c (scan_lists):
	* syntax.c (char_quoted):
	* syntax.c (Fbackward_prefix_chars):
	* syntax.c (scan_sexps_forward):
	* syntax.c (Fparse_partial_sexp):
	* syntax.h:
	* syntax.h (struct syntax_cache):
	* syntax.h (SYNTAX_CACHE_BYTE_TO_CHAR):
	* syntax.h (SYNTAX_CACHE_OBJECT_BYTE_TO_CHAR):
	* sysdep.c (get_eof_char):
	* sysdep.c (init_system_name):
	* sysdep.c (sys_readdir):
	* sysdep.h:
	* syswindows.h:
	* syswindows.h (LOCAL_FILE_FORMAT_TO_TSTR):
	* syswindows.h (LOCAL_TO_WIN32_FILE_FORMAT):
	* syswindows.h (WIN32_TO_LOCAL_FILE_FORMAT):
	* tests.c (Ftest_data_format_conversion):
	* toolbar-gtk.c (gtk_output_toolbar_button):
	* toolbar-x.c (x_output_toolbar_button):
	* tooltalk.c (check_status):
	* tooltalk.c (tt_message_arg_bval_vector):
	* tparam.c:
	* undo.c:
	* undo.c (record_insert):
	* undo.c (record_delete):
	* undo.c (record_change):
	* undo.c (record_property_change):
	* undo.c (Fprimitive_undo):
	* win32.c (tstr_to_local_file_format):
	* window.c (Fpos_visible_in_window_p):
	* window.c (Fwindow_end):
	* window.c (unshow_buffer):
	* window.c (Fdelete_other_windows):
	* window.c (Fselect_window):
	* window.c (window_scroll):
	* window.c (Fcenter_to_window_line):
	* window.c (Fmove_to_window_line):
	* window.c (sizeof_window_config_for_n_windows):
	* window.c (sizeof_window_config):
	* window.c (Fcurrent_pixel_column):
	* window.h (struct window):

	The great integral types renaming.

	Rationalize the names used for various integral types, so that
	they match their intended uses and follow consist conventions, and
	eliminate types that were not semantically different from each
	other.  The following global substitutions were made:

	Memory_Count		Bytecount
	Lstream_Data_Count	Bytecount
	Element_Count		Elemcount
	Hash_Code		Hashcode
	extcount		bytecount
	bufpos			charbpos
	bytind			bytebpos
	memind			membpos
	bufbyte			intbyte
	Extcount		Bytecount
	Bufpos			Charbpos
	Bytind			Bytebpos
	Memind			Membpos
	Bufbyte			Intbyte
	EXTCOUNT		BYTECOUNT
	BUFPOS			CHARBPOS
	BYTIND			BYTEBPOS
	MEMIND			MEMBPOS
	BUFBYTE			INTBYTE
	MEMORY_COUNT		BYTECOUNT
	LSTREAM_DATA_COUNT	BYTECOUNT
	ELEMENT_COUNT		ELEMCOUNT
	HASH_CODE		HASHCODE

	This resulted in some duplications.

	* lisp.h: removed duplicate declarations of Bytecount.

	* lstream.h: removed duplicate declaration of Bytecount.
	Rewrote the comment about this type.

	* dumper.c: remove duplicate case tag XD_BYTECOUNT, and the
	accompanying duplicate code, from 4 switchs tatements.

	[[See README.integral-types in this directory for more
	details.]] --invalid.

	See the Internals Manual, under Major Type Changes, and also
	README.global-renaming.


2001-09-17  Ben Wing  <ben@xemacs.org>

	* fileio.c (normalize_filename):
	* fileio.c (Fexpand_file_name):
	Fix various C++ compile errors in Andy's recent code.

	* callint.c (Fcall_interactively):
	* editfns.c (Ftemp_directory):
	* editfns.c (Fuser_full_name):
	* emacs.c (argmatch):
	* lread.c (locate_file_map_suffixes):
	* redisplay-x.c (x_ring_bell):
	Fix sign-compare warnings.

	* scrollbar-msw.c:
	* scrollbar-msw.c (mswindows_handle_scrollbar_event):
	Fix crash under MS Windows.  See comment around line 223 for
	explanation.

2001-09-08  Andy Piper  <andy@xemacs.org>

	* device-msw.c (mswindows_finish_init_device): remove dde
	initialization.
	* device-msw.c (mswindows_init_dde): factor out from
	mswindows_finish_init_device()
	* device-msw.c (init_mswindows_very_early): new function
	initialize but don't enable dde.
	* emacs.c (main_1): call init_mswindows_very_early.
	* event-msw.c:
	* event-msw.c (mswindows_dde_callback): only execute when we are
	ready.
	* symsinit.h: declare init_mswindows_very_early.

2001-09-08  Andy Piper  <andy@xemacs.org>

	* fileio.c (normalize_filename): copied from nt.c
	* (Ffile_name_directory): enable win32 paths under cygwin.
	* (Ffile_name_nondirectory): ditto.
	* (directory_file_name): ditto.
	* (Fexpand_file_name): ditto.
	* (Ffile_truename): ditto.
	* (Fsubstitute_in_file_name): ditto.
	* (Ffile_name_absolute_p): ditto.
	* (Ffile_readable_p): ditto.

2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.3 "asparagus" is released.

2001-04-19  Glynn Clements  <glynn.clements@virgin.net>

	* input-method-motif.c (XIM_delete_frame): New callback.
	(XIM_init_frame): Register it.

2001-08-24  Stephen J. Turnbull  <stephen@xemacs.org>

	* buffer.h (valid_char_p): Make negative integers invalid again.

2001-08-13  Ben Wing  <ben@xemacs.org>

	* regex.c: need to include stddef.h for ptrdiff_t on Solaris, when
	regex.c is compiled as part of lib-src.

2001-06-24  Ben Wing  <ben@xemacs.org>

	* EmacsFrame.c (EmacsFrameSetValues):
	* alloc.c:
	* alloc.c (xmalloc):
	* alloc.c (xcalloc):
	* alloc.c (xmalloc_and_zero):
	* alloc.c (xrealloc):
	* alloc.c (deadbeef_memory):
	* alloc.c (allocate_lisp_storage):
	* alloc.c (alloc_lcrecord):
	* alloc.c (Fmake_list):
	* alloc.c (size_vector):
	* alloc.c (vector_hash):
	* alloc.c (make_vector_internal):
	* alloc.c (make_vector):
	* alloc.c (make_bit_vector_internal):
	* alloc.c (make_bit_vector):
	* alloc.c (make_bit_vector_from_byte_vector):
	* alloc.c (Fmake_string):
	* alloc.c (make_lcrecord_list):
	* alloc.c (GC_CHECK_LHEADER_INVARIANTS):
	* alloc.c (tick_lcrecord_stats):
	* alloc.c (sweep_strings):
	* alloc.c (UNMARK_string):
	* alloc.c (ADDITIONAL_FREE_string):
	* alloc.c (garbage_collect_1):
	* alloc.c (Fgarbage_collect):
	* alloc.c (malloced_storage_size):
	* alloc.c (fixed_type_block_overhead):
	* backtrace.h:
	* backtrace.h (SPECPDL_RESERVE):
	* blocktype.c (Blocktype_newf):
	* blocktype.h:
	* blocktype.h (Blocktype_declare):
	* buffer.c:
	* buffer.c (compute_buffer_text_usage):
	* buffer.c (DEFVAR_BUFFER_LOCAL_1):
	* buffer.h (struct buffer_text):
	* buffer.h (MAP_INDIRECT_BUFFERS):
	* buffer.h (valid_char_p):
	* buffer.h (union):
	* buffer.h (bufbyte_memcmp):
	* bytecode.c (optimize_byte_code):
	* bytecode.c (compiled_function_hash):
	* callproc.c (Fold_call_process_internal):
	* chartab.c (char_table_entry_hash):
	* chartab.c (char_table_hash):
	* chartab.c (check_category_char):
	* chartab.c (Fcheck_category_at):
	* chartab.c (Fchar_in_category_p):
	* chartab.h:
	* console-x.c (x_semi_canonicalize_console_connection):
	* console.h (struct console_methods):
	* data.c (Faref):
	* data.c (Faset):
	* data.c (weak_list_hash):
	* device-msw.c (msprinter_init_device):
	* device-msw.c (Fmsprinter_select_settings):
	* device-msw.c (hash_devmode):
	* device-msw.c (Fmswindows_printer_list):
	* device-x.c (validify_resource_component):
	* device-x.c (Fx_put_resource):
	* dialog-msw.c:
	* dialog-msw.c (dialog_proc):
	* dialog-msw.c (button_width):
	* dialog-msw.c (ALIGN_TEMPLATE):
	* dialog-msw.c (handle_question_dialog_box):
	* dired.c (struct user_name):
	* dired.c (user_name_completion):
	* doc.c (get_doc_string):
	* doc.c (Fsnarf_documentation):
	* doprnt.c (parse_off_posnum):
	* doprnt.c (emacs_doprnt_1):
	* dumper.c:
	* dumper.c (struct):
	* dumper.c (dump_add_opaque):
	* dumper.c (pdump_align_stream):
	* dumper.c (pdump_size_to_align):
	* dumper.c (pdump_entry_list_elt):
	* dumper.c (pdump_add_entry):
	* dumper.c (pdump_get_indirect_count):
	* dumper.c (pdump_register_sub):
	* dumper.c (pdump_dump_data):
	* dumper.c (pdump_reloc_one):
	* dumper.c (pdump_allocate_offset):
	* dumper.c (pdump_dump_root_struct_ptrs):
	* dumper.c (pdump_dump_root_objects):
	* dumper.c (pdump_load_finish):
	* dumper.c (pdump_resource_get):
	* dumper.c (pdump_file_get):
	* dynarr.c (Dynarr_memory_usage):
	* editfns.c (Fformat_time_string):
	* editfns.c (Fcurrent_time_string):
	* eldap.c (Fldap_add):
	* eldap.c (Fldap_modify):
	* elhash.c:
	* elhash.c (struct Lisp_Hash_Table):
	* elhash.c (lisp_string_hash):
	* elhash.c (lisp_object_eql_hash):
	* elhash.c (lisp_object_equal_hash):
	* elhash.c (hash_table_hash):
	* elhash.c (print_hash_table):
	* elhash.c (compute_hash_table_derived_values):
	* elhash.c (make_standard_lisp_hash_table):
	* elhash.c (make_general_lisp_hash_table):
	* elhash.c (make_lisp_hash_table):
	* elhash.c (decode_hash_table_size):
	* elhash.c (resize_hash_table):
	* elhash.c (enlarge_hash_table):
	* elhash.c (remhash_1):
	* elhash.c (internal_array_hash):
	* elhash.c (internal_hash):
	* elhash.h:
	* emacs.c:
	* eval.c (grow_specpdl):
	* event-Xt.c (x_event_to_emacs_event):
	* event-msw.c:
	* event-msw.c (ntpipe_slurp_reader):
	* event-msw.c (ntpipe_shove_writer):
	* event-msw.c (struct winsock_stream):
	* event-msw.c (winsock_reader):
	* event-msw.c (winsock_writer):
	* event-msw.c (mswindows_need_event):
	* event-msw.c (assert):
	* event-msw.c (mswindows_current_layout_has_AltGr):
	* event-msw.c (debug_output_mswin_message):
	* events.c (event_hash):
	* extents.c (extent_list_locate):
	* faces.c (face_hash):
	* file-coding.c:
	* file-coding.c (detect_eol_type):
	* file-coding.c (detect_coding_type):
	* file-coding.c (determine_real_coding_system):
	* file-coding.c (Fdetect_coding_region):
	* file-coding.c (decoding_reader):
	* file-coding.c (decoding_writer):
	* file-coding.c (mule_decode):
	* file-coding.c (Fdecode_coding_region):
	* file-coding.c (encoding_reader):
	* file-coding.c (encoding_writer):
	* file-coding.c (mule_encode):
	* file-coding.c (Fencode_coding_region):
	* file-coding.c (detect_coding_sjis):
	* file-coding.c (decode_coding_sjis):
	* file-coding.c (encode_coding_sjis):
	* file-coding.c (DECODE_BIG5):
	* file-coding.c (ENCODE_BIG5):
	* file-coding.c (detect_coding_big5):
	* file-coding.c (decode_coding_big5):
	* file-coding.c (encode_coding_big5):
	* file-coding.c (Fset_ucs_char):
	* file-coding.c (detect_coding_ucs4):
	* file-coding.c (decode_coding_ucs4):
	* file-coding.c (encode_coding_ucs4):
	* file-coding.c (detect_coding_utf8):
	* file-coding.c (decode_coding_utf8):
	* file-coding.c (encode_coding_utf8):
	* file-coding.c (detect_coding_iso2022):
	* file-coding.c (decode_coding_iso2022):
	* file-coding.c (iso2022_designate):
	* file-coding.c (encode_coding_iso2022):
	* file-coding.c (decode_coding_no_conversion):
	* file-coding.c (encode_coding_no_conversion):
	* fileio.c (read_allowing_quit):
	* fileio.c (write_allowing_quit):
	* filelock.c (struct):
	* filelock.c (LOCK_PID_MAX):
	* filelock.c (fill_in_lock_file_name):
	* filelock.c (lock_file_1):
	* filelock.c (lock_file):
	* floatfns.c (float_hash):
	* fns.c (print_bit_vector):
	* fns.c (bit_vector_hash):
	* fns.c (size_bit_vector):
	* fns.c (Flength):
	* fns.c (Fsafe_length):
	* fns.c (copy_list):
	* fns.c (Fnthcdr):
	* fns.c (Ffillarray):
	* fns.c (bytecode_nconc2):
	* fns.c (Fnconc):
	* fns.c (mapcar1):
	* fns.c (Fmapcar):
	* fns.c (Fmapvector):
	* fns.c (XMALLOC_OR_ALLOCA):
	* font-lock.c:
	* font-lock.c (SYNTAX_END_STYLE):
	* font-lock.c (SINGLE_SYNTAX_STYLE):
	* font-lock.c (find_context):
	* frame-x.c (x_set_initial_frame_size):
	* frame-x.c (Fcde_start_drag_internal):
	* frame-x.c (Foffix_start_drag_internal):
	* frame.h (struct frame):
	* getloadavg.c:
	* getloadavg.c (getloadavg):
	* gif_io.c (GifStdRead):
	* gif_io.c (GifStdWrite):
	* gif_io.c (GifRead):
	* gif_io.c (GifWrite):
	* gifrlib.h:
	* glyphs-eimage.c (message):
	* glyphs-eimage.c (our_skip_input_data):
	* glyphs-eimage.c (jpeg_memory_src):
	* glyphs-eimage.c (gif_instantiate_unwind):
	* glyphs-eimage.c (gif_read_from_memory):
	* glyphs-eimage.c (gif_memory_close):
	* glyphs-eimage.c (gif_error_func):
	* glyphs-eimage.c (png_read_from_memory):
	* glyphs-eimage.c (tiff_memory_read):
	* glyphs-eimage.c (tiff_memory_write):
	* glyphs-eimage.c (tiff_memory_seek):
	* glyphs-eimage.c (tiff_memory_close):
	* glyphs-eimage.c (tiff_map_noop):
	* glyphs-eimage.c (tiff_unmap_noop):
	* glyphs-eimage.c (tiff_memory_size):
	* glyphs-eimage.c (tiff_error_func):
	* glyphs-eimage.c (tiff_warning_func):
	* glyphs-msw.c (xpm_to_eimage):
	* glyphs-msw.c (mswindows_resource_instantiate):
	* glyphs-msw.c (xbm_create_bitmap_from_data):
	* glyphs-msw.c (mswindows_image_instance_hash):
	* glyphs-shared.c (read_bitmap_data):
	* glyphs-shared.c (read_bitmap_data_from_file):
	* glyphs-x.c (x_image_instance_hash):
	* glyphs-x.c (write_lisp_string_to_temp_file):
	* glyphs-x.c (check_pointer_sizes):
	* glyphs-x.c (x_xpm_instantiate):
	* glyphs-x.c (x_subwindow_instantiate):
	* glyphs.c (image_instance_hash):
	* glyphs.c (bitmap_to_lisp_data):
	* glyphs.c (instantiator_eq_hash):
	* glyphs.c (glyph_hash):
	* glyphs.h:
	* glyphs.h (INITIALIZE_DEVICE_IIFORMAT):
	* glyphs.h (struct Lisp_Image_Instance):
	* glyphs.h (struct expose_ignore):
	* gmalloc.c (_free_internal):
	* gpmevent.c (tty_get_foreign_selection):
	* gui-x.c (add_accel_and_to_external):
	* gui.c (gui_item_display_flush_left):
	* gui.c (gui_item_display_flush_right):
	* gui.c (gui_item_hash):
	* gui.h:
	* hash.c:
	* hash.c (memory_hash):
	* hash.c (string_hash):
	* hash.c (hash_table_size):
	* hash.c (gethash):
	* hash.c (make_hash_table):
	* hash.c (make_general_hash_table):
	* hash.c (grow_hash_table):
	* hash.c (puthash):
	* hash.c (rehash):
	* hash.c (remhash):
	* hash.h:
	* hash.h (struct hash_table):
	* hftctl.c (RD_BUF):
	* imgproc.c (build_EImage_quantable):
	* insdel.c (bytecount_to_charcount):
	* keymap.c:
	* keymap.c (make_keymap):
	* keymap.c (relevant_map_push):
	* line-number.c (insert_invalidate_line_number_cache):
	* linuxplay.c (linux_play_data_or_file):
	* lisp.h:
	* lisp.h (DO_REALLOC):
	* lisp.h (struct Lisp_Bit_Vector):
	* lisp.h (bit_vector_bit):
	* lisp.h (set_bit_vector_bit):
	* lisp.h (struct lcrecord_list):
	* lisp.h (struct overhead_stats):
	* lrecord.h:
	* lrecord.h (struct lrecord_implementation):
	* lrecord.h (lrecord_description_type):
	* lrecord.h (struct lrecord_description):
	* lrecord.h (struct struct_description):
	* lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION):
	* lrecord.h (RECORD_TYPEP):
	* lrecord.h (DECLARE_EXTERNAL_LRECORD):
	* lstream.c:
	* lstream.c (aligned_sizeof_lstream):
	* lstream.c (sizeof_lstream):
	* lstream.c (Lstream_flush_out):
	* lstream.c (Lstream_adding):
	* lstream.c (Lstream_write_1):
	* lstream.c (Lstream_write):
	* lstream.c (Lstream_raw_read):
	* lstream.c (Lstream_read_more):
	* lstream.c (Lstream_read):
	* lstream.c (Lstream_unread):
	* lstream.c (Lstream_fputc):
	* lstream.c (stdio_reader):
	* lstream.c (stdio_writer):
	* lstream.c (filedesc_reader):
	* lstream.c (filedesc_writer):
	* lstream.c (lisp_string_reader):
	* lstream.c (struct fixed_buffer_stream):
	* lstream.c (make_fixed_buffer_input_stream):
	* lstream.c (make_fixed_buffer_output_stream):
	* lstream.c (fixed_buffer_reader):
	* lstream.c (fixed_buffer_writer):
	* lstream.c (struct resizing_buffer_stream):
	* lstream.c (resizing_buffer_writer):
	* lstream.c (dynarr_writer):
	* lstream.c (lisp_buffer_reader):
	* lstream.c (lisp_buffer_writer):
	* lstream.h:
	* lstream.h (lstream_implementation):
	* lstream.h (struct lstream):
	* malloc.c:
	* malloc.c (malloc):
	* malloc.c (free):
	* malloc.c (realloc):
	* md5.c (Fmd5):
	* menubar-msw.c (displayable_menu_item):
	* mule-ccl.c (ccl_driver):
	* mule-charset.c (non_ascii_charptr_copy_char):
	* mule-charset.c (Lstream_get_emchar_1):
	* mule-charset.h (struct Lisp_Charset):
	* mule-charset.h (CHARSET_BY_ATTRIBUTES):
	* mule-wnnfns.c (m2w):
	* ntheap.c (recreate_heap):
	* ntproc.c (find_child_pid):
	* objects-msw.c (mswindows_string_to_color):
	* objects-msw.c (mswindows_initialize_color_instance):
	* objects-msw.c (mswindows_valid_color_name_p):
	* objects-x.c (x_initialize_font_instance):
	* objects-x.c (truename_via_FONT_prop):
	* objects-x.c (x_font_instance_properties):
	* offix.c (DndDragButtons):
	* offix.h:
	* opaque.c (aligned_sizeof_opaque):
	* opaque.c (sizeof_opaque):
	* opaque.c (make_opaque):
	* opaque.c (equal_opaque):
	* opaque.c (reinit_opaque_once_early):
	* opaque.h:
	* opaque.h (Lisp_Opaque):
	* postgresql.h (message):
	* process-nt.c (alloc_process_memory):
	* process-nt.c (run_in_other_process):
	* process-nt.c (nt_send_process):
	* process-unix.c (unix_send_process):
	* rangetab.c (get_range_table):
	* redisplay-msw.c (mswindows_output_cursor):
	* redisplay-x.c (x_output_string):
	* redisplay-x.c (x_output_vertical_divider):
	* redisplay.c (add_hscroll_rune):
	* redisplay.c (add_octal_runes):
	* redisplay.c (add_control_char_runes):
	* redisplay.c (add_propagation_runes):
	* redisplay.c (redisplay_window):
	* redisplay.c (point_in_line_start_cache):
	* redisplay.c (glyph_to_pixel_translation):
	* regex.c:
	* regex.c (init_syntax_once):
	* regex.c (print_fastmap):
	* regex.c (print_double_string):
	* regex.c (struct):
	* regex.c (PUSH_FAILURE_POINT):
	* regex.c (POP_FAILURE_POINT):
	* regex.c (union):
	* regex.c (SET_REGS_MATCHED):
	* regex.c (GET_BUFFER_SPACE):
	* regex.c (regex_compile):
	* regex.c (compile_range):
	* regex.c (re_compile_fastmap):
	* regex.c (re_set_registers):
	* regex.c (re_search_2):
	* regex.c (re_match_2_internal):
	* regex.c (regcomp):
	* regex.c (regexec):
	* regex.c (regerror):
	* regex.h:
	* regex.h (Element_Count):
	* regex.h (struct re_pattern_buffer):
	* regex.h (struct re_registers):
	* search.c (skip_chars):
	* select-gtk.c:
	* select-gtk.c (symbol_to_gtk_atom):
	* select-gtk.c (atom_to_symbol):
	* select-gtk.c (PROCESSING_GTK_CODE):
	* select-gtk.c (emacs_gtk_selection_handle):
	* select-gtk.c (gtk_get_window_property):
	* select-gtk.c (receive_incremental_selection):
	* select-gtk.c (gtk_get_window_property_as_lisp_data):
	* select-x.c:
	* select-x.c (symbol_to_x_atom):
	* select-x.c (PROCESSING_X_CODE):
	* select-x.c (x_reply_selection_request):
	* select-x.c (x_handle_selection_request):
	* select-x.c (copy_multiple_data):
	* select-x.c (x_get_window_property):
	* select-x.c (receive_incremental_selection):
	* select-x.c (x_get_window_property_as_lisp_data):
	* select-x.c (Fx_get_cutbuffer_internal):
	* select-x.c (Fx_store_cutbuffer_internal):
	* sheap.c (report_sheap_usage):
	* specifier.c (aligned_sizeof_specifier):
	* specifier.c (sizeof_specifier):
	* specifier.c (make_specifier_internal):
	* symbols.c (defsymbol_massage_name_1):
	* symbols.c (defkeyword_massage_name):
	* symbols.c (deferror_massage_name_and_message):
	* sysdep.c (get_eof_char):
	* sysdep.c (tty_init_sys_modes_on_device):
	* sysdep.c (init_system_name):
	* sysdir.h (select):
	* tests.c (Ftest_data_format_conversion):
	* tparam.c:
	* unexaix.c (copy_sym):
	* unexconvex.c (sptr;):
	* unexconvex.c (copy_sym):
	* unexcw.c:
	* unexcw.c (unexec):
	* unexcw.c (ALLOC_MASK):
	* unexcw.c (CHECK_AOUT_POS):
	* unexcw.c (get_section_info):
	* unexcw.c (copy_executable_and_dump_data_section):
	* unexcw.c (dup_file_area):
	* unexcw.c (write_int_to_bss):
	* unexec.c (make_hdr):
	* unexec.c (copy_sym):
	* window.c (struct window_config):
	* window.c (mark_window_config):
	* window.c (sizeof_window_config_for_n_windows):
	* window.c (sizeof_window_config):
	* window.c (window_config_equal):
	* window.c (free_window_configuration):
	* window.c (Fset_window_configuration):
	* window.c (count_windows):
	* window.c (Fcurrent_window_configuration):
	* window.c (reinit_vars_of_window):
	* xgccache.c (gc_cache_hash):
	* xmu.c (XmuCursorNameToIndex):
	Create types Memory_Count, Element_Count, Hash_Code.  The first
	two are EMACS_INT, the last EMACS_UINT.  Use them to replace
	size_t, and to replace int/unsigned int where appropriate
	(there are probably more such places).

	Eliminate size_t and hashcode_t everywhere except in ancillary
	code that is borrowed from elsewhere. (Use Memory_Count,
	Element_Count, Hash_Code, Bytecount, Extcount, or EMACS_INT.)
	Eliminate use of unsigned everywhere except in the same code, when
	(a) it holds a simple count (rather than a bit flag and such); (b)
	it refers to an int or long, not something smaller; (c) it's not
	necessary specifically to call an external API with such a
	parameter (we treat such parameters like Extbyte, and convert at
	the point of entry/exit); and (d) there's no reasonable
	possibility it will refer to a value greater than 2G, or if it
	could, other things in XEmacs would break.

	Put parens around all sizeof args in case we decide to macro-ize
	this. (I don't think it's necessary.  Now that we've turned
	sign-compare warnings back on, we will get warnings wherever the
	unsigned return value of sizeof might cause problems.  That's
	what the warnings are for, after all.)

	Eliminate dumper type XD_SIZE_T and replace with XD_MEMORY_COUNT,
	XD_ELEMENT_COUNT, XD_HASH_CODE.

	Rename Lstream_data_count to Lstream_Data_Count, following the
	capitalization conventions used in other types.

	* elhash.c (hash_table_size):
	Hash table sizes are signed now, so comment out the two highest
	(post-2G) numbers in the primes list.

	* event-msw.c (mswindows_current_layout_has_AltGr):
	Rewrite to be a bit more correct and fix unsigned problems.

	* extents.c (extent_hash):
	* extents.c (set_extent_glyph):
	* extents.c (Fset_extent_begin_glyph_layout):
	* extents.c (Fset_extent_end_glyph_layout):
	* extents.h:
	* extents.h (set_extent_normal_field):
	* extents.h (extent_begin_glyph_layout):
	To eliminate warnings, create set functions for the enum fields
	in struct extent.

	* filelock.c: Use pid_t instead of unsigned long to represent a pid.
	(#### Perhaps a bad idea.  Generally using unknown types of this
	sort is bad.)

	* gif_io.c:
	Include lisp.h.

	* glyphs-eimage.c (jpeg_instantiate):
	* glyphs-eimage.c (gif_memory_storage):
	* glyphs-eimage.c (gif_instantiate):
	* glyphs-eimage.c (struct png_memory_storage):
	* glyphs-eimage.c (png_instantiate):
	* glyphs-eimage.c (tiff_memory_storage):
	* glyphs-eimage.c (tiff_instantiate):
	Replace Extbyte with more correct UChar_Binary, Extcount with
	Memory_Count.

	* glyphs-shared.c (read_bitmap_data):
	Replace char with Char_ASCII.

	* gui-x.c:
	Replace unsigned int with more correct LWLIB_ID for lwlib_id_tick.

	* hftctl.c:
	This was trying to include "lisp.h" to encapsulated file functions
	(where they once were encapsulated, but no more); so include
	sysfile.h.  This only affects read().

	* imgproc.c (get_histogram):
	replace unsigned char with UChar_Binary.

	* lisp.h:
	Move basic types to top of file since we need them in some
	macros just below.

	* redisplay-x.c:
	Convert various variables that were declared as unsigned due to
	return values from X functions to be signed, and create "external"
	versions of the variables to retrieve the unsigned value, which is
	then immediately converted to signed.

	* tparam.c:
	Eliminate useless non-#ifdef emacs code.

	* select-common.h:
	* select-gtk.c:
	* select-x.c:
	Abstract out hairy and duplicated code from select-x/gtk.c and
	put into select-common.h.  Use ifdefs to handle the (small
	number of) differences.

	* select-x.c (x_reply_selection_request):
	* select-x.c (x_handle_selection_request):
	* select-x.c (copy_multiple_data):
	* select-x.c (x_get_window_property):
	* select-x.c (receive_incremental_selection):
	* select-x.c (x_get_window_property_as_lisp_data):
	* select-x.c (Fx_get_cutbuffer_internal):
	* select-x.c (Fx_store_cutbuffer_internal):
	Replace uses of `unsigned char' and `Extbyte' with UChar_Binary.

	* sysdep.c (init_baud_rate):
	Fix warning when HAVE_TTY not defined.

	* glyphs-eimage.c:
	* postgresql.h:
	* sysdir.h:
	Do some hackery to avoid shadowing warnings.

	* s\esix.h:
	* m\tad68k.h:
	Comment out redefinition of select (we don't have our own version
	anyway, and we play preprocessor games with select in sysdir.h).

2001-08-04  Adrian Aichner  <adrian@xemacs.org>

	* console.c: Fix of compile error on darwin, as suggested by Toby
	Smith.

2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>

	* XEmacs 21.5.2 "artichoke" is released.

2001-07-27  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_progress_gauge_redisplay):
	* glyphs.c (check_for_ignored_expose):
	* glyphs.c (find_matching_subwindow):
	* glyphs.h:
	* gutter.c (output_gutter):
	* gutter.c (redraw_exposed_gutter): warning elimination.

2001-07-26  Adrian Aichner  <adrian@xemacs.org>

	* event-Xt.c (handle_map_event): Fix word duplication typos.
	* glyphs-eimage.c (gif_instantiate): Ditto.
	* ntproc.c (vars_of_ntproc): Ditto.
	* process-nt.c (vars_of_process_nt): Ditto.
	* redisplay-output.c (compare_runes): Ditto.
	* redisplay.c (create_string_text_block): Ditto.

2001-07-11  Matt Tucker  <tuck@whistlingfish.net>

	* syntax.c (find_start_of_comment):
	Fix `unbalanced parentheses' bug when dealing with mixed comment
	styles in c++/java/etc. mode

2001-06-21  Ben Wing  <ben@xemacs.org>

	* dired-msw.c (Fmswindows_insert_directory):
	Fix problem noted by Michael Sperber with directories containing
	[] and code that destructively modifies an existing string.

2001-06-18  Ben Wing  <ben@xemacs.org>

	* dumper.c (pdump_dump_root_objects):
	* dumper.c (pdump_load_finish):
	wrap_record_1 -> wrap_pointer_1.

2001-06-18  Ben Wing  <ben@xemacs.org>

	* window.c:
	* window.c (mark_window_as_deleted):
	* window.c (WINDOW_SLOT):
	We can't actually zero out everything in the window when deleting
	it.  set-window-configuration assumes that various slots of the
	deleted window are still accurate.

2001-06-17  Ben Wing  <ben@xemacs.org>

	---------------------------------------------------------------
			     DOCUMENTATION FIXES:
	---------------------------------------------------------------

	* eval.c (Ffunction_min_args):
	* eval.c (Ffunction_max_args):
	Correct documentation.

	* elhash.c (Fremhash): Doc correction.

	---------------------------------------------------------------
			     LISP OBJECT CLEANUP:
	---------------------------------------------------------------

	* bytecode.h (wrap_compiled_function):
	* buffer.h (wrap_buffer):
	* casetab.h (wrap_case_table):
	* chartab.h (wrap_char_table_entry):
	* chartab.h (wrap_char_table):
	* console-msw.h (wrap_devmode):
	* console-msw.h (wrap_mswindows_dialog_id):
	* console.h (wrap_console):
	* database.c (wrap_database):
	* device.h (wrap_device):
	* eldap.h (wrap_ldap):
	* elhash.h (wrap_hash_table):
	* events.h (wrap_timeout):
	* events.h (wrap_event):
	* extents.h (wrap_extent):
	* extents.h (wrap_extent_auxiliary):
	* extents.h (wrap_extent_info):
	* faces.h (wrap_face):
	* file-coding.h (wrap_coding_system):
	* frame.h (wrap_frame):
	* glyphs.h (wrap_image_instance):
	* glyphs.h (wrap_glyph):
	* gui-x.h (wrap_popup_data):
	* gui.h (wrap_gui_item):
	* keymap.h (wrap_keymap):
	* lisp-disunion.h (wrap_pointer_1):
	* lisp-union.h (wrap_pointer_1):
	* lisp.h (wrap_cons):
	* lisp.h (wrap_string):
	* lisp.h (wrap_vector):
	* lisp.h (wrap_bit_vector):
	* lisp.h (wrap_symbol):
	* lisp.h (wrap_subr):
	* lisp.h (wrap_marker):
	* lisp.h (wrap_float):
	* lisp.h (wrap_weak_list):
	* lisp.h (wrap_lcrecord_list):
	* lrecord.h (wrap_record_1):
	* lstream.h (wrap_lstream):
	* mule-charset.h (wrap_charset):
	* objects.h (wrap_color_instance):
	* objects.h (wrap_font_instance):
	* opaque.h (wrap_opaque):
	* opaque.h (wrap_opaque_ptr):
	* postgresql.h (wrap_pgconn):
	* postgresql.h (wrap_pgresult):
	* process.h (wrap_process):
	* rangetab.h (wrap_range_table):
	* specifier.h (wrap_specifier):
	* toolbar.h (wrap_toolbar_button):
	* tooltalk.h (wrap_tooltalk_message):
	* tooltalk.h (wrap_tooltalk_pattern):
	* ui-gtk.h (wrap_emacs_ffi):
	* ui-gtk.h (wrap_emacs_gtk_object):
	* ui-gtk.h (wrap_emacs_gtk_boxed):
	* lstream.h (wrap_lstream):
	* device.h (wrap_device): New.
	* frame.h (wrap_frame): New.
	* lisp-disunion.h (wrap_object):
	* lisp-disunion.h (XSETOBJ):
	* lrecord.h:
	Add wrap_* to all objects (it was already there for a few of them)
	-- an expression to encapsulate a pointer into a Lisp object,
	rather than the inconvenient XSET*.  "wrap" was chosen because
	"make" as in make_int(), make_char() is not appropriate. (It
	implies allocation.  The issue does not exist for ints and chars
	because they are not allocated.)

	Full error checking has been added to these expressions.  When
	used without error checking, non-union build, use of these
	expressions will incur no loss of efficiency. (In fact, XSET* is
	now defined in terms of wrap_* in a non-union build.) In a union
	build, you will also get no loss of efficiency provided that you
	have a decent optimizing compiler, and a compiler that either
	understands inlines or automatically inlines those particular
	functions. (And since people don't normally do their production
	builds on union, it doesn't matter.)

	Update the sample Lisp object definition in lrecord.h accordingly.

	* dumper.c (pdump_dump_root_objects):
	* dumper.c (pdump_load_finish):
	Fix places in dumper that referenced wrap_object to reference
	its new name, wrap_pointer_1.

	* buffer.c (mark_buffer):
	* buffer.c (reset_buffer_local_variables):
	* buffer.c (Fbuffer_local_variables):
	* buffer.c (nuke_all_buffer_slots):
	* buffer.c (complex_vars_of_buffer):
	* bufslots.h:
	* conslots.h:
	* console.c:
	* console.c (mark_console):
	* console.c (nuke_all_console_slots):
	* console.c (delete_console_internal):
	* console.c (common_init_complex_vars_of_console):
	* console.c (complex_vars_of_console):
	* console.h (struct console):
	* devslots.h: NEW FILE.
	* device.c:
	* device.c (MARKED_SLOT):
	* device.c (mark_device):
	* device.c (nuke_all_device_slots):
	* device.c (allocate_device):
	* device.c (Fset_device_selected_frame):
	* device.c (delete_device_internal):
	* device.c (vars_of_device):
	* device.h (struct device):
	* device.h (MARKED_SLOT):
	* frame.c (nuke_all_frame_slots):
	* frame.c (allocate_frame_core):
	* frame.c (delete_frame_internal):
	* frame.h (struct frame):
	* frame.h (FRAME_LIVE_P):
	* frameslots.h:
	* window.c (mark_window):
	* window.c (WINDOW_SLOT):
	* window.c (allocate_window):
	* window.c (mark_window_as_deleted):
	* window.c (wrap_window_configuration):
	* window.c (Fset_window_configuration):
	* window.h:
	* window.h (struct window):
	* window.h (WINDOW_SLOT):
	* winslots.h:
	-- Extract out the Lisp objects of `struct device' into devslots.h,
	just like for the other structures.
	-- Extract out the remaining (not copied into the window config)
	Lisp objects in `struct window' into winslots.h; use different
	macros (WINDOW_SLOT vs. WINDOW_SAVED_SLOT) to differentiate them.
	-- Eliminate the `dead' flag of `struct frame', since it
	duplicates information already available in `framemeths', and fix
	FRAME_LIVE_P accordingly. (Devices and consoles already work this
	way.)
	-- In *slots.h, switch to system where MARKED_SLOT is automatically
	undef'd at the end of the file. (Follows what winslots.h already
	does.)
	-- Update the comments at the beginning of *slots.h to be accurate.
	-- When making any of the above objects dead, zero it out entirely
	and reset all Lisp object slots to Qnil. (We were already doing
	this somewhat, but not consistently.) This (1) Eliminates the
	possibility of extra objects hanging around that ought to be
	GC'd, (2) Causes an immediate crash if anyone tries to access a
	structure in one of these objects, (3) Ensures consistent behavior
	wrt dead objects.

	* dialog-msw.c:
	Use internal_object_printer, since this object should not escape.

	---------------------------------------------------------------
	  FIXING A CRASH THAT I HIT ONCE (AND A RELATED BAD BEHAVIOR):
	---------------------------------------------------------------

	* eval.c (unwind_to_catch):
	* eval.c (condition_bind_unwind):
	* eval.c (condition_case_unwind):
	* eval.c (condition_case_1):
	Fix up some comments about the FSF implementation.
	Fix two nasty bugs:

	(1) condition_case_unwind frees the conses sitting in the
	catch->tag slot too quickly, resulting in a crash that I hit.
	(2) catches need to be unwound one at a time when calling
	unwind-protect code, rather than all at once at the end; otherwise,
	incorrect behavior can result. (A comment shows exactly how.)

	* backtrace.h:
	Improve comment about FSF differences in the handler stack.

	---------------------------------------------------------------
	FIXING A CRASH THAT I REPEATEDLY HIT WHEN USING THE MOUSE WHEEL
	UNDER MSWINDOWS:
	---------------------------------------------------------------

	Basic idea: My crash is due either to a dead, non-marked,
	GC-collected frame inside of a window mirror, or a prematurely
	freed window mirror.  We need to mark the Lisp objects inside of
	window mirrors.  Tracking the lifespan of window mirrors and
	scrollbar instances is extremely hard, and there may well be
	lurking bugs where such objects are freed too soon.  The only safe
	way to fix these problems (and it fixes both problems at once) is
	to make both of these structures Lisp objects.

	* lrecord.h (lrecord_type):
	* emacs.c (main_1):
	* inline.c:
	* scrollbar-gtk.c (gtk_create_scrollbar_instance):
	* scrollbar-gtk.c (find_scrollbar_window_mirror):
	* scrollbar-gtk.c (scrollbar_cb):
	* scrollbar-gtk.c (gtk_scrollbar_pointer_changed_in_window):
	* scrollbar-gtk.c (gtk_update_frame_scrollbars):
	* scrollbar-msw.c:
	* scrollbar-msw.c (mswindows_create_scrollbar_instance):
	* scrollbar-msw.c (mswindows_free_scrollbar_instance):
	* scrollbar-msw.c (mswindows_update_scrollbar_instance_values):
	* scrollbar-msw.c (mswindows_handle_scrollbar_event):
	* scrollbar-msw.c (syms_of_scrollbar_mswindows):
	* scrollbar-msw.c (vars_of_scrollbar_mswindows):
	* scrollbar-msw.c (complex_vars_of_scrollbar_mswindows):
	* scrollbar-x.c (find_scrollbar_window_mirror):
	* scrollbar-x.c (x_update_frame_scrollbars):
	* scrollbar.c:
	* scrollbar.c (mark_scrollbar_instance):
	* scrollbar.c (free_scrollbar_instance):
	* scrollbar.c (free_frame_scrollbars):
	* scrollbar.c (create_scrollbar_instance):
	* scrollbar.c (syms_of_scrollbar):
	* scrollbar.h:
	* scrollbar.h (struct scrollbar_instance):
	* symsinit.h:
	Make scrollbar instances actual Lisp objects.  Mark the window
	mirrors in them.  inline.c needs to know about scrollbar.h now.
	Record the new type in lrecord.h.  Fix up scrollbar-*.c
	appropriately.  Create a hash table in scrollbar-msw.c so that the
	scrollbar instances stored in scrollbar HWND's are properly
	GC-protected.  Create complex_vars_of_scrollbar_mswindows() to
	create the hash table at startup, and call it from emacs.c.  Don't
	store the scrollbar instance as a property of the GTK scrollbar,
	as it's not used and if we did this, we'd have to separately
	GC-protect it in a hash table, like in MS Windows.

	* lrecord.h (lrecord_type):
	* frame.h (struct frame):
	* frame.c (delete_frame_internal):
	* frameslots.h:
	* redisplay.c:
	* window.c:
	* window.c (mark_window_mirror):
	* window.c (new_window_mirror):
	* window.c (update_frame_window_mirror):
	* window.c (free_window_mirror):
	* window.c (find_window_mirror):
	* window.c (syms_of_window):
	* window.c (real_window):
	* window.h (struct window_mirror):
	Move mark_window_mirror from redisplay.c to window.c.  Make window
	mirrors actual Lisp objects.  Tell lrecord.h about them.  Change
	the window mirror member of struct frame from a pointer to a Lisp
	object, and add XWINDOW_MIRROR in appropriate places.  Mark the
	scrollbar instances in the window mirror.

	* redisplay.c:
	* redisplay.h:
	* alloc.c (garbage_collect_1):
	Delete mark_redisplay.  Don't call mark_redisplay.  We now mark
	frame-specific structures in mark_frame.

	NOTE: I also deleted an extremely questionable call to
	update_frame_window_mirrors().  It was extremely questionable
	before, and now totally impossible, since it will create
	Lisp objects during redisplay.

	* frame.c (mark_frame):
	Mark the scrollbar instances, which are now Lisp objects.
	Call mark_gutter() here, not in mark_redisplay().

	* gutter.c:
	Update comments about correct marking.

	---------------------------------------------------------------
			  ISSUES BROUGHT UP BY MARTIN:
	---------------------------------------------------------------

	* buffer.h (DFC_C_STRING_ALLOCA_USE_CONVERTED_DATA):
	Put back these macros the way Steve T and I think they ought to be.
	I already explained in a previous changelog entry why I think these
	macros should be the way I'd defined them.  Once again:

	We fix these macros so they don't care about the type of their
	lvalues.  The non-C-string equivalents of these already function
	in the same way, and it's correct because it should be OK to pass
	in a CBufbyte *, a BufByte *, a Char_Binary *, an UChar_Binary *,
	etc.  The whole reason for these different types is to work around
	errors caused by signed-vs-unsigned non-matching types.  Any
	possible error that might be caught in a DFC macro would also be
	caught wherever the argument is used elsewhere.  So creating
	multiple macro versions would add no useful error-checking and
	just further complicate an already complicated area.

	As for Martin's "ANSI aliasing" bug, XEmacs is not ANSI-aliasing
	clean and probably never will be.  Unless the board agrees to
	change XEmacs in this way (and we really don't want to go down
	that road), this is not a bug.

	* sound.h (sound_perror):
	Undo Martin's type change.

	* signal.c (qxe_setitimer):
	Fix problem identified by Martin with Linux and g++ due to
	non-standard declaration of setitimer().

	* systime.h:
	Update the docs for "qxe_" to point out why making the
	encapsulation explicit is always the right way to go. (setitimer()
	itself serves as an example.)

2001-06-11  Martin Buchholz  <martin@xemacs.org>

	* buffer.h (DFC_C_STRING_ALLOCA_USE_CONVERTED_DATA):
	* buffer.h (DFC_C_STRING_MALLOC_USE_CONVERTED_DATA):
	Revert to doing type-checking on `sink'.

	* sound.h (sound_perror): Bufbyte -> CBufbyte
	* sound.h (sound_warn): Bufbyte -> CBufbyte

2001-06-12  Martin Buchholz  <martin@xemacs.org>

	* config.h.in (alloca): All feature test macros must be defined
	before the first system header file inclusion.  So move alloca
	twiddling after the feature test definitions, but before the first
	"real" code.

2001-06-11  Martin Buchholz  <martin@xemacs.org>

	* lisp.h (DECIMAL_PRINT_SIZE): Don't use floating point.
	Sun cc (buggily?) cannot use floating point computations to define
	a compile-time integral constant.

2001-06-10  Ben Wing  <ben@xemacs.org>


	------ signal-code changes ------

	* data.c (init_data_very_early):
	* device-tty.c (init_device_tty):
	* emacs.c (fatal_error_signal):
	* emacs.c (memory_warning_signal):
	* floatfns.c (init_floatfns_very_early):
	* linuxplay.c (linux_play_data_or_file):
	* nas.c (*):
	* process-unix.c (unix_init_process):
	* process-unix.c (unix_create_process):
	* process-unix.c (unix_send_process):
	* process-unix.c (unix_deactivate_process):
	* signal.c (handle_signal_if_fatal):
	* signal.c (init_signals_very_early):
	* signal.c (init_interrupts_late):
	* sunplay.c (play_sound_file):
	* sunplay.c (play_sound_data):
	* sysdep.c (save_signal_handlers):
	* sysdep.c (restore_signal_handlers):
	* sysdep.c (setup_pty):
	* syssignal.h (EMACS_SIGNAL):
	use EMACS_SIGNAL everywhere instead of playing preprocessing
	games with signal().

	* s\windowsnt.h:
	* s\mingw32.h:
	* syssignal.h:
	Remove mswindows signal code from s+m headers and move to
	syssignal.h as one of the five ways of signal handling, instead of
	playing preprocessing games.

	* fileio.c:
	* sysdep.c (qxe_reliable_signal):
	Rename sys_do_signal to qxe_reliable_signal.

	* signal.c (set_timeout_signal):
	* process-unix.c (close_safely):
	* profile.c (Fstart_profiling):
	* profile.c (Fstop_profiling):
	* signal.c (init_async_timeouts):
	* signal.c (start_async_timeouts):
	Create set_timeout_signal(); use instead of just EMACS_SIGNAL to
	establish a signal handler on a timeout signal; this does special
	things under Cygwin.

	* nt.c (init_ntproc):
	Eliminate term_ntproc(), which is blank; used as a SIGABRT handler,
	which was wrong anyway.

	* nt.c:
	* win32.c:
	* win32.c (sigmask):
	* win32.c (mswindows_sigset):
	* win32.c (mswindows_sighold):
	* win32.c (mswindows_sigrelse):
	* win32.c (mswindows_raise):
	* win32.c (setitimer_helper_proc):
	* win32.c (syms_of_win32):
	Move signal code from nt.c to win32.c, since Cygwin needs it
	too when dealing with timeout signals.

	* s\cygwin32.h:
	Define CYGWIN_BROKEN_SIGNALS.


	------ other changes ------

	* s\mingw32.h:
	Fix problems with NOT_C_CODE being in the wrong place and
	excluding defines needed when building Makefile.in.in.

	* filelock.c:
	* mule-canna.c:
	* mule-canna.c (Fcanna_initialize):
	* mule-canna.c (Fcanna_finalize):
	* mule-ccl.c:
	* mule-ccl.h:
	* ralloc.c:
	* unexalpha.c:
	* unexapollo.c:
	* unexcw.c:
	* unexelfsgi.c:
	* unexnt.c:
	* unexsni.c:
	* s\aix3-1.h:
	* s\bsd4-1.h:
	* s\bsd4-2.h:
	* s\bsd4-3.h:
	* s\cxux.h:
	* s\cygwin32.h:
	* s\dgux.h:
	* s\dgux5-4r2.h:
	* s\dgux5-4r3.h:
	* s\dgux5-4r4.h:
	* s\ewsux5r4.h:
	* s\gnu.h:
	* s\hpux.h:
	* s\iris3-5.h:
	* s\iris3-6.h:
	* s\irix3-3.h:
	* s\linux.h:
	* s\mingw32.h:
	* s\newsos5.h:
	* s\nextstep.h:
	* s\ptx.h:
	* s\riscix1-1.h:
	* s\riscix1-2.h:
	* s\rtu.h:
	* s\sco4.h:
	* s\sco5.h:
	* s\template.h:
	* s\ultrix.h:
	* s\umax.h:
	* s\umips.h:
	* s\unipl5-0.h:
	* s\unipl5-2.h:
	* s\usg5-0.h:
	* s\usg5-2-2.h:
	* s\usg5-2.h:
	* s\usg5-3.h:
	* s\usg5-4.h:
	* s\windowsnt.h:
	* s\xenix.h:
	Rename 'GNU Emacs' to XEmacs in the copyright and comments.

	* nas.c (NAS_LITTLE_ENDIAN):
	* nas.c (XTOOLKIT):
	* nas.c (nas_play_sound_file):
	* nas.c (nas_play_sound_data):
	* nas.c (CatchIoErrorAndJump):
	* nas.c (DataReadS):
	* nas.c (DataReadL):
	* nas.c (readChunk):
	* nas.c (WaveOpenDataForReading):
	Stylistic cleanup.
	Avoid preprocessing games with names such as play_sound_file.


2001-06-08  Ben Wing  <ben@xemacs.org>

	------ gc-in-window-procedure fixes ------

	* alloc.c:
	* alloc.c (struct post_gc_action):
	* alloc.c (register_post_gc_action):
	* alloc.c (run_post_gc_actions):
	* alloc.c (garbage_collect_1):
	Create "post-gc actions", to avoid those dreaded "GC during window
	procedure" problems.

	* event-msw.c:
	Abort, clean and simple, when GC in window procedure.  We want
	to flush these puppies out.

	* glyphs-msw.c:
	* glyphs-msw.c (finalize_destroy_window):
	* glyphs-msw.c (mswindows_finalize_image_instance):
	Use a post-gc action when destroying subwindows.

	* lisp.h:
	Declare register_post_gc_action().

	* scrollbar-msw.c:
	* scrollbar-msw.c (unshow_that_mofo):
	Use a post-gc action when unshowing scrollbar windows, if in gc.

	* redisplay.c (mark_redisplay):
	Add comment about the utter evilness of what's going down here.

	------ cygwin setitimer fixes ------

	* Makefile.in.in (sheap_objs):
	* Makefile.in.in (profile_objs):
	* Makefile.in.in (objs):
	Compile profile.c only when HAVE_SETITIMER.

	* nt.c (mswindows_sigset):
	* nt.c (mswindows_sighold):
	* nt.c (mswindows_sigrelse):
	* nt.c (mswindows_sigpause):
	* nt.c (mswindows_raise):
	* nt.c (close_file_data):
	Style fixes.

	* nt.c:
	Move setitimer() emulation to win32.c, because Cygwin needs it too.

	* profile.c:
	* profile.c (Fstart_profiling):
	* profile.c (Fstop_profiling):
	Make sure we don't compile if no setitimer().  Use qxe_setitimer()
	instead of just plain setitimer().

	* signal.c:
	* signal.c (set_one_shot_timer):
	* signal.c (alarm):
	Define qxe_setitimer() as an encapsulation around setitimer() --
	call setitimer() directly unless Cygwin or MS Win, in which case
	we use our simulated version in win32.c.

	* systime.h:
	* systime.h (struct itimerval):
	* systime.h (ITIMER_REAL):
	Prototype mswindows_setitimer() and qxe_setitimer().  Long
	comment about "qxe" and the policy regarding encapsulation.

	* win32.c:
	* win32.c (setitimer_helper_proc):
	* win32.c (setitimer_helper_period):
	* win32.c (setitimer_helper):
	* win32.c (mswindows_setitimer):
	Move setitimer() emulation here, so Cygwin can use it.
	Rename a couple of functions and variables to be longer and more
	descriptive.  In setitimer_helper_proc(), send the signal
	using either mswindows_raise() or (on Cygwin) kill().  If for
	some reason we are still getting lockups, we'll change the kill()
	to directly invoke the signal handlers.

	------ windows shell fixes ------

	* callproc.c:
	* ntproc.c:
	Comments about how these two files must die.

	* callproc.c (init_callproc):
	On MS Windows, init shell-file-name from SHELL, then COMSPEC,
	not just COMSPEC. (more correct and closer to FSF.) Don't
	force a value for SHELL into the environment. (Comments added
	to explain why not.)

	* nt.c (init_user_info):
	Don't shove a fabricated SHELL into the environment.  See above.

	------ misc fixes ------

	* glyphs-shared.c (read_bitmap_data): static.
	* glyphs-shared.c (read_bitmap_data_from_file):
	Style correction.



2001-06-06  Ben Wing  <ben@xemacs.org>

	* emodules.c (emodules_load):
	* tooltalk.c (check_status):
	* process-unix.c (unix_canonicalize_host_name):
	* process-unix.c (unix_open_network_stream):
	Fix warnings pointed out by Martin.

	* lisp.h:
	Correct usage of CBufbyte.

	* esd.c (esd_play_sound_file):
	* esd.c (esd_play_sound_data):
	indentation changes.

	* bytecode.c (invalid_byte_code):
	* eval.c (print_subr):
	* 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 (printing_unreadable_object):
	* eval.c (caught_a_squirmer):
	* eval.c (eval_in_buffer_trapping_errors):
	* eval.c (run_hook_trapping_errors):
	* eval.c (safe_run_hook_trapping_errors):
	* eval.c (call0_trapping_errors):
	* eval.c (call1_trapping_errors):
	* eval.c (call2_trapping_errors):
	* eval.c (warn_when_safe):
	* fileio.c (report_file_type_error):
	* fileio.c (report_error_with_errno):
	* fileio.c (report_file_error):
	Use CBufbyte instead of char for error/warning functions.

	* linuxplay.c:
	* linuxplay.c (DONT_ENCAPSULATE):
	* miscplay.c:
	* miscplay.c (DONT_ENCAPSULATE):
	* sgiplay.c:
	* sgiplay.c (DONT_ENCAPSULATE):
	* sunplay.c:
	* sunplay.c (DONT_ENCAPSULATE):
	Define DONT_ENCAPSULATE. (All encapsulation is removed in my
	pending Mule workspace.)

	* sgiplay.c (play_sound_data):
	* sgiplay.c (play_internal):
	Put back #include <audio.h> accidentally removed.
	Make play_sound_data return an int, like all other
	such functions in *play.c.

	* sound.c:
	Fix up documentation of `play-sound'.

	* sysfile.h:
	Don't include sys/fcntl.h, as per Martin's advice.


2001-06-04  William M. Perry  <wmperry@gnu.org>

	* gpmevent.c (KG_CTRL): Just define these unconditionally.  The
	linux headers are so lame that they do not expose these to
	userland programs and you cannot gracefully include the kernel
	headers.

2001-06-03  William M. Perry  <wmperry@gnu.org>

	* scrollbar-gtk.c (gtk_create_scrollbar_instance): Make calling of
	gtk_size_request unconditional.

2001-06-02  William M. Perry  <wmperry@gnu.org>

	* emacs-marshals.c: Regenerated.

2001-06-01  William M. Perry  <wmperry@gnu.org>

	* glyphs-shared.c (read_bitmap_data): Common definition of
	read_bitmap_data_from_file added.  This does not attempt to use
	the Xmu based code at all - lets us be consistent across
	platforms.

	* glyphs-gtk.c: Removed definition of read_bitmap_data_from_file -
	this is now in glyphs-shared.c

	* glyphs-msw.c: Ditto.

	* glyphs-x.c: Ditto.

2001-06-01  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (ldflags):
	eliminate that pesky "defaulting to 00401000" warning.
	* nt.h:
	eliminate warnings.

2001-06-01  Ben Wing  <ben@xemacs.org>

	* nt.c (mswindows_utime):
	* nt.c (close_file_data):
	fix off-by-one-indirection error.

2001-06-01  Ben Wing  <ben@xemacs.org>

	* event-msw.c (debug_mswin_messages):
	conditionalize the messages that were causing compile errors.
	(if only macros could generate #ifdef statements ...)

2001-06-01  Martin Buchholz  <martin@xemacs.org>

	* lisp.h (DECIMAL_PRINT_SIZE): New.
	* data.c (Fnumber_to_string): Use DECIMAL_PRINT_SIZE
	* print.c (print_internal): Likewise.
	* redisplay.c (window_line_number): Likewise.
	* redisplay.c (decode_mode_spec): Likewise.
	* tooltalk.c (tt_message_arg_ival_string): Likewise.
	Fix a bunch of 128-bit bugs; make code more readable && efficient.

2001-05-30  Ben Wing  <ben@xemacs.org>

	* s\cygwin32.h:
	Don't unilaterally include ntplay, but only when we're compiling
	with native sound (look in configure now).

2001-05-30  Ben Wing  <ben@xemacs.org>

	For 21.4:

	(Stephen, just take all event-msw.c patches.  This includes
	the "iconify" fix below.)

	* event-msw.c:
	* event-msw.c (mswindows_dequeue_dispatch_event):
	* event-msw.c (assert):
	* event-msw.c (emacs_mswindows_quit_p):
	* event-msw.c (debug_mswin_messages):
	* event-msw.c (debug_output_mswin_message):
	* event-msw.c (vars_of_event_mswindows):
	Fix yet more problems with C-g handling.
	Implement debug-mswindows-events.

	For 21.5:

	* event-stream.c:
	* event-stream.c (add_low_level_timeout):
	* event-stream.c (event_stream_generate_wakeup):
	* event-stream.c (event_stream_resignal_wakeup):
	* event-stream.c (event_stream_disable_wakeup):
	* event-stream.c (event_stream_wakeup_pending_p):
	* events.h:
	* signal.c:
	* signal.c (handle_async_timeout_signal):
	* signal.c (signal_remove_async_interval_timeout):
	* signal.c (alarm):
	* signal.c (Fwaiting_for_user_input_p):
	* signal.c (start_interrupts):
	* signal.c (establish_slow_interrupt_timer):
	* signal.c (slow_down_interrupts):
	* signal.c (check_what_happened):
	* signal.c (alarm_signal):
	* signal.c (interrupt_signal):
	* sysdep.h:
	Rearrange the signal-handling code to eliminate the former
	spaghetti logic paths in it.  Document clearly what
	"low-level" and "high-level" timeouts are.  Rename some
	functions with unclear names (e.g. "...alarm...") to names
	that reflect what they actually do (e.g. "...async_timeout...").
	Fix numerous bugs discovered in the process.

	* console-x.h:
	* event-Xt.c:
	* event-Xt.c (update_frame_iconify_status):
	* event-Xt.c (handle_map_event):
	* event-Xt.c (emacs_Xt_handle_magic_event):
	* event-Xt.c (emacs_Xt_event_pending_p):
	* event-msw.c:
	* frame-x.c:
	* frame-x.c (x_frame_window_state):
	* frame-x.c (x_frame_iconified_p):
	* frame-x.c (x_frame_visible_p):
	Hopefully make XEmacs properly maintain the "iconified"
	state on frames at all times.  This should fix the "can't
	delete a frame with C-x 5 0 when there's another iconified
	frame out there" bug.

	Put a notice in of further changes that should probably
	be made to clean up the frame-visibility support.
	(especially directed at Jan Vroonhof)

	* lisp.h:
	* miscplay.c (sndcnv8S_2mono):
	* miscplay.c (sndcnv2monounsigned):
	* miscplay.c (int2ulaw):
	* miscplay.c (sndcnv2byteLE):
	* miscplay.c (sndcnv2byteBE):
	* miscplay.c (sndcnv2monobyteLE):
	* miscplay.c (sndcnv2monobyteBE):
	Rename SBufbyte to CBufbyte to avoid a misleading name.
	Eliminate UChar, which is not used anywhere and contributes
	no semantic info.  Add a comment about the documentation-only
	properties of the char/unsigned char typedefs.  Add
	SChar_Binary as an explicitly `signed' version of Char_Binary
	and put back the `signed' declarations in miscplay.c.

	* alloc.c (build_string):
	* alloc.c (build_ext_string):
	* alloc.c (build_translated_string):
	Use char typedefs.

	* console-msw.c (mswindows_lisp_error):
	* device-msw.c (sync_printer_with_devmode):
	* device-msw.c (handle_devmode_changes):
	* device-msw.c (Fmsprinter_select_settings):
	* device-msw.c (Fmswindows_printer_list):
	* dialog-msw.c:
	* dialog-msw.c (ALIGN_TEMPLATE):
	* dialog-msw.c (handle_question_dialog_box):
	* editfns.c (user_login_name):
	* fileio.c (Ffile_readable_p):
	* glyphs-eimage.c (tiff_memory_seek):
	* menubar-msw.c (mswindows_translate_menu_or_dialog_item):
	* menubar-msw.c (populate_menu_add_item):
	* ntplay.c:
	* ntplay.c (DONT_ENCAPSULATE):
	* ntplay.c (play_sound_file):
	* ntplay.c (play_sound_data_1):
	* objects-msw.c (initialize_font_instance):
	* objects-msw.c (mswindows_list_fonts):
	* realpath.c (cygwin_readlink):
	* redisplay-msw.c (mswindows_text_width_single_run):
	* select-msw.c (symbol_to_ms_cf):
	* select-msw.c (mswindows_register_selection_data_type):
	* syswindows.h (LOCAL_TO_WIN32_FILE_FORMAT):
	* syswindows.h (WIN32_TO_LOCAL_FILE_FORMAT):
	* win32.c (Fmswindows_shell_execute):
	Eliminate numerous C++ errors.

	* frame-msw.c (mswindows_set_title_from_bufbyte):
	Eliminate numerous C++ errors and Mule-ize.

	* glyphs-msw.c (convert_EImage_to_DIBitmap):
	* glyphs-msw.c (mswindows_init_image_instance_from_eimage):
	* glyphs-msw.c (set_mono_pixel):
	* glyphs-msw.c (mswindows_initialize_image_instance_mask):
	* glyphs-msw.c (xpm_to_eimage):
	* glyphs-msw.c (mswindows_xpm_instantiate):
	* glyphs-msw.c (read_bitmap_data):
	* glyphs-msw.c (read_bitmap_data_from_file):
	* glyphs-msw.c (xbm_create_bitmap_from_data):
	* glyphs-msw.c (init_image_instance_from_xbm_inline):
	* glyphs-msw.c (xbm_instantiate_1):
	* glyphs-msw.c (mswindows_xbm_instantiate):
	* glyphs-msw.c (mswindows_xface_instantiate):
	Eliminate numerous C++ errors and use char typedefs.

2001-05-29  Adrian Aichner  <adrian@xemacs.org>

	* fileio.c: Include nt.h.  Remove lisp_string_set_file_times()
	because set_file_times() now takes Lisp_Object path, instead of
	char*.
	* nt.c: Include buffer.h.
	* nt.c (convert_from_time_t): New.
	* nt.c (mswindows_utime): New.  Use utime, since SetFileTime does
	not set mtime correctly.
	* nt.h: Declare mswindows_utime().
	* sysdep.c (set_file_times): set_file_times() now takes Lisp_Object
	path, instead of char*.
	* systime.h: Include <sys/utime.h> on WIN32_NATIVE.

2001-05-30  William M. Perry  <wmperry@gnu.org>

	* emacs-marshals.c: Regenerated from lisp.

	* emacs-widget-accessors.c: Regenerated from lisp.

	* event-gtk.c (gtk_event_to_emacs_event): Buttons are now
	modifiers, so selection with the mouse works again.

2001-05-24  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* redisplay.c (redisplay_device): Allow preemption on redisplay.

	* event-msw.c (WM_DROPFILES): Use correct type for OLE characters.

2001-05-29  Mike Alexander  <mta@arbortext.com>

	* console-msw.h (FRAME_MSPRINTER_CHARHEIGHT): Unswap
	FRAME_MSPRINTER_CHARWIDTH and FRAME_MSPRINTER_CHARHEIGHT

2001-05-26  Ben Wing  <ben@xemacs.org>

	* buffer.c:
	* buffer.c (syms_of_buffer):
	* data.c:
	* data.c (init_errors_once_early):
	move text-conversion-error into data.c, along with other errors.

2001-05-26  Martin Buchholz  <martin@xemacs.org>

	* print.c (print_internal): Fix compile error.

2001-05-25  Ben Wing  <ben@xemacs.org>

	* device-msw.c (msprinter_default_printer):
	* eldap.c (Fldap_open):
	* emodules.c (emodules_load):
	* hpplay.c (player_error_internal):
	* process-unix.c (unix_canonicalize_host_name):
	* process-unix.c (unix_open_network_stream):
	* sound.h (sound_perror):
	* sound.h (sound_warn):
	* tooltalk.c (check_status):
	* win32.c (tstr_to_local_file_format):
	Revert Martin's attempted compile-warnings fix.  It does fix
	the warnings, but not the right way.  We are trying to eliminate
	the raw use of `char' and `unsigned char' absolutely everywhere.
	There is never an occasion to reintroduce these.

	* buffer.h (DFC_C_STRING_ALLOCA_USE_CONVERTED_DATA):
	* buffer.h (DFC_C_STRING_MALLOC_USE_CONVERTED_DATA):
	Instead, we fix these macros so they don't care about the type of
	their lvalues.  We already do this for the non-C-string
	equivalents of these, and it's correct because it should be OK to
	pass in an SBufbyte *, for example.  In any case, we do not need
	any type-correctness checking here -- errors will be caught for
	sure as soon as we remove the -Wno-sign-compare switch.

	* mule-charset.c (Fmake_charset):
	Use invalid_argument, not generic signal_error (Qerror, ).

	* alloc.c:
	* chartab.c (check_valid_char_table_value):
	* chartab.c (chartab_type_validate):
	* chartab.c (chartab_data_validate):
	* 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-msw.c (mswindows_canonicalize_console_connection):
	* console-msw.c (mswindows_canonicalize_device_connection):
	* console-msw.c (msprinter_canonicalize_console_connection):
	* console-msw.c (msprinter_canonicalize_device_connection):
	* console-stream.c (stream_semi_canonicalize_console_connection):
	* console-stream.c (stream_canonicalize_console_connection):
	* console-stream.c (stream_semi_canonicalize_device_connection):
	* console-stream.c (stream_canonicalize_device_connection):
	* console-stream.h:
	* console-tty.c (tty_semi_canonicalize_console_connection):
	* console-tty.c (tty_canonicalize_console_connection):
	* console-tty.c (tty_semi_canonicalize_device_connection):
	* console-tty.c (tty_canonicalize_device_connection):
	* console-tty.h:
	* console-x.c (x_device_to_console_connection):
	* console-x.c (x_semi_canonicalize_console_connection):
	* console-x.c (x_canonicalize_console_connection):
	* console-x.c (x_semi_canonicalize_device_connection):
	* console-x.c (x_canonicalize_device_connection):
	* console.c (decode_console_type):
	* console.c (semi_canonicalize_console_connection):
	* console.c (canonicalize_console_connection):
	* console.h:
	* console.h (struct console_methods):
	* device-x.c (Fx_get_resource):
	* device.c (semi_canonicalize_device_connection):
	* device.c (canonicalize_device_connection):
	* elhash.c (hash_table_size_validate):
	* elhash.c (hash_table_weakness_validate):
	* elhash.c (hash_table_test_validate):
	* elhash.c (hash_table_rehash_size_validate):
	* elhash.c (hash_table_rehash_threshold_validate):
	* elhash.c (hash_table_data_validate):
	* eval.c:
	* eval.c (call_with_suspended_errors):
	* eval.c (maybe_signal_error_1):
	* eval.c (maybe_signal_continuable_error_1):
	* eval.c (maybe_signal_error):
	* eval.c (maybe_signal_continuable_error):
	* eval.c (maybe_signal_error_2):
	* eval.c (maybe_signal_continuable_error_2):
	* eval.c (maybe_signal_ferror):
	* eval.c (maybe_signal_continuable_ferror):
	* eval.c (maybe_signal_ferror_with_frob):
	* eval.c (maybe_signal_continuable_ferror_with_frob):
	* eval.c (maybe_syntax_error):
	* eval.c (maybe_sferror):
	* eval.c (maybe_invalid_argument):
	* eval.c (maybe_invalid_constant):
	* eval.c (maybe_invalid_operation):
	* eval.c (maybe_invalid_change):
	* eval.c (maybe_invalid_state):
	* faces.c (face_name_validate):
	* faces.c (face_validate):
	* faces.c (face_property_matching_instance):
	* faces.h:
	* fns.c (bad_bad_bunny):
	* fns.c (bad_bad_turtle):
	* fns.c (advance_plist_pointers):
	* fns.c (external_plist_get):
	* fns.c (external_plist_put):
	* fns.c (external_remprop):
	* glyphs.c (decode_device_ii_format):
	* glyphs.c (decode_image_instantiator_format):
	* glyphs.c (decode_image_instance_type):
	* glyphs.c (decode_error_behavior_flag):
	* glyphs.c (encode_error_behavior_flag):
	* glyphs.c (Fmake_image_instance):
	* glyphs.c (decode_glyph_type):
	* glyphs.c (glyph_image_instance):
	* glyphs.h:
	* gui.c (gui_item_add_keyval_pair):
	* gui.c (make_gui_item_from_keywords_internal):
	* gui.h:
	* lisp.h:
	* lisp.h (error_behavior):
	* lisp.h (_error_behavior_struct_):
	* lisp.h (struct structure_keyword_entry):
	* lisp.h (struct structure_type):
	* lread.c (define_structure_type):
	* lread.c (define_structure_type_keyword):
	* nt.c (tty_semi_canonicalize_console_connection):
	* nt.c (tty_canonicalize_console_connection):
	* nt.c (tty_semi_canonicalize_device_connection):
	* nt.c (tty_canonicalize_device_connection):
	* objects-gtk.c (gtk_parse_nearest_color):
	* objects-gtk.c (gtk_initialize_color_instance):
	* objects-gtk.c (gtk_initialize_font_instance):
	* objects-gtk.c (gtk_font_instance_truename):
	* objects-gtk.h:
	* objects-msw.c (mswindows_initialize_color_instance):
	* objects-msw.c (initialize_font_instance):
	* objects-msw.c (mswindows_initialize_font_instance):
	* objects-msw.c (msprinter_initialize_font_instance):
	* objects-msw.c (mswindows_font_instance_truename):
	* objects-tty.c (tty_initialize_color_instance):
	* objects-tty.c (tty_initialize_font_instance):
	* objects-x.c (x_parse_nearest_color):
	* objects-x.c (x_initialize_color_instance):
	* objects-x.c (x_initialize_font_instance):
	* objects-x.c (x_font_instance_truename):
	* objects.c:
	* objects.c (Fmake_font_instance):
	* objects.c (font_instance_truename_internal):
	* process-unix.c (get_internet_address):
	* rangetab.c (rangetab_data_validate):
	* search.c (compile_pattern_1):
	* search.c (compile_pattern):
	* search.c (fast_string_match):
	* specifier.c (decode_specifier_type):
	* specifier.c (check_valid_instantiator):
	* specifier.c (check_valid_inst_list):
	* specifier.c (check_valid_spec_list):
	* specifier.c (check_valid_specifier_matchspec):
	* specifier.c (specifier_instance_from_inst_list):
	* specifier.c (specifier_instance):
	* specifier.c (specifier_instance_no_quit):
	* toolbar.c (check_toolbar_button_keywords):
	* toolbar.c (Fcheck_toolbar_button_syntax):
	* window.c (window_scroll):
	* window.h:

	Rename Error_behavior to Error_Behavior, to be consistent with
	general naming practices (Lisp_Object, Char_Binary, etc.).

2001-05-24  Hrvoje Niksic  <hniksic@arsdigita.com>

	* doprnt.c (emacs_doprnt_1): long_to_string doesn't return a
	value.

	* print.c (long_to_string): New, faster implementation.  Revert
	change from 2000-11-22.

2001-05-25  Martin Buchholz  <martin@xemacs.org>

	* process-unix.c (unix_canonicalize_host_name): Fix compile warnings.
	(unix_open_network_stream): Likewise.
	* sound.h (sound_perror): Likewise.
	(sound_warn): Likewise.
	* emodules.c (emodules_load): Likewise.
	* fns.c (base64_conversion_error): Likewise.
	* tooltalk.c (check_status): Likewise.
	* eldap.c (Fldap_open): Likewise.
	* hpplay.c (player_error_internal): Likewise.
	* win32.c (tstr_to_local_file_format): Likewise.

	* realpath.c: This file doesn't deal with internal
	representation.  Define DONT_ENCAPSULATE.
	Fixes crash in test suite.

	* print.c (print_internal): Fix compile error.

	* miscplay.c (waverequire): Don't inline.
	Gcc can't inline functions that call alloca.

2001-05-24  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* gui.c (gui_error_2): New function.
	* lisp.h (gui_error_2): Declare it.

2001-05-24  Norbert Koch  <nk@LF.net>

	* doprnt.c (emacs_doprnt_1): forgotten sons of Ben's error patch

2001-05-06  Karl M. Hegbloom  <karlheg@hegbloom.net>

	* config.h.in: HAVE_MKSTEMP

2001-05-24  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* mule-ccl.c (Qccl_error): New error
	* mule-ccl.c (syms_of_mule_ccl): Initialize Qccl_error.
	* mule-charset.c (Fmake_charset): Call signal_error.

2001-05-24  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* buffer.c (Qtext_conversion_error): Moved from file-coding.c
	so that --with-file-coding=no will compile corectly.
	* buffer.c (syms_of_buffer): Define Qtext_conversion_error.
	Also moved from file-coding.c
	* file-coding.c (Qtext_conversion_error): Moved to buffer.c
	* file-coding.c (syms_of_file_coding): Moved Qtext_conversion_error
	initialization to buffer.c
	* emodules.c (Qdll_error): New error.
	* emodules.c (syms_of_module): Declare Qdll_error.

	* esd.c (esd_play_sound_data): sound_warn accepts only one arg.
	* miscplay.c (sndcnv8S_2mono):
	* miscplay.c (sndcnv2monounsigned):
	* miscplay.c (int2ulaw):
	* miscplay.c (sndcnv2byteLE):
	* miscplay.c (sndcnv2byteBE):
	* miscplay.c (sndcnv2monobyteLE):
	* miscplay.c (sndcnv2monobyteBE): Replace signed Char_Binary with
	Char_Binary.  There's no type called signed char in C.
	Also remove audio: from error message.  sound_warn and sound_perror
	prepends them.

2001-05-19  Ben Wing  <ben@xemacs.org>

	* glyphs-shared.c: New.  Try just a bit to start eliminating
	the massive code duplication in *-gtk.c.

2001-05-16  Ben Wing  <ben@xemacs.org>

	* abbrev.c (syms_of_abbrev):
	* alloc.c (memory_full):
	* alloc.c (Fmake_byte_code):
	* alloc.c (garbage_collect_1):
	* buffer.c:
	* buffer.c (print_buffer):
	* buffer.c (nsberror):
	* buffer.c (Fget_buffer_create):
	* buffer.c (Fset_buffer):
	* buffer.c (Fbury_buffer):
	* buffer.c (syms_of_buffer):
	* bytecode.c:
	* bytecode.c (execute_optimized_program):
	* bytecode.c (invalid_byte_code):
	* bytecode.c (check_opcode):
	* bytecode.c (check_constants_index):
	* bytecode.c (READ_INSTRUCTION_CHAR):
	* bytecode.c (optimize_byte_code):
	* bytecode.c (Ffetch_bytecode):
	* bytecode.c (syms_of_bytecode):
	* callint.c (check_mark):
	* callint.c (Fcall_interactively):
	* callint.c (syms_of_callint):
	* callproc.c:
	* callproc.c (Fold_call_process_internal):
	* callproc.c (child_setup):
	* casetab.c (print_case_table):
	* casetab.c (Fget_case_table):
	* casetab.c (Fput_case_table):
	* casetab.c (syms_of_casetab):
	* chartab.c (symbol_to_char_table_type):
	* chartab.c (decode_char_table_range):
	* chartab.c (check_valid_char_table_value):
	* chartab.c (chartab_data_validate):
	* chartab.c (check_category_char):
	* chartab.c (syms_of_chartab):
	* cmdloop.c (command_loop_3):
	* cmdloop.c (syms_of_cmdloop):
	* cmds.c (Fdelete_char):
	* cmds.c (Fself_insert_command):
	* cmds.c (syms_of_cmds):
	* console-msw.c:
	* console-msw.c (mswindows_canonicalize_console_connection):
	* console-msw.c (Fmswindows_message_box):
	* console-msw.c (mswindows_output_last_error):
	* console-msw.c (msprinter_canonicalize_console_connection):
	* console-msw.c (syms_of_console_mswindows):
	* console-msw.h:
	* console-stream.c (stream_init_console):
	* console-stream.c (stream_init_frame_1):
	* console-tty.c (tty_init_console):
	* console-tty.c (syms_of_console_tty):
	* console-x.c (get_display_arg_connection):
	* console.c (print_console):
	* console.c (decode_console_type):
	* console.c (Fselect_console):
	* console.c (Fget_console):
	* console.c (delete_console_internal):
	* console.c (syms_of_console):
	* data.c:
	* data.c (dead_wrong_type_argument):
	* data.c (c_write_error):
	* data.c (lisp_write_error):
	* data.c (args_out_of_range):
	* data.c (args_out_of_range_3):
	* data.c (print_weak_list):
	* data.c (decode_weak_list_type):
	* data.c (arith_error):
	* data.c (init_errors_once_early):
	* data.c (syms_of_data):
	* database.c (CHECK_LIVE_DATABASE):
	* database.c (print_database):
	* database.c (finalize_database):
	* database.c (Fopen_database):
	* database.c (syms_of_database):
	* debug.c (Fadd_debug_class_to_check):
	* debug.c (Fdelete_debug_class_to_check):
	* debug.c (Fset_debug_classes_to_check):
	* debug.c (Fset_debug_class_types_to_check):
	* debug.c (Fdebug_types_being_checked):
	* debug.c (syms_of_debug):
	* device-gtk.c (gtk_init_device):
	* device-gtk.c (Fgtk_display_visual_class):
	* device-gtk.c (Fgtk_keysym_on_keyboard_p):
	* device-gtk.c (syms_of_device_gtk):
	* device-msw.c (handle_devmode_changes):
	* device-msw.c (mswindows_handle_print_dialog_box):
	* device-msw.c (mswindows_handle_page_setup_dialog_box):
	* device-msw.c (Fmsprinter_select_settings):
	* device-msw.c (Fmsprinter_apply_settings):
	* device-msw.c (print_devmode):
	* device-tty.c (tty_init_device):
	* device-tty.c (syms_of_device_tty):
	* device-x.c (sanity_check_geometry_resource):
	* device-x.c (x_init_device):
	* device-x.c (x_get_resource_prefix):
	* device-x.c (Fx_get_resource):
	* device-x.c (Fx_put_resource):
	* device-x.c (Fx_display_visual_class):
	* device-x.c (Fx_keysym_hash_table):
	* device-x.c (Fx_keysym_on_keyboard_p):
	* device-x.c (Fx_get_font_path):
	* device-x.c (syms_of_device_x):
	* device.c (print_device):
	* device.c (Fselect_device):
	* device.c (Fset_device_selected_frame):
	* device.c (Fget_device):
	* device.c (Fmake_device):
	* device.c (Fset_device_class):
	* device.c (Fdevice_system_metric):
	* device.c (Fdomain_device_type):
	* device.c (syms_of_device):
	* dialog-gtk.c (syms_of_dialog_gtk):
	* dialog-msw.c (handle_file_dialog_box):
	* dialog-msw.c (handle_question_dialog_box):
	* dialog-msw.c (mswindows_make_dialog_box_internal):
	* dialog-msw.c (syms_of_dialog_mswindows):
	* dialog-x.c (dbox_descriptor_to_widget_value):
	* dialog-x.c (x_make_dialog_box_internal):
	* dialog.c (Fmake_dialog_box_internal):
	* dired-msw.c (mswindows_get_files):
	* dired-msw.c (syms_of_dired_mswindows):
	* dired.c (Fdirectory_files):
	* dired.c (file_name_completion):
	* dired.c (syms_of_dired):
	* doc.c (get_doc_string):
	* doc.c (read_doc_string):
	* doc.c (Fsnarf_documentation):
	* doprnt.c (parse_off_posnum):
	* doprnt.c (NEXT_ASCII_BYTE):
	* doprnt.c (parse_doprnt_spec):
	* doprnt.c (get_doprnt_args):
	* doprnt.c (emacs_doprnt_1):
	* dragdrop.c (syms_of_dragdrop):
	* editfns.c (Fchar_to_string):
	* editfns.c (region_limit):
	* editfns.c (Fformat_time_string):
	* editfns.c (Fdecode_time):
	* editfns.c (Fencode_time):
	* editfns.c (Ftranspose_regions):
	* editfns.c (syms_of_editfns):
	* eldap.c (signal_ldap_error):
	* eldap.c (print_ldap):
	* eldap.c (finalize_ldap):
	* eldap.c (Fldap_open):
	* eldap.c (Fldap_search_basic):
	* eldap.c (Fldap_add):
	* eldap.c (Fldap_modify):
	* eldap.c (syms_of_eldap):
	* eldap.h (CHECK_LIVE_LDAP):
	* elhash.c (hash_table_size_validate):
	* elhash.c (hash_table_weakness_validate):
	* elhash.c (decode_hash_table_weakness):
	* elhash.c (hash_table_test_validate):
	* elhash.c (decode_hash_table_test):
	* elhash.c (hash_table_rehash_size_validate):
	* elhash.c (hash_table_rehash_threshold_validate):
	* elhash.c (hash_table_data_validate):
	* elhash.c (Fmake_hash_table):
	* elhash.c (syms_of_elhash):
	* emacs-widget-accessors.c (Fgtk_adjustment_lower):
	* emacs-widget-accessors.c (Fgtk_adjustment_upper):
	* emacs-widget-accessors.c (Fgtk_adjustment_value):
	* emacs-widget-accessors.c (Fgtk_adjustment_step_increment):
	* emacs-widget-accessors.c (Fgtk_adjustment_page_increment):
	* emacs-widget-accessors.c (Fgtk_adjustment_page_size):
	* emacs-widget-accessors.c (Fgtk_widget_style):
	* emacs-widget-accessors.c (Fgtk_widget_window):
	* emacs-widget-accessors.c (Fgtk_widget_state):
	* emacs-widget-accessors.c (Fgtk_widget_name):
	* emacs-widget-accessors.c (Fgtk_widget_parent):
	* emacs-widget-accessors.c (Fgtk_button_child):
	* emacs-widget-accessors.c (Fgtk_button_in_button):
	* emacs-widget-accessors.c (Fgtk_button_button_down):
	* emacs-widget-accessors.c (Fgtk_combo_entry):
	* emacs-widget-accessors.c (Fgtk_combo_button):
	* emacs-widget-accessors.c (Fgtk_combo_popup):
	* emacs-widget-accessors.c (Fgtk_combo_popwin):
	* emacs-widget-accessors.c (Fgtk_combo_list):
	* emacs-widget-accessors.c (Fgtk_gamma_curve_table):
	* emacs-widget-accessors.c (Fgtk_gamma_curve_curve):
	* emacs-widget-accessors.c (Fgtk_gamma_curve_gamma):
	* emacs-widget-accessors.c (Fgtk_gamma_curve_gamma_dialog):
	* emacs-widget-accessors.c (Fgtk_gamma_curve_gamma_text):
	* emacs-widget-accessors.c (Fgtk_check_menu_item_active):
	* emacs-widget-accessors.c (Fgtk_notebook_tab_pos):
	* emacs-widget-accessors.c (Fgtk_text_hadj):
	* emacs-widget-accessors.c (Fgtk_text_vadj):
	* emacs-widget-accessors.c (Fgtk_file_selection_dir_list):
	* emacs-widget-accessors.c (Fgtk_file_selection_file_list):
	* emacs-widget-accessors.c (Fgtk_file_selection_selection_entry):
	* emacs-widget-accessors.c (Fgtk_file_selection_selection_text):
	* emacs-widget-accessors.c (Fgtk_file_selection_main_vbox):
	* emacs-widget-accessors.c (Fgtk_file_selection_ok_button):
	* emacs-widget-accessors.c (Fgtk_file_selection_cancel_button):
	* emacs-widget-accessors.c (Fgtk_file_selection_help_button):
	* emacs-widget-accessors.c (Fgtk_file_selection_action_area):
	* emacs-widget-accessors.c (Fgtk_font_selection_dialog_fontsel):
	* emacs-widget-accessors.c (Fgtk_font_selection_dialog_main_vbox):
	* emacs-widget-accessors.c (Fgtk_font_selection_dialog_action_area):
	* emacs-widget-accessors.c (Fgtk_font_selection_dialog_ok_button):
	* emacs-widget-accessors.c (Fgtk_font_selection_dialog_apply_button):
	* emacs-widget-accessors.c (Fgtk_font_selection_dialog_cancel_button):
	* emacs-widget-accessors.c (Fgtk_color_selection_dialog_colorsel):
	* emacs-widget-accessors.c (Fgtk_color_selection_dialog_main_vbox):
	* emacs-widget-accessors.c (Fgtk_color_selection_dialog_ok_button):
	* emacs-widget-accessors.c (Fgtk_color_selection_dialog_reset_button):
	* emacs-widget-accessors.c (Fgtk_color_selection_dialog_cancel_button):
	* emacs-widget-accessors.c (Fgtk_color_selection_dialog_help_button):
	* emacs-widget-accessors.c (Fgtk_dialog_vbox):
	* emacs-widget-accessors.c (Fgtk_dialog_action_area):
	* emacs-widget-accessors.c (Fgtk_input_dialog_close_button):
	* emacs-widget-accessors.c (Fgtk_input_dialog_save_button):
	* emacs-widget-accessors.c (Fgtk_plug_socket_window):
	* emacs-widget-accessors.c (Fgtk_plug_same_app):
	* emacs-widget-accessors.c (Fgtk_object_flags):
	* emacs-widget-accessors.c (Fgtk_object_ref_count):
	* emacs-widget-accessors.c (Fgtk_paned_child1):
	* emacs-widget-accessors.c (Fgtk_paned_child2):
	* emacs-widget-accessors.c (Fgtk_paned_child1_resize):
	* emacs-widget-accessors.c (Fgtk_paned_child2_resize):
	* emacs-widget-accessors.c (Fgtk_paned_child1_shrink):
	* emacs-widget-accessors.c (Fgtk_paned_child2_shrink):
	* emacs-widget-accessors.c (Fgtk_clist_rows):
	* emacs-widget-accessors.c (Fgtk_clist_columns):
	* emacs-widget-accessors.c (Fgtk_clist_hadjustment):
	* emacs-widget-accessors.c (Fgtk_clist_vadjustment):
	* emacs-widget-accessors.c (Fgtk_clist_sort_type):
	* emacs-widget-accessors.c (Fgtk_clist_focus_row):
	* emacs-widget-accessors.c (Fgtk_clist_sort_column):
	* emacs-widget-accessors.c (Fgtk_list_children):
	* emacs-widget-accessors.c (Fgtk_list_selection):
	* emacs-widget-accessors.c (Fgtk_tree_children):
	* emacs-widget-accessors.c (Fgtk_tree_root_tree):
	* emacs-widget-accessors.c (Fgtk_tree_tree_owner):
	* emacs-widget-accessors.c (Fgtk_tree_selection):
	* emacs-widget-accessors.c (Fgtk_tree_item_subtree):
	* emacs-widget-accessors.c (Fgtk_scrolled_window_hscrollbar):
	* emacs-widget-accessors.c (Fgtk_scrolled_window_vscrollbar):
	* emacs-widget-accessors.c (Fgtk_scrolled_window_hscrollbar_visible):
	* emacs-widget-accessors.c (Fgtk_scrolled_window_vscrollbar_visible):
	* emacs.c (main_1):
	* emacs.c (Fsplit_path):
	* emacs.c (syms_of_emacs):
	* emodules.c (emodules_load):
	* esd.c:
	* esd.c (esd_play_sound_file):
	* esd.c (esd_play_sound_data):
	* eval.c:
	* eval.c (print_subr):
	* eval.c (FletX):
	* eval.c (Flet):
	* eval.c (Fdefvar):
	* eval.c (Fdefconst):
	* eval.c (condition_case_3):
	* eval.c (return_from_signal):
	* eval.c (signal_error_1):
	* eval.c (maybe_signal_error_1):
	* eval.c (maybe_signal_continuable_error_1):
	* 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 (signal_quit):
	* eval.c (signal_invalid_function_error):
	* eval.c (signal_wrong_number_of_arguments_error):
	* eval.c (signal_malformed_list_error):
	* eval.c (signal_malformed_property_list_error):
	* eval.c (signal_circular_list_error):
	* eval.c (signal_circular_property_list_error):
	* 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 (stack_overflow):
	* eval.c (out_of_memory):
	* eval.c (printing_unreadable_object):
	* eval.c (do_autoload):
	* eval.c (Feval):
	* eval.c (Ffuncall):
	* eval.c (grow_specpdl):
	* eval.c (syms_of_eval):
	* event-Xt.c (syms_of_event_Xt):
	* event-gtk.c (syms_of_event_gtk):
	* event-msw.c (mswindows_need_event_in_modal_loop):
	* event-msw.c (emacs_mswindows_select_process):
	* event-stream.c:
	* event-stream.c (check_event_stream_ok):
	* event-stream.c (lisp_number_to_milliseconds):
	* event-stream.c (Fnext_event):
	* event-stream.c (munge_keymap_translate):
	* event-stream.c (Fset_recent_keys_ring_size):
	* event-stream.c (execute_command_event):
	* event-stream.c (syms_of_event_stream):
	* events.c (print_event):
	* events.c (Fmake_event):
	* events.c (WRONG_EVENT_TYPE_FOR_PROPERTY):
	* events.c (Fdeallocate_event):
	* events.c (Fcopy_event):
	* events.c (character_to_event):
	* events.c (syms_of_events):
	* extents.c (print_extent):
	* extents.c (Fset_extent_parent):
	* extents.c (decode_map_extents_flags):
	* extents.c (decode_extent_at_flag):
	* extents.c (symbol_to_glyph_layout):
	* extents.c (Fset_extent_property):
	* extents.c (syms_of_extents):
	* faces.c (face_validate):
	* faces.c (Fget_face):
	* faces.c (syms_of_faces):
	* file-coding.c:
	* file-coding.c (print_coding_system):
	* file-coding.c (symbol_to_eol_type):
	* file-coding.c (Fget_coding_system):
	* file-coding.c (parse_charset_conversion_specs):
	* file-coding.c (Fmake_coding_system):
	* file-coding.c (Fcoding_system_aliasee):
	* file-coding.c (Fdefine_coding_system_alias):
	* file-coding.c (Fcoding_system_property):
	* file-coding.c (decode_coding_category):
	* file-coding.c (Fset_coding_priority_list):
	* file-coding.c (syms_of_file_coding):
	* fileio.c:
	* fileio.c (report_file_type_error):
	* fileio.c (report_error_with_errno):
	* fileio.c (report_file_error):
	* fileio.c (Fmake_temp_name):
	* fileio.c (Ffile_truename):
	* fileio.c (Fmake_directory_internal):
	* fileio.c (Fdelete_directory):
	* fileio.c (Fdelete_file):
	* fileio.c (Fset_file_modes):
	* fileio.c (syms_of_fileio):
	* filelock.c (syms_of_filelock):
	* floatfns.c (float_error):
	* fns.c:
	* fns.c (check_losing_bytecode):
	* fns.c (safe_copy_tree):
	* fns.c (Fget):
	* fns.c (Fput):
	* fns.c (Fremprop):
	* fns.c (Fobject_plist):
	* fns.c (internal_equal):
	* fns.c (internal_old_equal):
	* fns.c (Fload_average):
	* fns.c (Frequire):
	* fns.c (base64_conversion_error):
	* fns.c (base64_decode_1):
	* fns.c (syms_of_fns):
	* font-lock.c (syms_of_font_lock):
	* frame-gtk.c (gtk_create_widgets):
	* frame-gtk.c (gtk_init_frame_1):
	* frame-gtk.c (gtk_cant_notify_wm_error):
	* frame-gtk.c (syms_of_frame_gtk):
	* frame-x.c (x_create_widgets):
	* frame-x.c (x_init_frame_1):
	* frame-x.c (x_cant_notify_wm_error):
	* frame-x.c (syms_of_frame_x):
	* frame.c (print_frame):
	* frame.c (setup_frame_without_minibuffer):
	* frame.c (Fmake_frame):
	* frame.c (selected_frame):
	* frame.c (device_selected_frame):
	* frame.c (Fset_frame_selected_window):
	* frame.c (delete_frame_internal):
	* frame.c (Fmake_frame_invisible):
	* frame.c (store_minibuf_frame_prop):
	* frame.c (syms_of_frame):
	* general-slots.h:
	* glade.c (Fglade_xml_textdomain):
	* glyphs-gtk.c:
	* glyphs-gtk.c (check_pointer_sizes):
	* glyphs-gtk.c (init_image_instance_from_gdk_image):
	* glyphs-gtk.c (image_instance_add_gdk_image):
	* glyphs-gtk.c (init_image_instance_from_xbm_inline):
	* glyphs-gtk.c (write_lisp_string_to_temp_file):
	* glyphs-gtk.c (gtk_xpm_instantiate):
	* glyphs-gtk.c (gtk_xface_instantiate):
	* glyphs-gtk.c (gtk_resource_validate):
	* glyphs-gtk.c (gtk_resource_normalize):
	* glyphs-gtk.c (gtk_resource_instantiate):
	* glyphs-gtk.c (check_valid_resource_symbol):
	* glyphs-gtk.c (check_valid_resource_id):
	* glyphs-gtk.c (font_instantiate):
	* glyphs-gtk.c (cursor_font_instantiate):
	* glyphs-gtk.c (gtk_subwindow_instantiate):
	* glyphs-gtk.c (syms_of_glyphs_gtk):
	* glyphs-msw.c:
	* glyphs-msw.c (console_type_create_glyphs_mswindows):
	* glyphs-msw.c (init_image_instance_from_dibitmap):
	* glyphs-msw.c (image_instance_add_dibitmap):
	* glyphs-msw.c (mswindows_init_image_instance_from_eimage):
	* glyphs-msw.c (xpm_to_eimage):
	* glyphs-msw.c (mswindows_xpm_instantiate):
	* glyphs-msw.c (mswindows_resource_validate):
	* glyphs-msw.c (mswindows_resource_normalize):
	* glyphs-msw.c (resource_name_to_resource):
	* glyphs-msw.c (mswindows_resource_instantiate):
	* glyphs-msw.c (check_valid_resource_symbol):
	* glyphs-msw.c (check_valid_resource_id):
	* glyphs-msw.c (mswindows_xface_instantiate):
	* glyphs-msw.c (mswindows_subwindow_instantiate):
	* 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 (syms_of_glyphs_mswindows):
	* glyphs-widget.c (check_valid_orientation):
	* glyphs-widget.c (check_valid_tab_orientation):
	* glyphs-widget.c (check_valid_justification):
	* glyphs-widget.c (widget_validate):
	* glyphs-widget.c (combo_box_validate):
	* glyphs-x.c (write_lisp_string_to_temp_file):
	* glyphs-x.c (check_pointer_sizes):
	* glyphs-x.c (init_image_instance_from_x_image):
	* glyphs-x.c (image_instance_add_x_image):
	* glyphs-x.c (init_image_instance_from_xbm_inline):
	* glyphs-x.c (x_xpm_instantiate):
	* glyphs-x.c (x_xface_instantiate):
	* glyphs-x.c (font_instantiate):
	* glyphs-x.c (cursor_font_instantiate):
	* glyphs-x.c (x_redisplay_widget):
	* glyphs-x.c (x_subwindow_instantiate):
	* glyphs-x.c (x_widget_instantiate):
	* glyphs.c:
	* glyphs.c (decode_device_ii_format):
	* glyphs.c (process_image_string_instantiator):
	* glyphs.c (if):
	* glyphs.c (file_or_data_must_be_present):
	* glyphs.c (data_must_be_present):
	* glyphs.c (face_must_be_present):
	* glyphs.c (get_image_instantiator_governing_domain):
	* glyphs.c (instantiate_image_instantiator):
	* glyphs.c (print_image_instance):
	* glyphs.c (decode_image_instance_type):
	* glyphs.c (incompatible_image_types):
	* glyphs.c (make_image_instance_1):
	* glyphs.c (signal_image_error):
	* glyphs.c (signal_image_error_2):
	* glyphs.c (signal_double_image_error_2):
	* glyphs.c (simple_image_type_normalize):
	* glyphs.c (check_valid_xbm_inline):
	* glyphs.c (bitmap_to_lisp_data):
	* glyphs.c (xbm_normalize):
	* glyphs.c (xface_normalize):
	* glyphs.c (pixmap_to_lisp_data):
	* glyphs.c (check_valid_xpm_color_symbols):
	* glyphs.c (evaluate_xpm_color_symbols):
	* glyphs.c (xpm_normalize):
	* glyphs.c (image_instantiate):
	* glyphs.c (image_validate):
	* glyphs.c (print_glyph):
	* glyphs.c (decode_glyph_type):
	* glyphs.c (subwindow_instantiate):
	* glyphs.c (syms_of_glyphs):
	* glyphs.h:
	* gpmevent.c (Fgpm_enable):
	* gui-gtk.c (syms_of_gui_gtk):
	* gui-x.c (button_item_to_widget_value):
	* gui-x.c (gui_items_to_widget_values_1):
	* gui-x.c (gui_items_to_widget_values):
	* gui.c:
	* gui.c (gui_item_add_keyval_pair):
	* gui.c (make_gui_item_from_keywords_internal):
	* gui.c (widget_gui_parse_item_keywords):
	* gui.c (update_gui_item_keywords):
	* gui.c (signal_too_long_error):
	* gui.c (print_gui_item):
	* gui.c (parse_gui_item_tree_item):
	* gui.c (syms_of_gui):
	* gutter.c (decode_gutter_position):
	* gutter.c (gutter_validate):
	* gutter.c (gutter_size_validate):
	* gutter.c (gutter_visible_validate):
	* gutter.c (syms_of_gutter):
	* hpplay.c:
	* hpplay.c (player_error_internal):
	* hpplay.c (myHandler):
	* hpplay.c (play_bucket_internal):
	* hpplay.c (play_sound_file):
	* hpplay.c (play_sound_data):
	* hpplay.c (vars_of_hpplay):
	* indent.c (Findent_to):
	* indent.c (syms_of_indent):
	* input-method-xlib.c (Fx_open_xim):
	* input-method-xlib.c (Fx_close_xim):
	* input-method-xlib.c (syms_of_input_method_xlib):
	* insdel.c (get_buffer_range_char):
	* insdel.c (get_string_range_char):
	* insdel.c (make_gap):
	* insdel.c (buffer_insert_string_1):
	* intl.c (syms_of_intl):
	* keymap.c (print_keymap):
	* keymap.c (traverse_keymaps):
	* keymap.c (check_keymap_definition_loop):
	* keymap.c (define_key_check_and_coerce_keysym):
	* keymap.c (define_key_parser):
	* keymap.c (key_desc_list_to_event):
	* keymap.c (ensure_meta_prefix_char_keymapp):
	* keymap.c (Fdefine_key):
	* keymap.c (Fsingle_key_description):
	* keymap.c (Ftext_char_description):
	* libsst.c:
	* libsst.c (dial;):
	* libsst.h:
	* libsst.h (sst_dtmf):
	* linuxplay.c:
	* linuxplay.c (audio_init):
	* linuxplay.c (linux_play_data_or_file):
	* linuxplay.c (play_sound_file):
	* linuxplay.c (play_sound_data):
	* lisp.h:
	* lread.c (read_syntax_error):
	* lread.c (continuable_read_syntax_error):
	* lread.c (readchar):
	* lread.c (pas_de_lache_ici):
	* lread.c (load_force_doc_string_unwind):
	* lread.c (Fload_internal):
	* lread.c (decode_mode_1):
	* lread.c (readevalloop):
	* lread.c (Feval_buffer):
	* lread.c (read_escape):
	* lread.c (FSF_LOSSAGE):
	* lread.c (read_atom_0):
	* lread.c (reader_nextchar):
	* lread.c (read_list_conser):
	* lread.c (syms_of_lread):
	* lread.c (vars_of_lread):
	* lstream.c (Lstream_internal_error):
	* macros.c (Fstart_kbd_macro):
	* macros.c (Fend_kbd_macro):
	* macros.c (pop_kbd_macro_event):
	* macros.c (Fcall_last_kbd_macro):
	* macros.c (Fexecute_kbd_macro):
	* macros.c (syms_of_macros):
	* marker.c (print_marker):
	* marker.c (set_marker_internal):
	* marker.c (bi_marker_position):
	* marker.c (marker_position):
	* marker.c (set_bi_marker_position):
	* marker.c (set_marker_position):
	* md5.c (md5_coding_system):
	* menubar-gtk.c (menu_convert):
	* menubar-gtk.c (menu_descriptor_to_widget_1):
	* menubar-msw.c (mswindows_translate_menu_or_dialog_item):
	* menubar-msw.c (populate_menu_add_item):
	* menubar-msw.c (populate_or_checksum_helper):
	* menubar-msw.c (unsafe_handle_wm_initmenupopup_1):
	* menubar-msw.c (mswindows_popup_menu):
	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	* menubar-x.c (x_popup_menu):
	* menubar-x.c (Faccelerate_menu):
	* menubar.c (syms_of_menubar):
	* menubar.c (vars_of_menubar):
	* minibuf.c (Ftry_completion):
	* minibuf.c (syms_of_minibuf):
	* miscplay.c:
	* miscplay.c (parse_wave_complete):
	* miscplay.c (waverequire):
	* miscplay.c (parsewave):
	* miscplay.c (parsesundecaudio):
	* miscplay.c (sndcnv8U_2mono):
	* miscplay.c (sndcnv8S_2mono):
	* miscplay.c (sndcnv2monounsigned):
	* miscplay.c (sndcnv2unsigned):
	* miscplay.c (int2ulaw):
	* miscplay.c (sndcnvULaw_2linear):
	* miscplay.c (sndcnvULaw_2mono):
	* miscplay.c (sndcnv16_2monoLE):
	* miscplay.c (sndcnv16_2monoBE):
	* miscplay.c (sndcnv2byteLE):
	* miscplay.c (sndcnv2byteBE):
	* miscplay.c (sndcnv2monobyteLE):
	* miscplay.c (sndcnv2monobyteBE):
	* miscplay.c (analyze_format):
	* miscplay.h:
	* miscplay.h (HEADERSZ):
	* miscplay.h (parse_wave_complete):
	* mule-ccl.c (Fccl_execute):
	* mule-ccl.c (vars_of_mule_ccl):
	* mule-charset.c (print_charset):
	* mule-charset.c (get_unallocated_leading_byte):
	* mule-charset.c (Fget_charset):
	* mule-charset.c (Fmake_charset):
	* mule-charset.c (Fcharset_from_attributes):
	* mule-charset.c (Fcharset_property):
	* mule-charset.c (Fset_charset_ccl_program):
	* mule-charset.c (Fmake_char):
	* mule-charset.c (Fchar_octet):
	* mule-charset.c (lookup_composite_char):
	* mule-charset.c (syms_of_mule_charset):
	* mule-wnnfns.c (Fwnn_set_param):
	* mule-wnnfns.c (syms_of_mule_wnn):
	* mule.c (Fdefine_word_pattern):
	* nas.c:
	* nas.c (XTOOLKIT):
	* nas.c (play_sound_file):
	* nas.c (close_down_play):
	* nas.c (do_caching_play):
	* nas.c (play_sound_data):
	* nas.c (CatchIoErrorAndJump):
	* nas.c (NameFromData):
	* nas.c (SndOpenDataForReading):
	* nas.c (cmpID):
	* nas.c (dread):
	* nas.c (dgetc):
	* nas.c (readChunk):
	* nas.c (WaveOpenDataForReading):
	* nas.c (SoundOpenDataForReading):
	* ntplay.c:
	* ntplay.c (play_sound_file):
	* ntplay.c (play_sound_data_1):
	* ntplay.c (play_sound_data):
	* ntproc.c:
	* ntproc.c (prepare_standard_handles):
	* ntproc.c (vars_of_ntproc):
	* objects-gtk.c (gtk_parse_nearest_color):
	* objects-gtk.c (gtk_initialize_font_instance):
	* objects-msw.c (mswindows_initialize_color_instance):
	* objects-msw.c (initialize_font_instance):
	* objects-x.c (x_parse_nearest_color):
	* objects-x.c (x_initialize_font_instance):
	* objects-x.c (x_font_instance_truename):
	* objects.c (finalose):
	* objects.c (print_color_instance):
	* objects.c (print_font_instance):
	* objects.c (font_instance_truename_internal):
	* objects.c (color_instantiate):
	* objects.c (color_validate):
	* objects.c (font_validate):
	* objects.c (face_boolean_instantiate):
	* objects.c (face_boolean_validate):
	* objects.c (syms_of_objects):
	* postgresql.c (CHECK_LIVE_CONNECTION):
	* postgresql.c (print_pgconn):
	* postgresql.c (finalize_pgconn):
	* postgresql.c (print_pgresult):
	* postgresql.c (finalize_pgresult):
	* postgresql.c (Fpq_connectdb):
	* postgresql.c (Fpq_connect_start):
	* postgresql.c (Fpq_connect_poll):
	* postgresql.c (Fpq_set_client_encoding):
	* postgresql.c (Fpq_reset_start):
	* postgresql.c (Fpq_reset_poll):
	* postgresql.c (Fpq_pgconn):
	* postgresql.c (Fpq_exec):
	* postgresql.c (Fpq_send_query):
	* postgresql.c (Fpq_get_result):
	* postgresql.c (Fpq_result_status):
	* postgresql.c (Fpq_make_empty_pgresult):
	* postgresql.c (syms_of_postgresql):
	* print.c:
	* print.c (print_error_message):
	* print.c (print_cons):
	* print.c (default_object_printer):
	* print.c (Fexternal_debugging_output):
	* print.c (Fopen_termscript):
	* print.c (syms_of_print):
	* process-nt.c:
	* process-nt.c (validate_signal_number):
	* process-nt.c (mswindows_report_process_error):
	* process-nt.c (mswindows_report_winsock_error):
	* process-nt.c (nt_create_process):
	* process-nt.c (get_internet_address):
	* process-nt.c (nt_canonicalize_host_name):
	* process-nt.c (nt_open_network_stream):
	* process-unix.c (get_internet_address):
	* process-unix.c (unix_create_process):
	* process-unix.c (unix_send_process):
	* process-unix.c (unix_kill_child_process):
	* process-unix.c (unix_canonicalize_host_name):
	* process-unix.c (unix_open_network_stream):
	* process-unix.c (unix_open_multicast_group):
	* process.c:
	* process.c (print_process):
	* process.c (get_process):
	* process.c (report_process_error):
	* process.c (init_process_io_handles):
	* process.c (Fstart_process_internal):
	* process.c (send_process):
	* process.c (decode_signal):
	* process.c (process_send_signal):
	* process.c (Fkill_process):
	* process.c (Fquit_process):
	* process.c (Fstop_process):
	* process.c (Fcontinue_process):
	* process.c (Fprocess_send_eof):
	* process.c (syms_of_process):
	* ralloc.c (syms_of_ralloc):
	* rangetab.c (Fput_range_table):
	* rangetab.c (rangetab_data_validate):
	* rangetab.c (syms_of_rangetab):
	* redisplay.c (syms_of_redisplay):
	* scrollbar.c (syms_of_scrollbar):
	* search.c (matcher_overflow):
	* search.c (compile_pattern_1):
	* search.c (skip_chars):
	* search.c (search_command):
	* search.c (Freplace_match):
	* search.c (Fmatch_data):
	* search.c (syms_of_search):
	* select-gtk.c (gtk_get_foreign_selection):
	* select-gtk.c (gtk_get_window_property_as_lisp_data):
	* select-gtk.c (lisp_data_to_selection_data):
	* select-x.c (motif_clipboard_cb):
	* select-x.c (x_reply_selection_request):
	* select-x.c (copy_multiple_data):
	* select-x.c (x_get_foreign_selection):
	* select-x.c (x_get_window_property_as_lisp_data):
	* select-x.c (lisp_data_to_selection_data):
	* select-x.c (CHECK_CUTBUFFER):
	* select-x.c (Fx_get_cutbuffer_internal):
	* select-x.c (syms_of_select_x):
	* select.c (Fown_selection_internal):
	* select.c (syms_of_select):
	* sgiplay.c:
	* sgiplay.c (play_sound_file):
	* sgiplay.c (play_sound_data):
	* sgiplay.c (audio_initialize):
	* sgiplay.c (play_internal):
	* sgiplay.c (write_mulaw_8_chunk):
	* sgiplay.c (write_linear_chunk):
	* sgiplay.c (initialize_audio_port):
	* sgiplay.c (open_audio_port):
	* sgiplay.c (set_channels):
	* sgiplay.c (set_output_format):
	* sgiplay.c (struct):
	* sgiplay.c (parse_snd_header):
	* sheap.c (sheap_adjust_h):
	* sound.c:
	* sound.c (report_sound_error):
	* sound.c (Fplay_sound_file):
	* sound.c (Fplay_sound):
	* sound.c (Fding):
	* sound.c (init_nas_sound):
	* sound.c (init_native_sound):
	* sound.c (syms_of_sound):
	* specifier.c:
	* specifier.c (print_specifier):
	* specifier.c (decode_specifier_type):
	* specifier.c (check_valid_locale_or_locale_type):
	* specifier.c (decode_locale):
	* specifier.c (decode_locale_type):
	* specifier.c (check_valid_domain):
	* specifier.c (decode_specifier_tag_set):
	* specifier.c (Fcanonicalize_tag_set):
	* specifier.c (Fdefine_specifier_tag):
	* specifier.c (Fspecifier_tag_predicate):
	* specifier.c (check_valid_inst_list):
	* specifier.c (check_valid_spec_list):
	* specifier.c (decode_how_to_add_specification):
	* specifier.c (check_modifiable_specifier):
	* specifier.c (Fcopy_specifier):
	* specifier.c (check_valid_specifier_matchspec):
	* specifier.c (specifier_instance):
	* specifier.c (boolean_validate):
	* specifier.c (syms_of_specifier):
	* sunplay.c:
	* sunplay.c (init_device):
	* sunplay.c (play_sound_file):
	* sunplay.c (play_sound_data):
	* symbols.c (oblookup):
	* symbols.c (reject_constant_symbols):
	* symbols.c (verify_ok_for_buffer_local):
	* symbols.c (Fset):
	* symbols.c (decode_magic_handler_type):
	* symbols.c (handler_type_from_function_symbol):
	* symbols.c (Fdefvaralias):
	* symbols.c (init_symbols_once_early):
	* symeval.h:
	* symsinit.h:
	* syntax.c (scan_lists):
	* syntax.c (scan_sexps_forward):
	* syntax.c (syms_of_syntax):
	* sysdep.c (stuff_char):
	* sysdep.c (sys_subshell):
	* sysdep.c (dup2):
	* toolbar-msw.c (mswindows_output_toolbar):
	* toolbar.c (decode_toolbar_position):
	* toolbar.c (compute_frame_toolbar_buttons):
	* toolbar.c (CTB_ERROR):
	* toolbar.c (check_toolbar_button_keywords):
	* toolbar.c (toolbar_validate):
	* toolbar.c (syms_of_toolbar):
	* tooltalk.c (print_tooltalk_message):
	* tooltalk.c (print_tooltalk_pattern):
	* tooltalk.c (check_status):
	* tooltalk.c (Ftooltalk_open_connection):
	* tooltalk.c (syms_of_tooltalk):
	* ui-byhand.c (Fgtk_box_query_child_packing):
	* ui-byhand.c (Fgtk_button_box_get_child_size):
	* ui-byhand.c (Fgtk_calendar_get_date):
	* ui-byhand.c (Fgtk_clist_get_text):
	* ui-byhand.c (Fgtk_clist_get_selection):
	* ui-byhand.c (Fgtk_clist_get_pixmap):
	* ui-byhand.c (Fgtk_clist_get_pixtext):
	* ui-byhand.c (Fgtk_color_selection_get_color):
	* ui-byhand.c (Fgtk_editable_insert_text):
	* ui-byhand.c (Fgtk_pixmap_get):
	* ui-byhand.c (Fgtk_curve_get_vector):
	* ui-byhand.c (Fgtk_curve_set_vector):
	* ui-byhand.c (Fgtk_label_get):
	* ui-byhand.c (Fgtk_notebook_query_tab_label_packing):
	* ui-byhand.c (Fgtk_widget_get_pointer):
	* ui-byhand.c (generic_toolbar_insert_item):
	* ui-gtk.c (Fdll_load):
	* ui-gtk.c (ffi_object_printer):
	* ui-gtk.c (Fgtk_import_variable_internal):
	* ui-gtk.c (Fgtk_import_function_internal):
	* ui-gtk.c (Fgtk_call_function):
	* ui-gtk.c (emacs_gtk_object_printer):
	* ui-gtk.c (object_getprop):
	* ui-gtk.c (object_putprop):
	* ui-gtk.c (emacs_gtk_object_finalizer):
	* ui-gtk.c (emacs_gtk_boxed_printer):
	* ui-gtk.c (Fgtk_fundamental_type):
	* ui-gtk.c (Fgtk_describe_type):
	* ui-gtk.c (syms_of_ui_gtk):
	* ui-gtk.c (lisp_to_gtk_type):
	* ui-gtk.c (symbol_to_enum):
	* ui-gtk.c (enum_to_symbol):
	* undo.c (Fprimitive_undo):
	* undo.c (syms_of_undo):
	* unexaix.c (report_error):
	* unexaix.c (report_error_1):
	* unexapollo.c (unexec):
	* unexapollo.c (CopyData):
	* unexconvex.c (report_error):
	* unexconvex.c (a2;):
	* unexec.c (report_error):
	* unexec.c (report_error_1):
	* widget.c (syms_of_widget):
	* win32.c (Fmswindows_shell_execute):
	* window.c (print_window):
	* window.c (Fdelete_window):
	* window.c (Fdelete_other_windows):
	* window.c (Fset_window_buffer):
	* window.c (Fselect_window):
	* window.c (Fsplit_window):
	* window.c (change_window_height):
	* window.c (window_scroll):
	* window.c (Fother_window_for_scrolling):
	* window.c (print_window_config):
	* window.c (syms_of_window):
	-- defsymbol -> DEFSYMBOL.
	-- add an error type to all errors.
	-- eliminate the error functions in eval.c that let you just
	   use Qerror as the type.
	-- redo the error API to be more consistent, sensibly named,
	   and easier to use.
	-- redo the error hierarchy somewhat.  create new errors:
	   structure-formation-error, gui-error, invalid-constant,
	   stack-overflow, out-of-memory, process-error, network-error,
	   sound-error, printing-unreadable-object, base64-conversion-
	   error; coding-system-error renamed to text-conversion error;
	   some others.
	-- fix Mule problems in error strings in emodules.c, tooltalk.c.
	-- fix error handling in mswin open-network-stream.
	-- Mule-ize all sound files and clean up the headers.
	-- nativesound.h -> sound.h and used for all sound files.
	-- move some shared stuff into glyphs-shared.c: first attempt
	   at eliminating some of the massive GTK code duplication.

2001-05-23  Ben Wing  <ben@xemacs.org>

	* event-msw.c (winsock_writer):
	* event-msw.c (winsock_closer):
	prior kludgy code was clobbering the buffer, thinking it was
	"unused" space to store an unneeded return value; instead, use
	the variable we've already got staring us in the face.

2001-05-23  Ben Wing  <ben@xemacs.org>

	for 21.5:

	* s\cygwin32.h:
	* s\cygwin32.h (C_SWITCH_SYSTEM):
	* s\cygwin32.h (BROKEN_SIGIO):
	* s\mingw32.h (C_SWITCH_SYSTEM):
	* s\mingw32.h (TEXT_START):
	remove support for way old beta versions of cygwin.
	don't put -Wno-sign-compare in the system switches; this
	isn't a system issue.  define BROKEN_SIGIO for cygwin to
	get C-g support.

2001-05-23  Ben Wing  <ben@xemacs.org>

	for 21.4:

	* device-msw.c (msprinter_init_device):
	signal an error rather than crash with an unavailable network
	printer (from Mike Alexander).

	* event-msw.c:
	* event-msw.c (struct winsock_stream):
	* event-msw.c (winsock_writer):
	* event-msw.c (winsock_closer):
	* event-msw.c (make_winsock_stream_1):
	cleanup headers.  fix (hopefully) an error with data corruption
	when sending to a network connection.

	* fileio.c (Fexpand_file_name): Fix evil code that attempts
	to handle the ~user prefix by (a) always assuming we're referencing
	ourselves and not even verifying the user -- hence any file with
	a tilde as its first char is invalid! (b) if there wasn't a slash
	following the filename, the pointer was set *past* the end of
	file and we started reading from uninitialized memory.  Now we
	simply treat these as files, always.

	optionally for 21.4 (doc fix):

	* lread.c (pas_de_holgazan_ici):
	* lread.c (load_force_doc_string_unwind):
	cambia de pas_de_lache_ici -- al minimo usa la palabra certa.

	for 21.5:

	* frame.c (restore_frame_list_to_its_unbesmirched_state):
	fix warnings.

	* emacs.c (make_arg_list_1):
	* nt.c (win32_get_long_filename):
	* nt.c (init_environment):
	* nt.c (GetCachedVolumeInformation):
	* nt.c (get_volume_info):
	* nt.c (map_win32_filename):
	* nt.c (sys_rename):
	* nt.c (generate_inode_val):
	* ntproc.c (Fwin32_short_file_name):
	* ntproc.c (Fwin32_long_file_name):
	* process-nt.c (nt_create_process):
	* realpath.c (win32_readlink):
	* unexnt.c:
	* unexnt.c (_start):
	* unexnt.c (unexec):
	* unexnt.c (get_bss_info_from_map_file):
	rename MAX_PATH to standard PATH_MAX.

	* process-nt.c:
	* realpath.c:
	cleanup headers.

	* process-unix.c (get_internet_address):
	* sysdep.c (init_system_name):
	* systime.h:
	* syswindows.h:
	kill BROKEN_CYGWIN and support for way old beta versions of cygwin.

	* sysfile.h:
	use _MAX_PATH (Windows) preferentially for PATH_MAX if defined.
	include io.h on Cygwin (we need get_osfhandle()).  include
	sys/fcntl.h always, since we were including it in various
	header files anyway.

	* unexcw.c:
	* unexcw.c (DONT_ENCAPSULATE):
	* unexcw.c (CHECK_AOUT_POS):
	* unexcw.c (unexec):
	* unexcw.c (get_section_info):
	* unexcw.c (copy_executable_and_dump_data_section):
	* unexcw.c (dup_file_area):
	* unexcw.c (write_int_to_bss):
	fix up style to conform to standard.  remove duplicate definition
	of PERROR.

	* buffer.c (common_init_complex_vars_of_buffer): comment change.

	* database.c:
	* debug.h (struct debug_classes):
	* device-tty.c:
	* dired-msw.c:
	* dired-msw.c (mswindows_sortby):
	* glyphs-msw.c:
	header cleanups (remove places that directly include a system
	header file, because we have our own layer to do this more cleanly
	and portably); indentation fixes.

2001-05-22  Martin Buchholz  <martin@xemacs.org>

	* config.h.in (SYSTEM_TYPE): Allow configure to set this.
	* s/darwin.h: New.  Add support for MacOS X.

2001-05-20  Mike Alexander  <mta@arbortext.com>

	* device-msw.c (msprinter_init_device): Don't assert out if the
	printer isn't reachable on the net.

2001-05-21  Martin Buchholz  <martin@xemacs.org>

	* gui-x.c (sanity_check_lwlib): Remove.

2001-05-14  Martin Buchholz  <martin@xemacs.org>

	realloc() was being called with a null pointer, causing a crash in
	etags running `make TAGS' on SunOS 4.
	The realloc bug should be handled in the config infrastructure,
	not the regular code.  It's actually a feature to make the regular
	code less defensive, since we *want* it to crash faster.
	* s/sunos4.h (realloc_accepting_nullptr): Safe version of realloc.
	* s/sunos4.h (realloc): Re-#define realloc to realloc_accepting_nullptr.
	* regex.c (RETALLOC_IF): Remove.  Use RETALLOC instead.
	* regex.c (RETALLOC): Code as if realloc() is ANSI-compliant.
	* alloc.c (xrealloc): Code as if realloc() is ANSI-compliant.
	* gmalloc.c: Undef functions to be defined here, in case system
	header files or the config infrastructure have #define'd them.
	* tparam.c: Likewise.
	* tparam.c: Assume standard C header files.

2001-05-12  Craig Lanning  <CraigL@Knology.net>

	* s\mingw32.h:
	Properly find MinGW's <process.h> inside Cygwin's restructured
	include directories.  Don't try to include <cygwin/version.h>
	since we are dropping support for MinGW in versions of Cygwin
	earlier than b21.

2001-05-12  Craig Lanning  <CraigL@Knology.net>

	* nt.c:
	Drop support for MinGW in versions of Cygwin before b21.
	* sysdep.c:
	Properly find MinGW's <process.h> inside Cygwin's restructured
	include directories.
	* syswindows.h:
	Drop support for MinGW in versions of Cygwin before b21.
	* unexcw.c:
	Even though a.out.h is no longer detected by configure, allow
	MinGW to use it until we figure out how to do the job with Win32.


2001-05-19  Ben Wing  <ben@xemacs.org>

	* console-msw.h:
	* scrollbar-msw.c (mswindows_create_scrollbar_instance):
	* scrollbar-msw.c (mswindows_handle_scrollbar_event):
	* event-msw.c:
	* event-msw.c (mswindows_find_frame):
	we might receive scrollbar events on windows without scrollbars
	(e.g. holding down and moving the wheel button).

	* dired.c (user_name_completion): win9x support.

	* eval.c: doc comment about gcpro'ing in record_unwind_protect.

	* frame-msw.c (msprinter_init_frame_3): typo.

	* frame.c:
	* frame.c (restore_frame_list_to_its_unbesmirched_state):
	* frame.c (Fmake_frame):
	avoid problems with errors during init_frame_3.

	* process-nt.c:
	* process-nt.c (vars_of_process_nt):
	remove unused mswindows-quote-process-args.  rec for 21.4.

	* unexcw.c (PERROR): use do/while.

2001-05-03  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* lisp.h: (dump_add_opaque): make varaddress parameter const.

	* dumper.c (struct pdump_opaque): make varaddress const.
	(dump_add_opaque): make varaddress parameter const.
	(pdump_load_finish): override const when copying into
	info.varaddress.

2001-05-02  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* console.h (struct console_methods): Added flags member.
	(CONSOLE_IMPLEMENTATION_FLAGS): Defined.
	(CONMETH_IMPL_FLAG):
	(CONSOLE_IMPL_FLAG): Macro to check implememntation flags.
	Defined XDEVIMPF_DONT_PREEMPT_REDISPLAY.

	* device.c (window_system_pixelated_geometry): Use the above macros.

	* device.h (DEVICE_IMPL_FLAG): Macro to check a device
	implememntation flag.
	* device.h (DEVICE_DISPLAY_P): Use it.

	* frame.c (delete_frame_internal): Use the above macro.

	* redisplay.c (redisplay_device): Use it.
	(redisplay_device): Obey XDEVIMPF_DONT_PREEMPT_REDISPLAY.
	(redisplay_frame): Ditto.

	* device-msw.c (mswindows_device_implementation_flags): Removed.
	(msprinter_device_implementation_flags): Removed.
	(console_type_create_device_mswindows): Removed references to
	implementation_flags methods, set implementation flags here.
	(console_type_create_device_mswindows): Added XDEVIMPF_DONT_PREEMPT.

	* device-gtk.c (gtk_device_implementation_flags): Removed method.
	(console_type_create_device_gtk): Removed method declaration.
	Added commented out statement which semantically matches the
	commented out statement in the above removed method.

2001-05-17  Stephen J. Turnbull  <stephen@xemacs.org>

	* regex.c (DECLARE_NOTHING): Define if !emacs && REGEX_MALLOC.

2001-05-11  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* lisp.h (EMACS_INT_MAX): This should be one bit less since
	EMACS_INT is signed.

2001-05-13  Mike Alexander  <mta@arbortext.com>

	* frame-msw.c (mswindows_make_frame_visible): Call SetActiveWindow
	to make the frame the active window.

2001-05-11  Martin Buchholz  <martin@xemacs.org>

	Eliminate the need to define HAVE_PTYS in s&m files.

	* config.h.in:
	* event-msw.c (emacs_mswindows_create_stream_pair):
	* event-stream.c (execute_internal_event):
	* event-unixoid.c (event_stream_unixoid_create_stream_pair):
	* process-unix.c:
	* process-unix.c (unix_create_process):
	* sysdep.c:
	* sysdep.c (set_descriptor_non_blocking):
	* sysdep.c (setup_pty): Delete ancient FIONBIO code.
	* systty.h:
	* s/aix3-1.h:
	* s/bsd4-1.h:
	* s/bsd4-2.h:
	* s/cxux.h:
	* s/dgux.h:
	* s/cygwin32.h:
	* s/esix.h:
	* s/hpux.h:
	* s/iris3-5.h:
	* s/iris3-6.h:
	* s/irix3-3.h:
	* s/isc2-2.h:
	* s/linux.h:
	* s/ptx.h:
	* s/rtu.h:
	* s/sco4.h:
	* s/sco5.h:
	* s/template.h:
	* s/umax.h:
	* s/umips.h:
	* s/unipl5-0.h:
	* s/unipl5-2.h:
	* s/usg5-0.h:
	* s/usg5-3.h:
	* s/usg5-4.h:
	* s/windowsnt.h:
	* s/xenix.h:
	* m/7300.h:
	* m/delta.h:
	* m/delta88k.h:
	* m/dpx2.h:
	* m/hp800.h:
	* m/ibmps2-aix.h:
	* m/ibmrt-aix.h:
	* m/mips.h:
	* m/pfa50.h:
	* m/sps7.h:
	* m/stride.h:
	* m/tad68k.h:
	* m/tekxd88.h:
	* m/wicat.h:
	Nuke all references to HAVE_PTYS, SYSV_PTYS, NEED_BSDTTY.
	All current Unix systems have ptys, and even on systems without
	ptys, the basic functionality has been sufficiently
	autoconfiscated that everything should just work anyways.

2001-05-11  Mike Alexander  <mta@arbortext.com>

	* event-msw.c (mswindows_need_event_in_modal_loop):
	(mswindows_need_event):
	Fix indentation.

2001-05-12  Ben Wing  <ben@xemacs.org>

	* .cvsignore: add xemacs.opt, a VC-generated file.

2001-05-12  Ben Wing  <ben@xemacs.org>

	* event-msw.c (mswindows_dde_callback):
	* event-msw.c (mswindows_wnd_proc):
	eliminate cygwin warnings.

	* dired.c:
	* dired.c (user_name_completion):
	* syswindows.h:
	* win32.c:
	* win32.c (init_potentially_nonexistent_functions):
	find the Net* functions the hard way to avoid errors on win 9x.

2001-05-10  Ben Wing  <ben@xemacs.org>

	* dired.c:
	* dired.c (user_name_completion_unwind):
	* dired.c (user_name_completion):
	* dired.c (syms_of_dired):
	implement user-name-all-completions under Windows.

	* emacs.c:
	* emacs.c (syms_of_emacs):
	create new function force-debugging-signal (only when DEBUG_XEMACS)
	to breakpoint or abort to the debugger.

	* file-coding.c:
	* file-coding.c (syms_of_file_coding):
	* file-coding.h:
	* lisp.h:
	move coding-system-charset to lisp to avoid doc warning.

2001-05-09  William M. Perry  <wmperry@gnu.org>

	* scrollbar-gtk.c (gtk_create_scrollbar_instance): Fix the
	disappearing GTK scrollbar problem.

2001-05-09  Ben Wing  <ben@xemacs.org>

	* regex.c (regex_compile):
	fix error compiling regexps with back-references in them.

2001-05-09  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.5.1 "anise" is released.

2001-05-08  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* buffer.c (Vcase_fold_search): Remove obsolete
	  comment about non ASCII case-fold-search.  This
	  bug has been fixed by case-table changes.

2001-05-08  Yoshiaki Kasahara  <kasahara@nc.kyushu-u.ac.jp>

	* mule-charset.c (Fmake_charset): Add missing else.

2001-05-07  Martin Buchholz  <martin@xemacs.org>

	* s/bsd386.h: Use NOT_C_CODE instead of `emacs' to protect Makefiles

2001-05-08  Martin Buchholz  <martin@xemacs.org>

	* s/bsdos4.h: Protect C code with #ifndef NOT_C_CODE.

2000-04-22  zhaoway  <zw@debian.org>

	* event-stream.c (is_scrollbar_event): Return 0 when XEmacs is
	compiled without scrollbars.

2001-05-05  Martin Buchholz  <martin@xemacs.org>

	TTY configury portability improvements.
	Support systems which use OXTABS instead of TAB3, without any s&m.
	* s/bsd386.h: Remove definitions for system symbols TABDLY and OXTABS.
	* s/freebsd.h: Likewise.
	* s/gnu.h: Likewise.
	* s/netbsd.h: Likewise.
	* s/nextstep.h: Remove definitions for TAB3 and BSD_TERMIOS.
	* systty.h:
	Fix up (unused) tty tab delay/expansion code.
	Better preprocessor symbol hygiene.
	Remove BSD_TERMIOS cruft.
	* sysdep.c (child_setup_tty): More careful code.  Check for OXTABS.
	* sysdep.c (tty_init_sys_modes_on_device):
	Tab expansion disabling code was buggy.  So I fixed it.
	But it shouldn't have been done at all.  So I also #if 0'ed it.

2001-05-06  Ben Wing  <ben@xemacs.org>

	* console-msw.h:
	* device-msw.c:
	* device-msw.c (print_dialog_worker):
	* device-msw.c (mswindows_handle_print_dialog_box):
	* device-msw.c (syms_of_device_mswindows):
	* dialog-msw.c (mswindows_make_dialog_box_internal):
	* general-slots.h:
	implement printing the selection when it's selected.

	unrelated:

	* mule-charset.c (Fset_charset_ccl_program):
	* mule-charset.c (invalidate_charset_font_caches):
	force redisplay when set-charset-ccl-program called.

2001-05-04  Martin Buchholz  <martin@xemacs.org>

	* s/bsdos4.h (openpty): Add declaration, missing from system headers.

2001-05-05  Martin Buchholz  <martin@xemacs.org>

	* search.c (warn_about_possibly_incompatible_back_references):
	Target of a DEFVAR_INT should be a Fixnum, not int.

2001-05-05  Ben Wing  <ben@xemacs.org>

	* console-msw.h:
	* device-msw.c:
	* device-msw.c (mswindows_get_default_margin):
	* frame-msw.c (mswindows_size_frame_internal):
	* frame-msw.c (msprinter_init_frame_1):
	* frame-msw.c (vars_of_frame_mswindows):
	Change top/bottom margin defaults to 0.5 inches.

2001-04-23  Ben Wing  <ben@xemacs.org>

	------------ notable bug fix: Windows event code --------------

	* event-msw.c (FAKE_MOD_QUIT):
	* event-msw.c (mswindows_dequeue_dispatch_event):
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (emacs_mswindows_quit_p):
	Get critical quit working.

	------------ notable bug fix and new feature: regex code --------------

	* lisp.h:
	* regex.c:
	* regex.c (enum):
	* regex.c (print_compiled_pattern):
	* regex.c (INIT_REG_TRANSLATE_SIZE):
	* regex.c (regex_compile):
	* regex.c (re_match_2_internal):
	* regex.h:
	* regex.h (RE_SYNTAX_AWK):
	* regex.h (RE_SYNTAX_GREP):
	* regex.h (RE_SYNTAX_EGREP):
	* regex.h (RE_SYNTAX_POSIX_EGREP):
	* regex.h (_RE_SYNTAX_POSIX_COMMON):
	* regex.h (struct re_pattern_buffer):
	* search.c:
	* search.c (vars_of_search):
	Shy groups were implemented in a horrible, half-assed way that
	would cause them to screw up regex searching in most cases.
	Fixed to work correctly.

	Also extended back-reference syntax past 9.  Only is recognized
	as such if there are at least that many non-shy groups; and
	optionally will warn about such uses, to catch old code that
	might be using them differently. (Added variable to control
	this in search.c -- `warn-about-possibly-incompatible-back-
	references', on by default for the moment.  Declared in lisp.h.

	---------------- process/SIGIO improvements -------------------

	* process-unix.c:
	* process-unix.c (get_internet_address):
	* process-unix.c (unix_canonicalize_host_name):
	* process-unix.c (unix_open_network_stream):
	* process-unix.c (unix_open_multicast_group):
	define USE_GETADDRINFO to replace more complex conditional,
	and use it.  the code conditionalized on this in
	unix_open_network_stream had *serious* problems handling errors.
	it's now fixed, and major amounts of duplicate code between
	the two versions were combined.

	don't disable SIGIO and other interrupts unless
	CONNECT_NEEDS_SLOWED_INTERRUPTS is defined -- don't penalize OS's
	without bugs.  similarly for a freebsd bug that was affecting all
	OS's.

	* s\ultrix.h:
	define CONNECT_NEEDS_SLOWED_INTERRUPTS, since that's the OS
	mentioned as having a kernel bug.

	* sysdep.c (request_sigio_on_device):
	* sysdep.c (unrequest_sigio_on_device):
	fix SIGIO problems on Linux.  add check for O_ASYNC in case it's
	defined and FASYNC isn't.  add comment about other ways to do
	SIGIO on Linux.

	* callproc.c (Fold_call_process_internal):
	* process.c (Fstart_process_internal):
	Deal with the possibility that `default-directory' doesn't
	have terminating slash.  Correct comments about vfork.

	---------------- Miscellaneous bug fixes/cleanup -------------------

	* callint.c (Finteractive):
	Add lots of documentation -- exactly what the Lisp equivalents of
	all the interactive specs are.

	* console.h (struct console): change type of quit_char to Emchar.

	* event-msw.c (lstream_type_create_mswindows_selectable): spacing
	change.

	* event-Xt.c:
	* event-msw.c:
	* event-stream.c:
	* events-mod.h:
	* events.c:
	* events.h:
	* frame-x.c:
	* gpmevent.c:
	* keymap.c:
	Eliminate events-mod.h and combine into events.h.

	* emacs.c:
	* emacs.c (make_arg_list_1):
	* emacs.c (main_1):
	A couple of char->Extbyte changes, add a comment.

	* glyphs-msw.c (mswindows_resource_instantiate):
	* glyphs-msw.c (mswindows_xface_instantiate):
	* glyphs-msw.c (mswindows_subwindow_instantiate):
	* glyphs-msw.c (mswindows_widget_instantiate):
	* glyphs-msw.c (mswindows_native_layout_instantiate):
	* glyphs-msw.c (mswindows_button_instantiate):
	* glyphs-msw.c (mswindows_edit_field_instantiate):
	* glyphs-msw.c (mswindows_progress_gauge_instantiate):
	* glyphs-msw.c (mswindows_tree_view_instantiate):
	* glyphs-msw.c (mswindows_tab_control_instantiate):
	* glyphs-msw.c (mswindows_label_instantiate):
	* glyphs-msw.c (mswindows_scrollbar_instantiate):
	* glyphs-msw.c (mswindows_combo_box_instantiate):
	Correct indentation of function defns to not exceed 80 cols.
	Try (sort of) to fix some code that sets the colors of the
	progress gauge. (Commented out)

	* keymap.c (syms_of_keymap):
	use DEFSYMBOL.

	* process.c (read_process_output):
	No need to fiddle with zmacs_region_stays, now that bogus
	clearing of it (see below) is removed.

	* search.c (Freplace_match): warning fix.


2001-05-03  Martin Buchholz  <martin@xemacs.org>

	* s/aix4.h: Fix crash with xlc -O3.
	Improve comment explaining how -O3 works.

2001-05-02  Jerry James <james@xemacs.org>

	* faces.h (SET_FACE_PROPERTY): pass parameters to
	Fadd_spec_to_specifier in the correct order.

2001-05-01  Martin Buchholz  <martin@xemacs.org>

	Fix link error with gcc 3.0 on Linux.
	* terminfo.c (UP): Remove.
	* terminfo.c (BC): Remove.
	* terminfo.c (PC): Remove.
	They weren't used, and in any case, these symbols should be
	defined in the *library*.

2001-04-30  Martin Buchholz  <martin@xemacs.org>

	Make string hashing more efficient.
	Makes intern much faster.
	Makes hash tables containing strings faster.
	* symbols.c (hash_string): A much better hash function.
	Change prototype to return unsigned value.
	(init_symbols_once_early): Use unsigned type for hash value.
	(oblookup): Use unsigned type for hash value.

2001-04-04  Martin Buchholz  <martin@xemacs.org>

	* keymap.c (Fmap_keymap): Revert to previous implementation, since
	elisp_maphash is now safe.

	* elhash.c: Remove erroneously added comment.
	* elhash.c (copy_compress_hentries): New.
	(Fmaphash): Use copy_compress_hentries.
	(elisp_maphash): Use copy_compress_hentries.
	(elisp_map_remhash): Use copy_compress_hentries.
	(elisp_maphash_unsafe): New.
	* elhash.h: Add prototype for elisp_maphash_unsafe.

	* elhash.c (Fmaphash):
	Avoid crashes/unpredictable behavior if a hash table is modified
	during a mapping function, perhaps indirectly via gc.
	(free_hentries): New.
	Avoid crash if a pdumped hash table is collected.
	(maphash_unwind): New.

	* tests.c: Add C-level hash table tests.

2001-04-28  Ben Wing  <ben@xemacs.org>

	* buffer.c (Ferase_buffer):
	* editfns.c (buffer_insert1):
	* editfns.c (Finsert_before_markers):
	* editfns.c (Finsert_string):
	* editfns.c (Finsert_char):
	* editfns.c (Fdelete_region):
	* editfns.c (Fwiden):
	* editfns.c (Fnarrow_to_region):
	remove bogus lines setting zmacs_region_stays to 0.

	* scrollbar-msw.c (mswindows_handle_mousewheel_event):
	remove debug lines.

2001-03-08  Mike Alexander  <mta@arbortext.com>

	* event-msw.c (mswindows_need_event_in_modal_loop):
	Don't dispatch a message if we didn't get one.
	(mswindows_need_event):
	Terminate the correct process when one exits instead of the first
	one on Vprocess_list and look for process termination when in
	mswindows_protect_modal_loop.

2001-04-20  Ben Wing  <ben@xemacs.org>

	* .cvsignore: Added stuff for Windows.

2001-04-15  Ben Wing  <ben@xemacs.org>

	* cmdloop.c (call_command_loop):
	Fix braino in bit-rotting code.

	* event-stream.c:
	* event-stream.c (Fnext_event):
	* event-stream.c (is_scrollbar_event):
	* event-stream.c (execute_command_event):
	Better fix for Yoshiki's `C-x @ h <scrollbar-drag> x causes a
	crash' problem.  His fix introduces other problems.  We filter
	out scrollbar events specifically, making them somewhat invisible
	to command-building, and not appearing in `this-command-keys'.
	More work is still needed (see comments in event-stream.c), but
	this fixes all the major problems.

2001-04-15  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* process-unix.c (unix_open_network_stream): If connect() fails
	invalidate file descriptor after closing it.

2001-04-18  Martin Buchholz  <martin@xemacs.org>

	* XEmacs 21.5.0 "alfalfa" is released.

2001-03-31  Mike Sperber <mike@xemacs.org>

	* search.c (Freplace_match): [Again] support FSF-style
	specification of match subexpression when applied to a buffer.

2001-04-07  Hrvoje Niksic  <hniksic@arsdigita.com>

	* extents.c (Fset_extent_endpoints): Force creation of extent info
	in buffer_or_string.

2001-04-07  Hrvoje Niksic  <hniksic@arsdigita.com>

	* extents.c (process_extents_for_insertion_mapper): Correctly
	check for open-open zero-length extents.

2001-04-02  Jan Vroonhof  <jan@xemacs.org>

	* redisplay.c (add_bufbyte_string_runes): Update data->bytepos

2001-04-03  Mike Sperber <mike@xemacs.org>

	* search.c: Revert previous patch due because of release.

2001-03-30  Ben Wing  <ben@xemacs.org>

	* s\cygwin32.h:
	Add missing killpg prototype.

	* elhash.c:
	Add a comment about fixing problems when a new entry is added
	while mapping.

	* frame-msw.c (mswindows_init_frame_1):
	Fix compile warnings.

	* menubar.c (vars_of_menubar):
	Provide `menu-accelerator-support' to indicate that we Properly
	support %_ in menu specifications, so that package code can
	conditionalize on this (and remove %_ from menu specifications
	on older versions).

	* event-msw.c:
	* scrollbar-msw.c:
	* scrollbar-msw.c (can_scroll):
	* scrollbar-msw.h:
	Fix handling of mouse wheel under Windows to follow standards --
	now scrolls window under pointer, not selected window.

2001-03-31  Mike Sperber <mike@xemacs.org>

	* search.c (Freplace_match): Support FSF-style specification of
	match subexpression when applied to a buffer.

2001-03-15  Martin Buchholz  <martin@xemacs.org>

	* keymap.c (Fmap_keymap): map-keymap explicitly allows a mapping
	function to modify KEYMAP, so map over a copy of the hash table.

2001-03-21  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.46 "Urania" is released.

2001-03-20  Dan Holmsand  <dan@eyebee.com>

	* realpath.c (xrealpath): Make file-truename work with symlinks to
	/cygdrive paths on cygwin. Always lowercase drive-letters on
	native windows.
	(cygwin_readlink): Don't try to find canonical filename unless
	file exists.

2001-03-15  Stephen J. Turnbull  <stephen@xemacs.org>

	* ChangeLog: Log GTK merge.

	* dumper.c:
	* select-x.c:
	* specifier.c:
	* symeval.h:
	Revert gratuitous whitespace changes from GTK merge.

	* emacs.c: Document end of complex #ifdef @ l. 1495.


2001-03-12  Andy Piper  <andy@xemacs.org>

	* mingw32.h: unfortunately cygnus changed mingw32 -> mingw so we
	have to do likewise.

2001-03-12  Andy Piper  <andy@xemacs.org>

	* sysdep.c: we only support mingw now.

2001-03-09  Andy Piper  <andy@xemacs.org>

	* unexcw.c (copy_executable_and_dump_data_section): making approx
	overrun a warning only.

2001-03-10  William M. Perry  <wmperry@aventail.com>

	* faces.c (complex_vars_of_faces): Rewrote the font mucking to
	satisfy Stephen's identical-after-cpp plea.

2001-03-02  Ben Wing  <ben@xemacs.org>

	* cmds.c:
	* cmds.c (Fforward_char):
	* syntax.c:
	* window.c:

	Augment documentation of the most common motion commands to make
	note of the shifted-motion support.

2001-03-02  Ben Wing  <ben@xemacs.org>

	* nt.c (mswindows_fstat):
	* nt.c (mswindows_stat):
	* search.c (boyer_moore):
	Fix compile warnings under Windows.

	* sysdep.c (sys_readdir):
	Fix buggy filename-conversion code under Mule.

2001-03-09  William M. Perry  <wmperry@aventail.com>

	* Makefile.in.in:
	* config.h.in:
	* console.c:
	* console.h:
	* device.c:
	* device.h:
	* dragdrop.c:
	* emacs.c:
	* event-stream.c:
	* events.c:
	* events.h:
	* faces.c:
	* frame.h:
	* general-slots.h:
	* glyphs.c:
	* gutter.c:
	* inline.c:
	* lisp.h:
	* lrecord.h:
	* make-src-depend:
	* redisplay-output.c:
	* redisplay.c:
	* symsinit.h:
	* sysfile.h:
	* toolbar.c:
	* window.c:
	The Great GTK Merge.

	* ChangeLog.GTK:
	* console-gtk.c:
	* console-gtk.h:
	* device-gtk.c:
	* emacs-marshals.c:
	* emacs-widget-accessors.c:
	* event-gtk.c:
	* frame-gtk.c:
	* gccache-gtk.c:
	* gccache-gtk.h:
	* glade.c:
	* glyphs-gtk.c:
	* glyphs-gtk.h:
	* gtk-glue.c:
	* gtk-xemacs.c:
	* gtk-xemacs.h:
	* gui-gtk.c:
	* gui-gtk.h:
	* menubar-gtk.c:
	* native-gtk-toolbar.c:
	* objects-gtk.c:
	* objects-gtk.h:
	* redisplay-gtk.c:
	* scrollbar-gtk.c:
	* scrollbar-gtk.h:
	* select-gtk.c:
	* toolbar-gtk.c:
	* ui-byhand.c:
	* ui-gtk.c:
	* ui-gtk.h:
	The Great GTK Merge: new files.

2001-02-26  Ben Wing  <ben@xemacs.org>

	Reapplied Lstream change.

2001-02-26  Ben Wing  <ben@xemacs.org>

	Undid the last change, since it is more controversial than I
	thought.  It should be back in at some point soon.

2001-02-25  Ben Wing  <ben@xemacs.org>

	* buffer.c:
	* callproc.c (Fold_call_process_internal):
	* event-msw.c (ntpipe_slurp_reader):
	* event-msw.c (ntpipe_shove_writer):
	* event-msw.c (winsock_reader):
	* event-msw.c (winsock_writer):
	* file-coding.c:
	* file-coding.c (detect_eol_type):
	* file-coding.c (detect_coding_type):
	* file-coding.c (determine_real_coding_system):
	* file-coding.c (Fdetect_coding_region):
	* file-coding.c (decoding_reader):
	* file-coding.c (decoding_writer):
	* file-coding.c (mule_decode):
	* file-coding.c (Fdecode_coding_region):
	* file-coding.c (encoding_reader):
	* file-coding.c (encoding_writer):
	* file-coding.c (mule_encode):
	* file-coding.c (Fencode_coding_region):
	* file-coding.c (detect_coding_sjis):
	* file-coding.c (decode_coding_sjis):
	* file-coding.c (encode_coding_sjis):
	* file-coding.c (detect_coding_big5):
	* file-coding.c (decode_coding_big5):
	* file-coding.c (encode_coding_big5):
	* file-coding.c (detect_coding_ucs4):
	* file-coding.c (decode_coding_ucs4):
	* file-coding.c (encode_coding_ucs4):
	* file-coding.c (detect_coding_utf8):
	* file-coding.c (decode_coding_utf8):
	* file-coding.c (encode_coding_utf8):
	* file-coding.c (detect_coding_iso2022):
	* file-coding.c (decode_coding_iso2022):
	* file-coding.c (encode_coding_iso2022):
	* file-coding.c (decode_coding_no_conversion):
	* file-coding.c (encode_coding_no_conversion):
	* glyphs-x.c (write_lisp_string_to_temp_file):
	* gpmevent.c (tty_get_foreign_selection):
	* lisp.h:
	* lstream.c:
	* lstream.c (Lstream_flush_out):
	* lstream.c (Lstream_adding):
	* lstream.c (Lstream_write_1):
	* lstream.c (Lstream_write):
	* lstream.c (Lstream_raw_read):
	* lstream.c (Lstream_read_more):
	* lstream.c (Lstream_read):
	* lstream.c (Lstream_unread):
	* lstream.c (Lstream_fputc):
	* lstream.c (stdio_reader):
	* lstream.c (stdio_writer):
	* lstream.c (filedesc_reader):
	* lstream.c (filedesc_writer):
	* lstream.c (lisp_string_reader):
	* lstream.c (struct fixed_buffer_stream):
	* lstream.c (make_fixed_buffer_input_stream):
	* lstream.c (make_fixed_buffer_output_stream):
	* lstream.c (fixed_buffer_reader):
	* lstream.c (fixed_buffer_writer):
	* lstream.c (struct resizing_buffer_stream):
	* lstream.c (resizing_buffer_writer):
	* lstream.c (dynarr_writer):
	* lstream.c (lisp_buffer_reader):
	* lstream.c (lisp_buffer_writer):
	* lstream.h:
	* lstream.h (lstream_implementation):
	* lstream.h (struct lstream):
	* md5.c (Fmd5):
	* process-nt.c (nt_send_process):
	* process-unix.c (unix_send_process):

	Correct Lstream lossage due to mixing of signed and unsigned
	quantities.  All Lstream uses of size_t and ssize_t are now a
	single signed data type Lstream_data_count.  This fixes problems
	under Windows with sending large quantities of data to a process,
	and may well fix other subtle bugs.

2001-02-23  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.45 "Thelxepeia" is released.

2001-02-21  Martin Buchholz  <martin@xemacs.org>

	* lisp-union.h (XSETINT):
	(XSETCHAR):
	(XSETOBJ):
	Reverse previous change of 2001-02-06.

2001-02-20  Matt Tucker  <tuck@whistlingfish.net>

	Fix `VALID_BYTIND_P' crashes in regex.c when using narrowed
	buffers.
	* syntax.h (SYNTAX_CACHE_BYTE_TO_CHAR):
	* syntax.h (SYNTAX_CACHE_OBJECT_BYTE_TO_CHAR):
	Add `BI_BUF_BEGV' to bytepos before calculating bufpos.
	* regex.c (POS_AS_IN_BUFFER): removed
	* regex.c (re_search_2):
	* regex.c (re_match_2):
	Don't use an offset of 1 when calculating buffer positions, since
	`BI_BUF_BEGV' does it already.

2001-02-18  Wim Dumon  <wim@easics.be>

	* insdel.c (prepare_to_modify_buffer): Also check for
	supersession when clash-detection is enabled.

2001-02-17  Matt Tucker  <tuck@whistlingfish.net>

	* regex.c (re_match_2_internal):
	Convert temp characters from 'const unsigned char' to 're_char'.
	Fix crashing bug with extended characters under mule.
	* syntax.c (Qsyntax_table): Moved from vars_of_syntax to
	syms_of_syntax. Use defsymbol to define. Fixes hanging bug with
	font-lock, pdump, and new syntax-table code.
	* syntax.c (find_start_of_comment):
	(find_end_of_comment):
	(forward-comment):
	Fix crashing bugs involving moving beyond end of buffer.
	* syntax.c (find_start_of_comment):
	Fixed logic to allow proper detection of cases where the same
	character is used to end both a two-char comment start and a
	two-char comment end sequence. Fixes `(forward-comment -1)'.
	* syntax.c (find_start_of_comment):
	Return position just past last comment-end character for all cases
	(previously was only done for two-char comment-end sequences).
	* syntax.c (forward-comment):
	Take value returned from `find_end_of_comment', rather than
	incrementing it.
	* syntax.h (SYNTAX_CACHE_BYTE_TO_CHAR):
	Properly deal with BUFFERP (syntax_cache.object)

2001-02-17  Martin Buchholz  <martin@xemacs.org>

	* alloc.c (Fgarbage_collect):
	* alloc.c (make_bit_vector_from_byte_vector):
	-Wsign-compare-correctness.

2001-02-16  Martin Buchholz  <martin@xemacs.org>

	* lisp-union.h (XSETINT): Eliminate unnecessary temp var.
	(XSETCHAR): Likewise.
	(XSETOBJ): Likewise.

2001-02-15  Martin Buchholz  <martin@xemacs.org>

	* mule-canna.c (canna-func-delete_previous):
	Rename to canna-func-delete-previous.

2001-02-14  Martin Buchholz  <martin@xemacs.org>

	* mule-ccl.c (ccl_driver): Warning suppression.  Use countof.

2001-02-13  Matt Tucker  <tuck@whistlingfish.net>

	* font-lock.c (find_context): Fix C++ compile errors introduced by
	recent patch

2001-02-13  Martin Buchholz  <martin@xemacs.org>

	* s/aix4.h: Later versions of IBM C compiler need a bug workaround
	pragma, but earlier ones barf on the same pragma.

2001-02-06  Mike Sperber <mike@xemacs.org>

	* emacs.c (complex_vars_of_emacs): Add `mule-lisp-directory' and
	`configure-mule-lisp-directory'.

2001-02-12  Martin Buchholz  <martin@xemacs.org>

	Make sure dump-id.c is compiled in the same way as other .c's.
	Fixes pdump compilation failure with HP's cc, which defaults to K&R.
	* dump-id.h: Remove.
	* emacs.c: Move dump-id.h into dumper.h.
	* dumper.h: Move dump-id.h into dumper.h.
	* Makefile.in.in:
	Use standard .c.o rule for building dump-id.o.
	Remove preprocessor flags from link command.
	Add dump-id.o to ${otherobjs} if PDUMP.

2001-02-07  Matt Tucker  <tuck@whistlingfish.net>

	Port FSF 20.7 syntax table improvements.
	* syntax.c.
	* syntax.h.

	Fixups for new syntax table stuff.
	* dired.c: Include syntax.c.
	(Fdirectory_files): Initialize regex_match_object and
	regex_emacs_buffer.
	* extents.h: EXFUN Fnext_extent_change, Fprevious_extent_change,
	and Fget_char_property.

	Use ported FSF 20.7 syntax table improvements.
	* font-lock.c.
	* regex.c.
	* search.c.

2001-02-09  Martin Buchholz  <martin@xemacs.org>

	* regex.c (Boolean): Renamed to `re_bool', to avoid conflict with
	Unixware's enum boolean from sys/types.h.

2001-02-10  Martin Buchholz  <martin@xemacs.org>

	Fix support for building with latest Purify.
	* Makefile.in.in (PURIFY_LIBS): Remove thread flags.
	(PURIFY_FLAGS): Likewise.

2001-02-09  Martin Buchholz  <martin@xemacs.org>

	* fileio.c (lisp_string_set_file_times): New.
	* fileio.c (Fcopy_file): Use it.
	Fixes bug:
	(copy-file filename non-ascii-filename t t)
	==> No such file or directory, non-ascii-filename

2001-02-10  Martin Buchholz  <martin@xemacs.org>

	* glyphs-x.c (generate_cursor_fg_bg): Avoid a warning.
	USHRT_MAX seems clearer than ~0 anyways.

2001-02-09  Martin Buchholz  <martin@xemacs.org>

	dumper improvements.  Inspired by Olivier.
	* dumper.c (pdump_max_align): New.
	* dumper.c (pdump_add_entry): Use pdump_max_align.
	* dumper.c (pdump_get_entry_list): Likewise.
	* dumper.c (pdump_scan_by_alignment): Likewise.
	Don't iterate through unnecessary alignments.
	* dumper.c (pdump_file_get): No need to align result of malloc().
	* dumper.c (pdump_mallocadr): Remove.
	The result of malloc() is guaranteed to be maximally aligned.
	* dumper.c: s/elmt/elt/g;
	* dumper.c (pdump_object_table): Allocate dynamically, not statically.
	* dumper.c (pdump_alert_undump_object): Likewise.
	* dumper.c (pdump_align_table):
	Don't support alignments > 64.
	Store ALIGNOF's, not shift counts, in table.

2001-02-09  Martin Buchholz  <martin@xemacs.org>

	* s/mingw32.h (HAVE_STRUCT_UTIMBUF): Remove.
	* s/windowsnt.h (HAVE_STRUCT_UTIMBUF): Remove.
	* systime.h: Use HAVE_UTIME.
	* sysdep.c (struct utimbuf): Remove.
	* sysdep.c (set_file_times): Prefer utime() to utimes().
	* config.h.in (HAVE_UTIME): New.
	* config.h.in (HAVE_UTIME_H): Remove.
	* config.h.in (HAVE_STRUCT_UTIMBUF): Remove.

2001-02-09  Martin Buchholz  <martin@xemacs.org>

	* s/aix4.h: Hide #pragmas inside #ifndef NOT_C_CODE.

2001-02-08  Martin Buchholz  <martin@xemacs.org>

	* s/irix6-0.h: Use the standard system memmove, not bcopy.

2001-02-08  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.44 "Thalia" is released.

2001-02-06  Martin Buchholz  <martin@xemacs.org>

	Fixes crashes in kill-emacs on some systems.
	* process-unix.c (unix_kill_child_process):
	It's OK for kill() to fail with ESRCH.

2001-02-07  Martin Buchholz  <martin@xemacs.org>

	Contortions to make .gdbinit tricks work on most systems.
	* alloc.c (dbg_inhibit_dbg_symbol_deletion): Keep debugger info.
	* alloc.c (dbg_valmask): Make non-const.
	* alloc.c (dbg_typemask): Make non-const.
	* alloc.c (dbg_USE_UNION_TYPE): Make non-const.
	* alloc.c (dbg_valbits): Make non-const.
	* alloc.c (dbg_gctypebits): Make non-const.
	* .gdbinit (decode_object): Make it work with AIX cc.

2001-02-06  Martin Buchholz  <martin@xemacs.org>

	* elhash.c (make_general_lisp_hash_table):
	Use simpler and more efficient calloc to clear entries.

2001-02-07  Martin Buchholz  <martin@xemacs.org>

	* window.c (window_scroll): Work around an AIX C compiler bug.
	Fixes 'scroll-up' does nothing problem with xlC.

2001-02-05  Martin Buchholz  <martin@xemacs.org>

	* .gdbinit: Remove obsolete comment.

2001-01-31  Mike Alexander  <mta@arbortext.com>

	* select.c (Fown_selection_internal): Set owned_p for device
	method correctly.

2001-02-01  Martin Buchholz  <martin@xemacs.org>

	Port to g++ 2.97.
	"not" cannot be used as a macro name as it is an operator in C++
	* config.h.in: Stop #defining `not'.
	* chartab.c (check_category_char): not ==> not_p
	* chartab.h: Likewise.
	* regex.c (re_match_2_internal): Likewise.

2001-02-02  Martin Buchholz  <martin@xemacs.org>

	* lisp-disunion.h: Fix up comments.

2001-01-31  Martin Buchholz  <martin@xemacs.org>

	* keymap.c (define_key_check_and_coerce_keysym):
	(syms_of_keymap):
	Support mouse-6 and mouse-7 bindings in the obvious way.

2001-02-01  Martin Buchholz  <martin@xemacs.org>

	* m/hp9000s300.h (UNEXEC): Check for HPUX, not !BSD.

2001-01-30  Martin Buchholz  <martin@xemacs.org>

	Previous patch changing DEFVAR_INT to use EMACS_INT was incomplete.
	Previous patch missed DEFVAR_INT_MAGIC.
	Make sure future DEFVAR_foo use correct types.
	* symeval.h (DEFVAR_SYMVAL_FWD_FIXNUM): New.
	* (DEFVAR_SYMVAL_FWD_INT): Add type checking.
	* (DEFVAR_SYMVAL_FWD_OBJECT): Add type checking.
	* (DEFVAR_INT_MAGIC): Use DEFVAR_SYMVAL_FWD_FIXNUM.
	* (DEFVAR_INT): Likewise.
	* redisplay.c (vertical_clip): Should be of type Fixnum.
	* redisplay.c (horizontal_clip): Likewise.
	* lisp.h (dump_add_opaque_int): New.
	(dump_add_opaque_fixnum): New.

2001-01-29  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (check_valid_int_or_function): allow symbols
	since they can be eval'ed

2001-01-29  Martin Buchholz  <martin@xemacs.org>

	* lisp.h (ALIGNOF): Make it work on non-gcc C++ compilers.
	Oops, XEmacs redefines `class'.  Use `typename' instead.

2001-01-28  Martin Buchholz  <martin@xemacs.org>

	* dumper.c: Fix C++ compile errors.

2001-01-29  Martin Buchholz  <martin@xemacs.org>

	* tparam.c: Use correct prototypes.

2001-01-28  Martin Buchholz  <martin@xemacs.org>

	* sysproc.h: #include util.h for NetBSD's openpty.

2001-01-27  Martin Buchholz  <martin@xemacs.org>

	More 64-bit correctness.
	The C value of a DEFVAR_INT should be of type EMACS_INT, not int.
	Use a typedef `fixnum' for the type used for DEFVAR_INT.
	Fix up comments.
	This finally finishes the 64-bit SGI port.
	Fixes things like (let ((gc-cons-threshold most-positive-fixnum)) ...).
	* symbols.c: Fix up comments and type casts.
	* symbols.c (do_symval_forwarding): s/int/Fixnum/g
	* symbols.c (store_symval_forwarding): s/int/Fixnum/g
	* symeval.h (Fixnum): New type.
	* symeval.h (symbol_value_type): Fix up comment.

	* commands.h:
	* nt.c:
	* emacs.c:
	* data.c:
	* redisplay.c:
	* abbrev.c:
	* dired-msw.c:
	* event-Xt.c:
	* eldap.c:
	* window.c:
	* sound.c:
	* event-stream.c:
	* eval.c:
	* buffer.c:
	* mule-canna.c: A million DEFVAR_INTs here...
	* mule-canna.c (count_char): s/int */Fixnum */g in arglist.
	* extents.c:
	* cmdloop.c:
	* lisp.h:
	* select-x.c:
	* console-x.h:
	* event-msw.c:
	* mule-wnnfns.c:
	* hpplay.c:
	* ralloc.c:
	* alloc.c:
	* keymap.c:
	* profile.c:
	s/int/Fixnum/g in DEFVAR_INT declarations.

2001-01-26  Martin Buchholz  <martin@xemacs.org>

	Port pdump to SGI alignment-sensitive environment.
	Lisp Object sizeof methods now return aligned sizes.  Rely on that.
	Eliminate is_lrecord since Lisp_Objects sizeof methods are now all
	properly aligned.
	Define and use aligned reading and writing macros.
	Use buffered stdio instead of posix i/o for faster dumping.
	Eliminate kludgy 256 byte space for header.
	Read and write from dump file using structs for alignment safety.
	* dumper.c (pdump_align_stream): New.
	* dumper.c (PDUMP_ALIGN_OUTPUT): New.
	* dumper.c (PDUMP_READ_ALIGNED): New.
	* dumper.c (PDUMP_WRITE_ALIGNED): New.
	* dumper.c (pdump_static_Lisp_Object): New struct.
	* dumper.c (pdump_static_pointer): New struct.
	* dumper.c (pdump_entry_list_element): Remove is_lrecord member.
	* dumper.c (pdump_add_entry): Remove is_lrecord parameter.
	* dumper.c (pdump_dump_data): Rely on sizeof method alignment.
	* dumper.c (pdump_allocate_offset): Rely on sizeof method alignment.

	* dumper.c (pdump_backtrace):
	* dumper.c (pdump_get_indirect_count):
	* dumper.c (pdump_register_object):
	* dumper.c (pdump_register_struct):
	* dumper.c (pdump_reloc_one):
	* dumper.c (pdump_scan_by_alignment):
	* dumper.c (pdump_dump_from_root_struct_ptrs):
	* dumper.c (pdump_dump_opaques):
	* dumper.c (pdump_dump_rtables):
	* dumper.c (pdump_dump_from_root_objects):
	* dumper.c (pdump):
	* dumper.c (pdump_load_finish):
	Use aligned reading and writing.

	* dumper.c (pdump_free): Make static.
	* dumper.c (pdump_hFile): Likewise.
	* dumper.c (pdump_hMap): Likewise.

2001-01-26  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.43 "Terspichore" is released.

2001-01-25  Martin Buchholz  <martin@xemacs.org>

	Type fiddling for window_config.saved_windows_count
	* window.c (struct window_config):
	Make saved_windows_count member unsigned.
	* window.c (sizeof_window_config_for_n_windows):
	Make parameter unsigned.
	* window.c (mark_window_config):
	* window.c (window_config_equal):
	* window.c (free_window_configuration):
	* window.c (Fset_window_configuration):
	* window.c (count_windows):
	* window.c (Fcurrent_window_configuration):
	* window.c (reinit_vars_of_window):
	Update all callers and users.

2001-01-25  Martin Buchholz  <martin@xemacs.org>

	Alignment correctness for flexible arrays.
	* lisp.h (FLEXIBLE_ARRAY_STRUCT_SIZEOF):
	Make alignment-correct. Add interesting comments.
	* alloc.c (size_vector):
	* alloc.c (make_vector_internal):
	* alloc.c (make_bit_vector_internal):
	* alloc.c (sweep_bit_vectors_1):
	* fns.c (size_bit_vector):
	Update all callers of FLEXIBLE_ARRAY_STRUCT_SIZEOF to add new arg.
	* window.c (sizeof_window_config_for_n_windows):
	Use FLEXIBLE_ARRAY_STRUCT_SIZEOF.

2001-01-24  Martin Buchholz  <martin@xemacs.org>

	* lread.c (read1): Rename `fexp', which is #defined in SGI's math.h

2001-01-23  Andy Piper  <andy@xemacs.org>

	* select.c (Fown_selection_internal): pass owned_p

	* select-msw.c (mswindows_own_selection): New Signature.

	* console.h (struct console_methods): add owned_p to
	_own_selection.

	* select-x.c (x_own_selection): pass owned_p
	(hack_motif_clipboard_selection): use owned_p
	(vars_of_select_x): new variable -
	x_selection_strict_motif_ownership.

2001-01-23  Martin Buchholz  <martin@xemacs.org>

	* specifier.h (specifier_data_offset): Remove pointless parens.
	* glyphs.h (IMAGE_SPECIFIER_DATA): Likewise.

2001-01-24  Martin Buchholz  <martin@xemacs.org>

	Make Lisp_Object sizeof methods be alignment-correct.
	pdump must restore objects to the same alignment as the C compiler
	assumes.  It really matters on SGIs.
	* lstream.c (aligned_sizeof_lstream): New.
	(sizeof_lstream): Use aligned_sizeof_lstream.
	(Lstream_new): Likewise.
	* opaque.c (aligned_sizeof_opaque): New.
	(sizeof_opaque): Use aligned_sizeof_opaque.
	(make_opaque): Likewise.
	* specifier.c (aligned_sizeof_specifier): New.
	(sizeof_specifier): Use aligned_sizeof_specifier.
	(make_specifier_internal): Likewise.

2001-01-23  Martin Buchholz  <martin@xemacs.org>

	* lstream.h (struct lstream): Use max_align_t for trailing data.
	* specifier.h (struct Lisp_Specifier): Likewise.

2001-01-22  Martin Buchholz  <martin@xemacs.org>

	* mule-ccl.c (CCL_Extension): Renamed from CCL_Extention.
	(CCL_SUCCESS): Kludge to prevent Sun cc compiler warnings.
	(CCL_SUSPEND): Likewise.
	(CCL_INVALID_CMD): Likewise.
	(CCL_CALL_FOR_MAP_INSTRUCTION): Likewise.
	(ccl_driver): Likewise.
	(CCL_WRITE_CHAR): Macro hygiene.
	(CCL_WRITE_STRING): Macro hygiene.

2001-01-22  Martin Buchholz  <martin@xemacs.org>

	Port "portable" dumper to SunOS 4 and HP-UX.
	* s/aix4.h (AIX4): Move MAP_FAILED definition elsewhere.
	* emacs.c (main): PDUMP implies no RUN_TIME_REMAP.
	* dumper.c (pdump_file_get): Define MAP_FAILED if not already defined.

2001-01-22  Martin Buchholz  <martin@xemacs.org>

	* lisp.h (ALIGNOF): A better definition for C++.

2001-01-20  Martin Buchholz  <martin@xemacs.org>

	Macro hygiene.
	Fix printf warnings: int format, long int arg.
	* regex.c (DECLARE_DESTINATION): Use DECLARE_NOTHING.
	(PUSH_FAILURE_POINT): Use correct printf formats.
	(POP_FAILURE_POINT): Use correct printf formats.
	Use do {...} while (0)

2001-01-20  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.42 "Poseidon" is released.

2001-01-20  Martin Buchholz  <martin@xemacs.org>

	* console-x.h: typo fix du jour.  Remove #if 0'ed code.

2001-01-19  Martin Buchholz  <martin@xemacs.org>

	De-kludgify FIXED_TYPE free list frobbing.
	Fix crashes on 64-bit platforms introduced by my patch of 2001-01-13.
	* alloc.c (DECLARE_FIXED_TYPE_ALLOC): Use Lisp_Free.
	* alloc.c (ALLOCATE_FIXED_TYPE_1): Use new definitions.
	* alloc.c (Lisp_Free): New pseudo lisp object definition.
	* alloc.c (LRECORD_FREE_P): New.
	* alloc.c (MARK_LRECORD_AS_FREE): New.
	* alloc.c (MARK_LRECORD_AS_NOT_FREE): New.
	* alloc.c (STRUCT_FREE_P): Deleted.
	* alloc.c (MARK_STRUCT_AS_FREE): Deleted.
	* alloc.c (MARK_STRUCT_AS_NOT_FREE): Deleted.
	* alloc.c (STRING_CHARS_FREE_P): New.
	* alloc.c (MARK_STRING_CHARS_AS_FREE): New.
	* alloc.c (PUT_FIXED_TYPE_ON_FREE_LIST): Use new definitions.
	* alloc.c (FREE_FIXED_TYPE): Use new definitions.
	* alloc.c (STRING_CHARS_FREE_P): Use new definitions.
	* alloc.c (resize_string): Use new definitions.
	* alloc.c (SWEEP_FIXED_TYPE_BLOCK): Use new definitions.
	* alloc.c (verify_string_chars_integrity): Use new definitions.
	* alloc.c (compact_string_chars): Use new definitions.
	* alloc.c: Update monster comments.
	* lrecord.h (lrecord_type): Add some new lrecord types for
	alloc.c's use.

2001-01-18  Martin Buchholz  <martin@xemacs.org>

	Improve alignment hackery.
	* lisp.h (ALIGNOF): Better definition for the non-gcc case.
	(max_align_t): Moved from opaque.h - general purpose.
	(ALIGN_PTR): Use size_t, not long.
	* opaque.h (max_align_t): Move to lisp.h.

2001-01-18  Norbert Koch  <nk@LF.net>

	* gui.h: Fix and add prototypes to fix build problems.

2001-01-18  Martin Buchholz  <martin@xemacs.org>

	temacs is going away, so `dump-temacs' is now a bad name.
	* .dbxrc (dump-temacs): Rename to `dmp'.
	* .gdbinit (dump-temacs): Rename to `dmp'.

2001-01-17  Andy Piper  <andy@xemacs.org>

	* glyphs.c (print_image_instance): comment to make martin happy.

	* glyphs-x.c (x_redisplay_widget): update faces after a frame
	change.

	* glyphs-msw.c (mswindows_redisplay_widget): add code to cope with
	activation.
	(mswindows_tab_control_redisplay): warning suppression.

	* glyphs-widget.c (widget_update): re-write to cope with updated
	items.
	(widget_instantiate): use new gui_item functions.
	(tab_control_update): deleted.
	(progress_gauge_update): deleted.
	(image_instantiator_progress_guage): take out update reference.
	(image_instantiator_tree_view): ditto.
	(image_instantiator_tab_control): ditto.

	* gui.c (widget_gui_parse_item_keywords): new function. Do things
	Right the new way.
	(gui_item_add_keyval_pair): re-write to cope with descriptors and
	return whether anything was changed.
	(update_gui_item_keywords): as it sounds.

	* gui.h: declare widget_gui_parse_item_keywords.

	* fns.c (safe_copy_tree): new function taken from Fcopy_tree.
	(Fcopy_tree): use it. Stops infloop death in bogus instantiators.

2001-01-17  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.41 "Polyhymnia" is released.

2001-01-16  Didier Verna  <didier@xemacs.org>

	* glyphs.c (image_instantiate): don't use fallbacks when
	instantiating a face's background pixmap by inheritance.

2001-01-14  Mike Sperber <mike@xemacs.org>

	* sysdep.c (start_of_data): PDUMP implies ORDINARY_LINK.
	Conditionalize accordingly.

2001-01-16  Martin Buchholz  <martin@xemacs.org>

	* dumper.c (pdump_file_get): Fix a compiler warning.

2001-01-15  Martin Buchholz  <martin@xemacs.org>

	Make Purify happy when pdumping.
	* symbols.c (Fmake_variable_buffer_local): Make Purify happy, by
	iniitalizing all bits of new lisp object memory.
	* symbols.c (Fmake_local_variable): Likewise.
	* symbols.c (Fdontusethis_set_symbol_value_handler): Likewise.
	* symbols.c (Fdefvaralias): Likewise.
	* mule-charset.c (vars_of_mule_charset): Likewise.

2001-01-15  Martin Buchholz  <martin@xemacs.org>
	Add the `-nd' flag when running pre-dump operations under the debugger.
	* .dbxrc (run-temacs): Add `-nd'.
	* .dbxrc (update-elc): Likewise.
	* .dbxrc (dump-temacs): Likewise.
	* .gdbinit (run-temacs): Likewise.
	* .gdbinit (check-temacs): Likewise.
	* .gdbinit (update-elc): Likewise.
	* .gdbinit (dump-temacs): Likewise.

2001-01-14  Martin Buchholz  <martin@xemacs.org>

	Allow building 64-bit executables on AIX with GNU malloc, e.g.
	export OBJECT_MODE=64
	configure --pdump --use-union-type=no
	* m/ibmrs6000.h (DATA_START): Define for 64-bit world.
	* gmalloc.c (__default_morecore): Remove pre-ANSI cruft.

	* miscplay.c (sndcnv8U_2mono):
	Avoid two uses of `++' in the same expression.
	Suppresses a GCC warning.

2001-01-13  Martin Buchholz  <martin@xemacs.org>

	Make sure future compilers don't miscompile alloc.c.
	* alloc.c:
	(MARK_STRUCT_AS_FREE): Make aliasing-optimization-resistant.
	(MARK_STRUCT_AS_NOT_FREE): Make aliasing-optimization-resistant.

2001-01-12  Martin Buchholz  <martin@xemacs.org>

	* dumper.c: A little post-pdump-rename comment fixup.

2001-01-09  Jerry James  <james@eecs.ku.edu>

	* lisp-disunion.h: Change LISP_TO_CVOID arg to match its use.

2001-01-13  Martin Buchholz  <martin@xemacs.org>

	* *.[ch]: Globally rename symbols using the following `pdump-rename'
	script:
	#!/bin/sh
	replace_symbol () {
	  (findn texi$; findn [ch]$) | xargs g -lw "$1" | xargs global-replace 's/(?<!_)\b'$1'\b(?!_)/'$2'/g'
	}

	replace_symbol pdump_wire_lists pdump_weak_object_chains
	replace_symbol pdump_wire_list dump_add_weak_object_chain

	replace_symbol pdump_wires pdump_root_objects
	replace_symbol pdump_wire dump_add_root_object

	replace_symbol pdump_dump_wired pdump_dump_from_root_objects
	replace_symbol pdump_dump_structs pdump_dump_from_root_struct_ptrs

	replace_symbol dumpstructinfos pdump_root_struct_ptrs
	replace_symbol dumpstructinfo_dynarr pdump_root_struct_ptr_dynarr
	replace_symbol dumpstructinfo pdump_root_struct_ptr
	replace_symbol dumpstruct dump_add_root_struct_ptr

	replace_symbol dumpopaque dump_add_opaque
	replace_symbol dumpopaqueinfo_dynarr pdump_opaque_dynarr
	replace_symbol dumpopaqueinfos pdump_opaques
	replace_symbol dumpopaqueinfo pdump_opaque

	replace_symbol nb_structdump nb_root_struct_ptrs
	replace_symbol nb_opaquedump nb_opaques

	replace_symbol align_table pdump_align_table
	replace_symbol dump_header pdump_header

	replace_symbol DUMP_SIGNATURE_LEN PDUMP_SIGNATURE_LEN
	replace_symbol DUMP_SIGNATURE PDUMP_SIGNATURE


2001-01-12  Martin Buchholz  <martin@xemacs.org>

	* s/aix4.h: Keep the C for AIX compiler from overaggressively
	optimizing bytecount_to_charcount().

2001-01-06  Golubev I. N.  <gin@mo.msk.ru>

	* config.h.in:
	(HAVE_DLFCN_H): Removed.
	* sysdll.c: Remove HAVE__DLOPEN, HAVE_DLFCN_H.

2001-01-06  Martin Buchholz  <martin@xemacs.org>

	Portable dumper maintainability improvements.
	* alloc.c (staticpro):
	* alloc.c (staticpro_nodump):
	* alloc.c (garbage_collect_1):
	* alloc.c (reinit_alloc_once_early):
	* alloc.c (init_alloc_once_early):
	* alloc.c: Move dumper functions to alloc.c.
	* dumper.c (pdump_backtrace):
	* dumper.c (pdump_dump_structs):
	* dumper.c (pdump_dump_opaques):
	* dumper.c (pdump_dump_rtables):
	* dumper.c (pdump_dump_wired):
	* dumper.c (pdump):
	* dumper.c (pdump_load_check):
	* dumper.c (pdump_load_finish):
	* dumper.c (pdump_file_unmap):
	* dumper.c (pdump_file_get):
	* dumper.c (pdump_resource_free):
	* dumper.c (pdump_resource_get):
	* dumper.c (pdump_file_free):
	* dumper.c (pdump_file_try):
	* dumper.c (pdump_load):
	Remove fixed size limits on staticpro(), staticpro_nodump(),
	dumpopaque(), dumpstruct() by using Dynarrs instead of static C arrays.
	Remove custom code for dumping lrecord_implementations_table - use
	dumpopaque instead.
	Remove (most of the) custom code for dumping staticpros - dump it
	like any other dynarr.

	* alloc.h: Removed.  No longer useful, since dumper now more self-contained.
	* dumper.c: Moved functions from alloc.c.
	* alloc.c (dumpstruct): Moved to dumper.c.
	* alloc.c (dumpopaque): Likewise.
	* alloc.c (pdump_wire): Likewise.
	* alloc.c (pdump_wire_list): Likewise.

	* lisp.h (Dynarr_sizeof): New.
	* lisp.h (Dynarr_begin): New.  Very slightly C++oid.
	* lisp.h (Dynarr_end): New.  Very slightly C++oid.
	* lisp.h (Lisp_Object_ptr_dynarr): New.  For staticpros.

	* lisp.h (dumpstruct): Define to nothing if not PDUMPing.
	* lisp.h (dumpopaque): ditto.
	* lisp.h (pdump_wire): ditto.
	* lisp.h (pdump_wire_list): ditto.

2001-01-09  Martin Buchholz  <martin@xemacs.org>

	* make-src-depend (PrintPatternDeps):
	Use `sort' to make output independent of perl version.

2001-01-08  Martin Buchholz  <martin@xemacs.org>

	Port to Netbsd 1.5.
	* unexelf.c: Remove (never used) bogus Netbsd-specific cruft.
	* s/netbsd.c: Use unexelf.o if __ELF__ is defined.

2001-01-03  Didier Verna  <didier@xemacs.org>

	* event-stream.c (emacs_handle_focus_change_preliminary): ensure
	that `focus_frame' is alive before thinking of calling
	`redisplay_redraw_cursor' on it.

2001-01-08  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.40 is released.

2001-01-06  Golubev I. N.  <gin@mo.msk.ru>

	* regex.c: Replace PREFETCH with REGEX_PREFETCH.

2001-01-06  Martin Buchholz  <martin@xemacs.org>

	* alloc.c (dbg_valmask): Make const.
	* alloc.c (dbg_typemask): Make const.
	* alloc.c (dbg_USE_UNION_TYPE): Make const.
	* alloc.c (dbg_valbits): Make const.
	* alloc.c (dbg_gctypebits): Make const.

2001-01-06  Stephen J. Turnbull  <stephen@xemacs.org>

	* redisplay-x.c (x_bevel_area):
	redisplay.h (struct rune):
	Typo fixes in comments.

2001-01-05  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_redisplay_widget): use size changed for offset
	adjustment.

	* menubar.c (menubar_visible_p_changed): don't mark frame changed.

2001-01-05  Martin Buchholz  <martin@xemacs.org>

	* alloc.c (pure-bytes-used): Remove unused mendacious variable.

	* mule-ccl.c (stack_idx_of_map_multiple):
	Non const global data must not be initialized!
	Found by MIYASHITA Hisashi.

2001-01-02  Andy Piper  <andy@xemacs.org>

	* frame.c (change_frame_size): make sure frame size is always
	marked as changed.

	* glyphs.c (image_instance_layout): minor code reuse.

	* window.c (Fcurrent_window_configuration): revert previous
	change.

2001-01-02  Martin Buchholz  <martin@xemacs.org>

	* glyphs.h:
	* glyphs.c (make_image_instance_cache_hash_table): Use ANSI prototypes.

2000-12-31  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_unmap_subwindow): return focus to enclosing frame
	when widget gets unmapped.

	* event-Xt.c (emacs_Xt_handle_widget_losing_focus): new
	function. Make sure widgets losing focus don't just drop it.
	(handle_focus_event_1): record the widget with focus.

2000-12-31  Andy Piper  <andy@xemacs.org>

	* window.c (allocate_window): use
	make_image_instance_cache_hash_table.
	(make_dummy_parent): ditto.
	(Fset_window_configuration): ditto.

	* glyphs.h (INSTANTIATOR_TYPE): new macro.  declare new functions.

	* glyphs.c (process_image_string_instantiator): use
	INSTANTIATOR_TYPE.
	(get_image_instantiator_governing_domain): ditto.
	(normalize_image_instantiator): ditto.
	(instantiate_image_instantiator): ditto.
	(make_image_instance_1): ditto.
	(image_instantiate): ditto. Key on glyph *and* instantiator type.
	(instantiator_eq_equal): new function for use with instance hash
	tables.
	(instantiator_eq_hash): ditto.
	(make_image_instance_cache_hash_table): create a suitable hash
	table for storing image instances.

	* elhash.h (hash_table_weakness): new internal weakness type
	HASH_TABLE_KEY_CAR_VALUE_WEAK.
	declare new functions.

	* elhash.c (finish_marking_weak_hash_tables): introduce yet
	another weakness type for glyphs.
	(make_standard_lisp_hash_table): new function split out from
	make_general_lisp_hash_table.
	(make_lisp_hash_table): call make_standard_lisp_hash_table.
	(hash_table_instantiate): ditto.
	(Fmake_hash_table): ditto.

2000-12-31  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.39 is released.

2000-12-29  Andy Piper  <andy@xemacs.org>

	* menubar.c (menubar_visible_p_changed): signal the frame changed.

	* glyphs-x.c (x_redisplay_widget): Re-calculate widget offsets if
	the frame has changed so that we pick up geometry changes such as
	menubar visibility.

2000-12-28  Andy Piper  <andy@xemacs.org>

	* lastfile.c (my_ebss): make a char array so we can pad the
	bss. Fixes cygwin unexec.

	* unexcw.c: invert BROKEN_GDB to NO_DEBUG.

2000-12-26  Andy Piper  <andy@xemacs.org>

	* event-Xt.c (emacs_Xt_force_event_pending): add some verbose
	comments and try and be more precise about a non-/SIGIO world.
	(emacs_Xt_event_pending_p): use XtAppPending under cygwin and non
	SIGIO.

	* redisplay-output.c (redisplay_normalize_glyph_area): make sure
	we don't normalize to zero width or height.

2000-12-24  Andy Piper  <andy@xemacs.org>

	* Makefile.in.in (ldflags): add -mwindows when appropriate.

2000-08-18  Golubev I. N.  <gin@mo.msk.ru>

	* s/sco5.h: SCO 5 has pty support.

2000-07-20  Kazuyuki IENAGA <ienaga@xemacs.org>

	* input-method-xlib.c: supports both XIM_XLIB and USE_XFONTSET.
	input-method-xlib.c contains whole contents of input-method-xfs.c,
	so we can use input-method-xlib.c's code for USE_XFONTSET
	using #ifdefs.
	* input-method-xfs.c: removed.

2000-12-20  Stephen Turnbull  <stephen@xemacs.org>

	* file-coding.h (enum coding_category_type): reorder enumerators to
	make autodetection safer.  Make CODING_CATEGORY_LAST an enumerator
	(now one greater than largest real coding_category_type enumerator).
	* file-coding.c (coding_category_symbol, coding_category_by_priority,
	coding_category_system, fcd_descriptihon_1, decode_coding_category,
	Fcoding_category_list, Fset_coding_priority_list,
	Fcoding_priority_list, coding_system_from_mask, Fdetect_coding_region,
	vars_of_file_coding): adjust for change in CODING_CATEGORY_LAST.

2000-12-18  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* redisplay-output.c (redisplay_clear_top_of_window): Remove static.
	* redisplay-output.c (redisplay_output_window): Clear top of window
	when face is changed.
	* redisplay-x.c (x_redraw_exposed_window): Call
	redisplay_clear_top_of_window.
	* redisplay.h: Publish redisplay_clear_top_of_window.

2000-12-18  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* buffer.c (Fkill_buffer): Map over all devices.
	* window.c (window_loop): Remove UNSHOW_BUFFER code.
	(list_windows): New function.
	(list_all_windows): Ditto.
	(Freplace_buffer_in_windows): Use them.

2000-02-02   Daiki Ueno	<ueno@ueda.info.waseda.ac.jp>

	* database.c (berkdb_subtype): Recognize new subtype `queue'.
	(Fopen_database): Use `db_create' instead of `db_open'.
	(syms_of_database): Initialize Qqueue.

2000-12-13  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* buffer.c (common_init_complex_vars_of_buffer): Initialize
	buffer_local_face_property.
	* buffer.h (struct buffer): New member buffer_local_face_property.
	* window.c (Fset_window_buffer):  Mark window's face as changed
	when buffer has buffer local face.
	* window.h (MARK_WINDOW_FACES_CHANGED): New macro.
	* objects.c (color_after_change): Set buffer_local_face_property
	when locale of face specifier is buffer.
	* objects.c (font_after_change): Ditto.
	* objects.c (face_boolean_after_change): Ditto.
	* glyphs.c (image_after_change): Ditto.

2000-12-09  Dan Holmsand  <dan@eyebee.com>

	* nt.c (mswindows_fstat): Report file permissions, volume serial
	number, etc. Code adapted from FSF Emacs 20.7.

2000-12-09  Dan Holmsand  <dan@eyebee.com>

	* sysfile.h (lstat): Make lstat an alias for xemacs_stat instead
	of stat when we don't have symbolic links, to make sure
	mswindows_stat is called on mswindows.

2000-12-12  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* alloca.c: Define malloc to xmalloc only when built with XEmacs.

2000-12-12  Martin Buchholz  <martin@xemacs.org>

	* doprnt.c (emacs_doprnt_1): More printing fixes.
	Make printing of numbers compatible with libc and FSF Emacs.
	BUG was: (format "%6.3f" 1.2) ==>"1.200000"
	Use the system printf to do most of the hard work of formatting,
	instead of doprnt_1().
	Calculate memory to allocate for format string.
	Remove arbitrary limit on precision, e.g. (format "%.1000f" 3.14)
	(doprnt_1): Cleaner code and documentation.

2000-12-01  Jerry James  <james@eecs.ukans.edu>

	* Makefile.in.in: Use the loop variable to install headers.

2000-12-04  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* window.c (Fsplit_window): Don't invalidate face cache.

2000-12-04  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* minibuf.c (Fall_completions): Undo the previous change
	which removed checking elements start with space.

2000-12-06  Stephen Turnbull  <stephen@xemacs.org>

	* mule-canna.c: Didier suppression.

2000-12-06  Stephen Turnbull  <stephen@xemacs.org>

	* mule-canna.c: rename static unsigned char buf[] to key_buffer
	(warning suppression).  Add English comment translations.

2000-12-05  Martin Buchholz  <martin@xemacs.org>

	* unexelfsgi.c (unexec): Better test for mmap failure.

2000-12-05  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.38 is released.

2000-12-05  Martin Buchholz  <martin@xemacs.org>

	* redisplay.c (bar-cursor): Make a user variable.

	* symsinit.h: Add init_postgresql_from_environment.

2000-12-04  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* regex.c: Convert to clean C.

2000-12-05  Dan Holmsand  <dan@eyebee.com>

	* realpath.c:
	Don't #include sysfile.h. Revert to duplicating PATH_MAX
	initialization.
	(sys_readlink): renamed to system_readlink to avoid conflict with
	the other sys_readlink.

2000-12-04  Hiroaki Abe  <h-abe@pc.highway.ne.jp>

	* dumper.c (pdump_file_get): Correct uses of pdump_fd.

2000-12-04  Stephen J. Turnbull  <stephen@xemacs.org>

	* postgresql.c (init_postgresql_from_environment): new function.
	(vars_of_postgresql): Move code initializing Lisp variables out and
	into init_postgresql_from_environment.
	emacs.c (main_1): Call init_postgresql_from_environment if and only
	if running a dumped XEmacs.

2000-08-31  Dan Holmsand  <dan@eyebee.com>

	* buffer.c: Make find-file-compare-truenames default to true on
	windows.

	* realpath.c (win32_abs_start):
	(cygwin_readlink):
	(win32_readlink): New functions.
	(xrealpath): Return really real filenames on windows.

	* fileio.c (Ffile_truename): Make file-truename work on windows.

2000-11-29  Didier Verna  <didier@xemacs.org>

	* faces.c (MAYBE_UNFROB_BACKGROUND_PIXMAP): new macro.
	* faces.c (update_face_cachel_data): use it.
	* faces.c (add_face_cachel): use it. Complete background pixmap
	frobbing in face cache if `update_face_cachel_data' has not done so.

2000-11-29  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* search.c (string_match_1): Don't set last_thing_searched
	when search failed.

2000-11-27  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* buffer.c: Include casetab.h
	(common_init_complex_vars_of_buffer): Use new case-table object.
	* buffer.h: Include casetab.h
	* buffer.h (MAKE_TRT_TABLE): Use generic char-table.
	(DOWNCASE_TABLE_OF): Ditto.
	* bufslots.h: Remove char-tables and add case-table.
	* casetab.c: Include casetab.h
	(CASE_TABLE_P): Removed.
	(mark_case_table): New function.
	(allocate_case_table): New function.
	(Fcase_table_p): Use new case-table.
	(case_table_char): New function.
	(Fget_case_table): Ditto.
	(Fput_case_table): Ditto.
	(Fput_case_table_pair): Ditto.
	(Fcopy_case_table): Ditto.
	(Fcurrent_case_table): Return case-table.
	(Fstandard_case_table): Return case-table.
	(Fset_case_table): Fix doc-string.
	(set_case_table): Use case-table
	(syms_of_casetab): DEFSUBR new functions.
	(complex_vars_of_casetab): Set up standard case-table.
	* casetab.h: New file.
	* editfns.c: Include casetab.h
	(Fcompare_buffer_substrings): Use case-table.
	* inline.c: Include casetab.h
	* lisp.h: Remove bogus extern.
	* lrecord.h (lrecord_type): Add lrecord_type_case_table.
	* search.c: Include casetab.h
	(TRANSLATE_ASCII): Removed.
	(TRANSLATE): Unconditionally translate character.
	(looking_at_1): Use case-table.
	(string_match_1): Ditto.
	(fast_string_match): Ditto.
	(search_command): Ditto.
	(search_buffer): Separate boyer_moore.  Check whether
	boyer_moore is possible.
	(simple_search): New function.
	(boyer_moore): Separated from search_buffer. Translate char.

2000-11-24  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* regex.c (RE_TR_ASCII): Removed.
	(RE_TRANSLATE): Unconditionally use TRT_TABLE.
	(PATFETCH): Call PATFETCH_RAW.
	(PATFETCH_RAW): Fetch Emchar.
	(PATUNFETCH): Decrement charptr.
	(GET_BUFFER_SPACE): Rename b to buf_end.
	(BUF_PUSH): Ditto.
	(BUF_PUSH_2): Ditto.
	(BUF_PUSH_3): Ditto.
	(EXTEND_BUFFER): Ditto.
	(SET_LIST_BIT): Ditto.
	(regex_compile): Ditto.  Translate non ASCII char.
	(compile_range): Ditto.
	(re_search_2): Ditto.
	(re_match_2_internal): Compare Emchar.
	(bcmp_translate): Ditto.

2000-11-29  Stephen J. Turnbull  <turnbull@xemacs.org>

	* lisp.h (basic char/int typedefs):  comment improvement.

2000-11-24  Stephen J. Turnbull  <turnbull@xemacs.org>

	* emacs.c (main_1):  unconditional pdump unstomping; don't save and
	unstomp inhibit_site_lisp.  Improve comments.

2000-11-22  Stephen J. Turnbull  <turnbull@xemacs.org>

	* mule-charset.c (Fcharset_property):  improve type checking, comments.

2000-11-28  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_output_subwindow): make sure we do
	clipped display for windows in the gutter also.
	(redisplay_display_boxes_in_window_p): change semantics of return
	codes to be more intuitive.

	* gutter.h: declare display_boxes_in_gutter_p.

	* gutter.c (display_boxes_in_gutter_p): new function for
	redisplay.

2000-11-22  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (image_instantiator_format_create_glyphs_x): change
	autodetect domain.

2000-11-21  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* callproc.c (Fold_call_process_internal):
	* gpm.c (Freceive_gpm_event):
	(tty_get_foreign_selection): Might be just warning supression.
	* fileio.c (Fwrite_region_internal):
	(Fset_visited_file_modtime):
	* keymap.c (event_matches_key_specifier_p):
	Initialize GCPROed variable.

	* menubar-x.c (command_builder_find_menu_accelerator):
	Initialize before use.

2000-11-23  Andy Piper  <andy@xemacs.org>

	* unexcw.c (unexec): make the resulting executable executable.

2000-11-21  Martin Buchholz  <martin@xemacs.org>

	* doc.c (get_doc_string):
	Use size_t, not int, for result of XSTRING_LENGTH.

	* cmds.c (Fdelete_char):
	* cmds.c (Fpoint_at_eol):
	* cmds.c (Fself_insert_command):
	Use EMACS_INT, not int, for result of XINT.
	Someday, someone will want to insert more than 2**31 identical characters.

	* cmds.c (Fdelete_char):
	* cmds.c (Fdelete_backward_char):
	* syntax.c (Fforward_word):
	* syntax.c (Fforward_comment):
	Make COUNT argument optional, for consistency with forward-char et al.

2000-11-22  Martin Buchholz  <martin@xemacs.org>

	* lisp.h:
	* print.c (long_to_string):
	Return a useful value: the pointer at end of data written.

	* doprnt.c:
	Use `static const char * const' for constant strings.
	(union printf_arg): Delete `i', `ui' members.
	(get_doprnt_args):
	(emacs_doprnt_1):
	Fix LP64 platform bug: (format "%d" most-positive-fixnum) ==> "-1"
	Do all printf-ing via the `l' specifier.
	Use EMACS_INT instead of int.
	Optimize.

2000-11-20  Didier Verna  <didier@xemacs.org>

	* faces.c (update_face_cachel_data): don't frob the background
	pixmap when the window is being created. The face is needed but
	does not exist yet.

2000-11-20  Andy Piper  <andy@xemacs.org>

	* unexcw.c (copy_executable_and_dump_data_section): Only do bss
	messing with a debug environment.

2000-11-20  Martin Buchholz  <martin@xemacs.org>

	* emacs.c (__sti__iflPNGFile_c___): Pedantically correct prototype.

2000-11-20  Martin Buchholz  <martin@xemacs.org>

	* casetab.c (Fcase_table_p): Fix compile error and crash.

2000-11-18  Philip Aston  <philipa@mail.com>

	* s/cygwin32.h: Cygwin has SVR4-like pty support.

2000-11-18  Martin Buchholz  <martin@xemacs.org>

	* fileio.c (Fexpand_file_name): GCPRO bug!  Protect `handler'.
	* filelock.c (lock_file): GCPRO bug! Initialize all GCPROed vars!

2000-11-17  Martin Buchholz  <martin@xemacs.org>

	* config.h.in: Define HAVE_ELF_H if elf.h exists.
	* unexelf.c: Use HAVE_ELF_H.
	* unexelfsgi.c: Fix bug with dumped xemacs stdout/stderr not working.
	I copied FSF Emacs 20.7 unexelf.c to unexelfsgi.c and ANSIfied it.
	Max Matveev <makc@sgi.com> removed non-SGI-relevant parts and tested.
	Greg Harrington <greg_harrington@hotmail.com> provided a machine
	for testing.
	So this is an unexelfsgi.c from a different line of development.

2000-11-16  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* regex.c (RE_TR_ASCII): New function.
	(RE_TRANSLATE): Call it.

2000-11-16  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* buffer.h (TRT_TABLE_OF): Remove assert.
	(IN_TRT_TABLE_DOMAIN): Removed.

2000-11-16  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* free-hook.c (log_gcpro):
	(show_gcprohist): Add support for GCPRO5.

2000-11-08  Stephen J. Turnbull  <stephen@xemacs.org>

	* emacs.c (main_1): Improve -sd error message when --pdump=no.

2000-11-16  Olivier Galibert  <galibert@xemacs.org>

	* symeval.h: Declare flush_all_buffer_local_cache.

	* symbols.c: Change XD_LO_RESET_NIL into XD_LISP_OBJECTs.
	(flush_buffer_local_cache): Added.
	(flush_all_buffer_local_cache): Added.

	* lrecord.h: Remove unused XD_LO_RESET_NIL.

	* dumper.c (pdump_register_sub): Remove unused XD_LO_RESET_NIL.
	(pdump_dump_data): Ditto.
	(pdump_reloc_one): Ditto.
	(pdump): Remove unused pdump_qnil.  Flush buffer local caches
	before dumping.


2000-11-14  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* buffer.c: Remove if 0'ed entry.
	* buffer.h: Rewrite TRT to use char-table.
	* bufslots.h: Remove mirror tables.
	* casetab.c: Remove mirror tables.
	(CASE_TABLE_P): New macro.
	(Fcase_table_p): Element of a case table is string or char-table.
	(make_mirror_trt_table): Removed.
	(set_case_table): Setup char-table from strings for backward
	compatibility.
	* dired.c (Fdirectory_files):
	* dired-msw.c: (mswindows_get_files):
	* lisp.h: Change prototype of re_pattern_buffer.
	* regex.c: (RE_TRANSLATE): New macro.
	(TRANSLATE_P): Ditto.
	Change translate to type RE_TRANSLATE_TYPE.
	* regex.h: Define RE_TRANSLATE_TYPE
	* search.c (TRANSLATE): New macro.
	(TRANSLATE_ASCII): New macro.
	Translate table is changed to Lisp_Object.
	(signal_failure): Inhibit return.

2000-11-14  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* device-msw.c:
	* eldap.c:
	* event-Xt.c:
	* event-stream.c:
	* print.c:
	Do UNGCPRO before return.

2000-11-14  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.37 is released.

2000-11-13  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* fileio.c (Finsert_file_contents_internal): UNGCPRO before return.
	Add comments about discarded return value.

2000-11-09  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* callint.c:
	* event-stream.c: Fix comments.  Remove some #if 0'ed part.

2000-10-27  Andy Piper  <andy@xemacs.org>

	* gutter.c (Fset_default_gutter_position): default left and right
	gutters to visible.
	(calculate_gutter_size): calculate resonable heuristic for left
	and right gutter sizes.
	(specifier_vars_of_gutter): change left and right gutter sizes to
	autodetect.
	(calculate_gutter_size_from_display_lines): new function.
	(output_gutter): check for resizing on left and right gutters.
	(clear_gutter): don't special case top and left gutters.
	(specifier_vars_of_gutter): use new signature for
	set_specifier_caching.

	* glyphs-x.c (x_redisplay_widget): spelling fix.
	* glyphs.c (specifier_vars_of_glyphs):
	* menubar.c (specifier_vars_of_menubar):
	* redisplay.c (specifier_vars_of_redisplay):
	* toolbar.c (specifier_vars_of_toolbar):
	* window.c (specifier_vars_of_window):
	* scrollbar.c (specifier_vars_of_scrollbar):
	(complex_vars_of_scrollbar): use new signature for
	set_specifier_caching.

	* specifier.c (set_specifier_caching): include recompute flag.
	(recompute_one_cached_specifier_in_window): always recompute if
	flag set.
	(recompute_one_cached_specifier_in_frame): ditto.

	* specifier.h (struct specifier_caching): add recompute flag.

2000-10-24  Andy Piper  <andy@xemacs.org>

	* unexcw.c (copy_executable_and_dump_data_section): add new
	BSS_PAD_SIZE so that we can re-instate a mini-bss. This keeps gdb
	5.0 happy.

2000-11-06  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* console-x.h (x_device): New member modifier_release_time.
	* event-Xt.c (x_handle_sticky_modifiers):
	Bound interval modifier keys are sticky.
	* event-stream.c (Vmodifier_keys_sticky_time): New variable.
	* events.h: extern it.

2000-11-06  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* cmdloop.c (Fcommand_loop_1): Just add C-g to event queue.

2000-11-06  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* event-stream.c (execute_command_event): Preserve current_events
	and the like when event is misc-user-event.
	Inhibit quit during the call to maybe_echo_keys.

2000-10-31  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* filelock.c (lock_buffer): Cope with kill-buffer. Don't create a
	symlink when buffer is killed.
	(inhibit_clash_detection): New variable.

2000-10-30  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* console.c (Fset_input_method): Trigger redisplay on tty.

2000-11-07  Martin Buchholz  <martin@xemacs.org>

	* process.c (Fprocess_status): Revert to previous behavior:
	(process-status "nosuchprocess") ==> nil

2000-11-06  Martin Buchholz  <martin@xemacs.org>

	* mule-charset.h (CHARSET_BY_LEADING_BYTE):
	Work around another GCC 2.95.2 optimizer bug.

2000-11-02  Martin Buchholz  <martin@xemacs.org>

	* process.c (Fget_process): Use LIST_LOOP_2.
	(kill_buffer_processes): Use LIST_LOOP_2.

	* minibuf.c (Fall_completions):
	Delete old non-functional code for FSF fourth argument.

	* frame.c (frame_matches_frame_spec):
	Renamed from `frame_matches_frametype'.  Update all callers.
	(device_matches_device_spec):
	Renamed from 'device_matches_console_spec'.  Update all callers.

	* doc.c (Fsubstitute_command_keys):
	Remove buffer overflow crash.  Small code cleanups.

	* casetab.c (check_case_table): Simpler code.

	* window.c (Freplace_buffer_in_windows):
	Give this the same WHICH-FRAMES and WHICH-DEVICES parameters
	(and similar implementation) as Fdelete_windows_on.
	Update all callers.

	* alloc.c (Fmake_list):
	* alloc.c (make_vector):
	* alloc.c (Fmake_vector):
	* alloc.c (make_bit_vector):
	* alloc.c (Fmake_bit_vector):
	* alloc.c (Fbit_vector):
	* alloc.c (Fmake_string):
	* alloc.c (Fpurecopy):
	* alloc.c (Fmemory_limit):
	* buffer.c:
	* buffer.c (Fget_buffer):
	* buffer.c (Fkill_buffer):
	* buffer.c (complex_vars_of_buffer):
	* bytecode.c (Fcompiled_function_stack_depth):
	* callint.c (Fprefix_numeric_value):
	* event-stream.c:
	* event-stream.c (Fread_key_sequence):
	* casetab.c:
	* casetab.c (Fcase_table_p):
	* casetab.c (check_case_table):
	* casetab.c (Fset_case_table):
	* casetab.c (Fset_standard_case_table):
	* chartab.c:
	* chartab.c (Fchar_table_type):
	* chartab.c (Freset_char_table):
	* chartab.c (Fget_char_table):
	* chartab.c (Fget_range_char_table):
	* chartab.c (Fput_char_table):
	* chartab.c (Fmap_char_table):
	* chartab.c (Fcategory_table_p):
	* chartab.c (Fcheck_category_at):
	* chartab.c (Fchar_in_category_p):
	* chartab.c (Fcategory_table):
	* chartab.c (Fcopy_category_table):
	* chartab.c (Fset_category_table):
	* chartab.c (Fcategory_designator_p):
	* chartab.c (Fcategory_table_value_p):
	* cmds.c (Fdelete_char):
	* cmds.c (Fdelete_backward_char):
	* cmds.c (Fself_insert_command):
	* cmds.c (Fself_insert_internal):
	* console.c (Fvalid_console_type_p):
	* console.c (Fcdfw_console):
	* console.c (Fconsole_type):
	* console.c (Fconsole_name):
	* console.c (Fconsole_device_list):
	* console.c (Fconsole_on_window_system_p):
	* data.c:
	* data.c (Feq):
	* data.c (Fold_eq):
	* data.c (Fsubr_interactive):
	* data.c (Fchar_to_int):
	* data.c (Fint_to_char):
	* data.c (Fsetcar):
	* data.c (Fsetcdr):
	* data.c (Fnumber_to_string):
	* data.c (Fstring_to_number):
	* data.c (Frem):
	* database.c (mark_database):
	* database.c (finalize_database):
	* database.c (Fdatabase_live_p):
	* database.c (Fdatabasep):
	* device-x.c (Fx_get_resource):
	* device.c (Fdfw_device):
	* dired.c:
	* dired.c (Ffile_name_completion):
	* dired.c (Ffile_name_all_completions):
	* dired.c (Fuser_name_completion):
	* dired.c (Fuser_name_completion_1):
	* dired.c (Fuser_name_all_completions):
	* doc.c (Fdocumentation):
	* doc.c (Fdocumentation_property):
	* doc.c (Fsubstitute_command_keys):
	* editfns.c:
	* editfns.c (Fchar_to_string):
	* editfns.c (Fstring_to_char):
	* editfns.c (Ftemp_directory):
	* editfns.c (Finsert_char):
	* editfns.c (Fbuffer_substring_no_properties):
	* editfns.c (Fnarrow_to_region):
	* editfns.c (Fchar_equal):
	* editfns.c (Fchar_Equal):
	* editfns.c (Ftranspose_regions):
	* emacs.c (Fdump_emacs):
	* eval.c (Fthrow):
	* eval.c (Fcommand_execute):
	* eval.c (Fautoload):
	* eval.c (Fbacktrace):
	* eval.c (Fbacktrace_frame):
	* events.c:
	* events.c (Fcopy_event):
	* events.c (Fcharacter_to_event):
	* events.c (Fevent_button):
	* events.c (Fevent_process):
	* extents.c:
	* extents.c (Fnext_extent_change):
	* extents.c (Fextent_property):
	* faces.c (Ffacep):
	* faces.c (Fmake_face):
	* file-coding.c:
	* file-coding.c (Fencode_shift_jis_char):
	* file-coding.c (Fencode_big5_char):
	* fileio.c (Ffile_name_directory):
	* fileio.c (Ffile_name_nondirectory):
	* fileio.c (Ffile_name_as_directory):
	* fileio.c (Fdirectory_file_name):
	* fileio.c (Ffile_truename):
	* fileio.c (Fsubstitute_in_file_name):
	* fileio.c (Ffile_modes):
	* fileio.c (Fset_file_modes):
	* fileio.c (Fset_default_file_modes):
	* fileio.c (Fverify_visited_file_modtime):
	* floatfns.c (Facos):
	* floatfns.c (Fasin):
	* floatfns.c (Fatan):
	* floatfns.c (Fcos):
	* floatfns.c (Fsin):
	* floatfns.c (Ftan):
	* floatfns.c (Fbessel_j0):
	* floatfns.c (Fbessel_j1):
	* floatfns.c (Fbessel_jn):
	* floatfns.c (Fbessel_y0):
	* floatfns.c (Fbessel_y1):
	* floatfns.c (Fbessel_yn):
	* floatfns.c (Ferf):
	* floatfns.c (Ferfc):
	* floatfns.c (Flog_gamma):
	* floatfns.c (Fexp):
	* floatfns.c (Fexpt):
	* floatfns.c (Flog):
	* floatfns.c (Flog10):
	* floatfns.c (Fsqrt):
	* floatfns.c (Fcube_root):
	* floatfns.c (Facosh):
	* floatfns.c (Fasinh):
	* floatfns.c (Fatanh):
	* floatfns.c (Fcosh):
	* floatfns.c (Fsinh):
	* floatfns.c (Ftanh):
	* floatfns.c (Fabs):
	* floatfns.c (Ffloat):
	* floatfns.c (Flogb):
	* floatfns.c (Fceiling):
	* floatfns.c (Ffloor):
	* floatfns.c (Fround):
	* floatfns.c (Ftruncate):
	* floatfns.c (Ffceiling):
	* floatfns.c (Fffloor):
	* floatfns.c (Ffround):
	* floatfns.c (Fftruncate):
	* fns.c (Fstring_equal):
	* fns.c (Fstring_lessp):
	* fns.c (concat2):
	* fns.c (concat3):
	* fns.c (vconcat2):
	* fns.c (vconcat3):
	* fns.c (Fsubstring):
	* fns.c (Fassoc):
	* fns.c (Fold_assoc):
	* fns.c (assoc_no_quit):
	* fns.c (Fassq):
	* fns.c (Fold_assq):
	* fns.c (assq_no_quit):
	* fns.c (Frassoc):
	* fns.c (Fold_rassoc):
	* fns.c (Frassq):
	* fns.c (Fold_rassq):
	* fns.c (rassq_no_quit):
	* fns.c (Fremassoc):
	* fns.c (remassoc_no_quit):
	* fns.c (Fremassq):
	* fns.c (remassq_no_quit):
	* fns.c (Fremrassoc):
	* fns.c (Fremrassq):
	* fns.c (remrassq_no_quit):
	* fns.c (Fsort):
	* fns.c (Fplist_get):
	* fns.c (Fplist_put):
	* fns.c (Fplist_remprop):
	* fns.c (Fplist_member):
	* fns.c (Flax_plist_get):
	* fns.c (Flax_plist_put):
	* fns.c (Flax_plist_remprop):
	* fns.c (Flax_plist_member):
	* fns.c (Fequal):
	* fns.c (Fold_equal):
	* fns.c (Frequire):
	* fns.c (Fbase64_encode_region):
	* fns.c (Fbase64_encode_string):
	* fns.c (Fbase64_decode_region):
	* frame.c:
	* frame.c (frame_matches_frame_spec):
	* frame.c (device_matches_device_spec):
	* frame.c (next_frame):
	* frame.c (previous_frame):
	* frame.c (Fnext_frame):
	* frame.c (Fprevious_frame):
	* frame.c (Fframe_property):
	* frame.c (Fset_frame_height):
	* frame.c (Fset_frame_size):
	* frame.h:
	* glyphs.c:
	* glyphs.c (if):
	* glyphs.c (decode_error_behavior_flag):
	* glyphs.c (Fmake_image_instance):
	* indent.c (Findent_to):
	* intl.c (Fignore_defer_gettext):
	* keymap.c (Fkeymapp):
	* keymap.c (Flookup_key):
	* lread.c:
	* lread.c (Fload_internal):
	* lread.c (Feval_buffer):
	* lread.c (Feval_region):
	* macros.c (Fexecute_kbd_macro):
	* marker.c (set_marker_internal):
	* marker.c (Fset_marker):
	* marker.c (set_marker_restricted):
	* marker.c (Fcopy_marker):
	* marker.c (noseeum_copy_marker):
	* menubar.c:
	* menubar.c (Fpopup_menu):
	* minibuf.c:
	* mule-charset.c (Fcharset_name):
	* mule-charset.c (Fchar_charset):
	* mule-charset.c (Fchar_octet):
	* mule-charset.c (Fsplit_char):
	* mule-wnnfns.c (Fwnn_open):
	* mule-wnnfns.c (Fwnn_dict_comment):
	* mule-wnnfns.c (Fwnn_quit_henkan):
	* mule-wnnfns.c (Fwnn_word_toroku):
	* mule-wnnfns.c (Fwnn_word_sakujo):
	* mule-wnnfns.c (Fwnn_word_use):
	* mule-wnnfns.c (Fwnn_hindo_set):
	* objects.c:
	* objects.c (Fmake_color_instance):
	* objects.c (Fmake_font_instance):
	* print.c (Fwrite_char):
	* process.c:
	* process.c (mark_process):
	* process.c (print_process):
	* process.c (get_process_from_usid):
	* process.c (Fprocessp):
	* process.c (Fprocess_live_p):
	* process.c (Fget_process):
	* process.c (Fget_buffer_process):
	* process.c (get_process):
	* process.c (Fprocess_id):
	* process.c (Fprocess_name):
	* process.c (Fprocess_command):
	* process.c (init_process_io_handles):
	* process.c (start_process_unwind):
	* process.c (Fstart_process_internal):
	* process.c (Fopen_multicast_group_internal):
	* process.c (Fset_process_window_size):
	* process.c (read_process_output):
	* process.c (send_process):
	* process.c (Fprocess_tty_name):
	* process.c (Fset_process_buffer):
	* process.c (Fprocess_buffer):
	* process.c (Fprocess_mark):
	* process.c (set_process_filter):
	* process.c (Fset_process_filter):
	* process.c (Fprocess_filter):
	* process.c (Fprocess_send_region):
	* process.c (Fprocess_send_string):
	* process.c (exec_sentinel):
	* process.c (Fset_process_sentinel):
	* process.c (Fprocess_sentinel):
	* process.c (status_notify):
	* process.c (Fprocess_status):
	* process.c (Fprocess_exit_status):
	* process.c (process_send_signal):
	* process.c (Fprocess_send_eof):
	* process.c (deactivate_process):
	* process.c (remove_process):
	* process.c (Fdelete_process):
	* process.c (kill_buffer_processes):
	* process.c (Fprocess_kill_without_query):
	* process.c (Fprocess_kill_without_query_p):
	* rangetab.c:
	* rangetab.c (Fget_range_table):
	* rangetab.c (Fput_range_table):
	* rangetab.c (Fremove_range_table):
	* rangetab.c (Fclear_range_table):
	* search.c:
	* search.c (Fskip_chars_forward):
	* search.c (Fskip_chars_backward):
	* search.c (Fskip_syntax_forward):
	* search.c (Fskip_syntax_backward):
	* search.c (search_command):
	* search.c (Freplace_match):
	* search.c (Fregexp_quote):
	* select.c (Fown_selection_internal):
	* select.c (Fselection_owner_p):
	* select.c (Fselection_exists_p):
	* select.c (Fget_selection_internal):
	* specifier.c:
	* symbols.c:
	* symbols.c (Fintern):
	* symbols.c (Fintern_soft):
	* symbols.c (Funintern):
	* symbols.c (Fapropos_internal):
	* symbols.c (Fset_default):
	* syntax.c:
	* syntax.c (Fsyntax_table_p):
	* syntax.c (Fcopy_syntax_table):
	* syntax.c (Fset_syntax_table):
	* syntax.c (Fchar_syntax):
	* syntax.c (syntax_match):
	* syntax.c (Fmatching_paren):
	* syntax.c (Fforward_word):
	* syntax.c (scan_lists):
	* syntax.c (Fscan_lists):
	* syntax.c (Fscan_sexps):
	* syntax.c (Fparse_partial_sexp):
	* toolbar.c (Fcheck_toolbar_button_syntax):
	* tooltalk.doc:
	* window.c:
	* window.c (Fwindowp):
	* window.c (Fwindow_live_p):
	* window.c (Fwindow_point):
	* window.c (Fdelete_window):
	* window.c (Fnext_window):
	* window.c (Fprevious_window):
	* window.c (Fother_window):
	* window.c (window_loop):
	* window.c (Fget_lru_window):
	* window.c (Fsplit_window):
	* window.c (Fenlarge_window):
	* window.c (Fenlarge_window_pixels):
	* window.c (Fshrink_window):
	* window.c (Fshrink_window_pixels):
	* window.c (change_window_height):
	* window.c (Fwindow_configuration_p):
	* window.c (Fcurrent_window_configuration):
	* window.h:
	* casefiddle.c (casify_object):
	* casefiddle.c (Fupcase):
	* casefiddle.c (Fdowncase):
	* casefiddle.c (Fcapitalize):
	* casefiddle.c (Fupcase_initials):
	* casefiddle.c (casify_region_internal):
	* casefiddle.c (casify_region):
	* casefiddle.c (Fupcase_region):
	* casefiddle.c (Fdowncase_region):
	* casefiddle.c (Fcapitalize_region):
	* casefiddle.c (Fupcase_initials_region):
	* casefiddle.c (Fupcase_word):
	* casefiddle.c (Fdowncase_word):
	* casefiddle.c (Fcapitalize_word):
	Docstring arglist/Texinfo fixes.  See man/ChangeLog for details.
	Replace 0 with '\0' when working with bytes.
	Replace initial "(" with "\(" in docstrings.

2000-11-01  Martin Buchholz  <martin@xemacs.org>

	* config.h.in: Handle alloca with Compaq C on Alpha Linux.

	* m/alpha.h: Let configure handle SYSTEM_MALLOC on Linux.

2000-10-31  Martin Buchholz  <martin@xemacs.org>

	* eldap.c (print_ldap): 64-bit cleaner.  Fixes warning.

2000-10-30  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* doprnt.c (emacs_do_prnt_1): Format (format "%01.2d" 10)
	correctly.

2000-10-30  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* fileio.c (Vauto_save_list_file_prefix): Moved from startup.el.
	(inhibit_auto_save_session): New variable.
	(vars_of_fileio): Declare and initialize them.
	* fileio.c (Fdo_auto_save): Don't create session file if
	Vinhibit_auto_save_session or Vauto_save_list_file_prefix is non-nil.

2000-10-31  Martin Buchholz  <martin@xemacs.org>

	* sgiplay.c (play_internal): C++ compilability.
	* alloc.c (SWEEP_FIXED_TYPE_BLOCK): Remove unused var `SFTB_prev'.
	* callproc.c (Fold_call_process_internal):
	Remove unused vars `env', `first'.
	* scrollbar.c (update_scrollbar_instance):
	#### unused var `current_window'.
	* redisplay-tty.c: Put currently unused vars insert_mode_on,
	etc. within #ifdef NOT_YET.
	* emacs.c: #### unused vars `initial_argc', `initial_argv'.
	* dialog-x.c (dbox_descriptor_to_widget_value): ### unused var `title'.
	* specifier.c (specifier_instance):
	#### unused var `tag'.
	Use WINDOW_BUFFER, FRAME_DEVICE instead of their expansion.

2000-10-27  Martin Buchholz  <martin@xemacs.org>

	* fns.c (Fbutlast):
	* fns.c (list_sort):
	* fns.c (Ffillarray):
	* fns.c (bytecode_nconc2):
	* fns.c (Fnconc):
	* fns.c (mapcar1):
	* fns.c (Fmapconcat):
	Be pedantically 64-bit correct.  For the time when someone will
	want to have a list with length > 2**32.

	* lisp.h (PRIVATE_EXTERNAL_LIST_LOOP_6):
	Work around MIPSpro compiler bug.

	* process-unix.c (unix_kill_child_process): Add snarky comment.
	* process-unix.c (try_to_initialize_subtty):  Oops, `=' ==> `=='

	* config.h.in: Oops, _getpt ==> _getpty

2000-10-26  Martin Buchholz  <martin@xemacs.org>

	* config.h.in:
	* regex.c:
	Use void*, not char*, as return type of alloca().

	* alloc.c (free_marker): Side effect inside assert expression!

2000-10-16  MIYASHITA Hisashi  <himi@m17n.org>

	* mule-charset.c (Fset_charset_ccl_program): To check
	if the given ccl program is valid, use setup_ccl_program()
	instead of CHECK_VECTOR().
	(Fmake_charset): Likewise.

2000-10-20  Golubev I. N.  <gin@mo.msk.ru>

	* faces.c (get_extent_fragment_face_cache_index):
	Fix cachel.merged_faces memory leak.

2000-10-14  MIYASHITA Hisashi  <himi@m17n.org>

	* mule-ccl.c (ccl_driver)<CCL_DECODE_SJIS>:
	Reset MSB of octets obtained by DECODE_SJIS
	because of the incompatibility with Emacs.
	(ccl_driver)<CCL_ENCODE_SJIS>:
	Set MSB of octets before passing them to
	ENCODE_SJIS because of the incompatibility
	with Emacs.

2000-10-18   Daiki Ueno  <ueno@unixuser.org>

	* lrecord.h (DECLARE_TYPECHECK_LRECORD): Abolish.
	(DECLARE_LRECORD): Undo the last change.
	(DECLARE_EXTERNAL_LRECORD): Expand typechecking stuff.

2000-10-17   Daiki Ueno  <ueno@unixuser.org>

	* lrecord.h (INIT_EXTERNAL_LRECORD_IMPLEMENTATION): Connect
	the implementation to lrecord_implementations_table.

2000-10-14   Daiki Ueno  <ueno@unixuser.org>

	* lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION): Don't set the
	initial value of `lrecord_type_##c_name' and
	`lrecord_##c_name.lrecord_type_index'; discard "const" qualifier.
	(INIT_EXTERNAL_LRECORD_IMPLEMENTATION): New macro.
	[ERROR_CHECK_TYPECHECK] (DECLARE_TYPECHECK_LRECORD): New macro.
	[ERROR_CHECK_TYPECHECK] (DECLARE_LRECORD): Use it.
	[ERROR_CHECK_TYPECHECK] (DECLARE_EXTERNAL_LRECORD): Use it.

2000-10-17  Martin Buchholz  <martin@xemacs.org>

	* miscplay.c (sndcnv8S_2mono):
	(sndcnv2monounsigned):
	(sndcnvULaw_2linear):
	(sndcnv16swap):
	Remove implementation-defined behavior.

2000-10-12  Martin Buchholz  <martin@xemacs.org>

	* input-method-xlib.c: Warning suppression.

2000-10-05  MIYASHITA Hisashi  <himi@m17n.org>

	* mule-ccl.c: Sync up with Emacs 21.0.90.
	(ccl_driver)<CCL_TranslateCharacter>: Disabled.
	Do nothing.
	(ccl_driver)<CCL_TranslateCharacterConstTbl>:
	Likewise.
	(ccl_driver[WriteMultibyteChar2]): Bug fix.
	Use MAX_LEADING_BYTE_OFFICIAL_2 instead of
	MIN_LEADING_BYTE_OFFICIAL_2 to check whether the
	leading char belongs to official 2-dimensional charset.
	(CCL_WRITE_CHAR): When CCL_MODE_ENCODING,
	write the given character as is.  Otherwise,
	if it is a multibyte char, convert it by
	non_ascii_set_charptr_emchar, then write it.
	(CCL_WRITE_STRING): Likewise.
	(ccl_get_compiled_code): New function.
	(setup_ccl_program): When ccl_prog is invalid,
	return -1.
	(Fregister_code_conversion_map): New function.
	(syms_of_mule_ccl): defsubr Fregister_code_conversion_map.

	* mule-ccl.h: Sync up with Emacs 21.0.90.
	(Fregister_ccl_program): export it.

	* redisplay-msw.c (separate_textual_runs):
	If ccl program is not valid, don't do ccl conversion.

	* redisplay-x.c (separate_textual_runs): Ditto.

	* file-coding.c (Fmake_coding_system):
	When type is ccl and value is vector, register it
	with a proper symbol.  And checks whether the
	given ccl program is valid.
	(mule_decode): When calling ccl_driver, if src indicates
	NULL pointer, set an empty string instead.
	(mule_encode): Likewise.

2000-10-11  Martin Buchholz  <martin@xemacs.org>

	The following large batch of changes gets us back to a state of
	C++ compilability.  Extbyte is now a char, which means that
	Extbyte * and Bufbyte * cannot be freely interchanged - a win!

	* tooltalk.c (Fset_tooltalk_message_attribute): Type correctness.

	* sound.c (Fplay_sound): Type correctness.

	* select-x.c (hack_motif_clipboard_selection): Type correctness.
	(x_get_window_property): Type correctness.
	(receive_incremental_selection): unsigned char ==> Extbyte
	(selection_data_to_lisp_data): unsigned char ==> Extbyte
	(Fx_get_cutbuffer_internal): unsigned char ==> Extbyte
	(Fx_store_cutbuffer_internal): Type correctness.

	* process-unix.c (try_to_initialize_subtty): Type correctness.

	* objects-x.c (x_print_color_instance): Type correctness.
	(x_print_font_instance): Type correctness.
	(x_list_fonts): SExtbyte ==> Extbyte.
	(valid_x_font_name_p): SExtbyte ==> Extbyte.
	(x_find_charset_font): SExtbyte ==> Extbyte.
	Use TO_INTERNAL_FORMAT.  build_string ==> make_string.
	(truename_via_XListFonts): SExtbyte ==> Extbyte.
	(x_font_instance_properties): Use TO_INTERNAL_FORMAT.
	Use bufbyte_strcmp.

	* mule-charset.h (LEADING_BYTE_PREFIX_P): unsigned char ==> Bufbyte
	(PRIVATE_LEADING_BYTE_PREFIX): Add paranoia cast.
	(BYTE_ASCII_P): Use bit ops for char-signedness safety.
	(BYTE_C0_P): Use bit ops for char-signedness safety.
	(BYTE_C1_P): Use bit ops for char-signedness safety.
	(CHARSET_BY_LEADING_BYTE):
	(CHARSET_BY_ATTRIBUTES):
	Always use inline function.
	Use type_checking_assert.
	Hide chlook.

	* mule-charset.c (non_ascii_charptr_copy_char):
	Modify to work with both ASCII and non-ASCII characters.
	Improve docs and variable names.
	Replace over-clever fall-through switch with a simple loop.
	(Lstream_get_emchar_1):
	Replace over-clever fall-through switch with a simple loop.

	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	Warning suppression.

	* lstream.h (Lstream_get_emchar): BYTE_ASCII_P cannot be used on
	the return value of Lstream_getc, which could be EOF as well.

	* lstream.c (Lstream_raw_read): Now returns ssize_t, not int.

	* lisp.h: Make Extbyte a char, not unsigned char, so that external
	APIs can be used on Extbytes without casts.  Risky!
	(SExtbyte): Remove.
	(UExtbyte): Remove.

	* input-method-xlib.c (XIM_init_device):
	Use Xlib.h instead of IntrinsicP.h.
	Use HAVE_XREGISTERIMINSTANTIATECALLBACK instead of THIS_IS_X11R6,
	which will break in X11R7.
	Use XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE,
	to call XRegisterIMInstantiateCallback with correct types.

	* gui-x.c (button_item_to_widget_value): Type correctness.

	* glyphs.c (bitmap_to_lisp_data):  Type correctness.

	* glyphs-x.c (pixmap_from_xbm_inline): Type correctness.
	(xbm_instantiate_1): Type correctness.
	(BUILD_GLYPH_INST):  Type correctness.

	* fileio.c (Fsubstitute_in_file_name): Type correctness.

	* file-coding.c:
	(decode_coding_sjis):
	(decode_coding_big5):
	(decode_coding_ucs4):
	(decode_coding_utf8):
	(decode_coding_iso2022):
	(decode_coding_no_conversion):
	Make all decoding functions take an Extbyte * arg.
	(encode_coding_sjis):
	(encode_coding_big5):
	(encode_coding_ucs4):
	(encode_coding_utf8):
	(encode_coding_iso2022):
	(encode_coding_no_conversion):
	Make all encoding functions take a Bufbyte * arg.
	Use size_t instead of unsigned int for memory sizes.
	Only cast to unsigned char whenever dereferencing Extbyte *.

	* doc.c (unparesseuxify_doc_string): Type correctness.

	* console-x.c (split_up_display_spec):
	Rewrite without using details of internal string representation.
	(x_semi_canonicalize_device_connection): Type correctness.

	* config.h.in:
	(HAVE_XREGISTERIMINSTANTIATECALLBACK): New.
	(XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE): New.
	(HAVE_XFREE386): Removed.

	* buffer.h (DEC_CHARPTR): `const' correctness.
	(bufbyte_strcmp): New.
	(bufbyte_memcmp): New.

	* buffer.c (dfc_convert_to_internal_format): Extbyte ==> Bufbyte

	* buffer.h (XCHAR_OR_CHAR_INT):
	Always use inline function.
	Remove redundant type checking assert() - XINT will abort quite nicely.

2000-10-03  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* search.c (Freplace_match): Set newtext to an empty string.

2000-10-10  Martin Buchholz  <martin@xemacs.org>

	* s/decosf1-3.h: Remove #include of stropts.h
	* s/ptx.h: Remove #include of stropts.h
	* s/usg5-4.h: Remove #include of stropts.h
	* sysproc.h:
	* config.h.in:
	Use stropts.h, not sys/stropts.h.
	Use strtio.h, not sys/strtio.h.

2000-10-04  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.36 is released.

2000-09-21  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_redisplay_widget): make sure non-structural
	changes still involve copying the widget tree.
	(update_widget_face): make sure a change is register in the widget
	tree. Call update_tab_widget_face appropriately.
	(update_tab_widget_face): ditto.
	(x_tab_control_redisplay): make sure non-structural changes still
	involve copying the widget tree.

2000-08-31   Daiki Ueno  <ueno@unixuser.org>

	* lread.c (locate_file): Check the path element is non-nil.

2000-10-02  Martin Buchholz  <martin@xemacs.org>

	* lisp.h: Warning suppression for SCO compilers.

	* redisplay-tty.c (reset_tty_modes): Fix crash.
	E.g. from xemacs running on X: (delete-device (make-device 'tty nil))

2000-09-27  Martin Buchholz  <martin@xemacs.org>

	Big signal/process handling overhaul.  Bugs fixed:
	M-x shell, type `sleep 10000', M-x comint-interrupt-subjob and
	M-x comint-kill-subjob should work for both values nil and t of
	process-connection-type. It was broken on most platforms.
	Testing on Irix and Cygwin still needed.  Other plaforms tested.
	* sysdep.c: Move #include of stropts.h into sysproc.h.  Use pid_t.
	* process-unix.c: Signal/Process handling overhaul.
	(pty_name): make 64 bytes, as `expect' does, for paranoia.
	(allocate_pty): Use all available modern methods of allocating
	ptys, falling back to old style BSD allocation as a last resort.
	Use allegedly more secure Unix98 pty allocation by default.
	(allocate_pty_the_old_fashioned_way): New. the last resort.
	(unix_create_process): Push ptem, ldterm, ttcompat where
	available.  Autoconfiscate.
	(try_to_initialize_subtty): New.
	(unix_kill_child_process): Proper signal handling for ptys on most
	platforms, using special knowledge of AIX, BSD, etc...
	(unix_create_process): Always disconnect_controlling_terminal() for
	subprocesses, whether using ptys or not.
	* process.h: Remove old getpt-dependent PTY code.
	* process.c (Fprocess_send_signal): New, obvious generic function.
	(decode_signal): New.
	(Finterrupt_process):
	(Fkill_process):
	(Fquit_process):
	(Fstop_process):
	(Fcontinue_process):
	(Fsignal_process): Use decode_signal.
	(process_send_signal):
	Many docstring corrections.
	Allow any signal to be sent to a process object.
	* config.h.in: Add symbols for big signal/process overhaul.
	* syssignal.h (EMACS_KILLPG): Use HAVE_KILLPG. Use `pid', not `gid'.
	* sysproc.h: Include process-related headers, where available:
	sys/stropts.h sys/strtio.h pty.h libutil.h
	* s/irix4-0.h:
	* s/irix5-0.h:
	* s/cygwin32.h:
	* s/gnu.h:
	* s/linux.h:
	* s/hpux.h:
	* s/aix3-1.h:
	Remove old S&M pty stuff.
	* console-tty.c (tty_init_console): Use pid_t, not int, for pids.
	* systty.h: Simplify cpp hackery, improve comments.
	Favor BSD ioctl(TIOCGPGRP) over Posix tcgetpgrp().

	* editfns.c (Fformat_time_string):
	Be a little more paranoid with the return value of ctime.

	* fileio.c (check_executable):
	(check_writable):
	Use symbolic constants X_OK, W_OK.

	* console-x.c (split_up_display_spec): Fix a warning.

2000-10-02  Martin Buchholz  <martin@xemacs.org>

	* gui-x.c (add_accel_and_to_external): strlen ==> XSTRING_LENGTH
	* ntproc.c (sys_spawnve): make_string ==> build_string
	Small clarity improvements.

2000-09-30  Martin Buchholz  <martin@xemacs.org>

	* events.c (WRONG_EVENT_TYPE_FOR_PROPERTY): Warning removal.

	* s/windowsnt.h (HAVE_STRCASECMP): Remove.

	* config.h.in (HAVE_STRCASECMP): Remove.

2000-09-29  Martin Buchholz  <martin@xemacs.org>

	* redisplay-output.c (redisplay_output_pixmap):
	Cleaner and possibly more 64-bit correct code.

2000-09-28  Stephen J. Turnbull  <stephen@xemacs.org>

	* dumper.c (pdump_load_finish): move restoration of
	`noninteractive1' to emacs.c (main_1).
	* emacs.c (main_1): protect LISP-visible command-line flags
	from pdump_load().

2000-09-26  Stephen J. Turnbull  <stephen@xemacs.org>

	* Makefile.in.in (versionclean):  Use EXE_TARGET and
	DUMP_TARGET instead of literal program names.

2000-09-20  Martin Buchholz  <martin@xemacs.org>

	* Makefile.in.in: Recent purify's require absolute paths for cache-dir.

2000-09-19  Martin Buchholz  <martin@xemacs.org>

	* *: Spelling mega-patch

2000-09-19  Martin Buchholz  <martin@xemacs.org>

	* fns.c (bad_bad_turtle):
	Delete "Eek!" comment, since we fixed the bug to which it refers.

2000-09-16  Martin Buchholz  <martin@xemacs.org>

	* alloca.c: Replace REGISTER with register.

2000-09-16   Daiki Ueno  <ueno@unixuser.org>

	* file-coding.c (ucs_to_char): Use countof.

2000-09-16  Martin Buchholz  <martin@xemacs.org>

	* file-coding.c: (ucs_to_char):
	(complex_vars_of_file_coding):
	Use countof instead of sizeof.
	Use CHECK_NATNUM instead of CHECK_INT.

	* sysdep.c (strcasecmp): Remove.
	* device-x.c (ascii_strcasecmp): New.
	* device-x.c (Fx_get_resource): Use ascii_strcasecmp.
	Avoid using non-standard non-portable strcasecmp.

2000-09-16  Martin Buchholz  <martin@xemacs.org>

	* Makefile.in.in (mostlyclean): remove reference to prefix-args.
	* font-lock.c: remove reference to emacsfns.h.
	* search.c: small doc improvement.
	* event-Xt.c: correct file names in comments.
	* console-x.h Correct file names in comments.
	* frame.c: Correct file names in comments.
	* event-stream.c: remove Energize from comments.

2000-09-15  Martin Buchholz  <martin@xemacs.org>

	* symeval.h (DEFERROR_STANDARD):
	(DEFERROR):
	(DEFSYMBOL):
	(DEFSYMBOL_NO_DUMP):
	(DEFSYMBOL_MULTIWORD_PREDICATE):
	(DEFSYMBOL_MULTIWORD_PREDICATE_NO_DUMP):
	(DEFKEYWORD):
	The construct &##name is not sensible C.
	Fixes compilation errors with Unixware native compiler.

2000-09-14  Martin Buchholz  <martin@xemacs.org>

	* frame.c (device_matches_console_spec): no longer takes a `frame' arg
	(next_frame_internal): Removed.  We now just have next_frame.
	(next_frame):
	Write a simpler and cleaner one-pass algorithm.
	Remove called_from_delete_device arg and #ifdefed-out code.
	(previous_frame):
	Renamed from prev_frame.  Update callers.
	Cleaned up to have an analogous implementation to next_frame.
	(other_visible_frames_internal): Remove the
	called_from_delete_device bogus arg, and hence, remove this
	function.  Just use other_visible_frames().

	* window.c (Fnext_window):
	Prettify docstring.
	Since next_frame() is guaranteed to return a frame, remove check
	for nil inserted in previous patch.
	(Fprevious_window):
	Prettify docstring.
	Make code look more like Fnext_window.
	(window_loop):
	Respect the `console' arg when iterating through windows.
	Fixes bug: (get-buffer-window buffer t device) not respecting
	the `device' arg.
	This function needs more work, as others have pointed out.

	* frame.h: Rename prev_frame to previous_frame.
	device_matches_console_spec no longer takes a `frame' arg.

	* s/gnu.h:
	* s/linux.h:
	* s/hpux.h:
	Use EMACS_BLOCK_SIGNAL instead of sigblock.
	From "Golubev I. N." <gin@mo.msk.ru>.

	* make-src-depend: Fix typo.

2000-09-13  Martin Buchholz  <martin@xemacs.org>

	* window.c (Fnext_window):
	next_frame() might return nil, not a frame.
	Fixes this crash:
	(gdb) run -eval '(progn  (make-device (quote x) "polgar:0") (next-window (minibuffer-window) t (quote visible) (second (device-list))))'

	* frame.c (next_frame_internal):
	We've passed a frame if we've passed its device.
	Fixes this crash:
	(gdb) run -eval '(progn (make-frame nil (make-device (quote x) "polgar:0")) (next-window (minibuffer-window) t (quote visible) (second (device-list))))'
Fatal error: assertion failed, file /project/xemacs/ws/dev/src/frame.h, line 245, RECORD_TYPEP (obj, lrecord_type_frame)

2000-09-11  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* menubar-msw.c (mswindows_translate_menu_or_dialog_item):
	Allow option to suppress accelerators in menu/dialog items.
	(populate_or_checksum_helper): Pass dialog title through above.

2000-09-10  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* event-msw.c (mswindows_key_to_emacs_keysym):
	Add "pause" key, fix "menu" key.

2000-09-09  Martin Buchholz  <martin@xemacs.org>

	* eval.c (reinit_vars_of_eval):
	Increase max_lisp_eval_depth to 1000,
	required for thai-xtis.el to byte-compile under some circumstances.

2000-09-04  Martin Buchholz  <martin@xemacs.org>

	* event-Xt.c (x_to_emacs_keysym): Increase size of `buffer' to 513.
	From Kenichi Handa.

2000-09-01  Martin Buchholz  <martin@xemacs.org>

	* make-src-depend: Make the generated Makefiles smaller.

	* s/hpux.h (SETUP_SLAVE_PTY):
	Provide a %d in the format string for the errno argument.

	* editfns.c (Ftemp_directory):
	Warning fix.
	Avoid buffer overrun on very long file name.

	* input-method-xlib.c (XIM_init_device):
	6th parameter of XRegisterIMInstantiateCallback has different
	pointer types on different OSes, so simply cast to (void *).

	* unexhp9k800.c: Warning fixes.  Fiddly changes.

	* sysdll.c (dll_open):
	shl_load will hang hard if passed a NULL filename.
	Simply return NULL for compatibility with dlopen.
	* sysdll.c: Conform to XEmacs coding standards.

	* sysdep.c (get_pty_max_bytes):
	Support pty input lines longer than 512 bytes on HP-UX 10.20.

2000-08-31  Martin Buchholz  <martin@xemacs.org>

	* tooltalk.c: Add #include <syssignal.h>

2000-08-12  Alexandre Oliva  <aoliva@redhat.com>

	* s/hpux.h: Don't use undefined function sigunblock().

2000-08-31  Martin Buchholz  <martin@xemacs.org>

	* config.h.in: Add HAVE_BALLOON_HELP.
	* emacs.c: Use HAVE_BALLOON_HELP.
	* Makefile.in.in (x_objs):
	Make Balloon Help conditional on finding shape.h.

2000-08-23  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* syntax.c (regex_emacs_buffer_p): New variable.
	* syntax.h (regex_emacs_buffer_p): extern.
	* search.c (looking_at_1):
	(string_match_1):
	(fast_string_match):
	(search_buffer): Set regex_emacs_buffer_p.
	* regex.c (re_match_2_internal): Reference regex_emacs_buffer_p
	when before_dot, at_dot, after_dot.

2000-08-23  Andy Piper  <andy@xemacs.org>

	* gui-x.c (popup_selection_callback): Only set action_occurred
	when we really have an image instance.
	* gui-msw.c (mswindows_handle_gui_wm_command): ditto.

2000-08-23  Andy Piper  <andy@xemacs.org>

	* gui-msw.c (mswindows_handle_gui_wm_command): set
	action_occurred.
	* gui-x.c (popup_selection_callback): ditto.

	* glyphs.h (IMAGE_INSTANCE_WIDGET_ACTION_OCCURRED): new accessor.
	(XIMAGE_INSTANCE_WIDGET_ACTION_OCCURRED): ditto.
	(struct Lisp_Image_Instance): add action_occurred flag.

	* glyphs.c (redisplay_subwindow): use action_occurred flag.
	(image_instance_changed): ditto.
	(reset_frame_subwindow_instance_cache): only unmap windows - do
	not remove them from the cache also.

	* glyphs-widget.c (tab_control_update): better debug.
	(progress_gauge_update): ditto.
	(layout_update): ditto.
	(layout_instantiate): ditto.
	(tab_control_order_only_changed): cope with null pending items.

	* glyphs-msw.c (mswindows_tab_control_redisplay): add better
	debug. Force selection of an item when an action occurred. Cope
	with null pending_items.
	(mswindows_progress_gauge_redisplay): better debug.
	* glyphs-x.c (x_tab_control_redisplay): ditto.

	* redisplay.c (redisplay_frame): reset the frame cache if the
	frame is garbaged.

	* window.c (Fset_window_configuration): potentially re-enable
	frame cache reset.
	(window_unmap_subwindows): need to finalize instances here since
	it is only used in mark_window_as_deleted.

2000-08-22  Stephen J. Turnbull  <stephen@xemacs.org>

	* nas.c (SndOpenDataForReading):
	nas.c (WaveOpenDataForReading):
	nas.c (readChunk): {BIG,LITTLE}_ENDIAN -> NAS_{BIG,LITTLE}_ENDIAN.
	Somehow escaped from the 2000-08-14 patch.

2000-08-14  Stephen J. Turnbull  <stephen@xemacs.org>

	* nas.c:  Preprocessor trickery to use NAS_LITTLE_ENDIAN instead
	of LITTLE_ENDIAN (conflicts with glibc, at least) in NAS <= 1.2p5.

2000-08-21  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_map_subwindow): Minor optimization - only map the
	window if it is not already displayed.

	* glyphs-msw.c (mswindows_map_subwindow): only map the window if
	it is not already displayed.

	* window.c (Fset_window_configuration): don't reset the frame
	cache.

	* glyphs.c (unmap_subwindow_instance_cache_mapper): only remove
	instances from the frame cache if we are actually finalizing them.
	(reset_frame_subwindow_instance_cache): reset frame cache only
	after unmapping everything.
	(map_subwindow): set displayed flag after mapping.

2000-08-21  Martin Buchholz  <martin@xemacs.org>

	* data.c (indirect_function):
	Rename ERRORP to non-misleading VOID_FUNCTION_ERRORP.

	* eval.c (function_argcount):
	Use original function when signaling errors.

2000-08-18  Andy Piper  <andy@xemacs.org>

	* frame.c (delete_frame_internal): use new
	free_frame_subwindow_instances name.

	* glyphs-msw.c (mswindows_tab_control_instantiate): verify index.
	(add_tab_item): make return type correct.
	(mswindows_tab_control_instantiate): assert index of tab.
	(mswindows_tab_control_redisplay): Re-code to use
	gui_item_equal_sans_selected and gui_item_list_find_selected.

	* glyphs-widget.c (tab_control_update): Correct comment.

	* window.c (window_unmap_subwindows): use new
	unmap_subwindow_instance_cache_mapper.
	(window_unmap_subwindows_cache_mapper): deleted.
	(Fset_window_configuration): comparisons should now be with
	EQ. Preserve the subwindow instance cache across configuration
	changes.
	(allocate_window): ditto.
	(make_dummy_parent): ditto.

	* glyphs.c (free_frame_subwindow_instances): rename from
	free_frame_subwindow_instance_cache. finalize all instances rather
	than just those in the display cache.
	(finalize_all_subwindow_instances): walk windows unmapping and
	finalizing subwindows.
	(unmap_subwindow_instance_cache_mapper): moved from
	window.c. Allow finalization as well as unmapping.

	* gui.c (gui_item_list_find_selected): new function.

	* gui.h (gui_item_list_find_selected): declare.

	* glyphs-x.c (x_tab_control_redisplay): pick tab
	explicitly. Re-code to use gui_item_equal_sans_selected and
	gui_item_list_find_selected.

	* glyphs-x.h: add lwlib-utils.h

	* buffer.c (Frecord_buffer): undo previous change.

2000-08-09  Vin Shelton  <acs@xemacs.org>

	* config.h.in, s/gnu.h, s/hpux.h, s/linux.h: Use UNIX98 PTYs if
	possible.  Create temporary files more securely.  The patch was
	generated by Torsten Duwe <duwe@caldera.de>, Florian Weimer
	<Florian.Weimer@RUS.Uni-Stuttgart.DE> and Olaf Kirch.  See
	http://www.xemacs.org/list-archives/xemacs-patches/200007/msg00123.html
	for details.

2000-08-07  Ben Wing  <ben@xemacs.org>

	* getloadavg.c: remove duplicate (and windows-breaking)
	includes of fcntl.h and sys/file.h.

	* nt.c: remove duplicate getloadavg() definition.

	* sysdll.h (Qdll_filename_encoding): add missing stand-in
	encodings.

2000-08-07  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* eval.c (function_argcount): If function needs to be autoloaded
	actually use the loaded definition.
	GCPRO function.

2000-08-05  Ben Wing  <ben@xemacs.org>

	* getloadavg.c: add prototype for getloadavg().  remove
	duplicate WIN32_NATIVE/CYGWIN code (already in the middle
	of the code).  remove duplicate header includes.

	* s\cygwin32.h, s\mingw32.h: remove stray NO_ARG_ARRAY.

	* s\cygwin32.h, s\mingw32.h, m\windowsnt.h:
	don't define LOAD_AVE_TYPE/LOAD_AVE_CVT because we have no
	useful load average.

	* alloc.c (reinit_alloc_once_early): removed references to
	VIRT_ADDR_VARIES, malloc_sbrk_used/free, and data-bytes-used/free.
	the lisp vars are the only things referencing the malloc_sbrk_*
	vars, and they were already if 0'd out.  these vars only exist
	in the older malloc.c, which is basically unused, and they're
	only for informational purposes.

	* m\*.h: removed useless VIRT_ADDR_VARIES.

	* m\powerpc.h: removed stray NO_ARG_ARRAY.

2000-04-26  IKEYAMA Tomonori  <tomonori@suiyokai.org>

	* redisplay-msw.c (mswindows_output_dibitmap): Set foreground
	color if the image is a mono pixmap.

2000-07-30  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (release):
	Remove stray @.

	* buffer.c (directory_is_current_directory):
	* dired-msw.c (mswindows_get_files):
	* dired.c:
	* dired.c (Fdirectory_files):
	* dired.c (file_name_completion_stat):
	* dired.c (Ffile_attributes):
	[[[[1]]]]: Rename stat() -> xemacs_stat() and eliminate nasty
	preprocessor tricks, to avoid problems on some machines
	(e.g. SCO).

	* callproc.c (egetenv): GC docs.

	* console-msw.h:
	* console-msw.h (struct mswindows_dialog_id):
	* lrecord.h (lrecord_type):
	New object for use with MSW dialogs.

	* console.h (struct console_methods):
	New enable/disable frame methods, for proper modal dialogs.

	* device-msw.c (msprinter_default_printer): Fix to follow
	proper Mule conventions.

	* device-msw.c:
	* device-msw.c (signal_open_printer_error):
	* device-msw.c (msprinter_init_device):
	* device-msw.c (ensure_not_printing):
	* device-msw.c (plist_get_margin):
	* device-msw.c (Fmsprinter_select_settings):
	* device-msw.c (finalize_devmode):
	* device-msw.c (Fmsprinter_settings_despecialize):
	* device-msw.c (signal_enum_priner_error):
	* extents.c (decode_extent):
	* extents.c (decode_map_extents_flags):
	* extents.c (decode_extent_at_flag):
	* extents.c (Fextent_at):
	* extents.c (Fextents_at):
	* extents.c (symbol_to_glyph_layout):
	[[[[2]]]] Use structured errors.

	* dialog-msw.c:
	* dialog-msw.c (mswindows_is_dialog_msg):
	* dialog-msw.c (mark_mswindows_dialog_id):
	* dialog-msw.c (dialog_proc):
	* dialog-msw.c (handle_question_dialog_box):
	* dialog-msw.c (syms_of_dialog_mswindows):
	Define new object to clean up marking; use it as a dialog identifier.
	Call new delete-dialog-box-hook.

	* dialog-x.c (dbox_selection_callback):
	* dialog-x.c (dbox_descriptor_to_widget_value):
	* dialog-x.c (x_make_dialog_box_internal):
	Call new delete-dialog-box-hook.
	Return an id.

	* dialog.c:
	* dialog.c (syms_of_dialog):
	* dialog.c (vars_of_dialog):
	Define new delete-dialog-box-hook, for use w/modal dialog boxes.

	* eval.c:
	* eval.c (signal_call_debugger):
	when noninteractive, output stack traces on the console instead
	of in a (never-seen) buffer.

	* eval.c (signal_type_error):
	* eval.c (invalid_argument_2):
	* lisp.h:
	new funs for use w/structured errors.

	* event-Xt.c:
	* event-Xt.c (x_to_emacs_keysym):
	* event-Xt.c (describe_event):
	* event-Xt.c (emacs_Xt_event_handler):
	* event-Xt.c (vars_of_event_Xt):
	* event-msw.c:
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (vars_of_event_mswindows):
	rename {x,mswindows}-debug-events to debug-{}-events for
	consistency with other debug-foo variables.

	* event-stream.c:
	document next-event more clearly.

	* fileio.c (Ffile_name_directory):
	* fileio.c (Ffile_name_nondirectory):
	* fileio.c (Funhandled_file_name_directory):
	* fileio.c (file_name_as_directory):
	* fileio.c (Ffile_name_as_directory):
	* fileio.c (directory_file_name):
	* fileio.c (Fdirectory_file_name):
	* fileio.c (Fmake_temp_name):
	* fileio.c (Ffile_truename):
	* fileio.c (Fsubstitute_in_file_name):
	* fileio.c (expand_and_dir_to_file):
	* fileio.c (barf_or_query_if_file_exists):
	* fileio.c (check_executable):
	* fileio.c (Ffile_exists_p):
	* fileio.c (Ffile_writable_p):
	* fileio.c (Ffile_directory_p):
	* fileio.c (Ffile_regular_p):
	* fileio.c (Ffile_modes):
	* fileio.c (Ffile_newer_than_file_p):
	* fileio.c (Fverify_visited_file_modtime):
	* fileio.c (Fset_visited_file_modtime):
	* fileio.c (auto_save_1):
	(1). (2).
	fix up gcpro's.

	* frame-msw.c:
	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_enable_frame):
	* frame-msw.c (error_frame_unsizable):
	* frame-msw.c (msprinter_init_frame_1):
	* frame-msw.c (msprinter_init_frame_3):
	* frame-msw.c (console_type_create_frame_mswindows):
	(2).
	implement new enable/disable frame methods.

	* frame-x.c:
	* frame-x.c (x_enable_frame):
	* frame-x.c (console_type_create_frame_x):
	implement new enable/disable frame methods.

	* frame.c:
	* frame.c (Fdisable_frame):
	* frame.c (syms_of_frame):
	* frame.h (struct frame):
	implement new enable/disable frame methods/functions.

	* general-slots.h:
	add initial-focus.

	* glyphs-msw.c (mswindows_widget_instantiate):
	comment that initial-focus should be implemented.

	* glyphs-widget.c:
	* glyphs-widget.c (check_valid_instantiator):
	* glyphs-widget.c (check_valid_orientation):
	* glyphs-widget.c (check_valid_tab_orientation):
	* glyphs-widget.c (check_valid_justification):
	* glyphs-widget.c (check_valid_border):
	* glyphs-widget.c (check_valid_callback):
	* glyphs-widget.c (check_valid_int_or_function):
	* glyphs-widget.c (check_valid_string_or_vector):
	* glyphs-widget.c (check_valid_item_list_1):
	* glyphs-widget.c (widget_validate):
	* glyphs-widget.c (combo_box_validate):
	* glyphs-widget.c (widget_instantiate):
	* glyphs-widget.c (syms_of_glyphs_widget):
	* glyphs-widget.c (VALID_WIDGET_KEYWORDS):
	* glyphs-widget.c (image_instantiator_combo_box):
	* glyphs-widget.c (image_instantiator_scrollbar):
	* glyphs-widget.c (image_instantiator_tab_control):
	* glyphs-widget.c (VALID_LAYOUT_KEYWORDS):
	(2).
	support (unimplemented) keyword initial-focus.
	reindent long macros.

	* glyphs-x.c (x_redisplay_widget):
	* glyphs-x.c (x_button_instantiate):
	* glyphs-x.c (x_button_redisplay):
	* glyphs-x.c (x_progress_gauge_instantiate):
	* glyphs-x.c (x_edit_field_instantiate):
	* glyphs-x.c (x_combo_box_instantiate):
	* glyphs-x.c (x_tab_control_instantiate):
	* glyphs-x.c (x_label_instantiate):
	* gui-x.c:
	* gui-x.c (button_item_to_widget_value):
	* gui-x.c (gui_items_to_widget_values_1):
	* gui-x.c (gui_item_children_to_widget_values):
	* gui-x.c (gui_items_to_widget_values):
	* gui-x.h:
	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	add new flag to gui-parsing routines to indicate whether
	accelerator specs should be supported.

	* glyphs.c (syms_of_glyphs): use DEFSYMBOL.

	* glyphs.h (struct Lisp_Image_Instance):
	* glyphs.h (IMAGE_INSTANCE_WANTS_INITIAL_FOCUS):
	add initial-focus flag.

	* gui.c:
	* gui.c (syms_of_gui):
	* gui.c (vars_of_gui):
	clean up menu-no-selection-hook.

	* gui.h:
	support delete-dialog-box-hook.

	* lread.c (Fload_internal):
	* lread.c (locate_file_in_directory_mapper):
	(1).

	* lrecord.h:
	* lrecord.h (struct toolbar_button):
	* lrecord.h (syms_of_toolbar):
	document how to create a new object.

	* menubar-msw.c (mswindows_char_is_accelerator):
	may be called on frames w/o menus.

	* menubar.c (vars_of_menubar):
	clean up :filter docs.

	* nt.c (readdir):
	* ntproc.c:
	(1).

	* process-nt.c:
	* process-nt.c (validate_signal_number):
	* process-nt.c (signal_cannot_launch):
	* process-nt.c (nt_create_process):
	* process-nt.c (nt_send_process):
	* process-nt.c (nt_kill_child_process):
	* process-nt.c (nt_open_network_stream):
	* process-nt.c (syms_of_process_nt):
	(2).
	delete quote-handling.  call new lisp code that does it better.

	* process-unix.c (connect_to_file_descriptor):
	* process-unix.c (allocate_pty):
	* process-unix.c (unix_send_process):
	* process-unix.c (unix_kill_child_process):
	* process-unix.c (unix_open_network_stream):
	* process-unix.c (unix_open_multicast_group):
	(1). (2).

	* process.c:
	* process.c (Fstart_process_internal):
	(2).  need to canonicalize process path even if absolute.

	* select-msw.c (symbol_to_ms_cf):
	* select-msw.c (ms_cf_to_symbol):
	* select-msw.c (cf_is_autofreed):
	* select-msw.c (mswindows_destroy_selection):
	* select.c:
	* select.c (syms_of_select):
	* select.h:
	support dibv5, fix bugs. (from Mike Alexander)

	* select.c (Fget_selection_internal):
	* select.c (select_convert_out):

	* sysdep.c:
	* sysdep.c (xemacs_stat):
	renamed.

	* sysdep.c (mkdir):
	* sysdep.c (rmdir):
	but keep original stat() here because we provide encapsulation
	around these funs.

	* sysfile.h:
	* sysfile.h (fstat):
	remove stat garbage.

	* syswindows.h:
	fix X/MSW conflict.
	don't include tchar.h.  it's inappropriate because it makes
	compile-time distinctions when we want runtime distinctions.
	(we provide our own tchar replacements)

	* toolbar.c:
	use default object printer for toolbar-button.

	* unexcw.c:
	make sure we don't encapsulate.

	* window.c (vars_of_window):
	emphasize that temp-buffer-show-hook is obsolete.

2000-08-05  Martin Buchholz  <martin@xemacs.org>

	* glyphs.c (image_instance_hash): HASH2 wants EMACS_INT args.
	(Fimage_instance_subwindow_id): make_int wants EMACS_INT arg.

	* events.c (Fevent_timestamp_lessp):
	Not 64-bit clean.  Use EMACS_INT, not int.

2000-06-05  Andrew Begel <abegel@cs.berkeley.edu>

	* lrecord.h (lrecord_types): Changed lrecord_type_count to an
	unsigned int and changed the last enum to
	lrecord_type_last_built_in_type.
	(lrecord_implementations_table): changed prototype to know how
	long the array is supposed to be.
	(lrecord_type_count): new unsigned int to keep track of the
	current number of lisp lrecord types.
	(DEFINE_EXTERNAL_LRECORD):
	(DECLARE_EXTERNAL_LRECORD): Added these two for external
	dynamic-modules to declare new lisp types. They are the same
	as the non-EXTERNAL forms, but declare an lrecord_type unsigned
	int for each new type, and increment lrecord_type_count by 1.

	* alloc.c (lrecord_implementations_table): Changed to reference
	lrecord_type_last_built_in_type for the size of the array.
	Moved MODULE_DEFINABLE_TYPE_COUNT to lrecord.h.

2000-08-03  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* glyphs.h (check_valid_item_list): Renamed from
	check_valid_item_list_1.

2000-08-01 Alastair J. Houghton <ajhoughton@lineone.net>

	* select.c (Qselect_coerce): New.
	* select.c (Vselection_coercion_alist): New.
	* select.c (syms_of_select): Declare.
	* select.c (get-selection-internal): Use it.
	Use the new select-coerce functionality.

	* select.c (select_coerce): New.
	* select.h (select_coerce): Declare.
	New function to coerce one type of data into another.

2000-08-03  Martin Buchholz  <martin@xemacs.org>

	* callproc.c (Fcall_process_internal):
	(Fcall_process_internal):
	* process-unix.c (unix_create_process):
	Save and restore the value of errno, so that error messages are accurate.

2000-08-01  Martin Buchholz  <martin@xemacs.org>

	* elhash.c (print_hash_table):
	Fix printing of hash tables to also use `key-and-value' instead of `t'.
	Prettify docstrings and indentation.

2000-07-31  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* window.c (Fwindow_pixel_edges): Subtract frame border and
	gutter size.

2000-07-31  Andy Piper  <andy@xemacs.org>

	* buffer.c (Frecord_buffer): make absolutely sure that redisplay
	will acknowledge the change.

	* glyphs.h: declare tab_control_order_only_changed.

	* glyphs-x.c (x_tab_control_redisplay): use
	tab_control_order_only_changed.

	* glyphs-widget.c (tab_control_order_only_changed): new function.

	* glyphs-msw.c (mswindows_tab_control_redisplay): use
	tab_control_order_only_changed.

	* gui.c (gui_item_equal_sans_selected): new function.
	(gui_item_equal): use it.

	* glyphs-msw.c (mswindows_combo_box_instantiate): deprecate
	:properties in favor of :items..

	* glyphs-widget.c (check_valid_item_list): rename from
	check_valid_item_list_1.
	(check_valid_item_list_1): renamed.
	(combo_box_validate): deprecate :properties in favor of :items.
	(widget_instantiate): ditto.
	(tab_control_update): ditto.
	(image_instantiator_combo_box): ditto.
	(image_instantiator_tree_view): ditto.
	(image_instantiator_tab_control): ditto.
	(layout_post_instantiate): remove dead code.

	* print.c (debug_print_no_newline): only write to debugger if in
	WIN32_NATIVE.

	* elhash.c (Fmake_hash_table): update doc string.

	* event-msw.c (mswindows_wnd_proc): don't allow processing of
	messages whilst in GC. This at least stops XEmacs crashing but has
	the potential for wierd behaviour.

2000-07-31  Martin Buchholz  <martin@xemacs.org>

	* config.h.in:
	Make existence of s&m files optional.

	* s/bsd386.h: Remove HAVE_GETLOADAVG.
	* s/freebsd.h: Remove HAVE_GETLOADAVG.
	* s/gnu.h: Remove HAVE_GETLOADAVG.
	* s/netbsd.h: Remove HAVE_GETLOADAVG.
	* s/sol2.h: Remove HAVE_GETLOADAVG.
	* lisp.h: Remove getloadavg() declaration.
	* fns.c:
	Include <sys/loadavg.h> if available.
	Don't declare our own getloadavg() if HAVE_GETLOADAVG.
	* config.h.in:	Group together getloadavg()-related macros.
	Use only configure-time tests to detect getloadavg().

2000-07-30  Martin Buchholz  <martin@xemacs.org>

	* Makefile.in.in (TransientEmacsShell.o): Fix race condition.

2000-07-25  Andy Piper  <andy@xemacs.org>

	* syswindows.h: add tchar.h for native builds.

	* frame.c (syms_of_frame): remove set-glyph-image.

	* general-slots.h: add Qset_glyph_image.

	* glyphs-widget.c (layout_update): add domain arg to
	set-glyph-image.
	(syms_of_glyphs_widget): remove set-glyph-image.

2000-07-23  Ben Wing  <ben@xemacs.org>

	* dialog-msw.c (vars_of_dialog_mswindows): need to staticpro
	Vpopup_frame_list.

2000-07-22  Andy Piper  <andy@xemacs.org>

	* symsinit.h: add syms_of_win32().

	* gui-msw.c (syms_of_gui_mswindows): remove
	Fmswindows_shell_execute.
	(Fmswindows_shell_execute): moved to win32.c.

	* emacs.c (main_1): add syms_of_win32 ().

	* win32.c (init_potentially_nonexistent_functions): rewrite in
	compiler-friendly terms.
	(Fmswindows_shell_execute): move here from gui-msw.c.
	(syms_of_win32): new.

	* device-msw.c (Fmswindows_printer_list): clean up args to
	EnumPrinters.
	Don't include tchar under cygwin or mingw.
	(msprinter_default_printer): make cygwin-friendly.

2000-07-21  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (image_instantiator_tree_view): use tab
	control's update function.
	(layout_property): new function. Retrieve items.

	* glyphs-msw.c (mswindows_tree_view_redisplay): new
	function. Re-populate the tree view from the pending items.

	* glyphs.c (instantiate_image_instantiator): Make sure the domain
	is designated the parent if the domain is an image instance. This
	is needed so that dirtiness can be cascade up the hierarchy and
	thus for layout children to be redisplayed correctly.
	(allocate_image_instance): rename glyph -> parent.

	* redisplay.h: change redisplay_output_layout signature.

	* redisplay-msw.c (mswindows_output_display_block): use domain
	arg.

	* redisplay-x.c (x_output_display_block): use domain arg.

2000-07-10  Andy Piper  <andy@xemacs.org>

	* window.c (Fset_window_configuration): add comment.

	* redisplay-output.c (compare_runes):
	(redisplay_output_subwindow): redisplay rather than update subwindow.
	(redisplay_output_layout): ditto.

	* redisplay-msw.c (mswindows_frame_output_end):
	(mswindows_frame_output_end): make defer window pos optional.

	* lisp.h: add Flast.

	* glyphs.h (struct image_instantiator_methods): add dest_mask top
	normalize method. Change update method to be for changed
	instantiators. Add redisplay method. Change signature of layout
	method.
	(struct Lisp_Image_Instance): add instantiator.
	(IMAGE_INSTANCE_INSTANTIATOR): new.
	(IMAGE_INSTANCE_SUBWINDOW_FACE): new.
	(XIMAGE_INSTANCE_INSTANTIATOR): new.
	(XIMAGE_INSTANCE_SUBWINDOW_FACE): new.

	* glyphs.c:
	(find_instantiator_differences): new function.
	(Fset_instantiator_property): new convenience function.
	(check_image_instance_structure): strictly check for vector
	instantiators.
	(normalize_image_instantiator): make non-static.
	(instantiate_image_instantiator): pass on dest_mask and use new
	signatures for image_instance_layout and friends.
	(mark_image_instance): mark the instantiator. Mark the subwindow
	face not the widget face.
	(image_instance_equal): add instantiator.
	(image_instance_hash): ditto.
	(allocate_image_instance): ditto.
	(Fset_image_instance_property): removed.
	(Fimage_instance_file_name): ditto.
	(Fcolorize_image_instance): ditto.
	(image_instance_layout): add offsets to be set.
	(update_image_instance): new function. update an image instance
	from its changed instantiator.
	(inherit_normalize): add dest_mask.
	(xbm_normalize): ditto.
	(xface_normalize): ditto.
	(xpm_normalize): ditto.
	(text_update): set_property -> update.
	(image_instantiate): use the glyph identity as a hash key, not the
	instantiator.
	(glyph_width): use new image_instance_layout signature.
	(glyph_ascent): ditto.
	(glyph_descent): ditto.
	(glyph_height): ditto.
	(glyph_query_geometry): ressurrect.
	(glyph_layout): ditto.
	(redisplay_subwindow): update -> redisplay.
	(syms_of_glyphs): add Fset_instantiator_property.
	(image_instantiator_format_create): set_property -> update.

	* glyphs-x.c:
	(autodetect_normalize): add dest_maks to signature.
	(x_redisplay_subwindow): update -> redisplay.
	(x_redisplay_widget): ditto.
	(x_button_redisplay): ditto.
	(x_progress_gauge_redisplay): ditto.
	(x_tab_control_redisplay): ditto. Rewrite to cope with changed
	stacking order.
	(console_type_create_glyphs_x): update -> redisplay.
	(image_instantiator_format_create_glyphs_x): ditto.

	* glyphs-widget.c:
	(check_valid_instantiator): disallow glyphs in the instantiator,
	they must now be vectors.
	(check_valid_instantiator_list): ditto.
	(glyph_instantiator_to_glyph): use internal symbol rather than
	intern.
	(widget_update): renamed from widget_set_property. Call cascaded
	update methods.
	(redisplay_widget): renamed from update_widget.
	(widget_layout): image_instance_layout now takes position as well
	as size.
	(widget_normalize): ditto.
	(widget_instantiate): ditto.
	(tab_control_query_geometry) ditto.:
	(tab_control_update): renamed from tab_control_set_property.
	(progress_gauge_update): set_property -> update.
	(layout_normalize): rewrite so that child instantiators are
	normalized also.
	(layout_update): new function. Create glyphs from the normalized
	children and cope with any other layout keywords. We do not
	instantiate children here that will be take care of by
	redisplay_output_layout.
	(layout_instantiate): call layout_update and not much else.
	(layout_post_instantiate): not sure whether this is needed
	anymore.
	(layout_query_geometry): query glyph geometry rather than
	image_instance geometry.
	(layout_layout): set offsets from pass in parameters. Use glyph
	geometry and layout functions rather than image instance ones.
	(native_layout_layout): ditto.
	(syms_of_glyphs_widget): add make-glyph and set-glyph-image.
	(image_instantiator_widget): set_property -> update.
	(image_instantiator_buttons): ditto.
	(image_instantiator_progress_guage): ditto.
	(image_instantiator_tab_control): ditto.
	(VALID_LAYOUT_KEYWORDS): instantiators must now be vectors.
	(image_instantiator_layout): add update method.

	* glyphs-msw.c (bmp_normalize):
	(mswindows_resource_normalize): add dest_mask so that it can be
	proprogated by layout_normalize.
	(begin_defer_window_pos): make optional because it may not be the
	right thing to do and it introduces differences with X.
	(mswindows_unmap_subwindow): ditto.
	(mswindows_map_subwindow): ditto.
	(mswindows_redisplay_subwindow): renamed from
	mswindows_update_subwindow.
	(mswindows_redisplay_widget): ditto.
	(mswindows_button_redisplay): renamed from
	mswindows_button_update. Update is now what the instantiation
	function does for a changed instantiator.
	(mswindows_progress_gauge_instantiate): set the progress value
	here if appropriate.
	(mswindows_tab_control_redisplay): cope with re-ordering of the
	members of the tab widget by simply selecting the new top
	widget. This makes things appear ok if you click on a tab.
	(mswindows_combo_box_instantiate): image_instance_layout now takes
	position as well as size.
	(mswindows_progress_gauge_redisplay): renamed from
	mswindows_progress_gauge_update.
	(console_type_create_glyphs_mswindows): fix update -> redisplay.
	(image_instantiator_format_create_glyphs_mswindows): ditto.

	* glyphs-eimage.c (jpeg_normalize):
	(gif_normalize):
	(png_normalize):
	(tiff_normalize): add dest_mask so that it can be proprogated by
	layout_normalize.

	* elhash.c:
	(print_hash_table):
	(hash_table_weakness_validate):
	(decode_hash_table_weakness):
	(Fhash_table_weakness):
	(Fhash_table_type):
	(syms_of_elhash): use Ben's naming scheme for hashtable types..

	* console.h (struct console_methods): move update_* to
	redisplay_*.

2000-07-20  Ben Wing  <ben@xemacs.org>

	* *.[ch] (XSETOBJ): remove unused middle argument.
	lisp-disunion.h: correct wrap_object() to one argument.

2000-07-15  Ben Wing  <ben@xemacs.org>

	* s/cygwin32.h:
	* s/cygwin32.h (CYGWIN_CONV_PATH):
	Add missing logb prototype for v1.1.
	Use post-b20 names and alias to pre-b20 names when pre-b20.

	* s/windowsnt.h: [5].

2000-07-15  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (x_objs):
	* Makefile.in.in (sheap_objs):
	* Makefile.in.in (objs):
	added win32.o, cosmetic cleanups.

	* alloc.c (Fmake_byte_code):
	[[[1]]]: Changes for new LIST_LOOP, EXTERNAL_LIST_LOOP,
	etc. macros which declare their own args now.

	* alloc.c (syms_of_alloc):
	[[[2]]]: Use DEFSYMBOL, DEFKEYWORD, DEFERROR and friends.

	* buffer.c:
	Moved buffer-dedicated-frame, set-buffer-dedicated-frame into lisp.

	* buffer.c (Fget_file_buffer):
	Fixed GCPRO problem.

	* glyphs-msw.c (bmp_normalize):
	(mswindows_resource_normalize): add dest_mask so that it can be
	proprogated by layout_normalize.
	(begin_defer_window_pos): make optional because it may not be the
	right thing to do and it introduces differences with X.
	(mswindows_unmap_subwindow): ditto.
	(mswindows_map_subwindow): ditto.
	(mswindows_redisplay_subwindow): renamed from
	mswindows_update_subwindow.
	(mswindows_redisplay_widget): ditto.
	(mswindows_button_redisplay): renamed from
	mswindows_button_update. Update is now what the instantiation
	function does for a changed instantiator.
	(mswindows_progress_gauge_instantiate): set the progress value
	here if appropriate.
	(mswindows_tab_control_redisplay): cope with re-ordering of the
	members of the tab widget by simply selecting the new top
	widget. This makes things appear ok if you click on a tab.
	(mswindows_combo_box_instantiate): image_instance_layout now takes
	position as well as size.
	(mswindows_progress_gauge_redisplay): renamed from
	mswindows_progress_gauge_update.
	(console_type_create_glyphs_mswindows): fix update -> redisplay.
	(image_instantiator_format_create_glyphs_mswindows): ditto.

	* glyphs-eimage.c (jpeg_normalize):
	(gif_normalize):
	(png_normalize):
	(tiff_normalize): add dest_mask so that it can be proprogated by
	layout_normalize.

	* elhash.c:
	(print_hash_table):
	(hash_table_weakness_validate):
	(decode_hash_table_weakness):
	(Fhash_table_weakness):
	(Fhash_table_type):
	(syms_of_elhash): use Ben's naming scheme for hashtable types..

	* console.h (struct console_methods): move update_* to
	redisplay_*.

2000-07-20  Ben Wing  <ben@xemacs.org>

	* *.[ch] (XSETOBJ): remove unused middle argument.
	lisp-disunion.h: correct wrap_object() to one argument.

2000-07-15  Ben Wing  <ben@xemacs.org>

	* s/cygwin32.h:
	* s/cygwin32.h (CYGWIN_CONV_PATH):
	Add missing logb prototype for v1.1.
	Use post-b20 names and alias to pre-b20 names when pre-b20.

	* s/windowsnt.h: [5].

2000-07-15  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (x_objs):
	* Makefile.in.in (sheap_objs):
	* Makefile.in.in (objs):
	added win32.o, cosmetic cleanups.

	* alloc.c (Fmake_byte_code):
	[[[1]]]: Changes for new LIST_LOOP, EXTERNAL_LIST_LOOP,
	etc. macros which declare their own args now.

	* alloc.c (syms_of_alloc):
	[[[2]]]: Use DEFSYMBOL, DEFKEYWORD, DEFERROR and friends.

	* buffer.c:
	Moved buffer-dedicated-frame, set-buffer-dedicated-frame into lisp.

	* buffer.c (Fget_file_buffer):
	Fixed GCPRO problem.

	* buffer.c (get_truename_buffer):
	Fixed comment about GC checking.

	* buffer.c (syms_of_buffer):
	Undeclared those dedicated frame funs.
	[2].

	* buffer.h:
	Define convenience macros for internal/external conversions.
	[[[3]]]: Define codesys aliases Qcommand_argument_encoding
	and Qenvironment_variable_encoding for cleaner code.

	* bufslots.h:
	Remove dedicated-frame; in lisp.

	* bytecode.c (funcall_compiled_function):
	[1].

	* bytecode.c (syms_of_bytecode):
	[2].

	* console-msw.c:
	* console-msw.c (mswindows_show_console): Rewrote.

	* console-msw.c (Fmswindows_debugging_output): New.
	Sends to OutputDebugString (special MSWin debugger interface).

	* console-msw.c (Fmswindows_message_box):
	Fixed stupid bugs so it works when called from kill-emacs.

	* console-msw.c (syms_of_console_mswindows):
	Declare Fmswindows_debugging_output.

	* console-msw.h:
	New MSWin prototypes.

	* console-msw.h (struct mswindows_frame):
	New entry last-click-mods for improved button-modifier support.

	* console-msw.h (FRAME_MSWINDOWS_POPUP):
	New struct entry `popup' with corresponding accessor.

	* console-x.c:
	* console-x.c (split_up_display_spec):
	* console-x.c (get_display_arg_connection):
	* console-x.c (x_semi_canonicalize_console_connection):
	* console-x.c (x_canonicalize_device_connection):
	[[[6]]]: Change char to more specific type.
	[[[8]]]: Make use of abstracting codesys aliases defined in [3], [4];

	* console-x.c (x_semi_canonicalize_console_connection):
	* console-x.c (x_canonicalize_device_connection):
	[[[9]]]: Fix up error signalling to use new structured error system.

	* console-x.h:
	[[[4]]]: Define codesys aliases:
	Qlwlib_encoding, Qx_atom_name_encoding, Qx_font_name_encoding,
	Qx_color_name_encoding, Qx_display_name_encoding.

	* console.h (struct console_methods):
	New method make_dialog_box_internal supersedes older
	popup_dialog_box method.

	* data.c:
	Define many new errors, part of new structured errors.

	* data.c (init_errors_once_early):
	* data.c (syms_of_data):
	[2].

	* device-msw.c (mswindows_init_device):
	[[[5]]]: Cleanup to support NT 3.51.

	* device-msw.c (decode_devmode): Cleanup.

	* device-msw.c (mswindows_handle_print_setup_dialog_box):
	* device-msw.c (mswindows_handle_print_dialog_box):
	* device-msw.c (mswindows_handle_page_setup_dialog_box):
	* device-msw.c (syms_of_device_mswindows):
	Delete the dialog box primitives recently introduced by Kirill and
	instead interface to general dialog box interface.

	* device-x.c:
	* device-x.c (compute_x_app_name):
	* device-x.c (x_init_device):
	* device-x.c (Fx_valid_keysym_name_p):
	* device-x.c (Fx_set_font_path):
	[6].
	[7].

	* device.h (wrap_device): New.
	First of its kind; meant to replace XSETDEVICE.

	* dialog-msw.c: Many file-dialog symbols.

	* dialog-msw.c (mswindows_register_popup_frame): New.
	* dialog-msw.c (mswindows_is_dialog_msg): New.
	For supporting kbd traversal in dialog boxes.

	* dialog-msw.c (dialog_proc):
	Support hitting ESC in dialogs.

	* dialog-msw.c (struct):
	Common dialog box errors.

	* dialog-msw.c (handle_file_dialog_box): New.
	Add file dialog code.

	* dialog-msw.c (handle_question_dialog_box):
	Redo existing code to support new question dialog syntax.

	* dialog-msw.c (console_type_create_dialog_mswindows):
	We support new dialog console method.

	* dialog-msw.c (syms_of_dialog_mswindows):
	* dialog-msw.c (vars_of_dialog_mswindows):
	New file dialog symbols, vars.

	* dialog-x.c:
	* dialog-x.c (maybe_run_dbox_text_callback):
	* dialog-x.c (dbox_descriptor_to_widget_value):
	* dialog-x.c (x_make_dialog_box_internal):
	* dialog-x.c (console_type_create_dialog_x):
	Mule-ize entire file.
	Redo to support question dialog syntax.
	[6].

	* dialog.c:
	* dialog.c (Fmake_dialog_box_internal):
	* dialog.c (syms_of_dialog):
	Kill old popup-dialog-box, replace with new primitive.
	Just call device method or signal error.

	* eldap.c (Fldap_open):
	* eldap.c (Fldap_search_basic):
	* eldap.c (Fldap_add):
	* eldap.c (Fldap_modify):
	[1].
	[7].

	* emacs.c:
	* emacs.c (make_arg_list_1):
	* emacs.c (make_arg_list):
	Mule-ize call to dll_init().
	[6].
	[8].

	* emacs.c (make_argc_argv):
	* emacs.c (free_argc_argv):
	* emacs.c (init_cmdargs):
	* emacs.c (main_1):
	* emacs.c (Fkill_emacs):
	* emacs.c (Fdump_emacs):
	Update comments about what can be used in syms_* etc.
	Call init_win32() when necessary.
	Fix up MS Win dialog box in kill-buffer to actually work right.
	[7].

	* eval.c:
	* eval.c (For):
	* eval.c (Fand):
	* eval.c (Fprogn):
	* eval.c (Fprog1):
	* eval.c (Fprog2):
	* eval.c (FletX):
	* eval.c (Flet):
	* eval.c (condition_case_3):
	* eval.c (Feval):
	* eval.c (function_argcount):
	* eval.c (funcall_lambda):
	[1].

	* eval.c (type_error): New.
	* eval.c (maybe_type_error): New.
	* eval.c (continuable_type_error): New.
	* eval.c (maybe_continuable_type_error): New.
	* eval.c (type_error_with_frob): New.
	* eval.c (maybe_type_error_with_frob): New.
	* eval.c (continuable_type_error_with_frob): New.
	* eval.c (maybe_continuable_type_error_with_frob): New.
	New functions for use with structured errors.

	* event-Xt.c:
	* event-Xt.c (x_event_to_emacs_event):
	Buttons are now modifiers too.

	* event-Xt.c (emacs_Xt_current_event_timestamp):
	Implement new event method.
	* event-Xt.c (reinit_vars_of_event_Xt): Set it.

	* event-msw.c:
	* event-msw.c (ntpipe_shove_writer): [5].
	* event-msw.c (mswindows_enqueue_mouse_button_event):
	* event-msw.c (mswindows_drain_windows_queue):
	* event-msw.c (mswindows_wnd_proc): [7].
	* event-msw.c (mswindows_current_layout_has_AltGr): [5].
	* event-msw.c (mswindows_modifier_state):
	Throughout: support new button modifiers.

	* event-msw.c (emacs_mswindows_current_event_timestamp):
	Implement new event method.
	* event-msw.c (reinit_vars_of_event_mswindows): Set it.

	* event-stream.c:
	* event-stream.c (event_stream_current_event_timestamp): New.
	* event-stream.c (maybe_kbd_translate): New functionality.
	* event-stream.c (vars_of_event_stream):
	Document new kbd-translate-table functionality.

	* event-stream.c (Fcurrent_event_timestamp): New.
	New primitive for use in fabricated events.
	* event-stream.c (syms_of_event_stream): [2]. Declare new primitive.

	* events-mod.h (XEMACS_MOD_BUTTON1): new button modifiers.

	* events.c:
	* events.c (Fmake_event):
	* events.c (WRONG_EVENT_TYPE_FOR_PROPERTY):
	[1].
	[9].

	* events.c (format_event_object): fix gcc warnings.

	* events.c (Fevent_timestamp): Document new primitives.

	* events.c (TIMESTAMP_HALFSPACE): New.

	* events.c (Fevent_timestamp_lessp): New.  New primitive for
	comparing timestamps correctly (half-space algorithm).

	* events.c (Fevent_modifier_bits): Doc fix.

		* buffer.c (get_truename_buffer): Fixed comment about GC
	checking.

	* events.c (Fevent_modifiers): Major doc addition.
	* events.c (event_x_y_pixel_internal): Typo fix.
	* events.c (syms_of_events): Declare new primitives.

	* buffer.c (syms_of_buffer):
	Undeclared those dedicated frame funs.
	[2].

	* buffer.h:
	Define convenience macros for internal/external conversions.
	[[[3]]]: Define codesys aliases Qcommand_argument_encoding
	and Qenvironment_variable_encoding for cleaner code.

	* bufslots.h:
	Remove dedicated-frame; in lisp.

	* bytecode.c (funcall_compiled_function):
	[1].

	* bytecode.c (syms_of_bytecode):
	[2].

	* console-msw.c:
	* console-msw.c (mswindows_show_console): Rewrote.

	* console-msw.c (Fmswindows_debugging_output): New.
	Sends to OutputDebugString (special MSWin debugger interface).

	* console-msw.c (Fmswindows_message_box):
	Fixed stupid bugs so it works when called from kill-emacs.

	* console-msw.c (syms_of_console_mswindows):
	Declare Fmswindows_debugging_output.

	* console-msw.h:
	New MSWin prototypes.

	* console-msw.h (struct mswindows_frame):
	New entry last-click-mods for improved button-modifier support.

	* console-msw.h (FRAME_MSWINDOWS_POPUP):
	New struct entry `popup' with corresponding accessor.

	* console-x.c:
	* console-x.c (split_up_display_spec):
	* console-x.c (get_display_arg_connection):
	* console-x.c (x_semi_canonicalize_console_connection):
	* console-x.c (x_canonicalize_device_connection):
	[[[6]]]: Change char to more specific type.
	[[[8]]]: Make use of abstracting codesys aliases defined in [3], [4];

	* console-x.c (x_semi_canonicalize_console_connection):
	* console-x.c (x_canonicalize_device_connection):
	[[[9]]]: Fix up error signalling to use new structured error system.

	* console-x.h:
	[[[4]]]: Define codesys aliases:
	Qlwlib_encoding, Qx_atom_name_encoding, Qx_font_name_encoding,
	Qx_color_name_encoding, Qx_display_name_encoding.

	* console.h (struct console_methods):
	New method make_dialog_box_internal supersedes older
	popup_dialog_box method.

	* data.c:
	Define many new errors, part of new structured errors.

	* data.c (init_errors_once_early):
	* data.c (syms_of_data):
	[2].

	* device-msw.c (mswindows_init_device):
	[[[5]]]: Cleanup to support NT 3.51.

	* device-msw.c (decode_devmode): Cleanup.

	* device-msw.c (mswindows_handle_print_setup_dialog_box):
	* device-msw.c (mswindows_handle_print_dialog_box):
	* device-msw.c (mswindows_handle_page_setup_dialog_box):
	* device-msw.c (syms_of_device_mswindows):
	Delete the dialog box primitives recently introduced by Kirill and
	instead interface to general dialog box interface.

	* device-x.c:
	* device-x.c (compute_x_app_name):
	* device-x.c (x_init_device):
	* device-x.c (Fx_valid_keysym_name_p):
	* device-x.c (Fx_set_font_path):
	[6].
	[7].

	First of its kind; meant to replace XSETDEVICE.

	* dialog-msw.c: Many file-dialog symbols.

	* dialog-msw.c (mswindows_register_popup_frame): New.
	* dialog-msw.c (mswindows_is_dialog_msg): New.
	For supporting kbd traversal in dialog boxes.

	* dialog-msw.c (dialog_proc):
	Support hitting ESC in dialogs.

	* dialog-msw.c (struct):
	Common dialog box errors.

	* dialog-msw.c (handle_file_dialog_box): New.
	Add file dialog code.

	* dialog-msw.c (handle_question_dialog_box):
	Redo existing code to support new question dialog syntax.

	* dialog-msw.c (console_type_create_dialog_mswindows):
	We support new dialog console method.

	* dialog-msw.c (syms_of_dialog_mswindows):
	* dialog-msw.c (vars_of_dialog_mswindows):
	New file dialog symbols, vars.

	* dialog-x.c:
	* dialog-x.c (maybe_run_dbox_text_callback):
	* dialog-x.c (dbox_descriptor_to_widget_value):
	* dialog-x.c (x_make_dialog_box_internal):
	* dialog-x.c (console_type_create_dialog_x):
	Mule-ize entire file.
	Redo to support question dialog syntax.
	[6].

	* dialog.c:
	* dialog.c (Fmake_dialog_box_internal):
	* dialog.c (syms_of_dialog):
	Kill old popup-dialog-box, replace with new primitive.
	Just call device method or signal error.

	* eldap.c (Fldap_open):
	* eldap.c (Fldap_search_basic):
	* eldap.c (Fldap_add):
	* eldap.c (Fldap_modify):
	[1].
	[7].

	* emacs.c:
	* emacs.c (make_arg_list_1):
	* emacs.c (make_arg_list):
	Mule-ize call to dll_init().
	[6].
	[8].

	* emacs.c (make_argc_argv):
	* emacs.c (free_argc_argv):
	* emacs.c (init_cmdargs):
	* emacs.c (main_1):
	* emacs.c (Fkill_emacs):
	* emacs.c (Fdump_emacs):
	Update comments about what can be used in syms_* etc.
	Call init_win32() when necessary.
	Fix up MS Win dialog box in kill-buffer to actually work right.
	[7].

	* eval.c:
	* eval.c (For):
	* eval.c (Fand):
	* eval.c (Fprogn):
	* eval.c (Fprog1):
	* eval.c (Fprog2):
	* eval.c (FletX):
	* eval.c (Flet):
	* eval.c (condition_case_3):
	* eval.c (Feval):
	* eval.c (function_argcount):
	* eval.c (funcall_lambda):
	[1].

	* eval.c (type_error): New.
	* eval.c (maybe_type_error): New.
	* eval.c (continuable_type_error): New.
	* eval.c (maybe_continuable_type_error): New.
	* eval.c (type_error_with_frob): New.
	* eval.c (maybe_type_error_with_frob): New.
	* eval.c (continuable_type_error_with_frob): New.
	* eval.c (maybe_continuable_type_error_with_frob): New.
	New functions for use with structured errors.

	* event-Xt.c:
	* event-Xt.c (x_event_to_emacs_event):
	Buttons are now modifiers too.

	* event-Xt.c (emacs_Xt_current_event_timestamp):
	Implement new event method.
	* event-Xt.c (reinit_vars_of_event_Xt): Set it.

	* event-msw.c:
	* event-msw.c (ntpipe_shove_writer): [5].
	* event-msw.c (mswindows_enqueue_mouse_button_event):
	* event-msw.c (mswindows_drain_windows_queue):
	* event-msw.c (mswindows_wnd_proc): [7].
	* event-msw.c (mswindows_current_layout_has_AltGr): [5].
	* event-msw.c (mswindows_modifier_state):
	Throughout: support new button modifiers.

	* event-msw.c (emacs_mswindows_current_event_timestamp):
	Implement new event method.
	* event-msw.c (reinit_vars_of_event_mswindows): Set it.

	* event-stream.c:
	* event-stream.c (event_stream_current_event_timestamp): New.
	* event-stream.c (maybe_kbd_translate): New functionality.
	* event-stream.c (vars_of_event_stream):
	Document new kbd-translate-table functionality.

	* event-stream.c (Fcurrent_event_timestamp): New.
	New primitive for use in fabricated events.
	* event-stream.c (syms_of_event_stream): [2]. Declare new primitive.

	* events-mod.h (XEMACS_MOD_BUTTON1): new button modifiers.

	* events.c:
	* events.c (Fmake_event):
	* events.c (WRONG_EVENT_TYPE_FOR_PROPERTY):
	[1].
	[9].

	* events.c (format_event_object): fix gcc warnings.

	* events.c (Fevent_timestamp): Document new primitives.

	* events.c (TIMESTAMP_HALFSPACE): New.

	* events.c (Fevent_timestamp_lessp): New.  New primitive for
	comparing timestamps correctly (half-space algorithm).

	* events.c (Fevent_modifier_bits): Doc fix.

	* events.c (Fevent_modifiers): Major doc addition.
	* events.c (event_x_y_pixel_internal): Typo fix.
	* events.c (syms_of_events): Declare new primitives.

	* events.h:
	Update long comment for button modifiers, timestamps.

	* events.h (struct event_stream):
	New current_event_timestamp method.

	* extents.c:
	* extents.c (extent_in_region_p):
	* extents.c (decode_extent):
	* extents.c (Fset_extent_parent):
	* extents.c (decode_map_extents_flags):
	Fix gcc warnings.
	[9].

	* extents.c (struct extent_at_arg):
	* extents.c (decode_extent_at_flag):
	* extents.c (extent_at_mapper):
	* extents.c (extent_at_bytind):
	* extents.c (Fextent_at): Adapt to new lower-level interface. [9].
	* extents.c (Fextents_at): New primitive. [9].
	* extents.c (symbol_to_glyph_layout): [9].
	Support new primitive `extents-at'.


	* extents.c (get_text_property_bytind):
	extent_at_bytind has another arg.
	[9].

	* extents.c (syms_of_extents): New primitive.

	* file-coding.c (Fmake_coding_system): [1].
	* file-coding.c (subsidiary_coding_system): fix gcc warning
	* file-coding.c (syms_of_file_coding): [2].

	* fileio.c (Fexpand_file_name):
	* fileio.c (Fsysnetunam):
	* fileio.c (Ffile_exists_p):
	* fileio.c (Ffile_executable_p):
	* fileio.c (Fverify_visited_file_modtime):
	Clean up GCPROing.

	* fileio.c (syms_of_fileio): [2].

	* filelock.c (lock_file_1):
	* filelock.c (current_lock_owner):
	* filelock.c (lock_if_free):
	* filelock.c (lock_file):
	* filelock.c (unlock_file):
	Clean up GCPROing.

	* fns.c (concat): Fix gcc warning.

	* fns.c (Fmember):
	* fns.c (Fold_member):
	* fns.c (Fmemq):
	* fns.c (Fold_memq):
	* fns.c (memq_no_quit):
	* fns.c (Fassoc):
	* fns.c (Fold_assoc):
	* fns.c (Fassq):
	* fns.c (Fold_assq):
	* fns.c (assq_no_quit):
	* fns.c (Frassoc):
	* fns.c (Fold_rassoc):
	* fns.c (Frassq):
	* fns.c (Fold_rassq):
	* fns.c (rassq_no_quit):
	* fns.c (Fdelete):
	* fns.c (Fold_delete):
	* fns.c (Fdelq):
	* fns.c (Fold_delq):
	* fns.c (delq_no_quit):
	* fns.c (Fremassoc):
	* fns.c (Fremassq):
	* fns.c (remassq_no_quit):
	* fns.c (Fremrassoc):
	* fns.c (Fremrassq):
	* fns.c (remrassq_no_quit):
	* fns.c (Freverse):
	* fns.c (mapcar1):
	[1].

	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_delete_frame):
	Register popups with dialog code so keyboard traversing works.

	* frame-tty.c (tty_raise_frame_no_select): [1].

	* frame-x.c:
	* frame-x.c (x_set_frame_text_value):
	* frame-x.c (x_set_frame_properties):
	* frame-x.c (x_create_widgets):
	[7].

	* frame.c:
	* frame.c (Fmouse_pixel_position): Minor doc fixes.

	Macro like wrap_device.

	* general.c:
	* general.c (SYMBOL):
	* general.c (syms_of_general):
	Major reorg.  This is now just a wrapper and symbols themselves
	are listed in general-slots.h.

	* glyphs-eimage.c (tiff_instantiate): Need cast to fix warning.
	* glyphs-msw.c (mswindows_resource_instantiate): [5].

	* glyphs-msw.c (mswindows_native_layout_instantiate):
	Add DS_CONTROL so keyboard traversal will work.

	* glyphs-widget.c:
	* glyphs-widget.c (syms_of_glyphs_widget):
	Move some symbols to general-slots.h.

	* glyphs-x.c:
	* glyphs-x.c (xbm_instantiate_1):
	* glyphs-x.c (x_xbm_instantiate):
	* glyphs-x.c (x_xface_instantiate):
	* glyphs-x.c (autodetect_instantiate):
	* glyphs-x.c (cursor_font_instantiate):
	* glyphs-x.c (x_update_widget):
	* glyphs-x.c (x_widget_instantiate):
	* glyphs.c (bitmap_to_lisp_data):
	* glyphs.c (pixmap_to_lisp_data):
	[7].

	* glyphs.c (syms_of_glyphs):
	[2].

	* gui-x.c:
	* gui-x.c (print_widget_value):
	* 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):
	* gui-x.c (gui_items_to_widget_values_1):
	* gui-x.c (gui_items_to_widget_values):
	* gui-x.c (syms_of_gui_x):
	* gui-x.c (vars_of_gui_x):
	Mule-ize entire file.  Move menu-no-selection-hook to gui.c.
	[9].

	* gui-x.h:
	Muleize, prototype changes matching gui-x.c.

	* gui.c:
	* gui.c (separator_string_p):
	* gui.c (gui_item_add_keyval_pair):
	* gui.c (make_gui_item_from_keywords_internal):
	* gui.c (signal_too_long_error):
	* gui.c (parse_gui_item_tree_item):
	* gui.c (syms_of_gui):
	* gui.c (vars_of_gui):
	* gui.h:
	menu-no-selection-hook moved here (used by MSWin).
	Move some symbols to general-slots.h.
	[6].
	[9].

	* insdel.c (get_buffer_pos_char):
	* insdel.c (get_buffer_range_char):
	Add GC comments.

	* keymap.c (keymap_lookup_directly):
	* keymap.c (keymap_store):
	* keymap.c (ensure_meta_prefix_char_keymapp):
	* keymap.c (describe_map):
	* keymap.h:
	Support new button modifiers.

	* lisp-disunion.h (XSETOBJ):
	Rename make_obj to wrap_object.

	* lisp-union.h:
	* lisp-union.h (make_int):
	* lisp-union.h (make_char):
	Support wrap_object.

	* lisp.h:
	* lisp.h (LIST_LOOP):
	* lisp.h (EXTERNAL_LIST_LOOP):
	* lisp.h (LIST_LOOP_2):
	* lisp.h (EXTERNAL_LIST_LOOP_1):
	* lisp.h (EXTERNAL_LIST_LOOP_2):
	* lisp.h (EXTERNAL_LIST_LOOP_3):
	* lisp.h (EXTERNAL_LIST_LOOP_4_NO_DECLARE):
	* lisp.h (PRIVATE_EXTERNAL_LIST_LOOP_6):
	* lisp.h (GET_EXTERNAL_LIST_LENGTH):
	* lisp.h (EXTERNAL_ALIST_LOOP_5):
	* lisp.h (EXTERNAL_ALIST_LOOP_6):
	* lisp.h (EXTERNAL_ALIST_LOOP_6_NO_DECLARE):
	* lisp.h (EXTERNAL_PROPERTY_LIST_LOOP_5_NO_DECLARE):
	* lisp.h (EXTERNAL_PROPERTY_LIST_LOOP_7):
	* lisp.h (struct Lisp_Symbol):
	* lisp.h (maybe_continuable_error_with_frob):
	Fix up section comments.
	Add new types for char to indicate usage.
	Delete symbols auto-generated from general-slots.h.
	Add prototypes for structured error functions.
	Add long comments describing looping macros and change interface
	so that lvalues are automatically declared.

	* events.h:
	Update long comment for button modifiers, timestamps.

	* events.h (struct event_stream):
	New current_event_timestamp method.

	* extents.c:
	* extents.c (extent_in_region_p):
	* extents.c (decode_extent):
	* extents.c (Fset_extent_parent):
	* extents.c (decode_map_extents_flags):
	Fix gcc warnings.
	[9].

	* extents.c (struct extent_at_arg):
	* extents.c (decode_extent_at_flag):
	* extents.c (extent_at_mapper):
	* extents.c (extent_at_bytind):
	* extents.c (Fextent_at): Adapt to new lower-level interface. [9].
	* extents.c (Fextents_at): New primitive. [9].
	* extents.c (symbol_to_glyph_layout): [9].
	Support new primitive `extents-at'.


	* extents.c (get_text_property_bytind):
	extent_at_bytind has another arg.
	[9].

	* extents.c (syms_of_extents): New primitive.

	* file-coding.c (Fmake_coding_system): [1].
	* file-coding.c (subsidiary_coding_system): fix gcc warning
	* file-coding.c (syms_of_file_coding): [2].

	* fileio.c (Fexpand_file_name):
	* fileio.c (Fsysnetunam):
	* fileio.c (Ffile_exists_p):
	* fileio.c (Ffile_executable_p):
	* fileio.c (Fverify_visited_file_modtime):
	Clean up GCPROing.

	* fileio.c (syms_of_fileio): [2].

	* filelock.c (lock_file_1):
	* filelock.c (current_lock_owner):
	* filelock.c (lock_if_free):
	* filelock.c (lock_file):
	* filelock.c (unlock_file):
	Clean up GCPROing.

	* fns.c (concat): Fix gcc warning.

	* fns.c (Fmember):
	* fns.c (Fold_member):
	* fns.c (Fmemq):
	* fns.c (Fold_memq):
	* fns.c (memq_no_quit):
	* fns.c (Fassoc):
	* fns.c (Fold_assoc):
	* fns.c (Fassq):
	* fns.c (Fold_assq):
	* fns.c (assq_no_quit):
	* fns.c (Frassoc):
	* fns.c (Fold_rassoc):
	* fns.c (Frassq):
	* fns.c (Fold_rassq):
	* fns.c (rassq_no_quit):
	* fns.c (Fdelete):
	* fns.c (Fold_delete):
	* fns.c (Fdelq):
	* fns.c (Fold_delq):
	* fns.c (delq_no_quit):
	* fns.c (Fremassoc):
	* fns.c (Fremassq):
	* fns.c (remassq_no_quit):
	* fns.c (Fremrassoc):
	* fns.c (Fremrassq):
	* fns.c (remrassq_no_quit):
	* fns.c (Freverse):
	* fns.c (mapcar1):
	[1].

	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_delete_frame):
	Register popups with dialog code so keyboard traversing works.

	* frame-tty.c (tty_raise_frame_no_select): [1].

	* frame-x.c:
	* frame-x.c (x_set_frame_text_value):
	* frame-x.c (x_set_frame_properties):
	* frame-x.c (x_create_widgets):
	[7].

	* frame.c:
	* frame.c (Fmouse_pixel_position): Minor doc fixes.

	* frame.h (wrap_frame): New.
	Macro like wrap_device.

	* general.c:
	* general.c (SYMBOL):
	* general.c (syms_of_general):
	Major reorg.  This is now just a wrapper and symbols themselves
	are listed in general-slots.h.

	* glyphs-eimage.c (tiff_instantiate): Need cast to fix warning.
	* glyphs-msw.c (mswindows_resource_instantiate): [5].

	* glyphs-msw.c (mswindows_native_layout_instantiate):
	Add DS_CONTROL so keyboard traversal will work.

	* glyphs-widget.c:
	* glyphs-widget.c (syms_of_glyphs_widget):
	Move some symbols to general-slots.h.

	* glyphs-x.c:
	* glyphs-x.c (xbm_instantiate_1):
	* glyphs-x.c (x_xbm_instantiate):
	* glyphs-x.c (x_xface_instantiate):
	* glyphs-x.c (autodetect_instantiate):
	* glyphs-x.c (cursor_font_instantiate):
	* glyphs-x.c (x_update_widget):
	* glyphs-x.c (x_widget_instantiate):
	* glyphs.c (bitmap_to_lisp_data):
	* glyphs.c (pixmap_to_lisp_data):
	[7].

	* glyphs.c (syms_of_glyphs):
	[2].

	* gui-x.c:
	* gui-x.c (print_widget_value):
	* 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):
	* gui-x.c (gui_items_to_widget_values_1):
	* gui-x.c (gui_items_to_widget_values):
	* gui-x.c (syms_of_gui_x):
	* gui-x.c (vars_of_gui_x):
	Mule-ize entire file.  Move menu-no-selection-hook to gui.c.
	[9].

	* gui-x.h:
	Muleize, prototype changes matching gui-x.c.

	* gui.c:
	* gui.c (separator_string_p):
	* gui.c (gui_item_add_keyval_pair):
	* gui.c (make_gui_item_from_keywords_internal):
	* gui.c (signal_too_long_error):
	* gui.c (parse_gui_item_tree_item):
	* gui.c (syms_of_gui):
	* gui.c (vars_of_gui):
	* gui.h:
	menu-no-selection-hook moved here (used by MSWin).
	Move some symbols to general-slots.h.
	[6].
	[9].

	* insdel.c (get_buffer_pos_char):
	* insdel.c (get_buffer_range_char):
	Add GC comments.

	* keymap.c (keymap_lookup_directly):
	* keymap.c (keymap_store):
	* keymap.c (ensure_meta_prefix_char_keymapp):
	* keymap.c (describe_map):
	* keymap.h:
	Support new button modifiers.

	* lisp-disunion.h (wrap_object):
	* lisp-disunion.h (XSETOBJ):
	Rename make_obj to wrap_object.

	* lisp-union.h:
	* lisp-union.h (make_int):
	* lisp-union.h (make_char):
	Support wrap_object.

	* lisp.h:
	* lisp.h (LIST_LOOP):
	* lisp.h (EXTERNAL_LIST_LOOP):
	* lisp.h (LIST_LOOP_2):
	* lisp.h (EXTERNAL_LIST_LOOP_1):
	* lisp.h (EXTERNAL_LIST_LOOP_2):
	* lisp.h (EXTERNAL_LIST_LOOP_3):
	* lisp.h (EXTERNAL_LIST_LOOP_4_NO_DECLARE):
	* lisp.h (PRIVATE_EXTERNAL_LIST_LOOP_6):
	* lisp.h (GET_EXTERNAL_LIST_LENGTH):
	* lisp.h (EXTERNAL_ALIST_LOOP_5):
	* lisp.h (EXTERNAL_ALIST_LOOP_6):
	* lisp.h (EXTERNAL_ALIST_LOOP_6_NO_DECLARE):
	* lisp.h (EXTERNAL_PROPERTY_LIST_LOOP_5_NO_DECLARE):
	* lisp.h (EXTERNAL_PROPERTY_LIST_LOOP_7):
	* lisp.h (struct Lisp_Symbol):
	* lisp.h (maybe_continuable_error_with_frob):
	Fix up section comments.
	Add new types for char to indicate usage.
	Delete symbols auto-generated from general-slots.h.
	Add prototypes for structured error functions.
	Add long comments describing looping macros and change interface
	so that lvalues are automatically declared.
	Add NO_DECLARE macro in case callers want to declare lvalues
	themselves.

	* lread.c (read_syntax_error):
	* lread.c (continuable_read_syntax_error):
	* lread.c (read_structure):
	* lread.c (sequence_reader):
	* lread.c (read_list_conser):
	* lread.c (read_compiled_function):
	Rename syntax_error and continuable_syntax_error to avoid clash
	with same-named structured error functions.

	* menubar-msw.c (mswindows_translate_menu_or_dialog_item):
	* menubar-msw.c (populate_menu_add_item):
	* menubar-msw.c (populate_or_checksum_helper):
	[5].
	[9].

	* menubar-x.c:
	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	Mule-ize whole file.

	* menubar.c (Fnormalize_menu_item_name): Add optimization.

	* mule-charset.c (Fmake_charset):
	* mule-wnnfns.c (Fwnn_set_param):
	[1].

	* ntproc.c (create_child):
	* ntproc.c (Fwin32_set_current_locale):
	Add comments portending doom.

	* objects-msw.c:
	* objects-msw.c (old_font_enum_callback_2):
	* objects-msw.c (font_enum_callback_1):
	* objects-msw.c (mswindows_enumerate_fonts):
	[5].

	* objects-x.c:
	* objects-x.c (allocate_nearest_color):
	* objects-x.c (x_parse_nearest_color):
	* objects-x.c (x_initialize_color_instance):
	* objects-x.c (x_print_color_instance):
	* objects-x.c (x_finalize_color_instance):
	* objects-x.c (x_valid_color_name_p):
	* objects-x.c (x_initialize_font_instance):
	* objects-x.c (x_print_font_instance):
	* objects-x.c (valid_x_font_name_p):
	* objects-x.c (truename_via_FONT_prop):
	* objects-x.c (truename_via_random_props):
	* objects-x.c (truename_via_XListFonts):
	* objects-x.c (x_font_truename):
	* objects-x.c (x_font_instance_truename):
	* objects-x.c (x_font_instance_properties):
	* objects-x.c (x_list_fonts):
	* objects-x.c (x_find_charset_font):
	Mule-ize entire file.
	[7].

	* objects-x.h:
	Mule-verify.

	* print.c:
	* print.c (std_handle_out_external):
	* print.c (debug_print_no_newline):
	* print.c (syms_of_print):
	Output to all debugger kinds in debug-print.
	Fix console-output code under MSWin to actually work.

	* process-nt.c (send_signal):
	* process-nt.c (nt_create_process):
	Use newer Unicode macros.

	* process-unix.c (unix_create_process):
	* process-unix.c (unix_canonicalize_host_name):
	* process-unix.c (unix_open_network_stream):
	[7].

	* scrollbar-x.c:
	Mule-verify.

	* search.c (syms_of_search):
	[2].

	* select-msw.c (mswindows_destroy_selection):
	Use LIST_LOOP_2.

	* select-x.c (symbol_to_x_atom):
	[7].

	* select.c (syms_of_select):
	[2].

	* sound.c (Fplay_sound_file):
	[7].

	* specifier.c:
	* specifier.c (decode_specifier_type):
	* specifier.c (Fvalid_specifier_locale_type_p):
	* specifier.c (check_valid_locale_or_locale_type):
	* specifier.c (decode_locale):
	* specifier.c (decode_locale_type):
	* specifier.c (decode_locale_list):
	* specifier.c (check_valid_domain):
	* specifier.c (decode_specifier_tag_set):
	* specifier.c (Fcanonicalize_tag_set):
	* specifier.c (Fdefine_specifier_tag):
	* specifier.c (Fspecifier_tag_predicate):
	* specifier.c (check_valid_inst_list):
	* specifier.c (check_valid_spec_list):
	* specifier.c (decode_how_to_add_specification):
	* specifier.c (check_modifiable_specifier):
	* specifier.c (specifier_add_spec):
	* specifier.c (boolean_validate):
	* specifier.c (display_table_validate):
	[9].

	* specifier.c (syms_of_specifier):
	Move some symbols to general-slots.h.
	[2].

	* symbols.c:
	* symbols.c (Fmapatoms):
	* symbols.c (Fapropos_internal):
	Add GCPROs.

	* symbols.c (set_default_buffer_slot_variable):
	* symbols.c (set_default_console_slot_variable):
	[1].

	* symbols.c (defsymbol_massage_name_1):
	* symbols.c (defkeyword_massage_name):
	* symbols.c (deferror_1):
	* symbols.c (deferror):
	* symbols.c (deferror_massage_name_and_message):
	* symeval.h:
	* symeval.h (DEFSYMBOL):
	Support DEFSYMBOL*, DEFKEYWORD, DEFERROR

	* symbols.c (syms_of_symbols):
	[2].

	* symsinit.h:
	* symsinit.h (init_win32): New.
	Also new is syms_of_dialog_mswindows.

	* syswindows.h:
	Add new Unicode macros, missing Cygwin wide-char functions,
	convenience conversion macros for Qmswindows_tstr, macros for
	encapsulating required MSWin <-> Cygwin filename conversions,
	prototype for dynamically-extracted (not in NT 3.51) functions.

	* toolbar-x.c:
	Mule-verify.

	* tooltalk.c (Fadd_tooltalk_message_arg):
	* tooltalk.c (Fadd_tooltalk_pattern_attribute):
	* tooltalk.c (Fadd_tooltalk_pattern_arg):
	[7].

	* tooltalk.c (syms_of_tooltalk):
	[2].

	* unexnt.c:
	* unexnt.c (unexec):
	Fix up headers, declaration of unexec() to be more standard.

2000-07-20  Martin Buchholz  <martin@xemacs.org>

	* offix.h: Revert change to guard macros - they're used in offix.c!

2000-07-18  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* lisp.h: Defsubred Fdelete.

	* console-msw.h:  (msprinter_default_printer): Added.

	* console-msw.c (msprinter_canonicalize_console_connection):
	(msprinter_canonicalize_device_connection): Added.

	* device-msw.c (msprinter_default_printer):
	(Fmswingows_get_default_printer):
	(signal_enum_priner_error):
	(Fmswingows_printer_list): Added.

2000-07-19  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.35 is released.

2000-07-19  Martin Buchholz  <martin@xemacs.org>

	* select-x.c (x_handle_selection_request):
	Text selected in xemacs and pasted into xterm failed to appear.
	Spelling fixes and cosmetic changes.

2000-07-18  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* event-msw.c (mswindows_drain_windows_queue): Correctly check for
	XEmacs frame (fix for doubling chars in dialog boxes).

2000-07-17 Alastair J. Houghton <ajhoughton@lineone.net>

	* select.c (select_convert_in, select_convert_out):
	Don't call intern() every time.

	* select.c (Qselect_convert_in, Qselect_convert_out): New.
	* select.c (vars_of_select): Initialise them.

2000-07-18 Alastair J. Houghton <ajhoughton@lineone.net>

	* select.c (selection-coercible-types): New.

	* select.c (own-selection-internal):
	* select.c (get-selection-internal):
	MULE bug fix - these should default to COMPOUND_TEXT and not
	STRING for MULE. I think.

	* select.c (select_convert_out): Use selection-coercible-types
	to find types that we can attempt to perform coercions on.

2000-07-18  Martin Buchholz  <martin@xemacs.org>

	* mule-wnnfns.c:
	* mule-canna.c:
	Add coding: cookie to identify encoding.

	* mule-canna.c (CANNA_mode_keys): make static.
	Use proper prototypes, even for functions of no arguments.
	RemOve external prototype for Fding().

	* symsinit.h: Add missing prototype for reinit_vars_of_mule_wnn.

	* select.c (syms_of_select): Add missing DEFSUBR.

2000-07-18 Alastair J. Houghton <ajhoughton@lineone.net>

	* select.c (get_selection_internal, own_selection_internal):
	Make the type default to STRING, rather than placing a nil type
	into Vselection_alist.

2000-07-17 Alastair J. Houghton <ajhoughton@lineone.net>

	* gpmevent.c (tty_selection_exists_p):
	* gpmevent.c (tty_own_selection):
	Updated parameter lists.

2000-07-15 Alastair J. Houghton <ajhoughton@lineone.net>

	* select.h (selection-alist): Removed declaration.

	* select.h (get_local_selection):
	* select.c (get_local_selection):
	Made static.

	* select.h (convert_selection): Removed declaration.
	* select.c (convert_selection): Removed.
	This function belongs in Lisp.

	* select.h (select_convert_in): Declare.
	* select.h (select_convert_out): Declare.
	* select.c (select_convert_in): New.
	* select.c (select_convert_out): New.
	New conversion functions for other files to call.

	* select.h (select_notify_buffer_kill): Declare.
	* select.c (select_notify_buffer_kill): New.
	New functions that get called from kill-buffer.

	* buffer.c (kill-buffer): Call select_notify_buffer_kill, rather than
	X-specific lisp code.

	* select.h: Declare some of the lisp-visible functions for
	external use.

	* select.c (clean_local_selection_data): Removed. This was
	a disgusting function, and previously should have been in
	select-x.c in any case. The functionality is now provided
	in select-convert-from-integer (select.el).

	* select.c (available-selection-types): Fixed stupidity where
	INTEGER and ATOM got added twice. Also add STRING when we see an
	extent.

	* select.c (get-selection-internal): Removed symbol stripping. No
	longer causes conversion when data comes from the internal cache.

	* select.c (syms_of_select): Added new functions.

	* select-x.c (motif_clipboard_cb): Use select_convert_out. Rewrote
	error checking - previously this called abort!

	* select-x.c (x_own_selection): Changed comment.

	* select-x.c (x_handle_selection_request): Use select_convert_out.
	Don't mess with selection-alist; it's an internal variable of select.c.

	* select-x.c (x_get_foreign_selection): Use select_convert_in.

	* select-x.c (x_handle_selection_clear): Use get-selection-timestamp,
	rather than messing with selection-alist.

	* select-msw.c (mswindows_get_foreign_selection):
	Use TO_INTERNAL_FORMAT rather than hacking.

2000-07-14  Martin Buchholz  <martin@xemacs.org>

	* process-unix.c (unix_open_multicast_group):
	(unix_open_multicast_group): Remove useless casts.

2000-07-13  Martin Buchholz  <martin@xemacs.org>

	* sound.c (Fplay_sound): Fix `unused variable' warning.

	* emacs.c (main): Use correct type for _environ on SCO5.

2000-07-12 Alastair J. Houghton <ajhoughton@lineone.net>

	* console.h (own_selection_method):
	* console.h (selection_exists_p_method):
	* console.h (available_selection_types_method): New.
	* console.h (register_selection_data_type_method): New.
	* console.h (selection_data_type_name): New.

	* console-msw.h (mswindows_destroy_selection): Declare it.  New
	function & alist to track GlobalAlloc()'d handles that need
	releasing when the clipboard data gets replaced or emptied.

	* event-msw.c (mswindows_wnd_proc): Call it.

	* lisp.h, general.c (Qappend): New symbol representing a
	`how-to-add' mode.

	* select.c (own-selection-internal):
	* select.c (selection-exists-p):
	* select.c (available-selection-types): New.
	* select.c (register-selection-data-type): New.
	* select.c (selection-data-type-name): New.  New functions to deal
	with device-specific selection data formats.
	* select.c (selection-converter-out-alist): Renamed.
	* select.c (selection-converter-in-alist): New.
	* select.c (selection-appender-alist): New.  Added new alists.
	* select.c (syms_of_select, vars_of_select): Added new symbols &
	variables.
	* select.c (get_local_selection): Split.
	* select.c: Removed spurious type checking - selections may now be
	of any type, not just strings.
	* select.c (own-selection-internal):

	* select.h, select.c (convert_selection): New. Created
	convert_selection() function based on get_local_selection().
	* select.h, select.c (QCF_*): New symbols representing mswindows
	clipboard formats.
	* select.h, select.c (Qreplace_all, Qreplace_existing): New
	symbols representing `how-to-add' modes.

	* select-msw.c (x_sym_p): New.
	* select-msw.c (symbol_to_ms_cf): New.
	* select-msw.c (ms_cf_to_symbol): New. New functions to deal with
	symbols & clipboard formats. Can also handle string names.
	* select-msw.c (mswindows_own_selection):
	* select-msw.c (mswindows_selection_exists_p):
	Added `data-type' parameter. Use it.
	* select-msw.c (mswindows_available_selection_types): New.
	* select-msw.c (mswindows_register_selection_data_type): New.
	* select-msw.c (mswindows_selection_data_type_name): New.
	* select-msw.c (mswindows_own_selection):
	* select-msw.c (mswindows_get_foreign_selection):
	* select-msw.c (mswindows_selection_exists_p):	Rewrote.
	* select-msw.c (console_create_select_mswindows): Added new methods.
	* select-msw.c (mswindows_destroy_selection): New.
	* select-msw.c (Vhandle_alist): New list.
	* select-msw.c (mswindows_own_selection):

	* select-x.c (x_own_selection):
	* select-x.c (x_selection_exists_p):
	* select-x.c: Added some comments about maybe using new
	functionality.
	* select-x.c (x_own_selection):

	* specifier.c: Remove definition of Qappend (now in general.c)
	* specifier.c (syms_of_specifier): Remove Qappend.

2000-07-12  Martin Buchholz  <martin@xemacs.org>

	* config.h.in: Add socklen_t.

	* s/decosf4-0.h: No special compiler flags needed or desired.
	In particular, undefine _BSD for DEC OSF 4.0.

2000-07-07  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* redisplay-msw.c (msprinter_frame_output_end): Added.
	(console_type_create_redisplay_mswindows): Referred the above.

	* frame.c (setup_frame_without_minibuffer): Do not create a
	default minibuffer frame on a printer device.

	* frame-msw.c (apply_dc_geometry): Added.
	(msprinter_start_page):
	(msprinter_init_frame_3):
	(msprinter_eject_page): Use it.

	* console-msw.h (struct msprinter_frame): Added pix_left and top,
	and removed residual duplex and orientation properties.

2000-07-11  Martin Buchholz  <martin@xemacs.org>

	* eval.c (function_argcount): Work around a DEC CC compiler bug.

	* unexalpha.c: Remove system prototypes from C sources!

2000-07-09  Adrian Aichner  <aichner@ecf.teradyne.com>

	* eval.c: Remove references to M-x edit-options in DEFUNs for
	`defvar' and `defconst'.

2000-07-09  Martin Buchholz  <martin@xemacs.org>

	* config.h.in: Remove SMART_INCLUDE hackery.

	PostgreSQL hacking:
	* config.h.in: Don't use SMART_INCLUDE.

	* postgresql.h: Include libpq-fe.h here.  Fix typo.
	* inline.c: Simply #include "postgresql.h"
	* postgresql.c:
	- Don't use SMART_INCLUDE
	- Use simply "const".
	- Use standard doc string conventions.
	- Use correct type for result of PQstatus.

2000-07-09  Martin Buchholz  <martin@xemacs.org>

	* glyphs-x.c (x_xface_instantiate): Fix C++ compilation warnings.

	C++ compilation changes.
	* config.h.in (EXTERN_C): Define.
	* config.h.in (not): This is also a C++ keyword.
	* unexalpha.c (DEFAULT_ENTRY_ADDRESS): Enable C++ compilation.
	* cm.c: Use EXTERN_C.
	* redisplay-tty.c: Use EXTERN_C.
	* sysdep.c: Use EXTERN_C.  Remove Gould support.

2000-07-09  Martin Buchholz  <martin@xemacs.org>

	* general.c: Remove duplicate definition for Qfunction.

2000-07-08  Ben Wing  <ben@xemacs.org>

	* device-msw.c (msprinter_init_device):
	* device-msw.c (sync_printer_with_devmode):
	* device-msw.c (handle_devmode_changes):
	* device-msw.c (print_dialog_worker):
	* device-msw.c (Fmsprinter_apply_settings):
	* device-msw.c (hash_devmode):
	* device-msw.c (Fmsprinter_settings_despecialize):
	use Qmswindows_tstr, not Qctext.

	* vm-limit.c (check_memory_limits):
	avoid infinite loop printing warning messages.

2000-07-05  Craig Lanning  <lanning@scra.org>

	* Makefile.in.in: Add support for including the Windows resources
	when building with the cygwin and mingw targets.

	* buffer.c: from Dan Holmsand, on Windows $PWD is most likely either
	not set or not correct.
	(directory_is_current_directory): Don't compile for WIN32_NATIVE.
	(init_initial_directory): Don't try to use $PWD on the
	WIN32_NATIVE target.

	* s\cygwin32.h:
	[[Add -mwindows to eliminate console window.]] not required --ben
	(HAVE_NATIVE_SOUND): removed; now handled by configure.
	(MAIL_USE_POP): removed; now handled by configure.

	* s\mingw32.h: [[Add -mwindows to eliminate console window.]] not in
	C_SWITCH_SYSTEM or it will affect lib-src progs. --ben
	(HAVE_NATIVE_SOUND): removed; now handled by configure.
	(MAIL_USE_POP): removed; now handled by configure.
	(ENCAPSULATE_STAT): from Dan Holmsand, added.
	(ENCAPSULATE_FSTAT): from Dan Holmsand, added.
	(DIRECTORY_SEP): from Dan Holmsand, use lisp variable instead of
	constant string.
	(HAVE_TIMEVAL): from Dan Holmsand, added; struct timeval is picked
	up from <winsock.h> via systime.h.
	(HAVE_GETPAGESIZE): from Dan Holmsand, added.
	(getpagesize): from Dan Holmsand, added.
	Added #endif which was left dangling by Ben's mega patch; added
	comment to help prevent this in the future.

	* sysdll.c: added #include <windows.h> for WIN32_NATIVE case.

2000-07-05  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* console-msw.h (struct mswindows_device): Removed unnecessary
	cached device geometry values.
	Added update_tick and an accessor macro.
	(Lisp_Devmode): Added lrecord declaration.
	(struct msprinter_device): Contain devmode as a Lisp object.
	Added mswindows_get_selected_frame_hwnd();

	* console.h (struct console_methods): Indentation nitpicking.

	* device-msw.c (mswindows_init_device): Do not initialize geometry
	cache. Initialize update tick.
	(mswindows_device_system_metrics): Ask the device for its geometry.
	(global_free_2_maybe):
	(devmode_to_hglobal):
	(handle_printer_changes):
	(ensure_not_printing):
	(print_dialog_worker):
	(Fmsprinter_print_setup_dialog):
	(Fmsprinter_print_dialog):
	(plist_get_margin):
	(plist_set_margin):
	(Fmsprinter_page_setup_dialog): Added functions.
	(sync_printer_with_devmode):
	(handle_devmode_changes):
	(Fmsprinter_get_settings):
	(Fmsprinter_select_settings):
	(Fmsprinter_apply_settings):
	(allocate_devmode):
	(Fmsprinter_settings_copy):
	(Fmsprinter_settings_despecialize):
	(print_devmode):
	(finalize_devmode):
	(equal_devmode):
	(hash_devmode): Added functions
	(syms_of_device_mswindows): Init devmode lrecord class.

	* device.h: Added an exfun for find-device.

	* event-msw.c (mswindows_wnd_proc): Do not update the cached
	geometry; although, recreate the device compatible DC.

	* frame-msw.c (mswindows_get_selected_frame_hwnd): Added.
	(msprinter_init_frame_3):
	(msprinter_frame_property):
	(msprinter_internal_frame_property_p):
	(msprinter_frame_properties):
	(msprinter_set_frame_properties): Removed 'orientation and 'duplex
	print job properties (will move to device settings).

	* lisp.h: Added symbols.

	* general.c (syms_of_general): Declared them.

	* hash.c (string_hash): Added.

	* lrecord.h (lrecord_type): Added devmode lrecord type.

2000-07-02  Mike Sperber <mike@xemacs.org>

	* s/freebsd.h (INTERRUPTIBLE_OPEN): open *is* interruptible on
	FreeBSD 4.0.

2000-06-07  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* doprnt.c (emacs_doprnt_1): Fix problem with %0XXd for a negative
	integer.

2000-06-07  MORIOKA Tomohiko  <tomo@urania.m17n.org>

	* data.c (Fstring_to_number): Don't recognize floating point if
	base is not 10.

2000-06-22  Martin Buchholz  <martin@xemacs.org>

	* glyphs-widget.c (tab_control_query_geometry):
	(widget_query_geometry):
	(button_query_geometry):
	* glyphs.c (text_query_geometry):
	Enforce type correctness.

2000-06-18  Martin Buchholz  <martin@xemacs.org>

	* s/decosf4-0.h (_etext): Use portable _etext instead of etext.
	* s/decosf4-0.h (_edata): Use portable _edata instead of edata.

2000-06-17  Martin Buchholz  <martin@xemacs.org>

	* s/decosf4-0.h: Never #include "/usr/include/FOO.h" because this
	conflicts with gcc's fixincluded version of FOO.h.

	* glyphs.h (image_instance_geometry): Remove trailing `,'

2000-06-08  Mike Alexander  <mta@arbortext.com>

	(MAX_SHOVE_BUFFER_SIZE): Change to 512 to match stream buffer size
	(shove_thread): Don't write the same output twice
	(make_ntpipe_output_stream): Increase priority of shove thread
	(ntpipe_shove_writer): Call SwitchToThread to give shove thread a
	chance to run
	(ntpipe_shove_closer): Don't delete the pipe until we're done with
	it.

2000-06-12  Ben Wing  <ben@xemacs.org>

	* s\mingw32.h (sigset):
	* s\windowsnt.h (sigset):
	rename msw_ to mswindows_ for consistency with general convention.

2000-06-12  Ben Wing  <ben@xemacs.org>

	* console-msw.c:
	* console-msw.c (mswindows_get_console_hwnd):
	* console-msw.c (mswindows_ensure_console_allocated):
	* console-msw.c (mswindows_hide_console):
	* console-msw.c (mswindows_show_console):
	* console-msw.c (mswindows_ensure_console_buffered):
	* console-msw.c (mswindows_output_console_string):
	* console-msw.c (mswindows_windows9x_p):
	* console-msw.h:
	* device-msw.c (mswindows_get_workspace_coords):
	* device-msw.c (mswindows_device_system_metrics):
	* dialog-msw.c (mswindows_popup_dialog_box):
	* event-msw.c (mswindows_wnd_proc):
	* frame-msw.c (mswindows_size_frame_internal):
	* menubar-msw.c (mswindows_translate_menu_or_dialog_item):
	* menubar-msw.c (displayable_menu_item):
	* menubar-msw.c (mswindows_char_is_accelerator):
	* nt.c:
	* nt.c (mswindows_sigset):
	* nt.c (mswindows_sigrelse):
	* nt.c (mswindows_sigpause):
	* nt.c (mswindows_raise):
	* nt.c (timer_proc):
	* ntproc.c:
	* ntproc.c (find_child_console):
	* ntproc.c (sys_kill):
	* print.c:
	* print.c (std_handle_out_external):
	* process-nt.c (find_child_console):
	* process-nt.c (send_signal_the_95_way):
	* process-nt.c (ensure_console_window_exists):
	* process-nt.c (nt_create_process):
	* syssignal.h:
	rename msw_ to mswindows_ for consistency with general convention.

	* emacs.c:
	* dumper.c:
	include nt.h, not syswindows.h.

	* nt.c (mswindows_fstat):
	* nt.c (mswindows_stat):
	prefix mswindows_ instead of attempting to directly override the
	library functions.  fix declarations.

	* nt.h:
	include syswindows.h.  move some sysdep.h stuff here.

	* ntheap.h:
	include syswindows.h, not <windows.h>.

	* ntplay.c:
	clean up headers.

	* sysdep.c:
	clean up headers.

	* sysdep.c (sys_fstat):
	* sysdep.c (sys_stat):
	call mswindows versions when appropriate.

	* sysdep.h:
	move mswin decls to nt.h.

	* syswindows.h:
	add long comment describing appropriate use of the various windows
	headers.

2000-06-11  Ben Wing  <ben@xemacs.org>

	* device-x.c: Correct doc string for sixth arg of x-get-resource.

2000-06-10  Ben Wing  <ben@xemacs.org>

	* Makefile.in.in (release):
	Correction to make sure xemacs.exe always dumped when correct.

	* alloca.c:
	* balloon_help.c:
	[[[[3]]]]: Conditionalize on actual problem, not WINDOWSNT.

	* buffer.c (set_buffer_internal):
	[[[[2]]]]: Remove HAVE_FEP code.

	* buffer.c (init_initial_directory):
	[3].

	* bytecode.c:
	[[[[4]]]]: limits.h standardly included in lisp.h; remove from
	individual files.

	* callproc.c:
	* callproc.c (call_process_cleanup):
	* callproc.c (Fold_call_process_internal):
	* callproc.c (child_setup):
	* callproc.c (getenv_internal):
	* callproc.c (init_callproc):
	* callproc.c (vars_of_callproc):
	[[[[1]]]]: WINDOWSNT -> WIN32_NATIVE.
	__CYGWIN32__ -> CYGWIN.
	DOS_NT -> WIN32_NATIVE.
	Remove MSDOS support/references, converting to WIN32_NATIVE
	  where correct.
	__MINGW32__ -> MINGW.
	Fix windows.h includes.
	Remove bogus HAVE_NTGUI.

	* config.h.in:
	[2].

	* console-msw.c:
	mswindows_message_outputted added for use in allowing startup
	errors on the console to be seen.

	* console-msw.c (msw_ensure_console_allocated):
	* console-msw.c (msw_output_console_string):
	* console-msw.c (DHEADER):
	* console-msw.c (DOPAQUE_DATA):
	* console-msw.c (DEVENT):
	* console-msw.c (DCONS):
	* console-msw.c (DCONSCDR):
	* console-msw.c (DSTRING):
	* console-msw.c (DVECTOR):
	* console-msw.c (DSYMBOL):
	* console-msw.c (DSYMNAME):
	Fix warnings.

	* console-stream.c (stream_init_console):
	Fix text/binary problems.

	* device-msw.c:
	* device-msw.c (mswindows_finish_init_device):
	* device-msw.c (mswindows_delete_device):
	[1].

	* device.c (handle_asynch_device_change):
	[3].

	* dgif_lib.c:
	* dgif_lib.c (DGifOpenFileName):
	* dgif_lib.c (DGifOpenFileHandle):
	* dgif_lib.c (DGifGetLine):
	* dgif_lib.c (DGifGetPixel):
	Added config.h/lisp.h, fix up includes.
	[1].

	* dired-msw.c:
	[4].

	* dired.c:
	* dired.c (file_name_completion):
	* dired.c (Ffile_attributes):
	* dired.c (syms_of_dired):
	[1].

	* dumper.c:
	* dumper.c (pdump_file_unmap):
	* dumper.c (pdump_load):
	[1].

	* editfns.c:
	* editfns.c (Ftemp_directory):
	* editfns.c (user_login_name):
	* editfns.c (Fuser_real_login_name):
	* editfns.c (get_home_directory):
	[1].

	* elhash.c (finish_marking_weak_hash_tables):
	[[[[5]]]]: Fix GCC warnings.

	* emacs.c:
	* emacs.c (mswindows_handle_hardware_exceptions):
	* emacs.c (make_arg_list_1):
	* emacs.c (main_1):
	* emacs.c (Fkill_emacs):
	* emacs.c (Fdump_emacs):
	[1].
	Fix problems with nested crashes, add long comment.

	* event-Xt.c (init_event_Xt_late):
	[1].

	* event-msw.c:
	* event-msw.c (mswindows_dde_callback):
	* event-msw.c (mswindows_handle_sticky_modifiers):
	* event-msw.c (mswindows_wnd_proc):
	[1].
	[5].

	* events.c (character_to_event):
	[1].

	* fileio.c:
	* fileio.c (Ffile_name_directory):
	* fileio.c (Ffile_name_nondirectory):
	* fileio.c (directory_file_name):
	* fileio.c (Fexpand_file_name):
	* fileio.c (Fsubstitute_in_file_name):
	* fileio.c (Ffile_name_absolute_p):
	* fileio.c (check_executable):
	* fileio.c (Ffile_readable_p):
	* fileio.c (Ffile_accessible_directory_p):
	* fileio.c (Ffile_modes):
	* fileio.c (Funix_sync):
	* fileio.c (vars_of_fileio):
	[1]. [4].

	[[[[7]]]]: Move CORRECT_DIR_SEPS to s\windowsnt.h.

	Expand getdefdir defn.
	Fix bogus rename() comment.

	[[[[6]]]]: Fix Windows includes w.r.t. removed nt\inc.  Attempt
	to use standard XEmacs include files, e.g. sysfile.h, rather
	than system-specific includes.

	* fns.c:
	* fns.c (Fsubseq):
	[5]. [6].

	* frame.c (vars_of_frame):
	[1].

	* getloadavg.c:
	* getloadavg.c (getloadavg):
	[1]. [6].
	#ifdef XEMACS not defined on Cygwin.  Remove this; no need for it.
	(We don't use it elsewhere in the code; just add a comment.)

	* gif_io.c:
	[6].
	Add config.h.

	* glyphs-msw.c:
	* glyphs-msw.c (mswindows_resource_instantiate):
	[1].

	* glyphs-x.c (x_native_layout_instantiate):
	[5].

	* gui-msw.c (Fmswindows_shell_execute):
	[1].

	* insdel.c:
	[4].

	* lisp.h:
	[4]. [5].

	* lread.c (locate_file_in_directory_mapper):
	[1].

	* lstream.c:
	[4].

	* mem-limits.h:
	* mem-limits.h (get_lim_data):
	[1].

	* menubar-msw.c:
	[4].

	* ndir.h:
	[1].

	* nt.c:
	* nt.c (getwd):
	* nt.c (closedir):
	* nt.c (rva_to_section):
	* nt.c (mswindows_executable_type):
	[1]. [6].
	Fix closedir() defn.

	* nt.h:
	[[[[8]]]]: *_OK defs moved to sysfile.h.

	* ntproc.c:
	[6]. [7].

	* objects-x.c:
	[4].

	* print.c:
	* print.c (std_handle_out_external):
	[1]. [4].

	* process-nt.c:
	* process-nt.c (nt_create_process):
	[6].
	try to fix process quoting somewhat.

	* process-unix.c (unix_create_process):
	[1].

	* process.c:
	* process.c (vars_of_process):
	Add Vnull_device.

	* process.h:
	[1].

	* realpath.c:
	* realpath.c (xrealpath):
	[1].

	* redisplay-tty.c (init_tty_for_redisplay):
	[3].

	* redisplay.c:
	[4]. [6].

	* scrollbar-msw.c:
	[4].

	* sheap.c:
	* sheap.c (more_static_core):
	* sheap.c (report_sheap_usage):
	[5]. [6].

	* signal.c:
	* signal.c (alarm_signal):
	[1]. [6].

	* sound.c:
	[6].

	* strftime.c:
	* strftime.c (zone_name):
	[1]. [5].

	* symsinit.h (init_sunpro):
	[1].

	* syscommctrl.h:
	commctrl.h not in Cygwin b20.1.

	* sysdep.c:
	* sysdep.c (endif):
	* sysdep.c (sys_subshell):
	* sysdep.c (init_baud_rate):
	* sysdep.c (emacs_get_tty):
	* sysdep.c (emacs_set_tty):
	* sysdep.c (tty_init_sys_modes_on_device):
	* sysdep.c (init_system_name):
	* sysdep.c (sys_open):
	* sysdep.c (interruptible_open):
	* sysdep.c (sys_fopen):
	* sysdep.c (sys_mkdir):
	* sysdep.c (sys_rename):
	* sysdep.c (get_process_times_1):
	[1]. [6].

	* sysdep.h:
	[1].

	* sysdir.h:
	* sysdir.h (DIRENTRY_NONEMPTY):
	[1]. [6].

	* sysdll.c (dll_init):
	* sysdll.h:
	[1].

	* sysfile.h:
	[1]. [6]. [8].
	added text/binary defs.

	* sysfloat.h:
	[1].

	* sysproc.h:
	* sysproc.h (EDESTADDRREQ):
	* sysproc.h (poll_fds_for_input):
	[1]. [6].

	* syspwd.h:
	[6].

	* syssignal.h:
	[1].

	* systime.h:
	[1]. [6].

	* systty.h:
	[1].

	* syswindows.h:
	[1].
	Always define WIN32_LEAN_AND_MEAN.

	* unexcw.c (unexec):
	[5].

	* unexec.c:
	* unexec.c (copy_text_and_data):
	* unexec.c (adjust_lnnoptrs):
	[1].

	* unexnt.c:
	* unexnt.c (_start):
	[1].

2000-06-07  Ben Wing  <ben@xemacs.org>

	* mule-mcpath.c, mule-mcpath.h: Removed.  Old, crufty code that
	was used only as a model.  We've long since extracted any useful
	logic or code out of this. (I just did an exhaustive search.)

	* s\msdos.h: Removed.

	* s\windows95.h: Removed.

2000-06-10  Ben Wing  <ben@xemacs.org>

	* s\cygwin32.h:
	[1]. [5].
	Don't use extern with fun defs.

	* s\mingw32.h:
	[1]. [7].
	Remove nt\inc include.
	Remove getdisk, getdefdir. (The former is unused, the latter
	expanded in fileio.h.)

	* s\windowsnt.h:
	* s\windowsnt.h (WIN32_NATIVE):
	* s\windowsnt.h (HAVE_STRCASECMP):
	[1]. [7].
	Add long comment about preprocessor changes.
	Remove getdisk, getdefdir. (The former is unused, the latter
	expanded in fileio.h.)

2000-06-10  Ben Wing  <ben@xemacs.org>

	* m\arm.h:
	* m\delta.h:
	* m\intel386.h:
	* m\sequent.h:
	* m\template.h:
	* m\windowsnt.h:
	[1].
	Remove bogus/unused NO_SOCK_SIGIO.

2000-06-08  Hrvoje Niksic  <hniksic@iskon.hr>

	* lisp.h (set_string_char): Call set_string_byte with a Bufbyte,
	not an Emchar.

2000-06-04  Mike Sperber <mike@xemacs.org>

	* casetab.c (set_case_table): For `set-standard-case-table',
	actually deposit the new case tables where the rest of XEmacs can
	see them.

2000-06-05  Yoshiki Hayashi <yoshiki@xemacs.org>

	* data.c (Faset): Don't cast XCHAR() to unsigned char.

2000-06-05  Ben Wing  <ben@xemacs.org>

	* callproc.c (child_setup): Don't do close_load_descs() under
	MS Windows.  Put in a comment explaining why.

2000-05-28  Adrian Aichner  <aichner@ecf.teradyne.com>

	* process-nt.c: Reverting patch "Fixing nt_create_process for MKS
	Toolkit shell" which breaks `kill-compilation' on Windows NT
	native, retaining STDERR handling improvements.

2000-06-01  Andreas Jaeger  <aj@suse.de>

	* s/s390.h: Support for S390, based on a patch by Martin
	Schwidefsky <schwidefsky@de.ibm.com>.

2000-05-30  Andy Piper  <andy@xemacs.org>

	* window.c (allocate_window):
	(make_dummy_parent):
	(Fset_window_configuration): use new hashtable type.

	* glyphs.h (IMAGE_UNSPECIFIED_GEOMETRY):
	(struct image_instantiator_methods):
	(struct Lisp_Image_Instance): make instance geometry signed.

	* glyphs.c (instantiate_image_instantiator):
	(image_instance_query_geometry):
	(image_instance_layout):
	(image_instance_layout):
	(query_string_geometry):
	(text_query_geometry):
	(image_instantiate):
	(image_instantiate):
	(cache_subwindow_instance_in_frame_maybe):
	(subwindow_query_geometry): make instance geometry signed.

	* glyphs-widget.c (widget_query_geometry):
	(widget_layout):
	(button_query_geometry):
	(tree_view_query_geometry):
	(tab_control_query_geometry):
	(layout_query_geometry):
	(layout_layout):
	(native_layout_layout): make instance geometry signed.

2000-05-29  Olivier Galibert  <galibert@pobox.com>

	* lisp.h: Add Qfull_assoc symbol and WEAK_LIST_FULL_ASSOC
	constant.

	* general.c (syms_of_general): Add Qfull_assoc symbol.

	* data.c (finish_marking_weak_lists): Mark full-assoc lists
	correctly.
	(decode_weak_list_type): Decode full-assoc type.
	(encode_weak_list_type): Encode full-assoc type.
	(Fmake_weak_list): Update doc string.

2000-05-30  Andy Piper  <andy@xemacs.org>

	* elhash.h (hash_table_weakness): new KEY_VALUE weak hashtable.

	* elhash.c (print_hash_table): new KEY_VALUE weak hashtable.
	(decode_hash_table_weakness): ditto.
	(Fhash_table_weakness): ditto.
	(Fhash_table_type): ditto.
	(finish_marking_weak_hash_tables): ditto.
	(hash_table_weakness_validate): ditto.
	(syms_of_elhash): ditto.

2000-05-28  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.34 is released.

2000-05-22  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* redisplay.c (VERTICAL_CLIP): No longer reset when updating line
	start cache.
	(updating_line_start_cache): Gone.
	(regenerate_window): Replace resetting of VERTICAL_CLIP by
	generic code to force a minimum of 1 line laid out in the
	CMOTION_DISP case.

2000-05-22  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* glyphs.c (instantiate_image_instantiator): Check for initialized
	height & width no longer special cases IMAGE_NOTHING.
	(nothing_instantiate): Set height and width of instance.

2000-05-24  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* unexelf.c (unexec): Search for ".data" section.
	Initialize new_data2_offset from old_data_index.
	Remove redundant check for ElfW.

2000-05-23  Andy Piper  <andy@xemacs.org>

	* glyphs.c (get_image_instantiator_governing_domain): allow more
	specific domains as the governing domain rather than expecting an
	exact match. This fixes problems with layouts.

2000-05-22  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (compare_runes): check for non-images

	* glyphs.c (set_glyph_dirty_p): ditto.
	(update_glyph_cachel_data): ditto.

	* glyphs-widget.c (layout_post_instantiate): ditto.
	(layout_post_instantiate): ditto.

	* event-msw.c (mswindows_wnd_proc): warning removal.

2000-05-12  Craig Lanning  <CraigL@DyCon.com>

	* s\mingw32.h: Added #undef for CLASH_DETECTION.

	* syswindows.h: Moved PBS_SMOOTH definition to syscommctrl.h.

	* syscommctrl.h (PBS_SMOOTH): Moved from syswindows.h.

	* nt.c (rva_to_section): mingw32 needs rva_to_section.
	(mswindows_executable_type): mingw32 now has enough headers for
	this to work.

2000-05-20  Andy Piper  <andy@xemacs.org>

	* console-msw.c (mswindows_output_last_error): ; -> ,

2000-05-12  Andy Piper  <andy@xemacs.org>

	* console-msw.c (FROB): compare ints with ints.

2000-05-11  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_finalize_image_instance): make minimal build
	happy.

2000-05-20  Ben Wing  <ben@xemacs.org>

	* event-Xt.c:
	* event-Xt.c (vars_of_event_Xt):
	move modifier-keys-are-sticky to event-stream.c.

	* event-msw.c:
	* event-msw.c (mswindows_enqueue_mouse_button_event):
	* event-msw.c (key_needs_default_processing_p):
	* event-msw.c (XEMSW_LCONTROL):
	* event-msw.c (mswindows_handle_sticky_modifiers):
	* event-msw.c (FROB):
	* event-msw.c (clear_sticky_modifiers):
	* event-msw.c (output_modifier_keyboard_state):
	* event-msw.c (output_alt_keyboard_state):
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (mswindows_modifier_state):
	* event-msw.c (emacs_mswindows_handle_magic_event):
	implement sticky modifiers.

	* event-stream.c:
	* event-stream.c (vars_of_event_stream):
	move modifier-keys-are-sticky here.

	* lisp.h:
	add CHECK_FUNCTION.

	* rangetab.c:
	implement map-range-table.


2000-05-17  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* redisplay-tty.c (reset_tty_modes):
	(tty_redisplay_shutdown): Adjust argument type to
	tty_frame_output_end.

2000-05-11  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* eval.c (Fbacktrace): Don't output a line with only right
	parenthesis.

2000-05-17  Kenji Itoh  <keit@tpj.co.jp>

	* postgresql.c (Fpq_connect_poll): Replace `PS' with `polling_status'.
	(Fpq_reset_poll): Ditto.

2000-05-16  Katsumi Yamaoka  <yamaoka@jpl.org>

	* redisplay-tty.c: Replace tty_output_end with tty_frame_output_end.

2000-05-16  Ben Wing  <ben@xemacs.org>

	* buffer.c:
	* buffer.c (dfc_convert_to/from_internal_format):
	* buffer.c (reinit_vars_of_buffer):
	Fix conversion functions to allow reentrancy.

	* console-msw.c:
	* console-msw.c (mswindows_output_last_error):
	New fun, generally useful -- output a human-readable
	version of GetLastError() on the console.

	* console-msw.h:
	* console-msw.h (struct mswindows_frame):
	Changes for DeferWindowPos.  Declare mswindows_output_last_error().

	* console-stream.c (stream_output_begin):
	* console-stream.c (stream_output_end):
	* console-stream.c (stream_output_vertical_divider):
	* console-stream.c (stream_clear_region):
	* console-stream.c (stream_flash):
	* console-stream.c (console_type_create_stream):
	Delete blank stream methods, not needed.

	* console.h (struct console_methods):
	Split begin/end methods into window and frame.

	* event-msw.c:
	* event-msw.c (mswindows_handle_paint):
	* event-msw.c (output_alt_keyboard_state):
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (vars_of_event_mswindows):
	Comment about problems with ignored-expose.
	Define mswindows-debug-events; not really implemented.

	* frame-msw.c (mswindows_init_frame_1):
	random cleanups.

	* glyphs-msw.c:
	* glyphs-msw.c (begin_defer_window_pos):
	* glyphs-msw.c (mswindows_unmap_subwindow):
	* glyphs-msw.c (mswindows_map_subwindow):
	* glyphs-msw.c (mswindows_resize_subwindow):
	Use DeferWindowPos to reduce flashing when mapping/unmapping.

	* glyphs.c (make_image_instance_1):
	Fix crash.

	* gutter.c (Fredisplay_gutter_area):
	Use new begin/end methods.

	* lisp.h (Dynarr_new2):
	New creation fun.

	* redisplay-msw.c:
	* redisplay-msw.c (mswindows_frame_output_begin):
	* redisplay-msw.c (mswindows_frame_output_end):
	* redisplay-msw.c (console_type_create_redisplay_mswindows):
	New begin/end methods -- handle DeferWindowPos.

	* redisplay-output.c (redisplay_move_cursor):
	* redisplay-output.c (redraw_cursor_in_window):
	* redisplay-output.c (redisplay_update_line):
	* redisplay-output.c (redisplay_output_window):
	New begin/end methods.

	* redisplay-tty.c:
	* redisplay-tty.c (tty_frame_output_begin):
	* redisplay-tty.c (tty_frame_output_end):
	* redisplay-tty.c (console_type_create_redisplay_tty):
	New begin/end methods.

	* redisplay-x.c:
	* redisplay-x.c (x_window_output_begin):
	* redisplay-x.c (x_window_output_end):
	* redisplay-x.c (console_type_create_redisplay_x):
	New begin/end methods.

	* redisplay.c (redisplay_frame):
	* redisplay.c (Fredisplay_echo_area):
	New begin/end methods.
	use MAYBE_DEVMETH for clear_frame; it may not exist.

	* window.h (WINDOW_XFRAME):
	WINDOW_XFOO macros -- get locale and decode struct pointer.


2000-05-12  Ben Wing  <ben@xemacs.org>

	* emacs.c:
	* emacs.c (ensure_no_quitting_from_now_on):
	* emacs.c (fatal_error_signal):
	* emacs.c (mswindows_handle_hardware_exceptions):
	* emacs.c (main):
	* emacs.c (Fkill_emacs):
	* emacs.c (shut_down_emacs):
	* emacs.c (assert_failed):
	various improvements in fatal error handling.

	* eval.c:
	move preparing_for_armageddon to emacs.c.

	* lisp.h:
	declare fatal_error_in_progress.

	* print.c:
	* print.c (std_handle_out_external):
	* print.c (std_handle_out_va):
	* print.c (stderr_out):
	* print.c (stdout_out):
	use console under mswin when no standard output.
	don't do code conversion during fatal error.

	* scrollbar.c (Fscrollbar_page_up):
	* scrollbar.c (Fscrollbar_page_down):
	fix missing else.  reindent.

2000-05-11  Jan Vroonhof  <vroonhof@math.ethz.ch>

	Emergency fix.

	* glyphs.h (GLYPH_CACHEL_DESCENT):
	(GLYPH_CACHEL_DESCENT):
	(GLYPH_CACHEL_DESCENT):
	* glyphs.h (GLYPH_CACHEL_ASCENT): Match parameters to variables
	used in case these are inline functions.
	Use more absurd values to error check.

	include window.h for error check functions.

2000-05-11  Ben Wing  <ben@xemacs.org>

	* cmdloop.c (Freally_early_error_handler):
	Display message box under windows; otherwise, message will disappear
	before it can be viewed.

	* console-msw.c:
	* console-msw.c (Fmswindows_message_box):
	* console-msw.c (FROB):
	* console-msw.c (syms_of_console_mswindows):
	Define new fun `mswindows-message-box'.
	#### I will merge this into `popup-dialog-box'; just give me
	a bit of time.

	* general.c:
	* general.c (syms_of_general):
	Some new symbols used in `mswindows-message-box'.

	* glyphs.c:
	* glyphs.c (Fset_image_instance_property):
	put warning in this fun.

	* glyphs.h:
	* glyphs.h (GLYPH_CACHEL_WIDTH):
	* glyphs.h (GLYPH_CACHEL_ASCENT):
	* glyphs.h (GLYPH_CACHEL):
	* glyphs.h (GLYPH_CACHEL_GLYPH):
	define error-checking versions to try to catch a bug i've seen --
	redisplay gets in an infinite loop because the glyph width of the
	continuation glyph is 65535.

	* lisp.h:
	Extern message-box stuff.

	* window.c (allocate_window):
	* window.c (make_dummy_parent):
	* window.c (Fset_window_configuration):
	Use EQUAL not EQ for subwindow caches to make them work a bit
	better. (Something is still very broken.)


2000-05-11  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* glyphs.c (image_instantiate): Suppress gcc warnings.
	(Fmake_image_instance): Fix doc string.
	* specifier.c (Fmake_specifier): Ditto.

2000-05-02  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* paths.h.in (PATH_LOCK): Removed.
	* config.h.in (LOCKDIR_USER_DEFINED): Removed.
	* emacs.c (complex_vars_of_emacs): Remove configure-lock-directory.

2000-05-08  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* fns.c (Ffeaturep): Update e-mail address in doc-string.
	Document (featurep '(and xemacs 21.02)).

2000-05-09  Ben Wing  <ben@xemacs.org>

	* buffer.c (complex_vars_of_buffer):
	update modeline-format doc.

	* device.h:
	comment about how DFW_DEVICE should be merged with DOMAIN_DEVICE.

	* emacs.c:
	timeline of all released versions of Emacs, for use in creating
	authorship comments and in synching up.

	* glyphs-widget.c (image_instantiator_buttons):
	* glyphs-widget.c (image_instantiator_edit_fields):
	* glyphs-widget.c (image_instantiator_combo_box):
	* glyphs-widget.c (image_instantiator_scrollbar):
	* glyphs-widget.c (image_instantiator_progress_guage):
	* glyphs-widget.c (image_instantiator_tree_view):
	* glyphs-widget.c (image_instantiator_tab_control):
	* glyphs-widget.c (image_instantiator_labels):
	* glyphs-widget.c (image_instantiator_layout):
	* glyphs-widget.c (image_instantiator_native_layout):
	rename decode_domain method to governing_domain.

	* glyphs.c:
	* glyphs.c (Fvalid_image_instantiator_format_p): doc update.
	* glyphs.c (add_entry_to_device_ii_format_list):
	make sure we don't put an entry more than once into the list.
	* glyphs.c (check_instance_cache_mapper):
	*************************************************************
	allow for nil.  THIS SHOULD FIX A REAL CRASH THAT MANY PEOPLE
	HAVE BEEN GETTING.
	*************************************************************
	* glyphs.c (get_image_instantiator_governing_domain):
	clean up, expand on new concept of governing domain.
	* glyphs.c (instantiate_image_instantiator):
	* glyphs.c (allocate_image_instance):
	use governing_domain instead of cache_domain in naming.
	* glyphs.c (Fvalid_image_instance_type_p): fix docs.
	* glyphs.c (make_image_instance_1):
	* glyphs.c (Fmake_image_instance):
	allow for any domain (not just device), and process the
	governing domain correctly.  very big doc fix.
	* glyphs.c (Fimage_instance_domain):
	new primitive, to retrieve the governing domain of an image instance.
	* glyphs.c (image_instantiate):
	use new governing_domain stuff.  this fixes a crash you could get
	by instantiating certain widget glyphs in frame locales. (should
	signal an error instead of crashing.)
	* glyphs.c (Fimage_specifier_p): move doc to make-image-specifier.
	* glyphs.c (Fglyphp): clean up doc.
	* glyphs.c (subwindow_governing_domain): renamed from *_decode_domain.
	* glyphs.c (syms_of_glyphs):
	declare Fimage_instance_domain, remove unused Qlayout_image_instance_p.
	* glyphs.c (image_instantiator_format_create): add some comments about
	bogus code.
	* glyphs.c (specifier_vars_of_glyphs): totally rewrite the doc string
	for current-display-table. (Apparently Hrjove implemented in 1998 a
	design I wrote up in 1996, but didn't update the doc string.)

	* glyphs.h: clean up a doc string.
	* glyphs.h (governing_domain):
	* glyphs.h (struct image_instantiator_methods):
	changes for governing_domain stuff.

	* gutter.c:
	* gutter.c (Fgutter_specifier_p):
	* gutter.c (Fgutter_size_specifier_p):
	* gutter.c (Fgutter_visible_specifier_p):
	* objects.c:
	* objects.c (Fcolor_specifier_p):
	* objects.c (Ffont_specifier_p):
	* objects.c (Fface_boolean_specifier_p):
	doc strings moved to make-*-specifier.

	* redisplay.c (add_disp_table_entry_runes_1):
	* redisplay.c (generate_fstring_runes):
	* redisplay.c (screen):
	add random comments and doc strings.

	* specifier.c:
	* specifier.c (Fmake_specifier):
	major overhaul of this doc string.

	* specifier.c (Fvalid_specifier_domain_p):
	comment about the bogosity of image instances being domains.
	* specifier.c (decode_domain):
	now non-static, used in glyphs.c.
	* specifier.c (specifier_instance):
	comment about the bogosity of image instances being domains.
	* specifier.c (Fgeneric_specifier_p):
	move doc string to make-generic-specifier.
	* specifier.c (VALID_SINGLE_DISPTABLE_INSTANTIATOR_P):
	rebackslashify.

	* specifier.h:
	* specifier.h (DOMAIN_FRAME):
	* specifier.h (DOMAIN_LIVE_P):
	* specifier.h (DOMAIN_XDEVICE):
	rebackslashify.
	add comments about problems with these macros.
	prototype for decode_domain.

	* toolbar.c:
	* toolbar.c (Ftoolbar_specifier_p):
	move doc string to `make-toolbar-specifier'.

	* window.c (window_unmap_subwindows_cache_mapper):
	*************************************************************
	allow for nil.  THIS SHOULD FIX A REAL CRASH THAT MANY PEOPLE
	HAVE BEEN GETTING.
	*************************************************************

2000-05-09  Andy Piper  <andy@xemacs.org>

	* glyphs.h: declare reset_frame_subwindow_instance_cache.

	* window.c (Fset_window_configuration): reset the frame subwindow
	cache and re-initialize the window subwindow caches.

	* glyphs.c (reset_frame_subwindow_instance_cache): new function.

2000-05-09  Ben Wing  <ben@xemacs.org>

	* ntheap.c (recreate_heap): Changed unknown (VC6 only?) SIZE_T to
	DWORD.

2000-04-26  Mike Woolley  <mike@bulsara.com>

	* ntheap.c: Changed recreate_heap to limit the amount reserved
	for the heap to that which is actually available. Also now
	displays a message box (with some dignostics) in the event that
	it still can't start.

2000-05-07  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* callproc.c (Fold_call_process_internal): GCPRO path

2000-05-08  Jan Vroonhof  <jan@xemacs.org>

	Patch by Bill Perry.

	* scrollbar.c (Fscrollbar_page_up): Conditionalize on type of call
	back data instead of #ifdef.
	(Fscrollbar_page_down): ditto.

2000-05-07  Ben Wing  <ben@xemacs.org>

	* buffer.h:
	Kludge for defining Qmswindows_tstr.

	* nt.c:
	* nt.c (open_input_file):
	* nt.c (open_output_file):
	* nt.c (rva_to_section):
	* nt.c (mswindows_executable_type):
	Move all memory-mapped-file routines here (some were in unexnt.c,
	which is bad because they are used by process-nt.c, and unexnt
	won't be around when portable dumping).  Synched the above routines
	with FSF 20.6.

	* nt.h:
	Removed ifdef'd out bogus code.
	Fixed some prototypes.

	* nt.h (file_data):
	* nt.h (OFFSET_TO_RVA):
	* nt.h (RVA_TO_OFFSET):
	* nt.h (RVA_TO_PTR):
	Moved the memory-mapped-file structures, macros and prototypes
	here, to parallel nt.c.  ntheap.h should really be removed
	entirely, and it's a non-portable-dumper specific file.

	* ntheap.h (round_to_next):
	Moved the memory-mapped-file structures, macros and prototypes
	to nt.h.

	* ntproc.c (compare_env):
	Moved rva_to_section and mswindows_executable_type to nt.c.
	Moved compare_env to process-nt.c.
	ntproc.c will die, one day.

	* ntproc.c (sys_spawnve):
	Account for win32_ -> mswindows_.

	* process-nt.c:
	* process-nt.c (struct nt_process_data):
	* process-nt.c (ensure_console_window_exists):
	* process-nt.c (compare_env):
	* process-nt.c (nt_create_process):
	* process-nt.c (nt_kill_process_by_pid):
	* process-nt.c (syms_of_process_nt):
	* process-nt.c (vars_of_process_nt):
	Introduce variable `mswindows-quote-process-args', from FSF 20.6.
	Copy argument quoting code from FSF 20.6 (with appropriate Mule-ization
	changes).  Eliminate our old `nt-quote-process-args' mechanism.
	Synch up nt_create_process with FSF 20.6 sys_spawnve.
	Move compare_env here from ntproc.c.

	* process.c (Fprocess_send_region):
	Takes an optional fourth argument, BUFFER, which should fix some
	problems with call-process.

	* syscommctrl.h:
	Move ICC_BAR_CLASSES here from syswindows.h, to avoid a warning.

	* syswindows.h:
	Move ICC_BAR_CLASSES to syscommctrl.h.
	Add preliminary macros for MSWindows/Mule.  More to come.

	* unexnt.c:
	* unexnt.c (unexec):
	open_output_file moved to nt.c.


2000-05-05  Andy Piper  <andy@xemacs.org>

	* window.c (window_unmap_subwindows_cache_mapper): remove the dead
	instance from the frame cache also since GC may catch up too late
	to make frame deletion sane.

2000-05-04  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_widget_instantiate): gcpro widget callbacks.
	(x_finalize_image_instance): ungcpro on deletion.

	* glyphs.c (image_instantiator_format_create): give pointers a
	query geometry method so that the geometry is at least set.

	* glyphs-x.c (image_instantiator_format_create_glyphs_x): only
	initialize layouts if using widgets.

2000-05-03  Andy Piper  <andy@xemacs.org>

	* nt.c: remove bogus reference to sysmmsystem.h

	* gui-x.c (popup_selection_callback): fix no selection abort.

2000-05-02  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (mswindows_update_widget): cope with nil text.
	(mswindows_widget_instantiate): ditto.

	* glyphs-widget.c (initialize_widget_image_instance): initialize
	children correctly.
	(widget_instantiate): cope with children and items in the same
	instance.

	* glyphs.c (mark_image_instance): cope with children as a first
	class member.
	(image_instance_equal): ditto.
	(image_instance_hash): ditto.
	(image_instance_changed): ditto.

2000-04-30  Andy Piper  <andy@xemacs.org>

	* glyphs.c (subwindow_query_geometry): new function. Return some
	defaults.
	(subwindow_instantiate): don't assign dimensions if none have been
	given.
	(image_instantiator_format_create): add subwindow_query_geometry.
	(print_image_instance): cope with layouts as widgets.

2000-04-29  Andy Piper  <andy@xemacs.org>

	* frame.c (delete_frame_internal): call
	free_frame_subwindow_instance_cache so that all subwindows are
	finalized before their parent.
	(mark_frame): remove subwindow_cachels.
	(Fmake_frame): remove subwindow_cachel manipulation.
	(allocate_frame_core): subwindow_instance_cache is a weak list.
	(delete_frame_internal): set subwindow_instance_cache to nil.

	* glyphs-msw.c (mswindows_finalize_image_instance): make double
	finalization safe.
	(mswindows_finalize_image_instance): use the device
	not the domain as the domain may have died already.

	* glyphs-x.c (x_finalize_image_instance): ditto.
	(x_subwindow_instantiate): remove SUBWINDOW_WIDTH &
	HEIGHT.

	* redisplay-output.c (redisplay_unmap_subwindows): update for
	subwindow instance cache as a weak list.
	(redisplay_unmap_subwindows_maybe): ditto.
	(redisplay_unmap_subwindows_except_us): ditto.

	* glyphs.c (unmap_subwindow): error checking will check the domain
	so don't deal with it here. Don't use cachels anymore.
	(map_subwindow): ditto.
	(update_subwindow_cachel_data): remove old accessor names.
	(subwindow_instantiate): remove SUBWINDOW_WIDTH & HEIGHT.
	(Fresize_subwindow): don't update cachel.
	(mark_subwindow_cachels):
	(update_subwindow_cachel_data):
	(add_subwindow_cachel):
	(get_subwindow_cachel_index):
	(update_subwindow_cachel):
	(reset_subwindow_cachels):
	(mark_subwindow_cachels_as_not_updated): deleted.
	(cache_subwindow_instance_in_frame_maybe): new function. Add a
	subwindow instance to the frame cache.
	(find_matching_subwindow): update for subwindow instance cache as
	a weak list.
	(update_widget_instances): ditto.
	(image_instance_type_to_mask):inlined.
	(free_frame_subwindow_instance_cache): new function. finalize all
	subwindows that are instantiated.

	* glyphs.h (struct Lisp_Image_Instance): add display_data instead
	of cachel information.
	(IMAGE_INSTANCE_DISPLAY_X):
	(IMAGE_INSTANCE_DISPLAY_Y):
	(IMAGE_INSTANCE_DISPLAY_WIDTH):
	(IMAGE_INSTANCE_DISPLAY_HEIGHT):
	(XIMAGE_INSTANCE_DISPLAY_X):
	(XIMAGE_INSTANCE_DISPLAY_Y):
	(XIMAGE_INSTANCE_DISPLAY_WIDTH):
	(XIMAGE_INSTANCE_DISPLAY_HEIGHT): new accessors.
	remove subwindow_cachel structure and function references.
	(image_instance_type_to_mask): inline from glyphs.c

	* redisplay.c (redisplay_frame): remove subwindow_cachel
	references.

	* frame.h (struct frame): remove subwindow_cachels.
	(FRAME_SUBWINDOW_CACHE): access subwindow_instance_cache.

	* frameslots.h: add subwindow_instance_cache.

	* window.c (replace_window): check subwindow cache of replacement.
	(window_unmap_subwindows_cache_mapper):
	(window_unmap_subwindows): new functions. Unmap all subwindows
	cached on this window.
	(mark_window_as_deleted): unmap all subwindows.

2000-04-27  Andy Piper  <andy@xemacs.org>

	* glyphs.h (IIFORMAT_METH_OR_GIVEN): cope with null meths.

	* glyphs-widget.c (widget_layout): return something.
	(layout_layout): return something. Fail if not initialized.
	(layout_query_geometry): ditto.
	(image_instantiator_native_layout): new function. Initialized the
	native layout type.
	(widget_instantiate): don't do layout stuff here.

	* glyphs.c (instantiate_image_instantiator): reorded calling or
	instantiate and post_instantiate with layout in between.
	(image_instance_layout): be more selective about deciding whether
	the layout has been done or not.

	* glyphs.h (struct image_instantiator_methods): return a value
	from layout_method.

2000-04-26  Andy Piper  <andy@xemacs.org>

	* glyphs.c (allocate_image_instance): make initial width and
	height unspecified. Set initialized to 0.

	* syscommctrl.h new file. Encapsulates commctrl.h.

	* syswindows.h new file. Encapsulates windows.h.

	* ntplay.c: use new syswindows.h and syscommctrl.h header.
	* nt.c: ditto.
	* console-msw.h: ditto.

	* redisplay-tty.c (tty_output_display_block): remove layout references.

	* glyphs-msw.c (mswindows_widget_instantiate): use the domain
	window handle rather than just the frame.

	* glyphs.c (mark_image_instance): remove layout references.
	(print_image_instance): ditto.
	(image_instance_equal): ditto.
	(image_instance_hash): ditto.
	(decode_image_instance_type): ditto.
	(encode_image_instance_type): ditto.
	(image_instantiate): ditto.
	(allocate_glyph): ditto.
	(Fimage_instance_height): ditto.
	(Fimage_instance_width): ditto.
	(update_subwindow): ditto.

	* redisplay-x.c (x_output_display_block): recode for layouts as
	widgets.

	* redisplay-output.c (redisplay_output_layout): recode for layouts
	as widgets.
	(compare_runes): remove layout references.

	* redisplay-msw.c (mswindows_output_display_block): recode for
	layouts as widgets.

	* glyphs-widget.c (image_instantiator_layout): remove
	layout_possible_dest_types.
	(layout_possible_dest_types): deleted.

	* glyphs.h (image_instance_type): remove layout references.
	(struct Lisp_Image_Instance): ditto. Add initialized flag.
	(IMAGE_INSTANCE_INITIALIZED): new accessor.
	(XIMAGE_INSTANCE_INITIALIZED): ditto.

2000-04-25  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (image_instantiator_buttons):
	(image_instantiator_edit_fields):
	(image_instantiator_combo_box):
	(image_instantiator_scrollbar):
	(image_instantiator_progress_guage):
	(image_instantiator_tree_view):
	(image_instantiator_tab_control):
	(image_instantiator_labels):
	(image_instantiator_layout): call default post_instantiate method.
	(widget_post_instantiate): new function. Simply lays out the
	widgets.

	* glyphs.h (struct image_instantiator_methods): add
	post_instantiate method.

	* glyphs.c (instantiate_image_instantiator): add post_instantiate
	method calls.

2000-04-23  Andy Piper  <andy@xemacs.org>

	* glyphs.h (struct image_instantiator_methods): add
	decode_domain_method.
	(struct Lisp_Image_Instance): remove subwindow frame - it can be
	derived from the domain.
	(IMAGE_INSTANCE_FRAME): new accessor.
	(XIMAGE_INSTANCE_FRAME): ditto.

	* glyphs.c (print_image_instance): use IMAGE_INSTANCE_FRAME
	instead of _SUBWINDOW_FRAME.
	(finalize_image_instance): ditto.
	(Fimage_instance_foreground): ditto.
	(Fimage_instance_background): ditto.
	(image_instantiate): ditto.
	(update_subwindow_cachel): ditto.
	(update_subwindow): ditto.
	(unmap_subwindow): ditto.
	(map_subwindow): ditto
	(subwindow_instantiate): ditto.
	* glyphs-msw.c (mswindows_update_widget): ditto.
	(mswindows_progress_gauge_instantiate): ditto.
	(mswindows_tab_control_update): ditto.
	* glyphs-x.c (x_update_widget): ditto.
	(x_widget_instantiate): ditto.
	(x_tab_control_instantiate): ditto.
	(x_tab_control_update): ditto.
	* event-msw.c (mswindows_wnd_proc): ditto

	* glyphs-widget.c (image_instantiator_layout): use
	subwindow_decode_domain.
	(image_instantiator_buttons): ditto.
	(image_instantiator_edit_fields): ditto.
	(image_instantiator_combo_box): ditto.
	(image_instantiator_scrollbar): ditto.
	(image_instantiator_progress_guage): ditto.
	(image_instantiator_tree_view): ditto.
	(image_instantiator_tab_control): ditto.
	(image_instantiator_labels): ditto.
	(image_instantiator_layout): ditto.

	* glyphs.c: add instance error checking to many functions.
	(instantiate_image_instantiator): decode device from cache_domain.
	(image_instantiate): partially rewrite by using
	decode_image_instantiator_domain to determine what domain the
	instance needs to be cached in.
	(decode_image_instantiator_domain): new function. Determine what
	domain the image needs to be cached in.
	(check_window_subwindow_cache): new error checking function.
	(check_instance_cache_mapper): ditto.
	(check_image_instance_structure): ditto.
	(subwindow_decode_domain): new function. Encodes a window as a
	subwindow's cache domain.
	(image_instantiator_format_create): use it for text and
	subwindows.

2000-04-21  Andy Piper  <andy@xemacs.org>

	* glyphs.c (image_instance_device): new function.
	(image_instance_frame): new function.
	(image_instance_window): new function.
	(image_instance_live_p): new function.

	* window.c (mark_window_as_deleted): reset the subwindow_instance_
	cache to nil.

	* glyphs.h (struct Lisp_Image_Instance): device->domain.
	(IMAGE_INSTANCE_DOMAIN): new accessor.
	(XIMAGE_INSTANCE_DOMAIN): ditto.

	* glyphs-x.c (x_finalize_image_instance): device->domain.

	* glyphs-msw.c (init_image_instance_geometry): device->domain.
	(mswindows_finalize_image_instance): ditto.

	* glyphs-eimage.c (jpeg_instantiate): device->domain.
	(gif_instantiate): ditto.
	(png_instantiate): ditto.
	(tiff_instantiate): ditto.

	* glyphs.c (instantiate_image_instantiator): use domain rather
	than device.
	(mark_image_instance): device -> domain.
	(print_image_instance): ditto.
	(finalize_image_instance): ditto.
	(image_instance_equal): ditto.
	(allocate_image_instance): ditto.
	(Fcolorize_image_instance): ditto.
	(query_string_geometry): ditto.
	(image_instantiate): ditto
	(query_string_font): ditto.
	(image_instantiate): ditto.
	(update_subwindow): ditto.
	(unmap_subwindow): ditto.
	(map_subwindow): ditto.
	(subwindow_instantiate): ditto.

	* specifier.h (DOMAIN_DEVICE): new, semantically correct, decoder.
	(DOMAIN_FRAME): ditto.
	(DOMAIN_WINDOW): ditto.
	(DOMAIN_LIVE_P): ditto.
	(XDOMAIN_DEVICE): ditto.
	(XDOMAIN_FRAME): ditto.
	(XDOMAIN_WINDOW): ditto.

	* specifier.c (Fvalid_specifier_domain_p): add image instances as
	a valid specifier domain.

2000-04-19  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (syms_of_glyphs_widget): remove
	widget-callback-current-channel.
	(vars_of_glyphs_widget): ditto.
	* glyphs.h: ditto

	* gui.c (get_gui_callback): revert to previous behaviour.

2000-04-18  Andy Piper  <andy@xemacs.org>

	* glyphs.h (struct Lisp_Image_Instance): add margin_width.
	(IMAGE_INSTANCE_MARGIN_WIDTH): new.
	(XIMAGE_INSTANCE_MARGIN_WIDTH): new.

	* glyphs.c (image_instance_equal): add margin_width.
	(image_instance_hash): ditto.

	* glyphs-widget.c (widget_instantiate): deal with margin-width.
	(layout_query_geometry): ditto.
	(layout_layout): ditto.
	(syms_of_glyphs_widget): add margin-width.
	(image_instantiator_layout): allow margin-width.

	* glyphs.c (update_widget_instances): make a normal function.
	(syms_of_glyphs): remove Qupdate_widget_instances.
	* glyphs.h: ditto.

	* gui-x.c (popup_selection_callback): use enqueue_magic_eval_event
	so that we don't corrupt ideas about the last event or
	command. Remove widget-callback-current-channel fiddling.
	* gui-msw.c (mswindows_handle_gui_wm_command): ditto.

2000-05-01  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.33 is released.

2000-05-01  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* make-src-depend: Allow dots in header file name.

2000-05-01  Yoshiki Hayashi  <yoshiki@xmacs.org>

	* mule-charset.h (struct charset_lookup): Add
	next_allocated_1_byte_leading_byte and
	next_allocated_2_byte_leading_byte.
	* mule-charset.c: Move above two variables so that those values
	will be dumped.

2000-04-26  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* insdel.c (find_charsets_in_bufbyte_string): Add Vcharset_ascii
	when string length is zero.
	(find_charsets_in_emchar_string): Ditto.

2000-04-29  Bjrn Torkelsson  <torkel@hpc2n.umu.se>

	* lisp.h: extern Qdialog and Qmenubar.

	* gui-x.c: added events.h.
		also fixed typo which made the file uncompilable.

	* general.c: Added Qmenubar and Qdialog

2000-04-28  Ben Wing  <ben@xemacs.org>

	* frame-msw.c (mswindows_init_frame_1):
	* frame-msw.c (mswindows_mark_frame):
	* event-msw.c (mswindows_enqueue_dispatch_event):
	* console-msw.h:
	* console-msw.h (struct mswindows_frame):
	* console-msw.h (FRAME_MSWINDOWS_WIDGET_HASH_TABLE1):
	there are now three hash tables for callbacks.
	mswindows_enqueue_dispatch_event is no longer static.

	* dialog-x.c (maybe_run_dbox_text_callback):
	* dialog-x.c (dbox_descriptor_to_widget_value):
	switch to new cons3 form for callbacks.

	* glyphs-msw.c (mswindows_register_gui_item):
	* glyphs-msw.c (mswindows_widget_instantiate):
	* glyphs-msw.c (add_tree_item):
	* glyphs-msw.c (add_tab_item):
	new image instance parameter, so it can be passed to callback-ex.
	respect :callback-ex as well as :callback.

	* glyphs-widget.c (VALID_GUI_KEYWORDS):
	add :callback-ex.

	* glyphs.c (print_image_instance):
	prettify, e.g. now prints widget type.

	* gui-x.h:
	certain funs have new image instance parameter.

	* gui.c:
	* gui.c (get_gui_callback):
	* gui.c (gui_item_add_keyval_pair):
	* gui.c (gui_item_init):
	* gui.c (gui_add_item_keywords_to_plist):
	* gui.c (mark_gui_item):
	* gui.c (gui_item_hash):
	* gui.c (gui_item_equal):
	* gui.c (copy_gui_item):
	* gui.c (syms_of_gui):
	recognize callback-ex in a number of places.
	also, fix the annoying "can't get out of yes-no dialog" bug.

	* gui.h:
	* gui.h (struct Lisp_Gui_Item):
	recognize callback-ex in a number of places.

	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	new parameter in button_item_to_widget_value.

	* glyphs-x.c (x_update_widget):
	* glyphs-x.c (x_button_instantiate):
	* glyphs-x.c (x_button_update):
	* glyphs-x.c (x_progress_gauge_instantiate):
	* glyphs-x.c (x_edit_field_instantiate):
	* glyphs-x.c (x_combo_box_instantiate):
	* glyphs-x.c (x_tab_control_instantiate):
	* glyphs-x.c (x_label_instantiate):
	new image instance parameter in various places.

	* event-Xt.c:
	* event-Xt.c (enqueue_Xt_dispatch_event):
	this fun gets exported.

	* gui-msw.c:
	* gui-msw.c (mswindows_handle_gui_wm_command):
	handle both :callback and :callback-ex, and generate our own
	event because it's one of the callback-ex arguments.

	* gui-x.c:
	* gui-x.c (popup_selection_callback):
	handle both :callback and :callback-ex, and generate our own
	event because it's one of the callback-ex arguments.
	* gui-x.c (button_item_to_widget_value):
	* gui-x.c (gui_items_to_widget_values_1):
	* gui-x.c (gui_item_children_to_widget_values):
	* gui-x.c (gui_items_to_widget_values):
	new image instance parameter in various places.

	* fns.c (Freplace_list):
	fix small typo in doc string.

	* lisp.h:
	declare enqueue_Xt_dispatch_event.

2000-04-28  Ben Wing  <ben@xemacs.org>

	* buffer.c:
	* buffer.c (Frecord_buffer):
	* buffer.c (syms_of_buffer):
	delete record-buffer-hook.

	* fns.c:
	* fns.c (Freplace_list):
	* fns.c (syms_of_fns):
	new primitive replace-list.

	* frameslots.h:
	slot for old buffer-alist.

	* lisp.h:
	exfun replace-list.

	* redisplay.c:
	* redisplay.c (redisplay_frame):
	* redisplay.c (syms_of_redisplay):
	* redisplay.c (vars_of_redisplay):
	new hook buffer-list-changed-hook.
	call it.

2000-04-27  Ben Wing  <ben@xemacs.org>

	* extents.h: extern in_modeline_generation.

	* redisplay.c (generate_formatted_string_db): set
	in_modeline_generation.

	* extents.c (extent_changed_for_redisplay): don't mark redisplay
	flags if in modeline generation.  otherwise frame-modified-tick
	is ticked far too often.
	Declare in_modeline_generation.

2000-04-26  Ben Wing  <ben@xemacs.org>

	* emacs.c (vars_of_emacs): document quick-build "error-checking"
	option.
	(vars_of_emacs): add quick-build as an error-checking option.
	A bit kludgy, but there doesn't seem much point in creating
	a real var for this.

	* config.h.in: put in an entry for QUICK_BUILD; remove NO_DOC_FILE.

2000-04-14  IKEYAMA Tomonori  <tomonori@suiyokai.org>

	* redisplay.h (struct display_line): Add a new variable,
	line_continuation.

	* redisplay.c (create_text_block): Set dl->line_continuation if
	the line continues.
	(create_string_text_block): Ditto.
	(regenerate_window_incrementally): Use line_continuation instead
	of searching continuation glyph.
	(add_margin_runes): Call add_glyph_rune.
	(add_glyph_rune): Handle margin glyph.

2000-04-20  Martin Buchholz  <martin@xemacs.org>

	* filelock.c (fill_in_lock_file_name):
	ANSIfy.
	Check for IS_ANY_SEP instead of '/'.
	(lock_file_1):
	Avoid generating gratuitous garbage.  Call user_login_name() directly.
	Never check errno without first seeing that system call failed.
	(unlock_file): Add GCPRO.
	(Flock_buffer): Fix docstring.
	(Ffile_locked_p): Fix docstring.  Add GCPRO.

2000-04-19  Martin Buchholz  <martin@xemacs.org>

	* sysdep.c (get_pty_max_bytes):
	Fix hangs on DEC OSF 4.0 when (process-send-string) sends
	strings longer than 252 bytes.

	* md5.c: Unconditionally include ANSI header <limits.h>

	* glyphs-x.c (convert_EImage_to_XImage):
	* lisp-union.h (union Lisp_Object):
	Use consistently the syntax #ifdef FEATURE, not #if FEATURE.

2000-04-13  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* filelock.c (current_lock_owner): Remove unused variable o, p.

2000-04-17  Norbert Koch  <n.koch@eai-delta.de>

	* callint.c: Remove multiply defined symbol Qlet
	(syms_of_callint): ditto.

2000-04-14  Andy Piper  <andy@xemacs.org>

	* general.c (syms_of_general): add last-command, this-command, let
	and funcall.

	* lisp.h: declare various symbols.

	* glyphs.h: declare Qwidget_callback_current_channel;

	* glyphs-widget.c (syms_of_glyphs_widget): add
	Qgui_callback_current_channel.
	(vars_of_glyphs_widget): add Vgui_callback_current_channel.

	* gui-msw.c (mswindows_handle_gui_wm_command): bind
	widget-callback-current-channel when invoking the interactive
	arg. Also bind last-command and next-command when invoking the
	widget updates.
	* gui-x.c (popup_selection_callback): ditto.

	* gui.c (get_gui_callback): massage args so that we are always
	calling eval. This allows us to add our own variable bindings
	outside.

	* glyphs-x.c (x_button_instantiate): use
	gui_items_to_widget_values since this is GC safe.
	(x_progress_gauge_instantiate): ditto.
	(x_edit_field_instantiate): ditto.
	(x_label_instantiate): ditto.

	* event-Xt.c (emacs_Xt_handle_magic_event): remove old printfs.
	(emacs_Xt_event_widget_focus_out): new function
	(emacs_Xt_event_widget_focus_in): new function. Set the keyboard
	focus.
	(emacs_Xt_event_add_widget_actions): new function. add focus
	functions as actions.
	(init_event_Xt_late): use it.

2000-04-14  Hrvoje Niksic  <hniksic@iskon.hr>

	* event-stream.c (Fdispatch_event): Doc fix.

2000-03-29  SL Baur  <steve@musashimaru.m17n.org>

	* postgresql.c: Remove all references to PQsetenv*.

	* postgresql.h: Remove references to PGsetenvHandler object.
	* lrecord.h (lrecord_type): Ditto.

2000-04-11  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* glyphs-msw.h (struct mswindows_image_instance_data): Added
	real_heigh and real_width members, and accessor macros for these.

	* glyphs-msw.c (init_image_instance_geometry): New function.
	(init_image_instance_from_dibitmap): Use it.
	(mswindows_resource_instantiate): Use it.
	(init_image_instance_from_xbm_inline): Use it.
	(mswindows_initialize_image_instance_mask): Use real bitmap
	geometry.
	(mswindows_create_resized_bitmap): Ditto.
	(mswindows_create_resized_mask): Ditto.

	* redisplay-msw.c (mswindows_output_dibitmap): Stretch real mask
	and bitmap to their surface size.

2000-04-11  Jan Vroonhof  <jan@xemacs.org>

	* process-unix.c (unix_send_process): Guard against process MIA
	after Faccept_process_output.

2000-04-11  Ben Wing  <ben@xemacs.org>

	* eval.c (unbind_to_hairy): fix brokenness introduced by
	nanosecond speed improvements.

2000-04-07  Raymond Toy  <toy@rtp.ericsson.se>

	* sunplay.c (init_device): To play sounds correctly, the device
	apparently needs to be initialized at least once by XEmacs.  Make
	it so.

2000-04-10  IKEYAMA Tomonori  <tomonori@suiyokai.org>

	* redisplay.c (add_margin_runes): Add text image glyph
	  handling.

2000-04-06  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* lisp.h (DOESNT_RETURN): Don't declare as volatile when
	gcc is newer than 2.5.

2000-04-06  Colin Rafferty  <colin@xemacs.org>

	* lisp.h (FLEXIBLE_ARRAY_STRUCT_SIZEOF): Created.

	* fns.c (size_bit_vector):
	* alloc.c (size_vector):
	(make_vector_internal):
	(make_bit_vector_internal):
	(sweep_bit_vectors_1):
	Replace calls to offsetof with FLEXIBLE_ARRAY_STRUCT_SIZEOF macro.

2000-04-06  Andy Piper  <andy@xemacs.org>

	* gmalloc.c (malloc): undo previous change.
	(malloc): ditto.
	(free): ditto.
	(realloc): ditto.

2000-04-06  IKEYAMA Tomonori <tomonori@suiyokai.org>

	* line-number.c (buffer_line_number): Revert to former version.

2000-04-06  Andy Piper  <andy@xemacs.org>

	* gmalloc.c (malloc): add error checking.
	(malloc): ditto.
	(free): ditto.
	(realloc): ditto.

	* dialog-x.c (dbox_descriptor_to_widget_value): add extra
	button_item_to_widget_value arg.

	* glyphs-x.c (x_button_instantiate): add extra
	button_item_to_widget_value arg.
	(x_progress_gauge_instantiate): ditto.
	(x_edit_field_instantiate): ditto.
	(x_label_instantiate): ditto.

	* gui-x.c (gui_items_to_widget_values_1): add extra
	button_item_to_widget_value arg.
	(button_item_to_widget_value): add extra menu_item_p arg.

	* gui-x.h: change signature of button_item_to_widget_value.

	* menubar-x.c (menu_item_descriptor_to_widget_value_1): add extra
	button_item_to_widget_value arg.

2000-04-03  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* buffer.h (struct buffer): auto_save_modified should be long.

2000-04-05  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (widget_instantiate): pixwidth != pixheight
	type.
	(button_query_geometry): give a little more room so that athena
	buttons fit.

2000-04-05  Andy Piper  <andy@xemacs.org>

	* faces.c (complex_vars_of_faces): The widget face should inherit
	the font of the gui-element face.

2000-04-04  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_button_update): new function. unconditionally
	update a button's state when the instance is dirty.
	(image_instantiator_format_create_glyphs_x): add x_button_update.
	(x_widget_instantiate): remove old resize cruft.

2000-04-02  Andy Piper  <andy@xemacs.org>

	* frame.c (change_frame_size_1): The introduction of gutters means
	that we need to allow 0 as a potential frame dimension.

2000-04-02  IKEYAMA Tomonori  <tomonori@suiyokai.org>

	* redisplay.c (add_glyph_rune): Don't set 0 to bufpos for text
	image glyph if allow_cursor.
	(add_hscroll_rune): Don't allow cursor to border glyph.
	(create_text_block): Ditto.

	* redisplay-output.c (redisplay_move_cursor): Do nothing even if
	text not in buffer.
	(redisplay_output_layout): Call ensure_face_cachel_complete for
	text image glyph.


2000-03-16  IKEYAMA Tomonori  <tomonori@suiyokai.org>

	* redisplay.c (add_glyph_rune): Adding text image as text runes.

	* redisplay-output.c (redisplay_move_cursor): NO_CURSOR if text
	not in buffer

	* redisplay-tty.c (tty_output_display_block): Delete the routine
	for text image glyph
	* redisplay-x.c (x_output_display_block): ditto
	* redisplay-msw.c (mswindows_output_display_block): ditto

2000-02-02  Mike Alexander  <mta@arbortext.com>

	Note: Some of these were committed by accident as part of other
	patches.

	* regex.c (regex_compile): Avoid compiler warnings.

	* ntproc.c (sys_spawnve): Avoid compiler warnings.

	* nt.h: Declare term_ntproc correctly.

	* nt.c: Remove incorrect declaration of get_home_directory which
	is declared correctly in lisp.h.

	* keymap.c (get_keyelt): Avoid compiler warnings.
	(raw_lookup_key_mapper): Avoid compiler warnings.

	* gutter.c (gutter_was_visible): Add return statement to avoid warning.

	* glyphs-eimage.c (png_instantiate): Avoid compiler warnings.

	* filemode.c (mode_string): Avoid compiler warnings.

	* file-coding.c (Fcoding_system_aliasee): Add return statement to
	avoid warning.

	* events-mod.h: Undef some things that winuser.h defines differently.

	* data.c (Faset): Avoid compiler warnings.

	* alloc.c (Fmake_byte_code): Avoid compiler warnings.

2000-03-03  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* sound.c (Fplay_sound_file): Wrap ESD in start/stop_interrupts.
	Fall through to simple beep on error.
	Replace "extern" by real header file.

	* linuxplay.c: Use nativesound.h
	(play_sound_data): Return error code. Be less verbose on error.

	* sunplay.c: Use nativesound.h
	(play_sound_data): Return error code. Be less verbose on error.

	* ntplay.c: Use nativesound.h
	(play_sound_data): Return fake error code

	* sgiplay.c: Use nativesound.h
	(play_sound_data): Return error code

	* hpplay.c: Use nativesound.h, partially implement
	new error code. Break compilation until finished.
	(play_sound_data): error code.

	* nativesound.h (play_sound_file):
	  (play_sound_data): Prototype in new header.

2000-03-31  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c: (button_query_geometry): new function. Adjust
	for toggle and radio buttons.
	(image_instantiator_buttons): use it.

2000-03-03  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* scrollbar-x.c (x_update_vertical_scrollbar_callback):
	(x_update_horizontal_scrollbar_callback): Return if no mirror was
	found. Scrollbar event probably belonged to some old config.

2000-03-31  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (widget_instantiate): use LAYOUT_VERTICAL rather
	than 1.
	(initialize_widget_image_instance): default layout to
	LAYOUT_HORIZONTAL rather than 0.
	(widget_instantiate): reverse the item list at the end rather than
	every iteration.
	(layout_layout): re-code for the border text at the front of the
	item list rather than at the end.
	(layout_query_geometry): ditto. Pick up fixed and dynamic sizes
	provided by the user.
	(widget_query_geometry): comment.

2000-03-30  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (image_instantiator_layout): allow standard
	widget keywords in layouts.

	* gutter.c (output_gutter): cope with nil gutter contents.

	* frame.c (Fset_frame_properties): add gutter docs.

2000-03-29  Andy Piper  <andy@xemacs.org>

	* toolbar-msw.c (TBSTYLE_FLAT): add.
	(mswindows_output_toolbar): minor fiddling.

2000-03-29  Andy Piper  <andy@xemacs.org>

	* gutter.c (output_gutter): force gutter size recalculation if
	what we are trying to display won't fit.
	(update_gutter_geometry): new function. A per-gutter version of
	update_frame_gutter_geometry.
	(update_frame_gutter_geometry): use it.
	(redraw_exposed_gutter): add extra debugging output.

2000-03-28  Mike Alexander  <mta@arbortext.com>

	* dumper.c: Declare pdump_hFile and pdump_hMap (Windows only)
	(pdump_file_unmap): Implement it on Windows
	(pdump_file_get): Save alocated handles for pdump_file_unmap

2000-03-28  Andy Piper  <andy@xemacs.org>

	* gui.c (get_gui_callback): treat Quit specially.

2000-03-27  Andy Piper  <andy@xemacs.org>

	* glyphs.c (image_instantiate): be careful to check in the same
	way we assigned.

2000-03-27  Didier Verna  <didier@xemacs.org>

	* config.h.in: define the proper SMART_INCLUDE macro.
	handle renaming of `foo_h_path' to `foo_h_file'.

	* database.c: ditto.

	* emacs.c: ditto.

	* linuxplay.c: ditto.

	* terminfo.c: ditto.

	* tooltalk.h: ditto.

2000-03-27  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (mswindows_update_widget): make sure the widget
	gets updated whenever the face might have changed.

2000-03-26  Mike Alexander  <mta@arbortext.com>

	* dumper.c (pdump_resource_free): Fix the comment.

2000-03-21  Olivier Galibert  <galibert@pobox.com>

	* input-method-xlib.c (XIM_init_frame): Remove painful warning.

2000-03-22  Mike Alexander  <mta@arbortext.com>

	* dumper.c: Include Windows headers on Windows
	(pdump_resource_free): Add a body to the function
	(pdump_load): exe_name -> exe_path and add some comments.

2000-03-25  Mike Alexander  <mta@arbortext.com>

	* gui.c (copy_gui_item_tree): Return a value in all cases

2000-03-21  Didier Verna  <didier@xemacs.org>

	* config.h.in: move INCLUDE_GLUE_1 and INCLUDE_GLUE_2 here from
	lwlib/config.h.in.
	(SMART_INCLUDE): new macro.
	(POSTGRES_INCLUDE): new macro to include postgresql headers from
	the proper location.

	* postgresql.c: use it.

	* inline.c: ditto.

2000-03-24  Andy Piper  <andy@xemacs.org>

	* gutter.c (redraw_exposed_gutters): must be "in display" when we
	do this.

2000-03-24  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (compare_runes): use image_instance_changed
	to detect changes. Do not depend on glyphs_changed, only depend on
	dirtiness.
	 (redisplay_output_layout): add debug messages.
	(compare_runes): ditto.

	* glyphs.h: declare new functions.
	(struct Lisp_Image_Instance): remove percent and associated
	accessors.

	* gui.h: declare new copying functions.

	* gui.c (copy_gui_item_tree): new function.
	(copy_gui_item): new function.
	(gui_item_id_hash): revert to standard hash.
	(gui_item_hash): ditto.
	(gui_item_hash_internal): deleted.
	(mark_gui_item): mark value.
	(gui_item_add_keyval_pair): add value.
	(gui_item_init): ditto.
	(gui_add_item_keywords_to_plist): ditto.
	(gui_item_equal): ditto.
	(syms_of_gui): add Q_value.

	* glyphs-x.c (x_progress_gauge_update): use pending items and
	value for setting the state.
	(x_update_widget): don't set items from pending here.

	* glyphs-widget.c (update_widget): update items here.
	(progress_gauge_set_property): use items for storing value. Put
	new value in pending items.

	* glyphs-msw.c (mswindows_progress_gauge_update): use pending
	items for new value. Convert percent -> value.
	(mswindows_tab_control_update): don't update items here.

	* glyphs.c (Fupdate_widget_instances): use image_instance_changed.
	(update_subwindow): ditto.
	(image_instance_changed): new function. Compare hash values and
	past and present widget items.
	(image_instantiate): We more careful about where we instantiate
	things.
	(image_instantiate): add error checking.

	* gutter.c (syms_of_gutter): use -hook.

2000-03-20  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* console-tty.c (Fset_console_tty_input_coding_system): Use
	Qkeyboard.
	(Fset_console_tty_output_coding_system): Use Qterminal.
	(tty_init_console): Use Qkeyboard and Qterminal.

2000-03-21  Ben Wing  <ben@xemacs.org>

	* ntproc.c (create_child): remove bogus HAVE_NTGUI's.
	From Mike Alexander <mta@arbortext.com>.

2000-03-21  Ben Wing  <ben@xemacs.org>

	* event-msw.c (mswindows_need_event): Horrible kludge to fix
	process brokenness.  Proper implementation to come.
	* callproc.c:
	Rename call-process-internal to old-call-process-internal.
	New impl. in process.el.

2000-03-21  Martin Buchholz  <martin@xemacs.org>

	* Makefile.in.in: Coalesce HAVE_NATIVE_SOUND code fragments.

2000-03-20  Andy Piper  <andy@xemacs.org>

	* glyphs.c (full_list_hash): make hashes of the same elements in
	different orders return different values.

2000-03-20  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.32 is released.

2000-03-20  Martin Buchholz  <martin@xemacs.org>

	* buffer.h (DFC_ALLOCA_USE_CONVERTED_DATA):
	(DFC_MALLOC_USE_CONVERTED_DATA):
	Add aliasing-safe casts to allow use with char* or unsigned char*
	lvalues.

	* eldap.c (Fldap_open):
	(Fldap_search_basic):
	(Fldap_add):
	(Fldap_modify):
	Make C++-compilable.
	Make sure GCPRO'ed variables are initialized.
	Use temp variables to avoid repeated calls to Flength.

2000-03-16  Martin Buchholz  <martin@xemacs.org>

	* sysfile.h:
	Make sure PATH_MAX is always defined.
	Include limits.h for PATH_MAX.
	Deprecate use of MAXPATHLEN.

2000-03-10  Martin Buchholz  <martin@xemacs.org>

	* emacs.c: Add reinit_vars_of_fileio.
	* symsinit.h: Add reinit_vars_of_fileio.
	* fileio.c (reinit_vars_of_fileio): New.
	* fileio.c (Fmake_temp_name):
	Initialize temp_name random number from microseconds to make
	collisions even less likely.  Initialize always at process startup
	time.  (make-temp-name) used to return the same file name twice in
	a row when PDUMP.
	Random stylistic fiddling.
	Comment fixes.

2000-03-20  Andy Piper  <andy@xemacs.org>

	* glyphs.c (image_instantiate): allow text glyphs to be
	instantiated in the minibuffer window.

2000-03-19  Andy Piper  <andy@xemacs.org>

	* glyphs.c (image_instance_hash): be careful about which items we
	hash on.

	* glyphs-widget.c (tab_control_set_property): record into pending
	items rather than the actual items.

	* glyphs-x.c (x_update_widget): use pending items to update with.

	* glyphs-msw.c (mswindows_tab_control_update): use pending items
	to update with.

	* glyphs.c (mark_image_instance): mark pending items.

	* window.c (Fset_window_configuration): record the buffer.
	(Fselect_window): totally revert previous change which breaks many
	things.

2000-03-18  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (mswindows_tab_control_update): force selected
	item.

	* glyphs.c (image_instantiate): don't allow the minibuffer as a
	window domain cache, otherwise we get inconsistencies at
	startup. There is something fishy at startup which can lead to the
	minibuffer being the selected window when the gutter content is
	instantiated.

	* gui.c (parse_gui_item_tree_list): add probably unnecessary
	gcpros.
	(parse_gui_item_tree_children): ditto.
	(parse_gui_item_tree_item): ditto.

	* glyphs.c (Fupdate_widget_instances): return something.

2000-03-18  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* window.c (Fselect_window): Undo 2000-03-17 change.

2000-03-17  SL Baur  <steve@musashimaru.m17n.org>

	* postgresql.c (Fpq_setenv): Remove this turkey when linking
	against v7.0 libraries.  Insta-coredump city until the postgres
	folks fix it.

2000-03-17  Andy Piper  <andy@xemacs.org>

	* faces.c (complex_vars_of_faces): don't give the widget face an
	inherited background pixmap.

	* glyphs-msw.c (mswindows_tab_control_instantiate): select the
	selected item.

	* event-stream.c (Fdispatch_non_command_events): return something.

	* gutter.c (output_gutter): use widget face.
	(clear_gutter): ditto.

	* NEWS: adjust again.

	* window.c (Fselect_window): make sure this runs to completion to
	avoid oddities with Fset_window_configuration.
	(Fcurrent_window_configuration): in general do not save the
	minibuffer as the selected window.

	* glyphs.h (IMAGE_INSTANCE_HASH_DEPTH): increase.

2000-03-16  Olivier Galibert  <galibert@pobox.com>

	* emacs.c (Frunning_temacs_p): Revert previous patch.
	(main_1): Reinitialize running_temacs_argc if pdump_load succeeds.

2000-03-16  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_tab_control_update): if no widget values then
	return.

	* NEWS: update for new features.

	* event-Xt.c (emacs_Xt_force_event_pending): new function. Post a
	synthetic event to the native system.
	(reinit_vars_of_event_Xt): set force_event_pending to
	emacs_Xt_force_event_pending.

	* events.h (struct event_stream): add force_event_pending.

	* specifier.c (recompute_one_cached_specifier_in_window): add
	comment.

	* redisplay.c (redisplay_frame): don't call
	update_frame_subwindows. Reset subwindow cachels when
	subwindows_changed, removing this was an optimization too far.

	* redisplay-output.c (compare_runes): reorganize so that we catch
	glyph changes when we want them. Set optimize_output when this
	would help layouts.
	(redisplay_output_layout): remove frame_really_changed, use
	optimize_output instead.

	* redisplay-msw.c (mswindows_output_display_block): reset
	optimize_output after outputting a glyph.
	* redisplay-x.c (x_output_display_block): ditto.
	* redisplay-tty.c (tty_output_display_block): ditto.

	* gutter.c: (specifier_vars_of_gutter): use new spec changed
	functions.
	(gutter_specs_changed): do specific gutter positions.
	(top_gutter_specs_changed): new function. Only update the
	specified gutter specs.
	(bottom_gutter_specs_changed): ditto.
	(left_gutter_specs_changed): ditto.
	(right_gutter_specs_changed): ditto.

	* gui.c (gui_item_hash_internal): new function, does a real hash.
	(gui_item_id_hash): use it.
	(gui_item_hash): hash the eval'ed gui_item.

	* gui-x.c (popup_selection_callback): send an eval event to call
	Fupdate_widget_instances.

	* gui-msw.c (mswindows_handle_gui_wm_command): send an eval event
	to call Fupdate_widget_instances.

	* glyphs.h (struct Lisp_Image_Instance): add optimize_output flag.
	(IMAGE_INSTANCE_OPTIMIZE_OUTPUT): access it.

	* glyphs.c: (update_frame_subwindows): deleted.
	(Fupdate_widget_instances): new function for updating the dirty
	state of widgets that might have changed.
	(syms_of_glyphs): add Qupdate_widget_instances.
	(full_list_hash): hash a list completely.
	(image_instance_hash): use it for items and properties.

	* frame-msw.c (mswindows_size_frame_internal): remove unused
	variable.

	* faces.h (struct face_cachel): fix comment.

	* event-stream.c (Fdispatch_non_command_events): new
	function. Process non-command events, forcing an event cycle
	beforehand.
	(syms_of_event_stream): declare.
	(event_stream_force_event_pending): new function. Force an event
	on the native event queue so that an event cycle will occur next
	time we check.

	* event-msw.c:
	(struct ntpipe_shove_stream):
	(mswindows_enqueue_dispatch_event):
	(mswindows_dequeue_dispatch_event):
	(mswindows_cancel_dispatch_event):
	(mswindows_pump_outstanding_events):
	(mswindows_drain_windows_queue):
	(mswindows_handle_paint):
	(mswindows_wnd_proc):
	(mswindows_key_to_emacs_keysym):
	(get_process_input_waitable):
	(emacs_mswindows_delete_stream_pair): re-indent file.
	(mswindows_need_event): do not process further fds if the windows
	fd is set, otherwise you get endless XM_BUMPQUEUE cycles. This
	fixes the 100% cpu problem.
	(reinit_vars_of_event_mswindows): set force_event_pending to 0.

2000-03-15  Olivier Galibert  <galibert@pobox.com>

	* alloc.h: New.
	* dumper.h: New.
	* dumper.c: New.

	* emacs.c: Moved dump file searching to dumper.c.
	(Frunning_temacs_p): Fixed.

	* alloc.c: Moved everything pdump-related to dumper.c.  Removed
	last_lrecord_type_index_assigned.

2000-02-20  Olivier Galibert  <galibert@pobox.com>

	* symsinit.h: Added reinit parameter to init_console_stream
	declaration.

	* lisp.h: Added file parameter to pdump_load declaration.

	* emacs.c (main_1): Added -nd/--nodump-file and -sd/--show-dump-id
	support.  Added dump file searching.

	* config.h.in: Added EMACS_PROGNAME.

	* console-stream.c (init_console_stream): Fix reinitialisation
	when running from temacs.

	* alloc.c (pdump): Add id support.
	(pdump_load): Add file parameter and signature/id support.

	* Makefile.in.in: Add full pdump support.

2000-03-15  SL Baur  <steve@musashimaru.m17n.org>

	* postgresql.c: Update documentation to reflect latest code
	status.
	(print_result): Show tuple counts in printed representation when
	appropriate.
	(Fpq_put_nbytes): MULE-ize.
	(Fpq_get_line_async): Ditto.

2000-03-14  SL Baur  <steve@musashimaru.m17n.org>

	* postgresql.c (Fpq_lo_import): Fix return value.
	Suggested by: Kenji Itoh <keit@tpj.co.jp>.

2000-03-13  Ben Wing  <ben@xemacs.org>

	* alloc.c (pdump_load):
	Fix compile warning under mswin.

2000-03-14  SL Baur  <steve@musashimaru.m17n.org>

	* postgresql.c: Mule-ization, bug fixes.
	Use PG_CODING to encapsulate coding system name changes.
	Backport a version of TO_EXTERNAL format for 21.1/InfoDock.
	(pg-coding-system): Create.

	(Fpq_conn_defaults): Mule-ize.
	(Fpq_connectdb): Mule-ize & bug fix.
	(Fpq_connect_start): Mule-ize.
	(Fpq_set_client_encoding): Mule-ize.
	(Fpq_finish): Document `DEAD' connection status.
	(Fpq_clear): Ditto.
	(Fpq_pgconn): Mule-ize.
	(Fpq_exec): Mule-ize & bug fix.
	(Fpq_send_query): Ditto.
	(Fpq_get_result): Ditto.
	(Fpq_res_status): Mule-ize.
	(Fpq_result_error_message): Mule-ize.
	(Fpq_ntuples): fix comments.
	(Fpq_fname): Mule-ize.
	(Fpq_fnumber): Mule-ize.
	(Fpq_ftype): fix comments.
	(Fpq_get_value): Mule-ize.
	(Fpq_cmd_status): Ditto.
	(Fpq_cmd_tuples): Ditto.
	(Fpq_oid_value): Ditto.
	(Fpq_notifies): Ditto.
	(Fpq_lo_import): Ditto.
	(Fpq_lo_export): Ditto.
	(Fpq_get_line): Ditto.
	(Fpq_put_line): Mule-ize and bug fix.
	(syms_of_postgresql): Fix ifdef'ing, add pg-coding-system.

2000-03-10  SL Baur  <steve@musashimaru.m17n.org>

	* postgresql.c (vars_of_postgresql): Mule-ize.
	(Fpq_conn_defaults): Ditto.

2000-03-12  Ben Wing  <ben@xemacs.org>

	* alloc.c (Fmake_byte_code):
	* alloc.c (debug_string_purity_print):
	* alloc.c (pdump_backtrace):
	* alloc.c (pdump_get_indirect_count):
	* alloc.c (pdump_register_sub):
	* alloc.c (pdump_register_object):
	* alloc.c (pdump_register_struct):
	* alloc.c (pdump_dump_data):
	* alloc.c (pdump_reloc_one):
	Minor cleanups.

	* console-msw.c:
	* console-msw.c (GetConsoleHwnd):
	* console-msw.c (msw_hide_console):
	* console-msw.c (msw_show_console):
	* console-msw.c (msw_ensure_console_buffered):
	* console-msw.c (msw_output_console_string):
	* console-msw.c (console_type_create_mswindows):

	a) Added functions to manipulate the console window for use with
	shell support.

	b) Added support for writing text to the console, which is now
	used under Windows when xemacs is not being run non-interactively,
	to write text that would otherwise be destined for stdout because
	under these circumstances, text written to stdout tends to
	disappear and not be seen.

	* console-msw.h:
	* event-Xt.c:
	* event-Xt.c (x_event_to_emacs_event):
	* event-Xt.c (describe_event_window):
	* events-mod.h (XEMACS_MOD_CONTROL):
	* events.c:
	* events.c (Fmake_event):
	* events.c (character_to_event):
	* events.c (event_to_character):
	* events.c (format_event_object):
	* events.c (Fevent_modifiers):
	* events.h:
	* events.h (struct key_data):
	* events.h (struct button_data):
	* events.h (struct misc_user_data):
	* frame-x.c (Fcde_start_drag_internal):
	* frame-x.c (Foffix_start_drag_internal):
	* gpmevent.c (Freceive_gpm_event):
	* keymap.c:
	* keymap.c (bucky_sym_to_bucky_bit):
	* keymap.c (control_meta_superify):
	* keymap.c (make_key_description):
	* keymap.c (keymap_lookup_directly):
	* keymap.c (create_bucky_submap):
	* keymap.c (keymap_store):
	* keymap.c (define_key_check_and_coerce_keysym):
	* keymap.c (define_key_parser):
	* keymap.c (define_key_alternate_name):
	* keymap.c (Fdefine_key):
	* keymap.c (raw_lookup_key_mapper):
	* keymap.c (struct map_keymap_unsorted_closure):
	* keymap.c (map_keymap_unsorted_mapper):
	* keymap.c (map_keymap_sort_predicate):
	* keymap.c (map_keymap_sorted):
	* keymap.c (accessible_keymaps_mapper_1):
	* keymap.c (where_is_recursive_mapper):
	* keymap.c (describe_map_mapper):
	* keymap.c (describe_map_sort_predicate):
	* keymap.c (describe_map):
	* keymap.c (complex_vars_of_keymap):
	And a number of other files, the key modifier preprocessor
	constants that xemacs uses have names that conflict with constants
	defined under MS Windows for other purposes, so they were renamed
	to begin with the prefix XEMACS_. The variables that hold such
	modifiers were changed to consistently be of type int to fix
	various compile warnings.

	* console.c (complex_vars_of_console):
	* device.c:
	* device-msw.c:
	* device-msw.c (mswindows_finish_init_device):
	* device-msw.c (msw_get_workspace_coords):
	* device-msw.c (mswindows_device_system_metrics):
	and various other files, added support for a new
	device property called offset-workspace which returns the position
	of the upper left corner of the workspace area and goes along with
	the existing size-workspace property.

	* dialog-msw.c:
	* dialog-msw.c (push_bufbyte_string_as_unicode):
	* dialog-msw.c (mswindows_popup_dialog_box):
	Added support for XEmacs-style accelerator specifications in
	button text.  Note: I didn't add support for this under X Windows,
	and somebody needs to do this.

	* dialog.c:
	* dialog.c (Fpopup_dialog_box):
	Documented the support for accelerators that was just mentioned.

	editfns.c (get_home_directory): Changed behavior under Windows
	when HOME not defined; former behavior was irretrievably broken.

	* emacs.c:
	* emacs.c (main_1):
	* emacs.c (main):
	* minibuf.c (clear_echo_area_internal):
	* minibuf.c (echo_area_append):
	* print.c:
	* print.c (std_handle_out_external):
	* print.c (std_handle_out_va):
	* print.c (fatal):
	* print.c (write_string_to_stdio_stream):
	* print.c (output_string):
	* print.c (debug_print):
	* print.c (debug_backtrace):
	* print.c (debug_short_backtrace):
	Cleaned up the code that prints text to stdout so that this can be
	changed to output into a console window instead under MS Windows,
	as described above.

	* eval.c:
	* eval.c (DEFEND_AGAINST_THROW_RECURSION):
	* eval.c (internal_catch):
	* eval.c (unwind_to_catch):
	* eval.c (throw_or_bomb_out):
	* eval.c (condition_case_1):
	* eval.c (signal_1):
	* eval.c (check_error_state_sanity):
	* eval.c (call_with_suspended_errors_1):
	* eval.c (call_with_suspended_errors):
	* eval.c (reinit_vars_of_eval):
	Added code to catch throw loops and check for a pesky bug that may
	be gone now.

	* event-msw.c:
	* event-msw.c (key_needs_default_processing_p):
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (mswindows_modifier_state):
	* event-msw.c (emacs_mswindows_quit_p):
	* event-msw.c (vars_of_event_mswindows):
	a) Added support for using the alt key to select menu items as is
	standard under MS Windows.  This is controlled using the variable
	menu-accelerator-enabled, just like under X Windows.  There is an
	option on the options menu to turn this support on.  I really
	think that it should be on by default under Windows, but I'm not
	going to make this change yet.

	b)  Added support for dynamic display size changes under Windows.

	* event-stream.c:
	* event-stream.c (maybe_echo_keys):
	* event-stream.c (Fnext_event):
	* event-stream.c (command_builder_find_leaf):
	* event-stream.c (lookup_command_event):
	* event-stream.c (execute_command_event):
	* event-stream.c (pre_command_hook):
	* event-stream.c (post_command_hook):
	* event-stream.c (syms_of_event_stream):
	* event-stream.c (vars_of_event_stream):
	* event-stream.c (complex_vars_of_event_stream):
	* events.h (struct command_builder):

	a) Tried to clean up a little bit the horribly written x-specific
	accelerator code that crept into this file.  I moved this code
	into menubar-x.c where it belongs. I also needed to move the
	command builder structure into the file events.h because it is
	accessed directly by this accelerator code.  What I didn't do, but
	which should be done at some point, is to properly abstract this
	code using device methods instead of the kludgy way that it
	currently hooks into the event code.

	b) Added the lisp variables this-command-properties and
	last-command- properties, which should be used to synchronize two
	adjacent commands in preference to playing games with the variable
	this-command, which is typically what happens.

	c) Added some slightly nasty code to hook into the lisp support
	for shifted- motion-key selection.  This is actually necessary for
	somewhat complicated reasons, which are described in
	simple.el. (NB: I think the proper thing would be to have the code
	that calls the pre and post command hooks also call out to generic
	lisp functions in simple.el, where all built-in stuff could be
	added.  I will think about this more.)

	* event-unixoid.c (poll_fds_for_input):
	* lread.c (readchar):
	* redisplay-tty.c (tty_clear_frame):
	* redisplay-x.c (x_get_gc):
	* signal.c (interrupt_signal):
	And a whole bunch of other files: fixed up places that printed
	directly to stderr to instead call the function stderr_out so that
	the changes I made under Windows work correctly.

	* filemode.c (mode_string):
	Warning fixes.

	* frame-msw.c:
	* frame-msw.c (mswindows_size_frame_internal):
	Fixed the computation of frame size and position to keep the frame
	within the workspace area, rather than within the physical
	dimensions of the screen, so that the frame doesn't overlap window
	manager decorations, such as the start menu and toolbar, typically
	at the bottom of the screen.

	* frame.c (vars_of_frame):
	Changed the default frame title format under MS Windows to consist
	of buffername-XEmacs, which is standard under MS Windows.  I think
	it might be a good idea to change this everywhere because I think
	it is superior to the current frame title format, but this is the
	kind of change that is likely to cause some people to get annoyed,
	so I'm not making it.

	* glyphs-eimage.c (png_instantiate): Fixed some compile warnings.

	* gui-msw.c (mswindows_handle_gui_wm_command):
	Fixed compile warnings.

	* gui-x.c:
	* gui-x.c (strdup_and_add_accel):
	* gui-x.c (button_item_to_widget_value):
	* gui-x.h:
	Added code to automatically put an accelerator onto the beginning
	of menu items that don't have one as is now the standard, and is
	described more later.  Also fixed things so that the menu item
	name can be an evaluated expression, again a new standard.

	* gui.c:
	* gui.c (gui_item_add_keyval_pair):
	* gui.c (make_gui_item_from_keywords_internal):
	* gui.c (gui_add_item_keywords_to_plist):
	* gui.c (gui_item_accelerator):
	* gui.c (gui_name_accelerator):
	* gui.c (gui_item_included_p):
	* gui.c (gui_item_display_flush_left):
	* gui.c (gui_item_display_flush_right):
	* gui.c (parse_gui_item_tree_item):
	* gui.c (parse_gui_item_tree_children):
	* gui.c (parse_gui_item_tree_list):
	Mule-ized.  Cleanup.  GCPRO addition.

	* line-number.c (buffer_line_number):
	* lisp.h:
	* lisp.h (EMACS_INT_MAX):
	Added the manifest constant EMACS_INT_MIN corresponding to the
	existing constant EMACS_INT_MAX.  This is partially to fix compile
	warnings under Windows, and partly for cleanliness.

	* menubar-msw.c:
	* menubar-msw.c (REPLACE_ME_WITH_GLOBAL_VARIABLE_WHICH_CONTROLS_RIGHT_FLUSH):
	* menubar-msw.c (msw_translate_menu_or_dialog_item):
	* menubar-msw.c (displayable_menu_item):
	* menubar-msw.c (populate_menu_add_item):
	* menubar-msw.c (populate_or_checksum_helper):
	* menubar-msw.c (populate_menu):
	* menubar-msw.c (update_frame_menubar_maybe):
	* menubar-msw.c (prune_menubar):
	* menubar-msw.c (msw_char_is_accelerator):
	* menubar-msw.c (unsafe_handle_wm_initmenu_1):
	* menubar-msw.c (mswindows_handle_wm_command):
	* menubar-msw.c (mswindows_handle_wm_initmenupopup):
	* menubar-msw.c (mswindows_handle_wm_initmenu):
	* menubar-msw.c (mswindows_update_frame_menubars):
	* menubar-msw.c (mswindows_free_frame_menubars):
	* menubar-msw.c (mswindows_popup_menu):
	Fixed a bug in handling accelerators where an extra character
	would be displayed in the menu item.  Also generalized the
	function displayable_menu_item because it is now used by the
	dialog box code as well.  And finally, added code in the functions
	that create the menubar to extract a list of accelerators for the
	top level menubar, which is used in the event code to determine
	whether a particular alt-key combination should be used to invoke
	a menu item, or should be passed through to access the standard
	XEmacs keymap binding for this key combination.

	Much needed GCPROing.

	* menubar-x.c:
	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	* menubar-x.c (menu_item_descriptor_to_widget_value):
	* menubar-x.c (restore_in_menu_callback):
	* menubar-x.c (x_popup_menu):
	* menubar-x.c (menu_move_up):
	* menubar-x.c (menu_move_down):
	* menubar-x.c (menu_move_left):
	* menubar-x.c (menu_move_right):
	* menubar-x.c (menu_select_item):
	* menubar-x.c (command_builder_operate_menu_accelerator):
	* menubar-x.c (menu_accelerator_junk_on_error):
	* menubar-x.c (command_builder_find_menu_accelerator):
	* menubar-x.c (Faccelerate_menu):
	* menubar.h:
	Moved a whole bunch of code here that was previously in
	event-stream.c as described above.  There is also code connected
	to the new standard of adding an accelerator to the beginning of
	menu items that don't have one as described above and below.

	* menubar.c:
	* menubar.c (menu_parse_submenu_keywords):
	* menubar.c (Fmenu_find_real_submenu):
	* menubar.c (Fnormalize_menu_item_name):
	* menubar.c (syms_of_menubar):
	* menubar.c (vars_of_menubar):
	* menubar.c (complex_vars_of_menubar):

	a) Cleaned up a bunch of documentation and improved it.

	b) XEmacs now automatically adds an accelerator onto the beginning
	of any menu items that don't have one.  I did this because there
	will inevitably be some menu items on the main menubar that don't
	have accelerators on them because the package that adds that
	particular menu item hasn't yet been fixed up to have accelerators
	in them and it looked rather strange to have some items with and
	some items without accelerators, especially since even in items
	without accelerators, you can, at least under windows, still
	access the item through an accelerator corresponding to the first
	character in the item's name.  If people don't like this behavior,
	I can add a variable to turn it off optionally, but I'm not sure
	this is a good idea because we really do need to have accelerators
	on all of the menu items, and if a package doesn't like the
	accelerators being put on the first character, then it should put
	the accelerators where they belong.

	c) I made a behavior change, which is that the descriptor that
	specifies the text of the menu item, which formerly was just a
	string, can now also be an evaluated expression.  This makes this
	descriptor parallel with all of the others, which could also be
	evaluated expressions.  This also obviates the need for the
	keyword :label, which was previously listed in the documentation
	as unimplemented, and which was for the same purpose.

	d) GCPROing.

	* ntproc.c:
	* ntproc.c (new_child):
	* ntproc.c (sys_spawnve):
	* ntproc.c (find_child_console):
	* ntproc.c (sys_kill):
	Fixed compile warnings.  By the way, this file should really go
	away entirely, and this will happen as soon as Kirill makes his
	final round of process cleanups, which affect the function
	call-process.

	* process-nt.c:
	* process-nt.c (struct nt_process_data):
	* process-nt.c (find_process_from_pid):
	* process-nt.c (send_signal_the_nt_way):
	* process-nt.c (enable_child_signals):
	* process-nt.c (find_child_console):
	* process-nt.c (send_signal_the_95_way):
	* process-nt.c (nt_finalize_process_data):
	* process-nt.c (ensure_console_window_exists):
	* process-nt.c (nt_create_process):
	* process-nt.c (nt_kill_child_process):
	* process-nt.c (nt_kill_process_by_pid):
	* process-nt.c (nt_open_network_stream):
	* process-nt.c (vars_of_process_nt):
	Copied over code from Emacs 20.5 to correctly send signals to sub-
	processes under Windows 95.  Also added code to automatically
	create and hide console window when a sub-process is created under
	Windows 95, which obviates the need for the separate runemacs.exe
	executable, and finally implemented some variables that were
	implemented in Emacs 20.5, but previously not in XEmacs.  These
	include mswindows- start-process-share-console and
	mswindows-start-process-inherit-error-mode. (Both of these only
	apply to Windows 95.)

	* regex.c (regex_compile): Fixed a compile warning.

	* select-msw.c:
	* select-msw.c (mswindows_own_selection):
	* select-msw.c (mswindows_get_foreign_selection):
	* select-msw.c (mswindows_disown_selection):
	* select-msw.c (console_type_create_select_mswindows):
	* select-msw.c (syms_of_select_mswindows):
	Cleaned up the file and implemented the device method
	selection_exists_p, which had accidentally been left out.  Also
	removed four lisp functions that were remnants from before the
	time when the selection code was properly device abstracted.
	These functions are no longer needed because there are generic
	equivalents, and because they were added recently and don't exist
	in FSF Emacs, I don't think there's any problem with just deleting
	them.

	* sysdep.c:
	* sysdep.c (sys_subshell):
	Fixed a compile warning, although in this case there's probably
	something wrong with this code, and it ought to be looked into
	more thoroughly by somebody who understands it.

	* window.c:
	* window.c (Fwindow_text_area_height):
	* window.c (Fwindow_width):
	* window.c (Fwindow_full_width):
	* window.c (Fwindow_pixel_width):
	* window.c (debug_print_window):
	* window.c (syms_of_window):
	Added functions window-text-area-height and window-full-width,
	which are functions for returning various width and height
	characteristics of a window. (One of these functions is necessary
	for making the file dialog box work correctly, and the other one
	was added for completeness.)  Also added a table to the
	documentation for window-height which describes the entire scheme
	for accessing width and height characteristics of a window.

2000-03-12  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* nt.c (fstat): Added a comment for another problem with
	non-encapsulated [f]stat(), reported by Adrian Aichner
	<aichner@ecf.teradyne.com>.

2000-03-11  Andy Piper  <andy@xemacs.org>

	* window.c (make_dummy_parent): initialize subwindow instance
	cache.
	(Fset_window_configuration): zero extent_modiff.

2000-03-10  Andy Piper  <andy@xemacs.org>

	* redisplay.c (Fredraw_frame): reset the changed_set flags so that
	more changes can be triggered.
	(Fredisplay_frame): ditto.
	(Fredraw_device): ditto.
	(Fredisplay_device): ditto.
	(redisplay_frame): make non-static.
	(redisplay_frame): call update_frame_gutter_geometry outside of
	display proper.

	* gutter.h: declare update_frame_gutter_geometry.

	* redisplay.h: declare redisplay_frame.

	* gutter.c (update_frame_gutter_geometry): move geometry changes
	in update_frame_gutters here. Geometry changes can only occur
	outside of redisplay.
	(update_frame_gutters): remove geometry change code.
	(Fredisplay_gutter_area): make sure that we are in display when we
	update and that we have flushed any size changes.

2000-03-11  Andy Piper  <andy@xemacs.org>

	* alloc.c (pdump_dump_data): remove i & count shadows.

2000-02-27  Mike Alexander  <mta@arbortext.com>

	* sysdep.h: Declare pdump_read_file

	* sysdep.c (pdump_read_file): New function

	* alloc.c (pdump_load): Call pdump_read_file to get the portable
	dump data

2000-03-10  SL Baur  <steve@musashimaru.m17n.org>

	* lrecord.h: add `lrecord_type_pgsetenv'.

2000-03-08  SL Baur  <steve@musashimaru.m17n.org>

	* symsinit.h: declare (vars|syms)_of* functions.
	* lrecord.h: add `lrecord_type_pgconn' and 'lrecord_type_pgresult'.

2000-03-06  SL Baur  <steve@musashimaru.m17n.org>

	* config.h.in: Add symbols HAVE_POSTGRESQL and HAVE_POSTGRESQLV7

	* inline.c: Include postgresql.h lrecord stuffs to placate buggy
	GCCs.

	* emacs.c (main_1): Call postgres initialization code.

	* postgresql.h: New file.  PostgreSQL RDBMS support.
	* postgresql.c: New file.

2000-03-08  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* redisplay-output.c (redisplay_output_display_block): Disable
	redundant code.

2000-03-09  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* mule-canna.c (Fcanna_henkan_region): Translate doc-string.
	(Fcanna_henkan_next): Ditto.
	(Fcanna_bunsetu_henkou): Ditto.
	(Fcanna_henkan_kakutei): Ditto.
	(Fcanna_henkan_end): Ditto.
	(Fcanna_henkan_quit): Ditto.
	(Fcanna_henkan_next): Set retun value correctly.
	(c2mu): Use unsigned char instead of signed char.

2000-03-09  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* emacs.c (main_1): Always call syms_of_gui.
	* inline.c: include gui.h

2000-03-09  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* redisplay.c (Vvisible_bell): Renamed from visible_bell and
	converted to Lisp_Object.
	(Qtop_bottom): New variable.
	(syms_of_redisplay): Initialize it.
	* redisplay.h (Vvisible_bell): Ditto.
	* sound.c (ding): Ditto and check if Vvisible_bell is nil.
	* redisplay-x.c (x_flash): When Vvisible_bell is top-bottom,
	only flash top and bottom.

2000-03-08  Andy Piper  <andy@xemacs.org>

	* buffer.c (Frename_buffer): record new buffer name the right way.

2000-03-08  Andy Piper  <andy@xemacs.org>

	* glyphs.c (update_subwindow): increase hash depth so that widget
	items get picked up properly.

	* redisplay-output.c (compare_runes): increase hash depth so that
	widget items get picked up properly.

2000-03-08  Andy Piper  <andy@xemacs.org>

	* gutter.c (output_gutter): add some debug.

	* glyphs.h (struct Lisp_Image_Instance): add display_hash.
	(IMAGE_INSTANCE_DISPLAY_HASH): new macro.
	(XIMAGE_INSTANCE_DISPLAY_HASH): ditto.

	* redisplay-output.c (compare_runes): use display_hash to
	determine if glyphs really are not the same.

	* glyphs.c (update_subwindow): check display_hash to see if
	anything really needs to be updated. If not then do
	nothing. Record the display_hash after updating.
	(image_instance_equal): compare the image_instance face also.

2000-03-07  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* redisplay.h: Fix comment style.

2000-03-08  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* consle-msw.h (struct mswindows_frame):
	Added new member paint_pending to indicate whether a WM_PAINT
	magic event has been queued for this frame.

	* event-msw.c (mswindows_drain_windows_queue):
	Don't queue a WM_PAINT magic event if one is already queued.
	(emacs_mswindows_handle_magic_event): clear paint_pending flag.

	* frame-msw.c (mswindows_init_frame_1): initialise paint_pending flag.

2000-03-07  Didier Verna  <didier@xemacs.org>

	* dired.c: #include `regex.h' after `sysfile.h'.

2000-03-06  Martin Buchholz  <martin@xemacs.org>

	* sound.c (init_nas_sound): Fix compiler warning.

	* alloc.c (ALIASING_VOIDPP_DEREFERENCE): New.
	(FREE_STRUCT_P):
	(MARK_STRUCT_AS_FREE):
	(MARK_STRUCT_AS_NOT_FREE):
	Make `gcc -fstrict-aliasing' work properly.

2000-03-07  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* device-msw.c (mswindows_finish_init_device): Call CoInitialize().
	(mswindows_delete_device): Call CoUnnitialize().

	* event-msw.c (mswindows_wnd_proc): WM_DROPFILES: Decode Shortcuts.

2000-02-25    <CraigL@DyCon.com>

	* process-nt.c: MinGW now has <shellapi.h>, but still needs
	<errno.h>.

	* sysdep.c: This extern declaration for environ prevents MinGW
	from finding the variable in CRTDLL.DLL.

	* s\mingw32.h (PBS_SMOOTH): Removed, now defined in cygwin's
	windows headers.
	(SHGFI_EXETYPE): ..
	(WM_MOUSEWHEEL): ..
	(_WIN32_IE): Added, needed to get the TCS_BOTTOM and TCS_VERTICAL
	definitions.
	(MMRESULT): Removed, now defined in cygwin's windows headers.
	(TIMECAPS): ..
	(uid_t,gid_t,pid_t,ssize_t): ..
	(_timeb): Removed, MinGW defines both _timeb and timeb.
	(HAVE_H_ERRNO): Added.
	(HAVE_TZNAME): Added, configure is not detecting this.

2000-02-03  IKEYAMA Tomonori <tomonori@suiyokai.org>

	* chartab.h (XCHAR_TABLE_VALUE_UNSAFE): New macro.
	* syntax.c (syntax_match): Use it.

	* cmds.c: Import auto-fill-chars from FSF Emacs.
	(Vauto_fill_chars): New variables.
	(internal_self_insert): Check Vauto_fill_chars.
	(vars_of_cmds):
	Declare auto-fill-chars as a Lisp variable and initialize it.

2000-03-05  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* fileio.c (Fmake_symbolic_link):
	(Ffile_symlink_p):
	Run handlers even if local machine doesn't have symlinks.

2000-03-05  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* event-msw.c (mswindows_drain_windows_queue):
	Don't generate paint magic events for non-XEmacs frames.

2000-03-05  Andy Piper  <andy@xemacs.org>

	* redisplay.c (redisplay_frame): generate_displayable_area and
	friends assumes that we are not in GC, we therefore have to make
	sure that this doesn't happen.

	* gutter.c (calculate_gutter_size): generate_displayable_area
	assumes that we are not in GC, we therefore have to make sure that
	this doesn't happen.

2000-03-05  Martin Buchholz  <martin@xemacs.org>

	* opaque.c (DEFINE_LRECORD_IMPLEMENTATION): opaque_ptr ==> opaque-ptr

2000-03-03  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* redisplay.c (regenerate_window): Make sure we set a sane value
	for end_pos even if we jump out of the loop.
	(regenerate_window): Answer Ben's question :-).
	(start_end_of_last_line): Add may_error argument.
	(start_of_last_line):
	(end_of_last_line): Pass may_error = 0.
	(end_of_last_line_may_error): New function.
	(pixel_to_glyph_translation): Use it, so we don't crash in
	event_to_glyph.

2000-03-04  Andy Piper  <andy@xemacs.org>

	* window.h (struct window): add gutter_extent_modiff.

	* window.c (allocate_window): zero out gutter_extent_modiff.

	* redisplay.h: declare sync_display_line_structs.

	* redisplay.c (add_glyph_rune): add a better comment.

	* redisplay-output.c (sync_display_line_structs): made non-static.
	(compare_runes): remove unneccesary glyph cachel access.

	* gutter.h: declare gutter_extent_signal_changed_region_maybe.

	* gutter.c (output_gutter): don't output the gutter if extent
	changes only involve extents in buffers. use 4 sets of display
	lines.
	(gutter_extent_signal_changed_region_maybe): new function. Mark
	extents in gutters as changed.
	(update_frame_gutters): use 4 sets of display lines.
	(reset_gutter_display_lines): ditto.
	(free_frame_gutters): ditto.
	(redraw_exposed_gutter): force output of gutters.

	* frame.h (struct frame): add 4 sets of gutter display lines.

	* extents.c: (extent_changed_for_redisplay): signal changes to
	extents in strings in the gutter as well as extents in buffers.

2000-03-02  Andy Piper  <andy@xemacs.org>

	* gutter.c (specifier_vars_of_gutter): cosmetic changes.

	* frame.c (Fmake_frame): make sure the gutters get initialized
	after the frame is visible.
	(set_frame_selected_window): re-arrange compilation macros a
	little.
	(change_frame_size_1): mark gutters changed.

	* device.c (Fset_device_class): mark gutters changed.

2000-03-01  Andy Piper  <andy@xemacs.org>

	* window.c (window_top_frame_gutter_height): deleted.
	(window_bottom_frame_gutter_height): ditto.
	(window_left_frame_gutter_height): ditto.
	(window_right_frame_gutter_height): ditto.
	(window_top_gutter_height): don't use them.
	(window_bottom_gutter_height): ditto.
	(window_left_gutter_width): ditto.
	(window_right_gutter_width): ditto.
	(Fsplit_window): ditto.
	(Fwindow_pixel_edges): don't use border dimensions here.

	* scrollbar.c (update_scrollbar_instance): don't take gutters into account.
	(update_scrollbar_instance): ditto.

	* redisplay.c (generate_modeline): don't take gutters into account.
	(generate_modeline): ditto.
	(redisplay_frame): small gutter display optimization.

	* redisplay-x.c (x_output_vertical_divider): don't take gutters into account.

	* redisplay-msw.c (mswindows_output_vertical_divider): don't take
	gutters into account.

	* gutter.h (WINDOW_REAL_*_GUTTER_BOUNDS): remove bogus checks
	for window position and type.

	* gutter.c (get_gutter_coords): fix for frame gutters.
	(update_frame_gutters): update frame geometry if the gutters have
	changed.
	(init_frame_gutters): record current gutter geometries.

	* glyphs-msw.c (mswindows_subwindow_instantiate): remove unused
	var.
	(mswindows_widget_instantiate): ditto.

	* frame.h (struct frame): add current_gutter_bounds.

	* frame.c (change_frame_size_1): position window and minibuffer
	appropriately taking into account the frame gutters.

	* frame-x.c: (x_initialize_frame_size): take into account the
	frame gutters.

2000-02-29  Stephen J. Turnbull  <stephen@xemacs.org>

	* emacs.c (data-directory):  Xref `locate-data-file' in docstring.

2000-02-29  Stephen J. Turnbull  <stephen@xemacs.org>

	* alloc.c (dumpopaquevec): Increase dimension for --with-canna.

1999-12-30  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* file-coding.c (reset_decoding_stream): Clear previous
	detection state when autodetect.

2000-02-29  Didier Verna  <didier@xemacs.org>

	* extents.c (set_extent_glyph_1): don't require extents to be
	attached.

2000-02-27  Andy Piper  <andy@xemacs.org>

	* gutter.c (Fset_default_gutter_position): don't default left and
	right gutter visibility to t.
	(Fset_default_gutter_position): run
	default-gutter-position-changed-hook.
	(syms_of_gutter): add default-gutter-position-changed-hook.

2000-02-26  Andy Piper  <andy@xemacs.org>

	* specifier.c (Fmake_specifier): add gutter references.

	* gutter.h (RAW_WINDOW_GUTTER): new macro.

	* lisp.h: declare Fvalid_plist_p.

	* gutter.c (gutter_geometry_changed_in_window): mark the modeline
	as changed.
	(default_gutter_visible_p_changed_in_window): invalidate gutter as
	well as its visibility so that it gets reconstructed.
	(construct_window_gutter_spec): new function. Construct a string
	to be displayed in the gutter from a plist of strings. Take care
	to only use elements that are declared as visible.
	(calculate_gutter_size): use RAW_WINDOW_GUTTER instead of
	WINDOW_GUTTER.
	(gutter_validate): allow plists of strings in the specifier.
	(gutter_specs_changed): construct the real_gutter from the gutter
	specs using construct_window_gutter_spec.
	(gutter_visible_validate): gutter-visible is a new specifier type.
	(Fgutter_visible_specifier_p): new function for the new specifier.
	(syms_of_gutter): declare gutter-visible and
	Fgutter_visible_specifier_p.
	(specifier_type_create_gutter): intitalize new gutter-visible
	specifier.
	(reinit_specifier_type_create_gutter): ditto.
	(specifier_vars_of_gutter): use new specifier type for gutter
	visibility.
	(init_frame_gutters): construct real_gutter correctly.
	(Fgutter_specifier_p): beef up documentation.
	(Fgutter_size_specifier_p): ditto.

	* winslots.h: add real_gutter slots.

2000-02-25  Andy Piper  <andy@xemacs.org>

	* device-msw.c: Be kind to older cygwin versions. From Raymond
	Toy <toy@rtp.ericsson.se>.

	* gui-msw.c (Fmswindows_shell_execute): Remove things unknown to
	earlier cygwins. From Raymond Toy <toy@rtp.ericsson.se>.

2000-02-25  Martin Buchholz  <martin@xemacs.org>

	* elhash.c (MARK_OBJ): Practice macro hygiene.

2000-02-24  Martin Buchholz  <martin@xemacs.org>

	* miscplay.c: s/__inline__/inline/g;
	* glyphs-msw.c (set_mono_pixel): INLINE ==> static inline
	(get_device_compdc): INLINE ==> static inline
	* *.[ch]: Change INLINE to INLINE_HEADER globally.
	find -name '*.h' | \
	xargs global-replace \
	's/(^|(?<=[^A-Za-z0-9_]))INLINE((?=[^A-Za-z0-9_])|$)/INLINE_HEADER/g'

2000-02-25  Andy Piper  <andy@xemacs.org>

	* window.c (window_top_frame_gutter_height): new function.
	(window_top_window_gutter_height): ditto.
	(window_top_gutter_height): use them.
	(window_bottom_frame_gutter_height): new function.
	(window_bottom_window_gutter_height): ditto.
	(window_bottom_gutter_height): use them.
	(window_left_window_gutter_width): new function.
	(window_left_frame_gutter_width): ditto.
	(window_left_gutter_width): use them.
	(window_right_window_gutter_width): new function.
	(window_right_frame_gutter_width): ditto.
	(window_right_gutter_width): use them.
	(window_pixel_height): new function. calulate window pixel height
	with frame gutter involvement.
	(Fsplit_window): calculate new sizes taking frame gutters into
	account.
	(window_char_height_to_pixel_height): don't include frame gutters.
	(window_char_height): use window_pixel_height.
	(window_pixheight): rename from window_pixel_height.
	(change_window_height): use it.
	(window_pixel_height_to_char_height): don't include frame gutters.
	(window_char_width_to_pixel_width): ditto.

2000-02-25  Andy Piper  <andy@xemacs.org>

	* glyphs.h (IMAGE_INSTANCE_FACE): glyph might be nil, don't crash
	if it is.

2000-02-24  Martin Buchholz  <martin@xemacs.org>

	* alloc.c (staticpro):
	(staticpro_nodump):
	(dumpstruct):
	(dumpopaque):
	(pdump_wire):
	(pdump_wire_list):
	(compact_string_chars):
	(pdump_dump_wired):
	Convert:  if (foo) abort();  ==>  assert (! foo);

	* eldap.c (Fldap_search_basic):
	(Fldap_add):
	(Fldap_modify):
	(Fldap_delete):
	Fix compiler warnings, and possible crashes if (random) return
	value were to be used.

2000-02-21  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* device-msw.c: Workaround ResetDC failure.

	* frame-msw.c (msprinter_init_frame_3): Added an assertion before
	applying a devmode.

	* redisplay-msw.c (get_frame_dc): Added start_page_p.
	(mswindows_text_width): Do not start printer page.

	* console-msw.h (CHECK_MSGDI_DEVICE): Added this and friends.

	* glyphs-msw.c: Added image methods to msprinter console and
	msprinter-specific image instantiation.

2000-02-20  Mike Alexander  <mta@arbortext.com>

	* select-msw.c (Fmswindows_set_clipboard): GC protect more things
	to avoid crashes when selection-sets-clipboard is on
	(mswindows_own_selection): ditto

2000-02-19  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* glyphs-msw.c:
	* redisplay-msw.c (get_frame_dc):
	(get_frame_compdc):
	* console-msw.h:
	* device-msw.c (mswindows_init_device):
	(mswindows_delete_device):
	(msprinter_init_device):
	(msprinter_delete_device):
	* frame-msw.c (mswindows_init_frame_1):
	(mswindows_delete_frame):
	(msprinter_init_frame_3):
	(msprinter_delete_frame): Move compatible DC to device object from
	frame object, for both mswindows and msprinter. Only one at a time
	is needed, it is a real waste to have one per frame!

2000-02-23  Andy Piper  <andy@xemacs.org>

	* glyphs.c: add dynamic width and height elements.
	(image_instance_equal): ditto.

	* glyphs-widget.c (widget_query_geometry): calculate width and
	height dynamically if required.
	(initialize_widget_image_instance): initialize dynamic dimensions.
	(widget_instantiate): pick-up dynamic dimensions.

	* glyphs.h (struct Lisp_Image_Instance): add width and height for
	dynamic determination. Add appropriate macros.

	* gutter.h (WINDOW_GUTTER_BORDER_WIDTH): make non-integer
	dimensions safe.
	(WINDOW_GUTTER_SIZE): ditto.
	(WINDOW_GUTTER_SIZE_INTERNAL): ditto.

	* redisplay-msw.c (get_frame_compdc): gcc can't cope with this
	inline.
	(get_frame_dc): ditto.

	* redisplay.h (GLOBAL_RESET_CHANGED_FLAGS): don't reset faces
	here.

2000-02-23  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.31 is released.

2000-02-22  Ben Wing <ben@xemacs.org>

	* ntheap.c (allocate_heap): Make sure `ptr' is initialized.

2000-02-22  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_widget_instantiate): don't explicitly resize here.

2000-02-21  Mike Sperber <mike@xemacs.org>

	* .dbxrc:
	* .gdbinit:
	* Makefile.in.in: Remove obsolete EMACSBOOTSTRAP... environment
	variables.

2000-02-21  Mike Sperber <mike@xemacs.org>

	* s/aix4.h: Declare getaddrinfo broken for AIX 4, which it is.

2000-02-21  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.30 is released.

2000-02-20  Martin Buchholz  <martin@xemacs.org>

	Performance hacking.
	* *.c (syms_of_*):
	Add INIT_LRECORD_IMPLEMENTATION macros, paired with
	DEFINE_LRECORD_IMPLEMENTATION macros in the same file.
	* emacs.c (main_1):
	* lisp.h (DEFUN):
	* console.c (DEFVAR_CONSOLE_LOCAL_1):
	* buffer.c (DEFVAR_BUFFER_LOCAL_1):
	* symeval.h (DEFVAR_SYMVAL_FWD):
	* symbols.c (guts_of_unbound_marker):
	Make all c_readonly objects also lisp_readonly and marked for life.
	* lrecord.h (struct lrecord_implementation):
	Document flags better.
	* lrecord.h (DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION_WITH_PROPS):
	* lrecord.h (DECLARE_LRECORD):
	* lrecord.h (XSETRECORD):
	* lrecord.h (RECORDP):
	* lrecord.h (RECORD_TYPEP):
	* lrecord.h (RECORD_MARKER): New.
	* lrecord.h (error_check_*):
	* lrecord.h (CONCHECK_NONRECORD):
	* lrecord.h (MAKE_LRECORD_IMPLEMENTATION):
	* lrecord.h (INIT_LRECORD_IMPLEMENTATION): New.
	* lrecord.h (set_lheader_implementation):
	* lrecord.h (enum lrecord_type): New.
	* symeval.h (SYMBOL_VALUE_MAGIC_P):
	* alloc.c (disksave_object_finalization_1):
	* alloc.c (mark_object):
	* alloc.c (lrecord_type_index):
	* alloc.c (tick_lcrecord_stats):
	* alloc.c (Fgarbage_collect):
	* alloc.c (init_alloc_once_early):
	* alloc.c (pdump_load):
	* alloc.c (GC_CHECK_LHEADER_INVARIANTS): New.
	* alloc.c (lrecord_type_index): Delete.
	Make lisp object type indexes be constant.
	  Makes (byte-compile) 5% faster.
	Put all marker functions into their own array.
	  Makes (garbage-collect) 5% faster.
	Optimize SYMBOL_VALUE_MAGIC_P.
	  Makes (byte-compile) 2-3% faster.
	* config.h.in (gc_checking_assert): New.
	* alloc.c: Use gc_checking_assert().
	* .dbxrc: Make compatible with new object type implementation.
	* .gdbinit: Make compatible with new object type implementation.
	* alloc.c: Delete all symbols defined only for debugging, such as
	Lisp_Type_Vector and lrecord_charset.

2000-02-21  Andy Piper  <andy@xemacs.org>

	* gui-msw.c (Fmswindows_shell_execute): fix file location
	problems.

	* buffer.c (Fkill_buffer): remove buffer from alist buffer
	unshowing so that set_window_buffer doesn't undo
	kill_buffer_hook's hard work.

	* glyphs-widget.c (tab_control_query_geometry): don't count the
	first item when calculating geometry.

	* glyphs.c (map_subwindow): remove redundant code.
	(update_frame_subwindows): be more circumspect about when to
	update subwindows.

	* glyphs-x.c (x_update_widget): Properly fix sizing bug. Fix bug
	when items haven't changed. Update faces if faces have changed as
	well as just the widget face.
	(x_tab_control_update): Update faces if faces have changed as well
	as just the widget face.

2000-02-21  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* device-msw.c: (mswindows_delete_device): Remove redundant DDE
	registration.
	(build_syscolor_string): Use mswindows_color_to_string to try to
	get a named color.
	(mswindows_device_system_metrics): Reverse the foreground and
	background colors so that they match the documentation.

	* objects-msw.c: (mswindows_X_color_map): tweak some values so
	they match the default Windows palette.
	(mswindows_color_to_string): New function.

2000-02-21  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* s/windowsnt.h: Only use __declspec(noreturn) with MSVC>=6.

2000-02-18  Olivier Galibert  <galibert@pobox.com>

	* m/*, s/*: Removed obsolete DATA_SEG_BITS, PURE_SEG_BITS,
	WORD_MACHINE, SIGN_EXTEND_CHAR and EXPLICIT_SIGN_EXTEND.

	* symbols.c (init_symbols_once_early): Removed obsolete
	DATA_SEG_BITS related kludge.
	(defvar_magic): Ditto.

	* malloc.c: Removed obsolete DATA_SEG_BITS
	* ralloc.c: Ditto.
	* mem-limits.h: Ditto.

	* Makefile.in.in: Removed obsolete HAVE_SHM
	* emacs.c: Ditto.

2000-02-13  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	*  device-msw.c (mswindows_delete_device): Free DDE string
	handles.

2000-02-16  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* keymap.c (get_keyelt):
	* unexnt.c (unexec):
	* vm-limit.c (memory_warnings):
	* ntheap.c (recreate_heap):
	* ntheap.h (UNINIT_PTR):
	* select-msw.c (Fmswindows_get_clipboard):
	(Fmswindows_set_clipboard):
	* objects-msw.h (MSWINDOWS_BAD_HFONT):
	* objects-msw.c:
	* menubar-msw.c (displayable_menu_item):
	* glyphs-msw.c:
	* glyphs-msw.h (IMAGE_INSTANCE_MSWINDOWS_MASK):
	* sysdep.c (sys_subshell):
	* process-nt.c (nt_create_process):
	* nt.c (normalize_filename):
	(dostounix_filename):
	(unixtodos_filename):
	* ntproc.c (win32_executable_type):
	* ntplay.c (play_sound_data_1):
	(play_sound_file):
	* editfns.c (get_home_directory):
	* event-msw.c (struct winsock_stream):
	(mswindows_dde_callback):
	* device-msw.c (msprinter_init_device):
	(msprinter_get_devmode_copy): Frobbed syntax frivolities.

	* toolbar-msw.c (mswindows_free_frame_toolbars): Paramters to
	mswindows_clear_toolbar were swapped!

	* objects-msw.c:(colormap_t):
	(fontmap_t):
	* emacs.c (struct standard_args): Fixed const jumble.

	* glyphs-widget.c (update_widget): Fixed comparison notation.

	* event-msw.c (mswindows_dde_callback): Removed extraneous ';'.

	* s\windowsnt.h (DOESNT_RETURN): Defined to support the MSVC
	__declspec(noreturn) syntax.

2000-02-19  Martin Buchholz  <martin@xemacs.org>

	* eldap.c (Fldap_open):
	(Fldap_search_basic):
	(Fldap_add):
	(Fldap_modify):
	Use new coding system conversion macros.

2000-01-06  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* console-tty.c (tty_init_console): Change MULE to FILE_CODING.

1999-11-27  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.h (Fldap_search) Renamed from Fldap_search_internal:
	(Fldap_add, Fldap_modify, Fldap_delete): New functions

	* eldap.c (Qadd, Qreplace): New constant symbols
	(Fldap_open): Use the LDAP_OPT_RESTART option to avoid
	interruptions by XEmacs signals
	Remove unnecessary calls to slow_down_interrupts and
	speed_up_interrupts
	(Fldap_search_basic): Renamed from Fldap_search_internal
	Added new optional parameter VERBOSE that triggers the
	display of progress messages
	Remove unnecessary calls to slow_down_interrupts and
	speed_up_interrupts
	LDAP result code analysis rewritten
	(Fldap_add, Fldap_modify, Fldap_delete): New functions
	(syms_of_eldap): Define the new symbols and functions


2000-02-17  Martin Buchholz  <martin@xemacs.org>

	* realpath.c: Determine PATH_MAX maximally portably.

	* insdel.c (bytecount_to_charcount): Optimize.
	The function used to be optimized for entirely ASCII sequences.
	Now it is optimized for successive characters from the same
	charset.  This also wins big for _mostly_ ASCII sequences.

	* fileio.c (Ffile_truename): convert return from realpath() using
	Qfile_name, not Qbinary.  Fixes obvious bug with non-ASCII symlinks.
	- Rewrite GCPROing slightly.

	* sysdep.c (sys_open): Do filename conversion, like all other
	sys_* functions.  Fixes bug:
	(let ((file-name-coding-system 'iso-8859-2))
	   (write-region x y latin2-name))
	==> writes filename using internal encoding.

2000-02-18  Martin Buchholz  <martin@xemacs.org>

	* buffer.c (DEFVAR_BUFFER_LOCAL_1): Turn on c_readonly. Always const.
	* console.c (DEFVAR_CONSOLE_LOCAL_1): Turn on c_readonly. Always const.
	* symeval.h (DEFVAR_SYMVAL_FWD): Turn on c_readonly. Always const.
	* eval.c (lrecord_subr): Remove this_one_is_unmarkable.
	* symbols.c (lrecord_symbol_value_forward): Remove this_one_is_unmarkable.
	* symbols.c (guts_of_unbound_marker): Turn on c_readonly.
	* lrecord.h (UNMARKABLE_LRECORD_HEADER_P): Delete.
	(CONST_IF_NOT_DEBUG): Delete.
	* alloc.c (this_one_is_unmarkable): Delete.
	(mark_object): Don't check for this_one_is_unmarkable. Use the
	c_readonly flag instead.
	* lisp.h (DEFUN): Define a Lisp_Subr as c_readonly.

2000-02-18  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* event-msw.c (mswindows_drain_windows_queue):
	(emacs_mswindows_handle_magic_event): Remove attempt to optimise
	away redundant repaint events.

2000-02-17  Andy Piper  <andy@xemacs.org>

	* redisplay.h: declare mark_redisplay_structs.

	* redisplay.c (redisplay_window):
	(redisplay_frame): don't check subwindows_state_changed.
	(mark_redisplay): mark gutters here.

	* glyphs.c: (instantiate_image_instantiator): always layout if we
	haven't done so already.
	(allocate_image_instance): don't mark as dirty.
	(update_subwindow): bind inhibit_quit.

	* gutter.c (mark_gutters): new function.

	* glyphs-x.c (x_update_widget): Always resize to get round a
	widget bug.

	* glyphs-msw.c (mswindows_tab_control_update): remove `;' that was
	breaking absolutely everything.

	* gutter.h: declare mark_gutters.

2000-02-16  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.29 is released.

2000-02-15  Olivier Galibert  <galibert@pobox.com>

	* fns.c (size_bit_vector): Fix computation of the size.

2000-02-15  Martin Buchholz  <martin@xemacs.org>

	* *.[ch]: Change CONST to const globally.
	find -name '*.[ch]' | \
	xargs global-replace \
	's/(^|(?<=[^A-Za-z0-9_]))CONST((?=[^A-Za-z0-9_])|$)/const/g'
	- Remove vestigial references to CONST_IS_LOSING

2000-02-13  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* event-msw.c (mswindows_drain_windows_queue): Remove hack to
	bailout early on quit. Enqueue WM_PAINT events as XEmacs magic
	events instead of dispatching them directly.
	(mswindows_handle_paint): New function to do repainting.
	(mswindows_wnd_proc):
	(emacs_mswindows_handle_magic_event): Call above function.

2000-02-13  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* objects-msw.c (mswindows_create_font_variant): Return the new
	font handle.
	(initialize_font_instance): Get font metrics from the underlined
	variant of the font to cope with the case where the underlined
	font has a bigger descent.

2000-02-08   Daiki Ueno  <ueno@ueda.info.waseda.ac.jp>

	* gui.c (gui_item_accelerator): Return the first underlined
	character in item name.

2000-02-11  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* lisp.h: Added Qprinter.

	* general.c (syms_of_general): Initialized it.

	* redisplay-msw.c (get_frame_dc): Conditionally start a new page.
	(get_frame_dc):
	(get_frame_compdc): Made inline.

	* console.h (struct console_methods): Added eject_page method.

	* frame.h: Added FRAME_DISPLAY_P and friends.
	Aligned backslahes in many macros in more readable fashion.
	Added page_number to struct frame, and an accessor macro
	for it.

	* defice.h: Added DEVICE_DISPLAY_P and friends.

	* device.c (Fdevice_printer_p): Used these.

	* frame.c (allocate_frame_core): Initialize page number.
	(Fprint_job_page_number):
	(Fprint_job_eject_page): Implemented.

	* frame-msw.c (msprinter_eject_page): Added method.
	(msprinter_start_page): Added.

	* window.c (Fwindow_truncated_p): Fixed docstring.
	(Fwindow_last_line_visible_height): Implemented.

2000-02-09  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* frame.c (change_frame_size_1): Undo 2000-02-03 change.

1999-12-20  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* syntax.c (scan_words): Always advance at least one character.

2000-02-13  Andy Piper  <andy@xemacs.org>

	* redisplay.c (add_glyph_rune): call get_glyph_cachel_index here
	to make sure the glyph is in the cachels.

	* glyphs.h (struct Lisp_Image_Instance): make layout_changed a
	global image instance flag.
	(IMAGE_INSTANCE_NEEDS_LAYOUT): new macro.
	(XIMAGE_INSTANCE_NEEDS_LAYOUT): ditto.

	* glyphs.c (allocate_image_instance): set dirty bits correctly.
	(Fset_image_instance_property): mark layout as changed.
	(invalidate_glyph_geometry_maybe): mark layout as changed.
	(glyph_width): use new NEEDS_LAYOUT macro.
	(glyph_ascent): ditto.
	(glyph_descent): ditto.
	(glyph_height): ditto.
	(image_instance_layout): mark layout as clean after laying out.
	(update_subwindow): don't mark layout as clean here.

	* glyphs-x.h (IMAGE_INSTANCE_X_WIDGET_ID): undo C++ changes, they
	should no longer be needed.

	* glyphs-x.c (x_update_widget): sanitize asserts.
	(x_finalize_image_instance): sanitize assignment to widgets.

	* glyphs-widget.c (widget_instantiate): don't need to clear the
	layout flag here.

2000-02-13  Martin Buchholz  <martin@xemacs.org>

	* sysdep.c (getcwd): Use standard prototype.
	* sysdep.h (getcwd): Use standard prototype.

	* fns.c (Fsubseq): Change parameters to more natural ANSI Lisp
	(sequence, start, end).
	Remove redundant type checking.
	(Fmapconcat): Remove useless GCPRO, a wrong-headed attempt (in
	view of `caller-protects') to avoid a crash where the real fix was
	found elsewhere.

2000-02-12  Martin Buchholz  <martin@xemacs.org>

	* glyphs-x.c (x_finalize_image_instance): Compile error fixes.

	* s/sol2.h: Remove feature macro initialization.

	* alloc.c (alloc_lcrecord): Add more type checking assertions.
	(vector_hash): New.  Code from internal_hash.
	* lrecord.h:
	Fix up allocation subsystem comments.

	* config.h.in: Add __EXTENSIONS__ for Solaris.

	* systime.h (EMACS_GETTIMEOFDAY): New.
	(EMACS_GET_TIME): Use EMACS_GETTIMEOFDAY.
	Remove Solaris-specific code.
	Use void* for the (ignored) second arg for gettimeofday().

	* elhash.c (hash_table_hash): Implement it, finally.
	* elhash.c:  Use hashcode_t.

	* linuxplay.c (sighandler): Fix prototypes to use SIGTYPE.
	* sunplay.c (sighandler): Fix prototype to use SIGTYPE.

	* lisp.h (STRETCHY_STRUCT_SIZEOF): Delete.
	* fns.c (size_bit_vector):
	* alloc.c (size_vector):
	(make_vector_internal):
	(make_bit_vector_internal):
	(sweep_bit_vectors_1):
	Replace calls to STRETCHY_STRUCT_SIZEOF with offsetof expression.

2000-02-10  Martin Buchholz  <martin@xemacs.org>

	* s/aix4.h: #define MAP_FAILED if sys/mman.h didn't.
	Include strings.h to avoid warnings for bzero and strcasecmp.

2000-02-10  Olivier Galibert  <galibert@pobox.com>

	* alloc.c: Move STRETCHY_STRUCT_SIZEOF from here...
	* lisp.h (STRETCHY_STRUCT_SIZEOF): ...to here

	* fns.c (size_bit_vector): New.  Declare bit vectors as a
	sequence.

2000-02-10  Olivier Galibert  <galibert@pobox.com>

	* symeval.h (struct symbol_value_magic): Remove "next" kludge and
	use a value field instead.
	(symbol_value_forward_forward): Use value field.
	(DEFVAR_SYMVAL_FWD): Use value field.
	(DEFVAR_SYMVAL_FWD_INT): Added.  Dumps the int with dumpopaque.
	(DEFVAR_INT): Use DEFVAR_SYMVAL_FWD_INT.
	(DEFVAR_CONST_INT): Ditto.
	(DEFVAR_BOOL): Ditto.
	(DEFVAR_CONST_BOOL): Ditto.
	(DEFVAR_INT_MAGIC): Ditto.
	(DEFVAR_BOOL_MAGIC): Ditto.

	* symbols.c (guts_of_unbound_marker): Use value field.
	* console.c (DEFVAR_CONSOLE_LOCAL_1): Ditto.
	* buffer.c (DEFVAR_BUFFER_LOCAL_1): Ditto.

	* lisp.h: Declare dumpopaque and noninteractive1.

	* alloc.c (dumpopaque): Added.
	(pdump_dump_opaquevec): Added.
	(pdump): Call pdump_dump_opaquevec to dump opaque data.
	(pdump_load): Reload opaque data.  Sync noninteractive1 with
	noninteractive.

2000-02-10  Andy Piper  <andy@xemacs.org>

	* glyphs.c (image_instance_layout): if the size changes, mark it
	as such.

	* redisplay-output.c (redisplay_output_layout): Update the
	subwindow here.
	(redisplay_output_subwindow): ditto.

	* glyphs.c (update_subwindow): make sure we reset flags for
	layouts as well as everything else.

	* glyphs-widget.c (layout_layout): don't need to set the instances
	dimensions here.

2000-02-09  Martin Buchholz  <martin@xemacs.org>

	* device-x.c (x_init_device): Wrap calls to dll_*  in HAVE_SHLIB,
	not HAVE_DLOPEN, which is a lower-level thing.

	* .cvsignore: Ignore gmon.out

2000-02-09  Hamish Macdonald <hamishm@lucent.com>

	* .cvsignore: Ignore portable dumper xemacs.dmp file

2000-02-09  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_output_layout): be more clever
	about when we output based on the changed flags.

	* glyphs.h (struct image_instantiator_methods): add update_method.
	(struct Lisp_Image_Instance): add changed flags. Declare new
	macros for manipulating them.

	* glyphs.c (allocate_image_instance): renamed glyph -> parent.
	(image_instance_parent_glyph): find an image_instance's parent
	glyph or image_instance.
	(image_instance_layout): mark the size as changed.
	(set_image_instance_dirty_p): new function. mark an image
	instance, plus all of its parents, as dirty.
	(Fset_image_instance_property): use it.
	(Fglyph_animated_timeout_handler): use it.
	(update_subwindow): call update_widget and device methods for
	update_subwindow. Mark all changed flags as clean.
	(Fresize_subwindow): mark size as changed.

	* glyphs-x.c (x_finalize_image_instance): try and detect gc
	failures.
	(x_update_subwindow): only resize subwindows here.
	(x_update_widget): new function. Update all changed properties of
	a widget.
	(x_resize_subwindow): deleted.
	(x_widget_set_property): deleted.
	(x_progress_gauge_set_property): deleted.
	(x_progress_gauge_update): new function. Implement recorded
	changes.
	(x_tab_control_update): ditto.
	(x_tab_control_set_property): deleted.
	(console_type_create_glyphs_x): declare new functions.
	(image_instantiator_format_create_glyphs_x): ditto.

	* glyphs-widget.c (widget_set_property): mark text changed.
	(update_widget): new function. Update properties of a widget.
	(widget_instantiate): for layouts make sure we set their
	children's parent correctly.
	(tab_control_set_property): new function. Record changes that will
	take place under redisplay's control.
	(progress_gauge_set_property): ditto.
	(image_instantiator_progress_guage): declare new functions.
	(image_instantiator_tab_control): ditto.

	* glyphs-msw.c (mswindows_update_subwindow): just do resizing here
	now.
	(mswindows_update_widget): new function. Update all properties on
	a widget that have changed.
	(mswindows_button_update): new function. Update a button's set
	state.
	(mswindows_tab_control_update): new function. Update the items in
	a tab.
	(mswindows_tab_control_set_property): deleted.
	(mswindows_progress_gauge_update): new function. Update the
	progress gauge's progress.
	(mswindows_widget_set_property): deleted. This is all done
	asynchronously now.
	(mswindows_progress_gauge_set_property): ditto.
	(console_type_create_glyphs_mswindows): declare new methods.
	(image_instantiator_format_create_glyphs_mswindows): ditto.

	* frame-msw.c (msprinter_init_frame_1): Remove unused variables.
	(msprinter_set_frame_properties): ditto.

	* console.h (struct console_methods): Add update_widget_method.

2000-02-09  Andy Piper  <andy@xemacs.org>

	* gui-msw.c (Fmswindows_shell_execute): Make
	mswindows-shell-execute industrial strength.

2000-02-08  Martin Buchholz  <martin@xemacs.org>

	* lrecord.h: Make macro argument `props' match member function `plist'.
	* fns.c (Fget):
	* fns.c (Fput):
	* fns.c (Fremprop):
	* fns.c (Fobject_plist):
	* alloc.c:
	* symbols.c:
	Object property list frobbing cleanup.
	- Allow any lisp object (compared with `eq'), not just symbols, as
	  keys in object plists.
	- Move symbol plist frobbing into symbols.c, where it belongs.
	- Move string plist frobbing into alloc.c, where it belongs.
	- Everything's an lrecord now, so no need to test for symbolp, etc.
	- Fix up doc strings to refer to PROPERTY, not PROPNAME.

	* extents.c: Reorder code to remove declarations.

	* frame.h (store_in_alist): Remove useless declaration.

2000-02-07  Martin Buchholz  <martin@xemacs.org>

	* event-Xt.c (x_has_keysym): Use XConvertCase only if available.
	* config.h.in: Add HAVE_XCONVERTCASE.

2000-02-07  Andy Piper  <andy@xemacs.org>

	* glyphs.c (image_instance_layout): undo 2000-01-29 change since
	it breaks many things.

2000-02-07  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* src/syntax.h (SYNTAX_START_P): Check whether the two chars
	actually can start a common comment type.
	* src/syntax.h (SYNTAX_END_P): ditto for end.

2000-02-07  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.28 is released.

2000-02-06  Martin Buchholz  <martin@xemacs.org>

	* event-Xt.c (x_keysym_to_character): New.
	(maybe_define_x_key_as_self_inserting_character): New.
	(x_has_keysym): New.
	Auto-define all keys on the keyboard as self-insert-key.

2000-02-02  Martin Buchholz  <martin@xemacs.org>

	* menubar.c (vars_of_menubar): A small code simplification.

	* minibuf.c (echo_area_append): Workaround egcs-20000131 c++ compiler bug

	* ExternalShell.c:
	* ExternalClient.c:
	* EmacsShell-sub.c:
	* EmacsManager.c:
	* EmacsFrame.c:
	Use consistent style for specifying X resources.

	* symbols.c (Fset): Further implement SYMVAL_LISP_MAGIC.
	This makes (dontusethis-set-symbol-value-handler) actually usable.

	* lrecord.h (lrecord_decription_type):
	* alloc.c (pdump_register_sub):
	(pdump_dump_data):
	(pdump_reloc_one):
	Add XD_LISP_OBJECT_ARRAY to describe multiple Lisp_Objects.
	Comply with XEmacs coding style.
	All lrecord descriptions updated to use XD_LISP_OBJECT with 2
	args, and XD_LISP_OBJECT_ARRAY with 3 args.

	* keymap.c (Faccessible_keymaps):
	Make (accessible-keymaps map "\C-h") do the Right Thing.
	Make (accessible-keymaps map []) do the Right Thing.
	Make (accessible-keymaps map "") do the Right Thing.
	(check_keymap_definition_loop): New function.
	(keymap_store_internal): Keep luser from shooting self in foot,
	  via (define-key ctl-x-4-map "p" global-map).
	Remove fullness slot from struct Lisp_Keymap, since hash tables
	are now reliable.
	(print_keymap): Remove 'Yuck' factor by simply printing "size %d".

2000-01-30  Martin Buchholz  <martin@xemacs.org>

	* redisplay.c (init_redisplay): Fix small memory leak.
	* elhash.h:
	* elhash.c (pdump_reorganize_hash_table):
	Rename from reorganize_hash_table. Change prototype.
	Reuse the original memory for hentries.  Save 100k.
	* alloc.c (PDUMP_READ): new macro.
	* alloc.c (pdump_load): Replace LISP_TO_VOID with higher-level macros.
	* alloc.c: No need to #ifndef before #undef.

	* print.c: Allow debug_print() to print readably by modifying
	debug_print_readably.  Use consistent variable names.

	* .dbxrc: Try to get things to work even if stopped in a function
	without source available by explicitly specifying source files.
2000-02-03  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* unexnt.c (_start): Removed bogus code which caused loading heap
	from differrent executable file.
	Removed bogus assignment to _fmode, which caused inconsistencies.

2000-02-03  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* s\windowsnt.h: Removed lots of #if 0 blocks of Emacs heritage.
	Have spawnve encapsulation regard DONT_ENCAPSULATE.
	Do not preliminary `#define signal sigset'.

	* systime.h: Do not prototype environ on windows nt and cygwin,
	this conflicts with system header.

	* syssignal.h: Use correct define for WINDOWSNT

	* sysdep.h: Do not prototype environ on windows nt, this conflicts
	with system header.

	* sysdep.c (near start of file): Fixed commentary and rearranged
	ifdefs in readable order.
	(NEED_STARTS): Do not force NEED_STARTS when PDUMPing.
	(start_of_text):
	(end_of_text):
	(end_of_data): Do not compile in if using PDUMP.

	* symsinit.h: Prototyped vars_of_nt().

	* ntproc.c (windows9x_p): Added, instead of os_subtype.
	(find_child_console): Use it.
	(sys_kill): Use it.

	* ntheap.h: Do not extern os_subtype.

	* ntheap.c (cache_system_info): Do not cache unneeded:
	nt_major_version, nt_minor_version and os_subtype.
	(recreate_heap): Do not compile in when PDUMPing.

	* nt.c (geteuid and friends): Use the new varibale
	nt_fake_unix_uid, instead of hashing fake uid out of NT RID.
	(init_user_info): Removed the above mentioned hackery.
	(fstat, stat): Do not compile in if using MSVC 5.0 and above -
	stat has been fixed in the C runtime.
	(vars_of_nt): Added, defined the nt_fake_unix_uid variable there.

	* file-coding.c (struct file_coding_dump): Do not define
	ucs_to_mule_table in the struct if not MULE.
	(struct struct lrecord_description fcd_description_1): Do not dump
	the above.

	* emacs.c (main_1): Call vars_of_nt().
	(right before Fdump_emacs_data): Don't need lastfile if using both
	portabe dumper and system malloc.

	* alloc.c (Fmemory_limit): Conditionalized out.
	(pdump): Use OPEN_BINARY for the portable dump file.
	(pdump_load): Ditto.

2000-02-02  Mike Alexander  <mta@arbortext.com>

	* nt.c (convert_time): Set tm_isdst before calling mktime and
	avoid calling it at all if the compiler supports 64 bit integers.
	Also initialize utc_base_ft before using it.

2000-02-03   Daiki Ueno  <ueno@ueda.info.waseda.ac.jp>

	* frame.c (change_frame_size_1): Take f->internal_border_width
	into consideration when calculating the width of the frame.

2000-02-01  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* window.c (frame_min_height):
	(frame_size_valid_p):
	(frame_pixsize_valid_p): Added.
	(check_frame_size): Generalized.

	* window.h: Prototyped the above.

	* lisp.h:
	* general.c: Added Qbottom_margin, Qduplex, Qlandscape,
	Qleft_margin, Qorientation, Qportrait, Qright_margin, Qtop_margin.
	Deleted Vwin32_* and Vbinary_process_* unused variables.

	* device-msw.c (msprinter_init_device): Do not get printer font
	list; Added DEVMODE functions.

	* frame-msw.c: Added lots of printer code.

	* faces.c: Moved 'left-margin and 'right-margin defsymbols to
	general.c.

	* console-msw.h: Added more msprinter device private slots.

2000-02-01  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* event-msw.c (key_needs_default_processing_p): Added.
	(mswindows_wnd_proc, WM_KEYUP, KEYDOWN): Call it.

2000-01-29  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* glyphs.c (image_instance_layout): Mark image instance as clean
	after layout.
	(glyph_dirty_p): Removed redundant function.
	(invalidate_glyph_geometry_maybe): Added.
	(update_glyph_cachel_data): Call it.

	* glyphs.h: Prototyped it.

	* redisplay.c (add_glyph_rune): Call it.
	(redisplay_window): Reset glyphs cachels when frame faces have
	changed, thus forcing recomputation of built-in border glyphs.

2000-01-30  Martin Buchholz  <martin@xemacs.org>

	* Makefile.in.in: Make portable dumper and purify play well together.
	Add imperfect, but better than nothing, support for pdump.
	Remove xemacs.dmp when temacs is re-generated.
	Don't ignore errors when dumping xemacs.

	* symbols.c (maybe_call_magic_handler): Remove one magic number.

2000-01-28  Andy Piper  <andy@xemacs.org>

	* frame.c (allocate_frame_core): Use new Fset_window_buffer signature.
	(setup_normal_frame): ditto.
	(setup_frame_without_minibuffer): ditto.
	(setup_minibuffer_frame): ditto.
	(delete_frame_internal): ditto.
	(Fmake_frame_invisible): ditto.
	(Ficonify_frame): ditto.

	* window.h: change Fset_window_buffer signature.

	* window.c (Fsplit_window): Use new Fset_window_buffer signature.
	(Fset_window_buffer): allow recording of buffer if the window is
	the selected window.
	(window_loop): Use new Fset_window signature.

2000-01-23  Daniel Pittman  <daniel@danann.net>

	* config.h.in: Added template for `HAVE_ATHENA_3D'

2000-01-29  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_resize_subwindow): Try and catch bogus resizes.

	* gutter.c (output_gutter): Don't output if the window isn't live.

2000-01-28  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* glyphs-msw.c (mswindows_unmap_subwindow): Fix of corrupted patch
	of 01/12/00: Moved SetFocus back here where it belongs.

2000-01-23  Andy Piper  <andy@xemacs.org>

	* s/cygwin32.h: declare printer things.

2000-01-26  Andy Piper  <andy@xemacs.org>

	* select.c (Fown_selection_internal): GCPRO bug fix from Mike
	Alexander.

2000-01-24  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (mswindows_locate_pixmap_file): Expand filename.
	(mswindows_button_instantiate): Make sure glyph is a pixmap.

	* glyphs-widget.c (widget_instantiate): Avoid shadows.

	* frame-msw.c (msprinter_init_frame_3): Nuke warning.

	* glyphs-msw.c: (mswindows_string_to_color): remove declaration.

	* redisplay-msw.c (mswindows_output_cursor): Avoid shadows.
	(mswindows_output_display_block): Avoid local shadows.

	* event-msw.c (mswindows_enqueue_magic_event): Avoid shadows.
	(mswindows_enqueue_mouse_button_event): ditto.
	(mswindows_handle_gui_wm_command): remove declaration.

	* console-msw.c (mswindows_canonicalize_console_connection): Avoid
	warnings.

	* console-msw.h: Avoid shadows.
	(mswindows_get_toolbar_button_text):
	(emacs_mswindows_create_stream_pair):
	(emacs_mswindows_delete_stream_pair):
	(mswindows_handle_toolbar_wm_command): declare.

	* device-msw.c (build_syscolor_string): Avoid shadows.

2000-01-23  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (widget_instantiate): reverse the items for
	layouts so that children are in the expected order.

2000-01-28  Martin Buchholz  <martin@xemacs.org>

	* ralloc.c: safe_bcopy ==> memmove
	* gmalloc.c: Remove MEMMOVE_MISSING conditional code.
	* s/msdos.h: Remove BCOPY macros.
	* insdel.c (gap_right): Remove BCOPY conditional code.
	* insdel.c (gap_left): Remove BCOPY conditional code.
	XEmacs demands a working ANSI C compiler - hence memmove.

	* regex.c (regex_compile): Remove accidental use of trigraphs.

2000-01-27  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* event-msw.c (mswindows_enqueue_misc_user_event): Initialize
	event timestamp.

2000-01-26  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* event-msw.c (mswindows_drain_windows_queue): Added the
	parameter.
	(mswindows_need_event): Commented the call to
	mswindows_drain_windows_queue().
	(emacs_mswindows_quit_p): Lookup the windows for keyboard messages
	only.

	* console-msw.h: Moved a few function prototypes here from
	event-msw.c.

	* gui-msw.c (mswindows_handle_gui_wm_command): Changed the ID
	parameter from unsigned short to unsigned long.
	(Fmswindows_shell_execute): Added return value.

2000-01-27  URA Hiroshi <ura@hiru.aoba.yokohama.jp>

	* sysdep.c (init_system_name):
	  process-unix.c (unix_canonicalized_host_name):
	Don't call freeaddrinfo() if getaddrinfo() fails.

	* process-unix.c (unix_open_unix_network_stream):
	Moved the code to get a port # into address loop.

2000-01-27  Martin Buchholz  <martin@xemacs.org>

	* buffer.c (reinit_vars_of_buffer):
	The right place to initialize conversion_in_dynarr and
	conversion_out_dynarr.

	* alloc.c (pdump): Use the real open() till sys_open() is functional.

	* process-unix.c (unix_canonicalize_host_name): Muleize.
	(unix_open_network_stream): Muleize.

	* buffer.h: Fix up prototypes for ralloc.c functions.

2000-01-27  URA Hiroshi <ura@hiru.aoba.yokohama.jp>
	* config.h.in: added HAVE_GETADDRINFO and HAVE_GETNAMEINFO
	* sysdep.c: In init_system_name(), add code to use getaddrinfo()
		instead of gethostbyname()
	* process-unix.c: In unix_canonicalize_host_name() and
		unix_open_network_stream(), add code to use getaddrinfo()
		instead of gethostbyname().

2000-01-27  Daniel Pittman <daniel@danann.net>

	* device-x.c (x_init_device): Warn at run-time if using Athena 3d
	libs when built with flat Athena.

2000-01-27  Martin Buchholz  <martin@xemacs.org>

	* ralloc.c: Replace SIZE (conflicts with Windows headers) with size_t.
	Use coding standards for function prototypes.

2000-01-25  Martin Buchholz  <martin@xemacs.org>

	* dialog-msw.c (push_lisp_string_as_unicode):
	* doc.c (unparesseuxify_doc_string):
	* dired.c (Fuser_name_completion_1):
	* dired.c (Fuser_name_all_completions):
	* dired.c (free_user_cache):
	* dired.c (user_name_completion):
	* console-x.c (get_display_arg_connection):
	* minibuf.c (clear_echo_area_internal):
	* minibuf.c (echo_area_append):
	* eldap.c (Fldap_open):
	* eldap.c (Fldap_search_internal):
	* frame-x.c (x_set_frame_text_value):
	* frame-x.c (x_set_frame_properties):
	* frame-x.c (x_create_widgets):
	* redisplay-tty.c (term_get_fkeys_1):
	* 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_list_fonts):
	* objects-x.c (x_find_charset_font):
	* tooltalk.c (Fadd_tooltalk_message_arg):
	* tooltalk.c (Fadd_tooltalk_pattern_attribute):
	* tooltalk.c (Fadd_tooltalk_pattern_arg):
	* process-unix.c (unix_create_process):
	* ntproc.c (sys_spawnve):
	* sound.c (Fplay_sound_file):
	* sound.c (Fplay_sound):
	* buffer.c (init_initial_directory):
	* buffer.c (init_buffer):
	* editfns.c (init_editfns):
	* editfns.c (Ftemp_directory):
	* editfns.c (Fuser_full_name):
	* editfns.c (uncache_home_directory):
	* editfns.c (get_home_directory):
	* editfns.c (Fuser_home_directory):
	* editfns.c (Fformat_time_string):
	* editfns.c (Fcurrent_time_string):
	* gui-x.c (button_item_to_widget_value):
	* database.c (Fopen_database):
	* event-Xt.c (x_to_emacs_keysym):
	* event-Xt.c (x_event_to_emacs_event):
	* event-Xt.c (describe_event_window):
	* event-msw.c (mswindows_wnd_proc):
	* glyphs-eimage.c (jpeg_instantiate):
	* glyphs-eimage.c (gif_instantiate):
	* glyphs-eimage.c (png_instantiate):
	* glyphs-eimage.c (tiff_instantiate):
	* glyphs-x.c (xbm_instantiate_1):
	* glyphs-x.c (x_xbm_instantiate):
	* glyphs-x.c (x_xface_instantiate):
	* glyphs-x.c (autodetect_instantiate):
	* glyphs-x.c (cursor_font_instantiate):
	* glyphs-x.c (x_widget_instantiate):
	* glyphs-x.c (x_widget_set_property):
	* glyphs-x.c (x_widget_property):
	* glyphs-x.c (BUILD_GLYPH_INST):
	* print.c (write_string_to_stdio_stream):
	* print.c (output_string):
	* print.c (Falternate_debugging_output):
	* print.c (Fexternal_debugging_output):
	* glyphs-msw.c (extract_xpm_color_names):
	* glyphs-msw.c (mswindows_xpm_instantiate):
	* glyphs-msw.c (bmp_instantiate):
	* glyphs-msw.c (resource_name_to_resource):
	* 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_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_property):
	* glyphs-msw.c (mswindows_combo_box_property):
	* glyphs-msw.c (mswindows_widget_set_property):
	* console.c (stuff_buffered_input):
	* objects-msw.c (mswindows_initialize_color_instance):
	* objects-msw.c (mswindows_valid_color_name_p):
	* objects-msw.c (mswindows_list_fonts):
	* objects-msw.c (mswindows_font_instance_truename):
	* bytecode.c (optimize_compiled_function):
	* select-x.c (symbol_to_x_atom):
	* select-x.c (x_atom_to_symbol):
	* select-x.c (hack_motif_clipboard_selection):
	* select-x.c (selection_data_to_lisp_data):
	* select-x.c (lisp_data_to_selection_data):
	* select-x.c (Fx_get_cutbuffer_internal):
	* select-x.c (Fx_store_cutbuffer_internal):
	* buffer.h (TO_EXTERNAL_FORMAT): New function.
	* buffer.h (TO_INTERNAL_FORMAT): New function.
	* emacs.c (make_arg_list_1):
	* emacs.c (make_argc_argv):
	* emacs.c (main_1):
	* emacs.c (Fdump_emacs):
	* emacs.c (split_string_by_emchar_1):
	* file-coding.h:
	* lisp.h:
	* lstream.h:
	* symsinit.h:
	* device-x.c (x_init_device):
	* device-x.c (Fx_valid_keysym_name_p):
	* device-x.c (Fx_get_font_path):
	* device-x.c (Fx_set_font_path):
	* glyphs.c (bitmap_to_lisp_data):
	* glyphs.c (pixmap_to_lisp_data):
	* alloc.c (make_ext_string): Use coding system arguments.  Update
	all callers.
	* alloc.c (build_string):
	* callproc.c (child_setup):
	* callproc.c (init_callproc):
	* fileio.c (lisp_strerror):
	* fileio.c (directory_file_name):
	* fileio.c (Fexpand_file_name):
	* fileio.c (Ffile_truename):
	* fileio.c (Fsysnetunam):
	* fileio.c (Fdo_auto_save):
	* sysdep.c (sys_readdir):
	* tests.c: New file.  Allow adding C tests.
	Replace GET_* macros with a more comprehensible and flexible
	interface, TO_INTERNAL_FORMAT() and TO_EXTERNAL_FORMAT().
	Modify all calls.
	Any coding system can be used to do format conversion.
	Eliminate enum external_data_format.
	Eliminate convert_to_external_format.
	Eliminate convert_to_internal_format.
	Make sure file-name, keyboard, terminal, and ctext are always
	defined as coding systems or aliases.  Make
	file-name-coding-system, terminal-coding-system, and
	keyboard-coding-system magical variables that are equivalent to
	defining the corresponding coding system aliases.

	* file-coding.c (Fcoding_system_canonical_name_p): New function.
	* file-coding.c (Fcoding_system_alias_p): New function.
	* file-coding.c (Fcoding_system_aliasee): New function.
	* file-coding.c (append_suffix_to_symbol): New function.
	* file-coding.c (dangling_coding_system_alias_p): New function.
	* file-coding.c (Ffind_coding_system):
	* file-coding.c (Fcopy_coding_system):
	* file-coding.c (encode_coding_no_conversion):
	* file-coding.c (syms_of_file_coding):
	* file-coding.c (vars_of_file_coding):
	Rewrite coding system alias code.
	Allow nested aliases, like symbolic links.
	Allow redefinition of coding system aliases.
	Prevent existence of dangling coding system aliases.

	* dired.c (Fuser_name_completion_1):
	* dired.c (Fuser_name_all_completions):
	A crash would happen if user did QUIT in the middle of building
	user_name_cache.  Remove redundant code in mainline and unwind_protect.

	* lisp.h:
	* dynarr.c (Dynarr_min_size): Make static.  Increase value to 8.

	* lstream.c (make_fixed_buffer_input_stream): Take a void *, not
	an unsigned char *.  Update all callers.

2000-01-26  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* callproc.c (Fcall_process_internal): Ignore Vbinary-process_output.

2000-01-25  Martin Buchholz  <martin@xemacs.org>

	* elhash.c (hentry_description): Use more portable definition.
	(resize_hash_table): Initialize new hentries using
	xnew_array_and_zero, thereby simplifying the code.

	* mule-charset.c (make_charset): Make sure entire object is
	initialized, to avoid Purify warnings.

	* alloc.c (resize_string): Fix unlikely crash with big strings.

2000-01-24  Martin Buchholz  <martin@xemacs.org>

	* realpath.c (xrealpath):
	Don't call getwd().

2000-01-25  Martin Buchholz  <martin@xemacs.org>

	* lread.c (read_bit_vector): Fix memory leak reading literal bit vectors.

1999-12-28  Max Matveev  <max@melbourne.sgi.com>

	* unexelfsgi.c (unexec): Change the way we decide which segment
	should be extended.

	Assumption that .bss section should be outside the PT_LOADable
	segment. On IRIX with version 6.2 and above, .bss (or .sbss, if
	it's present) is inside the 'data' segment. This would fail the
	test which was used to find a segment to grow and cover new
	heap. Instead of this assumption, I created another one - on IRIX
	the segment to grow should start below .bss and it's address
	should extent above the end of .bss. Once this segment is
	identified, it's grown to accommodate the new heap and new
	zero-length .bss section is added at the end of .data2.

2000-01-25  Martin Buchholz  <martin@xemacs.org>

	* eval.c (Feval): Wrong number of arguments should use original
	function, not the indirect_function version of it.

2000-01-24  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* glyphs-x.c (x_button_instantiate): Don't add image if
	it is not a pixmap.
	(x_locate_pixmap_file): Call Fexpand_file_name when file name
	is relative.

2000-01-21  Yoshiki Hayashi  <yoshiki@xemacs.org>

	* symeval.h (DEFVAR_LISP_MAGIC): Remove semicolon after macro
	declaration.
	(DEFVAR_INT_MAGIC): Ditto.
	(DEFVAR_BOOL_MAGIC): Ditto.
	* glyphs.h: Reindent backslash.

2000-01-24  Martin Buchholz  <martin@xemacs.org>

	* glyphs-widget.c (layout_query_geometry):
	(layout_layout): Use correct types for gheight, gwidth.

2000-01-24  Martin Buchholz  <martin@xemacs.org>

	* EmacsManager.c (QueryGeometry): Purified.

2000-01-23  Martin Buchholz  <martin@xemacs.org>

	* alloc.c (make_float): Make sure entire object is initialized, to
	avoid Purify warnings.
	(pdump_register_sub): Remove useless assignment.
	(pdump): Use xmalloc, not malloc.
	(pdump_load): Use xmalloc, not malloc.

2000-01-23  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* callproc.c:
	* dired-msw.c:
	* fileio.c:
	* process-nt.c:
	* redisplay-msw.c:
	* sysdep.c: Removed redundant #include <windows.h>

2000-01-22  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* frame.c (delete_frame_internal): Do not delete device when its
	implementation so declares.
	(delete_frame_internal): Set device selected frame to nil when
	last frame goes away.

	* device-msw.c (msprinter_device_system_metrics): Implemented.
	(mswindows_device_system_metrics): Added 'device-dpi property.

	* device.c: (Fdevice_printer_p): Added.
	Added 'offset-workspace device metric.

	* console.h (device_metrics): Declared DM_offset_workspace.

2000-01-23  Martin Buchholz  <martin@xemacs.org>

	* fileio.c (Ffile_truename): Remove pointless and confusing
	initialization of elen.

	* glyphs-widget.c: Compiler warning fixes.

2000-01-23  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* process.h (PROCESS_LIVE_P): Modify to take a Lisp_Process
	instead of a Lisp_Object as argument to make it consistent with
	the other LIVE_P macros.
	(CHECK_LIVE_PROCESS): New macro.

	* process.c: Declare Qprocess_live_p.
	(Fprocess_live_p): New function.
	(create_process): Use PROCESS_LIVE_P.
	(read_process_output): Ditto.
	(set_process_filter): Ditto.
	(Fdelete_process): Ditto.
	(kill_buffer_processes): Ditto
	(process_send_signal): Use CHECK_LIVE_PROCESS.
	(Fprocess_input_coding_system): Check whether process is still
	alive (fix PR#1061).
	(Fprocess_output_coding_system): Ditto.
	(Fprocess_coding_system): Ditto.
	(Fset_process_input_coding_system): Ditto.
	(Fset_process_output_coding_system): Ditto.

2000-01-23  Andy Piper  <andy@xemacs.org>

	* glyphs.h (struct Lisp_Image_Instance): change format by unifying
	layout and widget.

	* glyphs.c (mark_image_instance): take into account changed
	image_instance format.
	(image_instance_equal): ditto.
	(image_instance_hash): ditto.

	* glyphs-widget.c (widget_instantiate): Incorporate layout
	instantiation here. Delay layout of the layout until later.
	(layout_instantiate): deleted.
	(layout_query_geometry): new function. get the geometry of a
	layout.
	(layout_layout): layout a layout dynamically.
	(image_instantiator_widget): New function - splitting up
	image_instantiator_format_create_glyphs_widget for netwinder
	compilation.
	(image_instantiator_buttons):
	(image_instantiator_edit_fields):
	(image_instantiator_combo_box):
	(image_instantiator_scrollbar):
	(image_instantiator_progress_guage):
	(image_instantiator_tree_view):
	(image_instantiator_tab_control):
	(image_instantiator_labels):
	(image_instantiator_layout): ditto.
	(image_instantiator_format_create_glyphs_widget): Call preceding
	functions.

2000-01-22  Martin Buchholz  <martin@xemacs.org>

	* process.c (Fset_process_coding_system):
	* device-x.c (Fx_keysym_hash_table):
	Docstring fixes.

	* lstream.c (Lstream_write): Return documented value, not 0.

	* fileio.c (directory_file_name):
	(Fsubstitute_in_file_name):
	(Fsubstitute_insert_file_contents_internal):
	(Fwrite_region_internal):
	* emacs.c:
	* sysdep.c:
	* getloadavg.c:
	* systty.h:
	Remove vestigial APOLLO-conditional code.

2000-01-21  Martin Buchholz  <martin@xemacs.org>

	* getpagesize.h: Add guard macros.
	* libsst.h: Add guard macros.
	* libst.h: Add guard macros.
	* line-number.h: Add guard macros.
	* ndir.h: Add guard macros.
	* sysfloat.h: Add guard macros.
	* sysfile.h: Add guard macros.
	* sysproc.h: Add guard macros.
	* syswait.h: Add guard macros.
	* xintrinsic.h: Add guard macros.
	* xintrinsicp.h: Add guard macros.
	* xmmanager.h: Add guard macros.
	* xmmanagerp.h: Add guard macros.
	* xmprimitive.h: Add guard macros.
	* xmu.h: Add guard macros.
	* gpmevent.h: Add copyright statement. Add guard macros.
	* miscplay.h: Add guard macros.
	* *.h: Use consistent C-standards-approved guard macro names.

	* opaque.c (make_opaque): Switch parameter order.
	* opaque.h (make_opaque): Switch parameter order.
	Update all callers.
	* buffer.h (MAKE_MIRROR_TRT_TABLE): Use symbolic constant OPAQUE_CLEAR.

	* config.h.in (type_checking_assert): Added.
	(bufpos_checking_assert): Added.

2000-01-21  Martin Buchholz  <martin@xemacs.org>

	* alloc.c: Harmless pdump changes.
	- Use countof().
	- spell alignment correctly.
	* sysdep.c: Use countof()

2000-01-20  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* console.c (create_console): Use CONMETH_OR_GIVEN when calling
	initially_selected_for_input() console method, default to 0.
	(semi_canonicalize_console_connection): Try to delegate to
	canonicalize_console_connection if no such console method.
	(canonicalize_console_connection): Vice versa.
	(print_console): Do not print nil connection.

	* console.h (XDEVIMPF_IS_A_PRINTER): Added.
	(XDEVIMPF_NO_AUTO_REDISPLAY): Added.
	(XDEVIMPF_FRAMELESS_OK): Added.
	(CONSOLE_INHERITS_METHOD): Added.

	* console-msw.c (mswindows_canonicalize_console_connection):
	Added.
	(mswindows_canonicalize_device_connection): Added.

	* console-msw.h (struct msprinter_device): Added this struct and
	accessor macros.
	(mswindows_device): Made fontlist a lisp object.

	* device.c (semi_canonicalize_device_connection):  Try to delegate
	to canonicalize_device_connection if no such console method.
	(canonicalize_device_connection): Vice versa.
	(print_device): Do not print nil connection.

	* device-msw.c (mswindows_init_device): Call InitCommonControls
	when have widgets.
	(mswindows_delete_device): Removed fontlist deallocation.
	(mswindows_mark_device): Added.

	* events.c (event_equal): Added abort() at unreached code.
	(event_hash): Ditto.

	* faces.c (complex_vars_of_faces): Added Qmsprinter to the list of
	fallback tags of Windows devices.

	* general.c (syms_of_general): Initialized Qmsprinter.

	* gutter.c (complex_vars_of_gutters): Added Qmsprinter to the list
	of fallback tags of Windows devices.

	* lisp.h: Declared Qmsprinter.

	* objects-msw.c (font_enum_callback_2): Rewrote to build lisp list
	of strings.
	(mswindows_list_fonts): Ditto.
	(mswindows_enumerate_fonts): Removed dependency on XDEVICE, so
	that it can be used by both mswindows and msprinter devices.
	(initialize_font_instance): Added.
	(mswindows_initialize_font_instance): Use it.
	(msprinter_initialize_font_instance): Added.

	* redisplay.c (redisplay_device): Added the parameter AUTOMATIC
	and implementation flags check.
	(redisplay_without_hooks): Changed the call to the above.
	(Fredraw_device): Ditto.
	(Fredisplay_device): Ditto.

	* redisplay-msw.c (get_frame_dc): Implemented.
	(get_frame_compdc): Implemented.
	(many functions): Use the two functions above to get device
	contexts, ether for a window or a printer.

2000-01-21  Olivier Galibert  <galibert@pobox.com>

	* symbols.c (reinit_symbols_once_early): Put Qzero/Qnull_pointer
	initialization here.
	(init_symbols_once_early): Call it.
	* emacs.c (main_1): Call it.
	* symsinit.h: Declare it.

2000-01-19  Olivier Galibert  <galibert@pobox.com>

	* alloc.c: Use a lrecord_header * in the backtrace instead of a
	Lisp_Object.
	(pdump_backtrace): Ditto.
	(pdump_register_object): Ditto.  Cleanup use of the pointers.
	(pdump_get_entry): Abort if trying to register a null pointer.
	(pdump_dump_data): Cleanup types when relocating.
	(pdump_dump_staticvec): Cleanup types w.r.t the reloc table.
	(pdump_dump_rtables): Remove bad casts.
	(pdump_load): Cleanup relocation w.r.t union type.  Use a
	Lisp_Object instead of a EMACS_INT for the hashtable
	reorganization.

2000-01-20  Martin Buchholz  <martin@xemacs.org>

	* emacs.c (main_1): Rearrange morass of #ifdef's for correctness.

	* callproc.c (call_process_cleanup): Isolate WINDOWSNT code for clarity.

	* EmacsManager.c (GeometryManager): Avoid use of CPP for clarity.

	* *.[ch]: global-replace 's/_of_xselect/_of_select_x/g' *.[ch]

2000-01-17  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* faces.h (FACE_STRIKETHRU_P): Added.

	* glyphs-msw.c (mswindows_widget_hfont): Implemented, to take care
	of font variants.

	* redisplay-msw.c (mswindows_apply_face_effects): Deleted.
	(mswindows_set_dc_font): New function, aware of font variants,
	separated from mswindows_update_dc.

	* objects-msw.h (struct mswindows_font_instance_data): Added
	definition.

	* objects-msw.c (mswindows_finalize_font_instance): Delete all
	cached fonts and the data structure.
	(mswindows_initialize_font_instance): Added creation of font data
	structure.
	(mswindows_print_font_instance): Print at least something.
	(mswindows_create_font_variant): Implemented.
	(mswindows_get_hfont): Implemented.

2000-01-13  Fabrice Popineau  <Fabrice.Popineau@supelec.fr>

	* dired-msw.c: permute "sysdir.h" with "sysfile.h" because of
	prototyping problem with msvc.

	* emacs.c (main_1): added syms_of_gui_mswindows() call

	* gui-msw.c: added "mswindows-shell-execute" lisp subr and
	syms_of_gui_mswindows() function

	* symsinit.h: added the prototype for syms_of_gui_mswindows()

2000-01-18  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.27 is released.

2000-01-18  Martin Buchholz  <martin@xemacs.org>

	* glyphs-eimage.c (struct tiff_error_struct):
	(tiff_error_func):
	(tiff_warning_func):
	#if HAVE_VSNPRINTF ==> #ifdef HAVE_VSNPRINTF

	* unexmips.c:
	* unexhp9k3.c:
	* unexfreebsd.c:
	* unexec.c: Remove vestigial Lucid C code.
	* unexalpha.c:
	* unexaix.c:
	* termcap.c:
	* libsst.c: Ansify.
	Remove declarations of errno and strerror().

	* eval.c (Fbacktrace): Small Purify-cation.  Fix docstring.

	* .dbxrc (run-temacs): Use the horrible ${1+"$@"} instead of "$@".

2000-01-16  Martin Buchholz  <martin@xemacs.org>

	* mule-charset.c (Fchar_octet): Resurrect from earlier in 1999.
	Optimize.

2000-01-14  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* md5.c:
	* file-coding.c:
	* file-coding.h:
	Change enum eol_type to eol_type_t.

2000-01-17  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* gui.c (get_gui_callback): Check cons before accessing car.

2000-01-17  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* specifier.h (XSPECIFIER_TYPE): Add error checking version.
	(XSETSPECIFIER_TYPE): Ditto.

2000-01-17  Didier Verna  <didier@xemacs.org>

	* redisplay.c (generate_fstring_runes): compute string size in
	characters, not bytes.

2000-01-09  Hrvoje Niksic  <hniksic@iskon.hr>

	* window.c (Fwindow_minibuffer_p): Make WINDOW optional.

2000-01-14  Hrvoje Niksic  <hniksic@iskon.hr>

	* print.c (print_error_message): Call print_prepare().

2000-01-14  Martin Buchholz  <martin@xemacs.org>

	* .dbxrc: Renamed from dbxrc.

	* events.c (event_to_character):
	Use `assert (foo)' instead of `if (!foo) abort()'

	* .gdbinit (xtype): Add documentation.
	* .gdbinit (check-temacs): New function.
	* .gdbinit (check-xemacs): New function.
	* dbxrc (check-xemacs): New function.
	* dbxrc (check-xemacs): New function.

2000-01-14  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c (widget_query_geometry): Make sure that we
	calculate default dimensions correctly.

2000-01-13  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* symsinit.h: Added prototype for reinit_vars_of_frame_mswindows.

	* event-msw.c (vars_of_event_mswindows): Fixed a mistyped
	pdump_wire'd variable.

	* emacs.c: (main_1): Conditionalized calls to
	reinit_vars_of_scrollbar_x and reinit_vars_of_module.

2000-01-13  Martin Buchholz  <martin@xemacs.org>

	* window.c (Fset_window_configuration):
	* sysdep.c (_start):
	* input-method-motif.c (res):
	* event-Xt.c (Xt_process_to_emacs_event):
	Simple compiler warning fixes.

	* bytecode.c (funcall_compiled_function): Use the original
	function symbol on the backtrace list in preference to the
	compiled_function object in error messages.

2000-01-13  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (update_widget_face): Make sure we update the widget
	background as well as foreground.

2000-01-13  Andy Piper  <andy@xemacs.org>

	* glyphs.h (struct Lisp_Image_Instance): Move justify and orient
	fields to subwindow.
	(IMAGE_INSTANCE_SUBWINDOW_JUSTIFY): new macro.
	(XIMAGE_INSTANCE_SUBWINDOW_JUSTIFY): ditto.
	(IMAGE_INSTANCE_SUBWINDOW_ORIENT): ditto.
	(XIMAGE_INSTANCE_SUBWINDOW_ORIENT): ditto.

	* glyphs-widget.c (check_valid_tab_orientation): new function.
	(initialize_widget_image_instance): zero orientation and
	justification.
	(widget_instantiate): pick up orientation.
	(tab_control_query_geometry): return appropriate values for
	vertical tabs.

	* glyphs-msw.c: (mswindows_tab_control_instantiate): assign
	appropriate creation flags for left, right and bottom tabs.

	* s/cygwin32.h: add tab definitions.

2000-01-12  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>

	* glyphs-msw.c (mswindows_unmap_subwindow): Set focus back to the
	frame upon hiding a subwindow.
	(mswindows_button_instantiate): Changed the push button style to
	BS_PUSHBUTTON.
	(mswindows_button_instantiate): Removed button BS_NOTIFY
	style.
	(mswindows_button_instantiate): Removed redundant check for
	a disabled gui item.
	(mswindows_button_instantiate): Made use of WS_TABSTOP
	consistent: "operable" controls (edit, button, tree, scroll) have
	this style, "display-only" ones (static, progress gauge) do
	not. This style is currently ignored by XEmacs though. Also,
	removed the WS_EX_CONTROLPARENT style - it is not for children,
	it is for their parents!
	(mswindows_edit_field_instantiate): Ditto.
	(mswindows_progress_gauge_instantiate): Ditto.
	(mswindows_tree_view_instantiate): Ditto.
	(mswindows_tab_control_instantiate): Ditto.
	(mswindows_scrollbar_instantiate): Ditto.
	(mswindows_combo_box_instantiate): Ditto.
	(mswindows_widget_instantiate): Added the WS_EX_CONTROLPARENT
	style to the "clip" window.
	(mswindows_button_instantiate): Removed compilation warning by
	equally typing terms of the ?: operator.

2000-01-12  Didier Verna  <didier@xemacs.org>

	* redisplay.c (generate_fstring_runes): new parameter holding the
	last modeline-format extent.
	(add_glyph_to_fstring_db_runes): new parameter holding the glyph
	extent, fill the glyph block with it.
	(generate_fstring_runes): handle these parameters.
	(generate_formatted_string_db): ditto.

	* keymap.c (get_relevant_keymaps): retreive the keymaps from the
	glyphs'extents in the modeline.

1999-01-11  Mike Woolley  <mike@bulsara.com>

	* ntheap.c: Reduced the reserved heap space from 1Gb down to
	256Mb, as a workaround for the non-starting problem many people
	have experienced.

2000-01-06  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* console-tty.c (Fset_console_tty_output_coding_system):
	Force redrawing tty frame.

2000-01-10  Didier Verna  <didier@xemacs.org>

	* redisplay.c (generate_fstring_runes): fix size computation bug.

2000-01-09  William M. Perry <wmperry@aventail.com>

	* gpmevent.c: (gpm_next_event_cb): Don't return value from void function.

2000-01-09  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c: index -> i to avoid shadows.
	(xbm_create_bitmap_from_data): make static.
	(check_valid_string_or_int): deleted.
	(mswindows_control_wnd_proc): message -> msg to avoid shadows.

	* glyphs-x.c (x_update_subwindow): remove unused args.

	* glyphs.c (glyph_image_instance): return the thing. Don't set the
	back pointer - this is done in allocate_image_instance.
	(query_string_font): return Qnil to make the compiler happy.
	(unmap_subwindow): set to ~0 to make the compiler happy.
	(glyph_query_geometry): comment out until used.
	(glyph_layout): ditto.

2000-01-09  Hrvoje Niksic  <hniksic@iskon.hr>

	* insdel.c (signal_after_change): Remove extraneous unbind_to().

2000-01-09  Norbert Koch  <norbert@s.netic.de>

	* sysfile.h: Remove definition of HAVE_FSYNC. It's tested for
	in configure.

2000-01-09  Martin Buchholz  <martin@xemacs.org>

	* lisp.h (xfree_1): Make non-public.
	* (xzero): Use '\0' in memset call for clarity.
	* (ALIGNOF): Use __alignof__ instead of undocumented __alignof.
	* alloc.c (allocate_string_chars_struct):
	(make_uninit_string):
	(resize_string):
	(verify_string_chars_integrity):
	(compact_string_chars): Now only called for small strings.
	(sweep_strings):
	String allocation rewrite.
	Properly handle resizing big strings.
	Fixes crash when evaluating:
	(aset (make-string 9003 ??) 1 (make-char 'latin-iso8859-1 57))
	Use consistent coding convention.
	Never use xfree_1() directly.
	General cleanup.
	(CHARS_TO_STRING_CHAR): Remove. No longer needed.
	Big strings had unused space at beginning.

	* scrollbar.c (specifier_vars_of_scrollbar):
	* scrollbar.c (complex_vars_of_scrollbar):
	* gutter.c (specifier_vars_of_gutter):
	* menubar.c (specifier_vars_of_menubar):
	* toolbar.c (specifier_vars_of_toolbar):
	* glyphs.c (specifier_vars_of_glyphs):
	* redisplay.c (specifier_vars_of_redisplay):
	* window.c (specifier_vars_of_window):
	* lisp.h (slot_offset): Remove slot_offset.
	Replace all calls to `slot_offset' with the standard name, `offsetof'.

	* menubar-x.c (compute_menubar_data):
	Remove Fset_buffer(), always called by unwind_protect.
	* menubar-x.c (menu_item_descriptor_to_widget_value_1): Fiddling.
	* menubar-x.c (set_frame_menubar): comment fix.

	* keymap.c (lookup_keys): Remove extra parens.
	* keymap.c (lookup_events): Remove extra parens.

	* dbxrc (run-temacs): Allow function to take arguments.

	* Makefile.in.in (PURIFY_FLAGS): No longer need pointer-mask.

2000-01-08  Andy Piper  <andy@xemacs.org>

	* event-msw.c (mswindows_wnd_proc): don't need to check for widget
	face anymore.

	* frame.c (change_frame_size_1): use new glyph_* signatures.
	(frame_conversion_internal): ditto.

	* toolbar-x.c (x_get_button_size): Use modified glyph_*
	signatures.

	* redisplay.c (add_glyph_rune): Use modified glyph_* signatures.
	(add_glyph_rune): dittto.
	(add_margin_runes): ditto.
	(create_left_glyph_block): ditto.
	(create_right_glyph_block): ditto.
	(redisplay_window): ditto.

	* redisplay-output.c (redisplay_output_layout): Use modified
	glyph_* signatures.

	* glyphs.h: (struct image_instantiator_methods): change signature
	of query_geometry and layout.
	(struct Lisp_Image_Instance): Clean up fields for dynamic geometry
	calculations.
	(struct expose_ignore): change field types.
	(struct subwindow_cachel): ditto.  declare new functions and
	accessor macros.

	* glyphs.c: (instantiate_image_instantiator): assign glyph when
	creating the image instance.
	(image_instance_hash): fixup for new and deleted fields.
	(image_instance_equal): ditto.
	(mark_image_instance): ditto.
	(print_image_instance): ditto.
	(allocate_image_instance): zero width and height. assign attached
	glyph. mark as dirty for future layout.
	(make_image_instance_1): pass Qnil as the glyph its attached to.
	(Fimage_instance_height): simply return the height.
	(Fimage_instance_width): simply return the width.
	(image_instance_query_geometry): new function. query the image
	instance's geometry by wiring through to format and device
	specific methods. fallback on the existing geometry.
	(image_instance_layout): new function. layout the image instance
	by querying its geometry and then wiring through to format and
	device specific methods.
	(query_string_geometry): new function to decide the bounding box
	of a string. text glyph geometry calculations moved here.
	(query_string_font): new function. find out the font for a given
	string in a given face.
	(text_query_geometry): return geometry based on
	quert_string_geometry.
	(formatted_string_instantiate): call string_instantiate.
	(image_instantiate): put strings in the per-window cache. Feed the
	glyph to the instantiated image instance.
	(glyph_height_internal): deleted.
	(glyph_width): simply return the required dimension. re-layout if
	the instance is dirty. Remove references to face_index and
	frame_face which were only used for strings.
	(glyph_ascent): ditto.
	(glyph_descent): ditto.
	(glyph_height): ditto.
	(Fglyph_width): use new glyph_width function.
	(Fglyph_ascent): use new glyph_ascent function.
	(Fglyph_descent): use new glyph_descent function.
	(Fglyph_height): use new glyph_height function.
	(glyph_property_was_changed):
	(glyph_image_instance_maybe): new function to possible create an
	image instance from a glyph if we don't have one already.
	(glyph_dirty_p): use it.
	(glyph_layout): new function for laying out a glyph.
	(glyph_query_geometry): new function for finding out the desired
	geometry of a glyph.
	(update_glyph_cachel_data): use new glyph_* signatures.
	(update_subwindow): call resize_subwindow.
	(map_subwindow): call update_subwindow if the image is dirty.
	(subwindow_instantiate): add comment.
	(Fresize_subwindow): don't actually resize the window, just record
	the values and let update_subwindow handle it.
	(Fglyph_animated_timeout_handler): use
	MARK_IMAGE_INSTANCE_CHANGED.
	(image_instantiator_format_create): declare things with
	query_geometry and layout functions.

	* glyphs-x.c: (x_update_subwindow): remove widget sizing.
	(update_widget_face): use query_string_font.
	(x_widget_set_property): don't return Qt when setting is
	succesful.
	(x_combo_box_instantiate): call widget_instantiate rather than
	widget_instantiate_1.

	* glyphs-widget.c: (widget_face_font_info): deleted.
	(widget_text_to_pixel_conversion): deleted.
	(widget_set_property): make sure the new text gets propagated to
	the image instance.
	(widget_layout): new function. wire through to device and format
	specific methods.
	(widget_query_geometry): new function. wire through to device and
	format specific methods. fallback on geometry of widget text.
	(initialize_widget_image_instance): fixup new fields.
	(widget_instantiate_1): deleted.
	(tree_view_instantiate): deleted.
	(tree_view_query_geometry): new function. returns desired sizing
	of tree view.
	(tab_control_instantiate): deleted.
	(tab_control_query_geometry): new function. returns desired sizing
	of tab.
	(widget_instantiate): subsume widget_instantiate_1. Fixup geometry
	things in the light of dynamic layout.
	(static_instantiate): deleted.
	(layout_instantiate): use new glyph_* signatures.
	(image_instantiator_format_create_glyphs_widget): fixup
	query_geometry and layout declarations for various widgets.

	* glyphs-msw.c: (mswindows_widget_instantiate): add comment.
	(mswindows_button_instantiate): use query_string_font for geometry
	calculations.
	(mswindows_update_subwindow): ditto.
	(mswindows_combo_box_instantiate): fixup for new geometry
	management.
	(mswindows_widget_set_property): Don't return Qt so that other
	methods can be called.

2000-01-08  Martin Buchholz  <martin@xemacs.org>

	* gdbinit: rename to .gdbinit so that gdb will automatically source it.

2000-01-09  Hrvoje Niksic  <hniksic@iskon.hr>

	* insdel.c (signal_before_change): Make sure START and END are
	within the buffer before calling report_extent_modification().
	(signal_after_change): Ditto for START, NEW_END, and ORIG_END.

2000-01-09  Hrvoje Niksic  <hniksic@iskon.hr>

	* extents.h: Correct prototype of report_extent_modification().

	* insdel.c (signal_before_change): Place record_unwind_protect()
	outside MAP_INDIRECT_BUFFERS loops.
	(signal_after_change): Ditto.

	* extents.c (report_extent_modification): Don't expect pointer to
	inside_change_hook.
	(report_extent_modification_mapper): Explain why
	closure->speccount is almost unused.

	* insdel.c (change_function_restore): Call Fset_buffer only if
	necessary.
	(signal_before_change): Don't propagate inside_change_hook to
	report_extent_modification().

2000-01-07  Martin Buchholz  <martin@xemacs.org>

	* elhash.c (make_general_lisp_hash_table): Remove purify UMR.
	(hash_table_rehash_threshold): Removed. Update all callers.

2000-01-03  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* s/windowsnt.h: Fix mail locking stuff.

	* s/aix3-2.h: Remove HAVE_FSYNC which is now autodetected.

	* emacs.c (vars_of_emacs): Added `mail-lock-methods' and
	`configure-mail-lock-method' variables.

	* config.h.in: Fix mail locking stuff.

2000-01-04  Martin Buchholz  <martin@xemacs.org>

	* mule-charset.h (REP_BYTES_BY_FIRST_BYTE):
	Remove macro, always use inline function.
	* mule-charset.c (make_charset): Don't assign to rep_bytes_by_first_byte.
	(rep_bytes_by_first_byte): Make const.

2000-01-03  Didier Verna  <didier@xemacs.org>

	* redisplay.c (generate_fstring_runes): new parameter `offset'.
	Take offset into account when outputting strings or glyphs.
	(generate_formatted_string_db): call generate_fstring_runes with
	an offset of 0 if generating a frame or icon title, or the
	modeline hscroll if generating a modeline.

	* redisplay.h: remove prototype of `generate_formatted_string' and
	add prototype for `generate_formatted_string_db', now used in
	"frame.c".

	* frame.c: `title_string_display_line' and
	`title_string_emchar_dynarr', formerly known as
	`format_string_display_line' and `format_string_emchar_dynarr'
	moved here from "redisplay.c".
	(generate_title_string): formerly known as
	`generate_format_string', moved here from "redisplay.c".
	(update_frame_title): take these name changes into account.
	(init_frame): new function. Initialize here the variables that
	were previously in "redisplay.c" and initialized in
	`init_redisplay'.

	* frame.h: prototype for `init_frame'.

	* window.c (Fmodeline_hscroll): restore the definition (remove the
	MODELINE_IS_SCROLLABLE #ifdef).
	(Fset_modeline_hscroll): ditto, docstring improvement, and return
	the actual value that was set.
	(struct saved_window): turn the `modeline_hscroll' field into a
	Charcount.
	(syms_of_window): restore the declaration of
	`[set-]modeline-hscroll' (remove the MODELINE_IS_SCROLLABLE #ifdef).

	* window.h (struct window): turn the `modeline_hscroll field' into
	a Charcount.

	* emacs.c: include "frame.h" to get `init_frame'.
	(main_1): call `init_frame'.

1999-12-31  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.26 is released.

1999-12-31  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_widget_instantiate): Avoid X errors calling
	XMapWindow() on a NULL pointer X window.

1999-12-31  Martin Buchholz  <martin@xemacs.org>

	* data.c (indirect_function): Use signal_void_function_error().

	* lisp.h: Modify prototypes for signal_*().  Add SUBR_FUNCTION macro.

	* eval.c (PRIMITIVE_FUNCALL): Optimize.
	(signal_void_function_error): return result of Fsignal().
	(signal_invalid_function_error): return result of Fsignal().
	(signal_wrong_number_of_arguments_error): return result of Fsignal().
	(signal_malformed_list_error): Add DOESNT_RETURN.
	(signal_malformed_property_list_error): Add DOESNT_RETURN.
	(signal_circular_list_error): Add DOESNT_RETURN.
	(signal_circular_property_list_error): Add DOESNT_RETURN.
	(Feval): Use returned results of signal_*().  Avoids a crash!
	(Ffuncall): Use returned results of signal_*(). Avoids the crash:
	  (setq debug-on-error t) (funcall 'foo) kbd{r42} kbd{RET}
	- Only check for fun_nargs < subr_min_args if fun_nargs != max_args.
	(function_argcount): Use signal_invalid_function_error().
	(funcall_lambda): Use signal_wrong_number_of_arguments_error().
	Use signal_invalid_function_error().

1999-12-28  Andy Piper  <andy@xemacs.org>

	* debug.c: rename debug_loop elements to X_ to avoid name clashes.

	* menubar-x.c (menu_item_descriptor_to_widget_value_1): strdup
	string_chars.
	(menu_item_descriptor_to_widget_value_1): strdup name.
	(pre_activate_callback): strdup name.

	* scrollbar-x.c (scrollbar_instance_to_widget_value): strdup name.
	(x_update_scrollbar_instance_status): use free_widget_value_tree.

	* dialog-x.c (maybe_run_dbox_text_callback): strdup name.  use
	free_widget_value_tree.
	(dbox_descriptor_to_widget_value): ditto.

	* gui-x.c (widget_value_unwind): use free_widget_value_tree.
	(gui_items_to_widget_values_1): ditto.
	(gui_items_to_widget_values): ditto.
	(free_popup_widget_value_tree): free name.

1999-12-27  Andy Piper  <andy@xemacs.org>

	* nt.c (fstat): use get_osfhandle rather than the handle
	directly. From Fabrice Popineau.

	* process-nt.c (nt_open_network_stream): take types into account
	when warning. From Fabrice Popineau.

1999-12-24  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.25 is released.

1999-12-22  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* syntax.c (vars_of_syntax): Initialize parse-sexp_ignore_comments.

1999-12-21  Martin Buchholz  <martin@xemacs.org>

	* editfns.c (Fpoint_min):
	(Fpoint_min_marker):
	(Fpoint_max):
	(Fpoint_max_marker):
	(Fchar_after):
	(Fchar_before):
	Docstring fixes.  What's a `buffer pointer' anyways?

	* editfns.c (char=): Remove unused and undocumented optional
	third BUFFER argument.

	* toolbar.h (DEVICE_SUPPORTS_TOOLBARS_P):
	* fns.c (plists_differ):
	* elhash.c (HASH_CODE):
	* elhash.c (KEYS_EQUAL_P):
	* redisplay-output.c (redisplay_move_cursor):
	* redisplay.c (create_text_block):
	* floatfns.c (Flogb):
	* glyphs-msw.c (mswindows_initialize_image_instance_mask):
	* glyphs-msw.c (xpm_to_eimage):
	* buffer.h (POINT_MARKER_P):
	* syntax.c (scan_lists):
	* cmdloop.c (Fcommand_loop_1):
	* widget.c (Fwidget_apply):
	* regex.c (STREQ):
	Remove extra parens, esp. of the form ((expr))

	* floatfns.c (Flogb): Make 64-bit clean.

1999-12-12  Daniel Pittman  <daniel@danann.net>

	* configure.in:
	* configure.usage:
	Clean up Athena widget support:
	- Add `with-athena' to select a variant.
	- Remove all `athena3d' options.
	- Robust detection of Athena libraries and headers.
	- Refuse to build with mismatched library and headers.
	- Only build a 3d Athena if the user asks for it.

1999-12-21  Andy Piper  <andy@xemacs.org>

	* redisplay.c (redisplay_frame): check for faces changed when
	reseting subwindow caches.

	* glyphs.h (struct ii_keyword_entry): add copy_p.
	(struct image_instantiator_methods): add query_geometry_method and
	layout_children_method.
	(IIFORMAT_VALID_GENERIC_KEYWORD): new macro to take into account
	copying characteristics of keywords.
	(IIFORMAT_VALID_NONCOPY_KEYWORD): new macro for defining keywords
	whose arguments should not be copied by the specifier code.
	(image_instance_geometry): new enum for layouts.
	(struct Lisp_Image_Instance): re-jig for layouts and update
	macros.

	* glyphs.c (string_instantiate): rename variables.
	(image_instantiate): add strings to those widgets that are
	instantiated per-window.
	(image_copy_vector_instantiator): new function for copying glyph
	specifier instantiators.
	(image_copy_instantiator): ditto.

	* glyphs-x.c (x_update_subwindow): use new face update functions.
	(update_widget_face): update to use new lwlib arg functions.
	(update_tab_widget_face): new function for updating tab control
	label faces.
	(x_widget_instantiate): use new face update functions and new
	lwlib arg functions.
	(x_tab_control_instantiate): ditto.
	(x_tab_control_set_property): ditto.

	* glyphs-widget.c (VALID_GUI_KEYWORDS): use NONCOPY keyword for
	callbacks and other things that could recurse.
	(VALID_GUI_KEYWORDS):

	* event-msw.c: fix cpp stuff for cygwin < b20.

	* config.h.in: move uid_t and friends to before the s&m files so
	that they can be used there.

	* Makefile.in.in (debug-temacs): new target that adds emacs
	environment before invoking gdb.

	* lwlib.h (_widget_args): new structure for holding widget
	args. It is reference counted so that we don't have to copy Xt
	args.
	(_widget_value): remove widget args. Add reference to widget_args.

	* lwlib.c (free_widget_value_contents): free widget args using
	free_widget_value_args.

	* lwlib-Xaw.c (xaw_update_one_widget): use new arg packet.
	(xaw_update_one_widget): use XtIsSubclass for determining labels.

	* lwlib.c (lw_add_value_args_to_args): modify to use our reference
	counted arg packet.
	(lw_add_widget_value_arg): new function. Add an arg to the arg
	packet.
	(free_widget_value_args): new function. Remove a reference counted
	arg packet.
	(lw_copy_widget_value_args): new function. Copy reference counted
	arg packet.
	(merge_widget_value_args): new function. Do a merge of widget
	args.
	(merge_widget_value): use it.
	(copy_widget_value_tree): copy widget args using reference
	counting, since we can't easily copy the args we have been given.

	* specifier.h (struct specifier_methods): add copy_instantiator_method.

	* specifier.c (build_up_processed_list): use
	copy_instantiator_method if defined.

1999-12-19  Martin Buchholz  <martin@xemacs.org>

	* fns.c (Ffillarray): Use O(N), not O(N^2) algorithm for strings.

1999-12-19  Hrvoje Niksic  <hniksic@iskon.hr>

	* profile.c (sigprof_handler): FUN retrieved from the backtrace
	can also be a cons representing anonymous interpreted function.

1999-12-18  Martin Buchholz  <martin@xemacs.org>

	* fns.c (mapcar1):
	(Fmapconcat):
	(Fmapcar):
	(Fmapvector):
	Docstring fixes.  Make them consistent with the lispref and ANSI Lisp.

1999-12-17  Martin Buchholz  <martin@xemacs.org>

	* print.c (print_internal): print ?+ instead of ?\+, etc...
	Make printing a little more efficient.
	Prevent buffer overflow if sizeof EMACS_INT > 8.
	My first 128-bit fix!

1999-12-14  Karl M. Hegbloom  <karlheg@inetarena.com>

	* filelock.c (unlock_all_files): GC_CONSP should be CONSP

1999-12-17  Martin Buchholz  <martin@xemacs.org>

	* database.c:
	* window.c:
	* event-stream.c:
	Remove last vestigial uses of GC_*

	* fns.c (mapcar1): Fix ***THREE*** obscure crashes in one function!
	- Two of those involve evil mapping functions that destructively
	  modify a list being mapped over.
	- Any garbage collection when mapping over a string could cause a
	  crash (typically in mapconcat).

1999-12-08  Adrian Aichner  <adrian@xemacs.org>

	* s\windowsnt.h (DIRECTORY_SEP): Initialize from
	`Vdirectory_sep_char'.

	* lisp.h: Add declaration for `Vdirectory_sep_char' to allow
	customization of `DIRECTORY_SEP' under native Windows NT.

1999-12-14  Katsumi Yamaoka   <yamaoka@jpl.org>

	* buffer.c (Fbury_buffer): Add directions to the docstring.

1999-12-14  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.24 is released.

1999-12-13  Martin Buchholz  <martin@xemacs.org>

	* sound.c (vars_of_sound): Provide esd-sound if HAVE_ESD_SOUND

	* nas.c: Fix compiler warnings.  Ansify.  C++ compilation support.

1999-12-13  Kazuyuki IENAGA <ienaga@jsys.co.jp>

	* input-method-xlib.c: Make sure src/ does not use Athena, except
	indirectly through lwlib.

1999-12-13  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* dbxrc (pobj):	Add opaque_ptr, remove opaque_list.

1999-12-10  Shenghuo ZHU <zsh@cs.rochester.edu>

	* file-coding.c (add_coding_system_to_list_mapper):
	- (coding-system-list) should list aliases correctly.

1999-12-07  Andy Piper  <andy@xemacs.org>

	* fileio.c (vars_of_fileio): directory separator fix from Mike Alexander.
	* windowsnt.h (ditto):

1999-11-27  Adrian Aichner  <adrian@xemacs.org>

	* sysfile.h: Encapsulate `fstat' for Windows NT just like stat to
	get consistent file modification times.

	* sysdep.h: Declare `wait_for_termination' to use process handle,
	not PID, on Windows NT native.

	* sysdep.c (wait_for_termination): Use process handle, not PID, on
	Windows NT native.  Set exit code correctly on Windows NT.
	(sys_subshell): Use process handle, not PID,
	on Windows NT native.
	(sys_fstat): Add ENCAPSULATE_FSTAT for Windows NT.

	* process-nt.c (nt_create_process): Remove negative pid hack for
	Windows 95.
	(nt_send_process): Declare vol_proc volatile.
	(get_internet_address): warn_when_safe if IP address cannot be
	found.
	(nt_open_network_stream): warn_when_safe if network stream fails
	to open.

	* ntproc.c (create_child): Remove negative pid hack for Windows
	95.  Remove incorrect and unnecessary USE_UNION_TYPE handling.

	* nt.c (fstat): Encapsulate for Windows NT just like stat to get
	consistent file modification times.

	* callproc.c (call_process_cleanup): Use process handle, not PID,
	on Windows NT native.
	(Fcall_process_internal): Ditto.  Close fd_error in parent.  Don't
	check for negative pid on Windows NT/9[58].

1999-12-07  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.23 is released.

1999-12-06  Martin Buchholz  <martin@xemacs.org>

	* events.c (Fcopy_event): Don't copy the lrecord_header.

	* lisp.h (DO_REALLOC):
	Optimize.
	Remove redundant parens.
	Remove generic hygienic macro comment.

	* lrecord.h (set_lheader_implementation): Remove redundant parens.

1999-12-05  Martin Buchholz  <martin@xemacs.org>

	* lstream.c (Lstream_adding):
	- Never compare a size_t and a possibly negative number.
	- Optimize.

1999-12-05  Kyle Jones  <kyle_jones@wonderworks.com>

	* lisp/itimer.el: (require 'lisp-float-type).  Use
	  floats directly in itimer-time-difference.

1999-12-05  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_output_layout): avoid name hiding.

	* gui.h: declare gui_add_item_keywords_to_plist.

	* window.c (Fdelete_window): mark subwindows as changed so that
	they can be GC'd if necessary.

1999-12-02  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* src/callproc.c (Fcall_process_internal): Be careful in writing
	terminating null when copying args. nargs can be < 4.
	Idea from Klaus Frank <klausf@i3.informatik.rwth-aachen.de>

1999-11-29  Kyle Jones  <kyle_jones@wonderworks.com>

	* src/sound.c (Fding): Remove zero initialization of
	  static variables to avoid crashes on systems that dump
	  the initialized data segment read-only.

1999-12-05  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* glyphs-x.c (convert_EImage_to_XImage): Guard against other
	visual classes. From Rasmus Borup Hansen <rbh@math.ku.dk>

1999-12-04  Martin Buchholz  <martin@xemacs.org>

	* lstream.c: (filedesc_reader):
	(filedesc_writer): Try number 2: Support broken systems where
	return type of read() and write() is different from ssize_t.

	* systty.h:
	* sysdep.h:
	* sysdep.c:
	- Replace macro calls to EMACS_GET_TTY and EMACS_SET_TTY with
	  function equivalents emacs_get_tty() and emacs_set_tty().
	- Moved prototypes to systty.h, where struct event_tty is defined.
	- Renamed bogus `waitp' parameter to `flushp'.

	* lstream.c (filedesc_reader): Support broken systems where return
	type of read() is different from ssize_t.

	* events.c (Fcopy_event): Avoid redundant EQ test if event2 is nil.

	* event-stream.c (menu_move_up): Remove redundant if block.
	(menu_move_down): Gratuitous rewriting.
	(menu_move_left): Work around Cygnus codefusion-990706 compiler bug.
	(menu_move_right): Ditto.

	* lrecord.h (copy_lcrecord):
	(zero_lcrecord):
	Always add parentheses around uses of macro arguments.

	* sysdll.c: #include <stdlib.h> for exit().
	* unexhp9k800.x: #include <stdlib.h> for malloc().
	Use proper prototype for Save_Shared_Data(void).

1999-12-04  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* src/redisplay.c (point_would_be_visible): Correct for topclip.

1999-12-02  Hrvoje Niksic  <hniksic@iskon.hr>

	* lisp.h: Declare Qself_insert_defer_undo.

	* event-stream.c (Fdispatch_event): Get the magic undo thing from
	a symbol property, so commands other than self-insert-command can
	install it.
	(syms_of_event_stream): Define Qself_insert_defer_undo.

1999-11-30  Martin Buchholz  <martin@xemacs.org>

	* floatfns.c (emacs_rint): Rename rint to emacs_rint, so that
	`#undef HAVE_RINT' works.

	* sysdep.h: Fix up prototypes for sys_read_1(), sys_write_1()

1999-11-25  Andy Piper  <andy@xemacs.org>

	* select-msw.c (Fmswindows_set_clipboard): selection fixes from
	Mike Alexander.
	(Fmswindows_delete_selection): ditto.

	* redisplay.h (CLASS_REDISPLAY_FLAGS_CHANGEDP): add size_changed.
	(GLOBAL_REDISPLAY_FLAGS_CHANGEDP): ditto.

	* redisplay.c (redisplay_device): move size changed to macros in
	redisplay.h
	(redisplay_without_hooks): ditto.

	* redisplay-output.c (redisplay_output_layout): rename to avoid
	name hiding.

	* process-nt.c (struct nt_process_data): mks toolkit fixes from
	Mike Alexander.
	(nt_create_process): ditto.
	(nt_send_process): ditto.

	* nt.c (init_environment): make sure mingw32 gets the cached
	system info.

	* gui.h: declare gui_add_item_keywords_to_plist.

	* event-msw.c (mswindows_wnd_proc): Clipboard fixes from Mike
	Alexander.

	* console-msw.h: fix cygwin define/header 1.0 problems.
	* glyphs-msw.c: ditto.
	* ntplay.c: ditto.
	* unexcw.c: ditto.
	* s/cygwin32/h: ditto.

1999-11-29  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.22 is released

1999-11-28  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.21 is released.

1999-11-26  Martin Buchholz  <martin@xemacs.org>

	* callproc.c (Fcall_process_internal):
	* config.h.in:
	* esd.c:
	* event-msw.c (ntpipe_slurp_reader):
	* event-msw.c (ntpipe_shove_writer):
	* event-msw.c (winsock_reader):
	* event-msw.c (winsock_writer):
	* event-stream.c (dribble_out_event):
	* fileio.c:
	* fileio.c (Fexpand_file_name):
	* glyphs-x.c (write_lisp_string_to_temp_file):
	* gpmevent.c (tty_get_foreign_selection):
	* lisp.h: Update prototypes.
	* lstream.c (Lstream_flush_out):
	* lstream.c (Lstream_write_1):
	* lstream.c (Lstream_was_blocked_p):
	* lstream.c (Lstream_read_more):
	* lstream.c (Lstream_read):
	* lstream.c (Lstream_fputc):
	* lstream.c (make_stdio_output_stream):
	* lstream.c (stdio_flusher):
	* lstream.c (stdio_closer):
	* lstream.c (make_filedesc_output_stream):
	* lstream.c (errno_would_block_p):
	* lstream.c (filedesc_writer):
	* lstream.c (make_lisp_string_input_stream):
	* lstream.c (make_fixed_buffer_output_stream):
	* lstream.c (fixed_buffer_reader):
	* lstream.c (make_resizing_buffer_output_stream):
	* lstream.c (make_dynarr_output_stream):
	* lstream.c (make_lisp_buffer_output_stream):
	* lstream.c (lisp_buffer_reader):
	* lstream.h (lstream_implementation):
	* md5.c (Fmd5):
	* miscplay.h (reset_parsestate):
	* process-nt.c (nt_send_process):
	* process-unix.c (unix_send_process):
	* sound.c:
	* sysdep.c (sys_close):
	* sysdep.c (sys_read_1):
	* sysdep.c (sys_write_1):
	* sysfile.h:
	* file-coding.c (determine_real_coding_system):
	* file-coding.c (Fdetect_coding_region):
	* file-coding.c (struct decoding_stream):
	* file-coding.c (decoding_reader):
	* file-coding.c (Fdecode_coding_region):
	* file-coding.c (struct encoding_stream):
	* file-coding.c (encoding_reader):
	* file-coding.c (Fencode_coding_region):
	* file-coding.c (convert_to_external_format):
	* file-coding.c (convert_from_external_format):
	- Lstream functions mirror Unix98 read(),write().  Therefore use
	  Unix98 types size_t and ssize_t.
	- Try to make Lstream* functions 64-bit clean.  Someday someone
	  may actually want to read from a Lstream with more than 2**32 bytes.
	- Add configure support for ssize_t.
	- Update all callers of Lstream_read and Lstream_write to
	  use the new types.
	- Fix esd* initiated C++ compile errors.
	- Remove comments referring to `fpurge' - we don't want to call it
	  even if it's there.

	* lisp.h
	- Remove some lingering Lucid compiler support.

	* lisp.h
	- Add prototype for Fdelete_process.

	* gpmevent.c (Freceive_gpm_event): Remove unused variables.

1999-11-27  Martin Buchholz  <martin@xemacs.org>

	* Makefile.in.in (depend): Only update `depend' if there were changes.

1999-11-26  Martin Buchholz  <martin@xemacs.org>

	* editfns.c (get_system_name): Remove.

1999-11-26  Martin Buchholz  <martin@xemacs.org>

	* device-x.c (x_init_device):
	- Replace magic number `17' with equivalent expn using sizeof.
	- Replace strcmp with marginally more efficient memcmp.
	- Avoid using C++ reserved word `class'.

	* file-coding.c (determine_real_coding_system):
	- Look for both initial and final -*- cookies.
	- Replace EQ (foo, Qnil) with NILP (foo)
	- Make searching for cookies more efficient.
	- Recognize only rfc 1521 characters in charset names.

1999-11-22  Kazuyuki IENAGA <kazz@imasy.or.jp>

	* input-method-xlib.c (IMDestroyCallback): #ifdef'd by
	"THIS_IS_X11R6", because it shouldn't be evaluated unless X11R6.
	* input-method-xlib.c (IMInstantiateCallback): Ditto.
	* input-method-xlib.c (XIM_init_device): Revive XOpenIM function
	call for X11R5 systems.
	* input-method-xlib.c (XIM_delete_frame): Enabled XDestroyIC()
	again because XIM doesn't concern with frame deletion itself.
	The XIC will be cleared by XIM when XIM is closing (at XIM destroy
	callback).

1999-10-25  Kazuyuki IENAGA <kazz@imasy.or.jp>

	* input-method-xlib.c: Added new lisp object Qxim_xlib.
	New macro xim_warn(str), xim_warn1(fmt,str) and xim_info(str).
	All the valid stderr_out were changed to those macros.
	(IMDestroyCallback): Don't test the XIC if the frame is not X
	frame.
	(IMInstantiateCallback): Treat the client_data as "device" not
	"frame" because the caller changed from frame to device.
	Here initializes XIM and activates XICs for each frame which
	doesn't have XIC.
	(XIM_init_device): Register the XIM instantiation callback which
	had been performed by XIM_init_frame() before.
	(XIM_delete_frame): Added a test for the XIM before clearing XIC.
	(XIM_init_frame): Placed an actual code for XIC activation which
	was moved from IMInstantiateCallback.
	(syms_of_input_method_xlib): New function which includes a symbol
	Qxim_xlib that uses in emacs.c.

	* emacs.c: Added a function entry "syms_of_input_method_xlib" for
	input_method_xlib.

	* symsinit.h: Added a declaration of "syms_of_input_method_xlib".

1999-11-05  Robert Pluim  <rpluim@bigfoot.com>

	* emacs.c (shut_down_emacs): Point users to PROBLEMS file

1999-11-16  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* redisplay-output.c (compare_runes): Add comments about
	results from profiling.

	* redisplay.h (struct rune): Do not use bitfields for members.
	(struct rune): Add various comments about further optimizations.

1999-11-19  Eric Darve  <darve@crocco.stanford.edu>

	* abbrev.c (abbrev_oblookup): Check whether wordend <= wordstart
	if Vabbrev_start_location is used too.

1999-10-27  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* file-coding.c (detect_eol_type): Return CR when two
	sequential CR are found.
	(determine_real_coding_system): Check EOL type when coding:
	cookie is found and EOL type is not specified.
	Don't assume 8bit char as part of coding: cookie.

1999-10-26  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* file-coding.c (determine_real_coding_system): Check if
	'-*-' exists. End searching for coding: cookie at the end
	of line. Check whether character before coding: is space,
	tab or ';'.

1999-11-07  William M. Perry  <wmperry@aventail.com>

	* gpmevent.c: Completely rewrote GPM mouse support for linux
	  console.  The TTY console and event stream are modified at run
	  time, so this code can now be used as a module.
	  (tty_get_foreign_selection): New function to allow pasting from
	  other virtual consoles.
	  (Fgpm_enable): New lisp-visible function to turn GPM on or off
	  at run time.

	* device-tty.c (tty_asynch_device_change): No longer need to
	  notify GPM code of window/console height/width changes.

	* console-tty.c (tty_init_console): Removed outdated GPM support
	  that was part of the console/event code.

	* event-Xt.c (emacs_Xt_select_console): Ditto

	* event-Xt.c (emacs_Xt_unselect_console): Ditto

	* event-unixoid.c (read_event_from_tty_or_stream_desc): Ditto

	* frame-tty.c (console_type_create_frame_tty): Ditto

1999-11-17  Martin Buchholz  <martin@xemacs.org>

	* nt.c:
	* sysdep.c:
	* s/mingw32.h:
	* s/windowsnt.h:
	- Use Unix 98 types uid_t, gid_t, pid_t.
	- Define them.

1999-11-01  Olivier Galibert  <galibert@pobox.com>

	* alloc.c (reinit_alloc_once_early): Move purify_flag init...
	* emacs.c (main_1): ...here, to get the correct value even with
	the portable dumper.

1999-11-17  Martin Buchholz  <martin@xemacs.org>

	* lisp.h (BIT_VECTOR_LONG_STORAGE): Add extra parens.  It's a macro!

	* tooltalk.c (tt_build_string): Remove extra parens.
	* process.c (print_process): Remove extra parens.
	* buffer.h (BI_BUF_PTR_BYTE_POS):
	(BUF_PTR_BYTE_POS):
	(BI_BUF_BYTE_ADDRESS):
	(BI_BUF_BYTE_ADDRESS_BEFORE):
	(valid_memind_p):
	(bytind_to_memind):
	(memind_to_bytind):
	Remove extra parens.  Inline functions are not macros.

	* editfns.c (Fuser_login_name):
	(user_login_name):
	Use proper type uid_t.

1999-11-15  Martin Buchholz  <martin@xemacs.org>

	* syntax.c (complex_vars_of_syntax): Make more readable.
	(define_standard_syntax): New function.

	* syntax.c (forward-comment): Gradually make XEmacs 64-bit-clean.

1999-11-14  Martin Buchholz  <martin@xemacs.org>

	* mule-ccl.c (CCL_WRITE_STRING): Fix compiler warnings.

1999-11-12  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* mule-charset.h (LEADING_BYTE_OFFICIAL_1, LEADING_BYTE_OFFICIAL_2):
	New enum type to make sure no gap in the leading byte definition.

1999-11-11  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* mule-charset.h (LEADING_BYTE_CYRILLIC_ISO_8859_5,
	LEADING_BYTE_LATIN_ISO8859_9): Moved to 0x8B and 0x8C
	to remove a hole in leading byte definition.

1999-11-10  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* mule-charset.c (non_ascii_valid_charptr_p): Check if
	private charset is defined.

1999-11-09  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>

	* mule-ccl.c (ccl_driver): Make sure generated sequences
	are valid when doing `CCL_WRITE_STRING'.
	(ccl-execute-on-string): Pass CCL_MODE_DECODING to ccl_driver.

1999-11-10  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.20 is released

1999-11-04  Martin Buchholz  <martin@xemacs.org>

	* mule-ccl.c (ccl_driver): Warning suppression

1999-11-01  SL Baur  <steve@miho.m17n.org>

	* emacs.c (main_1): Guard call to reinit_vars_of_debug when not
	building a debugged XEmacs.

1999-10-28  Andreas Jaeger  <aj@suse.de>

	* src/emacs.c (main_1): Don't set the malloc hooks if using
	DOUG_LEA_MALLOC.

1999-10-30  Olivier Galibert  <galibert@pobox.com>

	* alloc.c (pdump_dump_rtables): Don't forget to dump the last
	registered type.
	(pdump): Ditto.

1999-10-25  Olivier Galibert  <galibert@pobox.com>

	* emacs.c (main_1): Call reinit_vars_of_scrollbar_x.

	* symsinit.h: Declare reinit_vars_of_scrollbar_x.

1999-10-25  Martin Buchholz  <martin@xemacs.org>

	* redisplay.h (CLASS_RESET_CHANGED_FLAGS):
	(GLOBAL_RESET_CHANGED_FLAGS):
	(CLASS_REDISPLAY_FLAGS_CHANGEDP):
	(RESET_CHANGED_SET_FLAGS):
	Fix C++ compile errors/warnings.
	These macros were just a tad too clever.

	* process-unix.c (unix_open_network_stream):
	* objects-x.c (allocate_nearest_color):
	* mule-charset.c (vars_of_mule_charset):
	* fileio.c (Ffile_truename):
	* file-coding.c (vars_of_file_coding):
	Fix compile errors/warnings.

	* alloc.c (xstrdup): Use fact that memcpy returns its first arg.
	(allocate_lisp_storage): Simplify.

1999-10-24  Olivier Galibert  <galibert@pobox.com>

	* conslots.h: Add defines with first and last slot names.
	* bufslots.h: Add defines with first and last slot names.

	* buffer.c (common_init_complex_vars_of_buffer): Renamed from
	reinit_complex_vars_of_buffer
	(reinit_complex_vars_of_buffer): Reset the slots to the dumped
	value.
	(complex_vars_of_buffer): Dump the slots values.

	* console.c (common_init_complex_vars_of_console): Renamed from
	reinit_complex_vars_of_console
	(reinit_complex_vars_of_console): Reset the slots to the dumped
	value.
	(complex_vars_of_console): Dump the slots values.

	* alloc.c: Rename reloc_table to pdump_reloc_table, rt_list to
	pdump_rt_list and move them at the beginning of the file.
	(gc_sweep): Unmark pdumped objects after the sweep phase.
	(pdump_dump_rtables): Change a bare 256 to
	last_lrecord_type_index_assigned.  Add a separator between the
	adresses or lrecords and the ones of C structs in the dump file.
	(pdump_load): Cope with the new separator and the renamings.  Stop
	looking for the hash tables list after it has been found (duh!).

1999-10-24  Robert Bihlmeyer <robbe@orcus.priv.at>

	* sound.c: support HAVE_ESD_SOUND

	* miscplay.c:
	* miscplay.h:
	* linuxplay.c: Move large part of linuxplay to generalized file
	miscplay. Make it platform independent.

	* esd.c: New file

1999-10-24  Adrian Aichner <adrian@xemacs.org>

	* lisp.h (Dynarr_declare): Fix boo-boo.

1999-10-24  Olivier Galibert  <galibert@pobox.com>

	* process-unix.c (allocate_pty): Fix HAVE_GETPT.
	* process.h: Ditto.

1999-10-24  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* redisplay.c (start_with_line_at_pixpos): Remove assert(cur_elt
	>=0). Handle the cur_elt == 0 case.

1999-10-24  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* unexelf.c: Merge Martin's c++ fixes back in

1999-10-20  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* unexelf.c (unexec): Only copy the global offset
	table from memory on sgi machines.

1999-08-13     Alexandre Oliva <oliva@dcc.unicamp.br>, Vin Shelton <acs@xemacs.org>

	* unexelf.c: Enable GNU/Linux/alpha to build with gcc 2.95 by
	adding support for an sbss section.  Get IRIX 5.2 to build using
	unexelf.c.

	* m/iris4d.h: Use unexelf.o for unexec.

	* m/iris5d.h: Use unexelf.o for unexec.

1999-10-24  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* unexelf.c: Revert to 21.1 version

1999-08-28  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* window.c (Fwindow_truncated_p): New function.

1999-08-25  Jonathan Marten <jonathan.marten@uk.sun.com>

	* window.c (window_truncation_on): Always return 0 for minibuffer
	windows, to enable auto scrolling.

1999-10-24 Neal Becker <nbecker@fred.net>
	* process.h: Unix98 PTY support

1999-10-17  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* fileio.c (Ffile_truename): Do proper mule decoding on
	the argument to xrealpath()

1999-08-19  Stephen Tse  <stephent@sfu.ca>

	* process-unix.c (unix_open_network_stream): Add udp network
	support; rename variable Qtcpip to Qtcp, parameter family to
	protocol for consistency with Qudp.

	* process-nt.c (nt_open_network_stream): Rename variable Qtcpip to
	Qtcp, parameter family to protocol for consistency with Qudp.

	* process.c (global_variables): Add a new variable Qudp for udp
	network support; rename variable Qtcpip to Qtcp for consistency
	with Qudp.
	(Fopen_network_stream_internal): Rename parameter FAMILY to
	PROTOCOL for consistency; fix a minor typo and add an explanation
	in docstring for udp programming.
	(Fopen_multicast_group_internal): Fix a minor typo in docstring.
	(syms_of_process): Add a new variable Qudp for udp network
	support; rename variable Qtcpip to Qtcp for consistency with Qudp.

	* process.h (extern_variables): Add a new variable Qudp for udp
	network support; rename variable Qtcpip to Qtcp for consistency
	with Qudp.

	* procimpl.h: Add a new variable Qudp for udp network support;
	rename variable Qtcpip to Qtcp for consistency with Qudp.
	(struct process_methods): Rename parameter family to protocol.


1999-10-24  Olivier Galibert  <galibert@pobox.com>

	* alloc.c (pdump_make_hash): Divide pointers by 8 for a better hash.

1999-10-23  Olivier Galibert  <galibert@pobox.com>

	* lrecord.h (struct lrecord_header): Removed dumped flags.

	* dynarr.c: Use DUMPEDP instead of dumped flag.

	* lisp.h (DUMPEDP): Added.  Removed dumped flag from dynarr.

	* alloc.c: Removed hash_next linked list pointer.

	* *.c *.h: Removed markobj and mark_object parameters, removed GC_
	and XGC macros.

1999-10-14  Andy Piper  <andy@xemacs.org>

	* redisplay-x.c (x_output_shadows): fix dodgy maths for border
	calculations.

	* gutter.c (output_gutter): be more accurate about the area to be
	cleared since X seems to manage to do the clear after drawing the
	border.

	* redisplay.h (RESET_CHANGED_FLAGS): new macro for setting
	redisplay flags as a group.
	(RESET_CHANGED_SET_FLAGS): ditto.
	(CLASS_RESET_CHANGED_FLAGS): ditto.
	(GLOBAL_RESET_CHANGED_FLAGS): ditto.
	(REDISPLAY_FLAGS_CHANGEDP): new macro for testing redisplay flags
	as a group.
	(CLASS_REDISPLAY_FLAGS_CHANGEDP): ditto.
	(GLOBAL_REDISPLAY_FLAGS_CHANGEDP): ditto.

	* redisplay.c (redisplay_frame): use CLASS_RESET_CHANGED_FLAGS
	instead of setting flags individually.
	(redisplay_device): ditto CLASS_REDISPLAY_FLAGS_CHANGEDP.
	(redisplay_device): ditto.
	(redisplay_device): ditto CLASS_RESET_CHANGED_FLAGS.
	(redisplay_without_hooks): ditto GLOBAL_REDISPLAY_FLAGS_CHANGEDP.
	(redisplay_without_hooks): ditto CLASS_REDISPLAY_FLAGS_CHANGEDP.
	(redisplay_without_hooks): ditto.
	(redisplay_without_hooks): ditto GLOBAL_RESET_CHANGED_FLAGS.

	* redisplay-x.c (x_output_string): unmap subwindows in the area.
	(x_output_blank): ditto.

	* redisplay-output.c (redisplay_output_display_block): don't unmap
	subwindows in case layout optimization can avoid it.
	(redisplay_output_subwindow): unmap subwindows in the area.
	(redisplay_output_layout): optimize the output of layouts - only
	output glyphs that have changed if nothing else of redisplay
	significance has occurred.
	(redisplay_output_pixmap): change args to
	redisplay_clear_clipped_region.
	(redisplay_clear_clipped_region): allow the clipped region to be
	cleared of all subwindows except the one passed in.

	* redisplay-msw.c (mswindows_output_blank): unmap subwindows in
	the area.
	(mswindows_output_cursor): ditto.
	(mswindows_output_string): ditto.

	* gutter.c (calculate_gutter_size): if the window buffer is nil
	then don't continue.
	(update_frame_gutters): be more lenient about when we actually
	update the gutter. Layout optimization makes this
	non-costly. Cache redisplay flags that we want to temporarily
	ignore.

	* glyphs.c (Fglyph_animated_timeout_handler): handle image
	specific timeouts rather than iterating over the instance cache.
	(glyph_animated_timeout_mapper): deleted.
	(add_glyph_animated_timeout): use a weak list to hold onto the
	image so that it can be GC'ed.
	(disable_glyph_animated_timeout): disable a specific timeout.
	(vars_of_glyphs): disable-animated-pixmaps is a new boolean for
	controlling whether pixmaps are animated or not.

	* glyphs-msw.c (mswindows_finalize_image_instance): make sure the
	image timeout gets disabled when the image gets freed.

	* glyphs-eimage.c (gif_instantiate): remove meaningless
	comment. Cope with timeouts specified in the gif extension block.

	* event-msw.c (vars_of_event_mswindows): new variable
	mswindows-meta-activates-menu.
	(mswindows_wnd_proc): only goto defproc with VK_MENU if the user
	wants it.

	* glyphs-x.c (x_finalize_image_instance): delete mask first so
	that we can compare with image.

1999-10-14  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* event-msw.c (mswindows_key_to_emacs_keysym):
	Recognise keypad keys as different from normal keys.

1999-10-14  Didier Verna  <didier@xemacs.org>

	* glyphs-x.c (x_finalize_image_instance): avoid freeing null pixmaps.

1999-10-10  Olivier Galibert  <galibert@pobox.com>

	* symbols.c (init_symbols_once_early): dump Vquit_flag.

	* symsinit.h: Updated.

	* ntproc.c (vars_of_ntproc): Use defsymbol.

	* emacs.c (main_1): Updated reinit calls.

	* lisp.h: Removed Fpurecopy and pure_put declarations.
	* fns.c: Removed pure_put.

	* eval.c (Fdefvar): pure_put -> Fput
	(Fdefconst): Ditto.
	* frame-x.c (init_x_prop_symbols): Ditto.
	* symbols.c (deferror): Ditto.

	* alloc.c (Fmake_byte_code): Remove Fpurecopy call.
	* buffer.c (vars_of_buffer): Ditto.
	* bytecode.c (Ffetch_bytecode): Ditto.
	(optimize_compiled_function): Ditto.
	* emacs.c (vars_of_emacs): Ditto.
	* emodules.c (vars_of_module): Ditto.
	* eval.c (define_function): Ditto.
	(Fautoload): Ditto.
	* frame.c (vars_of_frame): Ditto.
	* intl.c (Fset_domain): Ditto.
	* lread.c (load_force_doc_string_unwind): Ditto.
	* menubar.c (vars_of_menubar): Ditto.
	* minibuf.c (reinit_complex_vars_of_minibuf): Ditto.

	* debug.c (reinit_vars_of_debug): Extracted.
	* device-x.c (reinit_vars_of_device_x): Ditto.
	* emodules.c (reinit_vars_of_module): Ditto.
	* font-lock.c (reinit_vars_of_font_lock): Ditto.
	* glyphs-widget.c (reinit_vars_of_glyphs_widget): Ditto.
	* glyphs.c (reinit_vars_of_glyphs): Ditto.
	* gui-x.c (reinit_vars_of_gui_x): Ditto.
	* insdel.c (reinit_vars_of_insdel): Ditto.
	* menubar-x.c (reinit_vars_of_menubar_x): Ditto.
	* minibuf.c (reinit_complex_vars_of_minibuf): Ditto.
	* mule-wnnfns.c (reinit_vars_of_mule_wnn): Ditto.
	* print.c (reinit_vars_of_print): Ditto.
	* redisplay.c (reinit_vars_of_redisplay): Ditto.
	* select-x.c (reinit_vars_of_xselect): Ditto.
	* undo.c (reinit_vars_of_undo): Ditto.

1999-10-10  Olivier Galibert  <galibert@pobox.com>

	* symsinit.h: Updated declarations, see other ChangeLog entries.

	* redisplay.c (init_redisplay): Ensure proper reinitialisation.

	* lrecord.h (XD_DYNARR_DESC): Introduce XD_INT_RESET and use it.

	* glyphs.c: Add the ii_keyword_entry and related descriptions.
	Fix the image_instantiator_methods one.

	* file-coding.c: Plonk all data that needs to be dumped in a
	dynamically allocated structure.

	* extents.c (reinit_vars_of_extents): Extracted from
	vars_of_extents.

	* event-stream.c (vars_of_event_stream): Don't staticpro when
	pdump_wire is enough.

	* event-msw.c (reinit_vars_of_event_mswindows): Extracted from
	vars_of_event_mswindows.

	* event-Xt.c (reinit_vars_of_event_Xt): Extracted from
	vars_of_event_Xt.

	* eval.c (vars_of_eval): Don't staticpro when pdump_wire is enough.

	* emacs.c (main_1): Added some reinit calls.

	* device-x.c (reinit_console_type_create_device_x): Extracted from
	console_type_create_device_x.

	* console.h: Declare the console_type_entry_dynarr description.

	* console.c: Unstatic the console_type_entry_dynarr description.

	* alloc.c: Removed some dubious comments.  Handle XD_INT_RESET.

1999-10-07  Olivier Galibert  <galibert@pobox.com>

	* symsinit.h: Updated declarations, see other ChangeLog entries.

	* minibuf.c (reinit_complex_vars_of_minibuf): Extracted from
	complex_vars_of_minibuf.

	* lrecord.h: Removed XD_PARENT_INDIRECT (unused and
	unimplemented), added XD_LO_LINK.

	* lisp.h (pdump_wire_list): Add declaration.

	* glyphs.h (INITIALIZE_DEVICE_IIFORMAT): Fix bug found by Andy.
	(INITIALIZE_IMAGE_INSTANTIATOR_FORMAT): Fix stupid bug.
	(REINITIALIZE_IMAGE_INSTANTIATOR_FORMAT): Remove, useless once the
	stupid bug fixed.

	* glyphs.c (reinit_image_instantiator_format_create): Remove.

	* glyphs-x.c (reinit_image_instantiator_format_create_glyphs_x):
	Remove.

	* glyphs-widget.c
	(reinit_image_instantiator_format_create_glyphs_widget): Remove.

	* glyphs-msw.c
	(reinit_image_instantiator_format_create_glyphs_mswindows):
	Remove.

	* glyphs-eimage.c
	(reinit_image_instantiator_format_create_glyphs_eimage): Remove.

	* frame.c (Fmake_frame): Don't reset the face cache when using the
	stream device.

	* file-coding.c: Dumped the_codesys_prop_dynarr and added all
	relevant descriptions.

	* events.c (reinit_vars_of_events): Extracted from vars_of_events.

	* eval.c: The subr is _not_ a lcrecord.

	* emacs.c (main_1): Call vars_of_specifier early before any
	specifier creation (e.g in vars_of_glyphs, at least).  Remove the
	useless reinit_image_instantiator_format*.  Add
	reinit_vars_of_events and reinit_complex_vars_of_minibuf.  Add
	calls to lstream_type_create* and process_type_create*.

	* elhash.c: Dump Vall_weak_hash_tables correctly.

	* data.c: Dump Vall_weak_lists correctly.

	* console.c: Fix description.

	* console-stream.c (init_console_stream): Do initializations
	correctly in the pdump case.

	* chartab.c: Fix description.  Dump Vall_syntax_tables correctly.
	(Fcopy_char_table): Link into Vall_syntax_tables.

	* alloc.c (pdump_wire_list): Added.
	(Fgarbage_collect): Fix loop in stats couting missing the last
	lrecord type.
	(pdump_register_sub): Added XD_LO_LINK.
	(pdump_dump_data): Ditto.  Fixed XD_LO_RESET_NIL forgttting the
	counter.
	(pdump_reloc_one): Ditto.
	(pdump_scan_by_alignement): Use last_lrecord_type_index_assigned
	instead of 256.
	(pdump_dump_wired): Added lists.
	(pdump): Use last_lrecord_type_index_assigned instead of 256.
	Dump last_lrecord_type_index_assigned value.  Fix minor bugs.

1999-10-07  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (mswindows_finalize_image_instance): zero out
	bitmap slices.

	* glyphs-x.c (x_finalize_image_instance): fix FMW problem.

1999-10-06  Andy Piper  <andy@xemacs.org>

	* elhash.c (resize_hash_table): Correct reference to lrecord_header.

1999-10-06  Damon Lipparelli  <lipp@primus.com>

	* elhash.h: forward declare Lisp_Hash_Table.

1999-10-06  Andy Piper  <andy@xemacs.org>

	* glyphs.c (Fset_image_instance_property): mark glyphs as dirty
	after setting an image instance property.

1999-10-05  Andy Piper  <andy@xemacs.org>

	* gutter.c (update_frame_gutters): output gutters if
	windows_changed is set. This is the only way of catching changes
	in selected window which obviously can affect the specifiers.

	* redisplay.c: new state flags, subwindows_state_changed and
	subwindows_state_changed set.
	(redisplay_window): use them.
	(redisplay_device): ditto.
	(redisplay_without_hooks): ditto.
	(redisplay_frame): ditto. Reset subwindow cachels if
	subwindows_changed is set.
	(redisplay_window): call mark_glyph_cachels_as_clean after
	redisplaying.

	* redisplay-x.c (x_output_x_pixmap): select correct
	pixmap image for display depending on the currently selected
	slice.

	* redisplay-output.c (compare_runes): check dirtiness when
	checking RUNE_DGLYPH runes.
	(compare_display_blocks): relax invalidation of display blocks
	since we can now detect whether individual glyphs have changed or
	not.

	* redisplay-msw.c (mswindows_output_dibitmap): select correct
	bitmap image for display depending on the currently selected
	slice.

	* glyphs.h (struct Lisp_Image_Instance): add a dirty flag.
	(IMAGE_INSTANCE_DIRTYP): new macro.
	(XIMAGE_INSTANCE_DIRTYP): ditto.
	(MARK_IMAGE_INSTANCE_CHANGED): ditto.
	(GLYPH_DIRTYP): ditto.
	(XGLYPH_DIRTYP): ditto.
	(MARK_GLYPH_CHANGED): ditto.
	(GLYPH_CACHEL_DIRTYP): ditto.
	(struct glyph_cachel): add a dirty flag.

	* glyphs.c (update_frame_subwindows): Don't update on
	glyphs_changed.
	(glyph_animated_timeout_mapper): new function. Map over the
	instance cache lookinng for animated images to update.
	(Fglyph_animated_timeout_handler): new function. Lisp callback for
	handling animated image timeout events.
	(disable_glyph_animated_timeout): new function. Add the animated
	image timeout.
	(disable_glyph_animated_timeout): new function. Remove the
	animated image timeout.
	(syms_of_glyphs): initialize Qglyph_animated_timeout_handler and
	friends.
	(vars_of_glyphs): initialize Vglyph_animated_ticker.
	(image_instance_equal): add the currently displayed slice.
	(image_instance_hash): ditto.
	(allocate_glyph): initialize dirty flag.
	(glyph_width): rename glyph -> glyph_or_image.
	(glyph_height_internal): ditto.
	(glyph_dirty_p): new function. Determine whether the image
	instance in the domain and/or glyph is dirty.
	(set_glyph_dirty_p): set the dirtiness.
	(update_glyph_cachel_data): take dirtiness into account. Pass the
	image instance we are interested in to glyph_width and friends.
	(get_glyph_cachel_index): make non-static. Always call
	update_glyph_cachel_data.
	(mark_glyph_cachels_as_not_updated): meaningless formatting
	change.
	(mark_glyph_cachels_as_clean): new function. Clean dirtiness from
	glyph cachels.

	* glyphs-x.h (struct x_image_instance_data): change
	pixmap to a list of pixmaps.
	(IMAGE_INSTANCE_X_PIXMAP_SLICE): new macro.
	(IMAGE_INSTANCE_X_PIXMAP_SLICES): ditto.
	(XIMAGE_INSTANCE_X_PIXMAP_SLICE): ditto.
	(XIMAGE_INSTANCE_X_PIXMAP_SLICES): ditto.

	* glyphs-x.c (x_finalize_image_instance): make sure multi pixmap
	images get deleted properly.
	(init_image_instance_from_x_image): add slices paramater and use
	it to initialize x_image_instance_data correctly.
	(image_instance_add_x_image): new function. Add new pixmaps to our
	set of instantiated pixmaps for an image. Used by animated images.
	(x_init_image_instance_from_eimage): add a slices
	parameter. Instantiate all images from the eimage.
	(x_xpm_instantiate): update use of
	init_image_instance_from_x_image.
	(init_image_instance_from_xbm_inline): ditto.
	(x_initialize_pixmap_image_instance): add slices paramater and use
	it to allocate x_image_instance_data correctly.

	* glyphs-msw.h (struct mswindows_image_instance_data): change
	bitmap to a list of bitmaps.
	(IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE): new macro.
	(IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES): ditto.
	(XIMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE): ditto.
	(XIMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICES): ditto.

	* glyphs-msw.c (init_image_instance_from_dibitmap): add slices
	paramater and use it to initialize mswindows_image_instance_data
	correctly.
	(image_instance_add_dibitmap): new function. Add new bitmaps to
	our set of instantiated bitmaps for an image. Used by animated
	images.
	(mswindows_init_image_instance_from_eimage): add a slices
	parameter. Instantiate all images from the eimage.
	(mswindows_xpm_instantiate): update use of
	init_image_instance_from_dibitmap.
	(bmp_instantiate): ditto.
	(init_image_instance_from_xbm_inline): ditto.
	(mswindows_finalize_image_instance): make sure all the bitmap
	slices get deleted.
	(mswindows_initialize_dibitmap_image_instance): add slices
	paramater and use it to allocate mswindows_image_instance_data
	correctly.

	* glyphs-eimage.c (jpeg_instantiate): give extra paramter to
	init_image_instance_from_eimage.
	(png_instantiate): ditto.
	(tiff_instantiate): ditto.
	(gif_instantiate): allocate bitmaps for all gif slices not just
	the first one.

	* device.h (struct device): add subwindows_state_changed flag.
	(MARK_DEVICE_SUBWINDOWS_STATE_CHANGED): new macro.
	(MARK_DEVICE_FRAMES_GLYPHS_CHANGED): ditto.

	* console.h (struct console_methods): add a slice parameter to
	init_image_instance_from_eimage_method.

	* redisplay.c (create_string_text_block): Allow buffer to be nil
	without crashing.

1999-09-24  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c: only include gui-x.h if we are building with
	widgets.

	* gui-x.c (vars_of_gui_x): only set popup_up_p if we have popups.

1999-09-28  Lee Kindness <lkindness@csl.co.uk>

	* objects-x.c (allocate_nearest_color): will return 0 (failure)
	when the colormap is full and the color it has computed to be the
	'nearest' has been allocated read/write.

1999-10-02  Olivier Galibert  <galibert@pobox.com>

	* search.c (reinit_vars_of_search):   Reinit   the  search   cache
	correctly.

	* elhash.h:     Make    the    description    visible.     Declare
	resize_hash_table.

	* elhash.c  (resize_hash_table): Extracted from enlarge_hash_table
	to generalize the hash table reorganization.
	(reorganize_hash_table): Added.
	(enlarge_hash_table): Uses resize_has_table.

	* casetab.c (complex_vars_of_casetab):  staticpro  the mule mirror
	tables.

	* alloc.c:   Add  correct  management  of   blocks of  structures.
	Reorganize hash tables at reload since  the hash values can change
	with the pointers.

1999-10-01  Olivier Galibert  <galibert@pobox.com>

	* lisp.h: Add pdump_wire declaration

	* elhash.c (vars_of_elhash): Wire Vall_weak_hash_tables.
	* symbols.c (init_symbols_once_early): Wire Qnil and Qunbound.

	* alloc.c (pdump_wire): Added..
	(pdump_load): Support it.
	(pdump): Support it

	* glyphs-msw.c
	(reinit_image_instantiator_format_create_glyphs_mswindows): Fix
	macro calls.

1999-09-28  Olivier Galibert  <galibert@pobox.com>

	* symsinit.h: Added lots of prototypes.

	* symeval.h: Added defsymbol_nodump declaration.

	* symbols.c (find_symbol_value): Lame attempt at making the
	startup go further.
	(defsymbol_nodump): Added.

	* mule-charset.c: Collapsed global lisp objects arrays in one
	dumpable structure.

	* lrecord.h: Added some flags.

	* lisp.h: Added dumped flag to dynarrs.  Added dumpstruct
	declaration.

	* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM): Don't
	staticpro dynamic variables.

	* glyphs.c (reinit_specifier_type_create_image): Added.
	(image_instantiator_format_create): Dump image instantiator format
	dynarr.
	(reinit_image_instantiator_format_create): Added.

	* emacs.c (main_1): Added reinits calls.

	* dynarr.c: Protect dumped dynarrays from going berzek in free or
	realloc.

	* specifier.h (INITIALIZE_SPECIFIER_TYPE): Don't staticpro dynamic
	variables.
	* specifier.c (specifier_type_create): Dump the specifier type
	dynarr.
	(reinit_specifier_type_create): Added.
	* console.h (INITIALIZE_CONSOLE_TYPE): Don't staticpro dynamic
	variables.
	* console.c (console_type_create): Dump the console type dynarr.
	(reinit_vars_of_console): Extracted from vars_of_console.
	(reinit_complex_vars_of_console): Extracted from
	complex_vars_of_console
	* window.c (reinit_vars_of_window): Extracted from vars_of_window.
	* toolbar.c (reinit_specifier_type_create_toolbar): Added.
	* search.c (reinit_vars_of_search): Extracted from vars_of_search.
	* objects.c (reinit_specifier_type_create_objects): Added.
	(reinit_vars_of_objects): Extracted from vars_of_objects.
	* lstream.c (reinit_vars_of_lstream): Extracted from
	vars_of_lstream.
	* lread.c (reinit_vars_of_lread): Extracted from vars_of_lread.
	* gutter.c (reinit_specifier_type_create_gutter): Added.
	* glyphs-x.c (reinit_image_instantiator_format_create_glyphs_x):
	Added.
	* glyphs-widget.c
	(reinit_image_instantiator_format_create_glyphs_widget): Added
	* glyphs-msw.c
	(reinit_image_instantiator_format_create_glyphs_mswindows): Added.
	* glyphs-eimage.c
	(reinit_image_instantiator_format_create_glyphs_eimage): Added.
	* event-stream.c (reinit_vars_of_event_stream): Extracted from
	vars_of_event_stream
	* eval.c (reinit_vars_of_eval): Extracted from vars_of_eval.
	* device.c (reinit_vars_of_device): Extracted from vars_of_device.
	* console-x.c (reinit_console_type_create_x): Added.
	* console-tty.c (reinit_console_type_create_tty): Added
	* console-stream.c (reinit_console_type_create_stream): Added.
	(init_console_stream): If PDUMP, always reinitialise basic
	devices.
	* console-msw.c (reinit_console_type_create_mswindows): Added.
	* buffer.c (reinit_vars_of_buffer): Extracted from
	init_vars_of_buffer.
	(reinit_complex_vars_of_buffer): Extracted from
	complex_vars_of_buffer

	* alloc.c: Further with the portable dumping, the revenge.
	(dumpstruct): Added.
	(reinit_alloc_once_early): Extracted from init_alloc_once_early.

	* specifier.c (sizeof_specifier): Correct size computation.
	(make_specifier_internal): Ditto.

1999-09-27  Olivier Galibert  <galibert@pobox.com>

	* alloc.c: Further with the portable dumping.

1999-09-27  Martin Buchholz  <martin@xemacs.org>

	* glyphs-x.c (update_widget_face): Remove bogus cast

	* data.c (sign_extent_lisp):
	* data.c (check_int_range):
	* data.c (Faref):
	* data.c (Faset):
	* data.c (number_char_or_marker_to_int):
	* data.c (number_char_or_marker_to_double):
	* data.c (Frem):
	* data.c (Fmod):
	* extents.c (print_extent_1):
	* fns.c (print_bit_vector):
	* fns.c (Flength):
	* fns.c (Fsafe_length):
	* fns.c (copy_list):
	* fns.c (Fsubseq):
	* fns.c (Felt):
	* fns.c (Flast):
	* fns.c (Fnbutlast):
	* insdel.h:
	* marker.c (print_marker):
	* syntax.h:
	* bytecode.c (bytecode_arithcompare):
	* bytecode.c (bytecode_arithop):
	* lisp.h:
	* lisp.h (EXTERNAL_LIST_LOOP_DELETE_IF):
	* lisp.h (TRUE_LIST_P):
	* lisp.h (CHECK_TRUE_LIST):
	* lisp.h (bit_vector_length):
	* lisp.h (GCPRO4): Make consistent.
	* lisp.h (NGCPRO4): Make consistent.
	* lisp.h (NNGCPRO4): Make consistent.
	* alloc.c (Fmake_list):
	* alloc.c (Fmake_string):
	Use proper 64-bit types, e.g. EMACS_INT or size_t instead of int.
	This should make all arithmetic 64-bit clean.

	Use %ld with (long) casts in print statements of types with sizes
	possibly larger than int.

	Following functions had mismatched prototypes!!:
	do_marker_adjustment(), fixup_internal_substring(), scan_lists(),
	char_quoted(), make_string_from_buffer(),
	make_string_from_buffer_no_extents()

	The types of Bufpos, Bytind, Memind, Bytecount, Charcount,
	Extcount are all now EMACS_INT.  I hope to see the day when I can
	create a buffer with more than INT_MAX characters, without having
	XEmacs slow down to a crawl.  I also hope to be able to create a
	list with more than INT_MAX cons cells.

	* redisplay.c (decode_mode_spec):
	The %p and %P specs in the mode line were not correct for buffers
	larger than MAX_INT/100!  The %p spec was off by .5% even for
	small buffers!

1999-09-27  Martin Buchholz  <martin@xemacs.org>

	* cmdloop.c (num_input_keys):
	* print.c (debug_temp):
	* emacs.c (Vinfo_directory):
	Delete unused variables

	* console-x.h (x_interline_space):  Mark as unimplemented.
	* redisplay-x.c (x_interline_space):  Mark as unimplemented.

	* event-Xt.c (pending_timeouts):
	* linuxplay.c (linuxplay_sndbuf):
	* profile.c (QS*):
	* search.c (searchbufs):
	* specifier.c (specifier_type_entry_dynarr):
	* undo.c (pending_boundary):
	* event-stream.c (the_low_level_timeout_blocktype):
	* extents.c (gap_array_marker_freelist):
	* extents.c (extent_list_marker_freelist):
	* print.c (being_printed):
	* print.c (alternate_do_pointer):
	* alloc.c (first_string_chars_block):
	* alloc.c (current_string_chars_block):
	* emacs.c (initial_argv):
	* emacs.c (initial_argc):
	* eval.c (lisp_eval_depth):
	* free-hook.c (pointer_table):
	* free-hook.c (free_queue):
	* free-hook.c (current_free):
	* free-hook.c (strict_free_check):
	* redisplay.c (formatted_string_emchar_dynarr):
	* redisplay.c (formatted_string_display_line):
	* redisplay.c (formatted_string_extent_dynarr):
	* redisplay.c (formatted_string_extent_start_dynarr):
	* redisplay.c (formatted_string_extent_end_dynarr):
	* redisplay.c (updating_line_start_cache):
	* redisplay.c (last_display_warning_tick):
	* redisplay.c (display_warning_tick):
	* redisplay.c (internal_cache):
	* window.c (Vwindow_configuration_free_list):
	Make static.

	* redisplay.c (Vinitial_window_system):  Make CONST.

1999-09-24  Martin Buchholz  <martin@xemacs.org>

	* redisplay-tty.c (term_get_fkeys_1): Minor aesthetic improvements.

	* doprnt.c (get_doprnt_args): Use int, not short, with va_arg.

1999-09-24  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (output_display_line): only clear the borders
	if we are not displaying the gutter.

1999-09-24  Jan Vroonhof <vroonhof@math.ethz.ch>

	* frame-x.c (x_any_window_to_frame): Let Xt find the widget and
	then use x_any_widget_or_parent_to_frame().
	(x_find_frame_for_window): remove special cases.

1999-09-24  Andy Piper  <andy@xemacs.org>

	* scrollbar-x.c (x_window_is_scrollbar): deleted.
	* scrollbar-x.h: ditto.

1999-09-23  Martin Buchholz  <martin@xemacs.org>

	* alloc.c (this_marks_a_marked_record): Remove.

	* buffer.c (mark_buffer):
	* buffer.c (nuke_all_buffer_slots):
	* console.c (mark_console):
	* console.c (nuke_all_console_slots):
	* frame.c (mark_frame):
	* frame.c (nuke_all_frame_slots):
	Treat MARKED_SLOT() macros consistently.

	* device.h (error_check_device_type):
	* faces.c (face_getprop):
	* fileio.c (DRIVE_LETTER):
	* filelock.c (lock_file_1):
	* frame-x.c (x_create_widgets):
	* frame.h (error_check_frame_type):
	* keymap.c (print_keymap):
	* keymap.c (Fkey_description):
	* keymap.c (where_is_recursive_mapper):
	* mule-charset.h (CHARSET_LEADING_BYTE):
	* objects-msw.c (mswindows_color_instance_hash):
	* objects.c (color_instance_equal):
	* objects.h (struct color_specifier):
	* objects.h (struct font_specifier):
	* objects.h (struct face_boolean_specifier):
	* opaque.h (get_opaque_ptr):
	* opaque.h (set_opaque_ptr):
	* process-unix.c (set_socket_nonblocking_maybe):
	* specifier.h (SPECIFIER_TYPE_P):
	* symbols.c (store_symval_forwarding):
	* syssignal.h (EMACS_KILLPG):
	* terminfo.c (emacs_tparam):
	* glyphs.c (glyph_putprop):
	* glyphs.c (glyph_remprop):
	* glyphs.c (Fimage_instance_subwindow_id):
	* window.c (mark_window):
	* window.c (mark_window_config):
	* window.c (Fset_window_configuration):
	* window.c (save_window_save):
	* eval.c (Fuser_variable_p):
	* eval.c (Fcommand_execute):
	* eval.c (Feval):
	* eval.c (Ffuncall):
	* lisp.h (XPNTR):
	* lisp.h (INT_OR_FLOATP):
	* lisp.h (GC_INT_OR_FLOATP):
	* lisp.h (XFLOATINT):
	* lisp.h (IS_ANY_SEP):
	* mule-ccl.c (Fccl_execute):
	* mule-ccl.c (Fccl_execute_on_string):
	* redisplay-x.c (x_output_string):
	Remove redundant extra parentheses.

1999-09-22  Martin Buchholz  <martin@xemacs.org>

	* chartab.c (word_boundary_p): Add prototype for warning avoidance.
	* eval.c (PRIMITIVE_FUNCALL): ANSIfy
	* free-hook.c (fun_ptr): ANSIfy
	* getloadavg.c: Remove declaration for errno.
	* gui.c (allocate_gui_item): ANSIfy
	* gui.h (allocate_gui_item): ANSIfy
	* mule-ccl.c (resolve_symbol_ccl_program): Make static
	* realpath.c: Remove K&R support.
	* redisplay-x.c (x_output_display_block): Don't shadow previous local
	* glyphs-widget.c (layout_instantiate):  Don't shadow previous local
	* gutter.c (get_gutter_coords): Make static.
	* lread.c (locate_file_map_suffixes): Make static.
	* ralloc.c (relinquish): ANSIfy
	* redisplay.c:
	* lisp.h:
	Move prototypes from redisplay.c to lisp.h

1999-09-22  Martin Buchholz  <martin@xemacs.org>

	* glyphs-x.c (x_widget_set_property):
	- Remove unnecessary initialization.
	- Use char*, not Bufbyte *, with GET_C_STRING_OS_DATA_ALLOCA
	* glyphs-x.c (x_widget_instantiate):
	- Use char*, not Bufbyte *, with GET_C_STRING_OS_DATA_ALLOCA
	* unexelf.c (unexec):
	Add cast for C++ compilability.
	* redisplay.h:
	Fix a typo.
	* ralloc.c (r_alloc_reinit):
	SET_FUN_PTR was broken wrt ANSI aliasing!
	To compensate, use __typeof__ when using gcc, else live with
	possible (but rare) warnings.
	* ralloc.c (init_ralloc):
	Ditto
	* ralloc.c: Use the real dlmalloc prototype for __morecore.
	* lread.c (locate_file_map_suffixes):
	* input-method-xlib.c (XIM_init_frame):
	- Xlib functions should use XPointer, not XtPointer.
	* input-method-xlib.c (XIM_delete_frame):
	- Xlib functions should use XPointer, not XtPointer.
	* input-method-xlib.c (IMDestroyCallback):
	- Simplify.
	- XFRAME (obj) can never be NULL, so don't test for it.
	* gutter.h:
	Add GUTTER_POS_LOOP for iterating over all gutter_pos'es
	* gutter.c (SET_GUTTER_WAS_VISIBLE_FLAG):
	Run c-backslash-region on macro body.
	* gutter.c (gutter_was_visible):
	Remove redundant parens - this is not a macro.
	* gutter.c (redraw_exposed_gutters):
	Use GUTTER_POS_LOOP.
	* gutter.c (gutter_specs_changed):
	Use GUTTER_POS_LOOP.
	* gutter.c (gutter_geometry_changed_in_window):
	Use GUTTER_POS_LOOP.
	* gutter.c (update_frame_gutters):
	Use GUTTER_POS_LOOP.
	* gutter.c (init_frame_gutters):
	Use GUTTER_POS_LOOP.
	* file-coding.c (determine_real_coding_system):
	Fix C++ compile error.
	* emodules.c (find_make_module):
	Cast return value from xrealloc
	* emacs.c (Fkill_emacs):
	Use __typeof__, when available.
	* emacs.c (voodoo_free_hook):
	Use __typeof__, when available.
	(Unfortunately, the type of __free_hook is glibc-version-dependent)
	* dired.c (user_cache): Use Bufbyte *, not char *
	* dired.c (Fuser_name_all_completions): Ditto.

1999-09-22  Andy Piper  <andy@xemacs.org>

	* redisplay.c (redisplay_frame): reset the gutter display lines
	when we reset the subwindows.

	* gutter.c (reset_gutter_display_lines): new function.

	* window.c (Flast_nonminibuf_window): new function equivalent to
	FRAME_LAST_NONMINIBUF_WINDOW ().
	(syms_of_window): declare it.

	* redisplay.c (create_string_text_block): don't add bogus eol
	markers to gutter display lines.

	* glyphs.c (reset_subwindow_cachels): make sure we unmap
	subwindows using unmap_subwindow so that expose events get
	registered correctly.

	* window.c (window_scroll): use Vwindow_pixel_scroll_increment to
	determine how much to scroll the window.
	(vars_of_window): Vwindow_pixel_scroll_increment is a new
	variable.

1999-09-20  Robert Pluim  <rpluim@nortelnetworks.com>

	* glyphs-x.c (update_widget_face): Guard fontList declaration for
	non-motif uses.

1999-09-20  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (mswindows_update_subwindow): update faces.

1999-09-19  Andy Piper  <andy@xemacs.org>

	* glyphs.c (update_frame_subwindows): update if faces have
	changed.

	* glyphs-x.c (x_widget_instantiate): create the clip widget using
	lwlib rather than directly.
	(x_finalize_image_instance): delete the clip widget using lwlib.
	(x_update_subwindow): update widget faces.
	(update_widget_face): new function for updating the face
	properties of a widget.
	(x_widget_set_property): update widget faces.

	* lwlib-Xlw.c (xlw_create_clip_window): new function. We need to
	manage the clip widgets using lwlib so that we can delete them in
	a safe manner.

1999-09-16  Martin Buchholz  <martin@xemacs.org>

	* lisp-union.h:
	* lisp-disunion.h:
	Define new, potentially faster INT arithmetic macros
	INT_PLUS, INT_MINUS, INT_PLUS1, INT_MINUS1
	* bytecode.c (execute_optimized_function):
	Use new macros.
	Fix metering code
	* bytecode.c (bytecode_negate):
	Optimize for integer case.

1999-08-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* m/mips.h: Support for mips-linux: Add !linux around places
	that are not valid for linux, define TEXT_START, DATA_START,
	DATA_SEG_BITS.

1999-09-16  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_output_subwindow): clip subwindows
	that don't completely fit on-screen rather than just unmapping
	them.

	* glyphs.h: change signature of map_subwindow.

	* glyphs.c (map_subwindow): add display_glyph_area to the
	signature. make sure the mapped area saved in the subwindow_cachel
	reflects this.
	(Fforce_subwindow_map): make a no-op. I don't think this does
	anything useful.

	* glyphs-x.h (struct x_subwindow_data): save the Display rather
	than the Screen. Add a clipwindow and clipwidget handle.
	(IMAGE_INSTANCE_X_CLIPWINDOW): new accessor.
	(IMAGE_INSTANCE_X_CLIPWIDGET): ditto.
	(XIMAGE_INSTANCE_X_CLIPWIDGET): ditto.
	(XIMAGE_INSTANCE_X_CLIPWINDOW): ditto.

	* glyphs-x.c (x_finalize_image_instance): destroy the clipwidget
	as well as the widget itself.
	(x_unmap_subwindow): unmap the clipwindow and clipwidget rather
	than the widgets and subwindows themselves. move the widget inside
	the clipwidget.
	(x_subwindow_instantiate): hold onto the Display rather than the
	Screen. allocate a clipwindow to put the subwindow inside.
	(x_resize_subwindow): use saved Display directly.
	(x_widget_instantiate): allocate a clipwidget of type EmacsManager
	to put widgets inside.

	* glyphs-widget.c: remove group stuff.

	* glyphs-msw.h (struct mswindows_subwindow_data): new structure to
	hold the clipwindow.
	(IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW): new accessor.
	(XIMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW): ditto.

	* glyphs-msw.c: remove group stuff.
	(mswindows_finalize_image_instance): destroy clipwindow as well as
	the widget itself.
	(mswindows_unmap_subwindow): unmap the clipwindow rather than the
	widget.
	(mswindows_map_subwindow): ditto. move the widget within the
	clipwindow.
	(mswindows_subwindow_instantiate): allocate and initialize
	mswindows_subwindow_data. allocate a clipwindow with the subwindow
	as a child.
	(mswindows_widget_instantiate): ditto.
	(mswindows_control_wnd_proc): new function that allows us to
	propagate events from the widget to the main windows control loop.

	* device-msw.c (mswindows_init_device): register new widget clip window
	class.

	* console.h (struct console_methods): add display_glyph_area to
	map_window.

	* console-msw.h: declare new window class and wnd proc for
	widgets.

1999-09-14  Martin Buchholz  <martin@xemacs.org>

	* general.c:
	* eldap.c:
	Move symbols used only by eldap.c into eldap.c as statics.

1999-09-09  Martin Buchholz  <martin@xemacs.org>

	* window.c (syms_of_window):
	* symbols.c (syms_of_symbols):
	* redisplay.c (syms_of_redisplay):
	* print.c (syms_of_print):
	* lisp.h:
	* intl.c (syms_of_intl):
	* general.c (syms_of_general):
	* frame.c (syms_of_frame):
	* fileio.c (syms_of_fileio):
	* file-coding.h:
	* file-coding.c (syms_of_file_coding):
	* extents.c (syms_of_extents):
	* event-stream.c (syms_of_event_stream):
	* event-stream.c (Fnext_event):
	* device.c (syms_of_device):
	* data.c (syms_of_data):
	* casetab.c (syms_of_casetab):
	* casetab.c (check_case_table):
	* callint.c (syms_of_callint):
	* buffer.c (syms_of_buffer):
	Delete unused C symbols:
	Qbuffer_file_name, Qbuffer_undo_list, Quser_variable_p,
	Qcurrent_prefix_arg, Qtranslate_table, Qkeywordp,
	Qnumber_or_marker_p, Qcons, Qkeyword, Qignore, Qdelete_device,
	Qcommand_execute, Qglyph_invisible,
	Qbuffer_file_coding_system, Qfile_name_handler_alist,
	Qframe_x_p, Qframe_tty_p, Qblack, Qkeyboard, Qmenubar, Qpath,
	Qvector, Qwhite, Qcase, Qdomain, Qalternate_debugging_output,
	Qprint_escape_newlines, Qprint_readably, Qfloat_output_format,
	Qwindow_scroll_functions, Qfboundp, Qscroll_up, Qscroll_down

	Rename symbols as required by the CHECK_RECORD macro:
	- Qcase_table_p to Qcase_tablep
	- Qcoding_system_p to Qcoding_systemp

	* debug.h:
	* debug.c (syms_of_debug):
	Make debug.c's internal Lisp_Objects static.

	* events.c (vars_of_events):
	* events.c (syms_of_events):
	Use regular old defsymbol instead of KEYSYM + staticpro().

	* select-x.c (CHECK_CUTBUFFER):
	Rewrite in accordance with coding standards.

	* keymap.c (syms_of_keymap):
	Use SPC in the same way as RET, TAB, etc.

1999-08-27  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* xemacs-20/src/menubar-x.c (make_dummy_xbutton_event): Don't add
	offset twice if HAVE_WMCOMMAND is defined.

1999-09-13 Mike McEwan <mike@lotusland.demon.co.uk>

	* redisplay-x.c (x_output_vertical_divider): make sure
	shadow_thickness is positive.

1999-09-10 Julian Back <jback@rudd.compulink.co.uk>

	* process-nt.c (nt_create_process): fixup to cope with
	Vprocess_environment.

1999-09-02  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_output_layout): call output
	routines with clear_clip false. output layout borders with text
	correctly.

	* redisplay-msw.c (mswindows_output_blank): call output routines
	with clear_clip true.
	(mswindows_output_string): ditto.
	(mswindows_output_display_block): ditto.

	* redisplay-x.c (x_output_display_block): call output routines
	with clear_clip true.

	* redisplay.h: fix output routines for clear_clip parameter.

	* redisplay-output.c (redisplay_output_layout): cope with glyphs
	in the border.

	* glyphs-widget.c (layout_instantiate): deal with border glyphs.
	(check_valid_glyph_or_instantiator): renamed from
	check_valid_glyph_or_image.
	(check_valid_border): allow glyphs or their instantiators.
	(check_valid_glyph_or_instantiator_list): renamed from
	check_valid_glyph_or_image_list,
	(glyph_instantiator_to_glyph): new function. make sure a glyph is
	a glyph and not an instantiator.
	(substitute_keyword_value): new function. replace a keyword value
	with a new one.

1999-09-01  Andy Piper  <andy@xemacs.org>

	* glyphs.c (string_set_property): new function to set the data of
	a string.
	(image_instantiator_format_create): use it.

1999-09-07  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fmapc): Rename back to Fmapc_internal.

1999-07-30  Gleb Arshinov  <gleb@cs.stanford.edu>

	* ntheap.h: CONST (semantically constant) name field of file_data
	struct

	* unexnt.c (open_output_file): match function definition with
	function declaration

	* editfns.c: #include "sysfile.h" for getcwd() prototype

	* gif_io.c:  #include "sysfile.h" for close() prototype

1999-09-02  Martin Buchholz  <martin@xemacs.org>

	* elhash.c:
	* elhash.h:
	Change the :type keyword to :weakness, for compatibility with the
	GNU Emacs 20.5 hash table implementation.
	Keep (but don't document) the :type keyword for compatibility.
	Obsolete function hash-table-type
	General cleanup.
	Define function sxhash for compatibility with Common Lisp and GNU Emacs.

1999-09-01  Martin Buchholz  <martin@xemacs.org>

	* floatfns.c (arith_error):
	* floatfns.c (range_error):
	* floatfns.c (range_error2):
	* floatfns.c (domain_error):
	* floatfns.c (domain_error2):
	* lrecord.h (LRECORDP):
	* console-x.h (X_ERROR_OCCURRED):
	* console-x.h (HANDLING_X_ERROR):
	* chartab.c (CATEGORYP):
	* buffer.h (XCHAR_OR_CHAR_INT):
	Remove redundant and confusing parentheses.

	* redisplay-output.c (redisplay_clear_to_window_end):
	Remove redundant initialization.

	* redisplay.h:
	* redisplay-msw.c:
	* redisplay-x.c:
	Move declarations of bevel_modeline() into redisplay.h.

1999-08-30  Olivier Galibert  <galibert@pobox.com>

	* lisp.h: Add staticpro_nodump for undumped staticpro-ing.
	* alloc.c: Add staticpro_nodump for undumped staticpro-ing.  Add
		  alignment information for dumped data.  Enhance
		  descriptions.  Phase out Vterminal_* variables while
		  dumping.
	* lrecord.h: Add chained descriptions and automagically-reset
		  lisp_objects to the description system.

	* console-stream.h: Declare the Vterminal_* variables.

	* buffer.c: Don't dump Vbuffer_alist, Vbuffer_defaults and
		  Vbuffer_local_symbols.
	* console.c: Don't dump Vconsole_list, Vconsole_defaults and
		  Vconsole_local_symbols.
	* eval.c: Don't dump Qunbound_suspended_errors_tag.
	* lread.c: Don't dump Vread_buffer_stream.
	* lstream.c: Don't dump Vlstream_free_list[].
	* search.c: Don't dump last_thing_searched.
	* window.c: Don't dump minibuf_window and
		  Vwindow_configuration_free_list[].

	* faces.c: Add face description.
	* fns.c: Add bit_vector description.
	* glyphs.c: Add image specifier description.
	* objects.c: Add color, face and face boolean specifiers descriptions.
	* opaque.c: Add opaque description.  Don't dump Vopaque_ptr_free_list.
	* rangetab.c: Add range table description.
	* specifier.c: Add specifier and specifier methods description.
	* specifier.h: Add specifier extra description support.

	* symbols.c: Fix symbol_value_buffer_local_description.

	* gdbinit (Lisp): Add opaque_ptr, remove opaque_list.

1999-09-02  Hrvoje Niksic  <hniksic@srce.hr>

	* extents.c (extent_remprop): Get extent's plist address
	correctly.

1999-08-31  Andy Piper  <andy@xemacs.org>

	* xmu.h: define Xmu/Converters.h things.

1999-08-31  Andy Piper  <andy@xemacs.org>

	* opaque.c (equal_opaque_ptr): define.
	(hash_opaque_ptr): define.

	* xmu.h: define Xmu/Misc.h things.

1999-08-17  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* file-coding.c (determine_real_coding_system): Treat `coding:'
	cookie.

1999-08-16  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* file-coding.c (struct decoding_stream): New member `counter'.
	(reset_decoding_stream): Initialize `counter'.
	(decode_coding_ucs4): Use `counter'.
	(decode_coding_utf8): Likewise.

1999-08-31  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_normalize_glyph_area): make sure
	the clip offset doesn't exceed the height we have available to
	show.

	* window.h (struct window): add top_yoffset and left_xoffset for
	pixel scrolling.
	(WINDOW_TEXT_TOP_CLIP): new macro.

	* window.c (window_scroll): add behaviour for pixel-scrolling of
	tall lines.

	* redisplay.h (struct display_line): add top_clip.
	(DISPLAY_LINE_HEIGHT): adjust for top_clip.
	(DISPLAY_LINE_YPOS): ditto.

	* redisplay.c (position_redisplay_data_type): add
	start_col_xoffset to prepare for pixel-based h-scrolling.
	(WINDOW_SCROLLED): new macro.
	(next_tab_position): use it.
	(add_glyph_rune): use new hscoll vars.
	(create_text_block): ditto.
	(generate_displayable_area): adjust off-by-one error.
	(regenerate_window): take top_clip into account.
	(regenerate_window_extents_only_changed): ditto.
	(regenerate_window_incrementally): ditto.

	* redisplay-x.c (x_output_display_block): use DISPLAY_LINE_YPOS,
	DISPLAY_LINE_HEIGHT and DISPLAY_LINE_YEND macros.
	(x_output_string): ditto.
	(x_output_blank): ditto.
	(x_output_hline): ditto.
	(x_output_eol_cursor): ditto.

	* redisplay-output.c (output_display_line): allow for
	top_clip. use DISPLAY_LINE_YPOS, DISPLAY_LINE_HEIGHT and
	DISPLAY_LINE_YEND macros.
	(redisplay_output_layout): output strings in layouts correctly.
	(redisplay_clear_clipped_region): allow for top_clip.
	(redisplay_calculate_display_boxes): ditto.

	* redisplay-msw.c (mswindows_output_blank): use DISPLAY_LINE_YPOS,
	DISPLAY_LINE_HEIGHT and DISPLAY_LINE_YEND macros.
	(mswindows_output_cursor): ditto.
	(mswindows_output_string): ditto.
	(mswindows_redraw_exposed_window): ditto.
	(mswindows_output_display_block): ditto.

	* gutter.c: new specifier type gutter-size.
	(gutter_size_validate): validate gutter-size specifier.
	(Fgutter_size_specifier_p): predicate for gutter-size.
	(Fredisplay_gutter_area): allow the gutter area to be redisplayed
	under user contol, like Fredisplay_echo_area.
	(syms_of_gutter): add new functions.
	(specifier_type_create_gutter): add new specifier.
	(specifier_vars_of_gutter): change specifier types of *-height to
	gutter-size.

	* glyphs.c (glyph_width): make work with image instances.

	* console.h (struct console_methods): change api of output_string.

	* glyphs-x.c (x_map_subwindow): move before mapping as reported by
	Stephen J. Turnbull <turnbull@sk.tsukuba.ac.jp>

1999-08-30  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_finalize_image_instance): X_MASK -> PIXMAP_MASK
	for assignment.
	(init_image_instance_from_x_image): ditto.
	(x_xpm_instantiate): ditto.
	(x_colorize_image_instance): ditto. Reported by Richard Cognot
	<cognot@ensg.u-nancy.fr>

1999-08-29  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_widget_instantiate): move font initialisation so
	that it doesn't get saved in the user defined args.
	(x_tab_control_instantiate): Set the fg color of the tab's
	children.
	(x_tab_control_set_property): ditto.

1999-08-27  Damon Lipparelli  <lipp@primus.com>

	* events.h (XTIMEOUT): must preface Lisp_Timeout with ``struct''
	(XSETTIMEOUT): fixup typo

1999-08-11  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* syntax.c (scan_words): Unified Mule and Non-mule scanning.
	Word boundary search looks back instead of forward so that it
	doesn't peek over the limit.

1999-08-20  Olivier Galibert  <galibert@pobox.com>

	* config.h.in: Add PDUMP define.
	* emacs.c (Fdump_emacs): Hackish, call pdump() if configured in.

	* lrecord.h: Enhance description system.
	* alloc.c: Fix vector and string description.  Add portable
	dumper enumeration fonctions.

	* symbols.c:  Fix symbols description.   Add  symbol_value_forward
	description.
	* eval.c: Add subr description.
	* elhash.c (CLEAR_HENTRY):   Clean  value pointer  too.   Fix hash
	table description.
	(remhash_1): CLEAR_HENTRY evaluates the parameter two times now.

1999-08-20  Olivier Galibert  <galibert@pobox.com>

	* opaque.c: Kill opaque lists, make  Lisp_Opaque_Ptr a lrecord of
	its own.
	* opaque.h: Ditto.

	* eval.c (eval_in_buffer_trapping_errors):
	(run_hook_trapping_errors):
	(safe_run_hook_trapping_errors):
	(call0_trapping_errors):
	(call1_trapping_errors):
	(call2_trapping_errors): OPAQUEP  -> OPAQUE_PTRP.  make_opaque_ptr
	now takes a non-const void *.

1999-08-20  Olivier Galibert  <galibert@pobox.com>

	* opaque.c: Remove make_opaque_long.

	* opaque.h: Remove everything opaque_long related.

	* eval.c (vars_of_eval): Make Qunbound_suspended_errors_tag an
	opaque_ptr.

	* emacs.c (main_1): Remove make_opaque_long from comment.

1999-08-20  Olivier Galibert  <galibert@pobox.com>

	* event-stream.c (mark_timeout):
	(print_timeout):
	(event_stream_generate_wakeup):
	(event_stream_resignal_wakeup):
	(event_stream_disable_wakeup):
	(event_stream_wakeup_pending_p):
	(vars_of_event_stream): Lisp_Timeout is now a lrecord.

	* events.h (struct Lisp_Timeout): Added.

1999-08-24  Andy Piper  <andy@xemacs.org>

	* console-x.h: declare new pixmap signatures.

1999-08-23  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_update_subwindow): make sure the widget size is
	maintained after an update.

	* event-Xt.c (emacs_Xt_handle_magic_event): use
	find_matching_subwindow to check whether the exposure is totally
	inside a subwindow, if it is then ignore it.

	* glyphs.c (find_matching_subwindow): new function.

	* toolbar-x.c (x_draw_blank_toolbar_button): use new
	x_output_shadows signature.
	(x_output_toolbar_button): use new x_output_x_pixmap signature.

	* redisplay.h (struct display_box): new structure.
	(struct display_glyph_area): ditto.
	declare new display_box functions.

	* redisplay-x.c (x_output_pixmap): update for new display
	box stuff.
	(x_bevel_area): update to allow multiple edge styles and border
	segments.
	(x_output_display_block): update for new display_box stuff and
	signatures.
	(x_clear_region): ditto.
	(x_output_x_pixmap): ditto. adjust offsets rather than clip.
	(console_type_create_redisplay_x): declare new console methods.
	(x_output_vertical_divider): update for new bevel_area signature.
	(x_output_shadows): update to allow selective drawing of edges.

	* redisplay-tty.c (tty_output_display_block): do nothing for
	layouts.

	* redisplay-output.c (redisplay_output_subwindow): convert to use
	display_box structure, this allows us to put subwindows anywhere
	with any offset, useful for layout glyphs.
	(redisplay_output_layout): new function. output a layout and its
	sub-glyphs.
	(redisplay_output_pixmap): new modular function combining generic
	parts of the X and mswindows versions. convert to use display_box
	structures.
	(redisplay_clear_clipped_region): new function. clear the area a
	glyph is going into.
	(redisplay_normalize_glyph_area): new function. calculate the
	bounds of a display_glyph_area given a display_box.
	(redisplay_normalize_display_box): new function. shrink a
	display_box to enclose a display_glyph_area.
	(redisplay_display_boxes_in_window_p): check whether the input
	display_box and display_glyph_area are actually in a window.
	(redisplay_calculate_display_boxes): calculate display boxes based
	on conventional display_line metrics.
	(bevel_modeline): update for new bevel_area signature.

	* redisplay-msw.c (mswindows_output_blank): update for new
	display_box stuff.
	(mswindows_output_string): ditto.
	(mswindows_output_dibitmap): ditto.
	(mswindows_output_dibitmap_region): ditto.
	(mswindows_output_pixmap): ditto.
	(mswindows_bevel_area): update to allow multiple edge styles and
	border segments.
	(mswindows_output_display_block): update for new display_box stuff
	and signatures.
	(mswindows_clear_region): ditto.
	(console_type_create_redisplay_mswindows): declare new console methods.

	* lisp.h (edge_style): new enum.
	declare display_box and display_glyph_area.

	* gutter.c (output_gutter): update for new bevel_area signature.

	* glyphs.h (image_instance_type): add layout.
	(IMAGE_LAYOUT_MASK): ditto.
	(LAYOUT_IMAGE_INSTANCEP): new macro.
	(CHECK_LAYOUT_IMAGE_INSTANCE): ditto.
	(struct Lisp_Image_Instance): add offsets for layout and the
	layout type itself. move mask here also.
	(IMAGE_INSTANCE_LAYOUT_CHILDREN): new macro.
	(IMAGE_INSTANCE_LAYOUT_BORDER): ditto.
	(XIMAGE_INSTANCE_LAYOUT_CHILDREN): ditto.
	(XIMAGE_INSTANCE_LAYOUT_BORDER): ditto.

	* glyphs.c (mark_image_instance): update for layouts.
	(print_image_instance): ditto.
	(image_instance_equal): ditto.
	(image_instance_hash): ditto.
	(allocate_image_instance): initialise offsets for layout.
	(decode_image_instance_type): update for layouts.
	(encode_image_instance_type): ditto.
	(Fimage_instance_height): ditto.
	(Fimage_instance_width): ditto.
	(allocate_glyph): ditto.
	(glyph_width): allow image instances as an argument. update for layouts.
	(glyph_height_internal): ditto.
	(syms_of_glyphs): add layout symbols.

	* glyphs-x.h (struct x_image_instance_data): remove mask entry.
	(IMAGE_INSTANCE_X_MASK): update.

	* glyphs-x.c (x_label_instantiate): new function. instantiate a
	label.
	(image_instantiator_format_create_glyphs_x): initialise new layout
	glyph type.

	* glyphs-widget.c: new layout type.
	(check_valid_orientation): new keyword checker for layouts.
	(check_valid_justification): ditto.
	(check_valid_border): ditto.
	(check_valid_glyph_or_image_list): ditto.
	(layout_possible_dest_types): new function for layout glyph type.
	(layout_normalize): ditto.
	(layout_instantiate): ditto.
	(syms_of_glyphs_widget): new keywords for layout.
	(image_instantiator_format_create_glyphs_widget): initialise the
	layout glyph type.

	* glyphs-msw.h (struct mswindows_image_instance_data): remove mask
	argument.
	(IMAGE_INSTANCE_MSWINDOWS_MASK): update.

	* glyphs-msw.c: declare layout format.
	(image_instantiator_format_create_glyphs_mswindows): initialise it.

	* general.c: new symbols for layouts.

	* console.h (struct console_methods): new console methods for
	outputting pixmaps and strings.

1999-08-23  Didier Verna  <didier@xemacs.org>

	* sound.c: revert the renaming of `bell_volume' to `Vbell_volume'
	and `bell_inhibit_time' to `Vbell_inhibit_time'.

1999-08-18  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_output_subwindow): disable
	clipping attempt.

1999-08-17  Andy Piper  <andy@xemacs.org>

	* gutter.c (redraw_exposed_gutter): handle degenerate case of no
	area to expose or no gutter to display.

1999-08-16  Charles G Waldman  <cgw@fnal.gov>

	* sound.c: rename `bell_volume' to `Vbell_volume' and
	`bell_inhibit_time' to `Vbell_inhibit_time'.

1999-08-13  Charles G Waldman  <cgw@fnal.gov>

	* sound.c: (bell-inhibit-time): New variable.
	(ding): Use it.
	(sound-alist): Fix docstring.

1999-08-17  Andy Piper  <andy@xemacs.org>

	* gui-x.c (button_item_to_widget_value): xstrdup name so that
	deleting it is ok.

1999-08-16 Jeff Miller <jmiller@smart.net>

	* syntax.c (scan_words): make compile.

1999-08-16  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_output_subwindow): try and be more
	relaxed about clipping possibilities.

	* glyphs-x.c (x_tab_control_set_property): free_widget_value_tree
	rather than just the widget_value.
	(x_update_subwindow): ditto.
	(x_widget_instantiate): ditto.

	* gutter.c (output_gutter): shrink current display lines if
	required.

1999-08-15  Andy Piper  <andy@xemacs.org>

	* redisplay.h: declare free_display_lines.

	* redisplay.c (free_display_lines): make non-static.

	* gutter.c (free_frame_gutters): use free_display_lines instead of
	Dynarr_free.
	(calculate_gutter_size): ditto.

1999-08-12  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* eval.c (run_hook_with_args_in_buffer): GCPRO globals.

1999-08-14  Andy Piper  <andy@xemacs.org>

	* glyphs.c (update_subwindow_cachel): make it less brittle.

1999-08-04  Mike Woolley  <mike@bulsara.com>

	* scrollbar-msw.c (mswindows_handle_mousewheel_event): Fixed
	problem in wheelmouse code occurring when the horizontal scrollbar
	is enabled but not visible.

1999-08-08  Andy Piper  <andyp@beasys.com>

	* toolbar-msw.c (mswindows_redraw_frame_toolbars): new function.
	(console_type_create_toolbar_mswindows): use it.

	* glyphs.c (Fset_image_instance_property): fiddly reorganisation.

	* redisplay-output.c (redisplay_output_display_block): unmap
	subwindows in the block area before outputting the block.

	* event-msw.c (mswindows_wnd_proc): check the update rect before
	painting and disable expose registration while painting.

	* glyphs.c (register_ignored_expose): check
	hold_ignored_expose_registration before registering expose events.

	* redisplay.c (redisplay_frame): reset the subwindow cache before
	displaying the gutter.

	* glyphs-msw.c (mswindows_map_subwindow): move the window before
	mapping.

	* gutter.c (update_frame_gutters): check for glyphs_changed as if
	it is the subwindow cache will have been reset.

1999-08-06  Andy Piper  <andyp@beasys.com>

	* gui-x.c (button_item_to_widget_value): cope with strings.

	* glyphs.h: declare global widget functions.
	(IIFORMAT_HAS_SHARED_DEVMETHOD): new macro.

	* glyphs-x.c (x_combo_box_instantiate): do generic initialization
	here. remove dead code.
	(image_instantiator_format_create_glyphs_x): enable combo boxes
	for Motif 2.0.

	* glyphs-widget.c (widget_instantiate_1): make non-static.
	(tree_view_instantiate): renamed from combo_box_instantiate.
	(image_instantiator_format_create_glyphs_widget): use new/changed methods.

	* glyphs-msw.c (mswindows_combo_box_instantiate): do generic
	initialization here.

	* lwlib-Xm.c (xm_update_combo_box): new function.
	(xm_update_one_widget): call it.
	(xm_update_one_value): deal with combo boxes as well as lists.
	(xm_create_combo_box): create a drop-down combo box.

	* toolbar-msw.c (mswindows_output_toolbar): call
	mswindows_move_toolbar.

1999-08-05  Andy Piper  <andyp@beasys.com>

	* window.c (Fcurrent_pixel_column): new function. use display
	lines to calculate pixel position of point.
	* window.c (syms_of_window): declare it.

1999-08-05  Andy Piper  <andy@xemacs.org>

	* glyphs.c (check_for_ignored_expose): ignore exposures wholly
	contained in our ignore list.

	* buffer.c (Frecord_buffer): add call to record-buffer-hook.
	(syms_of_buffer): declare record-buffer-hook.

	* s/mingw32.h: define mousewheel things.

1999-08-04  Mike Woolley <mike@bulsara.com>

	* windowsnt.h (_WIN32_WINNT): enable for win95

	* s/cygwin32.h: define mousewheel things.

	* scrollbar-msw.h: declare mousewheel handler.

	* scrollbar-msw.c (mswindows_handle_mousewheel_event): new function.

1999-08-04  Andy Piper  <andy@xemacs.org>

	* gui-x.c (gui_items_to_widget_values): remove unused variable.
	(gui_items_to_widget_values_1): ditto.

	* gui-x.h: unconditionally define since it is used everywhere.

1999-08-04  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_finalize_image_instance): only free pixels if we
	have that type of image.

1999-07-30  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_unmap_subwindows): add comparison
	subwindow to not unmap if required.
	(redisplay_unmap_subwindows_maybe): comparison is Qnil.
	(redisplay_unmap_subwindows_except_us): new function.
	(redisplay_output_subwindow): use it to unmap windows in the area
	we are displaying into.

	* glyphs.c (update_subwindow_cachel_data): always update as we
	only ever get called when an update is required.
	(update_subwindow_cachel): new function. sync a subwindow with its
	cachel.
	(Fresize_subwindow): use it.
	(register_ignored_expose): make sure we set the tail correctly.

1999-07-28  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_clear_bottom_of_window): remove
	unneeded device.

	* gutter.c (redraw_exposed_gutter): unmap subwindows from the
	whole gutter.

	* gui.h: declare parse_gui_item_tree_list and
	parse_gui_item_tree_children.

	* gui.c (parse_gui_item_tree_item): new function for parsing item
	lists into gui-item trees.
	(parse_gui_item_tree_children): ditto.
	(parse_gui_item_tree_list): ditto.

	* gui-x.h: declare gui_items_to_widget_values.

	* gui-x.c (gui_items_to_widget_values_1): new function for
	recursively parsing gui-items into widget_values.
	(gui_item_children_to_widget_values): ditto.
	(gui_items_to_widget_values): ditto.
	(sanity_check_lwlib): add widgets macrolets.

	* glyphs.h (IMAGE_INSTANCE_WIDGET_ITEMS): rename from *ITEM.
	(XIMAGE_INSTANCE_WIDGET_ITEMS): ditto.
	(IMAGE_INSTANCE_WIDGET_ITEM): rename from *SINGLE_ITEM.
	(XIMAGE_INSTANCE_WIDGET_ITEM): ditto.
	(struct expose_ignore): new structure for storing ignorable expose
	events.

	* glyphs.c (valid_image_instantiator_format_p): fix so that using
	a console-type as a locale works.
	(mark_image_instance): ITEM->ITEMS.
	(image_instance_equal): ditto.
	(image_instance_hash): ditto.
	(struct expose_ignore_blocktype): new blocktype.
	(check_for_ignored_expose): new function. checks frame exposure
	list for events to ignore.
	(register_ignored_expose): new function. registers an expose event
	as ignorable.
	(unmap_subwindow): register the expose event as ignorable.
	(vars_of_glyphs): initialise the exposure blocktype.

	* glyphs-x.c (x_finalize_image_instance): use lw_destroy_widget.
	(x_update_subwindow): modify all widgets using widget_value tree
	rather than just a single widget value.
	(x_widget_instantiate): LWLIB_USES_MOTIF -> LWLIB_WIDGETS_MOTIF.
	make sure widgets don't resize themselves.
	(x_tab_control_instantiate): new function. use lwlib tab functions.
	(x_tab_control_set_property): new function.
	(image_instantiator_format_create_glyphs_x): add tab_control.

	* glyphs-widget.c (widget_text_to_pixel_conversion): calculate
	slightly more sensibly.
	(initialize_widget_image_instance): ITEM->ITEMS.
	(widget_instantiate_1): parse gui items generically into the ITEMS
	entry.

	* glyphs-msw.c (mswindows_update_subwindow): replace
	SINGLE_ITEM->ITEM.
	(mswindows_register_widget_instance): ditto.
	(add_tree_item): modify to use new pre-initialised gui-item
	structure.
	(add_tab_item): ditto.
	(mswindows_tab_control_instantiate): ditto.
	(mswindows_tab_control_set_property): ditto.
	(image_instantiator_format_create_glyphs_mswindows): predicate
	existence of widgets on HAVE_WIDGETS.

	* frame.h (struct frame): add subwindow_exposures variables.

	* frame.c (allocate_frame_core): reset subwindow_exposures links.

	* event-msw.c (mswindows_wnd_proc): check for ignored
	expose events before redrawing.

	* event-Xt.c (emacs_Xt_handle_magic_event): check for ignored
	expose events before redrawing.

1999-07-30  SL Baur  <steve@xemacs.org>

	* scrollbar-x.c: should include EmacsFrame.h.
	From Jeff Miller <jmiller@smart.net>

1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.19 is released

1999-07-27  Jeff Miller  <jmiller@smart.net>

	* add a "#ifdef HAVE_MENUBARS"  wrapper to gui.c around
	  menubar_show_keybindings.

1999-07-23  SL Baur  <steve@miho>

	* mule-charset.c (syms_of_mule_charset): Delete duplicated
	definition of Qccl_program.

	* mule-ccl.h: Make a global declaration of it here.

1999-07-20  Bob Weiner  <weiner@beopen.com>

	* s/sco7.h: Added from rr@sco.com.

1999-06-25  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* mule-ccl.c (ccl_driver): Fix `CCL_WriteMultibyteChar2'.

1999-06-24  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* file-coding.c (mule_decode): Setup `str->ccl.last_block'.
	(mule_encode): Likewise.

	* mule-ccl.c (Qccl_program): New variable.
	(CCL_SUSPEND): New macro.
	(CCL_INVALID_CMD): New macro.
	(CCL_READ_CHAR): Don't regard as invalid command while processing
	the last block even if input is empty; use
	`CCL_STAT_SUSPEND_BY_SRC' instead of `CCL_STAT_SUSPEND'.
	(vars_of_mule_ccl): Setup `Qccl_program' and `Qccl_program_idx'.

	* mule-ccl.h (CCL_STAT_SUCCESS): Moved from mule-ccl.c.
	(CCL_STAT_SUSPEND_BY_SRC): Imported from Emacs 20.3.10.
	(CCL_STAT_SUSPEND_BY_DST): Likewise.
	(CCL_STAT_INVALID_CMD): Moved from mule-ccl.c; change value from 2.
	(CCL_STAT_QUIT): Moved from mule-ccl.c; change value from 3.

1999-05-04  Ken'ichi Handa  <handa@gnu.org>

	* mule-ccl.h (struct ccl_program): New member stack_idx.

	* mule-ccl.c (ccl_prog_stack_struct): Declare it as static.
	(ccl_driver): Setup stack_idx and ccl_prog correctly.  Update them
	before returing.
	(setup_ccl_program): Initialize ccl->stack_idx to 0.

1998-10-12  Kenichi Handa  <handa@etl.go.jp>

	* mule-ccl.c (CCL_DECODE_SJIS, CCL_ENCODE_SJIS): Swap the
	definitions.

1998-08-18  Kenichi Handa  <handa@etl.go.jp>

	* mule-ccl.c (CCL_READ_CHAR): If eof is encounterd while
	processing the last block, don't just finish but processes eol
	block of the current CCL program.
	(ccl_driver): Add a new jump label ccl_repeat for the above
	change.

1998-04-15  Kenichi Handa  <handa@etl.go.jp>

	* mule-ccl.c: Typo in comments fixed.
	(Qccl_program_idx): New variables.
	(CCL_ReadMultibyteChar2): Macro name changed from
	CCL_ReadMultibyteCharacter.
	(CCL_WriteMultibyteChar2): Macro name changed from
	CCL_WriteMultibyteChar2.
	(ccl_driver): Adjusted for the above changes.
	(resolve_symbol_ccl_program): New function.
	(Fccl_execute): The arg CCL-PROGRAM can be a symbol of CCL
	program.  If CCL-PRGRAM is a vector, convert symbols in it to ID
	numbers by resolve_symbol_ccl_program.
	(Fccl_execute_on_string): Likewise.
	(Fregister_ccl_program): If the arg CCL-PRGRAM is a vector,
	convert symbols in it to ID numbers by resolve_symbol_ccl_program.

1998-01-21  Kenichi Handa  <handa@etl.go.jp>

	* mule-ccl.h: (struct ccl_program): New member private_state.

	* mule-ccl.c
	(CCL_Call): Fix the comment.
	(CCL_ReadMultibyteCharacter, CCL_WriteMultibyteCharacter): New
	macros for CCL Commands.
	(EXCMD): New macro.
	(ccl_driver): New case label `CCL_Extension'.
	(setup_ccl_program): Initialize the member `private_state' of CCL.

1999-07-08  Katsumi Yamaoka <yamaoka@jpl.org>

	* keymap.c (copy_keymap_internal): Inherit the default binding.

1999-07-14  Kazuyuki IENAGA <kazz@imasy.or.jp>

	* event-Xt.c (handle_focus_event_1): Re-enable Motif/XIM to get
	focus the event (XIM_focus_event).
	(emacs_Xt_handle_magic_event): No side effect on Motif/XIM because
	XIM_SetGeometry does nothing in input_method_motif.c, but re-unify
	the interface for future use (XIM_SetGeometry).
	* redisplay-x.c (x_output_string): Re-enable Motif/XIM to set spot
	location (XIM_SetSpotLocation).
	(x_output_eol_cursor): Ditto.

1999-07-17  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* gdbinit (pobj): change lrecord_foo to &lrecord_foo to match
	Olivier's change to lrecord.h of 1999-04-22

1999-07-20  Robert Pluim  <rpluim@bigfoot.com>

	* gutter.c (redraw_exposed_gutter): Change type of pos from
	enum toolbar_pos -> enum gutter_pos, since former is only defined
	if toolbar support is.

1999-07-19  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_resize_subwindow): cope with widgets as well as
	subwindows.

	* gutter.c (gutter_validate): new function for the gutter specifier.
	(specifier_type_create_gutter): declare specifier validator.

	* buffer.h (INC_CHARBYTIND): add for no error checking version.

1999-07-18  Andy Piper  <andy@xemacs.org>

	* redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data.

	* glyphs-msw.c (console_type_create_glyphs_mswindows): add
	resize_subwindow.
	(mswindows_resize_subwindow): new function.

	* gutter.c (redraw_exposed_gutter): only reset the
	current_display_lines if non-zero.
	(Fgutter_pixel_height): new function.
	(Fgutter_pixel_width): new function.

	* event-msw.c (mswindows_wnd_proc): set the mask of the parameter
	we want to retrive from the tab control.

1999-07-17  Andy Piper  <andy@xemacs.org>

	* window.c (change_window_height): mark gutters changed when we're
	done.

	* gutter.c (specifier_vars_of_gutter): make defaults more
	sensible.

	* gutter.h (WINDOW_REAL_GUTTER_BORDER_WIDTH): adjust to be 0 for 0
	height gutter.
	(DEFAULT_GUTTER_WIDTH): change.
	(DEFAULT_GUTTER_BORDER_WIDTH): change.

1999-07-18  Andy Piper  <andy@xemacs.org>

	* redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data.

1999-07-16  Andy Piper  <andy@xemacs.org>

	* frame.c (Fmake_frame): call init_frame_gutters().

	* redisplay.c (add_emchar_rune): use string functions if we are
	working with a string.
	(position_redisplay_data_type): add string element.

1999-07-15  Andy Piper  <andy@xemacs.org>

	* winslots.h: add real_gutter_size slots to hold the actual gutter
	size. This is important for autodetected sizes.

	* gutter.c (calculate_gutter_size): calculate size for gutters
	that have 'autodetect size.

	* redisplay-msw.c (mswindows_output_vertical_divider): adjust
	extent of divider for gutters.

	* redisplay-x.c (x_output_vertical_divider): adjust extent of
	divider for gutters.

	* scrollbar.c (update_scrollbar_instance): adjust scrollbar
	position to take into account the gutters.

	* redisplay.c (generate_modeline): adjust modeline position to
	take into account the gutters.

1999-07-14  Andy Piper  <andy@xemacs.org>

	* gutter.c (frame_topmost_window): new function.
	(frame_bottommost_window): ditto.
	(frame_leftmost_window): ditto.
	(frame_rightmost_window): ditto.

1999-07-13  Andy Piper  <andy@xemacs.org>

	* redisplay.c (calculate_display_line_boundaries): use text
	boundaries so that gutters get handled properly.

1999-07-12  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c (x_widget_instantiate): set the font Motif-style if
	we're using Motif.

	* redisplay-output.c (redisplay_clear_to_window_end): generalised
	from redisplay-x.c

	* redisplay-x.c (redisplay_clear_to_window_end): moved to
	redisplay.c

	* redisplay-msw.c (redisplay_clear_to_window_end): deleted.

	* gutter.c: new file - implements gutters. All new functions are
	semantically equivalent to the toolbar functions.
	(gutter_was_visible): new function.
	(get_gutter_coords): ditto.
	(output_gutter): ditto.
	(clear_gutter): ditto.
	(update_frame_gutters): ditto.
	(redraw_exposed_gutter): ditto.
	(redraw_exposed_gutters): ditto.
	(free_frame_gutters): ditto.
	(init_frame_gutters): ditto.
	(decode_gutter_position): ditto.
	(Fset_default_gutter_position): ditto.
	(Fset_default_gutter_position): ditto.
	(Fdefault_gutter_position): ditto.
	(gutter_after_change): ditto.
	(Fgutter_specifier_p): ditto.
	(recompute_overlaying_specifier): ditto.
	(gutter_specs_changed): ditto.
	(default_gutter_specs_changed): ditto.
	(gutter_geometry_changed_in_window): ditto.
	(default_gutter_size_changed_in_window): ditto.
	(default_gutter_border_width_changed_in_window): ditto.
	(default_gutter_visible_p_changed_in_window): ditto.
	(syms_of_gutter): ditto.
	(vars_of_gutter): ditto.
	(specifier_type_create_gutter): ditto.
	(specifier_vars_of_gutter): ditto.

	* gutter.h: new file. Contains gutter constants and sizing macros
	similar to those for the toolbar.

	* winslots.h: add gutter variables.

	* window.h: declare window_is_* functions.

	* window.c (window_is_lowest): make non-static.
	(window_is_highest): ditto.
	(window_top_toolbar_height): deleted.
	(window_bottom_toolbar_height): deleted.
	(window_left_toolbar_width): deleted.
	(window_right_toolbar_width): deleted.
	(window_top_gutter_height): add gutter sizing.
	(window_bottom_gutter_height): ditto.
	(window_left_gutter_width): ditto.
	(window_right_gutter_width): ditto.

	* symsinit.h: declarations for gutters vars etc.

	* search.c (bi_find_next_emchar_in_string): new function.

	* scrollbar.c (update_scrollbar_instance): remove reference to
	window_bottom_toolbar_height which did nothing.

	* redisplay.h (struct display_line): add face indices for
	overriding defaults in output_display_line.
	Add gutter_changed flags and declarations.

	* redisplay.c (create_string_text_block): new function, similar to
	create_text_block but for strings. Display tables etc are used
	from the currently selected window.
	(generate_string_display_line): ditto. Similar to
	generate_display_line.
	(generate_displayable_area): generate display lines for a given
	area on a frame. Input is the string, with associated extents, to
	display.
	(redisplay_frame): add gutter_changed check.
	(redisplay_device): ditto.
	(redisplay_without_hooks): ditto.

	* redisplay-x.c (bevel_modeline): moved to redisplay.c.
	(x_redraw_exposed_area): redraw exposed gutters.
	(x_bevel_area): new redisplay device method.
	(x_type_create_redisplay_mswindows): add bevel_area device method.
	(x_output_display_block): fiddly Martin-style cleanup.
	(x_output_vertical_divider): use bevel_area.

	* redisplay-output.c (output_display_line): check display_lines
	for face information before using defaults.
	(bevel_modeline): new function, calls bevel_area with appropriate
	values.

	* redisplay-msw.c (bevel_modeline): moved to redisplay.c.
	(mswindows_redraw_exposed_area): redraw exposed gutters.
	(mswindows_bevel_area): new redisplay device method.
	(console_type_create_redisplay_mswindows): add bevel_area device
	method.

	* indent.c (string_column_at_point): add column_at_point but for
	strings.

	* glyphs-x.c (image_instantiator_format_create_glyphs_x): only
	instantiate widgets that we have a toolkit for.

	* general.c: add Qgutter.

	* frame.h (struct frame): add display lines for gutters and
	visibility flags.

	* frame.c (set_frame_selected_window): mark gutters changed.

	* emacs.c (main_1): add gutter initialisation.

	* device.h (struct device): add gutter_changed flag and macros to
	manipulate it.

	* console.h (struct console_methods): new bevel area redisplay
	method.

	* buffer.h (REAL_INC_CHARBYTIND): new macro for strings as
	REAL_INC_BYTIND is for buffers.
	(INC_CHARPTR): ditto.

	* Makefile.in.in (objs): add gutter.o

1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.18 is released

1999-07-08  SL Baur  <steve@mule.m17n.org>

	* event-Xt.c (handle_focus_event_1): Guard FRAME_X_XIC with
	XIM_XLIB.
	(emacs_Xt_handle_magic_event): Ditto.
	* redisplay-x.c (x_output_string): Ditto.
	(x_output_eol_cursor): Ditto.

1999-06-30  Kazuyuki IENAGA <kazz@imasy.or.jp>

	*  event-Xt.c, input-method-xlib.c, redisplay-x.c: Avoid the
	problem that when XIM is destroyed or missed with some reason,
	xemacs will die.  Now xim=xlib waits the XIM will be ready and
	endures the case of XIM end up.

1999-07-03  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* tooltalk.c (init_tooltalk): save signal actions for SIGQUIT,
	SIGINT and SIGCHLD before calling tt_open and restore the
	afterwards. This fixes e.g. the zombie subprocesses on Solaris

1999-07-06  SL Baur  <steve@xemacs.org>

	* s/linux.h: gcc-2.8 changes for powerpc
	From Justin Vallon <vallon@mindspring.com>

1999-07-05  Didier Verna  <didier@xemacs.org>

	* indent.c: new symbol Qcoerce.
	(Fmove_to_column): use it + doc string update.

1999-07-04  Andy Piper  <andy@xemacs.org>

	* console.c: undo earlier Fprovide changes.
	* fns.c: ditto.
	* console.h: ditto.

	* console-tty.c (image_instantiator_format_create_glyphs_tty): new
	function. validate appropriate image formats for tty.

	* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM):
	initialize consoles parameter.
	(struct image_instantiator_methods): add consoles parameter.
	(IIFORMAT_VALID_CONSOLE): new function. validate the format on the
	console.
	(INITIALIZE_DEVICE_IIFORMAT): validate the format on the given
	console.

	* glyphs-msw.c: declare instantiators for later use.
	(image_instantiator_format_create_glyphs_mswindows): validate xpm
	and friends on the mswindows console.
	* glyphs-x.c: ditto.

	* glyphs.c (valid_image_instantiator_format_p): disallow glyphs
	that have not been registered on the supplied device.
	(Fvalid_image_instantiator_format_p): add locale argument.
	(instantiate_image_instantiator): valid image instantiator on the
	device.

	* symsinit.h: add image_instantiator_format_create_glyphs_tty()
	declaration.

	* emacs.c (main_1): add call to
	image_instantiator_format_create_glyphs_tty().

1999-06-29  Olivier Galibert  <galibert@pobox.com>

	* lisp.h: Add #include <stddef.h>.

	* sysdep.c: Remove #include <stddef.h>.
	* symbols.c: Remove #include <stddef.h>.
	* sheap.c: Remove #include <stddef.h>.
	* opaque.c: Remove #include <stddef.h>.
	* nt.c: Remove #include <stddef.h>.
	* mule-charset.c: Remove #include <stddef.h>.
	* marker.c: Remove #include <stddef.h>.
	* file-coding.c: Remove #include <stddef.h>.
	* extents.c: Remove #include <stddef.h>.
	* elhash.c: Remove #include <stddef.h>.
	* data.c: Remove #include <stddef.h>.
	* chartab.c: Remove #include <stddef.h>.
	* bytecode.c: Remove #include <stddef.h>.
	* alloc.c: Remove #include <stddef.h>.  Fix vector description

1999-06-30  SL Baur  <steve@miho.m17n.org>

	* editfns.c: Document "%s" format spec.
	Suggested by Bob Weiner <weiner@altrasoft.com>

1999-06-29  Andy Piper  <andy@xemacs.org>

	* event-msw.c: fix definition booboo.

1999-06-28  Andy Piper  <andy@xemacs.org>

	* glyphs-x.c: change tree -> tree-view, progress ->
	progress_gauge, edit -> edit-field, tab -> tab-control, combo ->
	combo-box.
	(complex_vars_of_glyphs_x): provide-on-console the implemented
	widget types.

	* glyphs-msw.c: ditto.
	(complex_vars_of_glyphs_mswindows): ditto.

	* lisp.h: add Fprovide_on_console.

	* fns.c (Ffeaturep): add extra optional console argument.
	(Fprovide_on_console): like Fprovide but provides only on the
	specified console-type.
	(Frequire): check console-features as well as global features.

	* console.c (Fconsole_features): new function. return features for
	this console.
	(syms_of_console): add Fconsole_features.

	* console.h (CONMETH_FEATURES): new function for accessing features.
	(CONSOLE_FEATURES): ditto.
	(struct console_methods): add features slot.
	(INITIALIZE_CONSOLE_TYPE): initialize features slot.

1999-06-28  Andy Piper  <andy@xemacs.org>

	* event-Xt.c (handle_focus_event_1): conditionally compile for
	X11R5.

	* s/cygwin32.h: fix me website address.

	* event-msw.c: add NMHDR for pre b20 cygwin builds.

	* gui-x.c (button_item_to_widget_value): only add callback if it
	is non-nil.

	* glyphs-x.c: add progress, edit and combo instantiators.
	(x_widget_set_property): new function. uses lwlib to set widget
	values.
	(x_widget_property): new function. uses lwlib to get widget
	values.
	(x_button_instantiate): support images in buttons.
	(x_button_property): new function. use lwlib to get the selected
	state.
	(x_progress_instantiate): new function for instantiating progress
	gauges.
	(x_progress_set_property): new function. sets the progress gauge
	position.
	(x_edit_instantiate): new function. for instantiating edit fields.
	(x_combo_instantiate): new function. for instantiating combo
	boxes.
	(image_instantiator_format_create_glyphs_x): add new device ii
	formats.

	* glyphs-msw.c (mswindows_tab_instantiate): remove redundant var.

	* console.h (CONSOLE_FEATURES): new features accesor.

	* conslots.h (MARKED_SLOT): add features entry.

1999-06-25  Andy Piper  <andy@xemacs.org>

	* menubar-x.c (menu_item_descriptor_to_widget_value_1): use new
	gui functions.

	* menubar-msw.c: move MAX_MENUITEM_LENGTH to gui.h

	* gui.h (struct Lisp_Gui_Item): add accelerator.

	* gui.c (gui_item_add_keyval_pair): deal with accelerators.
	(gui_item_init): ditto.
	(gui_add_item_keywords_to_plist): ditto.
	(mark_gui_item): ditto.
	(gui_item_hash): ditto.
	(gui_item_accelerator): new function.
	(gui_name_accelerator): new function stolen from gui-x.c

	* gui-x.c (popup_selection_callback): always define. mark
	subwindows changed after calling a callback.
	(menu_name_to_accelerator): deleted.
	(button_item_to_widget_value): forward gui_item things to gui_item
	functions.

	* glyphs-x.h (struct x_subwindow_data): add data for widgets. add
	appropriate accesors.

	* glyphs-x.c: declare new glyph formats.
	(x_finalize_image_instance): unmanage and destroy widgets if they
	exist.
	(x_unmap_subwindow): handle widgets specially.
	(x_map_subwindow): ditto. offset display of widgets by offset of
	text widget within container.
	(x_update_subwindow): new function. call lw_modify_all_widgets
	when we are a widget.
	(x_widget_instantiate): new function for generically creating
	widgets-glyphs. toolkit specifics forwarded to lwlib.
	(x_button_instantiate): new function for instantiating
	widgets-glyph buttons.
	(console_type_create_glyphs_x): register update_subwindow.
	(image_instantiator_format_create_glyphs_x): register widget and
	button types.

	* event-msw.c (mswindows_wnd_proc): remove redundant variable.

	* event-Xt.c (x_event_to_emacs_event): call handle_focus_event_1
	when we get a button press in case we do not have the focus.
	(handle_focus_event_1): set the keyboard focus to the text widget
	if we do not have it.

	* dialog-x.c (dbox_descriptor_to_widget_value): use new gui_item
	functions.

1999-06-24  SL Baur  <steve@miho.m17n.org>

	* syntax.c (scan_words): Restore non-Mule code.
	(word_constituent_p): Restore.

1999-06-23  Olivier Galibert  <galibert@pobox.com>

	* config.h.in: Add missing #undef *_USER_DEFINED.

1999-06-23  SL Baur  <steve@miho.m17n.org>

	* lisp.h (set_bit_vector_bit): Force promotion to unsigned long
	int (fixes a 64-bit problem).

	* chartab.c (word_boundary_p): Use EQ not == for lisp_object
	comparison.

1999-03-23  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* paths.h.in (PATH_DOC): Made doc-directory configurable.

1999-06-22  Olivier Galibert  <galibert@pobox.com>

	* lrecord.h: Added basic external description system.

	* symbols.c: Added symbol, symbol-value-buffer-local,
	symbol-value-lisp-magic and symbol-value-varalias description.
	* mule-charset.c: Added charset description.
	* marker.c: Added marker description.
	* keymap.c: Added keymap description.
	* glyphs.c: Added glyph description.
	* floatfns.c: Added float description.
	* file-coding.c: Added coding-system description.
	* extents.c: Added extent description.
	* elhash.c: Added hash-table description.
	* data.c: Added weak-list desciption.
	* chartab.c: Added char-table-entry and char-table description.
	* bytecode.c: Added compiled-function description.
	* alloc.c: Added cons, vector and string description.

1999-06-22  Olivier Galibert  <galibert@pobox.com>

	* lrecord.h (struct lrecord_header): Reduced size to 4 bytes.
	Updated everything to the removal of the "flags" substructure.

	* lisp.h (subr_lheader_initializer): Updated.
	* symeval.h (symbol_value_forward_lheader_initializer): Updated.

1999-06-20  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* syntax.c (word_constituent_p): Deleted.
	(scan_words): Use `WORD_BOUNDARY_P'.

	* chartab.c (Vword_combining_categories): New variable.
	(Vword_separating_categories): Likewise.
	(CATEGORYP): New macro.
	(CATEGORY_SET): Likewise.
	(CATEGORY_MEMBER): Likewise.
	(word_boundary_p): New function.
	(complex_vars_of_chartab): Set up new variable
	`word-combining-categories' and `word-separating-categories'.

1999-06-18  Olivier Galibert  <galibert@pobox.com>

	* lrecord.h: Added description as a placehold in the lrecord
	implementation structures.  Added the parameter to all constructor
	defines.

	* alloc.c: Added placeholders.
	* buffer.c: Ditto.
	* bytecode.c: Ditto.
	* chartab.c: Ditto.
	* console.c: Ditto.
	* data.c: Ditto.
	* database.c: Ditto.
	* device.c: Ditto.
	* eldap.c: Ditto.
	* elhash.c: Ditto.
	* eval.c: Ditto.
	* event-stream.c: Ditto.
	* events.c: Ditto.
	* extents.c: Ditto.
	* faces.c: Ditto.
	* file-coding.c: Ditto.
	* floatfns.c: Ditto.
	* fns.c: Ditto.
	* frame.c: Ditto.
	* glyphs.c: Ditto.
	* gui-x.c: Ditto.
	* keymap.c: Ditto.
	* lstream.c: Ditto.
	* marker.c: Ditto.
	* mule-charset.c: Ditto.
	* objects.c: Ditto.
	* opaque.c: Ditto.
	* process.c: Ditto.
	* rangetab.c: Ditto.
	* specifier.c: Ditto.
	* symbols.c: Ditto.
	* toolbar.c: Ditto.
	* tooltalk.c: Ditto.
	* window.c: Ditto.

1999-06-22  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.17 is released

1999-06-13  Oscar Figueiredo  <oscar@xemacs.org>

	* config.h.in (HAVE_LDAP_SET_OPTION): New define
	(HAVE_LDAP_GET_LDERRNO): Ditto
	(HAVE_LDAP_RESULT2ERROR): Ditto
	(HAVE_LDAP_PARSE_RESULT): Ditto
	(HAVE_UMICH_LDAP): Removed
	(HAVE_NS_LDAP): Removed

	* eldap.h (struct Lisp_LDAP): Removed the `livep' member as
	suggested by Olivier Galibert
	(CHECK_LIVE_LDAP): Test on `ld' instead of `livep'

	* eldap.c: Take the removal of `livep' into account in all the
	necessary functions
	(signal_ldap_error): Take two additional parameters
	Added new finer compilation conditions in order to use
	ldap_parse_result or ldap_result2error if available
	(Fldap_open): Conform to this new API
	(Fldap_search_internal): Ditto

1999-06-17  SL Baur  <steve@miho.m17n.org>

	* data.c (struct int_or_double): Should use EMACS_INT not int.

1999-06-16  Norbert Koch  <n.koch@eai-delta.de>

	* redisplay-msw.c: Run 'ccl_driver' with 'CCL_MODE_ENCODING' as in
	redisplay-x.c

1999-06-12  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* redisplay-x.c (separate_textual_runs): Run `ccl_driver' with
	`CCL_MODE_ENCODING'.

	* file-coding.c (mule_decode): Run `ccl_driver' with
	`CCL_MODE_DECODING'.
	(mule_encode): Run `ccl_driver' with `CCL_MODE_ENCODING'.

	* mule-ccl.c (CCL_WRITE_CHAR): Refer `conversion_mode'.
	(ccl_driver): Add new argument `conversion_mode'.
	(Fccl_execute): Run `ccl_driver' with `CCL_MODE_ENCODING'.
	(Fccl_execute_on_string): Likewise [perhaps it is better to add
	new optional argument].

	* mule-ccl.h (CCL_MODE_ENCODING): New macro.
	(CCL_MODE_DECODING): New macro.
	(ccl_driver): Add new argument `conversion_mode'.

1999-06-15  SL Baur  <steve@miho.m17n.org>

	* mule-charset.c (Fsplit_char): New subr.
	(Fchar_octet): delete.
	(syms_of_mule_charset): DEFSUBR it.

1999-06-13  Andy Piper  <andy@xemacs.org>

	* menubar.h: update declarations involving gui_items.

	* lisp.h: declare Lisp_Gui_Item.

	* glyphs.h (struct Lisp_Image_Instance): update type of gui_item.

	* glyphs.c (mark_image_instance): modify for new lisp-based gui_items.
	(print_image_instance): ditto.
	(image_instance_equal): ditto.
	(image_instance_hash): ditto.

	* event-msw.c (mswindows_need_event): assert badly_p status.
	(mswindows_wnd_proc): modify WM_NOTIFY handling to cope with
	callbacks in tree-view and tab-control widgets.
	(emacs_mswindows_next_event): modify use of
	mswindows_dequeue_dispatch_event.

	* dialog-msw.c (mswindows_popup_dialog_box): modify for new
	lisp-based gui_items.

	* glyphs-msw.c (mswindows_update_subwindow): update use of
	gui_items.
	(mswindows_register_gui_item): new function.
	(mswindows_register_gui_item): fix to use lisp gui_items.
	(mswindows_widget_instantiate): ditto.
	(mswindows_button_instantiate): ditto.
	(add_tree_item): new function to recursively add tree view
	elements.
	(add_tree_item_list): ditto.
	(mswindows_tree_instantiate): new function. instantiate tree view
	controls.
	(add_tab_item): new function to add tabs to a tab control.
	(mswindows_tab_instantiate): new function. instantiate tab
	controls.
	(image_instantiator_format_create_glyphs_mswindows): add tree view
	and tab controls.
	(vars_of_glyphs_mswindows): ditto.

	* glyphs-widget.c (check_valid_item_list_1): allow nested lists in
	item lists.
	(check_valid_item_list): ditto.
	(initialize_widget_image_instance): fix to use new lisp gui_item.
	(widget_instantiate_1): allow the setting of default textwidth in
	characters.
	(widget_instantiate): change to use new widget_instantiate_1
	signature.
	(combo_instantiate): ditto.
	(static_instantiate): ditto.
	(tab_instantiate): new function for tab widgets.
	(image_instantiator_format_create_glyphs_widget): add tab and tree
	view widgets.

	* menubar-msw.c (displayable_menu_item): convert to use lisp
	gui_items.
	(populate_menu_add_item): ditto.
	(populate_or_checksum_helper): ditto.

	* menubar.c (menu_parse_submenu_keywords): convert to use lisp
	gui_items.
	(Fmenu_find_real_submenu): ditto.

	* gui.h (struct Lisp_Gui_Item): make gui_item a lisp oebjct.

	* gui.c (gui_item_add_keyval_pair): gui_items are now lisp
	objects, convert functions that use them accordingly.
	(gui_item_init): ditto.
	(gui_item_active_p): ditto.
	(gui_item_selected_p): ditto.
	(gui_item_included_p): ditto.
	(gui_item_display_flush_left): ditto.
	(gui_item_display_flush_right): ditto.
	(mark_gui_item): ditto.
	(allocate_gui_item): new function to create a gui_item.
	(make_gui_item_from_keywords_internal): ditto. create and return a
	gui_item as well as setting keywords.
	(gui_parse_item_keywords): ditto.
	(gui_parse_item_keywords_no_errors): ditto.
	(gui_add_item_keywords_to_plist): new function, not yet used.
	(gui_item_hash): new function.
	(gui_item_id_hash): use gui_item_hash.
	(gui_item_equal): new function.
	(print_gui_item): new function.

1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.16 is released

1999-06-10  Andy Piper  <andy@xemacs.org>

	* select-msw.c (mswindows_own_selection): only set the clipboard
	if asked.
	(mswindows_get_foreign_selection): only get the clipboard if
	asked.
	(mswindows_disown_selection): only disown the clipboard if asked.

1999-06-03  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* file-coding.c (coding_system_from_mask): Use `raw-text' instead
	of `no-conversion'.
	(complex_vars_of_mule_coding): Use `raw-text' as the coding-system
	of coding-category `no-conversion'.

1999-06-03  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* file-coding.c (Qraw_text): New variable.
	(syms_of_mule_coding): Add new symbol `raw-text'.
	(complex_vars_of_mule_coding): Add new coding-system `raw-text';
	define coding-system `binary' independently; define coding-system
	`no-conversion' as an alias for `raw-text'.

	* file-coding.h (Qraw_text): New variable.

1999-06-08  SL Baur  <steve@xemacs.org>

	* s/decosf4-0.h: Explicitly #undef SYSTEM_MALLOC.

1999-06-06  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (MIME_LINE_LENGTH): Default to 72, as in mimencode and
	base64.el.
	(base64_decode_1): Signal errors instead of returning -1.

1999-06-07  Hrvoje Niksic  <hniksic@srce.hr>

	* mule-charset.c (Fmake_char): Update docstring.

1999-06-07  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fstring_lessp): Actually increment the Bufbyte pointers.

1999-06-05  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (base64_decode_1): Allow and ignore any non-base64
	characters in input.

1999-05-27  Olivier Galibert  <galibert@pobox.com>

	* emacs.c (Fdump_emacs): Add clear_message() lost with the removal
	of report_pure_usage().

1999-06-04  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fstring_lessp): Remove O(n^2) under Mule.

1999-06-04  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.15 is released

1999-06-01  Hirokazu FUKUI  <fukui@atesoft.advantest.co.jp>

	* frame.c (Fset_mouse_position):
	(Fset_mouse_pixel_position):
	* window.c (Fsplit_window):
	(Fmove_to_window_line):
	Fix crash when invoking functions with an already-deleted window
	argument.

	* indent.c (vertical_motion_1):
	(vmotion_pixels):
	(Fvertical_motion_pixels):
	* window.c (Fwindow_displayed_text_pixel_height):
	Fix error message when invoking functions with an already-deleted
	window argument.

1999-06-01  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* sysdep.c (request_sigio_on_device): Guard against glibc
	2.1's stub streams implementation.

1999-06-03  SL Baur  <steve@xemacs.org>

	* config.h.in:
	* emacs.c:  Implement x.y.z version numbers
	From Jan Vroonhof <vroonhof@math.ethz.ch>

1999-05-20  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* mule-charset.c (complex_vars_of_mule_charset): Registry of
	japanese-jisx0208-1978 should not match with "jisx0208.1983" nor
	"jisc6226.1983".

1999-06-03  SL Baur  <steve@xemacs.org>

	* frame-x.c:
	* device-x.c: rename session option to wmcommand.
	From Oliver Graf <ograf@rhein-zeitung.de>

1999-05-27  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fsubstring): Don't traverse the same region twice with
	charcount_to_bytecount().

1999-06-03  SL Baur  <steve@steve1.m17n.org>

	* m/alpha.h (SYSTEM_MALLOC): Fix indented preprocessor directive
	garbage.

	* s/decosf4-0.h: Defining ORDINARY_LINK here is redundant (and it
	doesn't really work as is implied by the commentary).
	Don't define SYSTEM_MALLOC so the old GNU malloc can be used.

1999-06-02  SL Baur  <steve@steve1.m17n.org>

	* symsinit.h: Declare vars_of_ntproc.
	* emacs.c (main_1): Call it.

	* ntproc.c (syms_of_ntproc): Move variable initializations from
	here ...
	(vars_of_ntproc): ... to here [new function].

	* file-coding.c (syms_of_file_coding): Rename.
	(vars_of_file_coding): Ditto.
	(complex_vars_of_file_coding): Ditto.

	* symsinit.h: Rename *_mule_coding to *_file_coding.

	* emacs.c (main_1): Call them by the proper name.

	* device-msw.c (syms_of_device_mswindows): Move variable
	initializations from here ...
	(vars_of_device_mswindows): ... to here.

	* chartab.c (vars_of_chartab): New function.

	* symsinit.h: New function, vars_of_chartab.

	* emacs.c (main_1): Call it.

	* mule-canna.c (syms_of_mule_canna): Move CANNA initialization ...
	(vars_of_mule_canna): ... to here.

	* mule-ccl.c (vars_of_mule_ccl): New function.  Move variable
	initializations out of syms_of_mule_ccl.

	* symsinit.h: Declare new function vars_of_mule_ccl.

	* emacs.c (main_1): Call it.

1999-05-27  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (base64_decode_1): Ignore whitespace.

1999-05-27  Hrvoje Niksic  <hniksic@srce.hr>

	* mule-charset.c (Fmake_char): Strip the eighth bit off ARG1 and
	ARG2.

1999-05-21  Andy Piper  <andy@xemacs.org>

	* xselect.c: deleted.

	* symsinit.h: declare select initialisation.

	* select.h: new file. declare commonly used select functions and
	variables.

	* select.c: new file. generalised from xselect.c.
	(clean_local_selection_data): moved from xselect.c.
	(get_local_selection): ditto. device specific pieces called via a
	devmeth.
	(handle_selection_clear): ditto.
	(Fown_selection_internal): renamed and generalised from
	Fx_own_selection_internal. moved from xselect.c.
	(Fdisown_selection_internal): ditto.
	(Fselection_owner_p): ditto.
	(Fselection_exists_p): ditto.
	(Fget_selection_internal): ditto.
	(syms_of_select): new function. QXXXX values moved from xselect.c
	(vars_of_select): new function. selection_converter_alist,
	lost_selection_hooks moved and renamed from xselect.c

	* select-x.c: renamed from xselect.c.
	(x_own_selection): converted to device specific. non-X-specific
	bits moved to select.c.
	(x_get_foreign_selection): ditto.
	(x_disown_selection): ditto.
	(x_selection_exists_p): ditto.
	(console_type_create_select_x): new function.

	* select-msw.c (mswindows_own_selection): new device method to set
	the clipboard when we 'own' the selection.
	(mswindows_get_foreign_selection): new device method to get the
	clipboard.
	(mswindows_disown_selection): new device method to delete the
	selection when we 'disown' it.
	(console_type_create_select_mswindows): new function.

	* emacs.c (main_1): add select to things to initialise.

	* console.h (struct console_methods): new console methods for
	selection.

	* Makefile.in.in (x_objs): xselect.c renamed to select-x.c

1999-05-20  Hrvoje Niksic  <hniksic@srce.hr>

	* print.c (long_to_string): Install a faster version.

1999-05-16  Andy Piper  <andy@xemacs.org>

	* ntproc.c (syms_of_ntproc): default
	win32-start-process-share-console to t.

1999-05-14  Hrvoje Niksic  <hniksic@srce.hr>

	* config.h.in: Do it here.

	* bytecode.c: Don't define ERROR_CHECK_TYPECHECK here.

1999-05-14  Andy Piper  <andy@xemacs.org>

	* toolbar-msw.c (mswindows_output_toolbar): hash on something
	hashable.

1999-05-14  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.14 is released

1999-05-12  Andy Piper  <andy@xemacs.org>

	* ntproc.c (sys_spawnve): kludge argv[0] in a MS compatible way.

1999-05-11  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* emacs.c (Frun_emacs_from_temacs): (re)alloc natgs+2 entries for
	run_temacs_argv array -- fixes random memory corruption crash

1999-05-12  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* window.c (Fcurrent_window_configuration):
	Save minibuffer height;

	* window.c (set_window_configuration): use it.

1999-05-10  Robert Pluim  <rpluim@bigfoot.com>

	* lisp.h (NNUNGCPRO): fix typo in name of DEBUG_GCPRO version

1999-04-21  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* redisplay.c (redisplay_window): Do not put data
	in the line start cache if it is not guaranteed to be correct

1999-04-02  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* window.c (struct window_config): Removed frame
	size members.
	(window_config_equal): No longer compare frame sizes.
	(Fset_window_configuration): Resize old top window to fit in the
	current frame directly, no longer use a fake frame resize.
	(Fcurrent_window_configuration): No longer save frame size

1999-05-11  Andy Piper  <andy@xemacs.org>

	* ntproc.c (sys_spawnve): actually assign argv[0] instead of the
	first character.

1999-05-10  Hrvoje Niksic  <hniksic@srce.hr>

	* sysdep.c (init_system_name): If gethostname gives a proper
	domain name, don't look further for one.

1999-05-09  Hrvoje Niksic  <hniksic@srce.hr>

	* symbols.c (Fintern): Avoid frequent XSYMBOL (foo).
	(Fintern_soft): Accept a symbol argument.

1999-05-06  Hrvoje Niksic  <hniksic@srce.hr>

	* symbols.c (Fintern): ...do it here.

	* lread.c (read_atom): Don't handle keywords here.

1999-05-06  Hrvoje Niksic  <hniksic@srce.hr>

	* symbols.c (reject_constant_symbols): Just use SYMBOL_IS_KEYWORD.

1999-05-03  Olivier Galibert  <galibert@pobox.com>

	* lisp.h (SYMBOL_IS_KEYWORD): A symbol can be a keyword only if it
	is interned in the main obarray.

1999-04-23  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* menubar-x.c (pre_activate_callback): set accelerator field in
	"No menu" entries to nil. Avoid crash in
	command_builder_operate_menu_accelerator

1999-05-03  Olivier Galibert  <galibert@pobox.com>

	* symeval.h (symbol_value_forward_lheader_initializer): Ditto.

	* lisp.h (DEFUN): Fix lrecord header initialisation.

1999-05-02  Andy Piper  <andy@xemacs.org>

	* objects-msw.c (mswindows_font_instance_truename): add a ';'.

	* ntproc.c (sys_kill): cast using MS mandated defines.

1999-04-29  Andy Piper  <andy@xemacs.org>

	* m/intel386.h: remove redundant definitions.

	* s/mingw32.h: new header for mingw32.

	* unexnt.c: (open_input_file): function moved to nt.c.
	(close_file_data): ditto.
	(rva_to_section): function moved to ntproc.

	* symsinit.h: declare syms_of_ntproc();

	* objects-msw.c (mswindows_font_instance_truename): new function.

	* ntproc.c: remove many warnings.
	(_sys_read_ahead): moved from nt.c and made static.
	(rva_to_section): moved from unexnt.c but not defined under
	mingw32.
	(win32_executable_type): implement what we can for mingw32
	headers.
	(sys_spawnve): fix bad MULE/GCPRO bug in filename handling.

	* ntheap.h: remove declarations of functions that are now static.

	* ntheap.c: support static heap.

	* nt.h: conditionalise X_OK definition.

	* nt.c: eliminate many warnings and support mingw32.
	(open_input_file): function moved from unexnt.c and made static
	(close_file_data): ditto.
	(_sys_read_ahead): moved to ntproc.c

	* emacs.c: make sure syms_of_ntptroc gets called under windows.

	* console-msw.h: support mingw32.
	* getloadavg.c: ditto.
	* ntplay.c: ditto.
	* sysdep.c: ditto.
	* sysdir.h: ditto.
	* systime.h: ditto.
	* systty.h: ditto.

	* config.h.in: don't turn on DEBUG_ENCAPSULATION by default because
	some systems don't have all of the encapsulated system calls.

	* callproc.c: warning elimination.
	* dired-msw.c: ditto.
	* process-nt.c: ditto.
	* realpath.c: ditto.

	* Makefile.in.in: tweak : and ; for building under mswindows.

1999-04-26  Michael Harnois  <mharnois@willinet.net>

	* eldap.c (allocate_ldap): Adapt to the new semantics of
	alloc_lcrecord_type().

1999-03-16  MORIOKA Tomohiko  <tomo@etl.go.jp>

	* file-coding.c (DECODE_HANDLE_END_OF_CONVERSION): fixed.

1998-09-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* Delete mule-coding.c and mule-coding.h because they are not
	used.

1999-04-22  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* objects.c (print_font_instance): Check for NILP(f->device),
	i.e. Vthe_null_font_instance.
	(font_instance_truename_internal): ditto.
	(Ffont_instance_properties): ditto.

1999-04-22  Olivier Galibert  <galibert@pobox.com>

	* lrecord.h (DECLARE_LRECORD): lrecord_implementation isn't an
	array anymore.

1999-04-22  Hrvoje Niksic  <hniksic@srce.hr>

	* Makefile.in.in (tests): Don't mention tests explicitly -- makes
	it easier to add new ones.

1999-04-22  Hrvoje Niksic  <hniksic@srce.hr>

	* symbols.c (reject_constant_symbols): Ditto.
	(init_symbols_once_early): Ditto.

	* print.c (print_symbol): Don't use ->obarray.

	* symbols.c (Funintern): Ditto.

	* alloc.c (Fmake_symbol): Don't set ->obarray.

	* lisp.h (struct Lisp_Symbol): Removed .obarray field.

	* symbols.c (init_symbols_once_early): Removed
	Vpure_uninterned_symbol_table.
	(Fintern): Don't store to ->obarray field.

1999-04-22  Hrvoje Niksic  <hniksic@srce.hr>

	* data.c (vars_of_data): Default debug_issue_ebola_notices to 0.
	(eq_with_ebola_notice): Remove abracadabra support.

1999-04-11  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.c (Fldap_search_internal): Add a new parameter `withdn' to
	retrieve the distinguished names of entries

1999-03-08  Martin Buchholz  <martin@xemacs.org>

	* lread.c (read_escape): Make hex escapes read only two hex digits.

1999-04-05  Olivier Galibert  <galibert@pobox.com>

	* Makefile.in.in: Remove puresize-adjust.h and recursive makes.
	* make-src-depend: Remove puresize-adjust.h.
	* src-headers: Remove puresize-adjust.h.
	* config.h.in: Kill everything purespace/gung-ho related.

	* dbxrc: Make gung-ho mandatory.
	* gdbinit: Ditto.

	* lrecord.h: Make gung-ho mandatory.  Remove pure flag and add
	c_readonly and lisp_readonly.  Remove implementation arrays.
	(C_READONLY_RECORD_HEADER_P): Added.
	(LISP_READONLY_RECORD_HEADER_P): Added.
	(SET_C_READONLY_RECORD_HEADER): Added.
	(SET_LISP_READONLY_RECORD_HEADER): Added.

	* lisp.h: Kill everything purespace/non gung-ho related.
	(CHECK_C_WRITEABLE): Added.
	(CHECK_LISP_WRITEABLE): Added.
	(C_READONLY): Added.
	(LISP_READONLY): Added.

	* lisp-union.h: Make gung-ho mandatory.
	* lisp-disunion.h: Ditto.

	* alloc.c: Kill everything purespace/non  gung-ho related. Fix all
	set_lheader_implementation calls.
	(c_readonly): Added.
	(lisp_readonly): Added.
	(make_string_nocopy): Added.
	(Fpurecopy):  Changed to do  nothing.   Kept the old documentation
	for reference purposes for the next patches.
	(sweep_lcrecords_1): Don't free C readonly lcrecords.
	(sweep_bit_vectors_1): Don't free C readonly bitvectors.
	(SWEEP_FIXED_TYPE_BLOCK): Don't free C readonly lrecords.

	* fns.c: Make gung-ho mandatory.
	(Fput): CHECK_IMPURE -> CHECK_LISP_WRITEABLE.
	(Fremprop): Ditto.
	(Ffillarray): Ditto.

	* data.c: Make gung-ho mandatory.
	(pure_write_error): Removed.
	(c_write_error): Added.
	(lisp_write_error): Added.
	(Fsetcar): CHECK_IMPURE -> CHECK_LISP_WRITEABLE.
	(Fsetcdr): Ditto.
	(Faset): Ditto.

	* symbols.c: Make gung-ho mandatory.  make_pure_pname ->
		  make_string or make_string_nocopy.  Fix various
		  alloc_lcrecord_type.

	* lread.c: Remove everything purespace related.
	(Flocate_file_clear_hashing): purified -> c_readonly.
	(locate_file): Ditto.
	(read_atom): make_pure_pname -> make_string.

	* emacs.c (Frun_emacs_from_temacs): Remove purespace stats
		  reporting.
	(Fdump_emacs): Ditto.

	* print.c (print_internal): Make gung-ho mandatory.
	* ntheap.c (sbrk): Ditto.
	* mem-limits.h (EXCEEDS_LISP_PTR): Ditto
	* symeval.h (symbol_value_forward_lheader_initializer): Ditto.

	* sheap.c (more_static_core): Remove puresize-adjust.h from
		  message.

	* syntax.c (complex_vars_of_syntax): make_pure_string ->
		  make_string_nocopy.
	* keymap.c (make_keymap): Fix alloc_lcrecord_type.
	(vars_of_keymap): make_pure_string -> make_string_nocopy.
	* events.c (deinitialize_event): Fix set_lheader_implementation.
	(zero_event): Ditto.
	* specifier.c (make_specifier_internal): Fix alloc_lcrecord.
	* menubar-x.c (set_frame_menubar): Fix alloc_lcrecord_type.
	* mule-charset.c (make_charset): Ditto.
	* console.c (allocate_console): Ditto.
	(complex_vars_of_console): Ditto.
	* file-coding.c (allocate_coding_system): Ditto.
	* device.c (allocate_device): Ditto
	* gui-x.c (gcpro_popup_callbacks): Ditto.
	* extents.c (allocate_extent_auxiliary): Ditto.
	(allocate_extent_info): Ditto.
	(copy_extent): Ditto.
	* glyphs.c (allocate_image_instance): Ditto.
	(allocate_glyph): Ditto.
	* frame.c (allocate_frame_core): Ditto.
	* database.c (allocate_database): Ditto.
	* tooltalk.c (make_tooltalk_message): Ditto.
	(make_tooltalk_pattern): Ditto.
	* rangetab.c (Fmake_range_table): Ditto.
	(Fcopy_range_table): Ditto.
	* process.c (make_process_internal): Ditto.
	* chartab.c (Fmake_char_table): Ditto.
	(make_char_table_entry): Ditto.
	(copy_char_table_entry): Ditto.
	(Fcopy_char_table): Ditto.
	* elhash.c (make_general_lisp_hash_table): Ditto.
	(Fcopy_hash_table): Ditto.
	* buffer.c (allocate_buffer): Ditto.
	(complex_vars_of_buffer): Ditto.
	* event-stream.c (allocate_command_builder): Ditto.
	* objects.c (Fmake_color_instance): Ditto.
	(Fmake_font_instance): Ditto.
	(vars_of_objects): Ditto.
	* toolbar.c (update_toolbar_button): Ditto.
	* window.c (allocate_window): Ditto.
	(make_dummy_parent): Ditto.
	(Fcurrent_window_configuration): Fix alloc_lcrecord.
	(vars_of_window): Fix make_lcrecord_list.
	* faces.c (allocate_face): Fix alloc_lcrecord_type. pure_list ->
		  Flist.
	* lstream.c (Lstream_new): Fix make_lcrecord_list.
	* opaque.c (make_opaque): Fix alloc_lrecord.
	(make_opaque_list): Fix alloc_lrecord_type.

1999-04-19  Hrvoje Niksic  <hniksic@srce.hr>

	* process.c (Fstart_process_internal): Ditto.

	* ntproc.c (sys_spawnve): Use Vlisp_EXEC_SUFFIXES when calling
	locate_file().

	* glyphs-x.c (x_locate_pixmap_file): Ditto.

	* glyphs-msw.c (mswindows_locate_pixmap_file): Fix call to
	locate_file().

	* emodules.c (vars_of_module): New variable Vmodule_extensions.
	(emodules_load): Use it when calling locate_file().

	* emacs.c (main_1): Use Vlisp_EXEC_SUFFIXES when calling
	locate_file().

	* callproc.c: Vlisp_EXEC_SUFFIXES: New variable.
	(vars_of_callproc): Initialize it.
	(Fcall_process_internal): Use it when calling locate_file().

	* alloc.c (disksave_object_finalization): Use
	Flocate_file_clear_hashing().

	* lread.c (Flocate_file_clear_hashing): Clear all hasing when
	given `t' as argument.

1999-04-18  Hrvoje Niksic  <hniksic@srce.hr>

	* lread.c (locate_file): Expand `pathel' when appropriate.
	(Flocate_file_clear_hashing): Expand path elements.
	(Flocate_file_clear_hashing): Use Vlocate_file_hash_table.

	* dired.c (make_directory_hash_table): Create the hash-table only
	if the directory open is successful.

	* lread.c (decode_mode_1): New function.
	(decode_mode): Ditto.
	(Flocate_file): Use them.
	(Flocate_file): Expand FILENAME.
	(locate_file_map_suffixes): New function.
	(locate_file_in_directory_mapper): New function.
	(locate_file_in_directory): Use locate_file_in_directory_mapper()
	and locate_file_map_suffixes().
	(locate_file_construct_suffixed_files): Use
	locate_file_map_suffixes().
	(locate_file_without_hash): Don't GCPRO path.
	(Flocate_file_clear_hashing): Use EXTERNAL_LIST_LOOP.
	(syms_of_lread): Remove Qlocate_file_hash_table.
	(locate_file_find_directory_hash_table): Use
	Vlocate_file_hash_table.
	(locate_file_refresh_hashing): Ditto.

	* lread.c: Renamed read_objects to Vread_objects.

1999-04-16  Olivier Galibert  <galibert@pobox.com>

	* mule-charset.c: Generally resync with fsf 20.3 charset
	interface.
	(make_charset): Add long and short name.  Use id instead of
	leading byte.
	(Fmake_charset): Ditto.
	(Fmake_reverse_direction_charset): Ditto.
	(Fcharset_property): Ditto.
	(Fcharset_short_name): Added.
	(Fcharset_long_name): Added.
	(Fcharset_description): Renamed from charset-doc-string.
	(syms_of_mule_charset): Synced symbols.
	(complex_vars_of_mule_charset): Synced charsets.

	* mule-charset.h: Removed leading byte (uses id instead), added
	short and long name.

1999-04-15  Hrvoje Niksic  <hniksic@srce.hr>

	* file-coding.c (Fdefine_coding_system_alias): New function.

1999-04-08  Olivier Galibert  <galibert@pobox.com>

	* mule-charset.c (complex_vars_of_mule_charset): Allow all iso8859
	and -ascii fonts for displaying ascii instead of iso8859-1 only.

1998-12-14  Hrvoje Niksic  <hniksic@srce.hr>

	* extents.c (set_extent_glyph_1): Make sure that the glyph we
	attach to the extent is valid.

1998-12-12  Hrvoje Niksic  <hniksic@srce.hr>

	* dired.c (user_name_completion): Mule-ize.
	(user_name_completion): Use xmalloc/xrealloc/xfree.
	(user_name_completion): Use DO_REALLOC.
	(user_name_completion): Cut down the number of static variables;
	use a structure.
	(user_name_completion): Username completion is always
	case-sensitive.

1998-12-06  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (base64_decode_1): Remove COUNTER.
	(base64_decode_1): Accept CRLF in addition to CR.
	(base64_decode_1): Disallow a stray character after final EOF; the
	check was probably a remnant of buggy recode code.

1998-12-05  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (init_provide_once): Provide `base64'.

1998-12-04  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (XMALLOC_UNBIND): Include SPECCOUNT argument, for clarity.
	(Fbase64_encode_region): If buffer is read-only, bail out early.
	(Fbase64_decode_region): Ditto.
	(Fbase64_encode_region): Initialize SPECCOUNT to pacify the
	compiler.
	(Fbase64_encode_string): Ditto.
	(Fbase64_decode_region): Ditto.
	(Fbase64_decode_string): Ditto.

1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>

	* dired.c (Fdirectory_files): Remove redundant code.

1999-03-05  Philip Aston  <philipa@parallax.co.uk>

	* frame-msw.c Make raise-frame restore minimised windows.

1999-03-05  Philip Aston  <philipa@parallax.co.uk>

	* device-msw.c: Fix DEFVAR format - Death to phantom quote, and
	add magic newline.

1999-03-05  Philip Aston  <philipa@parallax.co.uk>

	* toolbar-msw.c Consider captions when deciding whether to rebuild
	toolbar. This fixes the initial toolbar display for those of us
	who don't like captions. These patches applied by Andy Piper.

1999-03-12  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.13 is released

1999-03-12  SL Baur  <steve@xemacs.org>

	* file-coding.c: Guard ucs table initialization with ifdef MULE.

1999-03-10  Stephen J. Turnbull  <turnbull@sk.tsukuba.ac.jp>

	* file-coding.c:  docstring and comment improvements.
	(decode_ucs4)  flag possible data loss with comment.

1999-03-10  Martin Buchholz  <martin@xemacs.org>

	* file-coding.c (Fset_ucs_char): add CHECK_INT, CHECK_CHAR
	(ucs_to_char):
	(Fucs_char):
	(Fset_char_ucs):
	(decode_coding_ucs4):
	(encode_coding_ucs4):
	(detect_coding_utf8):
	(decode_coding_utf8):
	(encode_utf8):
	(encode_coding_utf8):
	Add CHECK_* macros where needed to avoid crashes.
	#ifdef out all composite character support using
	#ifdef ENABLE_COMPOSITE_CHARS
	Use normal XEmacs coding standards.
	Fix docstrings.
	Remove CODING_STREAM_COMPOSE, CODING_STREAM_DECOMPOSE.

1998-09-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* file-coding.c (make-coding-system): Add description about
	`ucs-4' and `utf-8'.
	(detection_state): Modify to implement ucs-4 and utf-8.
	(detect_coding_type): Likewise.
	(detect_coding_ucs4): New implementation.
	(detect_coding_utf8): New implementation.
	(encode_utf8): fixed.
	(syms_of_mule_coding): Rename `ucs4' and `utf8' to `ucs-4' and
	`utf-8'.

1998-09-08  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* file-coding.c (mule_char_to_ucs4): Encode 94x94 chars in ISO
	2022 registry to private area.

1998-09-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* file-coding.c (encode_utf8): New function.
	(encode_coding_utf8): New implementation.

1998-09-07  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* file-coding.c (ucs_to_mule_table): New variable; abolish
	`Vucs_to_mule_table'
	(mule_to_ucs_table): renamed from `Vmule_to_ucs_table'.
	(set-ucs-char): New function.
	(ucs_to_char): New function.
	(ucs-char): New function.
	(set-char-ucs): New function.
	(char-ucs): New function.
	(decode_ucs4): Use `ucs_to_char'.
	(complex_vars_of_mule_coding): Abolish `ucs-to-mule-table' and
	`mule-to-ucs-table'.

1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* chartab.h: EXFUN `Fget_char_table'.

	* file-coding.c (encode_ucs4): New function.
	(encode_coding_ucs4): Use `encode_ucs4'.

1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* file-coding.c (decode_coding_ucs4): New implementation.

1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* file-coding.c (decode_coding_ucs4): fixed.

	* file-coding.c (Vmule_to_ucs_table): New variable.
	(mule_char_to_ucs4): New function.
	(encode_coding_ucs4): New implementation.
	(complex_vars_of_mule_coding): Define variable
	`mule-to-ucs-table'.

1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* file-coding.c (decode_coding_utf8): New implementation.

1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* file-coding.c (decode_coding_utf8): fixed.

1998-09-06  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* file-coding.c (Vucs_to_mule_table): New variable.
	(decode_ucs4): Refer `Vucs_to_mule_table'.
	(complex_vars_of_mule_coding): Define variable
	`ucs-to-mule-table'.

1998-09-04  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* file-coding.c (detect_coding_ucs4): New function (not
	implemented yet).
	(decode_coding_ucs4): New function.
	(encode_coding_ucs4): New function (not implemented yet).
	(detect_coding_utf8): New function (not implemented yet).
	(decode_coding_utf8): New function.
	(encode_coding_utf8): New function (not implemented yet).
	(make-coding-system): New type `ucs4' and `utf8'.
	(coding-system-type): Likewise.
	(detection_state): Add `ucs4' and `utf8'.
	(detect_coding_type): Likewise.
	(mule_decode): Use `decode_coding_ucs4' and `decode_coding_utf8'.
	(mule_encode): Use `encode_coding_ucs4' and `encode_coding_utf8'.
	(decode_ucs4): New function (very incomplete).
	(syms_of_mule_coding): Add `ucs4' and `utf8'.

	* file-coding.h: Add definitions for UCS-4 and UTF-8.

1999-03-08  Martin Buchholz  <martin@xemacs.org>

	* mule-charset.c:
	(non_ascii_valid_char_p):
	(lookup_composite_char):
	(composite_char_string):
	(make-composite-char):
	(composite-char-string):
	(syms_of_mule_charset):
	(complex_vars_of_mule_charset):
	* mule-charset.h (LEADING_BYTE_COMPOSITE):
	(CHAR_LEADING_BYTE):
	(MAKE_CHAR):
	* file-coding.h (CODING_STATE_COMPOSITE):
	(CODING_STATE_ISO2022_LOCK):
	(iso_esc_flag):
	(LEADING_BYTE_COMPOSITE):
	* file-coding.c (struct iso2022_decoder):
	(decoding_closer):
	(reset_iso2022):
	(parse_iso2022_esc):
	(encode_coding_iso2022):
	#ifdef out all composite character support using
	#ifdef ENABLE_COMPOSITE_CHARS

	* alloc.c: Define lrecord_coding_system only if ! FILE_CODING

1999-03-04  Takeshi YAMADA <yamada@cslab.kecl.ntt.co.jp>

	* fns.c (Fbase64_encode_string): Calculate `allength' in the same
	way of `Fbase64_encode_region'.

1999-02-18  Katsumi Yamaoka   <yamaoka@jpl.org>

	* fns.c (base64_encode_1): Don't add a newline at the tail.

1999-03-08  Andy Piper  <andy@xemacs.org>

	* menubar-msw.c (displayable_menu_item): correct off-by-one &
	handling.

1999-03-07  Martin Buchholz  <martin@xemacs.org>

	* console-stream.h (struct stream_console):
	* event-unixoid.c (event_stream_unixoid_select_console):
	(event_stream_unixoid_unselect_console):
	* print.c (Fexternal_debugging_output):
	* sysdep.c (reset_one_device):
	* console-stream.c (stream_init_console):
	(stream_delete_console):
	(allocate_stream_console_struct): move into stream_init_console.
	(free_stream_console_struct): move into stream_delete_console.
	Use `fd' only for file descriptors.
	Therefore, rename members of struct stream_console.

	* systime.h: Unix98 says sys/time.h should define select(), but
	some systems define that in unistd.h.  So include that file always.

	* glyphs.h (MAYBE_IIFORMAT_METH): Don't use leading `_'.  Avoid
	multiple evaluation of first arg.  Do proper do {} while (0) wrapping.
	(HAS_IIFORMAT_METH_P): Prevent macro from being used in
	non-boolean context
	(MAYBE_IIFORMAT_DEVMETH): Use standard internal macro naming convention.

	* EmacsShell.c:
	* balloon_help.c:
	Add #include <stdio.h>.
	Some versions of assert.h use printf() without #include'ing stdio.h

	* free-hook.c (blocktype): Add gcpro5_type to blocktype.
	(log_gcpro): Remove unused variable FRAME.
	(show_gcprohist): Ansify.
	Comment the #endif's

	* frame-x.c (x_delete_frame): Don't use FRAME_X_SHELL_WIDGET(f)
	after it's just been XtDestroy'ed!

1999-02-18  Martin Buchholz  <martin@xemacs.org>

	* opaque.c (print_opaque):
	(sizeof_opaque):
	(equal_opaque):
	(hash_opaque):
	Egcs 1.1.1 seems to have a bug where
	INTP (p->size_or_chain)
	will crash XEmacs.  Fix by introducing intermediate variable.

	* sound.c (Fdevice_sound_enabled_p): Fix compiler warning.

	* dired.c (Fdirectory_files):
	(Ffile_name_completion):
	(Ffile_name_all_completions):
	(file_name_completion):
	- Use `directory' instead of `dirname' to sync with FSF Emacs and
	avoid compiler warnings.
	- Fix up docstrings so that C variables match documentation.

1999-03-05  Martin Buchholz  <martin@xemacs.org>

	* alloc.c: (garbage_collect_1): Reorg code to make scope of local
	variables as small as possible to help out the compiler and the maintainer.

	* alloc.c: (disksave_object_finalization):
	Set all the *-load-path variables to
	nil, not just load-path itself.  This gets the locate-file hash
	tables garbage collected BEFORE dump, and has the side effect of
	preventing crashes on OSF4.0+egcs.

	* alloc.c:
	* gdbinit:
	* dbxrc:
	- Clean up gdb/dbx debugging support.
	- Storing an EMACS_INT in an enum is not 64-bit clean!
	- So change the enum to a set of separate variables.
	- Add test cases to help debug the debugging support!
	- Add `lisp-shadows' and `run-temacs' targets for dbx.
	- Both dbx and gdb have been tested now.

1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.12 is released

1999-02-16  Kazuyuki IENAGA  <ienaga@jsys.co.jp>

	* device-x.c: Support to find best visual without flashing.

1999-03-02  Paul Keusemann  <pkeusem@visi.com>

	* database.c (berkdb_map): Add flags argument to cursor call (must
	  be 0 according to docs) required for Berkeley DB 2.6.4 and later.

1999-03-03  Martin Buchholz  <martin@xemacs.org>

	* hash.c:
	* hash.h:
	General cleanup.  Get free-hook.c working again.
	Remove unused functions:
	make_strings_hash_table, copy_hash, expand_hash_table.

	* malloc.c:
	* mem-limits.h:
	Always use new ANSI-style function prototypes.

	* unexalpha.c (unexec): Never use implicit int.

	* sgiplay.c (close_sound_file):
	(play_sound_file):
	(restore_audio_port):
	(play_sound_data):
	(audio_initialize):
	(play_internal):
	(drain_audio_port):
	(write_mulaw_8_chunk):
	(write_linear_chunk):
	(write_linear_32_chunk):
	(initialize_audio_port):
	(open_audio_port):
	(set_channels):
	(set_output_format):
	(adjust_audio_volume):
	(get_current_volumes):
	(parse_snd_header):
	Always use new ANSI-style function prototypes.
	Use unistd.h for missing prototypes.

	* unexelfsgi.c (round_up):
	(find_section):
	(unexec): Always use new ANSI-style function prototypes

	* elhash.c (struct Lisp_Hash_Table): rename golden to golden_ratio

	* console.h (struct console_methods): Always use full ANSI prototypes

	* emacs.c (__sti__iflPNGFile_c___): Always use full ANSI prototypes

1999-03-02  Andy Piper  <andy@xemacs.org>

	* event-stream.c (init_event_stream): make sure native mswindows
	gets an appropriate event loop.

1999-02-22  Andy Piper  <andy@xemacs.org>

	* frame-msw.c (mswindows_make_frame_visible): use SW_SHOW rather
	than SW_SHOWNORMAL to prevent resizing of maximised frames.
	(mswindows_raise_frame): remove comment.

1999-03-01  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.11 is released

1999-02-25  SL Baur  <steve@xemacs.org>

	* mule-charset.c (Qleading_byte): New variable to implement
	charset-leading-byte function.
	(Fcharset_property): Use it.
	(syms_of_mule_charset): Initialize it.
	From Kazuyuki IENAGA <ienaga@jsys.co.jp>

1999-02-17  Kazuo Oishi <oishi@ae.agr.yamaguchi-u.ac.jp>

	* glyphs-x.c (cononvert_EImage_to_XImage): correct
	bytes per pixel counting.

1999-02-15  Andy Piper  <andy@xemacs.org>

	* s/cygwin32.h (BROKEN_SIGIO): don't define this as it causes
	major lockups.

1999-02-16  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* fns.c (Fbase64_encode_string): New optional argument
	`NO_LINE_BREAK'.

1999-02-16  Martin Buchholz  <martin@xemacs.org>

	* gdbinit:  Fix up commands to run temacs.  Add lisp-shadows command.
	* alloc.c (xcalloc):  undef xcalloc, just like xmalloc

1999-02-10  Martin Buchholz  <martin@xemacs.org>

	* s/bsdos4.h: New file.  Port to BSDI BSD/OS 4.0.
	* xintrinsic.h:  Redo CONST support for X11 R4 compatibility.

1999-02-05  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.10 is released

1999-02-02  Gleb Arshinov  <gleb@cs.stanford.edu>

	* process-nt.c (nt_send_process):
	Fix for process-send-region/process-send-string breaking when size
	of the input > 128 chars: change maximum chunk size for process
	stream from 512 to 128, thus guaranteeing that ntpipe_shove_writer
	succeeds.

1999-02-02  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.9 is released

1999-01-30  Martin Buchholz  <martin@xemacs.org>

	* bytecode.c (funcall_compiled_function): Call
	UNBIND_TO_GCPRO instead of UNBIND_TO_GCPRO_VARIABLES_ONLY.

	* backtrace.h (UNBIND_TO_GCPRO_VARIABLES_ONLY):
	#ifdef 0 out unused macro.

1999-01-27  Martin Buchholz  <martin@xemacs.org>

	* gui.c (gui_parse_item_keywords_internal): Make static.

1999-01-21  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c: add xface support.
	(mswindows_xface_instantiate): new function copied from glyphs-x.c
	(image_instantiator_format_create_glyphs_mswindows): do device
	specific initialisation for xfaces.
	(xbm_create_bitmap_from_data): line data must be padded to a word
	boundary.

	* glyphs-x.c (xface_validate): moved to glyphs.c
	(xface_normalize): ditto.
	(xface_possible_dest_types): ditto.
	(image_instantiator_format_create_glyphs_x): do device specific
	initialisation for xfaces.

	* glyphs.h: declare xface symbol.

	* glyphs.c: move generic xface support here.
	(xface_validate): moved from glyphs-x.c
	(xface_normalize): ditto.
	(xface_possible_dest_types): ditto.
	(image_instantiator_format_create): xface declarations moved from
	glyphs-x.c.

1999-01-14  Adrian Aichner  <adrian@xemacs.org>

	* event-stream.c (vars_of_event_stream): Fixing documentation.

1999-01-17  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* glyphs-eimage.c (gif_instantiate): Correct handling of
	interlaced gifs to avoid writing past the end of the eimage
	buffer.

1999-01-13  Hrvoje Niksic  <hniksic@srce.hr>

	* search.c (Freplace_match): Handle single backslash at end of
	NEWTEXT correctly.

1999-01-12  William M. Perry  <wmperry@aventail.com>

	* eldap.c (Fldap_open): slow down interrupts around ldap_open to
	  avoid connection errors.

1999-01-12  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_update_line): backout change that
	shouldn't have gone ine.

1999-01-09  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.c (vars_of_ldap): Do no provide `ldap' here since it may
	collide with ldap.el

1999-01-11  Andy Piper  <andy@xemacs.org>

	* redisplay.h (DISPLAY_LINE_HEIGHT): new macro.
	(DISPLAY_LINE_YPOS): new macro.

	* redisplay-msw.c (mswindows_output_string): use it.
	(mswindows_output_pixmap): ditto.
	(mswindows_output_display_block): ditto.

	* redisplay-output.c (redisplay_output_display_block): new
	function. just call the devmeth, maybe insert some generic code
	here later.
	(compare_display_blocks): use it.
	(output_display_line): ditto.
	(redisplay_unmap_subwindows_maybe): new function. potentially
	unmap subwindows in the given area.

	* glyphs.c (reset_subwindow_cachels): unmap subwindows that we are
	resetting.

1999-01-10  J. Kean Johnston  <jkj@sco.com>

	* Makefile.in.in: Set value of moduledir
	- Changed DUMPENV to include $(MODULEPATH)
	- Added install rule to install header files for use by ellcc.

	* config.h.in: Added INHIBIT_SITE_MODULES
	- Added HAVE__DLERROR
	- Added HAVE_DLFCN_H
	- Added DLSYM_NEEDS_UNDERSCORE

	* dll.c: Removed.

	* emodules.c: New file containing dynamic loading code.

	* emodules.h: New file.

	* emacs.c: Added variables Vmodule_directory,
	Vsite_module_directory, Vconfigure_module_directory and
	Vconfigure_site_module_directory.
	- (main_1): Added new variable inhibit_site_modules and command
	line options `-no-site-modules' and `--no-site-modules'.
	- (main_1): Call syms_of_module() instead of syms_of_dll().
	- (main_1): Call vars_of_module().
	- (vars_of_emacs): Introduce inhibit-site-modules,
	module-directory, configure-module-directory,
	site-module-directory, and configure-site-module-directory to the
	Lisp reader.

	* lisp.h: Declare load_module and list_modules, as well as
	Vmodule_directory, Vsite_module_directory,
	Vconfigure_module_directory and Vconfigure_site_module_directory.

	* paths.h.in: Added PATH_MODULESEARCH and PATH_SITE_MODULES.
	- Added correct support for site-lisp directory.

	* symbols.c (defsubr): Modified to allow modules to add new subrs
	after dump time.
	- (defsubr_macro): Same.
	- (defvar_magick): Only use purespace when not initialized, so
	that loaded modules can still add symbols.

	* symsinit.h: Add definitions for syms_of_module(),
	vars_of_module().  Removed syms_of_dll().

	* sysdll.c: Include dlfcn.h if HAVE_DLFCN_H is defined.
	- (dll_variable): Take DLSYM_NEEDS_UNDERSCORE into account.
	- (dll_error): use _dlerror() if HAVE__DLERROR is defined.

	* s/sco5-shr.h (C_SWITCH_SYSTEM): Correct for modern gcc and
	explicitly pass -belf for native cc.

	* s/sco5.h (LIB_GCC): Use -print-libgcc-file-name instead of
	hard-coding the library name.

1999-01-01    <martin@xemacs.org>

	* device-x.c (Fx_set_font_path):
	Add proper cast to permit compilation under C++.

	* buffer.c (directory_is_current_directory):
	Add proper casts to permit compilation under C++.

1998-12-30  Damon Lipparelli  <lipp@primus.com>

	* event-msw.c (mswindows_wnd_proc):
	  Fixed failure when building with MSVC 5.

1998-12-29  Martin Buchholz  <martin@xemacs.org>

	* file-coding.c (decode_coding_iso2022):
	- Prevent crash when decoding ISO7/Lock detected files
	- the usual martin fiddling

1998-12-29  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* event-msw.c:
	  glyphs-msw.c:
	  Fixed failures when building with MSVC.
	* unexnt.c (dump_bss_and_heap):
	  Removed compiler warning by removing bss_data variable.

1998-12-18  Jim Radford  <radford@robby.caltech.edu>

	* device-x.c (Fx_set_font_path, Fx_get_font_path): New functions
	so that packages that distribute their own fonts can access them.

1998-12-28  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (mswindows_button_instantiate): cope with buttons
	that have an image provided.

	* glyphs.h: add Q_image decl.

	* glyphs-widget.c new functionality allowing images in
	widgets.
	(check_valid_glyph_or_image): new function to validate
	glyphs passed in through :image.
	(widget_normalize): new function. convert :image parameters into
	real glyphs if not already so.
	(widget_instantiate_1): mess with size parameters to be similar to
	:image if provided.
	(syms_of_glyphs_widget): new keyword :image.
	(image_instantiator_format_create_glyphs_widget): normalize
	buttons and allow :image.

1998-12-27  Andy Piper  <andy@xemacs.org>

	* frame-msw.c (mswindows_init_frame_1): warning elimination.

	* glyphs-widget.c (check_valid_anything): no-op function.
	(check_valid_callback): check callbacks in gui_items.
	(check_valid_symbol): as it sounds.
	(check_valid_string_or_vector): ditto.
	(widget_validate): modified for descriptors that are vectors or
	sequences of keyword/val pairs.
	(widget_instantiate_1): ditto.
	(image_instantiator_format_create_glyphs_widget): allow gui_item
	keywords in the instantiator.

	* gui.c (gui_parse_item_keywords_internal): renamed from
	gui_parse_item_keywords but taking error behaviour.
	(gui_parse_item_keywords): use it.
	(gui_parse_item_keywords_no_errors): ditto.
	(gui_item_add_keyval_pair): add Error_behavior flag and only
	signal invalid keywords if required.

	* gui.h: new gui signatures.

	* menubar.c (menu_parse_submenu_keywords): use new
	gui_item_add_keyval_pair signature.

	* s/cygwin32.h: modify PTY_ITERATION to eliminate warnings.

1998-12-28  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.8 is released.

1998-12-28  Martin Buchholz  <martin@xemacs.org>

	* editfns.c (get_home_directory):
	(user-home-directory): Simplify.


	* callproc.c (child_setup):
	- Environment variables were being passed to inferior processes
	  using internal encoding.
	- Convert to external encoding.
	- Rename local var `tem' to better name `tail'.
	- Use Flength instead of `manual' calculation.

	* buffer.c (kill-buffer):
	(record-buffer):
	(set-buffer-major-mode):
	(current-buffer):
	- Fix up parameter names to correspond to docstrings.
	- Don't use `bufname' when a buffer will do as well.
	- Remove one unneeded GCPRO.

	* buffer.h (initial_directory):
	* buffer.c (init_initial_directory):
	- use correct conversions between internal and external format.
	(directory_is_current_directory): new function
	(init_buffer): convert initial_directory to internal format.
	- solve crashes when current working directory is non-ASCII.

	* alloc.c (xmalloc):
	(xcalloc):
	(xrealloc):
	- remove stupid casts, since XEmacs requires an ANSI C system.
	(lrecord_type_index): replace abort() with more readable assert().

	(reset_lcrecord_stats): remove.
	(sweep_lcrecords_1):
	- replace call to reset_lcrecord_stats() with call to xzero().

1998-12-27  Martin Buchholz  <martin@xemacs.org>

	* process-unix.c (unix_create_process):
	- Fix crash invoking program with non-ASCII name.
	  Try invoking xemacs with SHELL=/bin/sh, then M-x shell.
	- Remove unused variable `env'.
	- Rename `temp' to better name `save_errno'.
	- Reorganize code for clarity.  But still too chicken to nuke the
	  BSD 4.2 support.

1998-12-24  Martin Buchholz <martin@xemacs.org>

	* XEmacs 21.2.7 is released.

1998-12-23  Martin Buchholz  <martin@xemacs.org>

	* glyphs.c (decode_device_ii_format):
	- Fix indentation.
	- Use GET_C_STRING_FILENAME_DATA_ALLOCA with char *, not Extbyte *.

	* glyphs-x.c (x_subwindow_instantiate):
	- A image instance mask was being assigned to a image instance type!
	- X_SUBWINDOW_INSTANCE_DATA (ii) is not an lvalue in C++.

	* glyphs-msw.c (mswindows_initialize_dibitmap_image_instance):
	Fix indentation.
	* glyphs-x.h: Make indentation consistent.

	* emacs.c (Fdump_emacs): Remove Steve Martin merge artifacts.

	* glyphs-widget.c (check_valid_glyph): Warning suppression.
	- Make it static
	- #ifdef it out, since it's not actually used yet (FIX THIS!)

	* glyphs-widget.c:
	* glyphs.h:
	Move declarations of decode_device_ii_format and
	decode_image_instantiator_format into glyphs.h where they belong.

1998-12-22  Martin Buchholz  <martin@xemacs.org>

	* frame-x.c (x_delete_frame): Revert part of my changes at the
	suggestion of Gunnar Evermann - unfortunately no one really
	understands this code.

	* callproc.c (init_callproc): code cleanup.

	* free-hook.c (malloc):
	(check_malloc):
	(__free_hook):
	(__malloc_hook):
	(__realloc_hook):
	(block_input_malloc):
	(block_input_realloc):
	* device-x.c (x_delete_device):
	* emacs.c (voodoo_free_hook):
	* events.c (print_event):
	(CHECK_EVENT_TYPE):
	(CHECK_EVENT_TYPE2):
	(CHECK_EVENT_TYPE3):
	Use proper prototypes.
	Make C_E_T macros a little faster.
	Pedantic fiddly little changes.  You really don't care.

1998-12-22  Andy Piper  <andy@xemacs.org>

	* redisplay-output.c (redisplay_clear_region): make sure that
	fg/bg colors get set even when we are in the border area.

1998-12-13  Martin Buchholz  <martin@xemacs.org>

	* console-msw.c: Function definitions follow coding standards
	- This prevents e.g. find-tag on Lisp_Event finding DEVENT

1998-12-11  Martin Buchholz  <martin@xemacs.org>

	* events.h (struct timeout_data):
	* event-tty.c (tty_timeout_to_emacs_event):
	* event-msw.c (mswindows_wm_timer_callback):
	* event-Xt.c (Xt_timeout_to_emacs_event):
	* event-msw.c (mswindows_cancel_dispatch_event):
	Make sure Lisp_Objects inside events are initialized to Qnil, not
	Qnull_pointer, which is now illegal.

1998-12-10  Martin Buchholz  <martin@xemacs.org>

	* lisp.h: Fix up prototypes to match alloc.c

1998-12-08  Martin Buchholz  <martin@xemacs.org>

	* windowsnt.h: Remove `support' for using index and rindex

	* filelock.c (current_lock_owner):
	- Change uses of index -> strchr, rindex -> strrchr

1998-12-07  Martin Buchholz  <martin@xemacs.org>

	* sysdep.c (set_descriptor_non_blocking):
	Since O_NONBLOCK is now always #defined, make use of fcntl
	conditional on F_SETFL being defined.

	* console-msw.c (DHEADgER):
	(DOPAQUE_DATA):
	(DEVENT):
	(DCONS):
	(DCONSCDR):
	(DSTRING):
	(DVECTOR):
	(DSYMBOL):
	(DSYMNAME):
	- max_align_t should not be visible to the user of the
	  XOPAQUE_DATA macro.
	- use Bufbyte instead of char
	- parens around (FOOP (obj)) are always redundant.
	  If they were necessary, we should fix the macro instead.
	- Always use string_data(foo) instead of foo->data.


1998-12-06  Martin Buchholz  <martin@xemacs.org>

	* frame-msw.c (mswindows_init_frame_1):
	- use make_lisp_hash_table, not Fmake_hash_table
	- include elhash.h

	* lisp.h:
	* alloc.c (make_vector): remove travesty
	(Fmake_vector):
	(make_pure_vector):
	(pure_cons):
	(make_bit_vector_internal):
	(make_bit_vector):
	(make_bit_vector_from_byte_vector):
	(Fmake_bit_vector):
	- make vector_equal a little faster.
	- Don't use variable name `new'.
	- Use size_t instead of EMACS_INT.
	- usual Martin-style pointless bit-twiddling.

	* fns.c (mapcar1):
	(Fmapconcat):
	(Fmapcar):
	(Fmapvector):
	Make mapcar faster.  In particular, make
	  (mapc #'identity long-string)
	MUCH faster under Mule.
	* tests/automated/lisp-tests.el: Test 'em!

	* bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded
	bytecode.

1998-12-01  Martin Buchholz  <martin@xemacs.org>

	* menubar-x.c (menu_item_descriptor_to_widget_value_1): Always use
	Qnil, not NULL, to initialize `null' Lisp_Objects.

1998-11-29  Hrvoje Niksic  <hniksic@srce.hr>

	* specifier.c (display_table_validate): Update.

	* redisplay.c (create_text_block): Use them.

	* glyphs.c (display_table_entry): New function.
	(get_display_tables): Ditto.

1998-12-15  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.c (toplevel): Mention that eldap.c compiles with
	OpenLDAP libs
	(Fldap_open): Use `GET_C_STRING_OS_DATA_ALLOCA'
	(Fldap_search_internal): Ditto

1998-12-11  Martin Buchholz  <martin@xemacs.org>

	* event-msw.c (mswindows_cancel_dispatch_event):
	Gratuitous code prettification


1998-12-07  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fnconc): Fix use of wrong_type_argument().

	* floatfns.c (Ffloat): Fix docstring.
	(Ffloat): Fix use of wrong_type_argument().
	(Fabs): Ditto.
	(extract_float): Ditto.
	(Fceiling): Ditto.
	(Fround): Ditto.
	(Ftruncate): Ditto.

1998-12-06  Martin Buchholz  <martin@xemacs.org>

	* frame-msw.c (mswindows_init_frame_1):
	- use make_lisp_hash_table, not Fmake_hash_table
	- include elhash.h

	* lisp.h:
	* alloc.c (make_vector): remove travesty
	(Fmake_vector):
	(make_pure_vector):
	(pure_cons):
	(make_bit_vector_internal):
	(make_bit_vector):
	(make_bit_vector_from_byte_vector):
	(Fmake_bit_vector):
	- make vector_equal a little faster.
	- Don't use variable name `new'.
	- Use size_t instead of EMACS_INT.
	- usual Martin-style pointless bit-twiddling.

	* fns.c (mapcar1):
	(Fmapconcat):
	(Fmapcar):
	(Fmapvector):
	Make mapcar faster.  In particular, make
	  (mapc #'identity long-string)
	MUCH faster under Mule.
	* tests/automated/lisp-tests.el: Test 'em!

	* bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded
	bytecode.

1998-12-02  Didier Verna  <didier@xemacs.org>

	* menubar-x.c (menu_item_descriptor_to_widget_value_1): set the
	accelerator field to nil for labels.

1998-12-16  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* menubar-msw.c (displayable_menu_item):
	  Escape occurrences of '&' and support occurrences of the
	 '%_' accelerator indicator in menus.

1998-11-26  Didier Verna  <didier@xemacs.org>

	* dired.c (Fdirectory_files): use make_string instead of
	make_ext_string on the filename. The conversion external->internal
	format is already done in sys_readdir.

1998-12-15  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* glyphs.c (normalize_image_instantiator): GCPRO instantiator

1998-12-16  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* event-msw.c
	  (Belatedly) added Kirill to list of file's authors.
	  emacs_mswindows_quit_p: Don't process WM_PAINT messages in
	  quit checking. WM_PAINT messages cause redisplay, but
	  windows' states are not necessarily stable when this function
	  gets called.

1998-12-17  Andy Piper  <andy@xemacs.org>

	* strftime.c (zone_name): CONSTify.

1998-12-15  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (mswindows_combo_instantiate): ditto.
	(mswindows_widget_property): return Qunbound when no property available.
	(mswindows_button_property): ditto.
	(mswindows_combo_property): ditto.
	(mswindows_widget_set_property): ditto.

	* glyphs-widget.c (check_valid_item_list): use properties.

	* glyphs.h (struct Lisp_Image_Instance): we have properties now.

	* glyphs.c (Fset_image_instance_property): allow setting of arbitrary properties.
	(Fimage_instance_property): ditto.
	* glyphs-widget.c (widget_property): ditto.
	(widget_set_property): ditto.

	* frame-msw.c (mswindows_set_frame_pointer): SetCursor() as well
	as setting the class cursor so that GC actually changes the
	cursor.

	* config.h: don't undef MAIL_USE_POP.

1998-12-13  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c
	(image_instantiator_format_create_glyphs_mswindows): line ->
	label.
	(mswindows_label_instantiate): ditto. Play with window flags.
	(image_instantiator_format_create_glyphs_mswindows): ditto.
	(vars_of_glyphs_mswindows): provide Qlabel as we support it now.

	* glyphs-widget.c (widget_instantiate_1): re-jig autosizing to
	cope with lines and labels.
	(static_instantiate): use widget_instantiate_1.
	line -> label.
	(image_instantiator_format_create_glyphs_widget): ditto.

1998-12-10  Andy Piper  <andy@xemacs.org>

	* Makefile.in.in (objs): add gui.o

1998-12-10  Andy Piper  <andy@xemacs.org>

	* gui.c: adjust defines of HAVE_POPUPS so that we can build with
	no window system.

1998-12-09  Andy Piper  <andy@xemacs.org>

	* glyphs.c (finalize_image_instance): mark glyphs changed when an
	image instance is removed so that the subwindow cache gets reset
	and thus destroyed images get GC'd.

1998-12-08  Andy Piper  <andy@xemacs.org>

	* gui-msw.c (mswindows_handle_gui_wm_command): call
	MARK_SUBWINDOWS_CHANGED.

	* glyphs-msw.c (mswindows_finalize_image_instance): make sure
	subwindows really get deleted.

	* redisplay.c: new variable subwindows_changed[_set].
	(redisplay_window): use it.
	(redisplay_frame): ditto.
	(redisplay_device): ditto.
	(redisplay_without_hooks): ditto.

	* device.h (MARK_DEVICE_SUBWINDOWS_CHANGED): new macro for
	subwindows redisplay as per glyphs equivalent.
	* redisplay.h: ditto.
	(MARK_SUBWINDOWS_CHANGED): ditto.
	(RESET_CHANGED_SET_FLAGS): ditto.
	* frame.h (MARK_FRAME_SUBWINDOWS_CHANGED): ditto.

1998-12-07  Andy Piper  <andy@xemacs.org>

	* frame.c (Fmake_frame): reset subwindow cachels on non-stream
	frames.

	* redisplay.c (redisplay_frame): invalidate subwindow cachels.

	* event-msw.c (mswindows_wnd_proc): catch the various WM_CTLCOLOR*
	messages and paint widget glyphs as appropriate with their face fg
	& bg.

1998-12-06  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (vars_of_glyphs_mswindows): provide widget types
	here rather than in glyphs-widget - do this because we only want
	to provide what is really available.

	* glyphs.c (Fimage_instance_property): new function to get the
	properties of image instances. wires through to console specific
	methods and then to widget specific methods.
	(Fset_image_instance_property): ditto but for setting widget properties.
	(check_valid_face): make extern so that it can be used elsewhere.

	* glyphs-widget.c (widget_property): new function. gets the
	properties of widgets in general and wires the function through to
	widget specific ones.
	(widget_set_property): ditto but for setting widget properties.

	* glyphs-msw.c (mswindows_combo_instantiate): Add functionality to
	add items to the list. Play with window styles a bit to get the
	desired effect.
	(mswindows_widget_property): break out specific widget properties.
	(mswindows_button_property): new function. gets the checked state
	of a button.
	(mswindows_combo_property): new function. gets the current
	selection in the combo box.
	(mswindows_widget_set_property): new function. sets specific
	properties of specific widgets.

	* glyphs-widget.c (check_valid_item_list): new function. check
	that items for a combo-box are just a list of strings.
	(combo_validate): new function. check there is an item list.
	(widget_instantiate_1): new function. renamed from
	widget_instantiate so that we can do slightly different things for
	other widgets.
	(widget_instantiate): call widget_instantiate_1.
	(combo_instantiate): new function to instantiate combo boxes,
	defaults height to the pixel height of the number of items in the
	box.
	(syms_of_glyphs_widget): move widget keywords here.
	(image_instantiator_format_create_glyphs_widget): use new combo
	functions.

1998-12-04  Andy Piper  <andy@xemacs.org>

	* event-msw.c (mswindows_wnd_proc): mule-ize.

	* glyphs.c (pixmap_to_lisp_data): mule-ize.

	* glyphs-msw.c (extract_xpm_color_names): mule-ize.
	(resource_name_to_resource): ditto.
	(mswindows_resource_instantiate): ditto.
	(mswindows_widget_instantiate): ditto.
	(mswindows_widget_set_property): ditto.

	* redisplay-output.c (redisplay_output_subwindow): don't show
	subwindows if they are obscured at the edge of the frame, emacs
	gets into some sort of redisplay loop otherwise.

	* gui.h: prototype gui_item_selected_p.

	* gui.c (gui_item_selected_p): new function to determine the
	selected state of a gui_item.

	* frame.h (struct frame): add subwindows_changed flag.

	* redisplay.c (redisplay_frame): call update_frame_subwindows ().

	* glyphs.c (update_subwindow): new function to update a
	subwindow's state.
	(update_frame_subwindows): new function to update all the
	subwindows on a frame.

	* console.h (struct console_methods): add update_subwindow.

	* glyphs-msw.c (mswindows_widget_property): return selected state
	for selected property.
	(mswindows_update_subwindow): new function. updates widget glyphs
	in redisplay as per menubars or toolbars e.g. selected state.
	(console_type_create_glyphs_mswindows): add update_subwindow.

1998-12-03  Andy Piper  <andy@xemacs.org>

	* console-tty.c (syms_of_console_tty): MULE -> FILE_CODING since
	tty coding system things are such.

	* glyphs-widget.c (widget_face_font_info): new function for
	pulling out height and width metrics for a widget's face.
	(widget_text_to_pixel_conversion): calculate pixel sizes of text
	for widgets.

	* event-msw.c (mswindows_drain_windows_queue): translate messages
	that are destined for subwindows. This makes edit fields interact
	with the keyboard correctly.
	nuke warnings by #ifndef'ing out stuff not required by msg select().

	* glyphs.h (INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM): new
	macro defining the iiforma without the symbol required by widget.
	(INITIALIZE_IMAGE_INSTANTIATOR_FORMAT): use it.

	* general.c (syms_of_general): add Qwidget, Qselected.

	* faces.c (complex_vars_of_faces): add widget face inheriting from
	gui-element face.

1998-11-09  Andy Piper  <andy@xemacs.org>

	* window.h (struct window): add a cache of subwindows on a
	per-window basis.

	* window.c (mark_window): mark the subwindow_instance_cache.
	(allocate_window): initialise the subwindow instance_cache.

	* toolbar-x.c (x_output_toolbar): call redisplay_clear_region
	instead of the devmeth.
	(x_clear_toolbar): ditto.

	* redisplay-x.c (x_output_display_block): call
	redisplay_output_subwindow for subwindows and widgets.

	* redisplay-tty.c (tty_output_display_block): add IMAGE_WIDGET to
	types to do nothing for.

	* lisp.h: declare new widget/subwindow symbols.

	* glyphs.c (image_instantiate): cache subwindows on a per-window
	basis.
	(subwindow_possible_dest_types): new function for subwindow dest
	types.
	(subwindow_instantiate): generic instantiation of a
	subwindow. specialised by device multi-methods.
	(Fsubwindowp): moved from glyphs-x.c. adapted for glyph-based
	subwindows.
	(Fimage_instance_subwindow_id): ditto.
	(Fresize_subwindow): ditto.
	(Fforce_subwindow_map): ditto.

	* glyphs-x.c (x_print_image_instance): remove subwindow
	stuff. Handled genrically in glyphs.c.
	(x_image_instance_equal): ditto.
	(x_image_instance_hash): ditto.
	(x_finalize_image_instance): delete subwindows when required.
	(mark_subwindow) (print_subwindow) (finalize_subwindow)
	(subwindow_hash) (Fmake_subwindow): deleted because of new,
	glyph-based, subwindow implementation.
	(Fsubwindow_height) (Fsubwindow_width) (Fsubwindow_xid): aliased
	in glyphs.el
	(Fsubwindowp) (Fresize_subwindow) (Fforce_subwindow_map): moved to
	glyphs.c.
	(x_unmap_subwindow): new function to unmap X subwindows.
	(x_map_subwindow): new function to map X subwindows.
	(x_subwindow_instantiate): new function to instantiate X
	subwindows.
	(x_resize_subwindow): new function to resize X subwindows.
	(console_type_create_glyphs_x): add subwindow functions.
	(image_instantiator_format_create_glyphs_x): add device
	multi-methods for xpm, xbm and subwindow.

	* glyphs.el (subwindow-xid): old alias for new subwindow functions.
	(subwindow-width): ditto.
	(subwindow-height): ditto.

	* glyphs-msw.c (mswindows_widget_instantiate): new function for
	generally instantiating ms subwindows. Used by
	mswindows_*_instantiate.
	(mswindows_edit_instantiate): instantiate an edit field on a
	mswindows frame.

1998-11-04  Andy Piper  <andy@xemacs.org>

	* symsinit.h: declare new functions.

	* redisplay.h: declare new functions.

	* redisplay-x.c (x_output_display_block): call
	redisplay_clear_region rather than x_clear_region.
	(x_output_string): ditto.
	(x_output_pixmap): ditto.
	(x_clear_to_window_end): ditto.
	(x_output_eol_cursor): ditto.
	(x_clear_region): only do X specific things. other duties handled
	in redisplay_clear_region.

	* redisplay-tty.c (tty_clear_region): do tty specific things - some
	duties moved to redisplay_clear_region.

	* redisplay-output.c (clear_left_border): use
	redisplay_clear_region instead of device method.
	(clear_right_border): ditto.
	(output_display_line): ditto.
	(redisplay_output_subwindow): ditto.
	(redisplay_clear_top_of_window): ditto.
	(redisplay_clear_region): perform duties previously handled by
	device methods. call the appropriate device method at the
	end. unmap subwindows if necessary.

	* redisplay-msw.c (mswindows_output_string): use
	redisplay_clear_region instead of mswindows_clear_region.
	(mswindows_clear_to_window_end): ditto.
	(mswindows_output_display_block): output subwindows when required.
	(mswindows_clear_region): only do mswindows specific things,
	everything else is now handled in redisplay_clear_region.

	* gui.h: add item id hash defines and declare function prototypes.

	* gui.c (mark_gui_item): new function for marking gui_items.
	(gui_item_hash): generic hash function for generating command ids
	for gui_items.

	* gui-msw.c: new file.
	(mswindows_handle_gui_wm_command): new function to handle widget
	callbacks.

	* glyphs.h (MAYBE_IIFORMAT_DEVMETH): new function for device
	multi-methods.
	(IIFORMAT_HAS_SHARED_METHOD): ditto.
	(DEFINE_DEVICE_IIFORMAT): ditto.
	(INITIALIZE_DEVICE_IIFORMAT): ditto.
	(struct Lisp_Image_Instance): add widget and subwindow data plus
	appropriate access functions.

	* glyphs.c (decode_device_ii_format): new function for decoding
	image instantiator functions based on a device type as well as an
	image format.
	(decode_image_instantiator_format): just call
	decode_device_ii_format with nil device.
	(add_entry_to_device_ii_format_list): new function for per device
	method instances.
	(add_entry_to_image_instantiator_format_list): just call
	add_entry_to_device_ii_format_list with nil device.
	(check_valid_vector): new function.
	(instantiate_image_instantiator): instantiate using per-format
	method and then per-format-per-device method (device
	multi-methods). signal an error if neither is possible.
	(mark_image_instance): cope with subwindows and widgets.
	(print_image_instance): ditto.
	(image_instance_equal): ditto.
	(image_instance_hash): ditto.
	(allocate_glyph): ditto.
	(glyph_width): ditto.
	(glyph_height_internal): ditto.
	(xpm_instantiate): removed because of device multi-methods.
	(mark_subwindow_cachels): new cachel functions for caching
	instantiated subwindows on a per-frame basis. mostly copied from
	glyph cachel functions.
	(update_subwindow_cachel_data): ditto.
	(add_subwindow_cachel): ditto.
	(get_subwindow_cachel_index): ditto.
	(reset_subwindow_cachels): ditto.
	(mark_subwindow_cachels_as_not_updated): ditto.
	(unmap_subwindow): generic unmapping of subwindows based on cachel
	data.
	(map_subwindow): ditto.
	(initialize_subwindow_image_instance): generic initialisation of
	subwindow data.
	(syms_of_glyphs): add widget keywords.

	* glyphs-x.h (struct x_subwindow_data): convert Lisp_Subwindow to
	x_subwindow_data.

1998-11-04  Andy Piper  <andy@xemacs.org>

	* glyphs-widget.c: new file for instantiating widget type glyphs.
	(widget_possible_dest_types): new general dest type function for
	widgets.
	(widget_validate): ditto.
	(initialize_widget_image_instance): ditto
	(widget_instantiate): ditto. Sets up fg/bg, gui_item parsing
	before handing on control to device multi-methods.
	(syms_of_glyphs_widget): new function.
	(image_instantiator_format_create_glyphs_widget): new function,
	added placeholders for button, edit, combo, scrollbar
	(vars_of_glyphs_widget): new function.

	* glyphs-msw.h (WIDGET_INSTANCE_MSWINDOWS_HANDLE): new define for
	storing window ids of widgets.

	* glyphs-msw.c (mswindows_finalize_image_instance): cope with
	deletion of widget and subwindow glyphs.
	(mswindows_unmap_subwindow): new device function for unmapping
	subwindows on a msw frame.
	(mswindows_map_subwindow): ditto.
	(mswindows_register_image_instance): register instantiated widgets
	with the widget hashtable.
	(mswindows_button_instantiate): instantiate a button type widget
	on an msw frame.
	(mswindows_subwindow_instantiate): instanttiate a subwindow on a
	mswindows frame.
	(image_instantiator_format_create_glyphs_mswindows): add device
	multi-methods for xbm, xpm, subwindow, edit and button.

	* frame.h (struct frame): add subwindow_cachels dynarr for caching
	information about subwindows visible on the current frame. used by
	redisplay_clear_region to unmap subwindows as required.

	* frame.c (mark_frame): mark subwindow_cachels.
	(allocate_frame_core): instantiate subwindow_cachels.

	* frame-msw.c (mswindows_init_frame_1): instntiate and mark the
	widget hashtable.

	* event-msw.c (mswindows_wnd_proc): add call to
	mswindows_handle_gui_wm_command to handle widget callbacks.

	* emacs.c (main_1): add calls to glyphs-widget initialisation
	routines.

	* console.h (struct console_methods): add
	unmap/map_subwindow_method for use be redisplay_clear_region to
	map and unmap subwindows. Remove xpm and xbm stuff - now dealt
	with by image instantiator multi-methods. Add
	resize_subwindow_method.

	* console-stream.c (stream_clear_region): change signature to
	match new generic clear region function.

	* Makefile.in.in: add glyphs-widget.o to list of objects.

	* console-msw.h (struct mswindows_frame): add widget hashtable for
	wiring command ids to callbacks.

1998-12-16  Andy Piper  <andy@xemacs.org>

	* XEmacs 21.2.6 is released

1998-12-08  Hrvoje Niksic  <hniksic@srce.hr>

	* md5.c (Fmd5): Correctly initiate string input stream.

	* Makefile.in.in (tests): Add md5-tests.el.

1998-12-06  Martin Buchholz  <martin@xemacs.org>

	* lisp.h:
	* alloc.c (make_vector): remove travesty
	(Fmake_vector):
	(make_pure_vector):
	(pure_cons):
	(make_bit_vector_internal):
	(make_bit_vector):
	(make_bit_vector_from_byte_vector):
	(Fmake_bit_vector):
	- make vector_equal a little faster.
	- Don't use variable name `new'.
	- Use size_t instead of EMACS_INT.
	- usual Martin-style pointless bit-twiddling.

	* fns.c (mapcar1):
	(Fmapconcat):
	(Fmapcar):
	(Fmapvector):
	Make mapcar faster.  In particular, make
	  (mapc #'identity long-string)
	MUCH faster under Mule.
	* tests/automated/lisp-tests.el: Test 'em!

1998-12-06  Martin Buchholz  <martin@xemacs.org>

	* bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded
	bytecode.

1998-12-13  Martin Buchholz  <martin@xemacs.org>

	* console-msw.c: Function definitions follow coding standards
	- This prevents e.g. find-tag on Lisp_Event finding DEVENT

1998-12-11  Martin Buchholz  <martin@xemacs.org>

	* events.h (struct timeout_data):
	* event-tty.c (tty_timeout_to_emacs_event):
	* event-msw.c (mswindows_wm_timer_callback):
	* event-Xt.c (Xt_timeout_to_emacs_event):
	* event-msw.c (mswindows_cancel_dispatch_event):
	Make sure Lisp_Objects inside events are initialized to Qnil, not
	Qnull_pointer, which is now illegal.

1998-12-10  Martin Buchholz  <martin@xemacs.org>

	* lisp.h: Fix up prototypes to match alloc.c

1998-12-09  Andy Piper  <andy@xemacs.org>

	* glyphs-msw.c (init_image_instance_from_xbm_inline): don't use
	XSETINT for assigning lisp objects.

1998-12-07  Martin Buchholz  <martin@xemacs.org>

	* opaque.h:
	* console-msw.c (DHEADER):
	(DOPAQUE_DATA):
	(DEVENT):
	(DCONS):
	(DCONSCDR):
	(DSTRING):
	(DVECTOR):
	(DSYMBOL):
	(DSYMNAME):
	- max_align_t should not be visible to the user of the
	  XOPAQUE_DATA macro.
	- use Bufbyte instead of char
	- parens around (FOOP (obj)) are always redundant.
	  If they were necessary, we should fix the macro instead.
	- Always use string_data(foo) instead of foo->data.

1998-12-07  Martin Buchholz  <martin@xemacs.org>

	* sysdep.c (set_descriptor_non_blocking):
	Since O_NONBLOCK is now always #defined, make use of fcntl
	conditional on F_SETFL being defined.

1998-12-09  Andy Piper  <andy@xemacs.org>

	* menubar-msw.c (mswindows_handle_wm_command): add back in checks
	that got removed in the merge

1998-11-30  Greg Klanderman  <greg@alphatech.com>

	* dired.c (vars_of_dired): bugfix for previous conditionalization
	of user-name-completion on non- Windows NT.

1998-12-08  Martin Buchholz  <martin@xemacs.org>

	* windowsnt.h: Remove `support' for using index and rindex

	* filelock.c (current_lock_owner):
	- Change uses of index -> strchr, rindex -> strrchr

1998-12-06  Martin Buchholz  <martin@xemacs.org>

	* frame-msw.c (mswindows_init_frame_1):
	- use make_lisp_hash_table, not Fmake_hash_table
	- include elhash.h

1998-12-05  XEmacs Build Bot <builds@cvs.xemacs.org>

	* XEmacs 21.2.5 is released

1998-11-30  Martin Buchholz  <martin@xemacs.org>

	* xselect.c (receive_incremental_selection):
	* xselect.c (x_get_window_property):
	* xmu.c (XmuReadBitmapDataFromFile):
	* xmu.c (XmuCursorNameToIndex):
	* xgccache.c (describe_gc_cache):
	* xgccache.c (gc_cache_lookup):
	* xgccache.c (free_gc_cache):
	* xgccache.c (make_gc_cache):
	* window.h:
	* window.c (map_windows_1):
	* window.c (Fother_window_for_scrolling):
	* window.c (window_scroll):
	* window.c (change_window_height):
	* window.c (Fsplit_window):
	* window.c (window_left_gutter_width):
	* window.c (window_modeline_height):
	* window.c (invalidate_vertical_divider_cache_in_window):
	* window.c (window_needs_vertical_divider_1):
	* window.c (update_mirror_internal):
	* window.c (SET_LAST_FACECHANGE):
	* widget.c (Fwidget_plist_member):
	* unexec.c (copy_text_and_data):
	* unexcw.c (copy_executable_and_dump_data_section):
	* tooltalk.doc:
	* tooltalk.c (struct Lisp_Tooltalk_Pattern):
	* tooltalk.c (struct Lisp_Tooltalk_Message):
	* toolbar.h (struct toolbar_button):
	* toolbar.c (default_toolbar_visible_p_changed_in_window):
	* toolbar.c (recompute_overlaying_specifier):
	* toolbar.c (toolbar_validate):
	* toolbar.c (toolbar_button_at_pixpos):
	* toolbar.c (get_toolbar_coords):
	* toolbar.c (update_frame_toolbars):
	* toolbar-x.c:
	* toolbar-msw.c (mswindows_handle_toolbar_wm_command):
	* toolbar-msw.c (mswindows_find_toolbar_pos):
	* toolbar-msw.c (mswindows_output_toolbar):
	* toolbar-msw.c (mswindows_clear_toolbar):
	* toolbar-msw.c:
	* systty.h:
	* syssignal.h:
	* sysproc.h:
	* sysfile.h:
	* sysdll.c:
	* sysdep.h:
	* sysdep.c (rmdir):
	* sysdep.c (sys_fopen):
	* sysdep.c (sys_open):
	* sysdep.c (tty_init_sys_modes_on_device):
	* sysdep.c (get_eof_char):
	* sysdep.c (child_setup_tty):
	* sysdep.c (set_descriptor_non_blocking):
	* syntax.h:
	* syntax.c (scan_words):
	* syntax.c:
	* symsinit.h:
	* symeval.h (struct symbol_value_varalias):
	* symeval.h (struct symbol_value_forward):
	* symbols.c (syms_of_symbols):
	* symbols.c (init_symbols_once_early):
	* symbols.c (Fbuilt_in_variable_type):
	* symbols.c (Fsymbol_value_in_buffer):
	* symbols.c (default_value):
	* symbols.c (Fset):
	* symbols.c (find_symbol_value_quickly):
	* symbols.c (store_symval_forwarding):
	* symbols.c (set_default_console_slot_variable):
	* symbols.c (set_default_buffer_slot_variable):
	* symbols.c (verify_ok_for_buffer_local):
	* symbols.c (symbol_is_constant):
	* symbols.c (oblookup):
	* symbols.c (Funintern):
	* symbols.c (Fintern):
	* symbols.c (check_obarray):
	* sunplay.c:
	* specifier.h (struct specifier_methods):
	* specifier.h:
	* specifier.c (specifier_instance):
	* specifier.c (specifier_instance_from_inst_list):
	* specifier.c (decode_locale_type):
	* specifier.c (specifier_equal):
	* specifier.c (finalize_specifier):
	* specifier.c (prune_specifiers):
	* specifier.c (kill_specifier_buffer_locals):
	* sound.c (init_native_sound):
	* sound.c:
	* signal.c (alarm):
	* search.c (Fmatch_data):
	* search.c (match_limit):
	* search.c (Freplace_match):
	* search.c (skip_chars):
	* search.c (scan_buffer):
	* search.c:
	* scrollbar.c (specifier_vars_of_scrollbar):
	* scrollbar.c (Fscrollbar_set_hscroll):
	* scrollbar.c (vertical_scrollbar_changed_in_window):
	* scrollbar.c (release_window_mirror_scrollbars):
	* scrollbar.c (free_scrollbar_instance):
	* scrollbar-x.c:
	* scrollbar-msw.c:
	* s/msdos.h (O_BINARY):
	* s/linux.h:
	* s/freebsd.h (LIBS_TERMCAP):
	* regex.c (re_match_2_internal):
	* regex.c (compile_extended_range):
	* regex.c (POP_FAILURE_POINT):
	* regex.c (PUSH_FAILURE_POINT):
	* redisplay.h (RESET_CHANGED_SET_FLAGS):
	* redisplay.h:
	* redisplay.h (struct display_line):
	* redisplay.h (struct rune):
	* redisplay.c (vars_of_redisplay):
	* redisplay.c (redisplay_variable_changed):
	* redisplay.c (UPDATE_CACHE_RETURN):
	* redisplay.c (validate_line_start_cache):
	* redisplay.c (mark_redisplay_structs):
	* redisplay.c (mark_glyph_block_dynarr):
	* redisplay.c (window_line_number):
	* redisplay.c (redisplay_frame):
	* redisplay.c (redisplay_window):
	* redisplay.c (generate_modeline):
	* redisplay.c (create_right_glyph_block):
	* redisplay.c (create_left_glyph_block):
	* redisplay.c (create_text_block):
	* redisplay.c:
	* redisplay-x.c (x_output_hline):
	* redisplay-x.c (x_output_vertical_divider):
	* redisplay-tty.c (tty_output_display_block):
	* redisplay-output.c (output_display_line):
	* redisplay-output.c:
	* redisplay-msw.c (mswindows_output_vertical_divider):
	* redisplay-msw.c (mswindows_ring_bell):
	* redisplay-msw.c (mswindows_output_cursor):
	* redisplay-msw.c:
	* rangetab.c:
	* ralloc.c:
	* puresize.h (RAW_PURESIZE):
	* profile.c (syms_of_profile):
	* profile.c (Fstart_profiling):
	* profile.c (sigprof_handler):
	* profile.c:
	* procimpl.h:
	* process.c (vars_of_process):
	* process.c (read_process_output):
	* process.c (get_process):
	* process.c:
	* process-unix.c (unix_open_multicast_group):
	* process-unix.c (unix_get_tty_name):
	* process-unix.c (unix_send_process):
	* process-unix.c (unix_reap_exited_processes):
	* process-unix.c (unix_create_process):
	* process-unix.c (unix_init_process_io_handles):
	* process-unix.c (allocate_pty):
	* process-unix.c:
	* process-nt.c (nt_open_network_stream):
	* process-nt.c (nt_update_status_if_terminated):
	* process-nt.c (nt_finalize_process_data):
	* process-nt.c:
	* print.c (debug_short_backtrace):
	* print.c (debug_backtrace):
	* print.c (print_symbol):
	* print.c (print_internal):
	* print.c (print_cons):
	* print.c (Fwrite_char):
	* print.c (print_prepare):
	* print.c (canonicalize_printcharfun):
	* print.c (output_string):
	* print.c:
	* opaque.h:
	* opaque.c (allocate_managed_opaque):
	* opaque.c:
	* offix.c (DndSetData):
	* objects.c (face_boolean_create):
	* objects.c (font_instantiate):
	* objects.c (font_create):
	* objects.c (color_create):
	* objects.c (finalize_font_instance):
	* objects.c (finalize_color_instance):
	* objects.c:
	* objects-x.c (x_font_instance_truename):
	* objects-x.c:
	* objects-x.c (x_initialize_font_instance):
	* objects-x.c (allocate_nearest_color):
	* objects-tty.c (tty_initialize_font_instance):
	* objects-tty.c (tty_initialize_color_instance):
	* objects-msw.c (mswindows_initialize_color_instance):
	* ntproc.c (syms_of_ntproc):
	* ntproc.c (Fwin32_set_process_priority):
	* ntproc.c (sys_spawnve):
	* ntproc.c:
	* ntheap.c (get_data_end):
	* nt.c (period):
	* nt.c:
	* nt.c (stat):
	* nt.c (generate_inode_val):
	* nt.c (sys_rename):
	* nas.c:
	* mule-wnnfns.c (Fwnn_hinsi_number):
	* mule-wnnfns.c (Fwnn_yuragi):
	* mule-wnnfns.c (Fwnn_common_learn):
	* mule-wnnfns.c (Fwnn_suffix_learn):
	* mule-wnnfns.c (Fwnn_prefix_learn):
	* mule-wnnfns.c (Fwnn_okuri_learn):
	* mule-wnnfns.c (Fwnn_complex_conv):
	* mule-wnnfns.c (Fwnn_last_is_first):
	* mule-wnnfns.c (Fwnn_bmodify_dict_add):
	* mule-wnnfns.c (Fwnn_notrans_dict_add):
	* mule-wnnfns.c (Fwnn_fiusr_dict_add):
	* mule-wnnfns.c (Fwnn_fisys_dict_add):
	* mule-wnnfns.c (Fwnn_hinsi_list):
	* mule-wnnfns.c (Fwnn_fuzokugo_set):
	* mule-wnnfns.c (Fwnn_dict_search):
	* mule-wnnfns.c (Fwnn_word_toroku):
	* mule-wnnfns.c (Fwnn_hindo_update):
	* mule-wnnfns.c (Fwnn_bunsetu_henkou):
	* mule-wnnfns.c (Fwnn_kakutei):
	* mule-wnnfns.c (Fwnn_begin_henkan):
	* mule-wnnfns.c (Fwnn_dict_comment):
	* mule-wnnfns.c (Fwnn_dict_add):
	* mule-wnnfns.c (Fwnn_open):
	* mule-mcpath.c (mc_getcwd):
	* mule-coding.c (vars_of_mule_coding):
	* mule-coding.c (convert_to_external_format):
	* mule-coding.c (encoding_marker):
	* mule-coding.c (decoding_marker):
	* mule-coding.c (Fcopy_coding_system):
	* mule-coding.c (Fmake_coding_system):
	* mule-coding.c (Fcoding_system_list):
	* mule-coding.c (Ffind_coding_system):
	* mule-coding.c (symbol_to_eol_type):
	* mule-coding.c:
	* mule-charset.c (complex_vars_of_mule_charset):
	* mule-charset.c (vars_of_mule_charset):
	* mule-charset.c (Fset_charset_ccl_program):
	* mule-charset.c (struct charset_list_closure):
	* mule-charset.c (Ffind_charset):
	* mule-charset.c (make_charset):
	* mule-charset.c (non_ascii_valid_char_p):
	* mule-charset.c:
	* mule-ccl.c (ccl_driver):
	* mule-canna.c (c2mu):
	* mule-canna.c (Fcanna_henkan_begin):
	* mule-canna.c (Fcanna_parse):
	* mule-canna.c (Fcanna_store_yomi):
	* mule-canna.c (Fcanna_touroku_string):
	* mule-canna.c (Fcanna_initialize):
	* minibuf.c:
	* menubar.c (menu_parse_submenu_keywords):
	* menubar-x.c (make_dummy_xbutton_event):
	* menubar-x.c (set_frame_menubar):
	* menubar-x.c (menu_item_descriptor_to_widget_value_1):
	* menubar-x.c:
	* menubar-msw.h:
	* menubar-msw.c (mswindows_popup_menu):
	* menubar-msw.c (mswindows_update_frame_menubars):
	* menubar-msw.c (mswindows_handle_wm_command):
	* menubar-msw.c (unsafe_handle_wm_initmenu_1):
	* menubar-msw.c (unsafe_handle_wm_initmenupopup_1):
	* menubar-msw.c (update_frame_menubar_maybe):
	* menubar-msw.c (populate_or_checksum_helper):
	* menubar-msw.c (empty_menu):
	* menubar-msw.c:
	* md5.c:
	* marker.c (set_marker_internal):
	* marker.c (print_marker):
	* malloc.c:
	* make-src-depend:
	* lstream.c (lisp_buffer_rewinder):
	* lstream.c (mark_lstream):
	* lrecord.h:
	* lrecord.h (struct lrecord_header):
	* lread.c (readevalloop):
	* lread.c (locate_file):
	* lread.c (locate_file_in_directory):
	* lread.c (Flocate_file):
	* lread.c (load_force_doc_string_unwind):
	* lread.c (ebolify_bytecode_constants):
	* lread.c:
	* lisp.h:
	* lisp-union.h:
	* lisp-disunion.h:
	* linuxplay.c (linux_play_data_or_file):
	* linuxplay.c (audio_init):
	* line-number.c:
	* keymap.h:
	* keymap.c (describe_map):
	* keymap.c (describe_map_mapper):
	* keymap.c (Fdescribe_bindings_internal):
	* keymap.c (Fsingle_key_description):
	* keymap.c (map_keymap_sorted):
	* keymap.c (get_relevant_keymaps):
	* keymap.c (Flookup_key):
	* keymap.c (raw_lookup_key_mapper):
	* keymap.c (Fdefine_key):
	* keymap.c (Fevent_matches_key_specifier_p):
	* keymap.c (key_desc_list_to_event):
	* keymap.c (define_key_parser):
	* keymap.c (define_key_check_and_coerce_keysym):
	* keymap.c (keymap_submaps):
	* keymap.c (keymap_store_internal):
	* keymap.c (keymap_delete_inverse_internal):
	* keymap.c (keymap_store_inverse_internal):
	* keymap.c (print_keymap):
	* keymap.c (Lisp_Keymap):
	* keymap.c:
	* intl.c:
	* insdel.c (convert_bufbyte_string_into_emchar_dynarr):
	* insdel.c (make_gap):
	* input-method-xlib.c (get_XIM_input):
	* input-method-xlib.c (XIM_init_frame):
	* imgproc.c:
	* hash.h:
	* hash.c:
	* gui.c:
	* gui-x.c (button_item_to_widget_value):
	* gui-x.c (popup_selection_callback):
	* glyphs.h (struct image_instantiator_methods):
	* glyphs.c (mark_glyph_cachels):
	* glyphs.c (Fglyph_type):
	* glyphs.c (image_instantiate):
	* glyphs.c (image_create):
	* glyphs.c (make_image_instance_1):
	* glyphs.c (finalize_image_instance):
	* glyphs.c:
	* glyphs-x.c (finalize_subwindow):
	* glyphs-x.c (xface_validate):
	* glyphs-x.c (x_locate_pixmap_file):
	* glyphs-x.c (convert_EImage_to_XImage):
	* glyphs-msw.c:
	* glyphs-msw.c (mswindows_resource_instantiate):
	* glyphs-msw.c (xpm_to_eimage):
	* glyphs-msw.c (convert_EImage_to_DIBitmap):
	* glyphs-eimage.c (tiff_instantiate):
	* glyphs-eimage.c (png_instantiate):
	* glyphs-eimage.c (struct png_error_struct):
	* glyphs-eimage.c (gif_memory_storage):
	* glyphs-eimage.c:
	* gifrlib.h:
	* getloadavg.c (getloadavg):
	* getloadavg.c:
	* gdbinit:
	* free-hook.c (log_gcpro):
	* free-hook.c (check_malloc):
	* free-hook.c (check_free):
	* free-hook.c (ROUND_UP_TO_PAGE):
	* free-hook.c:
	* frame.h (struct frame):
	* frame.h:
	* frame.c (change_frame_size_1):
	* frame.c (allocate_frame_core):
	* frame.c:
	* frame-x.c (x_focus_on_frame):
	* frame-x.c (x_init_frame_2):
	* frame-x.c (x_popup_frame):
	* frame-x.c (xemacs_XtPopup):
	* frame-x.c:
	* frame-x.c (Foffix_start_drag_internal):
	* frame-x.c (x_cde_destroy_callback):
	* frame-x.c (x_wm_hack_wm_protocols):
	* frame-tty.c (tty_frame_visible_p):
	* frame-msw.c (mswindows_make_frame_invisible):
	* frame-msw.c (mswindows_after_init_frame):
	* frame-msw.c (mswindows_init_frame_1):
	* fns.c (syms_of_fns):
	* fns.c (Fbase64_decode_string):
	* fns.c (Fnconc):
	* fns.c (Ffillarray):
	* fns.c (Fobject_plist):
	* fns.c (Fget):
	* fns.c (Fcanonicalize_lax_plist):
	* fns.c (Fcanonicalize_plist):
	* fns.c (Fplist_remprop):
	* fns.c (Fplist_get):
	* fns.c (advance_plist_pointers):
	* fns.c (internal_plist_put):
	* fns.c (Fnreverse):
	* fns.c (Fremassq):
	* fns.c (Felt):
	* fns.c (Fsubstring):
	* fns.c (Fbvconcat):
	* fns.c (Flength):
	* fns.c (length_with_bytecode_hack):
	* fns.c (print_bit_vector):
	* fns.c:
	* floatfns.c (Ffloor):
	* floatfns.c:
	* floatfns.c (in_float_error):
	* fileio.c (Ffile_modes):
	* fileio.c (Fexpand_file_name):
	* fileio.c (Fmake_temp_name):
	* fileio.c (Ffile_name_nondirectory):
	* fileio.c (Ffile_name_directory):
	* file-coding.h:
	* file-coding.c (vars_of_mule_coding):
	* file-coding.c (convert_to_external_format):
	* file-coding.c (encoding_marker):
	* file-coding.c (decoding_marker):
	* file-coding.c (Fcopy_coding_system):
	* file-coding.c (Fmake_coding_system):
	* file-coding.c (struct coding_system_list_closure):
	* file-coding.c (Ffind_coding_system):
	* file-coding.c (symbol_to_eol_type):
	* file-coding.c:
	* faces.h (struct face_cachel):
	* faces.c (vars_of_faces):
	* faces.c (face_property_was_changed):
	* faces.c (mark_face_cachels):
	* faces.c (temporary_faces_list):
	* faces.c (struct face_list_closure):
	* faces.c:
	* extents.h (struct extent):
	* extents.c (vars_of_extents):
	* extents.c (struct copy_string_extents_1_arg):
	* extents.c (add_string_extents_mapper):
	* extents.c (Fextent_property):
	* extents.c (Fset_extent_property):
	* extents.c (symbol_to_glyph_layout):
	* extents.c (properties_equal):
	* extents.c (print_extent):
	* extents.c (print_extent_1):
	* extents.c (extent_in_region_p):
	* extents.c (gap_array_make_gap):
	* extents.c:
	* events.h (struct Lisp_Event):
	* events.h:
	* events.c (Fevent_properties):
	* events.c (format_event_object):
	* events.c (Fmake_event):
	* events.c (event_equal):
	* events.c (print_event):
	* events.c (mark_event):
	* event-stream.c ((read-char)
	* event-stream.c (vars_of_event_stream):
	* event-stream.c (syms_of_event_stream):
	* event-stream.c (Fset_recent_keys_ring_size):
	* event-stream.c (Fsit_for):
	* event-stream.c (Fnext_event):
	* event-stream.c (execute_help_form):
	* event-stream.c (maybe_kbd_translate):
	* event-stream.c:
	* event-msw.c (vars_of_event_mswindows):
	* event-msw.c (mswindows_wnd_proc):
	* event-msw.c (mswindows_need_event):
	* event-msw.c (mswindows_drain_windows_queue):
	* event-msw.c (mswindows_pump_outstanding_events):
	* event-msw.c:
	* event-msw.c (slurp_thread):
	* event-msw.c (struct ntpipe_slurp_stream):
	* event-msw.c (HANDLE_TO_USID):
	* event-Xt.c (emacs_Xt_handle_magic_event):
	* event-Xt.c (x_event_to_emacs_event):
	* event-Xt.c (x_reset_modifier_mapping):
	* event-Xt.c (x_reset_key_mapping):
	* event-Xt.c:
	* eval.c (syms_of_eval):
	* eval.c (warn_when_safe):
	* eval.c (warn_when_safe_lispobj):
	* eval.c (Fbacktrace_frame):
	* eval.c (Fbacktrace):
	* eval.c (top_level_set):
	* eval.c (unbind_to_hairy):
	* eval.c (specbind_magic):
	* eval.c (specbind_unwind_wasnt_local):
	* eval.c (call2_trapping_errors):
	* eval.c (call1_trapping_errors):
	* eval.c (catch_them_squirmers_call2):
	* eval.c (call0_trapping_errors):
	* eval.c (run_hook_trapping_errors):
	* eval.c (catch_them_squirmers_eval_in_buffer):
	* eval.c (call4_in_buffer):
	* eval.c (call3_in_buffer):
	* eval.c (call2_in_buffer):
	* eval.c (call1_in_buffer):
	* eval.c (call0_in_buffer):
	* eval.c (run_hook):
	* eval.c (run_hook_with_args_in_buffer):
	* eval.c (Fapply):
	* eval.c (Feval):
	* eval.c (do_autoload):
	* eval.c (un_autoload):
	* eval.c (Fautoload):
	* eval.c (Finteractive_p):
	* eval.c (Fcommand_execute):
	* eval.c (signal_quit):
	* eval.c (call_with_suspended_errors):
	* eval.c (signal_error):
	* eval.c (return_from_signal):
	* eval.c (Fcall_with_condition_handler):
	* eval.c (run_condition_case_handlers):
	* eval.c (condition_case_1):
	* eval.c (Funwind_protect):
	* eval.c (unwind_to_catch):
	* eval.c (internal_catch):
	* eval.c (Fmacroexpand_internal):
	* eval.c (Fuser_variable_p):
	* eval.c (Fdefconst):
	* eval.c (Fdefvar):
	* eval.c (Ffunction):
	* eval.c (signal_call_debugger):
	* eval.c (call_debugger):
	* eval.c:
	* emacs.c (main):
	* emacs.c (sort_args):
	* emacs.c (main_1):
	* elhash.h:
	* elhash.c:
	* editfns.c (Fencode_time):
	* editfns.c (Fdecode_time):
	* editfns.c (Fuser_full_name):
	* editfns.c:
	* editfns.c (save_excursion_restore):
	* ecrt0.c:
	* dynarr.c:
	* doprnt.c (emacs_doprnt_1):
	* doc.c (verify_doc_mapper):
	* doc.c (Fsnarf_documentation):
	* doc.c (Fdocumentation):
	* dll.c:
	* dired.c (user_name_completion):
	* dired.c (Fdirectory_files):
	* dialog-x.c:
	* dialog-msw.c:
	* dgif_lib.c (FreeSavedImages):
	* dgif_lib.c (DGifGetImageDesc):
	* device.h:
	* device.h (struct device):
	* device.c (Fselect_device):
	* device.c (allocate_device):
	* device.c:
	* device-x.c (Fx_keysym_on_keyboard_p):
	* device-x.c (Fx_valid_keysym_name_p):
	* device-x.c (x_IO_error_handler):
	* device-x.c (x_delete_device):
	* device-x.c (x_finish_init_device):
	* device-x.c (x_init_device):
	* device-x.c:
	* device-msw.c (mswindows_init_device):
	* dbxrc:
	* database.c (vars_of_database):
	* database.c (Fput_database):
	* database.c (Fopen_database):
	* database.c (berkdb_remove):
	* database.c (berkdb_put):
	* database.c (Fdatabasep):
	* database.c (print_database):
	* database.c:
	* data.c (vars_of_data):
	* data.c (syms_of_data):
	* data.c (init_errors_once_early):
	* data.c (prune_weak_lists):
	* data.c (finish_marking_weak_lists):
	* data.c (print_weak_list):
	* data.c (Fmod):
	* data.c (Fstring_to_number):
	* data.c (Fnumber_to_string):
	* data.c (Findirect_function):
	* data.c (Fsetcdr):
	* data.c (Ffloatp):
	* data.c (Fsubr_interactive):
	* data.c (Farrayp):
	* data.c (Fkeywordp):
	* data.c (Fnull):
	* data.c:
	* console.h (CONSOLE_NAME):
	* console.h:
	* console.c (vars_of_console):
	* console.c (Fselect_console):
	* console.c:
	* console-x.h (DEVICE_X_COLORMAP):
	* console-x.h (struct x_device):
	* console-x.c (x_device_to_console_connection):
	* console-tty.h (CONSOLE_TTY_FINAL_CURSOR_Y):
	* console-tty.c (tty_init_console):
	* console-tty.c:
	* console-msw.h (struct mswindows_frame):
	* conslots.h:
	* config.h.in:
	* cmds.c (internal_self_insert):
	* cmds.c (Fforward_line):
	* cmds.c (Fforward_char):
	* cmds.c:
	* cmdloop.c:
	* chartab.c (mark_char_table_entry):
	* chartab.c:
	* casefiddle.c (casify_word):
	* callproc.c (child_setup):
	* callproc.c (Fcall_process_internal):
	* callproc.c:
	* callint.c (Fcall_interactively):
	* bytecode.h:
	* bytecode.c (execute_rare_opcode):
	* bytecode.c (execute_optimized_program):
	* bytecode.c:
	* bufslots.h:
	* buffer.h (BUFFER_REALLOC):
	* buffer.h (GET_CHARPTR_INT_DATA_ALLOCA):
	* buffer.h (GET_CHARPTR_EXT_DATA_ALLOCA):
	* buffer.h:
	* buffer.h (MAP_INDIRECT_BUFFERS):
	* buffer.h (CHECK_LIVE_BUFFER):
	* buffer.c (init_initial_directory):
	* buffer.c (complex_vars_of_buffer):
	* buffer.c (vars_of_buffer):
	* buffer.c (finish_init_buffer):
	* buffer.c (Fget_file_buffer):
	* buffer.c (Fbuffer_list):
	* buffer.c (mark_buffer):
	* balloon_help.c (balloon_help_move_to_pointer):
	* balloon_help.c (show_help):
	* balloon_help.c:
	* backtrace.h:
	* alloc.c (garbage_collect_1):
	* alloc.c (sweep_strings):
	* alloc.c (sweep_compiled_functions):
	* alloc.c (sweep_bit_vectors_1):
	* alloc.c (sweep_vectors_1):
	* alloc.c (sweep_lcrecords_1):
	* alloc.c (tick_lcrecord_stats):
	* alloc.c (pure_string_sizeof):
	* alloc.c (mark_conses_in_list):
	* alloc.c (mark_object):
	* alloc.c (report_pure_usage):
	* alloc.c (make_pure_float):
	* alloc.c (make_pure_string):
	* alloc.c (free_managed_lcrecord):
	* alloc.c (mark_string):
	* alloc.c (noseeum_make_marker):
	* alloc.c (allocate_event):
	* alloc.c (Fbit_vector):
	* alloc.c (Fvector):
	* alloc.c (make_float):
	* alloc.c (Fmake_list):
	* alloc.c (Flist):
	* alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC):
	* alloc.c (PUT_FIXED_TYPE_ON_FREE_LIST):
	* alloc.c (DECLARE_FIXED_TYPE_ALLOC):
	* alloc.c (dbg_constants):
	* alloc.c (gc_record_type_p):
	* alloc.c (free_lcrecord):
	* alloc.c (xmalloc):
	* alloc.c (NOSEEUM_INCREMENT_CONS_COUNTER):
	* abbrev.c:
	* Makefile.in.in (mostlyclean):
	* Makefile.in.in (external_client_xlib_objs_nonshared):
	* Makefile.in.in (temacs_link_args):
	* Makefile.in.in (release):
	* Makefile.in.in (dnd_objs):
	* Makefile.in.in (objs):
	* Makefile.in.in (PROGNAME):
	* EmacsShell.c: cast strings to (XtPointer)
	* EmacsFrame.c: cast strings to (XtPointer)
	- mega patch
	- rewrite basic lisp functions for speed
	- rewrite bytecode interpreter for speed
	- rewrite list looping constructs for speed and safety using
	  tortoise/hare.
	- use size_t where appropriate.
	- new hashtable implementation
	- cleanup implementation of opaques
	- opaques can now be purecopy'ed
	- move some cl functionality into C for speed.
	- remove last remaining VMS support
	- spelling fixes
	- improve gdb/dbx debugger support
	- move pure.c back into alloc.c for performance
	- enable report_pure_usage() if --memory-usage-stats
	- remove remnants of Energize support (EMACS_BTL, cadillac...)
	- don't use symbols with leading `_' or embedded `__'
	- globally cleanup duplicated semicolons `;;'
	- I give in on %p vs %lx - we use printf("%lx",(long) p)
	  globally.
	- globally replace O_NDELAY with O_NONBLOCK.
	- globally replace CDISABLE with _POSIX_VDISABLE.
	- use O_RDONLY and O_RDWR instead of magic `0' and `2'.
	- define (and maybe use!) STDERR_FILENO and friends.
	- add support for macros defined in C
	- `when', `unless', `not' and `defalias' now defined in C,
	  so that they are universally available.
	- rename defvar_mumble to defvar_magic
	- rename RETURN__ to RETURN_SANS_WARNINGS
	- use consistent style of initial caps in error messages
	- implement last, butlast, nbutlast, copy-list in C.
	- provide typedefs for all struct Lisp_foo types
	- Lisp_Objects must be initialized to Qnil rather than 0.
	- make sure XEmacs runs (slowly) with always_gc == 1;
	- fast and safe LOOP_* macros
	- change calls to XSETOBJ to XSETFOO
	- replace calls to XSETINT by make_int()
	- plug up memory leaks
	- use style markobj (foo), not silly ((markobj) (foo))
	- use XFLOAT_DATA (obj) instead of float_data (XFLOAT (obj))

1998-12-02  P. E. Jareth Hein  <jareth@camelot.co.jp>

	* unexec.c: Changed a #ifndef statement to fix XEmacs on BSDI 3.0

1998-11-28  SL Baur  <steve@altair.xemacs.org>

	* XEmacs 21.2-beta4 is released.

1998-11-27  SL Baur  <steve@altair.xemacs.org>

	* mule-charset.c (complex_vars_of_mule_charset): Fix graphic
	property in control-1 charset.
	From Julian Bradfield <jcb@daimi.au.dk>

1998-11-26  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* gui-x.c (button_item_to_widget_value): Ignore :key-sequence
	keyword.
	Add stub for :label.

	* gui.c (gui_item_add_keyval_pair): ditto.

	* menubar-x.c (menu_item_descriptor_to_widget_value_1): Ignore
	:key-sequence keyword.
	Add stub for:label.
	Support :active for submenus like the Windows code and FSF Emacs.

1998-11-27  Hrvoje Niksic  <hniksic@srce.hr>

	* dired.c (make_directory_hash_table): make_string() is OK because
	readdir() Mule-encapsulates.

1998-11-26  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fbase64_encode_string): Fix docstring.
	(Fbase64_decode_string): Ditto.

1998-11-26  Hrvoje Niksic  <hniksic@srce.hr>

	* editfns.c (Ftranslate_region): Use
	convert_bufbyte_string_into_emchar_string().

1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>

	* editfns.c (Ftranslate_region): Accept vectors and char-tables as
	well as strings.
	(Ftranslate_region): Turn table into an array of Emchars for
	larger regions.

1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>

	* chartab.c (Freset_char_table): Fix wrong placement of #endif.

1998-11-24  Hrvoje Niksic  <hniksic@srce.hr>

	* chartab.c (Freset_char_table): Don't blindly fill chartables of
	type `char' with nils.

	* chartab.c (canonicalize_char_table_value): Coerce ints to chars
	for tables of type `char'.

1998-11-26  Didier Verna  <didier@xemacs.org>

	* input-method-xlib.c (Initialize_Locale): don't call
	XtSetLanguageProc. We've done the whole work here.
	* input-method-xfs.c (Initialize_Locale): ditto.
	* input-method-motif.c (Initialize_Locale): ditto.

1998-11-26  Didier Verna  <didier@xemacs.org>

	* process-unix.c (unix_create_process): handle properly
	Vfile_name_coding_system for converting the program and directory
	names.

1998-11-27  SL Baur  <steve@altair.xemacs.org>

	* m/arm.h: New file.
	From James LewisMoss <dres@ioa.com>

1998-11-27  Takeshi Hagiwara  <hagiwara@ie.niigata-u.ac.jp>

	* m/mips-nec.h:
	Fix the realpath() problem of UnixWare2.1.3.
	Patches for NEC's sysv4.2 machine.

1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>

	* dired.c (Fdirectory_files): Remove redundant code.

1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (free_malloced_ptr): New function.
	(XMALLOC_OR_ALLOCA): New macro.
	(XMALLOC_UNBIND): Ditto.
	(Fbase64_encode_region): Use malloc() for large blocks; arrange it
	to be freed in case of non-local exit.
	(Fbase64_encode_string): Ditto.
	(Fbase64_decode_region): Ditto.
	(Fbase64_decode_string): Ditto.
	(STORE_BYTE): New macro.
	(base64_decode_1): Use it.

1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (base64_value_to_char): Base64 stuff.

1998-11-24  Hrvoje Niksic  <hniksic@srce.hr>

	* editfns.c (Fbuffer_substring): New function.

	* lisp.h: Declare make_string_from_buffer_no_extents().

	* insdel.c (make_string_from_buffer_1): New function.
	(make_string_from_buffer_no_extents): Ditto.

1998-11-15  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* linuxplay.c: Including <fcntl.h> instead of <sys/fcntl.h> makes
	sound work on AIX with OSS installed.  Linux should still work.

1998-11-03  Andy Piper  <andyp@parallax.co.uk>

	* config.h.in: name change for cygwin/version.h

	* configure.in: check for cygwin/version.h now.

	* cygwin32.h: track CYGWIN_DLL_VERSION_MAJOR ->
	CYGWIN_VERSION_DLL_MAJOR name change in cygwin b20.
	move cygwin32/version.h to cygwin/version.h

1998-11-03  Olivier Galibert  <galibert@pobox.com>

	* lisp.h  (struct  Lisp_Bit_Vector): Fix declaration of  bits from
	int to long.

1998-10-22  Andy Piper  <andyp@parallax.co.uk>

	* cygwin32.h: track CYGWIN_DLL_VERSION_MAJOR ->
	CYGWIN_VERSION_DLL_MAJOR name change in cygwin b20.
	enable BROKEN_SIGIO under b20 to make QUIT work.

1998-10-22  Andy Piper  <andyp@parallax.co.uk>

	* frame-msw.c (mswindows_size_frame_internal): force frame sizing
	to fit within the constraints of the screen size. I.e. make the
	frame small enough to fit and move it if some of it will be
	off-screen.

1998-10-19  Greg Klanderman  <greg@alphatech.com>

	* dired.c: conditionalize inclusion of user-name-completion
	primitives on non-Windows NT.  The needed functions don't exist on NT.

1998-11-24  SL Baur  <steve@altair.xemacs.org>

	* gifrlib.h: Clean up types for 64 bit compile.
	* dgif_lib.c (DGifInitRead): Ditto.
	(MakeSavedImage): Ditto.
	* emacs.c (decode_path): Ditto.
	From Steve Carney <carney@pa.dec.com>

1998-10-16  William M. Perry  <wmperry@aventail.com>

	* glyphs-msw.c (bitmap_table): Fixed typo in builtin bitmaps
	  (cehckboxes instead of checkboxes).

1998-10-15  SL Baur  <steve@altair.xemacs.org>

	* XEmacs 21.2-beta3 is released.

1998-10-13  Raymond Toy  <toy@rtp.ericsson.se>

	* runemacs.c (WinMain): If the basename is "rungnuclient.exe", run
	gnuclient.  Otherwise, we run xemacs as we always did.  This gets
	rid of the annoying DOS window when running gnuclient.

1998-10-13  Andy Piper  <andyp@parallax.co.uk>

	* dragdrop.c (vars_of_dragdrop): rename HAVE_MSWINDOWS ->
	HAVE_MS_WINDOWS typo.

1998-10-13  SL Baur  <steve@altair.xemacs.org>

	* process-unix.c (unix_send_process): Set closed flag on writable
	pipe after SIGPIPE is received and before we call deactivate_process.

1998-10-03  Gunnar Evermann  <ge204@eng.cam.ac.uk>

	* window.c (Fset_window_start): respect narrowing when
	checking wheter start is at the beginning of a line.
	(Fset_window_buffer): Ditto
	Fixes repeatable crash in VM.

1998-10-09  SL Baur  <steve@altair.xemacs.org>

	* window.c (specifier_vars_of_window): Set default vertical
	divider width to 1 on ttys.

1998-10-08  Martin Buchholz  <martin@xemacs.org>

	* alloc.c:
	* unexec.c:
	* malloc.c:
	Add <stddef.h> to get ptrdiff_t declaration

1998-10-07  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* scrollbar-msw.c: Use the same vertical scrollbar drag hack as
	  is used for Motif or Lucid scrollbars under X.

1998-10-08  Pierre Wendling  <pw@ebc.vbe.dec.com>

	* m/alpha.h (UNEXEC): quoted to avoid bad expansion when running
	`configure'

1998-10-06  Takeshi Hagiwara  <hagiwara@ie.niigata-u.ac.jp>

	* frame-x.c (x_delete_frame): Fix an argument of XtDestroyWidget.

1998-10-05  Andy Piper  <andyp@parallax.co.uk>

	* s/cygwin32.h: more cygwin b20 reorganisation.

1998-10-01  Raymond Toy  <toy@rtp.ericsson.se>

	* nas.c: Added necessary support functions to be able to handle
	WAVE files in memory, just like the support for SND files in
	memory.

1998-09-30  SL Baur  <steve@altair.xemacs.org>

	* callproc.c (child_setup): Fix spelling typo.

1998-09-29  SL Baur  <steve@altair.xemacs.org>

	* XEmacs 21.2-beta2 is released.

1998-09-27  P. E. Jareth Hein  <jareth@camelot.co.jp>

	* regex.c (re_match_2_internal): Add in code to reset lowest_active_reg
	to prevent memory corruption in the case of jumping out of a series of
	nested match patterns. This is a rather brute force approach, though.

1998-09-02  Andy Piper  <andyp@parallax.co.uk>

	* config.h.in: ditto.

	* s/cygwin32.h: rearrange declarations to cope with cygwin
	b20. Include cygwin32/version.h if it exists.

1998-09-20  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* device-msw.c (mswindows_init_device): Call new
	  mswindows_enumerate_fonts() function in objects-msw.c instead
	  of font_enum_callback_1() to enumerate fonts.

	  font_enum_callback_1() and _2() moved to objects-msw.c.

	* faces.c (complex_vars_of_faces): Make the mswindows default
	  face font fully specified and provide some fallbacks.

	* objects-msw.c: font_enum_callback_1() and _2() moved here
	  from objects-msw.c. Obtain the enumerated font's character
	  sets by table lookup instead of using the locale-specific
	  string provided by Windows.

	  New public non-method mswindows_enumerate_fonts() that fills
	  in the supplied mswindows device's font list.

	  mswindows_initialize_font_instance: Use the supplied name
	  variable instead of f->name when signalling errors. Match font
	  weights and character sets using lookup tables which handle
	  spaces instead of by frobbing.

1998-09-20  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* process-nt.c: Define an arbitrary limit, FRAGMENT_CODE_SIZE,
	  on the size of code fragments passed to run_in_other_process.

	  run_in_other_process(): Use FRAGMENT_CODE_SIZE to determine
	  the amount of memory to allocate in the other process.

	  Removed sigkill_code_end(), sigint_code_end() and
	  sig_enable_code_end() since they are now redundant.

	  send_signal() and enable_child_signals(): Don't try to work
	  out the end of the code fragments passed to
	  run_in_other_process()

1998-09-10  Kazuyuki IENAGA  <ienaga@jsys.co.jp>

	* src/s/freebsd.h: Added __ELF__ and compiler/liker flags for
	FreeBSD-current.

	* src/unexelf.c: Partially synched with FSF's 20.3.

1998-09-10  Hrvoje Niksic  <hniksic@srce.hr>

	* insdel.c (signal_after_change): Map across indirect buffers
	here, and not in the upper-level functions.
	(signal_first_change): Don't check for Armageddon.
	(signal_before_change): Map across indirect buffers here.
	(prepare_to_modify_buffer): ...and here.

1998-09-09  Hrvoje Niksic  <hniksic@srce.hr>

	* insdel.c (signal_after_change): Add return value.
	(buffer_insert_string_1): Use it.
	(buffer_delete_range): Ditto.
	(buffer_replace_char): Ditto.
	(cancel_multiple_change): Map the indirect buffers.

1998-09-06  Hrvoje Niksic  <hniksic@srce.hr>

	* insdel.c (init_buffer_text): Remove INDIRECT_P parameter.
	(uninit_buffer_text): Ditto.

	* buffer.c (Fmake_indirect_buffer): Implement stricter
	error-checking.

1998-09-04  Hrvoje Niksic  <hniksic@srce.hr>

	* insdel.c (change_function_restore): Reverse order of
	function-call and assignment.
	(first_change_hook_restore): Ditto.

	* extents.c (mark_extent_auxiliary): Mark them.
	(Fset_extent_property): Set them.
	(Fextent_property): Get them.
	(Fextent_properties): Ditto.
	(vars_of_extents): Set their default.

	* extents.h (struct extent_auxiliary): Add before_change_functions
	and after_change_functions.

	* insdel.c (signal_before_change): Use it.
	(signal_after_change): Ditto.

	* extents.c (report_extent_modification): New function.

	* insdel.c (signal_before_change): Don't check for Armageddon.
	(signal_after_change): Ditto.

1998-09-11  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>

	* redisplay.c (redisplay_window): make sure a new starting point
	is chosen if it somehow got moved from the beginning of the line
	-- this can happen because Fwiden was called recently.

	* window.c (Fset_window_start): set start_at_line_beg correctly
	(Fset_window_buffer): Ditto

1998-09-06  Hrvoje Niksic  <hniksic@srce.hr>

	* insdel.c (init_buffer_text): Remove INDIRECT_P parameter.
	(uninit_buffer_text): Ditto.

	* buffer.c (Fmake_indirect_buffer): Implement stricter
	error-checking.

1998-05-14  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* emacs.c (main_1): Removed references to *vars_of_filelock.

	* lisp.h: Added Fsystem_name.

	* filelock.c: Replaced by version from FSF 20.2. Now implements
	locking by using symlinks which is NFS safe. However keep the
	GCPRO's in lock_file and the calls to callx_in_buffer like our old
	version (and of course use ansi C, acessor macros, etc).

1998-09-06  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* process-unix.c (unix_create_process): Reset SIGHUP handler to
	SIG_DFL. We now try to conserve any inherted SIG_IGN settings
	in init_signals_very_early. However these should not be passed
	on to children attached to the new pty.

1998-08-28  Andy Piper  <andyp@parallax.co.uk>

	* glyphs-eimage.c (png_instantiate_unwind): clean up eimage after use.

1998-09-07  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* fileio.c (file-name-directory, file_name_as_directory):
	  Don't call CORRECT_DIR_SEPS, even when #defined WINDOWSNT.

1998-09-02  Andy Piper  <andyp@parallax.co.uk>

	* emacs.c (main_1): init_ralloc() if initialised and we have REL_ALLOC

	* ralloc.c: uncomment __morecore.

1998-09-92  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* event-msw.c(winsock_writer): Supply a dummy 4th argument to
	  WriteFile() to fix a winsock 1.x bug on Win95.

1998-08-28  Hrvoje Niksic  <hniksic@srce.hr>

	* event-Xt.c (emacs_Xt_mapping_action): Check for device being
	deleted.
	(x_event_to_emacs_event): Ditto.
	(emacs_Xt_handle_focus_event): Ditto.
	(emacs_Xt_handle_magic_event): Ditto.

	* console-x.h (struct x_device): New flag being_deleted.
	(DEVICE_X_BEING_DELETED): New macro.

	* device-x.c (x_IO_error_handler): Throw to top-level instead of
	returning.  Before doing that, set the being_deleted flag on the
	device.

1998-08-27  Hrvoje Niksic  <hniksic@srce.hr>

	* device-x.c (x-seppuku-on-epipe): Removed.

1998-08-26  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>

	* frame-x.c (x_delete_frame): Flush the X output buffer after
	calling XtDestroyWidget to ensure that the windows are really
	killed right now.

1998-08-26  Hrvoje Niksic  <hniksic@srce.hr>

	* menubar-x.c (my_run_hook): New unused function.
	(pre_activate_callback): Use run_hook for Qactivate_menubar_hook,
	since we ignore the results of the contained functions anyway.

1998-08-26  P. E. Jareth Hein  <jareth@camelot.co.jp>

	* glyphs-eimage.c (gif_instantiate): Fix a crash in handling
	interlaced GIF files that are smaller than 4 lines high...

1998-08-31  Hrvoje Niksic  <hniksic@srce.hr>

	* buffer.c (map_over_sharing_buffers): Deleted.

	* insdel.c (MAP_INDIRECT_BUFFERS): Move to buffer.h.

	* buffer.c (Fkill_buffer): Keep indirect_children updated while
	killing them.

1998-08-31  Hrvoje Niksic  <hniksic@srce.hr>

	* insdel.c (buffer_insert_string_1): Advance the point bytind in
	all the buffers.
	(buffer_delete_range): Ditto.

	* marker.c (init_buffer_markers): Set point-marker to the value of
	point in an indirect buffer.

1998-08-30  Hrvoje Niksic  <hniksic@srce.hr>

	* undo.c (undo_prelude): Test last-undo-buffer against base
	buffer.

	* insdel.c (MAP_INDIRECT_BUFFERS): Use it.

	* buffer.h (BUFFER_BASE_BUFFER): New macro.

1998-08-30  Hrvoje Niksic  <hniksic@srce.hr>

	* insdel.c (init_buffer_text): Initialize it here.

	* line-number.c: Address line_number_cache through buffer->text.

	* buffer.c (mark_buffer): Mark line number cache.

	* bufslots.h (line_number_cache): Move to struct buffer_text.

	* insdel.c (buffer_insert_string_1): Propagate signals and changes
	across the children buffers.
	(buffer_delete_range): Ditto.
	(buffer_replace_char): Ditto.
	(gap_left): Ditto.
	(gap_right): Ditto.

	* insdel.c (MAP_INDIRECT_BUFFERS): New macro.

	* buffer.c (Fmake_indirect_buffer): Uncomment.

1998-08-31  Hrvoje Niksic  <hniksic@srce.hr>

	* macros.c (Fend_kbd_macro): Remove trailing period from error
	message.
	(Fexecute_kbd_macro): Ditto.

1998-08-21  Greg Klanderman  <greg@alphatech.com>

	* dired.c (Fuser_name_completion): remove optional 2nd argument.
	(Fuser_name_completion_1): new function to return uniqueness
	indication in addition to the user name completion.
	(user_name_completion): change type of `uniq' argument.

1998-08-19  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* lread.c (vars_of_lread): Removed `source-directory' variable.

1998-08-22  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Ffile_readable_p): Apply the DOS/Windows logic to
	Cygwin.

1998-08-19  SL Baur  <steve@altair.xemacs.org>

	* dired.c (vars_of_dired): Fix misapplied patch.

1998-08-16  Martin Buchholz  <martin@xemacs.org>

	* fns.c (Fremrassq, remrassq_no_quit):
	A XCAR that should have been an XCDR turned Fremrassq into Fremassq

1998-07-17  Didier Verna  <didier@xemacs.org>

	* redisplay-x.c (x_get_gc): returns a GC with a FillStipple fill
	style as foreground GC for faces that have the `dim' property.
	(x_output_string): when the `dim' face property is set,
	ensure the gray pixmap has been created, and get a proper
	foreground GC to draw the text.

1998-08-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* event-msw.c (mswindows_wnd_proc): Workaround for a Win95 bug:
	  Manually track the state of the left and right Ctrl and Alt
	  modifiers.

1998-08-07 Matt Stupple <matts@tibco.com>

	* ntproc.c: don't wait on char_consumed at thread entry.
	Additionally, to get the 'process' marked as finished, ensure
	that the CHILD_ACTIVE macro returns false, so before exiting
	close char_avail and set it to NULL, and close other handles
	to reduce handle leak problems.

1998-08-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* menubar-msw.c (displayable_menu_item): take account of menu
	  depth when deciding whether to try to display accelerators.

1998-08-04  Andy Piper  <andyp@parallax.co.uk>

	* event-msw.c: use MsgWaitForMultipleObjects if there are no
	subprocesses.

	* glyphs-msw.c: fix a couple of potential handle leaks.

1998-08-04  P. E. Jareth Hein  <jareth@camelot.co.jp>

	* dgif_lib.c gif_io.c gifrlib.h: New files to put GIF
	  *decoding ONLY* back into the core.
	* glyphs-eimage.c: Change referenced header file for GIF
	  reading to point to the incore version.

1998-07-20  Martin Buchholz  <martin@xemacs.org>

	* casefiddle.c (casify_object):
	Change algorithm from O(N**2) to O(N).
	Code cleanup.
	Doc string cleanup.

1998-07-22  Greg Klanderman  <greg@alphatech.com>

	* dired.c (file_name_completion_unwind): don't leak the cons.

1998-07-20  Greg Klanderman  <greg@alphatech.com>

	* dired.c (Fuser_name_completion): new function.
	(Fuser_name_all_completions): new function.
	(user_name_completion): new function.
	(syms_of_dired): 2 new DEFSUBRs.
	(vars_of_dired): initialize user name cache vars.

1998-07-29  P. E. Jareth Hein  <jareth@camelot.co.jp>

	* glyphs-eimage.c (png_instantiate): Add proper handling for background
	colors taken from the default face.  Also correct a thinko in
	transparency (not alpha) handling.

1998-07-23  Martin Buchholz  <martin@xemacs.org>

	* s/decosf4-0.h:  Use a perfectly ordinary link.  Nuke BSD crap.
	* unexalpha.c: ANSI C-ize.  Clean compiler warnings.
	* lread.c (Fload_internal):  Be very careful with printfs of
	size_t's
	* gui-x.c (menu_name_to_accelerator): tolower wants an `int'
	argument.

1998-07-27  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>

	* callint.c (Fcall_interactively): GCPRO prompt string before
	passing it to Fread_key_sequence

1998-07-27  SL Baur  <steve@altair.xemacs.org>

	* keymap.c (vars_of_keymap): Initialize Vkey_translation_map and
	Vvertical_divider_map.

	* mule-canna.c (vars_of_mule_canna): Initialize every symbol to
	Qnil or 0, none were initialized prior to this change.

	Rename misnamed `V' prefixed integer variables:
	Vcanna_empty_info, Vcanna_through_info, Vcanna_underline,
	Vcanna_inhibit_hankakukana, Vcanna_henkan_length, Vcanna_henkan_revPos,
	Vcanna_henkan_revLen, Vcanna_ichiran_length, Vcanna_ichiran_revPos,
	Vcanna_ichiran_revLen.

	Rename misnamed `V' prefixed integer variables and initialize
	properly in the vars_of routine.
	Vcanna_mode_AlphaMode, Vcanna_mode_EmptyMode, Vcanna_mode_KigoMode,
	Vcanna_mode_YomiMode, Vcanna_mode_JishuMode, Vcanna_mode_TankouhoMode,
	Vcanna_mode_IchiranMode, Vcanna_mode_YesNoMode, Vcanna_mode_OnOffMode,
	Vcanna_mode_AdjustBunsetsuMode, Vcanna_mode_ChikujiYomiMode,
	Vcanna_mode_ChikujiTanMode, Vcanna_mode_HenkanMode,
	Vcanna_mode_HenkanNyuryokuMode, Vcanna_mode_ZenHiraHenkanMode,
	Vcanna_mode_HanHiraHenkanMode, Vcanna_mode_ZenKataHenkanMode,
	Vcanna_mode_HanKataHenkanMode, Vcanna_mode_HanKataHenkanMode,
	Vcanna_mode_ZenAlphaHenkanMode, Vcanna_mode_HanAlphaHenkanMode,
	Vcanna_mode_ZenHiraKakuteiMode, Vcanna_mode_HanHiraKakuteiMode,
	Vcanna_mode_ZenKataKakuteiMode, Vcanna_mode_HanKataKakuteiMode,
	Vcanna_mode_ZenAlphaKakuteiMode, Vcanna_mode_HanAlphaKakuteiMode,
	Vcanna_mode_HexMode, Vcanna_mode_BushuMode, Vcanna_mode_ExtendMode,
	Vcanna_mode_RussianMode, Vcanna_mode_GreekMode, Vcanna_mode_LineMode,
	Vcanna_mode_ChangingServerMode, Vcanna_mode_HenkanMethodMode,
	Vcanna_mode_DeleteDicMode, Vcanna_mode_TourokuMode,
	Vcanna_mode_TourokuEmptyMode, Vcanna_mode_TourokuHinshiMode,
	Vcanna_mode_TourokuDicMode, Vcanna_mode_QuotedInsertMode,
	Vcanna_mode_BubunMuhenkanMode, Vcanna_mode_MountDicMode,
	Vcanna_fn_SelfInsert, Vcanna_fn_FunctionalInsert,
	Vcanna_fn_QuotedInsert, Vcanna_fn_JapaneseMode, Vcanna_fn_AlphaMode,
	Vcanna_fn_HenkanNyuryokuMode, Vcanna_fn_Forward, Vcanna_fn_Backward,
	Vcanna_fn_Next, Vcanna_fn_Prev, Vcanna_fn_BeginningOfLine,
	Vcanna_fn_EndOfLine, Vcanna_fn_DeleteNext, Vcanna_fn_DeletePrevious,
	Vcanna_fn_KillToEndOfLine, Vcanna_fn_Henkan, Vcanna_fn_Kakutei,
	Vcanna_fn_Extend, Vcanna_fn_Shrink, Vcanna_fn_AdjustBunsetsu,
	Vcanna_fn_Quit, Vcanna_fn_ConvertAsHex, Vcanna_fn_ConvertAsBushu,
	Vcanna_fn_KouhoIchiran, Vcanna_fn_BubunMuhenkan, Vcanna_fn_Zenkaku,
	Vcanna_fn_Hankaku, Vcanna_fn_ExtendMode, Vcanna_fn_ToUpper,
	Vcanna_fn_Capitalize, Vcanna_fn_ToLower, Vcanna_fn_Hiragana,
	Vcanna_fn_Katakana, Vcanna_fn_Romaji, Vcanna_fn_BaseHiragana,
	Vcanna_fn_BaseKatakana, Vcanna_fn_BaseEisu, Vcanna_fn_BaseZenkaku,
	Vcanna_fn_BaseHankaku, Vcanna_fn_BaseKana, Vcanna_fn_BaseKakutei,
	Vcanna_fn_BaseHenkan, Vcanna_fn_BaseHiraKataToggle,
	Vcanna_fn_BaseZenHanToggle, Vcanna_fn_BaseKanaEisuToggle,
	Vcanna_fn_BaseKakuteiHenkanToggle, Vcanna_fn_BaseRotateForward,
	Vcanna_fn_BaseRotateBackward, Vcanna_fn_Touroku, Vcanna_fn_HexMode,
	Vcanna_fn_BushuMode, Vcanna_fn_KigouMode, Vcanna_fn_Mark,
	Vcanna_fn_TemporalMode, Vcanna_key_Nfer, Vcanna_key_Xfer,
	Vcanna_key_Up, Vcanna_key_Left, Vcanna_key_Right, Vcanna_key_Down,
	Vcanna_key_Insert, Vcanna_key_Rollup, Vcanna_key_Rolldown,
	Vcanna_key_Home, Vcanna_key_Help, Vcanna_key_KP_Key,
	Vcanna_key_Shift_Nfer, Vcanna_key_Shift_Xfer, Vcanna_key_Shift_Up,
	Vcanna_key_Shift_Left, Vcanna_key_Shift_Right, Vcanna_key_Shift_Down,
	Vcanna_key_Cntrl_Nfer, Vcanna_key_Cntrl_Xfer, Vcanna_key_Cntrl_Up,
	Vcanna_key_Cntrl_Left, Vcanna_key_Cntrl_Right, Vcanna_key_Cntrl_Down

1998-07-16  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* event-Xt.c (x_to_emacs_keysym): Return nil for modifier keysyms.
	(x_event_to_emacs_event): Let x_to_emacs_keysym check for modifier
	keys thus no longer considering all keysyms on a key.

1998-07-19  SL Baur  <steve@altair.xemacs.org>

	* XEmacs 21.2-beta1 is released.

1998-07-12  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.c (Fldap_search_internal): When converting the list of
	attributes to search Copy the final 0 from Lisp strings to C
	strings.
	Check base, not Vldap_default_base as a a string

1998-07-13  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* nt.c: Remove Vstdio_str; already defined in console-stream.c.

	* unexnt.c: Unconditionally define bss_start and bss_size, and
	  ensure that they don't go in the .bss section.

1998-07-17  Olivier Galibert  <galibert@pobox.com>

	* glyphs-x.c (convert_EImage_to_XImage):  Fix previous patch (conv
	byte order is dependant  of  the local  byte order).
	From Takeshi Hagiwara <hagiwara@ie.niigata-u.ac.jp>

1998-07-18  SL Baur  <steve@altair.xemacs.org>

	* glyphs-msw.c (mswindows_resource_normalize): Qresource ->
	Qmswindows_resource.
	From Jonathan Harris <jhar@tardis.ed.ac.uk>

1998-07-12  SL Baur  <steve@altair.xemacs.org>

	* general.c (syms_of_general): Add defsymbol for Qresource.

	* glyphs-msw.c (vars_of_glyphs_mswindows): Rename Qresource to
	Qmswindows_resource.
	(TopLevel): Rename 'resource image format to 'mswindows_resource.
	(mswindows_resource_validate): Rename.
	(mswindows_resource_normalize): Rename.
	(mswindows_resource_possible_dest_types): Rename.
	(mswindows_resource_instantiate): Rename.
	(image_instantiator_format_create_glyphs_mswindows): Replace
	`resource' with `mswindows.resource'.

	* XEmacs 21.0-pre5 is released.

1998-07-10  SL Baur  <steve@altair.xemacs.org>

	* mule-wnnfns.c (Fwnn_open): Correctly trap on misdefined Wnn
	server type in environment.
	Use alloca-ed strings instead of tiny fixed size ones.

1998-07-09  SL Baur  <steve@altair.xemacs.org>

	* XEmacs 21.0-pre4 is released.

1998-07-01  James N. Potts  <jnpotts@plutonium.net>

	* fileio.c: (expand_file_name): under win32: Don't treat names
	as UNC names if a drive letter has been specified.  If a drive
	has been specified, strip out extra directory-separators that
	reportedly cause problems under Win95.

1998-07-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* windowsnt.h: Define DUMP_SEPARATE_SECTION when building with
	  MSVC >= 5.0. Put emacs init and zero-init data in a special
	  section of the executable when this is defined.

	* unexnt.c, ntheap.h:
	  Removed unused find_section() and get_section_size().

	* unexnt.c:
	  Fix up the executable's checksum after dumping otherwise the
	  profiler complains.
	  When DUMP_SEPARATE_SECTION is defined, don't need to dump
	  zero-init data separately from init data. Dump emacs data
	  into a special section of the executable.
	  When DUMP_SEPARATE_SECTION not defined, dump .bss up to
	  my_ebss instead of up to the end of bss.

1998-07-09  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* filelock.c: Removed Vconfigure_lock_directory - already
	  defined in emacs.c.

	* frame-msw.c: Removed Qinitially_unmapped and Qpopup - already
	  defined in frame.c and general.c respectively.

	* glyphs-msw.c: Removed Qresource - already defined in
	  general.c.

1998-07-05  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.c (Fldap_search_internal): Docstring fixes

1998-07-04  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* nt.c (init_environment): Removed unused PRELOAD_WINSOCK,
	  EMACSDOC and TERM variables. Added EMACSDEBUGPATHS,
	  EMACSPACKAGEPATH and INFOPATH variables.
	  Removed unused get_emacs_configuration function.

	* s/windowsnt.h: Don't define EMACS_CONFIGURATION here because
	  it is now defined at build-time by the makefile.

1998-07-01  James N. Potts  <jnpotts@plutonium.net>

	* fileio.c: (expand_file_name): under win32: Don't treat names as
	UNC names if a drive letter has been specified.  If a drive has
	been specified, strip out extra directory-separators that
	reportedly cause problems under Win95.

1998-07-05  Andy Piper  <andyp@parallax.co.uk>

	* faces.c (complex_vars_of_faces): for the gui-element face don't
	fallback to the default face, instead provide reasonable default
	fallbacks that were previously hardcoded elsewhere.

1998-07-06  Olivier Galibert  <galibert@pobox.com>

	* glyphs-x.c (convert_EImage_to_XImage): Fix pixel writing problem
	when the X server endianness is different than the client's one.

1998-06-29  Kyle Jones  <kyle_jones@wonderworks.com>

	* eval.c (run_hook_with_args_in_buffer): Check
	  default (non-buffer-local) value of hook for
	  nil before treating it as a function.  Don't initialize
	  the `globals' variable twice.

1998-06-24  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* fileio.c: Don't do directory separator canonicalisation in
	  substitute-in-file-name because we don't know that the
	  filename refers to a local file.

1998-06-24  Adrian Aichner  <adrian@xemacs.org>

	* process-nt.c (nt_create_process): Try appending the standard
	  executable file extensions to the filename if none supplied.

1998-06-29  SL Baur  <steve@altair.xemacs.org>

	* fileio.c (Fsubstitute_in_file_name): Enable double slash notation
	for cygwin32.
	From Keisuke Mori <ksk@ntts.com>

1998-06-24  Andy Piper  <andyp@parallax.co.uk>

	* toolbar-msw.c (mswindows_output_toolbar): only enable masked
	images if we have masks. This handles the xbm case (have masks)
	and avoids overuse of resources in the xpm case (generally no masks).
	Don't output small toolbars.

1998-06-29  Kyle Jones  <kyle_jones@wonderworks.com>

	* eval.c (run_hook_with_args_in_buffer): Don't treat
	  the default value of a buffer local hook as a list of
	  hooks unless it is both a cons and the car of that cons
	  is not Qlambda.

1998-06-29  SL Baur  <steve@altair.xemacs.org>

	* extents.c: Email address for Ben Wing is ben@xemacs.org.
	* process-unix.c: Ditto.
	* mule-coding.h: Ditto.
	* mule-coding.c: Ditto.
	* mule-charset.c: Ditto.
	* mule-charset.h: Ditto.
	* file-coding.c: Ditto.
	* file-coding.h: Ditto.

1998-06-22  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* event-msw.c: Guard against recursion when freeing
	  FRAME_MSWINDOWS_TARGET_RECT struture in WM_SIZE processing.

	* frame-msw.c: Don't set WS_VISIBLE attribute on first frame.
	  Call ShowWindow twice in init_frame_3 to get round runemacs
	  weirdness.

1998-06-27  Hrvoje Niksic  <hniksic@srce.hr>

	* scrollbar.c (vertical_scrollbar_changed_in_window): Ditto.

	* winslots.h: Rename.

	* window.c (specifier_vars_of_window): Renamed
	vertical-divider-draggable-p to vertical-divider-always-visible-p,
	as suggested by Ben Wing.
	(specifier_vars_of_window): Fix docstrings.

1998-06-22  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* unexaix.c: Line number information works correctly again.

1998-06-22  Olivier Galibert  <galibert@pobox.com>

	* emacs.c (__sti__iflPNGFile_c___): Added. See comment. Cry.

1998-06-21  Martin Buchholz  <martin@xemacs.org>

	* editfns.c (get_home_directory): ANSIfy.
	XEmacs is compilable under C *and* C++.
	It's XEmacs, not Xemacs!

1998-06-19  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* console-msw.h: added a list of fonts to device data.

	* device-msw.c: enumerate list of available fonts in
	  mswindows_init_device. Free list in mswindows_delete_device.

	* objects-msw.c: Added helper function match_font used by
	  mswindows_initialize_font_instance and mswindows_list_fonts.
	  Allow a charset to be specified in a font string, even if
	  previous fields haven't been specified.

1998-06-23  Greg Klanderman  <greg@alphatech.com>

	* indent.c (column_at_point): column cache bugfix.
	Set last_known_column_point to the buffer position for
	which the column was requested, not buffer's point.

	* redisplay.c (decode_mode_spec): for current-column, show
	window's point's column, not buffer's point's column.

1998-06-23  Andy Piper  <andyp@parallax.co.uk>

	* menubar-msw.c (mswindows_handle_wm_command): use
	enqueue_misc_user event rather than
	mswindows_enqueue_msic_user_event to fix customize problems. Add some
	checks that X does.

	* console-msw.h: declare mswindows_enqueue_magic_event.

	* event-msw.c (mswindows_enqueue_magic_event): make global.

1998-06-24  Hrvoje Niksic  <hniksic@srce.hr>

	* line-number.c (LINE_NUMBER_FAR): Reverted to 16384.
	(buffer_line_number): Use EMACS_INT_MAX instead of random LOTS.
	(add_position_to_cache): Use EMACS_INT instead of int.

1998-06-21  Olivier Galibert  <galibert@pobox.com>

	* lisp-disunion.h (XMARKBIT): Have XMARKBIT return something
	suitable for an int used as a boolean (btw, C sucks.).

1998-06-18  Andy Piper  <andyp@parallax.co.uk>

	* object-msw.c: remove warnings.

	* device-msw.c: #define wrongly named cygwin structure elements.

	* s/cygwin32.h: define DEMI_BOLD

1998-06-19  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* redisplay-msw.c: new function mswindows_apply_face_effects.
	  This is called by output_string and output_cursor to display
	  underline and strikeout on faces.

1998-06-19  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* console-msw.h: added a list of fonts to device data.

	* device-msw.c: enumerate list of available fonts in
	  mswindows_init_device. Free list in mswindows_delete_device.

	* objects-msw.c: Added helper function match_font used by
	  mswindows_initialize_font_instance and mswindows_list_fonts.
	  Allow a charset to be specified in a font string, even if
	  previous fields haven't been specified.

1998-06-15  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* objects-msw.c:
	  Removed compilation warnings from mswindows_string_to_color.
	  mswindows_list_fonts returns a more general bogus font.
	  New lisp-visible function mswindows-color-list.

1998-06-19  David Bush <david.bush@adn.alcatel.com>

	* editfns.c (Fuser_login_name): Modify to user new function
	user_login_name.
	(user_login_name): C only function to avoid Lisp object overhead
	Returns "unknown" instead of nil in Cygwin environment

	* fileio.c (Fexpand_file_name): Treat "~" and "~user" as
	equivalent for current user in Cygwin environment. Use new
	function user_login_name to get username.

	* lisp.h: Declare user_login_name

1998-06-18  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* unexaix.c (make_hdr): Fixed bias computations so debugging info
	works again.
	Some other insignificant nitpicks.

1998-06-18  Andy Piper  <andyp@parallax.co.uk>

	* toolbar-msw.c (mswindows_output_toolbar): specify ILC_MASK when
	creating the image list and make sure he bk color is transparent.

1998-06-18  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* event-Xt.c (emacs_Xt_remove_timeout): Also remove timeout from
	completed_timeouts. The timer could have expired.

1998-06-17  Andy Piper  <andyp@parallax.co.uk>

	* console-msw.h: move XEMACS_RECT_WH inside frame
	parameters. define macors to access it.

	* frame-msw.c (mswindows_init_frame_1): use new target_rect
	parameter to initialize desired sizing. (mswindows_init_frame_2):
	enable and size the frame to something sensible when we get
	here. (mswindows_set_frame_properites): use new
	mswindows_size_frame_internal function and size frame if frame
	parameters not just if init is finished - WM_SIZE happens too
	early for some specs. (mswindows_size_frame_internal): new
	function abstracted from mswindows_set_frame_properties.
	(Vmswindows_use_system_frame_size_defaults):
	new variable controls whether to allow the system to pick frame
	size defaults, defaults to nil.

	* event-msw.c: in WM_SIZE use mswindows_size_frame_internal rather
	than duplicated code.

1998-06-15  Colin Rafferty <colin@xemacs.org>

	* Makefile.in.in: Made EXTW_LINK expand properly.

1998-06-12  Martin Buchholz  <martin@xemacs.org>

	* redisplay.c (vars_of_redisplay): default value of
	column-number-start-at-one should be NIL!

1998-06-11  Martin Buchholz  <martin@xemacs.org>

	* casefiddle.c:
	(upcase-initials "fooBar") ==> "FooBar" instead of "Foobar"

1998-06-05  Hrvoje Niksic  <hniksic@srce.hr>

	* eldap.c (Fldap_search_internal): Use build_ext_string instead of
	build_string to avoid crashes under Mule.

1998-06-13  Andy Piper  <andyp@parallax.co.uk>

	* ntplay.c (play_sound_data_1): don't delete the sound data until
	the next sound is played and the previous one finished.

1998-06-10  Samuel Mikes  <smikes@alumni.hmc.edu>

	* fileio.c (directory-sep-char): Escape backslashes.

1998-06-10  Hrvoje Niksic  <hniksic@srce.hr>

	* event-stream.c: Fix docstring reference.

1998-06-12  Hrvoje Niksic  <hniksic@srce.hr>

	* alloc.c (make_float): Remove useless initialization of `next'
	field.
	(make_pure_float): Ditto.

	* lisp.h (struct Lisp_Float): Rename `next' to `__unused__next'.

1998-06-08  Kirill M. Katsnelson  <kkm@kis.ru>

	* fileio.c (Fmake_directory_internal): Remove conditionals
	on WINDOWSNT when calling mkdir.

	* ntproc.c: Deleted the following unused functions:
	register_child, reap_subprocess, sys_wait.

	* nt.c (sys_rename): Ifzeroed this implementation.
	Deleted the following unused functions:
	sys_access, sys_chdir, sys_chmod, sys_creat, sys_link, sys_mkdir,
	sys_mktemp, sys_rmdir, sys_unlink, sys_close, sys_dup, sys_dup2,
	sys_read, sys_write.
	Merger sys_fopen and sys_open with sysdep.c implementation.

	* sysdep.c: Removed MS-DOS code.
	(sys_rename): Deal with Microsoft rename weirdness.
	(sys_open): Implemented for Windows.
	(sys_fopen): Ditto.
	(sys_mkdir): Ditto.

1998-06-08  Kirill M. Katsnelson  <kkm@kis.ru>

	* buffer.c (complex_vars_of_buffer): Removed %t description from
	the docstring.

1998-06-04  Rick Rankin  <Rick_Rankin-P15254@email.mot.com>

	* scrollbar-msw.c: initialize the cbSize element of the
	SCROLLINFO struct before calling SetScrollInfo. WinNT seems
	to ignore the value of cbSize, but Win95 (and I presume Win98)
	appear to want it set to sizeof(SCROLLINFO).

1998-06-04  Kirill M. Katsnelson  <kkm@kis.ru>

	* event-stream.c: Defined Qcancel_mode_internal.
	(syms_of_event_stream): defsymbol'ed it.

	* events.h: Externed it.

	* event-msw.c (mswindows_wnd_proc, WM_CANCELMODE): Added this handler.

1998-06-04  Oliver Graf <ograf@fga.de>

	* frame-x.c (x_cde_destroy_callback): free the data
	(cde-start-drag-internal) corrected root position, 21.1 needs this
	hardcoded in Button events
	(offix-start-drag-internal) corrected root position

1998-06-03  Kirill M. Katsnelson  <kkm@kis.ru>

	* process-nt.c (signal_cannot_launch): Use signal_simple_error()
	instead of error().

1998-06-03  Kirill M. Katsnelson  <kkm@kis.ru>

	* dialog-msw.c (button_width): Removed `inline' from the function
	declaration.

1998-06-03  Rick Rankin  <Rick_Rankin-P15254@email.mot.com>

	* frame-msw.c: add WS_VISIBLE flag to the first frame created.
	Note that adding this flag to subsequent frames causes problems.

1998-06-03  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>

	* glyphs-eimage.c (png_instantiate) move 'struct
	png_memory_storage tbr' out of nested block to avoid dangling
	reference

1998-06-02  Andy Piper  <andyp@parallax.co.uk>

	* faces.h:
	* faces.c: rename 3d-object -> gui-element. add toolbar face which
	inherits from gui-element.

	* glyphs-msw.c: use DIBitmaps for xbm bitmaps to be consistent
	with existing code, generate masks correctly.

1998-06-03  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-eimage.c: Changed included header for gifs to use
	Gifreader instead of giflib.

	* glyphs-x.c: removed the image-related functions that were
	moved into glyphs-eimage.

1998-06-02  David Bush  <david.bush@adnb.alcatel.com>

	* glyphs.c (bitmap_to_lisp_data) Define XFree to be free
	if built without X Windows support.

1998-06-02  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fconcat): Synch docstring with new reality.

1998-06-03  SL Baur  <steve@altair.xemacs.org>

	* frame.c: Remove reference to msdos.h (which is going away).
	Suggested by Hrvoje Niksic and Kirill Katsnelson.

1998-06-02  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-eimage.c (jpeg_instantiate): Fix handling of
	grayscale images/


1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>

	* events.h: Fixed commentary about misc-user scrollbar events.

	* scrollbar-x.c (x_update_vertical_scrollbar_callback): Use frame
	object as an event channel, instead of window object.
	(x_update_horizontal_scrollbar_callback): Ditto.

1998-05-29  Andy Piper  <andyp@parallax.co.uk>

	* ntplay.c (play_sound_data_1) new function. convert alloca data
	to malloc if necessary.
	(play_sound_file): if the file is not in our path then convert to
	data and play.

1998-06-01  SL Baur  <steve@altair.xemacs.org>

	* mule-mcpath.c (mc_chdir): Reverse parameters in call to memcpy.
	* msdos.c (Frecent_doskeys): Ditto.

	* unexalpha.c (unexec): Reverse parameters in call to memcpy.
	Suggested by Reggie Perry <perry@zso.dec.com>

	* buffer.h: Eliminate size in declaration.

1998-06-01  Olivier Galibert  <galibert@pobox.com>

	* unexelfsgi.c (unexec): Cleanup n/nn and remove useless kludge.

1998-06-01  Kirill M. Katsnelson  <kkm@kis.ru>

	* gui.c (gui_item_init): Changed the default value for config member
	from Qunbound to Qnil.

1998-06-01  Greg Klanderman  <greg@alphatech.com>

	* indent.c (vmotion_pixels): Don't #define abs().

1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>

	* s/windowsnt.h: Defined popen and pclose to be _popen and _pclose
	respectively.

1998-05-30  Andy Piper  <andyp@parallax.co.uk>

	* glyphs.h: add xbm declarations.

	* console.h: add xbm_instantiate_method device method.

	* glyphs.c (check_valid_xbm_inline) (xbm_validate)
	(bitmap_to_lisp_data) (xbm_mask_file_munging) (xbm_normalize)
	(xbm_possible_dest_types): moved here from glyphs-x.c. use
	locate_pixmap_file device method and read_bitmap_data_from_file
	instead of XmuReadBitmapDataFromFile.
	(xbm_instatntiate): make a device method.

	* glyphs-x.c: see glyphs.c changes. (read_bitmap_data_from_file)
	new function that just calls XmuReadBitmapDataFromFile.
	(x_xbm_instatntiate): device method from xbm_instantiate.

	* glyphs-msw.c (read_bitmap_data) (NextInt)
	(read_bitmap_data_from_file): new functions copied from Xmu
	sources.
	(xbm_create_bitmap_from_data) from Ben <ben@666.com> convert
	inline data to an mswindows bitmap.
	(init_image_instance_from_xbm_inline) (xbm_instantiate_1)
	(mswindows_xbm_instantiate): mswindows-ized versions of the X
	functions.

1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>

	* window.c (specifier_vars_of_window): Renamed `has_modeline-p' to
	`modeline-visible-p'.
	Declared specifier lisp variables at the beginning oh the file
	as static.

	* procimpl.h (struct process_methods): Changed semantics of
	create_process method so it accepts lisp strings instead of
	char pointers.

	* process.c (Fstart_process_internal): Moved building of
	unix style argv from here to process-unix.c, ...

	* process-unix.c (unix_create_process): ... right here.

	* process-nt.c (nt_create_process): Changed this function to
	support new semantics, so avoided a GC problem.

	* events.c (Fmake_event): Document misc-user events properties.
	(Fmake_event): Do not allow arbitrary objects for channel property
	of misc-user events.
	(Fmake_event): Change misc-user event validation: it is function
	which is required, not button.

	* event-msw.c (mswindows_user_event_p): Recognize misc user events as
	user events.
	(mswindows_enqueue_misc_user_event): Added function.
	(mswindows_bump_queue): Removed function.
	(mswindows_enqueue_magic_event): Support NULL HWND parameter.
	(mswindows_wnd_proc, WM_CLOSE): Use mswindows_enqueue_misc_user_event().
	(mswindows_wnd_proc, WM_EXITSIZEMOVE): Ditto.
	(emacs_mswindows_handle_magic_event): Handle XM_BUMPQUEUE, by doing
	really nothing, which is my personal favorite thing.

	* console-msw.h: Removed prototype for mswindows_bump_queue().
	Added prototype for mswindows_enqueue_misc_user_event().

	* menubar-msw.c (mswindows_handle_wm_command): Use
	mswindows_enqueue_misc_user_event().

	* toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto.

	* dialog-msw.c (dialog_proc): Ditto.

	* scrollbar-msw.c (mswindows_handle_scrollbar_event): Ditto.
	 (mswindows_handle_scrollbar_event): Use frame, not window, for misc
	user events channel.

1998-05-29  Greg Klanderman  <greg@alphatech.com>

	* window.c (Fwindow_displayed_text_pixel_height): was relying on
	incorrect semantics of vmotion_pixels which has been fixed.  don't
	use it anymore as it can't easily be used.

	* indent.c (vmotion_pixels): fix off by one bug moving up.  also
	the motion was reported incorrectly if you tried to go past end of
	buffer.

1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>

	* toolbar.h: Removed misleading commentary, as Martin suggested.

1998-05-30  Kirill M. Katsnelson  <kkm@kis.ru>

	* lisp.h: Extern Qactivate_menubar_hook.

	* menubar-msw.c (unsafe_handle_wm_initmenu_1): Pass correct value to
	run_hook ().

1998-05-29  Andy Piper  <andyp@parallax.co.uk>

	* glyphs-msw.c: use BPLINE macro.

	* select-msw.c (mswindows-selection-exists-p)
	(mswindows-delete-selection): doc string fixes.

	* toolbar-msw.c (mswindows_output_toolbar): make disabled buttons
	unpressable. warning elimination.

1998-05-28  Martin Buchholz  <martin@xemacs.org>

	* alloc.c (dbg_constants):
	* dbxrc:
	* gdbinit:
	Remove toolbar_data debugging code, since that lrecord has
	also been removed.

Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>

	* alloc.c: zap cached value of (user-home-directory), so that
	  it's not undumped.

	* buffer.c: From init_buffer(), separated out code that
	  determined the initial directory for the *scratch* buffer, and
	  put them into a function called "init_initial_directory()".
	  The initial directory is now available as a global "char *"
	  called initial_directory.

	* buffer.h: Added extern entries for initial_directory[] and
	  init_initial_directory().

	* editfns.c: added new elisp function "user-home-directory",
	which basically returns getenv("HOME"), but attempts to use
	other values if $HOME isn't set.This may have to be tweaked in
	the future as, under Unix, "/" is used if $HOME isn't set (this
	probably should be set to the current directory).  To support
	this, a new C function, "get_home_directory()", now exists,
	which returns the "home directory", as a "char *" string.

	* emacs.c: Rearrange NT initialization order so that
	environment/registry variables will be properly entered into
	Vprocess_environment.

	* fileio.c: replaced egetenv("HOME") with calls to the new
	  get_home_directory().

	* lisp.h: Added function prototypes for uncache_home_directory()
	  and get_home_directory(), along with lisp prototypes for
	  Fuser_home_directory() and friends.

	* nt.c: replaced getenv("HOME") with calls to the new
	  get_home_directory().

	* sysfile.h: for WINDOWSNT, #include <direct.h>, to suppress
	  warnings about getcwd(), etc. not having prototypes.

1998-05-28  Kirill M. Katsnelson  <kkm@kis.ru>

	* process-nt.c (send_signal): Emulate SIGHUP.
	(validate_signal_number): Ditto.

	* event-msw.c (mswindows_wnd_proc, WM_KEYDOWN): Unconditionally
	remove MOD_SHIFT from ASCII characters.
	(mswindows_wnd_proc, WM_KEYDOWN): Do not activate the menubar when
	F10 is pressed.

1998-05-24  Oliver Graf <ograf@fga.de>

	* frame-x.c (cde-start-drag-internal): added filename and multi-
	data transfers
	(x_cde_convert_callback) dito

1998-05-26  Oliver Graf <ograf@fga.de>

	* frame-x.c: include event-mod.h also with CDE
	(x_cde_convert_callback) made the thing working
	(cde-start-drag-internal) also debugging

1998-05-25  Hans Guenter Weigand  <hgweigand@wiesbaden.netsurf.de>

	* m/sparc.h:
	* getloadavg.c:
	* malloc.c:
	* unexec.c:
	* mem-limits.h:
	  - add __OpenBSD__ where __NetBSD__ was found.
	  - TODO: replace platform-specific conditional compilation by
	    feature tests in configure.in.

1998-05-15  Greg Klanderman  <greg@alphatech.com>

	* window.c (Fwindow_displayed_text_pixel_height): New function.
	(syms_of_window): DEFSUBR it.

	* indent.c (Fvertical_motion_pixels): New function - request
	movement in pixels.
	(vmotion_pixels): helper.
	(syms_of_indent): DEFSUBR.
	* lisp.h: declaration for vmotion_pixels().

	* indent.c (Fvertical_motion): Add optional third argument PIXELS,
	to request returning motion in pixels.
	(Fvertical_motion_pixels): Remove, functionality merged into
	Fvertical_motion.
	* window.c (window_scroll): call Fvertical_motion with 3 arguments.
	(Fmove_to_window_line): ditto.
	* lisp.h: Change declaration for Fvertical_motion.

	* window.c: rename window-text-pixel-{height,width,edges} to
	window-text-area-pixel-*.

1998-05-26  Gunnar Evermann  <Gunnar.Evermann@nats.informatik.uni-hamburg.de>

	* tooltalk.c (vars_of_tooltalk) added staticpro for
	Tooltalk_Message_plist_str and Tooltalk_Pattern_plist_str

1998-05-27  Andy Piper  <andyp@parallax.co.uk>

	* faces.c: create a new 3d_object_face, make modeline and
	vertical_divider faces fallback to this rather than the default.

1998-05-21  Andy Piper  <andyp@parallax.co.uk>

	* s/cygwin32.h: define charsets for cygwin.

1998-05-25  Andy Piper  <andyp@parallax.co.uk>

	* toolbar-msw.c (mswindows_output_toolbar): fix up button sizes
	and coordinates. resize bitmaps if we have already settled on a
	different size.

	* glyphs-msw.c (xpm_to_eimage): add ';' for mswindows compiler.

1998-05-25  Hrvoje Niksic  <hniksic@srce.hr>

	* toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto.

	* menubar-msw.c (mswindows_handle_wm_command): Ditto.

	* gui.h: Ditto.

	* gui-x.c (popup_selection_callback): Ditto.

	* dialog-msw.c (dialog_proc): get_callback -> get_gui_callback.

	* gui.c (get_callback): Renamed to get_gui_callback.

1998-05-17  Martin Buchholz  <martin@xemacs.org>

	* glyphs.h: order rearrangement.

	* device-tty.c (tty_asynch_device_change): Warning suppression.
	* device-x.c (x_device_system_metrics): Warning suppression.
	Make Doc strings consistent with coding standards.

1998-05-24  Martin Buchholz  <martin@xemacs.org>

	* general.c: multiple definition of `Qicon'.  general.c seems
	  like a good home for Qicon.

1998-05-20  Kirill M. Katsnelson  <kkm@kis.ru>

	* This patch is to fix compilation warnings under Windows.

	* s/windowsnt.h: Encapsulate getpid with sys_getpid.
	Added prototypes for FSF inherited functions, with which XEmacs is
	sprinkled thoroughly.
	Removed some #if 0 code. Bracketed some more definitions, probably
	related to Visual C versions prior to 4 (we do not support them).

	* sysfloat.h (logb): Finally, get logb() prototyped.

	* sysfile.h: Added Windows specific includes.
	Removed old Windows specific code bracketed with #if 0.

	* sysdep.h: Added prototype for xrealpath().

	* sysdep.c (sys_getpid): Added function, to support '95 negative pids.

	* symsinit.h: Added prototypes for syms_of_dired_mswindows,
	vars_of_dired_mswindows and init_ntproc (Grrr).

	* realpath.c: Added Windows specific include files.
	(xrealpath): Conditionalized declaration of some auto variables on
	S_IFLNK, to avoid warnings.

	* ntproc.c: Disabled some compiler warnings. This file is going to
	die, so I have not cleaned it up much.
	(set_process_dir): Const parameter.
	(Fwin32_short_file_name): Down CHECK_* macros to one argument.
	(Fwin32_long_file_name): Ditto.
	(Fwin32_set_process_priority): Ditto. Why didn't I remove these
	three functions?

	* nt.h: Added prototypes for set_process_dir and convert_time.

	* nt.c: More include files.
	(getpwnam): Consted char* argument.
	(get_emacs_configuration): Const return value.
	(opendir): Const argument.
	(stat): Casted converstion long->short.
	(stat): Removed ad hoc and questionable support for non-MSC compile.
	(sys_pipe): Removed unused auto variable.
	(_sys_read_ahead): Removed calls to DebPrint.
	(sys_read): Ditto, in 2 places.
	(term_ntproc): Added unused int parameter to signal handler, to
	avoid a warning when compiling a call to signal().
	(msw_sigset): Properly return old signandler or NULL instead of void.

	* floatfns.c (Flogb): Casted arguments to unary minus to signed.

	* gmalloc.c (morecore): Ditto.
	(_free_internal): Ditto.

	* lread.c (parse_integer): Ditto.

	* dired-msw.c: Added several include files.

	* cmdloop.c (Fcommand_loop_1): Added Microsoft C to the Big List
	of Compilers to Shut Up.

	* callproc.c: Added #includes to suppress warnings under Windows.
	(init_callproc): Removed #if0'ed code and unused variables.

1998-05-25  Andy Piper  <andyp@parallax.co.uk>

	* device-msw.c (mswindows_device_system_metrics): do planes in a
	way consistent with X.

	* glyphs-msw.c (mswindows_initialize_image_instance_mask): don't
	use SetPixel, use DIBits functions.
	(xpm_to_eimage): frob colors more closely like xpm deos.

	* toolbar-msw.c: only resize bitmaps when shrinking. Adjust look
	to be closer to X version.

	* event-msw.c: use tooltip string directly.

	* redisplay-msw.c: reinstate Kirill's bg pixmap change.

	* objects-msw.c: frob rgb colors that only Kyle uses.

	* dialog-msw.c (button_width): INLINE -> inline.

1998-05-23  SL Baur  <steve@altair.xemacs.org>

	* getloadavg.c (getloadavg): Fix typo.

1998-05-23  Kirill M. Katsnelson  <kkm@kis.ru>

	* objects-msw.c (mswindows_initialize_font_instance): Added support
	for font character sets.
	Replaced 'XXX' with '####' in comments throughout the file.

1998-05-23  Kirill M. Katsnelson  <kkm@kis.ru>

	* emacs.c (main_1): Added calls to vars_of_dialog_mswindows() and
	console_type_create_dialog_mswindows(), to initialize Windows dialog
	support.

	* symsinit.h: Prototyped the above functions.

	* dialog-x.c (x_popup_dialog_box): Moved dialog descriptor consistency
	checks to dialog.c...

	* dialog.c (Fpopup_dialog_box): ...right here. Added more checks: a
	device must support dialog boxes, and the descriptor must supply at
	least one button.

	* dialog-msw.c: New file, dialogs for Windows.

1998-05-21  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.c (ldap_search_unwind): Return Qnil instead of nothing
	(Fldap_search_internal): Removed unused variable `err'

	* eldap.h: Moved Lisp_LDAP declaration here instead of using a
	forward declaration

1998-05-17  Martin Buchholz  <martin@xemacs.org>

	* eldap.h: eldap.[ch] should never be used unless HAVE_LDAP is
	defined.  Therefore there is no need to handle the case when
	HAVE_LDAP is undefined.  Similarily, there is no reason to have
	any code wrapped within `#ifdef emacs', since this code is only
	useful within an emacs.  This simplifies the code significantly.

	* inline.c: Include eldap.h only if HAVE_LDAP.
	* inline.c: Don't bother including TT_C_H_PATH, since tooltalk.h
	already does that.

1998-05-21  Kirill M. Katsnelson  <kkm@kis.ru>

	* unexnt.c (copy_executable_and_dump_data_section): Suppress
	printing dump stats when building without DEBUG_XEMACS.
	(dump_bss_and_heap): Ditto.

1998-05-21  Andy Piper  <andyp@parallax.co.uk>

	* gnuclient.c: don't suppress window system if there is no display
	and we are running under mswindows. send 'mswindows device type if
	we are in this situation.

1998-05-20  Andy Piper  <andyp@parallax.co.uk>

	* general.c:
	* lisp.h: Qbitmap, Qcursor, Qicon moved here from glyphs-msw.c.

	* glyphs-msw.c: change cursor imgae type name to resource. Fix
	some nits.

1998-05-20  Kirill M. Katsnelson  <kkm@kis.ru>

	* EmacsFrame.c (Xt_StringToScrollBarPlacement):  Added support for
	{top,bottom}-{left,right} values in addition to
	{top,bottom}_{left,right}.

1998-05-18  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Fmake_temp_name): Remove unreached code.

	* process-nt.c (validate_signal_number): Use
	signal_simple_error().

1998-05-19  Martin Buchholz  <martin@xemacs.org>

	* unexhp9k800.c:
	* sound.c (vars_of_sound):
	* sysdep.c (reset_sigio_on_device):
	* window.c (window_bottom_gutter_height):
	unexhp9k800.c:258: warning: implicit declaration of function
	`calculate_checksum'
	sound.c:604: warning: implicit declaration of function `vars_of_hpplay'
	sysdep.c:1012: warning: unused variable `owner'
	window.c:993: warning: `window_right_toolbar_width' defined but not used

1998-05-19  Andy Piper  <andyp@parallax.co.uk>

	* glyphs-msw.c (mswindows_create_resized_mask)
	(mswindows_create_resized_bitmap): new funnctions split out from
	mswindows_resize_dibitmap_instance.

	* glyphs-msw.h: declare new resize functions.

	* toolbar-msw.c (mswindows_output_toolbar): use new bitmap resize
	functions so that the original bitmaps are preserved.

	* sheap.c: fixup static heap exhausted error to avoid FAQs.

	* redisplay-msw.c (mswindows_output_blank): fixup brush from bg
	color if we are trying to output 0 depth bg pixmap.

	* scrollbar-msw.c: warning elimination.

1998-05-18  Martin Buchholz  <martin@xemacs.org>

	* frame-x.c (x_update_frame_external_traits): Start preprocessor
	directives in column 1.

	* search.c (skip_chars): Avoid using xzero with arrays, since some
	compilers get confused by the construct &array.

1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>

	* objects-msw.h:
	* objects-msw.c: Changed the charset value for a new font from
	"don't care" to "ansi".

	* glyphs-msw.c (convert_EImage_to_DIBitmap): Warnings fix.

1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>

	* event-msw.c (mswindows_wnd_proc, WM_KEYDOWN): Do not clear shift
	modifier on control chars.
	Use IsCharAlpha() instead of isaplha().

1998-05-19  Kazuyuki IENAGA <ienaga@jsys.co.jp>

	* s/freebsd.h: FreeBSD 2.2.6 now supports setlocale(LC_ALL, "").

1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>

	* objects-msw.c (mswindows_initialize_font_instance): Use ANSI
	charset when creating font.
	(mswindows_initialize_color_instance): Do not create brush along
	with a color.
	(mswindows_finalize_color_instance): Do not delete it then.

	* objects-msw.h (struct mswindows_color_instance_data): Removed
	brush slot, and corresponding accessor macro.

1998-05-18  Kirill M. Katsnelson  <kkm@kis.ru>

	* toolbar.c: Removed toolbar_data lrecord implementation.
	(mark_frame_toolbar_buttons_dirty): Replase usage of toolbar_data
	with toolbar_buttons (via FRAME_TOOLBAR_BUTTONS).
	(compute_frame_toolbar_buttons): Ditto.
	(CHECK_TOOLBAR): Ditto.
	(set_frame_toolbar): Removed allocation of toolbar_data lrecord.
	(update_frame_toolbars): Do not check for changed buffer
	here. Toolbar information is provided by cached specs in
	windows. The check for buffer is eliminated because toolbars are
	marked changed in set_frame_selected_window() in frame.c
	Added check for changed toolbars geometry.
	(compute_frame_toolbars_data): Removed unused second parameter;
	Adjusted callers of this static function throughout the file.
	(init_frame_toolbars): Initialize current_toolbar_size.
	(update_frame_toolbars): Use DEVICE_SUPPORTS_TOOLBARS_P instead of
	what is its current expansion, for clarity.
	(init_frame_toolbars): Ditto.
	(init_device_toolbars): Ditto.
	(init_global_toolbars): Ditto.

	* toolbar.h: Removed definition of toolbar_data lrecord.
	Added accessor macros FRAME_TOOLBAR_BUTTONS and
	FRAME_CURRENT_TOOLBAR_SIZE.
	Added macro DEVICE_SUPPORTS_TOOLBARS_P.

	* toolbar-x.c (x_output_toolbar): The same change as in
	toolbar-msw.c
	(x_output_toolbar): Ditto.
	(x_redraw_exposed_toolbar): Ditto.

	* toolbar-msw.c (mswindows_output_toolbar): Retrieve current
	buttons from toolbar_buttons using FRAME_TOOLBAR_BUTTONS macro.
	(mswindows_output_toolbar): Ditto.
	(mswindows_output_toolbar): Ditto.

	* frame.c (mark_frame): Removed marking of arrays, according to
	frameslots.h change.
	(nuke_all_frame_slots): Ditto.
	(set_frame_selected_window): Mark toolbars changed when
	last_nonminibuf_window changes.

	* frame.h (struct frame): Moved some slots to frameslots.h.
	Added current_toolbar_size array.
	Changed references from toolbar_data to toolbar_buttons in macros
	FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE,
	FRAME_RAW_THEORETICAL_TOOLBAR_SIZE and
	FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH.

	* frameslots.h: Added macro MARKED_SLOT_ARRAY a la winslots.h
	Moved arrays of lisp objects here from frame.h: toolbar_size,
	toolbar_visible_p, toolbar_border_width.
	Removed toolbar_data slot and added toolbar_buttons.

1998-05-17  Kirill M. Katsnelson  <kkm@kis.ru>

	* symsinit.h: Externed syms_of_process_nt()

	* emacs.c (main_1): Call syms_of_process_nt()

	* process-nt.c: Quote process arguments by a call to Lisp function
	`nt-quote-process-args'.
	(syms_of_process_nt): New function.
	(nt_send_process): Flush data stream after each write, to avoid
	leaving buffered data.
	(nt_send_process): When blocked on process output, wait for
	process to slurp more for progressively increasing time intervals.

1998-05-17  Martin Buchholz  <martin@xemacs.org>

	* window.c (have_undivided_common_edge): Make file-local function
	static.
	(map_windows): Return 0 if all map functions successful.
	Fix typos.

	* winslots.h: Use unlikely names for local variables in macros to
	avoid shadowing warnings.

1998-05-17  Andy Piper  <andyp@parallax.co.uk>

	* toolbar-msw.c (mswindows_output_toolbar): hash on toolbar width
	so that we re-output if the toolbar size has changed.

1998-05-17  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* s/aix4-2.h (ALIGN_DATA_RELOC): Undefined to support new unexaix.c.

	* s/aix3-1.h (ALIGN_DATA_RELOC): Defined to support new unexaix.c.

	* unexaix.c: Massive cleanup and support of AIX 4.2 (and hopefully
	greater).

1998-05-16  Kirill M. Katsnelson  <kkm@kis.ru>

	* glyphs-msw.c: Defined OEMRESOURCE before including windows.h to
	get bitmap manifest constants defined.

	* console-msw.h: Include system files in angle brackets, not in
	quotes.

	* window.c (specifier_vars_of_window): Fixed a typo in
	`vertical-divider-line-width' docstirng.

1998-05-16  Olivier Galibert  <galibert@pobox.com>

	* line-number.c (delete_invalidate_line_number_cache): Use an
	EMACS_INT.
	(buffer_line_number): Remove dangerous, plain wrong when using
	64bits emacs ints, cast.

	* insdel.c (buffer_delete_range): Use an EMACS_INT.

	* cmds.c (Fforward_line): Use EMACS_INTs.

	* search.c (bi_scan_buffer): Change to use EMACS_INTs.
	(scan_buffer): Ditto.
	(bi_find_next_newline_no_quit): Remove useless cast.
	(find_next_newline_no_quit): Ditto.
	(find_next_newline): Ditto.
	(find_before_next_newline): Use an EMACS_INT.

	* lisp.h: Change scan_buffer to pass EMACS_INTs.

1998-05-16  Hrvoje Niksic  <hniksic@srce.hr>

	* menubar-msw.c (mswindows_handle_wm_command): Ditto.

	* toolbar-msw.c (mswindows_handle_toolbar_wm_command): Ditto.

	* gui-x.c (popup_selection_callback): Use it.

	* gui.h (get_callback): Declare it.

	* gui.c (get_callback): New function.

1998-05-15  SL Baur  <steve@altair.xemacs.org>

	* window.c (have_undivided_common_edge): Guard scrollbar specific
	stuff.
	(window_needs_vertical_divider_1): Ditto.

1998-05-16  Hrvoje Niksic  <hniksic@srce.hr>

	* emacs.c (decode_path): Eliminate compiler warning.
	(Fdecode_path): Renamed to Fsplit_path.
	(Fsplit_string_by_char): New function.

1998-05-14  Damon Lipparelli  <lipp@primus.com>

	* winslots.h: close comment

1998-05-16  Kirill M. Katsnelson  <kkm@kis.ru>

	* callproc.c: Removed declared and unused variable Qbuffer_file_type.

	* bufslots.h: Removed buffer_file_type slot.

	* buffer.c (complex_vars_of_buffer): Removed buffer_file_type from
	buffer local flags.
	(complex_vars_of_buffer): Removed buffer-file-type variable and
	its default reference.

1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>

	* faces.c (complex_vars_of_faces): Defined
	Vvertical_divider_face.
	(vars_of_faces): Staticpro it.

	* faces.h: Externed Vvertical_divider_face.

	* redisplay-x.c (x_output_vertical_divider): Use
	Vvertical_divider_face to draw the divider instead of modeline
	face.

	* redisplay-msw.c (mswindows_output_vertical_divider): Draw
	divider face using Vvertical_divider_face background.
	Fix drawing spacing gaps around the divider.

1998-05-14  Didier Verna  <didier@xemacs.org>

	* redisplay-x.c (x_output_vertical_divider): removed hard-wired
	values for the vertical divider line width and spacing. Use the
	cached values from the window structure instead.
	(x_divider_width): ditto.

	* window.c (specifier_vars_of_window): new specifiers:
	vertical-divier -line-width and -spacing.
	(vertical_divider_global_width_changed): formerly known as
	vertical_divider_shadow_thickness_changed.

	* winslots.h: new slots: vertical_specifier _line_width and
	_spacing. Plus corrected a comment typo.

1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>

	* window.h: Declared window_divider_width().

	* console-stream.c (stream_divider_width): Removed method.
	(console_type_create_stream): And declaration for it.

	* redisplay.c (pixel_to_glyph_translation): Use
	window_divider_width() instead of divider_width redisplay method.
	(pixel_to_glyph_translation): Fix top divider edge calculation
	when scrollbar is on top.

	* window.c (window_divider_width): New function, an outphaser for
	divider_width redisplay method.
	(window_right_gutter_width): Use it.
	(specifier_vars_of_window): For	vertical-divider-{spacing,line-width}
	specifiers, set fallback values differently on TTYs, and document
	the behavior of these on TTYs in the docstrings.

	* scrollbar.c (update_scrollbar_instance): Use
	window_divider_width() instead of divider_width redisplay method.

	* console.h (struct console_methods): Removed divider_width_method.

	* redisplay-tty.c (tty_divider_width): Removed device method.
	(console_type_create_redisplay_tty): Removed definition for it.
	(tty_output_vertical_divider): Respect the value returned by
	window_divider_width thus divider line width specification.

	* redisplay-msw.c (mswindows_divider_width): Removed device method.
	(console_type_create_redisplay_mswindows): Removed definition for it.
	(mswinodws_output_vertical_divider): Respect the value returned by
	window_divider_width thus divider line width specification.

1998-05-15  Andy Piper  <andyp@parallax.co.uk>

	* toolbar-msw.c: guess toolbar frame size a bit more accurately.

1998-05-15  Andy Piper  <andyp@parallax.co.uk>

	* glyphs-msw.c: resource loading implementation.
	(cursor_normalize): new function.
	(cursor_validate): ditto.
	(cursor_instantiate): ditto.
	(cursor_name_to_resource): ditto.
	(cursor_possible_dest_types): ditto.
	(check_valid_symbol): ditto.
	(check_valid_string_or_int): ditto.

1998-05-14  Martin Buchholz  <martin@xemacs.org>

	* sysdep.c (tty_init_sys_modes_on_device): Treat VSUSP just like
	VINTR and VQUIT.

	* process-unix.c (process_signal_char): Use VSUSP instead of
	non-standard VSWTCH.  Always prefer VSUSP to VSWTCH.

1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>

	* specifier.c (specifier_instance): Change locale precedence of
	instantiation so window locale has higher priority than buffer
	locale.
	(Fspecifier_instance): Reflect this in docstring.
	(Fadd_spec_list_to_specifier): Ditto.
	(Fadd_spec_to_specifier): Ditto.
	(Fremove_specifier): Ditto.

1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>

	** Dialog separation into a device method from Andy Piper

	* emacs.c (main_1): Call console_type_create_dialog_x().

	* dialog-x.c (x_popup_dialog_box): Old Fpopup_dialog_box converted
	into this device method.
	(console_type_create_dialog_x): New function.

	* dialog.c (Fpopup_dialog_box): New function.
	(syms_of_dialog): Defsubr it.

	* console.h (struct console_methods): Declared
	popup_dialog_box_method().

	* symsinit.h: Defined console_type_create_dialog_{x,mswindows}

1998-05-14  Oliver Graf <ograf@fga.de>

	* dragdrop.c (vars_of_dragdrop): dragdrop-protocols created
	* frame-x.c (x_cde_transfer_callback): checked for merge errors

1998-05-13  Oliver Graf <ograf@fga.de>

	* dragdrop.c (vars_of_dragdrop): provide dragdrop-api

1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>

	* console.h (device_metrics): Removed dbcs, input-method-editor
	and right-to-left metrics.

	* device.c (Fdevice_system_metric): Ditto.
	(Fdevice_system_metrics): Ditto.
	(syms_of_device): Ditto.
	(Fdevice_system_metric): Swapped DEVICE and METRIC parameters back
	again.

1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>

	* line-number.h (mark_line_number_cache): Remove unused
	declaration.

	* line-number.c (LINE_NUMBER_FAR): Increase to 32768.
	(get_nearest_line_number): Simplify.
	(add_position_to_cache): Make the old marker point nowhere.

1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>

	** Renamed window-divider-map => vertical-divider-map
	and event-over-divider-p => event-over-vertical-divider-p,
	in the following files/functions:
	* events.h:
	* events.c (Fevent_over_divider_p):
	* keymap.c (get_relevant_keymaps):
	(vars_of_keymap):

	* redisplay.h (OVER_V_DIVIDER): Renamed so from OVER_DIVIDER.

	* redisplay.c (pixel_to_glyph_translation): Use OVER_V_DIVIDER.

1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>

	* window.c (vertical_divider_changed_in_window): Renamed so.
	(specifier_vars_of_window): Defined Vvertical_divider_draggable_p.
	(window_needs_vertical_divider_1): Decide whether we need it based
	on the value of the above specifier. If separators are unwanted,
	put them only if there's no scrollbar between this window and its
	right neighbor.
	(have_undivided_common_edge): New function, helper for the above.
	(window_needs_vertical_divider): Return either a cached value,
	or clauclate and cache one.
	(invalidate_vertical_divider_cache_in_window): Implemented.
	(map_windows): Changed return type to int, return the value from
	MAPFUN.

	* window.h: Prototype invalidate_vertical_divider_cache_in_window.
	(struct window): Added need_vertical_divider_p and
	need_vertical_divider_valid_p.

	* winslots.h: Added vertical_divider_draggable_p slot.

	* scrollbar.c (vertical_scrollbar_changed_in_window): Implemented.
	(specifier_vars_of_scrollbar): Used it in all vertical specifiers.

	* frame.c (invalidate_vertical_divider_cache_in_frame): New function.

	* frame.h (MARK_FRAME_WINDOWS_STRUCTURE_CHANGED): Call
	invalidate_vertical_divider_cache_in_frame().
	Prototype it.

1998-05-14  Andy Piper  <andyp@parallax.co.uk>

	* toolbar-msw.c: provide correct parameters to TB_SETROWS.

	* glyphs-msw.c (mswindows_initialize_image_instance_mask): size
	masks correctly and don't select 0.

1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>

	* winslots.h: New file, declaration of some struct window and
	struct saved_window members.

	* window.h (struct window): Include it, with required preprocessor
	magic.

	* window.c (mark_window): Ditto.
	(allocate_window): Ditto.
	(struct saved_window): Ditto.
	(mark_window_config): Ditto.
	(saved_window_equal): Ditto.
	(Fset_window_configuration): Ditto.

1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>

	* redisplay-msw.c (mswindows_output_vertical_divider): Syntax fix.

1998-05-12  Didier Verna  <didier@xemacs.org>

	* redisplay-x.c (x_output_vertical_divider): draw shadows around
	the divider line. The shadow thickness is currently
	hard-wired. This will probably be turned into a specifier soon.

1998-05-12  Didier Verna  <didier@xemacs.org>

	* console.h (struct console_methods): the divider_width console
	method now requires a struct window * argument.

	* redisplay-x.c (x_divider_width): ditto. Plus remove
	X_DIVIDER_WIDTH, X_DIVIDER_SHADOW_THICKNESS.
	(x_output_vertical_divider): give a depressed look when the shadow
	thickness is negative.

	* console-stream.c (stream_divider_width): pass a struct window *
	argument.

	* redisplay-tty.c (tty_divider_width): ditto.

	* window.c (window_right_gutter_width): totdi.

	* redisplay.c (generate_modeline): ittod.

	* scrollbar.c (update_scrollbar_instance): ttido.

	* redisplay-msw.c (mswindows_divider_width): ottid.
	WARNING: this enables to compile, but the feature is not functional.

	* window.h (struct window): new field
	vertical_divider_shadow_thickness.

	* window.c (specifier_vars_of_window): new specifier
	vertical-divider-shadow-thickness.
	(vertical_divider_shadow_thickness_changed): new function to
	inform redisplay that the window has changed.
	(mark_window): handle new field vertical_divider_shadow_thickness
	from struct window.
	(allocate_window): ditto.
	(saved_window_equal): toddi.
	(Fset_window_configuration): totid.
	(save_window_save): ttdio.
	(struct saved_window): new field vertical_divider_shadow_thickness.

1998-05-14  Kirill M. Katsnelson  <kkm@kis.ru>

	* device-msw.c (mswindows_device_system_metrics): Support a deluge
	of metrics.

1998-05-12  Oliver Graf <ograf@fga.de>

	* frame-x.c (x_cde_transfer_callback): fixed for the new protocol
	* event-Xt.c (x_event_to_emacs_event): C++ compability

1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>

	* emacs.c (Fdecode_path): Default SEPCHAR to value of
	path-separator.

1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>

	* emacs.c (vars_of_emacs): Do it here; change the meaning of
	Vpath_separator.

	* fileio.c (vars_of_fileio): Don't define Vpath_separator here.

1998-05-14  Hrvoje Niksic  <hniksic@srce.hr>

	* emacs.c (decode_path_1): New function.
	(decode_path): Use it.
	(Fdecode_path): Renamed from Fdecode_path_internal; use
	decode_path_1.

1998-05-12  Hrvoje Niksic  <hniksic@srce.hr>

	* macros.c (Fzap_last_kbd_macro_event): New function.
	(Fend_kbd_macro): Remove REMOVE_LAST kludge.

1998-05-10  Andy Piper  <andyp@parallax.co.uk>

	* redisplay-msw.c (mswindows_output_dibitmap_region): make sure
	multiple bitmaps are output vertically as well as horizontally.
	* (mswindows_output_dibitmap): don't cope with bitmap boundaries
	crossing lines this is handled by
	mswindows_output_dibitmap_region.

1998-05-12  Martin Buchholz  <martin@xemacs.org>

	* inline.c: Include eldap.h

	* menubar-x.c (x_update_frame_menubar_internal):
	Remove: unused variable `container'

1998-05-11  Martin Buchholz  <martin@xemacs.org>

	* s/aix4.h: Allow AIX 4.3 XEmacs to compile cleanly.
	Unfortunately, the resulting temacs still cannot dump.

	* symbols.c (symbol_is_constant):
	(verify_ok_for_buffer_local):
	-Wswitch Warning suppression - add default case to switches.

	* redisplay.c (decode_mode_spec): Remove unused variables,
	Replace Fcoding_system_property (codesys, Qmnemonic) with
	XCODING_SYSTEM_MNEMONIC (codesys);
	Fcoding_system_property is for users.

	* buffer.c:
	* fileio.c:
	* lread.c:
	* xselect.c:
	Change empty docstrings into no doc strings at all.
	Fix bogus FSF-format docstrings.

	* extents.c:
	Standardize docstrings.

	* floatfns.c:
	Explain problems with matherr.

	* glyphs.c:  make DEFUNs etags-readable, i.e. single-line

	* syssignal.h:
	if BROKEN_SIGIO, then SIGIO wants to be undefined.
	if SIGIO and not SIGPOLL, SIGPOLL wants to be SIGIO.\
	Fix the weird resultant interaction (causes windows problems)

	* gdbinit:
	* dbxrc:
	Take new EMACSBOOTSTRAPLOADPATH into account.
	Update documentation strings

	* Makefile.in.in:
	- Adjust for luser's CDPATH being set to something weird.
	- Take into account bash 2.02's tendency to print the cwd when
	  using CDPATH.  Always use `cd ./foo' instead of `cd foo'.
	- fix the run-temacs target to use $(DUMPENV)
	- fix the run-puremacs target to use $(DUMPENV)
	- fix the `depend' target to properly $(RM) the right files
	- Generate a better TAGS file for XEmacs' lisp code using
	  hand-crafted regexps.
	- Use standard coding conventions for modules/Makefile.in

1998-05-12  Didier Verna  <didier@xemacs.org>

	* redisplay.c: removed the scrolling modeline code that didn't
	make it for 21.0. To be continued ...

1998-05-13  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* emacs.c (Fdecode_path_internal): Removed bogus handling of nil
	and empty string inputs.

1998-05-12  Hrvoje Niksic  <hniksic@srce.hr>

	* redisplay-x.c (x_output_vertical_divider): Fixed typo.

1998-05-10  Oliver Graf <ograf@fga.de>

	* event-stream.c (enqueue_misc_user_event_pos): created
	* lisp.h (enqueue_misc_user_event_pos): prototype added
	* frame-x.c (x_cde_transfer_callback): debug code plus API changes
	* emacs.c: call vars_of_dragdrop
	* dragdrop.c (vars_of_dragdrop): provide dragdrop

1998-05-11  Oliver Graf <ograf@fga.de>

	* frame-x.c (x_cde_transfer_callback): return at correct pos
	* event-Xt.c (x_event_to_emacs_event): changed format of drop
	object for MIME (see comment in dragdrop.c)
	* dragdrop.c: API change documented in comment
	removed provide of dragdrop [is provided by dragdrop.el]

1998-05-12  Kirill M. Katsnelson  <kkm@kis.ru>

	* window.c (window_needs_vertical_divider): Enable vertical
	dividers for every non-rightmost window.
	(window_left_gutter_width): Left gutter consists of mythical
	toolbar and a virtual scrollbar.
	(window_right_gutter_width): The right one may have a divider
	also.

	* scrollbar.c (update_scrollbar_instance): Position vertical
	scrollbar left to divider if the latter present.

	* redisplay.h: Declared OVER_DIVIER constant.

	* redisplay.c (pixel_to_glyph_translation): Handle OVER_DIVIDER
	case.

	* redisplay-x.c (x_output_vertical_divider): Output divider along
	the right side of the window, down to window bottom. Swapped
	foreground and background colors so it is visible by default.

	* redisplay-tty.c (tty_output_vertical_divider): Uncondiionally
	stick the divider to the right window side.

	* redisplay-msw.c (mswindows_redisplay_deadbox_maybe): Fixed
	deadbox painting.
	(mswindows_divider_width): Ask system for user preferred value.
	(mswindows_output_vertical_divider): Always output the divider on
	the right side of a window, down to bottom.

	* keymap.c (get_relevant_keymaps): Route mouse button events which
	happened over a window divider through window-divider-map.
	(Fkey_binding): Documented that in the docstring.
	Defined the variable Vwindow_divider_map.

	* events.c (Fevent_over_divider_p): Added this function.

	* events.h: EXFUNed it.

1998-05-12  Kirill M. Katsnelson  <kkm@kis.ru>

	* toolbar.c (update_frame_toolbars): Re-layout frame windows if
	toolbar geometry is suspected to change.

1998-05-11  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* src/device-msw.c
	* src/event-msw.c
	Condition dnd and dde code on HAVE_DRAGNDROP.

1998-05-11  Hrvoje Niksic  <hniksic@srce.hr>

	* events.c (format_event_object): Print space as SPC etc.

1998-05-11  Hrvoje Niksic  <hniksic@srce.hr>

	* print.c (print_internal): In the default case, abort() if
	ERROR_CHECK_TYPECHECK.

	* fileio.c (Fmake_temp_name): Doc fix.

1998-05-10  Hrvoje Niksic  <hniksic@srce.hr>

	* xgccache.c (describe_gc_cache): Define only if DEBUG_XEMACS.

	* undo.c (Fprimitive_undo): Fixed typo.

1998-05-11  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (concat): Signal error on integer argument.

1998-05-10  Kirill M. Katsnelson  <kkm@kis.ru>

	* console.h (device_metrics): Prefixed each constatnt with DM_

	* device.c: (Fdevice_system_metric): Renamed so from plural form
	(metrics); Changed parameters order and added DEFAULT parameter;
	Unabbreviated some metric constants; Fixed and untabified doc string.
	(Fdevice_system_metrics): Added. Returns a plist of all provided
	metrics.

	* device-msw.c (mswindows_device_system_metrics): Renamed
	device_metrics enum constants.
	Return Qunbound instead of Qnil.

	* device-tty.c (tty_device_system_metrics): Ditto.

	* device-x.c (x_device_system_metrics): Ditto.

1998-05-10  Andy Piper  <andyp@parallax.co.uk>

	* redisplay-msw.c: implement background pixmaps (really!). Make
	sure bg color is transparent if we have bg pmaps.
	* (mswindows_output_string) (mswindows_clear_region): output bg
	pmap if required.
	* (mswindows_output_dibitmap_region): new function.
	* (mswindows_output_dibitmap): output offset pixmaps, blt masks in
	the bg color rather than transparently.

	* toolbar-msw.c: use masks if they exist.

	* glyphs-msw.c: set up masks correctly.

	* event-msw.c: typedef SOCKET if cygwin and not msg select().

1998-05-10  Hrvoje Niksic  <hniksic@srce.hr>

	* regex.c (re_match_2_internal): Check for quit.

1998-05-10  Hrvoje Niksic  <hniksic@srce.hr>

	* frame.c (Ffocus_frame): New function.

1998-05-06  Oliver Graf <ograf@fga.de>

	* Makefile.in.in: removed dragdrop.o from objs
	* config.h.in: HAVE_DRAGNDROP added
	* emacs.c: do syms_of_dragdrop only if HAVE_DRAGNDROP is defined
	* event-Xt.c: dragdrop.h include now depends on HAVE_DRAGNDROP
	changed calls to dnd_url_hexify_string
	MIME data is now a list of MIME strings or lists
	this was required by CDE, and a good idea in any case
	* dragdrop.c (dnd_url_hexify_string): method prefix code added
	* dragdrop.h: dnd_url_hexify_string prototype changed
	* frame-x.c (x_cde_transfer_callback): CDE adapted the new API

1998-05-05  Jonathan Harris <jhar@tardis.ed.ac.uk>

	* event-msw.c: now creates misc-user-events on dnd drops

1998-05-05  Oliver Graf <ograf@fga.de>

	* events.h: changed comment for misc_user_events
	* events.c (make-event): removed dnd_data defs
	* frame.c: removed everything referring to drag_and_drop_functions
	* frame-x.c (x_cde_transfer_callback): disabled (needs to be changed)
	* lisp.h: removed Qdnd_data
	* general.c: removed Qdnd_data
	* symsinit.h: added syms_of_dragdrop
	* frame.el: deleted default-drag-and-drop-functions

1998-05-04  Oliver Graf <ograf@fga.de>

	* events.c: removed all dnd_drop stuff
	* events.h: extended misc_user_data by button info
	removed dnd_drop event
	* emacs.c: added call to syms_of_dragdrop
	* dragdrop.c: created
	* dragdrop.h: created
	* event-stream.c (enqueue_misc_user_event): initialization of the
	new fields of misc_user_data
	dnd_drop stuff removed
	* keymap.c: drop symbols removed
	* Makefile.in.in: added dragdrop.o to objs

1998-05-09  SL Baur  <steve@altair.xemacs.org>

	* EmacsFrame.c (EmacsFrameSetValues): Fix typo.
	Suggested by: Kirill M. Katsnelson  <kkm@kis.ru>

1998-05-09  Kirill M. Katsnelson  <kkm@kis.ru>

	* This change adds four scrollbar specifiers:
	  {horizontal,vertical}-scrollbar-visible-p and
	  scrollbar-on-{top,left}-p.
	  Spare parts supplied by Didier Verna <didier@xemacs.org>

	* frameslots.h: Added slots for the four specifier caching.

	* frame.h: FRAME_SCROLLBAR_{WIDTH,HEIGHT} count for scrollbar
	visible specifiers.
	Removed old resource-only controlled scrollbar_on_* ints.

	* frame-x.c (x_layout_widgets): Removed (to x-scrollbar.el)
	initialization of old style scrollbar placement from resources.

	* frame-tty.c (tty_init_frame_1): Removed initialization of old
	style scrollbar placement.

	* frame-msw.c (mswindows_init_frame_1): Removed random
	initialization of scrollbar sizes to 15 pixel.

	* redisplay-msw.c (mswindows_redisplay_deadbox_maybe): Use
	scrollbar placement specifiers cached values from window, instead
	of the old per-frame values.
	(mswindows_output_vertical_divider): Ditto.

	* redisplay-x.c (x_output_vertical_divider): Ditto.

	* redisplay-output.c (redisplay_clear_bottom_of_window): Ditto.

	* scrollbar.c (update_scrollbar_instance): Ditto.
	(specifier_vars_of_scrollbar): Declared the four specifiers.

	* window.h (struct window): Defined slots for caching the new
	specifiers.

	* window.c (mark_window): Mark them.
	(allocate_window): Initialize them.
	(struct saved_window): Store them in a cool place.
	(saved_window_equal): Compare them.
	(save_window_save): Save them.
	(Fset_window_configuration): Fetch them back.
	(window_needs_vertical_divider): Check for scrollbar placement
	using window cached specs.
	(window_top_gutter_height): Ditto.
	(window_bottom_gutter_height): Ditto.
	(window_left_gutter_width): Ditto.
	(window_right_gutter_width): Ditto.
	(window_scrollbar_width): Account for scrollbar visibility
	specification in window.
	(window_scrollbar_height): Ditto.

1998-04-18  Kirill M. Katsnelson  <kkm@kis.ru>

	* device.c (Fdevice_system_metrics): Added function.
	Moved (device-pixel-height), (device-pixel-width),
	(device-mm-width), (device-mm-height), (device-bitplanes),
	(device-color-cells) to device.el, amd make them call
	(device-system-metrics).

	* console.h (struct console_methods): Replaced methods:
	device_pixel_width_method(), device_pixel_height_method(),
	device_mm_width_method(), device_mm_height_method(),
	device_bitplanes_method(), device_color_cells_method()
	with single device_system_metrics_method().
	(device_metrics): Declared enumeration of supported
	device system metrics.

	* device-msw.c (mswindows_device_system_metrics): Implement
	device_system_metrics_method(), remove six obsolete methods.

	* device-tty.c (tty_device_system_metrics): Ditto.

	* device-x.c (x_device_system_metrics): Ditto.

1998-05-10  Kirill M. Katsnelson  <kkm@kis.ru>

	* EmacsFrame.c (update_various_frame_slots): Do not store internal
	border width there.
	(EmacsFrameInitialize): Do it rather here.
	(EmacsFrameSetValues): If EditRes has changed internal border
	width, mark frame size as slipped.

1998-05-06  Kirill M. Katsnelson  <kkm@kis.ru>

	* frame.h (struct frame): Added char_{width,height} member
	variables and access macros
	Added size_slipped redisplay bit and mark/clear macros.

	* redisplay.c (redisplay_frame): Adjust frame size if size slipped
	bit is set.
	(redisplay_device): Call redisplay_frame if size slipped bit is set.

	* frame.c (adjust_frame_size): Redisplay beats frame back in shape
	with this. Added.
	(frame_size_slipped): Added.
	(internal_set_frame_size): Clear size slipped bit.
	(change_frame_size_1): Store real charsize into frame object.
	(vars_of_frame): Declared adjust-frame-function.

	* frame-msw.c (mswindows_update_frame_external_traits): Same
	change as for frame-x.c
	(mswindows_frame_size_fixed_p): Implemented the method.

	* frame-x.c (x_update_frame_external_traits): Do not call
	Fset_frame_size to adjust frame, redisplay will do.

	* faces.c (update_EmacsFrame): Mark frame as slipped when default
	font changes.

	* toolbar.c (compute_frame_toolbars_data): Removed obsoleted call
	to change_frame_size. Redisplay will fix it later.
	Removed toolbar_*_changed_in_frame specifier
	change handlers.
	(specifier_vars_of_toolbar): Calls to these routed to
	frame_size_slipped generic handler.

	* toolbar-x.c: Removed toolbar_*_changed_in_frame device methods.

	* scrollbar-x.c: Removed scrollbar_*_changed_in_frame device
	methods.

	* scrollbar.c: Removed scrollbar_*_changed_in_frame specifier
	change handlers.
	(specifier_vars_of_scrollbar): Calls to the above changed to
	frame_size_slipped generic handler.

	* menubar-x.c (x_update_frame_menubar_internal): Do not resize
	frame, just mark frame size as slipped.

	* device-x.c: Removed declaration of in_specifier_change_function.

	* EmacsFrame.c (EmacsFrameSetValues): Do not check
	in_specifier_change_function.
	(EmacsFrameSetValues): Simulate a call to resize callback when no
	actual geometry change happened.

	* console.h (struct console_methods): Removed declarations for all
	<specifier>_changed_in_frame methods for toolbars and scrollbars.
	Added frame_size_fixed_p method.

1998-05-08  SL Baur  <steve@altair.xemacs.org>

	* redisplay.c (decode_mode_spec): Guard against garbage
	overwriting the stack.

1998-05-08  Kirill M. Katsnelson  <kkm@kis.ru>

	* dired-msw.c (vars_of_dired_mswindows): Syntax fix for union
	lisp object type.

	* menubar-msw.c (populate_menu_add_item): Ditto.

	* ntheap.c (sbrk): Ditto.

	* ntproc.c (create_child): Ditto.
	(syms_of_ntproc): Ditto.

1998-05-07  Andy Piper  <andyp@parallax.co.uk>

	* glyphs-msw.c: updates to support total transparency.
	(mswindows_initialize_image_instance_icon): don't resize bitmaps
	for icons.
	(mswindows_initialize_image_instance_mask): new function.
	Use these new functions as appropriate.

	* glyphs-msw.h (mswindows_initialize_image_instance_icon):
	function renamed.

	* frame-msw.c: use renamed mswindows_initialize_image_instance_icon.

	* redisplay-msw.c: MaskBlt bitmaps if we have a mask, BitBlt
	otherwise.

1998-05-07  Kirill M. Katsnelson  <kkm@kis.ru>

	* unexnt.c (read_in_bss): Removed unused variables, replaced exits
	with aborts.
	(map_in_heap): Ditto.

1998-05-06  SL Baur  <steve@altair.xemacs.org>

	* frame.c (adjust_frame_size): Don't mix integers and Lisp_Objects.

1998-05-07  Kirill M. Katsnelson  <kkm@kis.ru>

	* print.c (write_string_to_stdio_stream): Under MS Windows, flush
	stdio and stderr after output. Ouch.

1998-05-05  Andy Piper  <andyp@parallax.co.uk>

	* event-msw.c: comment out broken dnd stuff and don't use msw socket
	support if we have cygwin select.

1998-05-03  Kirill M. Katsnelson  <kkm@kis.ru>

	* events.h (STREAM_* defines): Defined constants for the parameter
	FLAGS to create_stream_pair_cb().

	* process.c (Fopen_network_stream_internal): Use flags from events.h
	(Fopen_multicast_group_internal): Ditto.

	* process-unix.c (unix_create_process): Ditto.

	* event-unixoid.c (event_stream_unixoid_create_stream_pair): Ditto.
	Changed #ifdef process type logic to catch configuretion errors
	when no process type is defined.

	* event-msw.c: Implemented winsock_stream
	(get_process_input_waitable): Differentiate network connections.
	(emacs_mswindows_select_process): Ditto.
	(emacs_mswindows_create_stream_pair): Ditto.
	(emacs_mswindows_delete_stream_pair): Ditto.

	* process-nt.c: Implemented network connections.
	(nt_init_process): Initialize Winsock.

	* sysdep.c (init_system_name): Ask for the right name right from
	the system.

	* ntproc.c: Removed select emulation crap and dynamic Windock
	loading.

	* nt.c: Removed a lot of terrible wrappers for socket functions.

	* s/windowsnt.h: Removed sys_select encapsulation.

1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>

	* search.c (Fmatch_data): Synch with FSF.

1998-05-04  Greg Klanderman  <greg@alphatech.com>

	* events.h: Add extern declarations for focus_follows_mouse and
	investigate_frame_change().
	* cmdloop.c (Fcommand_loop_1): cleanup focus-follows-mouse
	handling - move externs to events.h.

1998-05-05  Andy Piper  <andyp@parallax.co.uk>

	* glyphs-msw.c: generate an AND mask when creating an icon and really
	make it an icon if that is what is required.

	* glyphs-msw.h (mswindows_create_icon_from_image): new cursor
	argument.

	* frame-msw.c (mswindows_set_frame_pointer): set the frame cursor when
	asked.

1998-05-05  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* s/windowsnt.h:
	* s/rtu.h:
	* s/aix4.h:
	* m/wicat.h:
	* m/gould.h:
	* m/gould-np1.h
	* unexhp9k3.c:
	* unexconvex.c:
	* unexalpha.c:
	* unexaix.c:
	* regex.c:
	* process-unix.c:
	* mule-mcpath.c:
	* msdos.c:
	* lisp.h:
	* gmalloc.c:
	* getloadavg.c:
	* broken-sun.h:
	Removed references to ancient bcmp, bzero, and bcopy.

1998-05-04  Andy Piper  <andyp@parallax.co.uk>

	* gui.el: make gui-button-face colors apply in the mswindows
	domain as well as for x.

	* objects-msw.c (mswindows_string_to_color): grok
	rgb:rrrr/gggg/bbbb color formats used by xpm-button.el.

1998-05-04  Greg Klanderman  <greg@alphatech.com>

	* window.c (Fselect_window): Add optional second argument
	`norecord' to avoid recording a buffer change.
	* window.h: change the EXFUN for Fselect_window.
	* window.c (Fdelete_window): call Fselect_window with 2nd arg Qnil.
	(Fother_window): ditto.
	(temp_output_buffer_show): ditto.
	(Fset_window_configuration): ditto.
	(Fset_window_configuration): ditto.
	* frame.c (Fselect_frame): ditto.
	(Fset_frame_selected_window): ditto.
	(delete_frame_internal): ditto.
	* device.c (Fselect_device): ditto.
	* console.c (Fselect_console): ditto.
	* callint.c (Fcall_interactively): ditto.

1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>

	* search.c (Fregexp_quote): Loop by characters, not by bytes.

1998-05-05  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* redisplay.c (window_line_number): Guard against selected_device
	= nil.

	* frame-x.c (x_init_frame_2): Revert to updating frame title.

1998-05-05  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (shut_down_emacs): Update crash report information.

1998-05-04  Kyle Jones  <kyle_jones@wonderworks.com>

	* linuxplay.c: Initialize audio_dev to /dev/dsp at
	  compile time instead of at run-time.  Don't initialize
	  mixer_fd, audio_fd and audio_vol to -1; none of them need
	  it, and XEmacs will crash on some architectures when
	  these variable are modified after being initialized.
	  Declare audio_dev, audio_vol, audio_fd, and mixer_fd as
	  static, since none of them need to be visible outside
	  linuxplay.c.

1998-04-27  Hrvoje Niksic  <hniksic@srce.hr>

	* eldap.c (make_ldap): New function.
	(finalize_ldap): Use it.
	(Fldap_open): Ditto.

	* eldap.c (struct Lisp_LDAP): Removed connection status symbol.

	* eldap.h (LDAP_LIVE_P): Removed
	(CHECK_LIVE_LDAP): Adapt to changes in struct Lisp_LDAP

1998-05-03  Hrvoje Niksic  <hniksic@srce.hr>

	* lread.c: (read_escape): Restore handling of \M-a; clarify
	comment.

1998-05-04  Kyle Jones  <kyle_jones@wonderworks.com>

	* realpath.c: Rename realpath() to xrealpath().

	* fileio.c: Call xrealpath() instead of realpath().

	* sysdep.h: Use #define to map xrealpath() calls to
	  realpath() on systems that have realpath().

1998-05-04  Martin Buchholz  <martin@xemacs.org>

	* rangetab.c:
	* rangetab.h: Move #include's from rangetab.h into rangetab.c for
	consistency.
	* inline.c: include rangetab.h to get GCC inlines

1998-05-03  SL Baur  <steve@altair.xemacs.org>

	* event-stream.c (event_stream_next_event): Reverse previous patch to
	slow down poll for quit.
	Suggested by Kyle Jones <kyle_jones@wonderworks.com>

	* lread.c (read_escape): Turn off interpretation of "\M..."
	Suggested by Olivier Galibert <galibert@pobox.com>

	* lread.c (read_escape): add explanatory comment about why
	FSF_KEYS are being turned off.

1998-05-02  SL Baur  <steve@altair.xemacs.org>

	* lread.c (FSF_KEYS): Remove if built with Mule.

1998-05-01  Kirill M. Katsnelson  <kkm@kis.ru>

	* event-msw.c (ntpipe_shove_flusher): Removed.
	(init_shove_stream): Flusher undeclared.

1998-05-02  SL Baur  <steve@altair.xemacs.org>

	* rangetab.c: `default_dumped' removed.

1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>

	* events.c (Fmake_event): Initialize key data for key-press
	events.

1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (close_stream_unwind): Renamed to delete_stream_unwind.
	Delete the stream.
	(Finsert_file_contents_internal): Delete STREAM after use.
	(Fmake_temp_name): Improve randomness of generated file names.
	(Fmake_temp_name): Don't initialize COUNT if in temacs.

1998-05-02  Olivier Galibert  <galibert@pobox.com>

	* buffer.h: Put  the  range_table  lrecrod  declaration  where  it
	belongs...

	* rangetab.h: New file - ...which is here.

	* rangetab.c: Move declarations to rangetab.h

1998-05-01  Hrvoje Niksic  <hniksic@srce.hr>

	* data.c (Fneq): Fix docstring.
	(arithcompare_many): Slightly simplify.

1998-04-29  Andy Piper  <andyp@parallax.co.uk>

	* s/cygwin32.h: don't define BROKEN_CYGWIN anymore since we normally
	link with unixoid event loop now.

1998-05-01  Kirill M. Katsnelson  <kkm@kis.ru>

	* event-stream.c (event_stream_next_event): Disable polling for
	quit while XEmacs is blocked waiting for an event.

1998-05-01  Kirill M. Katsnelson  <kkm@kis.ru>

	* specifier.h: Corrected documentation on magic specifiers.
	Documented DEPTH parameter to instantiate_method.
	Renamed	reveal->unlock_ghost_specifiers_protected().

	* specifier.c: Removed the reveal mechanism and made ghost
	specifiers read-only, so they are accessible as fallbacks of magic
	specifier, but aren't modifiable unless C code enables so.
	 (specifier_equal): Compare specifier fallbacks as well.

	* scrollbar.c (init_frame_scrollbars):
	(init_device_scrollbars):
	(init_global_scrollbars): Renamed
	reveal->unlock_ghost_specifiers_protected().

1998-05-01  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Fcar_less_than_car): Fix Flss caller.
	(Fcdr_less_than_cdr): Ditto.

	* lisp.h: Fix declarations.

	* data.c: Enable many arguments versions of <, >, <=, >= and /=.

	* bytecode.c (Fbyte_code): Use arithcompare.

	* data.c (arithcompare): Make non-static.

1998-04-30  Greg Klanderman  <greg@alphatech.com>

	* frame.c (Fselect_frame): update docstring to describe
	focus-follows-mouse behavior.

1998-05-01  Hrvoje Niksic  <hniksic@srce.hr>

	* print.c (Fwrite_char): Don't touch Vprint_gensym.
	(print_error_message): Don't gcpro TAIL.
	(Fdisplay_error): Simplify.

1998-04-30  Hrvoje Niksic  <hniksic@srce.hr>

	* print.c (print_internal): Use long_to_string().

	* redisplay.c (decode_mode_spec): Remove bogus calculation of the
	number of digits.

	* print.c (Fprin1): Removed THE_STREAM.
	(Fprinc): Ditto.
	(Fprint): Ditto.
	(Fdisplay_error): Canonicalize STREAM here.
	(print_error_message): Don't canonicalize STREAM.
	(print_error_message): Use print_internal() instead of Fprin1 and
	Fprinc.

	* print.c: (Fprin1_to_string): Delete internal stream explicitly.
	(Ferror_message_string): Ditto.
	(Fterpri): Use write_char_internal.

1998-04-18  Martin Buchholz  <martin@xemacs.org>

	* console-x.h: Initialize_Locale should not depend on HAVE_XIM,
	esp. in the future.

	* Makefile.in.in: be more careful generating depend.

	* *.c (F*): Unfortunately, etags can only detect per-line
	patterns, and so the DEFUN macro must have the lisp name and the C
	name on the same line for a complete TAGS file.  Make it so.

	* signal.c (init_signals_very_early):
	* process.c (Fsignal_process): Order the signals in decreasing
	order of standardization.  Provide helpful standardization
	comments.  Add missing signal names.

	* unexhp9k800.c: Remove undefined roundup.
	* symsinit.h: Add prototype for init_hpplay().

1998-04-30  Hrvoje Niksic  <hniksic@srce.hr>

	* window.c (Fcenter_to_window_line): New function.
	(Frecenter): Use it.

1998-04-30  Hrvoje Niksic  <hniksic@srce.hr>

	* dired.c (make_directory_hash_table): Constify.

	* scrollbar.c (Fscrollbar_page_up): Use Fcenter_to_window_line
	instead of Frecenter.
	(Fscrollbar_page_down): Ditto.
	(Fscrollbar_to_top): Ditto.
	(Fscrollbar_to_bottom): Ditto.

	* window.c (Frecenter): Removed.

1998-04-29  Andy Piper  <andyp@parallax.co.uk>

	* console.h: xpm_normalize is not a console method anymore.

	* event-msw.c: honour toolbar help string length.

	* glyphs-msw.c: make copyright more meaningful. implement color
	symbol support for Xpm. (extract_xpm_color_symbols) new function.

	* glyphs.c (pixmap_to_lisp_data) (xpm_normalize): fucntions moved
	from glyphs-x.c

	* glyphs.h: declare pixmap_to_lisp_data.

	* toolbar-msw.c: more meaningful copyright.

1998-04-30  Hrvoje Niksic  <hniksic@srce.hr>

	* macros.c (Fend_kbd_macro): New arg REMOVE-LAST.

	* gui-x.c (popup_selection_callback): Treat anonymous interactive
	and compiled-function interactive callbacks as commands.

1998-04-28  Hrvoje Niksic  <hniksic@srce.hr>

	* abbrev.c (obarray_has_blank_p): Simplify.

1998-04-27  Hrvoje Niksic  <hniksic@srce.hr>

	* getloadavg.c (getloadavg): Removed some code repetition.

1998-05-01  Kirill M. Katsnelson  <kkm@kis.ru>

	* process-nt.c: Document usage of #pragma warning.
	(alloc_process_memory): Spell _ALPHA_ correctly.

1998-04-29  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: Change `progname' to `PROGNAME' for
	consistency.

1998-04-29  Kirill M. Katsnelson  <kkm@kis.ru>

	* frame.c (change_frame_size_1): Adjust frame row/columns taking
	real toolbar size into account, not the theoretical one.

	* toolbar.c (set_frame_toolbar): Removed unused parameter.
	Return void, not unused int.
	Logic which checks whether toolbar to be recomputed moved here
	from macro COMPUTE_TOOLBAR_DATA (r.i.p)
	(compute_frame_toolbars_data): Removed COMPUTE_TOOLBAR_DATA. It
	did not work due to a bug, and also did not check whether toolbar
	size has changed.
	Compute new character sizes passed to change_frame_size, do not
	use the old (pre-toolbar-change) ones.
	(update_frame_toolbars): Honor frame_changed and clear frame bits.
	(recompute_overlaying_specifier): New helper function, called from
	default toolbar specifier change handlers.
	(default_toolbar_specs_changed): Use it.
	(default_toolbar_size_changed_in_frame): Ditto.
	(default_toolbar_border_width_changed_in_frame): Ditto.
	(default_toolbar_visible_p_changed_in_frame): Ditto.
	(toolbar_geometry_changed_in_window): New handler. The old one,
	some_windows_value_changed, did not do the trick.
	(default_toolbar_size_changed_in_window): New handler for default
	toolbar.
	(default_toolbar_border_width_changed_in_window): Ditto.
	(default_toolbar_visible_p_changed_in_window): Ditto.
	(specifier_vars_of_toolbar): Use one of the above four handlers
	instead of some_windows_value_changed in toolbar specifiers.

1998-04-29  Andy Piper  <andyp@parallax.co.uk>

	* redisplay-msw.c (mswindows_output_string)
	(mswindows_output_string): output the background pixmap if we have
	one.

1998-04-28  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* paths.h.in: Added PATH_PROGNAME and PATH_VERSION.

1998-04-28  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* emacs.c (complex_vars_of_emacs): Added `emacs-program-name' and
	`emacs-program-version'.

1998-04-29  Kirill M. Katsnelson  <kkm@kis.ru>

	* process-nt.c: Signal support for Windows NT.
	New code under subheadings "Running remote threads" and "Sending
	signals".
	(nt_create_process): Create new process suspended, then enable
	signals in it, then resume it.
	(nt_kill_child_process): Implemented
	(nt_kill_process_by_pid): Ditto.
	(process_type_create_nt): Registered the two above.

1998-04-28  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c : slight cleanup and bugfix related to memory
	corruption and possible leaks. Also fix a visual problem
	with XPM pointers

1998-04-28  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c (x_init_image_instance_from_eimage): Make sure
	automatic pointers are null...

1998-04-27  Greg Klanderman  <greg@alphatech.com>

	* cmdloop.c (Fcommand_loop_1): Call investigate_frame_change if
	focus_follows_mouse is true.

	* event-stream.c (next_event_internal): Only call
	investigate_frame_change if focus_follows_mouse is false.

	* event-stream.c (investigate_frame_change): Fix
	focus_follows_mouse handling.  It was the case that, with
	focus_follows_mouse true, (select-frame (next-frame)) could leave
	next-frame with input focus, but not window manager focus.  Now
	needs to be called from 2 places, conditional on the value of
	focus_follows_mouse.

1998-04-24  Kirill M. Katsnelson  <kkm@kis.ru>

	* frame.c (Fmake_frame): GC-protect new frame immediately upon
	creation.

1998-04-27  Kirill M. Katsnelson  <kkm@kis.ru>

	* frame.c (delete_frame_internal): Fixed spurious minibuffer
	frames when creating minibufferless frames (reverted to 20.3
	source, change not in ChangeLog)

1998-04-26  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.h: Added CONCHECK_LDAP macro

	* eldap.c: Moved definition of most Lisp_object keywords to
	general.c
	(Fldap_close): Modified semantics to match those of
	`Fclose_database'
	(Fldap_search_internal): Do not consider a
	`LDAP_SIZELIMIT_EXCEEDED' a fatal error

	* general.c: Added several keywords needed by eldap.c.  Sorted
	keywords alphabetically.

1998-04-24  Hrvoje Niksic  <hniksic@srce.hr>

	* eldap.c (finalize_ldap): New function; use it when declaring
	LDAP lrecord type.

1998-04-27  Kirill M. Katsnelson  <kkm@kis.ru>

	* fileio.c (Fwrite_file_contents_internal): Prefer stat() over
	fstat() back for Windows, where closing a file changes its
	modification time.

1998-04-26  Amir J. Katz  <amir@ndsoft.com>

	* sysdep.h: Simplified definition of strerror()

Sun Apr 23 1998  Andy Piper  <andyp@parallax.co.uk>

	* emacs.c:
	* symsinit.h:
	* glyphs-eimage.c: rename glyphs_read to glyphs_eimage.

	* glyphs.c:
	* console.h:
	* glyphs-x.c:
	* glyphx-msw.c: make xpm_normalize and xpm_instantiate device
	methods and use them appropriately. Remove redundant pixmap file
	handling functions.

Sun Apr 23 1998  Andy Piper  <andyp@parallax.co.uk>

	* glyphs-msw.c: use XINT for lisp ints.

	* console-msw.c: remove redundant functions that break under union
	type.

	* frame-msw.c: build lisp ints for functions that expect them.

	* objects-msw.c: don't LISP_HASH COLORREF's.

	* sheap.c: remove dependency on VALMASK.

1998-04-27  SL Baur  <steve@altair.xemacs.org>

	* debug.c (vars_of_debug): Remove `Fprovide("internal-debug")'.

1998-04-27  Jonathan Harris <jhar@tardis.ed.ac.uk>

	* device-msw.c: Unconditionally use InitCommonControls() instead
	of InitcommonControlsEx() - the latter is not defined in all
	environments.

1998-04-26  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: Religiously use ${progname}.

	* paths.h.in: Remove reference to user-defined site-lisp location.
	* debug.c (vars_of_debug): Rename feature to 'internal-debug.

1998-04-24  Martin Buchholz  <martin@xemacs.org>

	* mule-charset.h:
	* mule-charset.c:
	Use ints instead of bitfields for Lisp_Charset fields.  This
	should work around bugs in the latest egcs snapshot, and make
	XEmacs faster.  Introduce dimension and chars as fields in
	Lisp_Charset instead of computing them every time.  The extra
	space is about 1k, a reasonable price.

1998-04-25  SL Baur  <steve@altair.xemacs.org>

	* glyphs-x.c (xface_normalize): Add console_type parameters to
	calls to `potential_pixmap_file_instantiator'.

Sat Apr 24 1998  Andy Piper  <andyp@parallax.co.uk>

	* event-msw.c: fix and enable signal pipe handling when using msg
	select().

1998-04-25  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* process-unix.c (allocate_pty): Typo fix.

1998-04-25  Olivier Galibert  <galibert@pobox.com>

	* s/irix5-0.h (PTY_OPEN): Ditto
	* s/irix4-0.h (PTY_OPEN): Restore the stb variable.

1998-04-25  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* emacs.c (complex_vars_of_emacs): Typo fixes.

	* emacs.c: Added configure-exec-prefix-directory.

	* paths.h.in: Added PATH_EXEC_PREFIX.

1998-04-25  Olivier Galibert  <galibert@pobox.com>

	* unexelfsgi.c (unexec): Kludge for Irix 5.3 which clears the
	.sbss section no matter what. Defensively remove the alignment fix
	if the .sbss section type isn't modified (Irix 6.5SE). Remove some
	warnings.

1998-04-24  Martin Buchholz  <martin@xemacs.org>

	* data.c (Fnot): There has traditionally been kludgy startup lisp
	code that called `null' even if `not' was more appropriate,
	because `not' was defined in lisp.  This is one primitive
	sufficiently important that it should ALWAYS be defined.

Sat Apr 24 1998  Andy Piper  <andyp@parallax.co.uk>

	* Makefile.in.in: add glyphs-eimage.o to build.

	* console.h: added console methods init_image_instance_from_eimage
	and locate_pixmap_file.

	* emacs.c: add initialisation for glyphs-eimage.c

	* symsinit.h: declare glyphs-eimage functions.

	* glyphs-eimage.c: New file - generalised eimage support for gif,
	tiff, png and jpeg, mainly from glyphs-x.c.

	* glyphs-msw.c: added init_image_instance_from_eimage. Tidied up
	file location.

	* glyphs-x.c: disable gif, tiff, png and jpeg support in this
	file. Added init_image_instance_from_eimage. Tidied up file
	location.

	* glyphs.h:
	* glyphs.c: abstract image location.

Fri Apr 24 19:38:19 1998  Andy Piper  <andyp@parallax.co.uk>

	* config.h.in: support our special select

	* event-msw.c:
	* toolbar-msw.c:
	* console-msw.h: toolbar cleanup.

	* device-msw.c:
	* emacs.c:
	* frame-msw.c:
	* glyphs-msw.h:
	* ntplay.c:
	* process-unix.c:
	* select-msw.c:
	* sheap.c:
	* s/cygwin32.h: warning elimination.

1998-04-24  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fload_average): New argument USE_FLOATS.

	* alloc.c (Fstring): New function, synched with FSF 20.3.

Thu Apr 23 19:38:19 1998  Andy Piper  <andyp@parallax.co.uk>

	* unexcw.c: cope with the reversed executable sections written by
	binutils-2.9 ld and egcs.

1998-04-24  Kirill M. Katsnelson  <kkm@kis.ru>

	* menubar-msw.c (populate_or_checksum_helper): Fixed to compile
	with union type.

1998-04-23  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fload_average): Respect errno when reporting getloadavg()
	errors.

	* getloadavg.c (getloadavg): Cleaner Solaris implementation, based
	on sample code by Casper Dik.

1998-04-23  SL Baur  <steve@altair.xemacs.org>

	* frame-x.c (x_delete_frame): remove dead code.

1998-04-22  SL Baur  <steve@altair.xemacs.org>

	* print.c (Falternate_debugging_output): Unconditionally define.

1998-04-22  Hrvoje Niksic  <hniksic@srce.hr>

	* eval.c: Ditto.

	* alloc.c: Ditto.

	* lread.c: Ditto.

	* print.c: Removed standalone hacks.

1998-04-23  Kirill M. Katsnelson  <kkm@kis.ru>

	* toolbar-msw.c (mswindows_clear_toolbar): Fixed wabbit buttons.
	(mswindows_output_toolbar): Gave 3D look to toolbars. Still no
	pretty, needs more work.
	(mswindows_move_toolbar): Renamed so because it does not deal with
	redrawing exposed toolbars.
	Properly position toolbars.
	(mswindows_redraw_exposed_toolbars): Changed calls to the above.
	(mswindows_find_toolbar_pos): Do not assert if toolbar not
	found: a command can come from a menu.
	(mswindows_handle_toolbar_wm_command): Quickly return nil if
	toolbar not found.

1998-04-22  Kirill M. Katsnelson  <kkm@kis.ru>

	* device-msw.c (tagINITCOMMONCONTROLSEX): Uniform declaration
	between SDK and cygwin.
	(mswindows_init_device): InitCommonControls ->
	InitCommonControlsEx typo fix.

Wed Apr 22 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>

	* glyphs-msw.c (EImage2DIBitmap): count the number of bytes correctly.

Wed Apr 22 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>

	* config.h.in: support for HAVE_MSG_SELECT.

	* console-msw.h: add support for four toolbars.

	* device-msw.c: init common controls.

	* event-msw.c: if HAVE_MSG_SELECT is defined use unixoid event
	stream tye callbacks and select() on events rather than MWFMO.
	Added event handling for tooltip messages. If you have this
	special select then all process support works under cygwin.

	* frame-msw.c: add support for four toolbars.

	* redisplay-msw.c: update toolbars when an area is exposed.

	* signal.c: _WIN32 -> WINDOWSNT.

	* event-stream.c: enable unixoid initialization if we have it.

	* event-unixoid.c: allow us to turn off the signal pipe.

	* toolbar-msw.c: major overhaul. Enable support for all four
	toolbars, fix display and sizing problems, enable tooltip support,
	be more optimal about deleting toolbars.

	* toolbar.h: reinstate 0 toolbar border width for msw.

	* s/cygwin32.h: minor define updates.

1998-04-22  Hrvoje Niksic  <hniksic@srce.hr>

	* print.c (Falternate_debugging_output): Define only if
	DEBUG_XEMACS.

1998-04-21  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Fmake_temp_name): Updated docstring.

1998-04-21  Hrvoje Niksic  <hniksic@srce.hr>

	* print.c (print_prepare): New argument FRAME_KLUDGE.
	(print_prepare): If writing to a frame, return a resizing buffer
	stream.
	(print_finish): Flush the stream.
	(Fprin1): Adjust calls to print_prepare() and print_finish().
	(Fprinc): Ditto.
	(Fprint): Ditto.
	(print_internal): Optimize printing of characters.

	* print.c (RESET_PRINT_GENSYM): New macro.
	(print_prepare): Use it.
	(print_finish): Ditto.
	(Fwrite_char): Ditto.
	(Fprin1_to_string): Ditto.

1998-04-22  SL Baur  <steve@altair.xemacs.org>

	* config.h.in: add FOR_MSW variable.
	From Itay Ben-Yaacov <pezz@www-mail.huji.ac.il>

1998-04-20  Kirill M. Katsnelson  <kkm@kis.ru>

	* alloc.c (report_pure_usage): Remove ifdef WINDOWSNT around
	"Don't panic, I will restart make".

1998-04-19  Kirill M. Katsnelson  <kkm@kis.ru>

	* process.c (vars_of_process): Declared lisp variable
	windowed-process-io.

	* procimpl.h: Externally declared it.

	* process-nt.c (nt_create_process): Changed to honor the above
	variable, and to utilize SHGetFileInfo to determine file type.

1998-04-21  Martin Buchholz  <martin@xemacs.org>

	* mule-ccl.c: Fix compiler warnings.  I hate compiler warnings.
	The code is clearer anyways without macros that goto.

1998-04-22  SL Baur  <steve@altair.xemacs.org>

	* glyphs.h: Add prototypes for signal_image_error and
	signal_image_error_2.
	Suggested by Hrvoje Niksic <hniksic@srce.hr>

1998-04-18  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* fileio.c: Changed `directory-sep-char' to `path-separator',
	following a change in GNU Emacs.

1998-04-21  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.c: As suggested by Hrvoje Niksic
	(Fldap_search_internal): Loop and GCPRO cleanup
	(print_ldap): Removed text translation

1998-04-19  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.c: (print_ldap): Ignore escapeflag
	(Fldap_search_internal): Added unwind protection to appropriately
	free the LDAP temporary structures in case of interruption.  Added
	a QUIT to the result fetching loop.

1998-04-19  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (TopLevel): New variables: Vinfodock_major_version,
	Vinfodock_minor_version, Vinfodock_build_version.
	(vars_of_emacs): Initialize them.

	* config.h.in: Add InfoDock version numbers.

	* device-x.c (have_xemacs_resources_in_xrdb): distinguish whether
	we're running as InfoDock or XEmacs.

1998-04-18  SL Baur  <steve@altair.xemacs.org>

	* glyphs-x.c: Remove definition of Q_color_symbols.

	* glyphs.h: Declare Q_color_symbols and evaluate_xpm_color_symbols.

1998-04-17  Jonathan Harris <jhar@tardis.ed.ac.uk>

	* console-msw.h:
	Added "commctrl.h" and "X11/xpm.h" includes to support toolbars
	and XPM.

	* glyphs-msw.c:
	Removed (!NILP (Vmswindows_bitmap_file_path)) check in
	locate_pixmap_file() so that lookups of absolute paths don't fail
	if this is unset.
	Added new mswindows_xpm_normalize();

	* glyphs.h:
	* glyphs.c:
	* glyphs-x.c:
	Moved generic XPM support out of glyphs-x.c into glyphs.c.
	Functions moved:
	signal_image_error, signal_image_error_2,
	check_valid_xpm_color_symbols, evaluate_xpm_color_symbols,
	xpm_possible_dest_types.
	xpm_normalize and xpm_instantiate in glyphs.c just call the
	appropriate x_ or mswindows_ funtion in glyphs-x.c or
	glyphs-msw.c.

	* toolbar-msw.c:
	Don't assert on empty toolbar.

	* toolbar.c:
	* toolbar.h:
	Adjusted mswindows default toolbar height/widths so redisplay is
	correct.

1998-04-18  Hrvoje Niksic  <hniksic@srce.hr>

	* tooltalk.c (tt_message_arg_ival_string): Ditto.

	* redisplay.c (window_line_number): Ditto.
	(decode_mode_spec): Ditto.

	* glyphs.c (print_image_instance): Ditto.

	* doprnt.c (emacs_doprnt_1): Ditto.

	* data.c (Fnumber_to_string): Use long_to_string().

	* lisp.h: Declare long_to_string().

	* print.c (Fprin1_to_string): Do the Vprint_gensym_alist stunt.

	* emacs.c (main_1): Don't create print stream.

	* print.c: Removed print_stream implementation.
	(print_prepare): Don't create a print_stream.
	(long_to_string): New function, from GNU Wget.
	(print_internal): Use it.
	(output_string): alloca() copies only for strings smaller than
	65536 bytes; else, inhibit gc.

1998-04-18  Hrvoje Niksic  <hniksic@srce.hr>

	* config.h.in: Check for DLERROR.

	* sysdll.c: Cosmetic changes.

1998-04-18  Hrvoje Niksic  <hniksic@srce.hr>

	* sysdll.c (dll_error): It's `dlerror', not `dl_error'.

1998-04-17  Kirill M. Katsnelson  <kkm@kis.ru>

	* specifier.c (prune_specifiers): Fix for Vall_specifiers
	corruption.

	* specifier.h: Fixed GC_* macros to utilize GC_EQ, as suggested by
	Steve.

1998-04-17  Hrvoje Niksic  <hniksic@srce.hr>

	* dll.c (Fdll_open): Simplify interface.

	* sysdll.c: Allocate BUF dynamically.

	* cmds.c (internal_self_insert): Removed `no-self-insert' hack.

Fri Apr 17 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>

	* event-msw.c: don't use LocalAlloc()/LocalFree(). With unix
	processes use a filestream for output. This makes subprocess
	support work under cygwin.

1998-04-17  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* fileio.c (vars_of_fileio): Resurreced directory-sep-char to be
	DIRECTORY_SEP instead of hardwired "/".

1998-04-16  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* fileio.c (file_name_as_directory): Now returns "./" (or NT
	equivalent) for "".

1998-04-09  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.c: Fully rewritten introducing a new opaque LDAP Lisp
	data type.

	* eldap.h: Ditto

1998-04-17  Olivier Galibert  <galibert@pobox.com>

	* fileio.c (vars_of_fileio): Finish directory_sep_char removal.

1998-04-14  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* emacs.c (main_1): Added option --debug-paths and analogous
	variable.

1998-04-15  Hrvoje Niksic  <hniksic@srce.hr>

	* frame-msw.c (Vmswindows_frame_being_created): Don't staticpro.

	* console-msw.h, event-msw.c, frame-msw.c: Renamed
	mswindows_frame_being_created to Vmswindows_frame_being_created.

1998-04-12  Kirill M. Katsnelson  <kkm@kis.ru>

	* event-msw.c (emacs_mswindows_quit_p): Do not check for quit
	character in modal loop.

	* fileio.c: Removed Vdirectory_sep_char variable.

	* lisp.h: Removed extern decl for the above.

1998-04-16  SL Baur  <steve@altair.xemacs.org>

	* indent.c (vertical_motion_1): set_marker_restricted takes
	Lisp_Objects.

1998-04-17  Hrvoje Niksic  <hniksic@srce.hr>

	* md5.c (Fmd5): Correctly rename argument.

	* print.c (Fprin1_to_string): Remove useless variable.

1998-04-13  Greg Klanderman  <greg@alphatech.com>

	* indent.c (vertical_motion_1): new helper function to share
	common code between Fvertical_motion and Fvertical_motion_pixels.
	Properly handle the WINDOW argument as the doc string indicates it
	should.  Update docstrings to be more clear and concise.
	(Fvertical_motion): use vertical_motion_1.
	(Fvertical_motion_pixels): use vertical_motion_1.

1998-04-15  Kirill M. Katsnelson  <kkm@kis.ru>

	* specifier.h: Introduced magic specifiers. Please read comments
	in specifier.h.

	* specifier.c: Reworked many functions to support magic
	specifiers.

	* scrollbar.c (specifier_vars_of_scrollbar): Made magic specifiers
	Vscrollbar_width and Vscrollbar_height.
	(init_frame_scrollbars): Enabled critical lisp code operate on
	ghost specifiers.
	(init_device_scrollbars): Ditto.
	(init_global_scrollbars): Ditto.

	* scrollbar-msw.c (Fmswindows_init_scrollbar_metrics): Scrollbar
	init function, called from init-scrollbars-from-resuorce in
	lisp/scrollbar.c
	(syms_of_scrollbar_mswindows): DEFSUBR it.

	* emacs.c (main_1): Called syms_of_scrollbar_mswindows()

	* symsinit.h: Declared syms_of_scrollbar_mswindows()

Thu Apr 16 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>

	* frame-msw.c:
	* console-msw.h: add toolbars to frame parameters.

	* emacs.c: call console_type_create_mswindows_toolbar

	* event-msw.c: call toolbar handling code in main event loop.

	* glyphs-msw.c (mswindows_create_icon_from_image)
	(mswindows_resize_dibitmap_instance): new functions. Remove mask
	stuff from various others.

	* redisplay-msw.c:
	* menubar-msw.c: warning elimination.

	* toolbar-msw.c: new file. Reasonable implementation of toolbars
	for mswindows. Some features are not complete.

	* toolbar.c: enable toolbar parameters for mswindows.

	* toolbar.h: choose slightly different toolbar defaults for
	mswindows.

1998-04-16  Hrvoje Niksic  <hniksic@srce.hr>

	* lisp.h (CHECK_IMPURE): Use it.

	* data.c (pure_write_error): Accept an argument.

	* emacs.c (vars_of_emacs): New variable `internal-error-checking';
	initialize it.

1998-04-16  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Fmake_temp_name): Avoid random(); simplify.

1998-04-13  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* emacs.c (complex_vars_of_emacs): Changed configure-exec-path to
	configure-exec-directory.
	(decode_path): Doesn't call file-name-as-directory no more as
	empty components would lead to evil behavior.

1998-04-16  Hrvoje Niksic  <hniksic@srce.hr>

	* extents.c (decode_extent): Unify the error message.

1998-04-17  Hrvoje Niksic  <hniksic@srce.hr>

	* md5.c (Fmd5): Simplify; use only input and encoding streams.
	(Fmd5): Separate coding guesswork into md5_coding_system().
	(Fmd5): Don't close the stream; deleting it is enough.

1998-04-16  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Finsert_file_contents_internal): Prefer fstat() over
	stat.

1998-04-15  Martin Buchholz  <martin@xemacs.org>

	* fns.c (Fsubseq): Make (subseq nil 0 0) return nil, not #*.

1998-04-16  SL Baur  <steve@altair.xemacs.org>

	* device-x.c (get_device_from_display): Use "infodock" as the
	fallback name when running as InfoDock.

1998-04-14  Greg Klanderman  <greg@alphatech.com>

	* device-x.c (compute_x_app_name): New function needed to compute
	application name to use now that XtOpenDisplay is decomposed into
	XOpenDisplay and XtDisplayInitialize.
	(x_init_device): use it.

1998-04-06  Greg Klanderman  <greg@alphatech.com>

	* device-x.c (have_xemacs_resources_in_xrdb): adhere to coding
	standards and avoid opening display twice by breaking
	XtOpenDisplay into XOpenDisplay and XtDisplayInitialize.
	(x_init_device): Ditto.

1998-04-15  Olivier Galibert  <galibert@pobox.com>

	* s/aix3-2-5.h: Ditto.

	* s/aix4-1.h: Ditto.

	* s/aix4-2.h: Ditto.

	* s/bsd386.h: Ditto.

	* s/bsdos2-1.h: Ditto.

	* s/dgux.h: Ditto.

	* s/esix.h: Ditto.

	* s/esix5r4.h: Ditto.

	* s/hpux8.h: Ditto.

	* s/hpux9-shr.h: Ditto.

	* s/hpux9-x11r4.h: Ditto.

	* s/hpux9.h: Ditto.

	* s/hpux9shxr4.h: Ditto.

	* s/isc3-0.h: Ditto.

	* s/isc4-0.h: Ditto.

	* s/ptx.h: Ditto.

	* s/sco4.h: Ditto.

	* s/sco5.h: Ditto.

	* s/usg5-3.h: Ditto.

	* s/usg5-4-2.h: Ditto.

	* s/usg5-4.h: Kill a bunch of now autodetected defines.

1998-04-05  Greg Klanderman  <greg@alphatech.com>

	* window.c (Fwindow_displayed_pixel_height): rename more
	appropriately as window-text-pixel-height.
	(syms_of_window): Update the DEFSUBR.
	(Fwindow_text_pixel_width): New function for completeness.
	(Fwindow_text_pixel_edges): New function.
	(syms_of_window): DEFSUBR 2 new functions.

1998-04-13  Greg Klanderman  <greg@alphatech.com>

	* redisplay.c (redisplay_window): When echo area is active, and we
	swap in the echo area buffer, restore the minibuffer's pointm and
	startp when we restore the minibuffer to the window.  This avoids
	having the minibuffer point randomly change when it is active but
	not selected and a message is shown.

1998-04-16  Hrvoje Niksic <hniksic@srce.hr>

	* md5.c: replaced RSA reference code with GNU textutils implementation.

1998-04-14  Martin Buchholz  <martin@xemacs.org>

	* signal.c (init_signals_very_early): Make `nohup xemacs &' work.
	Wrap #ifdefs around uses of SIGQUIT and SIGILL.

1998-04-12  Kirill M. Katsnelson  <kkm@kis.ru>

	* objects-msw.c (mswindows_initialize_font_instance): Fixed assert
	abuse; proper cleanup on GDI error.

1998-04-14  Kirill M. Katsnelson  <kkm@kis.ru>

	* console-msw.h: Declared get_nt_process_handle() and
	mswindows_bump_queue().
	Removed declarations for mswindows_enqueue_dispatch_event() and
	mswindows_enqueue_magic_event().

	* event-msw.c (emacs_mswindows_create_stream_pair): Casts on
	handle types and get_osfhandle() return type. From Andy Piper.
	(emacs_mswindows_select_process): Get Win32 process handle
	directly from process lrecord.
	(get_process_handle): Removed function.
	(emacs_mswindows_handle_magic_event): Removed handling of
	XM_BUMPQUEUE magic event.
	(mswindows_wnd_proc): Removed handling of WM_EXITMENULOOP message,
	which called a do-nothing handler in menubar-msw.c
	(mswindows_wnd_proc, WM_EXITSIZEMOVE): Queue an empty event
	instead of magic event, via mswindows_bump_queue().
	(mswindows_wnd_proc, WM_CLOSE): Ditto.
	(mswindows_need_event): Call mswindows_bump_queue() upon process
	termination, in case process pipe does not get closed along.
	Do not close process handle.
	(mswindows_bump_queue): Added function.
	(mswindows_enqueue_dispatch_event): Made static.
	(ntpipe_slurp_*): Revamped the slurp thread implementation so the
	stream does not expect the thread to terminate when stream is closed.
	(ntpipe_slurp_reader): Fixed an attempt to read zero bytes from
	the pipe.

	* event-stream.c (event_stream_deal_with_async_timeout):
	Conditionalized timer-based polling for finished processes on
	HAVE_UNIX_PROCESSES.

	* menubar-msw.c (mswindows_handle_wm_command): Queued proper bump
	queue event.
	(mswindows_handle_wm_exitmenuloop): Removed function.

	* menubar-msw.h: Removed unused function prototype.

	* process-nt.c (get_nt_process_handle): Added function.

	* signal.c (init_poll_for_sigchld): Conditionalized on
	HAVE_UNIX_PROCESSES.

1998-04-13  Kirill M. Katsnelson  <kkm@kis.ru>

	* frame-msw.c: Implemented the following methods:
	mswindows_get_mouse_position()
	mswindows_set_mouse_position()
	mswindows_frame_totally_visible_p()

1998-04-11  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* emacs.c: Renamed inhibit-package-init to inhibit-early-packages
	to better reflect its semantics.
	Renamed inhibit-update-autoloads to inhibit-package-autoloads.
	(complex_vars_of_emacs): Added site-directory and lisp-directory.
	-no-packages -> no-early-packages.

	* Makefile.in.in: Reflected reinstatement of paths.h.in.

	* paths.h.in: Reinstated.

	* paths.h.in.in: Removed.

	* config.h.in: Moved configure path and directory options from
	paths.h.in.in.

1998-04-11  Kirill M. Katsnelson  <kkm@kis.ru>

	* event-msw.c (emacs_mswindows_quit_p): don't recurse.

1998-04-10  Kirill M. Katsnelson  <kkm@kis.ru>

	* callproc.c (init_callproc): Correctly initialize
	`shell-file-name' for WINDOWSNT

	* emacs.c (main_1): Properly called new functions (see symsinit.h
	entry for which).

	* event-msw.c (struct ntpipe_slurp_stream):
	(slurp_thread):
	(make_ntpipe_input_stream):
	(get_ntpipe_input_stream_waitable):
	(get_ntpipe_input_stream_param):
	(ntpipe_slurp_reader):
	(ntpipe_slurp_closer):
	(init_slurp_stream): Win32 pipe input stream implementation.
	(struct ntpipe_shove_stream):
	(shove_thread):
	(make_ntpipe_output_stream):
	(get_ntpipe_output_stream_param):
	(ntpipe_shove_writer):
	(ntpipe_shove_was_blocked_p):
	(ntpipe_shove_flusher):
	(ntpipe_shove_closer):
	(init_shove_stream): Win32 pipe output stream implementation.
	(mswindows_enqueue_process_event): Dispatch helper.
	(find_waitable_handle):
	(add_waitable_handle):
	(remove_waitable_handle): New three, waitable handles handling.
	(mswindows_need_event_in_modal_loop): Simplified.
	(mswindows_need_event): Simplified.
	(mswindows_need_event): Generate process events on process output;
	kick status_notify when a process ends.
	(mswindows_find_console): Simplified.
	(emacs_mswindows_event_pending_p): Adjusted parameters to
	mswindows_need_event().
	(emacs_mswindows_next_event): Ditto.
	(get_process_input_waitable):
	(get_process_handle): Process select/unselect helpers.
	(emacs_mswindows_select_process): Implemented.
	(emacs_mswindows_unselect_process): Implemented.
	(emacs_mswindows_quit_p): Call mswindows_drain_windows_queue()
	directly so do not even try do dequeue process events. Saved a
	byte and a tick.
	(emacs_mswindows_create_stream_pair): Implemented.
	(emacs_mswindows_delete_stream_pair): Implemented.
	(vars_of_event_mswindows): Registered the above two.
	(lstream_type_create_mswindows_selectable): Function called from
	emacs.c to create two pipe lstream types.

	* ntproc.c (sys_select): Disgustful brain fart this file is.

	* process-nt.c: New file: Asynchronous subprocess implemenation
	for Win32.

	* process.h: Declare Fprocess_id().

	* signal.c (init_signals_very_early): Conditionalize possibly
	nonexistent signals.

	* symsinit.h: Declared:
	lstream_type_create_mswindows_selectable ()
	process_type_create_nt ()
	vars_of_process_nt ()

	* s/windowsnt.h: Defined HAVE_WIN32_PROCESSES.
	Removed fake SIGTRAP, SIGPIPE and SIGCHLD.

1998-04-10  Martin Buchholz  <martin@xemacs.org>

	* fns.c (Fnthcdr):
	Most times through the loop will get a cons, so optimize for that.

	* bytecode.c (Fbyte_code): Remove '91 vintage compiler bug workaround.
	Add NATNUMP check for Bnth bytecode.
	Bnth: Optimize case of n > length (list).
	QUITs not necessary since even if list is circular, n will count
	down to 0.
	Bnthcdr: inline the code for nthcdr (we have a bytecode for it,
	after all)
	Bcdr, Bcar: Use tail recursion.

1998-04-10  Hrvoje Niksic  <hniksic@srce.hr>

	* redisplay.c (redisplay_window): Don't lose with negative
	scroll_step.

1998-04-09  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Fmake_temp_name): Don't use `+' in generated file
	names.
	(Fmake_temp_name): Randomize the initial values of counters.

1998-04-07  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* Makefile.in.in: paths.h.in is now generated from paths.h.in.in.

	* emacs.c (decode_path): Removed parsing of "::" into nil component.

1998-04-09  Martin Buchholz  <martin@xemacs.org>

	* lstream.c (make_filedesc_stream_1): Fix another Martin blooper.

1998-04-07  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (Fdump_emacs): Delete superfluous open comment.

1998-04-06  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (Fdump_emacs): Move call to disable_free_hook back to
	Fdump_emacs where it belongs.

1998-04-07  Kirill M. Katsnelson  <kkm@kis.ru>

	* nt.c (sys_mkdir): Added the second unused parameter, after UNIX
	version. Suggested by Martin.

1998-04-07  Kirill M. Katsnelson  <kkm@kis.ru>

	* event-msw.c (mswindows_wnd_proc): Fix member access macro names.

	* frame-msw.c (mswindows_frame_property):
	(mswindows_internal_frame_property_p):
	(mswindows_frame_properties): Implemented for the 'left and 'top
	properties.
	(console_type_create_frame_mswindows): Regsitered the above.
	(mswindows_set_title_from_bufbyte): Update title only if it has
	really changed. This avoids a bit of flashing.

	* console-msw.h (FRAME_MSWINDOWS_TITLE_CHECKSUM): To update title
	smoother.
	(MSWINDOWS_FRAME_*(f)): Were MSWINDOWS_FRAME_*(f). Eeek!

1998-04-06  Kazuyuki IENAGA <ienaga@jsys.co.jp>

	* unexfreebsd.c: introduce FreeBSD port's patch to avoid
	FreeBSD-current warns "Absurd new brk addr".

1998-04-06  Colin Rafferty  <colin@xemacs.org>

	* glyphs-x.c (struct gif_error_struct): Made the err_str point to
	a CONST char* instead of non-const.
	(tiff_memory_write): Add fake return statement to shut up warnings.

1998-04-06  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Finsert_file_contents_internal): Correctly handle
	special files larger than 32K.

1998-04-06  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Fmake_temp_name): Don't call mktemp().

1998-04-06  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* unexelf.c: include <config.h> first.

1998-04-04  Martin Buchholz  <martin@xemacs.org>

	* sysdep.c:  Add #include <sys/termio.h> for AIXHFT as suggested
	on c.e.x.

	* nt.c:
	* ntproc.c:
	Change "config.h" to <config.h>.  Add dire warnings to code since
	config.h is not included first.

	* powerpc.h: Avoid redefinition warning on START_FILES.

	* window.c: Rename Vminibuf_scroll_window to Vminibuffer_scroll_window.
	* hpplay.c: Rename play_gain to hp_play_gain in accordance with
	coding standards.

	* frame-x.c (x_lower_frame):
	(x_raise_frame_1): Clarify code.  Save a nanosecond if frame not
	visible.

	* fileio.c (Fmake_temp_name): Use static CONST suffix; save a
	nanosecond.

1998-04-05  Amir J. Katz  <amir@ndsoft.com>

	* sysproc.h: Added #include <sys/types.h> before <sys/socket.h>
	otherwise callproc.c does not compile on SunOS 4.1.4 with gcc 2.8.1

	* sysdep.h: strerror() does not return CONST in gcc 2.8.1

1998-04-05  Hrvoje Niksic  <hniksic@srce.hr>

	* redisplay.c (generate_fstring_runes): Grok specifiers and
	symbols indirecting to specifiers.

1998-04-06  Olivier Galibert  <galibert@pobox.com>

	* events.c (print_event): XINT() may return a long.

	* insdel.c (make_gap): Thou shan't cast EMACS_INT_MAX to int.
	(buffer_insert_string_1): ditto.

	* regex.c (print_partial_compiled_pattern): Neither EMACS_INTs nor
	ptrdiff_t are portably printable as an int.

	* redisplay.c (window_line_number): Don't assume that an EMACS_INT
	in an int.

	* alloc.c (report_pure_usage): Don't assume that a size_t is
	displayable as an int.

1998-04-06  SL Baur  <steve@altair.xemacs.org>

	* process-unix.c: Fix typo in #ifdef.
	From Hrvoje Niksic <hniksic@srce.hr>

1998-04-06  Olivier Galibert  <galibert@pobox.com>

	* unexelfsgi.c (unexec): Don't treat the sbss section as bss if it
	isn't one. Needed for irix 6.5.

1998-04-05  Martin Buchholz  <martin@xemacs.org>

	* sysdep.h: Two prototypes that weren't properly size_t'ed

1998-04-04  Martin Buchholz  <martin@xemacs.org>

	* ralloc.c: mallopt <==> malloc.h.

1998-04-04  Martin Buchholz  <martin@xemacs.org>

	* emacs.c: #include <paths.h>, not "paths.h"
	This is a standard bug.  It manifests if you configure in the
	source tree, then configure elsewhere with --srcdir.
	Remove misleading PATH_EXEC comment; PATH_PACKAGEPATH is also used.

1998-04-04  Olivier Galibert  <galibert@pobox.com>

	* s/386bsd.h: Removed obsolete define.

1998-04-04  Olivier Galibert  <galibert@pobox.com>

	* s/386-ix.h: Removed useless define.

	* sysdep.c (insque): Removed. Not used anywhere in the code.

1998-04-04  Olivier Galibert  <galibert@pobox.com>

	* process-unix.c (unix_kill_child_process): Use TIOCSIGSEND or
	TIOCSIGNAL as needed.

	* s/usg5-4.h: Remove kludgy TIOCSIGSEND #define which breaks on
	irix 6.5.

1998-03-28  Hrvoje Niksic  <hniksic@srce.hr>

	* insdel.c (emchar_string_displayed_columns): Simplify for
	non-Mule case.

	* events.c (WRONG_EVENT_TYPE_FOR_PROPERTY): Issue nicer output.

1998-04-01  Martin Buchholz  <martin@xemacs.org>

	* sysdir.h (sys_mkdir):
	* sysfile.h (sys_read):
	(sys_write):
	(sys_chmod):
	(sys_creat):

	* sysdep.c (sys_read_1):
	(sys_read):
	(sys_write_1):
	(sys_write):
	(sys_mkdir):
	(sys_readlink):
	(sys_chmod):
	(sys_creat):

	* nt.c (sys_read):
	(sys_chmod):
	(sys_creat):
	(sys_write): Change types of sys_* in accordance with published
	standards. Use size_t and mode_t instead of unsigned int and int.

1998-04-03  Martin Buchholz  <martin@xemacs.org>

	* config.h.in (enum_field):
	* lisp-union.h:
	* extents.h:
	* redisplay.c (add_margin_runes):
	Prefer enums for use as bitfields in preference to unsigned int,
	but allow the possibility to suppress it if a compiler disallows
	it or emits annoying warnings.  Currently only __SUNPRO_C cc -Xc
	used unsigned ints.

	* event-stream.c: Fixup DEFVAR for
	Vcomposed_character_default_binding; Real bug!
	* event-msw.c: Rename mswindows_button2* to mswindows_mouse_button*
	* emacs.c: Rename suppress_early_backtrace to
	suppress_early_error_handler_backtrace
	* objects-x.c: Rename handle_nonfull_spec_fonts to
	x_handle_non_fully_specified_fonts
	* lread.c: Rename puke_on_fsf_keys to
	fail-on-bucky-bit-character-escapes
	* lread.c:
	* doc.c: Rename Vdoc_file_name to Vinternal_doc_file_name
	* fileio.c:
	* bufslots.h:
	* buffer.c: Rename save_length to saved_size
	* alloc.c: Rename pureptr to pure_bytes_used
	* abbrev.c: Rename last_abbrev_point to last_abbrev_location
	* lisp.h:
	DEFVAR_* are supposed to be named following a standard convention.

1998-04-03  Martin Buchholz  <martin@xemacs.org>

	* callint.c:
	* ralloc.c:
	* data.c:
	* eldap.c:
	* extents.c:
	* frame-msw.c:
	* frame-x.c:
	* general.c:
	* process.c:
	* xselect.c:
	Rationalize defsymbol handling.
	defsymbols are supposed to have equivalent C and Lisp names, for
	consistency.  At least one real bug (end-glyph-layout) fixed.
	Move multiply defsymbol'ed stuff into general.c.

1998-04-03  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* m/ibmrs6000.inp: Removed; obsoleted by configure.in changes.

1998-04-03  Martin Buchholz  <martin@xemacs.org>

	* console-tty.c (Fset_console_tty_input_coding_system):
	(Fset_console_tty_output_coding_system):
	Input/Output and encoding/decoding were reversed.

1998-04-02  SL Baur  <steve@altair.xemacs.org>

	* m/powerpc.h: Remove LD_SWITCH_MACHINE for Linux.

1998-04-02  Greg Klanderman  <greg@alphatech.com>

	* window.c (set_window_pixsize): Move up call to
	check_min_window_sizes.

	* indent.c (vmotion_1): renamed from vmotion() and added
	additional argument to optionally return the pixel motion.
	(vpix_motion): Helper for vmotion_1.
	(vmotion): Wrapper - just call vmotion_1() with the right args.
	(Fvertical_motion_pixels): New function.
	(syms_of_indent): DEFSUBR it.

1998-04-02  Martin Buchholz  <martin@xemacs.org>

	* xselect.c:
	* event-Xt.c:
	* emacs.c:
	Remove last vestiges of #ifdef EPOCH code.  It had no chance of
	working anyways.  In honour of seeing Marc Andreesen in person for
	the first time today.

1998-04-01  Martin Buchholz  <martin@xemacs.org>

	* extents.h:
	* lisp-union.h:
	Don't use enums as bitfields - only unsigned ints.
	Fixes: warning: nonportable bit-field type

	* eval.c (call_with_suspended_errors): More volatilizing to
	appease Sunpro cc.

	* mem-limits.h:
	* ralloc.c: Remove #undef NULL; they're not even used!

	* process-unix.c (unix_send_process): send_process is a method, so
	we can't include volatile in the prototype.  We make the argument
	non-volatile, make a volatile copy, and then use that instead.

	* frame-x.c (x_delete_frame): The `frame' variable is initialized
	but not actually used.

	* Makefile.in.in (xselect.o): The last line of b34-pre2's
	src/Makefile.in.in contains a dependency that should have been
	patched away.
	(mostlyclean): Remove the removal of depend.* - no such files
	exist anymore

	* make-src-depend: include a dependency on only one of
	lisp-union.h or lisp-disunion.h.

1998-04-01  Martin Buchholz  <martin@xemacs.org>

	* specifier.c (specifier_instance_from_inst_list): A nanosecond
	saved is a nanosecond earned.

1998-03-31  Greg Klanderman  <greg@alphatech.com>

	* redisplay.c (update_line_start_cache): Fix bug involving
	invisible text in which the line_start_cache gets hosed.

Sun Mar 29 1998  Andy Piper  <andyp@parallax.co.uk>

	* console-msw.h: define FRAME_MSWINDOWS_CDC.

	* frame-msw.c: (mswindows_set_frame_icon) new function. Works but
	no masks as yet.

	* glyphs-msw.c: GNUize the code. Fix 24bpp display and make the
	default. Add managment of icons.

	* glyphs-msw.h: add icon attributes.

	* redisplay-msw.c: (mswindows_output_pixmap) remove unused cursor
	code.

	* objects-msw.c: eliminate char subscript warning.

1998-04-01  SL Baur  <steve@altair.xemacs.org>

	* sysdll.c (dll_close): fix typo.
	Suggested by Marcus Thiessel <marcus_thiessel@hp.com>


1998-03-28  Kyle Jones  <kyle_jones@wonderworks.com>

	* device.c (Fset_device_class): Recompute cached
	  specifiers everywhere if device class is changed.
	  Set various redisplay flags so that the device's
	  various frames are redisplayed.

1998-03-31  SL Baur  <steve@altair.xemacs.org>

	* lrecord.h (DECLARE_NONRECORD): Remove redundant paren.
	Suggested by Martin Buchholz <martin@xemacs.org>

1998-04-01  Kirill M. Katsnelson  <kkm@kis.ru>

	* gui.c (gui_item_display_flush_left): Fix suffix length.

1998-04-01  Kirill M. Katsnelson  <kkm@kis.ru>

	* s/windowsnt.h: Defined SIZEOF_LONG_LONG and SIZEOF_VOID_P

	* dired-msw.c: Included <limits.h>

	* config.h.in (VOID_P_BITS): Fixed so that uses SIZEOF_VOID_P

1998-03-31  SL Baur  <steve@altair.xemacs.org>

	* glyphs.c (image_instantiate_cache_result): Correct order of
	parameters to Fputhash.
	Suggested by Kirill M. Katsnelson <kkm@kis.ru>

1998-03-30  Martin Buchholz  <martin@xemacs.org>

	* redisplay.c (create_right_glyph_block): glyph_type should really
	be glyph_layout.

1998-03-29  Martin Buchholz  <martin@xemacs.org>

	* sysfile.h: Move all encapsulations from lisp.h/emacsfns.h into
	sysfile.h.  Users of the functionality herein will have to
	#include sysfile.h.
	Check all .o files for missing #includes.
	* config.h.in:
	Discovered that config.h.in was missing ENCAPSULATE_CLOSEDIR, as a
	result of fixing the above.

	* gui.c (gui_item_add_keyval_pair): We should not use the idiom
	error ("%S", lisp_object) in C code.
	I converted the code to use signal_simple_error_2 instead.
	(signal_too_long_error): Ditto.

	* glyphs.c (image_instantiate_cache_result): Use XC[AD]R instead
	of Fc[ad]r.  This is always called with valid conses, and in fact,
	already assumed it.

	* font-lock.c (find_context): Use context_none with context
	instead of ccontext_none.

	* fns.c (Flength): The CONSP and NILP code can be combined.
	Change the name of the arg to SEQUENCE from OBJ.
	(Fnthcdr): CHECK_NATNUM instead of CHECK_INT.  Optimize out Fcdr calls.
	(Felt): Change argument from seq to sequence to match docstring.

1998-03-28  Martin Buchholz  <martin@xemacs.org>

	* fns.c (string_putprop):
	(string_getprop): Make method functions static.

	* window.c (find_window_by_pixel_pos): Warning suppression.

	* imgproc.c (splitbox): Warning suppression.

	* redisplay-x.c (x_output_eol_cursor): Remove redundant XSETWINDOW.

	* glyphs-x.c (signal_image_error):
	(signal_image_error_2):
	(convert_EImage_to_XImage):  Make functions static.

	* editfns.c (Fbuffer_size): Rename the `F' function to
	Fbuffer_size in accordance with coding standards.

	* dll.c (Fdll_open): Fix up data conversion.
	Provide auxiliary function maybe_call_library_function().

	* device-x.c (get_x_display): make function static.

	* data.c (Fcar): Should generate listp, not consp error.
	(Fcdr): Should generate listp, not consp error.

1998-03-27  Martin Buchholz  <martin@xemacs.org>

	* console-tty.c (free_tty_console_struct):
	Replace con->console_data with CONSOLE_type_DATA (con)

	* *.[ch]:  C++ compilability of xemacs, on Linux and Solaris.

	* casetab.c (Fcase_table_p): Optimize.

	* eval.c:
	* bytecode.c:
	Rename Fcondition_case_3 to condition_case_3 - it's not a DEFUN.

	* buffer.h:
	Remove all *BUFFER_OR_STRING* macros - unused.
	(memind_to_bytind): Merge two versions of function by moving
	#ifdef ERROR_CHECK_BUFPOS into the function body.
	(*_DATA_ALLOCA*): get types correct.  rewrite for clarity.

	* balloon_help.c (balloon_help_destroy): rearrange order of
	functions, and remove prototype from header file.

	* alloc.c (deadbeef_memory): Rewrite. Use size_t for clarity.
	Don't bother with the left-over bytes, since in practice we will
	always get called with a size multiple of 4.
	(Fmake_list): CHECK_NATNUM instead of CHECK_INT
	(vector[4567]): Currently unused; ifdef out.
	(make_pure_float): make function static.
	(garbage_collect_1): Optimize.

1998-03-23  Martin Buchholz  <martin@xemacs.org>

	* marker.c (print_marker): Fix compiler warning, real bug!

	* device.h (MARK_DEVICE_FRAMES_FACES_CHANGED):
	* frame.h (MARK_FRAME_FACES_CHANGED):
	(MARK_FRAME_TOOLBARS_CHANGED):
	(MARK_FRAME_SIZE_CHANGED):
	(MARK_FRAME_CHANGED):
	(MARK_FRAME_WINDOWS_CHANGED):
	(MARK_FRAME_WINDOWS_STRUCTURE_CHANGED):
	Fix multiple evaluation of macro arguments.
	Macros are a fact of life.  Callers have to use temp variables to
	avoid multiple evaluation of arguments.

	* data.c (Ftrue_list_p): New function, with obvious meaning.
	This is terminology from Cltl2.
	Also define a corresponding macro TRUE_LIST_P.

	* device-x.c (validify_resource_component): Optimize. Rename.
	Use the standard technique of using a precomputed table of valid chars.

	(x_get_resource_prefix):
	(Fx_get_resource):
	(Fx_get_resource_prefix):
	Avoid fixed buffer sizes.  Use a char_dynarr.
	Run validify_resource_component on all computed components.

	* lisp.h: Define a char_dynarr type.

1998-03-22  Martin Buchholz  <martin@xemacs.org>

	* fns.c (Fcopy_alist): Optimize.

	* alloc.c (acons): New function.  Now used in the C code.
	Definition in cl.el is commented out.  Add docstring.
	Use acons in functions which create alists.
	* lisp/cl.el (acons): Add docstring.  Really otta be a macro, tho.

	* buffer.c (Fbuffer_memory_usage):
	* window.c (Fwindow_memory_usage):
	Clean up horrible consing code using new acons function.
	Fix incorrect value reported for gap-overhead.

	* fns.c (Fmember):
	(Fold_member):
	(Fmemq):
	(Fold_memq):
	(memq_no_quit):
	(Fassoc):
	(Fold_assoc):
	(Fassq):
	(Fold_assq):
	(assq_no_quit):
	(Frassoc):
	(Fold_rassoc):
	(Frassq):
	(Fold_rassq):
	(rassq_no_quit):
	(Fdelete):
	(Fold_delete):
	(Fdelq):
	(Fold_delq):
	(delq_no_quit):
	(delq_no_quit_and_free_cons):
	(Fremassoc):
	(Fremassq):
	(remassq_no_quit):
	(Fremrassoc):
	(Fremrassq):
	(remrassq_no_quit):
	(Fnreverse):
	(Freverse):
	(Fnthcdr):
	Optimize.
	Replace calls to Fcar, Fcdr, Fsetcar with XCAR and XCDR.
	Simplify logic.
	Many of these functions wouldn't QUIT if called on cyclic lists.
	e.g. try (progn (setq x '(nil)) (setcdr x x) (reverse x))
	One benchmark of delq showed it to be 3 times faster.

	* emacs.c:
	* database.c:
	Cleanup of database functions.
	Make the get_subtype and get_type methods return Lisp_Objects,
	instead of C strings.  No more need for both dbm_type and dbm_lisp_type.
	Rewrite the doc strings to be consistent with XEmacs tradition.
	Replace old `dbm' names with `database'.
	Rename struct database to struct Lisp_Database.
	Rename DEFUN arguments to `database', when applicable.

	* buffer.c:
	* chartab.c:
	* console.c:
	* data.c:
	* database.c:
	* device.c:
	* elhash.c:
	* eval.c:
	* event-stream.c:
	* extents.c:
	* faces.c:
	* frame.c:
	* glyphs.c:
	* keymap.c:
	* lstream.c:
	* mule-charset.c:
	* mule-coding.c:
	* objects.c:
	* opaque.c:
	* process.c:
	* rangetab.c:
	* specifier.c:
	* symbols.c:
	* tooltalk.c:
	* window.c:
	Place DEFINE_LRECORD_* after definition of static object methods, to
	avoid redundant declarations.

	* console.c:
	* console.h:
	* device.c:
	* device.h:
	* extents.c:
	* extents.h:
	* frame.c:
	* frame.h:
	* glyphs.c:
	* glyphs.h:
	* lisp.h:
	* lstream.c:
	* lstream.h:
	* signal.c:
	* specifier.c:
	* specifier.h:
	Eliminate MAC_* macros.
	The MAC_ macros use non-standard comiler extenstions which cause
	gcc to generate bad code on Sparc/Solaris.  Attractive though the
	idea of using those compiler extensions is, they are just not
	robust enough to use in the real world.  So we eliminate them.
	We put up with some sub-optimalities, like macros with multiple
	evaluation.  Such is life with C.  The MAC_ macros were pretty
	darn ugly anyways.  We CAN use inline functions, since the advent
	of C++ means that compilers must support those anyways.

1998-03-21  Martin Buchholz  <martin@xemacs.org>

	* alloc.c (list*): Optimize recursion levels.

	* alloc.c: Add debugger support via enum dbg_constants.
	* gdbinit: Complete rewrite.
	* gdbinit.union: Remove
	* gdbinit.pre-4.14: Remove
	* dbxrc: Complete rewrite.
	* man/xemacs-faq.texi:
	Proper robust debugger support for gdb and Sun's dbx.
	Support all combinations of Kylish DEFINEs.
	Work out of the box with no user customizations.
	See the updated faq for details.

	* emacsfns.h: Remove.  Move declarations to lisp.h
	* dynarr.h: Remove.  Move declarations to lisp.h
	* lisp.h.
	Optimize header file handling to improve compile time over a network.
	Introduce EXFUN macro for external declaration to correspond to DEFUN.
	Include header files only when necessary, i.e. not from lisp.h:
	- unistd.h, limits.h, fnctl.h, blocktype.h, dynarr.h, emacsfns.h


	* lisp.h:
	* lisp-union.h:
	* lisp-disunion.h:
	Rewrite low level object frobbing.
	Make it safe to use XSETOBJ on uninitialized Lisp_Objects.
	(markbit might have been set otherwise)
	Move XPRNTRVAL->XPNTR computation out of lisp-*union.h, since it
	is union-type-independent.

	* EmacsFrame.c:
	* alloc.c:
	* chartab.c:
	* console.c:
	* dialog-x.c:
	* doc.c:
	* elhash.c:
	* eval.c:
	* event-Xt.c:
	* event-stream.c:
	* event-unixoid.c:
	* extents.c:
	* faces.c:
	* file-coding.c:
	* frame.c:
	* glyphs.c:
	* insdel.c:
	* keymap.c:
	* lstream.c:
	* marker.c:
	* menubar-x.c:
	* mule-coding.c:
	* opaque.c:
	* ralloc.c:
	* rangetab.c:
	* redisplay-msw.c:
	* redisplay-output.c:
	* redisplay-tty.c:
	* redisplay-x.c:
	* redisplay.c:
	* scrollbar-x.c:
	* scrollbar.c:
	* specifier.c:
	* symbols.c:
	* toolbar-x.c:
	* toolbar.c:
	* window.c:
	As a result of the above lisp*.h changes, we can now safely remove
	initializations of Lisp_Objects before calling XSETOBJ on them.
	This was only being done half the time, anyways.

	* Makefile.in.in (depend): New target. calls make-src-depend.
	* depend: New file. Generated by make-src-depend
	* make-src-depend: New file. generates up-to-date dependencies.
	Makefile dependencies are now automagically maintained, and
	CORRECT.  lisp.h and friends are now included in the dependencies,
	since this complies with the principle of least astonishment.

	* symbols.c (symbol_is_constant): Optimize.

1998-03-30  SL Baur  <steve@altair.xemacs.org>

	* frame.c (vars_of_frame): Default frame name should be InfoDock
	for InfoDock.

1998-03-29  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (voodoo_free_hook): ELF libraries built with newer
	versions of GCC do horrible things in dumped binaries after exit()
	is called.
	(Fkill_emacs): Use it.

1998-03-28  SL Baur  <steve@altair.xemacs.org>

	* s/linux.h: For simplicity, do not use standard linking because
	it is deadly with new GCC.

Sat Mar 28 10:16:29 1998  Andy Piper  <andyp@parallax.co.uk>

	* Makefile.in.in: fix fastdump target

	* console-msw.h: add memory dc to frame.

	* frame-msw.c: manage memory dc on frame creation/deleteion

	* frame.h: mess with toolbar macros so that xemacs doesn't die
	in redisplay with a triple build.

	* g;yphs-msw.c: GNUize the code. Fix 24bpp display and make the
	default.

	* glyphs-msw.h: remove memory dc from image attributes.

	* redisplay-msw.c: fix redisplay to use new frame memory dc.

	* sheap.c: bump initial sheap yet again to allow byyte
	recompilation.

	* unexcw.c: fix section parsing for multiple idata and rdata
	sections.

1998-03-27  SL Baur  <steve@altair.xemacs.org>

	* emacs.c: Enabled free-hook.c code if
	LOSING_GCC_DESTRUCTOR_FREE_BUG is defined.

1998-03-28  Kyle Jones  <kyle_jones@wonderworks.com>

	* Fixed display bug where changes to builtin glyphs like
	  Vcontrol_arrow_glyph would not be propagated
	  immediately to the display.

	* device.h: Added glyphs_changed field to device
	   struct.  Created MARK_DEVICE_GLYPHS_CHANGED macro.

	* frame.h: Added glyphs_changed field to frame
	   struct.  Created MARK_FRAME_GLYPHS_CHANGED macro.

	* redisplay.h: Declared glyph_changed and
	   glyph_changed_set variables, mimicking clip_changed
	   and clip_changed_set.  New macro MARK_GLYPHS_CHANGED.

	* redisplay.c: Defined glyph_changed and
	   glyph_changed_set variables, mimicking
	   clip_changed and clip_changed_set.

	   (redisplay_window): Reset the window's glyph cache is
	   f->glyphs_changed is non-zero.  Call regenerate_window
	   if f->glyphs_changed is non-zero.

	   (redisplay_frame): Clear f->glyphs_changed after
	   successful redisplay of all windows on frame.

	   (redisplay_device): Redisplay frame if f->glyphs_changed
	   is non-zero.  Clear d->glyphs_changed after successful
	   redisplay of all frames on device

	   (redisplay_without_hooks): Redisplay devices if
	   glyphs_changed is non-zero.  Redisplay an individual
	   device if d->glyphs_changed is non-zero.  Clear
	   glyphs_changed after successful redisplay of all
	   devices.

	   (redisplay_glyphs_changed): Dropped use of
	   MARK_CLIP_CHANGED.  Call MARK_FRAME_GLYPHS_CHANGED for
	   all affected frames.  For locales that are not device
	   related, mark all frames.

	* redisplay-output.c (compare_display_blocks):
	   Output the whole display block if f->glyphs_changed is
	   non-nil.

1998-03-27  Kyle Jones  <kyle_jones@wonderworks.com>

	* callproc.c (Fcall_process_internal): In the case where
	  fd_error and fd1 are the same don't close that
	  descriptor twice.

1998-03-27  SL Baur  <steve@altair.xemacs.org>

	* frame-x.c (x_update_frame_external_traits): Need a Lisp_Object
	frame as well as a struct frame.

1998-03-27  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* emacs.c (main_1): Reinstated PATH searching for invocation data.

1998-03-26  Kirill M. Katsnelson  <kkm@kis.ru>

	* menubar.c (Fmenu_find_real_submenu): See the entry for gui.h.

	* menubar-msw.c (populate_menu_add_item): Used GCPRO_GUI_ITEM
	macro to aviod warnings, in 2 places.
	(populate_or_checksum_helper): Ditto
	(populate_or_checksum_helper): Added placeholder for menu right
	flash customization.

	* gui.h (GCPRO_GUI_ITEM): Code which warning-free GC protects a
	GUI_ITEM structure moved into this macro from menubar.c

	* frame-x.c (x_update_frame_external_traits): Moved part of the
	former update_EmacsFrame() here.
	(console_type_create_frame_x): Declared the above method.

	* frame-msw.c (mswindows_set_frame_properties): Do not try to
	resize the frame if called from Fmake_frame the first time
	(potential race	condition).
	(mswindows_init_frame_1): Fixed support for popup frames.
	(mswindows_delete_frame): Fixed memory leak.
	(mswindows_get_frame_parent): Implemented.
	(mswindows_update_frame_external_traits): Moved part of the former
	update_EmacsFrame() here.
	(console_type_create_frame_mswindows): Declare get_frame_parent
	and update_frame_external_traits methods.

	* faces.c (update_EmacsFrame): Converted into a device method
	`update_frame_external_traits'.

	* event-msw.c (mswindows_wnd_proc, WM_SIZE): Rewrote to avoid
	relying on an assumption on when Windows calls this handler.
	(mswindows_find_frame): Return the frame being created if the
	windows does not yet have associated frame object
	(mswindows_find_frame): Casted long to Lisp_Object properly.

	* device.c (window_system_pixelated_geometry): Changed to call the
	device_implementation_flags device method.

	* device-msw.c (mswindows_device_implementation_flags):
	Implemented.
	(console_type_create_device_mswindows): Declared the above.

	* console.h (struct console_methods): Added
	device_implementation_flags_method and
	update_frame_external_traits_method.
	Defined flags retuned by device_implementation_flags_method.

	* console-msw.h (struct mswindows_frame): Added charheight and
	charwidth fields.
	Added macros for referring to these two, Rvalue.
	Moved Windows-specific macros from frame.h here.
	(typedef struct XEMACS_RECT_WH): Added.
	Declared global variables.

1998-03-19  Kirill M. Katsnelson  <kkm@kis.ru>

	* console-msw.h: Added prototypes for
	mswindows_protect_modal_loop() and
	mswindows_unmodalize_signal_maybe().

	* scrollbar-msw.c (mswindows_update_scrollbar_instance_status):
	Removed redundant call to set_frame_size method.

	* frame.c (Fframe_property): For a window system with pixel-based
	geometry, convert passed char-based metrics to pixels.
	(Fframe_properties): Ditto.
	(Fset_frame_height): Ditto.
	(Fset_frame_width): Ditto.
	(Fset_frame_size): Ditto.
	(frame_conversion_internal): Added a parameter, controlling
	whether the function uses real char metrics or 1 when geometry is
	pixel-based.
	Allow NULL for output int* params.
	(pixel_to_char_size): frame_conversion_internal() is called with
	indication to fake font size to 1.
	(char_to_pixel_size): Ditto.
	(round_size_to_char): Ditto.
	(pixel_to_real_char_size):
	(char_to_real_pixel_size):
	(round_size_to_real_char): New three counterparts of the above
	metioned functions, which always use real character metrics.
	(change_frame_size_1): Use real character metrics when computing
	minibuffer height.

	* frame.h: Prototypes for pixel_to_real_char_size(),
	char_to_real_pixel_size(), round_size_to_real_char().

	* frame-msw.c (mswindows_init_frame_1): Rewritten to support
	system-default new window width and height.
	(mswindows_init_frame_2): Commented out, unused.
	(mswindows_after_init_frame): Added frame method.
	(mswindows_set_frame_size): Reworked to support pixel base
	geometry.
	(mswindows_set_frame_position): Cahnged to use SetWindowPos.
	(mswindows_lower_frame): Ditto.
	(mswindows_set_frame_properties): Fixed to perform correct
	calculation, and to support pixel geometry.
	(console_type_create_frame_mswindows): init_frame_2 removed,
	after_init_frame added.

	* faces.c (default_face_height_and_width_1): Added.
	(update_EmacsFrame): Changed method of notifying mswindwows frame,
	so modeline border gets redrawn.

	* faces.h: Prototype for default_face_height_and_width_1().

	* event-msw.c (mswindows_wnd_proc, WM_SIZE): Redisplay after
	maximize/restore window.
	(mswindows_wnd_proc, WM_WINDOWPOSCHANGING): Do not round size to
	char if window is maximized.
	Use real char metrics for rounding.
	Call DefWindowProc to process WM_GETMINMAXINFO
	(mswindows_set_chord_timer): Changed chord timeout from 1/2 to 1/3
	system double click time

	* device.c (domain_device_type): New function.
	(window_system_pixelated_geometry): New function.
	(Fdomain_device_type): New function, lisp interface to
	domain_device_type().
	(syms_of_device): DEFSUBRed the above.

	* device.h: Ptorotypes for domain_device_type() and
	window_system_pixelated_geometry().

	* menubar-msw.c (mswindows_update_frame_menubars): Call
	update_frame_menubar_maybe always.

1998-03-27  SL Baur  <steve@altair.xemacs.org>

	* s/hpux11.h:
	* s/hpux11-shr.h: New files.
	From Marcus Thiessel <marcus_thiessel@hp.com>

	* Makefile.in.in: temporarily comment -lmcheck support.
	Suggested by Marcus Thiessel <marcus_thiessel@hp.com>

1998-03-26  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* emacs.c (vars_of_emacs): Fixed bug: Now respects configure
	setting of inhibit-site-lisp.
	(main_1): inhibit-site-lisp is now exclusively
	configure-initialized.

1998-03-27  Hrvoje Niksic  <hniksic@srce.hr>

	* events.c (WRONG_EVENT_TYPE_FOR_PROPERTY): Don't feed
	error_with_frob() with LispObjects.

1998-03-26  Kirill M. Katsnelson  <kkm@kis.ru>

	* redisplay-msw.c (mswindows_output_cursor): Added parameters for
	character under cursor, and a flag indicating whether the cursir
	is over an image. Draw bar cursor always over an image glyph.
	Callers are changed accross the file.
	Honor the value of window::text_cursor_visible_p.
	(mswindows_output_pixmap): Cursor drawing code #if0ed.
	(mswindows_output_display_block): Call to output cursor after
	drawind an image.

1998-03-27  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c:
	* imgproc.c:
	* imgproc.h:
	* glyphs-x.h: Added in a colormap variable in the X specific image
	struct to handle IMAGE_POINTER images which must be allocated in the
	default colormap of the screen.  Also reformated the code to follow
	coding standards.

	* glyphs.h:
	* glyphs.c:
	* glyphs-x.c: added image-conversion-error type

	* objects-x.c (allocate_nearest_color): Corrected a minor bug involving
	setting the values into XColor.

1998-03-25  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* free-hook.c (check_realloc): Handle the degerate case of realloc with
	a NULL value acting the same as malloc.

1998-03-24  Kyle Jones  <kyle_jones@wonderworks.com>

	* redisplay-x.c (x_output_eol_cursor): Use x_clear_region
	  instead of XClearArea to erase the cursor so that background
	  pixmaps are handled properly.  New fourth parameter findex
	  added so that it can be passed to x_clear_region.

1998-03-25  Kirill M. Katsnelson  <kkm@kis.ru>

	* process.c (Fprocess_send_eof): Close output stream before
	deleting stream pair.
	(deactivate_process): Ditto, both input and output streams.

	* event-unixoid.c (event_stream_unixoid_delete_stream_pair): Do
	not close passed lstreams.

1998-03-24  Kirill M. Katsnelson  <kkm@kis.ru>

	* fileio.c (Ffile_readable_p): GC protect fix, MS Windows specific.

Mon Mar 23 22:14:12 1998  Andy Piper  <andyp@parallax.co.uk>

	* configure.in: compile in glyphs-msw.o when compiling fopr
	mswindows.

Mon Mar 23 22:14:12 1998  Andy Piper  <andyp@parallax.co.uk>

	* msw-glyphs.el: add support for xpm and bmp. change
	eval-and-compile to progn.

Mon Mar 23 22:14:12 1998  Andy Piper  <andyp@parallax.co.uk>

	* Makefile.in.in: fastdump - new target for dumping bypassing
	bytecompilation, DOC. Add dependencies for glyphs-msw.o. Move
	imgproc.o to object list.

	* glyphs-msw.h:
	* glyphs-msw.c: new files adding support for xpm and bmp and
	EImages.

	* redisply-msw.c: add support for outputing color pixmaps.

	* console-msw.h: add bitspixel field to mswindows frame.

	* device-msw.c: initialise bitspixel field in mswindows frame.

	* glyphs-x.c (xpm_instantiate): call mswindows_xpm_instantiate if
	the device type is mswindows.

	* emacs.c: call glyphs-msw.c init functions if compiling with
	mswindows.

	* symsinit.h: add prototypes for glyphs-msw.c functions.

	* sheap.c: make includes src-dir compliant.

	* events.c: remove cygwin ^H <-> erase hack.

	* s/cygwin32.h: remove NOMULTIPLEJOBS defn.

1998-03-24  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c (my_jpeg_output_message): Added new function to redirect
	any error/warning messages from the jpeg library to XEmacs.  Also
	get rid of an unneeded temp variable in the tiff code.

1998-03-14  Hrvoje Niksic  <hniksic@srce.hr>

	* insdel.c (fixup_internal_substring): Protect asserts with #ifdef
	ERROR_CHECK_BUFPOS.

	* minibuf.c (scmp_1): c1 and c2 are Emchar, not Bufbyte.
	(Ftry_completion): Fixed typo.

	* dired.c (file_name_completion): Removed `readfunc', a remnant of
	dead VMS code.

1998-03-13  Hrvoje Niksic  <hniksic@srce.hr>

	* dired.c (Fdirectory_files): Simplify logic.

	* symbols.c (reject_constant_symbols): Allow setting a keyword's
	function slot.

1998-03-23  Hrvoje Niksic  <hniksic@srce.hr>

	* lread.c (readevalloop): Don't specbind Qstandard_input to
	READCHARFUN.

1998-03-09  Hrvoje Niksic  <hniksic@srce.hr>

	* lread.c (read_atom): Ditto.

	* symbols.c (reject_constant_symbols): Do the keyword stunts only
	if the symbol is in Vobarray.

	* symbols.c (reject_constant_symbols): Signal error when
	attempting to assign a value to a keyword, unless the value is the
	keyword itself.

	* symbols.c (Fintern): Initialize symbol's ->obarray to t only
	when OBARRAY is Vobarray.

1998-03-21  Hrvoje Niksic  <hniksic@srce.hr>

	* events.c (Fmake_event): Allow creation of misc-user-events.

1998-03-23  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* config.h.in, emacs.c: Changed allow-site-lisp to
	inhibit-site-lisp.  Made -no-autoloads set inhibit-site-lisp.

1998-03-22  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>

	* <Today>: The Big Path Searching Overhaul.

	* symsinit.h: Added declaration for complex_vars_of_emacs in
	emacs.c.

	* paths.h.in: Adjusted the comments to reality as dictated by
	configure.

	* filelock.c (complex_vars_of_filelock): Added support for lock
	directories passed in from configure.

	* emacs.c (complex_vars_of_emacs): Added all relevant installation
	paths passed from configure.  They all have the prefix "configure-" now.

	* config.h.in: Added HAVE_SITE_LISP configuration option.

	* callproc.c (init_callproc): Ripped out all the bogus path setup.

	* Makefile.in.in: Updated all calls of "temacs -l" with absolute
	file names because auf the more minimalistic load-path setup in
	lread.c.  Also set EMACSBOOTSTRAPLOADPATH on calling temacs rather
	than EMACSLOADPATH because EMACSLOADPATH is now more persistent than
	before.

	* lread.c (init_lread): Ripped out bogus load-path setup.

1998-03-21  Kyle Jones  <kyle_jones@wonderworks.com>

	* frame.h: Move the check for an initialize_frame_toolbars
	  method into FRAME_RAW_REAL_TOOLBAR_VISIBLE to avoid getting
	  clunked by toolbar-less builds.

1998-03-20  SL Baur  <steve@altair.xemacs.org>

	* m/powerpc.h (LD_SWITCH_MACHINE): Fix path to ppc.ldscript.

1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>

	* redisplay.c (window_line_number_buf): Made it larger.

	* opaque.c (print_opaque): Ditto.

	* lstream.c (print_lstream): Avoid `%p'.

	* keymap.c (ensure_meta_prefix_char_keymapp): Use
	error_with_frob().

	* input-method-xlib.c (EmacsXtCvtStringToXIMStyles): Allocate buf
	dynamically.

	* event-Xt.c (describe_event_window): Allocate buf dynamically.

	* doc.c (Fsubstitute_command_keys): Warn of sprintf().

	* device-x.c (x_init_device): Allocate path dynamically.
	(x_init_device): Allocate buf1 and buf2 dynamically.

1998-03-14  Hrvoje Niksic  <hniksic@srce.hr>

	* ExternalShell.c (GetGeometry): Use a larger buffer for
	sprintf().

1998-03-19  Kirill M. Katsnelson  <kkm@kis.ru>

	* redisplay.c (point_would_be_visible): Fix
	window::line_cache_validation_override reference counter.
	(start_with_line_at_pixpos): Ditto.

1998-03-20  Olivier Galibert  <olivier.galibert@mines.u-nancy.fr>

	* insdel.c (bytecount_to_charcount): Use 'L' suffix on long
	constants probably too large for an int.

1998-03-18  Hrvoje Niksic  <hniksic@srce.hr>

	* lread.c (read_atom_0): Signal Qend_of_file if readcharfun
	returned -1.
	(read_escape): Ditto.
	(FSF_LOSSAGE): Ditto.

1998-03-20  SL Baur  <steve@altair.xemacs.org>

	* emacs.c: path-separator (and parse-colon-path) moved from Lisp
	into C because we need it for early initialization.

	* Makefile.in.in (libmcheck): Add.

	* config.h.in: Add HAVE_LIBMCHECK and HAVE_MCHECK_H.

	* hash.c (grow_hashtable): Fix tests to compare against
	Qnull_pointer since this function may be called before any symbols
	or the Lisp engine is initialized.

	* emacs.c (main_1): Restore usage of free-hook.c.

	* free-hook.c (check_realloc): Change aborts to printfs.
	(check_free): Ditto.

1998-03-18  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (Fkill_emacs): Use LIST_LOOP_DELETING because our
	control variable is being modified underneath us.
	- Avoid calling delete_console_internal on stream consoles.

	* console-tty.c (free_tty_console_struct): NULL out pointers after
	xfree'ing.

	* console-stream.c (allocate_stream_console_struct): Fix memory
	leak -- if the stream_console struct is already allocated, don't
	reallocate it.
	(free_stream_console_struct): Don't leave dangling freed pointer
	around.

	* redisplay-output.c (redisplay_redraw_cursor): Fully bracket.

1998-03-17  SL Baur  <steve@altair.xemacs.org>

	* frame.c (delete_frame_internal): Correct check.

	* imgproc.c: Include <config.h>.

1998-03-13  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c: fix for upside-down TIFFs.

1998-03-14  Kirill M. Katsnelson  <kkm@kis.ru>

	* fileio.c (Finsert_file_contents_internal): Removed all DOS_NT
	specific code; rely on FILE_CODING streams instead.
	(Fwrite_region_internal): Ditto.
	(decide_buffer_type): Function removed.
	(buf_decide_buffer_type): Function removed.
	(Many places): References to DOS_NT replaced with WINDOWSNT. MSDOS-
	specific code removed.

	* lread.c (Fload_internal): Removed ugly DOS style re-opening a
	file in text mode. '\r' is perfectly handled in readevallop().

	* redisplay.c (decode_mode_spec): Made %t decode to "T" unconditionally.

	* s/windowsnt.h (FILE_CODING): Define always.

1998-03-15  Kirill M. Katsnelson  <kkm@kis.ru>

	* s/windowsnt.h: Added prototypes for generally used functions
	implemented in nt.c

	* fileio.c (Ffile_readable_p): Conditionalized declared never used
	variables.
	(Fexpand_file_name): Ditto.
	(check_executable): Ditto.

	* lread.c (parse_integer): Eliminated a warning resulted from
	applying unary minus to unsigned int.

1998-03-15  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>

	* eldap.c: (Fldap_search_internal): Print error information from
	errno when connection fails

1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>

	* lread.c: New macro, to avoid exposing an lstream to Lisp error
	handlers.
	(reader_nextchar): Use it.
	(read1): Ditto.

1998-03-15  Kyle Jones  <kyle_jones@wonderworks.com>

	* cmds.c (Fforward_char): Dropped support for
	  signal-error-on-buffer-boundary.  Added details to
	  doc string.

	  (Fbackward_char): Dropped support for
	  signal-error-on-buffer-boundary by way of change to
	  Fforward_char.  Added details to doc string.

	  Definition of signal-error-on-buffer-boundary moved to
	  lisp/simple.el.

	* window.c (Fscroll_up): Dropped support for
	  signal-error-on-buffer-boundary.  Added details to
	  doc string.

	  (Fscroll_down): Dropped support for
	  signal-error-on-buffer-boundary.  Added details to doc
	  string.

1998-03-15  Kyle Jones  <kyle_jones@wonderworks.com>

	* redisplay-tty.c (tty_clear_frame): Record that the
	  real location of teh cursor has been moved to 0,0.
	  Failure to do this makes the display code believe the
	  cursor is in a place where it is not.

1998-03-15  Kyle Jones  <kyle_jones@wonderworks.com>

	* console.h: Added set_final_cursor_coords method to console
	  struct.

	* console-tty.h: Added final_cursor_x and final_cursor_y
	  slots to console struct.  Added CONSOLE_TTY_FINAL_CURSOR
	  macros to access them.

	* redisplay.c (create_text_block): No longer
	  turn off the cursor if computing a block when
	  cursor_in_echo_area is 0 and the echo area is
	  inactive.  Needed so that the cursor will not be
	  frozen in the minibuffer when cursor_in_echo_area
	  is non-zero.

	* redisplay-output.c (redisplay_move_cursor): Don't
	  bail if we're moving the cursor in a selected
	  minibuffer window.  Needed so that simple cursor
	  optimization can be done in the minibuffer even when
	  cursor_in_echo_area is non-zero.

	  (redraw_cursor_in_window): Set final cursor coordinates
	  as a special case for cursor_in_echo_area != 0, since
	  the buffer switching between minibuffer and echo area
	  buffer seems to confuse the normal cursor positiong
	  code otherwise.  Set final cursor coordinates in the
	  general case before calling output_display_line.

	* redisplay-tty.c: New function tty_set_final_cursor_coords.

	  (tty_output_end): Set logical cursor position to the final
	  cursor position as specified in CONSOLE_TTY_CURSOR_{X,Y},
	  and then go to it.

	  (tty_redisplay_shutdown): Changed code to use
	  tty_set_final_cursor_coords() to go to the bottom
	  left of the screen instead of using cmgoto()

	  (console_type_create_redisplay_tty): Declare that tty
	  consoles have the set_final_cursor_coords method.

1998-03-13  Hrvoje Niksic  <hniksic@srce.hr>

	* emacs.c (main_1): Avoid snprintf(); allocate the buffer
	dynamically.

1998-03-13  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c (png_instantiate): Added in override support
	for png backgrounds.

1998-03-13  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c (png_instantiate): Fixed a bug that was causing
	overruns when attempting to display transparent pngs

1998-03-13  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c (png_instantiate): Fix brainfart in error handling code.

1998-03-13  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (main_1): Guard call to snprintf.

	* config.h.in: Add HAVE_SNPRINTF.

1998-03-13  Kirill M. Katsnelson  <kkm@kis.ru>

	* event-stream.c (init_event_stream): Initialize mswindows event
	loop in stream mode if no other window systems available. Thanks
	to Darryl Okahata.

1998-03-04  Kirill M. Katsnelson  <kkm@kis.ru>

	* alloc.c (garbage_collect_1): Removed #ifndef WINDOWSNT around
	mark_profiling_info().

1998-03-11  SL Baur  <steve@altair.xemacs.org>

	* console-tty.c (Fset_console_tty_coding_system): Guard against
	terminal-coding-system being left unitialized by a locale.
	From Kazuyuki IENAGA <ienaga@jsys.co.jp>

1998-03-11  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* config.h.in: Added in new feature check HAVE_VSNPRINT to check
	for safe ways to deal with vsprintf and friends.

	* glyphs-x.c (gif_instantiate): Changed gif support to call external
	library Giflib 3.1.  Altered GIF/JPEG/PNG formats to use new EImage
	format for dealing with images to better support color handling, and
	facilitate the change to a device-neutral implementation.  Added TIFF
	support.

	* Makefile.in.in: Removed all gif related files

	* emacs.c (main_1): Removed reference to init_gif_err
	* symsinit.h: ditto

	* dgif_lib.c: Removed from the source distribution
	* gif_err.c: ditto
	* gif_lib.h: ditto
	* gifalloc.c: ditto

Mon Mar 09 13:00:55 1998  Andy Piper  <andyp@parallax.co.uk>

	* file-coding.c: warning elimination

	* ntplay.c: new file. basic implementation of sound support.

	* redisplay-msw.c (mswindows_update_dc): cachel bug is gone so we
	don't need this code under cygwin.

	* sheap.c: need large heap slop for byte compiling with three
	display types.

	* sound.c: eliminate warnings. enable sound under mswindows.

	* s/cygwin32.h: miscellaneous updates for sound support.

1998-03-09  SL Baur  <steve@altair.xemacs.org>

	* config.h.in: Add BITMAPDIR.

	* glyphs-x.c (locate_pixmap_file): Assume BITMAPDIR is a
	colon-separated path.

	* emacs.c (main_1): Initialize dll support with the path the
	binary.
	(make_arg_list_1): Ditto.

	* sysdll.h: Add legalese.
	* sysdll.c: Ditto.

	* sysdll.c: sysdll.h needs to be included with double quotes not
	angle brackets.
	Use RTLD_GLOBAL as an open flag if it exists.

1998-03-09  Martin Buchholz <martin@xemacs.org>

	* eldap.c (Fldap_search_internal): call garbage_collect_1 instead
	of Fgarbage_collect.  The two are identical except the latter
	generates some `fresh' garbage :)

1998-03-09  SL Baur  <steve@altair.xemacs.org>

	* keymap.c: Add symbols for mouse-4 and mouse-5.
	(define_key_check_and_coerce_keysym): Mouse-4, Mouse-5 keysym support.
	(syms_of_keymap): Ditto.

1998-01-26  Hrvoje Niksic  <hniksic@srce.hr>

	* marker.c (print_marker): Print marker's lheader.uid.
	(Fbuffer_has_markers_at): New function, synched with FSFmacs 20.2.
	(Fbuffer_has_markers_at): Disabled by default.

1998-01-25  Hrvoje Niksic  <hniksic@srce.hr>

	* sound.c (Fplay_sound_file): Place the result of continuable
	error back to FILE.

1998-03-09  SL Baur  <steve@altair.xemacs.org>

	* emacs.c, config.h.in: New DLL support.
	* sysdll.h, sysdll.c: New files.
	* dll.c: renamed from dlopen.c, use interface defined in sysdll.c.
	From William Perry <wmperry@aventail.com>

	* eldap.h: Fix copyright.
	* eldap.c: Ditto.

1998-03-08  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: Add dependencies for process-unix.o.

1998-03-08  Kyle Jones  <kyle_jones@wonderworks.com>

	* glyphs-x.c (write_lisp_string_to_temp_file):
	  Don't explicitly initialize conversion_out_dynarr, because
	  doing so may cause it to be put into read-only space
	  and modifying it later would make XEmacs crash.

1998-03-07  Kyle Jones  <kyle_jones@wonderworks.com>

	* events.h: Add do_backspace_mapping parameter to
	  function prototype of character_to_event.

	* events.c: Add fifth parameter to character_to_event to
	  control the backspace mapping.  In character_to_event map most
	  characters that match tty-erase-char to the backspace keysym,
	  but only if do_backspace_mapping paramter is non-zero.

	  (Fcharacter_to_event): Tell character_to_event() to DO
	  backspace mapping.

	* event-stream.c:
	  (maybe_read_quit_event): Tell character_to_event() to DO
	  backspace mapping.

	  (maybe_kbd_translate): Tell character_to_event() to DO backspace
	  mapping.

	  (lookup_command_event): Tell character_to_event() to DO backspace
	  mapping.

	* event-unixoid.c:
	  (read_event_from_tty_or_stream_desc): Tell character_to_event()
	  to DO backspace mapping.

	* keymap.c:
	  (get_keyelt): Tell character_to_event() to NOT DO backspace
	  mapping.

	  (define_key_parser): Tell character_to_event() to NOT DO backspace
	  mapping.

	  (Fsingle_key_description): Tell character_to_event() to DO
	  backspace mapping.

1998-03-04  Kirill M. Katsnelson  <kkm@kis.ru>

	* alloc.c (Fpurecopy): Do not mark symbols through
	Vpure_uninterned_symbol_table twice: hash (OBJ, nil) instead of
	(OBJ, OBJ).

1998-03-07  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (shut_down_emacs): Disable forced auto-save in a crash.
	It causes more problems than it solves.

1998-03-02  Greg Klanderman  <greg@alphatech.com>

	* window.c (Fwindow_displayed_pixel_height) New function.
	(Fenlarge_window_pixels): New function.
	(Fshrink_window_pixels): New function.
	(window_displayed_pixel_height): New, helper for
	Fwindow_displayed_pixel_height.
	(change_window_height): Add `inpixels' argument.
	(syms_of_window): 3 new DEFSUBR's.

Thu Mar 05 12:01:35 1998  Andy Piper  <andyp@parallax.co.uk>

	* redisplay-msw.c (mswindows_output_cursor): separate getting
	cachel index from retrieving cachel to work around apparent bug in
	gcc.

1998-03-06  Kyle Jones  <kyle_jones@wonderworks.com>

	* events.c (character_to_event): The tty_erase_char test
	doesn't do anything because it's in the wrong place.
	Moved it to where it can take effect.

	* dired.c (Fdirectory_files): Initialize GCPRO'ed variable.

	* events.c (character_to_event): Never map '(control
	  foo) to QKbackspace.  Only map ASCII 8 to QKbackspace;
	  don't map any other key.

1998-03-05  Kyle Jones  <kyle_jones@wonderworks.com>

	* src/redisplay-output.c (redisplay_move_cursor): Bail if
	  cursor_in_echo_area is non-zero and we're fiddling
	  with the cursor in a minibuffer window, since that is a
	  special case that is handled elsewhere and this function
	  need not handle it.  Return 1 so the caller will assume we
	  succeeded.

Wed Mar 04 08:55:12 1998  Andy Piper  <andyp@parallax.co.uk>

	* device.c (init_global_resources): compile in based on window
	system not just x.

	* console.c (select_console_1): add mswindows console type.

1998-03-04  Kyle Jones  <kyle_jones@wonderworks.com>

	* redisplay-output.c (redisplay_redraw_cursor): Redraw
	  the cursor in the minibuffer window if cursor_in_echo_area
	  is non-zero.

Wed Mar 04 08:55:12 1998  Andy Piper  <andyp@parallax.co.uk>

	* emacs.c (main_1): predicate display_use to mswindows only if x
	is not already selected.

	* event-msw.c: comment out non-code for HAVE_TOOLBAR case. don't
	compile debug_process_finalisation if x is compiled in.

	* event-stream.c (init_event_stream): don't make X and mswindows
	mutually exclusive. Select msw event loop if started that way,
	X/tty event loop otherwise.

	* frame.h: protect toolbar #defines from assuming ints are in
	toolbar_data. This happens if you have two display types compiled
	in and one supports toolbars and the other doesn't.

	* s/cygwin32.h: warning elimination.

1998-03-03  SL Baur  <steve@altair.xemacs.org>

	* editfns.c (Ftemp_directory): New function.
	From Glynn Clements <glynn@sensei.co.uk>

	* editfns.c (Ftemp_directory): Use build_ext_string.

1998-03-02  Martin Buchholz <martin@xemacs.org>

	* symsinit.h: add prototype for syms_of_dlopen

1998-03-02  Kyle Jones  <kyle_jones@wonderworks.com>

	* window.c (save_window_save): save value of
	  default_toolbar_height slot.

	  (Fset_window_configuration): restore value of
	  default_toolbar_height slot.

Fri Feb 20 21:22:34 1998  Darryl Okahata  <darrylo@sr.hp.com>

	* "Fast" dired-in-C enhancements for Windows 95/NT:

	* ntproc.c:
	* device-msw.c:
	  Moved definition of `Vwin32_downcase_file_names' from ntproc.c
	  to device-msw.c, and renamed it to
	  `Vmswindows_downcase_file_names'.  It doesn't really belong
	  here, but I didn't want to create a new file, just for this one
	  variable.  This fixes a bug in `expand-file-name' that caused
	  all returned filenames to be lowercased (this was supposed to be
	  conditional upon Vmswindows_downcase_file_names, but wasn't, as
	  it was never initialized due to obsolescence of ntproc.c).  This
	  variable is also used by the dired-in-C enhancements.

	  Also moved and renamed `Vwin32_get_true_file_attributes' to
	  `Vmswindows_get_true_file_attributes'.  This affects stat() in
	  nt.c, and so it really does need to be initialized.

	  However, there's still one more variable in ntproc.c that still
	  needs to be moved/renamed, `Vwin32_pipe_read_delay', but I
	  didn't touch this, as this is a subprocess issue.

	* dired-msw.c: New file for dired-in-C enhancements for
	  Windows 96/NT.

	* emacs.c: Initialization calls for dired-msw.c.

	* nt.c (convert_time): make into public function (dired-in-C
	  functions use it).

1998-02-28  Kirill M. Katsnelson  <kkm@kis.ru>

	* sysdep.h: Prototypes for the above 2 functions

	* sysdep.c (get_pty_max_bytes): Moved here from process.c
	(get_eof_char): Ditto

	* symsinit.h: Prototypes for initialization functions called from
	emacs.c: process_type_create_mswindows, process_type_create_unix,
	vars_of_process_mswindows, vars_of_process_unix.

	* procimpl.h: New file. Includes prototypes and other stuff shared
	by process.c and implementation files (process-unix.c,
	process-msw.c in future).

	* process.h (PROCESS_LIVE_P): Changed to test against stream
	existence, to avoid dependency on fds.

	* process.c: Only process implementation independent code is now
	in this file. Moved the rest into process-unix.c
	(Fopen_network_stream_internal): Added 5th parameter, protocol
	family. Defaults to 'tcp/ip when unspecified.

	* process-unix.c: New file, implementation of UNIX
	processes. UNIX-specific code from the old process.c is here.

	* Lstream.c (Lstream_was_blocked_p): New function. Replaces
	filedesc_stream_was_blocked_p.
	(filedesc_was_blocked_p): Implementation of the method for
	filedesc stream
	(filedesc_stream_set_pty_flushing): set pty_flushing flag
	(filedesc_stream_fd): New function, returns fd of the stream

	* lstream.h (lstream_implementation): was_blocked_p is a new
	optional lstream method.
	Added prototypes for functions in lstream.c

	* lisp.h: (USID): Typedef for Unique Stream IDentifier. Reuqired
	by the new code in many places.

	* events.h (struct event_stream): Declaration of the two mandatory
	event stream methods, required by process support.

	* event-unixoid.c (event_stream_unixoid_create_stream_pair):
	Implementation of the method shared by TTY and X
	(event_stream_unixoid_delete_stream_pair): Ditto

	* event-tty.c (emacs_tty_next_event): get_process_from_usid()
	instead of get_process_from_fd()
	(emacs_tty_create_stream_pair): New events tream method
	(emacs_tty_delete_stream_pair): New events tream method

	* event-stream.c (event_stream_create_stream_pair): New event
	stream method
	(event_stream_delete_stream_pair): Ditto

	* event-msw.c (debug_process_finalization): Although if0'ed,
	removed obsolete code

	* event-Xt.c (emacs_Xt_create_stream_pair): Implementation if the
	new event stream method
	(emacs_Xt_delete_stream_pair): Ditto

	* emacs.c (main_1): Added calls to process_type_create*() and
	vars_of_process()

	* callproc.c: (many places): removed DOS support

1998-03-02  SL Baur  <steve@altair.xemacs.org>

	* process.c (Fprocess_status): Restore old behavior -- call
	Fget_process on a string argument.

Mon Mar 02 11:37:36 1998  Andy Piper  <andyp@parallax.co.uk>

	* file-coding.h:
	* file-coding.c: more cleanup by only including iso2022 stuff in a
	mule build. (setup_eol_coding_systems) move (T) -> :T etc.

	* event-stream.c: (Fopen_dribble_file) Qescape_quoted only exists in
	mule.

	* md5.c: remove warning.

	* unexcw.c: move .idata -> .rdata for cygwin b19.

	* Makefile.in.in: add msw dependencies.

	* sheap.c: up static heap parameters.

	* s/cygwin32.h: add prototypes to eliminate warnings.

1998-03-02  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (blddir): Import blddir.
	Add blddir to dump-time load-path.

	* nas.c (play_sound_data): Add braces for clarity.
	(play_sound_file): Ditto.

1998-03-01  SL Baur  <steve@altair.xemacs.org>

	* alloc.c: Boost static vector size for breathing room.  Double
	the size if we may be dynamically linking.

	* dlopen.c (Fdl_open): Use RTLD_GLOBAL flag on dlopen if available.

	* device-x.c (x_init_device): Hardcode `Emacs' as the filename
	containing localized menubars.

	* config.h.in: Add HAVE_UNIX_PROCESSES for 20.6.

	* alloc.c (init_alloc_once_early): Document movement of mmap
	enabling code to emacs.c.

	* Makefile.in.in: Update FILE_CODING dependencies.

1998-03-01  Kyle Jones  <kyle_jones@wonderworks.com>

	* file-coding.c (setup_eol_coding_systems): Don't try
	  to copy the mnemonic property of the coding system
	  unless it is a string.

	  (allocate_coding_system): Initialize coding system
	  struct member 'mnemonic' to Qnil.  Leaving its value
	  set to 0 causes a crash.

1998-03-01  SL Baur  <steve@altair.xemacs.org>

	* file-coding.c (DEFINE_SUB_CODESYS): Undo previous patch.

1998-03-01  Kyle Jones  <kyle_jones@wonderworks.com>

	* callint.c: Read coding system names for the 'z' and
	  'Z' interactive specs if FILE_CODING or MULE is defined.
	  Previously, coding system names were read only if MULE was
	  defined.

	* file-coding.h: Removed charset-based category types
	  from enumerated coding_category_type if not building
	  with MULE.

	* file-coding.c (syms_of_mule_coding): Don't define
	  symbols for charset-based coding systems unless
	  building with MULE.

1998-02-28  SL Baur  <steve@altair.xemacs.org>

	* alloc.c (garbage_collect_1): Guard call to selected_frame so it
	cannot be called during GC.
	- Update current count of staticpro'ed objects.

1998-02-28  Kyle Jones  <kyle_jones@wonderworks.com>

	* menubar.c (Fmenu_find_real_submenu): Document the
	  "use struct as array" hack.  Convert struct pointer to
	  array to avoid compiler warnings.

1998-02-26  SL Baur  <steve@altair.xemacs.org>

	* buffer.c (complex_vars_of_buffer): Fix DOC string for
	buffer-file-coding-system.

1998-02-26  Damon Lipparelli  <lipp@primus.com>

	* symsinit.h: syms_of_ldap() is actually syms_of_eldap().

	* eldap.c: removed duplicates.

1998-02-26  SL Baur  <steve@altair.xemacs.org>

	* file-coding.c (setup_eol_coding_systems): Disable SUB_CODESYS
	feature -- it causes stack corruption in Mule.

1998-02-27  Kirill M. Katsnelson  <kkm@kis.ru>

	* events.c (character_to_event): The code which guesses TTY
	backspace character is conditionalized on HAVE_TTY

1998-02-26  SL Baur  <steve@altair.xemacs.org>

	* console.c (complex_vars_of_console): Guard tty_erase_char with
	HAVE_TTY.
	* conslots.h: Ditto.

1998-02-25  SL Baur  <steve@altair.xemacs.org>

	* events.c (character_to_event): Correct operations on tty_erase_char.
	From Martin Buchholz <martin@xemacs.org>

	* file-coding.c (setup_eol_coding_systems): Unix/Binary sub
	coding-system display should default to the empty string.
	- Use '(t)' for Mac/Text mode.

Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>

	* Makefile.in.in: make sure clean removes msw executables. This
	prevents the build stalling after puresize has been adjusted. Add
	file-coding.o to list of objects.

	* buffer.c:
	* buffer.h:
	* bufslots.h:
	* callproc.c:
	* console-tty.c:
	* emacs.c:
	* event-Xt.c:
	* event-stream.c:
	* glyphs-x.c:
	* lread.c:
	* md5.c:
	* mule-canna.c:
	* mule-ccl.c:
	* process.c:
	* redisplay-x.c:
	* redisplay.c: remove #ifdef MULE's from stuff that relates to
	file-coding. include file-coding.h rather than mule-coding.h
	where applicable.

	* mule-coding.c: #if 0 out functionality until file-coding is
	split up.

	* file-coding.h:
	* file-coding.c: new files. copies of mule-coding.h and
	mule-coding.c. The mule case is unchanged. The non-mule case
	removes coding relating to other charsets - iso2022, big5, sjis,
	ccl. (setup_eol_coding_systems) add the eol type to the subsidiary
	coding system mnemonics so that it shows on the modeline,
	currently (B) for unix style (T) for mac and dos styles.

	* fileio.c: remove #ifdef MULE's from stuff that relates to
	file-coding. include file-coding.h rather than mule-coding.h where
	applicable. FSFMACS_SPEEDY_INSERT is gone since file coding is
	always on.

	* sheap.c: (more_static_core) remove spurious \n's from error
	message.

1998-02-25  Kyle Jones  <kyle_jones@wonderworks.com>

	* lisp-disunion.h: Added XUINT macro.

	* lisp-union.h: Added XUINT macro.

	* data.c (Flsh): Used XUINT instead of XINT to
	  extract the value of the first argument to avoid sign
	  extension of the result.

1998-02-25  SL Baur  <steve@altair.xemacs.org>

	* s/decosf4-0.h: Add -D_BSD.
	From Tore Olsen <toreo@tihlde.hist.no>

1998-02-21  Greg Klanderman  <greg@alphatech.com>

	* device-x.c (x_init_device): allow `x-emacs-application-class' to
	be nil prior to connecting to the X server.  When this is the
	case, the application class is chosen based on whether the user
	has any resources with application class `XEmacs' set in the
	resource database.
	(vars_of_device_x): make x-emacs-application-class nil by default
	and document new behavior in its doc string.

1998-02-23  Aki Vehtari  <Aki.Vehtari@hut.fi>

	* menubar.c: Doc fix: suffix can be form.

	* gui.c (gui_parse_item_keywords): Allow button descriptors
	at least 2 long.
	(gui_item_display_flush_left): Suffix can be form.

	* gui-x.c (button_item_to_widget_value): Allow button descriptors
	at least 2 long.
	(button_item_to_widget_value): Suffix can be form.

1998-02-24  SL Baur  <steve@altair.xemacs.org>

	* s/sol2.h: define HAVE_GETLOADAVG for late edition Solaris
	From Georg Nikodym <georgn@Canada.Sun.COM>

1998-02-24  Didier Verna  <didier@xemacs.org>

	* redisplay.c (generate_fstring_runes): fixed the modeline
	scrolling lossage (the % constructs appearing in the
	modeline). Now that we can have negative positions and boundaries,
	max_pos == -1 can't mean 'no limit' anymore. Me, stupido!
	(add_string_to_fstring_db_runes): Ditto.
	(add_glyph_to_fstring_db_runes): Ditto.

1998-02-19  Jim Radford  <radford@robby.caltech.edu>

	* sysdep.c: Don't clobber SIGIO event flags we don't care about.
	* device.h: removed old_sigio_flag, sigio_enabled from device
	Secretly (on Solaris) F_SETOWN calls I_SETSIG. We unknowingly
	clobbered the changes so restoring the owner would cause
	F_SETOWN's I_SETSIG to fail therby causing an annoying syslog
	message.  Changed FASYNC version to match (untested).

1998-02-22  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (main): Enable mmap for glibc-2.1 and Linux libc5.
	Enable mmap only for non-Mule for glibc-2.0.

1998-02-21  SL Baur  <steve@altair.xemacs.org>

	* config.h.in: Define _NO_MALLOC_WARNING_ if using dlmalloc from
	Linux libc5.

1998-02-19  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* emacs.c: declare hooks only if !DOUG_LEA_MALLOC since the
	declaration conflicts with glibc's own.

1998-02-19  SL Baur  <steve@altair.xemacs.org>

	* config.h.in: Remove HAVE_TERM, add USE_MINIMAL_TAGBITS and
	USE_INDEXED_LRECORD_IMPLEMENTATION.

	* process.c (Fopen_network_stream_internal): Remove TERM support.

	* sysproc.h: Remove TERM support.

1998-02-20  Kazuyuki IENAGA <ienaga@jsys.co.jp>

	* input-method-xfs.c: add setlocale(LC_CTYPE, "") right after
	setlocale(LC_NUMERIC, "C").  Because, without this, the LC_CTYPE
	got a side effect of LC_NUMERIC then set to "C".

1998-02-19  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (main): Enable mmap'ing with XEmacs/Mule.

	* redisplay.c (add_string_to_fstring_db_runes): Fix infloop
	problem with long modelines and glyphs.

	* unexelf.c: The proper way to check for GNU libc is with __GLIBC__.
	Suggested by Andreas Jaeger <aj@arthur.rhein-neckar.de>

1998-02-18  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: Remove all references to prefix-args.

1998-02-18  Kirill M. Katsnelson  <kkm@kis.ru>

	* sysdep.c (mswindows_set_errno): New function
	(mswindows_set_last_errno): Ditto
	These convert Win32 error code to ANSI C errno.

	* sysdep.h: Prototypes for the above 2 functions.

	* menubar-msw.c (vars_of_menubar_mswindows): Fprovide
	('mswindows-menubar) removed. See the entry of 1998-01-03

	* process.c: FSFmacs proc_buffered_char static array
	#if0'ed in 2 places. It is never used.

1998-02-01  Kyle Jones  <kyle_jones@wonderworks.com>

	* window.c (save_window_save): Save window-cached
	  speciifer values.
	  (saved_window_equal): Added comparisons of window-cached
	  specifier values.
	  (Fset-window-configuration): Restore window-cached
	  specifier values.

1998-02-18  Didier Verna  <didier@xemacs.org>

	* modeline.el (mouse-drag-modeline): added the horizontal
	scrolling functionality for the modeline. This could still be
	improved, for instance when the mouse goes out of the modeline.

1998-02-18  Didier Verna  <didier@xemacs.org>

	* redisplay.c:
	(generate_formatted_string_db): new flag to distinguish a modeline
	string from a title or icon one, plus use a negative first pos to
	indicate the modeline hscroll amount.
	(add_string_to_fstring_db_runes): completely rewrote this function
	to handle the case of scrolled modelines.
	(add_glyph_to_fstring_db_runes): handle the case of scrolled
	modelines.

	* window.c:
	(Fmodeline_hscroll): new function to return the	modeline current
	horizontal scroll amount.
	(Fset_modeline_hscroll): new function to scroll the modeline
	horizontaly.
	Plus some updates related to this new functionality (windows
	configuration, notably).

	* window.h (struct window): added the new field modeline_hscroll.

1998-02-18  SL Baur  <steve@altair.xemacs.org>

	* m/alpha.h:
	* unexelf.c: Synched with Emacs 20.2.
	From Aki Vehtari <Aki.Vehtari@hut.fi>

	* emacs.c (main): Don't call __sbrk().
	* gmalloc.c (__sbrk): Ditto.
	Suggested by Andreas Jaeger <aj@arthur.rhein-neckar.de>

1998-02-17  SL Baur  <steve@altair.xemacs.org>

	* console-tty.c (Fset_console_tty_coding_system): New function.
	From Kazuyuki IENAGA <ienaga@jsys.co.jp>

1998-02-15  SL Baur  <steve@altair.xemacs.org>

	* ralloc.c (init_ralloc): DOUG_LEA_MALLOC support.
	(r_alloc_reinit): Ditto.
	[All non-HAVE_MMAP code]: Synched with Emacs 20.2.

	* emacs.c: Synch DOUG_LEA_MALLOC support from Emacs 20.2.
	(main): Ditto.
	Add LINUX_SBRK_BUG workaround, what is it?
	(Fdump_emacs): DOUG_LEA_MALLOC support from Emacs 20.2.

	* alloc.c: Synch DOUG_LEA_MALLOC support from Emacs 20.2.
	(init_alloc_once_early): Ditto.

	* config.h.in: Add DOUG_LEA_MALLOC symbol.

	* unexfreebsd.c (run_time_remap): Change printf format string to
	match parameters given.

1998-02-14  SL Baur  <steve@altair.xemacs.org>

	* s/sco5.h: Define LIB_GCC as -lgcc for gcc 2.8 and egcs.
	Suggested by Robert Lipe <robertl@dgii.com>

1998-02-14  Martin Buchholz  <martin@xemacs.org>

	* event-Xt.c (x_reset_key_mapping):
	* device-x.c:
	(x-keysym-on-keyboard-p):
	(x-keysym-on-keyboard-sans-modifiers-p):
	Use x-keysym-on-keyboard-sans-modifiers-p instead of
	x-keysym-on-keyboard-p to detect backspace.
	Use symbols instead of strings (now deprecated) with x-keysym-*-p.
	Clean up symbols used with dead keys, checking Linux and solaris
	keysyms.
	Simplify x-win-*.el using above methods.
	Change documentation for x-keysym-*-p functions.

1998-02-13  SL Baur  <steve@altair.xemacs.org>

	* unexelfsgi.c: Various changes.
	From Olivier Galibert <galibert@pobox.com>

	* s/freebsd.h: Avoid redefining BSD.
	From Kazuyuki IENAGA <ienaga@jsys.co.jp>

	* extents.c (extent_fragment_update): Break up a line to avoid a
	Digital UNIX 3.2g C compiler bug.
	From Tonny Madsen  <tma@nettest.dk>

	* process.c (create_process): Restore save_environ hackery.

1998-02-10  SL Baur  <steve@altair.xemacs.org>

	* emacsfns.h: Remove mocklisp declarations.

	* redisplay-msw.c (mswindows_update_dc): Enable evil kludge for
	cygwin.
	From Andy Piper <andyp@parallax.co.uk>

1998-02-09  SL Baur  <steve@altair.xemacs.org>

	* menubar-msw.c (vars_of_menubar_mswindows): Fix patch failure.
	Suggested by: kny@tekla.fi

	* data.c (Fold_eq): PC-ize.

	* chartab.c: PC-ize.

	* window.c (toplevel): PC-ize.
	(syms_of_window): Ditto.

	* search.c (Freplace_match): PC-ize.

	* lread.c: PC-ize.

	* buffer.c (Fbuffer_enable_undo): PC-ize.
	(Fbuffer_disable_undo): ditto.

	* eval.c (return_from_signal): PC-ize.

	* casetab.c: PC-ize.

	* callproc.c (Fcall_process_internal): PC-ize.

1998-02-02  Kirill M. Katsnelson  <kkm@kis.ru>

	* gui.h (struct gui_item): Menu item, submenu or GUI button
	properties are abstracted into this new structure.
	Added prototypes for the following functions

	* gui.c (gui_item_init): New function
	(gui_item_add_keyval_pair): Ditto
	(gui_parse_item_keywords): Ditto
	(gui_item_active_p): Ditto
	(gui_item_included_p): Ditto
	(gui_item_display_flush_left): Ditto
	(gui_item_display_flush_right): Ditto. The above listen new
	functions manipulate on properties common to menu items and GUI
	buttons.

	* menubar.c (current_frame_menubar): Moved from menubar-msw.c
	(menu_parse_submenu_keywords): New function
	(Fmenu_find_real_submenu): Ditto, lisp accessible. The last two
	functions operate on menu properties stored in struct gui_item,
	but are specific to menus only.

	* menubar.h: Prototypes for the above functions.

	* menubar-msw.c: Modified to utilize struct gui_item instead of
	plists, to reduce garbage. Suggested by Ben Wing.
	Unreachable menus are fixed.

1998-01-03  Kirill M. Katsnelson  <kkm@kis.ru>

	* menubar-msw.c (allocate_menu_item_id): Added third parameter to
	hash, suffix. Menus tend to put non-localizable items into suffix
	with empty name.
	(update_frame_menubar_maybe): top_level_menu is now set here.
	(mswindows_popup_menu): Ditto. It was incorrect to set it from
	populate.
	(vars_of_menubar_mswindows): Fprovide ('mswindows-menubar) removed:
	(featurep (and 'mswindows 'menubars)) tests the same.
	(mswindows_update_frame_menubars): update_..._maybe () now called
	only if frame->menubar_changed is set. Is it right to patch
	menubar.c instead?

1998-02-08  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* objects-msw.c:
	  Updated color database to X11R6. Also added support for
	  "#RRRGGGBBB" and "#RRRRGGGGBBBB" in addition to "#RRGGBB".

1998-02-08  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* console.h:
	* console-stream.c:
	* redisplay.c:
	* redisplay-msw.c:
	* redisplay-tty.c:
	* redisplay-x.c:
	  Added the frame as a parameter to the text_width device
	  method.

	* redisplay-msw.c:
	  Support for proportional fonts.

1998-02-07  Hrvoje Niksic  <hniksic@srce.hr>

	* window.c (map_windows): Don't return the value of map_windows_1.
	(map_windows): If F is NULL, map through all the windows.
	(mark_windows_in_use): Use map_windows(); made it static.
	(mark_windows_in_use_closure): New function.

1998-02-01  Hrvoje Niksic  <hniksic@srce.hr>

	* alloc.c (Fpurecopy): Check for non-`nil'-ness instead of
	checking for Vobarray.

	* dlopen.c (Fdl_open): Indirect FUNCTION explicitly, for clarity.

	* elhash.c: Removed broken hashtable_hash().

1998-01-28  Hrvoje Niksic  <hniksic@srce.hr>

	* symbols.c (Fintern): Use Qt instead of the actual obarray.
	(init_symbols_once_early): Ditto.

1998-01-27  Hrvoje Niksic  <hniksic@srce.hr>

	* lisp.h (DO_REALLOC): Name the variable `do_realloc_newsize'
	instead of `newsize', to avoid name collisions.

1998-01-26  Hrvoje Niksic  <hniksic@srce.hr>

	* print.c (print_symbol): Be more wary about the contents of
	Vprint_gensym_alist.

1998-02-06  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (Frun_emacs_from_temacs): Disable largely meaning-free
	purity/impurity summary.  Compile with -DREPORT_PURE_USAGE to get
	it back.

	* process.c (create_process): Unused variable elimination.

	* lread.c (Fload_internal): Compiler warning suppression.

	* alloc.c (report_pure_usage): Remove unused variable.

Wed Jan 28 13:41:22 1998  Andy Piper  <andyp@parallax.co.uk>

	* Makefile.in.in: add support for sheap-adjust.h generation for
	static heap.

Wed Jan 28 13:41:22 1998  Andy Piper  <andyp@parallax.co.uk>

	* Makefile.in.in: add sheap-adjust.h support, basically copied
	from puresize-adjust.h. predicate sheap.o on HEAP_IN_DATA. fix
	xemacs target slightly to not be a single shell command, this
	fixes an obscure bug in cygwin gmake.

	* alloc.c (report_pure_usage): call sheap_adjust_h if HEAP_IN_DATA
	is defined.

	* sysfile.h: add abstracted OPEN_BINARY, OPEN_TEXT etc defines. On
	Unix these are all 0 and have no effect. On systems defining
	O_BINARY these use it. WINDOWSNT is currently unaffected because
	there are individual #ifdefs in each source file, but with this
	change they could be removed.

	* emacs.c:
	* doc.c:
	* lread.c:
	* process.c: generalize open() calls with OPEN_BINARY. Does
	nothing under Unix.

	* emacs.c: predicate inclusion of windows.h on WINDOWSNT not
	_WIN32.

	* process.c:
	* sysdep.c:
	* signal.c: predicate SIGIO stuff also on !BROKEN_SIGIO, this is
	required for building on cygwin32 b19 which has SIGIO that only
	works on sockets.

	* fileio.c:
	* event-stream.c: generalize open() calls with OPEN_BINARY. Does
	nothing under Unix. Use open() instead of creat() to make this
	possible. use CREAT_MODE from sysfile.h

	* config.h.in: add MULE_CODING, currently not used. add support
	for HAVE_A_OUT_H.

	* elhash.c:
	* menubar-msw.c:
	* mule-ccl.c:
	* device-msw.c: warning elimination.

	* event-msw.c: add undeclared Dde calls for cygwin.

	* redisplay-msw.c: warning elimination under mule.

	* gmalloc.c: make initalize() really do that. If HEAP_IN_DATA is
	defined catch free() & realloc() calls with addresses in the data
	space. __morecore calls more_static_core for temacs, when dumped
	switches to sbrk().

	* console-msw.h: undef CONST after windows.h inclusion since this
	defines CONST. #ifdef out shellapi under cygwin.

	* device-msw.c: include sysdep.h

	* objects-msw.c: add dummy mswindows_font_spec_matches_charset and
	mswindows_find_charset_font so that we can build with mule.

	* mem-limits: return -1 for get_lim_data() when HEAP_IN_DATA is
	defined.

	* sheap.c: new file. defines sheap_adjust_h and more_static_core
	so that data space can be used by gmalloc before dumping when
	HEAP_IN_DATA is defined. beef up error message about what to do if
	sheap space runs out.

	* sysdep.c: make start_of_data return something sensible for
	HEAP_IN_DATA.

	* systime.h: don't use itimer stuff on cygwin b19.

	* unexcw.c: new file. Full unexec() support for cygwin using the
	HEAP_IN_DATA setup provided by sheap.c and friends. No run-time
	remapping is performed. This could be generalized to support many
	platforms that use COFF. you need a.out.h from my website to build
	this. cygwin b19 will have this.

	* s/cygwin32.h: fixed commentary. compile in unexcw.o for dumping
	support. removed irrelevent things. define BROKEN_SIGIO. remove
	include of windows.h. add correct process support defines, process
	support might work when non-blocking io is implemented in cygwin.

1998-02-02  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs.c: Removed ImageMagick support, re-instituted the previous
	support for JPEG, GIF and PNG with the new color system.

1998-02-05  Olivier Galibert  <galibert@pobox.com>

	* unexelf.c: Fix alignment problems on Linux.

1998-02-01  Kyle Jones  <kyle_jones@wonderworks.com>

	* redisplay.c (redisplay_window): After outputting
	  the window, invalidate its the line start cache if the
	  we're displaying the minibuffer window and the echo
	  area is active.  The cache is only valid for the echo
	  area buffer, and that buffer isn't associated with the
	  minibuffer window anymore.

1998-01-31  SL Baur  <steve@altair.xemacs.org>

	* alloc.c (disksave_object_finalization): Additional checking for
	sanity when zeroing out unused portions of string_chars_block's.
	(Fpurecopy): Spelling fixes in comment.
	(PURESIZE_SLOP): Set default slop to 0.

1998-01-31  Kyle Jones  <kyle_jones@wonderworks.com>

	* chartab.c (make_char_table): Initialize mirror
	  tables with Spunct in all the slots.  Syntax table
	  initialization doesn't touch slots for nonexistent
	  characters sets.  If character sets corresponding to
	  those slots are created later Qnil values in the slots
	  will cause crashes.
	(copy_char_table_entry): Return copy not original.

1998-01-28  Jonathon Harris  <jhar@tardis.ed.ac.uk>

	* msw-proc.c:
	* event-msw.h:
	* event-msw.c:
	* console-msw.h:
	Deleted the first two and merged them into the last two files.

	* device-msw.c:
	* event-msw.c:
	* frame-msw.c:
	Added file-based drag and drop support. The "System/Open" DDE command
	is also implemented as if it were a drag and drop operation.

	* emacsfns.h:
	* event-stream.c:
	* events.c:
	* events.h:
	* frame.c:
	* keymap.c:
	Replaced all "#ifdef HAVE_OFFIX_DND" with
	"#if defined(HAVE_OFFIX_DND) || defined(HAVE_MS_WINDOWS)"

	* device.h: Added DEVICE_MSWINDOWS_P and related macros.

	* objects-msw.c:
	* select-msw.c:
	Eliminated warnings.

	* redisplay-msw.c: Changed color of "dead" box between scrollbars
	to windows' "button" color for compatibility with other windows apps.

1998-01-20  Stephen Turnbull  <turnbull@sk.tsukuba.ac.jp>

	* Makefile.in.in: move `rm puresize-adjust.h' from distclean
	  to mostlyclean

1998-01-29  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (dlopen.o): Add dependencies.

	* s/sunos4-0.h: Conditionalize use of broken-sun.h for old Gccs.
	Suggested by Amir J Katz <amir@ndsoft.com>

1998-01-28  SL Baur  <steve@altair.xemacs.org>

	* faces.c (init_device_faces): This function can call lisp.

1998-01-28  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* mule-coding.h:
	* mule-coding.c: (determine_real_coding_system): removed the
	static declaration to allow reuse.

	* md5.c (Fmd5): Rewrote to fully support MULE, as well as streamline
	the code.

	* mule-ccl.c (ccl_driver): Set initial values of variables to shut up
	the compiler and to give better error message if a quit happens before
	any ccl_code is generated.

1998-01-28  SL Baur  <steve@altair.xemacs.org>

	* glyphs.c (allocate_glyph): This function can GC.
	Wrap GCPRO around unprotected function calls.
	(specifier_vars_of_glyphs): Comment change -- Can we GC here?

1998-01-27  SL Baur  <steve@altair.xemacs.org>

	* lread.c (Fload_internal): Add extra GCPRO around call to
	Fassoc.
	Enable purespace usage counts always.

	* m/powerpc.h: Isolate changes for mklinux from AIX.

1998-01-27  Hrvoje Niksic  <hniksic@srce.hr>

	* symbols.c (init_symbols_once_early): Decreased default size of
	Vpure_uninterned_symbol_table to 50.

1998-01-27  SL Baur  <steve@altair.xemacs.org>

	* redisplay-x.c (x_output_string): Correction for handling underlined
	fonts when XGetFontProperty fails.
	From Chris Felaco <felaco@iatcmail.ed.ray.com>

1998-01-27  Kyle Jones  <kyle_jones@wonderworks.com>

	* alloc.c (Fpurecopy): Store symbols that aren't
	  interned in Vobarray into Vpure_uninterned_symbol_table.

	* symbols.c (init_symbols_once_early): Initialize
	  Vpure_uninterned_symbol_table.

	* emacsfns.h: Declare Vpure_uninterned_symbol_table.

1998-01-26  SL Baur  <steve@altair.xemacs.org>

	* alloc.c (report_pure_usage): New macro PURESIZE_SLOP to allow
	for extra pure space.

1998-01-23  SL Baur  <steve@altair.xemacs.org>

	* sound.c (Fplay_sound_file): Use NILP for comparison of
	Lisp_Object.

Wed Jan 21 10:49:47 1998  Andy Piper  <andyp@parallax.co.uk>

	* unexcw.cc: new file for cygwin32 unexec() requires cygwin32
	b19. Predicated on HAVE_COFF_H.

	* console.c:
	* device-msw.c:
	* event-msw.c:
	* frame-msw.c:
	* msw-proc.c:
	* objects-msw.c:
	Eliminate warnings.

	* redisplay-msw.c (mswindows_update_gc): eliminate warnings and
	extend hack for bogus bg values.

	* symsinit.h: add msw headers to eliminate warnings.

	* s/cygwin32.h: various updates for unexec() support.

	* lastfile.c: add my_ebss for cygwin32 unexec() support.

	* gmalloc.c: made __malloc_initialized non-static so that
	it goes into the bss where we expect it.

	* emacs.c: put run_time_remap() in a place where initialized is
	not always true.

	* Makefile.in.in: add support for compiling .cc files.

	* config.h.in: added HAVE_COFF_H support.

1998-01-23  Hrvoje Niksic  <hniksic@srce.hr>

	* print.c (print_cons): Use XCAR/XCDR.
	(print_string): Fix up so it Vprint_string_length works under Mule
	correctly.

	* eval.c (Feval): Increase profile call count.

	* keymap.c: Fixed typo.

1998-01-22  Hrvoje Niksic  <hniksic@srce.hr>

	* symbols.c (Funintern): Reset symbol's obarray property.

1998-01-22  Karl M. Hegbloom  <karlheg@bittersweet.inetarena.com>

	* alloc.c (size_vector): Declare *p as CONST to eliminate warning.

1998-01-22  Hrvoje Niksic  <hniksic@srce.hr>

	* print.c (print_symbol): Recognize Vprint_gensym being a cons;
	use Vprint_gensym_alist.

	* symbols.c (init_symbols_once_early): Ditto.

	* alloc.c (Fmake_symbol): Reset it.

	* symbols.c (Fintern): Set it.

	* lisp.h (struct Lisp_Symbol): New element `obarray'.

	* print.c (print_prepare): Reset Vprint_gensym_alist.
	(print_finish): Ditto.

	* lread.c: Recognize #n= and #n#.
	(readevalloop): Reset read_objects to nil.
	(Fread): Ditto.

1998-01-23  SL Baur  <steve@altair.xemacs.org>

	* toolbar.c (update_toolbar_button): Eliminate redundant NILP
	checks.
	From Martin Buchholz <martin@xemacs.org>

1998-01-21  Hrvoje Niksic  <hniksic@srce.hr>

	* dlopen.c: New file.

1998-01-19  Steven L Baur  <steve@altair.xemacs.org>

	* eval.c (prog1): Don't GCPRO unitialized variable.
	(prog2): Ditto.
	From Martin Buchholz <martin@xemacs.org>

1998-01-19  Hrvoje Niksic  <hniksic@srce.hr>

	* sound.c (Fplay_sound_file): Use
	signal_simple_continuable_error() instead of error().

1998-01-18  Hrvoje Niksic  <hniksic@srce.hr>

	* README: Updated.

1998-01-18  SL Baur  <steve@altair.xemacs.org>

	* glyphs-x.c (imagick_instantiate): Dynamically allocate pixar
	with alloca.
	From Damon Lipparelli <lipp@primus.com>

1998-01-14  Martin Buchholz  <martin@xemacs.org>

	* eval.c (For, Fand, Fif, Fcond, Fprogn, Fprog1, Fprog2):
	Modernize and streamline.
	Replace Fcdr with XCDR, Fcar with XCAR for efficiency.
	Remove REGISTER declarations.

1998-01-13  Martin Buchholz  <martin@xemacs.org>

	* emacsfns.h:
	* alloc.c:
	Add proper prototypes for print_cons, print_vector, print_string.

	* dired.c (directory-files):
	* elhash.c (elisp_maphash):
	* elhash.h (elisp_maphash):
	* lrecord.h:
	* mule-ccl.c (setup_ccl_program):
	* mule-coding.c (coding_system_charset):
	* offix-cursors.h (cursor_bits):
	Warning elimination.

	* redisplay.c (add_blank_rune):
	* redisplay.c (add_glyph_rune):
	* redisplay.c (add_emchar_rune):
	Warning elimination. Avoid useless computation in non-mule case.

	* config.h.in:
	Define HAVE_INVERSE_HYPERBOLIC using 1 configure test, not 3.
	* src/alloc.c:
	* src/events.c:
	Rearrange order of declarations and definitions to avoid forward
	* src/mem-limits.h: Add motivating comment for future cleanup.

	* s/linux.h: Cleanup.  Remove old cruft.

	* config.h.in:
	Always define _GNU_SOURCE when using GNU libc.
	Support --without-FOO as a synonym for --with-FOO=no.
	Always use $srcdir to locate config.guess.
	Make it clear that CONFIGURATION is optional.
	De-emphasize CONFIGURATION parameter. Random cleanup.
	More compatible with standard GNU install instructions.
	--with-menubars=athena3d ==> --with-menubars=lucid.

1998-01-14  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Fexpand_file_name): Synched with FSF.

1998-01-13  Hrvoje Niksic  <hniksic@srce.hr>

	* objects-msw.c (mswindows_color_instance_rgb_components):
	Multiply components by 257 instead of shifting by 8.

1998-01-15  Hrvoje Niksic  <hniksic@srce.hr>

	* elhash.c (Fhashtable_type): New function.
	(Fhashtable_test_function): Ditto.

1998-01-12  SL Baur  <steve@altair.xemacs.org>

	* profile.c (Fclear_profiling_info): Fix typing error.

	* elhash.c (elisp_map_remhash): Fix typing error.
	(elisp_maphash): Ditto.

1998-01-12  Hrvoje Niksic  <hniksic@srce.hr>

	* mule-ccl.c (Fccl_execute_on_string): Use Dynar_free to free a
	Dynarr.

1998-01-13  Hrvoje Niksic  <hniksic@srce.hr>

	* profile.c (vars_of_profile): New variable
	`call-count-profile-table'.
	(Fclear_profiling_info): Clear call-count-profile-table.

	* eval.c (funcall_recording_as): Use it.

	* profile.c (profile_increase_call_count): New function.

	* lstream.c (stdio_flusher): Comment addition.

	* objects-msw.c (mswindows_string_to_color): Support #RRRGGGBBB,
	as well as #RRGGBB.
	(mswindows_X_color_map): Reformatted.

1998-01-12  Hrvoje Niksic  <hniksic@srce.hr>

	* line-number.c (invalidate_line_number_cache): Comment fixup.

	* symbols.c (Fapropos_internal): Docstring fix.

	* fns.c (Fstring_equal): Docstring fix.

1998-01-12  Hrvoje Niksic  <hniksic@srce.hr>

	* profile.c (get_profiling_info_maphash): Return int.
	(mark_profiling_info_maphash): Ditto.

	* elhash.c (Finternal_hash_value): New debugging function,
	undefined by default.

1998-01-11  Hrvoje Niksic  <hniksic@srce.hr>

	* mule-coding.c (add_coding_system_to_list_mapper): Ditto.

	* mule-charset.c (add_charset_to_list_mapper): Return int.

	* faces.c (add_face_to_list_mapper): Return int.
	(mark_face_as_clean_mapper): Ditto.
	(update_face_inheritance_mapper): Ditto.

	* keymap.c (keymap_submaps_mapper_0): Return int.
	(keymap_submaps_mapper): Ditto.
	(copy_keymap_inverse_mapper): Ditto.
	(copy_keymap_mapper): Ditto.
	(map_keymap_unsorted_mapper): Ditto.
	(map_keymap_sorted_mapper): Ditto.

	* elhash.c (hashtable): Added a hash method.
	(hashtable_hash): New function.

1998-01-09  Hrvoje Niksic  <hniksic@srce.hr>

	* elhash.c (lisp_maphash_function): Return 0.
	(hashtable_equal_mapper): Bail out when an element is not `equal'.

	* hash.c (maphash): Bail out if map function returns non-zero.

1998-01-11  SL Baur  <steve@altair.xemacs.org>

	* eval.c (Fbacktrace): Treat first parameter to byte-code
	specially.

Sat Jan 10 11:36:11 1998  Andy Piper  <andyp@parallax.co.uk>

	* config.h.in: undef HAVE_SYS_UN_H so that it gets defined by
	configure for gnuserv with UNIX_DOMAIN_SOCKETS.

1998-01-09  SL Baur  <steve@altair.xemacs.org>

	* buffer.c (reset_buffer_local_variables): Synch case-table
	resetting stuffs from Emacs 20.2.
	Suggested by Aki Vehtari <Aki.Vehtari@hut.fi>

	* src/symbols.c (Fsetq_default): Fix docstring.
	From Didier Verna <didier@xemacs.org>

1998-01-07  Kirill M. Katsnelson  <kkm@kis.ru>

	* msw-proc.c (mswindows_wnd_proc): Calls to redisplay() from out
	of WM_SIZE handler limited to the case of dragging frame borders.

	* redisplay-msw.c (mswindows_bevel_modeline): Added support for
	negative modeline height.
	(mswindows_output_cursor): Added bar cursor drawing
	(mswindows_flash): Flash frame by inverting client area.

1998-01-08  Andy Piper  <andyp@parallax.co.uk>

	* lread.c: guess load path if its not set just like the dumped
	version does.

	* doc.c: guess doc path if its not set just like the dumped
	version does

Thu Jan 08 09:42:36 1998  Andy Piper  <andyp@parallax.co.uk>

	* emacs.c: don't load loadup.el when CANNOT_DUMP is set, this
	is almost never right on XEmacs.

	* s/cygwin32.h: add comments about how to buid. Move some
	variables into configure so that we don't have to set them.

	* config.h.in: define HAVE_WINDOW_SYSTEM if HAVE_MS_WINDOWS is
	set.

1998-01-06  Kirill M. Katsnelson  <kkm@kis.ru>

	* lread.c (Fload_internal): On Win32, this reopened the file
	without first closing the handle. This caused running out of
	handles.

	* nt.c (sys_open): This one made big mess when opening a handle
	next after MAXDESC-1. Fixed.

1998-01-06  Kirill M. Katsnelson  <kkm@kis.ru>

	* objects-msw.c (mswindows_string_to_color): Patched not to modify
	const char* parameter.
	(hexval): Modified to accept uppercase hex digits.

	* ntproc.c (sys_spawnve): char* arguments made CONST, to comply
	with standard header declaration.

	* sysdep.c: Fixed ugly prototypes copied from system headers. Who
	says the solution is as ugly, is right.
	Added a couple of #include directives to avoid undefined functions.
	(struct save_signal): Added parameter to function pointer
	prototype when compiled under ANSI C.
	(save_signal_handlers): Ditto

	* s/windowsnt.h: Added prototypes for functions defined via
	sys_<name> which are not found or differ on Win32: pipe, sleep,
	spawnve, wait, kill
	Macros created from former nt.c functions: random srandom setpgrp
	Defined HAVE_STRCASECMP, and strcasecmp defined to _stricmp which
	is provided by the compiler.
	Removed hack which prevented winsock.h from including.

	* nt.c (random): Removed and made a macro in s/windowsnt.h
	(srandom): Ditto
	(setpgrp): Ditto
	(unrequest_sigio): #if0'ed. It is unreferenced; in XEmacs, calls
	to it seem to be controlled by HAVE_SIGIO.
	(request_sigio): Ditto

	* nt.h: Removed FD_* macros. Rely on definitions in winsock.h.
	Changed EMACSDEBUG references to DEBUG_XEMACS

	* event-msw.c (mswindows_cancel_dispatch_event): Returns Qnil when
	event not found in the queue. Used to return undefined value.

1998-01-07  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (main_1): Add `-no-autoloads' to suppress loading
	autoloads at startup.

	* Makefile.in.in (xemacs): Fix call to list load-path shadows.

1998-01-02    Charles G. Waldman <cgw@pgt.com>

	* frame.h:  fix erroneous FRAME_RIGHT_BORDER_START macro.
	Corrects display glitch when toolbar is on the right.

1998-01-02  Kirill M. Katsnelson  <kkm@kis.ru>

	* emacs.c (make_arg_list_1): On Win32 platforms, GetModuleFileName
	is consulted instead of argv[0] to get full path to the xemacs
	executable.

1998-01-01  SL Baur  <steve@altair.xemacs.org>

	* m/sparc.h: Cleans up some warnings about unused variables in
	getloadavg.c under Sparc/Linux.
	From Stephen J. Turnbull <turnbull@sk.tsukuba.ac.jp>

	* fileio.c (vars_of_fileio): Enable directory-sep-char always for
	compatibility.

	* emacs.c (main_1): Inhibit reloading dumped lisp when using
	`-batch' or `-vanilla'.

1997-12-31  SL Baur  <steve@altair.xemacs.org>

	* emacs.c: New variables `inhibit-update-dumped-lisp' and
	`inhibit-update-autoloads'.
	(vars_of_emacs): Initialize them.

1997-12-29  Kirill M. Katsnelson  <kkm@kis.ru>

	* msw-proc.c (mswindows_enqueue_magic_event): Made extern. User by
	menubar-msw.c

	* event-msw.h: Prototype for mswindows_enqueue_magic_event

	* event-msw.c (mswindows_wm_timer_callback): Fixed counter of
	outstanding timer events (decremented only when KillTimer
	succeeds)
	(emacs_mswindows_remove_timeout): Ditto

	* console-msw.h: Added frame structure field for menu checksum

	* menubar-msw.c: Miscellaneous patches and bug fixes.

1997-12-30  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (main): Clarify calls to main_1.

	* data.c (Fcompiled_function_annotation): Hide DEFUN from
	make-docfile.

	* emacs.c (main_1): The invocation name requires recomputing when
	running after dumping.

1997-12-29  SL Baur  <steve@altair.xemacs.org>

	* free-hook.c (check_free): Added explicit braces to avoid
	dangling else clause.
	* sound.c (Fplay_sound_file): Ditto.
	* process.c (set_process_filter): Ditto.
	* linuxplay.c (linux_play_data_or_file): Ditto.
	* regex.c (regex_compile): Ditto.

1997-12-28  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (main_1): Fix logic to run in place when XEmacs is a
	login shell.
	(main_1): New parameter restart.
	(main): Use it.

	* bytecode.h: Disable COMPILED_FUNCTION_ANNOTATION_HACK.

	* print.c (debug_short_backtrace): Guard call to
	Fcompiled_function_annotation.

	* alloc.c (disksave_object_finalization): Don't zero out
	load-history if history of pure symbols is desired.

	* lread.c (build_load_history): If LOADHIST_DUMPED is defined, add
	pure symbols to load-history.

	* emacsfns.h: New symbols added -- LOADHIST_DUMPED, define to get
	a history of dumped lisp.  LOADHIST_BUILTIN, define to get a
	history of symbols defined in C source.

1997-12-23  Andy Piper <andyp@parallax.co.uk>

	* Conditionals to enable XEmacs to compile (not run!) under
	  CygWin32. Files touched:
	  events.c
	  getloadavg.c
	  mem-limits.h
	  objects-msw.c
	  select-msw.c
	  sysdep.c
	* s/cygwin.h: New file.

1997-12-26  Kirill M. Katsnelson  <kkm@kis.ru>

	* menubar-msw.c, menubar-msw.h: New files. Menus support.

	* console-msw.h: Added frame menu hashtable variable.

	* gui.c: popup_up_p variable and Fpopup_up_p and
	  separator_string_p functions are moved from gui-x.c

	* gui.h: New file declaring the above. It is #included into the
	  following files:
	  dialog-x.c
	  gui-x.c
	  menubar-x.c

	* emacs.c: Added calls to *_of_menubar_mswindows()

	* event-msw.c: Generalization of modal pump interface so it may be
	  used bu menubars also. Some functions and vars renamed, to
	  reflect more general approach (event_pump -> modal_loop)

	* frame-msw.c: Initialization and marking of menu hashtable.

	* msw-proc.c: Added handling for menu window messages.

	* opaque.c: opaque objects given hash and equal methods, so they
	  can be compared with 'equal. Menubar uses opaque pointers as
	  hash keys in an 'equal style hashtable.

	* Most of the above touched files: Eliminated compiler warnings.

1997-12-18  Hrvoje Niksic  <hniksic@srce.hr>

	* elhash.c (print_hashtable): Use `%u' for fullness.
	(hashtable_equal): New function.
	(hashtable_equal_mapper): Ditto.

	* lread.c (vars_of_lread): Initialize Vread_buffer_stream here
	instead of in init_lread.

1997-12-26  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c (imagick_instantiate): Add in error and
	warning handling for ImageMagick files

1997-12-26  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (distclean): Remove `xemacs.*'.

1997-12-22  SL Baur  <steve@altair.xemacs.org>

	* device.c (vars_of_device): Provide `devices' feature so W3's
	devices.el emulation won't bloat XEmacs.

	* lread.c (Fload_internal): Strip path and extension when
	considering a file as a candidate for running after-load functions.

1997-12-20  Kirill M. Katsnelson <kkm@kis.ru>

	* s/windowsnt.h: SIZEOF_SHORT set to 16 bits instead of 32, to get
	  real.

	* redisplay-msw.c: (many functions): FillRect replaced with
	  ExtTextOut where possible, which is much faster.
	  (mswindows_redisplay_deadbox_maybe): New function which fixes
	  deadbox, a square bounded by scrollbar ends and window corner
	  (usually the lower right corner).

	* emacs.c (assert_failed): On Win32 platforms, when assertion
	  fails, debugger break occurs if DEBUG_XEMACS is defined.

	* event-msw.c (mswindows_pump_outstanding_events): Fixed so two
	  consequtive Fsignals are not lost.

	* scrollbar-msw.c (mswindows_update_scrollbar_instance_values):
	  Added SBF_DISABLENOSCROLL flag so the bar is greyed out when
	  all lines are visible.
	  (mswindows_update_scrollbar_instance_status): Ditto for freshly
	  assigned scrollbar.

	* scrollbar.c (Fscrollbar_set_hscroll): Fixed fitting scroll
	  limits into range.

1997-12-18  Kirill M. Katsnelson <kkm@kis.ru>

	* events-msw.c: Added support for modal event dispatch pump.
	  This mechanism is for scrollbars and menus.

	* events-msw.h: Public declaration for the pump function.

	* msw-proc.c: Pump scrollbar misc user events through the
	  brand new pump. Pumps!

	* scrollbar-msw.c: Minor range fixes. Added misc events for
	  horizontal bar, which did not fix it...

Thu Dec 18 09:53:12 1997    <jsparkes@internetivity.com (Jeff Sparkes)>

	* objects-msw.c (mswindows_print_color_instance): Scale 8 bit RGB
	  components up to 16 bit X sizes.
	(mswindows_string_to_color): numeric colors are #RRGGBB not #BBGGRR.

	* objects-msw.c (mswindows_color_instance_rgb_components): ditto

	* objects.c (Fcolor_instance_rgb_components): Document range of
	  components as 0-65535.

1997-12-18  SL Baur  <steve@altair.xemacs.org>

	* doc.c (verify_doc_mapper): Fix return value and argument list
	for map_obarray.

	* device-x.c: New variable -- Vx_app_defaults_directory.
	(x_init_device): Use locale directory searched from package-path.

1997-12-18  Kyle Jones  <kyle_jones@wonderworks.com>

	* EmacsFrame.c: Added foregroundToolBarColor and
	  foreground resources to the resources[] definition.
	  Moved default gray8o color value from the
	  bcakgroundToolBarCOlor resource to th background
	  resource since the override order is now reversed in
	  toolbar-x.c.  Don't provide a default value for the
	  foreground resource that the toolbar code looks at.

	* EmacsFrame.h: Define foregroundToolBarColor string
	  for use in the resoruces code.

	* EmacsFrameP.h: Added foreground_toolbar_pixel slot
	  to EmacsFramePart struct.

	* toolbar-x.c: Let the toolbar specific background
	  resource override the global background resource.  Added
	  support for a toolbar specific foreground resource,
	  which is not currently used for anything internally.

1997-12-17  Hrvoje Niksic  <hniksic@srce.hr>

	* redisplay.c (decode_mode_spec): Comment fixup.

	* tooltalk.c (Freceive_tooltalk_message): Ditto.

	* search.c (Freplace_match): Ditto.

	* frame-x.c (x_frame_property): Ditto.

	* console.c (Fcurrent_input_mode): Ditto.

	* callint.c (Fcall_interactively): Ditto.

	* abbrev.c (Fexpand_abbrev): Ditto.

	* dired.c (file_name_completion): Use Qzero instead of
	make_int(0).

	* fileio.c (Finsert_file_contents_internal): Use
	report_file_error() to report reading error.

	* cmds.c (internal_self_insert): Don't self-insert if the expanded
	symbol's hook has a non-nil `no-self-insert' property; synch with
	FSF 20.2.

	* abbrev.c (Fexpand_abbrev): Return Vlast_abbrev, like in FSF
	20.2.

1997-12-16  Hrvoje Niksic  <hniksic@srce.hr>

	* abbrev.c (abbrev_match): User map_obarray() instead of
	crockishly copying it.
	(abbrev_match_mapper): New function.
	(Fexpand_abbrev): Check whether `pre-abbrev-expand-hook' has
	killed the buffer.

	* symbols.c (map_obarray): Accept a void * argument.
	(mapatoms_1): Adapt.
	(apropos_accum): Use fast_lisp_string_match().
	(Fapropos_internal): Don't cons.
	(map_obarray): Stop mapping if FN returns non-zero.

	* marker.c (unchain_marker): Guard assert() with ERROR_CHECK_GC.
	(bi_marker_position): Guard assert() with ERROR_CHECK_BUFPOS.
	(set_bi_marker_position): Ditto.

1997-12-15  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Finsert_file_contents_internal): Use make_int when
	checking for overflow.
	(Finsert_file_contents_internal): Use EXTERNAL_LIST_LOOP.
	(Ffind_file_name_handler): Ditto.

	* dired.c (file_name_completion): Use noseeum_cons.
	(file_name_completion_unwind): Free the cons.

1997-12-16    <jsparkes@internetivity.com (Jeff Sparkes)>

	* scrollbar.c: Add HAVE_MS_WINDOWS to scrollbar-page functions.

	* msw-proc.c: Handle scrolling events.

	* frame-msw.c: Initialize scrollbar width and height.  This should
	  not be necessary, since the window shouldn't be created until
	  init_frame_2

	* emacs.c: Call mswindows scrolbar setup when appropriate.

	* scrollbar-msw.c: Created for mswindows-scrollbar support.

	* scrollbar-msw.h: Ditto.

1997-12-16  Kirill M. Katsnelson <kkm@kis.ru>

	* msw-proc.c: Minor bug in the middle button emulation code
	  exterminated.

	* msw-proc.c: Character translation procedure reworked, so C-M-char
	  keys now work properly. Keyboard layouts that use AltGr for
	  third register characters are detected and handled. The code
	  has been tested on French and UK keyboard layouts.

	* msw-proc.c: #if 0'ed remains of threaded code are removed.

	* event-msw.c: Mouse motion was incorrectly counted for a user event.

	* event-msw.c: lisp variables beginnig with w32- are renamed to
	  begin with mswindows-.

1997-12-15  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Finsert_file_contents_internal): Use it.
	(Fcopy_file): Ditto.

	* sysdep.c (interruptible_open): New function.

1997-12-16  Kyle Jones  <kyle_jones@wonderworks.com>

	* frame-x.c (x_init_frame_2): Don't call
	  update_frame_title.  Some modeline specs depend on
	  f->device->selected_frame being non-nil and that will
	  not be true during initialization of the first frame on
	  a device.

1997-12-16  SL Baur  <steve@altair.xemacs.org>

	* fileio.c: clean up paren levels between ifdefs.
	From Hrvoje Niksic <hniksic@srce.hr>

1997-12-15  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c (imagick_instantiate): Remove an assumption that
	  all machines have LSB XImage support.

1997-12-14  Kyle Jones  <kyle_jones@wonderworks.com>

	* Makefile.in.in: Moved $(OFFIX_O) from x_objs to
	  X11_objs to avoid having its initialized global
	  variables be dumped read-only.

1997-12-14  SL Baur  <steve@altair.xemacs.org>

	* offix.c (DndSetData): Use standard INT_MAX instead of MAXINT.
	Replace <values.h> with <limits.h>

1997-12-13   Kirill M. Katsnelson <kkm@kis.ru>

	* msw-proc.c: added emulation for middle mouse button by chording
	  left and right buttons
	* event-msw.c: added lisp variables for resize behavior and middle
	  button emulation thresholds
	* msw-proc.c: {un}map-frame-hook now are not called directly from
	  the window procedure, rather from magic event handler.
	* Formulated golden rule for calling lisp from window procedure:
	  "NOOOOOO!". May be violated under circumstances although.
	* frame-msw.c: corrected problem with setting frame width and height
	  properties, introduced by 95-style look.

1997-12-12  SL Baur  <steve@altair.xemacs.org>

	* input-method-xlib.c (describe_XIC): Add casts, use unsigned long
	int.

	* eval.c (funcall_subr): Ifdef out as it is now unused.

	* emacsfns.h: Declare Fdisplay_error.

	* callint.c (Fquote_maybe): Don't use `==' on Lisp_Objects.

1997-12-12  Michael Sperber  <sperber@informatik.uni-tuebingen.de>

	* fileio.c: Removed stillborn set-buffer-modtime.

1997-12-10  Hrvoje Niksic  <hniksic@srce.hr>

	* elhash.c (hashtable_instantiate): If SIZE is nil, set it to
	length of DATA.
	(print_hashtable): Would bogusly print #(hashtable).
	(verify_function): Use XCAR.

1997-12-12  Hrvoje Niksic  <hniksic@srce.hr>

	* elhash.c (print_hashtable_data_mapper): Use a C structure
	instead of consing.

1997-12-12  Hrvoje Niksic  <hniksic@srce.hr>

	* callint.c (quotify_arg): Don't quotify vectors, keywords,
	bit-vectors and lambdas.
	(Fquote_maybe): New subr, from quotify_arg.
	(quotify_args): Use it.
	(Fcall_interactively): Ditto.

1997-12-11  Hrvoje Niksic  <hniksic@srce.hr>

	* window.c (Fset_window_point): Ditto for Fgoto_char.
	(Fset_window_configuration): Ditto.

	* undo.c (Fprimitive_undo): Ditto for Fset_buffer_modified_p,
	Fgoto_char and Fdelete_region.

	* print.c (temp_output_buffer_setup): Ditto.

	* glyphs.c (make_string_from_file): Ditto.

	* glyphs-x.c (pixmap_to_lisp_data): Ditto for Ferase_buffer.
	(pixmap_to_lisp_data): Ditto for Fbuffer_substring.

	* bytecode.c (Fbyte_code): Use Qnil instead of Fcurrent_buffer()
	when calling functions that use decode_buffer() internally -- it
	is faster.

	Change done for Fgoto_char, Fchar_after, Ffollowing_char,
	Fpreceding_char, Findent_to, Feolp, Feobp, Fbolp, Fbobp,
	Fforward_char, Fforward_word, Fskip_chars_forward,
	Fskip_chars_backward, Fforward_line, Fbuffer_substring,
	Fdelete_region, Fnarrow_to_region, Fwiden, Fend_of_line, Fupcase
	and Fdowncase.

1997-12-11 Jonathan Harris <jhar@tardis.ed.ac.uk>, Kirill M. Katsnelson <kkm@kis.ru>

	* The first collegial patch in the xemacs-nt history. Well...
	* device-msw.c, event-msw.c, event-msw.h, frame-msw.c, msw-proc.c:
	  xemacs is now single-threaded application. Due to this, the
	  problem with crash during input events in GC got resolved.
	* xemacs frames are given "95ish" look with raised border.
	* stop character (ctrl+g) now works. SIGINT (ctrl+c or ctrl+break
	  at the console) is still broken although.
	* frame "as lisp object" is now stored in window-associated space
	  provided by the system. This enables obtaining frame object given
	  window handle in constant time.
	* mswindows_cancel_dispatch_event() now has limited handling
	  for key_press_event's in addition to timeout_event's.

1997-12-11  SL Baur  <steve@altair.xemacs.org>

	* intl.c (init_intl_very_early): Force LC_NUMERIC to "C".
	* input-method-xfs.c (Initialize_Locale): Ditto.
	* input-method-motif.c (Initialize_Locale): Ditto.
	* input-method-xlib.c (Initialize_Locale): Ditto.
	Suggested by Didier Verna <didier@xemacs.org> and
	Martin Buchholz <martin@xemacs.org>

1997-12-10  Karl M. Hegbloom  <karlheg@bittersweet.inetarena.com>

	* config.h.in: #undef MAGICK_HEADERS_ARE_UNDER_X11

	* glyphs-x.c: #ifdef MAGICK_HEADERS_ARE_UNDER_X11 added.

1997-12-11  SL Baur  <steve@altair.xemacs.org>

	* glyphs-x.c (_XOS_H_): Try to avoid including Xos.h on Solaris.
	Suggested by Samuel Tardieu <sam@inf.enst.fr>

1997-12-11  David Hobley <davidh@wr.com.au>

	* pure.c: Removed WINDOWSNT conditional.

1997-12-10  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: Doc changes, update dependencies.

	* frame-x.c (x_init_frame_1): Remove unused variable.

	* fns.c (internal_equal): Guard label with ifdef.
	(internal_old_equal): Ditto.

	* symsinit.h: Declare structure_type_create_hashtable.

	* elhash.c (finish_marking_weak_hashtables): Move unused variable
	so gcc doesn't complain about it.

	* elhash.h: Declare new weak hashtables.

	* elhash.c (print_hashtable): Fix format.

1997-12-10  Hrvoje Niksic  <hniksic@srce.hr>

	* frame-tty.c (tty_raise_frame_no_select): Use LIST_LOOP.
	(tty_lower_frame): Ditto.

	* faces.c (face_validate): Don't check for doubly defined
	keywords; the reader does that.

	* emacs.c (main_1): Call structure_type_create_hashtable().

	* general.c (syms_of_general): Added Qtest and Qsize.

	* elhash.c (structure_type_create_hashtable): New function.
	(hashtable_type_validate): Ditto.
	(hashtable_test_validate): Ditto.
	(hashtable_size_validate): Ditto.
	(hashtable_data_validate): Ditto.
	(hashtable_instantiate): Ditto.

	* extents.c (extent_putprop): Made it work.
	(extent_remprop): Ditto.

1997-12-08  Kirill M. Katsnelson <kkm@kis.ru>

	* device.h: device::fdin and device::fdout are now defined for
	  systems which do not HAVE_UNIXOID_EVENT_LOOP.
	* device-tty.c, process.c, signal.c: call to signal_fake_event()
	  bracketed out by #ifdef HAVE_UNIXOID_EVENT_LOOP / #endif
	  directives.
	* signal.c: For Win32 systems, longjmp in signal handler excluded
	* nt.c, syssignal.h, systime.h: emulation for SIGALRM and SIGPROF
	  and setitimer for Win32 platforms. Profiling now works.
	* emacs.c: calls to syms_of_profile and vars_of_profile enabled
	  on Win32 platforms.
	* ntproc.c: handling of SIGCHLD now done by the common signal
	  faking mechanism. (To no avail - subprocesses still broken)
	* s/windowsnt.h: Signal constants added
	* redisplay-msw.c: "Sticky" beep which blocked XEmacs until the
	  sound finishes is now repaired

1997-12-06  Jonathan Harris <jhar@tardis.ed.ac.uk>

	* frame-msw.c, msw-proc.c
	  Further changes to resizing code so that changing default
	  font, either in .emacs or later, works properly.

	* msw-proc.c
	  Minor optimization: Mouse movement events aren't generated
	  while the user is resizing the frame.
	  Function keys are returned lower-case.

1997-12-09  P. E. Jareth Hein  <jareth@camelot-soft.com>

	* glyphs-x.c (imagick_instantiate): fix it so that it works
	properly for PseudoClass files.  Still needs some thinking for
	full color...  Also added support for old image instantiators
	in various places using the OLDCOMPAT define

1997-12-08  Kyle Jones  <kyle_jones@wonderworks.com>

	* event-stream.c (Faccelerate_menu): Check for the
	  existence of a menubar associated with the selected frame
	  before trying to use it.  Signal an error if there is
	  no menubar.

1997-12-06  P E Jareth Hein  <jareth@camelot-soft.com>

	* device-x.c: Change -privcmap to -privatecolormap.
	* events.c: corret minor think-o.

1997-12-04 Jonathon Harris <jhar@tardis.ed.ac.uk>

	* event-msw.c, faces.c, msw-proc.c:
	  Frame resizing happens in multiples of the default character	  size.
	* frame-msw.c:
	  mswindows_set_frame_size() and
	  mswindows_set_frame_properties() now call AdjustWindowRect to
	  set the correct window size.

1997-12-04  Jeff Sparkes <jsparkes@internetivity.com>

	* frame-msw.c: added frame functions for move, resize,
	 iconify, raise, lower, visible_p, iconified_p, focus,
	 make visible, make invisible, set title.

1997-12-01  Jonathon Harris <jhar@tardis.ed.ac.uk>

	* event-msw.c, event-msw.h, frame-msw.c, msw-proc.c:
	  - Implemeted simple emacs_mswindows_event_pending_p().
	  - Fixed deleting frames.
	  - Rewrote timeout code, eliminating "!NILP(rest)" bug.
	  - Special processing for 'Ctrl-@' keystroke.
	  - Support for some new keysyms.

1997-12-03  Hrvoje Niksic  <hniksic@srce.hr>

	* lstream.c (make_stdio_stream_1): Set it.
	(make_filedesc_stream_1): Ditto.
	(finalize_lstream): Use it.

	* lstream.h: New flag LSTREAM_FL_CLOSE_AT_DISKSAVE.

1997-11-29  Jeff Miller <jmiller@smart.net>

	* menubar-x.c: define restore_in_menu_callback() when motif
	  menubars are used.

	* menubar-x.c: change #ifdef LWLIB_MENUBARS_MOTIF to
	  #if defined LWLIB_MENUBARS_LUCID || defined LWLIB_MENUBARS_MOTIF
	  around code for incremental menu build.

	* event-stream.c: Changed HAVE_MENUBARS to HAVE_MENUBARS_LUCID in
	  the #ifdef wrappers around menubar accelerator stuff.

1997-12-05  SL Baur  <steve@altair.xemacs.org>

	* keymap.h: update describe_map_tree prototype

1997-12-03  Hrvoje Niksic  <hniksic@srce.hr>

	* lstream.c (make_stdio_stream_1): Set it.
	(make_filedesc_stream_1): Ditto.
	(finalize_lstream): Use it.

	* lstream.h: New flag LSTREAM_FL_CLOSE_AT_DISKSAVE.

1997-12-03  Hrvoje Niksic  <hniksic@srce.hr>

	* editfns.c (save_excursion_restore): Fix comment.

	* fns.c (Fmapvector): GCPRO the vector.

1997-12-01  Hrvoje Niksic  <hniksic@srce.hr>

	* cmdloop.c (default_error_handler): Respect
	errors-deactivate-region; use display-error.

	* editfns.c (vars_of_editfns): New variable user-full-name.
	(init_editfns): Initialize it.
	(Fuser_full_name): Use it.
	(vars_of_editfns): Docfixes.

	* dired.c (Fdirectory_files): Use FORMAT_FILENAME instead of
	FORMAT_BINARY.
	(make_directory_hash_table): Ditto.
	(file_name_completion): Bind `completion-ignore-case' to t under
	MS Windows.
	(file_name_completion): Signal an error if a member of
	`completion-ignored-extensions' is not a string.

1997-11-30  Hrvoje Niksic  <hniksic@srce.hr>

	* doc.c (Fsubstitute_command_keys): Don't use
	Vprin1_to_string_buffer.

	* keymap.c (describe_map_tree): Accept a BUFFER argument.
	(describe_map): Ditto.
	(describe_command): Ditto.

1997-11-29  Hrvoje Niksic  <hniksic@srce.hr>

	* insdel.c (signal_before_change): Don't treat
	Vprin1_to_string_buffer specially.
	(signal_after_change): Ditto.

	* buffer.c (Fkill_buffer): Don't treat Vprin1_to_string_buffer
	specially.
	(complex_vars_of_buffer): Ditto.

	* print.c (Ferror_message_string): Use Vprin1_to_string_stream.

	* events.c (Fmake_event): Changed error message.

	* print.c (Fprin1_to_string): Use a resizing-buffer stream.

1997-12-03  Hrvoje Niksic  <hniksic@srce.hr>

	* buffer.c (Fkill_buffer): Use EXTERNAL_LIST_LOOP.
	(Fget_file_buffer): Use LIST_LOOP.

1997-12-02  Hrvoje Niksic  <hniksic@srce.hr>

	* editfns.c (save_excursion_save): Don't save VISIBLE-P.
	(save_excursion_restore): Changed accordingly.
	(save_excursion_restore): Free the markers and conses even if the
	buffer is dead.
	(save_restriction_restore): Use XCAR/XCDR.
	(Fencode_time): Use XCAR/XCDR, when safe.

	* menubar.c (Fnormalize_menu_item_name): Use INC_CHARPTR; allow
	`%%' to mean `%'.

	* minibuf.c (regexp_ignore_completion_p): Use EXTERNAL_LIST_LOOP;
	check type of list elements.

	* dired.c (file_name_completion): Set up a proper unwind form.
	(file_name_completion_unwind): New function.
	(file_name_completion): Allow errors.

	* line-number.c (invalidate_line_number_cache): Would lose in
	precence of Finsert_before_markers.
	(narrow_line_number_cache): Only mark LINE_NUMBER_BEGV as dirty.
	(buffer_line_number): Recalculate LINE_NUMBER_BEGV on demand.
	(buffer_line_number): Would ignore LINE_NUMBER_FAR.

1997-12-01  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fmapvector): Don't stack-allocate args; allocate the
	vector and call mapcar1 with its data.

1997-12-02  P E Jareth Hein  <jareth@camelot-soft.com>

	* objects-x.c: Added colormap/visual support, rewrote
	allocate_nearest_color, and changed the x-color-instance to deal
	with possibly not freeing a color.

	* objects-x.h: Added dealloc_on_gc flag for x-color-instances.

	* redisplay-x.c: Added colormap/visual support.

	* balloon-x.c: Added colormap/visual support.

	* console-x.h: Added colormap/visual support by adding visual,
	depth and colormap slots to a device.

	* device-x.c: Added colormap/visual support with the command line
	options "-privcmap" and "-visual" and Xresources
	".privateColormap" and ".EmacsVisual".  Also changed the
	device-init so that the app-shell is always realized to properly
	deal with GCs (previously only realized when OFFIX was
	supported), and added the x-display-visual-depth lisp function to
	complement x-display-visual-class.

	* event-Xt.c: Added colormap/visual support, and stuck in a
	patch/hack to change the way Xt inherits visuals to match the way
	it inherits colormaps.

	* frame-x.c: Added colormap/visual support.

	* glyphs-x.c: Added colormap/visual support. Will probably need a
	lot more work.

1997-11-27  Kyle Jones  <kyle_jones@wonderworks.com>

	* src/keymap.c (munging_key_map_event_binding): Don't do
	  the meta char hack when processing key-translation-map.
	  Return nil if the map to be processed (function-key-map
	  or key-translation-map) is not a keymap.

1997-11-27  SL Baur  <steve@altair.xemacs.org>

	* device-msw.c: Turn on italic flag if appropriate
	* objects-msw.c: Set device-class to color.
	From Jeff Sparkes <jsparkes@internetivity.com>

	* glyphs-x.c: Should include <magick/magick.h> since that is what
	is autodetected by configure.

1997-11-26  SL Baur  <steve@altair.xemacs.org>

	* events.c (Fmake_event): correct type bug.
	From Colin Rafferty <craffert@ml.com>

1997-11-26  Kyle Jones  <kyle_jones@wonderworks.com>

	* lisp-disunion.h (VALMASK): Use 1UL instead of 1L to
	  shut up Sun's niggling compiler warnings about integer
	  overflow.

	* print.c (Fprin1_to_string): Don't change and
	  restore the current buffer; no buffer change is needed
	  to accomplish the task.

1997-11-23  Jeff Miller <jmiller@smart.net>

	* Makefile.in.in  removed energize support
	* buffer.c        removed energize support
	* config.h.in     removed energize support
	* console-x.h     removed energize support
	* doc.c           removed energize support
	* emacs.c         removed energize support
	* extents.c       removed energize support
	* extents.h       removed energize support
	* frame-x.c       removed energize support
	* gui-x.c         removed energize support
	* menubar-x.c     removed energize support
	* process.c       removed energize support
	* puresize.h      removed energize support
	* symsinit.h      removed energize support
	* sysproc.h       removed energize support
	* syssignal.h     removed energize support
	* undo.c          removed energize support
	* window.c        removed energize support

	* energize.c      removed
	* energize.h      removed

1997-11-23  Kyle Jones  <kyle_jones@wonderworks.com>

	* faces.c (face_property_was_changed): Don't call
	  update_faces_inheritance, it isn't needed.

1997-11-22  Kyle Jones  <kyle_jones@wonderworks.com>

	* redisplay-x.c (x_flash): Flash the root window
	  area instead of the entire frame area.

	* frame.h: Added echo_area_garbaged field to frame
	  struct.

	* frame.c (change_frame_size_1): Set the
	  echo_area_garbaged flag in a frame that has been
	  resized.

	* redisplay.c (redisplay_frame): Clear echo_area_garbaged
	  flag on frame after displaying the frame.

	  (Fredisplay_echo_area): Clear echo_area_garbaged
	  flag on frame after displaying in echo area.

	* redisplay.c: Added hscroll_glyph_width_adjust field
	  to position_redisplay_data_type struct.

	  (add_hscroll_rune): Compute the difference in width
	  between the hscroll glyph and a canonical space; store
	  it in data->hscroll_glyph_width_adjust.

	  (create_text_block): In tab field computation, adjust
	  left margin to account for the difference between the
	  width of the hscroll glyph and the width of a canonical
	  space.

1997-11-19  Kyle Jones  <kyle_jones@wonderworks.com>

	* Emacs.ad: Change uses of Gray75 to Gray80.
	  Don't set modeline colors here.

	* EmacsFrame.c: Fetch "background" resource for use by
	  the toolbar initialization code; default this fetched
	  value to -1 if it is unspecified, which is different
	  from what is found in ef->core.background_pixel in that
	  case.

	* EmacsFrame.h: Define macros for "Background" and
	  "background" resource strings.

	* EmacsFrameP.h: Added background_pixel field to
	  EmascFrmaePart struct.

	* toolbar-x.c (x_initialize_frame_toolbar_gcs): Added
	  code to use the global background resource as the
	  toolbar background color if it is sepcified. Otherwise
	  fall back to the backgroundToolBarColor resource.

1997-11-17  Marc Paquette  <marcpa@cam.org>

	* callproc.c (Fcall_process_internal): Fix for bug in
	CRLF -> LF conversion.

1997-11-19  Jonathan Harris <jhar@tardis.ed.ac.uk>

	* redisplay-msw.c: Calls GdiFlush() in _ouput_end, _clear_frame and
	_redraw_exposed_area

	* frame-msw.c: mswindows_init_frame_2
	  Sets frame's pixel width and height

1997-11-19  Kyle Jones  <kyle_jones@wonderworks.com>

	* callproc.c (call_process_cleanup): Actaully wait
	  for the process, rather than not doing it and saying we
	  did.

1997-11-20  Hrvoje Niksic  <hniksic@srce.hr>

	* callproc.c (Fcall_process_internal): Close fd_error.

1997-11-19  Didier Verna  <didier@xemacs.org>

	* emacs.c (main_1): Added the missing argmatch call to check
	for the '-h' option.

1997-11-18  SL Baur  <steve@altair.xemacs.org>

	* mule-coding.h: Replace freshly broken ENCODE_SJIS and
	DECODE_SJIS macros with working versions from beta4.

1997-11-17  Kyle Jones  <kyle_jones@wonderworks.com>

	* frame-x.c (x_init_frame_1): Set frame visibility
	  flag to 1 immediately so that echo area message are
	  displayed in it promptly.

	* redisplay.c (Fredisplay_echo_area): If frame has
	  changed, clear it to avoid garbled messages.

	* window.c (set_window_pixsize): Restore the bail out
	  if no size change, but do it after the loop that recomputers
	  major child corner coordinates.

	* keymap.c (describe_map_mapper): Recognize the
	  buttonXup keysyms as mouse bindings.

1997-11-17  Tor Arntsen <tor@spacetec.no>

	* Makefile.in.in (update-elc.stamp): Add temacs to dependency.

1997-11-16  Kyle Jones  <kyle_jones@wonderworks.com>

	* Added suport for toolbar borders.

	* EmacsFrame.c: Added X resources for new toolbar
	   borders.

	   (EmacsFrameSetValues): Added Fadd_spec_to_specifier
	   calls to move resourced toolbar border width data
	   into the speciifers.

	* EmacsFrame.h: Defined X resource strings for
	   toolbar border width resources.

	* EmacsFrameP.h: Added toolbar border width fields
	   to the EmacsFramePart struct.

	* console.h: Added toolbar_border_width_changed_in_frame_method
	   field to struct console.

	* events.c (event_x_y_pixel_internal):  Factor the
	   toolbar border into pixel offset.

	* frame.c: Document new toolbar border width
	   speciifer as being usable as frame properties.

	   (frame_conversion_internal): Factor the toolbar border
	   widths into the geometry calculations.

	   (change_frame_size_1): Ditto.

	* frame.h: Added field to struct frame for toolbar
	   border widths.  Modified geomtry macros and created
	   others in support of the new toolbar border widths.

	* frameslot.h: Added a default_toolbar_border_width
	   slot.

	* redisplay-x.c (x_clear_frame): Factor the toolbar
	   border widths into the geometry calculations.

	* toolbar-x.c (x_draw_blank_toolbar_button): Add
	   support for drawing a border along with the blank
	   button.  Accept border_width and vertical args.

	   (x_output_toolbar_button): Added support for drawing a
	   border along with the button.

	   (X_OUTPUT_BUTTONS_LOOP): Pass border_width and vert
	   args to x_draw_blank_toolbar_button.  Set vertical and
	   border_width fields in toolbar button.

	   (x_output_toolbar): Support toolbar border widths.

	   (x_toolbar_size_changed_in_frame_1): Mark all toolbar
	   buttons in the change toolbar as dirty so that they
	   are refreshed if had been painted over.

	   New function: x_toolbar_border_width_changed_in_frame.
	   Used it as a console method.

	* toolbar.c: New function: mark_frame_toolbar_buttons_dirty.

	   New function: toolbar_border_width_changed_in_frame.
	   Used it as a specifier frame slot change method.

	   (get_toolbar_coords): Factor the toolbar border
	   widths into the geometry calculations.

	   (Fset_default_toolbar_position): Update the fallback
	   border width specifiers for the affected toolbar
	   positions.

	   (specifier_vars_of_toolbar): Added specifiers for the
	   toolbar border widths.

	* toolbar.h: Added vertical and border_width field
	   to the toolbar button struct.

	* window.h: Added default_toolbar_border_width slot
	   to window struct, along with four slots for the four
	   window local toolbar border width values.

1997-11-16  Kyle Jones  <kyle_jones@wonderworks.com>

	* frame-x.c: Fixed typo in the documentation of the
	  top-toolbar-shadow-color frame property.

1997-11-16  Skip Montanaro  <skip@calendar.com>

	* redisplay.c: suppress buffer computation in several places if
	MULE is not defined.

1997-11-16  Hrvoje Niksic  <hniksic@srce.hr>

	* events.c (print_event): Use `event-x-pixel' and `event-y-pixel',
	to be consistent with `make-event' and `event-properties'.
	(Fmake_event): Allow nil dnd-data.

1997-11-15  Jonathan Harris  <jhar@tardis.ed.ac.uk>

	* console.h
	  mswindows is now a window-system according to
	  CONSOLE_TYPESYM_WIN_P

	* device.msw.c
	  Now calls init_baud_rate & init_one_device

	* msw-proc.c
	  Fixed C-key so key is returned unshifted

	* redisplay-msw.c
	  Modeline and vertical divider appearance tweaks


1997-11-14  SL Baur  <steve@altair.xemacs.org>

	* console.c (Fsuspend_emacs): Fix docstring.  Evaluating
	`suspend-hook' cannot stop suspension.

1997-11-14  Marc Paquette  <marcpa@cam.org>

	* callproc.c (Fcall_process_internal): Do CRLF -> LF
	conversion when reading process output.

1997-11-14  Hrvoje Niksic  <hniksic@srce.hr>

	* redisplay.c (init_redisplay): Handle not having DISPLAY and not
	having TTY support.

1997-11-14  Hrvoje Niksic  <hniksic@srce.hr>

	* events.c (Fmake_event): Support DND events.

1997-11-10  Hrvoje Niksic  <hniksic@srce.hr>

	* events.c (Fmake_event): Reenable the event creation code.
	(Fmake_event): Canonicalize the plist.

1997-11-13  SL Baur  <steve@altair.xemacs.org>

	* mule-charset.c (Fcharset_id): Typecast result to Lisp_Object.

	* mule-ccl.c (CCL_WRITE_STRING): Reorder parens to avoid compiler
	barf on Lisp_Object.
	(Fregister_ccl_program): Remove unused variable idx.

	* mule-canna.c: Fix declaration of mule_strlen().

	* mule-coding.h (ENCODE_SJIS): Parenthesize first two params to
	avoid compilation problems.

1997-11-13  Olivier Galibert  <olivier.galibert@mines.u-nancy.fr>

	* mule-charset.h: Added preliminary support for charset Ids.

	* mule-charset.c: Added preliminary support for charset Ids.

	* redisplay-msw.c (separate_textual_runs): Synched with FSF 20.2
	ccl API.

	* redisplay-x.c (separate_textual_runs): Synched with FSF 20.2 ccl
	API.

	* mule-coding.c: Synched with FSF 20.2 ccl API.

	* mule-coding.h: Moved ccl part to mule-ccl.h.

	* mule-ccl.c: Synched with FSF 20.2.

	* mule-ccl.h: New file.

Thu Nov 13 21:34:13 1997  Marc Paquette  <marcpa@cam.org>

	* nt.c (REG_ROOT): Use a registry key different that the one for
	NTEmacs.

1997-11-12  SL Baur  <steve@altair.xemacs.org>

	* lrecord.h: Fix typo in set_lheader_implementation.
	From: Robert Pluim <Robert_Pluim@BayNetworks.COM>

1997-11-13  Olivier Galibert  <galibert@renaissance.loria.fr>

	* configure.in:  Remove HAVE_TIMEZONE_DECL test.

1997-11-13  Olivier Galibert  <galibert@renaissance.loria.fr>

	* s/freebsd.h: Remove HAVE_TIMEZONE_DECL forced value.

	* config.h.in: Remove HAVE_TIMEZONE_DECL reference.

	* systime.h: Remove timezone conditional declaration.

1997-11-12  Kyle Jones  <kyle_jones@wonderworks.com>

	* console.c: Use symbol_value_forward_lheader_initializer
	  in various DEFVAR* macros.  Forgot this in previous
	  related patch.

	* lisp-disunion.h: Provide a no-op XUNMARK macro for
	  the GC error checking code even if GCMARKBITS is not
	  greater than 0.

	* lisp-union.h: Ditto.

1997-11-10  Hrvoje Niksic  <hniksic@srce.hr>

	* event-stream.c: Make echo_keystrokes a Lisp_Object.
	(maybe_echo_keys): Adapt to that.

1997-11-11  SL Baur  <steve@altair.xemacs.org>

	* eval.c (throw_or_bomb_out): Remove abort.
	Suggested by: Kyle Jones  <kyle_jones@wonderworks.com>

1997-11-11  Kyle Jones  <kyle_jones@wonderworks.com>

	* Added support for referencing lrecord_implementations
	  via an index in an lrecord_header rather than a raw
	  pointer.  Also added a mark bit and a pure bit.

	* alloc.c: Made lrecord_type_index() and
	   lrecord_implementations_table[] global, previously they
	   were static.  Used new XRECORD_LHEADER_IMPLEMENTATION
	   and LHEADER_IMPLEMENTATION macros to access
	   lrecord_implementations found in Lisp_Objects and
	   lrecord_headers instead of referencing ->implementation.

	   (gc_record_type_p): For USE_INDEXED_LRECORD_IMPLEMENTATION,
	   there's no need to check for equality to type or type + 1.
	   lrecords are no longer marked by incrementing the
	   implementation pointer.

	   (init_alloc_once_early): Initialized subr and
	   symbol_value_forward lrecord indexes early so that the
	   staticly defined subrs and symbol_value_forward object
	   indexes match the lrecord_implementations_table.

	* buffer.c: Used symbol_value_forward_lheader_initializer in
	   various DEFVAR* macros.  Used new XRECORD_LHEADER_IMPLEMENTATION
	   macro.

	* elhash.c: Used new XRECORD_LHEADER_IMPLEMENTATION
	   macro.

	* fns.c: Used new XRECORD_LHEADER_IMPLEMENTATION macro.

	* lisp.h: Defined subr_lheader_initializer macro, used it in
	   DEFUN macro.

	* lrecord.h: For USE_INDEXED_LRECORD_IMPLEMENTATION,
	   changed lrecord_header to contain an index into
	   lrecord_implementations_table[], plus a mark bit and a pure
	   bit.  Added support code for this.  Defined new
	   XRECORD_LHEADER_IMPLEMENTATION and LHEADER_IMPLEMENTATION
	   macros to be used to find the lrecord_implementation
	   of a Lisp_Object.

	* print.c: Used new XRECORD_LHEADER_IMPLEMENTATION and
	   LHEADER_IMPLEMENTATION macros.

	* symbols.c: Used symbol_value_forward_lheader_initializer in
	   definition of guts_of_unbound_marker.

	* symeval.h: Defined symbol_value_forward_lheader_initializer
	   macro.  Used symbol_value_forward_lheader_initializer in various
	   macros.  Used new XRECORD_LHEADER_IMPLEMENTATION macro.


1997-11-10  SL Baur  <steve@altair.xemacs.org>

	* window.c (set_window_pixsize): Remove unused variable.

	* extents.c (print_extent_1): Fix type check error in sprintf.

	* doc.c (Fsnarf_documentation): Remove unused label weird_function.

	* symsinit.h: Restore declaration of vars_of_dialog_x.

	* database.c (Fopen_database): Fix unused variable message.

	* sysdep.c (sys_subshell): vfork() is a demented, obsolete hack.

	* offix.c (struct): Make ImageData, MaskData be unsigned char *.

	* event-Xt.c (x_event_to_emacs_event): Clean up typecasting.
	* frame-x.c (Foffix_start_drag_internal): Ditto.

1997-11-09  Kyle Jones  <kyle_jones@wonderworks.com>

	* extents.c (print_extent_1): Use %lx instead of %p
	  to get the same output on all compilers.

1997-11-09  Hrvoje Niksic  <hniksic@srce.hr>

	* line-number.c: Use markers.

	* redisplay.c (window_line_number): Restored.

	* line-number.c (allocate_line_number_cache): Account for
	narrowing.
	(buffer_line_number): New function.

	* line-number.c (get_nearest_line_number): New function.
	(window_line_number): Use it.
	(narrow_line_number_cache): New function.
	(invalidate_line_number_cache): Ditto.
	(insert_invalidate_line_number_cache): Ditto.
	(delete_invalidate_line_number_cache): Ditto.
	(add_line_number): Ditto.

	* editfns.c (widen_buffer): Update line number cache.
	(Fnarrow_to_region): Ditto.
	(save_restriction_restore): Ditto.

	* insdel.c (buffer_insert_string_1): Invalidate cache for
	insertion.
	(buffer_delete_range): Invalidate cache for deletion.

	* line-number.c: New file.
	(window_line_number): Moved from redisplay.c.

	* print.c (debug_print): Print a carriage return, too.

	* bufslots.h: New slot `line_number_cache'.

1997-11-09  Kyle Jones  <kyle_jones@wonderworks.com>

	* event-stream.c: New Lisp variable:  last-command-event-time.

1997-11-08  SL Baur  <steve@altair.xemacs.org>

	* lread.c (init_lread): start from lisp, not lisp/prim.

	* Makefile.in.in: lisp/prim does exist any more.

1997-11-07  Kyle Jones  <kyle_jones@wonderworks.com>

	* abbrev.c (abbrev_lookup): Don't delete dash at the
	  abbrev start location; abbrev-prefix-mark no longer
	  inserts one.

Wed November 05 23:40:00 1997 <jhar@tardis.ed.ac.uk>

	* fileio.c: insert-file-contents-internal
	  Added a bodge to do CRLF->LF conversion of text files,
	  conditioned on DOS_NT. This is currently only one-way, so all
	  text files written by XEmacs will be UNIXified. CRLF conversion
	  is required to make bytecompile work.

	* Added file headers to:
	  console-w32.c, console-w32.h,
	  device-w32.c, event-w32.c, event-w32.h, frame-w32.c,
	  objects-w32.c, objects-w32.h, redisplay-w32.c, w32-proc.c

Sun November 01 12:00:00 1997 <jhar@tardis.ed.ac.uk>

	* redisplay-x.c: x_output_vertical_divider:
	  If HAVE_SCROLLBARS was not defined, coordinate of the right of
	  the divider was being used unitialised.

	* console.h: Added Qw32 and CONSOLE_W32* macros, conditioned on
	  HAVE_W32GUI.

	* emacs.c: Added calls to the following, conditioned on HAVE_W32GUI:
	  syms_of_*_w32, vars_of_*_w32, console_type_create_*w32.

	* event-stream.c: Conditioned on HAVE_W32GUI:
	  - vars_of_event_stream calls vars_of_event_w32.
	  - init_event_stream calls init_event_w32_late.

	* events-mod.h: Removed comment about having alternative making
	  MOD_* constants for different windowing systems.

	* events.c: Conditioned on HAVE_W32GUI:
	  - event-equal: Added case for w32 magic events.
	  - event-hash: Added case for w32 magic events.

	* events.h: Conditioned on HAVE_W32GUI:
	  Added struct underlying_w32_event to magic_data.

	* faces.c: complex_vars_of_faces
	  Added fallbacks for w32 faces, conditioned on HAVE_W32GUI.

	* frame.c: set-frame-properties
	  Added reference to default-w32-frame-plist to docstring.

	* general.c: Added new Lisp_Object Qw32 and defsymbol.

	* redisplay-output.c: redisplay_update_line
	  Conditioned reference to stupid_vertical_scrollbar_drag_hack on
	  HAVE_X_WINDOWS. This will need a proper fix when w32 gets
	  scrollbars.

	* redisplay-tty.c: init_tty_for_redisplay
	  Conditioned blocking and unblocking of SIGTTOU on !WIN32 because
	  these signals don't exist under win32.

	* redisplay.c: init_redisplay
	  Initialise window system to w32, conditioned on HAVE_W32GUI.

	* symsinit.h: Added syms_of_*_w32, vars_of_*_w32 and
	  init_event_w32_late.

	* sysdep.c: Conditioned various things on WIN32 in addition to
	  MSDOS.

	* New files:
	  console-w32.c, console-w32.h,
	  device-w32.c, event-w32.c, event-w32.h, frame-w32.c,
	  objects-w32.c, objects-w32.h, redisplay-w32.c, w32-proc.c

1997-11-07  Hrvoje Niksic  <hniksic@srce.hr>

	* doc.c (Fdocumentation_property): GCPRO doc.
	(Fsubstitute_command_keys): Disallow zero bsize.

1997-11-06  Hrvoje Niksic  <hniksic@srce.hr>

	* events.c (Fevent_modeline_position): Return nil if event is not
	over modeline, as the docstring says.

1997-11-05  Martin Buchholz <martin@xemacs.org>

	* s/aix3-1.h: Remove ^L character wich confuses AIX make.

1997-11-06  Tomasz Cholewo  <tjchol01@mecca.spd.louisville.edu>

	* event-stream.c (Fnext_command_event): Document keystroke echoing.

1997-11-06  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Ffeaturep): Use call1, to prevent stack thrashing with
	circular lists.
	- Update docstring.

1997-11-06  Kyle Jones  <kyle_jones@wonderworks.com>

	* frame-x.c (x_delete_frame): Removed code that
	  blocked the deletion of popup frames.  No need for it.

1997-11-05  SL Baur  <steve@altair.xemacs.org>

	* balloon_help.h: Replace <X11/Intrinsic.h> with "xintrinsic.h"
	* balloon_help.c: Ditto.
	* offix.h: Ditto.

	* mule-coding.c (coding_system_charset): Add prototype.

1997-11-04  Kazuyuki IENAGA  <ienaga@jsys.co.jp>

	* s/freebsd.h: Add HAVE_TIMEZONE_DECL.  Configure will fail at
	checking for the existence of `extern long timezone'.
	FreeBSD actualy has the `timezone', but due to its <time.h> and
	<sys/time.h>, it cannot be recognized by configure.

1997-11-03  Hrvoje Niksic  <hniksic@srce.hr>

	* data.c (Fsubr_interactive): New function.

1997-11-03  Kyle Jones  <kyle_jones@wonderworks.com>

	* frame.c (change_frame_size_1): Added explanatory
	  comment.

	* window.c (set_window_pixsize): Don't bail out
	  before looping over the major children if there is no
	  size change indicated.  The top and left coordinates
	  may need to be recomputed, e.g. in toolbar visibility
	  updates.

1997-11-02  Kyle Jones  <kyle_jones@wonderworks.com>

	* fileio.c (Ffile_truename): Make the errno == EACCES case
	  behave the same as errno == ENOENT.

1997-11-03  Kyle Jones  <kyle_jones@wonderworks.com>

	* frame.c (Fframe_property, Fframe_properties): Check
	  for minibuffer-onlyness of frame before checking whether
	  it has a minibuffer.  This makes the minibuffer property
	  value be reported as 'only when that is appropriate.  The
	  check order was reversed which resulted in minibuffer-only
	  frames having the minibuffer property reported as t.

1997-11-02  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* m/vax.h:
	* s/cxux.h:
	* s/xenix.h:
	* s/umax.h:
	* s/msdos.h:
	* s/template.h:
	* termcap.c:
	* signal.c:
	* lread.c:
	* callproc.c
	* buffer.c: Remove VMS dependent code.

1997-11-02  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* syspwd.h:
	* systty.h:
	* systime.h:
	* syssignal.h:
	* sysproc.h:
	* sysfloat.h:
	* sysfile.h:
	* regex.h:
	* process.h:
	* ndir.h:
	* mule-mcpath.h:
	* getpagesize.h:
	* sysdep.h:
	* fileio.c:
	* process.c: Remove old VMS code.

1997-11-02  SL Baur  <steve@altair.xemacs.org>

	* glyphs-x.c: Use <magick/magick.h> instead of <magick.h>

1997-11-02  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sysdep.c:
	* getloadavg.c:
	* malloc.c: Remove old VMS code.

1997-11-02  Hrvoje Niksic  <hniksic@srce.hr>

	* database.c (print_database): Don't use a static buffer to store
	file name.

	* dired.c (make_directory_hash_table): Ditto.

	* fileio.c (Ffile_truename): Use `make_ext_string' instead of
	`make_string'.

1997-11-01  Hrvoje Niksic  <hniksic@srce.hr>

	* database.c (CONCHECK_DATABASE): Define.

	* dired.c (Fdirectory_files): Use `make_ext_string' instead of
	`make_string', to avoid crashes under Mule.
	(file_name_completion): Use `make_ext_string'.

	* database.c (new_database): Renamed to `allocate_database', as
	per coding conventions.

1997-11-02  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* dired.c: Remove VMS dependent code.

1997-11-01  Kyle Jones  <kyle_jones@wonderworks.com>

	* buffer.h: Change XCHAR_OR_CHAR_INT to use XCHAR or
	  XINT as appropriate instead of using XREALINT.

	* regex.c (re_search_2): cast translate[*d] to
	  unsigned char when indexing fastmap to avoid sign
	  change when value has the 0x80 bit set.

1997-10-31  SL Baur  <steve@altair.xemacs.org>

	* linuxplay.c (audio_init): Update for newer Linux kernels.
	From Robert Bihlmeyer <robbe@orcus.priv.at>

1997-11-01  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Finsert_file_contents_internal): Fix misleading
	comment.

1997-10-31  Kyle Jones  <kyle_jones@wonderworks.com>

	* callproc.c: GC protect current_dir while infile and
	  error_file are being initialized.

1997-10-30  SL Baur  <steve@altair.xemacs.org>

	* config.h.in: Remove HAVE_GIF, HAVE_JPEG, HAVE_PNG, HAVE_TIFF and
	replace with HAVE_IMAGEMAGICK.

1997-10-30  Kyle Jones  <kyle_jones@wonderworks.com>

	* process.c (Fprocess_send_string): Protect against
	  SIGPIPE when flushing outstream.

1997-10-30  SL Baur  <steve@altair.xemacs.org>

	* input-method-xfs.c: Xlocale.h must be included after config.h.
	* input-method-motif.c: ditto.
	* input-method-xlib.c: ditto.

1997-10-28  Kyle Jones  <kyle_jones@wonderworks.com>

	* Under LRECORD_VECTOR, moved vectors from being an basic
	  lrecord tpye to an lcrecord.
	  Added support for 31 bits Lisp integers.
	  Added support for maskless pointers to Lisp objects.

	* alloc.c

	(allocate_lisp_storage): Use XSETOBJ instead of
	   XSETCONS to avoid tripping the ERROR_CHECK_TYPECHECK
	   code with uninitialized data.  XSETCONS used to work
	   until it became an lrecord type.

	   Removed sweep_vectors_1, all_vectors and other vector
	   specific GC related objects in the LRECORD_VECTOR
	   case, as they are unneeded now that lrecord-based
	   vectors are lcrecords.

	   Added `equal' methods for lrecord-based conses, vectors
	   and strings.  I was mistaken before; they are needed.

	(pure_cons): moved XSETCONS call to after the
	   set_lheader_implementation call, to avoid tripping the
	   type checking code on an uninitialized implementation
	   pointer.

	(make_pure_vector): moved XSETVECTOR call to after the
	   set_lheader_implementation call, to avoid tripping the
	   type checking code on an uninitialized implementation
	   pointer.

	(Fpurecopy): return if given a null pointer.  THis can
	   happen when initializing Qnil.

	(mark_object): return if passed a null pointer.  I
	   think this can happen when marking through some kind of
	   objects that contain Lisp_Objects and null pointers.

	(marked_p): Ditto

	* buffer.c

	(mark_buffer): Don't mark conses in the indirect children
	   list is said list is in fact a null pointer.  The
	   indirect children list gets reset to a null pointer
	   when a bfufer is killed.

	(complex_vars_of_buffer): initialize indirect_children
	   slow of Vbuffer_local_symbols and Vbuffer_defaults to
	   nil.

	* chartab.c

	(Fcheck_category_at): Don't use XREALINT to extract a
	   char from a Lisp_Object, use XCHAR instead.

	(Fchar_in_category): Ditto.

	* data.c

	(eq_with_ebola_notice): Use XCHAR_OR_INT instead of
	   XREALINT to extract data from a Lisp_Object that could
	   contain a charater or an integer.

	(make_int): use XSETINT in the USE_MINIMAL_TAGBITS
	   case.

	(make_char): use XSETINT in the USE_MINIMAL_TAGBITS
	   case.

	(Flsh): XUINT is gone; use XINT instead.

	* elhash.c

	(elisp_hvector_malloc): Use Qnull_pointer instead of
	   Qzero, as Qzero is no longer guaranteed to contain an
	   all-zero bit pattern.

	(make_lisp_hashtable): Ditto.

	(Fcopy_hashtable): Ditto.

	* emacsfns.h

	   Conditionalize the declaration of make_char() on
	   whether a make_char macro exists or not.

	* fns.c

	(internal_equal): Conditionalize existence of cons,
	   string and vector comparison code on whether they are
	   lrecord-based.

	(internal_old_equal): Ditto.

	* lisp-disunion.h

	   USE_MINIMAL_TAGBITS support.

	   31 bit Lisp integer support.

	   Conditionalized existence of markbit related macros on
	   the existence of a markbit in a Lisp_Object.  There are
	   no markbits in the USE_MINIMAL_TAGBITS implementation
	   of a Lisp_Object.

	   Replaced XUINT with XPNTRVAL.

	   Added declaration for Qnull_pointer.

	* lisp-union.h

	   USE_MINIMAL_TAGBITS support.

	   31 bit Lisp integer support.

	   Conditionalized existence of markbit related macros on
	   the existence of a markbit in a Lisp_Object.  There are
	   no markbits in the USE_MINIMAL_TAGBITS implementation
	   of a Lisp_Object.

	   Replaced XUINT with XPNTRVAL.

	   Added a make_char macro, similar to the make_int
	   macro, for use with the GCC-specific XMAKE_LISP hack.

	* lisp.h

	   USE_MINIMAL_TAGBITS support.

	   31 bit Lisp integer support.

	   Added GCMARKBITS macro to specify how many markbits a
	   Lisp_Object contains.

	   Support for lcrecord-based vectors.

	   Added XCHAR_OR_INT for accessing data in an object
	   that might contain either a character or an integer.

	   Made HACKEQ_UNSAFE use XCHAR_OR_INT instead of
	   XREALINT during its Ebola check.

	* print.c

	   Made the printing code undestand the split Lisp integer type.

	* symbols.c

	   Added declaration for Qnull_pointer.

1997-10-27  Martin Buchholz  <mrb@eng.sun.com>

	* m/ibmrs6000.h:
	* s/aix3-2.h: C_SWITCH_SYSTEM ==> configure.in
	* s/aix4-1.h: -li18n ==> configure.in
	* s/aix4.h: Always include strings.h
	* config.h.in: Add AIXV3 define, suggested by xmkmf. Remove
	AIX_SMT_EXP.
	* unexaix.c: Fix nested comments compiler warning

1997-10-27  Kyle Jones  <kyle_jones@wonderworks.com>

	* profile.c (sigprof_handler): Don't call XUNMARK on
	  fun, it isn't needed.

	* faces.c (face_property_matching_instance): Check
	  for charset == Qunbound, which it can be if the
	  character set is unspecified.

1997-10-27  SL Baur  <steve@altair.xemacs.org>

	* mule-wnnfns.c (vars_of_mule_wnn): Provide 'wnn feature.

	* mule-canna.c (vars_of_mule_canna): Provide 'CANNA feature.

1997-10-27  Kazuyuki IENAGA <ienaga@jsys.co.jp>

	* device-x.c (x_init_device): To avoid crazy menubars due to
	lack of suitable font loading.  Disabled locale based app-defaults
	loading when menubars=motif or menubars=lucid + xfs feature is not
	used.  Currently, the menubar resource has no effect for tty use.

1997-10-25  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* README: Remove references to VMS.

	* vlimit.h:
	* s/vms5-5.h:
	* s/vms4-4.h:
	* s/vms4-2.h:
	* s/vms4-0.h:
	* s/vms.h: Remove files since VMS isn't supported any more.

1997-10-25  Kyle Jones  <kyle_jones@wonderworks.com>

	* toolbar.h: Reduce MINIMUM_SHADOW_THICKNESS to 1.

1997-10-24  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* database.c: Added support for Berkeley DB 2.x.

1997-10-23  SL Baur  <steve@altair.xemacs.org>

	* alloc.c: Disable purespace statistics unless --debug is in
	effect.

	* console-stream.c (init_console_stream): At the price of a tiny
	memory leak, reinitialize FILE fields of the console.
	From Tonny Madsen <tma@nettest.dk>

	* emacs.c: New variable `inhibit_package_init'.
	(vars_of_emacs): Use it.
	(main_1): Initialize from command line.

	* Makefile.in.in (xemacs): Specify -vanilla when searching for
	shadows.

	* emacs.c: Remove VMS ifdefs.
	(standard_args): Added -no-packages, --no-packages.
	Added -vanilla, --vanilla.
	(Frun_emacs_from_temacs): Guard pure usage report with DEBUG_XEMACS
	(Fdump_emacs): Ditto.

1997-10-22  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Ffeaturep): Use `Fcar' with `or'.

1997-10-22  Kyle Jones  <kyle_jones@wonderworks.com>

	* alloc.c: drop the Lisp_Type_Record case clause
	  that I added to the switch statement in a previous
	  patch.  The string, vector and cons cases belong in
	  the `default' clause with the other lrecord types.

1997-10-22  Kyle Jones  <kyle_jones@wonderworks.com>

	* Added support for strings as lrecords.

	* lisp.h: #ifdef'd out Lisp_Type_String enum value
	   if LRECORD_STRING is defined.

	* alloc.c: Added allocation and garbage collection
	   code for lrecord-based strings.

	* print.c: move Lisp_String printing code to a
	   separate function so that it could be used as a
	   `print' method for lrecord-based strings.

1997-10-20  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* extents.c: Renamed shot property to initial-redisplay-function
	(extent_fragment_update): Changed the bookkeeping whether an event
	has been spawned. The initial-redisplay-function property is no
	longer set to nil.

	* extents.h: ditto

1997-10-20  Kyle Jones  <kyle_jones@wonderworks.com>

	* Added support for conses and vectors to be lrecords.

	* alloc.c: Modified allocation and GC code for
	   LRECORD_CONS and LRECORD_VECTOR support.  Moved some
	   macros to lrecord.h.

	* bytecode.c: Warning comment about LRECORD_CONS.

	* elhash.c: Let internal_hash handle vector hashing
	   if LRECORD_VECTOR is defined, just as it does when
	   LRECORD_VECTOR is not defined.  The code could have
	   been copied into an `hash' method function but I don't
	   see any point to it.  Added lrecord style marking code
	   to finish_marking_weak_hashtables.  Bracketed code
	   that groks the non-lrecord method of marking vectors
	   with #ifdefs.

	* fns.c: Let internal_equal and internal_old_equal
	   handle vector comparisons when LRECORD_VECTOR is
	   defined, just as it does when LRECORD_VECTOR is not
	   defined.  The code could have been copied into an
	   `equal' method function but I don't see any point to
	   it.

	* lisp.h: Added typecheck macros for LRECORD_CONS
	   support.  LRECORD_VECTOR macros were already present.

	* print.c: New functions print_cons and print_vector
	   for LRECORD_CONS and LRECORD_VECTOR support.
	   Some GC protection also added.

	* lrecord.h: Received some macros from alloc.c, so
	   that they could be used in lisp.h.

1997-10-20  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Ffeaturep): Handle `not' correctly.

	* lread.c (vars_of_lread): Use defsymbol for featurep.

1997-10-15  Olivier Galibert  <olivier.galibert@mines.u-nancy.fr>

	* s/irix5-0.h: Removed -G 0 from LD_SWITCH_SYSTEM. .sbss sections
	are supported since unexelfsgi.c upgrade.

1997-10-16  Kyle Jones  <kyle_jones@wonderworks.com>

	* lstream.c (Lstream_close): Don't return early if the
	  closer method reports failure.  Doing so caused GC and
	  memory corruption crashes.

1997-10-14  Hrvoje Niksic  <hniksic@srce.hr>

	* extents.c (Fset_extent_property): Allow `keymap' property to be
	set to nil.

1997-10-15  SL Baur  <steve@altair.xemacs.org>

	* mule-coding.c (acceptable_control_char_p): Add C-_ for info.
	(detect_coding_iso2022): Ditto.
	From SENDA Shigeya  <senda@ic.rdc.ricoh.co.jp>

1997-10-09  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* mule-coding.c (make-coding-system, detect-coding-region): Modify
	DOC-string because of renaming `automatic-conversion' ->
	`undecided' to sync with Emacs 20.2.

	(make-coding-system, coding-system-type, detect-coding-region):
	Rename `Qautomatic_conversion' -> `Qundecided'.

	* general.c (syms_of_general): Rename `automatic-conversion' ->
	`undecided' to sync with Emacs 20.2.

	* emacsfns.h, event-Xt.c (x_to_emacs_keysym): Rename
	`Qautomatic_conversion' -> `Qundecided'.

	* buffer.c (buffer-file-coding-system): Modify DOC-string because
	of renaming `automatic-conversion' -> `undecided' to sync with
	Emacs 20.2.

1997-10-15  Olivier Galibert  <olivier.galibert@mines.u-nancy.fr>

	* lisp.h (MANY): Bump SUBR_MAX_ARGS to 12 and add corresponding
	DEFUN_n macros.

1997-10-13  Stephen J. Turnbull  <turnbull@sk.tsukuba.ac.jp>

	* console-tty.c: Include gpmevent.h
	* gpmevent.c (connect_to_gpm): change to void
	* gpmevent.h: Ditto.

1997-10-13  Kyle Jones  <kyle_jones@wonderworks.com>

	* lisp-disunion.h (XSETOBJ): cast Lisp type enum to
	  an EMACS_UINT quantity to avoid a compiler warning about
	  integer overflow when the most significat bit of the
	  type tag is shifted into the sign bit position of an
	  EMACS_INT.

1997-10-12  SL Baur  <steve@altair.xemacs.org>

	* s/freebsd.h: Add X11 guard for building without X11.
	From Hrvoje Niksic <hniksic@srce.hr>

1997-10-12  Kyle Jones  <kyle_jones@wonderworks.com>

	* doprnt.c (emacs_doprnt_1): if forwarded field width
	  is negative, set minus_flag and make the field width
	  positive.  Makes (format "%*s" -10 "abc") work like
	  (format "%-*s" 10 "abc").

1997-10-12  SL Baur  <steve@altair.xemacs.org>

	* unexsol2.c (unexec): CONST isn't defined here.
	From Adrian Aichner <aichner@ecf.teradyne.com>

1997-10-11  SL Baur  <steve@altair.xemacs.org>

	* realpath.c (realpath): CONST IS LOSING but removing it conflicts
	with system headers.

	* callproc.c: New variable infopath-internal.
	(complex_vars_of_callproc): Declare and initialized it.

	* paths.h.in: New variable PATH_INFOPATH.

1997-10-10  Martin Buchholz  <mrb@eng.sun.com>

	* systty.h:
	  - change Xemacs --> XEmacs

	* buffer.c:
	* editfns.c:
	* msdos.c:
	  - Remove bogus FSF-origin \n\ sequences.

1997-10-09  Kyle Jones  <kyle_jones@wonderworks.com>

	* doprnt.c (parse_doprnt_spec): parse `*' field width
	  and precision specs and set up spec forwarding.

	* doprnt.c (emacs_doprnt_1): implement `*' by
	  forwarding flags, precision and field width data from a
	  spec to a subsequent spec.

	* editfns.c: document new `*' field width and
	  precision spec.

1997-10-09  SL Baur  <steve@altair.xemacs.org>

	* database.c (Fclose_database): Rename C function.
	(Fdatabase_last_error): Ditto.
	(Fopen_database): Ditto.
	(Fput_database): Ditto.
	(Fremove_database): Ditto.
	(Fget_database): Ditto.
	(syms_of_dbm): Reflect above changes.
	From Martin Buchholz <mrb@Eng.Sun.COM>

1997-10-08  Hrvoje Niksic  <hniksic@srce.hr>

	* events.c (Fmake_event): Allow only frames as channel.

1997-10-07  Hrvoje Niksic  <hniksic@srce.hr>

	* extents.c (print_extent_1): Fixed typo.

1997-10-07  Kyle Jones  <kyle_jones@wonderworks.com>

	* insdel.c (buffer_replace_char): if doing delete/insert
	  because of characters with deiffering byte lengths,move
	  point forward with the insertion if it was moved backwrad
	  to equal the insertion point by the earlier deletion.

1997-10-06  SL Baur  <steve@altair.xemacs.org>

	* window.c (Fset_window_dedicated_p): register -> REGISTER.

	* unexalpha.c (update_dynamic_symbols): register-> REGISTER.

	* sysdep.c: Global change: register -> REGISTER.

	* strcat.c (strcat): register -> REGISTER.

	* search.c: Global change: register -> REGISTER.

	* regex.c: Global change: register -> REGISTER.
	- Ensure REGISTER is always defined.

	* nt.c: Global change: register -> REGISTER.

	* linuxplay.c: Global change: register -> REGISTER.

	* input-method-xlib.c (best_style): register -> REGISTER.

	* gifalloc.c: Global change: register -> REGISTER.
	- Ensure REGISTER is always defined.

	* getloadavg.c (getloadavg): register -> REGISTER.

	* eval.c (unwind_to_catch): [Unused variable] register -> REGISTER.

	* cmds.c (Fpoint_at_bol): register -> REGISTER.

	* chartab.c (check_category_char): register -> REGISTER.

	* buffer.c (assoc_ignore_text_properties): [Unused function]
	register -> REGISTER.

	* alloca.c: Global change: register -> REGISTER.

	* xmu.h (XmuCopyISOLatin1Lowered): Global change: const -> CONST.

	* gif_lib.h: Global change: const -> CONST.

	* balloon_help.h (balloon_help_move_to_pointer): const -> CONST.

	* xmu.c: Global change: const -> CONST.

	* unexsol2.c (unexec): const -> CONST.

	* unexhp9k3.c (unexec_error): const -> CONST.

	* unexfreebsd.c (unexec_error): const -> CONST.

	* sunOS-fix.c (mbstowcs): const-> CONST.
	(wcstombs): Ditto.

	* strcpy.c (strcpy): const -> CONST.

	* strcmp.c: Global change: const -> CONST.

	* strcat.c (strcat): const -> CONST.

	* realpath.c (realpath): const -> CONST.

	* keymap.c (where_is_recursive_mapper): const -> CONST.

	* extents.c (extent_priority_sort_function): const -> CONST.

	* dgif_lib.c (DGifOpenFileName): const -> CONST.

	* balloon_help.c: Global change: const -> CONST.

1997-10-03  SL Baur  <steve@altair.xemacs.org>

	* lisp.h: Nuke register declarations.

1997-10-03  Karl M. Hegbloom  <karlheg@inetarena.com>

	* window.c (Frecenter): Correct variable names in docstring.

1997-10-03  Karl M. Hegbloom  <karlheg@inetarena.com>

	* fns.c: Add some cross references between destructive and
	non-destructive versions of similar functions.

Fri Oct  3 12:28:08 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* lisp-disunion.h: Move markbit to be between the
	  type bits and the value bits.  Previously it was always
	  the sign bit of a EMACS_INT, unless modified by a
	  #define in a machine dependent .h file.

1997-10-02  Hrvoje Niksic  <hniksic@srce.hr>

	* profile.c (Fclear_profiling_info): Made interactive.

1997-10-02  SL Baur  <steve@altair.xemacs.org>

	* glyphs-x.c (USE_TEMP_FILES_FOR_PNG_IMAGES): Move outside of
	HAVE_JPEG ifdef.

1997-10-01  SL Baur  <steve@altair.xemacs.org>

	* lisp.h (min): Fully parenthize.
	(max): Ditto.

	* Makefile.in.in (widget.o): Insert dependencies.
	- Insert HAVE_OFFIX_DND dependencies.

	* casefiddle.c (casify_object): Back out bogus undocumented patch
	from 20.3-beta18.

1997-09-30  SL Baur  <steve@altair.xemacs.org>

	* events.c (Fevent_type): Add OffiX guard.
	(command_event_p): Ditto.
	(mark_event): Ditto.
	(print_event): Ditto.

1997-09-30  SL Baur  <steve@altair.xemacs.org>

	* mule-canna.c (Fcanna_set_bunsetsu): Return a value.
	(Fcanna_parse): Remove unused variables `ks' and `ksv'.
	(Fcanna_henkan_begin): Remove unused variable `res'.
	(Fcanna_henkan_next): Remove unused variable `nbun'.
	(count_char): Change return type to void.

	* event-Xt.c (x_event_to_emacs_event): Remove unused variable
	`event-size'.

	* menubar.c (Fnormalize_menu_item_name): Remove unused variable
	`res'.

	* redisplay-x.c (x_flash): Reorganize test to prefer select over
	poll.

	* xselect.c (Fx_store_cutbuffer_internal): Remove unused variable
	`encoding'.

1997-09-30  Hrvoje Niksic  <hniksic@srce.hr>

	* frame.c (Fmake_frame): Call `custom-initialize-frame'.

1997-09-24  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* mule-coding.c: Rename `pathname-coding-system' to
	`file-name-coding-system' to sync with Emacs 20.2.

1997-09-26  Hrvoje Niksic  <hniksic@srce.hr>

	* window.c (saved_window_equal): Ditto.

	* process.c (Fget_process): Use internal_equal.

	* lread.c (build_load_history): Use internal_equal.
	(build_load_history): Use XCAR/XCDR where safe.

	* events.c (event_equal): Ditto.

	* event-stream.c (Fdispatch_event): Ditto.

	* elhash.c (lisp_object_eql_equal): Ditto.
	(lisp_object_equal_equal): Ditto.

	* device.c (find_device_of_type): Ditto.

	* console.c (find_console_of_type): Ditto.

	* console-tty.c (tty_init_console): Ditto.

	* console-stream.c (stream_init_console): Use internal_equal.
	(stream_canonicalize_console_connection): Ditto.

	* fns.c (Fmember): Use internal_equal, to avoid a necessary
	funcall and NILP check.
	(Fold_member): Ditto for internal_old_equal.
	(Fassoc): Use XCAR when we know we deal with a cons.  Use
	internal_equal.  Removed tem.
	(Fold_assoc): Ditto.
	(Fassq): Use XCAR.
	(Frassoc): Use internal_equal; remove tem.
	(Fold_rassoc): Ditto for internal_old_equal.
	(Frassq): Use XCDR with what we know is a cons.
	(Fold_rassq): Ditto.
	(Fdelete): Use internal_equal.
	(Fold_delete): Ditto for internal_old_equal.
	(Fremassoc): Use internal_equal; use XCAR/XCDR with what we know
	is a cons.
	(Fremrassoc): Ditto.

	* dired.c (Fdirectory_files): Nreverse the list only if it will be
	sorted.

Fri Sep 26 13:55:28 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* faces.c (update_face_cachel_data): Don't allow the
	  background pixmap of the default face to override the
	  background of a face if that color has been specified.

1997-09-26  Hrvoje Niksic  <hniksic@srce.hr>

	* dired.c (close_directory_fd): New function.
	(Fdirectory_files): Use it to set up an unwind-protection to close
	the descriptor.
	(Fdirectory_files): Allow QUIT in re_search.
	(Fdirectory_files): If the file is too big, allocate necessary
	data with malloc.
	(Fdirectory_files): Use simple Fcons to build the list.
	(close_directory_fd): Free the opaque pointer.

1997-09-25  Hrvoje Niksic  <hniksic@srce.hr>

	* extents.c (Fset_extent_properties): New function.

1997-09-24  SL Baur  <steve@altair.xemacs.org>

	* dired.c (Fdirectory_files): Remove broken VMS stuff.
	(file_name_completion_stat): Ditto.
	(file_name_completion): Ditto.
	(Top Level):  Ditto.
	(syms_of_dired): Ditto.

1997-09-25  Hrvoje Niksic  <hniksic@srce.hr>

	* widget.c (Fwidget_apply): Don't GCPRO result of Fwidget_get.

1997-09-24  SL Baur  <steve@altair.xemacs.org>

	* symsinit.h: Declare syms_of_widget.

	* emacsfns.h: Declare Fchar_syntax.

	* bytecode.c (Fbyte_code): Call Fchar_syntax for the Bchar_syntax
	bytecode.

	* syntax.c (Fchar_syntax): convert nil input to \000 for
	compatibility.

	* alloc.c (report_pure_usage): Increase slop to 512 bytes in betas
	and reduce it to 4 bytes in releases.

1997-09-23  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (objs): Add new C file widget.o.

1997-09-22  SL Baur  <steve@altair.xemacs.org>

	* editfns.c (vars_of_editfns): New feature 'ampersand-full-name
	declared if AMPERSAND_FULL_NAME configuration option is enabled.

	* callproc.c (vars_of_callproc): Update docstring of `data-directory'.

Sun Sep 21 14:14:44 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* lisp.h: underspecify lisp_fn_t function prototype
	  to avoid compiler errors in inline_funcall_subr().

	* eval.c (Fprogn): Walk forms list with XCDR, access
	  with XCAR.  Check forms list CONSP, so that XCDR and XCAR are
	  safe.

	* eval.c (Fsetq): replace Flength call with for-loop
	  to compute list length.  Walk arg list with XCDR,
	  access with XCAR.  Check arg list with CONSP, so that
	  XCDR and XCAR are safe.

	* eval.c: New macro inline_funcall_subr, an inline
	  version of funcall_subr + primitive_funcall.

	* eval.c (Feval): replace Flength call with for-loop
	  to compute list length.  Use XCAR and XCDR in some
	  places where it is safe to do so.  Use
	  inline_funcall_subr() in place of funcall_subr().

	* eval.c (funcall_recording_as): Use XCAR instead of
	  Fcar where it was safe.

	* eval.c (Fapply): replace Flength call with for-loop
	  to compute list length.

	* eval.c (apply_lambda):Use XCAR and XCDR in some
	  places where it is safe to do so.

	* eval.c (funcall_lambda):  Walk param list with XCDR, access
	  with XCAR.  Check param list CONSP, so that XCDR and XCAR are
	  safe.

	* symbols.c (find_symbol_value): return quickly if no
	  symbol magic is involved, to avoid the expensive call
	  to find_symbol_value_1.

	* symbols.c (store_symval_forwarding): don't call
	  reject_constant_symbols unless there is a chance a
	  constant symbol is involved.  This break the
	  encapsulation of the constants check, but symbol stores
	  are used heavily and speed is most important than
	  cleanliness in this case.

1997-09-21  Joel Peterson  <tarzan@aosi.com>

	* menubar.c (normalize-menu-item-name): New function.

1997-09-21  SL Baur  <steve@altair.xemacs.org>

	* keymap.c (get_relevant_extent_keymaps): Previous patch reversed.

1997-09-20  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (xemacs): Adoption of shadow.el to print
	load-path shadowings after successful dump.

1997-09-20  Hrvoje Niksic  <hniksic@srce.hr>

	* redisplay.c (scroll_conservatively): New variable.
	(redisplay_window): Use it.

1997-09-16  SL Baur  <steve@altair.xemacs.org>

	* events.c (Fmake_event): Add default case, remove unused variables.

1997-08-21  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* extents.c (extent_fragment_update): Trigger one_shot_function

	* extents.c (set-extent-one-shot-function): New function

	* extents.h (struct extent_auxiliary): Added one_shot_function

	* extens.c: Added  one_shot_function to assesor functions.

1997-09-14  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Fexpand_file_name): Don't treat "//" and "~/" in the
	middle of path specially.

1997-09-10  Hrvoje Niksic  <hniksic@srce.hr>

	* event-stream.c (inhibit_input_event_recording): New boolean
	variable.
	(Fnext_event): Use it.

1997-09-13  Hrvoje Niksic  <hniksic@srce.hr>

	* fns.c (Fmapc): Renamed from Fmapc_internal.

1997-09-10  Hrvoje Niksic  <hniksic@srce.hr>

	* database.c (Fmake_database): Expand FILE.

	* redisplay.c (window-system): Warn against using it.

1997-09-08  SL Baur  <steve@altair.xemacs.org>

	* emacs.c (PACKAGE_PATH): Reverse PACKAGE_PATH.
	Suggested by Colin Rafferty <craffert@ml.com>

1997-09-03  SL Baur  <steve@altair.xemacs.org>

	* print.c (print_internal): Special treatment for C-\.

1997-08-13  P E Jareth Hein  <jareth@camelot-soft.com>

	* insdel.c (buffer_delete_range): Changed the location where point
	was actually moved to after all other movement handling.  This
	prevents a MULE related crash in VALID_BYTIND.

1997-08-11  SL Baur  <steve@altair.xemacs.org>

	* doc.c (Fsnarf_documentation): Semi-clarify types of weird
	functions.

1997-08-05  Jens-Ulrik Holger Petersen  <petersen@kurims.kyoto-u.ac.jp>

	* eval.c (vars_of_eval): Updated docstring for `debug_on_error' to
	mention `debug-ignored-errors'.

1997-08-01  SL Baur  <steve@altair.xemacs.org>

	* emacsfns.h: Fix declaration.

	* event-stream.c (syms_of_event_stream): HAVE_MENUBARS not
	HAVE_MENUBAR.

1997-07-31  SL Baur  <steve@altair.xemacs.org>

	* frame-x.c (x_offix_drop_event_handler): Use stderr_out instead
	of fprintf.

	* mule-coding.c (parse_iso2022_esc): Add abort() trap on unhandled
	condition.

	* mule-wnnfns.c (Fwnn_dict_search): Remove unused variable.
	(Fwnn_hindo_update): Ditto.
	(Fwnn_inspect): Ditto.
	(Fwnn_bunsetu_henkou): Ditto.

	* eval.c (call_with_suspended_errors): Fix Gcc warning:
	argument `retval' might be clobbered by `longjmp' or `vfork'

1997-07-30  SL Baur  <steve@altair.xemacs.org>

	* redisplay.c: `window-system' isn't going away any time soon.

1997-07-29  SL Baur  <steve@altair.xemacs.org>

	* callint.c (Fcall_interactively): Allow floating point numbers
	for `n' and `N' interactive specs.

1997-07-27  SL Baur  <steve@altair.xemacs.org>

	* event-stream.c (command_builder_find_leaf): Fix typo in
	HAVE_MENUBARS.

	* gui-x.c (popup_selection_callback): Fix typo in HAVE_MENUBARS.

	* event-stream.c (syms_of_event_stream): accelerate_menu needed
	guards.

	* emacs.c (vars_of_emacs): Main default package directory is now
	${prefix}/lib/xemacs/packages.

1997-07-25  David Moore  <dmoore@ucsd.edu>

	* alloc.c (Fmake_byte_code): GC protect newly allocated function
	when looking up filename.

1997-07-25  SL Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: Added support for linking with dmalloc.

1997-07-25  P E Jareth Hein  <jareth@camelot-soft.com>

	* xselect.c (x_atom_to_symbol): Fixed a memory corruption bug
	where a possibly MULEified string was getting freed before use.

1997-07-21  SL Baur  <steve@altair.xemacs.org>

	* callproc.c: New variable Vdata_directory_list.
	* emacsfns.h: Declare it.

	* fns.c (Frequire): Undo previous change.

	* print.c (print_internal): Handle circular objects like Emacs
	handles them (and as documented in the Lispref).

	* database.c (Fputdatabase): Complain when `val' is not a string.

	* event-stream.c (command_builder_find_leaf): Guard menubar
	accelerator stuffs with HAVE_MENUBAR.
	* gui-x.c (popup_selection_callback): Ditto.

1997-07-20  SL Baur  <steve@altair.xemacs.org>

	* event-stream.c (menu_move_up): Guard menubar accelerator code
	with HAVE_MENUBARS.

	* emacs.c (decode_path): New function, derived from latter portion
	of decode_env_path.
	(decode_env_path): Break out the naughty bits -- shouldn't do
	getenv and separator parsing in one function.
	New variable Vpackage_path.
	(vars_of_emacs): Use it.

	* editfns.c (Fstring_to_char): Return nil instead of `0' for empty
	string.

1997-07-10  Hrvoje Niksic  <hniksic@srce.hr>

	* fileio.c (Finsert_file_contents_internal): Handle non-regular
	files.

1997-07-12  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (LOCK_OBJ): Only include filelock.[co] when
	CLASH_DETECTION is defined.

1997-07-11  Steven L Baur  <steve@altair.xemacs.org>

	* emacs.c (main_1): Spelling fix.

1997-07-10  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (dump-elcs): Shouldn't use SATISFIED hack.
	(xemacs-no-site-file): Not supported any more.
	(binary): New dependency for dumping XEmacs.
	(xemacs): Attempt to be a little smarter about not dumping a new
	XEmacs if it is not needed.
	(temacs): Remove `xemacs' after success.

1997-07-09  Hrvoje Niksic  <hniksic@srce.hr>

	* extents.c: Allow non-symbol properties of extents.

1997-07-08  Hrvoje Niksic  <hniksic@srce.hr>

	* data.c (Fstring_to_number): Use `check_int_range'.
	(Fstring_to_number): Would bug out on wrong type check.

1997-07-07  Steven L Baur  <steve@altair.xemacs.org>

	* data.c (Fcompiled_function_doc_string): Implement correctly.
	Was forgotten cut & paste identical clone to
	Fcompiled_function_interactive?

	* Makefile.in.in (alloc.o): Remove dependency on puresize_adjust.h
	so alloc.c need not be recompiled when puresize changes.

	* alloc.c (PURIFIED): Use get_PURESIZE() instead of constant.
	(check_purespace): Ditto.
	(alloc_pure_lrecord): Ditto.
	(report_pure_usage): Ditto.
	(disksave_object_finalization): Ditto.
	(report_pure_usage): Modify message reported when Build is
	restarted due to change in PURESIZE_ADJUSTMENT.

	* puresize.h: Remove dependency on puresize_adjust.h.
	(get_PURESIZE): New function -- declare it.

	* pure.c: Move final PURESIZE computation and include of
	puresize_adjust.h into here so alloc.c need not be recompiled each
	time the puresize is adjusted.
	(get_PURESIZE): New function.

1997-07-06  Steven L Baur  <steve@altair.xemacs.org>

	* data.c (Fstring_to_number): Wrong parameter was being checked.

	* emacs.c (vars_of_emacs): Fprovide the system type as a feature.

1997-07-03  Steven L Baur  <steve@altair.xemacs.org>

	* data.c (Fstring_to_number): Fix typo.  base isn't an integer.

1997-07-01  Steven L Baur  <steve@altair.xemacs.org>

	* data.c, emacsfns.h:  This is the port of GNU Emacs capability.
	I am still not sure what this buys us, but I guess it doesn't hurt
	to have it.
	From Hrvoje Niksic <hniksic@srce.hr>

	* glyphs.c (make_string_from_file): Use
	insert-file-contents-literally instead of
	insert-file-contents-internal.

1997-06-30  Steven L Baur  <steve@altair.xemacs.org>

	* fns.c (check_losing_bytecode): Correct reported version.

	* Makefile.in.in (${libsrc}DOC): Break up line length for stupid
	make programs.

1997-06-29  Steven L Baur  <steve@altair.xemacs.org>

	* emacsfns.h: Put void in prototype.
	Suggested by Ben Wing.

1997-07-01  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* glyphs.c (make_string_from_file): must protect from
	`format-alist'.

1997-06-28  Steven L Baur  <steve@altair.xemacs.org>

	* config.h.in: Back out previous change to LOSING_BYTECODE.  It's
	just not worth it.

1997-06-27  Mike Scheidler  <c23mts@eng.delcoelect.com>

	* s/sol2.h: Undefined _XOPEN_SOURCE for Solaris 2.4.

1997-06-28  Hrvoje Niksic  <hniksic@srce.hr>

	* abbrev.c (abbrev_match): New function.
	(abbrev_oblookup): New function.
	(obarray_has_blank_p): New function.
	(abbrev_count_case): New function.
	(Fexpand_abbrev): Use them.  Allow abbreviations to contain
	arbitrary characters.

1997-06-28  Steven L Baur  <steve@altair.xemacs.org>

	* config.h.in: LOSING_BYTECODE will not be compiled into XEmacs.

	* doc.c (Fsnarf_documentation): Remove VMS dependent stuff for
	cleanliness.

1997-06-28  Hrvoje Niksic  <hniksic@srce.hr>

	* print.c (Ferror_message_string): Simplify.

1997-06-27  Steven L Baur  <steve@altair.xemacs.org>

	* symbols.c (Fdefine_function): Correct docstring.
	(Fsetplist): Ditto.
	(Ffset): Ditto.
	(Fsetq_default): Ditto.

1997-06-27  Hrvoje Niksic  <hniksic@srce.hr>

	* eval.c (skip_debugger): Removed comment and #ifdef-ed code.
	(signal_call_debugger): Call skip_debugger after wants_debugger.
	(signal_call_debugger): Gcpro cons sent to skip_debugger.

1997-06-26  Steven L Baur  <steve@altair.xemacs.org>

	* process.c (create_process): Default to fork instead of vfork.

	* callproc.c (Fcall_process_internal): Default to fork instead of
	vfork.

	* emacsfns.h: Add declarations of Ferror_message_string(),
	Frunning_temacs_p().

	* eval.c: Remove declarations of Ferror_message_string(),
	Frunning_temacs_p().

	* Makefile.in.in (${libsrc}DOC): Correct dependency for the docfile.
	(${mo_dir}emacs.po): Remove obsolete references to lisp source.

1997-06-29  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* mule-charset.c: Modify charset DOC-strings to be more detailed.

1997-06-25  Steven L Baur  <steve@altair.xemacs.org>

	* alloc.c (Flist): Optimize.
	From Hrvoje Niksic.

1997-06-23  Steven L Baur  <steve@altair.xemacs.org>

	* lisp.h: Get uintptr_t stuffs because it is needed for including
	emacsfns.h.

	* sysdep.h: Removed uintptr_t stuffs.

1997-06-22  Steven L Baur  <steve@altair.xemacs.org>

	* fns.c (concat): Replace Fcar/Fcdr with XCAR/XCDR.
	(Fnreverse): Ditto.
	(internal_equal): Ditto.
	(internal_old_equal): Ditto.
	(Fnconc): Ditto.
	(Freverse): Saner implementation.
	From Hrvoje Niksic <hniksic@srce.hr>

	* s/linux.h: getpgrp with glibc is now properly detected by
	configure.
	Suggested by Andreas Jaeger <aj@arthur.rhein-neckar.de>

1997-06-20  Steven L Baur  <steve@altair.xemacs.org>

	* events.c: Remove declaration of Qempty.

1997-06-20  Olivier Galibert <Olivier.Galibert@mines.u-nancy.fr>

	* frame-x.c, EmacsFrame.c, menubar-x.c, redisplay-x.c,	scrollbar-x.c:
	Make 64 bit clean.

1997-06-19  Martin Buchholz  <mrb@eng.sun.com>

	* config.h.in:
	- Autodetect X defines using xmkmf.
	- Compute rpath on *bsd* systems as well.
	- rewrite PRINT_VAR m4 macro.
	- detect sizes of void* and long long for future use by unex*.c
	* regex.c: _GNU_SOURCE may be defined by config.h; don't redefine.

1997-06-18  Martin Buchholz  <mrb@eng.sun.com>

	* Makefile.in:
	* s/*.h:
	* m/*.h:
	* config.h.in:
	* emacs.c:
	* version.sh:
	* configure.in: Another rewrite.
	- support powerpcle (Solaris on ppc)
	- Now just have one s/sol2.h for all Solaris versions
	- Specifying colon-separated directories actually works now.
	- OS_RELEASE is a new define to avoid proliferation of s&m files.
	- extract more stuff from s&m files.
	- more debugging info
	- More changes to avoid the `echo -e' problem
	- Add more tests: fcntl.h AC_TYPE_*, AC_FUNC_GETPGRP
	- Back out -lPW test.
	- More paranoid xpm test
	- Put version information in version.sh instead of version.el
	- Make quoted pre-processor string tokens out of all macro values
	  to be used only by configure.
	* xmu.c: DON'T use Xos.h
	* sysdep.c (wait_for_termination):
	* search.c:
	* editfns.c:
	* console-*:

1997-06-18  Steven L Baur  <steve@altair.xemacs.org>

	* unexelfsgi.c: Some things that Needed To Be Done(tm) into
	unexelfsgi:
	- support for .sbss section (no more -G 0 needed, 0.00001% speed
	increase)
	- support for Elf64 (64bits executables)
	From Olivier Galibert <Olivier.Galibert@mines.u-nancy.fr>

	* fns.c (Fmapvector): New function converted from Lisp.
	From Hrvoje Niksic  <hniksic@srce.hr>

Wed Jun 18 16:42:10 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: Convert two missed C style comments.
	(LIBES): Remove LIBS_DEBUG which is no longer defined.
	(LIBES): lwlibs_libs was misspelled.

1997-06-17  Hrvoje Niksic  <hniksic@srce.hr>

	* eval.c (vars_of_eval): New variable Vdebug_ignored_errors.
	(skip_debugger): New function; use Vdebug_ignored_errors.
	(signal_call_debugger): Use it.

1997-06-17  Steven L Baur  <steve@altair.xemacs.org>

	* emacs.c (vars_of_emacs): Moved symbols emacs-version,
	emacs-major-version, and emacs-minor-version from version.el to
	here.

	* general.c (syms_of_general): New symbols and, not, and or.

	* emacsfns.h: New symbols Qand, Qnot, Qor.

	* Makefile.in.in: Call temacs to compute lisp libraries to
	include in the DOC file.

1997-06-15  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (lisp): Remove explicit mention of auto-autoloads.el.

Sat Jun 14 21:55:27 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* console.c (Fselect_console):
	  Check DEVICE_SELECTED_FRAME of console's selected
	  device for non-nil value before using it as a frame.

1997-06-13  Steven L Baur  <steve@altair.xemacs.org>

	* data.c (eq_with_ebola_notice): Remove horrible hack to avoid
	unavoidable Ebola notices in the bytecompiler.

	* emacsfns.h: Fextent_in_region_p: Move.

	* keymap.c Fextent_in_region_p: Move.

Fri Jun 13 00:38:29 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* console.c (Fsuspend_console):
	  Disable input on ttys.  Hide unhidden frames.

	* console.c (Fresume_console):
	  Enable input on ttys.  Raise the device selected frame.

Fri Jun 13 00:25:46 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* process.c (status_notify):
	  Revert back to the code that does not use
	  save_excursion_restore.  Just bounds check opoint
	  instead.

	* process.c (read_process_output):
	  Bounds check saved clip region and point values for
	  validity before using them.  Call Fwiden before calling
	  Fnarrow_to_region to insure values will not be out of
	  range.

1997-06-12  Steven L Baur  <steve@altair.xemacs.org>

	* alloc.c: Make the GC cursor appear on all frames.
	From Hrvoje Niksic  <hniksic@srce.hr>

1997-06-11  Steven L Baur  <steve@altair.xemacs.org>

	* data.c (eq_with_ebola_notice): Add byte-optimize-logmumble and
	byte-compile-push-constant to list of ignored functions.

1997-06-11  Hrvoje Niksic  <hniksic@srce.hr>

	* bytecode.c (Bsave_current_buffer): Register.
	(Fbyte_code): Do action.

	* editfns.c (Fsave_current_buffer): New SUBR.

1997-06-11  Steven L Baur  <steve@altair.xemacs.org>

	* syntax.c (Fchar_syntax): Handle case of being passed nil.

	* data.c (eq_with_ebola_notice): Add more legitimate places in the
	bytecompiler that should not get Ebola notices.

Tue Jun 10 00:34:40 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* process.c (status_notify):
	  Use record_unwind_protect and save_excursion_restore to
	  handle the point and buffer restoration.  Cleaner.  Doesn't
	  crash the editor if before/after-change-functions change
	  things behind our back.

1997-06-10  Steven L Baur  <steve@altair.xemacs.org>

	* data.c (vars_of_data): Set Ebola warning backtrace limit to 16.
	(eq_with_ebola_notice): Bypass Ebola warnings for special
	bytecompiler functions where they are 100% spurioius.

1997-06-11  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* Makefile.in.in: Use lisp/mule/language/misc-lang.el instead of
	lisp/mule/ipa-hooks.el.

1997-06-10  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* Makefile.in.in: Use lisp/mule/language/thai.elc instead of
	lisp/mule/thai-hooks.elc.

1997-06-09  MORIOKA Tomohiko  <morioka@jaist.ac.jp>

	* Makefile.in.in: Use lisp/mule/language/chinese.el,
	lisp/mule/language/cyrillic.el, lisp/mule/language/european.el,
	lisp/mule/language/greek.el, lisp/mule/language/japanese.el and
	lisp/mule/language/korean.el instead of
	lisp/mule/chinese-hooks.el, lisp/mule/cyrillic-hooks.el,
	lisp/mule/european-hooks.el, lisp/mule/greek-hooks.el,
	lisp/mule/japanese-hooks.el and lisp/mule/korean-hooks.el.

1997-06-09  Steven L Baur  <steve@altair.xemacs.org>

	* keymap.c: Declare Fextent_in_region_p.

	* s/linux.h: Can't use ORDINARY_LINK in linux until usage of -lPW
	is determined more sensibly.

1997-06-09  Hrvoje Niksic <hniksic@srce.hr>

	* keydefs.c (get_relevant_extent_keymaps): Choose correct keymap
	at extent boundaries.

Mon Jun  9 19:35:19 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* redisplay.c (pixel_to_glyph_translation):
	  Fixed off by one error in computation of closest
	  position when mouse is in the frame's right-side
	  border area.

Sat Jun  7 22:07:41 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* frame.c (delete_frame_internal):
	  Calling Fselect_frame isn't sufficient to set the
	  frame device's selected frame if the frame we're
	  selecting is on a different device.  Call
	  set_device_selected_frame apprpriately in that case.
	  Also don't set the frame device's selected frame to a
	  frame that's on another device.

1997-06-09  Steven L Baur  <steve@altair.xemacs.org>

	* sysdep.c: MS Windows NT doesn't (yet) do child TTY processes.
	From David Hobley <davidh@wr.com.au>

Sat Jun  7 22:00:54 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* device-x.c (x_delete_device):
	  Add an EQ check so that we don't set Vdefault_x_device
	  back to the device we're deleting.

1997-06-05  Steven L Baur  <steve@altair.xemacs.org>

	* frame.c (Fmake_frame): Correct checking of first_frame_on_device.
	From Hrvoje Niksic <hniksic@srce.hr>

1997-06-04  Steven L Baur  <steve@altair.xemacs.org>

	* device.c (delete_deviceless_console): New function.
	(Fmake_device): Use it.  Fix problem of creation of a frame on a
	tty where something fails during initialization.
	From Kyle Jones <kyle_jones@wonderworks.com>

	* specifier.c (Fboolean_specifier_p): Correct spelling in
	Docstring (synch from Infodock 3.5).

	* frame.c: Update docstring.

1997-06-03  Hrvoje Niksic  <hniksic@srce.hr>

	* sysdep.c (tty_init_sys_modes_on_device): Initialize it.

	* console.c (complex_vars_of_console): New variable
	`tty-erase-char'.

	* conslots.h (MARKED_SLOT): New slot.

Mon Jun  2 02:49:44 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* frame.c, frame-tty.c
	  Treat tty frames like a cross between stacked window
	  system frames and frames on virtual displays.  All
	  frames but the top frame are visible but hidden by
	  default.  next-frame and previous-frame now skip
	  invisible tty frames by default.  raise-frame and
	  lower-frame now control whether a frame is hidden
	  instead of whether it is visible.  Frames are no
	  longer automatically raised when they are selected.
	  After a raise/lower operation selection of the new
	  topmost frame is deferred until a selection magic
	  event is read.

Sat May 31 19:59:49 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* frame-tty.c (tty_init_frame_3:
	  Defer selection of the newly created frame until
	  an event is read.

1997-06-02  Steven L Baur  <steve@altair.xemacs.org>

	* search.c (REGEXP_CACHE_SIZE): Bump to 20.
	Suggested by Karl M. Hegbloom <karlheg@inetarena.com>

1997-05-30  Steven L Baur  <steve@altair.xemacs.org>

	* device-tty.c (tty_asynch_device_change):
	* gpmevent.c (connect_to_gpm): Makes it so it doesn't **ck up the
	mouse stuff on an XTerm, and resets the internal GPM variables for
	the width and height of the screen when we get a sigwinch.
	From William M. Perry <wmperry@aventail.com>

1997-05-29  Steven L Baur  <steve@altair.xemacs.org>

	* eval.c (Fprogn): Delete mocklisp support.
	(Fwhile): Ditto.
	(Fcommandp): Ditto.
	(Feval): Ditto.
	(funcall_recording_as): Ditto.
	(funcall_lambda): Ditto.

	* elhash.c (verify_function): Delete mocklisp support.

	* doc.c (Fdocumentation): Delete mocklisp support.

	* data.c (wrong_type_argument): Delete mocklisp support.

	* config.h.in: Delete mocklisp support.

	* callint.c (Fcall_interactively): Delete mocklisp support.

	* emacs.c (main_1): Delete mocklisp initialization.

	* symsinit.h: Delete mocklisp.c decls.

	* Makefile.in.in: Delete mocklisp stuffs.

Thu May 29 03:00:16 1997  Kyle Jones  <kyle@crystal.wonderworks.com>

	* frame.c (change_frame_size_1):
	  Drop code that returns immediately if the old frame
	  size is equal to the new.
	  Leave the minibuffer height the same if the frame has
	  been initialized, and the minibuffer height is tall
	  enough to display at least one line of text in the default
	  font, and the old minibuffer height is a multiple of the
	  default font height.  This should cause the minibuffer
	  height to be recomputed on font changes but not for
	  other frame size changes, which seems reasonable.

1997-05-26  Steven L Baur  <steve@altair.xemacs.org>

	* event-stream.c (Frecent_keys): Take optional parameter to
	indicate how many keystrokes to return.
	(Frecent_keys_ring_size): New function returns the maximum number
	of events `recent-keys' can return.
	(Fset_recent_keys_ring_size): New function.  Modifies the above.

	From Hrvoje Niksic <hniksic@srce.hr>

	* event-stream.c: New variable recent_keys_ring_size replacing a
	hard-coded macro.

1997-05-23  Steven L Baur  <steve@altair.xemacs.org>
	From Hrvoje Niksic <hniksic@srce.hr>

	* sysdep.c: Correction of subprocess support when compiling
	without ttys.

1997-05-21  Steven L Baur  <steve@altair.xemacs.org>

	* editfns.c (format-time-string): Update DOCstring.  Make time
	parameter optional.

Wed May 21 11:58:17 1997  Kyle Jones  <kyle@crystal.wonderworks.com>

	* insdel.c (signal_first_change):
	  record the current buffer for the unwind instead of the
	  buffer that's about to become the current buffer.

Tue May 20 23:23:39 1997  Steven L Baur  <steve@altair.xemacs.org>

	* frame.c: Correct spelling typo in docstring.

Mon May 19 03:40:46 1997  Kyle Jones  <kyle@crystal.WonderWorks.COM>

	* redisplay.c: (window_line_number)
	  don't prefer buffer point value over window point
	  value unless window, frame, device and console are
	  all selected.

	* redisplay.c: (redisplay_window)
	  don't prefer buffer point value over window point
	  value unless window, frame, device and console are
	  all selected.

	* redisplay.c: (create_text_block)
	  don't prefer buffer point value over window point
	  value unless window, frame, device and console are
	  all selected.

Sun May 18 13:03:50 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (distclean): remove xemacs-version.h.

Sun May 11 13:38:46 1997  Kyle Jones  <kyle@crystal.WonderWorks.COM>

	* frame.c (change_frame_size_1):
	  return without doing anything if the frame has benn
	  initialized and the new frame size is same as the
	  current frame size.

Sat May 17 19:35:48 1997  Steven L Baur  <steve@altair.xemacs.org>

	* device-tty.c (tty_asynch_device_change): Make
	`no-redraw-on-reenter' work.  Patch from Hrvoje Niksic.

Sat May 17 23:39:03 1997  Hrvoje Niksic  <hniksic@srce.hr>

	* frame-tty.c: Support multiple frames.

	* redisplay.c (decode_mode_spec): New coding `%N'.

Sun May 11 23:36:08 1997  Steven L Baur  <steve@altair.xemacs.org>

	* buffer.c: Rename Vdelete_auto_save_files to coding standards.

	* frame.c: Rename Vallow_deletion_of_last_visible_frame to coding
	standards.

Thu May  8 19:10:03 1997  Steven L Baur  <steve@altair.xemacs.org>

	* frame.c: Change internal type of
	`allow-deletion-of-last-visible-frame' to boolean.

	* buffer.c: Change internal type of `delete-auto-save-files' to
	boolean.

Sat May  3 15:28:56 1997  Steven L Baur  <steve@altair.xemacs.org>

	* redisplay.c: `column-number-start-at-one' is a user customizable
	variable.

	* event-stream.c (vars_of_event_stream): `focus-follows-mouse' is
	a user customizable variable.

	* cmds.c (vars_of_cmds): `signal-error-on-buffer-boundary' is a
	user customizable variable.

	* lread.c (parse_integer): Fix incorrect upper bounds on loop.

Thu May  1 18:59:20 1997  Steven L Baur  <steve@altair.xemacs.org>

	* glyphs-x.c (Fmake_subwindow): Update error message.

Wed Apr 30 18:07:18 1997  Steven L Baur  <steve@altair.xemacs.org>

	* lread.c: New variable featurep.
	(read1): Add processing for #- and #+.
	(read_list_conser): Handle case where a feature test has removed a
	portion of the input stream.
	(vars_of_lread): New feature `xemacs'.

	* fns.c (Ffeaturep): Remove function when using #-, #+ feature
	reader syntax.

	* Makefile.in.in (lisp): Put features.elc in the dump list.

Thu May  1 05:24:25 1997  Hrvoje Niksic  <hniksic@srce.hr>

	* buffer.c (Fmake_indirect_buffer): Don't pretend it's there.

Fri Apr 25 10:53:07 1997  Steven L Baur  <steve@altair.xemacs.org>

	* glyphs-x.c: libpng already includes setjmp.h, so don't attempt
	to include it twice.

Thu Apr 24 09:14:13 1997  Steven L Baur  <steve@altair.xemacs.org>

	* balloon-x.c (vars_of_balloon_x): Don't override advertised and
	supported balloon-help.

Tue Apr 22 11:54:02 1997  Steven L Baur  <steve@altair.xemacs.org>

	* emacs.c (main_1): Add syms_of_balloon_x and guard with
	HAVE_X_WINDOWS.
	(main_1): Add vars_of_balloon_x and guard with HAVE_X_WINDOWS.

	* process.c (get_process): This function can be passed a BUFFER as
	a parameter.

Tue Apr 22 01:32:00 1997  Kyle Jones  <kyle@crystal.WonderWorks.COM>

	* menubar-x.c (pre_activate_hook):
	  set in_menu_callback around call to call to
	  menu_item_descriptor_to_widget_value.

	* event-stream.c (Fnext_event):
	  signal error if in_menu_callback non-nil to avoid
	  reentering the menubar code and causing a crash later.

	* cmdloop.c (command_loop_3):
	  signal error if in_menu_callback non-nil to avoid
	  inflooping calling Fnext_event, which will signal an
	  error if the situation is not caught earlier.

Tue Apr 22 08:22:22 1997  Hrvoje Niksic  <hniksic@srce.hr>

	* balloon-x.c, balloon_help.c, balloon_help.h: Modified to conform
	to XEmacs coding standards.

Thu Apr 17 17:16:34 1997  Steven L Baur  <steve@altair.xemacs.org>

	* balloon-x.c: New file from Douglas Keller.

	* balloon_help.c: New file from Douglas Keller.

	* balloon_help.h: New file from Douglas Keller.

Sun Apr 13 09:56:54 1997  Steven L Baur  <steve@altair.xemacs.org>

	* emacs.c (shut_down_emacs): Advertise using send-pr as the
	mechanism for submitting a bug report.

	* Makefile.in.in: Handle pathological case of mis-autodetected
	TOOLTALK.

Sun Apr 13 11:33:34 1997  David Moore  <dmoore@ucsd.edu>

	* regex.c (re_search_2): Prevent incorrect matching and infinite
	loop with \\` and MULE.

Sat Apr 12 05:57:51 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (lisp): Dump cus-start.elc with XEmacs.

	* event-Xt.c (x_to_emacs_keysym): Allow for dead keys.  (Patch
	from Joachim Schnitter).

	* Makefile.in.in: Allow native sound for BSD/I.

	* linuxplay.c: Rename global sndbuf to linuxplay_sndbuf.
	Make sndbuf, mix_fd, audio_vol, audio_fd, audio_dev non-static to
	avoid dump time lossage.
	(sndcnv8U_2mono): Rename global sndbuf to linuxplay_sndbuf.
	(sndcnv8S_2mono): Ditto.
	(sndcnv2monounsigned): Ditto.
	(sndcnv2unsigned): Ditto.
	(sndcnvULaw_2mono): Ditto.
	(sndcnv16_2monoLE): Ditto.
	(sndcnv16_2monoBE): Ditto.
	(sndcnv2byteLE): Ditto.
	(sndcnv2byteBE): Ditto.
	(sndcnv2monobyteLE): Ditto.
	(sndcnv2monobyteBE): Ditto.
	(linux_play_data_or_file): Ditto.
	(linux_play_data_or_file): Ditto.
	(linux_play_data_or_file): Ditto.

Sat Apr 12 01:59:14 1997  Kyle Jones  <kyle_jones@WonderWorks.COM>

	* glyphs-x.c, glyphs.c, glyphs.h: Added domain parameter to all
	  image *_instantiate functions so that the domsin is available to
	  specifier lookups in the various instantiator functions.  Passed
	  domain argument to extract_xpm_color_names for the
	  Fspecifier_instance call.

Fri Apr 11 20:02:40 1997  Steven L Baur  <steve@altair.xemacs.org>

	* glyphs-x.c (extract_xpm_color_names): Add checking to handle
	case for when XEmacs is in initialization.

	* events.c (Fevent_type): Remove handling for dead_event.
	(Fevent_properties): Remove handling for dead_event.

Thu Apr 10 20:41:53 1997  David Moore  <dmoore@ucsd.edu>

	* ntproc.c (sys_spawnve): Clean up GC protection.

	* fileio.c (Ffile_executable_p): Clean up GC protection.

Thu Apr 10 12:48:49 1997  Steven L Baur  <steve@altair.xemacs.org>

	* glyphs.c: Undo duplicate declaration of display_table.

	* glyphs.h: Back out name change of autodetect to
	automatic_conversion.

	* glyphs.c: Back out name change of autodetect to
	automatic_conversion.

	* glyphs-x.c (image_instantiator_format_create_glyphs_x): Back out
	name change of autodetect to automatic_conversion.

	* events.c (Fevent_properties): Do something sensible for
	dead_event and empty_event.

	* general.c: Restore autodetect symbol.

	* emacsfns.h: Declare new symbol Qempty.

	* general.c: Add symbol to identify empty events.

	* events.c (Fevent_type): Don't abort() when presented with an
	empty_event or a dead_event.

Mon Apr  7 18:12:26 1997  David Moore  <dmoore@ucsd.edu>

	* xmu.c: Renamed local `initialized' variable to `hex_initialized'
	and don't assign to static, as some compilers crash.
	(initHexTable): Use it.
	(XmuReadBitmapData): Use it.

Sun Apr  6 18:03:47 1997  David Moore  <dmoore@ucsd.edu>

	* fileio.c (Fexpand_file_name): Clean up GC protection.

	* dired.c (Fdirectory_files): Clean up GC protection.

	* insdel.c (signal_after_change): Don't run after_change_functions
	on special Vprin1_to_string_buffer.
	(signal_before_change): Ditto for before_change_functions.

Fri Apr  4 14:41:17 1997  David Moore  <dmoore@ucsd.edu>

	* buffer.c (Fkill_buffer): Don't kill special
	Vprin1_to_string_buffer.

Mon Apr  7 19:13:40 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (xemacs-version.h): Added to rename main_1 to
	something reflecting the XEmacs version in use (for lusers
	reporting crashes who forget to include the version number).

	* toolbar.c (specifier_vars_of_toolbar): Strip HAVE_NEXTSTEP.

	* sound.c: Strip HAVE_NEXTSTEP.

	* redisplay.c (init_redisplay): Strip HAVE_NEXTSTEP.

	* faces.c: Strip HAVE_NEXTSTEP.
	(update_EmacsFrame): Ditto.

	* events.c (event_equal): Strip HAVE_NEXTSTEP.
	(event_hash): Ditto.
	(format_event_object): Ditto.

	* event-stream.c (init_event_stream): Strip HAVE_NEXTSTEP.

	* emacs.c (main_1): Strip HAVE_NEXTSTEP.
	Attempt hack to change name of main_1 to something reflecting the
	current version for lusers who don't include version numbers with
	stack backtraces.

	* device.c: Strip HAVE_NEXTSTEP.

	* console.c (Fconsole_type): Remove reference to unimplemented ns
	windows type.

Sun Apr  6 08:08:33 1997  Steven L Baur  <steve@altair.xemacs.org>

	* frame.h: Strip NeXTStep stuff.

	* device.h: Strip NeXTStep stuff.

	* console.h: More NeXTStep trimming.

	* console-x.h: Strip Epoch stuff.

	* symsinit.h (init_sunpro): Strip vms/Epoch stuff.

	* events.h (union magic_data): Strip NeXTStep stuff.

	* console.h: Strip NeXTStep stuff.

	* config.h.in: Strip unimplemented NeXTStep/Epoch stuff out.

	* Makefile.in.in: Remove unused NeXTStep support.  It's all in the
	cvs attic if someone wishes to revive it.
	(epoch.o): Remove last vestiges of non-existent epoch support.

Sat Apr  5 17:16:49 1997  Steven L Baur  <steve@altair.xemacs.org>

	* fns.c: Correct DOC string to not equate integers and
	characters.

Thu Apr  3 08:01:50 1997  Steve Carney  <carney@gvc.dec.com>

	* s/decosf4.0-static.h: New file.

Tue Apr  1 12:22:32 1997  Steven L Baur  <steve@altair.xemacs.org>

	* config.h.in: MAIL_USE_POP, KERBEROS, HESIOD -- new parameters to
	deal with upgraded movemail.c.

Fri Mar 28 19:25:22 1997  Steven L Baur  <steve@altair.xemacs.org>

	* inline.c: Restore this blasphemous file.

	* Makefile.in.in (inline.o): Restore the bletcherous
	inline.c.

Tue Mar 25 11:36:08 1997  David Moore  <dmoore@ucsd.edu>

	* fileio.c (barf_or_query_if_file_exists): GC fixes.
	(Ffile_readable_p): ditto.
	(Ffile_writable_p): ditto.
	(Ffile_symlink_p): ditto.
	(Ffile_accessible_directory_p): ditto.

	* sound.c (Fplay_sound_file): Fix up gc problems with file
	handlers.

	* buffer.c (Fkill_buffer): Fix up buffer killing problems with
	file handlers.

	* sysdep.c (sys_subshell): Fix up gc problems with file handlers.

	* callproc.c (Fcall_process_internal): Fix up gc problems with
	file handlers.
Tue Mar 25 17:16:14 1997  Steven L Baur  <steve@altair.xemacs.org>

	* ralloc.c (MHASH): Make 64bit Alpha happier.

Tue Mar 25 11:36:08 1997  David Moore  <dmoore@ucsd.edu>

	* fileio.c (auto_save_expand_name_error): New function.
	(auto_save_expand_name): Ditto.
	(Fdo_auto_save): Protect against an error in Fexpand_file_name
	from kicking us inappropriately out of auto-save.

Mon Mar 24 21:50:13 1997  Steven L Baur  <steve@altair.xemacs.org>

	* s/linux.h (GETPGRP_NEEDS_ARG): Define if compiling with glibc
	2.1 (suggested by Andreas Jaeger).

Mon Mar 24 12:40:56 1997  David Moore  <dmoore@ucsd.edu>

	* profile.c: Fixed some comments about GC status of functions.

	* profile.c (inside_profiling): New variable to lock the
	profiling table.
	(sigprof_handler): Check it.
	(Fget_profiling_info): Set it.
	(mark_profiling_info): Set it.
	(Fclear_profiling_info): Set it.

	* eval.c (PUSH_BACKTRACE): New macro.
	(POP_BACKTRACE): Ditto.

	* eval.c (Fcommand_execute): Use them and fix problem with
	backtrace_list build ordering requirements for profiling code.
	(Feval): Ditto.
	(funcall_recording_as): Ditto.

Fri Mar 21 20:19:09 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: strip inline.o.

Fri Mar 21 18:54:04 1997  David Moore  <dmoore@ucsd.edu>

	* fileio.c (call2_check_string_or_nil): New function.
	(Ffile_name_directory): Use it.
	(Fsubstitute_in_file_name): Use it.

	* fileio.c (Fexpand_file_name): GC protect against file handlers.
	(Fdelete_file): ditto
	(Ffile_writable_p): ditto
	(Ffile_directory_p): ditto
	(Ffile_regular_p): ditto
	(Fset_file_modes): ditto
	(Ffile_newer_than_file_p): ditto
	(Fset_visited_file_modtime): ditto

	*fileio.c (Ffile_truename): Unnecessary GC protection.
	(Fdelete_directory): Fix broken caller-must-GC-protect call.

	* filelock.c (lock_file): New comments warning that this function
	may kill the current buffer.
	(unlock_file): ditto
	(Flock_buffer): ditto
	(Funlock_buffer): ditto
	(unlock_buffer): ditto

	* filelock.c (unlock_all_files): GC protect against unlock_file
	killing random buffers.

	* buffer.c (Fkill_buffer): GC protect against unlock_file killing
	the buffer.

	* insdel.c (prepare_to_modify_buffer): GC protect against
	lock_file() killing the buffer.

Fri Mar 21 19:11:15 1997  Steven L Baur  <steve@altair.xemacs.org>

	* mule-coding.c (vars_of_mule_coding): Add
	enable-multibyte-characters for MULE compatibility.

Thu Mar 20 13:25:26 1997  Steven L Baur  <steve@altair.xemacs.org>

	* glyphs-x.c: Implement a dummy function to insert a fake EOI
	marker if called.  Based on code from William Perry.

Wed Mar 19 10:49:05 1997  Steven L Baur  <steve@altair.xemacs.org>

	* menubar-x.c (pre_activate_callback): Attempt to avoid recursive
	expansion of submenus via :filter expansion.

	* glyphs-x.c (x_print_image_instance): Move define of
	HAVE_SUBWINDOWS to glyphs-x.h.
	(our_skip_input_data): Implement with some error checking based on
	patch by Dominic Froud.

	* glyphs-x.h (HAVE_SUBWINDOWS): Define to keep inline.c from
	barfing.

Tue Mar 18 11:15:23 1997  Steven L Baur  <steve@altair.xemacs.org>

	* glyphs-x.c: Strip unimplemented subwindows code.

Mon Mar 17 15:40:12 1997  David Moore  <dmoore@ucsd.edu>

	* glyphs-x.c (our_own_dgif_slurp_from_gif2x11_c): Only get the
	first image out of a multi-image or animated gif.

Mon Mar 17 15:27:26 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (xemacs): Invert sense of test for successful
	completion of XEmacs dump.

Sat Mar 15 14:21:39 1997  David Moore  <dmoore@ucsd.edu>

	* fileio.c (Fdo_auto_save): Protect against file handlers which
	may kill the buffer being saved or otherwise modify Vbuffer_alist.

Sat Mar 15 15:32:51 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (lisp): Add auto-customize.elc.

Fri Mar 14 19:10:37 1997  David Moore  <dmoore@ucsd.edu>

	* extents.c (extent_changed_for_redisplay): New parameter.
	(extent_changed_for_redisplay): Notify redisplay if invisible text
	has become visible.
	(extent_maybe_changed_for_redisplay): New parameter.
	(extent_attach): Use it.
	(extent_detach): Use it.
	(Fset_extent_parent): Use it.
	(set_extent_invisible): Use visibility change parameter.
	(Fset_extent_face): Ditto.
	(Fset_extent_mouse_face): Ditto.
	(set_extent_glyph): Ditto.
	(do_highlight): Ditto.

Thu Mar 13 10:40:37 1997  Steven L Baur  <steve@altair.xemacs.org>

	* s/sunos4-1-4-shr.h: New file.

	* s/sunos4-1-4.h: New file.

	* s/sunos4-1.h (BROKEN_SIGIO): Define.

Wed Mar 12 14:29:40 1997  Steven L Baur  <steve@altair.xemacs.org>

	* emacs.c (fatal_error_signal): (mostly) useless check on
	/usr/proc/bin/pstack removed.

	* s/bsdos3.h: New file for BSDI 3.0.

	* editfns.c (Fchar_equal): Correct DOC string.
	(Fchar_Equal): (char=) CL Case sensitve comparison added.

	* data.c (Fcharacterp): Make DOC string less confrontational.

Mon Mar 10 23:51:04 1997  Martin Buchholz  <mrb@eng.sun.com>

	* input-method-motif.c (XIM_init_frame): Fix XIM crash on some
	versions of X11R6 XIM.

Sun Mar  9 21:46:53 1997  Tomasz J. Cholewo  <t.cholewo@ieee.org>

	* minibuf.c (regexp_ignore_completion_p): Reverse meaning of
	completion-regexp-list.

Thu Mar  6 19:15:29 1997  Steven L Baur  <steve@altair.xemacs.org>

	* data.c (eq_with_ebola_notice): Unobfuscate Ebola warning!!!
	message.

Wed Mar  5 16:11:22 1997  Steven L Baur  <steve@altair.xemacs.org>

	* process.c (get_internet_address): Put upper bounds on attempting
	to get system name (similar to nearly identical processing in
	sysdep.c.

Tue Mar  4 17:30:48 1997  Steven L Baur  <steve@altair.xemacs.org>

	* puresize.h (PURESIZE): *Must* use angle brackets for
	puresize_adjust.h or build will lose with --srcdir.

	* alloc.c (report_pure_usage): Adjust error message printed when
	too low on PURESIZE.

	* Makefile.in.in: Move site-packages.
	Add vpath correction for puresize_adjust.h.

Mon Mar  3 20:37:54 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (lisp): Remove custom-xmas.elc.

Sat Mar  1 01:20:39 1997  Steven L Baur  <steve@altair.xemacs.org>

	* doc.c (weird_doc): Don't print `duplicate' messages as they are
	almost always due to symbols that are both autoloaded and dumped.

	* data.c (syms_of_data): char-int and int-char -> char-to-int and
	int-to-char.

Thu Feb 27 21:48:32 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (xemacs): Loop when dumping until SATISFIED.

	* lstream.c (signal_simple_internal_error): Remove the abort().

	* alloc.c (Fpurecopy): Make it work for byte compiled functions.
	(Fgarbage_collect): Disable garbage collection if we're dumping
	XEmacs and we've overflowed purespace.

Thu Feb 27 14:14:53 1997  Darrell Kindred  <dkindred@cmu.edu>

	* event-Xt.c (change_frame_visibility): New function.
	(handle_map_event): Use it.
	(emacs_Xt_handle_magic_event): Correction of handling of
	VisibilityNotify.

Thu Feb 27 14:12:57 1997  Steven L Baur  <steve@altair.xemacs.org>

	* frame-x.c (x_frame_visible_p): Reverse previous change.

Sun Mar  2 14:01:32 1997  David Moore  <dmoore@ucsd.edu>

	* regex.c (re_search_2): Properly handle crossing the buffer gap
	when doing a backwards search under MULE.

Wed Feb 26 10:24:40 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: make-docfile takes a "-i" parameter to pass
	site-loaded lisp files.

	* alloc.c (report_pure_usage): Adjust restart message.

Tue Feb 25 10:58:12 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: Add PURESIZE.h to special treatment in vpath.

	* alloc.c (PURESIZE_h): New function.
	(report_pure_usage): Use it.  If PURESIZE is not the right amount,
	use the correct value.

	* puresize.h: Use dynamic computation of PURESIZE.

	* PURESIZE.h: New file.

	* fns.c (Frandom): Fix docstring.

Mon Feb 24 17:35:05 1997  Jonathan Edwards  <edwards@intranet.com>

	* process.c (record_exited_processes): Fix obvious typo in
	checking for SIGCLD.

Sun Feb 23 01:45:49 1997  Martin Buchholz  <mrb@eng.sun.com>

	* scrollbar.c (update_scrollbar_instance): Fix for
	all-hail-xemacs scrollbar drag bug.

	* scrollbar.c (Fscrollbar_to_bottom): Now calls Frecenter(-3)
	as end-of-buffer does, instead of hostile Frecenter(0).  Makes
	C-button-1 on down-arrow friendlier.

Sun Feb 23 16:56:17 1997  David Hobley  <david@spook-le0.cia.com.au>
	Initial MS Windows NT support.
	* unexnt.c: New file.

	* ntproc.c: New file.

	* ntheap.h: New file.

	* ntheap.c: New file.

	* nt.h: New file.

	* nt.c: New file.

Sun Feb 23 15:56:58 1997  Steven L Baur  <steve@altair.xemacs.org>

	* floatfns.c (_GNU_SOURCE): Define if compiling with glibc 2.

	* gmalloc.c: Guard __getpagesize definition against glibc 2.

Sat Feb 22 17:12:47 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (lisp): Snarf docstrings from new file
	itimer-autosave.elc.

Fri Feb 21 18:21:32 1997  Jan Vroonhof  <vroonhof@math.ethz.ch>

	* event-Xt.c (emacs_Xt_handle_magic_event): Correction for frame
	freezing bug.

Wed Feb 19 12:54:32 1997  Per Abrahamsen  <abraham@dina.kvl.dk>

	* buffer.c (Fbuffer_disable_undo): Default to current buffer.

Tue Feb 18 12:37:28 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (lisp): Dump new file custom-xmas.elc.

Mon Feb 17 11:29:07 1997  Steven L Baur  <steve@altair.xemacs.org>

	* print.c (Ferror_message_string): New function, ported from Emacs
	19.34.
	(print_error_message): Ditto.

	* extents.c (verify_extent_mapper): Experimental deletion of code
	to allow deletion of read-only extents.

	* symbols.c (hash_string): Replace algorithm with one given in
	Aho, Sethi & Ullman.

Sun Feb 16 14:53:58 1997  Steven L Baur  <steve@altair.xemacs.org>

	* keymap.c (lookup_keys): Wrong sense in test.

	* Makefile.in.in: Don't dump font.elc.

Sat Feb 15 02:30:51 1997  Steven L Baur  <steve@altair.xemacs.org>

	* cmds.c: Define new symbol signal-error-on-buffer-boundary.
	(Fforward_char): Use it.
	(Fbackward_char): Use it.

	* window.c (Fscroll_up): Use it.
	(Fscroll_down): Use it.

	* keymap.c (syms_of_keymap): define mouse-[123] and
	down-mouse-[123] pseudo-keysym aliases for Emacs compatibility.

Thu Feb 13 21:28:35 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: Don't dump tm with XEmacs under any
	circumstances.

	* puresize.h: Remove extra SunPro puresize for MULE+tm.

Sun Feb  9 04:40:36 1997  Axel Seibert  <aseibert@cybernet-ag.net>

	* emacs.c (main_1): Fix NeXT malloc initialization.

Fri Feb  7 11:36:56 1997  Steven L Baur  <steve@altair.xemacs.org>

	* mule-coding.c (Fdecode_coding_region): Make explicit call to
	`barf_if_buffer_read_only'.
	(Fencode_coding_region): Ditto.

Thu Feb  6 22:39:39 1997  Steven L Baur  <steve@altair.xemacs.org>

	* extents.c (syms_of_extents): Remove references to replicating
	extents.

	* extents.h (struct extent): Remove references to replicating
	extents.

Thu Feb  6 01:11:43 1997  Jareth Hein  <jhod@po.iijnet.or.jp>

	* mule-coding.c (ENCODE_SJIS): Correct typo.

Thu Feb  6 01:10:22 1997  Steven L Baur  <steve@altair.xemacs.org>

	* frame.c (delete_frame_internal): Protect against deletion of
	frames with living popup children.

Wed Feb  5 17:13:17 1997  David Moore  <dmoore@UCSD.EDU>

	* emacs.c (main_1): Try to avoid collisions against potentially
	incompatible system mallocs.

Mon Feb  3 23:04:41 1997  Joel Peterson  <tarzan@aosi.com>

	* redisplay.c: Activate face/charset redisplay caching.

Mon Feb  3 22:01:09 1997  Kyle Jones  <kyle_jones@wonderworks.com>

	* eval.c (do_debug_on_exit): Don't restore old value of
	debug_on_next_call improperly.

Fri Jan 31 10:28:47 1997  David Byers  <davby@ida.liu.se>

	* frame.c (frame_matches_frametype): Fix next-window when the next
	window is on another frame.

Thu Jan 30 20:25:00 1997  Steven L Baur  <steve@altair.xemacs.org>

	* syntax.c (scan_sexps_forward): Change test on targetdepth to
	match Emacs 19.34.

Wed Jan 29 22:11:53 1997  James LewisMoss <dres@scsn.net>

	* gmalloc.c: Corrections for namespace collision with Linux libc
	malloc.

Mon Jan 27 21:46:53 1997  Tomasz J. Cholewo  <tjchol01@mecca.spd.louisville.edu>

	* fileio.c (Fwrite_region_internal): pack lockname to write-region
	handler.

Mon Jan 27 04:50:50 1997  David Moore <dmoore@UCSD.EDU>

	* gmalloc.c (malloc): Guard against incompatible system mallocs
	with conflicting symbols.

Sun Jan 26 12:27:04 1997  Steven L Baur  <steve@altair.xemacs.org>

	* redisplay.c (add_emchar_rune): Back out optimization change of
	caching last_charset.

Sun Jan 26 09:10:45 1997  Hrvoje Niksic <hniksic@srce.hr>

	* s/decosf4-0.h: Digital Unix 4.0 has a realpath, but it's buggy.
	And I *do* mean buggy.

Thu Jan 23 10:41:19 1997  Steven L. Baur  <steve@altair.xemacs.org>

	* puresize.h: Increase SUNPRO usage to reflect tm & cc-mode.
	Decrease BASE_PURESIZE and increase MULE_PURESIZE_EXTRA.

Wed Jan 22 21:09:52 1997  Steven L Baur  <steve@altair.xemacs.org>
	* puresize.h (BASE_PURESIZE): Tighten up.

	* scrollbar.c (scrollbar-page-up): Add Athena3d to Lucid/Motif
	code.
	(scrollbar-page-down): Ditto.

	* scrollbar-x.c (x_create_scrollbar_instance): Add Athena3d to
	Lucid/Motif code.
	(x_update_vertical_scrollbar_callback): Ditto.
	(x_update_horizontal_scrollbar_callback): Add Athena3d to Lucid
	special case code.

	* scrollbar-x.h (struct x_scrollbar_data): Add start drag position
	for Athena3d.

	* redisplay-output.c (redisplay_update_line): A vain attempt to
	get the Athena vertical thumb adjusted after drag.

	* EmacsFrame.c: Default to lower/right with Athena3d libraries.

Wed Jan 22 18:38:52 1997  Ian Wells  <I.Wells@tarragon-et.co.uk>

	* m/aviion.h: Remove definition of m88k.

	* s/dgux5-4r4.h: New file.

Wed Jan 22 18:32:49 1997  Steven L Baur  <steve@altair.xemacs.org>

	* buffer.h: Put proper typecasts on calls to alloca().

Tue Jan 21 22:25:23 1997  Steven L. Baur  <steve@altair.xemacs.org>

	* config.h.in: Add LWLIB_USES_ATHENA symbol

	* Makefile.in.in (TOOLKIT_LIBS): It is possible to have both
	Athena and Motif in the same link.

Tue Jan 21 20:43:41 1997  Hrvoje Niksic  <hniksic@srce.hr>

	* redisplay-tty.c (tty_ring_bell): Don't ring tty bell if the
	volume is set to 0.

Tue Jan 21 20:38:58 1997  Axel Seibert  <aseibert@cybernet-ag.net>

	* s/nextstep.h (signal_handler_t): define as int.

Mon Jan 20 21:12:57 1997  Martin Buchholz  <mrb@eng.sun.com>

	* event-Xt.c (emacs_Xt_handle_magic_event):
	(frame-totally-visible-p) sometimes incorrectly returned nil.

Thu Jan 16 17:24:29 1997  Joel Peterson  <tarzan@aosi.com>

	* menubar-x.c (pre_activate_callback): Correctly handle buffer
	local variables in :included clauses.
	(compute_menubar_data): Ditto.

Wed Jan 15 21:44:53 1997  Joel Peterson  <tarzan@aosi.com>

	* redisplay.c (add_emchar_rune): Enable last_charset display
	optimization.

Wed Jan 15 19:06:27 1997  David Moore  <dmoore@UCSD.EDU>

	* event-stream.c (Faccept_process_output): Avoid checking an
	uninitialized variable.

Wed Jan 15 14:14:24 1997  Steven L Baur  <steve@altair.xemacs.org>

	* regex.c: Modify values of re_max_failures and MAX_FAILURE_ITEMS
	to match Emacs 19.34.

Mon Jan 13 00:36:01 1997  Martin Buchholz  <mrb@eng.sun.com>

	* sysdep.c (sys_execvp): Fix when compiled with
	--const-is-losing=no.  Old code could crash if argv contained
	non-ascii characters and the execvp failed and then caller
	examined argv (for error message, for example).

Sun Jan 12 17:22:24 1997  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in: TM .elcs moved to SUNPRO_LISP only.

Fri Jan 10 20:21:47 1997  Ben Wing  <ben@666.com>

	* minibuf.c (Ftry_completion): Don't crash if not given a proper
	obarray.

Fri Jan 10 09:49:44 1997  Ted Phelps  <phelps@dstc.edu.au>

	* objects-x.c (x_initialize_font_instance): Hardcode 'n' for
	default font width.

Mon Jan  6 15:16:46 1997  Carsten Leonhardt  <leo@arioch.tng.oche.de>

	* Makefile.in.in: Linking with canna requires -lRKC.

Mon Jan  6 12:22:57 1997  Frederic Poncin  <fp@info.ucl.ac.be>

	* gmalloc.c: Don't declare __sbrk on SparcLinux.
Sun Jan  5 18:04:47 1997  Soren Dayton  <csdayton@cs.uchicago.edu>

	* Makefile.in.in: IRIX6 can use sgiplay.c too.

Sat Jan  4 12:15:16 1997  Steven L Baur  <steve@altair.xemacs.org>

	* toolbar.c (specifier_vars_of_toolbar): Clean up fallback
	specifiers so XEmacs can be built without tty support.

	* console-stream.c: Moved function bodies of
	semi_canonicalize_console_connection,
	canonicalize_console_connection,
	semi_canonicalize_device_connection, and
	canonicalize_device_connection into this file from console-tty.c.
	Moved variable Vstdio_str into this file.

	* console-tty.c: See above.

Fri Jan  3 18:07:11 1997  Axel Seibert  <aseibert@cybernet-ag.net>

	* m/next.h: Cleanup accumulated cruft.

	* s/nextstep.h: Remove useless #undef REL_ALLOC/HAVE_MMAP.

	* syssignal.h: Don't typedef SIGTYPE on NeXT.

Fri Jan  3 12:06:44 1997  Michael Sperber  <sperber@informatik.uni-tuebingen.de>

	* m/ibmrs6000.inp: Added various get.* symbols.

Sun Dec 29 20:16:08 1996  Steven L Baur  <steve@altair.xemacs.org>

	* m/next.h: Remove signal_handler_t #define.

	* s/nextstep.h: Remove signal_handler_t #define.

Fri Dec 27 21:13:33 1996  Martin Buchholz  <mrb@Eng.Sun.COM>

	* event-Xt.c (x_to_emacs_keysym): Corrections to SUNOS_GCC_LO_BUG.

Mon Dec 23 11:37:16 1996  Martin Buchholz  <mrb@Eng.Sun.COM>

	* fns.c (Ffillarray): Fix for (fillarray #*10 0)

Mon Dec 23 10:27:14 1996  Steven L Baur  <steve@altair.xemacs.org>

	* bitmaps.h: Change to unsigned char.

	* frame-x.c (x_cde_transfer_callback): Typecast fix.

	* keymap.c (define_key_check_and_coerce_keysym): Typecast fix.

Fri Dec 20 19:21:56 1996  Steven L Baur  <steve@altair.xemacs.org>

	* Makefile.in.in (lisp): Remove cc-mode as a dumped package.

	* keymap.c (define_key_check_and_coerce_keysym): Make obsolete
	binding of kp_.* not lose.

	* bitmaps.h: Add left & right arrows to show extended lines.

Fri Dec 20 15:32:53 1996  David Moore  <dmoore@UCSD.EDU>

	* event-stream.c (event_stream_wakeup_pending_p): New function.
	(Faccept_process_output): Fix timeout handling race conditions.
	(Fsleep_for): Ditto.
	(Fsit_for): Ditto.

Thu Dec 19 22:25:26 1996  Steve Carney  <carney@gvc.dec.com>

	* cmds.c (Fbeginning_of_line): Adjust for 64 bit machines.

Thu Dec 19 00:44:10 1996  Bart Robinson  <lomew@cs.utah.edu>

	* syssignal.h: The declaration of SIGTYPE shouldn't be protected
	by HAVE_SIGPROCMASK.

Wed Dec 18 20:40:21 1996  Martin Buchholz  <mrb@eng.sun.com>

	* dgif_lib.c: Miscellaneous cleanup, including removing signed
	bitfields.

	* mule-charset.h: Change charset names.

	* mule-coding.c (struct iso2022_decoder): Uniform unsigned bitfields.
	Change charset names.

	* mule-charset.c: Change charset names.

	* mule-canna.c: Change charset names.

	* EmacsShell-sub.c: Ansify and reformat.

	* console-tty.h (struct tty_console): Uniform unsigned bitfields.

	* glyphs-x.c: Ansify.

	* specifier.c: Use lisp_fn_t.

	* EmacsShell.c: Ansify.

	* vm-limit.c: Ansify.

	* emacsfns.h: Use lisp_fn_t.

	* lstream.c (struct filedesc_stream): Unsigned int bitfields.

	* xselect.c (hack_motif_clipboard_selection): Change charset name.
	(Fx_store_cutbuffer_internal): Change charset name.

	* ralloc.c: Ansify and clean up.

	* frame.h (struct frame): Uniform unsigned bit fields.

	* event-Xt.c: Documentation change.

	* lisp.h: Introduce lisp_fn_t.
	Remove SunPro C compiler warning message workaround.

	* xmu.c: Ansify.

	* doprnt.c (struct printf_spec): Use unsigned bitfields.

	* fileio.c: various code formatting changes.

	* eval.c: reorganize primitive funcalls.

	* config.h.in (NeedFunctionPrototypes): Force slightly better type
	checking in X header files.

	* Makefile.in.in: #undef i386, move mime-setup.elc?.

	* s/sunos4-0-shr.h: Documentation change.

	* s/sol2.h (__EXTENSIONS__): Add.
	Include <setjmp.h> under certain conditions.

Mon Dec 16 19:13:10 1996  Steven L Baur  <steve@altair.xemacs.org>

	* lstream.c (Lstream_pseudo_close): Return status on error.
	(Lstream_close): Ditto.  (Fixes disk full-no error on write bug).

Sat Dec 14 16:54:52 1996  Steven L Baur  <steve@altair.xemacs.org>

	* glyphs-x.c (jpeg_instantiate): Use file I/O for JPEG loading
	because the in-core code is broken.

Fri Dec 13 16:43:45 1996  Steven L Baur  <steve@altair.xemacs.org>

	* device-x.c (x_init_device): Don't make nonexistent X server the
	default when running on a tty.

	* event-Xt.c (x_to_emacs_keysym): Rename kp_.* keysyms to be kp-\1.

	* redisplay-tty.c (keys): Rename kp_.* keynames to kp-\1.

Fri Dec 13 14:48:42 1996  Michael Sperber  <sperber@informatik.uni-tuebingen.de>

	* lread.c (Fload_internal): Change arity of call to
	file-name-handlers.

	* fileio.c (Finsert_file_contents_internal): Ditto.

Thu Dec 12 16:55:34 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>

	* cmds.c (Fpoint_at_eol, Fpoint_at_bol): New functions.
	(Fend_of_line, Fbeginning_of_line): Use them.

Tue Dec 10 11:17:32 1996  Shane Holder  <holder@mordor.rsn.hp.com>

	* s/hpux9shxr4.h: hpux9shr.h -> hpux9-shr.h

	* s/hpux10.h: hpux9shr.h -> hpux9-shr.h

Sat Dec  7 18:29:34 1996  Steven L Baur  <steve@altair.xemacs.org>

	* puresize.h (BASE_PURESIZE): Bumped up PURESIZE by 10k.

Sat Dec  7 16:26:34 1996  Martin Buchholz  <mrb@Eng.Sun.COM>

	* config.h.in: configure for POSIX getcwd if available.

Sat Dec  7 15:48:39 1996  Steven L Baur  <steve@altair.xemacs.org>

	* s/sunos4-1-shr.h: Renamed from sunos4-1shr.h.

	* s/sunos4-1-3-shr.h: Renamed from sunos4-1-3shr.h.

	* s/sunos4-1-2-shr.h: Renamed from sunos4-1-2-shr.h.

	* s/sunos4-0-shr.h: Renamed from sunos4-0shr.h.

	* s/hpux9-shr.h: Renamed from hpux9shr.h.

	* s/hpux8-shr.h: Renamed from hpux8shr.h.

	* s/hpux10-shr.h: Renamed from hpux10shr.h.

Wed Dec  4 23:38:03 1996  Steven L Baur  <steve@altair.xemacs.org>

	* redisplay.c: Allow column numbers in modeline to start from 1.


ChangeLog entries synched from GNU Emacs are the property of the FSF.
Other ChangeLog entries are usually the property of the author of the
change.

This file is part of XEmacs.

XEmacs is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your
option) any later version.

XEmacs is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with XEmacs.  If not, see <http://www.gnu.org/licenses/>.
