# This is a patch for xemacs-21.5.9 to update it to xemacs-21.5.10 # # To apply this patch: # STEP 1: Chdir to the source directory. # STEP 2: Run the 'applypatch' program with this patch file as input. # # If you do not have 'applypatch', it is part of the 'makepatch' package # that you can fetch from the Comprehensive Perl Archive Network: # http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz # In the above URL, 'x' should be 2 or higher. # # To apply this patch without the use of 'applypatch': # STEP 1: Chdir to the source directory. # If you have a decent Bourne-type shell: # STEP 2: Run the shell with this file as input. # If you don't have such a shell, you may need to manually create/delete # the files/directories as shown below. # STEP 3: Run the 'patch' program with this file as input. # # These are the commands needed to create/delete files/directories: # mkdir './modules/common' chmod 0755 './modules/common' mkdir './modules/postgresql' chmod 0755 './modules/postgresql' mkdir './modules/sample/external' chmod 0755 './modules/sample/external' mkdir './modules/sample/internal' chmod 0755 './modules/sample/internal' rm -f './src/postgresql.h' rm -f './src/postgresql.c' rm -f './src/eldap.h' rm -f './src/eldap.c' rm -f './src/ChangeLog.2' rm -f './src/ChangeLog.1' rm -f './modules/sample/sample.c' rm -f './modules/sample/Makefile' rm -f './modules/ldap/Makefile' rm -f './lisp/ChangeLog.1' touch './modules/common/Makefile.common' chmod 0644 './modules/common/Makefile.common' touch './modules/common/configure-post.ac' chmod 0644 './modules/common/configure-post.ac' touch './modules/common/configure-pre.ac' chmod 0644 './modules/common/configure-pre.ac' touch './modules/ldap/Makefile.in.in' chmod 0644 './modules/ldap/Makefile.in.in' touch './modules/ldap/configure' chmod 0755 './modules/ldap/configure' touch './modules/ldap/configure.ac' chmod 0644 './modules/ldap/configure.ac' touch './modules/ldap/install-sh' chmod 0755 './modules/ldap/install-sh' touch './modules/postgresql/Makefile.in.in' chmod 0644 './modules/postgresql/Makefile.in.in' touch './modules/postgresql/configure' chmod 0755 './modules/postgresql/configure' touch './modules/postgresql/configure.ac' chmod 0644 './modules/postgresql/configure.ac' touch './modules/postgresql/install-sh' chmod 0755 './modules/postgresql/install-sh' touch './modules/postgresql/postgresql.c' chmod 0644 './modules/postgresql/postgresql.c' touch './modules/postgresql/postgresql.h' chmod 0644 './modules/postgresql/postgresql.h' touch './modules/sample/external/Makefile.in.in' chmod 0644 './modules/sample/external/Makefile.in.in' touch './modules/sample/external/configure.ac' chmod 0644 './modules/sample/external/configure.ac' touch './modules/sample/external/install-sh' chmod 0755 './modules/sample/external/install-sh' touch './modules/sample/external/sample.c' chmod 0644 './modules/sample/external/sample.c' touch './modules/sample/internal/Makefile.in.in' chmod 0644 './modules/sample/internal/Makefile.in.in' touch './modules/sample/internal/configure.ac' chmod 0644 './modules/sample/internal/configure.ac' touch './modules/sample/internal/install-sh' chmod 0755 './modules/sample/internal/install-sh' touch './modules/sample/internal/sample.c' chmod 0644 './modules/sample/internal/sample.c' touch './src/README.kkcc' chmod 0644 './src/README.kkcc' # # This command terminates the shell and need not be executed manually. exit # #### End of Preamble #### #### Patch data follows #### diff --text -u 'xemacs-21.5.9/CHANGES-beta' 'xemacs-21.5.10/CHANGES-beta' Index: ./CHANGES-beta --- ./CHANGES-beta Fri Aug 30 17:25:48 2002 +++ ./CHANGES-beta Sun Jan 5 14:13:26 2003 @@ -1,3 +1,179 @@ +to 21.5.10 "burdock" + +Please accept my apologies for the very long wait between releases +this time around. My PC chose the 21.5.10 development cycle to go up +in a sickening cloud of smoke. :-( (Steve Youngs ) + +Lots of updates from Ben Wing (as always), also from Andy Piper, Mike +Sperber, and Stephen Turnbull with lots of documentation updates and +fixes. One new exciting addition in this release is that the LDAP and +PostgreSQL code has been extracted out of the core C code and moved to +DSO's. We have Jerry James to thank/blame/worship for that. + +Build + +-- Reset sheap-adjustment to zero - Piper. +-- Make --pdump default to yes on Linux - Turnbull. +-- Only use -Wpacked in GCC v3 - Wing. +-- Remove LISP_FLOAT_TYPE definition. - James. +-- Temporarily disable DSO's under Cygwin - Wing. +-- Updates to DSO building code (Makefile.in, configure.in etc) - Wing, James. +-- Separate compiler warning flags from CFLAGS - Wing. +-- Delete auto-autoloads.e* & custom-load.e* on 'make clean' - Turnbull. +-- Disable detection of 'getaddrinfo' for HP-UX 11.XX - Turnbull. +-- Include modules directories in 'make tags' - Youngs. +-- Fix shadowing warnings in make-docfile.c - Wing. +-- Move the common stuff from postgresql/ldap Makefile.in.in & + configure.ac's into a "common" Makefile and configure script - + Wing. +-- Major cleanup of ellcc - Wing, James. +-- Add Makefile var to pick up '--site-libraries' in DSO's - Youngs. +-- Avoid unnecessary deviations from UNIX 'describe-installation' in + xemacs.mak - Aichner. +-- Don't confirm overwriting files in xemacs.mak - Aichner. +-- Support 'xemacs_extra_name' in xemacs.mak - Aichner. +-- Some gcc/g++ 3 fixes - Wing. +-- Warning fixes - Wing. +-- Fix some C++ errors - Wing. +-- Allow for C needing volatile and C++ that can't have volatile, + remove previous volatile hacks - Wing. +-- Try for a working Cygwin build with old unexec - Wing. +-- Warning suppression - Turnbull. +-- New Mule character class regexp tests - Turnbull, Ueno. +-- Better handling of known bugs in tests - Turnbull. +-- Add test for stale subexpr match-data - Turnbull. +-- Update syntax-table tests - Turnbull. +-- Add word-boundary regexp tests - Turnbull. + +Documentation + +-- Updates to PROBLEMS file + Running/Linux - Lesstif 0.93.36 - Turnbull + Running/IRIX - Irix 6.5 coredumps - Turnbull + Running/Cygwin - "No cygXpm-noX" fatal error - Turnbull + Missing charsets - Remove ambiguity - Turnbull + Running, General - FontSet warnings - Turnbull + MacOS/X - Stack limitation - Turnbull + Digital Unix - Generalise - Turnbull + AIX - USE_KKCC lossage - Turnbull. +-- Update instructions in info/dir - Wallington. +-- Recommend TeXinfo 4.2 in INSTALL - Turnbull. +-- Add example in sample.Xdefaults - Boffi. +-- Typo fixes - Yamaoka, Youngs, Turnbull, Wing. +-- Docstring fixes - Turnbull, Piper, Skyttä, Wing. +-- Update description of XEmacs Patches and Design ML's - Turnbull. +-- Incorportate ChangeLog.X into ChangeLog - Wing. +-- FAQ additions/amendments: + Debugging FAQ improvements - Wing. + Mention union type bugs - Turnbull. + Debugging HOWTO improvements - Turnbull. + Decoding Lisp objects in the debugger - Turnbull. + Fix location of FAQ on website - Skyttä. + Add missing menu entry for Q3.2.7 - Verna. + Displaying non-ASCII - Turnbull. + Mention bug report commands - Turnbull. + Revise Q1.3.[1-6] - Turnbull. + New FAQ for "no cygXpm-noX" fatal error - Turnbull. +-- New TeXinfo nodes: + "Widget Internals" - Turnbull. + "Simple Specifier Usage" - Turnbull. + "Compilation Options" - Turnbull. +-- Document charset Unification and Tables - Turnbull. +-- Better short description of Mule in Mule submenu - Turnbull. +-- Regression Testing XEmacs design hints & rewrite - Turnbull. +-- Document 'face-frob-from-locale-first' - Golubev. +-- Document 'set-face-background-pixmap-file' - Verna. +-- Add urefs to Doug Lea's * Wolfram Gloger's home pages in "Low-Level + Modules" - Turnbull. +-- Update "Available Packages" - Skyttä. +-- Document 'append' arg of 'add-to-list' - Skyttä. +-- Add optimisation hints in "Techniques for XEmacs Developers" - Turnbull. + +Internals + +-- Add *menubar*FontSet and *popup*FontSet entries - Turnbull, Skyttä. +-- Extract ldap and postgresql code from core and put them into DSO's - James. +-- 'Fset_window_point' Correct to GNU/Emacs behaviour (fixes some bugs + in Gnus) - Wing. +-- Inhibit GC in critical sections - Wing. +-- Fix calculation in 'report_sheap_usage' - Piper. +-- Implement and use new var 'garbage_collection_messages' - Wallington. +-- Fix 'open_database' for Berkeley DB 4.1.x - Allen. +-- Updates to frame code - Sperber. +-- Change C debugger entrance: error message, then stack trace, then + exiting message, then force debugger - Wing. +-- Use EQ not EQUAL in 'mswindows_init_frame_1' - Wing. +-- Better redisplay-related asserts - Wing. +-- Don't generate large warning strings when they'll be discarded - Wing. +-- Implement 'debug-on-error' as documented - Wing. +-- Fix docs relating to QUIT which can't GC under any circumstances - Wing. +-- More robust package compilation and debugging - Wing. +-- Overhaul profile code - Wing. +-- Fix crashes due to incorrectly ported GNU/Emacs code - Wing. +-- Clean up realpath.c - Wing. +-- DdeCreateStringHandle needs to be manual due to new Cygwin bug - Wing. +-- Fix some Cygwin complaints - Wing. +-- Unconditionally use LISP_FLOAT_TYPE code - James. +-- Improve crash message in 'shut_down_emacs' - Turnbull. +-- Update NAS code for NAS 1.6 and later - Toy. +-- Fix "unused variable" warnings in mule-canna.c - Turnbull. +-- Prototype 'enqueue_focus_event' - Turnbull. +-- Use BORDER_FIDDLE_FACTOR instead of 10 in 'layout_layout' - Piper. +-- Add optional 'noerror' arg to 'Frequire' - Wallington. +-- Only resize 'layout_query_geometry' dynamically if static sizes + haven't been set - Piper. +-- Fix infloop upon a gdm logout - Sigelman. +-- Fix scope of 'num_nonshy_regs' - Turnbull. +-- Fix "stale match data" bug - Turnbull. +-- Don't call 'XtDisplay' on a destroyed widget - Golubev. +-- Update specifier code - Sperber. +-- Update process code - Sperber. +-- Move ldap/postgresql code out to DSO's - James. +-- Normalise Ffile_truename and drive spec on cygwing to win32 format + - Piper. +-- Use 'closesocket' instead of 'CloseHandle' in 'winsock_closer' - Alexander. +-- Coding system updates - Ikiuo. + +Lisp API + +-- Update window-xemacs.el to fix 'goto-line' - Wing. +-- Add garbage collection messages - Wallington. +-- Re-implement window configurations in Emacs Lisp - Sperber. +-- Enhance background-pixmap-file code - Verna. +-- New macro 'save-window-excursion' to eventually replace bytecode + instruction - Sperber. +-- Move window.el et al up the order in dumped-lisp.el - Sperber. +-- Don't use 'save-window-excursion' in + 'shrink-window-if-larger-than-buffer' - Sperber. +-- Updates to pixel-size code in dialog.el - Sperber. +-- Remove nonworking 'breakpoint-on-error' - Wing. +-- Extract out 'with-displaying-help-buffer' into a more general mechanism + - Wing. +-- Don't catch errors when noninteractive in startup.el - Wing. +-- Fix warnings in code-files.el, loadhist.el, & package-get.el - Wing. +-- Simplify code in '*-reset-device-font-menus' - James. +-- Synch font-menu.el to the 21.4 version - Turnbull. +-- Preserve return value from 'call-process' - Sperber. +-- New functions in replace.el that operate on regions - Evans. +-- Run 'delete-frame-hook' in general dialogs only - Piper. +-- Add a margin parameter in autoload.el for DSO autoloads - James. +-- Conditionalise autoloads for DSO's on the existence of the DSO - James. +-- Always set module directories/paths in dump-paths.el - James. +-- Bring list of package sites up to date - Skyttä. +-- Add "Find Variable" menu entry for 'hyper-apropos-find-variable' - + Wallington +-- Fix 'view-lossage' interactive spec - Wallington. +-- Synch 'with-output-to-string' with GNU/Emacs 21 - Wallington. +-- Bind C-xrd to 'delete-rectangle' - Yamaoka. +-- Move entries in 'auto-mode-alist' out to packages for the modes + that are in packages - Skyttä +-- New compatible alias for 'lookup-syntax-properties' + ('parse-sexp-lookup-properties') - Turnbull. +-- Enable C autoloads for DSO's - James. +-- Update revert-buffer code - Piper. +-- Add new coding system 'utf-8-bom' - Ikiuo. + + to 21.5.9 "brussels sprouts" The main thrust of this release is the new GC algorithms. If you want diff --text -u 'xemacs-21.5.9/CHANGES-msw' 'xemacs-21.5.10/CHANGES-msw' Index: ./CHANGES-msw --- ./CHANGES-msw Tue Jun 4 15:11:31 2002 +++ ./CHANGES-msw Mon Sep 2 07:14:58 2002 @@ -10,6 +10,11 @@ See the file 'CHANGES-release' for a full list of mainline changes. +to XEmacs 21.4.9 "Informed Management (Windows)" + + - Fix layout of widgets so that the search dialog works. + - Fix focus capture of widgets under X. + to XEmacs 21.4.8 "Honest Recruiter (Windows)" - All changes from 21.4.6 and 21.4.7. @@ -19,6 +24,11 @@ - Fix printer metrics on windows 95 from Jonathan Harris. - Fix layout of widgets so that the search dialog works. - Fix focus capture of widgets under X. + - Buffers tab doc fixes from John Palmieri. + - Sync with FSF custom :set-after behavior. + - Virtual window manager freeze fix from Rick Rankin. + - Fix various printing problems. + - Enable windows printing on cygwin. to XEmacs 21.4.7 "Economic Science (Windows)" @@ -35,7 +45,7 @@ - Fixed some printing problems. - Netinstaller updated to support kit revisions. - Fixed customize popup menus. - - Fixed problems wiht too many dialog popups. + - Fixed problems with too many dialog popups. - Netinstaller fixed to correctly upgrade shortcuts when upgrading core XEmacs. - Fix for virtual window managers from Adrian Aichner. diff --text -u 'xemacs-21.5.9/ChangeLog' 'xemacs-21.5.10/ChangeLog' Index: ./ChangeLog --- ./ChangeLog Fri Aug 30 17:25:48 2002 +++ ./ChangeLog Sun Jan 5 14:13:26 2003 @@ -1,3 +1,146 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + +2002-07-08 Andy Piper + + * Makefile.in.in (src/sheap-adjust.h): reset back to zero. Making + this anything other than zero was misguided. + +2002-12-04 Stephen J. Turnbull + + * configure.in: Make --pdump default per opsys; move Darwin's + setting and change Linux's default to yes. + +2002-11-27 Ben Wing + + * configure.in (CANONICALIZE_PATH): + * configure.in (TAB): + Check for GCC version and only use -Wpacked in v3. + +2002-10-14 Jerry James + + * configure.in: Remove LISP_FLOAT_TYPE definition. + +2002-11-17 Ben Wing + + * aclocal.m4 (cygwin_warn): New. + Disable shared library modules under Cygwin for the moment, + since we need some more tricky coding done and I don't have the + time right now. + + * configure.in: + * configure.in (need_modules_common): New. + * configure.in (quoted_arguments): + * configure.in (stack_trace_eye_catcher): + * configure.in (CPP): + * configure.in (CFLAGS): New. + * configure.in (bitmapdir): + * configure.in (ldap_libs): + * configure.in (postgresql_libs): + * configure.in (all_widgets): + * configure.in (SUBDIR_MAKEFILES): + * configure.in (RECURSIVE_MAKE): + * configure.in (null_string): + * configure.in (Mail): + * configure.usage (--cflags): + * configure.usage (--cflags_warning): New. + + Make sure we use the compiler in --xemacs-compiler to compile + the modules, too, or we will get link errors when trying to do + a C++ build. + + Create a directory modules/common, in which is code common to all + the module Makefiles and configure.ac's. We create a separate + directory because we may be building in a separate source tree, + and need a way of accessing the common code (at least in the case + of the Makefile). Either we create symlinks for all necessary + files or one just for the directory -- the latter is more robust. + + Add code to create the symlink for modules/common as necessary. + When creating the modules Makefiles, append the common code. + + Check for wcslen/wcscmp; apparently missing sometimes in Cygwin and + G++ v3. + + Output correct compiler name in messages. + + Separate warning flags from other C flags so that user-specified + --cflags doesn't disable warnings. + +2002-11-12 Stephen J. Turnbull + + * PROBLEMS (Running/Linux): Lesstif 0.93.36 info, from F. McIngvale. + +2002-11-12 Stephen J. Turnbull + + * PROBLEMS: Typo fix. + +2002-10-31 John Paul Wallington + + * info/dir (File): button1 on a highlighted word doesn't + follow that cross-reference. + +2002-10-31 Stephen J. Turnbull + + * PROBLEMS (Running/IRIX): Irix 6.5 coredumps. Thanks, Valdis. + +2002-10-19 Stephen Turnbull + + * Makefile.in.in (clean): Delete auto-autoloads.e* and custom-load.* + in lisp, lisp/mule, and modules. + ChangeLog: Fix my bogus email addresses. + +2002-10-25 Stephen J. Turnbull + + * configure.in (Check for POSIX functions): New section head. + getaddrinfo is detected on HP-UX 11.XX, but appears to be + non-functional. Disable it. Based on work by Darryl Okahata. + +2002-10-18 Stephen J. Turnbull + + * PROBLEMS (Running/Cygwin): "No cygXpm-noX" fatal error. + +2002-10-17 Stephen J. Turnbull + + * PROBLEMS (Missing charsets): Remove ambiguity. + +2002-10-10 Stephen J. Turnbull + + * INSTALL (PREREQUISITES): Recommend Texinfo 4.2. + +2002-09-27 Stephen J. Turnbull + + * PROBLEMS (Running, General): Missing charset in FontSet warnings. + +2002-10-08 Stephen J. Turnbull + + * PROBLEMS (MacOS/X): Describe stack limitation. + (Digital Unix): Generalize to all regexp-using applications. + * INSTALL (PREQUISITES): Mention MacOS/X stack limitation. + (PROBLEMS): Point to PROBLEMS file for build notes. + Thanks to Skip Montanaro for the report. + +2002-09-20 Steve Youngs + + * Makefile.in.in (TAGS tags): Descend into the modules directory + as well. + +2002-09-20 Stephen J. Turnbull + + * PROBLEMS: AIX memcpy MACRO/#ifdef USE_KKCC lossage. Thx, Valdis! + +2002-08-08 Jerry James + + * Makefile.in.in (install-arch-dep): Install internal modules and + the corresponding autoload file. + * configure: Regenerate. + * configure.in: Detect module support early. + Define variables to be substituted in internal Makefiles. + Use ldap_libs instead of LIBS for LDAP libraries. + Use postgresql_libs instead of LIBS for PostgreSQL libraries. + Introduce ld_libs_module for seamless module/no-module support. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. diff --text -u 'xemacs-21.5.9/INSTALL' 'xemacs-21.5.10/INSTALL' Index: ./INSTALL --- ./INSTALL Fri May 17 00:11:23 2002 +++ ./INSTALL Thu Oct 10 23:47:23 2002 @@ -32,8 +32,8 @@ XEmacs. Verify that your users have a high enough stack limit. On some systems -such as OpenBSD and OSF/Tru64 the default is 2MB which is too low. See -'PROBLEMS' for details. +such as OpenBSD and OSF/Tru64 the default is 2MB which is too low. On +MacOS/X (Darwin), it's 512kB. See 'PROBLEMS' for details. Building XEmacs requires about 100 Mb of disk space (including the XEmacs sources). Once installed, XEmacs occupies between 20 and 100 Mb @@ -44,7 +44,8 @@ XEmacs requires an ANSI C compiler, such as GCC. If you wish to build the documentation yourself, you will need at least version 1.68 of -makeinfo (GNU texinfo-3.11). +makeinfo (GNU texinfo-3.11). GNU Texinfo 4.2 is recommended; it is +necessary for building packages, and we may move to it for the core. ADD-ON LIBRARIES ================ @@ -697,5 +698,6 @@ directions in README.packages. You can not have a working XEmacs without downloading some additional packages. -See the file PROBLEMS in this directory for a list of various -problems sometimes encountered, and what to do about them. +See the file PROBLEMS in this directory for a list of various problems +sometimes encountered, and what to do about them. PROBLEMS is also +the place where platform-specific build notes can be found. diff --text -u 'xemacs-21.5.9/Makefile.in.in' 'xemacs-21.5.10/Makefile.in.in' Index: ./Makefile.in.in --- ./Makefile.in.in Mon Apr 1 12:59:04 2002 +++ ./Makefile.in.in Fri Dec 13 13:29:49 2002 @@ -323,7 +323,7 @@ @echo "Resetting \`src/sheap-adjust.h'."; \ (echo "/* Do not edit this file!" ; \ echo " Automatically generated by XEmacs */" ; \ - echo "#define SHEAP_ADJUSTMENT 0x400000") > $@ + echo "#define SHEAP_ADJUSTMENT 0") > $@ src: @SRC_SUBDIR_DEPS@ FRC.src pkg-src/tree-x: pkg-src/FRC.tree-x @@ -435,6 +435,9 @@ $(LN_S) ${prefix}/$${dir} ${exec_prefix}/$${dir}; fi; \ done; \ fi +#ifdef HAVE_SHLIB + $(INSTALL_DATA) $(srcdir)/modules/auto-autoloads.* $(moduledir) +#endif install-arch-indep: mkdir info -@set ${COPYDESTS} ; \ @@ -636,7 +639,7 @@ @PATH=`$(pwd)`/lib-src:$$PATH HOME=/-=-; export PATH HOME; \ echo "Using etags from `which etags`." PATH=`$(pwd)`/lib-src:$$PATH ; export PATH; cd ${srcdir} && \ - find src lwlib lib-src ${PRUNE_VC} -name '*.[ch]' -print | \ + find src lwlib lib-src modules ${PRUNE_VC} -name '*.[ch]' -print | \ xargs etags -a -r '/[ ]*DEF\(VAR\|INE\)_[A-Z_]+[ ]*([ ]*"\([^"]+\)"/\2/'; \ find ${tagslisp} ${PRUNE_VC} -name '*.el' ! -name 'auto-autoloads.el' -print | \ xargs etags -a -l none -r "/^(def\\(var\\|un\\|alias\\|const\\|macro\\|subst\\|struct\\|face\\|group\\|custom\\|ine-\\(function\\|compiler-macro\\|[a-z-]+alias\\)\\)[ ]+'?\\([^ ]+\\)/\\3/" diff --text -u 'xemacs-21.5.9/PROBLEMS' 'xemacs-21.5.10/PROBLEMS' Index: ./PROBLEMS --- ./PROBLEMS Sat Aug 10 15:37:37 2002 +++ ./PROBLEMS Tue Nov 12 03:52:57 2002 @@ -43,7 +43,7 @@ Much general information is in INSTALL. If it's covered in INSTALL, we don't repeat it here. -*** How does I configure to get the buffer tabs/progress bars? +*** How do I configure to get the buffer tabs/progress bars? These features depend on support for "native widgets". Use the --with-widgets option to configure. Configuration of widgets is @@ -171,6 +171,23 @@ ** AIX +*** IBM compiler fails: "The character # is not a valid C source character." + +Most recently observed in 21.5.9, due to USE_KKCC ifdefs (they just +happen to tickle the implementation). + +Valdis Kletnieks says: + + The problem is that IBM defines a *MACRO* called 'memcpy', and we + have stuck a #ifdef/#endif inside the macro call. As a workaround, + try adding '-U__STR__' to your CFLAGS - this will cause string.h to + not do a #define for strcpy() to __strcpy() - it uses this for + automatic inlining support. + + (For the record, the same issue affects a number of other functions + defined in string.h - basically anything the compiler knows how to + inline.) + *** On AIX 4.3, you must specify --with-dialogs=athena with configure *** The libXt shipped with AIX 4.3 up to 4.3.2 is broken. This causes @@ -386,6 +403,46 @@ ** IRIX +*** More coredumping in Irix (6.5 known to be vulnerable) + +No fix is known yet. Here's the best information we have: + +Valdis Kletnieks writes: + + Were xemacs and [any 3rd party, locally-compiled] libraries [you use] + all compiled with the same ABI ( -o32, -n32, -64) and + mips2/mips3/mips4 flags, and are they appropriate for the machine in + question? I know the IP30 implies an Octane, so it should be an R10K + chipset and above such nonsense, but I've seen the most astoundingly + bizzare crashes when somebody managed to compile with -mips4 and get + it to run on an R4400 or R5K system. ;) + + Also, since you're using gcc, try re-running fixincludes and *then* + rebuilding xemacs and [any] libraries - mismatched headers can do that + sort of thing to you with little or no clue what's wrong (often you + get screwed when one routine does an malloc(sizeof(foo_struct)) and + passes the result to something that things foo_struct is a bit bigger, + trashing memory.... + +Here's typical crash backtrace. With --pdump, this occurs usually at +startup under X windows and xemacs -nw at least starts, while without +--pdump a similar crash is observed during build. + +#0 0x0fa460b8 in kill () at regcomp.c:637 +637 regcomp.c: No such file or directory. + in regcomp.c +(gdb) where +#0 0x0fa460b8 in kill () at regcomp.c:637 +#1 0x10087f34 in fatal_error_signal () +(gdb) quit + +This is confusing because there is no such file in the XEmacs +distribution. This is seen on (at least) the following configurations: + +uname -a: IRIX64 oct202 6.5 01091821 IP30 +XEmacs 21.4.9 "Informed Management" configured for `mips-sgi-irix6.5'. +XEmacs 21.5-b9 "brussels sprouts" configured for `mips-sgi-irix6.5'. + *** On Irix 6.5, the MIPSpro compiler gets an internal compiler error The MIPSpro Compiler (at least version 7.2.1) can't seem to handle the @@ -660,6 +717,28 @@ * Problems with running XEmacs ============================== ** General +*** At startup I get a warning on stderr about missing charsets: + + Warning: Missing charsets in String to FontSet conversion + +You need to specify appropriate charsets for your locale (usually the +value of the LANG environment variable) in .Xresources. See +etc/Emacs.ad for the relevant resources (mostly menubar fonts and +fontsets). Do not edit this file, it's purely informative. + +If you have no satisfactory fonts for iso-8859-1, XEmacs will crash. + +It looks like XFree86 4.x (the usual server on Linux and *BSD) has +some braindamage where .UTF-8 locales will always generate this +message, because the XFree86 (font)server doesn't know that UTF-8 will +use the ISO10646-1 font registry (or a Cmap or something). + +If you are not using a .UTF-8 locale and see this warning for a +character set not listed in the default in Emacs.ad, please let +xemacs-beta@xemacs.org know about it, so we can add fonts to the +appropriate fontsets and stifle this warning. (Unfortunately it's +buried in Xlib, so we can't easily get rid of it otherwise.) + *** Starting with 21.4.x, killing text is absurdly slow. See FAQ Q3.10.6. Should be available on the web near @@ -1169,6 +1248,20 @@ Emacs*EmacsFrame.geometry: 81x56--9--1 +** MacOS/X, Darwin +*** XEmacs crashes on MacOS within font-lock, or when dealing +with large compilation buffers, or in other regex applications. + +The default stack size under MacOS/X is rather small (512k as opposed +to Solaris 8M), hosing the regexp code, which uses alloca() +extensively, overflowing the stack when complex regexps are used. +Workarounds: + +1) Increase your stack size, using `ulimit -s 8192' or a (t)csh + equivalent; + +2) Recompile regex.c with REGEX_MALLOC defined. + ** AIX *** Your Delete key sends a Backspace to the terminal, using an AIXterm. @@ -1371,6 +1464,27 @@ ** Linux +*** XEmacs crashes on exit. + +This is known to happen with Lesstif version 0.93.36. It is +apparently due to breakage in Lesstif. There is a patch for Lesstif. + +Frank McIngvale says: + + Ok, 0.93.34 works, and I tracked down the crash to a section + marked "experimental" in 0.93.36. Patch attached, "works for me". + +diff -u -r lesstif-0.93.36/lib/Xm/ImageCache.c lesstif-0.93.36-mod/lib/Xm/ImageCache.c +--- lesstif-0.93.36/lib/Xm/ImageCache.c 2002-08-05 14:53:24.000000000 -0500 ++++ lesstif-0.93.36-mod/lib/Xm/ImageCache.c 2002-11-11 11:13:12.000000000 -0600 +@@ -1166,5 +1166,4 @@ + DEBUGOUT(_LtDebug0(__FILE__, NULL, "_LtImageCacheScreenDestroy (XmGetPixmapByDepth) %p\n", + s)); + +- (void) _LTHashTableForEachItem(PixmapCache, YowIter, (XtPointer)s); + } + + *** XEmacs crashes on startup, in make-frame. Typically the Lisp backtrace includes @@ -1578,7 +1692,7 @@ ** Digital UNIX/OSF/VMS/Ultrix *** XEmacs crashes on Digital Unix within font-lock, or when dealing -with large compilation buffers. +with large compilation buffers, or in other regex applications. The default stack size under Digital Unix is rather small (2M as opposed to Solaris 8M), hosing the regexp code, which uses alloca() @@ -1784,6 +1898,14 @@ ** Cygwin +*** XEmacs fails to start because cygXpm-noX4.dll was not found. + +Andy Piper sez: + + cygXpm-noX4 is part of the cygwin distribution under libraries or + graphics, but is not installed by default. You need to run the + cygwin setup again and select this package. + *** Subprocesses do not work. You do not have "tty" in your CYGWIN environment variable. This must diff --text -u 'xemacs-21.5.9/aclocal.m4' 'xemacs-21.5.10/aclocal.m4' Index: ./aclocal.m4 --- ./aclocal.m4 Sat Jan 5 16:33:11 2002 +++ ./aclocal.m4 Mon Nov 18 15:53:01 2002 @@ -84,6 +84,7 @@ wl= can_build_shared=yes +cygwin_warn= if test "$XEGCC" = yes; then wl='-Wl,' @@ -103,6 +104,10 @@ ;; *cygwin* | *mingw* ) # PIC is the default + cygwin_warn=yes + # #### Need some trickery involving import libraries that we don't + # currently support. + can_build_shared=no ;; *) dll_cflags='-fPIC' @@ -200,6 +205,10 @@ AC_MSG_RESULT(none) fi +if test -n "$cygwin_warn"; then + AC_MSG_WARN([Cannot currently build modules under Cygwin.]) +fi + dnl dnl Now comes the LD trickery. We do things differently to libtool here. dnl I believe that libtool is incorrect in trying to drive the linker diff --text -u 'xemacs-21.5.9/configure' 'xemacs-21.5.10/configure' Index: ./configure --- ./configure Wed Aug 28 14:36:21 2002 +++ ./configure Mon Dec 16 11:33:04 2002 @@ -235,6 +235,7 @@ with_prefix='yes' with_site_lisp='no' with_site_modules='yes' +need_modules_common='' with_menubars='' with_scrollbars='' with_widgets='' @@ -255,7 +256,7 @@ with_tty="" use_union_type="no" with_dnet="" -pdump="no" +pdump="" with_dragndrop_default="no" with_ipv6_cname="no" @@ -380,6 +381,7 @@ compiler | \ xemacs_compiler | \ cflags | \ + cflags_warning | \ cpp | \ cppflags | \ libs | \ @@ -857,7 +859,7 @@ fi echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:861: checking whether ln -s works" >&5 +echo "configure:863: checking whether ln -s works" >&5 rm -f conftestdata if ln -s X conftestdata 2>/dev/null @@ -1143,7 +1145,7 @@ echo $ac_n "checking "host system type"""... $ac_c" 1>&6 -echo "configure:1147: checking "host system type"" >&5 +echo "configure:1149: checking "host system type"" >&5 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'` canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"` configuration=`echo "$configuration" | sed 's/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/'` @@ -1275,7 +1277,7 @@ *-*-darwin*) opsys=darwin - RANLIB="ranlib -c" pdump=yes ;; + RANLIB="ranlib -c" ;; i586-dg-dgux*R4* | i586-dg-dgux5.4.4* ) machine=aviion opsys=dgux5-4r4 ;; m88k-dg-dgux5.4R3* | m88k-dg-dgux5.4.3* ) opsys=dgux5-4r3 ;; @@ -1576,6 +1578,12 @@ fi +if test -z "$pdump"; then + case "$opsys" in + linux* ) pdump=yes ;; *-*-darwin* ) pdump=yes ;; *) pdump=no ;; + esac +fi + if test -z "$dynamic"; then case "$opsys" in hpux* | sunos4* ) dynamic=no ;; @@ -1651,12 +1659,17 @@ else cflags_specified=no; fi +if test "${cflags_warning-unset}" != unset + then cflags_warning_specified=yes; + else cflags_warning_specified=no; +fi + xe_save_CFLAGS="$CFLAGS" # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1660: checking for $ac_word" >&5 +echo "configure:1673: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1683,7 +1696,7 @@ # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1687: checking for $ac_word" >&5 +echo "configure:1700: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1731,7 +1744,7 @@ # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1735: checking for $ac_word" >&5 +echo "configure:1748: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1760,7 +1773,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1764: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1777: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS' @@ -1773,12 +1786,12 @@ cat > conftest.$ac_ext << EOF -#line 1777 "configure" +#line 1790 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1806,19 +1819,19 @@ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1810: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1823: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1815: checking whether we are using GNU C" >&5 +echo "configure:1828: checking whether we are using GNU C" >&5 cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1835: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1836,7 +1849,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1840: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1853: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -1869,7 +1882,7 @@ # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1873: checking for $ac_word" >&5 +echo "configure:1886: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1896,7 +1909,7 @@ # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1900: checking for $ac_word" >&5 +echo "configure:1913: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1944,7 +1957,7 @@ # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1948: checking for $ac_word" >&5 +echo "configure:1961: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -1973,7 +1986,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1977: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1990: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS' @@ -1986,12 +1999,12 @@ cat > conftest.$ac_ext << EOF -#line 1990 "configure" +#line 2003 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -2019,19 +2032,19 @@ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:2023: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2036: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:2028: checking whether we are using GNU C" >&5 +echo "configure:2041: checking whether we are using GNU C" >&5 cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2048: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -2049,7 +2062,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:2053: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2066: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -2082,7 +2095,7 @@ # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2086: checking for $ac_word" >&5 +echo "configure:2099: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2109,7 +2122,7 @@ # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2113: checking for $ac_word" >&5 +echo "configure:2126: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2157,7 +2170,7 @@ # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2161: checking for $ac_word" >&5 +echo "configure:2174: checking for $ac_word" >&5 if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2186,7 +2199,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:2190: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:2203: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS' @@ -2199,12 +2212,12 @@ cat > conftest.$ac_ext << EOF -#line 2203 "configure" +#line 2216 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:2208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -2232,19 +2245,19 @@ { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:2236: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:2249: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:2241: checking whether we are using GNU C" >&5 +echo "configure:2254: checking whether we are using GNU C" >&5 cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2261: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -2262,7 +2275,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:2266: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:2279: checking whether ${CC-cc} accepts -g" >&5 echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then @@ -2293,13 +2306,40 @@ fi CFLAGS="$xe_save_CFLAGS" +if test "$GCC" = "yes"; then +cat > conftest.$ac_ext <= 3 +return 11; +#else +return 0; +#endif +} +EOF +if { (eval echo configure:2322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +then + : +else + conftest_rc="$?" + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + case "$conftest_rc" in + 11) echo "You appear to be using GCC version 3 or above."; __GCC3=yes ;; +esac +fi +rm -fr conftest* +fi + test -n "$CPP" -a -d "$CPP" && CPP= test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:2303: checking how to run the C preprocessor" >&5 +echo "configure:2343: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -2312,13 +2352,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2322: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2362: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -2329,13 +2369,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2339: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2379: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -2346,13 +2386,13 @@ rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2356: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2396: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -2378,9 +2418,9 @@ echo $ac_n "checking for AIX""... $ac_c" 1>&6 -echo "configure:2382: checking for AIX" >&5 +echo "configure:2422: checking for AIX" >&5 cat > conftest.$ac_ext <&6 -echo "configure:2411: checking for GNU libc" >&5 +echo "configure:2451: checking for GNU libc" >&5 cat > conftest.$ac_ext < int main() { @@ -2421,7 +2461,7 @@ ; return 0; } EOF -if { (eval echo configure:2425: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* have_glibc=yes else @@ -2498,7 +2538,7 @@ esac cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:2556: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -2764,17 +2804,17 @@ if test "$__USLC__" = yes; then echo $ac_n "checking for whether the -Kalloca compiler flag is needed""... $ac_c" 1>&6 -echo "configure:2768: checking for whether the -Kalloca compiler flag is needed" >&5 +echo "configure:2808: checking for whether the -Kalloca compiler flag is needed" >&5 need_kalloca=no cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2818: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* : else @@ -2785,14 +2825,14 @@ xe_save_c_switch_system="$c_switch_system" c_switch_system="$c_switch_system -Kalloca" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* need_kalloca=yes else @@ -2808,29 +2848,51 @@ fi if test "$cflags_specified" = "no"; then - if test "$GCC" = "yes"; then - CFLAGS="-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes" - CFLAGS="$CFLAGS -Wsign-compare" - if test "$xemacs_compiler" != "g++"; then - CFLAGS="$CFLAGS -Wshadow" - fi - test "$have_glibc" != "yes" && CFLAGS="$CFLAGS -Wpointer-arith" + if test "$GCC" = "yes"; then + CFLAGS="-g -O3" elif test "$__SUNPRO_C" = "yes"; then case "$opsys" in - sol2 ) CFLAGS="-v -xO4" ;; - sunos4* ) CFLAGS="-xO2";; + sol2 ) CFLAGS="-xO4" ;; + sunos4* ) CFLAGS="-xO2" ;; esac elif test "$__DECC" = "yes"; then CFLAGS="-O3" elif test "$CC" = "xlc"; then - CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000" + CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qro -qmaxmem=20000" else CFLAGS="-O" ; fi fi + +if test "$cflags_warning_specified" = "no"; then + if test "$GCC" = "yes"; then + cflags_warning="-Wall -Wno-switch -Winline -Wmissing-prototypes" + cflags_warning="$cflags_warning -Wsign-compare" + cflags_warning="$cflags_warning -Wundef -Wstrict-prototypes" + if test "$__GCC3" = "yes"; then + cflags_warning="$cflags_warning -Wpacked" + fi + if test "$xemacs_compiler" != "g++"; then + cflags_warning="$cflags_warning -Wshadow -Wmissing-declarations" + else + cflags_warning="$cflags_warning -Weffc++" + fi + test "$have_glibc" != "yes" && \ + cflags_warning="$cflags_warning -Wpointer-arith" + elif test "$__SUNPRO_C" = "yes"; then + case "$opsys" in + sol2 ) cflags_warning="-v" ;; + esac + elif test "$CC" = "xlc"; then + cflags_warning="-qinfo" + fi +fi + +CFLAGS="$cflags_warning $CFLAGS" + if test "$GCC" = "yes"; then echo $ac_n "checking for buggy gcc versions""... $ac_c" 1>&6 -echo "configure:2834: checking for buggy gcc versions" >&5 +echo "configure:2896: checking for buggy gcc versions" >&5 GCC_VERSION=`$CC --version` case `uname -s`:`uname -m`:$GCC_VERSION in *:sun4*:2.8.1|*:sun4*:egcs-2.90.*) @@ -2888,7 +2950,7 @@ if test "$pdump" != "yes"; then echo $ac_n "checking for \"-z nocombreloc\" linker flag""... $ac_c" 1>&6 -echo "configure:2892: checking for \"-z nocombreloc\" linker flag" >&5 +echo "configure:2954: checking for \"-z nocombreloc\" linker flag" >&5 case "`ld --help 2>&1`" in *-z\ nocombreloc* ) echo "$ac_t""yes" 1>&6 ld_switch_site="-z nocombreloc $ld_switch_site" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-z nocombreloc\" to \$ld_switch_site"; fi ;; @@ -2977,7 +3039,7 @@ fi echo $ac_n "checking for dynodump""... $ac_c" 1>&6 -echo "configure:2981: checking for dynodump" >&5 +echo "configure:3043: checking for dynodump" >&5 if test "$unexec" != "unexsol2.o"; then echo "$ac_t""no" 1>&6 else @@ -3015,12 +3077,12 @@ done echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6 -echo "configure:3019: checking for terminateAndUnload in -lC" >&5 +echo "configure:3081: checking for terminateAndUnload in -lC" >&5 ac_lib_var=`echo C'_'terminateAndUnload | sed 'y%./+-%__p_%'` xe_check_libs=" -lC " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3139,7 +3201,7 @@ if test "$add_runtime_path" = "yes"; then echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6 -echo "configure:3143: checking "for runtime libraries flag"" >&5 +echo "configure:3205: checking "for runtime libraries flag"" >&5 case "$opsys" in sol2 ) dash_r="-R" ;; decosf* | linux* | irix*) dash_r="-rpath " ;; @@ -3161,14 +3223,14 @@ done fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* dash_r="$try_dash_r" else @@ -3269,10 +3331,10 @@ fi after_morecore_hook_exists=yes echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6 -echo "configure:3273: checking for malloc_set_state" >&5 +echo "configure:3335: checking for malloc_set_state" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_malloc_set_state=yes" else @@ -3315,16 +3377,16 @@ fi echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6 -echo "configure:3319: checking whether __after_morecore_hook exists" >&5 +echo "configure:3381: checking whether __after_morecore_hook exists" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3390: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -3380,7 +3442,7 @@ # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3384: checking for $ac_word" >&5 +echo "configure:3446: checking for $ac_word" >&5 if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -3435,7 +3497,7 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:3439: checking for a BSD compatible install" >&5 +echo "configure:3501: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" @@ -3489,7 +3551,7 @@ # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:3493: checking for $ac_word" >&5 +echo "configure:3555: checking for $ac_word" >&5 if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. @@ -3521,15 +3583,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3525: checking for $ac_hdr" >&5 +echo "configure:3587: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3533: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3595: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3559,10 +3621,10 @@ done echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:3563: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:3625: checking for sys/wait.h that is POSIX.1 compatible" >&5 cat > conftest.$ac_ext < #include @@ -3578,7 +3640,7 @@ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:3582: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3644: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -3602,10 +3664,10 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3606: checking for ANSI C header files" >&5 +echo "configure:3668: checking for ANSI C header files" >&5 cat > conftest.$ac_ext < #include @@ -3613,7 +3675,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3617: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3679: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3630,7 +3692,7 @@ if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3648,7 +3710,7 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3666,7 +3728,7 @@ if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3677,7 +3739,7 @@ exit (0); } EOF -if { (eval echo configure:3681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:3743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -3703,10 +3765,10 @@ fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3707: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:3769: checking whether time.h and sys/time.h may both be included" >&5 cat > conftest.$ac_ext < #include @@ -3715,7 +3777,7 @@ struct tm *tp; ; return 0; } EOF -if { (eval echo configure:3719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3781: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -3739,10 +3801,10 @@ fi echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:3743: checking for sys_siglist declaration in signal.h or unistd.h" >&5 +echo "configure:3805: checking for sys_siglist declaration in signal.h or unistd.h" >&5 cat > conftest.$ac_ext < #include @@ -3754,7 +3816,7 @@ char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:3758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3820: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -3780,9 +3842,9 @@ echo $ac_n "checking for utime""... $ac_c" 1>&6 -echo "configure:3784: checking for utime" >&5 +echo "configure:3846: checking for utime" >&5 cat > conftest.$ac_ext < #include @@ -3790,7 +3852,7 @@ struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x); ; return 0; } EOF -if { (eval echo configure:3794: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3856: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 { test "$extra_verbose" = "yes" && cat << \EOF @@ -3809,10 +3871,10 @@ for ac_func in utimes do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3813: checking for $ac_func" >&5 +echo "configure:3875: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3867,10 +3929,10 @@ echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:3871: checking return type of signal handlers" >&5 +echo "configure:3933: checking return type of signal handlers" >&5 cat > conftest.$ac_ext < #include @@ -3887,7 +3949,7 @@ int i; ; return 0; } EOF -if { (eval echo configure:3891: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3953: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -3909,10 +3971,10 @@ echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3913: checking for size_t" >&5 +echo "configure:3975: checking for size_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3943,10 +4005,10 @@ fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3947: checking for pid_t" >&5 +echo "configure:4009: checking for pid_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3977,10 +4039,10 @@ fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3981: checking for uid_t in sys/types.h" >&5 +echo "configure:4043: checking for uid_t in sys/types.h" >&5 cat > conftest.$ac_ext < EOF @@ -4016,10 +4078,10 @@ fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:4020: checking for mode_t" >&5 +echo "configure:4082: checking for mode_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4050,10 +4112,10 @@ fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:4054: checking for off_t" >&5 +echo "configure:4116: checking for off_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4084,10 +4146,10 @@ fi echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 -echo "configure:4088: checking for ssize_t" >&5 +echo "configure:4150: checking for ssize_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4119,9 +4181,9 @@ echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:4123: checking for socklen_t" >&5 +echo "configure:4185: checking for socklen_t" >&5 cat > conftest.$ac_ext < socklen_t x; @@ -4130,7 +4192,7 @@ ; return 0; } EOF -if { (eval echo configure:4134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -4139,7 +4201,7 @@ rm -rf conftest* cat > conftest.$ac_ext < int accept (int, struct sockaddr *, size_t *); @@ -4148,7 +4210,7 @@ ; return 0; } EOF -if { (eval echo configure:4152: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4214: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""size_t" 1>&6 @@ -4180,9 +4242,9 @@ rm -f conftest* echo $ac_n "checking for struct timeval""... $ac_c" 1>&6 -echo "configure:4184: checking for struct timeval" >&5 +echo "configure:4246: checking for struct timeval" >&5 cat > conftest.$ac_ext < @@ -4198,7 +4260,7 @@ static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } EOF -if { (eval echo configure:4202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4264: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 HAVE_TIMEVAL=yes @@ -4220,10 +4282,10 @@ rm -f conftest* echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6 -echo "configure:4224: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:4286: checking whether struct tm is in sys/time.h or time.h" >&5 cat > conftest.$ac_ext < #include @@ -4231,7 +4293,7 @@ struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:4235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -4255,10 +4317,10 @@ fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:4259: checking for tm_zone in struct tm" >&5 +echo "configure:4321: checking for tm_zone in struct tm" >&5 cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -4266,7 +4328,7 @@ struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:4270: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -4289,10 +4351,10 @@ else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:4293: checking for tzname" >&5 +echo "configure:4355: checking for tzname" >&5 cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -4302,7 +4364,7 @@ atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:4306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -4328,10 +4390,10 @@ echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:4332: checking for working const" >&5 +echo "configure:4394: checking for working const" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4446: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -4405,7 +4467,7 @@ echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:4409: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:4471: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` cat > conftestmake <<\EOF @@ -4430,12 +4492,12 @@ echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4434: checking whether byte ordering is bigendian" >&5 +echo "configure:4496: checking whether byte ordering is bigendian" >&5 ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -4446,11 +4508,11 @@ #endif ; return 0; } EOF -if { (eval echo configure:4450: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4512: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -4461,7 +4523,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:4465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4478,7 +4540,7 @@ rm -f conftest* if test $ac_cv_c_bigendian = unknown; then cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_bigendian=no else @@ -4518,10 +4580,10 @@ echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:4522: checking size of short" >&5 +echo "configure:4584: checking size of short" >&5 cat > conftest.$ac_ext < main() @@ -4532,7 +4594,7 @@ exit(0); } EOF -if { (eval echo configure:4536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4598: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -4560,10 +4622,10 @@ exit 1 fi echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:4564: checking size of int" >&5 +echo "configure:4626: checking size of int" >&5 cat > conftest.$ac_ext < main() @@ -4574,7 +4636,7 @@ exit(0); } EOF -if { (eval echo configure:4578: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_int=`cat conftestval` else @@ -4596,10 +4658,10 @@ echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:4600: checking size of long" >&5 +echo "configure:4662: checking size of long" >&5 cat > conftest.$ac_ext < main() @@ -4610,7 +4672,7 @@ exit(0); } EOF -if { (eval echo configure:4614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long=`cat conftestval` else @@ -4632,10 +4694,10 @@ echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:4636: checking size of long long" >&5 +echo "configure:4698: checking size of long long" >&5 cat > conftest.$ac_ext < main() @@ -4646,7 +4708,7 @@ exit(0); } EOF -if { (eval echo configure:4650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long_long=`cat conftestval` else @@ -4668,10 +4730,10 @@ echo $ac_n "checking size of void *""... $ac_c" 1>&6 -echo "configure:4672: checking size of void *" >&5 +echo "configure:4734: checking size of void *" >&5 cat > conftest.$ac_ext < main() @@ -4682,7 +4744,7 @@ exit(0); } EOF -if { (eval echo configure:4686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_void_p=`cat conftestval` else @@ -4705,7 +4767,7 @@ echo $ac_n "checking for long file names""... $ac_c" 1>&6 -echo "configure:4709: checking for long file names" >&5 +echo "configure:4771: checking for long file names" >&5 ac_cv_sys_long_file_names=yes # Test for long file names in all the places we know might matter: @@ -4751,10 +4813,10 @@ echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:4755: checking for sin" >&5 +echo "configure:4817: checking for sin" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sin=yes" else @@ -4795,12 +4857,12 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 -echo "configure:4799: checking for sin in -lm" >&5 +echo "configure:4861: checking for sin in -lm" >&5 ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'` xe_check_libs=" -lm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4845,24 +4907,15 @@ fi -{ test "$extra_verbose" = "yes" && cat << \EOF - Defining LISP_FLOAT_TYPE -EOF -cat >> confdefs.h <<\EOF -#define LISP_FLOAT_TYPE 1 -EOF -} - - cat > conftest.$ac_ext < int main() { return atanh(1.0) + asinh(1.0) + acosh(1.0); ; return 0; } EOF -if { (eval echo configure:4866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_INVERSE_HYPERBOLIC @@ -4881,10 +4934,10 @@ for ac_func in mkstemp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4885: checking for $ac_func" >&5 +echo "configure:4938: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4936,14 +4989,14 @@ echo "checking type of mail spool file locking" 1>&6 -echo "configure:4940: checking type of mail spool file locking" >&5 +echo "configure:4993: checking type of mail spool file locking" >&5 for ac_func in lockf flock do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4944: checking for $ac_func" >&5 +echo "configure:4997: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5048,12 +5101,12 @@ case "$opsys" in decosf*) echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6 -echo "configure:5052: checking for cma_open in -lpthreads" >&5 +echo "configure:5105: checking for cma_open in -lpthreads" >&5 ac_lib_var=`echo pthreads'_'cma_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lpthreads " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5101,7 +5154,7 @@ echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6 -echo "configure:5105: checking whether the -xildoff compiler flag is required" >&5 +echo "configure:5158: checking whether the -xildoff compiler flag is required" >&5 if ${CC-cc} '-###' -xildon no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then if ${CC-cc} '-###' -xildoff no_such_file.c 2>&1 | grep '^[^ ]*/ild ' > /dev/null ; then echo "$ac_t""no" 1>&6; @@ -5113,7 +5166,7 @@ if test "$opsys" = "sol2"; then if test "$os_release" -ge 56; then echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6 -echo "configure:5117: checking for \"-z ignore\" linker flag" >&5 +echo "configure:5170: checking for \"-z ignore\" linker flag" >&5 case "`ld -h 2>&1`" in *-z\ ignore\|record* ) echo "$ac_t""yes" 1>&6 ld_switch_site="-z ignore $ld_switch_site" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-z ignore\" to \$ld_switch_site"; fi ;; @@ -5124,7 +5177,7 @@ echo "checking "for specified window system"" 1>&6 -echo "configure:5128: checking "for specified window system"" >&5 +echo "configure:5181: checking "for specified window system"" >&5 GNOME_CONFIG=no @@ -5132,7 +5185,7 @@ if test "$with_gnome" != "no"; then echo $ac_n "checking for GNOME configuration script""... $ac_c" 1>&6 -echo "configure:5136: checking for GNOME configuration script" >&5 +echo "configure:5189: checking for GNOME configuration script" >&5 for possible in gnome-config do possible_version=`${possible} --version 2> /dev/null` @@ -5163,7 +5216,7 @@ if test "$with_gtk" != "no";then echo $ac_n "checking for GTK configuration script""... $ac_c" 1>&6 -echo "configure:5167: checking for GTK configuration script" >&5 +echo "configure:5220: checking for GTK configuration script" >&5 for possible in gtk12-config gtk14-config gtk-config do possible_version=`${possible} --version 2> /dev/null` @@ -5185,18 +5238,18 @@ if test "${GTK_CONFIG}" != "no"; then echo $ac_n "checking gtk version""... $ac_c" 1>&6 -echo "configure:5189: checking gtk version" >&5 +echo "configure:5242: checking gtk version" >&5 GTK_VERSION=`${GTK_CONFIG} --version` echo "$ac_t""${GTK_VERSION}" 1>&6 echo $ac_n "checking gtk libs""... $ac_c" 1>&6 -echo "configure:5194: checking gtk libs" >&5 +echo "configure:5247: checking gtk libs" >&5 GTK_LIBS=`${GTK_CONFIG} --libs` libs_gtk="$libs_gtk ${GTK_LIBS}" && if test "$extra_verbose" = "yes"; then echo " Appending \"${GTK_LIBS}\" to \$libs_gtk"; fi echo "$ac_t""${GTK_LIBS}" 1>&6 echo $ac_n "checking gtk cflags""... $ac_c" 1>&6 -echo "configure:5200: checking gtk cflags" >&5 +echo "configure:5253: checking gtk cflags" >&5 GTK_CFLAGS=`${GTK_CONFIG} --cflags` if test "$GCC" = "yes"; then GTK_CFLAGS="${GTK_CFLAGS} -Wno-shadow" @@ -5206,19 +5259,19 @@ echo $ac_n "checking for main in -lgdk_imlib""... $ac_c" 1>&6 -echo "configure:5210: checking for main in -lgdk_imlib" >&5 +echo "configure:5263: checking for main in -lgdk_imlib" >&5 ac_lib_var=`echo gdk_imlib'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdk_imlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5240,12 +5293,12 @@ echo $ac_n "checking for Imlib_init in -lImlib""... $ac_c" 1>&6 -echo "configure:5244: checking for Imlib_init in -lImlib" >&5 +echo "configure:5297: checking for Imlib_init in -lImlib" >&5 ac_lib_var=`echo Imlib'_'Imlib_init | sed 'y%./+-%__p_%'` xe_check_libs=" -lImlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5279,10 +5332,10 @@ for ac_func in gdk_imlib_init do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5283: checking for $ac_func" >&5 +echo "configure:5336: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5362: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -5371,15 +5424,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5375: checking for $ac_hdr" >&5 +echo "configure:5428: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5383: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5436: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5410,19 +5463,19 @@ echo $ac_n "checking for main in -lxml""... $ac_c" 1>&6 -echo "configure:5414: checking for main in -lxml" >&5 +echo "configure:5467: checking for main in -lxml" >&5 ac_lib_var=`echo xml'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lxml " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5444,19 +5497,19 @@ echo $ac_n "checking for main in -lglade""... $ac_c" 1>&6 -echo "configure:5448: checking for main in -lglade" >&5 +echo "configure:5501: checking for main in -lglade" >&5 ac_lib_var=`echo glade'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lglade " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5478,19 +5531,19 @@ echo $ac_n "checking for main in -lglade-gnome""... $ac_c" 1>&6 -echo "configure:5482: checking for main in -lglade-gnome" >&5 +echo "configure:5535: checking for main in -lglade-gnome" >&5 ac_lib_var=`echo glade-gnome'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lglade-gnome " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5511,7 +5564,7 @@ cat > conftest.$ac_ext < EOF @@ -5570,7 +5623,7 @@ # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:5574: checking for X" >&5 +echo "configure:5627: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -5630,12 +5683,12 @@ # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5639: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5692: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5704,14 +5757,14 @@ ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5768: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -5820,17 +5873,17 @@ case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:5824: checking whether -R must be followed by a space" >&5 +echo "configure:5877: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -5846,14 +5899,14 @@ else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -5889,12 +5942,12 @@ else echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:5893: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:5946: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` xe_check_libs=" -ldnet " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5929,12 +5982,12 @@ if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:5933: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:5986: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` xe_check_libs=" -ldnet_stub " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6002: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5974,10 +6027,10 @@ # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:5978: checking for gethostbyname" >&5 +echo "configure:6031: checking for gethostbyname" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6057: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -6021,12 +6074,12 @@ if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:6025: checking for gethostbyname in -lnsl" >&5 +echo "configure:6078: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` xe_check_libs=" -lnsl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6067,10 +6120,10 @@ # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:6071: checking for connect" >&5 +echo "configure:6124: checking for connect" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6150: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -6116,12 +6169,12 @@ xe_msg_checking="for connect in -lsocket" test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6120: checking "$xe_msg_checking"" >&5 +echo "configure:6173: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` xe_check_libs=" -lsocket $X_EXTRA_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6156,10 +6209,10 @@ # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:6160: checking for remove" >&5 +echo "configure:6213: checking for remove" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -6203,12 +6256,12 @@ if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:6207: checking for remove in -lposix" >&5 +echo "configure:6260: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` xe_check_libs=" -lposix " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6243,10 +6296,10 @@ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:6247: checking for shmat" >&5 +echo "configure:6300: checking for shmat" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -6290,12 +6343,12 @@ if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:6294: checking for shmat in -lipc" >&5 +echo "configure:6347: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` xe_check_libs=" -lipc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6342,12 +6395,12 @@ xe_msg_checking="for IceConnectionNumber in -lICE" test -n "$X_EXTRA_LIBS" && xe_msg_checking="$xe_msg_checking using extra libs $X_EXTRA_LIBS" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6346: checking "$xe_msg_checking"" >&5 +echo "configure:6399: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` xe_check_libs=" -lICE $X_EXTRA_LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6525,7 +6578,7 @@ echo "checking for X defines extracted by xmkmf" 1>&6 -echo "configure:6529: checking for X defines extracted by xmkmf" >&5 +echo "configure:6582: checking for X defines extracted by xmkmf" >&5 rm -fr conftestdir if mkdir conftestdir; then cd conftestdir @@ -6574,15 +6627,15 @@ ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6 -echo "configure:6578: checking for X11/Intrinsic.h" >&5 +echo "configure:6631: checking for X11/Intrinsic.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6586: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6639: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6606,12 +6659,12 @@ echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:6610: checking for XOpenDisplay in -lX11" >&5 +echo "configure:6663: checking for XOpenDisplay in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6647,12 +6700,12 @@ xe_msg_checking="for XGetFontProperty in -lX11" test -n "-b i486-linuxaout" && xe_msg_checking="$xe_msg_checking using extra libs -b i486-linuxaout" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:6651: checking "$xe_msg_checking"" >&5 +echo "configure:6704: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo X11'_'XGetFontProperty | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 -b i486-linuxaout" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6690,12 +6743,12 @@ echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 -echo "configure:6694: checking for XShapeSelectInput in -lXext" >&5 +echo "configure:6747: checking for XShapeSelectInput in -lXext" >&5 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'` xe_check_libs=" -lXext " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6729,12 +6782,12 @@ echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6 -echo "configure:6733: checking for XtOpenDisplay in -lXt" >&5 +echo "configure:6786: checking for XtOpenDisplay in -lXt" >&5 ac_lib_var=`echo Xt'_'XtOpenDisplay | sed 'y%./+-%__p_%'` xe_check_libs=" -lXt " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6768,14 +6821,14 @@ echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6 -echo "configure:6772: checking the version of X11 being used" >&5 +echo "configure:6825: checking the version of X11 being used" >&5 cat > conftest.$ac_ext < int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; } EOF -if { (eval echo configure:6779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:6832: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest foobar; x11_release=$? else @@ -6806,10 +6859,10 @@ for ac_func in XConvertCase do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6810: checking for $ac_func" >&5 +echo "configure:6863: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6889: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6864,15 +6917,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6868: checking for $ac_hdr" >&5 +echo "configure:6921: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6876: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6905,10 +6958,10 @@ for ac_func in XRegisterIMInstantiateCallback do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6909: checking for $ac_func" >&5 +echo "configure:6962: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -6959,9 +7012,9 @@ done echo $ac_n "checking for standard XRegisterIMInstantiateCallback prototype""... $ac_c" 1>&6 -echo "configure:6963: checking for standard XRegisterIMInstantiateCallback prototype" >&5 +echo "configure:7016: checking for standard XRegisterIMInstantiateCallback prototype" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:7030: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -6994,12 +7047,12 @@ test -z "$with_xmu" && { echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6 -echo "configure:6998: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 +echo "configure:7051: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 ac_lib_var=`echo Xmu'_'XmuReadBitmapDataFromFile | sed 'y%./+-%__p_%'` xe_check_libs=" -lXmu " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7067: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7049,19 +7102,19 @@ echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6 -echo "configure:7053: checking for main in -lXbsd" >&5 +echo "configure:7106: checking for main in -lXbsd" >&5 ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lXbsd " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7098,22 +7151,22 @@ fi if test "$with_msw" != "no"; then echo "checking for MS-Windows" 1>&6 -echo "configure:7102: checking for MS-Windows" >&5 +echo "configure:7155: checking for MS-Windows" >&5 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6 -echo "configure:7105: checking for main in -lgdi32" >&5 +echo "configure:7158: checking for main in -lgdi32" >&5 ac_lib_var=`echo gdi32'_'main | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdi32 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7170: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7164,12 +7217,12 @@ test "$with_widgets" != "no" && with_widgets=msw fi cat > conftest.$ac_ext < int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; } EOF -if { (eval echo configure:7173: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:7226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_MSG_SELECT @@ -7230,15 +7283,15 @@ if test "$with_x11" = "yes"; then ac_safe=`echo "X11/extensions/shape.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/extensions/shape.h""... $ac_c" 1>&6 -echo "configure:7234: checking for X11/extensions/shape.h" >&5 +echo "configure:7287: checking for X11/extensions/shape.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7242: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7295: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7288,7 +7341,7 @@ esac echo "checking for WM_COMMAND option" 1>&6 -echo "configure:7292: checking for WM_COMMAND option" >&5; +echo "configure:7345: checking for WM_COMMAND option" >&5; if test "$with_wmcommand" != "no"; then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_WMCOMMAND @@ -7303,15 +7356,15 @@ test -z "$with_xauth" && test "$window_system" = "none" && with_xauth=no test -z "$with_xauth" && { ac_safe=`echo "X11/Xauth.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xauth.h""... $ac_c" 1>&6 -echo "configure:7307: checking for X11/Xauth.h" >&5 +echo "configure:7360: checking for X11/Xauth.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7315: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7334,12 +7387,12 @@ } test -z "$with_xauth" && { echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6 -echo "configure:7338: checking for XauGetAuthByAddr in -lXau" >&5 +echo "configure:7391: checking for XauGetAuthByAddr in -lXau" >&5 ac_lib_var=`echo Xau'_'XauGetAuthByAddr | sed 'y%./+-%__p_%'` xe_check_libs=" -lXau " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7407: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7391,19 +7444,28 @@ -if test "$with_tooltalk" != "no" ; then - for dir in "" "Tt/" "desktop/" ; do - ac_safe=`echo "${dir}tt_c.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for ${dir}tt_c.h""... $ac_c" 1>&6 -echo "configure:7399: checking for ${dir}tt_c.h" >&5 + +test -n "$xemacs_compiler" && XEMACS_CC="$xemacs_compiler" +: ${XEMACS_CC:="$CC"} + +if test "$with_modules" != "no"; then + echo "checking for module support" 1>&6 +echo "configure:7454: checking for module support" >&5 + + if test "$with_msw" = "yes"; then + have_dl=yes; + else + ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 +echo "configure:7461: checking for dlfcn.h" >&5 cat > conftest.$ac_ext < +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7407: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7469: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7418,145 +7480,126 @@ rm -f conftest* if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - tt_c_h_file="${dir}tt_c.h"; break + + echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6 +echo "configure:7486: checking for dlopen in -lc" >&5 + cat > conftest.$ac_ext < +int main() { + dlopen ("", 0); +; return 0; } +EOF +if { (eval echo configure:7495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + have_dl=yes else - echo "$ac_t""no" 1>&6 -fi - - done - if test -z "$tt_c_h_file"; then - if test "$with_tooltalk" = "yes"; then - (echo "$progname: Usage error:" -echo " " "Unable to find required tooltalk header files." -echo " Use \`$progname --help' to show usage.") >&2 && exit 1 - fi - with_tooltalk=no - fi -fi -if test "$with_tooltalk" != "no" ; then - for extra_libs in "" "-lI18N -lce" "-lcxx"; do - -xe_msg_checking="for tt_message_create in -ltt" -test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs" -echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7443: checking "$xe_msg_checking"" >&5 -ac_lib_var=`echo tt'_'tt_message_create | sed 'y%./+-%__p_%'` - -xe_check_libs=" -ltt $extra_libs" -cat > conftest.$ac_ext <&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + + echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +echo "configure:7504: checking for dlopen in -ldl" >&5 + ac_save_LIBS="$LIBS" + LIBS="-ldl $LIBS" + cat > conftest.$ac_ext < int main() { -tt_message_create() + dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:7459: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + have_dl=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + LIBS="$ac_save_LIBS" +fi +rm -f conftest* + ac_save_LIBS= fi rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - tt_libs="-ltt $extra_libs"; break else echo "$ac_t""no" 1>&6 -: fi - - done - if test -z "$tt_libs"; then - if test "$with_tooltalk" = "yes"; then - (echo "$progname: Usage error:" -echo " " "Unable to find required tooltalk libraries." -echo " Use \`$progname --help' to show usage.") >&2 && exit 1 - fi - with_tooltalk=no - fi -fi -test -z "$with_tooltalk" && with_tooltalk=yes -if test "$with_tooltalk" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining TOOLTALK + if test -n "$have_dl"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_DLOPEN EOF cat >> confdefs.h <<\EOF -#define TOOLTALK 1 -EOF -} - - { test "$extra_verbose" = "yes" && cat << EOF - Defining TT_C_H_FILE = "$tt_c_h_file" -EOF -cat >> confdefs.h <&6 -echo "configure:7513: checking for Dt/Dt.h" >&5 + else + +echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 +echo "configure:7544: checking for shl_load in -ldld" >&5 +ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` +xe_check_libs=" -ldld " cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load(); + +int main() { +shl_load() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:7560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - : + libdl=dld have_dl=yes; + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_SHL_LOAD +EOF +cat >> confdefs.h <<\EOF +#define HAVE_SHL_LOAD 1 +EOF +} + else echo "$ac_t""no" 1>&6 -with_cde=no -fi - } -test -z "$with_cde" && { -echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6 -echo "configure:7544: checking for DtDndDragStart in -lDtSvc" >&5 -ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'` -xe_check_libs=" -lDtSvc " +echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 +echo "configure:7587: checking for dld_init in -ldld" >&5 +ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'` + +xe_check_libs=" -ldld " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7570,350 +7613,628 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -with_cde=no -fi - - } -if test "$with_dragndrop" = "no" ; then - if test "$with_cde" = "yes" ; then - echo "configure: warning: --with-cde forced to \`no'; no generic Drag'n'Drop support" 1>&2 - fi - with_cde=no -fi -test -z "$with_cde" && with_cde=yes -if test "$with_cde" = "yes" ; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_CDE + libdl=dld have_dl=yes; + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_DLD_INIT EOF cat >> confdefs.h <<\EOF -#define HAVE_CDE 1 +#define HAVE_DLD_INIT 1 EOF } - libs_x="-lDtSvc $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lDtSvc\" to \$libs_x"; fi - dragndrop_proto="$dragndrop_proto CDE" && if test "$extra_verbose" = "yes"; then echo " Appending \"CDE\" to \$dragndrop_proto"; fi - with_tooltalk=yes # CDE requires Tooltalk - need_motif=yes # CDE requires Motif +else + echo "$ac_t""no" 1>&6 fi -test "$window_system" != "x11" && with_offix=no -if test "$with_xmu" != yes -a "$with_x11" = yes; then - if test "$with_offix" = "yes" ; then - echo "configure: warning: --with-offix forced to \`no'; no real Xmu support" 1>&2 - fi - with_offix=no -fi -if test "$with_dragndrop" = no; then - if test "$with_offix" = "yes" ; then - echo "configure: warning: --with-offix forced to \`no'; no generic Drag'n'Drop support" 1>&2 - fi - with_offix=no -fi -if test "$with_cde" = yes; then - if test "$with_offix" = "yes" ; then - echo "configure: warning: --with-offix forced to \`no'; CDE already found" 1>&2 - fi - with_offix=no -fi -test -z "$with_offix" && with_offix=no -if test "$with_offix" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_OFFIX_DND -EOF -cat >> confdefs.h <<\EOF -#define HAVE_OFFIX_DND 1 -EOF -} - dnd_objs="$dnd_objs offix.o" && if test "$extra_verbose" = "yes"; then echo " Appending \"offix.o\" to \$dnd_objs"; fi - dragndrop_proto="$dragndrop_proto OffiX" && if test "$extra_verbose" = "yes"; then echo " Appending \"OffiX\" to \$dragndrop_proto"; fi -fi -if test "$with_gtk" = "yes"; then - dragndrop_proto="$dragndrop_proto GTK" && if test "$extra_verbose" = "yes"; then echo " Appending \"GTK\" to \$dragndrop_proto"; fi fi -if test "$with_dragndrop" != "no" ; then - echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6 -echo "configure:7641: checking if drag and drop API is needed" >&5 - if test -n "$dragndrop_proto" ; then - with_dragndrop=yes - echo "$ac_t""yes (${dragndrop_proto} )" 1>&6 - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_DRAGNDROP -EOF -cat >> confdefs.h <<\EOF -#define HAVE_DRAGNDROP 1 -EOF -} - extra_objs="$extra_objs dragdrop.o" && if test "$extra_verbose" = "yes"; then echo " Appending \"dragdrop.o\" to \$extra_objs"; fi - else - with_dragndrop=no - echo "$ac_t""no" 1>&6 - fi -fi + fi + fi + if test -n "$have_dl"; then + +dll_ld= +dll_ldflags= +dll_cflags= +dll_post= +dll_ldo="-o" +ld_dynamic_link_flags= +xehost=$canonical +xealias=$internal_configuration -echo "checking for LDAP" 1>&6 -echo "configure:7661: checking for LDAP" >&5 -test -z "$with_ldap" && { ac_safe=`echo "ldap.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for ldap.h""... $ac_c" 1>&6 -echo "configure:7664: checking for ldap.h" >&5 +echo "checking how to build dynamic libraries for ${xehost}" 1>&6 +echo "configure:7648: checking how to build dynamic libraries for ${xehost}" >&5 +# Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. +case "$xehost" in +*-*-linux-gnu*) ;; +*-*-linux*) xehost=`echo $xehost | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac -cat > conftest.$ac_ext <&6 +echo "configure:7676: checking checking whether we are using GNU C" >&5 + cat > conftest.$ac_ext < + +#ifdef __GNUC__ + yes; +#endif + EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7672: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + XEGCC=yes else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + XEGCC=no fi rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : + + echo "$ac_t""${XEGCC}" 1>&6 +fi + +echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6 +echo "configure:7700: checking how to produce PIC code" >&5 +wl= + +can_build_shared=yes +cygwin_warn= +if test "$XEGCC" = yes; then + wl='-Wl,' + + case "$xehost_os" in + aix[3-9]* | irix[5-9]* | osf[3-9]) + # PIC is the default for these OSes. + ;; + + os2*) + # We can build DLLs from non-PIC. + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + dll_cflags='-m68020 -resident32 -malways-restore-a4' + ;; + *cygwin* | *mingw* ) + # PIC is the default + cygwin_warn=yes + # #### Need some trickery involving import libraries that we don't + # currently support. + can_build_shared=no + ;; + *) + dll_cflags='-fPIC' + ;; + esac else - echo "$ac_t""no" 1>&6 -with_ldap=no + # PORTME Check for PIC flags for the system compiler. + case "$xehost_os" in + hpux9* | hpux1[0-9]*) + # Is there a better link_static_flag that works with the bundled CC? + wl='-Wl,' + dll_cflags='+Z' + ;; + + irix[5-9]*) + wl='-Wl,' + # PIC (with -KPIC) is the default. + ;; + + os2*) + # We can build DLLs from non-PIC. + ;; + + osf[3-9]*) + # All OSF/1 code is PIC. + wl='-Wl,' + ;; + + aix[3-9]*) + # All AIX code is PIC. + wl='-Wl,' + ;; + + sco3.2v5*) + dll_cflags='-belf -Kpic' + wl='-Wl,' + ;; + + unixware*) + dll_cflags="-KPIC" + wl="-Wl," + ;; + + sysv4*) + dll_cflags="-KPIC" + wl="-Wl," + ;; + + sysv5*) + dll_cflags="-KPIC" + wl="-Wl," + ;; + + solaris2*) + dll_cflags='-KPIC' + wl='-Wl,' + ;; + + sunos4*) + dll_cflags='-PIC' + wl='-Qoption ld ' + ;; + + uts4*) + dll_cflags='-pic' + ;; + + *) + can_build_shared=no + ;; + esac fi - } -test -z "$with_ldap" && { ac_safe=`echo "lber.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for lber.h""... $ac_c" 1>&6 -echo "configure:7695: checking for lber.h" >&5 -cat > conftest.$ac_ext <&6 + + # Check to make sure the dll_cflags actually works. + echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" 1>&6 +echo "configure:7806: checking if PIC flag ${dll_cflags} really works" >&5 + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $dll_cflags -DPIC" + cat > conftest.$ac_ext < + +int main() { +int x=0; +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7703: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:7817: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + + # On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also + # reports no error. So, we need to grep stderr for (Bundled). + if grep '(Bundled)' config.log >/dev/null; then + echo "$ac_t""no" 1>&6 + can_build_shared=no + dll_cflags= + else + echo "$ac_t""yes" 1>&6 + fi else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + echo "$ac_t""no" 1>&6 + can_build_shared=no + dll_cflags= fi rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : + CFLAGS="$save_CFLAGS" else - echo "$ac_t""no" 1>&6 -with_ldap=no + echo "$ac_t""none" 1>&6 fi - } -if test "$with_ldap" != "no"; then - -echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6 -echo "configure:7727: checking for ldap_search in -lldap" >&5 -ac_lib_var=`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'` - -xe_check_libs=" -lldap " -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" +if test -n "$cygwin_warn"; then + echo "configure: warning: Cannot currently build modules under Cygwin." 1>&2 fi -rm -f conftest* -xe_check_libs="" -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - with_ldap_nolber=yes -else - echo "$ac_t""no" 1>&6 -with_ldap_nolber=no -fi +if test "$can_build_shared" = "yes"; then +cc_produces_so=no +xldf= +xcldf= +echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6 +echo "configure:7852: checking if C compiler can produce shared libraries" >&5 +if test "$XEGCC" = yes; then + xcldf="-shared" + xldf="-shared" +else # Not using GCC + case "$xehost_os" in + aix[3-9]*) + xldf="-bE:ELLSONAME.exp -H512 -T512 -bhalt:4 -bM:SRE -bnoentry -lc" + xcldf="${wl}-bE:ELLSONAME.exp ${wl}-H512 ${wl}-T512 ${wl}-bhalt:4 ${wl}-bM:SRE ${wl}-bnoentry ${wl}-lc" + ;; + freebsd2* | netbsd* | openbsd*) + xldf="-Bshareable" + xcldf="${wl}-Bshareable" + ;; - test "$with_ldap_nolber" = "no" && { -xe_msg_checking="for ldap_open in -lldap" -test -n "-llber" && xe_msg_checking="$xe_msg_checking using extra libs -llber" -echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7768: checking "$xe_msg_checking"" >&5 -ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` + freebsd3*) + xcldf="-shared" + ;; -xe_check_libs=" -lldap -llber" -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -xe_check_libs="" + irix[5-9]* | osf[3-9]*) + xcldf="${wl}-shared" + xldf="-shared" + ;; -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - with_ldap_lber=yes -else - echo "$ac_t""no" 1>&6 -with_ldap_lber=no -fi + sco3.2v5* | unixware* | sysv5* | sysv4* | solaris2* | solaris7* | uts4*) + xcldf="-G" + xldf="-G" + ;; - } - test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" && { -xe_msg_checking="for ldap_open in -lldap" -test -n "-llber -lkrb" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb" -echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7809: checking "$xe_msg_checking"" >&5 -ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` + sunos4*) + xcldf="${wl}-assert ${wl}pure-text ${wl}-Bstatic" + xldf="-assert pure-text -Bstatic" + ;; + esac +fi # End if if we are using gcc -xe_check_libs=" -lldap -llber -lkrb" -cat > conftest.$ac_ext <&5' + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7910: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + cc_produces_so=yes else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + cc_produces_so=no fi rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - with_ldap_krb=yes + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + xe_libs=$save_xe_libs + ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5' else - echo "$ac_t""no" 1>&6 -with_ldap_krb=no + cc_produces_so=no fi +echo "$ac_t""${cc_produces_so}" 1>&6 - } - test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" -a "$with_ldap_krb" = "no" && { -xe_msg_checking="for ldap_open in -lldap" -test -n "-llber -lkrb -ldes" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb -ldes" -echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7850: checking "$xe_msg_checking"" >&5 -ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` +LTLD=$LD +if test -z "$LTLD"; then + ac_prog=ld + if test "$XEGCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 +echo "configure:7935: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + /*) + if test -z "$LTLD"; then +# case "$ac_prog" in +# *gcc-lib*) LTLD="$CC" +# ;; +# *) + LTLD="$ac_prog" +# ;; +# esac + fi + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + else + echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 +echo "configure:7961: checking for GNU ld" >&5 + fi -xe_check_libs=" -lldap -llber -lkrb -ldes" -cat > conftest.$ac_ext <&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + xe_gnu_ld=yes + else + xe_gnu_ld=no + fi + fi + done + IFS="$ac_save_ifs" + fi -int main() { -ldap_open() -; return 0; } -EOF -if { (eval echo configure:7866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -xe_check_libs="" + if test -n "$LTLD"; then + echo "$ac_t""${LTLD}" 1>&6 + else + echo "$ac_t""no" 1>&6 + fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - with_ldap_krbdes=yes -else - echo "$ac_t""no" 1>&6 -with_ldap_krbdes=no + if test -z "$LTLD" -a "$cc_produces_so" = no; then + { echo "configure: error: no acceptable linker found in \$PATH" 1>&2; exit 1; } + exit 1 + fi fi - } - test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" -o "$with_ldap_krb" = "yes" -o "$with_ldap_krbdes" = "yes" \) && with_ldap=yes +ld_dynamic_link_flags= + +# Check to see if it really is or isn't GNU ld. +echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6 +echo "configure:7999: checking if the linker is GNU ld" >&5 +# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LTLD -v 2>&1 &5; then + xe_gnu_ld=yes +else + xe_gnu_ld=no fi -if test "$with_ldap" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_LDAP -EOF -cat >> confdefs.h <<\EOF -#define HAVE_LDAP 1 -EOF -} +echo "$ac_t""${xe_gnu_ld}" 1>&6 - if test "$with_ldap_nolber" = "yes" ; then - LIBS="-lldap $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lldap\" to \$LIBS"; fi - else - if test "$with_ldap_krb" = "yes" ; then - LIBS="-lkrb $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lkrb\" to \$LIBS"; fi - fi - if test "$with_ldap_krbdes" = "yes" ; then - LIBS="-ldes $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ldes\" to \$LIBS"; fi - LIBS="-lkrb $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lkrb\" to \$LIBS"; fi +case "$xehost_os" in + amigaos* | sunos4*) + # On these operating systems, we should treat GNU ld like the system ld. + gnu_ld_acts_native=yes + ;; + *) + gnu_ld_acts_native=no + ;; +esac + +if test "$cc_produces_so" = "yes"; then + dll_ld=$CC + dll_ldflags=$xcldf + can_build_shared=yes + ld_shlibs=yes +else + # OK - only NOW do we futz about with ld. + # See if the linker supports building shared libraries. + echo $ac_n "checking whether the linker supports shared libraries""... $ac_c" 1>&6 +echo "configure:8027: checking whether the linker supports shared libraries" >&5 + dll_ld=$CC + dll_ldflags=$LDFLAGS + ld_shlibs=yes + can_build_shared=yes + if test "$xe_gnu_ld" = yes && test "$gnu_ld_acts_native" != yes; then + # See if GNU ld supports shared libraries. + if $LTLD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + dll_ld=$CC + dll_ldflags="-shared" + ld_shlibs=yes + else + ld_shlibs=no fi - LIBS="-llber $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-llber\" to \$LIBS"; fi - LIBS="-lldap $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lldap\" to \$LIBS"; fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case "$xehost_os" in + aix3*) + dll_ld=$LTLD + dll_ldflags=$xldf + ;; + + aix[4-9]*) + dll_ldflags=$xcldf + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # doesn't break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + dll_ld=$LTLD + dll_ldflags=$xldf + dll_post="/usr/lib/c++rt0.o" + ;; + + # Unfortunately, older versions of FreeBSD 2 don't have this feature. + freebsd2*) + dll_ld=$LTLD + dll_ldflags="-Bshareable" + ;; + + # FreeBSD 3, at last, uses gcc -shared to do shared libraries. + freebsd3*) + dll_ldflags="-shared" + ;; + + hpux*) + dll_ld=$LTLD + dll_ldflags=$xldf + ;; + + irix[5-9]*) + dll_ld=$LTLD + dll_ldflags=$xldf + ;; + + netbsd*) + # Tested with NetBSD 1.2 ld + dll_ld=$LTLD + dll_ldflags=$xldf + ;; + + openbsd*) + dll_ld=$LTLD + dll_ldflags=$xldf + ;; + + osf3* | osf4*) + dll_ld=$LTLD + dll_ldflags=$xldf + ;; + + # For both SCO and Solaris we MAY want to have LDFLAGS include -z text + sco3.2v5* | unixware* | sysv5* | sysv4* | solaris2* | solaris7*) + dll_ld=$LTLD + case "$dll_ld" in + *gcc*) dll_ldflags="-shared" + dll_ld=$CC + ;; + *) dll_ldflags="-G" + ;; + esac + ;; + + sunos4*) + if test "$XEGCC" = yes; then + dll_ld=$CC + else + dll_ld=$LTLD + fi + dll_ldflags=$xldf + ;; + + uts4*) + dll_ld=$LTLD + dll_ldflags="-G" + ;; + + bsdi*) + dll_ldflags="-r" + dll_ld="shlicc2" + ;; + + *) + ld_shlibs=no + can_build_shared=no + ;; + esac fi - for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result + echo "$ac_t""${ld_shlibs}" 1>&6 + if test "$ld_shlibs" = "no"; then + can_build_shared=no + fi +fi # End of if cc_produces_so = no + + +if test "$xe_gnu_ld" = yes; then + if test "$ld_shlibs" = yes; then + ld_dynamic_link_flags="${wl}-export-dynamic" + fi +fi + +if test -z "$ld_dynamic_link_flags"; then + case "$xehost_os" in + aix[3-9]*) + ld_dynamic_link_flags= + ;; + + freebsd2.2*) + ld_dynamic_link_flags= + ;; + + freebsd2*) + ld_dynamic_link_flags= + ;; + + freebsd3*) + ld_dynamic_link_flags= + ;; + + hpux*) + ld_dynamic_link_flags="${wl}-E" + ;; + + irix[5-9]*) + ld_dynamic_link_flags= + ;; + + netbsd*) + ld_dynamic_link_flags= + ;; + + openbsd*) + ld_dynamic_link_flags= + ;; + + osf3* | osf4*) + ld_dynamic_link_flags= + ;; + + solaris2* | solaris7*) + ld_dynamic_link_flags= + ;; + + sco3.2v5* | unixware* | sysv5* | sysv4*) + ld_dynamic_link_flags="${wl}-Bexport" + ;; + + sunos4*) + ld_dynamic_link_flags= + ;; + + uts4*) + ld_dynamic_link_flags= + ;; + + bsdi*) + ld_dynamic_link_flags= + ;; + + esac +fi # End of if -z ld_dynamic_link_flags +fi # End of if test "$can_build_shared" = "yes" + + + + + + + + + fi + + if test "$can_build_shared" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_SHLIB +EOF +cat >> confdefs.h <<\EOF +#define HAVE_SHLIB 1 +EOF +} + + INSTALL_ARCH_DEP_SUBDIR="$INSTALL_ARCH_DEP_SUBDIR src" && if test "$extra_verbose" = "yes"; then echo " Appending \"src\" to \$INSTALL_ARCH_DEP_SUBDIR"; fi + test -n "$libdl" && LIBS="-l${libdl} $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-l${libdl}\" to \$LIBS"; fi + for ac_func in dlerror _dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:7914: checking for $ac_func" >&5 +echo "configure:8235: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8261: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -7963,24 +8284,50 @@ fi done + with_modules=yes + MOD_CC="../../lib-src/ellcc" + MODCFLAGS="\$(CFLAGS) --mode=compile --mod-output=\$@ -I../../src -I\$(srcdir)/../../src" + INSTALLPATH="\$(moduledir)" + MOD_INSTALL_PROGRAM=${INSTALL_PROGRAM} + OBJECT_TO_BUILD="\$(MODNAME).ell" + else + if test "$with_modules" = "yes"; then + { echo "Error:" "Required module support cannot be provided." >&2; exit 1; } + else + echo " No module support." + fi + with_modules=no + MOD_CC="$XEMACS_CC" + MODCFLAGS="\$(CFLAGS) -I../../src -I\$(srcdir)/../../src" + INSTALLPATH="" + MOD_INSTALL_PROGRAM="true" + OBJECT_TO_BUILD="\$(MODNAME).o" + fi fi +MODARCHDIR= +MAKE_DOCFILE="../../lib-src/make-docfile" -if test "$with_postgresql" != "no"; then - echo "checking for PostgreSQL" 1>&6 -echo "configure:7971: checking for PostgreSQL" >&5 - for header_dir in "" "pgsql/" "postgresql/"; do - ac_safe=`echo "${header_dir}libpq-fe.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for ${header_dir}libpq-fe.h""... $ac_c" 1>&6 -echo "configure:7976: checking for ${header_dir}libpq-fe.h" >&5 + + + + + + + +if test "$with_tooltalk" != "no" ; then + for dir in "" "Tt/" "desktop/" ; do + ac_safe=`echo "${dir}tt_c.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for ${dir}tt_c.h""... $ac_c" 1>&6 +echo "configure:8323: checking for ${dir}tt_c.h" >&5 cat > conftest.$ac_ext < +#include <${dir}tt_c.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8331: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7995,81 +8342,44 @@ rm -f conftest* if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - libpq_fe_h_file=${header_dir}libpq-fe.h; break + tt_c_h_file="${dir}tt_c.h"; break else echo "$ac_t""no" 1>&6 fi done - - test -n "$libpq_fe_h_file" && { -echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6 -echo "configure:8008: checking for PQconnectdb in -lpq" >&5 -ac_lib_var=`echo pq'_'PQconnectdb | sed 'y%./+-%__p_%'` - -xe_check_libs=" -lpq " -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - have_libpq=yes -else - echo "$ac_t""no" 1>&6 + if test -z "$tt_c_h_file"; then + if test "$with_tooltalk" = "yes"; then + (echo "$progname: Usage error:" +echo " " "Unable to find required tooltalk header files." +echo " Use \`$progname --help' to show usage.") >&2 && exit 1 + fi + with_tooltalk=no + fi fi - - } - - if test -n "$libpq_fe_h_file" -a "$have_libpq" = "yes"; then - with_postgresql=yes - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_POSTGRESQL -EOF -cat >> confdefs.h <<\EOF -#define HAVE_POSTGRESQL 1 -EOF -} - +if test "$with_tooltalk" != "no" ; then + for extra_libs in "" "-lI18N -lce" "-lcxx"; do -echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6 -echo "configure:8057: checking for PQconnectStart in -lpq" >&5 -ac_lib_var=`echo pq'_'PQconnectStart | sed 'y%./+-%__p_%'` +xe_msg_checking="for tt_message_create in -ltt" +test -n "$extra_libs" && xe_msg_checking="$xe_msg_checking using extra libs $extra_libs" +echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 +echo "configure:8367: checking "$xe_msg_checking"" >&5 +ac_lib_var=`echo tt'_'tt_message_create | sed 'y%./+-%__p_%'` -xe_check_libs=" -lpq " +xe_check_libs=" -ltt $extra_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8083,164 +8393,55 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - with_postgresqlv7=yes; - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_POSTGRESQLV7 -EOF -cat >> confdefs.h <<\EOF -#define HAVE_POSTGRESQLV7 1 -EOF -} - + tt_libs="-ltt $extra_libs"; break else echo "$ac_t""no" 1>&6 +: fi - { test "$extra_verbose" = "yes" && cat << EOF - Defining LIBPQ_FE_H_FILE = "$libpq_fe_h_file" -EOF -cat >> confdefs.h <&2; exit 1; } - fi -fi - - -if test "$window_system" != "none"; then - echo "checking for graphics libraries" 1>&6 -echo "configure:8118: checking for graphics libraries" >&5 - - libpath_xpm= - incpath_xpm= - case "$opsys" in - cygwin*) - cygwin_top=`eval "gcc -print-file-name=libc.a"` ; - cygwin_top=`eval "dirname ${cygwin_top}"`; - cygwin_top="${cygwin_top}/.."; - case "$window_system" in - x11) ;; - msw) libpath_xpm="-L${cygwin_top}/lib/noX" - incpath_xpm="-I${cygwin_top}/include/noX" - ;; - gtk) ;; - none) ;; - *) ;; - esac - ;; - *) ;; - esac - xpm_problem="" - if test -z "$with_xpm"; then - CFLAGS=""$incpath_xpm" $CFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi - LDFLAGS=""$libpath_xpm" $LDFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$libpath_xpm"\" to \$LDFLAGS"; fi - echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6 -echo "configure:8144: checking for Xpm - no older than 3.4f" >&5 - xe_check_libs=-lXpm - cat > conftest.$ac_ext < - int main(int c, char **v) { - return c == 1 ? 0 : - XpmIncludeVersion != XpmLibraryVersion() ? 1 : - XpmIncludeVersion < 30406 ? 2 : 0 ;} -EOF -if { (eval echo configure:8156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 -then - ./conftest dummy_arg; xpm_status=$?; - if test "$xpm_status" = "0"; then - with_xpm=yes; - else - with_xpm=no; - if test "$xpm_status" = "1"; then - xpm_problem="Xpm library version and header file version don't match!" - elif test "$xpm_status" = "2"; then - xpm_problem="Xpm library version is too old!" - else - xpm_problem="Internal xpm detection logic error!" - fi - echo " -*** WARNING *** $xpm_problem - I'm not touching that with a 10-foot pole! - If you really want to use the installed version of Xpm, rerun - configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!" + done + if test -z "$tt_libs"; then + if test "$with_tooltalk" = "yes"; then + (echo "$progname: Usage error:" +echo " " "Unable to find required tooltalk libraries." +echo " Use \`$progname --help' to show usage.") >&2 && exit 1 fi -else - conftest_rc="$?" - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - with_xpm=no -fi -rm -fr conftest* - xe_check_libs= - echo "$ac_t""$with_xpm" 1>&6 + with_tooltalk=no fi - if test "$with_xpm" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_XPM +fi +test -z "$with_tooltalk" && with_tooltalk=yes +if test "$with_tooltalk" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining TOOLTALK EOF cat >> confdefs.h <<\EOF -#define HAVE_XPM 1 +#define TOOLTALK 1 EOF } - LDFLAGS=""$libpath_xpm" $LDFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$libpath_xpm"\" to \$LDFLAGS"; fi - libs_x="-lXpm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXpm\" to \$libs_x"; fi - CFLAGS=""$incpath_xpm" $CFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi - echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6 -echo "configure:8200: checking for \"FOR_MSW\" xpm" >&5 - xe_check_libs=-lXpm - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - xpm_for_msw=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - xpm_for_msw=yes -fi -rm -f conftest* - xe_check_libs= - echo "$ac_t""$xpm_for_msw" 1>&6 - if test "$xpm_for_msw" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining FOR_MSW + { test "$extra_verbose" = "yes" && cat << EOF + Defining TT_C_H_FILE = "$tt_c_h_file" EOF -cat >> confdefs.h <<\EOF -#define FOR_MSW 1 +cat >> confdefs.h <&6 -echo "configure:8236: checking for compface.h" >&5 +test -z "$with_cde" && { ac_safe=`echo "Dt/Dt.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for Dt/Dt.h""... $ac_c" 1>&6 +echo "configure:8437: checking for Dt/Dt.h" >&5 cat > conftest.$ac_ext < +#include
EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8445: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8258,28 +8459,28 @@ : else echo "$ac_t""no" 1>&6 -with_xface=no +with_cde=no fi } - test -z "$with_xface" && { -echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8267: checking for UnGenFace in -lcompface" >&5 -ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` +test -z "$with_cde" && { +echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6 +echo "configure:8468: checking for DtDndDragStart in -lDtSvc" >&5 +ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'` -xe_check_libs=" -lcompface " +xe_check_libs=" -lDtSvc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8484: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8293,93 +8494,177 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - : + : else echo "$ac_t""no" 1>&6 -with_xface=no +with_cde=no fi } - test -z "$with_xface" && with_xface=yes - if test "$with_xface" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_XFACE +if test "$with_dragndrop" = "no" ; then + if test "$with_cde" = "yes" ; then + echo "configure: warning: --with-cde forced to \`no'; no generic Drag'n'Drop support" 1>&2 + fi + with_cde=no +fi +test -z "$with_cde" && with_cde=yes +if test "$with_cde" = "yes" ; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_CDE EOF cat >> confdefs.h <<\EOF -#define HAVE_XFACE 1 +#define HAVE_CDE 1 EOF } - libs_x="-lcompface $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lcompface\" to \$libs_x"; fi - fi - - if test "$with_gif" != "no"; then - with_gif="yes" + libs_x="-lDtSvc $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lDtSvc\" to \$libs_x"; fi + dragndrop_proto="$dragndrop_proto CDE" && if test "$extra_verbose" = "yes"; then echo " Appending \"CDE\" to \$dragndrop_proto"; fi + with_tooltalk=yes # CDE requires Tooltalk + need_motif=yes # CDE requires Motif +fi + +test "$window_system" != "x11" && with_offix=no +if test "$with_xmu" != yes -a "$with_x11" = yes; then + if test "$with_offix" = "yes" ; then + echo "configure: warning: --with-offix forced to \`no'; no real Xmu support" 1>&2 + fi + with_offix=no +fi +if test "$with_dragndrop" = no; then + if test "$with_offix" = "yes" ; then + echo "configure: warning: --with-offix forced to \`no'; no generic Drag'n'Drop support" 1>&2 + fi + with_offix=no +fi +if test "$with_cde" = yes; then + if test "$with_offix" = "yes" ; then + echo "configure: warning: --with-offix forced to \`no'; CDE already found" 1>&2 + fi + with_offix=no +fi +test -z "$with_offix" && with_offix=no +if test "$with_offix" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_OFFIX_DND +EOF +cat >> confdefs.h <<\EOF +#define HAVE_OFFIX_DND 1 +EOF +} + + dnd_objs="$dnd_objs offix.o" && if test "$extra_verbose" = "yes"; then echo " Appending \"offix.o\" to \$dnd_objs"; fi + dragndrop_proto="$dragndrop_proto OffiX" && if test "$extra_verbose" = "yes"; then echo " Appending \"OffiX\" to \$dragndrop_proto"; fi +fi +if test "$with_gtk" = "yes"; then + dragndrop_proto="$dragndrop_proto GTK" && if test "$extra_verbose" = "yes"; then echo " Appending \"GTK\" to \$dragndrop_proto"; fi +fi + +if test "$with_dragndrop" != "no" ; then + echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6 +echo "configure:8565: checking if drag and drop API is needed" >&5 + if test -n "$dragndrop_proto" ; then + with_dragndrop=yes + echo "$ac_t""yes (${dragndrop_proto} )" 1>&6 { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_GIF + Defining HAVE_DRAGNDROP EOF cat >> confdefs.h <<\EOF -#define HAVE_GIF 1 +#define HAVE_DRAGNDROP 1 EOF } + extra_objs="$extra_objs dragdrop.o" && if test "$extra_verbose" = "yes"; then echo " Appending \"dragdrop.o\" to \$extra_objs"; fi + else + with_dragndrop=no + echo "$ac_t""no" 1>&6 fi +fi - if test "$with_png $with_tiff" != "no no"; then - -echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6 -echo "configure:8332: checking for inflate in -lc" >&5 -ac_lib_var=`echo c'_'inflate | sed 'y%./+-%__p_%'` +echo "checking for LDAP" 1>&6 +echo "configure:8585: checking for LDAP" >&5 +ldap_libs= +test -z "$with_ldap" && { ac_safe=`echo "ldap.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for ldap.h""... $ac_c" 1>&6 +echo "configure:8589: checking for ldap.h" >&5 -xe_check_libs=" -lc " cat > conftest.$ac_ext < EOF -if { (eval echo configure:8348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:8597: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 : else echo "$ac_t""no" 1>&6 +with_ldap=no +fi + } +test -z "$with_ldap" && { ac_safe=`echo "lber.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for lber.h""... $ac_c" 1>&6 +echo "configure:8620: checking for lber.h" >&5 -echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6 -echo "configure:8367: checking for inflate in -lz" >&5 -ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'` +cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:8628: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +with_ldap=no +fi + } +if test "$with_ldap" != "no"; then + +echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6 +echo "configure:8652: checking for ldap_search in -lldap" >&5 +ac_lib_var=`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'` -xe_check_libs=" -lz " +xe_check_libs=" -lldap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8668: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8393,28 +8678,34 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - libs_x="-lz $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lz\" to \$libs_x"; fi + with_ldap_nolber=yes else echo "$ac_t""no" 1>&6 +with_ldap_nolber=no +fi -echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6 -echo "configure:8402: checking for inflate in -lgz" >&5 -ac_lib_var=`echo gz'_'inflate | sed 'y%./+-%__p_%'` -xe_check_libs=" -lgz " + test "$with_ldap_nolber" = "no" && { +xe_msg_checking="for ldap_open in -lldap" +test -n "-llber" && xe_msg_checking="$xe_msg_checking using extra libs -llber" +echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 +echo "configure:8693: checking "$xe_msg_checking"" >&5 +ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` + +xe_check_libs=" -lldap -llber" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8428,70 +8719,75 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - libs_x="-lgz $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lgz\" to \$libs_x"; fi + with_ldap_lber=yes else echo "$ac_t""no" 1>&6 +with_ldap_lber=no fi + } + test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" && { +xe_msg_checking="for ldap_open in -lldap" +test -n "-llber -lkrb" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb" +echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 +echo "configure:8734: checking "$xe_msg_checking"" >&5 +ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` -fi - - -fi - - - fi - - test -z "$with_jpeg" && { ac_safe=`echo "jpeglib.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6 -echo "configure:8448: checking for jpeglib.h" >&5 - +xe_check_libs=" -lldap -llber -lkrb" cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char ldap_open(); + +int main() { +ldap_open() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8456: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:8750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - : + with_ldap_krb=yes else echo "$ac_t""no" 1>&6 -with_jpeg=no +with_ldap_krb=no fi + } - test -z "$with_jpeg" && { -echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:8479: checking for jpeg_destroy_decompress in -ljpeg" >&5 -ac_lib_var=`echo jpeg'_'jpeg_destroy_decompress | sed 'y%./+-%__p_%'` + test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" -a "$with_ldap_krb" = "no" && { +xe_msg_checking="for ldap_open in -lldap" +test -n "-llber -lkrb -ldes" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb -ldes" +echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 +echo "configure:8775: checking "$xe_msg_checking"" >&5 +ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` -xe_check_libs=" -ljpeg " +xe_check_libs=" -lldap -llber -lkrb -ldes" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8505,84 +8801,120 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - : + with_ldap_krbdes=yes else echo "$ac_t""no" 1>&6 -with_jpeg=no +with_ldap_krbdes=no fi } - test -z "$with_jpeg" && with_jpeg=yes - if test "$with_jpeg" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_JPEG + test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" -o "$with_ldap_krb" = "yes" -o "$with_ldap_krbdes" = "yes" \) && with_ldap=yes +fi +if test "$with_ldap" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_LDAP EOF cat >> confdefs.h <<\EOF -#define HAVE_JPEG 1 +#define HAVE_LDAP 1 EOF } - libs_x="-ljpeg $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ljpeg\" to \$libs_x"; fi + if test "$with_ldap_nolber" = "yes" ; then + ldap_libs="-lldap $ldap_libs" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lldap\" to \$ldap_libs"; fi + else + if test "$with_ldap_krb" = "yes" ; then + ldap_libs="-lkrb $ldap_libs" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lkrb\" to \$ldap_libs"; fi + fi + if test "$with_ldap_krbdes" = "yes" ; then + ldap_libs="-ldes $ldap_libs" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ldes\" to \$ldap_libs"; fi + ldap_libs="-lkrb $ldap_libs" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lkrb\" to \$ldap_libs"; fi + fi + ldap_libs="-llber $ldap_libs" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-llber\" to \$ldap_libs"; fi + ldap_libs="-lldap $ldap_libs" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lldap\" to \$ldap_libs"; fi fi - - png_problem="" - test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:8531: checking for pow" >&5 + save_LIBS="$LIBS" LIBS="$LIBS $ldap_libs" + for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:8840: checking for $ac_func" >&5 cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char pow(); +char $ac_func(); int main() { /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ -#if defined (__stub_pow) || defined (__stub___pow) +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else -pow(); +$ac_func(); #endif ; return 0; } EOF -if { (eval echo configure:8557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_pow=yes" + eval "ac_cv_func_$ac_func=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_pow=no" + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* -if eval "test \"`echo '$ac_cv_func_'pow`\" = yes"; then +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -with_png=no + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + { test "$extra_verbose" = "yes" && cat << EOF + Defining $ac_tr_func +EOF +cat >> confdefs.h <&6 fi - } - test -z "$with_png" && { ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for png.h""... $ac_c" 1>&6 -echo "configure:8578: checking for png.h" >&5 +done + + LIBS="$save_LIBS" + MAKE_SUBDIR="$MAKE_SUBDIR modules/ldap" && if test "$extra_verbose" = "yes"; then echo " Appending \"modules/ldap\" to \$MAKE_SUBDIR"; fi + need_modules_common=yes + if test "$with_modules" = "yes"; then + INSTALL_ARCH_DEP_SUBDIR="$INSTALL_ARCH_DEP_SUBDIR modules/ldap" && if test "$extra_verbose" = "yes"; then echo " Appending \"modules/ldap\" to \$INSTALL_ARCH_DEP_SUBDIR"; fi + fi +fi + + +postgresql_libs= +if test "$with_postgresql" != "no"; then + echo "checking for PostgreSQL" 1>&6 +echo "configure:8905: checking for PostgreSQL" >&5 + + for header_dir in "" "pgsql/" "postgresql/"; do + ac_safe=`echo "${header_dir}libpq-fe.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for ${header_dir}libpq-fe.h""... $ac_c" 1>&6 +echo "configure:8910: checking for ${header_dir}libpq-fe.h" >&5 cat > conftest.$ac_ext < +#include <${header_dir}libpq-fe.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8586: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8597,31 +8929,32 @@ rm -f conftest* if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - : + libpq_fe_h_file=${header_dir}libpq-fe.h; break else echo "$ac_t""no" 1>&6 -with_png=no fi - } - test -z "$with_png" && { -echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6 -echo "configure:8609: checking for png_read_image in -lpng" >&5 -ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'` -xe_check_libs=" -lpng " + done + + test -n "$libpq_fe_h_file" && { +echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6 +echo "configure:8942: checking for PQconnectdb in -lpq" >&5 +ac_lib_var=`echo pq'_'PQconnectdb | sed 'y%./+-%__p_%'` + +xe_check_libs=" -lpq " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8635,78 +8968,219 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - : + have_libpq=yes else echo "$ac_t""no" 1>&6 -with_png=no fi } - if test -z "$with_png"; then - echo $ac_n "checking for workable png version information""... $ac_c" 1>&6 -echo "configure:8648: checking for workable png version information" >&5 - xe_check_libs="-lpng -lz" + + if test -n "$libpq_fe_h_file" -a "$have_libpq" = "yes"; then + with_postgresql=yes + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_POSTGRESQL +EOF +cat >> confdefs.h <<\EOF +#define HAVE_POSTGRESQL 1 +EOF +} + + +echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6 +echo "configure:8991: checking for PQconnectStart in -lpq" >&5 +ac_lib_var=`echo pq'_'PQconnectStart | sed 'y%./+-%__p_%'` + +xe_check_libs=" -lpq " +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then + echo "$ac_t""yes" 1>&6 + with_postgresqlv7=yes; + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_POSTGRESQLV7 +EOF +cat >> confdefs.h <<\EOF +#define HAVE_POSTGRESQLV7 1 +EOF +} + +else + echo "$ac_t""no" 1>&6 +fi + + + { test "$extra_verbose" = "yes" && cat << EOF + Defining LIBPQ_FE_H_FILE = "$libpq_fe_h_file" +EOF +cat >> confdefs.h <&2; exit 1; } + fi +fi + + + +if test "$window_system" != "none"; then + echo "checking for graphics libraries" 1>&6 +echo "configure:9058: checking for graphics libraries" >&5 + + libpath_xpm= + incpath_xpm= + case "$opsys" in + cygwin*) + cygwin_top=`eval "gcc -print-file-name=libc.a"` ; + cygwin_top=`eval "dirname ${cygwin_top}"`; + cygwin_top="${cygwin_top}/.."; + case "$window_system" in + x11) ;; + msw) libpath_xpm="-L${cygwin_top}/lib/noX" + incpath_xpm="-I${cygwin_top}/include/noX" + ;; + gtk) ;; + none) ;; + *) ;; + esac + ;; + *) ;; + esac + xpm_problem="" + if test -z "$with_xpm"; then + CFLAGS=""$incpath_xpm" $CFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi + LDFLAGS=""$libpath_xpm" $LDFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$libpath_xpm"\" to \$LDFLAGS"; fi + echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6 +echo "configure:9084: checking for Xpm - no older than 3.4f" >&5 + xe_check_libs=-lXpm cat > conftest.$ac_ext < +#define XPM_NUMBERS +#include int main(int c, char **v) { - if (c == 1) return 0; - if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1; - return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;} + return c == 1 ? 0 : + XpmIncludeVersion != XpmLibraryVersion() ? 1 : + XpmIncludeVersion < 30406 ? 2 : 0 ;} EOF -if { (eval echo configure:8659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:9096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then - ./conftest dummy_arg; png_status=$?; - if test "$png_status" = "0"; then - with_png=yes; + ./conftest dummy_arg; xpm_status=$?; + if test "$xpm_status" = "0"; then + with_xpm=yes; else - with_png=no; - if test "$png_status" = "1"; then - png_problem="PNG library version and header file don't match!" - elif test "$png_status" = "2"; then - png_problem="PNG library version too old (pre 1.0.2)!" - fi - echo " -*** WARNING *** $png_problem + with_xpm=no; + if test "$xpm_status" = "1"; then + xpm_problem="Xpm library version and header file version don't match!" + elif test "$xpm_status" = "2"; then + xpm_problem="Xpm library version is too old!" + else + xpm_problem="Internal xpm detection logic error!" + fi + echo " +*** WARNING *** $xpm_problem I'm not touching that with a 10-foot pole! - If you really want to use the installed version of libPNG, rerun - configure and add '--with-png=yes', but don't blame me if XEmacs crashes!" + If you really want to use the installed version of Xpm, rerun + configure and add '--with-xpm=yes', but don't blame me if XEmacs crashes!" fi else conftest_rc="$?" echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -fr conftest* - with_png=no + with_xpm=no fi rm -fr conftest* xe_check_libs= - echo "$ac_t""$with_png" 1>&6 + echo "$ac_t""$with_xpm" 1>&6 fi - if test "$with_png" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_PNG + if test "$with_xpm" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_XPM EOF cat >> confdefs.h <<\EOF -#define HAVE_PNG 1 +#define HAVE_XPM 1 EOF } - libs_x="-lpng $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lpng\" to \$libs_x"; fi + LDFLAGS=""$libpath_xpm" $LDFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$libpath_xpm"\" to \$LDFLAGS"; fi + libs_x="-lXpm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXpm\" to \$libs_x"; fi + CFLAGS=""$incpath_xpm" $CFLAGS" && if test "$extra_verbose" = "yes"; then echo " Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi + echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6 +echo "configure:9140: checking for \"FOR_MSW\" xpm" >&5 + xe_check_libs=-lXpm + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + xpm_for_msw=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + xpm_for_msw=yes +fi +rm -f conftest* + xe_check_libs= + echo "$ac_t""$xpm_for_msw" 1>&6 + if test "$xpm_for_msw" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining FOR_MSW +EOF +cat >> confdefs.h <<\EOF +#define FOR_MSW 1 +EOF +} + + fi fi - test -z "$with_tiff" && { ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6 -echo "configure:8702: checking for tiffio.h" >&5 + test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for compface.h""... $ac_c" 1>&6 +echo "configure:9176: checking for compface.h" >&5 cat > conftest.$ac_ext < +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8710: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9184: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8724,28 +9198,28 @@ : else echo "$ac_t""no" 1>&6 -with_tiff=no +with_xface=no fi } - test -z "$with_tiff" && { -echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6 -echo "configure:8733: checking for TIFFClientOpen in -ltiff" >&5 -ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'` + test -z "$with_xface" && { +echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 +echo "configure:9207: checking for UnGenFace in -lcompface" >&5 +ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` -xe_check_libs=" -ltiff " +xe_check_libs=" -lcompface " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8759,79 +9233,58 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - : + : else echo "$ac_t""no" 1>&6 -with_tiff=no +with_xface=no fi } - test -z "$with_tiff" && with_tiff=yes - if test "$with_tiff" = "yes"; then + test -z "$with_xface" && with_xface=yes + if test "$with_xface" = "yes"; then { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_TIFF + Defining HAVE_XFACE EOF cat >> confdefs.h <<\EOF -#define HAVE_TIFF 1 +#define HAVE_XFACE 1 EOF } - libs_x="-ltiff $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ltiff\" to \$libs_x"; fi + libs_x="-lcompface $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lcompface\" to \$libs_x"; fi fi -fi + if test "$with_gif" != "no"; then + with_gif="yes" + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_GIF +EOF +cat >> confdefs.h <<\EOF +#define HAVE_GIF 1 +EOF +} -if test "$with_gtk" = "yes"; then - test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for compface.h""... $ac_c" 1>&6 -echo "configure:8788: checking for compface.h" >&5 + fi -cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8796: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -with_xface=no -fi - } - test -z "$with_xface" && { -echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8819: checking for UnGenFace in -lcompface" >&5 -ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` + if test "$with_png $with_tiff" != "no no"; then + +echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6 +echo "configure:9272: checking for inflate in -lc" >&5 +ac_lib_var=`echo c'_'inflate | sed 'y%./+-%__p_%'` -xe_check_libs=" -lcompface " +xe_check_libs=" -lc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8845,72 +9298,28 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - : + : else echo "$ac_t""no" 1>&6 -with_xface=no -fi - - } - test -z "$with_xface" && with_xface=yes - if test "$with_xface" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_XFACE -EOF -cat >> confdefs.h <<\EOF -#define HAVE_XFACE 1 -EOF -} - - libs_gtk="-lcompface $libs_gtk" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lcompface\" to \$libs_gtk"; fi - fi -fi - - - -if test "$with_x11" = "yes"; then - echo "checking for X11 graphics libraries" 1>&6 -echo "configure:8874: checking for X11 graphics libraries" >&5 -fi - -case "$with_widgets" in - "yes" | "athena") detect_athena=yes ;; - *) detect_athena=no ;; -esac - -if test "$with_x11" = "yes" -a "$detect_athena" = "yes" ; then - echo "checking for the Athena widgets" 1>&6 -echo "configure:8884: checking for the Athena widgets" >&5 - - case "$with_athena" in - "xaw" | "") athena_variant=Xaw athena_3d=no ;; - "3d") athena_variant=Xaw3d athena_3d=yes ;; - "next") athena_variant=neXtaw athena_3d=yes ;; - "95") athena_variant=Xaw95 athena_3d=yes ;; - "xpm") athena_variant=XawXpm athena_3d=yes ;; - *) { echo "Error:" "Unknown Athena widget set \`$with_athena'. This should not happen." >&2; exit 1; } ;; - esac - if test "$athena_3d" = "no"; then - -echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:8898: checking for XawScrollbarSetThumb in -l$athena_variant" >&5 -ac_lib_var=`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'` +echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6 +echo "configure:9307: checking for inflate in -lz" >&5 +ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'` -xe_check_libs=" -l$athena_variant " +xe_check_libs=" -lz " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9323: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8924,25 +9333,28 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - -echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:8930: checking for threeDClassRec in -l$athena_variant" >&5 -ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'` + libs_x="-lz $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lz\" to \$libs_x"; fi +else + echo "$ac_t""no" 1>&6 -xe_check_libs=" -l$athena_variant " +echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6 +echo "configure:9342: checking for inflate in -lgz" >&5 +ac_lib_var=`echo gz'_'inflate | sed 'y%./+-%__p_%'` + +xe_check_libs=" -lgz " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -8956,40 +9368,70 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - echo "configure: warning: Could not find a non-3d Athena widget library." 1>&2 + libs_x="-lgz $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lgz\" to \$libs_x"; fi else echo "$ac_t""no" 1>&6 -athena_lib=$athena_variant fi - -else - echo "$ac_t""no" 1>&6 -echo "configure: warning: Could not find an Athena widget library." 1>&2 fi - else - -echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:8977: checking for threeDClassRec in -l$athena_variant" >&5 -ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'` +fi -xe_check_libs=" -l$athena_variant " + + fi + + test -z "$with_jpeg" && { ac_safe=`echo "jpeglib.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6 +echo "configure:9388: checking for jpeglib.h" >&5 + +cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:9396: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +with_jpeg=no +fi + } + test -z "$with_jpeg" && { +echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 +echo "configure:9419: checking for jpeg_destroy_decompress in -ljpeg" >&5 +ac_lib_var=`echo jpeg'_'jpeg_destroy_decompress | sed 'y%./+-%__p_%'` + +xe_check_libs=" -ljpeg " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9003,66 +9445,84 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - athena_lib=$athena_variant + : else echo "$ac_t""no" 1>&6 -echo $ac_n "checking for threeDClassRec in -lXaw""... $ac_c" 1>&6 -echo "configure:9011: checking for threeDClassRec in -lXaw" >&5 -ac_lib_var=`echo Xaw'_'threeDClassRec | sed 'y%./+-%__p_%'` +with_jpeg=no +fi + + } + test -z "$with_jpeg" && with_jpeg=yes + if test "$with_jpeg" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_JPEG +EOF +cat >> confdefs.h <<\EOF +#define HAVE_JPEG 1 +EOF +} + + libs_x="-ljpeg $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ljpeg\" to \$libs_x"; fi + fi + + png_problem="" + test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 +echo "configure:9471: checking for pow" >&5 -xe_check_libs=" -lXaw " cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char threeDClassRec(); +char pow(); int main() { -threeDClassRec() + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_pow) || defined (__stub___pow) +choke me +#else +pow(); +#endif + ; return 0; } EOF -if { (eval echo configure:9027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9497: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_func_pow=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_func_pow=no" fi rm -f conftest* -xe_check_libs="" -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then +if eval "test \"`echo '$ac_cv_func_'pow`\" = yes"; then echo "$ac_t""yes" 1>&6 - athena_lib=Xaw; - echo "configure: warning: Assuming that libXaw is actually $athena_variant." 1>&2; - + : else echo "$ac_t""no" 1>&6 -echo "configure: warning: Could not find a 3d Athena widget library that looked like $athena_variant." 1>&2 -fi - - +with_png=no fi - - - fi - - if test "$athena_3d" = "no"; then - ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9058: checking for X11/Xaw/ThreeD.h" >&5 + } + test -z "$with_png" && { ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for png.h""... $ac_c" 1>&6 +echo "configure:9518: checking for png.h" >&5 cat > conftest.$ac_ext < +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9066: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9526: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9077,54 +9537,116 @@ rm -f conftest* if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - echo "configure: warning: Could not find a non-3d Athena header set." 1>&2 + : else echo "$ac_t""no" 1>&6 -ac_safe=`echo "X11/Xaw/XawInit.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for X11/Xaw/XawInit.h""... $ac_c" 1>&6 -echo "configure:9086: checking for X11/Xaw/XawInit.h" >&5 +with_png=no +fi + } + test -z "$with_png" && { +echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6 +echo "configure:9549: checking for png_read_image in -lpng" >&5 +ac_lib_var=`echo png'_'png_read_image | sed 'y%./+-%__p_%'` +xe_check_libs=" -lpng " cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char png_read_image(); + +int main() { +png_read_image() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9094: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:9565: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - athena_h_path=X11/Xaw + : else echo "$ac_t""no" 1>&6 -echo "configure: warning: Could not find a non-3d Athena header set." 1>&2 +with_png=no fi + } + if test -z "$with_png"; then + echo $ac_n "checking for workable png version information""... $ac_c" 1>&6 +echo "configure:9588: checking for workable png version information" >&5 + xe_check_libs="-lpng -lz" + cat > conftest.$ac_ext < + int main(int c, char **v) { + if (c == 1) return 0; + if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1; + return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;} +EOF +if { (eval echo configure:9599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +then + ./conftest dummy_arg; png_status=$?; + if test "$png_status" = "0"; then + with_png=yes; + else + with_png=no; + if test "$png_status" = "1"; then + png_problem="PNG library version and header file don't match!" + elif test "$png_status" = "2"; then + png_problem="PNG library version too old (pre 1.0.2)!" + fi + echo " +*** WARNING *** $png_problem + I'm not touching that with a 10-foot pole! + If you really want to use the installed version of libPNG, rerun + configure and add '--with-png=yes', but don't blame me if XEmacs crashes!" + fi +else + conftest_rc="$?" + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + with_png=no fi +rm -fr conftest* + xe_check_libs= + echo "$ac_t""$with_png" 1>&6 + fi + if test "$with_png" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_PNG +EOF +cat >> confdefs.h <<\EOF +#define HAVE_PNG 1 +EOF +} - else - ac_safe=`echo "X11/$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for X11/$athena_variant/XawInit.h""... $ac_c" 1>&6 -echo "configure:9120: checking for X11/$athena_variant/XawInit.h" >&5 + libs_x="-lpng $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lpng\" to \$libs_x"; fi + fi + + test -z "$with_tiff" && { ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6 +echo "configure:9642: checking for tiffio.h" >&5 cat > conftest.$ac_ext < +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9128: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9650: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9139,53 +9661,78 @@ rm -f conftest* if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_safe=`echo "X11/$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for X11/$athena_variant/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9145: checking for X11/$athena_variant/ThreeD.h" >&5 + : +else + echo "$ac_t""no" 1>&6 +with_tiff=no +fi + } + test -z "$with_tiff" && { +echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6 +echo "configure:9673: checking for TIFFClientOpen in -ltiff" >&5 +ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'` +xe_check_libs=" -ltiff " cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char TIFFClientOpen(); + +int main() { +TIFFClientOpen() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9153: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:9689: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - athena_h_path=X11/$athena_variant + : else echo "$ac_t""no" 1>&6 +with_tiff=no fi -else - echo "$ac_t""no" 1>&6 + } + test -z "$with_tiff" && with_tiff=yes + if test "$with_tiff" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_TIFF +EOF +cat >> confdefs.h <<\EOF +#define HAVE_TIFF 1 +EOF +} + + libs_x="-ltiff $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ltiff\" to \$libs_x"; fi + fi fi - if test -z "$athena_h_path"; then - ac_safe=`echo "$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $athena_variant/XawInit.h""... $ac_c" 1>&6 -echo "configure:9181: checking for $athena_variant/XawInit.h" >&5 +if test "$with_gtk" = "yes"; then + test -z "$with_xface" && { ac_safe=`echo "compface.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for compface.h""... $ac_c" 1>&6 +echo "configure:9728: checking for compface.h" >&5 cat > conftest.$ac_ext < +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9200,119 +9747,262 @@ rm -f conftest* if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_safe=`echo "$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $athena_variant/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9206: checking for $athena_variant/ThreeD.h" >&5 + : +else + echo "$ac_t""no" 1>&6 +with_xface=no +fi + } + test -z "$with_xface" && { +echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 +echo "configure:9759: checking for UnGenFace in -lcompface" >&5 +ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` +xe_check_libs=" -lcompface " cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char UnGenFace(); + +int main() { +UnGenFace() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9214: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:9775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - athena_h_path=$athena_variant + : else echo "$ac_t""no" 1>&6 +with_xface=no fi -else - echo "$ac_t""no" 1>&6 + } + test -z "$with_xface" && with_xface=yes + if test "$with_xface" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_XFACE +EOF +cat >> confdefs.h <<\EOF +#define HAVE_XFACE 1 +EOF +} + + libs_gtk="-lcompface $libs_gtk" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lcompface\" to \$libs_gtk"; fi + fi fi - fi - if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then - ac_safe=`echo "X11/Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for X11/Xaw3d/XawInit.h""... $ac_c" 1>&6 -echo "configure:9243: checking for X11/Xaw3d/XawInit.h" >&5 +if test "$with_x11" = "yes"; then + echo "checking for X11 graphics libraries" 1>&6 +echo "configure:9814: checking for X11 graphics libraries" >&5 +fi + +case "$with_widgets" in + "yes" | "athena") detect_athena=yes ;; + *) detect_athena=no ;; +esac + +if test "$with_x11" = "yes" -a "$detect_athena" = "yes" ; then + echo "checking for the Athena widgets" 1>&6 +echo "configure:9824: checking for the Athena widgets" >&5 + + case "$with_athena" in + "xaw" | "") athena_variant=Xaw athena_3d=no ;; + "3d") athena_variant=Xaw3d athena_3d=yes ;; + "next") athena_variant=neXtaw athena_3d=yes ;; + "95") athena_variant=Xaw95 athena_3d=yes ;; + "xpm") athena_variant=XawXpm athena_3d=yes ;; + *) { echo "Error:" "Unknown Athena widget set \`$with_athena'. This should not happen." >&2; exit 1; } ;; + esac + + if test "$athena_3d" = "no"; then + +echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6 +echo "configure:9838: checking for XawScrollbarSetThumb in -l$athena_variant" >&5 +ac_lib_var=`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'` + +xe_check_libs=" -l$athena_variant " cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XawScrollbarSetThumb(); + +int main() { +XawScrollbarSetThumb() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9251: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:9854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_safe=`echo "X11/Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for X11/Xaw3d/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9268: checking for X11/Xaw3d/ThreeD.h" >&5 +xe_check_libs="" -cat > conftest.$ac_ext <&6 + +echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6 +echo "configure:9870: checking for threeDClassRec in -l$athena_variant" >&5 +ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'` + +xe_check_libs=" -l$athena_variant " +cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char threeDClassRec(); + +int main() { +threeDClassRec() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9276: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then +if { (eval echo configure:9886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - - echo "configure: warning: Assuming that X11/Xaw3d headers are suitable for $athena_variant." 1>&2 - athena_h_path=X11/Xaw3d - + echo "configure: warning: Could not find a non-3d Athena widget library." 1>&2 else echo "$ac_t""no" 1>&6 +athena_lib=$athena_variant fi + + else echo "$ac_t""no" 1>&6 +echo "configure: warning: Could not find an Athena widget library." 1>&2 fi - fi - if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then - ac_safe=`echo "Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for Xaw3d/XawInit.h""... $ac_c" 1>&6 -echo "configure:9308: checking for Xaw3d/XawInit.h" >&5 + else + +echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6 +echo "configure:9917: checking for threeDClassRec in -l$athena_variant" >&5 +ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'` +xe_check_libs=" -l$athena_variant " cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char threeDClassRec(); + +int main() { +threeDClassRec() +; return 0; } +EOF +if { (eval echo configure:9933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then + echo "$ac_t""yes" 1>&6 + athena_lib=$athena_variant +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for threeDClassRec in -lXaw""... $ac_c" 1>&6 +echo "configure:9951: checking for threeDClassRec in -lXaw" >&5 +ac_lib_var=`echo Xaw'_'threeDClassRec | sed 'y%./+-%__p_%'` + +xe_check_libs=" -lXaw " +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then + echo "$ac_t""yes" 1>&6 + athena_lib=Xaw; + echo "configure: warning: Assuming that libXaw is actually $athena_variant." 1>&2; + +else + echo "$ac_t""no" 1>&6 +echo "configure: warning: Could not find a 3d Athena widget library that looked like $athena_variant." 1>&2 +fi + + +fi + + + fi + + if test "$athena_3d" = "no"; then + ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6 +echo "configure:9998: checking for X11/Xaw/ThreeD.h" >&5 + +cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9316: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10006: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9327,17 +10017,20 @@ rm -f conftest* if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_safe=`echo "Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for Xaw3d/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9333: checking for Xaw3d/ThreeD.h" >&5 + echo "configure: warning: Could not find a non-3d Athena header set." 1>&2 +else + echo "$ac_t""no" 1>&6 +ac_safe=`echo "X11/Xaw/XawInit.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for X11/Xaw/XawInit.h""... $ac_c" 1>&6 +echo "configure:10026: checking for X11/Xaw/XawInit.h" >&5 cat > conftest.$ac_ext < +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9341: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9352,32 +10045,51 @@ rm -f conftest* if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - - echo "configure: warning: Assuming that Xaw3d headers are suitable for $athena_variant." 1>&2 - athena_h_path=Xaw3d - + athena_h_path=X11/Xaw else echo "$ac_t""no" 1>&6 +echo "configure: warning: Could not find a non-3d Athena header set." 1>&2 fi -else - echo "$ac_t""no" 1>&6 fi - fi + else + ac_safe=`echo "X11/$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for X11/$athena_variant/XawInit.h""... $ac_c" 1>&6 +echo "configure:10060: checking for X11/$athena_variant/XawInit.h" >&5 - if test -z "$athena_h_path"; then - ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9373: checking for X11/Xaw/ThreeD.h" >&5 +cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:10068: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_safe=`echo "X11/$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for X11/$athena_variant/ThreeD.h""... $ac_c" 1>&6 +echo "configure:10085: checking for X11/$athena_variant/ThreeD.h" >&5 cat > conftest.$ac_ext < +#include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9392,39 +10104,28 @@ rm -f conftest* if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - - echo "configure: warning: Assuming that X11/Xaw headers are suitable for $athena_variant." 1>&2 - athena_h_path=X11/Xaw - + athena_h_path=X11/$athena_variant else echo "$ac_t""no" 1>&6 -echo "configure: warning: Could not find a suitable 3d Athena header set." 1>&2 fi - fi - fi +else + echo "$ac_t""no" 1>&6 +fi - if test -n "$athena_lib" -a -n "$athena_h_path"; then - have_xaw=yes - else - have_xaw=no - fi -else - have_xaw=no -fi -if test "$with_x11" = "yes"; then - ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:9420: checking for Xm/Xm.h" >&5 + if test -z "$athena_h_path"; then + ac_safe=`echo "$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $athena_variant/XawInit.h""... $ac_c" 1>&6 +echo "configure:10121: checking for $athena_variant/XawInit.h" >&5 cat > conftest.$ac_ext < +#include <$athena_variant/XawInit.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9428: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9439,73 +10140,312 @@ rm -f conftest* if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - -echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6 -echo "configure:9445: checking for XmStringFree in -lXm" >&5 -ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'` + ac_safe=`echo "$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $athena_variant/ThreeD.h""... $ac_c" 1>&6 +echo "configure:10146: checking for $athena_variant/ThreeD.h" >&5 -xe_check_libs=" -lXm " cat > conftest.$ac_ext < EOF -if { (eval echo configure:9461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:10154: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - have_motif=yes + athena_h_path=$athena_variant else echo "$ac_t""no" 1>&6 -have_motif=no fi - else echo "$ac_t""no" 1>&6 -have_motif=no fi + fi - if test "$have_motif" = "yes"; then - echo $ac_n "checking for Lesstif""... $ac_c" 1>&6 -echo "configure:9490: checking for Lesstif" >&5 - cat > conftest.$ac_ext < -#ifdef LESSTIF_VERSION -yes -#endif + if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then + ac_safe=`echo "X11/Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for X11/Xaw3d/XawInit.h""... $ac_c" 1>&6 +echo "configure:10183: checking for X11/Xaw3d/XawInit.h" >&5 +cat > conftest.$ac_ext < EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:10191: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then rm -rf conftest* - have_lesstif=yes + eval "ac_cv_header_$ac_safe=yes" else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 rm -rf conftest* - have_lesstif=no + eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* - +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_safe=`echo "X11/Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for X11/Xaw3d/ThreeD.h""... $ac_c" 1>&6 +echo "configure:10208: checking for X11/Xaw3d/ThreeD.h" >&5 + +cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:10216: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo "configure: warning: Assuming that X11/Xaw3d headers are suitable for $athena_variant." 1>&2 + athena_h_path=X11/Xaw3d + +else + echo "$ac_t""no" 1>&6 +fi + +else + echo "$ac_t""no" 1>&6 +fi + + fi + + if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then + ac_safe=`echo "Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for Xaw3d/XawInit.h""... $ac_c" 1>&6 +echo "configure:10248: checking for Xaw3d/XawInit.h" >&5 + +cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:10256: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_safe=`echo "Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for Xaw3d/ThreeD.h""... $ac_c" 1>&6 +echo "configure:10273: checking for Xaw3d/ThreeD.h" >&5 + +cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:10281: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo "configure: warning: Assuming that Xaw3d headers are suitable for $athena_variant." 1>&2 + athena_h_path=Xaw3d + +else + echo "$ac_t""no" 1>&6 +fi + +else + echo "$ac_t""no" 1>&6 +fi + + fi + + if test -z "$athena_h_path"; then + ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6 +echo "configure:10313: checking for X11/Xaw/ThreeD.h" >&5 + +cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:10321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + echo "configure: warning: Assuming that X11/Xaw headers are suitable for $athena_variant." 1>&2 + athena_h_path=X11/Xaw + +else + echo "$ac_t""no" 1>&6 +echo "configure: warning: Could not find a suitable 3d Athena header set." 1>&2 +fi + + fi + fi + + if test -n "$athena_lib" -a -n "$athena_h_path"; then + have_xaw=yes + else + have_xaw=no + fi + +else + have_xaw=no +fi +if test "$with_x11" = "yes"; then + ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 +echo "configure:10360: checking for Xm/Xm.h" >&5 + +cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:10368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + +echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6 +echo "configure:10385: checking for XmStringFree in -lXm" >&5 +ac_lib_var=`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'` + +xe_check_libs=" -lXm " +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +xe_check_libs="" + +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then + echo "$ac_t""yes" 1>&6 + have_motif=yes +else + echo "$ac_t""no" 1>&6 +have_motif=no +fi + + +else + echo "$ac_t""no" 1>&6 +have_motif=no +fi + + + if test "$have_motif" = "yes"; then + echo $ac_n "checking for Lesstif""... $ac_c" 1>&6 +echo "configure:10430: checking for Lesstif" >&5 + cat > conftest.$ac_ext < +#ifdef LESSTIF_VERSION +yes +#endif + +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + have_lesstif=yes +else + rm -rf conftest* + have_lesstif=no +fi +rm -f conftest* + echo "$ac_t""$have_lesstif" 1>&6 fi @@ -9861,7 +10801,7 @@ if test "$with_mule" = "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:9865: checking for Mule-related features" >&5 +echo "configure:10805: checking for Mule-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining MULE EOF @@ -9875,15 +10815,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:9879: checking for $ac_hdr" >&5 +echo "configure:10819: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9887: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10827: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9914,12 +10854,12 @@ echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:9918: checking for strerror in -lintl" >&5 +echo "configure:10858: checking for strerror in -lintl" >&5 ac_lib_var=`echo intl'_'strerror | sed 'y%./+-%__p_%'` xe_check_libs=" -lintl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -9963,18 +10903,18 @@ echo "checking for Mule input methods" 1>&6 -echo "configure:9967: checking for Mule input methods" >&5 +echo "configure:10907: checking for Mule input methods" >&5 case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:9970: checking for XIM" >&5 +echo "configure:10910: checking for XIM" >&5 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6 -echo "configure:9973: checking for XOpenIM in -lX11" >&5 +echo "configure:10913: checking for XOpenIM in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenIM | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10929: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10009,12 +10949,12 @@ if test "$have_motif $have_lesstif" = "yes no"; then echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6 -echo "configure:10013: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10953: checking for XmImMbLookupString in -lXm" >&5 ac_lib_var=`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'` xe_check_libs=" -lXm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10090,15 +11030,15 @@ if test "$with_xfs" = "yes" ; then echo "checking for XFontSet" 1>&6 -echo "configure:10094: checking for XFontSet" >&5 +echo "configure:11034: checking for XFontSet" >&5 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6 -echo "configure:10097: checking for XmbDrawString in -lX11" >&5 +echo "configure:11037: checking for XmbDrawString in -lX11" >&5 ac_lib_var=`echo X11'_'XmbDrawString | sed 'y%./+-%__p_%'` xe_check_libs=" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10149,15 +11089,15 @@ test "$with_wnn6" = "yes" && with_wnn=yes # wnn6 implies wnn support test -z "$with_wnn" && { ac_safe=`echo "wnn/jllib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for wnn/jllib.h""... $ac_c" 1>&6 -echo "configure:10153: checking for wnn/jllib.h" >&5 +echo "configure:11093: checking for wnn/jllib.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10161: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11101: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10180,15 +11120,15 @@ } test -z "$with_wnn" && { ac_safe=`echo "wnn/commonhd.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for wnn/commonhd.h""... $ac_c" 1>&6 -echo "configure:10184: checking for wnn/commonhd.h" >&5 +echo "configure:11124: checking for wnn/commonhd.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10192: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11132: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10213,10 +11153,10 @@ for ac_func in crypt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10217: checking for $ac_func" >&5 +echo "configure:11157: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -10268,12 +11208,12 @@ test "$ac_cv_func_crypt" != "yes" && { echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:10272: checking for crypt in -lcrypt" >&5 +echo "configure:11212: checking for crypt in -lcrypt" >&5 ac_lib_var=`echo crypt'_'crypt | sed 'y%./+-%__p_%'` xe_check_libs=" -lcrypt " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10319,12 +11259,12 @@ if test -z "$with_wnn" -o "$with_wnn" = "yes"; then echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6 -echo "configure:10323: checking for jl_dic_list_e in -lwnn" >&5 +echo "configure:11263: checking for jl_dic_list_e in -lwnn" >&5 ac_lib_var=`echo wnn'_'jl_dic_list_e | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10353,12 +11293,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for jl_dic_list_e in -lwnn4""... $ac_c" 1>&6 -echo "configure:10357: checking for jl_dic_list_e in -lwnn4" >&5 +echo "configure:11297: checking for jl_dic_list_e in -lwnn4" >&5 ac_lib_var=`echo wnn4'_'jl_dic_list_e | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn4 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10387,12 +11327,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for jl_dic_list_e in -lwnn6""... $ac_c" 1>&6 -echo "configure:10391: checking for jl_dic_list_e in -lwnn6" >&5 +echo "configure:11331: checking for jl_dic_list_e in -lwnn6" >&5 ac_lib_var=`echo wnn6'_'jl_dic_list_e | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn6 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10421,12 +11361,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dic_list_e in -lwnn6_fromsrc""... $ac_c" 1>&6 -echo "configure:10425: checking for dic_list_e in -lwnn6_fromsrc" >&5 +echo "configure:11365: checking for dic_list_e in -lwnn6_fromsrc" >&5 ac_lib_var=`echo wnn6_fromsrc'_'dic_list_e | sed 'y%./+-%__p_%'` xe_check_libs=" -lwnn6_fromsrc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10482,12 +11422,12 @@ if test "$with_wnn6" != "no"; then echo $ac_n "checking for jl_fi_dic_list in -l$libwnn""... $ac_c" 1>&6 -echo "configure:10486: checking for jl_fi_dic_list in -l$libwnn" >&5 +echo "configure:11426: checking for jl_fi_dic_list in -l$libwnn" >&5 ac_lib_var=`echo $libwnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'` xe_check_libs=" -l$libwnn " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10533,15 +11473,15 @@ if test "$with_canna" != "no"; then ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6 -echo "configure:10537: checking for canna/jrkanji.h" >&5 +echo "configure:11477: checking for canna/jrkanji.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10545: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11485: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10568,15 +11508,15 @@ c_switch_site="$c_switch_site -I/usr/local/canna/include" ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6 -echo "configure:10572: checking for canna/jrkanji.h" >&5 +echo "configure:11512: checking for canna/jrkanji.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10580: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10604,15 +11544,15 @@ test -z "$with_canna" && { ac_safe=`echo "canna/RK.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for canna/RK.h""... $ac_c" 1>&6 -echo "configure:10608: checking for canna/RK.h" >&5 +echo "configure:11548: checking for canna/RK.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11556: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10635,12 +11575,12 @@ } test -z "$with_canna" && { echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:10639: checking for RkBgnBun in -lRKC" >&5 +echo "configure:11579: checking for RkBgnBun in -lRKC" >&5 ac_lib_var=`echo RKC'_'RkBgnBun | sed 'y%./+-%__p_%'` xe_check_libs=" -lRKC " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11595: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10674,12 +11614,12 @@ } test -z "$with_canna" && { echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:10678: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:11618: checking for jrKanjiControl in -lcanna" >&5 ac_lib_var=`echo canna'_'jrKanjiControl | sed 'y%./+-%__p_%'` xe_check_libs=" -lcanna " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10736,12 +11676,12 @@ libs_x="-lXm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXm\" to \$libs_x"; fi echo $ac_n "checking for layout_object_getvalue in -li18n""... $ac_c" 1>&6 -echo "configure:10740: checking for layout_object_getvalue in -li18n" >&5 +echo "configure:11680: checking for layout_object_getvalue in -li18n" >&5 ac_lib_var=`echo i18n'_'layout_object_getvalue | sed 'y%./+-%__p_%'` xe_check_libs=" -li18n " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -10835,13 +11775,14 @@ fi -for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd link logb lrand48 matherr mkdir mktime perror poll random readlink rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strerror symlink tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask + +for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd link logb lrand48 matherr mkdir mktime perror poll random readlink rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strerror symlink tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask wcslen wcscmp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10842: checking for $ac_func" >&5 +echo "configure:11783: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11809: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -10892,14 +11833,23 @@ done +if test "$ac_cv_func_getaddrinfo" != "no" ; then + case "$opsys" in + hpux11 ) + echo "configure: warning: Use of getaddrinfo is disabled for HP-UX 11.XX." 1>&2 + ac_cv_func_getaddrinfo=no + ;; + esac +fi + for ac_func in getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10900: checking for $ac_func" >&5 +echo "configure:11850: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -10951,10 +11901,10 @@ echo $ac_n "checking for openpty""... $ac_c" 1>&6 -echo "configure:10955: checking for openpty" >&5 +echo "configure:11905: checking for openpty" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11931: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_openpty=yes" else @@ -10996,12 +11946,12 @@ echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:11000: checking for openpty in -lutil" >&5 +echo "configure:11950: checking for openpty in -lutil" >&5 ac_lib_var=`echo util'_'openpty | sed 'y%./+-%__p_%'` xe_check_libs=" -lutil " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11047,15 +11997,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11051: checking for $ac_hdr" >&5 +echo "configure:12001: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11059: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12009: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11092,15 +12042,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11096: checking for $ac_hdr" >&5 +echo "configure:12046: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11104: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12054: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11133,15 +12083,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11137: checking for $ac_hdr" >&5 +echo "configure:12087: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11145: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12095: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11174,15 +12124,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11178: checking for $ac_hdr" >&5 +echo "configure:12128: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11186: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12136: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11218,15 +12168,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11222: checking for $ac_hdr" >&5 +echo "configure:12172: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12180: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11259,10 +12209,10 @@ for ac_func in isastream do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11263: checking for $ac_func" >&5 +echo "configure:12213: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -11316,15 +12266,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11320: checking for $ac_hdr" >&5 +echo "configure:12270: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12278: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11357,10 +12307,10 @@ for ac_func in getloadavg do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11361: checking for $ac_func" >&5 +echo "configure:12311: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12337: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -11416,15 +12366,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11420: checking for $ac_hdr" >&5 +echo "configure:12370: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11428: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12378: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11460,12 +12410,12 @@ echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:11464: checking for kstat_open in -lkstat" >&5 +echo "configure:12414: checking for kstat_open in -lkstat" >&5 ac_lib_var=`echo kstat'_'kstat_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lkstat " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12430: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11511,15 +12461,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11515: checking for $ac_hdr" >&5 +echo "configure:12465: checking for $ac_hdr" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11523: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12473: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11551,12 +12501,12 @@ echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:11555: checking for kvm_read in -lkvm" >&5 +echo "configure:12505: checking for kvm_read in -lkvm" >&5 ac_lib_var=`echo kvm'_'kvm_read | sed 'y%./+-%__p_%'` xe_check_libs=" -lkvm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -11601,16 +12551,16 @@ fi echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:11605: checking whether netdb declares h_errno" >&5 +echo "configure:12555: checking whether netdb declares h_errno" >&5 cat > conftest.$ac_ext < int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:11614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12564: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 { test "$extra_verbose" = "yes" && cat << \EOF @@ -11630,16 +12580,16 @@ rm -f conftest* echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:11634: checking for sigsetjmp" >&5 +echo "configure:12584: checking for sigsetjmp" >&5 cat > conftest.$ac_ext < int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:11643: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 { test "$extra_verbose" = "yes" && cat << \EOF @@ -11659,11 +12609,11 @@ rm -f conftest* echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:11663: checking whether localtime caches TZ" >&5 +echo "configure:12613: checking whether localtime caches TZ" >&5 if test "$ac_cv_func_tzset" = "yes"; then cat > conftest.$ac_ext < #if STDC_HEADERS @@ -11698,7 +12648,7 @@ exit (0); } EOF -if { (eval echo configure:11702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12652: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then emacs_cv_localtime_cache=no else @@ -11728,9 +12678,9 @@ if test "$HAVE_TIMEVAL" = "yes"; then echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6 -echo "configure:11732: checking whether gettimeofday accepts one or two arguments" >&5 +echo "configure:12682: checking whether gettimeofday accepts one or two arguments" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""two" 1>&6 else @@ -11773,19 +12723,19 @@ echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:11777: checking for inline" >&5 +echo "configure:12727: checking for inline" >&5 ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12739: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -11826,17 +12776,17 @@ # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:11830: checking for working alloca.h" >&5 +echo "configure:12780: checking for working alloca.h" >&5 cat > conftest.$ac_ext < int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:11840: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -11860,10 +12810,10 @@ fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:11864: checking for alloca" >&5 +echo "configure:12814: checking for alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -11930,10 +12880,10 @@ echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:11934: checking whether alloca needs Cray hooks" >&5 +echo "configure:12884: checking whether alloca needs Cray hooks" >&5 cat > conftest.$ac_ext <&6 -echo "configure:11961: checking for $ac_func" >&5 +echo "configure:12911: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -12013,10 +12963,10 @@ fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:12017: checking stack direction for C alloca" >&5 +echo "configure:12967: checking stack direction for C alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12989: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_stack_direction=1 else @@ -12064,10 +13014,10 @@ fi echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:12068: checking for working strcoll" >&5 +echo "configure:13018: checking for working strcoll" >&5 cat > conftest.$ac_ext < main () @@ -12077,7 +13027,7 @@ strcoll ("123", "456") >= 0); } EOF -if { (eval echo configure:12081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:13031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_strcoll_works=yes else @@ -12105,10 +13055,10 @@ for ac_func in getpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:12109: checking for $ac_func" >&5 +echo "configure:13059: checking for $ac_func" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -12159,10 +13109,10 @@ done echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:12163: checking whether getpgrp takes no argument" >&5 +echo "configure:13113: checking whether getpgrp takes no argument" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:13171: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_getpgrp_void=yes else @@ -12244,10 +13194,10 @@ echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:12248: checking for working mmap" >&5 +echo "configure:13198: checking for working mmap" >&5 case "$opsys" in ultrix* ) have_mmap=no ;; *) cat > conftest.$ac_ext < #include @@ -12280,7 +13230,7 @@ return 1; } EOF -if { (eval echo configure:12284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:13234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then have_mmap=yes else @@ -12309,9 +13259,9 @@ if test "$rel_alloc $have_mmap" = "default yes"; then if test "$doug_lea_malloc" = "yes"; then echo $ac_n "checking for M_MMAP_THRESHOLD""... $ac_c" 1>&6 -echo "configure:12313: checking for M_MMAP_THRESHOLD" >&5 +echo "configure:13263: checking for M_MMAP_THRESHOLD" >&5 cat > conftest.$ac_ext < int main() { @@ -12323,7 +13273,7 @@ ; return 0; } EOF -if { (eval echo configure:12327: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:13277: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* rel_alloc=no; echo "$ac_t""yes" 1>&6; else @@ -12348,15 +13298,15 @@ ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:12352: checking for termios.h" >&5 +echo "configure:13302: checking for termios.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12360: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13310: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12399,15 +13349,15 @@ echo "$ac_t""no" 1>&6 ac_safe=`echo "termio.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termio.h""... $ac_c" 1>&6 -echo "configure:12403: checking for termio.h" >&5 +echo "configure:13353: checking for termio.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13361: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12439,10 +13389,10 @@ echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:12443: checking for socket" >&5 +echo "configure:13393: checking for socket" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_socket=yes" else @@ -12480,15 +13430,15 @@ echo "$ac_t""yes" 1>&6 ac_safe=`echo "netinet/in.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for netinet/in.h""... $ac_c" 1>&6 -echo "configure:12484: checking for netinet/in.h" >&5 +echo "configure:13434: checking for netinet/in.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12492: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13442: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12505,15 +13455,15 @@ echo "$ac_t""yes" 1>&6 ac_safe=`echo "arpa/inet.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for arpa/inet.h""... $ac_c" 1>&6 -echo "configure:12509: checking for arpa/inet.h" >&5 +echo "configure:13459: checking for arpa/inet.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13467: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12538,9 +13488,9 @@ } echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:12542: checking "for sun_len member in struct sockaddr_un"" >&5 +echo "configure:13492: checking "for sun_len member in struct sockaddr_un"" >&5 cat > conftest.$ac_ext < @@ -12551,7 +13501,7 @@ static struct sockaddr_un x; x.sun_len = 1; ; return 0; } EOF -if { (eval echo configure:12555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13505: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_SOCKADDR_SUN_LEN @@ -12569,9 +13519,9 @@ fi rm -f conftest* echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6 -echo "configure:12573: checking "for ip_mreq struct in netinet/in.h"" >&5 +echo "configure:13523: checking "for ip_mreq struct in netinet/in.h"" >&5 cat > conftest.$ac_ext < @@ -12581,7 +13531,7 @@ static struct ip_mreq x; ; return 0; } EOF -if { (eval echo configure:12585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_MULTICAST @@ -12612,10 +13562,10 @@ echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:12616: checking for msgget" >&5 +echo "configure:13566: checking for msgget" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_msgget=yes" else @@ -12653,15 +13603,15 @@ echo "$ac_t""yes" 1>&6 ac_safe=`echo "sys/ipc.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6 -echo "configure:12657: checking for sys/ipc.h" >&5 +echo "configure:13607: checking for sys/ipc.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12665: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13615: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12678,15 +13628,15 @@ echo "$ac_t""yes" 1>&6 ac_safe=`echo "sys/msg.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/msg.h""... $ac_c" 1>&6 -echo "configure:12682: checking for sys/msg.h" >&5 +echo "configure:13632: checking for sys/msg.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12690: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12724,15 +13674,15 @@ ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:12728: checking for dirent.h" >&5 +echo "configure:13678: checking for dirent.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12736: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13686: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12759,15 +13709,15 @@ echo "$ac_t""no" 1>&6 ac_safe=`echo "sys/dir.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/dir.h""... $ac_c" 1>&6 -echo "configure:12763: checking for sys/dir.h" >&5 +echo "configure:13713: checking for sys/dir.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12771: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13721: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12800,15 +13750,15 @@ ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:12804: checking for nlist.h" >&5 +echo "configure:13754: checking for nlist.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12812: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13762: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12838,22 +13788,22 @@ echo "checking "for sound support"" 1>&6 -echo "configure:12842: checking "for sound support"" >&5 +echo "configure:13792: checking "for sound support"" >&5 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes if test "$with_native_sound" != "no"; then if test -n "$native_sound_lib"; then ac_safe=`echo "multimedia/audio_device.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for multimedia/audio_device.h""... $ac_c" 1>&6 -echo "configure:12849: checking for multimedia/audio_device.h" >&5 +echo "configure:13799: checking for multimedia/audio_device.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12857: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13807: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12901,12 +13851,12 @@ if test -z "$native_sound_lib"; then echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:12905: checking for ALopenport in -laudio" >&5 +echo "configure:13855: checking for ALopenport in -laudio" >&5 ac_lib_var=`echo audio'_'ALopenport | sed 'y%./+-%__p_%'` xe_check_libs=" -laudio " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -12948,12 +13898,12 @@ if test -z "$native_sound_lib"; then echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:12952: checking for AOpenAudio in -lAlib" >&5 +echo "configure:13902: checking for AOpenAudio in -lAlib" >&5 ac_lib_var=`echo Alib'_'AOpenAudio | sed 'y%./+-%__p_%'` xe_check_libs=" -lAlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13012,15 +13962,15 @@ for dir in "machine" "sys" "linux"; do ac_safe=`echo "${dir}/soundcard.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ${dir}/soundcard.h""... $ac_c" 1>&6 -echo "configure:13016: checking for ${dir}/soundcard.h" >&5 +echo "configure:13966: checking for ${dir}/soundcard.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13024: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13974: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13074,15 +14024,15 @@ if test "$with_nas_sound" != "no"; then ac_safe=`echo "audio/audiolib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for audio/audiolib.h""... $ac_c" 1>&6 -echo "configure:13078: checking for audio/audiolib.h" >&5 +echo "configure:14028: checking for audio/audiolib.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13086: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14036: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13100,12 +14050,12 @@ echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6 -echo "configure:13104: checking for AuOpenServer in -laudio" >&5 +echo "configure:14054: checking for AuOpenServer in -laudio" >&5 ac_lib_var=`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'` xe_check_libs=" -laudio " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14070: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13155,7 +14105,7 @@ fi libs_x="-laudio $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-laudio\" to \$libs_x"; fi cat > conftest.$ac_ext < EOF @@ -13186,7 +14136,7 @@ # Extract the first word of "esd-config", so it can be a program name with args. set dummy esd-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:13190: checking for $ac_word" >&5 +echo "configure:14140: checking for $ac_word" >&5 if test -n "$have_esd_config"; then ac_cv_prog_have_esd_config="$have_esd_config" # Let the user override the test. @@ -13215,10 +14165,10 @@ c_switch_site="$c_switch_site `esd-config --cflags`" && if test "$extra_verbose" = "yes"; then echo " Appending \"`esd-config --cflags`\" to \$c_switch_site"; fi LIBS="`esd-config --libs` $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"`esd-config --libs`\" to \$LIBS"; fi echo $ac_n "checking for esd_play_stream""... $ac_c" 1>&6 -echo "configure:13219: checking for esd_play_stream" >&5 +echo "configure:14169: checking for esd_play_stream" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_esd_play_stream=yes" else @@ -13292,7 +14242,7 @@ if test "$with_tty" = "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:13296: checking for TTY-related features" >&5 +echo "configure:14246: checking for TTY-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -13305,12 +14255,12 @@ if test -z "$with_ncurses"; then echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:13309: checking for tgetent in -lncurses" >&5 +echo "configure:14259: checking for tgetent in -lncurses" >&5 ac_lib_var=`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -lncurses " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13354,15 +14304,15 @@ ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:13358: checking for ncurses/curses.h" >&5 +echo "configure:14308: checking for ncurses/curses.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14316: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13384,15 +14334,15 @@ ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6 -echo "configure:13388: checking for ncurses/term.h" >&5 +echo "configure:14338: checking for ncurses/term.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13396: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13422,15 +14372,15 @@ c_switch_site="$c_switch_site -I/usr/include/ncurses" ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:13426: checking for ncurses/curses.h" >&5 +echo "configure:14376: checking for ncurses/curses.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13434: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14384: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13465,12 +14415,12 @@ for lib in curses termlib termcap; do echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:13469: checking for tgetent in -l$lib" >&5 +echo "configure:14419: checking for tgetent in -l$lib" >&5 ac_lib_var=`echo $lib'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -l$lib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13512,12 +14462,12 @@ else echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:13516: checking for tgetent in -lcurses" >&5 +echo "configure:14466: checking for tgetent in -lcurses" >&5 ac_lib_var=`echo curses'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -lcurses " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13546,12 +14496,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6 -echo "configure:13550: checking for tgetent in -ltermcap" >&5 +echo "configure:14500: checking for tgetent in -ltermcap" >&5 ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'` xe_check_libs=" -ltermcap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13610,15 +14560,15 @@ test -z "$with_gpm" && { ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for gpm.h""... $ac_c" 1>&6 -echo "configure:13614: checking for gpm.h" >&5 +echo "configure:14564: checking for gpm.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13622: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14572: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13641,12 +14591,12 @@ } test -z "$with_gpm" && { echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6 -echo "configure:13645: checking for Gpm_Open in -lgpm" >&5 +echo "configure:14595: checking for Gpm_Open in -lgpm" >&5 ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'` xe_check_libs=" -lgpm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13700,20 +14650,20 @@ test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \ != "no no no" && echo "checking for database support" 1>&6 -echo "configure:13704: checking for database support" >&5 +echo "configure:14654: checking for database support" >&5 if test "$with_database_gdbm $with_database_dbm" != "no no"; then ac_safe=`echo "ndbm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ndbm.h""... $ac_c" 1>&6 -echo "configure:13709: checking for ndbm.h" >&5 +echo "configure:14659: checking for ndbm.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14667: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13743,12 +14693,12 @@ if test "$with_database_gdbm" != "no"; then echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:13747: checking for dbm_open in -lgdbm" >&5 +echo "configure:14697: checking for dbm_open in -lgdbm" >&5 ac_lib_var=`echo gdbm'_'dbm_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lgdbm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13787,10 +14737,10 @@ if test "$with_database_dbm" != "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:13791: checking for dbm_open" >&5 +echo "configure:14741: checking for dbm_open" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dbm_open=yes" else @@ -13832,12 +14782,12 @@ echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:13836: checking for dbm_open in -ldbm" >&5 +echo "configure:14786: checking for dbm_open in -ldbm" >&5 ac_lib_var=`echo dbm'_'dbm_open | sed 'y%./+-%__p_%'` xe_check_libs=" -ldbm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -13889,10 +14839,10 @@ if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 -echo "configure:13893: checking for Berkeley db.h" >&5 +echo "configure:14843: checking for Berkeley db.h" >&5 for header in "db/db.h" "db.h"; do cat > conftest.$ac_ext < @@ -13914,7 +14864,7 @@ ; return 0; } EOF -if { (eval echo configure:13918: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_file="$header"; break else @@ -13930,1082 +14880,244 @@ if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6 -echo "configure:13934: checking for Berkeley DB version" >&5 +echo "configure:14884: checking for Berkeley DB version" >&5 cat > conftest.$ac_ext < -#if DB_VERSION_MAJOR > 1 -yes -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - cat > conftest.$ac_ext < -#if DB_VERSION_MAJOR > 2 -yes -#endif - -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - echo "$ac_t""3" 1>&6; dbfunc=db_create -else - rm -rf conftest* - - echo "$ac_t""2" 1>&6; dbfunc=db_open -fi -rm -f conftest* - -else - rm -rf conftest* - - echo "$ac_t""1" 1>&6; dbfunc=dbopen -fi -rm -f conftest* - - echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 -echo "configure:13975: checking for $dbfunc" >&5 - -cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $dbfunc(); - -int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$dbfunc) || defined (__stub___$dbfunc) -choke me -#else -$dbfunc(); -#endif - -; return 0; } -EOF -if { (eval echo configure:14001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$dbfunc=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$dbfunc=no" -fi -rm -f conftest* - -if eval "test \"`echo '$ac_cv_func_'$dbfunc`\" = yes"; then - echo "$ac_t""yes" 1>&6 - with_database_berkdb=yes need_libdb=no -else - echo "$ac_t""no" 1>&6 - - -echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 -echo "configure:14020: checking for $dbfunc in -ldb" >&5 -ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'` - -xe_check_libs=" -ldb " -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - with_database_berkdb=yes need_libdb=yes -else - echo "$ac_t""no" 1>&6 -fi - - -fi - - fi - - if test "$with_database_berkdb" = "yes"; then - { test "$extra_verbose" = "yes" && cat << EOF - Defining DB_H_FILE = "$db_h_file" -EOF -cat >> confdefs.h <> confdefs.h <<\EOF -#define HAVE_BERKELEY_DB 1 -EOF -} - - test "$need_libdb" = "yes" && LIBS="-ldb $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ldb\" to \$LIBS"; fi - else with_database_berkdb=no - fi -fi - -if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \ - != "no no no"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_DATABASE -EOF -cat >> confdefs.h <<\EOF -#define HAVE_DATABASE 1 -EOF -} - -fi - -if test "$with_socks" = "yes"; then - -echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:14097: checking for SOCKSinit in -lsocks" >&5 -ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'` - -xe_check_libs=" -lsocks " -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - ac_tr_lib=HAVE_LIB`echo socks | sed -e 's/[^a-zA-Z0-9_]/_/g' \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` - { test "$extra_verbose" = "yes" && cat << EOF - Defining $ac_tr_lib -EOF -cat >> confdefs.h <&6 -fi - - - test -n "$ac_cv_lib_socks_SOCKSinit" && { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_SOCKS -EOF -cat >> confdefs.h <<\EOF -#define HAVE_SOCKS 1 -EOF -} - -fi - -if test "$usage_tracking" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining USAGE_TRACKING -EOF -cat >> confdefs.h <<\EOF -#define USAGE_TRACKING 1 -EOF -} - - LIBS="-Bstatic -lut -Bdynamic $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-Bstatic -lut -Bdynamic\" to \$LIBS"; fi -fi - -if test "$with_modules" != "no"; then - echo "checking for module support" 1>&6 -echo "configure:14168: checking for module support" >&5 - - if test "$with_msw" = "yes"; then - have_dl=yes; - else - ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:14175: checking for dlfcn.h" >&5 - -cat > conftest.$ac_ext < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:14183: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" -fi -rm -f conftest* -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - echo "$ac_t""yes" 1>&6 - - echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6 -echo "configure:14200: checking for dlopen in -lc" >&5 - cat > conftest.$ac_ext < -int main() { - dlopen ("", 0); -; return 0; } -EOF -if { (eval echo configure:14209: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - have_dl=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - - echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:14218: checking for dlopen in -ldl" >&5 - ac_save_LIBS="$LIBS" - LIBS="-ldl $LIBS" - cat > conftest.$ac_ext < -int main() { - dlopen ("", 0); -; return 0; } -EOF -if { (eval echo configure:14229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - have_dl=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - LIBS="$ac_save_LIBS" -fi -rm -f conftest* - ac_save_LIBS= -fi -rm -f conftest* -else - echo "$ac_t""no" 1>&6 -fi - - if test -n "$have_dl"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_DLOPEN -EOF -cat >> confdefs.h <<\EOF -#define HAVE_DLOPEN 1 -EOF -} - - else - -echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:14258: checking for shl_load in -ldld" >&5 -ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` - -xe_check_libs=" -ldld " -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - libdl=dld have_dl=yes; - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_SHL_LOAD -EOF -cat >> confdefs.h <<\EOF -#define HAVE_SHL_LOAD 1 -EOF -} - -else - echo "$ac_t""no" 1>&6 - -echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:14301: checking for dld_init in -ldld" >&5 -ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'` - -xe_check_libs=" -ldld " -cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -xe_check_libs="" - -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then - echo "$ac_t""yes" 1>&6 - libdl=dld have_dl=yes; - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_DLD_INIT -EOF -cat >> confdefs.h <<\EOF -#define HAVE_DLD_INIT 1 -EOF -} - -else - echo "$ac_t""no" 1>&6 -fi - - -fi - - - fi - fi - if test -n "$have_dl"; then - -dll_ld= -dll_ldflags= -dll_cflags= -dll_post= -dll_ldo="-o" -ld_dynamic_link_flags= -xehost=$canonical -xealias=$internal_configuration - -echo "checking how to build dynamic libraries for ${xehost}" 1>&6 -echo "configure:14362: checking how to build dynamic libraries for ${xehost}" >&5 -# Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. -case "$xehost" in -*-*-linux-gnu*) ;; -*-*-linux*) xehost=`echo $xehost | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` -esac - -xehost_cpu=`echo $xehost | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -xehost_vendor=`echo $xehost | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -xehost_os=`echo $xehost | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -case "$xehost_os" in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "${COLLECT_NAMES+set}" != set; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Now see if the compiler is really GCC. -if test "$GCC" = "yes"; then - XEGCC=yes -else - echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:14390: checking checking whether we are using GNU C" >&5 - cat > conftest.$ac_ext <&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - XEGCC=yes -else - rm -rf conftest* - XEGCC=no -fi -rm -f conftest* - - echo "$ac_t""${XEGCC}" 1>&6 -fi - -echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6 -echo "configure:14414: checking how to produce PIC code" >&5 -wl= - -can_build_shared=yes -if test "$XEGCC" = yes; then - wl='-Wl,' - - case "$xehost_os" in - aix[3-9]* | irix[5-9]* | osf[3-9]) - # PIC is the default for these OSes. - ;; - - os2*) - # We can build DLLs from non-PIC. - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - dll_cflags='-m68020 -resident32 -malways-restore-a4' - ;; - *cygwin* | *mingw* ) - # PIC is the default - ;; - *) - dll_cflags='-fPIC' - ;; - esac -else - # PORTME Check for PIC flags for the system compiler. - case "$xehost_os" in - hpux9* | hpux1[0-9]*) - # Is there a better link_static_flag that works with the bundled CC? - wl='-Wl,' - dll_cflags='+Z' - ;; - - irix[5-9]*) - wl='-Wl,' - # PIC (with -KPIC) is the default. - ;; - - os2*) - # We can build DLLs from non-PIC. - ;; - - osf[3-9]*) - # All OSF/1 code is PIC. - wl='-Wl,' - ;; - - aix[3-9]*) - # All AIX code is PIC. - wl='-Wl,' - ;; - - sco3.2v5*) - dll_cflags='-belf -Kpic' - wl='-Wl,' - ;; - - unixware*) - dll_cflags="-KPIC" - wl="-Wl," - ;; - - sysv4*) - dll_cflags="-KPIC" - wl="-Wl," - ;; - - sysv5*) - dll_cflags="-KPIC" - wl="-Wl," - ;; - - solaris2*) - dll_cflags='-KPIC' - wl='-Wl,' - ;; - - sunos4*) - dll_cflags='-PIC' - wl='-Qoption ld ' - ;; - - uts4*) - dll_cflags='-pic' - ;; - - *) - can_build_shared=no - ;; - esac -fi - -if test -n "$dll_cflags"; then - echo "$ac_t""${dll_cflags}" 1>&6 - - # Check to make sure the dll_cflags actually works. - echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" 1>&6 -echo "configure:14515: checking if PIC flag ${dll_cflags} really works" >&5 - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $dll_cflags -DPIC" - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - - # On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also - # reports no error. So, we need to grep stderr for (Bundled). - if grep '(Bundled)' config.log >/dev/null; then - echo "$ac_t""no" 1>&6 - can_build_shared=no - dll_cflags= - else - echo "$ac_t""yes" 1>&6 - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - echo "$ac_t""no" 1>&6 - can_build_shared=no - dll_cflags= -fi -rm -f conftest* - CFLAGS="$save_CFLAGS" -else - echo "$ac_t""none" 1>&6 -fi - -if test "$can_build_shared" = "yes"; then -cc_produces_so=no -xldf= -xcldf= -echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6 -echo "configure:14557: checking if C compiler can produce shared libraries" >&5 -if test "$XEGCC" = yes; then - xcldf="-shared" - xldf="-shared" -else # Not using GCC - case "$xehost_os" in - aix[3-9]*) - xldf="-bE:ELLSONAME.exp -H512 -T512 -bhalt:4 -bM:SRE -bnoentry -lc" - xcldf="${wl}-bE:ELLSONAME.exp ${wl}-H512 ${wl}-T512 ${wl}-bhalt:4 ${wl}-bM:SRE ${wl}-bnoentry ${wl}-lc" - ;; - - freebsd2* | netbsd* | openbsd*) - xldf="-Bshareable" - xcldf="${wl}-Bshareable" - ;; - - freebsd3*) - xcldf="-shared" - ;; - - hpux*) - xldf="-b +s" - xcldf="${wl}-b ${wl}+s" - ;; - - irix[5-9]* | osf[3-9]*) - xcldf="${wl}-shared" - xldf="-shared" - ;; - - sco3.2v5* | unixware* | sysv5* | sysv4* | solaris2* | solaris7* | uts4*) - xcldf="-G" - xldf="-G" - ;; - - sunos4*) - xcldf="${wl}-assert ${wl}pure-text ${wl}-Bstatic" - xldf="-assert pure-text -Bstatic" - ;; - esac -fi # End if if we are using gcc - -if test -n "$xcldf"; then - save_LDFLAGS=$LDFLAGS - save_LIBS=$LIBS - save_xe_libs=$xe_libs - LDFLAGS="$xcldf $LDFLAGS" - LIBS= - xe_libs= - ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5' - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - cc_produces_so=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - cc_produces_so=no -fi -rm -f conftest* - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - xe_libs=$save_xe_libs - ac_link='${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' 1>&5' -else - cc_produces_so=no -fi -echo "$ac_t""${cc_produces_so}" 1>&6 - -LTLD=$LD -if test -z "$LTLD"; then - ac_prog=ld - if test "$XEGCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:14640: checking for ld used by GCC" >&5 - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. - /*) - if test -z "$LTLD"; then -# case "$ac_prog" in -# *gcc-lib*) LTLD="$CC" -# ;; -# *) - LTLD="$ac_prog" -# ;; -# esac - fi - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac - else - echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:14666: checking for GNU ld" >&5 - fi - - if test -z "$LTLD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog"; then - LTLD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$LTLD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - xe_gnu_ld=yes - else - xe_gnu_ld=no - fi - fi - done - IFS="$ac_save_ifs" - fi - - if test -n "$LTLD"; then - echo "$ac_t""${LTLD}" 1>&6 - else - echo "$ac_t""no" 1>&6 - fi - - if test -z "$LTLD" -a "$cc_produces_so" = no; then - { echo "configure: error: no acceptable linker found in \$PATH" 1>&2; exit 1; } - exit 1 - fi -fi - -ld_dynamic_link_flags= - -# Check to see if it really is or isn't GNU ld. -echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6 -echo "configure:14704: checking if the linker is GNU ld" >&5 -# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LTLD -v 2>&1 &5; then - xe_gnu_ld=yes -else - xe_gnu_ld=no -fi -echo "$ac_t""${xe_gnu_ld}" 1>&6 - -case "$xehost_os" in - amigaos* | sunos4*) - # On these operating systems, we should treat GNU ld like the system ld. - gnu_ld_acts_native=yes - ;; - *) - gnu_ld_acts_native=no - ;; -esac - -if test "$cc_produces_so" = "yes"; then - dll_ld=$CC - dll_ldflags=$xcldf - can_build_shared=yes - ld_shlibs=yes -else - # OK - only NOW do we futz about with ld. - # See if the linker supports building shared libraries. - echo $ac_n "checking whether the linker supports shared libraries""... $ac_c" 1>&6 -echo "configure:14732: checking whether the linker supports shared libraries" >&5 - dll_ld=$CC - dll_ldflags=$LDFLAGS - ld_shlibs=yes - can_build_shared=yes - if test "$xe_gnu_ld" = yes && test "$gnu_ld_acts_native" != yes; then - # See if GNU ld supports shared libraries. - if $LTLD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - dll_ld=$CC - dll_ldflags="-shared" - ld_shlibs=yes - else - ld_shlibs=no - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case "$xehost_os" in - aix3*) - dll_ld=$LTLD - dll_ldflags=$xldf - ;; - - aix[4-9]*) - dll_ldflags=$xcldf - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # doesn't break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - dll_ld=$LTLD - dll_ldflags=$xldf - dll_post="/usr/lib/c++rt0.o" - ;; - - # Unfortunately, older versions of FreeBSD 2 don't have this feature. - freebsd2*) - dll_ld=$LTLD - dll_ldflags="-Bshareable" - ;; - - # FreeBSD 3, at last, uses gcc -shared to do shared libraries. - freebsd3*) - dll_ldflags="-shared" - ;; - - hpux*) - dll_ld=$LTLD - dll_ldflags=$xldf - ;; - - irix[5-9]*) - dll_ld=$LTLD - dll_ldflags=$xldf - ;; - - netbsd*) - # Tested with NetBSD 1.2 ld - dll_ld=$LTLD - dll_ldflags=$xldf - ;; - - openbsd*) - dll_ld=$LTLD - dll_ldflags=$xldf - ;; - - osf3* | osf4*) - dll_ld=$LTLD - dll_ldflags=$xldf - ;; - - # For both SCO and Solaris we MAY want to have LDFLAGS include -z text - sco3.2v5* | unixware* | sysv5* | sysv4* | solaris2* | solaris7*) - dll_ld=$LTLD - case "$dll_ld" in - *gcc*) dll_ldflags="-shared" - dll_ld=$CC - ;; - *) dll_ldflags="-G" - ;; - esac - ;; - - sunos4*) - if test "$XEGCC" = yes; then - dll_ld=$CC - else - dll_ld=$LTLD - fi - dll_ldflags=$xldf - ;; - - uts4*) - dll_ld=$LTLD - dll_ldflags="-G" - ;; - - bsdi*) - dll_ldflags="-r" - dll_ld="shlicc2" - ;; - - *) - ld_shlibs=no - can_build_shared=no - ;; - esac - fi - echo "$ac_t""${ld_shlibs}" 1>&6 - if test "$ld_shlibs" = "no"; then - can_build_shared=no - fi -fi # End of if cc_produces_so = no - - -if test "$xe_gnu_ld" = yes; then - if test "$ld_shlibs" = yes; then - ld_dynamic_link_flags="${wl}-export-dynamic" - fi -fi - -if test -z "$ld_dynamic_link_flags"; then - case "$xehost_os" in - aix[3-9]*) - ld_dynamic_link_flags= - ;; - - freebsd2.2*) - ld_dynamic_link_flags= - ;; - - freebsd2*) - ld_dynamic_link_flags= - ;; - - freebsd3*) - ld_dynamic_link_flags= - ;; +#line 14886 "configure" +#include "confdefs.h" +#include <$db_h_file> +#if DB_VERSION_MAJOR > 1 +yes +#endif - hpux*) - ld_dynamic_link_flags="${wl}-E" - ;; +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + cat > conftest.$ac_ext < +#if DB_VERSION_MAJOR > 2 +yes +#endif - irix[5-9]*) - ld_dynamic_link_flags= - ;; +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "yes" >/dev/null 2>&1; then + rm -rf conftest* + echo "$ac_t""3" 1>&6; dbfunc=db_create +else + rm -rf conftest* + + echo "$ac_t""2" 1>&6; dbfunc=db_open +fi +rm -f conftest* - netbsd*) - ld_dynamic_link_flags= - ;; +else + rm -rf conftest* + + echo "$ac_t""1" 1>&6; dbfunc=dbopen +fi +rm -f conftest* - openbsd*) - ld_dynamic_link_flags= - ;; + echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 +echo "configure:14925: checking for $dbfunc" >&5 - osf3* | osf4*) - ld_dynamic_link_flags= - ;; +cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $dbfunc(); - solaris2* | solaris7*) - ld_dynamic_link_flags= - ;; +int main() { - sco3.2v5* | unixware* | sysv5* | sysv4*) - ld_dynamic_link_flags="${wl}-Bexport" - ;; +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$dbfunc) || defined (__stub___$dbfunc) +choke me +#else +$dbfunc(); +#endif - sunos4*) - ld_dynamic_link_flags= - ;; +; return 0; } +EOF +if { (eval echo configure:14951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$dbfunc=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$dbfunc=no" +fi +rm -f conftest* - uts4*) - ld_dynamic_link_flags= - ;; +if eval "test \"`echo '$ac_cv_func_'$dbfunc`\" = yes"; then + echo "$ac_t""yes" 1>&6 + with_database_berkdb=yes need_libdb=no +else + echo "$ac_t""no" 1>&6 - bsdi*) - ld_dynamic_link_flags= - ;; + +echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 +echo "configure:14970: checking for $dbfunc in -ldb" >&5 +ac_lib_var=`echo db'_'$dbfunc | sed 'y%./+-%__p_%'` - esac -fi # End of if -z ld_dynamic_link_flags -fi # End of if test "$can_build_shared" = "yes" +xe_check_libs=" -ldb " +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +xe_check_libs="" +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then + echo "$ac_t""yes" 1>&6 + with_database_berkdb=yes need_libdb=yes +else + echo "$ac_t""no" 1>&6 +fi +fi + fi + if test "$with_database_berkdb" = "yes"; then + { test "$extra_verbose" = "yes" && cat << EOF + Defining DB_H_FILE = "$db_h_file" +EOF +cat >> confdefs.h <> confdefs.h <<\EOF +#define HAVE_BERKELEY_DB 1 +EOF +} + test "$need_libdb" = "yes" && LIBS="-ldb $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-ldb\" to \$LIBS"; fi + else with_database_berkdb=no fi +fi - if test "$can_build_shared" = "yes"; then - { test "$extra_verbose" = "yes" && cat << \EOF - Defining HAVE_SHLIB +if test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \ + != "no no no"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_DATABASE EOF cat >> confdefs.h <<\EOF -#define HAVE_SHLIB 1 +#define HAVE_DATABASE 1 EOF } - INSTALL_ARCH_DEP_SUBDIR="$INSTALL_ARCH_DEP_SUBDIR src" && if test "$extra_verbose" = "yes"; then echo " Appending \"src\" to \$INSTALL_ARCH_DEP_SUBDIR"; fi - test -n "$libdl" && LIBS="-l${libdl} $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-l${libdl}\" to \$LIBS"; fi - for ac_func in dlerror _dlerror -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:14940: checking for $ac_func" >&5 +fi + +if test "$with_socks" = "yes"; then + +echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 +echo "configure:15047: checking for SOCKSinit in -lsocks" >&5 +ac_lib_var=`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'` +xe_check_libs=" -lsocks " cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char $ac_func(); +char SOCKSinit(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - +SOCKSinit() ; return 0; } EOF -if { (eval echo configure:14966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15063: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_$ac_func=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +xe_check_libs="" -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + ac_tr_lib=HAVE_LIB`echo socks | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` { test "$extra_verbose" = "yes" && cat << EOF - Defining $ac_tr_func + Defining $ac_tr_lib EOF cat >> confdefs.h <&6 fi -done - with_modules=yes - else - if test "$with_modules" = "yes"; then - { echo "Error:" "Required module support cannot be provided." >&2; exit 1; } - else - echo " No module support." - fi - with_modules=no - fi + + test -n "$ac_cv_lib_socks_SOCKSinit" && { test "$extra_verbose" = "yes" && cat << \EOF + Defining HAVE_SOCKS +EOF +cat >> confdefs.h <<\EOF +#define HAVE_SOCKS 1 +EOF +} + +fi + +if test "$usage_tracking" = "yes"; then + { test "$extra_verbose" = "yes" && cat << \EOF + Defining USAGE_TRACKING +EOF +cat >> confdefs.h <<\EOF +#define USAGE_TRACKING 1 +EOF +} + + LIBS="-Bstatic -lut -Bdynamic $LIBS" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-Bstatic -lut -Bdynamic\" to \$LIBS"; fi fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:15121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -15044,6 +15156,16 @@ fi +if test "$with_modules" = "yes"; then + ld_libs_module= +else + +T="" +for W in $ldap_libs $postgresql_libs; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done +ld_libs_module="$T" + +fi + T="" for W in $CFLAGS; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done @@ -15096,7 +15218,7 @@ T="" -for W in $ld_libs_window_system $ld_libs_general; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done +for W in $ld_libs_window_system $ld_libs_general $ld_libs_module; do if test -z "$T"; then T="$W"; else T="$T $W"; fi; done ld_libs_all="$T" @@ -15133,6 +15255,15 @@ fi done +if test "$need_modules_common" = "yes"; then + for dir in modules/common; do + if test ! -d "$dir" ; then + echo Making symbolic link to "$srcdir/$dir" + ${LN_S} "$srcdir/$dir" "$dir" + fi + done +fi + if test "$extra_verbose" = "yes"; then echo "" for var in extra_objs c_switch_general c_switch_window_system c_switch_all ld_switch_general ld_switch_window_system ld_switch_all ld_libs_general ld_libs_window_system ld_libs_all; do eval "echo \"$var = '\$$var'\""; done @@ -15342,9 +15473,6 @@ -test -n "$xemacs_compiler" && XEMACS_CC="$xemacs_compiler" -: ${XEMACS_CC:="$CC"} - if test "$with_prefix" = "yes"; then { test "$extra_verbose" = "yes" && cat << \EOF @@ -15625,7 +15753,7 @@ else echo " Not using any machine description file" fi -echo " Compiler: $CC $CFLAGS" +echo " Compiler: $XEMACS_CC $CFLAGS" echo " Relocating allocator for buffers: $rel_alloc" echo " GNU version of malloc: ${GNU_MALLOC}${GNU_MALLOC_reason}" case "$ld_switch_site" in @@ -15807,8 +15935,10 @@ for file in $internal_makefile_list; do - test "$file" = src/Makefile.in && \ - file="src/Makefile.in:src/Makefile.in.in:src/depend" + case $file in + src/Makefile.in ) file="src/Makefile.in:src/Makefile.in.in:src/depend" ;; + modules/* ) file="${file}:${file}.in:modules/common/Makefile.common" ;; + esac ac_output_files="$ac_output_files $file" && if test "$extra_verbose" = "yes"; then echo " Appending \"$file\" to \$ac_output_files"; fi done ac_output_files="$ac_output_files src/paths.h lib-src/config.values" @@ -15924,15 +16054,25 @@ s%@install_pp@%$install_pp%g s%@libs_xauth@%$libs_xauth%g s%@dnd_objs@%$dnd_objs%g -s%@lwlib_objs@%$lwlib_objs%g -s%@ALLOCA@%$ALLOCA%g -s%@have_esd_config@%$have_esd_config%g s%@dll_ld@%$dll_ld%g s%@dll_cflags@%$dll_cflags%g s%@dll_ldflags@%$dll_ldflags%g s%@dll_post@%$dll_post%g s%@dll_ldo@%$dll_ldo%g s%@ld_dynamic_link_flags@%$ld_dynamic_link_flags%g +s%@with_modules@%$with_modules%g +s%@MOD_CC@%$MOD_CC%g +s%@MODARCHDIR@%$MODARCHDIR%g +s%@MAKE_DOCFILE@%$MAKE_DOCFILE%g +s%@MODCFLAGS@%$MODCFLAGS%g +s%@INSTALLPATH@%$INSTALLPATH%g +s%@MOD_INSTALL_PROGRAM@%$MOD_INSTALL_PROGRAM%g +s%@OBJECT_TO_BUILD@%$OBJECT_TO_BUILD%g +s%@ldap_libs@%$ldap_libs%g +s%@postgresql_libs@%$postgresql_libs%g +s%@lwlib_objs@%$lwlib_objs%g +s%@ALLOCA@%$ALLOCA%g +s%@have_esd_config@%$have_esd_config%g s%@SRC_SUBDIR_DEPS@%$SRC_SUBDIR_DEPS%g s%@INSTALL_ARCH_DEP_SUBDIR@%$INSTALL_ARCH_DEP_SUBDIR%g s%@MAKE_SUBDIR@%$MAKE_SUBDIR%g diff --text -u 'xemacs-21.5.9/configure.in' 'xemacs-21.5.10/configure.in' Index: ./configure.in --- ./configure.in Wed Aug 28 14:36:27 2002 +++ ./configure.in Thu Dec 12 12:22:50 2002 @@ -53,6 +53,14 @@ dnl autoconf system), so quote them like this: [[foo]] AC_PREREQ(2.13)dnl + +dnl #### Doesn't work currently. it would be really nice if we could +dnl get this working, because many autoconfs v2.5 come with support for +dnl v2.1 source files but get snafued by our nasty configure.ac kludge. +dnl +dnl m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), 2.5), -1, +dnl [m4_fatal([Autoconf version 2.5 or higher not supported])]) + dnl Redefine some standard autoconf macros dnl here is how XEmacs is different: dnl - no cache file @@ -346,6 +354,7 @@ with_prefix='yes' with_site_lisp='no' with_site_modules='yes' +need_modules_common='' with_menubars='' with_scrollbars='' with_widgets='' @@ -372,7 +381,8 @@ with_tty="" use_union_type="no" with_dnet="" -pdump="no" +dnl pdump defaults per opsys +pdump="" dnl dragndrop is still experimental, except on Windows. When it is stable, comment out the following line: with_dragndrop_default="no" dnl Too annoying, even if mandated by IPv6 (and I'm not even sure of that) @@ -533,6 +543,7 @@ compiler | \ xemacs_compiler | \ cflags | \ + cflags_warning | \ cpp | \ cppflags | \ libs | \ @@ -1230,7 +1241,6 @@ *-*-darwin*) opsys=darwin RANLIB="ranlib -c" dnl Avoids a link error with lwlib-config.c - pdump=yes dnl No "native" working dumper available ;; dnl Data General AViiON Machines @@ -1585,6 +1595,17 @@ echo "Using configure-time autodetection only." fi +dnl -------------------------------------------------------------- +dnl $opsys detection complete; defaults depending on $opsys follow +dnl -------------------------------------------------------------- + +if test -z "$pdump"; then + case "$opsys" in + linux* ) pdump=yes ;; dnl glibc 2.3.1 seems to hose unexec + *-*-darwin* ) pdump=yes ;; dnl No "native" working dumper available + *) pdump=no ;; + esac +fi if test -z "$dynamic"; then case "$opsys" in @@ -1646,6 +1667,11 @@ else cflags_specified=no; fi +if test "${cflags_warning-unset}" != unset + then cflags_warning_specified=yes; + else cflags_warning_specified=no; +fi + xe_save_CFLAGS="$CFLAGS" AC_PROG_CC dnl Autoconf has its own magic for compiler autodetection @@ -1660,6 +1686,20 @@ fi CFLAGS="$xe_save_CFLAGS" +dnl Determine GCC version. +if test "$GCC" = "yes"; then +AC_TRY_RUN([int main () { +#if __GNUC__ >= 3 +return 11; +#else +return 0; +#endif +}], [], +[case "$conftest_rc" in + 11) echo "You appear to be using GCC version 3 or above."; __GCC3=yes ;; +esac]) +fi + dnl Figure out what C preprocessor to use. dnl On Sun systems, people sometimes set up the variable CPP @@ -1930,38 +1970,71 @@ if test "$cflags_specified" = "no"; then dnl Following values of CFLAGS are known to work well. dnl Should we take debugging options into consideration? - if test "$GCC" = "yes"; then - CFLAGS="-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes" + if test "$GCC" = "yes"; then + CFLAGS="-g -O3" + dnl I'm not convinced this is a good idea any more. -sb + dnl test "$opsys $machine" = "linux intel386" && \ + dnl CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2" + elif test "$__SUNPRO_C" = "yes"; then + case "$opsys" in + sol2 ) CFLAGS="-xO4" ;; + sunos4* ) CFLAGS="-xO2" ;; + esac + elif test "$__DECC" = "yes"; then + CFLAGS="-O3" + elif test "$CC" = "xlc"; then + CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qro -qmaxmem=20000" + dnl ### Add optimal CFLAGS support for other compilers HERE! + else + CFLAGS="-O" ;dnl The only POSIX-approved flag + fi +fi + +dnl Calculate warning flags. We now separate the flags for warnings from +dnl the other flags because we really really want the warnings to be seen +dnl by everyone. + +if test "$cflags_warning_specified" = "no"; then + dnl Following warning flags are known to work well. + if test "$GCC" = "yes"; then + cflags_warning="-Wall -Wno-switch -Winline -Wmissing-prototypes" dnl Yuck, bad compares have been worth at least 3 crashes! - CFLAGS="$CFLAGS -Wsign-compare" + cflags_warning="$cflags_warning -Wsign-compare" + dnl NOTE: The following three, as well as -Wmissing-declarations and + dnl -Weffc++ below, have been recently added. If you are getting + dnl grief from them, please notify ben@xemacs.org! + cflags_warning="$cflags_warning -Wundef -Wstrict-prototypes" + if test "$__GCC3" = "yes"; then + cflags_warning="$cflags_warning -Wpacked" + fi dnl With g++, -Wshadow produces five zillion utterly random warnings -- dnl a local var named `buffer' conflicts with `struct buffer' for dnl example. Even with gcc, -Wshadow is questionable because of its dnl complaints about parameters with the same names as global functions. if test "$xemacs_compiler" != "g++"; then - CFLAGS="$CFLAGS -Wshadow" + dnl no -Wmissing-declarations under g++. + cflags_warning="$cflags_warning -Wshadow -Wmissing-declarations" + else + cflags_warning="$cflags_warning -Weffc++" fi dnl glibc is intentionally not `-Wpointer-arith'-clean. dnl Ulrich Drepper has rejected patches to fix the glibc header files. - test "$have_glibc" != "yes" && CFLAGS="$CFLAGS -Wpointer-arith" - dnl I'm not convinced this is a good idea any more. -sb - dnl test "$opsys $machine" = "linux intel386" && \ - dnl CFLAGS="$CFLAGS -fno-strength-reduce -malign-loops=2 -malign-jumps=2 -malign-functions=2" + test "$have_glibc" != "yes" && \ + cflags_warning="$cflags_warning -Wpointer-arith" elif test "$__SUNPRO_C" = "yes"; then case "$opsys" in - sol2 ) CFLAGS="-v -xO4" ;; - sunos4* ) CFLAGS="-xO2";; + sol2 ) cflags_warning="-v" ;; esac - elif test "$__DECC" = "yes"; then - CFLAGS="-O3" elif test "$CC" = "xlc"; then - CFLAGS="-g -O3 -qstrict -qnoansialias -qlibansi -qinfo -qro -qmaxmem=20000" - dnl ### Add optimal CFLAGS support for other compilers HERE! - else - CFLAGS="-O" ;dnl The only POSIX-approved flag + cflags_warning="-qinfo" + dnl ### Add optimal cflags_warning support for other compilers HERE! fi fi +dnl Now combine all C flags. Put the warning flags first so that +dnl user-specified flags will override. +CFLAGS="$cflags_warning $CFLAGS" + dnl Search for GCC specific build problems we know about if test "$GCC" = "yes"; then AC_MSG_CHECKING(for buggy gcc versions) @@ -2502,12 +2575,9 @@ dnl check for long file names AC_SYS_LONG_FILE_NAMES -dnl -lm is required by LISP_FLOAT_TYPE, among other things +dnl -lm is required for floating point support, among other things AC_CHECK_FUNC(sin, ,AC_CHECK_LIB(m, sin)) -dnl Floating operation support is now unconditional -AC_DEFINE(LISP_FLOAT_TYPE) - AC_TRY_LINK([#include ], [return atanh(1.0) + asinh(1.0) + acosh(1.0); ], AC_DEFINE(HAVE_INVERSE_HYPERBOLIC)) @@ -3065,6 +3135,93 @@ dnl offix.c, so that the thing is dumped after lastfile.o AC_SUBST(dnd_objs) +dnl Support for using a different compiler for xemacs itself. +dnl Useful for building XEmacs with a C++ compiler. +dnl For example, `configure --compiler=gcc --xemacs-compiler=g++ + +dnl The compiler used to build xemacs, as opposed to the compiler +dnl used by configure and lib-src, is determined from the following +dnl sources, in order of priority: +dnl o --xemacs-compiler configure flag +dnl o XEMACS_CC environment variable +dnl o same as the regular compiler, (determined previously) +test -n "$xemacs_compiler" && XEMACS_CC="$xemacs_compiler" +: ${XEMACS_CC:="$CC"} + +dnl Autodetect dll support +dnl This must come before the detection code for anything that is in a module +if test "$with_modules" != "no"; then + AC_CHECKING(for module support) + + dnl Check for MS-Windows + if test "$with_msw" = "yes"; then + have_dl=yes; + else + dnl Find headers and libraries + AC_CHECK_HEADER(dlfcn.h, [ + AC_MSG_CHECKING([for dlopen in -lc]) + AC_TRY_LINK([#include ],dnl + [dlopen ("", 0);], [ have_dl=yes ], [ + AC_MSG_CHECKING([for dlopen in -ldl]) + ac_save_LIBS="$LIBS" + LIBS="-ldl $LIBS" + AC_TRY_LINK([#include ],dnl + [dlopen ("", 0);], [ have_dl=yes ], + [LIBS="$ac_save_LIBS"]) + ac_save_LIBS=])]) + if test -n "$have_dl"; then + AC_DEFINE(HAVE_DLOPEN) + else + AC_CHECK_LIB(dld, shl_load, [ + libdl=dld have_dl=yes; + AC_DEFINE(HAVE_SHL_LOAD)], [ + AC_CHECK_LIB(dld, dld_init, [ + libdl=dld have_dl=yes; + AC_DEFINE(HAVE_DLD_INIT)])]) + fi + fi dnl end !MS-Windows + + if test -n "$have_dl"; then + dnl XE_SHLIB_STUFF (in aclocal.m4) defines $can_build_shared + XE_SHLIB_STUFF + fi + + if test "$can_build_shared" = "yes"; then + AC_DEFINE(HAVE_SHLIB) + XE_APPEND(src, INSTALL_ARCH_DEP_SUBDIR) + test -n "$libdl" && XE_PREPEND(-l${libdl}, LIBS) + AC_CHECK_FUNCS(dlerror _dlerror) + with_modules=yes + MOD_CC="../../lib-src/ellcc" + MODCFLAGS="\$(CFLAGS) --mode=compile --mod-output=\$@ -I../../src -I\$(srcdir)/../../src" + INSTALLPATH="\$(moduledir)" + MOD_INSTALL_PROGRAM=${INSTALL_PROGRAM} + OBJECT_TO_BUILD="\$(MODNAME).ell" + else + if test "$with_modules" = "yes"; then + XE_DIE("Required module support cannot be provided.") + else + echo " No module support." + fi + with_modules=no + MOD_CC="$XEMACS_CC" + MODCFLAGS="\$(CFLAGS) -I../../src -I\$(srcdir)/../../src" + INSTALLPATH="" + MOD_INSTALL_PROGRAM="true" + OBJECT_TO_BUILD="\$(MODNAME).o" + fi +fi +MODARCHDIR= +MAKE_DOCFILE="../../lib-src/make-docfile" +AC_SUBST(with_modules) +AC_SUBST(MOD_CC) +AC_SUBST(MODARCHDIR) +AC_SUBST(MAKE_DOCFILE) +AC_SUBST(MODCFLAGS) +AC_SUBST(INSTALLPATH) +AC_SUBST(MOD_INSTALL_PROGRAM) +AC_SUBST(OBJECT_TO_BUILD) + dnl Autodetect tooltalk if test "$with_tooltalk" != "no" ; then dnl autodetect the location of tt_c.h @@ -3167,6 +3324,7 @@ dnl Autodetect LDAP AC_CHECKING(for LDAP) +ldap_libs= test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=no) } test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=no) } if test "$with_ldap" != "no"; then @@ -3179,20 +3337,28 @@ if test "$with_ldap" = "yes"; then AC_DEFINE(HAVE_LDAP) if test "$with_ldap_nolber" = "yes" ; then - XE_PREPEND(-lldap, LIBS) + XE_PREPEND(-lldap, ldap_libs) else if test "$with_ldap_krb" = "yes" ; then - XE_PREPEND(-lkrb, LIBS) + XE_PREPEND(-lkrb, ldap_libs) fi if test "$with_ldap_krbdes" = "yes" ; then - XE_PREPEND(-ldes, LIBS) - XE_PREPEND(-lkrb, LIBS) + XE_PREPEND(-ldes, ldap_libs) + XE_PREPEND(-lkrb, ldap_libs) fi - XE_PREPEND(-llber, LIBS) - XE_PREPEND(-lldap, LIBS) + XE_PREPEND(-llber, ldap_libs) + XE_PREPEND(-lldap, ldap_libs) fi + save_LIBS="$LIBS" LIBS="$LIBS $ldap_libs" AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result) + LIBS="$save_LIBS" + XE_APPEND(modules/ldap, MAKE_SUBDIR) + need_modules_common=yes + if test "$with_modules" = "yes"; then + XE_APPEND(modules/ldap, INSTALL_ARCH_DEP_SUBDIR) + fi fi +AC_SUBST(ldap_libs) dnl Autodetect PostgreSQL dnl On many Linux systems, PostgreSQL is packaged to be installed in /usr; @@ -3201,6 +3367,7 @@ dnl If PostgreSQL is installed into a different prefix, dnl (such as the default /usr/local/pgsql when building from source), dnl that prefix must be specified using the --site-prefixes flag. +postgresql_libs= if test "$with_postgresql" != "no"; then AC_CHECKING(for PostgreSQL) @@ -3219,11 +3386,17 @@ with_postgresqlv7=yes; AC_DEFINE(HAVE_POSTGRESQLV7)]) AC_DEFINE_UNQUOTED(LIBPQ_FE_H_FILE, "$libpq_fe_h_file") - XE_PREPEND(-lpq, LIBS) + XE_PREPEND(-lpq, postgresql_libs) + XE_APPEND(modules/postgresql, MAKE_SUBDIR) + need_modules_common=yes + if test "$with_modules" = "yes"; then + XE_APPEND(modules/postgresql, INSTALL_ARCH_DEP_SUBDIR) + fi elif test "$with_postgresql" = "yes"; then XE_DIE("Required PostgreSQL support cannot be provided. Check --site-prefixes.") fi fi +AC_SUBST(postgresql_libs) dnl ---------------------- dnl Graphics libraries @@ -3796,7 +3969,21 @@ XE_COMPUTE_RUNPATH() fi -AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd link logb lrand48 matherr mkdir mktime perror poll random readlink rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strerror symlink tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask) +dnl ---------------------------------------------------------------- +dnl Check for POSIX functions. +dnl ---------------------------------------------------------------- + +AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd link logb lrand48 matherr mkdir mktime perror poll random readlink rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strerror symlink tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask wcslen wcscmp) + +dnl getaddrinfo() is borked under hpux11 +if test "$ac_cv_func_getaddrinfo" != "no" ; then + case "$opsys" in + hpux11 ) + AC_MSG_WARN([Use of getaddrinfo is disabled for HP-UX 11.XX.]) + ac_cv_func_getaddrinfo=no + ;; + esac +fi dnl ---------------------------------------------------------------- dnl Check for Unixoid pty/process support. @@ -4396,59 +4583,6 @@ XE_PREPEND(-Bstatic -lut -Bdynamic, LIBS) fi -dnl autodetect dll support -if test "$with_modules" != "no"; then - AC_CHECKING(for module support) - - dnl Check for MS-Windows - if test "$with_msw" = "yes"; then - have_dl=yes; - else - dnl Find headers and libraries - AC_CHECK_HEADER(dlfcn.h, [ - AC_MSG_CHECKING([for dlopen in -lc]) - AC_TRY_LINK([#include ],dnl - [dlopen ("", 0);], [ have_dl=yes ], [ - AC_MSG_CHECKING([for dlopen in -ldl]) - ac_save_LIBS="$LIBS" - LIBS="-ldl $LIBS" - AC_TRY_LINK([#include ],dnl - [dlopen ("", 0);], [ have_dl=yes ], - [LIBS="$ac_save_LIBS"]) - ac_save_LIBS=])]) - if test -n "$have_dl"; then - AC_DEFINE(HAVE_DLOPEN) - else - AC_CHECK_LIB(dld, shl_load, [ - libdl=dld have_dl=yes; - AC_DEFINE(HAVE_SHL_LOAD)], [ - AC_CHECK_LIB(dld, dld_init, [ - libdl=dld have_dl=yes; - AC_DEFINE(HAVE_DLD_INIT)])]) - fi - fi dnl end !MS-Windows - - if test -n "$have_dl"; then - dnl XE_SHLIB_STUFF (in aclocal.m4) defines $can_build_shared - XE_SHLIB_STUFF - fi - - if test "$can_build_shared" = "yes"; then - AC_DEFINE(HAVE_SHLIB) - XE_APPEND(src, INSTALL_ARCH_DEP_SUBDIR) - test -n "$libdl" && XE_PREPEND(-l${libdl}, LIBS) - AC_CHECK_FUNCS(dlerror _dlerror) - with_modules=yes - else - if test "$with_modules" = "yes"; then - XE_DIE("Required module support cannot be provided.") - else - echo " No module support." - fi - with_modules=no - fi -fi - dnl Unfortunately, just because we can link doesn't mean we can run. dnl One of the above link tests may have succeeded but caused resulting dnl executables to fail to run. Also any tests using AC_TRY_RUN will @@ -4481,6 +4615,12 @@ dnl We ignore (C|LD)_SWITCH_X_(MACHINE|SYSTEM) dnl Use XE_SPACE instead of plain assignment statements to remove extraneous blanks +if test "$with_modules" = "yes"; then + ld_libs_module= +else + XE_SPACE(ld_libs_module, $ldap_libs $postgresql_libs) +fi + XE_SPACE(CFLAGS, $CFLAGS) XE_SPACE(extra_objs, $extra_objs) XE_SPACE(c_switch_general, -DHAVE_CONFIG_H $c_switch_site $c_switch_machine $c_switch_system) @@ -4491,7 +4631,7 @@ XE_SPACE(ld_switch_all, $ld_switch_general $ld_switch_window_system) XE_SPACE(ld_libs_general, $LIBS $libs_machine $libs_system $libs_standard) XE_SPACE(ld_libs_window_system, $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS) -XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general) +XE_SPACE(ld_libs_all, $ld_libs_window_system $ld_libs_general $ld_libs_module) dnl Compute lists of Makefiles and subdirs AC_SUBST(SRC_SUBDIR_DEPS) @@ -4513,7 +4653,7 @@ AC_SUBST(MAKE_SUBDIR) AC_SUBST(SUBDIR_MAKEFILES) -dnl Make s&m symlinks in the src directory, for config.h +dnl Make s&m symlinks in the src directory, for config.h. for dir in src/s src/m; do if test ! -d "$dir" ; then echo Making symbolic link to "$srcdir/$dir" @@ -4521,6 +4661,16 @@ fi done +dnl Also make modules/common link if needed for the module Makefiles. +if test "$need_modules_common" = "yes"; then + for dir in modules/common; do + if test ! -d "$dir" ; then + echo Making symbolic link to "$srcdir/$dir" + ${LN_S} "$srcdir/$dir" "$dir" + fi + done +fi + if test "$extra_verbose" = "yes"; then echo "" PRINT_VAR(extra_objs @@ -4751,18 +4901,6 @@ AC_SUBST(RANLIB) AC_SUBST(dynodump_arch) -dnl Support for using a different compiler for xemacs itself. -dnl Useful for building XEmacs with a C++ compiler. -dnl For example, `configure --compiler=gcc --xemacs-compiler=g++ - -dnl The compiler used to build xemacs, as opposed to the compiler -dnl used by configure and lib-src, is determined from the following -dnl sources, in order of priority: -dnl o --xemacs-compiler configure flag -dnl o XEMACS_CC environment variable -dnl o same as the regular compiler, (determined previously) -test -n "$xemacs_compiler" && XEMACS_CC="$xemacs_compiler" -: ${XEMACS_CC:="$CC"} AC_SUBST(XEMACS_CC) dnl The default is yes @@ -4873,7 +5011,7 @@ else echo " Not using any machine description file" fi -echo " Compiler: $CC $CFLAGS" +echo " Compiler: $XEMACS_CC $CFLAGS" echo " Relocating allocator for buffers: $rel_alloc" echo " GNU version of malloc: ${GNU_MALLOC}${GNU_MALLOC_reason}" case "$ld_switch_site" in @@ -5060,10 +5198,15 @@ dnl Build Makefile.in's from Makefile.in.in's dnl except ./Makefile from $srcdir/Makefile.in +dnl src/Makefile.in will have src/depend appended to it; +dnl module Makefiles will have the common text in +dnl modules/common/Makefile.common appended. for file in $internal_makefile_list; do - test "$file" = src/Makefile.in && \ - file="src/Makefile.in:src/Makefile.in.in:src/depend" + case $file in + src/Makefile.in ) file="src/Makefile.in:src/Makefile.in.in:src/depend" ;; + modules/* ) file="${file}:${file}.in:modules/common/Makefile.common" ;; + esac XE_APPEND($file, ac_output_files) done ac_output_files="$ac_output_files src/paths.h lib-src/config.values" diff --text -u 'xemacs-21.5.9/configure.usage' 'xemacs-21.5.10/configure.usage' Index: ./configure.usage --- ./configure.usage Sat Aug 24 19:23:48 2002 +++ ./configure.usage Mon Nov 18 15:53:01 2002 @@ -31,7 +31,12 @@ --compiler=PROG C compiler to use --xemacs-compiler=PROG compiler to use to compile just the xemacs executable --with-gcc (*) Use GCC to compile XEmacs. ---cflags=FLAGS Compiler flags (such as -O) +--cflags=FLAGS Compiler flags (such as -O); setting this overrides + all default compiler flags except those that control + warnings. +--cflags_warning=FLAGS Override compiler flags used to control warnings. + Normally, don't set this, as XEmacs already turns on + the maximum safe warning level. --cpp=PROG C preprocessor to use (e.g. /usr/ccs/lib/cpp or cc -E) --cppflags=FLAGS C preprocessor flags (e.g. -I/foo or -Dfoo=bar) --libs=LIBS Additional libraries (e.g. -lfoo) diff --text -u 'xemacs-21.5.9/etc/BETA' 'xemacs-21.5.10/etc/BETA' Index: ./etc/BETA --- ./etc/BETA Mon Feb 4 22:19:17 2002 +++ ./etc/BETA Wed Oct 9 21:43:12 2002 @@ -19,22 +19,32 @@ Only patches and administrative actions regarding patches are sent elsewhere (to the XEmacs Patches list). -** XEmacs Patches Mailing List -============================== +*** XEmacs Patches Mailing List +------------------------------- XEmacs Patches records proposed changes to XEmacs, and their -disposition. It is open subscription, but only patches and actions by -members of the XEmacs Review Board should be posted to this list. You +disposition. It is open subscription, and all patches that are +seriously proposed for inclusion in XEmacs should be posted here. You can follow progress of your patch by subscribing to the mailing list or in the archives. -** List Administrivia -===================== +Besides patches, only actions by members of the XEmacs Review Board +should be posted to this list. All discussion should be redirected to +XEmacs Beta or XEmacs Design. + +*** XEmacs Design Mailing List +------------------------------ + +XEmacs Design is for design discussions such as adding major features +or whole modules, or reimplementation of existing functions, to XEmacs. + +*** List Administrivia +---------------------- In the descriptions below, the word LIST (all uppercase) is a -variable. Substitute "beta" or "patches" as appropriate (to get -"xemacs-beta" as the mailbox for the XEmacs Beta mailing list, or -http://www.xemacs.org/Lists/#xemacs-beta for its URL). +variable. Substitute "beta", "design", or "patches" as appropriate +(to get "xemacs-beta" as the mailbox for the XEmacs Beta mailing list, +or http://www.xemacs.org/Lists/#xemacs-beta for its URL). The XEmacs mailing lists are managed by the Mailman mailing list package, and the usual Mailman commands work. Do not send mailing @@ -47,6 +57,9 @@ http://list-archive.xemacs.org/xemacs-LIST +Note that the xemacs-LIST-admin address is used internally by the +Mailman software; it is NOT a synonym for xemacs-LIST-request. + *** Managing your subscription via the Web ------------------------------------------ @@ -151,7 +164,7 @@ is rebuilt. ** Building XEmacs from a full distribution -============================================== +=========================================== Locate a convenient place where you have at least 100MB of free space and issue the command @@ -266,17 +279,111 @@ of the developers. -* Patching XEmacs +* Packages +========== + +[Note: these instructions have been partly updated, but not carefully +reviewed in some time. Caveat tester.] + +Starting with XEmacs 21.1, much of the functionality of XEmacs has +been unbundled into "the packages." For more information about the +package system, see the Info nodes on Packages (in the XEmacs User +Manual) and on Packaging (in the Lisp Reference). + +When bootstrapping XEmacs, you may need to manually install some +packages (at least xemacs-base and efs). These packages are available +by FTP at ftp://ftp.xemacs.org/pub/xemacs/packages/. + +** Binary package installation +============================== + +Prerequisite: XEmacs 21.0-b1. + +Binary packages are complete entities that can be untarred at the top +level of an XEmacs package hierarchy and work at runtime. To install files +in this directory, run the command `M-x package-admin-add-binary-package' +and fill in appropriate values to the prompts. + +** Manual procedures for package management +=========================================== + +Prerequisite: XEmacs 21.0 + +When adding and deleting files from a lisp directory the +auto-autoloads.el (global symbols) and custom-load.el (Customization +groups) must be kept in synch. Assuming one is manipulating a +directory called `lisp-utils', the command to rebuild the +auto-autoloads.el file is: + +xemacs -vanilla -batch -l autoload -f batch-update-directory lisp-utils + +The command to rebuild the custom-load.el file is: + +xemacs -vanilla -batch -l cus-dep -f Custom-make-dependencies lisp-utils + +To bytecompile both of these files the command is: + +xemacs -vanilla -batch -f batch-byte-compile \ + lisp-utils/auto-autoloads.el lisp-utils/custom-load.el + +** Building XEmacs and XEmacs packages from scratch +=================================================== + +To build everything completely from scratch (not a high priority as a +design goal), the following procedure should work. (I don't recommend +building this way). + +*** Phase 1 -- Get a minimal XEmacs binary with mule to build the package + lisp with. + +**** Grab a mule-base tarball and install it into a newly created package + directory. + +**** Configure XEmacs with mule and a package-path including the + directory created above. + +**** Do a `make dist' to build an XEmacs binary. + +*** Phase 2 -- Build and install the package lisp. + +**** Modify XEmacs.rules for local paths and the XEmacs binary created in + Phase 1. + +**** Do a make from the top level package lisp source directory.[1] + +**** Do `make bindist's on all the packages you wish to install and + remove the byproduct .tar.gz's. + +*** Phase 3 -- If necessary, redump XEmacs + with the packages that require dump-time support and install it. + +**** Reconfigure without Mule if you don't wish a Mule-ish XEmacs, and + rebuild XEmacs. + +- or - + +**** rm lib-src/DOC src/xemacs; make + +**** Install or run in-place. + +Note that this is in essence what `make all-elc' has always done. + + +* Improving XEmacs ================= ** Creating patches for submission ================================== -Patches to XEmacs should be mailed to . -Each patch will be reviewed by the patches review board, and will be +All patches to XEmacs that are seriously proposed for inclusion (eg, +bug fixes) should be mailed to . Each +patch will be reviewed by the patches review board, and will be acknowledged and added to the distribution, or rejected with an explanation. Progress of the patch is tracked on the XEmacs Patches -mailing list, which is open subscription. +mailing list, which is open subscription. (If a patch is simply +intended to facilitate discussion, "I mean something that works like +this but this is really rough", a CC to XEmacs Patches is optional, +but doesn't hurt.) Patches to XEmacs Lisp packages should be sent to the maintainer of the package. If the maintainer is listed as `XEmacs Development Team' @@ -356,10 +463,9 @@ Discussion of the _content_ of the patch (ie responses to reviewer comments beyond "that's right, ok, I'll do it your way") should _always_ -be posted to xemacs-beta. (We may split xemacs-beta into code -discussion and stuff that is more relevant to non-developer testers at -some point, but at this point xemacs-beta is the correct place for -this.) +be posted to xemacs-beta or to xemacs-design. If you're not sure +which is more appropriate, send it to xemacs-beta. That is the most +widely read channel. If discussion results in a bright idea and you come up with a new patch, normally you should post it to both mailing lists. The people @@ -371,7 +477,7 @@ patch against CVS. If possible do this as a reply to the original patch post, or something following it in the thread. (The point is to get the original patch post's Message-ID in your References header.) -In this case, also use the keyword SUPERCEDES in the Subject header to +In this case, also use the keyword SUPERSEDES in the Subject header to indicate that the old patch is no longer valid, and that this one replaces it. @@ -386,91 +492,93 @@ CVS. Members of the Review Board will also post short notices of administrative action (APPROVE, VETO, QUERY, etc) to xemacs-patches. -* Packages -==================================== - -[Note: these instructions have been partly updated, but not carefully -reviewed in some time. Caveat tester.] - -Starting with XEmacs 21.1, much of the functionality of XEmacs has -been unbundled into "the packages." For more information about the -package system, see the Info nodes on Packages (in the XEmacs User -Manual) and on Packaging (in the Lisp Reference). - -When bootstrapping XEmacs, you may need to manually install some -packages (at least xemacs-base and efs). These packages are available -by FTP at ftp://ftp.xemacs.org/pub/xemacs/packages/. - -** Binary package installation -================================================ - -Prerequisite: XEmacs 21.0-b1. - -Binary packages are complete entities that can be untarred at the top -level of an XEmacs package hierarchy and work at runtime. To install files -in this directory, run the command `M-x package-admin-add-binary-package' -and fill in appropriate values to the prompts. - -** Manual procedures for package management -=========================================== - -Prerequisite: XEmacs 21.0 - -When adding and deleting files from a lisp directory the -auto-autoloads.el (global symbols) and custom-load.el (Customization -groups) must be kept in synch. Assuming one is manipulating a -directory called `lisp-utils', the command to rebuild the -auto-autoloads.el file is: - -xemacs -vanilla -batch -l autoload -f batch-update-directory lisp-utils - -The command to rebuild the custom-load.el file is: - -xemacs -vanilla -batch -l cus-dep -f Custom-make-dependencies lisp-utils - -To bytecompile both of these files the command is: - -xemacs -vanilla -batch -f batch-byte-compile \ - lisp-utils/auto-autoloads.el lisp-utils/custom-load.el - -** Building XEmacs and XEmacs packages from scratch -=================================================== +** Large contributions +====================== -To build everything completely from scratch (not a high priority as a -design goal), the following procedure should work. (I don't recommend -building this way). +Perhaps you have a whole new mode, or a major synchronization with +upstream for a neglected package, or a synchronization with GNU Emacs +you would like to contribute. We welcome such contributions, but they +are likely to be relatively controversial, generate more comments and +requests for revision, and take longer to integrate. Please be +patient with the process. + +*** Updates to existing packages +-------------------------------- + +If a package has gotten a bit out of date, or even started to bitrot, +we welcome patches to synchronize it with upstream/GNU Emacs versions. +Most packages end up varying somewhat from their GNU origins. See +"Syncing with GNU Emacs" for hints. Note that if you do a reasonably +large amount of syncing with GNU Emacs, you should log this in the +file itself as well as in the ChangeLog. + +If the package is important to you, please consider becoming the +maintainer. (See "New packages", below.) + +*** New packages +---------------- + +If you have a new mode or other large addition that does not require +changes to the core, please consider submitting it as a package, and +becoming the maintainer. You get direct commit privileges to the +repository for your package, "approval" privileges for your own +patches as well as third party patches to your package, and some +degree of veto power over patches you don't like. In return, you are +expected to maintain friendly liaison with the upstream developer (if +you aren't the upstream developer), keep watch on the XEmacs Patches +list for relevant patches, and be available by email to other +developers for discussion of changes that impact your package. It's +also a pretty standard route to the "core" development group, where we +have plenty of extra work waiting for volunteers. + +You don't have to become the maintainer, but it virtually ensures +rapid acceptance of the package. + +For help in creating new packages, see the (rather sparse) discussions +in the XEmacs User's Guide and the Lisp Reference Manual. The XEmacs +Package Release Engineer (Ville Skyttä is +currently serving with Peter Brown +assisting; Steve Youngs and Stephen Turnbull + also can help) is the most likely source of advice. + +*** Syncing with GNU Emacs +-------------------------- + +Syncing with GNU Emacs is an important activity. Although each +version has its advantages and areas of concentration, it is very +desirable that common functionality share specifications and APIs. +When porting GNU code to XEmacs, the following points should be given +special attention: + + o Recent GNU Emacsen cannot be built without Mule, but XEmacs can. + Make sure your changes do not assume the presence of Mule. + + o GNU Emacs nomenclature often differs from that of XEmacs. + Sometimes syncing the names is desirable, other times not. + + o GNU Emacs functionality often differs from that of XEmacs. + Syncing functionality is often controversial. + +It is important that you let other developers know that +synchronization has taken place, to what degree, and when. For this +purpose, we use comments of the form + +/* Synched up with: FSF 21.3 by Stephen Turnbull */ + +in the source file itself, as the last element of the prefatory +material (copyright notice and commentary). Obviously the comment +market needs to be changed to leading semicolons for Lisp, but +otherwise the format is the same. + +Of course you should note syncing as the purpose in the ChangeLog, +too. But entries get buried deep in the ChangeLog file, and may even +get moved to a separate ChangeLog.OLD file for rarely synched files. + +Rather than dates we use the version of GNU Emacs to sync to. If the +synchronization is partial, add a new comment describing what has +actually been synched, leaving the description of the last full sync +in place. At each full sync, remove all previous synchronization +comments. -*** Phase 1 -- Get a minimal XEmacs binary with mule to build the package - lisp with. - -**** Grab a mule-base tarball and install it into a newly created package - directory. - -**** Configure XEmacs with mule and a package-path including the - directory created above. - -**** Do a `make dist' to build an XEmacs binary. - -*** Phase 2 -- Build and install the package lisp. - -**** Modify XEmacs.rules for local paths and the XEmacs binary created in - Phase 1. - -**** Do a make from the top level package lisp source directory.[1] - -**** Do `make bindist's on all the packages you wish to install and - remove the byproduct .tar.gz's. - -*** Phase 3 -- If necessary, redump XEmacs - with the packages that require dump-time support and install it. - -**** Reconfigure without Mule if you don't wish a Mule-ish XEmacs, and - rebuild XEmacs. - -- or - - -**** rm lib-src/DOC src/xemacs; make - -**** Install or run in-place. - -Note that this is in essence what `make all-elc' has always done. +This applies to Lisp that we have broken out into packages, but +remains in the GNU Emacs core, as well to core Lisp in XEmacs. diff --text -u 'xemacs-21.5.9/etc/ChangeLog' 'xemacs-21.5.10/etc/ChangeLog' Index: ./etc/ChangeLog --- ./etc/ChangeLog Fri Aug 30 17:25:54 2002 +++ ./etc/ChangeLog Sun Jan 5 14:13:30 2003 @@ -1,3 +1,38 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + +2002-11-11 Stephen J. Turnbull + + * etc/Emacs.ad (Emacs.bold-italic.attributeFont): Per G. Boffi. + +2002-11-04 giacomo boffi + + * sample.Xdefaults (Emacs.default.attributeForeground): Add an + example of setting the default bold-italic face. + +2002-10-30 Katsumi Yamaoka + + * etc/TUTORIAL.ja: Typo fix. + +2002-10-25 Steve Youngs + + * TUTORIAL.fr (suivante): Typo fix. + From juergen stuber . + +2002-10-09 Stephen J. Turnbull + + * etc/BETA: Improve descriptions of XEmacs Patches; mention Design. + +2002-09-27 Stephen J. Turnbull + + * Emacs.ad: Add charsets to *menubar*FontSet and *popup*FontSet. + +2002-08-31 Ville Skyttä + + * Emacs.ad: Add *menubar*FontSet and *popup*FontSet entries, + (self-)obtained from Red Hat. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. @@ -16,6 +51,10 @@ * xemacs-icon.xpm: It's XEmacs, not Xemacs. +2002-07-12 Stephen J. Turnbull + + * etc/BETA (Large contributions): New section. Reorganize file. + 2002-07-02 Stephen J. Turnbull * XEmacs 21.5.7 "broccoflower" is released. diff --text -u 'xemacs-21.5.9/etc/Emacs.ad' 'xemacs-21.5.10/etc/Emacs.ad' Index: ./etc/Emacs.ad --- ./etc/Emacs.ad Fri Apr 13 03:20:45 2001 +++ ./etc/Emacs.ad Tue Nov 12 01:56:19 2002 @@ -172,6 +172,11 @@ ! ! Emacs.italic.attributeFont: -*-courier-medium-o-*-*-*-120-*-*-*-*-iso8859-* ! +! If you choose a font which does not have a bold-italic version, +! you can specify some other font to use for it here: +! +! Emacs.bold-italic.attributeFont: -*-courier-bold-o-*-*-*-120-*-*-*-*-iso8859-* +! ! And here is how you would set the background color of the `highlight' face, ! but only on the screen named `debugger': ! @@ -193,8 +198,16 @@ ! *menubar*FontSet: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \ ! -*-*-*-*-*-*-*-120-*-jisx0208.1983-0 ! -*menubar*Font: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* +*menubar*Font: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* *popup*Font: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* +*menubar*FontSet: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \ + -*-*-*-*-*-*-*-120-*-iso10646-1, \ + -*-*-*-*-*-*-*-120-*-jisx0208.1983-0, \ + -*-*-*-*-*-*-*-120-*-jisx0201.1976-0 +*popup*FontSet: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*, \ + -*-*-*-*-*-*-*-120-*-iso10646-1, \ + -*-*-*-*-*-*-*-120-*-jisx0208.1983-0, \ + -*-*-*-*-*-*-*-120-*-jisx0201.1976-0 ! Gui elements share this font ! diff --text -u 'xemacs-21.5.9/etc/TUTORIAL.fr' 'xemacs-21.5.10/etc/TUTORIAL.fr' Index: ./etc/TUTORIAL.fr --- ./etc/TUTORIAL.fr Fri Apr 13 03:20:48 2001 +++ ./etc/TUTORIAL.fr Fri Oct 25 01:31:54 2002 @@ -711,7 +711,7 @@ >> Déplacez le curseur sur la ligne blanche en dessous de ce paragraphe, puis tapez - M-x replsRemarquezNotez. + M-x replsRemarquezNotez. Remarquez comme cette ligne a changé: le mot R-e-m-a-r-q-u-e-z a été remplacé par N-o-t-e-z partout où il est apparu après le diff --text -u 'xemacs-21.5.9/etc/TUTORIAL.ja' 'xemacs-21.5.10/etc/TUTORIAL.ja' Index: ./etc/TUTORIAL.ja --- ./etc/TUTORIAL.ja Fri Apr 13 03:20:49 2001 +++ ./etc/TUTORIAL.ja Mon Nov 11 23:23:50 2002 @@ -73,9 +73,9 @@ $B$r%?%$%W$7$F?^$NA4BN$,2hLLCf1{$K$/$k$h$&$K$7$F$_$^$7$g$&!#(B -$B$3$l$i$O$N%3%^%s%I$O$=$l$>$l!"(BPrevious, Next, Backward, Forward $B$NF,J8(B -$B;z$K$J$C$F$$$k$N$G!"21$($d$9$$$G$7$g$&!#$3$l$i$O!"4pK\E*$J%+!<%=%k0\F0(B -$B%3%^%s%I$G$"$j!"$$$D$G$b;H$&$b$N$G$9!#:#$3$3$G3P$($F2<$5$$!#(B +$B$3$l$i$N%3%^%s%I$O$=$l$>$l!"(BPrevious, Next, Backward, Forward $B$NF,J8;z(B +$B$K$J$C$F$$$k$N$G!"21$($d$9$$$G$7$g$&!#$3$l$i$O!"4pK\E*$J%+!<%=%k0\F0%3(B +$B%^%s%I$G$"$j!"$$$D$G$b;H$&$b$N$G$9!#:#$3$3$G3P$($F2<$5$$!#(B >> C-n $B$r2?2s$+%?%$%W$7!"!J:#!"$"$J$?$,FI$s$G$$$k!K$3$N9T$^$G%+!<%=%k(B $B$r0\F0$5$;$^$7$g$&!#(B diff --text -u 'xemacs-21.5.9/etc/sample.Xdefaults' 'xemacs-21.5.10/etc/sample.Xdefaults' Index: ./etc/sample.Xdefaults --- ./etc/sample.Xdefaults Fri Oct 22 12:22:16 1999 +++ ./etc/sample.Xdefaults Tue Nov 12 01:56:19 2002 @@ -185,7 +185,12 @@ ! some other font to use for it here: ! ! Emacs.italic.attributeFont: -*-courier-medium-o-*-*-*-120-*-*-*-*-iso8859-* -! +! +! If you choose a font which does not have a bold-italic version, +! you can specify some other font to use for it here: +! +! Emacs.bold-italic.attributeFont: -*-courier-bold-o-*-*-*-120-*-*-*-*-iso8859-* +! ! And here is how you would set the background color of the `highlight' face, ! but only on the screen named `debugger': ! diff --text -u 'xemacs-21.5.9/info/dir' 'xemacs-21.5.10/info/dir' Index: ./info/dir --- ./info/dir Thu Jan 3 05:56:32 2002 +++ ./info/dir Mon Nov 11 23:19:11 2002 @@ -27,7 +27,7 @@ This is Info, the online documentation browsing system. This page (the Directory node) gives a menu of major topics. - button1 or button2 on a highlighted word follows that cross-reference. + button2 on a highlighted word follows that cross-reference. button3 anywhere brings up a menu of commands. ? lists additional keyboard commands. h invokes the Info tutorial. diff --text -u 'xemacs-21.5.9/lib-src/ChangeLog' 'xemacs-21.5.10/lib-src/ChangeLog' Index: ./lib-src/ChangeLog --- ./lib-src/ChangeLog Fri Aug 30 17:25:57 2002 +++ ./lib-src/ChangeLog Sun Jan 5 14:13:32 2003 @@ -1,3 +1,46 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + +2002-11-27 Ben Wing + + * .cvsignore: + Add .idb, .ilk for MS Windows VC++. + +2002-11-17 Ben Wing + + * ellcc.c (do_init_mode): + Use full prototypes. + + * ellcc.h.in: + Use the correct user-specified compiler. + + * make-docfile.c: + * make-docfile.c (read_c_string): + * make-docfile.c (scan_c_file): + Fix shadowing warnings. NOTE: This was already fixed + awhile ago, but reverted by Jerry. Please be careful. + +2002-08-08 Jerry James + + * config.values.in: Regenerate. + * ellcc.c: A thorough cleanup to eliminate potential buffer + overruns and null pointer dereferences, make some global variables + local, add braces for clarity, etc., using hints supplied by + splint. + * ellcc.c (EXEC_GROW_SIZE): New constant for dynamic allocation. + * ellcc.c (xrealloc): New function. + * ellcc.c (xstrdup): New function. + * ellcc.c (fatal): Use varargs for flexibility. + * ellcc.c (add_string): New function for abstracting the addition + of a string to the exec_argv array. + * ellcc.c (add_to_argv): Use add_string. Improve whitespace + handling. Recode finite state machine as a clearer while loop. + * ellcc.c (do_compile_mode): Use new functions. + * ellcc.c (do_link_mode): Ditto. + * ellcc.c (do_init_mode): Ditto. Default to in-source + make-docfile. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. diff --text -u 'xemacs-21.5.9/lib-src/config.values.in' 'xemacs-21.5.10/lib-src/config.values.in' Index: ./lib-src/config.values.in --- ./lib-src/config.values.in Tue May 22 15:03:58 2001 +++ ./lib-src/config.values.in Wed Sep 11 00:27:03 2002 @@ -37,6 +37,7 @@ INFOPATH "@INFOPATH@" INFOPATH_USER_DEFINED "@INFOPATH_USER_DEFINED@" INSTALL "@INSTALL@" +INSTALLPATH "@INSTALLPATH@" INSTALL_ARCH_DEP_SUBDIR "@INSTALL_ARCH_DEP_SUBDIR@" INSTALL_DATA "@INSTALL_DATA@" INSTALL_PROGRAM "@INSTALL_PROGRAM@" @@ -46,9 +47,15 @@ LISPDIR "@LISPDIR@" LISPDIR_USER_DEFINED "@LISPDIR_USER_DEFINED@" LN_S "@LN_S@" +MAKE_DOCFILE "@MAKE_DOCFILE@" MAKE_SUBDIR "@MAKE_SUBDIR@" +MODARCHDIR "@MODARCHDIR@" +MODCFLAGS "@MODCFLAGS@" MODULEDIR "@MODULEDIR@" MODULEDIR_USER_DEFINED "@MODULEDIR_USER_DEFINED@" +MOD_CC "@MOD_CC@" +MOD_INSTALL_PROGRAM "@MOD_INSTALL_PROGRAM@" +OBJECT_TO_BUILD "@OBJECT_TO_BUILD@" PACKAGE_PATH "@PACKAGE_PATH@" PACKAGE_PATH_USER_DEFINED "@PACKAGE_PATH_USER_DEFINED@" PREFIX "@PREFIX@" @@ -110,6 +117,7 @@ ld_switch_general "@ld_switch_general@" ld_switch_shared "@ld_switch_shared@" ld_switch_window_system "@ld_switch_window_system@" +ldap_libs "@ldap_libs@" lib_gcc "@lib_gcc@" libdir "@libdir@" libexecdir "@libexecdir@" @@ -125,6 +133,7 @@ opsysfile "@opsysfile@" package_path "@package_path@" pkgdir "@pkgdir@" +postgresql_libs "@postgresql_libs@" prefix "@prefix@" program_transform_name "@program_transform_name@" sbindir "@sbindir@" @@ -139,6 +148,7 @@ sysconfdir "@sysconfdir@" top_srcdir "@top_srcdir@" version "@version@" +with_modules "@with_modules@" ;;; Variables defined in configure by AC_DEFINE and AC_DEFINE_UNQUOTED follow: ;;; (These are used in C code) diff --text -u 'xemacs-21.5.9/lib-src/ellcc.c' 'xemacs-21.5.10/lib-src/ellcc.c' Index: ./lib-src/ellcc.c --- ./lib-src/ellcc.c Fri Apr 13 03:21:00 2001 +++ ./lib-src/ellcc.c Mon Nov 18 15:52:23 2002 @@ -1,5 +1,6 @@ /* ellcc.c - front-end for compiling Emacs modules Copyright (C) 1998, 1999 J. Kean Johnston. +Copyright (C) 2002 Jerry James. This file is part of XEmacs. @@ -62,6 +63,7 @@ #include #include #include +#include #include #include #include @@ -72,12 +74,11 @@ #endif /* HAVE_UNISTD_H */ #define EMODULES_GATHER_VERSION +#define EXEC_GROW_SIZE 4 #include #include /* Generated files must be included using <...> */ -#define DEBUG - #ifndef HAVE_SHLIB int main (int argc, char *argv[]) @@ -92,6 +93,31 @@ * and how to compile for PIC mode. */ +static char *progname; +static char *mod_name = NULL; +static char *mod_version = NULL; +static char *mod_title = NULL; +static char *mod_output = NULL; +static int exec_argc = 1; +static int exec_length = 0; +static int *exec_args; +static int real_argc = 0; +static char **prog_argv; + +/* + * We allow the user to override things in the environment + */ +static char *ellcc, *ellld, *ellcflags, *ellldflags, *ellpicflags, + *elldllflags; + +#define OVERENV(STR,EVAR,DFLT) \ +do { \ + STR = getenv (EVAR); \ + if ((STR) == NULL) { \ + STR = DFLT; \ + } \ +} while(0) + /* * xnew, xrnew -- allocate, reallocate storage * @@ -108,94 +134,141 @@ # define xnew(n,Type) ((Type *) xmalloc ((n) * sizeof (Type))) # define xrnew(op,n,Type) ((Type *) xrealloc ((op), (n) * sizeof (Type))) #endif -static void *xmalloc (size_t); -static void fatal (char *, char *); -static void add_to_argv (const char *); -static void do_compile_mode (void); -static void do_link_mode (void); -static void do_init_mode (void); - -#define SSTR(S) ((S)?(S):"") - -#define ELLCC_COMPILE_MODE 0 -#define ELLCC_LINK_MODE 1 -#define ELLCC_INIT_MODE 2 -static int ellcc_mode = ELLCC_COMPILE_MODE; -static char *progname; -static char *mod_name = NULL; -static char *mod_version = NULL; -static char *mod_title = NULL; -static char *mod_output = NULL; -static int verbose = 0; -static char **exec_argv; -static int exec_argc = 1; -static int *exec_args; -static int real_argc = 0; -static int prog_argc; -static char **prog_argv; +/* + * Ellcc modes of operation + */ + +enum mode { ELLCC_COMPILE_MODE, ELLCC_LINK_MODE, ELLCC_INIT_MODE }; + +#ifdef DEBUG +static const char *ellcc_mode_name (enum mode ellcc_mode) +#if defined(__GNUC__) && __GNUC__ >= 2 && __GNUC_MINOR__ >= 5 + __attribute__ ((const)) +#endif + ; + +static const char * +ellcc_mode_name (enum mode ellcc_mode) +{ + switch (ellcc_mode) + { + case ELLCC_COMPILE_MODE: + return "compile"; + case ELLCC_LINK_MODE: + return "link"; + case ELLCC_INIT_MODE: + return "init"; + } + return ""; +} +#endif /* - * We allow the user to over-ride things in the environment + * Function Prototypes */ -char *ellcc, *ellld, *ellcflags, *ellldflags, *ellpicflags, *elldllflags; -#define OVERENV(STR,EVAR,DFLT) \ - STR = getenv(EVAR); \ - if ((STR) == (char *)0) \ - STR = DFLT + +static void *xmalloc (size_t size) +#ifdef __GNUC__ + __attribute__ ((malloc)) +#endif + ; + +static void *xrealloc (void *ptr, size_t size) +#ifdef __GNUC__ + __attribute__ ((malloc)) +#endif + ; + +static char *xstrdup (char *) +#ifdef __GNUC__ + __attribute__ ((malloc)) +#endif + ; + +static void fatal (char *, ...) +#ifdef __GNUC__ + __attribute__ ((noreturn, format (printf, 1, 2))) +#endif + ; + +static char ** add_string (char **, char *); +static char ** add_to_argv (char **, const char *); +static char ** do_compile_mode (void); +static char ** do_link_mode (void); +static char ** do_init_mode (void); + +#define SSTR(S) ((S) != NULL ? (S) : "") int main (int argc, char *argv[]) { char *tmp; - int i, done_mode = 0; + char ** exec_argv; + int i, done_mode = 0, verbose = 0; + enum mode ellcc_mode; + + if (argc < 2) + { + /* FIXME: Print usage output instead */ + fatal ("too few arguments"); + } - prog_argc = argc; prog_argv = argv; #if defined(WIN32_NATIVE) tmp = strrchr (argv[0], '\\'); - if (tmp != (char *)0) - tmp++; + if (tmp != NULL) + { + tmp++; + } #elif !defined (VMS) tmp = strrchr (argv[0], '/'); - if (tmp != (char *)0) - tmp++; + if (tmp != NULL) + { + tmp++; + } #else tmp = argv[0]; #endif - if (tmp != (char *)0) - progname = tmp; - else - progname = argv[0]; + progname = (tmp == NULL) ? argv[0] : tmp; tmp = &progname[strlen(progname)-2]; if (strcmp (tmp, "cc") == 0) - ellcc_mode = ELLCC_COMPILE_MODE; + { + ellcc_mode = ELLCC_COMPILE_MODE; + } else if (strcmp (tmp, "ld") == 0) - ellcc_mode = ELLCC_LINK_MODE; + { + ellcc_mode = ELLCC_LINK_MODE; + } else if (strcmp (tmp, "it") == 0) - ellcc_mode = ELLCC_INIT_MODE; + { + ellcc_mode = ELLCC_INIT_MODE; + } + else + { + ellcc_mode = ELLCC_COMPILE_MODE; + } - exec_argv = xnew(argc + 20, char *); exec_args = xnew(argc, int); - for (i = 0; i < argc; i++) - exec_args[i] = -1; - - if (argc < 2) - fatal ("too few arguments", (char *)0); - exec_args[0] = 0; + for (i = 1; i < argc; i++) + { + exec_args[i] = -1; + } for (i = 1; i < argc; i++) { - if (strncmp (argv[i], "--mode=", 7) == 0) + if (strncmp (argv[i], "--mode=", (size_t)7) == 0) { - char *modeopt = argv[i] + 7; + char *modeopt = &argv[i][7]; - if (done_mode && strcmp (modeopt, "verbose")) - fatal ("more than one mode specified", (char *) 0); + if (done_mode && strcmp (modeopt, "verbose") != 0) + { + fatal ("more than one mode specified"); + } if (strcmp (modeopt, "link") == 0) { done_mode++; @@ -212,36 +285,50 @@ ellcc_mode = ELLCC_INIT_MODE; } else if (strcmp (modeopt, "verbose") == 0) - verbose += 1; + { + verbose++; + } + else + { + fatal ("Mode must be link, compile, init, or verbose"); + } } else if (strcmp (argv[i], "--mod-location") == 0) { printf ("%s\n", ELLCC_MODDIR); - return 0; + exit (EXIT_SUCCESS); } else if (strcmp (argv[i], "--mod-site-location") == 0) { printf ("%s\n", ELLCC_SITEMODS); - return 0; + exit (EXIT_SUCCESS); } else if (strcmp (argv[i], "--mod-archdir") == 0) { printf ("%s\n", ELLCC_ARCHDIR); - return 0; + exit (EXIT_SUCCESS); } else if (strcmp (argv[i], "--mod-config") == 0) { printf ("%s\n", ELLCC_CONFIG); - return 0; + exit (EXIT_SUCCESS); } - else if (strncmp (argv[i], "--mod-name=", 11) == 0) - mod_name = argv[i] + 11; - else if (strncmp (argv[i], "--mod-title=", 12) == 0) - mod_title = argv[i] + 12; - else if (strncmp (argv[i], "--mod-version=", 14) == 0) - mod_version = argv[i] + 14; - else if (strncmp (argv[i], "--mod-output=", 13) == 0) - mod_output = argv[i] + 13; + else if (strncmp (argv[i], "--mod-name=", (size_t)11) == 0) + { + mod_name = &argv[i][11]; + } + else if (strncmp (argv[i], "--mod-title=", (size_t)12) == 0) + { + mod_title = &argv[i][12]; + } + else if (strncmp (argv[i], "--mod-version=", (size_t)14) == 0) + { + mod_version = &argv[i][14]; + } + else if (strncmp (argv[i], "--mod-output=", (size_t)13) == 0) + { + mod_output = &argv[i][13]; + } else { exec_args[exec_argc] = i; @@ -249,27 +336,34 @@ } } - if (ellcc_mode == ELLCC_LINK_MODE && mod_output == (char *)0) - fatal ("must specify --mod-output when linking", (char *)0); - if (ellcc_mode == ELLCC_INIT_MODE && mod_output == (char *)0) - fatal ("must specify --mod-output when creating init file", (char *)0); - if (ellcc_mode == ELLCC_INIT_MODE && mod_name == (char *)0) - fatal ("must specify --mod-name when creating init file", (char *)0); + if (ellcc_mode == ELLCC_LINK_MODE && mod_output == NULL) + { + fatal ("must specify --mod-output when linking"); + } + if (ellcc_mode == ELLCC_INIT_MODE && mod_output == NULL) + { + fatal ("must specify --mod-output when creating init file"); + } + if (ellcc_mode == ELLCC_INIT_MODE && mod_name == NULL) + { + fatal ("must specify --mod-name when creating init file"); + } /* * We now have the list of arguments to pass to the compiler or - * linker (or to process for doc files). We can do the real work - * now. + * linker (or to process for doc files). We can do the real work now. */ if (verbose) - printf ("ellcc driver version %s for EMODULES version %s (%ld)\n", - ELLCC_EMACS_VER, EMODULES_VERSION, EMODULES_REVISION); + { + printf ("ellcc driver version %s for EMODULES version %s (%ld)\n", + ELLCC_EMACS_VER, EMODULES_VERSION, EMODULES_REVISION); + } + #ifdef DEBUG if (verbose >= 2) { - printf (" mode = %d (%s)\n", ellcc_mode, - ellcc_mode == ELLCC_COMPILE_MODE ? "compile" : - ellcc_mode == ELLCC_LINK_MODE ? "link" : "init"); + printf (" mode = %d (%s)\n", (int)ellcc_mode, + ellcc_mode_name (ellcc_mode)); printf (" module_name = \"%s\"\n", SSTR(mod_name)); printf (" module_title = \"%s\"\n", SSTR(mod_title)); printf (" module_version = \"%s\"\n", SSTR(mod_version)); @@ -286,10 +380,13 @@ #endif if (exec_argc < 2) - fatal ("too few arguments", (char *) 0); + { + /* FIXME: Print usage output instead */ + fatal ("too few arguments"); + } /* - * Get the over-rides from the environment + * Get the overrides from the environment */ OVERENV(ellcc, "ELLCC", ELLCC_CC); OVERENV(ellld, "ELLLD", ELLCC_DLL_LD); @@ -298,12 +395,18 @@ OVERENV(elldllflags, "ELLDLLFLAGS", ELLCC_DLL_LDFLAGS); OVERENV(ellpicflags, "ELLPICFLAGS", ELLCC_DLL_CFLAGS); - if (ellcc_mode == ELLCC_COMPILE_MODE) - do_compile_mode(); - else if (ellcc_mode == ELLCC_LINK_MODE) - do_link_mode(); - else - do_init_mode(); + switch (ellcc_mode) + { + case ELLCC_COMPILE_MODE: + exec_argv = do_compile_mode (); + break; + case ELLCC_LINK_MODE: + exec_argv = do_link_mode (); + break; + default: + exec_argv = do_init_mode (); + break; + } /* * The arguments to pass on to the desired program have now been set @@ -312,16 +415,22 @@ if (verbose) { for (i = 0; i < real_argc; i++) - printf ("%s ", exec_argv[i]); + { + printf ("%s ", exec_argv[i]); + } printf ("\n"); - fflush (stdout); + (void)fflush (stdout); } - exec_argv[real_argc] = (char *)0; /* Terminate argument list */ + + /* Terminate argument list. */ + exec_argv = add_string (exec_argv, NULL); i = execvp (exec_argv[0], exec_argv); if (verbose) - printf ("%s exited with status %d\n", exec_argv[0], i); - return i; + { + printf ("%s exited with status %d\n", exec_argv[0], i); + } + exit (i); } /* Like malloc but get fatal error if memory is exhausted. */ @@ -330,112 +439,166 @@ { void *result = malloc (size); if (result == NULL) - fatal ("virtual memory exhausted", (char *)0); + { + fatal ("virtual memory exhausted"); + } + return result; +} + +/* Like realloc but get fatal error if memory is exhausted. */ +static void * +xrealloc (void *ptr, size_t size) +{ + void *result = realloc (ptr, size); + if (result == NULL) + { + fatal ("virtual memory exhausted"); + } + return result; +} + +/* Like strdup but get fatal error if memory is exhausted. */ +static char * +xstrdup (char *s) +{ + char *result = strdup (s); + if (result == NULL) + { + fatal ("virtual memory exhausted"); + } return result; } /* Print error message and exit. */ static void -fatal (char *s1, char *s2) +fatal (char *format, ...) { - fprintf (stderr, "%s: ", progname); - fprintf (stderr, s1, s2); - fprintf (stderr, "\n"); + va_list ap; + + va_start (ap, format); + (void)fprintf (stderr, "%s: ", progname); + (void)vfprintf (stderr, format, ap); + (void)fprintf (stderr, "\n"); + va_end (ap); exit (EXIT_FAILURE); } +static char ** +add_string (char **exec_argv, char *str) +{ + if (real_argc >= exec_length) + { + exec_length = real_argc + EXEC_GROW_SIZE; + exec_argv = xrnew (exec_argv, exec_length, char *); + } + exec_argv[real_argc++] = str; + return exec_argv; +} + /* * Add a string to the argument vector list that will be passed on down * to the compiler or linker. We need to split individual words into - * arguments, taking quoting into account. This can get ugly. + * arguments, taking quoting into account. */ -static void -add_to_argv (const char *str) +static char ** +add_to_argv (char **exec_argv, const char *str) { - int sm = 0; - const char *s = (const char *)0; - - if ((str == (const char *)0) || (str[0] == '\0')) - return; - - while (*str) + /* Don't add nonexistent strings */ + if (str == NULL) { - switch (sm) - { - case 0: /* Start of case - string leading whitespace */ - if (isspace ((unsigned char) *str)) - str++; - else - { - sm = 1; /* Change state to non-whitespace */ - s = str; /* Mark the start of THIS argument */ - } - break; + return exec_argv; + } - case 1: /* Non-whitespace character. Mark the start */ - if (isspace ((unsigned char) *str)) - { - /* Reached the end of the argument. Add it. */ - int l = str-s; - exec_argv[real_argc] = xnew (l+2, char); - strncpy (exec_argv[real_argc], s, l); - exec_argv[real_argc][l] = '\0'; - real_argc++; - sm = 0; /* Back to start state */ - s = (const char *)0; - break; - } - else if (*str == '\\') - { - sm = 2; /* Escaped character */ - str++; - break; - } - else if (*str == '\'') - { - /* Start of quoted string (single quotes) */ - sm = 3; - } - else if (*str == '"') - { - /* Start of quoted string (double quotes) */ - sm = 4; - } - else - { - /* This was just a normal character. Advance the pointer. */ - str++; - } - break; + /* Skip leading whitespace */ + while (isspace (*str)) + { + str++; + } - case 2: /* Escaped character */ - str++; /* Preserve the quoted character */ - sm = 1; /* Go back to gathering state */ - break; - - case 3: /* Inside single quoted string */ - if (*str == '\'') - sm = 1; - str++; - break; - - case 4: /* inside double quoted string */ - if (*str == '"') - sm = 1; - str++; - break; - } + /* Don't add nonexistent strings */ + if (*str == '\0') + { + return exec_argv; } - if (s != (const char *)0) + while (*str != '\0') { - int l = str-s; - exec_argv[real_argc] = xnew (l+2, char); - strncpy (exec_argv[real_argc], s, l); - exec_argv[real_argc][l] = '\0'; - real_argc++; - s = (const char *)0; + const char *s; + char *arg; + int l; + + s = str; /* Mark the start of THIS argument */ + + /* Find contiguous nonwhitespace characters */ + while (*str != '\0' && !isspace(*str)) + { + if (*str == '\\') /* Escaped character */ + { + str++; + if (*str != '\0') + { + str++; + } + } + else if (*str == '\'') + { + str++; + while (*str != '\0' && *str != '\'') + { + if (str[0] == '\\' && str[1] != '\0') + { + str += 2; + } + else + { + str++; + } + } + if (*str == '\'') + { + str++; + } + } + else if (*str == '\"') + { + str++; + while (*str != '\0' && *str != '\"') + { + if (str[0] == '\\' && str[1] != '\0') + { + str += 2; + } + else + { + str++; + } + } + if (*str == '\"') + { + str++; + } + } + else + { + str++; /* Normal character. Advance the pointer. */ + } + } + + /* Reached the end of the argument. Add it. */ + l = str-s; + arg = xnew(l+1, char); + strncpy(arg, s, (size_t)l); + arg[l] = '\0'; + exec_argv = add_string (exec_argv, arg); + + /* Skip trailing whitespace */ + while (isspace (*str)) + { + str++; + } } + + return exec_argv; } /* @@ -443,27 +606,29 @@ * is build up the argument vector and exec() it. We must just make sure * that we get all of the required arguments in place. */ -static void +static char ** do_compile_mode (void) { int i; - char ts[4096]; /* Plenty big enough */ + char **exec_argv = xnew (exec_argc + 20, char *); - add_to_argv (ellcc); - add_to_argv (ellcflags); - add_to_argv (ellpicflags); - add_to_argv ("-DPIC"); - add_to_argv ("-DEMACS_MODULE"); + exec_argv = add_to_argv (exec_argv, ellcc); + exec_argv = add_to_argv (exec_argv, ellcflags); + exec_argv = add_to_argv (exec_argv, ellpicflags); + exec_argv = add_to_argv (exec_argv, "-DPIC"); + exec_argv = add_to_argv (exec_argv, "-DEMACS_MODULE"); #ifdef XEMACS - add_to_argv ("-DXEMACS_MODULE"); /* Cover both cases */ - add_to_argv ("-Dxemacs"); + /* Cover both cases */ + exec_argv = add_to_argv (exec_argv, "-DXEMACS_MODULE"); + exec_argv = add_to_argv (exec_argv, "-Dxemacs"); #endif - add_to_argv ("-Demacs"); - sprintf (ts, "-I%s/include", ELLCC_ARCHDIR); - add_to_argv (ts); - add_to_argv (ELLCC_CF_ALL); + exec_argv = add_to_argv (exec_argv, "-Demacs"); + exec_argv = add_to_argv (exec_argv, ELLCC_CF_ALL); for (i = 1; i < exec_argc; i++) - exec_argv[real_argc++] = strdup (prog_argv[exec_args[i]]); + { + exec_argv = add_string (exec_argv, xstrdup (prog_argv[exec_args[i]])); + } + return exec_argv; } /* @@ -473,20 +638,23 @@ * all of the provided arguments, then the final post arguments. Once * all of this has been done, the argument vector is ready to run. */ -static void +static char ** do_link_mode (void) { int i,x; - char *t, ts[4096]; /* Plenty big enough */ + char *t, *ts; + char **exec_argv = xnew(exec_argc + 10, char *); - add_to_argv (ellld); - add_to_argv (ellldflags); - add_to_argv (elldllflags); - add_to_argv (ELLCC_DLL_LDO); - add_to_argv (mod_output); + exec_argv = add_to_argv (exec_argv, ellld); + exec_argv = add_to_argv (exec_argv, ellldflags); + exec_argv = add_to_argv (exec_argv, elldllflags); + exec_argv = add_to_argv (exec_argv, ELLCC_DLL_LDO); + exec_argv = add_to_argv (exec_argv, mod_output); for (i = 1; i < exec_argc; i++) - exec_argv[real_argc++] = strdup (prog_argv[exec_args[i]]); - add_to_argv (ELLCC_DLL_POST); + { + exec_argv = add_string (exec_argv, xstrdup (prog_argv[exec_args[i]])); + } + exec_argv = add_to_argv (exec_argv, ELLCC_DLL_POST); /* * Now go through each argument and replace ELLSONAME with mod_output. @@ -494,18 +662,19 @@ for (i = 0; i < real_argc; i++) { x = 0; + ts = xnew (2 * strlen (exec_argv[i]), char); ts[0] = '\0'; t = exec_argv[i]; - while (*t) + while (*t != '\0') { if (*t == 'E') { - if (strncmp (t, "ELLSONAME", 9) == 0) + if (strncmp (t, "ELLSONAME", (size_t)9) == 0) { strcat (ts, mod_output); - t += 8; x += strlen (mod_output); + t += 8; } else { @@ -523,8 +692,9 @@ t++; } free (exec_argv[i]); - exec_argv[i] = strdup (ts); + exec_argv[i] = ts; } + return exec_argv; } /* @@ -534,16 +704,18 @@ * the header information first, as make-doc will append to the file by * special dispensation. */ -static void +static char ** do_init_mode (void) { int i; - char ts[4096]; /* Plenty big enough */ - char *mdocprog; + char *ts, *mdocprog; + char **exec_argv = xnew(exec_argc + 8, char *); FILE *mout = fopen (mod_output, "w"); - if (mout == (FILE *)0) - fatal ("failed to open output file", mod_output); + if (mout == NULL) + { + fatal ("Failed to open output file %s", mod_output); + } fprintf (mout, "/* DO NOT EDIT - AUTOMATICALLY GENERATED */\n\n"); fprintf (mout, "#include \n\n"); fprintf (mout, "const long emodule_compiler = %ld;\n", EMODULES_REVISION); @@ -551,17 +723,29 @@ fprintf (mout, "const char *emodule_version = \"%s\";\n", SSTR(mod_version)); fprintf (mout, "const char *emodule_title = \"%s\";\n", SSTR(mod_title)); fprintf (mout, "\n\n"); - fprintf (mout, "void docs_of_%s()\n", SSTR(mod_name)); - fclose (mout); + fprintf (mout, "void docs_of_%s (void);\n", SSTR(mod_name)); + fprintf (mout, "void docs_of_%s (void)\n", SSTR(mod_name)); + if (fclose (mout) != 0) + { + fatal ("Failed to close output file %s", mod_output); + } - sprintf (ts, "%s/make-docfile", ELLCC_ARCHDIR); - OVERENV(mdocprog, "ELLMAKEDOC", ts); - add_to_argv (mdocprog); + mdocprog = getenv ("ELLMAKEDOC"); + if (mdocprog == NULL) + { + mdocprog = xnew (14 + strlen (ELLCC_ARCHDIR), char); + sprintf (mdocprog, "%s/make-docfile", ELLCC_ARCHDIR); + } + exec_argv = add_to_argv (exec_argv, mdocprog); + ts = xnew (4 + strlen (mod_output), char); sprintf (ts, "-E %s", mod_output); - add_to_argv (ts); + exec_argv = add_to_argv (exec_argv, ts); + free (ts); for (i = 1; i < exec_argc; i++) - exec_argv[real_argc++] = strdup (prog_argv[exec_args[i]]); + { + exec_argv = add_string (exec_argv, xstrdup (prog_argv[exec_args[i]])); + } + return exec_argv; } #endif /* HAVE_SHLIB */ - diff --text -u 'xemacs-21.5.9/lib-src/ellcc.h.in' 'xemacs-21.5.10/lib-src/ellcc.h.in' Index: ./lib-src/ellcc.h.in --- ./lib-src/ellcc.h.in Fri Apr 13 03:21:00 2001 +++ ./lib-src/ellcc.h.in Mon Nov 18 15:52:24 2002 @@ -8,7 +8,7 @@ #ifndef ELLCC_HDR #define ELLCC_HDR -#define ELLCC_CC "@CC@" +#define ELLCC_CC "@XEMACS_CC@" #define ELLCC_CFLAGS "@CFLAGS@" #define ELLCC_CPPFLAGS "@CPPFLAGS@" #define ELLCC_LDFLAGS "@LDFLAGS@" diff --text -u 'xemacs-21.5.9/lib-src/make-docfile.c' 'xemacs-21.5.10/lib-src/make-docfile.c' Index: ./lib-src/make-docfile.c --- ./lib-src/make-docfile.c Tue Jul 23 17:34:59 2002 +++ ./lib-src/make-docfile.c Mon Nov 18 15:52:24 2002 @@ -373,7 +373,7 @@ } -char buf[128]; +char globalbuf[128]; /* Skip a C string from INFILE, and return the character that follows the closing ". @@ -387,7 +387,7 @@ read_c_string (FILE *infile, int printflag, int c_docstring) { register int prevc = 0, c = 0; - char *p = buf; + char *p = globalbuf; int start = -1; /* XEmacs addition */ MDGET; @@ -774,7 +774,7 @@ if (c < 0) goto eof; if (defunflag && c == '(') - fatal ("Missing doc string for DEFUN %s\n", buf); + fatal ("Missing doc string for DEFUN %s\n", globalbuf); c = getc (infile); } c = getc (infile); @@ -804,12 +804,12 @@ /* XEmacs change: the original code is in the "else" clause */ if (ellcc) fprintf (outfile, " CDOC%s(\"%s\", \"\\\n", - defvarflag ? "SYM" : "SUBR", buf); + defvarflag ? "SYM" : "SUBR", globalbuf); else { putc (037, outfile); putc (defvarflag ? 'V' : 'F', outfile); - fprintf (outfile, "%s\n", buf); + fprintf (outfile, "%s\n", globalbuf); } c = read_c_string (infile, 1, defunflag || defvarflag); @@ -850,7 +850,7 @@ fprintf (outfile, "\\n\\\n\\n\\\n"); else fprintf (outfile, "\n\n"); - write_c_args (outfile, buf, argbuf, minargs, maxargs); + write_c_args (outfile, globalbuf, argbuf, minargs, maxargs); } if (ellcc) fprintf (outfile, "\\n\");\n\n"); diff --text -u 'xemacs-21.5.9/lisp/ChangeLog' 'xemacs-21.5.10/lisp/ChangeLog' Index: ./lisp/ChangeLog --- ./lisp/ChangeLog Fri Aug 30 17:26:00 2002 +++ ./lisp/ChangeLog Sun Jan 5 14:13:33 2003 @@ -1,3 +1,256 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + +2002-12-27 Stephen J. Turnbull + + * wid-edit.el: Synch trivia to GNU Emacs 21.3.50. Make docstrings + from comments, fix typos & whitespace, add some comments and fixmes. + +2002-12-15 Ben Wing + + * ChangeLog: Combine all ChangeLog files. + * ChangeLog.1: Deleted. + +2002-12-14 Ben Wing + + * window-xemacs.el (restore-saved-window-parameters): + Don't override point motion when restoring window start, or + `M-x goto-line' doesn't work. + +2002-12-03 John Paul Wallington + + * cus-start.el (garbage-collection-messages): Add. + +2002-12-02 Mike Sperber + + * The Great Window Configuration rewrite: Re-implement window + configuration functionality in Emacs Lisp. + + * window-xemacs.el (current-window-configuration): + (set-window-configuration): (plus many functions they depend on) + Re-implement window configurations in Emacs Lisp. + +2002-12-03 Didier Verna + + * faces.el (set-face-background-pixmap-file): Ensure default value + can be computed. + +2002-12-03 Didier Verna + + * faces.el (background-pixmap-file-history): New. + * faces.el (set-face-background-pixmap-file): New. + +2002-11-28 Mike Sperber + + * window.el (save-window-excursion): New macro to eventually + replace the bytecode instruction of that name. + +2002-11-16 Mike Sperber + + * dumped-lisp.el (preloaded-file-list): Move window.el & neighbors + further up because other some files further down import macro(s) + from it. + +2002-11-26 Mike Sperber + + * window.el (shrink-window-if-larger-than-buffer): Elide braindead + use of `save-window-excursion'. + +2002-11-28 Mike Sperber + + * dialog.el (make-dialog-box): `set-frame-pixel-size' -> + `set-frame-displayable-pixel-size,' following the + `frame-pixel-xxx' reorganization in src/frame.c. + +2002-11-27 Ben Wing + + * cl-macs.el (loop): Document better. + + * cmdloop.el: + * cmdloop.el (command-error): + * cmdloop.el (breakpoint-on-error): Removed. + Remove nonworking breakpoint-on-error now that debug-on-error + works as documented. + + * help.el: + * help.el (temp-buffer-mode): New. + * help.el (Commands): New. + * help.el (temp-buffer-mode-map): New. + * help.el (mode-for-temp-buffer): New. + * help.el (with-displaying-help-buffer): Removed. + * help.el (with-displaying-temp-buffer): New. + Extract out with-displaying-help-buffer into a more general + mechanism. + + * lib-complete.el: + * lib-complete.el (find-library-source-path): + * lib-complete.el (find-library): + Support thunks in find-library-source-path. + + * startup.el (normal-top-level): + Don't catch errors when noninteractive, because that makes + stack traces from stack-trace-on-error useless. + +2002-11-17 Ben Wing + + * code-files.el (load): + * loadhist.el (unload-feature): + Fix warnings. + + * package-get.el (package-get-update-base-from-buffer): + Fix warnings. + + NOTE: This was already fixed awhile ago, but reverted by Steve Y. + Please be careful. + +2002-10-14 Jerry James + + * gtk-font-menu.el (gtk-reset-device-font-menus): Simplify code + that previously could not depend on LISP_FLOAT_TYPE. + * x-font-menu.el (x-reset-device-font-menus): Ditto. + +2002-11-12 Stephen J. Turnbull + + Synch to 21.4 (suggested by Edward M. Lee ): + + * font-menu.el (font-menu-set-font): Make sure values for family, + size, and weight are defaulted non-nil. Fix indentation. + (font-menu-size-scaling): + (font-menu-preferred-resolution): + Provide specs for GTK+. + +2002-11-03 Mike Sperber + + * code-process.el (call-process-region): Preserve return value + from `call-process.' + +2002-10-25 Scott Evans + + * replace.el (operate-on-non-matching-lines) + (operate-on-non-matching-lines): Generalized from + delete-non-matching-lines and delete-matching-lines. The + "operate" versions work with regions, can copy to the kill ring, + and return the number of lines copied/deleted. + (delete-non-matching-lines): Use operate-on-non-matching-lines. + (delete-matching-lines): Use operate-on-matching-lines. + (kill-non-matching-lines): New. + (copy-non-matching-lines): New. + (kill-matching-lines): New. + (copy-matching-lines): New. + +2002-10-24 Andy Piper + + * dialog.el (make-dialog-box): for general dialogs only + delete-frame-hook will be run. + +2002-10-10 Jerry James + + * autoload.el (generate-file-autoloads-1): Use new print-autoload + margin parameter. + * autoload.el (generate-c-file-autoloads-1): Ditto. Fix typo in + docstring. Conditionalize module autoloads on the presence of the + module in module-directory. + * autoload.el (print-autoload): New margin parameter to prettify + module auto-autoloads without affecting Lisp auto-autoloads. + * dump-paths.el (startup-setup-paths): Always set + module-directory, site-module-directory, and module-load-path, + even when not called-early. + +2002-09-22 Ville Skyttä + + * package-get.el (package-get-download-sites): Bring sites list + up to date, prefer xx.xemacs.org addresses. + +2002-09-12 John Paul Wallington + + * hyper-apropos.el (hyper-apropos-popup-menu): Add "Find Variable" + menu entry for `hyper-apropos-find-variable'. + +2002-09-03 John Paul Wallington + + * help.el (view-lossage): Change interactive spec to "P". + +2002-09-03 John Paul Wallington + + * subr.el (with-output-to-string): Synch with GNU Emacs 21; + avoids leaking temp buffers by killing rather than erasing + them, and doesn't execute BODY in temporary `standard-output' + buffer. + +2002-10-07 Katsumi Yamaoka + + * keydefs.el (global-map): Bind C-xrd to delete-rectangle per GNU. + +2002-10-03 Stephen J. Turnbull + + * font-lock.el (font-lock-compile-keywords): Improve docstring. + +2002-09-22 Ville Skyttä + + * files.el (auto-mode-alist): Move entries for modes in packages + to the corresponding modes. + (interpreter-mode-alist): Ditto. + +2002-09-16 Stephen J. Turnbull + + * obsolete.el (parse-sexp-lookup-properties): new compatible alias + for `lookup-syntax-properties'. RFE from Alan Mackenzie. + +2002-08-08 Jerry James + + * autoload.el (make-c-autoload): New function for reading autoload + markers in C files. + * autoload.el (generate-c-autoload-cookie): New variable. + * autoload.el (generate-c-autoload-module): New variable. + * autoload.el (generate-file-autoloads): Do C autoloads, too. + * autoload.el (generate-file-autoloads-1): Use print-autoload. + * autoload.el (generate-c-file-autoloads-1): New function. + * autoload.el (print-autoload): New function to abstract the + printing of autoload forms. + * autoload.el (update-file-autoloads): Do C autoloads, too. + * autoload.el (update-autoloads-from-directory): Ditto. + * code-files.el (load): Pass the pathless filename to load-module. + * loadhist.el (unload-feature): Set unloading-module when a + module marker is seen in load-history. Call unload-module if + unloading-module is non-nil. + * startup.el (startup-load-autoloads): Look for module autoloads. + * update-elc-2.el (batch-update-elc-2): Generate module + autoloads. + +2002-09-02 Ville Skyttä + + * bytecomp-runtime.el (make-obsolete): Docstring argument nit. + (make-obsolete-variable): Ditto. + (make-compatible): Ditto. + (make-compatible-variable): Ditto. + +2002-07-12 Andy Piper + + * custom.el (custom-theme-set-variables): remove bogus + arguments. Use custom-set-default to set defaults. + (custom-set-variables): update doc. + (custom-local-buffer): new, synced from FSF. + (custom-set-default): ditto. + (defcustom): update doc. + +2002-07-23 Andy Piper + + * about.el (about-personal-info): update me. + +2002-08-28 Andy Piper + + * files.el (revert-buffer): propagate revert-without-query-status. + +2002-08-31 Seiichi Ikiuo + + * code-init.el (reset-coding-categories-to-default): Add new + coding category 'utf-8-bom'. + + * coding.el (coding-system-category): Add check for 'utf-8-bom'. + + * unicode.el: Add new coding system 'utf-8-bom'. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. @@ -71,7 +324,7 @@ 2002-07-21 John Paul Wallington - * process.el (substitute-env-vars): New function; sync with + * process.el (substitute-env-vars): New function; sync with GNU Emacs 21.1.50. (setenv): Add optional arg SUBSTITUTE-ENV-VARS; sync with GNU Emacs 21.1.50. @@ -12898,3 +13151,8063 @@ 1997-12-13 SL Baur * dumped-lisp.el (preloaded-file-list): Remove debugging statement. + +1997-12-13 SL Baur + + * help.el (describe-function-arglist): Restore. + (describe-function-1): Correct typo. + From Jamie Zawinski + +1997-12-13 Hrvoje Niksic + + * cus-dep.el (Custom-make-dependencies): Cut a newline. + + * cus-edit.el (customize-changed-options): Handle output more nicely. + (customize-changed-options): Mention `:version' instead of `:new'. + (customize-changed-options): Use `push'. + +1997-12-12 Colin Rafferty + + * window.el (shrink-window-if-larger-than-buffer): Modified the + algorithm so that is calculates the amount it can shrink the + buffer by shrinking the buffer itself first. + +1997-12-10 Hrvoje Niksic + + * undo-stack.el (trunc-stack-bottom): Don't terminate error + message with a period. + + * cus-start.el: Synch quoter with `custom-quote'. + + * custom.el (custom-add-load): Update custom-group-hash-table. + +1997-12-12 Hrvoje Niksic + + * mouse.el (mouse-track-run-hook): Understand `make-local-hook' + convention. + + * custom.el (custom-add-version): New function, from FSF. + (custom-handle-keyword): Use it. + + * cus-edit.el (custom-variable-prompt): Require match. + (customize-changed-options): New function, from FSF. + (customize-version-lessp): Ditto. + + * cus-edit.el (custom-quote): Defalias to `quote-maybe'. + (customize-set-variable): Use `quote-maybe'. + (customize-save-variable): Ditto. + (custom-variable-value-create): Ditto. + (custom-variable-set): Ditto. + (custom-variable-save): Ditto. + + * cus-start.el: Use `quote-maybe'. + +1997-12-11 Hrvoje Niksic + + * simple.el (fsf:do-auto-fill): Comment out. + + * simple.el (set-goal-column): Be careful about the format + argument to message. + + * cl-macs.el: New setf methods for: buffer-dedicated-frame, + console-type-image-conversion-list, default-toolbar-position, + device-class, extent-begin-glyph, extent-begin-glyph-layout, + extent-end-glyph, extent-end-glyph-layout, extent-keymap, + extent-parent, extent-properties, frame-selected-window, + itimer-function, itimer-function-arguments, itimer-is-idle, + itimer-recorded-run-time, itimer-restart, itimer-uses-arguments, + itimer-value, keymap-parents, marker-insertion-type, + mouse-pixel-position, trunc-stack-length, trunc-stack-stack, + undoable-stack-max and weak-list-list. + +1997-12-12 SL Baur + + * keydefs.el (global-map): Import C-x M-: keybinding for + `repeat-complex-command' from Emacs 20. + +1997-12-11 Christoph Wedler + + * mule/mule-debug.el (list-charsets): Make it work. Better + formatting. + +1997-12-11 SL Baur + + * files.el (insert-file): Don't use format.el settings. + + * format.el (format-decode): Update docstring. + +1997-12-09 SL Baur + + * make-docfile.el (package-path): Set load-path from package path + before collecting the files to dump. + * update-elc.el (package-path): Ditto. + + * loadup.el: Comment changes, cleanup. + +1997-12-09 Hrvoje Niksic + + * etags.el (tags-loop-continue): Avoid giant `progn' in while test. + (next-file): Use `pop'. + +1997-12-08 Hrvoje Niksic + + * etags.el (find-tag-internal): Set the initial fuzz offset to 100 + instead of 1000. + (find-tag-internal): Use `letf'. + (tags-delete): Removed -- was unused. + (set-buffer-tag-table): Use `expand-file-name'. + (get-tag-table-buffer): Use `ecase'. + (add-to-tag-completion-table): Mark the filename messages with + progress. + (add-to-tag-completion-table): Use `char-after' instead of + `following-char'. + (add-to-tag-completion-table): Use `match-string'. + (complete-symbol): Use `error' instead of message+ding. + (complete-symbol): Use `skip-syntax-forward'. + (tag-complete-symbol): Autoload. + (pop-mark-from-stack): Use `buffer-live-p'. + (pop-tag-mark): Autoload the `M-*' binding. + (list-tags): Made it work. + +1997-12-09 SL Baur + + * x-toolbar.el (toolbar-news): Fix typo. + +1997-12-06 Jonathan Harris + + * dumped-lisp.el, emacs.c, symsinit.h, msw-init.el, nt/xemacs.mak + Created files: msw-select.el, select-msw.c + Copy and paste 8-bit text to/from mswindows clipboard. + + * msw-faces.el: mswindows-make-font-bold[-italic] + Try to make the bold font the same width as the non-bold font. + +1997-12-07 Hrvoje Niksic + + * wid-edit.el (widget-prettyprint-to-string): Nix cl-prettyprint's + newlines. + +1997-12-06 Hrvoje Niksic + + * x-toolbar.el (toolbar-not-configured): Use `error'. + (toolbar-compile): Restore `toolbar-already-run' feature from + 19.15. + (toolbar-news): Use `eval' on non-symbols. + (toolbar-info-frame-plist): Use the new `plist' widget. + (toolbar-news-frame-plist): Ditto. + + * font-lock.el (font-lock-fontify-buffer-function): New variable, + synched with FSF Emacs 20. + (font-lock-unfontify-buffer-function): Ditto. + (font-lock-fontify-region-function): Ditto. + (font-lock-unfontify-region-function): Ditto. + (font-lock-inhibit-thing-lock): Ditto. + +1997-12-07 SL Baur + + * egg/egg-cwnn-leim.el (egg-pinyin-activate): New file. Interface + to Chinese Wnn server. + + * egg/egg-kwnn-leim.el: New file. Interface to Korean Wnn + server. + + * dumped-lisp.el (preloaded-file-list): Dump LEIM integration + files for kWnn and cWnn. + +1997-11-30 Adrian Aichner + + * build-report.el: + Making better use of `custom'-features to represent various + `build-report' variables. + build-report-*-regexp have become lists which are or-ed together + internally. + customized group `build-report' is now a child of group `build' which is + not release as of this version. + Including comment now into build-report stating wheter all or just the + most recent ./configure output is being inserted. + +1997-12-01 Jonathon Harris + + * msw-init.el: Provide default bindings for cut, paste, copy and undo + +1997-12-05 Hrvoje Niksic + + * wid-edit.el: Ditto. + (widget-prettyprint-to-string): Use `cl-prettyprint'. + (widget-sexp-value-to-internal): Handle printed object beginning + with newline. + + * cus-edit.el: Avoid `pp-to-string'. + +1997-12-04 Hrvoje Niksic + + * simple.el (display-warning): Use `with-current-buffer'. + + * font-lock.el (font-lock-mode): Use `lmessage'. + (font-lock-fontify-buffer): Ditto. + (font-lock-unfontify-region): Ditto. + (font-lock-fontify-syntactically-region): Ditto. + (font-lock-fontify-keywords-region): Ditto. + (font-lock-fontify-keywords-region): Ditto. + + * simple.el (raw-append-message): Use `with-current-buffer'. + (log-message-filter): Place `save-match-data' outside the loop. + (log-message): Use `with-current-buffer'. + (remove-message): Use `lwarn' to warn about the hook error. + + * lisp-mode.el: Indent `lmessage' and `lwarn' properly. + + * simple.el (lmessage): New function. + (lwarn): Ditto. + (kill-region): Use `lmessage' instead of `display-message'. + (set-comment-column): Ditto. + (set-fill-column): Ditto. + + * faces.el (get-custom-frame-properties): Don't use + `default-custom-frame-properties'. + + * font-lock.el: Customized variables. + + * font-lock.el: Customized faces. + + * font-lock.el: (font-lock-maximum-decoration): Default to t. + + * cus-edit.el (vms): Removed. + +1997-12-03 Hrvoje Niksic + + * cus-start.el: Ditto. + + * gui.el (dialog-frame-plist): Ditto. + + * gnuserv.el (gnuserv-frame-plist): Ditto. + + * frame.el: Use the `plist' widget type in defcustoms. + + * cus-edit.el (plist): New widget type. + (custom-plist-convert-widget): New function. + (custom-quote): Vectors and bit-vectors are also self-printable. + +1997-12-05 Mark Borges + + * mail/mail-extr.el (all-top-level-domains): + Two letter country codes synched with + http://www.iana.org/in-notes/iana/assignments/country-codes + as updated by the RIPE Network Coordination Centre. + Source: ISO 3166 Maintenance Agency + Latest change: Thu Aug 7 17:59:51 MET DST 1997 + +1997-12-03 Eric Eide + + * files.el (set-auto-mode): Don't invoke + `hack-local-variables-prop-line' if `enable-local-variables' + is nil. + + * files.el (hack-local-variables-prop-line): Don't invoke + `hack-local-variables-p' for mode-only or empty -*- lines. + Don't test `enable-local-variables' before setting the mode; + instead, just verify that the specified major mode isn't the + current major mode. + +1997-12-03 Hrvoje Niksic + + * startup.el (load-init-file): Use a warning buffer in case of + error. + +1997-12-05 SL Baur + + * buffer.el (switch-to-buffer): Update docstring. + Suggested by Adrian Aichner + +1997-12-01 Jens-Ulrik Holger Petersen + + * cus-edit.el (custom-unlispify-remove-prefixes): Reference to + related variables added. + (custom-variable-default-form): New variable controlling default + display form for customization of variables. + (custom-variable): widget `:form' is nil before initialization. + (custom-variable-value-create): Initialize `:form' to + `custom-variable-default-form'. + (custom-face-default-form): New variable controlling default + display form for customization of faces. + (custom-face): widget `:form' is nil before initialization. + (custom-face-value-create): Initialize `:form' to + `custom-face-default-form'. + +1997-11-28 Jens-Ulrik Holger Petersen + + * misc/mic-paren.el: Define faces with `defface'. Colors + given for both dark and light backgrounds. Keep face + variables for backward compatibility. + +1997-12-03 Hrvoje Niksic + + * simple.el (temporary-goal-column): Made buffer-local. + +1997-12-01 Hrvoje Niksic + + * cus-edit.el (Custom-move-and-invoke): Removed. + (custom-mode): Ditto for doc. + +1997-12-02 SL Baur + + * egg/egg-sj3-client.el (sj3-command-reset): Initial port to XEmacs. + + * egg/egg-sj3.el: Initial port to XEmacs. + + * egg/egg-leim.el (egg-activate): Define + `egg-default-startup-file'. + + * language/japanese.el (japanese): Remove definition of + `egg-default-startup-file'. + + * dumped-lisp.el (preloaded-file-list): Dump egg-sj3 and skk LEIM + support. + + * egg/egg-sj3-leim.el: New file -- Add Egg/SJ3 support to LEIM. + +1997-12-01 SL Baur + + * locale/ja/locale-start.el (startup-splash-frame-body): Fix typo + on advertised-undo. + Suggested by: Hajime Saitou + - Comment cleanup. + +1997-11-30 SL Baur + + * help-macro.el (help-read-key): Autoload. + +1997-11-29 Hrvoje Niksic + + * etags.el (buffer-tag-table-list): Check for `../TAGS'. + (visit-tags-table): Disallow setting `tags-file-name' to a + nonexistent file. + +1997-11-29 SL Baur + + * update-elc.el ((preloaded-file-list site-load-packages)): Modify + error message to be more build-report.el friendly. + + * dumped-lisp.el (preloaded-file-list): Remove tooltalk/ prefix + from tooltalk dumped files. + + * symbol-syntax.el: Modify comments. + +1997-11-29 Kyle Jones + + * etags.el (find-tag-default): Use symbol-near-point + instead of thing-symbol to remove the dependency on + thing.el. + +1997-11-29 SL Baur + + * symbol-syntax.el: Unpackaged. + * disp-table.el: Unpackaged. + * picture.el: Unpackaged. + * rect.el: Unpackaged. + * lisp-mnt.el: Unpackaged. + + * mule/canna.el: Don't require emu. + (canna:enter-canna-mode): Inline code for compatibility function + `minibuffer-prompt-width'. + + * info.el (Info-find-node): Guard call to browse-url. + * wid-edit.el (widget-url-link-action): Ditto. + + * hyper-apropos.el (hyper-apropos-get-doc): Use cl-prettyprint + instead of pp. + (hyper-apropos-disassemble): Ditto. + + * x-menubar.el (default-menubar): Disable WWW items in help menu + if no browse-url. + + * help.el (xemacs-www-page): Print error message intead of bombing + if not browse-url. + (xemacs-www-faq): Ditto. + + * files.el (recover-session): Print error message instead of + bombing if no dired. + (file-remote-p): Return nil if no ange-ftp and no efs. + + * format.el (format-encode-run-method): `shell-command-on-region' + called with wrong number of args. + (format-decode-run-method): Ditto. + + * buff-menu.el (Buffer-menu-toggle-read-only): Call + modeline-toggle-read-only. + + * register.el (copy-rectangle-to-register): Check for rectangle + functions. + (insert-register): Ditto. + + * x-toolbar.el (pending-delete): Don't (require 'pending-del). + * x-menubar.el (pending-delete): Don't (require 'pending-del). + + * x-menubar.el (bookmark-menu-filter): Add guards against bookmark + package not being loaded. + + * mule/char-table.el: Imported from tm. + * mule/chartblxmas.el: Ditto. + * alist.el: Ditto. + * overlay.el: Unpackaged for Quail. + + * x-menubar.el (default-menubar): Put guard on evaluation of + `ps-paper-type'. + (default-menubar): Put guard on `paren-mode'. + - Put guard on `mouse-avoidance-mode'. + - Guard `font-lock' stuffs. + - Guard browse-url stuffs. + - Clean up old deprecated syntax. + - Put guards on File, Edit, Apps, and Tools menus. + +1997-11-28 Hrvoje Niksic + + * x-toolbar.el (toolbar-news-frame-properties): Made customizable. + +1997-11-27 Christoph Wedler + + * lazy-shot.el (lazy-shot-stealth-timer): `defvar'. Would + bug out when setting `lazy-shot-stealth-time' to nil and visiting + a buffer smaller than `lazy-shot-minimum-size'. + (font-lock-mode-hook): Option is turn-on-lazy-shot. + +1997-11-27 Kyle Jones + + * etags.el: Support new `include' + directive. Search for exact tag matches and then + inexact matches. + +1997-11-26 SL Baur + + * packages.el (packages-useful-lisp): advice.el is a package. + + * x-menubar.el (default-menubar): Make `Options ... Color Printing' + a toggle. + +1997-11-26 Kyle Jones + + * toolbar.el (init-toolbar-from-resrouces): Fix + parens to make valid if-expression. + +1997-11-21 Hrvoje Niksic + + * x-toolbar.el (toolbar-gnus): Respect + `toolbar-news-use-separate-frame'. + +1997-11-22 Hrvoje Niksic + + * x-menubar.el (default-menubar): Use `bookmark-menu-filter' + for the Bookmarks menu. + (bookmark-menu-filter): Handle inactive submenus. + +1997-11-25 Hrvoje Niksic + + * custom.el (custom-declare-variable): Attach the symbol to + load history. + +1997-11-23 SL Baur + + * startup.el (find-emacs-root-internal-1): Erase references to + prim. + + * blessmail.el: dumped-lisp.el has been moved. + * font.el: ditto. + * make-docfile.el: ditto. + * package-admin.el: ditto. + * update-elc.el: ditto. + + * about.el: Moved. + * cleantree.el: ditto. + * dumped-lisp.el: ditto. + * sound.el: ditto. + * winnt.el: ditto. + +1997-11-22 Kyle Jones + + * faces.el: Don't set global background pixmap + property of the modeline face to [nothing], as that + the attributeBackgroundPixmap X resource. + +1997-11-21 SL Baur + + * autoload.el: Moved. + * config.el: ditto. + * etags.el: ditto. + * font-lock.el: ditto. + * fontl-hooks.el: ditto. + * gnuserv.el: ditto. + * info.el: ditto. + * shadow.el: ditto. + * view-less.el: ditto. + +1997-11-18 Colin Rafferty + + * packages.el (packages-find-packages): Modified to allow `nil' + entry in the `package-path'. All entries before the nil will be + prepended to the paths (as before). All entries after nil will be + appended. + + * packages.el (locate-data-file): Implemented similar to + locate-data-directory. + +1997-11-20 Kyle Jones + + * x-faces.el: Add expression to xpm-color-symbols to + look for the global background resource when supporting + the backgroundToolBarColor XPM symbolic name. + +1997-11-17 Marc Paquette + + * efs/dired.el: Removed special case for windows-nt in + dired-get-filename(); no longer needed because we now do + CRLF->LF conversion upstream. + +1997-11-18 Jonathan Harris + + * msw-faces.el: Actually does something. + +1997-11-18 Christoph Wedler + + * packages/font-lock.el (font-lock-fontify-anchored-keywords): + Sync'd with FSF 20.2. + (font-lock-keywords): Docstring partly sync'd with FSF 20.2. + +1997-11-18 SL Baur + + * egg/egg-leim.el (egg-activate): Call normal language setup + function. + - Call egg-mode + - require egg-wnn + + * egg/egg-wnn.el (set-wnn-host-name): Use localhost as a fallback. + (set-cwnn-host-name): Ditto. + (set-kwnn-host-name): Ditto. + (open-wnn-if-disconnected): Ditto. + +1997-11-18 Hrvoje Niksic + + * prim/about.el (about-maintainer-info): Corrected typo. + + * x-toolbar.el (toolbar-mail): Use `eval' to evaluate forms. + + * cus-edit.el (customize-browse): Call `widget-add-change'. + +1997-11-18 SL Baur + + * utils/uniquify.el (uniquify-buffer-name-style): Fix typo. + Suggested by: Michael Sperber + +1997-11-18 Hrvoje Niksic + + * prim/about.el (about-news): Announce a way to leave the buffer. + +1997-11-17 Kyle Jones + + * x-toolbar.el (x-init-toolbar-from-resources): + Initialize the toolbar border width specifiers. + +1997-11-17 SL Baur + + * mule/mule-files.el: Add TUTORIAL.pl to + `file-coding-system-alist'. + * language/european.el: Add Polish language environment. + + * loadup.el: set inhibit-package-init when running from temacs. + +1997-11-16 SL Baur + + * prim/options.el: Fix comment typo. + From Peter Pezaris + +1997-11-16 Kyle Jones + + * prim/minibuf.el (reset-buffer): Make inhibit-read-only + local to the current buffer and set it to t to prevent + read-only text from permanently wedging the minibuffer. + +1997-11-16 SL Baur + + * packages/emacsbug.el (report-xemacs-bug): Handle case where + ` *Message-Log*' buffer has not already been created. + * prim/help.el (view-lossage): Ditto. + * prim/simple.el (show-message-log): Ditto. + +1997-11-15 SL Baur + + * packages.el (list-autoloads): Fix doubleslash problem. + +1997-11-14 Hrvoje Niksic + + * custom/wid-edit.el (widget-before-change): Check for inactive + editable fields. + +1997-11-13 SL Baur + + * prim/about.el (about-xemacs): Update maintainers. + +1997-11-12 Hrvoje Niksic + + * custom/cus-edit.el (custom-face-save): Save the face. + +1997-11-13 Kyle Jones + + * packages/font-lock.el (font-lock-fontify-keywords-region): + If not fontifying a MATCH-ANCHORED style keyword, + backtrack to just after the end of the keyword before + doing the next search. + +1997-11-13 Olivier Galibert + + * language/vietnamese.el: Synched ccl with FSF 20.2. + + * language/cyrillic.el: Synched ccl with FSF 20.2. + + * language/chinese.el: Synched ccl with FSF 20.2. + + * mule/mule-ccl.el: Synched with FSF 20.2. + +1997-11-12 SL Baur + + * leim/quail.el (quail-translation-keymap): Guard against + meta-prefix-char being -1 (documented as disabling it :-(). + (quail-simple-translation-keymap): Ditto. + (quail-conversion-keymap): Ditto. + +1997-11-11 Hrvoje Niksic + + * custom/cus-face.el (custom-face-attributes): Use + `set-face-stipple' instead of `set-face-background-pixmap'. + + * prim/faces.el (set-face-stipple): Search through + x-bitmap-file-path. + +1997-11-09 Hrvoje Niksic + + * speedbar/speedbar.el (speedbar-needed-height): New function. + (speedbar-frame-mode): Use it. + +1997-11-07 Karl M. Hegbloom + + * speedbar/speedbar.el: Various docfixes. + +1997-11-12 SL Baur + + * pcl-cvs/pcl-cvs-xemacs.el: Fix emerge menu item. + From Jens Krinke + + * mule/mule-cmds.el (set-language-info): Don't add mule menu if + menubars haven't been compiled in. + +1997-11-10 Jens-Ulrik Holger Petersen + + * custom/cus-edit.el (custom-file): Use `user-init-directory' + instead of `emacs-user-extension-dir'. + +1997-11-12 SL Baur + + * modes/image-mode.el: Add command to enter xpm mode when viewing XPM + image. + From: Jens Krinke + +1997-11-12 Greg Klanderman + + * packages/compile.el (compilation-build-compilation-error-regexp-alist): + Added documentation for this function. + + ** (compilation-error-regexp-systems-list): Update documentation + to note that `compilation-build-compilation-error-regexp-alist' + must be called after changing the value. Update customization to + add a set method which automatically calls + `compilation-build-compilation-error-regexp-alist' when the value + is set by custom. Move declaration below declarations that it now + depends upon. + + ** (compilation-mouse-motion-initiate-parsing): Default to nil. + +1997-11-12 Hrvoje Niksic + + * help.el (help-for-help): Use `make-help-screen'. + * help-macro.el: New file. + +1997-11-10 SL Baur + + * x-menubar.el (options-menu-saved-forms): + `current-language-environment' is a variable now. + + * packages/add-log.el (TopLevel): Require 'fortran only if it is + available. + + * modes/lazy-shot.el (lazy-shot-unstall): Add guard on removing + the timer because the timer may not have been installed first. + +1997-11-10 Hrvoje Niksic + + * prim/frame.el (default-deselect-frame-hook): Dehighlight the + currently highlighted extent. + +1997-11-09 Hrvoje Niksic + + * prim/help.el (describe-variable): Add proper spacing. + +1997-11-10 SL Baur + + * utils/browse-url.el (TopLevel): Guard against term not being in + the load path. + (browse-url-lynx-emacs): Attach guards against term not being in + the load path. + +1997-11-09 SL Baur + + * packages/autoinsert.el: Fix bottom of lisp file template. + +1997-11-09 Kyle Jones + + * gui.el: For gui-button-face, set + foreground/background colors only on X devices. + Previously they were set for all devices. + +1997-11-09 Hrvoje Niksic + + * prim/extents.el (extent-keymap): New function. + +1997-11-09 Kyle Jones + + * specifier.el: Define specifier tags for the + device types that do not have compiled in support. + This allows device type specific properties to be set + in specifiers even if the device type isn't supported + in the current binary. + +1997-11-07 Hrvoje Niksic + + * custom/wid-edit.el (widget-glyph-pointer-glyph): New variable. + (widget-glyph-insert-glyph): Use it. + +1997-11-09 SL Baur + + * files.el (find-file-noselect): Guard against dired not being + available. + +1997-11-09 Kyle Jones + + * gui.el: Set the reverse-p property on + gui-button-face so that it will likely look different + than the default face on ttys. + +1997-11-09 SL Baur + + * x-menubar.el (default-menubar): Strokes has been packaged. + +1997-11-08 SL Baur + + * prim/about.el (about-hackers): New entries. + + * utils/shadow.el (list-load-path-shadows): Supress message when + no shadowings are found. + + * loadup.el: Modify algorithm for finding initial lisp directories + since the search now starts from lisp/ not lisp/prim/. + * update-elc.el: Ditto. + * make-docfile.el: Ditto. + +1997-11-07 SL Baur + + * prim/dumped-lisp.el: "lib-complete" is not dumped with InfoDock. + * utils/finder.el (finder-known-keywords): New keyword -- `dumped'. + + * version.el: Cleaned up Lisp comments. + * paths.el: Ditto. + * x-menubar.el: Ditto. + * x-faces.el: Ditto. + * x-iso8859-1.el: Ditto. + * x-mouse.el: Ditto. + * x-select.el: Ditto. + * x-scrollbar.el: Ditto. + * x-misc.el: Ditto. + * x-init.el: Ditto. + * x-toolbar.el: Ditto. + + * backquote.el: Moved to top-level. Cleaned up Lisp comments. + * packages.el: Ditto. + * subr.el: Ditto. + * replace.el: Ditto. + * cl.el: Ditto. + * cl-extra.el: Ditto. + * cl-seq.el: Ditto. + * widget.el: Ditto. + * custom.el: Ditto. + * cus-start.el: Ditto. + * cmdloop.el: Ditto. + * keymap.el: Ditto. + * syntax.el: Ditto. + * device.el: Ditto. + * console.el: Ditto. + * obsolete.el: Ditto. + * specifier.el: Ditto. + * faces.el: Ditto. + * glyphs.el: Ditto. + * objects.el: Ditto. + * extents.el: Ditto. + * events.el: Ditto. + * text-props.el: Ditto. + * process.el: Ditto. + * frame.el: Ditto. + * map-ynp.el: Ditto. + * simple.el: Ditto. + * keydefs.el: Ditto. + * abbrev.el: Ditto. + * derived.el: Ditto. + * minibuf.el: Ditto. + * list-mode.el: Ditto. + * modeline.el: Ditto. + * startup.el: Ditto. + * misc.el: Ditto. + * help-nomule.el: Ditto. + * help.el: Ditto. + * files-nomule.el: Ditto. + * files.el: Ditto. + * lib-complete.el: Ditto. + * format.el: Ditto. + * indent.el: Ditto. + * isearch-mode.el: Ditto. + * buffer.el: Ditto. + * buff-menu.el: Ditto. + * undo-stack.el: Ditto. + * window.el: Ditto. + * window-xemacs.el: Ditto. + * lisp.el: Ditto. + * page.el: Ditto. + * register.el: Ditto. + * iso8859-1.el: Ditto. + * paragraphs.el: Ditto. + * easymenu.el: Ditto. + * lisp-mode.el: Ditto. + * text-mode.el: Ditto. + * fill.el: Ditto. + * auto-save.el: Ditto. + * float-sup.el: Ditto. + * itimer.el: Ditto. + * itimer-autosave.el: Ditto. + * toolbar.el: Ditto. + * scrollbar.el: Ditto. + * menubar.el: Ditto. + * dialog.el: Ditto. + * gui.el: Ditto. + * mode-motion.el: Ditto. + * mouse.el: Ditto. + * tty-init.el: Ditto. + * auto-show.el: Ditto. + +1997-11-07 Kyle Jones + + * modes/abbrev.el (abbrev-prefix-mark): Instead of + inserting a dash to indicate the start of the abbrev, + add an extent with a begin-glyph that contains a dash. + +Wed Nov 05 23:40:00 1997 Jonathan Harris + + * faces.el: init-other-random-faces + Reinstated code that uses (mono x) as a specifer tag, but + conditioned it on (featurep 'x) because x is not a valid + specifier tag under native-win32. + + * Added file headers to: + w32-faces.el, w32-init.el + +1997-11-06 Hrvoje Niksic + + * facemenu.el (facemenu-insert-menu-entry): Check for + menubar availability. + + * easymenu.el (easy-menu-change): Check for menubar + availability. + + * wid-edit.el (widget-echo-help): Use `help-echo' as label + for help-echo messages. + +Sun Nov 01 12:00:00 1997 Jonathan Harris + + * make-docfile.el: Fixed typo when dumped file does not exist. + + * device.el: make-w32-device added. + + * dumped-lisp: added w32-faces and w32-init to list. + + * faces.el: + - make-face-*: Added calls to appropriate w32 functions + conditioned on (featurep 'w32). Made existing X calls + conditioned on (featurep 'x). + - init-other-random-faces: Hacked out a piece of code which used + (mono x) as a specifier because it made w32 unhappy. + + * New files: + w32-faces.el, w32-init.el + +1997-11-07 Hrvoje Niksic + + * prim/mouse.el (default-mouse-motion-handler): When over + modeline, correctly dehighlight the last extent. + +1997-11-07 Hrvoje Niksic + + * prim/minibuf.el (mouse-read-file-name-1): Ditto. + + * packages/balloon-help.el (balloon-help-make-help-frame): Ditto. + + * games/life.el (life-setup): Check for scrollbars before using + them. + +1997-11-07 Hrvoje Niksic + + * hm--html-menus/hm--html-mode.el (hm--html-minor-mode): Ditto. + + * hm--html-menus/hm--html-menu.el ((adapt-xemacsp)): Ditto. + + * comint/gud.el (gdb-install-menubar): Ditto. + + * calendar/calendar.el (calendar-mode): Ditto. + + * auctex/bib-cite.el (bib-cite-initialize): Ditto. + + * utils/floating-toolbar.el (floating-toolbar): Ditto. + + * utils/edit-toolbar.el (edit-toolbar-mode): Ditto. + + * utils/browse-cltl2.el (cltl2-lisp-mode-install): Ditto. + + * modes/view-process-xemacs.el + (View-process-install-pulldown-menu): Ditto. + + * modes/verilog-mode.el (verilog-mode): Ditto. + + * modes/tcl.el (tcl-mode): Ditto. + + * modes/f90.el (f90-mode): Ditto. + + * packages/emerge.el (emerge-set-keys): Ditto. + + * packages/tar-mode.el (tar-mode): Check for menubars. + +1997-11-07 Kyle Jones + + * prim/modeline.el (mouse-drag-modeline): Don't + allow the window size to shrink to a size that is not a + multiple of the height of the default face's font. + + * prim/modeline.el (mouse-drag-modeline): Don't + discard timeout events. + +1997-11-07 SL Baur + + * prim/simple.el (universal-argument-minus): Retain zmacs region. + +1997-11-07 Hrvoje Niksic + + * packages/hyper-apropos.el (hyper-apropos-grok-functions): Ignore + errors when fetching documentation. + + * prim/about.el (about-maintainer-glyph): Handle not having XPM or + XBM gracefully. + + * custom/wid-edit.el (widget-glyph-find): Allow glyphs without + window-system, when TAG is nil. + +1997-11-05 Jens-Ulrik Holger Petersen + + * mule/mule-cmds.el (set-default-coding-systems): Make + add-hook to `comint-exec-hook' be an append, for when the user + changes language environment say. + +1997-11-05 SL Baur + + * prim/winnt.el: Use a cleaner method for getting Text/Binary file + type in the mode-line for MS Windows. + +1997-11-06 Hrvoje Niksic + + * prim/mouse.el: Removed "junk me" functions. + + * prim/mouse.el (default-mouse-motion-handler): Make events over + modeline invalidate `point'. + + * prim/mouse.el (mouse-line-length): Use point-at-eol and + point-at-bol. + (default-mouse-track-normalize-point): Highlight the whole symbol + only if the mouse is on a symbol-constituent. + + * custom/wid-edit.el (widget-specify-field): Make sure the extent + is end-open. + + * prim/keymap.el (next-key-event): Use `next-command-event'. + +1997-11-05 Hrvoje Niksic + + * utils/easymenu.el (easy-menu-add): Check with `equal' whether + the menu already belongs to all-popups. + +1997-11-05 Jan Vroonhof + + * packages/font-lock.el (font-lock-thing-lock-cleanup): + Provisionally add lazy-shot + + * modes/lazy-shot.el (lazy-shot-mode): Unstall lazy-shot only if + needed. + (lazy-shot-fontify-internal): Functionality put in separate function. + (lazy-shot-lock-extent): Use it. + (lazy-shot-fontify-region): Dumb implementation added. + (lazy-shot-unstall-after-fontify): Needed to disable lazy + fontifying after fontify-buffer. + (lazy-shot-unstall): Make sure buffer is left in a fontified state if + needed. Take optional argument. + + + * packages/ps-print.el (ps-print-ensure-fontified): Added + temporary support for lazy-shot. + +1997-11-05 Hrvoje Niksic + + * utils/text-props.el (set-text-properties): Updated docstring. + +1997-11-04 Didier Verna + + * mule/mule-cmds.el (set-default-coding-systems): + The coding-system argument to comint-exec-hook wasn't evaluated + before building the lambda expression. + +1997-11-04 Jens-Ulrik Holger Petersen + + * packages/time.el: Change all occurences of ballon to balloon. + +1997-11-04 Jens-Ulrik Holger Petersen + + * prim/help.el (function-at-point-function): Remove this variable. + (function-at-point): Remove use of `function-at-point-function'. + + * packages/info.el (Info-elisp-ref): Change call to + `find-function-function' to `function-at-point'. + +1997-11-04 Jens-Ulrik Holger Petersen + + * packages/info.el (Info-elisp-ref): Really change call to + `find-function-function' to `function-at-point'. + +1997-11-04 Hrvoje Niksic + + * packages/auto-save.el: Updated commentary; changed default + autosave fallback to "~/.autosave". Minor changes to compile + without warnings. + +1997-11-03 Hrvoje Niksic + + * prim/subr.el (function-interactive): New function. + +1997-11-03 SL Baur + + * prim/dumped-lisp.el: Dump auto-save with XEmacs. + + * prim/loadup.el: Make sure top level lisp directory gets a + trailing slash when added to load-path. + * prim/make-docfile.el: Ditto. + +1997-11-03 MORIOKA Tomohiko + + * prim/simple.el (interprogram-cut-function, + interprogram-paste-function): New variable (imported from Emacs + 20.2). + (kill-new): Use `interprogram-cut-function' if it is not nil. + (current-kill): Use `interprogram-paste-function' if it is not + nil. + +1997-11-03 MORIOKA Tomohiko + + * locale/ja/locale-start.el (startup-splash-frame-body): Modify to + be more natural Japanese. + + * x11/x-menubar.el: Delete "language environment" menu of + "Options" menu. + +1997-11-02 MORIOKA Tomohiko + + * language/korean.el: Rename TUTORIAL.kr -> TUTORIAL.ko to fit + with ISO 639 (two letter language code). + + * prim/dumped-lisp.el: Don't dump language/vietnamese.el because + language/viet-util.el was removed temporary. + + * language/japanese.el: Rename TUTORIAL.jp -> TUTORIAL.ja to fit + with ISO 639 (two letter language code). + +1997-10-31 Pete Ware + + * shell.el (shell-chdrive-regexp): New for DOS/NT + (shell-mode): Added shell-font-lock-keywrods + (shell-mode): Use $PWD for ksh + (shell-directory-tracker): Use dirs and dirtrack-toggle. This may + cause problems at is interferes with "dired" + (shell-snarf-envar): NEW + (shell-copy-environment-variable): NEW + +1997-10-30 Pete Ware + + * comint.el (comint-mode-map): Rearranged menus so they have a + meaningful name. + +1997-10-30 Pete Ware + + * comint.el (comint-find-source-file-hook): + (comint-goto-source-line-hook): + (comint-find-source-code): + (comint-default-find-source-file): + (comint-fixup-source-file-name): + (comint-default-goto-source-line): Removed. compile.el does a + better job of this stuff. + + * comint.el + (comint-file-name-chars): Support for msdos/nt + - Let easymenu deal with whether menubar is available. + - Use ^d for delchar or maybe eof. + - Use "dumb" as the terminal type if on a system using terminfo + (comint-output-filter): Removed replacement of ^M -- use filter + (comint-dynamic-complete-as-filename): Don't set + file-name-handler-alist to nil. This makes remote path + completion work! + +1997-11-02 SL Baur + + * prim/advocacy.el (xemacs-praise-sound-file): Don't default to + using a hardcoded directory. + + * eterm/term.el (term-is-xemacs): Match against XEmacs instead of + Lucid. + + * eos/sun-eos-toolbar.el (eos::toolbar-icon-directory): Use + `locate-data-directory' instead of data-directory. + * eterm/term.el (term-exec-1): Ditto. + * packages/time.el (display-time-icons-dir): Ditto. + * prim/advocacy.el (praise-be-unto-xemacs): Ditto. + * prim/sound.el (default-sound-directory): Ditto. + * prim/toolbar.el (init-toolbar-location): Ditto. + +1997-10-31 Hrvoje Niksic + + * custom/wid-edit.el (widget-color-complete): Use + `read-color-completion-table' directly. + + * prim/subr.el (rplaca): Warn against the return value. + (replace-in-string): Use `wrong-type-argument'. Use standard + error message. + (functionp): Would bug out on certain types of objects; synch with + FSF. + (with-output-to-string): Use new-style backquotes. + (with-temp-buffer): Update docstring references. + + * prim/minibuf.el (reset-buffer): Use `with-current-buffer'. + (read-color-completion-table): Ditto. + (read-color-completion-table): Complete TTY colors on TTY devices. + + * custom/cus-start.el: Customize `scroll-conservatively'. + Customize `help-char' correctly. + +1997-11-02 SL Baur + + * packages/desktop.el (toplevel): Don't require dired or reporter + when byte compiling. + +1997-11-02 Hrvoje Niksic + + * prim/keymap.el (synthesize-keysym): Collect a list of + characters, instead of consing a string each time. + (synthesize-keysym): Better error checking. + + * prim/keymap.el (synthesize-keysym): Don't bug out when reading a + non-character event. + +1997-11-02 Tomasz Cholewo + + * prim/keymap.el (synthesize-keysym): New function bound to C-x @ k. + +1997-11-02 Kyle Jones + + * modes/sendmail.el: Don't (require 'vm-misc). Change + mail-do-fcc-vm-internal to not compile the chunk of code + that uses VM internal macros. This prevents the byte + compiler from compiling such references into function + calls that Fbyte_code will complain about later when it + discovers that the references are macros. + + * modes/sendmail.el: added defvars for + rmail-summary-buffer and rmail-total-messages to get + rid of compiler warnings. +1997-11-01 Hrvoje Niksic + + * prim/subr.el (lambda): Moved from `packages.el'. + + * prim/packages.el: Updated commentary. + (packages-useful-lisp): Added `cl-macs'. + +1997-10-27 Didier Verna + + * prim/help-nomule.el (help-with-tutorial): The 'didactic' blank + lines message is now taken directly from each tutorial, and thus + can appear in different languages. + + * mule/mule-help.el (help-with-tutorial): idem + +1997-10-26 Karl M. Hegbloom + + * utils/shadowfile.el (shadow-clusters): Customized. + (shadow-read-files): replace obsolete `eval-current-buffer' + (shadow-parse-fullpath): `efs-ftp-name' doesn't exist. change to + `efs-ftp-path' + +1997-11-01 SL Baur + + * x11/x-menubar.el: Change Viper menu item to use + `toggle-viper-mode'. + Suggested by Michael Kifer + + * mule/mule-init.el: Remove `help-with-tutorial-for-mule'. + Suggested by Didier Verna + + * Disable Cyrillic CCL until CCL engine gets fixed. + From: Martin Buchholz + +1997-10-30 Colin Rafferty + + * prim/startup.el (command-line-early): Made it recognize + --vanilla and --no-packages, as is already done in emacs.c. + +1997-10-30 Karl M. Hegbloom + + * modes/cperl-mode.el: Add Commentary and Code statements to + comment header for finder. + +1997-10-30 SL Baur + + * vm/vm-vars.el (vm-image-directory): Use locate-data-directory if + it exists. + + * language/european.el: Remove erroneous references to + `Serbo-Croatian'. + * language/cyril-util.el: Ditto. + * leim/quail/cyrillic.el: Ditto. + + * comint.el: reverse previous patch + +1997-10-29 MORIOKA Tomohiko + + * mule/mule-init.el (init-mule): Load locale-start even if lang is + not exactly matched. + + * mule/mule-init.el (auto-language-alist): Modify for new language + environment feature. + (init-mule): Modify for new language environment feature. + +1997-10-29 MORIOKA Tomohiko + + * language/korean.el (setup-korean-environment): Modify for + XEmacs. + + * language/greek.el: Modify setting about language environment. + + * language/european.el: Fix setting for Croatian language + environment. + + * language/vietnamese.el: Fix setting about language environment. + + * language/viet-util.el (setup-vietnamese-environment): Modify for + XEmacs. + + * language/cyril-util.el (setup-cyrillic-iso-environment): Modify + for XEmacs. + (setup-cyrillic-koi8-environment): Modify for XEmacs. + (setup-cyrillic-alternativnyj-environment): Modify for XEmacs. + +1997-10-28 MORIOKA Tomohiko + + * language/hebrew.el (setup-hebrew-environment): Modify for + XEmacs. + + * mule/mule-cmds.el (set-default-coding-systems): New function. + (set-language-info): Fix about menu. + (read-input-method-name, toggle-input-method): Sync with Emacs + 20.2. + + * language/cyril-util.el: Modify header. + + * language/cyril-util.el + (setup-cyrillic-alternativnyj-environment): Modify for XEmacs. + + * language/cyril-util.el: New file; imported from Emacs 20.2. + + * language/japan-util.el (setup-japanese-environment): Use + `set-default-coding-systems'. + + * language/european.el (setup-8-bit-environment): Modify for + XEmacs. + + * language/english.el (setup-english-environment): Use + `set-default-coding-systems'. + + * language/chinese.el: Modify for XEmacs. + + * language/china-util.el (setup-chinese-gb-environment, + setup-chinese-big5-environment): Use `set-default-coding-systems'. + + * mule/mule-files.el (file-coding-system-alist): Fix typo. + +1997-10-28 MORIOKA Tomohiko + + * prim/dumped-lisp.el: Abolish Thai support temporary. + + * language/thai.el, language/thai-util.el: Delete Thai specific + files because composite character features don't work in XEmacs. + + * language/japan-util.el: Modify header. + + * language/chinese.el: Abolish `Chinese-CNS' environment + temporary. + + * language/china-util.el: Abolish `setup-chinese-cns-environment' + temporary. + + * language/china-util.el (setup-chinese-big5-environment): Modify + for XEmacs. + + * language/china-util.el (setup-chinese-gb-environment): Modify + for XEmacs. + + * language/chinese.el: Delete set-coding-category-system for big5. + + * language/japan-util.el (setup-japanese-environment): Modify for + XEmacs. + + * language/japanese.el: Delete set-coding-category-system for + shift-jis. + + * language/english.el (setup-english-environment): Modify for + XEmacs. + +1997-10-28 MORIOKA Tomohiko + + * language/auto-autoloads.el: New file. + + * mule/mule-files.el (file-coding-system-alist): Add setting for + TUTORIAL.hr to iso-8859-2. + + * leim/quail/tibetan.el, leim/quail/ethiopic.el, + leim/quail/japanese.el, leim/quail/lao.el, leim/quail/lrt.el, + leim/quail/devanagari.el: Delete broken features temporary. + + * language/tibetan.el, language/indian.el, language/lao-util.el, + language/lao.el, language/tibet-util.el, language/ethio-util.el, + language/ethiopic.el, language/devanagari.el: Delete broken + features temporary. + + * mule/mule-cmds.el (universal-coding-system-argument): New + function; imported from Emacs 20.2. + +1997-10-27 MORIOKA Tomohiko + + * language/korean.el, language/thai.el, language/vietnamese.el, + language/chinese.el, language/japanese.el, language/arabic.el, + language/ethiopic.el: Abolish setting for old language + environment. + + * language/hebrew.el: Modify for XEmacs. + + * Use language/hebrew.el instead of mule/hebrew-hooks.el; abolish + mule/hebrew-hooks.el. + + * mule/mule-misc.el: Abolish old language environment features. + + * mule/mule-init.el: Delete old language environment specific + features temporary. + + * prim/dumped-lisp.el: Use language/hebrew.el instead of + hebrew-hooks.el. + + * mule/mule-cmds.el (describe-language-environment): Modify for + XEmacs because `coding-system-mnemonic' returns string instead of + character in XEmacs. + + * mule/mule-cmds.el: Sync with Emacs 20.2 about language + environment. + + * mule/mule-cmds.el: Don't use `mule-prefix'. + +1997-10-26 MORIOKA Tomohiko + + * language/ethiopic.el (ccl-encode-ethio-font): Modify to sync + with Emacs 20.2. + +1997-10-26 MORIOKA Tomohiko + + * mule-diag.el (list-coding-systems): Modify for XEmacs. + +1997-10-26 MORIOKA Tomohiko + + * mule/mule-files.el (find-coding-system-magic-cookie): Regard top + line magic. + (load): Use `find-file-coding-system-for-read-from-filename'. + + * language/arabic-util.el: Use iso-2022-7bit. + +1997-10-26 MORIOKA Tomohiko + + * mule-diag.el (describe-designation): Moved from mule-debug.el. + (describe-coding-system): Use `describe-designation'. + + * mule-debug.el: Move function `describe-designation' to + mule-diag.el; Abolish function `describe-coding-system' because of + using it in mule-diag.el. + + * mule-coding.el (keyboard-coding-system): New inline function. + (terminal-coding-system): New inline function. + + * mule-cmds.el: Bind `describe-coding-system' to C-h C instead of + `describe-current-coding-system' to sync with Emacs 20.2. + + * mule-diag.el: Abolish `print-designation' because it does not + work in XEmacs. + + (describe-coding-system): Modify for XEmacs. + (print-coding-system-briefly): Modify for XEmacs. + (describe-current-coding-system): Modify for XEmacs. + + * mule-coding.el: Abolish function `coding-system-charset' + (defined as builtin function). + + * mule-diag.el: New file; imported from Emacs 20.2. + + * mule-misc.el (set-buffer-process-coding-system): New function; + imported from mule.el of Emacs 20.2. + + * mule-cmds.el: Bind `set-buffer-process-coding-system' to C-x C-m + p and abolish C-x C-m P. + + * mule-files.el (load): Use `binary' instead of `no-conversion'. + +1997-10-28 Kyle Jones + + * modes/enriched.el (enriched-face-ans): Use + color-name instead of color-instance-name. + color-instance-name will not handle the specifiers that + are passed as arguments. + +1997-10-28 Tomasz Cholewo + + * prim/find-func.el (find-function-noselect): Fix nil argument + handling and add support for dumped macros. + +1997-10-28 SL Baur + + * pcl-cvs/pcl-cvs-xemacs.el: Add `cvs-mode-update-no-prompt' to menu. + From Stig Bjorlykke + +1997-10-28 Didier Verna + + * packages/man.el (manual-entry): corrected the `when' + form to include 'section' in the buffer name. + +1997-10-28 SL Baur + + * prim/packages (packages-find-pacakges): Fix test on + inhibit-package-init + +1997-10-27 Tomasz Cholewo + + * prim/keymap.el (event-apply-modifier): Fix the return type and + scan the function-key-map. + (next-key-event): New function. + (key-sequence-list-description): Ditto. + +1997-10-27 SL Baur + + * x11/x-menubar.el: Turn off `popup-menubar-menu' keybinding. + + * prim/dumped-lisp.el (preloaded-file-list): Dump canna-leim and + egg-leim with XEmacs. + + * mule/canna-leim.el: Clean up file for dumping with XEmacs. + * egg/egg-leim.el: Ditto. + +1997-10-27 Stephen J. Turnbull + + * mule/canna-leim.el: Register Canna with LEIM when loaded + + * mule/canna.el (canna): Bind `canna-toggle-japanese-mode' to + "\C-o" only if LEIM is not present + + * egg/egg-leim.el: Registers EGG/Wnn with LEIM when loaded + + * egg/egg.el: Bind `toggle-egg-mode' to "\C-\" only if LEIM is + not present when loaded + +1997-10-27 SL Baur + + * prim/about.el: Update entries + +1997-10-26 SL Baur + + * prim/startup.el (startup-message-timeout): Startup message + timeout is too short. + + * mule/canna.el (canna): Move canna-toggle-japanese-mode + keybinding to C-\. + + * emulators/edt-mapper.el (edt-lucid-emacs19-p): Test for XEmacs + instead of Lucid in `emacs-version'. + +1997-10-25 SL Baur + + * mule/mule-cmds.el: describe-language-support, + describe-language-support-internal removed. + +Fri Aug 8 12:58:00 1997 David Byers + + * fill.el (fill-region-as-paragraph): When justifying, check for + end-of-buffer at the end of whitespace point is sitting in, and + delete the trailing whitespace if we are on the last line. + +1997-10-24 Hrvoje Niksic + + * prim/about.el (about-finish-buffer): Kill the buffer, when + button documents so. + +1997-10-24 Jens-Ulrik Holger Petersen + + * pcl-cvs.el (cvs-parse-stderr): Ignore ssh-askpass message. + +1997-10-20 Hrvoje Niksic + + * prim/packages.el (locate-library): Make NOSUFFIX not affect + compression. + +1997-10-24 SL Baur + + * modes/c-comment.el: Create c-comment-edit-map. + (c-comment-edit): Fix docstring, use new keymap. + Suggested by Chris Felaco + + * prim/help-nomule.el (tutorial-supported-languages): Add + Norwegian. + + * prim/simple.el (assoc-ignore-case): Synch with Emacs 20.1. + + * mule/mule-cmds.el (set-language-info): Forgot to set any data + values in language-alist. + (read-multilingual-string): Fix call to `read-string'. + +1997-10-22 Karl M. Hegbloom + + * packages/backup-dir.el (bkup-backup-directory-info): customized, + with :require so it loads automagicly if you've set it. Docstring + updated to reflect that, and reformatted for easier reading. + + * packages/jka-compr.el (jka-compr-compression-info-list): + Docstring clarification: what does the append flag do? + + * prim/minibuf.el (minibuffer-electric-slash): leave efs prefix + and ~\(blah\)? when / is pressed. + +1997-10-24 Jens-Ulrik Holger Petersen + + * efs/dired.el (dired-create-files): Get mark-char thing working + again: replace `integerp' by `characterp'. + (dired-add-entry): Ditto. + (dired-add-entry-do-indentation): Ditto. + +1997-10-24 Hrvoje Niksic + + * x11/x-faces.el (*try-oblique-before-italic-fonts*): Customized. + +1997-10-23 SL Baur + + * prim/startup.el (command-line-do-help): Add Documentation for + -vanilla and -no-packages. + (command-line-early): Implement them. + + * prim/packages.el (inhibit-package-init): New variable. + (packages-find-packages): Use it. + + + * packages/jka-compr.el (jka-compr-compression-info-list): + Add bzip2 extensions. + From Tomasz Cholewo + +1997-10-22 Karl M. Hegbloom + + * comint/comint.el (comint-scroll-show-maximum-output): fixups to + docstring, and to :type to allow numbers. + (comint-postoutput-scroll-to-bottom): Added window arg to + `recenter' call to fix the horrid flash and global recentering, + and uncommented the code allowing numeric values for + `comint-scroll-show-maximum-output'. + +1997-10-23 Hrvoje Niksic + + * packages/info.el (Info-mode): Don't initialize faces. + + * packages/info.el: Use `defface' to initialize faces. + +1997-10-23 Karl M. Hegbloom + + * modes/cperl-mode.el (cperl-here-face): fix the horrible invisible + green default face. + +1997-10-23 Hrvoje Niksic + + * custom/wid-edit.el (widget-choose): Acknowledge aborted choice + with a `Canceled' message, even if C-g wasn't pressed explicitly. + +1997-10-23 Per Abrahamsen + + * custom/cus-edit.el (hook): Use `widget-group-match' instead of + `widget-editable-list-match'. + +1997-10-23 SL Baur + + * modes/c-comment.el (c-comment-edit): Fixed autoload cookie. + Reformatted Lisp comments. + +1997-10-22 SL Baur + + * psgml/psgml-charent.el (sgml-display-char-list-filename): Use + locate-data-directory instead of data-directory. + * psgml.el (sgml-data-directory): Ditto. + +1997-10-20 Jan Vroonhof + + * 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. + +1997-10-21 SL Baur + + * custom/cus-dep.el (Custom-make-dependencies): Ditch the time + stamp. + +1997-10-22 Jens-Ulrik Holger Petersen + + * comint/gdb.el (gdb-with-core): Fixed autoload cookie. + +1997-10-22 Hrvoje Niksic + + * prim/startup.el (command-line-1): Run term-setup-hook regardless + of `input-pending-p'. + + * custom/cus-edit.el (custom-split-regexp-maybe): Use `split-string'. + + * custom/cus-start.el (custom-start-quote): Synch with + `custom-quote'. + + * prim/subr.el (functionp): Synched docstring with Emacs 20.2. + + * custom/cus-edit.el (custom-quote): Use `keywordp'; use + `car-safe'; don't conditionalize on having `characterp'. + +1997-10-21 Hrvoje Niksic + + * custom/wid-edit.el (radio-button): Use "radio0" as inactive + glyph. + (widget-visibility-value-create): Use new semantics of + `widget-glyph-insert'. + + * custom/cus-edit.el (custom-buffer-create-internal): Setup + tag-down-glyphs with list. + (custom-group-value-create): Ditto. + + * custom/wid-edit.el (widget-glyph-click): Check whether the + extent was detached/killed. + (widget-push-button-value-create): Removed crufty XPM contrast + hack. + (widget-default-create): Make the markers point nowhere after + using them. + (widget-default-create): Use `point-min-marker'/`point-max-marker'. + (widget-glyph-find): Disallow list. + (widget-glyph-insert): Allow IMAGE to be a list. + +1997-10-20 Hrvoje Niksic + + * prim/featurep.el (featurep): Handle `not' correctly. + +1997-10-21 SL Baur + + * prim/about.el (about-maintainer-glyph): Pictures have been moved + to photos subdirectory. + +1997-10-21 Hrvoje Niksic + + * x11/x-menubar.el (options-menu-saved-forms): Check whether + `pending-delete' is bound before accessing it. + +1997-10-21 SL Baur + + * x11/x-menubar.el (default-menubar): Conditionalize games menu. + +1997-10-21 Colin Rafferty + + * x11/x-menubar.el (default-menubar): Made it use lazy-shot + instead of lazy-lock in "Syntax Highlighting->Lazy". + (options-menu-saved-forms): Made it save lazy-shot instead of + lazy-lock in the options. + +1997-10-21 SL Baur + + * mule/mule-help.el (help-with-tutorial): New file. + + * prim/dumped-lisp.el (preloaded-file-list): New entries for + help-nomule and mule-help. + + * prim/help.el: Remove `help-with-tutorial'. + + * prim/help-nomule.el: New file. + +1997-10-19 Hrvoje Niksic + + * prim/subr.el: Moved int-char and char-int definitions from + obsolete.el. + +1997-10-18 Hrvoje Niksic + + * custom/wid-edit.el (widget-push-button-value-create): Require + `xpm-button'. + (widget-push-button-value-create): Use :tag-down-glyph and + :tag-inactive-glyph. + (widget-default-create): Use :tag-inactive-glyph. + (widget-button-click): Correctly merge faces. + + * custom/cus-edit.el (custom-variable-action): Don't redraw + magic. + + * custom/wid-edit.el (widget-glyph-insert): Return glyph. + (widget-default-create): Insert :button-prefix and :button-suffix + only if a glyph is not used. + (widget-glyph-click): Respect :mouse-down-action. + (widget-specify-insert): Document for edebug. + (widget-default-create): Use markers to keep track of stuff. + + * custom/cus-edit.el (custom-group-value-create): Ditto. + + * custom/wid-edit.el (widget-default-create): Use :tag-down-glyph. + + * custom/cus-edit.el (custom-group-value-create): Use image. + + * prim/glyphs.el (init-glyphs): Minor fixups. + +1997-10-17 Hrvoje Niksic + + * custom/wid-edit.el (widget-field-value-get): Use `cond'. + (default): Use :button-keymap. + (widget-specify-button): Ditto. + (widget-glyph-insert-glyph): Ditto. + (widget-activation-glyph-mapper): Renamed from + `widget-activation-glyphs-mapper'. + + * custom/cus-edit.el (Custom-mode-menu): Go to `Easy + Customization' node. + (boolean): Don't use nested backquotes. + + * custom/wid-edit.el (widget-field-action): Check whether the new + value is valid before using it. + +1997-10-16 Hrvoje Niksic + + * custom/wid-edit.el (character): Use [\0-\377] instead of . in + :valid-regexp. + (widget-color-notify): Use `valid-color-name-p'. + (widget-activation-widget-mapper): New function. + (widget-specify-inactive): Use it. + (widget-specify-active): Ditto. + (widget-setup): Ditto. + (radio-button): Added :inactive-glyph spec. + (widget-toggle-value-create): Use it. + (widget-color-sample-face-get): Check for color before setting it. + (widget-color-sample-face-get): Store the face object, not its + name. + +1997-10-18 Jens-Ulrik Holger Petersen + + * help.el (function-at-point): Use `function-at-point-function'. + (function-at-point-function): New variable, formerly + `find-function-function'. + (describe-function): Use `function-at-point'. + (where-is): Ditto. + + * find-func.el (find-function-read-function): Use + `function-at-point'. + + * packages/info.el (Info-elisp-ref): Use `function-at-point'. + + * packages/hyper-apropos.el (hyper-apropos-read-function-symbol): + Use `function-at-point'. + + * packages/etags.el (emacs-lisp-default-tag): Use + `function-at-point'. + + * prim/obsolete.el (function-called-at-point): Make it + obsolete. + +1997-10-09 Jens-Ulrik Holger Petersen + + * prim/files.el (switch-to-buffer-other-frame): Remove call to + `select-frame'. + +1997-10-17 SL Baur + + * prim/packages.el (packages-find-packages-1): New argument: + `user-package' non-nil when searching user packages. + - Load any autoloads found in user packages. + +1997-10-17 Karl M. Hegbloom + + * packages/info.el (Info-insert-dir): Also kill the localdir temp + buffers. + +1997-10-17 SL Baur + + * utils/facemenu.el: autoload the `facemenu-keymap' properly. + + * mule/mule-cmds.el (read-language-name): Fix typo. + From Didier Verna + +1997-10-15 Adrian Aichner + + * utils/build-report.el: Leaving point at begin of composed mail now. + Using mime-edit-content-beginning to determine file-begin of + Installation file. + Introduced the according alias for SEMI/TM compatibility. + + * utils/build-report.el: + Corrected backward search for begin of last configuration in + Installation file. + + * utils/build-report.el: + Incorporated `xemacs-build-report-installation-insert-all' feature + suggested by Didier Verna. + Composing mail parts (with-temp-buffer ...) to simplify implementing + future features. + Eliminated use of mail-mode -specific function `mail-text'. + +1997-10-14 Adrian Aichner + + * utils/build-report.el: + Incorporated fix for SEMI/TM compatibility suggested by Jens-Ulrik + Holger Petersen . If SEMI symbols are + not fboundp, alias them to corresponding TM symbols. + +1997-10-13 Adrian Aichner + + * utils/build-report.el: + Changed to (mime-edit-insert-tag "text" "plain" ...) from + "application" "octet-stream" due to complaint from + Kazuyoshi Furutaka in + Message-Id: <19971013102132V.furutaka@Flux.tokai.jaeri.go.jp> + +1997-10-13 Hrvoje Niksic + + * utils/facemenu.el: Autoload `facemenu-keymap' function definition. + (facemenu-color-defined-p): Nuked. + (facemenu-find-face): Ditto. + (facemenu-region-active-p): Ditto. + (facemenu-sized-face): Declare `prefix'. + (facemenu-read-color): Aliased to `read-color'. + (facemenu-face-attributes): Use `mapvector'. + + * utils/facemenu.el: Customized and synched with FSF 20.2. + +1997-10-17 Hrvoje Niksic + + * cl/cl-macs.el (extent-properties): Remove old setf method. + +1997-10-16 Karl M. Hegbloom + + * prim/files.el (revert-without-query): changed from boolean to + list of regexp as documented in NEWS and its docstring. + +1997-10-16 SL Baur + + * utils/floating-toolbar.el: (TopLevel): Don't unconditionally + require the feature `toolbar' it causes breakage only at + bytecompile time. Don't do any initialization if toolbar support + is not available. + (floating-toolbar): Whine if no run-time toolbar support is + available. + + * custom/wid-edit.el (widget-change-glyphs-mapper): cosmetic changes. + From Hrvoje Niksic + + * prim/glyphs.el (init-glyphs): Use different logo for beta XEmacsen. + From Didier Verna + +1997-10-15 Hrvoje Niksic + + * cl/cl-macs.el (extent-property): Updated SETF methods for `get' + and `extent-property'. + + * custom/wid-edit.el (widget-field-value-create): Revert to using + two markers. + (widget-setup): Ditto. + (widget-color-sample-face-get): Get only a unique face per widget. + (widget-color-notify): Change the color of the face instead of + creating a new one. + + * packages/add-log.el (add-change-log-entry): Push window + configuration. + (change-log-exit): New function. + (change-log-cancel): Ditto. + (change-log-mode-map): Bind them. + + * custom/wid-edit.el (widget-specify-inactive): Make glyphs look + inactive. + (widget-change-glyphs-mapper): New function. + (widget-glyph-click): Disallow operations on inactive glyphs. + +1997-10-14 Hrvoje Niksic + + * custom/wid-edit.el: (widget-glyph-insert-glyph): Use + `widget-mouse-help' if necessary. + (widget-documentation-string-value-create): Don't coerce help-echo + WIDGET to widget. + (widget-button-keymap): New keymap. + (widget-specify-button): Use it. + (widget-glyph-insert-glyph): Ditto. + (widget-glyph-click): Dispatch events during the loop. + (widget-glyph-click): Use `unwind-protect' to ensure that the + glyph stays in up position. + (widget-keymap): Don't bind buttons and RET. + (widget-button-keymap): Bind mouse buttons and RET. + (widget-field-activate): Use `widget-field-find'. + + * custom/wid-edit.el (widget-button-click): Visually "release" the + button *before* doing the buttonup action. + (widget-button-click): Reworked. + (widget-echo-help): Accept extent. + + * custom/cus-edit.el (custom-face-value-create): Use `make-face'. + + * custom/wid-edit.el (widget-restore-tabable): New function. + (widget-deactivate-widget-extent): New function. + (widget-reactivate-widget-extent): New function. + (widget-specify-inactive): Use `widget-deactivate-widget-extent'. + (widget-setup): Ditto. + (widget-specify-active): Use `widget-reactivate-widget-extent'. + (widget-move): Don't stop within inactive range. + +1997-10-14 MORIOKA Tomohiko + + * language/japan-util.el: Copied from Emacs 20.2. + + * mule/mule-cmds.el (char-code-property-table): New variable. + (get-char-code-property): New function. + (put-char-code-property): New function. + +1997-10-10 MORIOKA Tomohiko + + * language/vietnamese.el: Use language/viet-util.el instead of + mule/mule-vietnamese.el; abolish mule/mule-vietnamese.el. + +1997-10-09 MORIOKA Tomohiko + + * mule/mule-coding.el: Rename `automatic-conversion' -> + `undecided' to sync with Emacs 20.2; define coding-system + `automatic-conversion' as an alias for `undecided'. + + mule/mule-files.el (buffer-file-coding-system-for-read, + convert-mbox-coding-system, insert-file-contents), + language/japanese.el, language/chinese.el, language/korean.el: + Rename `automatic-conversion' -> `undecided' to sync with Emacs + 20.2. + +1997-10-08 MORIOKA Tomohiko + + * language/viet-chars.el: New file; moved from + mule/vietnamese-hooks-1.el. + + * language/vietnamese.el: Merge mule/vietnamese-hooks-2.el; + abolish mule/vietnamese-hooks-2.el. + + * prim/dumped-lisp.el: Use language/viet-chars and + language/vietnamese instead of mule/vietnamese-hooks-{1|2}. + +1997-10-07 MORIOKA Tomohiko + + * mule/mule-misc.el (split-char): New function. + +1997-10-14 SL Baur + + * default.el: New file. + * site-start.el: New file. XEmacs starts faster if dummy versions + of these files are found early in the `load-path'. + Suggested by Kyle Jones + +1997-10-14 Hrvoje Niksic + + * custom/wid-edit.el (widget-field-find): Use `map-extents'. + (widget-transpose-chars): Check for empty fields, and point at + beginning of field. + (widget-documentation-string-value-create): `insert-char' handles + 0 gracefully, so no need to protect. + (widget-specify-inactive): Detach the button extents. + (widget-specify-active): Reattach the button extents. + (widget-make-field-untabable): New function. + (widget-specify-inactive): Make the fields non-tabable; use + `widget-make-field-untabable'. + (widget-type): Revert to defsubst. + +1997-10-13 Adrian Aichner + + * utils/xemacs-build-report.el: + Switched from (mail ...) to (compose-mail ...) upon suggestion by + Hrvoje Niksic. + Extended xemacs-build-report-keep-regexp. + Changed xemacs-build-report-make-output-file value to beta.err + Shortend and bracketed xemacs-build-report-subject. + Improved (I hope) tm-edit to SEMI aliasing logic. + +1997-10-09 Adrian Aichner + + * utils/xemacs-build-report.el: + Restored RCS keywords and updated comment for `xemacs-build-report-version'. + + * utils/xemacs-build-report.el: + Separated the Spaghetti code into separate functions to do the following: + xemacs-build-report-insert-header + xemacs-build-report-insert-make-output + xemacs-build-report-insert-installation-file + +1997-10-13 Hrvoje Niksic + + * custom/cus-load.el: Disable gc while loading `custom-load' + files. + (custom-put): Added docstring; ignore PROPERTY. + + * custom/wid-edit.el (widget-previous-button-or-field): If the + point is within a button or field, return the beginning position + of the field. + + * prim/frame.el (frame-list): Use `nconc' instead of `append'. + (set-frame-configuration): Use `mapc'. + (delete-other-frames): Ditto. + + * prim/faces.el: Use the CL macro at top-level. + + * prim/faces.el (face-spec-set-match-display): Use `case'. + (set-face-stipple): Use backquotes. + + * custom/wid-edit.el (widget-glyph-find): Use `laxputf'. + (widget-push-button-value-create): Ditto. + + * custom/cus-face.el (custom-face-attributes): Support + inverse-video for TTY-s. + + * prim/cmdloop.el (keyboard-escape-quit): Abort recursive edit, as + documented. + +1997-10-12 Hrvoje Niksic + + * prim/simple.el (zmacs-deactivate-region): Use `mapc' instead of + `mapcar'. + (zmacs-make-extent-for-region): Ditto. + + * custom/cus-dep.el: Updated comments. + + * custom/cus-edit.el (custom-variable-prompt): Prompt with + `variable'. + +1997-10-12 Karl Hegbloom + + * custom/cus-edit.el (custom-guess-name-alist): Allow `-hooks' + instead of `hook'. + +1997-10-12 Hrvoje Niksic + + * prim/profile.el (profile-results): Use %-*s format. + (profile-align): Nuked. + + * packages/gnuserv.el (gnuserv-frame-plist): New variable. + (gnuserv-special-frame-function): Use it. + (gnuserv-edit-files): Ditto. + +1997-10-12 SL Baur + + * prim/package-admin.el (package-admin-add-binary-package): + Correctly deal with package-paths with a single directory. + +1997-10-11 SL Baur + + * prim/startup.el (set-default-load-path): Look for `packages' + directory too. + (set-default-load-path): Initialize Info-default-directory-list + from the environment variable INFOPATH. + (set-default-load-path): Initialize Info-default-diretory-list + from the configure variable `infopath'. + +1997-10-10 Karl M. Hegbloom + + * prim/startup.el: (set-default-load-path): loop over the `Info- + default-directory-list' and collect those that are `file- + directory-p'. + + * '': various doc string corrections. + + * '': changed `auto-saves-file-prefix' to "~/.xemacs/saves-" + + * '' Added toplevel block (when (fboundp 'load-gc) ...to init the + Info-def..list from the environment variable INFOPATH at dump time. + + * prim/packages.el (packages-find-packages-1): append the list of + packages info directories to `Info-default-directory-list' rather + than prepending them. Don't add them if they're already in the + list. + + * packages/info.el (Info-directory-list): various fixes to the + directory list handling. + * (Info-localdir-heading-regexp) added. + + * '' removed the unrequired defcustom of `Info-default-directory- + list' + +1997-10-11 SL Baur + + * prim/about.el: New faces, new entries. + + * prim/profile.el (profile-results): Rename. + (pretty-print-profiling-info): Ditto. + From Kyle Jones + +1997-10-10 Per Abrahamsen + + * custom/wid-edit.el (variable-link): New widget. + (widget-variable-link-action): New function. + (function-link): New widget. + (widget-function-link-action): New function. + +1997-10-10 Karl M. Hegbloom + + * prim/modeline.el (modeline-minor-mode-menu): menus are toggles + not strings now. + +1997-10-10 SL Baur + + * psgml/psgml-html.el (html-quote-region): Grow bounds when performing + substitutions. + From Adrian Aichner + +1997-10-10 SL Baur + + * utils/highlight-headers.el (highlight-headers-citation-header-regexp): + Correct doc string. + From Kazuyoshi Furutaka + +1997-10-10 Martin Buchholz + + * packages/bookmark.el: + * packages/iswitchb.el: + * utils/speedbar.el: + * utils/xemacs-build-report.el: + - change Xemacs --> XEmacs + +1997-10-09 Colin Rafferty + + * modes/lazy-shot.el (lazy-shot-shot-function): Undid a breakage. + +1997-10-09 Jens-Ulrik Holger Petersen + + * prim/help.el (function-called-at-point): Added docstring. + (function-at-point): Ditto. + (describe-function-arglist): Commented out -- seems unused. + (find-function): ALL find-function stuff moved to "find-func.el" + + * prim/find-func.el: new file created from functions previously in + "help.el". + +1997-10-09 SL Baur + + * pcl-cvs/pcl-cvs.el (cvs-changelog-ours-p): Grok new ChangeLog + format. + + * prim/startup.el (user-init-directory): New name for + `emacs-user-extension-dir'. + (load-user-init-file): Use it. + +Mon Oct 6 19:12:51 1997 Barry A. Warsaw + + * cc-mode/Release 5.19 + +Mon Oct 6 19:09:17 1997 Barry A. Warsaw + + * cc-mode/cc-engine.el (c-guess-basic-syntax): + CASE 5F: extern-lang-close relpos should be + element 0 of inclass-p, not element 1. + + * cc-mode/cc-cmds.el (c-progress-init, c-progress-fini): + Be silent if c-progress-interval + is nil. + + * cc-mode/cc-vars.el (c-progress-interval): Document new semantics + +Fri Oct 3 23:10:04 1997 Barry A. Warsaw + + * cc-mode/cc-engine.el (c-beginning-of-statement-1): + Watch out for keywords which have a + preceding underscore. + +Fri Sep 26 23:30:58 1997 Barry A. Warsaw + + * cc-mode/cc-menus.el: Patches to Imenu support given by + "Masatake (jet) YAMATO" . + (Jan Dubois) jan.dubois@ibm.net + + * cc-mode/cc-cmds.el (c-comment-line-break-function): + Fix for when comment starts at + comment-column and there is non-whitespace preceding this on the + current line. + + * cc-mode/cc-mode.el (c-submit-bug-report): Remove + c-recognize-knr-p. Add c-comment-continuation-stars. + +Mon Sep 22 15:47:02 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el (c-initialize-builtin-style): + Only use copy-tree if it is + funcall-able. This is the right patch, and was given by Erik Naggum + + +1997-10-08 SL Baur + + * x11/x-menubar.el (file-menu-filter): Reverse sense of bounds + test. + From: Didier Verna + + * prim/format.el (format-annotate-function): Reverse sync to Emacs + 19. + +1997-10-08 Hrvoje Niksic + + * prim/profile.el (profile-align): New function. + + * prim/help.el (describe-function): Use `buffer-string' with a + BUFFER argument, instead of `save-excursion'+`buffer-string'. + (describe-variable): Ditto. + (describe-variable): Use `when'. + + * modes/lisp-mode.el: Indent `display-message' and + `display-warning' better. + + * prim/help.el: Customized find-function stuff. + (help-with-tutorial): Use point-at-{bol,eol}. + (with-displaying-help-buffer): Use `with-current-buffer'. + + * prim/keymap.el (event-apply-modifier): Use `vconcat'. + (define-prefix-command): Use the NAME argument to + `make-sparse-keymap'. + (suppress-keymap): Use `incf'. + + * prim/help.el (key-or-menu-binding): Document it. + + * prim/keymap.el (insert-key-binding): Use `key-or-menu-binding' + from help.el. + + * prim/help.el (built-in-variable-doc): Use `case'. + (describe-function-1): Assign to `file-name' instead of `home'. + + * prim/profile.el (profiling-results): Handle strings correctly. + + * prim/profile.el (profile): Expand FORMS only once. + +1997-10-08 Colin Rafferty + + * prim/lisp-file-db.el (lookup-lisp-file-db): Made it stop on + failure. + +1997-10-08 SL Baur + + * prim/lisp-file-db.el: New file. + From Raymond Toy + +1997-10-08 Colin Rafferty + + * modes/lazy-shot.el: Customified. Made it handle long lines + better. + +1997-10-08 SL Baur + + * prim/startup.el (load-user-init-file): Remove reference to + .xemacs as a file. + +1997-10-07 SL Baur + + * utils/thing.el (thing-filename): Deal with point at end of + buffer. + +1997-10-07 Karl M. Hegbloom + + * psgml/psgml.el (sgml-mode-map): modify defin-key statements to + use the new and improved key designator syntax. Rebound + 'sgml-split-element to a similar key as the global 'split-line + binding. + +1997-10-07 Jens-Ulrik Holger Petersen + + * utils/thing.el (thing-symbol): Return nil if `end' is nil. + +1997-10-07 Karl M. Hegbloom + + * modes/cperl-mode.el: Fixed the help toggle menuitem, and added + an autoload cookie. + * modes/perl-mode.el: ditch the autoload in favor of cperl-mode. + +1997-10-07 Jens-Ulrik Holger Petersen + + * packages/etags.el (add-to-tag-completion-table): Better support + for Scheme code. Parse scheme definitions and identifiers + with colons correctly. + +1997-10-07 SL Baur + + * mule/mule-cmds.el (read-input-method-name): Use a default if + available. + From Didier Verna + + * prim/about.el (about-url-alist): Update jwz's home page. + +1997-10-07 Hrvoje Niksic + + * x11/x-menubar.el (default-menubar): Handle pending-delete + correctly. + +1997-10-06 SL Baur + + * utils/font.el: Don't need devices.el on XEmacs. + +1997-10-05 SL Baur + + * utils/mail-utils.el (rmail-dont-reply-to-names): Snarf from + rmail.el. + +1997-10-04 SL Baur + + * efs/dired.el (dired-mail-reader): Default to VM instead of old, + broken rmail. + +1997-09-29 Karl M. Hegbloom + + * prim/files.el (auto-mode-alist): make `.cl' a lisp-mode + extension for Franz Allegro CL. + +1997-10-05 Hrvoje Niksic + + * prim/simple.el: Minor docstring and comment changes. Customized + some more. + +1997-10-04 Hrvoje Niksic + + * utils/xemacs-build-report.el (xemacs-build-report): Placed to + maintenance group. + (xemacs-create-build-report): Added an autoload cookie. + + * prim/profile.el (profiling-results): Renamed from + `pretty-print-profiling-info'. + +1997-10-03 Karl M. Hegbloom > + + * custom/cus-edit.el (custom-save-all): Bind `auto-mode-alist' to + nil around the init file handling to prevent unnecessary automagic + processing. + +1997-10-03 Hrvoje Niksic + + * prim/faces.el (face-spec-set): Invoke `init-face-from-resources'. + + * custom/cus-face.el (custom-set-faces): Revert to using + `make-empty-face'. + (custom-declare-face): Ditto. + +1997-10-04 SL Baur + + * prim/modeline.el (modeline-modified-map): Call wrapper function + over `vc-toggle-read-only'. + (modeline-toggle-read-only): New function. + + * prim/files.el (basic-save-buffer): Put guard on call to + `vc-after-save' since someone may wish not to install the vc + package. + + * prim/fill.el (sentence-end-double-space): Fix docstring. + + * cl/cl-seq.el (remq): Reformat and add doc-string. + Suggested by: Karl M. Hegbloom + +1997-10-03 Karl M. Hegbloom + + * packages/func-menu.el: change the countups from message's to + display-message 'progress's so they don't dump in the lossage + buffer. + +1997-10-03 Karl M. Hegbloom + + * psgml/psgml.el (sgml-mode-map): Bind (meta backspace) to + 'backward-kill-word so it works as expected. "\e\C-h" will still + do 'sgml-mark-current-element. + +1997-08-13 Yves BLUSSEAU + + * efs/efs.el (efs-set-file-modes): Fix a bug that cause an error + when using the efs-set-file-modes function on a remote station with + a FTP daemon that don't support the QUOTE function. + +1997-10-02 Colin Rafferty + + * prim/frame.el (default-drag-and-drop-functions): Fixed a typo + that was calling `data' rather than looking at it. + +1997-10-04 SL Baur + + * cl/cl-seq.el (remove): Add docstring. + Suggested by Karl M Hegbloom + +1997-10-02 Colin Rafferty + + * prim/simple.el (set-fill-column): Used format to create the + string for `display-message'. + +1997-10-03 Hrvoje Niksic + + * custom/cus-face.el (custom-set-faces): Make the face, if + necessary. + +1997-10-02 Hrvoje Niksic + + * custom/cus-face.el (custom-declare-face): Use `make-face' + instead of `make-empty-face'. + (custom-declare-face): Don't invoke init-face-from-resources + explicitly. + + * prim/profile.el (pretty-print-profiling-info): When interactive, + use a separate buffer instead of current-buffer. + (pretty-print-profiling-info): Prettified output. + +1997-10-01 SL Baur + + * custom/cus-dep.el (cus-face): Remove unneeded dependency on + cus-edit. + +1997-09-30 SL Baur + + * utils/finder.el (finder-known-keywords): Fix typo. + +1997-09-30 SL Baur + + * prim/dumped-lisp.el (preloaded-file-list): Load + cl/auto-autoloads early. + +1997-10-01 Hrvoje Niksic + + * custom/cus-edit.el (custom-save-delete): Bind `find-file-hooks' + to nil. + + * custom/wid-edit.el (widget-next-button-or-field): Use the + `start-open' flag to `map-extents'. + (widget-previous-button-or-field): Ditto. + + * custom/cus-edit.el (custom-face-value-create): Use + `face-custom-attributes'. + + * packages/font-lock.el: Defcustomed some variables. + +1997-09-30 Hrvoje Niksic + + * custom/cus-face.el: Big changes. Most of the functionality + moved to faces.el. Internal functions renamed not to start with + `custom-'. + + * custom/cus-face.el (face-spec-set): Use `reset-face'. + + * prim/faces.el (reset-face): Accept LOCALE, TAG-SET and EXACT-P. + + * custom/cus-face.el (face-spec-set): Use `remove-specifier'. + (get-frame-background-mode): Cache background modes of frames. + + * prim/minibuf.el (input-error): Add a `display-error' property. + + * custom/cus-face.el (initialize-face-resources): Check for + `make-face-x-resource-internal' before using it. + (custom-get-frame-properties): Use `set-frame-property'. + +1997-09-29 Hrvoje Niksic + + * custom/wid-edit.el (widget-specify-button): Set the `tabable' + property. + (widget-specify-field): Ditto. + (widget-next-button-or-field): Use it. + (widget-previous-button-or-field): Ditto. + +1997-09-29 Martin Buchholz + + * sunpro/sunpro-init.el: Fix initialization failure if + compile/debug toolbar buttons are LAST on the toolbar. + +1997-09-29 Jens-Ulrik Holger Petersen + + * prim/help.el (find-function-noselect): Now finds libraries + explicitly loaded from outside `load-path' as it should. + +1997-09-29 SL Baur + + * prim/help.el(describe-function-1): Fix for compiled macros. + From Hrvoje Niksic + +Mon Sep 29 01:30:45 1997 Kyle Jones + + * prim/startup.el: Added defvars for lock-directory + and superlock-file to quiet the byte-compiler. + + (normal-top-level): Removed call to init-glyphs; it now + runs at dump time from lisp/prim/glyphs.el. + + (splash-frame-present): Call splash-hack-version-string + once after all the strings have been inserted, instead + of once per string insertion. + + * prim/glyphs.el (init-glyphs): Replaced references + to data-directory with "../etc/" which is the data + directory at dump time. This is likely a lose for + those who CANNOT_DUMP. I don't know what the right + answer is in that case. + + Run init-glyphs at dump time. + + * prim/faces.el (init-other-random-faces): Don't set + colors for the text cursor if we're initializating a + tty device, since it does nothing on a tty. + + Removed modeline-buffer-id, modeline-mousable and + modeline-mousable-minor-mode-code face initialization; this + code is now run at dump time in lisp/prim/modeline.el. + + * prim/faces.el: Set reverse-p property on tty devices + for the primary-selection face. Set underline-p property + on tty devices for the secondary-selection face. Both of + these actions are to prevent init-other-random-faces from + considering these faces the same as the default face on + ttys and applying useless color specs to them. + + * prim/modeline.el: Initialize modeline-buffer-id, + modeline-mousable and modeline-mousable-minor-mode + faces in this file at dump time. + + Added (defvar place) to quiet the byte-compiler. + +Mon Sep 29 02:11:35 1997 Kyle Jones + + * packages/vc-hooks.el: Move menu installation off + before-init-hook and do it at dump time. + + * ediff/ediff-hook.el: Move menu installation off + before-init-hook and do it at dump time. + +1997-09-29 Jens-Ulrik Holger Petersen + + * prim/help.el (describe-function-1): If the function is not yet + loaded, print the autoload file-name. If function is loaded, + print the library name in `load-history' or from + `compiled-function-annotation'. + +1997-09-28 Karl M. Hegbloom + + * prim/help.el (find-function-noselect): remove reference to + `path' from the (let* ((path find... since &optional path is no + longer an argument to this function. Cures "Signaling: + (void-variable path)" error when using {M-x find-function}. + +1997-09-27 Karl M. Hegbloom + + * utils/regexp-opt.el: Add support for the shy grouping "\\(?:" + that came along with the new regexp syntax. + +1997-09-29 Hrvoje Niksic + + * x11/x-toolbar.el: Minor fixes. + +1997-09-28 Hrvoje Niksic + + * custom/wid-edit.el (color): Buttonify the tag. + (widget-color-action): Use `read-color' unconditionally. + + * utils/edmacro.el: Use append/vconcat instead of mapcar/mapvector + with `identity'. + (format-kbd-macro): Use `indirect-function' instead of + `symbol-function'. + (read-kbd-macro): Fix docstring. + (edmacro-finish-edit): Use `match-string'. + (edmacro-parse-keys): Ditto. + (edmacro-parse-word): Use `dotimes' instead of `loop'. + (edmacro-format-keys): Ditto. + + * custom/cus-face.el (custom-face-attributes): Use + `set-face-background-pixmap', instead of `set-face-stipple'. + + * custom/cus-edit.el (custom-group-menu-create): Check whether + `custom-menu-create' returned a list. + +1997-09-28 SL Baur + + * utils/finder.el (finder-known-keywords): Ignore mule entry when + built without Mule. + +1997-09-27 MORIOKA Tomohiko + + * quail.el (quail-execute-non-quail-command): `keylist' is not + list of characters. + (quail-update-translation): Don't use `quail-delete-region' + because overlay emulation of XEmacs can not regard 0 length + overlay. + (quail-show-kbd-layout): Must convert character(code) to event. + +1997-09-26 MORIOKA Tomohiko + + * quail.el: sync with Emacs 20.2. + +1997-09-27 MORIOKA Tomohiko + + * mule-init.el (init-mule): Load leim-list.el (to sync with Emacs + 20.2). + + * mule-cmds.el: Change key binding for `select-input-method' to + sync with Emacs 20.2. + + (get-language-info, set-language-info, set-language-info-alist, + read-language-name): Modify to sync with Emacs 20.2. + + (leim-list-file-name): New constant (imported from Emacs 20.2). + (leim-list-header, leim-list-entry-regexp, + update-leim-list-functions): New variable (imported from Emacs + 20.2). + (update-leim-list-file): New function (imported from Emacs 20.2). + + (current-input-method, current-input-method-title): Modify + DOC-string to sync with Emacs 20.2. + (default-input-method): Use `defcustom' (to sync with Emacs 20.2). + (input-method-history): New variable (imported from Emacs 20.2). + + (inactivate-current-input-method-function): Modify DOC-string to + sync with Emacs 20.2. + + (input-method-alist): New variable (imported from Emacs 20.2). + (register-input-method, read-input-method-name, + activate-input-method, inactivate-input-method): New function + (imported from Emacs 20.2). + (select-input-method, toggle-input-method, describe-input-method, + describe-current-input-method, read-multilingual-string): Modify + to sync with Emacs 20.2. + (input-method-verbose-flag): New variable; abolish + `input-method-tersely-flag'; to sync with Emacs 20.2. + (input-method-highlight-flag): New variable (imported from Emacs + 20.2). + + (input-method-activate-hook, input-method-inactivate-hook): Modify + DOC-string to sync with Emacs 20.2. + (input-method-exit-on-invalid-key): New variable (imported from + Emacs 20.2). + + * mule-coding.el (check-coding-system): New alias. + (modify-coding-system-alist): New function (imported from Emacs + 20.2). + + Rename coding-system `iso-2022-7' -> `iso-2022-7bit' to sync with + Emacs 20.2; define alias `iso-2022-7' for compatibility. + + * mule-process.el (network-coding-system-alist): New variable. + (open-network-stream): Refer it. + +1997-09-27 MORIOKA Tomohiko + + * viet-util.el: New file; Imported from Emacs 20.2. + + * tibet-util.el: New file; Imported from Emacs 20.2. + + * hebrew.el, lao.el, lao-util.el, vietnamese.el, tibetan.el: + Imported from Emacs 20.2. + + * greek.el, european.el, ethiopic.el, english.el, cyrillic.el, + chinese.el, korean.el, japanese.el, thai.el, misc-lang.el: Modify + to sync with Emacs 20.2. + +1997-09-24 MORIOKA Tomohiko + + * mule-process.el (start-process): Refer + `process-coding-system-alist'. + + * mule-process.el (call-process-region): Refer + `process-coding-system-alist'. + + * mule-process.el (process-coding-system-alist): New variable. + (call-process): Refer it. + + * mule-init.el: Rename `pathname-coding-system' to + `file-name-coding-system' to sync with Emacs 20.2. + + * mule-coding.el: Rename `pathname-coding-system' to + `file-name-coding-system' to sync with Emacs 20.2; define + `pathname-coding-system' as an obsolete variable. + +1997-09-03 MORIOKA Tomohiko + + * mule/mule-files.el: Implement `file-coding-system-alist' of + Emacs 20.0.97 to sync; abolish variable + `buffer-file-coding-system-alist'. + + (find-file-coding-system-for-read-from-filename): Renamed from + `find-buffer-file-coding-system-from-filename'; modify for new + `file-coding-system-alist'. + + (find-file-coding-system-for-write-from-filename): New function. + + (insert-file-contents): Modify for new `file-coding-system-alist'. + + (write-region): Use + `find-file-coding-system-for-write-from-filename'. + +1997-09-27 SL Baur + + * prim/obsolete.el (define-widget-keywords): Make it obsolete. + + * custom/widget.el (define-widget-keywords): Restore superfluous + function `define-widget-keywords'. + + * modes/sh-script.el (sh-script): Restore correct feature. + +1997-09-27 Tomasz Cholewo + + * prim/isearch-mode.el (isearch-help-or-delete-char): New function. + +1997-09-27 Hrvoje Niksic + + * custom/cus-dep.el (Custom-make-dependencies): Minor fixes. + +1997-09-27 SL Baur + + * packages/completion.el: Remove keybinding of M-return for + hyperbole. + (completion-kill-region): The version of this function in InfoDock + 4.0pre was very broken for XEmacs due to active region handling + and because it didn't set the `this-command' variable properly + when doing a kill. + From: Bob Weiner + +1997-09-26 SL Baur + + * utils/autoload.el: Removed code dealing with customization. + (update-file-autoloads): Fix typo in DOC string, remove custom code. + (update-autoloads-from-directory): Remove custom code. + (batch-update-autoloads): Fix DOC string, remove custom code. + (batch-update-directory): Fix DOC string, remove custom code. + +1997-09-26 Jens-Ulrik Holger Petersen + + * prim/help.el (describe-function-at-point): new function. + (describe-variable-at-point): ditto. + (help-next-symbol): ditto. + (help-prev-symbol): ditto. + (describe-function): Mention `find-function-function' in + docstring. Use `function-history' in completing-read. + (describe-function-1): Only print one filename, even if we know + two! Use `variable-history' in completing-read. + (where-is): Mention `find-function-function' in docstring. + (find-function-function): improve docstring. + (find-function-noselect): Remove optional arg. Search also for + cl's defun*. Return a pair instead of a list. + (find-function-read-function): use `function-history'. + (find-function-do-it): new function. + (find-function): Remove optional arg. Use `find-function-do-it'. + (find-function-other-window): ditto. + (find-function-other-frame): ditto. + (find-function-at-point): new function. + +1997-09-26 Hrvoje Niksic + + * custom/cus-edit.el: Issue a message about loading customization + dependencies. + + * custom/wid-edit.el (widget-map-buttons): Fixed typo. + +1997-09-25 SL Baur + + * prim/files.el (after-find-file): Revert synch to Emacs 20 and + restore old directory creation behavior. + +1997-09-25 Hrvoje Niksic + + * custom/wid-edit.el (widget-button-or-field-extent): New + function. + (widget-next-button-or-field): Use it. + (widget-previous-button-or-field): Ditto. + (widget-move): Don't signal an error when there is only one widget + in the buffer. + (widget-push-button-value-create): Cache glyphs themselves, + instead of instantiators. + (widget-documentation-string-value-create): Better help echo + (widget-mouse-help): Use `functionp'. + (widget-echo-help): Ditto. + +1997-09-25 SL Baur + + * prim/glyphs.el (init-glyphs): Fix jpeg signature. + +1997-09-24 Jens-Ulrik Holger Petersen + + * modes/lazy-shot.el (lazy-shot-shot-function): make the message + be displayed as progress. + +1997-09-25 Hrvoje Niksic + + * comint/telnet.el: Minor custom changes. + + * custom/wid-edit.el (widget-field-action): Edit the value in the + minibuffer. + + * custom/cus-edit.el (custom-group-value-create): Renamed `Go to + Group' tag to `Open'. + + * custom/wid-edit.el (widget-shadow-subrs): New variable. + (widget-url-link-help-echo): New function. + (url-link): Use it. + (widget-emacs-library-link-help-echo): New function. + (emacs-library-link): Use it. + +1997-09-24 Hrvoje Niksic + + * custom/wid-edit.el (widget-glyph-insert-glyph): Encode the + widget information to extent, not to the glyph. + (widget-glyph-click): Extract the widget from the extent, not the + glyph. + (widget-glyph-find): Set up a glyph cache. + + * prim/about.el: Use :button-prefix and :button-suffix instead of + the variables. + + * custom/wid-edit.el (widget-field-keymap): Bind Sh-TAB to + `widget-backward'. + (widget-specify-field): Use extents, not overlays. + (widget-specify-button): Ditto. + (widget-specify-sample): Ditto. + (widget-specify-inactive): Ditto. + (widget-button-click): Ditto. + (widget-field-value-create): Ditto. + (widget-field-value-delete): Ditto. + (widget-color-notify): Ditto. + (widget-setup): Ditto. + (widget-map-buttons): Use `map-extents'. + (widget-keymap): Made `global-map' its parent. + (widget-next-button-or-field): New function. + (widget-previous-button-or-field): Ditto. + (widget-move): Use them. + + * custom/custom.el (custom-group-hash-table): Use + `make-hashtable', with initial size 300. + (custom-add-to-group): Update hash-table unconditionally. + +1997-09-24 SL Baur + + * prim/packages.el (packages-useful-lisp): Arrange to bytecompile + shadow.elc early. + +1997-09-22 Karl M. Hegbloom + + * x11/x-toolbar.el (Info-frame-plist): Added. + (toolbar-info) Use new plist variable to make-frame. + +1997-09-24 Hrvoje Niksic + + * custom/wid-edit.el (widget-button1-click): Would bug out on + events with no bindings. + + * custom/cus-edit.el (custom-group-value-create): Update members + after loading the widget. + (custom-group-link-help-echo): New function. + (custom-group-link): Use it. + + * prim/cus-load.el (custom-put): Update + `custom-parent-hash-table'. + + * custom/cus-edit.el (custom-add-parent-links): Use + `custom-group-hash-table' to map the groups. + + * custom/custom.el (custom-parent-hash-table): New variable. + (custom-add-to-group): Use it. + + * prim/cus-load.el: Don't issue message for every loaded file. + + * custom/cus-edit.el (custom-group-prompt): New function. + (customize): Use it. + (customize-other-window): Ditto. + + * custom/wid-edit.el (widget-field-keymap): Bind TAB to + `widget-forward'. + +1997-09-23 Hrvoje Niksic + + * custom/cus-edit.el: Use `display-message' to indicate progress + messages. + (customize-set-variable): Use the third argument to `get'. + (customize-save-variable): Ditto. + (custom-variable-value-create): Ditto. + (custom-variable-state-set): Ditto. + (custom-variable-set): Ditto. + (custom-variable-save): Ditto. + (custom-variable-reset-saved): Ditto. + (custom-variable-reset-standard): Ditto. + + * custom/cus-edit.el: Removed C-coded routines. + + * custom/cus-edit.el (custom-buffer-create-internal): Print a + limited number of messages. + (custom-group-value-create): Ditto. + + * custom/wid-edit.el (widget-editable-list-value-get): Revert to + `append'. + +1997-09-22 Colin Rafferty + + * modes/lazy-shot.el (lazy-shot-shot-function): Made it do its + work in the correct buffer. Also, changed obsolete + function call to non-obsolete version. + +1997-09-22 Colin Rafferty + + * utils/shadow.el (find-emacs-lisp-shadows): Removed extra slash + between directory and filename. + +1997-09-23 SL Baur + + * ilisp/Makefile (SHELL): Remove dependency on /bin/csh. + +1997-09-23 Hrvoje Niksic + + * custom/wid-edit.el (widget-move): Use `incf'. + (widget-after-change): Ditto. + (widget-field-value-get): Ditto. + (widget-info-link-help-echo): New function. + (info-link): Use it. + + * custom/cus-edit.el (custom-last): Removed. + (custom-buffer-create-internal): Use `incf'. + (custom-group-value-create): Ditto. + + * packages/auto-save.el: Minor custom fixes. + + * prim/cus-dep.el (Custom-make-dependencies): Generate correct + output wrt `custom-put'. + + * custom/wid-edit.el (widget-tabable-at): Use `widget-at'. + + * custom/cus-edit.el (custom-group-value-create): Use + `custom-group-visibility' instead of `group-visibility'. + + * prim/help.el (help-map): Bound `C-h C' to `customize'. + + * custom/wid-edit.el (widget-princ-to-string): Don't use `let'. + (widget-clear-undo): Removed current-buffer argument. + (widget-choose): Use minibuffer when there are more than 10 items. + +1997-09-22 Hrvoje Niksic + + * custom/cus-edit.el (custom-button-face): Made it bold. + (custom-group-value-create): Change outlook of buffer. + (custom-buffer-create-internal): Ditto. + (custom-menu-nesting): Removed -- was unused by XEmacs. + (custom-menu-create): Don't use `custom-menu-nesting'. + (custom-group-menu-create): Define unconditionally. + (customize-menu-create): Ditto. + (custom-unlispify-menu-entry): Use `with-current-buffer'. + + * custom/wid-edit.el (widget-checklist-match-inline): Revert to + `append'. + (widget-checklist-value-get): Ditto. + (widget-editable-list-match-inline): Ditto. + (widget-group-match-inline): Ditto. + (widget-glyph-find): Removed compatibility checks; use + `locate-data-directory'. + (widget-glyph-find): Use backquotes. + (widget-push-button-value-create): Ditto. + (widget-choice-mouse-down-action): Don't use `window-system'. + (widget-transpose-chars): New function. + (widget-text-keymap): Use it. + (widget-princ-to-string): Use `with-current-buffer'. + (widget-map-buttons): Ditto. + (widget-push-button-gui): Set to value of `widget-glyph-enable' by + default. + (widget-push-button-value-create): Call `widget-specify-button'. + + * utils/mail-extr.el: Customized. + +1997-09-21 SL Baur + + * packages/man.el: Reverse manual prefix patch. + +1997-09-21 Karl M. Hegbloom + + * packages/man.el: Got rid of the `stars', and hard coded a prefix + of "Man: " for manual-entry buffers. + +1997-09-21 Hrvoje Niksic + + * custom/cus-face.el (frame-background-mode): Renamed from + `custom-background-mode'. + (frame-background-mode): Rewritten. + + * x11/x-menubar.el: Customized. + + * custom/cus-face.el (face-spec-set-match-display): Use `warn' for + warnings. + + * x11/x-font-menu.el: Customized. + + * modes/reftex.el: Add prefixes to customization groups. + + * custom/cus-edit.el (customize): Accept GROUP. + (customize-group): Defalias to `customize'. + (customize-other-window): New function. + (customize-group-other-window): Alias to `customize-other-window'. + + * custom/wid-edit.el (widget-choose): Now works with + `widget-menu-minibuffer-flag' set to nil. + (widget-menu-minibuffer-flag): Default to nil. + (widget-specify-insert): Use new blackquote syntax. + (widget-checklist-value-get): Ditto. + (widget-map-buttons): Ditto. + (widget-checklist-match-inline): Ditto. + (widget-editable-list-match-inline): Ditto. + (widget-group-match-inline): Ditto. + (widget-checklist-match-inline): Use `nconc'. + (widget-keymap): Bind `M-tab' to `widget-backward'. + + * prim/help.el (find-function-noselect): `locate-library' is + compression-aware; don't duplicate the work. + + * prim/packages.el (packages-hardcoded-lisp): Remove "cl-defs". + + * custom/wid-edit.el: Use `remove-if'. + (widget-glyph-directory): Use `locate-data-directory'. + + * custom/cus-edit.el (custom-unlispify-remove-prefixes): Default + to t. + + * custom/wid-edit.el: Removed *lots* of compatibility stuff. + + * custom/wid-edit.el: (widget-editable-list-value-get): Apply + `nconc' instead of `append'. + + * custom/wid-edit.el: Ditto. + + * custom/cus-edit.el: Ditto. + + * custom/custom.el: Use `mapc' instead of `mapcar', where + appropriate. + + * custom/wid-edit.el: Ditto. + + * custom/cus-edit.el: Ditto. + + * custom/custom.el: Ditto. + + * custom/widget.el: Don't define widget keywords. + +1997-09-21 Joel Peterson + + * prim/menubar.el: use normalize-menu-item-name instead of downcase + to compare menu item names. + +1997-09-20 Hrvoje Niksic + + * packages/etags.el: Lots of changes. + +1997-09-20 SL Baur + + * prim/faces.el (Top Level): Back out use of the loop macro. It now + isn't defined until loaddefs gets loaded. + +1997-09-20 Tomasz Cholewo + + * prim/help.el (help-for-help): Make menu items style more uniform. + +1997-09-20 Hrvoje Niksic + + * modes/sendmail.el: Don't define keys to mail etc. + + * prim/keydefs.el: Add bindings to `compose-mail'. + + * prim/simple.el: Synch mail stuff with Emacs 20. + + * utils/reporter.el: Removed mail-user-agent stuff. + + * x11/x-menubar.el (default-menubar): Use new semantics for + `gnuserv-frame'. + + * prim/obsolete.el (string-to-sequence): Wouldn't work with TYPE + `vector'. + +1997-09-19 Hrvoje Niksic + + * cl/cl.el: Don't load cl-defs. + + * cl/cl-macs.el: Added autoload cookies. + +1997-09-19 SL Baur + + * packages/man.el (Manual-buffers-have-prefix): New function. + (manual-entry): Use it. + From Remek Trzaska + +1997-09-18 Colin Rafferty + + * prim/novice.el (disable-command): Made it modify `custom-file' + instead of `user-init-file'. + + Stop multiple disable/enable-command calls from adding + extra newlines. + +1997-09-19 Tomasz Cholewo + + * prim/make-docfile.el: Use null, not not. + +1997-09-18 Jens-Ulrik Holger Petersen + + * prim/isearch-mode.el (isearch-message): Display-message as + progress (this way isearch message won't appear in the message + log). + +1997-09-18 Jens-Ulrik Holger Petersen + + * packages/info.el (Info-elisp-ref): Use `find-function-function'. + +1997-09-18 Jens-Ulrik Holger Petersen + + * packages/lazy-lock.el (lazy-lock-pre-idle-fontify-windows): + Don't do lazy-lock'ing if we're in the minibuffer. + +1997-09-17 SL Baur + + * oobr/Makefile (autoloads): Fix target. + + * hyperbole/Makefile (autoloads): Fix target. + + * utils/autoload.el (batch-update-autoloads): Obey + `autoload-package-name' setting. + + * efs/Makefile: Correct autoloads target. + + * prim/packages.el (locate-library): Simplify regexp for + compression suffixes. + Suggested by: Hrvoje Niksic + +1997-09-17 Karl M. Hegbloom + + * ilisp/ilisp-out.el (ilisp-scroll-output): bind `scroll-in-place' + to nil around the call to #'scroll-up so that {C-c v} + will properly scroll the *output* buffer. + +1997-09-17 Karl M. Hegbloom + + * ilisp/ilisp-out.el (ilisp-needed-window-height): make window one + line bigger + +1997-09-15 Karl M. Hegbloom + + * packages/info.el (Info-mouse-track-double-click-hook): follow + the top menu item when double click in bottom 1/4 and middle 1/3 + +1997-09-16 SL Baur + + * prim/about.el (about-hackers): Add new entry. + +Tue Sep 16 19:23:24 1997 Barry A. Warsaw + + * cc-mode/Release 5.18 + +Tue Sep 16 23:17:15 1997 Barry A. Warsaw + + * cc-mode/cc-menus.el (cc-imenu-c-prototype-macro-regexp): New + variable. + + (cc-imenu-c++-generic-expression): Patches to better match C++ code. + Given by jan.dubois@ibm.net (Jan Dubois) + + * cc-mode/cc-menus.el (cc-imenu-java-generic-expression): + Removed test for declaration + statements. Patch given by Ake Stenhoff , as + forwarded to me by RMS. + + * cc-mode/cc-menus.el: + Imenu support for Objective-C given by Masatake (jet) YAMATO. + + * cc-mode/cc-mode.el (objc-mode): Bind imenu-create-index-function to + cc-imenu-objc-function to enable Imenu support for Objective-C. + Contributed by Masatake (jet) YAMATO. + +Mon Sep 15 23:21:51 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el (c-initialize-builtin-style): + Use existing copy-tree if it's defined. + + copy-sequence doesn't work; the + c-offsets-alist must be copied recursively. Use copy-tree solution + given by Simon Marshall. + +Fri Sep 5 04:47:03 1997 Barry A. Warsaw + + * cc-mode/cc-cmds.el (c-beginning-of-statement): + Fixes in sentence movement to properly + handle M-e moving forward into a comment when looking at preceding + whitespace, and M-a moving backward into comment when looking at + following whitespace. + + Uncommented the looking-at call in the + sentence-flag clause so that moving by forward-sentence when looking + at the beginning of a comment works again. A previous log message in + cc-mode.el indicates this was commented out "because + c-beginning-of-statement-1 should do the right thing", but clearly it + doesn't. + + I don't know if this breaks something else, because I can't figure out + why it was commented out in the first place. + + * cc-mode/cc-langs.el: + Define `/' in c-mode-base-map since all modes now support + c-electric-slash. + + Define C-c C-e in mode-specific maps instead of c-mode-base-map since + c-expand-macro is meaningless in Java and IDL. + + * cc-mode/cc-engine.el (c-end-of-statement-1): + Wrap backward-up-list in a c-safe call so no + error results when buffer contains only a comment and point is at + eob. + +1997-09-15 SL Baur + + * utils/autoload.el (customized-symbols): Use a hash table. + + * prim/cus-load.el (custom-put): Restore. + Adapted from code by Hrvoje Niksic + + * x11/x-toolbar.el (initial-toolbar-spec): Remove news and mail + icons from default toolbar. + +1997-09-14 Hrvoje Niksic + + * prim/packages.el (locate-data-directory): Return nil when + directory not found. + (locate-library): Reimplemented using `locate-file'. + +1997-09-14 Hrvoje Niksic + + * prim/cus-dep.el: Provide `cus-dep'. + + * packages/time.el (display-time-insinuate): New function; don't + insinuate upon loading. + (display-time): Use it. + + * prim/loadup.el: Use it. + + * prim/dumped-lisp.el (dumped-lisp-packages): Renamed to + `preloaded-file-list'. + + * prim/cus-load.el: Updated the comment. + + * prim/cus-dep.el (custom-make-dependencies): Unjunkify. + + * modes/lisp-mode.el: Declare indentation of `with-temp-buffer'. + + * prim/cus-dep.el (custom-make-dependencies): Allow optional + parameter; don't kill Emacs. + + * modes/cl-indent.el: Minor customize changes. + + * modes/asm-mode.el: Minor customize changes. + + * modes/arc-mode.el: Customized. + + * modes/ada-stmt.el: New file. + + * modes/ada-mode.el: Synched with FSF (customized, etc.) + +1997-09-13 SL Baur + + * prim/files.el (switch-to-buffer-other-frame): Undo previous + change when focus-follows-mouse policy is in effect. + +1997-09-14 Hrvoje Niksic + + * packages/recent-files.el: Minor customize changes. + + * packages/man.el: Minor customize changes. + (Manual-use-rosetta-man): Moved the extensive info from docstring. + + * packages/makeinfo.el: Minor customize changes. + + * packages/info.el: Minor customize changes. + + * packages/gopher.el: Minor customize changes. + + * packages/func-menu.el: Minor customize changes. + + * packages/etags.el (tags-delete): Use builtin `delete'. + (tags-remove-duplicates): Don't recurse. + Fixup customizations. + + * packages/emerge.el: Use `with-current-buffer' instead of + `emerge-eval-in-buffer'; reindent. + + * packages/compile.el: Minor customize changes. + + * packages/bookmark.el: Customized. + + * packages/avoid.el (mouse-avoidance-mode): Customized properly. + + * packages/autoinsert.el: Customized. + + * modes/xrdb-mode.el: Minor customize changes. + + * modes/vrml-mode.el: Minor customize changes. + + * modes/vhdl-mode.el: Customized. + (vhdl-emacs-features): Recognize XEmacs 20 correctly. + + * modes/vhdl-mode.el: Require elp when compiling. + + * modes/texinfo.el: Minor customize changes. + + * modes/tcl.el: Minot customize changes. + + * modes/strokes.el: Small fixes. + (strokes-mode): Don't signal error without window system; issue a + warning. + (strokes-insinuate): New function. Don't defadvice upon loading. + (strokes-mode): Use it. + (strokes-char-face): Use `defface'. + + * modes/simula.el: Customized. + + * modes/scribe.el: Customized. + (scribe-envelop-word): Don't bind `noparens' (unused). + + * modes/rsz-minibuf.el: Remove old lemacs support, + e.g. screen-vs-frame, etc. + (resize-minibuffer-min): Removed. + + * modes/rsz-minibuf.el: Fix customizations. + + * prim/subr.el: Moved string-to-foo functions to obsolete.el. + + * prim/obsolete.el: Comments. + +1997-09-13 Hrvoje Niksic + + * packages/filladapt.el: Added `:require' to filladapt-mode + customization. + + * modes/whitespace-mode.el: Customize better. + + * modes/hideshow.el: Customize. + + * packages/icomplete.el: Don't turn on by default; customize + correctly. + + * utils/uniquify.el: Don't invade Emacs by default. + (uniquify-buffer-name-style): Default to nil. + + * utils/uniquify.el: Removed support for Emacs 18. + + * packages/pending-del.el: Customize `pending-delete-mode'. + + * modes/sh-script.el: Renamed `sh-script' customization group to `sh'. + + * packages/balloon-help.el: Customize `balloon-help-mode'. + + * packages/paren.el: Don't invade Emacs by default. + Finished customizing. + +1997-09-13 SL Baur + + * x11/x-toolbar.el (toolbar-paste-function): Remove reference to + x-yank-primary-selection. + Suggested by: Hrvoje Niksic + + * prim/about.el (about-xemacs): Update release date with worst + case. + (about-maintainer-info): Sync entry with 19.16. + +1997-09-11 Jens-Ulrik Holger Petersen + + * packages/vc.el (vc-default-init-version): Make the default value + be `nil'. Improve the docstring. + +1997-09-12 SL Baur + + * prim/make-docfile.el: Spawn make-docfile to csh on next-mach as + well as BSD. + +1997-09-13 Hrvoje Niksic + + * mule/mule-util.el: Clean of Emacs-ported things. + +1997-09-12 Hrvoje Niksic + + * packages/etags.el (tags-file-pattern): Allow `,' in file names. + + * prim/startup.el (initial-scratch-message): Converted to defcustom. + +1997-09-11 Hrvoje Niksic + + * packages/tar-mode.el: Customize; use cl.el instead of + home-brewed extensions. + +1997-09-10 Hrvoje Niksic + + * prim/subr.el (mapc-internal): Define for backward compatibility. + + * cl/cl-extra.el: Don't define `mapc'. + +1997-09-07 Hrvoje Niksic + + * prim/startup.el (initial-scratch-message): Cosmetic change. + +Fri Sep 5 00:50:41 1997 Barry A. Warsaw + + * cc-mode/Release 5.17 + +Fri Sep 5 04:47:03 1997 Barry A. Warsaw + + * cc-mode/cc-cmds.el (c-beginning-of-statement): + Fixes in sentence movement to properly + handle M-e moving forward into a comment when looking at preceding + whitespace, and M-a moving backward into comment when looking at + following whitespace. + + * cc-mode/cc-langs.el: + Define `/' in c-mode-base-map since all modes now support + c-electric-slash. + + Define C-c C-e in mode-specific maps instead of c-mode-base-map since + c-expand-macro is meaningless in Java and IDL. + + * cc-mode/cc-engine.el (c-end-of-statement-1): + Wrap backward-up-list in a c-safe call so no error results when + buffer contains only a comment and point is at eob. + + * cc-mode/cc-cmds.el (c-beginning-of-statement): + Uncommented the looking-at call in the + sentence-flag clause so that moving by forward-sentence when looking + at the beginning of a comment works again. A previous log message in + cc-mode.el indicates this was commented out "because + c-beginning-of-statement-1 should do the right thing", but clearly it + doesn't. + + I don't know if this breaks something else, because I can't figure out + why it was commented out in the first place. + +Tue Aug 26 22:31:55 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el (c-style-alist): "python" style, + knr-argdecl-intro == + + +Mon Aug 25 17:25:12 1997 Barry A. Warsaw + + * cc-mode/cc-engine.el (c-inside-bracelist-p): + Add a test to the enum list test so that the + following code won't erroneously recognize as inside a brace list: + + static PyObject ** + unpack_sequence(v, argcnt, why) + PyObject **v; + int argcnt; + enum *why_code; + { + int i; + + Otherwise, the `enum' in the K&R decl trips this code up. + + * cc-mode/cc-styles.el (c-style-alist): "python" style, + fill-column = 78 + +Fri Aug 22 20:25:57 1997 Barry A. Warsaw + + * cc-mode/cc-cmds.el (c-comment-line-break-function): + Don't break line in the middle of a string. + +Mon Aug 18 17:37:24 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el (c-style-alist): + "python" style change: arglist-intro <= + + "python" style change: inextern-lang <= 0 + +Fri Aug 15 18:39:10 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el (c-style-alist): + "python" style requires c-comment-continuation-stars + to be "". + +1997-09-09 SL Baur + + * utils/autoload.el: One too many -autoload suffixes. + +1997-09-07 Hrvoje Niksic + + * prim/startup.el (initial-scratch-message): Cosmetic grammar + fixup in startup *scratch* message. + +1997-09-09 Jens-Ulrik Holger Petersen + + * packages/vc.el (vc-register): make the second option arg COMMENT + do something + + * packages/vc.el (vc-register): Make the default initial + version be `vc-default-init-version', a new variable + defaulting to "0.1". + +1997-09-08 SL Baur + + * prim/packages.el (packages-find-packages): Reverse package path. + From Colin Rafferty + +1997-09-07 Hrvoje Niksic + + * utils/edmacro.el (edmacro-parse-word): Accept ^foo (would signal + error). + (edmacro-format-1): Add SPC after ^. + +1997-09-03 SL Baur + + * prim/make-docfile.el (Top Level): Ensure `load-path' always has + directory names ending in '/'. + + * prim/packages.el (list-autoloads-path): Assume `load-path' + always has directories ending with trailing `/'s. + + * version.el (emacs-version): Preserve previous matching info. + From Didier Verna + +Wed Sep 3 13:53:10 1997 SL Baur + + * prim/loadup.el: *Never* add directories to the load-path + without trailing slashes. + +1997-09-03 SL Baur + + * prim/packages.el (packages-find-packages): New argument: + `suppress-user' to allow suppression of searching package + hierarchies beginning with "~". + (Top Level): Suppress searching user directories at dump time. + +1997-08-30 Karl M. Hegbloom + + * packages/info.el (Info-mouse-track-double-click-hook): Added, + and placed an `add-hook' into (Info-mode) + +1997-08-29 Jens-Ulrik Holger Petersen + + * packages/hyper-apropos.el (hyper-apropos-help-map): add + keybinding to `hyper-apropos-find-function'. + (hyper-apropos-map): removed unnecessary double binding to + `hyper-apropos-set-variable'. + (hyper-apropos-find-function): new function. + (hyper-apropos-popup-menu): if in the help mode, look for symbol + at top of the buffer if necessary. Added menu entry for + `hyper-apropos-find-function'. + +1997-08-29 Jens-Ulrik Holger Petersen + + * prim/files.el (switch-to-buffer-other-frame): make it select-frame + +1997-09-01 SL Baur + + * x11/x-menubar.el (default-menubar): Put tetris in the game menu, + and move it and the mine game to the top of the menu. + +1997-08-29 SL Baur + + * packages/lpr.el: Clone message-flatten-list. + +1997-08-25 MORIOKA Tomohiko + + * apel/emu-x20.el (mime-charset-coding-system-alist): + iso-2022-jp-2 is defined as coding-system. + + * mule/mule-coding.el: Rename `iso-2022-ss2-{7|8}' -> + `iso-2022-{7|8}bit-ss2' to sync with Emacs 20.0.96. + + (iso-2022-jp-2): New coding system. + +1997-08-23 MORIOKA Tomohiko + + * prim/about.el (about-maintainer-glyph): Fix problem with + jka-compr.el. + +1997-08-25 SL Baur + + * prim/help.el (find-function): ff-read-function was renamed. + (find-function-other-window): Ditto. + (find-function-other-frame): Ditto. + +1997-08-21 SL Baur + + * prim/packages.el (packages-find-packages-1): Append trailing + slash to directories added to the load-path. + +1997-08-17 SL Baur + + * utils/autoload.el (fixup-autoload-buffer): Replace lost guard + statement. + + * prim/make-docfile.el: Remove BOGUS redefinition of + find-file-hooks. + * prim/update-elc.el: Ditto. + + * prim/packages.el (locate-library): Put guard on usage of + `find-file-hooks' (it doesn't exist when temacs is being run). + +Fri Aug 15 17:26:05 1997 Barry A. Warsaw + + * cc-mode/Release 5.16 + +Fri Aug 15 18:39:10 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el (c-style-alist): + "python" style requires c-comment-continuation-stars + to be "". + + * cc-mode/cc-engine.el (c-end-of-statement-1): + Eliminate false hits on important characters + inside literals (strings, comments). + +Tue Aug 12 21:47:18 1997 Barry A. Warsaw + + * cc-mode/cc-cmds.el (c-comment-line-break-function): + In this function, and the defadvice, + call indent-new-comment-line if not in a comment. + + * cc-mode/cc-vars.el (c-buffer-is-cc-mode): Definition moved to + cc-mode.el + + * cc-mode/cc-mode.el (c-buffer-is-cc-mode): + Definition moved here from cc-vars.el. Also, + put permanent-local property on variable so it's value won't get + killed by kill-all-local-variables. This makes it easier for non-CC + Mode derived modes to be initialized correctly. + + * cc-mode/cc-cmds.el (c-electric-brace): + In preserve-p test, don't test char-before when at + bobp. Open brace at bobp is illegal in most modes, but not awk-mode, + which depends on CC Mode. + +Mon Aug 11 15:37:04 1997 Barry A. Warsaw + + * cc-mode/cc-mode.el (c++-mode, java-mode, objc-mode, idl-mode): + Remove obsolete variable c-double-slash-is-comments-p. + + * cc-mode/cc-langs.el (c-double-slash-is-comments-p): Remove + obsolete variable. + + * cc-mode/cc-cmds.el (c-fill-paragraph): + Remove conditional on obsolete variable + c-double-slash-is-comments-p. + + * cc-mode/cc-styles.el (c-style-alist): + Conform comment settings to RMS's preferences. + +Thu Aug 7 19:21:32 1997 Barry A. Warsaw + + * cc-styles.el (c-set-offset): Added autoload cookie. + +1997-08-15 SL Baur + + * cl/cl-macs.el (cl-make-type-test): De-ebolify type test for + 'character. + +1997-08-12 Karl M. Hegbloom + + * packages/man.el (Manual-mouseify-xrefs): Skip the top line of + manual entries so to not get the all-caps pseudo xrefs in the + heading in our list of manuals. + (Manual-buffers-have-stars): new customize option. + (manual-entry): Fix to utilize the new variable, and to not put + stars around manual names put in the minibuffer history. + +1997-08-12 Karl M. Hegbloom + + * packages/info.el (Info-directory-list): reverse the + `Info-default-directory-list' when using it to initialize the + `Info-directory-list'. + (Info-insert-dir): make it so the insertion of a locadir file at a + "^[ \t]*Local.*\n[ \t]*[-=]+" line works correctly. + +Mon Aug 11 17:35:35 1997 SL Baur + + * prim/loaddefs.el (((dir load-path))): Ignore all errors. + + * utils/autoload.el (fixup-autoload-buffer): Wrapping autoloads + files with a guard produces invalid bytecode. + + * prim/make-docfile.el (package-path): Look in the package path + for autoloads files. + + * prim/packages.el (packages-find-packages-1): Don't append + trailing "/" when adding a top-level Lisp directory. + (list-autoloads-path): New function. Use existing precomputed + load-path instead of doing the old broken computation. + +1997-08-11 SL Baur + + * prim/startup.el (command-line-1): Allow setting of + `initial-scratch-message' to nil to turn it off. + Suggested by Gary D. Foster + +1997-08-09 Karl M. Hegbloom + + * packages/info.el: (info::toolbar) swap next and prev buttons to + match the order of the node headings in info files. + +1997-08-09 Karl M. Hegbloom + + * packages/info.el: (Info-fontify-node) will now split top line + that spans 3 lines. (Info-extract-pointer) adjust to match. + +1997-08-08 Karl M. Hegbloom + + * packages/info.el: (Info-extract-pointer) make it move forward + one more line so when the top line has been split, the toolbar + arrows, u, and p will find the link they need. + +Thu Aug 7 18:13:12 1997 Barry A. Warsaw + + * cc-mode/Release 5.15 + +Thu Aug 7 19:21:32 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el (c-set-offset): Added autoload cookie. + + * cc-mode/cc-langs.el (c++-mode-syntax-table, java-mode-syntax-table, + objc-mode-syntax-table, idl-mode-syntax-table): Added autoload + cookies. c-mode-syntax-table already has one. + +Wed Aug 6 21:50:08 1997 Barry A. Warsaw + + * cc-mode/cc-mode.el (c-initialize-cc-mode): + Check all cc-mode-19 interface requirements. + +Tue Aug 5 21:56:02 1997 Barry A. Warsaw + + * cc-mode/cc-align.el (c-lineup-java-throws): + Change the `when' clause to an `if-progn' :-( + + * cc-mode/cc-langs.el (c-common-init): + Make comment-line-break-function buffer local iff it's boundp. + + * cc-mode/cc-cmds.el: + defadvice for indent-new-comment-line keys off of c-buffer-is-cc-mode + instead of an explicit major-mode list. this means non-CC Mode + derived modes will work properly + + * cc-mode/cc-mode.el (c-initialize-cc-mode): Set + c-buffer-is-cc-mode to t. + + * cc-mode/cc-vars.el (c-buffer-is-cc-mode): New variable + + * cc-mode/cc-mode.el (c-initialize-cc-mode): + Give in to the pressure. require 'cc-mode-19 + if functionp is not bound. Too many novice errors without this. + + * cc-mode/cc-cmds.el: + Added advice for indent-new-comment-line so older Emacsen work if they + don't have the variable comment-line-break-function. + +Mon Aug 4 14:55:40 1997 Barry A. Warsaw + + * cc-mode/cc-langs.el (c-mode-base-map, c++-mode-map): + Move `/' as an electric character + from c++-mode-map to c-mode-base-map for all languages. + + * cc-mode/cc-cmds.el (c-electric-slash): + Make this work as the final slash in a */ block + oriented comment closing token. + + * cc-mode/cc-vars.el (c-comment-continuation-stars): + Can take a nil value. Also, the default value is "* ". + + * cc-mode/cc-cmds.el (c-comment-line-break-function): nil value for + c-comment-continuation-stars means use old semantics + +Fri Aug 1 22:44:49 1997 Barry A. Warsaw + + * cc-mode/cc-cmds.el (c-comment-line-break-function): + Added optional soft argument + + * cc-mode/cc-langs.el (c-common-init): Set comment-multi-line and + comment-line-break-function here for all modes. + + * cc-mode/cc-mode.el (c-mode, c++-mode, objc-mode, java-mode, + idl-mode): + Don't set comment-multi-line here. + + * cc-mode/cc-vars.el (c-comment-continuation-stars): New variable + + * cc-mode/cc-cmds.el (c-comment-line-break-function): New function + for proposed mode-specific comment-line-break-function variable. + + * cc-mode/cc-mode.el (c-mode): comment-multi-line => nil + + * cc-mode/cc-langs.el (c-C-comment-start-regexp): Obsolete. + + (c-comment-start-regexp): Initialize from c-C++-comment-start-regexp. + + (c-populate-syntax-table, c-setup-dual-comments): Merge both functions + into c-populate-syntax-table. With the new 9X draft C standard, both + line and block oriented comments are supported in all modes, so always + set up the syntax tables to support both comment styles. + + (c-mode-syntax-table, c++-mode-syntax-table, java-mode-syntax-table, + objc-mode-syntax-table, idl-mode-syntax-table): Use the new syntax + table initialization idioms. + + (c-enable-//-in-c-mode): Obsolete. + + * cc-mode/cc-mode.el (c-mode): + c-comment-start-regexp uses c-C++-comment-start-regexp to + support line oriented comments. + +Wed Jul 30 00:01:45 1997 Barry A. Warsaw + + * cc-mode/cc-engine.el (c-guess-basic-syntax): + CASE 5D.4: template argument continuation + lines are now analyzed as template-args-cont. + + * cc-mode/cc-styles.el (c-offsets-alist): + Added template-args-cont syntactic symbol + +Sat Jul 26 16:03:33 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el (c-styles-alist): + In "java" style, set c-hanging-comment-starter-p to + nil to preserve Javadoc starter lines. + +1997-08-08 Jan Vroonhof + + * prim/obsolete.el (define-obsolete-variable-alias): If the + obsolete variable was setq'ed before the code was loaded we want + that value. + +1997-08-06 Karl M. Hegbloom + + * packages/man.el: Several modifications + + * (manual-entry) buffers are named without *'s, when + `buffers-menu-submenus-for-groups-p' is t, so they show up + in a subsection of the Buffer's menu now, rather than + lumped under *Misc*. + + * (Manual-mode) added a local `kill-buffer-hook' to remove + a killed manual from the `Manual-page-history' + + * (Manual-last-page) begun rewrite of manuvering and + viewing mode code + + * (Manual-mouseify-xrefs) hyphenated xrefs are highlighted + now, and properly handled when the second line is + indented. They end up on the menus too. + + * (Manual-popup-menu) made the far button popup menus look + better by removing the prefix string and adding a title. + +1997-08-06 Karl M. Hegbloom + + * packages/info.el: (Info-highlight-region) Fixed it to not + highlight the indention spaces in xrefs split across lines with + indention on the second line. + +1997-08-06 Karl M. Hegbloom + + * packages/info.el: Numerous modifications, including: + + * support for "dir" merging 'ala Emacs-19.34, with + fallback to cheap localdir files in the secondary info + directories. + + * changed default `Info-annotations-path' from + ~/.infonotes to ~/.xemacs/info.notes + + * added `Info-additional-directory-list' + + * changed a call to w3-fetch to browse-url + + * added new variables and functions from GNU Emacs 19.34: + `Info-dir-contents', `Info-dir-contents-directory', + `Info-dir-file-attributes', and the function + `Info-insert-dir' + + * rewrote `Info-suffixed-file' to a cond block rather than + nested if's for aesthetic reasons. + + * made the top line get split if it's longer than 79 + characters and tweaked fontification to handle that. + + * changed the look of the pop-up mouse menus by utilizing + the "--:etchedThing" dividers. + + * several docstring reformats and typo fixes, a few + comments deleted. + + * info/dir: deleted the Locals: line. I think it's obsolete since + the "dir" merge can put things from like-named nodes in separated + "dir" files all under one menu, which is more versatile than just + a "Locals:" section. If you still want a "Locals:" section, make + yourself a node for it. + +1997-08-07 SL Baur + + * egg/egg.el (hiragana-region): Ebola cleanup. + (katakana-region): Ditto. + +1997-08-02 Jens-Ulrik Holger Petersen + * prim/files.el (save-buffers-kill-emacs): + If there are active processes, then list them before querying if + it is ok to exit emacs. + +1997-08-01 Karl M. Hegbloom + + * efs/dired.el (dired-get-filename) Move the skipping of the + ending carriage return on NT to inside the setq so `and' won't + fail on Unix. + +1997-07-30 SL Baur + + * prim/startup.el (find-emacs-root-internal-1): Remove diagnostic. + + * prim/packages.el (packages-find-packages): Remove diagnostic. + +1997-07-27 SL Baur + + * utils/config.el (config-value-hash-table): Only store the first + occurrence of a symbol. + + * modes/make-mode.el: Remove imenu stuffs. + +Sat Jul 26 12:24:20 1997 Barry A. Warsaw + + * cc-mode/ Release 5.14 + +Sat Jul 26 16:03:33 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el (c-styles-alist): + In "java" style, set c-hanging-comment-starter-p to + nil to preserve Javadoc starter lines. + +Fri Jul 25 22:17:07 1997 Barry A. Warsaw + + * cc-mode/cc-engine.el (c-beginning-of-statement-1): + When checking for bare semi, don't match + on a semi following a close brace, otherwise the following legal code + fails: + + void foo() + { + static struct Pattern nums + = {1, 2, 3}; + + int j = 2; + } + + This might break some bare semi idioms but those are probably more + rare than static initializers. + + * cc-mode/cc-vars.el (idl-mode-hook): New variable. + + * cc-mode/cc-mode.el (idl-mode): Support for CORBA's IDL language. + + * cc-mode/idl-font-lock.el: Unsupported font-lock definitions for IDL. + This should be merged in with font-lock.el + + * cc-mode/cc-mode.el (c-initialize-cc-mode): + move the calling of c-make-styles-buffer-local + into c-initialize-builtin-style. + + * cc-mode/cc-styles.el (c-set-style-2): + Fixed broken implementation of inherited styles. + + * cc-mode/cc-mode.el (c-initialize-cc-mode): + Run the c-initialization-hook, but only once + per Emacs session. + + * cc-mode/cc-vars.el (c-initialization-hook): New variable. + + * cc-mode/cc-engine.el (c-guess-basic-syntax): + CASE 5I: When adding 'inclass syntax, use the + relpos pointing to the class opening brace, unless that hangs on the + right side, in which case, use the start of the class/struct keyword. + +Thu Jul 17 03:36:22 1997 Barry A. Warsaw + + * cc-mode/cc-langs.el (c-symbol-key): + first character must be a letter or underscore + +1997-07-25 SL Baur + + * packages/vc.el (vc-version-diff): Autoload for the menu. + Suggested by Karl M. Hegbloom + +1997-07-24 SL Baur + + * prim/make-docfile.el (docfile-out-of-date): Workaround for NEWOS + process exit handling bug. + Suggested by Katsumi Yamaoka + +1997-07-23 Karl M. Hegbloom + + * packages/info.el: (Info-fontify-node) Allow colons in menu + names. There must be whitespace following the menu ending colon. + +1997-07-23 SL Baur + + * prim/faces.el (invert-face): Make interactive. + Suggested by David Bakhash + +1997-07-21 Karl M. Hegbloom + + * modes/view-process-system-specific.el added + `View-process-field-name-descriptions-linux', transcribed from + man 7 ps_fields. Linux signals fixed to match . + +1997-07-22 SL Baur + + * x11/x-toolbar.el (toolbar-paste-function): Add default as + option. + + * prim/minibuf.el (force-dialog-box-use): Fix typo. + From Pekka Marjola + +1997-07-21 SL Baur + + * prim/packages.el (locate-data-directory): New function to search + for directories in the data-directory-list. + +1997-07-21 Karl M. Hegbloom + + * prim/minibuf.el: New customize variable: + `minibuffer-history-uniquify' + (read-from-minibuffer) Only remove histval from list if + minibuffer-history-uniquify is t. + + * custom/custom.el: Fix typo in (defgroup) docstring. + +1997-07-21 SL Baur + + * prim/startup.el (set-default-load-path): Initialize package + paths as final step if everything else went O.K. + + * prim/help.el: Removed locate-library (moved to packages.el). + + * prim/subr.el: Removed lamda macro (moved to packages.el). + + * prim/packages.el (package-find-packages): New function. Search + package hierarchies for interesting directories. + (package-find-packages-1): Helper function for the above. Do the + searching in exactly 1 directory. + + * packages/vc.el: Add ClearCase maintainer. + +1997-07-21 Karl M. Hegbloom + + * modes/whitespace-mode.el (toplevel) Install toolbar button using + `toolbar-add-item' rather than redefining the whole default + toolbar. If the button is already there, does nothing, so a + custom toolbar containing a whitespace button can made with + `edit-toolbar' once it's been installed the first time. + +1997-07-20 SL Baur + + * utils/speedbar.el: + (speedbar-frame-mode): Autoload. + (speedbar-get-focus): Autoload. + (speedbar): Autoload (correctly). + + (speedbar-frame-width): Test liveness of frame + too. + (speedbar-frame-mode): Avoid some Emacs 20 code. + From Markus Linnala + + * prim/startup.el (find-emacs-root-internal): Search + prefix-directory directly for XEmacs installed stuffs. + + * utils/smtpmail.el (smtpmail-send-it): Autoload. + + * prim/startup.el (command-line): Put advisory text in *scratch* + at startup. + + * packages/info.el (Info-exit): Guard against deletion of only + frame. + From David Bakhash + +1997-07-19 SL Baur + + * utils/elp.el: Spelling correction. + From karlheg+xemacs@inetarena.com (Karl M. Hegbloom) + +1997-07-19 Steven L Baur + + * prim/about.el: Sundry changes. + +1997-07-18 Steven L Baur + + * packages/crypt.el (crypt-inhibit-formats): New variable. + (crypt-encoded-p): Use it. + Based on a patch by Tkil + + * utils/ring.el (ring-p): Make compatible, not obsolete. + +1997-07-16 Steven L Baur + + * utils/crontab.el (crontab-get): Check for `no crontab for' as an + error return. + Suggested by Jeff Miller + + * modes/arc-mode.el: Clean up comment. + + * packages/tar-mode.el: Clean up comments. + +Wed Jul 16 23:56:58 1997 Barry A. Warsaw + + * cc-mode/: Release 5.13. + +Thu Jul 17 03:36:22 1997 Barry A. Warsaw + + * cc-mode/cc-langs.el (c-symbol-key): + first character must be a letter or underscore + +Mon Jul 14 23:43:33 1997 Barry A. Warsaw + + * cc-mode/cc-langs.el (c-make-inherited-keymap): Change to a defun + + * cc-mode/cc-langs.el: + Added (require 'cc-defs) to pick up the definition of c-emacs-features. + + * cc-mode/README: Simplified instructions + + * cc-mode/cc-make.el: New file to aid in byte-compiling in older + Emacsen. + +Sun Jul 13 21:24:37 1997 Barry A. Warsaw + + * cc-mode/cc-cmds.el: cc-defs is required to pick up the + c-add-syntax macro + + * cc-mode/cc-langs.el (c-mode-menu): + Added uncomment region and slight rearrangement of + items + + * cc-mode/cc-cmds.el (c-electric-backspace): + Must get 'supercede property values to work + with delsel and pending-del. + +Thu Jul 10 20:46:09 1997 Barry A. Warsaw + + * cc-mode/cc-engine.el (c-maybe-labelp): + defvar this to shut up the byte compiler + +Wed Jul 9 22:08:58 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el (c-initialize-builtin-style): + use copy-sequence instead of copy-tree + so the cl module isn't necessary. + + * cc-mode/cc-cmds.el (c-electric-brace): + fix ebola eradication consequence in the + preserve-p test. + +1997-07-15 Steven L Baur + + * prim/about.el (xemacs-hackers): Add info about IENAGA Kazuyuki. + (about-url-alist): Ditto. + (about-maintainer-info): Ditto. + + * prim/modeline.el (add-minor-mode): Update docstring. + +1997-07-15 Hrvoje Niksic + + * packages/pending-del.el (pending-delete-mode): Use the option + symbol as argument to add-minor-mode, not its value. + +1997-07-14 Hrvoje Niksic + + * packages/pending-del.el (pending-delete-modeline-string): New + option. + +1997-07-14 Steven L Baur + + * prim/files.el (auto-mode-alist): Readd objective c mode. + From Barry A. Warsaw + + * prim/make-docfile.el: Print more informative message when + attempting to create docfile and all dumped .elcs do not exist. + +1997-07-13 Steven L Baur + + * prim/files.el (save-some-buffers): Guard call to + `delete-other-windows'. + +1997-07-13 Karl M. Hegbloom + + * prim/minibuf.el: (read-from-minibuffer) Corrected indentation, + History lists don't contain dups anymore, newest is put on top and + removed from the cdr. + +1997-07-13 Karl M. Hegbloom + + * packages/man.el: (manual-entry) Added `Manual-page- + minibuffer-history', and added it to the read-string statement. + Added #\: to `fmh' so that manuals named like MIME::Parser(3) are + found at point. + (Manual-mouseify-xrefs) Fixed it so now it will mousify the manual + entry on the first line of an apropos listing. + +1997-07-10 Karl M. Hegbloom + + * packages/info.el: Added `Info-minibuffer-history', and made it + the minibuffer history variable in the `completing-read' calls. + + * utils/savehist.el: Added `Info-minibuffer-history' to default + value of `savehist-history-variables'. + +1997-07-13 Steven L Baur + + * modes/lisp-mode.el: Restore verbosity as an option. + From Hrvoje Niksic + +1997-07-11 Hrvoje Niksic + + * prim/cmdloop.el (execute-extended-command): Use + `sorted-key-descriptions'. + + * prim/help.el (sorted-key-descriptions): New function. + (where-is): Use it. + (where-is): Use `read-command'. + + * prim/macros.el (kbd-macro-query): Use `read-char-exclusive' + instead of `read-char'. + + * prim/cmdloop.el (read-char): Correctly inhibit quit. + + * prim/files.el: Use `files' group. + + * prim/disp-table.el (describe-display-table): Made it work; don't + use `describe-vector'. + + * prim/gui.el: Customized. + + * utils/edmacro.el (insert-kbd-macro): Move to macros.el. + + * prim/macros.el: Synch with FSF 19.34. + + * prim/featurep.el: Comment addition. + + * prim/cus-start.el: Add variables from replace.el. + + * prim/replace.el (case-replace): Use `defvar', not `defconst'. + + * utils/crontab.el: Customized. + + * utils/highlight-headers.el: Define -faces as a separate group; + customize the variables. + + * utils/uniquify.el: Hide from the Customize tree; the package + changes state of XEmacs on load. + + * packages/igrep.el: Don't insinuate XEmacs when loading. + (igrep-insinuate): New function. + + * packages/blink-cursor.el (blink-cursor-callback): Don't blink on + TTY-s. + + * prim/console.el (resume-pid-console): Use `eql'. + + * prim/profile.el (profile): Restore old profiling state, instead + of blindly turning off profiling. + + * packages/add-log.el (add-log-c-like-modes): Add java-mode. + + * packages/add-log.el: Require fortran when compiling. + + * prim/device.el (device-list): Use `nconc' instead of `append'. + +1997-07-13 Steven L Baur + + * prim/files.el (save-some-buffers): Only delete other windows the + first time through. + Based on code from Hrvoje Niksic + +1997-07-12 Steven L Baur + + * prim/modeline.el (mouse-drag-modeline): Don't queue dummy eval + events. + From Kyle Jones + +1997-07-10 Hrvoje Niksic + + * packages/gnuserv.el (gnuserv-edit-files): Operate on this + buffer's menubar. + +1997-07-11 Steven L Baur + + * packages/gnuserv.el: Add done button. + From Hrvoje Niksic + +1997-07-10 Steven L Baur + + * utils/edit-toolbar.el: (edit-toolbar-file-name): Use + `emacs-user-extension-dir'. + (edit-toolbar-add-initialization): Ditto. + (edit-toolbar-prompt-for-initialization): Ditto. + + * utils/edit-toolbar.el: New file. + From Peter Pezaris + + * utils/toolbar-utils.el: New file. + From Jeff Miller + +1997-07-10 Hrvoje Niksic + + * packages/add-log.el (change-log-font-lock-keywords): Don't + fontify closing paren. + + * packages/pending-del.el: Some renamings, synch with Emacs 19.34. + +1997-07-10 Steven L Baur + + * packages/hyper-apropos.el (hyper-apropos-get-doc): Don't + autoload, there is very little point. + + * prim/obsolete.el (frame-first-window): Make compatible, not + obsolete. + +1997-07-10 Hrvoje Niksic + + * packages/pending-del.el (pending-delete-pre-hook): Don't quote + lambda. + (pending-delete-pre-hook): Use `error-message-string'. + (pending-delete): Treat as minor mode; define the standard turn-on + and turn-off functions. + (delete-active-region): Simplified. + + * packages/pending-del.el: Don't turn on by default. + +1997-07-09 Steven L Baur + + * packages/pending-del.el: Correct typo in Hrvoje's upgrade. + + * mel/mel-u.el (uuencode-external-decode-region): Force + buffer-read-only nil because it gets changed magically to t during + the call to `insert-file-contents'. + + * tm/tm-image.el (mime-preview/filter-for-image): Comment out test + for invalid glyph. It appears to be non-functional. + + * modes/lisp-mode.el (lisp-interaction-mode-popup-menu-1): Add + entry for debug on signal. + + * packages/supercite.el (sc-attribs-%@-addresses): + is valid in + an Email address. + (sc-attribs-<>-addresses): Ditto. + (sc-get-address): Ditto. + + * cc-mode/cc-cmds.el (c-electric-brace): Fix Ebola infection. + + * prim/dumped-lisp.el (dumped-lisp-packages): Tweak dump order + so "startup" is loaded before the autoloads. + + * custom/cus-edit.el (custom-file): Use same logic as startup.el + +j1997-07-08 Hrvoje Niksic + + * prim/simple.el (log-message-ignore-regexps): Reduced + significantly. + +Tue Jul 8 23:47:47 1997 Barry A. Warsaw + + * cc-mode/Release 5.12 + +Mon Jul 7 23:47:02 1997 Barry A. Warsaw + + * cc-mode/cc-styles.el, cc-mode/cc-mode.el, cc-mode/cc-menus.el, + cc-mode/cc-langs.el, cc-mode/cc-engine.el, cc-mode/cc-compat.el, + cc-mode/cc-cmds.el, cc-mode/cc-align.el: + Reorganization to support byte-recompile-directory. + + * cc-mode/Release: Don't put release number in tar file + +Thu Jul 3 22:54:03 1997 Barry A. Warsaw + + * cc-mode/cc-langs.el (c-mode-base-map): + Proper binding of c-electric-backspace and + c-electric-delete, based on the policy of the various maintainers. + Thank goodness for delete-key-deletes-forward! + + * cc-mode/cc-vars.el (c-tab-always-indent, c-hanging-braces-alist): + Minor changes to the cutomize format. + + * cc-mode/cc-mode-19.el: Initial revision + + * cc-mode/cc-menus.el, cc-mode/cc-engine.el, cc-mode/cc-compat.el, + cc-mode/cc-cmds.el, cc-mode/cc-align.el: + Major Ebola eradication. + +Wed Jul 2 21:33:04 1997 Barry A. Warsaw + + * cc-mode/cc-engine.el (c-crosses-statement-barrier-p, + c-guess-basic-syntax): Ebola eradication. + + * cc-mode/cc-cmds.el (c-indent-region): + Call c-echo-parsing-error to echo last parsing + error that may have occurred. + + * cc-mode/cc-engine.el (c-echo-parsing-error): New function. + + * cc-mode/cc-engine.el (c-parsing-error): new variable + + (c-parse-state): When an unbalanced close brace is discovered, don't + raise an error (prevents insertion of character). Insert the + character, display a warning message, and set c-parsing-error so + syntax echoing will be disabled. + + (c-show-syntactic-information, c-indent-line): Suppress syntax echoing + if c-parsing-error is non-nil. + + * cc-styles.el: Added require of cl to pick up definition of copy-tree. + +Mon Jun 30 21:41:00 1997 Barry A. Warsaw + + * cc-mode/cc-langs.el, cc-mode/cc-mode.el (c-mode-map, + c++-mode-map, objc-mode-map, java-mode-map): + Moved + defvars from cc-langs.el to cc-mode.el for use in c-mode, c++-mode, + objc-mode, and java-mode docstrings. Actual population of these mode + maps remains in cc-langs.el. + + * cc-mode/cc-mode.el: + Require cc-langs at top level, so as to get the definitions for + c-mode-map, et al. that are used in the *-mode docstrings. + +Fri Jun 27 17:33:32 1997 Barry A. Warsaw + + * cc-mode/cc-langs.el (c-mode-syntax-table): + Added autoload cookie for gdb-mode. + +Thu Jun 26 21:12:56 1997 Barry A. Warsaw + + * cc-mode/cc-engine.el (c-guess-basic-syntax): + CASE 5H: Whack one ebola infection (e.g. using + memq with the results of following-char in XEmacs 20). + + * cc-mode/cc-styles.el: + Added two require's that make autoload call of (c-set-style) work. + +Sun Jun 22 16:40:30 1997 Barry A. Warsaw + + * cc-mode/cc-cmds.el (c-electric-delete): + Don't call c-electric-backspace interactively. + +Fri Jun 20 20:40:33 1997 Barry A. Warsaw + + * cc-mode/cc-mode.el (c-mode, c++-mode, objc-mode, java-mode): + Make sure to call + c-update-modeline after the hooks are run, so that the modeline + accurately reflects auto-newline and delete-key minor modes if the + hooks set c-hungry-delete-key or c-auto-newline directly. + + * cc-align.el (c-lineup-java-throws): Fixed some regressions. +1997-07-08 Steven L Baur + + * packages/func-menu.el: Don't enable Makefile mode function menu + by default. + From Martin Buchholz + + * x11/x-menubar.el (file-menu-filter): Delete Frame should be + active when multiple frames span multiple devices. + From Aki Vehtari + +1997-07-08 Hrvoje Niksic + + * packages/gnuserv.el: Remove RCS ID keywords. + + * utils/savehist.el: Cosmetic changes. Hopefully, not + user-visible. + + * prim/debug.el (debug-convert-byte-code): Use compiled-function + accessor functions. + +1997-07-08 Steven L Baur + + * modes/hideif.el (hide-ifdef-mode): Include modemap in call to + `add-minor-mode'. + +1997-07-08 Tomasz Cholewo + + * packages/add-log.el: Require add-log for accessing + add-log-mailing-address and add-log-full-name variables. + +1997-07-08 Steven L Baur + + * bytecomp/disass.el (disassemble-1): Use functional interface + instead of indexing into vector. + From Hrvoje Niksic + + * prim/startup.el (emacs-user-extension-dir): New variable. + (load-user-init-file): Use it. .xemacs and .xemacs-custom are + moved into `emacs-user-extension-dir' and renamed to init.el and + options.el respectively. + + * prim/packages.el (packages-hardcoded-lisp): Remove "startup" + since it is mentioned in dumped-lisp.el. + + * cl/cl-macs.el (keymap-name): New defsetf. + (keymap-prompt): Ditto. + (keymap-default-binding): Ditto. + From Hrvoje Niksic + +1997-07-07 Karl M. Hegbloom + + * packages/dabbrev.el: replace `buffer-substring' with + `buffer-substring-no-properties' so that unwanted text + properties (like read-only) are stripped from inserted + dabbrev expansions. + +1997-07-08 Steven L Baur + + * comint/comint.el (comint-replace-by-expanded-history): Change + buggy history test regexp. + From Simon Marshall (Emacs/Mule zeta) + +1997-07-07 Steven L Baur + + * oobr/br-clos-ft.el (clos-scan-routine-arglist): Don't reference + bytecode object as vector. + + * hypberbole/hact.el (action:commandp): Don't reference bytecode + objects as vectors. + (action:params): Ditto. + + * hyperbole/hypb.el (hypb:function-copy): Don't reference byte + code objects as vectors. + (hypb:function-symbol-replace): Document as broken. The + substition cannot be done without some thinking I'm not in the + mood for. + + * efs/efs-ovwrt.el (efs-overwrite-fn): Attempt to correctly deal + with the interactive spec. + + * packages/apropos.el (apropos-safe-documentation): Use + `compiled-function-doc-string' instead of referencing a bytecode + object as an array. + + * prim/subr.el (buffer-substring-no-properties): Undo previous + change removing extents. set-text-properties works now. + From Hrvoje Niksic + + * packages/hyper-apropos.el (hyper-apropos-get-doc): Get the + argument list through a function instead of indexing into + bytecode. + + * utils/easymenu.el (easy-menu-add): Oops, wrong sense in + comparison. + + * comint/gdb.el (gdb-mode-syntax-table): New variable. Initialize + with the logic currently in CC Mode 5.11. + (gdb-mode): Use it. + + * modes/hideif.el (hide-ifdef-mode-submap): Correctly specify the + current local map. + +1997-07-08 MORIOKA Tomohiko + + * language/english.el: Add quail-british for British. + + * language/european.el: Register input-method for various non + quail-latin-1 methods. + +1997-07-06 Steven L Baur + + * prim/cmdloop.el (errors-deactivate-region): Default to no error + behavior for beta testing. + + * prim/dumped-lisp.el (dumped-lisp-packages): Reenable dumping + winnt.elc with MS Windows NT version of XEmacs. + +1997-07-05 Steven L Baur + + * comint/shell.el ((not shell-mode-map)): M-RET conflicts with + Hyperbole binding. + + * comint/comint.el (comint-mode): Use easymenu for making menus. + (comint-popup-menu): Use mode-popup menu instead of private menu. + + * efs/dired.el (toplevel): Do not string test version against + "Lucid". + + * prim/obsolete.el (add-menu): Don't make obsolete. + + * utils/easymenu.el (easy-menu-remove): Do something neater when + only one buffer menu is in effect. + (easy-menu-add): Ditto. + + * prim/dumped-lisp.el (dumped-lisp-packages): easymenu will be + dumped with XEmacs. + + * utils/easymenu.el (easy-menu-define): Don't autoload. + + * modes/lisp-mode.el (toplevel): Rename menu descriptors. + (emacs-lisp-mode): Use easy-menu-define/easy-menu-add to add menus. + (lisp-interaction-mode): Ditto. + +1997-07-04 Steven L Baur + + * prim/cmdloop.el (errors-deactivate-region): Default to existing + behavior. + + * leim/quail.el (quail-mode): Correct addition of quail minor mode + info to minor-mode-map-alist. + (top-level): Ditto. + +1997-06-30 Hrvoje Niksic + + * modes/abbrev.el (define-mode-abbrev): Call `define-abbrev' with + correct arguments. + +1997-07-04 Hrvoje Niksic + + * prim/minibuf.el (read-from-minibuffer): Initialize + `current-minibuffer-contents', `current-minibuffer-point', and + `initial-minibuffer-history-position'. + (next-history-element): Use them. + (previous-matching-history-element): Ditto. + +1997-07-04 Steven L Baur + + * prim/cus-load.el (custom-put): New alias for overloadable + function. + +1997-07-03 Steven L Baur + + * utils/autoload.el (batch-update-directory): Fix typo. + (update-autoloads-from-directory): Avoid scanning custom-load.el + and auto-autoload.el files. + (batch-update-autoloads): Remove duplicate status message. + (autoload-snarf-defcustom): Keep track of what symbols we have + attached property lists to. + + * ilisp/Makefile (autoloads): Add autoloads dependencies. + + * hyperbole/Makefile: Add autoloads dependencies. + + * utils/autoload.el (batch-update-autoloads): Load custom-load + prior to updating autoloads. + + * cc-mode/Makefile (autoloads): New targets to automatically + rebuild autoloads and custom-loads. + +1997-07-02 Steven L Baur + + * auctex/Makefile (autoloads): New targets to automatically + rebuild autoloads and custom-loads. + + * utils/autoload.el (batch-update-autoloads): Add new parameter, + update DOC string. + + * comint/gdb.el (gdb-mode): Semantics of c-mode-syntax-table have + changed. + +1997-07-01 Steven L Baur + + * x11/x-menubar.el: bookmark submenu beautification -- This will + make it look better (and will prevent some consing, but that's + being anal). + From Hrvoje Niksic + + * prim/simple.el (delete-key-deletes-forward): Mark docstring as + an user option. + From Gary D. Foster + + * mel/mel-q.el (q-encoding-encode-string): Fix Ebola-ified + comparison. + + * efs/efs-ovwrt.el (efs-overwrite-fn): efs is manufacturing its + own byte code. Whee. + * utils/advice.el (ad-interactive-form): Don't treat bytecode as a + vector if it can be avoided. + From Kyle Jones + +1997-06-30 Steven L Baur + + * prim/files.el (auto-mode-alist): Don't set image-mode by default + on xpms. + +Sun Jun 29 20:57:15 1997 Kyle Jones + + * prim/simple.el: bind inhibit-read-only to t before + trying to erase or otherwise modify the echo area buffer. + +1997-07-01 MORIOKA Tomohiko + + * modes/image-mode.el: Add `image-maybe-restore' to + `change-major-mode-hook'. + + * modes/image-mode.el (image-maybe-restore): New function. + +1997-06-29 Hrvoje Niksic + + * modes/abbrev.el (define-mode-abbrev): Would ignore EXPANSION. + +1997-06-28 Hrvoje Niksic + + * modes/abbrev.el (define-abbrev): If NAME contains a non-word + character, intern a ` ' symbol in the obarray. + +1997-06-29 Steven L Baur + + * prim/files.el (auto-mode-alist): Set image-mode for various + image file names (JPEG, GIF, PNG, and xpm). + +Sun Jun 29 03:02:10 1997 Kyle Jones + + * src/undo.c (record_extent): + If the extent's object is a string, just return. We + can't record undo information for strings, and it is + very bad to reference through a string pointer as if it + were a buffer pointer. + +1997-06-28 Steven L Baur + + * utils/delbs.el: Removed as obsolete. + Suggested by Gary D. Foster + + * packages/hyper-apropos.el (hyper-apropos-documentation): Remove + obsolete alias. + (hyper-apropos-hyperlink): Ditto. + (hyper-apropos-major-heading): Ditto. + (hyper-apropos-section-heading): Ditto. + (hyper-apropos-heading): Ditto. + (hyper-apropos-warning): Ditto. + From Hrvoje Niksic + + * prim/simple.el (show-message-log): Restore an oldie-but + prematurely-retired-goodie. + + * x11/x-menubar.el (default-menubar): Restore Show Message Log + command in Edit menu. + + * mule/mule-util.el: Change defsubst to defun for + string-to-sequence, string-to-list, string-to-vector, + nested-alist-p to shut up build time diagnostics. + + * prim/loadup.el (Top level): Added instrumentation to diagnose + where the 0 property list is getting added at dump. Naturally, I + cannot reproduce the problem now. + + * modes/abbrev.el (define-abbrev): Trap nil tables (which might + cause bogus plists to get put into obarray). + Fix docstring. + +1997-06-27 Hrvoje Niksic + + * modes/auto-show.el: Customized. + +1997-06-27 Steven L Baur + + * prim/make-docfile.el: [oops] Check auto-autoloads.elc for + out-of-dated-ness too. + + * utils/autoload.el (batch-update-directory): Kill command line + args when done. + (autoload-save-customization): Print a warning message with the + offending symbol when we run across the elusive malformed property + list ((0 0)). + +1997-06-26 Hrvoje Niksic + + * prim/profile.el (profile-key-sequence): New function. + (pretty-print-profiling-info): Allow interactive calls. + + * prim/overlay.el: Make more FSF compatible. + +1997-06-27 Steven L Baur + + * prim/loaddefs.el (debug-ignored-errors): Fix regexps. + From Hrvoje Niksic + + * hyperbole/wrolo-menu.el (TopLevel): Fix tests so that W3's + id-menubar simulation doesn't bollux up feature tests. + + * prim/about.el (about-xemacs): Adjust planned release date. + +1997-06-26 Steven L Baur + + * prim/cus-load.el: Use correct load name. + - Silence the load messages. + + * mule/mule-util.el (string-to-sequence): Spelling correction. + + * prim/make-docfile.el: Don't overwrite DOC file when it is + up-to-date. + +1997-06-29 MORIOKA Tomohiko + + * language/chinese.el: Add chinese-isoir165 (CCITT Extended GB). + + * language/chinese.el: Modify charset DOC-strings for CNS 11643 to + be more detailed. + + * language/arabic.el: (require 'language/arabic-util) instead + of (require 'arabic) for Arabic environment. + + * language/arabic-util.el: Provide `language/arabic-util' instead + of `arabic'. + + * language/arabic.el: Rename `arabic-0', `arabic-1' and `arabic-2' + to `arabic-digit', `arabic-1-column' and `arabic-2-column' to sync + with Emacs/mule-19.34.94-zeta. + + * tl/char-table.el (char-position-to-string): Use `defsubst'. + (char-table-1): New implementation. + + Use BOX DRAWINGS characters of JIS X0208. + +1997-06-28 MORIOKA Tomohiko + + * apel/richtext.el: Add autoload comments for `richtext-encode' + and `richtext-decode'. + + * prim/format.el (format-alist): Add `text/richtext'. + + * modes/image-mode.el (image-decode): Display description for some + commands when XEmacs cannot decodes current buffer as inline + image. + + * tl/chartblxmas.el: New file. + + * tl/char-table.el (view-charset): Use `view-buffer'. + + * x11/x-menubar.el (default-menubar): Add "Show character table" + for MULE menu. + + * apel/emu.el: Check richtext.el is bundled. + + * tl/char-table.el: Use `charset-doc-string' directly. + + * tl/char-table.el (view-charset): New command. + + * tl/char-table.el: `show-char-table' -> `insert-charset-table'. + + * tl/char-table.el: `show-96x96-table' -> + `insert-96x96-charset-table'. + + * tl/char-table.el: `show-94x94-table' -> + `insert-94x94-charset-table'. + + * tl/char-table.el: `show-96-table' -> `insert-96-charset-table'. + + * tl/char-table.el: `show-94-table' -> `insert-94-charset-table'. + + * tl/char-table.el: Use `insert'. + + * packages/hexl.el (hexl-mode-exit): Run `hexl-mode-exit-hook'. + + * x11/x-menubar.el (default-menubar): Fix "Describe language + support" and "Set language environment" of mule menu. + + * apel/file-detect.el: Add autoload comments for function + `add-path', `add-latest-path', `get-latest-path', + `file-installed-p', `exec-installed-p', `module-installed-p' and + variable `exec-suffix-list'. + + * prim/format.el (format-alist): Add image/jpeg, image/gif, + image/png and image/x-xpm. + + * modes/image-mode.el: New file. + +1997-06-27 MORIOKA Tomohiko + + * tm/tm-ew-e.el (tm-eword::encode-string-1): avoid infinite loop + caused by long non-encoded-word element. (cf. [tm-en:1356]) + + (mime/field-encoding-method-alist): Add "Message-ID" as ignored. + +1997-06-25 Steven L Baur + + * x11/x-menubar.el(default-menubar): Comment out changes to the + Mule menu because they bombed after recompilation. + + * packages/hyper-apropos.el + (hyper-apropos-toggle-programming-flag): Use `with-current-buffer' + instead of `eval-in-buffer'. + + * term/sun-mouse.el: Remove bogus redefinition of + `eval-in-buffer'. + (sun-mouse-handler): Use with-current-buffer instead of + `eval-in-buffer'. + + * prim/make-docfile.el: Use princ not print. + Suggested by Hrvoje Niksic. + + * packages/info.el (Info-select-node): Desensitive case search for + Note:. + (Info-next-reference): Ditto. + * prim/simple.el (kill-region): Adjust endpoints of extent to + test and deal with case of the end being less than the beginning. + * prim/cmdloop.el (teach-extended-commands-timeout): Bump value to 4. + From Hrvoje Niksic + + * prim/subr.el (eval-in-buffer): Make obsolete. + Suggested by Hrvoje Niksic. + + * packages/hyper-apropos.el (hyper-apropos-faces): Change group to + 'faces. + Suggested by Per Abrahamsen. + +1997-06-23 Hrvoje Niksic + + * prim/cmdloop.el (execute-extended-command): Print message after + the command finishes, and restore old echo-area contents. + + - Get keybinding before command is executed. + Suggested by Kyle Jones and Steve Baur. + +1997-06-24 Steven L Baur + + * packages/gnuserv.el: Make old symbols Obsolete. + From Hrvoje Niksic + + * prim/cmdloop.el (keyboard-quit): Don't kill zmacs-region in + minibuffer. + * prim/minibuf.el (minibuffer-keyboard-quit): Ditto. + From Hrvoje Niksic + + * prim/help.el (help-mode-quit): Bury buffer when quitting. + From Hrvoje Niksic + +1997-06-24 Hrvoje Niksic + + * prim/cmdloop.el: Customize `teach-extended-commands-p' and + `teach-extended-commands-timeout'. + +1997-06-23 Steven L Baur + + * version.el (emacs-version): Synch with InfoDock 4.0. + (emacs-version): Ditto. + +Mon Jun 23 12:33:52 1997 Per Abrahamsen + + * about.el (about-show-linked-info): Use empty strings for + `widget-link-prefix' and `widget-link-suffix'. + +1997-06-22 Gary D. Foster + + * x11/x-menubar.el: Added `bookmark-menu-filter', changed + bookmark submenu from a popup to a cascading submenu. + * packages/bookmark.el: Added an autoload cookie for + `bookmark-all-names' (by Steve Baur) + +1997-06-23 Hrvoje Niksic + + * packages/info.el (Info-next-reference): Fix up for M-TAB to work + correctly. + + * utils/live-icon.el (live-icon-one-frame): Don't set glyphs to + balloon-help frames. + + * packages/balloon-help.el (balloon-help-make-help-frame): Set the + `balloon-help' property to the newly created frame. + + * prim/profile.el (profile): New macro. + + * prim/files.el (auto-mode-alist): Add winmgr-mode. + + * modes/winmgr-mode.el: Customize. + +1997-06-23 Steven L Baur + + * utils/autoload.el (generate-file-autoloads-1): Remove warning + about 900 character lines. + + * x11/x-toolbar.el (toolbar-mail-commands-alist): Correction for + calling Netscape mail. + From Hrvoje Niksic + +1997-06-22 Steven L Baur + + * x11/x-menubar.el (default-menubar): Make `Jump to bookmark' menu + dynamic. + From Gary D. Foster + + * prim/dumped-lisp.el (dumped-lisp-packages): Sparcworks dumps + comint and ring. + +1997-06-24 MORIOKA Tomohiko + + * language/arabic.el: moved from mule/arabic-hooks.el. + + * mh-e/mh-e.el (mh-get-new-mail): Decode output as + `mh-folder-coding-system'. + +1997-06-24 MORIOKA Tomohiko + + * language/ethio-util.el: imported from Emacs/mule-19.34.94-zeta. + + * language/arabic-util.el: moved from mule/arabic.el; repair + Arabic characters. + +1997-06-24 MORIOKA Tomohiko + + * x11/x-menubar.el: Fix "Describe language support" and "Set + language environment" of Mule menu. + + * language/visual-mode.el: moved from mule/. + + * language/ethiopic.el: Modify for XEmacs. + + * language/cyrillic.el: Modify DOC-string of koi8-r; Fixed problem + of setting for `language-info-alist' about koi8-r. + + * mule/auto-autoloads.el: Enable auto-autoloads.el for mule/. + + * mule/mule-util.el: New file (imported from + Emacs/mule-19.34.94-zeta). + + * mule/mule-misc.el: Function `truncate-string-to-width' was moved + to mule-util.el. + + * prim/dumped-lisp.el, mule/mule-load.el: mule/arabic-hooks.el was + moved to language/arabic.el; mule/arabic.el was moved to + language/arabic-util.el; Use language/ethiopic.el instead of + mule/ethiopic-hooks.el; Use language/ethio-util.el instead of + mule/ethiopic.el. + + * mule/mule-coding.el (coding-system-docstring): New alias (to + emulate Emacs/mule-19.34.94-zeta function). + + * mule/mule-cmds.el: modified to sync with + Emacs/mule-19.34.94-zeta (mule-prefix was changed to "C-x C-m") + + (set-language-info): Add to "Describe Language Support" and "Set + Language Environment" menu. + + * mule/mule-charset.el: Function `compose-region' and + `decompose-region' were moved to mule-util.el. + + * leim/quail.el: modify to sync with latest quail.el of Emacs/mule + in ETL. + + (quail-toggle-mode-temporarily): check `quail-conv-overlay'. + + (quail-map-p): Use `characterp' instead of `integerp'. + +1997-06-21 Steven L Baur + + * prim/tabify.el (untabify): Return nil. + From contributor name lost. + + * prim/packages.el (packages-hardcoded-lisp): startup.elc needs to + be scanned for docstrings. + +1997-06-21 Hrvoje Niksic + + * packages/bookmark.el (bookmark-menu-popup-paned-menu): Change + title to name. + * prim/overlay.el (overlay-put): Support `local-map'. + (overlay-get): Support `category'. + +1997-06-21 Steven L Baur + + * prim/startup.el (load-user-init-file): Load custom-file if it + has not changed from the default. + +1997-06-21 Hrvoje Niksic + + * prim/overlay.el (make-overlay): Avoid temporary variable. + (move-overlay): Ditto. + (overlays-in): Use `mapcar-extents'. + (next-overlay-change): Avoid consing; use `map-extents'. + (previous-overlay-change): Ditto. + (overlay-lists): Ditto. + (overlay-lists): Call `overlay-recenter' with correct value. + +1997-06-20 Steven L Baur + + * utils/autoload.el (fixup-autoload-buffer): New function. Insert + guards so a (load "auto-autoloads") works the same as require. + (batch-update-directory): Use it. + + * prim/update-elc.el: Allow for specification of packages that + must not be bytecompiled. Better error diagnostics if a package + is not found. + + * prim/window.el, prim/window-xemacs.el, prim/simple.el: + * prim/lisp.el, prim/frame.el: + Customizations/synch to Emacs 20.1. + * packages/hyper-apropos.el: Massive update. + From Hrvoje Niksic + + * tm/tm-vm.el (vm-menu-mail-menu): Fix typo. + + * packages/font-lock.el (lisp-font-lock-keywords-2): Add some new + functions. + From Karl M. Hegbloom + + * prim/files.el (save-some-buffers-query-display-buffer): New + user variable. + (save-some-buffers): Use it. + From David Bakhash + - Customization patches from Hrvoje Niksic. + + * prim/simple.el (kill-region): Undo sorting region limits patch. + +1997-06-20 Mike Scheidler + + * prim/tabify.el: Fixed 'untabify' to return 'nil value. + +1997-06-18 Steven L Baur + + * efs/dired-xemacs.el (dired-do-interactive-chmod): Advance point + after not failure. + From + + * utils/edmacro.el (edmacro-parse-word): make (kbd "M-123"), (kbd + "M--256") and such behave as documented. + From Hrvoje Niksic + + * prim/cus-start.el: Various additions to built-in variable list. + From Hrvoje Niksic + + * prim/subr.el: Remove mapvector. + (with-output-to-string): Use with-current-buffer. + (with-string-as-buffer-contents): Ditto. + From Hrvoje Niksic + + * modes/arc-mode.el (archive-quit): New function. + From Karl M. Hegbloom + (archive-mode-map): Bind it to `q'. + + * utils/autoload.el (cusload-file-name): Default to custom-load.el + for each individual file. + + * prim/minibuf.el (minibuffer-max-depth-exceeded): Use + `custom-file' as a location for saving enable multiple minibuffers + option. + + * packages/man.el (manual-entry): Don't leave empty buffer if + error occurs. + From Glynn Clements + + * modes/arc-mode.el (archive-arc-summarize): De-ebolify. + (archive-lzh-summarize): Ditto. + (archive-zip-summarize): Ditto. + (archive-zip-chmod-entry): Ditto. + +1997-06-17 Steven L Baur + + * prim/update-elc.el: Total rework for dynamic dumped .elc finding. + +1997-06-18 Hrvoje Niksic + + * prim/loaddefs.el (debug-ignored-errors): Initialize it. + +1997-06-17 Steven L Baur + + * prim/files.el (auto-mode-alist): Add /app-defaults/ as candidate + for xrdb-mode. + Suggested by Karl Hegbloom, Regexp by David Moore. + + * version.el: Remove variables emacs-version, emacs-major-version, + and emacs-minor-version. + + * tooltalk/tooltalk-load.el: Comment as obsolete and move contents + to dumped-lisp.el. + + * prim/make-docfile.el: New file. + +1997-06-16 Steven L Baur + + * prim/startup.el (load-user-init-file): Look for ~[user]/.xemacs + before loading .emacs. + + * modes/xrdb-mode.el (xrdb-mode): Autoload. + + * prim/files.el (auto-mode-alist): Add defaults for xrdb-mode. + + * leim/quail.el (quail-toggle-mode-temporarily): Guard against + possibility of quail-conv-overlay not being an overlay. + +1997-06-15 Steven L Baur + + * prim/loadup.el: Remove most but not all of the hardcoded dumped + lisp file names. + + * prim/dumped-lisp.el: New file. + + * prim/update-elc.el (toplevel): Rework using a better function to + determine autoload file locations. + + * prim/packages.el: New file. + + * prim/update-elc.el: Determine location and count of + auto-autoloads files at run-time. + + * prim/loaddefs.el (((dir load-path))): Generalize load of + auto-autoloads. + + * utils/autoload.el (autoload-file-name): New variable. + (autoload-target-directory): New variable. + (generated-autoload-file): Use them. + (cusload-file-name): New variable. + (generated-custom-file): Use it. + (batch-update-directory): New function. + +1997-06-14 Steven L Baur + + * mule/canna.el: Guard call to function dynamic-link, which + doesn't exist in XEmacs/Mule. + + * bytecomp/bytecomp.el (byte-compile-file): Suppress unavoidable + Ebola notices. + +1997-06-13 Steven L Baur + + * bytecomp/bytecomp.el (batch-byte-compile): Suppress unavoidable + Ebola notices. + (batch-byte-recompile-directory): Ditto. + + * utils/lib-complete.el (read-library): Look for .el.gz if not + using Mule. + (get-library-path): Ditto. + Suggested by Jonathan Doughty + + * packages/add-log.el: Restore backwards compatible date behavior + as an option. + Eliminate XEmacs specific autoloads. + From Hrvoje Niksic + + * efs/dired.el (dired-save-excursion): Ebola cleanup. + + * packages/hyper-apropos.el: Massive cleanup, Customize. + From Hrvoje Niksic + +Fri Jun 13 13:20:39 1997 Kyle Jones + + * prim/syntax.el (symbol-near-point): + Check for bobp and avoid (char-syntax (char-before)) if + there. + +1997-06-13 Steven L Baur + + * prim/rect.el (operate-on-rectangle): Correct boundary error. + From Bob Weiner + +1997-06-12 Steven L Baur + + * packages/ispell.el (ispell-command-loop): De-Ebolify. + + * x11/x-iso8859-1.el: Added Grave keysym. + From Heiko Muenkel + + * modes/make-mode.el (makefile-browse): Shouldn't be interactive. + From Hrvoje Niksic + + * prim/files.el (interpreter-mode-alist): ksh-mode is obsoleted by + sh-script. + From Hrvoje Niksic + +1997-06-11 Hrvoje Niksic + + * prim/subr.el (with-current-buffer): New macro. + (with-temp-file): Ditto. + + * bytecomp/byte-optimize.el (byte-optimize-form-code-walker): Test + for `save-current-buffer'. + + * bytecomp/bytecomp.el: Recognize `save-current-buffer'. + + * edebug/edebug.el: Register with-current-buffer and others. + + * modes/lisp-mode.el: Added specs for save-current-buffer, + with-output-to-string, with-current-buffer, with-temp-file and + with-output-to-temp-buffer. + +1997-06-13 MORIOKA Tomohiko + + * gnus/smiley.el (smiley-deformed-regexp-alist): Modify regexp for + horizontal smiley faces. + (smiley-nosey-regexp-alist): Add horizontal smiley faces. + +1997-06-13 MORIOKA Tomohiko + + * leim/quail.el (quail-get-translation): Don't use + `string-to-vector' for XEmacs. + +1997-06-11 Steven L Baur + + * prim/help.el (function-called-at-point): Use char-(after|before) + instead of (following|preceding)-char. + (variable-at-point): Ditto. + + * prim/simple.el (delete-indentation): Use char-(after|before) + instead of (following|preceding)-char. + (just-one-space): Ditto. + (backward-delete-char-untabify): Ditto. + (do-auto-fill): Ditto. + + * prim/paragraphs.el (end-of-paragraph-text): Use char-before + instead of preceding-char. + + * prim/misc.el (copy-from-above-command): Use char-(after|before) + instead of (following|preceding)-char. + + * prim/obsolete.el (preceding-char): Correct a typo. + + * prim/minibuf.el (minibuffer-electric-slash): Use char-(after|before) + instead of (following|preceding)-char. + (minibuffer-electric-tilde): Ditto. + + * prim/lisp.el (insert-parentheses): Use char-(after|before) + instead of (following|preceding)-char. + + * prim/indent.el (tab-to-tab-stop): Use char-(after|before) + instead of (following|preceding)-char. + (move-to-tab-stop): Ditto. + + * prim/fill.el (fill-end-of-sentence-p): Use + char-after/char-before instead of following-char/preceding-char. + (canonically-space-region): Ditto. + (fill-region-as-paragraph): Ditto. + (fill-region): Change (= char char) to (eq char char). + + * prim/debug.el (debugger-frame-number): Use char-after not + following-char. + (debugger-frame): Ditto. + (debugger-frame-clear): Ditto. + + * prim/case-table.el (invert-case): Use char-after not + following-char. + Clean up comments. + + * prim/syntax.el (symbol-near-point): Use char-before not + preceding-char. + + * prim/window.el (window-list): Update DOCstring. + From Noah Friedman + + * utils/uniquify.el (toplevel): Make version test match XEmacs v20. + + * tm/tm-ew-e.el: Clean up Ebola infection. + + * x11/x-compose.el: Various corrections + From Heiko Muenkel + +1997-06-10 Gary D. Foster + + * modes/view-less.el: Changed \177 bindings to 'delete + * modes/help.el: Changed \177 bindings to 'delete + +1997-06-10 Gary D. Foster + + * prim/keydefs.el: Changed all 'delete key bindings to point to + the `backward-or-forward-foo' functions. + * prim/simple.el: + - Renamed `delete-erases-forward' to `delete-key-deletes-forward'. + - Removed `backspace-or-delete-hook' + - Renamed `backspace-or-delete' to `backward-or-forward-delete-char' + - Added functions: `backward-or-forward-kill-word' + `backward-or-forward-kill-sentence' + `backward-or-forward-kill-sexp' + - Removed the zmacs hacks from all the `b-or-f-foo' functions and + began playing nicely with pending-del. + * modes/cc-mode.el: + * modes/cperl-mode.el: Fixed references to delete functions + to use the new names. + +1997-06-11 Karl M Hegbloom + + * ilisp/ilisp-def.el (toplevel): Changed `ilisp-prefix' from + "C-z" to "C-c" because of conflict with global key binding for + `iconify-frame'. + +1997-06-11 Steven L Baur + + * prim/window.el (window-list): New function. + Suggested by Noah Friedman + Modified by Hrvoje Niksic + + * utils/mail-extr.el (mail-extract-address-components): Replace + preceding-char with char-before. + + * utils/passwd.el (read-passwd-map): Clean up Ebola BS. + +1997-06-10 Steven L Baur + + * packages/supercite.el (sc-attribs-extract-namestring): Clean up + Ebola -- replace literal 32 with `?\ '. + + * utils/mail-extr.el (mail-extr-voodoo): Clean up Ebola -- replace + `following-char' with `char-after'. + +1997-06-10 Hrvoje Niksic + + * prim/subr.el (split-string): Make PATTERN optional. + +1997-06-11 MORIOKA Tomohiko + + * mule/language/misc-lang.el, mule/mule-load.el, + mule/ipa-hooks.el: Use lisp/mule/language/misc-lang.el instead of + lisp/mule/ipa-hooks.el; mule/ipa-hooks.el was deleted. + +1997-06-10 MORIOKA Tomohiko + + * mule/language/thai-util.el, mule/thai.el: Use + lisp/mule/language/thai-util.el instead of lisp/mule/thai.el; + lisp/mule/thai.el was deleted. + + * custom/wid-edit.el: Add widget `coding-system' for mule. + + * mule/thai-hooks.el, mule/mule-load.el: Use + lisp/mule/language/thai.el instead of lisp/mule/thai-hooks.el; + lisp/mule/thai-hooks.el was deleted. + + * mule/language/thai.el: modified for XEmacs. + +1997-06-09 MORIOKA Tomohiko + + * mule/language/misc-lang.el, mule/language/thai-util.el, + mule/language/thai.el, mule/language/tibetan.el, + mule/language/vietnamese.el, mule/language/japan-util.el, + mule/language/japanese.el, mule/language/korean.el, + mule/language/lao-util.el, mule/language/lao.el, + mule/language/english.el, mule/language/ethiopic.el, + mule/language/european.el, mule/language/greek.el, + mule/language/hebrew.el, mule/language/indian.el, + mule/language/chinese.el, mule/language/cyrillic.el, + mule/language/devanagari.el, mule/language/china-util.el: imported + from Emacs/mule-19.34.94-zeta. + + * mule/mule-load.el, mule/chinese-hooks.el, mule/chinese.el, + mule/cyrillic-hooks.el, mule/european-hooks.el, + mule/greek-hooks.el, mule/japanese-hooks.el, mule/korean-hooks.el: + chinese-hooks.el, chinese.el, cyrillic-hooks.el, + european-hooks.el, greek-hooks.el, japanese-hooks.el and + korean-hooks.el were deleted. + +1997-06-08 MORIOKA Tomohiko + + * apel/emu-x20.el (mime-charset-coding-system-alist): iso-8859-1, + hz-gb-2312, cn-gb-2312, gb2312, cn-big5 and koi8-r were defined as + coding-system. + +1997-06-09 Steven L Baur + + * prim/keydefs.el, modes/cc-mode.el, modes/cperl-mode.el, + vm/vm-vars.el: + Change usage of \177 to use keysym 'delete. + From Gary D. Foster + + * packages/etags.el (tags-loop-scan): Don't pass a straight string + to error as a format string. + Reported by Miles Duke + + * its/its-kata.el ((require 'egg)): Needed for bytecompilation. + + * its/its-hira.el ((require 'egg)): Needed for bytecompilation. + + * bytecomp/bytecomp.el (byte-compile-two-args-19->20): Correct an + ebolifaction. + From Kyle Jones + +1997-06-08 Steven L Baur + + * prim/files.el (auto-mode-alist): Restore bash regexps. + From "Barry A. Warsaw" + +1997-06-05 Steven L Baur + + * packages/jka-compr.el (jka-compr-write-region): Use 'binary + coding-system for compression. + Suggested by Katsumi Yamaoka + +1997-06-04 Gary D. Foster + + * modes/cc-mode.el: Modified `c-electric-delete' to honor the + desired delete direction in both normal and "hungry" modes. + * modes/cperl-mode.el: Modified `cperl-electric-backspace' to + honor the desired delete direction. + +1997-06-03 MORIOKA Tomohiko + + * x11/x-menubar.el (default-menubar): Add menu for Mule. + + * mule/mule-cmds.el: Menu for XEmacs were moved to + x11/x-menubar.el. + +1997-06-03 MORIOKA Tomohiko + + * leim/quail.el: to avoid compiling warnings about overlay.el. + +1997-05-16 Gary D. Foster + + * prim/simple.el: Created `backspace-or-delete' function and + `backspace-or-delete-hook' + * prim/keydefs.el: Changed \177 bindings to point to new + delete function. + * modes/*.el: Removed conflicting \177 bindings. + * modes/cc-mode.el: Modified `c-electric-delete' to use new + delete bindings. + * modes/cperl-mode.el: Modified `cperl-electric-backspace' to + use new delete bindings. + +1997-06-03 MORIOKA Tomohiko + + * leim/quail.el: to sync with quail.el of Emacs-19.34.94-epsilon. + + * leim/quail/ziranma.el, leim/quail/tonepy.el, leim/quail/py.el, + leim/quail/qj.el, leim/quail/sw.el, leim/quail/ccdospy.el, + leim/quail/punct.el, leim/quail/4corner.el, + leim/quail/symbol-ksc.el, leim/quail/ethiopic.el, + leim/quail/hanja.el, leim/quail/quick-cns.el, + leim/quail/tsangchi-cns.el, leim/quail/lrt.el, + leim/quail/tsangchi-b5.el, leim/quail/devanagari.el, + leim/quail/japanese.el, leim/quail/quick-b5.el, + leim/quail/punct-b5.el, leim/quail/qj-b5.el, leim/quail/py-b5.el, + leim/quail/ctlau.el, leim/quail/ctlaub.el, leim/quail/ecdict.el, + leim/quail/array30.el, leim/quail/hangul3.el, + leim/quail/hanja-jis.el, leim/quail/cyrillic.el, + leim/quail/etzy.el, leim/quail/greek.el, leim/quail/ipa.el, + leim/quail/lao.el, leim/quail/zozy.el, leim/quail/viqr.el, + leim/quail/latin.el, leim/quail/thai.el, leim/quail/hangul.el: + quail of LEIM for Emacs-19.34.94-epsilon. + +1997-06-04 Steven L Baur + + * prim/about.el: Installed new version 2.1. + From Hrvoje Niksic + + * prim/profile.el (pretty-print-profiling-info): Autoload don't + dump. + Clean up comments. + + * prim/update-elc.el: Comment cleanup. + + * modes/cperl-mode.el (cperl-mode-map): Restore previous + definition. + (cperl-electric-backspace): Use backspace-or-delete if it exists. + + * bytecomp/bytecomp-runtime.el (eval-when-feature): New macro. + From Roland McGrath + + * prim/glyphs.el (init-glyphs): Add xbm instantiator for 'x + consoles. + Suggested by Hrvoje Niksic . + + * utils/passwd.el: Eliminate obsolete Lucid emacs usage. + + * utils/timezone.el (timezone-make-date-arpa-standard): Correct + docstring. + (timezone-make-date-sortable): Ditto. + + * utils/passwd.el (passwd-invert-frame-when-keyboard-grabbed): + Change default for InfoDock. + + * utils/highlight-headers.el + (highlight-headers-follow-url-function): Correct docstring. + + * utils/finder.el (finder-known-keywords): Cleanup keyword + documentation. + + * prim/startup.el (command-line-do-help): Use emacs-name function + for printing the editor name. + + * prim/simple.el: Disable for InfoDock. + (display-warning): Disable for InfoDock. + (emacs-name): New function. + + * prim/toolbar.el (press-toolbar-button): Allow mouse presses on + blank portions of the toolbar to do something. + (release-and-activate-toolbar-button): Handle arbitrary functions + as toolbar callbacks. + From weiner@altrasoft.com + + * prim/mouse.el (default-mouse-track-cleanup-extent): Correct test + on dead-func extent. + + * prim/help.el (view-emacs-news): outl-mouse turned off in + InfoDock. + + * packages/tar-mode.el (tar-mode-map): InfoDock doesn't like the + mouse bindings. + + * packages/makesum.el (make-command-summary): Output correct + program name. + (double-column): Remove unused variable. + + * packages/hyper-apropos.el (hypropos-popup-menu): Synch with + infodock. Initialize command-p to either t or nil. + + * eterm/term.el (make-term): Fix docstring. + + * comint/shell.el: Correct comment. + + * comint/comint.el (comint-mode-map): Infodock doesn't like the + button3 assignment. + +1997-06-03 Steven L Baur + + * modes/lisp-mode.el (eval-interactive): Treat defcustom like + defvar (turn into an effective defconst). + + * cl/cl-macs.el (widget-get): Add defsetf method. + (widget-value): Add defsetf method. + From Hrvoje Niksic + +1997-06-02 Steven L Baur + + * prim/obsolete.el (insert-and-inherit): Make 'compatible not + 'obsolete. + Suggested by Hrvoje Niksic + (insert-before-markers-and-inherit): Ditto. + +1997-06-02 MORIOKA Tomohiko + + * mule/korean.el was abolished because it seems not to be used. + + * mule/japanese.el was abolished because it seems not to be used. + +1997-06-01 MORIOKA Tomohiko + + * tm/gnus-mime-old.el was abolished because XEmacs 20.3 has Gnus + 5.4. + + * tm/tm-edit.el: updated to 7.108. + + * tm/tm-view.el: updated to 7.83. + + * leim/quail.el: modified for XEmacs. + + * mule/mule-load.el, lisp/mule/mule-process.el: delete + mule-process.el because it is not used. + + * mule/european.el was abolished because it seems not to be used. + + * mule/mule-load.el: must load mule-cmds before setting for + language-environment. + + * mule/mule-cmds.el, lisp/mule/european-hooks.el: Modified + for LEIM. + + * mule/mule-cmds.el: Uncomment key definition for + `toggle-input-method'. + + * mule/mule-init.el: Comment out about `mule-keymap' (moved to + mule-cmds.el). + + * mule/mule-cmds.el: Uncomment about `mule-keymap' (moved from + mule-init.el). + + * tl/tl-atype.el: Don't require tl-str. + + * tl/tl-atype.el: Use atype.el of APEL. + + * tl/tl-list.el: Use alist.el of APEL. + +1997-05-31 MORIOKA Tomohiko + + * tl/richtext.el, tl/emu-x20.el, tl/emu-xemacs.el, + lisp/tl/emu.el, lisp/tl/emu-e19.el: moved to lisp/apel/. + + * tl/file-detect.el, tl/filename.el: replaced by APEL's. + + * mu/std11-parse.el, mu/std11.el: moved to lisp/apel/. + + * leim/quail.el: Add new quail.el (imported from Emacs + 19.34.94-epsilon). + + * leim/skk/skkdic.el: delete skkdic.el temporary because XEmacs + can not compile it. + + * leim/skk/skkdic.el, leim/quail/zozy.el, leim/quail/ziranma.el, + leim/quail/viqr.el, leim/quail/tsangchi-cns.el, + leim/quail/tsangchi-b5.el, leim/quail/symbol-ksc.el, + leim/quail/thai.el, leim/quail/tonepy.el, leim/quail/quick-cns.el, + leim/quail/sw.el, leim/quail/qj-b5.el, leim/quail/qj.el, + leim/quail/quick-b5.el, leim/quail/py-b5.el, leim/quail/py.el, + leim/quail/lao.el, leim/quail/latin.el, leim/quail/lrt.el, + leim/quail/punct-b5.el, leim/quail/punct.el, + leim/quail/hanja-jis.el, leim/quail/hanja.el, leim/quail/ipa.el, + leim/quail/japanese.el, leim/quail/hangul3.el, leim/quail/etzy.el, + leim/quail/greek.el, leim/quail/hangul.el, leim/quail/ethiopic.el, + leim/quail/devanagari.el, leim/quail/ecdict.el, + leim/quail/ctlau.el, leim/quail/ctlaub.el, leim/quail/cyrillic.el, + leim/quail/array30.el, leim/quail/ccdospy.el, + leim/quail/4corner.el: Add LEIM elisp files. + + * mule/mule-load.el, mule/mule-cmds.el: Add mule-cmds.el. + + * prim/simple.el (assoc-ignore-case): New function; imported + from Emacs/mule-19.34.94-epsilon. + +1997-06-02 Steven L Baur + + * modes/hideshow.el: Make it work again. + From Pete Ware + +Sat May 31 09:00:14 1997 David Moore + + * utils/text-props.el (set-text-properties): Was exiting + map-extents too early. + +1997-06-02 Steven L Baur + + * cl/cl-macs.el (frame-parameters): Tweaking frame configuration + defsetf's. + From Hrvoje Niksic + + * modes/vhdl-mode.el (vhdl-emacs-features): Allow recognition of + major version 20. + + * prim/simple.el (kill-region): Sort beginning and ending + endpoints to simplify logic. + From Hrvoje Niksic + +Tue May 27 13:42:57 1997 Ken Manheimer + + * packages/icomplete.el: + * Updated my email address - klm@python.org instead of klm@nist.gov. + + * Icomplete no longer installs itself when you load the package - + you have to invoke `icomplete-mode'. (Since it's autoloaded in + both emacs, you can just invoke the function.) + + * Integrated Emacs 19.34 and XEmacs 19.15 corrections (typos, + style, command revisions, etc). + + * Integrated immediate keybindings display. See + `icomplete-show-key-bindings', `icomplete-get-keys', and + `icomplete-completions'. + + * `icomplete-get-keys': Return keys bound in prior buffer to func name. + + * Added icomplete delay behavior, so completions don't intrude as + quickly for short input, with customization variables: + + `icomplete-max-delay-chars' - Maximum number of initial chars to + apply icomplete compute delay. + + `icomplete-compute-delay' - Completions-computation stall, used + only with large-number completions + + `icomplete-delay-completions-threshold' Pending-completions + number over which to apply icomplete-compute-delay + + * Provided `icomplete-exhibit' on `icomplete-minibuffer-setup-hook' + so icomplete behaves well with XEmacs GNUS. + +Fri May 30 18:39:01 1997 Hrvoje Niksic + + * prim/glyphs.el (init-glyphs): Minor regexp cleanup. + +1997-05-30 Steven L Baur + + * prim/simple.el (fsf:do-auto-fill): Remove unused variable. + (indent-for-comment): Use comment-indent-function instead of + obsolete variant. This is dumped with XEmacs! + + * packages/generic-sc.el (sc-next-operation): Remove unused + variable. + (sccs-insert-c-header): Ditto. + (ccase-new-revision-p): Ditto. + (sc-sensitize-menu): Ditto. + + * modes/auto-show.el (TopLevel): Tighten check on + dump-time initialization. + +1997-05-29 Steven L Baur + + * prim/format.el (format-alist): Change defconst to defvar. + From Richard Stallman + + (format-encode-region): Reduce bytecompiler warnings for bound but + unused variables. + (format-deannotate-region): Ditto. + (format-annotate-region): Ditto. + (format-annotate-single-property-change) Ditto. + + * utils/lib-complete.el: Clean up documentation in header. + + * prim/glyphs.el: Eliminate bytecompiler warnings. + (define-obsolete-pointer-glyph): Mark as 'compatible not 'obsolete. + + * prim/keydefs.el (ctl-x-map): Bind narrow-to-defun to `C-x n d'. + + * prim/lisp.el (narrow-to-defun): Narrow to the same defun that + `mark-defun' would make the region. + (insert-parentheses): Let a negative argument enclose preceding + sexps. + From Erik Naggum + + * prim/window-xemacs.el: New file, split from window.el with + XEmacs-specific stuff. + + * prim/window.el (display-buffer): Remove unused variable. + + * prim/keydefs.el (ctl-x-4-map): Add binding for + `kill-buffer-and-window'. + + * prim/window.el (kill-buffer-and-window): New command. + Bind it to C-x 4 0. + From Richard Stallman + + * prim/window.el (split-window-vertically): Don't change point in old + window if both the original point and the end of the buffer are + visible after splitting, when split-window-keep-point is nil. + From Noah Friedman + + * prim/files.el (revert-buffer-internal-hook): Declare. + + * utils/map-ynp.el: Synch with Emacs 19.34.94. + (map-y-or-n-p): Clean up bytecompiler warnings. + + * packages/generic-sc.el: Restored to distribution, comment + cleanup. + + * prim/simple.el (message-log-max): Add compatible variable alias + for `log-message-max-size'. + + * comint/background.el (background): Autoload. + + * prim/process.el (shell-command): background.el is now + autoloaded. + + * prim/minibuf.el: Clean up file header. + + * packages/bookmark.el (bookmark-menu-popup-paned-menu): Naive + port to XEmacs. + (bookmark-bmenu-other-window-with-mouse): Naive port to XEmacs. + + * utils/autoload.el (generated-custom-file): custom-load.el + renamed to cus-load.el. + + * prim/loadup.el: Don't preload custom-load.elc. + +Thu May 29 19:03:52 1997 Per Abrahamsen + + * x11/x-menubar.el (default-menubar): Updated customize entries. + +1997-05-29 Steven L Baur + + * prim/about.el (about-xemacs-xref): Update contributors list. + +1997-05-28 Steven L Baur + + * prim/minibuf.el (mouse-file-display-completion-list): Protect + against bogus directory becoming default. + (mouse-directory-display-completion-list): Ditto. + + From Per Abrahamsen + * bytecomp/bytecomp.el + (byte-compile-file-form-custom-declare-variable): New function. + (custom-declare-variable): Use it. + + * packages/vc.el (vc-directory): dirname typo'ed as dir. + + * packages/vc-hooks.el (vc-menu): Remove vc-file-status. + (Toplevel): Remove key definition for vc-file-status. + +1997-05-27 Steven L Baur + + * prim/cus-start.el (Toplevel): Rename factory-value to + standard-value for Custom-1.98. + +1997-05-26 Steven L Baur + + * prim/help.el (view-lossage-key-count): New variable. + (view-lossage-message-count): New variable. + (view-lossage): Use them. + + From Hrvoje Niksic + * prim/help.el (view-lossage): Use new argument to `recent-keys'. + + * cl/cl-macs.el (recent-keys-ring-size): New setf method. + +1997-05-26 Steven L Baur + + * prim/process.el (shell-command-to-string): Alias exec-to-string + to more logical name. + +1997-05-23 Steven L Baur + + * tm/tm-view.el (mime/content-decoding-condition): Add image/png + mime type. + + * tm/tm-image.el (toplevel): Add image/png mime type. + + * tm/tm-edit.el (mime-file-types): Add png handling. + (mime-content-types): Ditto. + +Thu May 22 04:19:09 1997 Martin Buchholz + + * prim/files.el (auto-mode-alist): Reorg. Support + pre-processed fortran files. *.m4 files now default to autoconf mode. + + * prim/about.el: Promote Hrvoje. Picture still needed... + + * modes/ksh-mode.el: _ has symbol syntax. + * modes/m4-mode.el: _ has symbol syntax. + * modes/pascal.el: _ has symbol syntax. + * modes/f90.el: _ has symbol syntax. + * modes/cperl-mode.el: _ has symbol syntax. + * modes/autoconf-mode.el: _ has symbol syntax. + +1997-05-22 Steven L Baur + + * prim/files.el (save-buffer): From Hrvoje Niksic. Don't clear + zmacs region. + + * packages/func-menu.el: Update for David Hughes' new email + address. + +1997-05-21 Noah Friedman + + * eldoc.el (eldoc-message-commands): Move docstring into comments, + since this isn't a user variable. + (eldoc-message-commands-table-size, eldoc-use-idle-timer-p, + eldoc-function-argstring-from-docstring-method-table): Use defvar, + not defconst. + (eldoc-last-data): Use cons explicitly; don't rely on dotted pair + read syntax. I'm worried the latter might get compiled as + read-only data someday. + (eldoc-docstring-message): If truncating symbol name, show ending + of name rather than beginning. The former is generally more unique. + (eldoc-function-argstring-from-docstring-method-table): Handle + pathological `save-restriction' case. + [top level]: Add `indent-for-tab-command' to eldoc-message-commands. + +1997-05-21 Steven L Baur + + * x11/x-menubar.el (default-menubar): strokes added to mouse + menu. + +Wed May 21 17:12:28 1997 Per Bothner + + * eterm/term.el (term-send-raw): Better XEmacs character event + handling. + * eterm/term.el (term-char-mode): Re-do Meta-handling by temporarily + setting meta-prefix-char to -1 while building keymaps. + (term-send-raw-meta): Removed. + +Tue Mar 11 20:15:26 1997 Kurt Hornik + + * eterm/term.el (term-completion-addsuffix): Doc fix. + (term-dynamic-complete-as-filename): Support the case where + term-completion-addsuffix is a (DIRSUFFIX . FILESUFFIX) cons + pair. + +Tue Jun 4 10:15:54 1996 Per Bothner + + * eterm/term.el: Add kd, kl, kr, du capabilities. + * eterm/e/eterm.ti: Add kcub1, kcuf1, kcuu1, kcud1 capabilities. + +Wed May 15 14:38:45 1996 Per Bothner + + * eterm/term.el (term-send-raw-string): send-string -> + process-send-string. + * eterm/term.el (term-arguments): Remove unused local 'values'. + * eterm/term.el (term-handle-deferred-scroll): Fix off-by-one bug, + + * eterm/term.el: Merge changes from FSF (mostly typos). + +Mon Sep 25 17:19:51 1995 Per Bothner + + * eterm/term.el (term-emulate-terminal): On CR, set + term-current-column to term-start-line-column, not 0. + +1997-05-21 Steven L Baur + + * packages/add-log.el (change-log-font-lock-keywords): Tweak + font-lock-keywords. + +1997-05-21 Erik Naggum + + * add-log.el (add-log-lisp-like-modes, add-log-c-like-modes, + add-log-tex-like-modes): New variables. + (add-log-current-defun): Use them instead of constant lists. + +1997-05-21 Steven L Baur + + * packages/add-log.el: Synch to Emacs 20.0. + + * prim/obsolete.el (read-minibuffer): Make compatible not obsolete. + (read-input): Ditto. + +Tue May 20 20:32:59 1997 Steven L Baur + + * prim/subr.el (buffer-substring-no-properties): Clean out extents + too. + +Mon May 19 19:48:35 1997 Steven L Baur + + * prim/process.el (shell-command-on-region): Remove region active + test (which played havoc with the hack in call-interactively to + place explicit calls to region-beginning and region-end in + interactive specs in the command history). + +Mon May 19 18:13:50 1997 Hrvoje Niksic + + * utils/easymenu.el (easy-menu-add): Check for existing, before + entering MENU to `easy-menu-all-popups'. + +Sun May 18 09:11:50 1997 Steven L Baur + + * prim/files.el (revert-buffer): Add optional third parameter to + preserve buffer modes (from Emacs 19.34.94). + (after-find-file): Add optional fifth parameter to preserve buffer + modes (from Emacs 19.34.94). + + * packages/vc.el: Synch with Emacs 19.34.94 because our version was + hopeless. + (vc-checkout): Autoload. + (vc-find-binary): Ditto. + + * prim/files.el (find-buffer-visiting): Restore because FSF vc.el + needs it. + +Fri Apr 25 13:21:46 1997 Per Abrahamsen + + * apropos.el (apropos): Add support for customization groups. + (apropos-print): Ditto. + +Sat May 17 19:56:31 1997 Glynn Clements + + * packages/man.el (manual-entry): Strip out stderr output. + +Sun May 11 18:24:25 1997 Kyle Jones + + * prim/modeline.el: new mouse-drag-modeline function. + Allows bottommost modeline to be dragged. + +Sat May 17 03:41:11 1997 Steven L Baur + + * cl/cl-macs.el: A whole bunch of XEmacs specific setf methods + from Hrvoje Niksic. + + * prim/files.el (auto-mode-alist): Don't copy to purespace. + (interpreter-mode-alist): Ditto. + +Fri May 16 21:43:35 1997 Steven L Baur + + * packages/info.el (Info-button1-follows-hyperlink): New variable. + (Info-maybe-follow-clicked-node): Use it. + + * prim/simple.el (transpose-preceding-chars): New function. + +Fri May 16 20:37:35 1997 Steven L Baur + + * version.el: Update minor version number. + +Mon May 12 13:47:37 1997 Oscar Figueiredo + + * tm/tm-vm.el: Provide for vm-unsaved-message having been removed + in recent versions of VM. + +Fri May 9 10:41:44 1997 Steven L Baur + + * iso/iso-acc.el (iso-accents-compose): Fix XEmacs 19.14 + compatibility (patch suggested by Hrvoje Niksic). + + * packages/man.el (manual-entry): (Patch from Soren Dayton) Allow + subchapters not to be trimmed on Solaris. + + * prim/itimer.el (itimer-edit-mode): Correct use of obsolete + function. + + * prim/startup.el: Update copyright notice. + +Thu May 8 14:35:34 1997 Steven L Baur + + * hm--html-menus/hm--html.el: Define obsolete aliases for the + previous function spellings. + + * hm--html-menus/hm--html-keys.el: Define obsolete aliases for the + previous variable spellings. + + * prim/obsolete.el (define-obsolete-variable-alias): Fix docstring + spelling. + (define-compatible-variable-alias): Ditto. + + * tm/tm-vm.el (vm-unsaved-message): Symbol doesn't exist any + more. + +Tue May 6 21:33:19 1997 Steven L Baur + + * mule/mule-files.el (write-region): Correct docstring. + + * prim/files-nomule.el (write-region): Correct docstring. + +Mon May 5 12:26:41 1997 Steven L Baur + + * prim/about.el (about-xemacs-xref): Infodock Associates is now + Altrasoft. + +Sat May 3 16:32:47 1997 Steven L Baur + + * efs/dired.el (dired-chown-program): chown program is in /bin on + Linux. + +Fri May 2 20:04:35 1997 Steven L Baur + + * egg/egg.el: paren.el needed at bytecompile time for + `pos-visible-in-window-safe' defsubst. + + * pcl-cvs/pcl-cvs.el (cvs-update): Inhibit dialog box usage in + call to cvs-do-update as this bombs when this function is invoked + from a menu. + +Wed Apr 30 18:06:35 1997 Steven L Baur + + * prim/loadup.el: Put features.elc in the dump list. + + * prim/about.el (about-xemacs): Change date. + +Tue Apr 29 18:51:31 1997 Steven L Baur + + * mule/mule-files.el (buffer-file-coding-system-alist): Regexp for + handling info files didn't match the right pattern. + +Sun Apr 27 18:09:48 1997 Steven L Baur + + * prim/sound.el (load-sound-file): Fix typo. + +Sat Apr 26 16:25:49 1997 Steven L Baur + + * utils/lib-complete.el: Make conformant to Lisp coding standards + MULE-ize by allowing for coding system argument. + +Fri Apr 25 08:39:50 1997 Steven L Baur + + * modes/sh-script.el (sh-indent-line): Deal with pathological case + of indenting a first line containing a `#' as first non-white + space character. + +Thu Apr 24 18:40:32 1997 Steven L Baur + + * comint/telnet.el (telnet-mode-map): Correct Emacs synch typo. + + * rmail/rmail.el (rmail-get-new-mail): display-time-string is not + necessarily a string. + +Thu Apr 24 11:08:28 1997 Kyle Jones + + * packages/balloon-help.el: + - default background color now grey80 to match XEmacs default. + - default border width is now 1. + - default font is now "variable" + - balloon-help can now handle variable width fonts. + - loading balooon-help no longer turns on balloon-help-mode. + - new `balloon-help' command. + - changes to the font/background/foreground variables now affect + the help frame at next display. + - help frame should now pop up on the correct display if XEmacs + is running with multiple devices open. + - Customized, courtesy of Hrvoje. + - don't use the padding lines that were needed for 19.12. + Compatibility with older XEmacs versions is hereby disavowed. + - xclock frame name hack is gone. + +Wed Apr 23 10:56:05 1997 Steven L Baur + + * prim/files.el (hack-local-variables-prop-line): Mistakenly + returned t when enable-local-variables was nil. + + * psgml/psgml-charent.el (sgml-display-char-list-filename): Move + iso88591.map to a proper location. + + * prim/sound.el (load-sound-file): Make sure sound files are read + as binary files. + +Tue Apr 22 02:05:38 1997 Steven L Baur + + * packages/vc.el (vc-directory): Set text properties. + + * psgml/psgml-xemacs.el (sgml-xemacs-get-popup-value): Allow for + interactive commands. + +Mon Apr 21 15:15:12 1997 Steven L Baur + + * prim/minibuf.el (input-error): New error type. + (read-from-minibuffer): Use it. + + * comint/comint.el (comint-exec-hook): Do not Customize due to + interactions with setting language environment in MULE. + +Sun Apr 20 09:36:19 1997 Steven L Baur + + * packages/info.el (Info-footnote-tag): Changing the footnote tag + from the default "Note" is broken. + +Tue Apr 22 07:01:20 1997 Hrvoje Niksic + + * prim/keydefs.el (global-map): Bind it to `C-z'. + + * prim/frame.el (suspend-emacs-or-iconify-frame): New function. + +Fri Apr 18 16:45:07 1997 Steven L Baur + + * utils/skeleton.el (skeleton-pair-insert-maybe): Guard test with + existence check on mark-active too. + (skeleton-proxy): Ditto. + (skeleton-proxy-new): Ditto. + +Fri Apr 18 09:26:24 1997 Dave Gillespie + + * cl/cl-macs.el (values): New setf-method. + +Thu Apr 17 21:29:57 1997 Bob Weiner + + * packages/avoid.el (mouse-avoidance-kbd-command): Correct + detection of keypress. + +Thu Apr 17 21:20:04 1997 Michael McNamara + + * modes/verilog-mode.el: Changes to 2.25 + 1) Autoindent a new declaration according to the previous + declaration, if any. Only use the previous one, don't try to re + line things up. + 2) Include "Customize Verilog-Mode" in the Verilog menu bar. Make it + safe to do so, even if the underlying emacs does not yet support + custom. + 3) Include keybinding C-c C-b for reporting bugs. + 4) Include keybinding C-c i for reindenting declarations. + + * modes/verilog-mode.el: Changes to 2.24 + Cleaned up menubar items; added submit bug report there, for + example. + + * modes/verilog-mode.el: Changes to 2.23 + 1) Support custom (XEmacs) or defvar method of customization. + 2) fix verilog-pretty declarations + 3) add support so folks turning up the complexity of commenting don't + get errors (they don't get any more complexity either) + + * modes/verilog-mode.el: Changes to 2.22 + 1) Moved installation hints to the web page. + 2) Added support for XEmacs's custom variable setting package. + 3) Added variables to separatly control indentation of + module level items (always, initial. etc) + declarations + behavorial (the begin in the task & function declaration + 4) Attempted to shorten comments and lisp so that the %@* NT + mailers won't turn long comments into extra code. + 5) Used make-regexp to optimize many regular expressions so that they + are no longer backtrack. + 6) fixed bugs + a) a newline on a blank line no longer generates two new lines. + b) a semicolon on a comment no longer auto indents + c) lines like ''else if (a) begin'' + no longer confuse auto commenter + d) a number of other bugs which fail to come to mind... + 7) Added support for menu pulldowns on FSF and XEmacs + 8) Added support for XEmacs v20 + 9) Changed verilog-comment-region to insert comments that Verilog-XL + doesn't b*tch about. + 10) Eliminated auto lineup of declarations upon typing newline of + semicolon. (Cheers all around) Now instead there is a command, and + also a menu pulldown, which lines up indentations around point. + 11) Added verilog-submit-bug-report + +Mon Apr 14 13:06:10 1997 Steven L Baur + + * utils/autoload.el (generate-file-autoloads-1): Turn off local + variable processing. + + * prim/files.el (hack-local-variables-prop-line): Respect setting + of enable-local-variables. + + * vm/vm-startup.el (vm-session-initialization): Remove for + production version. + + * utils/smtpmail.el (smtpmail-send-it): Forgot quote. + (smtpmail-deduce-address-list): case-fold-search mistakenly set + before buffer change. + +Sun Apr 13 14:49:34 1997 Steven L Baur + + * x11/x-menubar.el (default-menubar): Added `send-pr' to Help + menu. + + * modes/make-mode.el (makefile-font-lock-keywords): Correct old, + restored :-( 19.14 makefile-space-face lossage. + +Sat Apr 12 23:20:31 1997 David Moore + + * packages/font-lock.el (c-font-lock-keywords-1): Performance + tuned regexps. + +Sat Apr 12 21:32:37 1997 Steven L Baur + + * prim/about.el (about-xemacs): Update printed release date. + + * calendar/appt.el (install-display-time-hook): Friends don't let + Friends quote lambda functions. + +Fri Apr 11 11:50:14 1997 Oscar Figueiredo + + * tm/tm-vm.el: tm-vm/use-original-url-button: + - Default is now t (principle of least surprise). + (tm-vm/build-preview-buffer): + - Bind vm-message-pointer in Preview-buffer. + - X-Face was not displayed for a certain set of enabling variables. + Calls to (vm-xemacs-p) were removed. + +Sat Apr 12 05:27:56 1997 Steven L Baur + + * modes/list-mode.el (list-mode-item-mouse-selected): Sometimes + event-closest-point returns nil. + + * comint/telnet.el (telnet-check-software-type-initialize): + Restore 19.14 initialization of telnet-prompt-pattern for Unix. + (rsh): Allow a way to get back old password-less behavior. + + * edebug/edebug.el (edebug-read-and-maybe-wrap-form): Protect + against pathological recursive calls. + + * prim/loadup.el: add cus-start as dumped package. + + * packages/vc.el (vc-directory): Dired requires a list not a + string of space separated names. + + * utils/live-icon.el (live-icon-colour-name-from-face): `face' may + be a list of faces since it is generated by `extent-face'. + +Fri Apr 11 21:12:57 1997 Steven L Baur + + * packages/ispell.el: Don't attempt creation of the menubar unless + XEmacs has been compiled with menubars. + + * prim/simple.el (yank-pop): mark-marker needs optional force + parameter to activate the region (suggested by Jamie Zawinski). + +Fri Apr 11 17:47:26 1997 Per Abrahamsen + + * packages/apropos.el (apropos): Add support for faces, widgets, + and user options. + (apropos-print): Ditto. + +Fri Apr 11 01:23:45 1997 Steven L Baur + + * prim/loadup.el (running-xemacs): Declare. This variable is the + new canonical way of determining whether you're running under + XEmacs. + +Thu Apr 10 13:23:14 1997 Steven L Baur + + * packages/font-lock.el (font-lock-apply-highlight): Remove + support for back to back font hack (and restore correct + fontification of `int a, b, c;'). Patch from Anders Lindgren. + + * prim/about.el (about-xemacs-xref): Forgot to link David Moore's + picture (oops). + +Thu Apr 10 12:30:29 1997 Per Abrahamsen + + * efs/dired-faces.el (dired): Move to environment group. + +Wed Apr 9 19:45:46 1997 Per Abrahamsen + + * x11/x-menubar.el (default-menubar): Inline definition of + customize menu. + +Wed Apr 9 10:45:54 1997 Steven L Baur + + * prim/about.el (about-xemacs-xref): Add Jan Vroonhof to list of + contributors. + (about-xemacs-xref): Add MORIOKA Tomohiko's bio. + (about-xemacs-xref): Add Per Abrahamsen. + +Tue Apr 8 12:57:05 1997 Steven L Baur + + * modes/lisp-mode.el (eval-defun): Evaluate defcustom in defconst + style instead of defvar style (patch derived from Emacs 19.35/Lars + Magne Ingebrigtsen). + +Mon Apr 7 16:38:43 1997 Steven L Baur + + * prim/frame.el (temp-buffer-shrink-to-fit): Default to nil since + this feature has gotten broken. + +Sun Apr 6 06:56:03 1997 Steven L Baur + + * modes/outl-mouse.el (outline-down-arrow-mask): Set up arrow + glyphs to display on when no X11 support is available. + + * modes/outline.el (outline-install-menubar): short circuit if no + menubars are available. + + * x11/x-menubar.el (default-menubar): Use xmine not mine. + + * prim/help.el (describe-variable): Some doc strings weren't being + terminated with a newline. + +Sat Apr 5 20:20:00 1997 Steven L Baur + + * prim/about.el (about-xemacs-xref): Correct Jareth Hein's links. + +Sat Apr 5 13:18:05 1997 Tomasz J. Cholewo + + * packages/etags.el (tags-query-replace): Fixed DELIMITED argument + bug. `with-caps-disable-folding' moved to isearch-mode.el. + + * packages/info.el (Info-search): Use `with-caps-disable-folding'. + +Sat Apr 5 09:32:43 1997 Steven L Baur + + * utils/finder-inf.el: Regenerated. + + * utils/finder.el (finder-known-keywords): Add mule keyword. + +Tue Apr 1 14:08:04 1997 Steven L Baur + + * prim/winnt.el: New file. Derived from Emacs 19.34, adapted by + Marc Paquette. + + * prim/faces.el (set-face-stipple): Allow usage of a pixmap + (suggested by Per Abrahamsen). + + * mule/canna.el (running-xemacs): Move to the top. + + * prim/cmdloop.el (y-or-n-p-minibuf): Add protection in case user + hits something that can't be bound to a key. + +Tue Apr 1 11:25:33 1997 Martin Buchholz + + * bytecomp/bytecomp.el (char-after): Correct coding of calling + sequence. + +Mon Mar 31 21:36:47 1997 Kyle Jones + + * prim/faces.el (set-face-stipple): New function. + +Sat Mar 29 14:52:02 1997 Steven L Baur + + * gnats/send-pr.el (send-pr:submit-pr): Pass send-pr:datadir in + the environment to send-pr. + (send-pr::insert-template): Ditto. + (send-pr:default-site): Default submission address is at xemacs.org. + +Fri Jul 19 12:01:51 1996 Christoph Wedler + + * packages/info.el (Info-elisp-ref): Look first in lispref, then + elisp. + + * packages/func-menu.el (fume-function-name-regexp-bibtex): `,' + isn't allowed. + + * packages/etags.el (list-tags): Interactive argument should be an + existing file name. + +Wed Mar 26 22:33:40 1997 Steven L Baur + + * Remove ns lisp directory. + * Remove vms lisp directory. + +Tue Mar 25 12:22:57 1997 Steven L Baur + + * prim/files.el (file-remote-p): Update doc string. + + * packages/terminal.el (te-stty-string): Fix definition for Linux. + +Mon Mar 24 23:43:53 1997 Steven L Baur + + * prim/files.el (file-remote-p): Correct documentation and allow + for `allow-remote-paths' to control loading of efs. + +Sun Mar 23 16:58:08 1997 Tomasz J. Cholewo + + * packages/etags.el (with-caps-disable-folding): New macro. + (find-tag-internal): Use it. + (tags-search): Use it. + (tags-query-replace): Use it. Case bug corrected. + +Mon Mar 24 00:47:38 1997 Steven L Baur + + * x11/x-menubar.el (popup-mode-menu): Change guard when stripping + keywords to be more robust. + +Sun Mar 23 00:26:53 1997 Steven L Baur + + * prim/startup.el (splash-hack-version-string): Correct for case + of hosts with '-' in the names. + +Sat Mar 22 14:25:47 1997 Tomasz J. Cholewo + + * modes/sendmail.el (user-mail-address): Require cus-edit. + Fix when scope. + +Sat Mar 22 14:25:47 1997 Tomasz J. Cholewo + + * calendar/diary-lib.el (diary-countdown): New function. + (fancy-diary-display): Use modeline-buffer-identification. + + * calendar/appt.el (appt-diary-entries): Do not display diary. + (appt-check): Display diary buffer at midnight. + +Fri Mar 21 19:16:46 1997 Steven L Baur + + * mule/mule-coding.el (enable-multibyte-characters): MULE + compatible variable. + +Thu Mar 20 13:28:17 1997 Steven L Baur + + * bytecomp/bytecomp.el (byte-compile-output-docform): Ebola fix. + (byte-compile-lambda): Ebola fix. + + * prim/obsolete.el (following-char): Make this turkey obsolete. + (preceding-char): Ditto. (Suggested by Richard Mlynarik). + +Wed Mar 19 10:12:09 1997 Steven L Baur + + * modes/sendmail.el (sendmail-send-it): Use function for + user-mail-address. + (user-mail-address): Autoload. + + * pcl-cvs/pcl-cvs.el (cvs-changelog-ours-p): Use function for + user-mail-address. + + * prim/startup.el (load-init-file): Only set user-mail-address if + non-interactive. + + * utils/smtpmail.el (smtpmail-send-it): Use function for + user-mail-address. + (smtpmail-via-smtp): Ditto. + + * packages/add-log.el (add-log-mailing-address): Use new function + to obtaion email address. + (add-change-log-entry): Ditto. + + * prim/device.el (device-pixel-depth): New alias for + `device-bitplanes'. + + * comint/comint-xemacs.el (comint): Fix typo in defgroup. + +Tue Mar 18 11:16:28 1997 Steven L Baur + + * prim/loadup.el: ls-lisp doesn't exist now. + + * comint/comint-xemacs.el (comint): Touch up fixes from Per + Abrahamsen. + + * prim/glyphs.el (subwindow-image-instance-p): Change doc string + to reflect unimplemented status. + +Mon Mar 17 15:34:06 1997 Steven L Baur + + * comint/comint.el (comint-input-setup): Require comint-xemacs. + + * utils/autoload.el (autoload-snarf-defcustom): Don't snarf from + auto-autoloads.el. + + * comint/comint-xemacs.el: New file. Contains face declarations + for comint. + + * comint/comint.el: Remove inline defface. + +Sat Mar 15 15:14:06 1997 Steven L Baur + + * prim/loadup.el: Add prim/auto-customize.elc to dumped files. + + * utils/autoload.el (generated-custom-file): New variable. + (autoload-snarf-defcustom): New function. Grab Customization as + we look for autoload cookies. (based on code by Per Abrahamsen). + (update-file-autoloads): Use it. + (autoload-save-customization): New function (based on code by Per + Abrahamsen). + (batch-update-autoloads): Use it. + +Fri Mar 14 20:00:00 1997 Jareth Hein + + * prim/fill.el: added functions for kinsoku (Asian text line + break processing). + +Fri Mar 14 19:59:36 1997 Bob Weiner + + * packages/jka-compr.el (jka-compr-installed-p): Simplify. + +Fri Mar 14 17:24:30 1997 Steven L Baur + + * modes/sendmail.el: Correct vm macro hack. + (query-user-mail-address): New customizable variable. + (user-mail-address): New function, use it. (Courtesy of Per + Abrahamsen ). + +Thu Mar 13 18:49:50 1997 Steven L Baur + + * x11/x-menubar.el (popup-mode-menu): Do something more correct + when combining a global popup menu and a local mode menu. + +Thu Mar 13 08:36:35 1997 Adrian Aichner + + * packages/crypt.el (crypt-unix-to-dos-region): Correct DOC string. + +Wed Mar 12 13:46:21 1997 Steven L Baur + + * prim/obsolete.el (char=): Make alias for common lisp + compatibility. + +Mon Mar 10 09:44:05 1997 Steven L Baur + + * prim/simple.el (set-fill-column): Clean up docstring. + + * x11/x-menubar.el (save-options-non-customized-face-list): Allow + save-options to save faces declared with defface macro. + + * packages/vc.el: diff-switches is autoloaded again in diff.el. + + * packages/diff.el (diff-switches): Default to "-c". + +Sun Mar 9 18:44:59 1997 Tomasz J. Cholewo + + * prim/help.el (describe-function-1): Add missing stream arguments + to terpri and princ. + +Sun Mar 9 15:38:29 1997 Steven L Baur + + * prim/modeline.el (modeline-minor-mode-menu): Evaluate minor + modes in context of correct buffer. + + * prim/help.el (locate-library): Synched with Emacs 19.35. + + * packages/icomplete.el (icomplete-get-keys): Make it work. + + * prim/about.el: Add Jens Lautenbacher's picture. + +Sun Mar 9 12:38:53 1997 Noah Friedman + + * utils/eldoc.el (eldoc-pre-command-refresh-echo-area): Use + eldoc-display-message-p, not eldoc-display-message-no-interference-p. + +Sat Mar 8 11:20:47 1997 Steven L Baur + + * prim/startup.el (startup-splash-frame-body): More text tweaking. + + * x11/x-faces.el (*try-oblique-before-italic-fonts*): New user + variable. Allow trying oblique fonts ahead of italic fonts (from + Raymond Toy). + (x-make-font-italic): Use it. + + * prim/obsolete.el (window-system): Make it compatible not + obsolete. + +Fri Oct 11 14:21:05 1996 Christoph Wedler + + * packages/hyper-apropos.el (hypropos-get-doc): Put font names etc in + parentheses if instantiation uses fallback. + (hypropos-face-history): New variable. + (hyper-describe-face): New function. + (hyper-where-is): New command. + (hypropos-read-function-symbol): New function. + (hyper-describe-key): New command. + (hyper-describe-key-briefly): New command. + (hypropos-read-variable-symbol): New function. + (hyper-set-variable): New command. + (hypropos-set-variable): Changed to work with buffer-locals. + +Fri Jul 19 12:01:51 1996 Christoph Wedler + + * packages/hyper-apropos.el: Massive changes--the original knew nothing + about buffer-locals and local-bindings. + (hypropos-shrink-window): New user option. + (hypropos-ref-buffer): New variable. + (hypropos-regexp-history): New variable. + (hyper-apropos): Better interactive version. + (hypropos-grok-variables): Omit OBSOLETE stuff. + (hyper-describe-variable): Additional ARG, better interactive + version. + (hyper-describe-function): Ditto. + (hypropos-last-help): Without prefix arg, just display buffer. + (hypropos-insert-face): New function. + (hypropos-insert-keybinding): New function. + (hypropos-get-doc): Additional ARG, display documentation for + faces, complete change. + (hypropos-this-symbol): Using better regexp. + +Fri Mar 7 10:44:48 1997 Steven L Baur + + * x11/x-menubar.el (default-menubar): Reorganize again undoing + previous change. Customize submenu moved to top of options menu. + Edit faces restored to edit-faces and renamed to Browse faces. + +Thu Mar 6 08:43:27 1997 Steven L Baur + + * x11/x-menubar.el (options-menu): New variable. + (default-menubar): Use it. + + * prim/about.el (view-less): Explicit require. + +Wed Mar 5 18:03:02 1997 Steven L Baur + + * prim/cleantree.el: New file based on suggestion by David Moore, + and derived from Gnus nnml code. + +Tue Mar 4 01:19:37 1997 Hrvoje Niksic + + * edebug/edebug.el (edebug-compute-previous-result): Don't treat + numbers as chars. + +Wed Mar 5 10:11:55 1997 Steven L Baur + + * prim/startup.el (splash-hack-version-string): New function to + narrow the output of (emacs-version) for the splash screen. + (splash-frame-present): Use it. + +Tue Mar 4 19:52:10 1997 Steven L Baur + + * packages/supercite.el (sc-name-filter-alist): (Idea from Bob + Weiner). Update to handle names like Michael Sperber + [Mr. Preprocessor]. + +Mon Mar 3 17:50:04 1997 Per Abrahamsen + + * prim/faces.el (init-face-from-resources): New variable. + (init-face-from-resources): Use it. + (init-device-faces): Use it. + (init-frame-faces): Use it. + (make-empty-face): New function. + + * x11/x-faces.el (x-init-face-from-resources): Made second + argument optional, and added a third argument. + (make-face-x-resource-internal): New alias. + +Mon Mar 3 14:45:16 1997 Steven L Baur + + * prim/loadup.el: Remove custom.elc. + + * prim/simple.el (newline): Attempt to not add newline to a + previous end-open extent. + +Sun Mar 2 10:10:31 1997 Steven L Baur + + * hm--html-menus/tmpl-minor-mode.el (tmpl-sign): Remove nul byte. + + * site-load.el: Move site-packages to the top level. + +Sun Mar 2 01:37:04 1997 Hrvoje Niksic + + * utils/mail-extr.el (all-top-level-domains): Added "hr" domain. + + * packages/ps-print.el (ps-print-color-p): Default to nil. + + * x11/x-menubar.el (default-menubar): Changed menubar entry for + color printing. + + * prim/faces.el (init-other-random-faces): Use gray65 for + zmacs-region and primary-selection background. + + * x11/x-faces.el (x-init-global-faces): New default background + gray80. + +Sat Mar 1 14:38:14 1997 Hrvoje Niksic + + * packages/diff.el: (diff): Autoload. + (diff-backup): Autoload. + (diff-switches): Autoload. + +Sat Mar 1 01:09:08 1997 Steven L Baur + + * packages/tar-mode.el (tar-mode-map): Removed extraneous C-c + binding of tar-copy. + + * prim/keydefs.el: Don't disable upcase-region and + downcase-region. + +Fri Feb 28 11:22:29 1997 Steven L Baur + + * prim/obsolete.el (char-to-int): Define as alias to `char-int'. + + * prim/help.el (describe-function-1): Show annotation contents if + they exist. + + * packages/man.el (Manual-mode): Don't turn off scrollbars if + XEmacs doesn't have them to begin with. + + * prim/keydefs.el: Don't disable eval-expression by default now + that it is harder to type. + +Thu Feb 27 13:06:41 1997 Steven L Baur + + * prim/subr.el (with-string-as-buffer-contents): Moved from + mule/mule-coding.el. + + * mule/mule-coding.el: Remove with-string-as-buffer-contents. + + * prim/format.el (format-insert-file): Correct wrong order of args + passed to format-decode. + + * prim/startup.el (load-user-init-file): Allow XEmacs to read a + bytecompiled .emacs if it exists. + +Thu Feb 27 17:41:57 1997 Per Abrahamsen + + * subr.el (eval-after-load): Enable. + (eval-next-after-load): Ditto. + +Thu Feb 27 10:59:05 1997 Steven L Baur + + * prim/subr.el (with-temp-buffer): New function from Emacs 19.35, + courtesy of Erik Naggum . + +Fri Feb 28 22:17:03 1997 Hrvoje Niksic + + * prim/isearch-mode.el: Added "_" to the `interactive' forms of + most functions. + (isearch-mode-map): Define M-y. + (isearch-yank-kill): New function. + + * prim/keydefs.el: Don't bind `C-x C-n' to `set-goal-column'; + don't disable `set-goal-column'. + + * mule/mule-init.el (ctl-x-map): Use `C-x C-n' as mule-prefix, + instead of `C-x C-k'. + +Wed Feb 26 18:09:56 1997 Andreas Jaeger + + * x11/x-menubar.el (default-menubar): `FAQ' should be `FAQ + (local)' in Help menu. + +Mon Feb 24 18:33:38 1997 Martin Buchholz + + * mule/mule-debug.el (describe-coding-system): Ported from + Mule to XEmacs. + + * mule/mule-x-init.el (x-use-halfwidth-roman-font): New + function: + "Maybe set charset registry of the 'ascii charset to ROMAN-REGISTRY. + + Do this only if: + - the current display is an X device + - the displayed width of FULLWIDTH-CHARSET is twice the displayed + width of the 'ascii charset, but only when using ROMAN-REGISTRY. + + Traditionally, Asian characters have been displayed so that they + occupy exactly twice the screen space of ASCII (`halfwidth') + characters. On many systems, e.g. Sun CDE systems, this can only be + achieved by using a national variant roman font to display ASCII." + +Sun Feb 23 12:56:28 1997 Steven L Baur + + * edebug/edebug.el: Synch up with Emacs 19.34. + + * prim/itimer-autosave.el (auto-save-timeout): Increase to 960. + +Sat Feb 22 17:11:31 1997 Steven L Baur + + * prim/loadup.el: Dump new file itimer-autosave.el. + +Sat Feb 22 17:06:32 1997 Kyle Jones + + * prim/itimer.el: Cleanup, removal of autosave cruft. + +Fri Feb 21 09:41:44 1997 Steven L Baur + + * prim/simple.el (line-move-ignore-invisible): Reverse previous + change to make this default to nil again. + +Thu Feb 20 14:30:50 1997 Jamie Zawinski + + * prim/files.el (hack-local-variables-prop-line): New version. + +Thu Feb 20 11:14:22 1997 Steven L Baur + + * prim/files.el: Delete definition of dired-kept-versions. + + * prim/about.el (about-xemacs-xref): Added Kyle's picture. :-) + +Wed Feb 19 15:47:47 1997 Steven L Baur + + * packages/vc.el (diff-switches): Restore since this global + variable went away with the passing of ange-ftp. + + * utils/autoload.el (generate-file-autoloads-1): Don't let + find-file-hooks be run. + (update-file-autoloads): Ditto. + (update-autoloads-from-directory): Ditto. + + * x11/x-menubar.el (default-menubar): Correct unguarded reference + to fast-lock-mode variable. + +Wed Feb 19 08:04:02 1997 Noah Friedman + + * utils/eldoc.el (eldoc-message-commands): Doc fixes. + (eldoc-message): Make function, not macro. + + * utils/eldoc.el (eldoc-last-message): New internal variable. + (eldoc-mode): Initialize it to nil. + (eldoc-message): Use it. + (eldoc-print-current-symbol-info): Use it. + + * utils/eldoc.el (eldoc-pre-command-refresh-echo-area): New function. + (eldoc-mode): Put it on pre-command-hook if in XEmacs or using + idle timers in Emacs. + + * utils/eldoc.el (eldoc-message-commands-table-size): New constant. + (eldoc-add-command): Use it to initialize eldoc-message-commands. + + * utils/eldoc.el (eldoc-display-message-no-interference-p): New + function. + (eldoc-display-message-p): Use it. + + * utils/eldoc.el (eldoc-print-fnsym-args, eldoc-print-var-docstring): + Arg sym no longer optional. + Do not initialize arg if nil. + + * utils/eldoc.el (eldoc-forward-sexp-safe): Function deleted. + (eldoc-beginning-of-sexp): New function. + (eldoc-fnsym-in-current-sexp): Use eldoc-beginning-of-sexp. + Use eldoc-current-symbol to get symbol at point. + + * utils/eldoc.el + (eldoc-function-argstring-from-docstring-method-table): Forge + docstrings for `and', `or', `list', `+', and `-'. + + * utils/eldoc.el (eldoc-add-command-completions): New function. + (eldoc-add-command): Take list of args. + No longer interactive. + (eldoc-remove-command-completions): New function. + (eldoc-remove-command): Take list of args. + No longer interactive. + + * utils/eldoc.el: Initialize eldoc-message-commands using + eldoc-add-command-completions. + + * utils/eldoc.el (eldoc-display-message-p): New function. + Return nil if cursor-in-echo-area, or using idle timers and a + command is still active. + (eldoc-print-current-symbol-info): Use eldoc-display-message-p. + +Tue Feb 18 14:20:01 1997 David Byers + + * packages/paren.el (paren-highlight): Minor typo correction. + +Tue Feb 18 13:05:33 1997 Steven L Baur + + * prim/loadup.el: Dump new file custom-xmas. + +Mon Feb 17 21:01:38 1997 Steven L Baur + + * prim/help.el (function-compatible-p): New function. + (function-compatibility-doc): New function. + (describe-function-1): Use them. + (variable-compatible-p): New function. + (variable-compatibility-doc): New function. + (describe-variable): Use them. + +Mon Feb 17 19:12:55 1997 Per Abrahamsen + + * prim/obsolete.el (x-color-values): Added for Emacs + compatibility. + +Mon Feb 17 18:11:24 1997 Michael Kifer + + * prim/files.el (file-remote-p): Force load of EFS if not already + loaded. + +Mon Feb 17 17:45:23 1997 Bob Weiner + + * modes/lisp-mode.el (eval-last-sexp): Do something special if + evaluating (interactive ...). + +Sun Feb 16 21:49:18 1997 Bjorn Victor + + * utils/facemenu.el (facemenu-adjust-face-sizes): Strip size when + face is neither nil nor cons. + +Sun Feb 16 14:26:03 1997 Steven L Baur + + * prim/loadup.el: Try not dumping font.elc. + + * prim/obsolete.el (display-column-mode): Remove column.el and + leave a forwarding address. + +Sat Feb 15 23:21:11 1997 Kyle Jones + + * prim/minibuf.el (read-from-minibuffer): Don't put evaluated + expressions in the minibuffer history list. + +Sat Feb 15 22:57:11 1997 Steven L Baur + + * packages/scroll-in-place.el (scroll-signal-boundary-error): + Allow user to suspend error signals. + +Sat Feb 15 21:43:49 1997 John Turner + + * packages/column.el (current-line): Correct defaults for starting + at 1, remove an obsolete variable. + +Sat Feb 15 20:17:46 1997 Hal Peterson + + * packages/vc.el (vc-backend-print-log): Change `cvs rlog' to + `cvs log' + +Mon Feb 17 02:01:27 1997 Hrvoje Niksic + + * utils/edmacro.el (edmacro-format-keys): Would bug out on empty + macro. + +Mon Feb 17 02:01:27 1997 Hrvoje Niksic + + * utils/edmacro.el (edmacro-format-keys): Would bug out on empty + macro. + (edmacro-fix-menu-commands): Would bug out on 'control, etc. + (edmacro-events-to-keys): New function. + (edmacro-format-keys): Use it. + (edmacro-finish-edit): Compare to macros, not strings. + (edmacro-fkeys): New function. + (edmacro-format-keys): Use it. + (edit-kbd-macro): Tweak. + +Sat Feb 15 13:58:14 1997 Kyle Jones + + * packages/info.el: Don't call switch-to-buffer if the Info frame + is being deleted. + +Sat Feb 15 12:07:46 1997 Steven L Baur + + * prim/simple.el (previous-line): Allow escape from signaled error + on buffer boundary. + (next-line): Ditto. + +Sat Feb 15 11:05:29 1997 Kyle Jones + * utils/redo.el: made before and after status messages so that + the user is aware if a long action is still being processed. + + rolled version number up to 1.00, since the package seems to be + stable. + + cosmetic changes so the file could be included in the XEmacs + distribution. + +Sat Feb 15 11:13:05 1997 Hrvoje Niksic + + * prim/simple.el (line-move-ignore-invisible): Change default to + t. + +Sat Feb 15 01:04:21 1997 Hrvoje Niksic + + * prim/macros.el: Removed. Superseded by new version in + edmacro.el. + +Fri Feb 14 23:29:16 1997 Adrian Aichner + + * modes/executable.el (executable-set-magic): Correct for the #! + getting lost. + +Fri Feb 14 23:10:58 1997 Steven L Baur + + * prim/modeline.el (modeline-modified-map): Call + vc-toggle-read-only instead of toggle-read-only to be consistent + with override of `C-x C-q'. + +Fri Feb 14 16:11:10 1997 Jonathon Edwards + + * packages/blink-cursor.el (blink-cursor-post-command-hook): stop + cursor blink momentarily after receiving user input. + +Fri Feb 14 15:26:38 1997 Jacques Duthen + + * x11/x-menubar.el (default-menubar): mine goes into games menu. + +Thu Feb 13 22:16:09 1997 Michael Sperber + + * prim/files.el (recover-session-finish): Modify for efs. + +Thu Feb 13 21:23:07 1997 Steven L Baur + + * prim/files.el (file-remote-p): New function. + + * sunpro/sunpro-load.el: Do not dump mime-setup under any + circumstances. + +Thu Feb 13 17:58:09 1997 Richard Mlynarik + + * prim/obsolete.el (insert-before-markers-and-inherit): Correct + typo. + +Wed Feb 12 17:48:59 1997 Steven L Baur + + * comint/gdb.el (gdb-control-c-subjob): Nuke this loser. + +Wed Feb 12 13:58:01 1997 Hrvoje Niksic + + * utils/edmacro.el: New file. + +Wed Feb 12 09:00:48 1997 Steven L Baur + + * prim/sound.el (load-sound-file): Update documentation of + restrictions on what machines XEmacs can play sound on. + +Tue Feb 11 09:39:25 1997 Steven L Baur + + * prim/glyphs.el (init-glyphs): Correct autodetection to find + GIF89. Look for PNG. + +Mon Feb 10 21:37:54 1997 Steven L Baur + + * prim/frame.el (show-temp-buffer-in-current-frame): Conditional + shrink-to-fit behavior on `temp-buffer-shrink-to-fit'. + + * packages/apropos.el (apropos-print): Ditto. + + * prim/lisp.el (lisp-complete-symbol): Ditto. + + * prim/help.el (with-displaying-help-buffer): Ditto. + +Mon Feb 10 20:58:19 1997 Hrvoje Niksic + + * x11/x-toolbar.el: Allow customization of toolbar functions by + customizable variables. + +Mon Feb 10 14:58:05 1997 Greg Klanderman + + * comint/gdb.el (gdb-mode): Correct setting of obsolete hook. + +Sun Feb 9 19:55:03 1997 Steven L Baur + + * prim/obsolete.el (define-compatible-variable-alias): New function. + (define-compatible-variable-alias): New function. + .*mode-line.*, frame-parameters, modify-frame-parameters, + x-display-.* all made compatible not obsolete. + + * bytecomp/bytecomp.el (byte-compile-variable-ref): Warn for + compatibility symbols. + (byte-compile-compatible): New function. + + * bytecomp/bytecomp-runtime.el (make-compatible): New function. + (make-compatible-variable): New function. + +Sun Feb 9 19:14:25 1997 Kyle Jones + + * utils/redo.el: New file. + + * utils/floating-toolbar.el: New file. + +Sun Feb 9 15:19:46 1997 Steven L Baur + + * custom/custom.el: Remove ;;;###autoloads since this file is + dumped with XEmacs. + +Sun Feb 9 00:28:20 1997 Per Abrahamsen + + * custom/widget.el: New file. + + * custom/widget-example.el: New file. + + * custom/widget-edit.el: New file. + + * custom/custom.el: New file. + + * custom/custom-edit.el: New file. + +Fri Feb 7 03:09:32 1997 Alastair Burt + + * bytecomp/bytecomp.el (byte-compile-insert-header): Correct + typo. + +Thu Feb 6 17:14:32 1997 Steven L Baur + + * packages/font-lock.el (font-lock-fontify-keywords-region): + Correct bounds checking in case the keywords regexp is not + properly anchored. + + * packages/ps-print.el: Update maintainer address. + +Thu Feb 6 12:35:39 1997 Bill Dubuque + + * cl/cl-macs.el (cl-do-proclaim): Correct addition of bound + variables to `byte-compile-bound-variables'. + +Thu Feb 6 01:07:56 1997 Steven L Baur + + * bytecomp/bytecomp.el (byte-compile-warn-about-unused-variables): + Reverse previous patch. + + * prim/minibuf.el (use-dialog-box): Rename from + should-use-dialog-box. + (should-use-dialog-box-p): Use it. + + * bytecomp/bytecomp.el (byte-compile-warn-about-unused-variables): + cell is not a cons when the cl declare macro is used. + +Wed Feb 5 21:37:13 1997 Hrvoje Niksic + + * modes/cperl-mode.el: Provide 'cperl-mode. + +Tue Feb 4 11:51:25 1997 Greg Klanderman + + * modes/make-mode.el: Remove `makefile-runtime-macros-list' from + `makefile-macro-table'. + +Tue Feb 4 11:06:33 1997 Steven L Baur + + * packages/metamail.el (metamail-region): *junet* coding system + name changed to 'junet. + +Mon Feb 3 22:34:09 1997 Alexandre Oliva + + * iso/iso-acc.el: Critical Bug fix. + Add ISO-8859-3 support to iso-acc.el, as suggested by Dale + Gulledge. + +Mon Feb 3 17:11:21 1997 Steven L Baur + + * modes/make-mode.el (makefile-browser-format-macro-line): Remove + redundant (and wrong) format statement. + +Fri Jan 31 21:38:47 1997 Steven L Baur + + * psgml/psgml-html.el (html-auto-sgml-entity-conversion): Allow + user control over automatic sgml entity to ISO-8859-1 conversion. + +Fri Jan 31 09:50:51 1997 Hrvoje Niksic + + * x11/x-toolbar.el (toolbar-mail-commands-alist): Updated with a + lot of new mailer possiblities. + +Fri Jan 31 09:28:49 1997 Martin Buchholz + + * x11/x-font-menu.el (reset-device-font-menus): Correct guard on + charset-registry call. + +Fri Jan 31 00:21:07 1997 Darrell Kindred + + * packages/font-lock.el (font-lock-mode): Don't remove the + `font-lock-pre-idle-hook' from `pre-idle-hook'. + +Thu Jan 30 22:43:43 1997 David Moore + + * packages/compile.el: Speed up regexps. + (compilation-parse-errors): replace re-search-forward with + something faster. + +Thu Jan 30 20:33:56 1997 Hvoje Niksic + + * x11/x-toolbar.el + (toolbar-open,toolbar-dired,toolbar-save,toolbar-print,toolbar-cut,toolbar-copy,toolbar-paste,toolbar-undo,toolbar-replace): + New functions. + (toolbar-news): Allow running without separate frame. + (toolbar-mail-commands-alist): New variable. + (toolbar-mail-reader): Ditto. + (toolbar-mail): Use them. + + * x11/x-menubar.el: Shorten help menu item names. + +Thu Jan 30 17:22:15 1997 Alexandre Oliva + + * iso/iso-acc.el: Accept accents in isearch. + +Wed Jan 29 22:25:38 1997 Tomasz J. Cholewo + + * packages/ps-print.el: Make postscript files generated by + ps-print conformant to Adobe DSC specification. + +Mon Jan 27 21:45:17 1997 Tomasz J. Cholewo + + * dired/ange-ftp.el (ange-ftp-write-region): Changes for jka-compr. + + * packages/jka-compr.el (jka-compr-write-region): Convert to 20.0 + write-region interface. + +Mon Jan 27 19:09:28 1997 Steven L Baur + + * prim/about.el (about-xemacs): Updated to reflect change of + management. + +Mon Jan 27 13:25:17 1997 William M. Perry + + * packages/man.el (Manual-entry-switches): Don't default to -s. + +Sun Jan 26 16:27:49 1997 Steven L Baur + + * bytecomp/byte-optimize.el (byte-compile-inline-expand): + Correctly refresh the pointer to a symbol being autoloaded prior + to inline. + +Sun Jan 26 13:57:22 1997 Bob Weiner + + * prim/about.el (about-xemacs-xref): Update bio. + +Sat Jan 25 22:58:15 1997 Steven L Baur + + * x11/x-menubar.el (default-menubar): Update ps-paper-type options + for new ps-print.el. + +Thu Jan 23 01:40:53 1997 Steven L Baur + + * psgml/psgml-html.el (html-mode): Set up friendlier syntax + table. + + * psgml/psgml.el (sgml-running-xemacs): Remove + sgml-mode-syntax-table since it has been superseded. + +Thu Jan 9 13:32:01 1997 Jacques Duthen Prestataire + + * ps-print.el: Merge patch from [simon] Oct 8, 1996 Simon Marshall + + (ps-print-version): Fix value. + (cl lisp-float-type): Require them. + (ps-number-of-columns ps-*-font-size): Try to select defaults + better suited when `ps-landscape-mode' is non-nil. + (ps-*-faces): Change default for Font Lock mode faces when + `ps-print-color-p' is nil. + (ps-right-header): Replace `time-stamp-yy/mm/dd' + by `time-stamp-mon-dd-yyyy'. + (ps-end-file ps-begin-page): Fix bug in page count for Ghostview. + (ps-generate-postscript-with-faces): Replace `ps-sorter' by + `car-less-than-car'. + (ps-plot ps-generate): Replace `%d' by `%3d'. + +Wed Jan 22 15:32:39 1997 Greg Klanderman + + * modes/rsz-minibuf.el (resize-minibuffer-setup): Resize the + minibuffer earlier than the first received event. + +Wed Jan 22 15:29:08 1997 Barry A. Warsaw + + * modes/imenu.el (imenu-add-to-menubar): Don't attempt anything if + menu-bar lookup fails. + +Wed Jan 22 01:03:42 1997 Martin Buchholz + + * x11/x-font-menu.el: Make font menus work better in a + Japanese environment. + +Tue Jan 21 19:56:26 1997 Martin Buchholz + + * mule/mule-init.el (init-mule): Get Japanese man pages working. + +Fri Jan 17 17:22:54 1997 Hrvoje Niksic + + * man.el (Manual-mode): Don't mess with scrollbars if they aren't + present. + +Tue Jan 21 19:52:45 1997 Steven L Baur + + * utils/timezone.el (timezone-parse-date): Fix Y2K bug. + +Tue Jan 21 19:32:44 1997 Barry A. Warsaw + + * prim/files.el (hack-local-variables-prop-line): XEmacs should + not query to set local variables in the -*- line if there aren't + any to set! + +Thu Jan 16 18:24:20 1997 Steven L Baur + + * psgml/psgml.el: Use newer interface form for nsgmls. + +Thu Jan 16 04:06:24 1997 Steven L Baur + + * comint/telnet.el (rsh): (Mostly) correct dealing with detection + of password prompt at login. + +Thu Jan 16 03:28:25 1997 Martin Buchholz + + * modes/view.el (View-scroll-lines-forward): Correct format typo. + +Mon Jan 13 22:50:23 1997 David Moore + + * packages/compile.el: Clean up regexps. + +Sun Jan 12 20:50:08 1997 Steven L Baur + + * modes/m4-mode.el: Changed m4-program to point to /usr/bin/m4. + +Sun Jan 12 18:49:30 1997 ~~ ~~/MORIOKA Tomohiko + + * mule/mule-misc.el: `-columns' -> `-width' and define `-columns' + alias + Import definition of `truncate-string-to-width' from Emacs/mule-delta. + +Sun Jan 12 13:57:11 1997 Kyle Jones + + * prim/window.el (shrink-window-if-larger-than-buffer): Don't let + readjusted window change the buffer order stack. + +Sat Jan 11 20:12:47 1997 Vinnie Shelton + + * utils/finder.el (finder-insert-at-column): Correct off-by-one + error affecting long file names. + +Fri Jan 10 22:27:58 1997 Shane Holder + + * utils/bench.el: New version. + +Fri Jan 10 13:22:26 1997 Christoph Wedler + + * packages/man.el (Manual-entry-switches): New variable. + (Manual-apropos-switches): New variable. + (Manual-run-formatter): Use them. + +Thu Jan 9 22:04:42 1997 Greg Klanderman + + * modes/make-mode.el: Allow disabling of suspicious line warnings + allow macro pickup when a macro is entered normally + add the runtime macros to the completion list so confirmation is + not necessary when minibuffer-confirm-incomplete is t. + (these last two only in effect when makefile-electric-keys=t) + +Thu Jan 9 11:44:11 1997 Martin Buchholz + + * mule/mule-files.el (file-coding-system-alist): Default to 8 bit + on .el and .info files. + +Wed Jan 8 20:57:16 1997 Steven L Baur + + * prim/help.el (help-mode-quit): Correct typo in docstring. + (help-mode-quit): Bury help buffer before restoring previous + window configuration. + +Wed Jan 8 20:20:01 1997 Joe Nuspl + + * x11/x-menubar.el (default-menubar): Include enriched.doc in the + samples in the help menu. + +Wed Jan 8 20:09:32 1997 Jens Krinke + + * x11/x-toolbar.el (toolbar-news-frame-properties): New variable. + (toolbar-news): Use it. + +Wed Jan 8 10:11:35 1997 Steven L Baur + + * x11/x-compose.el (global-map): Keysyms use `-' not `_'. + +Mon Jan 6 18:19:03 1997 Steven L Baur + + * comint/telnet.el (telnet-initial-filter): Enable + case-fold-search. + (telnet-maximum-count): Bump up to 6, since 4 does not always + appear to be enough. + +Mon Jan 6 08:30:55 1997 Andrew Cohen + + * psgml/psgml-parse.el (sgml-compile-dtd): noconv coding system + has been renamed to no-conversion. + (sgml-bdtd-merge): Ditto. + (sgml-push-to-entity): Ditto. + +Sun Jan 5 14:35:30 1997 Steven L Baur + + * utils/loadhist.el (symbol-file): Make interactive. + +Sun Jan 5 00:40:02 1997 Bob Weiner + + * packages/avoid.el (mouse-avoidance-mode): autoload. + + * x11/x-menubar.el (options-menu-saved-forms): Mouse avoidance + mode option. + +Sat Jan 4 12:25:34 1997 Steven L Baur + + * prim/faces.el (init-other-random-faces): Guard against adding + modeline buffer tty face if no tty support. + +Fri Jan 3 23:15:22 1997 Greg Klanderman + + * packages/backup-dir.el: Added to distribution. + +Fri Jan 3 16:20:42 1997 Steven L Baur + + * gnus/gnus-setup.el: Updated to gracefully handle installed + auxilliary packages like tm, and handle eventual integration of + Red Gnus/Gnus 5.4. + +Fri Jan 3 14:32:07 1997 Vinnie Shelton + + * packages/gnuserv.el (gnuserv-frame): Autoload. + + * x11/x-menubar.el (default-menubar): Add option to control gnuserv + creating a new frame. + (options-menu-saved-forms): Ditto. + +Fri Jan 3 12:18:41 1997 Martin Buchholz + + * x11/x-mouse.el: Protect creation of scrollbar-pointer-glyph with + feature test on 'scrollbar. + +Fri Jan 3 10:37:48 1997 Steven L Baur + + * packages/mic-paren.el (paren-activate): Update to v1.2. + +Fri Jan 3 10:21:58 1997 Pete Ware + + * x11/x-menubar.el (default-menubar): Add require-final-newline + and next-line-add-newlines as options in the options menu. + (options-menu-saved-forms): Ditto. + +Thu Jan 2 18:52:32 1997 Joel Peterson + + * prim/simple.el (blink-matching-open): Make sure point is visible + when blinking. + +Thu Jan 2 11:25:05 1997 Vinnie Shelton + + * prim/replace.el (occur-mode-mouse-goto): Fix typo in Emacs 19.34 + synch up. + (occur-mode-map): Ditto. + +Wed Nov 20 19:40:05 1996 Lennart Staflin + + * psgml-parse.el (sgml-modify-dtd): set sgml-current-tree to + sgml-top-tree. Needed by sgml-open-element. + +Mon Nov 11 01:50:40 1996 Lennart Staflin + + * Version 1.0 released. + +Sun Sep 15 14:07:24 1996 Lennart Staflin + + * psgml.el (sgml-mode): modify mode-line-format with subst, don't + replicate the whole format in the code. + +Thu Sep 12 20:27:38 1996 Lennart Staflin + + * psgml-parse.el (sgml-external-file): Try to find system + identifiers using the sgml-public-map + if sgml-system-identifiers-are-preferred; this way that flag will + have effect even if the sgml-public-map contains `%s'. + (sgml-final): moved to be defined before use. + + * psgml-dtd.el (sgml-parse-parameter-literal): Try to handle + character references to character number above 255 by leaving a + character reference in then parsed entity text. + +Thu Sep 5 14:11:00 1996 Dave Love + + * psgml-other.el (sgml-set-face-for): Nullify + {after,before}-change-functions as well as (obsolete) + {after,before}-change-function. + +Tue Dec 31 11:34:37 1996 Steven L Baur + + * comint/gdb.el (gdb-mode): Require 'cc-mode if not already loaded + prior to starting gdb. + +Mon Dec 30 17:59:48 1996 Steven L Baur + + * comint/telnet.el (telnet-check-software-type-initialize): Remove + default in cond (which allows special treatment of password prompt + to work). + +Mon Dec 30 09:36:04 1996 Valdis Kletnieks + + * packages/gnuserv.el (server-edit): Add option to allow killing + last visible frame. + +Sun Dec 29 21:36:44 1996 Steven L Baur + + * prim/files-nomule.el: Add trailing newline. + +Sun Dec 29 18:45:34 1996 James LewisMoss + + * modes/perl-mode.el: Add (provide 'perl-mode). + +Sun Dec 29 17:15:57 1996 Martin Buchholz + + * ilisp/Makefile (elc): Be a little smarter about recompilation. + +Sun Dec 29 17:14:27 1996 Steven L Baur + + * tm/tm-edit-tipgp.el: Don't unconditionally require tinypgpa.el. + +Sat Dec 28 11:15:55 1996 Steven L Baur + + * x11/x-menubar.el (default-menubar): Move Frame-local font menu + option to Frame Appearance submenu. + +Fri Dec 27 20:30:00 1996 Steven L Baur + + * x11/x-font-menu.el (font-menu-this-frame-only-p): Default to + nil, because everyone was confused by it defaulting to t. + +Fri Dec 27 12:30:37 1996 Richard Mlynarik + + * prim/sort.el (sort-subr): Document use of `sort-fold-case'. + (sort-lines): Ditto. + (sort-paragraphs): Ditto. + (sort-pages): Ditto. + (sort-regexp-fields): Ditto. + (sort-numeric-fields): Ditto. + (sort-regexp-fields): Ditto. + (sort-columns): Ditto. + (sort-regexp-fields): Use compare-buffer-substrings if available. + +Fri Dec 27 12:09:23 1996 Noah Friedman + + * modes/mail-abbrevs.el (mail-abbrev-expand-hook): Prevent abbrev + expansion from happening multiple times. + +Fri Dec 27 02:31:15 1996 Steven L Baur + + * prim/help.el (help-for-help): Don't confuse help character `b' + with scrolling character `b' in view-less help buffer. + + * packages/scroll-in-place.el: Synch with 19.15. + +Thu Dec 26 15:25:09 1996 Steven L Baur + + * x11/x-menubar.el (xemacs-splash-buffer): New function. + (default-menubar): Use it. + (default-menubar): Reorganize help menus. + + * prim/startup.el (startup-message-timeout): More or less disable + the timeout of the splash screen. + + * packages/man.el (Manual-use-rosetta-man): For Neal Becker's + Rosetta Man patch. + (Manual-nuke-nroff-bs): Use it. + +Tue Dec 24 12:46:22 1996 Steven L Baur + + * prim/frame.el (show-temp-buffer-in-current-frame): Shrink temp + buffer to fit. + +Mon Dec 23 15:44:49 1996 Steven L Baur + + * utils/delbackspace.el: Correct rebindings so they work properly + when cc-mode is not dumped with XEmacs. + + * packages/apropos.el (apropos-print): Minimize size of *Apropos* + window if it is small. + + * prim/lisp.el (lisp-complete-symbol): Minimize size of + *Completions* window. + + * prim/help.el (with-displaying-help-buffer): (Based on an idea + from Sudish Joseph) minimize size of displayed help window. + + * modes/fortran.el (fortran-window-create-momentarily): Fix + lossage from synch with Emacs 19.34. + (fortran-abbrev-start): Ditto. + +Sun Dec 22 15:33:25 1996 Hrvoje Niksic + + * x11/x-toolbar.el (toolbar-news): Check whether this is the last + frame before deleting it. + +Sun Dec 22 00:37:42 1996 Sudish Joseph + + * eterm/tgud.el (tgud-gdb-complete-filter): Match carriage returns + as well as linefeeds. + + * eterm/term.el (term-dynamic-list-completions): Correct Emacsism + in setting unread-command-events. + +Sat Dec 21 23:37:02 1996 Bob Weiner + + * packages/font-lock.el: Update Java support. + +Sat Dec 21 22:48:59 1996 Steven L Baur + + * packages/fontl-hooks.el: Add provide (synch with 19.15). + + * x11/x-toolbar.el: Don't quote lambda macro. + + * packages/session.el: Removed from distribution. + +Sat Dec 21 22:37:37 1996 Neal Becker + + * pcl-cvs/pcl-cvs.el: Synched with pcl-cvs.el from cvs-1.9. + +Fri Dec 20 15:19:36 1996 Steven L Baur + + * packages/compile.el (compilation-error-regexp-alist): Complete + fix for lossage on bad regexps. + + * prim/loadup.el: Remove cc-mode as a dumped package. + + * prim/glyphs.el (init-glyphs): hscroll-glyph is now builtin. + + * prim/minibuf.el (minibuffer-complete-word): Correct an ebola + infection that caused incorrect interpretation of SPC in the + minibuffer. + +Thu Dec 19 22:16:47 1996 Heiko Muenkel + + * modes/outl-mouse.el (outline-glyph-menu): Remove Hide body item, + Add Show all item. + +Thu Dec 19 00:37:59 1996 Bart Robinson + + * prim/files.el: Make enable-local-variables 'ask-me behave sanely. + +Wed Dec 18 23:10:15 1996 Steven L Baur + + * prim/simple.el (next-line-add-newlines): Now defaults to nil. + +Wed Dec 18 22:56:48 1996 Hrvoje Niksic + + * utils/bench.el (bench-mark-13): Added. + +Wed Dec 18 20:26:10 1996 Martin Buchholz + + * mule/mule-coding.el: Change charset names. + + * mule/japanese-hooks.el: Change charset names. + + * mule/hebrew-hooks.el: Change charset names. + Remove quail hooks. + + * mule/greek-hooks.el: Change charset names. + Remove quail hooks. + + * mule/european-hooks.el ((make-char 'latin-iso8859-1 32)): Change + charset names. + Remove quail hooks. + + * mule/cyrillic-hooks.el (cyrillic-iso8859-5): Use instead of cyrillic. + Remove quail hooks. + + * mule/chinese-hooks.el (chinese-gb2312): Fix chinese syntax tables. + Use chinese-gb2312. + Remove quail hooks. + (chinese): Comment out code for egg. + + * mule/thai-hooks.el: Use thai-tis620. + (thai): Prefer macro definition of lambda. + + * sunpro/sunpro-init.el (sunpro-startup): Guard against Sun + censorship. + + * prim/obsolete.el (wholenump): New obsolete alias. + + * prim/simple.el (comment-indent-function): Use macro definition + of (lambda () ...). + + * prim/replace.el (list-matching-lines): Remove redundant + (message (format ...)) + + * modes/cc-mode.el: Readd autoloads (prior to removing cc-mode as + a dumped package). + +Wed Dec 18 11:09:45 1996 Steven L Baur + + * comint/telnet.el: Synch up to 19.15 & Emacs 19.34. + (telnet-check-software-type-initialize): Cleanup from Synch. + +Sat Dec 14 17:39:17 1996 Steven L Baur + + * packages/buff-menu.el (list-buffers-directory): autoload. + +Fri Dec 13 16:53:14 1996 Steven L Baur + + * electric/ebuff-menu.el (electric-buffer-list): Restore behavior + of using prefix argument. + + * emulators/crisp.el (crisp-mode-map): Rename kp_.* keysyms to + kp-\1. + + * emulators/tpu-edt.el: Ditto. + + * x11/x-win-sun.el: Ditto. + + * x11/x-iso8859-1.el: Ditto. + + * term/tvi970.el: Ditto. + + * term/news.el: Ditto. + + * term/lk201.el: Ditto. + + * term/linux.el: Ditto. + + * prim/keydefs.el: Ditto. + + * prim/events.el: Ditto. + + * packages/icomplete.el (icomplete-get-keys): Ditto. + + * games/gomoku.el (gomoku-mode-map): Ditto. + + * games/blackbox.el (blackbox-mode-map): Ditto. + +Fri Dec 13 09:40:27 1996 Sudish Joseph + + * prim/minibuf.el (next-history-element): Remove kludge test on + minibuffer-history-sexp-flag. + + * x11/x-init.el (init-post-x-win): Fix hooks for gnuattached ttys + on XEmacsen started on X displays. + +Thu Dec 12 16:05:53 1996 Raymond Toy + + * ilisp/ilisp-out.el (ilisp-find-lower-window): Correct XEmacs + version check to look at major numbers. + (ilisp-find-top-left-most-window): Ditto. + +Thu Dec 12 15:21:43 1996 Lars Magne Ingebrigtsen + + * utils/mail-extr.el (mail-extract-address-components): Don't + automatically downcase extracted elements. It violates standards. + +Thu Dec 12 14:46:47 1996 Christoph Wedler + + * x11/x-menubar.el (buffers-menu-filter): The buffer menu was + shortened to `buffers-menu-max-size' items even if + `buffers-menu-submenus-for-groups-p' is non-nil. + + Let `buffers-menu-submenus-for-groups-p' be an integer : if there + are more buffers than this value, use submenus, otherwise not. + + * packages/vc.el (vc-rename-this-file): New function (was missing, + but referred to on the menubar). + + * packages/compile.el (compilation-font-lock-keywords): `defvar' + instead of `defconst'! + + * prim/mouse.el (default-mouse-track-normalize-point): Double + click mouse-1 on sexpr selects the sexpr. + + * x11/x-menubar.el (options-menu-saved-forms): Fix bug in + `save-options-menu-settings'. + +Thu Dec 12 14:25:21 1996 Steven L Baur + + * prim/simple.el (forward-to-indentation): Do not deactivate zmacs + region on usage. + (backward-to-indentation): Ditto. + +Thu Dec 12 14:22:55 1996 Christoph Wedler + + * prim/lisp.el (backward-up-list): Do not deactivate zmacs region + on usage. + +Wed Dec 11 20:26:21 1996 Barry A. Warsaw + + * prim/files.el (set-auto-mode): Require a #! signature to set + mode based on interpreter. + +Wed Dec 11 13:25:50 1996 Steven L Baur + + * packages/man.el (Manual-use-rosetta-man): Restore Neal Becker's + Rosetta Man Patch. + (Man-cleanup-manpage): Use it. + + * prim/simple.el (yank): Corrected a mistaken synch with Emacs + 19.34. + + * modes/eiffel3.el (eiffel-mode-syntax-table): Quote the semicolon + syntax entry so update-autoloads doesn't barf. + + * packages/buff-menu.el (Buffer-menu-mode-map): Correct mouse key + bindings. + +Tue Dec 10 21:24:04 1996 Steven L Baur + + * packages/ps-print.el (ps-do-despool): Allow dynamic expansion of + `ps-lpr-switches'. + + * packages/lpr.el (print-region-1): Allow dynamic expansion of + `lpr-switches'. + +Tue Dec 10 18:30:01 1996 Rod Whitby + + * modes/vhdl-mode.el: New File. + +Tue Dec 10 17:59:35 1996 Shane Holder + + * utils/bench.el: New file. Utility for benchmarking emacs + performance. + +Tue Dec 10 10:11:55 1996 Steven L Baur + + * electric/ebuff-menu.el (electric-buffer-menu-mode-map): Correct + bad 19.34 synch patch. + + * utils/pretty-print.el: New File. + +Sun Dec 8 13:59:40 1996 Steven L Baur + + * prim/files-nomule.el: Documentation corrections. + + * prim/files.el: Synch to 19.15/Emacs 19.34. + +Sat Dec 7 18:48:34 1996 Steven L Baur + + * packages/hexl.el (hexl-mode-map): Corrected obsolescent key + names introduced in 19.15-b2. + +Fri Dec 6 20:17:47 1996 Steven L Baur + + * games/yow.el: Sync to GNU Emacs 19.34. + + * games/studly.el: Documentation fixes. + + * games/spook.el: Sync to GNU Emacs 19.34. + + * games/mpuz.el: Sync to GNU Emacs 19.34. + + * games/life.el: Sync to GNU Emacs 19.34. + + * games/hanoi.el: Sync to GNU Emacs 19.34. + + * games/flame.el: Documentation fixes. + + * games/dunnet.el: Sync to GNU Emacs 19.34. + + * games/doctor.el: Sync to GNU Emacs 19.34. + + * games/dissociate.el: Sync to GNU Emacs 19.34. + + * games/cookie1.el: Sync to GNU Emacs 19.34. + + * games/conx.el: Documentation fixes. + + * games/blackbox.el: Sync to GNU Emacs 19.34. + + * games/NeXTify.el: Documentation fixes. + + * packages/man.el: New file/replacement from Emacs 19.34. + + * packages/man-xref.el: New file from Emacs 19.35. + + * utils/smtpmail.el: New file from Emacs 19.34. + +Fri Dec 6 09:28:04 1996 ~~ ~~/MORIOKA Tomohiko + + * prim/startup.el (set-default-load-path): Set default-load-path + dynamically since file-detect.el is dumped with XEmacs. + +Thu Dec 5 20:37:32 1996 Steven L Baur + + * emulators/tpu-mapper.el: Total replacement with version in GNU + Emacs 19.34. + + * emulators/tpu-extras.el: Total replacement with version in GNU + Emacs 19.34. + + * emulators/tpu-edt.el: Total replacement with version in GNU Emacs + 19.34. + + * comint/history.el: Documentation fixes. + + * comint/gdb.el: Documentation fixes. + + * comint/dbx.el: Documentation fixes. + + * comint/background.el: Documentation fixes. + + * rmail/rmail-xemacs.el: Documentation fixes. + + * rmail/rmail-kill.el: Documentation fixes. + + * emulators/ws-mode.el: Synch up to Emacs 19.34. + + * emulators/teco.el: Documentation cleanup. + + * emulators/mlsupport.el: Synch up to Emacs 19.34. + + * emulators/mlconvert.el: Synch up to Emacs 19.34. + + * emulators/edt-vt100.el: New file from Emacs 19.34. + + * emulators/edt-pc.el: New file from Emacs 19.34. + + * emulators/edt-mapper.el: New file from Emacs 19.34. + + * emulators/edt-lk201.el: New file from Emacs 19.34. + + * emulators/edt.el: Synched up to Emacs 19.34. + +Thu Dec 5 12:09:19 1996 Lars Magne Ingebrigtsen + + * prim/replace.el (match-string): Use a function instead of a + macro to be compatible with .elc files compiled under Emacs. + +Thu Dec 5 09:50:12 1996 Bob Weiner + + * utils/id-select.el: New file -- Version 1.4.3. + +Thu Dec 5 09:17:53 1996 Gary D. Foster + + * emulators/crisp.el: New file. + + * emulators/scroll-lock.el: New file. + +Thu Dec 5 00:15:59 1996 Steven L Baur + + * prim/help.el: A callable library-type function should not + contain an unprotected print statement. This change implements my + version of Erik Naggum's statement about locate-library being less + chatty in Emacs 19.35. + +Wed Dec 4 22:00:49 1996 Steven L Baur + + * utils/flow-ctrl.el: Synch up to Emacs 19.34. + + * utils/forms.el: Synch up to Emacs 19.34. + + * packages/column.el: Allow column numbers to start at one. + + * prim/userlock.el: Synch up to Emacs 19.34. + + * prim/paragraphs.el: Synch up to Emacs 19.34. + + * prim/page.el: Synch up to Emacs 19.34. + + * prim/options.el: Synch up to Emacs 19.34. + + * prim/novice.el: Synch up to Emacs 19.34. + + * prim/rect.el: Sync up to Emacs 19.34. + + * prim/reposition.el: Synch up to Emacs 19.34. + + * prim/replace.el: Synch up to Emacs 19.34. + + * prim/register.el: Synch up to Emacs 19.34. + + * prim/indent.el: Synch up to Emacs 19.34. + + * prim/subr.el: Synch up to Emacs 19.34. + + * prim/simple.el: Synch up to Emacs 19.34. + + * prim/debug.el: Synch up to Emacs 19.34. + + * edebug/cl-specs.el: Comment formatting changes. + + * edebug/cl-read.el: Protect advisement of eval-region from being + evaluated more than once. + + Comment formatting changes. + + * edebug/advise-eval-region.el: New File. Separate out advise for + eval-region so it is only evaluated once. + + * packages/icomplete.el: Fix a bug in locating command bound to key. + + icomplete-exhibit needs to be called in the setup-hook. + + * packages/apropos.el: Correct a typo in button binding. + + Fixes the bug where if apropos-label-face is actually defined as + face, apropos bombs with an error + + Do a (provide 'apropos), like all packages should. + + Provides an apropos-mode-hook for Apropos Mode buffers (otherwise + customization is unnecessarily painful). + + Redefines the default faces for the various apropos faces so they + come out in color by default (defaults are based on various + standard font-lock faces). + + * version.el: Bumped up to b31. diff --text -u 'xemacs-21.5.9/lisp/about.el' 'xemacs-21.5.10/lisp/about.el' Index: ./lisp/about.el --- ./lisp/about.el Mon Dec 10 16:43:34 2001 +++ ./lisp/about.el Mon Sep 2 07:13:53 2002 @@ -210,7 +210,7 @@ (marcpa . "http://www.positron911.com/products/power.htm") (ograf . "http://www.fga.de/~ograf/") (pez . "http://cbs.sportsline.com/") - (piper . "http://www.xemacs.freeserve.co.uk/") + (piper . "http://www.andypiper.com/") (rossini . "http://faculty.washington.edu/rossini/") (stigb . "http://www.tihlde.hist.no/~stigb/") (vin . "http://www.upa.org/") @@ -1243,9 +1243,10 @@ (widget-insert "\ My home page is here:\n") (about-url-link 'piper nil "Visit andy's home page") - (widget-insert "\n -Andy has recently rejoined the XEmacs team to help port XEmacs to -MS Windows operating systems.\n")) + (widget-insert "\n Andy has been active in the XEmacs team for a +number of years, helping port XEmacs to MS Windows operating +systems. He is also the current MS Windows release manager and +maintains the MS Windows netinstaller.\n")) (pittman (widget-insert "\ diff --text -u 'xemacs-21.5.9/lisp/autoload.el' 'xemacs-21.5.10/lisp/autoload.el' Index: ./lisp/autoload.el --- ./lisp/autoload.el Thu Aug 22 20:19:58 2002 +++ ./lisp/autoload.el Fri Oct 11 23:10:01 2002 @@ -35,6 +35,8 @@ ;; ChangeLog: +;; Jun-25-2002: Jerry James added code for processing C files, to +;; support modularization ;; Sep-26-1997: slb removed code dealing with customization. ;;; Code: @@ -68,6 +70,40 @@ (if macrop (list 'quote 'macro) nil))) nil))) +(defun make-c-autoload (module) + "Make an autoload list for the DEFUN at point in MODULE. +Returns nil if the DEFUN is malformed." + (and + ;; Match the DEFUN + (search-forward "DEFUN" nil t) + ;; Match the opening parenthesis + (progn + (skip-syntax-forward " ") + (eq (char-after) ?\()) + ;; Match the opening quote of the Lisp function name + (progn + (forward-char) + (skip-syntax-forward " ") + (eq (char-after) ?\")) + ;; Extract the Lisp function name, interactive indicator, and docstring + (let* ((func-name (let ((begin (progn (forward-char) (point)))) + (search-forward "\"" nil t) + (backward-char) + (intern (buffer-substring begin (point))))) + (interact (progn + (search-forward "," nil t 4) + (skip-syntax-forward " ") + (not (eq (char-after) ?0)))) + (begin (progn + (search-forward "/*" nil t) + (forward-line 1) + (point)))) + (search-forward "*/" nil t) + (goto-char (match-beginning 0)) + (skip-chars-backward " \t\n\f") + (list 'autoload (list 'quote func-name) module + (buffer-substring begin (point)) interact nil)))) + (defvar generate-autoload-cookie ";;;###autoload" "Magic comment indicating the following form should be autoloaded. Used by `update-file-autoloads'. This string should be @@ -84,6 +120,26 @@ verbatim. If there is further text on the line, that text will be copied verbatim to `generated-autoload-file'.") +(defvar generate-c-autoload-cookie "/* ###autoload" + "Magic C comment indicating the following form should be autoloaded. +Used by `update-file-autoloads'. This string should be +meaningless to C (e.g., a comment). + +This string is used: + +/* ###autoload */ +DEFUN (\"function-to-be-autoloaded\", ... ) + +If this string appears alone on a line, the following form will be +read and an autoload made for it. If there is further text on the line, +that text will be copied verbatim to `generated-autoload-file'.") + +(defvar generate-c-autoload-module "/* ###module" + "Magic C comment indicating the module containing autoloaded functions. +Since a module can consist of multiple C files, the module name may not be +the same as the C source file base name. In that case, use this comment to +indicate the actual name of the module from which to autoload functions.") + (defvar generate-autoload-section-header "\f\n;;;### " "String inserted before the form identifying the section of autoloads for a file.") @@ -138,7 +194,9 @@ If FILE is being visited in a buffer, the contents of the buffer are used." (interactive "fGenerate autoloads for file: ") - (generate-file-autoloads-1 file funlist)) + (if (string-match "\\.el$" file) + (generate-file-autoloads-1 file funlist) + (generate-c-file-autoloads-1 file funlist))) (defun* generate-file-autoloads-1 (file funlist) "Insert at point a loaddefs autoload section for FILE. @@ -214,79 +272,7 @@ (setq autoloads-done (cons (nth 1 form) autoloads-done)) (setq autoload form)) - (if (and doc-string-elt - (stringp (nth doc-string-elt autoload))) - ;; We need to hack the printing because the - ;; doc-string must be printed specially for - ;; make-docfile (sigh). - (let* ((p (nthcdr (1- doc-string-elt) - autoload)) - (elt (cdr p))) - (setcdr p nil) - (princ "\n(" outbuf) - ;; XEmacs change: don't let ^^L's get into - ;; the file or sorting is hard. - (let ((print-escape-newlines t) - (p (save-excursion - (set-buffer outbuf) - (point))) - p2) - (mapcar (function (lambda (elt) - (prin1 elt outbuf) - (princ " " outbuf))) - autoload) - (save-excursion - (set-buffer outbuf) - (setq p2 (point-marker)) - (goto-char p) - (save-match-data - (while (search-forward "\^L" p2 t) - (delete-char -1) - (insert "\\^L"))) - (goto-char p2) - )) - (princ "\"\\\n" outbuf) - (let ((begin (save-excursion - (set-buffer outbuf) - (point)))) - (princ (substring - (prin1-to-string (car elt)) 1) - outbuf) - ;; Insert a backslash before each ( that - ;; appears at the beginning of a line in - ;; the doc string. - (save-excursion - (set-buffer outbuf) - (save-excursion - (while (search-backward "\n(" begin t) - (forward-char 1) - (insert "\\")))) - (if (null (cdr elt)) - (princ ")" outbuf) - (princ " " outbuf) - (princ (substring - (prin1-to-string (cdr elt)) - 1) - outbuf)) - (terpri outbuf))) - ;; XEmacs change: another fucking ^L hack - (let ((p (save-excursion - (set-buffer outbuf) - (point))) - (print-escape-newlines t) - p2) - (print autoload outbuf) - (save-excursion - (set-buffer outbuf) - (setq p2 (point-marker)) - (goto-char p) - (save-match-data - (while (search-forward "\^L" p2 t) - (delete-char -1) - (insert "\\^L"))) - (goto-char p2) - )) - )) + (print-autoload autoload doc-string-elt outbuf "")) ;; Copy the rest of the line to the output. (let ((begin (point))) ;; (terpri outbuf) @@ -346,6 +332,188 @@ (or noninteractive ; XEmacs: only need one line in -batch mode. (message "Generating autoloads for %s...done" file)))) +(defun* generate-c-file-autoloads-1 (file funlist) + "Insert at point a loaddefs autoload section for the C file FILE. +autoloads are generated for defuns and defmacros in FILE +marked by `generate-c-autoload-cookie' (which see). +If FILE is being visited in a buffer, the contents of the buffer +are used." + (let ((outbuf (current-buffer)) + (autoloads-done '()) + (load-name (replace-in-string (file-name-nondirectory file) + "\\.c?$" + "")) + (trim-name (autoload-trim-file-name file)) + (print-length nil) + (print-readably t) + (float-output-format nil) + ;; (done-any nil) + (visited (get-file-buffer file)) + output-end) + + ;; If the autoload section we create here uses an absolute + ;; pathname for FILE in its header, and then Emacs is installed + ;; under a different path on another system, + ;; `update-autoloads-here' won't be able to find the files to be + ;; autoloaded. So, if FILE is in the same directory or a + ;; subdirectory of the current buffer's directory, we'll make it + ;; relative to the current buffer's directory. + (setq file (expand-file-name file)) + + (save-excursion + (unwind-protect + (progn + (let ((find-file-hooks nil) + (enable-local-variables nil)) + (set-buffer (or visited (find-file-noselect file t t))) + ;; This doesn't look right, but it is. The only place we need + ;; the syntax table is when snarfing the Lisp function name. + (set-syntax-table emacs-lisp-mode-syntax-table)) + (save-excursion + (save-restriction + (widen) + (goto-char (point-min)) + ;; Is there a module name comment? + (when (search-forward generate-c-autoload-module nil t) + (skip-chars-forward " \t") + (let ((begin (point))) + (skip-chars-forward "^ \t\n\f") + (setq load-name (buffer-substring begin (point))))) + (if funlist + (progn + (message "Generating autoloads for %s..." trim-name) + (princ "(when (or\n" outbuf) + (princ (format + " (file-exists-p (expand-file-name \"%s.ell\" module-directory))\n" + load-name) outbuf) + (princ (format + " (file-exists-p (expand-file-name \"%s.dll\" module-directory))\n" + load-name) outbuf) + (princ (format + " (file-exists-p (expand-file-name \"%s.so\" module-directory)))\n" + load-name) outbuf) + (dolist (arg funlist) + (goto-char (point-min)) + (re-search-forward + (concat "DEFUN (\"" + (regexp-quote (symbol-name arg)) + "\"")) + (goto-char (match-beginning 0)) + (let ((autoload (make-c-autoload load-name))) + (when autoload + (push (nth 1 (nth 1 autoload)) autoloads-done) + (print-autoload autoload 3 outbuf " ")))) + (princ ")" outbuf)) + (goto-char (point-min)) + (let ((match + (search-forward generate-c-autoload-cookie nil t))) + (unless match + (message "No autoloads found in %s" trim-name) + (return-from generate-c-file-autoloads-1)) + + (message "Generating autoloads for %s..." trim-name) + (princ "(when (or\n" outbuf) + (princ (format + " (file-exists-p (expand-file-name \"%s.ell\" module-directory))\n" + load-name) outbuf) + (princ (format + " (file-exists-p (expand-file-name \"%s.dll\" module-directory))\n" + load-name) outbuf) + (princ (format + " (file-exists-p (expand-file-name \"%s.so\" module-directory)))\n" + load-name) outbuf) + (while match + (forward-line 1) + (let ((autoload (make-c-autoload load-name))) + (when autoload + (push (nth 1 (nth 1 autoload)) autoloads-done) + (print-autoload autoload 3 outbuf " "))) + (setq match + (search-forward generate-c-autoload-cookie nil t))) + (princ ")" outbuf)))))) + (unless visited + ;; We created this buffer, so we should kill it. + (kill-buffer (current-buffer))) + (set-buffer outbuf) + (setq output-end (point-marker)))) + (insert generate-autoload-section-header) + (prin1 (list 'autoloads autoloads-done load-name trim-name) outbuf) + (terpri outbuf) + (when (< output-end (point)) + (setq output-end (point-marker))) + (goto-char output-end) + (insert generate-autoload-section-trailer) + (or noninteractive ; XEmacs: only need one line in -batch mode. + (message "Generating autoloads for %s...done" trim-name)))) + +(defun print-autoload (autoload doc-string-elt outbuf margin) + "Print an autoload form, handling special characters. +In particular, print docstrings with escapes inserted before left parentheses +at the beginning of lines and ^L characters." + (if (and doc-string-elt (stringp (nth doc-string-elt autoload))) + ;; We need to hack the printing because the doc-string must be + ;; printed specially for make-docfile (sigh). + (let* ((p (nthcdr (1- doc-string-elt) autoload)) + (elt (cdr p)) + (start-string (format "\n%s(" margin))) + (setcdr p nil) + (princ start-string outbuf) + ;; XEmacs change: don't let ^^L's get into + ;; the file or sorting is hard. + (let ((print-escape-newlines t) + (p (save-excursion + (set-buffer outbuf) + (point))) + p2) + (mapcar #'(lambda (elt) + (prin1 elt outbuf) + (princ " " outbuf)) + autoload) + (save-excursion + (set-buffer outbuf) + (setq p2 (point-marker)) + (goto-char p) + (save-match-data + (while (search-forward "\^L" p2 t) + (delete-char -1) + (insert "\\^L"))) + (goto-char p2))) + (princ "\"\\\n" outbuf) + (let ((begin (save-excursion + (set-buffer outbuf) + (point)))) + (princ (substring (prin1-to-string (car elt)) 1) outbuf) + ;; Insert a backslash before each ( that appears at the beginning + ;; of a line in the doc string. + (save-excursion + (set-buffer outbuf) + (save-excursion + (while (search-backward start-string begin t) + (forward-char 1) + (insert "\\")))) + (if (null (cdr elt)) + (princ ")" outbuf) + (princ " " outbuf) + (princ (substring (prin1-to-string (cdr elt)) 1) outbuf)) + (terpri outbuf) + (princ margin outbuf))) + ;; XEmacs change: another ^L hack + (let ((p (save-excursion + (set-buffer outbuf) + (point))) + (print-escape-newlines t) + p2) + (print autoload outbuf) + (save-excursion + (set-buffer outbuf) + (setq p2 (point-marker)) + (goto-char p) + (save-match-data + (while (search-forward "\^L" p2 t) + (delete-char -1) + (insert "\\^L"))) + (goto-char p2))))) + (defconst autoload-file-name "auto-autoloads.el" "Generic filename to put autoloads into. @@ -383,7 +551,7 @@ (list autoload-file-name)))) (let ((load-name (replace-in-string (file-name-nondirectory file) - "\\.elc?$" + "\\.\\(elc?\\|c\\)$" "")) (trim-name (autoload-trim-file-name file)) section-begin form) @@ -473,7 +641,7 @@ ;;;###autoload (defun update-autoloads-from-directory (dir) "Update `generated-autoload-file' with all the current autoloads from DIR. -This runs `update-file-autoloads' on each .el file in DIR. +This runs `update-file-autoloads' on each .el and .c file in DIR. Obsolete autoload entries for files that no longer exist are deleted. Note that, if this function is called from `batch-update-directory', `generated-autoload-file' was rebound in that function. @@ -505,7 +673,8 @@ (search-forward generate-autoload-section-trailer) (delete-region begin (point))))) ;; Update or create autoload sections for existing files. - (mapcar 'update-file-autoloads (directory-files dir t "^[^=].*\\.el$")) + (mapcar 'update-file-autoloads + (directory-files dir t "^[^=].*\\.\\(el\\|c\\)$")) (unless noninteractive (save-buffer))))) diff --text -u 'xemacs-21.5.9/lisp/bytecomp-runtime.el' 'xemacs-21.5.10/lisp/bytecomp-runtime.el' Index: ./lisp/bytecomp-runtime.el --- ./lisp/bytecomp-runtime.el Sun May 5 20:30:23 2002 +++ ./lisp/bytecomp-runtime.el Tue Sep 3 14:36:52 2002 @@ -93,7 +93,7 @@ ; ''byte-optimizer ''byte-compile-inline-expand)))) (defun make-obsolete (fn new) - "Make the byte-compiler warn that FUNCTION is obsolete. + "Make the byte-compiler warn that function FN is obsolete. The warning will say that NEW should be used instead. If NEW is a string, that is the `use instead' message." (interactive "aMake function obsolete: \nxObsoletion replacement: ") @@ -105,7 +105,7 @@ fn) (defun make-obsolete-variable (var new) - "Make the byte-compiler warn that VARIABLE is obsolete, + "Make the byte-compiler warn that variable VAR is obsolete, and NEW should be used instead. If NEW is a string, then that is the `use instead' message." (interactive @@ -120,7 +120,7 @@ ;; By overwhelming demand, we separate out truly obsolete symbols from ;; those that are present for GNU Emacs compatibility. (defun make-compatible (fn new) - "Make the byte-compiler know that FUNCTION is provided for compatibility. + "Make the byte-compiler know that function FN is provided for compatibility. The warning will say that NEW should be used instead. If NEW is a string, that is the `use instead' message." (interactive "aMake function compatible: \nxCompatible replacement: ") @@ -132,7 +132,7 @@ fn) (defun make-compatible-variable (var new) - "Make the byte-compiler know that VARIABLE is provided for compatibility. + "Make the byte-compiler know that variable VAR is provided for compatibility, and NEW should be used instead. If NEW is a string, then that is the `use instead' message." (interactive diff --text -u 'xemacs-21.5.9/lisp/cl-macs.el' 'xemacs-21.5.10/lisp/cl-macs.el' Index: ./lisp/cl-macs.el --- ./lisp/cl-macs.el Fri Jun 21 06:18:02 2002 +++ ./lisp/cl-macs.el Wed Nov 27 16:15:06 2002 @@ -740,7 +740,25 @@ Destructuring is forgiving in that mismatches in the number of elements on either size will be handled gracefully, either by ignoring or initializing -to nil. +to nil. Destructuring is extremely powerful, and is probably the single +most useful feature of `loop'. + +Other useful features of loops are iterating over hash-tables, collecting values into lists, and being able to modify lists in-place as you iterate over them. As an example of the first two, + +\(loop for x being the hash-key in table using (hash-value y) + collect (cons x y)) + +converts hash-table TABLE to an alist. (What `collect' actually does is +push its value onto the end of an internal list and establish this list as +the default return value of the loop. See below for more information.) + +An example of in-place modification is + +\(setq foo '(1 3 5)) +\(loop for x in-ref foo do + (setf x (* x x))) + +after which foo will contain '(1 9 25). If you don't understand how a particular loop clause works, create an example and use `macroexpand-sexp' to expand the macro. diff --text -u 'xemacs-21.5.9/lisp/cmdloop.el' 'xemacs-21.5.10/lisp/cmdloop.el' Index: ./lisp/cmdloop.el --- ./lisp/cmdloop.el Wed Mar 13 17:52:03 2002 +++ ./lisp/cmdloop.el Wed Nov 27 16:15:06 2002 @@ -1,7 +1,7 @@ ;;; cmdloop.el --- support functions for the top-level command loop. ;; Copyright (C) 1992-4, 1997 Free Software Foundation, Inc. -;; Copyright (C) 2001 Ben Wing. +;; Copyright (C) 2001, 2002 Ben Wing. ;; Author: Richard Mlynarik ;; Date: 8-Jul-92 @@ -130,20 +130,6 @@ :type 'boolean :group 'editing-basics) -(defvar breakpoint-on-error nil - "Break into the C debugger when an unhandled error occurs noninteractively. -This happens by calling `force-debugging-signal'. This can be very -useful when debugging noninteractive errors in tricky situations, -e.g. makefiles, since you can set this variable using an environment -variable, like this: - -\(using csh) setenv XEMACSDEBUG '(setq breakpoint-on-error t)' -\(using bash) export XEMACSDEBUG='(setq breakpoint-on-error t)' - -XEMACSDEBUG is also useful for setting `stack-trace-on-error'. which will -display a Lisp backtrace when exiting noninteractively due to an unhandled -error.") - (defun command-error (error-object) ;; if you want a backtrace before exiting, set stack-trace-on-error. (let* ((inhibit-quit t) @@ -177,9 +163,7 @@ (if (noninteractive) (progn - (when breakpoint-on-error - (force-debugging-signal)) - (message "%s exiting\n." emacs-program-name) + (message "%s exiting.\n" emacs-program-name) (kill-emacs -1))) t)) diff --text -u 'xemacs-21.5.9/lisp/code-files.el' 'xemacs-21.5.10/lisp/code-files.el' Index: ./lisp/code-files.el --- ./lisp/code-files.el Wed Jun 26 09:11:16 2002 +++ ./lisp/code-files.el Mon Nov 18 15:52:27 2002 @@ -233,6 +233,7 @@ If optional fourth arg NOSUFFIX is non-nil, don't try adding suffixes .elc, .el, or .ell to the specified name FILE. Return t if file exists." + (declare (special load-modules-quietly)) (let* ((filename (substitute-in-file-name file)) (handler (find-file-name-handler filename 'load)) (path nil)) @@ -273,12 +274,12 @@ )))) ;; The file name is invalid, or we want to load a binary module (if (and (> (length filename) 0) - (setq path (locate-file filename module-load-path - (and (not nosuffix) - '(".ell" ".dll" ".so" ""))))) + (locate-file filename module-load-path + (and (not nosuffix) + '(".ell" ".dll" ".so" "")))) (if (featurep 'modules) (let ((load-modules-quietly nomessage)) - (load-module path)) + (declare-fboundp (load-module filename))) (signal 'file-error '("This XEmacs does not support modules"))) (and (null noerror) (signal 'file-error (list "Cannot open load file" filename)))) diff --text -u 'xemacs-21.5.9/lisp/code-init.el' 'xemacs-21.5.10/lisp/code-init.el' Index: ./lisp/code-init.el --- ./lisp/code-init.el Tue May 28 17:44:30 2002 +++ ./lisp/code-init.el Sun Sep 1 15:41:41 2002 @@ -276,6 +276,7 @@ -------------------------------------------------- utf-16-little-endian-bom utf-16-little-endian utf-16-bom utf-16-bom + utf-8-bom utf-8-bom iso-7 iso-2022-7bit no-conversion raw-text utf-8 utf-8 @@ -324,6 +325,7 @@ (coding-system-variable-default-value 'no-conversion-coding-system-mapping)) (set-coding-category-system 'ucs-4 'ucs-4) (set-coding-category-system 'utf-8 'utf-8) + (set-coding-category-system 'utf-8-bom 'utf-8-bom) (set-coding-category-system 'utf-16-little-endian 'utf-16-little-endian) (set-coding-category-system 'utf-16 'utf-16) (set-coding-category-system 'utf-16-little-endian-bom @@ -333,6 +335,7 @@ (if (featurep 'mule) '(utf-16-little-endian-bom utf-16-bom + utf-8-bom iso-7 no-conversion utf-8 @@ -347,6 +350,7 @@ ucs-4) '(utf-16-little-endian-bom utf-16-bom + utf-8-bom no-conversion utf-8 utf-16-little-endian diff --text -u 'xemacs-21.5.9/lisp/code-process.el' 'xemacs-21.5.10/lisp/code-process.el' Index: ./lisp/code-process.el --- ./lisp/code-process.el Mon Jul 15 08:09:40 2002 +++ ./lisp/code-process.el Mon Nov 11 01:07:13 2002 @@ -173,11 +173,13 @@ ;; of the region. (let ((s (and deletep (copy-marker start t))) (e (and deletep (copy-marker end)))) - (apply #'call-process program (list (current-buffer) start end) - buffer displayp args) - ; If start and end were the same originally, s will be beyond e now - (if (and deletep (> e s)) - (delete-region s e)))) + (let ((retval + (apply #'call-process program (list (current-buffer) start end) + buffer displayp args))) + ;; If start and end were the same originally, s will be beyond e now + (if (and deletep (> e s)) + (delete-region s e)) + retval))) (defun start-process (name buffer program &rest program-args) "Start a program in a subprocess. Return the process object for it. diff --text -u 'xemacs-21.5.9/lisp/coding.el' 'xemacs-21.5.10/lisp/coding.el' Index: ./lisp/coding.el --- ./lisp/coding.el Wed Mar 13 17:52:04 2002 +++ ./lisp/coding.el Sun Sep 1 15:41:41 2002 @@ -201,7 +201,10 @@ (no-conversion 'no-conversion) (shift-jis 'shift-jis) (unicode (case (coding-system-property coding-system 'type) - (utf-8 'utf-8) + (utf-8 (let ((bom (coding-system-property coding-system + 'need-bom))) + (cond (bom 'utf-8-bom) + ((not bom) 'utf-8)))) (ucs-4 'ucs-4) (utf-16 (let ((bom (coding-system-property coding-system 'need-bom)) diff --text -u 'xemacs-21.5.9/lisp/cus-start.el' 'xemacs-21.5.10/lisp/cus-start.el' Index: ./lisp/cus-start.el --- ./lisp/cus-start.el Tue Jan 22 23:16:39 2002 +++ ./lisp/cus-start.el Thu Dec 12 12:20:36 2002 @@ -49,8 +49,12 @@ (debug-on-quit debug boolean) (delete-auto-save-files auto-save boolean) (delete-exited-processes processes-basics boolean) + (garbage-collection-messages alloc boolean) (indent-tabs-mode editing-basics boolean) (load-ignore-elc-files maint boolean) + (load-ignore-out-of-date-elc-files maint boolean) + (load-show-full-path-in-messages maint boolean) + (load-always-display-messages maint boolean) (load-warn-when-source-newer maint boolean) (load-warn-when-source-only maint boolean) (modifier-keys-are-sticky keyboard boolean) diff --text -u 'xemacs-21.5.9/lisp/custom.el' 'xemacs-21.5.10/lisp/custom.el' Index: ./lisp/custom.el --- ./lisp/custom.el Sat Jul 6 14:48:15 2002 +++ ./lisp/custom.el Mon Sep 2 07:13:53 2002 @@ -186,7 +186,7 @@ `custom-initialize-set' :set VALUE should be a function to set the value of the symbol. It takes two arguments, the symbol to set and the value to - give it. The default is `set-default'. + give it. The default is `custom-set-default'. :get VALUE should be a function to extract the value of symbol. The function takes one argument, a symbol, and should return the current value for that symbol. The default is @@ -472,10 +472,18 @@ (setq old (cdr old))) (put symbol prop (cons (list theme mode value) old)))) +(defvar custom-local-buffer nil + "Non-nil, in a Customization buffer, means customize a specific buffer. +If this variable is non-nil, it should be a buffer, +and it means customize the local bindings of that buffer. +This variable is a permanent local, and it normally has a local binding +in every Customization buffer.") +(put 'custom-local-buffer 'permanent-local t) + (defun custom-set-variables (&rest args) "Initialize variables according to user preferences. The settings are registered as theme `user'. -The arguments should be a list where each entry has the form: +Each argument should be a list of the form: (SYMBOL VALUE [NOW [REQUEST [COMMENT]]]) @@ -514,7 +522,7 @@ ;; values. (t (nth 3 a2))))))) (let ((immediate (get theme 'theme-immediate))) - (while args * etc/custom/example-themes/example-theme.el: + (while args (let ((entry (car args))) (if (listp entry) (let* ((symbol (nth 0 entry)) @@ -522,10 +530,13 @@ (now (nth 2 entry)) (requests (nth 3 entry)) (comment (nth 4 entry)) - (set (or (get symbol 'custom-set) 'set-default))) + (set (or (get symbol 'custom-set) 'custom-set-default))) (put symbol 'saved-value (list value)) (custom-push-theme 'theme-value symbol theme 'set value) (put symbol 'saved-variable-comment comment) + ;; Allow for errors in the case where the setter has + ;; changed between versions, say, but let the user know. + (condition-case data (cond ((or now immediate) ;; Rogue variable, set it now. (put symbol 'force-value (if now 'rogue 'immediate)) @@ -533,6 +544,8 @@ ((default-boundp symbol) ;; Something already set this, overwrite it. (funcall set symbol (eval value)))) + (error + (message "Error setting %s: %s" symbol data))) (and (or now (default-boundp symbol)) (put symbol 'variable-comment comment)) (when requests @@ -688,6 +701,15 @@ The ARGS are as in `custom-theme-reset-variables'." (apply #'custom-theme-reset-variables 'user args)) +(defun custom-set-default (variable value) + "Default :set function for a customizable variable. +Normally, this sets the default value of VARIABLE to VALUE, +but if `custom-local-buffer' is non-nil, +this sets the local binding in that buffer instead." + (if custom-local-buffer + (with-current-buffer custom-local-buffer + (set variable value)) + (set-default variable value))) ;;; The End. diff --text -u 'xemacs-21.5.9/lisp/dialog.el' 'xemacs-21.5.10/lisp/dialog.el' Index: ./lisp/dialog.el --- ./lisp/dialog.el Tue Jun 4 15:04:16 2002 +++ ./lisp/dialog.el Thu Nov 28 21:34:44 2002 @@ -662,7 +662,9 @@ 'internal-make-dialog-box-exit did) (remove-hook 'delete-dialog-box-hook ',sym)))) - (add-hook 'delete-dialog-box-hook sym) + (if (framep id) + (add-hook 'delete-frame-hook sym) + (add-hook 'delete-dialog-box-hook sym)) (mapc 'disable-frame frames) (block nil (while t @@ -744,7 +746,7 @@ (set-face-background 'modeline [default background] frame) ;; resize before mapping (when cl-autosize - (set-frame-pixel-size + (set-frame-displayable-pixel-size frame (image-instance-width (glyph-image-instance cl-spec diff --text -u 'xemacs-21.5.9/lisp/dump-paths.el' 'xemacs-21.5.10/lisp/dump-paths.el' Index: ./lisp/dump-paths.el --- ./lisp/dump-paths.el Fri Mar 15 16:43:18 2002 +++ ./lisp/dump-paths.el Fri Oct 11 23:10:03 2002 @@ -119,24 +119,24 @@ site-directory mule-lisp-directory)) - (if called-early - (progn - (setq module-directory (paths-find-module-directory roots)) - (if debug-paths - (princ (format "module-directory:\n%S\n" module-directory) - 'external-debugging-output)) - (setq site-module-directory (and (null inhibit-site-modules) - (paths-find-site-module-directory - roots))) - (if (and debug-paths (null inhibit-site-modules)) - (princ (format "site-module-directory:\n%S\n" - site-module-directory) - 'external-debugging-output)) - - (setq module-load-path (paths-construct-module-load-path - roots - module-directory - site-module-directory))) + (setq module-directory (paths-find-module-directory roots)) + (if debug-paths + (princ (format "module-directory:\n%S\n" module-directory) + 'external-debugging-output)) + (setq site-module-directory (and (null inhibit-site-modules) + (paths-find-site-module-directory + roots))) + (if (and debug-paths (null inhibit-site-modules)) + (princ (format "site-module-directory:\n%S\n" + site-module-directory) + 'external-debugging-output)) + + (setq module-load-path (paths-construct-module-load-path + roots + module-directory + site-module-directory)) + + (unless called-early (setq Info-directory-list (paths-construct-info-path roots early-packages late-packages last-packages)) diff --text -u 'xemacs-21.5.9/lisp/dumped-lisp.el' 'xemacs-21.5.10/lisp/dumped-lisp.el' Index: ./lisp/dumped-lisp.el --- ./lisp/dumped-lisp.el Fri Jun 28 23:20:42 2002 +++ ./lisp/dumped-lisp.el Mon Dec 2 21:27:20 2002 @@ -40,6 +40,9 @@ "process" ;; This is bad. network-streams may not be defined. (when-feature multicast "multicast") ; #+network-streams implicitly true "map-ynp" + "undo-stack" + "window" ; simple needs `save-window-excursion' + "window-xemacs" "simple" "keydefs" ; Before loaddefs so that keymap vars exist. "abbrev" @@ -68,9 +71,6 @@ "isearch-mode" "buffer" "buff-menu" - "undo-stack" - "window" - "window-xemacs" "paths.el" ; don't get confused if paths compiled. "lisp" "page" diff --text -u 'xemacs-21.5.9/lisp/faces.el' 'xemacs-21.5.10/lisp/faces.el' Index: ./lisp/faces.el --- ./lisp/faces.el Fri Jun 21 06:18:02 2002 +++ ./lisp/faces.el Tue Dec 3 23:02:50 2002 @@ -234,7 +234,7 @@ (setq value (if (or (charsetp matchspec) (and (symbolp matchspec) (find-charset matchspec))) - (or + (or (specifier-matching-instance value (cons matchspec nil) domain default no-fallback) @@ -625,6 +625,27 @@ (interactive (face-interactive "background-pixmap")) (set-face-property face 'background-pixmap pixmap locale tag-set how-to-add)) +(defvar background-pixmap-file-history nil + ;; History for `set-face-background-pixmap-file' + ) + +(defun set-face-background-pixmap-file (face file) + "Read (and set) the background pixmap of FACE from FILE. +This function is a simplified version of `set-face-background-pixmap', +designed for interactive use." + (interactive + (let* ((face (read-face-name "Set background pixmap of face: ")) + (default (and (face-background-pixmap-instance face) + ((image-instance-file-name + (face-background-pixmap-instance face))))) + (file (read-file-name + (format "Set background pixmap of face %s to: " + (symbol-name face)) + nil default t nil + 'background-pixmap-file-history))) + (list face (if (equal file "") nil file)))) + (set-face-property face 'background-pixmap file)) + (defun face-display-table (face &optional locale tag-set exact-p) "Return the display table of FACE in LOCALE. @@ -1136,7 +1157,7 @@ behavior -- changes to the global value, to other locales, won't affect this locale, (b) the face will actually look bold in the locale. -STAGE 3: (if called for) +STAGE 3: (if called for) The way the frobbing works depends on the device type -- first on whether or not it's TTY, and second, if it's a window-system device type, on which @@ -1295,7 +1316,7 @@ ;; Size frobbing ;; Thx Jan Vroonhof, Ref xemacs-beta <87oflypbum.fsf@petteflet.ntlworld.com> -;; Jan had a separate helper function +;; Jan had a separate helper function (defun make-face-size (face size &optional locale tags exact-p) "Adjust FACE to SIZE in LOCALE, if possible." (interactive (list (read-face-name "Set size of which face: ") diff --text -u 'xemacs-21.5.9/lisp/files.el' 'xemacs-21.5.10/lisp/files.el' Index: ./lisp/files.el --- ./lisp/files.el Tue Jun 4 15:04:17 2002 +++ ./lisp/files.el Wed Oct 2 18:29:59 2002 @@ -1222,9 +1222,11 @@ :error-form nil (hack-local-variables (not find-file))))) -;; #### This variable sucks in the package model. There should be a -;; way for new packages to add their entries to auto-mode-alist in a -;; clean way. Per Abrahamsen suggested splitting auto-mode-alist to +;; `auto-mode-alist' used to contain entries for modes in core and in packages. +;; The applicable entries are now located in the corresponding modes in +;; packages, the ones here are for core modes. Ditto for +;; `interpreter-mode-alist' below. +;; Per Abrahamsen suggested splitting auto-mode-alist to ;; several distinct variables such as, in order of precedence, ;; `user-auto-mode-alist' for users, `package-auto-mode-alist' for ;; packages and `auto-mode-alist' (which might also be called @@ -1233,82 +1235,20 @@ (defvar auto-mode-alist '(("\\.te?xt\\'" . text-mode) - ("\\.[chi]\\'" . c-mode) ("\\.el\\'" . emacs-lisp-mode) - ("\\.\\(?:[CH]\\|cc\\|hh\\)\\'" . c++-mode) - ("\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\'" . c++-mode) - ("\\.java\\'" . java-mode) - ("\\.idl\\'" . idl-mode) - ("\\.f\\(?:or\\)?\\'" . fortran-mode) - ("\\.F\\(?:OR\\)?\\'" . fortran-mode) - ("\\.[fF]90\\'" . f90-mode) -;;; Less common extensions come here -;;; so more common ones above are found faster. - ("\\.\\([pP][Llm]\\|al\\)\\'" . perl-mode) - ("\\.py\\'" . python-mode) - ("\\.texi\\(?:nfo\\)?\\'" . texinfo-mode) - ("\\.ad[abs]\\'" . ada-mode) ("\\.c?l\\(?:i?sp\\)?\\'" . lisp-mode) - ("\\.p\\(?:as\\)?\\'" . pascal-mode) - ("\\.ltx\\'" . latex-mode) - ("\\.[sS]\\'" . asm-mode) - ("[Cc]hange.?[Ll]og?\\(?:.[0-9]+\\)?\\'" . change-log-mode) - ("\\$CHANGE_LOG\\$\\.TXT" . change-log-mode) - ("\\.scm?\\(?:\\.[0-9]*\\)?\\'" . scheme-mode) - ("\\.e\\'" . eiffel-mode) - ("\\.mss\\'" . scribe-mode) - ("\\.m\\(?:[mes]\\|an\\)\\'" . nroff-mode) - ("\\.icn\\'" . icon-mode) - ("\\.\\(?:[ckz]?sh\\|shar\\)\\'" . sh-mode) - ("\\.[Pp][Rr][Oo]\\'" . idlwave-mode) - ("\\.si\\(v\\|eve\\)\\'" . sieve-mode) - ;; #### Unix-specific! - ("/\\.\\(?:bash_\\|z\\)?\\(profile\\|login\\|logout\\)\\'" . sh-mode) - ("/\\.\\(?:[ckz]sh\\|bash\\|tcsh\\|es\\|xinit\\|startx\\)rc\\'" . sh-mode) - ("/\\.\\(?:[kz]shenv\\|xsession\\)\\'" . sh-mode) - ("\\.m?spec$" .sh-mode) - ;; The following come after the ChangeLog pattern for the sake of - ;; ChangeLog.1, etc. and after the .scm.[0-9] pattern too. - ("\\.[123456789]\\'" . nroff-mode) - ("\\.[tT]e[xX]\\'" . tex-mode) - ("\\.\\(?:sty\\|cls\\|bbl\\)\\'" . latex-mode) - ("\\.bib\\'" . bibtex-mode) ("\\.article\\'" . text-mode) ("\\.letter\\'" . text-mode) - ("\\.\\(?:tcl\\|exp\\)\\'" . tcl-mode) - ("\\.wrl\\'" . vrml-mode) - ("\\.awk\\'" . awk-mode) - ("\\.prolog\\'" . prolog-mode) - ("\\.\\(?:arc\\|zip\\|lzh\\|zoo\\)\\'" . archive-mode) ;; Mailer puts message to be edited in /tmp/Re.... or Message ;; #### Unix-specific! ("\\`/tmp/Re" . text-mode) ("/Message[0-9]*\\'" . text-mode) - ("/drafts/[0-9]+\\'" . mh-letter-mode) ;; some news reader is reported to use this ("^/tmp/fol/" . text-mode) - ("\\.y\\'" . c-mode) - ("\\.lex\\'" . c-mode) - ("\\.m\\'" . objc-mode) - ("\\.oak\\'" . scheme-mode) - ("\\.[sj]?html?\\'" . html-mode) - ("\\.jsp\\'" . html-mode) - ("\\.xml\\'" . xml-mode) - ("\\.\\(?:sgml?\\|dtd\\)\\'" . sgml-mode) - ("\\.c?ps\\'" . postscript-mode) ;; .emacs following a directory delimiter in either Unix or ;; Windows syntax. ("[/\\][._].*emacs\\'" . emacs-lisp-mode) - ("\\.m4\\'" . autoconf-mode) - ("configure\\.\\(in\\|ac\\)\\'" . autoconf-mode) ("\\.ml\\'" . lisp-mode) - ("\\.ma?ke?\\'" . makefile-mode) - ("\\(GNU\\)?[Mm]akefile\\(\\.\\|\\'\\)" . makefile-mode) - ("[./\\]X\\(defaults\\|environment\\|resources\\|modmap\\)\\'" . xrdb-mode) - ;; #### The following three are Unix-specific (but do we care?) - ("/app-defaults/" . xrdb-mode) - ("\\.[^/]*wm2?\\(?:rc\\)?\\'" . winmgr-mode) - ("\\.\\(?:jpe?g\\|JPE?G\\|png\\|PNG\\|gif\\|GIF\\|tiff?\\|TIFF?\\)\\'" . image-mode) ) "Alist of filename patterns vs. corresponding major mode functions. Each element looks like (REGEXP . FUNCTION) or (REGEXP FUNCTION NON-NIL). @@ -1321,17 +1261,7 @@ REGEXP and search the list again for another match.") (defvar interpreter-mode-alist - '(("^#!.*csh" . sh-mode) - ("^#!.*\\b\\(scope\\|wish\\|tcl\\|tclsh\\|expect\\)" . tcl-mode) - ("^#!.*sh\\b" . sh-mode) - ("perl" . perl-mode) - ("python" . python-mode) - ("awk\\b" . awk-mode) - ("rexx" . rexx-mode) - ("scm\\|guile" . scheme-mode) - ("emacs" . emacs-lisp-mode) - ("make" . makefile-mode) - ("^:" . sh-mode)) + '(("emacs" . emacs-lisp-mode)) "Alist mapping interpreter names to major modes. This alist is used to guess the major mode of a file based on the contents of the first line. This line often contains something like: @@ -2829,6 +2759,7 @@ (funcall revert-buffer-function ignore-auto noconfirm) (let* ((opoint (point)) (newbuf nil) + (found nil) (delay-prompt nil) (auto-save-p (and (not ignore-auto) (recent-auto-save-p) @@ -2843,10 +2774,9 @@ (error "Buffer does not seem to be associated with any file")) ((or noconfirm (and (not (buffer-modified-p)) - (let (found) - (dolist (rx revert-without-query found) - (when (string-match rx file-name) - (setq found t))))) + (dolist (rx revert-without-query found) + (when (string-match rx file-name) + (setq found t)))) ;; If we might perform an optimized revert then we ;; want to delay prompting in case we don't need to ;; do it at all @@ -2862,7 +2792,7 @@ (buffer-modified-p) (and (setq newbuf (revert-buffer-internal file-name)) - (or noconfirm + (or noconfirm found (and delay-prompt (yes-or-no-p (format "Revert buffer from file %s? " diff --text -u 'xemacs-21.5.9/lisp/font-lock.el' 'xemacs-21.5.10/lisp/font-lock.el' Index: ./lisp/font-lock.el --- ./lisp/font-lock.el Sat Aug 3 00:01:10 2002 +++ ./lisp/font-lock.el Thu Oct 3 23:40:29 2002 @@ -1714,9 +1714,8 @@ ;; Various functions. (defun font-lock-compile-keywords (keywords) - "Compile KEYWORDS into the form (t KEYWORD ...). -Here KEYWORD is of the form (MATCHER HIGHLIGHT ...) as shown in the -`font-lock-keywords' doc string." + "Compile KEYWORDS (a list) and return the list of compiled keywords. +Each keyword has the form (MATCHER HIGHLIGHT ...). See `font-lock-keywords'." (if (eq (car-safe keywords) t) keywords (cons t (mapcar 'font-lock-compile-keyword keywords)))) diff --text -u 'xemacs-21.5.9/lisp/font-menu.el' 'xemacs-21.5.10/lisp/font-menu.el' Index: ./lisp/font-menu.el --- ./lisp/font-menu.el Fri Jun 21 06:18:03 2002 +++ ./lisp/font-menu.el Tue Nov 12 12:52:24 2002 @@ -137,11 +137,13 @@ (defvar font-menu-preferred-resolution (make-specifier-and-init 'generic '((global ((mswindows) . ":") + ((gtk) . "*-*") ((x) . "*-*"))) t) "Preferred horizontal and vertical font menu resolution (e.g. \"75:75\").") (defvar font-menu-size-scaling (make-specifier-and-init 'integer '((global ((mswindows) . 1) + ((gtk) . 10) ((x) . 10))) t) "Scale factor used in defining font sizes.") @@ -284,7 +286,7 @@ (font-data (font-menu-font-data 'default dcache)) (from-family (aref font-data 1)) (from-size (aref font-data 2)) - (from-weight (aref font-data 3)) + (from-weight (aref font-data 3)) (from-slant (aref font-data 4)) (face-list-to-change (delq 'default (face-list))) new-default-face-font) @@ -315,7 +317,9 @@ (condition-case c (font-menu-change-face face from-family from-weight from-size - family weight size) + (or family from-family) + (or weight from-weight) + (or size from-size)) (error (display-error c nil) (sit-for 1))))) @@ -330,7 +334,7 @@ ;; OK Let Customize do it. (custom-set-face-update-spec 'default (list (list 'type (device-type))) - (list :family family + (list :family (or family from-family) :size (concat (int-to-string (/ (or size from-size) diff --text -u 'xemacs-21.5.9/lisp/gtk-font-menu.el' 'xemacs-21.5.10/lisp/gtk-font-menu.el' Index: ./lisp/gtk-font-menu.el --- ./lisp/gtk-font-menu.el Sat May 5 07:42:04 2001 +++ ./lisp/gtk-font-menu.el Wed Nov 13 03:58:16 2002 @@ -166,10 +166,8 @@ families) (mapcar (lambda (x) (vector (if (/= 0 (% x 10)) - ;; works with no LISP_FLOAT_TYPE - (concat (int-to-string (/ x 10)) "." - (int-to-string (% x 10))) - (int-to-string (/ x 10))) + (number-to-string (/ x 10.0)) + (number-to-string (/ x 10))) (list 'font-menu-set-font nil nil x) ':style 'radio ':active nil ':selected nil)) sizes) diff --text -u 'xemacs-21.5.9/lisp/help.el' 'xemacs-21.5.10/lisp/help.el' Index: ./lisp/help.el --- ./lisp/help.el Tue Jun 4 15:04:21 2002 +++ ./lisp/help.el Wed Nov 27 16:15:06 2002 @@ -155,6 +155,18 @@ (define-key help-mode-map "n" 'help-next-section) (define-key help-mode-map "p" 'help-prev-section) +(define-derived-mode temp-buffer-mode view-major-mode "Temp" + "Major mode for viewing temporary buffers. +Exit using \\\\[help-mode-quit]. + +Entry to this mode runs the normal hook `temp-buffer-mode-hook'. +Commands: +\\{temp-buffer-mode-map}" + ) + +(define-key temp-buffer-mode-map "q" 'help-mode-quit) +(define-key temp-buffer-mode-map "Q" 'help-mode-bury) + (defun describe-function-at-point () "Describe directly the function at point in the other window." (interactive) @@ -500,6 +512,9 @@ (defcustom mode-for-help 'help-mode "*Mode that help buffers are put into.") +(defcustom mode-for-temp-buffer 'temp-buffer-mode + "*Mode that help buffers are put into.") + (defvar help-sticky-window nil ;; Window into which help buffers will be displayed, rather than ;; always searching for a new one. This is INTERNAL and liable to @@ -512,23 +527,22 @@ (make-variable-buffer-local 'help-window-config) (put 'help-window-config 'permanent-local t) -(defun with-displaying-help-buffer (thunk &optional name) +(defmacro with-displaying-temp-buffer (name &rest body) "Form which makes a help buffer with given NAME and evaluates BODY there. -The actual name of the buffer is generated by the function `help-buffer-name'. -Use this function for displaying help when C-h something is pressed or -in similar situations. Do *not* use it when you are displaying a help -message and then prompting for input in the minibuffer -- this macro -usually selects the help buffer, which is not what you want in those -situations." - (let* ((winconfig (current-window-configuration)) - (was-one-window (one-window-p)) - (buffer-name (help-buffer-name name)) - (help-not-visible - (not (and (windows-of-buffer buffer-name) ;shortcut - (memq (selected-frame) - (mapcar 'window-frame - (windows-of-buffer buffer-name))))))) +Use this function for displaying information in temporary buffers, where the +user will typically view the information and then exit using +\\\\[help-mode-quit]. + +The buffer is put into the mode specified in `mode-for-temp-buffer'." + `(let* ((winconfig (current-window-configuration)) + (was-one-window (one-window-p)) + (buffer-name ,name) + (help-not-visible + (not (and (windows-of-buffer buffer-name) ;shortcut + (memq (selected-frame) + (mapcar 'window-frame + (windows-of-buffer buffer-name))))))) (help-register-and-maybe-prune-excess buffer-name) ;; if help-sticky-window is bogus or deleted, get rid of it. (if (and help-sticky-window (or (not (windowp help-sticky-window)) @@ -541,13 +555,13 @@ (set-window-buffer help-sticky-window buffer)) temp-buffer-show-function))) (with-output-to-temp-buffer buffer-name - (prog1 (funcall thunk) + (prog1 (progn ,@body) (save-excursion (set-buffer standard-output) - (funcall mode-for-help))))) + (funcall mode-for-temp-buffer))))) (let ((helpwin (get-buffer-window buffer-name))) (when helpwin - ;; If the *Help* buffer is already displayed on this + ;; If the temp buffer is already displayed on this ;; frame, don't override the previous configuration (when help-not-visible (with-current-buffer (window-buffer helpwin) @@ -556,13 +570,28 @@ (select-window helpwin)) (cond ((eq helpwin (selected-window)) (display-message 'command - (substitute-command-keys "Type \\[help-mode-quit] to remove help window, \\[scroll-up] to scroll the help."))) + (substitute-command-keys "Type \\[help-mode-quit] to remove window, \\[scroll-up] to scroll the text."))) (was-one-window (display-message 'command - (substitute-command-keys "Type \\[delete-other-windows] to remove help window, \\[scroll-other-window] to scroll the help."))) + (substitute-command-keys "Type \\[delete-other-windows] to remove window, \\[scroll-other-window] to scroll the text."))) (t (display-message 'command - (substitute-command-keys "Type \\[switch-to-buffer-other-window] to restore the other window, \\[scroll-other-window] to scroll the help."))))))))) + (substitute-command-keys "Type \\[switch-to-buffer-other-window] to restore the other window, \\[scroll-other-window] to scroll the text."))))))))) + +(put 'with-displaying-temp-buffer 'lisp-indent-function 1) + +(defun with-displaying-help-buffer (thunk &optional name) + "Form which makes a help buffer with given NAME and evaluates BODY there. +The actual name of the buffer is generated by the function `help-buffer-name'. + +Use this function for displaying help when C-h something is pressed or +in similar situations. Do *not* use it when you are displaying a help +message and then prompting for input in the minibuffer -- this macro +usually selects the help buffer, which is not what you want in those +situations." + (let ((mode-for-temp-buffer mode-for-help)) + (with-displaying-temp-buffer (help-buffer-name name) + (funcall thunk)))) (defun describe-key (key) "Display documentation of the function invoked by KEY. @@ -882,8 +911,11 @@ (defun view-lossage (&optional no-keys) "Display recent input keystrokes and recent minibuffer messages. The number of keys shown is controlled by `view-lossage-key-count'. -The number of messages shown is controlled by `view-lossage-message-count'." - (interactive) +The number of messages shown is controlled by `view-lossage-message-count'. + +If optional arg NO-KEYS (prefix arg, interactively) is non-nil, +then recent input keystrokes output is omitted." + (interactive "P") (with-displaying-help-buffer (lambda () (unless no-keys diff --text -u 'xemacs-21.5.9/lisp/hyper-apropos.el' 'xemacs-21.5.10/lisp/hyper-apropos.el' Index: ./lisp/hyper-apropos.el --- ./lisp/hyper-apropos.el Fri Mar 15 16:43:20 2002 +++ ./lisp/hyper-apropos.el Tue Oct 8 12:45:12 2002 @@ -1321,7 +1321,8 @@ customizable-p) (vector "Show keys for" 'hyper-apropos-where-is command-p) (vector "Invoke command" 'hyper-apropos-invoke-fn command-p) - (vector "Find function" 'hyper-apropos-find-function function-p) + (vector "Find function" 'hyper-apropos-find-function function-p) + (vector "Find variable" 'hyper-apropos-find-variable variable-p) (vector "Find tag" 'hyper-apropos-find-tag notjunk) (and apropos-p ["Add keyword..." hyper-apropos-add-keyword t]) diff --text -u 'xemacs-21.5.9/lisp/keydefs.el' 'xemacs-21.5.10/lisp/keydefs.el' Index: ./lisp/keydefs.el --- ./lisp/keydefs.el Thu May 9 17:33:46 2002 +++ ./lisp/keydefs.el Mon Oct 7 19:27:18 2002 @@ -343,6 +343,7 @@ (define-key global-map "\C-xr+" 'increment-register) (define-key global-map "\C-xrc" 'clear-rectangle) (define-key global-map "\C-xrk" 'kill-rectangle) +(define-key global-map "\C-xrd" 'delete-rectangle) (define-key global-map "\C-xry" 'yank-rectangle) (define-key global-map "\C-xro" 'open-rectangle) (define-key global-map "\C-xrt" 'string-rectangle) diff --text -u 'xemacs-21.5.9/lisp/lib-complete.el' 'xemacs-21.5.10/lisp/lib-complete.el' Index: ./lisp/lib-complete.el --- ./lisp/lib-complete.el Sun Aug 4 09:05:48 2002 +++ ./lisp/lib-complete.el Wed Nov 27 16:15:07 2002 @@ -1,7 +1,8 @@ ;;; lib-complete.el --- Completion on the lisp search path ;; Copyright (C) 1997 Free Software Foundation, Inc. -;; Copyright (C) Mike Williams 1991 +;; Copyright (C) 1991 Mike Williams . +;; Copyright (C) 2002 Ben Wing. ;; Author: Mike Williams ;; Maintainer: XEmacs Development Team @@ -31,28 +32,9 @@ ;; This file is dumped with XEmacs. -;; ======================================================================== -;; lib-complete.el -- Completion on a search path -;; Author : Mike Williams -;; Created On : Sat Apr 20 17:47:21 1991 -;; Last Modified By: Heiko M|nkel -;; Additional XEmacs integration By: Chuck Thompson -;; Last Modified On: Thu Jul 1 14:23:00 1994 -;; ======================================================================== -;; NOTE: XEmacs must be redumped if this file is changed. -;; -;; Copyright (C) Mike Williams 1991 -;; -;; Keywords: utility, lisp - ;; Many thanks to Hallvard Furuseth for his ;; helpful suggestions. -;; The function locate-file is removed, because of its incompatibility -;; with the buildin function of the lemacs 19.10 (Heiko M|nkel). - -;; There is now the new function find-library in this package. - ;;; ChangeLog: ;; 4/26/97: sb Mule-ize. @@ -295,17 +277,23 @@ ;;=== find-library with completion (Author: Bob Weiner) =================== +;; should be called find-lisp-source-path! (defcustom find-library-source-path nil "The default list of directories where find-library searches. If this variable is `nil' then find-library searches `load-path' by default. +If this is set to a function, it will be called the first time this value +is needed, to compute the actual list, which will then be substituted into +the variable. + A good way to set this variable is like this: \(setq find-library-source-path - (paths-find-recursive-load-path - (list lisp-directory \"/src/xemacs/xemacs-packages-src/\"))) + #'(lambda () + (paths-find-recursive-load-path + (list lisp-directory \"/src/xemacs/xemacs-packages-src/\")))) " :type '(repeat directory) :group 'find-function) @@ -327,6 +315,11 @@ (read-coding-system "Coding System: ")))) (let ((path (if (or (null library) (equal library "")) nil + (when (functionp find-library-source-path) + (message "Computing find-library-source-path...") + (setq find-library-source-path + (funcall find-library-source-path)) + (message "Computing find-library-source-path... done.")) (locate-file library (or find-library-source-path load-path) ":.el:.el.gz:.el.Z:.elc")))) (if path (funcall (if (fboundp display-function) diff --text -u 'xemacs-21.5.9/lisp/loadhist.el' 'xemacs-21.5.10/lisp/loadhist.el' Index: ./lisp/loadhist.el --- ./lisp/loadhist.el Fri Apr 13 03:21:30 2001 +++ ./lisp/loadhist.el Mon Nov 18 15:52:28 2002 @@ -124,7 +124,8 @@ (error "Loaded libraries %s depend on %s" (prin1-to-string dependents) file)))) (let* ((flist (feature-symbols feature)) - (file (car flist))) + (file (car flist)) + (unloading-module nil)) (flet ((reset-aload (x) (let ((aload (get x 'autoload))) (if aload (fset x (cons 'autoload aload)))))) @@ -134,7 +135,9 @@ ((consp x) ;; Remove any feature names that this file provided. (if (eq (car x) 'provide) - (setq features (delq (cdr x) features)))) + (setq features (delq (cdr x) features)) + (if (eq (car x) 'module) + (setq unloading-module t)))) ((and (boundp x) (fboundp x)) (makunbound x) @@ -148,7 +151,10 @@ (cdr flist))) ;; Delete the load-history element for this file. (let ((elt (assoc file load-history))) - (setq load-history (delq elt load-history))))) + (setq load-history (delq elt load-history))) + ;; If it is a module, really unload it. + (if unloading-module + (declare-fboundp (unload-module (symbol-name feature)))))) (provide 'loadhist) diff --text -u 'xemacs-21.5.9/lisp/obsolete.el' 'xemacs-21.5.10/lisp/obsolete.el' Index: ./lisp/obsolete.el --- ./lisp/obsolete.el Wed Jun 26 09:11:16 2002 +++ ./lisp/obsolete.el Wed Oct 2 18:30:05 2002 @@ -107,6 +107,8 @@ (make-obsolete 'set-window-dot 'set-window-point) (define-obsolete-function-alias 'extent-buffer 'extent-object) +(define-compatible-variable-alias 'parse-sexp-lookup-properties + 'lookup-syntax-properties) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; frames (defun frame-first-window (frame) diff --text -u 'xemacs-21.5.9/lisp/package-get.el' 'xemacs-21.5.10/lisp/package-get.el' Index: ./lisp/package-get.el --- ./lisp/package-get.el Wed Jul 17 15:13:39 2002 +++ ./lisp/package-get.el Mon Nov 18 15:52:28 2002 @@ -187,51 +187,60 @@ ;; North America ("Pre-Releases" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ("xemacs.org" "ftp.xemacs.org" "pub/xemacs/packages") + ("ca.xemacs.org (Canada)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packages") ("crc.ca (Canada)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages") - ("ualberta.ca (Canada)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/packages") - ("uiuc.edu (United States)" "uiarchive.uiuc.edu" "pub/packages/xemacs/packages") - ("unc.edu (United States)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages") - ("utk.edu (United States)" "ftp.sunsite.utk.edu" "pub/xemacs/packages") + ("us.xemacs.org (United States)" "ftp.us.xemacs.org" "pub/xemacs/packages") + ("ibiblio.org (United States)" "ibiblio.org" "pub/packages/editors/xemacs/packages") + ("stealth.net (United States)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/packages") + ;("uiuc.edu (United States)" "uiarchive.uiuc.edu" "pub/packages/xemacs/packages") ;; South America - ("unicamp.br (Brazil)" "ftp.unicamp.br" "pub/xemacs/packages") + ("br.xemacs.org (Brazil)" "ftp.br.xemacs.org" "pub/xemacs/packages") ;; Europe - ("tuwien.ac.at (Austria)" "gd.tuwien.ac.at" "editors/xemacs/packages") - ("auc.dk (Denmark)" "sunsite.auc.dk" "pub/emacs/xemacs/packages") - ("doc.ic.ac.uk (England)" "sunsite.doc.ic.ac.uk" "packages/xemacs/packages") - ("funet.fi (Finland)" "ftp.funet.fi" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") - ("cenatls.cena.dgac.fr (France)" "ftp.cenatls.cena.dgac.fr" "Emacs/xemacs/packages") + ("at.xemacs.org (Austria)" "ftp.at.xemacs.org" "editors/xemacs/packages") + ("be.xemacs.org (Belgium)" "ftp.be.xemacs.org" "xemacs/packages") + ("cz.xemacs.org (Czech Republic)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages") + ("dk.xemacs.org (Denmark)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packages") + ("fi.xemacs.org (Finland)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") + ("fr.xemacs.org (France)" "ftp.fr.xemacs.org" "pub/xemacs/packages") ("pasteur.fr (France)" "ftp.pasteur.fr" "pub/computing/xemacs/packages") + ("de.xemacs.org (Germany)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/packages") ("tu-darmstadt.de (Germany)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages") - ("kfki.hu (Hungary)" "ftp.kfki.hu" "pub/packages/xemacs/packages") - ("eunet.ie (Ireland)" "ftp.eunet.ie" "mirrors/ftp.xemacs.org/pub/xemacs/packages") - ("uniroma2.it (Italy)" "ftp.uniroma2.it" "unix/misc/dist/XEMACS/packages") - ("uio.no (Norway)" "sunsite.uio.no" "pub/xemacs/packages") - ("icm.edu.pl (Poland)" "ftp.icm.edu.pl" "pub/unix/editors/xemacs/packages") - ("srcc.msu.su (Russia)" "ftp.srcc.msu.su" "mirror/ftp.xemacs.org/packages") - ("sunet.se (Sweden)" "ftp.sunet.se" "pub/gnu/xemacs/packages") - ("cnlab-switch.ch (Switzerland)" "sunsite.cnlab-switch.ch" "mirror/xemacs/packages") + ;("hu.xemacs.org (Hungary)" "ftp.hu.xemacs.org" "pub/packages/xemacs/packages") + ("ie.xemacs.org (Ireland)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/packages") + ("it.xemacs.org (Italy)" "ftp.it.xemacs.org" "unix/packages/XEMACS/packages") + ("no.xemacs.org (Norway)" "ftp.no.xemacs.org" "pub/xemacs/packages") + ("pl.xemacs.org (Poland)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/packages") + ("ru.xemacs.org (Russia)" "ftp.ru.xemacs.org" "pub/xemacs/packages") + ("sk.xemacs.org (Slovakia)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/packages") + ("se.xemacs.org (Sweden)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages") + ("ch.xemacs.org (Switzerland)" "ftp.ch.xemacs.org" "mirror/xemacs/packages") + ("uk.xemacs.org (United Kingdom)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/packages") ;; Asia + ("jp.xemacs.org (Japan)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages") ("aist.go.jp (Japan)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("asahi-net.or.jp (Japan)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("dti.ad.jp (Japan)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") ("jaist.ac.jp (Japan)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") ("nucba.ac.jp (Japan)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") ("sut.ac.jp (Japan)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") - ("tsukuba.ac.jp (Japan)" "ftp.netlab.is.tsukuba.ac.jp" "pub/GNU/xemacs/packages") - ("kreonet.re.kr (Korea)" "ftp.kreonet.re.kr" "pub/tools/emacs/xemacs/packages") - ("nctu.edu.tw (Taiwan)" "coda.nctu.edu.tw" "Editors/xemacs/packages") + ("kr.xemacs.org (Korea)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/packages") + ;("tw.xemacs.org (Taiwan)" "ftp.tw.xemacs.org" "Editors/xemacs/packages") ;; Africa - ("sun.ac.za (South Africa)" "ftp.sun.ac.za" "xemacs/packages") + ("za.xemacs.org (South Africa)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/packages") ;; Middle East - ("isu.net.sa (Saudi Arabia)" "ftp.isu.net.sa" "pub/mirrors/ftp.xemacs.org/packages") + ("sa.xemacs.org (Saudi Arabia)" "ftp.sa.xemacs.org" "pub/mirrors/ftp.xemacs.org/xemacs/packages") ;; Australia + ("au.xemacs.org (Australia)" "ftp.au.xemacs.org" "pub/xemacs/packages") ("aarnet.edu.au (Australia)" "mirror.aarnet.edu.au" "pub/xemacs/packages") + + ;; Oceania + ("nz.xemacs.org (New Zealand)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.org/packages") ) "*List of remote sites available for downloading packages. List format is '(site-description site-name directory-on-site). @@ -445,21 +454,22 @@ (progn (setq package-get-continue-update-base nil) (autoload 'mc-setversion "mc-setversion") - (cond ((locate-file "gpg" exec-path - '("" ".btm" ".bat" ".cmd" ".exe" ".com") - 'executable) - (mc-setversion "gpg")) - ((locate-file "pgpe" exec-path - '("" ".btm" ".bat" ".cmd" ".exe" ".com") - 'executable) - (mc-setversion "5.0")) - ((locate-file "pgp" exec-path - '("" ".btm" ".bat" ".cmd" ".exe" ".com") - 'executable) - (mc-setversion "2.6")) - (t - (error 'search-failed - "Can't find a suitable PGP executable"))) + (with-fboundp 'mc-setversion + (cond ((locate-file "gpg" exec-path + '("" ".btm" ".bat" ".cmd" ".exe" + ".com") 'executable) + (mc-setversion "gpg")) + ((locate-file "pgpe" exec-path + '("" ".btm" ".bat" ".cmd" ".exe" + ".com") 'executable) + (mc-setversion "5.0")) + ((locate-file "pgp" exec-path + '("" ".btm" ".bat" ".cmd" ".exe" + ".com") 'executable) + (mc-setversion "2.6")) + (t + (error 'search-failed + "Can't find a suitable PGP executable")))) (autoload 'mc-verify "mc-toplev") (declare-fboundp (mc-verify)) (setq package-get-continue-update-base t)) diff --text -u 'xemacs-21.5.9/lisp/replace.el' 'xemacs-21.5.10/lisp/replace.el' Index: ./lisp/replace.el --- ./lisp/replace.el Fri Apr 13 03:21:34 2001 +++ ./lisp/replace.el Thu Oct 24 23:59:27 2002 @@ -212,53 +212,220 @@ (perform-replace regexp to-string nil t delimited)) + +;; gse wonders: Is there a better place for this to go? Might other packages +;; want to use it? (defvar regexp-history nil "History list for some commands that read regular expressions.") -(define-function 'keep-lines 'delete-non-matching-lines) -(defun delete-non-matching-lines (regexp) - "Delete all lines except those containing matches for REGEXP. +(defun operate-on-non-matching-lines (regexp delete kill &optional beg end) + "Internal function used by delete-non-matching-lines, +kill-non-matching-lines, and copy-matching-lines. + +REGEXP is a regular expression to *not* match when performing +operations. + +If DELETE is non-nil, the lines of text are deleted. It doesn't make +sense to set this to nil if KILL is nil -- nothing will happen. + +If KILL is non-nil, the lines of text are stored in the kill ring (as +one block of text). + +BEG and END, if non-nil, specify the start and end locations to work +within. If these are nil, point and point-max are used. + A match split across lines preserves all the lines it lies in. -Applies to all lines after point." - (interactive (list (read-from-minibuffer - "Keep lines (containing match for regexp): " - nil nil nil 'regexp-history))) - (with-interactive-search-caps-disable-folding regexp t +Applies to all lines after point. + +Returns the number of lines matched." + (with-search-caps-disable-folding regexp t (save-excursion + ;; Move to a beginning point if specified. + (when beg (goto-char beg)) + ;; Always start on the beginning of a line. (or (bolp) (forward-line 1)) - (let ((start (point))) - (while (not (eobp)) - ;; Start is first char not preserved by previous match. - (if (not (re-search-forward regexp nil 'move)) - (delete-region start (point-max)) - (let ((end (save-excursion (goto-char (match-beginning 0)) + + (let ((matched-text nil) + (curmatch-start (point)) + (limit (copy-marker (point-max)))) + ;; Limit search if limits were specified. + (when end (setq limit (copy-marker end))) + + ;; Search. Stop if we are at end of buffer or outside the + ;; limit. + (while (not (or + (eobp) + (and limit (>= (point) limit)))) + ;; curmatch-start is first char not preserved by previous match. + (if (not (re-search-forward regexp limit 'move)) + (let ((curmatch-end limit)) + (setq matched-text (concat matched-text (buffer-substring curmatch-start curmatch-end))) + (if delete (delete-region curmatch-start curmatch-end))) + (let ((curmatch-end (save-excursion (goto-char (match-beginning 0)) (beginning-of-line) (point)))) - ;; Now end is first char preserved by the new match. - (if (< start end) - (delete-region start end)))) - (setq start (save-excursion (forward-line 1) + ;; Now curmatch-end is first char preserved by the new match. + (if (< curmatch-start curmatch-end) + (progn + (setq matched-text (concat matched-text (buffer-substring curmatch-start curmatch-end))) + (if delete (delete-region curmatch-start curmatch-end)))))) + (setq curmatch-start (save-excursion (forward-line 1) (point))) ;; If the match was empty, avoid matching again at same place. (and (not (eobp)) (= (match-beginning 0) (match-end 0)) - (forward-char 1))))))) + (forward-char 1))) + + ;; If any lines were matched and KILL is non-nil, insert the + ;; matched lines into the kill ring. + (if (and matched-text kill) (kill-new matched-text)) + + ;; Return the number of matched lines. + (with-temp-buffer + ;; Use concat to make a string even if matched-text is nil. + (insert (concat matched-text)) + (count-lines (point-min) (point-max))) + )))) + +(define-function 'keep-lines 'delete-non-matching-lines) +(defun delete-non-matching-lines (regexp) + "Delete lines that do not match REGEXP, from point to the end of the +buffer (or within the region, if it is active)." + (interactive (list (read-from-minibuffer + "Keep lines (containing match for regexp): " + nil nil nil 'regexp-history))) + (let ((beg nil) + (end nil) + (count nil)) + (when (region-active-p) + (setq beg (region-beginning)) + (setq end (region-end))) + (setq count (operate-on-non-matching-lines regexp t nil beg end)) + (message "%i lines deleted" count))) + +(defun kill-non-matching-lines (regexp) + "Delete the lines that do not match REGEXP, from point to the end of +the buffer (or within the region, if it is active). The deleted lines +are placed in the kill ring as one block of text." + (interactive (list (read-from-minibuffer + "Kill non-matching lines (regexp): " + nil nil nil 'regexp-history))) + (let ((beg nil) + (end nil) + (count nil)) + (when (region-active-p) + (setq beg (region-beginning)) + (setq end (region-end))) + (setq count (operate-on-non-matching-lines regexp t t beg end)) + (message "%i lines killed" count))) + +(defun copy-non-matching-lines (regexp) + "Find all lines that do not match REGEXP from point to the end of the +buffer (or within the region, if it is active), and place them in the +kill ring as one block of text." + (interactive (list (read-from-minibuffer + "Copy non-matching lines (regexp): " + nil nil nil 'regexp-history))) + (let ((beg nil) + (end nil) + (count nil)) + (when (region-active-p) + (setq beg (region-beginning)) + (setq end (region-end))) + (setq count (operate-on-non-matching-lines regexp nil t beg end)) + (message "%i lines copied" count))) + +(defun operate-on-matching-lines (regexp delete kill &optional beg end) + "Internal function used by delete-matching-lines, kill-matching-lines, +and copy-matching-lines. + +If DELETE is non-nil, the lines of text are deleted. It doesn't make +sense to set this to nil if KILL is nil -- nothing will happen. + +If KILL is non-nil, the lines of text are stored in the kill ring (as +one block of text). + +BEG and END, if non-nil, specify the start and end locations to work +within. If these are nil, point and point-max are used. + +If a match is split across lines, all the lines it lies in are deleted. +Applies to lines after point. +Returns the number of lines matched." + (with-search-caps-disable-folding regexp t + (save-excursion + (let ((matched-text nil) + (curmatch-start nil) + (curmatch-end nil) + (limit nil)) + + ;; Limit search if limits were specified. + (when beg (goto-char beg)) + (when end (setq limit (copy-marker end))) + + (while (and (not (eobp)) + (re-search-forward regexp limit t)) + (setq curmatch-start (save-excursion (goto-char (match-beginning 0)) + (beginning-of-line) + (point))) + (setq curmatch-end (progn (forward-line 1) (point))) + (setq matched-text (concat matched-text (buffer-substring curmatch-start curmatch-end))) + (if delete (delete-region curmatch-start curmatch-end))) + + (if (and matched-text kill) (kill-new matched-text)) + + ;; Return the number of matched lines. + (with-temp-buffer + ;; Use concat to make a string even if matched-text is nil. + (insert (concat matched-text)) + (count-lines (point-min) (point-max))) + )))) (define-function 'flush-lines 'delete-matching-lines) (defun delete-matching-lines (regexp) - "Delete lines containing matches for REGEXP. -If a match is split across lines, all the lines it lies in are deleted. -Applies to lines after point." + "Delete the lines that match REGEXP, from point to the end of the +buffer (or within the region, if it is active)." (interactive (list (read-from-minibuffer "Flush lines (containing match for regexp): " nil nil nil 'regexp-history))) - (with-interactive-search-caps-disable-folding regexp t - (save-excursion - (while (and (not (eobp)) - (re-search-forward regexp nil t)) - (delete-region (save-excursion (goto-char (match-beginning 0)) - (beginning-of-line) - (point)) - (progn (forward-line 1) (point))))))) + (let ((beg nil) + (end nil) + (count nil)) + (when (region-active-p) + (setq beg (region-beginning)) + (setq end (region-end))) + (setq count (operate-on-matching-lines regexp t nil beg end)) + (message "%i lines deleted" count))) + +(defun kill-matching-lines (regexp) + "Delete the lines that match REGEXP, from point to the end of the +buffer (or within the region, if it is active). The deleted lines are +placed in the kill ring as one block of text." + (interactive (list (read-from-minibuffer + "Kill lines (containing match for regexp): " + nil nil nil 'regexp-history))) + (let ((beg nil) + (end nil) + (count nil)) + (when (region-active-p) + (setq beg (region-beginning)) + (setq end (region-end))) + (setq count (operate-on-matching-lines regexp t t beg end)) + (message "%i lines killed" count))) + +(defun copy-matching-lines (regexp) + "Find all lines that match REGEXP from point to the end of the +buffer (or within the region, if it is active), and place them in the +kill ring as one block of text." + (interactive (list (read-from-minibuffer + "Copy lines (containing match for regexp): " + nil nil nil 'regexp-history))) + (let ((beg nil) + (end nil) + (count nil)) + (when (region-active-p) + (setq beg (region-beginning)) + (setq end (region-end))) + (setq count (operate-on-matching-lines regexp nil t beg end)) + (message "%i lines copied" count))) (define-function 'how-many 'count-matches) (defun count-matches (regexp) diff --text -u 'xemacs-21.5.9/lisp/startup.el' 'xemacs-21.5.10/lisp/startup.el' Index: ./lisp/startup.el --- ./lisp/startup.el Thu Aug 22 20:19:56 2002 +++ ./lisp/startup.el Wed Nov 27 16:15:07 2002 @@ -538,10 +538,23 @@ (startup-load-autoloads) (let (error-data) - (condition-case data + ;; if noninteractive, an error will kill us. by catching and + ;; resignalling, we don't accomplish much, but do make it difficult + ;; to determine where the error really occurred. when interactive, + ;; however, an error processing the command line does NOT kill us; + ;; instead, the error handler tries to display an error on the frame. + ;; In that case, we must make sure that all the remaining initialization + ;; gets done!!! + ;; + ;; #### A better solution in the interactive case is to use + ;; call-with-condition-handler, which would let us do the rest of + ;; the initialization AND allow the user to get an accurate backtrace. + (if (noninteractive) (command-line) - ;; catch non-error signals, especially quit - (t (setq error-data data))) + (condition-case data + (command-line) + ;; catch non-error signals, especially quit + (t (setq error-data data)))) ;; Do this again, in case the init file defined more abbreviations. (setq default-directory (abbreviate-file-name default-directory)) ;; Specify the file for recording all the auto save files of @@ -1415,6 +1428,10 @@ (load (expand-file-name (file-name-sans-extension autoload-file-name) lisp-directory) nil t)) + ;; Hey! Let's use a packages-* function for a non-package purpose! + (if (and (not inhibit-autoloads) (featurep 'modules)) + (packages-load-package-auto-autoloads module-load-path)) + (if (and (not inhibit-autoloads) (not inhibit-all-packages)) (progn (if (not inhibit-early-packages) diff --text -u 'xemacs-21.5.9/lisp/subr.el' 'xemacs-21.5.10/lisp/subr.el' Index: ./lisp/subr.el --- ./lisp/subr.el Tue Jul 16 17:18:36 2002 +++ ./lisp/subr.el Tue Oct 8 12:24:22 2002 @@ -446,20 +446,16 @@ ; path-separator)))) ; (split-string-by-char path (aref separator 0))) -(defmacro with-output-to-string (&rest forms) - "Collect output to `standard-output' while evaluating FORMS and return -it as a string." - ;; by "William G. Dubuque" w/ mods from Stig - `(with-current-buffer (get-buffer-create - (generate-new-buffer-name " *string-output*")) - (setq buffer-read-only nil) - (buffer-disable-undo (current-buffer)) - (erase-buffer) - (let ((standard-output (current-buffer))) - ,@forms) - (prog1 - (buffer-string) - (erase-buffer)))) +(defmacro with-output-to-string (&rest body) + "Execute BODY, return the text it sent to `standard-output', as a string." + `(let ((standard-output + (get-buffer-create (generate-new-buffer-name " *string-output*")))) + (let ((standard-output standard-output)) + ,@body) + (with-current-buffer standard-output + (prog1 + (buffer-string) + (kill-buffer nil))))) (defmacro with-current-buffer (buffer &rest body) "Temporarily make BUFFER the current buffer and execute the forms in BODY. diff --text -u 'xemacs-21.5.9/lisp/unicode.el' 'xemacs-21.5.10/lisp/unicode.el' Index: ./lisp/unicode.el --- ./lisp/unicode.el Sun Jun 23 18:54:36 2002 +++ ./lisp/unicode.el Sun Sep 1 15:41:41 2002 @@ -281,6 +281,17 @@ " type utf-8)) +(make-coding-system + 'utf-8-bom 'unicode + "UTF-8 w/BOM" + '(mnemonic "MSW-UTF8" + documentation + "UTF-8 Unicode encoding, with byte order mark. +Standard encoding for representing UTF-8 under MS Windows." + type utf-8 + little-endian t + need-bom t)) + ;; #### UTF-7 is not yet implemented, and it's tricky to do. There's ;; an implementation in appendix A.1 of the Unicode Standard, Version ;; 2.0, but I don't know its licensing characteristics. diff --text -u 'xemacs-21.5.9/lisp/update-elc-2.el' 'xemacs-21.5.10/lisp/update-elc-2.el' Index: ./lisp/update-elc-2.el --- ./lisp/update-elc-2.el Mon Jun 18 16:09:58 2001 +++ ./lisp/update-elc-2.el Wed Sep 11 00:27:08 2002 @@ -146,6 +146,12 @@ (load "autoload") (update-autoload-files (list dir)) (byte-recompile-file (expand-file-name "auto-autoloads.el" dir) 0) + (if (featurep 'modules) + (let* ((moddir (expand-file-name "../modules" (file-truename dir))) + (generated-autoload-file + (expand-file-name "auto-autoloads.el" moddir))) + (update-autoload-files (directory-files moddir t nil nil 0) t) + (byte-recompile-file generated-autoload-file 0))) (when (featurep 'mule) (update-autoload-files (list (expand-file-name "mule" dir))) (byte-recompile-file (expand-file-name "mule/auto-autoloads.el" dir) 0)) diff --text -u 'xemacs-21.5.9/lisp/wid-edit.el' 'xemacs-21.5.10/lisp/wid-edit.el' Index: ./lisp/wid-edit.el --- ./lisp/wid-edit.el Fri Mar 15 16:43:22 2002 +++ ./lisp/wid-edit.el Fri Dec 27 00:52:43 2002 @@ -58,7 +58,7 @@ :group 'faces) (defvar widget-documentation-face 'widget-documentation-face - "Face used for documentation strings in widges. + "Face used for documentation strings in widgets. This exists as a variable so it can be set locally in certain buffers.") (defface widget-documentation-face '((((class color) @@ -73,7 +73,7 @@ :group 'widget-faces) (defvar widget-button-face 'widget-button-face - "Face used for buttons in widges. + "Face used for buttons in widgets. This exists as a variable so it can be set locally in certain buffers.") (defface widget-button-face '((t (:bold t))) @@ -187,7 +187,7 @@ "Choose an item from a list. First argument TITLE is the name of the list. -Second argument ITEMS is an list whose members are either +Second argument ITEMS is a list whose members are either (NAME . VALUE), to indicate selectable items, or just strings to indicate unselectable items. Optional third argument EVENT is an input event. @@ -325,6 +325,7 @@ (goto-char to) (cond ((null (widget-get widget :size)) (forward-char 1)) + ;; #### This comment goes outside of the save-excursion in GNU ;; Terminating space is not part of the field, but necessary in ;; order for local-map to work. Remove next sexp if local-map works ;; at the end of the extent. @@ -359,7 +360,7 @@ (when secret (let ((begin (widget-field-start field)) (end (widget-field-end field))) - (when size + (when size (while (and (> end begin) (eq (char-after (1- end)) ?\ )) (setq end (1- end)))) @@ -416,7 +417,7 @@ (widget-put widget :doc-extent extent))) (defmacro widget-specify-insert (&rest form) - ;; Execute FORM without inheriting any text properties. + "Execute FORM without inheriting any text properties." `(save-restriction (let ((inhibit-read-only t) before-change-functions @@ -424,7 +425,7 @@ (insert "<>") (narrow-to-region (- (point) 2) (point)) (goto-char (1+ (point-min))) - ;; We use `prog1' instead of a `result' variable, as the latter + ;; XEmacs: use `prog1' instead of a `result' variable. The latter ;; confuses the byte-compiler in some cases (a warning). (prog1 (progn ,@form) (delete-region (point-min) (1+ (point-min))) @@ -586,7 +587,7 @@ value))) (defun widget-member (widget property) - "Return t if there is a definition in WIDGET for PROPERTY." + "Non-nil iff there is a definition in WIDGET for PROPERTY." (cond ((widget-plist-member (cdr widget) property) t) ((car widget) @@ -948,7 +949,7 @@ widget)) (defun widget-insert (&rest args) - "Call `insert' with ARGS and make the text read only." + "Call `insert' with ARGS even if surrounding text is read only." (let ((inhibit-read-only t) before-change-functions after-change-functions) @@ -1011,7 +1012,7 @@ ;;; Keymap and Commands. (defvar widget-keymap nil - "Keymap containing useful binding for buffers containing widgets. + "Keymap containing useful bindings for buffers containing widgets. Recommended as a parent keymap for modes using widgets.") (unless widget-keymap @@ -1022,7 +1023,7 @@ (define-key widget-keymap [backtab] 'widget-backward)) (defvar widget-global-map global-map - "Keymap used for events the widget does not handle themselves.") + "Keymap used for events a widget does not handle itself.") (make-variable-buffer-local 'widget-global-map) (defvar widget-field-keymap nil @@ -1088,7 +1089,7 @@ (event-point event))) (defun widget-button-click (event) - "Invoke button below mouse pointer." + "Invoke button under mouse pointer." (interactive "e") (with-current-buffer (event-buffer event) (cond ((event-glyph event) @@ -1797,7 +1798,7 @@ (widget-get widget :sample-face)) (defun widget-default-delete (widget) - ;; Remove widget from the buffer. + "Remove widget from the buffer." (let ((from (widget-get widget :from)) (to (widget-get widget :to)) (inactive-extent (widget-get widget :inactive)) @@ -1824,7 +1825,7 @@ (widget-clear-undo)) (defun widget-default-value-set (widget value) - ;; Recreate widget with new value. + "Recreate widget with new value." (let* ((old-pos (point)) (from (copy-marker (widget-get widget :from))) (to (copy-marker (widget-get widget :to))) @@ -1846,17 +1847,17 @@ (goto-char (min (+ from offset) (1- (widget-get widget :to)))))))) (defun widget-default-value-inline (widget) - ;; Wrap value in a list unless it is inline. + "Wrap value in a list unless it is inline." (if (widget-get widget :inline) (widget-value widget) (list (widget-value widget)))) (defun widget-default-default-get (widget) - ;; Get `:value'. + "Get `:value'." (widget-get widget :value)) (defun widget-default-menu-tag-get (widget) - ;; Use tag or value for menus. + "Use tag or value for menus." (or (widget-get widget :menu-tag) (widget-get widget :tag) (widget-princ-to-string (widget-get widget :value)))) @@ -1875,22 +1876,22 @@ (widget-get widget :to))) (defun widget-default-action (widget &optional event) - ;; Notify the parent when a widget change + "Notify the parent when a widget changes." (let ((parent (widget-get widget :parent))) (when parent (widget-apply parent :notify widget event)))) (defun widget-default-notify (widget child &optional event) - ;; Pass notification to parent. + "Pass notification to parent." (widget-default-action widget event)) (defun widget-default-prompt-value (widget prompt value unbound) - ;; Read an arbitrary value. Stolen from `set-variable'. -;; (let ((initial (if unbound -;; nil -;; ;; It would be nice if we could do a `(cons val 1)' here. -;; (prin1-to-string (custom-quote value)))))) - (eval-minibuffer prompt )) + "Read an arbitrary value. Stolen from `set-variable'." +;; (let ((initial (if unbound +;; nil +;; It would be nice if we could do a `(cons val 1)' here. +;; (prin1-to-string (custom-quote value)))))) + (eval-minibuffer prompt)) ;;; The `item' Widget. @@ -1906,7 +1907,7 @@ :format "%t\n") (defun widget-item-value-create (widget) - ;; Insert the printed representation of the value. + "Insert the printed representation of the value." (let ((standard-output (current-buffer))) (princ (widget-get widget :value)))) @@ -1964,7 +1965,7 @@ :format "%[%v%]") (defun widget-push-button-value-create (widget) - ;; Insert text representing the `on' and `off' states. + "Insert text representing the `on' and `off' states." (let* ((tag (or (widget-get widget :tag) (widget-get widget :value))) (tag-glyph (widget-get widget :tag-glyph)) @@ -2005,7 +2006,7 @@ "An embedded link." :button-prefix 'widget-link-prefix :button-suffix 'widget-link-suffix - :help-echo "Follow the link" + :help-echo "Follow the link." :format "%[%t%]") ;;; The `info-link' Widget. @@ -2036,6 +2037,7 @@ "Open the url specified by WIDGET." (if-fboundp 'browse-url (browse-url (widget-value widget)) + ;; #### Should subclass a 'missing-package error. (error 'unimplemented "No `browse-url' package; cannot follow URLs in this XEmacs"))) ;;; The `function-link' Widget. @@ -2116,13 +2118,13 @@ "History of field minibuffer edits.") (defun widget-field-prompt-internal (widget prompt initial history) - ;; Read string for WIDGET prompting with PROMPT. - ;; INITIAL is the initial input and HISTORY is a symbol containing - ;; the earlier input. + "Read string for WIDGET prompting with PROMPT. +INITIAL is the initial input and HISTORY is a symbol containing +the earlier input." (read-string prompt initial history)) (defun widget-field-prompt-value (widget prompt value unbound) - ;; Prompt for a string. + "Prompt for a string." (let ((initial (if unbound nil (cons (widget-apply widget :value-to-internal @@ -2164,7 +2166,7 @@ ; (run-hook-with-args 'widget-edit-functions widget)) (defun widget-field-validate (widget) - ;; Valid if the content matches `:valid-regexp'. + "Valid if the content matches `:valid-regexp'." (save-excursion (let ((value (widget-apply widget :value-get)) (regexp (widget-get widget :valid-regexp))) @@ -2173,7 +2175,7 @@ widget)))) (defun widget-field-value-create (widget) - ;; Create an editable text field. + "Create an editable text field." (let ((size (widget-get widget :size)) (value (widget-get widget :value)) (from (point)) @@ -2197,7 +2199,7 @@ (set-marker-insertion-type (car extent) t))) (defun widget-field-value-delete (widget) - ;; Remove the widget from the list of active editing fields. + "Remove the widget from the list of active editing fields." (setq widget-field-list (delq widget widget-field-list)) ;; These are nil if the :format string doesn't contain `%v'. (let ((extent (widget-get widget :field-extent))) @@ -2205,7 +2207,7 @@ (detach-extent extent)))) (defun widget-field-value-get (widget) - ;; Return current text in editing field. + "Return current text in editing field." (let ((from (widget-field-start widget)) (to (widget-field-end widget)) (buffer (widget-field-buffer widget)) @@ -2264,13 +2266,15 @@ :match-inline 'widget-choice-match-inline) (defun widget-choice-value-create (widget) - ;; Insert the first choice that matches the value. + "Insert the first choice that matches the value." (let ((value (widget-get widget :value)) (args (widget-get widget :args)) (explicit (widget-get widget :explicit-choice)) current) (if explicit (progn + ;; If the user specified the choice for this value, + ;; respect that choice as long as the value is the same. (widget-put widget :children (list (widget-create-child-value widget explicit value))) (widget-put widget :choice explicit)) @@ -2416,7 +2420,7 @@ :off "off") (defun widget-toggle-value-create (widget) - ;; Insert text representing the `on' and `off' states. + "Insert text representing the `on' and `off' states." (if (widget-value widget) (widget-glyph-insert widget (widget-get widget :on) @@ -2480,8 +2484,8 @@ (widget-put widget :children (nreverse (widget-get widget :children))))) (defun widget-checklist-add-item (widget type chosen) - ;; Create checklist item in WIDGET of type TYPE. - ;; If the item is checked, CHOSEN is a cons whose cdr is the value. + "Create checklist item in WIDGET of type TYPE. +If the item is checked, CHOSEN is a cons whose cdr is the value." (and (eq (preceding-char) ?\n) (widget-get widget :indent) (insert-char ?\ (widget-get widget :indent))) @@ -2550,8 +2554,8 @@ (cons found rest))) (defun widget-checklist-match-find (widget vals) - ;; Find the vals which match a type in the checklist. - ;; Return an alist of (TYPE MATCH). + "Find the vals which match a type in the checklist. +Return an alist of (TYPE MATCH)." (let ((greedy (widget-get widget :greedy)) (args (copy-sequence (widget-get widget :args))) found) @@ -2569,7 +2573,7 @@ found)) (defun widget-checklist-match-up (args vals) - ;; Return the first type from ARGS that matches VALS. + "Return the first type from ARGS that matches VALS." (let (current found) (while (and args (null found)) (setq current (car args) @@ -2799,7 +2803,7 @@ (define-widget 'insert-button 'push-button "An insert button for the `editable-list' widget." :tag "INS" - :help-echo "Insert a new item into the list at this position" + :help-echo "Insert a new item into the list at this position." :action 'widget-insert-button-action) (defun widget-insert-button-action (widget &optional event) @@ -2812,7 +2816,7 @@ (define-widget 'delete-button 'push-button "A delete button for the `editable-list' widget." :tag "DEL" - :help-echo "Delete this item from the list" + :help-echo "Delete this item from the list." :action 'widget-delete-button-action) (defun widget-delete-button-action (widget &optional event) @@ -3028,9 +3032,9 @@ (push (cond ((null answer) (widget-create-child widget arg)) ((widget-get arg :inline) - (widget-create-child-value widget arg (car answer))) + (widget-create-child-value widget arg (car answer))) (t - (widget-create-child-value widget arg (car (car answer))))) + (widget-create-child-value widget arg (car (car answer))))) children)) (widget-put widget :children (nreverse children)))) @@ -3338,6 +3342,7 @@ ;;; (widget-setup) ;;; (widget-apply widget :notify widget event))) +;; Fixme: use file-name-as-directory. (define-widget 'directory 'file "A directory widget. It will read a directory name from the minibuffer when invoked." @@ -3347,7 +3352,7 @@ "History of input to `widget-symbol-prompt-value'.") (define-widget 'symbol 'editable-field - "A lisp symbol." + "A Lisp symbol." :value nil :tag "Symbol" :format "%{%t%}: %v" @@ -3379,7 +3384,7 @@ "History of input to `widget-function-prompt-value'.") (define-widget 'function 'sexp - "A lisp function." + "A Lisp function." :complete-function 'lisp-complete-symbol :prompt-value 'widget-field-prompt-value :prompt-internal 'widget-symbol-prompt-internal @@ -3393,7 +3398,7 @@ (define-widget 'variable 'symbol ;; Should complete on variables. - "A lisp variable." + "A Lisp variable." :prompt-match 'boundp :prompt-history 'widget-variable-prompt-value-history :tag "Variable") @@ -3435,7 +3440,7 @@ ; (widget-setup))) (define-widget 'sexp 'editable-field - "An arbitrary lisp expression." + "An arbitrary Lisp expression." :tag "Lisp expression" :format "%{%t%}: %v" :value nil @@ -3528,10 +3533,10 @@ :match-alternatives '(integerp)) (define-widget 'number 'restricted-sexp - "A floating point number." + "A number (floating point or integer)." :tag "Number" :value 0.0 - :type-error "This field should contain a number" + :type-error "This field should contain a number (floating point or integer)" :match-alternatives '(numberp)) (define-widget 'character 'editable-field @@ -3598,7 +3603,7 @@ (let ((args (widget-get widget :args)) (completion-ignore-case (widget-get widget :case-fold)) current choices old) - ;; Find the first arg that match VALUE. + ;; Find the first arg that matches VALUE. (let ((look args)) (while look (if (widget-apply (car look) :match value) @@ -3667,6 +3672,7 @@ ;;; The `color' Widget. +;; Fixme: match (define-widget 'color 'editable-field "Choose a color name (with sample)." :format "%[%t%]: %v (%{sample%})\n" @@ -3685,7 +3691,7 @@ (list (read-color-completion-table)) (completion (try-completion prefix list))) (cond ((eq completion t) - (message "Exact match")) + (message "Exact match.")) ((null completion) (error "Can't find completion for \"%s\"" prefix)) ((not (string-equal prefix completion)) @@ -3714,7 +3720,7 @@ "History of entered colors.") (defun widget-color-action (widget &optional event) - ;; Prompt for a color. + "Prompt for a color." (let* ((tag (widget-apply widget :menu-tag-get)) (answer (read-color (concat tag ": ")))) (unless (zerop (length answer)) @@ -3737,8 +3743,10 @@ (or (get-char-property pos 'button) (get-char-property pos 'field))) +;;; The Help Echo + (defun widget-echo-help (pos) - "Display the help echo for widget at POS." + "Display the help-echo text for widget at POS." (let* ((widget (widget-at pos)) (help-echo (and widget (widget-get widget :help-echo)))) (and (functionp help-echo) @@ -3750,4 +3758,4 @@ (provide 'wid-edit) -;; wid-edit.el ends here +;;; wid-edit.el ends here diff --text -u 'xemacs-21.5.9/lisp/window-xemacs.el' 'xemacs-21.5.10/lisp/window-xemacs.el' Index: ./lisp/window-xemacs.el --- ./lisp/window-xemacs.el Sat Jul 6 14:48:15 2002 +++ ./lisp/window-xemacs.el Mon Dec 16 11:32:48 2002 @@ -104,7 +104,325 @@ (if (bufferp buffer) (set-window-buffer window (get-buffer-create buffer))) (set-window-dedicated-p window (not (null buffer)))) + +;; Window configurations +(defstruct saved-window + currentp minibufferp minibuffer-scrollp + buffer mark-marker + start-marker + point-marker + pixel-left pixel-top pixel-right pixel-bottom + hscroll modeline-hscroll + dedicatedp + first-hchild first-vchild next-child) + +(defstruct window-configuration + frame + frame-pixel-width frame-pixel-height + current-buffer + minibuffer-pixel-height + min-width min-height + saved-root-window) + +(defun window-configuration-equal (conf-1 conf-2) + "Returns a boolean indicating whether the two given configurations +are identical." + (or (eq conf-1 conf-2) + (and (eq (window-configuration-frame conf-1) + (window-configuration-frame conf-2)) + (= (window-configuration-frame-pixel-width conf-1) + (window-configuration-frame-pixel-width conf-2)) + (= (window-configuration-frame-pixel-height conf-1) + (window-configuration-frame-pixel-height conf-2)) + (eq (window-configuration-current-buffer conf-1) + (window-configuration-current-buffer conf-2)) + (saved-window-equal (window-configuration-saved-root-window conf-1) + (window-configuration-saved-root-window conf-2))))) + +(defun saved-window-equal (saved-1 saved-2) + "Returns a boolean indicating whether the two given saved windows +are identical." + (or (eq saved-1 saved-2) + (and (eq (saved-window-currentp saved-1) + (saved-window-currentp saved-2)) + (eq (saved-window-minibuffer-scrollp saved-1) + (saved-window-minibuffer-scrollp saved-2)) + (eq (saved-window-buffer saved-1) + (saved-window-buffer saved-2)) + (equal (saved-window-mark-marker saved-1) + (saved-window-mark-marker saved-2)) + (or (and (saved-window-currentp saved-1) + (saved-window-currentp saved-2)) + (equal (saved-window-start-marker saved-1) + (saved-window-start-marker saved-2))) + (or (and (saved-window-currentp saved-1) + (saved-window-currentp saved-2)) + (equal (saved-window-point-marker saved-1) + (saved-window-point-marker saved-2))) + (= (saved-window-pixel-left saved-1) + (saved-window-pixel-left saved-2)) + (= (saved-window-pixel-top saved-1) + (saved-window-pixel-top saved-2)) + (= (saved-window-pixel-right saved-1) + (saved-window-pixel-right saved-2)) + (= (saved-window-pixel-bottom saved-1) + (saved-window-pixel-bottom saved-2)) + (= (saved-window-hscroll saved-1) + (saved-window-hscroll saved-2)) + (= (saved-window-modeline-hscroll saved-1) + (saved-window-modeline-hscroll saved-2)) + (eq (saved-window-dedicatedp saved-1) + (saved-window-dedicatedp saved-2)) + (maybe-saved-window-equal (saved-window-first-hchild saved-1) + (saved-window-first-hchild saved-2)) + (maybe-saved-window-equal (saved-window-first-vchild saved-1) + (saved-window-first-vchild saved-2)) + (maybe-saved-window-equal (saved-window-next-child saved-1) + (saved-window-next-child saved-2))))) + +(defun maybe-saved-window-equal (maybe-saved-1 maybe-saved-2) + "Returns a boolean indicating whether the two given saved windows +or NILs are identical." + (cond + ((and (not maybe-saved-1) (not maybe-saved-2)) t) + ((not maybe-saved-1) (not maybe-saved-2)) + ((not maybe-saved-2) (not maybe-saved-1)) + (t (saved-window-equal maybe-saved-1 maybe-saved-2)))) + +(defun current-window-configuration (&optional frame) + "Return an object representing the current window configuration of FRAME. +If FRAME is nil or omitted, use the selected frame. +This describes the number of windows, their sizes and current buffers, +and for each window on FRAME the displayed buffer, where display +starts, and the positions of point and mark. +An exception is made for point in the current buffer: +its value is -not- saved." + (let ((frame (or frame (selected-frame)))) + ;; The original C code used complicated but still incomplete logic + ;; to decide if and how to restore the size of the minibuffer. It + ;; goes something like this: +; (let ((real-font-height +; (font-height (face-font 'default) frame)) +; (minibuffer-height +; (if (and (minibuffer-window frame) +; (not (frame-minibuffer-only-p frame))) +; (window-pixel-height (minibuffer-window frame)) +; 0))) +; ...) + + (make-window-configuration + :frame frame + :frame-pixel-width (frame-pixel-width frame) + :frame-pixel-height (frame-pixel-height frame) + :current-buffer (current-buffer) + :min-width window-min-width :min-height window-min-height + :minibuffer-pixel-height (window-pixel-height (minibuffer-window frame)) + ;; this tries to do what the old code did: +; :minibuffer-height (if (zerop (% minibuffer-height real-font-height)) +; (- (/ minibuffer-height real-font-height)) ; lines +; minibuffer-height) ; pixels + :saved-root-window (root-window->saved-window (frame-root-window frame))))) + +(defun root-window->saved-window (window) + "Converts a root window into a tree of saved-window structures." + (let ((buffer (window-buffer window)) + (edges (window-pixel-edges window))) + (let ((left (nth 0 edges)) + (top (nth 1 edges)) + (right (nth 2 edges)) + (bottom (nth 3 edges))) + (let ((saved-window + (make-saved-window + :currentp (eq window (selected-window (window-frame window))) + :minibufferp (eq window (minibuffer-window (window-frame window))) + :minibuffer-scrollp (eq window minibuffer-scroll-window) + :buffer buffer + :pixel-left left :pixel-top top :pixel-right right :pixel-bottom bottom + :hscroll (window-hscroll window) + :modeline-hscroll (modeline-hscroll window) + :dedicatedp (window-dedicated-p window) + :first-hchild (if (window-first-hchild window) + (root-window->saved-window (window-first-hchild window)) + nil) + :first-vchild (if (window-first-vchild window) + (root-window->saved-window (window-first-vchild window)) + nil) + :next-child (if (window-next-child window) + (root-window->saved-window (window-next-child window)) + nil)))) + (if buffer + (progn + (let ((marker (make-marker))) + (set-marker marker (window-start window) buffer) + (setf (saved-window-start-marker saved-window) marker)) + (let ((marker (make-marker))) + (if (eq window (selected-window)) + (set-marker marker (point buffer) buffer) + (set-marker marker (window-point window) buffer)) + (setf (saved-window-point-marker saved-window) marker)) + (setf (saved-window-mark-marker saved-window) + (copy-marker (mark-marker t buffer))))) + saved-window)))) + +(defun set-window-configuration (configuration) + "Set the configuration of windows and buffers as specified by CONFIGURATION. +CONFIGURATION must be a value previously returned +by `current-window-configuration'." + (let ((frame (window-configuration-frame configuration))) + (if (and (frame-live-p frame) + (not (window-configuration-equal configuration + (current-window-configuration)))) + (really-set-window-configuration frame configuration)))) + +(defun really-set-window-configuration (frame configuration) + "Set the window configuration CONFIGURATION on live frame FRAME." + ;; avoid potential temporary problems + (setq window-min-width 0) + (setq window-min-height 0) + (setq minibuffer-scroll-window nil) + + (frame-reduce-to-one-window frame) + (set-window-configuration-frame-size configuration) + + ;; these may have changed because of the delete + (let ((root-window (frame-root-window frame))) + (enlarge-window-pixels + (- (window-configuration-minibuffer-pixel-height configuration) + (window-pixel-height (minibuffer-window frame))) + nil + (minibuffer-window frame)) + + ;; avoid that `set-window-point' will set the buffer's point for + ;; the selected window + (select-window (minibuffer-window frame)) + + (let ((window-configuration-current-window nil)) + (restore-saved-window configuration + root-window + (window-configuration-saved-root-window configuration) + 'vertical) + (if window-configuration-current-window + (select-window window-configuration-current-window)))) + + (setq window-min-width (window-configuration-min-width configuration)) + (setq window-min-height (window-configuration-min-height configuration)) + + (set-buffer (window-configuration-current-buffer configuration))) + +(defun set-window-configuration-frame-size (configuration) + "Restore the frame size of a window configuration." + (set-frame-pixel-size + (window-configuration-frame configuration) + (window-configuration-frame-pixel-width configuration) + (window-configuration-frame-pixel-height configuration))) + +(defun frame-reduce-to-one-window (frame) + "Delete all windows except the minibuffer and one other in FRAME." + (let* ((root-window (frame-root-window frame)) + (combination-start (or (window-first-hchild root-window) + (window-first-vchild root-window)))) + (if combination-start + (window-reduce-to-one combination-start)))) + +(defun window-reduce-to-one (window) + "Make sure only one subwindow of WINDOW is left." + (let ((window (window-next-child window))) + (while window + (if (window-live-p window) + (let ((next (window-next-child window))) + (delete-window window) + (setq window next))))) + (cond + ((window-first-hchild window) + (window-reduce-to-one (window-first-hchild window))) + ((window-first-vchild window) + (window-reduce-to-one (window-first-vchild window))))) + +(defun restore-saved-window (configuration window saved-window direction) + "Within CONFIGURATION, restore WINDOW to the state of SAVED-WINDOW." + (if (saved-window-next-child saved-window) + (progn + (if (not (saved-window-minibufferp (saved-window-next-child saved-window))) + (progn + (cond ((eq direction 'vertical) + (split-window window nil nil)) + ((eq direction 'horizontal) + (split-window window nil t))) + (restore-saved-window configuration + (window-next-child window) + (saved-window-next-child saved-window) + direction))) + + (if (saved-window-first-hchild saved-window) + (restore-saved-window configuration + window + (saved-window-first-hchild saved-window) + 'horizontal)) + (if (saved-window-first-vchild saved-window) + (restore-saved-window configuration + window + (saved-window-first-vchild saved-window) + 'vertical)))) + + (if (not (saved-window-minibufferp saved-window)) + (restore-saved-window-parameters configuration window saved-window))) + +(defun restore-saved-window-parameters (configuration window saved-window) + "Restore the window parameters stored in SAVED-WINDOW on WINDOW." + (let ((buffer (saved-window-buffer saved-window))) + (if (and buffer (buffer-live-p buffer)) + (progn + (set-window-buffer window + (saved-window-buffer saved-window)) + (set-window-start window + (marker-position (saved-window-start-marker saved-window)) + t) + (set-window-point window + (marker-position (saved-window-point-marker saved-window))) + (set-marker (mark-marker t buffer) + (marker-position (saved-window-mark-marker saved-window)) + buffer) + (if (not (eq buffer (window-configuration-current-buffer configuration))) + (goto-char (window-point window) buffer))))) + + (if (and (not (saved-window-first-hchild saved-window)) + (not (saved-window-first-vchild saved-window))) + ;; only set size for non-container windows + (progn + ;; If this is the root window, it may be the only window. + ;; Because of mismatches between actual and reported frame + ;; size, it may not let us actually set the size of the root + ;; window to what we want. --Mike + (if (not (eq window (frame-root-window (window-frame window)))) + (progn + (enlarge-window-pixels (- (saved-window-pixel-width saved-window) + (window-pixel-width window)) + t + window) + (enlarge-window-pixels (- (saved-window-pixel-height saved-window) + (window-pixel-height window)) + nil + window))) + (set-window-hscroll window (saved-window-hscroll saved-window)) + (set-modeline-hscroll window + (saved-window-modeline-hscroll saved-window)) + (set-window-dedicated-p window (saved-window-dedicatedp saved-window)))) + + (if (saved-window-currentp saved-window) + (setq window-configuration-current-window window)) + (if (saved-window-minibuffer-scrollp saved-window) + (setq minibuffer-scroll-window window))) + +(defun saved-window-pixel-width (saved-window) + "Compute the pixel width of SAVED-WINDOW." + (- (saved-window-pixel-right saved-window) + (saved-window-pixel-left saved-window))) + +(defun saved-window-pixel-height (saved-window) + "Compute the pixel height of SAVED-WINDOW." + (- (saved-window-pixel-bottom saved-window) + (saved-window-pixel-top saved-window))) ;; The window-config stack is stored as a list in frame property ;; 'window-config-stack, with the most recent element at the front. diff --text -u 'xemacs-21.5.9/lisp/window.el' 'xemacs-21.5.10/lisp/window.el' Index: ./lisp/window.el --- ./lisp/window.el Sun Mar 31 17:27:26 2002 +++ ./lisp/window.el Mon Dec 2 21:27:20 2002 @@ -183,7 +183,17 @@ `(save-selected-window (select-window ,window) ,@body)) - + +(defmacro save-window-excursion (&rest body) + "Execute body, preserving window sizes and contents. +Restores which buffer appears in which window, where display starts, +as well as the current buffer. +Does not restore the value of point in current buffer." + (let ((window-config (gensym 'window-config))) + `(let ((,window-config (current-window-configuration))) + (unwind-protect + (progn ,@body) + (set-window-configuration ,window-config))))) (defun count-windows (&optional minibuf) "Return the number of visible windows. @@ -487,8 +497,7 @@ (or window (setq window (selected-window))) (save-excursion (set-buffer (window-buffer window)) - (let ((n 0) - (test-pos + (let ((test-pos (- (point-max) ;; If buffer ends with a newline, ignore it when counting ;; height unless point is after it. @@ -510,18 +519,12 @@ ;; The frame must not be minibuffer-only. (not (eq mini 'only))) (progn - (save-window-excursion - (goto-char (point-min)) - (while (and (window-live-p window) - (pos-visible-in-window-p test-pos window)) - (shrink-window 1 nil window) - (setq n (1+ n)))) - (if (> n 0) - (shrink-window (min (1- n) - (- (window-height window) - (1+ window-min-height))) - nil - window))))))) + (goto-char (point-min)) + (while (and (pos-visible-in-window-p test-pos window) + (> (window-height window) window-min-height)) + (shrink-window 1 nil window)) + (if (not (pos-visible-in-window-p test-pos window)) + (enlarge-window 1 nil window))))))) (defun kill-buffer-and-window () "Kill the current buffer and delete the selected window." diff --text -u 'xemacs-21.5.9/lisp/x-font-menu.el' 'xemacs-21.5.10/lisp/x-font-menu.el' Index: ./lisp/x-font-menu.el --- ./lisp/x-font-menu.el Wed May 9 22:43:54 2001 +++ ./lisp/x-font-menu.el Wed Nov 13 03:58:17 2002 @@ -167,10 +167,8 @@ families) (mapcar (lambda (x) (vector (if (/= 0 (% x 10)) - ;; works with no LISP_FLOAT_TYPE - (concat (int-to-string (/ x 10)) "." - (int-to-string (% x 10))) - (int-to-string (/ x 10))) + (number-to-string (/ x 10.0)) + (number-to-string (/ x 10))) (list 'font-menu-set-font nil nil x) ':style 'radio ':active nil ':selected nil)) sizes) diff --text -u 'xemacs-21.5.9/lwlib/ChangeLog' 'xemacs-21.5.10/lwlib/ChangeLog' Index: ./lwlib/ChangeLog --- ./lwlib/ChangeLog Fri Aug 30 17:26:05 2002 +++ ./lwlib/ChangeLog Sun Jan 5 14:13:35 2003 @@ -1,3 +1,7 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. diff --text -u 'xemacs-21.5.9/man/ChangeLog' 'xemacs-21.5.10/man/ChangeLog' Index: ./man/ChangeLog --- ./man/ChangeLog Fri Aug 30 17:26:08 2002 +++ ./man/ChangeLog Sun Jan 5 19:53:58 2003 @@ -1,3 +1,163 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + +2003-01-04 Steve Youngs + + * lispref/mule.texi (Charset Unification): Menu item "Internals" + should be "Unification Internals". + +2003-01-03 Stephen J. Turnbull + + * xemacs/startup.texi (Startup Paths): Hierarchy, not package, layout. + +2003-01-03 Stephen J. Turnbull + + * xemacs-faq.texi: Debugging FAQ improvements from Ben Wing. + (Q2.0.6): Mention union type bugs. + (Q2.1.1): Debugging HOWTO improvements. + (Q2.1.15): Decoding Lisp objects in the debugger. + + * widget.texi (Widget Internals): New node. + (Top): Add menu item for it. + + * xemacs/xemacs.texi (Top): Better short description of Mule in + menu. Mule submenu. + + Charset unification docs. What a concept---commit docs first! + + * lispref/mule.texi (MULE): Add Unification and Tables menu entries. + (Unicode Support): Fixup next node. + (Charset Unification): + (Overview): + (Usage): + (Basic Functionality): + (Interactive Usage): + (Configuration): + (Theory of Operation): + (What Unification Cannot Do for You): + (Unification Internals): + (Charsets and Coding Systems): + New nodes. + + * xemacs/mule.texi (Mule): Menu items for Unification and Tables. + (Recognize Coding): + (Specify Coding): + Fixup next and previous pointers. + (Unification): + (Unification Overview): + (Unification Usage): + (Unification Configuration): + (Unification FAQs): + (Unification Theory): + (What Unification Cannot Do for You): + (Charsets and Coding Systems): + New nodes. + +2002-12-17 Stephen Turnbull + + * widget.texi (Widget Wishlist): Typo. + (Defining New Widgets): s/widget-define/define-widget/g. + +2002-12-27 Stephen J. Turnbull + + * internals/internals.texi (Regression Testing XEmacs): Hints for + test design. + +2002-10-29 Ville Skyttä + + * xemacs-faq.texi (Top): + The canonical location for FAQ on the website is /FAQ/. + +2002-11-12 Ilya N. Golubev + + * xemacs/custom.texi (Face Customization): + (Faces): + Document face-frob-from-locale-first variable. + +2002-12-03 Didier Verna + + * xemacs-faq.texi (Customization): add missing menu entry for Q3.2.7. + +2002-12-03 Didier Verna + + * lispref/specifiers.texi (Introduction to Specifiers): fix case + spelling of `Buffer-Local Variables' crossref. + +2002-12-03 Didier Verna + + * xemacs/custom.texi (Faces): document + `set-face-background-pixmap-file'. + +2002-12-03 Didier Verna + + * lispref/faces.texi (Face Convenience Functions): ditto. + * lispref/glyphs.texi (Creating Glyphs): reference it. + +2002-11-29 Stephen Turnbull + + * lispref/specifiers.texi (Simple Specifier Usage): New node. + (Specifiers): Adjust node pointers. + (Simple Specifier Usage): Revise. Adjust node pointers. + + * lispref/toolbar.texi (Creating Toolbar): Xref specifier example. + +2002-10-20 Stephen Turnbull + + * xemacs-faq.texi (Q3.2.7): New FAQ on displaying non-ASCII. + (Q3.5.7, Q1.3.3): Cross-reference it. + +2002-10-20 Stephen Turnbull + + * xemacs-faq.texi (Q2.1.1): Mention bug report commands. + (Q2.0.9): Note how out-of-date the entry is. + (Q1.3.1, Q1.3.2, Q1.3.3, Q1.3.4, Q1.3.5, Q1.3.6): Revise/update. + (Q1.2.1): Fix typo. + + * internals/internals.texi (Regression Testing XEmacs): Thorough + rewrite, documenting macros explicitly. + +2002-10-29 Stephen J. Turnbull + + * lispref/compile.texi (Compilation Options): New node. + (Byte Compilation): Add it to menu. + (Compilation Functions): Minor mods. + (Docs and Compilation): + (Dynamic Loading): + Document some variable defaults. + +2002-11-07 Stephen J. Turnbull + + * internals/internals.texi (Low-Level Modules): Add urefs to Doug + Lea's and Wolfram Gloger's home pages. + +2002-10-18 Stephen J. Turnbull + + * xemacs-faq.texi (Q2.0.16): New FAQ on "no cygXpm-noX" fatal error. + (Q6.1.4): Document cygXpm-noX. + +2002-10-04 Ville Skyttä + + * xemacs/packages.texi (Available Packages): Add fortran-modes, + perl-modes, psgml-dtds, python-modes and ruby-modes. + Some consistency tweaks. + +2002-09-22 Ville Skyttä + + * lispref/variables.texi (add-to-list): Document the new + (optional) append argument. + +2002-09-20 Stephen J. Turnbull + + * internals/internals.texi (Techniques for XEmacs Developers): + More performance optimization hints. + (Modules for Other Aspects of the Lisp Interpreter and Object System): + Describe syntax code internals. + + * lispref/syntax.texi (Syntax Basics): XEmacs "20" -> "20 and later". + (Syntax Class Table): Deprecate SPC as whitespace designator. + (Syntax Flags): Rewrite for `8-bit' comment syntax flags. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. @@ -8,11 +168,11 @@ how to skip and warn about tests that depend on packages. 2002-08-16 Stephen J. Turnbull - + * internals/internals.texi (Regression Testing XEmacs): Fix typo. 2002-08-15 Stephen J. Turnbull - + * internals/internals.texi (GCPROing): Add comment on GCPRO. (Regression Testing XEmacs): New node. (Modules for Regression Testing): New node. @@ -134,7 +294,7 @@ * lispref/glyphs.texi: lispref/lispref.texi: Add examples of how to insert graphics into a buffer. - + 2001-12-17 Stephen J. Turnbull * xemacs/packages.texi (Packages): @@ -161,7 +321,7 @@ 2001-11-27 Adrian Aichner * xemacs-faq.texi: Hyperlink fixes. - + 2002-02-04 Stephen J. Turnbull * xemacs-faq.texi (Q4.7.7): New FAQ on remote files. @@ -194,7 +354,7 @@ * xemacs/packages.texi (Automatically): Don't mention "Options" menu. (Installing Packages): Don't mention getting list of packages via - customize. + customize. 2002-04-05 Stephen J. Turnbull @@ -230,7 +390,7 @@ * emodules.texi (Using DEFUN): Add @ref{Lisp Primitives}. - * lispref/mule.texi (Unicode Support): + * lispref/mule.texi (Unicode Support): * xemacs/custom.texi (Behaviors): * lispref/customize.texi (Enabling Behavior): New nodes. @@ -320,7 +480,7 @@ * glyphs.texi: lispref.texi: Add examples of how to insert graphics into a buffer. - + 2002-01-02 Adrian Aichner * emodules.texi: Add missing direntry, reword "dynamic loadable" @@ -366,7 +526,7 @@ * lispref/intro.texi (Introduction): Next -> Packaging. * lispref/objects.texi (Lisp Data Types): Previous -> Packaging. * Makefile (lispref-srcs): Depend on lispref/packaging.texi. - + 2001-11-26 Adrian Aichner * xemacs-faq.texi (Top): Remove duplicate node "Introduction". @@ -522,7 +682,7 @@ * xemacs-faq.texi (Q2.1.18): * xemacs-faq.texi (Q2.1.19): document how to debug X errors - + 2001-05-15 Steve Youngs * xemacs/packages.texi (Local.rules): Update to reflect new dir tree. @@ -762,7 +922,7 @@ * standards.texi (References): * standards.texi (Index): Update to latest GNU version. - + * xemacs-faq.texi (Q6.3.3): * xemacs-faq.texi (Q6.4.1): Improve questions on current Windows activity. @@ -863,13 +1023,13 @@ location. Update information about the MS Windows port. Change description of XEmacs at beginning to match the web site. Update info about current developers. - + 2001-02-25 Ben Wing * lispref\help.texi (Describing Characters): kp- not kp_. - + 2001-02-25 Ben Wing * new-users-guide\custom1.texi (Customization Basics): @@ -883,7 +1043,7 @@ * new-users-guide\modes.texi (Minor Modes): * new-users-guide\new-users-guide.texi (Top): Fix up references to .emacs to take into account init.el. - + 2001-02-23 Martin Buchholz * XEmacs 21.2.45 "Thelxepeia" is released. diff --text -u 'xemacs-21.5.9/man/internals/internals.texi' 'xemacs-21.5.10/man/internals/internals.texi' Index: ./man/internals/internals.texi --- ./man/internals/internals.texi Thu Aug 22 23:56:32 2002 +++ ./man/internals/internals.texi Fri Jan 3 21:12:36 2003 @@ -3243,7 +3243,14 @@ If you want to make XEmacs faster, target your favorite slow benchmark, run a profiler like Quantify, @code{gprof}, or @code{tcov}, and figure -out where the cycles are going. Specific projects: +out where the cycles are going. In many cases you can localize the +problem (because a particular new feature or even a single patch +elicited it). Don't hesitate to use brute force techniques like a +global counter incremented at strategic places, especially in +combination with other performance indications (@emph{e.g.}, degree of +buffer fragmentation into extents). + +Specific projects: @itemize @bullet @item @@ -3256,8 +3263,16 @@ @item Speed up redisplay. @item -Speed up syntax highlighting. Maybe moving some of the syntax -highlighting capabilities into C would make a difference. +Speed up syntax highlighting. It was suggested that ``maybe moving some +of the syntax highlighting capabilities into C would make a +difference.'' Wrong idea, I think. When processing one large file a +particular low-level routine was being called 40 @emph{million} times +simply for @emph{one} call to @code{newline-and-indent}. Syntax +highlighting needs to be rewritten to use a reliable, fast parser, then +to trust the pre-parsed structure, and only do re-highlighting locally +to a text change. Modern machines are fast enough to implement such +parsers in Lisp; but no machine will ever be fast enough to deal with +quadratic (or worse) algorithms! @item Implement tail recursion in Emacs Lisp (hard!). @end itemize @@ -3455,11 +3470,20 @@ $ xemacs -batch -l test-harness.elc -f batch-test-emacs TEST-FILE @end example -If something goes wrong, you can run the test suite interactively by -loading @file{test-harness.el} into a running XEmacs and typing -@kbd{M-x test-emacs-test-file RET RET}. You will see a log of -passed and failed tests, which should allow you to investigate the -source of the error and ultimately fix the bug. +If a test fails and you need more information, you can run the test +suite interactively by loading @file{test-harness.el} into a running +XEmacs and typing @kbd{M-x test-emacs-test-file RET RET}. +You will see a log of passed and failed tests, which should allow you to +investigate the source of the error and ultimately fix the bug. If you +are not capable of, or don't have time for, debugging it yourself, +please do report the failures using @kbd{M-x report-emacs-bug} or +@kbd{M-x build-report}. + +@deffn Command test-emacs-test-file file +Runs the tests in @var{file}. @file{test-harness.el} must be loaded. +Defines all the macros described in this node, and undefines them when +done. +@end deffn Adding a new test file is trivial: just create a new file here and it will be run. There is no need to byte-compile any of the files in @@ -3469,7 +3493,34 @@ Look at the existing test cases for the examples of coding test cases. It all boils down to your imagination and judicious use of the macros @code{Assert}, @code{Check-Error}, @code{Check-Error-Message}, and -@code{Check-Message}. +@code{Check-Message}. Note that all of these macros are defined only +for the duration of the test: they do not exist in the global +environment. + +@deffn Macro Assert expr +Check that @var{expr} is non-nil at this point in the test. +@end deffn + +@deffn Macro Check-Error expected-error body +Check that execution of @var{body} causes @var{expected-error} to be +signaled. @var{body} is a @code{progn}-like body, and may contain +several expressions. @var{expected-error} is a symbol defined as +an error by @code{define-error}. +@end deffn + +@deffn Macro Check-Error-Message expected-error expected-error-regexp body +Check that execution of @var{body} causes @var{expected-error} to be +signaled, and generate a message matching @var{expected-error-regexp}. +@var{body} is a @code{progn}-like body, and may contain several +expressions. @var{expected-error} is a symbol defined as an error +by @code{define-error}. +@end deffn + +@deffn Macro Check-Message expected-message body +Check that execution of @var{body} causes @var{expected-message} to be +generated (using @code{message} or a similar function). @var{body} is a +@code{progn}-like body, and may contain several expressions. +@end deffn Here's a simple example checking case-sensitive and case-insensitive comparisons from @file{case-tests.el}. @@ -3494,37 +3545,78 @@ (Assert (eq (search-forward "Test Buffer" nil t) 12)))) @end example -This example could be inserted in a file in @file{tests/automated}, and -it would be a complete test, automatically executed when you run +This example could be saved in a file in @file{tests/automated}, and it +would constitute a complete test, automatically executed when you run @kbd{make check} after building XEmacs. More complex tests may require substantial temporary scaffolding to create the environment that elicits -the bugs, but the top-level Makefile and @file{test-harness.el} handle -the running and collection of results from the @code{Assert}, +the bugs, but the top-level @file{Makefile} and @file{test-harness.el} +handle the running and collection of results from the @code{Assert}, @code{Check-Error}, @code{Check-Error-Message}, and @code{Check-Message} macros. +Don't suppress tests just because they're due to known bugs not yet +fixed---use the @code{Known-Bug-Expect-Failure} wrapper macro to mark +them. + +@deffn Macro Known-Bug-Expect-Failure body +Arrange for failing tests in @var{body} to generate messages prefixed +with "KNOWN BUG:" instead of "FAIL:". @var{body} is a @code{progn}-like +body, and may contain several tests. +@end deffn + +A lot of the tests we run push limits; suppress Ebola warning messages +with the @code{Ignore-Ebola} wrapper macro. + +@deffn Macro Ignore-Ebola body +Suppress Ebola warning messages while running tests in @var{body}. +@var{body} is a @code{progn}-like body, and may contain several tests. +@end deffn + +Both macros are defined temporarily within the test function. Simple +examples: + +@example +;; Apparently Ignore-Ebola is a solution with no problem to address. +;; There are no examples in 21.5, anyway. + +;; from regexp-tests.el +(Known-Bug-Expect-Failure + (Assert (not (string-match "\\b" ""))) + (Assert (not (string-match " \\b" " ")))) +@end example + In general, you should avoid using functionality from packages in your tests, because you can't be sure that everyone will have the required package. However, if you've got a test that works, by all means add it. Simply wrap the test in an appropriate test, add a notice that the test -was skipped, and update the @code{skipped-test-reasons} hashtable. -Here's an example from @file{syntax-tests.el}: +was skipped, and update the @code{skipped-test-reasons} hashtable. The +wrapper macro @code{Skip-Test-Unless} is provided to handle common +cases. + +@defvar skipped-test-reasons +Hash table counting the number of times a particular reason is given for +skipping tests. This is only defined within @code{test-emacs-test-file}. +@end defvar + +@deffn Macro Skip-Test-Unless prerequisite reason description body +@var{prerequisite} is usually a feature test (@code{featurep}, +@code{boundp}, @code{fboundp}). @var{reason} is a string describing the +prerequisite; it must be unique because it is used as a hash key in a +table of reasons for skipping tests. @var{description} describes the +tests being skipped, for the test result summary. @var{body} is a +@code{progn}-like body, and may contain several tests. +@end deffn + +@code{Skip-Test-Unless} is defined temporarily within the test function. +Here's an example of usage from @file{syntax-tests.el}: @example ;; Test forward-comment at buffer boundaries (with-temp-buffer - ;; try to use exactly what you need: featurep, boundp, fboundp - (if (not (fboundp 'c-mode)) - - ;; We should provide a standard function for this boilerplate, - ;; probably called `Skip-Test' -- check for that API with C-h f - (let* ((reason "c-mode unavailable") - (count (gethash reason skipped-test-reasons))) - (puthash reason (if (null count) 1 (1+ count)) - skipped-test-reasons) - (Print-Skip "comment and parse-partial-sexp tests" reason)) - + (Skip-Test-Unless (fboundp 'c-mode) + "c-mode unavailable" + "comment and parse-partial-sexp tests" ;; and here's the test code (c-mode) (insert "// comment\n") @@ -3538,11 +3630,50 @@ (parse-partial-sexp point (point-max))))) @end example -@code{Skip-Test} is intended for use with features that are normally +@code{Skip-Test-Unless} is intended for use with features that are normally present in typical configurations. For truly optional features, or tests that apply to one of several alternative implementations (eg, to GTK widgets, but not Athena, Motif, MS Windows, or Carbon), simply -silently omit the test. +silently suppress the test if the feature is not available. + +Here are a few general hints for writing tests. + +@enumerate +@item +Include related successful cases. Fixes often break something. + +@item +Use the Known-Bug-Expect-Failure macro to mark the cases you know +are going to fail. We want to be able to distinguish between +regressions and other unexpected failures, and cases that have +been (partially) analyzed but not yet repaired. + +@item +Mark the bug with the date of report. An ``Unfixed since yyyy-mm-dd'' +gloss for Known-Bug-Expect-Failure is planned to further increase +developer embarrassment (== incentive to fix the bug), but until then at +least put a comment about the date so we can easily see when it was +first reported. + +@item +It's a matter of your judgement, but you should often use generic tests +(@emph{e.g.}, @code{eq}) instead of more specific tests (@code{=} for +numbers) even though you know that arguments ``should'' be of correct +type. That is, if the functions used can return generic objects +(typically @code{nil}), as well as some more specific type that will be +returned on success. We don't want failures of those assertions +reported as ``other failures'' (a wrong-type-arg signal, rather than a +null return), we want them reported as ``assertion failures.'' + +One example is a test that tests @code{(= (string-match this that) 0)}, +expecting a successful match. Now suppose @code{string-match} is broken +such that the match fails. Then it will return @code{nil}, and @code{=} +will signal ``wrong-type-argument, number-char-or-marker-p, nil'', +generating an ``other failure'' in the report. But this should be +reported as an assertion failure (the test failed in a foreseeable way), +rather than something else (we don't know what happened because XEmacs +is broken in a way that we weren't trying to test!) +@end enumerate @node CVS Techniques, A Summary of the Various XEmacs Modules, Regression Testing XEmacs, Top @@ -3801,6 +3932,14 @@ which can speed things up; but it can still cause noticeable performance degradation.) +On Linux systems using @samp{glibc 2}, these strategies are built in to +the so-called ``Doug Lea malloc.'' See, for example, Doug Lea's home +page, especially @uref{http://gee.cs.oswego.edu/dl/html/malloc.html,``A +Memory Allocator''}. The source file, @file{malloc.c} (available at the +same place) is copiously (and usefully!) commented. +@uref{http://www.malloc.de/,Wolfram Gloger's home page} may also be +useful. + @file{free-hook.c} contains some debugging functions for checking for invalid arguments to @code{free()}. @@ -3814,7 +3953,6 @@ similar in spirit to the @file{sys*.h} files described in section J, below. - @example blocktype.c blocktype.h @@ -4772,6 +4910,27 @@ @code{forward-sexp}, and by @file{font-lock.c} to locate quoted strings, comments, etc. +@c #### Break this out into a separate node somewhere! +Syntax codes are implemented as bitfields in an int. Bits 0-6 contain +the syntax code itself, bit 7 is a special prefix flag used for Lisp, +and bits 16-23 contain comment syntax flags. From the Lisp programmer's +point of view, there are 11 flags: 2 styles X 2 characters X @{start, +end@} flags for two-character comment delimiters, 2 style flags for +one-character comment delimiters, and the prefix flag. + +Internally, however, the characters used in multi-character delimiters +will have non-comment-character syntax classes (@emph{e.g.}, the +@samp{/} in C's @samp{/*} comment-start delimiter has ``punctuation'' +(here meaning ``operator-like'') class in C modes). Thus in a mixed +comment style, such as C++'s @samp{//} to end of line, is represented by +giving @samp{/} the ``punctuation'' class and the ``style b first +character of start sequence'' and ``style b second character of start +sequence'' flags. The fact that class is @emph{not} punctuation allows +the syntax scanner to recognize that this is a multi-character +delimiter. The @samp{newline} character is given (single-character) +``comment-end'' @emph{class} and the ``style b first character of end +sequence'' @emph{flag}. The ``comment-end'' class allows the scanner to +determine that no second character is needed to terminate the comment. @example diff --text -u 'xemacs-21.5.9/man/lispref/compile.texi' 'xemacs-21.5.10/man/lispref/compile.texi' Index: ./man/lispref/compile.texi --- ./man/lispref/compile.texi Fri Apr 13 03:22:11 2001 +++ ./man/lispref/compile.texi Tue Nov 12 12:57:48 2002 @@ -41,6 +41,7 @@ @menu * Speed of Byte-Code:: An example of speedup from byte compilation. * Compilation Functions:: Byte compilation functions. +* Compilation Options:: Controlling the byte compiler's behavior. * Docs and Compilation:: Dynamic loading of documentation strings. * Dynamic Loading:: Dynamic loading of individual functions. * Eval During Compile:: Code to be evaluated when you compile. @@ -255,12 +256,18 @@ @c XEmacs feature @defvar byte-recompile-directory-ignore-errors-p - If non-@code{nil}, this specifies that @code{byte-recompile-directory} -will continue compiling even when an error occurs in a file. This is -normally @code{nil}, but is bound to @code{t} by -@code{batch-byte-recompile-directory}. + When non-@code{nil}, @code{byte-recompile-directory} will continue +compiling even when an error occurs in a file. Default: @code{nil}, but +bound to @code{t} by @code{batch-byte-recompile-directory}. @end defvar +@c XEmacs feature (?) +@defvar byte-recompile-directory-recursively + When non-@code{nil}, @code{byte-recompile-directory} will recurse on +subdirectories. Default: @code{t}. +@end defvar + + @defun byte-code instructions constants stack-depth @cindex byte-code interpreter This function actually interprets byte-code. @@ -275,6 +282,287 @@ code without an associated argument list. @end defun +@node Compilation Options +@section Options for the Byte Compiler +@cindex compilation options + +Warning: this node is a quick draft based on docstrings. There may be +inaccuracies, as the docstrings occasionally disagree with each other. +This has not been checked yet. + +The byte compiler and optimizer are controlled by the following +variables. The @code{byte-compiler-options} macro described below +provides a convenient way to set most of them on a file-by-file basis. + +@defvar emacs-lisp-file-regexp +Regexp which matches Emacs Lisp source files. +You may want to redefine @code{byte-compile-dest-file} if you change +this. Default: @code{"\\.el$"}. +@end defvar + +@defun byte-compile-dest-file filename +Convert an Emacs Lisp source file name to a compiled file name. This +function may be redefined by the user, if necessary, for compatibility +with @code{emacs-lisp-file-regexp}. +@end defun + +@c ;; This can be the 'byte-compile property of any symbol. +@c (autoload 'byte-compile-inline-expand "byte-optimize") + +@defvar byte-compile-verbose +When non-@code{nil}, print messages describing progress of +byte-compiler. Default: @code{t} if interactive on a not-too-slow +terminal (see @code{search-slow-speed}), otherwise @code{nil}. +@end defvar + +@defvar byte-optimize +Level of optimization in the byte compiler. + +@table @code +@item nil +Do no optimization. + +@item t +Do all optimizations. + +@item source +Do optimizations manipulating the source code only. + +@item byte +Do optimizations manipulating the byte code (actually, LAP code) only. +@end table +Default: @code{t}. +@end defvar + +@defvar byte-compile-delete-errors +When non-@code{nil}, the optimizer may delete forms that may signal an +error if that is the only change in the function's behavior. +This includes variable references and calls to functions such as +@code{car}. +Default: @code{t}. +@end defvar + +@defvar byte-optimize-log nil +When non-@code{nil}, the byte-compiler logs optimizations into +@file{*Compile-Log*}. + +@table @code +@item nil +Log no optimization. + +@item t +Log all optimizations. + +@item source +Log optimizations manipulating the source code only. + +@item byte +Log optimizations manipulating the byte code (actually, LAP code) only. +@end table +Default: @code{nil}. +@end defvar + +@defvar byte-compile-error-on-warn +When non-@code{nil}, the byte-compiler reports warnings with @code{error}. +Default: @code{nil}. +@end defvar + +@defvar byte-compile-default-warnings +The warnings used when @code{byte-compile-warnings} is @code{t}. Called +@code{byte-compile-warning-types} in GNU Emacs. +Default: @code{(redefine callargs subr-callargs free-vars unresolved +unused-vars obsolete)}. +@end defvar + +@defvar byte-compile-warnings + +List of warnings that the compiler should issue (@code{t} for the +default set). Elements of the list may be: + +@table @code +@item free-vars +References to variables not in the current lexical scope. + +@item unused-vars +References to non-global variables bound but not referenced. + +@item unresolved +Calls to unknown functions. + +@item callargs +Lambda calls with args that don't match the definition. + +@item subr-callargs +Calls to subrs with args that don't match the definition. + +@item redefine +Function cell redefined from a macro to a lambda or vice +versa, or redefined to take a different number of arguments. + +@item obsolete +Use of an obsolete function or variable. + +@item pedantic +Warn of use of compatible symbols. +@end table + +The default set is specified by @code{byte-compile-default-warnings} and +normally encompasses all possible warnings. + +See also the macro @code{byte-compiler-options}. Default: @code{t}. +@end defvar + +The compiler can generate a call graph, which gives information about +which functions call which functions. + +@defvar byte-compile-generate-call-tree +When non-@code{nil}, the compiler generates a call graph. This records +functions that were called and from where. If the value is @code{t}, +compilation displays the call graph when it finishes. If the value is +neither @code{t} nor @code{nil}, compilation asks you whether to display +the graph. + +The call tree only lists functions called, not macros used. Those +functions which the byte-code interpreter knows about directly +(@code{eq}, @code{cons}, etc.) are not reported. + +The call tree also lists those functions which are not known to be called +(that is, to which no calls have been compiled). Functions which can be +invoked interactively are excluded from this list. Default: @code{nil}. +@end defvar + +@defvar byte-compile-call-tree nil + +Alist of functions and their call tree, used internally. +Each element takes the form + + (@var{function} @var{callers} @var{calls}) + +where @var{callers} is a list of functions that call @var{function}, and +@var{calls} is a list of functions for which calls were generated while +compiling @var{function}. +@end defvar + +@defvar byte-compile-call-tree-sort +When non-@code{nil}, sort the call tree. The values @code{name}, +@code{callers}, @code{calls}, and @code{calls+callers} specify different +fields to sort on.") Default: @code{name}. +@end defvar + +@code{byte-compile-overwrite-file} controls treatment of existing +compiled files. + +@defvar byte-compile-overwrite-file +When non-@code{nil}, do not preserve backups of @file{.elc}s. +Precisely, if @code{nil}, old @file{.elc} files are deleted before the +new one is saved, and @file{.elc} files will have the same modes as the +corresponding @file{.el} file. Otherwise, existing @file{.elc} files +will simply be overwritten, and the existing modes will not be changed. +If this variable is @code{nil}, then an @file{.elc} file which is a +symbolic link will be turned into a normal file, instead of the file +which the link points to being overwritten. Default: @code{t}. +@end defvar + +Variables controlling recompiling directories are described elsewhere +@xref{Compilation Functions}. They are +@code{byte-recompile-directory-ignore-errors-p} and +@code{byte-recompile-directory-recursively}. + +The dynamic loading features are described elsewhere. These are +controlled by the variables @code{byte-compile-dynamic} (@pxref{Dynamic +Loading}) and @code{byte-compile-dynamic-docstrings} (@pxref{Docs and +Compilation}). + +The byte compiler is a relatively recent development, and has evolved +significantly over the period covering Emacs versions 19 and 20. The +following variables control use of newer functionality by the byte +compiler. These are rarely needed since the release of XEmacs 21. + +Another set of compatibility issues arises between Mule and non-Mule +XEmacsen; there are no known compatibility issues specific to the byte +compiler. There are also compatibility issues between XEmacs and GNU +Emacs's versions of the byte compiler. While almost all of the byte +codes are the same, and code compiled by one version often runs +perfectly well on the other, this is very dangerous, and can result in +crashes or data loss. Always recompile your Lisp when moving between +XEmacs and GNU Emacs. + +@defvar byte-compile-single-version nil +When non-@code{nil}, the choice of emacs version (v19 or v20) byte-codes +will be hard-coded into bytecomp when it compiles itself. If the +compiler itself is compiled with optimization, this causes a speedup. +Default: @code{nil}. +@end defvar + +@defvar byte-compile-emacs19-compatibility +When non-@code{nil} generate output that can run in Emacs 19. +Default: @code{nil} when Emacs version is 20 or above, otherwise +@code{t}. +@end defvar + +@defvar byte-compile-print-gensym +When non-@code{nil}, the compiler may generate code that creates unique +symbols at run-time. This is achieved by printing uninterned symbols +using the @code{#:@var{}} notation, so that they will be read uninterned +when run. + +With this feature, code that uses uninterned symbols in macros will +not be runnable under pre-21.0 XEmacsen. + +Default: When @code{byte-compile-emacs19-compatibility} is non-nil, this +variable is ignored and considered to be @code{nil}. Otherwise +@code{t}. +@end defvar + +@defvar byte-compile-new-bytecodes +This is completely ignored. For backwards compatibility. +@end defvar + +@defun byte-compiler-options &rest args +Set some compilation-parameters for this file. +This will affect only the file in which it appears; this does nothing when +evaluated, or when loaded from a @file{.el} file. + +Each argument to this macro must be a list of a key and a value. +(#### Need to check whether the newer variables are settable here.) + +@example + Keys: Values: Corresponding variable: + + verbose t, nil byte-compile-verbose + optimize t, nil, source, byte byte-optimize + warnings list of warnings byte-compile-warnings + file-format emacs19, emacs20 byte-compile-emacs19-compatibility +@end example + +The value specified with the @code{warnings}option must be a list, +containing some subset of the following flags: + +@example + free-vars references to variables not in the current lexical scope. + unused-vars references to non-global variables bound but not referenced. + unresolved calls to unknown functions. + callargs lambda calls with args that don't match the definition. + redefine function cell redefined from a macro to a lambda or vice + versa, or redefined to take a different number of arguments. +@end example + +If the first element if the list is @code{+} or `@code{} then the +specified elements are added to or removed from the current set of +warnings, instead of the entire set of warnings being overwritten. +(#### Need to check whether the newer warnings are settable here.) + +For example, something like this might appear at the top of a source file: + +@example + (byte-compiler-options + (optimize t) + (warnings (- callargs)) ; Don't warn about arglist mismatch + (warnings (+ unused-vars)) ; Do warn about unused bindings + (file-format emacs19)) +@end example +@end defun + @node Docs and Compilation @section Documentation Strings and Compilation @cindex dynamic loading of documentation @@ -327,6 +615,7 @@ @defvar byte-compile-dynamic-docstrings If this is non-@code{nil}, the byte compiler generates compiled files that are set up for dynamic loading of documentation strings. +Default: t. @end defvar @cindex @samp{#@@@var{count}} @@ -387,6 +676,7 @@ @defvar byte-compile-dynamic If this is non-@code{nil}, the byte compiler generates compiled files that are set up for dynamic function loading. +Default: nil. @end defvar @defun fetch-bytecode function diff --text -u 'xemacs-21.5.9/man/lispref/faces.texi' 'xemacs-21.5.10/man/lispref/faces.texi' Index: ./man/lispref/faces.texi --- ./man/lispref/faces.texi Fri Apr 13 03:22:13 2001 +++ ./man/lispref/faces.texi Tue Dec 3 19:35:14 2002 @@ -375,6 +375,12 @@ string, containing the raw bits of the bitmap. @end deffn +@deffn Command set-face-background-pixmap-file face file +This function sets the background pixmap of face @var{face} to the image +contained in @var{file}. This is just a simplified version of +@code{set-face-background-pixmap} which provides filename completion. +@end deffn + @deffn Command set-face-font face font &optional locale tag-set how-to-add This function sets the font of face @var{face}. The argument @var{font} should be a string or a font object as returned by @code{make-font} diff --text -u 'xemacs-21.5.9/man/lispref/glyphs.texi' 'xemacs-21.5.10/man/lispref/glyphs.texi' Index: ./man/lispref/glyphs.texi --- ./man/lispref/glyphs.texi Thu Dec 20 14:49:37 2001 +++ ./man/lispref/glyphs.texi Tue Dec 3 19:35:15 2002 @@ -226,13 +226,14 @@ To use a glyph as the background pixmap of a face: Note that the background pixmap of a face is actually an image specifier -- probably the only place in XEmacs where an image specifier occurs outside of a -glyph. Similarly to how the glyph's image specifier works, you don't +glyph. Similarly to how the glyph's image specifier works, you don't create your own image specifier, but rather add specifications to the -existing one (using @code{set-face-background-pixmap}). Note that the -image instance that is generated in order to actually display the -background pixmap is of type @code{mono-pixmap}, meaning that it's a -two-color image and the foreground and background of the image get -filled in with the corresponding colors from the face. +existing one (using @code{set-face-background-pixmap-file} or +@code{set-face-background-pixmap}). Note that the image instance that is +generated in order to actually display the background pixmap is of type +@code{mono-pixmap}, meaning that it's a two-color image and the +foreground and background of the image get filled in with the +corresponding colors from the face. @end itemize It is extremely rare that you will ever have to specify a value for @@ -1454,7 +1455,7 @@ ;; current buffer. Any existing glyph at this location is replaced. (defun insert-glyph (gl) "Insert a glyph at the left edge of point." - (let ( (prop 'myimage) ;; myimage is an arbitrary name, chosen + (let ( (prop 'myimage) ;; myimage is an arbitrary name, chosen ;; to (hopefully) not conflict with any ;; other properties. Change it if ;; necessary. diff --text -u 'xemacs-21.5.9/man/lispref/mule.texi' 'xemacs-21.5.10/man/lispref/mule.texi' Index: ./man/lispref/mule.texi --- ./man/lispref/mule.texi Sat Jul 6 05:35:52 2002 +++ ./man/lispref/mule.texi Sun Jan 5 19:54:04 2003 @@ -24,6 +24,8 @@ * CCL:: A special language for writing fast converters. * Category Tables:: Subdividing charsets into groups. * Unicode Support:: The universal coded character set. +* Charset Unification:: Handling overlapping character sets. +* Charsets and Coding Systems:: Tables and reference information. @end menu @node Internationalization Terminology, Charsets, , MULE @@ -2072,7 +2074,7 @@ @c Added 2002-03-13 sjt -@node Unicode Support, , Category Tables, MULE +@node Unicode Support, Charset Unification, Category Tables, MULE @section Unicode Support @cindex unicode @cindex utf-8 @@ -2181,3 +2183,880 @@ @end table @end defun + +@node Charset Unification, Charsets and Coding Systems, Unicode Support, MULE +@section Character Set Unification + +Mule suffers from a design defect that causes it to consider the ISO +Latin character sets to be disjoint. This results in oddities such as +files containing both ISO 8859/1 and ISO 8859/15 codes, and using ISO +2022 control sequences to switch between them, as well as more plausible +but often unnecessary combinations like ISO 8859/1 with ISO 8859/2. +This can be very annoying when sending messages or even in simple +editing on a single host. Unification works around the problem by +converting as many characters as possible to use a single Latin coded +character set before saving the buffer. + +This node and its children were ripp'd untimely from +@file{latin-unity.texi}, and have been quickly converted for use here. +However as APIs are likely to diverge, beware of inaccuracies. Please +report any you discover with @kbd{M-x report-xemacs-bug RET}, as well +as any ambiguities or downright unintelligible passages. + +A lot of the stuff here doesn't belong here; it belongs in the +@ref{Top, , , xemacs, XEmacs User's Manual}. Report those as bugs, +too, preferably with patches. + +@menu +* Overview:: Unification history and general information. +* Usage:: An overview of the operation of Unification. +* Configuration:: Configuring Unification for use. +* Theory of Operation:: How Unification works. +* What Unification Cannot Do for You:: Inherent problems of 8-bit charsets. +* Charsets and Coding Systems:: Reference lists with annotations. +* Unification Internals:: Utilities and implementation details. +@end menu + +@node Overview, Usage, Charset Unification, Charset Unification +@subsection An Overview of Unification + +Mule suffers from a design defect that causes it to consider the ISO +Latin character sets to be disjoint. This manifests itself when a user +enters characters using input methods associated with different coded +character sets into a single buffer. + +A very important example involves email. Many sites, especially in the +U.S., default to use of the ISO 8859/1 coded character set (also called +``Latin 1,'' though these are somewhat different concepts). However, +ISO 8859/1 provides a generic CURRENCY SIGN character. Now that the +Euro has become the official currency of most countries in Europe, this +is unsatisfactory (and in practice, useless). So Europeans generally +use ISO 8859/15, which is nearly identical to ISO 8859/1 for most +languages, except that it substitutes EURO SIGN for CURRENCY SIGN. + +Suppose a European user yanks text from a post encoded in ISO 8859/1 +into a message composition buffer, and enters some text including the +Euro sign. Then Mule will consider the buffer to contain both ISO +8859/1 and ISO 8859/15 text, and MUAs such as Gnus will (if naively +programmed) send the message as a multipart mixed MIME body! + +This is clearly stupid. What is not as obvious is that, just as any +European can include American English in their text because ASCII is a +subset of ISO 8859/15, most European languages which use Latin +characters (eg, German and Polish) can typically be mixed while using +only one Latin coded character set (in this case, ISO 8859/2). However, +this often depends on exactly what text is to be encoded. + +Unification works around the problem by converting as many characters as +possible to use a single Latin coded character set before saving the +buffer. + +@node Usage, Configuration, Overview, Charset Unification +@subsection Operation of Unification + +Normally, Unification works in the background by installing +@code{unity-sanity-check} on @code{write-region-pre-hook}. This is +done by default for the ISO 8859 Latin family of character sets. The +user activates this functionality for other character set families by +invoking @code{enable-unification}, either interactively or in her +init file. @xref{Init File, , , xemacs}. Unification can be +deactivated by invoking @code{disable-unification}. + +Unification also provides a few functions for remapping or recoding the +buffer by hand. To @dfn{remap} a character means to change the buffer +representation of the character by using another coded character set. +Remapping never changes the identity of the character, but may involve +altering the code point of the character. To @dfn{recode} a character +means to simply change the coded character set. Recoding never alters +the code point of the character, but may change the identity of the +character. @xref{Theory of Operation}. + +There are a few variables which determine which coding systems are +always acceptable to Unification: @code{unity-ucs-list}, +@code{unity-preferred-coding-system-list}, and +@code{unity-preapproved-coding-system-list}. The latter two default +to @code{()}, and should probably be avoided because they short-circuit +the sanity check. If you find you need to use them, consider reporting +it as a bug or request for enhancement. Because they seem unsafe, the +recommended interface is likely to change. + +@menu +* Basic Functionality:: User interface and customization. +* Interactive Usage:: Treating text by hand. + Also documents the hook function(s). +@end menu + + +@node Basic Functionality, Interactive Usage, , Usage +@section Basic Functionality + +These functions and user options initialize and configure Unification. +In normal use, none of these should be needed. + +@strong{These APIs are certain to change.} + +@defun enable-unification +Set up hooks and initialize variables for latin-unity. + +There are no arguments. + +This function is idempotent. It will reinitialize any hooks or variables +that are not in initial state. +@end defun + +@defun disable-unification +There are no arguments. + +Clean up hooks and void variables used by latin-unity. +@end defun + +@defopt unity-ucs-list +List of coding systems considered to be universal. + +The default value is @code{'(utf-8 iso-2022-7 ctext escape-quoted)}. + +Order matters; coding systems earlier in the list will be preferred when +recommending a coding system. These coding systems will not be used +without querying the user (unless they are also present in +@code{unity-preapproved-coding-system-list}), and follow the +@code{unity-preferred-coding-system-list} in the list of suggested +coding systems. + +If none of the preferred coding systems are feasible, the first in +this list will be the default. + +Notes on certain coding systems: @code{escape-quoted} is a special +coding system used for autosaves and compiled Lisp in Mule. You should +@c #### fix in latin-unity.texi +never delete this, although it is rare that a user would want to use it +directly. Unification does not try to be \"smart\" about other general +ISO 2022 coding systems, such as ISO-2022-JP. (They are not recognized +as equivalent to @code{iso-2022-7}.) If your preferred coding system is +one of these, you may consider adding it to @code{unity-ucs-list}. +However, this will typically have the side effect that (eg) ISO 8859/1 +files will be saved in 7-bit form with ISO 2022 escape sequences. +@end defopt + +Coding systems which are not Latin and not in +@code{unity-ucs-list} are handled by short circuiting checks of +coding system against the next two variables. + +@defopt unity-preapproved-coding-system-list +List of coding systems used without querying the user if feasible. + +The default value is @samp{(buffer-default preferred)}. + +The first feasible coding system in this list is used. The special values +@samp{preferred} and @samp{buffer-default} may be present: + +@table @code +@item buffer-default +Use the coding system used by @samp{write-region}, if feasible. + +@item preferred +Use the coding system specified by @samp{prefer-coding-system} if feasible. +@end table + +"Feasible" means that all characters in the buffer can be represented by +the coding system. Coding systems in @samp{unity-ucs-list} are +always considered feasible. Other feasible coding systems are computed +by @samp{unity-representations-feasible-region}. + +Note that the first universal coding system in this list shadows all +other coding systems. In particular, if your preferred coding system is +a universal coding system, and @code{preferred} is a member of this +list, unification will blithely convert all your files to that coding +system. This is considered a feature, but it may surprise most users. +Users who don't like this behavior should put @code{preferred} in +@code{unity-preferred-coding-system-list}. +@end defopt + +@defopt unity-preferred-coding-system-list +@c #### fix in latin-unity.texi +List of coding systems suggested to the user if feasible. + +The default value is @samp{(iso-8859-1 iso-8859-15 iso-8859-2 iso-8859-3 +iso-8859-4 iso-8859-9)}. + +If none of the coding systems in +@c #### fix in latin-unity.texi +@code{unity-preapproved-coding-system-list} are feasible, this list +will be recommended to the user, followed by the +@code{unity-ucs-list}. The first coding system in this list is default. The +special values @samp{preferred} and @samp{buffer-default} may be +present: + +@table @code +@item buffer-default +Use the coding system used by @samp{write-region}, if feasible. + +@item preferred +Use the coding system specified by @samp{prefer-coding-system} if feasible. +@end table + +"Feasible" means that all characters in the buffer can be represented by +the coding system. Coding systems in @samp{unity-ucs-list} are +always considered feasible. Other feasible coding systems are computed +by @samp{unity-representations-feasible-region}. +@end defopt + + +@defvar unity-iso-8859-1-aliases +List of coding systems to be treated as aliases of ISO 8859/1. + +The default value is '(iso-8859-1). + +This is not a user variable; to customize input of coding systems or +charsets, @samp{unity-coding-system-alias-alist} or +@samp{unity-charset-alias-alist}. +@end defvar + + +@node Interactive Usage, , Basic Functionality, Usage +@section Interactive Usage + +First, the hook function @code{unity-sanity-check} is documented. +(It is placed here because it is not an interactive function, and there +is not yet a programmer's section of the manual.) + +These functions provide access to internal functionality (such as the +remapping function) and to extra functionality (the recoding functions +and the test function). + + +@defun unity-sanity-check begin end filename append visit lockname &optional coding-system + +Check if @var{coding-system} can represent all characters between +@var{begin} and @var{end}. + +For compatibility with old broken versions of @code{write-region}, +@var{coding-system} defaults to @code{buffer-file-coding-system}. +@var{filename}, @var{append}, @var{visit}, and @var{lockname} are +ignored. + +Return nil if buffer-file-coding-system is not (ISO-2022-compatible) +Latin. If @code{buffer-file-coding-system} is safe for the charsets +actually present in the buffer, return it. Otherwise, ask the user to +choose a coding system, and return that. + +This function does @emph{not} do the safe thing when +@code{buffer-file-coding-system} is nil (aka no-conversion). It +considers that ``non-Latin,'' and passes it on to the Mule detection +mechanism. + +This function is intended for use as a @code{write-region-pre-hook}. It +does nothing except return @var{coding-system} if @code{write-region} +handlers are inhibited. +@end defun + +@defun unity-buffer-representations-feasible + +There are no arguments. + +Apply unity-region-representations-feasible to the current buffer. +@end defun + +@defun unity-region-representations-feasible begin end &optional buf + +Return character sets that can represent the text from @var{begin} to @var{end} in @var{buf}. + +@var{buf} defaults to the current buffer. Called interactively, will be +applied to the region. Function assumes @var{begin} <= @var{end}. + +The return value is a cons. The car is the list of character sets +that can individually represent all of the non-ASCII portion of the +buffer, and the cdr is the list of character sets that can +individually represent all of the ASCII portion. + +The following is taken from a comment in the source. Please refer to +the source to be sure of an accurate description. + +The basic algorithm is to map over the region, compute the set of +charsets that can represent each character (the ``feasible charset''), +and take the intersection of those sets. + +The current implementation takes advantage of the fact that ASCII +characters are common and cannot change asciisets. Then using +skip-chars-forward makes motion over ASCII subregions very fast. + +This same strategy could be applied generally by precomputing classes +of characters equivalent according to their effect on latinsets, and +adding a whole class to the skip-chars-forward string once a member is +found. + +Probably efficiency is a function of the number of characters matched, +or maybe the length of the match string? With @code{skip-category-forward} +over a precomputed category table it should be really fast. In practice +for Latin character sets there are only 29 classes. +@end defun + +@defun unity-remap-region begin end character-set &optional coding-system + +Remap characters between @var{begin} and @var{end} to equivalents in +@var{character-set}. Optional argument @var{coding-system} may be a +coding system name (a symbol) or nil. Characters with no equivalent are +left as-is. + +When called interactively, @var{begin} and @var{end} are set to the +beginning and end, respectively, of the active region, and the function +prompts for @var{character-set}. The function does completion, knows +how to guess a character set name from a coding system name, and also +provides some common aliases. See @code{unity-guess-charset}. +There is no way to specify @var{coding-system}, as it has no useful +function interactively. + +Return @var{coding-system} if @var{coding-system} can encode all +characters in the region, t if @var{coding-system} is nil and the coding +system with G0 = 'ascii and G1 = @var{character-set} can encode all +characters, and otherwise nil. Note that a non-null return does +@emph{not} mean it is safe to write the file, only the specified region. +(This behavior is useful for multipart MIME encoding and the like.) + +Note: by default this function is quite fascist about universal coding +systems. It only admits @samp{utf-8}, @samp{iso-2022-7}, and +@samp{ctext}. Customize @code{unity-approved-ucs-list} to change +this. + +This function remaps characters that are artificially distinguished by Mule +internal code. It may change the code point as well as the character set. +To recode characters that were decoded in the wrong coding system, use +@code{unity-recode-region}. +@end defun + +@defun unity-recode-region begin end wrong-cs right-cs + +Recode characters between @var{begin} and @var{end} from @var{wrong-cs} +to @var{right-cs}. + +@var{wrong-cs} and @var{right-cs} are character sets. Characters retain +the same code point but the character set is changed. Only characters +from @var{wrong-cs} are changed to @var{right-cs}. The identity of the +character may change. Note that this could be dangerous, if characters +whose identities you do not want changed are included in the region. +This function cannot guess which characters you want changed, and which +should be left alone. + +When called interactively, @var{begin} and @var{end} are set to the +beginning and end, respectively, of the active region, and the function +prompts for @var{wrong-cs} and @var{right-cs}. The function does +completion, knows how to guess a character set name from a coding system +name, and also provides some common aliases. See +@code{unity-guess-charset}. + +Another way to accomplish this, but using coding systems rather than +character sets to specify the desired recoding, is +@samp{unity-recode-coding-region}. That function may be faster +but is somewhat more dangerous, because it may recode more than one +character set. + +To change from one Mule representation to another without changing identity +of any characters, use @samp{unity-remap-region}. +@end defun + +@defun unity-recode-coding-region begin end wrong-cs right-cs + +Recode text between @var{begin} and @var{end} from @var{wrong-cs} to +@var{right-cs}. + +@var{wrong-cs} and @var{right-cs} are coding systems. Characters retain +the same code point but the character set is changed. The identity of +characters may change. This is an inherently dangerous function; +multilingual text may be recoded in unexpected ways. #### It's also +dangerous because the coding systems are not sanity-checked in the +current implementation. + +When called interactively, @var{begin} and @var{end} are set to the +beginning and end, respectively, of the active region, and the function +prompts for @var{wrong-cs} and @var{right-cs}. The function does +completion, knows how to guess a coding system name from a character set +name, and also provides some common aliases. See +@code{unity-guess-coding-system}. + +Another, safer, way to accomplish this, using character sets rather +than coding systems to specify the desired recoding, is to use +@c #### fixme in latin-unity.texi +@code{unity-recode-region}. + +To change from one Mule representation to another without changing identity +of any characters, use @code{unity-remap-region}. +@end defun + +Helper functions for input of coding system and character set names. + +@defun unity-guess-charset candidate +Guess a charset based on the symbol @var{candidate}. + +@var{candidate} itself is not tried as the value. + +Uses the natural mapping in @samp{unity-cset-codesys-alist}, and +the values in @samp{unity-charset-alias-alist}." +@end defun + +@defun unity-guess-coding-system candidate +Guess a coding system based on the symbol @var{candidate}. + +@var{candidate} itself is not tried as the value. + +Uses the natural mapping in @samp{unity-cset-codesys-alist}, and +the values in @samp{unity-coding-system-alias-alist}." +@end defun + +@defun unity-example + +A cheesy example for Unification. + +At present it just makes a multilingual buffer. To test, setq +buffer-file-coding-system to some value, make the buffer dirty (eg +with RET BackSpace), and save. +@end defun + + +@node Configuration, Theory of Operation, Usage, Charset Unification +@subsection Configuring Unification for Use + +If you want Unification to be automatically initialized, invoke +@samp{enable-unification} with no arguments in your init file. +@xref{Init File, , , xemacs}. If you are using GNU Emacs or an XEmacs +earlier than 21.1, you should also load @file{auto-autoloads} using the +full path (@emph{never} @samp{require} @file{auto-autoloads} libraries). + +You may wish to define aliases for commonly used character sets and +coding systems for convenience in input. + +@defopt unity-charset-alias-alist +Alist mapping aliases to Mule charset names (symbols)." + +The default value is +@example + ((latin-1 . latin-iso8859-1) + (latin-2 . latin-iso8859-2) + (latin-3 . latin-iso8859-3) + (latin-4 . latin-iso8859-4) + (latin-5 . latin-iso8859-9) + (latin-9 . latin-iso8859-15) + (latin-10 . latin-iso8859-16)) +@end example + +If a charset does not exist on your system, it will not complete and you +will not be able to enter it in response to prompts. A real charset +with the same name as an alias in this list will shadow the alias. +@end defopt + +@defopt unity-coding-system-alias-alist nil +Alist mapping aliases to Mule coding system names (symbols). + +The default value is @samp{nil}. +@end defopt + + +@node Theory of Operation, What Unification Cannot Do for You, Configuration, Charset Unification +@subsection Theory of Operation + +Standard encodings suffer from the design defect that they do not +provide a reliable way to recognize which coded character sets in use. +@xref{What Unification Cannot Do for You}. There are scores of +character sets which can be represented by a single octet (8-bit byte), +whose union contains many hundreds of characters. Obviously this +results in great confusion, since you can't tell the players without a +scorecard, and there is no scorecard. + +There are two ways to solve this problem. The first is to create a +universal coded character set. This is the concept behind Unicode. +However, there have been satisfactory (nearly) universal character sets +for several decades, but even today many Westerners resist using Unicode +because they consider its space requirements excessive. On the other +hand, Asians dislike Unicode because they consider it to be incomplete. +(This is partly, but not entirely, political.) + +In any case, Unicode only solves the internal representation problem. +Many data sets will contain files in ``legacy'' encodings, and Unicode +does not help distinguish among them. + +The second approach is to embed information about the encodings used in +a document in its text. This approach is taken by the ISO 2022 +standard. This would solve the problem completely from the users' of +view, except that ISO 2022 is basically not implemented at all, in the +sense that few applications or systems implement more than a small +subset of ISO 2022 functionality. This is due to the fact that +mono-literate users object to the presence of escape sequences in their +texts (which they, with some justification, consider data corruption). +Programmers are more than willing to cater to these users, since +implementing ISO 2022 is a painstaking task. + +In fact, Emacs/Mule adopts both of these approaches. Internally it uses +a universal character set, @dfn{Mule code}. Externally it uses ISO 2022 +techniques both to save files in forms robust to encoding issues, and as +hints when attempting to ``guess'' an unknown encoding. However, Mule +suffers from a design defect, namely it embeds the character set +information that ISO 2022 attaches to runs of characters by introducing +them with a control sequence in each character. That causes Mule to +consider the ISO Latin character sets to be disjoint. This manifests +itself when a user enters characters using input methods associated with +different coded character sets into a single buffer. + +There are two problems stemming from this design. First, Mule +represents the same character in different ways. Abstractly, 'ó' +(LATIN SMALL LETTER O WITH ACUTE) can get represented as +[latin-iso8859-1 #x73] or as [latin-iso8859-2 #x73]. So what looks like +'óó' in the display might actually be represented [latin-iso8859-1 +#x73][latin-iso8859-2 #x73] in the buffer, and saved as [#xF3 ESC - B +#xF3 ESC - A] in the file. In some cases this treatment would be +appropriate (consider HYPHEN, MINUS SIGN, EN DASH, EM DASH, and U+4E00 +(the CJK ideographic character meaning ``one'')), and although arguably +incorrect it is convenient when mixing the CJK scripts. But in the case +of the Latin scripts this is wrong. + +Worse yet, it is very likely to occur when mixing ``different'' encodings +(such as ISO 8859/1 and ISO 8859/15) that differ only in a few code +points that are almost never used. A very important example involves +email. Many sites, especially in the U.S., default to use of the ISO +8859/1 coded character set (also called ``Latin 1,'' though these are +somewhat different concepts). However, ISO 8859/1 provides a generic +CURRENCY SIGN character. Now that the Euro has become the official +currency of most countries in Europe, this is unsatisfactory (and in +practice, useless). So Europeans generally use ISO 8859/15, which is +nearly identical to ISO 8859/1 for most languages, except that it +substitutes EURO SIGN for CURRENCY SIGN. + +Suppose a European user yanks text from a post encoded in ISO 8859/1 +into a message composition buffer, and enters some text including the +Euro sign. Then Mule will consider the buffer to contain both ISO +8859/1 and ISO 8859/15 text, and MUAs such as Gnus will (if naively +programmed) send the message as a multipart mixed MIME body! + +This is clearly stupid. What is not as obvious is that, just as any +European can include American English in their text because ASCII is a +subset of ISO 8859/15, most European languages which use Latin +characters (eg, German and Polish) can typically be mixed while using +only one Latin coded character set (in the case of German and Polish, +ISO 8859/2). However, this often depends on exactly what text is to be +encoded (even for the same pair of languages). + +Unification works around the problem by converting as many characters as +possible to use a single Latin coded character set before saving the +buffer. + +Because the problem is rarely noticable in editing a buffer, but tends +to manifest when that buffer is exported to a file or process, the +Unification package uses the strategy of examining the buffer prior to +export. If use of multiple Latin coded character sets is detected, +Unification attempts to unify them by finding a single coded character +set which contains all of the Latin characters in the buffer. + +The primary purpose of Unification is to fix the problem by giving the +user the choice to change the representation of all characters to one +character set and give sensible recommendations based on context. In +the 'ó' example, either ISO 8859/1 or ISO 8859/2 is satisfactory, and +both will be suggested. In the EURO SIGN example, only ISO 8859/15 +makes sense, and that is what will be recommended. In both cases, the +user will be reminded that there are universal encodings available. + +I call this @dfn{remapping} (from the universal character set to a +particular ISO 8859 coded character set). It is mere accident that this +letter has the same code point in both character sets. (Not entirely, +but there are many examples of Latin characters that have different code +points in different Latin-X sets.) + +Note that, in the 'ó' example, that treating the buffer in this way will +result in a representation such as [latin-iso8859-2 +#x73][latin-iso8859-2 #x73], and the file will be saved as [#xF3 #xF3]. +This is guaranteed to occasionally result in the second problem you +observed, to which we now turn. + +This problem is that, although the file is intended to be an +ISO-8859/2-encoded file, in an ISO 8859/1 locale Mule (and every POSIX +compliant program---this is required by the standard, obvious if you +think a bit, @pxref{What Unification Cannot Do for You}) will read that +file as [latin-iso8859-1 #x73] [latin-iso8859-1 #x73]. Of course this +is no problem if all of the characters in the file are contained in ISO +8859/1, but suppose there are some which are not, but are contained in +the (intended) ISO 8859/2. + +You now want to fix this, but not by finding the same character in +another set. Instead, you want to simply change the character set that +Mule associates with that buffer position without changing the code. +(This is conceptually somewhat distinct from the first problem, and +logically ought to be handled in the code that defines coding systems. +However, unification is not an unreasonable place for it.) Unification +provides two functions (one fast and dangerous, the other slow and +careful) to handle this. I call this @dfn{recoding}, because the +transformation actually involves @emph{encoding} the buffer to file +representation, then @emph{decoding} it to buffer representation (in a +different character set). This cannot be done automatically because +Mule can have no idea what the correct encoding is---after all, it +already gave you its best guess. @xref{What Unification Cannot Do for +You}. So these functions must be invoked by the user. @xref{Interactive +Usage}. + + +@node What Unification Cannot Do for You, Unification Internals, Theory of Operation, Charset Unification +@subsection What Unification Cannot Do for You + +Unification @strong{cannot} save you if you insist on exporting data in +8-bit encodings in a multilingual environment. @emph{You will +eventually corrupt data if you do this.} It is not Mule's, or any +application's, fault. You will have only yourself to blame; consider +yourself warned. (It is true that Mule has bugs, which make Mule +somewhat more dangerous and inconvenient than some naive applications. +We're working to address those, but no application can remedy the +inherent defect of 8-bit encodings.) + +Use standard universal encodings, preferably Unicode (UTF-8) unless +applicable standards indicate otherwise. The most important such case +is Internet messages, where MIME should be used, whether or not the +subordinate encoding is a universal encoding. (Note that since one of +the important provisions of MIME is the @samp{Content-Type} header, +which has the charset parameter, MIME is to be considered a universal +encoding for the purposes of this manual. Of course, technically +speaking it's neither a coded character set nor a coding extension +technique compliant with ISO 2022.) + +As mentioned earlier, the problem is that standard encodings suffer from +the design defect that they do not provide a reliable way to recognize +which coded character sets are in use. There are scores of character +sets which can be represented by a single octet (8-bit byte), whose +union contains many hundreds of characters. Thus any 8-bit coded +character set must contain characters that share code points used for +different characters in other coded character sets. + +This means that a given file's intended encoding cannot be identified +with 100% reliability unless it contains encoding markers such as those +provided by MIME or ISO 2022. + +Unification actually makes it more likely that you will have problems of +this kind. Traditionally Mule has been ``helpful'' by simply using an +ISO 2022 universal coding system when the current buffer coding system +cannot handle all the characters in the buffer. This has the effect +that, because the file contains control sequences, it is not recognized +as being in the locale's normal 8-bit encoding. It may be annoying if +you are not a Mule expert, but your data is automatically recoverable +with a tool you already have: Mule. + +However, with unification, Mule converts to a single 8-bit character set +when possible. But typically this will @emph{not} be in your usual +locale. Ie, the times that an ISO 8859/1 user will need Unification is +when there are ISO 8859/2 characters in the buffer. But then most +likely the file will be saved in a pure 8-bit encoding that is not ISO +8859/1, ie, ISO 8859/2. Mule's autorecognizer (which is probably the +most sophisticated yet available) cannot tell the difference between ISO +8859/1 and ISO 8859/2, and in a Western European locale will choose the +former even though the latter was intended. Even the extension +(``statistical recognition'') planned for XEmacs 22 is unlikely to be at +all accurate in the case of mixed codes. + +So now consider adding some additional ISO 8859/1 text to the buffer. +If it includes any ISO 8859/1 codes that are used by different +characters in ISO 8859/2, you now have a file that cannot be +mechanically disentangled. You need a human being who can recognize +that @emph{this is German and Swedish} and stays in Latin-1, while +@emph{that is Polish} and needs to be recoded to Latin-2. + +Moral: switch to a universal coded character set, preferably Unicode +using the UTF-8 transformation format. If you really need the space, +compress your files. + + +@node Unification Internals, , What Unification Cannot Do for You, Charset Unification +@subsection Internals + +No internals documentation yet. + +@file{unity-utils.el} provides one utility function. + +@defun unity-dump-tables + +Dump the temporary table created by loading @file{unity-utils.el} +to @file{unity-tables.el}. Loading the latter file initializes +@samp{unity-equivalences}. +@end defun + + +@node Charsets and Coding Systems, , Charset Unification, MULE +@subsection Charsets and Coding Systems + +This section provides reference lists of Mule charsets and coding +systems. Mule charsets are typically named by character set and +standard. + +@table @strong +@item ASCII variants + +Identification of equivalent characters in these sets is not properly +implemented. Unification does not distinguish the two charsets. + +@samp{ascii} @samp{latin-jisx0201} + +@item Extended Latin + +Characters from the following ISO 2022 conformant charsets are +identified with equivalents in other charsets in the group by +Unification. + +@samp{latin-iso8859-1} @samp{latin-iso8859-15} @samp{latin-iso8859-2} +@samp{latin-iso8859-3} @samp{latin-iso8859-4} @samp{latin-iso8859-9} +@samp{latin-iso8859-13} @samp{latin-iso8859-16} + +The follow charsets are Latin variants which are not understood by +Unification. In addition, many of the Asian language standards provide +ASCII, at least, and sometimes other Latin characters. None of these +are identified with their ISO 8859 equivalents. + +@samp{vietnamese-viscii-lower} +@samp{vietnamese-viscii-upper} + +@item Other character sets + +@samp{arabic-1-column} +@samp{arabic-2-column} +@samp{arabic-digit} +@samp{arabic-iso8859-6} +@samp{chinese-big5-1} +@samp{chinese-big5-2} +@samp{chinese-cns11643-1} +@samp{chinese-cns11643-2} +@samp{chinese-cns11643-3} +@samp{chinese-cns11643-4} +@samp{chinese-cns11643-5} +@samp{chinese-cns11643-6} +@samp{chinese-cns11643-7} +@samp{chinese-gb2312} +@samp{chinese-isoir165} +@samp{cyrillic-iso8859-5} +@samp{ethiopic} +@samp{greek-iso8859-7} +@samp{hebrew-iso8859-8} +@samp{ipa} +@samp{japanese-jisx0208} +@samp{japanese-jisx0208-1978} +@samp{japanese-jisx0212} +@samp{katakana-jisx0201} +@samp{korean-ksc5601} +@samp{sisheng} +@samp{thai-tis620} +@samp{thai-xtis} + +@item Non-graphic charsets + +@samp{control-1} +@end table + +@table @strong +@item No conversion + +Some of these coding systems may specify EOL conventions. Note that +@samp{iso-8859-1} is a no-conversion coding system, not an ISO 2022 +coding system. Although unification attempts to compensate for this, it +is possible that the @samp{iso-8859-1} coding system will behave +differently from other ISO 8859 coding systems. + +@samp{binary} @samp{no-conversion} @samp{raw-text} @samp{iso-8859-1} + +@item Latin coding systems + +These coding systems are all single-byte, 8-bit ISO 2022 coding systems, +combining ASCII in the GL register (bytes with high-bit clear) and an +extended Latin character set in the GR register (bytes with high-bit set). + +@samp{iso-8859-15} @samp{iso-8859-2} @samp{iso-8859-3} @samp{iso-8859-4} +@samp{iso-8859-9} @samp{iso-8859-13} @samp{iso-8859-14} @samp{iso-8859-16} + +These coding systems are single-byte, 8-bit coding systems that do not +conform to international standards. They should be avoided in all +potentially multilingual contexts, including any text distributed over +the Internet and World Wide Web. + +@samp{windows-1251} + +@item Multilingual coding systems + +The following ISO-2022-based coding systems are useful for multilingual +text. + +@samp{ctext} @samp{iso-2022-lock} @samp{iso-2022-7} @samp{iso-2022-7bit} +@samp{iso-2022-7bit-ss2} @samp{iso-2022-8} @samp{iso-2022-8bit-ss2} + +XEmacs also supports Unicode with the Mule-UCS package. These are the +preferred coding systems for multilingual use. (There is a possible +exception for texts that mix several Asian ideographic character sets.) + +@samp{utf-16-be} @samp{utf-16-be-no-signature} @samp{utf-16-le} +@samp{utf-16-le-no-signature} @samp{utf-7} @samp{utf-7-safe} +@samp{utf-8} @samp{utf-8-ws} + +Development versions of XEmacs (the 21.5 series) support Unicode +internally, with (at least) the following coding systems implemented: + +@samp{utf-16-be} @samp{utf-16-be-bom} @samp{utf-16-le} +@samp{utf-16-le-bom} @samp{utf-8} @samp{utf-8-bom} + +@item Asian ideographic languages + +The following coding systems are based on ISO 2022, and are more or less +suitable for encoding multilingual texts. They all can represent ASCII +at least, and sometimes several other foreign character sets, without +resort to arbitrary ISO 2022 designations. However, these subsets are +not identified with the corresponding national standards in XEmacs Mule. + +@samp{chinese-euc} @samp{cn-big5} @samp{cn-gb-2312} @samp{gb2312} +@samp{hz} @samp{hz-gb-2312} @samp{old-jis} @samp{japanese-euc} +@samp{junet} @samp{euc-japan} @samp{euc-jp} @samp{iso-2022-jp} +@samp{iso-2022-jp-1978-irv} @samp{iso-2022-jp-2} @samp{euc-kr} +@samp{korean-euc} @samp{iso-2022-kr} @samp{iso-2022-int-1} + +The following coding systems cannot be used for general multilingual +text and do not cooperate well with other coding systems. + +@samp{big5} @samp{shift_jis} + +@item Other languages + +The following coding systems are based on ISO 2022. Though none of them +provides any Latin characters beyond ASCII, XEmacs Mule allows (and up +to 21.4 defaults to) use of ISO 2022 control sequences to designate +other character sets for inclusion the text. + +@samp{iso-8859-5} @samp{iso-8859-7} @samp{iso-8859-8} +@samp{ctext-hebrew} + +The following are character sets that do not conform to ISO 2022 and +thus cannot be safely used in a multilingual context. + +@samp{alternativnyj} @samp{koi8-r} @samp{tis-620} @samp{viqr} +@samp{viscii} @samp{vscii} + +@item Special coding systems + +Mule uses the following coding systems for special purposes. + +@samp{automatic-conversion} @samp{undecided} @samp{escape-quoted} + +@samp{escape-quoted} is especially important, as it is used internally +as the coding system for autosaved data. + +The following coding systems are aliases for others, and are used for +communication with the host operating system. + +@samp{file-name} @samp{keyboard} @samp{terminal} + +@end table + +Mule detection of coding systems is actually limited to detection of +classes of coding systems called @dfn{coding categories}. These coding +categories are identified by the ISO 2022 control sequences they use, if +any, by their conformance to ISO 2022 restrictions on code points that +may be used, and by characteristic patterns of use of 8-bit code points. + +@samp{no-conversion} +@samp{utf-8} +@samp{ucs-4} +@samp{iso-7} +@samp{iso-lock-shift} +@samp{iso-8-1} +@samp{iso-8-2} +@samp{iso-8-designate} +@samp{shift-jis} +@samp{big5} + + +@c end of mule.texi + diff --text -u 'xemacs-21.5.9/man/lispref/specifiers.texi' 'xemacs-21.5.10/man/lispref/specifiers.texi' Index: ./man/lispref/specifiers.texi --- ./man/lispref/specifiers.texi Fri Apr 13 03:22:20 2001 +++ ./man/lispref/specifiers.texi Tue Dec 3 20:01:44 2002 @@ -1,6 +1,7 @@ @c -*-texinfo-*- @c This is part of the XEmacs Lisp Reference Manual. @c Copyright (C) 1995, 1996 Ben Wing. +@c Copyright (C) 2002 Free Software Foundation, Inc. @c See the file lispref.texi for copying conditions. @setfilename ../../info/specifiers.info @node Specifiers, Faces and Window-System Objects, Extents, top @@ -8,14 +9,13 @@ @cindex specifier A specifier is an object used to keep track of a property whose value -may vary depending on the particular situation (e.g. particular buffer -displayed in a particular window) that it is used in. The value of many -built-in properties, such as the font, foreground, background, and such -properties of a face and variables such as -@code{modeline-shadow-thickness} and @code{top-toolbar-height}, is -actually a specifier object. The specifier object, in turn, is -``instanced'' in a particular situation to yield the real value -of the property in that situation. +should vary according to @emph{display context}, a window, a frame, or +device. The value of many built-in properties, such as the font, +foreground, background, and such properties of a face and variables +such as @code{modeline-shadow-thickness} and +@code{top-toolbar-height}, is actually a specifier object. The +specifier object, in turn, is ``instanced'' in a particular situation +to yield the real value of the property in the current context. @defun specifierp object This function returns non-@code{nil} if @var{object} is a specifier. @@ -26,6 +26,7 @@ display and other properties to vary (under user control) in a wide variety of contexts. +* Simple Specifier Usage:: Getting started with specifiers. * Specifiers In-Depth:: Gory details about specifier innards. * Specifier Instancing:: Instancing means obtaining the ``value'' of a specifier in a particular context. @@ -48,14 +49,16 @@ @node Introduction to Specifiers @section Introduction to Specifiers -Sometimes you may want the value of a property to vary depending on -the context the property is used in. A simple example of this in XEmacs -is buffer-local variables. For example, the variable +Perhaps the most useful way to explain specifiers is via an analogy. +Emacs Lisp programmers are used to @emph{buffer-local variables} +@ref{Buffer-Local Variables}. For example, the variable @code{modeline-format}, which controls the format of the modeline, can have different values depending on the particular buffer being edited. The variable has a default value which most modes will use, but a -specialized package such as Calendar might change the variable so -as to tailor the modeline to its own purposes. +specialized package such as Calendar might change the variable so as to +tailor the modeline to its own purposes. Other variables are perhaps +best thought of as ``mode local,'' such as font-lock keywords, but they +are implemented as buffer locals. Other properties (such as those that can be changed by the @code{modify-frame-parameters} function, for example the color of the @@ -70,11 +73,41 @@ displayed in all other frames on any mono (two-color, e.g. black and white only) displays, and a default value in all other circumstances. -A @dfn{specifier} is a generalization of this, allowing a great deal -of flexibility in controlling exactly what value a property has in which -circumstances. It is most commonly used for display properties, such as -an image or the foreground color of a face. As a simple example, you can -specify that the foreground of the default face be +Specifiers generalize both buffer- and frame-local properties. +Specifiers vary according to the @emph{display} context. Font-lock +keywords in a buffer will be the same no matter which window the +buffer is displayed in, but windows on TTY devices will simply not be +capable of the flexibility that windows on modern GUI devices are. +Specifiers provide a way for the programmer to @emph{declare} that a +emphasized text should be italic on GUI devices and inverse video on +TTYs. They also provide a way for the programmer to declare +fallbacks, so that a color specified as ``chartreuse'' where possible +can fall back to ``yellow'' on devices where only ANSI (4-bit) color +is available. The complex calculations and device querying are +transparent to both user and programmer. You ask for what you want; +it's up to XEmacs to provide it, or a reasonable approximation. + +We call such a declaration a @dfn{specification}. A @dfn{specification} +applies in a particular @dfn{locale}, which is a window, buffer, frame, +device, or the global locale. The value part of the specification is +called an @dfn{instantiator}. The process of determining the value in a +particular context, or @dfn{domain}, is called @dfn{instantiation} or +@dfn{instancing}. A domain is a window, frame, or device. + +The difference between @dfn{locale} and @dfn{domain} is somewhat subtle. +You may think of a locale as a class of domains, which may span +different devices. Since the specification is abstract (a Lisp form), +you can state it without reference to a device. On the other hand, when +you instantiate a specification, you must know the type of the device. +It is useless to specify that ``blue mean italic'' on a monochrome +device. Thus instantiation requires specification of the device on +which it will be rendered. + +Thus a @dfn{specifier} allows a great deal of flexibility in +controlling exactly what value a property has in which circumstances. +It is most commonly used for display properties, such as an image or +the foreground color of a face. As a simple example, you can specify +that the foreground of the default face be @itemize @bullet @item @@ -98,6 +131,149 @@ white for all other buffers @end itemize +@node Simple Specifier Usage +@section Simple Specifier Usage +@cindex specifier examples +@cindex examples, specifier +@cindex adding a button to a toolbar +@cindex toolbar button, adding + +A useful specifier application is adding a button to a toolbar. XEmacs +provides several toolbars, one along each edge of the frame. Normally +only one is used at a time, the default. The default toolbar is +actually a specifier object which is the value of @code{default-toolbar}. + +The specification of a toolbar is simple: it is a list of buttons. +Each button is a vector with four elements: an icon, a command, the +enabled flag, and a help string. Let's retrieve the instance of the +toolbar you see in the selected frame. + +@example +(specifier-instance default-toolbar) +@end example + +The value returned is, as promised, a list of vectors. Now let's build +up a button, and add it to the toolbar. Our button will invoke the last +defined keyboard macro. This is an alternative to +@code{name-last-kbd-macro} for creating a persistent macro, rather than +an alias for @kbd{C-x e}. + +A toolbar button icon can be quite sophisticated, with different images +for button up, button down, and disabled states, and a similar set with +captions. We'll use a very simple icon, but we have to jump through a +few non-obvious hoops designed to support the sophisticated applications. +The rest of the button descriptor is straightforward. + +@example +(setq toolbar-my-kbd-macro-button + `[ (list (make-glyph "MyKbdMac")) + (lambda () (interactive) (execute-kbd-macro ,last-kbd-macro)) + t + "Execute a previously defined keyboard macro." ]) + +(set-specifier default-toolbar + (cons toolbar-my-kbd-macro-button + (specifier-specs default-toolbar 'global)) + 'global) +@end example + +To remove the button, just substitute the function @code{delete} for the +@code{cons} above. + +What is the difference between @code{specifier-instance}, which we used +in the example of retrieving the toolbar descriptor, and +@code{specifier-specs}, which was used in the toolbar manipulating code? +@code{specifier-specs} retrieves a copy of the instantiator, which is +abstract and does not depend on context. @code{specifier-instance}, on +the other hand, actually instantiates the specification, and returns the +result for the given context. Another way to express this is: +@code{specifier-specs} takes a @emph{locale} as an argument, while +@code{specifier-instance} takes a @emph{domain}. The reason for +providing @code{specifier-instance} is that sometimes you wish to see +the object that XEmacs will actually use. @code{specifier-specs}, on +the other hand, shows you what the programmer (or user) requested. When +a program manipulates specifications, clearly it's the latter that is +desirable. + +In the case of the toolbar descriptor, it turns out that these are the +same: the instancing process is trivial. However, many specifications +have non-trivial instancing. Compare the results of the following forms +on my system. (The @samp{(cdr (first ...))} form is due to my use of +Mule. On non-Mule XEmacsen, just use @code{specifier-specs}.) + +@example +(cdr (first (specifier-specs (face-font 'default) 'global))) +=> "-*--14-*jisx0208*-0" + +(specifier-instance (face-font 'default)) +# 0xe0028b 0x176b> +@end example + +In this case, @code{specifier-instance} returns an opaque object; +programs can't work on it, they can only pass it around. Worse, in some +environments the instantiation will fail, resulting in a different value +(when another instantiation succeeds), or worse yet, an error, if all +attempts to instance the specifier fail. @code{specifier-instance} is +context-dependent, even for the exact same specification. +@code{specifier-specs} is deterministic, and only depends on the +specifications. + +Note that in the toolbar-changing code we operate in the global locale. +This means that narrower locales, if they have specifications, will +shadow our changes. (Specifier instancing does not merge +specifications. It selects the "highest-priority successful +specification" and instances that.) + +In fact, in our example, it seems pretty likely that different buffers +@emph{should} have different buttons. (The icon can be the same, but +the keyboard macro you create in a Dired buffer is highly unlikely to be +useful in a LaTeX buffer!) Here's one way to implement this: + +@example +(setq toolbar-my-kbd-macro-button + `[ (list (make-glyph "MyKbdMac")) + (lambda () (interactive) (execute-kbd-macro ,last-kbd-macro)) + t + "Execute a previously defined keyboard macro." ]) + +(set-specifier default-toolbar + (cons toolbar-my-kbd-macro-button + (cond ((specifier-specs default-toolbar + (current-buffer))) + ((specifier-specs default-toolbar + 'global))) + (current-buffer)) +@end example + +Finally, a cautionary note: the use of @code{specifier-specs} in the +code above is for expository purposes. Don't use it in production code. +In fact, the @code{set-specifier} form above is likely to fail +occasionally, because you can add many specifications for the same +locale. + +In these cases, @code{specifier-specs} will return a list. A further +refinement is that a specification may be associated with a set of +@dfn{specifier tags}. If the list of specifier tags is non-nil, then +@code{specifier-specs} will return a cons of the tag set and the +instantiator. Evidently @code{specifier-specs} is a bit unreliable. +(For toolbars, the code above should work 99% of the time, because +toolbars are rarely changed. Since instantiation is trivial, multiple +specs are not useful---the first one always succeeds.) + +In fact, @code{specifier-specs} is intended to be used to display specs +to humans with a minimum of clutter. The robust way to access +specifications is via @code{specifier-spec-list}. @xref{Adding +Specifications}, for the definition of @dfn{spec-list}. @xref{Retrieving +Specifications}, for documentation of @code{specifier-specs} and +@code{specifier-spec-list}. To get the desired effect, replace the form +@code{(specifier-spec default-toolbar 'global)} with + +@example +(cdr (second (first (specifier-spec-list default-toolbar 'global)))) +@end example + +(It should be obvious why the example uses the lazy unreliable method!) + @node Specifiers In-Depth @section In-Depth Overview of a Specifier @cindex specification (in a specifier) @@ -121,12 +297,36 @@ @cindex specifier, tag @cindex specifier, tag set -A specifier object encapsulates a set of @dfn{specifications}, each of -which says what its value should be if a particular condition applies. +Having variables vary according the editing context is very useful, and +the buffer is the natural ``atomic'' unit of editing context. In a GUI +environment, it can be similarly useful to have variables whose values +vary according to display context. The atomic unit of display context +is the Emacs window. Buffers are cleanly grouped by modes, but windows +are not so easily pigeonholed. On the one hand, a window displays a +buffer, and thus one possible hierarchy is window, buffer, mode. On the +other, a window is a component of a frame. This generates the window, +frame, device hierarchy. Finally, there are objects such as toolbars +whose properties are described by specifiers. These do not fit +naturally into either hierarchy. This problem is as yet not cleanly +solved. + +Another potential source of conceptual confusion is the instantiation +process. Instantiating a buffer-local variable is simple: at any given +point in time there is a current buffer, and its local values are used +and set whenever the variable is accessed, unless the programmer goes to +some special effort (uses @code{default-value} and @code{set-default}. +However, a specifier object encapsulates a set of @dfn{specifications}, +each of which says what its value should be if a particular condition +applies. Several such conditions might apply simultaneously in a given +window. + For example, one specification might be ``The value should be darkseagreen2 on X devices'' another might be ``The value should be blue -in the *Help* buffer''. In specifier terminology, these conditions are -called @dfn{locales} and the values are called @dfn{instantiators}. +in the *Help* buffer''. So what do we do for "the *Help* buffer on an X +device"? The answer is simple: give each type of locale a priority and +check them in priority order, returning the first instantiator that +successfully instantiates a value. + Given a specifier, a logical question is ``What is its value in a particular situation?'' This involves looking through the specifications to see which ones apply to this particular situation, and perhaps @@ -140,6 +340,13 @@ window; in other words, it asks the specifier, ``What is your value in this window?''. +Note that the redisplay example is in a sense canonical. That is, +specifiers are designed to present a uniform and @emph{efficient} API +to redisplay. It is the efficiency constraint that motivates the +introduction of specifier tags, and many restrictions on access (for +example, a buffer is not a domain, and you cannot instantiate a +specifier over a buffer). + More specifically, a specifier contains a set of @dfn{specifications}, each of which associates a @dfn{locale} (a window object, a buffer object, a frame object, a device object, or the symbol @code{global}) @@ -160,8 +367,9 @@ device. (If a tag does not have a predicate, it matches all devices.) All tags in a tag set must match a device for the associated inst-pair to be instantiable over that device. (A null tag set is perfectly -valid.) +valid, and trivially matches all devices.) +@c #### don't we have more device types now, gtk, ms-windows, mac-carbon? The valid device types (normally @code{x}, @code{tty}, and @code{stream}) and device classes (normally @code{color}, @code{grayscale}, and @code{mono}) can always be used as tags, and match @@ -1154,4 +1362,3 @@ @defun specifier-locale-type-from-locale locale Given a specifier @var{locale}, this function returns its type. @end defun - diff --text -u 'xemacs-21.5.9/man/lispref/syntax.texi' 'xemacs-21.5.10/man/lispref/syntax.texi' Index: ./man/lispref/syntax.texi --- ./man/lispref/syntax.texi Fri Apr 13 03:22:21 2001 +++ ./man/lispref/syntax.texi Wed Oct 2 18:30:52 2002 @@ -42,7 +42,7 @@ this chapter. @end ifinfo - Under XEmacs 20, a syntax table is a particular subtype of the + Under XEmacs 20 and later, a syntax table is a particular subtype of the primitive char table type (@pxref{Char Tables}), and each element of the char table is an integer that encodes the syntax of the character in question, or a cons of such an integer and a matching character (for @@ -133,11 +133,13 @@ their meanings, and examples of their use. @deffn {Syntax class} @w{whitespace character} -@dfn{Whitespace characters} (designated with @w{@samp{@ }} or @samp{-}) +@dfn{Whitespace characters} (designated with @samp{-}) separate symbols and words from each other. Typically, whitespace characters have no other syntactic significance, and multiple whitespace characters are syntactically equivalent to a single one. Space, tab, -newline and formfeed are almost always classified as whitespace. +newline and formfeed are almost always classified as whitespace. (The +designator @w{@samp{@ }} is accepted for backwards compatibility with +older versions of XEmacs, but is deprecated. It is invalid in GNU Emacs.) @end deffn @deffn {Syntax class} @w{word constituent} @@ -268,99 +270,151 @@ @subsection Syntax Flags @cindex syntax flags +@c This is a bit inaccurate, the ``a'' and ``b'' flags actually don't +@c exist in the internal implementation. AFAICT it doesn't affect the +@c semantics as perceived by the LISP programmer. In addition to the classes, entries for characters in a syntax table -can include flags. There are six possible flags, represented by the -characters @samp{1}, @samp{2}, @samp{3}, @samp{4}, @samp{b} and -@samp{p}. - - All the flags except @samp{p} are used to describe multi-character -comment delimiters. The digit flags indicate that a character can -@emph{also} be part of a comment sequence, in addition to the syntactic -properties associated with its character class. The flags are +can include flags. There are eleven possible flags, represented by the +digits @samp{1}--@samp{8}, and the lowercase letters @samp{a}, @samp{b}, +and @samp{p}. + + All the flags except @samp{p} are used to describe comment delimiters. +The digit flags indicate that a character can @emph{also} be part of a +multi-character comment sequence, in addition to the syntactic +properties associated with its character class. The flags must be independent of the class and each other for the sake of characters such as @samp{*} in C mode, which is a punctuation character, @emph{and} the second character of a start-of-comment sequence (@samp{/*}), @emph{and} the first character of an end-of-comment sequence (@samp{*/}). +Emacs supports two comment styles simultaneously in any one syntax +table. This is for the sake of C++. Each style of comment syntax has +its own comment-start sequence and its own comment-end sequence. Each +comment must stick to one style or the other; thus, if it starts with +the comment-start sequence of style ``b'', it must also end with the +comment-end sequence of style ``b''. + +@c #### Compatibility note; index here. +As an extension to GNU Emacs 19 and 20, XEmacs supports two arbitrary +comment-start sequences and two arbitrary comment-end sequences. (Thus +the need for 8 flags.) GNU Emacs restricts the comment-start sequences +to start with the same character, XEmacs does not. This means that for +two-character sequences, where GNU Emacs uses the @samp{b} flag, XEmacs +uses the digit flags @samp{5}--@samp{8}. + +A one character comment-end sequence applies to the ``b'' style if its +first character has the @samp{b} flag set; otherwise, it applies to the +``a'' style. The @samp{a} flag is optional. These flags have no effect +on non-comment characters; two-character styles are determined by the +digit flags. + The flags for a character @var{c} are: @itemize @bullet @item @samp{1} means @var{c} is the start of a two-character comment-start -sequence. +sequence of style ``a''. @item @samp{2} means @var{c} is the second character of such a sequence. @item @samp{3} means @var{c} is the start of a two-character comment-end -sequence. +sequence of style ``a''. @item @samp{4} means @var{c} is the second character of such a sequence. @item +@samp{5} means @var{c} is the start of a two-character comment-start +sequence of style ``b''. + +@item +@samp{6} means @var{c} is the second character of such a sequence. + +@item +@samp{7} means @var{c} is the start of a two-character comment-end +sequence of style ``b''. + +@item +@samp{8} means @var{c} is the second character of such a sequence. + +@item +@samp{a} means that @var{c} as a comment delimiter belongs to the +default ``a'' comment style. (This flag is optional.) + +@item @c Emacs 19 feature @samp{b} means that @var{c} as a comment delimiter belongs to the -alternative ``b'' comment style. +alternate ``b'' comment style. -Emacs supports two comment styles simultaneously in any one syntax -table. This is for the sake of C++. Each style of comment syntax has -its own comment-start sequence and its own comment-end sequence. Each -comment must stick to one style or the other; thus, if it starts with -the comment-start sequence of style ``b'', it must also end with the -comment-end sequence of style ``b''. +@item +@c Emacs 19 feature +@samp{p} identifies an additional ``prefix character'' for Lisp syntax. +These characters are treated as whitespace when they appear between +expressions. When they appear within an expression, they are handled +according to their usual syntax codes. + +The function @code{backward-prefix-chars} moves back over these +characters, as well as over characters whose primary syntax class is +prefix (@samp{'}). @xref{Motion and Syntax}. +@end itemize + +Lisp (as you would expect) has a simple comment syntax. + +@table @asis +@item @samp{;} +@samp{<} +@item newline +@samp{>} +@end table + +Note that no flags are used. +This defines two comment-delimiting sequences: + +@table @asis +@item @samp{;} +This is a single-character comment-start sequence because the syntax +class is @samp{<}. -The two comment-start sequences must begin with the same character; only -the second character may differ. Mark the second character of the -``b''-style comment-start sequence with the @samp{b} flag. - -A comment-end sequence (one or two characters) applies to the ``b'' -style if its first character has the @samp{b} flag set; otherwise, it -applies to the ``a'' style. +@item newline +This is a single character comment-end sequence because the syntax class +is @samp{>} and the @samp{b} flag is not set. +@end table -The appropriate comment syntax settings for C++ are as follows: +C++ (again, as you would expect) has a baroque, overrich, and +excessively complex comment syntax. @table @asis @item @samp{/} -@samp{124b} +@samp{1456} @item @samp{*} @samp{23} @item newline @samp{>b} @end table -This defines four comment-delimiting sequences: +Note that the ``b'' style mixes one-character and two-character +sequences. The table above defines four comment-delimiting sequences: @table @asis @item @samp{/*} -This is a comment-start sequence for ``a'' style because the -second character, @samp{*}, does not have the @samp{b} flag. +This is a comment-start sequence for ``a'' style because the @samp{1} +flag is set on @samp{/} and the @samp{2} flag is set on @samp{*}. @item @samp{//} -This is a comment-start sequence for ``b'' style because the second -character, @samp{/}, does have the @samp{b} flag. +This is a comment-start sequence for ``b'' style because both the @samp{5} +and the @samp{6} flags are set on @samp{/}. @item @samp{*/} -This is a comment-end sequence for ``a'' style because the first -character, @samp{*}, does not have the @samp{b} flag +This is a comment-end sequence for ``a'' style because the @samp{3} +flag is set on @samp{*} and the @samp{4} flag is set on @samp{/}. @item newline This is a comment-end sequence for ``b'' style, because the newline character has the @samp{b} flag. @end table -@item -@c Emacs 19 feature -@samp{p} identifies an additional ``prefix character'' for Lisp syntax. -These characters are treated as whitespace when they appear between -expressions. When they appear within an expression, they are handled -according to their usual syntax codes. - -The function @code{backward-prefix-chars} moves back over these -characters, as well as over characters whose primary syntax class is -prefix (@samp{'}). @xref{Motion and Syntax}. -@end itemize @node Syntax Table Functions @section Syntax Table Functions diff --text -u 'xemacs-21.5.9/man/lispref/toolbar.texi' 'xemacs-21.5.10/man/lispref/toolbar.texi' Index: ./man/lispref/toolbar.texi --- ./man/lispref/toolbar.texi Fri Apr 13 03:22:21 2001 +++ ./man/lispref/toolbar.texi Tue Dec 3 02:57:09 2002 @@ -80,6 +80,10 @@ of the exact format. @end defun +The default toolbar is created in @file{toolbar-items.el}. An example +which modifies an existing toolbar (by adding a button) is presented in +the specifier section @xref{Simple Specifier Usage}. + @node Toolbar Descriptor Format @section Toolbar Descriptor Format diff --text -u 'xemacs-21.5.9/man/lispref/variables.texi' 'xemacs-21.5.10/man/lispref/variables.texi' Index: ./man/lispref/variables.texi --- ./man/lispref/variables.texi Fri Apr 13 03:22:22 2001 +++ ./man/lispref/variables.texi Wed Oct 2 18:30:52 2002 @@ -725,12 +725,15 @@ One other function for setting a variable is designed to add an element to a list if it is not already present in the list. -@defun add-to-list symbol element +@defun add-to-list symbol element &optional append This function sets the variable @var{symbol} by consing @var{element} onto the old value, if @var{element} is not already a member of that value. It returns the resulting list, whether updated or not. The value of @var{symbol} had better be a list already before the call. +If the optional argument @var{append} is non-@code{nil}, @var{element} +is added at the end of the list. + The argument @var{symbol} is not implicitly quoted; @code{add-to-list} is an ordinary function, like @code{set} and unlike @code{setq}. Quote the argument yourself if that is what you want. diff --text -u 'xemacs-21.5.9/man/widget.texi' 'xemacs-21.5.10/man/widget.texi' Index: ./man/widget.texi --- ./man/widget.texi Sun Jul 7 03:56:24 2002 +++ ./man/widget.texi Fri Jan 3 21:12:30 2003 @@ -33,6 +33,7 @@ * Widget Minor Mode:: * Utilities:: * Widget Wishlist:: +* Widget Internals:: @end menu @node Introduction, User Interface, Top, Top @@ -120,7 +121,7 @@ @table @file @item widget.el This will declare the user variables, define the function -@code{widget-define}, and autoload the function @code{widget-create}. +@code{define-widget}, and autoload the function @code{widget-create}. @item wid-edit.el Everything else is here, there is no reason to load it explicitly, as it will be autoloaded when needed. @@ -1359,7 +1360,7 @@ specifying component widgets and new default values for the keyword arguments. -@defun widget-define name class doc &rest args +@defun define-widget name class doc &rest args Define a new widget type named @var{name} from @code{class}. @var{name} and class should both be symbols, @code{class} should be one @@ -1384,7 +1385,7 @@ @end defun -Using @code{widget-define} just stores the definition of the widget type +Using @code{define-widget} just stores the definition of the widget type in the @code{widget-type} property of @var{name}, which is what @code{widget-create} uses. @@ -1558,7 +1559,7 @@ This is only meaningful for radio buttons or checkboxes in a list. @end defun -@node Widget Wishlist, , Utilities, Top +@node Widget Wishlist, Widget Internals, Utilities, Top @comment node-name, next, previous, up @section Wishlist @@ -1620,7 +1621,7 @@ the field, not the end of the field itself. @item -Use and overlay instead of markers to delimit the widget. Create +Use an overlay instead of markers to delimit the widget. Create accessors for the end points. @item @@ -1631,5 +1632,35 @@ @end itemize +@node Widget Internals, , Widget Wishlist, Top +@section Internals + +This (very brief!) section provides a few notes on the internal +structure and implementation of Emacs widgets. Avoid relying on this +information. (We intend to improve it, but this will take some time.) +To the extent that it actually describes APIs, the information will be +moved to appropriate sections of the manual in due course. + +@subsection The @dfn{Widget} and @dfn{Type} Structures + +Widgets and types are currently both implemented as lists. + +A symbol may be defined as a @dfn{type name} using @code{define-widget}. +@xref{Defining New Widgets}. A @dfn{type} is a list whose car is a +previously defined type name, nil, or (recursively) a type. The car is +the @dfn{class} or parent type of the type, and properties which are not +specified in the new type will be inherited from ancestors. Probably +the only type without a class should be the @code{default} type. The +cdr of a type is a plist whose keys are widget property keywords. + +A type or type name may also be referred to as an @dfn{unconverted +widget}. + +A @dfn{converted widget} or @dfn{widget instance} is a list whose car is +a type name or a type, and whose cdr is a property list. Furthermore, +all children of the converted widget must be converted. Finally, in the +process of appropriate parts of the list structure are copied to ensure +that changes in values of one instance do not affect another's. + @contents @bye diff --text -u 'xemacs-21.5.9/man/xemacs-faq.texi' 'xemacs-21.5.10/man/xemacs-faq.texi' Index: ./man/xemacs-faq.texi --- ./man/xemacs-faq.texi Tue Jul 2 21:27:58 2002 +++ ./man/xemacs-faq.texi Fri Jan 3 21:12:30 2003 @@ -7,7 +7,7 @@ @finalout @titlepage @title XEmacs FAQ -@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2002/07/02 12:27:58 $ +@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2003/01/03 12:12:30 $ @sp 1 @author Tony Rossini @author Ben Wing @@ -41,7 +41,7 @@ @iftex @* @end iftex -@uref{http://www.xemacs.org/faq/xemacs-faq.html} +@uref{http://www.xemacs.org/FAQ/xemacs-faq.html} @ifset CANONICAL @html @@ -152,6 +152,7 @@ * Q2.0.13:: I don't need no steenkin' packages. Do I? (NEW) * Q2.0.14:: How do I figure out which packages to install? (NEW) * Q2.0.15:: EFS fails with "500 AUTH not understood" (NEW) +* Q2.0.16:: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW) Trouble Shooting: * Q2.1.1:: XEmacs just crashed on me! @@ -793,7 +794,7 @@ @end html -@item @email{turnbull@@sk.tsukuba.ac.jp, Steven Turnbull} +@item @email{stephen@@xemacs.org, Stephen Turnbull} @item @email{ben@@xemacs.org, Ben Wing} @@ -911,10 +912,12 @@ @unnumberedsubsec Q1.3.1: What is the status of internationalization support aka MULE (including Asian language support? Both the stable and development versions of XEmacs include -internationalization support (aka MULE). MULE currently works on UNIX -and Linux systems; work for supporting MULE on Windows operating systems -is in progress. Binaries compiled without MULE support run faster than -MULE capable XEmacsen. +internationalization support (aka MULE). MULE currently (21.4) works on +UNIX and Linux systems. It is possible to build with MULE on Windows +systems, but if you really need MULE on Windows, it is recommended that +you build and use the development (21.5) version, and deal with the +instability of the development tree. Binaries compiled without MULE +support run faster than MULE capable XEmacsen. @node Q1.3.2, Q1.3.3, Q1.3.1, Introduction @unnumberedsubsec Q1.3.2: How can I help with internationalization? @@ -924,20 +927,31 @@ people who speak/write languages other than English, who are willing to use XEmacs/MULE regularly, and have some experience with Elisp. +Translations of the TUTORIAL and man page are welcome, and XEmacs does +support multilingual menus, but we have few current translations. + @xref{Q1.1.2}. @node Q1.3.3, Q1.3.4, Q1.3.2, Introduction @unnumberedsubsec Q1.3.3: How do I type non-ASCII characters? -See question 3.5.7 (@pxref{Q3.5.7}) in part 3 of this FAQ. +See question 3.5.7 (@pxref{Q3.5.7}) in part 3 of this FAQ for some +simple methods that also work in non-MULE builds of XEmacs (but only for +one-octet coded character sets, and mostly for ISO 8859/1). Many of the +methods available for Cyrillic (@pxref{Q1.3.7}) work without MULE. +MULE has more general capabilities. @xref{Q1.3.5}. + +@xref{Q3.2.7}, which covers display of non-ASCII characters. @node Q1.3.4, Q1.3.5, Q1.3.3, Introduction @unnumberedsubsec Q1.3.4: Can XEmacs messages come out in a different language? -The message-catalog support has mostly been written but doesn't -currently work. The first release of XEmacs 20 will @emph{not} support -it. However, menubar localization @emph{does} work. To -enable it, add to your @file{Emacs} file entries like this: +The message-catalog support was written but is badly bit-rotted. XEmacs +20 and 21 did @emph{not} support it, and early releases of XEmacs 22 +will not either. + +However, menubar localization @emph{does} work. To enable it, add to +your @file{Emacs} file entries like this: @example Emacs*XlwMenu.resourceLabels: True @@ -951,30 +965,73 @@ @node Q1.3.5, Q1.3.6, Q1.3.4, Introduction @unnumberedsubsec Q1.3.5: Please explain the various input methods in MULE/XEmacs -@email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes: +Mule supports a wide variety of input methods. There are three basic +classes: Lisp implementations, generic platform support, and library +interfaces. + +@emph{Lisp implementations} include Quail, which provides table-driven input +methods for almost all the character sets that Mule supports (including +all of the ISO 8859 family, the Indic languages, Thai, and so on), and +SKK, for Japanese. (SKK also supports an interface to an external +"dictionary server" process.) Quail supports both typical "dead-key" +methods (eg, in the "latin-1-prefix" method, @kbd{" a} produces ä, LATIN +SMALL LETTER A WITH DIAERESIS), and the complex dictionary-based phonetic +methods used for Asian ideographic languages like Chinese. + +Lisp implementations can be less powerful (but they are not perceptibly +inefficient), and of course are not portable to non-Emacs applications. +The incompatibility can be very annoying. On the other hand, they +require no special platform support or external libraries, so if you can +display the characters, Mule can input them for you and you can edit, +anywhere. + +@emph{Generic platform support} is currently limited to the X Input +Method (XIM) framework, although support for MSIME (for MS Windows) is +planned, and IIIMF (Sun's Internet-Intranet Input Method Framework) +support is extremely desirable. XIM is enabled at build time by use of +the @samp{--with-xim} flag to @code{configure}. For use of XIM, see +your platform documentation. However, normally the input method you use +is specified via the @samp{LANG} and @samp{XMODIFIERS} environment +variables. -@quotation -Original Mule supports the following input methods: Wnn4, Wnn6, Canna, SJ3 -and XIM. Interfaces for Wnn and SJ3 uses the @code{egg} user -interface. Interface for Canna does not use @samp{egg}. I don't know -about XIM. It is to support ATOK, of course, it may work for another -servers. +Of course, input skills are portable across most applications. However, +especially in modern GUI systems the habit of using bucky bits has +fallen into sad disuse, and many XIM systems are poorly configured for +use with Emacs. For example, the kinput2 input manager (a separate +process providing an interface between Japanese dictionary servers such +as Canna and Wnn, and the application) tends to gobble up keystrokes +generating Meta characters. This means that to edit while using an XIM +input method, you must toggle the input method off every time you want +to use @kbd{M-f}. Your mileage may vary. + +@emph{Library interfaces} are most common for Japanese, although Wnn +supports Chinese (traditional and simplified) and Korean. There are +Chinese and Korean input servers available, but we do not know of any +patches for XEmacs to use them directly. You can use them via +IM-enabled terminals, by manipulating the terminal coding systems. We +describe only the Japanese-oriented systems here. The advantage of +these systems is that they are very powerful, and on platforms where +they are available there is typically a wide range of applications that +support them. Thus your input skills are portable across applications. + +Mule provides built-in interfaces to the following input methods: Wnn4, +Wnn6, Canna, and SJ3. These can be configured at build time. There are +patches available (no URL, sorry) to support the SKK server, as well. +Wnn and SJ3 use the @code{egg} user interface. The interface for Canna +is specialized to Canna. Wnn supports Japanese, Chinese and Korean. It is made by OMRON and Kyôto -university. It is a powerful and complex system. Wnn4 is free and Wnn6 -is not free. +University. It is a powerful and complex system. Wnn4 is free and Wnn6 +is not. Wnn uses grammatical hints and probability of word association, +so in principle Wnn can be cleverer than other methods. + +Canna, made by NEC, supports only Japanese. It is a simple and powerful +system. Canna uses only grammar, but its grammar and dictionary are +quite sophisticated. So for standard modern Japanese, Canna seems +cleverer than Wnn4. In addition, the UNIX version of Canna is free (now +there is a Microsoft Windows version). -Canna supports only Japanese. It is made by NEC. It is a simple and -powerful system. Canna uses only grammar (Wnn uses grammar and -probability between words), so I think Wnn is cleverer than Canna, -however Canna users made a good grammar and dictionary. So for standard -modern Japanese, Canna seems cleverer than Wnn4. In addition, the UNIX -version of Canna is free (now there is a Microsoft Windows version). - -SJ3 supports only Japanese. It is made by Sony. XIM supports was made -to use ATOK (a major input method in personal computer world). XIM is -the standard for accessing input methods bundled in Japanese versions of -Solaris. (XEmacs 20 will support XIM input). +SJ3, by Sony, supports only Japanese. Egg consists of following parts: @@ -985,35 +1042,50 @@ @item Kana/PinYin/Hangul to Kanji transfer layer. -It is interface layer for network Kana-Kanji server (Wnn and Sj3). +The interface layer to network Kana-Kanji server (Wnn and Sj3). @end enumerate -These input methods are modal, namely there are mode, alphabet mode and -Kana-Kanji transfer mode. However there are mode-less input methods for -Egg and Canna. @samp{Boiled-egg} is a mode-less input method running on -Egg. For Canna, @samp{canna.el} has a tiny boiled-egg like command, -@code{(canna-boil)}, and there are some boiled-egg like utilities. In -addition, it was planned to make an abstraction for all transfer type -input methods. However authors of input methods are busy, so maybe this -plan is stopped. Perhaps after Mule merged GNU Emacs will be released, -it will be continued. -@end quotation +These input methods are modal. They have a raw (alphabet) mode, a +phonetic input mode, and Kana-Kanji transfer mode. However there are +mode-less input methods for Egg and Canna. @samp{boiled-egg} is a +mode-less input method running on Egg. For Canna, @samp{canna.el} has a +tiny boiled-egg-like command, @code{(canna-boil)}, and there are some +boiled-egg-like utilities. + +Much of this information was provided by @email{morioka@@jaist.ac.jp, +MORIOKA Tomohiko}. @node Q1.3.6, Q1.3.7, Q1.3.5, Introduction @unnumberedsubsec Q1.3.6: How do I portably code for MULE/XEmacs? +MULE has evolved rapidly over the last few years, and the original third +party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite +different implementations. The APIs also vary although recent versions +of XEmacs have tended to converge to the GNU Emacs standard. + +MULE implementations are going to continue to evolve. Both GNU Emacs +and XEmacs are working hard on Unicode support, which will involve new +APIs and probably variations on old ones. For XEmacs 22, the old ISO +2022-based system for recognizing encodings will be replaced by a much +more flexible system, which should improve accuracy of automatic coding +detections, but will also involve new APIs. + @email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes: @quotation -MULE and XEmacs are quite different. So the application -implementor must write separate code for these mule variants. +The application implementor must write separate code for these mule +variants. [Please don't hesitate to report these variants to us; they +are not, strictly speaking, bugs, but they give third-party developers +the same kind of creepy-crawly feeling. We'll do what we can. -- Ed.] MULE and the next version of Emacs are similar but the symbols are very different---requiring separate code as well. Namely we must support 3 kinds of mule variants and 4 or 5 or 6 kinds of emacs variants... (;_;) I'm shocked, so I wrote a wrapper package called -@code{emu} to provide a common interface. +@code{emu} to provide a common interface. [There is an XEmacs package +of APEL which provides much more comprehensive coverage. Be careful, +however; APEL has problems of its own. -- Ed.] I have the following suggestions about dealing with mule variants: @@ -1275,6 +1347,7 @@ * Q2.0.13:: I don't need no steenkin' packages. Do I? (NEW) * Q2.0.14:: I don't want to install a million .els one at a time! (NEW) * Q2.0.15:: EFS fails with "500 AUTH not understood" (NEW) +* Q2.0.16:: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW) Trouble Shooting: * Q2.1.1:: XEmacs just crashed on me! @@ -1335,7 +1408,7 @@ Remove the Info (and use just hardcopy versions of the manual). Remove most of the stuff in etc. Remove or gzip all the source code. Gzip or remove the C source code. Configure it so that copies are not made of -the support lisp. +the support lisp. These are all Emacs Lisp source code and bytecompiled object code. You may safely gzip everything named *.el here. You may remove any package @@ -1427,6 +1500,11 @@ buggy optimizers. Please see the @file{PROBLEMS} file that comes with XEmacs to read what it says about your platform. +If you compiled XEmacs using @samp{--use-union-type} (or the option +@samp{USE_UNION_TYPE} in @file{config.inc} under Windows), recompile +again without this. This has been known to trigger compiler errors in a +number of cases. + @node Q2.0.7, Q2.0.8, Q2.0.6, Installation @unnumberedsubsec Q2.0.7: Libraries in non-standard locations @@ -1506,6 +1584,9 @@ @* @end iftex @uref{ftp://ftp.xemacs.org/pub/xemacs/aux/}. +[These tarballs and this FAQ are wa-a-ay out of date. Sorry, I'm not +currently network-capable, and I will probably forgot to update this +before submitting the patch. -- Ed.] @c Changed June Link above, was dead. @c This list is a pain in the you-know-what to keep in synch with the @@ -1674,7 +1755,7 @@ packages, it is recommended that you use the automatic package tools afterwards to pick up any recent updates. -@node Q2.0.15, Q2.1.1, Q2.0.14, Installation +@node Q2.0.15, Q2.0.16, Q2.0.14, Installation @unnumberedsubsec Q2.0.15: EFS fails with "500 AUTH not understood" (NEW) A typical error: FTP Error: USER request failed; 500 AUTH not understood. @@ -1689,7 +1770,25 @@ `efs-ftp-program-args'. Use M-x customize-variable, and verify the needed flag with `man ftp' or other local documentation. -@node Q2.1.1, Q2.1.2, Q2.0.15, Installation +@node Q2.0.16, Q2.1.1, Q2.0.15, Installation +@unnumberedsubsec Q2.0.16: Cygwin XEmacs won't start: cygXpm-noX4.dll was not found (NEW) + +The Cygwin binary distributed with the netinstaller uses an external DLL +to handle XPM images (such as toolbar buttons). You may get an error like + + This application has failed to start because cygXpm-noX4.dll was not found. + Re-installing the application may fix this problem. + +Andy Piper sez: + + cygXpm-noX4 is part of the cygwin distribution under libraries or + graphics, but is not installed by default. You need to run the + cygwin setup again and select this package. + +Ie, reinstalling XEmacs won't help because it is not part of the XEmacs +distribution. + +@node Q2.1.1, Q2.1.2, Q2.0.16, Installation @unnumberedsec 2.1: Trouble Shooting @unnumberedsubsec Q2.1.1: Help! XEmacs just crashed on me! @@ -1708,18 +1807,29 @@ particular sequences of actions, that cause it to crash. If you can come up with a reproducible way of doing this (or even if you have a pretty good memory of exactly what you were doing at the time), the -maintainers would be very interested in knowing about it. Post a -message to comp.emacs.xemacs or send mail to @email{crashes@@xemacs.org}. -Please note that the @samp{crashes} address is exclusively for crash +maintainers would be very interested in knowing about it. The best way +to report a bug is using @kbd{M-x report-emacs-bug} (or by selecting +@samp{Send Bug Report...} from the Help menu). If that won't work +(e.g. you can't get XEmacs working at all), send ordinary mail to +@email{crashes@@xemacs.org}. @emph{MAKE SURE} to include the output from +the crash, especially including the Lisp backtrace, as well as the +XEmacs configuration from @kbd{M-x describe-installation} (or +equivalently, the file @file{Installation} in the top of the build +tree). Please note that the @samp{crashes} address is exclusively for +crash reports. The best way to report bugs in general is through the +@kbd{M-x report-emacs-bug} interface just mentioned, or if necessary by +emailing @email{xemacs-beta@@xemacs.org}. Note that the developers do +@emph{not} usually follow @samp{comp.emacs.xemacs} on a regular basis; +thus, this is better for general questions about XEmacs than bug reports. -If at all possible, include a stack backtrace of the core dump that was -produced. This shows where exactly things went wrong, and makes it much -easier to diagnose problems. To do this, you need to locate the core -file (it's called @file{core}, and is usually sitting in the directory -that you started XEmacs from, or your home directory if that other -directory was not writable). Then, go to that directory and execute a -command like: +If at all possible, include a C stack backtrace of the core dump that +was produced. This shows where exactly things went wrong, and makes it +much easier to diagnose problems. To do this under Unix, you need to +locate the core file (it's called @file{core}, and is usually sitting in +the directory that you started XEmacs from, or your home directory if +that other directory was not writable). Then, go to that directory and +execute a command like: @example gdb `which xemacs` core @@ -1735,6 +1845,13 @@ to disable core files by default. Also see @ref{Q2.1.15}, for tips and techniques for dealing with a debugger. +If you're under Microsoft Windows, you're out of luck unless you happen +to have a debugging aid installed on your system, for example Visual +C++. In this case, the crash will result in a message giving you the +option to enter a debugger (for example, by pressing @samp{Cancel}). Do +this and locate the stack-trace window. (If your XEmacs was built +without debugging information, the stack trace may not be very useful.) + When making a problem report make sure that: @enumerate @@ -1752,14 +1869,20 @@ What build options you are using. @item -If the problem is related to graphics, we will also need to know what -version of the X Window System you are running, and what window manager -you are using. +If the problem is related to graphics and you are running Unix, we will +also need to know what version of the X Window System you are running, +and what window manager you are using. @item -If the problem happened on a tty, please include the terminal type. +If the problem happened on a TTY, please include the terminal type. @end enumerate +Much of the information above is automatically generated by @kbd{M-x +report-emacs-bug}. Even more, and often useful, information can be +generated by redirecting the output of @code{make} and @code{make check} +to a file (@file{beta.err} is the default used by @code{build-report}), +and executing @kbd{M-x build-report}. + @node Q2.1.2, Q2.1.3, Q2.1.1, Installation @unnumberedsubsec Q2.1.2: Cryptic Minibuffer messages. @@ -2137,7 +2260,7 @@ decode them, do this: @example -call debug_print (OBJECT) +call dp (OBJECT) @end example where @var{OBJECT} is whatever you want to decode (it can be a variable, @@ -2149,14 +2272,14 @@ stack, do this: @example -call debug_backtrace () +call db () @end example @item -Using @code{debug_print} and @code{debug_backtrace} has two -disadvantages - it can only be used with a running xemacs process, and -it cannot display the internal C structure of a Lisp Object. Even if -all you've got is a core dump, all is not lost. +Using @code{dp} and @code{db} has two disadvantages - it can only be +used with a running xemacs process, and it cannot display the internal C +structure of a Lisp Object. Even if all you've got is a core dump, all +is not lost. If you're using GDB, there are some macros in the file @file{src/.gdbinit} in the XEmacs source distribution that should make @@ -2219,8 +2342,8 @@ running the XEmacs process under a debugger, the stack trace should be clean. -@email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so version 1.8 -if dynamic linking and debugging is a problem on Linux. +@email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so +version 1.8 if dynamic linking and debugging is a problem on Linux. @item If you're using a debugger to get a C stack backtrace and you're @@ -2244,9 +2367,9 @@ could simply mean that XEmacs attempted to execute code at that address, e.g. through jumping to a null function pointer. Unfortunately, under those circumstances, GDB under Linux doesn't know how to get a stack -trace. (Yes, this is the third Linux-related problem I've mentioned. I +trace. (Yes, this is the fourth Linux-related problem I've mentioned. I have no idea why GDB under Linux is so bogus. Complain to the GDB -authors, or to comp.os.linux.development.system). Again, you'll have to +authors, or to comp.os.linux.development.system.) Again, you'll have to use the narrowing-down process described above. @item @@ -2265,6 +2388,10 @@ @file{src/gdbinit}. This had the disadvantage of not being sourced automatically by gdb, so you had to set that up yourself. +@item +If you are running Microsoft Windows, the the file @file{nt/README} for +further information about debugging XEmacs. + @end itemize @node Q2.1.16, Q2.1.17, Q2.1.15, Installation @@ -2457,6 +2584,7 @@ * Q3.2.4:: How can I limit color map usage? * Q3.2.5:: My tty supports color, but XEmacs doesn't use them. * Q3.2.6:: Can I have pixmap backgrounds in XEmacs? +* Q3.2.7:: How do I display non-ASCII characters? The Modeline: * Q3.3.1:: How can I make the modeline go away? @@ -2919,7 +3047,7 @@ (set-device-class nil 'color)) @end lisp -@node Q3.2.6, Q3.3.1, Q3.2.5, Customization +@node Q3.2.6, Q3.2.7, Q3.2.5, Customization @unnumberedsubsec Q3.2.6: Can I have pixmap backgrounds in XEmacs? @c New @email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes: @@ -2947,7 +3075,34 @@ @end quotation -@node Q3.3.1, Q3.3.2, Q3.2.6, Customization +@node Q3.2.7, Q3.3.1, Q3.2.6, Customization +@unnumberedsubsec Q3.2.7: How do I display non-ASCII characters? +@c New + +If you're using a Mule-enabled XEmacs, then display is automatic. If +you're not seeing the characters you expect, either (1) you don't have +appropriate fonts available or (2) XEmacs did not correctly detect the +coding system (@pxref{Recognize Coding, , , xemacs}). In case (1), +install fonts as is customary for your platform. In case (2), you +need to tell XEmacs explicitly what coding systems you're using. +@ref{Specify Coding, , , xemacs}. + +If your XEmacs is not Mule-enabled, and for some reason getting a +Mule-enabled XEmacs seems like the wrong thing to do, all is not lost. +You can arrange it by brute force. In @file{event-Xt.c} (suppress the +urge to look in this file---play Doom instead, because you'll survive +longer), it is written: + +@quotation +In a non-Mule world, a user can still have a multi-lingual editor, by +doing @code{(set-face-font "-*-iso8859-2" (current-buffer))} for all +their Latin-2 buffers, etc. +@end quotation + +For the related problem of @emph{inputting} non-ASCII characters in a +non-Mule XEmacs, @xref{Q3.5.7}. + +@node Q3.3.1, Q3.3.2, Q3.2.7, Customization @unnumberedsec 3.3: The Modeline @unnumberedsubsec Q3.3.1: How can I make the modeline go away? @@ -2958,7 +3113,7 @@ @c Starting with XEmacs 19.14 the modeline responds to mouse clicks, so if @c you haven't liked or used the modeline in the past, you might want to @c try the new version out. -@c +@c @node Q3.3.2, Q3.3.3, Q3.3.1, Customization @unnumberedsubsec Q3.3.2: How do you have XEmacs display the line number in the modeline? @@ -3009,19 +3164,19 @@ It's not AUC TeX, it comes from @code{func-menu} in @file{func-menu.el}. @c Add this code to your @file{init.el}/@file{.emacs} to turn it off: -@c +@c @c @lisp @c (setq fume-display-in-modeline-p nil) @c @end lisp -@c +@c @c Or just add a hook to @code{TeX-mode-hook} to turn it off only for TeX @c mode: -@c +@c @c @lisp @c (add-hook 'TeX-mode-hook @c '(lambda () (setq fume-display-in-modeline-p nil))) @c @end lisp -@c +@c @email{dhughes@@origin-at.co.uk, David Hughes} writes: @quotation @@ -3306,6 +3461,9 @@ Running @samp{xmodmap -pk} will list all of the defined keysyms. @end quotation +For the related problem of @emph{displaying} non-ASCII characters in a +non-Mule XEmacs, @xref{Q3.2.7}. + @node Q3.5.8, Q3.5.9, Q3.5.7, Customization @unnumberedsubsec Q3.5.8: [This question intentionally left blank] @@ -3555,13 +3713,13 @@ @c If you are running XEmacs 19.13 or earlier, add this command to your @c @file{init.el}/@file{.emacs}. -@c +@c @c @lisp @c (set-menubar nil) @c @end lisp -@c +@c @c Starting with XEmacs 19.14 the preferred method is: -@c +@c @lisp (set-specifier menubar-visible-p nil) @end lisp @@ -3674,9 +3832,9 @@ @lisp (set-specifier scrollbar-width 0 (current-buffer)) @end lisp -@c +@c @c In XEmacs versions prior to 19.14, you had to use the hairier construct: -@c +@c @c @lisp @c (set-specifier scrollbar-width (cons (selected-frame) 0)) @c @end lisp @@ -3773,7 +3931,7 @@ (pending-delete-on t))) @end lisp -Note that this will work with both Backspace and Delete. This code is a +Note that this will work with both Backspace and Delete. This code is a tad more complicated than it has to be for XEmacs in order to make it more portable. @@ -4909,15 +5067,15 @@ @c In versions of XEmacs prior to 19.14, you had to use a kludgy solution @c like this: -@c +@c @c @lisp @c (setq c-font-lock-keywords c-font-lock-keywords-2 @c c++-font-lock-keywords c++-font-lock-keywords-2 @c lisp-font-lock-keywords lisp-font-lock-keywords-2) @c @end lisp -@c +@c @c It will work for C, C++ and Lisp. -@c +@c See also @code{Syntax Highlighting} from the @code{Options} menu. Remember to save options. @@ -5629,7 +5787,7 @@ @c The sound support in XEmacs 19.14 was greatly improved over previous @c versions. -@c +@c @node Q5.2.3, Q5.2.4, Q5.2.2, Miscellaneous @unnumberedsubsec Q5.2.3: What's NAS, how do I get it? @@ -6245,6 +6403,11 @@ If you want to compile under X, you will also need the X libraries; see @ref{Q6.1.6}. +If you want to compile without X, you will need the @file{xpm-nox} +library, which must be specifically selected in the Cygwin netinstaller; +it is not selected by default. The package has had various names. +Currently it is called @file{cygXpm-noX4.dll}. + @node Q6.1.4, Q6.1.5, Q6.1.3, MS Windows @unnumberedsubsec Q6.1.4: How do I compile under Cygwin? @@ -6284,6 +6447,9 @@ /usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a @end example +(This advice may now be obsolete because of the availability of the +cygXpm-noX4.dll package from Cygwin. Send confirmation to +@email{faq@@xemacs.org}.) @item Other problems are listed in the @file{PROBLEMS} file, in the top-level @@ -6908,7 +7074,7 @@ @code{user-full-name} with no arguments returns the var @code{user-full-name}; a prefix arg to @kbd{M-:} and @kbd{C-h c} inserts the result in the current buffer. - + @item @strong{Other changes}: Under X, new application class @samp{XEmacs}; byte-compilation of user-specs now works. diff --text -u 'xemacs-21.5.9/man/xemacs/custom.texi' 'xemacs-21.5.10/man/xemacs/custom.texi' Index: ./man/xemacs/custom.texi --- ./man/xemacs/custom.texi Wed Jun 12 04:28:22 2002 +++ ./man/xemacs/custom.texi Wed Dec 4 23:00:46 2002 @@ -492,9 +492,9 @@ [ ] Foreground: white (sample) [ ] Background: blue (sample) [ ] Inverse: [Toggle] off (nil) - [ ] Stipple: - [ ] Font Family: - [ ] Size: + [ ] Stipple: + [ ] Font Family: + [ ] Size: [ ] Strikethru: off @end smallexample @@ -504,12 +504,15 @@ attribute by invoking that field. When the attribute is enabled, you can change the attribute value in the usual ways. +@xref{Faces}, for description of how @code{face-frob-from-locale-first} +variable affects changing @samp{Bold} and @samp{Italic} attributes. + @c Is this true for XEmacs? @c On a black-and-white display, the colors you can use for the @c background are @samp{black}, @samp{white}, @samp{gray}, @samp{gray1}, @c and @samp{gray3}. Emacs supports these shades of gray by using @c background stipple patterns instead of a color. -@c +@c Setting, saving and resetting a face work like the same operations for options (@pxref{Changing an Option}). @@ -545,7 +548,7 @@ @item M-x customize-apropos @key{RET} @var{regexp} @key{RET} Set up a customization buffer with all the options, faces and groups that match @var{regexp}. -@item M-x customize-saved +@item M-x customize-saved Set up a customization buffer containing all options and faces that you have saved with customization buffers. @item M-x customize-customized @@ -776,7 +779,7 @@ enough like Lisp for Lisp mode to be useful but in which comments start and end differently. The prefix and suffix are used in the local variables list to make the list look like several lines of comments when -the compiler or interpreter for that language reads the file. +the compiler or interpreter for that language reads the file. The start of the local variables list must be no more than 3000 characters from the end of the file, and must be in the last page if the @@ -888,7 +891,7 @@ executed, but also becomes part of the definition of the macro. @samp{Def} appears in the mode line to remind you of what is going on. When you are finished, the @kbd{C-x )} command (@code{end-kbd-macro}) terminates the -definition, without becoming part of it. +definition, without becoming part of it. For example, @@ -1134,9 +1137,9 @@ local map, which affects all buffers using the same major mode. @menu -* Interactive Rebinding:: Changing Key Bindings Interactively +* Interactive Rebinding:: Changing Key Bindings Interactively * Programmatic Rebinding:: Changing Key Bindings Programmatically -* Key Bindings Using Strings:: Using Strings for Changing Key Bindings +* Key Bindings Using Strings:: Using Strings for Changing Key Bindings @end menu @node Interactive Rebinding @@ -1148,7 +1151,7 @@ @table @kbd @item M-x global-set-key @key{RET} @var{key} @var{cmd} @key{RET} Defines @var{key} globally to run @var{cmd}. -@item M-x local-set-key @key{RET} @var{keys} @var{cmd} @key{RET} +@item M-x local-set-key @key{RET} @var{keys} @var{cmd} @key{RET} Defines @var{key} locally (in the major mode now in effect) to run @var{cmd}. @item M-x local-unset-key @key{RET} @var{keys} @key{RET} @@ -1217,7 +1220,7 @@ @item @code{(define-key @var{keymap} @var{keys} @var{def})} Defines @var{keys} to run @var{def} in the keymap @var{keymap}. @end table - + @var{keymap} is a keymap object. @var{keys} is the sequence of keystrokes to bind. @@ -1251,7 +1254,7 @@ @xref{Keystrokes}, for more information about the rules for constructing key sequences. -Emacs allows you to abbreviate representations for key sequences in +Emacs allows you to abbreviate representations for key sequences in most places where there is no ambiguity. Here are some rules for abbreviation: @@ -1273,13 +1276,13 @@ @example ;;; Bind @code{my-command} to @key{f1} -(global-set-key 'f1 'my-command) +(global-set-key 'f1 'my-command) ;;; Bind @code{my-command} to @kbd{Shift-f1} (global-set-key '(shift f1) 'my-command) ;;; Bind @code{my-command} to @kbd{C-c Shift-f1} -(global-set-key '[(control c) (shift f1)] 'my-command) +(global-set-key '[(control c) (shift f1)] 'my-command) ;;; Bind @code{my-command} to the middle mouse button. (global-set-key 'button2 'my-command) @@ -1296,13 +1299,13 @@ @comment (global-set-key '(meta control backspace) 'my-command) @comment (global-set-key '(meta control h) 'my-command) @comment (global-set-key '(meta control H) 'my-command) -@comment +@comment @comment ;; note that this binds two key sequences: ``control-j'' and ``linefeed''. @comment ;; @comment (global-set-key "\^J" 'my-command) @node Key Bindings Using Strings -@subsubsection Using Strings for Changing Key Bindings +@subsubsection Using Strings for Changing Key Bindings For backward compatibility, you can still use strings to represent key sequences. Thus you can use commands like the following: @@ -1313,7 +1316,7 @@ @end example Note, however, that in some cases you may be binding more than one -key sequence by using a single command. This situation can +key sequence by using a single command. This situation can arise because in ASCII, @kbd{C-i} and @key{TAB} have the same representation. Therefore, when Emacs sees: @@ -1347,11 +1350,11 @@ similar fashion: @example - control h backspace + control h backspace control l clear - control i tab - control m return - control j linefeed + control i tab + control m return + control j linefeed control [ escape control @@ control space @end example @@ -1883,7 +1886,7 @@ standard beep. This only works if you are logged in on the console of a machine with audio hardware. To listen to a sound of the provided type, call the function @code{play-sound} with the argument @var{sound}. You -can also set the volume of the sound with the optional argument +can also set the volume of the sound with the optional argument @var{volume}.@refill @cindex ding @@ -1893,7 +1896,7 @@ @table @code @item sound -A string of raw sound data, or the name of another sound to play. +A string of raw sound data, or the name of another sound to play. The symbol @code{t} here means use the default X beep. @item volume @@ -1930,7 +1933,7 @@ This variable applies to the standard X bell sound as well as sound files. If the symbol @code{t} is in place of a sound-string, Emacs uses the -default X beep. This allows you to define beep-types of +default X beep. This allows you to define beep-types of different volumes even when not running on the console. @findex load-sound-file @@ -1970,7 +1973,7 @@ @item y-or-n-p You type something other than the required @code{y} or @code{n} -@item yes-or-no-p +@item yes-or-no-p You type something other than @code{yes} or @code{no} @end table @@ -2002,13 +2005,13 @@ Make the font of the given @var{face} bold. When called from a program, returns @code{nil} if this is not possible. @item M-x make-face-bold-italic -Make the font of the given @var{face} bold italic. +Make the font of the given @var{face} bold italic. When called from a program, returns @code{nil} if not possible. @item M-x make-face-italic -Make the font of the given @var{face} italic. +Make the font of the given @var{face} italic. When called from a program, returns @code{nil} if not possible. @item M-x make-face-unbold -Make the font of the given @var{face} non-bold. +Make the font of the given @var{face} non-bold. When called from a program, returns @code{nil} if not possible. @item M-x make-face-unitalic Make the font of the given @var{face} non-italic. @@ -2019,11 +2022,13 @@ @item M-x make-face-smaller Make the font of the given @var{face} a little smaller. When called from a program, returns @code{nil} if not possible. -@item M-x set-face-background +@item M-x set-face-background Change the background color of the given @var{face}. @item M-x set-face-background-pixmap Change the background pixmap of the given @var{face}. -@item M-x set-face-font +@item M-x set-face-background-pixmap-file +A simpler version but with filename completion. +@item M-x set-face-font Change the font of the given @var{face}. @item M-x set-face-foreground Change the foreground color of the given @var{face}. @@ -2031,11 +2036,6 @@ Change whether the given @var{face} is underlined. @end table -@findex make-face-bold -@findex make-face-bold-italic -@findex make-face-italic -@findex make-face-unbold -@findex make-face-unitalic @findex make-face-larger @findex make-face-smaller @@ -2044,15 +2044,43 @@ @var{face} with the function @code{invert-face}. If the face does not specify both foreground and background, then its foreground and background are set to the background and foreground of the default face. -When calling this from a program, you can supply the optional argument +When calling this from a program, you can supply the optional argument @var{frame} to specify which frame is affected; otherwise, all frames are affected. +@findex make-face-bold +@findex make-face-bold-italic +@findex make-face-italic +@findex make-face-unbold +@findex make-face-unitalic +@vindex face-frob-from-locale-first +The work of @code{make-face-bold}, @code{make-face-bold-italic}, +@code{make-face-italic}, @code{make-face-unbold}, +@code{make-face-unitalic} functions is affected by +@code{face-frob-from-locale-first} variable. If it is @code{nil}, those +functions first try to manipulate device specific data like X font names +to obtain the desired font face specification. This may be unsuitable +in environments using different font face specifications for different +frames, non-Mule environments in particular. + +If the variable is non-@code{nil}, those functions first try to figure +out whether the face font is the same as one of predefined faces: +@code{default}, @code{bold}, @code{italic}, @code{bold-italic}. If it +is the same, then the new face font specification is set to be the same +as that of a corresponding predefined face. Thus if the predefined face +is set up properly for different frames, the same will hold for the face +being changed by the functions. This is the behavior one might desire +in non-Mule environments mentioned above: face being changed still looks +right in all frames. + +How predefined faces might be set up for different frames in such an +environments is described in @ref{Face Resources}. + @findex set-face-background You can set the background color of the specified @var{face} with the function @code{set-face-background}. The argument @code{color} should be a string, the name of a color. When called from a program, if the -optional @var{frame} argument is provided, the face is changed only +optional @var{frame} argument is provided, the face is changed only in that frame; otherwise, it is changed in all frames. @findex set-face-background-pixmap @@ -2074,14 +2102,21 @@ If the environment variable @b{XBMLANGPATH} is set, then it is consulted before the @code{x-bitmap-file-path} variable. +@findex set-face-background-pixmap +Alternately, you can use a simpler version of +@code{set-face-background-pixmap} called +@code{set-face-background-pixmap-file}. This function does not give you +as much control on the pixmap instanciator, but provides filename +completion. + @findex set-face-font You can set the font of the specified @var{face} with the function @code{set-face-font}. The @var{font} argument should be a string, the name of a font. When called from a program, if the -optional @var{frame} argument is provided, the face is changed only +optional @var{frame} argument is provided, the face is changed only in that frame; otherwise, it is changed in all frames. -@findex set-face-foreground +@findex set-face-foreground You can set the foreground color of the specified @var{face} with the function @code{set-face-foreground}. The argument @var{color} should be a string, the name of a color. If the optional @var{frame} argument is @@ -2124,8 +2159,8 @@ The examples in this section assume the application class is @samp{Emacs}. -The Emacs resources are generally set per-frame. Each Emacs frame can have -its own name or the same name as another, depending on the name passed to the +The Emacs resources are generally set per-frame. Each Emacs frame can have +its own name or the same name as another, depending on the name passed to the @code{make-frame} function. You can specify resources for all frames with the syntax: @@ -2230,7 +2265,7 @@ from the geometry of the frame. @item -For subsequent frames, the position is taken only from the frame, and +For subsequent frames, the position is taken only from the frame, and never from the ApplicationShell. @end itemize @@ -2261,7 +2296,7 @@ Whether this frame should appear in the iconified state. @item @code{internalBorderWidth} (class @code{InternalBorderWidth}): int -How many blank pixels to leave between the text and the edge of the +How many blank pixels to leave between the text and the edge of the window. @item @code{interline} (class @code{Interline}): int @@ -2459,7 +2494,7 @@ @item zmacs-region This is the face that mouse selections are displayed in. - + @item isearch This is the face that the matched text being searched for is displayed in. @@ -2541,7 +2576,7 @@ Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-* @end example -If both the Lucid Motif-lookalike menu widgets and X Font Sets are +If both the Lucid Motif-lookalike menu widgets and X Font Sets are configured to allow multilingual menubars, then one uses @example @@ -2555,7 +2590,7 @@ resources (eg, menubars) are ignored in favor of the corresponding .fontSet resources. -If the Motif library is being used, then one would have to use +If the Motif library is being used, then one would have to use @example Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-* @@ -2564,5 +2599,5 @@ because the Motif library uses the @code{fontList} resource name instead of @code{font}, which has subtly different semantics. -The same is true of the scrollbars: They accept whichever resources are +The same is true of the scrollbars: They accept whichever resources are appropriate for the toolkit in use. diff --text -u 'xemacs-21.5.9/man/xemacs/mule.texi' 'xemacs-21.5.10/man/xemacs/mule.texi' Index: ./man/xemacs/mule.texi --- ./man/xemacs/mule.texi Fri Jun 21 06:39:21 2002 +++ ./man/xemacs/mule.texi Fri Jan 3 21:12:40 2003 @@ -15,6 +15,8 @@ @cindex Korean @cindex Cyrillic @cindex Russian +@c #### It's a lie that this file tells you about Unicode.... +@cindex Unicode If you build XEmacs using the @code{--with-mule} option, it supports a wide variety of world scripts, including the Latin script, the Arabic script, Simplified Chinese (for mainland of China), Traditional Chinese @@ -33,22 +35,25 @@ * Coding Systems:: Character set conversion when you read and write files, and so on. * Recognize Coding:: How XEmacs figures out which conversion to use. +* Unification:: Integrating overlapping character sets. * Specify Coding:: Various ways to choose which conversion to use. +* Charsets and Coding Systems:: Tables and other reference material. @end menu @node Mule Intro, Language Environments, Mule, Mule -@section Introduction to world scripts +@section Introduction: The Wide Variety of Scripts and Codings in Use - The users of these scripts have established many more-or-less standard -coding systems for storing files. -@c XEmacs internally uses a single multibyte character encoding, so that it -@c can intermix characters from all these scripts in a single buffer or -@c string. This encoding represents each non-ASCII character as a sequence -@c of bytes in the range 0200 through 0377. -XEmacs translates between the internal character encoding and various -other coding systems when reading and writing files, when exchanging -data with subprocesses, and (in some cases) in the @kbd{C-q} command -(see below). + There are hundreds of scripts in use world-wide. The users of these +scripts have established many more-or-less standard coding systems for +storing text written in them in files. XEmacs translates between its +internal character encoding and various other coding systems when +reading and writing files, when exchanging data with subprocesses, and +(in some cases) in the @kbd{C-q} command (see below). +@footnote{Historically the internal encoding was a specially designed +encoding, called @dfn{Mule encoding}, intended for easy conversion to +and from versions of ISO 2022. However, this encoding shares many +properties with UTF-8, and conversion to UTF-8 as the internal code is +proposed.} @kindex C-h h @findex view-hello-file @@ -356,7 +361,7 @@ the usual three variants to specify the kind of end-of-line conversion. -@node Recognize Coding, Specify Coding, Coding Systems, Mule +@node Recognize Coding, Unification, Coding Systems, Mule @section Recognizing Coding Systems Most of the time, XEmacs can recognize which coding system to use for @@ -427,7 +432,739 @@ Coding}). -@node Specify Coding, , Recognize Coding, Mule +@node Unification, Specify Coding, Recognize Coding, Mule +@section Character Set Unification + +Mule suffers from a design defect that causes it to consider the ISO +Latin character sets to be disjoint. This results in oddities such as +files containing both ISO 8859/1 and ISO 8859/15 codes, and using ISO +2022 control sequences to switch between them, as well as more +plausible but often unnecessary combinations like ISO 8859/1 with ISO +8859/2. This can be very annoying when sending messages or even in +simple editing on a single host. XEmacs works around the problem by +converting as many characters as possible to use a single Latin coded +character set before saving the buffer. + +Unification is planned for extension to other character set families, +in particular the Han family of character sets based on the Chinese +ideographic characters. At least for the Han sets, however, the +unification feature will be disabled by default. + +This functionality is based on the @file{latin-unity} package by +Stephen Turnbull @email{stephen@@xemacs.org}, but is somewhat +divergent. This documentation is also based on the package +documentation, and is likely to be inaccurate because of the different +constraints we place on ``core'' and packaged functionality. + +@menu +* Unification Overview:: History and general information. +* Unification Usage:: An overview of operation. +* Unification Configuration:: Configuring unification. +* Unification FAQs:: Questions and answers from the mailing list. +* Unification Theory:: How unification works. +* What Unification Cannot Do for You:: Inherent problems of 8-bit charsets. +@end menu + +@node Unification Overview, Unification Usage, Unification, Unification +@subsection An Overview of Character Set Unification + +Mule suffers from a design defect that causes it to consider the ISO +Latin character sets to be disjoint. This manifests itself when a user +enters characters using input methods associated with different coded +character sets into a single buffer. + +A very important example involves email. Many sites, especially in the +U.S., default to use of the ISO 8859/1 coded character set (also called +``Latin 1,'' though these are somewhat different concepts). However, +ISO 8859/1 provides a generic CURRENCY SIGN character. Now that the +Euro has become the official currency of most countries in Europe, this +is unsatisfactory (and in practice, useless). So Europeans generally +use ISO 8859/15, which is nearly identical to ISO 8859/1 for most +languages, except that it substitutes EURO SIGN for CURRENCY SIGN. + +Suppose a European user yanks text from a post encoded in ISO 8859/1 +into a message composition buffer, and enters some text including the +Euro sign. Then Mule will consider the buffer to contain both ISO +8859/1 and ISO 8859/15 text, and MUAs such as Gnus will (if naively +programmed) send the message as a multipart mixed MIME body! + +This is clearly stupid. What is not as obvious is that, just as any +European can include American English in their text because ASCII is a +subset of ISO 8859/15, most European languages which use Latin +characters (eg, German and Polish) can typically be mixed while using +only one Latin coded character set (in this case, ISO 8859/2). However, +this often depends on exactly what text is to be encoded. + +Unification works around the problem by converting as many characters as +possible to use a single Latin coded character set before saving the +buffer. + + +@node Unification Usage, Unification Configuration, Unification Overview, Unification +@subsection Operation of Unification + +This is a description of the early hack to include unification in +XEmacs 21.5. This will almost surely change. + +Normally, unification works in the background by installing +@code{unity-sanity-check} on @code{write-region-pre-hook}. +Unification is on by default for the ISO-8859 Latin sets. The user +activates this functionality for other chacter set families by +invoking @code{enable-unification}, either interactively or in her +init file. @xref{Init File, , , xemacs}. Unification can be +deactivated by invoking @code{disable-unification}. + +Unification also provides a few functions for remapping or recoding the +buffer by hand. To @dfn{remap} a character means to change the buffer +representation of the character by using another coded character set. +Remapping never changes the identity of the character, but may involve +altering the code point of the character. To @dfn{recode} a character +means to simply change the coded character set. Recoding never alters +the code point of the character, but may change the identity of the +character. @xref{Unification Theory}. + +There are a few variables which determine which coding systems are +always acceptable to unification: @code{unity-ucs-list}, +@code{unity-preferred-coding-system-list}, and +@code{unity-preapproved-coding-system-list}. The last defaults to +@code{(buffer preferred)}, and you should probably avoid changing it +because it short-circuits the sanity check. If you find you need to +use it, consider reporting it as a bug or request for enhancement. + +@menu +* Basic Functionality:: User interface and customization. +* Interactive Usage:: Treating text by hand. + Also documents the hook function(s). +@end menu + + +@node Basic Functionality, Interactive Usage, , Unification Usage +@subsubsection Basic Functionality + +These functions and user options initialize and configure unification. +In normal use, they are not needed. + +@strong{These interfaces will change. Also, the @samp{unity-} prefix +is likely to be changed for many of the variables and functions, as +they are of more general usefulness.} + +@defun enable-unification +Set up hooks and initialize variables for unification. + +There are no arguments. + +This function is idempotent. It will reinitialize any hooks or variables +that are not in initial state. +@end defun + +@defun disable-unification +There are no arguments. + +Clean up hooks and void variables used by unification. +@end defun + +@c #### several changes should go to latin-unity.texi +@defopt unity-ucs-list +List of universal coding systems recommended for character set unification. + +The default value is @code{'(utf-8 iso-2022-7 ctext escape-quoted)}. + +Order matters; coding systems earlier in the list will be preferred when +recommending a coding system. These coding systems will not be used +without querying the user (unless they are also present in +@code{unity-preapproved-coding-system-list}), and follow the +@code{unity-preferred-coding-system-list} in the list of suggested +coding systems. + +If none of the preferred coding systems are feasible, the first in +this list will be the default. + +Notes on certain coding systems: @code{escape-quoted} is a special +coding system used for autosaves and compiled Lisp in Mule. You should +never delete this, although it is rare that a user would want to use it +directly. Unification does not try to be ``smart'' about other general +ISO 2022 coding systems, such as ISO-2022-JP. (They are not recognized +as equivalent to @code{iso-2022-7}.) If your preferred coding system is +one of these, you may consider adding it to @code{unity-ucs-list}. +@end defopt + +Coding systems which are not Latin and not in +@code{unity-ucs-list} are handled by short circuiting checks of +coding system against the next two variables. + +@defopt unity-preapproved-coding-system-list +List of coding systems used without querying the user if feasible. + +The default value is @samp{(buffer-default preferred)}. + +The first feasible coding system in this list is used. The special values +@samp{preferred} and @samp{buffer-default} may be present: + +@table @code +@item buffer-default +Use the coding system used by @samp{write-region}, if feasible. + +@item preferred +Use the coding system specified by @samp{prefer-coding-system} if feasible. +@end table + +"Feasible" means that all characters in the buffer can be represented by +the coding system. Coding systems in @samp{unity-ucs-list} are +always considered feasible. Other feasible coding systems are computed +by @samp{unity-representations-feasible-region}. + +Note that, by definition, the first universal coding system in this +list shadows all other coding systems. In particular, if your +preferred coding system is a universal coding system, and +@code{preferred} is a member of this list, unification will blithely +convert all your files to that coding system. This is considered a +feature, but it may surprise most users. Users who don't like this +behavior may put @code{preferred} in +@code{unity-preferred-coding-system-list}, but not in +@code{unity-preapproved-coding-system-list}. +@end defopt + + +@defopt unity-preferred-coding-system-list +List of coding systems suggested to the user if feasible. + +The default value is @samp{(iso-8859-1 iso-8859-15 iso-8859-2 iso-8859-3 +iso-8859-4 iso-8859-9)}. + +If none of the coding systems in +@samp{unity-preapproved-coding-system-list} are feasible, this list +will be recommended to the user, followed by the +@samp{unity-ucs-list} (so those coding systems should not be in +this list). The first coding system in this list is default. The +special values @samp{preferred} and @samp{buffer-default} may be +present: + +@table @code +@item buffer-default +Use the coding system used by @samp{write-region}, if feasible. + +@item preferred +Use the coding system specified by @samp{prefer-coding-system} if feasible. +@end table + +"Feasible" means that all characters in the buffer can be represented by +the coding system. Coding systems in @samp{unity-ucs-list} are +always considered feasible. Other feasible coding systems are computed +by @samp{unity-representations-feasible-region}. +@end defopt + + +@defvar unity-iso-8859-1-aliases +List of coding systems to be treated as aliases of ISO 8859/1. + +The default value is '(iso-8859-1). + +This is not a user variable; to customize input of coding systems or +charsets, @samp{unity-coding-system-alias-alist} or +@samp{unity-charset-alias-alist}. +@end defvar + + +@node Interactive Usage, , Basic Functionality, Unification Usage +@subsubsection Interactive Usage + +First, the hook function @code{unity-sanity-check} is documented. +(It is placed here because it is not an interactive function, and there +is not yet a programmer's section of the manual.) + +These functions provide access to internal functionality (such as the +remapping function) and to extra functionality (the recoding functions +and the test function). + +@defun unity-sanity-check begin end filename append visit lockname &optional coding-system + +Check if @var{coding-system} can represent all characters between +@var{begin} and @var{end}. + +For compatibility with old broken versions of @code{write-region}, +@var{coding-system} defaults to @code{buffer-file-coding-system}. +@var{filename}, @var{append}, @var{visit}, and @var{lockname} are +ignored. + +Return nil if buffer-file-coding-system is not (ISO-2022-compatible) +Latin. If @code{buffer-file-coding-system} is safe for the charsets +actually present in the buffer, return it. Otherwise, ask the user to +choose a coding system, and return that. + +This function does @emph{not} do the safe thing when +@code{buffer-file-coding-system} is nil (aka no-conversion). It +considers that ``non-Latin,'' and passes it on to the Mule detection +mechanism. + +This function is intended for use as a @code{write-region-pre-hook}. It +does nothing except return @var{coding-system} if @code{write-region} +handlers are inhibited. +@end defun + +@defun unity-buffer-representations-feasible +There are no arguments. + +Apply unity-region-representations-feasible to the current buffer. +@end defun + +@defun unity-region-representations-feasible begin end &optional buf +Return character sets that can represent the text from @var{begin} to +@var{end} in @var{buf}. + +@c #### Fix in latin-unity.texi. +@var{buf} defaults to the current buffer. Called interactively, will be +applied to the region. The function assumes @var{begin} <= @var{end}. + +The return value is a cons. The car is the list of character sets +that can individually represent all of the non-ASCII portion of the +buffer, and the cdr is the list of character sets that can +individually represent all of the ASCII portion. + +The following is taken from a comment in the source. Please refer to +the source to be sure of an accurate description. + +The basic algorithm is to map over the region, compute the set of +charsets that can represent each character (the ``feasible charset''), +and take the intersection of those sets. + +The current implementation takes advantage of the fact that ASCII +characters are common and cannot change asciisets. Then using +skip-chars-forward makes motion over ASCII subregions very fast. + +This same strategy could be applied generally by precomputing classes +of characters equivalent according to their effect on latinsets, and +adding a whole class to the skip-chars-forward string once a member is +found. + +Probably efficiency is a function of the number of characters matched, +or maybe the length of the match string? With @code{skip-category-forward} +over a precomputed category table it should be really fast. In practice +for Latin character sets there are only 29 classes. +@end defun + +@defun unity-remap-region begin end character-set &optional coding-system + +Remap characters between @var{begin} and @var{end} to equivalents in +@var{character-set}. Optional argument @var{coding-system} may be a +coding system name (a symbol) or nil. Characters with no equivalent are +left as-is. + +When called interactively, @var{begin} and @var{end} are set to the +beginning and end, respectively, of the active region, and the function +prompts for @var{character-set}. The function does completion, knows +how to guess a character set name from a coding system name, and also +provides some common aliases. See @code{unity-guess-charset}. +There is no way to specify @var{coding-system}, as it has no useful +function interactively. + +Return @var{coding-system} if @var{coding-system} can encode all +characters in the region, t if @var{coding-system} is nil and the coding +system with G0 = 'ascii and G1 = @var{character-set} can encode all +characters, and otherwise nil. Note that a non-null return does +@emph{not} mean it is safe to write the file, only the specified region. +(This behavior is useful for multipart MIME encoding and the like.) + +Note: by default this function is quite fascist about universal coding +systems. It only admits @samp{utf-8}, @samp{iso-2022-7}, and +@samp{ctext}. Customize @code{unity-approved-ucs-list} to change +this. + +This function remaps characters that are artificially distinguished by Mule +internal code. It may change the code point as well as the character set. +To recode characters that were decoded in the wrong coding system, use +@code{unity-recode-region}. +@end defun + +@defun unity-recode-region begin end wrong-cs right-cs + +Recode characters between @var{begin} and @var{end} from @var{wrong-cs} +to @var{right-cs}. + +@var{wrong-cs} and @var{right-cs} are character sets. Characters retain +the same code point but the character set is changed. Only characters +from @var{wrong-cs} are changed to @var{right-cs}. The identity of the +character may change. Note that this could be dangerous, if characters +whose identities you do not want changed are included in the region. +This function cannot guess which characters you want changed, and which +should be left alone. + +When called interactively, @var{begin} and @var{end} are set to the +beginning and end, respectively, of the active region, and the function +prompts for @var{wrong-cs} and @var{right-cs}. The function does +completion, knows how to guess a character set name from a coding system +name, and also provides some common aliases. See +@code{unity-guess-charset}. + +Another way to accomplish this, but using coding systems rather than +character sets to specify the desired recoding, is +@samp{unity-recode-coding-region}. That function may be faster +but is somewhat more dangerous, because it may recode more than one +character set. + +To change from one Mule representation to another without changing identity +of any characters, use @samp{unity-remap-region}. +@end defun + +@defun unity-recode-coding-region begin end wrong-cs right-cs + +Recode text between @var{begin} and @var{end} from @var{wrong-cs} to +@var{right-cs}. + +@var{wrong-cs} and @var{right-cs} are coding systems. Characters retain +the same code point but the character set is changed. The identity of +characters may change. This is an inherently dangerous function; +multilingual text may be recoded in unexpected ways. #### It's also +dangerous because the coding systems are not sanity-checked in the +current implementation. + +When called interactively, @var{begin} and @var{end} are set to the +beginning and end, respectively, of the active region, and the function +prompts for @var{wrong-cs} and @var{right-cs}. The function does +completion, knows how to guess a coding system name from a character set +name, and also provides some common aliases. See +@code{unity-guess-coding-system}. + +Another, safer, way to accomplish this, using character sets rather +than coding systems to specify the desired recoding, is to use +@code{unity-recode-region}. + +To change from one Mule representation to another without changing identity +of any characters, use @code{unity-remap-region}. +@end defun + +Helper functions for input of coding system and character set names. + +@defun unity-guess-charset candidate +Guess a charset based on the symbol @var{candidate}. + +@var{candidate} itself is not tried as the value. + +Uses the natural mapping in @samp{unity-cset-codesys-alist}, and +the values in @samp{unity-charset-alias-alist}." +@end defun + +@defun unity-guess-coding-system candidate +Guess a coding system based on the symbol @var{candidate}. + +@var{candidate} itself is not tried as the value. + +Uses the natural mapping in @samp{unity-cset-codesys-alist}, and +the values in @samp{unity-coding-system-alias-alist}." +@end defun + +@defun unity-example + +A cheesy example for unification. + +At present it just makes a multilingual buffer. To test, setq +buffer-file-coding-system to some value, make the buffer dirty (eg +with RET BackSpace), and save. +@end defun + + +@node Unification Configuration, Unification FAQs, Unification Usage, Unification +@subsection Configuring Unification for Use + +If you want unification to be automatically initialized, invoke +@samp{enable-unification} with no arguments in your init file. +@xref{Init File, , , xemacs}. If you are using GNU Emacs or an XEmacs +earlier than 21.1, you should also load @file{auto-autoloads} using the +full path (@emph{never} @samp{require} @file{auto-autoloads} libraries). + +You may wish to define aliases for commonly used character sets and +coding systems for convenience in input. + +@defopt unity-charset-alias-alist +Alist mapping aliases to Mule charset names (symbols)." + +The default value is +@example + ((latin-1 . latin-iso8859-1) + (latin-2 . latin-iso8859-2) + (latin-3 . latin-iso8859-3) + (latin-4 . latin-iso8859-4) + (latin-5 . latin-iso8859-9) + (latin-9 . latin-iso8859-15) + (latin-10 . latin-iso8859-16)) +@end example + +If a charset does not exist on your system, it will not complete and you +will not be able to enter it in response to prompts. A real charset +with the same name as an alias in this list will shadow the alias. +@end defopt + +@defopt unity-coding-system-alias-alist nil +Alist mapping aliases to Mule coding system names (symbols). + +The default value is @samp{nil}. +@end defopt + + +@node Unification FAQs, Unification Theory, Unification Configuration, Unification +@subsection Frequently Asked Questions About Unification + +@enumerate +@item +I'm smarter than XEmacs's unification feature! How can that be? + +Don't be surprised. Trust yourself. + +Unification is very young as yet. Teach it what you know by +Customizing its variables, and report your changes to the maintainer +(@kbd{M-x report-xemacs-bug RET}). + +@item +What is a UCS? + +According to ISO 10646, a Universal Coded character Set. In +XEmacs, it's Universal (Mule) Coding System. +@ref{Coding Systems, , , xemacs} + +@item +I know @code{utf-16-le-bom} is a UCS, but unification won't use it. +Why not? + +There are an awful lot of UCSes in Mule, and you probably do not want to +ever use, and definitely not be asked about, most of them. So the +default set includes a few that the author thought plausible, but +they're surely not comprehensive or optimal. + +Customize @code{unity-ucs-list} to include the ones you use often, and +report your favorites to the maintainer for consideration for +inclusion in the defaults using @kbd{M-x report-xemacs-bug RET}. +(Note that you @emph{must} include @code{escape-quoted} in this list, +because Mule uses it internally as the coding system for auto-save +files.) + +Alternatively, if you just want to use it this one time, simply type +it in at the prompt. Unification will confirm that is a real coding +system, and then assume that you know what you're doing. + +@item +This is crazy: I can't quit XEmacs and get queried on autosaves! Why? + +You probably removed @code{escape-quoted} from +@code{unity-ucs-list}. Put it back. + +@item +Unification is really buggy and I can't get any work done. + +First, use @kbd{M-x disable-unification RET}, then report your +problems as a bug (@kbd{M-x report-xemacs-bug RET}). +@end enumerate + + +@node Unification Theory, What Unification Cannot Do for You, Unification FAQs, Unification +@subsection Unification Theory + +Standard encodings suffer from the design defect that they do not +provide a reliable way to recognize which coded character sets in use. +@xref{What Unification Cannot Do for You}. There are scores of +character sets which can be represented by a single octet (8-bit +byte), whose union contains many hundreds of characters. Obviously +this results in great confusion, since you can't tell the players +without a scorecard, and there is no scorecard. + +There are two ways to solve this problem. The first is to create a +universal coded character set. This is the concept behind Unicode. +However, there have been satisfactory (nearly) universal character +sets for several decades, but even today many Westerners resist using +Unicode because they consider its space requirements excessive. On +the other hand, many Asians dislike Unicode because they consider it +to be incomplete. (This is partly, but not entirely, political.) + +In any case, Unicode only solves the internal representation problem. +Many data sets will contain files in ``legacy'' encodings, and Unicode +does not help distinguish among them. + +The second approach is to embed information about the encodings used in +a document in its text. This approach is taken by the ISO 2022 +standard. This would solve the problem completely from the users' of +view, except that ISO 2022 is basically not implemented at all, in the +sense that few applications or systems implement more than a small +subset of ISO 2022 functionality. This is due to the fact that +mono-literate users object to the presence of escape sequences in their +texts (which they, with some justification, consider data corruption). +Programmers are more than willing to cater to these users, since +implementing ISO 2022 is a painstaking task. + +In fact, Emacs/Mule adopts both of these approaches. Internally it uses +a universal character set, @dfn{Mule code}. Externally it uses ISO 2022 +techniques both to save files in forms robust to encoding issues, and as +hints when attempting to ``guess'' an unknown encoding. However, Mule +suffers from a design defect, namely it embeds the character set +information that ISO 2022 attaches to runs of characters by introducing +them with a control sequence in each character. That causes Mule to +consider the ISO Latin character sets to be disjoint. This manifests +itself when a user enters characters using input methods associated with +different coded character sets into a single buffer. + +There are two problems stemming from this design. First, Mule +represents the same character in different ways. Abstractly, ',As(B' +(LATIN SMALL LETTER O WITH ACUTE) can get represented as +[latin-iso8859-1 #x73] or as [latin-iso8859-2 #x73]. So what looks like +',Ass(B' in the display might actually be represented [latin-iso8859-1 +#x73][latin-iso8859-2 #x73] in the buffer, and saved as [#xF3 ESC - B +#xF3 ESC - A] in the file. In some cases this treatment would be +appropriate (consider HYPHEN, MINUS SIGN, EN DASH, EM DASH, and U+4E00 +(the CJK ideographic character meaning ``one'')), and although arguably +incorrect it is convenient when mixing the CJK scripts. But in the case +of the Latin scripts this is wrong. + +Worse yet, it is very likely to occur when mixing ``different'' encodings +(such as ISO 8859/1 and ISO 8859/15) that differ only in a few code +points that are almost never used. A very important example involves +email. Many sites, especially in the U.S., default to use of the ISO +8859/1 coded character set (also called ``Latin 1,'' though these are +somewhat different concepts). However, ISO 8859/1 provides a generic +CURRENCY SIGN character. Now that the Euro has become the official +currency of most countries in Europe, this is unsatisfactory (and in +practice, useless). So Europeans generally use ISO 8859/15, which is +nearly identical to ISO 8859/1 for most languages, except that it +substitutes EURO SIGN for CURRENCY SIGN. + +Suppose a European user yanks text from a post encoded in ISO 8859/1 +into a message composition buffer, and enters some text including the +Euro sign. Then Mule will consider the buffer to contain both ISO +8859/1 and ISO 8859/15 text, and MUAs such as Gnus will (if naively +programmed) send the message as a multipart mixed MIME body! + +This is clearly stupid. What is not as obvious is that, just as any +European can include American English in their text because ASCII is a +subset of ISO 8859/15, most European languages which use Latin +characters (eg, German and Polish) can typically be mixed while using +only one Latin coded character set (in the case of German and Polish, +ISO 8859/2). However, this often depends on exactly what text is to be +encoded (even for the same pair of languages). + +Unification works around the problem by converting as many characters as +possible to use a single Latin coded character set before saving the +buffer. + +Because the problem is rarely noticable in editing a buffer, but tends +to manifest when that buffer is exported to a file or process, +unification uses the strategy of examining the buffer prior to export. +If use of multiple Latin coded character sets is detected, unification +attempts to unify them by finding a single coded character set which +contains all of the Latin characters in the buffer. + +The primary purpose of unification is to fix the problem by giving the +user the choice to change the representation of all characters to one +character set and give sensible recommendations based on context. In +the ',As(B' example, either ISO 8859/1 or ISO 8859/2 is satisfactory, and +both will be suggested. In the EURO SIGN example, only ISO 8859/15 +makes sense, and that is what will be recommended. In both cases, the +user will be reminded that there are universal encodings available. + +I call this @dfn{remapping} (from the universal character set to a +particular ISO 8859 coded character set). It is mere accident that this +letter has the same code point in both character sets. (Not entirely, +but there are many examples of Latin characters that have different code +points in different Latin-X sets.) + +Note that, in the ',As(B' example, that treating the buffer in this way will +result in a representation such as [latin-iso8859-2 +#x73][latin-iso8859-2 #x73], and the file will be saved as [#xF3 #xF3]. +This is guaranteed to occasionally result in the second problem you +observed, to which we now turn. + +This problem is that, although the file is intended to be an +ISO-8859/2-encoded file, in an ISO 8859/1 locale Mule (and every POSIX +compliant program---this is required by the standard, obvious if you +think a bit, @pxref{What Unification Cannot Do for You}) will read that +file as [latin-iso8859-1 #x73] [latin-iso8859-1 #x73]. Of course this +is no problem if all of the characters in the file are contained in ISO +8859/1, but suppose there are some which are not, but are contained in +the (intended) ISO 8859/2. + +You now want to fix this, but not by finding the same character in +another set. Instead, you want to simply change the character set +that Mule associates with that buffer position without changing the +code. (This is conceptually somewhat distinct from the first problem, +and logically ought to be handled in the code that defines coding +systems. However, unification is not an unreasonable place for it.) +Unification provides two functions (one fast and dangerous, the other +@c #### fix latin-unity.texi +slower and careful) to handle this. I call this @dfn{recoding}, because +the transformation actually involves @emph{encoding} the buffer to +file representation, then @emph{decoding} it to buffer representation +(in a different character set). This cannot be done automatically +because Mule can have no idea what the correct encoding is---after +all, it already gave you its best guess. @xref{What Unification +Cannot Do for You}. So these functions must be invoked by the user. +@xref{Interactive Usage}. + + +@node What Unification Cannot Do for You, , Unification Theory, Unification +@subsection What Unification Cannot Do for You + +Unification @strong{cannot} save you if you insist on exporting data in +8-bit encodings in a multilingual environment. @emph{You will +eventually corrupt data if you do this.} It is not Mule's, or any +application's, fault. You will have only yourself to blame; consider +yourself warned. (It is true that Mule has bugs, which make Mule +somewhat more dangerous and inconvenient than some naive applications. +We're working to address those, but no application can remedy the +inherent defect of 8-bit encodings.) + +Use standard universal encodings, preferably Unicode (UTF-8) unless +applicable standards indicate otherwise. The most important such case +is Internet messages, where MIME should be used, whether or not the +subordinate encoding is a universal encoding. (Note that since one of +the important provisions of MIME is the @samp{Content-Type} header, +which has the charset parameter, MIME is to be considered a universal +encoding for the purposes of this manual. Of course, technically +speaking it's neither a coded character set nor a coding extension +technique compliant with ISO 2022.) + +As mentioned earlier, the problem is that standard encodings suffer from +the design defect that they do not provide a reliable way to recognize +which coded character sets are in use. There are scores of character +sets which can be represented by a single octet (8-bit byte), whose +union contains many hundreds of characters. Thus any 8-bit coded +character set must contain characters that share code points used for +different characters in other coded character sets. + +This means that a given file's intended encoding cannot be identified +with 100% reliability unless it contains encoding markers such as those +provided by MIME or ISO 2022. + +Unification actually makes it more likely that you will have problems of +this kind. Traditionally Mule has been ``helpful'' by simply using an +ISO 2022 universal coding system when the current buffer coding system +cannot handle all the characters in the buffer. This has the effect +that, because the file contains control sequences, it is not recognized +as being in the locale's normal 8-bit encoding. It may be annoying if +@c #### fix in latin-unity.texi +you are not a Mule expert, but your data is guaranteed to be recoverable +with a tool you already have: Mule. + +However, with unification, Mule converts to a single 8-bit character set +when possible. But typically this will @emph{not} be in your usual +locale. Ie, the times that an ISO 8859/1 user will need unification is +when there are ISO 8859/2 characters in the buffer. But then most +likely the file will be saved in a pure 8-bit encoding that is not ISO +8859/1, ie, ISO 8859/2. Mule's autorecognizer (which is probably the +most sophisticated yet available) cannot tell the difference between ISO +8859/1 and ISO 8859/2, and in a Western European locale will choose the +former even though the latter was intended. Even the extension +@c #### fix in latin-unity.texi +(``statistical recognition'') planned for XEmacs 22 is unlikely to be +acceptably accurate in the case of mixed codes. + +So now consider adding some additional ISO 8859/1 text to the buffer. +If it includes any ISO 8859/1 codes that are used by different +characters in ISO 8859/2, you now have a file that cannot be +mechanically disentangled. You need a human being who can recognize +that @emph{this is German and Swedish} and stays in Latin-1, while +@emph{that is Polish} and needs to be recoded to Latin-2. + +Moral: switch to a universal coded character set, preferably Unicode +using the UTF-8 transformation format. If you really need the space, +compress your files. + + +@node Specify Coding, Charsets and Coding Systems, Unification, Mule @section Specifying a Coding System In cases where XEmacs does not automatically choose the right coding @@ -549,3 +1286,192 @@ those non-Latin-1 characters which the specified coding system can encode. By default, this variable is @code{nil}, which implies that you cannot use non-Latin-1 characters in file names. + + +@node Charsets and Coding Systems, , Specify Coding, Mule +@section Charsets and Coding Systems + +This section provides reference lists of Mule charsets and coding +systems. Mule charsets are typically named by character set and +standard. + +@table @strong +@item ASCII variants + +Identification of equivalent characters in these sets is not properly +implemented. Unification does not distinguish the two charsets. + +@samp{ascii} @samp{latin-jisx0201} + +@item Extended Latin + +Characters from the following ISO 2022 conformant charsets are +identified with equivalents in other charsets in the group by +unification. + +@samp{latin-iso8859-1} @samp{latin-iso8859-15} @samp{latin-iso8859-2} +@samp{latin-iso8859-3} @samp{latin-iso8859-4} @samp{latin-iso8859-9} +@samp{latin-iso8859-13} @samp{latin-iso8859-16} + +The follow charsets are Latin variants which are not understood by +unification. In addition, many of the Asian language standards provide +ASCII, at least, and sometimes other Latin characters. None of these +are identified with their ISO 8859 equivalents. + +@samp{vietnamese-viscii-lower} +@samp{vietnamese-viscii-upper} + +@item Other character sets + +@samp{arabic-1-column} +@samp{arabic-2-column} +@samp{arabic-digit} +@samp{arabic-iso8859-6} +@samp{chinese-big5-1} +@samp{chinese-big5-2} +@samp{chinese-cns11643-1} +@samp{chinese-cns11643-2} +@samp{chinese-cns11643-3} +@samp{chinese-cns11643-4} +@samp{chinese-cns11643-5} +@samp{chinese-cns11643-6} +@samp{chinese-cns11643-7} +@samp{chinese-gb2312} +@samp{chinese-isoir165} +@samp{cyrillic-iso8859-5} +@samp{ethiopic} +@samp{greek-iso8859-7} +@samp{hebrew-iso8859-8} +@samp{ipa} +@samp{japanese-jisx0208} +@samp{japanese-jisx0208-1978} +@samp{japanese-jisx0212} +@samp{katakana-jisx0201} +@samp{korean-ksc5601} +@samp{sisheng} +@samp{thai-tis620} +@samp{thai-xtis} + +@item Non-graphic charsets + +@samp{control-1} +@end table + +@table @strong +@item No conversion + +Some of these coding systems may specify EOL conventions. Note that +@samp{iso-8859-1} is a no-conversion coding system, not an ISO 2022 +coding system. Although unification attempts to compensate for this, it +is possible that the @samp{iso-8859-1} coding system will behave +differently from other ISO 8859 coding systems. + +@samp{binary} @samp{no-conversion} @samp{raw-text} @samp{iso-8859-1} + +@item Latin coding systems + +These coding systems are all single-byte, 8-bit ISO 2022 coding systems, +combining ASCII in the GL register (bytes with high-bit clear) and an +extended Latin character set in the GR register (bytes with high-bit set). + +@samp{iso-8859-15} @samp{iso-8859-2} @samp{iso-8859-3} @samp{iso-8859-4} +@samp{iso-8859-9} @samp{iso-8859-13} @samp{iso-8859-14} @samp{iso-8859-16} + +These coding systems are single-byte, 8-bit coding systems that do not +conform to international standards. They should be avoided in all +potentially multilingual contexts, including any text distributed over +the Internet and World Wide Web. + +@samp{windows-1251} + +@item Multilingual coding systems + +The following ISO-2022-based coding systems are useful for multilingual +text. + +@samp{ctext} @samp{iso-2022-lock} @samp{iso-2022-7} @samp{iso-2022-7bit} +@samp{iso-2022-7bit-ss2} @samp{iso-2022-8} @samp{iso-2022-8bit-ss2} + +XEmacs also supports Unicode with the Mule-UCS package. These are the +preferred coding systems for multilingual use. (There is a possible +exception for texts that mix several Asian ideographic character sets.) + +@samp{utf-16-be} @samp{utf-16-be-no-signature} @samp{utf-16-le} +@samp{utf-16-le-no-signature} @samp{utf-7} @samp{utf-7-safe} +@samp{utf-8} @samp{utf-8-ws} + +Development versions of XEmacs (the 21.5 series) support Unicode +internally, with (at least) the following coding systems implemented: + +@samp{utf-16-be} @samp{utf-16-be-bom} @samp{utf-16-le} +@samp{utf-16-le-bom} @samp{utf-8} @samp{utf-8-bom} + +@item Asian ideographic languages + +The following coding systems are based on ISO 2022, and are more or less +suitable for encoding multilingual texts. They all can represent ASCII +at least, and sometimes several other foreign character sets, without +resort to arbitrary ISO 2022 designations. However, these subsets are +not identified with the corresponding national standards in XEmacs Mule. + +@samp{chinese-euc} @samp{cn-big5} @samp{cn-gb-2312} @samp{gb2312} +@samp{hz} @samp{hz-gb-2312} @samp{old-jis} @samp{japanese-euc} +@samp{junet} @samp{euc-japan} @samp{euc-jp} @samp{iso-2022-jp} +@samp{iso-2022-jp-1978-irv} @samp{iso-2022-jp-2} @samp{euc-kr} +@samp{korean-euc} @samp{iso-2022-kr} @samp{iso-2022-int-1} + +The following coding systems cannot be used for general multilingual +text and do not cooperate well with other coding systems. + +@samp{big5} @samp{shift_jis} + +@item Other languages + +The following coding systems are based on ISO 2022. Though none of them +provides any Latin characters beyond ASCII, XEmacs Mule allows (and up +to 21.4 defaults to) use of ISO 2022 control sequences to designate +other character sets for inclusion the text. + +@samp{iso-8859-5} @samp{iso-8859-7} @samp{iso-8859-8} +@samp{ctext-hebrew} + +The following are character sets that do not conform to ISO 2022 and +thus cannot be safely used in a multilingual context. + +@samp{alternativnyj} @samp{koi8-r} @samp{tis-620} @samp{viqr} +@samp{viscii} @samp{vscii} + +@item Special coding systems + +Mule uses the following coding systems for special purposes. + +@samp{automatic-conversion} @samp{undecided} @samp{escape-quoted} + +@samp{escape-quoted} is especially important, as it is used internally +as the coding system for autosaved data. + +The following coding systems are aliases for others, and are used for +communication with the host operating system. + +@samp{file-name} @samp{keyboard} @samp{terminal} + +@end table + +Mule detection of coding systems is actually limited to detection of +classes of coding systems called @dfn{coding categories}. These coding +categories are identified by the ISO 2022 control sequences they use, if +any, by their conformance to ISO 2022 restrictions on code points that +may be used, and by characteristic patterns of use of 8-bit code points. + +@samp{no-conversion} +@samp{utf-8} +@samp{ucs-4} +@samp{iso-7} +@samp{iso-lock-shift} +@samp{iso-8-1} +@samp{iso-8-2} +@samp{iso-8-designate} +@samp{shift-jis} +@samp{big5} + + diff --text -u 'xemacs-21.5.9/man/xemacs/packages.texi' 'xemacs-21.5.10/man/xemacs/packages.texi' Index: ./man/xemacs/packages.texi --- ./man/xemacs/packages.texi Fri Aug 16 21:40:52 2002 +++ ./man/xemacs/packages.texi Sat Oct 5 03:09:50 2002 @@ -274,7 +274,7 @@ @end table If there is no character in the first column, the package has been -installed and is up-to-date. +installed and is up to date. From here, you can select or unselect packages for installation using the @key{RET} key, the @kbd{Mouse-2} button or selecting "Select" from @@ -664,7 +664,7 @@ looking for isn't here, please send a message to the @email{xemacs-beta@@xemacs.org, XEmacs Beta list}. -This data is up-to-date as of August 8, 2002. +This data is up to date as of October 4, 2002. @subsection Normal Packages A very broad selection of elisp packages. @@ -769,11 +769,14 @@ @item forms Forms editing support (obsolete, use the built-in Widget instead). +@item fortran-modes +Fortran language support. + @item frame-icon Provide a WM icon based on major mode. @item fsf-compat -FSF Emacs compatibility files. +GNU Emacs compatibility files. @item games Tetris, Sokoban, and Snake. @@ -785,7 +788,7 @@ The Gnus Newsreader and Mailreader. @item haskell-mode -Haskell editing support. +Haskell language support. @item hm--html-menus HTML editing. @@ -841,7 +844,7 @@ compression, remote shells, etc. @item ocaml -Objective Caml editing support. +Objective Caml language support. @item pc PC style interface emulation. @@ -852,6 +855,9 @@ @item pcomplete Provides programmatic completion. +@item perl-modes +Perl language support. + @item prog-modes Miscellaneous single-file lisp files for various programming languages. @@ -861,12 +867,23 @@ @item psgml Validated HTML/SGML editing. +@item psgml-dtds +A collection of DTDs for psgml. Note that this package is deprecated +and will be removed in the future, most likely Q2/2003. Instead of using +this, you should install needed DTDs yourself. + +@item python-modes +Python language support. + @item reftex Emacs support for LaTeX cross-references, citations. @item rmail An obsolete Emacs mailer. If you do not already use it don't start. +@item ruby-modes +Ruby language support. + @item sasl Simple Authentication and Security Layer (SASL) library. diff --text -u 'xemacs-21.5.9/man/xemacs/startup.texi' 'xemacs-21.5.10/man/xemacs/startup.texi' Index: ./man/xemacs/startup.texi --- ./man/xemacs/startup.texi Fri Apr 13 03:22:30 2001 +++ ./man/xemacs/startup.texi Fri Jan 3 21:12:40 2003 @@ -92,10 +92,10 @@ late hierarchy. At run time, the package path may also be specified via the @code{EMACSPACKAGEPATH} environment variable. -An XEmacs package is laid out just like a normal installed XEmacs lisp -directory. It may have @file{lisp}, @file{etc}, @file{info}, and -@file{lib-src} subdirectories. XEmacs adds these at appropriate places -within the various system-wide paths. +An XEmacs package hierarchy is laid out just like a normal installed +XEmacs lisp directory. It may have @file{lisp}, @file{etc}, +@file{info}, and @file{lib-src} subdirectories. XEmacs adds these at +appropriate places within the various system-wide paths. There may be any number of package hierarchy directories. diff --text -u 'xemacs-21.5.9/man/xemacs/xemacs.texi' 'xemacs-21.5.10/man/xemacs/xemacs.texi' Index: ./man/xemacs/xemacs.texi --- ./man/xemacs/xemacs.texi Sun Dec 16 04:25:21 2001 +++ ./man/xemacs/xemacs.texi Fri Jan 3 21:15:03 2003 @@ -161,7 +161,7 @@ * Files:: All about handling files. * Buffers:: Multiple buffers; editing several files at once. * Windows:: Viewing two pieces of text at once. -* Mule:: Using world scripts. +* Mule:: Multibyte characters; multiple scripts at once; Unicode. Advanced Features * Major Modes:: Text mode vs. Lisp mode vs. C mode ... @@ -404,6 +404,18 @@ * Pop Up Window:: Finding a file or buffer in another window. * Change Window:: Deleting windows and changing their sizes. +Multiple Scripts and Unicode + +* Mule Intro:: Basic concepts of multilingual text. +* Language Environments:: Setting things up for the language you use. +* Input Methods:: Entering text characters not on your keyboard. +* Select Input Method:: Specifying your choice of input methods. +* Coding Systems:: Character set conversion when you read and + write files, and so on. +* Recognize Coding:: How XEmacs figures out which conversion to use. +* Unification:: Integrating overlapping character sets. +* Charsets and Coding Systems:: Tables and other reference material. + Major Modes * Choosing Modes:: How major modes are specified or chosen. diff --text -u 'xemacs-21.5.9/modules/ChangeLog' 'xemacs-21.5.10/modules/ChangeLog' Index: ./modules/ChangeLog --- ./modules/ChangeLog Fri Aug 30 17:26:11 2002 +++ ./modules/ChangeLog Sun Jan 5 14:13:38 2003 @@ -1,3 +1,146 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + +2002-11-17 Ben Wing + + * postgresql/Makefile.in.in: + * postgresql/Makefile.in.in (SRCS): + * postgresql/Makefile.in.in (SRC_SRCS): Removed. + * postgresql/Makefile.in.in (OBJS): Removed. + * postgresql/Makefile.in.in (SHELL): Removed. + * postgresql/Makefile.in.in (RM): Removed. + * postgresql/Makefile.in.in (PROGNAME): Removed. + * postgresql/Makefile.in.in (CFLAGS): Removed. + * postgresql/Makefile.in.in (INSTALL): Removed. + * postgresql/Makefile.in.in (version): Removed. + * postgresql/Makefile.in.in (prefix): Removed. + * postgresql/Makefile.in.in (exec_prefix): Removed. + * postgresql/Makefile.in.in (libdir): Removed. + * postgresql/Makefile.in.in (instvardir): Removed. + * postgresql/Makefile.in.in (configuration): Removed. + * postgresql/Makefile.in.in (moduledir): Removed. + * postgresql/Makefile.in.in (with_modules): Removed. + * postgresql/Makefile.in.in (srcdir): Removed. + * postgresql/Makefile.in.in (VPATH): Removed. + * postgresql/Makefile.in.in (CC): Removed. + * postgresql/Makefile.in.in (MODARCHDIR): Removed. + * postgresql/Makefile.in.in (MAKE_DOCFILE): Removed. + * postgresql/Makefile.in.in (MODCFLAGS): Removed. + * postgresql/Makefile.in.in (INSTALLPATH): Removed. + * postgresql/Makefile.in.in (INSTALL_PROGRAM): Removed. + * postgresql/Makefile.in.in (OBJECT_TO_BUILD): Removed. + * postgresql/Makefile.in.in (.PHONY): Removed. + * postgresql/Makefile.in.in (all): Removed. + * postgresql/Makefile.in.in (.c.o): Removed. + * postgresql/Makefile.in.in (clean): Removed. + * postgresql/Makefile.in.in (distclean): Removed. + * postgresql/Makefile.in.in (install): Removed. + Move common stuff into modues/common/Makefile.common. (Also + add extraclean target and a couple of other fixes in that file.) + + * postgresql/configure.ac: + Extract out common configure stuff into + modules/common/configure-{pre,post}.ac. + + * postgresql/postgresql.c (WARNING): + Fix warning. + +2002-11-17 Ben Wing + + * ldap/Makefile.in.in: + * ldap/Makefile.in.in (SRCS): + * ldap/Makefile.in.in (SRC_SRCS): Removed. + * ldap/Makefile.in.in (OBJS): Removed. + * ldap/Makefile.in.in (SHELL): Removed. + * ldap/Makefile.in.in (RM): Removed. + * ldap/Makefile.in.in (PROGNAME): Removed. + * ldap/Makefile.in.in (CFLAGS): Removed. + * ldap/Makefile.in.in (INSTALL): Removed. + * ldap/Makefile.in.in (version): Removed. + * ldap/Makefile.in.in (prefix): Removed. + * ldap/Makefile.in.in (exec_prefix): Removed. + * ldap/Makefile.in.in (libdir): Removed. + * ldap/Makefile.in.in (instvardir): Removed. + * ldap/Makefile.in.in (configuration): Removed. + * ldap/Makefile.in.in (moduledir): Removed. + * ldap/Makefile.in.in (with_modules): Removed. + * ldap/Makefile.in.in (srcdir): Removed. + * ldap/Makefile.in.in (VPATH): Removed. + * ldap/Makefile.in.in (CC): Removed. + * ldap/Makefile.in.in (MODARCHDIR): Removed. + * ldap/Makefile.in.in (MAKE_DOCFILE): Removed. + * ldap/Makefile.in.in (MODCFLAGS): Removed. + * ldap/Makefile.in.in (INSTALLPATH): Removed. + * ldap/Makefile.in.in (INSTALL_PROGRAM): Removed. + * ldap/Makefile.in.in (OBJECT_TO_BUILD): Removed. + * ldap/Makefile.in.in (.PHONY): Removed. + * ldap/Makefile.in.in (all): Removed. + * ldap/Makefile.in.in (.c.o): Removed. + * ldap/Makefile.in.in (clean): Removed. + * ldap/Makefile.in.in (distclean): Removed. + * ldap/Makefile.in.in (install): Removed. + Move common stuff into modues/common/Makefile.common. (Also + add extraclean target and a couple of other fixes in that file.) + + * ldap/configure.ac: + * ldap/configure.ac (have_ldap): + Extract out common configure stuff into + modules/common/configure-{pre,post}.ac. + +2002-11-17 Ben Wing + + * common/Makefile.common: + * common/Makefile.common (SHELL): + Common stuff is here. + +2002-09-20 Steve Youngs + + * postgresql/Makefile.in.in (LDFLAGS): Add @ld_switch_all@ to pick + up '--site-libraries'. + + * ldap/Makefile.in.in (LDFLAGS): Ditto. + +2002-08-08 Jerry James + + * auto-autoloads.el: New file containing module autoloads. + * auto-autoloads.elc: Ditto. + * README: Update to reflect the new architecture. + * ldap/configure.ac: New file. + * ldap/configure: Ditto. + * ldap/eldap.h: Copy the version from src. + * ldap/eldap.c: Ditto. Add autoloads. + * ldap/eldap.c (unload_eldap): New function to unstaticpro symbols + defined in this file. + * ldap/install-sh: New script for independent module building. + * ldap/Makefile: Remove in favor of autoconf solution. + * ldap/Makefile.in.in: New file containing the autoconf solution. + * postgresql: New directory. + * postgresql/.cvsignore: New file. + * postgresql/configure.ac: Ditto. + * postgresql/configure: Ditto. + * postgresql/install-sh: New script for independent module + building. + * postgresql/Makefile.in.in: New file. + * postgresql/postgresql.h: Copy the version from src. + * postgresql/postgresql.c: Ditto. Add autoloads. + * sample/Makefile: Move to internal and external subdirectories. + * sample/sample.c: Ditto. + * sample/external: New directory containing sample external + modules. + * sample/external/.cvsignore: New file. + * sample/external/configure.ac: Ditto. + * sample/external/install-sh: Ditto. + * sample/external/Makefile.in.in: New. + * sample/external/sample.c: Move from next higher directory. + * sample/internal: New directory containing sample internal + modules. + * sample/internal/.cvsignore: New file. + * sample/internal/configure.ac: Ditto. + * sample/internal/install-sh: Ditto. + * sample/internal/Makefile.in.in: New. + * sample/internal/sample.c: Move from next higher directory. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. diff --text -u 'xemacs-21.5.9/modules/README' 'xemacs-21.5.10/modules/README' Index: ./modules/README --- ./modules/README Fri Apr 13 03:22:32 2001 +++ ./modules/README Wed Sep 11 00:27:12 2002 @@ -1,17 +1,27 @@ -This directory contains a number of sample Emacs dynamic modules. -These modules can be loaded with the command 'M-x load-module'. +This directory contains a number of XEmacs dynamic modules. These +modules can be loaded directly with the command 'M-x load-module'. +However, the preferred method of loading a module is to issue a +"(require 'module-name)" command to the Lisp interpreter. This will +store information so that a later "(unload-feature 'module-name)" can +succeed. -To compile one of these modules, simply enter the desired directory -and type 'make'. Then, from within Emacs, load the module by -specifying the path to the directory which contains the compiled -module. +To compile one of these modules, simply enter the desired directory, +type 'configure', and then 'make'. If you are building the module for +an installed XEmacs, then 'make install' will place the module in the +appropriate directory for XEmacs to find it later (assuming you have +permission to write to that directory). A subsequent 'load-module' or +'require' will then load the module, as described above. -Each of these samples describes different features and limitations -of the Emacs module loading technology. Please refer to the README -files in each directory for a brief discussion on what the sample -in that directory is demonstrating. For a complete discussion on -Emacs dynamic modules, please consult the Emacs Module Writers Guide, -which can be found in the ../info directory. +Each of these demonstrates different features and limitations of the +XEmacs module loading technology. For a complete discussion on XEmacs +dynamic modules, please consult the XEmacs Module Writers Guide, which +can be found in the ../info directory. -NOTE: As this technology matures, this directory will eventually contain -large parts of XEmacs itself, which will be loaded in as required. +For those wanting to get started with module writing, please see the +'sample' directory. It contains two subdirectories: internal and +external. The 'internal' subdirectory contains the framework needed to +migrate some core piece of XEmacs functionality into code that can +either be compiled into the core or built as a separate module. The +'external' subdirectory contains the somewhat simpler framework needed +to build a module separately from XEmacs. These should be considered +starting places for module writing. diff --text -u /dev/null 'xemacs-21.5.10/modules/common/Makefile.common' Index: ././modules/common/Makefile.common --- ././modules/common/Makefile.common Thu Jan 1 09:00:00 1970 +++ ././modules/common/Makefile.common Mon Nov 18 15:52:30 2002 @@ -0,0 +1,81 @@ +## Common Makefile section for modules in XEmacs. +## Copyright (C) 2002 Jerry James. + +## 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 2, 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; see the file COPYING. If not, write to +## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +## Boston, MA 02111-1307, USA. + +## Synched up with: Not in FSF. + +## This is more complicated than would normally be the case, as this makefile +## has been tailored to work both inside and independently of the XEmacs +## source tree, and to support both module and non-module building inside the +## source tree. + +## Note: This will be appended to the individual module Makefiles by configure. + +SRC_SRCS=$(SRCS:%=$(srcdir)/%) +OBJS=$(SRCS:.c=.o) + +SHELL=/bin/sh +RM=rm -f +PROGNAME=@PROGNAME@ +CFLAGS=@CFLAGS@ +INSTALL=@INSTALL@ +version=@version@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +instvardir=@instvardir@ +configuration=@configuration@ +moduledir=@moduledir@ +with_modules=@with_modules@ + +srcdir=@srcdir@ +VPATH=@srcdir@ + +CC=@MOD_CC@ +MODARCHDIR=@MODARCHDIR@ +MAKE_DOCFILE=@MAKE_DOCFILE@ +MODCFLAGS=@MODCFLAGS@ +INSTALLPATH=@INSTALLPATH@ +INSTALL_PROGRAM=@MOD_INSTALL_PROGRAM@ +OBJECT_TO_BUILD=@OBJECT_TO_BUILD@ + +.PHONY: clean distclean install +all: $(OBJECT_TO_BUILD) + +.c.o: + $(CC) $(MODCFLAGS) -c $< + +$(MODNAME).ell: $(OBJS) $(MODNAME)_i.o + $(CC) --mode=link --mode=verbose --mod-output=$@ $^ $(LDFLAGS) + +$(MODNAME)_i.c: $(SRCS) + ELLMAKEDOC=$(MAKE_DOCFILE) $(CC) --mode=init --mod-output=$@ \ + --mod-name=$(MODNAME) --mod-version=$(MODVER) \ + --mod-title=$(MODTITLE) $(SRC_SRCS) + +clean: + $(RM) $(MODNAME).ell $(OBJS) $(MODNAME)_i.* *~ + +distclean: clean + $(RM) Makefile config.* configure + +extraclean: distclean + +install: $(OBJECT_TO_BUILD) + $(INSTALL_PROGRAM) $< $(INSTALLPATH) diff --text -u /dev/null 'xemacs-21.5.10/modules/common/configure-post.ac' Index: ././modules/common/configure-post.ac --- ././modules/common/configure-post.ac Thu Jan 1 09:00:00 1970 +++ ././modules/common/configure-post.ac Mon Nov 4 14:19:49 2002 @@ -0,0 +1,13 @@ + +# This part should appear unchanged in every module configure.ac +AC_SUBST(PROGNAME, "module") +AC_SUBST(MOD_CC, "@ELLCC@") +AC_SUBST(MODARCHDIR, "\$(shell @ELLCC@ --mod-archdir)") +AC_SUBST(MAKE_DOCFILE, "\$(MODARCHDIR)/make-docfile") +AC_SUBST(MODCFLAGS, "\$(CFLAGS) --mode=compile --mod-output=\$@ -I\$(MODARCHDIR)/include") +AC_SUBST(INSTALLPATH, "\$(shell @ELLCC@ --mod-site-location)") +AC_SUBST(MOD_INSTALL_PROGRAM, "@INSTALL_PROGRAM@") +AC_SUBST(OBJECT_TO_BUILD, "\$(MODNAME).ell") + +AC_CONFIG_FILES([Makefile.in Makefile]) +AC_OUTPUT diff --text -u /dev/null 'xemacs-21.5.10/modules/common/configure-pre.ac' Index: ././modules/common/configure-pre.ac --- ././modules/common/configure-pre.ac Thu Jan 1 09:00:00 1970 +++ ././modules/common/configure-pre.ac Mon Nov 4 14:19:54 2002 @@ -0,0 +1,9 @@ +AC_PROG_CC +AC_PROG_INSTALL +AC_SUBST(CFLAGS) +AC_SUBST(LDFLAGS) + +# Find ELLCC +AC_ARG_VAR([ELLCC], [The path to the ellcc module compiler]) +AC_PATH_PROG([ELLCC], [ellcc], ["FAIL"]) +AS_IF([test "$ELLCC" = "FAIL"], [AS_ERROR([Cannot find ellcc])]) diff --text -u /dev/null 'xemacs-21.5.10/modules/ldap/Makefile.in.in' Index: ././modules/ldap/Makefile.in.in --- ././modules/ldap/Makefile.in.in Thu Jan 1 09:00:00 1970 +++ ././modules/ldap/Makefile.in.in Mon Nov 18 15:52:32 2002 @@ -0,0 +1,30 @@ +## Makefile for the LDAP module in XEmacs. +## Copyright (C) 2002 Jerry James. + +## 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 2, 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; see the file COPYING. If not, write to +## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +## Boston, MA 02111-1307, USA. + +## Synched up with: Not in FSF. + +### Specialize this part for your module +MODNAME=eldap +MODVER=1.0.0 +MODTITLE="LDAP Client Interface for XEmacs" +LDFLAGS=@LDFLAGS@ @ld_switch_all@ @ldap_libs@ +SRCS=eldap.c + +## Note: modules/common/Makefile.common will be appended by configure diff --text -u /dev/null 'xemacs-21.5.10/modules/ldap/configure' Index: ././modules/ldap/configure --- ././modules/ldap/configure Thu Jan 1 09:00:00 1970 +++ ././modules/ldap/configure Wed Sep 11 00:27:14 2002 @@ -0,0 +1,3955 @@ +#! /bin/sh +# From configure.ac Revision: 1.0 . +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.53b for LDAP module 1.0. +# +# Report bugs to . +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +# +# Configuration script for the LDAP module. +# Copyright (C) 2002 Jerry James. +# +# 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 2, 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; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# NLS nuisances. +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && + { $as_unset LANG || test "${LANG+set}" != set; } || + { LANG=C; export LANG; } +(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && + { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || + { LC_ALL=C; export LC_ALL; } +(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && + { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || + { LC_TIME=C; export LC_TIME; } +(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && + { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || + { LC_CTYPE=C; export LC_CTYPE; } +(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && + { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || + { LANGUAGE=C; export LANGUAGE; } +(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && + { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || + { LC_COLLATE=C; export LC_COLLATE; } +(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && + { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || + { LC_NUMERIC=C; export LC_NUMERIC; } +(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && + { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || + { LC_MESSAGES=C; export LC_MESSAGES; } + + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='LDAP module' +PACKAGE_TARNAME='ldap-module' +PACKAGE_VERSION='1.0' +PACKAGE_STRING='LDAP module 1.0' +PACKAGE_BUGREPORT='xemacs-beta@xemacs.org' + +ac_unique_file="eldap.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA ELLCC CPP EGREP ldap_libs PROGNAME MOD_CC MODARCHDIR MAKE_DOCFILE MODCFLAGS INSTALLPATH MOD_INSTALL_PROGRAM OBJECT_TO_BUILD LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_ELLCC_set=${ELLCC+set} +ac_env_ELLCC_value=$ELLCC +ac_cv_env_ELLCC_set=${ELLCC+set} +ac_cv_env_ELLCC_value=$ELLCC +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures LDAP module 1.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of LDAP module 1.0:";; + esac + cat <<\_ACEOF + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + ELLCC The path to the ellcc module compiler + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +LDAP module configure 1.0 +generated by GNU Autoconf 2.53b + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. + +Configuration script for the LDAP module. +Copyright (C) 2002 Jerry James. + +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 2, 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; see the file COPYING. If not, write to the Free +Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by LDAP module $as_me 1.0, which was +generated by GNU Autoconf 2.53b. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell meta-characters. +ac_configure_args= +ac_sep= +for ac_arg +do + case $ac_arg in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n ) continue ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 +echo "$as_me: error: C compiler cannot create executables" >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + +# Find ELLCC + +# Extract the first word of "ellcc", so it can be a program name with args. +set dummy ellcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_ELLCC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ELLCC in + [\\/]* | ?:[\\/]*) + ac_cv_path_ELLCC="$ELLCC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ELLCC="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_ELLCC" && ac_cv_path_ELLCC=""FAIL"" + ;; +esac +fi +ELLCC=$ac_cv_path_ELLCC + +if test -n "$ELLCC"; then + echo "$as_me:$LINENO: result: $ELLCC" >&5 +echo "${ECHO_T}$ELLCC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$ELLCC" = "FAIL"; then + { { echo "$as_me:$LINENO: error: Cannot find ellcc" >&5 +echo "$as_me: error: Cannot find ellcc" >&2;} + { (exit 1); exit 1; }; } +fi + + +# Find the LDAP headers and libraries +have_ldap="yes" + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + +for ac_header in ldap.h lber.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else + have_ldap="no" +fi + +done + +if test "$have_ldap" = "yes"; then + +echo "$as_me:$LINENO: checking for ldap_search in -lldap" >&5 +echo $ECHO_N "checking for ldap_search in -lldap... $ECHO_C" >&6 +if test "${ac_cv_lib_ldap_ldap_search+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lldap -llber $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char ldap_search (); +int +main () +{ +ldap_search (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ldap_ldap_search=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_ldap_ldap_search=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ldap_ldap_search" >&5 +echo "${ECHO_T}$ac_cv_lib_ldap_ldap_search" >&6 +if test $ac_cv_lib_ldap_ldap_search = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBLDAP 1 +_ACEOF + + LIBS="-lldap $LIBS" + +else + have_ldap="no"; LIBS="$LIBS -llber" +fi + + test "$have_ldap" = "no" && { + echo "$as_me:$LINENO: checking for ldap_open in -lldap" >&5 +echo $ECHO_N "checking for ldap_open in -lldap... $ECHO_C" >&6 +if test "${ac_cv_lib_ldap_ldap_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lldap -lkrb $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char ldap_open (); +int +main () +{ +ldap_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ldap_ldap_open=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_ldap_ldap_open=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ldap_ldap_open" >&5 +echo "${ECHO_T}$ac_cv_lib_ldap_ldap_open" >&6 +if test $ac_cv_lib_ldap_ldap_open = yes; then + have_ldap="yes" +else + LIBS="$LIBS -lkrb" +fi + } + test "$have_ldap" = "no" && { + echo "$as_me:$LINENO: checking for ldap_open in -lldap" >&5 +echo $ECHO_N "checking for ldap_open in -lldap... $ECHO_C" >&6 +if test "${ac_cv_lib_ldap_ldap_open+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lldap -ldes $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char ldap_open (); +int +main () +{ +ldap_open (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_ldap_ldap_open=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_ldap_ldap_open=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_ldap_ldap_open" >&5 +echo "${ECHO_T}$ac_cv_lib_ldap_ldap_open" >&6 +if test $ac_cv_lib_ldap_ldap_open = yes; then + have_ldap="yes" +else + LIBS="$LIBS -ldes" +fi + } +else + { { echo "$as_me:$LINENO: error: Cannot find the LDAP header file" >&5 +echo "$as_me: error: Cannot find the LDAP header file" >&2;} + { (exit 1); exit 1; }; } +fi + +if test "$have_ldap" = "yes"; then + + + + +for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +f = $ac_func; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_var=no" +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +else + { { echo "$as_me:$LINENO: error: Cannot link with the LDAP library" >&5 +echo "$as_me: error: Cannot link with the LDAP library" >&2;} + { (exit 1); exit 1; }; } +fi + +ldap_libs="$LIBS" + + +# This part should appear unchanged in every module configure.ac +PROGNAME="module" + +MOD_CC="@ELLCC@" + +MODARCHDIR="\$(shell @ELLCC@ --mod-archdir)" + +MAKE_DOCFILE="\$(MODARCHDIR)/make-docfile" + +MODCFLAGS="\$(CFLAGS) --mode=compile --mod-output=\$@ -I\$(MODARCHDIR)/include" + +INSTALLPATH="\$(shell @ELLCC@ --mod-site-location)" + +MOD_INSTALL_PROGRAM="@INSTALL_PROGRAM@" + +OBJECT_TO_BUILD="\$(MODNAME).ell" + + + ac_config_files="$ac_config_files Makefile.in Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed + + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# NLS nuisances. +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && + { $as_unset LANG || test "${LANG+set}" != set; } || + { LANG=C; export LANG; } +(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && + { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || + { LC_ALL=C; export LC_ALL; } +(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && + { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || + { LC_TIME=C; export LC_TIME; } +(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && + { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || + { LC_CTYPE=C; export LC_CTYPE; } +(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && + { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || + { LANGUAGE=C; export LANGUAGE; } +(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && + { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || + { LC_COLLATE=C; export LC_COLLATE; } +(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && + { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || + { LC_NUMERIC=C; export LC_NUMERIC; } +(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && + { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || + { LC_MESSAGES=C; export LC_MESSAGES; } + + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by LDAP module $as_me 1.0, which was +generated by GNU Autoconf 2.53b. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +LDAP module config.status 1.0 +configured by $0, generated by GNU Autoconf 2.53b, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" + exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +_ACEOF + + + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile.in" ) CONFIG_FILES="$CONFIG_FILES Makefile.in" ;; + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@ELLCC@,$ELLCC,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@ldap_libs@,$ldap_libs,;t t +s,@PROGNAME@,$PROGNAME,;t t +s,@MOD_CC@,$MOD_CC,;t t +s,@MODARCHDIR@,$MODARCHDIR,;t t +s,@MAKE_DOCFILE@,$MAKE_DOCFILE,;t t +s,@MODCFLAGS@,$MODCFLAGS,;t t +s,@INSTALLPATH@,$INSTALLPATH,;t t +s,@MOD_INSTALL_PROGRAM@,$MOD_INSTALL_PROGRAM,;t t +s,@OBJECT_TO_BUILD@,$OBJECT_TO_BUILD,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + exec 5>/dev/null + $SHELL $CONFIG_STATUS || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + diff --text -u /dev/null 'xemacs-21.5.10/modules/ldap/configure.ac' Index: ././modules/ldap/configure.ac --- ././modules/ldap/configure.ac Thu Jan 1 09:00:00 1970 +++ ././modules/ldap/configure.ac Mon Nov 18 15:52:32 2002 @@ -0,0 +1,48 @@ +# Process this file with autoconf to produce a configure script. +# This is only used for independent module building. +AC_INIT([LDAP module], [1.0], [xemacs-beta@xemacs.org]) +AC_PREREQ(2.53) +AC_REVISION($Revision: 1.2 $) +AC_COPYRIGHT([Configuration script for the LDAP module. +Copyright (C) 2002 Jerry James. + +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 2, 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; see the file COPYING. If not, write to the Free +Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA.]) + +AC_CONFIG_SRCDIR([eldap.c]) + +m4_include([../common/configure-pre.ac]) + +# Find the LDAP headers and libraries +have_ldap="yes" +AC_CHECK_HEADERS([ldap.h lber.h], , [have_ldap="no"]) +AS_IF([test "$have_ldap" = "yes"], + [AC_CHECK_LIB([ldap], [ldap_search], , [have_ldap="no"; LIBS="$LIBS -llber"], + [-llber]) + test "$have_ldap" = "no" && { + AC_CHECK_LIB([ldap], [ldap_open], [have_ldap="yes"], [LIBS="$LIBS -lkrb"], + [-lkrb]) } + test "$have_ldap" = "no" && { + AC_CHECK_LIB([ldap], [ldap_open], [have_ldap="yes"], [LIBS="$LIBS -ldes"], + [-ldes]) }], + [AS_ERROR([Cannot find the LDAP header file])]) +AS_IF([test "$have_ldap" = "yes"], + [AC_CHECK_FUNCS([ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result])], + [AS_ERROR([Cannot link with the LDAP library])]) +AC_SUBST(ldap_libs, "$LIBS") + +m4_include([../common/configure-post.ac]) diff --text -u 'xemacs-21.5.9/modules/ldap/eldap.c' 'xemacs-21.5.10/modules/ldap/eldap.c' Index: ./modules/ldap/eldap.c --- ./modules/ldap/eldap.c Fri Apr 13 03:22:36 2001 +++ ./modules/ldap/eldap.c Wed Sep 11 00:27:14 2002 @@ -20,62 +20,193 @@ /* Synched up with: Not in FSF. */ -/* Author: Oscar Figueiredo */ +/* Author: Oscar Figueiredo with lots of support from Hrvoje Niksic */ /* This file provides lisp primitives for access to an LDAP library conforming to the API defined in RFC 1823. It has been tested with: - UMich LDAP 3.3 (http://www.umich.edu/~dirsvcs/ldap/) - - Netscape's LDAP SDK 1.0 (http://developer.netscape.com) */ + - OpenLDAP 1.2 (http://www.openldap.org/) + - Netscape's LDAP SDK (http://developer.netscape.com/) */ -#include -#if defined (HAVE_LDAP) -/* The entire file is within this conditional */ +#include +#include "lisp.h" +#include "opaque.h" +#include "sysdep.h" +#include "buffer.h" +#include "process.h" /* for report_process_error */ -#include "eldap.h" -#include -#include +#include -#ifdef HAVE_NS_LDAP -#define HAVE_LDAP_SET_OPTION 1 -#define HAVE_LDAP_GET_ERRNO 1 -#else -#undef HAVE_LDAP_SET_OPTION -#undef HAVE_LDAP_GET_ERRNO -#endif +#include "eldap.h" +static Fixnum ldap_default_port; static Lisp_Object Vldap_default_base; -static Lisp_Object Vldap_default_host; -/* ldap-search-internal plist keywords */ -static Lisp_Object Qhost, Qfilter, Qattributes, Qattrsonly, Qbase, Qscope, - Qauth, Qbinddn, Qpasswd, Qderef, Qtimelimit, Qsizelimit; +static Lisp_Object Qeldap; + +/* Needed by the lrecord definition */ +Lisp_Object Qldapp; + +/* ldap-open plist keywords */ +static Lisp_Object Qport, Qauth, Qbinddn, Qpasswd, Qderef, Qtimelimit, Qsizelimit; /* Search scope limits */ static Lisp_Object Qbase, Qonelevel, Qsubtree; /* Authentication methods */ -#ifdef LDAP_AUTH_KRBV41 -static Lisp_Object Qkrbv41; -#endif -#ifdef LDAP_AUTH_KRBV42 -static Lisp_Object Qkrbv42; -#endif +static Lisp_Object Qkrbv41, Qkrbv42; /* Deref policy */ static Lisp_Object Qnever, Qalways, Qfind; +/* Modification types (Qdelete is defined in general.c) */ +static Lisp_Object Qadd, Qreplace; + + +/************************************************************************/ +/* Utility Functions */ +/************************************************************************/ + +static void +signal_ldap_error (LDAP *ld, LDAPMessage *res, int ldap_err) +{ + if (ldap_err <= 0) + { +#if defined HAVE_LDAP_PARSE_RESULT + int err; + ldap_err = ldap_parse_result (ld, res, + &err, + NULL, NULL, NULL, NULL, 0); + if (ldap_err == LDAP_SUCCESS) + ldap_err = err; +#elif defined HAVE_LDAP_GET_LDERRNO + ldap_err = ldap_get_lderrno (ld, NULL, NULL); +#elif defined HAVE_LDAP_RESULT2ERROR + ldap_err = ldap_result2error (ld, res, 0); +#else + ldap_err = ld->ld_errno; +#endif + } + invalid_operation ("LDAP error", + build_string (ldap_err2string (ldap_err))); +} + + +/************************************************************************/ +/* ldap lrecord basic functions */ +/************************************************************************/ + +static Lisp_Object +make_ldap (Lisp_LDAP *ldap) +{ + return wrap_ldap (ldap); +} + +#ifdef USE_KKCC +static const struct lrecord_description ldap_description [] = { + { XD_LISP_OBJECT, offsetof (struct Lisp_LDAP, host) }, + { XD_END } +}; +#endif /* USE_KKCC */ + +static Lisp_Object +mark_ldap (Lisp_Object obj) +{ + return XLDAP (obj)->host; +} + +static void +print_ldap (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) +{ + Lisp_LDAP *ldap = XLDAP (obj); -DEFUN ("ldap-search-internal", Fldap_search_internal, 1, 1, 0, /* -Perform a search on a LDAP server. -SEARCH-PLIST is a property list describing the search request. + if (print_readably) + printing_unreadable_object ("#", XSTRING_DATA (ldap->host)); + + write_fmt_string_lisp (printcharfun, "#host); + if (!ldap->ld) + write_c_string (printcharfun,"(dead) "); + write_fmt_string (printcharfun, " 0x%lx>", (long)ldap); +} + +static Lisp_LDAP * +allocate_ldap (void) +{ + Lisp_LDAP *ldap = alloc_lcrecord_type (Lisp_LDAP, &lrecord_ldap); + + ldap->ld = NULL; + ldap->host = Qnil; + return ldap; +} + +static void +finalize_ldap (void *header, int for_disksave) +{ + Lisp_LDAP *ldap = (Lisp_LDAP *) header; + + if (for_disksave) + invalid_operation ("Can't dump an emacs containing LDAP objects", + make_ldap (ldap)); + + if (ldap->ld) + ldap_unbind (ldap->ld); + ldap->ld = NULL; +} + +#ifdef USE_KKCC +DEFINE_LRECORD_IMPLEMENTATION ("ldap", ldap, + 0, /*dumpable-flag*/ + mark_ldap, print_ldap, finalize_ldap, + NULL, NULL, ldap_description, Lisp_LDAP); +#else /* not USE_KKCC */ +DEFINE_LRECORD_IMPLEMENTATION ("ldap", ldap, + mark_ldap, print_ldap, finalize_ldap, + NULL, NULL, 0, Lisp_LDAP); +#endif /* not USE_KKCC */ + + + +/************************************************************************/ +/* Basic ldap accessors */ +/************************************************************************/ + +/* ###autoload */ +DEFUN ("ldapp", Fldapp, 1, 1, 0, /* +Return t if OBJECT is a LDAP connection. +*/ + (object)) +{ + return LDAPP (object) ? Qt : Qnil; +} + +DEFUN ("ldap-host", Fldap_host, 1, 1, 0, /* +Return the server host of the connection LDAP, as a string. +*/ + (ldap)) +{ + CHECK_LDAP (ldap); + return (XLDAP (ldap))->host; +} + +DEFUN ("ldap-live-p", Fldap_live_p, 1, 1, 0, /* +Return t if LDAP is an active LDAP connection. +*/ + (ldap)) +{ + CHECK_LDAP (ldap); + return (XLDAP (ldap))->ld ? Qt : Qnil; +} + +/************************************************************************/ +/* Opening/Closing a LDAP connection */ +/************************************************************************/ + + +/* ###autoload */ +DEFUN ("ldap-open", Fldap_open, 1, 2, 0, /* +Open a LDAP connection to HOST. +PLIST is a plist containing additional parameters for the connection. Valid keys in that list are: - `host' is a string naming one or more (blank separated) LDAP servers to -to try to connect to. Each host name may optionally be of the form host:port. - `filter' is a filter string for the search as described in RFC 1558 - `attributes' is a list of strings indicating which attributes to retrieve -for each matching entry. If nil return all available attributes. - `attrsonly' if non-nil indicates that only the attributes are retrieved, not -the associated values. - `base' is the base for the search as described in RFC 1779. - `scope' is one of the three symbols `subtree', `base' or `onelevel'. + `port' the TCP port to use for the connection if different from +`ldap-default-port'. `auth' is the authentication method to use, possible values depend on the LDAP library XEmacs was compiled with: `simple', `krbv41' and `krbv42'. `binddn' is the distinguished name of the user to bind as (in RFC 1779 syntax). @@ -83,364 +214,643 @@ `deref' is one of the symbols `never', `always', `search' or `find'. `timelimit' is the timeout limit for the connection in seconds. `sizelimit' is the maximum number of matches to return. -The function returns a list of matching entries. Each entry is itself -an alist of attribute/values. */ - (search_plist)) + (host, plist)) { - /* This function calls lisp */ - - /* Vars for query */ + /* This function can GC */ + Lisp_LDAP *ldap; LDAP *ld; - LDAPMessage *res, *e; - BerElement *ptr; - char *a; - int i, rc, err; - - char *ldap_host = NULL; - char *ldap_filter = NULL; - char **ldap_attributes = NULL; - int ldap_attrsonly = 0; - char *ldap_base = NULL; - int ldap_scope = LDAP_SCOPE_SUBTREE; + int ldap_port = 0; int ldap_auth = LDAP_AUTH_SIMPLE; char *ldap_binddn = NULL; char *ldap_passwd = NULL; int ldap_deref = LDAP_DEREF_NEVER; int ldap_timelimit = 0; int ldap_sizelimit = 0; + int err; - char **vals = NULL; - int matches; + CHECK_STRING (host); - Lisp_Object list, entry, result, keyword, value; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; + { + EXTERNAL_PROPERTY_LIST_LOOP_3 (keyword, value, plist) + { + /* TCP Port */ + if (EQ (keyword, Qport)) + { + CHECK_INT (value); + ldap_port = XINT (value); + } + /* Authentication method */ + if (EQ (keyword, Qauth)) + { + if (EQ (value, Qsimple)) + ldap_auth = LDAP_AUTH_SIMPLE; +#ifdef LDAP_AUTH_KRBV41 + else if (EQ (value, Qkrbv41)) + ldap_auth = LDAP_AUTH_KRBV41; +#endif +#ifdef LDAP_AUTH_KRBV42 + else if (EQ (value, Qkrbv42)) + ldap_auth = LDAP_AUTH_KRBV42; +#endif + else + invalid_constant ("Invalid authentication method", value); + } + /* Bind DN */ + else if (EQ (keyword, Qbinddn)) + { + CHECK_STRING (value); + LISP_STRING_TO_EXTERNAL (value, ldap_binddn, Qnative); + } + /* Password */ + else if (EQ (keyword, Qpasswd)) + { + CHECK_STRING (value); + LISP_STRING_TO_EXTERNAL (value, ldap_passwd, Qnative); + } + /* Deref */ + else if (EQ (keyword, Qderef)) + { + if (EQ (value, Qnever)) + ldap_deref = LDAP_DEREF_NEVER; + else if (EQ (value, Qsearch)) + ldap_deref = LDAP_DEREF_SEARCHING; + else if (EQ (value, Qfind)) + ldap_deref = LDAP_DEREF_FINDING; + else if (EQ (value, Qalways)) + ldap_deref = LDAP_DEREF_ALWAYS; + else + invalid_constant ("Invalid deref value", value); + } + /* Timelimit */ + else if (EQ (keyword, Qtimelimit)) + { + CHECK_INT (value); + ldap_timelimit = XINT (value); + } + /* Sizelimit */ + else if (EQ (keyword, Qsizelimit)) + { + CHECK_INT (value); + ldap_sizelimit = XINT (value); + } + } + } - list = entry = result = keyword = value = Qnil; - GCPRO5 (list, entry, result, keyword, value); + if (ldap_port == 0) + { + ldap_port = ldap_default_port; + } + /* Connect to the server and bind */ + slow_down_interrupts (); + ld = ldap_open ((char *) XSTRING_DATA (host), ldap_port); + speed_up_interrupts (); + + if (ld == NULL ) + report_process_error ("Failed connecting to host", host); + +#ifdef HAVE_LDAP_SET_OPTION + if ((err = ldap_set_option (ld, LDAP_OPT_DEREF, + (void *)&ldap_deref)) != LDAP_SUCCESS) + signal_ldap_error (ld, NULL, err); + if ((err = ldap_set_option (ld, LDAP_OPT_TIMELIMIT, + (void *)&ldap_timelimit)) != LDAP_SUCCESS) + signal_ldap_error (ld, NULL, err); + if ((err = ldap_set_option (ld, LDAP_OPT_SIZELIMIT, + (void *)&ldap_sizelimit)) != LDAP_SUCCESS) + signal_ldap_error (ld, NULL, err); + if ((err = ldap_set_option (ld, LDAP_OPT_REFERRALS, + LDAP_OPT_ON)) != LDAP_SUCCESS) + signal_ldap_error (ld, NULL, err); + if ((err = ldap_set_option (ld, LDAP_OPT_RESTART, + LDAP_OPT_ON)) != LDAP_SUCCESS) + signal_ldap_error (ld, NULL, err); +#else /* not HAVE_LDAP_SET_OPTION */ + ld->ld_deref = ldap_deref; + ld->ld_timelimit = ldap_timelimit; + ld->ld_sizelimit = ldap_sizelimit; +#ifdef LDAP_REFERRALS + ld->ld_options = LDAP_OPT_REFERRALS; +#else /* not LDAP_REFERRALS */ + ld->ld_options = 0; +#endif /* not LDAP_REFERRALS */ + /* XEmacs uses interrupts (SIGIO,SIGALRM), LDAP calls need to ignore them */ + ld->ld_options |= LDAP_OPT_RESTART; +#endif /* not HAVE_LDAP_SET_OPTION */ - EXTERNAL_PROPERTY_LIST_LOOP(list, keyword, value, search_plist) + err = ldap_bind_s (ld, ldap_binddn, ldap_passwd, ldap_auth); + if (err != LDAP_SUCCESS) { - /* Host */ - if (EQ (keyword, Qhost)) - { - CHECK_STRING (value); - ldap_host = alloca (XSTRING_LENGTH (value) + 1); - strcpy (ldap_host, (char *)XSTRING_DATA (value)); - } - /* Filter */ - else if (EQ (keyword, Qfilter)) - { - CHECK_STRING (value); - ldap_filter = alloca (XSTRING_LENGTH (value) + 1); - strcpy (ldap_filter, (char *)XSTRING_DATA (value)); - } - /* Attributes */ - else if (EQ (keyword, Qattributes)) - { - if (! NILP (value)) - { - Lisp_Object attr_left = value; - struct gcpro ngcpro1; + Ibyte *interrmess; + EXTERNAL_TO_C_STRING (ldap_err2string (err), interrmess, Qnative); + signal_error (Qprocess_error, "Failed binding to the server", + build_intstring (interrmess)); + } - NGCPRO1 (attr_left); - CHECK_CONS (value); + ldap = allocate_ldap (); + ldap->ld = ld; + ldap->host = host; - ldap_attributes = alloca ((XINT (Flength (value)) + 1)*sizeof (char *)); + return make_ldap (ldap); +} - for (i=0; !NILP (attr_left); i++) { - CHECK_STRING (XCAR (attr_left)); - ldap_attributes[i] = alloca (XSTRING_LENGTH (XCAR (attr_left)) + 1); - strcpy(ldap_attributes[i], - (char *)(XSTRING_DATA( XCAR (attr_left)))); - attr_left = XCDR (attr_left); - } - ldap_attributes[i] = NULL; - NUNGCPRO; - } - } - /* Attributes Only */ - else if (EQ (keyword, Qattrsonly)) - { - CHECK_SYMBOL (value); - ldap_attrsonly = NILP (value) ? 0 : 1; - } - /* Base */ - else if (EQ (keyword, Qbase)) - { - if (!NILP (value)) - { - CHECK_STRING (value); - ldap_base = alloca (XSTRING_LENGTH (value) + 1); - strcpy (ldap_base, (char *)XSTRING_DATA (value)); - } - } - /* Scope */ - else if (EQ (keyword, Qscope)) - { - CHECK_SYMBOL (value); - if (EQ (value, Qbase)) - ldap_scope = LDAP_SCOPE_BASE; - else if (EQ (value, Qonelevel)) - ldap_scope = LDAP_SCOPE_ONELEVEL; - else if (EQ (value, Qsubtree)) - ldap_scope = LDAP_SCOPE_SUBTREE; - else - signal_simple_error ("Invalid scope", value); - } - /* Authentication method */ - else if (EQ (keyword, Qauth)) - { - CHECK_SYMBOL (value); - if (EQ (value, Qsimple)) - ldap_auth = LDAP_AUTH_SIMPLE; -#ifdef LDAP_AUTH_KRBV41 - else if (EQ (value, Qkrbv41)) - ldap_auth = LDAP_AUTH_KRBV41; -#endif -#ifdef LDAP_AUTH_KRBV42 - else if (EQ (value, Qkrbv42)) - ldap_auth = LDAP_AUTH_KRBV42; -#endif - else - signal_simple_error ("Invalid authentication method", value); - } - /* Bind DN */ - else if (EQ (keyword, Qbinddn)) - { - if (!NILP (value)) - { - CHECK_STRING (value); - ldap_binddn = alloca (XSTRING_LENGTH (value) + 1); - strcpy (ldap_binddn, (char *)XSTRING_DATA (value)); - } - } - /* Password */ - else if (EQ (keyword, Qpasswd)) - { - if (!NILP (value)) - { - CHECK_STRING (value); - ldap_passwd = alloca (XSTRING_LENGTH (value) + 1); - strcpy (ldap_passwd, (char *)XSTRING_DATA (value)); - } - } - /* Deref */ - else if (EQ (keyword, Qderef)) - { - CHECK_SYMBOL (value); - if (EQ (value, Qnever)) - ldap_deref = LDAP_DEREF_NEVER; - else if (EQ (value, Qsearch)) - ldap_deref = LDAP_DEREF_SEARCHING; - else if (EQ (value, Qfind)) - ldap_deref = LDAP_DEREF_FINDING; - else if (EQ (value, Qalways)) - ldap_deref = LDAP_DEREF_ALWAYS; - else - signal_simple_error ("Invalid deref value", value); - } - /* Timelimit */ - else if (EQ (keyword, Qtimelimit)) - { - if (!NILP (value)) - { - CHECK_INT (value); - ldap_timelimit = XINT (value); - } - } - /* Sizelimit */ - else if (EQ (keyword, Qsizelimit)) - { - if (!NILP (value)) - { - CHECK_INT (value); - ldap_sizelimit = XINT (value); - } - } - } +DEFUN ("ldap-close", Fldap_close, 1, 1, 0, /* +Close an LDAP connection. +*/ + (ldap)) +{ + Lisp_LDAP *lldap; + CHECK_LIVE_LDAP (ldap); + lldap = XLDAP (ldap); + ldap_unbind (lldap->ld); + lldap->ld = NULL; + return Qnil; +} + + + +/************************************************************************/ +/* Working on a LDAP connection */ +/************************************************************************/ +struct ldap_unwind_struct +{ + LDAPMessage *res; + struct berval **vals; +}; - /* Use ldap-default-base if no default base was given */ - if (ldap_base == NULL && !NILP (Vldap_default_base)) +static Lisp_Object +ldap_search_unwind (Lisp_Object unwind_obj) +{ + struct ldap_unwind_struct *unwind = + (struct ldap_unwind_struct *) get_opaque_ptr (unwind_obj); + if (unwind->res) + ldap_msgfree (unwind->res); + if (unwind->vals) + ldap_value_free_len (unwind->vals); + return Qnil; +} + +/* The following function is called `ldap-search-basic' instead of */ +/* plain `ldap-search' to maintain compatibility with the XEmacs 21.1 */ +/* API where `ldap-search' was the name of the high-level search */ +/* function */ + +DEFUN ("ldap-search-basic", Fldap_search_basic, 2, 8, 0, /* +Perform a search on an open LDAP connection. +LDAP is an LDAP connection object created with `ldap-open'. +FILTER is a filter string for the search as described in RFC 1558. +BASE is the distinguished name at which to start the search. +SCOPE is one of the symbols `base', `onelevel' or `subtree' indicating +the scope of the search. +ATTRS is a list of strings indicating which attributes to retrieve + for each matching entry. If nil return all available attributes. +If ATTRSONLY is non-nil then only the attributes are retrieved, not +the associated values. +If WITHDN is non-nil each entry in the result will be prepended with +its distinguished name DN. +If VERBOSE is non-nil progress messages will be echoed. +The function returns a list of matching entries. Each entry is itself +an alist of attribute/value pairs optionally preceded by the DN of the +entry according to the value of WITHDN. +*/ + (ldap, filter, base, scope, attrs, attrsonly, withdn, verbose)) +{ + /* This function can GC */ + + /* Vars for query */ + LDAP *ld; + LDAPMessage *e; + BerElement *ptr; + char *a, *dn; + int i, rc; + int matches; + struct ldap_unwind_struct unwind; + + int ldap_scope = LDAP_SCOPE_SUBTREE; + char **ldap_attributes = NULL; + + int speccount = specpdl_depth (); + + Lisp_Object list = Qnil; + Lisp_Object entry = Qnil; + Lisp_Object result = Qnil; + struct gcpro gcpro1, gcpro2, gcpro3; + + GCPRO3 (list, entry, result); + + unwind.res = NULL; + unwind.vals = NULL; + + /* Do all the parameter checking */ + CHECK_LIVE_LDAP (ldap); + ld = XLDAP (ldap)->ld; + + /* Filter */ + CHECK_STRING (filter); + + /* Search base */ + if (NILP (base)) { - CHECK_STRING (Vldap_default_base); - ldap_base = alloca (XSTRING_LENGTH (Vldap_default_base) + 1); - strcpy (ldap_base, (char *)XSTRING_DATA (Vldap_default_base)); + base = Vldap_default_base; } - - /* Use ldap-default-host if no host was given */ - if (ldap_host == NULL && !NILP (Vldap_default_host)) + if (!NILP (base)) { - CHECK_STRING (Vldap_default_host); - ldap_host = alloca (XSTRING_LENGTH (Vldap_default_host) + 1); - strcpy (ldap_host, (char *)XSTRING_DATA (Vldap_default_host)); + CHECK_STRING (base); } - if (ldap_filter == NULL) - error ("Empty search filter"); + /* Search scope */ + if (!NILP (scope)) + { + if (EQ (scope, Qbase)) + ldap_scope = LDAP_SCOPE_BASE; + else if (EQ (scope, Qonelevel)) + ldap_scope = LDAP_SCOPE_ONELEVEL; + else if (EQ (scope, Qsubtree)) + ldap_scope = LDAP_SCOPE_SUBTREE; + else + invalid_constant ("Invalid scope", scope); + } - /* Garbage collect before connecting (if using UMich lib). - This is ugly, I know, but without this, the UMich LDAP library 3.3 - frequently reports "Can't contact LDAP server". I really need to - check what happens inside that lib. Anyway this should be harmless to - XEmacs and makes things work. */ -#if defined (HAVE_UMICH_LDAP) - garbage_collect_1 (); -#endif + /* Attributes to search */ + if (!NILP (attrs)) + { + CHECK_CONS (attrs); + ldap_attributes = alloca_array (char *, 1 + XINT (Flength (attrs))); - /* Connect to the server and bind */ - message ("Connecting to %s...", ldap_host); - if ( (ld = ldap_open (ldap_host, LDAP_PORT)) == NULL ) - signal_simple_error ("Failed connecting to host", - build_string (ldap_host)); - -#if HAVE_LDAP_SET_OPTION - if (ldap_set_option (ld, LDAP_OPT_DEREF, (void *)&ldap_deref) != LDAP_SUCCESS) - error ("Failed to set deref option"); - if (ldap_set_option (ld, LDAP_OPT_TIMELIMIT, (void *)&ldap_timelimit) != LDAP_SUCCESS) - error ("Failed to set timelimit option"); - if (ldap_set_option (ld, LDAP_OPT_SIZELIMIT, (void *)&ldap_sizelimit) != LDAP_SUCCESS) - error ("Failed to set sizelimit option"); - if (ldap_set_option (ld, LDAP_OPT_REFERRALS, LDAP_OPT_ON) != LDAP_SUCCESS) - error ("Failed to set referral option"); -#else /* HAVE_LDAP_SET_OPTION */ - ld->ld_deref = ldap_deref; - ld->ld_timelimit = ldap_timelimit; - ld->ld_sizelimit = ldap_sizelimit; -#ifdef LDAP_REFERRALS - ld->ld_options = LDAP_OPT_REFERRALS; -#else /* LDAP_REFERRALS */ - ld->ld_options = 0; -#endif /* LDAP_REFERRALS */ -#endif /* HAVE_LDAP_SET_OPTION */ + i = 0; + EXTERNAL_LIST_LOOP (attrs, attrs) + { + Lisp_Object current = XCAR (attrs); + CHECK_STRING (current); + LISP_STRING_TO_EXTERNAL (current, ldap_attributes[i], Qnative); + ++i; + } + ldap_attributes[i] = NULL; + } - message ("Binding to %s...", ldap_host); - if ( (err = (ldap_bind_s (ld, ldap_binddn, ldap_passwd, ldap_auth ))) != LDAP_SUCCESS ) - signal_simple_error ("Failed binding to the server", - build_string (ldap_err2string (err))); + /* Attributes only ? */ + CHECK_SYMBOL (attrsonly); /* Perform the search */ - message ("Searching with LDAP on %s...", ldap_host); - if ( ldap_search (ld, ldap_base, ldap_scope, ldap_filter, - ldap_attributes, ldap_attrsonly) == -1) - { - ldap_unbind (ld); -#if HAVE_LDAP_GET_ERRNO - signal_simple_error ("Error during LDAP search", - build_string (ldap_err2string (ldap_get_lderrno (ld, NULL, NULL)))); -#else - signal_simple_error ("Error during LDAP search", - build_string (ldap_err2string (ld->ld_errno))); -#endif + if (ldap_search (ld, + NILP (base) ? (char *) "" : (char *) XSTRING_DATA (base), + ldap_scope, + NILP (filter) ? (char *) "" : (char *) XSTRING_DATA (filter), + ldap_attributes, + NILP (attrsonly) ? 0 : 1) + == -1) + { + signal_ldap_error (ld, NULL, 0); } + /* Ensure we don't exit without cleaning up */ + record_unwind_protect (ldap_search_unwind, + make_opaque_ptr (&unwind)); + /* Build the results list */ matches = 0; - while ( (rc = ldap_result (ld, LDAP_RES_ANY, 0, NULL, &res)) - == LDAP_RES_SEARCH_ENTRY ) + rc = ldap_result (ld, LDAP_RES_ANY, 0, NULL, &unwind.res); + + while (rc == LDAP_RES_SEARCH_ENTRY) { + QUIT; matches ++; - e = ldap_first_entry (ld, res); - message ("Parsing results... %d", matches); + e = ldap_first_entry (ld, unwind.res); + /* #### This call to message() is pretty fascist, because it + destroys the current echo area contents, even when invoked + from Lisp. It should use echo_area_message() instead, and + restore the old echo area contents later. */ + if (! NILP (verbose)) + message ("Parsing ldap results... %d", matches); entry = Qnil; + /* Get the DN if required */ + if (! NILP (withdn)) + { + dn = ldap_get_dn (ld, e); + if (dn == NULL) + signal_ldap_error (ld, e, 0); + entry = Fcons (build_ext_string (dn, Qnative), Qnil); + } for (a= ldap_first_attribute (ld, e, &ptr); a != NULL; - a= ldap_next_attribute (ld, e, ptr) ) + a = ldap_next_attribute (ld, e, ptr) ) { - list = Fcons (build_string (a), Qnil); - vals = ldap_get_values (ld, e, a); - if (vals != NULL) + list = Fcons (build_ext_string (a, Qnative), Qnil); + unwind.vals = ldap_get_values_len (ld, e, a); + if (unwind.vals != NULL) { - for (i=0; vals[i]!=NULL; i++) + for (i = 0; unwind.vals[i] != NULL; i++) { - list = Fcons (build_string (vals[i]), + list = Fcons (make_ext_string ((Extbyte *) unwind.vals[i]->bv_val, + unwind.vals[i]->bv_len, + Qnative), list); } } entry = Fcons (Fnreverse (list), entry); - ldap_value_free (vals); + ldap_value_free_len (unwind.vals); + unwind.vals = NULL; } result = Fcons (Fnreverse (entry), result); - ldap_msgfree (res); + ldap_msgfree (unwind.res); + unwind.res = NULL; + + rc = ldap_result (ld, LDAP_RES_ANY, 0, NULL, &(unwind.res)); } - if (rc == -1) - { -#if HAVE_LDAP_GET_ERRNO - signal_simple_error ("Error retrieving result", - build_string (ldap_err2string (ldap_get_lderrno (ld, NULL, NULL)))); +#if defined HAVE_LDAP_PARSE_RESULT + { + int rc2 = ldap_parse_result (ld, unwind.res, + &rc, + NULL, NULL, NULL, NULL, 0); + if (rc2 != LDAP_SUCCESS) + rc = rc2; + } #else - signal_simple_error ("Error retrieving result", - build_string (ldap_err2string (ld->ld_errno))); + if (rc == 0) + signal_ldap_error (ld, NULL, LDAP_TIMELIMIT_EXCEEDED); + + if (rc == -1) + signal_ldap_error (ld, unwind.res, (unwind.res==NULL) ? ld->ld_errno : 0); + +#if defined HAVE_LDAP_RESULT2ERROR + rc = ldap_result2error (ld, unwind.res, 0); #endif - } +#endif + + if (rc != LDAP_SUCCESS) + signal_ldap_error (ld, NULL, rc); + + ldap_msgfree (unwind.res); + unwind.res = (LDAPMessage *)NULL; - if ((rc = ldap_result2error (ld, res, 0)) != LDAP_SUCCESS) + /* #### See above for calling message(). */ + if (! NILP (verbose)) + message ("Parsing ldap results... done"); + + unbind_to (speccount); + UNGCPRO; + return Fnreverse (result); +} + +DEFUN ("ldap-add", Fldap_add, 3, 3, 0, /* +Add an entry to an LDAP directory. +LDAP is an LDAP connection object created with `ldap-open'. +DN is the distinguished name of the entry to add. +ENTRY is an entry specification, i.e., a list of cons cells +containing attribute/value string pairs. +*/ + (ldap, dn, entry)) +{ + LDAP *ld; + LDAPMod *ldap_mods, **ldap_mods_ptrs; + struct berval *bervals; + int rc; + int i, j; + Elemcount len; + + Lisp_Object current = Qnil; + Lisp_Object values = Qnil; + struct gcpro gcpro1, gcpro2; + + GCPRO2 (current, values); + + /* Do all the parameter checking */ + CHECK_LIVE_LDAP (ldap); + ld = XLDAP (ldap)->ld; + + /* Check the DN */ + CHECK_STRING (dn); + + /* Check the entry */ + CHECK_CONS (entry); + if (NILP (entry)) + invalid_operation ("Cannot add void entry", entry); + + /* Build the ldap_mods array */ + len = (Elemcount) XINT (Flength (entry)); + ldap_mods = alloca_array (LDAPMod, len); + ldap_mods_ptrs = alloca_array (LDAPMod *, 1 + len); + i = 0; + EXTERNAL_LIST_LOOP (entry, entry) { -#if HAVE_LDAP_GET_ERRNO - signal_simple_error ("Error on result", - build_string (ldap_err2string (ldap_get_lderrno (ld, NULL, NULL)))); -#else - signal_simple_error ("Error on result", - build_string (ldap_err2string (ld->ld_errno))); -#endif + current = XCAR (entry); + CHECK_CONS (current); + CHECK_STRING (XCAR (current)); + ldap_mods_ptrs[i] = &(ldap_mods[i]); + LISP_STRING_TO_EXTERNAL (XCAR (current), ldap_mods[i].mod_type, Qnative); + ldap_mods[i].mod_op = LDAP_MOD_ADD | LDAP_MOD_BVALUES; + values = XCDR (current); + if (CONSP (values)) + { + len = (Elemcount) XINT (Flength (values)); + bervals = alloca_array (struct berval, len); + ldap_mods[i].mod_vals.modv_bvals = + alloca_array (struct berval *, 1 + len); + j = 0; + EXTERNAL_LIST_LOOP (values, values) + { + current = XCAR (values); + CHECK_STRING (current); + ldap_mods[i].mod_vals.modv_bvals[j] = &(bervals[j]); + TO_EXTERNAL_FORMAT (LISP_STRING, current, + ALLOCA, (bervals[j].bv_val, + bervals[j].bv_len), + Qnative); + j++; + } + ldap_mods[i].mod_vals.modv_bvals[j] = NULL; + } + else + { + CHECK_STRING (values); + bervals = alloca_array (struct berval, 1); + ldap_mods[i].mod_vals.modv_bvals = alloca_array (struct berval *, 2); + ldap_mods[i].mod_vals.modv_bvals[0] = &(bervals[0]); + TO_EXTERNAL_FORMAT (LISP_STRING, values, + ALLOCA, (bervals[0].bv_val, + bervals[0].bv_len), + Qnative); + ldap_mods[i].mod_vals.modv_bvals[1] = NULL; + } + i++; } + ldap_mods_ptrs[i] = NULL; + rc = ldap_add_s (ld, (char *) XSTRING_DATA (dn), ldap_mods_ptrs); + if (rc != LDAP_SUCCESS) + signal_ldap_error (ld, NULL, rc); + + UNGCPRO; + return Qnil; +} - ldap_msgfree (res); - ldap_unbind (ld); - message ("Done."); +DEFUN ("ldap-modify", Fldap_modify, 3, 3, 0, /* +Add an entry to an LDAP directory. +LDAP is an LDAP connection object created with `ldap-open'. +DN is the distinguished name of the entry to modify. +MODS is a list of modifications to apply. +A modification is a list of the form (MOD-OP ATTR VALUE1 VALUE2 ...) +MOD-OP and ATTR are mandatory, VALUEs are optional depending on MOD-OP. +MOD-OP is the type of modification, one of the symbols `add', `delete' +or `replace'. ATTR is the LDAP attribute type to modify. +*/ + (ldap, dn, mods)) +{ + LDAP *ld; + LDAPMod *ldap_mods, **ldap_mods_ptrs; + struct berval *bervals; + int i, j, rc; + Lisp_Object mod_op; + Elemcount len; + + Lisp_Object current = Qnil; + Lisp_Object values = Qnil; + struct gcpro gcpro1, gcpro2; + + /* Do all the parameter checking */ + CHECK_LIVE_LDAP (ldap); + ld = XLDAP (ldap)->ld; + + /* Check the DN */ + CHECK_STRING (dn); + + /* Check the entry */ + CHECK_CONS (mods); + if (NILP (mods)) + return Qnil; + + /* Build the ldap_mods array */ + len = (Elemcount) XINT (Flength (mods)); + ldap_mods = alloca_array (LDAPMod, len); + ldap_mods_ptrs = alloca_array (LDAPMod *, 1 + len); + i = 0; - result = Fnreverse (result); - clear_message (); + GCPRO2 (current, values); + EXTERNAL_LIST_LOOP (mods, mods) + { + current = XCAR (mods); + CHECK_CONS (current); + CHECK_SYMBOL (XCAR (current)); + mod_op = XCAR (current); + ldap_mods_ptrs[i] = &(ldap_mods[i]); + ldap_mods[i].mod_op = LDAP_MOD_BVALUES; + if (EQ (mod_op, Qadd)) + ldap_mods[i].mod_op |= LDAP_MOD_ADD; + else if (EQ (mod_op, Qdelete)) + ldap_mods[i].mod_op |= LDAP_MOD_DELETE; + else if (EQ (mod_op, Qreplace)) + ldap_mods[i].mod_op |= LDAP_MOD_REPLACE; + else + invalid_constant ("Invalid LDAP modification type", mod_op); + current = XCDR (current); + CHECK_STRING (XCAR (current)); + LISP_STRING_TO_EXTERNAL (XCAR (current), ldap_mods[i].mod_type, Qnative); + values = XCDR (current); + len = (Elemcount) XINT (Flength (values)); + bervals = alloca_array (struct berval, len); + ldap_mods[i].mod_vals.modv_bvals = + alloca_array (struct berval *, 1 + len); + j = 0; + EXTERNAL_LIST_LOOP (values, values) + { + current = XCAR (values); + CHECK_STRING (current); + ldap_mods[i].mod_vals.modv_bvals[j] = &(bervals[j]); + TO_EXTERNAL_FORMAT (LISP_STRING, current, + ALLOCA, (bervals[j].bv_val, + bervals[j].bv_len), + Qnative); + j++; + } + ldap_mods[i].mod_vals.modv_bvals[j] = NULL; + i++; + } + ldap_mods_ptrs[i] = NULL; + rc = ldap_modify_s (ld, (char *) XSTRING_DATA (dn), ldap_mods_ptrs); + if (rc != LDAP_SUCCESS) + signal_ldap_error (ld, NULL, rc); UNGCPRO; - return result; + return Qnil; +} + + +DEFUN ("ldap-delete", Fldap_delete, 2, 2, 0, /* +Delete an entry to an LDAP directory. +LDAP is an LDAP connection object created with `ldap-open'. +DN is the distinguished name of the entry to delete. +*/ + (ldap, dn)) +{ + LDAP *ld; + int rc; + + /* Check parameters */ + CHECK_LIVE_LDAP (ldap); + ld = XLDAP (ldap)->ld; + CHECK_STRING (dn); + + rc = ldap_delete_s (ld, (char *) XSTRING_DATA (dn)); + if (rc != LDAP_SUCCESS) + signal_ldap_error (ld, NULL, rc); + + return Qnil; } void -syms_of_ldap (void) +syms_of_eldap (void) { - DEFSUBR(Fldap_search_internal); + INIT_LRECORD_IMPLEMENTATION (ldap); - defsymbol (&Qhost, "host"); - defsymbol (&Qfilter, "filter"); - defsymbol (&Qattributes, "attributes"); - defsymbol (&Qattrsonly, "attrsonly"); - defsymbol (&Qbase, "base"); - defsymbol (&Qscope, "scope"); - defsymbol (&Qauth, "auth"); - defsymbol (&Qbinddn, "binddn"); - defsymbol (&Qpasswd, "passwd"); - defsymbol (&Qderef, "deref"); - defsymbol (&Qtimelimit, "timelimit"); - defsymbol (&Qsizelimit, "sizelimit"); - defsymbol (&Qbase, "base"); - defsymbol (&Qonelevel, "onelevel"); - defsymbol (&Qsubtree, "subtree"); -#ifdef LDAP_AUTH_KRBV41 - defsymbol (&Qkrbv41, "krbv41"); -#endif -#ifdef LDAP_AUTH_KRBV42 - defsymbol (&Qkrbv42, "krbv42"); -#endif - defsymbol (&Qnever, "never"); - defsymbol (&Qalways, "always"); - defsymbol (&Qfind, "find"); + DEFSYMBOL (Qeldap); + DEFSYMBOL (Qldapp); + DEFSYMBOL (Qport); + DEFSYMBOL (Qauth); + DEFSYMBOL (Qbinddn); + DEFSYMBOL (Qpasswd); + DEFSYMBOL (Qderef); + DEFSYMBOL (Qtimelimit); + DEFSYMBOL (Qsizelimit); + DEFSYMBOL (Qbase); + DEFSYMBOL (Qonelevel); + DEFSYMBOL (Qsubtree); + DEFSYMBOL (Qkrbv41); + DEFSYMBOL (Qkrbv42); + DEFSYMBOL (Qnever); + DEFSYMBOL (Qalways); + DEFSYMBOL (Qfind); + DEFSYMBOL (Qadd); + DEFSYMBOL (Qreplace); + + DEFSUBR (Fldapp); + DEFSUBR (Fldap_host); + DEFSUBR (Fldap_live_p); + DEFSUBR (Fldap_open); + DEFSUBR (Fldap_close); + DEFSUBR (Fldap_search_basic); + DEFSUBR (Fldap_add); + DEFSUBR (Fldap_modify); + DEFSUBR (Fldap_delete); } void -vars_of_ldap (void) +vars_of_eldap (void) { - Fprovide (intern ("ldap-internal")); - DEFVAR_LISP ("ldap-default-host", &Vldap_default_host /* -Default LDAP host. + Fprovide (Qeldap); + + ldap_default_port = LDAP_PORT; + Vldap_default_base = Qnil; + + DEFVAR_INT ("ldap-default-port", &ldap_default_port /* +Default TCP port for LDAP connections. +Initialized from the LDAP library. Default value is 389. */ ); DEFVAR_LISP ("ldap-default-base", &Vldap_default_base /* @@ -450,8 +860,34 @@ Acme organization in the United States. */ ); - Vldap_default_host = Qnil; - Vldap_default_base = Qnil; } -#endif /* HAVE_LDAP */ +#ifdef HAVE_SHLIB +void +unload_eldap (void) +{ + /* Remove defined types */ + UNDEF_LRECORD_IMPLEMENTATION (ldap); + + /* Remove staticpro'ing of symbols */ + unstaticpro_nodump (&Qeldap); + unstaticpro_nodump (&Qldapp); + unstaticpro_nodump (&Qport); + unstaticpro_nodump (&Qauth); + unstaticpro_nodump (&Qbinddn); + unstaticpro_nodump (&Qpasswd); + unstaticpro_nodump (&Qderef); + unstaticpro_nodump (&Qtimelimit); + unstaticpro_nodump (&Qsizelimit); + unstaticpro_nodump (&Qbase); + unstaticpro_nodump (&Qonelevel); + unstaticpro_nodump (&Qsubtree); + unstaticpro_nodump (&Qkrbv41); + unstaticpro_nodump (&Qkrbv42); + unstaticpro_nodump (&Qnever); + unstaticpro_nodump (&Qalways); + unstaticpro_nodump (&Qfind); + unstaticpro_nodump (&Qadd); + unstaticpro_nodump (&Qreplace); +} +#endif /* HAVE_SHLIB */ diff --text -u 'xemacs-21.5.9/modules/ldap/eldap.h' 'xemacs-21.5.10/modules/ldap/eldap.h' Index: ./modules/ldap/eldap.h --- ./modules/ldap/eldap.h Tue Mar 17 15:52:27 1998 +++ ./modules/ldap/eldap.h Wed Sep 11 00:27:14 2002 @@ -18,22 +18,65 @@ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* Synched up with: Not in FSF. */ +#ifndef INCLUDED_eldap_h_ +#define INCLUDED_eldap_h_ -/* Author: Oscar Figueiredo */ +#include +#include +/* + * The following structure records pertinent information about a + * LDAP connection. + */ + +struct Lisp_LDAP +{ + /* lcrecord header */ + struct lcrecord_header header; + /* The LDAP connection handle used by the LDAP API */ + LDAP *ld; + /* Name of the host we connected to */ + Lisp_Object host; +}; +typedef struct Lisp_LDAP Lisp_LDAP; + + +DECLARE_LRECORD (ldap, Lisp_LDAP); +#define XLDAP(x) XRECORD (x, ldap, Lisp_LDAP) +#define wrap_ldap(p) wrap_record (p, ldap) +#define LDAPP(x) RECORDP (x, ldap) +#define CHECK_LDAP(x) CHECK_RECORD (x, ldap) +#define CONCHECK_LDAP(x) CONCHECK_RECORD (x, ldap) + +#define CHECK_LIVE_LDAP(ldap) do { \ + CHECK_LDAP (ldap); \ + if (!XLDAP (ldap)->ld) \ + invalid_operation ("Attempting to access closed LDAP connection", \ + ldap); \ +} while (0) + + +Lisp_Object Fldapp (Lisp_Object object); +Lisp_Object Fldap_host (Lisp_Object ldap); +Lisp_Object Fldap_live_p (Lisp_Object ldap); +Lisp_Object Fldap_open (Lisp_Object host, + Lisp_Object ldap_plist); +Lisp_Object Fldap_close (Lisp_Object ldap); +Lisp_Object Fldap_search_basic (Lisp_Object ldap, + Lisp_Object filter, + Lisp_Object base, + Lisp_Object scope, + Lisp_Object attrs, + Lisp_Object attrsonly, + Lisp_Object withdn, + Lisp_Object verbose); +Lisp_Object Fldap_add (Lisp_Object ldap, + Lisp_Object dn, + Lisp_Object entry); +Lisp_Object Fldap_modify (Lisp_Object ldap, + Lisp_Object dn, + Lisp_Object entry); +Lisp_Object Fldap_delete (Lisp_Object ldap, + Lisp_Object dn); -#ifndef _XEMACS_ELDAP_H_ -#define _XEMACS_ELDAP_H_ - -#ifdef HAVE_LDAP - -#ifdef emacs - -Lisp_Object Fldap_search_internal (Lisp_Object search_plist); - -#endif /* emacs */ - -#endif /* HAVE_LDAP */ - -#endif /* _XEMACS_ELDAP_H_ */ +#endif /* INCLUDED_eldap_h_ */ diff --text -u /dev/null 'xemacs-21.5.10/modules/ldap/install-sh' Index: ././modules/ldap/install-sh --- ././modules/ldap/install-sh Thu Jan 1 09:00:00 1970 +++ ././modules/ldap/install-sh Wed Sep 11 00:27:14 2002 @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + : + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + : + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --text -u /dev/null 'xemacs-21.5.10/modules/postgresql/Makefile.in.in' Index: ././modules/postgresql/Makefile.in.in --- ././modules/postgresql/Makefile.in.in Thu Jan 1 09:00:00 1970 +++ ././modules/postgresql/Makefile.in.in Mon Nov 18 15:52:33 2002 @@ -0,0 +1,30 @@ +## Makefile for the PostgreSQL module in XEmacs. +## Copyright (C) 2002 Jerry James. + +## 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 2, 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; see the file COPYING. If not, write to +## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +## Boston, MA 02111-1307, USA. + +## Synched up with: Not in FSF. + +### Specialize this part for your module +MODNAME=postgresql +MODVER=1.0.0 +MODTITLE="PostgreSQL Client Interface for XEmacs" +LDFLAGS=@LDFLAGS@ @ld_switch_all@ @postgresql_libs@ +SRCS=postgresql.c + +## Note: modules/common/Makefile.common will be appended by configure diff --text -u /dev/null 'xemacs-21.5.10/modules/postgresql/configure' Index: ././modules/postgresql/configure --- ././modules/postgresql/configure Thu Jan 1 09:00:00 1970 +++ ././modules/postgresql/configure Mon Nov 18 15:52:33 2002 @@ -0,0 +1,3808 @@ +#! /bin/sh +# From configure.ac Revision: 1.1 . +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.53a for PostgreSQL module 1.0. +# +# Report bugs to . +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +# +# Configuration script for the PostgreSQL module. +# Copyright (C) 2002 Jerry James. +# +# 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 2, 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; see the file COPYING. If not, write to the Free +# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# NLS nuisances. +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && + { $as_unset LANG || test "${LANG+set}" != set; } || + { LANG=C; export LANG; } +(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && + { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || + { LC_ALL=C; export LC_ALL; } +(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && + { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || + { LC_TIME=C; export LC_TIME; } +(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && + { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || + { LC_CTYPE=C; export LC_CTYPE; } +(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && + { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || + { LANGUAGE=C; export LANGUAGE; } +(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && + { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || + { LC_COLLATE=C; export LC_COLLATE; } +(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && + { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || + { LC_NUMERIC=C; export LC_NUMERIC; } +(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && + { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || + { LC_MESSAGES=C; export LC_MESSAGES; } + + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME='PostgreSQL module' +PACKAGE_TARNAME='postgresql-module' +PACKAGE_VERSION='1.0' +PACKAGE_STRING='PostgreSQL module 1.0' +PACKAGE_BUGREPORT='xemacs-beta@xemacs.org' + +ac_unique_file="postgresql.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_ELLCC_set=${ELLCC+set} +ac_env_ELLCC_value=$ELLCC +ac_cv_env_ELLCC_set=${ELLCC+set} +ac_cv_env_ELLCC_value=$ELLCC +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures PostgreSQL module 1.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +_ACEOF + + cat <<_ACEOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_ACEOF + + cat <<\_ACEOF +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of PostgreSQL module 1.0:";; + esac + cat <<\_ACEOF + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + ELLCC The path to the ellcc module compiler + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_srcdir/configure.gnu; then + echo + $SHELL $ac_srcdir/configure.gnu --help=recursive + elif test -f $ac_srcdir/configure; then + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF +PostgreSQL module configure 1.0 +generated by GNU Autoconf 2.53a + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. + +Configuration script for the PostgreSQL module. +Copyright (C) 2002 Jerry James. + +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 2, 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; see the file COPYING. If not, write to the Free +Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. +_ACEOF + exit 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by PostgreSQL module $as_me 1.0, which was +generated by GNU Autoconf 2.53a. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" +done + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell meta-characters. +ac_configure_args= +ac_sep= +for ac_arg +do + case $ac_arg in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n ) continue ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +for ac_file in `ls a_out.exe a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables" >&5 +echo "$as_me: error: C compiler cannot create executables" >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +$ac_declaration +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_declaration +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + + + + +# Find ELLCC + +# Extract the first word of "ellcc", so it can be a program name with args. +set dummy ellcc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_path_ELLCC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $ELLCC in + [\\/]* | ?:[\\/]*) + ac_cv_path_ELLCC="$ELLCC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ELLCC="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_path_ELLCC" && ac_cv_path_ELLCC=""FAIL"" + ;; +esac +fi +ELLCC=$ac_cv_path_ELLCC + +if test -n "$ELLCC"; then + echo "$as_me:$LINENO: result: $ELLCC" >&5 +echo "${ECHO_T}$ELLCC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$ELLCC" = "FAIL"; then + { { echo "$as_me:$LINENO: error: Cannot find ellcc" >&5 +echo "$as_me: error: Cannot find ellcc" >&2;} + { (exit 1); exit 1; }; } +fi + + + +for header_dir in "" "pgsql/" "postgresql/"; do + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +as_ac_Header=`echo "ac_cv_header_${header_dir}libpq-fe.h" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for ${header_dir}libpq-fe.h" >&5 +echo $ECHO_N "checking for ${header_dir}libpq-fe.h... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking ${header_dir}libpq-fe.h usability" >&5 +echo $ECHO_N "checking ${header_dir}libpq-fe.h usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <${header_dir}libpq-fe.h> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking ${header_dir}libpq-fe.h presence" >&5 +echo $ECHO_N "checking ${header_dir}libpq-fe.h presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <${header_dir}libpq-fe.h> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + egrep -v '^ *\+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: ${header_dir}libpq-fe.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: ${header_dir}libpq-fe.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: ${header_dir}libpq-fe.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: ${header_dir}libpq-fe.h: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: ${header_dir}libpq-fe.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: ${header_dir}libpq-fe.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: ${header_dir}libpq-fe.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: ${header_dir}libpq-fe.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: ${header_dir}libpq-fe.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: ${header_dir}libpq-fe.h: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for ${header_dir}libpq-fe.h" >&5 +echo $ECHO_N "checking for ${header_dir}libpq-fe.h... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + libpq_fe_h_file=${header_dir}libpq-fe.h; break +fi + + +done + +test -z "$libpq_fe_h_file" && + { { echo "$as_me:$LINENO: error: Cannot find the PostgresQL header files; try specifying CPPFLAGS." >&5 +echo "$as_me: error: Cannot find the PostgresQL header files; try specifying CPPFLAGS." >&2;} + { (exit 1); exit 1; }; } +cat >>confdefs.h <<_ACEOF +#define LIBPQ_FE_H_FILE "$libpq_fe_h_file" +_ACEOF + + + +echo "$as_me:$LINENO: checking for PQconnectdb in -lpq" >&5 +echo $ECHO_N "checking for PQconnectdb in -lpq... $ECHO_C" >&6 +if test "${ac_cv_lib_pq_PQconnectdb+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpq $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char PQconnectdb (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +PQconnectdb (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pq_PQconnectdb=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_pq_PQconnectdb=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pq_PQconnectdb" >&5 +echo "${ECHO_T}$ac_cv_lib_pq_PQconnectdb" >&6 +if test $ac_cv_lib_pq_PQconnectdb = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPQ 1 +_ACEOF + + LIBS="-lpq $LIBS" + +else + { { echo "$as_me:$LINENO: error: Cannot find the PostgresQL library. Try specifying LDFLAGS." >&5 +echo "$as_me: error: Cannot find the PostgresQL library. Try specifying LDFLAGS." >&2;} + { (exit 1); exit 1; }; } +fi + +echo "$as_me:$LINENO: checking for PQconnectStart in -lpq" >&5 +echo $ECHO_N "checking for PQconnectStart in -lpq... $ECHO_C" >&6 +if test "${ac_cv_lib_pq_PQconnectStart+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpq $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char PQconnectStart (); +#ifdef F77_DUMMY_MAIN +# ifdef __cplusplus + extern "C" +# endif + int F77_DUMMY_MAIN() { return 1; } +#endif +int +main () +{ +PQconnectStart (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pq_PQconnectStart=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_pq_PQconnectStart=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pq_PQconnectStart" >&5 +echo "${ECHO_T}$ac_cv_lib_pq_PQconnectStart" >&6 +if test $ac_cv_lib_pq_PQconnectStart = yes; then + + with_postgresqlv7=yes; + cat >>confdefs.h <<\_ACEOF +#define HAVE_POSTGRESQLV7 1 +_ACEOF + +fi + +postgresql_libs="$LIBS" + + + +# This part should appear unchanged in every module configure.ac +PROGNAME="module" + +MOD_CC="@ELLCC@" + +MODARCHDIR="\$(shell @ELLCC@ --mod-archdir)" + +MAKE_DOCFILE="\$(MODARCHDIR)/make-docfile" + +MODCFLAGS="\$(CFLAGS) --mode=compile --mod-output=\$@ -I\$(MODARCHDIR)/include" + +INSTALLPATH="\$(shell @ELLCC@ --mod-site-location)" + +MOD_INSTALL_PROGRAM="@INSTALL_PROGRAM@" + +OBJECT_TO_BUILD="\$(MODNAME).ell" + + + ac_config_files="$ac_config_files Makefile.in Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then we branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +cat >confdef2opt.sed <<\_ACEOF +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g +t quote +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g +t quote +d +: quote +s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +s,\[,\\&,g +s,\],\\&,g +s,\$,$$,g +p +_ACEOF +# We use echo to avoid assuming a particular line-breaking character. +# The extra dot is to prevent the shell from consuming trailing +# line-breaks from the sub-command output. A line-break within +# single-quotes doesn't work because, if this script is created in a +# platform that uses two characters for line-breaks (e.g., DOS), tr +# would break. +ac_LF_and_DOT=`echo; echo .` +DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +rm -f confdef2opt.sed + + + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# NLS nuisances. +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + +(set +x; test -n "`(LANG=C; export LANG) 2>&1`") && + { $as_unset LANG || test "${LANG+set}" != set; } || + { LANG=C; export LANG; } +(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") && + { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } || + { LC_ALL=C; export LC_ALL; } +(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") && + { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } || + { LC_TIME=C; export LC_TIME; } +(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") && + { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } || + { LC_CTYPE=C; export LC_CTYPE; } +(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") && + { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } || + { LANGUAGE=C; export LANGUAGE; } +(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") && + { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } || + { LC_COLLATE=C; export LC_COLLATE; } +(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") && + { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } || + { LC_NUMERIC=C; export LC_NUMERIC; } +(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") && + { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } || + { LC_MESSAGES=C; export LC_MESSAGES; } + + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; } + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by PostgreSQL module $as_me 1.0, which was +generated by GNU Autoconf 2.53a. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + +Configuration files: +$config_files + +Report bugs to ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +PostgreSQL module config.status 1.0 +configured by $0, generated by GNU Autoconf 2.53a, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + ac_shift=: + ;; + -*) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" + exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +_ACEOF + + + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile.in" ) CONFIG_FILES="$CONFIG_FILES Makefile.in" ;; + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@ELLCC@,$ELLCC,;t t +s,@CPP@,$CPP,;t t +s,@postgresql_libs@,$postgresql_libs,;t t +s,@PROGNAME@,$PROGNAME,;t t +s,@MOD_CC@,$MOD_CC,;t t +s,@MODARCHDIR@,$MODARCHDIR,;t t +s,@MAKE_DOCFILE@,$MAKE_DOCFILE,;t t +s,@MODCFLAGS@,$MODCFLAGS,;t t +s,@INSTALLPATH@,$INSTALLPATH,;t t +s,@MOD_INSTALL_PROGRAM@,$MOD_INSTALL_PROGRAM,;t t +s,@OBJECT_TO_BUILD@,$OBJECT_TO_BUILD,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@abs_srcdir@,$ac_abs_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t +s,@builddir@,$ac_builddir,;t t +s,@abs_builddir@,$ac_abs_builddir,;t t +s,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + exec 5>/dev/null + $SHELL $CONFIG_STATUS || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi + + diff --text -u /dev/null 'xemacs-21.5.10/modules/postgresql/configure.ac' Index: ././modules/postgresql/configure.ac --- ././modules/postgresql/configure.ac Thu Jan 1 09:00:00 1970 +++ ././modules/postgresql/configure.ac Mon Nov 18 15:52:33 2002 @@ -0,0 +1,54 @@ +# Process this file with autoconf to produce a configure script. +# This is only used for independent module building. +AC_INIT([PostgreSQL module], [1.0], [xemacs-beta@xemacs.org]) +AC_PREREQ(2.53) +AC_REVISION($Revision: 1.2 $) +AC_COPYRIGHT([Configuration script for the PostgreSQL module. +Copyright (C) 2002 Jerry James. + +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 2, 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; see the file COPYING. If not, write to the Free +Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA.]) + +AC_CONFIG_SRCDIR([postgresql.c]) + +m4_include([../common/configure-pre.ac]) + +dnl On many Linux systems, PostgreSQL is packaged to be installed in /usr; +dnl in this case, configure will easily detect it there. +dnl +dnl If PostgreSQL is installed into a different prefix, +dnl (such as the default /usr/local/pgsql when building from source), +dnl then specify CPPFLAGS and LDFLAGS when configuring. +dnl +dnl Look for these standard header file locations, known to be used on Linux +for header_dir in "" "pgsql/" "postgresql/"; do + AC_CHECK_HEADER([${header_dir}libpq-fe.h], + [libpq_fe_h_file=${header_dir}libpq-fe.h; break]) +done + +test -z "$libpq_fe_h_file" && + AS_ERROR([Cannot find the PostgresQL header files; try specifying CPPFLAGS.]) +AC_DEFINE_UNQUOTED(LIBPQ_FE_H_FILE, "$libpq_fe_h_file") + +AC_CHECK_LIB(pq,PQconnectdb,, + AS_ERROR([Cannot find the PostgresQL library. Try specifying LDFLAGS.])) +AC_CHECK_LIB(pq,PQconnectStart, [ + with_postgresqlv7=yes; + AC_DEFINE(HAVE_POSTGRESQLV7)]) +AC_SUBST(postgresql_libs, "$LIBS") + +m4_include([../common/configure-post.ac]) diff --text -u /dev/null 'xemacs-21.5.10/modules/postgresql/install-sh' Index: ././modules/postgresql/install-sh --- ././modules/postgresql/install-sh Thu Jan 1 09:00:00 1970 +++ ././modules/postgresql/install-sh Wed Sep 11 00:27:18 2002 @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + : + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + : + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --text -u /dev/null 'xemacs-21.5.10/modules/postgresql/postgresql.c' Index: ././modules/postgresql/postgresql.c --- ././modules/postgresql/postgresql.c Thu Jan 1 09:00:00 1970 +++ ././modules/postgresql/postgresql.c Mon Nov 18 15:52:33 2002 @@ -0,0 +1,1927 @@ +/* + postgresql.c -- Emacs Lisp binding to libpq.so + Copyright (C) 2000 Electrotechnical Laboratory, JAPAN. + Licensed to the Free Software Foundation. + + Author: SL Baur + Maintainer: SL Baur + +Please send patches to this file to me first before submitting them to +xemacs-patches. + + +KNOWN PROBLEMS (Last update 15-March-2000) ++ None. + +Implementation notes: +0. Supported PostgreSQL versions + This code was developed against libpq-6.5.3 and libpq-7.0-beta1. Earlier + versions may work. V7 support is more complete than V6.5 support. +1. Mule + Non-ASCII databases have been tested on both 6.5 and 7.0. +2. Asynchronous Operation + Starting with libpq-7.0, an asynchronous interface is offered. This + binding supports the asynchronous calls to a limited extent. Since the + XEmacs 21.2 core does not support a sensible interface to add managed but + unreadable (by XEmacs) file descriptors to the main select code, polling + is required to drive the asynchronous calls. XtAppAddInput would work + fine, but we want to be able to use the database when running strictly in + tty mode. +3. Completeness + Various calls have been deliberately not exported to Lisp. The + unexported calls are either left-over backwards compatibility code that + aren't needed, calls that cannot be implemented sensibly, or calls that + cannot be implemented safely. A list of all global functions in libpq + but not exported to Lisp is below. +4. Policy + This interface tries very hard to not set any policy towards how database + code in Emacs Lisp will be written. +5. Documentation + For full lisp programming documentation, see the XEmacs Lisp Reference + Manual. For PostgreSQL documentation, see the PostgreSQL distribution. + +TODO (in rough order of priority): +1. Asynchronous notifies need to be implemented to the extent they can be. +2. The large object interface needs work with Emacs buffers in addition + to files. Need two functions buffer->large_object, and large_object-> + buffer. +*/ + +/* + Unimplemented functions: [TODO] + PQsetNoticeProcessor + + Implemented, but undocumented functions: [TODO] + PQgetline (copy in/out) + PQputline (copy in/out) + PQgetlineAsync (copy in/out Asynch.) + PQputnbytes (copy in/out Asynch.) + PQendcopy (copy in/out) + + Unsupported functions: + PQsetdbLogin -- This function is deprecated, has a subset of the + functionality of PQconnectdb, and is better done in Lisp. + PQsetdb -- Same as for PQsetdbLogin + PQsocket -- Abstraction error, file descriptors should not be leaked + into Lisp code + PQprint -- print to a file descriptor, deprecated, better done in Lisp + PQdisplayTuples -- deprecated + PQprintTuples -- really, really deprecated + PQmblen -- Returns the length in bytes of multibyte character encoded + string. + PQtrace -- controls debug print tracing to a tty. + PQuntrace -- Ditto. I don't see any way to do this sensibly. + PQoidStatus -- deprecated and nearly identical to PQoidValue + PQfn -- "Fast path" interface + lo_open (large object) [*] + lo_close (large object) [*] + lo_read (large object) [*] + lo_write (large object) [*] + lo_lseek (large object) [*] + lo_creat (large object) [*] + lo_tell (large object) [*] + lo_unlink (large object) [*] +*/ + +#include + +/* This must be portable with XEmacs 21.1 so long as it is the official + released version of XEmacs and provides the basis of InfoDock. The + interface to lcrecord handling has changed with 21.2, so unfortunately + we will need a few snippets of backwards compatibility code. +*/ +#if (EMACS_MAJOR_VERSION == 21) && (EMACS_MINOR_VERSION < 2) +#define RUNNING_XEMACS_21_1 1 +#endif + +/* #define POSTGRES_LO_IMPORT_IS_VOID 1 */ + +#include "lisp.h" +#include "sysdep.h" + +#include "buffer.h" +#include "postgresql.h" +#include "process.h" + +#ifdef RUNNING_XEMACS_21_1 /* handle interface changes */ +#define PG_OS_CODING FORMAT_FILENAME +#define TO_EXTERNAL_FORMAT(a,from,b,to,c) GET_C_STRING_EXT_DATA_ALLOCA(from,FORMAT_FILENAME,to) +#else +#ifdef MULE +#define PG_OS_CODING get_coding_system_for_text_file (Vpg_coding_system, 1) +#else +#define PG_OS_CODING Qnative +#endif +Lisp_Object Vpg_coding_system; +#endif + +#define CHECK_LIVE_CONNECTION(P) do { \ + if (!P || (PQstatus (P) != CONNECTION_OK)) { \ + char *e = "bad value"; \ + if (P) e = PQerrorMessage (P); \ + signal_ferror (Qprocess_error, "dead connection [%s]", e); \ + } } while (0) +#define PUKE_IF_NULL(p) do { \ + if (!p) signal_error (Qinvalid_argument, "bad value", Qunbound); \ + } while (0) + +static Lisp_Object VXPGHOST; +static Lisp_Object VXPGUSER; +static Lisp_Object VXPGOPTIONS; +static Lisp_Object VXPGPORT; +static Lisp_Object VXPGTTY; /* This needs to be blanked! */ +static Lisp_Object VXPGDATABASE; +static Lisp_Object VXPGREALM; +#ifdef MULE +static Lisp_Object VXPGCLIENTENCODING; +#endif /* MULE */ + +/* Other variables: + PGAUTHTYPE -- not used after PostgreSQL 6.5 + PGGEQO + PGCOSTINDEX + PGCOSTHEAP + PGTZ + PGDATESTYLE +*/ +#ifndef HAVE_POSTGRESQLV7 +static Lisp_Object VXPGAUTHTYPE; +#endif +static Lisp_Object VXPGGEQO, VXPGCOSTINDEX, VXPGCOSTHEAP, VXPGTZ, VXPGDATESTYLE; + +static Lisp_Object Qpostgresql; +static Lisp_Object Qpg_connection_ok, Qpg_connection_bad; +static Lisp_Object Qpg_connection_started, Qpg_connection_made; +static Lisp_Object Qpg_connection_awaiting_response, Qpg_connection_auth_ok; +static Lisp_Object Qpg_connection_setenv; + +static Lisp_Object Qpqdb, Qpquser, Qpqpass, Qpqhost, Qpqport, Qpqtty; +static Lisp_Object Qpqoptions, Qpqstatus, Qpqerrormessage, Qpqbackendpid; + +static Lisp_Object Qpgres_empty_query, Qpgres_command_ok, Qpgres_tuples_ok; +static Lisp_Object Qpgres_copy_out, Qpgres_copy_in, Qpgres_bad_response; +static Lisp_Object Qpgres_nonfatal_error, Qpgres_fatal_error; + +static Lisp_Object Qpgres_polling_failed, Qpgres_polling_reading; +static Lisp_Object Qpgres_polling_writing, Qpgres_polling_ok; +static Lisp_Object Qpgres_polling_active; +/****/ + +/* PGconn is an opaque object and we need to be able to store them in + Lisp code because libpq supports multiple connections. +*/ +Lisp_Object Qpgconnp; + +static Lisp_Object +make_pgconn (Lisp_PGconn *pgconn) +{ + return wrap_pgconn (pgconn); +} + +#ifdef USE_KKCC +static const struct lrecord_description pgconn_description [] = { + { XD_END } +}; +#endif /* USE_KKCC */ + +static Lisp_Object +#ifdef RUNNING_XEMACS_21_1 +mark_pgconn (Lisp_Object obj, void (*markobj) (Lisp_Object)) +#else +mark_pgconn (Lisp_Object obj) +#endif +{ + return Qnil; +} + +static void +print_pgconn (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) +{ + char buf[256]; + PGconn *P; + ConnStatusType cst; + char *host="", *db="", *user="", *port=""; + + P = (XPGCONN (obj))->pgconn; + + if (!P) /* this may happen since we allow PQfinish() to be called */ + strcpy (buf, "#"); /* evil! */ + else if ((cst = PQstatus (P)) == CONNECTION_OK) + { + if (!(host = PQhost (P))) + host = ""; + port = PQport (P); + db = PQdb (P); + if (!(user = PQuser (P))) + user = ""; + sprintf (buf, "#", /* evil! */ + !strlen (host) ? "localhost" : host, + port, + user, + db); + } + else if (cst == CONNECTION_BAD) + strcpy (buf, "#"); /* evil! */ + else + strcpy (buf, "#"); /* evil! */ + + if (print_readably) + printing_unreadable_object ("%s", buf); + else + write_c_string (printcharfun, buf); +} + +static Lisp_PGconn * +allocate_pgconn (void) +{ +#ifdef RUNNING_XEMACS_21_1 + Lisp_PGconn *pgconn = alloc_lcrecord_type (Lisp_PGconn, + lrecord_pgconn); +#else + Lisp_PGconn *pgconn = alloc_lcrecord_type (Lisp_PGconn, + &lrecord_pgconn); +#endif + pgconn->pgconn = (PGconn *)NULL; + return pgconn; +} + +static void +finalize_pgconn (void *header, int for_disksave) +{ + Lisp_PGconn *pgconn = (Lisp_PGconn *)header; + + if (for_disksave) + invalid_operation ("Can't dump an emacs containing PGconn objects", + make_pgconn (pgconn)); + + if (pgconn->pgconn) + { + PQfinish (pgconn->pgconn); + pgconn->pgconn = (PGconn *)NULL; + } +} + +#ifdef RUNNING_XEMACS_21_1 +DEFINE_LRECORD_IMPLEMENTATION ("pgconn", pgconn, + mark_pgconn, print_pgconn, finalize_pgconn, + NULL, NULL, + Lisp_PGconn); +#else +#ifdef USE_KKCC +DEFINE_LRECORD_IMPLEMENTATION ("pgconn", pgconn, + 0, /*dumpable-flag*/ + mark_pgconn, print_pgconn, finalize_pgconn, + NULL, NULL, + pgconn_description, + Lisp_PGconn); +#else /* not USE_KKCC */ +DEFINE_LRECORD_IMPLEMENTATION ("pgconn", pgconn, + mark_pgconn, print_pgconn, finalize_pgconn, + NULL, NULL, + 0, + Lisp_PGconn); +#endif /* not USE_KKCC */ +#endif +/****/ + +/* PGresult is an opaque object and we need to be able to store them in + Lisp code. +*/ +Lisp_Object Qpgresultp; + +static Lisp_Object +make_pgresult (Lisp_PGresult *pgresult) +{ + return wrap_pgresult (pgresult); +} + +#ifdef USE_KKCC +static const struct lrecord_description pgresult_description [] = { + { XD_END } +}; +#endif /* USE_KKCC */ + + +static Lisp_Object +#ifdef RUNNING_XEMACS_21_1 +mark_pgresult (Lisp_Object obj, void (*markobj) (Lisp_Object)) +#else +mark_pgresult (Lisp_Object obj) +#endif +{ + return Qnil; +} + +#define RESULT_TUPLES_FMT "#" +#define RESULT_CMD_TUPLES_FMT "#" +#define RESULT_DEFAULT_FMT "#" +static void +print_pgresult (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) +{ + char buf[1024]; + PGresult *res; + + res = (XPGRESULT (obj))->pgresult; + + if (res) + { + switch (PQresultStatus (res)) + { + case PGRES_TUPLES_OK: + /* Add number of tuples of result to output */ + sprintf (buf, RESULT_TUPLES_FMT, /* evil! */ + PQresStatus (PQresultStatus (res)), + PQntuples (res), + PQcmdStatus (res)); + break; + case PGRES_COMMAND_OK: + /* Add number of tuples affected by output-less command */ + if (!strlen (PQcmdTuples (res))) goto notuples; + sprintf (buf, RESULT_CMD_TUPLES_FMT, /* evil! */ + PQresStatus (PQresultStatus (res)), + PQcmdTuples (res), + PQcmdStatus (res)); + break; + default: +notuples: + /* No counts to print */ + sprintf (buf, RESULT_DEFAULT_FMT, /* evil! */ + PQresStatus (PQresultStatus (res)), + PQcmdStatus (res)); + break; + } + } + else + strcpy (buf, "#"); /* evil! */ + + if (print_readably) + printing_unreadable_object ("%s", buf); + else + write_c_string (printcharfun, buf); +} + +#undef RESULT_TUPLES_FMT +#undef RESULT_CMD_TUPLES_FMT +#undef RESULT_DEFAULT_FMT + +static Lisp_PGresult * +allocate_pgresult (void) +{ +#ifdef RUNNING_XEMACS_21_1 + Lisp_PGresult *pgresult = alloc_lcrecord_type (Lisp_PGresult, + lrecord_pgresult); +#else + Lisp_PGresult *pgresult = alloc_lcrecord_type (Lisp_PGresult, + &lrecord_pgresult); +#endif + pgresult->pgresult = (PGresult *)NULL; + return pgresult; +} + +static void +finalize_pgresult (void *header, int for_disksave) +{ + Lisp_PGresult *pgresult = (Lisp_PGresult *)header; + + if (for_disksave) + invalid_operation ("Can't dump an emacs containing PGresult objects", + make_pgresult (pgresult)); + + if (pgresult->pgresult) + { + PQclear (pgresult->pgresult); + pgresult->pgresult = (PGresult *)NULL; + } +} + +#ifdef RUNNING_XEMACS_21_1 +DEFINE_LRECORD_IMPLEMENTATION ("pgresult", pgresult, + mark_pgresult, print_pgresult, finalize_pgresult, + NULL, NULL, + Lisp_PGresult); +#else +#ifdef USE_KKCC +DEFINE_LRECORD_IMPLEMENTATION ("pgresult", pgresult, + 0, /*dumpable-flag*/ + mark_pgresult, print_pgresult, finalize_pgresult, + NULL, NULL, + pgresult_description, + Lisp_PGresult); +#else /* not USE_KKCC */ +DEFINE_LRECORD_IMPLEMENTATION ("pgresult", pgresult, + mark_pgresult, print_pgresult, finalize_pgresult, + NULL, NULL, + 0, + Lisp_PGresult); +#endif /* not USE_KKCC */ +#endif + +/***********************/ + +/* notices */ +static void +xemacs_notice_processor (void *arg, const char *msg) +{ + warn_when_safe (Qpostgresql, Qnotice, "%s", msg); +} + +/* There are four ways (as of PostgreSQL v7) to connect to a database. + Two of them, PQsetdb and PQsetdbLogin, are deprecated. Both of those + routines take a number of positional parameters and are better done in Lisp. + Note that PQconnectStart does not exist prior to v7. +*/ + +/* ###autoload */ +DEFUN ("pq-conn-defaults", Fpq_conn_defaults, 0, 0, 0, /* +Return a connection default structure. +*/ + ()) +{ + /* This function can GC */ + PQconninfoOption *pcio; + Lisp_Object temp, temp1; + int i; + + pcio = PQconndefaults(); + if (!pcio) return Qnil; /* can never happen in libpq-7.0 */ + temp = list1 (Fcons (build_ext_string (pcio[0].keyword, PG_OS_CODING), + Fcons (build_ext_string (pcio[0].envvar, PG_OS_CODING), + Fcons (build_ext_string (pcio[0].compiled, PG_OS_CODING), + Fcons (build_ext_string (pcio[0].val, PG_OS_CODING), + Fcons (build_ext_string (pcio[0].label, PG_OS_CODING), + Fcons (build_ext_string (pcio[0].dispchar, PG_OS_CODING), + Fcons (make_int (pcio[0].dispsize), Qnil)))))))); + + for (i = 1; pcio[i].keyword; i++) + { + temp1 = list1 (Fcons (build_ext_string (pcio[i].keyword, PG_OS_CODING), + Fcons (build_ext_string (pcio[i].envvar, PG_OS_CODING), + Fcons (build_ext_string (pcio[i].compiled, PG_OS_CODING), + Fcons (build_ext_string (pcio[i].val, PG_OS_CODING), + Fcons (build_ext_string (pcio[i].label, PG_OS_CODING), + Fcons (build_ext_string (pcio[i].dispchar, PG_OS_CODING), + Fcons (make_int (pcio[i].dispsize), Qnil)))))))); + { + Lisp_Object args[2]; + args[0] = temp; + args[1] = temp1; + /* Fappend GCPROs its arguments */ + temp = Fappend (2, args); + } + } + + return temp; +} + +/* PQconnectdb Makes a new connection to a backend. +PGconn *PQconnectdb(const char *conninfo) +*/ + +/* ###autoload */ +DEFUN ("pq-connectdb", Fpq_connectdb, 1, 1, 0, /* +Make a new connection to a PostgreSQL backend. +*/ + (conninfo)) +{ + PGconn *P; + Lisp_PGconn *lisp_pgconn; + char *error_message = "Out of Memory?"; + char *c_conninfo; + + CHECK_STRING (conninfo); + + TO_EXTERNAL_FORMAT(LISP_STRING, conninfo, + C_STRING_ALLOCA, c_conninfo, Qnative); + P = PQconnectdb (c_conninfo); + if (P && (PQstatus (P) == CONNECTION_OK)) + { + (void)PQsetNoticeProcessor (P, xemacs_notice_processor, NULL); + lisp_pgconn = allocate_pgconn(); + lisp_pgconn->pgconn = P; + return make_pgconn (lisp_pgconn); + } + else + { + /* Connection failed. Destroy the connection and signal an error. */ + char buf[BLCKSZ]; + strcpy (buf, error_message); + if (P) + { + /* storage for the error message gets erased when call PQfinish */ + /* so we must temporarily stash it somewhere */ + strncpy (buf, PQerrorMessage (P), sizeof (buf)); + buf[sizeof (buf) - 1] = '\0'; + PQfinish (P); + } + signal_ferror (Qprocess_error, "libpq: %s", buf); + } +} + +/* PQconnectStart Makes a new asynchronous connection to a backend. +PGconn *PQconnectStart(const char *conninfo) +*/ + +#ifdef HAVE_POSTGRESQLV7 +/* ###autoload */ +DEFUN ("pq-connect-start", Fpq_connect_start, 1, 1, 0, /* +Make a new asynchronous connection to a PostgreSQL backend. +*/ + (conninfo)) +{ + PGconn *P; + Lisp_PGconn *lisp_pgconn; + char *error_message = "Out of Memory?"; + char *c_conninfo; + + CHECK_STRING (conninfo); + TO_EXTERNAL_FORMAT (LISP_STRING, conninfo, + C_STRING_ALLOCA, c_conninfo, Qnative); + P = PQconnectStart (c_conninfo); + + if (P && (PQstatus (P) != CONNECTION_BAD)) + { + (void)PQsetNoticeProcessor (P, xemacs_notice_processor, NULL); + lisp_pgconn = allocate_pgconn(); + lisp_pgconn->pgconn = P; + + return make_pgconn (lisp_pgconn); + } + else + { + /* capture the error message before destroying the object */ + char buf[BLCKSZ]; + strcpy (buf, error_message); + if (P) + { + strncpy (buf, PQerrorMessage (P), sizeof (buf)); + buf[sizeof (buf) - 1] = '\0'; + PQfinish (P); + } + signal_ferror (Qprocess_error, "libpq: %s", buf); + } +} + +DEFUN ("pq-connect-poll", Fpq_connect_poll, 1, 1, 0, /* +Poll an asynchronous connection for completion +*/ + (conn)) +{ + PGconn *P; + PostgresPollingStatusType polling_status; + + CHECK_PGCONN (conn); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + polling_status = PQconnectPoll (P); + switch (polling_status) + { + case PGRES_POLLING_FAILED: + /* Something Bad has happened */ + { + char *e = PQerrorMessage (P); + signal_ferror (Qprocess_error, "libpq: %s", e); + } + case PGRES_POLLING_OK: + return Qpgres_polling_ok; + case PGRES_POLLING_READING: + return Qpgres_polling_reading; + case PGRES_POLLING_WRITING: + return Qpgres_polling_writing; + case PGRES_POLLING_ACTIVE: + return Qpgres_polling_active; + default: + /* they've added a new field we don't know about */ + signal_ferror (Qprocess_error, "Help! Unknown status code %08x from backend!", polling_status); + } +} + +#ifdef MULE +DEFUN ("pq-client-encoding", Fpq_client_encoding, 1, 1, 0, /* +Return client coding system. +*/ + (conn)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + return make_int (PQclientEncoding (P)); +} + +DEFUN ("pq-set-client-encoding", Fpq_set_client_encoding, 2, 2, 0, /* +Set client coding system. +*/ + (conn, encoding)) +{ + PGconn *P; + int rc; + char *c_encoding; + + CHECK_PGCONN (conn); + CHECK_STRING (encoding); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + TO_EXTERNAL_FORMAT (LISP_STRING, encoding, + C_STRING_ALLOCA, c_encoding, Qnative); + + if ((rc = PQsetClientEncoding (P, c_encoding)) < 0) + signal_error (Qinvalid_argument, "bad encoding", Qunbound); + else + return make_int (rc); +} + +#endif +#endif /* HAVE_POSTGRESQLV7 */ + +/* PQfinish Close the connection to the backend. Also frees memory + used by the PGconn object. +void PQfinish(PGconn *conn) +*/ +DEFUN ("pq-finish", Fpq_finish, 1, 1, 0, /* +Close the connection to the backend. +*/ + (conn)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + PUKE_IF_NULL (P); + + PQfinish (P); + /* #### PQfinish deallocates the PGconn structure, so we now have a + dangling pointer. */ + /* Genocided all @'s ... */ + (XPGCONN (conn))->pgconn = (PGconn *)NULL; /* You feel DEAD inside */ + return Qnil; +} + +DEFUN ("pq-clear", Fpq_clear, 1, 1, 0, /* +Forcibly erase a PGresult object. +*/ + (res)) +{ + PGresult *R; + + CHECK_PGRESULT (res); + R = (XPGRESULT (res))->pgresult; + PUKE_IF_NULL (R); + + PQclear (R); + /* Genocided all @'s ... */ + (XPGRESULT (res))->pgresult = (PGresult *)NULL; /* You feel DEAD inside */ + + return Qnil; +} + +DEFUN ("pq-is-busy", Fpq_is_busy, 1, 1, 0, /* +Return t if PQgetResult would block waiting for input. +*/ + (conn)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + return PQisBusy (P) ? Qt : Qnil; +} + +DEFUN ("pq-consume-input", Fpq_consume_input, 1, 1, 0, /* +Consume any available input from the backend. +Returns nil if something bad happened. +*/ + (conn)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + return PQconsumeInput (P) ? Qt : Qnil; +} + +/* PQreset Reset the communication port with the backend. +void PQreset(PGconn *conn) +*/ +DEFUN ("pq-reset", Fpq_reset, 1, 1, 0, /* +Reset the connection to the backend. +This function will close the connection to the backend and attempt to +reestablish a new connection to the same postmaster, using all the same +parameters previously used. This may be useful for error recovery if a +working connection is lost. +*/ + (conn)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + PUKE_IF_NULL (P);/* we can resurrect a BAD connection, but not a dead one. */ + + PQreset (P); + + return Qnil; +} + +#ifdef HAVE_POSTGRESQLV7 +DEFUN ("pq-reset-start", Fpq_reset_start, 1, 1, 0, /* +Reset connection to the backend asynchronously. +*/ + (conn)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + if (PQresetStart (P)) return Qt; + { + char *e = PQerrorMessage (P); + signal_ferror (Qprocess_error, "libpq: %s", e); + } +} + +DEFUN ("pq-reset-poll", Fpq_reset_poll, 1, 1, 0, /* +Poll an asynchronous reset for completion. +*/ + (conn)) +{ + PGconn *P; + PostgresPollingStatusType polling_status; + + CHECK_PGCONN (conn); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + polling_status = PQresetPoll (P); + switch (polling_status) + { + case PGRES_POLLING_FAILED: + /* Something Bad has happened */ + { + char *e = PQerrorMessage (P); + signal_ferror (Qprocess_error, "libpq: %s", e); + } + case PGRES_POLLING_OK: + return Qpgres_polling_ok; + case PGRES_POLLING_READING: + return Qpgres_polling_reading; + case PGRES_POLLING_WRITING: + return Qpgres_polling_writing; + case PGRES_POLLING_ACTIVE: + return Qpgres_polling_active; + default: + /* they've added a new field we don't know about */ + signal_ferror (Qprocess_error, "Help! Unknown status code %08x from backend!", polling_status); + } +} +#endif + +DEFUN ("pq-request-cancel", Fpq_request_cancel, 1, 1, 0, /* +Attempt to request cancellation of the current operation. + +The return value is t if the cancel request was successfully +dispatched, nil if not (in which case conn->errorMessage is set). +Note: successful dispatch is no guarantee that there will be any effect at +the backend. The application must read the operation result as usual. +*/ + (conn)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + return PQrequestCancel (P) ? Qt : Qnil; +} + +/* accessor function for the PGconn object */ +DEFUN ("pq-pgconn", Fpq_pgconn, 2, 2, 0, /* +Accessor function for the PGconn object. +Currently recognized symbols for the field: +pq::db Database name +pq::user Database user name +pq::pass Database user's password +pq::host Hostname of PostgreSQL backend connected to +pq::port TCP port number of connection +pq::tty Debugging TTY (not used in Emacs) +pq::options Additional backend options +pq::status Connection status (either OK or BAD) +pq::error-message Last error message from the backend +pq::backend-pid Process ID of backend process +*/ + (conn, field)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + PUKE_IF_NULL (P); /* BAD connections still have state to query */ + + if (EQ(field, Qpqdb)) + /* PQdb Returns the database name of the connection. + char *PQdb(PGconn *conn) + */ + return build_ext_string (PQdb(P), PG_OS_CODING); + else if (EQ (field, Qpquser)) + /* PQuser Returns the user name of the connection. + char *PQuser(PGconn *conn) + */ + return build_ext_string (PQuser(P), PG_OS_CODING); + else if (EQ (field, Qpqpass)) + /* PQpass Returns the password of the connection. + char *PQpass(PGconn *conn) + */ + return build_ext_string (PQpass(P), PG_OS_CODING); + else if (EQ (field, Qpqhost)) + /* PQhost Returns the server host name of the connection. + char *PQhost(PGconn *conn) + */ + return build_ext_string (PQhost(P), PG_OS_CODING); + else if (EQ (field, Qpqport)) + { + char *p; + /* PQport Returns the port of the connection. + char *PQport(PGconn *conn) + */ + if ((p = PQport(P))) + return make_int(atoi(p)); + else + return make_int(-1); + } + else if (EQ (field, Qpqtty)) + /* PQtty Returns the debug tty of the connection. + char *PQtty(PGconn *conn) + */ + return build_ext_string (PQtty(P), PG_OS_CODING); + else if (EQ (field, Qpqoptions)) + /* PQoptions Returns the backend options used in the connection. + char *PQoptions(PGconn *conn) + */ + return build_ext_string (PQoptions(P), PG_OS_CODING); + else if (EQ (field, Qpqstatus)) + { + ConnStatusType cst; + /* PQstatus Returns the status of the connection. The status can be + CONNECTION_OK or CONNECTION_BAD. + ConnStatusType PQstatus(PGconn *conn) + */ + switch ((cst = PQstatus (P))) + { + case CONNECTION_OK: return Qpg_connection_ok; + case CONNECTION_BAD: return Qpg_connection_bad; +#ifdef HAVE_POSTGRESQLV7 + case CONNECTION_STARTED: return Qpg_connection_started; + case CONNECTION_MADE: return Qpg_connection_made; + case CONNECTION_AWAITING_RESPONSE: return Qpg_connection_awaiting_response; + case CONNECTION_AUTH_OK: return Qpg_connection_auth_ok; + case CONNECTION_SETENV: return Qpg_connection_setenv; +#endif /* HAVE_POSTGRESQLV7 */ + default: + /* they've added a new field we don't know about */ + signal_ferror (Qprocess_error, "Help! Unknown connection status code %08x from backend!", cst); + } + } + else if (EQ (field, Qpqerrormessage)) + /* PQerrorMessage Returns the error message most recently generated + by an operation on the connection. + char *PQerrorMessage(PGconn* conn); + */ + return build_ext_string (PQerrorMessage(P), PG_OS_CODING); + else if (EQ (field, Qpqbackendpid)) + /* PQbackendPID Returns the process ID of the backend server handling + this connection. + int PQbackendPID(PGconn *conn); + */ + return make_int (PQbackendPID(P)); + else + signal_error (Qinvalid_argument, "bad PGconn accessor", Qunbound); +} + +/* Query functions */ +DEFUN ("pq-exec", Fpq_exec, 2, 2, 0, /* +Submit a query to Postgres and wait for the result. +*/ + (conn, query)) +{ + PGconn *P; + Lisp_PGresult *lisp_pgresult; + PGresult *R; + char *c_query; + + CHECK_PGCONN (conn); + CHECK_STRING (query); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + TO_EXTERNAL_FORMAT (LISP_STRING, query, + C_STRING_ALLOCA, c_query, Qnative); + + R = PQexec (P, c_query); + { + char *tag, buf[BLCKSZ]; + + if (!R) out_of_memory ("query: out of memory", Qunbound); + else + switch (PQresultStatus (R)) + { + case PGRES_BAD_RESPONSE: + tag = "bad response [%s]"; + goto err; + case PGRES_NONFATAL_ERROR: + tag = "non-fatal error [%s]"; + goto err; + case PGRES_FATAL_ERROR: + tag = "fatal error [%s]"; +err: + strncpy (buf, PQresultErrorMessage (R), sizeof (buf)); + buf [sizeof (buf) - 1] = '\0'; + PQclear (R); + signal_ferror (Qprocess_error, tag, buf); + /*NOTREACHED*/ + default: + break; + } + } + + lisp_pgresult = allocate_pgresult (); + lisp_pgresult->pgresult = R; + + return make_pgresult (lisp_pgresult); +} + +DEFUN ("pq-send-query", Fpq_send_query, 2, 2, 0, /* +Submit a query to Postgres and don't wait for the result. +Returns: t if successfully submitted + nil if error (conn->errorMessage is set) +*/ + (conn, query)) +{ + PGconn *P; + char *c_query; + + CHECK_PGCONN (conn); + CHECK_STRING (query); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + TO_EXTERNAL_FORMAT (LISP_STRING, query, + C_STRING_ALLOCA, c_query, Qnative); + + if (PQsendQuery (P, c_query)) return Qt; + else signal_ferror (Qprocess_error, "async query: %s", PQerrorMessage (P)); +} + +DEFUN ("pq-get-result", Fpq_get_result, 1, 1, 0, /* +Retrieve an asynchronous result from a query. +NIL is returned when no more query work remains. +*/ + (conn)) +{ + PGconn *P; + Lisp_PGresult *lisp_pgresult; + PGresult *R; + + CHECK_PGCONN (conn); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + R = PQgetResult (P); + if (!R) return Qnil; /* not an error, there's no more data to get */ + + { + char *tag, buf[BLCKSZ]; + + switch (PQresultStatus (R)) + { + case PGRES_BAD_RESPONSE: + tag = "bad response [%s]"; + goto err; + case PGRES_NONFATAL_ERROR: + tag = "non-fatal error [%s]"; + goto err; + case PGRES_FATAL_ERROR: + tag = "fatal error [%s]"; +err: + strncpy (buf, PQresultErrorMessage (R), sizeof (buf)); + buf[sizeof (buf) - 1] = '\0'; + PQclear (R); + signal_ferror (Qprocess_error, tag, buf); + /*NOTREACHED*/ + default: + break; + } + } + + lisp_pgresult = allocate_pgresult(); + lisp_pgresult->pgresult = R; + + return make_pgresult (lisp_pgresult); +} + +DEFUN ("pq-result-status", Fpq_result_status, 1, 1, 0, /* +Return result status of the query. +*/ + (result)) +{ + PGresult *R; + ExecStatusType est; + + CHECK_PGRESULT (result); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + switch ((est = PQresultStatus (R))) { + case PGRES_EMPTY_QUERY: return Qpgres_empty_query; + case PGRES_COMMAND_OK: return Qpgres_command_ok; + case PGRES_TUPLES_OK: return Qpgres_tuples_ok; + case PGRES_COPY_OUT: return Qpgres_copy_out; + case PGRES_COPY_IN: return Qpgres_copy_in; + case PGRES_BAD_RESPONSE: return Qpgres_bad_response; + case PGRES_NONFATAL_ERROR: return Qpgres_nonfatal_error; + case PGRES_FATAL_ERROR: return Qpgres_fatal_error; + default: + /* they've added a new field we don't know about */ + signal_ferror (Qprocess_error, "Help! Unknown exec status code %08x from backend!", est); + } +} + +DEFUN ("pq-res-status", Fpq_res_status, 1, 1, 0, /* +Return stringified result status of the query. +*/ + (result)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return build_ext_string (PQresStatus (PQresultStatus (R)), PG_OS_CODING); +} + +/* Sundry PGresult accessor functions */ +DEFUN ("pq-result-error-message", Fpq_result_error_message, 1, 1, 0, /* +Return last message associated with the query. +*/ + (result)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return build_ext_string (PQresultErrorMessage (R), PG_OS_CODING); +} + +DEFUN ("pq-ntuples", Fpq_ntuples, 1, 1, 0, /* +Return the number of tuples (instances) in the query result. +*/ + (result)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return make_int (PQntuples (R)); +} + +DEFUN ("pq-nfields", Fpq_nfields, 1, 1, 0, /* +Return the number of fields (attributes) in each tuple of the query result. +*/ + (result)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return make_int (PQnfields (R)); +} + +DEFUN ("pq-binary-tuples", Fpq_binary_tuples, 1, 1, 0, /* +Return t if the query result contains binary data, nil otherwise. +*/ + (result)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return (PQbinaryTuples (R)) ? Qt : Qnil; +} + +DEFUN ("pq-fname", Fpq_fname, 2, 2, 0, /* +Return the field (attribute) name associated with the given field index. +Field indices start at 0. +*/ + (result, field_index)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + CHECK_INT (field_index); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return build_ext_string (PQfname (R, XINT (field_index)), PG_OS_CODING); +} + +DEFUN ("pq-fnumber", Fpq_fnumber, 2, 2, 0, /* +Return the number of fields (attributes) in each tuple of the query result. +*/ + (result, field_name)) +{ + PGresult *R; + char *c_field_name; + + CHECK_PGRESULT (result); + CHECK_STRING (field_name); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + TO_EXTERNAL_FORMAT (LISP_STRING, field_name, + C_STRING_ALLOCA, c_field_name, Qnative); + + return make_int (PQfnumber (R, c_field_name)); +} + +DEFUN ("pq-ftype", Fpq_ftype, 2, 2, 0, /* +Return the field type associated with the given field index. +The integer returned is the internal coding of the type. Field indices +start at 0. +*/ + (result, field_num)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + CHECK_INT (field_num); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return make_int (PQftype (R, XINT (field_num))); +} + +DEFUN ("pq-fsize", Fpq_fsize, 2, 2, 0, /* +Return the field size in bytes associated with the given field index. +Field indices start at 0. +*/ + (result, field_index)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + CHECK_INT (field_index); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return make_int (PQftype (R, XINT (field_index))); +} + +DEFUN ("pq-fmod", Fpq_fmod, 2, 2, 0, /* +Return the type modifier associated with a field. +Field indices start at 0. +*/ + (result, field_index)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + CHECK_INT (field_index); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return make_int (PQfmod (R, XINT (field_index))); +} + +DEFUN ("pq-get-value", Fpq_get_value, 3, 3, 0, /* +Return a single field (attribute) value of one tuple of a PGresult. +Tuple and field indices start at 0. +*/ + (result, tup_num, field_num)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + CHECK_INT (tup_num); + CHECK_INT (field_num); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return build_ext_string (PQgetvalue (R, XINT (tup_num), XINT (field_num)), + PG_OS_CODING); +} + +DEFUN ("pq-get-length", Fpq_get_length, 3, 3, 0, /* +Returns the length of a field value in bytes. +If result is binary, i.e. a result of a binary portal, then the +length returned does NOT include the size field of the varlena. (The +data returned by PQgetvalue doesn't either.) +*/ + (result, tup_num, field_num)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + CHECK_INT (tup_num); + CHECK_INT (field_num); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return make_int (PQgetlength (R, XINT (tup_num), XINT (field_num))); +} + +DEFUN ("pq-get-is-null", Fpq_get_is_null, 3, 3, 0, /* +Returns the null status of a field value. +*/ + (result, tup_num, field_num)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + CHECK_INT (tup_num); + CHECK_INT (field_num); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return PQgetisnull (R, XINT (tup_num), XINT (field_num)) ? Qt : Qnil; +} + +DEFUN ("pq-cmd-status", Fpq_cmd_status, 1, 1, 0, /* +Returns the command status string from the SQL command that generated the result. +*/ + (result)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return build_ext_string (PQcmdStatus (R), PG_OS_CODING); +} + +DEFUN ("pq-cmd-tuples", Fpq_cmd_tuples, 1, 1, 0, /* +Returns the number of rows affected by the SQL command. +*/ + (result)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + + return build_ext_string (PQcmdTuples (R), PG_OS_CODING); +} + +DEFUN ("pq-oid-value", Fpq_oid_value, 1, 1, 0, /* +Returns the object id of the tuple inserted. +*/ + (result)) +{ + PGresult *R; + + CHECK_PGRESULT (result); + R = (XPGRESULT (result))->pgresult; + PUKE_IF_NULL (R); + +#ifdef HAVE_POSTGRESQLV7 + return make_int (PQoidValue (R)); +#else + /* Use the old interface */ + return make_int (atoi (PQoidStatus (R))); +#endif +} + +#ifdef HAVE_POSTGRESQLV7 +DEFUN ("pq-set-nonblocking", Fpq_set_nonblocking, 2, 2, 0, /* +Sets the PGconn's database connection non-blocking if the arg is TRUE +or makes it non-blocking if the arg is FALSE, this will not protect +you from PQexec(), you'll only be safe when using the non-blocking API. + +Needs to be called only on a connected database connection. +*/ + (conn, arg)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + return make_int (PQsetnonblocking (P, !NILP (arg))); +} + +DEFUN ("pq-is-nonblocking", Fpq_is_nonblocking, 1, 1, 0, /* +Return the blocking status of the database connection. +*/ + (conn)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + return PQisnonblocking (P) ? Qt : Qnil; +} + +DEFUN ("pq-flush", Fpq_flush, 1, 1, 0, /* +Force the write buffer to be written (or at least try). +*/ + (conn)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + return make_int (PQflush (P)); +} +#endif + +DEFUN ("pq-notifies", Fpq_notifies, 1, 1, 0, /* +Return the latest async notification that has not yet been handled. +If there has been a notification, then a list of two elements will be returned. +The first element contains the relation name being notified, the second +element contains the backend process ID number. nil is returned if there +aren't any notifications to process. +*/ + (conn)) +{ + /* This function cannot GC */ + PGconn *P; + PGnotify *PGN; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + PGN = PQnotifies (P); + if (!PGN) + return Qnil; + else + { + Lisp_Object temp; + + temp = list2 (build_ext_string (PGN->relname, PG_OS_CODING), make_int (PGN->be_pid)); + free ((void *)PGN); + return temp; + } +} + +#if defined (HAVE_POSTGRESQLV7) && defined(MULE) +/* ###autoload */ +DEFUN ("pq-env-2-encoding", Fpq_env_2_encoding, 0, 0, 0, /* +Get encoding id from environment variable PGCLIENTENCODING. +*/ + ()) +{ + return make_int (PQenv2encoding ()); +} +#endif /* MULE */ + +DEFUN ("pq-lo-import", Fpq_lo_import, 2, 2, 0, /* +*/ + (conn, filename)) +{ + PGconn *P; + char *c_filename; + + CHECK_PGCONN (conn); + CHECK_STRING (filename); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + TO_EXTERNAL_FORMAT (LISP_STRING, filename, + C_STRING_ALLOCA, c_filename, + Qfile_name); + + return make_int ((int)lo_import (P, c_filename)); +} + +DEFUN ("pq-lo-export", Fpq_lo_export, 3, 3, 0, /* +*/ + (conn, oid, filename)) +{ + PGconn *P; + char *c_filename; + + CHECK_PGCONN (conn); + CHECK_INT (oid); + CHECK_STRING (filename); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + TO_EXTERNAL_FORMAT (LISP_STRING, filename, + C_STRING_ALLOCA, c_filename, Qfile_name); + + return make_int ((int)lo_export (P, XINT (oid), c_filename)); +} + +DEFUN ("pq-make-empty-pgresult", Fpq_make_empty_pgresult, 2, 2, 0, /* +Make an empty PGresult object with the given status. +*/ + (conn, status)) +{ + PGconn *P; + Lisp_PGresult *lpgr; + PGresult *R; + ExecStatusType est; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); /* needed here? */ + + if (EQ (status, Qpgres_empty_query)) est = PGRES_EMPTY_QUERY; + else if (EQ (status, Qpgres_command_ok)) est = PGRES_COMMAND_OK; + else if (EQ (status, Qpgres_tuples_ok)) est = PGRES_TUPLES_OK; + else if (EQ (status, Qpgres_copy_out)) est = PGRES_COPY_OUT; + else if (EQ (status, Qpgres_copy_in)) est = PGRES_COPY_IN; + else if (EQ (status, Qpgres_bad_response)) est = PGRES_BAD_RESPONSE; + else if (EQ (status, Qpgres_nonfatal_error)) est = PGRES_NONFATAL_ERROR; + else if (EQ (status, Qpgres_fatal_error)) est = PGRES_FATAL_ERROR; + else invalid_constant ("bad status symbol", status); + + R = PQmakeEmptyPGresult (P, est); + if (!R) out_of_memory (0, Qunbound); + + lpgr = allocate_pgresult (); + lpgr->pgresult = R; + + return make_pgresult (lpgr); +} + +DEFUN ("pq-get-line", Fpq_get_line, 1, 1, 0, /* +Retrieve a line from server in copy in operation. +The return value is a dotted pair where the cons cell is an integer code: + -1: Copying is complete + 0: A record is complete + 1: A record is incomplete, it will be continued in the next `pq-get-line' + operation. +and the cdr cell is returned string data. + +The copy operation is complete when the value `\.' (backslash dot) is +returned. +*/ + (conn)) +{ + char buffer[BLCKSZ]; /* size of a Postgres disk block */ + PGconn *P; + int ret; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + ret = PQgetline (P, buffer, sizeof (buffer)); + + return Fcons (make_int (ret), build_ext_string (buffer, PG_OS_CODING)); +} + +DEFUN ("pq-put-line", Fpq_put_line, 2, 2, 0, /* +Send a line to the server in copy out operation. + +Returns t if the operation succeeded, nil otherwise. +*/ + (conn, string)) +{ + PGconn *P; + char *c_string; + + CHECK_PGCONN (conn); + CHECK_STRING (string); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + TO_EXTERNAL_FORMAT (LISP_STRING, string, + C_STRING_ALLOCA, c_string, Qnative); + + return !PQputline (P, c_string) ? Qt : Qnil; +} + +DEFUN ("pq-get-line-async", Fpq_get_line_async, 1, 1, 0, /* +Get a line from the server in copy in operation asynchronously. + +This routine is for applications that want to do "COPY to stdout" +asynchronously, that is without blocking. Having issued the COPY command +and gotten a PGRES_COPY_OUT response, the app should call PQconsumeInput +and this routine until the end-of-data signal is detected. Unlike +PQgetline, this routine takes responsibility for detecting end-of-data. + +On each call, PQgetlineAsync will return data if a complete newline- +terminated data line is available in libpq's input buffer, or if the +incoming data line is too long to fit in the buffer offered by the caller. +Otherwise, no data is returned until the rest of the line arrives. + +If -1 is returned, the end-of-data signal has been recognized (and removed +from libpq's input buffer). The caller *must* next call PQendcopy and +then return to normal processing. + +RETURNS: + -1 if the end-of-copy-data marker has been recognized + 0 if no data is available + >0 the number of bytes returned. +The data returned will not extend beyond a newline character. If possible +a whole line will be returned at one time. But if the buffer offered by +the caller is too small to hold a line sent by the backend, then a partial +data line will be returned. This can be detected by testing whether the +last returned byte is '\n' or not. +The returned string is *not* null-terminated. +*/ + (conn)) +{ + PGconn *P; + char buffer[BLCKSZ]; + int ret; + + CHECK_PGCONN (conn); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + ret = PQgetlineAsync (P, buffer, sizeof (buffer)); + + if (ret == -1) return Qt; /* done! */ + else if (!ret) return Qnil; /* no data yet */ + else return Fcons (make_int (ret), + make_ext_string ((Extbyte *) buffer, ret, PG_OS_CODING)); +} + +DEFUN ("pq-put-nbytes", Fpq_put_nbytes, 2, 2, 0, /* +Asynchronous copy out. +*/ + (conn, data)) +{ + /* NULs are not allowed. I don't think this matters at this time. */ + PGconn *P; + char *c_data; + + CHECK_PGCONN (conn); + CHECK_STRING (data); + + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + TO_EXTERNAL_FORMAT (LISP_STRING, data, + C_STRING_ALLOCA, c_data, Qnative); + + return !PQputnbytes (P, c_data, strlen (c_data)) ? Qt : Qnil; +} + +DEFUN ("pq-end-copy", Fpq_end_copy, 1, 1, 0, /* +End a copying operation. +*/ + (conn)) +{ + PGconn *P; + + CHECK_PGCONN (conn); + P = (XPGCONN (conn))->pgconn; + CHECK_LIVE_CONNECTION (P); + + return PQendcopy (P) ? Qt : Qnil; +} + +void +syms_of_postgresql(void) +{ +#ifndef RUNNING_XEMACS_21_1 + INIT_LRECORD_IMPLEMENTATION (pgconn); + INIT_LRECORD_IMPLEMENTATION (pgresult); +#endif + DEFSYMBOL (Qpostgresql); + + /* opaque exported types */ + DEFSYMBOL (Qpgconnp); + DEFSYMBOL (Qpgresultp); + + /* connection status types */ + defsymbol (&Qpg_connection_ok, "pg::connection-ok"); + defsymbol (&Qpg_connection_bad, "pg::connection-bad"); + defsymbol (&Qpg_connection_started, "pg::connection-started"); + defsymbol (&Qpg_connection_made, "pg::connection-made"); + defsymbol (&Qpg_connection_awaiting_response, "pg::connection-awaiting-response"); + defsymbol (&Qpg_connection_auth_ok, "pg::connection-auth-ok"); + defsymbol (&Qpg_connection_setenv, "pg::connection-setenv"); + + /* Fields of PGconn */ + defsymbol (&Qpqdb, "pq::db"); + defsymbol (&Qpquser, "pq::user"); + defsymbol (&Qpqpass, "pq::pass"); + defsymbol (&Qpqhost, "pq::host"); + defsymbol (&Qpqport, "pq::port"); + defsymbol (&Qpqtty, "pq::tty"); + defsymbol (&Qpqoptions, "pq::options"); + defsymbol (&Qpqstatus, "pq::status"); + defsymbol (&Qpqerrormessage, "pq::error-message"); + defsymbol (&Qpqbackendpid, "pq::backend-pid"); + + /* Query status results */ + defsymbol (&Qpgres_empty_query, "pgres::empty-query"); + defsymbol (&Qpgres_command_ok, "pgres::command-ok"); + defsymbol (&Qpgres_tuples_ok, "pgres::tuples-ok"); + defsymbol (&Qpgres_copy_out, "pgres::copy-out"); + defsymbol (&Qpgres_copy_in, "pgres::copy-in"); + defsymbol (&Qpgres_bad_response, "pgres::bad-response"); + defsymbol (&Qpgres_nonfatal_error, "pgres::nonfatal-error"); + defsymbol (&Qpgres_fatal_error, "pgres::fatal-error"); + + /* Poll status results */ + defsymbol (&Qpgres_polling_failed, "pgres::polling-failed"); + defsymbol (&Qpgres_polling_reading, "pgres::polling-reading"); + defsymbol (&Qpgres_polling_writing, "pgres::polling-writing"); + defsymbol (&Qpgres_polling_ok, "pgres::polling-ok"); + defsymbol (&Qpgres_polling_active, "pgres::polling-active"); + +#ifdef HAVE_POSTGRESQLV7 + DEFSUBR (Fpq_connect_start); + DEFSUBR (Fpq_connect_poll); +#ifdef MULE + DEFSUBR (Fpq_client_encoding); + DEFSUBR (Fpq_set_client_encoding); +#endif /* MULE */ +#endif /* HAVE_POSTGRESQLV7 */ + DEFSUBR (Fpq_conn_defaults); + DEFSUBR (Fpq_connectdb); + DEFSUBR (Fpq_finish); + DEFSUBR (Fpq_clear); + DEFSUBR (Fpq_is_busy); + DEFSUBR (Fpq_consume_input); + + DEFSUBR (Fpq_reset); +#ifdef HAVE_POSTGRESQLV7 + DEFSUBR (Fpq_reset_start); + DEFSUBR (Fpq_reset_poll); +#endif + DEFSUBR (Fpq_request_cancel); + DEFSUBR (Fpq_pgconn); + + DEFSUBR (Fpq_exec); + DEFSUBR (Fpq_send_query); + DEFSUBR (Fpq_get_result); + DEFSUBR (Fpq_result_status); + DEFSUBR (Fpq_res_status); + DEFSUBR (Fpq_result_error_message); + DEFSUBR (Fpq_ntuples); + DEFSUBR (Fpq_nfields); + DEFSUBR (Fpq_binary_tuples); + DEFSUBR (Fpq_fname); + DEFSUBR (Fpq_fnumber); + DEFSUBR (Fpq_ftype); + DEFSUBR (Fpq_fsize); + DEFSUBR (Fpq_fmod); + /***/ + DEFSUBR (Fpq_get_value); + DEFSUBR (Fpq_get_length); + DEFSUBR (Fpq_get_is_null); + DEFSUBR (Fpq_cmd_status); + DEFSUBR (Fpq_cmd_tuples); + DEFSUBR (Fpq_oid_value); + +#ifdef HAVE_POSTGRESQLV7 + DEFSUBR (Fpq_set_nonblocking); + DEFSUBR (Fpq_is_nonblocking); + DEFSUBR (Fpq_flush); +#endif + DEFSUBR (Fpq_notifies); + +#if defined (HAVE_POSTGRESQLV7) && defined(MULE) + DEFSUBR (Fpq_env_2_encoding); +#endif + + DEFSUBR (Fpq_lo_import); + DEFSUBR (Fpq_lo_export); + + DEFSUBR (Fpq_make_empty_pgresult); + + /* copy in/out functions */ + DEFSUBR (Fpq_get_line); + DEFSUBR (Fpq_put_line); + DEFSUBR (Fpq_get_line_async); + DEFSUBR (Fpq_put_nbytes); + DEFSUBR (Fpq_end_copy); +} + +void +vars_of_postgresql(void) +{ + Fprovide (Qpostgresql); +#ifdef HAVE_POSTGRESQLV7 + Fprovide (intern ("postgresqlv7")); +#endif +#ifndef RUNNING_XEMACS_21_1 + Vpg_coding_system = Qnative; + DEFVAR_LISP ("pg-coding-system", &Vpg_coding_system /* +Default Postgres client coding system. +*/ ); +#endif + + DEFVAR_LISP ("pg:host", &VXPGHOST /* +Default PostgreSQL server name. +If not set, the server running on the local host is used. The +initial value is set from the PGHOST environment variable. +*/ ); + + DEFVAR_LISP ("pg:user", &VXPGUSER /* +Default PostgreSQL user name. +This value is used when connecting to a database for authentication. +The initial value is set from the PGUSER environment variable. +*/ ); + + DEFVAR_LISP ("pg:options", &VXPGOPTIONS /* +Default PostgreSQL user name. +This value is used when connecting to a database for authentication. +The initial value is set from the PGUSER environment variable. +*/ ); + + DEFVAR_LISP ("pg:port", &VXPGPORT /* +Default port to connect to PostgreSQL backend. +This value is used when connecting to a database. +The initial value is set from the PGPORT environment variable. +*/ ); + + DEFVAR_LISP ("pg:tty", &VXPGTTY /* +Default debugging TTY. +There is no useful setting of this variable in the XEmacs Lisp API. +The initial value is set from the PGTTY environment variable. +*/ ); + + DEFVAR_LISP ("pg:database", &VXPGDATABASE /* +Default database to connect to. +The initial value is set from the PGDATABASE environment variable. +*/ ); + + DEFVAR_LISP ("pg:realm", &VXPGREALM /* +Default kerberos realm to use for authentication. +The initial value is set from the PGREALM environment variable. +*/ ); + +#ifdef MULE + /* It's not clear whether this is any use. My intent is to + autodetect the coding system from the database. */ + DEFVAR_LISP ("pg:client-encoding", &VXPGCLIENTENCODING /* +Default client encoding to use. +The initial value is set from the PGCLIENTENCODING environment variable. +*/ ); +#endif + +#if !defined(HAVE_POSTGRESQLV7) + DEFVAR_LISP ("pg:authtype", &VXPGAUTHTYPE /* +Default authentication to use. +The initial value is set from the PGAUTHTYPE environment variable. + +WARNING: This variable has gone away in versions of PostgreSQL newer +than 6.5. +*/ ); +#endif + + DEFVAR_LISP ("pg:geqo", &VXPGGEQO /* +Genetic Query Optimizer options. +The initial value is set from the PGGEQO environment variable. +*/ ); + + DEFVAR_LISP ("pg:cost-index", &VXPGCOSTINDEX /* +Default cost index options. +The initial value is set from the PGCOSTINDEX environment variable. +*/ ); + + DEFVAR_LISP ("pg:cost-heap", &VXPGCOSTHEAP /* +Default cost heap options. +The initial value is set from the PGCOSTHEAP environment variable. +*/ ); + + DEFVAR_LISP ("pg:tz", &VXPGTZ /* +Default timezone to use. +The initial value is set from the PGTZ environment variable. +*/ ); + + DEFVAR_LISP ("pg:date-style", &VXPGDATESTYLE /* +Default date style to use. +The initial value is set from the PGDATESTYLE environment variable. +*/ ); + +#ifdef HAVE_SHLIB + /* If we are building this as a module, we need the initializing function to + run at module load time. */ + init_postgresql_from_environment (); +#endif +} + +/* These initializations should not be done at dump-time. */ +void +init_postgresql_from_environment (void) +{ + Ibyte *p; + +#define FROB(envvar, var) \ + if ((p = egetenv (envvar))) \ + var = build_intstring (p); \ + else \ + var = Qnil + + if (initialized) + { + FROB ("PGHOST", VXPGHOST); + FROB ("PGUSER", VXPGUSER); + FROB ("PGOPTIONS", VXPGOPTIONS); + + if ((p = egetenv ("PGPORT"))) + VXPGPORT = make_int (atoi ((char *) p)); + else + VXPGPORT = Qnil; + + FROB ("PGTTY", VXPGTTY); + FROB ("PGDATABASE", VXPGDATABASE); + FROB ("PGREALM", VXPGREALM); +#ifdef MULE + /* It's not clear whether this is any use. My intent is to + autodetect the coding system from the database. */ + FROB ("PGCLIENTENCODING", VXPGCLIENTENCODING); +#endif + +#if !defined(HAVE_POSTGRESQLV7) + FROB ("PGAUTHTYPE", VXPGAUTHTYPE); +#endif + + FROB ("PGGEQO", VXPGGEQO); + FROB ("PGCOSTINDEX", VXPGCOSTINDEX); + FROB ("PGCOSTHEAP", VXPGCOSTHEAP); + FROB ("PGTZ", VXPGTZ); + FROB ("PGDATESTYLE", VXPGDATESTYLE); +#undef FROB + } +} + +#ifdef HAVE_SHLIB +void unload_postgresql (void); +void +unload_postgresql (void) +{ +#ifndef RUNNING_XEMACS_21_1 + /* Remove defined types */ + UNDEF_LRECORD_IMPLEMENTATION (pgconn); + UNDEF_LRECORD_IMPLEMENTATION (pgresult); +#endif + + /* Remove staticpro'ing of symbols */ + unstaticpro_nodump (&Qpostgresql); + unstaticpro_nodump (&Qpgconnp); + unstaticpro_nodump (&Qpgresultp); + unstaticpro_nodump (&Qpg_connection_ok); + unstaticpro_nodump (&Qpg_connection_bad); + unstaticpro_nodump (&Qpg_connection_started); + unstaticpro_nodump (&Qpg_connection_made); + unstaticpro_nodump (&Qpg_connection_awaiting_response); + unstaticpro_nodump (&Qpg_connection_auth_ok); + unstaticpro_nodump (&Qpg_connection_setenv); + unstaticpro_nodump (&Qpqdb); + unstaticpro_nodump (&Qpquser); + unstaticpro_nodump (&Qpqpass); + unstaticpro_nodump (&Qpqhost); + unstaticpro_nodump (&Qpqport); + unstaticpro_nodump (&Qpqtty); + unstaticpro_nodump (&Qpqoptions); + unstaticpro_nodump (&Qpqstatus); + unstaticpro_nodump (&Qpqerrormessage); + unstaticpro_nodump (&Qpqbackendpid); + unstaticpro_nodump (&Qpgres_empty_query); + unstaticpro_nodump (&Qpgres_command_ok); + unstaticpro_nodump (&Qpgres_tuples_ok); + unstaticpro_nodump (&Qpgres_copy_out); + unstaticpro_nodump (&Qpgres_copy_in); + unstaticpro_nodump (&Qpgres_bad_response); + unstaticpro_nodump (&Qpgres_nonfatal_error); + unstaticpro_nodump (&Qpgres_fatal_error); + unstaticpro_nodump (&Qpgres_polling_failed); + unstaticpro_nodump (&Qpgres_polling_reading); + unstaticpro_nodump (&Qpgres_polling_writing); + unstaticpro_nodump (&Qpgres_polling_ok); + unstaticpro_nodump (&Qpgres_polling_active); +} +#endif /* HAVE_SHLIB */ diff --text -u /dev/null 'xemacs-21.5.10/modules/postgresql/postgresql.h' Index: ././modules/postgresql/postgresql.h --- ././modules/postgresql/postgresql.h Thu Jan 1 09:00:00 1970 +++ ././modules/postgresql/postgresql.h Wed Sep 11 00:27:18 2002 @@ -0,0 +1,64 @@ +/* + postgresql.h -- Emacs Lisp binding to libpq.so + Copyright (C) 2000 Electrotechnical Laboratory, JAPAN. + Licensed to the Free Software Foundation. + + Author: SL Baur + Maintainer: SL Baur + +Please send patches to this file to me first before submitting them to +xemacs-patches. +*/ + +#ifndef INCLUDED_postgresql_h_ +#define INCLUDED_postgresql_h_ 1 + +#define message message_ /* Yuck */ +#include LIBPQ_FE_H_FILE /* main PostgreSQL header file */ +#undef message + +#define BLCKSZ 8192 /* size of a default Postgres disk block */ +/* + This file contains the GCC bug workaround code for the private + LRECORD types. +*/ + +/* PGconn is an opaque object and we need to be able to store them in + Lisp code because libpq supports multiple connections. +*/ +struct Lisp_PGconn +{ + struct lcrecord_header header; + PGconn *pgconn; +}; +typedef struct Lisp_PGconn Lisp_PGconn; + +DECLARE_LRECORD (pgconn, Lisp_PGconn); + +#define XPGCONN(x) XRECORD (x, pgconn, Lisp_PGconn) +#define wrap_pgconn(p) wrap_record (p, pgconn) +#define PGCONNP(x) RECORDP (x, pgconn) +#define CHECK_PGCONN(x) CHECK_RECORD (x, pgconn) +#define CONCHECK_PGCONN(x) CONCHECK_RECORD (x, pgconn) + +/****/ + +/* PGresult is an opaque object and we need to be able to store them in + Lisp code. +*/ +struct Lisp_PGresult +{ + struct lcrecord_header header; + PGresult *pgresult; +}; +typedef struct Lisp_PGresult Lisp_PGresult; + +DECLARE_LRECORD (pgresult, Lisp_PGresult); + +#define XPGRESULT(x) XRECORD (x, pgresult, Lisp_PGresult) +#define wrap_pgresult(p) wrap_record (p, pgresult) +#define PGRESULTP(x) RECORDP (x, pgresult) +#define CHECK_PGRESULT(x) CHECK_RECORD (x, pgresult) +#define CONCHECK_PGRESULT(x) CONCHECK_RECORD (x, pgresult) + +#endif /* INCLUDED_postgresql_h_ */ diff --text -u /dev/null 'xemacs-21.5.10/modules/sample/external/Makefile.in.in' Index: ././modules/sample/external/Makefile.in.in --- ././modules/sample/external/Makefile.in.in Thu Jan 1 09:00:00 1970 +++ ././modules/sample/external/Makefile.in.in Wed Sep 11 00:27:24 2002 @@ -0,0 +1,52 @@ +## Makefile for the sample module in XEmacs. +## Copyright (C) 2002 Jerry James. + +## This file is not part of XEmacs. + +### Specialize this part for your module +MODNAME=sample +MODVER=0.0.1 +MODTITLE="Sample module for XEmacs" +SRCS=sample.c + +### You should not need to modify anything below this line +SRC_SRCS=$(SRCS:%=$(srcdir)/%) +OBJS=$(SRCS:.c=.o) + +SHELL=/bin/sh +RM=rm -f +CFLAGS=@CFLAGS@ +LDFLAGS=@LDFLAGS@ + +srcdir=@srcdir@ +VPATH=@srcdir@ + +ELLCC=@ELLCC@ +MODARCHDIR=$(shell @ELLCC@ --mod-archdir) +INSTALLPATH=$(shell @ELLCC@ --mod-site-location) +INSTALL=@INSTALL@ +INSTALL_PROGRAM=@INSTALL_PROGRAM@ + +.PHONY: clean distclean install +all: $(MODNAME).ell + +.c.o: + $(ELLCC) $(CFLAGS) --mode=compile --mod-output=$@ \ + -I$(MODARCHDIR)/include -c $< + +$(MODNAME).ell: $(OBJS) $(MODNAME)_i.o + $(ELLCC) --mode=link --mod-output=$@ $^ $(LDFLAGS) + +$(MODNAME)_i.c: $(SRCS) + ELLMAKEDOC=$(MODARCHDIR)/make-docfile $(ELLCC) --mode=init \ + --mod-output=$@ --mod-name=$(MODNAME) --mod-version=$(MODVER) \ + --mod-title=$(MODTITLE) $(SRC_SRCS) + +clean: + $(RM) $(MODNAME).ell $(OBJS) $(MODNAME)_i.* *~ + +distclean: clean + $(RM) Makefile config.* configure + +install: $(MODNAME).ell + $(INSTALL_PROGRAM) $< $(INSTALLPATH) diff --text -u /dev/null 'xemacs-21.5.10/modules/sample/external/configure.ac' Index: ././modules/sample/external/configure.ac --- ././modules/sample/external/configure.ac Thu Jan 1 09:00:00 1970 +++ ././modules/sample/external/configure.ac Wed Sep 11 00:27:24 2002 @@ -0,0 +1,26 @@ +# Process this file with autoconf to produce a configure script. +AC_INIT([Sample module], [1.0], [xemacs-beta@xemacs.org]) +AC_PREREQ(2.53) +AC_REVISION($Revision: 1.1 $) +AC_COPYRIGHT([Configuration script for the sample module. +Copyright (C) 2002 Jerry James. + +This file is not part of XEmacs.]) + +AC_CONFIG_SRCDIR([sample.c]) +AC_PROG_CC +AC_PROG_INSTALL +AC_SUBST(CFLAGS) +AC_SUBST(LDFLAGS) + +# Find ELLCC +AC_ARG_VAR([ELLCC], [The path to the ellcc module compiler]) +AC_PATH_PROG([ELLCC], [ellcc], ["FAIL"]) +AS_IF([test "$ELLCC" = "FAIL"], [AS_ERROR([Cannot find ellcc])]) +AC_SUBST(ELLCC) + +# Insert autoconf macros here to find the headers, libraries, other +# programs, etc. needed by your module. + +AC_CONFIG_FILES([Makefile.in Makefile]) +AC_OUTPUT diff --text -u /dev/null 'xemacs-21.5.10/modules/sample/external/install-sh' Index: ././modules/sample/external/install-sh --- ././modules/sample/external/install-sh Thu Jan 1 09:00:00 1970 +++ ././modules/sample/external/install-sh Wed Sep 11 00:27:24 2002 @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + : + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + : + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --text -u /dev/null 'xemacs-21.5.10/modules/sample/external/sample.c' Index: ././modules/sample/external/sample.c --- ././modules/sample/external/sample.c Thu Jan 1 09:00:00 1970 +++ ././modules/sample/external/sample.c Wed Sep 11 00:27:24 2002 @@ -0,0 +1,110 @@ +/* + * Very simple sample module. Illustrates most of the salient features + * of Emacs dynamic modules. + * (C) Copyright 1998, 1999 J. Kean Johnston. All rights reserved. + * (C) Copyright 2002 Jerry James. + */ + +#include +#include "lisp.h" + +/* + * This sample introduces three new Lisp objects to the Lisp reader. + * The first, a simple boolean value, and the second a string. The + * Third is a sample function that simply prints a message. + */ +int sample_bool; +Lisp_Object Vsample_string; + +DEFUN ("sample-function", Fsample_function, 0, 0, "", /* +This is a sample function loaded dynamically. + +You will notice in the source code for this module that the +declaration is identical to internal Emacs functions. This +makes it possible to use the exact same code in a dumped +version of Emacs. +*/ + ()) +{ + message ("Eureka! It worked"); + return Qt; +} + +/* + * Each dynamically loaded Emacs module is given a name at compile + * time. This is a short name, and must be a valid part of a C + * identifier. This name is used to construct the name of several + * functions which must appear in the module source code. + * The first such function, modules_of_XXXX, should load in any dependent + * modules. This function is optional, and the module will still load if + * it is not present in the module. + * + * The second function, which is NOT optional, is syms_of_XXXX, in which + * all functions that the module will be provided are declared. This + * function will contain calls to DEFSUBR(). + * + * The third function, which is also NOT optional, is vars_of_XXXX, in + * which you declare all variables that the module provides. This + * function will contain calls to DEFVAR_LISP(), DEFVAR_BOOL() etc. + * + * When declaring functions and variables in the syms_of_XXXX and + * vars_of_XXXX functions, you use the exact same syntax that you + * would as if this module were being compiled into the pure Emacs. + * + * The fourth function, which is optional, is unload_XXXX, in which actions + * that must be taken to unload the module are listed. XEmacs will unbind + * functions and variables for you. Anything else that must be done should + * appear in this function. + * + * All four of these functions are declared as void functions, + * taking no parameters. Since this sample module is called 'sample', + * the functions will be named 'modules_of_sample', 'syms_of_sample', + * 'vars_of_sample', and 'unload_sample'. + */ + +void +modules_of_sample() +{ + /* + * This function isn't actually required as we will not be loading + * in any dependent modules, but if we were, we would do something like: + * emodules_load ("dependent.ell", "sample2", "1.0.0"); + */ +} + +void +syms_of_sample() +{ + DEFSUBR(Fsample_function); +} + +void +vars_of_sample() +{ + DEFVAR_LISP ("sample-string", &Vsample_string /* +This is a sample string, declared in a dynamic module. + +The syntax and conventions used for all normal Emacs variables +apply equally to modules, using an identical syntax. +*/ ); + + DEFVAR_BOOL ("sample-boolean", &sample_bool /* +*Sample boolean value, in a dynamic module. + +This is a user-settable variable, as indicated by the * +as the first character of the description. Declared in +a module exactly as it would be internally in Emacs. +*/ ); +} + +#ifdef HAVE_SHLIB +void +unload_sample() +{ + /* We don't need to do anything here in the sample case. However, if you + create any new types with INIT_LRECORD_IMPLEMENTATION (sample_type), then + UNDEF_LRECORD_IMPLEMENTATION (sample_type) must appear here. Also, any + symbols declared with DEFSYMBOL (Qsample_var), or one of its variants, + must have a corresponding unstaticpro_nodump (&Qsample_var) here. */ +} +#endif diff --text -u /dev/null 'xemacs-21.5.10/modules/sample/internal/Makefile.in.in' Index: ././modules/sample/internal/Makefile.in.in --- ././modules/sample/internal/Makefile.in.in Thu Jan 1 09:00:00 1970 +++ ././modules/sample/internal/Makefile.in.in Wed Sep 11 00:27:27 2002 @@ -0,0 +1,85 @@ +## Makefile for the sample module in XEmacs. +## Copyright (C) 2002 Jerry James. + +## 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 2, 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; see the file COPYING. If not, write to +## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +## Boston, MA 02111-1307, USA. + +## Synched up with: Not synched with FSF. + +## This is more complicated than would normally be the case, as this makefile +## has been tailored to work both inside and independently of the XEmacs +## source tree, and to support both module and non-module building inside the +## source tree. + +### Specialize this part for your module +MODNAME=sample +MODVER=0.0.1 +MODTITLE="Sample module for XEmacs" +LDFLAGS=@LDFLAGS@ @sample_libs@ +SRCS=sample.c + +### You should not need to modify anything below this line +SRC_SRCS=$(SRCS:%=$(srcdir)/%) +OBJS=$(SRCS:.c=.o) + +SHELL=/bin/sh +RM=rm -f +PROGNAME=@PROGNAME@ +CFLAGS=@CFLAGS@ +INSTALL=@INSTALL@ +version=@version@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +instvardir=@instvardir@ +configuration=@configuration@ +moduledir=@moduledir@ +with_modules=@with_modules@ + +srcdir=@srcdir@ +VPATH=@srcdir@ + +CC=@MOD_CC@ +MODARCHDIR=@MODARCHDIR@ +MAKE_DOCFILE=@MAKE_DOCFILE@ +MODCFLAGS=@MODCFLAGS@ +INSTALLPATH=@INSTALLPATH@ +INSTALL_PROGRAM=@MOD_INSTALL_PROGRAM@ +OBJECT_TO_BUILD=@OBJECT_TO_BUILD@ + +.PHONY: clean distclean install +all: $(OBJECT_TO_BUILD) + +.c.o: + $(CC) $(MODCFLAGS) -c $< + +$(MODNAME).ell: $(OBJS) $(MODNAME)_i.o + $(CC) --mode=link --mod-output=$@ $^ $(LDFLAGS) + +$(MODNAME)_i.c: $(SRCS) + ELLMAKEDOC=$(MAKE_DOCFILE) $(CC) --mode=init --mod-output=$@ \ + --mod-name=$(MODNAME) --mod-version=$(MODVER) \ + --mod-title=$(MODTITLE) $(SRC_SRCS) + +clean: + $(RM) $(MODNAME).ell $(OBJS) $(MODNAME)_i.* *~ + +distclean: clean + $(RM) Makefile config.* configure + +install: $(OBJECT_TO_BUILD) + $(INSTALL_PROGRAM) $< $(INSTALLPATH) diff --text -u /dev/null 'xemacs-21.5.10/modules/sample/internal/configure.ac' Index: ././modules/sample/internal/configure.ac --- ././modules/sample/internal/configure.ac Thu Jan 1 09:00:00 1970 +++ ././modules/sample/internal/configure.ac Wed Sep 11 00:27:28 2002 @@ -0,0 +1,53 @@ +# Process this file with autoconf to produce a configure script. +# This is only used for independent module building. +AC_INIT([Sample module], [1.0], [xemacs-beta@xemacs.org]) +AC_PREREQ(2.53) +AC_REVISION($Revision: 1.1 $) +AC_COPYRIGHT([Configuration script for the sample module. +Copyright (C) 2002 Jerry James. + +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 2, 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; see the file COPYING. If not, write to the Free +Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA.]) + +AC_CONFIG_SRCDIR([sample.c]) +AC_PROG_CC +AC_PROG_INSTALL +AC_SUBST(CFLAGS) +AC_SUBST(LDFLAGS) + +# Find ELLCC +AC_ARG_VAR([ELLCC], [The path to the ellcc module compiler]) +AC_PATH_PROG([ELLCC], [ellcc], ["FAIL"]) +AS_IF([test "$ELLCC" = "FAIL"], [AS_ERROR([Cannot find ellcc])]) + +# Insert autoconf macros here to find the headers, libraries, other +# programs, etc. needed by your module. If other libraries will be linked +# with your module, then after detecting them, use a line of this form last: +AC_SUBST(sample_libs, "$LIBS") + +# This part should appear unchanged in every module configure.ac +AC_SUBST(PROGNAME, "module") +AC_SUBST(MOD_CC, "@ELLCC@") +AC_SUBST(MODARCHDIR, "\$(shell @ELLCC@ --mod-archdir)") +AC_SUBST(MAKE_DOCFILE, "\$(MODARCHDIR)/make-docfile") +AC_SUBST(MODCFLAGS, "\$(CFLAGS) --mode=compile --mod-output=\$@ -I\$(MODARCHDIR)/include") +AC_SUBST(INSTALLPATH, "\$(shell @ELLCC@ --mod-site-location)") +AC_SUBST(MOD_INSTALL_PROGRAM, "@INSTALL_PROGRAM@") +AC_SUBST(OBJECT_TO_BUILD, "\$(MODNAME).ell") + +AC_CONFIG_FILES([Makefile.in Makefile]) +AC_OUTPUT diff --text -u /dev/null 'xemacs-21.5.10/modules/sample/internal/install-sh' Index: ././modules/sample/internal/install-sh --- ././modules/sample/internal/install-sh Thu Jan 1 09:00:00 1970 +++ ././modules/sample/internal/install-sh Wed Sep 11 00:27:28 2002 @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + : + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + : + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --text -u /dev/null 'xemacs-21.5.10/modules/sample/internal/sample.c' Index: ././modules/sample/internal/sample.c --- ././modules/sample/internal/sample.c Thu Jan 1 09:00:00 1970 +++ ././modules/sample/internal/sample.c Wed Sep 11 00:27:28 2002 @@ -0,0 +1,110 @@ +/* + * Very simple sample module. Illustrates most of the salient features + * of Emacs dynamic modules. + * (C) Copyright 1998, 1999 J. Kean Johnston. All rights reserved. + * (C) Copyright 2002 Jerry James. + */ + +#include +#include "lisp.h" + +/* + * This sample introduces three new Lisp objects to the Lisp reader. + * The first, a simple boolean value, and the second a string. The + * Third is a sample function that simply prints a message. + */ +int sample_bool; +Lisp_Object Vsample_string; + +DEFUN ("sample-function", Fsample_function, 0, 0, "", /* +This is a sample function loaded dynamically. + +You will notice in the source code for this module that the +declaration is identical to internal Emacs functions. This +makes it possible to use the exact same code in a dumped +version of Emacs. +*/ + ()) +{ + message ("Eureka! It worked"); + return Qt; +} + +/* + * Each dynamically loaded Emacs module is given a name at compile + * time. This is a short name, and must be a valid part of a C + * identifier. This name is used to construct the name of several + * functions which must appear in the module source code. + * The first such function, modules_of_XXXX, should load in any dependent + * modules. This function is optional, and the module will still load if + * it is not present in the module. + * + * The second function, which is NOT optional, is syms_of_XXXX, in which + * all functions that the module will be provided are declared. This + * function will contain calls to DEFSUBR(). + * + * The third function, which is also NOT optional, is vars_of_XXXX, in + * which you declare all variables that the module provides. This + * function will contain calls to DEFVAR_LISP(), DEFVAR_BOOL() etc. + * + * When declaring functions and variables in the syms_of_XXXX and + * vars_of_XXXX functions, you use the exact same syntax that you + * would as if this module were being compiled into the pure Emacs. + * + * The fourth function, which is optional, is unload_XXXX, in which actions + * that must be taken to unload the module are listed. XEmacs will unbind + * functions and variables for you. Anything else that must be done should + * appear in this function. + * + * All four of these functions are declared as void functions, + * taking no parameters. Since this sample module is called 'sample', + * the functions will be named 'modules_of_sample', 'syms_of_sample', + * 'vars_of_sample', and 'unload_sample'. + */ + +void +modules_of_sample() +{ + /* + * This function isn't actually required as we will not be loading + * in any dependent modules, but if we were, we would do something like: + * emodules_load ("dependent.ell", "sample2", "1.0.0"); + */ +} + +void +syms_of_sample() +{ + DEFSUBR(Fsample_function); +} + +void +vars_of_sample() +{ + DEFVAR_LISP ("sample-string", &Vsample_string /* +This is a sample string, declared in a dynamic module. + +The syntax and conventions used for all normal Emacs variables +apply equally to modules, using an identical syntax. +*/ ); + + DEFVAR_BOOL ("sample-boolean", &sample_bool /* +*Sample boolean value, in a dynamic module. + +This is a user-settable variable, as indicated by the * +as the first character of the description. Declared in +a module exactly as it would be internally in Emacs. +*/ ); +} + +#ifdef HAVE_SHLIB +void +unload_sample() +{ + /* We don't need to do anything here in the sample case. However, if you + create any new types with INIT_LRECORD_IMPLEMENTATION (sample_type), then + UNDEF_LRECORD_IMPLEMENTATION (sample_type) must appear here. Also, any + symbols declared with DEFSYMBOL (Qsample_var), or one of its variants, + must have a corresponding unstaticpro_nodump (&Qsample_var) here. */ +} +#endif diff --text -u 'xemacs-21.5.9/netinstall/ChangeLog' 'xemacs-21.5.10/netinstall/ChangeLog' Index: ./netinstall/ChangeLog Prereq: 1.22 --- ./netinstall/ChangeLog Fri Aug 30 17:26:13 2002 +++ ./netinstall/ChangeLog Sun Jan 5 14:13:39 2003 @@ -1,3 +1,7 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. @@ -463,6 +467,6 @@ * all: port from cygwin setup. -%%% $Id: ChangeLog,v 1.22 2002/08/30 08:26:13 youngs Exp $ -$Revision: 1.22 $ +%%% $Id: ChangeLog,v 1.23 2003/01/05 05:13:39 youngs Exp $ +$Revision: 1.23 $ diff --text -u 'xemacs-21.5.9/nt/ChangeLog' 'xemacs-21.5.10/nt/ChangeLog' Index: ./nt/ChangeLog --- ./nt/ChangeLog Fri Aug 30 17:26:15 2002 +++ ./nt/ChangeLog Sun Jan 5 14:13:40 2003 @@ -1,3 +1,23 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + +2002-11-27 Ben Wing + + * .cvsignore: + Windows shit. + +2002-10-13 Adrian Aichner + + * xemacs.mak (OS): Remove obsolete quoting of double-quote in the + Installation file to avoid unnecessary deviations from the UNIX + version in `describe-installation' and `build-report'. + +2002-09-13 Adrian Aichner + + * xemacs.mak: Suppress confirmation for overwriting files. + * xemacs.mak (installation): Add support for xemacs_extra_name. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. diff --text -u 'xemacs-21.5.9/nt/installer/Wise/ChangeLog' 'xemacs-21.5.10/nt/installer/Wise/ChangeLog' Index: ./nt/installer/Wise/ChangeLog --- ./nt/installer/Wise/ChangeLog Fri Aug 30 17:26:17 2002 +++ ./nt/installer/Wise/ChangeLog Sun Jan 5 14:13:41 2003 @@ -1,3 +1,7 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. diff --text -u 'xemacs-21.5.9/nt/make-nt-depend' 'xemacs-21.5.10/nt/make-nt-depend' Index: ./nt/make-nt-depend --- ./nt/make-nt-depend Fri Mar 29 20:12:44 2002 +++ ./nt/make-nt-depend Mon Nov 18 15:52:34 2002 @@ -46,6 +46,10 @@ while (<>) { + # must hack away CRLF junk. wouldn't it be nice if perl handled this + # right?? really can't be that hard!!! + s/\r\n/\n/g; + # rewrite references to generating script s/make-src-depend/make-nt-depend/; @@ -64,5 +68,5 @@ # add dependency on config.inc to all objects (this might be too broad) s/^(.+)\.o:(.+)/$obj\\$1.obj:$2 $config\\config.inc/; - print; + print; } diff --text -u 'xemacs-21.5.9/nt/xemacs.mak' 'xemacs-21.5.10/nt/xemacs.mak' Index: ./nt/xemacs.mak --- ./nt/xemacs.mak Thu Aug 1 05:26:41 2002 +++ ./nt/xemacs.mak Tue Oct 15 04:20:17 2002 @@ -56,11 +56,13 @@ # So only delete one glob at a time. Override flags in config.inc. DEL=del -# Define the 'copy' command to use -# Suppress confirmation for overwriting files +# Tell COPY, MOVE, and XCOPY to suppress confirmation for overwriting +# files. +# set COPYCMD=/y +# Define the 'copy' command to use. # Use /r (instead of /y), which exists on Windows NT 4 and 5. -COPY=xcopy /q /y -COPYDIR=xcopy /q /y /e +COPY=xcopy /q /r +COPYDIR=xcopy /q /r /e # Program name and version @@ -570,9 +572,11 @@ @copy $(SRC)\config.h.in $(SRC)\config.h $(SRC)\Emacs.ad.h: Emacs.ad.h + set COPYCMD=/y @$(COPY) Emacs.ad.h $(SRC) $(SRC)\paths.h: paths.h + set COPYCMD=/y @$(COPY) paths.h $(SRC) #------------------------------------------------------------------------------ @@ -1334,6 +1338,7 @@ # use this rule to install the system install: all cd $(NT) + set COPYCMD=/y @echo Installing in $(INSTALL_DIR) ... @echo PlaceHolder > PlaceHolder @$(COPY) PROBLEMS "$(INSTALL_DIR)\" @@ -1447,16 +1452,16 @@ OS: $(OS) !endif -XEmacs $(XEMACS_VERSION_STRING) $(xemacs_codename:"=\") configured for `$(EMACS_CONFIGURATION)'. +XEmacs $(XEMACS_VERSION_STRING) $(xemacs_codename) $(xemacs_extra_name:"=) configured for `$(EMACS_CONFIGURATION)'. - Building XEmacs using \"$(MAKE:\=\\)\". - Building XEmacs using make flags \"$(MAKEFLAGS)\". - Building XEmacs in \"$(MAKEDIR:\=\\)\". + Building XEmacs using "$(MAKE:\=\\)". + Building XEmacs using make flags "$(MAKEFLAGS)". + Building XEmacs in "$(MAKEDIR:\=\\)". !if defined(CCV) - Using compiler \"$(CC) $(CFLAGS)\". + Using compiler "$(CC) $(CFLAGS)". !endif - Installing XEmacs in \"$(INSTALL_DIR:\=\\)\". - Package path is $(PATH_PACKAGEPATH:"=\"). + Installing XEmacs in "$(INSTALL_DIR:\=\\)". + Package path is $(PATH_PACKAGEPATH). !if $(INFODOCK) Building InfoDock. !endif diff --text -u 'xemacs-21.5.9/src/ChangeLog' 'xemacs-21.5.10/src/ChangeLog' Index: ./src/ChangeLog --- ./src/ChangeLog Fri Aug 30 17:26:18 2002 +++ ./src/ChangeLog Sun Jan 5 14:13:42 2003 @@ -1,3 +1,460 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + +2002-12-15 Ben Wing + + * 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 + + * frame.c (enter_redisplay_critical_section): + * frame.c (exit_redisplay_critical_section): + Inhibit GC during critical sections. + +2002-12-12 Andy Piper + + * sheap.c (report_sheap_usage): fixup calculation. + +2002-12-03 John Paul Wallington + + * alloc.c (garbage_collection_messages): New variable. + (vars_of_alloc): Declare and initialise it. + (garbage_collect_1): Respect it. + +2002-12-02 Mike Sperber + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * emacs.c (shut_down_emacs): Improve crash message. + +2002-10-17 Raymond Toy + + * 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 + + * ExternalClient.c (externalClientRealize): Suppress "unused" warning. + +2002-10-19 Stephen Turnbull + + * extw-Xt.c (isMine): Suppress signed-unsigned compare warning. + +2002-10-19 Stephen Turnbull + + * mule-canna.c (Fcanna_touroku_string): + (Fcanna_change_mode): + (Fcanna_do_function): + Fix "unused variable" warnings. + +2002-10-18 Stephen Turnbull + + * event-Xt.c (enqueue_focus_event): Prototype it. + +2002-10-24 Andy Piper + + * 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 + + * fns.c (Frequire): Add optional `noerror' argument. + +2002-10-24 Andy Piper + + * glyphs-widget.c (layout_query_geometry): only resize dynamically + if static sizes haven't been set. + +2002-09-21 Stephen J. Turnbull + + * extents.c (Fset_extent_property): Document `syntax-table' + property. + +2002-08-20 Ben Sigelman + + * 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 + + * regex.c (re_match_2_internal): Declare num_nonshy_regs in + enclosing scope. + +2002-09-09 Stephen J. Turnbull + + * 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. + + * frame-x.c (x_delete_frame): do not call XtDisplay on a destroyed + widget. + +2002-09-22 Mike Sperber + + * 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 + + (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 + + * 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 + + * 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 + + * 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 + + * event-msw.c (winsock_closer): Use closesocket, not CloseHandle + to close a socket. + +2002-08-31 Seiichi Ikiuo + + * 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 * XEmacs 21.5.9 "brussels sprouts" is released. @@ -20319,3 +20776,17056 @@ 2000-01-09 Hrvoje Niksic * insdel.c (signal_after_change): Remove extraneous unbind_to(). + +2000-01-09 Norbert Koch + + * sysfile.h: Remove definition of HAVE_FSYNC. It's tested for + in configure. + +2000-01-09 Martin Buchholz + + * 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 + + * 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 + + * gdbinit: rename to .gdbinit so that gdb will automatically source it. + +2000-01-09 Hrvoje Niksic + + * 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 + + * 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 + + * 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] + + * 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 + + * 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 + + * 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 + + * XEmacs 21.2.26 is released. + +1999-12-31 Andy Piper + + * glyphs-x.c (x_widget_instantiate): Avoid X errors calling + XMapWindow() on a NULL pointer X window. + +1999-12-31 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * XEmacs 21.2.25 is released. + +1999-12-22 Yoshiki Hayashi + + * syntax.c (vars_of_syntax): Initialize parse-sexp_ignore_comments. + +1999-12-21 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * fns.c (Ffillarray): Use O(N), not O(N^2) algorithm for strings. + +1999-12-19 Hrvoje Niksic + + * profile.c (sigprof_handler): FUN retrieved from the backtrace + can also be a cons representing anonymous interpreted function. + +1999-12-18 Martin Buchholz + + * fns.c (mapcar1): + (Fmapconcat): + (Fmapcar): + (Fmapvector): + Docstring fixes. Make them consistent with the lispref and ANSI Lisp. + +1999-12-17 Martin Buchholz + + * 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 + + * filelock.c (unlock_all_files): GC_CONSP should be CONSP + +1999-12-17 Martin Buchholz + + * 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 + + * 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 + + * buffer.c (Fbury_buffer): Add directions to the docstring. + +1999-12-14 Martin Buchholz + + * XEmacs 21.2.24 is released. + +1999-12-13 Martin Buchholz + + * 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 + + * input-method-xlib.c: Make sure src/ does not use Athena, except + indirectly through lwlib. + +1999-12-13 Gunnar Evermann + + * dbxrc (pobj): Add opaque_ptr, remove opaque_list. + +1999-12-10 Shenghuo ZHU + + * file-coding.c (add_coding_system_to_list_mapper): + - (coding-system-list) should list aliases correctly. + +1999-12-07 Andy Piper + + * fileio.c (vars_of_fileio): directory separator fix from Mike Alexander. + * windowsnt.h (ditto): + +1999-11-27 Adrian Aichner + + * 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 + + * XEmacs 21.2.23 is released. + +1999-12-06 Martin Buchholz + + * 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 + + * lstream.c (Lstream_adding): + - Never compare a size_t and a possibly negative number. + - Optimize. + +1999-12-05 Kyle Jones + + * lisp/itimer.el: (require 'lisp-float-type). Use + floats directly in itimer-time-difference. + +1999-12-05 Andy Piper + + * 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 + + * src/callproc.c (Fcall_process_internal): Be careful in writing + terminating null when copying args. nargs can be < 4. + Idea from Klaus Frank + +1999-11-29 Kyle Jones + + * 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 + + * glyphs-x.c (convert_EImage_to_XImage): Guard against other + visual classes. From Rasmus Borup Hansen + +1999-12-04 Martin Buchholz + + * 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 for exit(). + * unexhp9k800.x: #include for malloc(). + Use proper prototype for Save_Shared_Data(void). + +1999-12-04 Jan Vroonhof + + * src/redisplay.c (point_would_be_visible): Correct for topclip. + +1999-12-02 Hrvoje Niksic + + * 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 + + * 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 + + * 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 + + * XEmacs 21.2.22 is released + +1999-11-28 Martin Buchholz + + * XEmacs 21.2.21 is released. + +1999-11-26 Martin Buchholz + + * 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 + + * Makefile.in.in (depend): Only update `depend' if there were changes. + +1999-11-26 Martin Buchholz + + * editfns.c (get_system_name): Remove. + +1999-11-26 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * emacs.c (shut_down_emacs): Point users to PROBLEMS file + +1999-11-16 Jan Vroonhof + + * 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 + + * abbrev.c (abbrev_oblookup): Check whether wordend <= wordstart + if Vabbrev_start_location is used too. + +1999-10-27 Yoshiki Hayashi + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * mule-ccl.c (CCL_WRITE_STRING): Fix compiler warnings. + +1999-11-12 Yoshiki Hayashi + + * 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 + + * 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 + + * mule-charset.c (non_ascii_valid_charptr_p): Check if + private charset is defined. + +1999-11-09 Yoshiki Hayashi + + * 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 + + * XEmacs 21.2.20 is released + +1999-11-04 Martin Buchholz + + * mule-ccl.c (ccl_driver): Warning suppression + +1999-11-01 SL Baur + + * emacs.c (main_1): Guard call to reinit_vars_of_debug when not + building a debugged XEmacs. + +1999-10-28 Andreas Jaeger + + * src/emacs.c (main_1): Don't set the malloc hooks if using + DOUG_LEA_MALLOC. + +1999-10-30 Olivier Galibert + + * alloc.c (pdump_dump_rtables): Don't forget to dump the last + registered type. + (pdump): Ditto. + +1999-10-25 Olivier Galibert + + * emacs.c (main_1): Call reinit_vars_of_scrollbar_x. + + * symsinit.h: Declare reinit_vars_of_scrollbar_x. + +1999-10-25 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * lisp.h (Dynarr_declare): Fix boo-boo. + +1999-10-24 Olivier Galibert + + * process-unix.c (allocate_pty): Fix HAVE_GETPT. + * process.h: Ditto. + +1999-10-24 Jan Vroonhof + + * redisplay.c (start_with_line_at_pixpos): Remove assert(cur_elt + >=0). Handle the cur_elt == 0 case. + +1999-10-24 Jan Vroonhof + + * unexelf.c: Merge Martin's c++ fixes back in + +1999-10-20 Jan Vroonhof + + * unexelf.c (unexec): Only copy the global offset + table from memory on sgi machines. + +1999-08-13 Alexandre Oliva , Vin Shelton + + * 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 + + * unexelf.c: Revert to 21.1 version + +1999-08-28 Jan Vroonhof + + * window.c (Fwindow_truncated_p): New function. + +1999-08-25 Jonathan Marten + + * window.c (window_truncation_on): Always return 0 for minibuffer + windows, to enable auto scrolling. + +1999-10-24 Neal Becker + * process.h: Unix98 PTY support + +1999-10-17 Jan Vroonhof + + * fileio.c (Ffile_truename): Do proper mule decoding on + the argument to xrealpath() + +1999-08-19 Stephen Tse + + * 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 + + * alloc.c (pdump_make_hash): Divide pointers by 8 for a better hash. + +1999-10-23 Olivier Galibert + + * 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 + + * 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 + + * event-msw.c (mswindows_key_to_emacs_keysym): + Recognise keypad keys as different from normal keys. + +1999-10-14 Didier Verna + + * glyphs-x.c (x_finalize_image_instance): avoid freeing null pixmaps. + +1999-10-10 Olivier Galibert + + * 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 + + * 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 + + * 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 + + * 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 + + * elhash.c (resize_hash_table): Correct reference to lrecord_header. + +1999-10-06 Damon Lipparelli + + * elhash.h: forward declare Lisp_Hash_Table. + +1999-10-06 Andy Piper + + * glyphs.c (Fset_image_instance_property): mark glyphs as dirty + after setting an image instance property. + +1999-10-05 Andy Piper + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * alloc.c: Further with the portable dumping. + +1999-09-27 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * redisplay-output.c (output_display_line): only clear the borders + if we are not displaying the gutter. + +1999-09-24 Jan Vroonhof + + * 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 + + * scrollbar-x.c (x_window_is_scrollbar): deleted. + * scrollbar-x.h: ditto. + +1999-09-23 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * 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 + + * glyphs-x.c (update_widget_face): Guard fontList declaration for + non-motif uses. + +1999-09-20 Andy Piper + + * glyphs-msw.c (mswindows_update_subwindow): update faces. + +1999-09-19 Andy Piper + + * 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 + + * 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 + + * 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 + + * 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 + + * general.c: + * eldap.c: + Move symbols used only by eldap.c into eldap.c as statics. + +1999-09-09 Martin Buchholz + + * 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 + + * 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 + + * redisplay-x.c (x_output_vertical_divider): make sure + shadow_thickness is positive. + +1999-09-10 Julian Back + + * process-nt.c (nt_create_process): fixup to cope with + Vprocess_environment. + +1999-09-02 Andy Piper + + * 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 + + * 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 + + * fns.c (Fmapc): Rename back to Fmapc_internal. + +1999-07-30 Gleb Arshinov + + * 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 + + * 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 + + * 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 + + * 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 + + * extents.c (extent_remprop): Get extent's plist address + correctly. + +1999-08-31 Andy Piper + + * xmu.h: define Xmu/Converters.h things. + +1999-08-31 Andy Piper + + * opaque.c (equal_opaque_ptr): define. + (hash_opaque_ptr): define. + + * xmu.h: define Xmu/Misc.h things. + +1999-08-17 MORIOKA Tomohiko + + * file-coding.c (determine_real_coding_system): Treat `coding:' + cookie. + +1999-08-16 MORIOKA Tomohiko + + * 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 + + * 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 + +1999-08-30 Andy Piper + + * 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 + + +1999-08-29 Andy Piper + + * 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 + + * events.h (XTIMEOUT): must preface Lisp_Timeout with ``struct'' + (XSETTIMEOUT): fixup typo + +1999-08-11 Jan Vroonhof + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * console-x.h: declare new pixmap signatures. + +1999-08-23 Andy Piper + + * 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 + + * sound.c: revert the renaming of `bell_volume' to `Vbell_volume' + and `bell_inhibit_time' to `Vbell_inhibit_time'. + +1999-08-18 Andy Piper + + * redisplay-output.c (redisplay_output_subwindow): disable + clipping attempt. + +1999-08-17 Andy Piper + + * gutter.c (redraw_exposed_gutter): handle degenerate case of no + area to expose or no gutter to display. + +1999-08-16 Charles G Waldman + + * sound.c: rename `bell_volume' to `Vbell_volume' and + `bell_inhibit_time' to `Vbell_inhibit_time'. + +1999-08-13 Charles G Waldman + + * sound.c: (bell-inhibit-time): New variable. + (ding): Use it. + (sound-alist): Fix docstring. + +1999-08-17 Andy Piper + + * gui-x.c (button_item_to_widget_value): xstrdup name so that + deleting it is ok. + +1999-08-16 Jeff Miller + + * syntax.c (scan_words): make compile. + +1999-08-16 Andy Piper + + * 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 + + * 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 + + * eval.c (run_hook_with_args_in_buffer): GCPRO globals. + +1999-08-14 Andy Piper + + * glyphs.c (update_subwindow_cachel): make it less brittle. + +1999-08-04 Mike Woolley + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * glyphs-x.c (x_finalize_image_instance): only free pixels if we + have that type of image. + +1999-07-30 Andy Piper + + * 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 + + * 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 + + * scrollbar-x.c: should include EmacsFrame.h. + From Jeff Miller + +1999-07-30 XEmacs Build Bot + + * XEmacs 21.2.19 is released + +1999-07-27 Jeff Miller + + * add a "#ifdef HAVE_MENUBARS" wrapper to gui.c around + menubar_show_keybindings. + +1999-07-23 SL Baur + + * 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 + + * s/sco7.h: Added from rr@sco.com. + +1999-06-25 MORIOKA Tomohiko + + * mule-ccl.c (ccl_driver): Fix `CCL_WriteMultibyteChar2'. + +1999-06-24 MORIOKA Tomohiko + + * 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 + + * 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 + + * mule-ccl.c (CCL_DECODE_SJIS, CCL_ENCODE_SJIS): Swap the + definitions. + +1998-08-18 Kenichi Handa + + * 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 + + * 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 + + * 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 + + * keymap.c (copy_keymap_internal): Inherit the default binding. + +1999-07-14 Kazuyuki IENAGA + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data. + +1999-07-16 Andy Piper + + * 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 + + * 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 + + * gutter.c (frame_topmost_window): new function. + (frame_bottommost_window): ditto. + (frame_leftmost_window): ditto. + (frame_rightmost_window): ditto. + +1999-07-13 Andy Piper + + * redisplay.c (calculate_display_line_boundaries): use text + boundaries so that gutters get handled properly. + +1999-07-12 Andy Piper + + * 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 + + * XEmacs 21.2.18 is released + +1999-07-08 SL Baur + + * 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 + + * 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 + + * 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 + + * s/linux.h: gcc-2.8 changes for powerpc + From Justin Vallon + +1999-07-05 Didier Verna + + * indent.c: new symbol Qcoerce. + (Fmove_to_column): use it + doc string update. + +1999-07-04 Andy Piper + + * 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 + + * lisp.h: Add #include . + + * sysdep.c: Remove #include . + * symbols.c: Remove #include . + * sheap.c: Remove #include . + * opaque.c: Remove #include . + * nt.c: Remove #include . + * mule-charset.c: Remove #include . + * marker.c: Remove #include . + * file-coding.c: Remove #include . + * extents.c: Remove #include . + * elhash.c: Remove #include . + * data.c: Remove #include . + * chartab.c: Remove #include . + * bytecode.c: Remove #include . + * alloc.c: Remove #include . Fix vector description + +1999-06-30 SL Baur + + * editfns.c: Document "%s" format spec. + Suggested by Bob Weiner + +1999-06-29 Andy Piper + + * event-msw.c: fix definition booboo. + +1999-06-28 Andy Piper + + * 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 + + * 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 + + * 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 + + * syntax.c (scan_words): Restore non-Mule code. + (word_constituent_p): Restore. + +1999-06-23 Olivier Galibert + + * config.h.in: Add missing #undef *_USER_DEFINED. + +1999-06-23 SL Baur + + * 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] + + * paths.h.in (PATH_DOC): Made doc-directory configurable. + +1999-06-22 Olivier Galibert + + * 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 + + * 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 + + * 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 + + * 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 + + * XEmacs 21.2.17 is released + +1999-06-13 Oscar Figueiredo + + * 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 + + * data.c (struct int_or_double): Should use EMACS_INT not int. + +1999-06-16 Norbert Koch + + * redisplay-msw.c: Run 'ccl_driver' with 'CCL_MODE_ENCODING' as in + redisplay-x.c + +1999-06-12 MORIOKA Tomohiko + + * 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 + + * mule-charset.c (Fsplit_char): New subr. + (Fchar_octet): delete. + (syms_of_mule_charset): DEFSUBR it. + +1999-06-13 Andy Piper + + * 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 + + * XEmacs 21.2.16 is released + +1999-06-10 Andy Piper + + * 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 + + * 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 + + * 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 + + * s/decosf4-0.h: Explicitly #undef SYSTEM_MALLOC. + +1999-06-06 Hrvoje Niksic + + * 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 + + * mule-charset.c (Fmake_char): Update docstring. + +1999-06-07 Hrvoje Niksic + + * fns.c (Fstring_lessp): Actually increment the Bufbyte pointers. + +1999-06-05 Hrvoje Niksic + + * fns.c (base64_decode_1): Allow and ignore any non-base64 + characters in input. + +1999-05-27 Olivier Galibert + + * emacs.c (Fdump_emacs): Add clear_message() lost with the removal + of report_pure_usage(). + +1999-06-04 Hrvoje Niksic + + * fns.c (Fstring_lessp): Remove O(n^2) under Mule. + +1999-06-04 XEmacs Build Bot + + * XEmacs 21.2.15 is released + +1999-06-01 Hirokazu FUKUI + + * 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 + + * sysdep.c (request_sigio_on_device): Guard against glibc + 2.1's stub streams implementation. + +1999-06-03 SL Baur + + * config.h.in: + * emacs.c: Implement x.y.z version numbers + From Jan Vroonhof + +1999-05-20 MORIOKA Tomohiko + + * 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 + + * frame-x.c: + * device-x.c: rename session option to wmcommand. + From Oliver Graf + +1999-05-27 Hrvoje Niksic + + * fns.c (Fsubstring): Don't traverse the same region twice with + charcount_to_bytecount(). + +1999-06-03 SL Baur + + * 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 + + * 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 + + * fns.c (base64_decode_1): Ignore whitespace. + +1999-05-27 Hrvoje Niksic + + * mule-charset.c (Fmake_char): Strip the eighth bit off ARG1 and + ARG2. + +1999-05-21 Andy Piper + + * 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 + + * print.c (long_to_string): Install a faster version. + +1999-05-16 Andy Piper + + * ntproc.c (syms_of_ntproc): default + win32-start-process-share-console to t. + +1999-05-14 Hrvoje Niksic + + * config.h.in: Do it here. + + * bytecode.c: Don't define ERROR_CHECK_TYPECHECK here. + +1999-05-14 Andy Piper + + * toolbar-msw.c (mswindows_output_toolbar): hash on something + hashable. + +1999-05-14 XEmacs Build Bot + + * XEmacs 21.2.14 is released + +1999-05-12 Andy Piper + + * ntproc.c (sys_spawnve): kludge argv[0] in a MS compatible way. + +1999-05-11 Gunnar Evermann + + * 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 + + * window.c (Fcurrent_window_configuration): + Save minibuffer height; + + * window.c (set_window_configuration): use it. + +1999-05-10 Robert Pluim + + * lisp.h (NNUNGCPRO): fix typo in name of DEBUG_GCPRO version + +1999-04-21 Jan Vroonhof + + * 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 + + * 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 + + * ntproc.c (sys_spawnve): actually assign argv[0] instead of the + first character. + +1999-05-10 Hrvoje Niksic + + * sysdep.c (init_system_name): If gethostname gives a proper + domain name, don't look further for one. + +1999-05-09 Hrvoje Niksic + + * symbols.c (Fintern): Avoid frequent XSYMBOL (foo). + (Fintern_soft): Accept a symbol argument. + +1999-05-06 Hrvoje Niksic + + * symbols.c (Fintern): ...do it here. + + * lread.c (read_atom): Don't handle keywords here. + +1999-05-06 Hrvoje Niksic + + * symbols.c (reject_constant_symbols): Just use SYMBOL_IS_KEYWORD. + +1999-05-03 Olivier Galibert + + * 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 + + * 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 + + * symeval.h (symbol_value_forward_lheader_initializer): Ditto. + + * lisp.h (DEFUN): Fix lrecord header initialisation. + +1999-05-02 Andy Piper + + * objects-msw.c (mswindows_font_instance_truename): add a ';'. + + * ntproc.c (sys_kill): cast using MS mandated defines. + +1999-04-29 Andy Piper + + * 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 + + * eldap.c (allocate_ldap): Adapt to the new semantics of + alloc_lcrecord_type(). + +1999-03-16 MORIOKA Tomohiko + + * file-coding.c (DECODE_HANDLE_END_OF_CONVERSION): fixed. + +1998-09-04 MORIOKA Tomohiko + + * Delete mule-coding.c and mule-coding.h because they are not + used. + +1999-04-22 Gunnar Evermann + + * 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 + + * lrecord.h (DECLARE_LRECORD): lrecord_implementation isn't an + array anymore. + +1999-04-22 Hrvoje Niksic + + * Makefile.in.in (tests): Don't mention tests explicitly -- makes + it easier to add new ones. + +1999-04-22 Hrvoje Niksic + + * 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 + + * data.c (vars_of_data): Default debug_issue_ebola_notices to 0. + (eq_with_ebola_notice): Remove abracadabra support. + +1999-04-11 Oscar Figueiredo + + * eldap.c (Fldap_search_internal): Add a new parameter `withdn' to + retrieve the distinguished names of entries + +1999-03-08 Martin Buchholz + + * lread.c (read_escape): Make hex escapes read only two hex digits. + +1999-04-05 Olivier Galibert + + * 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 + + * 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 + + * 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 + + * 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 + + * file-coding.c (Fdefine_coding_system_alias): New function. + +1999-04-08 Olivier Galibert + + * 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 + + * extents.c (set_extent_glyph_1): Make sure that the glyph we + attach to the extent is valid. + +1998-12-12 Hrvoje Niksic + + * 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 + + * 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 + + * fns.c (init_provide_once): Provide `base64'. + +1998-12-04 Hrvoje Niksic + + * 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 + + * dired.c (Fdirectory_files): Remove redundant code. + +1999-03-05 Philip Aston + + * frame-msw.c Make raise-frame restore minimised windows. + +1999-03-05 Philip Aston + + * device-msw.c: Fix DEFVAR format - Death to phantom quote, and + add magic newline. + +1999-03-05 Philip Aston + + * 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 + + * XEmacs 21.2.13 is released + +1999-03-12 SL Baur + + * file-coding.c: Guard ucs table initialization with ifdef MULE. + +1999-03-10 Stephen J. Turnbull + + * file-coding.c: docstring and comment improvements. + (decode_ucs4) flag possible data loss with comment. + +1999-03-10 Martin Buchholz + + * 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 + + * 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 + + * file-coding.c (mule_char_to_ucs4): Encode 94x94 chars in ISO + 2022 registry to private area. + +1998-09-07 MORIOKA Tomohiko + + * file-coding.c (encode_utf8): New function. + (encode_coding_utf8): New implementation. + +1998-09-07 MORIOKA Tomohiko + + * 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 + + * chartab.h: EXFUN `Fget_char_table'. + + * file-coding.c (encode_ucs4): New function. + (encode_coding_ucs4): Use `encode_ucs4'. + +1998-09-06 MORIOKA Tomohiko + + * file-coding.c (decode_coding_ucs4): New implementation. + +1998-09-06 MORIOKA Tomohiko + + * 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 + + * file-coding.c (decode_coding_utf8): New implementation. + +1998-09-06 MORIOKA Tomohiko + + * file-coding.c (decode_coding_utf8): fixed. + +1998-09-06 MORIOKA Tomohiko + + * 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 + + * 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 + + * 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 + + * fns.c (Fbase64_encode_string): Calculate `allength' in the same + way of `Fbase64_encode_region'. + +1999-02-18 Katsumi Yamaoka + + * fns.c (base64_encode_1): Don't add a newline at the tail. + +1999-03-08 Andy Piper + + * menubar-msw.c (displayable_menu_item): correct off-by-one & + handling. + +1999-03-07 Martin Buchholz + + * 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 . + 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 + + * 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 + + * 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 + + * XEmacs 21.2.12 is released + +1999-02-16 Kazuyuki IENAGA + + * device-x.c: Support to find best visual without flashing. + +1999-03-02 Paul Keusemann + + * 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 + + * 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 + + * event-stream.c (init_event_stream): make sure native mswindows + gets an appropriate event loop. + +1999-02-22 Andy Piper + + * 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 + + * XEmacs 21.2.11 is released + +1999-02-25 SL Baur + + * 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 + +1999-02-17 Kazuo Oishi + + * glyphs-x.c (cononvert_EImage_to_XImage): correct + bytes per pixel counting. + +1999-02-15 Andy Piper + + * s/cygwin32.h (BROKEN_SIGIO): don't define this as it causes + major lockups. + +1999-02-16 MORIOKA Tomohiko + + * fns.c (Fbase64_encode_string): New optional argument + `NO_LINE_BREAK'. + +1999-02-16 Martin Buchholz + + * gdbinit: Fix up commands to run temacs. Add lisp-shadows command. + * alloc.c (xcalloc): undef xcalloc, just like xmalloc + +1999-02-10 Martin Buchholz + + * 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 + + * XEmacs 21.2.10 is released + +1999-02-02 Gleb Arshinov + + * 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 + + * XEmacs 21.2.9 is released + +1999-01-30 Martin Buchholz + + * 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 + + * gui.c (gui_parse_item_keywords_internal): Make static. + +1999-01-21 Andy Piper + + * 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 + + * event-stream.c (vars_of_event_stream): Fixing documentation. + +1999-01-17 Gunnar Evermann + + * 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 + + * search.c (Freplace_match): Handle single backslash at end of + NEWTEXT correctly. + +1999-01-12 William M. Perry + + * eldap.c (Fldap_open): slow down interrupts around ldap_open to + avoid connection errors. + +1999-01-12 Andy Piper + + * redisplay-output.c (redisplay_update_line): backout change that + shouldn't have gone ine. + +1999-01-09 Oscar Figueiredo + + * eldap.c (vars_of_ldap): Do no provide `ldap' here since it may + collide with ldap.el + +1999-01-11 Andy Piper + + * 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 + + * 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 + + * 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 + + * event-msw.c (mswindows_wnd_proc): + Fixed failure when building with MSVC 5. + +1998-12-29 Martin Buchholz + + * file-coding.c (decode_coding_iso2022): + - Prevent crash when decoding ISO7/Lock detected files + - the usual martin fiddling + +1998-12-29 Jonathan Harris + + * 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 + + * 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 + + * 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 + + * 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 + + * XEmacs 21.2.8 is released. + +1998-12-28 Martin Buchholz + + * 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 + + * 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 + + * XEmacs 21.2.7 is released. + +1998-12-23 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * console-msw.c: Function definitions follow coding standards + - This prevents e.g. find-tag on Lisp_Event finding DEVENT + +1998-12-11 Martin Buchholz + + * 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 + + * lisp.h: Fix up prototypes to match alloc.c + +1998-12-08 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * event-msw.c (mswindows_cancel_dispatch_event): + Gratuitous code prettification + + +1998-12-07 Hrvoje Niksic + + * 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 + + * 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 + + * menubar-x.c (menu_item_descriptor_to_widget_value_1): set the + accelerator field to nil for labels. + +1998-12-16 Jonathan Harris + + * menubar-msw.c (displayable_menu_item): + Escape occurrences of '&' and support occurrences of the + '%_' accelerator indicator in menus. + +1998-11-26 Didier Verna + + * 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 + + * glyphs.c (normalize_image_instantiator): GCPRO instantiator + +1998-12-16 Jonathan Harris + + * 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 + + * strftime.c (zone_name): CONSTify. + +1998-12-15 Andy Piper + + * 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 + + * 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 + + * Makefile.in.in (objs): add gui.o + +1998-12-10 Andy Piper + + * gui.c: adjust defines of HAVE_POPUPS so that we can build with + no window system. + +1998-12-09 Andy Piper + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * XEmacs 21.2.6 is released + +1998-12-08 Hrvoje Niksic + + * md5.c (Fmd5): Correctly initiate string input stream. + + * Makefile.in.in (tests): Add md5-tests.el. + +1998-12-06 Martin Buchholz + + * 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 + + * bytecode.c (Ffetch_bytecode): Fix crash when loading lazy-loaded + bytecode. + +1998-12-13 Martin Buchholz + + * console-msw.c: Function definitions follow coding standards + - This prevents e.g. find-tag on Lisp_Event finding DEVENT + +1998-12-11 Martin Buchholz + + * 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 + + * lisp.h: Fix up prototypes to match alloc.c + +1998-12-09 Andy Piper + + * glyphs-msw.c (init_image_instance_from_xbm_inline): don't use + XSETINT for assigning lisp objects. + +1998-12-07 Martin Buchholz + + * 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 + + * 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 + + * menubar-msw.c (mswindows_handle_wm_command): add back in checks + that got removed in the merge + +1998-11-30 Greg Klanderman + + * dired.c (vars_of_dired): bugfix for previous conditionalization + of user-name-completion on non- Windows NT. + +1998-12-08 Martin Buchholz + + * 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 + + * 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 + + * XEmacs 21.2.5 is released + +1998-11-30 Martin Buchholz + + * 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 + + * unexec.c: Changed a #ifndef statement to fix XEmacs on BSDI 3.0 + +1998-11-28 SL Baur + + * XEmacs 21.2-beta4 is released. + +1998-11-27 SL Baur + + * mule-charset.c (complex_vars_of_mule_charset): Fix graphic + property in control-1 charset. + From Julian Bradfield + +1998-11-26 Jan Vroonhof + + * 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 + + * dired.c (make_directory_hash_table): make_string() is OK because + readdir() Mule-encapsulates. + +1998-11-26 Hrvoje Niksic + + * fns.c (Fbase64_encode_string): Fix docstring. + (Fbase64_decode_string): Ditto. + +1998-11-26 Hrvoje Niksic + + * editfns.c (Ftranslate_region): Use + convert_bufbyte_string_into_emchar_string(). + +1998-11-25 Hrvoje Niksic + + * 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 + + * chartab.c (Freset_char_table): Fix wrong placement of #endif. + +1998-11-24 Hrvoje Niksic + + * 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 + + * 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 + + * process-unix.c (unix_create_process): handle properly + Vfile_name_coding_system for converting the program and directory + names. + +1998-11-27 SL Baur + + * m/arm.h: New file. + From James LewisMoss + +1998-11-27 Takeshi Hagiwara + + * m/mips-nec.h: + Fix the realpath() problem of UnixWare2.1.3. + Patches for NEC's sysv4.2 machine. + +1998-11-25 Hrvoje Niksic + + * dired.c (Fdirectory_files): Remove redundant code. + +1998-11-25 Hrvoje Niksic + + * 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 + + * fns.c (base64_value_to_char): Base64 stuff. + +1998-11-24 Hrvoje Niksic + + * 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] + + * linuxplay.c: Including instead of makes + sound work on AIX with OSS installed. Linux should still work. + +1998-11-03 Andy Piper + + * 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 + + * lisp.h (struct Lisp_Bit_Vector): Fix declaration of bits from + int to long. + +1998-10-22 Andy Piper + + * 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 + + * 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 + + * 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 + + * gifrlib.h: Clean up types for 64 bit compile. + * dgif_lib.c (DGifInitRead): Ditto. + (MakeSavedImage): Ditto. + * emacs.c (decode_path): Ditto. + From Steve Carney + +1998-10-16 William M. Perry + + * glyphs-msw.c (bitmap_table): Fixed typo in builtin bitmaps + (cehckboxes instead of checkboxes). + +1998-10-15 SL Baur + + * XEmacs 21.2-beta3 is released. + +1998-10-13 Raymond Toy + + * 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 + + * dragdrop.c (vars_of_dragdrop): rename HAVE_MSWINDOWS -> + HAVE_MS_WINDOWS typo. + +1998-10-13 SL Baur + + * 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 + + * 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 + + * window.c (specifier_vars_of_window): Set default vertical + divider width to 1 on ttys. + +1998-10-08 Martin Buchholz + + * alloc.c: + * unexec.c: + * malloc.c: + Add to get ptrdiff_t declaration + +1998-10-07 Jonathan Harris + + * 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 + + * m/alpha.h (UNEXEC): quoted to avoid bad expansion when running + `configure' + +1998-10-06 Takeshi Hagiwara + + * frame-x.c (x_delete_frame): Fix an argument of XtDestroyWidget. + +1998-10-05 Andy Piper + + * s/cygwin32.h: more cygwin b20 reorganisation. + +1998-10-01 Raymond Toy + + * 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 + + * callproc.c (child_setup): Fix spelling typo. + +1998-09-29 SL Baur + + * XEmacs 21.2-beta2 is released. + +1998-09-27 P. E. Jareth Hein + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * glyphs-eimage.c (png_instantiate_unwind): clean up eimage after use. + +1998-09-07 Jonathan Harris + + * fileio.c (file-name-directory, file_name_as_directory): + Don't call CORRECT_DIR_SEPS, even when #defined WINDOWSNT. + +1998-09-02 Andy Piper + + * emacs.c (main_1): init_ralloc() if initialised and we have REL_ALLOC + + * ralloc.c: uncomment __morecore. + +1998-09-92 Jonathan Harris + + * 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 + + * 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 + + * device-x.c (x-seppuku-on-epipe): Removed. + +1998-08-26 Gunnar Evermann + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * macros.c (Fend_kbd_macro): Remove trailing period from error + message. + (Fexecute_kbd_macro): Ditto. + +1998-08-21 Greg Klanderman + + * 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] + + * lread.c (vars_of_lread): Removed `source-directory' variable. + +1998-08-22 Hrvoje Niksic + + * fileio.c (Ffile_readable_p): Apply the DOS/Windows logic to + Cygwin. + +1998-08-19 SL Baur + + * dired.c (vars_of_dired): Fix misapplied patch. + +1998-08-16 Martin Buchholz + + * fns.c (Fremrassq, remrassq_no_quit): + A XCAR that should have been an XCDR turned Fremrassq into Fremassq + +1998-07-17 Didier Verna + + * 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 + + * 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 + + * 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 + + * menubar-msw.c (displayable_menu_item): take account of menu + depth when deciding whether to try to display accelerators. + +1998-08-04 Andy Piper + + * 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 + + * 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 + + * casefiddle.c (casify_object): + Change algorithm from O(N**2) to O(N). + Code cleanup. + Doc string cleanup. + +1998-07-22 Greg Klanderman + + * dired.c (file_name_completion_unwind): don't leak the cons. + +1998-07-20 Greg Klanderman + + * 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 + + * 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 + + * 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 + + * callint.c (Fcall_interactively): GCPRO prompt string before + passing it to Fread_key_sequence + +1998-07-27 SL Baur + + * 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 + + * 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 + + * XEmacs 21.2-beta1 is released. + +1998-07-12 Oscar Figueiredo + + * 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 + + * 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 + + * glyphs-x.c (convert_EImage_to_XImage): Fix previous patch (conv + byte order is dependant of the local byte order). + From Takeshi Hagiwara + +1998-07-18 SL Baur + + * glyphs-msw.c (mswindows_resource_normalize): Qresource -> + Qmswindows_resource. + From Jonathan Harris + +1998-07-12 SL Baur + + * 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 + + * 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 + + * XEmacs 21.0-pre4 is released. + +1998-07-01 James N. Potts + + * 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 + + * 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 + + * 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 + + * eldap.c (Fldap_search_internal): Docstring fixes + +1998-07-04 Jonathan Harris + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * process-nt.c (nt_create_process): Try appending the standard + executable file extensions to the filename if none supplied. + +1998-06-29 SL Baur + + * fileio.c (Fsubstitute_in_file_name): Enable double slash notation + for cygwin32. + From Keisuke Mori + +1998-06-24 Andy Piper + + * 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 + + * 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 + + * 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 + + * 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 + + * 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] + + * unexaix.c: Line number information works correctly again. + +1998-06-22 Olivier Galibert + + * emacs.c (__sti__iflPNGFile_c___): Added. See comment. Cry. + +1998-06-21 Martin Buchholz + + * editfns.c (get_home_directory): ANSIfy. + XEmacs is compilable under C *and* C++. + It's XEmacs, not Xemacs! + +1998-06-19 Jonathan Harris + + * 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 + + * 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 + + * 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 + + * 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 + + * lisp-disunion.h (XMARKBIT): Have XMARKBIT return something + suitable for an int used as a boolean (btw, C sucks.). + +1998-06-18 Andy Piper + + * 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 + + * 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 + + * 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 + + * 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 + + * 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] + + * unexaix.c (make_hdr): Fixed bias computations so debugging info + works again. + Some other insignificant nitpicks. + +1998-06-18 Andy Piper + + * 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 + + * event-Xt.c (emacs_Xt_remove_timeout): Also remove timeout from + completed_timeouts. The timer could have expired. + +1998-06-17 Andy Piper + + * 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 + + * Makefile.in.in: Made EXTW_LINK expand properly. + +1998-06-12 Martin Buchholz + + * redisplay.c (vars_of_redisplay): default value of + column-number-start-at-one should be NIL! + +1998-06-11 Martin Buchholz + + * casefiddle.c: + (upcase-initials "fooBar") ==> "FooBar" instead of "Foobar" + +1998-06-05 Hrvoje Niksic + + * eldap.c (Fldap_search_internal): Use build_ext_string instead of + build_string to avoid crashes under Mule. + +1998-06-13 Andy Piper + + * 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 + + * fileio.c (directory-sep-char): Escape backslashes. + +1998-06-10 Hrvoje Niksic + + * event-stream.c: Fix docstring reference. + +1998-06-12 Hrvoje Niksic + + * 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 + + * 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 + + * buffer.c (complex_vars_of_buffer): Removed %t description from + the docstring. + +1998-06-04 Rick Rankin + + * 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 + + * 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 + + * 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 + + * process-nt.c (signal_cannot_launch): Use signal_simple_error() + instead of error(). + +1998-06-03 Kirill M. Katsnelson + + * dialog-msw.c (button_width): Removed `inline' from the function + declaration. + +1998-06-03 Rick Rankin + + * 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 + + * glyphs-eimage.c (png_instantiate) move 'struct + png_memory_storage tbr' out of nested block to avoid dangling + reference + +1998-06-02 Andy Piper + + * 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 + + * 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 + + * glyphs.c (bitmap_to_lisp_data) Define XFree to be free + if built without X Windows support. + +1998-06-02 Hrvoje Niksic + + * fns.c (Fconcat): Synch docstring with new reality. + +1998-06-03 SL Baur + + * 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 + + * glyphs-eimage.c (jpeg_instantiate): Fix handling of + grayscale images/ + + +1998-05-30 Kirill M. Katsnelson + + * 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 + + * 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 + + * 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 + + * buffer.h: Eliminate size in declaration. + +1998-06-01 Olivier Galibert + + * unexelfsgi.c (unexec): Cleanup n/nn and remove useless kludge. + +1998-06-01 Kirill M. Katsnelson + + * gui.c (gui_item_init): Changed the default value for config member + from Qunbound to Qnil. + +1998-06-01 Greg Klanderman + + * indent.c (vmotion_pixels): Don't #define abs(). + +1998-05-30 Kirill M. Katsnelson + + * s/windowsnt.h: Defined popen and pclose to be _popen and _pclose + respectively. + +1998-05-30 Andy Piper + + * 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 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 + + * 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 + + * 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 + + * toolbar.h: Removed misleading commentary, as Martin suggested. + +1998-05-30 Kirill M. Katsnelson + + * 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 + + * 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 + + * alloc.c (dbg_constants): + * dbxrc: + * gdbinit: + Remove toolbar_data debugging code, since that lrecord has + also been removed. + +Wed May 27, 1998 Darryl Okahata + + * 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 , to suppress + warnings about getcwd(), etc. not having prototypes. + +1998-05-28 Kirill M. Katsnelson + + * 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 + + * frame-x.c (cde-start-drag-internal): added filename and multi- + data transfers + (x_cde_convert_callback) dito + +1998-05-26 Oliver Graf + + * 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 + + * 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 + + * 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 + + * tooltalk.c (vars_of_tooltalk) added staticpro for + Tooltalk_Message_plist_str and Tooltalk_Pattern_plist_str + +1998-05-27 Andy Piper + + * 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 + + * s/cygwin32.h: define charsets for cygwin. + +1998-05-25 Andy Piper + + * 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 + + * 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 + + * 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 + + * general.c: multiple definition of `Qicon'. general.c seems + like a good home for Qicon. + +1998-05-20 Kirill M. Katsnelson + + * 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 + + * 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 + + * getloadavg.c (getloadavg): Fix typo. + +1998-05-23 Kirill M. Katsnelson + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * EmacsFrame.c (Xt_StringToScrollBarPlacement): Added support for + {top,bottom}-{left,right} values in addition to + {top,bottom}_{left,right}. + +1998-05-18 Hrvoje Niksic + + * fileio.c (Fmake_temp_name): Remove unreached code. + + * process-nt.c (validate_signal_number): Use + signal_simple_error(). + +1998-05-19 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * s/freebsd.h: FreeBSD 2.2.6 now supports setlocale(LC_ALL, ""). + +1998-05-18 Kirill M. Katsnelson + + * 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 + + * 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 + + * 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 + + * 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 + + * 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] + + * 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 + + * 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 + + * 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 + + * 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 + + * window.c (have_undivided_common_edge): Guard scrollbar specific + stuff. + (window_needs_vertical_divider_1): Ditto. + +1998-05-16 Hrvoje Niksic + + * emacs.c (decode_path): Eliminate compiler warning. + (Fdecode_path): Renamed to Fsplit_path. + (Fsplit_string_by_char): New function. + +1998-05-14 Damon Lipparelli + + * winslots.h: close comment + +1998-05-16 Kirill M. Katsnelson + + * 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 + + * 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 + + * 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 + + * 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 + + * toolbar-msw.c: guess toolbar frame size a bit more accurately. + +1998-05-15 Andy Piper + + * 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 + + * 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 + + * 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 + + ** 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 + + * dragdrop.c (vars_of_dragdrop): dragdrop-protocols created + * frame-x.c (x_cde_transfer_callback): checked for merge errors + +1998-05-13 Oliver Graf + + * dragdrop.c (vars_of_dragdrop): provide dragdrop-api + +1998-05-15 Kirill M. Katsnelson + + * 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 + + * 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 + + ** 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 + + * 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 + + * 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 + + * 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 + + * redisplay-msw.c (mswindows_output_vertical_divider): Syntax fix. + +1998-05-12 Didier Verna + + * 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 + + * 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 + + * device-msw.c (mswindows_device_system_metrics): Support a deluge + of metrics. + +1998-05-12 Oliver Graf + + * 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 + + * emacs.c (Fdecode_path): Default SEPCHAR to value of + path-separator. + +1998-05-14 Hrvoje Niksic + + * 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 + + * 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 + + * macros.c (Fzap_last_kbd_macro_event): New function. + (Fend_kbd_macro): Remove REMOVE_LAST kludge. + +1998-05-10 Andy Piper + + * 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 + + * inline.c: Include eldap.h + + * menubar-x.c (x_update_frame_menubar_internal): + Remove: unused variable `container' + +1998-05-11 Martin Buchholz + + * 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 + + * 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] + + * emacs.c (Fdecode_path_internal): Removed bogus handling of nil + and empty string inputs. + +1998-05-12 Hrvoje Niksic + + * redisplay-x.c (x_output_vertical_divider): Fixed typo. + +1998-05-10 Oliver Graf + + * 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 + + * 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 + + * 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 + + * toolbar.c (update_frame_toolbars): Re-layout frame windows if + toolbar geometry is suspected to change. + +1998-05-11 Jonathan Harris + + * src/device-msw.c + * src/event-msw.c + Condition dnd and dde code on HAVE_DRAGNDROP. + +1998-05-11 Hrvoje Niksic + + * events.c (format_event_object): Print space as SPC etc. + +1998-05-11 Hrvoje Niksic + + * 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 + + * xgccache.c (describe_gc_cache): Define only if DEBUG_XEMACS. + + * undo.c (Fprimitive_undo): Fixed typo. + +1998-05-11 Hrvoje Niksic + + * fns.c (concat): Signal error on integer argument. + +1998-05-10 Kirill M. Katsnelson + + * 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 + + * 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 + + * regex.c (re_match_2_internal): Check for quit. + +1998-05-10 Hrvoje Niksic + + * frame.c (Ffocus_frame): New function. + +1998-05-06 Oliver Graf + + * 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 + + * event-msw.c: now creates misc-user-events on dnd drops + +1998-05-05 Oliver Graf + + * 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 + + * 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 + + * EmacsFrame.c (EmacsFrameSetValues): Fix typo. + Suggested by: Kirill M. Katsnelson + +1998-05-09 Kirill M. Katsnelson + + * This change adds four scrollbar specifiers: + {horizontal,vertical}-scrollbar-visible-p and + scrollbar-on-{top,left}-p. + Spare parts supplied by Didier Verna + + * 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 + + * 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 + + * 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 + + * 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 + _changed_in_frame methods for toolbars and scrollbars. + Added frame_size_fixed_p method. + +1998-05-08 SL Baur + + * redisplay.c (decode_mode_spec): Guard against garbage + overwriting the stack. + +1998-05-08 Kirill M. Katsnelson + + * 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 + + * 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 + + * unexnt.c (read_in_bss): Removed unused variables, replaced exits + with aborts. + (map_in_heap): Ditto. + +1998-05-06 SL Baur + + * frame.c (adjust_frame_size): Don't mix integers and Lisp_Objects. + +1998-05-07 Kirill M. Katsnelson + + * print.c (write_string_to_stdio_stream): Under MS Windows, flush + stdio and stderr after output. Ouch. + +1998-05-05 Andy Piper + + * 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 + + * 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 + + * search.c (Fmatch_data): Synch with FSF. + +1998-05-04 Greg Klanderman + + * 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 + + * 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] + + * 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 + + * 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 + + * 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 + + * search.c (Fregexp_quote): Loop by characters, not by bytes. + +1998-05-05 Jan Vroonhof + + * 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 + + * emacs.c (shut_down_emacs): Update crash report information. + +1998-05-04 Kyle Jones + + * 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 + + * 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 + + * lread.c: (read_escape): Restore handling of \M-a; clarify + comment. + +1998-05-04 Kyle Jones + + * 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 + + * 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 + + * event-stream.c (event_stream_next_event): Reverse previous patch to + slow down poll for quit. + Suggested by Kyle Jones + + * lread.c (read_escape): Turn off interpretation of "\M..." + Suggested by Olivier Galibert + + * lread.c (read_escape): add explanatory comment about why + FSF_KEYS are being turned off. + +1998-05-02 SL Baur + + * lread.c (FSF_KEYS): Remove if built with Mule. + +1998-05-01 Kirill M. Katsnelson + + * event-msw.c (ntpipe_shove_flusher): Removed. + (init_shove_stream): Flusher undeclared. + +1998-05-02 SL Baur + + * rangetab.c: `default_dumped' removed. + +1998-05-02 Hrvoje Niksic + + * events.c (Fmake_event): Initialize key data for key-press + events. + +1998-05-02 Hrvoje Niksic + + * 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 + + * 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 + + * data.c (Fneq): Fix docstring. + (arithcompare_many): Slightly simplify. + +1998-04-29 Andy Piper + + * s/cygwin32.h: don't define BROKEN_CYGWIN anymore since we normally + link with unixoid event loop now. + +1998-05-01 Kirill M. Katsnelson + + * 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 + + * 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 + + * 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 + + * frame.c (Fselect_frame): update docstring to describe + focus-follows-mouse behavior. + +1998-05-01 Hrvoje Niksic + + * print.c (Fwrite_char): Don't touch Vprint_gensym. + (print_error_message): Don't gcpro TAIL. + (Fdisplay_error): Simplify. + +1998-04-30 Hrvoje Niksic + + * 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 + + * 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 + + * window.c (Fcenter_to_window_line): New function. + (Frecenter): Use it. + +1998-04-30 Hrvoje Niksic + + * 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 + + * 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 + + * 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 + + * abbrev.c (obarray_has_blank_p): Simplify. + +1998-04-27 Hrvoje Niksic + + * getloadavg.c (getloadavg): Removed some code repetition. + +1998-05-01 Kirill M. Katsnelson + + * process-nt.c: Document usage of #pragma warning. + (alloc_process_memory): Spell _ALPHA_ correctly. + +1998-04-29 SL Baur + + * Makefile.in.in: Change `progname' to `PROGNAME' for + consistency. + +1998-04-29 Kirill M. Katsnelson + + * 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 + + * redisplay-msw.c (mswindows_output_string) + (mswindows_output_string): output the background pixmap if we have + one. + +1998-04-28 Michael Sperber [Mr. Preprocessor] + + * paths.h.in: Added PATH_PROGNAME and PATH_VERSION. + +1998-04-28 Michael Sperber [Mr. Preprocessor] + + * emacs.c (complex_vars_of_emacs): Added `emacs-program-name' and + `emacs-program-version'. + +1998-04-29 Kirill M. Katsnelson + + * 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 + + * 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 + + * glyphs-x.c (x_init_image_instance_from_eimage): Make sure + automatic pointers are null... + +1998-04-27 Greg Klanderman + + * 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 + + * frame.c (Fmake_frame): GC-protect new frame immediately upon + creation. + +1998-04-27 Kirill M. Katsnelson + + * 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 + + * 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 + + * eldap.c (finalize_ldap): New function; use it when declaring + LDAP lrecord type. + +1998-04-27 Kirill M. Katsnelson + + * 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 + + * sysdep.h: Simplified definition of strerror() + +Sun Apr 23 1998 Andy Piper + + * 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 + + * 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 + + * debug.c (vars_of_debug): Remove `Fprovide("internal-debug")'. + +1998-04-27 Jonathan Harris + + * device-msw.c: Unconditionally use InitCommonControls() instead + of InitcommonControlsEx() - the latter is not defined in all + environments. + +1998-04-26 SL Baur + + * 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 + + * 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 + + * glyphs-x.c (xface_normalize): Add console_type parameters to + calls to `potential_pixmap_file_instantiator'. + +Sat Apr 24 1998 Andy Piper + + * event-msw.c: fix and enable signal pipe handling when using msg + select(). + +1998-04-25 Michael Sperber [Mr. Preprocessor] + + * process-unix.c (allocate_pty): Typo fix. + +1998-04-25 Olivier Galibert + + * s/irix5-0.h (PTY_OPEN): Ditto + * s/irix4-0.h (PTY_OPEN): Restore the stb variable. + +1998-04-25 Michael Sperber [Mr. Preprocessor] + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * unexcw.c: cope with the reversed executable sections written by + binutils-2.9 ld and egcs. + +1998-04-24 Kirill M. Katsnelson + + * menubar-msw.c (populate_or_checksum_helper): Fixed to compile + with union type. + +1998-04-23 Hrvoje Niksic + + * 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 + + * frame-x.c (x_delete_frame): remove dead code. + +1998-04-22 SL Baur + + * print.c (Falternate_debugging_output): Unconditionally define. + +1998-04-22 Hrvoje Niksic + + * eval.c: Ditto. + + * alloc.c: Ditto. + + * lread.c: Ditto. + + * print.c: Removed standalone hacks. + +1998-04-23 Kirill M. Katsnelson + + * 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 + + * 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 + + * glyphs-msw.c (EImage2DIBitmap): count the number of bytes correctly. + +Wed Apr 22 12:59:35 1998 Andy Piper + + * 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 + + * print.c (Falternate_debugging_output): Define only if + DEBUG_XEMACS. + +1998-04-21 Hrvoje Niksic + + * fileio.c (Fmake_temp_name): Updated docstring. + +1998-04-21 Hrvoje Niksic + + * 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 + + * config.h.in: add FOR_MSW variable. + From Itay Ben-Yaacov + +1998-04-20 Kirill M. Katsnelson + + * alloc.c (report_pure_usage): Remove ifdef WINDOWSNT around + "Don't panic, I will restart make". + +1998-04-19 Kirill M. Katsnelson + + * 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 + + * mule-ccl.c: Fix compiler warnings. I hate compiler warnings. + The code is clearer anyways without macros that goto. + +1998-04-22 SL Baur + + * glyphs.h: Add prototypes for signal_image_error and + signal_image_error_2. + Suggested by Hrvoje Niksic + +1998-04-18 Michael Sperber [Mr. Preprocessor] + + * fileio.c: Changed `directory-sep-char' to `path-separator', + following a change in GNU Emacs. + +1998-04-21 Oscar Figueiredo + + * eldap.c: As suggested by Hrvoje Niksic + (Fldap_search_internal): Loop and GCPRO cleanup + (print_ldap): Removed text translation + +1998-04-19 Oscar Figueiredo + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * config.h.in: Check for DLERROR. + + * sysdll.c: Cosmetic changes. + +1998-04-18 Hrvoje Niksic + + * sysdll.c (dll_error): It's `dlerror', not `dl_error'. + +1998-04-17 Kirill M. Katsnelson + + * 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 + + * 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 + + * 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] + + * fileio.c (vars_of_fileio): Resurreced directory-sep-char to be + DIRECTORY_SEP instead of hardwired "/". + +1998-04-16 Michael Sperber [Mr. Preprocessor] + + * fileio.c (file_name_as_directory): Now returns "./" (or NT + equivalent) for "". + +1998-04-09 Oscar Figueiredo + + * eldap.c: Fully rewritten introducing a new opaque LDAP Lisp + data type. + + * eldap.h: Ditto + +1998-04-17 Olivier Galibert + + * fileio.c (vars_of_fileio): Finish directory_sep_char removal. + +1998-04-14 Michael Sperber [Mr. Preprocessor] + + * emacs.c (main_1): Added option --debug-paths and analogous + variable. + +1998-04-15 Hrvoje Niksic + + * 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 + + * 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 + + * indent.c (vertical_motion_1): set_marker_restricted takes + Lisp_Objects. + +1998-04-17 Hrvoje Niksic + + * md5.c (Fmd5): Correctly rename argument. + + * print.c (Fprin1_to_string): Remove useless variable. + +1998-04-13 Greg Klanderman + + * 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 + + * 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 + + * 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 + + * 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 + + * fileio.c (Fmake_temp_name): Avoid random(); simplify. + +1998-04-13 Michael Sperber [Mr. Preprocessor] + + * 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 + + * extents.c (decode_extent): Unify the error message. + +1998-04-17 Hrvoje Niksic + + * 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 + + * fileio.c (Finsert_file_contents_internal): Prefer fstat() over + stat. + +1998-04-15 Martin Buchholz + + * fns.c (Fsubseq): Make (subseq nil 0 0) return nil, not #*. + +1998-04-16 SL Baur + + * device-x.c (get_device_from_display): Use "infodock" as the + fallback name when running as InfoDock. + +1998-04-14 Greg Klanderman + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * md5.c: replaced RSA reference code with GNU textutils implementation. + +1998-04-14 Martin Buchholz + + * signal.c (init_signals_very_early): Make `nohup xemacs &' work. + Wrap #ifdefs around uses of SIGQUIT and SIGILL. + +1998-04-12 Kirill M. Katsnelson + + * objects-msw.c (mswindows_initialize_font_instance): Fixed assert + abuse; proper cleanup on GDI error. + +1998-04-14 Kirill M. Katsnelson + + * 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 + + * 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] + + * 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 + + * event-msw.c (emacs_mswindows_quit_p): don't recurse. + +1998-04-10 Kirill M. Katsnelson + + * 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 + + * 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 + + * redisplay.c (redisplay_window): Don't lose with negative + scroll_step. + +1998-04-09 Hrvoje Niksic + + * 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] + + * 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 + + * lstream.c (make_filedesc_stream_1): Fix another Martin blooper. + +1998-04-07 SL Baur + + * emacs.c (Fdump_emacs): Delete superfluous open comment. + +1998-04-06 SL Baur + + * emacs.c (Fdump_emacs): Move call to disable_free_hook back to + Fdump_emacs where it belongs. + +1998-04-07 Kirill M. Katsnelson + + * nt.c (sys_mkdir): Added the second unused parameter, after UNIX + version. Suggested by Martin. + +1998-04-07 Kirill M. Katsnelson + + * 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 + + * unexfreebsd.c: introduce FreeBSD port's patch to avoid + FreeBSD-current warns "Absurd new brk addr". + +1998-04-06 Colin Rafferty + + * 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 + + * fileio.c (Finsert_file_contents_internal): Correctly handle + special files larger than 32K. + +1998-04-06 Hrvoje Niksic + + * fileio.c (Fmake_temp_name): Don't call mktemp(). + +1998-04-06 Andreas Jaeger + + * unexelf.c: include first. + +1998-04-04 Martin Buchholz + + * sysdep.c: Add #include for AIXHFT as suggested + on c.e.x. + + * nt.c: + * ntproc.c: + Change "config.h" to . 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 + + * sysproc.h: Added #include before + 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 + + * redisplay.c (generate_fstring_runes): Grok specifiers and + symbols indirecting to specifiers. + +1998-04-06 Olivier Galibert + + * 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 + + * process-unix.c: Fix typo in #ifdef. + From Hrvoje Niksic + +1998-04-06 Olivier Galibert + + * 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 + + * sysdep.h: Two prototypes that weren't properly size_t'ed + +1998-04-04 Martin Buchholz + + * ralloc.c: mallopt <==> malloc.h. + +1998-04-04 Martin Buchholz + + * emacs.c: #include , 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 + + * s/386bsd.h: Removed obsolete define. + +1998-04-04 Olivier Galibert + + * s/386-ix.h: Removed useless define. + + * sysdep.c (insque): Removed. Not used anywhere in the code. + +1998-04-04 Olivier Galibert + + * 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 + + * 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 + + * 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 + + * 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 + + * 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] + + * m/ibmrs6000.inp: Removed; obsoleted by configure.in changes. + +1998-04-03 Martin Buchholz + + * 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 + + * m/powerpc.h: Remove LD_SWITCH_MACHINE for Linux. + +1998-04-02 Greg Klanderman + + * 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 + + * 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 + + * 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 + + * specifier.c (specifier_instance_from_inst_list): A nanosecond + saved is a nanosecond earned. + +1998-03-31 Greg Klanderman + + * 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 + + * 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 + + * sysdll.c (dll_close): fix typo. + Suggested by Marcus Thiessel + + +1998-03-28 Kyle Jones + + * 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 + + * lrecord.h (DECLARE_NONRECORD): Remove redundant paren. + Suggested by Martin Buchholz + +1998-04-01 Kirill M. Katsnelson + + * gui.c (gui_item_display_flush_left): Fix suffix length. + +1998-04-01 Kirill M. Katsnelson + + * s/windowsnt.h: Defined SIZEOF_LONG_LONG and SIZEOF_VOID_P + + * dired-msw.c: Included + + * config.h.in (VOID_P_BITS): Fixed so that uses SIZEOF_VOID_P + +1998-03-31 SL Baur + + * glyphs.c (image_instantiate_cache_result): Correct order of + parameters to Fputhash. + Suggested by Kirill M. Katsnelson + +1998-03-30 Martin Buchholz + + * redisplay.c (create_right_glyph_block): glyph_type should really + be glyph_layout. + +1998-03-29 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * frame.c (vars_of_frame): Default frame name should be InfoDock + for InfoDock. + +1998-03-29 SL Baur + + * 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 + + * 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 + + * 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 + + * emacs.c: Enabled free-hook.c code if + LOSING_GCC_DESTRUCTOR_FREE_BUG is defined. + +1998-03-28 Kyle Jones + + * 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 + + * 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 + + * 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] + + * emacs.c (main_1): Reinstated PATH searching for invocation data. + +1998-03-26 Kirill M. Katsnelson + + * 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 + + * 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 + + * s/hpux11.h: + * s/hpux11-shr.h: New files. + From Marcus Thiessel + + * Makefile.in.in: temporarily comment -lmcheck support. + Suggested by Marcus Thiessel + +1998-03-26 Michael Sperber [Mr. Preprocessor] + + * 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 + + * events.c (WRONG_EVENT_TYPE_FOR_PROPERTY): Don't feed + error_with_frob() with LispObjects. + +1998-03-26 Kirill M. Katsnelson + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * fileio.c (Ffile_readable_p): GC protect fix, MS Windows specific. + +Mon Mar 23 22:14:12 1998 Andy Piper + + * configure.in: compile in glyphs-msw.o when compiling fopr + mswindows. + +Mon Mar 23 22:14:12 1998 Andy Piper + + * msw-glyphs.el: add support for xpm and bmp. change + eval-and-compile to progn. + +Mon Mar 23 22:14:12 1998 Andy Piper + + * 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 + + * 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 + + * 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 + + * dired.c (Fdirectory_files): Simplify logic. + + * symbols.c (reject_constant_symbols): Allow setting a keyword's + function slot. + +1998-03-23 Hrvoje Niksic + + * lread.c (readevalloop): Don't specbind Qstandard_input to + READCHARFUN. + +1998-03-09 Hrvoje Niksic + + * 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 + + * events.c (Fmake_event): Allow creation of misc-user-events. + +1998-03-23 Michael Sperber [Mr. Preprocessor] + + * 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] + + * : 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 + + * 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 + + * m/powerpc.h (LD_SWITCH_MACHINE): Fix path to ppc.ldscript. + +1998-03-16 Hrvoje Niksic + + * 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 + + * ExternalShell.c (GetGeometry): Use a larger buffer for + sprintf(). + +1998-03-19 Kirill M. Katsnelson + + * 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 + + * insdel.c (bytecount_to_charcount): Use 'L' suffix on long + constants probably too large for an int. + +1998-03-18 Hrvoje Niksic + + * lread.c (read_atom_0): Signal Qend_of_file if readcharfun + returned -1. + (read_escape): Ditto. + (FSF_LOSSAGE): Ditto. + +1998-03-20 SL Baur + + * 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 + + * 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 + + * frame.c (delete_frame_internal): Correct check. + + * imgproc.c: Include . + +1998-03-13 P. E. Jareth Hein + + * glyphs-x.c: fix for upside-down TIFFs. + +1998-03-14 Kirill M. Katsnelson + + * 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 + + * 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 + + * eldap.c: (Fldap_search_internal): Print error information from + errno when connection fails + +1998-03-16 Hrvoje Niksic + + * lread.c: New macro, to avoid exposing an lstream to Lisp error + handlers. + (reader_nextchar): Use it. + (read1): Ditto. + +1998-03-15 Kyle Jones + + * 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 + + * 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 + + * 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 + + * emacs.c (main_1): Avoid snprintf(); allocate the buffer + dynamically. + +1998-03-13 P. E. Jareth Hein + + * glyphs-x.c (png_instantiate): Added in override support + for png backgrounds. + +1998-03-13 P. E. Jareth Hein + + * 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 + + * glyphs-x.c (png_instantiate): Fix brainfart in error handling code. + +1998-03-13 SL Baur + + * emacs.c (main_1): Guard call to snprintf. + + * config.h.in: Add HAVE_SNPRINTF. + +1998-03-13 Kirill M. Katsnelson + + * 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 + + * alloc.c (garbage_collect_1): Removed #ifndef WINDOWSNT around + mark_profiling_info(). + +1998-03-11 SL Baur + + * console-tty.c (Fset_console_tty_coding_system): Guard against + terminal-coding-system being left unitialized by a locale. + From Kazuyuki IENAGA + +1998-03-11 P. E. Jareth Hein + + * 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 + + * 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 + + * 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 > + + * 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 + + * 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 + + * 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 + + * sound.c (Fplay_sound_file): Place the result of continuable + error back to FILE. + +1998-03-09 SL Baur + + * 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 + + * eldap.h: Fix copyright. + * eldap.c: Ditto. + +1998-03-08 SL Baur + + * Makefile.in.in: Add dependencies for process-unix.o. + +1998-03-08 Kyle Jones + + * 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 + + * 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 + + * 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 + + * emacs.c (shut_down_emacs): Disable forced auto-save in a crash. + It causes more problems than it solves. + +1998-03-02 Greg Klanderman + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * editfns.c (Ftemp_directory): New function. + From Glynn Clements + + * editfns.c (Ftemp_directory): Use build_ext_string. + +1998-03-02 Martin Buchholz > + + * symsinit.h: add prototype for syms_of_dlopen + +1998-03-02 Kyle Jones + + * 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 + + * "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 + + * 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 + + * process.c (Fprocess_status): Restore old behavior -- call + Fget_process on a string argument. + +Mon Mar 02 11:37:36 1998 Andy Piper + + * 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 + + * 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 + + * 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 + + * 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 + + * file-coding.c (DEFINE_SUB_CODESYS): Undo previous patch. + +1998-03-01 Kyle Jones + + * 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 + + * 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 + + * 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 + + * buffer.c (complex_vars_of_buffer): Fix DOC string for + buffer-file-coding-system. + +1998-02-26 Damon Lipparelli + + * symsinit.h: syms_of_ldap() is actually syms_of_eldap(). + + * eldap.c: removed duplicates. + +1998-02-26 SL Baur + + * file-coding.c (setup_eol_coding_systems): Disable SUB_CODESYS + feature -- it causes stack corruption in Mule. + +1998-02-27 Kirill M. Katsnelson + + * events.c (character_to_event): The code which guesses TTY + backspace character is conditionalized on HAVE_TTY + +1998-02-26 SL Baur + + * console.c (complex_vars_of_console): Guard tty_erase_char with + HAVE_TTY. + * conslots.h: Ditto. + +1998-02-25 SL Baur + + * events.c (character_to_event): Correct operations on tty_erase_char. + From Martin Buchholz + + * 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 + + * 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 + + * 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 + + * s/decosf4-0.h: Add -D_BSD. + From Tore Olsen + +1998-02-21 Greg Klanderman + + * 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 + + * 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 + + * s/sol2.h: define HAVE_GETLOADAVG for late edition Solaris + From Georg Nikodym + +1998-02-24 Didier Verna + + * 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 + + * 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 + + * 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 + + * config.h.in: Define _NO_MALLOC_WARNING_ if using dlmalloc from + Linux libc5. + +1998-02-19 Andreas Jaeger + + * emacs.c: declare hooks only if !DOUG_LEA_MALLOC since the + declaration conflicts with glibc's own. + +1998-02-19 SL Baur + + * 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 + + * 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 + + * 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 + +1998-02-18 SL Baur + + * Makefile.in.in: Remove all references to prefix-args. + +1998-02-18 Kirill M. Katsnelson + + * 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 + + * 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 + + * 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 + + * 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 + + * m/alpha.h: + * unexelf.c: Synched with Emacs 20.2. + From Aki Vehtari + + * emacs.c (main): Don't call __sbrk(). + * gmalloc.c (__sbrk): Ditto. + Suggested by Andreas Jaeger + +1998-02-17 SL Baur + + * console-tty.c (Fset_console_tty_coding_system): New function. + From Kazuyuki IENAGA + +1998-02-15 SL Baur + + * 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 + + * s/sco5.h: Define LIB_GCC as -lgcc for gcc 2.8 and egcs. + Suggested by Robert Lipe + +1998-02-14 Martin Buchholz + + * 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 + + * unexelfsgi.c: Various changes. + From Olivier Galibert + + * s/freebsd.h: Avoid redefining BSD. + From Kazuyuki IENAGA + + * extents.c (extent_fragment_update): Break up a line to avoid a + Digital UNIX 3.2g C compiler bug. + From Tonny Madsen + + * process.c (create_process): Restore save_environ hackery. + +1998-02-10 SL Baur + + * emacsfns.h: Remove mocklisp declarations. + + * redisplay-msw.c (mswindows_update_dc): Enable evil kludge for + cygwin. + From Andy Piper + +1998-02-09 SL Baur + + * 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 + + * 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 + + * 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 + + * objects-msw.c: + Updated color database to X11R6. Also added support for + "#RRRGGGBBB" and "#RRRRGGGGBBBB" in addition to "#RRGGBB". + +1998-02-08 Jonathan Harris + + * 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 + + * 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 + + * 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 + + * symbols.c (Fintern): Use Qt instead of the actual obarray. + (init_symbols_once_early): Ditto. + +1998-01-27 Hrvoje Niksic + + * lisp.h (DO_REALLOC): Name the variable `do_realloc_newsize' + instead of `newsize', to avoid name collisions. + +1998-01-26 Hrvoje Niksic + + * print.c (print_symbol): Be more wary about the contents of + Vprint_gensym_alist. + +1998-02-06 SL Baur + + * 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 + + * Makefile.in.in: add support for sheap-adjust.h generation for + static heap. + +Wed Jan 28 13:41:22 1998 Andy Piper + + * 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 + + * 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 + + * unexelf.c: Fix alignment problems on Linux. + +1998-02-01 Kyle Jones + + * 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 + + * 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 + + * 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 + + * 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 + + * Makefile.in.in: move `rm puresize-adjust.h' from distclean + to mostlyclean + +1998-01-29 SL Baur + + * 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 + +1998-01-28 SL Baur + + * faces.c (init_device_faces): This function can call lisp. + +1998-01-28 P. E. Jareth Hein + + * 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 + + * 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 + + * 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 + + * symbols.c (init_symbols_once_early): Decreased default size of + Vpure_uninterned_symbol_table to 50. + +1998-01-27 SL Baur + + * redisplay-x.c (x_output_string): Correction for handling underlined + fonts when XGetFontProperty fails. + From Chris Felaco + +1998-01-27 Kyle Jones + + * 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 + + * alloc.c (report_pure_usage): New macro PURESIZE_SLOP to allow + for extra pure space. + +1998-01-23 SL Baur + + * sound.c (Fplay_sound_file): Use NILP for comparison of + Lisp_Object. + +Wed Jan 21 10:49:47 1998 Andy Piper + + * 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 + + * 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 + + * symbols.c (Funintern): Reset symbol's obarray property. + +1998-01-22 Karl M. Hegbloom + + * alloc.c (size_vector): Declare *p as CONST to eliminate warning. + +1998-01-22 Hrvoje Niksic + + * 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 + + * toolbar.c (update_toolbar_button): Eliminate redundant NILP + checks. + From Martin Buchholz + +1998-01-21 Hrvoje Niksic + + * dlopen.c: New file. + +1998-01-19 Steven L Baur + + * eval.c (prog1): Don't GCPRO unitialized variable. + (prog2): Ditto. + From Martin Buchholz + +1998-01-19 Hrvoje Niksic + + * sound.c (Fplay_sound_file): Use + signal_simple_continuable_error() instead of error(). + +1998-01-18 Hrvoje Niksic + + * README: Updated. + +1998-01-18 SL Baur + + * glyphs-x.c (imagick_instantiate): Dynamically allocate pixar + with alloca. + From Damon Lipparelli + +1998-01-14 Martin Buchholz + + * 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 + + * 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 + + * fileio.c (Fexpand_file_name): Synched with FSF. + +1998-01-13 Hrvoje Niksic + + * objects-msw.c (mswindows_color_instance_rgb_components): + Multiply components by 257 instead of shifting by 8. + +1998-01-15 Hrvoje Niksic + + * elhash.c (Fhashtable_type): New function. + (Fhashtable_test_function): Ditto. + +1998-01-12 SL Baur + + * profile.c (Fclear_profiling_info): Fix typing error. + + * elhash.c (elisp_map_remhash): Fix typing error. + (elisp_maphash): Ditto. + +1998-01-12 Hrvoje Niksic + + * mule-ccl.c (Fccl_execute_on_string): Use Dynar_free to free a + Dynarr. + +1998-01-13 Hrvoje Niksic + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * eval.c (Fbacktrace): Treat first parameter to byte-code + specially. + +Sat Jan 10 11:36:11 1998 Andy Piper + + * 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 + + * buffer.c (reset_buffer_local_variables): Synch case-table + resetting stuffs from Emacs 20.2. + Suggested by Aki Vehtari + + * src/symbols.c (Fsetq_default): Fix docstring. + From Didier Verna + +1998-01-07 Kirill M. Katsnelson + + * 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 + + * 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 + + * 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 + + * 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 + + * 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_ 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 + + * 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 + + * frame.h: fix erroneous FRAME_RIGHT_BORDER_START macro. + Corrects display glitch when toolbar is on the right. + +1998-01-02 Kirill M. Katsnelson + + * 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 + + * m/sparc.h: Cleans up some warnings about unused variables in + getloadavg.c under Sparc/Linux. + From Stephen J. Turnbull + + * 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 + + * emacs.c: New variables `inhibit-update-dumped-lisp' and + `inhibit-update-autoloads'. + (vars_of_emacs): Initialize them. + +1997-12-29 Kirill M. Katsnelson + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * glyphs-x.c (imagick_instantiate): Add in error and + warning handling for ImageMagick files + +1997-12-26 SL Baur + + * Makefile.in.in (distclean): Remove `xemacs.*'. + +1997-12-22 SL Baur + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * fileio.c (Finsert_file_contents_internal): Use it. + (Fcopy_file): Ditto. + + * sysdep.c (interruptible_open): New function. + +1997-12-16 Kyle Jones + + * 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 + + * fileio.c: clean up paren levels between ifdefs. + From Hrvoje Niksic + +1997-12-15 P. E. Jareth Hein + + * glyphs-x.c (imagick_instantiate): Remove an assumption that + all machines have LSB XImage support. + +1997-12-14 Kyle Jones + + * 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 + + * offix.c (DndSetData): Use standard INT_MAX instead of MAXINT. + Replace with + +1997-12-13 Kirill M. Katsnelson + + * 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 + + * 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 + + * fileio.c: Removed stillborn set-buffer-modtime. + +1997-12-10 Hrvoje Niksic + + * 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 + + * elhash.c (print_hashtable_data_mapper): Use a C structure + instead of consing. + +1997-12-12 Hrvoje Niksic + + * 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 + + * 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 , Kirill M. Katsnelson + + * 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 + + * 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 and + Martin Buchholz + +1997-12-10 Karl M. Hegbloom + + * config.h.in: #undef MAGICK_HEADERS_ARE_UNDER_X11 + + * glyphs-x.c: #ifdef MAGICK_HEADERS_ARE_UNDER_X11 added. + +1997-12-11 SL Baur + + * glyphs-x.c (_XOS_H_): Try to avoid including Xos.h on Solaris. + Suggested by Samuel Tardieu + +1997-12-11 David Hobley + + * pure.c: Removed WINDOWSNT conditional. + +1997-12-10 SL Baur + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * device-x.c: Change -privcmap to -privatecolormap. + * events.c: corret minor think-o. + +1997-12-04 Jonathon Harris + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * keymap.h: update describe_map_tree prototype + +1997-12-03 Hrvoje Niksic + + * 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 + + * editfns.c (save_excursion_restore): Fix comment. + + * fns.c (Fmapvector): GCPRO the vector. + +1997-12-01 Hrvoje Niksic + + * 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 + + * 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 + + * 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 + + * buffer.c (Fkill_buffer): Use EXTERNAL_LIST_LOOP. + (Fget_file_buffer): Use LIST_LOOP. + +1997-12-02 Hrvoje Niksic + + * 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 + + * fns.c (Fmapvector): Don't stack-allocate args; allocate the + vector and call mapcar1 with its data. + +1997-12-02 P E Jareth Hein + + * 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 + + * 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 + + * device-msw.c: Turn on italic flag if appropriate + * objects-msw.c: Set device-class to color. + From Jeff Sparkes + + * glyphs-x.c: Should include since that is what + is autodetected by configure. + +1997-11-26 SL Baur + + * events.c (Fmake_event): correct type bug. + From Colin Rafferty + +1997-11-26 Kyle Jones + + * 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 + + * 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 + + * faces.c (face_property_was_changed): Don't call + update_faces_inheritance, it isn't needed. + +1997-11-22 Kyle Jones + + * 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 + + * 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 + + * callproc.c (Fcall_process_internal): Fix for bug in + CRLF -> LF conversion. + +1997-11-19 Jonathan Harris + + * 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 + + * callproc.c (call_process_cleanup): Actaully wait + for the process, rather than not doing it and saying we + did. + +1997-11-20 Hrvoje Niksic + + * callproc.c (Fcall_process_internal): Close fd_error. + +1997-11-19 Didier Verna + + * emacs.c (main_1): Added the missing argmatch call to check + for the '-h' option. + +1997-11-18 SL Baur + + * mule-coding.h: Replace freshly broken ENCODE_SJIS and + DECODE_SJIS macros with working versions from beta4. + +1997-11-17 Kyle Jones + + * 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 + + * Makefile.in.in (update-elc.stamp): Add temacs to dependency. + +1997-11-16 Kyle Jones + + * 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 + + * frame-x.c: Fixed typo in the documentation of the + top-toolbar-shadow-color frame property. + +1997-11-16 Skip Montanaro + + * redisplay.c: suppress buffer computation in several places if + MULE is not defined. + +1997-11-16 Hrvoje Niksic + + * 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 + + * 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 + + * console.c (Fsuspend_emacs): Fix docstring. Evaluating + `suspend-hook' cannot stop suspension. + +1997-11-14 Marc Paquette + + * callproc.c (Fcall_process_internal): Do CRLF -> LF + conversion when reading process output. + +1997-11-14 Hrvoje Niksic + + * redisplay.c (init_redisplay): Handle not having DISPLAY and not + having TTY support. + +1997-11-14 Hrvoje Niksic + + * events.c (Fmake_event): Support DND events. + +1997-11-10 Hrvoje Niksic + + * events.c (Fmake_event): Reenable the event creation code. + (Fmake_event): Canonicalize the plist. + +1997-11-13 SL Baur + + * 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 + + * 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 + + * nt.c (REG_ROOT): Use a registry key different that the one for + NTEmacs. + +1997-11-12 SL Baur + + * lrecord.h: Fix typo in set_lheader_implementation. + From: Robert Pluim + +1997-11-13 Olivier Galibert + + * configure.in: Remove HAVE_TIMEZONE_DECL test. + +1997-11-13 Olivier Galibert + + * 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 + + * 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 + + * event-stream.c: Make echo_keystrokes a Lisp_Object. + (maybe_echo_keys): Adapt to that. + +1997-11-11 SL Baur + + * eval.c (throw_or_bomb_out): Remove abort. + Suggested by: Kyle Jones + +1997-11-11 Kyle Jones + + * 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 + + * 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 + + * extents.c (print_extent_1): Use %lx instead of %p + to get the same output on all compilers. + +1997-11-09 Hrvoje Niksic + + * 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 + + * event-stream.c: New Lisp variable: last-command-event-time. + +1997-11-08 SL Baur + + * lread.c (init_lread): start from lisp, not lisp/prim. + + * Makefile.in.in: lisp/prim does exist any more. + +1997-11-07 Kyle Jones + + * 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 + + * 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 + + * 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 + + * doc.c (Fdocumentation_property): GCPRO doc. + (Fsubstitute_command_keys): Disallow zero bsize. + +1997-11-06 Hrvoje Niksic + + * events.c (Fevent_modeline_position): Return nil if event is not + over modeline, as the docstring says. + +1997-11-05 Martin Buchholz > + + * s/aix3-1.h: Remove ^L character wich confuses AIX make. + +1997-11-06 Tomasz Cholewo + + * event-stream.c (Fnext_command_event): Document keystroke echoing. + +1997-11-06 Hrvoje Niksic + + * fns.c (Ffeaturep): Use call1, to prevent stack thrashing with + circular lists. + - Update docstring. + +1997-11-06 Kyle Jones + + * frame-x.c (x_delete_frame): Removed code that + blocked the deletion of popup frames. No need for it. + +1997-11-05 SL Baur + + * balloon_help.h: Replace with "xintrinsic.h" + * balloon_help.c: Ditto. + * offix.h: Ditto. + + * mule-coding.c (coding_system_charset): Add prototype. + +1997-11-04 Kazuyuki IENAGA + + * 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 and + , it cannot be recognized by configure. + +1997-11-03 Hrvoje Niksic + + * data.c (Fsubr_interactive): New function. + +1997-11-03 Kyle Jones + + * 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 + + * fileio.c (Ffile_truename): Make the errno == EACCES case + behave the same as errno == ENOENT. + +1997-11-03 Kyle Jones + + * 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 + + * 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 + + * 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 + + * glyphs-x.c: Use instead of + +1997-11-02 Andreas Jaeger + + * sysdep.c: + * getloadavg.c: + * malloc.c: Remove old VMS code. + +1997-11-02 Hrvoje Niksic + + * 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 + + * 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 + + * dired.c: Remove VMS dependent code. + +1997-11-01 Kyle Jones + + * 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 + + * linuxplay.c (audio_init): Update for newer Linux kernels. + From Robert Bihlmeyer + +1997-11-01 Hrvoje Niksic + + * fileio.c (Finsert_file_contents_internal): Fix misleading + comment. + +1997-10-31 Kyle Jones + + * callproc.c: GC protect current_dir while infile and + error_file are being initialized. + +1997-10-30 SL Baur + + * config.h.in: Remove HAVE_GIF, HAVE_JPEG, HAVE_PNG, HAVE_TIFF and + replace with HAVE_IMAGEMAGICK. + +1997-10-30 Kyle Jones + + * process.c (Fprocess_send_string): Protect against + SIGPIPE when flushing outstream. + +1997-10-30 SL Baur + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * toolbar.h: Reduce MINIMUM_SHADOW_THICKNESS to 1. + +1997-10-24 Andreas Jaeger + + * database.c: Added support for Berkeley DB 2.x. + +1997-10-23 SL Baur + + * 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 + + * 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 + + * fns.c (Ffeaturep): Use `Fcar' with `or'. + +1997-10-22 Kyle Jones + + * 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 + + * 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 + + * 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 + + * 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 + + * fns.c (Ffeaturep): Handle `not' correctly. + + * lread.c (vars_of_lread): Use defsymbol for featurep. + +1997-10-15 Olivier Galibert + + * s/irix5-0.h: Removed -G 0 from LD_SWITCH_SYSTEM. .sbss sections + are supported since unexelfsgi.c upgrade. + +1997-10-16 Kyle Jones + + * 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 + + * extents.c (Fset_extent_property): Allow `keymap' property to be + set to nil. + +1997-10-15 SL Baur + + * mule-coding.c (acceptable_control_char_p): Add C-_ for info. + (detect_coding_iso2022): Ditto. + From SENDA Shigeya + +1997-10-09 MORIOKA Tomohiko + + * 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 + + * lisp.h (MANY): Bump SUBR_MAX_ARGS to 12 and add corresponding + DEFUN_n macros. + +1997-10-13 Stephen J. Turnbull + + * console-tty.c: Include gpmevent.h + * gpmevent.c (connect_to_gpm): change to void + * gpmevent.h: Ditto. + +1997-10-13 Kyle Jones + + * 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 + + * s/freebsd.h: Add X11 guard for building without X11. + From Hrvoje Niksic + +1997-10-12 Kyle Jones + + * 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 + + * unexsol2.c (unexec): CONST isn't defined here. + From Adrian Aichner + +1997-10-11 SL Baur + + * 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 + + * systty.h: + - change Xemacs --> XEmacs + + * buffer.c: + * editfns.c: + * msdos.c: + - Remove bogus FSF-origin \n\ sequences. + +1997-10-09 Kyle Jones + + * 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 + + * 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 + +1997-10-08 Hrvoje Niksic + + * events.c (Fmake_event): Allow only frames as channel. + +1997-10-07 Hrvoje Niksic + + * extents.c (print_extent_1): Fixed typo. + +1997-10-07 Kyle Jones + + * 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 + + * 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 + + * lisp.h: Nuke register declarations. + +1997-10-03 Karl M. Hegbloom + + * window.c (Frecenter): Correct variable names in docstring. + +1997-10-03 Karl M. Hegbloom + + * fns.c: Add some cross references between destructive and + non-destructive versions of similar functions. + +Fri Oct 3 12:28:08 1997 Kyle Jones + + * 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 + + * profile.c (Fclear_profiling_info): Made interactive. + +1997-10-02 SL Baur + + * glyphs-x.c (USE_TEMP_FILES_FOR_PNG_IMAGES): Move outside of + HAVE_JPEG ifdef. + +1997-10-01 SL Baur + + * 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 + + * events.c (Fevent_type): Add OffiX guard. + (command_event_p): Ditto. + (mark_event): Ditto. + (print_event): Ditto. + +1997-09-30 SL Baur + + * 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 + + * frame.c (Fmake_frame): Call `custom-initialize-frame'. + +1997-09-24 MORIOKA Tomohiko + + * mule-coding.c: Rename `pathname-coding-system' to + `file-name-coding-system' to sync with Emacs 20.2. + +1997-09-26 Hrvoje Niksic + + * 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 + + * 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 + + * 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 + + * extents.c (Fset_extent_properties): New function. + +1997-09-24 SL Baur + + * 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 + + * widget.c (Fwidget_apply): Don't GCPRO result of Fwidget_get. + +1997-09-24 SL Baur + + * 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 + + * Makefile.in.in (objs): Add new C file widget.o. + +1997-09-22 SL Baur + + * 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 + + * 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 + + * menubar.c (normalize-menu-item-name): New function. + +1997-09-21 SL Baur + + * keymap.c (get_relevant_extent_keymaps): Previous patch reversed. + +1997-09-20 SL Baur + + * Makefile.in.in (xemacs): Adoption of shadow.el to print + load-path shadowings after successful dump. + +1997-09-20 Hrvoje Niksic + + * redisplay.c (scroll_conservatively): New variable. + (redisplay_window): Use it. + +1997-09-16 SL Baur + + * events.c (Fmake_event): Add default case, remove unused variables. + +1997-08-21 Jan Vroonhof + + * 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 + + * fileio.c (Fexpand_file_name): Don't treat "//" and "~/" in the + middle of path specially. + +1997-09-10 Hrvoje Niksic + + * event-stream.c (inhibit_input_event_recording): New boolean + variable. + (Fnext_event): Use it. + +1997-09-13 Hrvoje Niksic + + * fns.c (Fmapc): Renamed from Fmapc_internal. + +1997-09-10 Hrvoje Niksic + + * database.c (Fmake_database): Expand FILE. + + * redisplay.c (window-system): Warn against using it. + +1997-09-08 SL Baur + + * emacs.c (PACKAGE_PATH): Reverse PACKAGE_PATH. + Suggested by Colin Rafferty + +1997-09-03 SL Baur + + * print.c (print_internal): Special treatment for C-\. + +1997-08-13 P E Jareth Hein + + * 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 + + * doc.c (Fsnarf_documentation): Semi-clarify types of weird + functions. + +1997-08-05 Jens-Ulrik Holger Petersen + + * eval.c (vars_of_eval): Updated docstring for `debug_on_error' to + mention `debug-ignored-errors'. + +1997-08-01 SL Baur + + * emacsfns.h: Fix declaration. + + * event-stream.c (syms_of_event_stream): HAVE_MENUBARS not + HAVE_MENUBAR. + +1997-07-31 SL Baur + + * 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 + + * redisplay.c: `window-system' isn't going away any time soon. + +1997-07-29 SL Baur + + * callint.c (Fcall_interactively): Allow floating point numbers + for `n' and `N' interactive specs. + +1997-07-27 SL Baur + + * 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 + + * alloc.c (Fmake_byte_code): GC protect newly allocated function + when looking up filename. + +1997-07-25 SL Baur + + * Makefile.in.in: Added support for linking with dmalloc. + +1997-07-25 P E Jareth Hein + + * 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 + + * 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 + + * 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 + + * fileio.c (Finsert_file_contents_internal): Handle non-regular + files. + +1997-07-12 Steven L Baur + + * Makefile.in.in (LOCK_OBJ): Only include filelock.[co] when + CLASH_DETECTION is defined. + +1997-07-11 Steven L Baur + + * emacs.c (main_1): Spelling fix. + +1997-07-10 Steven L Baur + + * 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 + + * extents.c: Allow non-symbol properties of extents. + +1997-07-08 Hrvoje Niksic + + * 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 + + * 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 + + * 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 + + * data.c (Fstring_to_number): Fix typo. base isn't an integer. + +1997-07-01 Steven L Baur + + * 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 + + * glyphs.c (make_string_from_file): Use + insert-file-contents-literally instead of + insert-file-contents-internal. + +1997-06-30 Steven L Baur + + * 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 + + * emacsfns.h: Put void in prototype. + Suggested by Ben Wing. + +1997-07-01 MORIOKA Tomohiko + + * glyphs.c (make_string_from_file): must protect from + `format-alist'. + +1997-06-28 Steven L Baur + + * config.h.in: Back out previous change to LOSING_BYTECODE. It's + just not worth it. + +1997-06-27 Mike Scheidler + + * s/sol2.h: Undefined _XOPEN_SOURCE for Solaris 2.4. + +1997-06-28 Hrvoje Niksic + + * 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 + + * 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 + + * print.c (Ferror_message_string): Simplify. + +1997-06-27 Steven L Baur + + * symbols.c (Fdefine_function): Correct docstring. + (Fsetplist): Ditto. + (Ffset): Ditto. + (Fsetq_default): Ditto. + +1997-06-27 Hrvoje Niksic + + * 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 + + * 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 + + * mule-charset.c: Modify charset DOC-strings to be more detailed. + +1997-06-25 Steven L Baur + + * alloc.c (Flist): Optimize. + From Hrvoje Niksic. + +1997-06-23 Steven L Baur + + * 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 + + * 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 + + * s/linux.h: getpgrp with glibc is now properly detected by + configure. + Suggested by Andreas Jaeger + +1997-06-20 Steven L Baur + + * events.c: Remove declaration of Qempty. + +1997-06-20 Olivier Galibert + + * frame-x.c, EmacsFrame.c, menubar-x.c, redisplay-x.c, scrollbar-x.c: + Make 64 bit clean. + +1997-06-19 Martin Buchholz + + * 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 + + * 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 + + * 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 + + * fns.c (Fmapvector): New function converted from Lisp. + From Hrvoje Niksic + +Wed Jun 18 16:42:10 1997 Steven L Baur + + * 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 + + * 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 + + * 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 + + * Makefile.in.in (lisp): Remove explicit mention of auto-autoloads.el. + +Sat Jun 14 21:55:27 1997 Kyle Jones + + * 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 + + * 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 + + * 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 + + * 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 + + * alloc.c: Make the GC cursor appear on all frames. + From Hrvoje Niksic + +1997-06-11 Steven L Baur + + * 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 + + * bytecode.c (Bsave_current_buffer): Register. + (Fbyte_code): Do action. + + * editfns.c (Fsave_current_buffer): New SUBR. + +1997-06-11 Steven L Baur + + * 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 + + * 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 + + * 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 + + * Makefile.in.in: Use lisp/mule/language/misc-lang.el instead of + lisp/mule/ipa-hooks.el. + +1997-06-10 MORIOKA Tomohiko + + * Makefile.in.in: Use lisp/mule/language/thai.elc instead of + lisp/mule/thai-hooks.elc. + +1997-06-09 MORIOKA Tomohiko + + * 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 + + * 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 + + * keydefs.c (get_relevant_extent_keymaps): Choose correct keymap + at extent boundaries. + +Mon Jun 9 19:35:19 1997 Kyle Jones + + * 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 + + * 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 + + * sysdep.c: MS Windows NT doesn't (yet) do child TTY processes. + From David Hobley + +Sat Jun 7 22:00:54 1997 Kyle Jones + + * 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 + + * frame.c (Fmake_frame): Correct checking of first_frame_on_device. + From Hrvoje Niksic + +1997-06-04 Steven L Baur + + * 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 + + * specifier.c (Fboolean_specifier_p): Correct spelling in + Docstring (synch from Infodock 3.5). + + * frame.c: Update docstring. + +1997-06-03 Hrvoje Niksic + + * 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 + + * 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 + + * 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 + + * search.c (REGEXP_CACHE_SIZE): Bump to 20. + Suggested by Karl M. Hegbloom + +1997-05-30 Steven L Baur + + * 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 + +1997-05-29 Steven L Baur + + * 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 + + * 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 + + * 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 + + * event-stream.c: New variable recent_keys_ring_size replacing a + hard-coded macro. + +1997-05-23 Steven L Baur + From Hrvoje Niksic + + * sysdep.c: Correction of subprocess support when compiling + without ttys. + +1997-05-21 Steven L Baur + + * editfns.c (format-time-string): Update DOCstring. Make time + parameter optional. + +Wed May 21 11:58:17 1997 Kyle Jones + + * 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 + + * frame.c: Correct spelling typo in docstring. + +Mon May 19 03:40:46 1997 Kyle Jones + + * 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 + + * Makefile.in.in (distclean): remove xemacs-version.h. + +Sun May 11 13:38:46 1997 Kyle Jones + + * 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 + + * 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 + + * frame-tty.c: Support multiple frames. + + * redisplay.c (decode_mode_spec): New coding `%N'. + +Sun May 11 23:36:08 1997 Steven L Baur + + * 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 + + * 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 + + * 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 + + * glyphs-x.c (Fmake_subwindow): Update error message. + +Wed Apr 30 18:07:18 1997 Steven L Baur + + * 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 + + * buffer.c (Fmake_indirect_buffer): Don't pretend it's there. + +Fri Apr 25 10:53:07 1997 Steven L Baur + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * regex.c (re_search_2): Prevent incorrect matching and infinite + loop with \\` and MULE. + +Sat Apr 12 05:57:51 1997 Steven L Baur + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * buffer.c (Fkill_buffer): Don't kill special + Vprin1_to_string_buffer. + +Mon Apr 7 19:13:40 1997 Steven L Baur + + * 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 + + * 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 + + * fns.c: Correct DOC string to not equate integers and + characters. + +Thu Apr 3 08:01:50 1997 Steve Carney + + * s/decosf4.0-static.h: New file. + +Tue Apr 1 12:22:32 1997 Steven L Baur + + * 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 + + * 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 + + * 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 + + * ralloc.c (MHASH): Make 64bit Alpha happier. + +Tue Mar 25 11:36:08 1997 David Moore + + * 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 + + * 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 + + * 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 + + * Makefile.in.in: strip inline.o. + +Fri Mar 21 18:54:04 1997 David Moore + + * 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 + + * mule-coding.c (vars_of_mule_coding): Add + enable-multibyte-characters for MULE compatibility. + +Thu Mar 20 13:25:26 1997 Steven L Baur + + * 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 + + * 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 + + * glyphs-x.c: Strip unimplemented subwindows code. + +Mon Mar 17 15:40:12 1997 David Moore + + * 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 + + * Makefile.in.in (xemacs): Invert sense of test for successful + completion of XEmacs dump. + +Sat Mar 15 14:21:39 1997 David Moore + + * 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 + + * Makefile.in.in (lisp): Add auto-customize.elc. + +Fri Mar 14 19:10:37 1997 David Moore + + * 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 + + * 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 + + * 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 + + * 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 + + * minibuf.c (regexp_ignore_completion_p): Reverse meaning of + completion-regexp-list. + +Thu Mar 6 19:15:29 1997 Steven L Baur + + * data.c (eq_with_ebola_notice): Unobfuscate Ebola warning!!! + message. + +Wed Mar 5 16:11:22 1997 Steven L Baur + + * 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 + + * 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 + + * Makefile.in.in (lisp): Remove custom-xmas.elc. + +Sat Mar 1 01:20:39 1997 Steven L Baur + + * 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 + + * 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 + + * 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 + + * frame-x.c (x_frame_visible_p): Reverse previous change. + +Sun Mar 2 14:01:32 1997 David Moore + + * 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 + + * 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 + + * 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 + + * process.c (record_exited_processes): Fix obvious typo in + checking for SIGCLD. + +Sun Feb 23 01:45:49 1997 Martin Buchholz + + * 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 + 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 + + * 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 + + * Makefile.in.in (lisp): Snarf docstrings from new file + itimer-autosave.elc. + +Fri Feb 21 18:21:32 1997 Jan Vroonhof + + * event-Xt.c (emacs_Xt_handle_magic_event): Correction for frame + freezing bug. + +Wed Feb 19 12:54:32 1997 Per Abrahamsen + + * buffer.c (Fbuffer_disable_undo): Default to current buffer. + +Tue Feb 18 12:37:28 1997 Steven L Baur + + * Makefile.in.in (lisp): Dump new file custom-xmas.elc. + +Mon Feb 17 11:29:07 1997 Steven L Baur + + * 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 + + * 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 + + * 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 + + * 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 + + * emacs.c (main_1): Fix NeXT malloc initialization. + +Fri Feb 7 11:36:56 1997 Steven L Baur + + * 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 + + * 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 + + * mule-coding.c (ENCODE_SJIS): Correct typo. + +Thu Feb 6 01:10:22 1997 Steven L Baur + + * frame.c (delete_frame_internal): Protect against deletion of + frames with living popup children. + +Wed Feb 5 17:13:17 1997 David Moore + + * emacs.c (main_1): Try to avoid collisions against potentially + incompatible system mallocs. + +Mon Feb 3 23:04:41 1997 Joel Peterson + + * redisplay.c: Activate face/charset redisplay caching. + +Mon Feb 3 22:01:09 1997 Kyle Jones + + * 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 + + * 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 + + * syntax.c (scan_sexps_forward): Change test on targetdepth to + match Emacs 19.34. + +Wed Jan 29 22:11:53 1997 James LewisMoss + + * gmalloc.c: Corrections for namespace collision with Linux libc + malloc. + +Mon Jan 27 21:46:53 1997 Tomasz J. Cholewo + + * fileio.c (Fwrite_region_internal): pack lockname to write-region + handler. + +Mon Jan 27 04:50:50 1997 David Moore + + * gmalloc.c (malloc): Guard against incompatible system mallocs + with conflicting symbols. + +Sun Jan 26 12:27:04 1997 Steven L Baur + + * redisplay.c (add_emchar_rune): Back out optimization change of + caching last_charset. + +Sun Jan 26 09:10:45 1997 Hrvoje Niksic + + * 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 + + * 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 + * 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 + + * m/aviion.h: Remove definition of m88k. + + * s/dgux5-4r4.h: New file. + +Wed Jan 22 18:32:49 1997 Steven L Baur + + * buffer.h: Put proper typecasts on calls to alloca(). + +Tue Jan 21 22:25:23 1997 Steven L. Baur + + * 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 + + * 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 + + * s/nextstep.h (signal_handler_t): define as int. + +Mon Jan 20 21:12:57 1997 Martin Buchholz + + * 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 + + * 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 + + * redisplay.c (add_emchar_rune): Enable last_charset display + optimization. + +Wed Jan 15 19:06:27 1997 David Moore + + * event-stream.c (Faccept_process_output): Avoid checking an + uninitialized variable. + +Wed Jan 15 14:14:24 1997 Steven L Baur + + * 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 + + * 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 + + * Makefile.in.in: TM .elcs moved to SUNPRO_LISP only. + +Fri Jan 10 20:21:47 1997 Ben Wing + + * minibuf.c (Ftry_completion): Don't crash if not given a proper + obarray. + +Fri Jan 10 09:49:44 1997 Ted Phelps + + * objects-x.c (x_initialize_font_instance): Hardcode 'n' for + default font width. + +Mon Jan 6 15:16:46 1997 Carsten Leonhardt + + * Makefile.in.in: Linking with canna requires -lRKC. + +Mon Jan 6 12:22:57 1997 Frederic Poncin + + * gmalloc.c: Don't declare __sbrk on SparcLinux. + +Sun Jan 5 18:04:47 1997 Soren Dayton + + * Makefile.in.in: IRIX6 can use sgiplay.c too. + +Sat Jan 4 12:15:16 1997 Steven L Baur + + * 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 + + * 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 + + * m/ibmrs6000.inp: Added various get.* symbols. + +Sun Dec 29 20:16:08 1996 Steven L Baur + + * 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 + + * event-Xt.c (x_to_emacs_keysym): Corrections to SUNOS_GCC_LO_BUG. + +Mon Dec 23 11:37:16 1996 Martin Buchholz + + * fns.c (Ffillarray): Fix for (fillarray #*10 0) + +Mon Dec 23 10:27:14 1996 Steven L Baur + + * 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 + + * 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 + + * 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 + + * cmds.c (Fbeginning_of_line): Adjust for 64 bit machines. + +Thu Dec 19 00:44:10 1996 Bart Robinson + + * syssignal.h: The declaration of SIGTYPE shouldn't be protected + by HAVE_SIGPROCMASK. + +Wed Dec 18 20:40:21 1996 Martin Buchholz + + * 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 under certain conditions. + +Mon Dec 16 19:13:10 1996 Steven L Baur + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * puresize.h (BASE_PURESIZE): Bumped up PURESIZE by 10k. + +Sat Dec 7 16:26:34 1996 Martin Buchholz + + * config.h.in: configure for POSIX getcwd if available. + +Sat Dec 7 15:48:39 1996 Steven L Baur + + * 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 + + * redisplay.c: Allow column numbers in modeline to start from 1. diff --text -u 'xemacs-21.5.9/src/ExternalClient.c' 'xemacs-21.5.10/src/ExternalClient.c' Index: ./src/ExternalClient.c --- ./src/ExternalClient.c Fri Apr 13 03:23:23 2001 +++ ./src/ExternalClient.c Tue Nov 12 00:34:13 2002 @@ -266,7 +266,9 @@ static void externalClientRealize (Widget w, XtValueMask *vm, XSetWindowAttributes *attrs) { +#ifdef TOOLTALK ExternalClientWidget ecw = (ExternalClientWidget)w; +#endif #ifdef EXTW_USES_MOTIF (*xmPrimitiveWidgetClass->core_class.realize) (w, vm, attrs); @@ -275,7 +277,6 @@ #endif #ifdef TOOLTALK - /* Make sure that the server actually knows about this window id before * telling Emacs about it. */ diff --text -u 'xemacs-21.5.9/src/Makefile.in.in' 'xemacs-21.5.10/src/Makefile.in.in' Index: ./src/Makefile.in.in --- ./src/Makefile.in.in Tue May 28 17:44:44 2002 +++ ./src/Makefile.in.in Wed Sep 11 00:27:33 2002 @@ -215,8 +215,8 @@ gpm_objs=gpmevent.o #endif -#ifdef HAVE_LDAP -ldap_objs=eldap.o +#if defined(HAVE_LDAP) && !defined(HAVE_SHLIB) +ldap_objs=../modules/ldap/eldap.o #endif #ifdef MULE @@ -231,8 +231,8 @@ mule_wnn_objs=mule-wnnfns.o #endif -#ifdef HAVE_POSTGRESQL -postgresql_objs=postgresql.o +#if defined(HAVE_POSTGRESQL) && !defined(HAVE_SHLIB) +postgresql_objs=../modules/postgresql/postgresql.o #endif #ifdef HAVE_WIN32_PROCESSES diff --text -u /dev/null 'xemacs-21.5.10/src/README.kkcc' Index: ././src/README.kkcc --- ././src/README.kkcc Thu Jan 1 09:00:00 1970 +++ ././src/README.kkcc Tue Sep 3 19:51:55 2002 @@ -0,0 +1,164 @@ +2002-07-17 Marcus Crestani + Markus Kaltenbach + Mike Sperber + + New KKCC-GC mark algorithm: + configure flag : --use-kkcc + + For better understanding, first a few words about the mark algorithm + up to now: + Every Lisp_Object has its own mark method, which calls mark_object + with the stuff to be marked. + Also, many Lisp_Objects have pdump descriptions, which are used by + the portable dumper. The dumper gets all the information it needs + about the Lisp_Object from the descriptions. + + Also the garbage collector can use the information in the pdump + descriptions, so we can get rid of the mark methods. + That is what we have been doing. + + + DUMPABLE FLAG + ------------- + First we added a dumpable flag to lrecord_implementation. It shows, + if the object is dumpable and should be processed by the dumper. + The dumpable flag is the third argument of a lrecord_implementation + definition (DEFINE_LRECORD_IMPLEMENTATION). + If it is set to 1, the dumper processes the descriptions and dumps + the Object, if it is set to 0, the dumper does not care about it. + + + XD_UNION + -------- + 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. + + Here is a pattern of a XD_UNION usage: + + First, the existing variants are listed. + enum example_variant + { + first_choice, + second_choice + }; + + Then a field which holds the variant is added to the Lisp_Object. + This field determines, where pointer points to. + struct Lisp_... + { + enum example_variant which_variant; + ... + void *pointer; + } + The variant field must be initialized in the constructor(s). + + In the description, the first entry should be the which_variant field, + on which XD_UNION refers. + static const struct lrecord_description ..._description [] = { + { XD_INT, offsetof (struct Lisp_..., which_variant) }, + ... + { XD_UNION, offsetof (struct Lisp_..., which_variant), + XD_INDIRECT (0, 0), variant_description }, + ... + }; + + The variant_description looks like this: + static const struct struct_description variant_description []= { + { first_choice, first_choice_description}, + { second_choice, second_choice__description}, + { XD_END } + }; + + first- and second_choice_description are common lrecord_descriptions: + static const struct lrecord_description first_choice_description [] = { + ... + { XD_END } + } + + + + TODO + ---- + + The following objects have currently no description: + * alloc.c: lcrecord_list + mark_object is never called, marking is done per mane. + + * buffer.c: mark_buffer + mark_conses_in_list implements weakness??? + + * extents.c: extent_info + loop to mark elements in list. + + * frame.c: frame + calls mark_gutters, that calls mark_redisplay_structs + + * glyphs.c: image_instance + XD_UNION or convert the union members to Lisp_Objects (see Lisp_Event) + + * gui-x.c: popup_data + calls lw_map_widget_values + + * window.c: window + calls mark_face_cachels and mark_glyph_cachels + + window_configuration + loop to mark saved_windows + + window_mirror + calls mark_redisplay_structs + + * lstream.c: lstream + + + After all Lisp_Objects have pdump descriptions, + (mark_with_description) can get rid of the mark_object calls. + + + There are a few Lisp_Objects, where there occured differences and + inexactness between the mark-method and the pdump description. + All these Lisp_Objects get dumped, so their descriptions have been + written, before we started our work: + + * alloc.c: cons + description: car and cdr + mark: cdr is marked, only if its != Qnil + + * alloc.c: string + description: + mark: + + * elhash.c: hash_table + description: the weakness receives no consideration + mark: weakness == HASH_TABLE_NON_WEAK + + * eval.c: subr + description: XD_DOC_STRING doc + mark: empty, nothing is marked + + * file-coding.c: coding_system + description: + mark: + + * frame.c: bit_vektor + description: XD_LISP_OBJECT next + mark: empty, nothing is marked + + * marker.c: marker + description: prev & next (marker's chain) + mark: do not mark through marker's chain! + + * specifier.c: specifier + description: XD_STRUCT_PTR caching + mark: caching is not marked + + * symbols.c: symbol-value-lisp-magic + description: only handler[] is described + mark: even harg[] and shadowed are marked + + * data.c: ephemeron + description: everything is marked, there is no weakness! diff --text -u 'xemacs-21.5.9/src/alloc.c' 'xemacs-21.5.10/src/alloc.c' Index: ./src/alloc.c --- ./src/alloc.c Thu Aug 1 17:38:44 2002 +++ ./src/alloc.c Thu Dec 12 12:20:43 2002 @@ -170,6 +170,10 @@ /* Nonzero during gc */ int gc_in_progress; +/* Nonzero means display messages at beginning and end of GC. */ + +int garbage_collection_messages; + /* Number of times GC has happened at this level or below. * Level 0 is most volatile, contrary to usual convention. * (Of course, there's only one level at present) */ @@ -180,7 +184,7 @@ /* Nonzero when calling certain hooks or doing other things where a GC would be bad */ -static int gc_currently_forbidden; +int gc_currently_forbidden; /* Hooks. */ Lisp_Object Vpre_gc_hook, Qpre_gc_hook; @@ -1095,8 +1099,6 @@ /* Float allocation */ /************************************************************************/ -#ifdef LISP_FLOAT_TYPE - DECLARE_FIXED_TYPE_ALLOC (float, Lisp_Float); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_float 1000 @@ -1116,8 +1118,6 @@ return wrap_float (f); } -#endif /* LISP_FLOAT_TYPE */ - /************************************************************************/ /* Vector allocation */ @@ -2785,6 +2785,17 @@ Dynarr_add (staticpro_nodump_names, varname); } +#ifdef HAVE_SHLIB +/* Stop treating the Lisp_Object at non-heap VARADDRESS as a root object + for garbage collection, but not for dumping. */ +void +unstaticpro_nodump_1 (Lisp_Object *varaddress, char *varname) +{ + Dynarr_delete_object (staticpros, varaddress); + Dynarr_delete_object (staticpro_names, varname); +} +#endif + #else /* not DEBUG_XEMACS */ Lisp_Object_ptr_dynarr *staticpros; @@ -2824,6 +2835,16 @@ Dynarr_add (staticpros_nodump, varaddress); } +#ifdef HAVE_SHLIB +/* Unmark the Lisp_Object at non-heap VARADDRESS as a root object for + garbage collection, but not for dumping. */ +void +unstaticpro_nodump (Lisp_Object *varaddress) +{ + Dynarr_delete_object (staticpros, varaddress); +} +#endif + #endif /* not DEBUG_XEMACS */ #ifdef ERROR_CHECK_GC @@ -3628,8 +3649,6 @@ SWEEP_FIXED_TYPE_BLOCK (compiled_function, Lisp_Compiled_Function); } - -#ifdef LISP_FLOAT_TYPE static void sweep_floats (void) { @@ -3638,7 +3657,6 @@ SWEEP_FIXED_TYPE_BLOCK (float, Lisp_Float); } -#endif /* LISP_FLOAT_TYPE */ static void sweep_symbols (void) @@ -4045,10 +4063,8 @@ /* Free all unmarked compiled-function objects */ sweep_compiled_functions (); -#ifdef LISP_FLOAT_TYPE /* Put all unmarked floats on free list */ sweep_floats (); -#endif /* Put all unmarked symbols on free list */ sweep_symbols (); @@ -4227,6 +4243,8 @@ Lisp_Object pre_gc_cursor; struct gcpro gcpro1; + assert (!in_display || gc_currently_forbidden); + if (gc_in_progress || gc_currently_forbidden || in_display @@ -4288,13 +4306,16 @@ /* Don't print messages to the stream device. */ if (!cursor_changed && !FRAME_STREAM_P (f)) { - Lisp_Object args[2], whole_msg; - args[0] = (STRINGP (Vgc_message) ? Vgc_message : - build_msg_string (gc_default_message)); - args[1] = build_string ("..."); - whole_msg = Fconcat (2, args); - echo_area_message (f, (Ibyte *) 0, whole_msg, 0, -1, - Qgarbage_collecting); + if (garbage_collection_messages) + { + Lisp_Object args[2], whole_msg; + args[0] = (STRINGP (Vgc_message) ? Vgc_message : + build_msg_string (gc_default_message)); + args[1] = build_string ("..."); + whole_msg = Fconcat (2, args); + echo_area_message (f, (Ibyte *) 0, whole_msg, 0, -1, + Qgarbage_collecting); + } } } @@ -4449,14 +4470,17 @@ if (NILP (clear_echo_area (selected_frame (), Qgarbage_collecting, 0))) { - Lisp_Object args[2], whole_msg; - args[0] = (STRINGP (Vgc_message) ? Vgc_message : - build_msg_string (gc_default_message)); - args[1] = build_msg_string ("... done"); - whole_msg = Fconcat (2, args); - echo_area_message (selected_frame (), (Ibyte *) 0, - whole_msg, 0, -1, - Qgarbage_collecting); + if (garbage_collection_messages) + { + Lisp_Object args[2], whole_msg; + args[0] = (STRINGP (Vgc_message) ? Vgc_message : + build_msg_string (gc_default_message)); + args[1] = build_msg_string ("... done"); + whole_msg = Fconcat (2, args); + echo_area_message (selected_frame (), (Ibyte *) 0, + whole_msg, 0, -1, + Qgarbage_collecting); + } } } } @@ -4560,11 +4584,9 @@ HACK_O_MATIC (marker, "marker-storage", pl); pl = gc_plist_hack ("markers-free", gc_count_num_marker_freelist, pl); pl = gc_plist_hack ("markers-used", gc_count_num_marker_in_use, pl); -#ifdef LISP_FLOAT_TYPE HACK_O_MATIC (float, "float-storage", pl); pl = gc_plist_hack ("floats-free", gc_count_num_float_freelist, pl); pl = gc_plist_hack ("floats-used", gc_count_num_float_in_use, pl); -#endif /* LISP_FLOAT_TYPE */ HACK_O_MATIC (string, "string-header-storage", pl); pl = gc_plist_hack ("long-strings-total-length", gc_count_string_total_size @@ -4853,9 +4875,7 @@ init_cons_alloc (); init_symbol_alloc (); init_compiled_function_alloc (); -#ifdef LISP_FLOAT_TYPE init_float_alloc (); -#endif /* LISP_FLOAT_TYPE */ init_marker_alloc (); init_extent_alloc (); init_event_alloc (); @@ -5066,6 +5086,11 @@ This means that certain objects should be allocated in readonly space. */ ); + DEFVAR_BOOL ("garbage-collection-messages", &garbage_collection_messages /* + Non-nil means display messages at start and end of garbage collection. +*/ ); + garbage_collection_messages = 0; + DEFVAR_LISP ("pre-gc-hook", &Vpre_gc_hook /* Function or functions to be run just before each garbage collection. Interrupts, garbage collection, and errors are inhibited while this hook diff --text -u 'xemacs-21.5.9/src/alloca.c' 'xemacs-21.5.10/src/alloca.c' Index: ./src/alloca.c --- ./src/alloca.c Thu May 23 20:46:19 2002 +++ ./src/alloca.c Mon Nov 18 15:52:37 2002 @@ -75,7 +75,7 @@ #define STACK_DIR stack_dir static void -find_stack_direction () +find_stack_direction (void) { static char *addr = NULL; /* Address of first `dummy', once known. */ auto char dummy; /* To get stack address. */ diff --text -u 'xemacs-21.5.9/src/bytecode.c' 'xemacs-21.5.10/src/bytecode.c' Index: ./src/bytecode.c --- ./src/bytecode.c Mon Jul 29 18:21:15 2002 +++ ./src/bytecode.c Sun Dec 8 19:25:06 2002 @@ -247,9 +247,7 @@ retry: if (INTP (obj)) return make_int (- XINT (obj)); -#ifdef LISP_FLOAT_TYPE if (FLOATP (obj)) return make_float (- XFLOAT_DATA (obj)); -#endif if (CHARP (obj)) return make_int (- ((int) XCHAR (obj))); if (MARKERP (obj)) return make_int (- ((int) marker_position (obj))); @@ -283,7 +281,6 @@ { retry: -#ifdef LISP_FLOAT_TYPE { EMACS_INT ival1, ival2; @@ -327,37 +324,11 @@ return dval1 < dval2 ? -1 : dval1 > dval2 ? 1 : 0; } -#else /* !LISP_FLOAT_TYPE */ - { - EMACS_INT ival1, ival2; - - if (INTP (obj1)) ival1 = XINT (obj1); - else if (CHARP (obj1)) ival1 = XCHAR (obj1); - else if (MARKERP (obj1)) ival1 = marker_position (obj1); - else - { - obj1 = wrong_type_argument (Qnumber_char_or_marker_p, obj1); - goto retry; - } - - if (INTP (obj2)) ival2 = XINT (obj2); - else if (CHARP (obj2)) ival2 = XCHAR (obj2); - else if (MARKERP (obj2)) ival2 = marker_position (obj2); - else - { - obj2 = wrong_type_argument (Qnumber_char_or_marker_p, obj2); - goto retry; - } - - return ival1 < ival2 ? -1 : ival1 > ival2 ? 1 : 0; - } -#endif /* !LISP_FLOAT_TYPE */ } static Lisp_Object bytecode_arithop (Lisp_Object obj1, Lisp_Object obj2, Opcode opcode) { -#ifdef LISP_FLOAT_TYPE EMACS_INT ival1, ival2; int float_p; @@ -419,43 +390,6 @@ } return make_float (dval1); } -#else /* !LISP_FLOAT_TYPE */ - EMACS_INT ival1, ival2; - - retry: - - if (INTP (obj1)) ival1 = XINT (obj1); - else if (CHARP (obj1)) ival1 = XCHAR (obj1); - else if (MARKERP (obj1)) ival1 = marker_position (obj1); - else - { - obj1 = wrong_type_argument (Qnumber_char_or_marker_p, obj1); - goto retry; - } - - if (INTP (obj2)) ival2 = XINT (obj2); - else if (CHARP (obj2)) ival2 = XCHAR (obj2); - else if (MARKERP (obj2)) ival2 = marker_position (obj2); - else - { - obj2 = wrong_type_argument (Qnumber_char_or_marker_p, obj2); - goto retry; - } - - switch (opcode) - { - case Bplus: ival1 += ival2; break; - case Bdiff: ival1 -= ival2; break; - case Bmult: ival1 *= ival2; break; - case Bquo: - if (ival2 == 0) Fsignal (Qarith_error, Qnil); - ival1 /= ival2; - break; - case Bmax: if (ival1 < ival2) ival1 = ival2; break; - case Bmin: if (ival1 > ival2) ival1 = ival2; break; - } - return make_int (ival1); -#endif /* !LISP_FLOAT_TYPE */ } @@ -1164,7 +1098,7 @@ { int count = specpdl_depth (); record_unwind_protect (save_window_excursion_unwind, - Fcurrent_window_configuration (Qnil)); + call1 (Qcurrent_window_configuration, Qnil)); TOP = Fprogn (TOP); unbind_to (count); break; diff --text -u 'xemacs-21.5.9/src/charset.h' 'xemacs-21.5.10/src/charset.h' Index: ./src/charset.h --- ./src/charset.h Wed Jun 5 18:55:01 2002 +++ ./src/charset.h Mon Nov 18 15:52:37 2002 @@ -339,13 +339,13 @@ Ibyte next_allocated_2_byte_leading_byte; }; +extern struct charset_lookup *chlook; + DECLARE_INLINE_HEADER ( Lisp_Object charset_by_leading_byte (int lb) ) { - extern struct charset_lookup *chlook; - #ifdef ERROR_CHECK_TEXT /* When error-checking is on, x86 GCC 2.95.2 -O3 miscompiles the following unless we introduce `tem'. */ @@ -360,8 +360,6 @@ charset_by_attributes (int type, int final, int dir) ) { - extern struct charset_lookup *chlook; - type_checking_assert (type < countof (chlook->charset_by_attributes) && final < countof (chlook->charset_by_attributes[0]) && dir < countof (chlook->charset_by_attributes[0][0])); diff --text -u 'xemacs-21.5.9/src/config.h.in' 'xemacs-21.5.10/src/config.h.in' Index: ./src/config.h.in --- ./src/config.h.in Wed Aug 28 14:36:34 2002 +++ ./src/config.h.in Wed Nov 13 03:58:27 2002 @@ -136,9 +136,6 @@ /* Undefine on systems which don't have processes */ #undef HAVE_UNIX_PROCESSES -/* Does XEmacs support floating-point numbers? */ -#undef LISP_FLOAT_TYPE - /* Define GNU_MALLOC if you want to use the GNU memory allocator. */ #undef GNU_MALLOC diff --text -u 'xemacs-21.5.9/src/data.c' 'xemacs-21.5.10/src/data.c' Index: ./src/data.c --- ./src/data.c Mon Jul 29 18:21:15 2002 +++ ./src/data.c Wed Nov 13 03:58:27 2002 @@ -535,7 +535,6 @@ ? Qt : Qnil; } -#ifdef LISP_FLOAT_TYPE DEFUN ("floatp", Ffloatp, 1, 1, 0, /* Return t if OBJECT is a floating point number. */ @@ -543,7 +542,6 @@ { return FLOATP (object) ? Qt : Qnil; } -#endif /* LISP_FLOAT_TYPE */ DEFUN ("type-of", Ftype_of, 1, 1, 0, /* Return a symbol representing the type of OBJECT. @@ -819,9 +817,7 @@ if (INTP (obj)) p->c.ival = XINT (obj); else if (CHARP (obj)) p->c.ival = XCHAR (obj); else if (MARKERP (obj)) p->c.ival = marker_position (obj); -#ifdef LISP_FLOAT_TYPE else if (FLOATP (obj)) p->c.dval = XFLOAT_DATA (obj), p->int_p = 0; -#endif else { obj = wrong_type_argument (Qnumber_char_or_marker_p, obj); @@ -836,9 +832,7 @@ if (INTP (obj)) return (double) XINT (obj); else if (CHARP (obj)) return (double) XCHAR (obj); else if (MARKERP (obj)) return (double) marker_position (obj); -#ifdef LISP_FLOAT_TYPE else if (FLOATP (obj)) return XFLOAT_DATA (obj); -#endif else { obj = wrong_type_argument (Qnumber_char_or_marker_p, obj); @@ -965,10 +959,8 @@ retry: if (INTP (number)) return EQ (number, Qzero) ? Qt : Qnil; -#ifdef LISP_FLOAT_TYPE else if (FLOATP (number)) return XFLOAT_DATA (number) == 0.0 ? Qt : Qnil; -#endif /* LISP_FLOAT_TYPE */ else { number = wrong_type_argument (Qnumberp, number); @@ -1014,7 +1006,6 @@ { CHECK_INT_OR_FLOAT (number); -#ifdef LISP_FLOAT_TYPE if (FLOATP (number)) { char pigbuf[350]; /* see comments in float_to_string */ @@ -1022,7 +1013,6 @@ float_to_string (pigbuf, XFLOAT_DATA (number)); return build_string (pigbuf); } -#endif /* LISP_FLOAT_TYPE */ { char buffer[DECIMAL_PRINT_SIZE (long)]; @@ -1076,10 +1066,8 @@ while (*p == ' ' || *p == '\t') p++; -#ifdef LISP_FLOAT_TYPE if (isfloat_string (p) && b == 10) return make_float (atof (p)); -#endif /* LISP_FLOAT_TYPE */ if (b == 10) { @@ -1461,7 +1449,6 @@ number_char_or_marker_to_int_or_double (x, &iod1); number_char_or_marker_to_int_or_double (y, &iod2); -#ifdef LISP_FLOAT_TYPE if (!iod1.int_p || !iod2.int_p) { double dval1 = iod1.int_p ? (double) iod1.c.ival : iod1.c.dval; @@ -1475,7 +1462,7 @@ return make_float (dval1); } -#endif /* LISP_FLOAT_TYPE */ + { EMACS_INT ival; if (iod2.c.ival == 0) goto divide_by_zero; @@ -1535,9 +1522,7 @@ if (INTP (number)) return make_int (XINT (number) + 1); if (CHARP (number)) return make_int (XCHAR (number) + 1); if (MARKERP (number)) return make_int (marker_position (number) + 1); -#ifdef LISP_FLOAT_TYPE if (FLOATP (number)) return make_float (XFLOAT_DATA (number) + 1.0); -#endif /* LISP_FLOAT_TYPE */ number = wrong_type_argument (Qnumber_char_or_marker_p, number); goto retry; @@ -1554,9 +1539,7 @@ if (INTP (number)) return make_int (XINT (number) - 1); if (CHARP (number)) return make_int (XCHAR (number) - 1); if (MARKERP (number)) return make_int (marker_position (number) - 1); -#ifdef LISP_FLOAT_TYPE if (FLOATP (number)) return make_float (XFLOAT_DATA (number) - 1.0); -#endif /* LISP_FLOAT_TYPE */ number = wrong_type_argument (Qnumber_char_or_marker_p, number); goto retry; @@ -2153,6 +2136,17 @@ /* ephemerons */ /************************************************************************/ +/* The concept of ephemerons is due to: + * Barry Hayes: Ephemerons: A New Finalization Mechanism. OOPSLA 1997: 176-183 + * The original idea is due to George Bosworth of Digitalk, Inc. + * + * For a discussion of finalization and weakness that also reviews + * ephemerons, refer to: + * Simon Peyton Jones, Simon Marlow, Conal Elliot: + * Stretching the storage manager + * Implementation of Functional Languages, 1999 + */ + static Lisp_Object Vall_ephemerons; /* Gemarke es niemals ever!!! */ static Lisp_Object Vfinalize_list; @@ -2477,10 +2471,7 @@ DEFSYMBOL (Qcdr); DEFSYMBOL (Qerror_lacks_explanatory_string); DEFSYMBOL_MULTIWORD_PREDICATE (Qweak_listp); - -#ifdef LISP_FLOAT_TYPE DEFSYMBOL (Qfloatp); -#endif /* LISP_FLOAT_TYPE */ DEFSUBR (Fwrong_type_argument); @@ -2506,9 +2497,7 @@ DEFSUBR (Fnumberp); DEFSUBR (Fnumber_or_marker_p); DEFSUBR (Fnumber_char_or_marker_p); -#ifdef LISP_FLOAT_TYPE DEFSUBR (Ffloatp); -#endif /* LISP_FLOAT_TYPE */ DEFSUBR (Fnatnump); DEFSUBR (Fsymbolp); DEFSUBR (Fkeywordp); diff --text -u 'xemacs-21.5.9/src/database.c' 'xemacs-21.5.10/src/database.c' Index: ./src/database.c --- ./src/database.c Mon Jul 29 18:21:16 2002 +++ ./src/database.c Wed Dec 4 22:54:45 2002 @@ -59,6 +59,9 @@ #ifndef DB_VERSION_MAJOR # define DB_VERSION_MAJOR 1 #endif /* DB_VERSION_MAJOR */ +#ifndef DB_VERSION_MINOR +# define DB_VERSION_MINOR 0 +#endif /* DB_VERSION_MINOR */ Lisp_Object Qberkeley_db; Lisp_Object Qhash, Qbtree, Qrecno, Qunknown; #if DB_VERSION_MAJOR > 2 @@ -715,8 +718,13 @@ status = db_create (&dbase, NULL, 0); if (status) return Qnil; +#if DB_VERSION_MAJOR < 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 1) status = dbase->open (dbase, filename, NULL, real_subtype, accessmask, modemask); +#else /* DB_VERSION >= 4.1 */ + status = dbase->open (dbase, NULL, filename, NULL, real_subtype, + accessmask | DB_AUTO_COMMIT, modemask); +#endif /* DB_VERSION < 4.1 */ if (status) { dbase->close (dbase, 0); diff --text -u 'xemacs-21.5.9/src/depend' 'xemacs-21.5.10/src/depend' Index: ./src/depend --- ./src/depend Fri Jun 21 06:18:25 2002 +++ ./src/depend Mon Nov 18 15:52:37 2002 @@ -1,5 +1,3 @@ -## This file is automatically generated by `make-src-depend'. Do not modify. - #if defined(USE_UNION_TYPE) LISP_UNION_H=lisp-union.h #else @@ -8,16 +6,16 @@ LISP_H=lisp.h config.h general-slots.h lrecord.h symeval.h symsinit.h text.h $(LISP_UNION_H) #if defined(HAVE_MS_WINDOWS) console-msw.o: $(LISP_H) conslots.h console-impl.h console-msw-impl.h console-msw.h console.h events.h intl-auto-encap-win32.h opaque.h systime.h syswindows.h -device-msw.o: $(LISP_H) charset.h conslots.h console-impl.h console-msw-impl.h console-msw.h console-stream.h console.h device-impl.h device.h devslots.h events.h faces.h frame.h intl-auto-encap-win32.h objects-msw.h objects.h redisplay.h sysdep.h systime.h syswindows.h +device-msw.o: $(LISP_H) charset.h conslots.h console-impl.h console-msw-impl.h console-msw.h console-stream.h console.h device-impl.h device.h devslots.h events.h faces.h frame.h intl-auto-encap-win32.h objects-msw.h objects.h opaque.h redisplay.h sysdep.h systime.h syswindows.h dialog-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h frame-impl.h frame.h frameslots.h gui.h intl-auto-encap-win32.h opaque.h redisplay.h sysfile.h syswindows.h dired-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console-msw.h console.h intl-auto-encap-win32.h ndir.h regex.h syntax.h sysdir.h sysfile.h sysfloat.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h -event-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console-tty.h console.h device-impl.h device.h devslots.h dragdrop.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gui.h intl-auto-encap-win32.h lstream.h menubar-msw.h menubar.h objects-impl.h objects-msw-impl.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h window-impl.h window.h winslots.h -frame-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h device-impl.h device.h devslots.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs-msw.h glyphs.h intl-auto-encap-win32.h redisplay.h scrollbar.h specifier.h systime.h syswindows.h window-impl.h window.h winslots.h +event-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console-tty.h console.h device-impl.h device.h devslots.h dragdrop.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gui.h intl-auto-encap-win32.h lstream.h menubar-msw.h menubar.h objects-impl.h objects-msw-impl.h objects-msw.h objects.h opaque.h process.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h window-impl.h window.h winslots.h +frame-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h device-impl.h device.h devslots.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs-msw.h glyphs.h intl-auto-encap-win32.h opaque.h redisplay.h scrollbar.h specifier.h systime.h syswindows.h window-impl.h window.h winslots.h glyphs-msw.o: $(LISP_H) charset.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h device-impl.h device.h devslots.h elhash.h faces.h file-coding.h frame-impl.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h intl-auto-encap-win32.h lstream.h objects-impl.h objects-msw-impl.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syswindows.h window-impl.h window.h winslots.h -gui-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h elhash.h events.h frame-impl.h frame.h frameslots.h glyphs.h gui.h intl-auto-encap-win32.h redisplay.h scrollbar.h specifier.h systime.h syswindows.h window-impl.h window.h winslots.h +gui-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h elhash.h events.h frame-impl.h frame.h frameslots.h glyphs.h gui.h intl-auto-encap-win32.h opaque.h redisplay.h scrollbar.h specifier.h systime.h syswindows.h window-impl.h window.h winslots.h menubar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h elhash.h events.h frame-impl.h frame.h frameslots.h gui.h intl-auto-encap-win32.h menubar-msw.h menubar.h opaque.h redisplay.h scrollbar.h systime.h syswindows.h window-impl.h window.h winslots.h objects-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h device-impl.h device.h devslots.h elhash.h insdel.h intl-auto-encap-win32.h objects-impl.h objects-msw-impl.h objects-msw.h objects.h opaque.h specifier.h syswindows.h -redisplay-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h debug.h device-impl.h device.h devslots.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs-msw.h glyphs.h gutter.h intl-auto-encap-win32.h objects-impl.h objects-msw-impl.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h systime.h syswindows.h window-impl.h window.h winslots.h +redisplay-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h debug.h device-impl.h device.h devslots.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs-msw.h glyphs.h gutter.h intl-auto-encap-win32.h objects-impl.h objects-msw-impl.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h systime.h syswindows.h window-impl.h window.h winslots.h scrollbar-msw.o: $(LISP_H) conslots.h console-impl.h console-msw-impl.h console-msw.h console.h device.h elhash.h events.h frame-impl.h frame.h frameslots.h intl-auto-encap-win32.h opaque.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h systime.h syswindows.h window-impl.h window.h winslots.h select-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h file-coding.h frame-impl.h frame.h frameslots.h intl-auto-encap-win32.h opaque.h redisplay.h select.h syswindows.h toolbar-msw.o: $(LISP_H) charset.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h device.h elhash.h faces.h frame-impl.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h intl-auto-encap-win32.h redisplay.h scrollbar.h specifier.h syswindows.h toolbar.h window-impl.h window.h winslots.h @@ -25,9 +23,9 @@ #if defined(HAVE_X_WINDOWS) balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h xintrinsic.h console-x.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h process.h redisplay.h xintrinsic.h -device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h +device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h objects-x.h objects.h offix-types.h offix.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-x-impl.h console-x.h console.h events.h frame-impl.h frame.h frameslots.h gui-x.h gui.h opaque.h redisplay.h scrollbar.h systime.h window.h xintrinsic.h -frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gutter.h objects-impl.h objects-x-impl.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h systime.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h +frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gutter.h objects-impl.h objects-x-impl.h objects-x.h objects.h offix-types.h offix.h opaque.h redisplay.h scrollbar-x.h scrollbar.h specifier.h systime.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h faces.h file-coding.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lstream.h objects-impl.h objects-x-impl.h objects-x.h objects.h opaque.h process.h redisplay.h scrollbar.h specifier.h sysfile.h sysproc.h syssignal.h systime.h window-impl.h window.h winslots.h xintrinsic.h xmu.h gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h events.h frame.h glyphs.h gui-x.h gui.h menubar.h opaque.h redisplay.h scrollbar.h specifier.h systime.h window-impl.h window.h winslots.h xintrinsic.h intl-x.o: $(LISP_H) console-x.h console.h xintrinsic.h @@ -40,28 +38,28 @@ #endif #if defined(HAVE_TTY) console-tty.o: $(LISP_H) charset.h conslots.h console-impl.h console-stream.h console-tty-impl.h console-tty.h console.h faces.h file-coding.h frame.h glyphs.h lstream.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systty.h window-impl.h window.h winslots.h -device-tty.o: $(LISP_H) charset.h conslots.h console-impl.h console-stream.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h faces.h frame.h lstream.h redisplay.h sysdep.h sysfile.h syssignal.h systime.h systty.h -event-tty.o: $(LISP_H) conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device.h events.h frame.h process.h redisplay.h sysproc.h syssignal.h systime.h systty.h syswait.h -frame-tty.o: $(LISP_H) conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h redisplay.h systime.h systty.h +device-tty.o: $(LISP_H) charset.h conslots.h console-impl.h console-stream.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h faces.h frame.h lstream.h opaque.h redisplay.h sysdep.h sysfile.h syssignal.h systime.h systty.h +event-tty.o: $(LISP_H) conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device.h events.h frame.h opaque.h process.h redisplay.h sysproc.h syssignal.h systime.h systty.h syswait.h +frame-tty.o: $(LISP_H) conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h opaque.h redisplay.h systime.h systty.h objects-tty.o: $(LISP_H) charset.h conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device.h insdel.h objects-impl.h objects-tty-impl.h objects-tty.h objects.h specifier.h systty.h -redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs.h lstream.h objects-impl.h objects-tty-impl.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h window-impl.h window.h winslots.h +redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs.h lstream.h objects-impl.h objects-tty-impl.h objects-tty.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h window-impl.h window.h winslots.h #endif #if defined(HAVE_GTK) console-gtk.o: $(LISP_H) conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h process.h redisplay.h -device-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h window-impl.h window.h winslots.h -dialog-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h console-gtk.h console.h events.h frame.h gui-gtk.h gui.h opaque.h redisplay.h scrollbar.h systime.h window.h -event-gtk.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-tty.h console.h device-impl.h device.h devslots.h dragdrop.h elhash.h event-gtk.h events.h file-coding.h frame-impl.h frame.h frameslots.h gtk-xemacs.h lstream.h objects-gtk.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h sysproc.h syssignal.h systime.h systty.h window.h xintrinsic.h -frame-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs-gtk.h glyphs.h gtk-xemacs.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h sysdll.h systime.h ui-gtk.h window-impl.h window.h winslots.h +device-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h objects-gtk.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h window-impl.h window.h winslots.h +dialog-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h events.h frame.h gui-gtk.h gui.h opaque.h redisplay.h scrollbar.h systime.h window.h +event-gtk.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-tty.h console.h device-impl.h device.h devslots.h dragdrop.h elhash.h event-gtk.h events.h file-coding.h frame-impl.h frame.h frameslots.h gtk-xemacs.h lstream.h objects-gtk.h objects.h offix-types.h offix.h opaque.h process.h redisplay.h scrollbar.h sysproc.h syssignal.h systime.h systty.h window.h xintrinsic.h +frame-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs-gtk.h glyphs.h gtk-xemacs.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h opaque.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h sysdll.h systime.h ui-gtk.h window-impl.h window.h winslots.h gccache-gtk.o: $(LISP_H) gccache-gtk.h hash.h glyphs-gtk.o: $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h faces.h file-coding.h frame-impl.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h imgproc.h insdel.h lstream.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h sysfile.h ui-gtk.h window-impl.h window.h winslots.h gui-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h frame.h gui-gtk.h gui.h opaque.h redisplay.h -menubar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device.h events.h frame-impl.h frame.h frameslots.h gui-gtk.h gui.h opaque.h redisplay.h scrollbar.h sysdll.h systime.h ui-gtk.h window.h +menubar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h gui-gtk.h gui.h menubar.h opaque.h redisplay.h scrollbar.h sysdll.h systime.h ui-gtk.h window-impl.h window.h winslots.h objects-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h insdel.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h specifier.h redisplay-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h debug.h device-impl.h device.h devslots.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gutter.h mule-ccl.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h syssignal.h systime.h window-impl.h window.h winslots.h scrollbar-gtk.o: $(LISP_H) conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h frame-impl.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h window-impl.h window.h winslots.h select-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h events.h frame.h opaque.h redisplay.h select-common.h select.h systime.h toolbar-gtk.o: $(LISP_H) conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h frame.h redisplay.h toolbar-common.h -ui-gtk.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h console-gtk.h console.h device.h elhash.h emacs-marshals.c emacs-widget-accessors.c event-gtk.h events.h faces.h glade.c glyphs-gtk.h glyphs.h gtk-glue.c gui-gtk.h gui.h hash.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h ui-byhand.c ui-gtk.h window-impl.h window.h winslots.h +ui-gtk.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h console-gtk.h console.h device.h elhash.h emacs-marshals.c emacs-widget-accessors.c event-gtk.h events.h faces.h glade.c glyphs-gtk.h glyphs.h gtk-glue.c gui-gtk.h gui.h hash.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h ui-byhand.c ui-gtk.h window-impl.h window.h winslots.h #endif #if defined(HAVE_DATABASE) database.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h database.h sysfile.h @@ -72,7 +70,6 @@ mule-charset.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h device.h elhash.h faces.h lstream.h mule-ccl.h objects.h mule-coding.o: $(LISP_H) charset.h file-coding.h mule-ccl.h mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h redisplay.h scrollbar.h sysdep.h window.h -mule.o: $(LISP_H) regex.h #endif #if defined(EXTERNAL_WIDGET) ExternalClient-Xlib.o: extw-Xlib.h @@ -86,24 +83,24 @@ EmacsShell-sub.o: EmacsShell.h EmacsShellP.h config.h xintrinsic.h xintrinsicp.h EmacsShell.o: EmacsShell.h ExternalShell.h config.h xintrinsicp.h abbrev.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h insdel.h redisplay.h scrollbar.h syntax.h window.h -alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h conslots.h console-impl.h console-stream.h console.h device.h dumper.h elhash.h events.h extents-impl.h extents.h frame-impl.h frame.h frameslots.h glyphs.h opaque.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h window-impl.h window.h winslots.h +alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h conslots.h console-impl.h console-stream.h console.h device.h dumper.h elhash.h events.h extents-impl.h extents.h file-coding.h frame-impl.h frame.h frameslots.h glyphs.h opaque.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h window-impl.h window.h winslots.h alloca.o: $(LISP_H) balloon_help.o: balloon_help.h config.h xintrinsic.h blocktype.o: $(LISP_H) blocktype.h buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h extents.h faces.h file-coding.h frame-impl.h frame.h frameslots.h insdel.h intl-auto-encap-win32.h lstream.h ndir.h process.h redisplay.h scrollbar.h select.h specifier.h syntax.h sysdir.h sysfile.h syswindows.h window.h bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h opaque.h redisplay.h scrollbar.h syntax.h window.h -callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h commands.h events.h insdel.h redisplay.h scrollbar.h systime.h window-impl.h window.h winslots.h +callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h commands.h events.h insdel.h opaque.h redisplay.h scrollbar.h systime.h window-impl.h window.h winslots.h casefiddle.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h insdel.h syntax.h casetab.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h opaque.h chartab.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h syntax.h cm.o: $(LISP_H) conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device.h frame.h lstream.h redisplay.h systty.h -cmdloop.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-msw.h console.h device.h events.h frame.h intl-auto-encap-win32.h redisplay.h scrollbar.h systime.h syswindows.h window.h +cmdloop.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-msw.h console.h device.h events.h frame.h intl-auto-encap-win32.h opaque.h redisplay.h scrollbar.h systime.h syswindows.h window.h cmds.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h extents.h insdel.h syntax.h -console-stream.o: $(LISP_H) conslots.h console-impl.h console-stream-impl.h console-stream.h console-tty.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h redisplay.h scrollbar.h sysdep.h sysfile.h systime.h systty.h window.h -console.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h redisplay.h scrollbar.h sysdep.h systime.h systty.h window.h +console-stream.o: $(LISP_H) conslots.h console-impl.h console-stream-impl.h console-stream.h console-tty.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h opaque.h redisplay.h scrollbar.h sysdep.h sysfile.h systime.h systty.h window.h +console.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h opaque.h redisplay.h scrollbar.h sysdep.h systime.h systty.h window.h data.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h sysfloat.h syssignal.h debug.o: $(LISP_H) bytecode.h debug.h -device.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h keymap.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h toolbar.h window.h +device.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-msw-impl.h console-msw.h console-tty-impl.h console-tty.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h intl-auto-encap-win32.h keymap.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h syswindows.h toolbar.h window.h xintrinsic.h dgif_lib.o: $(LISP_H) gifrlib.h sysfile.h dialog.o: $(LISP_H) conslots.h console-impl.h console.h frame-impl.h frame.h frameslots.h redisplay.h dired.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h elhash.h intl-auto-encap-win32.h ndir.h opaque.h regex.h syntax.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h syswindows.h @@ -113,8 +110,7 @@ dumper.o: $(LISP_H) console-stream.h console.h dumper.h elhash.h file-coding.h intl-auto-encap-win32.h specifier.h sysfile.h syswindows.h dynarr.o: $(LISP_H) ecrt0.o: config.h -editfns.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h device.h events.h frame.h insdel.h line-number.h ndir.h process.h redisplay.h scrollbar.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h window.h -eldap.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h eldap.h opaque.h sysdep.h +editfns.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h console.h device.h events.h frame.h insdel.h line-number.h ndir.h opaque.h process.h redisplay.h scrollbar.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h window.h elhash.o: $(LISP_H) bytecode.h elhash.h opaque.h emacs-marshals.o: hash.h emacs-widget-accessors.o: @@ -122,23 +118,23 @@ emodules.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h emodules.h file-coding.h frame.h insdel.h lstream.h redisplay.h scrollbar.h sysdep.h sysdll.h window.h esd.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h miscplay.h sound.h sysfile.h eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console.h device.h frame.h lstream.h opaque.h redisplay.h scrollbar.h window.h -event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h charset.h conslots.h console-impl.h console-tty.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dragdrop.h elhash.h events.h file-coding.h frame-impl.h frame.h frameslots.h glyphs.h lstream.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h -event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h events.h file-coding.h frame-impl.h frame.h frameslots.h gui.h insdel.h keymap.h lstream.h macros.h menubar.h process.h redisplay.h scrollbar.h sysdep.h sysfile.h syssignal.h systime.h window-impl.h window.h winslots.h -event-unixoid.o: $(LISP_H) conslots.h console-impl.h console-stream-impl.h console-stream.h console-tty-impl.h console-tty.h console.h device.h events.h lstream.h process.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h -events.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device.h events.h extents.h frame-impl.h frame.h frameslots.h glyphs.h keymap.h lstream.h redisplay.h scrollbar.h specifier.h systime.h systty.h toolbar.h window-impl.h window.h winslots.h +event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h charset.h conslots.h console-impl.h console-tty.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dragdrop.h elhash.h events.h file-coding.h frame-impl.h frame.h frameslots.h glyphs.h lstream.h objects-x.h objects.h offix-types.h offix.h opaque.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h +event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h events.h file-coding.h frame-impl.h frame.h frameslots.h gui.h insdel.h keymap.h lstream.h macros.h menubar.h opaque.h process.h redisplay.h scrollbar.h sysdep.h sysfile.h syssignal.h systime.h window-impl.h window.h winslots.h +event-unixoid.o: $(LISP_H) conslots.h console-impl.h console-stream-impl.h console-stream.h console-tty-impl.h console-tty.h console.h device.h events.h lstream.h opaque.h process.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h +events.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-tty-impl.h console-tty.h console-x.h console.h device.h events.h extents.h frame-impl.h frame.h frameslots.h glyphs.h keymap.h lstream.h opaque.h redisplay.h scrollbar.h specifier.h systime.h systty.h toolbar.h window-impl.h window.h winslots.h xintrinsic.h extents.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h debug.h device.h elhash.h extents-impl.h extents.h faces.h frame.h glyphs.h gutter.h insdel.h keymap.h opaque.h process.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h faces.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h extents-impl.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs.h objects-impl.h objects.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h file-coding.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h elhash.h file-coding.h insdel.h lstream.h opaque.h -fileio.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h device.h events.h file-coding.h frame.h insdel.h intl-auto-encap-win32.h lstream.h ndir.h process.h redisplay.h scrollbar.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h window-impl.h window.h winslots.h +fileio.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h device.h events.h file-coding.h frame.h insdel.h intl-auto-encap-win32.h lstream.h ndir.h opaque.h process.h redisplay.h scrollbar.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h window-impl.h window.h winslots.h filelock.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h ndir.h paths.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h filemode.o: $(LISP_H) sysfile.h floatfns.o: $(LISP_H) sysfloat.h syssignal.h fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h console.h device.h events.h extents.h frame.h insdel.h lstream.h opaque.h process.h redisplay.h sysfile.h sysproc.h syssignal.h systime.h font-lock.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h insdel.h syntax.h -frame.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window-impl.h window.h winslots.h +frame.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window-impl.h window.h winslots.h free-hook.o: $(LISP_H) hash.h general.o: $(LISP_H) -getloadavg.o: $(LISP_H) sysfile.h +getloadavg.o: $(LISP_H) sysfile.h syssignal.h gif_io.o: $(LISP_H) gifrlib.h sysfile.h glade.o: bytecode.h glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h faces.h file-coding.h frame.h gifrlib.h glyphs.h lstream.h objects-impl.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h window-impl.h window.h winslots.h @@ -146,9 +142,9 @@ glyphs-widget.o: $(LISP_H) bytecode.h charset.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h faces.h frame.h glyphs.h gui.h insdel.h lstream.h objects.h opaque.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gui.h insdel.h objects-impl.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h sysfile.h window-impl.h window.h winslots.h gmalloc.o: $(LISP_H) getpagesize.h sysdep.h -gpmevent.o: $(LISP_H) commands.h console-tty.h console.h device.h events.h gpmevent.h lstream.h process.h sysdep.h sysproc.h syssignal.h systime.h systty.h -gtk-glue.o: -gtk-xemacs.o: $(LISP_H) charset.h console-gtk.h console.h device.h event-gtk.h faces.h frame.h glyphs.h gtk-xemacs.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h +gpmevent.o: $(LISP_H) commands.h conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h frame.h gpmevent.h lstream.h opaque.h process.h redisplay.h sysdep.h sysproc.h syssignal.h systime.h systty.h +gtk-glue.o: objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h specifier.h +gtk-xemacs.o: $(LISP_H) charset.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h event-gtk.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gtk-xemacs.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h elhash.h gui.h menubar.h gutter.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gutter.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h hash.o: $(LISP_H) hash.h @@ -156,15 +152,15 @@ hpplay.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h sound.h imgproc.o: $(LISP_H) imgproc.h indent.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h device.h extents.h faces.h frame.h glyphs.h insdel.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h -inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h console-gtk.h console-msw.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h glyphs-x.h glyphs.h gui-x.h gui.h intl-auto-encap-win32.h keymap.h lstream.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h sysdll.h sysfile.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window-impl.h window.h winslots.h xintrinsic.h -input-method-motif.o: $(LISP_H) EmacsFrame.h console-x.h console.h device.h frame.h redisplay.h xintrinsic.h -input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h redisplay.h scrollbar.h systime.h window-impl.h window.h winslots.h xintrinsic.h +inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h conslots.h console-gtk.h console-impl.h console-msw.h console.h database.h device-impl.h device.h devslots.h elhash.h events.h extents-impl.h extents.h faces.h file-coding.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h intl-auto-encap-win32.h keymap.h lstream.h objects-impl.h objects.h opaque.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h sysdll.h sysfile.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window-impl.h window.h winslots.h xintrinsic.h +input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device.h frame-impl.h frame.h frameslots.h redisplay.h xintrinsic.h +input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h opaque.h redisplay.h scrollbar.h systime.h window-impl.h window.h winslots.h xintrinsic.h insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h device.h extents.h frame.h insdel.h line-number.h lstream.h redisplay.h intl-auto-encap-win32.o: $(LISP_H) intl-auto-encap-win32.h syswindows.h intl-encap-win32.o: $(LISP_H) console-msw.h console.h intl-auto-encap-win32.h syswindows.h intl-win32.o: $(LISP_H) charset.h conslots.h console-impl.h console-msw-impl.h console-msw.h console.h elhash.h faces.h file-coding.h frame-impl.h frame.h frameslots.h intl-auto-encap-win32.h objects-impl.h objects-msw-impl.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syswindows.h window-impl.h window.h winslots.h intl.o: $(LISP_H) -keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h elhash.h events.h extents.h frame.h insdel.h keymap.h redisplay.h scrollbar.h systime.h window.h +keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h elhash.h events.h extents.h frame.h insdel.h keymap.h opaque.h redisplay.h scrollbar.h systime.h window.h lastfile.o: config.h libinterface.o: $(LISP_H) gifrlib.h libinterface.h libsst.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h libsst.h sound.h sysfile.h @@ -172,22 +168,21 @@ linuxplay.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h miscplay.h sound.h sysfile.h syssignal.h systty.h lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h elhash.h file-coding.h intl-auto-encap-win32.h lstream.h opaque.h sysfile.h sysfloat.h syswindows.h lstream.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h insdel.h lstream.h sysfile.h -macros.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console.h device.h events.h frame.h keymap.h macros.h redisplay.h scrollbar.h systime.h window.h -malloc.o: config.h getpagesize.h +macros.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console.h device.h events.h frame.h keymap.h macros.h opaque.h redisplay.h scrollbar.h systime.h window.h +malloc.o: config.h getpagesize.h syssignal.h marker.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h md5.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h file-coding.h lstream.h menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h frame-impl.h frame.h frameslots.h gui.h keymap.h menubar.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h -minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-stream.h console.h events.h frame-impl.h frame.h frameslots.h insdel.h redisplay.h scrollbar.h systime.h window-impl.h window.h winslots.h +minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-stream.h console.h events.h frame-impl.h frame.h frameslots.h insdel.h opaque.h redisplay.h scrollbar.h systime.h window-impl.h window.h winslots.h miscplay.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h miscplay.h sound.h sysfile.h syssignal.h nas.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h sound.h sysdep.h syssignal.h native-gtk-toolbar.o: $(LISP_H) charset.h console-gtk.h console.h faces.h frame.h glyphs-gtk.h glyphs.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window-impl.h window.h winslots.h nt.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h intl-auto-encap-win32.h ndir.h process.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h ntheap.o: $(LISP_H) intl-auto-encap-win32.h sysdep.h syswindows.h ntplay.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h intl-auto-encap-win32.h sound.h sysfile.h syswindows.h -objects.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h faces.h frame.h glyphs.h objects-impl.h objects.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h +objects.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h elhash.h faces.h frame.h glyphs.h objects-impl.h objects-tty-impl.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h offix.o: offix-cursors.h offix-types.h offix.h xintrinsic.h opaque.o: $(LISP_H) opaque.h -postgresql.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h postgresql.h process.h sysdep.h print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h conslots.h console-impl.h console-msw.h console-stream-impl.h console-stream.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h extents.h frame.h insdel.h intl-auto-encap-win32.h lstream.h opaque.h redisplay.h sysfile.h systty.h syswindows.h process-nt.o: $(LISP_H) console-msw.h console.h hash.h intl-auto-encap-win32.h lstream.h process.h procimpl.h sysfile.h sysproc.h syssignal.h systime.h syswindows.h process-unix.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h console.h events.h file-coding.h frame.h hash.h lstream.h ndir.h opaque.h process.h procimpl.h redisplay.h scrollbar.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h window.h @@ -197,14 +192,14 @@ rangetab.o: $(LISP_H) rangetab.h realpath.o: $(LISP_H) intl-auto-encap-win32.h sysfile.h syswindows.h redisplay-output.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gutter.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h -redisplay.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-tty.h console.h debug.h device-impl.h device.h devslots.h elhash.h events.h extents-impl.h extents.h faces.h file-coding.h frame-impl.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h menubar.h objects-impl.h objects.h process.h redisplay.h scrollbar.h specifier.h sysfile.h systime.h systty.h toolbar.h window-impl.h window.h winslots.h +redisplay.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-tty.h console.h debug.h device-impl.h device.h devslots.h elhash.h events.h extents-impl.h extents.h faces.h file-coding.h frame-impl.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h menubar.h objects-impl.h objects.h opaque.h process.h redisplay.h scrollbar.h specifier.h sysfile.h systime.h systty.h toolbar.h window-impl.h window.h winslots.h regex.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h regex.h syntax.h scrollbar.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h frame-impl.h frame.h frameslots.h glyphs.h gutter.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h search.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h insdel.h opaque.h regex.h syntax.h select.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h extents.h frame.h objects.h opaque.h redisplay.h select.h sgiplay.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h libst.h sound.h sysfile.h sysproc.h syssignal.h systime.h sheap.o: $(LISP_H) sheap-adjust.h sysfile.h -signal.o: $(LISP_H) conslots.h console-impl.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h process.h redisplay.h sysdep.h sysfile.h syssignal.h systime.h +signal.o: $(LISP_H) conslots.h console-impl.h console.h device-impl.h device.h devslots.h events.h frame-impl.h frame.h frameslots.h opaque.h process.h redisplay.h sysdep.h sysfile.h syssignal.h systime.h sound.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h intl-auto-encap-win32.h redisplay.h sound.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h syswindows.h xintrinsic.h specifier.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h frame.h glyphs.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h strcat.o: config.h @@ -215,7 +210,7 @@ sunpro.o: $(LISP_H) symbols.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h elhash.h syntax.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h extents.h syntax.h -sysdep.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-stream-impl.h console-stream.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h frame.h intl-auto-encap-win32.h ndir.h process.h redisplay.h scrollbar.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h systty.h syswait.h syswindows.h window.h +sysdep.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-stream-impl.h console-stream.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h events.h frame.h intl-auto-encap-win32.h ndir.h opaque.h process.h redisplay.h scrollbar.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h systty.h syswait.h syswindows.h window.h sysdll.o: config.h sysdll.h termcap.o: $(LISP_H) console.h device.h terminfo.o: config.h @@ -237,7 +232,7 @@ unexelfsgi.o: config.h unexenix.o: config.h unexfreebsd.o: config.h -unexhp9k3.o: config.h sysdep.h +unexhp9k3.o: config.h sysdep.h syssignal.h unexhp9k800.o: $(LISP_H) unexmips.o: config.h getpagesize.h unexnt.o: $(LISP_H) intl-auto-encap-win32.h sysfile.h syswindows.h diff --text -u 'xemacs-21.5.9/src/ecrt0.c' 'xemacs-21.5.10/src/ecrt0.c' Index: ./src/ecrt0.c --- ./src/ecrt0.c Wed Mar 13 17:52:37 2002 +++ ./src/ecrt0.c Wed Nov 13 03:58:28 2002 @@ -371,9 +371,7 @@ _start () { #ifdef sun -#ifdef LISP_FLOAT_TYPE finitfp_(); -#endif #endif /* On 68000, _start pushes a6 onto stack */ start1 (); diff --text -u 'xemacs-21.5.9/src/elhash.c' 'xemacs-21.5.10/src/elhash.c' Index: ./src/elhash.c --- ./src/elhash.c Mon Jul 29 18:21:17 2002 +++ ./src/elhash.c Wed Nov 27 16:15:12 2002 @@ -449,6 +449,7 @@ static Lisp_Hash_Table * xhash_table (Lisp_Object hash_table) { + /* #### What's going on here? Why the gc_in_progress check? */ if (!gc_in_progress) CHECK_HASH_TABLE (hash_table); check_hash_table_invariants (XHASH_TABLE (hash_table)); diff --text -u 'xemacs-21.5.9/src/emacs.c' 'xemacs-21.5.10/src/emacs.c' Index: ./src/emacs.c --- ./src/emacs.c Wed Aug 28 14:36:34 2002 +++ ./src/emacs.c Wed Nov 13 03:58:28 2002 @@ -1048,9 +1048,7 @@ init_signals_very_early (); init_data_very_early (); /* Catch math errors. */ -#ifdef LISP_FLOAT_TYPE init_floatfns_very_early (); /* Catch floating-point math errors. */ -#endif init_process_times_very_early (); /* Initialize our process timers. As early as possible, of course, so we can be fairly accurate. */ @@ -1413,7 +1411,7 @@ syms_of_sunpro (); #endif -#ifdef HAVE_LDAP +#if defined (HAVE_LDAP) && !defined (HAVE_SHLIB) syms_of_eldap (); #endif @@ -1421,7 +1419,7 @@ syms_of_gpmevent (); #endif -#ifdef HAVE_POSTGRESQL +#if defined (HAVE_POSTGRESQL) && !defined (HAVE_SHLIB) syms_of_postgresql (); #endif @@ -1903,11 +1901,11 @@ vars_of_sunpro (); #endif -#ifdef HAVE_LDAP +#if defined (HAVE_LDAP) && !defined (HAVE_SHLIB) vars_of_eldap (); #endif -#ifdef HAVE_POSTGRESQL +#if defined (HAVE_POSTGRESQL) && !defined (HAVE_SHLIB) vars_of_postgresql (); #endif @@ -2255,7 +2253,7 @@ #if defined (HAVE_NATIVE_SOUND) && defined (hp9000s800) init_hpplay (); #endif -#ifdef HAVE_POSTGRESQL +#if defined (HAVE_POSTGRESQL) && !defined (HAVE_SHLIB) /* Set some values taken from environment variables */ init_postgresql_from_environment (); #endif @@ -3165,28 +3163,26 @@ ("Your files have been auto-saved.\n" "Use `M-x recover-session' to recover them.\n" "\n" - "If you have access to the PROBLEMS file that came with your\n" - "version of XEmacs, please check to see if your crash is described\n" - "there, as there may be a workaround available.\n" + "Your version of XEmacs was distributed with a PROBLEMS file that may describe\n" + "your crash, and with luck a workaround. Please check it first, but do report\n" + "the crash anyway. " #ifdef INFODOCK - "Otherwise, please report this bug by selecting `Report-Bug'\n" - "in the InfoDock menu.\n" -#else - "Otherwise, please report this bug by running the send-pr\n" - "script included with XEmacs, or selecting `Send Bug Report'\n" - "from the help menu.\n" - "As a last resort send ordinary email to `crashes@xemacs.org'.\n" + "\n\nPlease report this bug by selecting `Report-Bug' in the InfoDock menu.\n" + "*BE SURE* to include the XEmacs configuration from M-x describe-installation,\n" + "or the file Installation in the top directory of the build tree.\n" +#else + "Please report this bug by invoking M-x report-emacs-bug,\n" + "or by selecting `Send Bug Report' from the Help menu. If necessary, send\n" + "ordinary email to `crashes@xemacs.org'. *MAKE SURE* to include the XEmacs\n" + "configuration from M-x describe-installation, or equivalently the file\n" + "Installation in the top of the build tree.\n" #endif - "*MAKE SURE* to include the information in the command\n" - "M-x describe-installation.\n" #ifndef _MSC_VER "\n" - "If at all possible, *please* try to obtain a C stack backtrace;\n" - "it will help us immensely in determining what went wrong.\n" - "To do this, locate the core file that was produced as a result\n" - "of this crash (it's usually called `core' and is located in the\n" - "directory in which you started the editor, or maybe in your home\n" - "directory), and type\n" + "*Please* try *hard* to obtain a C stack backtrace; without it, we are unlikely\n" + "to be able to analyze the problem. Locate the core file produced as a result\n" + "of this crash (often called `core' or `core.', and located in\n" + "the directory in which you started XEmacs or your home directory), and type\n" "\n" " gdb " #endif @@ -3213,11 +3209,12 @@ stderr_out ("%s%s", dir, name); } stderr_out - (" core\n\n" - "then type `where' when the debugger prompt comes up.\n" - "(If you don't have GDB on your system, you might have DBX,\n" - "or XDB, or SDB. A similar procedure should work for all of\n" - "these. Ask your system administrator if you need more help.)\n"); + (" core\n" + "\n" + "then type `where' at the debugger prompt. No GDB on your system? You may\n" + "have DBX, or XDB, or SDB. (Ask your system administrator if you need help.)\n" + "If no core file was produced, enable them (often with `ulimit -c unlimited'\n" + "in case of future recurrance of the crash.\n"); #endif /* _MSC_VER */ } diff --text -u 'xemacs-21.5.9/src/emodules.c' 'xemacs-21.5.10/src/emodules.c' Index: ./src/emodules.c --- ./src/emodules.c Wed Jun 5 18:55:15 2002 +++ ./src/emodules.c Wed Sep 11 00:27:36 2002 @@ -18,6 +18,10 @@ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +/* This gross hack is so that we can make DEFVAR_foo register with the + portable dumper in core, but not do so in modules. Since the hackery to do + that is in emodules.h, we have to turn it off for this file. */ +#define EMODULES_DO_NOT_REDEFINE #include "emodules.h" #include "sysdll.h" @@ -29,19 +33,24 @@ /* Do we do our work quietly? */ int load_modules_quietly; +/* Set this while unloading a module. This should NOT be made set by users, + as it allows the unbinding of symbol-value-forward variables. */ +int unloading_module; + /* Load path */ Lisp_Object Vmodule_load_path; - Lisp_Object Qdll_error; +Lisp_Object Qmodule, Qunload_module, module_tag; typedef struct _emodules_list { - int used; /* Is this slot used? */ - char *soname; /* Name of the shared object loaded (full path) */ - char *modname; /* The name of the module */ - char *modver; /* The version that the module is at */ - char *modtitle; /* How the module announces itself */ - dll_handle dlhandle; /* Dynamic lib handle */ + int used; /* Is this slot used? */ + char *soname; /* Name of the shared object loaded (full path) */ + char *modname; /* The name of the module */ + char *modver; /* The module version string */ + char *modtitle; /* How the module announces itself */ + void (*unload)(void); /* Module cleanup function to run before unloading */ + dll_handle dlhandle; /* Dynamic lib handle */ } emodules_list; static Lisp_Object Vmodule_extensions; @@ -51,7 +60,8 @@ static emodules_list *modules; static int modnum; -static int find_make_module (const char *mod, const char *name, const char *ver, int make_or_find); +static int find_make_module (const char *mod, const char *name, + const char *ver, int make_or_find); static Lisp_Object module_load_unwind (Lisp_Object); static void attempt_module_delete (int mod); @@ -59,6 +69,8 @@ Load in a C Emacs Extension module named FILE. The optional NAME and VERSION are used to identify specific modules. +DO NOT USE THIS FUNCTION in your programs. Use `require' instead. + This function is similar in intent to `load' except that it loads in pre-compiled C or C++ code, using dynamic shared objects. If NAME is specified, then the module is only loaded if its internal name matches @@ -74,7 +86,7 @@ modules have been loaded as dynamic shared objects by examining the return value of the function `list-modules'. -It is possible, although unwise, to unload modules using `unload-module'. +It is possible, although unwise, to unload modules using `unload-feature'. The preferred mechanism for unloading or reloading modules is to quit XEmacs, and then reload those new or changed modules that are required. @@ -108,11 +120,11 @@ return Qt; } -#ifdef DANGEROUS_NASTY_SCARY_MONSTER - -DEFUN ("unload-module", Fmodule_unload, 1, 3, 0, /* +DEFUN ("unload-module", Funload_module, 1, 3, 0, /* Unload a module previously loaded with load-module. +DO NOT USE THIS FUNCTION in your programs. Use `unload-feature' instead. + As with load-module, this function requires at least the module FILE, and optionally the module NAME and VERSION to unload. It may not be possible for the module to be unloaded from memory, as there may be Lisp objects @@ -124,10 +136,17 @@ { int x; char *mod, *mname, *mver; + Lisp_Object foundname = Qnil; + struct gcpro gcpro1; CHECK_STRING(file); - mod = (char *)XSTRING_DATA (file); + GCPRO1 (foundname); + if (locate_file (Vmodule_load_path, file, Vmodule_extensions, &foundname, 0) + < 0) + return Qt; + mod = (char *)XSTRING_DATA (foundname); + UNGCPRO; if (NILP (name)) mname = ""; @@ -141,10 +160,13 @@ x = find_make_module (mod, mname, mver, 1); if (x != -1) - attempt_module_delete (x); + { + if (modules[x].unload != NULL) + modules[x].unload (); + attempt_module_delete (x); + } return Qt; } -#endif /* DANGEROUS_NASTY_SCARY_MONSTER */ DEFUN ("list-modules", Flist_modules, 0, 0, "", /* Produce a list of loaded dynamic modules. @@ -308,10 +330,11 @@ void emodules_load(const char *module, const char *modname, const char *modver) { + Lisp_Object old_load_list; Lisp_Object filename; - Lisp_Object foundname; - int fd, x, mpx; - char *soname, *tmod; + Lisp_Object foundname, lisp_modname; + int x, mpx; + char *soname; const char **f; const long *ellcc_rev; char *mver, *mname, *mtitle, *symname; @@ -319,8 +342,9 @@ void (*modsyms)(void) = 0; void (*modvars)(void) = 0; void (*moddocs)(void) = 0; + void (*modunld)(void) = 0; emodules_list *mp; - struct gcpro gcpro1,gcpro2; + struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; filename = Qnil; foundname = Qnil; @@ -331,22 +355,16 @@ if ((module == (const char *)0) || (module[0] == '\0')) invalid_argument ("Empty module name", Qunbound); - /* This is to get around the fact that build_string() is not declared - as taking a const char * as an argument. I HATE compiler warnings. */ - tmod = (char *)ALLOCA (strlen (module) + 1); - strcpy (tmod, module); - - GCPRO2(filename, foundname); - filename = build_string (tmod); - fd = locate_file (Vmodule_load_path, filename, Vmodule_extensions, - &foundname, -1); - UNGCPRO; - - if (fd < 0) + GCPRO4(filename, foundname, old_load_list, lisp_modname); + filename = build_string (module); + if (locate_file (Vmodule_load_path, filename, Vmodule_extensions, + &foundname, 0) < 0) signal_error (Qdll_error, "Cannot open dynamic module", filename); soname = (char *)ALLOCA (XSTRING_LENGTH (foundname) + 1); strcpy (soname, (char *)XSTRING_DATA (foundname)); + lisp_modname = call1 (Qfile_name_sans_extension, + Ffile_name_nondirectory (foundname)); dlhandle = dll_open (soname); if (dlhandle == (dll_handle)0) @@ -419,6 +437,11 @@ if (moddocs == (void (*)(void))0) goto missing_symbol; + /* Now look for the optional unload function. */ + strcpy (symname, "unload_"); + strcat (symname, mname); + modunld = (void (*)(void))dll_function (dlhandle, symname); + if (modname && modname[0] && strcmp (modname, mname)) signal_error (Qdll_error, "Module name mismatch", Qunbound); @@ -454,8 +477,14 @@ mp->modver = xstrdup (mver); mp->modtitle = xstrdup (mtitle); mp->dlhandle = dlhandle; + mp->unload = modunld; dlhandle = 0; + old_load_list = Vcurrent_load_list; + Vcurrent_load_list = Qnil; + LOADHIST_ATTACH (lisp_modname); + LOADHIST_ATTACH (module_tag); + /* * Now we need to call the module init function and perform the various * startup tasks. @@ -474,6 +503,9 @@ if (!load_modules_quietly) message ("Loaded module %s v%s (%s)", mname, mver, mtitle); + Vload_history = Fcons (Fnreverse (Vcurrent_load_list), Vload_history); + Vcurrent_load_list = old_load_list; + UNGCPRO; emodules_depth--; if (emodules_depth == 0) @@ -531,11 +563,14 @@ syms_of_module (void) { DEFERROR_STANDARD (Qdll_error, Qerror); + DEFSYMBOL (Qmodule); + DEFSYMBOL (Qunload_module); DEFSUBR(Fload_module); DEFSUBR(Flist_modules); -#ifdef DANGEROUS_NASTY_SCARY_MONSTER DEFSUBR(Funload_module); -#endif + module_tag = Fcons (Qmodule, Qnil); + staticpro (&module_tag); + Fput (Qunload_module, Qdisabled, Qt); } void @@ -593,8 +628,15 @@ when a dynamic module is loaded. */); + DEFVAR_BOOL ("unloading-module", &unloading_module /* +Used internally by `unload-feature'. Do not set this variable. +Danger, danger, Will Robinson! +*/); + /* #### Export this to Lisp */ - Vmodule_extensions = build_string (":.ell:.so:.dll"); + Vmodule_extensions = list3 (build_string (".ell"), + build_string (".so"), + build_string (".dll")); staticpro (&Vmodule_extensions); load_modules_quietly = 0; @@ -603,4 +645,3 @@ } #endif /* HAVE_SHLIB */ - diff --text -u 'xemacs-21.5.9/src/emodules.h' 'xemacs-21.5.10/src/emodules.h' Index: ./src/emodules.h --- ./src/emodules.h Wed Mar 13 17:52:38 2002 +++ ./src/emodules.h Mon Nov 18 15:52:37 2002 @@ -24,9 +24,9 @@ #define EMODULES_HDR #endif -#define EMODULES_VERSION "1.0.0" +#define EMODULES_VERSION "1.1.0" #define EMODULES_MAJOR 1 -#define EMODULES_MINOR 0 +#define EMODULES_MINOR 1 #define EMODULES_PATCH 0 #define EMODULES_REVISION (long)((EMODULES_MAJOR * 1000) + \ (EMODULES_MINOR * 10) + \ @@ -80,4 +80,26 @@ #define CDOCSYM(Sname, DOC) emodules_doc_sym (Sname, DOC) #endif /* EMODULES_GATHER_VERSION */ +/* We should not expose module entities to the portable dumper. */ +#if defined(PDUMP) && !defined(EMODULES_DO_NOT_REDEFINE) +#define dump_add_root_struct_ptr(varaddr,descaddr) DO_NOTHING +#define dump_add_opaque(varaddr,size) DO_NOTHING +#define dump_add_root_block(ptraddress,desc) DO_NOTHING +#undef dump_add_opaque_int +#define dump_add_opaque_int(int_varaddr) DO_NOTHING +#undef dump_add_opaque_fixnum +#define dump_add_opaque_fixnum(fixnum_varaddr) DO_NOTHING +#define dump_add_root_object(varaddr) DO_NOTHING +#define dump_add_weak_object_chain(varaddr) DO_NOTHING +#undef staticpro +#define staticpro(DSF_location) staticpro_nodump(DSF_location) + +#undef DEFSYMBOL +#undef DEFSYMBOL_MULTIWORD_PREDICATE +#define DEFSYMBOL(name) DEFSYMBOL_NO_DUMP (name) +#define DEFSYMBOL_MULTIWORD_PREDICATE(name) \ + DEFSYMBOL_MULTIWORD_PREDICATE_NO_DUMP (name) +#define defsymbol(location,name) defsymbol_nodump (location, name) +#endif + #endif /* EMODULES_HDR */ diff --text -u 'xemacs-21.5.9/src/eval.c' 'xemacs-21.5.10/src/eval.c' Index: ./src/eval.c --- ./src/eval.c Thu Aug 22 20:31:39 2002 +++ ./src/eval.c Sat Nov 30 17:10:25 2002 @@ -413,6 +413,9 @@ static int throw_level; #endif +static int warning_will_be_discarded (Lisp_Object level); +static void check_proper_critical_section_nonlocal_exit_protection (void); + /************************************************************************/ /* The subr object type */ @@ -657,6 +660,20 @@ return Fbacktrace (stream, Qt); } +#ifdef DEBUG_XEMACS + +static void +trace_out_and_die (Lisp_Object err) +{ + Fdisplay_error (err, Qt); + backtrace_259 (Qnil); + stderr_out ("XEmacs exiting to debugger.\n"); + Fforce_debugging_signal (Qt); + /* Unlikely to be reached */ +} + +#endif + /* An error was signaled. Maybe call the debugger, if the `debug-on-error' etc. variables call for this. CONDITIONS is the list of conditions associated with the error being signalled. SIG is the actual error @@ -744,11 +761,17 @@ && !skip_debugger (conditions, temp_data)) { debug_on_quit &= ~2; /* reset critical bit */ + specbind (Qdebug_on_error, Qnil); specbind (Qstack_trace_on_error, Qnil); specbind (Qdebug_on_signal, Qnil); specbind (Qstack_trace_on_signal, Qnil); +#ifdef DEBUG_XEMACS + if (noninteractive) + trace_out_and_die (Fcons (sig, data)); +#endif + val = call_debugger (list2 (Qerror, (Fcons (sig, data)))); unbind_to (speccount); *debugger_entered = 1; @@ -779,11 +802,17 @@ : wants_debugger (Vdebug_on_signal, conditions))) { debug_on_quit &= ~2; /* reset critical bit */ + specbind (Qdebug_on_error, Qnil); specbind (Qstack_trace_on_error, Qnil); specbind (Qdebug_on_signal, Qnil); specbind (Qstack_trace_on_signal, Qnil); +#ifdef DEBUG_XEMACS + if (noninteractive) + trace_out_and_die (Fcons (sig, data)); +#endif + val = call_debugger (list2 (Qerror, (Fcons (sig, data)))); *debugger_entered = 1; } @@ -1592,6 +1621,8 @@ abort (); #endif + check_proper_critical_section_nonlocal_exit_protection (); + /* If bomb_out_p is t, this is being called from Fsignal as a "last resort" when there is no handler for this error and the debugger couldn't be invoked, so we are throwing to @@ -2063,11 +2094,11 @@ Lisp_Object arg) { /* This function can GC */ - int speccount = specpdl_depth(); + int speccount = specpdl_depth (); Lisp_Object tem; /* ((handler-fun . (handler-arg . nil)) ... ) */ - tem = noseeum_cons (noseeum_cons (make_opaque_ptr (handler), + tem = noseeum_cons (noseeum_cons (make_opaque_ptr ((void *) handler), noseeum_cons (handler_arg, Qnil)), Vcondition_handlers); record_unwind_protect (condition_bind_unwind, tem); @@ -2113,6 +2144,7 @@ } extern int in_display; +extern int gc_currently_forbidden; /************************************************************************/ @@ -2131,6 +2163,24 @@ { } +static void +check_proper_critical_section_gc_protection (void) +{ + assert_with_message + (!in_display || gc_currently_forbidden, + "Potential GC from within redisplay without being properly wrapped"); +} + +static void +check_proper_critical_section_nonlocal_exit_protection (void) +{ + assert_with_message + (!in_display + || ((get_inhibit_flags () & INTERNAL_INHIBIT_ERRORS) + && (get_inhibit_flags () & INTERNAL_INHIBIT_THROWS)), + "Attempted non-local exit from within redisplay without being properly wrapped"); +} + /* #### This function has not been synched with FSF. It diverges significantly. */ @@ -2181,20 +2231,14 @@ abort (); } - if (gc_in_progress) - /* We used to abort if in_display: - - [[This is one of many reasons why you can't run lisp code from - redisplay. There is no sensible way to handle errors there.]] - - The above comment is not correct. + assert (!gc_in_progress); - Inhibit GC until the redisplay code is careful enough to properly - GCPRO their structures; + /* We abort if in_display and we are not protected, as garbage + collections and non-local exits will invariably be fatal, but in + messy, difficult-to-debug ways. See enter_redisplay_critical_section(). + */ - Surround all calls to Lisp code with error-trapping wrappers that - catch all errors. --ben */ - abort (); + check_proper_critical_section_nonlocal_exit_protection (); conditions = Fget (error_symbol, Qerror_conditions, Qnil); @@ -3462,6 +3506,9 @@ } QUIT; +#ifdef ERROR_CHECK_TRAPPING_PROBLEMS + check_proper_critical_section_gc_protection (); +#endif if (need_to_garbage_collect) { struct gcpro gcpro1; @@ -3673,6 +3720,22 @@ } + +static void +run_post_gc_hook (void) +{ + Lisp_Object args[2]; + + args[0] = Qpost_gc_hook; + args[1] = Fcons (Fcons (Qfinalize_list, zap_finalize_list ()), Qnil); + + run_hook_with_args_trapping_problems + ("Error in post-gc-hook", + 2, args, + RUN_HOOKS_TO_COMPLETION, + INHIBIT_QUIT | NO_INHIBIT_ERRORS); +} + DEFUN ("funcall", Ffuncall, 1, MANY, 0, /* Call first argument as a function, passing the remaining arguments to it. Thus, (funcall 'cons 'x 'y) returns (x . y). @@ -3690,6 +3753,9 @@ if (funcall_allocation_flag) { +#ifdef ERROR_CHECK_TRAPPING_PROBLEMS + check_proper_critical_section_gc_protection (); +#endif if (need_to_garbage_collect) /* Callers should gcpro lexpr args */ garbage_collect_1 (); @@ -3703,11 +3769,9 @@ } if (need_to_signal_post_gc) { - static void run_post_gc_hook(void); /* forward */ - need_to_signal_post_gc = 0; - recompute_funcall_allocation_flag(); - run_post_gc_hook(); + recompute_funcall_allocation_flag (); + run_post_gc_hook (); } } @@ -4736,7 +4800,8 @@ Lisp_Object errstr; int speccount = specpdl_depth (); - if (! (inhibit_flags & INHIBIT_WARNING_ISSUE)) + if (!(inhibit_flags & INHIBIT_WARNING_ISSUE) + && !warning_will_be_discarded (current_warning_level ())) { /* We're no longer protected against errors or quit here, so at least let's temporarily inhibit quit. We definitely do not @@ -4767,7 +4832,6 @@ errstr); unbind_to (speccount); - } else p->backtrace = Qnil; @@ -4833,8 +4897,7 @@ higher-level caller. If FLAGS contains INHIBIT_GC, garbage collection is inhibited. - This is useful for Lisp called within redisplay or inside of the - QUIT macro (where GC is generally not expected), for example. + This is useful for Lisp called within redisplay, for example. If FLAGS contains INHIBIT_EXISTING_PERMANENT_DISPLAY_OBJECT_DELETION, Lisp code is not allowed to delete any window, buffers, frames, devices, @@ -5008,7 +5071,8 @@ tem = (fun) (arg); if (thrown && !EQ (thrown_tag, package.catchtag) - && (!flags & INHIBIT_WARNING_ISSUE)) + && (!flags & INHIBIT_WARNING_ISSUE) + && !warning_will_be_discarded (current_warning_level ())) { Lisp_Object errstr; @@ -5537,20 +5601,6 @@ RUN_HOOKS_TO_COMPLETION, flags)); } -static void -run_post_gc_hook() -{ - Lisp_Object args[2]; - - args[0] = Qpost_gc_hook; - args[1] = Fcons (Fcons (Qfinalize_list, zap_finalize_list()), Qnil); - - run_hook_with_args_trapping_problems - ("Error in post-gc-hook", - 2, args, - RUN_HOOKS_TO_COMPLETION, - INHIBIT_QUIT | NO_INHIBIT_ERRORS); -} /************************************************************************/ /* The special binding stack */ @@ -6186,16 +6236,22 @@ /* Warnings */ /************************************************************************/ +static int +warning_will_be_discarded (Lisp_Object level) +{ + /* Don't even generate debug warnings if they're going to be discarded, + to avoid excessive consing. */ + return (EQ (level, Qdebug) && !NILP (Vlog_warning_minimum_level) && + !EQ (Vlog_warning_minimum_level, Qdebug)); +} + void warn_when_safe_lispobj (Lisp_Object class, Lisp_Object level, Lisp_Object obj) { - /* Don't even generate debug warnings if they're going to be discarded, - to avoid excessive consing. */ - if (EQ (level, Qdebug) && !NILP (Vlog_warning_minimum_level) && - !EQ (Vlog_warning_minimum_level, Qdebug)) + if (warning_will_be_discarded (level)) return; - + obj = list1 (list3 (class, level, obj)); if (NILP (Vpending_warnings)) Vpending_warnings = Vpending_warnings_tail = obj; @@ -6219,12 +6275,9 @@ Lisp_Object obj; va_list args; - /* Don't even generate debug warnings if they're going to be discarded, - to avoid excessive consing. */ - if (EQ (level, Qdebug) && !NILP (Vlog_warning_minimum_level) && - !EQ (Vlog_warning_minimum_level, Qdebug)) + if (warning_will_be_discarded (level)) return; - + va_start (args, fmt); obj = emacs_vsprintf_string (CGETTEXT (fmt), args); va_end (args); @@ -6421,12 +6474,21 @@ if one of its condition symbols appears in the list. This variable is overridden by `debug-ignored-errors'. See also variables `debug-on-quit' and `debug-on-signal'. -If this variable is set while XEmacs is running noninteractively, -an unhandled error will cause a backtrace to be output and the C -debugger entered using `force-debugging-signal'. This can be very -useful when debugging noninteractive errors in tricky situations, -e.g. makefiles, since you can set this variable using an environment -variable, like this: + +If this variable is set while XEmacs is running noninteractively (using +`-batch'), and XEmacs was configured with `--debug' (#define XEMACS_DEBUG +in the C code), instead of trying to invoke the Lisp debugger (which +obviously won't work), XEmacs will break out to a C debugger using +\(force-debugging-signal t). This is useful because debugging +noninteractive runs of XEmacs is often very difficult, since they typically +happen as part of sometimes large and complex make suites (e.g. rebuilding +the XEmacs packages). NOTE: This runs abort()!!! (As well as and after +executing INT 3 under MS Windows, which should invoke a debugger if it's +active.) This is guaranteed to kill XEmacs! (But in this situation, XEmacs +is about to die anyway, and if no debugger is present, this will usefully +dump core.) The most useful way to set this flag when debugging +noninteractive runs, especially in makefiles, is using the environment +variable XEMACSDEBUG, like this: \(using csh) setenv XEMACSDEBUG '(setq debug-on-error t)' \(using bash) export XEMACSDEBUG='(setq debug-on-error t)' @@ -6440,6 +6502,9 @@ If the value is a list, an error only means to enter the debugger if one of its condition symbols appears in the list. See also variable `debug-on-quit'. + +This will attempt to enter a C debugger when XEmacs is run noninteractively +and under the same conditions as described in `debug-on-error'. */ ); Vdebug_on_signal = Qnil; diff --text -u 'xemacs-21.5.9/src/event-Xt.c' 'xemacs-21.5.10/src/event-Xt.c' Index: ./src/event-Xt.c --- ./src/event-Xt.c Thu Aug 22 20:34:20 2002 +++ ./src/event-Xt.c Mon Nov 18 15:52:38 2002 @@ -67,6 +67,8 @@ #include "offix.h" #endif +/* used in glyphs-x.c */ +void enqueue_focus_event (Widget wants_it, Lisp_Object frame, int in_p); static void handle_focus_event_1 (struct frame *f, int in_p); static void handle_focus_event_2 (Window w, struct frame *f, int in_p); @@ -1682,8 +1684,10 @@ } /* Create a synthetic X focus event. */ +void emacs_Xt_enqueue_focus_event (Widget wants_it, Lisp_Object frame, + int in_p); void -enqueue_focus_event (Widget wants_it, Lisp_Object frame, int in_p) +emacs_Xt_enqueue_focus_event (Widget wants_it, Lisp_Object frame, int in_p) { Lisp_Object emacs_event = Fmake_event (Qnil, Qnil); Lisp_Event *ev = XEVENT (emacs_event); @@ -3146,8 +3150,29 @@ static void drain_X_queue (void) { + Lisp_Object devcons, concons; + CONSOLE_LOOP (concons) + { + struct console *con = XCONSOLE (XCAR (concons)); + if (!con->input_enabled) + continue; + + CONSOLE_DEVICE_LOOP (devcons, con) + { + struct device* d; + Display* display; + d = XDEVICE (XCAR (devcons)); + if (DEVICE_X_P (d) && DEVICE_X_DISPLAY (d)) { + display = DEVICE_X_DISPLAY (d); + while (XEventsQueued (display, QueuedAfterReading)) + XtAppProcessEvent (Xt_app_con, XtIMXEvent); + } + } + } + /* while (XtAppPending (Xt_app_con) & XtIMXEvent) XtAppProcessEvent (Xt_app_con, XtIMXEvent); + */ } static int diff --text -u 'xemacs-21.5.9/src/event-msw.c' 'xemacs-21.5.10/src/event-msw.c' Index: ./src/event-msw.c --- ./src/event-msw.c Fri Aug 16 17:15:36 2002 +++ ./src/event-msw.c Mon Nov 18 15:52:38 2002 @@ -829,7 +829,7 @@ else shutdown (str->s, 1); - CloseHandle ((HANDLE)str->s); + closesocket (str->s); if (str->pending_p) WaitForSingleObject (str->ov.hEvent, INFINITE); @@ -3353,7 +3353,7 @@ { LPNMHDR nmhdr = (LPNMHDR) lParam; - if ((int) nmhdr->code == TTN_NEEDTEXT) + if (nmhdr->code == TTN_NEEDTEXT) { #ifdef HAVE_TOOLBARS LPTOOLTIPTEXTW tttextw = (LPTOOLTIPTEXTW) lParam; @@ -3383,14 +3383,14 @@ #endif } /* handle tree view callbacks */ - else if ((int) nmhdr->code == TVN_SELCHANGED) + else if (nmhdr->code == TVN_SELCHANGED) { NM_TREEVIEW *ptree = (NM_TREEVIEW *) lParam; frame = XFRAME (mswindows_find_frame (hwnd)); mswindows_handle_gui_wm_command (frame, 0, ptree->itemNew.lParam); } /* handle tab control callbacks */ - else if ((int) nmhdr->code == TCN_SELCHANGE) + else if (nmhdr->code == TCN_SELCHANGE) { TC_ITEM item; int idx = qxeSendMessage (nmhdr->hwndFrom, TCM_GETCURSEL, 0, 0); @@ -4225,8 +4225,8 @@ mods |= (keymap [VK_CONTROL] & 0x80) ? XEMACS_MOD_CONTROL : 0; } - mods |= (keys_is_real ? fwKeys & MK_SHIFT : (keymap [VK_SHIFT] & 0x80)) - ? XEMACS_MOD_SHIFT : 0; + mods |= (keys_is_real ? (int) (fwKeys & MK_SHIFT) : + (keymap [VK_SHIFT] & 0x80)) ? XEMACS_MOD_SHIFT : 0; mods |= fwKeys & MK_LBUTTON ? XEMACS_MOD_BUTTON1 : 0; mods |= fwKeys & MK_MBUTTON ? XEMACS_MOD_BUTTON2 : 0; mods |= fwKeys & MK_RBUTTON ? XEMACS_MOD_BUTTON3 : 0; diff --text -u 'xemacs-21.5.9/src/event-stream.c' 'xemacs-21.5.10/src/event-stream.c' Index: ./src/event-stream.c --- ./src/event-stream.c Thu Aug 1 17:28:35 2002 +++ ./src/event-stream.c Sun Dec 8 19:25:08 2002 @@ -1061,7 +1061,7 @@ GCPRO2 (echo, help); record_unwind_protect (save_window_excursion_unwind, - Fcurrent_window_configuration (Qnil)); + call1 (Qcurrent_window_configuration, Qnil)); reset_key_echo (command_builder, 1); help = Feval (Vhelp_form); @@ -1521,15 +1521,9 @@ static unsigned long lisp_number_to_milliseconds (Lisp_Object secs, int allow_0) { -#ifdef LISP_FLOAT_TYPE double fsecs; CHECK_INT_OR_FLOAT (secs); fsecs = XFLOATINT (secs); -#else - long fsecs; - CHECK_INT (secs); - fsecs = XINT (secs); -#endif if (fsecs < 0) invalid_argument ("timeout is negative", secs); if (!allow_0 && fsecs == 0) diff --text -u 'xemacs-21.5.9/src/extents.c' 'xemacs-21.5.10/src/extents.c' Index: ./src/extents.c --- ./src/extents.c Mon Jul 29 18:21:18 2002 +++ ./src/extents.c Tue Oct 8 14:44:15 2002 @@ -1308,6 +1308,8 @@ return info->soe; } +/* #### don't even think of #define'ing this, the prototype of + print_extent_1 has changed! */ /* #define SOE_DEBUG */ #ifdef SOE_DEBUG @@ -5386,8 +5388,8 @@ function to be called the first time (part of) the extent is redisplayed. It will be called with the extent as its first argument. - Note: The function will not be called immediately - during redisplay, an eval event will be dispatched. + Note: The function will not be called immediately + during redisplay, an eval event will be dispatched. detachable Whether the extent gets detached (as with `detach-extent') when all the text within the @@ -5402,16 +5404,16 @@ face The face in which to display the text. Setting this is the same as calling `set-extent-face'. - mouse-face If non-nil, the extent will be highlighted in this - face when the mouse moves over it. + mouse-face If non-nil, the extent will be highlighted in this + face when the mouse moves over it. pointer If non-nil, and a valid pointer glyph, this specifies the shape of the mouse pointer while over the extent. highlight Obsolete: Setting this property is equivalent to - setting a `mouse-face' property of `highlight'. - Reading this property returns non-nil if - the extent has a non-nil `mouse-face' property. + setting a `mouse-face' property of `highlight'. + Reading this property returns non-nil if + the extent has a non-nil `mouse-face' property. duplicable Whether this extent should be copied into strings, so that kill, yank, and undo commands will restore @@ -5486,7 +5488,14 @@ `inside-margin', or `outside-margin') of the extent's begin glyph. - end-glyph-layout The layout policy of the extent's end glyph. + end-glyph-layout The layout policy of the extent's end glyph. + + syntax-table A cons or a syntax table object. If a cons, the car must + be an integer (interpreted as a syntax code, applicable to + all characters in the extent). Otherwise, syntax of + characters in the extent is looked up in the syntax table. + You should use the text property API to manipulate this + property. (This may be required in the future.) */ (extent, property, value)) { diff --text -u 'xemacs-21.5.9/src/extw-Xt.c' 'xemacs-21.5.10/src/extw-Xt.c' Index: ./src/extw-Xt.c --- ./src/extw-Xt.c Fri Apr 13 03:23:43 2001 +++ ./src/extw-Xt.c Tue Nov 12 00:34:13 2002 @@ -207,7 +207,7 @@ if (event->type == ClientMessage && event->xclient.message_type == a_EXTW_NOTIFY && event->xclient.data.l[0] == 1 - extw_which_side && - event->xclient.data.l[1] == q->type) + (en_extw_notify) event->xclient.data.l[1] == q->type) return TRUE; } return FALSE; diff --text -u 'xemacs-21.5.9/src/file-coding.h' 'xemacs-21.5.10/src/file-coding.h' Index: ./src/file-coding.h --- ./src/file-coding.h Wed Jun 5 18:55:35 2002 +++ ./src/file-coding.h Sun Sep 1 15:41:45 2002 @@ -756,7 +756,7 @@ DET_QUITE_IMPROBABLE = -2, /* An erroneous sequence was seen. */ DET_NEARLY_IMPOSSIBLE = -3, - DET_LOWEST = 3, + DET_LOWEST = -3, }; extern int coding_detector_count; diff --text -u 'xemacs-21.5.9/src/fileio.c' 'xemacs-21.5.10/src/fileio.c' Index: ./src/fileio.c --- ./src/fileio.c Fri Jun 21 06:18:31 2002 +++ ./src/fileio.c Wed Nov 27 16:15:12 2002 @@ -218,6 +218,7 @@ Lisp_Object Qdirectory_file_name; Lisp_Object Qfile_name_directory; Lisp_Object Qfile_name_nondirectory; +Lisp_Object Qfile_name_sans_extension; Lisp_Object Qunhandled_file_name_directory; Lisp_Object Qfile_name_as_directory; Lisp_Object Qcopy_file; @@ -373,10 +374,12 @@ res = alloca_array (Ibyte, (wd ? qxestrlen (wd) : 0) + 10); /* go overboard */ + res[0] = '\0'; if (p == beg + 4 && IS_DIRECTORY_SEP (*beg) && beg[1] == ':') { qxestrncpy (res, beg, 2); beg += 2; + res[2] = '\0'; } if (wd) @@ -1348,6 +1351,16 @@ Ibyte *p; LISP_STRING_TO_ALLOCA (expanded_name, path); + +#if defined (WIN32_FILENAMES) && defined (CYGWIN) + /* When using win32 filenames in cygwin we want file-truename to + detect that c:/windows == /windows for example. */ + if (! (IS_DIRECTORY_SEP (path[0]) && IS_DIRECTORY_SEP (path[1]))) + { + LOCAL_TO_WIN32_FILE_FORMAT (path, p); + path = p; + } +#endif p = path; /* Try doing it all at once. */ @@ -3315,7 +3328,6 @@ Lisp_Object desc_locative = Fcons (make_int (desc), Qnil); Lisp_Object instream = Qnil, outstream = Qnil; struct gcpro nngcpro1, nngcpro2; - /* need to gcpro; QUIT could happen out of call to retry_write() */ NNGCPRO2 (instream, outstream); record_unwind_protect (close_file_unwind, desc_locative); @@ -4193,6 +4205,7 @@ DEFSYMBOL (Qdirectory_file_name); DEFSYMBOL (Qfile_name_directory); DEFSYMBOL (Qfile_name_nondirectory); + DEFSYMBOL (Qfile_name_sans_extension); DEFSYMBOL (Qunhandled_file_name_directory); DEFSYMBOL (Qfile_name_as_directory); DEFSYMBOL (Qcopy_file); diff --text -u 'xemacs-21.5.9/src/floatfns.c' 'xemacs-21.5.10/src/floatfns.c' Index: ./src/floatfns.c --- ./src/floatfns.c Mon Jul 29 18:21:20 2002 +++ ./src/floatfns.c Wed Nov 13 03:58:29 2002 @@ -48,9 +48,6 @@ #include #include "lisp.h" #include "syssignal.h" - -#ifdef LISP_FLOAT_TYPE - #include "sysfloat.h" /* The code uses emacs_rint, so that it works to undefine HAVE_RINT @@ -211,11 +208,8 @@ return extract_float (wrong_type_argument (Qnumberp, num)); } -#endif /* LISP_FLOAT_TYPE */ - /* Trig functions. */ -#ifdef LISP_FLOAT_TYPE DEFUN ("acos", Facos, 1, 1, 0, /* Return the inverse cosine of NUMBER. @@ -302,12 +296,9 @@ IN_FLOAT (d = (sin (d) / c), "tan", number); return make_float (d); } -#endif /* LISP_FLOAT_TYPE (trig functions) */ - /* Bessel functions */ #if 0 /* Leave these out unless we find there's a reason for them. */ -/* #ifdef LISP_FLOAT_TYPE */ DEFUN ("bessel-j0", Fbessel_j0, 1, 1, 0, /* Return the bessel function j0 of NUMBER. @@ -379,7 +370,6 @@ /* Error functions. */ #if 0 /* Leave these out unless we see they are worth having. */ -/* #ifdef LISP_FLOAT_TYPE */ DEFUN ("erf", Ferf, 1, 1, 0, /* Return the mathematical error function of NUMBER. @@ -416,7 +406,6 @@ /* Root and Log functions. */ -#ifdef LISP_FLOAT_TYPE DEFUN ("exp", Fexp, 1, 1, 0, /* Return the exponential base e of NUMBER. */ @@ -433,8 +422,6 @@ IN_FLOAT (d = exp (d), "exp", number); return make_float (d); } -#endif /* LISP_FLOAT_TYPE */ - DEFUN ("expt", Fexpt, 2, 2, 0, /* Return the exponential NUMBER1 ** NUMBER2. @@ -471,7 +458,6 @@ return make_int (retval); } -#ifdef LISP_FLOAT_TYPE { double f1 = extract_float (number1); double f2 = extract_float (number2); @@ -485,14 +471,8 @@ IN_FLOAT2 (f1 = pow (f1, f2), "expt", number1, number2); return make_float (f1); } -#else - CHECK_INT_OR_FLOAT (number1); - CHECK_INT_OR_FLOAT (number2); - return Fexpt (number1, number2); -#endif /* LISP_FLOAT_TYPE */ } -#ifdef LISP_FLOAT_TYPE DEFUN ("log", Flog, 1, 2, 0, /* Return the natural logarithm of NUMBER. If second optional argument BASE is given, return the logarithm of @@ -569,12 +549,8 @@ #endif return make_float (d); } -#endif /* LISP_FLOAT_TYPE */ - /* Inverse trig functions. */ -#ifdef LISP_FLOAT_TYPE -/* #if 0 Not clearly worth adding... */ DEFUN ("acosh", Facosh, 1, 1, 0, /* Return the inverse hyperbolic cosine of NUMBER. @@ -663,7 +639,6 @@ IN_FLOAT (d = tanh (d), "tanh", number); return make_float (d); } -#endif /* LISP_FLOAT_TYPE (inverse trig functions) */ /* Rounding functions */ @@ -672,14 +647,12 @@ */ (number)) { -#ifdef LISP_FLOAT_TYPE if (FLOATP (number)) { IN_FLOAT (number = make_float (fabs (XFLOAT_DATA (number))), "abs", number); return number; } -#endif /* LISP_FLOAT_TYPE */ if (INTP (number)) return (XINT (number) >= 0) ? number : make_int (- XINT (number)); @@ -687,7 +660,6 @@ return Fabs (wrong_type_argument (Qnumberp, number)); } -#ifdef LISP_FLOAT_TYPE DEFUN ("float", Ffloat, 1, 1, 0, /* Return the floating point number numerically equal to NUMBER. */ @@ -701,10 +673,7 @@ return Ffloat (wrong_type_argument (Qnumberp, number)); } -#endif /* LISP_FLOAT_TYPE */ - -#ifdef LISP_FLOAT_TYPE DEFUN ("logb", Flogb, 1, 1, 0, /* Return largest integer <= the base 2 log of the magnitude of NUMBER. This is the same as the exponent of a float. @@ -755,22 +724,18 @@ #endif /* ! HAVE_FREXP */ #endif /* ! HAVE_LOGB */ } -#endif /* LISP_FLOAT_TYPE */ - DEFUN ("ceiling", Fceiling, 1, 1, 0, /* Return the smallest integer no less than NUMBER. (Round toward +inf.) */ (number)) { -#ifdef LISP_FLOAT_TYPE if (FLOATP (number)) { double d; IN_FLOAT ((d = ceil (XFLOAT_DATA (number))), "ceiling", number); return (float_to_int (d, "ceiling", number, Qunbound)); } -#endif /* LISP_FLOAT_TYPE */ if (INTP (number)) return number; @@ -794,7 +759,6 @@ CHECK_INT_OR_FLOAT (divisor); -#ifdef LISP_FLOAT_TYPE if (FLOATP (number) || FLOATP (divisor)) { double f1 = extract_float (number); @@ -806,7 +770,6 @@ IN_FLOAT2 (f1 = floor (f1 / f2), "floor", number, divisor); return float_to_int (f1, "floor", number, divisor); } -#endif /* LISP_FLOAT_TYPE */ i1 = XINT (number); i2 = XINT (divisor); @@ -823,14 +786,12 @@ return (make_int (i1)); } -#ifdef LISP_FLOAT_TYPE if (FLOATP (number)) { double d; IN_FLOAT ((d = floor (XFLOAT_DATA (number))), "floor", number); return (float_to_int (d, "floor", number, Qunbound)); } -#endif /* LISP_FLOAT_TYPE */ return number; } @@ -840,7 +801,6 @@ */ (number)) { -#ifdef LISP_FLOAT_TYPE if (FLOATP (number)) { double d; @@ -848,7 +808,6 @@ IN_FLOAT ((d = emacs_rint (XFLOAT_DATA (number))), "round", number); return (float_to_int (d, "round", number, Qunbound)); } -#endif /* LISP_FLOAT_TYPE */ if (INTP (number)) return number; @@ -862,10 +821,8 @@ */ (number)) { -#ifdef LISP_FLOAT_TYPE if (FLOATP (number)) return float_to_int (XFLOAT_DATA (number), "truncate", number, Qunbound); -#endif /* LISP_FLOAT_TYPE */ if (INTP (number)) return number; @@ -874,8 +831,6 @@ } /* Float-rounding functions. */ -#ifdef LISP_FLOAT_TYPE -/* #if 1 It's not clear these are worth adding... */ DEFUN ("fceiling", Ffceiling, 1, 1, 0, /* Return the smallest integer no less than NUMBER, as a float. @@ -922,11 +877,7 @@ IN_FLOAT (d = ceil (d), "ftruncate", number); return make_float (d); } - -#endif /* LISP_FLOAT_TYPE (float-rounding functions) */ - -#ifdef LISP_FLOAT_TYPE #ifdef FLOAT_CATCH_SIGILL static SIGTYPE float_error (int signo) @@ -981,18 +932,14 @@ return 1; /* don't set errno or print a message */ } #endif /* HAVE_MATHERR */ -#endif /* LISP_FLOAT_TYPE */ - void init_floatfns_very_early (void) { -#ifdef LISP_FLOAT_TYPE # ifdef FLOAT_CATCH_SIGILL EMACS_SIGNAL (SIGILL, float_error); # endif in_float = 0; -#endif /* LISP_FLOAT_TYPE */ } void @@ -1002,14 +949,12 @@ /* Trig functions. */ -#ifdef LISP_FLOAT_TYPE DEFSUBR (Facos); DEFSUBR (Fasin); DEFSUBR (Fatan); DEFSUBR (Fcos); DEFSUBR (Fsin); DEFSUBR (Ftan); -#endif /* LISP_FLOAT_TYPE */ /* Bessel functions */ @@ -1032,35 +977,27 @@ /* Root and Log functions. */ -#ifdef LISP_FLOAT_TYPE DEFSUBR (Fexp); -#endif /* LISP_FLOAT_TYPE */ DEFSUBR (Fexpt); -#ifdef LISP_FLOAT_TYPE DEFSUBR (Flog); DEFSUBR (Flog10); DEFSUBR (Fsqrt); DEFSUBR (Fcube_root); -#endif /* LISP_FLOAT_TYPE */ /* Inverse trig functions. */ -#ifdef LISP_FLOAT_TYPE DEFSUBR (Facosh); DEFSUBR (Fasinh); DEFSUBR (Fatanh); DEFSUBR (Fcosh); DEFSUBR (Fsinh); DEFSUBR (Ftanh); -#endif /* LISP_FLOAT_TYPE */ /* Rounding functions */ DEFSUBR (Fabs); -#ifdef LISP_FLOAT_TYPE DEFSUBR (Ffloat); DEFSUBR (Flogb); -#endif /* LISP_FLOAT_TYPE */ DEFSUBR (Fceiling); DEFSUBR (Ffloor); DEFSUBR (Fround); @@ -1068,18 +1005,14 @@ /* Float-rounding functions. */ -#ifdef LISP_FLOAT_TYPE DEFSUBR (Ffceiling); DEFSUBR (Fffloor); DEFSUBR (Ffround); DEFSUBR (Fftruncate); -#endif /* LISP_FLOAT_TYPE */ } void vars_of_floatfns (void) { -#ifdef LISP_FLOAT_TYPE Fprovide (intern ("lisp-float-type")); -#endif } diff --text -u 'xemacs-21.5.9/src/fns.c' 'xemacs-21.5.10/src/fns.c' Index: ./src/fns.c --- ./src/fns.c Sat Aug 3 00:15:47 2002 +++ ./src/fns.c Thu Oct 24 22:55:49 2002 @@ -3546,13 +3546,15 @@ return feature; } -DEFUN ("require", Frequire, 1, 2, 0, /* +DEFUN ("require", Frequire, 1, 3, 0, /* If feature FEATURE is not loaded, load it from FILENAME. If FEATURE is not a member of the list `features', then the feature is not loaded; so load the file FILENAME. If FILENAME is omitted, the printname of FEATURE is used as the file name. +If optional third argument NOERROR is non-nil, then return nil if the file +is not found instead of signaling an error. */ - (feature, filename)) + (feature, filename, noerror)) { Lisp_Object tem; CHECK_SYMBOL (feature); @@ -3568,8 +3570,11 @@ record_unwind_protect (un_autoload, Vautoload_queue); Vautoload_queue = Qt; - call4 (Qload, NILP (filename) ? Fsymbol_name (feature) : filename, - Qnil, require_prints_loading_message ? Qrequire : Qt, Qnil); + tem = call4 (Qload, NILP (filename) ? Fsymbol_name (feature) : filename, + noerror, require_prints_loading_message ? Qrequire : Qt, Qnil); + /* If load failed entirely, return nil. */ + if (NILP (tem)) + return unbind_to_1 (speccount, Qnil); tem = Fmemq (feature, Vfeatures); if (NILP (tem)) diff --text -u 'xemacs-21.5.9/src/frame-msw.c' 'xemacs-21.5.10/src/frame-msw.c' Index: ./src/frame-msw.c --- ./src/frame-msw.c Sat Jul 6 14:48:21 2002 +++ ./src/frame-msw.c Sat Nov 30 17:10:25 2002 @@ -149,13 +149,14 @@ /* Misc frame stuff */ FRAME_MSWINDOWS_MENU_HASH_TABLE (f) = Qnil; #ifdef HAVE_TOOLBARS + /* EQ not EQUAL or we will get QUIT crashes, see below. */ FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE (f) = - make_lisp_hash_table (50, HASH_TABLE_NON_WEAK, HASH_TABLE_EQUAL); + make_lisp_hash_table (50, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); #endif - /* hashtable of instantiated glyphs on the frame. - make them EQ because we only use ints as keys. - otherwise we run into stickiness in redisplay because - internal_equal() can QUIT. */ + /* hashtable of instantiated glyphs on the frame. Make them EQ because + we only use ints as keys. Otherwise we run into stickiness in + redisplay because internal_equal() can QUIT. See + enter_redisplay_critical_section(). */ FRAME_MSWINDOWS_WIDGET_HASH_TABLE1 (f) = make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ); FRAME_MSWINDOWS_WIDGET_HASH_TABLE2 (f) = diff --text -u 'xemacs-21.5.9/src/frame-x.c' 'xemacs-21.5.10/src/frame-x.c' Index: ./src/frame-x.c --- ./src/frame-x.c Fri Jun 21 06:18:32 2002 +++ ./src/frame-x.c Wed Oct 2 18:31:19 2002 @@ -2644,14 +2644,14 @@ dpy = XtDisplay (FRAME_X_SHELL_WIDGET (f)); #ifdef EXTERNAL_WIDGET - expect_x_error (XtDisplay (FRAME_X_SHELL_WIDGET (f))); + expect_x_error (dpy); /* for obscure reasons having (I think) to do with the internal window-to-widget hierarchy maintained by Xt, we have to call XtUnrealizeWidget() here. Xt can really suck. */ if (f->being_deleted) XtUnrealizeWidget (FRAME_X_SHELL_WIDGET (f)); XtDestroyWidget (FRAME_X_SHELL_WIDGET (f)); - x_error_occurred_p (XtDisplay (FRAME_X_SHELL_WIDGET (f))); + x_error_occurred_p (dpy); #else XtDestroyWidget (FRAME_X_SHELL_WIDGET (f)); /* make sure the windows are really gone! */ diff --text -u 'xemacs-21.5.9/src/frame.c' 'xemacs-21.5.10/src/frame.c' Index: ./src/frame.c --- ./src/frame.c Mon Jul 29 18:21:20 2002 +++ ./src/frame.c Mon Dec 16 11:32:54 2002 @@ -118,7 +118,16 @@ Lisp_Object Qframe_being_created; static void store_minibuf_frame_prop (struct frame *f, Lisp_Object val); -static void frame_conversion_internal (struct frame *f, int pixel_to_char, + +typedef enum { + DISPLAYABLE_PIXEL_TO_CHAR, + TOTAL_PIXEL_TO_CHAR, + CHAR_TO_TOTAL_PIXEL, + CHAR_TO_DISPLAYABLE_PIXEL, +} pixel_to_char_mode_t; + +static void frame_conversion_internal (struct frame *f, + pixel_to_char_mode_t pixel_to_char, int *pixel_width, int *pixel_height, int *char_width, int *char_height, int real_face); @@ -647,11 +656,18 @@ { int depth = specpdl_depth (); + /* NOTE NOTE NOTE: Inside the redisplay critical section, every place + that could QUIT or call Lisp code needs to be wrapped, since GC + or a non-local exit will be fatal. The way to do this is with + call_trapping_problems(..., INHIBIT_GC), or the like. */ + #ifdef ERROR_CHECK_TRAPPING_PROBLEMS - /* force every call to QUIT to check for in_displayness */ + /* Force every call to QUIT to check for in_displayness. This will + verify proper wrapping, as in the previous comment, aborting if not. */ something_happened++; record_unwind_protect (commit_ritual_suicide, Qnil); #endif + begin_gc_forbidden (); in_display = 1; return depth; @@ -664,8 +680,8 @@ in_display = 0; -#ifdef ERROR_CHECK_TRAPPING_PROBLEMS unbind_to (depth); +#ifdef ERROR_CHECK_TRAPPING_PROBLEMS something_happened--; #endif @@ -2645,21 +2661,65 @@ DEFUN ("frame-pixel-height", Fframe_pixel_height, 0, 1, 0, /* -Return the height in pixels of FRAME. +Return the total height in pixels of FRAME. */ (frame)) { return make_int (decode_frame (frame)->pixheight); } +DEFUN ("frame-displayable-pixel-height", Fframe_displayable_pixel_height, 0, 1, 0, /* +Return the height of the displayable area in pixels of FRAME. +*/ + (frame)) +{ + struct frame *f = decode_frame (frame); + int height, pheight; + frame = wrap_frame (f); + + if (!window_system_pixelated_geometry (frame)) + { + height = FRAME_HEIGHT (f); + + frame_conversion_internal (f, CHAR_TO_DISPLAYABLE_PIXEL, + 0, &pheight, 0, &height, 0); + } + else + pheight = FRAME_PIXHEIGHT (f); + + return make_int (pheight); +} + DEFUN ("frame-pixel-width", Fframe_pixel_width, 0, 1, 0, /* -Return the width in pixels of FRAME. +Return the total width in pixels of FRAME. */ (frame)) { return make_int (decode_frame (frame)->pixwidth); } +DEFUN ("frame-displayable-pixel-width", Fframe_displayable_pixel_width, 0, 1, 0, /* +Return the width of the displayable area in pixels of FRAME. +*/ + (frame)) +{ + struct frame *f = decode_frame (frame); + int width, pwidth; + frame = wrap_frame (f); + + if (!window_system_pixelated_geometry (frame)) + { + width = FRAME_WIDTH (f); + + frame_conversion_internal (f, CHAR_TO_DISPLAYABLE_PIXEL, + &pwidth, 0, &width, 0, 0); + } + else + pwidth = FRAME_PIXWIDTH (f); + + return make_int (pwidth); +} + DEFUN ("frame-name", Fframe_name, 0, 1, 0, /* Return the name of FRAME (defaulting to the selected frame). This is not the same as the `title' of the frame. @@ -2723,7 +2783,7 @@ } DEFUN ("set-frame-pixel-height", Fset_frame_pixel_height, 2, 3, 0, /* -Specify that the frame FRAME is HEIGHT pixels tall. +Specify that the frame FRAME is a total of HEIGHT pixels tall. Optional third arg non-nil means that redisplay should be HEIGHT pixels tall but that the idea of the actual height of the frame should not be changed. */ @@ -2738,10 +2798,8 @@ { int h = XINT (height); width = FRAME_WIDTH (f); - /* Simply using pixel_to_real_char_size here is not good - enough since we end up with a total frame size of HEIGHT - rather than a displayable height of HEIGHT. */ - frame_conversion_internal (f, 2, 0, &h, 0, &pheight, 0); + + frame_conversion_internal (f, TOTAL_PIXEL_TO_CHAR, 0, &h, 0, &pheight, 0); } else { @@ -2753,6 +2811,35 @@ return frame; } +DEFUN ("set-frame-displayable-pixel-height", Fset_frame_displayable_pixel_height, 2, 3, 0, /* +Specify that the displayable area of frame FRAME is HEIGHT pixels tall. +Optional third arg non-nil means that redisplay should be HEIGHT pixels tall +but that the idea of the actual height of the frame should not be changed. +*/ + (frame, height, pretend)) +{ + struct frame *f = decode_frame (frame); + int pheight, width; + frame = wrap_frame (f); + CHECK_INT (height); + + if (!window_system_pixelated_geometry (frame)) + { + int h = XINT (height); + width = FRAME_WIDTH (f); + frame_conversion_internal (f, DISPLAYABLE_PIXEL_TO_CHAR, 0, &h, 0, &pheight, 0); + } + else + { + width = FRAME_PIXWIDTH (f); + pheight = XINT (height); + } + + internal_set_frame_size (f, width, pheight, !NILP (pretend)); + return frame; +} + + DEFUN ("set-frame-width", Fset_frame_width, 2, 3, 0, /* Specify that the frame FRAME has COLS columns. Optional third arg non-nil means that redisplay should use COLS columns @@ -2781,7 +2868,7 @@ } DEFUN ("set-frame-pixel-width", Fset_frame_pixel_width, 2, 3, 0, /* -Specify that the frame FRAME is WIDTH pixels wide. +Specify that the frame FRAME is a total of WIDTH pixels wide. Optional third arg non-nil means that redisplay should be WIDTH wide but that the idea of the actual height of the frame should not be changed. */ @@ -2796,10 +2883,35 @@ { int w = XINT (width); height = FRAME_HEIGHT (f); - /* Simply using pixel_to_real_char_size here is not good - enough since we end up with a total frame size of WIDTH - rather than a displayable height of WIDTH. */ - frame_conversion_internal (f, 2, &w, 0, &pwidth, 0, 0); + frame_conversion_internal (f, TOTAL_PIXEL_TO_CHAR, &w, 0, &pwidth, 0, 0); + } + else + { + height = FRAME_PIXHEIGHT (f); + pwidth = XINT (width); + } + + internal_set_frame_size (f, pwidth, height, !NILP (pretend)); + return frame; +} + +DEFUN ("set-frame-displayable-pixel-width", Fset_frame_displayable_pixel_width, 2, 3, 0, /* +Specify that the displayable area of frame FRAME is WIDTH pixels wide. +Optional third arg non-nil means that redisplay should be WIDTH wide +but that the idea of the actual height of the frame should not be changed. +*/ + (frame, width, pretend)) +{ + struct frame *f = decode_frame (frame); + int height, pwidth; + frame = wrap_frame (f); + CHECK_INT (width); + + if (!window_system_pixelated_geometry (frame)) + { + int w = XINT (width); + height = FRAME_HEIGHT (f); + frame_conversion_internal (f, DISPLAYABLE_PIXEL_TO_CHAR, &w, 0, &pwidth, 0, 0); } else { @@ -2837,7 +2949,36 @@ } DEFUN ("set-frame-pixel-size", Fset_frame_pixel_size, 3, 4, 0, /* -Set the size of FRAME to WIDTH by HEIGHT, measured in pixels. +Set the total size of FRAME to WIDTH by HEIGHT, measured in pixels. +Optional fourth arg non-nil means that redisplay should use WIDTH by HEIGHT +but that the idea of the actual size of the frame should not be changed. +*/ + (frame, width, height, pretend)) +{ + struct frame *f = decode_frame (frame); + int pheight, pwidth; + frame = wrap_frame (f); + CHECK_INT (width); + CHECK_INT (height); + + if (!window_system_pixelated_geometry (frame)) + { + int w = XINT (width); + int h = XINT (height); + frame_conversion_internal (f, TOTAL_PIXEL_TO_CHAR, &w, &h, &pwidth, &pheight, 0); + } + else + { + pheight = XINT (height); + pwidth = XINT (width); + } + + internal_set_frame_size (f, pwidth, pheight, !NILP (pretend)); + return frame; +} + +DEFUN ("set-frame-displayable-pixel-size", Fset_frame_displayable_pixel_size, 3, 4, 0, /* +Set the displayable size of FRAME to WIDTH by HEIGHT, measured in pixels. Optional fourth arg non-nil means that redisplay should use WIDTH by HEIGHT but that the idea of the actual size of the frame should not be changed. */ @@ -2853,10 +2994,7 @@ { int w = XINT (width); int h = XINT (height); - /* Simply using pixel_to_real_char_size here is not good enough - since we end up with a total frame size of WIDTH x HEIGHT - rather than a displayable height of WIDTH x HEIGHT. */ - frame_conversion_internal (f, 2, &w, &h, &pwidth, &pheight, 0); + frame_conversion_internal (f, DISPLAYABLE_PIXEL_TO_CHAR, &w, &h, &pwidth, &pheight, 0); } else { @@ -2892,7 +3030,8 @@ Function get_default_char_pixel_size() removed because it's exactly the same as default_face_height_and_width(). */ static void -frame_conversion_internal (struct frame *f, int pixel_to_char, +frame_conversion_internal (struct frame *f, + pixel_to_char_mode_t pixel_to_char, int *pixel_width, int *pixel_height, int *char_width, int *char_height, int real_face) @@ -2929,28 +3068,34 @@ #### Consider rounding up to 0.5 characters to avoid adding too much space. */ - if (pixel_to_char > 1) + switch (pixel_to_char) { + case DISPLAYABLE_PIXEL_TO_CHAR: if (char_width) *char_width = ROUND_UP (*pixel_width, cpw) / cpw; if (char_height) *char_height = ROUND_UP (*pixel_height, cph) / cph; - } - /* Convert to chars so that the total frame size is pixel_width x - pixel_height. */ - else if (pixel_to_char) - { + break; + case TOTAL_PIXEL_TO_CHAR: + /* Convert to chars so that the total frame size is pixel_width x + pixel_height. */ if (char_width) *char_width = 1 + ((*pixel_width - egw) - bdr - obw) / cpw; if (char_height) *char_height = (*pixel_height - bdr - obh) / cph; - } - else - { + break; + case CHAR_TO_TOTAL_PIXEL: if (pixel_width) *pixel_width = (*char_width - 1) * cpw + egw + bdr + obw; if (pixel_height) *pixel_height = *char_height * cph + bdr + obh; + break; + case CHAR_TO_DISPLAYABLE_PIXEL: + if (pixel_width) + *pixel_width = *char_width * cpw; + if (pixel_height) + *pixel_height = *char_height * cph; + break; } } @@ -2969,7 +3114,8 @@ pixel_to_char_size (struct frame *f, int pixel_width, int pixel_height, int *char_width, int *char_height) { - frame_conversion_internal (f, 1, &pixel_width, &pixel_height, char_width, + frame_conversion_internal (f, TOTAL_PIXEL_TO_CHAR, + &pixel_width, &pixel_height, char_width, char_height, 0); } @@ -2985,7 +3131,8 @@ char_to_pixel_size (struct frame *f, int char_width, int char_height, int *pixel_width, int *pixel_height) { - frame_conversion_internal (f, 0, pixel_width, pixel_height, &char_width, + frame_conversion_internal (f, CHAR_TO_TOTAL_PIXEL, + pixel_width, pixel_height, &char_width, &char_height, 0); } @@ -3008,7 +3155,8 @@ pixel_to_real_char_size (struct frame *f, int pixel_width, int pixel_height, int *char_width, int *char_height) { - frame_conversion_internal (f, 1, &pixel_width, &pixel_height, char_width, + frame_conversion_internal (f, TOTAL_PIXEL_TO_CHAR, + &pixel_width, &pixel_height, char_width, char_height, 1); } @@ -3016,7 +3164,8 @@ char_to_real_pixel_size (struct frame *f, int char_width, int char_height, int *pixel_width, int *pixel_height) { - frame_conversion_internal (f, 0, pixel_width, pixel_height, &char_width, + frame_conversion_internal (f, CHAR_TO_TOTAL_PIXEL, + pixel_width, pixel_height, &char_width, &char_height, 1); } @@ -3494,15 +3643,20 @@ DEFSUBR (Fframe_properties); DEFSUBR (Fset_frame_properties); DEFSUBR (Fframe_pixel_height); + DEFSUBR (Fframe_displayable_pixel_height); DEFSUBR (Fframe_pixel_width); + DEFSUBR (Fframe_displayable_pixel_width); DEFSUBR (Fframe_name); DEFSUBR (Fframe_modified_tick); DEFSUBR (Fset_frame_height); DEFSUBR (Fset_frame_width); DEFSUBR (Fset_frame_size); DEFSUBR (Fset_frame_pixel_height); + DEFSUBR (Fset_frame_displayable_pixel_height); DEFSUBR (Fset_frame_pixel_width); + DEFSUBR (Fset_frame_displayable_pixel_width); DEFSUBR (Fset_frame_pixel_size); + DEFSUBR (Fset_frame_displayable_pixel_size); DEFSUBR (Fset_frame_position); DEFSUBR (Fset_frame_pointer); DEFSUBR (Fprint_job_page_number); diff --text -u 'xemacs-21.5.9/src/glyphs-widget.c' 'xemacs-21.5.10/src/glyphs-widget.c' Index: ./src/glyphs-widget.c --- ./src/glyphs-widget.c Fri Jun 21 06:18:34 2002 +++ ./src/glyphs-widget.c Thu Oct 24 23:19:36 2002 @@ -68,6 +68,7 @@ static void widget_query_string_geometry (Lisp_Object string, Lisp_Object face, int *width, int *height, Lisp_Object domain); +#define BORDER_FIDDLE_FACTOR 10 #ifdef DEBUG_WIDGETS int debug_widget_instances; #endif @@ -1301,8 +1302,7 @@ characters and logical units so that frames can be sized appropriately. */ -/* Query the geometry of a layout widget. We assume that we can only - get here if the size is not already fixed. */ +/* Query the geometry of a layout widget. */ static void layout_query_geometry (Lisp_Object image_instance, int* width, int* height, enum image_instance_geometry disp, @@ -1335,6 +1335,9 @@ glyph_query_geometry (XCAR (items), &gwidth, &gheight, disp, image_instance); ph_adjust = gheight; + /* Include text width in vertical layouts. */ + if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) == LAYOUT_VERTICAL) + maxpw = gwidth + BORDER_FIDDLE_FACTOR; items = XCDR (items); } @@ -1359,46 +1362,50 @@ /* Work out minimum space we need to fit all the items. This could have been fixed by the user. */ - if (!NILP (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii))) - { - Lisp_Object dynamic_width = - eval_within_redisplay (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii)); - if (INTP (dynamic_width)) - *width = XINT (dynamic_width); - } - else if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) == LAYOUT_HORIZONTAL) - { - *width = maxpw + ((nitems + 1) * widget_instance_border_width (ii) + - IMAGE_INSTANCE_MARGIN_WIDTH (ii)) * 2; - } - else - { - *width = maxpw + 2 * (widget_instance_border_width (ii) * 2 + - IMAGE_INSTANCE_MARGIN_WIDTH (ii)); - } - + if (IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii)) { + if (!NILP (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii))) + { + Lisp_Object dynamic_width = + Feval (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii)); + if (INTP (dynamic_width)) + *width = XINT (dynamic_width); + } + else if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) == LAYOUT_HORIZONTAL) + { + *width = maxpw + ((nitems + 1) * widget_instance_border_width (ii) + + IMAGE_INSTANCE_MARGIN_WIDTH (ii)) * 2; + } + else + { + *width = maxpw + 2 * (widget_instance_border_width (ii) * 2 + + IMAGE_INSTANCE_MARGIN_WIDTH (ii)); + } + } + /* Work out vertical spacings. */ - if (!NILP (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii))) - { - Lisp_Object dynamic_height = - eval_within_redisplay (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii)); - if (INTP (dynamic_height)) - *height = XINT (dynamic_height); - } - else if (IMAGE_INSTANCE_SUBWINDOW_LOGICAL_LAYOUT (ii)) - { - *height = nitems * luh + ph_adjust; - } - else if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) == LAYOUT_VERTICAL) - { - *height = maxph + ((nitems + 1) * widget_instance_border_width (ii) + - IMAGE_INSTANCE_MARGIN_WIDTH (ii)) * 2 + ph_adjust; - } - else - { - *height = maxph + (2 * widget_instance_border_width (ii) + - IMAGE_INSTANCE_MARGIN_WIDTH (ii)) * 2 + ph_adjust; - } + if (IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii)) { + if (!NILP (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii))) + { + Lisp_Object dynamic_height = + Feval (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii)); + if (INTP (dynamic_height)) + *height = XINT (dynamic_height); + } + else if (IMAGE_INSTANCE_SUBWINDOW_LOGICAL_LAYOUT (ii)) + { + *height = nitems * luh + ph_adjust; + } + else if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) == LAYOUT_VERTICAL) + { + *height = maxph + ((nitems + 1) * widget_instance_border_width (ii) + + IMAGE_INSTANCE_MARGIN_WIDTH (ii)) * 2 + ph_adjust; + } + else + { + *height = maxph + (2 * widget_instance_border_width (ii) + + IMAGE_INSTANCE_MARGIN_WIDTH (ii)) * 2 + ph_adjust; + } + } #ifdef DEBUG_WIDGET_OUTPUT stderr_out ("layout wants %dx%d\n", *width, *height); #endif @@ -1445,7 +1452,7 @@ IMAGE_INSTANCE_LAYOUT_BORDER (ii) = make_int (gheight / 2); /* #### Really, what should this be? */ - glyph_do_layout (border, gwidth, gheight, 10, 0, + glyph_do_layout (border, gwidth, gheight, BORDER_FIDDLE_FACTOR, 0, image_instance); } diff --text -u 'xemacs-21.5.9/src/glyphs-x.c' 'xemacs-21.5.10/src/glyphs-x.c' Index: ./src/glyphs-x.c --- ./src/glyphs-x.c Wed Jul 31 19:23:39 2002 +++ ./src/glyphs-x.c Mon Nov 18 15:52:39 2002 @@ -142,17 +142,16 @@ Lisp_Object domain); #ifdef HAVE_X_WIDGETS -static void -update_widget_face (widget_value* wv, - Lisp_Image_Instance* ii, Lisp_Object domain); -static void -update_tab_widget_face (widget_value* wv, - Lisp_Image_Instance* ii, Lisp_Object domain); -#endif -void -emacs_Xt_handle_widget_losing_focus (struct frame* f, Widget losing_widget); -void -enqueue_focus_event (Widget wants_it, Lisp_Object frame, int in_p); +static void update_widget_face (widget_value* wv, + Lisp_Image_Instance* ii, Lisp_Object domain); +static void update_tab_widget_face (widget_value* wv, + Lisp_Image_Instance* ii, + Lisp_Object domain); +#endif +void emacs_Xt_handle_widget_losing_focus (struct frame* f, + Widget losing_widget); +void emacs_Xt_enqueue_focus_event (Widget wants_it, Lisp_Object frame, + int in_p); #include "bitmaps.h" @@ -2081,13 +2080,14 @@ if (!IMAGE_INSTANCE_SUBWINDOW_DISPLAYEDP (p)) XtMapWidget (IMAGE_INSTANCE_X_CLIPWIDGET (p)); /* See comments in glyphs-msw.c about keyboard focus. */ - if (IMAGE_INSTANCE_WANTS_INITIAL_FOCUS (p)) { - /* #### FIXME to pop-up the find dialog we map the text-field - seven times! This doesn't show on a fast linux box but does - under X on windows. */ - enqueue_focus_event (IMAGE_INSTANCE_X_WIDGET_ID (p), - IMAGE_INSTANCE_FRAME (p), 1); - } + if (IMAGE_INSTANCE_WANTS_INITIAL_FOCUS (p)) + { + /* #### FIXME to pop-up the find dialog we map the text-field + seven times! This doesn't show on a fast linux box but does + under X on windows. */ + emacs_Xt_enqueue_focus_event (IMAGE_INSTANCE_X_WIDGET_ID (p), + IMAGE_INSTANCE_FRAME (p), 1); + } } } diff --text -u 'xemacs-21.5.9/src/glyphs.h' 'xemacs-21.5.10/src/glyphs.h' Index: ./src/glyphs.h --- ./src/glyphs.h Fri Jun 21 06:18:35 2002 +++ ./src/glyphs.h Mon Nov 18 15:52:39 2002 @@ -1004,12 +1004,11 @@ extern Lisp_Object Qxpm, Qxface, Qetched_in, Qetched_out, Qbevel_in, Qbevel_out; extern Lisp_Object Q_data, Q_file, Q_color_symbols, Qconst_glyph_variable; extern Lisp_Object Qxbm, Qedit_field, Qgroup, Qlabel, Qcombo_box, Qscrollbar; -extern Lisp_Object Qtree_view, Qtab_control, Qprogress_gauge, Q_border; +extern Lisp_Object Qtree_view, Qtab_control, Qprogress_gauge; extern Lisp_Object Q_mask_file, Q_mask_data, Q_hotspot_x, Q_hotspot_y; -extern Lisp_Object Q_foreground, Q_background, Q_face, Q_descriptor, Q_group; -extern Lisp_Object Q_width, Q_height, Q_pixel_width, Q_pixel_height, Q_text; -extern Lisp_Object Q_items, Q_properties, Q_image, Qimage_conversion_error; -extern Lisp_Object Q_orientation, Q_margin_width; +extern Lisp_Object Q_foreground, Q_background, Q_face, Q_group; +extern Lisp_Object Q_pixel_width, Q_pixel_height; +extern Lisp_Object Qimage_conversion_error; extern Lisp_Object Vcontinuation_glyph, Vcontrol_arrow_glyph, Vhscroll_glyph; extern Lisp_Object Vinvisible_text_glyph, Voctal_escape_glyph, Vtruncation_glyph; extern Lisp_Object Vxemacs_logo; diff --text -u 'xemacs-21.5.9/src/inline.c' 'xemacs-21.5.10/src/inline.c' Index: ./src/inline.c --- ./src/inline.c Fri Jun 28 07:50:29 2002 +++ ./src/inline.c Wed Sep 11 00:27:37 2002 @@ -67,12 +67,12 @@ #include "syntax.h" #include "window.h" -#ifdef HAVE_LDAP -#include "eldap.h" +#if defined (HAVE_LDAP) && !defined (HAVE_SHLIB) +#include "../modules/ldap/eldap.h" #endif -#ifdef HAVE_POSTGRESQL -#include "postgresql.h" +#if defined (HAVE_POSTGRESQL) && !defined (HAVE_SHLIB) +#include "../modules/postgresql/postgresql.h" #endif #ifdef HAVE_TOOLBARS diff --text -u 'xemacs-21.5.9/src/intl-auto-encap-win32.c' 'xemacs-21.5.10/src/intl-auto-encap-win32.c' Index: ./src/intl-auto-encap-win32.c --- ./src/intl-auto-encap-win32.c Mon May 6 23:15:41 2002 +++ ./src/intl-auto-encap-win32.c Mon Nov 18 15:52:39 2002 @@ -1407,14 +1407,7 @@ return DdeInitializeA (pidInst, pfnCallback, afCmd, ulRes); } -HSZ -qxeDdeCreateStringHandle (DWORD idInst, const Extbyte * psz, int iCodePage) -{ - if (XEUNICODE_P) - return DdeCreateStringHandleW (idInst, (LPCWSTR) psz, iCodePage); - else - return DdeCreateStringHandleA (idInst, (LPCSTR) psz, iCodePage); -} +/* Skipping DdeCreateStringHandle because error in Cygwin prototype */ DWORD qxeDdeQueryString (DWORD idInst, HSZ hsz, Extbyte * psz, DWORD cchMax, int iCodePage) diff --text -u 'xemacs-21.5.9/src/intl-auto-encap-win32.h' 'xemacs-21.5.10/src/intl-auto-encap-win32.h' Index: ./src/intl-auto-encap-win32.h --- ./src/intl-auto-encap-win32.h Mon May 6 23:15:43 2002 +++ ./src/intl-auto-encap-win32.h Mon Nov 18 15:52:39 2002 @@ -1003,11 +1003,7 @@ #endif UINT qxeDdeInitialize (LPDWORD pidInst, PFNCALLBACK pfnCallback, DWORD afCmd, DWORD ulRes); -#ifdef ERROR_WHEN_NONINTERCEPTED_FUNS_USED -#undef DdeCreateStringHandle -#define DdeCreateStringHandle error use qxeDdeCreateStringHandle or DdeCreateStringHandleA/DdeCreateStringHandleW -#endif -HSZ qxeDdeCreateStringHandle (DWORD idInst, const Extbyte * psz, int iCodePage); +/* Skipping DdeCreateStringHandle because error in Cygwin prototype */ #ifdef ERROR_WHEN_NONINTERCEPTED_FUNS_USED #undef DdeQueryString diff --text -u 'xemacs-21.5.9/src/intl-encap-win32.c' 'xemacs-21.5.10/src/intl-encap-win32.c' Index: ./src/intl-encap-win32.c --- ./src/intl-encap-win32.c Fri Jun 21 06:18:36 2002 +++ ./src/intl-encap-win32.c Mon Nov 18 15:52:39 2002 @@ -898,7 +898,7 @@ file DDEML.H yes DdeInitialize -yes DdeCreateStringHandle +skip DdeCreateStringHandle error in Cygwin prototype yes DdeQueryString // #### split-sized (or split-simple??? not completely obvious) structure MONHSZSTRUCT, used when DDE event MF_HSZ_INFO is sent as part of the XTYP_MONITOR transaction sent to a DDE callback; not yet handled @@ -1282,6 +1282,16 @@ return RegConnectRegistryA ((LPSTR) lpMachineName, hKey, phkResult); } +HSZ +qxeDdeCreateStringHandle (DWORD idInst, const Extbyte * psz, int iCodePage) +{ + /* Cygwin mistakenly omits const in second argument. */ + if (XEUNICODE_P) + return DdeCreateStringHandleW (idInst, (LPWSTR) psz, iCodePage); + else + return DdeCreateStringHandleA (idInst, (LPSTR) psz, iCodePage); +} + /* NOTE: NT 4.0+ only */ UINT qxeExtractIconEx (const Extbyte * lpszFile, int nIconIndex, HICON FAR * phiconLarge, HICON FAR * phiconSmall, UINT nIcons) diff --text -u 'xemacs-21.5.9/src/intl-win32.c' 'xemacs-21.5.10/src/intl-win32.c' Index: ./src/intl-win32.c --- ./src/intl-win32.c Fri Jun 21 06:18:36 2002 +++ ./src/intl-win32.c Mon Nov 18 15:52:40 2002 @@ -1300,7 +1300,9 @@ return Qnil; } -Lisp_Object +#if 0 /* Unused */ + +static Lisp_Object mswindows_get_registry_charset (Ibyte *registry) { Lisp_Object charset_tail; @@ -1321,6 +1323,8 @@ return charset; } +#endif /* 0 */ + #if 0 /* #### from Emacs 20.6; consider porting */ @@ -1610,7 +1614,38 @@ #ifdef CYGWIN -/* based on newlib strncpy, strcpy */ +/* based on newlib str*() */ + +#ifndef HAVE_WCSCMP + +int +wcscmp (const wchar_t *s1, const wchar_t *s2) +{ + while (*s1 != '\0' && *s1 == *s2) + { + s1++; + s2++; + } + + return *s1 - *s2; +} + +#endif /* not HAVE_WCSCMP */ + +#ifndef HAVE_WCSLEN + +size_t +wcslen (const wchar_t *str) +{ + const wchar_t *start = str; + + while (*str) + str++; + + return str - start; +} + +#endif /* not HAVE_WCSLEN */ wchar_t * wcsncpy (wchar_t *dst0, const wchar_t *src0, size_t count) diff --text -u 'xemacs-21.5.9/src/lisp-disunion.h' 'xemacs-21.5.10/src/lisp-disunion.h' Index: ./src/lisp-disunion.h --- ./src/lisp-disunion.h Wed Jun 5 18:56:16 2002 +++ ./src/lisp-disunion.h Mon Nov 18 15:52:40 2002 @@ -100,8 +100,6 @@ #define make_int(x) ((Lisp_Object) (((x) << INT_GCBITS) | Lisp_Type_Int_Bit)) -#define volatile_make_int(x) make_int (x) - #define make_char_1(x) ((Lisp_Object) (((x) << GCBITS) | Lisp_Type_Char)) #define INTP(x) ((EMACS_UINT)(x) & Lisp_Type_Int_Bit) diff --text -u 'xemacs-21.5.9/src/lisp-union.h' 'xemacs-21.5.10/src/lisp-union.h' Index: ./src/lisp-union.h --- ./src/lisp-union.h Wed Jun 5 18:56:17 2002 +++ ./src/lisp-union.h Mon Nov 18 15:52:40 2002 @@ -111,33 +111,6 @@ return obj; } -#ifdef __cplusplus - -#define volatile_make_int(val) make_int (val) - -#else - -/* Ugh, need different definition to avoid compiler complaint in - unix_send_process(). Furthermore, there's no way under C++, it seems, - to declare something volatile and then return it. Perhaps I'd have to - assign to something else instead? But in any case, the warnings about - volatile clobbering doesn't occur in C++. I bet the thing is that C++ - already has a built-in system for dealing with non-local exits and such, - in a smart way that doesn't clobber registers, and incorporates - longjmp() into that. */ -DECLARE_INLINE_HEADER ( -Lisp_Object -volatile_make_int (EMACS_INT val) -) -{ - volatile Lisp_Object obj; - obj.s.bits = 1; - obj.s.val = val; - return obj; -} - -#endif /* __cplusplus */ - DECLARE_INLINE_HEADER ( Lisp_Object make_char_1 (Ichar val) diff --text -u 'xemacs-21.5.9/src/lisp.h' 'xemacs-21.5.10/src/lisp.h' Index: ./src/lisp.h --- ./src/lisp.h Fri Aug 30 17:05:32 2002 +++ ./src/lisp.h Wed Nov 27 16:15:13 2002 @@ -782,6 +782,27 @@ #define max(a,b) (((a) > (b)) ? (a) : (b)) #endif +/* Sim, senhor, prefiro toma-lo no cu. + + Regular C complains about possible clobbering of local vars NOT declared + as volatile if there's a longjmp() in a function. C++ complains if such + vars ARE volatile; or more correctly, sans volatile no problem even when + you longjmp, avec volatile you get unfixable compile errors like + +/src/xemacs/lilfix/src/process-unix.c: In function `void + unix_send_process(Lisp_Object, lstream*)': +/src/xemacs/lilfix/src/process-unix.c:1577: no matching function for call to ` + Lisp_Object::Lisp_Object(volatile Lisp_Object&)' +/src/xemacs/lilfix/src/lisp-union.h:32: candidates are: + Lisp_Object::Lisp_Object(const Lisp_Object&) +*/ + +#ifdef __cplusplus +#define VOLATILE_IF_NOT_CPP +#else +#define VOLATILE_IF_NOT_CPP volatile +#endif + #ifndef PRINTF_ARGS # if defined (__GNUC__) && (__GNUC__ >= 2) # define PRINTF_ARGS(string_index,first_to_check) \ @@ -1205,6 +1226,18 @@ #define Dynarr_delete_by_pointer(d, p) \ Dynarr_delete_many (d, (p) - ((d)->base), 1) +#define Dynarr_delete_object(d, el) \ +do { \ + if (d != NULL) { \ + REGISTER int i; \ + for (i = Dynarr_length (d) - 1; i >= 0; i--) { \ + if (el == Dynarr_at (d, i)) { \ + Dynarr_delete_many (d, i, 1); \ + } \ + } \ + } \ +} while (0) + #ifdef MEMORY_USAGE_STATS struct overhead_stats; Bytecount Dynarr_memory_usage (void *d, struct overhead_stats *stats); @@ -2357,8 +2390,6 @@ /*------------------------------ float ---------------------------------*/ -#ifdef LISP_FLOAT_TYPE - /* Note: the 'unused_next_' field exists only to ensure that the `next' pointer fits within the structure, for the purposes of the free list. This makes a difference in the unlikely case of @@ -2395,20 +2426,6 @@ # define INT_OR_FLOATP(x) (INTP (x) || FLOATP (x)) -#else /* not LISP_FLOAT_TYPE */ - -#define XFLOAT(x) --- error! No float support. --- -#define FLOATP(x) 0 -#define CHECK_FLOAT(x) --- error! No float support. --- -#define CONCHECK_FLOAT(x) --- error! No float support. --- - -#define XFLOATINT(n) XINT(n) -#define CHECK_INT_OR_FLOAT CHECK_INT -#define CONCHECK_INT_OR_FLOAT CONCHECK_INT -#define INT_OR_FLOATP(x) INTP (x) - -#endif /* not LISP_FLOAT_TYPE */ - /*-------------------------------- int ---------------------------------*/ #define ZEROP(x) EQ (x, Qzero) @@ -2769,7 +2786,8 @@ lrecord_type_subr, /* lrecord_type_index */ \ 1, /* mark bit */ \ 1, /* c_readonly bit */ \ - 1 /* lisp_readonly bit */ \ + 1, /* lisp_readonly bit */ \ + 0 /* unused */ \ }, \ min_args, \ max_args, \ @@ -2825,6 +2843,18 @@ /* Checking for QUIT */ /************************************************************************/ +/* NOTE NOTE NOTE: Invoking QUIT can cause random Lisp code to be executed! + This can happen in numerous ways. For example, on many platforms, QUIT + needs to drain the event queue to see whether there's a C-g in the works. + A side effect of this is that, if there's a menu-press event, menu filters + (i.e. Lisp code) will be invoked. Lisp code could also happen if there's + an asynchronous timeout, or if the debugger is invoked as a result of + debug-on-quit and the user returns by hitting `r', etc. etc. + + However, GC CANNOT HAPPEN. It is forbidden everywhere within the QUIT- + processing code, because most callers cannot tolerate GC during QUIT + since it's just too prevalent. */ + /* The exact workings of this mechanism are described in detail in signal.c. */ /* Asynchronous events set something_happened, and then are processed @@ -2841,7 +2871,6 @@ void signal_quit (void); -extern int dont_check_for_quit; int begin_dont_check_for_quit (void); int begin_do_check_for_quit (void); @@ -2880,8 +2909,9 @@ However, this mechanism is inherently approximate, so it really doesn't matter much.) In the future, it might also include doing a thread context switch. Callers of QUITP generally don't except - random side effects to happen, so we have this different - version. */ + random side effects to happen (#### unfortunately, random side effects + can happen anyway, e.g. through menu filters -- see comment above), + so we have this different version. */ #define INTERNAL_QUITP \ ((something_happened ? check_what_happened () : (void) 0), \ QUIT_FLAG_SAYS_SHOULD_QUIT) @@ -2988,6 +3018,16 @@ NNGCPROn(). If you need to nest yet another level, create the appropriate macros. */ +/* NOTE: About comments like "This function does not GC": These are there to + try to track whether GCPROing is necessary. Strictly speaking, some + functions that say this might actually GC, but only when it is never + possible to return (more specifically, in the process of signalling an + error, the debugger may be invoked, and could GC). For GCPRO purposes, + you only have to worry about functions that can GC and then return. + The QUIT macro cannot GC any more, although this wasn't true at some point, + and so some "This function can GC" comments may be inaccurate. +*/ + #ifdef DEBUG_GCPRO void debug_gcpro1 (char *, int, struct gcpro *, Lisp_Object *); @@ -3232,6 +3272,11 @@ #define staticpro(ptr) staticpro_1 (ptr, #ptr) #define staticpro_nodump(ptr) staticpro_nodump_1 (ptr, #ptr) +#ifdef HAVE_SHLIB +void unstaticpro_nodump_1 (Lisp_Object *, char *); +#define unstaticpro_nodump(ptr) unstaticpro_nodump_1 (ptr, #ptr) +#endif + #else /* Call staticpro (&var) to protect static variable `var'. */ @@ -3241,6 +3286,11 @@ /* var will not be saved at dump time */ void staticpro_nodump (Lisp_Object *); +#ifdef HAVE_SHLIB +/* Call unstaticpro_nodump (&var) to stop protecting static variable `var'. */ +void unstaticpro_nodump (Lisp_Object *); +#endif + #endif void register_post_gc_action (void (*fun) (void *), void *arg); @@ -3445,7 +3495,6 @@ extern int find_file_compare_truenames; extern int find_file_use_truenames; Ibyte *get_initial_directory (Ibyte *pathname, Bytecount size); -extern Lisp_Object Vbuffer_alist; void set_buffer_internal (struct buffer *b); struct buffer *decode_buffer (Lisp_Object buffer, int allow_string); @@ -3658,6 +3707,7 @@ /* Defined in emacs.c */ EXFUN (Fkill_emacs, 1); EXFUN (Frunning_temacs_p, 0); +EXFUN (Fforce_debugging_signal, 1); SIGTYPE fatal_error_signal (int); Lisp_Object make_arg_list (int, Extbyte **); @@ -3678,9 +3728,11 @@ void zero_out_command_line_status_vars (void); /* Defined in emodules.c */ +#ifdef HAVE_SHLIB EXFUN (Flist_modules, 0); EXFUN (Fload_module, 3); - +extern int unloading_module; +#endif /* Defined in eval.c */ EXFUN (Fapply, MANY); @@ -4068,9 +4120,6 @@ extern Lisp_Object Vfile_name_coding_system, Vkeyboard_coding_system; extern Lisp_Object Vterminal_coding_system; extern Lisp_Object Qcanonicalize_after_coding; -void init_charset_unicode_tables (Lisp_Object charset); -void free_charset_unicode_tables (Lisp_Object charset); -void recalculate_unicode_precedence (void); int coding_system_is_for_text_file (Lisp_Object coding_system); Lisp_Object find_coding_system_for_text_file (Lisp_Object name, int eol_wrap); Lisp_Object get_coding_system_for_text_file (Lisp_Object name, int eol_wrap); @@ -4984,8 +5033,9 @@ extern Lisp_Object Qend_of_buffer, Qend_of_file, Qend_open, Qerror; extern Lisp_Object Qerror_conditions, Qerror_lacks_explanatory_string; extern Lisp_Object Qerror_message, Qevent_live_p, Qexit, Qextent_live_p; -extern Lisp_Object Qexternal_debugging_output, Qfeaturep, Qfile_error, Qfinal; -extern Lisp_Object Qforeground, Qformat, Qframe_live_p, Qgraphic, Qgtk; +extern Lisp_Object Qexternal_debugging_output, Qfeaturep, Qfile_error; +extern Lisp_Object Qfile_name_sans_extension, Qfinal; +extern Lisp_Object Qforeground, Qformat, Qframe_live_p, Qgraphic; extern Lisp_Object Qgui_error, Qicon_glyph_p, Qidentity, Qinhibit_quit; extern Lisp_Object Qinhibit_read_only, Qinteger_char_or_marker_p; extern Lisp_Object Qinteger_or_char_p, Qinteger_or_marker_p, Qintegerp; @@ -4993,13 +5043,13 @@ extern Lisp_Object Qinvalid_byte_code, Qinvalid_change, Qinvalid_constant; extern Lisp_Object Qinvalid_function, Qinvalid_operation; extern Lisp_Object Qinvalid_read_syntax, Qinvalid_state, Qio_error, Qlambda; -extern Lisp_Object Qlayout, Qlist_formation_error, Qlistp, Qload, Qlock_shift; +extern Lisp_Object Qlayout, Qlist_formation_error, Qlistp, Qload; extern Lisp_Object Qlong_name, Qmacro, Qmakunbound, Qmalformed_list; -extern Lisp_Object Qmalformed_property_list, Qmark; +extern Lisp_Object Qmalformed_property_list, Qmark, Qmodule; extern Lisp_Object Qmono_pixmap_image_instance_p, Qmouse_leave_buffer_hook; extern Lisp_Object Qnative_layout, Qnatnump, Qnetwork_error, Qno_catch; extern Lisp_Object Qnothing_image_instance_p, Qnumber_char_or_marker_p; -extern Lisp_Object Qnumberp, Qout_of_memory, Qoutput_charset_conversion; +extern Lisp_Object Qnumberp, Qout_of_memory; extern Lisp_Object Qoverflow_error, Qpoint, Qpointer_glyph_p; extern Lisp_Object Qpointer_image_instance_p, Qprint_length; extern Lisp_Object Qprint_string_length, Qprinting_unreadable_object; diff --text -u 'xemacs-21.5.9/src/lread.c' 'xemacs-21.5.10/src/lread.c' Index: ./src/lread.c --- ./src/lread.c Sat Aug 3 00:35:54 2002 +++ ./src/lread.c Wed Nov 27 16:15:13 2002 @@ -89,6 +89,14 @@ int load_warn_when_source_only; /* Whether Fload_internal() should ignore .elc files when no suffix is given */ int load_ignore_elc_files; +/* Whether Fload_internal() should ignore out-of-date .elc files when no + suffix is given */ +int load_ignore_out_of_date_elc_files; +/* Always display messages showing when a file is loaded, regardless of + whether the flag to `load' tries to suppress them. */ +int load_always_display_messages; +/* Show the full path in loading messages. */ +int load_show_full_path_in_messages; /* Search path for files to be loaded. */ Lisp_Object Vload_path; @@ -199,6 +207,7 @@ static int saved_doc_string_position; #endif +static int locate_file_open_or_access_file (Ibyte *fn, int access_mode); EXFUN (Fread_from_string, 3); /* When errors are signaled, the actual readcharfun should not be used @@ -482,18 +491,22 @@ int fd = -1; int speccount = specpdl_depth (); int source_only = 0; + /* NEWER and OLDER are filenames w/o directory, used in loading messages + to e.g. warn of newer .el files when the .elc is being loaded. */ Lisp_Object newer = Qnil; + Lisp_Object older = Qnil; Lisp_Object handler = Qnil; Lisp_Object found = Qnil; - struct gcpro gcpro1, gcpro2, gcpro3; + struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; int reading_elc = 0; int from_require = EQ (nomessage, Qrequire); - int message_p = NILP (nomessage) || from_require; + int message_p = + NILP (nomessage) || from_require || load_always_display_messages; /*#ifdef DEBUG_XEMACS*/ static Lisp_Object last_file_loaded; /*#endif*/ struct stat s1, s2; - GCPRO3 (file, newer, found); + GCPRO4 (file, newer, older, found); CHECK_STRING (file); @@ -551,10 +564,9 @@ /* The omniscient JWZ thinks this is worthless, but I beg to differ. --ben */ if (load_ignore_elc_files) - { - newer = Ffile_name_nondirectory (found); - } - else if (load_warn_when_source_newer && + newer = Ffile_name_nondirectory (found); + else if ((load_warn_when_source_newer || + load_ignore_out_of_date_elc_files) && !memcmp (".elc", foundstr + foundlen - 4, 4)) { if (! qxe_fstat (fd, &s1)) /* can't fail, right? */ @@ -565,14 +577,28 @@ result = qxe_stat (foundstr, &s2); if (result >= 0 && (unsigned) s1.st_mtime < (unsigned) s2.st_mtime) - { - Lisp_Object newer_name = make_string (foundstr, - foundlen - 1); - struct gcpro nngcpro1; - NNGCPRO1 (newer_name); - newer = Ffile_name_nondirectory (newer_name); - NNUNGCPRO; - } + { + /* .elc exists and is out-of-date wrt .el */ + Lisp_Object el_name = make_string (foundstr, foundlen - 1); + struct gcpro nngcpro1; + NNGCPRO1 (el_name); + newer = Ffile_name_nondirectory (el_name); + if (load_ignore_out_of_date_elc_files) + { + int newfd = + locate_file_open_or_access_file + (XSTRING_DATA (el_name), -1); + + if (newfd >= 0) + { + older = Ffile_name_nondirectory (found); + found = el_name; + retry_close (fd); + fd = newfd; + } + } + NNUNGCPRO; + } /* put the 'c' back on (kludge-o-rama) */ foundstr[foundlen - 1] = 'c'; } @@ -584,30 +610,43 @@ memcmp (".el", XSTRING_DATA (file) + XSTRING_LENGTH (file) - 3, 3)) - { - source_only = 1; - } + source_only = 1; if (!memcmp (".elc", foundstr + foundlen - 4, 4)) reading_elc = 1; } -#define PRINT_LOADING_MESSAGE_1(loading, done) do { \ - if (load_ignore_elc_files) \ - { \ - if (message_p) \ - message (loading done, XSTRING_DATA (newer)); \ - } \ - else if (!NILP (newer)) \ - message (loading done " (file %s is newer)", \ - XSTRING_DATA (file), \ - XSTRING_DATA (newer)); \ - else if (source_only) \ - message (loading done " (file %s.elc does not exist)", \ - XSTRING_DATA (file), \ - XSTRING_DATA (Ffile_name_nondirectory (file))); \ - else if (message_p) \ - message (loading done, XSTRING_DATA (file)); \ +#define PRINT_LOADING_MESSAGE_1(loading, done) \ + do { \ + if (load_ignore_elc_files) \ + { \ + if (message_p) \ + message (loading done, \ + XSTRING_DATA (load_show_full_path_in_messages ? \ + found : newer)); \ + } \ + else if (!NILP (older)) \ + { \ + assert (load_ignore_out_of_date_elc_files); \ + message (loading done " (file %s is out-of-date)", \ + XSTRING_DATA (load_show_full_path_in_messages ? \ + found : newer), \ + XSTRING_DATA (older)); \ + } \ + else if (!NILP (newer)) \ + message (loading done " (file %s is newer)", \ + XSTRING_DATA (load_show_full_path_in_messages ? \ + found : file), \ + XSTRING_DATA (newer)); \ + else if (source_only) \ + message (loading done " (file %s.elc does not exist)", \ + XSTRING_DATA (load_show_full_path_in_messages ? \ + found : file), \ + XSTRING_DATA (Ffile_name_nondirectory (file))); \ + else if (message_p) \ + message (loading done, \ + XSTRING_DATA (load_show_full_path_in_messages ? \ + found : file)); \ } while (0) #define PRINT_LOADING_MESSAGE(done) \ @@ -694,10 +733,8 @@ /* via `load-path' search. */ Lisp_Object name = file; - if (!NILP(Ffile_name_absolute_p(file))) - { - name = Ffile_name_nondirectory(file); - } + if (!NILP (Ffile_name_absolute_p (file))) + name = Ffile_name_nondirectory (file); { struct gcpro ngcpro1; @@ -718,13 +755,13 @@ } } -/*#ifdef DEBUG_XEMACS*/ +/* #ifdef DEBUG_XEMACS */ if (purify_flag && noninteractive) { if (!EQ (last_file_loaded, file)) message ("Loading %s ...done", XSTRING_DATA (file)); } -/*#endif / * DEBUG_XEMACS */ +/* #endif / * DEBUG_XEMACS */ if (!noninteractive) PRINT_LOADING_MESSAGE ("done"); @@ -948,6 +985,35 @@ int mode; }; +/* open() or access() a file to be returned by locate_file(). if + ACCESS_MODE >= 0, do an access() with that mode, else open(). Does + various magic, e.g. opening the file read-only and binary and setting + the close-on-exec flag on the file. */ + +static int +locate_file_open_or_access_file (Ibyte *fn, int access_mode) +{ + int val; + + /* Check that we can access or open it. */ + if (access_mode >= 0) + val = qxe_access (fn, access_mode); + else + { + val = qxe_open (fn, O_RDONLY | OPEN_BINARY, 0); + +#ifndef WIN32_NATIVE + if (val >= 0) + /* If we actually opened the file, set close-on-exec flag + on the new descriptor so that subprocesses can't whack + at it. */ + (void) fcntl (val, F_SETFD, FD_CLOEXEC); +#endif + } + + return val; +} + static int locate_file_in_directory_mapper (Ibyte *fn, void *arg) { @@ -960,10 +1026,7 @@ && (st.st_mode & S_IFMT) != S_IFDIR) { /* Check that we can access or open it. */ - if (closure->mode >= 0) - closure->fd = qxe_access (fn, closure->mode); - else - closure->fd = qxe_open (fn, O_RDONLY | OPEN_BINARY, 0); + closure->fd = locate_file_open_or_access_file (fn, closure->mode); if (closure->fd >= 0) { @@ -971,14 +1034,6 @@ if (closure->storeptr) *closure->storeptr = build_intstring (fn); -#ifndef WIN32_NATIVE - /* If we actually opened the file, set close-on-exec flag - on the new descriptor so that subprocesses can't whack - at it. */ - if (closure->mode < 0) - (void) fcntl (closure->fd, F_SETFD, FD_CLOEXEC); -#endif - return 1; } } @@ -1720,11 +1775,6 @@ while (c > 040 /* #### - comma should be here as should backquote */ && !(c == '\"' || c == '\'' || c == ';' || c == '(' || c == ')' -#ifndef LISP_FLOAT_TYPE - /* If we have floating-point support, then we need - to allow . */ - || c =='.' -#endif /* not LISP_FLOAT_TYPE */ || c == '[' || c == ']' || c == '#' )) { @@ -1780,18 +1830,14 @@ while (p1 != p && (c = *p1) >= '0' && c <= '9') p1++; -#ifdef LISP_FLOAT_TYPE /* Integers can have trailing decimal points. */ if (p1 > read_ptr && p1 < p && *p1 == '.') p1++; -#endif if (p1 == p) { /* It is an integer. */ -#ifdef LISP_FLOAT_TYPE if (p1[-1] == '.') p1[-1] = '\0'; -#endif #if 0 { int number = 0; @@ -1808,10 +1854,8 @@ #endif } } -#ifdef LISP_FLOAT_TYPE if (isfloat_string (read_ptr)) return make_float (atof (read_ptr)); -#endif } { @@ -2220,7 +2264,6 @@ return noseeum_cons (Qunbound, make_char (c)); case '.': { -#ifdef LISP_FLOAT_TYPE /* If a period is followed by a number, then we should read it as a floating point number. Otherwise, it denotes a dotted pair. @@ -2238,10 +2281,6 @@ (I think this doesn't matter anymore because there should be no more danger in unreading multiple characters) */ return read_atom (readcharfun, '.', 0); - -#else /* ! LISP_FLOAT_TYPE */ - return noseeum_cons (Qunbound, make_char ('.')); -#endif /* ! LISP_FLOAT_TYPE */ } case '#': @@ -2566,8 +2605,6 @@ -#ifdef LISP_FLOAT_TYPE - #define LEAD_INT 1 #define DOT_CHAR 2 #define TRAIL_INT 4 @@ -2622,7 +2659,6 @@ || state == (LEAD_INT|DOT_CHAR|TRAIL_INT|E_CHAR|EXP_INT) || state == (DOT_CHAR|TRAIL_INT|E_CHAR|EXP_INT))); } -#endif /* LISP_FLOAT_TYPE */ static void * sequence_reader (Lisp_Object readcharfun, @@ -3097,6 +3133,30 @@ */ ); load_ignore_elc_files = 0; + DEFVAR_BOOL ("load-ignore-out-of-date-elc-files", + &load_ignore_out_of_date_elc_files /* +*Whether `load' should ignore out-of-date `.elc' files when no suffix is given. +This is normally used when compiling packages of elisp files that may have +complex dependencies. Ignoring all elc files with `load-ignore-elc-files' +would also be safe, but much slower. +*/ ); + load_ignore_out_of_date_elc_files = 0; + + DEFVAR_BOOL ("load-always-display-messages", + &load_always_display_messages /* +*Whether `load' should always display loading messages. +If this is true, every file loaded will be shown, regardless of the setting +of the NOMESSAGE parameter, and even when files are loaded indirectly, e.g. +due to `requre'. +*/ ); + load_always_display_messages = 0; + + DEFVAR_BOOL ("load-show-full-path-in-messages", + &load_show_full_path_in_messages /* +*Whether `load' should show the full path in all loading messages. +*/ ); + load_show_full_path_in_messages = 0; + #ifdef LOADHIST DEFVAR_LISP ("load-history", &Vload_history /* Alist mapping source file names to symbols and features. diff --text -u 'xemacs-21.5.9/src/lrecord.h' 'xemacs-21.5.10/src/lrecord.h' Index: ./src/lrecord.h --- ./src/lrecord.h Mon Jul 29 18:21:22 2002 +++ ./src/lrecord.h Wed Sep 11 00:27:38 2002 @@ -770,6 +770,24 @@ INIT_LRECORD_IMPLEMENTATION(type); \ } while (0) +#ifdef HAVE_SHLIB +/* Allow undefining types in order to support module unloading. */ + +#define UNDEF_LRECORD_IMPLEMENTATION(type) do { \ + lrecord_implementations_table[lrecord_type_##type] = NULL; \ + lrecord_markers[lrecord_type_##type] = NULL; \ +} while (0) + +#define UNDEF_EXTERNAL_LRECORD_IMPLEMENTATION(type) do { \ + if (lrecord_##type.lrecord_type_index == lrecord_type_count - 1) { \ + /* This is the most recently defined type. Clean up nicely. */ \ + lrecord_type_##type = lrecord_type_count--; \ + } /* Else we can't help leaving a hole with this implementation. */ \ + UNDEF_LRECORD_IMPLEMENTATION(type); \ +} while (0) + +#endif /* HAVE_SHLIB */ + #define LRECORDP(a) (XTYPE (a) == Lisp_Type_Record) #define XRECORD_LHEADER(a) ((struct lrecord_header *) XPNTR (a)) diff --text -u 'xemacs-21.5.9/src/mule-canna.c' 'xemacs-21.5.10/src/mule-canna.c' Index: ./src/mule-canna.c --- ./src/mule-canna.c Fri Mar 29 13:48:10 2002 +++ ./src/mule-canna.c Tue Nov 12 00:34:13 2002 @@ -493,7 +493,6 @@ jrKanjiStatusWithValue ksv; jrKanjiStatus ks; int len; - Lisp_Object val; #ifdef CANNA_MULE unsigned char cbuf[4096]; #endif @@ -533,7 +532,6 @@ { jrKanjiStatusWithValue ksv; jrKanjiStatus ks; - Lisp_Object val; CHECK_INT (num); @@ -618,7 +616,6 @@ { jrKanjiStatusWithValue ksv; jrKanjiStatus ks; - Lisp_Object val; CHECK_INT (num); diff --text -u 'xemacs-21.5.9/src/mule-coding.c' 'xemacs-21.5.10/src/mule-coding.c' Index: ./src/mule-coding.c --- ./src/mule-coding.c Wed Jun 5 18:56:33 2002 +++ ./src/mule-coding.c Sun Sep 1 15:41:45 2002 @@ -599,6 +599,7 @@ struct big5_detector { int seen_big5_char; + int seen_euc_char; unsigned int seen_iso2022_esc:1; unsigned int seen_bad_first_byte:1; unsigned int seen_bad_second_byte:1; @@ -628,7 +629,9 @@ else { data->in_second_byte = 0; - if ((c >= 0x40 && c <= 0x7E) || (c >= 0xA1 && c <= 0xFE)) + if (c >= 0xA1 && c <= 0xFE) + data->seen_euc_char++; + else if (c >= 0x40 && c <= 0x7E) data->seen_big5_char++; else data->seen_bad_second_byte = 1; @@ -643,6 +646,8 @@ DET_RESULT (st, big5) = DET_SOMEWHAT_UNLIKELY; else if (data->seen_big5_char >= 4) DET_RESULT (st, big5) = DET_SOMEWHAT_LIKELY; + else if (data->seen_euc_char) + DET_RESULT (st, big5) = DET_SLIGHTLY_LIKELY; else DET_RESULT (st, big5) = DET_AS_LIKELY_AS_UNLIKELY; } @@ -2749,6 +2754,7 @@ unsigned int bad_multibyte_escape_sequences; unsigned int good_multibyte_escape_sequences; int even_high_byte_groups; + int longest_even_high_byte; int odd_high_byte_groups; }; @@ -2794,7 +2800,11 @@ if (data->high_byte_count & 1) data->odd_high_byte_groups++; else - data->even_high_byte_groups++; + { + data->even_high_byte_groups++; + if (data->longest_even_high_byte < data->high_byte_count) + data->longest_even_high_byte = data->high_byte_count; + } } data->high_byte_count = 0; data->saw_single_shift_just_now = 0; @@ -2861,6 +2871,19 @@ label_continue_loop:; } + if (data->high_byte_count && + !data->saw_single_shift_just_now) + { + if (data->high_byte_count & 1) + data->odd_high_byte_groups++; + else + { + data->even_high_byte_groups++; + if (data->longest_even_high_byte < data->high_byte_count) + data->longest_even_high_byte = data->high_byte_count; + } + } + if (data->bad_multibyte_escape_sequences > 2 || (data->bad_multibyte_escape_sequences > 0 && data->good_multibyte_escape_sequences / @@ -2919,6 +2942,7 @@ else if (data->odd_high_byte_groups == 0 && data->even_high_byte_groups > 0) { +#if 0 SET_DET_RESULTS (st, iso2022, DET_SOMEWHAT_UNLIKELY); if (data->even_high_byte_groups > 10) { @@ -2930,6 +2954,15 @@ DET_RESULT (st, iso_8_1) = DET_SOMEWHAT_UNLIKELY; /* else it stays at quite improbable */ } +#else + SET_DET_RESULTS (st, iso2022, DET_SOMEWHAT_UNLIKELY); + if (data->seen_single_shift) + DET_RESULT (st, iso_8_2) = DET_QUITE_PROBABLE; + else if (data->even_high_byte_groups > 10) + DET_RESULT (st, iso_8_2) = DET_SOMEWHAT_LIKELY; + else if (data->longest_even_high_byte > 6) + DET_RESULT (st, iso_8_2) = DET_SLIGHTLY_LIKELY; +#endif } else if (data->odd_high_byte_groups > 0 && data->even_high_byte_groups > 0) diff --text -u 'xemacs-21.5.9/src/nas.c' 'xemacs-21.5.10/src/nas.c' Index: ./src/nas.c --- ./src/nas.c Sun May 5 20:32:07 2002 +++ ./src/nas.c Tue Nov 12 01:03:12 2002 @@ -52,6 +52,12 @@ * 4/11/94, rjc Added wait_for_sounds to be called when user wants to * be sure all play has finished. * 1998-10-01 rlt Added support for WAVE files. + * 2002-10-16 Jon Trulson modifed this to work with NAS releases + * 1.5f and higher. We were using the private variable + * SoundFileInfo that doesn't exist anymore. But preserve + * backward compatibility. This will not work for some + * versions of NAS around 1.5b to 1.5f or so. Known to + * work on 1.2p5 and 1.6. */ #include @@ -960,13 +966,28 @@ { Sound s; +#if (AudioLibraryVersionMajor >= 2 ) && (AudioLibraryVersionMinor >= 3) + SoundFileInfoProc toProc; +#endif if (!(s = (Sound) malloc (sizeof (SoundRec)))) return NULL; if ((s->formatInfo = SndOpenDataForReading ((Char_Binary *) data, length)) != NULL) { +#if (AudioLibraryVersionMajor >= 2 ) && (AudioLibraryVersionMinor >= 3) + if ((toProc = SoundFileGetProc(SoundFileFormatSnd, + SoundFileInfoProcTo)) == NULL) + { + SndCloseFile ((SndInfo *) (s->formatInfo)); + free (s); + + return NULL; + } + if (!((*toProc)(s))) +#else if (!((int(*)(Sound))(SoundFileInfo[SoundFileFormatSnd].toSound)) (s)) +#endif { SndCloseFile ((SndInfo *) (s->formatInfo)); free (s); @@ -975,7 +996,19 @@ } else if ((s->formatInfo = WaveOpenDataForReading ((Char_Binary *) data, length)) != NULL) { +#if (AudioLibraryVersionMajor >= 2 ) && (AudioLibraryVersionMinor >= 3) + if ((toProc = SoundFileGetProc(SoundFileFormatWave, + SoundFileInfoProcTo)) == NULL) + { + WaveCloseFile ((WaveInfo *) (s->formatInfo)); + free (s); + + return NULL; + } + if (!((*toProc)(s))) +#else if (!((int(*)(Sound))(SoundFileInfo[SoundFileFormatWave].toSound)) (s)) +#endif { WaveCloseFile ((WaveInfo *) (s->formatInfo)); free (s); diff --text -u 'xemacs-21.5.9/src/print.c' 'xemacs-21.5.10/src/print.c' Index: ./src/print.c --- ./src/print.c Fri Jun 21 06:18:41 2002 +++ ./src/print.c Wed Nov 13 03:58:31 2002 @@ -971,8 +971,6 @@ } -#ifdef LISP_FLOAT_TYPE - Lisp_Object Vfloat_output_format; /* @@ -1060,7 +1058,6 @@ buf [(buf [0] == '-' ? 1 : 0)] = '0'; } } -#endif /* LISP_FLOAT_TYPE */ #define ONE_DIGIT(figure) *p++ = n / (figure) + '0' #define ONE_DIGIT_ADVANCE(figure) (ONE_DIGIT (figure), n %= (figure)) @@ -1608,8 +1605,6 @@ unbind_to (specdepth); } - -#ifdef LISP_FLOAT_TYPE void print_float (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { @@ -1618,7 +1613,6 @@ float_to_string (pigbuf, XFLOAT_DATA (obj)); write_c_string (printcharfun, pigbuf); } -#endif /* LISP_FLOAT_TYPE */ void print_symbol (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) @@ -1707,13 +1701,11 @@ } not_yet_confused: -#ifdef LISP_FLOAT_TYPE if (!confusing) /* #### Ugh, this is needlessly complex and slow for what we need here. It might be a good idea to copy equivalent code from FSF. --hniksic */ confusing = isfloat_string ((char *) data); -#endif if (confusing) write_c_string (printcharfun, "\\"); } @@ -2040,7 +2032,6 @@ */ ); Vstandard_output = Qt; -#ifdef LISP_FLOAT_TYPE DEFVAR_LISP ("float-output-format", &Vfloat_output_format /* The format descriptor string that lisp uses to print floats. This is a %-spec like those accepted by `printf' in C, @@ -2064,7 +2055,6 @@ are all zero. This is to preserve read-equivalence. */ ); Vfloat_output_format = Qnil; -#endif /* LISP_FLOAT_TYPE */ DEFVAR_LISP ("print-length", &Vprint_length /* Maximum length of list or vector to print before abbreviating. diff --text -u 'xemacs-21.5.9/src/process-unix.c' 'xemacs-21.5.10/src/process-unix.c' Index: ./src/process-unix.c --- ./src/process-unix.c Wed Jul 31 16:23:39 2002 +++ ./src/process-unix.c Mon Nov 18 15:52:41 2002 @@ -1024,16 +1024,14 @@ retry_close (out); retry_close (err); - /* I can't think of any reason why child processes need any more - than the standard 3 file descriptors. It would be cleaner to + /* Close non-process-related file descriptors. It would be cleaner to close just the ones that need to be, but the following brute - force approach is certainly effective, and not too slow. + force approach is certainly effective, and not too slow. */ - #### Who the hell added this? We already close the descriptors - by using close_process_descs()!!! --ben */ { int fd; - for (fd = 3; fd <= 64; fd++) + + for (fd = 3; fd < MAXDESC; fd++) retry_close (fd); } @@ -1141,6 +1139,10 @@ int xforkout = forkout; int xforkerr = forkerr; + /* Checking for quit in the child is bad because that will + cause I/O, and that, in turn, can confuse the X connection. */ + begin_dont_check_for_quit(); + /* Disconnect the current controlling terminal, pursuant to making the pty be the controlling terminal of the process. Also put us in our own process group. */ @@ -1492,10 +1494,10 @@ static void unix_send_process (Lisp_Object proc, struct lstream *lstream) { - /* Use volatile to protect variables from being clobbered by longjmp. */ - SIGTYPE (*volatile old_sigpipe) (int) = 0; - volatile Lisp_Object vol_proc = proc; - Lisp_Process *volatile p = XPROCESS (proc); + /* See comment lisp.h circa line 787 */ + SIGTYPE (*VOLATILE_IF_NOT_CPP old_sigpipe) (int) = 0; + VOLATILE_IF_NOT_CPP Lisp_Object vol_proc = proc; + Lisp_Process *VOLATILE_IF_NOT_CPP p = XPROCESS (proc); /* #### JV: layering violation? @@ -1542,7 +1544,7 @@ /* Buffer is full. Wait, accepting input; that may allow the program to finish doing output and read more. */ - Faccept_process_output (Qnil, volatile_make_int (1), Qnil); + Faccept_process_output (Qnil, make_int (1), Qnil); /* It could have *really* finished, deleting the process */ if (NILP(p->pipe_outstream)) return; diff --text -u 'xemacs-21.5.9/src/procimpl.h' 'xemacs-21.5.10/src/procimpl.h' Index: ./src/procimpl.h --- ./src/procimpl.h Mon Jul 29 18:21:24 2002 +++ ./src/procimpl.h Mon Nov 18 15:52:41 2002 @@ -174,10 +174,6 @@ extern int windowed_process_io; -#ifdef HAVE_MULTICAST -extern Lisp_Object Qmulticast; -#endif - #ifdef PROCESS_IO_BLOCKING extern Lisp_Object network_stream_blocking_port_list; #endif /* PROCESS_IO_BLOCKING */ diff --text -u 'xemacs-21.5.9/src/profile.c' 'xemacs-21.5.10/src/profile.c' Index: ./src/profile.c --- ./src/profile.c Tue May 28 17:44:59 2002 +++ ./src/profile.c Wed Nov 27 16:15:13 2002 @@ -1,5 +1,5 @@ /* Why the hell is XEmacs so fucking slow? - Copyright (C) 1996 Ben Wing. + Copyright (C) 1996, 2002 Ben Wing. Copyright (C) 1998 Free Software Foundation, Inc. This file is part of XEmacs. @@ -51,7 +51,6 @@ safe, and trying to make it safe would be much more work than it's worth. - Jan 1998: In addition to this, I have added code to remember call counts of Lisp funcalls. The profile_increase_call_count() function is called from Ffuncall(), and serves to add data to @@ -77,12 +76,34 @@ static Lisp_Object QSprocessing_events_at_top_level; static Lisp_Object QSunknown; +static Lisp_Object Qtiming, Qcall_count; + /* We use inside_profiling to prevent the handler from writing to the table while another routine is operating on it. We also set inside_profiling in case the timeout between signal calls is short enough to catch us while we're already in there. */ static volatile int inside_profiling; +static void +create_call_count_profile_table (void) +{ + if (NILP (Vcall_count_profile_table)) + Vcall_count_profile_table = + make_lisp_hash_table (100, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); +} + +static void +create_timing_profile_table (void) +{ + /* #### The hash code can safely be called from a signal handler + except when it has to grow the hash table. In this case, it calls + realloc(), which is not (in general) re-entrant. We'll just be + sleazy and make the table large enough that it (hopefully) won't + need to be realloc()ed. */ + if (!big_profile_table) + big_profile_table = make_hash_table (10000); +} + /* Increase the value of OBJ in Vcall_count_profile_table hash table. If the hash table is nil, create it first. */ void @@ -90,9 +111,7 @@ { Lisp_Object count; - if (NILP (Vcall_count_profile_table)) - Vcall_count_profile_table = - make_lisp_hash_table (100, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); + create_call_count_profile_table (); count = Fgethash (obj, Vcall_count_profile_table, Qzero); if (!INTP (count)) @@ -159,6 +178,7 @@ If MICROSECS is nil or omitted, the value of `default-profiling-interval' is used. +Information on function timings and call counts is currently recorded. You can retrieve the recorded profiling info using `get-profiling-info'. Starting and stopping profiling does not clear the currently recorded @@ -176,8 +196,7 @@ realloc(), which is not (in general) re-entrant. We'll just be sleazy and make the table large enough that it (hopefully) won't need to be realloc()ed. */ - if (!big_profile_table) - big_profile_table = make_hash_table (10000); + create_timing_profile_table (); if (NILP (microsecs)) msecs = default_profiling_interval; @@ -217,15 +236,34 @@ return Qnil; } +DEFUN ("clear-profiling-info", Fclear_profiling_info, 0, 0, "", /* +Clear out the recorded profiling info. +This clears both the internal timing information and the call counts in +`call-count-profile-table'. +*/ + ()) +{ + /* This function does not GC */ + if (big_profile_table) + { + inside_profiling = 1; + clrhash (big_profile_table); + inside_profiling = 0; + } + if (!NILP (Vcall_count_profile_table)) + Fclrhash (Vcall_count_profile_table); + return Qnil; +} + struct get_profiling_info_closure { - Lisp_Object accum; + Lisp_Object timing; }; static int -get_profiling_info_maphash (const void *void_key, - void *void_val, - void *void_closure) +get_profiling_info_timing_maphash (const void *void_key, + void *void_val, + void *void_closure) { /* This function does not GC */ Lisp_Object key; @@ -236,26 +274,98 @@ key = VOID_TO_LISP (void_key); val = (EMACS_INT) void_val; - closure->accum = Fcons (Fcons (key, make_int (val)), closure->accum); + Fputhash (key, make_int (val), closure->timing); return 0; } DEFUN ("get-profiling-info", Fget_profiling_info, 0, 0, 0, /* -Return the profiling info as an alist. +Return the currently recorded profiling info. +The format is a plist of symbols describing type of info recorded and +an associated type-specific entry. Currently, the following info types +are recorded + +`timing' + A hash table of funcallable objects or strings describing internal processing + operations \(redisplay, garbage collection, etc.), along with associated + tick counts (the frequency of ticks is controlled by + `default-profiling-interval' or the argument to `start-profiling'). + +`call-count' + A hash table of funcallable objects and associated call counts. */ ()) { /* This function does not GC */ struct get_profiling_info_closure closure; - closure.accum = Qnil; + closure.timing = + make_lisp_hash_table (100, HASH_TABLE_NON_WEAK, HASH_TABLE_EQUAL); + if (big_profile_table) { int count = internal_bind_int ((int *) &inside_profiling, 1); - maphash (get_profiling_info_maphash, big_profile_table, &closure); + maphash (get_profiling_info_timing_maphash, big_profile_table, &closure); unbind_to (count); } - return closure.accum; + + return list4 (Qtiming, closure.timing, Qcall_count, + !NILP (Vcall_count_profile_table) ? + Fcopy_hash_table (Vcall_count_profile_table) : + make_lisp_hash_table (100, HASH_TABLE_NON_WEAK, + HASH_TABLE_EQ)); +} + +struct set_profiling_info_closure +{ + Lisp_Object timing; +}; + +static int +set_profiling_info_timing_maphash (Lisp_Object key, + Lisp_Object val, + void *void_closure) +{ + /* This function does not GC */ + if (!INTP (val)) + invalid_argument_2 + ("Function timing count is not an integer in given entry", + key, val); + + puthash (LISP_TO_VOID (key), (void *) XINT (val), big_profile_table); + + return 0; +} + +DEFUN ("set-profiling-info", Fset_profiling_info, 1, 1, 0, /* +Set the currently recorded profiling info. +INFO should be in the same format returned by `get-profiling-info', +as described there. +*/ + (info)) +{ + /* This function does not GC */ + Fclear_profiling_info (); + + { + EXTERNAL_PROPERTY_LIST_LOOP_3 (key, value, info) + { + if (EQ (key, Qtiming)) + { + CHECK_HASH_TABLE (value); + create_timing_profile_table (); + elisp_maphash_unsafe (set_profiling_info_timing_maphash, value, + NULL); + } + else if (EQ (key, Qcall_count)) + { + Vcall_count_profile_table = Fcopy_hash_table (value); + } + else + invalid_constant ("Unrecognized profiling-info keyword", key); + } + } + + return Qnil; } static int @@ -282,23 +392,6 @@ } } -DEFUN ("clear-profiling-info", Fclear_profiling_info, 0, 0, "", /* -Clear out the recorded profiling info. -*/ - ()) -{ - /* This function does not GC */ - if (big_profile_table) - { - inside_profiling = 1; - clrhash (big_profile_table); - inside_profiling = 0; - } - if (!NILP (Vcall_count_profile_table)) - Fclrhash (Vcall_count_profile_table); - return Qnil; -} - DEFUN ("profiling-active-p", Fprofiling_active_p, 0, 0, 0, /* Return non-nil if profiling information is currently being recorded. */ @@ -313,6 +406,7 @@ DEFSUBR (Fstart_profiling); DEFSUBR (Fstop_profiling); DEFSUBR (Fget_profiling_info); + DEFSUBR (Fset_profiling_info); DEFSUBR (Fclear_profiling_info); DEFSUBR (Fprofiling_active_p); } @@ -324,15 +418,12 @@ Default CPU time in microseconds between profiling sampling. Used when the argument to `start-profiling' is nil or omitted. Note that the time in question is CPU time (when the program is executing -or the kernel is executing on behalf of the program) and not real time. +or the kernel is executing on behalf of the program) and not real time, and +there is usually a machine-dependent limit on how small this value can be. */ ); default_profiling_interval = 1000; - DEFVAR_LISP ("call-count-profile-table", &Vcall_count_profile_table /* -The table where call-count information is stored by the profiling primitives. -This is a hash table whose keys are funcallable objects, and whose -values are their call counts (integers). -*/ ); + staticpro (&Vcall_count_profile_table); Vcall_count_profile_table = Qnil; inside_profiling = 0; @@ -346,4 +437,7 @@ QSprocessing_events_at_top_level = build_msg_string ("(processing events at top level)"); staticpro (&QSprocessing_events_at_top_level); + + DEFSYMBOL (Qtiming); + DEFSYMBOL (Qcall_count); } diff --text -u 'xemacs-21.5.9/src/realpath.c' 'xemacs-21.5.10/src/realpath.c' Index: ./src/realpath.c --- ./src/realpath.c Wed Jun 5 18:56:53 2002 +++ ./src/realpath.c Fri Nov 22 21:57:11 2002 @@ -1,7 +1,7 @@ /* * realpath.c -- canonicalize pathname by removing symlinks * Copyright (C) 1993 Rick Sladkey - * Copyright (C) 2001 Ben Wing. + * Copyright (C) 2001, 2002 Ben Wing. * This file is part of XEmacs. @@ -32,155 +32,22 @@ #include "lisp.h" #include "sysfile.h" +#include "sysdir.h" #define MAX_READLINKS 32 -#if defined (HAVE_SYS_PARAM_H) && !defined (WIN32_NATIVE) -#include -#endif - -#ifdef WIN32_NATIVE -#include -#endif - -#include /* for S_IFLNK */ - -#if defined(WIN32_NATIVE) || defined(CYGWIN) -#define WIN32_FILENAMES -#endif - -/* First char after start of absolute filename. */ -#define ABS_START(name) (name + ABS_LENGTH (name)) - -#if defined (WIN32_NATIVE) -/* Length of start of absolute filename. */ -# define ABS_LENGTH(name) (mswindows_abs_start (name)) -static int mswindows_abs_start (const Ibyte *name); -# define readlink_and_correct_case mswindows_readlink_and_correct_case -#else -# ifdef CYGWIN -# ifdef WIN32_FILENAMES -# define ABS_LENGTH(name) (mswindows_abs_start (name)) -static int mswindows_abs_start (const Ibyte * name); -# else -# define ABS_LENGTH(name) (IS_DIRECTORY_SEP (*name) ? \ - (IS_DIRECTORY_SEP (name[1]) ? 2 : 1) : 0) -# endif -# define readlink_and_correct_case cygwin_readlink_and_correct_case -# else -# define ABS_LENGTH(name) (IS_DIRECTORY_SEP (*name) ? 1 : 0) -# define readlink_and_correct_case qxe_readlink -# endif /* CYGWIN */ -#endif /* WIN32_NATIVE */ - -#if defined (WIN32_NATIVE) || defined (CYGWIN) +#ifdef WIN32_ANY #include "syswindows.h" -/* "Emulate" readlink on mswindows - finds real name (i.e. correct - case) of a file. (#### "readlink" is used extremely misleadingly - here. This is much more like "truename"!) UNC servers and shares - are lower-cased. Directories must be given without trailing - '/'. One day, this could read Win2K's reparse points. */ -static int -mswindows_readlink_and_correct_case (const Ibyte *name, Ibyte *buf, - int size) -{ - int len = 0; - int err = 0; - const Ibyte *lastname; - int count = 0; - const Ibyte *tmp; - DECLARE_EISTRING (result); - - assert (*name); - - /* Sort of check we have a valid filename. */ - if (qxestrpbrk (name, "*?|<>\"") || qxestrlen (name) >= PATH_MAX) - { - errno = EIO; - return -1; - } - - /* Find start of filename */ - lastname = name + qxestrlen (name); - while (lastname > name && !IS_DIRECTORY_SEP (lastname[-1])) - --lastname; - - /* Count slashes in unc path */ - if (ABS_LENGTH (name) == 2) - for (tmp = name; *tmp; tmp++) - if (IS_DIRECTORY_SEP (*tmp)) - count++; - - if (count >= 2 && count < 4) - { - eicpy_rawz (result, lastname); - eilwr (result); - } - else - { - WIN32_FIND_DATAW find_data; - Extbyte *nameext; - HANDLE dir_handle; - - C_STRING_TO_TSTR (name, nameext); - dir_handle = qxeFindFirstFile (nameext, &find_data); - if (dir_handle == INVALID_HANDLE_VALUE) - { - errno = ENOENT; - return -1; - } - eicpy_ext (result, (Extbyte *) find_data.cFileName, Qmswindows_tstr); - FindClose (dir_handle); - } - - if ((len = eilen (result)) < size) - { - DECLARE_EISTRING (eilastname); - - eicpy_rawz (eilastname, lastname); - if (eicmp_ei (eilastname, result) == 0) - /* Signal that the name is already OK. */ - err = EINVAL; - else - memcpy (buf, eidata (result), len + 1); - } - else - err = ENAMETOOLONG; - - errno = err; - return err ? -1 : len; -} -#endif /* WIN32_NATIVE || CYGWIN */ - -#ifdef CYGWIN -/* Call readlink and try to find out the correct case for the file. */ -static int -cygwin_readlink_and_correct_case (const Ibyte *name, Ibyte *buf, - int size) -{ - int n = qxe_readlink (name, buf, size); - if (n < 0 && errno == EINVAL) - { - /* The file may exist, but isn't a symlink. Try to find the - right name. */ - Ibyte *tmp = - (Ibyte *) ALLOCA (cygwin_posix_to_win32_path_list_buf_size - ((char *) name)); - cygwin_posix_to_win32_path_list ((char *) name, (char *) tmp); - n = mswindows_readlink_and_correct_case (tmp, buf, size); - } - return n; -} -#endif /* CYGWIN */ - -#ifdef WIN32_FILENAMES #ifndef ELOOP #define ELOOP 10062 /* = WSAELOOP in winsock.h */ #endif +#endif + /* Length of start of absolute filename. */ static int -mswindows_abs_start (const Ibyte *name) +abs_start (const Ibyte *name) { +#ifdef WIN32_ANY if (isalpha (*name) && IS_DEVICE_SEP (name[1]) && IS_DIRECTORY_SEP (name[2])) return 3; @@ -188,8 +55,114 @@ return IS_DIRECTORY_SEP (name[1]) ? 2 : 1; else return 0; +#else /* not WIN32_ANY */ + return IS_DIRECTORY_SEP (*name) ? 1 : 0; +#endif +} + +/* Find real name of a file by resolving symbolic links and (under Windows) + looking up the correct case of the file as it appears on the file + system. + + Under Windows, UNC servers and shares are lower-cased. Directories must + be given without trailing '/'. One day, this could read Win2K's reparse + points. */ + +static int +readlink_and_correct_case (const Ibyte *name, Ibyte *buf, + int size) +{ +#ifndef WIN32_ANY + return qxe_readlink (name, buf, size); +#else +# ifdef CYGWIN + Ibyte *tmp; + int n = qxe_readlink (name, buf, size); + if (n >= 0 || errno != EINVAL) + return n; + + /* The file may exist, but isn't a symlink. Try to find the + right name. */ + tmp = (Ibyte *) ALLOCA (cygwin_posix_to_win32_path_list_buf_size + ((char *) name)); + cygwin_posix_to_win32_path_list ((char *) name, (char *) tmp); + name = tmp; +# endif + + { + int len = 0; + int err = 0; + const Ibyte *lastname; + int count = 0; + const Ibyte *tmp; + DECLARE_EISTRING (result); + + assert (*name); + + /* Sort of check we have a valid filename. */ + if (qxestrpbrk (name, "*?|<>\"")) + { + errno = ENOENT; + return -1; + } + else if (qxestrlen (name) >= PATH_MAX) + { + errno = ENAMETOOLONG; + return -1; + } + + /* Find start of filename */ + lastname = name + qxestrlen (name); + while (lastname > name && !IS_DIRECTORY_SEP (lastname[-1])) + --lastname; + + /* Count slashes in unc path */ + if (abs_start (name) == 2) + for (tmp = name; *tmp; tmp++) + if (IS_DIRECTORY_SEP (*tmp)) + count++; + + if (count >= 2 && count < 4) + { + eicpy_rawz (result, lastname); + eilwr (result); + } + else + { + WIN32_FIND_DATAW find_data; + Extbyte *nameext; + HANDLE dir_handle; + + C_STRING_TO_TSTR (name, nameext); + dir_handle = qxeFindFirstFile (nameext, &find_data); + if (dir_handle == INVALID_HANDLE_VALUE) + { + errno = ENOENT; + return -1; + } + eicpy_ext (result, (Extbyte *) find_data.cFileName, Qmswindows_tstr); + FindClose (dir_handle); + } + + if ((len = eilen (result)) < size) + { + DECLARE_EISTRING (eilastname); + + eicpy_rawz (eilastname, lastname); + if (eicmp_ei (eilastname, result) == 0) + /* Signal that the name is already OK. */ + err = EINVAL; + else + memcpy (buf, eidata (result), len + 1); + } + else + err = ENAMETOOLONG; + + errno = err; + return err ? -1 : len; + } +#endif /* WIN32_ANY */ } -#endif /* WIN32_NATIVE */ /* Mule Note: This function works with and returns internally-formatted strings. */ @@ -200,11 +173,11 @@ Ibyte copy_path[PATH_MAX]; Ibyte *new_path = resolved_path; Ibyte *max_path; -#if defined (HAVE_READLINK) || defined (WIN32_NATIVE) +#if defined (HAVE_READLINK) || defined (WIN32_ANY) int readlinks = 0; Ibyte link_path[PATH_MAX]; int n; - int abslen = ABS_LENGTH (path); + int abslen = abs_start (path); #endif /* Make a copy of the source path since we may need to modify it. */ @@ -214,16 +187,27 @@ if (0) ; -#ifdef WIN32_FILENAMES +#ifdef WIN32_ANY /* Check for c:/... or //server/... */ - else if (abslen == 2 || abslen == 3) + else if (abslen == 3 || abslen == 2) { - qxestrncpy (new_path, path, abslen); /* Make sure drive letter is lowercased. */ if (abslen == 3) - *new_path = tolower (*new_path); - new_path += abslen; - path += abslen; + { + *new_path = tolower (*path); + new_path++; + path++; + abslen--; + } + /* Coerce directory chars. */ + while (abslen-- > 0) + { + if (IS_DIRECTORY_SEP (*path)) + *new_path++ = DIRECTORY_SEP; + else + *new_path++ = *path; + path++; + } } #endif #ifdef WIN32_NATIVE @@ -235,7 +219,7 @@ path++; } /* Just a path name, prepend the current directory */ - else if (1) + else { get_initial_directory (new_path, PATH_MAX - 1); new_path += qxestrlen (new_path); @@ -285,7 +269,7 @@ path += 2; /* Ignore ".." at root. */ - if (new_path == ABS_START (resolved_path)) + if (new_path == resolved_path + abs_start (resolved_path)) continue; /* Handle ".." by backing up. */ @@ -307,7 +291,7 @@ *new_path++ = *path++; } -#if defined (HAVE_READLINK) || defined (WIN32_NATIVE) +#if defined (HAVE_READLINK) || defined (WIN32_ANY) /* See if latest pathname component is a symlink or needs case correction. */ *new_path = '\0'; @@ -317,7 +301,7 @@ { /* EINVAL means the file exists but isn't a symlink or doesn't need case correction. */ -#ifdef CYGWIN +#ifdef WIN32_ANY if (errno != EINVAL && errno != ENOENT) #else if (errno != EINVAL) @@ -336,9 +320,9 @@ /* Note: readlink doesn't add the null byte. */ link_path[n] = '\0'; - if (ABS_LENGTH (link_path) > 0) + if (abs_start (link_path) > 0) /* Start over for an absolute symlink. */ - new_path = resolved_path + ABS_LENGTH (link_path) - 1; + new_path = resolved_path + abs_start (link_path) - 1; else /* Otherwise back up over this component. */ for (--new_path; !IS_DIRECTORY_SEP (*new_path); --new_path) @@ -356,12 +340,12 @@ qxestrcpy (copy_path, link_path); path = copy_path; } -#endif /* HAVE_READLINK || WIN32_NATIVE */ +#endif /* HAVE_READLINK || WIN32_ANY */ *new_path++ = DIRECTORY_SEP; } /* Delete trailing slash but don't whomp a lone slash. */ - if (new_path != ABS_START (resolved_path) && + if (new_path != resolved_path + abs_start (resolved_path) && IS_DIRECTORY_SEP (new_path[-1])) new_path--; diff --text -u 'xemacs-21.5.9/src/redisplay.c' 'xemacs-21.5.10/src/redisplay.c' Index: ./src/redisplay.c --- ./src/redisplay.c Sun Jul 7 06:05:53 2002 +++ ./src/redisplay.c Wed Nov 27 16:15:14 2002 @@ -6564,8 +6564,9 @@ /* The menubar, toolbar, and icon updates must be done before enter_redisplay_critical_section is called and we are officially - 'in_display'. They may eval lisp code which may call Fsignal. - If in_display is set Fsignal will abort. */ + 'in_display'. They may eval lisp code which may call QUIT. + If in_display is set, QUIT will abort (unless the code is wrapped + to protect against errors). */ #ifdef HAVE_MENUBARS /* Update the menubar. It is done first since it could change @@ -6614,21 +6615,25 @@ following cannot happen: 1) garbage collection - 2) Lisp code evaluation - 3) frame size changes + 2) QUIT + 3) Any non-local exits + 4) frame size changes - We ensure (3) by calling enter_redisplay_critical_section(), which + We ensure (4) by calling enter_redisplay_critical_section(), which will cause any pending frame size changes to get put on hold - till after the end of the critical section. (1) follows - automatically if (2) is met. #### Unfortunately, there are - some places where Lisp code can be called within this section. - We need to remove them. - - If Fsignal() is called during this critical section, we - will abort(). - - If garbage collection is called during this critical section, - we simply return. #### We should abort instead. + till after the end of the critical section. (2) is required because + of the possibility of (3). (2) and (3) mean that any place that + can execute QUIT (e.g. internal_equal()), and especially any place + that executes Lisp code, need to be properly wrapped to protect + against these possibilities. This wrapping happens using + call_trapping_problems(..., INHIBIT_GC), or related functions. + + To help debug potential problems, we arrange (when + ERROR_CHECK_TRAPPING_PROBLEMS is set) to crash automatically every + time we execute QUIT or check to see whether garbage collection is + necessary, inside of an unprotected critical section, as well as + further checks when we actually Fsignal(), Fthrow(), + garbage_collect_1(). #### If a frame-size change does occur we should probably actually be preempting redisplay. */ diff --text -u 'xemacs-21.5.9/src/regex.c' 'xemacs-21.5.10/src/regex.c' Index: ./src/regex.c --- ./src/regex.c Wed Jun 5 18:57:05 2002 +++ ./src/regex.c Fri Oct 4 03:08:24 2002 @@ -4847,85 +4847,94 @@ DEBUG_PRINT1 ("Accepting match.\n"); /* If caller wants register contents data back, do it. */ - if (regs && !bufp->no_sub) - { - int num_nonshy_regs = bufp->re_nsub + 1; - /* Have the register data arrays been allocated? */ - if (bufp->regs_allocated == REGS_UNALLOCATED) - { /* No. So allocate them with malloc. We need one - extra element beyond `num_regs' for the `-1' marker - GNU code uses. */ - regs->num_regs = MAX (RE_NREGS, num_nonshy_regs + 1); - regs->start = TALLOC (regs->num_regs, regoff_t); - regs->end = TALLOC (regs->num_regs, regoff_t); - if (regs->start == NULL || regs->end == NULL) - { - FREE_VARIABLES (); - return -2; - } - bufp->regs_allocated = REGS_REALLOCATE; - } - else if (bufp->regs_allocated == REGS_REALLOCATE) - { /* Yes. If we need more elements than were already - allocated, reallocate them. If we need fewer, just - leave it alone. */ - if (regs->num_regs < num_nonshy_regs + 1) - { - regs->num_regs = num_nonshy_regs + 1; - RETALLOC (regs->start, regs->num_regs, regoff_t); - RETALLOC (regs->end, regs->num_regs, regoff_t); - if (regs->start == NULL || regs->end == NULL) - { - FREE_VARIABLES (); - return -2; - } - } - } - else - { - /* These braces fend off a "empty body in an else-statement" - warning under GCC when assert expands to nothing. */ - assert (bufp->regs_allocated == REGS_FIXED); - } - - /* Convert the pointer data in `regstart' and `regend' to - indices. Register zero has to be set differently, - since we haven't kept track of any info for it. */ - if (regs->num_regs > 0) - { - regs->start[0] = pos; - regs->end[0] = (MATCHING_IN_FIRST_STRING - ? ((regoff_t) (d - string1)) - : ((regoff_t) (d - string2 + size1))); - } + { + int num_nonshy_regs = bufp->re_nsub + 1; + if (regs && !bufp->no_sub) + { + /* Have the register data arrays been allocated? */ + if (bufp->regs_allocated == REGS_UNALLOCATED) + { /* No. So allocate them with malloc. We need one + extra element beyond `num_regs' for the `-1' marker + GNU code uses. */ + regs->num_regs = MAX (RE_NREGS, num_nonshy_regs + 1); + regs->start = TALLOC (regs->num_regs, regoff_t); + regs->end = TALLOC (regs->num_regs, regoff_t); + if (regs->start == NULL || regs->end == NULL) + { + FREE_VARIABLES (); + return -2; + } + bufp->regs_allocated = REGS_REALLOCATE; + } + else if (bufp->regs_allocated == REGS_REALLOCATE) + { /* Yes. If we need more elements than were already + allocated, reallocate them. If we need fewer, just + leave it alone. */ + if (regs->num_regs < num_nonshy_regs + 1) + { + regs->num_regs = num_nonshy_regs + 1; + RETALLOC (regs->start, regs->num_regs, regoff_t); + RETALLOC (regs->end, regs->num_regs, regoff_t); + if (regs->start == NULL || regs->end == NULL) + { + FREE_VARIABLES (); + return -2; + } + } + } + else + { + /* The braces fend off a "empty body in an else-statement" + warning under GCC when assert expands to nothing. */ + assert (bufp->regs_allocated == REGS_FIXED); + } - /* Go through the first `min (num_regs, regs->num_regs)' - registers, since that is all we initialized. */ - for (mcnt = 1; mcnt < MIN (num_nonshy_regs, regs->num_regs); - mcnt++) - { - int internal_reg = bufp->external_to_internal_register[mcnt]; - if (REG_UNSET (regstart[internal_reg]) || - REG_UNSET (regend[internal_reg])) - regs->start[mcnt] = regs->end[mcnt] = -1; - else - { - regs->start[mcnt] = - (regoff_t) POINTER_TO_OFFSET (regstart[internal_reg]); - regs->end[mcnt] = - (regoff_t) POINTER_TO_OFFSET (regend[internal_reg]); - } - } + /* Convert the pointer data in `regstart' and `regend' to + indices. Register zero has to be set differently, + since we haven't kept track of any info for it. */ + if (regs->num_regs > 0) + { + regs->start[0] = pos; + regs->end[0] = (MATCHING_IN_FIRST_STRING + ? ((regoff_t) (d - string1)) + : ((regoff_t) (d - string2 + size1))); + } - /* If the regs structure we return has more elements than - were in the pattern, set the extra elements to -1. If - we (re)allocated the registers, this is the case, - because we always allocate enough to have at least one - -1 at the end. */ - for (mcnt = num_nonshy_regs; mcnt < regs->num_regs; mcnt++) - regs->start[mcnt] = regs->end[mcnt] = -1; - } /* regs && !bufp->no_sub */ + /* Go through the first `min (num_regs, regs->num_regs)' + registers, since that is all we initialized. */ + for (mcnt = 1; mcnt < MIN (num_nonshy_regs, regs->num_regs); + mcnt++) + { + int internal_reg = bufp->external_to_internal_register[mcnt]; + if (REG_UNSET (regstart[internal_reg]) || + REG_UNSET (regend[internal_reg])) + regs->start[mcnt] = regs->end[mcnt] = -1; + else + { + regs->start[mcnt] = + (regoff_t) POINTER_TO_OFFSET (regstart[internal_reg]); + regs->end[mcnt] = + (regoff_t) POINTER_TO_OFFSET (regend[internal_reg]); + } + } + } /* regs && !bufp->no_sub */ + /* If we have regs and the regs structure has more elements than + were in the pattern, set the extra elements to -1. If we + (re)allocated the registers, this is the case, because we + always allocate enough to have at least one -1 at the end. + + We do this even when no_sub is set because some applications + (XEmacs) reuse register structures which may contain stale + information, and permit attempts to access those registers. + + It would be possible to require the caller to do this, but we'd + have to change the API for this function to reflect that, and + audit all callers. */ + if (regs && regs->num_regs > 0) + for (mcnt = num_nonshy_regs; mcnt < regs->num_regs; mcnt++) + regs->start[mcnt] = regs->end[mcnt] = -1; + } DEBUG_PRINT4 ("%u failure points pushed, %u popped (%u remain).\n", nfailure_points_pushed, nfailure_points_popped, nfailure_points_pushed - nfailure_points_popped); diff --text -u 'xemacs-21.5.9/src/s/cygwin32.h' 'xemacs-21.5.10/src/s/cygwin32.h' Index: ./src/s/cygwin32.h --- ./src/s/cygwin32.h Fri Jun 21 06:19:10 2002 +++ ./src/s/cygwin32.h Mon Nov 18 15:52:45 2002 @@ -62,7 +62,12 @@ #define ORDINARY_LINK #endif +#if __GNUC__ >= 3 +#define C_SWITCH_SYSTEM -fno-caller-saves +#else #define C_SWITCH_SYSTEM -fno-caller-saves -fvtable-thunks +#endif + #define LIBS_SYSTEM -lwinmm #define WIN32_LEAN_AND_MEAN diff --text -u 'xemacs-21.5.9/src/s/mingw32.h' 'xemacs-21.5.10/src/s/mingw32.h' Index: ./src/s/mingw32.h --- ./src/s/mingw32.h Wed Mar 13 17:53:23 2002 +++ ./src/s/mingw32.h Mon Nov 18 15:52:45 2002 @@ -1,6 +1,6 @@ /* system description file for mingw32. Copyright (C) 1993, 1994, 1995, 1999 Free Software Foundation, Inc. - Copyright (C) 2001 Ben Wing. + Copyright (C) 2001, 2002 Ben Wing. This file is part of XEmacs. @@ -21,6 +21,15 @@ /* based on cygwin32.h by Andy Piper */ +/* NOTE: MinGW is a way of using GCC to target the native Windows + environment. This works similarly to building with Cygwin, but the + resulting executable does not use the Cygwin DLL. Instead, MINGW + provides import libraries for the standard C library DLL's (specifically + CRTDLL -- #### how does this differ from MSVCRT and LIBC.LIB?). This + means that code for MinGW will be very similar to code written for + VC++. See comment in windowsnt.h for more information on how Cygwin + and native Windows relate. */ + #include "win32-native.h" #define MINGW diff --text -u 'xemacs-21.5.9/src/s/windowsnt.h' 'xemacs-21.5.10/src/s/windowsnt.h' Index: ./src/s/windowsnt.h --- ./src/s/windowsnt.h Fri Jun 21 06:19:10 2002 +++ ./src/s/windowsnt.h Mon Nov 18 15:52:46 2002 @@ -44,12 +44,8 @@ that give you direct access to the Win32 API -- XEmacs uses this to provide GUI support under Cygwin. The two environments also use different compilers -- Native Windows uses Visual C++, and Cygwin uses - GCC. (MINGW, however, is a way of using GCC to target the Native - Windows environment. This works similarly to building with Cygwin, but - the resulting executable does not use the Cygwin DLL. Instead, MINGW - provides import libraries for the standard C library DLL's - (specifically CRTDLL -- #### how does this differ from MSVCRT and - LIBC.LIB?).) + GCC. (MinGW, however, is a way of using GCC to target the Native + Windows environment. See comment in mingw32.h.) 2. There are two windowing environments we can target XEmacs for when running under MS Windows -- Windows native, and X. (It may seem strange @@ -118,8 +114,6 @@ #define NTHEAP_PROBE_BASE 1 -#define LISP_FLOAT_TYPE - #ifdef HAVE_X_WINDOWS #define HAVE_XREGISTERIMINSTANTIATECALLBACK diff --text -u 'xemacs-21.5.9/src/scrollbar-gtk.c' 'xemacs-21.5.10/src/scrollbar-gtk.c' Index: ./src/scrollbar-gtk.c --- ./src/scrollbar-gtk.c Fri Jun 21 06:18:44 2002 +++ ./src/scrollbar-gtk.c Wed Nov 27 16:15:14 2002 @@ -436,8 +436,9 @@ void gtk_update_frame_scrollbars (struct frame *f) { - /* Consider this code to be "in_display" so that we abort() if Fsignal() - gets called. */ + /* Consider this code to be "in_display" (in a critical section) so we + abort() if elisp or QUIT is not properly wrapped -- see + enter_redisplay_critical_section(). */ in_display++; gtk_scrollbar_loop (GTK_UPDATE_FRAME_SCROLLBARS, f->root_window, XWINDOW_MIRROR (f->root_mirror), diff --text -u 'xemacs-21.5.9/src/scrollbar-x.c' 'xemacs-21.5.10/src/scrollbar-x.c' Index: ./src/scrollbar-x.c --- ./src/scrollbar-x.c Fri Jun 21 06:18:44 2002 +++ ./src/scrollbar-x.c Wed Nov 27 16:15:14 2002 @@ -686,8 +686,9 @@ void x_update_frame_scrollbars (struct frame *f) { - /* Consider this code to be "in_display" so that we abort() if Fsignal() - gets called. */ + /* Consider this code to be "in_display" (in a critical section) so we + abort() if elisp or QUIT is not properly wrapped -- see + enter_redisplay_critical_section(). */ in_display++; x_scrollbar_loop (X_UPDATE_FRAME_SCROLLBARS, f->root_window, XWINDOW_MIRROR (f->root_mirror), 0, (Window) NULL); diff --text -u 'xemacs-21.5.9/src/search.c' 'xemacs-21.5.10/src/search.c' Index: ./src/search.c --- ./src/search.c Mon Jun 24 19:01:22 2002 +++ ./src/search.c Wed Oct 2 18:31:22 2002 @@ -111,6 +111,7 @@ Lisp_Object Vskip_chars_range_table; static void set_search_regs (struct buffer *buf, Charbpos beg, Charcount len); +static void clear_unused_search_regs (struct re_registers *regp, int no_sub); static Charbpos simple_search (struct buffer *buf, Ibyte *base_pat, Bytecount len, Bytebpos pos, Bytebpos lim, EMACS_INT n, Lisp_Object trt); @@ -1222,10 +1223,11 @@ if (len == 0) { set_search_regs (buf, charbpos, 0); + clear_unused_search_regs (&search_regs, 0); return charbpos; } - /* Searching 0 times means don't move. */ + /* Searching 0 times means noop---don't move, don't touch registers. */ if (n == 0) return charbpos; @@ -1481,6 +1483,7 @@ end = bytebpos_to_charbpos (buf, pos + buf_len); } set_search_regs (buf, beg, end - beg); + clear_unused_search_regs (&search_regs, 0); return retval; } @@ -1844,6 +1847,7 @@ Charbpos bufend = bytebpos_to_charbpos (buf, bytstart + len); set_search_regs (buf, bufstart, bufend - bufstart); + clear_unused_search_regs (&search_regs, 0); } if ((n -= direction) != 0) @@ -1934,6 +1938,7 @@ Charbpos bufend = bytebpos_to_charbpos (buf, bytstart + len); set_search_regs (buf, bufstart, bufend - bufstart); + clear_unused_search_regs (&search_regs, 0); } if ((n -= direction) != 0) @@ -1953,8 +1958,8 @@ return bytebpos_to_charbpos (buf, pos); } -/* Record beginning BEG and end BEG + LEN - for a match just found in the current buffer. */ +/* Record the whole-match data (beginning BEG and end BEG + LEN) and the + buffer for a match just found. */ static void set_search_regs (struct buffer *buf, Charbpos beg, Charcount len) @@ -1973,6 +1978,24 @@ last_thing_searched = wrap_buffer (buf); } +/* Clear unused search registers so match data will be null. + REGP is a pointer to the register structure to clear, usually the global + search_regs. + NO_SUB is the number of subexpressions to allow for. (Does not count + the whole match, ie, for a string search NO_SUB == 0.) + It is an error if NO_SUB > REGP.num_regs - 1. */ + +static void +clear_unused_search_regs (struct re_registers *regp, int no_sub) +{ + /* This function has been Mule-ized. */ + int i; + + assert (no_sub >= 0 && no_sub < regp->num_regs); + for (i = no_sub + 1; i < regp->num_regs; i++) + regp->start[i] = regp->end[i] = -1; +} + /* Given a string of words separated by word delimiters, compute a regexp that matches those exact words diff --text -u 'xemacs-21.5.9/src/sheap.c' 'xemacs-21.5.10/src/sheap.c' Index: ./src/sheap.c --- ./src/sheap.c Sat Jul 6 14:48:22 2002 +++ ./src/sheap.c Fri Dec 13 13:29:06 2002 @@ -27,7 +27,7 @@ #include #define STATIC_HEAP_BASE 0x800000 -#define STATIC_HEAP_SLOP 0xf0000 +#define STATIC_HEAP_SLOP 0x40000 #define STATIC_HEAP_SIZE \ (STATIC_HEAP_BASE + SHEAP_ADJUSTMENT + STATIC_HEAP_SLOP) #define BLOCKSIZE (1<<12) @@ -82,19 +82,18 @@ { if (static_heap_ptr + size >= static_heap_base + static_heap_size) { - printf( - -"\nRequested %d bytes, static heap exhausted! base is %p, current ptr -is %p. You have exhausted the static heap. - -If you are simply trying to compile, remove sheap-adjust.h -and recompile from the top level. If this doesn't -work then STATIC_HEAP_SLOP (defined in this file) is too small. - -If you want to run temacs, change SHEAP_ADJUSTMENT in sheap-adjust.h -to 0 or a +ve number. Generally you should *not* try to run temacs -with a static heap, you should dump first.\n", size, -static_heap_base, static_heap_ptr); + printf ( +"\nRequested %d bytes, static heap exhausted! base is %p, current ptr\n" +"is %p. You have exhausted the static heap. \n" +"\n" +"If you are simply trying to compile, remove sheap-adjust.h\n" +"and recompile from the top level. If this doesn't\n" +"work then STATIC_HEAP_SLOP (defined in this file) is too small.\n" +"\n" +"If you want to run temacs, change SHEAP_ADJUSTMENT in sheap-adjust.h\n" +"to 0 or a +ve number. Generally you should *not* try to run temacs\n" +"with a static heap, you should dump first.\n", + size, static_heap_base, static_heap_ptr); exit(-1); return 0; @@ -130,17 +129,17 @@ Bytecount lost = STATIC_HEAP_SIZE - (static_heap_ptr - static_heap_buffer); char buf[200]; - sprintf (buf, "Static heap usage: %ld of %ld, slop is %ld", - (long) (static_heap_ptr - static_heap_buffer), - (long) (STATIC_HEAP_SIZE), - (long) STATIC_HEAP_SLOP); + sprintf (buf, "Static heap usage: %ldk of %ldk, slop is %ldk", + (long) ((static_heap_ptr - static_heap_buffer) /1024), + (long) (STATIC_HEAP_SIZE / 1024), + (long) STATIC_HEAP_SLOP / 1024); if (lost > STATIC_HEAP_SLOP) { sprintf (buf + strlen (buf), " -- %ldk wasted", (long)(lost/1024)); if (die_if_pure_storage_exceeded) { sheap_adjust_h(STATIC_HEAP_SLOP - lost); sprintf (buf + strlen (buf), " -- reset to %ldk", - (long) (STATIC_HEAP_SIZE + STATIC_HEAP_SLOP - lost)); + (long) ((STATIC_HEAP_SIZE + STATIC_HEAP_SLOP - lost) / 1024)); rc = -1; } message ("%s", buf); diff --text -u 'xemacs-21.5.9/src/signal.c' 'xemacs-21.5.10/src/signal.c' Index: ./src/signal.c --- ./src/signal.c Fri Jun 21 06:18:46 2002 +++ ./src/signal.c Wed Nov 27 16:15:14 2002 @@ -977,7 +977,8 @@ if (quit_check_signal_happened) { - /* Since arbitrary Lisp code may be executed, GC might happen, + /* Since arbitrary Lisp code may be executed (e.g. through a menu + filter, see backtrace directly above), GC might happen, which would majorly fuck a lot of things, e.g. re_match() [string gets relocated] and lots of other code that's not prepared to handle GC in QUIT. */ diff --text -u 'xemacs-21.5.9/src/specifier.c' 'xemacs-21.5.10/src/specifier.c' Index: ./src/specifier.c --- ./src/specifier.c Mon Jul 29 18:21:24 2002 +++ ./src/specifier.c Tue Sep 24 23:59:25 2002 @@ -1750,6 +1750,9 @@ Lisp_Object list_to_build_up = Qnil; struct gcpro gcpro1; + if (NILP (inst_list)) + return; + GCPRO1 (list_to_build_up); list_to_build_up = build_up_processed_list (specifier, locale, inst_list); /* Now handle REMOVE_LOCALE_TYPE and REMOVE_ALL. These are the diff --text -u 'xemacs-21.5.9/src/symbols.c' 'xemacs-21.5.10/src/symbols.c' Index: ./src/symbols.c --- ./src/symbols.c Mon Jul 29 18:21:24 2002 +++ ./src/symbols.c Mon Nov 18 15:52:41 2002 @@ -603,8 +603,12 @@ invalid_change ("Use `set-specifier' to change a specifier's value", sym); - if (symbol_is_constant (sym, val) - || (SYMBOL_IS_KEYWORD (sym) && !EQ (newval, sym))) + if ( +#ifdef HAVE_SHLIB +!(unloading_module && UNBOUNDP(newval)) && +#endif + (symbol_is_constant (sym, val) + || (SYMBOL_IS_KEYWORD (sym) && !EQ (newval, sym)))) signal_error_1 (Qsetting_constant, UNBOUNDP (newval) ? list1 (sym) : list2 (sym, newval)); } @@ -1807,12 +1811,42 @@ goto retry; case SYMVAL_FIXNUM_FORWARD: + case SYMVAL_CONST_FIXNUM_FORWARD: case SYMVAL_BOOLEAN_FORWARD: - case SYMVAL_OBJECT_FORWARD: + case SYMVAL_CONST_BOOLEAN_FORWARD: case SYMVAL_DEFAULT_BUFFER_FORWARD: case SYMVAL_DEFAULT_CONSOLE_FORWARD: if (UNBOUNDP (newval)) - invalid_change ("Cannot makunbound", symbol); + { +#ifdef HAVE_SHLIB + if (unloading_module) + { + sym->value = newval; + return newval; + } + else +#endif + invalid_change ("Cannot makunbound", symbol); + } + break; + + case SYMVAL_OBJECT_FORWARD: + case SYMVAL_CONST_OBJECT_FORWARD: + if (UNBOUNDP (newval)) + { +#ifdef HAVE_SHLIB + if (unloading_module) + { + unstaticpro_nodump ((Lisp_Object *) + symbol_value_forward_forward + (XSYMBOL_VALUE_FORWARD (valcontents))); + sym->value = newval; + return newval; + } + else +#endif + invalid_change ("Cannot makunbound", symbol); + } break; /* case SYMVAL_UNBOUND_MARKER: break; */ @@ -3501,6 +3535,12 @@ fun = wrap_subr (subr); XSYMBOL (sym)->function = fun; + +#ifdef HAVE_SHLIB + /* If it is declared in a module, update the load history */ + if (initialized) + LOADHIST_ATTACH (sym); +#endif } /* Define a lisp macro using a Lisp_Subr. */ @@ -3515,6 +3555,12 @@ fun = wrap_subr (subr); XSYMBOL (sym)->function = Fcons (Qmacro, fun); + +#ifdef HAVE_SHLIB + /* If it is declared in a module, update the load history */ + if (initialized) + LOADHIST_ATTACH (sym); +#endif } static void @@ -3655,14 +3701,17 @@ { Lisp_Object sym; -#if defined(HAVE_SHLIB) +#ifdef HAVE_SHLIB /* * As with defsubr(), this will only be called in a dumped Emacs when * we are adding variables from a dynamically loaded module. That means * we can't use purespace. Take that into account. */ if (initialized) - sym = Fintern (build_string (symbol_name), Qnil); + { + sym = Fintern (build_string (symbol_name), Qnil); + LOADHIST_ATTACH (sym); + } else #endif sym = Fintern (make_string_nocopy ((const Ibyte *) symbol_name, diff --text -u 'xemacs-21.5.9/src/symeval.h' 'xemacs-21.5.10/src/symeval.h' Index: ./src/symeval.h --- ./src/symeval.h Fri Mar 29 13:48:38 2002 +++ ./src/symeval.h Mon Nov 18 15:52:41 2002 @@ -361,7 +361,8 @@ lrecord_type_symbol_value_forward, /* lrecord_type_index */ \ 1, /* mark bit */ \ 1, /* c_readonly bit */ \ - 1 /* lisp_readonly bit */ \ + 1, /* lisp_readonly bit */ \ + 0 /* unused */ \ }, \ 0, /* next */ \ 0, /* uid */ \ diff --text -u 'xemacs-21.5.9/src/sysdep.c' 'xemacs-21.5.10/src/sysdep.c' Index: ./src/sysdep.c --- ./src/sysdep.c Tue Jul 9 20:58:12 2002 +++ ./src/sysdep.c Wed Nov 27 16:15:14 2002 @@ -2576,7 +2576,8 @@ /* Like qxe_open, only when open() is interrupted by EINTR, check for QUIT. This allows the callers of this function to be interrupted with C-g when, say, reading from named pipes. However, this should - be used with caution, as it can GC. + be used with caution, as it can run random Lisp code (although it + cannot GC). This function will not function as expected on systems where open() is not interrupted by C-g. However, the worst that can happen is diff --text -u 'xemacs-21.5.9/src/syswindows.h' 'xemacs-21.5.10/src/syswindows.h' Index: ./src/syswindows.h --- ./src/syswindows.h Fri Jun 21 06:18:47 2002 +++ ./src/syswindows.h Mon Nov 18 15:52:41 2002 @@ -296,72 +296,87 @@ #define CBEMAXSTRLEN 260 #endif -typedef struct { - NMHDR hdr; - BOOL fChanged; - int iNewSelection; - WCHAR szText[CBEMAXSTRLEN]; - int iWhy; +#ifndef NMCBEENDEDIT + +typedef struct +{ + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + WCHAR szText[CBEMAXSTRLEN]; + int iWhy; } NMCBEENDEDITW, *LPNMCBEENDEDITW, *PNMCBEENDEDITW; -typedef struct { - NMHDR hdr; - BOOL fChanged; - int iNewSelection; - char szText[CBEMAXSTRLEN]; - int iWhy; +typedef struct +{ + NMHDR hdr; + BOOL fChanged; + int iNewSelection; + char szText[CBEMAXSTRLEN]; + int iWhy; } NMCBEENDEDITA, *LPNMCBEENDEDITA,*PNMCBEENDEDITA; +#endif /* not NMCBEENDEDIT */ + #if (_WIN32_IE >= 0x0400) -typedef struct { - NMHDR hdr; - int iItemid; - WCHAR szText[CBEMAXSTRLEN]; -}NMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW; - -typedef struct { - NMHDR hdr; - int iItemid; - char szText[CBEMAXSTRLEN]; -}NMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA; +#ifndef NMCBEDRAGBEGIN + +typedef struct +{ + NMHDR hdr; + int iItemid; + WCHAR szText[CBEMAXSTRLEN]; +} NMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW; + +typedef struct +{ + NMHDR hdr; + int iItemid; + char szText[CBEMAXSTRLEN]; +} NMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA; + +#endif /* not NMCBEDRAGBEGIN */ + typedef struct tagNMDATETIMEFORMATA { - NMHDR nmhdr; - LPCSTR pszFormat; - SYSTEMTIME st; - LPCSTR pszDisplay; - CHAR szDisplay[64]; + NMHDR nmhdr; + LPCSTR pszFormat; + SYSTEMTIME st; + LPCSTR pszDisplay; + CHAR szDisplay[64]; } NMDATETIMEFORMATA, FAR * LPNMDATETIMEFORMATA; typedef struct tagNMDATETIMEFORMATW { - NMHDR nmhdr; - LPCWSTR pszFormat; - SYSTEMTIME st; - LPCWSTR pszDisplay; - WCHAR szDisplay[64]; + NMHDR nmhdr; + LPCWSTR pszFormat; + SYSTEMTIME st; + LPCWSTR pszDisplay; + WCHAR szDisplay[64]; } NMDATETIMEFORMATW, FAR * LPNMDATETIMEFORMATW; -typedef struct tagNMTTDISPIFNOA { - NMHDR hdr; - LPSTR lpszText; - char szText[80]; - HINSTANCE hinst; - UINT uFlags; +typedef struct tagNMTTDISPIFNOA +{ + NMHDR hdr; + LPSTR lpszText; + char szText[80]; + HINSTANCE hinst; + UINT uFlags; #if (_WIN32_IE >= 0x0300) - LPARAM lParam; + LPARAM lParam; #endif } NMTTDISPINFOA, FAR *LPNMTTDISPINFOA; -typedef struct tagNMTTDISPINFOW { - NMHDR hdr; - LPWSTR lpszText; - WCHAR szText[80]; - HINSTANCE hinst; - UINT uFlags; +typedef struct tagNMTTDISPINFOW +{ + NMHDR hdr; + LPWSTR lpszText; + WCHAR szText[80]; + HINSTANCE hinst; + UINT uFlags; #if (_WIN32_IE >= 0x0300) - LPARAM lParam; + LPARAM lParam; #endif } NMTTDISPINFOW, FAR *LPNMTTDISPINFOW; @@ -539,6 +554,12 @@ /* would be encapsulatable but for Cygwin problems */ #ifdef ERROR_WHEN_NONINTERCEPTED_FUNS_USED +#undef DdeCreateStringHandle +#define DdeCreateStringHandle error use qxeDdeCreateStringHandle or DdeCreateStringHandleA/DdeCreateStringHandleW +#endif +HSZ qxeDdeCreateStringHandle (DWORD idInst, const Extbyte * psz, int iCodePage); + +#ifdef ERROR_WHEN_NONINTERCEPTED_FUNS_USED #undef RegConnectRegistry #define RegConnectRegistry error use qxeRegConnectRegistry or RegConnectRegistryA/RegConnectRegistryW #endif diff --text -u 'xemacs-21.5.9/src/toolbar-msw.c' 'xemacs-21.5.10/src/toolbar-msw.c' Index: ./src/toolbar-msw.c --- ./src/toolbar-msw.c Sun Jul 7 06:05:57 2002 +++ ./src/toolbar-msw.c Sat Nov 30 17:10:26 2002 @@ -111,11 +111,11 @@ i = qxeSendMessage (toolbarwnd, TB_BUTTONCOUNT, 0, 0); for (i--; i >= 0; i--) { - qxeSendMessage (toolbarwnd, TB_GETBUTTON, (WPARAM)i, - (LPARAM)&info); - Fremhash(make_int(info.idCommand), - FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE(f)); - qxeSendMessage (toolbarwnd, TB_DELETEBUTTON, (WPARAM)i, 0); + qxeSendMessage (toolbarwnd, TB_GETBUTTON, (WPARAM) i, + (LPARAM) &info); + Fremhash (make_int (info.idCommand), + FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE (f)); + qxeSendMessage (toolbarwnd, TB_DELETEBUTTON, (WPARAM) i, 0); } /* finally get rid of the image list assuming it clears up its diff --text -u 'xemacs-21.5.9/src/unexcw.c' 'xemacs-21.5.10/src/unexcw.c' Index: ./src/unexcw.c --- ./src/unexcw.c Wed Mar 13 17:53:02 2002 +++ ./src/unexcw.c Mon Nov 18 15:52:41 2002 @@ -469,7 +469,7 @@ long n; for (; size > 0; size -= sizeof (page)) { - n = size > (long) sizeof (page) ? sizeof (page) : size; + n = size > (long) sizeof (page) ? (long) sizeof (page) : size; if (read (a_out, page, n) != n || write (a_new, page, n) != n) PERROR ("dump_out()"); } diff --text -u 'xemacs-21.5.9/src/unicode.c' 'xemacs-21.5.10/src/unicode.c' Index: ./src/unicode.c --- ./src/unicode.c Tue Jul 2 21:32:37 2002 +++ ./src/unicode.c Sun Sep 1 15:41:45 2002 @@ -159,6 +159,8 @@ Lisp_Object Qutf_16_little_endian, Qutf_16_bom; Lisp_Object Qutf_16_little_endian_bom; +Lisp_Object Qutf_8_bom; + #ifdef MULE /* #### Using ints for to_unicode is OK (as long as they are >= 32 bits). @@ -1924,6 +1926,7 @@ /* DEFINE_DETECTOR (utf_7); */ DEFINE_DETECTOR (utf_8); DEFINE_DETECTOR_CATEGORY (utf_8, utf_8); +DEFINE_DETECTOR_CATEGORY (utf_8, utf_8_bom); DEFINE_DETECTOR (ucs_4); DEFINE_DETECTOR_CATEGORY (ucs_4, ucs_4); DEFINE_DETECTOR (utf_16); @@ -2081,6 +2084,9 @@ struct utf_8_detector { + int byteno; + int first_byte; + int second_byte; int in_utf_8_byte; }; @@ -2093,11 +2099,32 @@ while (n--) { UExtbyte c = *src++; + switch (data->byteno) + { + case 0: + data->first_byte = c; + break; + case 1: + data->second_byte = c; + break; + case 2: + if (data->first_byte == 0xef && + data->second_byte == 0xbb && + c == 0xbf) + { + SET_DET_RESULTS (st, utf_8, DET_NEARLY_IMPOSSIBLE); + DET_RESULT (st, utf_8_bom) = DET_NEAR_CERTAINTY; + return; + } + break; + } + switch (data->in_utf_8_byte) { case 0: if (c == ISO_CODE_ESC || c == ISO_CODE_SI || c == ISO_CODE_SO) { + SET_DET_RESULTS (st, utf_8, DET_NEARLY_IMPOSSIBLE); DET_RESULT (st, utf_8) = DET_SOMEWHAT_UNLIKELY; return; } @@ -2113,6 +2140,7 @@ data->in_utf_8_byte = 1; else if (c >= 0x80) { + SET_DET_RESULTS (st, utf_8, DET_NEARLY_IMPOSSIBLE); DET_RESULT (st, utf_8) = DET_SOMEWHAT_UNLIKELY; return; } @@ -2120,14 +2148,17 @@ default: if ((c & 0xc0) != 0x80) { + SET_DET_RESULTS (st, utf_8, DET_NEARLY_IMPOSSIBLE); DET_RESULT (st, utf_8) = DET_SOMEWHAT_UNLIKELY; return; } else data->in_utf_8_byte--; } + + data->byteno++; } - DET_RESULT (st, utf_8) = DET_SOMEWHAT_LIKELY; + SET_DET_RESULTS (st, utf_8, DET_SOMEWHAT_LIKELY); } static void @@ -2256,6 +2287,9 @@ DEFSYMBOL (Qutf_16_little_endian); DEFSYMBOL (Qutf_16_bom); DEFSYMBOL (Qutf_16_little_endian_bom); + + DEFSYMBOL (Qutf_8); + DEFSYMBOL (Qutf_8_bom); } void @@ -2272,6 +2306,7 @@ INITIALIZE_DETECTOR (utf_8); DETECTOR_HAS_METHOD (utf_8, detect); INITIALIZE_DETECTOR_CATEGORY (utf_8, utf_8); + INITIALIZE_DETECTOR_CATEGORY (utf_8, utf_8_bom); INITIALIZE_DETECTOR (ucs_4); DETECTOR_HAS_METHOD (ucs_4, detect); diff --text -u 'xemacs-21.5.9/src/window.c' 'xemacs-21.5.10/src/window.c' Index: ./src/window.c --- ./src/window.c Fri Aug 9 00:30:04 2002 +++ ./src/window.c Mon Dec 16 11:32:54 2002 @@ -51,7 +51,7 @@ #include "redisplay.h" #include "window-impl.h" -Lisp_Object Qwindowp, Qwindow_live_p, Qwindow_configurationp; +Lisp_Object Qwindowp, Qwindow_live_p; Lisp_Object Qdisplay_buffer; #ifdef MEMORY_USAGE_STATS @@ -119,20 +119,14 @@ /* Non-nil means it's the function to call to display temp buffers. */ Lisp_Object Vtemp_buffer_show_function; -Lisp_Object Vtemp_buffer_show_hook; - /* If a window gets smaller than either of these, it is removed. */ Fixnum window_min_height; Fixnum window_min_width; -/* Hook run at end of temp_output_buffer_show. */ -Lisp_Object Qtemp_buffer_show_hook; - /* Number of lines of continuity in scrolling by screenfuls. */ Fixnum next_screen_context_lines; -/* List of freed window configurations with 1 - 10 windows. */ -static Lisp_Object Vwindow_configuration_free_list[10]; +Lisp_Object Qcurrent_window_configuration, Qset_window_configuration; Lisp_Object Qtruncate_partial_width_windows; @@ -1815,20 +1809,24 @@ DEFUN ("set-window-point", Fset_window_point, 2, 2, 0, /* Make point value in WINDOW be at position POS in WINDOW's buffer. -If WINDOW is the selected window, this actually changes the buffer's point -instead of the window's point. (The equivalence of the selected window's -point with its buffer's point is maintained throughout XEmacs.) +If WINDOW is the selected window, and window's buffer is the current +buffer, this actually changes the buffer's point instead of the window's +point. (The equivalence of the selected window's point with its buffer's +point is maintained throughout XEmacs. However, enforcing the additional +restriction on the current buffer is "bug compatible" with FSF and is +perhaps more logical.) */ (window, pos)) { struct window *w = decode_window (window); CHECK_INT_COERCE_MARKER (pos); + /* Don't dereference selected-window because there may not be one -- e.g. at startup */ - if (EQ (wrap_window (w), Fselected_window (Qnil))) - /* Even though window selected, buffer may not be current */ - Fgoto_char (pos, w->buffer); + if (EQ (wrap_window (w), Fselected_window (Qnil)) + && EQ (w->buffer, Fcurrent_buffer ())) + Fgoto_char (pos, Qnil); else set_marker_restricted (w->pointm[CURRENT_DISP], pos, w->buffer); @@ -2029,15 +2027,7 @@ reinitialized by the window-configuration code as necessary. */ finalize_window ((void *) w, 0); - /* "Nobody should be accessing anything in this object any more...", - I said, but unfortunately that's not quite true. - set-window-configuration undeletes the window and relies on - certain items to be there already. Fuckme! we really should - rewrite it in Lisp and just recreate the windows. (But does any - code depend on the pointers being the same? At the very least, - we should reinit everything in the window.) - - Nobody should be accessing anything in this object any more, + /* Nobody should be accessing anything in this object any more, and making them Qnil allows for better GC'ing in case a pointer to the dead window continues to hang around. Zero all other structs in case someone tries to access something through them. @@ -2055,12 +2045,7 @@ through the `next' slot. This might not seem so bad, as they're deleted, and will presumably be GCed - but if even *one* of those windows is still being pointed to, by the user, or by a window - configuration, then *all* of those windows stick around. - - Since the window-configuration code doesn't need any of the - pointers to other windows (they are all recreated from the - window-config data), we set them all to nil so that we - are able to collect more actual garbage. */ + configuration, then *all* of those windows stick around. */ #define WINDOW_SLOT(slot) #define WINDOW_SAVED_SLOT(slot, compare) w->slot = Qnil; @@ -2195,9 +2180,7 @@ unchain_marker (w->start[DESIRED_DISP]); unchain_marker (w->start[CMOTION_DISP]); unchain_marker (w->sb_point); - /* This breaks set-window-configuration if windows in the saved - configuration get deleted and multiple frames are in use. */ - /* w->buffer = Qnil; */ + w->buffer = Qnil; } /* close up the hole in the sibling list */ @@ -3551,20 +3534,8 @@ tem = w->buffer; if (NILP (tem)) invalid_operation ("Window is deleted", Qunbound); - - /* While this seems like a logical thing to do, it causes problems - because of saved window configurations. It is possible for a - buffer to get restored into a window in which it is already being - displayed, but start and point are actually at completely - different locations. So we let this function complete fully and - it will then make sure redisplay correctly updates things. - - #### This is a kludge. The correct approach is not to do this - but to fix set-window-configuration. */ -#if 0 else if (EQ (tem, buffer)) return Qnil; -#endif else if (! EQ (tem, Qt)) /* w->buffer is t when the window is first being set up. */ { @@ -3743,30 +3714,6 @@ set_marker_restricted (w->start[CURRENT_DISP], make_int (1), buf); set_marker_restricted (w->pointm[CURRENT_DISP], make_int (1), buf); set_marker_restricted (w->sb_point, make_int (1), buf); - - /* Run temp-buffer-show-hook, with the chosen window selected. */ - if (!preparing_for_armageddon) - { - Lisp_Object tem; - tem = Fboundp (Qtemp_buffer_show_hook); - if (!NILP (tem)) - { - tem = Fsymbol_value (Qtemp_buffer_show_hook); - if (!NILP (tem)) - { - int count = specpdl_depth (); - - /* Select the window that was chosen, for running - the hook. */ - record_unwind_protect (save_window_excursion_unwind, - Fcurrent_window_configuration (Qnil)); - - Fselect_window (window, Qnil); - run_hook (Qtemp_buffer_show_hook); - unbind_to (count); - } - } - } } } @@ -5146,790 +5093,7 @@ } #endif /* MEMORY_USAGE_STATS */ - -/************************************************************************/ -/* Window configurations */ -/************************************************************************/ - -/* #### This window configuration stuff has had serious bugs lurking in it - for years; it would be a -huge- win if this was reimplemented in lisp. - */ - -/* If you add anything to this structure make sure saved_window_equal - knows about it. */ -struct saved_window -{ - Lisp_Object window; /* window */ - Lisp_Object buffer; /* buffer */ - Lisp_Object start; /* copied marker */ - Lisp_Object pointm; /* copied marker */ - Lisp_Object sb_point; /* copied marker */ - Lisp_Object mark; /* copied marker */ - int pixel_left; - int pixel_top; - int pixel_width; - int pixel_height; - int hscroll; - Charcount modeline_hscroll; - int parent_index; /* index into saved_windows */ - int prev_index; /* index into saved_windows */ - char start_at_line_beg; /* boolean */ - -#define WINDOW_SLOT_DECLARATION -#define WINDOW_SLOT(slot) -#define WINDOW_SAVED_SLOT(slot, compare) Lisp_Object slot; -#include "winslots.h" -}; - -/* If you add anything to this structure make sure window_config_equal - knows about it. */ -struct window_config -{ - struct lcrecord_header header; - /* int frame_width; No longer needed, JV - int frame_height; */ -#if 0 /* FSFmacs */ - Lisp_Object selected_frame; -#endif - Lisp_Object current_window; - Lisp_Object current_buffer; - Lisp_Object minibuffer_scroll_window; - Lisp_Object root_window; - int minibuf_height; /* 0 = no minibuffer, <0, size in lines, >0 in pixels */ - /* Record the values of window-min-width and window-min-height - so that window sizes remain consistent with them. */ - int min_width, min_height; - int saved_windows_count; - /* Zero-sized arrays aren't ANSI C */ - struct saved_window saved_windows[1]; -}; - -#define SAVED_WINDOW_N(conf, n) (&((conf)->saved_windows[(n)])) -#define XWINDOW_CONFIGURATION(x) XRECORD (x, window_configuration, struct window_config) -#define wrap_window_configuration(p) wrap_record (p, window_configuration) -#define WINDOW_CONFIGURATIONP(x) RECORDP (x, window_configuration) -#define CHECK_WINDOW_CONFIGURATION(x) CHECK_RECORD (x, window_configuration) - -#ifdef USE_KKCC -static const struct struct_description saved_window_description = { -}; - -static const struct lrecord_description window_config_description [] = { - { XD_LISP_OBJECT, offsetof (struct window_config, current_window) }, - { XD_LISP_OBJECT, offsetof (struct window_config, current_buffer) }, - { XD_LISP_OBJECT, offsetof (struct window_config, minibuffer_scroll_window) }, - { XD_LISP_OBJECT, offsetof (struct window_config, root_window) }, - { XD_END } -}; -#endif /* USE_KKCC */ - -static Lisp_Object -mark_window_config (Lisp_Object obj) -{ - struct window_config *config = XWINDOW_CONFIGURATION (obj); - int i; - mark_object (config->current_window); - mark_object (config->current_buffer); - mark_object (config->minibuffer_scroll_window); - mark_object (config->root_window); - - for (i = 0; i < config->saved_windows_count; i++) - { - struct saved_window *s = SAVED_WINDOW_N (config, i); - mark_object (s->window); - mark_object (s->buffer); - mark_object (s->start); - mark_object (s->pointm); - mark_object (s->sb_point); - mark_object (s->mark); -#if 0 - /* #### This looked like this. I do not see why specifier cached - values should not be marked, as such specifiers as toolbars - might have GC-able instances. Freed configs are not marked, - aren't they? -- kkm */ - mark_object (s->dedicated); -#else -#define WINDOW_SLOT(slot) -#define WINDOW_SAVED_SLOT(slot, compare) mark_object (s->slot); -#include "winslots.h" -#endif - } - return Qnil; -} - -inline static Bytecount -sizeof_window_config_for_n_windows (int n) -{ - return FLEXIBLE_ARRAY_STRUCT_SIZEOF (struct window_config, - struct saved_window, saved_windows, n); -} - -static Bytecount -sizeof_window_config (const void *h) -{ - const struct window_config *c = (const struct window_config *) h; - return sizeof_window_config_for_n_windows (c->saved_windows_count); -} - -static void -print_window_config (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) -{ - struct window_config *config = XWINDOW_CONFIGURATION (obj); - if (print_readably) - printing_unreadable_object ("#", - config->header.uid); - write_c_string (printcharfun, "#", config->header.uid); -} - -#ifdef USE_KKCC -DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION ("window-configuration", - window_configuration, - 0, /*dumpable-flag*/ - mark_window_config, - print_window_config, - 0, 0, 0, - 0/*window_config_description*/, sizeof_window_config, - struct window_config); -#else /* not USE_KKCC */ -DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION ("window-configuration", - window_configuration, - mark_window_config, - print_window_config, - 0, 0, 0, 0, sizeof_window_config, - struct window_config); -#endif /* not USE_KKCC */ - -/* Returns a boolean indicating whether the two saved windows are - identical. */ -static int -saved_window_equal (struct saved_window *win1, struct saved_window *win2) -{ -#define WINDOW_SLOT(slot) -#define WINDOW_SAVED_SLOT(slot, compare) \ - if (!compare (win1->slot, win2->slot)) \ - return 0; -#include "winslots.h" - - return - EQ (win1->window, win2->window) && - EQ (win1->buffer, win2->buffer) && - internal_equal (win1->start, win2->start, 0) && - internal_equal (win1->pointm, win2->pointm, 0) && - internal_equal (win1->sb_point, win2->sb_point, 0) && - internal_equal (win1->mark, win2->mark, 0) && - win1->pixel_left == win2->pixel_left && - win1->pixel_top == win2->pixel_top && - win1->pixel_width == win2->pixel_width && - win1->pixel_height == win2->pixel_height && - win1->hscroll == win2->hscroll && - win1->modeline_hscroll == win2->modeline_hscroll && - win1->parent_index == win2->parent_index && - win1->prev_index == win2->prev_index && - win1->start_at_line_beg == win2->start_at_line_beg; -} - -/* Returns a boolean indicating whether the two given configurations - are identical. */ -static int -window_config_equal (Lisp_Object conf1, Lisp_Object conf2) -{ - struct window_config *fig1, *fig2; - int i; - - /* First check if they are truly the same. */ - if (EQ (conf1, conf2)) - return 1; - - fig1 = XWINDOW_CONFIGURATION (conf1); - fig2 = XWINDOW_CONFIGURATION (conf2); - - if (!((fig1->saved_windows_count == fig2->saved_windows_count) && - EQ (fig1->current_window, fig2->current_window) && - EQ (fig1->current_buffer, fig2->current_buffer) && - EQ (fig1->root_window, fig2->root_window) && - EQ (fig1->minibuffer_scroll_window, fig2->minibuffer_scroll_window))) - /* && - fig1->frame_width == fig2->frame_width && - fig1->frame_height == fig2->frame_height)) */ - return 0; - - for (i = 0; i < fig1->saved_windows_count; i++) - { - if (!saved_window_equal (SAVED_WINDOW_N (fig1, i), - SAVED_WINDOW_N (fig2, i))) - return 0; - } - - return 1; -} - -DEFUN ("window-configuration-p", Fwindow_configuration_p, 1, 1, 0, /* -Return t if OBJECT is a window-configuration object. -*/ - (object)) -{ - return WINDOW_CONFIGURATIONP (object) ? Qt : Qnil; -} - -static int -mark_windows_in_use_closure (struct window *w, void *closure) -{ - int mark = *(int *)closure; - w->config_mark = mark; - return 0; -} - -static void -mark_windows_in_use (struct frame *f, int mark) -{ - map_windows (f, mark_windows_in_use_closure, &mark); -} - -/* Lisp_Object return value so it can be used in record_unwind_protect() */ -static Lisp_Object -free_window_configuration (Lisp_Object window_config) -{ - int i; - struct window_config *config = XWINDOW_CONFIGURATION (window_config); - - /* Free all the markers. It's not completely necessary that - we do this (window configs sitting in a free list aren't - marked normally so the markers wouldn't be marked anyway) - but it's more efficient. */ - for (i = 0; i < config->saved_windows_count; i++) - { - struct saved_window *p = SAVED_WINDOW_N (config, i); - - if (!NILP (p->pointm)) - { - free_marker (XMARKER (p->pointm)); - p->pointm = Qnil; - } - if (!NILP (p->start)) - { - free_marker (XMARKER (p->start)); - p->start = Qnil; - } - if (!NILP (p->sb_point)) - { - free_marker (XMARKER (p->sb_point)); - p->sb_point = Qnil; - } - if (!NILP (p->mark)) - { - free_marker (XMARKER (p->mark)); - p->mark = Qnil; - } - } - - if (config->saved_windows_count <= countof (Vwindow_configuration_free_list)) - free_managed_lcrecord (Vwindow_configuration_free_list - [config->saved_windows_count - 1], - window_config); - - return Qnil; -} - -DEFUN ("set-window-configuration", Fset_window_configuration, 1, 1, 0, /* -Set the configuration of windows and buffers as specified by CONFIGURATION. -CONFIGURATION must be a value previously returned -by `current-window-configuration' (which see). -*/ - (configuration)) -{ - struct window *w; - struct window_config *config; - struct saved_window *p; - Lisp_Object new_current_buffer; - int k; - Lisp_Object frame; - struct frame *f; - struct gcpro gcpro1; - Lisp_Object old_window_config; - /* int previous_frame_height; - int previous_frame_width;*/ - int previous_pixel_top; - int previous_pixel_height; - int previous_pixel_left; - int previous_pixel_width; - int previous_minibuf_height, previous_minibuf_top,previous_minibuf_width; - int real_font_height; - int converted_minibuf_height,target_minibuf_height; - int specpdl_count = specpdl_depth (); - - GCPRO1 (configuration); - - CHECK_WINDOW_CONFIGURATION (configuration); - config = XWINDOW_CONFIGURATION (configuration); - - frame = XWINDOW (SAVED_WINDOW_N (config, 0)->window)->frame; - f = XFRAME (frame); - - /* Do not signal an error here if the frame was deleted. There are - reasonable cases where we could get here with a deleted frame and - just want to do close to nothing instead. */ - - if (FRAME_LIVE_P (f)) - { - /* restore the frame characteristics */ - - new_current_buffer = config->current_buffer; - if (!BUFFER_LIVE_P (XBUFFER (new_current_buffer))) - new_current_buffer = Qnil; - - /* - * Assumed precondition: w->config_mark = 0 for all w - * This procedure should ensure this is true by the time it exits - * to ensure the precondition for future calls. - * - * We use w->config_mark to know whether we're modifying a - * window that is currently visible on the frame (#### we - * should just be able to check whether the window is dead - * or not, but this way is safer?). As we process each - * window, we set its config_mark to 0. At the end, we - * go through all the windows that used to be on the frame, - * set each one's config_mark to 0 (to maintain the - * assumed precondition) and delete each one that's no - * longer in use. - * - * #### Using a window-configuration to keep track of - * the current windows is wasteful. All we need is the - * list of windows, so we could just use a dynarr. - */ - old_window_config = Fcurrent_window_configuration (frame); - - /* If the new configuration is already equal to the old, then stop - right here. This saves the work below and it also saves - triggering a full redisplay of this window. This is a huge win - when using the mouse since the mode motion code uses - save-window-excursion extensively but will rarely cause the - configuration to actually change. */ - if (window_config_equal (configuration, old_window_config)) - { - free_window_configuration (old_window_config); - UNGCPRO; - return Qnil; - } - - /* We can't quit or even check for quit because that may cause - investigation of the frame state, which may crash if the frame is - in an inconsistent state. */ - begin_dont_check_for_quit (); - record_unwind_protect (free_window_configuration, old_window_config); - - mark_windows_in_use (f, 1); -#ifdef BROKEN_SUBWINDOW_REDISPLAY - /* Force subwindows to be remapped. This is overkill but saves - us having to rely on the redisplay code to unmap any extant - subwindows. - - #### It does cause some extra flashing though which we could - possibly avoid. So consider trying to get redisplay to work - correctly. - - Removing the instances from the frame cache is wrong because - an instance is only put in the frame cache when it is - instantiated. So if we do this there is a chance that stuff - will never get put back in the frame cache. */ - reset_frame_subwindow_instance_cache (f); -#endif -#if 0 - /* JV: This is bogus, - First of all, the units are inconsistent. The frame sizes are measured - in characters but the window sizes are stored in pixels. So if a - font size change happened between saving and restoring, the - frame "sizes" maybe equal but the windows still should be - resized. This is tickled a lot by the new "character size - stays constant" policy in 21.0. It leads to very weird - glitches (and possibly crashes when asserts are tickled). - - Just changing the units doesn't help because changing the - toolbar configuration can also change the pixel positions. - Luckily there is a much simpler way of doing this, see below. - */ - previous_frame_width = FRAME_WIDTH (f); - previous_frame_height = FRAME_HEIGHT (f); - /* If the frame has been resized since this window configuration was - made, we change the frame to the size specified in the - configuration, restore the configuration, and then resize it - back. We keep track of the prevailing height in these variables. */ - if (config->frame_height != FRAME_HEIGHT (f) - || config->frame_width != FRAME_WIDTH (f)) - change_frame_size (f, config->frame_height, config->frame_width, 0); -#endif - - previous_pixel_top = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_top; - previous_pixel_height = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_height; - previous_pixel_left = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_left; - previous_pixel_width = XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_width; - - /* remember some properties of the minibuffer */ - - default_face_height_and_width (frame, &real_font_height, 0); - assert(real_font_height > 0); - - if (FRAME_HAS_MINIBUF_P (f) && ! FRAME_MINIBUF_ONLY_P (f)) - { - previous_minibuf_height - = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_height; - previous_minibuf_top - = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_top; - previous_minibuf_width - = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_width; - } - else - { - previous_minibuf_height = 0; - previous_minibuf_top = 0; - previous_minibuf_width = 0; - } - converted_minibuf_height = - (previous_minibuf_height % real_font_height) == 0 ? - - (previous_minibuf_height / real_font_height ) : /* lines */ - previous_minibuf_height; /* pixels */ - - /* Temporarily avoid any problems with windows that are smaller - than they are supposed to be. */ - window_min_height = 1; - window_min_width = 1; - - /* OK, now restore all the windows in the window config. - This may involve "undeleting" windows, since the - windows in the window config may be deleted. - */ - for (k = 0; k < config->saved_windows_count; k++) - { - p = SAVED_WINDOW_N (config, k); - w = XWINDOW (p->window); - w->next = Qnil; - - /* The window might be dead. In this case, its redisplay - structures were freed, so we need to reallocate them. */ - if (!w->face_cachels) - { - w->face_cachels = Dynarr_new (face_cachel); - reset_face_cachels (w); - } - if (!w->glyph_cachels) - w->glyph_cachels = Dynarr_new (glyph_cachel); - if (!w->line_start_cache) - w->line_start_cache = Dynarr_new (line_start_cache); - w->gutter_extent_modiff[0] = 0; - w->gutter_extent_modiff[1] = 0; - w->gutter_extent_modiff[2] = 0; - w->gutter_extent_modiff[3] = 0; - w->dead = 0; - - note_object_created (p->window); - - if (p->parent_index >= 0) - w->parent = SAVED_WINDOW_N (config, p->parent_index)->window; - else - w->parent = Qnil; - - if (p->prev_index >= 0) - { - w->prev = SAVED_WINDOW_N (config, p->prev_index)->window; - - /* This is true for a minibuffer-only frame. */ - if (!NILP (w->mini_p) && EQ (w->prev, p->window)) - w->next = Qnil; - else - XWINDOW (w->prev)->next = p->window; - } - else - { - w->prev = Qnil; - if (!NILP (w->parent)) - { - if (WINDOW_WIDTH (p) == WINDOW_WIDTH (XWINDOW (w->parent))) - { - XWINDOW (w->parent)->vchild = p->window; - XWINDOW (w->parent)->hchild = Qnil; - } - else - { - XWINDOW (w->parent)->hchild = p->window; - XWINDOW (w->parent)->vchild = Qnil; - } - } - } - if (!w->config_mark) - { - /* #### This should be equivalent to the window previously - having been dead. If we're brave, we'll put in an - assertion to this effect. */ - MARK_FRAME_WINDOWS_STRUCTURE_CHANGED (f); - } - else /* if (!EQ (w->buffer, p->buffer)) */ - { - /* With the new redisplay we let it know that a change has - been made and it will take care of the rest. If we don't - tell it something has possibly changed it could lead to - incorrect display. */ - MARK_WINDOWS_CHANGED (w); - } - - WINDOW_LEFT (w) = WINDOW_LEFT (p); - WINDOW_TOP (w) = WINDOW_TOP (p); - WINDOW_WIDTH (w) = WINDOW_WIDTH (p); - WINDOW_HEIGHT (w) = WINDOW_HEIGHT (p); - w->hscroll = p->hscroll; - w->modeline_hscroll = p->modeline_hscroll; - w->line_cache_last_updated = Qzero; - /* When we restore a window's configuration, the identity of - the window hasn't actually changed - so there is no - reason why we shouldn't preserve the instance cache for - it - unless it was originally deleted. This will often - buy us something as we will not have to re-instantiate - all the instances. This is because this is an instance - cache - not a display cache. Preserving the display cache - would definitely be wrong. - - We specifically want to do this for tabs, since for some - reason finding a file will cause the configuration to be - set. */ - if (NILP (w->subwindow_instance_cache)) - w->subwindow_instance_cache = - make_image_instance_cache_hash_table (); - - SET_LAST_MODIFIED (w, 1); - SET_LAST_FACECHANGE (w); - w->config_mark = 0; - - /* #### Consider making the instance cache a WINDOW_SAVED_SLOT. */ -#define WINDOW_SLOT(slot) -#define WINDOW_SAVED_SLOT(slot, compare) w->slot = p->slot; -#include "winslots.h" - - /* Reinstall the saved buffer and pointers into it. */ - if (NILP (p->buffer)) - w->buffer = p->buffer; - else - { - if (BUFFER_LIVE_P (XBUFFER (p->buffer))) - /* If saved buffer is alive, install it. */ - { - w->buffer = p->buffer; - w->start_at_line_beg = p->start_at_line_beg; - set_marker_restricted (w->start[CURRENT_DISP], - Fmarker_position (p->start), - w->buffer); - set_marker_restricted (w->pointm[CURRENT_DISP], - Fmarker_position (p->pointm), - w->buffer); - set_marker_restricted (w->sb_point, - Fmarker_position (p->sb_point), - w->buffer); - Fset_marker (XBUFFER (w->buffer)->mark, - Fmarker_position (p->mark), w->buffer); - - /* As documented in Fcurrent_window_configuration, don't - save the location of point in the buffer which was current - when the window configuration was recorded. */ - if (!EQ (p->buffer, new_current_buffer) && - XBUFFER (p->buffer) == current_buffer) - Fgoto_char (w->pointm[CURRENT_DISP], Qnil); - } - else if (NILP (w->buffer) || - !BUFFER_LIVE_P (XBUFFER (w->buffer))) - /* Else if window's old buffer is dead too, get a live one. */ - { - /* #### The following line makes me nervous... */ - /* w->buffer = Fcdr (Fcar (XFRAME (w->frame)->buffer_alist));*/ - w->buffer = Fget_buffer_create (QSscratch); - /* w->buffer = Fother_buffer (Qnil, w->frame, Qnil); */ - /* This will set the markers to beginning of visible - range. */ - set_marker_restricted (w->start[CURRENT_DISP], Qzero, w->buffer); - set_marker_restricted (w->pointm[CURRENT_DISP], Qzero, - w->buffer); - set_marker_restricted (w->sb_point, Qzero, w->buffer); - w->start_at_line_beg = 1; - } - else - /* Keeping window's old buffer; make sure the markers - are real. */ - { - /* Set window markers at start of visible range. */ - if (XMARKER (w->start[CURRENT_DISP])->buffer == 0) - set_marker_restricted (w->start[CURRENT_DISP], Qzero, - w->buffer); - if (XMARKER (w->sb_point)->buffer == 0) - set_marker_restricted (w->sb_point, Qzero, w->buffer); - if (XMARKER (w->pointm[CURRENT_DISP])->buffer == 0) - set_marker_restricted (w->pointm[CURRENT_DISP], - make_int - (BUF_PT (XBUFFER (w->buffer))), - w->buffer); - w->start_at_line_beg = 1; - } - } - } - - FRAME_ROOT_WINDOW (f) = config->root_window; - /* Note that FSFmacs unilaterally calls Fselect_window() here, and - then calls do_switch_frame() below to select the frame that was - recorded in the window config as being selected. - - Instead, we don't ever change the selected frame, and either - call Fselect_window() below if the window config's frame is - currently selected, or just set the selected window of the - window config's frame. */ - -#if 0 - /* Set the frame height to the value it had before this function. */ - if (previous_frame_height != FRAME_HEIGHT (f) - || previous_frame_width != FRAME_WIDTH (f)) - change_frame_size (f, previous_frame_height, previous_frame_width, 0); -#endif - /* We just reset the size and position of the minibuffer, to its old - value, which needn't be valid. So we do some magic to see which value - to actually take. Then we set it. - - The magic: - We take the old value if is in the same units but differs from the - current value. - - #### Now we get more cases correct then ever before, but - are we treating all? For instance what if the frames minibuf window - is no longer the same one? - */ - target_minibuf_height = previous_minibuf_height; - if (converted_minibuf_height && - (converted_minibuf_height * config->minibuf_height) > 0 && - (converted_minibuf_height != config->minibuf_height)) - { - target_minibuf_height = config->minibuf_height < 0 ? - - (config->minibuf_height * real_font_height) : - config->minibuf_height; - target_minibuf_height = - max(target_minibuf_height,real_font_height); - } - if (previous_minibuf_height) - { - XWINDOW (FRAME_MINIBUF_WINDOW (f))->pixel_top - = previous_minibuf_top - - (target_minibuf_height - previous_minibuf_height); - set_window_pixheight (FRAME_MINIBUF_WINDOW (f), - target_minibuf_height, 0); - set_window_pixwidth (FRAME_MINIBUF_WINDOW (f), - previous_minibuf_width, 0); - } - - /* This is a better way to deal with frame resizing, etc. - What we _actually_ want is for the old (just restored) - root window to fit - into the place of the new one. So we just do that. Simple! */ - XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_top = previous_pixel_top; - /* Note that this function also updates the subwindow - "pixel_top"s */ - set_window_pixheight (FRAME_ROOT_WINDOW (f), - previous_pixel_height - - (target_minibuf_height - previous_minibuf_height), 0); - XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_left = previous_pixel_left; - /* Note that this function also updates the subwindow - "pixel_left"s */ - set_window_pixwidth (FRAME_ROOT_WINDOW (f), previous_pixel_width, 0); - - /* If restoring in the current frame make the window current, - otherwise just update the frame selected_window slot to be - the restored current_window. */ - if (f == selected_frame ()) - { -#if 0 - /* When using `pop-window-configuration', often the minibuffer - ends up as the selected window even though it's not active ... - I really don't know the cause of this, but it should never - happen. This kludge should fix it. - - #### Find out why this is really going wrong. */ - if (!minibuf_level && - MINI_WINDOW_P (XWINDOW (config->current_window))) - window_to_select = Fnext_window (config->current_window, - Qnil, Qnil, Qnil); - else - window_to_select = config->current_window; -#endif - /* Do this last so that buffer stacking is calculated - correctly. */ - Fselect_window (config->current_window, Qnil); - - if (!NILP (new_current_buffer)) - { - Fset_buffer (new_current_buffer); - Frecord_buffer (new_current_buffer); - } - else - { - Fset_buffer (XWINDOW (config->current_window)->buffer); - Frecord_buffer (XWINDOW (config->current_window)->buffer); - } - } - else - set_frame_selected_window (f, config->current_window); - } - else - old_window_config = Qnil; /* Warning suppression */ - - /* Restore the minimum heights recorded in the configuration. */ - window_min_height = config->min_height; - window_min_width = config->min_width; - -#if 0 /* FSFmacs */ - /* see above comment */ - /* Fselect_window will have made f the selected frame, so we - reselect the proper frame here. Fhandle_switch_frame will change the - selected window too, but that doesn't make the call to - Fselect_window above totally superfluous; it still sets f's - selected window. */ - if (FRAME_LIVE_P (XFRAME (config->selected_frame))) - do_switch_frame (config->selected_frame, Qnil, 0); -#endif - - Vminibuffer_scroll_window = config->minibuffer_scroll_window; - - if (FRAME_LIVE_P (f)) - { - /* Do this before calling recompute_all_cached_specifiers_in_window() - so that things like redisplay_redraw_cursor() won't abort due - to no window mirror present. */ - f->mirror_dirty = 1; - - config = XWINDOW_CONFIGURATION (old_window_config); - for (k = 0; k < config->saved_windows_count; k++) - { - p = SAVED_WINDOW_N (config, k); - w = XWINDOW (p->window); - /* Remember, we set w->config_mark on all currently visible - windows, and reset it on all newly visible windows. - Any windows still marked need to be deleted. */ - if (w->config_mark) - { - mark_window_as_deleted (w); - w->config_mark = 0; - } - else - { - /* We just potentially changed the window's buffer and - potentially turned a dead window into a live one, - so we need to recompute the cached specifier values. */ - recompute_all_cached_specifiers_in_window (w); - } - } - } - - /* Now restore things, when everything else if OK. */ - - unbind_to (specpdl_count); - - UNGCPRO; - - return Qnil; -} - /* Mark all subwindows of a window as deleted. The argument W is actually the subwindow tree of the window in question. */ @@ -5943,185 +5107,10 @@ mark_window_as_deleted (w); } - -static int -count_windows (struct window *window) -{ - return 1 + - (!NILP (window->next) ? count_windows (XWINDOW (window->next)) : 0) + - (!NILP (window->vchild) ? count_windows (XWINDOW (window->vchild)) : 0) + - (!NILP (window->hchild) ? count_windows (XWINDOW (window->hchild)) : 0); -} - -static int -saved_window_index (Lisp_Object window, struct window_config *config, int lim) -{ - int j; - for (j = 0; j < lim; j++) - { - if (EQ (SAVED_WINDOW_N (config, j)->window, window)) - return j; - } - abort (); - return 0; /* suppress compiler warning */ -} - -static int -save_window_save (Lisp_Object window, struct window_config *config, int i) -{ - struct window *w; - - for (; !NILP (window); window = w->next) - { - struct saved_window *p = SAVED_WINDOW_N (config, i); - - w = XWINDOW (window); - i++; - p->window = window; - p->buffer = w->buffer; - WINDOW_LEFT (p) = WINDOW_LEFT (w); - WINDOW_TOP (p) = WINDOW_TOP (w); - WINDOW_WIDTH (p) = WINDOW_WIDTH (w); - WINDOW_HEIGHT (p) = WINDOW_HEIGHT (w); - p->hscroll = w->hscroll; - p->modeline_hscroll = w->modeline_hscroll; - -#define WINDOW_SLOT(slot) -#define WINDOW_SAVED_SLOT(slot, compare) p->slot = w->slot; -#include "winslots.h" - - if (!NILP (w->buffer)) - { - /* Save w's value of point in the window configuration. - If w is the selected window, then get the value of point - from the buffer; pointm is garbage in the selected window. */ - if (EQ (window, Fselected_window (Qnil))) - { - p->pointm = noseeum_make_marker (); - Fset_marker (p->pointm, - make_int (BUF_PT (XBUFFER (w->buffer))), - w->buffer); - } - else - p->pointm = noseeum_copy_marker (w->pointm[CURRENT_DISP], Qnil); - - p->start = noseeum_copy_marker (w->start[CURRENT_DISP], Qnil); - p->sb_point = noseeum_copy_marker (w->sb_point, Qnil); - p->start_at_line_beg = w->start_at_line_beg; - - p->mark = noseeum_copy_marker (XBUFFER (w->buffer)->mark, Qnil); - } - else - { - p->pointm = Qnil; - p->start = Qnil; - p->sb_point = Qnil; - p->mark = Qnil; - p->start_at_line_beg = 0; - } - - if (NILP (w->parent)) - p->parent_index = -1; - else - p->parent_index = saved_window_index (w->parent, config, i); - if (NILP (w->prev)) - p->prev_index = -1; - else - p->prev_index = saved_window_index (w->prev, config, i); - if (!NILP (w->vchild)) - i = save_window_save (w->vchild, config, i); - if (!NILP (w->hchild)) - i = save_window_save (w->hchild, config, i); - } - - return i; -} - -#if 0 /* FSFmacs */ -/* Added to doc string: - -This also records the currently selected frame, and FRAME's focus -redirection (see `redirect-frame-focus'). - -*/ -#endif - -DEFUN ("current-window-configuration", Fcurrent_window_configuration, 0, 1, 0, /* -Return an object representing the current window configuration of FRAME. -If FRAME is nil or omitted, use the selected frame. -This describes the number of windows, their sizes and current buffers, -and for each window on FRAME the displayed buffer, where display -starts, and the positions of point and mark. -An exception is made for point in the current buffer: -its value is -not- saved. -*/ - (frame)) -{ - Lisp_Object result; - struct frame *f = decode_frame (frame); - struct window_config *config; - int n_windows = count_windows (XWINDOW (FRAME_ROOT_WINDOW (f))); - int minibuf_height; - int real_font_height; - - if (n_windows <= countof (Vwindow_configuration_free_list)) - config = XWINDOW_CONFIGURATION (allocate_managed_lcrecord - (Vwindow_configuration_free_list - [n_windows - 1])); - else - /* More than ten windows; just allocate directly */ - config = (struct window_config *) - alloc_lcrecord (sizeof_window_config_for_n_windows (n_windows), - &lrecord_window_configuration); - result = wrap_window_configuration (config); - /* - config->frame_width = FRAME_WIDTH (f); - config->frame_height = FRAME_HEIGHT (f); */ - /* #### When using `push-window-configuration', often the minibuffer ends - up as the selected window because functions run as the result of - user interaction e.g. hyper-apropos. It seems to me the sensible - thing to do is not record the minibuffer here. - - #### Unfortunately this is a change to previous behaviour, however logical - it may be, so revert for the moment. */ -#if 0 - if (FRAME_MINIBUF_ONLY_P (f) || minibuf_level) - config->current_window = FRAME_SELECTED_WINDOW (f); - else - config->current_window = FRAME_LAST_NONMINIBUF_WINDOW (f); -#endif - config->current_window = FRAME_SELECTED_WINDOW (f); - config->current_buffer = wrap_buffer (current_buffer); - config->minibuffer_scroll_window = Vminibuffer_scroll_window; - config->root_window = FRAME_ROOT_WINDOW (f); - config->min_height = window_min_height; - config->min_width = window_min_width; - config->saved_windows_count = n_windows; - save_window_save (FRAME_ROOT_WINDOW (f), config, 0); - - /* save the minibuffer height using the heuristics from - change_frame_size_1 */ - - frame = wrap_frame (f); /* frame could have been nil ! */ - default_face_height_and_width (frame, &real_font_height, 0); - assert(real_font_height > 0); - - if (FRAME_HAS_MINIBUF_P (f) && ! FRAME_MINIBUF_ONLY_P (f)) - minibuf_height = XWINDOW(FRAME_MINIBUF_WINDOW(f))->pixel_height; - else - minibuf_height = 0; - config->minibuf_height = (minibuf_height % real_font_height) == 0 ? - - (minibuf_height / real_font_height ) : /* lines */ - minibuf_height; /* pixels */ - - return result; -} - Lisp_Object save_window_excursion_unwind (Lisp_Object window_config) { - Lisp_Object val = Fset_window_configuration (window_config); - free_window_configuration (window_config); + Lisp_Object val = call1 (Qset_window_configuration, window_config); return val; } @@ -6137,10 +5126,10 @@ int speccount = specpdl_depth (); record_unwind_protect (save_window_excursion_unwind, - Fcurrent_window_configuration (Qnil)); + call1 (Qcurrent_window_configuration, Qnil)); return unbind_to_1 (speccount, Fprogn (args)); } - + DEFUN ("current-pixel-column", Fcurrent_pixel_column, 0, 2, 0, /* Return the horizontal pixel position of POS in window. Beginning of line is column 0. This is calculated using the redisplay @@ -6263,13 +5252,10 @@ syms_of_window (void) { INIT_LRECORD_IMPLEMENTATION (window); - INIT_LRECORD_IMPLEMENTATION (window_configuration); INIT_LRECORD_IMPLEMENTATION (window_mirror); DEFSYMBOL (Qwindowp); DEFSYMBOL (Qwindow_live_p); - DEFSYMBOL_MULTIWORD_PREDICATE (Qwindow_configurationp); - DEFSYMBOL (Qtemp_buffer_show_hook); DEFSYMBOL (Qdisplay_buffer); #ifdef MEMORY_USAGE_STATS @@ -6284,6 +5270,8 @@ #endif DEFSYMBOL (Qtruncate_partial_width_windows); + DEFSYMBOL (Qcurrent_window_configuration); + DEFSYMBOL (Qset_window_configuration); DEFSUBR (Fselected_window); DEFSUBR (Flast_nonminibuf_window); @@ -6363,9 +5351,6 @@ #ifdef MEMORY_USAGE_STATS DEFSUBR (Fwindow_memory_usage); #endif - DEFSUBR (Fwindow_configuration_p); - DEFSUBR (Fset_window_configuration); - DEFSUBR (Fcurrent_window_configuration); DEFSUBR (Fsave_window_excursion); DEFSUBR (Fcurrent_pixel_column); } @@ -6373,18 +5358,9 @@ void reinit_vars_of_window (void) { - int i; /* Make sure all windows get marked */ minibuf_window = Qnil; staticpro_nodump (&minibuf_window); - - for (i = 0; i < countof (Vwindow_configuration_free_list); i++) - { - Vwindow_configuration_free_list[i] = - make_lcrecord_list (sizeof_window_config_for_n_windows (i + 1), - &lrecord_window_configuration); - staticpro_nodump (&Vwindow_configuration_free_list[i]); - } } void @@ -6397,11 +5373,6 @@ */ ); scroll_on_clipped_lines = 1; - DEFVAR_LISP ("temp-buffer-show-hook", &Vtemp_buffer_show_hook /* -See `temp-buffer-show-function'. -*/ ); - Vtemp_buffer_show_hook = Qnil; - DEFVAR_LISP ("temp-buffer-show-function", &Vtemp_buffer_show_function /* Non-nil means call as function to display a help buffer. The function is called with one argument, the buffer to be displayed. diff --text -u 'xemacs-21.5.9/src/window.h' 'xemacs-21.5.10/src/window.h' Index: ./src/window.h --- ./src/window.h Fri Jun 21 06:18:49 2002 +++ ./src/window.h Sun Dec 8 19:25:14 2002 @@ -104,9 +104,9 @@ EXFUN (Fwindow_highest_p, 1); EXFUN (Fwindow_point, 1); EXFUN (Fwindow_start, 1); -EXFUN (Fcurrent_window_configuration, 1); Lisp_Object save_window_excursion_unwind (Lisp_Object); +extern Lisp_Object Qcurrent_window_configuration, Qset_window_configuration; Lisp_Object display_buffer (Lisp_Object, Lisp_Object, Lisp_Object); /* The minibuffer window of the selected frame. diff --text -u 'xemacs-21.5.9/tests/ChangeLog' 'xemacs-21.5.10/tests/ChangeLog' Index: ./tests/ChangeLog --- ./tests/ChangeLog Fri Aug 30 17:26:22 2002 +++ ./tests/ChangeLog Sun Jan 5 14:13:45 2003 @@ -1,3 +1,38 @@ +2003-01-04 Steve Youngs + + * XEmacs 21.5.10 "burdock" is released. + +2002-12-27 Stephen J. Turnbull + + * automated/regexp-tests.el (Mule character class): New test + cases. Based on draft patch by Daiki Ueno . + + * automated/test-harness.el (Print-Pass): Comment. + +2002-10-19 Stephen J. Turnbull + + * automated/test-harness.el (test-harness-expect-bug): New variable. + (Known-Bug-Expect-Failure): New macro. + (Skip-Test-Unless): New macro. + (Check-Message): Use Skip-Test-Unless. + (test-harness-from-buffer): Type fixes. + + * automated/regexp-tests.el: Use Known-Bug-Expect-Failure. + + * automated/syntax-tests.el: Use Skip-Test-Unless. + +2002-09-09 Stephen J. Turnbull + + * automated/regexp-tests.el: Add test for stale subexpr match-data. + Thanks to Martin Stjernholm for the report. + + * automated/syntax-tests.el: Conditionalize syntax-table property + tests on feature. Enable feature if present. + +2002-09-12 Stephen J. Turnbull + + * automated/regexp-tests.el: Add word-boundary regexp tests. + 2002-08-30 Steve Youngs * XEmacs 21.5.9 "brussels sprouts" is released. diff --text -u 'xemacs-21.5.9/tests/automated/regexp-tests.el' 'xemacs-21.5.10/tests/automated/regexp-tests.el' Index: ./tests/automated/regexp-tests.el --- ./tests/automated/regexp-tests.el Fri Apr 13 03:24:55 2001 +++ ./tests/automated/regexp-tests.el Fri Dec 27 15:15:01 2002 @@ -213,3 +213,69 @@ (looking-at "Unmatchable text") (replace-match "") (Assert (looking-at "^buffer.$"))) + +;; Test that trivial regexps reset unused registers +;; Thanks to Martin Sternholm for the report. +;; xemacs-beta <5blm6h2ki5.fsf@lister.roxen.com> +(with-temp-buffer + (insert "ab") + (goto-char (point-min)) + (re-search-forward "\\(a\\)") + ;; test the whole-match data, too -- one attempted fix scotched that, too! + (Assert (string= (match-string 0) "a")) + (Assert (string= (match-string 1) "a")) + (re-search-forward "b") + (Assert (string= (match-string 0) "b")) + (Assert (string= (match-string 1) nil))) + +;; Test word boundaries +(Assert (= (string-match "\\" "a ") 0)) +(Assert (= (string-match "\\ba" " a") 1)) +(Assert (= (string-match "a\\b" "a ") 0)) +;; should work at target boundaries +(Assert (= (string-match "\\" "a") 0)) +(Assert (= (string-match "\\ba" "a") 0)) +(Assert (= (string-match "a\\b" "a") 0)) +;; Check for weirdness +(Assert (not (string-match " \\> " " "))) +(Assert (not (string-match " \\< " " "))) +(Assert (not (string-match " \\b " " "))) +;; but not if the "word" would be on the null side of the boundary! +(Assert (not (string-match "\\<" ""))) +(Assert (not (string-match "\\>" ""))) +(Assert (not (string-match " \\<" " "))) +(Assert (not (string-match "\\> " " "))) +(Assert (not (string-match "a\\<" "a"))) +(Assert (not (string-match "\\>a" "a"))) +;; Added Known-Bug 2002-09-09 +(Known-Bug-Expect-Failure + (Assert (not (string-match "\\b" ""))) + (Assert (not (string-match "\\b" " "))) + (Assert (not (string-match " \\b" " "))) + (Assert (not (string-match "\\b " " ")))) + +;; Character classes are broken in Mule as of 21.5.9 +;; Added Known-Bug 2002-12-27 +(if (featurep 'mule) + ;; note: (int-to-char 65) => ?A + (let ((ch0 (make-char 'japanese-jisx0208 52 65)) + (ch1 (make-char 'japanese-jisx0208 51 65))) + (Assert (not (string-match "A" (string ch0)))) + (Assert (not (string-match "[A]" (string ch0)))) + (Known-Bug-Expect-Failure + (Assert (eq (string-match "[^A]" (string ch0)) 0))) + (Assert (not (string-match "@A" (string ?@ ch0)))) + (Known-Bug-Expect-Failure + (Assert (not (string-match "@[A]" (string ?@ ch0))))) + (Known-Bug-Expect-Failure + (Assert (eq (string-match "@[^A]" (string ?@ ch0)) 0))) + (Assert (not (string-match "@?A" (string ?@ ch0)))) + (Assert (not (string-match "A" (string ch1)))) + (Assert (not (string-match "[A]" (string ch1)))) + (Assert (eq (string-match "[^A]" (string ch1)) 0)) + (Assert (not (string-match "@A" (string ?@ ch1)))) + (Assert (not (string-match "@[A]" (string ?@ ch1)))) + (Assert (eq (string-match "@[^A]" (string ?@ ch1)) 0)) + (Assert (not (string-match "@?A" (string ?@ ch1)))))) diff --text -u 'xemacs-21.5.9/tests/automated/syntax-tests.el' 'xemacs-21.5.10/tests/automated/syntax-tests.el' Index: ./tests/automated/syntax-tests.el --- ./tests/automated/syntax-tests.el Thu Aug 22 23:56:27 2002 +++ ./tests/automated/syntax-tests.el Tue Nov 12 00:39:07 2002 @@ -107,16 +107,20 @@ ;; can be in the form (start . end), or can be a ;; character position. (defun test-syntax-table (string apply-pos apply-syntax stop) - (goto-char (point-max)) - (unless (consp apply-pos) - (setq apply-pos `(,apply-pos . ,(+ 1 apply-pos)))) - (let ((point (point))) - (insert string) - (put-text-property (+ point (car apply-pos)) (+ point (cdr apply-pos)) - 'syntax-table apply-syntax) - (goto-char point) - (forward-word 1) - (Assert (eq (point) (+ point stop))))) + ;; We don't necessarily have syntax-table properties ... + (when (fboundp 'lookup-syntax-properties) ; backwards compatible kludge + ;; ... and they may not be enabled by default if we do. + (setq lookup-syntax-properties t) + (goto-char (point-max)) + (unless (consp apply-pos) + (setq apply-pos `(,apply-pos . ,(+ 1 apply-pos)))) + (let ((point (point))) + (insert string) + (put-text-property (+ point (car apply-pos)) (+ point (cdr apply-pos)) + 'syntax-table apply-syntax) + (goto-char point) + (forward-word 1) + (Assert (eq (point) (+ point stop)))))) ;; test syntax-table extents (with-temp-buffer @@ -126,15 +130,12 @@ (test-syntax-table "W." 1 `(,(syntax-string-to-code "w")) 2)) ;; Test forward-comment at buffer boundaries +;; #### The second Assert fails (once interpreted, once compiled) on 21.4.9 +;; with sjt's version of Andy's syntax-text-property-killer patch. (with-temp-buffer - (if (not (fboundp 'c-mode)) - ;; #### This whole thing should go inside a macro Skip-Test - (let* ((reason "c-mode unavailable") - (count (gethash reason skipped-test-reasons))) - ;;(message "%S: %S" reason count) - (puthash reason (if (null count) 1 (1+ count)) - skipped-test-reasons) - (Print-Skip "comment and parse-partial-sexp tests" reason)) + (Skip-Test-Unless (fboundp 'c-mode) + "c-mode unavailable" + "comment and parse-partial-sexp tests" (c-mode) (insert "// comment\n") diff --text -u 'xemacs-21.5.9/tests/automated/test-harness.el' 'xemacs-21.5.10/tests/automated/test-harness.el' Index: ./tests/automated/test-harness.el --- ./tests/automated/test-harness.el Thu Aug 22 23:56:27 2002 +++ ./tests/automated/test-harness.el Fri Dec 27 15:13:18 2002 @@ -30,7 +30,13 @@ ;;; A test suite harness for testing XEmacs. ;;; The actual tests are in other files in this directory. ;;; Basically you just create files of emacs-lisp, and use the -;;; Assert, Check-Error, and Check-Message functions to create tests. +;;; Assert, Check-Error, Check-Message, and Check-Error-Message functions +;;; to create tests. See `test-harness-from-buffer' below. +;;; Don't suppress tests just because they're due to known bugs not yet +;;; fixed -- use the Known-Bug-Expect-Failure wrapper macro to mark them. +;;; A lot of the tests we run push limits; suppress Ebola message with the +;;; Ignore-Ebola wrapper macro. +;;; ;;; You run the tests using M-x test-emacs-test-file, ;;; or $(EMACS) -batch -l .../test-harness.el -f batch-test-emacs file ... ;;; which is run for you by the `make check' target in the top-level Makefile. @@ -135,21 +141,42 @@ (pass-stream nil)) (with-output-to-temp-buffer "*Test-Log*" (princ (format "Testing %s...\n\n" filename)) + + (defconst test-harness-expect-bug nil) + + (defmacro Known-Bug-Expect-Failure (&rest body) + `(let ((test-harness-expect-bug t)) ,@body)) (defun Print-Failure (fmt &rest args) - (setq fmt (concat "FAIL: " fmt)) + (setq fmt (format "%s: %s" + (if test-harness-expect-bug + "KNOWN BUG" + "FAIL") + fmt)) (if (noninteractive) (apply #'message fmt args)) (princ (concat (apply #'format fmt args) "\n"))) (defun Print-Pass (fmt &rest args) (setq fmt (concat "PASS: " fmt)) + ;; #### should warn if expecting failure here! (and test-harness-verbose (princ (concat (apply #'format fmt args) "\n")))) (defun Print-Skip (test reason &optional fmt &rest args) - (setq fmt (concat "SKIP: %S. REASON: %S" fmt)) + (setq fmt (concat "SKIP: %S BECAUSE %S" fmt)) (princ (concat (apply #'format fmt test reason args) "\n"))) + (defmacro Skip-Test-Unless (condition reason description &rest body) + "Unless CONDITION is satisfied, skip test BODY. +REASON is a description of the condition failure, and must be unique (it +is used as a hash key). DESCRIPTION describes the tests that were skipped. +BODY is a sequence of expressions and may contain several tests." + `(if (not ,condition) + (let ((count (gethash ,reason skipped-test-reasons))) + (puthash ,reason (if (null count) 1 (1+ count)) + skipped-test-reasons) + (Print-Skip ,description ,reason)) + ,@body)) (defmacro Assert (assertion) `(condition-case error-info @@ -210,14 +237,9 @@ (defmacro Check-Message (expected-message-regexp &rest body) - (if (not (fboundp 'defadvice)) - ;; #### This whole thing should go inside a macro Skip-Test - (let* ((reason "advice unavailable") - (count (gethash reason skipped-test-reasons))) - ;(message "%S: %S" reason count) - (puthash reason (if (null count) 1 (1+ count)) - skipped-test-reasons) - `(Print-Skip ,expected-message-regexp ,reason)) + (Skip-Test-Unless (fboundp 'defadvice) + "can't defadvice" + expected-message-regexp (let ((quoted-body (if (= 1 (length body)) `(quote ,(car body)) `(quote (progn ,@body))))) @@ -307,7 +329,7 @@ (maphash (lambda (key value) (setq reasons (concat reasons - (format "\n %d tests skipped because %s" + (format "\n %d tests skipped because %s." value key)))) skipped-test-reasons) (when (> (length reasons) 1) diff --text -u 'xemacs-21.5.9/version.sh' 'xemacs-21.5.10/version.sh' Index: ./version.sh --- ./version.sh Fri Aug 30 17:25:49 2002 +++ ./version.sh Sun Jan 5 14:13:26 2003 @@ -2,8 +2,8 @@ emacs_is_beta=t emacs_major_version=21 emacs_minor_version=5 -emacs_beta_version=9 -xemacs_codename="brussels sprouts" +emacs_beta_version=10 +xemacs_codename="burdock" xemacs_extra_name= emacs_kit_version= infodock_major_version=4 #### End of Patch data #### #### ApplyPatch data follows #### # Data version : 1.0 # Date generated : Thu Jan 9 14:17:35 2003 # Generated by : makepatch 2.00_07* # Recurse directories : Yes # Excluded files : (\A|/).*\~\Z # (\A|/).*\.a\Z # (\A|/).*\.bak\Z # (\A|/).*\.BAK\Z # (\A|/).*\.elc\Z # (\A|/).*\.exe\Z # (\A|/).*\.gz\Z # (\A|/).*\.ln\Z # (\A|/).*\.o\Z # (\A|/).*\.obj\Z # (\A|/).*\.olb\Z # (\A|/).*\.old\Z # (\A|/).*\.orig\Z # (\A|/).*\.rej\Z # (\A|/).*\.so\Z # (\A|/).*\.Z\Z # (\A|/)\.del\-.*\Z # (\A|/)\.make\.state\Z # (\A|/)\.nse_depinfo\Z # (\A|/)core\Z # (\A|/)tags\Z # (\A|/)TAGS\Z # (\A|/).*\~\Z # (\A|/)\.cvsignore\Z # (\A|/)CVS\Z # (\A|/)MANIFEST\Z # (\A|/)\.precious\Z # (\A|/)TAGS\Z # (\A|/)xemacs\-packages\Z # (\A|/)mule\-packages\Z # (\A|/).*\.gz\Z # (\A|/)display\Z # (\A|/)TUTORIAL\.ru\Z # (\A|/)TUTORIAL\.th\Z # (\A|/).*\.png\Z # (\A|/).*\.bmp\Z # (\A|/).*\.ico\Z # (\A|/).*\.elc\Z # (\A|/).*\.info.*\Z # r './src/postgresql.h' 1753 0 # r './src/postgresql.c' 49926 0 # r './src/eldap.h' 2778 0 # r './src/eldap.c' 24301 0 # r './src/ChangeLog.2' 291011 0 # r './src/ChangeLog.1' 259832 0 # r './modules/sample/sample.c' 2910 0 # r './modules/sample/Makefile' 1030 0 # r './modules/ldap/Makefile' 985 0 # r './lisp/ChangeLog.1' 260385 0 # p './CHANGES-beta' 34069 1041743606 0100644 # p './CHANGES-msw' 2740 1030918498 0100644 # p './ChangeLog' 140200 1041743606 0100644 # p './INSTALL' 32707 1034261243 0100644 # p './Makefile.in.in' 24440 1039753789 0100644 # p './PROBLEMS' 77850 1037040777 0100644 # p './aclocal.m4' 15824 1037602381 0100644 # p './configure' 451955 1040005984 0100755 # p './configure.in' 173040 1039663370 0100644 # p './configure.usage' 15730 1037602381 0100644 # p './etc/BETA' 19282 1034167392 0100644 # p './etc/ChangeLog' 39832 1041743610 0100644 # p './etc/Emacs.ad' 10926 1037033779 0100644 # p './etc/TUTORIAL.fr' 44900 1035477114 0100644 # p './etc/TUTORIAL.ja' 51239 1037024630 0100644 # p './etc/sample.Xdefaults' 11026 1037033779 0100644 # p './info/dir' 2347 1037024351 0100644 # p './lib-src/ChangeLog' 45664 1041743612 0100644 # p './lib-src/config.values.in' 4413 1031671623 0100644 # p './lib-src/ellcc.c' 16425 1037602343 0100644 # p './lib-src/ellcc.h.in' 1181 1037602344 0100644 # p './lib-src/make-docfile.c' 30525 1037602344 0100644 # p './lisp/ChangeLog' 429685 1041743613 0100644 # p './lisp/about.el' 90006 1030918433 0100644 # p './lisp/autoload.el' 22864 1034345401 0100644 # p './lisp/bytecomp-runtime.el' 23526 1031031412 0100644 # p './lisp/cl-macs.el' 123013 1038381306 0100644 # p './lisp/cmdloop.el' 24511 1038381306 0100644 # p './lisp/code-files.el' 23474 1037602347 0100644 # p './lisp/code-init.el' 15036 1030862501 0100644 # p './lisp/code-process.el' 16756 1036944433 0100644 # p './lisp/coding.el' 10304 1030862501 0100644 # p './lisp/cus-start.el' 7522 1039663236 0100644 # p './lisp/custom.el' 26483 1030918433 0100644 # p './lisp/dialog.el' 29787 1038486884 0100644 # p './lisp/dump-paths.el' 6963 1034345403 0100644 # p './lisp/dumped-lisp.el' 8783 1038832040 0100644 # p './lisp/faces.el' 83155 1038924170 0100644 # p './lisp/files.el' 140382 1033550999 0100644 # p './lisp/font-lock.el' 119743 1033656029 0100644 # p './lisp/font-menu.el' 15713 1037073144 0100644 # p './lisp/gtk-font-menu.el' 9768 1037127496 0100644 # p './lisp/help.el' 64184 1038381306 0100644 # p './lisp/hyper-apropos.el' 49262 1034048712 0100644 # p './lisp/keydefs.el' 27659 1033986438 0100644 # p './lisp/lib-complete.el' 14388 1038381307 0100644 # p './lisp/loadhist.el' 5335 1037602348 0100644 # p './lisp/obsolete.el' 15348 1033551005 0100644 # p './lisp/package-get.el' 41076 1037602348 0100644 # p './lisp/replace.el' 32833 1035471567 0100644 # p './lisp/startup.el' 53542 1038381307 0100644 # p './lisp/subr.el' 49208 1034047462 0100644 # p './lisp/unicode.el' 11218 1030862501 0100644 # p './lisp/update-elc-2.el' 5830 1031671628 0100644 # p './lisp/wid-edit.el' 127155 1040917963 0100644 # p './lisp/window-xemacs.el' 24078 1040005968 0100644 # p './lisp/window.el' 23290 1038832040 0100644 # p './lisp/x-font-menu.el' 9546 1037127497 0100644 # p './lwlib/ChangeLog' 23708 1041743615 0100644 # p './man/ChangeLog' 94238 1041764038 0100644 # p './man/internals/internals.texi' 412319 1041595956 0100644 # p './man/lispref/compile.texi' 29950 1037073468 0100644 # p './man/lispref/faces.texi' 31669 1038911714 0100644 # p './man/lispref/glyphs.texi' 68890 1038911715 0100644 # p './man/lispref/mule.texi' 93189 1041764044 0100644 # p './man/lispref/specifiers.texi' 50624 1038913304 0100644 # p './man/lispref/syntax.texi' 29146 1033551052 0100644 # p './man/lispref/toolbar.texi' 16268 1038851829 0100644 # p './man/lispref/variables.texi' 48488 1033551052 0100644 # p './man/widget.texi' 51464 1041595950 0100644 # p './man/xemacs-faq.texi' 256050 1041595950 0100644 # p './man/xemacs/custom.texi' 101767 1039010446 0100644 # p './man/xemacs/mule.texi' 25198 1041595960 0100644 # p './man/xemacs/packages.texi' 30644 1033754990 0100644 # p './man/xemacs/startup.texi' 8067 1041595960 0100644 # p './man/xemacs/xemacs.texi' 46825 1041596103 0100644 # p './modules/ChangeLog' 652 1041743618 0100644 # p './modules/README' 856 1031671632 0100644 # c './modules/common/Makefile.common' 0 1037602350 0100644 # c './modules/common/configure-post.ac' 0 1036387189 0100644 # c './modules/common/configure-pre.ac' 0 1036387194 0100644 # c './modules/ldap/Makefile.in.in' 0 1037602352 0100644 # c './modules/ldap/configure' 0 1031671634 0100755 # c './modules/ldap/configure.ac' 0 1037602352 0100644 # p './modules/ldap/eldap.c' 14500 1031671634 0100644 # p './modules/ldap/eldap.h' 1102 1031671634 0100644 # c './modules/ldap/install-sh' 0 1031671634 0100755 # c './modules/postgresql/Makefile.in.in' 0 1037602353 0100644 # c './modules/postgresql/configure' 0 1037602353 0100755 # c './modules/postgresql/configure.ac' 0 1037602353 0100644 # c './modules/postgresql/install-sh' 0 1031671638 0100755 # c './modules/postgresql/postgresql.c' 0 1037602353 0100644 # c './modules/postgresql/postgresql.h' 0 1031671638 0100644 # c './modules/sample/external/Makefile.in.in' 0 1031671644 0100644 # c './modules/sample/external/configure.ac' 0 1031671644 0100644 # c './modules/sample/external/install-sh' 0 1031671644 0100755 # c './modules/sample/external/sample.c' 0 1031671644 0100644 # c './modules/sample/internal/Makefile.in.in' 0 1031671647 0100644 # c './modules/sample/internal/configure.ac' 0 1031671648 0100644 # c './modules/sample/internal/install-sh' 0 1031671648 0100755 # c './modules/sample/internal/sample.c' 0 1031671648 0100644 # p './netinstall/ChangeLog' 12015 1041743619 0100644 # p './nt/ChangeLog' 50776 1041743620 0100644 # p './nt/installer/Wise/ChangeLog' 1037 1041743621 0100644 # p './nt/make-nt-depend' 2115 1037602354 0100644 # p './nt/xemacs.mak' 45475 1034623217 0100644 # p './src/ChangeLog' 674060 1041743622 0100644 # p './src/ExternalClient.c' 18105 1037028853 0100644 # p './src/Makefile.in.in' 27124 1031671653 0100644 # c './src/README.kkcc' 0 1031050315 0100644 # p './src/alloc.c' 148887 1039663243 0100644 # p './src/alloca.c' 13238 1037602357 0100644 # p './src/bytecode.c' 58558 1039343106 0100644 # p './src/charset.h' 20877 1037602357 0100644 # p './src/config.h.in' 31500 1037127507 0100644 # p './src/data.c' 69131 1037127507 0100644 # p './src/database.c' 20578 1039010085 0100644 # p './src/depend' 39569 1037602357 0100644 # p './src/ecrt0.c' 16476 1037127508 0100644 # p './src/elhash.c' 51795 1038381312 0100644 # p './src/emacs.c' 133004 1037127508 0100644 # p './src/emodules.c' 19131 1031671656 0100644 # p './src/emodules.h' 3101 1037602357 0100644 # p './src/eval.c' 191620 1038643825 0100644 # p './src/event-Xt.c' 119586 1037602358 0100644 # p './src/event-msw.c' 159565 1037602358 0100644 # p './src/event-stream.c' 180576 1039343108 0100644 # p './src/extents.c' 231736 1034055855 0100644 # p './src/extw-Xt.c' 6582 1037028853 0100644 # p './src/file-coding.h' 45313 1030862505 0100644 # p './src/fileio.c' 132891 1038381312 0100644 # p './src/floatfns.c' 25954 1037127509 0100644 # p './src/fns.c' 114204 1035467749 0100644 # p './src/frame-msw.c' 36995 1038643825 0100644 # p './src/frame-x.c' 84277 1033551079 0100644 # p './src/frame.c' 113065 1040005974 0100644 # p './src/glyphs-widget.c' 66539 1035469176 0100644 # p './src/glyphs-x.c' 89847 1037602359 0100644 # p './src/glyphs.h' 46051 1037602359 0100644 # p './src/inline.c' 2876 1031671657 0100644 # p './src/intl-auto-encap-win32.c' 129830 1037602359 0100644 # p './src/intl-auto-encap-win32.h' 118978 1037602359 0100644 # p './src/intl-encap-win32.c' 81899 1037602359 0100644 # p './src/intl-win32.c' 61465 1037602360 0100644 # p './src/lisp-disunion.h' 5150 1037602360 0100644 # p './src/lisp-union.h' 4984 1037602360 0100644 # p './src/lisp.h' 189602 1038381313 0100644 # p './src/lread.c' 88682 1038381313 0100644 # p './src/lrecord.h' 41826 1031671658 0100644 # p './src/mule-canna.c' 47301 1037028853 0100644 # p './src/mule-coding.c' 96931 1030862505 0100644 # p './src/nas.c' 21926 1037030592 0100644 # p './src/print.c' 60794 1037127511 0100644 # p './src/process-unix.c' 66821 1037602361 0100644 # p './src/procimpl.h' 7673 1037602361 0100644 # p './src/profile.c' 10245 1038381313 0100644 # p './src/realpath.c' 9747 1037969831 0100644 # p './src/redisplay.c' 296722 1038381314 0100644 # p './src/regex.c' 213137 1033668504 0100644 # p './src/s/cygwin32.h' 2877 1037602365 0100644 # p './src/s/mingw32.h' 2655 1037602365 0100644 # p './src/s/windowsnt.h' 9688 1037602366 0100644 # p './src/scrollbar-gtk.c' 15225 1038381314 0100644 # p './src/scrollbar-x.c' 22790 1038381314 0100644 # p './src/search.c' 93371 1033551082 0100644 # p './src/sheap.c' 4347 1039753746 0100644 # p './src/signal.c' 47126 1038381314 0100644 # p './src/specifier.c' 106825 1032879565 0100644 # p './src/symbols.c' 115950 1037602361 0100644 # p './src/symeval.h' 17958 1037602361 0100644 # p './src/sysdep.c' 113181 1038381314 0100644 # p './src/syswindows.h' 33802 1037602361 0100644 # p './src/toolbar-msw.c' 18386 1038643826 0100644 # p './src/unexcw.c' 15997 1037602361 0100644 # p './src/unicode.c' 64598 1030862505 0100644 # p './src/window.c' 205409 1040005974 0100644 # p './src/window.h' 6971 1039343114 0100644 # p './tests/ChangeLog' 13060 1041743625 0100644 # p './tests/automated/regexp-tests.el' 7082 1040969701 0100644 # p './tests/automated/syntax-tests.el' 4699 1037029147 0100644 # p './tests/automated/test-harness.el' 15098 1040969598 0100644 # p './version.sh' 240 1041743606 0100644 # C './modules/common' 0 1042086532 040755 # C './modules/postgresql' 0 1042086533 040755 # C './modules/sample/external' 0 1042086533 040755 # C './modules/sample/internal' 0 1042086533 040755 #### End of ApplyPatch data #### #### End of Patch kit [created: Thu Jan 9 14:17:35 2003] #### #### Patch checksum: 66647 2277930 57842 #### #### Checksum: 66737 2281449 35713 ####