# This is a patch for xemacs-21.5.1 to update it to xemacs-21.5.2 # # 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 as shown below. # STEP 3: Run the 'patch' program with this file as input. # # These are the commands needed to create/delete files/directories: # rm -f './src/nativesound.h' rm -f './lwlib/lwlib-config.c' rm -f './lisp/x-win-xfree86.elc' rm -f './lisp/x-win-sun.elc' rm -f './lisp/x-select.elc' rm -f './lisp/x-scrollbar.elc' rm -f './lisp/x-mouse.elc' rm -f './lisp/x-misc.elc' rm -f './lisp/x-iso8859-1.elc' rm -f './lisp/x-init.elc' rm -f './lisp/x-font-menu.elc' rm -f './lisp/x-faces.elc' rm -f './lisp/x-compose.elc' rm -f './lisp/window.elc' rm -f './lisp/window-xemacs.elc' rm -f './lisp/win32-native.elc' rm -f './lisp/widgets-gtk.elc' rm -f './lisp/widget.elc' rm -f './lisp/wid-edit.elc' rm -f './lisp/wid-browse.elc' rm -f './lisp/view-less.elc' rm -f './lisp/userlock.elc' rm -f './lisp/undo-stack.elc' rm -f './lisp/tty-init.elc' rm -f './lisp/toolbar.elc' rm -f './lisp/toolbar-items.elc' rm -f './lisp/text-props.elc' rm -f './lisp/text-mode.elc' rm -f './lisp/term/win32-win.el' rm -f './lisp/term/sun.el' rm -f './lisp/term/sun-mouse.el' rm -f './lisp/term/pc-win.el' rm -f './lisp/term/internal.el' rm -f './lisp/syntax.elc' rm -f './lisp/symbols.elc' rm -f './lisp/symbol-syntax.elc' rm -f './lisp/subr.elc' rm -f './lisp/startup.elc' rm -f './lisp/specifier.elc' rm -f './lisp/sound.elc' rm -f './lisp/simple.elc' rm -f './lisp/shadow.elc' rm -f './lisp/setup-paths.elc' rm -f './lisp/select.elc' rm -f './lisp/scrollbar.elc' rm -f './lisp/replace.elc' rm -f './lisp/register.elc' rm -f './lisp/rect.elc' rm -f './lisp/process.elc' rm -f './lisp/printer.elc' rm -f './lisp/picture.elc' rm -f './lisp/paragraphs.elc' rm -f './lisp/page.elc' rm -f './lisp/packages.elc' rm -f './lisp/package-ui.elc' rm -f './lisp/package-net.elc' rm -f './lisp/package-info.elc' rm -f './lisp/package-get.elc' rm -f './lisp/package-admin.elc' rm -f './lisp/obsolete.elc' rm -f './lisp/objects.elc' rm -f './lisp/mwheel.elc' rm -f './lisp/multicast.elc' rm -f './lisp/mule/vietnamese.elc' rm -f './lisp/mule/viet-chars.elc' rm -f './lisp/mule/thai-xtis.elc' rm -f './lisp/mule/thai-xtis-chars.elc' rm -f './lisp/mule/mule-x-init.elc' rm -f './lisp/mule/mule-tty-init.elc' rm -f './lisp/mule/mule-misc.elc' rm -f './lisp/mule/mule-init.elc' rm -f './lisp/mule/mule-help.elc' rm -f './lisp/mule/mule-coding.elc' rm -f './lisp/mule/mule-cmds.elc' rm -f './lisp/mule/mule-charset.elc' rm -f './lisp/mule/mule-ccl.elc' rm -f './lisp/mule/mule-category.elc' rm -f './lisp/mule/misc-lang.elc' rm -f './lisp/mule/latin.elc' rm -f './lisp/mule/korean.elc' rm -f './lisp/mule/kinsoku.elc' rm -f './lisp/mule/japanese.elc' rm -f './lisp/mule/hebrew.elc' rm -f './lisp/mule/greek.elc' rm -f './lisp/mule/european.elc' rm -f './lisp/mule/ethiopic.elc' rm -f './lisp/mule/english.elc' rm -f './lisp/mule/cyrillic.elc' rm -f './lisp/mule/custom-load.el' rm -f './lisp/mule/chinese.elc' rm -f './lisp/mule/auto-autoloads.elc' rm -f './lisp/mule/auto-autoloads.el' rm -f './lisp/mule/arabic.elc' rm -f './lisp/msw-select.elc' rm -f './lisp/msw-mouse.elc' rm -f './lisp/msw-init.elc' rm -f './lisp/msw-glyphs.elc' rm -f './lisp/msw-font-menu.elc' rm -f './lisp/msw-faces.elc' rm -f './lisp/movemail.elc' rm -f './lisp/mouse.elc' rm -f './lisp/modeline.elc' rm -f './lisp/mode-motion.elc' rm -f './lisp/misc.elc' rm -f './lisp/minibuf.elc' rm -f './lisp/menubar.elc' rm -f './lisp/menubar-items.elc' rm -f './lisp/map-ynp.elc' rm -f './lisp/loadhist.elc' rm -f './lisp/loaddefs.elc' rm -f './lisp/list-mode.elc' rm -f './lisp/lisp.elc' rm -f './lisp/lisp-mode.elc' rm -f './lisp/lisp-mnt.elc' rm -f './lisp/lib-complete.elc' rm -f './lisp/ldap.elc' rm -f './lisp/keymap.elc' rm -f './lisp/keydefs.elc' rm -f './lisp/itimer.elc' rm -f './lisp/itimer-autosave.elc' rm -f './lisp/iso8859-1.elc' rm -f './lisp/isearch-mode.elc' rm -f './lisp/info.elc' rm -f './lisp/indent.elc' rm -f './lisp/hyper-apropos.elc' rm -f './lisp/help.elc' rm -f './lisp/help-nomule.elc' rm -f './lisp/help-macro.elc' rm -f './lisp/hash-table.elc' rm -f './lisp/gutter.elc' rm -f './lisp/gutter-items.elc' rm -f './lisp/gui.elc' rm -f './lisp/gtk.elc' rm -f './lisp/gtk-widgets.elc' rm -f './lisp/gtk-widget-accessors.elc' rm -f './lisp/gtk-select.elc' rm -f './lisp/gtk-password-dialog.elc' rm -f './lisp/gtk-package.elc' rm -f './lisp/gtk-mouse.elc' rm -f './lisp/gtk-marshal.elc' rm -f './lisp/gtk-iso8859-1.elc' rm -f './lisp/gtk-init.elc' rm -f './lisp/gtk-glyphs.elc' rm -f './lisp/gtk-font-menu.elc' rm -f './lisp/gtk-file-dialog.elc' rm -f './lisp/gtk-ffi.elc' rm -f './lisp/gtk-faces.elc' rm -f './lisp/gtk-extra.elc' rm -f './lisp/gtk-compose.elc' rm -f './lisp/gpm.elc' rm -f './lisp/gnuserv.elc' rm -f './lisp/gnome.elc' rm -f './lisp/gnome-widgets.elc' rm -f './lisp/glyphs.elc' rm -f './lisp/glade.elc' rm -f './lisp/generic-widgets.elc' rm -f './lisp/gdk.elc' rm -f './lisp/frame.elc' rm -f './lisp/format.elc' rm -f './lisp/fontl-hooks.elc' rm -f './lisp/font.elc' rm -f './lisp/font-menu.elc' rm -f './lisp/font-lock.elc' rm -f './lisp/float-sup.elc' rm -f './lisp/finder.elc' rm -f './lisp/finder-inf.elc' rm -f './lisp/finder-inf.el' rm -f './lisp/find-paths.elc' rm -f './lisp/fill.elc' rm -f './lisp/files.elc' rm -f './lisp/files-nomule.elc' rm -f './lisp/faces.elc' rm -f './lisp/extents.elc' rm -f './lisp/events.elc' rm -f './lisp/etags.elc' rm -f './lisp/easymenu.elc' rm -f './lisp/dump-paths.elc' rm -f './lisp/dragdrop.elc' rm -f './lisp/disp-table.elc' rm -f './lisp/disass.elc' rm -f './lisp/dialog.elc' rm -f './lisp/dialog-items.elc' rm -f './lisp/dialog-gtk.elc' rm -f './lisp/device.elc' rm -f './lisp/derived.elc' rm -f './lisp/custom.elc' rm -f './lisp/custom-load.elc' rm -f './lisp/custom-load.el' rm -f './lisp/cus-start.elc' rm -f './lisp/cus-load.elc' rm -f './lisp/cus-file.elc' rm -f './lisp/cus-face.elc' rm -f './lisp/cus-edit.elc' rm -f './lisp/cus-dep.elc' rm -f './lisp/console.elc' rm -f './lisp/config.elc' rm -f './lisp/compat.elc' rm -f './lisp/coding.elc' rm -f './lisp/code-process.elc' rm -f './lisp/code-files.elc' rm -f './lisp/code-cmds.elc' rm -f './lisp/cmdloop.elc' rm -f './lisp/cl.elc' rm -f './lisp/cl-seq.elc' rm -f './lisp/cl-macs.elc' rm -f './lisp/cl-extra.elc' rm -f './lisp/cl-compat.elc' rm -f './lisp/check-features.elc' rm -f './lisp/callers-of-rpt.elc' rm -f './lisp/bytecomp.elc' rm -f './lisp/bytecomp-runtime.elc' rm -f './lisp/byte-optimize.elc' rm -f './lisp/build-report.elc' rm -f './lisp/buffer.elc' rm -f './lisp/buff-menu.elc' rm -f './lisp/blessmail.elc' rm -f './lisp/behavior.elc' rm -f './lisp/behavior-defs.elc' rm -f './lisp/backquote.elc' rm -f './lisp/autoload.elc' rm -f './lisp/auto-show.elc' rm -f './lisp/auto-save.elc' rm -f './lisp/auto-autoloads.elc' rm -f './lisp/auto-autoloads.el' rm -f './lisp/apropos.elc' rm -f './lisp/alist.elc' rm -f './lisp/about.elc' rm -f './lisp/abbrev.elc' rm -f './info/xemacs.info-9' rm -f './info/xemacs.info-8' rm -f './info/xemacs.info-7' rm -f './info/xemacs.info-6' rm -f './info/xemacs.info-5' rm -f './info/xemacs.info-4' rm -f './info/xemacs.info-3' rm -f './info/xemacs.info-23' rm -f './info/xemacs.info-22' rm -f './info/xemacs.info-21' rm -f './info/xemacs.info-20' rm -f './info/xemacs.info-2' rm -f './info/xemacs.info-19' rm -f './info/xemacs.info-18' rm -f './info/xemacs.info-17' rm -f './info/xemacs.info-16' rm -f './info/xemacs.info-15' rm -f './info/xemacs.info-14' rm -f './info/xemacs.info-13' rm -f './info/xemacs.info-12' rm -f './info/xemacs.info-11' rm -f './info/xemacs.info-10' rm -f './info/xemacs.info-1' rm -f './info/xemacs.info' rm -f './info/xemacs-faq.info-5' rm -f './info/xemacs-faq.info-4' rm -f './info/xemacs-faq.info-3' rm -f './info/xemacs-faq.info-2' rm -f './info/xemacs-faq.info-1' rm -f './info/xemacs-faq.info' rm -f './info/widget.info' rm -f './info/texinfo.info-9' rm -f './info/texinfo.info-8' rm -f './info/texinfo.info-7' rm -f './info/texinfo.info-6' rm -f './info/texinfo.info-5' rm -f './info/texinfo.info-4' rm -f './info/texinfo.info-3' rm -f './info/texinfo.info-2' rm -f './info/texinfo.info-12' rm -f './info/texinfo.info-11' rm -f './info/texinfo.info-10' rm -f './info/texinfo.info-1' rm -f './info/texinfo.info' rm -f './info/termcap.info-3' rm -f './info/termcap.info-2' rm -f './info/termcap.info-1' rm -f './info/termcap.info' rm -f './info/term.info' rm -f './info/standards.info-4' rm -f './info/standards.info-3' rm -f './info/standards.info-2' rm -f './info/standards.info-1' rm -f './info/standards.info' rm -f './info/new-users-guide.info-3' rm -f './info/new-users-guide.info-2' rm -f './info/new-users-guide.info-1' rm -f './info/new-users-guide.info' rm -f './info/lispref.info-9' rm -f './info/lispref.info-8' rm -f './info/lispref.info-7' rm -f './info/lispref.info-6' rm -f './info/lispref.info-5' rm -f './info/lispref.info-48' rm -f './info/lispref.info-47' rm -f './info/lispref.info-46' rm -f './info/lispref.info-45' rm -f './info/lispref.info-44' rm -f './info/lispref.info-43' rm -f './info/lispref.info-42' rm -f './info/lispref.info-41' rm -f './info/lispref.info-40' rm -f './info/lispref.info-4' rm -f './info/lispref.info-39' rm -f './info/lispref.info-38' rm -f './info/lispref.info-37' rm -f './info/lispref.info-36' rm -f './info/lispref.info-35' rm -f './info/lispref.info-34' rm -f './info/lispref.info-33' rm -f './info/lispref.info-32' rm -f './info/lispref.info-31' rm -f './info/lispref.info-30' rm -f './info/lispref.info-3' rm -f './info/lispref.info-29' rm -f './info/lispref.info-28' rm -f './info/lispref.info-27' rm -f './info/lispref.info-26' rm -f './info/lispref.info-25' rm -f './info/lispref.info-24' rm -f './info/lispref.info-23' rm -f './info/lispref.info-22' rm -f './info/lispref.info-21' rm -f './info/lispref.info-20' rm -f './info/lispref.info-2' rm -f './info/lispref.info-19' rm -f './info/lispref.info-18' rm -f './info/lispref.info-17' rm -f './info/lispref.info-16' rm -f './info/lispref.info-15' rm -f './info/lispref.info-14' rm -f './info/lispref.info-13' rm -f './info/lispref.info-12' rm -f './info/lispref.info-11' rm -f './info/lispref.info-10' rm -f './info/lispref.info-1' rm -f './info/lispref.info' rm -f './info/internals.info-9' rm -f './info/internals.info-8' rm -f './info/internals.info-7' rm -f './info/internals.info-6' rm -f './info/internals.info-5' rm -f './info/internals.info-4' rm -f './info/internals.info-3' rm -f './info/internals.info-2' rm -f './info/internals.info-1' rm -f './info/internals.info' rm -f './info/info.info' rm -f './info/external-widget.info' rm -f './info/emodules.info' rm -f './info/custom.info' rm -f './info/cl.info-6' rm -f './info/cl.info-5' rm -f './info/cl.info-4' rm -f './info/cl.info-3' rm -f './info/cl.info-2' rm -f './info/cl.info-1' rm -f './info/cl.info' rm -f './etc/xemacs-ja.1' rm -f './etc/OXYMORONS' rm -f './etc/MYTHOLOGY' touch './etc/VEGETABLES' chmod 0644 './etc/VEGETABLES' touch './lisp/term/cygwin.el' chmod 0644 './lisp/term/cygwin.el' touch './src/devslots.h' chmod 0644 './src/devslots.h' touch './src/glyphs-shared.c' chmod 0644 './src/glyphs-shared.c' touch './src/s/darwin.h' chmod 0644 './src/s/darwin.h' touch './src/sound.h' chmod 0644 './src/sound.h' # # This command terminates the shell and need not be executed manually. exit # #### End of Preamble #### #### Patch data follows #### diff --text -u 'xemacs-21.5.1/CHANGES-beta' 'xemacs-21.5.2/CHANGES-beta' Index: ././CHANGES-beta --- ././CHANGES-beta Wed May 9 19:48:45 2001 +++ ././CHANGES-beta Sat Jul 28 16:38:49 2001 @@ -1,3 +1,93 @@ +to 21.5.2 "artichoke" +-- fixes and improvements -- Ben Wing + -- etags.c synched to upstream + -- lisp/term/*.el cleanup + -- miscellaneous help improvements + -- transpose-line-up/down maybe moves the region + -- MS Windows init improvements + -- add scroll-in-place, jka-compr, efs, some fixes in behavior-defs.el + -- paths-find-recursive-path: fix error with null EXCLUDE-REGEXP + -- font-lock-mode: fix problem with buffers starting with a space + -- make find-library search patch configurable + -- fix Dired problem with directories containing [] and code that + destructively modifies an existing string + -- stop mark_window_as_deleted from deleting information that needs to + be accessed by set-window-configuration + -- Lisp object structure rationalization + -- fix two nasty bugs in the unwinding code + -- fix mouse wheel/dead window crash under MS Windows + -- mswindows_utime, close_file_data: fix off-by-one-indirection error + -- control-G handling fixes for MS Windows + -- debug-mswindows-events and related code introduced + -- rearrange the signal-handling code to eliminate the former + spaghetti logic paths in it; document; fix numerous bugs + -- maintain the "iconified" state, to fix the "can't delete a frame" bug + -- use CBufbyte instead of char for error/warning functions + -- prepare to remove encapsulation + -- make play_sound_data return an int, like all other such functions + -- use EMACS_SIGNAL to avoid preprocessing games with signal() + -- gc-in-window-procedure fixes + -- Cygwin setitimer fixes + -- windows shell fixes + -- more structured errors + -- MS Windows network stream data corruption fixes + -- fix ~user file name handling + -- rename MAX_PATH to standard PATH_MAX + -- fix error compiling regexps with back-references in them + +-- fixes and improvements -- Martin Buchholz + -- byte optimizer fixes + -- move alloca twiddling after the feature test definitions, but + before the first "real" code + -- internal DECIMAL_PRINT_SIZE macro + -- s&m elimination: Eliminate the need to define HAVE_PTYS in s&m files + -- avoid test failure if (temp-directory) is a symlink + -- handle buggy Sun realloc() + +-- GTK fixes -- Bill Perry + -- GTK popup dialog fix + -- GTK added to font-window system mappings + -- gtk-marshal.el updated for new hash.c, and generator fixes, + -- GTK scrollbar fixes + -- buttons are now modifiers, so selection with the mouse works again + -- fix the disappearing GTK scrollbar problem + +-- movemail.c uses mkstemp if available -- Karl M. Hegbloom +-- specifiers may now conditionalize on GTK -- Stephen J. Turnbull +-- new hooks for package installation and deletion -- Sean MacLennan +-- locate-library completes and other package UI improvements -- Robert Pluim +-- save-some-buffers doesn't prematurely zap help window -- Michael Sperber +-- MS windows subprocess quoting arguments -- Ben Wing, Dan Holmsand +-- remove side effects from font-lock-compile-keywords -- Daiki Ueno +-- custom-display works on the GTK platform -- Karl Hegbloom +-- mouse-track fixes -- Adrian Aichner, Ben Wing +-- dragdrop fix for windowless events -- Mike Alexander +-- fix `unbalanced parentheses' bug in syntax -- Matt Tucker +-- gpmevent.c header inclusion fixes -- Bill Perry +-- make more glyph code shared across platforms -- Ben Wing, Bill Perry +-- remove lisp_string_set_file_times() because set_file_times() now + takes Lisp_Object path, instead of char* -- Adrian Aichner and Ben Wing +-- allow preemption on redisplay -- Kirill 'Big K' Katsnelson +-- new, faster implementation of long_to_string -- Hrvoje Niksic +-- Qccl_error: New error -- Yoshiki Hayashi +-- remove support for old beta versions of cygwin -- Ben Wing, Craig Lanning +-- fix crash with an unavailable network printer -- Mike Alexander +-- add support for MacOS X -- Greg Parkin and Martin Buchholz +-- better win9x (including WinMe) support -- Ben Wing, Stephen J. Turnbull +-- fix off-by-one error in EMACS_INT_MAX -- Yoshiki Hayashi + +-- warning, style, and doc fixes and improvements + -- warning fixes -- Ben Wing, Kirill 'Big K' Katsnelson, Martin Buchholz + -- eliminate numerous C++ errors -- Ben Wing, Martin Buchholz + -- code style corrections -- Ben Wing, Martin Buchholz + -- build improvements -- Ben Wing, Martin Buchholz + -- configure improvements and fixes -- Martin Buchholz, Ben Wing, + Stephen J. Turnbull + -- doc updates -- Adrian Aichner, Ben Wing, Alexey Mahotkin, Steve + Youngs, Stephen J. Turnbull, Yoshiki Hayashi, Steve Youngs, Paul + Stodghill, Malcolm Purvis, Jim Horning, Nick V. Pakoulin, Kirill + 'Big K' Katsnelson + to 21.5.1 "anise" -- This release contains a huge pile of changes by Ben Wing, including both bug fixes and features. Highlights: diff --text -u 'xemacs-21.5.1/ChangeLog' 'xemacs-21.5.2/ChangeLog' Index: ././ChangeLog --- ././ChangeLog Wed May 9 19:53:53 2001 +++ ././ChangeLog Sat Jul 28 16:48:22 2001 @@ -1,3 +1,133 @@ +2001-07-28 Stephen J. Turnbull + + * XEmacs 21.5.2 "artichoke" is released. + +2001-07-26 Stephen J. Turnbull + + * etc/MYTHOLOGY, etc/OXYMORONS: Remove. + etc/VEGETABLES: Copied from xemacs-builds module, file Codenames-21.5. + Bring codenames into synch with reality. + +2001-07-18 Adrian Aichner + + * etc\TUTORIAL: Fix minor typo. + * etc\TUTORIAL.de: Sync with TUTORIAL. + +2001-06-21 Ben Wing + + * README: + * README (http): + * README (ftp): + Rewrite. + +2001-05-29 Martin Buchholz + + * Makefile.in.in: `make distclean' would fail if srcdir != blddir. + Remove SUBDIR_DISTCLEAN until such a time as the module subdir is + properly integrated into the build system. + Only create ${moduledir} and ${sitemoduledir} if HAVE_SHLIB. + +2001-05-30 Ben Wing + + * configure.in (AC_INIT_PARSE_ARGS): + * configure.in (USAGE_ERROR): + * configure.in (XE_COMPUTE_RUNPATH): + Fix problems detecting both native and Linux sound on Cygwin + when compiled with --with-msw=no. + + Rearrange file-coding handling a bit to avoid warning when + compiling with Mule. + +2001-05-28 Martin Buchholz + + * configure.in (--xemacs-compiler): New. + * configure.usage: + * INSTALL: + Document XEMACS_CC and corresponding compiler option --xemacs-compiler. + Explain how to build xemacs using a C++ compiler. + +2001-05-29 Martin Buchholz + + * configure.in: Remove stray backslash. + +2001-05-26 Ben Wing + + * configure.in (XE_COMPUTE_RUNPATH): + rewrite warning output so that it doesn't happen by default -- + you should only get warnings when something is actively wrong, + not just because a feature is not present. + +2001-05-06 Karl M. Hegbloom + + * configure.in: See if mkstemp is available for movemail.c + +2001-05-24 Yoshiki Hayashi + + * etc/xemacs-ja.1: Removed. + +2001-05-23 Ben Wing + + * etc\sample.init.el: + * etc\sample.init.el (Init-safe-require): New. + * etc\sample.init.el ((fboundp 'pending-delete-mode)): + * etc\sample.init.el ((eq system-type 'windows-nt)): + * etc\sample.init.el (dired): + * etc\sample.init.el ((Init-safe-require 'efs-auto)): + * etc\sample.init.el (completer): + * etc\sample.init.el (crypt): + * etc\sample.init.el (filladapt): + * etc\sample.init.el ((fboundp 'turn-on-lazy-lock)): + * etc\sample.init.el ((fboundp 'resize-minibuffer-mode)): + * etc\sample.init.el ((Init-safe-require 'scroll-in-place)): + Rewrite to be much more careful about loading features -- now + it decays gracefully even in the complete absence of packages. + Also avoid doing obnoxious things when loading efs. + +2001-05-23 Ben Wing + + * configure.in (AC_INIT_PARSE_ARGS): + * configure.in (TAB): + * configure.in (XE_COMPUTE_RUNPATH): + add some support for eventually turning on file coding by + default. Fix numerous places where AC_MSG_WARN had quotes + around its arg, which is bad. Replace with []. Same for + AC_MSG_ERROR. + +2001-05-15 Steve Youngs + * configure.in: + If no native dumper (UNEXEC) is defined, simply use pdump. + If no SYSTEM_TYPE is defined, choose an appopriate default. + +2001-05-10 Paul Stodghill + + * etc/PACKAGES: Update to reflect new package dir tree. + * configure.in: Reverse the order of Windows and Linux sound tests + so that Cygwin will find Windows first. + +2001-05-14 Martin Buchholz + + * configure.in (XE_REALLOC_NULLPTR_BUG): New. +2001-05-15 Steve Youngs + + * etc/PACKAGES: Update to reflect new package dir tree. + +2001-05-11 Martin Buchholz + + * configure.in: + Check for sys/ptyio.h on HPUX, else for pty.h or perhaps sys/pty.h + +2001-05-10 Ben Wing + + * Makefile.in.in (all): + * Makefile.in.in (configure): + * Makefile.in.in (finder): + remove autoload targets. + +2001-04-26 Malcolm Purvis + + * configure.in: Check gtk version validity only when gtk-config + exists. + 2001-05-09 Martin Buchholz * XEmacs 21.5.1 "anise" is released. diff --text -u 'xemacs-21.5.1/INSTALL' 'xemacs-21.5.2/INSTALL' Index: ././INSTALL --- ././INSTALL Fri Apr 13 03:20:31 2001 +++ ././INSTALL Thu May 31 21:47:21 2001 @@ -159,6 +159,12 @@ variable CFLAGS is consulted. If that is also undefined, CFLAGS defaults to "-g -O" for gcc and "-g" for all other compilers. +The xemacs executable can be built using a C++ compiler. However, +because configure and programs in lib-src require a C compiler, two +compilers must be used at different times during the build process. +Use something like `configure --compiler=gcc --xemacs-compiler=g++'. +This option is intended for use by the maintainers. + The `--dynamic' option specifies that configure should try to link emacs dynamically rather than statically. diff --text -u 'xemacs-21.5.1/Makefile.in.in' 'xemacs-21.5.2/Makefile.in.in' Index: ././Makefile.in.in --- ././Makefile.in.in Fri Apr 13 03:20:32 2001 +++ ././Makefile.in.in Fri Jun 1 14:07:19 2001 @@ -225,9 +225,6 @@ ## Subdirectories that can be made recursively. SUBDIR = ${MAKE_SUBDIR} man -## Subdirectories that must be cleaned on distclean -SUBDIR_DISTCLEAN = ${SUBDIR} modules/sample modules/ldap modules/zlib modules/base64 - ## The makefiles of the directories in ${MAKE_SUBDIR}. SUBDIR_MAKEFILES = @SUBDIR_MAKEFILES@ @@ -252,7 +249,7 @@ .SUFFIXES: .NO_PARALLEL: ${GENERATED_HEADERS} ${MAKE_SUBDIR} dump-elcs -.PHONY: ${SUBDIR} all beta all-elc all-elcs dump-elc dump-elcs autoloads finder +.PHONY: ${SUBDIR} all beta all-elc all-elcs dump-elc dump-elcs finder ## Convenience target for XEmacs beta testers beta: clean all-elc finder info @@ -290,22 +287,6 @@ dump-elc dump-elcs: ${GENERATED_HEADERS} FRC.dump-elcs cd ./src && $(RECURSIVE_MAKE) dump-elcs -autoloads: lisp/auto-autoloads.el lisp/custom-load.el - -FRC.lisp.auto.autoloads.el: -lisp/auto-autoloads.el: FRC.lisp.auto.autoloads.el - $(RM) lisp/auto-autoloads.el - ${blddir}/src/${PROGNAME} -batch -vanilla \ - -l autoload -f batch-update-directory lisp - ${blddir}/src/${PROGNAME} -batch -vanilla \ - -f batch-byte-compile lisp/auto-autoloads.el - @$(RM) lisp/auto-autoloads.el~ - -FRC.lisp.custom.load.el: -lisp/custom-load.el: FRC.lisp.custom.load.el - ${blddir}/src/${PROGNAME} -batch -vanilla -l cus-dep \ - -f Custom-make-dependencies lisp - finder: src @echo "Building finder database ..." @(cd ./lisp; \ @@ -508,7 +489,10 @@ mkdir: FRC.mkdir ${MAKEPATH} ${COPYDESTS} ${docdir} ${infodir} ${archlibdir} \ ${mandir} ${bindir} ${datadir} ${libdir} ${pkgdir} \ - ${sitelispdir} ${moduledir} ${sitemoduledir} +#ifdef HAVE_SHLIB + ${moduledir} ${sitemoduledir} \ +#endif + ${sitelispdir} ## Delete all the installed files that the `install' target would ## create (but not the noninstalled files such as `make all' would @@ -580,7 +564,7 @@ $(RM) -r site-packages xemacs-packages mule-packages site-lisp distclean: FRC.distclean - for d in $(SUBDIR_DISTCLEAN); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done + for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done -${top_distclean} ## `realclean' diff --text -u 'xemacs-21.5.1/PROBLEMS' 'xemacs-21.5.2/PROBLEMS' Index: ././PROBLEMS --- ././PROBLEMS Fri Apr 13 03:20:32 2001 +++ ././PROBLEMS Wed May 9 22:46:55 2001 @@ -20,10 +20,10 @@ Also, Try finding the things you need using one of the search commands XEmacs provides (e.g. `C-s'). -A general advice: - WATCH OUT for .emacs file! ~/.emacs is your Emacs init file. If - you observe strange problems, invoke XEmacs with the `-q' option - and see if you can repeat the problem. +General advice: + WATCH OUT for your init file! (~/.xemacs/init.el or ~/.emacs) If + you observe strange problems, invoke XEmacs with the `-vanilla' + option and see if you can repeat the problem. * Problems with building XEmacs @@ -552,60 +552,53 @@ and later. ** Cygwin + *** In general use etc/check_cygwin_setup.sh to trap environment problems. The script etc/check_cygwin_setup.sh will attempt to detect whether -you have a suitable environment for building. This script may not work +you have a suitable environment for building. This script may not work correctly if you are using ash instead of bash (see below). -*** X11 not detected. - -This is usually because xmkmf is not in your path or because you are -using the default cygwin shell. The default cygwin shell (/bin/sh.exe) -is ash which appears to work in most circumstances but has some weird -failure modes. I recommend replacing sh.exe with bash.exe, this will -mean configure is slower but more reliable. - -*** Subprocesses do not work. - -You do not have "tty" in your CYGWIN32 (for b19) or CYGWIN (for b20) -environment variable. This must be set in your autoexec.bat (win95) or -the system properties (winnt) as it must be read before the cygwin dll -initializes. - -*** ^G does not work on hung subprocesses. +*** Syntax errors running configure scripts, make failing with exit code 127 + in inexplicable situations, etc. -This is a known problem. It can be remedied with cygwin b20 or greater -by defining BROKEN_SIGIO in src/s/cygwin32.h, however this currently -leads to instability in XEmacs. - -*** The XEmacs executable crashes at startup. - -This can be caused by many things. - -If you are running with X11 you need to have cygwin b19 or cygwin -b20.1 or greater, cygwin b20 will not work. - -If you are running with cygwin b19 make sure you are using egcs 1.0.2 -rather than vanilla gcc. XEmacs builds by default with -O3 which does -not work with the gcc that ships with b19. Alternatively use -O2. +This may be because you are using the default cygwin shell. The +default cygwin shell (/bin/sh.exe) is ash which appears to work in +most circumstances but has some weird failure modes. You need to +replace the symlink with bash.exe. + +*** Lots of compile errors, esp. on lines containing macro definitions + terminated by backslashes. + +Your partition holding the source files is mounted binary. It needs +to be mounted text. (This will not screw up any binary files because +the Cygwin utilities specify explicitly whether they want binary or +text mode when working with source vs. binary files, which overrides +the mount type.) To fix this, you just need to run the appropriate +mount command once -- afterwards, the settings are remembered in the +registry. + +*** Errors from make like /c:not found. + +Make sure you set the environment variable MAKE_MODE to UNIX in your +.bashrc, Control Panel (Windows 2000/NT), or AUTOEXEC.BAT (Windows +98/95). *** The info files will not build. -makeinfo that ships with cygwin (all versions) is a noop. You need to +makeinfo that ships with Cygwin (all versions) doesn't work. You need to obtain makeinfo from somewhere or build it yourself. -*** I have no graphics. +*** XEmacs hangs while attempting to rebuild the .elc files. -You need to obtain the various graphics libraries. Pre-built versions -of these and the X libraries are located on the XEmacs website in -ftp://ftp.xemacs.org/pub/aux/cygwin*. +Check to make sure you're not configuring with rel-alloc. The relocating +allocator does not currently work under Cygwin due to bugs in Cygwin's +mmap(). -*** There are no images in the toolbar buttons. +*** Trying to build with X, but X11 not detected. -You need version 4.71 of commctrl.dll which does not ship with windows -95. You can get this by installing IE 4.0 or downloading it from the -microsoft website. +This is usually because xmkmf is not in your path or because you are +using the default cygwin shell. (See above.) * Problems with running XEmacs @@ -1704,13 +1697,37 @@ ** Windows -*** Emacs exits with "X protocol error" when run with an X server for -Windows. +*** In general, the Windows code is less mature than the Unix code. + +The Windows code base is still changing quickly. If you are +experiencing problems, try the latest beta version to see if the +problem still exists. Also ask on xemacs-nt@xemacs.org. + -A certain X server for Windows had a bug which caused this. -Supposedly the newer 32-bit version of this server doesn't have the -problem. +** Cygwin +*** Subprocesses do not work. +You do not have "tty" in your CYGWIN environment variable. This must +be set in your autoexec.bat (win95) or the system properties (winnt) +as it must be read before the cygwin DLL initializes. + +*** ^G does not work on hung subprocesses. + +This is a known problem. It can be remedied by defining BROKEN_SIGIO +in src/s/cygwin.h, however this currently leads to instability in XEmacs. +(#### is this still true?) + +*** Errors from make like `/c:not found' when running `M-x compile'. + +Make sure you set the environment variable MAKE_MODE to UNIX in your +init file (.xemacs/init.el), Control Panel (Windows 2000/NT), or +AUTOEXEC.BAT (Windows 98/95). + +*** There are no images in the toolbar buttons. + +You need version 4.71 of commctrl.dll which does not ship with windows +95. You can get this by installing IE 4.0 or downloading it from the +microsoft website. * Compatibility problems (with Emacs 18, GNU Emacs, or previous XEmacs/lemacs) diff --text -u 'xemacs-21.5.1/README' 'xemacs-21.5.2/README' Index: ././README --- ././README Fri Apr 13 03:20:32 2001 +++ ././README Fri Jun 22 10:51:40 2001 @@ -1,7 +1,83 @@ -This directory tree holds version 21.2 of XEmacs, the extensible, -customizable, self-documenting real-time display editor. This version -of XEmacs also runs on various Microsoft Windows platforms including -MS Windows '95 and MS Windows NT and Cygwin. +This directory tree holds version 21.5 of XEmacs. + + + +*** What is XEmacs? + +XEmacs is a powerful, highly customizable open source text editor and +application development system, with full GUI support. It is protected +under the GNU Public License and related to other versions of Emacs, in +particular GNU Emacs. Its emphasis is on modern graphical user +interface support and an open software development model, similar to +Linux. XEmacs has an active development community numbering in the +hundreds (and thousands of active beta testers on top of this), and runs +on all versions of MS Windows, on Linux, and on nearly every other +version of Unix in existence. Support for XEmacs has been supplied by +Sun Microsystems, University of Illinois, Lucid, ETL/Electrotechnical +Laboratory, Amdahl Corporation, BeOpen, and others, as well as the +unpaid time of a great number of individual developers. + + + +*** What platforms does it run on? + + -- MS Windows (It has been tested on NT, 2000, 95, 98, and ME; you + can also compile Cygwin and MinGW versions.) + -- Unix (It is regularly tested on Linux, Solaris, SunOS, HP/UX, + FreeBSD, OpenBSD, BSD/OS aka BSDI, Tru64 aka DEC/OSF, SCO5, + and probably others. It should work on all versions of Unix + created in the last 10 years or so, perhaps with a bit of + work on more obscure platforms to correct bit-rot. It uses + a sophisticated configuration system to auto-detect zillions + of features that are implemented differently in different + versions of Unix, so it will probably work on your vendor's + version, possibly with a bit of tweaking, even if we've + never heard of it.) + -- MacOS/X (As an X Windows application. Unfortunately there is no + support currently for MacOS-specific features.) + + There is also a port of XEmacs 19.14 (an older version, circa 1996) + for all versions of MacOS, with extensive support for MacOS-specific + features. See the FAQ for more details. + + There are rumors of an in-progress port to OS/2. See the FAQ. + + XEmacs will probably never work on MS/DOS or Windows 3.1, and we're + not particularly interested in patches for these platforms, as they + would introduce huge amounts of code clutter due to the woefully + underfeatured nature of these systems. (See GNU Emacs for a port to + MS/DOS.) + + + +*** Where's the FAQ? + +Look at `man/xemacs-faq.texi'. + +For the very latest version, see +http://cvs.xemacs.org/cgi-bin/cvswebxe/xemacs/man/xemacs-faq.texi. + + + +*** Where's the latest version? + +For up-to-date information on XEmacs, see http://www.xemacs.org. + +To download XEmacs, see http://ftp.xemacs.org/ or +ftp://ftp.xemacs.org/pub/xemacs/. + +For the latest experimental sources, see http://cvs.xemacs.org/, which +gives instructions on how to get started with CVS access. + +There are numerous mailing lists for discussion of XEmacs. The +current description of these lists can be found at +http://www.xemacs.org/Lists/, or see `etc/MAILINGLISTS'. General +discussion of bugs, new features, etc. takes place on +xemacs-beta@xemacs.org. + + + +*** How do I build and install XEmacs? See the file `etc/NEWS' for information on new features and other user-visible changes since the last version of XEmacs. @@ -10,22 +86,31 @@ Unix and Cygwin, once you have loaded the entire subtree of this directory. -The file `PROBLEMS' contains information on many common problems that -occur in building, installing and running XEmacs. - See the file `nt/README' for instructions on building XEmacs for Microsoft Windows. The file 'README.packages' will guide you in the installation of (essential) add on packages. -Reports of bugs in XEmacs should be posted to the newsgroup -comp.emacs.xemacs or sent to the mailing list xemacs@xemacs.org. See -the "Bugs" section of the XEmacs manual for more information on how to -report bugs. (The file `BUGS' in this directory explains how you can -find and read that section using the Info files that come with -XEmacs.) See `etc/MAILINGLISTS' for more information on mailing lists -relating to XEmacs and other GNU products. + + +*** How do I deal with bugs or with problems building, installing, or running? + +The file `PROBLEMS' contains information on many common problems that +occur in building, installing and running XEmacs. + +Reports of bugs in XEmacs should be sent to xemacs-beta@xemacs.org. +You can also post to the newsgroup comp.emacs.xemacs (or equivalentlt, +send to the mailing list xemacs@xemacs.org), but it is less likely +that the developers will see it in a timely fashion. See the "Bugs" +section of the XEmacs manual for more information on how to report +bugs. (The file `BUGS' in this directory explains how you can find +and read that section using the Info files that come with XEmacs.) +See `etc/MAILINGLISTS' for more information on mailing lists relating +to XEmacs. + + +*** What's the basic layout of the code? The file `configure' is a shell script to acclimate XEmacs to the oddities of your processor and operating system. It will create a @@ -45,19 +130,16 @@ There are several subdirectories: -`src' holds the C code for Emacs (the XEmacs Lisp interpreter and its +`src' holds the C code for XEmacs (the XEmacs Lisp interpreter and its primitives, the redisplay code, and some basic editing functions). -`lisp' holds the Emacs Lisp code for XEmacs (most everything else). +`lisp' holds the XEmacs Lisp code for XEmacs (most everything else). `lib-src' holds the source code for some utility programs for use by or with XEmacs, like movemail and etags. `etc' holds miscellaneous architecture-independent data files XEmacs uses, like the tutorial text and the Zippy the Pinhead quote database. The contents of the `lisp', `info' and `man' subdirectories are architecture-independent too. -`lwlib' holds the C code for the toolkit objects used by XEmacs. - +`lwlib' holds the C code for the X toolkit objects used by XEmacs. `info' holds the Info documentation tree for XEmacs. -`man' holds the source code for the XEmacs info documentation tree. - -`nt' holds configuration files for compiling XEmacs under Microsoft Windows - NT. The support for NT is very tentative right now. +`man' holds the source code for the XEmacs online documentation. +`nt' holds files used compiling XEmacs under Microsoft Windows. diff --text -u 'xemacs-21.5.1/configure' 'xemacs-21.5.2/configure' Index: ././configure --- ././configure Sat May 5 19:49:36 2001 +++ ././configure Sat Jul 28 16:48:13 2001 @@ -238,7 +238,6 @@ with_scrollbars='' with_widgets='' with_dialogs='' -with_file_coding='' cpp='' cppflags='' libs='' ldflags='' extra_includes='' dynamic='' @@ -375,6 +374,7 @@ srcdir | \ compiler | \ + xemacs_compiler | \ cflags | \ cpp | \ cppflags | \ @@ -741,7 +741,7 @@ m | ms | msw ) val=msw ;; * ) (echo "$progname: Usage error:" echo " " "The \`--$optname' option must have one of these values: - \`gtk\', \`lucid', \`motif', \`athena', \`yes', or \`no'." + \`gtk', \`lucid', \`motif', \`athena', \`yes', or \`no'." echo " Use \`$progname --help' to show usage.") >&2 && exit 1 ;; esac eval "$opt=\"$val\"" @@ -2577,11 +2577,17 @@ #ifndef UNEXEC -#define UNEXEC "unexec.o" +#define UNEXEC #endif configure___ unexec=UNEXEC +#ifndef SYSTEM_TYPE +#define SYSTEM_TYPE +#endif +configure___ system_type=SYSTEM_TYPE + + #ifndef LD_SWITCH_SHARED #define LD_SWITCH_SHARED "-c" #endif @@ -2683,6 +2689,18 @@ rm $tempcname +test -z "$system_type" && \ + { test "$extra_verbose" = "yes" && cat << EOF + Defining SYSTEM_TYPE = "`uname -s | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" +EOF +cat >> confdefs.h <&6 -echo "configure:2717: checking for whether the -Kalloca compiler flag is needed" >&5 +echo "configure:2735: 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:2745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* : else @@ -2734,14 +2752,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:2763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* need_kalloca=yes else @@ -2776,7 +2794,7 @@ if test "$GCC" = "yes"; then echo $ac_n "checking for buggy gcc versions""... $ac_c" 1>&6 -echo "configure:2780: checking for buggy gcc versions" >&5 +echo "configure:2798: 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.*) @@ -2899,7 +2917,7 @@ fi echo $ac_n "checking for dynodump""... $ac_c" 1>&6 -echo "configure:2903: checking for dynodump" >&5 +echo "configure:2921: checking for dynodump" >&5 if test "$unexec" != "unexsol2.o"; then echo "$ac_t""no" 1>&6 else @@ -2937,12 +2955,12 @@ done echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6 -echo "configure:2941: checking for terminateAndUnload in -lC" >&5 +echo "configure:2959: 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:2975: \"$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 @@ -3061,7 +3079,7 @@ if test "$add_runtime_path" = "yes"; then echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6 -echo "configure:3065: checking "for runtime libraries flag"" >&5 +echo "configure:3083: checking "for runtime libraries flag"" >&5 case "$opsys" in sol2 ) dash_r="-R" ;; decosf* | linux* | irix*) dash_r="-rpath " ;; @@ -3083,14 +3101,14 @@ done fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* dash_r="$try_dash_r" else @@ -3191,10 +3209,10 @@ fi after_morecore_hook_exists=yes echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6 -echo "configure:3195: checking for malloc_set_state" >&5 +echo "configure:3213: 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:3239: \"$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 @@ -3237,16 +3255,16 @@ fi echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6 -echo "configure:3241: checking whether __after_morecore_hook exists" >&5 +echo "configure:3259: 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:3268: \"$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 @@ -3302,7 +3320,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:3306: checking for $ac_word" >&5 +echo "configure:3324: checking for $ac_word" >&5 if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. @@ -3357,7 +3375,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:3361: checking for a BSD compatible install" >&5 +echo "configure:3379: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" @@ -3411,7 +3429,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:3415: checking for $ac_word" >&5 +echo "configure:3433: checking for $ac_word" >&5 if test -n "$YACC"; then ac_cv_prog_YACC="$YACC" # Let the user override the test. @@ -3443,15 +3461,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3447: checking for $ac_hdr" >&5 +echo "configure:3465: 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:3455: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3473: \"$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* @@ -3481,10 +3499,10 @@ done echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:3485: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:3503: checking for sys/wait.h that is POSIX.1 compatible" >&5 cat > conftest.$ac_ext < #include @@ -3500,7 +3518,7 @@ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:3504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3522: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -3524,10 +3542,10 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3528: checking for ANSI C header files" >&5 +echo "configure:3546: checking for ANSI C header files" >&5 cat > conftest.$ac_ext < #include @@ -3535,7 +3553,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3539: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3557: \"$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* @@ -3552,7 +3570,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 @@ -3570,7 +3588,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 @@ -3588,7 +3606,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') @@ -3599,7 +3617,7 @@ exit (0); } EOF -if { (eval echo configure:3603: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:3621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -3625,10 +3643,10 @@ fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:3629: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:3647: checking whether time.h and sys/time.h may both be included" >&5 cat > conftest.$ac_ext < #include @@ -3637,7 +3655,7 @@ struct tm *tp; ; return 0; } EOF -if { (eval echo configure:3641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3659: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -3661,10 +3679,10 @@ fi echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:3665: checking for sys_siglist declaration in signal.h or unistd.h" >&5 +echo "configure:3683: checking for sys_siglist declaration in signal.h or unistd.h" >&5 cat > conftest.$ac_ext < #include @@ -3676,7 +3694,7 @@ char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:3680: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3698: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -3702,9 +3720,9 @@ echo $ac_n "checking for utime""... $ac_c" 1>&6 -echo "configure:3706: checking for utime" >&5 +echo "configure:3724: checking for utime" >&5 cat > conftest.$ac_ext < #include @@ -3712,7 +3730,7 @@ struct utimbuf x; x.actime = x.modtime = 0; utime ("/", &x); ; return 0; } EOF -if { (eval echo configure:3716: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3734: \"$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 @@ -3731,10 +3749,10 @@ for ac_func in utimes do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3735: checking for $ac_func" >&5 +echo "configure:3753: 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:3779: \"$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 @@ -3789,10 +3807,10 @@ echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:3793: checking return type of signal handlers" >&5 +echo "configure:3811: checking return type of signal handlers" >&5 cat > conftest.$ac_ext < #include @@ -3809,7 +3827,7 @@ int i; ; return 0; } EOF -if { (eval echo configure:3813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3831: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -3831,10 +3849,10 @@ echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3835: checking for size_t" >&5 +echo "configure:3853: checking for size_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3865,10 +3883,10 @@ fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3869: checking for pid_t" >&5 +echo "configure:3887: checking for pid_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3899,10 +3917,10 @@ fi echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:3903: checking for uid_t in sys/types.h" >&5 +echo "configure:3921: checking for uid_t in sys/types.h" >&5 cat > conftest.$ac_ext < EOF @@ -3938,10 +3956,10 @@ fi echo $ac_n "checking for mode_t""... $ac_c" 1>&6 -echo "configure:3942: checking for mode_t" >&5 +echo "configure:3960: checking for mode_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3972,10 +3990,10 @@ fi echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3976: checking for off_t" >&5 +echo "configure:3994: checking for off_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4006,10 +4024,10 @@ fi echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 -echo "configure:4010: checking for ssize_t" >&5 +echo "configure:4028: checking for ssize_t" >&5 cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4041,9 +4059,9 @@ echo $ac_n "checking for socklen_t""... $ac_c" 1>&6 -echo "configure:4045: checking for socklen_t" >&5 +echo "configure:4063: checking for socklen_t" >&5 cat > conftest.$ac_ext < socklen_t x; @@ -4052,7 +4070,7 @@ ; return 0; } EOF -if { (eval echo configure:4056: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -4061,7 +4079,7 @@ rm -rf conftest* cat > conftest.$ac_ext < int accept (int, struct sockaddr *, size_t *); @@ -4070,7 +4088,7 @@ ; return 0; } EOF -if { (eval echo configure:4074: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4092: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""size_t" 1>&6 @@ -4102,9 +4120,9 @@ rm -f conftest* echo $ac_n "checking for struct timeval""... $ac_c" 1>&6 -echo "configure:4106: checking for struct timeval" >&5 +echo "configure:4124: checking for struct timeval" >&5 cat > conftest.$ac_ext < @@ -4120,7 +4138,7 @@ static struct timeval x; x.tv_sec = x.tv_usec; ; return 0; } EOF -if { (eval echo configure:4124: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4142: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 HAVE_TIMEVAL=yes @@ -4142,10 +4160,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:4146: checking whether struct tm is in sys/time.h or time.h" >&5 +echo "configure:4164: checking whether struct tm is in sys/time.h or time.h" >&5 cat > conftest.$ac_ext < #include @@ -4153,7 +4171,7 @@ struct tm *tp; tp->tm_sec; ; return 0; } EOF -if { (eval echo configure:4157: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4175: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm=time.h else @@ -4177,10 +4195,10 @@ fi echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6 -echo "configure:4181: checking for tm_zone in struct tm" >&5 +echo "configure:4199: checking for tm_zone in struct tm" >&5 cat > conftest.$ac_ext < #include <$ac_cv_struct_tm> @@ -4188,7 +4206,7 @@ struct tm tm; tm.tm_zone; ; return 0; } EOF -if { (eval echo configure:4192: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_struct_tm_zone=yes else @@ -4211,10 +4229,10 @@ else echo $ac_n "checking for tzname""... $ac_c" 1>&6 -echo "configure:4215: checking for tzname" >&5 +echo "configure:4233: checking for tzname" >&5 cat > conftest.$ac_ext < #ifndef tzname /* For SGI. */ @@ -4224,7 +4242,7 @@ atoi(*tzname); ; return 0; } EOF -if { (eval echo configure:4228: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_var_tzname=yes else @@ -4250,10 +4268,10 @@ echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:4254: checking for working const" >&5 +echo "configure:4272: checking for working const" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4324: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -4327,7 +4345,7 @@ echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:4331: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:4349: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` cat > conftestmake <<\EOF @@ -4352,12 +4370,12 @@ echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4356: checking whether byte ordering is bigendian" >&5 +echo "configure:4374: 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 @@ -4368,11 +4386,11 @@ #endif ; return 0; } EOF -if { (eval echo configure:4372: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4390: \"$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 @@ -4383,7 +4401,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:4387: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4405: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4400,7 +4418,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:4435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_bigendian=no else @@ -4440,12 +4458,13 @@ echo $ac_n "checking size of short""... $ac_c" 1>&6 -echo "configure:4444: checking size of short" >&5 +echo "configure:4462: checking size of short" >&5 cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -4454,7 +4473,7 @@ exit(0); } EOF -if { (eval echo configure:4458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_short=`cat conftestval` else @@ -4482,12 +4501,13 @@ exit 1 fi echo $ac_n "checking size of int""... $ac_c" 1>&6 -echo "configure:4486: checking size of int" >&5 +echo "configure:4505: checking size of int" >&5 cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -4496,7 +4516,7 @@ exit(0); } EOF -if { (eval echo configure:4500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_int=`cat conftestval` else @@ -4518,12 +4538,13 @@ echo $ac_n "checking size of long""... $ac_c" 1>&6 -echo "configure:4522: checking size of long" >&5 +echo "configure:4542: checking size of long" >&5 cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -4532,7 +4553,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:4557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_sizeof_long=`cat conftestval` else @@ -4554,12 +4575,13 @@ echo $ac_n "checking size of long long""... $ac_c" 1>&6 -echo "configure:4558: checking size of long long" >&5 +echo "configure:4579: checking size of long long" >&5 cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -4568,7 +4590,7 @@ exit(0); } EOF -if { (eval echo configure:4572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4594: \"$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 @@ -4590,12 +4612,13 @@ echo $ac_n "checking size of void *""... $ac_c" 1>&6 -echo "configure:4594: checking size of void *" >&5 +echo "configure:4616: checking size of void *" >&5 cat > conftest.$ac_ext < +#include main() { FILE *f=fopen("conftestval", "w"); @@ -4604,7 +4627,7 @@ exit(0); } EOF -if { (eval echo configure:4608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:4631: \"$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 @@ -4627,7 +4650,7 @@ echo $ac_n "checking for long file names""... $ac_c" 1>&6 -echo "configure:4631: checking for long file names" >&5 +echo "configure:4654: 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: @@ -4673,10 +4696,10 @@ echo $ac_n "checking for sin""... $ac_c" 1>&6 -echo "configure:4677: checking for sin" >&5 +echo "configure:4700: checking for sin" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4726: \"$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 @@ -4717,12 +4740,12 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6 -echo "configure:4721: checking for sin in -lm" >&5 +echo "configure:4744: 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:4760: \"$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 @@ -4777,14 +4800,14 @@ cat > conftest.$ac_ext < int main() { return atanh(1.0) + asinh(1.0) + acosh(1.0); ; return 0; } EOF -if { (eval echo configure:4788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4811: \"$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 @@ -4800,15 +4823,72 @@ fi rm -f conftest* +for ac_func in mkstemp +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:4830: 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 $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_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:4856: \"$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 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + 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 +done + + echo "checking type of mail spool file locking" 1>&6 -echo "configure:4805: checking type of mail spool file locking" >&5 +echo "configure:4885: 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:4809: checking for $ac_func" >&5 +echo "configure:4889: 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:4915: \"$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 @@ -4913,12 +4993,12 @@ case "$opsys" in decosf*) echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6 -echo "configure:4917: checking for cma_open in -lpthreads" >&5 +echo "configure:4997: 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:5013: \"$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 @@ -4965,7 +5045,7 @@ esac echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6 -echo "configure:4969: checking whether the -xildoff compiler flag is required" >&5 +echo "configure:5049: 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; @@ -4977,7 +5057,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:4981: checking for \"-z ignore\" linker flag" >&5 +echo "configure:5061: 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 ;; @@ -4988,7 +5068,7 @@ echo "checking "for specified window system"" 1>&6 -echo "configure:4992: checking "for specified window system"" >&5 +echo "configure:5072: checking "for specified window system"" >&5 GNOME_CONFIG=no @@ -4996,7 +5076,7 @@ if test "$with_gnome" != "no"; then echo $ac_n "checking for GNOME configuration script""... $ac_c" 1>&6 -echo "configure:5000: checking for GNOME configuration script" >&5 +echo "configure:5080: checking for GNOME configuration script" >&5 for possible in gnome-config do possible_version=`${possible} --version 2> /dev/null` @@ -5027,59 +5107,59 @@ if test "$with_gtk" != "no";then echo $ac_n "checking for GTK configuration script""... $ac_c" 1>&6 -echo "configure:5031: checking for GTK configuration script" >&5 +echo "configure:5111: checking for GTK configuration script" >&5 for possible in gtk12-config gtk14-config gtk-config do possible_version=`${possible} --version 2> /dev/null` if test "x${possible_version}" != "x"; then GTK_CONFIG="${possible}" + case "${possible_version}" in + 1.0.*) echo "configure: warning: GTK 1.2 is required, please upgrade your version of GTK." 1>&2; with_gtk=no;; + 1.3.*) echo "configure: warning: GTK 1.3 is not supported right now" 1>&2; with_gtk=no;; + 1.2.*) + with_gtk=yes + break + ;; + *) echo "configure: warning: Found unsupported version of GTK: $possible_version" 1>&2;; + esac fi - case "${possible_version}" in - 1.0.*) echo "configure: warning: GTK 1.2 is required, please upgrade your version of GTK." 1>&2; with_gtk=no;; - 1.3.*) echo "configure: warning: GTK 1.3 is not supported right now" 1>&2; with_gtk=no;; - 1.2.*) - with_gtk=yes - break - ;; - *) echo "configure: warning: Found unsupported version of GTK: $possible_version" 1>&2;; - esac done echo "$ac_t""${GTK_CONFIG}" 1>&6 fi if test "${GTK_CONFIG}" != "no"; then echo $ac_n "checking gtk version""... $ac_c" 1>&6 -echo "configure:5053: checking gtk version" >&5 +echo "configure:5133: 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:5058: checking gtk libs" >&5 +echo "configure:5138: 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:5064: checking gtk cflags" >&5 +echo "configure:5144: checking gtk cflags" >&5 GTK_CFLAGS=`${GTK_CONFIG} --cflags` c_switch_gtk="$c_switch_gtk ${GTK_CFLAGS}" && if test "$extra_verbose" = "yes"; then echo " Appending \"${GTK_CFLAGS}\" to \$c_switch_gtk"; fi echo "$ac_t""${GTK_CFLAGS}" 1>&6 echo $ac_n "checking for main in -lgdk_imlib""... $ac_c" 1>&6 -echo "configure:5071: checking for main in -lgdk_imlib" >&5 +echo "configure:5151: 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:5163: \"$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,12 +5181,12 @@ echo $ac_n "checking for Imlib_init in -lImlib""... $ac_c" 1>&6 -echo "configure:5105: checking for Imlib_init in -lImlib" >&5 +echo "configure:5185: 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:5201: \"$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 @@ -5140,10 +5220,10 @@ for ac_func in gdk_imlib_init do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:5144: checking for $ac_func" >&5 +echo "configure:5224: 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:5250: \"$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 @@ -5243,15 +5323,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5247: checking for $ac_hdr" >&5 +echo "configure:5327: 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:5255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5335: \"$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* @@ -5282,19 +5362,19 @@ echo $ac_n "checking for main in -lxml""... $ac_c" 1>&6 -echo "configure:5286: checking for main in -lxml" >&5 +echo "configure:5366: 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:5378: \"$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 @@ -5316,19 +5396,19 @@ echo $ac_n "checking for main in -lglade""... $ac_c" 1>&6 -echo "configure:5320: checking for main in -lglade" >&5 +echo "configure:5400: 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:5412: \"$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 @@ -5350,19 +5430,19 @@ echo $ac_n "checking for main in -lglade-gnome""... $ac_c" 1>&6 -echo "configure:5354: checking for main in -lglade-gnome" >&5 +echo "configure:5434: 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:5446: \"$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 @@ -5383,7 +5463,7 @@ cat > conftest.$ac_ext < EOF @@ -5441,7 +5521,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:5445: checking for X" >&5 +echo "configure:5525: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -5501,12 +5581,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:5510: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5590: \"$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* @@ -5575,14 +5655,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:5666: \"$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. @@ -5691,17 +5771,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:5695: checking whether -R must be followed by a space" >&5 +echo "configure:5775: 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:5785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -5717,14 +5797,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:5808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -5760,12 +5840,12 @@ else echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:5764: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:5844: 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:5860: \"$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 @@ -5800,12 +5880,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:5804: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:5884: 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:5900: \"$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 @@ -5845,10 +5925,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:5849: checking for gethostbyname" >&5 +echo "configure:5929: checking for gethostbyname" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5955: \"$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 @@ -5892,12 +5972,12 @@ if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:5896: checking for gethostbyname in -lnsl" >&5 +echo "configure:5976: 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:5992: \"$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 @@ -5938,10 +6018,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:5942: checking for connect" >&5 +echo "configure:6022: checking for connect" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6048: \"$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 @@ -5987,12 +6067,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:5991: checking "$xe_msg_checking"" >&5 +echo "configure:6071: 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:6087: \"$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 @@ -6027,10 +6107,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:6031: checking for remove" >&5 +echo "configure:6111: checking for remove" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6137: \"$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 @@ -6074,12 +6154,12 @@ if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:6078: checking for remove in -lposix" >&5 +echo "configure:6158: 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:6174: \"$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 @@ -6114,10 +6194,10 @@ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:6118: checking for shmat" >&5 +echo "configure:6198: checking for shmat" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6224: \"$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 @@ -6161,12 +6241,12 @@ if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:6165: checking for shmat in -lipc" >&5 +echo "configure:6245: 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:6261: \"$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 @@ -6213,12 +6293,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:6217: checking "$xe_msg_checking"" >&5 +echo "configure:6297: 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:6313: \"$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 @@ -6396,7 +6476,7 @@ echo "checking for X defines extracted by xmkmf" 1>&6 -echo "configure:6400: checking for X defines extracted by xmkmf" >&5 +echo "configure:6480: checking for X defines extracted by xmkmf" >&5 rm -fr conftestdir if mkdir conftestdir; then cd conftestdir @@ -6411,7 +6491,7 @@ cd .. rm -fr conftestdir for word in $xmkmf_defines; do - case "$word" in + case "$word" in -D__STDC__*) ;; -D* ) sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'` @@ -6445,15 +6525,15 @@ ac_safe=`echo "X11/Intrinsic.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Intrinsic.h""... $ac_c" 1>&6 -echo "configure:6449: checking for X11/Intrinsic.h" >&5 +echo "configure:6529: 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:6457: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6537: \"$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* @@ -6471,18 +6551,18 @@ : else echo "$ac_t""no" 1>&6 -{ echo "configure: error: "Unable to find X11 header files."" 1>&2; exit 1; } +{ echo "configure: error: Unable to find X11 header files." 1>&2; exit 1; } fi echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:6481: checking for XOpenDisplay in -lX11" >&5 +echo "configure:6561: 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:6577: \"$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 @@ -6518,12 +6598,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:6522: checking "$xe_msg_checking"" >&5 +echo "configure:6602: 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:6618: \"$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 @@ -6551,7 +6631,7 @@ ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site" else echo "$ac_t""no" 1>&6 -{ echo "configure: error: "Unable to find X11 libraries."" 1>&2; exit 1; } +{ echo "configure: error: Unable to find X11 libraries." 1>&2; exit 1; } fi @@ -6561,12 +6641,12 @@ echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 -echo "configure:6565: checking for XShapeSelectInput in -lXext" >&5 +echo "configure:6645: 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:6661: \"$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 @@ -6600,12 +6680,12 @@ echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6 -echo "configure:6604: checking for XtOpenDisplay in -lXt" >&5 +echo "configure:6684: 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:6700: \"$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 @@ -6633,20 +6713,20 @@ libs_x="-lXt $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXt\" to \$libs_x"; fi else echo "$ac_t""no" 1>&6 -{ echo "configure: error: "Unable to find X11 libraries."" 1>&2; exit 1; } +{ echo "configure: error: Unable to find X11 libraries." 1>&2; exit 1; } fi echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6 -echo "configure:6643: checking the version of X11 being used" >&5 +echo "configure:6723: 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:6650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:6730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest foobar; x11_release=$? else @@ -6677,10 +6757,10 @@ for ac_func in XConvertCase do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6681: checking for $ac_func" >&5 +echo "configure:6761: 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:6787: \"$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 @@ -6735,15 +6815,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6739: checking for $ac_hdr" >&5 +echo "configure:6819: 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:6747: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6827: \"$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* @@ -6776,10 +6856,10 @@ for ac_func in XRegisterIMInstantiateCallback do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:6780: checking for $ac_func" >&5 +echo "configure:6860: 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:6886: \"$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 @@ -6830,9 +6910,9 @@ done echo $ac_n "checking for standard XRegisterIMInstantiateCallback prototype""... $ac_c" 1>&6 -echo "configure:6834: checking for standard XRegisterIMInstantiateCallback prototype" >&5 +echo "configure:6914: checking for standard XRegisterIMInstantiateCallback prototype" >&5 cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:6928: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 else @@ -6865,12 +6945,12 @@ test -z "$with_xmu" && { echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6 -echo "configure:6869: checking for XmuReadBitmapDataFromFile in -lXmu" >&5 +echo "configure:6949: 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:6965: \"$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 @@ -6920,19 +7000,19 @@ echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6 -echo "configure:6924: checking for main in -lXbsd" >&5 +echo "configure:7004: 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:7016: \"$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 @@ -6969,22 +7049,22 @@ fi if test "$with_msw" != "no"; then echo "checking for MS-Windows" 1>&6 -echo "configure:6973: checking for MS-Windows" >&5 +echo "configure:7053: checking for MS-Windows" >&5 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6 -echo "configure:6976: checking for main in -lgdi32" >&5 +echo "configure:7056: 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:7068: \"$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 @@ -7057,12 +7137,12 @@ fi fi cat > conftest.$ac_ext < int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; } EOF -if { (eval echo configure:7066: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:7146: \"$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 @@ -7126,15 +7206,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:7130: checking for X11/extensions/shape.h" >&5 +echo "configure:7210: 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:7138: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7218: \"$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* @@ -7186,7 +7266,7 @@ esac echo "checking for WM_COMMAND option" 1>&6 -echo "configure:7190: checking for WM_COMMAND option" >&5; +echo "configure:7270: checking for WM_COMMAND option" >&5; if test "$with_wmcommand" != "no"; then { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_WMCOMMAND @@ -7201,15 +7281,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:7205: checking for X11/Xauth.h" >&5 +echo "configure:7285: 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:7213: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7293: \"$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* @@ -7232,12 +7312,12 @@ } test -z "$with_xauth" && { echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6 -echo "configure:7236: checking for XauGetAuthByAddr in -lXau" >&5 +echo "configure:7316: 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:7332: \"$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 @@ -7293,15 +7373,15 @@ 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:7297: checking for ${dir}tt_c.h" >&5 +echo "configure:7377: checking for ${dir}tt_c.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7305: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7385: \"$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* @@ -7337,12 +7417,12 @@ 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:7341: checking "$xe_msg_checking"" >&5 +echo "configure:7421: 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; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7437: \"$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 @@ -7410,15 +7490,15 @@ 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:7414: checking for Dt/Dt.h" >&5 +echo "configure:7494: checking for Dt/Dt.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7502: \"$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* @@ -7441,12 +7521,12 @@ } test -z "$with_cde" && { echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6 -echo "configure:7445: checking for DtDndDragStart in -lDtSvc" >&5 +echo "configure:7525: checking for DtDndDragStart in -lDtSvc" >&5 ac_lib_var=`echo DtSvc'_'DtDndDragStart | sed 'y%./+-%__p_%'` xe_check_libs=" -lDtSvc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7541: \"$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 @@ -7478,11 +7558,13 @@ fi } -test -z "$with_cde" && with_cde=yes -if test "$with_dragndrop" = no; then - echo "configure: warning: No CDE without generic Drag'n'Drop support" 1>&2 +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 @@ -7500,15 +7582,21 @@ test "$window_system" != "x11" && with_offix=no if test "$with_xmu" != yes -a "$with_x11" = yes; then - echo "configure: warning: No OffiX without real Xmu support" 1>&2 + 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 - echo "configure: warning: No OffiX without generic Drag'n'Drop support" 1>&2 + 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 - echo "configure: warning: CDE already found, disabling OffiX support" 1>&2 + 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 @@ -7530,7 +7618,7 @@ if test "$with_dragndrop" != "no" ; then echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6 -echo "configure:7534: checking if drag and drop API is needed" >&5 +echo "configure:7622: 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 @@ -7550,18 +7638,18 @@ fi echo "checking for LDAP" 1>&6 -echo "configure:7554: checking for LDAP" >&5 +echo "configure:7642: 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:7557: checking for ldap.h" >&5 +echo "configure:7645: checking for ldap.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7565: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7653: \"$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* @@ -7584,15 +7672,15 @@ } 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:7588: checking for lber.h" >&5 +echo "configure:7676: checking for lber.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7684: \"$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* @@ -7616,12 +7704,12 @@ if test "$with_ldap" != "no"; then echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6 -echo "configure:7620: checking for ldap_search in -lldap" >&5 +echo "configure:7708: 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 +if { (eval echo configure:7724: \"$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 @@ -7657,12 +7745,12 @@ 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:7661: checking "$xe_msg_checking"" >&5 +echo "configure:7749: 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:7765: \"$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 @@ -7698,12 +7786,12 @@ 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:7702: checking "$xe_msg_checking"" >&5 +echo "configure:7790: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` xe_check_libs=" -lldap -llber -lkrb" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7806: \"$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 @@ -7739,12 +7827,12 @@ 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:7743: checking "$xe_msg_checking"" >&5 +echo "configure:7831: checking "$xe_msg_checking"" >&5 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` 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:7847: \"$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 @@ -7806,10 +7894,10 @@ 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:7810: checking for $ac_func" >&5 +echo "configure:7898: 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:7924: \"$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 @@ -7863,20 +7951,20 @@ if test "$with_postgresql" != "no"; then echo "checking for PostgreSQL" 1>&6 -echo "configure:7867: checking for PostgreSQL" >&5 +echo "configure:7955: 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:7872: checking for ${header_dir}libpq-fe.h" >&5 +echo "configure:7960: checking for ${header_dir}libpq-fe.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7880: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7968: \"$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* @@ -7900,12 +7988,12 @@ test -n "$libpq_fe_h_file" && { echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6 -echo "configure:7904: checking for PQconnectdb in -lpq" >&5 +echo "configure:7992: 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:8008: \"$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 @@ -7949,12 +8037,12 @@ echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6 -echo "configure:7953: checking for PQconnectStart in -lpq" >&5 +echo "configure:8041: 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 +if { (eval echo configure:8057: \"$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 @@ -8013,15 +8101,15 @@ if test "$window_system" != "none"; then echo "checking for graphics libraries" 1>&6 -echo "configure:8017: checking for graphics libraries" >&5 +echo "configure:8105: checking for graphics libraries" >&5 xpm_problem="" if test -z "$with_xpm"; then echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6 -echo "configure:8022: checking for Xpm - no older than 3.4f" >&5 +echo "configure:8110: checking for Xpm - no older than 3.4f" >&5 xe_check_libs=-lXpm cat > conftest.$ac_ext < @@ -8030,7 +8118,7 @@ XpmIncludeVersion != XpmLibraryVersion() ? 1 : XpmIncludeVersion < 30406 ? 2 : 0 ;} EOF -if { (eval echo configure:8034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8122: \"$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 @@ -8072,17 +8160,17 @@ libs_x="-lXpm $libs_x" && if test "$extra_verbose" = "yes"; then echo " Prepending \"-lXpm\" to \$libs_x"; fi echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6 -echo "configure:8076: checking for \"FOR_MSW\" xpm" >&5 +echo "configure:8164: 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 +if { (eval echo configure:8174: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* xpm_for_msw=no else @@ -8108,15 +8196,15 @@ 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:8112: checking for compface.h" >&5 +echo "configure:8200: checking for compface.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8120: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8208: \"$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* @@ -8139,12 +8227,12 @@ } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8143: checking for UnGenFace in -lcompface" >&5 +echo "configure:8231: checking for UnGenFace in -lcompface" >&5 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` xe_check_libs=" -lcompface " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8247: \"$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 @@ -8207,12 +8295,12 @@ if test "$with_png $with_tiff" != "no no"; then echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6 -echo "configure:8211: checking for inflate in -lc" >&5 +echo "configure:8299: checking for inflate in -lc" >&5 ac_lib_var=`echo c'_'inflate | 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:8315: \"$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 @@ -8242,12 +8330,12 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6 -echo "configure:8246: checking for inflate in -lz" >&5 +echo "configure:8334: checking for inflate in -lz" >&5 ac_lib_var=`echo z'_'inflate | sed 'y%./+-%__p_%'` xe_check_libs=" -lz " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8350: \"$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 @@ -8277,12 +8365,12 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6 -echo "configure:8281: checking for inflate in -lgz" >&5 +echo "configure:8369: 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:8385: \"$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 @@ -8323,15 +8411,15 @@ 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:8327: checking for jpeglib.h" >&5 +echo "configure:8415: 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:8335: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8423: \"$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* @@ -8354,12 +8442,12 @@ } test -z "$with_jpeg" && { echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:8358: checking for jpeg_destroy_decompress in -ljpeg" >&5 +echo "configure:8446: 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:8462: \"$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 @@ -8406,10 +8494,10 @@ png_problem="" test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:8410: checking for pow" >&5 +echo "configure:8498: checking for pow" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8524: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_pow=yes" else @@ -8453,15 +8541,15 @@ } 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:8457: checking for png.h" >&5 +echo "configure:8545: checking for png.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8465: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8553: \"$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* @@ -8484,12 +8572,12 @@ } test -z "$with_png" && { echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6 -echo "configure:8488: checking for png_read_image in -lpng" >&5 +echo "configure:8576: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8592: \"$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 @@ -8523,10 +8611,10 @@ } if test -z "$with_png"; then echo $ac_n "checking for workable png version information""... $ac_c" 1>&6 -echo "configure:8527: checking for workable png version information" >&5 +echo "configure:8615: checking for workable png version information" >&5 xe_check_libs="-lpng -lz" cat > conftest.$ac_ext < int main(int c, char **v) { @@ -8534,7 +8622,7 @@ if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) != 0) return 1; return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;} EOF -if { (eval echo configure:8538: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8626: \"$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 @@ -8577,15 +8665,15 @@ 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:8581: checking for tiffio.h" >&5 +echo "configure:8669: checking for tiffio.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8677: \"$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* @@ -8608,12 +8696,12 @@ } test -z "$with_tiff" && { echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6 -echo "configure:8612: checking for TIFFClientOpen in -ltiff" >&5 +echo "configure:8700: checking for TIFFClientOpen in -ltiff" >&5 ac_lib_var=`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'` xe_check_libs=" -ltiff " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8716: \"$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 @@ -8663,15 +8751,15 @@ 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:8667: checking for compface.h" >&5 +echo "configure:8755: checking for compface.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8675: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8763: \"$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* @@ -8694,12 +8782,12 @@ } test -z "$with_xface" && { echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8698: checking for UnGenFace in -lcompface" >&5 +echo "configure:8786: checking for UnGenFace in -lcompface" >&5 ac_lib_var=`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` xe_check_libs=" -lcompface " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8802: \"$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 @@ -8750,10 +8838,10 @@ if test "$with_x11" = "yes"; then echo "checking for X11 graphics libraries" 1>&6 -echo "configure:8754: checking for X11 graphics libraries" >&5 +echo "configure:8842: checking for X11 graphics libraries" >&5 echo "checking for the Athena widgets" 1>&6 -echo "configure:8757: checking for the Athena widgets" >&5 +echo "configure:8845: checking for the Athena widgets" >&5 case "$with_athena" in "xaw" | "") athena_variant=Xaw athena_3d=no ;; @@ -8767,12 +8855,12 @@ if test "$athena_3d" = "no"; then echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:8771: checking for XawScrollbarSetThumb in -l$athena_variant" >&5 +echo "configure:8859: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8875: \"$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 @@ -8799,12 +8887,12 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6 -echo "configure:8803: checking for threeDClassRec in -l$athena_variant" >&5 +echo "configure:8891: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8907: \"$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 @@ -8829,7 +8917,7 @@ 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 + 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 @@ -8839,19 +8927,19 @@ else echo "$ac_t""no" 1>&6 -echo "configure: warning: "Could not find an Athena widget library."" 1>&2 +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:8850: checking for threeDClassRec in -l$athena_variant" >&5 +echo "configure:8938: 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 <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8954: \"$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 @@ -8880,12 +8968,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for threeDClassRec in -lXaw""... $ac_c" 1>&6 -echo "configure:8884: checking for threeDClassRec in -lXaw" >&5 +echo "configure:8972: 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 +if { (eval echo configure:8988: \"$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 @@ -8911,11 +8999,11 @@ 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; + 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 +echo "configure: warning: Could not find a 3d Athena widget library that looked like $athena_variant." 1>&2 fi @@ -8927,15 +9015,15 @@ 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:8931: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9019: 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:8939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9027: \"$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* @@ -8950,20 +9038,20 @@ 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 + 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:8959: checking for X11/Xaw/XawInit.h" >&5 +echo "configure:9047: checking for X11/Xaw/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8967: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9055: \"$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* @@ -8981,7 +9069,7 @@ 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 +echo "configure: warning: Could not find a non-3d Athena header set." 1>&2 fi fi @@ -8989,15 +9077,15 @@ 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:8993: checking for X11/$athena_variant/XawInit.h" >&5 +echo "configure:9081: checking for X11/$athena_variant/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9001: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9089: \"$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* @@ -9014,15 +9102,15 @@ 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:9018: checking for X11/$athena_variant/ThreeD.h" >&5 +echo "configure:9106: checking for X11/$athena_variant/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9026: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9114: \"$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* @@ -9050,15 +9138,15 @@ 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:9054: checking for $athena_variant/XawInit.h" >&5 +echo "configure:9142: checking for $athena_variant/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9062: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9150: \"$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* @@ -9075,15 +9163,15 @@ 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:9079: checking for $athena_variant/ThreeD.h" >&5 +echo "configure:9167: checking for $athena_variant/ThreeD.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9087: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9175: \"$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* @@ -9112,15 +9200,15 @@ 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:9116: checking for X11/Xaw3d/XawInit.h" >&5 +echo "configure:9204: checking for X11/Xaw3d/XawInit.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9124: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9212: \"$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* @@ -9137,15 +9225,15 @@ 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:9141: checking for X11/Xaw3d/ThreeD.h" >&5 +echo "configure:9229: 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:9149: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9237: \"$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* @@ -9161,7 +9249,7 @@ 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 + echo "configure: warning: Assuming that X11/Xaw3d headers are suitable for $athena_variant." 1>&2 athena_h_path=X11/Xaw3d else @@ -9177,15 +9265,15 @@ 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:9181: checking for Xaw3d/XawInit.h" >&5 +echo "configure:9269: 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:9189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9277: \"$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* @@ -9202,15 +9290,15 @@ 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:9206: checking for Xaw3d/ThreeD.h" >&5 +echo "configure:9294: 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:9214: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9302: \"$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* @@ -9226,7 +9314,7 @@ 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 + echo "configure: warning: Assuming that Xaw3d headers are suitable for $athena_variant." 1>&2 athena_h_path=Xaw3d else @@ -9242,15 +9330,15 @@ 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:9246: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9334: 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:9254: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9342: \"$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* @@ -9266,12 +9354,12 @@ 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 + 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 +echo "configure: warning: Could not find a suitable 3d Athena header set." 1>&2 fi fi @@ -9285,15 +9373,15 @@ ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:9289: checking for Xm/Xm.h" >&5 +echo "configure:9377: 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:9297: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9385: \"$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* @@ -9310,12 +9398,12 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6 -echo "configure:9314: checking for XmStringFree in -lXm" >&5 +echo "configure:9402: 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 +if { (eval echo configure:9418: \"$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 @@ -9355,9 +9443,9 @@ if test "$have_motif" = "yes"; then echo $ac_n "checking for Lesstif""... $ac_c" 1>&6 -echo "configure:9359: checking for Lesstif" >&5 +echo "configure:9447: checking for Lesstif" >&5 cat > conftest.$ac_ext < #ifdef LESSTIF_VERSION @@ -9762,9 +9850,13 @@ test -z "$with_mule" && with_mule=no -test -z "$with_file_coding" && with_file_coding=no +if test "$with_file_coding" = "no" && test "$with_mule" = "yes"; then + echo "configure: warning: --with-file-coding forced to \`yes': Required for Mule support" 1>&2 + with_file_coding=yes +fi + if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then { test "$extra_verbose" = "yes" && cat << \EOF Defining FILE_CODING @@ -9779,9 +9871,11 @@ fi fi +test -z "$with_file_coding" && with_file_coding=no + if test "$with_mule" = "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:9785: checking for Mule-related features" >&5 +echo "configure:9879: checking for Mule-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining MULE EOF @@ -9806,15 +9900,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:9810: checking for $ac_hdr" >&5 +echo "configure:9904: 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:9818: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9912: \"$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* @@ -9845,12 +9939,12 @@ echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:9849: checking for strerror in -lintl" >&5 +echo "configure:9943: 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:9959: \"$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 @@ -9894,18 +9988,18 @@ echo "checking for Mule input methods" 1>&6 -echo "configure:9898: checking for Mule input methods" >&5 +echo "configure:9992: checking for Mule input methods" >&5 case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:9901: checking for XIM" >&5 +echo "configure:9995: checking for XIM" >&5 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6 -echo "configure:9904: checking for XOpenIM in -lX11" >&5 +echo "configure:9998: 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:10014: \"$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 @@ -9940,12 +10034,12 @@ if test "$have_motif $have_lesstif" = "yes no"; then echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6 -echo "configure:9944: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10038: 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:10054: \"$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 @@ -10021,15 +10115,15 @@ if test "$with_xfs" = "yes" ; then echo "checking for XFontSet" 1>&6 -echo "configure:10025: checking for XFontSet" >&5 +echo "configure:10119: checking for XFontSet" >&5 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6 -echo "configure:10028: checking for XmbDrawString in -lX11" >&5 +echo "configure:10122: 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:10138: \"$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 @@ -10080,15 +10174,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:10084: checking for wnn/jllib.h" >&5 +echo "configure:10178: 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:10092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10186: \"$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* @@ -10111,15 +10205,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:10115: checking for wnn/commonhd.h" >&5 +echo "configure:10209: 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:10123: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10217: \"$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* @@ -10144,10 +10238,10 @@ for ac_func in crypt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10148: checking for $ac_func" >&5 +echo "configure:10242: 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:10268: \"$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 @@ -10199,12 +10293,12 @@ test "$ac_cv_func_crypt" != "yes" && { echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:10203: checking for crypt in -lcrypt" >&5 +echo "configure:10297: 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:10313: \"$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 @@ -10250,12 +10344,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:10254: checking for jl_dic_list_e in -lwnn" >&5 +echo "configure:10348: 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:10364: \"$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 @@ -10284,12 +10378,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:10288: checking for jl_dic_list_e in -lwnn4" >&5 +echo "configure:10382: 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:10398: \"$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 @@ -10318,12 +10412,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:10322: checking for jl_dic_list_e in -lwnn6" >&5 +echo "configure:10416: 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:10432: \"$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 @@ -10352,12 +10446,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:10356: checking for dic_list_e in -lwnn6_fromsrc" >&5 +echo "configure:10450: 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:10466: \"$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 @@ -10416,12 +10510,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:10420: checking for jl_fi_dic_list in -l$libwnn" >&5 +echo "configure:10514: 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:10530: \"$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 @@ -10467,15 +10561,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:10471: checking for canna/jrkanji.h" >&5 +echo "configure:10565: 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:10479: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10573: \"$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* @@ -10502,15 +10596,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:10506: checking for canna/jrkanji.h" >&5 +echo "configure:10600: 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:10514: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10608: \"$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* @@ -10538,15 +10632,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:10542: checking for canna/RK.h" >&5 +echo "configure:10636: 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:10550: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10644: \"$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* @@ -10569,12 +10663,12 @@ } test -z "$with_canna" && { echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:10573: checking for RkBgnBun in -lRKC" >&5 +echo "configure:10667: 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:10683: \"$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 @@ -10608,12 +10702,12 @@ } test -z "$with_canna" && { echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:10612: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:10706: 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:10722: \"$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 @@ -10663,7 +10757,7 @@ else for feature in xim canna wnn; do if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then - echo "configure: warning: "--with-${feature} ignored: Not valid without Mule support"" 1>&2 + echo "configure: warning: --with-${feature} ignored: Not valid without Mule support" 1>&2 fi eval "with_${feature}=no" done @@ -10673,12 +10767,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:10677: checking for layout_object_getvalue in -li18n" >&5 +echo "configure:10771: 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:10787: \"$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 @@ -10775,10 +10869,10 @@ for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strerror tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10779: checking for $ac_func" >&5 +echo "configure:10873: 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:10899: \"$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 @@ -10833,10 +10927,10 @@ 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:10837: checking for $ac_func" >&5 +echo "configure:10931: 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:10957: \"$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 @@ -10888,10 +10982,10 @@ echo $ac_n "checking for openpty""... $ac_c" 1>&6 -echo "configure:10892: checking for openpty" >&5 +echo "configure:10986: checking for openpty" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11012: \"$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 @@ -10933,12 +11027,12 @@ echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:10937: checking for openpty in -lutil" >&5 +echo "configure:11031: 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:11047: \"$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 @@ -10980,19 +11074,19 @@ EOF } - for ac_hdr in pty.h libutil.h util.h + for ac_hdr in libutil.h util.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10988: checking for $ac_hdr" >&5 +echo "configure:11082: 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:10996: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11090: \"$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* @@ -11024,19 +11118,146 @@ test "$need_libutil" = "yes" && libs_system="$libs_system -lutil" && if test "$extra_verbose" = "yes"; then echo " Appending \"-lutil\" to \$libs_system"; fi fi +case "$opsys" in + hpux*) for ac_hdr in sys/ptyio.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:11127: 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:11135: \"$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_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + { test "$extra_verbose" = "yes" && cat << EOF + Defining $ac_tr_hdr +EOF +cat >> confdefs.h <&6 +fi +done + ;; + *) for ac_hdr in pty.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:11168: 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:11176: \"$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_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + { test "$extra_verbose" = "yes" && cat << EOF + Defining $ac_tr_hdr +EOF +cat >> confdefs.h <&6 +fi +done + + test "$ac_cv_header_pty_h" = "no" && for ac_hdr in sys/pty.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:11209: 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:11217: \"$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_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + { test "$extra_verbose" = "yes" && cat << EOF + Defining $ac_tr_hdr +EOF +cat >> confdefs.h <&6 +fi +done + + ;; +esac + for ac_hdr in stropts.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11032: checking for $ac_hdr" >&5 +echo "configure:11253: 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:11040: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11261: \"$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* @@ -11069,10 +11290,10 @@ for ac_func in isastream do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11073: checking for $ac_func" >&5 +echo "configure:11294: 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:11320: \"$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 @@ -11126,15 +11347,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11130: checking for $ac_hdr" >&5 +echo "configure:11351: 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:11138: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11359: \"$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* @@ -11171,10 +11392,10 @@ for ac_func in getloadavg do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11175: checking for $ac_func" >&5 +echo "configure:11396: 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:11422: \"$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 @@ -11230,15 +11451,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11234: checking for $ac_hdr" >&5 +echo "configure:11455: 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:11242: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11463: \"$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* @@ -11274,12 +11495,12 @@ echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:11278: checking for kstat_open in -lkstat" >&5 +echo "configure:11499: 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:11515: \"$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 @@ -11325,15 +11546,15 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11329: checking for $ac_hdr" >&5 +echo "configure:11550: 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:11337: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11558: \"$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* @@ -11365,12 +11586,12 @@ echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:11369: checking for kvm_read in -lkvm" >&5 +echo "configure:11590: 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:11606: \"$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 @@ -11415,16 +11636,16 @@ fi echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:11419: checking whether netdb declares h_errno" >&5 +echo "configure:11640: checking whether netdb declares h_errno" >&5 cat > conftest.$ac_ext < int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:11428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11649: \"$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 @@ -11444,16 +11665,16 @@ rm -f conftest* echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:11448: checking for sigsetjmp" >&5 +echo "configure:11669: checking for sigsetjmp" >&5 cat > conftest.$ac_ext < int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:11457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:11678: \"$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 @@ -11473,11 +11694,11 @@ rm -f conftest* echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:11477: checking whether localtime caches TZ" >&5 +echo "configure:11698: checking whether localtime caches TZ" >&5 if test "$ac_cv_func_tzset" = "yes"; then cat > conftest.$ac_ext < #if STDC_HEADERS @@ -11512,7 +11733,7 @@ exit (0); } EOF -if { (eval echo configure:11516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:11737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then emacs_cv_localtime_cache=no else @@ -11542,9 +11763,9 @@ if test "$HAVE_TIMEVAL" = "yes"; then echo $ac_n "checking whether gettimeofday accepts one or two arguments""... $ac_c" 1>&6 -echo "configure:11546: checking whether gettimeofday accepts one or two arguments" >&5 +echo "configure:11767: 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:11790: \"$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 @@ -11587,19 +11808,19 @@ echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:11591: checking for inline" >&5 +echo "configure:11812: 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:11824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -11640,17 +11861,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:11644: checking for working alloca.h" >&5 +echo "configure:11865: 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:11654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11875: \"$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 @@ -11674,10 +11895,10 @@ fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:11678: checking for alloca" >&5 +echo "configure:11899: checking for alloca" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11930: \"$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 @@ -11744,10 +11965,10 @@ echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:11748: checking whether alloca needs Cray hooks" >&5 +echo "configure:11969: checking whether alloca needs Cray hooks" >&5 cat > conftest.$ac_ext <&6 -echo "configure:11775: checking for $ac_func" >&5 +echo "configure:11996: 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:12022: \"$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 @@ -11827,10 +12048,10 @@ fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:11831: checking stack direction for C alloca" >&5 +echo "configure:12052: 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:12074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_stack_direction=1 else @@ -11879,15 +12100,15 @@ ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:11883: checking for vfork.h" >&5 +echo "configure:12104: checking for vfork.h" >&5 cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11891: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12112: \"$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* @@ -11915,10 +12136,10 @@ fi echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:11919: checking for working vfork" >&5 +echo "configure:12140: checking for working vfork" >&5 cat > conftest.$ac_ext < @@ -12013,7 +12234,7 @@ } } EOF -if { (eval echo configure:12017: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_vfork_works=yes else @@ -12039,10 +12260,10 @@ echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:12043: checking for working strcoll" >&5 +echo "configure:12264: checking for working strcoll" >&5 cat > conftest.$ac_ext < main () @@ -12052,7 +12273,7 @@ strcoll ("123", "456") >= 0); } EOF -if { (eval echo configure:12056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_strcoll_works=yes else @@ -12080,10 +12301,10 @@ for ac_func in getpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:12084: checking for $ac_func" >&5 +echo "configure:12305: 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:12331: \"$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 @@ -12134,10 +12355,10 @@ done echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:12138: checking whether getpgrp takes no argument" >&5 +echo "configure:12359: 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:12417: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_getpgrp_void=yes else @@ -12219,10 +12440,10 @@ echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:12223: checking for working mmap" >&5 +echo "configure:12444: checking for working mmap" >&5 case "$opsys" in ultrix* ) have_mmap=no ;; *) cat > conftest.$ac_ext < #include @@ -12255,7 +12476,7 @@ return 1; } EOF -if { (eval echo configure:12259: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then have_mmap=yes else @@ -12277,16 +12498,16 @@ } -case "$opsys" in cygwin*) +case "$opsys" in cygwin*) test "$rel_alloc" = "default" && rel_alloc=no ;; esac test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no 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:12288: checking for M_MMAP_THRESHOLD" >&5 +echo "configure:12509: checking for M_MMAP_THRESHOLD" >&5 cat > conftest.$ac_ext < int main() { @@ -12298,7 +12519,7 @@ ; return 0; } EOF -if { (eval echo configure:12302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:12523: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* rel_alloc=no; echo "$ac_t""yes" 1>&6; else @@ -12323,15 +12544,15 @@ ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:12327: checking for termios.h" >&5 +echo "configure:12548: 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:12335: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12556: \"$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* @@ -12374,15 +12595,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:12378: checking for termio.h" >&5 +echo "configure:12599: 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:12386: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12607: \"$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* @@ -12414,10 +12635,10 @@ echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:12418: checking for socket" >&5 +echo "configure:12639: checking for socket" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12665: \"$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 @@ -12455,15 +12676,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:12459: checking for netinet/in.h" >&5 +echo "configure:12680: 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:12467: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12688: \"$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* @@ -12480,15 +12701,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:12484: checking for arpa/inet.h" >&5 +echo "configure:12705: 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:12492: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12713: \"$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* @@ -12513,9 +12734,9 @@ } echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6 -echo "configure:12517: checking "for sun_len member in struct sockaddr_un"" >&5 +echo "configure:12738: checking "for sun_len member in struct sockaddr_un"" >&5 cat > conftest.$ac_ext < @@ -12526,7 +12747,7 @@ static struct sockaddr_un x; x.sun_len = 1; ; return 0; } EOF -if { (eval echo configure:12530: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12751: \"$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 @@ -12544,9 +12765,9 @@ fi rm -f conftest* echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6 -echo "configure:12548: checking "for ip_mreq struct in netinet/in.h"" >&5 +echo "configure:12769: checking "for ip_mreq struct in netinet/in.h"" >&5 cat > conftest.$ac_ext < @@ -12556,7 +12777,7 @@ static struct ip_mreq x; ; return 0; } EOF -if { (eval echo configure:12560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12781: \"$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 @@ -12587,10 +12808,10 @@ echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:12591: checking for msgget" >&5 +echo "configure:12812: checking for msgget" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12838: \"$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 @@ -12628,15 +12849,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:12632: checking for sys/ipc.h" >&5 +echo "configure:12853: 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:12640: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12861: \"$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* @@ -12653,15 +12874,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:12657: checking for sys/msg.h" >&5 +echo "configure:12878: 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:12665: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12886: \"$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* @@ -12699,15 +12920,15 @@ ac_safe=`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:12703: checking for dirent.h" >&5 +echo "configure:12924: 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:12711: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12932: \"$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* @@ -12734,15 +12955,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:12738: checking for sys/dir.h" >&5 +echo "configure:12959: 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:12746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12967: \"$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* @@ -12775,15 +12996,15 @@ ac_safe=`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:12779: checking for nlist.h" >&5 +echo "configure:13000: 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:12787: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13008: \"$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* @@ -12813,22 +13034,22 @@ echo "checking "for sound support"" 1>&6 -echo "configure:12817: checking "for sound support"" >&5 +echo "configure:13038: 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:12824: checking for multimedia/audio_device.h" >&5 +echo "configure:13045: 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:12832: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13053: \"$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* @@ -12876,12 +13097,12 @@ if test -z "$native_sound_lib"; then echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:12880: checking for ALopenport in -laudio" >&5 +echo "configure:13101: 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:13117: \"$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 @@ -12923,12 +13144,12 @@ if test -z "$native_sound_lib"; then echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:12927: checking for AOpenAudio in -lAlib" >&5 +echo "configure:13148: 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:13164: \"$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 @@ -12974,18 +13195,28 @@ fi if test -z "$sound_found"; then + if test "$with_msw" = "yes"; then + sound_found=yes + native_sound_lib= + extra_objs="$extra_objs ntplay.o" && if test "$extra_verbose" = "yes"; then + echo " xemacs will be linked with \"ntplay.o\"" + fi + fi + fi + + if test -z "$sound_found"; then 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:12981: checking for ${dir}/soundcard.h" >&5 +echo "configure:13212: 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:12989: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13220: \"$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* @@ -13021,13 +13252,6 @@ done fi - if test -z "$sound_found"; then - if test "$with_msw" = "yes"; then - sound_found=yes - native_sound_lib= - fi - fi - test "$sound_found" = "yes" && with_native_sound=yes fi @@ -13046,15 +13270,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:13050: checking for audio/audiolib.h" >&5 +echo "configure:13274: 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:13058: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13282: \"$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* @@ -13072,12 +13296,12 @@ echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6 -echo "configure:13076: checking for AuOpenServer in -laudio" >&5 +echo "configure:13300: 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:13316: \"$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 @@ -13127,7 +13351,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 @@ -13158,7 +13382,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:13162: checking for $ac_word" >&5 +echo "configure:13386: 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. @@ -13187,10 +13411,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:13191: checking for esd_play_stream" >&5 +echo "configure:13415: 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:13441: \"$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 @@ -13264,7 +13488,7 @@ if test "$with_tty" = "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:13268: checking for TTY-related features" >&5 +echo "configure:13492: checking for TTY-related features" >&5 { test "$extra_verbose" = "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -13280,12 +13504,12 @@ if test -z "$with_ncurses"; then echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:13284: checking for tgetent in -lncurses" >&5 +echo "configure:13508: 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:13524: \"$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 @@ -13329,15 +13553,15 @@ ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:13333: checking for ncurses/curses.h" >&5 +echo "configure:13557: 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:13341: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13565: \"$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* @@ -13359,15 +13583,15 @@ ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6 -echo "configure:13363: checking for ncurses/term.h" >&5 +echo "configure:13587: 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:13371: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13595: \"$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* @@ -13397,15 +13621,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:13401: checking for ncurses/curses.h" >&5 +echo "configure:13625: 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:13409: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13633: \"$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* @@ -13426,7 +13650,7 @@ fi if test "$ac_cv_header_ncurses_curses_h" = "yes" - then echo "configure: warning: "Your system has the bogus ncurses include bug."" 1>&2 + then echo "configure: warning: Your system has the bogus ncurses include bug." 1>&2 else c_switch_site="$save_c_switch_site" fi fi @@ -13440,12 +13664,12 @@ for lib in curses termlib termcap; do echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:13444: checking for tgetent in -l$lib" >&5 +echo "configure:13668: 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:13684: \"$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 @@ -13487,12 +13711,12 @@ else echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:13491: checking for tgetent in -lcurses" >&5 +echo "configure:13715: 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:13731: \"$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 @@ -13521,12 +13745,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6 -echo "configure:13525: checking for tgetent in -ltermcap" >&5 +echo "configure:13749: 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:13765: \"$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 @@ -13585,15 +13809,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:13589: checking for gpm.h" >&5 +echo "configure:13813: 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:13597: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13821: \"$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* @@ -13616,12 +13840,12 @@ } test -z "$with_gpm" && { echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6 -echo "configure:13620: checking for Gpm_Open in -lgpm" >&5 +echo "configure:13844: 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:13860: \"$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 @@ -13670,7 +13894,7 @@ else for feature in ncurses gpm; do if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then - echo "configure: warning: "--with-${feature} ignored: Not valid without TTY support"" 1>&2 + echo "configure: warning: --with-${feature} ignored: Not valid without TTY support" 1>&2 fi eval "with_${feature}=no" done @@ -13682,20 +13906,20 @@ test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \ != "no no no" && echo "checking for database support" 1>&6 -echo "configure:13686: checking for database support" >&5 +echo "configure:13910: 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:13691: checking for ndbm.h" >&5 +echo "configure:13915: 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:13699: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13923: \"$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* @@ -13725,12 +13949,12 @@ if test "$with_database_gdbm" != "no"; then echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:13729: checking for dbm_open in -lgdbm" >&5 +echo "configure:13953: 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:13969: \"$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 @@ -13769,10 +13993,10 @@ if test "$with_database_dbm" != "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:13773: checking for dbm_open" >&5 +echo "configure:13997: 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:14023: \"$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 @@ -13814,12 +14038,12 @@ echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:13818: checking for dbm_open in -ldbm" >&5 +echo "configure:14042: 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:14058: \"$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 @@ -13871,10 +14095,10 @@ if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 -echo "configure:13875: checking for Berkeley db.h" >&5 +echo "configure:14099: checking for Berkeley db.h" >&5 for header in "db/db.h" "db.h"; do cat > conftest.$ac_ext < @@ -13896,7 +14120,7 @@ ; return 0; } EOF -if { (eval echo configure:13900: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:14124: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* db_h_file="$header"; break else @@ -13912,9 +14136,9 @@ if test "$with_database_berkdb" != "no"; then echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6 -echo "configure:13916: checking for Berkeley DB version" >&5 +echo "configure:14140: checking for Berkeley DB version" >&5 cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 1 @@ -13926,7 +14150,7 @@ egrep "yes" >/dev/null 2>&1; then rm -rf conftest* cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 2 @@ -13953,10 +14177,10 @@ rm -f conftest* echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 -echo "configure:13957: checking for $dbfunc" >&5 +echo "configure:14181: checking for $dbfunc" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14207: \"$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 @@ -13998,12 +14222,12 @@ echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 -echo "configure:14002: checking for $dbfunc in -ldb" >&5 +echo "configure:14226: 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 +if { (eval echo configure:14242: \"$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 @@ -14078,12 +14302,12 @@ if test "$with_socks" = "yes"; then echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:14082: checking for SOCKSinit in -lsocks" >&5 +echo "configure:14306: 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 +if { (eval echo configure:14322: \"$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 @@ -14149,22 +14373,22 @@ if test "$with_modules" != "no"; then echo "checking for module support" 1>&6 -echo "configure:14153: checking for module support" >&5 +echo "configure:14377: 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:14160: checking for dlfcn.h" >&5 +echo "configure:14384: 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:14168: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14392: \"$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* @@ -14181,16 +14405,16 @@ echo "$ac_t""yes" 1>&6 echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6 -echo "configure:14185: checking for dlopen in -lc" >&5 +echo "configure:14409: checking for dlopen in -lc" >&5 cat > conftest.$ac_ext < int main() { dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:14194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=yes else @@ -14199,18 +14423,18 @@ rm -rf conftest* echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:14203: checking for dlopen in -ldl" >&5 +echo "configure:14427: 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:14214: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=yes else @@ -14239,12 +14463,12 @@ else echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:14243: checking for shl_load in -ldld" >&5 +echo "configure:14467: 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 +if { (eval echo configure:14483: \"$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 @@ -14282,12 +14506,12 @@ echo "$ac_t""no" 1>&6 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:14286: checking for dld_init in -ldld" >&5 +echo "configure:14510: 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:14526: \"$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 @@ -14343,7 +14567,7 @@ xealias=$internal_configuration echo "checking how to build dynamic libraries for ${xehost}" 1>&6 -echo "configure:14347: checking how to build dynamic libraries for ${xehost}" >&5 +echo "configure:14571: checking how to build dynamic libraries for ${xehost}" >&5 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. case "$xehost" in *-*-linux-gnu*) ;; @@ -14371,9 +14595,9 @@ XEGCC=yes else echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:14375: checking checking whether we are using GNU C" >&5 +echo "configure:14599: checking checking whether we are using GNU C" >&5 cat > conftest.$ac_ext <&6 -echo "configure:14399: checking how to produce PIC code" >&5 +echo "configure:14623: checking how to produce PIC code" >&5 wl= can_build_shared=yes @@ -14496,18 +14720,18 @@ # 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:14500: checking if PIC flag ${dll_cflags} really works" >&5 +echo "configure:14724: 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 +if { (eval echo configure:14735: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also @@ -14538,7 +14762,7 @@ xldf= xcldf= echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6 -echo "configure:14542: checking if C compiler can produce shared libraries" >&5 +echo "configure:14766: checking if C compiler can produce shared libraries" >&5 if test "$XEGCC" = yes; then xcldf="-shared" xldf="-shared" @@ -14589,14 +14813,14 @@ 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 +if { (eval echo configure:14824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* cc_produces_so=yes else @@ -14621,7 +14845,7 @@ 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:14625: checking for ld used by GCC" >&5 +echo "configure:14849: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -14646,7 +14870,7 @@ esac else echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:14650: checking for GNU ld" >&5 +echo "configure:14874: checking for GNU ld" >&5 fi if test -z "$LTLD"; then @@ -14684,7 +14908,7 @@ # 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:14688: checking if the linker is GNU ld" >&5 +echo "configure:14912: 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 @@ -14712,7 +14936,7 @@ # 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:14716: checking whether the linker supports shared libraries" >&5 +echo "configure:14940: checking whether the linker supports shared libraries" >&5 dll_ld=$CC dll_ldflags=$LDFLAGS ld_shlibs=yes @@ -14923,10 +15147,10 @@ for ac_func in dlerror _dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:14927: checking for $ac_func" >&5 +echo "configure:15151: 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:15177: \"$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 @@ -14981,18 +15205,18 @@ if test "$with_modules" = "yes"; then { echo "Error:" "Required module support cannot be provided." >&2; exit 1; } else - echo "configure: warning: "Module support cannot be provided."" 1>&2 + echo " No module support." fi with_modules=no fi fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:15220: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5 then : else @@ -15335,7 +15559,9 @@ -: ${XEMACS_CC:=$CC} + +test -n "$xemacs_compiler" && XEMACS_CC="$xemacs_compiler" +: ${XEMACS_CC:="$CC"} if test "$with_prefix" = "yes"; then diff --text -u 'xemacs-21.5.1/configure.in' 'xemacs-21.5.2/configure.in' Index: ././configure.in --- ././configure.in Sat May 5 19:49:41 2001 +++ ././configure.in Fri Jun 1 13:40:34 2001 @@ -349,7 +349,6 @@ with_scrollbars='' with_widgets='' with_dialogs='' -with_file_coding='' cpp='' cppflags='' libs='' ldflags='' extra_includes='' dynamic='' @@ -526,6 +525,7 @@ dnl The cache-file option is ignored (for compatibility with other configures) srcdir | \ compiler | \ + xemacs_compiler | \ cflags | \ cpp | \ cppflags | \ @@ -790,7 +790,7 @@ g | gt | gtk ) val=gtk ;; m | ms | msw ) val=msw ;; * ) USAGE_ERROR(["The \`--$optname' option must have one of these values: - \`gtk\', \`lucid', \`motif', \`athena', \`yes', or \`no'."]) ;; + \`gtk', \`lucid', \`motif', \`athena', \`yes', or \`no'."]) ;; esac eval "$opt=\"$val\"" ;; @@ -1769,7 +1769,9 @@ CPP_to_sh(LD_SWITCH_MACHINE, ld_switch_machine) CPP_to_sh(LD_SWITCH_SYSTEM, ld_switch_system) -CPP_to_sh(UNEXEC, unexec, unexec.o) +CPP_to_sh(UNEXEC, unexec) + +CPP_to_sh(SYSTEM_TYPE, system_type) CPP_to_sh(LD_SWITCH_SHARED, ld_switch_shared, -c) @@ -1831,6 +1833,17 @@ rm $tempcname +dnl s&m files shouldn't be required to define anything, or even to exist. +dnl So we default SYSTEM_TYPE to the obvious documented standard, `uname -s`, +dnl appropriately emacsulated. +test -z "$system_type" && \ + AC_DEFINE_UNQUOTED(SYSTEM_TYPE,"`uname -s | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`") + +dnl If the s&m files don't define a system-specific dumper, simply use pdump. +dnl Sometime in the future, we'll remove all definitions of UNEXEC +dnl from all the s&m files. +test -z "$unexec" && pdump=yes + if test "$pdump" = "yes"; then ordinary_link="yes" ld="${ordinary_ld}" @@ -1932,9 +1945,9 @@ *-fno-schedule-insns*) ;; *) AC_MSG_RESULT(yes) - AC_MSG_WARN(Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures) - AC_MSG_WARN(without also using -fno-schedule-insns.) - AC_MSG_ERROR(Aborting due to known problem) + AC_MSG_WARN([Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures]) + AC_MSG_WARN([without also using -fno-schedule-insns.]) + AC_MSG_ERROR([Aborting due to known problem]) ;; esac ;; @@ -1944,9 +1957,9 @@ dnl egcs-2.91.66 (egcs-1.1.2 release) Linux:alpha:egcs-2.91.*) AC_MSG_RESULT(yes) - AC_MSG_WARN(There have been reports of egcs-1.1 not compiling XEmacs correctly on) - AC_MSG_WARN(Alpha Linux. There have also been reports that egcs-1.0.3a is O.K.) - AC_MSG_ERROR(Aborting due to known problem) + AC_MSG_WARN([There have been reports of egcs-1.1 not compiling XEmacs correctly on]) + AC_MSG_WARN([Alpha Linux. There have also been reports that egcs-1.0.3a is O.K.]) + AC_MSG_ERROR([Aborting due to known problem]) ;; *:i*86*:2.7.2*) case "$CFLAGS" in @@ -1957,9 +1970,9 @@ *-fno-strength-reduce*) ;; *) AC_MSG_RESULT(yes) - AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using) - AC_MSG_WARN(-fno-strength-reduce.) - AC_MSG_ERROR(Aborting due to known problem) + AC_MSG_WARN([Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using]) + AC_MSG_WARN([-fno-strength-reduce.]) + AC_MSG_ERROR([Aborting due to known problem]) ;; esac ;; @@ -1968,9 +1981,9 @@ *-fno-caller-saves*) ;; *) AC_MSG_RESULT(yes) - AC_MSG_WARN(Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using) - AC_MSG_WARN(-fno-caller-saves.) - AC_MSG_ERROR(Aborting due to known problem) + AC_MSG_WARN([Don't use -O2 with gcc 2.7.2 under Intel/XXX without also using]) + AC_MSG_WARN([-fno-caller-saves.]) + AC_MSG_ERROR([Aborting due to known problem]) ;; esac ;; @@ -2448,6 +2461,9 @@ [return atanh(1.0) + asinh(1.0) + acosh(1.0); ], AC_DEFINE(HAVE_INVERSE_HYPERBOLIC)) +dnl See if mkstemp is available +AC_CHECK_FUNCS(mkstemp) + dnl Determine type of mail locking from configure args and s&m headers AC_CHECKING(type of mail spool file locking) AC_CHECK_FUNCS(lockf flock) @@ -2548,16 +2564,16 @@ possible_version=`${possible} --version 2> /dev/null` if test "x${possible_version}" != "x"; then GTK_CONFIG="${possible}" + case "${possible_version}" in + 1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;; + 1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;; + 1.2.*) + with_gtk=yes + break + ;; + *) AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);; + esac fi - case "${possible_version}" in - 1.0.*) AC_MSG_WARN([GTK 1.2 is required, please upgrade your version of GTK.]); with_gtk=no;; - 1.3.*) AC_MSG_WARN([GTK 1.3 is not supported right now]); with_gtk=no;; - 1.2.*) - with_gtk=yes - break - ;; - *) AC_MSG_WARN([Found unsupported version of GTK: $possible_version]);; - esac done AC_MSG_RESULT([${GTK_CONFIG}]) fi @@ -2757,7 +2773,7 @@ cd .. rm -fr conftestdir for word in $xmkmf_defines; do - case "$word" in + case "$word" in -D__STDC__*) ;; -D* ) sym=`echo '' $word | sed -e 's:^ *-D::' -e 's:=.*::'` @@ -2778,7 +2794,7 @@ dnl make sure we can find Intrinsic.h AC_CHECK_HEADER(X11/Intrinsic.h, , - [AC_MSG_ERROR("Unable to find X11 header files.")]) + [AC_MSG_ERROR([Unable to find X11 header files.])]) dnl -lXt and -lX11 are required dnl Some broken systems require the magic "-b i486-linuxaout" flag @@ -2786,7 +2802,7 @@ if test "$have_lib_x11" != "yes"; then AC_CHECK_LIB(X11, XGetFontProperty, ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site", - [AC_MSG_ERROR("Unable to find X11 libraries.")], + [AC_MSG_ERROR([Unable to find X11 libraries.])], -b i486-linuxaout) fi libs_x="-lX11" @@ -2797,7 +2813,7 @@ dnl Require -lXt AC_CHECK_LIB(Xt, XtOpenDisplay, XE_PREPEND(-lXt, libs_x), - AC_MSG_ERROR("Unable to find X11 libraries.")) + AC_MSG_ERROR([Unable to find X11 libraries.])) AC_MSG_CHECKING(the version of X11 being used) AC_TRY_RUN([#include @@ -2825,7 +2841,7 @@ #include extern Bool XRegisterIMInstantiateCallback( Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*); -], [], +], [], [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no) AC_DEFINE(XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE)]) @@ -3037,11 +3053,13 @@ dnl Autodetect CDE test -z "$with_cde" && { AC_CHECK_HEADER(Dt/Dt.h, , with_cde=no) } test -z "$with_cde" && { AC_CHECK_LIB(DtSvc, DtDndDragStart, [:], with_cde=no) } -test -z "$with_cde" && with_cde=yes -if test "$with_dragndrop" = no; then - AC_MSG_WARN([No CDE without generic Drag'n'Drop support]) +if test "$with_dragndrop" = "no" ; then + if test "$with_cde" = "yes" ; then + AC_MSG_WARN([--with-cde forced to \`no'; no generic Drag'n'Drop support]) + fi with_cde=no fi +test -z "$with_cde" && with_cde=yes if test "$with_cde" = "yes" ; then AC_DEFINE(HAVE_CDE) XE_PREPEND(-lDtSvc, libs_x) @@ -3057,15 +3075,21 @@ dnl is in use, we now disable it by default -slb 07/10/1998. test "$window_system" != "x11" && with_offix=no if test "$with_xmu" != yes -a "$with_x11" = yes; then - AC_MSG_WARN([No OffiX without real Xmu support]) + if test "$with_offix" = "yes" ; then + AC_MSG_WARN([--with-offix forced to \`no'; no real Xmu support]) + fi with_offix=no fi if test "$with_dragndrop" = no; then - AC_MSG_WARN([No OffiX without generic Drag'n'Drop support]) + if test "$with_offix" = "yes" ; then + AC_MSG_WARN([--with-offix forced to \`no'; no generic Drag'n'Drop support]) + fi with_offix=no fi if test "$with_cde" = yes; then - AC_MSG_WARN([CDE already found, disabling OffiX support]) + if test "$with_offix" = "yes" ; then + AC_MSG_WARN([--with-offix forced to \`no'; CDE already found]) + fi with_offix=no fi test -z "$with_offix" && with_offix=no @@ -3339,10 +3363,10 @@ [ dnl Must not be a 3d library... AC_CHECK_LIB($athena_variant, threeDClassRec, - AC_MSG_WARN("Could not find a non-3d Athena widget library."), + AC_MSG_WARN([Could not find a non-3d Athena widget library.]), athena_lib=$athena_variant) ], - AC_MSG_WARN("Could not find an Athena widget library.")) + AC_MSG_WARN([Could not find an Athena widget library.])) else dnl The real configuration, need 3d library AC_CHECK_LIB($athena_variant, threeDClassRec, athena_lib=$athena_variant, @@ -3351,18 +3375,18 @@ AC_CHECK_LIB(Xaw, threeDClassRec, [ athena_lib=Xaw; - AC_MSG_WARN("Assuming that libXaw is actually $athena_variant."); + AC_MSG_WARN([Assuming that libXaw is actually $athena_variant.]); ], - AC_MSG_WARN("Could not find a 3d Athena widget library that looked like $athena_variant."))) + AC_MSG_WARN([Could not find a 3d Athena widget library that looked like $athena_variant.]))) fi dnl Now we locate the Athena headers that we need. if test "$athena_3d" = "no"; then AC_CHECK_HEADER(X11/Xaw/ThreeD.h, - AC_MSG_WARN("Could not find a non-3d Athena header set."), + AC_MSG_WARN([Could not find a non-3d Athena header set.]), AC_CHECK_HEADER(X11/Xaw/XawInit.h, athena_h_path=X11/Xaw, - AC_MSG_WARN("Could not find a non-3d Athena header set."))) + AC_MSG_WARN([Could not find a non-3d Athena header set.]))) else dnl The three-d Athena headers are so much more slippery. dnl Curse this `Lets replace standard libraries' thing that they did. :/ @@ -3382,7 +3406,7 @@ AC_CHECK_HEADER(X11/Xaw3d/XawInit.h, AC_CHECK_HEADER(X11/Xaw3d/ThreeD.h, [ - AC_MSG_WARN("Assuming that X11/Xaw3d headers are suitable for $athena_variant.") + AC_MSG_WARN([Assuming that X11/Xaw3d headers are suitable for $athena_variant.]) athena_h_path=X11/Xaw3d ],)) fi @@ -3392,7 +3416,7 @@ AC_CHECK_HEADER(Xaw3d/XawInit.h, AC_CHECK_HEADER(Xaw3d/ThreeD.h, [ - AC_MSG_WARN("Assuming that Xaw3d headers are suitable for $athena_variant.") + AC_MSG_WARN([Assuming that Xaw3d headers are suitable for $athena_variant.]) athena_h_path=Xaw3d ],)) fi @@ -3402,10 +3426,10 @@ if test -z "$athena_h_path"; then AC_CHECK_HEADER(X11/Xaw/ThreeD.h, [ - AC_MSG_WARN("Assuming that X11/Xaw headers are suitable for $athena_variant.") + AC_MSG_WARN([Assuming that X11/Xaw headers are suitable for $athena_variant.]) athena_h_path=X11/Xaw ], - AC_MSG_WARN("Could not find a suitable 3d Athena header set.")) + AC_MSG_WARN([Could not find a suitable 3d Athena header set.])) fi fi @@ -3571,7 +3595,6 @@ dnl ---------------------- test -z "$with_mule" && with_mule=no -test -z "$with_file_coding" && with_file_coding=no dnl if test "$with_mule" = "yes" && test ! -d "$srcdir/lisp/mule"; then dnl echo "Attempt to Build with Mule without Mule/Lisp" @@ -3580,11 +3603,19 @@ dnl exit 1 dnl fi +if test "$with_file_coding" = "no" && test "$with_mule" = "yes"; then + AC_MSG_WARN([--with-file-coding forced to \`yes': Required for Mule support]) + with_file_coding=yes +fi + if test "$with_file_coding" = "yes" && test "$with_mule" = "no"; then AC_DEFINE(FILE_CODING) XE_ADD_OBJS(file-coding.o) fi +dnl will change to yes as soon as my mule ws is merged in. +test -z "$with_file_coding" && with_file_coding=no + if test "$with_mule" = "yes" ; then AC_CHECKING(for Mule-related features) AC_DEFINE(MULE) @@ -3692,7 +3723,7 @@ else dnl "$with_mule" = "no" for feature in xim canna wnn; do if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then - AC_MSG_WARN("--with-${feature} ignored: Not valid without Mule support") + AC_MSG_WARN([--with-${feature} ignored: Not valid without Mule support]) fi eval "with_${feature}=no" done @@ -3710,7 +3741,7 @@ AC_CHECK_FUNCS(cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strerror tzset ulimit usleep waitpid vsnprintf fsync ftruncate umask) dnl ---------------------------------------------------------------- -dnl Check for PTY support functions. +dnl Check for Unixoid pty/process support. dnl ---------------------------------------------------------------- dnl There is no "standard" pty allocation method. Every system is different. @@ -3728,10 +3759,20 @@ AC_CHECK_LIB(util, openpty, have_openpty=yes need_libutil=yes)]) if test "$have_openpty" = "yes"; then AC_DEFINE(HAVE_OPENPTY) - AC_CHECK_HEADERS(pty.h libutil.h util.h, break) + AC_CHECK_HEADERS(libutil.h util.h, break) test "$need_libutil" = "yes" && XE_APPEND(-lutil, libs_system) fi +dnl Check for system-specific pty header files +dnl Often the TIOCSIG* symbols are hiding there. +case "$opsys" in + dnl HPUX pty.h #defines TRUE and FALSE, so just use ptyio.h there. + hpux*) AC_CHECK_HEADERS(sys/ptyio.h) ;; + *) AC_CHECK_HEADERS(pty.h) + test "$ac_cv_header_pty_h" = "no" && AC_CHECK_HEADERS(sys/pty.h) + ;; +esac + dnl Check for STREAM support functions. dnl Confusingly, "str" means both "string" and "SysV Streams". AC_CHECK_HEADERS(stropts.h) @@ -3917,7 +3958,7 @@ test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP) dnl By default we switch off rel-alloc on cygwin as it generally causes us grief -case "$opsys" in cygwin*) +case "$opsys" in cygwin*) test "$rel_alloc" = "default" && rel_alloc=no ;; esac dnl rel_alloc requires either GNU malloc or system malloc with mmap @@ -4040,7 +4081,16 @@ esac fi - dnl Check for Linux/BSD native sound + dnl Win32 Native uses native sound + if test -z "$sound_found"; then + if test "$with_msw" = "yes"; then + sound_found=yes + native_sound_lib= + XE_ADD_OBJS(ntplay.o) + fi + fi + + dnl Check for Linux/BSD native sound (also on recent Cygwins) if test -z "$sound_found"; then for dir in "machine" "sys" "linux"; do AC_CHECK_HEADER(${dir}/soundcard.h, @@ -4052,14 +4102,6 @@ done fi - dnl Win32 Native uses native sound - if test -z "$sound_found"; then - if test "$with_msw" = "yes"; then - sound_found=yes - native_sound_lib= - fi - fi - test "$sound_found" = "yes" && with_native_sound=yes fi @@ -4143,7 +4185,7 @@ c_switch_site="$c_switch_site -I/usr/include/ncurses" AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h) if test "$ac_cv_header_ncurses_curses_h" = "yes" - then AC_MSG_WARN("Your system has the bogus ncurses include bug.") + then AC_MSG_WARN([Your system has the bogus ncurses include bug.]) else c_switch_site="$save_c_switch_site" fi fi @@ -4162,7 +4204,7 @@ XE_ADD_OBJS(tparam.o) dnl The HP-UX curses library seems to have a badly broken version of select(2) dnl that makes "poll: interrupted system call" messages to appear and - dnl Emacs suprocesses to hang (e.g. TeX compilation w/ AUCTeX) */ + dnl Emacs subprocesses to hang (e.g. TeX compilation w/ AUCTeX) */ case "$opsys" in *-hp-hpux* ) libs_termcap="-ltermcap" ;; esac if test -n "$libs_termcap"; then XE_PREPEND($libs_termcap, LIBS) @@ -4188,7 +4230,7 @@ else dnl "$with_tty" = "no" for feature in ncurses gpm; do if eval "test -n \"\$with_${feature}\" -a \"\$with_${feature}\" != no" ; then - AC_MSG_WARN("--with-${feature} ignored: Not valid without TTY support") + AC_MSG_WARN([--with-${feature} ignored: Not valid without TTY support]) fi eval "with_${feature}=no" done @@ -4358,7 +4400,7 @@ if test "$with_modules" = "yes"; then XE_DIE("Required module support cannot be provided.") else - AC_MSG_WARN("Module support cannot be provided.") + echo " No module support." fi with_modules=no fi @@ -4669,9 +4711,18 @@ AC_SUBST(RANLIB) AC_SUBST(dynodump_arch) -dnl Preliminary support for using a different compiler for xemacs itself. -dnl Useful for building XEmacs with a C++ or 64-bit compiler. -: ${XEMACS_CC:=$CC} +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 diff --text -u 'xemacs-21.5.1/configure.usage' 'xemacs-21.5.2/configure.usage' Index: ././configure.usage --- ././configure.usage Fri Apr 13 03:20:41 2001 +++ ././configure.usage Thu Jun 7 15:37:25 2001 @@ -29,6 +29,7 @@ Compilation options: --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) --cpp=PROG C preprocessor to use (e.g. /usr/ccs/lib/cpp or cc -E) @@ -168,7 +169,7 @@ --with-dnet (*) Compile with support for DECnet. --with-modules Compile in experimental support for dynamically loaded libraries (Dynamic Shared Objects). ---with-netinstall Compile in support for installation over the internet. +--with-netinstall Compile in support for installation over the internet. --with-site-lisp=yes Allow for a site-lisp directory in the XEmacs hierarchy searched before the installation packages. --with-site-modules=no Disable site-modules directory in the XEmacs hierarchy, @@ -278,6 +279,7 @@ variable configure flag ----------- -------------- CC --compiler +XEMACS_CC --xemacs-compiler CPP --cpp CFLAGS --cflags CPPFLAGS --cppflags diff --text -u 'xemacs-21.5.1/etc/PACKAGES' 'xemacs-21.5.2/etc/PACKAGES' Index: ././etc/PACKAGES --- ././etc/PACKAGES Mon Jan 22 05:14:58 2001 +++ ././etc/PACKAGES Tue May 15 15:48:56 2001 @@ -7,123 +7,145 @@ For general XEmacs navigation tips: Press C-h t -Description of available packages by category -============================================= -This data is up-to-date as of January 17, 2001. - -** Library Packages (libs) -========================== -These packages are required to build and support most of the rest of -XEmacs. By design, xemacs-base is a `regular' package. Use restraint -when adding new files there as it is required by almost everything. +Description of available packages +================================= +Up-to-date as of May 15, 2001. + +** Normal Packages +================== +A very broad collection of elisp packages. *** Sun Support for Sparcworks. +*** ada +Ada language support. + *** apel A Portable Emacs Library. Used by XEmacs MIME support. -*** dired -The DIRectory EDitor is for manipulating, and running commands on -files in a directory. +*** auctex +Basic TeX/LaTeX support. -*** edebug -A Lisp debugger. +*** bbdb +The Big Brother Data Base -*** efs -Treat files on remote systems the same as local files. +*** build +Build XEmacs using custom widgets. -*** elib -Portable Emacs Lisp utilities library. +*** c-support +Basic single-file add-ons for editing C code. -*** fsf-compat -FSF Emacs compatibility files. +*** calc +Emacs calculator. -*** mail-lib -Fundamental lisp files for providing email support. +*** calendar +Calendar and diary support. -*** sounds-au -XEmacs Sun sound files. +*** cc-mode +C, C++ and Java language support. -*** sounds-wav -XEmacs Microsoft sound files. +*** cookie +Spook and Yow (Zippy quotes). -*** tooltalk -Support for building with Tooltalk. +*** crisp +Crisp/Brief emulation. -*** xemacs-base -Fundamental XEmacs support. Install this unless you wish a totally -naked XEmacs. +*** debug +GUD, gdb, dbx debugging support. -*** xemacs-devel -XEmacs Lisp developer support. This package contains utilities for -supporting Lisp development. It is a single-file package so it may be -tailored. +*** dired +The DIRectory EDitor is for manipulating, and running commands on +files in a directory. -** Communications Packages (comm) -================================= -These packages provide support for various communications, primarily -email and usenet. +*** edebug +A Lisp debugger. -*** bbdb -The Big Brother Data Base +*** ediff +Interface over patch. + +*** edit-utils +Single file lisp packages for various XEmacs goodies. Load this and +weed out the junk you don't want. + +*** edt +DEC EDIT/EDT emulation. + +*** efs +Treat files on remote systems the same as local files. *** eicq ICQ Client developed and tested on Linux x86; only supported on that platform +*** eieio +Enhanced Implementation of Emacs Interpreted Objects + +*** elib +Portable Emacs Lisp utilities library. + +*** emerge +Another interface over patch. + +*** eshell +Command shell implemented entirely in Emacs Lisp. + +*** eterm +Terminal emulator. + *** eudc Emacs Unified Directory Client (LDAP, PH). *** footnote Footnoting in mail message editing modes. +*** forms +Forms editing support (obsolete, use the built-in Widget instead). + +*** frame-icon +Provide a WM icon based on major mode. + +*** fsf-compat +FSF Emacs compatibility files. + +*** games +Tetris, Sokoban, and Snake. + *** gnats XEmacs bug reports. *** gnus The Gnus Newsreader and Mailreader. -*** mailcrypt -Support for messaging encryption with PGP. - -*** mew -Messaging in an Emacs World. - -*** mh-e -Front end support for MH. - -*** net-utils -Miscellaneous Networking Utilities. This is a single-file package and -files may be deleted at will. +*** hm--html-menus +HTML editing. -*** rmail -An obsolete Emacs mailer. If you do not already use it don't start. +*** idlwave +Editing and Shell mode for the Interactive Data Language. -*** supercite -An Emacs citation tool. Useful with all Emacs Mailers and Newsreaders. +*** igrep +Enhanced front-end for Grep. -*** tm -Emacs MIME support. Not needed for Gnus >= 5.8.0 +*** ilisp +Front-end for Inferior Lisp. -*** vm -An Emacs mailer. +*** ispell +Spell-checking with ispell. -*** w3 -A Web browser. +*** jde +Java language and development support. -*** zenirc -ZENIRC IRC Client. +*** mail-lib +Fundamental lisp files for providing email support. -** Games and Amusements (games) -=============================== -All work and no play... +*** mailcrypt +Support for messaging encryption with PGP. -*** cookie -Spook and Yow (Zippy quotes). +*** mew +Messaging in an Emacs World. -*** games -Tetris, Sokoban, and Snake. +*** mh-e +Front end support for MH. *** mine Minehunt. @@ -131,194 +153,156 @@ *** misc-games Other amusements and diversions. -** Mule Support (mule) -====================== -MULti-lingual Enhancement. Support for world scripts such as -Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc. -To use these packages your XEmacs must be compiled with Mule -support. - -*** edict -Lisp Interface to EDICT, Kanji Dictionary. - -*** egg-its -Wnn (4.2 and 6) support. SJ3 support. Must be installed prior to -XEmacs build. - -*** leim -Quail. Used for everything other than English and Japanese. - -*** locale -Used for localized menubars (French and Japanese) and localized splash -screens (Japanese). - -*** lookup -Dictionary support - -*** mule-base -Basic Mule support. Must be installed prior to building with Mule. +*** net-utils +Miscellaneous Networking Utilities. This is a single-file package and +files may be deleted at will. -*** skk -Another Japanese Language Input Method. Can be used without a -separate process running as a dictionary server. +*** os-utils +Miscellaneous single-file O/S utilities, for printing, archiving, +compression, remote shells, etc. -** Productivity Packages (oa) -============================= -Things to make life a little easier. +*** pc +PC style interface emulation. -*** calc -Emacs calculator. +*** pcl-cvs +CVS frontend. -*** calendar -Calendar and diary support. +*** pcomplete +Provides programmatic completion. -*** edit-utils -Single file lisp packages for various XEmacs goodies. Load this and -weed out the junk you don't want. +*** prog-modes +Miscellaneous single-file lisp files for various programming languages. -*** forms -Forms editing support (obsolete, use the built-in Widget instead). +*** ps-print-nomule +Old, but no-Mule safe ps-print. -*** frame-icon -Provide a WM icon based on major mode. +*** psgml +Validated HTML/SGML editing. -*** hm--html-menus -HTML editing. +*** reftex +Emacs support for LaTeX cross-references, citations. -*** ispell -Spell-checking with ispell. +*** rmail +An obsolete Emacs mailer. If you do not already use it don't start. -*** pc -PC style interface emulation. +*** scheme +Front-end support for Inferior Scheme. -*** psgml -Validated HTML/SGML editing. +*** semantic +Semantic bovinator. *** sgml SGML/Linuxdoc-SGML editing. +*** sh-script +Support for editing shell scripts. + *** slider User interface tool. +*** sounds-au +XEmacs Sun sound files. + +*** sounds-wav +XEmacs Microsoft sound files. + *** speedbar Provides a separate frame with convenient references. *** strokes Mouse enhancement utility. +*** supercite +An Emacs citation tool. Useful with all Emacs Mailers and Newsreaders. + +*** texinfo +XEmacs TeXinfo support. + *** text-modes Various single file lisp packages for editing text files. +*** textools +Single-file TeX support. + *** time Display time & date on the modeline. -** Operating System Utilities (os) -================================== -Tools for working with the operating system. - -*** eshell -Command shell implemented entirely in Emacs Lisp. - -*** eterm -Terminal emulator. +*** tm +Emacs MIME support. Not needed for Gnus >= 5.8.0 -*** igrep -Enhanced front-end for Grep. +*** tooltalk +Support for building with Tooltalk. -*** ilisp -Front-end for Inferior Lisp. +*** tpu +DEC EDIT/TPU support. -*** os-utils -Miscellaneous single-file O/S utilities, for printing, archiving, -compression, remote shells, etc. +*** vc +Version Control for Free systems. -*** pcomplete -Provides programmatic completion. +*** vc-cc +Version Control for ClearCase. This package will shortly be +replaced with clearcase.el -*** ps-print-nomule -Old, but no-Mule safe ps-print. +*** vhdl +Support for VHDL. *** view-process A Unix process browsing tool. -** Program Editing Support (prog) -================================= -XEmacs supports a multitude of programming languages. These -packages will help your coding. - -*** ada -Ada language support. - -*** c-support -Basic single-file add-ons for editing C code. - -*** cc-mode -C, C++ and Java language support. - -*** debug -GUD, gdb, dbx debugging support. - -*** ediff -Interface over patch. - -*** emerge -Another interface over patch. - -*** idlwave -Editing and Shell mode for the Interactive Data Language. - -*** jde -Java language and development support. +*** viper +VI emulation support. -*** pcl-cvs -CVS frontend. -*** prog-modes -Miscellaneous single-file lisp files for various programming languages. - -*** scheme -Front-end support for Inferior Scheme. +*** vm +An Emacs mailer. -*** semantic -Semantic bovinator. +*** w3 +A Web browser. -*** sh-script -Support for editing shell scripts. +*** xemacs-base +Fundamental XEmacs support. Install this unless you wish a totally +naked XEmacs. -*** vc -Version Control for Free systems. +*** xemacs-devel +XEmacs Lisp developer support. This package contains utilities for +supporting Lisp development. It is a single-file package so it may be +tailored. -*** vc-cc -Version Control for ClearCase. This package will shortly be -replaced with clearcase.el +*** xslt-process +A minor mode for (X)Emacs which allows running an XSLT processor on a +buffer. -*** vhdl -Support for VHDL. +*** zenirc +ZENIRC IRC Client. -** Word Processing (wp) -======================= -Working with text. +** Mule Support (mule) +====================== +MULti-lingual Enhancement. Support for world scripts such as +Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc. +To use these packages your XEmacs must be compiled with Mule +support. -*** auctex -Basic TeX/LaTeX support. +*** edict +Lisp Interface to EDICT, Kanji Dictionary. -*** crisp -Crisp/Brief emulation. +*** egg-its +Wnn (4.2 and 6) support. SJ3 support. Must be installed prior to +XEmacs build. -*** edt -DEC EDIT/EDT emulation. +*** leim +Quail. Used for everything other than English and Japanese. -*** reftex -Emacs support for LaTeX cross-references, citations. +*** locale +Used for localized menubars (French and Japanese) and localized splash +screens (Japanese). -*** texinfo -XEmacs TeXinfo support. +*** lookup +Dictionary support -*** textools -Single-file TeX support. +*** mule-base +Basic Mule support. Must be installed prior to building with Mule. -*** tpu -DEC EDIT/TPU support. +*** skk +Another Japanese Language Input Method. Can be used without a +separate process running as a dictionary server. -*** viper -VI emulation support. diff --text -u 'xemacs-21.5.1/etc/TUTORIAL' 'xemacs-21.5.2/etc/TUTORIAL' Index: ././etc/TUTORIAL --- ././etc/TUTORIAL Sun Nov 9 16:06:22 1997 +++ ././etc/TUTORIAL Thu Jul 19 06:25:38 2001 @@ -1063,7 +1063,7 @@ C-h a Hyper Apropos. Type in a keyword and Emacs will list all the functions and variables whose names contain - that keyword. The commands that can be invoked with + that keyword. For commands that can be invoked with Meta-x, an asterisk will be displayed to the left. >> Type C-h a newline. diff --text -u 'xemacs-21.5.1/etc/TUTORIAL.de' 'xemacs-21.5.2/etc/TUTORIAL.de' Index: ././etc/TUTORIAL.de --- ././etc/TUTORIAL.de Fri Apr 13 03:20:48 2001 +++ ././etc/TUTORIAL.de Thu Jul 19 06:25:38 2001 @@ -320,11 +320,11 @@ Bildschirmrand." C-u 0 C-l bedeutet also "Bau den Bildschirm, mit der aktuellen Zeile ganz oben, neu auf.") ->> Tippe CONTROL-x 2 +>> Tippe Control-x 2 Beachte wie das Fenster schrumpft, während ein neues mit Teilen derselben Datei erscheint. ->> Tippe C-x 1 und sehe das neue Fenster verschwinden. +>> Tippe C-x 1 und sieh das neue Fenster verschwinden. * EINFÜGEN UND LÖSCHEN @@ -786,7 +786,7 @@ * MODUSZEILE ------------ -Die Zeile über der echo area wird "mode line" genannt. Die Moduszeile +Die Zeile über der echo area wird "modeline" genannt. Die Moduszeile zeigt etwa folgendes: --**-XEmacs: TUTORIAL.de (Fundamental)--L791--67%---------------- @@ -845,7 +845,7 @@ des Emacs-Fensters zu bekommen. >> Tippe C-h m um den Unterschied zwischen Text- und Fundamental-Modus zu sehen. ->> Tippe C-x 1 um die Dokumentation wieder verschwinden zu lassen. +>> Tippe q um die Dokumentation wieder verschwinden zu lassen. Hauptmodi heißen so, weil es auch Untermodi gibt. Untermodi sind keine Alternativen zu Hauptmodi, sondern bewirken kleine Veränderungen @@ -912,10 +912,11 @@ >> Tippe zum Abbrechen der Suche. Hast Du gesehen was passiert? Emacs, in der inkrementellen Suche, -versucht zu dem String zu springen, den Du bisher getippt hast. Um -zum nächsten Auftreten von "Textzeiger" zu gelangen, tippst Du einfach -wieder C-s. Gibt es kein weiteres Vorkommen, so piepst Emacs und -zeigt die Suche als fehlgeschlagen an. C-g bricht die Suche auch ab. +versucht zu dem String zu springen, den Du bisher getippt hast und +hebt ihn für Dich hervor. Um zum nächsten Auftreten von "Textzeiger" +zu gelangen, tippst Du einfach wieder C-s. Gibt es kein weiteres +Vorkommen, so piepst Emacs und zeigt die Suche als fehlgeschlagen +an. C-g bricht die Suche auch ab. ACHTUNG: Auf manchen Systemen wird C-s den Bildschirm anhalten und Du wirst keine weitere Ausgabe von Emacs sehen. Dies bedeutet, daß auf @@ -1081,9 +1082,7 @@ Dies zeigt sowohl die Dokumentation der Funktion, als auch ihren Namen, in einem eigenen Emacs-Fenster. Wenn Du mit dem Lesen fertig -bist, tippe C-x 1 um den Hilfetext loszuwerden. Du mußt dies nicht -gleich tun. Du kannst etwas bearbeiten, das sich auf den Hilfetext -bezieht und dann C-x 1 tippen. +bist, tippe q um den Hilfetext loszuwerden. Hier sind einige andere nützliche C-h Möglichkeiten: @@ -1094,22 +1093,17 @@ Dies gibt Dir all die Information die Emacs zu der Funktion hat, welche C-p implementiert. - C-h a Befehls-Apropos. Tippe ein Schlüsselwort und Emacs listet - alle Befehle die es enthalten. - Diese Befehle können alle mit M-x aufgerufen werden. - Für einige Befehle listet das Befehls-Apropos eine - Buchstaben-Sequenz, die den Befehl ausführt. - ->> Tippe C-h a file. - -Dies zeigt in einem anderen Fenster eine Liste aller M-x Befehle die -"file" in ihrem Namen haben. Du wirst Buchstaben-Sequenzen wie C-x -C-f mit dem entsprechenden Befehl, wie etwa find-file, aufgelistet -sehen. - ->> Tippe C-M-v um das Hilfe Fenster zu rollen. Mache dies ein paar mal. - ->> Tippe C-x 1 um das Fenster loszuwerden. + C-h a Hyper-Apropos. Tippe ein Schlüsselwort und Emacs listet + alle Funktionen und Variablen die es enthalten. + Für Befehle die mit M-x aufgerufen werden können wird + links ein Stern angezeigt. + +>> Tippe C-h a newline. + +Dies zeigt eine Liste aller Funktionen und Variablen die "newline" in +ihrem Namen haben. Drücke oder klicke die mittlere Maustaste +um mehr über eine Funktion oder Variable zu erfahren. Tippe q um +Hyper-Apropos zu verlassen. * ZUM SCHLUß diff --text -u /dev/null 'xemacs-21.5.2/etc/VEGETABLES' Index: ././etc/VEGETABLES --- ././etc/VEGETABLES Thu Jan 1 09:00:00 1970 +++ ././etc/VEGETABLES Thu Jul 26 15:20:45 2001 @@ -0,0 +1,65 @@ +alfalfa +anise +artichoke +asparagus +bamboo +beets +bok choi +broccoflower +broccoli +brussels sprouts +burdock +cabbage +carrot +cauliflower +cassava +celery +celeriac +chayote +chestnut +chives +cilantro +corn +cucumber +daikon +dandelion +eggplant +endive +fiddleheads +fuki +garbanzo +garlic +ginger +habanero +horseradish +kale +kohlarbi +leeks +lettuce +lima bean +marjoram +mushroom +mustard +okra +onion +parsley +peanut +pimento +potato +pumpkin +radish +rutabaga +renkon +satoimo +shallots +sorrel +spinach +squash +swisschard +taro +tomato +turnip +watercress +yam +yucca +zucchini diff --text -u 'xemacs-21.5.1/etc/sample.init.el' 'xemacs-21.5.2/etc/sample.init.el' Index: ././etc/sample.init.el --- ././etc/sample.init.el Mon Apr 30 23:05:52 2001 +++ ././etc/sample.init.el Wed May 23 18:59:33 2001 @@ -226,6 +226,14 @@ ; ;; ; )) +(defun Init-safe-require (feat) +"Try to REQUIRE the specified feature. Errors occurring are silenced. +\(Perhaps in the future there will be a way to get at the error.) +Returns t if the feature was successfully required." + (condition-case nil + (progn (require feat) t) + (error nil))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Key Definitions ;; @@ -615,14 +623,11 @@ ;; Make sure we get Windows-like shifted-motion key selection behavior ;; on recent XEmacs versions. -(if (boundp 'shifted-motion-keys-select-region) - (setq shifted-motion-keys-select-region t) - ;; otherwise, try the pc-select package -- - (condition-case nil - (progn - (require 'pc-select) - (pc-select-mode 1)) - (error nil))) +(cond ((boundp 'shifted-motion-keys-select-region) + (setq shifted-motion-keys-select-region t)) + ;; otherwise, try the pc-select package -- + ((Init-safe-require 'pc-select) + (pc-select-mode 1))) ;; The following commented-out code rearranges the keymap in an ;; unconventional but extremely useful way for programmers. Parens @@ -929,11 +934,8 @@ ;;; rather than append -- standard behavior under all window systems ;;; nowadays. -(pending-delete-mode 1) - -;;; enable region selection with shift+arrows (on by default in 21.5 -;;; and up) -(setq shifted-motion-keys-select-region t) +(if (fboundp 'pending-delete-mode) + (pending-delete-mode 1)) ;;; NOTE: In this context, `windows-nt' actually refers to all MS ;;; Windows operating systems! @@ -972,7 +974,7 @@ (setq menu-accelerator-enabled 'menu-force) ;; Make Cygwin `make' work inside a shell buffer. - (setenv "MAKE_MODE" "UNIX")) + (if (boundp 'setenv) (setenv "MAKE_MODE" "UNIX"))) ;; This shows how to set up the XEmacs side of tags. (To create the ;; TAGS table, use the `etags' program found in the XEmacs bin @@ -1023,16 +1025,20 @@ ;; has a NetAudio or ESD server, or on the console of a Linux, Sparc, ;; HP, or SGI machine. Otherwise, you just get the standard beep.) -(cond ((or (and (getenv "DISPLAY") - (string-match ":0" (getenv "DISPLAY"))) - (and (eq (console-type) 'mswindows) - (device-sound-enabled-p))) - (load-default-sounds) - ;; On Windows, at least, the sound "quiet-beep", which is normally - ;; given the symbolic name `quiet' and is used for Quit and such, - ;; is just totally disgusting. So make this name correspond to a - ;; more innocuous sound. - (load-sound-file "drum-beep" 'quiet 80)) +(cond ((and (fboundp 'load-default-sounds) + (or (and (getenv "DISPLAY") + (string-match ":0" (getenv "DISPLAY"))) + (and (eq (console-type) 'mswindows) + (device-sound-enabled-p)))) + (condition-case nil + (progn + (load-default-sounds) + ;; On Windows, at least, the sound "quiet-beep", which is normally + ;; given the symbolic name `quiet' and is used for Quit and such, + ;; is just totally disgusting. So make this name correspond to a + ;; more innocuous sound. + (load-sound-file "drum-beep" 'quiet 80)) + (error nil))) (t (setq bell-volume 40) (setq sound-alist @@ -1182,49 +1188,15 @@ ;;; When this is loaded, the pathname syntax /user@host:/remote/path ;;; refers to files accessible through ftp. ;;; -(require 'dired) -;; compatible ange-ftp/efs initialization derived from code -;; from John Turner -;; -;; The environment variable EMAIL_ADDRESS is used as the password -;; for access to anonymous ftp sites, if it is set. If not, one is -;; constructed using the environment variables USER and DOMAINNAME -;; (e.g. turner@lanl.gov), if set. - -(condition-case nil - (progn - (require 'efs-auto) - (if (getenv "USER") - (setq efs-default-user (getenv "USER"))) - (if (getenv "EMAIL_ADDRESS") - (setq efs-generate-anonymous-password (getenv "EMAIL_ADDRESS")) - (if (and (getenv "USER") - (getenv "DOMAINNAME")) - (setq efs-generate-anonymous-password - (concat (getenv "USER")"@"(getenv "DOMAINNAME"))))) - (setq efs-auto-save 1)) - (error - (require 'ange-ftp) - (if (getenv "USER") - (setq ange-ftp-default-user (getenv "USER"))) - (if (getenv "EMAIL_ADDRESS") - (setq ange-ftp-generate-anonymous-password (getenv "EMAIL_ADDRESS")) - (if (and (getenv "USER") - (getenv "DOMAINNAME")) - (setq ange-ftp-generate-anonymous-password - (concat (getenv "USER")"@"(getenv "DOMAINNAME"))))) - (setq ange-ftp-auto-save 1) - )) +(Init-safe-require 'dired) +(or (Init-safe-require 'efs-auto) (Init-safe-require 'ange-ftp)) ;;; ******************** ;;; Load the default-dir.el package which installs fancy handling of ;;; the initial contents in the minibuffer when reading file names. - -;(condition-case nil -; (require 'default-dir) -; (error nil)) - +;; #### but it seems to cause some breakage. +;(Init-safe-require 'default-dir)) ;;; ******************** ;;; Put all of your autosave files in one place, instead of scattering @@ -1235,9 +1207,9 @@ ;;; is fast fast fast!) ;;; ;;; Unfortunately, the code that implements this (auto-save.el) is -;;; broken on Windows in 21.4 and earlier. +;;; broken on Windows prior to 21.4. (unless (and (eq system-type 'windows-nt) - (not (emacs-version>= 21 5))) + (not (emacs-version>= 21 4))) (setq auto-save-directory (expand-file-name "~/.autosave/") auto-save-directory-fallback auto-save-directory auto-save-hash-p nil @@ -1247,9 +1219,6 @@ ;; for better interactive response. auto-save-interval 2000 ) - ;; We load this afterwards because it checks to make sure the - ;; auto-save-directory exists (creating it if not) when it's loaded. - (require 'auto-save) ) @@ -1273,7 +1242,7 @@ ;;; because there are no other commands whose first three words begin with ;;; the letters `b', `c', and `a' respectively. ;;; -(load-library "completer") +(Init-safe-require 'completer) ;;; ******************** @@ -1287,7 +1256,7 @@ ; tell it not to assume that "binary" files ; are encrypted and require a password. ) -(require 'crypt) +(Init-safe-require 'crypt) ;;; ******************** @@ -1295,9 +1264,11 @@ ;;; makes filling (e.g. using M-q) much much smarter about paragraphs ;;; that are indented and/or are set off with semicolons, dashes, etc. -(require 'filladapt) +(Init-safe-require 'filladapt) (setq-default filladapt-mode t) -(add-hook 'c-mode-hook 'turn-off-filladapt-mode) +(when (fboundp 'turn-off-filladapt-mode) + (add-hook 'c-mode-hook 'turn-off-filladapt-mode) + (add-hook 'outline-mode-hook 'turn-off-filladapt-mode)) ;;; ******************** @@ -1324,7 +1295,7 @@ ; (setq font-lock-use-default-fonts nil) ; (setq font-lock-use-default-colors nil) - (require 'font-lock) + (Init-safe-require 'font-lock) ; ;; Mess around with the faces a bit. Note that you have ; ;; to change the font-lock-use-default-* variables *before* @@ -1360,10 +1331,12 @@ ;;; accurate as using full font-lock or fast-lock, but it's *much* ;;; faster. No more annoying pauses when you load files. -(add-hook 'font-lock-mode-hook 'turn-on-lazy-lock) +(if (fboundp 'turn-on-lazy-lock) + (add-hook 'font-lock-mode-hook 'turn-on-lazy-lock)) + ;; I personally don't like "stealth mode" (where lazy-lock starts ;; fontifying in the background if you're idle for 30 seconds) -;; because it takes too long to wake up again on my piddly Sparc 1+. +;; because it takes too long to wake up again. (setq lazy-lock-stealth-time nil) @@ -1377,8 +1350,7 @@ ;;; Send bug reports, enhancements etc to: ;;; David Hughes ;;; -(cond (running-xemacs - (require 'func-menu) +(cond ((and running-xemacs (Init-safe-require 'func-menu)) (global-set-key '(shift f12) 'function-menu) (add-hook 'find-file-hooks 'fume-add-menubar-entry) (global-set-key "\C-cl" 'fume-list-functions) @@ -1429,16 +1401,16 @@ ;;; resize-minibuffer-mode makes the minibuffer automatically ;;; resize as necessary when it's too big to hold its contents. -(autoload 'resize-minibuffer-mode "rsz-minibuf" nil t) -(resize-minibuffer-mode) -(setq resize-minibuffer-window-exactly nil) +(when (fboundp 'resize-minibuffer-mode) + (resize-minibuffer-mode) + (setq resize-minibuffer-window-exactly nil)) ;;; ******************** ;;; scroll-in-place is a package that keeps the cursor on the same line (and in the same column) when scrolling by a page using PgUp/PgDn. -(require 'scroll-in-place) -(turn-on-scroll-in-place) +(if (Init-safe-require 'scroll-in-place) + (turn-on-scroll-in-place)) ;;; ******************** diff --text -u 'xemacs-21.5.1/lib-src/ChangeLog' 'xemacs-21.5.2/lib-src/ChangeLog' Index: ././lib-src/ChangeLog --- ././lib-src/ChangeLog Wed May 9 19:53:53 2001 +++ ././lib-src/ChangeLog Sat Jul 28 16:48:22 2001 @@ -1,3 +1,59 @@ +2001-07-28 Stephen J. Turnbull + + * XEmacs 21.5.2 "artichoke" is released. + +2001-06-10 Ben Wing + + * cvtmail.c: + * fakemail.c: + * gnuserv.c: + * gnuserv.c (handle_ipc_request): + * gnuserv.h: + * gnuslib.c: + * make-msgfile.c: + * make-path.c: + * pop.c: + * pop.h: + * profile.c: + * tcp.c: + Rename 'GNU Emacs' to XEmacs in the copyright. + Fix comments in similar ways. + + * digest-doc.c (main): + * sorted-doc.c (main): + Fix program and author name to reflect XEmacs. + +2001-05-06 Karl M. Hegbloom + + * movemail.c (lock_dot): Use mkstemp if available + +2001-05-23 Ben Wing + + * pop.c (socket_connection): + Remove BROKEN_CYGWIN. + +2001-05-17 Stephen J. Turnbull + + * config.values.sh: lisp/utils?/config.el -> lisp/config.el. + +2001-05-12 Ben Wing + + * etags.c: + * etags.c (print_help): + * etags.c (sym_type): + * etags.c (TOTAL_KEYWORDS): + * etags.c (hash): + * etags.c (in_word_set): + * etags.c (consider_token): + * etags.c (C_entries): + * etags.c (add_regex): + new version from Francesco. + +2001-05-09 Ben Wing + + * etags.c (add_regex): + temporary fix to avoid crashes with new regex code. + 2001-05-09 Martin Buchholz * XEmacs 21.5.1 "anise" is released. diff --text -u 'xemacs-21.5.1/lib-src/config.values.in' 'xemacs-21.5.2/lib-src/config.values.in' Index: ././lib-src/config.values.in --- ././lib-src/config.values.in Fri Apr 13 03:20:59 2001 +++ ././lib-src/config.values.in Tue May 22 15:03:58 2001 @@ -2,14 +2,14 @@ ;;; This file was automatically generated, by the config.values.sh script, ;;; from configure, which was itself automatically generated from configure.in. ;;; -;;; See lisp/util/config.el for details on how this file is used. +;;; See lisp/config.el for details on how this file is used. ;;; ;;; You are trapped in a twisty maze of strange-looking files, all autogenerated... ;;; configure is created, from configure.in, by autoconf ;;; config.values.in is created, from configure, by config.values.sh ;;; config.values is created, from config.values.in, by configure -;;; config.values is read by lisp/utils/config.el, +;;; config.values is read by lisp/config.el, ;;; to create the (Lisp object) config-value-hash-table ;;; Variables defined in configure by AC_SUBST follow: diff --text -u 'xemacs-21.5.1/lib-src/config.values.sh' 'xemacs-21.5.2/lib-src/config.values.sh' Index: ././lib-src/config.values.sh --- ././lib-src/config.values.sh Fri Apr 13 03:20:59 2001 +++ ././lib-src/config.values.sh Thu May 17 22:44:34 2001 @@ -31,7 +31,7 @@ ## to make them available to elisp later (see util/config.el) ## Primarily useful for creating ridiculously verbose bug reports. ## -## See lisp/utils/config.el, ../configure.in, +## See lisp/config.el, ../configure.in, ## and the Autoconf documentation on AC_OUTPUT, for more details. ## ## This script needs only to be run occasionally (before a Net release) @@ -62,14 +62,14 @@ ;;; This file was automatically generated, by the config.values.sh script, ;;; from configure, which was itself automatically generated from configure.in. ;;; -;;; See lisp/util/config.el for details on how this file is used. +;;; See lisp/config.el for details on how this file is used. ;;; ;;; You are trapped in a twisty maze of strange-looking files, all autogenerated... ;;; configure is created, from configure.in, by autoconf ;;; config.values.in is created, from configure, by config.values.sh ;;; config.values is created, from config.values.in, by configure -;;; config.values is read by lisp/utils/config.el, +;;; config.values is read by lisp/config.el, ;;; to create the (Lisp object) config-value-hash-table ;;; Variables defined in configure by AC_SUBST follow: diff --text -u 'xemacs-21.5.1/lib-src/cvtmail.c' 'xemacs-21.5.2/lib-src/cvtmail.c' Index: ././lib-src/cvtmail.c --- ././lib-src/cvtmail.c Fri Apr 13 03:20:59 2001 +++ ././lib-src/cvtmail.c Sun Jun 10 19:42:17 2001 @@ -1,18 +1,18 @@ /* Copyright (C) 1985, 1993, 1994 Free Software Foundation -This file is part of GNU Emacs. +This file is part of XEmacs. -GNU Emacs is free software; you can redistribute it and/or modify +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. -GNU Emacs is distributed in the hope that it will be useful, +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 GNU Emacs; see the file COPYING. If not, write to +along with XEmacs; see the file COPYING. If not, write to the Free the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --text -u 'xemacs-21.5.1/lib-src/digest-doc.c' 'xemacs-21.5.2/lib-src/digest-doc.c' Index: ././lib-src/digest-doc.c --- ././lib-src/digest-doc.c Fri Apr 13 03:21:00 2001 +++ ././lib-src/digest-doc.c Sun Jun 10 19:42:17 2001 @@ -17,8 +17,8 @@ register int notfirst = 0; printf (".TL\n"); - printf ("Command Summary for GNU Emacs\n"); - printf (".AU\nRichard M. Stallman\n"); + printf ("Command Summary for XEmacs\n"); + printf (".AU\nThe XEmacs Advocacy Group\n"); while ((ch = getchar ()) != EOF) { if (ch == '\037') diff --text -u 'xemacs-21.5.1/lib-src/etags.c' 'xemacs-21.5.2/lib-src/etags.c' Index: ././lib-src/etags.c --- ././lib-src/etags.c Fri Apr 13 03:21:00 2001 +++ ././lib-src/etags.c Sat May 12 20:16:12 2001 @@ -32,7 +32,7 @@ * Francesco Potortì has maintained it since 1993. */ -char pot_etags_version[] = "@(#) pot revision number is 14.15"; +char pot_etags_version[] = "@(#) pot revision number is 14.20"; #define TRUE 1 #define FALSE 0 @@ -58,7 +58,11 @@ # undef static # define ETAGS_REGEXPS /* use the regexp features */ # define LONG_OPTIONS /* accept long options */ -#endif /* HAVE_CONFIG_H */ +#else +# ifndef __STDC__ +# define static /* remove static for old compilers' sake */ +# endif +#endif /* !HAVE_CONFIG_H */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 /* enables some compiler checks on GNU */ @@ -708,7 +712,7 @@ REGEXP is anchored (as if preceded by ^).\n\ The form /REGEXP/NAME/ creates a named tag.\n\ For example Tcl named tags can be created with:\n\ - --regex=/proc[ \\t]+\\([^ \\t]+\\)/\\1/."); + --regex=\"/proc[ \\t]+\\([^ \\t]+\\)/\\1/.\""); puts ("-c /REGEXP/, --ignore-case-regex=/REGEXP/ or --ignore-case-regex=@regexfile\n\ Like -r, --regex but ignore case when matching expressions."); puts ("-R, --no-regex\n\ @@ -1943,7 +1947,7 @@ st_C_ignore, st_C_javastruct, st_C_operator, - st_C_class, + st_C_class, st_C_template, st_C_struct, st_C_extern, st_C_enum, st_C_define, st_C_typedef, st_C_typespec }; @@ -1953,7 +1957,6 @@ /* Feed stuff between (but not including) %[ and %] lines to: gperf -c -k 1,3 -o -p -r -t - then put a `static' keyword in front of the in_word_set function. %[ struct C_stab_entry { char *name; int c_ext; enum sym_type type; } %% @@ -1982,6 +1985,7 @@ typedef, 0, st_C_typedef define, 0, st_C_define operator, C_PLPL, st_C_operator +template, 0, st_C_template bool, C_PLPL, st_C_typespec long, 0, st_C_typespec short, 0, st_C_typespec @@ -2016,12 +2020,12 @@ /* Command-line: gperf -c -k 1,3 -o -p -r -t */ struct C_stab_entry { char *name; int c_ext; enum sym_type type; }; -#define TOTAL_KEYWORDS 46 +#define TOTAL_KEYWORDS 47 #define MIN_WORD_LENGTH 2 #define MAX_WORD_LENGTH 15 -#define MIN_HASH_VALUE 13 -#define MAX_HASH_VALUE 121 -/* maximum key range = 109, duplicates = 0 */ +#define MIN_HASH_VALUE 18 +#define MAX_HASH_VALUE 138 +/* maximum key range = 121, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -2033,32 +2037,32 @@ { static unsigned char asso_values[] = { - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 57, 122, 122, 122, 55, 6, - 60, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 51, 122, 122, 10, 2, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 2, 52, 59, - 49, 38, 56, 41, 122, 22, 122, 122, 9, 32, - 33, 60, 26, 122, 1, 28, 46, 59, 44, 51, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, - 122, 122, 122, 122, 122, 122 + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 63, 139, 139, 139, 33, 44, + 62, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 42, 139, 139, 12, 32, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 34, 59, 37, + 24, 58, 33, 3, 139, 16, 139, 139, 42, 60, + 18, 11, 39, 139, 23, 57, 4, 63, 6, 20, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, + 139, 139, 139, 139, 139, 139 }; register int hval = len; @@ -2086,77 +2090,79 @@ static struct C_stab_entry wordlist[] = { {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {""}, {""}, {""}, - {"ENTRY", 0, st_C_gnumacro}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {""}, {"if", 0, st_C_ignore}, + {""}, {""}, {""}, {""}, + {"int", 0, st_C_typespec}, {""}, {""}, + {"void", 0, st_C_typespec}, + {""}, {""}, + {"interface", C_JAVA, st_C_struct}, + {""}, {"SYSCALL", 0, st_C_gnumacro}, + {""}, + {"return", 0, st_C_ignore}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"struct", 0, st_C_struct}, - {"static", 0, st_C_typespec}, - {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, - {"long", 0, st_C_typespec}, - {""}, {""}, {""}, {""}, {""}, + {"while", 0, st_C_ignore}, {"auto", 0, st_C_typespec}, - {"return", 0, st_C_ignore}, + {""}, {""}, {""}, {""}, {""}, {""}, + {"float", 0, st_C_typespec}, + {"typedef", 0, st_C_typedef}, + {"typename", C_PLPL, st_C_typespec}, + {""}, {""}, {""}, + {"friend", C_PLPL, st_C_ignore}, + {"volatile", 0, st_C_typespec}, + {""}, {""}, + {"for", 0, st_C_ignore}, + {"const", 0, st_C_typespec}, {"import", C_JAVA, st_C_ignore}, {""}, - {"switch", 0, st_C_ignore}, - {""}, + {"define", 0, st_C_define}, + {"long", 0, st_C_typespec}, {"implements", C_JAVA, st_C_javastruct}, + {"signed", 0, st_C_typespec}, {""}, - {"for", 0, st_C_ignore}, - {"volatile", 0, st_C_typespec}, - {""}, - {"PSEUDO", 0, st_C_gnumacro}, + {"extern", 0, st_C_extern}, + {"extends", C_JAVA, st_C_javastruct}, {""}, + {"mutable", C_PLPL, st_C_typespec}, + {"template", 0, st_C_template}, + {"short", 0, st_C_typespec}, + {"bool", C_PLPL, st_C_typespec}, {"char", 0, st_C_typespec}, {"class", 0, st_C_class}, - {"@protocol", 0, st_C_objprot}, - {""}, {""}, - {"void", 0, st_C_typespec}, - {"int", 0, st_C_typespec}, - {"explicit", C_PLPL, st_C_typespec}, + {"operator", C_PLPL, st_C_operator}, {""}, - {"namespace", C_PLPL, st_C_struct}, - {"signed", 0, st_C_typespec}, + {"switch", 0, st_C_ignore}, + {""}, + {"ENTRY", 0, st_C_gnumacro}, {""}, - {"interface", C_JAVA, st_C_struct}, - {"while", 0, st_C_ignore}, - {"typedef", 0, st_C_typedef}, - {"typename", C_PLPL, st_C_typespec}, - {""}, {""}, {""}, - {"friend", C_PLPL, st_C_ignore}, - {"mutable", C_PLPL, st_C_typespec}, - {"union", 0, st_C_struct}, - {"domain", C_STAR, st_C_struct}, - {""}, {""}, - {"extern", 0, st_C_extern}, - {"extends", C_JAVA, st_C_javastruct}, {"package", C_JAVA, st_C_ignore}, - {"short", 0, st_C_typespec}, + {"union", 0, st_C_struct}, {"@end", 0, st_C_objend}, - {"unsigned", 0, st_C_typespec}, - {""}, - {"const", 0, st_C_typespec}, + {"struct", 0, st_C_struct}, + {"namespace", C_PLPL, st_C_struct}, {""}, {""}, + {"domain", C_STAR, st_C_struct}, {"@interface", 0, st_C_objprot}, - {"enum", 0, st_C_enum}, - {""}, {""}, - {"@implementation",0, st_C_objimpl}, - {""}, - {"operator", C_PLPL, st_C_operator}, - {""}, {""}, {""}, {""}, - {"define", 0, st_C_define}, - {""}, {""}, + {"PSEUDO", 0, st_C_gnumacro}, {"double", 0, st_C_typespec}, {""}, - {"bool", C_PLPL, st_C_typespec}, - {""}, {""}, {""}, + {"@protocol", 0, st_C_objprot}, + {""}, + {"static", 0, st_C_typespec}, + {""}, {""}, {"DEFUN", 0, st_C_gnumacro}, - {"float", 0, st_C_typespec} + {""}, {""}, {""}, {""}, + {"explicit", C_PLPL, st_C_typespec}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {""}, + {"enum", 0, st_C_enum}, + {""}, {""}, + {"unsigned", 0, st_C_typespec}, + {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, + {"@implementation",0, st_C_objimpl} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -2523,12 +2529,15 @@ if (structdef == stagseen) structdef = scolonseen; return FALSE; + case st_C_template: case st_C_class: if (cblev == 0 && (*c_extp & C_AUTO) /* automatic detection of C++ language */ && definedef == dnone && structdef == snone && typdef == tnone && fvdef == fvnone) *c_extp = (*c_extp | C_PLPL) & ~C_AUTO; + if (toktype == st_C_template) + break; /* FALLTHRU */ case st_C_struct: case st_C_enum: @@ -2792,7 +2801,7 @@ cstack.cblev = xnew (cstack.size, int); } - tokoff = toklen = 0; /* keep compiler quiet */ + tokoff = toklen = typdefcblev = 0; /* keep compiler quiet */ curndx = newndx = 0; lineno = 0; charno = 0; @@ -3370,8 +3379,10 @@ break; if (typdef == ttypeseen) { - typdefcblev = cblev; + /* Whenever typdef is set to tinbody (currently only + here), typdefcblev should be set to cblev. */ typdef = tinbody; + typdefcblev = cblev; } switch (fvdef) { @@ -3433,6 +3444,7 @@ cblev--; popclass_above (cblev); structdef = snone; + /* Only if typdef == tinbody is typdefcblev significant. */ if (typdef == tinbody && cblev <= typdefcblev) { assert (cblev == typdefcblev); @@ -5143,6 +5155,7 @@ bool ignore_case; language *lang; { + static struct re_pattern_buffer zeropattern; char *name; const char *err; struct re_pattern_buffer *patbuf; @@ -5163,11 +5176,9 @@ (void) scan_separators (name); patbuf = xnew (1, struct re_pattern_buffer); - /* Translation table to fold case if appropriate. */ - patbuf->translate = (ignore_case) ? lc_trans : NULL; - patbuf->fastmap = NULL; - patbuf->buffer = NULL; - patbuf->allocated = 0; + *patbuf = zeropattern; + if (ignore_case) + patbuf->translate = lc_trans; /* translation table to fold case */ err = re_compile_pattern (regexp_pattern, strlen (regexp_pattern), patbuf); if (err != NULL) diff --text -u 'xemacs-21.5.1/lib-src/fakemail.c' 'xemacs-21.5.2/lib-src/fakemail.c' Index: ././lib-src/fakemail.c --- ././lib-src/fakemail.c Fri Apr 13 03:21:01 2001 +++ ././lib-src/fakemail.c Sun Jun 10 19:42:17 2001 @@ -1,20 +1,20 @@ /* sendmail-like interface to /bin/mail for system V, Copyright (C) 1985, 1994 Free Software Foundation, Inc. -This file is part of GNU Emacs. +This file is part of XEmacs. -GNU Emacs is free software; you can redistribute it and/or modify +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. -GNU Emacs is distributed in the hope that it will be useful, +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 GNU Emacs; see the file COPYING. If not, write to +along with XEmacs; see the file COPYING. If not, write to the Free the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --text -u 'xemacs-21.5.1/lib-src/gnuserv.c' 'xemacs-21.5.2/lib-src/gnuserv.c' Index: ././lib-src/gnuserv.c --- ././lib-src/gnuserv.c Fri Apr 13 03:21:01 2001 +++ ././lib-src/gnuserv.c Sun Jun 10 19:42:17 2001 @@ -1,8 +1,8 @@ /* -*-C-*- Server code for handling requests from clients and forwarding them - on to the GNU Emacs process. + on to the XEmacs process. - This file is part of GNU Emacs. + This file is part of XEmacs. Copying is permitted under those conditions described by the GNU General Public License. @@ -166,7 +166,7 @@ /* handle_ipc_request -- accept a request from a client, pass the request on - to the GNU Emacs process, then wait for its reply and + to the XEmacs process, then wait for its reply and pass that on to the client. */ void diff --text -u 'xemacs-21.5.1/lib-src/gnuserv.h' 'xemacs-21.5.2/lib-src/gnuserv.h' Index: ././lib-src/gnuserv.h --- ././lib-src/gnuserv.h Fri Apr 13 03:21:02 2001 +++ ././lib-src/gnuserv.h Sun Jun 10 19:42:17 2001 @@ -1,8 +1,8 @@ /* -*-C-*- - Header file for the GNU Emacs server and client C code. + Header file for the XEmacs server and client C code. - This file is part of GNU Emacs. + This file is part of XEmacs. Copying is permitted under those conditions described by the GNU General Public License. diff --text -u 'xemacs-21.5.1/lib-src/gnuslib.c' 'xemacs-21.5.2/lib-src/gnuslib.c' Index: ././lib-src/gnuslib.c --- ././lib-src/gnuslib.c Fri Apr 13 03:21:02 2001 +++ ././lib-src/gnuslib.c Sun Jun 10 19:42:17 2001 @@ -1,7 +1,7 @@ /* -*-C-*- - Common library code for the GNU Emacs server and client. + Common library code for the XEmacs server and client. - This file is part of GNU Emacs. + This file is part of XEmacs. Copying is permitted under those conditions described by the GNU General Public License. diff --text -u 'xemacs-21.5.1/lib-src/make-msgfile.c' 'xemacs-21.5.2/lib-src/make-msgfile.c' Index: ././lib-src/make-msgfile.c --- ././lib-src/make-msgfile.c Fri Apr 13 03:21:03 2001 +++ ././lib-src/make-msgfile.c Sun Jun 10 19:42:17 2001 @@ -206,7 +206,7 @@ (interactive ...) The arguments given to this program are all the C and Lisp source files - of GNU Emacs. .el and .c files are allowed. There is no support for .elc + of XEmacs. .el and .c files are allowed. There is no support for .elc files at this time, but they may be specified; the corresponding .el file will be used. Similarly, .o files can also be specified, and the corresponding .c file will be used. This helps the makefile pass the correct list of files. diff --text -u 'xemacs-21.5.1/lib-src/make-path.c' 'xemacs-21.5.2/lib-src/make-path.c' Index: ././lib-src/make-path.c --- ././lib-src/make-path.c Fri Apr 13 03:21:03 2001 +++ ././lib-src/make-path.c Sun Jun 10 19:42:17 2001 @@ -1,20 +1,20 @@ /* Make all the directories along a path. Copyright (C) 1992 Free Software Foundation, Inc. -This file is part of GNU Emacs. +This file is part of XEmacs. -GNU Emacs is free software; you can redistribute it and/or modify +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. -GNU Emacs is distributed in the hope that it will be useful, +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 GNU Emacs; see the file COPYING. If not, write to +along with XEmacs; see the file COPYING. If not, write to the Free the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --text -u 'xemacs-21.5.1/lib-src/movemail.c' 'xemacs-21.5.2/lib-src/movemail.c' Index: ././lib-src/movemail.c --- ././lib-src/movemail.c Fri Apr 13 03:21:03 2001 +++ ././lib-src/movemail.c Thu May 24 20:21:33 2001 @@ -588,14 +588,20 @@ p--; *p = 0; strcpy (p, "EXXXXXX"); +#ifndef HAVE_MKSTEMP mktemp (tempname); unlink (tempname); +#endif for (;;) { /* Create the lock file, but not under the lock file name. */ /* Give up if cannot do that. */ +#ifdef HAVE_MKSTEMP + desc = mkstemp (tempname); +#else desc = open (tempname, O_WRONLY | O_CREAT | O_EXCL, 0666); +#endif if (desc < 0) { char *message = (char *) xmalloc (strlen (tempname) + 50); diff --text -u 'xemacs-21.5.1/lib-src/pop.c' 'xemacs-21.5.2/lib-src/pop.c' Index: ././lib-src/pop.c --- ././lib-src/pop.c Fri Apr 13 03:21:04 2001 +++ ././lib-src/pop.c Sun Jun 10 19:42:17 2001 @@ -2,20 +2,20 @@ Copyright (c) 1991, 1993, 1996 Free Software Foundation, Inc. Written by Jonathan Kamens, jik@security.ov.com. -This file is part of GNU Emacs. +This file is part of XEmacs. -GNU Emacs is free software; you can redistribute it and/or modify +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. -GNU Emacs is distributed in the hope that it will be useful, +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 GNU Emacs; see the file COPYING. If not, write to +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. */ @@ -989,9 +989,7 @@ hostent = gethostbyname (host); try_count++; if ((! hostent) -#ifndef BROKEN_CYGWIN && ((h_errno != TRY_AGAIN) || (try_count == 5)) -#endif ) { strcpy (pop_error, "Could not determine POP server's address"); diff --text -u 'xemacs-21.5.1/lib-src/pop.h' 'xemacs-21.5.2/lib-src/pop.h' Index: ././lib-src/pop.h --- ././lib-src/pop.h Wed Apr 2 05:31:10 1997 +++ ././lib-src/pop.h Sun Jun 10 19:42:17 2001 @@ -2,20 +2,20 @@ Copyright (c) 1991,1993 Free Software Foundation, Inc. Written by Jonathan Kamens, jik@security.ov.com. -This file is part of GNU Emacs. +This file is part of XEmacs. -GNU Emacs is free software; you can redistribute it and/or modify +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. -GNU Emacs is distributed in the hope that it will be useful, +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 GNU Emacs; see the file COPYING. If not, write to +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. */ diff --text -u 'xemacs-21.5.1/lib-src/profile.c' 'xemacs-21.5.2/lib-src/profile.c' Index: ././lib-src/profile.c --- ././lib-src/profile.c Fri Apr 13 03:21:05 2001 +++ ././lib-src/profile.c Sun Jun 10 19:42:17 2001 @@ -3,20 +3,20 @@ Author: Boaz Ben-Zvi - This file is part of GNU Emacs. + This file is part of XEmacs. - GNU Emacs is free software; you can redistribute it and/or modify + 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. - GNU Emacs is distributed in the hope that it will be useful, + 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 GNU Emacs; see the file COPYING. If not, write to + along with XEmacs; see the file COPYING. If not, write to the Free the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ diff --text -u 'xemacs-21.5.1/lib-src/sorted-doc.c' 'xemacs-21.5.2/lib-src/sorted-doc.c' Index: ././lib-src/sorted-doc.c --- ././lib-src/sorted-doc.c Fri Apr 13 03:21:05 2001 +++ ././lib-src/sorted-doc.c Sun Jun 10 19:42:18 2001 @@ -204,8 +204,8 @@ printf ("\\input texinfo @c -*-texinfo-*-\n"); printf ("@setfilename ../info/summary\n"); - printf ("@settitle Command Summary for GNU Emacs\n"); - printf ("@unnumbered Command Summary for GNU Emacs\n"); + printf ("@settitle Command Summary for XEmacs\n"); + printf ("@unnumbered Command Summary for XEmacs\n"); printf ("@table @asis\n"); printf ("\n"); printf ("@iftex\n"); diff --text -u 'xemacs-21.5.1/lib-src/tcp.c' 'xemacs-21.5.2/lib-src/tcp.c' Index: ././lib-src/tcp.c --- ././lib-src/tcp.c Thu Dec 19 07:42:33 1996 +++ ././lib-src/tcp.c Sun Jun 10 19:42:18 2001 @@ -1,24 +1,24 @@ /* - * TCP/IP stream emulation for GNU Emacs. + * TCP/IP stream emulation for XEmacs. * Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc. * Author: Masanobu Umeda * Maintainer: umerin@mse.kyutech.ac.jp -This file is part of GNU Emacs. +This file is part of XEmacs. -GNU Emacs is free software; you can redistribute it and/or modify +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. -GNU Emacs is distributed in the hope that it will be useful, +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 GNU Emacs; see the file COPYING. If not, write to +along with XEmacs; see the file COPYING. If not, write to the Free the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. diff --text -u 'xemacs-21.5.1/lisp/.cvsignore' 'xemacs-21.5.2/lisp/.cvsignore' Index: ././lisp/.cvsignore --- ././lisp/.cvsignore Fri Apr 13 03:21:07 2001 +++ ././lisp/.cvsignore Sat May 12 20:39:18 2001 @@ -1,2 +1,4 @@ ChangeLog.font-menu finder-inf.el +auto-autoloads.el +custom-load.el diff --text -u 'xemacs-21.5.1/lisp/ChangeLog' 'xemacs-21.5.2/lisp/ChangeLog' Index: ././lisp/ChangeLog --- ././lisp/ChangeLog Wed May 9 19:53:53 2001 +++ ././lisp/ChangeLog Sat Jul 28 16:48:22 2001 @@ -1,3 +1,410 @@ +2001-07-28 Stephen J. Turnbull + + * XEmacs 21.5.2 "artichoke" is released. + +2001-07-20 Steve Youngs + + * packages.el (locate-data-file): Revert Karl's patch. + +2001-07-18 Stephen J. Turnbull + + * specifier.el: define-specifier-tag 'gtk. + +2001-07-15 Adrian Aichner + + * about.el (about-personal-info): Fix word duplication typos. + * dialog.el (make-dialog-box): Ditto. + * lisp-mode.el (lisp-indent-function): Ditto. + * package-admin.el (package-admin-delete-binary-package): Ditto. + * package-get.el (package-get-staging-dir): Ditto. + +2001-07-14 Sean MacLennan + + * package-admin.el (package-install-hook): New. + (package-delete-hook): New. + (package-admin-add-single-file-package): Use package-delete-hook. + + * package-get.el (package-get): Use package-install-hook. + +2001-06-26 Robert Pluim + + * packages.el (locate-library): change to use read-library-name so + we can get completion + +2001-06-26 Robert Pluim + + * package-ui.el (pui-install-selected-packages): reverse the lists + of packages so that they get handled in the same order as they + were selected. + +2001-06-21 Ben Wing + + * term\AT386.el: + * term\AT386.el (AT386-keypad-map): + * term\AT386.el (AT386-keypad-map)): New. + Fix warnings. + + * term\apollo.el: + * term\apollo.el ("term/vt100"): + * term\apollo.el (*dm-mouse-key-bindings-file*): Removed. + * term\apollo.el (*apollo-key-bindings-hook*): Removed. + * term\apollo.el (*preempt-display-manager-bindings*): Removed. + * term\apollo.el (*paste-buffer-directory*): Removed. + * term\apollo.el (*apollo-mouse-move-point-allow-minibuffer-exit*): Removed. + * term\apollo.el (*apollo-function-keys*): Removed. + * term\apollo.el (*apollo-mouse-buttons*): Removed. + * term\apollo.el (bind-apollo-function-key): Removed. + * term\apollo.el (unbind-apollo-function-key): Removed. + * term\apollo.el (select-apollo-meta-key): Removed. + * term\apollo.el (bind-apollo-mouse-button): Removed. + * term\apollo.el (unbind-apollo-mouse-button): Removed. + * term\apollo.el ('apollo-prefix)): Removed. + * term\apollo.el ('apollo-prefix-1)): Removed. + * term\apollo.el ('apollo-prefix-2)): Removed. + * term\apollo.el ('apollo-prefix-3)): Removed. + * term\apollo.el ('apollo-prefix-4)): Removed. + * term\apollo.el ('apollo-prefix-5)): Removed. + * term\apollo.el ('apollo-prefix-6)): Removed. + * term\apollo.el ('apollo-prefix-7)): Removed. + * term\apollo.el ('apollo-prefix-8)): Removed. + * term\apollo.el ('apollo-prefix): Removed. + * term\apollo.el (apollo-copy-region): Removed. + * term\apollo.el (apollo-cut-region): Removed. + * term\apollo.el (apollo-paste): Removed. + * term\apollo.el (minibuffer-prompt-length): Removed. + * term\apollo.el (extract-file-or-buffer-name-around-point): Removed. + * term\apollo.el (apollo-find-file): Removed. + * term\apollo.el (apollo-grow-emacs-window): Removed. + * term\apollo.el (apollo-move-emacs-window): Removed. + * term\apollo.el (apollo-again): Removed. + * term\apollo.el (apollo-exit): Removed. + * term\apollo.el (apollo-abort): Removed. + * term\apollo.el (apollo-aegis-help): Removed. + * term\apollo.el (apollo-clean-help-file): Removed. + * term\apollo.el (kill-whole-line): Removed. + * term\apollo.el (apollo-key-undefined): Removed. + * term\apollo.el (apollo-mouse-move-point): Removed. + * term\apollo.el (apollo-mouse-move-mark): Removed. + * term\apollo.el (apollo-mouse-cut): Removed. + * term\apollo.el (apollo-mouse-copy): Removed. + * term\apollo.el (apollo-mouse-paste): Removed. + * term\apollo.el (apollo-mouse-pop-buffer): Removed. + * term\apollo.el (apollo-mouse-find-file): Removed. + * term\apollo.el (apollo-mouse-find-file-other-window): Removed. + * term\apollo.el (apollo-mouse-defaults): Removed. + * term\apollo.el (apollo-mouse-cut-copy-paste): Removed. + * term\apollo.el (apollo-mouse-cancel-cut-copy-paste): Removed. + * term\apollo.el (install-apollo-dm-preemptive-key-bindings): Removed. + Kill kill kill. Sync with FSF and remove most crap. + + * term\linux.el: + * term\linux.el (function-key-map): Removed. + Sync with FSF. Don't define most defns, because they are + automatically defined by termcap. But do add defns for keys that + normally get defined as f13, f14, etc. and really ought to be + shift-f3, shift-f4, etc. (NOTE: I did this based on Cygwin, which + emulates the Linux console. I would appreciate it if someone on + Linux could verify.) + + * term\cygwin.el: + New. Load term/linux. + + * term\lk201.el: + * term\news.el: + * term\news.el (news-fkey-prefix)): New. + * term\vt100.el: + * term\vt100.el (vt100-wide-mode): + Sync with FSF. Fix warnings. + +2001-06-21 Ben Wing + + * dialog-gtk.el (popup-builtin-open-dialog): Fix warning. + + For 21.4: + * help.el (frob-help-extents): Fix problem with undefined face. + * update-elc.el (update-elc-files-to-compile): Compile in proper order. + + Maybe for 21.4: + * keydefs.el (global-map): Add a defn for M-?, previously + undefined, to access help -- in case the terminal is not set up + right, or f1 gets redefined. + +2001-06-19 Ben Wing + + * term/{internal,pc-win,win32-win,sun,sun-mouse}.el: + Die die die. + +2001-06-17 Ben Wing + + For 21.4: + + * update-elc-2.el (do-update-elc-2): + * update-elc-2.el (batch-update-elc-2): + Correct misplaced parentheses, making lisp/mule not get + recompiled. + +2001-06-10 Ben Wing + + * alist.el: + * apropos.el: + * autoload.el: + * bytecomp.el: + * bytecomp.el (byte-compile-insert-header): + * cl-compat.el: + * cl-extra.el: + * cl-macs.el: + * cl-seq.el: + * cl.el: + * cmdloop.el (execute-extended-command): + * cus-edit.el (alloc): + * derived.el: + * gpm.el: + * itimer.el: + * lisp-mode.el (lisp-mode): + * shadow.el: + * version.el: + * wid-browse.el: + Rename 'GNU Emacs' to XEmacs in the copyright. + Fix other references to GNU Emacs that should be XEmacs or just + Emacs. + + * files.el (insert-directory): + Fix warning. + + * simple.el: + * simple.el (Simple-forward-line-creating-newline): New. + * simple.el (Simple-transpose-lines-mover): New. + * simple.el (transpose-line-up): + * simple.el (transpose-line-down): + * simple.el (transpose-subr): + transpose-line-up/down will now move the region up or down by + a line if active. + +2001-06-08 Mike Sperber + + * files.el (save-some-buffers-1): Don't zap the help window right + after `map-y-or-n-p' has popped it up. + +2001-06-08 Ben Wing + + * process.el: comment about shell-command-switch. + * process.el (shell-quote-argument): Need to quote a null + argument, too. From Dan Holmsand. + + * startup.el (normal-top-level): Delete some unused FSF junk. + * startup.el (command-line-early): + + * startup.el (command-line): Call MS Windows init function. + + * win32-native.el: + * win32-native.el (mswindows-system-shells): New. + * win32-native.el (mswindows-system-shell-p): New. + * win32-native.el (init-mswindows-at-startup): New. + * win32-native.el (mswindows-quote-one-vc-runtime-arg): + * win32-native.el (mswindows-quote-one-simple-arg): + * win32-native.el (mswindows-quote-one-command-arg): + * win32-native.el (mswindows-construct-process-command-line-alist): + Correct comments at top. Correctly handle passing arguments + to Cygwin programs and to bash. Fix quoting of zero-length + arguments (from Dan Holmsand). Set shell-command-switch based + on shell-file-name, which in turn comes from env var SHELL. + +2001-06-03 William M. Perry + + * dialog-gtk.el (popup-builtin-open-dialog): Yikes - don't forget + to return the filename! + + * font.el (font-window-system-mappings): Add gtk entry - just an + alias to the X code) + +2001-06-02 William M. Perry + + * gtk-marshal.el: Fix for removing of the string_hash utility + functions in hash.c + +2001-05-13 Karl M. Hegbloom + + * packages.el (locate-data-file): Use suffixes list to allow + finding compressed copies of the data files. + +2001-05-30 Ben Wing + + * etags.el (buffer-tag-table-list): + Fix infloop when going up to the root. + +2001-05-30 William M. Perry + + * gtk-marshal.el: Make sure that we use 'const' instead of 'CONST' + in the generated file. Put in a comment at the top of the + generated file that it _IS_ auto-generated, and should not be + edited by hand. + + + * gtk-widget-accessors.el (define-widget-accessors): Use + wtaerror() instead of signal_simple_error. + (import-widget-accessors): Put in a comment at the top of the + generated file that it _IS_ auto-generated, and should not be + edited by hand. + +2001-05-10 Daiki Ueno + + * font-lock.el (font-lock-compile-keywords): Rewrite as a side + effect free function. + (font-lock-fontify-keywords-region): Supply the argument to + font-lock-compile-keywords. + +2001-05-24 Ben Wing + + * subr.el: + * subr.el (error): + fix doc string to reflect reality + +2001-05-23 Ben Wing + + * behavior-defs.el: + * behavior-defs.el (scroll-in-place): + * behavior-defs.el ('scroll-in-place): New. + * behavior-defs.el (mouse-avoidance): + * behavior-defs.el (jka-compr): + * behavior-defs.el ('jka-compr): New. + * behavior-defs.el ('efs): New. + * behavior-defs.el (efs): + * behavior-defs.el (resize-minibuffer): + * behavior-defs.el (func-menu): + * behavior-defs.el (mwheel): + * behavior-defs.el (recent-files): + * behavior-defs.el (filladapt): + Add scroll-in-place, jka-compr, efs, fix up some things. + +2001-03-19 Karl M. Hegbloom + + * cus-edit.el (custom-display): Support the GTK Window System also. + +2001-05-21 Martin Buchholz + + * byte-optimize.el (=): `=' is not a binary predicate! + Fix incorrect optimization: (= 0 0 (random 2)) ==> 0 or 1. + Use byte-optimize-predicate, not byte-optimize-binary-predicate, + +2001-05-20 Martin Buchholz + + * bytecomp.el (byte-compile-arithcompare): + Only optimize (= x) ==> t if byte-compile-delete-errors is nil. + +2001-05-20 Adrian Aichner + + * buff-menu.el (Buffer-menu-mode): Properly make + `mouse-track-click-hook' local. + * info.el (Info-mode): Ditto. + +2001-05-19 Ben Wing + + * autoload.el (batch-force-update-one-directory): + Oops, off by one argument. + + * mouse.el: + * mouse.el (Mouse-track-gensym): New. + * mouse.el (mouse-track-run-hook): + * mouse.el (mouse-track): + * mouse.el (mouse-track-default): + * mouse.el (mouse-track-insert): + * mouse.el (mouse-track-insert-selected-region): Removed. + * mouse.el (mouse-track-insert-drag-up-hook): Removed. + * mouse.el (mouse-track-insert-click-hook): Removed. + Add an argument to mouse-track so that hooks can be overridden. + (let-binding doesn't work when the hooks have been made local.) + modify mouse-track-run-hook accordingly, and fix mouse-track-default + and mouse-track-insert to use the new functionality. + + * printer.el (generic-print-region): + Oops, off by one paren. + +2001-05-13 Adrian Aichner + + * buff-menu.el (Buffer-menu-mode): `mouse-track-click-hook' was + made buffer-local incorrectly (make-local-variable instead of + make-local-hook). Furthermore this hook must not be local so that + it can keep track of buffers and windows. + +2001-05-13 Mike Alexander + + * dragdrop.el (experimental-dragdrop-drop-url-default): If event + has no window, use one from the frame in the event + +2001-05-12 Ben Wing + + * .cvsignore: auto-autoloads/custom-load need to be added now that they're not in cvs. + +2001-05-12 Ben Wing + + * find-paths.el (paths-find-recursive-path): + fix error with null EXCLUDE-REGEXP. + + * font-lock.el (font-lock-mode): + fix problem reported by hrvoje with buffers starting with a space. + + * lib-complete.el: + * lib-complete.el (find-library-source-path): New. + * lib-complete.el (find-library): + add a variable to control where `find-library' looks, analogous to `find-function-source-path'. + +2001-05-10 Ben Wing + + * mule\mule-coding.el: + * mule\mule-coding.el (coding-system-charset): New. + Move this function into Lisp to avoid doc warnings. + +2001-05-10 Ben Wing + + * autoload.el: + * autoload.el (update-autoloads-from-directory): + * autoload.el (fixup-autoload-buffer): + * autoload.el (batch-update-autoloads): Removed. + * autoload.el (update-autoload-files): New. + * autoload.el (batch-force-update-one-directory): New. + * packages.el (packages-useful-lisp): + * startup.el: + * startup.el (normal-top-level): + * startup.el (startup-load-autoloads): New. + * update-elc-2.el (batch-update-elc-2): + * update-elc.el: + * update-elc.el (need-to-rebuild-autoloads): New. + * update-elc.el (need-to-rebuild-mule-autoloads): New. + * update-elc.el (need-to-recompile-autoloads): New. + * update-elc.el (need-to-recompile-mule-autoloads): New. + * update-elc.el (update-elc-chop-extension): New. + Rewrite much of the bootstrapping process to be more robust, + and in particular to rebuild the auto-autoloads and custom-loads + files no matter what state (including missing) they're currently + in. + +2001-05-09 Ben Wing + + * files.el (find-file-noselect): + * files.el (recover-session-finish): + fix byte-compilation warnings. + +2001-05-09 Ben Wing + + * font.el (bold): New. + * font.el (italic): New. + * font.el (oblique): New. + * font.el (dim): New. + * font.el (underline): New. + * font.el (overline): New. + * font.el (linethrough): New. + * font.el (strikethru): New. + * font.el (reverse): New. + * font.el (blink): New. + * font.el (smallcaps): New. + * font.el (bigcaps): New. + * font.el (dropcaps): New. + * gtk-widget-accessors.el (import-widget-accessors): + * widgets-gtk.el (gtk-widget-instantiate-internal): + * x-font-menu.el (x-font-menu-font-data): New. + * x-font-menu.el (x-font-menu-load-font): + fix byte-compilation warnings. + 2001-05-09 Martin Buchholz * XEmacs 21.5.1 "anise" is released. diff --text -u 'xemacs-21.5.1/lisp/about.el' 'xemacs-21.5.2/lisp/about.el' Index: ././lisp/about.el --- ././lisp/about.el Mon Apr 30 23:07:44 2001 +++ ././lisp/about.el Sun Jul 15 17:18:59 2001 @@ -1224,7 +1224,7 @@ (pelegri (widget-insert "\ -I did my my PhD at UCB and a postdoc at CSL/PARC. I joined Sun in 1990, +I did my PhD at UCB and a postdoc at CSL/PARC. I joined Sun in 1990, spent some time in DevPro (that is when I made my contribution to XEmacs) and joined JavaSoft in fall '95, where I've been the lead for several JSP-related specifications and JAX-RPC. I'm currently the Web diff --text -u 'xemacs-21.5.1/lisp/alist.el' 'xemacs-21.5.2/lisp/alist.el' Index: ././lisp/alist.el --- ././lisp/alist.el Fri Apr 13 03:21:10 2001 +++ ././lisp/alist.el Sun Jun 10 19:42:21 2001 @@ -18,7 +18,7 @@ ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the +;; 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. diff --text -u 'xemacs-21.5.1/lisp/apropos.el' 'xemacs-21.5.2/lisp/apropos.el' Index: ././lisp/apropos.el --- ././lisp/apropos.el Sat May 5 19:50:20 2001 +++ ././lisp/apropos.el Sun Jun 10 19:42:21 2001 @@ -20,7 +20,7 @@ ;; General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the +;; 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. diff --text -u 'xemacs-21.5.1/lisp/autoload.el' 'xemacs-21.5.2/lisp/autoload.el' Index: ././lisp/autoload.el --- ././lisp/autoload.el Fri Apr 13 03:21:11 2001 +++ ././lisp/autoload.el Sun Jun 10 19:42:21 2001 @@ -28,7 +28,7 @@ ;;; Commentary: -;; This code helps GNU Emacs maintainers keep the loaddefs.el file up to +;; This code helps XEmacs maintainers keep the loaddefs.el file up to ;; date. It interprets magic cookies of the form ";;;###autoload" in ;; lisp source files in various useful ways. To learn more, read the ;; source; if you're going to use this, you'd better be able to. @@ -468,7 +468,10 @@ This runs `update-file-autoloads' on each .el 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." +`generated-autoload-file' was rebound in that function. + +You don't really want to be calling this function. Try using +`update-autoload-files' instead." (interactive "DUpdate autoloads for directory: ") (setq dir (expand-file-name dir)) (let ((simple-dir (file-name-as-directory @@ -498,37 +501,6 @@ (unless noninteractive (save-buffer))))) -;;;###autoload -(defun batch-update-autoloads () - "Update the autoloads for the files or directories on the command line. -Runs `update-file-autoloads' on files and `update-directory-autoloads' -on directories. Must be used only with -batch, and kills Emacs on completion. -Each file will be processed even if an error occurred previously. -For example, invoke `xemacs -batch -f batch-update-autoloads *.el'. -The directory to which the auto-autoloads.el file must be the first parameter -on the command line." - (unless noninteractive - (error "batch-update-autoloads is to be used only with -batch")) - (let ((defdir default-directory) - (enable-local-eval nil)) ; Don't query in batch mode. - ;; (message "Updating autoloads in %s..." generated-autoload-file) - (dolist (arg command-line-args-left) - (setq arg (expand-file-name arg defdir)) - (cond - ((file-directory-p arg) - (message "Updating autoloads for directory %s..." arg) - (update-autoloads-from-directory arg)) - ((file-exists-p arg) - (update-file-autoloads arg)) - (t (error "No such file or directory: %s" arg)))) - (fixup-autoload-buffer (concat (if autoload-package-name - autoload-package-name - (file-name-nondirectory defdir)) - "-autoloads")) - (save-some-buffers t) - ;; (message "Done") - (kill-emacs 0))) - (defun fixup-autoload-buffer (sym) (save-excursion (set-buffer (find-file-noselect generated-autoload-file)) @@ -544,42 +516,84 @@ (defvar autoload-package-name nil) -;; #### this function is almost identical to, but subtly different from, -;; batch-update-autoloads. Both of these functions, unfortunately, are -;; used in various build scripts in xemacs-packages. They should be -;; merged. (However, it looks like no scripts pass more than one arg, -;; making merging easy.) --ben - ;;;###autoload -(defun batch-update-directory () - "Update the autoloads for the directories on the command line. -Runs `update-file-autoloads' on each file in the given directory, and must -be used only with -batch." - (unless noninteractive - (error "batch-update-directory is to be used only with -batch")) +(defun update-autoload-files (files-or-dirs &optional all-into-one-file force) + "Update all the autoload files associated with FILES-OR-DIRS. +FILES-OR-DIRS should be a list of files or directories to be +processed. If ALL-INTO-ONE-FILE is not given, the appropriate +autoload file for each file or directory (located in that directory, +or in the directory of the specified file) will be updated with the +directory's or file's autoloads, some additional fixup text will be +added, and the files will be saved. If ALL-INTO-ONE-FILE is given, +`generated-autoload-file' should be set to the name of the autoload +file into which the autoloads will be generated, and the autoloads +for all files and directories will go into that same file. + +If FORCE is non-nil, always save out the autoload files even if unchanged." (let ((defdir default-directory) (enable-local-eval nil)) ; Don't query in batch mode. - (dolist (arg command-line-args-left) + ;; (message "Updating autoloads in %s..." generated-autoload-file) + (dolist (arg files-or-dirs) (setq arg (expand-file-name arg defdir)) - (let ((generated-autoload-file (expand-file-name autoload-file-name - arg))) + (let ((generated-autoload-file + (if all-into-one-file generated-autoload-file + (expand-file-name autoload-file-name + (if (file-directory-p arg) arg + (file-name-directory arg)))))) (cond ((file-directory-p arg) - (message "Updating autoloads in directory %s..." arg) + (message "Updating autoloads for directory %s..." arg) (update-autoloads-from-directory arg)) + ((file-exists-p arg) + (update-file-autoloads arg)) (t (error "No such file or directory: %s" arg))) - (fixup-autoload-buffer (concat (if autoload-package-name - autoload-package-name - (file-name-nondirectory arg)) - "-autoloads")) - (save-some-buffers t)) - ;; (message "Done") - ;; (kill-emacs 0) - ) - (setq command-line-args-left nil))) + (when (not all-into-one-file) + (fixup-autoload-buffer (concat (if autoload-package-name + autoload-package-name + (file-name-nondirectory defdir)) + "-autoloads")) + (if force (set-buffer-modified-p + t (find-file-noselect generated-autoload-file)))))) + (when all-into-one-file + (fixup-autoload-buffer (concat (if autoload-package-name + autoload-package-name + (file-name-nondirectory defdir)) + "-autoloads")) + (if force (set-buffer-modified-p + t (find-file-noselect generated-autoload-file)))) + (save-some-buffers t) + ;; (message "Done") + )) -;; #### i created the following. this one and the last should be merged into -;; batch-update-autoloads and batch-update-one-directory. --ben +;; #### these entry points below are a big mess, especially the +;; first two. there don't seem to be very many packages that use the +;; first one (the "all-into-one-file" variety), and do they actually +;; rely on this functionality? --ben + +;;;###autoload +(defun batch-update-autoloads () + "Update the autoloads for the files or directories on the command line. +Runs `update-file-autoloads' on files and `update-directory-autoloads' +on directories. Must be used only with -batch, and kills Emacs on completion. +Each file will be processed even if an error occurred previously. +For example, invoke `xemacs -batch -f batch-update-autoloads *.el'. +The directory to which the auto-autoloads.el file must be the first parameter +on the command line." + (unless noninteractive + (error "batch-update-autoloads is to be used only with -batch")) + (update-autoload-files command-line-args-left t) + (kill-emacs 0)) + +;;;###autoload +(defun batch-update-directory () + "Update the autoloads for the directories on the command line. +Runs `update-file-autoloads' on each file in the given directory, and must +be used only with -batch." + (unless noninteractive + (error "batch-update-directory is to be used only with -batch")) + (update-autoload-files command-line-args-left) + ;; (kill-emacs 0) + (setq command-line-args-left nil)) ;;;###autoload (defun batch-update-one-directory () @@ -588,25 +602,21 @@ be used only with -batch." (unless noninteractive (error "batch-update-directory is to be used only with -batch")) - (let ((defdir default-directory) - (enable-local-eval nil)) ; Don't query in batch mode. - (let ((arg (car command-line-args-left))) - (setq command-line-args-left (cdr command-line-args-left)) - (setq arg (expand-file-name arg defdir)) - (let ((generated-autoload-file (expand-file-name autoload-file-name - arg))) - (cond - ((file-directory-p arg) - (message "Updating autoloads in directory %s..." arg) - (update-autoloads-from-directory arg)) - (t (error "No such file or directory: %s" arg))) - (fixup-autoload-buffer (concat (if autoload-package-name - autoload-package-name - (file-name-nondirectory arg)) - "-autoloads")) - (save-some-buffers t)) - ;; (message "Done") - ))) + (let ((arg (car command-line-args-left))) + (setq command-line-args-left (cdr command-line-args-left)) + (update-autoload-files (list arg)))) + +;;;###autoload +(defun batch-force-update-one-directory () + "Update the autoloads for a single directory on the command line. +Runs `update-file-autoloads' on each file in the given directory, and must +be used only with -batch. Always rewrite the autoloads file, even if +unchanged." + (unless noninteractive + (error "batch-update-directory is to be used only with -batch")) + (let ((arg (car command-line-args-left))) + (setq command-line-args-left (cdr command-line-args-left)) + (update-autoload-files (list arg) nil t))) (provide 'autoload) diff --text -u 'xemacs-21.5.1/lisp/behavior-defs.el' 'xemacs-21.5.2/lisp/behavior-defs.el' Index: ././lisp/behavior-defs.el --- ././lisp/behavior-defs.el Sat May 5 07:41:59 2001 +++ ././lisp/behavior-defs.el Wed May 23 18:59:39 2001 @@ -37,14 +37,220 @@ (require 'behavior) +(define-behavior 'scroll-in-place +"This package provides improved vertical scrolling commands for XEmacs. +These new commands offer the following features: + ++ When a scrolling command is executed, XEmacs tries to keep point as + close as possible to its original window position (window line and + column). This is what \"scroll in place\" means: point stays \"in place\" + within the window. (There are times when point must be moved from its + original window position in order to execute the scroll; see below.) + + The variable `scroll-in-place', which is true by default, determines + whether or not the standard XEmacs scrolling commands (`scroll-down', + `scroll-up', `scroll-other-window-down', and `scroll-other-window') use + the \"in place\" features listed here. When `scroll-in-place' is `nil' + the standard XEmacs scrolling commands essentially just call the + original versions of themselves. (Note that even when `scroll-in-place' + is `nil' the new versions of `scroll-down' and `scroll-up' have slightly + different behavior when a minibuffer window is the selected window. See + below.) + + It is possible to turn off (or turn on) \"in place\" scrolling for certain + buffers by making buffer-local bindings of the variable `scroll-in- + place' for those buffers. The variable `scroll-in-place' is not usually + buffer-local, but you can make it so if you desire. + ++ Because the improved scrolling commands keep point at its original + window position, these scrolling commands are \"reversible.\" The + `scroll-up' command undoes the effect of the immediately previous + `scroll-down' command (if any) and vice versa. In other words, if you + scroll up and then immediately scroll back down, the window config- + uration is restored to its exact original state. This allows you to + browse through a buffer more easily, as you can always get back to the + original configuration. + + Note, however, that the improved scrolling commands are guaranteed to be + reversible only if there are no intervening non-scrolling commands. + Also, if you give a prefix argument to a scrolling command (in order to + specify the number of lines to scroll by), previous scrolling commands + may no longer be reversible. More specifically, if the new prefix + argument has a different magnitude than the previous scrolling distance, + then any previous scrolling commands are not reversible. The new prefix + argument takes precedence. + + You might find it useful to think of the scrolling commands as forming + \"chains.\" A scrolling command either starts or continues a chain. By + issuing a non-scrolling command or by changing the number of lines to be + scrolled, you break the chain. (Note that simply changing the scrolling + direction won't break the chain; changing the absolute number of lines + to be scrolled is what breaks the chain.) Scrolling commands are + guaranteed to be reversible only within the current chain. Hopefully + that's clear enough. + ++ When a scrolling command is given a prefix argument (which specifies the + number of lines to scroll by), then that argument becomes the default + scrolling distance for all immediately subsequent scrolling commands. + This means that you can easily set the scrolling distance for a chain + of scrolling commands. Note that a new prefix argument or any non- + scrolling command breaks the chain (as described above), and any further + scrolling commands will use the usual defaults (or the prefix argument + you specify at that time, of course). + + However, there are cases in which one doesn't want the current scrolling + command to use the default scrolling distance that was set by the + previous scrolling command. For example, suppose that you had special + commands that scrolled one line up and one line down. When you invoke + one of these commands, the \"in place\" scrolling routines set the default + scrolling distance to be just one line. Now suppose that you use one of + your special commands and then immediately invoke `scroll-up' (`C-v'), + expecting it to scroll by a near windowful of text. You would be + disappointed --- because the previous command set the default scrolling + distance to be just one line, `scroll-up' just scrolls by one line. + + To solve this problem, \"scroll-in-place\" allows you to divide scrolling + commands into separate \"groups.\" Commands in a group can only form + chains with (and therefore, inherit defaults from) commands in the same + group. (Note that no command can be in more than one group.) If you + invoke a scrolling command that is not in the same group as that of the + immediately previous scrolling command, then the previous chain is + broken and you start a new chain --- with a new set of defaults. + + So to solve the problem described above, you could put your one-line + scrolling commands in their own group. Once that is done, the standard + scrolling commands will not form chains with your one-line scrolling + commands, and therefore will not use the default scrolling distance set + by those commands. Problem solved! + + By default, all \"in place\" scrolling commands are in a single group. If + you want to partition some commands into separate groups, you must do + that yourself *before* any \"in place\" commands are invoked. For more + information about grouping commands, see the documentation for the + variables `scroll-command-groups' and `scroll-default-command-group'. + ++ The improved scrolling commands will avoid displaying empty lines past + the end of the buffer when possible. In other words, just as you can't + see \"dead space\" before the beginning of the buffer text, the new + scrolling commands try to avoid displaying \"dead space\" past the end of + the buffer text. This behavior is somewhat configurable; see the + documentation for the variable `scroll-allow-blank-lines-past-eob'. + + Dead space will be displayed if it is necessary in order to make a + previous scrolling action reversible, however. + ++ If the scrolling commands cannot keep point at its initial window + position (because a buffer boundary is on screen and the window can't be + scrolled as far as necessary to keep point at the right place), point is + allowed to temporarily stray from its initial window position. That is, + point moves the correct number of window lines, even if it means that it + has to stray from its desired window position. This straying is undone + when (and if) the scrolling action is reversed. + ++ If a scrolling command tries to move point past a buffer boundary, point + is instead moved to the boundary (the beginning or the end of the buffer + as appropriate) and an appropriate message is displayed. This motion is + reversible, of course. + + However, if point was already at the buffer boundary when the scrolling + command was invoked, the command signals an appropriate error instead. + ++ When a minibuffer window is the selected window, the new versions of + `scroll-up' and `scroll-down' either scroll the window in the variable + `minibuffer-scroll-window' (which is usually the window of completions) + or the `next-window' if there is no `minibuffer-scroll-window'. This is + usually much more useful than scrolling the minibuffer itself. (Note + that this feature is available even when the variable `scroll-in-place' + is `nil'.) + ++ When a scrolling command is scrolling a window other than the selected + window, it will signal an appropriate buffer boundary error if the + window cannot be scrolled (because the appropriate buffer boundary is + already visible). This means that an error is signalled even in cases + that would be allowed (by \"straying\" point or by moving it to the buffer + boundary) if the window were selected. + + (If an error were not signalled in these cases, then there would be many + cases in which the last scroll in a particular direction would appear to + do nothing because only the point position would change --- the + displayed text would stay the same! To avoid these cases the scrolling + commands signal boundary errors \"prematurely\" when the window to be + scrolled is not selected.)" + :short-doc "Keep cursor on same line when scrolling" + :require 'scroll-in-place + :enable #'turn-on-scroll-in-place + :disable #'turn-off-scroll-in-place) + (define-behavior 'mouse-avoidance - "Mouse avoidance mode" - :title "Mouse Avoidance" +"For those who are annoyed by the mouse pointer obscuring text, +this mode moves the mouse pointer - either just a little out of +the way, or all the way to the corner of the frame. + +Customize `mouse-avoidance-mode' to one of the symbols `banish', +`exile', `jump', `animate', `cat-and-mouse', `proteus', or `none'. + +Effects of the different modes: + * banish: Move the mouse to the upper-right corner on any keypress. + * exile: Move the mouse to the corner only if the cursor gets too close, + and allow it to return once the cursor is out of the way. + * jump: If the cursor gets too close to the mouse, displace the mouse + a random distance & direction. + * animate: As `jump', but shows steps along the way for illusion of motion. + * cat-and-mouse: Same as `animate'. + * proteus: As `animate', but changes the shape of the mouse pointer too. + +Whenever the mouse is moved, the frame is also raised. + +\(see `mouse-avoidance-threshold' for definition of \"too close\", +and `mouse-avoidance-nudge-dist' and `mouse-avoidance-nudge-var' for +definition of \"random distance\".)" + :short-doc "Keep mouse away from cursor" :enable #'(lambda () (mouse-avoidance-mode 'animate)) :disable #'(lambda () (mouse-avoidance-mode 'none))) +(define-behavior 'jka-compr + "This package implements low-level support for reading, writing, +and loading compressed files. It hooks into the low-level file +I/O functions (including write-region and insert-file-contents) so +that they automatically compress or uncompress a file if the file +appears to need it (based on the extension of the file name). +Packages like Rmail, VM, GNUS, and Info should be able to work +with compressed files without modification." + :short-doc "Transparently handle compressed files" + :enable #'jka-compr-install + :disable #'jka-compr-uninstall) + +(define-behavior 'efs +"EFS is a system for transparent file-transfer between remote VMS, CMS, +MTS, MVS, Twenex, Explorer (the last two are Lisp machines), TOPS-20, +DOS (running the Distinct, Novell, FTP software, NCSA, Microsoft in both +unix and DOS mode, Super TCP, and Hellsoft FTP servers), Windows NT +\(running the Microsoft or Hummingbird ftp servers), Unix descriptive +listings (dl), KA9Q, OS/2 hosts using FTP. This means that you can edit, +copy and otherwise manipulate files on any machine you have access to +from within Emacs as if it were a local file. EFS works by introducing +an extended filename syntax, and overloading functions such as +`insert-file-contents' so that accessing a remote file causes +appropriate commands to be sent to an FTP process. + +The syntax to use is like this: + +\(for anonymous:) /ftp.xemacs.org:/pub/xemacs/ +\(for non-anonymous:) /ben@gwyn.tux.org:/etc/mail/xemacs/aliases-xemacs + +You can specify either a file or a directory (in the latter case, +Dired will be brought up). All operations in XEmacs on such files +should work exactly as on any other files, modulo the additional +slowness." + :short-doc "Transparent file access over FTP" + :require 'efs-auto + :enable #'ignore + ;; can't :disable + ) + + (define-behavior 'resize-minibuffer "When this behavior is enabled, the minibuffer is dynamically resized to contain the entire region of text put in it as you type. @@ -63,7 +269,7 @@ done. The variables `resize-minibuffer-frame-max-height' and `resize-minibuffer-frame-exactly' are analogous to their window counterparts." - :title "Resize Minibuffer Automatically" + :short-doc "Resize minibuffer automatically" :enable #'(lambda () (resize-minibuffer-mode 1)) :disable #'(lambda () @@ -79,7 +285,7 @@ name of the desired function via the minibuffer which offers completing read input. In addition, the name of the function before point is optionally displayed in the modeline." - :title "Function Menu" + :short-doc "Add a menu of defined functions" :require 'func-menu :enable #'(lambda () (add-hook 'find-file-hooks 'fume-add-menubar-entry) @@ -111,7 +317,7 @@ set up to do scrolling in the expected way. The actual way that the scrolling works can be controlled by `mwheel-scroll-amount' and `mwheel-follow-mouse'." - :title "Mouse Wheel Support" + :short-doc "Mouse wheel support for X Windows" :enable 'mwheel-install) (define-behavior 'recent-files @@ -263,7 +469,7 @@ file without merging in the new entries from the other Emacs process. This can be avoided by disabling the save on exit from the menu." - :title "Recent Files Menu" + :short-doc "`Recent Files' menu" :enable 'recent-files-initialize) (define-behavior 'filladapt @@ -281,7 +487,7 @@ from left margin by asterisks, dashes, and/or spaces, numbered examples, included text from USENET news articles, etc. are generally filled correctly with no fuss." - :title "Adaptive Filling" + :short-doc "Adaptive (smart) filling" :require 'filladapt :enable #'(lambda () (setq-default filladapt-mode t) diff --text -u 'xemacs-21.5.1/lisp/buff-menu.el' 'xemacs-21.5.2/lisp/buff-menu.el' Index: ././lisp/buff-menu.el --- ././lisp/buff-menu.el Fri Apr 13 03:21:11 2001 +++ ././lisp/buff-menu.el Mon May 21 06:36:06 2001 @@ -140,8 +140,8 @@ (setq revert-buffer-function 'Buffer-menu-revert-function) (setq truncate-lines t) (setq buffer-read-only t) - (make-local-variable 'mouse-track-click-hook) ; XEmacs - (add-hook 'mouse-track-click-hook 'Buffer-menu-maybe-mouse-select) ; XEmacs + (make-local-hook 'mouse-track-click-hook) ; XEmacs + (add-hook 'mouse-track-click-hook 'Buffer-menu-maybe-mouse-select t t) ; XEmacs (run-hooks 'buffer-menu-mode-hook)) (defun Buffer-menu-revert-function (ignore1 ignore2) diff --text -u 'xemacs-21.5.1/lisp/byte-optimize.el' 'xemacs-21.5.2/lisp/byte-optimize.el' Index: ././lisp/byte-optimize.el --- ././lisp/byte-optimize.el Fri Apr 13 03:21:11 2001 +++ ././lisp/byte-optimize.el Mon May 21 11:15:12 2001 @@ -704,7 +704,7 @@ ;;; is not a marker or if it appears in other arithmetic). ;;; But this degree of paranoia is normally unjustified, so optimize unless -;;; the user has done (declaim (safety 3)). Implemented in bytecomp.el. +;;; the user has done (declaim (optimize (safety 3))). See bytecomp.el. (defun byte-optimize-plus (form) (byte-optimize-predicate (byte-optimize-delay-constants-math form 1 '+))) @@ -855,13 +855,13 @@ (put 'max 'byte-optimizer 'byte-optimize-associative-math) (put 'min 'byte-optimizer 'byte-optimize-associative-math) -(put '= 'byte-optimizer 'byte-optimize-binary-predicate) (put 'eq 'byte-optimizer 'byte-optimize-binary-predicate) (put 'eql 'byte-optimizer 'byte-optimize-binary-predicate) (put 'equal 'byte-optimizer 'byte-optimize-binary-predicate) (put 'string= 'byte-optimizer 'byte-optimize-binary-predicate) (put 'string-equal 'byte-optimizer 'byte-optimize-binary-predicate) +(put '= 'byte-optimizer 'byte-optimize-predicate) (put '< 'byte-optimizer 'byte-optimize-predicate) (put '> 'byte-optimizer 'byte-optimize-predicate) (put '<= 'byte-optimizer 'byte-optimize-predicate) diff --text -u 'xemacs-21.5.1/lisp/bytecomp.el' 'xemacs-21.5.2/lisp/bytecomp.el' Index: ././lisp/bytecomp.el --- ././lisp/bytecomp.el Sat May 5 19:50:31 2001 +++ ././lisp/bytecomp.el Sun Jun 10 19:42:21 2001 @@ -184,7 +184,7 @@ ;;; o You can add this to /etc/magic to make file(1) recognize the files ;;; generated by this compiler: ;;; -;;; 0 string ;ELC GNU Emacs Lisp compiled file, +;;; 0 string ;ELC XEmacs Lisp compiled file, ;;; >4 byte x version %d ;;; ;;; TO DO: @@ -1776,7 +1776,7 @@ ;; say "Binary files differ" instead of actually doing a diff of two .elc ;; files. An extra benefit is that you can add this to /etc/magic: ;; - ;; 0 string ;ELC GNU Emacs Lisp compiled file, + ;; 0 string ;ELC XEmacs Lisp compiled file, ;; >4 byte x version %d ;; (insert @@ -3205,7 +3205,9 @@ (defun byte-compile-arithcompare (form) (case (length (cdr form)) (0 (byte-compile-subr-wrong-args form "1 or more")) - (1 (byte-compile-constant t)) + (1 (if byte-compile-delete-errors + (byte-compile-constant t) + (byte-compile-normal-call form))) (2 (byte-compile-two-args form)) (t (byte-compile-normal-call form)))) diff --text -u 'xemacs-21.5.1/lisp/cl-compat.el' 'xemacs-21.5.2/lisp/cl-compat.el' Index: ././lisp/cl-compat.el --- ././lisp/cl-compat.el Fri Apr 13 03:21:12 2001 +++ ././lisp/cl-compat.el Sun Jun 10 19:42:21 2001 @@ -1,4 +1,4 @@ -;;; cl-compat.el --- Common Lisp extensions for GNU Emacs Lisp (compatibility) +;;; cl-compat.el --- Common Lisp extensions for XEmacs Lisp (compatibility) ;; Copyright (C) 1993 Free Software Foundation, Inc. diff --text -u 'xemacs-21.5.1/lisp/cl-extra.el' 'xemacs-21.5.2/lisp/cl-extra.el' Index: ././lisp/cl-extra.el --- ././lisp/cl-extra.el Sat May 5 19:50:35 2001 +++ ././lisp/cl-extra.el Sun Jun 10 19:42:21 2001 @@ -1,4 +1,4 @@ -;;; cl-extra.el --- Common Lisp extensions for GNU Emacs Lisp (part two) +;;; cl-extra.el --- Common Lisp extensions for XEmacs Lisp (part two) ;; Copyright (C) 1993 Free Software Foundation, Inc. diff --text -u 'xemacs-21.5.1/lisp/cl-macs.el' 'xemacs-21.5.2/lisp/cl-macs.el' Index: ././lisp/cl-macs.el --- ././lisp/cl-macs.el Fri Apr 13 03:21:13 2001 +++ ././lisp/cl-macs.el Sun Jun 10 19:42:22 2001 @@ -1,4 +1,4 @@ -;;; cl-macs.el --- Common Lisp extensions for GNU Emacs Lisp (part four) +;;; cl-macs.el --- Common Lisp extensions for XEmacs Lisp (part four) ;; Copyright (C) 1993 Free Software Foundation, Inc. diff --text -u 'xemacs-21.5.1/lisp/cl-seq.el' 'xemacs-21.5.2/lisp/cl-seq.el' Index: ././lisp/cl-seq.el --- ././lisp/cl-seq.el Fri Apr 13 03:21:13 2001 +++ ././lisp/cl-seq.el Sun Jun 10 19:42:22 2001 @@ -1,4 +1,4 @@ -;;; cl-seq.el --- Common Lisp extensions for GNU Emacs Lisp (part three) +;;; cl-seq.el --- Common Lisp extensions for XEmacs Lisp (part three) ;; Copyright (C) 1993 Free Software Foundation, Inc. diff --text -u 'xemacs-21.5.1/lisp/cl.el' 'xemacs-21.5.2/lisp/cl.el' Index: ././lisp/cl.el --- ././lisp/cl.el Fri Apr 13 03:21:13 2001 +++ ././lisp/cl.el Sun Jun 10 19:42:22 2001 @@ -1,4 +1,4 @@ -;;; cl.el --- Common Lisp extensions for GNU Emacs Lisp +;;; cl.el --- Common Lisp extensions for XEmacs Lisp ;; Copyright (C) 1993, 1997 Free Software Foundation, Inc. diff --text -u 'xemacs-21.5.1/lisp/cmdloop.el' 'xemacs-21.5.2/lisp/cmdloop.el' Index: ././lisp/cmdloop.el --- ././lisp/cmdloop.el Fri Apr 13 03:21:13 2001 +++ ././lisp/cmdloop.el Sun Jun 10 19:42:22 2001 @@ -306,7 +306,7 @@ (setq this-command (read-command ;; Note: this has the hard-wired ;; "C-u" and "M-x" string bug in common - ;; with all GNU Emacs's. + ;; with all Emacs's. ;; (i.e. it prints C-u and M-x regardless of ;; whether some other keys were actually bound ;; to `execute-extended-command' and diff --text -u 'xemacs-21.5.1/lisp/coding.el' 'xemacs-21.5.2/lisp/coding.el' Index: ././lisp/coding.el --- ././lisp/coding.el Sat May 5 19:50:35 2001 +++ ././lisp/coding.el Fri Jun 1 15:30:08 2001 @@ -54,7 +54,7 @@ TARGET-TYPE specifies which of them to modify. If it is `file', it affects `file-coding-system-alist' (which see). If it is `process', it affects `process-coding-system-alist' (which see). -If it is `network', it affects `network-codign-system-alist' (which see). +If it is `network', it affects `network-coding-system-alist' (which see). REGEXP is a regular expression matching a target of I/O operation. The target is a file name if TARGET-TYPE is `file', a program name if diff --text -u 'xemacs-21.5.1/lisp/cus-edit.el' 'xemacs-21.5.2/lisp/cus-edit.el' Index: ././lisp/cus-edit.el --- ././lisp/cus-edit.el Mon Apr 30 23:07:47 2001 +++ ././lisp/cus-edit.el Sun Jun 10 19:42:22 2001 @@ -232,7 +232,7 @@ :group 'customize) (defgroup alloc nil - "Storage allocation and gc for GNU Emacs Lisp interpreter." + "Storage allocation and gc for XEmacs Lisp interpreter." :tag "Storage Allocation" :group 'internal) @@ -2351,6 +2351,10 @@ :sibling-args (:help-echo "\ The X11 Window System") x) + (const :format "GTK " + :sibling-args (:help-echo "\ +The GTK Window System") + gtk) (const :format "PM " :sibling-args (:help-echo "\ OS/2 Presentation Manager") diff --text -u 'xemacs-21.5.1/lisp/derived.el' 'xemacs-21.5.2/lisp/derived.el' Index: ././lisp/derived.el --- ././lisp/derived.el Fri Apr 13 03:21:16 2001 +++ ././lisp/derived.el Sun Jun 10 19:42:22 2001 @@ -29,7 +29,7 @@ ;; This file is dumped with XEmacs. -;; GNU Emacs is already, in a sense, object oriented -- each object +;; XEmacs is already, in a sense, object oriented -- each object ;; (buffer) belongs to a class (major mode), and that class defines ;; the relationship between messages (input events) and methods ;; (commands) by means of a keymap. diff --text -u 'xemacs-21.5.1/lisp/dialog-gtk.el' 'xemacs-21.5.2/lisp/dialog-gtk.el' Index: ././lisp/dialog-gtk.el --- ././lisp/dialog-gtk.el Sat May 5 19:50:35 2001 +++ ././lisp/dialog-gtk.el Fri Jun 22 10:49:59 2001 @@ -62,7 +62,8 @@ ;; :no-read-only-return t/nil (let ((initial-filename (plist-get keys :initial-filename)) (clicked-ok nil) - (widget nil)) + (widget nil) + filename) (setq widget (gtk-file-dialog-new :directory (plist-get keys :directory) :callback `(lambda (f) @@ -82,7 +83,8 @@ (gtk-widget-show-all widget) (gtk-main) (if (not clicked-ok) - (signal 'quit nil)))) + (signal 'quit nil) + filename))) (defalias 'popup-builtin-save-as-dialog 'popup-builtin-open-dialog) diff --text -u 'xemacs-21.5.1/lisp/dialog.el' 'xemacs-21.5.2/lisp/dialog.el' Index: ././lisp/dialog.el --- ././lisp/dialog.el Mon May 7 16:50:40 2001 +++ ././lisp/dialog.el Sun Jul 15 17:18:59 2001 @@ -290,7 +290,7 @@ name can change as a result of selecting a different printer device. If a device is specified, then changes are stored into the settings object currently selected into that printer. If a settings object is supplied, -then changes are recorded into it, and, it it is selected into a +then changes are recorded into it, and, it is selected into a printer, then changes are propagated to that printer too. @@ -338,7 +338,7 @@ Connection name can change as a result of selecting a different printer device. If a device is specified, then changes are stored into the settings object currently selected into that printer. If a settings -object is supplied, then changes are recorded into it, and, it it is +object is supplied, then changes are recorded into it, and, it is selected into a printer, then changes are propagated to that printer too. diff --text -u 'xemacs-21.5.1/lisp/dragdrop.el' 'xemacs-21.5.2/lisp/dragdrop.el' Index: ././lisp/dragdrop.el --- ././lisp/dragdrop.el Sat May 5 19:50:36 2001 +++ ././lisp/dragdrop.el Mon May 14 14:05:14 2001 @@ -229,10 +229,12 @@ "*{EXPERIMENTAL} Default handler for dropped URL data. Finds files and URLs. Returns nil if object does not contain URL data." (cond ((eq (car object) 'dragdrop-URL) - (let ((data (cdr object)) - (frame (event-channel event)) - (x pop-up-windows) - (window (event-window event))) + (let* ((data (cdr object)) + (frame (event-channel event)) + (x pop-up-windows) + (window (or (event-window event) + (frame-selected-window frame) + (frame-highest-window frame 0)))) (setq pop-up-windows nil) (while (not (eq data ())) (cond ((dragdrop-is-some-url "file" (car data)) diff --text -u 'xemacs-21.5.1/lisp/etags.el' 'xemacs-21.5.2/lisp/etags.el' Index: ././lisp/etags.el --- ././lisp/etags.el Sat May 5 19:50:38 2001 +++ ././lisp/etags.el Thu May 31 21:45:28 2001 @@ -193,7 +193,15 @@ ;; Parent directories (when tags-check-parent-directories-for-tag-files (let ((cur default-directory)) - (while (file-exists-p (setq cur (expand-file-name ".." cur))) + ;; Fuck! Shouldn't there be a more obvious portable way + ;; to determine if we're the root? Shouldn't we have a + ;; proper path manipulation API? Do you know how many + ;; god-damn bugs are lurking out there because of Unix/ + ;; Windows differences? And how much code is littered + ;; with stuff such as 10 lines down from here? + (while (not (and (equal (file-name-as-directory cur) cur) + (equal (directory-file-name cur) cur))) + (setq cur (expand-file-name ".." cur)) (let ((parent-tag-file (expand-file-name "TAGS" cur))) (when (file-readable-p parent-tag-file) (push parent-tag-file result)))))) diff --text -u 'xemacs-21.5.1/lisp/files.el' 'xemacs-21.5.2/lisp/files.el' Index: ././lisp/files.el --- ././lisp/files.el Sat May 5 19:50:43 2001 +++ ././lisp/files.el Sun Jun 10 19:42:23 2001 @@ -920,9 +920,10 @@ (setq filename (abbreviate-file-name (expand-file-name filename))) (if (file-directory-p filename) (if (and (fboundp 'dired-noselect) find-file-run-dired) - (dired-noselect (if find-file-use-truenames - (abbreviate-file-name (file-truename filename)) - filename)) + (declare-fboundp + (dired-noselect (if find-file-use-truenames + (abbreviate-file-name (file-truename filename)) + filename))) (error "%s is a directory" filename)) (let* ((buf (get-file-buffer filename)) (truename (abbreviate-file-name (file-truename filename))) @@ -2471,38 +2472,43 @@ ;; XEmacs - do not use queried flag (defun save-some-buffers-1 (arg exiting switch-buffer) (let* ((switched nil) + (last-buffer nil) (files-done (map-y-or-n-p (lambda (buffer) - (and (buffer-modified-p buffer) - (not (buffer-base-buffer buffer)) - ;; XEmacs addition: - (not (symbol-value-in-buffer 'save-buffers-skip buffer)) - (or - (buffer-file-name buffer) - (and exiting - (progn - (set-buffer buffer) - (and buffer-offer-save (> (buffer-size) 0))))) - (if arg - t - ;; #### We should provide a per-buffer means to - ;; disable the switching. For instance, you might - ;; want to turn it off for buffers the contents of - ;; which is meaningless to humans, such as - ;; `.newsrc.eld'. - (when switch-buffer - (unless (one-window-p) - (delete-other-windows)) - (setq switched t) - ;; #### Consider using `display-buffer' here for 21.1! - ;;(display-buffer buffer nil (selected-frame))) - (switch-to-buffer buffer t)) - (if (buffer-file-name buffer) - (format "Save file %s? " - (buffer-file-name buffer)) - (format "Save buffer %s? " - (buffer-name buffer)))))) + (prog1 + (and (buffer-modified-p buffer) + (not (buffer-base-buffer buffer)) + ;; XEmacs addition: + (not (symbol-value-in-buffer 'save-buffers-skip buffer)) + (or + (buffer-file-name buffer) + (and exiting + (progn + (set-buffer buffer) + (and buffer-offer-save (> (buffer-size) 0))))) + (if arg + t + ;; #### We should provide a per-buffer means to + ;; disable the switching. For instance, you might + ;; want to turn it off for buffers the contents of + ;; which is meaningless to humans, such as + ;; `.newsrc.eld'. + (when (and switch-buffer + ;; map-y-or-n-p is displaying help + (not (eq last-buffer buffer))) + (unless (one-window-p) + (delete-other-windows)) + (setq switched t) + ;; #### Consider using `display-buffer' here for 21.1! + ;;(display-buffer buffer nil (selected-frame))) + (switch-to-buffer buffer t)) + (if (buffer-file-name buffer) + (format "Save file %s? " + (buffer-file-name buffer)) + (format "Save buffer %s? " + (buffer-name buffer))))) + (setq last-buffer buffer))) (lambda (buffer) (set-buffer buffer) (condition-case () @@ -2883,14 +2889,14 @@ \\[recover-session]." (interactive) ;; Get the name of the session file to recover from. - (let ((file (dired-get-filename)) + (let ((file (declare-fboundp (dired-get-filename))) files (buffer (get-buffer-create " *recover*"))) ;; #### dired-do-flagged-delete in FSF. ;; This version is for ange-ftp ;;(dired-do-deletions t) ;; This version is for efs - (dired-expunge-deletions) + (declare-fboundp (dired-expunge-deletions)) (unwind-protect (save-excursion ;; Read in the auto-save-list file. @@ -3160,7 +3166,8 @@ ;; my new naming scheme. --ben ((and (fboundp 'mswindows-insert-directory) (eq system-type 'windows-nt)) - (mswindows-insert-directory file switches wildcard full-directory-p)) + (declare-fboundp (mswindows-insert-directory + file switches wildcard full-directory-p))) (t (if wildcard ;; Run ls in the directory of the file pattern we asked for. diff --text -u 'xemacs-21.5.1/lisp/find-paths.el' 'xemacs-21.5.2/lisp/find-paths.el' Index: ././lisp/find-paths.el --- ././lisp/find-paths.el Fri Apr 13 03:21:18 2001 +++ ././lisp/find-paths.el Sat May 12 20:16:18 2001 @@ -69,7 +69,8 @@ (directory-files directory nil "^[^.-]"))) (reverse-dirs '())) (while raw-entries - (if (null (string-match exclude-regexp (car raw-entries))) + (if (not (and exclude-regexp + (string-match exclude-regexp (car raw-entries)))) (setq reverse-dirs (cons (expand-file-name (car raw-entries) directory) reverse-dirs))) diff --text -u 'xemacs-21.5.1/lisp/font-lock.el' 'xemacs-21.5.2/lisp/font-lock.el' Index: ././lisp/font-lock.el --- ././lisp/font-lock.el Sat May 5 19:50:47 2001 +++ ././lisp/font-lock.el Thu May 24 20:01:54 2001 @@ -904,15 +904,12 @@ font-lock-maximum-size (cdr (or (assq major-mode font-lock-maximum-size) (assq t font-lock-maximum-size)))))) - ;; Font-lock mode will refuse to turn itself on if in batch mode, or if - ;; the current buffer is "invisible". The latter is because packages - ;; sometimes put their temporary buffers into some particular major mode - ;; to get syntax tables and variables and whatnot, but we don't want the - ;; fact that the user has font-lock-mode on a mode hook to slow these - ;; things down. - (if (or noninteractive (eq (aref (buffer-name) 0) ?\ )) - (setq on-p nil)) - (if (equal (buffer-name) " *Compiler Input*") ; hack for bytecomp... + ;; Font-lock mode will refuse to turn itself on if in batch mode + ;; to avoid potential (probably not actual, though) slowdown. We + ;; used to try to "be nice" by avoiding doing this in temporary + ;; buffers. But with the deferral code we don't need this, and it + ;; definitely screws some things up. + (if (noninteractive) (setq on-p nil)) (cond (on-p (make-local-hook 'after-change-functions) @@ -1595,10 +1592,12 @@ START should be at the beginning of a line." (let ((loudly (and font-lock-verbose (>= (- end start) font-lock-message-threshold)))) + ;; If `font-lock-keywords' is not compiled, compile it. + (unless (eq (car-safe font-lock-keywords) t) + (setq font-lock-keywords (font-lock-compile-keywords + font-lock-keywords))) (let* ((case-fold-search font-lock-keywords-case-fold-search) - (keywords (cdr (if (eq (car-safe font-lock-keywords) t) - font-lock-keywords - (font-lock-compile-keywords)))) + (keywords (cdr font-lock-keywords)) (bufname (buffer-name)) (progress 5) (old-progress 5) (iter 0) @@ -1672,14 +1671,12 @@ ;; Various functions. -(defun font-lock-compile-keywords (&optional keywords) +(defun font-lock-compile-keywords (keywords) ;; Compile `font-lock-keywords' into the form (t KEYWORD ...) where KEYWORD ;; is the (MATCHER HIGHLIGHT ...) shown in the variable's doc string. - (let ((keywords (or keywords font-lock-keywords))) - (setq font-lock-keywords - (if (eq (car-safe keywords) t) - keywords - (cons t (mapcar 'font-lock-compile-keyword keywords)))))) + (if (eq (car-safe keywords) t) + keywords + (cons t (mapcar 'font-lock-compile-keyword keywords)))) (defun font-lock-compile-keyword (keyword) (cond ((nlistp keyword) ; Just MATCHER diff --text -u 'xemacs-21.5.1/lisp/font.el' 'xemacs-21.5.2/lisp/font.el' Index: ././lisp/font.el --- ././lisp/font.el Sat May 5 19:50:48 2001 +++ ././lisp/font.el Tue Jun 5 01:59:53 2001 @@ -33,7 +33,9 @@ (globally-declare-fboundp '(x-list-fonts mswindows-list-fonts ns-list-fonts internal-facep fontsetp get-font-info - get-fontset-info mswindows-define-rgb-color cancel-function-timers)) + get-fontset-info mswindows-define-rgb-color cancel-function-timers + ;; #### perhaps we should rewrite font-warn to avoid the warning + font-warn)) (globally-declare-boundp '(global-face-data @@ -103,6 +105,7 @@ (defconst font-window-system-mappings '((x . (x-font-create-name x-font-create-object)) + (gtk . (x-font-create-name x-font-create-object)) (ns . (ns-font-create-name ns-font-create-object)) (mswindows . (mswindows-font-create-name mswindows-font-create-object)) (pm . (x-font-create-name x-font-create-object)) ; Change? FIXME @@ -222,20 +225,19 @@ (format "font-%s-mask" attr))))))) ))) -(let ((mask 0)) - (define-new-mask bold (setq mask (1+ mask))) - (define-new-mask italic (setq mask (1+ mask))) - (define-new-mask oblique (setq mask (1+ mask))) - (define-new-mask dim (setq mask (1+ mask))) - (define-new-mask underline (setq mask (1+ mask))) - (define-new-mask overline (setq mask (1+ mask))) - (define-new-mask linethrough (setq mask (1+ mask))) - (define-new-mask strikethru (setq mask (1+ mask))) - (define-new-mask reverse (setq mask (1+ mask))) - (define-new-mask blink (setq mask (1+ mask))) - (define-new-mask smallcaps (setq mask (1+ mask))) - (define-new-mask bigcaps (setq mask (1+ mask))) - (define-new-mask dropcaps (setq mask (1+ mask)))) +(define-new-mask bold 1) +(define-new-mask italic 2) +(define-new-mask oblique 3) +(define-new-mask dim 4) +(define-new-mask underline 5) +(define-new-mask overline 6) +(define-new-mask linethrough 7) +(define-new-mask strikethru 8) +(define-new-mask reverse 9) +(define-new-mask blink 10) +(define-new-mask smallcaps 11) +(define-new-mask bigcaps 12) +(define-new-mask dropcaps 13) (defvar font-caps-display-table (let ((table (make-display-table)) diff --text -u 'xemacs-21.5.1/lisp/gpm.el' 'xemacs-21.5.2/lisp/gpm.el' Index: ././lisp/gpm.el --- ././lisp/gpm.el Sat May 5 19:50:51 2001 +++ ././lisp/gpm.el Sun Jun 10 19:42:23 2001 @@ -18,7 +18,7 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the +;; 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. diff --text -u 'xemacs-21.5.1/lisp/gtk-marshal.el' 'xemacs-21.5.2/lisp/gtk-marshal.el' Index: ././lisp/gtk-marshal.el --- ././lisp/gtk-marshal.el Fri Apr 13 03:21:24 2001 +++ ././lisp/gtk-marshal.el Tue Jun 5 01:59:53 2001 @@ -71,10 +71,12 @@ (insert "}\n"))) (save-excursion - (find-file "../../src/emacs-marshals.c") + (find-file "../src/emacs-marshals.c") (erase-buffer) (setq defined-marshallers nil) + (insert "/* This file was automatically generated by ../lisp/gtk-marshal.el */\n" + "/* DO NOT EDIT BY HAND!!! */\n") (insert "#define GTK_VALUE_ARRAY(x) GTK_VALUE_POINTER(x)\n\n") (insert "#define GTK_VALUE_LIST(x) GTK_VALUE_POINTER(x)\n\n") @@ -255,13 +257,43 @@ (insert "\n #include \"hash.h\" -static c_hashtable marshaller_hashtable; +static int +our_string_eq (const void *st1, const void *st2) +{ + if (!st1) + return st2 ? 0 : 1; + else if (!st2) + return 0; + else + return !strcmp ( (const char *) st1, (const char *) st2); +} + +unsigned long +our_string_hash (const void *xv) +{ + unsigned int h = 0; + unsigned const char *x = (unsigned const char *) xv; + + if (!x) return 0; + + while (*x) + { + unsigned int g; + h = (h << 4) + *x++; + if ((g = h & 0xf0000000) != 0) + h = (h ^ (g >> 24)) ^ g; + } + + return h; +} + +static struct hash_table *marshaller_hashtable; static void initialize_marshaller_storage (void) { if (!marshaller_hashtable) { - marshaller_hashtable = make_strings_hashtable (100); + marshaller_hashtable = make_general_hash_table (100, our_string_hash, our_string_eq); ") (mapc (lambda (x) @@ -276,7 +308,7 @@ void *fn = NULL; initialize_marshaller_storage (); - if (gethash (func_name, marshaller_hashtable, (CONST void **)&fn)) + if (gethash (func_name, marshaller_hashtable, (const void **)&fn)) { return (fn); } diff --text -u 'xemacs-21.5.1/lisp/gtk-widget-accessors.el' 'xemacs-21.5.2/lisp/gtk-widget-accessors.el' Index: ././lisp/gtk-widget-accessors.el --- ././lisp/gtk-widget-accessors.el Sat May 5 19:50:53 2001 +++ ././lisp/gtk-widget-accessors.el Fri Jun 22 10:49:59 2001 @@ -66,7 +66,7 @@ "\n" (format "\tif (!GTK_IS_%s (XGTK_OBJECT (obj)->object))\n" wrapper) "\t{\n" - (format "\t\tsignal_simple_error (\"Object is not a %s\", obj);\n" gtk-class) + (format "\t\twtaerror (\"Object is not a %s\", obj);\n" gtk-class) "\t};\n" "\n" (format "\tthe_obj = GTK_%s (XGTK_OBJECT (obj)->object);\n" wrapper) @@ -107,10 +107,13 @@ (defun import-widget-accessors (file syms-function-name &rest description) "Import multiple widgets, and emit a suitable vars_of_foo() function for them.\n" + (declare (special c-mode-common-hook c-mode-hook)) (let ((c-mode-common-hook nil) (c-mode-hook nil)) (find-file file)) (erase-buffer) + (insert "/* This file was automatically generated by ../lisp/gtk-widget-accessors.el */\n" + "/* DO NOT EDIT BY HAND!!! */\n") (let ((c-funcs nil)) (while description (setq c-funcs (nconc (define-widget-accessors @@ -132,7 +135,7 @@ (funcall sym)))) (import-widget-accessors - "../../src/emacs-widget-accessors.c" + "../src/emacs-widget-accessors.c" "syms_of_widget_accessors " 'GtkAdjustment "ADJUSTMENT" "adjustment" diff --text -u 'xemacs-21.5.1/lisp/help.el' 'xemacs-21.5.2/lisp/help.el' Index: ././lisp/help.el --- ././lisp/help.el Sat May 5 19:50:58 2001 +++ ././lisp/help.el Fri Jun 22 10:49:59 2001 @@ -1169,6 +1169,7 @@ (documentation sym t)))) (when (or var fun) (let ((ex (make-extent b e))) + (require 'hyper-apropos) (set-extent-property ex 'mouse-face 'highlight) (set-extent-property ex 'help-symbol sym) (set-extent-property ex 'face 'hyper-apropos-hyperlink) diff --text -u 'xemacs-21.5.1/lisp/info.el' 'xemacs-21.5.2/lisp/info.el' Index: ././lisp/info.el --- ././lisp/info.el Sat May 5 19:51:02 2001 +++ ././lisp/info.el Mon May 21 06:36:07 2001 @@ -3018,9 +3018,9 @@ (make-local-variable 'Info-index-alternatives) (make-local-variable 'Info-history) ;; Faces are now defined by `defface'... - (make-local-variable 'mouse-track-click-hook) - (add-hook 'mouse-track-click-hook 'Info-maybe-follow-clicked-node) - (add-hook 'mouse-track-click-hook 'Info-mouse-track-double-click-hook) + (make-local-hook 'mouse-track-click-hook) + (add-hook 'mouse-track-click-hook 'Info-maybe-follow-clicked-node t t) + (add-hook 'mouse-track-click-hook 'Info-mouse-track-double-click-hook t t) ;; #### The console-on-window-system-p check is to allow this to ;; work on tty's. The real problem here is that featurep really ;; needs to have some device/console domain knowledge added to it. diff --text -u 'xemacs-21.5.1/lisp/itimer.el' 'xemacs-21.5.2/lisp/itimer.el' Index: ././lisp/itimer.el --- ././lisp/itimer.el Fri Apr 13 03:21:28 2001 +++ ././lisp/itimer.el Sun Jun 10 19:42:23 2001 @@ -1,4 +1,4 @@ -;;; Interval timers for GNU Emacs +;;; Interval timers for XEmacs ;;; Copyright (C) 1988, 1991, 1993, 1997, 1998 Kyle E. Jones ;;; ;;; This program is free software; you can redistribute it and/or modify diff --text -u 'xemacs-21.5.1/lisp/keydefs.el' 'xemacs-21.5.2/lisp/keydefs.el' Index: ././lisp/keydefs.el --- ././lisp/keydefs.el Mon Apr 30 23:07:52 2001 +++ ././lisp/keydefs.el Fri Jun 22 10:49:59 2001 @@ -156,6 +156,10 @@ (define-key global-map (vector help-char) 'help-command) (define-key global-map 'help 'help-command) (define-key global-map 'f1 'help-command) +;; This is a failsafe mechanism, esp. on TTY's, in case the terminal is +;; somewhat broken and f1 keys can't work, and backspace is redefined to +;; do backspace. +(define-key global-map '(meta ??) 'help-command) ;; FSFmacs indent.el diff --text -u 'xemacs-21.5.1/lisp/lib-complete.el' 'xemacs-21.5.2/lisp/lib-complete.el' Index: ././lisp/lib-complete.el --- ././lisp/lib-complete.el Sat May 5 19:51:06 2001 +++ ././lisp/lib-complete.el Sat May 12 20:16:19 2001 @@ -295,6 +295,21 @@ ;;=== find-library with completion (Author: Bob Weiner) =================== +(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. + +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/\"))) +" + :type '(repeat directory) + :group 'find-function) + (defun find-library (library &optional codesys display-function) "Find and display in the current window the source for the Elisp LIBRARY. LIBRARY should be a name without any path information and may include or omit @@ -302,14 +317,17 @@ specifies the coding system to use when decoding the file. Interactively, with a prefix argument, this prompts for the coding system. Optional third argument DISPLAY-FUNCTION must take two arguments, the filename to display -and CODESYS. The default for DISPLAY-FUNCTION is `find-file'." +and CODESYS. The default for DISPLAY-FUNCTION is `find-file'. + +This function searches `find-library-source-path' to find the library; +if this is nil (the default), then `load-path' is searched." (interactive (list (read-library-name "Find library: ") (if current-prefix-arg (read-coding-system "Coding System: ")))) (let ((path (if (or (null library) (equal library "")) nil - (locate-file library load-path + (locate-file library (or find-library-source-path load-path) ;; decompression doesn't work with Mule -slb (if (featurep 'mule) ":.el:.elc" diff --text -u 'xemacs-21.5.1/lisp/lisp-mode.el' 'xemacs-21.5.2/lisp/lisp-mode.el' Index: ././lisp/lisp-mode.el --- ././lisp/lisp-mode.el Sat May 5 19:51:07 2001 +++ ././lisp/lisp-mode.el Sun Jul 15 17:18:59 2001 @@ -332,7 +332,7 @@ ) (defun lisp-mode () - "Major mode for editing Lisp code for Lisps other than GNU Emacs Lisp. + "Major mode for editing Lisp code for Lisps other than Emacs Lisp. Commands: Delete converts tabs to spaces as it moves back. Blank lines separate paragraphs. Semicolons start comments. @@ -677,7 +677,7 @@ (parse-partial-sexp (point) calculate-lisp-indent-last-sexp 0 t) (if (and (elt state 2) (not (looking-at "\\sw\\|\\s_"))) - ;; car of form doesn't seem to be a a symbol + ;; car of form doesn't seem to be a symbol (progn (if (not (> (save-excursion (forward-line 1) (point)) calculate-lisp-indent-last-sexp)) diff --text -u 'xemacs-21.5.1/lisp/mouse.el' 'xemacs-21.5.2/lisp/mouse.el' Index: ././lisp/mouse.el --- ././lisp/mouse.el Sat May 5 19:51:15 2001 +++ ././lisp/mouse.el Sun May 20 10:17:09 2001 @@ -532,7 +532,7 @@ is initiated; otherwise the gesture is considered to be a click. See `mouse-track'. -The value should be either a number of a form to be evaluated to +The value should be either a number or a form to be evaluated to produce a number.") (defvar mouse-track-y-threshold '(face-height 'default) @@ -570,7 +570,9 @@ event ex) t))) -(defun mouse-track-run-hook (hook event &rest args) +(defvar Mouse-track-gensym (gensym)) + +(defun mouse-track-run-hook (hook override event &rest args) ;; ugh, can't use run-hook-with-args-until-success because we have ;; to get the value using symbol-value-in-buffer. Doing a ;; save-excursion/set-buffer is wrong because the hook might want to @@ -578,33 +580,40 @@ ;; the hook might not want to change the buffer. ;; #### What we need here is a Lisp interface to ;; run_hook_with_args_in_buffer. Here is a poor man's version. - (let ((buffer (event-buffer event))) - (and mouse-grabbed-buffer (setq buffer mouse-grabbed-buffer)) - (when buffer - (let ((value (symbol-value-in-buffer hook buffer nil))) - (if (and (listp value) (not (eq (car value) 'lambda))) - ;; List of functions. - (let (retval) - (while (and value (null retval)) - ;; Found `t': should process default value. We could - ;; splice it into the buffer-local value, but that - ;; would cons, which is not a good thing for - ;; mouse-track hooks. - (if (eq (car value) t) - (let ((global (default-value hook))) - (if (and (listp global) (not (eq (car global) 'lambda))) - ;; List of functions. - (while (and global - (null (setq retval - (apply (car global) event args)))) - (pop global)) - ;; lambda - (setq retval (apply (car global) event args)))) - (setq retval (apply (car value) event args))) - (pop value)) - retval) - ;; lambda - (apply value event args)))))) + (let ((overridden (plist-get override hook Mouse-track-gensym))) + (if (not (eq overridden Mouse-track-gensym)) + (if (and (listp overridden) (not (eq (car overridden) 'lambda))) + (some #'(lambda (val) (apply val event args)) overridden) + (apply overridden event args)) + (let ((buffer (event-buffer event))) + (and mouse-grabbed-buffer (setq buffer mouse-grabbed-buffer)) + (when buffer + (let ((value (symbol-value-in-buffer hook buffer nil))) + (if (and (listp value) (not (eq (car value) 'lambda))) + ;; List of functions. + (let (retval) + (while (and value (null retval)) + ;; Found `t': should process default value. We could + ;; splice it into the buffer-local value, but that + ;; would cons, which is not a good thing for + ;; mouse-track hooks. + (if (eq (car value) t) + (let ((global (default-value hook))) + (if (and (listp global) (not (eq (car global) + 'lambda))) + ;; List of functions. + (while (and global + (null (setq retval + (apply (car global) + event args)))) + (pop global)) + ;; lambda + (setq retval (apply (car global) event args)))) + (setq retval (apply (car value) event args))) + (pop value)) + retval) + ;; lambda + (apply value event args)))))))) (defun mouse-track-scroll-undefined (random) ;; the old implementation didn't actually define this function, @@ -615,7 +624,7 @@ ;; difficult to do), this function may get called. ) -(defun mouse-track (event) +(defun mouse-track (event &optional overriding-hooks) "Generalized mouse-button handler. This should be bound to a mouse button. The behavior of this function is customizable using various hooks and variables: see `mouse-track-click-hook', `mouse-track-drag-hook', @@ -629,6 +638,10 @@ any custom-supplied handlers, by using the function `mouse-track-default' instead of `mouse-track'. +\(In general, you can override specific hooks by using the argument +OVERRIDING-HOOKS, which should be a plist of alternating hook names +and values.) + Default behavior is as follows: If you click-and-drag, the selection will be set to the region between the @@ -669,7 +682,7 @@ (setq mouse-track-click-count (1+ mouse-track-click-count))) (if (not (event-window event)) (error "Not over a window.")) - (mouse-track-run-hook 'mouse-track-down-hook + (mouse-track-run-hook 'mouse-track-down-hook overriding-hooks event mouse-track-click-count) (unwind-protect (while mouse-down @@ -683,14 +696,17 @@ (setq mouse-moved t)) (if mouse-moved (mouse-track-run-hook 'mouse-track-drag-hook - event mouse-track-click-count nil)) + overriding-hooks + event mouse-track-click-count nil)) (mouse-track-set-timeout event)) ((and (timeout-event-p event) (eq (event-function event) 'mouse-track-scroll-undefined)) (if mouse-moved (mouse-track-run-hook 'mouse-track-drag-hook - (event-object event) mouse-track-click-count t)) + overriding-hooks + (event-object event) + mouse-track-click-count t)) (mouse-track-set-timeout (event-object event))) ((button-release-event-p event) (setq mouse-track-up-time (event-timestamp event)) @@ -698,12 +714,15 @@ (setq mouse-track-up-y (event-y-pixel event)) (setq mouse-down nil) (mouse-track-run-hook 'mouse-track-up-hook - event mouse-track-click-count) + overriding-hooks + event mouse-track-click-count) (if mouse-moved (mouse-track-run-hook 'mouse-track-drag-up-hook - event mouse-track-click-count) + overriding-hooks + event mouse-track-click-count) (mouse-track-run-hook 'mouse-track-click-hook - event mouse-track-click-count))) + overriding-hooks + event mouse-track-click-count))) ((or (key-press-event-p event) (and (misc-user-event-p event) (eq (event-function event) 'cancel-mode-internal))) @@ -717,7 +736,14 @@ (and (buffer-live-p buffer) (save-excursion (set-buffer buffer) - (run-hooks 'mouse-track-cleanup-hook)))))) + (let ((override (plist-get overriding-hooks + 'mouse-track-cleanup-hook + Mouse-track-gensym))) + (if (not (eq override Mouse-track-gensym)) + (if (and (listp override) (not (eq (car override) 'lambda))) + (mapc #'funcall override) + (funcall override)) + (run-hooks 'mouse-track-cleanup-hook)))))))) ;;;;;;;;;;;; default handlers: new version of mouse-track @@ -1319,12 +1345,14 @@ (defun mouse-track-default (event) "Invoke `mouse-track' with only the default handlers active." (interactive "e") - (let ((mouse-track-down-hook 'default-mouse-track-down-hook) - (mouse-track-drag-hook 'default-mouse-track-drag-hook) - (mouse-track-drag-up-hook 'default-mouse-track-drag-up-hook) - (mouse-track-click-hook 'default-mouse-track-click-hook) - (mouse-track-cleanup-hook 'default-mouse-track-cleanup-hook)) - (mouse-track event))) + (mouse-track event + '(mouse-track-down-hook + default-mouse-track-down-hook + mouse-track-up-hook nil + mouse-track-drag-hook default-mouse-track-drag-hook + mouse-track-drag-up-hook default-mouse-track-drag-up-hook + mouse-track-click-hook default-mouse-track-click-hook + mouse-track-cleanup-hook default-mouse-track-cleanup-hook))) (defun mouse-track-do-rectangle (event) "Like `mouse-track' but selects rectangles instead of regions." @@ -1355,37 +1383,37 @@ (let ((default-mouse-track-adjust t)) (mouse-track-default event))) -(defvar mouse-track-insert-selected-region nil) - -(defun mouse-track-insert-drag-up-hook (event click-count) - (setq mouse-track-insert-selected-region - (default-mouse-track-return-dragged-selection event))) - (defun mouse-track-insert (event &optional delete) "Make a selection with the mouse and insert it at point. This is exactly the same as the `mouse-track' command on \\[mouse-track], except that point is not moved; the selected text is immediately inserted after being selected\; and the selection is immediately disowned afterwards." (interactive "*e") - (setq mouse-track-insert-selected-region nil) - (let ((mouse-track-drag-up-hook 'mouse-track-insert-drag-up-hook) - (mouse-track-click-hook 'mouse-track-insert-click-hook) - s) - (save-excursion - (save-window-excursion - (mouse-track event) - (if (consp mouse-track-insert-selected-region) - (let ((pair mouse-track-insert-selected-region)) - (setq s (prog1 - (buffer-substring (car pair) (cdr pair)) - (if delete - (kill-region (car pair) (cdr pair))))))))) - (or (null s) (equal s "") (insert s)))) - -(defun mouse-track-insert-click-hook (event click-count) - (default-mouse-track-drag-hook event click-count nil) - (mouse-track-insert-drag-up-hook event click-count) - t) + (let (s selreg) + (flet ((Mouse-track-insert-drag-up-hook (event count) + (setq selreg + (default-mouse-track-return-dragged-selection event)) + t) + (Mouse-track-insert-click-hook (event count) + (default-mouse-track-drag-hook event count nil) + (setq selreg + (default-mouse-track-return-dragged-selection event)) + t)) + (save-excursion + (save-window-excursion + (mouse-track + event + '(mouse-track-drag-up-hook + Mouse-track-insert-drag-up-hook + mouse-track-click-hook + Mouse-track-insert-click-hook)) + (if (consp selreg) + (let ((pair selreg)) + (setq s (prog1 + (buffer-substring (car pair) (cdr pair)) + (if delete + (kill-region (car pair) (cdr pair)))))))))) + (or (null s) (equal s "") (insert s)))) (defun mouse-track-delete-and-insert (event) "Make a selection with the mouse and insert it at point. diff --text -u 'xemacs-21.5.1/lisp/mule/mule-coding.el' 'xemacs-21.5.2/lisp/mule/mule-coding.el' Index: ././lisp/mule/mule-coding.el --- ././lisp/mule/mule-coding.el Sat May 5 19:52:13 2001 +++ ././lisp/mule/mule-coding.el Thu May 10 18:59:52 2001 @@ -61,6 +61,16 @@ "Return the 'lock-shift property of CODING-SYSTEM." (coding-system-property coding-system 'lock-shift)) +(defun coding-system-charset (coding-system register) +"Return the charset initially designated to REGISTER in CODING-SYSTEM. +The allowable range of REGISTER is 0 through 3." + (if (or (< register 0) (> register 3)) + (error 'args-out-of-range "coding-system-charset REGISTER" register 0 3)) + (coding-system-property coding-system (nth register '(charset-g0 + charset-g1 + charset-g2 + charset-g3)))) + ;;(defun coding-system-use-japanese-jisx0201-roman (coding-system) ;; "Return the 'use-japanese-jisx0201-roman property of CODING-SYSTEM." ;; (coding-system-property coding-system 'use-japanese-jisx0201-roman)) diff --text -u 'xemacs-21.5.1/lisp/package-admin.el' 'xemacs-21.5.2/lisp/package-admin.el' Index: ././lisp/package-admin.el --- ././lisp/package-admin.el Fri Apr 13 03:21:33 2001 +++ ././lisp/package-admin.el Sun Jul 15 17:18:59 2001 @@ -104,6 +104,16 @@ unfortunately, contain spaces, so be careful in constructing any regexps.") +(defvar package-install-hook nil + "*List of hook functions to be called when a new package is successfully +installed. The hook function is passed two arguments: the package name, and +the install directory.") + +(defvar package-delete-hook nil + "*List of hook functions to be called when a package is deleted. The +hook is called *before* the package is deleted. The hook function is passed +two arguments: the package name, and the install directory.") + ;;;###autoload (defun package-admin-add-single-file-package (file destdir &optional pkg-dir) "Install a single file Lisp package into XEmacs package hierarchy. @@ -402,6 +412,7 @@ (let ( (tmpbuf " *pkg-manifest*") manifest-file package-lispdir dirs file) (setq pkg-topdir (package-admin-get-install-dir package pkg-topdir)) (setq manifest-file (package-admin-get-manifest-file pkg-topdir package)) + (run-hook-with-args 'package-delete-hook package pkg-topdir) (if (file-exists-p manifest-file) (progn ;; The manifest file exists! Use it to delete the old distribution. @@ -428,7 +439,7 @@ ;; Make sure that the file is writable. ;; (This is important under MS Windows.) ;; I do not know why it important under MS Windows but - ;; 1. It bombs out out when the file does not exist. This can be condition-cased + ;; 1. It bombs out when the file does not exist. This can be condition-cased ;; 2. If I removed the write permissions, I do not want XEmacs to just ignore them. ;; If it wants to, XEmacs may ask, but that is about all ;; (set-file-modes file 438) ;; 438 -> #o666 diff --text -u 'xemacs-21.5.1/lisp/package-get.el' 'xemacs-21.5.2/lisp/package-get.el' Index: ././lisp/package-get.el --- ././lisp/package-get.el Sat May 5 19:51:16 2001 +++ ././lisp/package-get.el Sun Jul 15 17:18:59 2001 @@ -865,6 +865,7 @@ (if (package-get-init-package (package-admin-get-lispdir install-dir package)) (progn + (run-hook-with-args 'package-install-hook package install-dir) (message "Added package `%s'" package) (sit-for 0) ) @@ -950,7 +951,7 @@ (defun package-get-staging-dir (filename) "Return a good place to stash FILENAME when it is retrieved. Use `package-get-dir' for directory to store stuff. -Creates `package-get-dir' it it doesn't exist." +Creates `package-get-dir' if it doesn't exist." (interactive "FPackage filename: ") (if (not (file-exists-p package-get-dir)) (make-directory package-get-dir)) diff --text -u 'xemacs-21.5.1/lisp/package-ui.el' 'xemacs-21.5.2/lisp/package-ui.el' Index: ././lisp/package-ui.el --- ././lisp/package-ui.el Fri Apr 13 03:21:33 2001 +++ ././lisp/package-ui.el Sun Jul 1 08:07:06 2001 @@ -373,7 +373,7 @@ (mapcar (lambda (pkg) (package-admin-delete-binary-package pkg (package-admin-get-install-dir pkg nil))) - pui-deleted-packages) + (nreverse pui-deleted-packages)) (message "Packages deleted")))) (let ( (tmpbuf "*Packages-To-Install*") do-install) @@ -411,7 +411,7 @@ (if (not (package-get pkg nil nil pui-package-install-dest-dir)) (throw 'done nil))) - pui-selected-packages) + (nreverse pui-selected-packages)) t) (progn (pui-list-packages) diff --text -u 'xemacs-21.5.1/lisp/packages.el' 'xemacs-21.5.2/lisp/packages.el' Index: ././lisp/packages.el --- ././lisp/packages.el Fri Apr 13 03:21:33 2001 +++ ././lisp/packages.el Fri Jul 20 11:41:29 2001 @@ -164,6 +164,7 @@ (defvar packages-useful-lisp '("bytecomp" "byte-optimize" + "autoload" "shadow" "cl-macs") "Lisp packages that need early byte compilation.") @@ -190,7 +191,7 @@ If the optional third arg PATH is specified, that list of directories is used instead of `load-path'." - (interactive (list (read-string "Locate library: ") + (interactive (list (read-library-name "Locate library: ") nil nil t)) (let ((result diff --text -u 'xemacs-21.5.1/lisp/printer.el' 'xemacs-21.5.2/lisp/printer.el' Index: ././lisp/printer.el --- ././lisp/printer.el Mon May 7 16:51:06 2001 +++ ././lisp/printer.el Sun May 20 10:17:09 2001 @@ -436,10 +436,10 @@ (let ((window-pixel-scroll-increment pixvis)) (scroll-down 1)))))) - (setq pageno (1+ pageno)))))) - (and f (delete-frame f)) - (and header-buffer (kill-buffer header-buffer)) - (and footer-buffer (kill-buffer footer-buffer))))) + (setq pageno (1+ pageno))))))) + (and f (delete-frame f)) + (and header-buffer (kill-buffer header-buffer)) + (and footer-buffer (kill-buffer footer-buffer)))) (setq copies (1- copies))))) ((and (not (eq system-type 'windows-nt)) (fboundp 'lpr-region)) diff --text -u 'xemacs-21.5.1/lisp/process.el' 'xemacs-21.5.2/lisp/process.el' Index: ././lisp/process.el --- ././lisp/process.el Fri Apr 13 03:21:34 2001 +++ ././lisp/process.el Fri Jun 8 21:21:10 2001 @@ -53,6 +53,7 @@ "Executing external commands." :group 'processes) +;; This may be changed to "/c" in win32-native.el. (defvar shell-command-switch "-c" "Switch used to have the shell execute its command line argument.") @@ -446,15 +447,17 @@ ;; around shell metachars gets through the last two, and applying ;; the normal VC runtime quoting works with practically all apps. (mswindows-quote-one-vc-runtime-arg argument t) - ;; Quote everything except POSIX filename characters. - ;; This should be safe enough even for really weird shells. - (let ((result "") (start 0) end) - (while (string-match "[^-0-9a-zA-Z_./]" argument start) - (setq end (match-beginning 0) - result (concat result (substring argument start end) - "\\" (substring argument end (1+ end))) - start (1+ end))) - (concat result (substring argument start))))) + (if (equal argument "") + "\"\"" + ;; Quote everything except POSIX filename characters. + ;; This should be safe enough even for really weird shells. + (let ((result "") (start 0) end) + (while (string-match "[^-0-9a-zA-Z_./]" argument start) + (setq end (match-beginning 0) + result (concat result (substring argument start end) + "\\" (substring argument end (1+ end))) + start (1+ end))) + (concat result (substring argument start)))))) (defun shell-command-to-string (command) "Execute shell command COMMAND and return its output as a string." diff --text -u 'xemacs-21.5.1/lisp/shadow.el' 'xemacs-21.5.2/lisp/shadow.el' Index: ././lisp/shadow.el --- ././lisp/shadow.el Fri Apr 13 03:21:35 2001 +++ ././lisp/shadow.el Sun Jun 10 19:42:23 2001 @@ -13,13 +13,13 @@ ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. -;; GNU Emacs is distributed in the hope that it will be useful, +;; 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 GNU Emacs; see the file COPYING. If not, write to the +;; 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. diff --text -u 'xemacs-21.5.1/lisp/simple.el' 'xemacs-21.5.2/lisp/simple.el' Index: ././lisp/simple.el --- ././lisp/simple.el Sat May 5 19:51:22 2001 +++ ././lisp/simple.el Sun Jun 10 19:42:23 2001 @@ -2517,53 +2517,62 @@ (interactive "*p") (transpose-subr 'forward-sexp arg)) +(defun Simple-forward-line-creating-newline () + ;; Move forward over a line, + ;; but create a newline if none exists yet. + (end-of-line) + (if (eobp) + (newline) + (forward-char 1))) + +(defun Simple-transpose-lines-mover (arg) + (if (= arg 1) + (Simple-forward-line-creating-newline) + (forward-line arg))) + (defun transpose-lines (arg) "Exchange current line and previous line, leaving point after both. With argument ARG, takes previous line and moves it past ARG lines. With argument 0, interchanges line point is in with line mark is in." (interactive "*p") - (transpose-subr #'(lambda (arg) - (if (= arg 1) - (progn - ;; Move forward over a line, - ;; but create a newline if none exists yet. - (end-of-line) - (if (eobp) - (newline) - (forward-char 1))) - (forward-line arg))) - arg)) + (transpose-subr 'Simple-transpose-lines-mover arg)) (defun transpose-line-up (arg) "Move current line one line up, leaving point at beginning of that line. -This can be run repeatedly to move the current line up a number of lines." +With argument ARG, move it ARG lines up. This can be run repeatedly +to move the current line up a number of lines. + +If the region is active, move the region up one line (or ARG lines, +if specified). The region will not be selected afterwards, but this +command can still be run repeatedly to move the region up a number +of lines." (interactive "*p") - ;; Move forward over a line, - ;; but create a newline if none exists yet. - (end-of-line) - (if (eobp) - (newline) - (forward-char 1)) - (transpose-lines (- arg)) - (forward-line -1)) + (transpose-line-down (- arg))) (defun transpose-line-down (arg) "Move current line one line down, leaving point at beginning of that line. -This can be run repeatedly to move the current line down a number of lines." +With argument ARG, move it ARG lines down. This can be run repeatedly +to move the current line down a number of lines. + +If the region is active, move the region down one line (or ARG lines, +if specified). The region will not be selected afterwards, but this +command can still be run repeatedly to move the region down a number +of lines." (interactive "*p") - ;; Move forward over a line, - ;; but create a newline if none exists yet. - (end-of-line) - (if (eobp) - (newline) - (forward-char 1)) - (transpose-lines arg) - (forward-line -1)) + (if (or (region-active-p) + (getf last-command-properties 'transpose-region-by-line-command)) + (progn + (transpose-subr 'Simple-transpose-lines-mover arg t) + (putf this-command-properties 'transpose-region-by-line-command t)) + (Simple-forward-line-creating-newline) + (transpose-subr 'Simple-transpose-lines-mover arg) + (forward-line -1))) -(defun transpose-subr (mover arg) +(defun transpose-subr (mover arg &optional move-region) (let (start1 end1 start2 end2) ;; XEmacs -- use flet instead of defining a separate function and - ;; relying on dynamic scope!!! + ;; relying on dynamic scope; use (mark t) etc; add code to support + ;; the new MOVE-REGION arg. (flet ((transpose-subr-1 () (if (> (min end1 end2) (max start1 start2)) (error "Don't have two things to transpose")) @@ -2583,36 +2592,63 @@ (setq end2 (point)) (funcall mover -1) (setq start2 (point)) - (goto-char (mark t)) ; XEmacs + (goto-char (mark t)) (funcall mover 1) (setq end1 (point)) (funcall mover -1) (setq start1 (point)) (transpose-subr-1)) - (exchange-point-and-mark t))) ; XEmacs - (while (> arg 0) - (funcall mover -1) - (setq start1 (point)) - (funcall mover 1) - (setq end1 (point)) - (funcall mover 1) - (setq end2 (point)) - (funcall mover -1) - (setq start2 (point)) - (transpose-subr-1) - (goto-char end2) - (setq arg (1- arg))) - (while (< arg 0) - (funcall mover -1) - (setq start2 (point)) - (funcall mover -1) - (setq start1 (point)) - (funcall mover 1) - (setq end1 (point)) - (funcall mover 1) - (setq end2 (point)) - (transpose-subr-1) - (setq arg (1+ arg)))))) + (exchange-point-and-mark t))) + (if move-region + (let ((rbeg (region-beginning)) + (rend (region-end))) + (while (> arg 0) + (goto-char rend) + (funcall mover 1) + (setq end2 (point)) + (funcall mover -1) + (setq start2 (point)) + (setq start1 rbeg end1 rend) + (transpose-subr-1) + (incf rbeg (- end2 start2)) + (incf rend (- end2 start2)) + (setq arg (1- arg))) + (while (< arg 0) + (goto-char rbeg) + (funcall mover -1) + (setq start1 (point)) + (funcall mover 1) + (setq end1 (point)) + (setq start2 rbeg end2 rend) + (transpose-subr-1) + (decf rbeg (- end1 start1)) + (decf rend (- end1 start1)) + (setq arg (1+ arg))) + (set-mark rbeg) + (goto-char rend)) + (while (> arg 0) + (funcall mover -1) + (setq start1 (point)) + (funcall mover 1) + (setq end1 (point)) + (funcall mover 1) + (setq end2 (point)) + (funcall mover -1) + (setq start2 (point)) + (transpose-subr-1) + (goto-char end2) + (setq arg (1- arg))) + (while (< arg 0) + (funcall mover -1) + (setq start2 (point)) + (funcall mover -1) + (setq start1 (point)) + (funcall mover 1) + (setq end1 (point)) + (funcall mover 1) + (setq end2 (point)) + (transpose-subr-1) + (setq arg (1+ arg))))))) (defcustom comment-column 32 diff --text -u 'xemacs-21.5.1/lisp/specifier.el' 'xemacs-21.5.2/lisp/specifier.el' Index: ././lisp/specifier.el --- ././lisp/specifier.el Fri Apr 13 03:21:36 2001 +++ ././lisp/specifier.el Wed Jul 18 21:44:52 2001 @@ -600,6 +600,8 @@ (or (valid-specifier-tag-p 'mswindows) (define-specifier-tag 'mswindows (lambda (dev) (eq (device-type dev) 'mswindows)))) +(or (valid-specifier-tag-p 'gtk) + (define-specifier-tag 'gtk (lambda (dev) (eq (device-type dev) 'gtk)))) ;; Add special tag for use by initialization code. Code that ;; sets up default specs should use this tag. Code that needs to diff --text -u 'xemacs-21.5.1/lisp/startup.el' 'xemacs-21.5.2/lisp/startup.el' Index: ././lisp/startup.el --- ././lisp/startup.el Sat May 5 19:51:23 2001 +++ ././lisp/startup.el Fri Jun 8 21:21:11 2001 @@ -449,17 +449,7 @@ debug-paths) (startup-setup-paths-warning)) - (if (and (not inhibit-autoloads) - lisp-directory) - (load (expand-file-name (file-name-sans-extension autoload-file-name) - lisp-directory) nil t)) - - (if (not inhibit-autoloads) - (progn - (if (not inhibit-early-packages) - (packages-load-package-auto-autoloads early-package-load-path)) - (packages-load-package-auto-autoloads late-package-load-path) - (packages-load-package-auto-autoloads last-package-load-path))) + (startup-load-autoloads) (unwind-protect (command-line) @@ -491,24 +481,10 @@ (if load-user-init-file-p (maybe-migrate-user-init-file)) - ;;####FSFmacs junk - ;; (or menubar-bindings-done - ;; (precompute-menubar-bindings)) + ;; FSF calls precompute-menubar-bindings. We don't mix menubars + ;; and keymaps. )) -;;####FSFmacs junk -;;; Precompute the keyboard equivalents in the menu bar items. -;;(defun precompute-menubar-bindings () -;; (if (eq window-system 'x) -;; (let ((submap (lookup-key global-map [menu-bar]))) -;; (while submap -;; (and (consp (car submap)) -;; (symbolp (car (car submap))) -;; (stringp (car-safe (cdr (car submap)))) -;; (keymapp (cdr (cdr (car submap)))) -;; (x-popup-menu nil (cdr (cdr (car submap))))) -;; (setq submap (cdr submap)))))) - (defun command-line-early (args) ;; This processes those switches which need to be processed before ;; starting up the window system. @@ -624,6 +600,9 @@ ;; handled here instead of down in C. (setq command-line-args-left (command-line-early command-line-args-left)) + (when (eq system-type 'windows-nt) + (init-mswindows-at-startup)) + ;; Setup the toolbar icon directory (when (featurep 'toolbar) (init-toolbar-location)) @@ -1426,5 +1405,18 @@ (princ (buffer-string) 'external-debugging-output) (erase-buffer) t))))) + +(defun startup-load-autoloads () + (if (and (not inhibit-autoloads) + lisp-directory) + (load (expand-file-name (file-name-sans-extension autoload-file-name) + lisp-directory) nil t)) + + (if (not inhibit-autoloads) + (progn + (if (not inhibit-early-packages) + (packages-load-package-auto-autoloads early-package-load-path)) + (packages-load-package-auto-autoloads late-package-load-path) + (packages-load-package-auto-autoloads last-package-load-path)))) ;;; startup.el ends here diff --text -u 'xemacs-21.5.1/lisp/subr.el' 'xemacs-21.5.2/lisp/subr.el' Index: ././lisp/subr.el --- ././lisp/subr.el Mon May 7 16:51:15 2001 +++ ././lisp/subr.el Thu May 24 16:50:49 2001 @@ -3,7 +3,7 @@ ;; Copyright (C) 1985, 1986, 1992, 1994-5, 1997 Free Software Foundation, Inc. ;; Copyright (C) 1995 Tinker Systems and INS Engineering Corp. ;; Copyright (C) 1995 Sun Microsystems. -;; Copyright (C) 2000 Ben Wing. +;; Copyright (C) 2000, 2001 Ben Wing. ;; Maintainer: XEmacs Development Team ;; Keywords: extensions, dumped @@ -625,38 +625,42 @@ totally defeats the purpose of having structured errors. There is now a rich set of defined errors you can use: -error - syntax-error - invalid-read-syntax - list-formation-error - malformed-list - malformed-property-list - circular-list - circular-property-list - invalid-regexp - specifier-syntax-error +quit +error invalid-argument - wrong-type-argument - args-out-of-range - wrong-number-of-arguments + syntax-error + invalid-read-syntax + invalid-regexp + structure-formation-error + list-formation-error + malformed-list + malformed-property-list + circular-list + circular-property-list invalid-function no-catch undefined-keystroke-sequence - specifier-argument-error + invalid-constant + wrong-type-argument + args-out-of-range + wrong-number-of-arguments invalid-state void-function cyclic-function-indirection void-variable cyclic-variable-indirection - protected-field invalid-byte-code + stack-overflow + out-of-memory + invalid-key-binding + internal-error invalid-operation invalid-change setting-constant - specifier-change-error + protected-field editing-error beginning-of-buffer end-of-buffer @@ -666,32 +670,37 @@ file-already-exists file-locked file-supersession - end-of-file - coding-system-error - image-conversion-error + end-of-file + process-error + network-error tooltalk-error + gui-error + dialog-box-error + sound-error + conversion-error + text-conversion-error + image-conversion-error + base64-conversion-error + selection-conversion-error arith-error range-error domain-error singularity-error overflow-error underflow-error - dialog-box-error search-failed - selection-conversion-error - - unimplemented - - internal-error + printing-unreadable-object + unimplemented -The five most common errors you will probably use or base your new -errors off of are `syntax-error', `invalid-argument', `invalid-state', -`invalid-operation', and `invalid-change'. Note the semantic differences: +Note the semantic differences between some of the more common errors: --- `syntax-error' is for errors in complex structures: parsed strings, lists, - and the like. --- `invalid-argument' is for errors in a simple value. Typically, the entire - value, not just one part of it, is wrong. +-- `invalid-argument' is for all cases where a bad value is encountered. +-- `invalid-constant' is for arguments where only a specific set of values + is allowed. +-- `syntax-error' is when complex structures (parsed strings, lists, + and the like) are badly formed. If the problem is just a single bad + value inside the structure, you should probably be using something else, + e.g. `invalid-constant', `wrong-type-argument', or `invalid-argument'. -- `invalid-state' means that some settings have been changed in such a way that their current state is unallowable. More and more, code is being written more carefully, and catches the error when the settings are being @@ -699,9 +708,10 @@ -- `invalid-change' means that an attempt is being made to change some settings into an invalid state. `invalid-change' is a type of `invalid-operation'. -- `invalid-operation' refers to all cases where code is trying to do something - that's disallowed. This includes file errors, buffer errors (e.g. running - off the end of a buffer), `invalid-change' as just mentioned, and - arithmetic errors. + that's disallowed, or when an error occurred during an operation. (These + two concepts are merged because there's no clear distinction between them.) +-- `io-error' refers to errors involving interaction with any external + components (files, other programs, the operating system, etc). See also `cerror', `signal', and `signal-error'." (while t (apply diff --text -u 'xemacs-21.5.1/lisp/term/AT386.el' 'xemacs-21.5.2/lisp/term/AT386.el' Index: ././lisp/term/AT386.el --- ././lisp/term/AT386.el Sun Dec 22 05:48:39 1996 +++ ././lisp/term/AT386.el Fri Jun 22 10:50:01 2001 @@ -28,6 +28,8 @@ ;;; Code: +(defvar AT386-keypad-map) + (if (boundp 'AT386-keypad-map) nil ;; The terminal initialization should already have set up some keys diff --text -u 'xemacs-21.5.1/lisp/term/apollo.el' 'xemacs-21.5.2/lisp/term/apollo.el' Index: ././lisp/term/apollo.el --- ././lisp/term/apollo.el Sun Jan 11 16:01:20 1998 +++ ././lisp/term/apollo.el Fri Jun 22 10:50:01 2001 @@ -1,15 +1,9 @@ -;;; apollo.el --- Apollo Graphics Primitive Support Functions - -;; Copyright (C) 1998 by Free Software Foundation, Inc. -;; Copyright (C) 1991 by Lucid, Inc. - -;; Author: Leonard N. Zubkoff -;; Keywords: hardware +;; apollo.el --- Obsolete system ;; 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 +;; 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. @@ -23,709 +17,12 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Synched up with: InfoDock 3.6.2. +;;; Synched up with: FSF 21.0.103. ;;; Commentary: -;; GNU Emacs Apollo GPR Support Functions - -;; Leonard N. Zubkoff - -;; lnz@dandelion.com -;; Lucid, Incorporated -;; 23 January 1991 - -;; This file defines functions that support GNU Emacs using the Apollo -;; Graphics Primitives (GPR). See the file "APOLLO.README" for a description -;; of the key bindings set up by this file. - -;; Acknowledgements - -;; The following people have contributed ideas that have helped make this -;; interface possible: Nathaniel Mishkin, Rob Stanzel, and Mark Weissman of -;; Apollo Computer, Dave Holcomb of CAECO, Vincent Broman of NOSC, and J. W. -;; Peterson of the University of Utah. - -;;; Change Log: -;; Bob Weiner, Motorola, Inc., 2/2/89 - -;; Added section to 'apollo-clean-help-file()' to remove underlining -;; and overstriking (only by the same letter) from Apollo '.hlp' files. -;; Based on the 'nuke-nroff-bs' function in man.el. -;; Changed apollo-mouse-{cut,copy,paste} commands so that they work -;; with the DM paste buffer. This combined with cut,copy,paste -;; bindings of the mouse keys allows quick and easy copying from -;; Emacs windows to DM windows. -;; Added 'unbind-apollo-mouse-button' and 'unbind-apollo-function-key' -;; commands. -;; Added 'apollo-mouse-cut-copy-paste' command which provides a -;; second set of mouse key functions that can be set with one key -;; press and cleared with another key press. Put default mouse key -;; bindings into a command called 'apollo-mouse-defaults' so that -;; they can be used to clear any other mouse bindings. -;; Both these commands affect the DM mouse key bindings as well. -;; Added 'apollo-mouse-cancel-cut-copy-paste' command which resets the mouse -;; key defaults within Emacs and the DM. The variable -;; '*dm-mouse-key-bindings-file*' should be set within an initialization -;; file to the pathname of file that executes a user's default DM mouse -;; key bindings. - -;; Bob Weiner, Motorola, Inc., 2/23/89 - -;; Added ':' as valid character within a filename (if not at the end) -;; in the command 'extract-file-name-around-point'. For remote UNIX -;; operations such as rcp and rsh commands which use the syntax, -;; :. - -;; Bob Weiner, Motorola, Inc., 3/09/89 -;; -;; Modified 'apollo-mouse-find-file' and 'apollo-find-file' so that they -;; recognize buffer names in addition to directory or file paths. A buffer -;; name is recognized before a path name, if the match buffer names flag is -;; enabled. Added the command 'extract-buf-or-file-name-around-point' to -; support this functionality. Added find file in other window option to -;; these two find-file commands. - -;; Bob Weiner, Motorola, Inc., 3/20/89 - -;; Changed (funcall *apollo-key-bindings-hook*) to (run-hooks -;; '*apollo-key-bindings-hook*) which is what it should be. - -;; Bob Weiner, Motorola, Inc., 4/20/89 - -;; Rebound M2D button to perform different functions by buffer and location in -;; buffer. Executes 'smart-key-mouse' command found in smart-key.el. -;; Meta-M2D executes 'smart-key-mouse-meta'. M2U is unbound. - -;; Bob Weiner, Motorola, Inc., 8/1/89 - -;; Fixed 'apollo-mouse-move-point' and 'apollo-mouse-move-mark' so they do -;; not set the mark gratuitously. They are bound to M1D and M1U respectively. - -;; Bob Weiner, Motorola, Inc., 4/11/90 - -;; Bound left and right box arrow keys to scroll right and left, -;; respectively, which most closely emulates their DM functions. - ;;; Code: - -(defvar *dm-mouse-key-bindings-file* "/sys/dm/std_keys3" - "Path of the DM key binding file which sets up a user's default mouse key -bindings. If none exists, this value should be set to one of the -/sys/dm/std_key* files which set up DM key defaults.") - -;;; Set this variable in your ".emacs" to a function to call to set up -;;; additional key bindings. -;;; -(defvar *apollo-key-bindings-hook* nil) - -;;; Set this variable non-NIL in your ".emacs" to enable preemption of normal -;;; Display Manager bindings. -;;; -(defvar *preempt-display-manager-bindings* nil) - - - -;;; Determine whether or not we're running diskless and define -;;; *paste-buffer-directory* to point to the paste buffers directory. - -(defvar *paste-buffer-directory* - (let ((test-directory (concat "/sys/node_data." - (downcase (getenv "NODEID")) - "paste_buffers/"))) - (if (file-directory-p test-directory) - test-directory - "/sys/node_data/paste_buffers/"))) - - -;;; Bind this variable non-NIL to allow apollo-mouse-move-point to leave the -;;; minibuffer area. - -(defvar *apollo-mouse-move-point-allow-minibuffer-exit* nil) - - -;;; Define the Apollo Function Keys. - -(defvar *apollo-function-keys* - '(("ESC" . 0) ("L1" . 1) ("L2" . 2) ("L3" . 3) - ("L1A" . 4) ("L2A" . 5) ("L3A" . 6) ("L4" . 7) - ("L5" . 8) ("L6" . 9) ("L7" . 10) ("L8" . 11) - ("L9" . 12) ("LA" . 13) ("LB" . 14) ("LC" . 15) - ("LD" . 16) ("LE" . 17) ("LF" . 18) ("F0" . 19) - ("F1" . 20) ("F2" . 21) ("F3" . 22) ("F4" . 23) - ("F5" . 24) ("F6" . 25) ("F7" . 26) ("F8" . 27) - ("F9" . 28) ("R1" . 29) ("R2" . 30) ("R3" . 31) - ("R4" . 32) ("R5" . 33) ("R6" . 34) ("NP0" . 35) - ("NP1" . 36) ("NP2" . 37) ("NP3" . 38) ("NP4" . 39) - ("NP5" . 40) ("NP6" . 41) ("NP7" . 42) ("NP8" . 43) - ("NP9" . 44) ("NPA" . 45) ("NPB" . 46) ("NPC" . 47) - ("NPD" . 48) ("NPE" . 49) ("NPF" . 50) ("NPG" . 51) - ("NPP" . 52) ("AL" . 53) ("AR" . 54) ("SHL" . 55) - ("SHR" . 56) ("LCK" . 57) ("CTL" . 58) ("RPT" . 59) - ("TAB" . 60) ("RET" . 61) ("BS" . 62) ("DEL" . 63) - ("ESCS" . 64) ("L1S" . 65) ("L2S" . 66) ("L3S" . 67) - ("L1AS" . 68) ("L2AS" . 69) ("L3AS" . 70) ("L4S" . 71) - ("L5S" . 72) ("L6S" . 73) ("L7S" . 74) ("L8S" . 75) - ("L9S" . 76) ("LAS" . 77) ("LBS" . 78) ("LCS" . 79) - ("LDS" . 80) ("LES" . 81) ("LFS" . 82) ("F0S" . 83) - ("F1S" . 84) ("F2S" . 85) ("F3S" . 86) ("F4S" . 87) - ("F5S" . 88) ("F6S" . 89) ("F7S" . 90) ("F8S" . 91) - ("F9S" . 92) ("R1S" . 93) ("R2S" . 94) ("R3S" . 95) - ("R4S" . 96) ("R5S" . 97) ("R6S" . 98) ("NP0S" . 99) - ("NP1S" . 100) ("NP2S" . 101) ("NP3S" . 102) ("NP4S" . 103) - ("NP5S" . 104) ("NP6S" . 105) ("NP7S" . 106) ("NP8S" . 107) - ("NP9S" . 108) ("NPAS" . 109) ("NPBS" . 110) ("NPCS" . 111) - ("NPDS" . 112) ("NPES" . 113) ("NPFS" . 114) ("NPGS" . 115) - ("NPPS" . 116) ("ALS" . 117) ("ARS" . 118) ("SHLS" . 119) - ("SHRS" . 120) ("LCKS" . 121) ("CTLS" . 122) ("RPTS" . 123) - ("TABS" . 124) ("RETS" . 125) ("BSS" . 126) ("DELS" . 127) - ("ESCC" . 128) ("L1C" . 129) ("L2C" . 130) ("L3C" . 131) - ("L1AC" . 132) ("L2AC" . 133) ("L3AC" . 134) ("L4C" . 135) - ("L5C" . 136) ("L6C" . 137) ("L7C" . 138) ("L8C" . 139) - ("L9C" . 140) ("LAC" . 141) ("LBC" . 142) ("LCC" . 143) - ("LDC" . 144) ("LEC" . 145) ("LFC" . 146) ("F0C" . 147) - ("F1C" . 148) ("F2C" . 149) ("F3C" . 150) ("F4C" . 151) - ("F5C" . 152) ("F6C" . 153) ("F7C" . 154) ("F8C" . 155) - ("F9C" . 156) ("R1C" . 157) ("R2C" . 158) ("R3C" . 159) - ("R4C" . 160) ("R5C" . 161) ("R6C" . 162) ("NP0C" . 163) - ("NP1C" . 164) ("NP2C" . 165) ("NP3C" . 166) ("NP4C" . 167) - ("NP5C" . 168) ("NP6C" . 169) ("NP7C" . 170) ("NP8C" . 171) - ("NP9C" . 172) ("NPAC" . 173) ("NPBC" . 174) ("NPCC" . 175) - ("NPDC" . 176) ("NPEC" . 177) ("NPFC" . 178) ("NPGC" . 179) - ("NPPC" . 180) ("ALC" . 181) ("ARC" . 182) ("SHLC" . 183) - ("SHRC" . 184) ("LCKC" . 185) ("CTLC" . 186) ("RPTC" . 187) - ("TABC" . 188) ("RETC" . 189) ("BSC" . 190) ("DELC" . 191) - ("ESCU" . 192) ("L1U" . 193) ("L2U" . 194) ("L3U" . 195) - ("L1AU" . 196) ("L2AU" . 197) ("L3AU" . 198) ("L4U" . 199) - ("L5U" . 200) ("L6U" . 201) ("L7U" . 202) ("L8U" . 203) - ("L9U" . 204) ("LAU" . 205) ("LBU" . 206) ("LCU" . 207) - ("LDU" . 208) ("LEU" . 209) ("LFU" . 210) ("F0U" . 211) - ("F1U" . 212) ("F2U" . 213) ("F3U" . 214) ("F4U" . 215) - ("F5U" . 216) ("F6U" . 217) ("F7U" . 218) ("F8U" . 219) - ("F9U" . 220) ("R1U" . 221) ("R2U" . 222) ("R3U" . 223) - ("R4U" . 224) ("R5U" . 225) ("R6U" . 226) ("NP0U" . 227) - ("NP1U" . 228) ("NP2U" . 229) ("NP3U" . 230) ("NP4U" . 231) - ("NP5U" . 232) ("NP6U" . 233) ("NP7U" . 234) ("NP8U" . 235) - ("NP9U" . 236) ("NPAU" . 237) ("NPBU" . 238) ("NPCU" . 239) - ("NPDU" . 240) ("NPEU" . 241) ("NPFU" . 242) ("NPGU" . 243) - ("NPPU" . 244) ("ALU" . 245) ("ARU" . 246) ("SHLU" . 247) - ("SHRU" . 248) ("LCKU" . 249) ("CTLU" . 250) ("RPTU" . 251) - ("TABU" . 252) ("RETU" . 253) ("BSU" . 254) ("DELU" . 255) - ("MARK" . "L1") ("LINE_DEL" . "L2") ("CHAR_DEL" . "L3") - ("L_BAR_ARROW" . "L4") ("CMD" . "L5") ("R_BAR_ARROW" . "L6") - ("L_BOX_ARROW" . "L7") ("UP_ARROW" . "L8") ("R_BOX_ARROW" . "L9") - ("LEFT_ARROW" . "LA") ("NEXT_WIN" . "LB") ("RIGHT_ARROW" . "LC") - ("UP_BOX_ARROW" . "LD") ("DOWN_ARROW" . "LE") ("DOWN_BOX_ARROW" . "LF") - ("COPY" . "L1A") ("PASTE" . "L2A") ("GROW" . "L3A") ("INS_MODE" . "L1S") - ("SHELL" . "L5S") ("CUT" . "L1AS") ("UNDO" . "L2AS") ("MOVE" . "L3AS") - ("POP" . "R1") ("AGAIN" . "R2") ("READ" . "R3") ("EDIT" . "R4") - ("EXIT" . "R5") ("HOLD" . "R6") ("SAVE" . "R4S") ("ABORT" . "R5S") - ("UNIXHELP" . "R6S") ("AEGISHELP" . "R6C"))) - - -;;; Define the Apollo Mouse Buttons. - -(defvar *apollo-mouse-buttons* - '(("M1D" . 97) ("M2D" . 98) ("M3D" . 99) ("M4D" . 100) - ("M1S" . 33) ("M2S" . 34) ("M3S" . 35) ("M4S" . 36) - ("M1C" . 1) ("M2C" . 2) ("M3C" . 3) ("M4C" . 4) - ("M1U" . 65) ("M2U" . 66) ("M3U" . 67) ("M4U" . 68))) - - -;;; Define functions to simplify making function key and mouse button bindings. - -(defun bind-apollo-function-key (function-key binding &optional meta-binding) - "Enable an Apollo Function Key and assign a binding to it." - (interactive "sFunction Key: \nCCommand: \nCMeta Command: ") - (let ((numeric-code (cdr (assoc function-key *apollo-function-keys*)))) - (if (null numeric-code) - (error "%s is not a legal Apollo Function Key name" function-key)) - (if (stringp numeric-code) - (setq numeric-code - (cdr (assoc numeric-code *apollo-function-keys*)))) - (enable-apollo-function-key numeric-code) - (let ((normal-sequence - (concat (char-to-string (logior 72 (lsh numeric-code -6))) - (char-to-string (logior 64 (logand numeric-code 63))))) - (meta-sequence - (concat (char-to-string (logior 76 (lsh numeric-code -6))) - (char-to-string (logior 64 (logand numeric-code 63)))))) - (define-key 'apollo-prefix normal-sequence binding) - (define-key 'apollo-prefix meta-sequence (or meta-binding binding))))) - -(defun unbind-apollo-function-key (function-key) - "Disable an Apollo Function Key and return control of it to the DM." - (interactive "sFunction key: ") - (let ((numeric-code (cdr (assoc function-key *apollo-function-keys*)))) - (if (null numeric-code) - (error "%s is not a legal Apollo Function Key name" function-key)) - (if (stringp numeric-code) - (setq numeric-code - (cdr (assoc numeric-code *apollo-function-keys*)))) - (disable-apollo-function-key numeric-code))) - -(defun select-apollo-meta-key (meta-key) - "Select the Function Key used as the Meta Key." - (interactive "sMeta Key: ") - (let ((numeric-code (cdr (assoc meta-key *apollo-function-keys*)))) - (if (null numeric-code) - (error "%s is not a legal Apollo Function Key name" meta-key)) - (if (stringp numeric-code) - (setq numeric-code - (cdr (assoc numeric-code *apollo-function-keys*)))) - (set-apollo-meta-key numeric-code))) - -(defun bind-apollo-mouse-button (mouse-button binding &optional meta-binding) - "Enable an Apollo Mouse Button and assign a binding to it." - (interactive "sMouse Button: \nCCommand: \nCMeta Command: ") - (let ((numeric-code (cdr (assoc mouse-button *apollo-mouse-buttons*)))) - (if (null numeric-code) - (error "%s is not a legal Apollo Mouse Button name" mouse-button)) - (enable-apollo-mouse-button numeric-code) - (let ((normal-sequence (char-to-string numeric-code)) - (meta-sequence (char-to-string (+ numeric-code 16)))) - (define-key 'apollo-prefix normal-sequence binding) - (define-key 'apollo-prefix meta-sequence (or meta-binding binding))))) - -(defun unbind-apollo-mouse-button (mouse-button) - "Disable an Apollo Mouse Button and return control of it to the DM." - (interactive "sMouse Button: ") - (let ((numeric-code (cdr (assoc mouse-button *apollo-mouse-buttons*)))) - (if (null numeric-code) - (error "%s is not a legal Apollo Mouse Button name" mouse-button)) - (disable-apollo-mouse-button numeric-code))) - - -;;; Initialize the Apollo Keymaps. - -(define-prefix-command 'apollo-prefix) -(global-set-key "\C-^" 'apollo-prefix) -(define-prefix-command 'apollo-prefix-1) -(define-prefix-command 'apollo-prefix-2) -(define-prefix-command 'apollo-prefix-3) -(define-prefix-command 'apollo-prefix-4) -(define-prefix-command 'apollo-prefix-5) -(define-prefix-command 'apollo-prefix-6) -(define-prefix-command 'apollo-prefix-7) -(define-prefix-command 'apollo-prefix-8) -(define-key 'apollo-prefix "H" 'apollo-prefix-1) -(define-key 'apollo-prefix "I" 'apollo-prefix-2) -(define-key 'apollo-prefix "J" 'apollo-prefix-3) -(define-key 'apollo-prefix "K" 'apollo-prefix-4) -(define-key 'apollo-prefix "L" 'apollo-prefix-5) -(define-key 'apollo-prefix "M" 'apollo-prefix-6) -(define-key 'apollo-prefix "N" 'apollo-prefix-7) -(define-key 'apollo-prefix "O" 'apollo-prefix-8) - - -;;; Commands to COPY, CUT, and PASTE. - -(defun apollo-copy-region () - "Copy region between point and mark to the default DM paste buffer." - (interactive) - (write-region-to-default-apollo-paste-buffer (mark) (point)) - (message "Region Copied")) - -(defun apollo-cut-region () - "Copy region between point and mark to the default DM paste buffer." - (interactive) - (write-region-to-default-apollo-paste-buffer (mark) (point)) - (kill-region (mark) (point)) - (message "Region Cut")) - -(defun apollo-paste () - "Copy region between point and mark to the default DM paste buffer." - (interactive) - (let ((x (insert-contents-of-default-apollo-paste-buffer))) - (push-mark (+ (point) x))) - (message "Pasted and Mark set")) - - -;;; Miscellaneous Commands. - -(defun minibuffer-prompt-length () - "Returns the length of the current minibuffer prompt." - (let ((window (selected-window)) - length) - (select-window (minibuffer-window)) - (let ((point (point))) - (goto-char (point-min)) - (insert-char ?a 200) - (goto-char (point-min)) - (vertical-motion 1) - (setq length (- (frame-width) (point))) - (goto-char (point-min)) - (delete-char 200) - (goto-char point)) - (select-window window) - length)) - -(defun extract-file-or-buffer-name-around-point (&optional buffer-flag) - (let ((skip-characters (if buffer-flag - "!#-%*-9=?-{}~:<>" - "!#-%*-9=?-{}~:")) - (skip-at-end (if buffer-flag - '(?@ ?. ?, ?: ?<) - '(?* ?@ ?. ?, ?:)))) - (save-excursion - (skip-chars-backward skip-characters) - (let ((start (point))) - (skip-chars-forward skip-characters) - (let* ((filename (buffer-substring start (point))) - (last-char (aref filename (- (length filename) 1)))) - (if (memq last-char skip-at-end) - (substring filename 0 -1) - filename)))))) -(fset 'extract-file-name-around-point - 'extract-file-or-buffer-name-around-point) -(fset 'extract-buf-or-file-name-around-point - 'extract-file-or-buffer-name-around-point) - -(defun apollo-find-file (&optional find-buffer-flag other-window) - "Find the file or buffer whose name the cursor is over. Buffer names are -matched only if the optional argument FIND-BUFFER-FLAG is non-NIL. If the -optional argument OTHER-WINDOW is non-NIL, the file is displayed in the other -window. When matching file names, ignores trailing '*' or '@' as in 'ls -F' -output." - (interactive) - (let* ((file-or-buffer-name - (extract-file-or-buffer-name-around-point find-buffer-flag)) - (buffer (and find-buffer-flag (get-buffer file-or-buffer-name)))) - (if (or buffer (file-exists-p file-or-buffer-name)) - (funcall (if other-window - 'switch-to-buffer-other-window - 'switch-to-buffer) - (or buffer (find-file-noselect file-or-buffer-name))) - (error "Cannot find %s \"%s\"" - (if find-buffer-flag "buffer or file" "file") - file-or-buffer-name)))) - -(defun apollo-grow-emacs-window () - "Grow Emacs's Apollo window with rubberbanding." - (interactive) - (execute-dm-command "WGE")) - -(defun apollo-move-emacs-window () - "Move Emacs's Apollo window with rubberbanding." - (interactive) - (execute-dm-command "WME")) - -(defun apollo-again () - "Copy the remainder of the current line to the end of the buffer." - (interactive) - (set-mark-command nil) - (end-of-line) - (copy-region-as-kill (mark) (point)) - (end-of-buffer) - (yank)) - -(defun apollo-exit () - "Kill current buffer after saving changes." - (interactive) - (save-buffer) - (kill-buffer (current-buffer))) - -(defun apollo-abort () - "Kill current buffer without saving changes." - (interactive) - (kill-buffer (current-buffer))) - -(defun apollo-aegis-help (filename) - "Prompt for topic and find the Apollo help file." - (interactive "sHelp on: ") - (let ((help-file (concat "/sys/help/" filename ".hlp"))) - (with-output-to-temp-buffer "*Help File*" - (buffer-disable-undo standard-output) - (save-excursion - (set-buffer standard-output) - (insert-man-file help-file) - (if (> (buffer-size) 0) - (progn - (message "Cleaning help file entry...") - (apollo-clean-help-file) - (message "")) - (message "No help found in %s" help-file)) - (set-buffer-modified-p nil))))) -(fset 'apollo-help 'apollo-aegis-help) - -;;; Make sure this will be loaded if necessary. - -(autoload 'insert-man-file "man") - -(defun apollo-clean-help-file () - (interactive "*") - ;; Remove underlining and overstriking by the same letter. - (goto-char (point-min)) - (while (search-forward "\b" nil t) - (let ((preceding (char-after (- (point) 2))) - (following (following-char))) - (cond ((= preceding following) ; x\bx - (delete-char -2)) - ((= preceding ?\_) ; _\b - (delete-char -2)) - ((= following ?\_) ; \b_ - (delete-region (1- (point)) (1+ (point))))))) - ;; Remove overstriking and carriage returns before newline. - (goto-char (point-min)) - (while (re-search-forward "\r$" nil t) - (replace-match "")) - (goto-char (point-min)) - (while (re-search-forward "^.*\r" nil t) - (replace-match "")) - ;; Fit in 79 cols rather than 80. - (indent-rigidly (point-min) (point-max) -1) - ;; Delete excess multiple blank lines. - (goto-char (point-min)) - (while (re-search-forward "\n\n\n\n*" nil t) - (replace-match "\n\n")) - ;; Remove blank lines at the beginning. - (goto-char (point-min)) - (skip-chars-forward "\n") - (delete-region (point-min) (point)) - ;; Separate the header from the main subject line. - (end-of-line) - (insert "\n") - (goto-char (point-min))) - -(defun kill-whole-line () - "Kill the line containing point. Try to retain column cursor is on." - (interactive) - (let ((old-column (current-column))) - (beginning-of-line) - (kill-line 1) - (move-to-column old-column))) - -(defun apollo-key-undefined () - "Signal that an Apollo Function Key is undefined." - (interactive) - (error "Apollo Function Key undefined")) - - -;;; Define the mouse commands. - -(defun apollo-mouse-move-point (&optional no-mark) - "Used so that pressing the left mouse button, moving the cursor, and -releasing the left mouse button leaves the mark set to the initial position -and the point set to the final position. Useful for easily marking regions -of text. If the left mouse button is pressed and released at the same place, -the mark is left at the original position of the character cursor. - -Returns (x y) frame coordinates of point in columns and lines." - (interactive) - (let* ((opoint (point)) - (owindow (selected-window)) - (x (- (read-char) 8)) - (y (- (read-char) 8)) - (edges (window-edges)) - (window nil)) - (while (and (not (eq window (selected-window))) - (or (< y (nth 1 edges)) - (>= y (nth 3 edges)) - (< x (nth 0 edges)) - (>= x (nth 2 edges)))) - (setq window (next-window window)) - (setq edges (window-edges window))) - (if (and window (not (eq window (selected-window)))) - (progn - (if (and (not *apollo-mouse-move-point-allow-minibuffer-exit*) - (eq (selected-window) (minibuffer-window))) - (error "Cannot use mouse to leave minibuffer!")) - (if (eq window (minibuffer-window)) - (error "Cannot use mouse to enter minibuffer!")))) - (if window (select-window window)) - (move-to-window-line (- y (nth 1 edges))) - (let* ((width-1 (1- (window-width window))) - (wraps (/ (current-column) width-1)) - (prompt-length (if (eq (selected-window) (minibuffer-window)) - (minibuffer-prompt-length) - 0))) - (move-to-column (+ (- x (nth 0 edges) prompt-length) - (* wraps width-1)))) - (if no-mark - (progn (setq window (selected-window)) - (if (eq owindow window) - (if (equal opoint (point)) - (pop-mark)) - (select-window owindow) - (pop-mark) - (select-window window))) - (set-mark-command nil)) - ;; Return (x y) coords of point in column and frame line numbers. - (list x y))) - -(defun apollo-mouse-move-mark () - "Used so that pressing the left mouse button, moving the cursor, and -releasing the left mouse button leaves the mark set to the initial position -and the point set to the final position. Useful for easily marking regions -of text. If the left mouse button is pressed and released at the same place, -the mark is left at the original position of the character cursor." - (interactive) - (apollo-mouse-move-point) - (if (equal (point) (mark)) - (pop-mark))) - -(defun apollo-mouse-cut () - "Move point to the location of the mouse cursor and -cut the region to the default DM paste buffer." - (interactive) - (apollo-mouse-move-mark) - (apollo-cut-region)) - -(defun apollo-mouse-copy () - "Move point to the location of the mouse cursor and -copy the region to the default DM paste buffer." - (interactive) - (apollo-mouse-move-mark) - (apollo-copy-region)) - -(defun apollo-mouse-paste () - "Move point to the location of the mouse cursor and -paste in the default DM paste buffer." - (interactive) - (apollo-mouse-move-point) - (apollo-paste)) - -(defun apollo-mouse-pop-buffer () - "Used in conjunction with the 'list-buffers' command, moves -point to cursor location and displays buffer named on current line. -Similar to a DM pop window by name to top." - (interactive) - (apollo-mouse-move-point) - (Buffer-menu-select)) - -(defun apollo-mouse-find-file () - "Find the file or buffer whose name the cursor is over. Buffers are only -allowed when in the '*Buffer List*' buffer. When matching file names, ignores -trailing '*' or '@' as in 'ls -F' output." - (interactive) - (apollo-mouse-move-point) - (let ((find-buffer-flag - (equal (buffer-name (current-buffer)) "*Buffer List*"))) - (apollo-find-file find-buffer-flag nil))) - -(defun apollo-mouse-find-file-other-window () - "Find the file or buffer whose name the cursor is over. Buffers are only -allowed when in the '*Buffer List*' buffer. When matching file names, ignores -trailing '*' or '@' as in 'ls -F' output. The file or buffer is displayed in -the other window." - (interactive) - (apollo-mouse-move-point) - (let ((find-buffer-flag - (equal (buffer-name (current-buffer)) "*Buffer List*"))) - (apollo-find-file find-buffer-flag t)) - (other-window 1)) - - -;;; Define and Enable the Mouse Key Bindings. - -(defun apollo-mouse-defaults () -"Set up default Apollo mouse key bindings for GNU Emacs." - (interactive) - (bind-apollo-mouse-button "M1D" 'apollo-mouse-move-point - 'apollo-mouse-move-point) ;MOUSE LEFT DOWN - (bind-apollo-mouse-button "M1U" 'apollo-mouse-move-mark - 'apollo-mouse-copy) ;MOUSE LEFT UP - (bind-apollo-mouse-button "M2D" 'sm-depress - 'sm-depress-meta) ;MOUSE MIDDLE DOWN - (bind-apollo-mouse-button "M2U" 'smart-key-mouse - 'smart-key-mouse-meta) ;MOUSE MIDDLE UP - (bind-apollo-mouse-button "M3D" 'sm-depress-meta) ;MOUSE RIGHT DOWN - (bind-apollo-mouse-button "M3U" 'smart-key-mouse-meta) ;MOUSE RIGHT UP -) -(apollo-mouse-defaults) - -(defun apollo-mouse-cut-copy-paste () - "Sets Apollo mouse keys to perform DM-style cut, copy, and paste. -LEFT MOUSE DOWN moves point to cursor location. LEFT MOUSE UP sets -mark, moves point to cursor location and cuts region. MID MOUSE works -the same way but does a copy. RIGHT MOUSE sets point and pastes at -cursor location. These key bindings are also effective in DM windows -until \\[apollo-mouse-cancel-cut-copy-paste] is executed in the GNU Emacs DM -window." - (interactive) - (bind-apollo-mouse-button "M1D" 'apollo-mouse-move-point) ;MOUSE LEFT DOWN - (bind-apollo-mouse-button "M1U" 'apollo-mouse-cut) ;MOUSE LEFT UP - (bind-apollo-mouse-button "M2D" 'apollo-mouse-move-point) ;MOUSE MIDDLE DOWN - (bind-apollo-mouse-button "M2U" 'apollo-mouse-copy) ;MOUSE MIDDLE UP - (bind-apollo-mouse-button "M3D" 'apollo-mouse-paste) ;MOUSE RIGHT DOWN - (unbind-apollo-mouse-button "M3U") ;MOUSE RIGHT UP - (message "Mouse Edit Mode: left=cut, mid=copy, right=paste") - (execute-dm-command "msg 'Mouse Edit Mode: left=cut, mid=copy, right=paste';kd m1 dr;echo ke;kd m1u xd ke;kd m2 dr;echo ke;kd m2u xc ke; kd m3 xp ke;kd m3u ke") -) - -(defun apollo-mouse-cancel-cut-copy-paste () - "Sets Apollo mouse keys back to defaults with GNU Emacs and personal -settings within the DM." - (interactive) - (apollo-mouse-defaults) - (message "Default mouse key bindings set") - (execute-dm-command - (concat "msg 'Mouse Edit Mode canceled; personal mouse keys restored';" - "cmdf " *dm-mouse-key-bindings-file*)) -) - -;;; Define and Enable the Function Key Bindings. - -(bind-apollo-function-key "TABS" "\C-I") ;Shift TAB -(bind-apollo-function-key "TABC" "\C-I") ;Control TAB -(bind-apollo-function-key "RETS" "\C-M") ;Shift RET -(bind-apollo-function-key "RETC" "\C-M") ;Control RET -(bind-apollo-function-key "LINE_DEL" 'kill-whole-line) ;LINE DEL -(bind-apollo-function-key "CHAR_DEL" "\C-D") ;CHAR DEL -(bind-apollo-function-key "L_BAR_ARROW" "\C-A") ;LEFT BAR ARROW -(bind-apollo-function-key "R_BAR_ARROW" "\C-E") ;RIGHT BAR ARROW -(bind-apollo-function-key "L_BOX_ARROW" "\C-x>") ;LEFT BOX ARROW -(bind-apollo-function-key "UP_ARROW" "\C-P") ;UP ARROW -(bind-apollo-function-key "L8S" "\M-1\M-V") ;Shift UP ARROW - -;;; RIGHT BOX ARROW is the Default Meta Key. If the Meta Key is changed with -;;; SELECT-APOLLO-META-KEY, then RIGHT BOX ARROW signals an error. - -(select-apollo-meta-key "R1") ; Make POP the META key instead. -(bind-apollo-function-key "R_BOX_ARROW" "\C-x<") ;RIGHT BOX ARROW -(bind-apollo-function-key "LEFT_ARROW" "\C-B") ;LEFT ARROW -(bind-apollo-function-key "RIGHT_ARROW" "\C-F") ;RIGHT ARROW -(bind-apollo-function-key "DOWN_ARROW" "\C-N") ;DOWN ARROW -(bind-apollo-function-key "LES" "\M-1\C-V") ;Shift DOWN ARROW -(bind-apollo-function-key "R3S" 'apollo-find-file) ;Shift READ -(bind-apollo-function-key "MARK" 'set-mark-command) ;MARK -(bind-apollo-function-key "INS_MODE" 'overwrite-mode) ;INS MODE -(bind-apollo-function-key "L2S" "\C-Y") ;Shift LINE DEL -(bind-apollo-function-key "L3S" "\C-D") ;Shift CHAR DEL -(bind-apollo-function-key "COPY" 'apollo-copy-region) ;COPY -(bind-apollo-function-key "CUT" 'apollo-cut-region) ;CUT -(bind-apollo-function-key "PASTE" 'apollo-paste) ;PASTE -(bind-apollo-function-key "UNDO" 'undo) ;UNDO -(bind-apollo-function-key "GROW" 'apollo-grow-emacs-window) ;GROW -(bind-apollo-function-key "MOVE" 'apollo-move-emacs-window) ;MOVE -(bind-apollo-function-key "LAS" "\M-B") ;Shift LEFT ARROW -(bind-apollo-function-key "LCS" "\M-F") ;Shift RIGHT ARROW -(bind-apollo-function-key "UP_BOX_ARROW" "\M-V") ;UP BOX ARROW -(bind-apollo-function-key "LDS" "\M-<") ;Shift UP BOX ARROW -(bind-apollo-function-key "DOWN_BOX_ARROW" "\C-V") ;DOWN BOX ARROW -(bind-apollo-function-key "LFS" "\M->") ;Shift DOWN BOX ARROW -(bind-apollo-function-key "AGAIN" 'apollo-again) ;AGAIN -(bind-apollo-function-key "EXIT" 'apollo-exit) ;EXIT -(bind-apollo-function-key "ABORT" 'apollo-abort) ;ABORT -(bind-apollo-function-key "SAVE" 'save-buffer) ;SAVE -(bind-apollo-function-key "HOLD" 'apollo-key-undefined) ;HOLD - -(defun install-apollo-dm-preemptive-key-bindings () - (bind-apollo-function-key "L4S" "\M-<") ;Shift LEFT BAR ARROW - (bind-apollo-function-key "L5" 'execute-dm-command) ;CMD - (bind-apollo-function-key "L6S" "\M->") ;Shift RIGHT BAR ARROW - (bind-apollo-function-key "LB" 'other-window) ;NEXT WNDW - (bind-apollo-function-key "LBS" 'delete-window) ;Shift NEXT WNDW - (bind-apollo-function-key "READ" 'find-file-read-only) ;READ - (bind-apollo-function-key "EDIT" 'find-file) ;EDIT - (bind-apollo-function-key "SHELL" 'shell) ;SHELL - (bind-apollo-function-key "UNIXHELP" 'manual-entry) ;HELP - (bind-apollo-function-key "AEGISHELP" 'apollo-aegis-help)) ;HELP - -(if *preempt-display-manager-bindings* - (install-apollo-dm-preemptive-key-bindings)) - -(run-hooks '*apollo-key-bindings-hook*) +(load "term/vt100" nil t) (provide 'apollo) diff --text -u /dev/null 'xemacs-21.5.2/lisp/term/cygwin.el' Index: ././lisp/term/cygwin.el --- ././lisp/term/cygwin.el Thu Jan 1 09:00:00 1970 +++ ././lisp/term/cygwin.el Fri Jun 22 10:50:01 2001 @@ -0,0 +1,31 @@ +;;; cygwin.el --- define function key sequences for the Cygwin console + +;; Copyright (C) 2001 Ben Wing. + +;; Author: Ben Wing +;; Keywords: terminals + +;; 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. + +;;; Commentary: + +;;; Code: + +(load "term/linux" nil t) diff --text -u 'xemacs-21.5.1/lisp/term/linux.el' 'xemacs-21.5.2/lisp/term/linux.el' Index: ././lisp/term/linux.el --- ././lisp/term/linux.el Sun Dec 22 05:48:41 1996 +++ ././lisp/term/linux.el Fri Jun 22 10:50:01 2001 @@ -21,61 +21,105 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;;; Code: +;;; Synched up with: FSF 21.0.103. +;;; (All the define-keys are our own.) -;; Termcap or terminfo should set these next four? -(define-key function-key-map "\e[A" [up]) -(define-key function-key-map "\e[B" [down]) -(define-key function-key-map "\e[C" [right]) -(define-key function-key-map "\e[D" [left]) - -(define-key function-key-map "\e[[A" [f1]) -(define-key function-key-map "\e[[B" [f2]) -(define-key function-key-map "\e[[C" [f3]) -(define-key function-key-map "\e[[D" [f4]) -(define-key function-key-map "\e[[E" [f5]) -(define-key function-key-map "\e[17~" [f6]) -(define-key function-key-map "\e[18~" [f7]) -(define-key function-key-map "\e[19~" [f8]) -(define-key function-key-map "\e[20~" [f9]) -(define-key function-key-map "\e[21~" [f10]) -(define-key function-key-map "\e[23~" [f11]) -(define-key function-key-map "\e[24~" [f12]) -(define-key function-key-map "\e[25~" [f13]) -(define-key function-key-map "\e[26~" [f14]) -(define-key function-key-map "\e[28~" [f15]) -(define-key function-key-map "\e[29~" [f16]) -(define-key function-key-map "\e[31~" [f17]) -(define-key function-key-map "\e[32~" [f18]) -(define-key function-key-map "\e[33~" [f19]) -(define-key function-key-map "\e[34~" [f20]) - -(define-key function-key-map "\e[1~" [home]) -(define-key function-key-map "\e[2~" [insert]) -(define-key function-key-map "\e[3~" [delete]) -(define-key function-key-map "\e[4~" [end]) -(define-key function-key-map "\e[5~" [prior]) -(define-key function-key-map "\e[6~" [next]) -(define-key function-key-map "\e[G" [kp-5]) - -(define-key function-key-map "\eOp" [kp-0]) -(define-key function-key-map "\eOq" [kp-1]) -(define-key function-key-map "\eOr" [kp-2]) -(define-key function-key-map "\eOs" [kp-3]) -(define-key function-key-map "\eOt" [kp-4]) -(define-key function-key-map "\eOu" [kp-5]) -(define-key function-key-map "\eOv" [kp-6]) -(define-key function-key-map "\eOw" [kp-7]) -(define-key function-key-map "\eOx" [kp-8]) -(define-key function-key-map "\eOy" [kp-9]) - -(define-key function-key-map "\eOl" [kp-add]) -(define-key function-key-map "\eOS" [kp-subtract]) -(define-key function-key-map "\eOM" [kp-enter]) -(define-key function-key-map "\eOR" [kp-multiply]) -(define-key function-key-map "\eOQ" [kp-divide]) -(define-key function-key-map "\eOn" [kp-decimal]) -(define-key function-key-map "\eOP" [kp-numlock]) +;;; Commentary: + +;;; Code: + +;; The Linux console handles Latin-1 by default. + +(if-fboundp 'set-terminal-coding-system + (unless (declare-fboundp (terminal-coding-system)) + (set-terminal-coding-system 'iso-8859-1))) + +;; Make Latin-1 input characters work, too. +;; Meta will continue to work, because the kernel +;; turns that into Escape. + +(let ((value (current-input-mode))) + ;; The third arg only matters in that it is not t or nil. + (set-input-mode (nth 0 value) (nth 1 value) 'iso-latin-1 (nth 3 value))) + +;; The defines below seem to get automatically set in recent Termcaps. +;; It was probably the case that in 1996, there was no good Linux termcap, +;; which is why such a file was needed. + +; ;; Termcap or terminfo should set these next four? +; (define-key function-key-map "\e[A" [up]) +; (define-key function-key-map "\e[B" [down]) +; (define-key function-key-map "\e[C" [right]) +; (define-key function-key-map "\e[D" [left]) + +; (define-key function-key-map "\e[[A" [f1]) +; (define-key function-key-map "\e[[B" [f2]) +; (define-key function-key-map "\e[[C" [f3]) +; (define-key function-key-map "\e[[D" [f4]) +; (define-key function-key-map "\e[[E" [f5]) +; (define-key function-key-map "\e[17~" [f6]) +; (define-key function-key-map "\e[18~" [f7]) +; (define-key function-key-map "\e[19~" [f8]) +; (define-key function-key-map "\e[20~" [f9]) +; (define-key function-key-map "\e[21~" [f10]) +; (define-key function-key-map "\e[23~" [f11]) +; (define-key function-key-map "\e[24~" [f12]) +; (define-key function-key-map "\e[25~" [f13]) +; (define-key function-key-map "\e[26~" [f14]) +; (define-key function-key-map "\e[28~" [f15]) +; (define-key function-key-map "\e[29~" [f16]) +; (define-key function-key-map "\e[31~" [f17]) +; (define-key function-key-map "\e[32~" [f18]) +; (define-key function-key-map "\e[33~" [f19]) +; (define-key function-key-map "\e[34~" [f20]) + +;; But they come out f13-f20 (see above), which are not what we +;; normally call the shifted function keys. F11 = Shift-F1, F2 = +;; Shift-F2. What a mess, see below. +(define-key function-key-map "\e[25~" [(shift f3)]) +(define-key function-key-map "\e[26~" [(shift f4)]) +(define-key function-key-map "\e[28~" [(shift f5)]) +(define-key function-key-map "\e[29~" [(shift f6)]) +(define-key function-key-map "\e[31~" [(shift f7)]) +(define-key function-key-map "\e[32~" [(shift f8)]) +(define-key function-key-map "\e[33~" [(shift f9)]) +(define-key function-key-map "\e[34~" [(shift f10)]) + +;; I potentially considered these. They would make people's Shift-F1 and +;; Shift-F2 bindings work -- but of course they would fail to work if the +;; person also put F11 and F12 bindings. It might also be confusing because +;; the person with no bindings who hits f11 gets "error shift-f1 unbound". +;; #### If only there were a proper way around this. +;(define-key global-map 'f11 [(shift f1)]) +;(define-key global-map 'f12 [(shift f2)]) + +; (define-key function-key-map "\e[1~" [home]) + ;; seems to not get handled correctly automatically + (define-key function-key-map "\e[2~" [insert]) +; (define-key function-key-map "\e[3~" [delete]) +; (define-key function-key-map "\e[4~" [end]) +; (define-key function-key-map "\e[5~" [prior]) +; (define-key function-key-map "\e[6~" [next]) +; (define-key function-key-map "\e[G" [kp-5]) + +; (define-key function-key-map "\eOp" [kp-0]) +; (define-key function-key-map "\eOq" [kp-1]) +; (define-key function-key-map "\eOr" [kp-2]) +; (define-key function-key-map "\eOs" [kp-3]) +; (define-key function-key-map "\eOt" [kp-4]) +; (define-key function-key-map "\eOu" [kp-5]) +; (define-key function-key-map "\eOv" [kp-6]) +; (define-key function-key-map "\eOw" [kp-7]) +; (define-key function-key-map "\eOx" [kp-8]) +; (define-key function-key-map "\eOy" [kp-9]) + +; (define-key function-key-map "\eOl" [kp-add]) +; (define-key function-key-map "\eOS" [kp-subtract]) +; (define-key function-key-map "\eOM" [kp-enter]) +; (define-key function-key-map "\eOR" [kp-multiply]) +; (define-key function-key-map "\eOQ" [kp-divide]) +; (define-key function-key-map "\eOn" [kp-decimal]) +; (define-key function-key-map "\eOP" [kp-numlock]) ;;; linux.el ends here diff --text -u 'xemacs-21.5.1/lisp/term/lk201.el' 'xemacs-21.5.2/lisp/term/lk201.el' Index: ././lisp/term/lk201.el --- ././lisp/term/lk201.el Sun Dec 22 05:48:41 1996 +++ ././lisp/term/lk201.el Fri Jun 22 10:50:01 2001 @@ -17,7 +17,7 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. -;;; Synched up with: Not in FSF +;;; Synched up with: FSF 21.0.103. ;;; Commentary: diff --text -u 'xemacs-21.5.1/lisp/term/news.el' 'xemacs-21.5.2/lisp/term/news.el' Index: ././lisp/term/news.el --- ././lisp/term/news.el Sun Dec 22 05:48:40 1996 +++ ././lisp/term/news.el Fri Jun 22 10:50:01 2001 @@ -22,11 +22,15 @@ ;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, ;;; Boston, MA 02111-1307, USA. +;;; Synched up with: FSF 21.0.103. + ;;; Commentary: ;;; Uses the Emacs 19 terminal initialization features --- won't work with 18. ;;; Code: + +(defvar news-fkey-prefix) (if (boundp 'news-fkey-prefix) nil diff --text -u 'xemacs-21.5.1/lisp/term/vt100.el' 'xemacs-21.5.2/lisp/term/vt100.el' Index: ././lisp/term/vt100.el --- ././lisp/term/vt100.el Thu Dec 19 07:42:59 1996 +++ ././lisp/term/vt100.el Fri Jun 22 10:50:01 2001 @@ -1,9 +1,10 @@ ;;; vt100.el --- define VT100 function key sequences in function-key-map +;; Copyright (C) 1989, 1993 Free Software Foundation, Inc. + ;; Author: FSF ;; Keywords: terminals -;; Copyright (C) 1989, 1993 Free Software Foundation, Inc. ;;; This file is part of GNU Emacs. ;;; ;;; GNU Emacs is free software; you can redistribute it and/or modify @@ -20,6 +21,8 @@ ;;; along with GNU Emacs; see the file COPYING. If not, write to ;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +;;; Synched up with: FSF 21.0.103. + ;;; Commentary: ;; Uses the Emacs 19 terminal initialization features --- won't work with 18. @@ -37,7 +40,7 @@ (load "term/lk201" nil t) ;;; Controlling the screen width. -(defconst vt100-wide-mode (= (frame-width) 132) +(defvar vt100-wide-mode (= (frame-width) 132) "t if vt100 is in 132-column mode.") (defun vt100-wide-mode (&optional arg) diff --text -u 'xemacs-21.5.1/lisp/update-elc-2.el' 'xemacs-21.5.2/lisp/update-elc-2.el' Index: ././lisp/update-elc-2.el --- ././lisp/update-elc-2.el Fri Apr 13 03:21:37 2001 +++ ././lisp/update-elc-2.el Mon Jun 18 16:09:58 2001 @@ -113,7 +113,7 @@ (when (and (file-exists-p file-c) (not (file-exists-p file))) (message "Removing %s; no corresponding .el" file-c) - (delete-file file-c)))) + (delete-file file-c))))) ;; We descend recursively (let ((dirs (directory-files dir t nil t)) @@ -124,8 +124,7 @@ (file-directory-p dir)) (do-update-elc-2 dir compile-stage-p seen)))) - ))) - + )) (defun batch-update-elc-2 () (defvar command-line-args-left) @@ -142,7 +141,22 @@ dir) (message "Recompiling updated .els in directory tree `%s'..." dir) (do-update-elc-2 dir t nil) - (message "Recompiling updated .els in directory tree `%s'...done" dir)) + (message "Recompiling updated .els in directory tree `%s'...done" dir) + ;; don't depend on being able to autoload `update-autoload-files'! + (load "autoload") + (update-autoload-files (list dir)) + (byte-recompile-file (expand-file-name "auto-autoloads.el" dir) 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)) + ;; likewise here. + (load "cus-dep") + (Custom-make-dependencies dir) + (byte-recompile-file (expand-file-name "custom-load.el" dir) 0) + (when (featurep 'mule) + (Custom-make-dependencies (expand-file-name "mule" dir)) + (byte-recompile-file (expand-file-name "mule/custom-load.el" dir) 0)) + ) (setq command-line-args-left nil)) ;;; update-elc-2.el ends here diff --text -u 'xemacs-21.5.1/lisp/update-elc.el' 'xemacs-21.5.2/lisp/update-elc.el' Index: ././lisp/update-elc.el --- ././lisp/update-elc.el Mon May 7 16:51:15 2001 +++ ././lisp/update-elc.el Fri Jun 22 10:49:59 2001 @@ -2,8 +2,10 @@ ;; Copyright (C) 1997 Free Software Foundation, Inc. ;; Copyright (C) 1996 Sun Microsystems, Inc. +;; Copyright (C) 2001 Ben Wing. -;; Author: Ben Wing , Steven L Baur +;; Author: Ben Wing +;; Based On: Original by Steven L Baur ;; Maintainer: XEmacs Development Team ;; Keywords: internal @@ -46,6 +48,10 @@ (defvar processed nil) (defvar update-elc-files-to-compile nil) +(defvar need-to-rebuild-autoloads nil) +(defvar need-to-rebuild-mule-autoloads nil) +(defvar need-to-recompile-autoloads nil) +(defvar need-to-recompile-mule-autoloads nil) ;(setq update-elc-files-to-compile ; (delq nil @@ -72,19 +78,18 @@ (load "setup-paths.el") (load "dump-paths.el") -(let ((autol (packages-list-autoloads (concat default-directory "../lisp")))) - ;; (print (prin1-to-string autol)) - (while autol - (let ((src (car autol))) - (if (and (file-exists-p src) - (file-newer-than-file-p src (concat src "c"))) - (setq update-elc-files-to-compile - (cons src update-elc-files-to-compile)))) - (setq autol (cdr autol)))) - -;; (print (prin1-to-string update-elc-files-to-compile)) - -(let (preloaded-file-list site-load-packages need-to-dump dumped-exe) +(defun update-elc-chop-extension (file) + (if (string-match "\\.elc?$" file) + (substring file 0 (match-beginning 0)) + file)) + +;; we used to call packages-list-autoloads here, but it's false generality. +;; we need to handle each autoload file differently and there are only +;; two of them. + +(let (preloaded-file-list site-load-packages need-to-dump dumped-exe + files-to-process) + (load (expand-file-name "../lisp/dumped-lisp.el")) (setq dumped-exe @@ -99,58 +104,65 @@ (setq preloaded-file-list (append package-preloaded-file-list preloaded-file-list - '("bytecomp" "byte-optimize") packages-hardcoded-lisp))) (load (concat default-directory "../site-packages") t t) (setq preloaded-file-list (append packages-hardcoded-lisp preloaded-file-list - packages-useful-lisp site-load-packages)) - (while preloaded-file-list - (let ((arg (car preloaded-file-list))) - ;; (print (prin1-to-string arg)) - - ;; now check if .el or .elc is newer than the dumped exe. - ;; if so, need to redump. - (let ((frob - (if (string-match "\\.elc?\\'" arg) - (substring arg 0 (match-beginning 0)) - arg))) - (when (and dumped-exe - (or (and (file-exists-p - (concat "../lisp/" frob ".el")) - (file-newer-than-file-p - (concat "../lisp/" frob ".el") - dumped-exe)) - (and (file-exists-p - (concat "../lisp/" frob ".elc")) - (file-newer-than-file-p - (concat "../lisp/" frob ".elc") - dumped-exe)))) - (setq need-to-dump t))) - - (if (null (member (file-name-nondirectory arg) - packages-unbytecompiled-lisp)) - (progn - (setq arg (locate-library arg)) - (if (null arg) + ;; bytecomp, byte-optimize, and autoload are mentioned in + ;; packages-useful-lisp. + (setq files-to-process (append packages-useful-lisp preloaded-file-list)) + (while files-to-process + (let* ((arg (car files-to-process)) + (arg-is-preloaded (member arg preloaded-file-list)) + (arg-sans-extension (update-elc-chop-extension arg)) + (full-arg (locate-library arg-sans-extension)) + (full-arg-sans-extension + (if (null full-arg) (progn - (print (format "Error: Library file %s not found" - (car preloaded-file-list))) + (print (format "Error: Library file %s not found" arg)) ;; Uncomment in case of trouble ;;(print (format "late-packages: %S" late-packages)) - ;;(print (format "guessed-roots: %S" (paths-find-emacs-roots invocation-directory invocation-name))) - (kill-emacs))) - (if (string-match "\\.elc?\\'" arg) - (setq arg (substring arg 0 (match-beginning 0)))) - (if (and (null (member arg processed)) - (file-exists-p (concat arg ".el")) - (file-newer-than-file-p (concat arg ".el") - (concat arg ".elc"))) - (setq processed (cons (concat arg ".el") processed))))) - (setq preloaded-file-list (cdr preloaded-file-list)))) + ;;(print (format "guessed-roots: %S" + ;; (paths-find-emacs-roots + ;; invocation-directory invocation-name))) + (kill-emacs)) + (update-elc-chop-extension full-arg))) + (full-arg-el (concat full-arg-sans-extension ".el")) + (full-arg-elc (concat full-arg-sans-extension ".elc")) + (full-arg-dir (file-name-directory full-arg-el)) + (autoload-file (expand-file-name "auto-autoloads.el" full-arg-dir)) + (autoload-is-mule (string-match "[/\\]mule[/\\]$" full-arg-dir))) + + ;; (print full-arg-el) + + ;; now check if .el or .elc is newer than the dumped exe. + ;; if so, need to redump. + (when (and dumped-exe arg-is-preloaded + (or (and (file-exists-p full-arg-el) + (file-newer-than-file-p full-arg-el dumped-exe)) + (and (file-exists-p full-arg-elc) + (file-newer-than-file-p full-arg-elc dumped-exe)))) + (setq need-to-dump t)) + + (when (or (not (file-exists-p autoload-file)) + (and (file-exists-p full-arg-el) + (file-newer-than-file-p full-arg-el autoload-file))) + (if autoload-is-mule + (setq need-to-rebuild-mule-autoloads t) + (setq need-to-rebuild-autoloads t))) + + (if (and (not (member (file-name-nondirectory arg) + packages-unbytecompiled-lisp)) + (not (member full-arg-el processed)) + (file-exists-p full-arg-el) + (or (not (file-exists-p full-arg-elc)) + (file-newer-than-file-p full-arg-el full-arg-elc))) + (setq processed (cons full-arg-el processed))) + + (setq files-to-process (cdr files-to-process)))) (if need-to-dump (condition-case nil @@ -159,53 +171,95 @@ ) +(when (or need-to-rebuild-autoloads + (not (file-exists-p "../lisp/auto-autoloads.el")) + (not (file-exists-p "../lisp/auto-autoloads.elc")) + (file-newer-than-file-p "../lisp/auto-autoloads.el" + "../lisp/auto-autoloads.elc")) + (setq need-to-recompile-autoloads t)) + +(when (or need-to-rebuild-mule-autoloads + (not (file-exists-p "../lisp/mule/auto-autoloads.el")) + (not (file-exists-p "../lisp/mule/auto-autoloads.elc")) + (file-newer-than-file-p "../lisp/mule/auto-autoloads.el" + "../lisp/mule/auto-autoloads.elc")) + (setq need-to-recompile-mule-autoloads t)) + +(when (not (featurep 'mule)) + ;; sorry charlie. + (setq need-to-rebuild-mule-autoloads nil + need-to-recompile-mule-autoloads nil)) + (setq update-elc-files-to-compile (append update-elc-files-to-compile - processed)) + (nreverse processed))) -;; (print (prin1-to-string update-elc-files-to-compile)) +;; (print update-elc-files-to-compile) -(if update-elc-files-to-compile - (progn - (let ((bytecomp-arg (locate-library "bytecomp")) - (byte-opt-arg (locate-library "byte-optimize"))) - (if (string-match "\\.elc?\\'" bytecomp-arg) - (setq bytecomp-arg (substring bytecomp-arg 0 - (match-beginning 0)))) - (setq bytecomp-arg (concat bytecomp-arg ".el")) - (if (string-match "\\.elc?\\'" byte-opt-arg) - (setq byte-opt-arg (substring byte-opt-arg 0 - (match-beginning 0)))) - (setq byte-opt-arg (concat byte-opt-arg ".el")) - ;; if bytecomp or byte-optimize need recompiling, then load - ;; the .el version of them first, recompile them, and reload - ;; the .elc versions to recompile everything else (so we won't - ;; be waiting until the cows come home). - (setq command-line-args - (append '("-l" "loadup-el.el" "run-temacs" - "-batch" "-q" "-no-site-file") - (if (or - (member bytecomp-arg update-elc-files-to-compile) - (member byte-opt-arg update-elc-files-to-compile)) - (append - '("-eval" "(setq load-ignore-elc-files t)" - "-l" "bytecomp") - (if (member bytecomp-arg - update-elc-files-to-compile) - (append '("-f" "batch-byte-compile-one-file") - (list bytecomp-arg))) - (if (member byte-opt-arg - update-elc-files-to-compile) - (append '("-f" "batch-byte-compile-one-file") - (list byte-opt-arg))) - '("-eval" "(setq load-ignore-elc-files nil)"))) - '("-l" "bytecomp" "-f" "batch-byte-compile") - (delete byte-opt-arg - (delete bytecomp-arg - update-elc-files-to-compile))))) - (load "loadup-el.el")) - (condition-case nil - (delete-file "../src/NOBYTECOMPILE") - (file-error nil))) +(if (and (not update-elc-files-to-compile) + (not need-to-rebuild-autoloads) + (not need-to-rebuild-mule-autoloads) + (not need-to-recompile-autoloads) + (not need-to-recompile-mule-autoloads)) + (condition-case nil + (delete-file "../src/NOBYTECOMPILE") + (file-error nil)) + (let* ( + (bytecomp-arg (concat (update-elc-chop-extension + (locate-library "bytecomp")) ".el")) + (byte-opt-arg (concat (update-elc-chop-extension + (locate-library "byte-optimize")) ".el")) + (autoload-arg (concat (update-elc-chop-extension + (locate-library "autoload")) ".el")) + ) + (setq inhibit-autoloads t) + (setq command-line-args + (append + '("-l" "loadup-el.el" "run-temacs" "-batch" "-q" "-no-site-file") + ;; if bytecomp or byte-optimize need recompiling, then load + ;; the .el version of them first, recompile them, and reload + ;; the .elc versions to recompile everything else (so we won't + ;; be waiting until the cows come home). we need to set + ;; load-ignore-elc-files because byte-optimize gets autoloaded + ;; from bytecomp. + (if (or (member bytecomp-arg update-elc-files-to-compile) + (member byte-opt-arg update-elc-files-to-compile)) + (append + '("-eval" "(setq load-ignore-elc-files t)" "-l" "bytecomp") + (if (member bytecomp-arg update-elc-files-to-compile) + (append '("-f" "batch-byte-compile-one-file") + (list bytecomp-arg))) + (if (member byte-opt-arg update-elc-files-to-compile) + (append '("-f" "batch-byte-compile-one-file") + (list byte-opt-arg))) + '("-eval" "(setq load-ignore-elc-files nil)"))) + '("-l" "bytecomp") + ;; likewise, recompile autoload.el if out-of-date. + (if (member autoload-arg update-elc-files-to-compile) + (append '("-f" "batch-byte-compile-one-file") + (list autoload-arg))) + ;; then generate autoloads for lisp and maybe lisp/mule. + (if (or need-to-rebuild-autoloads + need-to-rebuild-mule-autoloads) + '("-l" "autoload")) + (if need-to-rebuild-autoloads + '("-f" "batch-force-update-one-directory" "../lisp")) + (if need-to-rebuild-mule-autoloads + '("-f" "batch-force-update-one-directory" "../lisp/mule")) + (if need-to-recompile-autoloads + '("-f" "batch-byte-compile-one-file" + "../lisp/auto-autoloads.el")) + (if need-to-recompile-mule-autoloads + '("-f" "batch-byte-compile-one-file" + "../lisp/mule/auto-autoloads.el")) + ;; now load the autoloads and compile alles anderes. + '("-eval" "(setq inhibit-autoloads nil)" + "-f" "startup-load-autoloads" + "-f" "batch-byte-compile") + (delete autoload-arg + (delete byte-opt-arg + (delete bytecomp-arg + update-elc-files-to-compile)))))) + (load "loadup-el.el")) (kill-emacs) diff --text -u 'xemacs-21.5.1/lisp/version.el' 'xemacs-21.5.2/lisp/version.el' Index: ././lisp/version.el --- ././lisp/version.el Fri Apr 13 03:21:38 2001 +++ ././lisp/version.el Sun Jun 10 19:42:24 2001 @@ -18,7 +18,7 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the +;; 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. diff --text -u 'xemacs-21.5.1/lisp/wid-browse.el' 'xemacs-21.5.2/lisp/wid-browse.el' Index: ././lisp/wid-browse.el --- ././lisp/wid-browse.el Sat May 5 19:51:25 2001 +++ ././lisp/wid-browse.el Sun Jun 10 19:42:24 2001 @@ -7,20 +7,20 @@ ;; Version: 1.9960 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ -;; This file is part of GNU Emacs. +;; This file is part of XEmacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; 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. -;; GNU Emacs is distributed in the hope that it will be useful, +;; 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 GNU Emacs; see the file COPYING. If not, write to the +;; 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. diff --text -u 'xemacs-21.5.1/lisp/widgets-gtk.el' 'xemacs-21.5.2/lisp/widgets-gtk.el' Index: ././lisp/widgets-gtk.el --- ././lisp/widgets-gtk.el Sat May 5 19:51:25 2001 +++ ././lisp/widgets-gtk.el Wed May 9 22:43:54 2001 @@ -134,7 +134,6 @@ (gtk-widget-get-style (frame-property nil 'text-widget)))) widget) - (setq x widget) widget)) (defun gtk-widget-property-internal () diff --text -u 'xemacs-21.5.1/lisp/win32-native.el' 'xemacs-21.5.2/lisp/win32-native.el' Index: ././lisp/win32-native.el --- ././lisp/win32-native.el Fri Apr 13 03:21:39 2001 +++ ././lisp/win32-native.el Fri Jun 8 21:21:11 2001 @@ -1,4 +1,4 @@ -;;; win32-native.el --- Lisp routines for MS Windows. +;;; win32-native.el --- Lisp routines when running on native MS Windows. ;; Copyright (C) 1994 Free Software Foundation, Inc. ;; Copyright (C) 2000 Ben Wing. @@ -23,24 +23,26 @@ ;; Free Software Foundation, 59 Temple Place - Suite 330, ;; Boston, MA 02111-1307, USA. -;;; Synched up with: Not synched with FSF. Almost completely divergent. +;;; Synched up with: Not in FSF. ;;; (FSF has stuff in w32-fns.el and term/w32-win.el.) ;;; Commentary: ;; This file is dumped with XEmacs for MS Windows (without cygwin). +;; It is for stuff that is used specifically when `system-type' eq +;; `windows-nt' (i.e. also applies to MinGW), and has nothing to do +;; with the `mswindows' device type. Thus, it probably applies in +;; non-interactive mode as well, and it DOES NOT APPLY to Cygwin. -;; Based on NT Emacs version by Geoff Voelker (voelker@cs.washington.edu) +;; Based (originally) on NT Emacs version by Geoff Voelker +;; (voelker@cs.washington.edu) ;; Ported to XEmacs by Marc Paquette ;; Largely modified by Kirill M. Katsnelson +;; Rewritten from scratch by Ben Wing . No code in common +;; with FSF. ;;; Code: -;; The cmd.exe shell uses the "/c" switch instead of the "-c" switch -;; for executing its command line argument (from simple.el). -;; #### Oh if we had an alist of shells and their command switches. -(setq shell-command-switch "/c") - ;; For appending suffixes to directories and files in shell ;; completions. This screws up cygwin users so we leave it out for ;; now. Uncomment this if you only ever want to use cmd. @@ -61,6 +63,27 @@ (setq grep-regexp-alist '(("^\\(\\([a-zA-Z]:\\)?[^:( \t\n]+\\)[:( \t]+\\([0-9]+\\)[:) \t]" 1 3))) +(defvar mswindows-system-shells '("cmd" "cmd.exe" "command" "command.com" + "4nt" "4nt.exe" "4dos" "4dos.exe" + "ndos" "ndos.exe") + "List of strings recognized as Windows NT/9X system shells. +These are shells with native semantics, e.g. they use `/c', not '-c', +to pass a command in.") + +(defun mswindows-system-shell-p (shell-name) + (member (downcase (file-name-nondirectory shell-name)) + mswindows-system-shells)) + +(defun init-mswindows-at-startup () + ;; shell-file-name is initialized in the C code (callproc.c) from + ;; SHELL or COMSPEC. + ;; #### If only shell-command-switch could be a function. But there + ;; is code littered around that uses it. + ;; #### Maybe we should set a symbol-value handler on `shell-file-name' + ;; that automatically sets shell-command-switch? + (if (mswindows-system-shell-p shell-file-name) + (setq shell-command-switch "/c"))) + ;;---------------------------------------------------------------------- ;; Quoting process args ;;-------------------- @@ -76,28 +99,32 @@ ;; we also include shell metachars if asked. ;; note that \ is NOT included! it's perfectly OK to include an ;; arg like c:\ or c:\foo. - (if (string-match (if quote-shell "[ \t\n\r\f*?\"<>|&^%]" "[ \t\n\r\f*?\"]") - arg) - (progn - ;; handle nested quotes, possibly preceded by backslashes - (setq arg (replace-in-string arg "\\([\\]*\\)\"" "\\1\\1\\\\\"")) - ;; handle trailing backslashes - (setq arg (replace-in-string arg "\\([\\]+\\)$" "\\1\\1")) - (concat "\"" arg "\"")) - arg)) + (cond ((equal arg "") "\"\"") + ((string-match + (if quote-shell "[ \t\n\r\f*?\"<>|&^%]" "[ \t\n\r\f*?\"]") + arg) + ;; handle nested quotes, possibly preceded by backslashes + (setq arg (replace-in-string arg "\\([\\]*\\)\"" "\\1\\1\\\\\"")) + ;; handle trailing backslashes + (setq arg (replace-in-string arg "\\([\\]+\\)$" "\\1\\1")) + (concat "\"" arg "\"")) + (t arg))) (defun mswindows-quote-one-simple-arg (arg &optional quote-shell) ;; just put double quotes around args with spaces (and maybe shell ;; metachars). - (if (string-match (if quote-shell "[ \t\n\r\f*?\"<>|&^%]" "[ \t\n\r\f*?]") - arg) - (concat "\"" arg "\"") - arg)) + (cond ((equal arg "") "\"\"") + ((string-match + (if quote-shell "[ \t\n\r\f*?\"<>|&^%]" "[ \t\n\r\f*?]") + arg) + (concat "\"" arg "\"")) + (t arg))) (defun mswindows-quote-one-command-arg (arg) ;; quote an arg to get it past COMMAND.COM/CMD.EXE: need to quote shell ;; metachars with ^. - (replace-in-string "[<>|&^%]" "^\\1" arg)) + (cond ((equal arg "") "\"\"") + (t (replace-in-string "[<>|&^%]" "^\\1" arg)))) (defun mswindows-construct-verbatim-command-line (program args) (mapconcat #'identity args " ")) @@ -198,7 +225,11 @@ args " ")) (defvar mswindows-construct-process-command-line-alist - '(("[\\/].?.?sh\\." . mswindows-construct-verbatim-command-line) + '( + ;; at one point (pre-1.0), this was required for Cygwin bash. + ;; evidently, Cygwin changed its arg handling to work just like + ;; any standard VC program, so we no longer need it. + ;;("[\\/].?.?sh\\." . mswindows-construct-verbatim-command-line) ("[\\/]command\\.com$" . mswindows-construct-command-command-line) ("[\\/]cmd\\.exe$" . mswindows-construct-command-command-line) ("" . mswindows-construct-vc-runtime-command-line)) diff --text -u 'xemacs-21.5.1/lisp/x-font-menu.el' 'xemacs-21.5.2/lisp/x-font-menu.el' Index: ././lisp/x-font-menu.el --- ././lisp/x-font-menu.el Sat May 5 19:51:26 2001 +++ ././lisp/x-font-menu.el Wed May 9 22:43:54 2001 @@ -190,7 +190,7 @@ ;; If the user didn't specify one (with "-dt-*-*", for example) ;; get the truename and use the possibly suboptimal data from that. ;;;###autoload -(defun* x-font-menu-font-data (face dcache) +(defun x-font-menu-font-data (face dcache) (let* ((case-fold-search t) (domain (if font-menu-this-frame-only-p (selected-frame) @@ -207,21 +207,22 @@ (string-match x-font-regexp-foundry-and-family truename)) (setq family (capitalize (match-string 1 truename))) (setq entry (vassoc family (aref dcache 0)))) - (when (null entry) - (return-from x-font-menu-font-data (make-vector 5 nil))) - - (when (string-match x-font-regexp name) - (setq weight (capitalize (match-string 1 name))) - (setq size (string-to-int (match-string 6 name)))) + + (if (null entry) + (make-vector 5 nil) + + (when (string-match x-font-regexp name) + (setq weight (capitalize (match-string 1 name))) + (setq size (string-to-int (match-string 6 name)))) - (when (string-match x-font-regexp truename) - (when (not (member weight (aref entry 1))) - (setq weight (capitalize (match-string 1 truename)))) - (when (not (member size (aref entry 2))) - (setq size (string-to-int (match-string 6 truename)))) - (setq slant (capitalize (match-string 2 truename)))) + (when (string-match x-font-regexp truename) + (when (not (member weight (aref entry 1))) + (setq weight (capitalize (match-string 1 truename)))) + (when (not (member size (aref entry 2))) + (setq size (string-to-int (match-string 6 truename)))) + (setq slant (capitalize (match-string 2 truename)))) - (vector entry family size weight slant))) + (vector entry family size weight slant)))) (defun x-font-menu-load-font (family weight size slant resolution) "Try to load a font with the requested properties. diff --text -u 'xemacs-21.5.1/lwlib/ChangeLog' 'xemacs-21.5.2/lwlib/ChangeLog' Index: ././lwlib/ChangeLog --- ././lwlib/ChangeLog Wed May 9 19:53:53 2001 +++ ././lwlib/ChangeLog Sat Jul 28 16:48:22 2001 @@ -1,3 +1,22 @@ +2001-07-28 Stephen J. Turnbull + + * XEmacs 21.5.2 "artichoke" is released. + +2001-07-26 Andy Piper + + * lwlib-Xm.c (xm_update_progress): new function. Set Scale height + and width from normal height and width. + * lwlib-Xm.c (xm_create_progress): ditto. + * lwlib-Xm.c (xm_update_one_widget): call xm_update_progress. + * lwlib.c (lw_get_value_arg): new function. Return an argument + based on its name. + * lwlib.h: declare it. + +2001-05-21 Martin Buchholz + + * lwlib-config.c: Remove. + * Makefile.in.in: Remove references to lwlib-config. + 2001-05-09 Martin Buchholz * XEmacs 21.5.1 "anise" is released. diff --text -u 'xemacs-21.5.1/lwlib/Makefile.in.in' 'xemacs-21.5.2/lwlib/Makefile.in.in' Index: ././lwlib/Makefile.in.in --- ././lwlib/Makefile.in.in Fri Apr 13 03:21:51 2001 +++ ././lwlib/Makefile.in.in Mon May 21 14:26:32 2001 @@ -48,7 +48,7 @@ VPATH=@srcdir@ #endif -objs = lwlib.o lwlib-utils.o lwlib-config.o @lwlib_objs@ +objs = lwlib.o lwlib-utils.o @lwlib_objs@ all: liblw.a @@ -100,7 +100,6 @@ lwlib-Xlw.o: $(CONFIG_H) lwlib-Xlw.h lwlib-internal.h lwlib.h xlwmenu.h xlwscrollbar.h \ xlwtabs.h xlwgcs.h lwlib-Xm.o: $(CONFIG_H) lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h xlwmenu.h -lwlib-config.o: $(CONFIG_H) lwlib.h xlwmenu.h lwlib-utils.o: $(CONFIG_H) lwlib-utils.h lwlib.o: $(CONFIG_H) lwlib-Xaw.h lwlib-Xlw.h lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h xlwmenu.h xlwmenu.o: $(CONFIG_H) lwlib.h xlwmenu.h xlwmenuP.h diff --text -u 'xemacs-21.5.1/lwlib/lwlib-Xlw.c' 'xemacs-21.5.2/lwlib/lwlib-Xlw.c' Index: ././lwlib/lwlib-Xlw.c --- ././lwlib/lwlib-Xlw.c Fri Apr 13 03:21:51 2001 +++ ././lwlib/lwlib-Xlw.c Sat Jul 28 14:08:58 2001 @@ -415,7 +415,7 @@ { Widget* children; unsigned int num_children; - int i; + Dimension i; widget_value *cur = 0; XtRemoveAllCallbacks (widget, XtNcallback); diff --text -u 'xemacs-21.5.1/lwlib/lwlib-Xm.c' 'xemacs-21.5.2/lwlib/lwlib-Xm.c' Index: ././lwlib/lwlib-Xm.c --- ././lwlib/lwlib-Xm.c Fri Apr 13 03:21:52 2001 +++ ././lwlib/lwlib-Xm.c Sat Jul 28 14:08:58 2001 @@ -336,6 +336,36 @@ XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance); } +static void +xm_update_progress (widget_instance* instance, Widget scale, + widget_value* val) +{ + Arg al[20]; + int ac = 0; + Dimension height = 0; + Dimension width = 0; + if (!val->call_data) + { + XtSetArg (al [ac], XmNeditable, False); ac++; + } + else + { + XtSetArg (al [ac], XmNeditable, val->enabled); ac++; + } + height = (Dimension)lw_get_value_arg (val, XtNheight); + width = (Dimension)lw_get_value_arg (val, XtNwidth); + if (height > 0) + { + XtSetArg (al [ac], XmNscaleHeight, height); ac++; + } + if (width > 0) + { + XtSetArg (al [ac], XmNscaleWidth, width); ac++; + } + + XtSetValues (scale, al, 1); +} + #ifdef LWLIB_MENUBARS_MOTIF static void @@ -858,6 +888,10 @@ xm_update_scrollbar (instance, widget, val); } #endif + else if (class == xmScaleWidgetClass) + { + xm_update_progress (instance, widget, val); + } /* Lastly update our global arg values. */ if (val->args && val->args->nargs) XtSetValues (widget, val->args->args, val->args->nargs); @@ -912,7 +946,7 @@ if (radiobox) { CompositeWidget radio = (CompositeWidget)widget; - int i; + unsigned int i; for (i = 0; i < radio->composite.num_children; i++) { int set = False; @@ -1649,20 +1683,18 @@ { Arg al[20]; int ac = 0; + Dimension height = 0; + Dimension width = 0; Widget scale = 0; widget_value* val = instance->info->val; -#if 0 /* This looks too awful, although more correct. */ if (!val->call_data) { - XtSetArg (al [ac], XmNsensitive, False); ac++; + XtSetArg (al [ac], XmNeditable, False); ac++; } else { - XtSetArg (al [ac], XmNsensitive, val->enabled); ac++; + XtSetArg (al [ac], XmNeditable, val->enabled); ac++; } -#else - XtSetArg (al [ac], XmNsensitive, True); ac++; -#endif XtSetArg (al [ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++; XtSetArg (al [ac], XmNuserData, val->call_data); ac++; XtSetArg (al [ac], XmNmappedWhenManaged, FALSE); ac++; @@ -1671,6 +1703,18 @@ look ugly. I think this may be a LessTif bug but for now we just get rid of it. */ XtSetArg (al [ac], XmNhighlightThickness, (Dimension)0);ac++; + + height = (Dimension)lw_get_value_arg (val, XtNheight); + width = (Dimension)lw_get_value_arg (val, XtNwidth); + if (height > 0) + { + XtSetArg (al [ac], XmNscaleHeight, height); ac++; + } + if (width > 0) + { + XtSetArg (al [ac], XmNscaleWidth, width); ac++; + } + /* add any args the user supplied for creation time */ lw_add_value_args_to_args (val, al, &ac); diff --text -u 'xemacs-21.5.1/lwlib/lwlib.c' 'xemacs-21.5.2/lwlib/lwlib.c' Index: ././lwlib/lwlib.c --- ././lwlib/lwlib.c Fri Apr 13 03:21:52 2001 +++ ././lwlib/lwlib.c Sat Jul 28 14:08:58 2001 @@ -1389,6 +1389,22 @@ } } +XtArgVal lw_get_value_arg (widget_value* wv, String name) +{ + int i; + if (wv->args) + { + for (i = 0; i < wv->args->nargs; i++) + { + if (!strcmp (wv->args->args[i].name, name)) + { + return wv->args->args[i].value; + } + } + } + return (XtArgVal)0; +} + void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value) { int i = 0; diff --text -u 'xemacs-21.5.1/lwlib/lwlib.h' 'xemacs-21.5.2/lwlib/lwlib.h' Index: ././lwlib/lwlib.h --- ././lwlib/lwlib.h Fri Apr 13 03:21:52 2001 +++ ././lwlib/lwlib.h Sat Jul 28 14:08:59 2001 @@ -214,6 +214,7 @@ void lw_pop_down_all_widgets (LWLIB_ID id); void lw_add_value_args_to_args (widget_value* wv, ArgList addto, int* offset); void lw_add_widget_value_arg (widget_value* wv, String name, XtArgVal value); +XtArgVal lw_get_value_arg (widget_value* wv, String name); void lw_copy_widget_value_args (widget_value* copy, widget_value* val); widget_value * copy_widget_value_tree (widget_value *val, change_type change); diff --text -u 'xemacs-21.5.1/man/ChangeLog' 'xemacs-21.5.2/man/ChangeLog' Index: ././man/ChangeLog --- ././man/ChangeLog Wed May 9 19:53:53 2001 +++ ././man/ChangeLog Sat Jul 28 16:48:22 2001 @@ -1,3 +1,111 @@ +2001-07-28 Stephen J. Turnbull + + * XEmacs 21.5.2 "artichoke" is released. + +2001-07-25 Jim Horning + + * xemacs/packages.texi (Package Terminology): + * xemacs/packages.texi (Automatically): + In itemize and enumerate lists @item should be on it's own line. + +2001-07-02 Adrian Aichner + + * xemacs-faq.texi (Q1.0.14): Update information following a + request by Tom Mostyn. + +2001-07-02 Adrian Aichner + + * lispref\windows.texi (Window Configurations): Fix typos. + * lispref\x-windows.texi (Resources): Ditto. + +2001-07-02 Adrian Aichner + + * internals\internals.texi (XEmacs From the Inside): Ditto. + +2001-07-02 Adrian Aichner + + * emodules.texi (Initialization Mode): Ditto. + * xemacs-faq.texi (Q6.3.2): Ditto. + +2001-06-10 Ben Wing + + * xemacs-faq.texi (Q1.0.10): + * xemacs-faq.texi (Q1.0.11): + * xemacs-faq.texi (Q1.0.12): + Update sections on Windows and MacOS availability. + +2001-06-08 Ben Wing + + * xemacs-faq.texi (Top): + * xemacs-faq.texi (MS Windows): + * xemacs-faq.texi (Q6.2.1): + * xemacs-faq.texi (Q6.2.2): + * xemacs-faq.texi (Q6.2.3): + * xemacs-faq.texi (Q6.2.4): + * xemacs-faq.texi (Q6.2.5): + * xemacs-faq.texi (Q6.3.1): + * xemacs-faq.texi (Q6.3.2): + * xemacs-faq.texi (Q6.3.3): + * xemacs-faq.texi (Q6.3.4): + * xemacs-faq.texi (Q6.4.1): + * xemacs-faq.texi (Q6.4.2): + * xemacs-faq.texi (Current Events): + * xemacs-faq.texi (Q7.0.1): + * xemacs-faq.texi (Q7.0.2): + * xemacs-faq.texi (Q7.0.3): + * xemacs-faq.texi (Q7.0.4): + * xemacs-faq.texi (Q7.0.5): + * xemacs-faq.texi (Q7.0.6): + Merge in the rest of Hrvoje's Windows FAQ. Redo section 7 + to update current reality and add condensed versions of + new changes for 21.1 and 21.4. (Not quite done for 21.4.) + Lots more Windows updates. + +2001-05-29 Alexey Mahotkin + + * xemacs/custom.texi: Documented keyboard shortcut. + + * xemacs/mule.texi: Updated to match reality; tiny fixes. + +2001-05-30 Ben Wing + + * xemacs-faq.texi (Top): + * xemacs-faq.texi (MS Windows): + * xemacs-faq.texi (Q6.0.1): + * xemacs-faq.texi (Q6.0.2): + * xemacs-faq.texi (Q6.0.3): + * xemacs-faq.texi (Q6.0.4): + * xemacs-faq.texi (Q6.1.1): + * xemacs-faq.texi (Q6.1.4): + * xemacs-faq.texi (Q6.1.5): + * xemacs-faq.texi (Q6.1.6): + * xemacs-faq.texi (Q6.2.1): + * xemacs-faq.texi (Q6.2.2): + * xemacs-faq.texi (Q6.3.1): + * xemacs-faq.texi (Q6.3.2): + * xemacs-faq.texi (Q6.3.3): + * xemacs-faq.texi (Q6.4.1): + * xemacs-faq.texi (Current Events): + Major rewrite. + Update all MS Windows info to current. + Redo section 6.1 almost completely. + Incorporate sections 1 and 2 of Hrvoje's FAQ. + +2001-05-24 Ben Wing + + * xemacs-faq.texi (Top): + * xemacs-faq.texi (Installation): + * xemacs-faq.texi (Q2.1.15): + * 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. + (Creating Packages): Ditto. + (Available Packages): Ditto. + 2001-05-09 Martin Buchholz * XEmacs 21.5.1 "anise" is released. diff --text -u 'xemacs-21.5.1/man/emodules.texi' 'xemacs-21.5.2/man/emodules.texi' Index: ././man/emodules.texi --- ././man/emodules.texi Fri Apr 13 03:21:59 2001 +++ ././man/emodules.texi Tue Jul 3 05:45:03 2001 @@ -653,17 +653,17 @@ sample module, and optionally install it. The @code{--mod-location} argument to @code{ellcc} will produce, on the standard output, the base location of the @value{emacs} module directory. Each sub-directory of that -directory is automatically searched for for modules when they are loaded -with @code{load-module}. An alternative location would be -@file{/usr/local/lib/xemacs/site-modules}. That path can change -depending on the options the person who compiled @value{emacs} chose, so you -can always determine the correct site location using the -@code{--mod-site-location} option. This directory is treated the same -way as the main module directory. Each sub-directory within it is -searched for a given module when the user attempts to load it. The -valid extensions that the loader attempts to use are @file{.so}, -@file{.ell} and @file{.dll}. You can use any of these extensions, -although @file{.ell} is the preferred extension. +directory is automatically searched for modules when they are loaded with +@code{load-module}. An alternative location would be +@file{/usr/local/lib/xemacs/site-modules}. That path can change depending +on the options the person who compiled @value{emacs} chose, so you can +always determine the correct site location using the +@code{--mod-site-location} option. This directory is treated the same way +as the main module directory. Each sub-directory within it is searched for +a given module when the user attempts to load it. The valid extensions that +the loader attempts to use are @file{.so}, @file{.ell} and @file{.dll}. You +can use any of these extensions, although @file{.ell} is the preferred +extension. @node Link Mode, Other ellcc options, Initialization Mode, Using ellcc @section Link Mode diff --text -u 'xemacs-21.5.1/man/internals/internals.texi' 'xemacs-21.5.2/man/internals/internals.texi' Index: ././man/internals/internals.texi --- ././man/internals/internals.texi Fri Apr 13 03:22:08 2001 +++ ././man/internals/internals.texi Tue Jul 3 05:45:06 2001 @@ -1332,7 +1332,7 @@ frames are displayed correctly. It is periodically told (by the event loop) to actually ``do its job'', i.e. snoop around and see what the current state of the environment (mostly of the currently-existing -windows, frames, and buffers) is, and make sure that that state matches +windows, frames, and buffers) is, and make sure that state matches what's actually displayed. It keeps lots and lots of information around (such as what is actually being displayed currently, and what the environment was last time it checked) so that it can minimize the work @@ -3092,7 +3092,7 @@ Before submitting a patch, please try compiling at least once with @example -configure --with-mule --with-union-type --error-checking=all +configure --with-mule --use-union-type --error-checking=all @end example Here are things to know when you create a new source file: diff --text -u 'xemacs-21.5.1/man/lispref/windows.texi' 'xemacs-21.5.2/man/lispref/windows.texi' Index: ././man/lispref/windows.texi --- ././man/lispref/windows.texi Fri Apr 13 03:22:22 2001 +++ ././man/lispref/windows.texi Tue Jul 3 05:45:08 2001 @@ -1850,10 +1850,10 @@ Configurations}. @defun current-window-configuration &optional frame -This function returns a new object representing the current current -window configuration of @var{frame}, namely the number of windows, their -sizes and current buffers, which window is the selected window, and for -each window the displayed buffer, the display-start position, and the +This function returns a new object representing the current window +configuration of @var{frame}, namely the number of windows, their sizes +and current buffers, which window is the selected window, and for each +window the displayed buffer, the display-start position, and the positions of point and the mark. An exception is made for point in the current buffer, whose value is not saved. diff --text -u 'xemacs-21.5.1/man/lispref/x-windows.texi' 'xemacs-21.5.2/man/lispref/x-windows.texi' Index: ././man/lispref/x-windows.texi --- ././man/lispref/x-windows.texi Fri Apr 13 03:22:22 2001 +++ ././man/lispref/x-windows.texi Tue Jul 3 05:45:08 2001 @@ -130,7 +130,7 @@ @item The fourth arg is the locale to search for the resources on, and can -currently be a a buffer, a frame, a device, or the symbol @code{global}. +currently be a buffer, a frame, a device, or the symbol @code{global}. If omitted, it defaults to @code{global}. @item diff --text -u 'xemacs-21.5.1/man/xemacs-faq.texi' 'xemacs-21.5.2/man/xemacs-faq.texi' Index: ././man/xemacs-faq.texi --- ././man/xemacs-faq.texi Mon Apr 30 23:09:49 2001 +++ ././man/xemacs-faq.texi Tue Jul 3 06:00:02 2001 @@ -7,7 +7,7 @@ @finalout @titlepage @title XEmacs FAQ -@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/04/20 11:32:18 $ +@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/07/02 21:00:02 $ @sp 1 @author Tony Rossini @author Ben Wing @@ -169,7 +169,7 @@ * Q2.1.15:: How to debug an XEmacs problem with a debugger. * Q2.1.16:: XEmacs crashes in @code{strcat} on HP/UX 10. * Q2.1.17:: @samp{Marker does not point anywhere}. -* Q2.1.18:: [This question intentionally left blank] +* Q2.1.18:: XEmacs is outputting lots of X errors. * Q2.1.19:: XEmacs does not follow the local timezone. * Q2.1.20:: @samp{Symbol's function definition is void: hkey-help-show.} * Q2.1.21:: [This question intentionally left blank] @@ -378,37 +378,47 @@ General Info: * Q6.0.1:: What is the status of the XEmacs port to Windows? -* Q6.0.2:: What flavors of MS Windows are supported? +* Q6.0.2:: What flavors of MS Windows are supported? The list name implies NT only. * Q6.0.3:: Are binaries available? -* Q6.0.4:: Can I build XEmacs on MS Windows with support for X or Cygwin? +* Q6.0.4:: Can I build XEmacs on MS Windows with X support? Do I need to? +* Q6.0.5:: I'd like to help out. What do I do? +* Q6.0.6:: What are Cygwin and MinGW, and do I need them to run XEmacs? +* Q6.0.7:: What exactly are all the different ways to build XEmacs under Windows? Building XEmacs on MS Windows: -* Q6.1.1:: I decided to run with X. Where do I get an X server? -* Q6.1.2:: What compiler do I need to compile XEmacs? -* Q6.1.3:: How do I compile for the native port? -* Q6.1.4:: How do I compile for the X port? -* Q6.1.5:: How do I compile for Cygnus' Cygwin? -* Q6.1.6:: What do I need for Cygwin? +* Q6.1.1:: What compiler/libraries do I need to compile XEmacs? +* Q6.1.2:: How do I compile the native port? +* Q6.1.3:: What do I need for Cygwin? +* Q6.1.4:: How do I compile under Cygwin? +* Q6.1.5:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})? +* Q6.1.6:: I decided to run with X. Where do I get an X server? +* Q6.1.7:: How do I compile with X support? Customization and User Interface: -* Q6.2.1:: How will the port cope with differences in the Windows user interface? +* Q6.2.1:: How does the port cope with differences in the Windows user interface? * Q6.2.2:: How do I change fonts in XEmacs on MS Windows? * Q6.2.3:: Where do I put my @file{init.el}/@file{.emacs} file? +* Q6.2.4:: How do I get Windows Explorer to associate a file type with XEmacs? +* Q6.2.5:: Is it possible to print from XEmacs? Miscellaneous: -* Q6.3.1:: Will XEmacs rename all the win32-* symbols to w32-*? +* Q6.3.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}? * Q6.3.2:: What are the differences between the various MS Windows emacsen? -* Q6.3.3:: What is the porting team doing at the moment? +* Q6.3.3:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed? +* Q6.3.4:: What is the porting team doing at the moment? Troubleshooting: -* Q6.4.1:: XEmacs won't start on Windows. (NEW) +* Q6.4.1:: XEmacs won't start on Windows. +* Q6.4.2:: Why do I get a blank toolbar on Windows 95? -Current Events: -* Q7.0.1:: What is new in 20.2? -* Q7.0.2:: What is new in 20.3? -* Q7.0.3:: What is new in 20.4? -* Q7.0.4:: Procedural changes in XEmacs development. +Current Events: +* Q7.0.1:: What new features will be in XEmacs soon? +* Q7.0.2:: What's new in XEmacs 21.4? +* Q7.0.3:: What's new in XEmacs 21.1? +* Q7.0.4:: What's new in XEmacs 20.4? +* Q7.0.5:: What's new in XEmacs 20.3? +* Q7.0.6:: What's new in XEmacs 20.2? @end detailmenu @end menu @@ -653,7 +663,8 @@ @node Q1.0.10, Q1.0.11, Q1.0.9, Introduction @unnumberedsubsec Q1.0.10: Is there a port of XEmacs to Microsoft ('95 or NT)? -Yes, @xref{MS Windows}. +Yes. XEmacs can be built under MS Windows and is fully-featured and +actively developed. See @ref{MS Windows}. @node Q1.0.11, Q1.0.12, Q1.0.10, Introduction @unnumberedsubsec Q1.0.11: Is there a port of XEmacs to the Macintosh? @@ -666,9 +677,18 @@ @c For the MacOS, there is a port of @c @uref{ftp://ftp.cs.cornell.edu/pub/parmet/, Emacs 18.59}. -Yes, there is a port of XEmacs 19.14, tested on MacOS 7.6.1 and MacOS -8.5.1 by @email{pjarvis@@ispchannel.com, Pitts Jarvis}. It's available -at @uref{http://homepage.mac.com/pjarvis/xemacs.html}. +Yes. + +XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly +will not feel very much like a Mac application as it has no Mac-specific +code in it. + +There is also a port of XEmacs 19.14 that works on all recent versions +of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com, +Pitts Jarvis}. It runs in an equivalent of TTY mode only (one single +Macintosh window, 25 colors), but has a large number of Mac-specific +additions. It's available at +@uref{http://homepage.mac.com/pjarvis/xemacs.html}. @node Q1.0.12, Q1.0.13, Q1.0.11, Introduction @unnumberedsubsec Q1.0.12: Is there a port of XEmacs to NextStep? @@ -688,8 +708,9 @@ Pre-printed manuals are not available. If you are familiar with TeX, you can generate your own manual from the XEmacs sources. -HTML and Postscript versions of XEmacs manuals may be available from the -XEmacs web site in the future. Send requests to @email{faq@@xemacs.org}. +HTML and Postscript versions of XEmacs manuals are available from the +XEmacs web site at +@uref{http://www.xemacs.org/Documentation/index.html}. @node Q1.1.1, Q1.1.2, Q1.0.14, Introduction @unnumberedsec 1.1: Policies @@ -1224,7 +1245,7 @@ * Q2.1.15:: How to debug an XEmacs problem with a debugger. * Q2.1.16:: XEmacs crashes in @code{strcat} on HP/UX 10. * Q2.1.17:: @samp{Marker does not point anywhere}. -* Q2.1.18:: [This question intentionally left blank] +* Q2.1.18:: XEmacs is outputting lots of X errors. * Q2.1.19:: XEmacs does not follow the local timezone. * Q2.1.20:: @samp{Symbol's function definition is void: hkey-help-show.} * Q2.1.21:: [This question intentionally left blank] @@ -1647,7 +1668,7 @@ It's possible that a core file didn't get produced, in which case you're out of luck. Go complain to your system administrator and tell him not -to disable core files by default. Also @xref{Q2.1.15}, for tips and +to disable core files by default. Also see @ref{Q2.1.15}, for tips and techniques for dealing with a debugger. When making a problem report make sure that: @@ -2014,12 +2035,13 @@ @itemize @bullet @item First of all, if the crash is at all reproducible, consider very -strongly recompiling your XEmacs with debugging symbols, with no -optimization, and with the configure options @samp{--debug=yes} and -@samp{--error-checking=all}. This will make your XEmacs run somewhat -slower but make it a lot more likely to catch the problem earlier -(closer to its source), and a lot easier to determine what's going on -with a debugger. +strongly recompiling your XEmacs with debugging symbols and with no +optimization (e.g. with GCC use the compiler flags @samp{-g -O0} -- +that's an "oh" followed by a zero), and with the configure options +@samp{--debug=yes} and @samp{--error-checking=all}. This will make your +XEmacs run somewhat slower but make it a lot more likely to catch the +problem earlier (closer to its source), and a lot easier to determine +what's going on with a debugger. @item If you're able to run XEmacs under a debugger and reproduce the crash @@ -2040,6 +2062,10 @@ declared static in eval.c. @item +If XEmacs is outputting lots of X errors, put a breakpoint on +@code{x_error_handler()}; that will tell you which call is causing them. + +@item Internally, you will probably see lots of variables that hold objects of type @code{Lisp_Object}. These are exactly what they appear to be, i.e. references to Lisp objects. Printing them out with the debugger @@ -2219,7 +2245,11 @@ @end enumerate @node Q2.1.18, Q2.1.19, Q2.1.17, Installation -@unnumberedsubsec Q2.1.18: removed +@unnumberedsubsec Q2.1.18: XEmacs is outputting lots of X errors. + +If this is happening, we would very much like to know what's causing +them. To find this out, see @ref{Q2.1.15}. Try to get both a C and Lisp +backtrace, and send them to @email{xemacs-beta@@xemacs.org}. @node Q2.1.19, Q2.1.20, Q2.1.18, Installation @unnumberedsubsec Q2.1.19: XEmacs does not follow the local timezone. @@ -2324,7 +2354,7 @@ happens. The simplest explanation is that you are missing a package that is essential to you. You can either track it down and install it (there is a list of packages and brief descriptions of their contents in -@file{etc/PACKAGES}), or install the `Sumo Tarball' (see @pxref{Q2.0.14}). +@file{etc/PACKAGES}), or install the `Sumo Tarball' (@pxref{Q2.0.14}). @c #### should xref to XEmacs manual here @@ -3000,7 +3030,7 @@ Yes. Use @code{gnuclient -nw}. (Prior to 20.3, use the @code{gnuattach} program supplied with XEmacs instead.) -Also @xref{Q5.0.12}. +Also see @ref{Q5.0.12}. @node Q3.5.1, Q3.5.2, Q3.4.2, Customization @unnumberedsec 3.5: The Keyboard @@ -3095,7 +3125,7 @@ (global-set-key 'redirected-delete 'foo) @end lisp -Also @xref{Q3.5.10}. +Also see @ref{Q3.5.10}. @node Q3.5.5, Q3.5.6, Q3.5.4, Customization @unnumberedsubsec Q3.5.5: Scrolling one line at a time. @@ -3235,7 +3265,7 @@ @code{Advanced (Customize)->Emacs->Editing->Basics->Delete Key Deletes Forward} or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. -Also @xref{Q3.5.4}. +Also see @ref{Q3.5.4}. @node Q3.5.10, Q3.5.11, Q3.5.9, Customization @unnumberedsubsec Q3.5.10: Can I turn on @dfn{sticky} modifier keys? @@ -3712,7 +3742,7 @@ @strong{Warning: This command turns off all region highlighting.} -Also @xref{Q3.10.1}. +Also see @ref{Q3.10.1}. @node Q3.10.5, , Q3.10.4, Customization @unnumberedsubsec Q3.10.5: The region disappears when I hit the end of buffer while scrolling. @@ -5841,71 +5871,174 @@ port of XEmacs. @menu - General Info * Q6.0.1:: What is the status of the XEmacs port to Windows? -* Q6.0.2:: What flavors of MS Windows are supported? -* Q6.0.3:: Where are the XEmacs on MS Windows binaries? -* Q6.0.4:: Can I build XEmacs on MS Windows with support for X or Cygwin? - -Building XEmacs on MS Windows -* Q6.1.1:: I decided to run with X. Where do I get an X server? -* Q6.1.2:: What compiler do I need to compile XEmacs? -* Q6.1.3:: How do I compile for the native port? -* Q6.1.4:: How do I compile for the X port? -* Q6.1.5:: How do I compile for Cygnus' Cygwin? -* Q6.1.6:: What do I need for Cygwin? +* Q6.0.2:: What flavors of MS Windows are supported? The list name implies NT only. +* Q6.0.3:: Are binaries available? +* Q6.0.4:: Can I build XEmacs on MS Windows with X support? Do I need to? +* Q6.0.5:: I'd like to help out. What do I do? +* Q6.0.6:: What are Cygwin and MinGW, and do I need them to run XEmacs? +* Q6.0.7:: What exactly are all the different ways to build XEmacs under Windows? + +Building XEmacs on MS Windows: +* Q6.1.1:: What compiler/libraries do I need to compile XEmacs? +* Q6.1.2:: How do I compile the native port? +* Q6.1.3:: What do I need for Cygwin? +* Q6.1.4:: How do I compile under Cygwin? +* Q6.1.5:: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})? +* Q6.1.6:: I decided to run with X. Where do I get an X server? +* Q6.1.7:: How do I compile with X support? -Customization and User Interface -* Q6.2.1:: How will the port cope with differences in the Windows user interface? +Customization and User Interface: +* Q6.2.1:: How does the port cope with differences in the Windows user interface? * Q6.2.2:: How do I change fonts in XEmacs on MS Windows? * Q6.2.3:: Where do I put my @file{init.el}/@file{.emacs} file? +* Q6.2.4:: How do I get Windows Explorer to associate a file type with XEmacs? +* Q6.2.5:: Is it possible to print from XEmacs? -Miscellaneous -* Q6.3.1:: Will XEmacs rename all the win32-* symbols to w32-*? +Miscellaneous: +* Q6.3.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}? * Q6.3.2:: What are the differences between the various MS Windows emacsen? -* Q6.3.3:: What is the porting team doing at the moment? +* Q6.3.3:: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed? +* Q6.3.4:: What is the porting team doing at the moment? Troubleshooting: -* Q6.4.1:: XEmacs won't start on Windows. (NEW) - +* Q6.4.1:: XEmacs won't start on Windows. +* Q6.4.2:: Why do I get a blank toolbar on Windows 95? @end menu @node Q6.0.1, Q6.0.2, MS Windows, MS Windows @unnumberedsec 6.0: General Info @unnumberedsubsec Q6.0.1: What is the status of the XEmacs port to Windows? -Is XEmacs really getting ported to MS Windows? What is the status of the port? +Is XEmacs really ported to MS Windows? What is the status of the port? + +Beginning with release 21.0, XEmacs has worked under MS Windows. A +group of dedicated developers actively maintains and improves the +Windows-specific portions of the code. The mailing list at +@email{xemacs-nt@@xemacs.org} is dedicated to that effort (please use +the -request address to subscribe). (Despite its name, XEmacs actually +works on all versions of Windows.) + +As of May 2001, XEmacs on MS Windows is stable and full-featured, and +has been so for a year or more -- in fact, some features, such as +printing, actually work better on Windows than native Unix. However, +the internationalization (Mule) support does not work -- although this +is being actively worked on. -Yes, a group of volunteers actively works on making XEmacs code base -cleanly compile and run on MS Windows operating systems. The mailing -list at @email{xemacs-nt@@xemacs.org} is dedicated to that effort -(please use the -request address to subscribe). - -At this time, XEmacs on MS Windows is stable and full-featured. -However, the internationalization (Mule) support does not work -- -although this is being actively worked on. @node Q6.0.2, Q6.0.3, Q6.0.1, MS Windows @unnumberedsubsec Q6.0.2: What flavors of MS Windows are supported? The list name implies NT only. -The list name is misleading, as XEmacs will support Windows 95, Windows -98, Windows NT, Windows 2000, Windows ME, Windows XP, and all newer -versions of Windows. The MS Windows-specific code is based on Microsoft -Win32 API, and will not work on MS Windows 3.x or on MS-DOS. +The list name is misleading, as XEmacs supports and has been compiled on +Windows 95, Windows 98, Windows NT, Windows 2000, Windows ME, Windows +XP, and all newer versions of Windows. The MS Windows-specific code is +based on Microsoft Win32 API, and will not work on MS Windows 3.x or on +MS-DOS. + +XEmacs also supports the Cygwin and MinGW development and runtime +environments, where it also uses native Windows code for graphical +features. @node Q6.0.3, Q6.0.4, Q6.0.2, MS Windows @unnumberedsubsec Q6.0.3: Are binaries available? -Binaries are available at -@uref{ftp://ftp.xemacs.org/pub/xemacs/binaries/win32/} for the native MS -Windows version. +Binaries are available at @uref{http://www.xemacs.org/Download/win32/} +for the native and Cygwin MS Windows versions of 21.4, and the native +version of 21.1. + +The 21.4 binaries use a modified version of the Cygwin installer. Run +the provided @file{setup.exe}, and follow the instructions. + + +@node Q6.0.4, Q6.0.5, Q6.0.3, MS Windows +@unnumberedsubsec Q6.0.4: Can I build XEmacs on MS Windows with X support? Do I need to? + +Yes, you can, but no you do not need to. In fact, we recommend that you +use a native-GUI version unless you have a specific need for an X +version. + +@node Q6.0.5, Q6.0.6, Q6.0.4, MS Windows +@unnumberedsubsec Q6.0.5: I'd like to help out. What do I do? + +It depends on the knowledge and time you possess. If you are a +programmer, try to build XEmacs and see if you can improve it. +Windows-specific improvements like integration with established +Windows environments are especially sought after. + +Otherwise, you can still help by downloading the binaries, using +XEmacs as your everyday editor and reporting bugs you find to the +mailing list. + +Another area where we need help is the documentation: We need good +documentation for building XEmacs and for using it. This FAQ is a +small step in that direction. + +@node Q6.0.6, Q6.0.7, Q6.0.5, MS Windows +@unnumberedsubsec Q6.0.6: What are Cygwin and MinGW, and do I need them to run XEmacs? + +To answer the second part of the question: No, you, you don't need +Cygwin or MinGW to build or to run XEmacs. But if you have them and +want to use them, XEmacs supports these environments. + +(One important reason to support Cygwin is that it lets the MS Windows +developers test out their code in a Unix environment without actually +having to have a Unix machine around. For this reason alone, Cygwin +support is likely to remain supported for a long time in XEmacs. Same +goes for the X support under Cygwin, for the same reasons. MinGW +support, on the other hand, depends on volunteers to keep it up to date; +but this is generally not hard.) + +Cygwin is a set of tools providing Unix-like API on top of Win32. +It makes it easy to port large Unix programs without significant +changes to their source code. It is a development environment as well +as a runtime environment. + +When built with Cygwin, XEmacs supports all display types -- TTY, X & +Win32 GUI, and can be built with support for all three simultaneously. +If you build with Win32 GUI support then the Cygwin version uses the +majority of the Windows-specific code, which is mostly related to +display. If you want to build with X support you need X libraries (and +an X server to display XEmacs on); see @ref{Q6.1.4}. TTY and Win32 GUI +require no additional libraries beyond what comes standard with Cygwin. + +The advantages of the Cygwin version are that it integrates well with +the Cygwin environment for existing Cygwin users; uses configure so +building with different features is very easy; and actively supports X & +TTY. Furthermore, the entire Cygwin environment and compiler are free, +whereas Visual C++ costs money. + +The disadvantage is that it requires the whole Cygwin environment, +whereas the native port requires only a suitable MS Windows compiler. +Also, it follows the Unix filesystem and process model very closely +(some will undoubtedly view this as an advantage). + +See @uref{http://sources.redhat.com/cygwin/} for more information on +Cygwin. + +MinGW is a collection of header files and import libraries that allow +one to use GCC under the Cygwin environment to compile and produce +exactly the same native Win32 programs that you can using Visual C++. +Programs compiled with MinGW make use of the standard Microsoft runtime +library @file{MSVCRT.DLL}, present on all Windows systems, and look, +feel, and act like a standard Visual-C-produced application. (The only +difference is the compiler.) This means that, unlike a +standardly-compiled Cygwin application, no extra runtime support +(e.g. Cygwin's @file{cygwin1.dll}) is required. This, along with the +fact that GCC is free (and works in a nice Unix-y way in a nice Unix-y +environment, for those die-hard Unix hackers out there), is the main +advantage of MinGW. It is also potentially faster than Cygwin because +it has less overhead when calling Windows, but you lose the POSIX +emulation layer, which makes Unix programs harder to port. (But this is +irrelevant for XEmacs since it's already ported to Win32.) -@node Q6.0.4, Q6.1.1, Q6.0.3, MS Windows -@unnumberedsubsec Q6.0.4: Can I build XEmacs on MS Windows with support for X or Cygwin? +See @uref{http://www.mingw.org/} for more information on MinGW. -Yes. XEmacs can be built in several ways in the MS Windows environment. +@node Q6.0.7, Q6.1.1, Q6.0.6, MS Windows +@unnumberedsubsec Q6.0.7: What exactly are all the different ways to build XEmacs under Windows? + +XEmacs can be built in several ways in the MS Windows environment. The standard way is what we call the "native" port. It uses the Win32 API and has no connection with X whatsoever -- it does not require X @@ -5914,80 +6047,60 @@ support. Almost all development is geared towards this version, and there is little reason not to use it. -You can also build XEmacs "X" port---it requires X libraries to build -and an X server to run. Internally it uses the Xt event loop and makes -use of X toolkits. Its look is quite un-Windowsy, and it is not well -maintained, but it is being kept around for the time being because it -has a long history. - -There is also a third special case, the Cygwin port. It takes -advantage of Cygnus emulation library under Win32, which enables it to -reuse much of the Unix XEmacs code base, such as processes and network -support, or internal select() mechanisms. - -Cygwin port supports all display types---TTY, X & MS GUI, and can be -built with support for all three. If you build with MS GUI support -then the Cygwin version uses the majority of the msw code, which is -mostly related to display. If you want to build with X support you -need X libraries. If you want to build with TTY support you need -ncurses. MS GUI requires no additional libraries. +The second way to build is the Cygwin port. It takes advantage of +Cygnus emulation library under Win32. @xref{Q6.0.6}, for more +information. + +A third way is the MinGW port. It uses the Cygwin environment to build +but does not require it at runtime. @xref{Q6.0.6}, for more +information. + +Finally, you might also be able to build the non-Cygwin, non-MinGW "X" +port. This was actually the first version of XEmacs that ran under MS +Windows, and although the code is still in XEmacs, it's essentially +orphaned and it's unlikely it will compile without a lot of work. If +you want an MS Windows versin of XEmacs that supports X, use the Cygwin +version. (The X support there is actively maintained, so that Windows +developers can test the X support in XEmacs.) -The advantages of the Cygwin version are that it integrates well with -Cygwin environment for existing Cygwin users; uses configure so building -with different features is very easy; and has process support in X & -tty. - -The disadvantage is that it requires several Unix utilities and the -whole Cygwin environment, whereas the native port requires only a -suitable MS Windows compiler. Also, it follows the Unix filesystem and -process model very closely (some will undoubtedly view this as an -advantage). -@node Q6.1.1, Q6.1.2, Q6.0.4, MS Windows +@node Q6.1.1, Q6.1.2, Q6.0.7, MS Windows @unnumberedsec 6.1: Building XEmacs on MS Windows -@unnumberedsubsec Q6.1.1: I decided to run with X. Where do I get an X server? - -Pointers to X servers can be found at -@iftex -@* -@end iftex -@uref{http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/}; - -look for "Where to get an X server". Also note that, although the above -page talks about Cygnus gnu-win32 (Cygwin), the information on X servers -is Cygwin-independent. You don't have to be running/using Cygwin to use -these X servers, and you don't have to compile XEmacs under Cygwin to -use XEmacs with these X servers. An "X port" XEmacs compiled under -Visual C++ will work with these X servers (as will XEmacs running on a -Unix box, redirected to the server running on your PC). +@unnumberedsubsec Q6.1.1: What compiler/libraries do I need to compile XEmacs? +You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have +some beta testers currently trying to compile with VC.NET, aka version +7.0, but we can't yet report complete success.) For the Cygwin and MinGW +versions, you need the Cygwin environment, which comes with GCC, the +compiler used for those versions. @xref{Q6.0.6}, for more information +on Cygwin and MinGW. @node Q6.1.2, Q6.1.3, Q6.1.1, MS Windows -@unnumberedsubsec Q6.1.2: What compiler do I need to compile XEmacs? - -You need Visual C++ 4.2, 5.0, or 6.0, with the exception of the Cygwin -port, which uses Gcc. There is also a MINGW32 port of XEmacs (using -Gcc, but using native libraries rather than the Cygwin libraries). #### -More information about this should be provided. +@unnumberedsubsec Q6.1.2: How do I compile the native port? +Please read the file @file{nt/README} in the XEmacs distribution, which +contains the full description. @node Q6.1.3, Q6.1.4, Q6.1.2, MS Windows -@unnumberedsubsec Q6.1.3: How do I compile for the native port? +@unnumberedsubsec Q6.1.3: What do I need for Cygwin? -Please read the file @file{nt/README} in the XEmacs distribution, which -contains the full description. +You can find the Cygwin tools and compiler at: +@uref{http://sources.redhat.com/cygwin/} -@node Q6.1.4, Q6.1.5, Q6.1.3, MS Windows -@unnumberedsubsec Q6.1.4: How do I compile for the X port? +Click on the @samp{Install now!} link, which will download a file +@file{setup.exe}, which you can use to download everything else. (You +will need to pick a mirror site; @samp{mirrors.rcn.net} is probably the +best.) You should go ahead and install everything -- you'll get various +ancillary libraries that XEmacs needs or likes, e.g. XPM, PNG, JPEG, +TIFF, etc. -Again, it is described in @file{nt/README} in some detail. Basically, you -need to get X11 libraries from ftp.x.org, and compile them. If the -precompiled versions are available somewhere, I don't know of it. +If you want to compile under X, you will also need the X libraries; see +@ref{Q6.1.6}. -@node Q6.1.5, Q6.1.6, Q6.1.4, MS Windows -@unnumberedsubsec Q6.1.5: How do I compile for Cygnus' Cygwin? +@node Q6.1.4, Q6.1.5, Q6.1.3, MS Windows +@unnumberedsubsec Q6.1.4: How do I compile under Cygwin? Similar as on Unix; use the usual `configure' and `make' process. Some problems to watch out for: @@ -5998,8 +6111,7 @@ @file{init.el}/@file{.emacs} file comes from; @item -CYGWIN needs to be set to tty for process support work. e.g. CYGWIN=tty; -(use CYGWIN32=tty under b19 and older.) +CYGWIN needs to be set to tty for process support to work, e.g. CYGWIN=tty; @item picking up some other grep or other UNIX-like tools can kill configure; @@ -6009,95 +6121,121 @@ number; @item -The Cygwin version doesn't understand @file{//machine/path} type paths so you -will need to manually mount a directory of this form under a unix style -directory for a build to work on the directory. +(Unconfirmed) The Cygwin version doesn't understand +@file{//machine/path} type paths so you will need to manually mount a +directory of this form under a unix style directory for a build to work +on the directory; + +@item +If you're building @strong{WITHOUT} X11, don't forget to change symlinks +@file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to +the non-X versions of these libraries. By default they point to the X +versions. So: + +@example +/usr/lib/libXpm.a -> /usr/lib/libXpm-noX.a +/usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a +@end example + + +@item +Other problems are listed in the @file{PROBLEMS} file, in the top-level +directory of the XEmacs sources. @end itemize -@node Q6.1.6, Q6.2.1, Q6.1.5, MS Windows -@unnumberedsubsec Q6.1.6: What do I need for Cygwin? -You can find the Cygwin tools and compiler at: +@node Q6.1.5, Q6.1.6, Q6.1.4, MS Windows +@unnumberedsubsec Q6.1.5: How do I compile using MinGW (aka @samp{the -mno-cygwin flag to gcc})? -@uref{http://sourceware.cygnus.com/cygwin/} +Similar to the method for Unix. Things to remember: -You will need version b19 or later. -The latest current version is 1.1.1. -Other common versions you will see are b20.1. - -Another location, one of the mirror sites of the site just mentioned, -is usually a last faster: - -@uref{ftp://ftp.freesoftware.com/pub/sourceware/cygwin/} - -You can obtain the latest version (currently 1.1.1) from the -@samp{latest/} subdirectory of either of the above two just-mentioned -URL's. - -@strong{WARNING: The version of GCC supplied under @samp{latest/}, as of -June 6th, 2000, does not appear to work. It generates loads of spurious -preprocessor warnings and errors, which makes it impossible to compile -XEmacs with it.} - -You will also need the X libraries. You can get them on the XEmacs FTP -site at - -@uref{ftp://ftp.xemacs.org/pub/xemacs/aux/cygwin/} - -You will find b19 and b20 versions of the X libraries, plus b19 and b20 -versions of stuff that should go into @samp{/usr/local/}, donated by -Andy Piper. This includes pre-built versions of various graphics libraries, -such as PNG, JPEG, TIFF, and XPM. (Remember, GIF support is built-in to -XEmacs.) - -(X libraries for v1 and beyond of Cygwin can be found on the Cygwin site -itself -- look in the @samp{xfree/} subdirectory.) - -@emph{NOTE:} There are two versions of the XPM library provided in -Andy's packets. Once is for building with X support, and the other for -building without. The X version should work if you're building with -both X and Windows support. The two files are called @file{libXpm-X.a} -and @file{libXpm-noX.a} respectively, and you must symlink the -appropriate one to @file{libXpm.a}. @strong{CAREFUL:} By default, the -non-X version is symlinked in. If you then configure XEmacs with X, -you won't run into problems until you start compiling @file{events.c}, -at which point you'll get strange and decidedly non-obvious errors. +@itemize @bullet +@item +Specify the target host on the command line for @file{./configure}, e.g. +@samp{./configure i586-pc-mingw32}. -Please see @uref{http://www.xemacs.freeserve.co.uk/} (Andy Piper's home -page) for more information. +@item +Be sure that your build directory is mounted such that it has the +same path either as a cygwin path (@file{/build/xemacs}) or as a Windows +path (@file{c:\build\xemacs}). -BTW There are also libraries at -@iftex -@* -@end iftex -@uref{http://dao.gsfc.nasa.gov/software/grads/win32/X11R6.3/}, but -these are not b19 compatible, and may in fact be native-compiled. +@item +Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libpng}, +@file{compface}, etc. + +@item +Specify the target location of the extra libs on the command line +to @file{configure}, e.g. +@samp{./configure --site-prefixes=/build/libs i586-pc-mingw32}. +@end itemize + + +@node Q6.1.6, Q6.1.7, Q6.1.5, MS Windows +@unnumberedsubsec Q6.1.6: I decided to run with X. Where do I get an X server? + +As of May 2001, we are recommending that you use the port of XFree86 to +Cygwin. This has recently stabilized, and will undoubtedly soon make +most other MS Windows X servers obsolete. It is what the Windows +developers use to test the MS Windows X support. + +To install, go to @uref{http://xfree86.cygwin.com/}. There is a +detailed description on that site of exactly how to install it. This +installation also provides the libraries, include files, and other stuff +needed for development; a large collection of internationalized fonts; +the standard X utilities (xterm, twm, etc.) -- in a word, the works. +NOTE: As of late May 2001, there is a bug in the file +@file{startxwin.bat}, used to start X Windows. It passes the option +@samp{-engine -4} to the X server, which is bogus -- you need to edit +the file and change it to @samp{-engine 4}. -@node Q6.2.1, Q6.2.2, Q6.1.6, MS Windows + +@node Q6.1.7, Q6.2.1, Q6.1.6, MS Windows +@unnumberedsubsec Q6.1.7: How do I compile with X support? + +To compile under Cygwin, all you need to do is install XFree86 +(@pxref{Q6.1.6}). Once installed, @file{configure} should automatically +find the X libraries and compile with X support. + +As noted above, the non-Cygwin X support is basically orphaned, and +probably won't work. But if it want to try, it's described in +@file{nt/README} in some detail. Basically, you need to get X11 +libraries from ftp.x.org, and compile them. If the precompiled versions +are available somewhere, we don't know of it. + + +@node Q6.2.1, Q6.2.2, Q6.1.7, MS Windows @unnumberedsec 6.2: Customization and User Interface -@unnumberedsubsec Q6.2.1: How will the port cope with differences in the Windows user interface? +@unnumberedsubsec Q6.2.1: How does the port cope with differences in the Windows user interface? -XEmacs (and Emacs in general) UI is pretty -different from what is expected of a typical MS Windows program. How will -the MS Windows port cope with it? - -Fortunately, Emacs is also one of the most configurable editor beasts -in the world. The MS Windows "look and feel" (mark via shift-arrow, -self-inserting deletes region, etc.) can be easily configured via -various packages distributed with XEmacs. The `pending-delete' -package is an example of such a utility. +The XEmacs (and Emacs in general) user interface is pretty different +from what is expected of a typical MS Windows program. How does the MS +Windows port cope with it? + +As a general rule, we follow native MS Windows conventions as much as +possible. 21.4 is a fairly complete Windows application, supporting +native printing, system file dialog boxes, tool tips, etc. In cases +where there's a clear UI conflict, we currently use normal Unix XEmacs +behavior by default, but make sure the MS Windows "look and feel" (mark +via shift-arrow, self-inserting deletes region, Alt selects menu items, +etc.) is easily configurable (respectively: using the variable +@code{shifted-motion-keys-select-region} in 21.4 and above [it's in fact +the default in these versions], or the @file{pc-select} package; using +the @file{pending-del} package; and setting the variable +@code{menu-accelerator-enabled} to @code{menu-force} in 21.4 and above). +In fact, if you use the sample @file{init.el} file as your init file, +you will get all these behaviors automatically turned on. -In future versions, some of these packages might be turned on by +In future versions, some of these features might be turned on by default in the MS Windows environment. @node Q6.2.2, Q6.2.3, Q6.2.1, MS Windows @unnumberedsubsec Q6.2.2: How do I change fonts in XEmacs on MS Windows? -In 21.2.*, use the font menu. In 21.1.*, you can change font -manually. For example: +In 21.4 and above, you can use the "Options" menu to change the font. +You can also do it in your init file, e.g. like this: @display (set-face-font 'default "Lucida Console:Regular:10") @@ -6105,40 +6243,115 @@ @end display -@node Q6.2.3, Q6.3.1, Q6.2.2, MS Windows +@node Q6.2.3, Q6.2.4, Q6.2.2, MS Windows @unnumberedsubsec Q6.2.3: Where do I put my @file{init.el}/@file{.emacs} file? @file{init.el} is the name of the init file starting with 21.4, and is located in the subdirectory @file{.xemacs/} of your home directory. In prior versions, the init file is called @file{.emacs} and is located in your home directory. Your home directory under Windows is determined by -the HOME environment variable. If this is not set, it defaults to -`C:\'. +the @samp{HOME} environment variable. If this is not set, it defaults to +@samp{C:\}. + +To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or +select @samp{Control Panel->System->Advanced->Environment Variables...} +under Windows NT/2000. + + +@node Q6.2.4, Q6.2.5, Q6.2.3, MS Windows +@unnumberedsubsec Q6.2.4: How do I get Windows Explorer to associate a file type with XEmacs? + +@unnumberedsubsubsec Associating a new file type with XEmacs. -@node Q6.3.1, Q6.3.2, Q6.2.3, MS Windows +In Explorer select @samp{View/Options/File Types}, press @samp{[New +Type...]} and fill in the dialog box, e.g.: + +@example + Description of type: Emacs Lisp source + Associated extension: el + Content Type (MIME): text/plain +@end example + +then press @samp{[New...]} and fill in the @samp{Action} dialog box as +follows: + +@example + Action: + Open + + Application used to perform action: + D:\Full\path\for\xemacs.exe "%1" + + [x] Use DDE + + DDE Message: + open("%1") + + Application: + + + DDE Application Not Running: + + + Topic: + +@end example + +@unnumberedsubsubsec Associating an existing file type with XEmacs. + +In Explorer select @samp{View/Options/File Types}. Click on the file +type in the list and press @samp{[Edit...]}. If the file type already +has an @samp{Open} action, double click on it and fill in the +@samp{Action} dialog box as described above; otherwise create a new +action. + +If the file type has more than one action listed, you probably want to +make the @samp{Open} action that you just edited the default by clicking on +it and pressing @samp{Set Default}. + +Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types} +using @samp{Control Panel->Folder Options->File Types}. + + +@node Q6.2.5, Q6.3.1, Q6.2.4, MS Windows +@unnumberedsubsec Q6.2.5: Is it possible to print from XEmacs? + +As of 21.4, printing works on Windows, using simply @samp{File->Print}, +and can be configured with @samp{File->Page Setup}. + +Prior to 21.4, there is no built-in support, but there are some clever +hacks out there. If you know how, please let us know and we'll put it +here. + + +@node Q6.3.1, Q6.3.2, Q6.2.5, MS Windows @unnumberedsec 6.3: Miscellaneous -@unnumberedsubsec Q6.3.1: Will XEmacs rename all the win32-* symbols to w32-*? +@unnumberedsubsec Q6.3.1: Does XEmacs rename all the @samp{win32-*} symbols to @samp{w32-*}? -In his flavor of Emacs 20, Richard Stallman has renamed all the win32-* -symbols to w32-*. Will XEmacs do the same? +In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{win32-*} +symbols to @samp{w32-*}. Does XEmacs do the same? -We consider such a move counter-productive, thus we will not use the -`w32' prefix. However, we do recognize that Win32 name is little more -than a marketing buzzword (will it be Win64 in the next release?), so -we decided not to use it. Using `windows-' would be wrong because the -term is too generic, which is why we settled on a compromise -`mswindows' term. - -Thus all the XEmacs variables and functions directly related to Win32 -are prefixed `mswindows-'. The user-variables shared with NT Emacs -will be provided as compatibility aliases. - -Architectural note: We believe that there should be a very small number -of window-systems-specific variables, and we provide generic interfaces -whenever possible. Thus, most of the equivalents of GNU Emacs `w32-*' -functions and variables (as well as the corresponding `x-*' versions) -are non-window-system-specific in XEmacs, and the issue of `mswindows-*' -vs. `w32-*' does not come up much. +We consider such a move counter-productive, thus we do not use the +@samp{w32} prefix. (His rather questionable justification was that he +did not consider Windows to be a "winning" platform.) However, the name +@samp{Win32} is not particularly descriptive outside the Windows world, +and using just @samp{windows-} would be too generic. So we chose a +compromise, the prefix @samp{mswindows-} for Windows-related variables +and functions. + +Thus all the XEmacs variables and functions directly related to either +the Windows GUI or OS are prefixed @samp{mswindows-} (except for a +couple of debugging variables, prefixed @samp{debug-mswindows-}). From +an architectural perspective, however, we believe that this is mostly a +non-issue because there should be a very small number of +window-systems-specific variables anyway. Whenever possible, we try to +provide generic interfaces that apply to all window systems. + +@c not true: +@c The user variables +@c that share functionality with existing NT Emacs variables are be named +@c with our convention, but we provide the GNU Emacs names as +@c compatibility aliases. @node Q6.3.2, Q6.3.3, Q6.3.1, MS Windows @@ -6152,41 +6365,32 @@ @itemize @bullet @item -Win-Emacs - -@itemize @minus - -@item -Win-Emacs is a port of Lucid Emacs 19.6 to MS Windows using X -compatibility libraries. Win-Emacs has been written by Ben Wing. The -MS Windows code has not made it back to Lucid Emacs, which left Win-Emacs -pretty much dead for our purposes. Win-Emacs used to be available at -Pearlsoft, but not anymore, since Pearlsoft went out of business. -@end itemize - -@item -GNU Emacs for DOS +XEmacs @itemize @minus @item -GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS -port of Gcc). Such an Emacs is heavily underfeatured, because it does -not supports long file names, lacks proper subprocesses support, and -is far too big compared to typical DOS editors. -@end itemize +Beginning with XEmacs 19.12, XEmacs' architecture was redesigned +in such a way to allow clean support of multiple window systems. At +this time the TTY support was added, making X and TTY the first two +"window systems" supported by XEmacs. The 19.12 design is the basis for +the current native MS Windows code. @item -GNU Emacs compiled with Win32 - -@itemize @minus +Some time during 1997, David Hobley (soon joined by Marc Paquette) +imported some of the NT-specific portions of GNU Emacs, making XEmacs +with X support compile under Windows NT, and creating the "X" port. @item -Starting with version 19.30, it has been possible to compile GNU Emacs -under MS Windows using the DJGPP compiler and X libraries. The result -is is very similar to GNU Emacs compiled under MS DOS, only it -supports longer file names, etc. This "port" is similar to the "X" -flavor of XEmacs on MS Windows. +Several months later, Jonathan Harris sent out initial patches to use +the Win32 API, thus creating the native port. Since then, various +people have contributed, including Kirill M. Katsnelson (contributed +support for menubars, subprocesses and network, as well as loads of +other code), Andy Piper (ported XEmacs to Cygwin environment, +contributed Windows unexec, Windows-specific glyphs and toolbars code, +and more), Ben Wing (loads of improvements; primary MS Windows developer +since 2000), Jeff Sparkes (contributed scrollbars support) and many +others. @end itemize @item @@ -6195,9 +6399,9 @@ @itemize @minus @item -NT Emacs is a version of GNU Emacs modified to compile and run under -MS MS Windows 95 and NT using the native Win32 API. As such, it is close -in spirit to the XEmacs "native" port. +NT Emacs is a version of GNU Emacs modified to compile and run under MS +Windows 95 and NT using the native Win32 API. As such, it is close in +spirit to the XEmacs "native" port. @item NT Emacs has been written by Geoff Voelker, and more information can be @@ -6205,46 +6409,104 @@ @iftex @* @end iftex -@uref{http://www.cs.washington.edu/homes/voelker/ntemacs.html}. - +@uref{http://www.gnu.org/software/emacs/windows/ntemacs.html}. @end itemize @item -XEmacs +Win-Emacs @itemize @minus @item -Beginning with XEmacs 19.12, XEmacs' architecture has been redesigned -in such a way to allow clean support of multiple window systems. At -this time the TTY support was added, making X and TTY the first two -"window systems" XEmacs supported. The 19.12 design is the basis for -the current native MS Windows code. +Win-Emacs was a port of Lucid Emacs 19.6 to MS Windows using X +compatibility libraries. Win-Emacs was written by Ben Wing. The MS +Windows code never made it back to Lucid Emacs, and its creator (Pearl +Software) has long since gone out of business. +@end itemize @item -Some time during 1997, David Hobley (soon joined by Marc Paquette) -imported some of the NT-specific portions of GNU Emacs, making XEmacs -with X support compile under Windows NT, and creating the "X" port. +GNU Emacs for DOS + +@itemize @minus @item -Several months later, Jonathan Harris sent out initial patches to use -the Win32 API, thus creating the native port. Since then, various -people have contributed, including Kirill M. Katsnelson (contributed -support for menubars, subprocesses and network, as well as loads of -other code), Andy Piper (ported XEmacs to Cygwin environment, -contributed Windows unexec, Windows-specific glyphs and toolbars code, -and more), Jeff Sparkes (contributed scrollbars support) and many -others. +GNU Emacs features support for MS-DOS and DJGPP (D.J. Delorie's DOS +port of GCC). Such an Emacs is heavily underfeatured, because it does +not support long file names, lacks proper subprocesses support, and +is far too big compared with typical DOS editors. +@end itemize + +@item +GNU Emacs compiled with Win32 + +@itemize @minus +@item +Starting with version 19.30, it has been possible to compile GNU Emacs +under MS Windows using the DJGPP compiler and X libraries. The result +is very similar to GNU Emacs compiled under MS DOS, only it works +somewhat better because it runs in 32-bit mode, makes use of all the +system memory, supports long file names, etc. @end itemize @end itemize -@node Q6.3.3, Q6.4.1, Q6.3.2, MS Windows -@unnumberedsubsec Q6.3.3: What is the porting team doing at the moment? +@node Q6.3.3, Q6.3.4, Q6.3.2, MS Windows +@unnumberedsubsec Q6.3.3: XEmacs 21.1 on Windows used to spawn an ugly console window on every startup. Has that been fixed? + +Yes. + +The console was there because @file{temacs} (and in turn, @file{xemacs}) +was a console application, and Windows typically creates a new +console for a console process unless the creating process requests that +one isn't created. This used to be fixed with @file{runemacs}, a small +Windows application that existed merely to start @file{xemacs}, stating +that it didn't want a console. + +XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI" +application. The explanation of what that means is included for +educational value. + +When building an application to be run in a Win32 environment, you must +state which sub-system it is to run in. Valid subsystems include +"console" and "gui". The subsystem you use affects the run time +libraries linked into your application, the start up function that is +run before control is handed over to your application, the entry point +to your program, and how Windows normally invokes your program. (Console +programs automatically get a console created for them at startup if +their stdin/stdout don't point anywhere useful, which is the case when +run from the GUI. This is a stupid design, of course -- instead, the +console should get created only when the first I/O actually occurs! +GUI programs have an equally stupid design: When called from +@file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to +point nowhere useful, even though the command shell has its own +stdin/stdout. It's as if someone who had learned a bit about stdio but +had no actual knowledge of interprocess communication designed the +scheme; unfortunately, the whole process-communication aspect of the +Win32 API is equally badly designed.) For example, the entry point for a +console app is "main" (which is what you'd expect for a C/C++ program), +but the entry point for a "gui" app is "WinMain". This confuses and +annoys a lot of programmers who've grown up on Unix systems, where the +kernel doesn't really care whether your application is a gui program or +not. + +For reasons not altogether clear, and are lost in the mists of time and +tradition, XEmacs on Win32 started out as a console application, and +therefore a console was automatically created for it. (It may have been +made a console application partly because a console is needed in some +circumstances, especially under Win95, to interrupt, terminate, or send +signals to a child process, and because of the bogosity mentioned above +with GUI programs and the standard command shell. Currently, XEmacs +just creates and immediately hides a console when necessary, and +works around the "no useful stdio" problem by creating its own console +window as necessary to display messages in.) -(as of March 2001) + +@node Q6.3.4, Q6.4.1, Q6.3.3, MS Windows +@unnumberedsubsec Q6.3.4: What is the porting team doing at the moment? + +(as of June 2001) The porting team is continuing work on the MS Windows-specific code. Major projects are the development of Mule (internationalization) @@ -6252,66 +6514,336 @@ support for dialog boxes, buttons, edit fields, and similar UI elements). -@node Q6.4.1, ,Q6.3.3, MS Windows + + +@node Q6.4.1, Q6.4.2, Q6.3.4, MS Windows @unnumberedsec 6.3: Troubleshooting -@unnumberedsubsec Q6.4.1 XEmacs won't start on Windows. (NEW) +@unnumberedsubsec Q6.4.1 XEmacs won't start on Windows. XEmacs relies on a process called "dumping" to generate a working executable. Under MS-Windows this process effectively fixes the memory addresses of information in the executable. When XEmacs starts up it tries to reserve these memory addresses so that the dumping process can be -reversed - putting the information back at the correct addresses. -Unfortunately some .dlls (For instance the soundblaster driver) occupy +reversed -- putting the information back at the correct addresses. +Unfortunately some .DLLs (for instance the soundblaster driver) occupy memory addresses that can conflict with those needed by the dumped XEmacs executable. In this instance XEmacs will fail to start without any explanation. Note that this is extremely machine specific. 21.1.10 includes a fix for this that makes more intelligent guesses about which memory addresses will be free, and this should cure the -problem for most people. Unfortunately, no binary is yet available for -this version. Check back periodically at +problem for most people. 21.4 implements "portable dumping", which +eliminates the problem altogether. We recommend you use the 21.4 +binaries, but you can use the 21.1 binaries if you are very paranoid +about stability. @xref{Q6.0.3}. + +@node Q6.4.2, , Q6.4.1, MS Windows +@unnumberedsubsec Q6.4.2 Why do I get a blank toolbar on Windows 95? + +You need at least version 4.71 of the system file @file{comctl32.dll}. +The updated version is supplied with Internet Explorer 4 and later but if +you are avoiding IE you can also download it from the Microsoft web +site. Go into support and search for @file{comctl32.dll}. The download +is a self-installing executable. -@uref{ftp://ftp.xemacs.org/pub/xemacs/binaries/}. - -21.2 implements "portable dumping" which will eliminate the problem -altogether. You might have better luck with the 21.2 beta binary, -available at - -@uref{ftp://ftp.xemacs.org/pub/xemacs/beta/binaries/}. @node Current Events, , MS Windows, Top @unnumbered 7 What the Future Holds This is part 7 of the XEmacs Frequently Asked Questions list. This -section will change monthly, and contains any interesting items that have -transpired over the previous month. If you are reading this from the -XEmacs distribution, please see the version on the Web or archived at the -various FAQ FTP sites, as this file is surely out of date. +section will change frequently, and (in theory) should contain any +interesting items that have transpired recently. (But in practice it's +not getting updated like this.) + +This section also contains descriptions of the new features in all the +recent releases of XEmacs. For the most part, the information below is +a synopsis of the more complete information that can be found in the +file @file{NEWS} in the @file{etc} directory of the XEmacs distribution. +You can view this file in XEmacs using @kbd{C-h n} or the @samp{Help} +menu. + +Information on older versions of XEmacs can be find in @file{ONEWS} in +the same directory, or @file{OONEWS} for really old versions. + @menu -* Q7.0.1:: What is new in 20.2? -* Q7.0.2:: What is new in 20.3? -* Q7.0.3:: What is new in 20.4? -* Q7.0.4:: Procedural changes in XEmacs development. +* Q7.0.1:: What new features will be in XEmacs soon? +* Q7.0.2:: What's new in XEmacs 21.4? +* Q7.0.3:: What's new in XEmacs 21.1? +* Q7.0.4:: What's new in XEmacs 20.4? +* Q7.0.5:: What's new in XEmacs 20.3? +* Q7.0.6:: What's new in XEmacs 20.2? @end menu @node Q7.0.1, Q7.0.2, Current Events, Current Events @unnumberedsec 7.0: Changes -@unnumberedsubsec Q7.0.1: What is new in 20.2? - -The biggest changes in 20.2 include integration of EFS (the next -generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a -major mode for editing Tex and LaTeX, and a lot of other stuff). Many -bugs from 20.0 have been fixed for this release. 20.2 also contains a -new system for customizing XEmacs options, invoked via @kbd{M-x -customize}. +@unnumberedsubsec Q7.0.1: What new features will be in XEmacs soon? -XEmacs 20.2 is the development release (20.0 was beta), and is no longer -considered unstable. +Not yet written. @node Q7.0.2, Q7.0.3, Q7.0.1, Current Events -@unnumberedsubsec Q7.0.2: What is new in 20.3? +@unnumberedsubsec Q7.0.2: What's new in XEmacs 21.4? + +21.4 was the "stable" version of the 21.2 series, which was considered +"experimental" throughout its life; thus there were no "official" +releases at all. In essence, XEmacs is now following the "alternating" +scheme of Linux, where at any point there are at least two different +development branches, one "stable" and one "experimental". Periodic +releases happen in both branches, but those in the experimental branch +are not tested as well, and there's no guarantee they will work at all. +The experiemental branch is open to any and all code that's acceptable +to the developers; the stable branch, however, is in general limited +only to bug fixes, and all contributions are carefully reviewed to make +sure they will increase and not decrease stability. + +21.3 never existed at all; it was decided to follow the Linux scheme +exactly, where odd-numbered series are experimental and even-numbered +ones stable. + +The following lists summarizes the essential changes made in this +version. For a fuller list, see the @file{NEWS} in the @file{etc} +directory of the XEmacs distribution, or use @kbd{C-h n} or the +@samp{Help} menu to view this file inside of XEmacs. + +@unnumberedsubsubsec User-visible changes + +@itemize @bullet + +@item +The delete key now deletes forward by default. +@item +Shifted motion keys now select text by default. +@item +You can now build XEmacs with support for GTK+ widget set. +@item +~/.xemacs/init.el is now the preferred location for the init +file. (XEmacs now supports a `~/.xemacs/init.el' startup file. Custom +file will move to ~/.xemacs/custom.el.) +@item +Much-improved sample init.el, showing how to use many useful features. +@item +XEmacs support for menu accelerators has been much improved. +@item +Default menubar improvements. (Default menubar has many new commands and +better organization. The font-menu is now available under MS Windows.) +@item +Dialog box improvements, including a real file dialog box. (XEmacs now has a proper file dialog box under MS Windows (and GTK)! The old clunky file dialog box is improved. Keyboard traversal now works correctly in MS Windows dialog boxes. There is a Search dialog box available from Edit->Find...) +@item +New buffer tabs. +@item +There is a new MS Windows installer, netinstall, ported from Cygwin. +@item +The subprocess quote-handling mechanism under Windows is much improved. +@item +Printing support now available under MS Windows. +@item +Selection improvements. (Kill and yank now interact with the clipboard under Windows. MS Windows support for selection is now much more robust. Motif selection support is now more correct (but slower).) +@item +Mail spool locking now works correctly. +@item +International support changes. (The default coding-priority-list is now +safer. International keysyms are now supported under X. MS Windows +1251 code page now supported. Czech, Thai, Cyrillic-KOI8, Vietnamese, +Ethiopic now supported. Proper support for words in Latin 3 and Latin +4.) +@item +Help buffers contain hyperlinks, and other changes. +@item +The modeline's text is now scrollable. +@item +The mouse wheel under MS Windows now functions correctly. +@item +Interactive searching and matching case improvements. (Incremental search will now highlight all visible matches. Interactive searches always respect uppercase characters.) +@item +Rectangle functions rewritten to avoid inserting extra spaces. +@item +New command `kill-entire-line' that always kills the entire line. +@item +Default values correctly stored in minibuffer histories. +@item +You can now create "indirect buffers", like in GNU Emacs. +@item +Pixel-based scrolling has been implemented. +@item +Operation progress can be displayed using graphical widgets. +@item +User names following a tilde can now be completed at file name prompts. +@item +XEmacs can now play sound using Enlightenment Sound Daemon (ESD). +@item +X-Face support is now available under MS Windows. +@item +The PostgreSQL Relational Database Management System is now supported. +@item +Indentation no longer indents comments that begin at column zero. +@item +Face and variable settings can have comments in Customize. +@item +New locations for early package hierarchies. +@item +The `auto-save' library has been greatly improved. +@item +New variable `mswindows-alt-by-itself-activates-menu'. +@item +Other init-file-related changes. (Init file in your home directory may be called `.emacs.el'. New command-line switches -user-init-file and -user-init-directory.) +@item +Etags changes. See @file{NEWS} for full details. +@end itemize + +@unnumberedsubsubsec Lisp and internal changes + +Not yet written. + +@itemize @bullet +@end itemize + +@node Q7.0.3, Q7.0.4, Q7.0.2, Current Events +@unnumberedsubsec Q7.0.3: What's new in XEmacs 21.1? + +21.1 was the "stable" version of "experimental" 21.0 series. +@xref{Q7.0.2}. + +The following lists summarizes the essential changes made in this +version. For a fuller list, see the @file{NEWS} in the @file{etc} +directory of the XEmacs distribution, or use @kbd{C-h n} or the +@samp{Help} menu to view this file inside of XEmacs. + +@unnumberedsubsubsec User-visible changes + +@itemize @bullet + +@item +XEmacs is now supported under Microsoft Windows 95/98 and Windows NT +operating systems. To discuss Windows-specific issues, subscribe to the +mailing list at @email{xemacs-nt-request@@xemacs.org}. + +@item +XEmacs has been unbundled into constituent installable packages. + +@item +@strong{Other notable changes}: The @samp{Options} menu has been ported to +Custom; XEmacs now is able to choose X visuals and use private +colormaps; You can drag the vertical divider of "horizontally" +(side-by-side) split windows. + +@item +@strong{Building changes}: XEmacs can be built with support for 31-bit Lisp +integers and 32-bit pointers (previously, it was 28-bit integers and +pointers); XEmacs can be built with LDAP support; @file{dir} files can be +removed in the Info subsystem, and will be regenerated on-the-fly. + +@item +@strong{New packages}: @file{imenu}, @file{popper}, @file{gdb-highlight} + +@item +@strong{Package changes}: Many changes to @file{cc-mode}, @file{gnus}, +@file{gnuclient}. See @file{NEWS} for full details. + +@item +@strong{New commands, variables and functions}: +@code{center-to-window-line} (like @code{recenter} but doesn't force a +redisplay); variable @code{user-full-name} (customize what your full +name looks like in mail); @kbd{M-x customize-changed-options} (customize +options whose default values changes because you upgraded your XEmacs); +@kbd{M-x add-log-convert} (converts an old-style ChangeLog buffer to +new-style); @kbd{M-x zap-up-to-char} (like @code{zap-to-char} but +doesn't delete the char searched for); commands to store, retrieve and +increment numbers in registers, useful for macros. + +@item +@strong{Changes to commands, variables, and functions}: @kbd{M-x +query-replace} and friends operate only on the region when it's active; +@code{echo-keystrokes} can now be a floating-point number; @kbd{M-.} +searches exact tag matches before inexact ones; function +@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. + +@item +@strong{XEmacs/Mule (internationalization) changes}: Mule support now +works on TTY's; Egg/SJ3 input method now officially supported (Quail and +Egg/Skk already available through LEIM since 20.3); localized Japanese +menubars if XEmacs is built with the right support. + +@end itemize + +@unnumberedsubsubsec Lisp and internal changes + +@itemize @bullet + +@item +@strong{Specifier changes}: The window locale now has a higher +precedence than the buffer locale when instantiating; new macro +@code{let-specifier}; new specifiers +@code{vertical-scrollbar-visible-p}, horizontal-scrollbar-visible-p', +@code{scrollbar-on-left-p}, @code{scrollbar-on-top-p}, +@code{vertical-divider-always-visible-p}, +@code{vertical-divider-shadow-thickness}, +@code{vertical-divider-line-width}, @code{vertical-divider-spacing}; +specifiers and symbols whose value is a specifier allowed as modeline +specifications. + +@item +@strong{Frame focus changes}: @code{focus-follows-mouse} works like FSF, +prevents any attempt to permanently change the selected frame; new +function @code{focus-frame} sets the window system focus a frame; new +special forms @code{save-selected-frame} and @code{with-selected-frame}. + +@item +@strong{Window function changes}: @code{select-window} now has optional +argument @var{NORECORD} to inhibit recording a buffer change; +@code{vertical-motion} now correctly handles optional @var{WINDOW} +argument and has new optional argument @var{PIXELS}, to have the +returned values be in pixels; new function +@code{vertical-motion-pixels}; new functions +@code{window-text-area-pixel-@{width,height,edges@}}; new functions +@code{shrink-window-pixels} and @code{enlarge-window-pixels}; new +function @code{window-displayed-text-pixel-height}. + +@item +@strong{Other function changes}: Arithmetic comparison functions +@code{<}, @code{>}, @code{=}, @code{/=} now accept a variable number of +arguments; hashtables now have a consistent read/print syntax; keyword +symbols cannot be set to a value other than themselves; @code{concat} no +longer accepts integer arguments; new function @code{string}, like +@code{list}, @code{vector}, etc.; new function @code{temp-directory} +(OS-independent way to get a temp directory); @code{load-average} has +optional argument @var{USE-FLOATS}; @code{make-event} implemented +completely; new function @code{function-interactive} (returns a +function's interactive spec); new functions @code{lmessage}, +@code{lwarn} (printf-like versions of @code{display-wessage}, +@code{display-warning}); new keyword @code{:version} to +@code{defcustom}. + +@item +@strong{Performance}: when the new GNU Malloc aka Doug Lea Malloc is +available, it will be used (better performance on libc6 Linux systems); +tracking line-numbers in modeline is now efficient; profiling records a +call-count of all called functions, retrievable through +@code{profile-call-count-results}. + +@item +@strong{Startup and path searching}: code to assemble paths at startup +rewritten for new package system; new function @code{split-path} (splits +by @code{path-separator}); @code{Info-default-directory-list} obsolete, +use @code{Info-directory-list} instead; site-lisp is deprecated and no +longer on the load-path by default. + +@end itemize + +@node Q7.0.4, Q7.0.5, Q7.0.3, Current Events +@unnumberedsubsec Q7.0.4: What's new in XEmacs 20.4? + +XEmacs 20.4 is a bugfix release with no user-visible changes. +@c Filled in from NEWS file of 20.5-b33 + +@node Q7.0.5, Q7.0.6, Q7.0.4, Current Events +@unnumberedsubsec Q7.0.5: What's new in XEmacs 20.3? XEmacs 20.3 was released in November 1997. It contains many bugfixes, and a number of new features, including Autoconf 2 based configuration, @@ -6330,45 +6862,20 @@ XEmacs 20.3 is the first non-beta v20 release, and will be the basis for all further development. -@node Q7.0.3, Q7.0.4, Q7.0.2, Current Events -@unnumberedsubsec Q7.0.3: What's new in XEmacs 20.4? +@node Q7.0.6, , Q7.0.5, Current Events +@unnumberedsubsec Q7.0.6: What's new in XEmacs 20.2? -XEmacs 20.4 is a bugfix release with no user-visible changes. -@c Filled in from NEWS file of 20.5-b33 - - -@node Q7.0.4, , Q7.0.3, Current Events -@unnumberedsubsec Q7.0.4: Procedural changes in XEmacs development. - -@enumerate -@item -Discussion about the development of XEmacs occurs on the xemacs-beta -mailing list. Subscriptions to this list will now be fully automated -instead of being handled by hand. Send a mail message to -@email{xemacs-beta-request@@xemacs.org} with @samp{subscribe} as the -BODY of the message to join the list. Please note this is a developers -mailing list for people who have an active interest in the development -process. - -The discussion of NT XEmacs development is taking place on a separate -mailing list. Send mail to -@iftex -@* -@end iftex -@email{xemacs-nt-request@@xemacs.org} to -subscribe. - -@item -Due to the long development cycle in between releases, it has been -decided that intermediate versions will be made available in source only -form for the truly interested. +The biggest changes in 20.2 include integration of EFS (the next +generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a +major mode for editing Tex and LaTeX, and a lot of other stuff). Many +bugs from 20.0 have been fixed for this release. 20.2 also contains a +new system for customizing XEmacs options, invoked via @kbd{M-x +customize}. -XEmacs 19.16 was the last 19 release, basically consisting of 19.15 plus -the collected bugfixes. +XEmacs 20.2 is the development release (20.0 was beta), and is no longer +considered unstable. -@item -As of December 1996, @email{steve@@xemacs.org, Steve Baur} has become -the lead maintainer of XEmacs. -@end enumerate +For older news, see the file @file{ONEWS} in the @file{etc} directory of +the XEmacs distribution. @bye diff --text -u 'xemacs-21.5.1/man/xemacs/custom.texi' 'xemacs-21.5.2/man/xemacs/custom.texi' Index: ././man/xemacs/custom.texi --- ././man/xemacs/custom.texi Fri Apr 13 03:22:27 2001 +++ ././man/xemacs/custom.texi Fri Jun 1 17:17:05 2001 @@ -179,12 +179,13 @@ @findex customize @cindex customization buffer A convenient way to find the user option variables that you want to -change, and then change them, is with @kbd{M-x customize}. This command -creates a @dfn{customization buffer} with which you can browse through -the Emacs user options in a logically organized structure, then edit and -set their values. You can also use the customization buffer to save -settings permanently. (Not all Emacs user options are included in this -structure as of yet, but we are adding the rest.) +change, and then change them, is with @kbd{C-h C} (@code{customize}). +This command creates a @dfn{customization buffer} with which you can +browse through the Emacs user options in a logically organized +structure, then edit and set their values. You can also use the +customization buffer to save settings permanently. (Not all Emacs user +options are included in this structure as of yet, but we are adding the +rest.) @menu * Groups: Customization Groups. @@ -203,9 +204,9 @@ @dfn{groups} to help you find them. Groups are collected into bigger groups, all the way up to a master group called @code{Emacs}. - @kbd{M-x customize} creates a customization buffer that shows the -top-level @code{Emacs} group and the second-level groups immediately -under it. It looks like this, in part: + @kbd{C-h C} (@code{customize}) creates a customization buffer that +shows the top-level @code{Emacs} group and the second-level groups +immediately under it. It looks like this, in part: @smallexample /- Emacs group: ---------------------------------------------------\ diff --text -u 'xemacs-21.5.1/man/xemacs/mule.texi' 'xemacs-21.5.2/man/xemacs/mule.texi' Index: ././man/xemacs/mule.texi --- ././man/xemacs/mule.texi Fri Apr 13 03:22:29 2001 +++ ././man/xemacs/mule.texi Fri Jun 1 17:17:05 2001 @@ -13,13 +13,14 @@ @cindex IPA @cindex Japanese @cindex Korean +@cindex Cyrillic @cindex Russian - If you compile XEmacs with mule option, it supports a wide variety of -world scripts, including Latin script, as well as Arabic script, -Simplified Chinese script (for mainland of China), Traditional Chinese -script (for Taiwan and Hong-Kong), Greek script, Hebrew script, IPA + 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 +(for Taiwan and Hong-Kong), the Greek script, the Hebrew script, IPA symbols, Japanese scripts (Hiragana, Katakana and Kanji), Korean scripts -(Hangul and Hanja) and Cyrillic script (for Byelorussian, Bulgarian, +(Hangul and Hanja) and the Cyrillic script (for Byelorussian, Bulgarian, Russian, Serbian and Ukrainian). These features have been merged from the modified version of Emacs known as MULE (for ``MULti-lingual Enhancement to GNU Emacs''). @@ -89,8 +90,10 @@ the XEmacs session. The supported language environments include: @quotation -Chinese-BIG5, Chinese-CNS, Chinese-GB, Cyrillic-ISO, English, Ethiopic, -Greek, Japanese, Korean, Latin-1, Latin-2, Latin-3, Latin-4, Latin-5. +ASCII, Chinese-BIG5, Chinese-GB, Croatian, Cyrillic-ALT, Cyrillic-ISO, +Cyrillic-KOI8, Cyrillic-Win, Czech, English, Ethiopic, French, German, +Greek, Hebrew, IPA, Japanese, Korean, Latin-1, Latin-2, Latin-3, Latin-4, +Latin-5, Norwegian, Polish, Romanian, Slovenian, Thai-XTIS, Vietnamese. @end quotation Some operating systems let you specify the language you are using by @@ -217,7 +220,7 @@ input method name with the minibuffer; the name normally starts with the language environment that it is meant to be used with. The variable @code{current-input-method} records which input method is selected. - + @findex toggle-input-method @kindex C-\ Input methods use various sequences of ASCII characters to stand for @@ -274,19 +277,24 @@ newline, carriage-return linefeed, and just carriage-return. @table @kbd -@item C-h C @var{coding} @key{RET} +@item C-x @key{RET} C @var{coding} @key{RET} Describe coding system @var{coding}. -@item C-h C @key{RET} +@item C-x @key{RET} C @key{RET} Describe the coding systems currently in use. @item M-x list-coding-systems Display a list of all the supported coding systems. + +@item C-u M-x list-coding-systems +Display comprehensive list of specific details of all supported coding +systems. + @end table -@kindex C-h C +@kindex C-x RET C @findex describe-coding-system - The command @kbd{C-h C} (@code{describe-coding-system}) displays + The command @kbd{C-x RET C} (@code{describe-coding-system}) displays information about particular coding systems. You can specify a coding system name as argument; alternatively, with an empty argument, it describes the coding systems currently selected for various purposes, @@ -435,7 +443,8 @@ command. @item C-x @key{RET} k @var{coding} @key{RET} -Use coding system @var{coding} for keyboard input. +Use coding system @var{coding} for keyboard input. (This feature is +non-functional and is temporarily disabled.) @item C-x @key{RET} t @var{coding} @key{RET} Use coding system @var{coding} for terminal output. @@ -507,6 +516,8 @@ translation of keyboard input is useful for terminals with keys that send non-ASCII graphic characters---for example, some terminals designed for ISO Latin-1 or subsets of it. + +(This feature is non-functional and is temporarily disabled.) By default, keyboard input is not translated at all. diff --text -u 'xemacs-21.5.1/man/xemacs/packages.texi' 'xemacs-21.5.2/man/xemacs/packages.texi' Index: ././man/xemacs/packages.texi --- ././man/xemacs/packages.texi Fri Apr 13 03:22:29 2001 +++ ././man/xemacs/packages.texi Thu Jul 26 11:56:47 2001 @@ -32,12 +32,14 @@ There are two main flavors of packages. @itemize @bullet -@item Regular Packages +@item +Regular Packages @cindex regular packages A regular package is one in which multiple files are involved and one may not in general safely remove any of them. -@item Single-File Packages +@item +Single-File Packages @cindex single-file packages A single-file package is an aggregate collection of thematically related but otherwise independent lisp files. These files are bundled @@ -247,7 +249,8 @@ Packages". @enumerate 1 -@item Choose a download site. +@item +Choose a download site. via menu: Options -> Manages Packages -> Add Download Site via keyb: @code{M-x customize-variable RET package-get-remote RET} (put in the details of remote host and directory) @@ -255,7 +258,8 @@ If the package tarballs _AND_ the package-index file are in a local directory, you can: @code{M-x pui-add-install-directory RET} -@item Obtain a list of packages and display the list in a buffer named +@item +Obtain a list of packages and display the list in a buffer named @file{*Packages*}. menu: Options -> Manage Packages -> List & Install keyb: @code{M-x pui-list-packages RET} @@ -319,11 +323,13 @@ about the package to be displayed in the minibuffer. -@item Choose the packages you wish to install. +@item +Choose the packages you wish to install. mouse: Click button 2 on the package name. keyb: @kbd{RET} on the package name -@item Make sure you have everything you need. +@item +Make sure you have everything you need. menu: Packages -> Add Required keyb: @kbd{r} @@ -334,7 +340,8 @@ For novices and gurus alike, this step can save your bacon. It's easy to forget to install a critical package. -@item Download and install the packages. +@item +Download and install the packages. menu: Packages -> Install/Remove Selected keyb: @kbd{x} @end enumerate @@ -490,7 +497,7 @@ This is where you set the normal packages that you want to install. eg: @example - XEMACS_PACKAGES = libs/xemacs-base comm/bbdb + XEMACS_PACKAGES = xemacs-packages/xemacs-base xemacs-packages/bbdb @end example @item XEMACS_STAGING = $@{XEMACS_PACKAGES_BASE@}/../Packages @@ -509,7 +516,7 @@ Same as for 'XEMACS_PACKAGES' except you list the Mule packages you want to install here. eg: @example - MULE_PACKAGES = mule/mule-base mule/skk + MULE_PACKAGES = mule-packages/mule-base mule-packages/skk @end example @item MULE_STAGING = $@{XEMACS_PACKAGES_BASE@}/../Mule-Packages @@ -608,10 +615,8 @@ @code{AUTHOR_VERSION}, @code{MAINTAINER}, @code{PACKAGE}, @code{PKG_TYPE}, @code{REQUIRES}, and @code{CATEGORY}. All but one were described in the description of @file{package-info.in}. The last is an -administrative grouping. Current categories include @code{comm}, -@code{games}, @code{libs}, @code{mule}, @code{oa}, @code{os}, -@code{prog}, and @code{wp}. @ref{Available Packages}, for a list of -categories. +administrative grouping. Current categories include @code{standard}, +and @code{mule}. Next, define the variable @code{ELCS}. This contains the list of the byte-compiled Lisp files used by the package. These files and their @@ -672,333 +677,302 @@ 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 January 17, 2001. +This data is up-to-date as of May 15, 2001. -@subsection Library Packages (libs) - -These packages are required to build and support most of the rest of -XEmacs. By design, xemacs-base is a `regular' package. Use restraint -when adding new files there as it is required by almost everything. +@subsection Normal Packages +A very broad selection of elisp packages. @table @file @item Sun Support for Sparcworks. +@item ada +Ada language support. + @item apel A Portable Emacs Library. Used by XEmacs MIME support. -@item dired -The DIRectory EDitor is for manipulating, and running commands on -files in a directory. +@item auctex +Basic TeX/LaTeX support. -@item edebug -A Lisp debugger. +@item bbdb +The Big Brother Data Base -@item efs -Treat files on remote systems the same as local files. +@item build +Build XEmacs using custom widgets. -@item elib -Portable Emacs Lisp utilities library. +@item c-support +Basic single-file add-ons for editing C code. -@item fsf-compat -FSF Emacs compatibility files. +@item calc +Emacs calculator. -@item mail-lib -Fundamental lisp files for providing email support. +@item calendar +Calendar and diary support. -@item sounds-au -XEmacs Sun sound files. +@item cc-mode +C, C++ and Java language support. -@item sounds-wav -XEmacs Microsoft sound files. +@item cookie +Spook and Yow (Zippy quotes). -@item tooltalk -Support for building with Tooltalk. +@item crisp +Crisp/Brief emulation. -@item xemacs-base -Fundamental XEmacs support. Install this unless you wish a totally -naked XEmacs. +@item debug +GUD, gdb, dbx debugging support. -@item xemacs-devel -XEmacs Lisp developer support. This package contains utilities for -supporting Lisp development. It is a single-file package so it may be -tailored. -@end table +@item dired +The DIRectory EDitor is for manipulating, and running commands on +files in a directory. -@subsection Communications Packages (comm) +@item edebug +A Lisp debugger. -These packages provide support for various communications, primarily -email and usenet. +@item ediff +Interface over patch. -@table @file -@item bbdb -The Big Brother Data Base +@item edit-utils +Single file lisp packages for various XEmacs goodies. Load this and +weed out the junk you don't want. + +@item edt +DEC EDIT/EDT emulation. + +@item efs +Treat files on remote systems the same as local files. @item eicq ICQ Client developed and tested on Linux x86; only supported on that platform +@item eieio +Enhanced Implementation of Emacs Interpreted Objects. + +@item elib +Portable Emacs Lisp utilities library. + +@item emerge +Another interface over patch. + +@item eshell +Command shell implemented entirely in Emacs Lisp. + +@item eterm +Terminal emulator. + @item eudc Emacs Unified Directory Client (LDAP, PH). @item footnote Footnoting in mail message editing modes. -@item gnats -XEmacs bug reports. +@item forms +Forms editing support (obsolete, use the built-in Widget instead). -@item gnus -The Gnus Newsreader and Mailreader. +@item frame-icon +Provide a WM icon based on major mode. -@item mailcrypt -Support for messaging encryption with PGP. +@item fsf-compat +FSF Emacs compatibility files. -@item mew -Messaging in an Emacs World. +@item games +Tetris, Sokoban, and Snake. -@item mh-e -Front end support for MH. +@item gnats +XEmacs bug reports. -@item net-utils -Miscellaneous Networking Utilities. This is a single-file package and -files may be deleted at will. +@item gnus +The Gnus Newsreader and Mailreader. -@item rmail -An obsolete Emacs mailer. If you do not already use it don't start. +@item hm--html-menus +HTML editing. -@item supercite -An Emacs citation tool. Useful with all Emacs Mailers and Newsreaders. +@item idlwave +Editing and Shell mode for the Interactive Data Language. -@item tm -Emacs MIME support. Not needed for Gnus >= 5.8.0 +@item igrep +Enhanced front-end for Grep. -@item vm -An Emacs mailer. +@item ilisp +Front-end for Inferior Lisp. -@item w3 -A Web browser. +@item ispell +Spell-checking with ispell. -@item zenirc -ZENIRC IRC Client. -@end table +@item jde +Java language and development support. -@subsection Games and Amusements (games) +@item mail-lib +Fundamental lisp files for providing email support. -All work and no play... +@item mailcrypt +Support for messaging encryption with PGP. -@table @file -@item cookie -Spook and Yow (Zippy quotes). +@item mew +Messaging in an Emacs World. -@item games -Tetris, Sokoban, and Snake. +@item mh-e +Front end support for MH. @item mine Minehunt. @item misc-games Other amusements and diversions. -@end table - -@subsection Mule Support (mule) - -MULti-lingual Enhancement. Support for world scripts such as -Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc. -To use these packages your XEmacs must be compiled with Mule -support. - -@table @file -@item edict -Lisp Interface to EDICT, Kanji Dictionary. - -@item egg-its -Wnn (4.2 and 6) support. SJ3 support. Must be installed prior to -XEmacs build. - -@item leim -Quail. Used for everything other than English and Japanese. - -@item locale -Used for localized menubars (French and Japanese) and localized splash -screens (Japanese). - -@item lookup -Dictionary support. (This isn't an English dictionary program) -@item mule-base -Basic Mule support. Must be installed prior to building with Mule. - -@item skk -Another Japanese Language Input Method. Can be used without a -separate process running as a dictionary server. -@end table +@item net-utils +Miscellaneous Networking Utilities. This is a single-file package and +files may be deleted at will. -@subsection Productivity Packages (oa) +@item os-utils +Miscellaneous single-file O/S utilities, for printing, archiving, +compression, remote shells, etc. -Things to make life a little easier. +@item pc +PC style interface emulation. -@table @file -@item calc -Emacs calculator. +@item pcl-cvs +CVS frontend. -@item calendar -Calendar and diary support. +@item pcomplete +Provides programmatic completion. -@item edit-utils -Single file lisp packages for various XEmacs goodies. Load this and -weed out the junk you don't want. +@item prog-modes +Miscellaneous single-file lisp files for various programming languages. -@item forms -Forms editing support (obsolete, use the built-in Widget instead). +@item ps-print-nomule +Old, but no-Mule safe ps-print. -@item frame-icon -Provide a WM icon based on major mode. +@item psgml +Validated HTML/SGML editing. -@item hm--html-menus -HTML editing. +@item reftex +Emacs support for LaTeX cross-references, citations. -@item ispell -Spell-checking with ispell. +@item rmail +An obsolete Emacs mailer. If you do not already use it don't start. -@item pc -PC style interface emulation. +@item scheme +Front-end support for Inferior Scheme. -@item psgml -Validated HTML/SGML editing. +@item semantic +Semantic bovinator. @item sgml SGML/Linuxdoc-SGML editing. +@item sh-script +Support for editing shell scripts. + @item slider User interface tool. +@item sounds-au +XEmacs Sun sound files. + +@item sounds-wav +XEmacs Microsoft sound files. + @item speedbar Provides a separate frame with convenient references. @item strokes Mouse enhancement utility. +@item supercite +An Emacs citation tool. Useful with all Emacs Mailers and Newsreaders. + +@item texinfo +XEmacs TeXinfo support. + @item text-modes Various single file lisp packages for editing text files. +@item textools +Single-file TeX support. + @item time Display time & date on the modeline. -@end table - -@subsection Operating System Utilities (os) - -Tools for working with the operating system. - -@table @file -@item eshell -Command shell implemented entirely in Emacs Lisp. -@item eterm -Terminal emulator. +@item tm +Emacs MIME support. Not needed for Gnus >= 5.8.0 -@item igrep -Enhanced front-end for Grep. +@item tooltalk +Support for building with Tooltalk. -@item ilisp -Front-end for Inferior Lisp. +@item tpu +DEC EDIT/TPU support. -@item os-utils -Miscellaneous single-file O/S utilities, for printing, archiving, -compression, remote shells, etc. +@item vc +Version Control for Free systems. -@item pcomplete -Provides programmatic completion. +@item vc-cc +Version Control for ClearCase. This package will shortly be +replaced with clearcase.el -@item ps-print-nomule -Old, but no-Mule safe ps-print. +@item vhdl +Support for VHDL. @item view-process A Unix process browsing tool. -@end table - -@subsection Program Editing Support (prog) - -XEmacs supports a multitude of programming languages. These -packages will help your coding. - -@table @file -@item ada -Ada language support. -@item c-support -Basic single-file add-ons for editing C code. - -@item cc-mode -C, C++ and Java language support. - -@item debug -GUD, gdb, dbx debugging support. - -@item ediff -Interface over patch. - -@item emerge -Another interface over patch. - -@item idlwave -Editing and Shell mode for the Interactive Data Language. - -@item jde -Java language and development support. - -@item pcl-cvs -CVS frontend. +@item viper +VI emulation support. -@item prog-modes -Miscellaneous single-file lisp files for various programming languages. +@item vm +An Emacs mailer. -@item scheme -Front-end support for Inferior Scheme. +@item w3 +A Web browser. -@item semantic -Semantic bovinator. +@item xemacs-base +Fundamental XEmacs support. Install this unless you wish a totally +naked XEmacs. -@item sh-script -Support for editing shell scripts. +@item xemacs-devel +XEmacs Lisp developer support. This package contains utilities for +supporting Lisp development. It is a single-file package so it may be +tailored. -@item vc -Version Control for Free systems. +@item xslt-process +A minor mode for (X)Emacs which allows running an XSLT processor on a +buffer. -@item vc-cc -Version Control for ClearCase. This package will shortly be -replaced with clearcase.el - -@item vhdl -Support for VHDL. +@item zenirc +ZENIRC IRC Client. @end table -@subsection Word Processing (wp) +@subsection Mule Support (mule) -Working with text. +MULti-lingual Enhancement. Support for world scripts such as +Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc. +To use these packages your XEmacs must be compiled with Mule +support. @table @file -@item auctex -Basic TeX/LaTeX support. - -@item crisp -Crisp/Brief emulation. +@item edict +Lisp Interface to EDICT, Kanji Dictionary. -@item edt -DEC EDIT/EDT emulation. +@item egg-its +Wnn (4.2 and 6) support. SJ3 support. Must be installed prior to +XEmacs build. -@item reftex -Emacs support for LaTeX cross-references, citations. +@item leim +Quail. Used for everything other than English and Japanese. -@item texinfo -XEmacs TeXinfo support. +@item locale +Used for localized menubars (French and Japanese) and localized splash +screens (Japanese). -@item textools -Single-file TeX support. +@item lookup +Dictionary support. (This isn't an English dictionary program) -@item tpu -DEC EDIT/TPU support. +@item mule-base +Basic Mule support. Must be installed prior to building with Mule. -@item viper -VI emulation support. +@item skk +Another Japanese Language Input Method. Can be used without a +separate process running as a dictionary server. @end table diff --text -u 'xemacs-21.5.1/netinstall/ChangeLog' 'xemacs-21.5.2/netinstall/ChangeLog' Index: ././netinstall/ChangeLog --- ././netinstall/ChangeLog Wed May 9 19:53:53 2001 +++ ././netinstall/ChangeLog Sat Jul 28 16:48:22 2001 @@ -1,3 +1,7 @@ +2001-07-28 Stephen J. Turnbull + + * XEmacs 21.5.2 "artichoke" is released. + 2001-05-09 Martin Buchholz * XEmacs 21.5.1 "anise" is released. diff --text -u 'xemacs-21.5.1/nt/ChangeLog' 'xemacs-21.5.2/nt/ChangeLog' Index: ././nt/ChangeLog --- ././nt/ChangeLog Wed May 9 19:53:53 2001 +++ ././nt/ChangeLog Sat Jul 28 16:48:22 2001 @@ -1,3 +1,87 @@ +2001-07-28 Stephen J. Turnbull + + * XEmacs 21.5.2 "artichoke" is released. + +2001-07-26 Stephen J. Turnbull + + * xemacs.mak (configclean): + New target. Convenience for multiplatform builds (need to delete + the native config.h since it's newer than config.h.in). + (distclean): Use it. + + * xemacs.mak (DEL): + Remove error-suppressing "-" from definition. Use variable in + shell structured commands. Prefix "-" to existing uses. + (DELS, DELSQ): + Remove definitions, WinME can't hack the switches. + (distclean): + Clean subdirectories of $(LISP) explicitly. + + * xemacs.mak: + Move HAVE_WIDGET and HAVE_TOOLBAR configuration together. + +2001-06-12 Stephen J. Turnbull + + * xemacs.mak (HAVE_ZLIB): New, defaults to HAVE_PNG. + (USE_MINITAR): Default to HAVE_ZLIB. + (MSW_LIBS): Add comctl32.lib if HAVE_WIDGETS. + (mostlyclean, nicenclean, distclean, versionclean): Only one target + per invocation of $(DEL); don't use unneeded switches (WinME support). + + (TEMACS_CPP_FLAGS): Add EMACS_PATCH_LEVEL. + +2001-05-28 Nick V. Pakoulin + + * xemacs.mak (install): Replace calls to (x)copy commands with + COPY and COPYDIR variables. + (COPY): New + (COPYDIR): New + +2001-05-26 Ben Wing + + * xemacs.mak (DEPEND): + * xemacs.mak (LASTFILE_OBJS): + * xemacs.mak (LWLIB_OBJS): + * xemacs.mak (TEMACS_OBJS): + fix use of targets so that config.h doesn't end up being passed + to the C compiler as an input file; that creates warnings. + put back config.inc into depend-file targets; removed previously + in a wrong attempt to fix this same problem. + +2001-05-24 Ben Wing + + * xemacs.mak (DOC): + * xemacs.mak (TEMACS_OBJS): + add glyphs-shared.c. + +2001-05-23 Ben Wing + + * xemacs.mak (installation): + call `ver' to get the exact os version and put it in the + installation; suggestion from adrian. + +2001-05-21 Martin Buchholz + + * xemacs.mak: Remove references to lwlib-config. + +2001-05-01 Kirill 'Big K' Katsnelson + + * xemacs.mak: Use link to make .rsrc writable, not editbin. + +2001-05-10 Ben Wing + + * xemacs.mak (TEMACS_LIBS): + need another lib (netapi32.lib) for user-name-all-completions. + + * xemacs.mak (all): + * xemacs.mak (OS): + remove autoload-building target. + +2001-05-09 Ben Wing + + * xemacs.mak (OS): + do not warn about gtk when we're not trying to compile with it. + 2001-05-09 Martin Buchholz * XEmacs 21.5.1 "anise" is released. diff --text -u 'xemacs-21.5.1/nt/installer/Wise/ChangeLog' 'xemacs-21.5.2/nt/installer/Wise/ChangeLog' Index: ././nt/installer/Wise/ChangeLog --- ././nt/installer/Wise/ChangeLog Wed May 9 19:53:53 2001 +++ ././nt/installer/Wise/ChangeLog Sat Jul 28 16:48:22 2001 @@ -1,3 +1,7 @@ +2001-07-28 Stephen J. Turnbull + + * XEmacs 21.5.2 "artichoke" is released. + 2001-05-09 Martin Buchholz * XEmacs 21.5.1 "anise" is released. diff --text -u 'xemacs-21.5.1/nt/xemacs.mak' 'xemacs-21.5.2/nt/xemacs.mak' Index: ././nt/xemacs.mak --- ././nt/xemacs.mak Sat May 5 19:53:08 2001 +++ ././nt/xemacs.mak Thu Jul 26 15:21:45 2001 @@ -45,8 +45,19 @@ XEMACSDIRSTRING=$(MAKEDIRSTRING:\\nt=) -# Define a variable for the 'del' command to use -DEL=-del +# Common operations + +# Note that some versions of some commands are deficient. + +# Define the 'del' command to use +# WinME's DEL command can only handle one argument and only has the /P flag. +# 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 +COPY=xcopy /q /y +COPYDIR=xcopy /q /y /e # Program name and version @@ -120,6 +131,9 @@ !if !defined(HAVE_PNG) HAVE_PNG=0 !endif +!if !defined(HAVE_ZLIB) +HAVE_ZLIB=$(HAVE_PNG) +!endif !if !defined(HAVE_TIFF) HAVE_TIFF=0 !endif @@ -160,7 +174,7 @@ USE_UNION_TYPE=0 !endif !if !defined(USE_MINITAR) -USE_MINITAR=1 +USE_MINITAR=$(HAVE_ZLIB) !endif !if !defined(USE_MINIMAL_TAGBITS) USE_MINIMAL_TAGBITS=0 @@ -325,13 +339,13 @@ ! if defined(_) ! if [perl -p -e "s/^\\x23if defined(.+)/!if defined$$1/; s/^\\x23e/!e/;" \ -e "s/([\\s=^])([\\w\\d\\.\\-^]+\\.[ch^])/$$1$(SRC:\=\\\\)\\\\$$2/g;" \ - -e "s/^(.+)\\.o:(.+)/$(OUTDIR:\=\\\\)\\\\$$1.obj:$$2/;" \ + -e "s/^(.+)\\.o:(.+)/$(OUTDIR:\=\\\\)\\\\$$1.obj:$$2 $(NT:\=\\\\)\\\\config.inc/;" \ < $(SRC)\depend > $(OUTDIR)\depend.tmp] ! endif ! else ! if [perl -p -e "s/^\x23if defined(.+)/!if defined$$1/; s/^\x23e/!e/;" \ -e "s/([\s=^])([\w\d\.\-^]+\.[ch^])/$$1$(SRC:\=\\)\\$$2/g;" \ - -e "s/^(.+)\.o:(.+)/$(OUTDIR:\=\\)\\$$1.obj:$$2/;" \ + -e "s/^(.+)\.o:(.+)/$(OUTDIR:\=\\)\\$$1.obj:$$2 $(NT:\=\\)\\config.inc/;" \ < $(SRC)\depend > $(OUTDIR)\depend.tmp] ! endif ! endif @@ -423,6 +437,11 @@ MSW_DEFINES=$(MSW_DEFINES) -DHAVE_TOOLBARS MSW_TOOLBAR_SRC=$(SRC)\toolbar.c $(SRC)\toolbar-msw.c MSW_TOOLBAR_OBJ=$(OUTDIR)\toolbar.obj $(OUTDIR)\toolbar-msw.obj +!endif +!if $(HAVE_WIDGETS) +MSW_DEFINES=$(MSW_DEFINES) -DHAVE_WIDGETS +!endif +!if $(HAVE_TOOLBARS) || $(HAVE_WIDGETS) MSW_LIBS=$(MSW_LIBS) comctl32.lib !endif !if $(HAVE_DIALOGS) @@ -430,9 +449,6 @@ MSW_DIALOG_SRC=$(SRC)\dialog.c $(SRC)\dialog-msw.c MSW_DIALOG_OBJ=$(OUTDIR)\dialog.obj $(OUTDIR)\dialog-msw.obj !endif -!if $(HAVE_WIDGETS) -MSW_DEFINES=$(MSW_DEFINES) -DHAVE_WIDGETS -!endif !if $(HAVE_NATIVE_SOUND) MSW_DEFINES=$(MSW_DEFINES) -DHAVE_NATIVE_SOUND !endif @@ -501,14 +517,15 @@ $(SRC)\Emacs.ad.h \ $(SRC)\paths.h +# #### Copying is cheap, we should just force these $(SRC)\config.h: config.h - copy config.h $(SRC) + @$(COPY) config.h $(SRC) $(SRC)\Emacs.ad.h: Emacs.ad.h - copy Emacs.ad.h $(SRC) + @$(COPY) Emacs.ad.h $(SRC) $(SRC)\paths.h: paths.h - copy paths.h $(SRC) + @$(COPY) paths.h $(SRC) #------------------------------------------------------------------------------ @@ -605,7 +622,7 @@ link.exe -lib -nologo -out:$@ $(LASTFILE_OBJS) $(OUTDIR)\lastfile.obj: $(LASTFILE_SRC)\lastfile.c - $(CCV) $(LASTFILE_FLAGS) $** + $(CCV) $(LASTFILE_FLAGS) $(LASTFILE_SRC)\$(@B).c !endif @@ -621,7 +638,6 @@ -D_WINDOWS -DMENUBARS_LUCID -DSCROLLBARS_LUCID -DDIALOGS_ATHENA \ -Fo$@ -c LWLIB_OBJS= \ - $(OUTDIR)\lwlib-config.obj \ $(OUTDIR)\lwlib-utils.obj \ $(OUTDIR)\lwlib-Xaw.obj \ $(OUTDIR)\lwlib-Xlw.obj \ @@ -632,26 +648,23 @@ $(LWLIB): $(LWLIB_OBJS) link.exe -lib -nologo -out:$@ $(LWLIB_OBJS) -$(OUTDIR)\lwlib-config.obj: $(LWLIB_SRCDIR)\lwlib-config.c - $(CCV) $(LWLIB_FLAGS) $** - $(OUTDIR)\lwlib-utils.obj: $(LWLIB_SRCDIR)\lwlib-utils.c - $(CCV) $(LWLIB_FLAGS) $** + $(CCV) $(LWLIB_FLAGS) $(LWLIB_SRCDIR)\$(@B).c $(OUTDIR)\lwlib-Xaw.obj: $(LWLIB_SRCDIR)\lwlib-Xaw.c - $(CCV) $(LWLIB_FLAGS) $** + $(CCV) $(LWLIB_FLAGS) $(LWLIB_SRCDIR)\$(@B).c $(OUTDIR)\lwlib-Xlw.obj: $(LWLIB_SRCDIR)\lwlib-Xlw.c - $(CCV) $(LWLIB_FLAGS) $** + $(CCV) $(LWLIB_FLAGS) $(LWLIB_SRCDIR)\$(@B).c $(OUTDIR)\lwlib.obj: $(LWLIB_SRCDIR)\lwlib.c - $(CCV) $(LWLIB_FLAGS) $** + $(CCV) $(LWLIB_FLAGS) $(LWLIB_SRCDIR)\$(@B).c $(OUTDIR)\xlwmenu.obj: $(LWLIB_SRCDIR)\xlwmenu.c - $(CCV) $(LWLIB_FLAGS) $** + $(CCV) $(LWLIB_FLAGS) $(LWLIB_SRCDIR)\$(@B).c $(OUTDIR)\xlwscrollbar.obj: $(LWLIB_SRCDIR)\xlwscrollbar.c - $(CCV) $(LWLIB_FLAGS) $** + $(CCV) $(LWLIB_FLAGS) $(LWLIB_SRCDIR)\$(@B).c !endif #------------------------------------------------------------------------------ @@ -700,6 +713,7 @@ $(SRC)\getloadavg.c \ $(SRC)\glyphs.c \ $(SRC)\glyphs-eimage.c \ + $(SRC)\glyphs-shared.c \ $(SRC)\glyphs-widget.c \ $(SRC)\gui.c \ $(SRC)\gutter.c \ @@ -851,7 +865,8 @@ TEMACS_SRC=$(SRC) TEMACS_LIBS=$(LASTFILE) $(LWLIB) $(X_LIBS) $(MSW_LIBS) \ oldnames.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib \ - shell32.lib wsock32.lib winmm.lib winspool.lib ole32.lib uuid.lib $(LIBC_LIB) + shell32.lib wsock32.lib netapi32.lib winmm.lib winspool.lib ole32.lib \ + uuid.lib $(LIBC_LIB) TEMACS_LFLAGS=-nologo $(LIBRARIES) $(DEBUG_FLAGS) -base:0x1000000\ -stack:0x800000 $(TEMACS_ENTRYPOINT) -subsystem:windows\ -pdb:$(TEMACS_DIR)\temacs.pdb -map:$(TEMACS_DIR)\temacs.map \ @@ -861,6 +876,7 @@ -DEMACS_MAJOR_VERSION=$(emacs_major_version) \ -DEMACS_MINOR_VERSION=$(emacs_minor_version) \ $(EMACS_BETA_VERSION) \ + $(EMACS_PATCH_LEVEL) \ -DXEMACS_CODENAME=\"$(xemacs_codename:&=and)\" \ -DEMACS_CONFIGURATION=\"$(EMACS_CONFIGURATION)\" \ -DPATH_PACKAGEPATH=\"$(PATH_PACKAGEPATH)\" @@ -990,6 +1006,7 @@ $(OUTDIR)\getloadavg.obj \ $(OUTDIR)\glyphs.obj \ $(OUTDIR)\glyphs-eimage.obj \ + $(OUTDIR)\glyphs-shared.obj \ $(OUTDIR)\glyphs-widget.obj \ $(OUTDIR)\gui.obj \ $(OUTDIR)\gutter.obj \ @@ -1054,10 +1071,10 @@ $(OUTDIR)\emacs.obj: $(XEMACS)\version.sh $(OUTDIR)\TopLevelEmacsShell.obj: $(TEMACS_SRC)\EmacsShell-sub.c - $(CCV) $(TEMACS_CPP_FLAGS) -DDEFINE_TOP_LEVEL_EMACS_SHELL $** -Fo$@ + $(CCV) $(TEMACS_CPP_FLAGS) -DDEFINE_TOP_LEVEL_EMACS_SHELL $(TEMACS_SRC)\$(@B).c -Fo$@ $(OUTDIR)\TransientEmacsShell.obj: $(TEMACS_SRC)\EmacsShell-sub.c - $(CCV) $(TEMACS_CPP_FLAGS) -DDEFINE_TRANSIENT_EMACS_SHELL $** -Fo$@ + $(CCV) $(TEMACS_CPP_FLAGS) -DDEFINE_TRANSIENT_EMACS_SHELL $(TEMACS_SRC)\$(@B).c -Fo$@ $(OUTDIR)\alloc.obj: $(TEMACS_SRC)\alloc.c @@ -1071,12 +1088,12 @@ !if $(DEBUG_XEMACS) @dir /b/s $(OUTDIR)\*.sbr > bscmake.tmp bscmake -nologo -o$(TEMACS_BROWSE) @bscmake.tmp - $(DEL) bscmake.tmp + -$(DEL) bscmake.tmp !endif !if $(USE_PORTABLE_DUMPER) - @if exist $(SRC)\dump-id.c del $(SRC)\dump-id.c + @if exist $(SRC)\dump-id.c $(DEL) $(SRC)\dump-id.c # make a new dump id file. There is probably a better way to do this, but this works - @if exist $(OUTDIR)\dump-id.obj del $(OUTDIR)\dump-id.obj + @if exist $(OUTDIR)\dump-id.obj $(DEL) $(OUTDIR)\dump-id.obj nmake -nologo -f xemacs.mak OUTDIR=$(OUTDIR) $(OUTDIR)\dump-id.obj link.exe @<< $(TEMACS_LFLAGS) -out:$@ $(TEMACS_OBJS) $(TEMACS_LIBS) $(OUTDIR)\dump-id.obj @@ -1129,7 +1146,7 @@ @echo (setq tag-table-alist @echo '(("$(XEMACSDIRSTRING)\\" . "$(XEMACSDIRSTRING)\\"))) cd $(XEMACS) - $(DEL) TAGS + -$(DEL) TAGS set PATH=lib-src;%PATH% # we need to double ^, but only before backslash! Doubling it elsewhere # causes problems. I don't understand this -- CMD.EXE uses ^ as a quoting @@ -1345,11 +1362,11 @@ # Rebuild docfile target docfile :: - if exist $(DOC) del $(DOC) + if exist $(DOC) $(DEL) $(DOC) docfile :: $(DOC) $(DOC): $(LIB_SRC)\make-docfile.exe $(DOC_SRC1) $(DOC_SRC2) $(DOC_SRC3) $(DOC_SRC4) $(DOC_SRC5) $(DOC_SRC6) $(DOC_SRC7) $(DOC_SRC8) $(DOC_SRC9) $(DOC_SRC10) $(DOC_SRC11) - if exist $(DOC) del $(DOC) + if exist $(DOC) $(DEL) $(DOC) set EMACSBOOTSTRAPLOADPATH=$(LISP);$(PACKAGE_PATH) set EMACSBOOTSTRAPMODULEPATH=$(MODULES) $(TEMACS_BATCH) -l $(TEMACS_DIR)\..\lisp\make-docfile.el -- -o $(DOC) -i $(XEMACS)\site-packages @@ -1385,13 +1402,12 @@ $(TEMACS_BATCH) -l $(TEMACS_DIR)\..\lisp\loadup.el dump !if $(USE_PORTABLE_DUMPER) rc -d INCLUDE_DUMP -Fo $(OUTDIR)\xemacs.res $(NT)\xemacs.rc - link.exe @<< - $(TEMACS_LFLAGS) -out:xemacs.exe $(TEMACS_OBJS) $(OUTDIR)\xemacs.res $(TEMACS_LIBS) $(OUTDIR)\dump-id.obj -<< # Make the resource section read/write since almost all of it is the dump # data which needs to be writable. This avoids having to copy it. - editbin -nologo -section:.rsrc,rw xemacs.exe - $(DEL) $(TEMACS_DIR)\xemacs.dmp + link.exe @<< + $(TEMACS_LFLAGS) -section:.rsrc,rw -out:xemacs.exe $(TEMACS_OBJS) $(OUTDIR)\xemacs.res $(TEMACS_LIBS) $(OUTDIR)\dump-id.obj +<< + -$(DEL) $(TEMACS_DIR)\xemacs.dmp !endif cd $(NT) @if not exist $(TEMACS_DIR)\SATISFIED nmake -nologo -f xemacs.mak $@ @@ -1400,7 +1416,7 @@ # use this rule to build the complete system all: installation $(OUTDIR)\nul $(LASTFILE) $(LWLIB) \ $(LIB_SRC_TOOLS) $(TEMACS) update-elc $(DOC) $(PROGNAME) \ - update-elc-2 update-auto-and-custom info + update-elc-2 info temacs: $(LASTFILE) $(TEMACS) @@ -1409,61 +1425,97 @@ cd $(NT) @echo Installing in $(INSTALL_DIR) ... @echo PlaceHolder > PlaceHolder - @xcopy /q PROBLEMS "$(INSTALL_DIR)\" - @xcopy /q PlaceHolder "$(INSTALL_DIR)\lock\" - $(DEL) "$(INSTALL_DIR)\lock\PlaceHolder" - @xcopy /q $(LIB_SRC)\*.exe "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\" - @copy $(LIB_SRC)\DOC "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)" - @copy $(CONFIG_VALUES) "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)" - @copy $(SRC)\xemacs.exe "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)" - @xcopy /e /q $(XEMACS)\etc "$(INSTALL_DIR)\etc\" - @xcopy /e /q $(XEMACS)\info "$(INSTALL_DIR)\info\" - @xcopy /e /q $(XEMACS)\lisp "$(INSTALL_DIR)\lisp\" + @$(COPY) PROBLEMS "$(INSTALL_DIR)\" + @$(COPY) PlaceHolder "$(INSTALL_DIR)\lock\" + -$(DEL) "$(INSTALL_DIR)\lock\PlaceHolder" + @$(COPY) $(LIB_SRC)\*.exe "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\" + @$(COPY) $(LIB_SRC)\DOC "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)" + @$(COPY) $(CONFIG_VALUES) "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)" + @$(COPY) $(SRC)\xemacs.exe "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)" + @$(COPYDIR) $(XEMACS)\etc "$(INSTALL_DIR)\etc\" + @$(COPYDIR) $(XEMACS)\info "$(INSTALL_DIR)\info\" + @$(COPYDIR) $(XEMACS)\lisp "$(INSTALL_DIR)\lisp\" @echo Making skeleton package tree in $(PACKAGE_PREFIX) ... - @xcopy /q PlaceHolder "$(PACKAGE_PREFIX)\site-packages\" - $(DEL) "$(PACKAGE_PREFIX)\site-packages\PlaceHolder" - @xcopy /q PlaceHolder "$(PACKAGE_PREFIX)\mule-packages\" - $(DEL) "$(PACKAGE_PREFIX)\mule-packages\PlaceHolder" - @xcopy /q PlaceHolder "$(PACKAGE_PREFIX)\xemacs-packages\" - $(DEL) "$(PACKAGE_PREFIX)\xemacs-packages\PlaceHolder" - $(DEL) PlaceHolder + @$(COPY) PlaceHolder "$(PACKAGE_PREFIX)\site-packages\" + -$(DEL) "$(PACKAGE_PREFIX)\site-packages\PlaceHolder" + @$(COPY) PlaceHolder "$(PACKAGE_PREFIX)\mule-packages\" + -$(DEL) "$(PACKAGE_PREFIX)\mule-packages\PlaceHolder" + @$(COPY) PlaceHolder "$(PACKAGE_PREFIX)\xemacs-packages\" + -$(DEL) "$(PACKAGE_PREFIX)\xemacs-packages\PlaceHolder" + -$(DEL) PlaceHolder mostlyclean: - $(DEL) $(XEMACS)\Installation - $(DEL) $(OUTDIR)\*.lib $(OUTDIR)\*.obj $(OUTDIR)\*.pdb - $(DEL) $(OUTDIR)\*.res $(OUTDIR)\*.sbr - $(DEL) $(SRC)\*.exe $(SRC)\*.map $(SRC)\*.bsc $(SRC)\*.pdb - $(DEL) $(LIB_SRC)\*.exe $(LIB_SRC)\*.obj $(LIB_SRC)\*.pdb - $(DEL) $(LIB_SRC)\*.res + -$(DEL) $(XEMACS)\Installation + -$(DEL) $(OUTDIR)\*.lib + -$(DEL) $(OUTDIR)\*.obj + -$(DEL) $(OUTDIR)\*.pdb + -$(DEL) $(OUTDIR)\*.res + -$(DEL) $(OUTDIR)\*.sbr + -$(DEL) $(SRC)\*.exe + -$(DEL) $(SRC)\*.map + -$(DEL) $(SRC)\*.bsc + -$(DEL) $(SRC)\*.pdb + -$(DEL) $(LIB_SRC)\*.exe + -$(DEL) $(LIB_SRC)\*.obj + -$(DEL) $(LIB_SRC)\*.pdb + -$(DEL) $(LIB_SRC)\*.res clean: mostlyclean versionclean - $(DEL) $(XEMACS)\TAGS + -$(DEL) $(XEMACS)\TAGS nicenclean: clean - $(DEL) $(NT)\*.bak $(NT)\*.orig $(NT)\*.rej $(NT)\*.tmp - $(DEL) $(LIB_SRC)\*.bak $(LIB_SRC)\*.orig $(LIB_SRC)\*.rej - $(DEL) $(LIB_SRC)\*.tmp - $(DEL) $(SRC)\*.bak $(SRC)\*.orig $(SRC)\*.rej $(SRC)\*.tmp - $(DEL) /s $(LISP)\*.bak $(LISP)\*.orig $(LISP)\*.rej $(LISP)\*.tmp + -$(DEL) $(NT)\*.bak + -$(DEL) $(NT)\*.orig + -$(DEL) $(NT)\*.rej + -$(DEL) $(NT)\*.tmp + -$(DEL) $(LIB_SRC)\*.bak + -$(DEL) $(LIB_SRC)\*.orig + -$(DEL) $(LIB_SRC)\*.rej + -$(DEL) $(LIB_SRC)\*.tmp + -$(DEL) $(SRC)\*.bak + -$(DEL) $(SRC)\*.orig + -$(DEL) $(SRC)\*.rej + -$(DEL) $(SRC)\*.tmp + -$(DEL) $(LISP)\*.bak + -$(DEL) $(LISP)\*.orig + -$(DEL) $(LISP)\*.rej + -$(DEL) $(LISP)\*.tmp + +# Convenience target. +# Reproducing the configuration is just a matter of copying, and if +# we use the same directory for Cygwin builds these must go. We don't +# want to use distclean. +configclean: + -$(DEL) $(SRC)\config.h + -$(DEL) $(SRC)\paths.h + -$(DEL) $(SRC)\Emacs.ad.h ## This is used in making a distribution. ## Do not use it on development directories! -distclean: nicenclean - $(DEL) $(SRC)\config.h $(SRC)\paths.h $(SRC)\Emacs.ad.h - $(DEL) $(LIB_SRC)\$(CONFIG_VALUES) - $(DEL) $(INFODIR)\*.info* - $(DEL) /s /q $(LISP)\*.elc +distclean: nicenclean configclean + -$(DEL) $(LIB_SRC)\$(CONFIG_VALUES) + -$(DEL) $(INFODIR)\*.info* + -$(DEL) $(LISP)\*.elc + -$(DEL) $(LISP)\mule\*.elc + -$(DEL) $(LISP)\term\*.elc realclean: distclean versionclean: - $(DEL) $(SRC)\xemacs.exe $(LIB_SRC)\DOC + -$(DEL) $(SRC)\xemacs.exe + -$(DEL) $(LIB_SRC)\DOC #not sure about those wildcards. DOS wildcards are stupid compared to Unix, #and could end up deleting *everything* instead of just backup files or -#whatever. -#extraclean: realclean -# $(DEL) *~ *.*~ #* m\*~ m\#* s\*~ s\#* +#whatever. So just leave it at "realclean" +extraclean: realclean +# -$(DEL) *~ +# -$(DEL) *.*~ +# -$(DEL) #* +# -$(DEL) m\*~ +# -$(DEL) m\#* +# -$(DEL) s\*~ +# -$(DEL) s\#* depend: cd $(SRC) @@ -1473,7 +1525,9 @@ $(XEMACS)\Installation:: installation installation:: - @type > $(XEMACS)\Installation << + @echo OS version:>$(XEMACS)\Installation + @ver >> $(XEMACS)\Installation + @type >> $(XEMACS)\Installation << !if defined(OS) OS: $(OS) !endif @@ -1500,19 +1554,10 @@ !endif !if $(HAVE_GTK) -------------------------------------------------------------------- - WARNING: Compiling WITHOUT GTK support. - WARNING: As of xemacs-21.2-b44 - WARNING: gtk-xemacs is not supported on MSWindows (mingw or msvc). - WARNING: Yes, we know that gtk has been ported to native MSWindows - WARNING: but XEmacs is not yet ready to use that port. - -------------------------------------------------------------------- -!else - -------------------------------------------------------------------- - WARNING: Compiling without GTK support. - WARNING: As of xemacs-21.2-b44 - WARNING: gtk-xemacs is not supported on MSWindows (mingw or msvc). - WARNING: Yes, we know that gtk has been ported to native MSWindows - WARNING: but XEmacs is not yet ready to use that port. + WARNING: You specified HAVE_GTK=1, but we are compiling WITHOUT GTK support. + WARNING: gtk-xemacs is not currently supported on MSWindows (mingw or msvc). + WARNING: Yes, we know that gtk has been ported to native MSWindows, but + WARNING: XEmacs is not yet ready to use that port. -------------------------------------------------------------------- !endif !if $(HAVE_XPM) @@ -1600,20 +1645,6 @@ # Update out-of-date .elcs, other than needed for dumping. update-elc-2: $(XEMACS_BATCH) -l update-elc-2.el -f batch-update-elc-2 $(LISP) - -# Update auto-autoloads.el and custom-load.el, similar to what -# XEmacs.rules does for xemacs-packages. This used to delete -# auto-autoloads.el first, but that's a bad idea, because it forces -# rebuilding from scratch, which is time-consuming; and the autoload -# code is specifically written to do in-place updating. However, if -# your auto-autoload file is messed up and you want it rebuilt from -# scratch, delete it from the command line and then nmake with this -# target. -update-auto-and-custom: -# Combine into one invocation to avoid repeated startup penalty. - $(XEMACS_BATCH) -l autoload -f batch-update-one-directory $(LISP) -f batch-byte-compile-one-file $(LISP)\auto-autoloads.el -l cus-dep -f Custom-make-one-dependency $(LISP) -f batch-byte-compile-one-file $(LISP)\custom-load.el - $(DEL) $(LISP)\auto-autoloads.el~ - $(DEL) $(LISP)\custom-load.el~ # DO NOT DELETE THIS LINE -- make depend depends on it. diff --text -u 'xemacs-21.5.1/src/.cvsignore' 'xemacs-21.5.2/src/.cvsignore' Index: ././src/.cvsignore --- ././src/.cvsignore Mon Apr 30 23:10:42 2001 +++ ././src/.cvsignore Sat May 12 20:39:22 2001 @@ -18,3 +18,4 @@ temacs.bsc temacs.pdb temacs.map +xemacs.opt diff --text -u 'xemacs-21.5.1/src/ChangeLog' 'xemacs-21.5.2/src/ChangeLog' Index: ././src/ChangeLog --- ././src/ChangeLog Wed May 9 19:53:53 2001 +++ ././src/ChangeLog Sat Jul 28 16:48:22 2001 @@ -1,3 +1,2466 @@ +2001-07-28 Stephen J. Turnbull + + * XEmacs 21.5.2 "artichoke" is released. + +2001-07-27 Andy Piper + + * glyphs-x.c (x_progress_gauge_redisplay): + * glyphs.c (check_for_ignored_expose): + * glyphs.c (find_matching_subwindow): + * glyphs.h: + * gutter.c (output_gutter): + * gutter.c (redraw_exposed_gutter): warning elimination. + +2001-07-26 Adrian Aichner + + * event-Xt.c (handle_map_event): Fix word duplication typos. + * glyphs-eimage.c (gif_instantiate): Ditto. + * ntproc.c (vars_of_ntproc): Ditto. + * process-nt.c (vars_of_process_nt): Ditto. + * redisplay-output.c (compare_runes): Ditto. + * redisplay.c (create_string_text_block): Ditto. + +2001-07-11 Matt Tucker + + * syntax.c (find_start_of_comment): + Fix `unbalanced parentheses' bug when dealing with mixed comment + styles in c++/java/etc. mode + +2001-06-21 Ben Wing + + * dired-msw.c (Fmswindows_insert_directory): + Fix problem noted by Michael Sperber with directories containing + [] and code that destructively modifies an existing string. + +2001-06-18 Ben Wing + + * dumper.c (pdump_dump_root_objects): + * dumper.c (pdump_load_finish): + wrap_record_1 -> wrap_pointer_1. + +2001-06-18 Ben Wing + + * window.c: + * window.c (mark_window_as_deleted): + * window.c (WINDOW_SLOT): + We can't actually zero out everything in the window when deleting + it. set-window-configuration assumes that various slots of the + deleted window are still accurate. + +2001-06-17 Ben Wing + + --------------------------------------------------------------- + DOCUMENTATION FIXES: + --------------------------------------------------------------- + + * eval.c (Ffunction_min_args): + * eval.c (Ffunction_max_args): + Correct documentation. + + * elhash.c (Fremhash): Doc correction. + + --------------------------------------------------------------- + LISP OBJECT CLEANUP: + --------------------------------------------------------------- + + * bytecode.h (wrap_compiled_function): + * buffer.h (wrap_buffer): + * casetab.h (wrap_case_table): + * chartab.h (wrap_char_table_entry): + * chartab.h (wrap_char_table): + * console-msw.h (wrap_devmode): + * console-msw.h (wrap_mswindows_dialog_id): + * console.h (wrap_console): + * database.c (wrap_database): + * device.h (wrap_device): + * eldap.h (wrap_ldap): + * elhash.h (wrap_hash_table): + * events.h (wrap_timeout): + * events.h (wrap_event): + * extents.h (wrap_extent): + * extents.h (wrap_extent_auxiliary): + * extents.h (wrap_extent_info): + * faces.h (wrap_face): + * file-coding.h (wrap_coding_system): + * frame.h (wrap_frame): + * glyphs.h (wrap_image_instance): + * glyphs.h (wrap_glyph): + * gui-x.h (wrap_popup_data): + * gui.h (wrap_gui_item): + * keymap.h (wrap_keymap): + * lisp-disunion.h (wrap_pointer_1): + * lisp-union.h (wrap_pointer_1): + * lisp.h (wrap_cons): + * lisp.h (wrap_string): + * lisp.h (wrap_vector): + * lisp.h (wrap_bit_vector): + * lisp.h (wrap_symbol): + * lisp.h (wrap_subr): + * lisp.h (wrap_marker): + * lisp.h (wrap_float): + * lisp.h (wrap_weak_list): + * lisp.h (wrap_lcrecord_list): + * lrecord.h (wrap_record_1): + * lstream.h (wrap_lstream): + * mule-charset.h (wrap_charset): + * objects.h (wrap_color_instance): + * objects.h (wrap_font_instance): + * opaque.h (wrap_opaque): + * opaque.h (wrap_opaque_ptr): + * postgresql.h (wrap_pgconn): + * postgresql.h (wrap_pgresult): + * process.h (wrap_process): + * rangetab.h (wrap_range_table): + * specifier.h (wrap_specifier): + * toolbar.h (wrap_toolbar_button): + * tooltalk.h (wrap_tooltalk_message): + * tooltalk.h (wrap_tooltalk_pattern): + * ui-gtk.h (wrap_emacs_ffi): + * ui-gtk.h (wrap_emacs_gtk_object): + * ui-gtk.h (wrap_emacs_gtk_boxed): + * lstream.h (wrap_lstream): + * device.h (wrap_device): New. + * frame.h (wrap_frame): New. + * lisp-disunion.h (wrap_object): + * lisp-disunion.h (XSETOBJ): + * lrecord.h: + Add wrap_* to all objects (it was already there for a few of them) + -- an expression to encapsulate a pointer into a Lisp object, + rather than the inconvenient XSET*. "wrap" was chosen because + "make" as in make_int(), make_char() is not appropriate. (It + implies allocation. The issue does not exist for ints and chars + because they are not allocated.) + + Full error checking has been added to these expressions. When + used without error checking, non-union build, use of these + expressions will incur no loss of efficiency. (In fact, XSET* is + now defined in terms of wrap_* in a non-union build.) In a union + build, you will also get no loss of efficiency provided that you + have a decent optimizing compiler, and a compiler that either + understands inlines or automatically inlines those particular + functions. (And since people don't normally do their production + builds on union, it doesn't matter.) + + Update the sample Lisp object definition in lrecord.h accordingly. + + * dumper.c (pdump_dump_root_objects): + * dumper.c (pdump_load_finish): + Fix places in dumper that referenced wrap_object to reference + its new name, wrap_pointer_1. + + * buffer.c (mark_buffer): + * buffer.c (reset_buffer_local_variables): + * buffer.c (Fbuffer_local_variables): + * buffer.c (nuke_all_buffer_slots): + * buffer.c (complex_vars_of_buffer): + * bufslots.h: + * conslots.h: + * console.c: + * console.c (mark_console): + * console.c (nuke_all_console_slots): + * console.c (delete_console_internal): + * console.c (common_init_complex_vars_of_console): + * console.c (complex_vars_of_console): + * console.h (struct console): + * devslots.h: NEW FILE. + * device.c: + * device.c (MARKED_SLOT): + * device.c (mark_device): + * device.c (nuke_all_device_slots): + * device.c (allocate_device): + * device.c (Fset_device_selected_frame): + * device.c (delete_device_internal): + * device.c (vars_of_device): + * device.h (struct device): + * device.h (MARKED_SLOT): + * frame.c (nuke_all_frame_slots): + * frame.c (allocate_frame_core): + * frame.c (delete_frame_internal): + * frame.h (struct frame): + * frame.h (FRAME_LIVE_P): + * frameslots.h: + * window.c (mark_window): + * window.c (WINDOW_SLOT): + * window.c (allocate_window): + * window.c (mark_window_as_deleted): + * window.c (wrap_window_configuration): + * window.c (Fset_window_configuration): + * window.h: + * window.h (struct window): + * window.h (WINDOW_SLOT): + * winslots.h: + -- Extract out the Lisp objects of `struct device' into devslots.h, + just like for the other structures. + -- Extract out the remaining (not copied into the window config) + Lisp objects in `struct window' into winslots.h; use different + macros (WINDOW_SLOT vs. WINDOW_SAVED_SLOT) to differentiate them. + -- Eliminate the `dead' flag of `struct frame', since it + duplicates information already available in `framemeths', and fix + FRAME_LIVE_P accordingly. (Devices and consoles already work this + way.) + -- In *slots.h, switch to system where MARKED_SLOT is automatically + undef'd at the end of the file. (Follows what winslots.h already + does.) + -- Update the comments at the beginning of *slots.h to be accurate. + -- When making any of the above objects dead, zero it out entirely + and reset all Lisp object slots to Qnil. (We were already doing + this somewhat, but not consistently.) This (1) Eliminates the + possibility of extra objects hanging around that ought to be + GC'd, (2) Causes an immediate crash if anyone tries to access a + structure in one of these objects, (3) Ensures consistent behavior + wrt dead objects. + + * dialog-msw.c: + Use internal_object_printer, since this object should not escape. + + --------------------------------------------------------------- + FIXING A CRASH THAT I HIT ONCE (AND A RELATED BAD BEHAVIOR): + --------------------------------------------------------------- + + * eval.c (unwind_to_catch): + * eval.c (condition_bind_unwind): + * eval.c (condition_case_unwind): + * eval.c (condition_case_1): + Fix up some comments about the FSF implementation. + Fix two nasty bugs: + + (1) condition_case_unwind frees the conses sitting in the + catch->tag slot too quickly, resulting in a crash that I hit. + (2) catches need to be unwound one at a time when calling + unwind-protect code, rather than all at once at the end; otherwise, + incorrect behavior can result. (A comment shows exactly how.) + + * backtrace.h: + Improve comment about FSF differences in the handler stack. + + --------------------------------------------------------------- + FIXING A CRASH THAT I REPEATEDLY HIT WHEN USING THE MOUSE WHEEL + UNDER MSWINDOWS: + --------------------------------------------------------------- + + Basic idea: My crash is due either to a dead, non-marked, + GC-collected frame inside of a window mirror, or a prematurely + freed window mirror. We need to mark the Lisp objects inside of + window mirrors. Tracking the lifespan of window mirrors and + scrollbar instances is extremely hard, and there may well be + lurking bugs where such objects are freed too soon. The only safe + way to fix these problems (and it fixes both problems at once) is + to make both of these structures Lisp objects. + + * lrecord.h (lrecord_type): + * emacs.c (main_1): + * inline.c: + * scrollbar-gtk.c (gtk_create_scrollbar_instance): + * scrollbar-gtk.c (find_scrollbar_window_mirror): + * scrollbar-gtk.c (scrollbar_cb): + * scrollbar-gtk.c (gtk_scrollbar_pointer_changed_in_window): + * scrollbar-gtk.c (gtk_update_frame_scrollbars): + * scrollbar-msw.c: + * scrollbar-msw.c (mswindows_create_scrollbar_instance): + * scrollbar-msw.c (mswindows_free_scrollbar_instance): + * scrollbar-msw.c (mswindows_update_scrollbar_instance_values): + * scrollbar-msw.c (mswindows_handle_scrollbar_event): + * scrollbar-msw.c (syms_of_scrollbar_mswindows): + * scrollbar-msw.c (vars_of_scrollbar_mswindows): + * scrollbar-msw.c (complex_vars_of_scrollbar_mswindows): + * scrollbar-x.c (find_scrollbar_window_mirror): + * scrollbar-x.c (x_update_frame_scrollbars): + * scrollbar.c: + * scrollbar.c (mark_scrollbar_instance): + * scrollbar.c (free_scrollbar_instance): + * scrollbar.c (free_frame_scrollbars): + * scrollbar.c (create_scrollbar_instance): + * scrollbar.c (syms_of_scrollbar): + * scrollbar.h: + * scrollbar.h (struct scrollbar_instance): + * symsinit.h: + Make scrollbar instances actual Lisp objects. Mark the window + mirrors in them. inline.c needs to know about scrollbar.h now. + Record the new type in lrecord.h. Fix up scrollbar-*.c + appropriately. Create a hash table in scrollbar-msw.c so that the + scrollbar instances stored in scrollbar HWND's are properly + GC-protected. Create complex_vars_of_scrollbar_mswindows() to + create the hash table at startup, and call it from emacs.c. Don't + store the scrollbar instance as a property of the GTK scrollbar, + as it's not used and if we did this, we'd have to separately + GC-protect it in a hash table, like in MS Windows. + + * lrecord.h (lrecord_type): + * frame.h (struct frame): + * frame.c (delete_frame_internal): + * frameslots.h: + * redisplay.c: + * window.c: + * window.c (mark_window_mirror): + * window.c (new_window_mirror): + * window.c (update_frame_window_mirror): + * window.c (free_window_mirror): + * window.c (find_window_mirror): + * window.c (syms_of_window): + * window.c (real_window): + * window.h (struct window_mirror): + Move mark_window_mirror from redisplay.c to window.c. Make window + mirrors actual Lisp objects. Tell lrecord.h about them. Change + the window mirror member of struct frame from a pointer to a Lisp + object, and add XWINDOW_MIRROR in appropriate places. Mark the + scrollbar instances in the window mirror. + + * redisplay.c: + * redisplay.h: + * alloc.c (garbage_collect_1): + Delete mark_redisplay. Don't call mark_redisplay. We now mark + frame-specific structures in mark_frame. + + NOTE: I also deleted an extremely questionable call to + update_frame_window_mirrors(). It was extremely questionable + before, and now totally impossible, since it will create + Lisp objects during redisplay. + + * frame.c (mark_frame): + Mark the scrollbar instances, which are now Lisp objects. + Call mark_gutter() here, not in mark_redisplay(). + + * gutter.c: + Update comments about correct marking. + + --------------------------------------------------------------- + ISSUES BROUGHT UP BY MARTIN: + --------------------------------------------------------------- + + * buffer.h (DFC_C_STRING_ALLOCA_USE_CONVERTED_DATA): + Put back these macros the way Steve T and I think they ought to be. + I already explained in a previous changelog entry why I think these + macros should be the way I'd defined them. Once again: + + We fix these macros so they don't care about the type of their + lvalues. The non-C-string equivalents of these already function + in the same way, and it's correct because it should be OK to pass + in a CBufbyte *, a BufByte *, a Char_Binary *, an UChar_Binary *, + etc. The whole reason for these different types is to work around + errors caused by signed-vs-unsigned non-matching types. Any + possible error that might be caught in a DFC macro would also be + caught wherever the argument is used elsewhere. So creating + multiple macro versions would add no useful error-checking and + just further complicate an already complicated area. + + As for Martin's "ANSI aliasing" bug, XEmacs is not ANSI-aliasing + clean and probably never will be. Unless the board agrees to + change XEmacs in this way (and we really don't want to go down + that road), this is not a bug. + + * sound.h (sound_perror): + Undo Martin's type change. + + * signal.c (qxe_setitimer): + Fix problem identified by Martin with Linux and g++ due to + non-standard declaration of setitimer(). + + * systime.h: + Update the docs for "qxe_" to point out why making the + encapsulation explicit is always the right way to go. (setitimer() + itself serves as an example.) + +2001-06-11 Martin Buchholz + + * buffer.h (DFC_C_STRING_ALLOCA_USE_CONVERTED_DATA): + * buffer.h (DFC_C_STRING_MALLOC_USE_CONVERTED_DATA): + Revert to doing type-checking on `sink'. + + * sound.h (sound_perror): Bufbyte -> CBufbyte + * sound.h (sound_warn): Bufbyte -> CBufbyte + +2001-06-12 Martin Buchholz + + * config.h.in (alloca): All feature test macros must be defined + before the first system header file inclusion. So move alloca + twiddling after the feature test definitions, but before the first + "real" code. + +2001-06-11 Martin Buchholz + + * lisp.h (DECIMAL_PRINT_SIZE): Don't use floating point. + Sun cc (buggily?) cannot use floating point computations to define + a compile-time integral constant. + +2001-06-10 Ben Wing + + + ------ signal-code changes ------ + + * data.c (init_data_very_early): + * device-tty.c (init_device_tty): + * emacs.c (fatal_error_signal): + * emacs.c (memory_warning_signal): + * floatfns.c (init_floatfns_very_early): + * linuxplay.c (linux_play_data_or_file): + * nas.c (*): + * process-unix.c (unix_init_process): + * process-unix.c (unix_create_process): + * process-unix.c (unix_send_process): + * process-unix.c (unix_deactivate_process): + * signal.c (handle_signal_if_fatal): + * signal.c (init_signals_very_early): + * signal.c (init_interrupts_late): + * sunplay.c (play_sound_file): + * sunplay.c (play_sound_data): + * sysdep.c (save_signal_handlers): + * sysdep.c (restore_signal_handlers): + * sysdep.c (setup_pty): + * syssignal.h (EMACS_SIGNAL): + use EMACS_SIGNAL everywhere instead of playing preprocessing + games with signal(). + + * s\windowsnt.h: + * s\mingw32.h: + * syssignal.h: + Remove mswindows signal code from s+m headers and move to + syssignal.h as one of the five ways of signal handling, instead of + playing preprocessing games. + + * fileio.c: + * sysdep.c (qxe_reliable_signal): + Rename sys_do_signal to qxe_reliable_signal. + + * signal.c (set_timeout_signal): + * process-unix.c (close_safely): + * profile.c (Fstart_profiling): + * profile.c (Fstop_profiling): + * signal.c (init_async_timeouts): + * signal.c (start_async_timeouts): + Create set_timeout_signal(); use instead of just EMACS_SIGNAL to + establish a signal handler on a timeout signal; this does special + things under Cygwin. + + * nt.c (init_ntproc): + Eliminate term_ntproc(), which is blank; used as a SIGABRT handler, + which was wrong anyway. + + * nt.c: + * win32.c: + * win32.c (sigmask): + * win32.c (mswindows_sigset): + * win32.c (mswindows_sighold): + * win32.c (mswindows_sigrelse): + * win32.c (mswindows_raise): + * win32.c (setitimer_helper_proc): + * win32.c (syms_of_win32): + Move signal code from nt.c to win32.c, since Cygwin needs it + too when dealing with timeout signals. + + * s\cygwin32.h: + Define CYGWIN_BROKEN_SIGNALS. + + + ------ other changes ------ + + * s\mingw32.h: + Fix problems with NOT_C_CODE being in the wrong place and + excluding defines needed when building Makefile.in.in. + + * filelock.c: + * mule-canna.c: + * mule-canna.c (Fcanna_initialize): + * mule-canna.c (Fcanna_finalize): + * mule-ccl.c: + * mule-ccl.h: + * ralloc.c: + * unexalpha.c: + * unexapollo.c: + * unexcw.c: + * unexelfsgi.c: + * unexnt.c: + * unexsni.c: + * s\aix3-1.h: + * s\bsd4-1.h: + * s\bsd4-2.h: + * s\bsd4-3.h: + * s\cxux.h: + * s\cygwin32.h: + * s\dgux.h: + * s\dgux5-4r2.h: + * s\dgux5-4r3.h: + * s\dgux5-4r4.h: + * s\ewsux5r4.h: + * s\gnu.h: + * s\hpux.h: + * s\iris3-5.h: + * s\iris3-6.h: + * s\irix3-3.h: + * s\linux.h: + * s\mingw32.h: + * s\newsos5.h: + * s\nextstep.h: + * s\ptx.h: + * s\riscix1-1.h: + * s\riscix1-2.h: + * s\rtu.h: + * s\sco4.h: + * s\sco5.h: + * s\template.h: + * s\ultrix.h: + * s\umax.h: + * s\umips.h: + * s\unipl5-0.h: + * s\unipl5-2.h: + * s\usg5-0.h: + * s\usg5-2-2.h: + * s\usg5-2.h: + * s\usg5-3.h: + * s\usg5-4.h: + * s\windowsnt.h: + * s\xenix.h: + Rename 'GNU Emacs' to XEmacs in the copyright and comments. + + * nas.c (NAS_LITTLE_ENDIAN): + * nas.c (XTOOLKIT): + * nas.c (nas_play_sound_file): + * nas.c (nas_play_sound_data): + * nas.c (CatchIoErrorAndJump): + * nas.c (DataReadS): + * nas.c (DataReadL): + * nas.c (readChunk): + * nas.c (WaveOpenDataForReading): + Stylistic cleanup. + Avoid preprocessing games with names such as play_sound_file. + + +2001-06-08 Ben Wing + + ------ gc-in-window-procedure fixes ------ + + * alloc.c: + * alloc.c (struct post_gc_action): + * alloc.c (register_post_gc_action): + * alloc.c (run_post_gc_actions): + * alloc.c (garbage_collect_1): + Create "post-gc actions", to avoid those dreaded "GC during window + procedure" problems. + + * event-msw.c: + Abort, clean and simple, when GC in window procedure. We want + to flush these puppies out. + + * glyphs-msw.c: + * glyphs-msw.c (finalize_destroy_window): + * glyphs-msw.c (mswindows_finalize_image_instance): + Use a post-gc action when destroying subwindows. + + * lisp.h: + Declare register_post_gc_action(). + + * scrollbar-msw.c: + * scrollbar-msw.c (unshow_that_mofo): + Use a post-gc action when unshowing scrollbar windows, if in gc. + + * redisplay.c (mark_redisplay): + Add comment about the utter evilness of what's going down here. + + ------ cygwin setitimer fixes ------ + + * Makefile.in.in (sheap_objs): + * Makefile.in.in (profile_objs): + * Makefile.in.in (objs): + Compile profile.c only when HAVE_SETITIMER. + + * nt.c (mswindows_sigset): + * nt.c (mswindows_sighold): + * nt.c (mswindows_sigrelse): + * nt.c (mswindows_sigpause): + * nt.c (mswindows_raise): + * nt.c (close_file_data): + Style fixes. + + * nt.c: + Move setitimer() emulation to win32.c, because Cygwin needs it too. + + * profile.c: + * profile.c (Fstart_profiling): + * profile.c (Fstop_profiling): + Make sure we don't compile if no setitimer(). Use qxe_setitimer() + instead of just plain setitimer(). + + * signal.c: + * signal.c (set_one_shot_timer): + * signal.c (alarm): + Define qxe_setitimer() as an encapsulation around setitimer() -- + call setitimer() directly unless Cygwin or MS Win, in which case + we use our simulated version in win32.c. + + * systime.h: + * systime.h (struct itimerval): + * systime.h (ITIMER_REAL): + Prototype mswindows_setitimer() and qxe_setitimer(). Long + comment about "qxe" and the policy regarding encapsulation. + + * win32.c: + * win32.c (setitimer_helper_proc): + * win32.c (setitimer_helper_period): + * win32.c (setitimer_helper): + * win32.c (mswindows_setitimer): + Move setitimer() emulation here, so Cygwin can use it. + Rename a couple of functions and variables to be longer and more + descriptive. In setitimer_helper_proc(), send the signal + using either mswindows_raise() or (on Cygwin) kill(). If for + some reason we are still getting lockups, we'll change the kill() + to directly invoke the signal handlers. + + ------ windows shell fixes ------ + + * callproc.c: + * ntproc.c: + Comments about how these two files must die. + + * callproc.c (init_callproc): + On MS Windows, init shell-file-name from SHELL, then COMSPEC, + not just COMSPEC. (more correct and closer to FSF.) Don't + force a value for SHELL into the environment. (Comments added + to explain why not.) + + * nt.c (init_user_info): + Don't shove a fabricated SHELL into the environment. See above. + + ------ misc fixes ------ + + * glyphs-shared.c (read_bitmap_data): static. + * glyphs-shared.c (read_bitmap_data_from_file): + Style correction. + + + +2001-06-06 Ben Wing + + * emodules.c (emodules_load): + * tooltalk.c (check_status): + * process-unix.c (unix_canonicalize_host_name): + * process-unix.c (unix_open_network_stream): + Fix warnings pointed out by Martin. + + * lisp.h: + Correct usage of CBufbyte. + + * esd.c (esd_play_sound_file): + * esd.c (esd_play_sound_data): + indentation changes. + + * bytecode.c (invalid_byte_code): + * eval.c (print_subr): + * eval.c (build_error_data): + * eval.c (signal_error): + * eval.c (maybe_signal_error): + * eval.c (signal_continuable_error): + * eval.c (maybe_signal_continuable_error): + * eval.c (signal_error_2): + * eval.c (maybe_signal_error_2): + * eval.c (signal_continuable_error_2): + * eval.c (maybe_signal_continuable_error_2): + * eval.c (signal_ferror): + * eval.c (maybe_signal_ferror): + * eval.c (signal_continuable_ferror): + * eval.c (maybe_signal_continuable_ferror): + * eval.c (signal_ferror_with_frob): + * eval.c (maybe_signal_ferror_with_frob): + * eval.c (signal_continuable_ferror_with_frob): + * eval.c (maybe_signal_continuable_ferror_with_frob): + * eval.c (syntax_error): + * eval.c (syntax_error_2): + * eval.c (maybe_syntax_error): + * eval.c (sferror): + * eval.c (sferror_2): + * eval.c (maybe_sferror): + * eval.c (invalid_argument): + * eval.c (invalid_argument_2): + * eval.c (maybe_invalid_argument): + * eval.c (invalid_constant): + * eval.c (invalid_constant_2): + * eval.c (maybe_invalid_constant): + * eval.c (invalid_operation): + * eval.c (invalid_operation_2): + * eval.c (maybe_invalid_operation): + * eval.c (invalid_change): + * eval.c (invalid_change_2): + * eval.c (maybe_invalid_change): + * eval.c (invalid_state): + * eval.c (invalid_state_2): + * eval.c (maybe_invalid_state): + * eval.c (wtaerror): + * eval.c (stack_overflow): + * eval.c (out_of_memory): + * eval.c (printing_unreadable_object): + * eval.c (caught_a_squirmer): + * eval.c (eval_in_buffer_trapping_errors): + * eval.c (run_hook_trapping_errors): + * eval.c (safe_run_hook_trapping_errors): + * eval.c (call0_trapping_errors): + * eval.c (call1_trapping_errors): + * eval.c (call2_trapping_errors): + * eval.c (warn_when_safe): + * fileio.c (report_file_type_error): + * fileio.c (report_error_with_errno): + * fileio.c (report_file_error): + Use CBufbyte instead of char for error/warning functions. + + * linuxplay.c: + * linuxplay.c (DONT_ENCAPSULATE): + * miscplay.c: + * miscplay.c (DONT_ENCAPSULATE): + * sgiplay.c: + * sgiplay.c (DONT_ENCAPSULATE): + * sunplay.c: + * sunplay.c (DONT_ENCAPSULATE): + Define DONT_ENCAPSULATE. (All encapsulation is removed in my + pending Mule workspace.) + + * sgiplay.c (play_sound_data): + * sgiplay.c (play_internal): + Put back #include accidentally removed. + Make play_sound_data return an int, like all other + such functions in *play.c. + + * sound.c: + Fix up documentation of `play-sound'. + + * sysfile.h: + Don't include sys/fcntl.h, as per Martin's advice. + + +2001-06-04 William M. Perry + + * gpmevent.c (KG_CTRL): Just define these unconditionally. The + linux headers are so lame that they do not expose these to + userland programs and you cannot gracefully include the kernel + headers. + +2001-06-03 William M. Perry + + * scrollbar-gtk.c (gtk_create_scrollbar_instance): Make calling of + gtk_size_request unconditional. + +2001-06-02 William M. Perry + + * emacs-marshals.c: Regenerated. + +2001-06-01 William M. Perry + + * glyphs-shared.c (read_bitmap_data): Common definition of + read_bitmap_data_from_file added. This does not attempt to use + the Xmu based code at all - lets us be consistent across + platforms. + + * glyphs-gtk.c: Removed definition of read_bitmap_data_from_file - + this is now in glyphs-shared.c + + * glyphs-msw.c: Ditto. + + * glyphs-x.c: Ditto. + +2001-06-01 Ben Wing + + * Makefile.in.in (ldflags): + eliminate that pesky "defaulting to 00401000" warning. + * nt.h: + eliminate warnings. + +2001-06-01 Ben Wing + + * nt.c (mswindows_utime): + * nt.c (close_file_data): + fix off-by-one-indirection error. + +2001-06-01 Ben Wing + + * event-msw.c (debug_mswin_messages): + conditionalize the messages that were causing compile errors. + (if only macros could generate #ifdef statements ...) + +2001-06-01 Martin Buchholz + + * lisp.h (DECIMAL_PRINT_SIZE): New. + * data.c (Fnumber_to_string): Use DECIMAL_PRINT_SIZE + * print.c (print_internal): Likewise. + * redisplay.c (window_line_number): Likewise. + * redisplay.c (decode_mode_spec): Likewise. + * tooltalk.c (tt_message_arg_ival_string): Likewise. + Fix a bunch of 128-bit bugs; make code more readable && efficient. + +2001-05-30 Ben Wing + + * s\cygwin32.h: + Don't unilaterally include ntplay, but only when we're compiling + with native sound (look in configure now). + +2001-05-30 Ben Wing + + For 21.4: + + (Stephen, just take all event-msw.c patches. This includes + the "iconify" fix below.) + + * event-msw.c: + * event-msw.c (mswindows_dequeue_dispatch_event): + * event-msw.c (assert): + * event-msw.c (emacs_mswindows_quit_p): + * event-msw.c (debug_mswin_messages): + * event-msw.c (debug_output_mswin_message): + * event-msw.c (vars_of_event_mswindows): + Fix yet more problems with C-g handling. + Implement debug-mswindows-events. + + For 21.5: + + * event-stream.c: + * event-stream.c (add_low_level_timeout): + * event-stream.c (event_stream_generate_wakeup): + * event-stream.c (event_stream_resignal_wakeup): + * event-stream.c (event_stream_disable_wakeup): + * event-stream.c (event_stream_wakeup_pending_p): + * events.h: + * signal.c: + * signal.c (handle_async_timeout_signal): + * signal.c (signal_remove_async_interval_timeout): + * signal.c (alarm): + * signal.c (Fwaiting_for_user_input_p): + * signal.c (start_interrupts): + * signal.c (establish_slow_interrupt_timer): + * signal.c (slow_down_interrupts): + * signal.c (check_what_happened): + * signal.c (alarm_signal): + * signal.c (interrupt_signal): + * sysdep.h: + Rearrange the signal-handling code to eliminate the former + spaghetti logic paths in it. Document clearly what + "low-level" and "high-level" timeouts are. Rename some + functions with unclear names (e.g. "...alarm...") to names + that reflect what they actually do (e.g. "...async_timeout..."). + Fix numerous bugs discovered in the process. + + * console-x.h: + * event-Xt.c: + * event-Xt.c (update_frame_iconify_status): + * event-Xt.c (handle_map_event): + * event-Xt.c (emacs_Xt_handle_magic_event): + * event-Xt.c (emacs_Xt_event_pending_p): + * event-msw.c: + * frame-x.c: + * frame-x.c (x_frame_window_state): + * frame-x.c (x_frame_iconified_p): + * frame-x.c (x_frame_visible_p): + Hopefully make XEmacs properly maintain the "iconified" + state on frames at all times. This should fix the "can't + delete a frame with C-x 5 0 when there's another iconified + frame out there" bug. + + Put a notice in of further changes that should probably + be made to clean up the frame-visibility support. + (especially directed at Jan Vroonhof) + + * lisp.h: + * miscplay.c (sndcnv8S_2mono): + * miscplay.c (sndcnv2monounsigned): + * miscplay.c (int2ulaw): + * miscplay.c (sndcnv2byteLE): + * miscplay.c (sndcnv2byteBE): + * miscplay.c (sndcnv2monobyteLE): + * miscplay.c (sndcnv2monobyteBE): + Rename SBufbyte to CBufbyte to avoid a misleading name. + Eliminate UChar, which is not used anywhere and contributes + no semantic info. Add a comment about the documentation-only + properties of the char/unsigned char typedefs. Add + SChar_Binary as an explicitly `signed' version of Char_Binary + and put back the `signed' declarations in miscplay.c. + + * alloc.c (build_string): + * alloc.c (build_ext_string): + * alloc.c (build_translated_string): + Use char typedefs. + + * console-msw.c (mswindows_lisp_error): + * device-msw.c (sync_printer_with_devmode): + * device-msw.c (handle_devmode_changes): + * device-msw.c (Fmsprinter_select_settings): + * device-msw.c (Fmswindows_printer_list): + * dialog-msw.c: + * dialog-msw.c (ALIGN_TEMPLATE): + * dialog-msw.c (handle_question_dialog_box): + * editfns.c (user_login_name): + * fileio.c (Ffile_readable_p): + * glyphs-eimage.c (tiff_memory_seek): + * menubar-msw.c (mswindows_translate_menu_or_dialog_item): + * menubar-msw.c (populate_menu_add_item): + * ntplay.c: + * ntplay.c (DONT_ENCAPSULATE): + * ntplay.c (play_sound_file): + * ntplay.c (play_sound_data_1): + * objects-msw.c (initialize_font_instance): + * objects-msw.c (mswindows_list_fonts): + * realpath.c (cygwin_readlink): + * redisplay-msw.c (mswindows_text_width_single_run): + * select-msw.c (symbol_to_ms_cf): + * select-msw.c (mswindows_register_selection_data_type): + * syswindows.h (LOCAL_TO_WIN32_FILE_FORMAT): + * syswindows.h (WIN32_TO_LOCAL_FILE_FORMAT): + * win32.c (Fmswindows_shell_execute): + Eliminate numerous C++ errors. + + * frame-msw.c (mswindows_set_title_from_bufbyte): + Eliminate numerous C++ errors and Mule-ize. + + * glyphs-msw.c (convert_EImage_to_DIBitmap): + * glyphs-msw.c (mswindows_init_image_instance_from_eimage): + * glyphs-msw.c (set_mono_pixel): + * glyphs-msw.c (mswindows_initialize_image_instance_mask): + * glyphs-msw.c (xpm_to_eimage): + * glyphs-msw.c (mswindows_xpm_instantiate): + * glyphs-msw.c (read_bitmap_data): + * glyphs-msw.c (read_bitmap_data_from_file): + * glyphs-msw.c (xbm_create_bitmap_from_data): + * glyphs-msw.c (init_image_instance_from_xbm_inline): + * glyphs-msw.c (xbm_instantiate_1): + * glyphs-msw.c (mswindows_xbm_instantiate): + * glyphs-msw.c (mswindows_xface_instantiate): + Eliminate numerous C++ errors and use char typedefs. + +2001-05-29 Adrian Aichner + + * fileio.c: Include nt.h. Remove lisp_string_set_file_times() + because set_file_times() now takes Lisp_Object path, instead of + char*. + * nt.c: Include buffer.h. + * nt.c (convert_from_time_t): New. + * nt.c (mswindows_utime): New. Use utime, since SetFileTime does + not set mtime correctly. + * nt.h: Declare mswindows_utime(). + * sysdep.c (set_file_times): set_file_times() now takes Lisp_Object + path, instead of char*. + * systime.h: Include on WIN32_NATIVE. + +2001-05-30 William M. Perry + + * emacs-marshals.c: Regenerated from lisp. + + * emacs-widget-accessors.c: Regenerated from lisp. + + * event-gtk.c (gtk_event_to_emacs_event): Buttons are now + modifiers, so selection with the mouse works again. + +2001-05-24 Kirill 'Big K' Katsnelson + + * redisplay.c (redisplay_device): Allow preemption on redisplay. + + * event-msw.c (WM_DROPFILES): Use correct type for OLE characters. + +2001-05-29 Mike Alexander + + * console-msw.h (FRAME_MSPRINTER_CHARHEIGHT): Unswap + FRAME_MSPRINTER_CHARWIDTH and FRAME_MSPRINTER_CHARHEIGHT + +2001-05-26 Ben Wing + + * buffer.c: + * buffer.c (syms_of_buffer): + * data.c: + * data.c (init_errors_once_early): + move text-conversion-error into data.c, along with other errors. + +2001-05-26 Martin Buchholz + + * print.c (print_internal): Fix compile error. + +2001-05-25 Ben Wing + + * device-msw.c (msprinter_default_printer): + * eldap.c (Fldap_open): + * emodules.c (emodules_load): + * hpplay.c (player_error_internal): + * process-unix.c (unix_canonicalize_host_name): + * process-unix.c (unix_open_network_stream): + * sound.h (sound_perror): + * sound.h (sound_warn): + * tooltalk.c (check_status): + * win32.c (tstr_to_local_file_format): + Revert Martin's attempted compile-warnings fix. It does fix + the warnings, but not the right way. We are trying to eliminate + the raw use of `char' and `unsigned char' absolutely everywhere. + There is never an occasion to reintroduce these. + + * buffer.h (DFC_C_STRING_ALLOCA_USE_CONVERTED_DATA): + * buffer.h (DFC_C_STRING_MALLOC_USE_CONVERTED_DATA): + Instead, we fix these macros so they don't care about the type of + their lvalues. We already do this for the non-C-string + equivalents of these, and it's correct because it should be OK to + pass in an SBufbyte *, for example. In any case, we do not need + any type-correctness checking here -- errors will be caught for + sure as soon as we remove the -Wno-sign-compare switch. + + * mule-charset.c (Fmake_charset): + Use invalid_argument, not generic signal_error (Qerror, ). + + * alloc.c: + * chartab.c (check_valid_char_table_value): + * chartab.c (chartab_type_validate): + * chartab.c (chartab_data_validate): + * console-gtk.c (gtk_device_to_console_connection): + * console-gtk.c (gtk_semi_canonicalize_console_connection): + * console-gtk.c (gtk_canonicalize_console_connection): + * console-gtk.c (gtk_semi_canonicalize_device_connection): + * console-gtk.c (gtk_canonicalize_device_connection): + * console-msw.c (mswindows_canonicalize_console_connection): + * console-msw.c (mswindows_canonicalize_device_connection): + * console-msw.c (msprinter_canonicalize_console_connection): + * console-msw.c (msprinter_canonicalize_device_connection): + * console-stream.c (stream_semi_canonicalize_console_connection): + * console-stream.c (stream_canonicalize_console_connection): + * console-stream.c (stream_semi_canonicalize_device_connection): + * console-stream.c (stream_canonicalize_device_connection): + * console-stream.h: + * console-tty.c (tty_semi_canonicalize_console_connection): + * console-tty.c (tty_canonicalize_console_connection): + * console-tty.c (tty_semi_canonicalize_device_connection): + * console-tty.c (tty_canonicalize_device_connection): + * console-tty.h: + * console-x.c (x_device_to_console_connection): + * console-x.c (x_semi_canonicalize_console_connection): + * console-x.c (x_canonicalize_console_connection): + * console-x.c (x_semi_canonicalize_device_connection): + * console-x.c (x_canonicalize_device_connection): + * console.c (decode_console_type): + * console.c (semi_canonicalize_console_connection): + * console.c (canonicalize_console_connection): + * console.h: + * console.h (struct console_methods): + * device-x.c (Fx_get_resource): + * device.c (semi_canonicalize_device_connection): + * device.c (canonicalize_device_connection): + * elhash.c (hash_table_size_validate): + * elhash.c (hash_table_weakness_validate): + * elhash.c (hash_table_test_validate): + * elhash.c (hash_table_rehash_size_validate): + * elhash.c (hash_table_rehash_threshold_validate): + * elhash.c (hash_table_data_validate): + * eval.c: + * eval.c (call_with_suspended_errors): + * eval.c (maybe_signal_error_1): + * eval.c (maybe_signal_continuable_error_1): + * eval.c (maybe_signal_error): + * eval.c (maybe_signal_continuable_error): + * eval.c (maybe_signal_error_2): + * eval.c (maybe_signal_continuable_error_2): + * eval.c (maybe_signal_ferror): + * eval.c (maybe_signal_continuable_ferror): + * eval.c (maybe_signal_ferror_with_frob): + * eval.c (maybe_signal_continuable_ferror_with_frob): + * eval.c (maybe_syntax_error): + * eval.c (maybe_sferror): + * eval.c (maybe_invalid_argument): + * eval.c (maybe_invalid_constant): + * eval.c (maybe_invalid_operation): + * eval.c (maybe_invalid_change): + * eval.c (maybe_invalid_state): + * faces.c (face_name_validate): + * faces.c (face_validate): + * faces.c (face_property_matching_instance): + * faces.h: + * fns.c (bad_bad_bunny): + * fns.c (bad_bad_turtle): + * fns.c (advance_plist_pointers): + * fns.c (external_plist_get): + * fns.c (external_plist_put): + * fns.c (external_remprop): + * glyphs.c (decode_device_ii_format): + * glyphs.c (decode_image_instantiator_format): + * glyphs.c (decode_image_instance_type): + * glyphs.c (decode_error_behavior_flag): + * glyphs.c (encode_error_behavior_flag): + * glyphs.c (Fmake_image_instance): + * glyphs.c (decode_glyph_type): + * glyphs.c (glyph_image_instance): + * glyphs.h: + * gui.c (gui_item_add_keyval_pair): + * gui.c (make_gui_item_from_keywords_internal): + * gui.h: + * lisp.h: + * lisp.h (error_behavior): + * lisp.h (_error_behavior_struct_): + * lisp.h (struct structure_keyword_entry): + * lisp.h (struct structure_type): + * lread.c (define_structure_type): + * lread.c (define_structure_type_keyword): + * nt.c (tty_semi_canonicalize_console_connection): + * nt.c (tty_canonicalize_console_connection): + * nt.c (tty_semi_canonicalize_device_connection): + * nt.c (tty_canonicalize_device_connection): + * objects-gtk.c (gtk_parse_nearest_color): + * objects-gtk.c (gtk_initialize_color_instance): + * objects-gtk.c (gtk_initialize_font_instance): + * objects-gtk.c (gtk_font_instance_truename): + * objects-gtk.h: + * objects-msw.c (mswindows_initialize_color_instance): + * objects-msw.c (initialize_font_instance): + * objects-msw.c (mswindows_initialize_font_instance): + * objects-msw.c (msprinter_initialize_font_instance): + * objects-msw.c (mswindows_font_instance_truename): + * objects-tty.c (tty_initialize_color_instance): + * objects-tty.c (tty_initialize_font_instance): + * objects-x.c (x_parse_nearest_color): + * objects-x.c (x_initialize_color_instance): + * objects-x.c (x_initialize_font_instance): + * objects-x.c (x_font_instance_truename): + * objects.c: + * objects.c (Fmake_font_instance): + * objects.c (font_instance_truename_internal): + * process-unix.c (get_internet_address): + * rangetab.c (rangetab_data_validate): + * search.c (compile_pattern_1): + * search.c (compile_pattern): + * search.c (fast_string_match): + * specifier.c (decode_specifier_type): + * specifier.c (check_valid_instantiator): + * specifier.c (check_valid_inst_list): + * specifier.c (check_valid_spec_list): + * specifier.c (check_valid_specifier_matchspec): + * specifier.c (specifier_instance_from_inst_list): + * specifier.c (specifier_instance): + * specifier.c (specifier_instance_no_quit): + * toolbar.c (check_toolbar_button_keywords): + * toolbar.c (Fcheck_toolbar_button_syntax): + * window.c (window_scroll): + * window.h: + + Rename Error_behavior to Error_Behavior, to be consistent with + general naming practices (Lisp_Object, Char_Binary, etc.). + +2001-05-24 Hrvoje Niksic + + * doprnt.c (emacs_doprnt_1): long_to_string doesn't return a + value. + + * print.c (long_to_string): New, faster implementation. Revert + change from 2000-11-22. + +2001-05-25 Martin Buchholz + + * process-unix.c (unix_canonicalize_host_name): Fix compile warnings. + (unix_open_network_stream): Likewise. + * sound.h (sound_perror): Likewise. + (sound_warn): Likewise. + * emodules.c (emodules_load): Likewise. + * fns.c (base64_conversion_error): Likewise. + * tooltalk.c (check_status): Likewise. + * eldap.c (Fldap_open): Likewise. + * hpplay.c (player_error_internal): Likewise. + * win32.c (tstr_to_local_file_format): Likewise. + + * realpath.c: This file doesn't deal with internal + representation. Define DONT_ENCAPSULATE. + Fixes crash in test suite. + + * print.c (print_internal): Fix compile error. + + * miscplay.c (waverequire): Don't inline. + Gcc can't inline functions that call alloca. + +2001-05-24 Yoshiki Hayashi + + * gui.c (gui_error_2): New function. + * lisp.h (gui_error_2): Declare it. + +2001-05-24 Norbert Koch + + * doprnt.c (emacs_doprnt_1): forgotten sons of Ben's error patch + +2001-05-06 Karl M. Hegbloom + + * config.h.in: HAVE_MKSTEMP + +2001-05-24 Yoshiki Hayashi + + * mule-ccl.c (Qccl_error): New error + * mule-ccl.c (syms_of_mule_ccl): Initialize Qccl_error. + * mule-charset.c (Fmake_charset): Call signal_error. + +2001-05-24 Yoshiki Hayashi + + * buffer.c (Qtext_conversion_error): Moved from file-coding.c + so that --with-file-coding=no will compile corectly. + * buffer.c (syms_of_buffer): Define Qtext_conversion_error. + Also moved from file-coding.c + * file-coding.c (Qtext_conversion_error): Moved to buffer.c + * file-coding.c (syms_of_file_coding): Moved Qtext_conversion_error + initialization to buffer.c + * emodules.c (Qdll_error): New error. + * emodules.c (syms_of_module): Declare Qdll_error. + + * esd.c (esd_play_sound_data): sound_warn accepts only one arg. + * miscplay.c (sndcnv8S_2mono): + * miscplay.c (sndcnv2monounsigned): + * miscplay.c (int2ulaw): + * miscplay.c (sndcnv2byteLE): + * miscplay.c (sndcnv2byteBE): + * miscplay.c (sndcnv2monobyteLE): + * miscplay.c (sndcnv2monobyteBE): Replace signed Char_Binary with + Char_Binary. There's no type called signed char in C. + Also remove audio: from error message. sound_warn and sound_perror + prepends them. + +2001-05-19 Ben Wing + + * glyphs-shared.c: New. Try just a bit to start eliminating + the massive code duplication in *-gtk.c. + +2001-05-16 Ben Wing + + * abbrev.c (syms_of_abbrev): + * alloc.c (memory_full): + * alloc.c (Fmake_byte_code): + * alloc.c (garbage_collect_1): + * buffer.c: + * buffer.c (print_buffer): + * buffer.c (nsberror): + * buffer.c (Fget_buffer_create): + * buffer.c (Fset_buffer): + * buffer.c (Fbury_buffer): + * buffer.c (syms_of_buffer): + * bytecode.c: + * bytecode.c (execute_optimized_program): + * bytecode.c (invalid_byte_code): + * bytecode.c (check_opcode): + * bytecode.c (check_constants_index): + * bytecode.c (READ_INSTRUCTION_CHAR): + * bytecode.c (optimize_byte_code): + * bytecode.c (Ffetch_bytecode): + * bytecode.c (syms_of_bytecode): + * callint.c (check_mark): + * callint.c (Fcall_interactively): + * callint.c (syms_of_callint): + * callproc.c: + * callproc.c (Fold_call_process_internal): + * callproc.c (child_setup): + * casetab.c (print_case_table): + * casetab.c (Fget_case_table): + * casetab.c (Fput_case_table): + * casetab.c (syms_of_casetab): + * chartab.c (symbol_to_char_table_type): + * chartab.c (decode_char_table_range): + * chartab.c (check_valid_char_table_value): + * chartab.c (chartab_data_validate): + * chartab.c (check_category_char): + * chartab.c (syms_of_chartab): + * cmdloop.c (command_loop_3): + * cmdloop.c (syms_of_cmdloop): + * cmds.c (Fdelete_char): + * cmds.c (Fself_insert_command): + * cmds.c (syms_of_cmds): + * console-msw.c: + * console-msw.c (mswindows_canonicalize_console_connection): + * console-msw.c (Fmswindows_message_box): + * console-msw.c (mswindows_output_last_error): + * console-msw.c (msprinter_canonicalize_console_connection): + * console-msw.c (syms_of_console_mswindows): + * console-msw.h: + * console-stream.c (stream_init_console): + * console-stream.c (stream_init_frame_1): + * console-tty.c (tty_init_console): + * console-tty.c (syms_of_console_tty): + * console-x.c (get_display_arg_connection): + * console.c (print_console): + * console.c (decode_console_type): + * console.c (Fselect_console): + * console.c (Fget_console): + * console.c (delete_console_internal): + * console.c (syms_of_console): + * data.c: + * data.c (dead_wrong_type_argument): + * data.c (c_write_error): + * data.c (lisp_write_error): + * data.c (args_out_of_range): + * data.c (args_out_of_range_3): + * data.c (print_weak_list): + * data.c (decode_weak_list_type): + * data.c (arith_error): + * data.c (init_errors_once_early): + * data.c (syms_of_data): + * database.c (CHECK_LIVE_DATABASE): + * database.c (print_database): + * database.c (finalize_database): + * database.c (Fopen_database): + * database.c (syms_of_database): + * debug.c (Fadd_debug_class_to_check): + * debug.c (Fdelete_debug_class_to_check): + * debug.c (Fset_debug_classes_to_check): + * debug.c (Fset_debug_class_types_to_check): + * debug.c (Fdebug_types_being_checked): + * debug.c (syms_of_debug): + * device-gtk.c (gtk_init_device): + * device-gtk.c (Fgtk_display_visual_class): + * device-gtk.c (Fgtk_keysym_on_keyboard_p): + * device-gtk.c (syms_of_device_gtk): + * device-msw.c (handle_devmode_changes): + * device-msw.c (mswindows_handle_print_dialog_box): + * device-msw.c (mswindows_handle_page_setup_dialog_box): + * device-msw.c (Fmsprinter_select_settings): + * device-msw.c (Fmsprinter_apply_settings): + * device-msw.c (print_devmode): + * device-tty.c (tty_init_device): + * device-tty.c (syms_of_device_tty): + * device-x.c (sanity_check_geometry_resource): + * device-x.c (x_init_device): + * device-x.c (x_get_resource_prefix): + * device-x.c (Fx_get_resource): + * device-x.c (Fx_put_resource): + * device-x.c (Fx_display_visual_class): + * device-x.c (Fx_keysym_hash_table): + * device-x.c (Fx_keysym_on_keyboard_p): + * device-x.c (Fx_get_font_path): + * device-x.c (syms_of_device_x): + * device.c (print_device): + * device.c (Fselect_device): + * device.c (Fset_device_selected_frame): + * device.c (Fget_device): + * device.c (Fmake_device): + * device.c (Fset_device_class): + * device.c (Fdevice_system_metric): + * device.c (Fdomain_device_type): + * device.c (syms_of_device): + * dialog-gtk.c (syms_of_dialog_gtk): + * dialog-msw.c (handle_file_dialog_box): + * dialog-msw.c (handle_question_dialog_box): + * dialog-msw.c (mswindows_make_dialog_box_internal): + * dialog-msw.c (syms_of_dialog_mswindows): + * dialog-x.c (dbox_descriptor_to_widget_value): + * dialog-x.c (x_make_dialog_box_internal): + * dialog.c (Fmake_dialog_box_internal): + * dired-msw.c (mswindows_get_files): + * dired-msw.c (syms_of_dired_mswindows): + * dired.c (Fdirectory_files): + * dired.c (file_name_completion): + * dired.c (syms_of_dired): + * doc.c (get_doc_string): + * doc.c (read_doc_string): + * doc.c (Fsnarf_documentation): + * doprnt.c (parse_off_posnum): + * doprnt.c (NEXT_ASCII_BYTE): + * doprnt.c (parse_doprnt_spec): + * doprnt.c (get_doprnt_args): + * doprnt.c (emacs_doprnt_1): + * dragdrop.c (syms_of_dragdrop): + * editfns.c (Fchar_to_string): + * editfns.c (region_limit): + * editfns.c (Fformat_time_string): + * editfns.c (Fdecode_time): + * editfns.c (Fencode_time): + * editfns.c (Ftranspose_regions): + * editfns.c (syms_of_editfns): + * eldap.c (signal_ldap_error): + * eldap.c (print_ldap): + * eldap.c (finalize_ldap): + * eldap.c (Fldap_open): + * eldap.c (Fldap_search_basic): + * eldap.c (Fldap_add): + * eldap.c (Fldap_modify): + * eldap.c (syms_of_eldap): + * eldap.h (CHECK_LIVE_LDAP): + * elhash.c (hash_table_size_validate): + * elhash.c (hash_table_weakness_validate): + * elhash.c (decode_hash_table_weakness): + * elhash.c (hash_table_test_validate): + * elhash.c (decode_hash_table_test): + * elhash.c (hash_table_rehash_size_validate): + * elhash.c (hash_table_rehash_threshold_validate): + * elhash.c (hash_table_data_validate): + * elhash.c (Fmake_hash_table): + * elhash.c (syms_of_elhash): + * emacs-widget-accessors.c (Fgtk_adjustment_lower): + * emacs-widget-accessors.c (Fgtk_adjustment_upper): + * emacs-widget-accessors.c (Fgtk_adjustment_value): + * emacs-widget-accessors.c (Fgtk_adjustment_step_increment): + * emacs-widget-accessors.c (Fgtk_adjustment_page_increment): + * emacs-widget-accessors.c (Fgtk_adjustment_page_size): + * emacs-widget-accessors.c (Fgtk_widget_style): + * emacs-widget-accessors.c (Fgtk_widget_window): + * emacs-widget-accessors.c (Fgtk_widget_state): + * emacs-widget-accessors.c (Fgtk_widget_name): + * emacs-widget-accessors.c (Fgtk_widget_parent): + * emacs-widget-accessors.c (Fgtk_button_child): + * emacs-widget-accessors.c (Fgtk_button_in_button): + * emacs-widget-accessors.c (Fgtk_button_button_down): + * emacs-widget-accessors.c (Fgtk_combo_entry): + * emacs-widget-accessors.c (Fgtk_combo_button): + * emacs-widget-accessors.c (Fgtk_combo_popup): + * emacs-widget-accessors.c (Fgtk_combo_popwin): + * emacs-widget-accessors.c (Fgtk_combo_list): + * emacs-widget-accessors.c (Fgtk_gamma_curve_table): + * emacs-widget-accessors.c (Fgtk_gamma_curve_curve): + * emacs-widget-accessors.c (Fgtk_gamma_curve_gamma): + * emacs-widget-accessors.c (Fgtk_gamma_curve_gamma_dialog): + * emacs-widget-accessors.c (Fgtk_gamma_curve_gamma_text): + * emacs-widget-accessors.c (Fgtk_check_menu_item_active): + * emacs-widget-accessors.c (Fgtk_notebook_tab_pos): + * emacs-widget-accessors.c (Fgtk_text_hadj): + * emacs-widget-accessors.c (Fgtk_text_vadj): + * emacs-widget-accessors.c (Fgtk_file_selection_dir_list): + * emacs-widget-accessors.c (Fgtk_file_selection_file_list): + * emacs-widget-accessors.c (Fgtk_file_selection_selection_entry): + * emacs-widget-accessors.c (Fgtk_file_selection_selection_text): + * emacs-widget-accessors.c (Fgtk_file_selection_main_vbox): + * emacs-widget-accessors.c (Fgtk_file_selection_ok_button): + * emacs-widget-accessors.c (Fgtk_file_selection_cancel_button): + * emacs-widget-accessors.c (Fgtk_file_selection_help_button): + * emacs-widget-accessors.c (Fgtk_file_selection_action_area): + * emacs-widget-accessors.c (Fgtk_font_selection_dialog_fontsel): + * emacs-widget-accessors.c (Fgtk_font_selection_dialog_main_vbox): + * emacs-widget-accessors.c (Fgtk_font_selection_dialog_action_area): + * emacs-widget-accessors.c (Fgtk_font_selection_dialog_ok_button): + * emacs-widget-accessors.c (Fgtk_font_selection_dialog_apply_button): + * emacs-widget-accessors.c (Fgtk_font_selection_dialog_cancel_button): + * emacs-widget-accessors.c (Fgtk_color_selection_dialog_colorsel): + * emacs-widget-accessors.c (Fgtk_color_selection_dialog_main_vbox): + * emacs-widget-accessors.c (Fgtk_color_selection_dialog_ok_button): + * emacs-widget-accessors.c (Fgtk_color_selection_dialog_reset_button): + * emacs-widget-accessors.c (Fgtk_color_selection_dialog_cancel_button): + * emacs-widget-accessors.c (Fgtk_color_selection_dialog_help_button): + * emacs-widget-accessors.c (Fgtk_dialog_vbox): + * emacs-widget-accessors.c (Fgtk_dialog_action_area): + * emacs-widget-accessors.c (Fgtk_input_dialog_close_button): + * emacs-widget-accessors.c (Fgtk_input_dialog_save_button): + * emacs-widget-accessors.c (Fgtk_plug_socket_window): + * emacs-widget-accessors.c (Fgtk_plug_same_app): + * emacs-widget-accessors.c (Fgtk_object_flags): + * emacs-widget-accessors.c (Fgtk_object_ref_count): + * emacs-widget-accessors.c (Fgtk_paned_child1): + * emacs-widget-accessors.c (Fgtk_paned_child2): + * emacs-widget-accessors.c (Fgtk_paned_child1_resize): + * emacs-widget-accessors.c (Fgtk_paned_child2_resize): + * emacs-widget-accessors.c (Fgtk_paned_child1_shrink): + * emacs-widget-accessors.c (Fgtk_paned_child2_shrink): + * emacs-widget-accessors.c (Fgtk_clist_rows): + * emacs-widget-accessors.c (Fgtk_clist_columns): + * emacs-widget-accessors.c (Fgtk_clist_hadjustment): + * emacs-widget-accessors.c (Fgtk_clist_vadjustment): + * emacs-widget-accessors.c (Fgtk_clist_sort_type): + * emacs-widget-accessors.c (Fgtk_clist_focus_row): + * emacs-widget-accessors.c (Fgtk_clist_sort_column): + * emacs-widget-accessors.c (Fgtk_list_children): + * emacs-widget-accessors.c (Fgtk_list_selection): + * emacs-widget-accessors.c (Fgtk_tree_children): + * emacs-widget-accessors.c (Fgtk_tree_root_tree): + * emacs-widget-accessors.c (Fgtk_tree_tree_owner): + * emacs-widget-accessors.c (Fgtk_tree_selection): + * emacs-widget-accessors.c (Fgtk_tree_item_subtree): + * emacs-widget-accessors.c (Fgtk_scrolled_window_hscrollbar): + * emacs-widget-accessors.c (Fgtk_scrolled_window_vscrollbar): + * emacs-widget-accessors.c (Fgtk_scrolled_window_hscrollbar_visible): + * emacs-widget-accessors.c (Fgtk_scrolled_window_vscrollbar_visible): + * emacs.c (main_1): + * emacs.c (Fsplit_path): + * emacs.c (syms_of_emacs): + * emodules.c (emodules_load): + * esd.c: + * esd.c (esd_play_sound_file): + * esd.c (esd_play_sound_data): + * eval.c: + * eval.c (print_subr): + * eval.c (FletX): + * eval.c (Flet): + * eval.c (Fdefvar): + * eval.c (Fdefconst): + * eval.c (condition_case_3): + * eval.c (return_from_signal): + * eval.c (signal_error_1): + * eval.c (maybe_signal_error_1): + * eval.c (maybe_signal_continuable_error_1): + * eval.c (signal_error): + * eval.c (maybe_signal_error): + * eval.c (signal_continuable_error): + * eval.c (maybe_signal_continuable_error): + * eval.c (signal_error_2): + * eval.c (maybe_signal_error_2): + * eval.c (signal_continuable_error_2): + * eval.c (maybe_signal_continuable_error_2): + * eval.c (signal_ferror): + * eval.c (maybe_signal_ferror): + * eval.c (signal_continuable_ferror): + * eval.c (maybe_signal_continuable_ferror): + * eval.c (signal_ferror_with_frob): + * eval.c (maybe_signal_ferror_with_frob): + * eval.c (signal_continuable_ferror_with_frob): + * eval.c (maybe_signal_continuable_ferror_with_frob): + * eval.c (signal_quit): + * eval.c (signal_invalid_function_error): + * eval.c (signal_wrong_number_of_arguments_error): + * eval.c (signal_malformed_list_error): + * eval.c (signal_malformed_property_list_error): + * eval.c (signal_circular_list_error): + * eval.c (signal_circular_property_list_error): + * eval.c (syntax_error): + * eval.c (syntax_error_2): + * eval.c (maybe_syntax_error): + * eval.c (sferror): + * eval.c (sferror_2): + * eval.c (maybe_sferror): + * eval.c (invalid_argument): + * eval.c (invalid_argument_2): + * eval.c (maybe_invalid_argument): + * eval.c (invalid_constant): + * eval.c (invalid_constant_2): + * eval.c (maybe_invalid_constant): + * eval.c (invalid_operation): + * eval.c (invalid_operation_2): + * eval.c (maybe_invalid_operation): + * eval.c (invalid_change): + * eval.c (invalid_change_2): + * eval.c (maybe_invalid_change): + * eval.c (invalid_state): + * eval.c (invalid_state_2): + * eval.c (maybe_invalid_state): + * eval.c (stack_overflow): + * eval.c (out_of_memory): + * eval.c (printing_unreadable_object): + * eval.c (do_autoload): + * eval.c (Feval): + * eval.c (Ffuncall): + * eval.c (grow_specpdl): + * eval.c (syms_of_eval): + * event-Xt.c (syms_of_event_Xt): + * event-gtk.c (syms_of_event_gtk): + * event-msw.c (mswindows_need_event_in_modal_loop): + * event-msw.c (emacs_mswindows_select_process): + * event-stream.c: + * event-stream.c (check_event_stream_ok): + * event-stream.c (lisp_number_to_milliseconds): + * event-stream.c (Fnext_event): + * event-stream.c (munge_keymap_translate): + * event-stream.c (Fset_recent_keys_ring_size): + * event-stream.c (execute_command_event): + * event-stream.c (syms_of_event_stream): + * events.c (print_event): + * events.c (Fmake_event): + * events.c (WRONG_EVENT_TYPE_FOR_PROPERTY): + * events.c (Fdeallocate_event): + * events.c (Fcopy_event): + * events.c (character_to_event): + * events.c (syms_of_events): + * extents.c (print_extent): + * extents.c (Fset_extent_parent): + * extents.c (decode_map_extents_flags): + * extents.c (decode_extent_at_flag): + * extents.c (symbol_to_glyph_layout): + * extents.c (Fset_extent_property): + * extents.c (syms_of_extents): + * faces.c (face_validate): + * faces.c (Fget_face): + * faces.c (syms_of_faces): + * file-coding.c: + * file-coding.c (print_coding_system): + * file-coding.c (symbol_to_eol_type): + * file-coding.c (Fget_coding_system): + * file-coding.c (parse_charset_conversion_specs): + * file-coding.c (Fmake_coding_system): + * file-coding.c (Fcoding_system_aliasee): + * file-coding.c (Fdefine_coding_system_alias): + * file-coding.c (Fcoding_system_property): + * file-coding.c (decode_coding_category): + * file-coding.c (Fset_coding_priority_list): + * file-coding.c (syms_of_file_coding): + * fileio.c: + * fileio.c (report_file_type_error): + * fileio.c (report_error_with_errno): + * fileio.c (report_file_error): + * fileio.c (Fmake_temp_name): + * fileio.c (Ffile_truename): + * fileio.c (Fmake_directory_internal): + * fileio.c (Fdelete_directory): + * fileio.c (Fdelete_file): + * fileio.c (Fset_file_modes): + * fileio.c (syms_of_fileio): + * filelock.c (syms_of_filelock): + * floatfns.c (float_error): + * fns.c: + * fns.c (check_losing_bytecode): + * fns.c (safe_copy_tree): + * fns.c (Fget): + * fns.c (Fput): + * fns.c (Fremprop): + * fns.c (Fobject_plist): + * fns.c (internal_equal): + * fns.c (internal_old_equal): + * fns.c (Fload_average): + * fns.c (Frequire): + * fns.c (base64_conversion_error): + * fns.c (base64_decode_1): + * fns.c (syms_of_fns): + * font-lock.c (syms_of_font_lock): + * frame-gtk.c (gtk_create_widgets): + * frame-gtk.c (gtk_init_frame_1): + * frame-gtk.c (gtk_cant_notify_wm_error): + * frame-gtk.c (syms_of_frame_gtk): + * frame-x.c (x_create_widgets): + * frame-x.c (x_init_frame_1): + * frame-x.c (x_cant_notify_wm_error): + * frame-x.c (syms_of_frame_x): + * frame.c (print_frame): + * frame.c (setup_frame_without_minibuffer): + * frame.c (Fmake_frame): + * frame.c (selected_frame): + * frame.c (device_selected_frame): + * frame.c (Fset_frame_selected_window): + * frame.c (delete_frame_internal): + * frame.c (Fmake_frame_invisible): + * frame.c (store_minibuf_frame_prop): + * frame.c (syms_of_frame): + * general-slots.h: + * glade.c (Fglade_xml_textdomain): + * glyphs-gtk.c: + * glyphs-gtk.c (check_pointer_sizes): + * glyphs-gtk.c (init_image_instance_from_gdk_image): + * glyphs-gtk.c (image_instance_add_gdk_image): + * glyphs-gtk.c (init_image_instance_from_xbm_inline): + * glyphs-gtk.c (write_lisp_string_to_temp_file): + * glyphs-gtk.c (gtk_xpm_instantiate): + * glyphs-gtk.c (gtk_xface_instantiate): + * glyphs-gtk.c (gtk_resource_validate): + * glyphs-gtk.c (gtk_resource_normalize): + * glyphs-gtk.c (gtk_resource_instantiate): + * glyphs-gtk.c (check_valid_resource_symbol): + * glyphs-gtk.c (check_valid_resource_id): + * glyphs-gtk.c (font_instantiate): + * glyphs-gtk.c (cursor_font_instantiate): + * glyphs-gtk.c (gtk_subwindow_instantiate): + * glyphs-gtk.c (syms_of_glyphs_gtk): + * glyphs-msw.c: + * glyphs-msw.c (console_type_create_glyphs_mswindows): + * glyphs-msw.c (init_image_instance_from_dibitmap): + * glyphs-msw.c (image_instance_add_dibitmap): + * glyphs-msw.c (mswindows_init_image_instance_from_eimage): + * glyphs-msw.c (xpm_to_eimage): + * glyphs-msw.c (mswindows_xpm_instantiate): + * glyphs-msw.c (mswindows_resource_validate): + * glyphs-msw.c (mswindows_resource_normalize): + * glyphs-msw.c (resource_name_to_resource): + * glyphs-msw.c (mswindows_resource_instantiate): + * glyphs-msw.c (check_valid_resource_symbol): + * glyphs-msw.c (check_valid_resource_id): + * glyphs-msw.c (mswindows_xface_instantiate): + * glyphs-msw.c (mswindows_subwindow_instantiate): + * glyphs-msw.c (mswindows_widget_instantiate): + * glyphs-msw.c (add_tree_item): + * glyphs-msw.c (add_tab_item): + * glyphs-msw.c (mswindows_combo_box_instantiate): + * glyphs-msw.c (syms_of_glyphs_mswindows): + * glyphs-widget.c (check_valid_orientation): + * glyphs-widget.c (check_valid_tab_orientation): + * glyphs-widget.c (check_valid_justification): + * glyphs-widget.c (widget_validate): + * glyphs-widget.c (combo_box_validate): + * glyphs-x.c (write_lisp_string_to_temp_file): + * glyphs-x.c (check_pointer_sizes): + * glyphs-x.c (init_image_instance_from_x_image): + * glyphs-x.c (image_instance_add_x_image): + * glyphs-x.c (init_image_instance_from_xbm_inline): + * glyphs-x.c (x_xpm_instantiate): + * glyphs-x.c (x_xface_instantiate): + * glyphs-x.c (font_instantiate): + * glyphs-x.c (cursor_font_instantiate): + * glyphs-x.c (x_redisplay_widget): + * glyphs-x.c (x_subwindow_instantiate): + * glyphs-x.c (x_widget_instantiate): + * glyphs.c: + * glyphs.c (decode_device_ii_format): + * glyphs.c (process_image_string_instantiator): + * glyphs.c (if): + * glyphs.c (file_or_data_must_be_present): + * glyphs.c (data_must_be_present): + * glyphs.c (face_must_be_present): + * glyphs.c (get_image_instantiator_governing_domain): + * glyphs.c (instantiate_image_instantiator): + * glyphs.c (print_image_instance): + * glyphs.c (decode_image_instance_type): + * glyphs.c (incompatible_image_types): + * glyphs.c (make_image_instance_1): + * glyphs.c (signal_image_error): + * glyphs.c (signal_image_error_2): + * glyphs.c (signal_double_image_error_2): + * glyphs.c (simple_image_type_normalize): + * glyphs.c (check_valid_xbm_inline): + * glyphs.c (bitmap_to_lisp_data): + * glyphs.c (xbm_normalize): + * glyphs.c (xface_normalize): + * glyphs.c (pixmap_to_lisp_data): + * glyphs.c (check_valid_xpm_color_symbols): + * glyphs.c (evaluate_xpm_color_symbols): + * glyphs.c (xpm_normalize): + * glyphs.c (image_instantiate): + * glyphs.c (image_validate): + * glyphs.c (print_glyph): + * glyphs.c (decode_glyph_type): + * glyphs.c (subwindow_instantiate): + * glyphs.c (syms_of_glyphs): + * glyphs.h: + * gpmevent.c (Fgpm_enable): + * gui-gtk.c (syms_of_gui_gtk): + * gui-x.c (button_item_to_widget_value): + * gui-x.c (gui_items_to_widget_values_1): + * gui-x.c (gui_items_to_widget_values): + * gui.c: + * gui.c (gui_item_add_keyval_pair): + * gui.c (make_gui_item_from_keywords_internal): + * gui.c (widget_gui_parse_item_keywords): + * gui.c (update_gui_item_keywords): + * gui.c (signal_too_long_error): + * gui.c (print_gui_item): + * gui.c (parse_gui_item_tree_item): + * gui.c (syms_of_gui): + * gutter.c (decode_gutter_position): + * gutter.c (gutter_validate): + * gutter.c (gutter_size_validate): + * gutter.c (gutter_visible_validate): + * gutter.c (syms_of_gutter): + * hpplay.c: + * hpplay.c (player_error_internal): + * hpplay.c (myHandler): + * hpplay.c (play_bucket_internal): + * hpplay.c (play_sound_file): + * hpplay.c (play_sound_data): + * hpplay.c (vars_of_hpplay): + * indent.c (Findent_to): + * indent.c (syms_of_indent): + * input-method-xlib.c (Fx_open_xim): + * input-method-xlib.c (Fx_close_xim): + * input-method-xlib.c (syms_of_input_method_xlib): + * insdel.c (get_buffer_range_char): + * insdel.c (get_string_range_char): + * insdel.c (make_gap): + * insdel.c (buffer_insert_string_1): + * intl.c (syms_of_intl): + * keymap.c (print_keymap): + * keymap.c (traverse_keymaps): + * keymap.c (check_keymap_definition_loop): + * keymap.c (define_key_check_and_coerce_keysym): + * keymap.c (define_key_parser): + * keymap.c (key_desc_list_to_event): + * keymap.c (ensure_meta_prefix_char_keymapp): + * keymap.c (Fdefine_key): + * keymap.c (Fsingle_key_description): + * keymap.c (Ftext_char_description): + * libsst.c: + * libsst.c (dial;): + * libsst.h: + * libsst.h (sst_dtmf): + * linuxplay.c: + * linuxplay.c (audio_init): + * linuxplay.c (linux_play_data_or_file): + * linuxplay.c (play_sound_file): + * linuxplay.c (play_sound_data): + * lisp.h: + * lread.c (read_syntax_error): + * lread.c (continuable_read_syntax_error): + * lread.c (readchar): + * lread.c (pas_de_lache_ici): + * lread.c (load_force_doc_string_unwind): + * lread.c (Fload_internal): + * lread.c (decode_mode_1): + * lread.c (readevalloop): + * lread.c (Feval_buffer): + * lread.c (read_escape): + * lread.c (FSF_LOSSAGE): + * lread.c (read_atom_0): + * lread.c (reader_nextchar): + * lread.c (read_list_conser): + * lread.c (syms_of_lread): + * lread.c (vars_of_lread): + * lstream.c (Lstream_internal_error): + * macros.c (Fstart_kbd_macro): + * macros.c (Fend_kbd_macro): + * macros.c (pop_kbd_macro_event): + * macros.c (Fcall_last_kbd_macro): + * macros.c (Fexecute_kbd_macro): + * macros.c (syms_of_macros): + * marker.c (print_marker): + * marker.c (set_marker_internal): + * marker.c (bi_marker_position): + * marker.c (marker_position): + * marker.c (set_bi_marker_position): + * marker.c (set_marker_position): + * md5.c (md5_coding_system): + * menubar-gtk.c (menu_convert): + * menubar-gtk.c (menu_descriptor_to_widget_1): + * menubar-msw.c (mswindows_translate_menu_or_dialog_item): + * menubar-msw.c (populate_menu_add_item): + * menubar-msw.c (populate_or_checksum_helper): + * menubar-msw.c (unsafe_handle_wm_initmenupopup_1): + * menubar-msw.c (mswindows_popup_menu): + * menubar-x.c (menu_item_descriptor_to_widget_value_1): + * menubar-x.c (x_popup_menu): + * menubar-x.c (Faccelerate_menu): + * menubar.c (syms_of_menubar): + * menubar.c (vars_of_menubar): + * minibuf.c (Ftry_completion): + * minibuf.c (syms_of_minibuf): + * miscplay.c: + * miscplay.c (parse_wave_complete): + * miscplay.c (waverequire): + * miscplay.c (parsewave): + * miscplay.c (parsesundecaudio): + * miscplay.c (sndcnv8U_2mono): + * miscplay.c (sndcnv8S_2mono): + * miscplay.c (sndcnv2monounsigned): + * miscplay.c (sndcnv2unsigned): + * miscplay.c (int2ulaw): + * miscplay.c (sndcnvULaw_2linear): + * miscplay.c (sndcnvULaw_2mono): + * miscplay.c (sndcnv16_2monoLE): + * miscplay.c (sndcnv16_2monoBE): + * miscplay.c (sndcnv2byteLE): + * miscplay.c (sndcnv2byteBE): + * miscplay.c (sndcnv2monobyteLE): + * miscplay.c (sndcnv2monobyteBE): + * miscplay.c (analyze_format): + * miscplay.h: + * miscplay.h (HEADERSZ): + * miscplay.h (parse_wave_complete): + * mule-ccl.c (Fccl_execute): + * mule-ccl.c (vars_of_mule_ccl): + * mule-charset.c (print_charset): + * mule-charset.c (get_unallocated_leading_byte): + * mule-charset.c (Fget_charset): + * mule-charset.c (Fmake_charset): + * mule-charset.c (Fcharset_from_attributes): + * mule-charset.c (Fcharset_property): + * mule-charset.c (Fset_charset_ccl_program): + * mule-charset.c (Fmake_char): + * mule-charset.c (Fchar_octet): + * mule-charset.c (lookup_composite_char): + * mule-charset.c (syms_of_mule_charset): + * mule-wnnfns.c (Fwnn_set_param): + * mule-wnnfns.c (syms_of_mule_wnn): + * mule.c (Fdefine_word_pattern): + * nas.c: + * nas.c (XTOOLKIT): + * nas.c (play_sound_file): + * nas.c (close_down_play): + * nas.c (do_caching_play): + * nas.c (play_sound_data): + * nas.c (CatchIoErrorAndJump): + * nas.c (NameFromData): + * nas.c (SndOpenDataForReading): + * nas.c (cmpID): + * nas.c (dread): + * nas.c (dgetc): + * nas.c (readChunk): + * nas.c (WaveOpenDataForReading): + * nas.c (SoundOpenDataForReading): + * ntplay.c: + * ntplay.c (play_sound_file): + * ntplay.c (play_sound_data_1): + * ntplay.c (play_sound_data): + * ntproc.c: + * ntproc.c (prepare_standard_handles): + * ntproc.c (vars_of_ntproc): + * objects-gtk.c (gtk_parse_nearest_color): + * objects-gtk.c (gtk_initialize_font_instance): + * objects-msw.c (mswindows_initialize_color_instance): + * objects-msw.c (initialize_font_instance): + * objects-x.c (x_parse_nearest_color): + * objects-x.c (x_initialize_font_instance): + * objects-x.c (x_font_instance_truename): + * objects.c (finalose): + * objects.c (print_color_instance): + * objects.c (print_font_instance): + * objects.c (font_instance_truename_internal): + * objects.c (color_instantiate): + * objects.c (color_validate): + * objects.c (font_validate): + * objects.c (face_boolean_instantiate): + * objects.c (face_boolean_validate): + * objects.c (syms_of_objects): + * postgresql.c (CHECK_LIVE_CONNECTION): + * postgresql.c (print_pgconn): + * postgresql.c (finalize_pgconn): + * postgresql.c (print_pgresult): + * postgresql.c (finalize_pgresult): + * postgresql.c (Fpq_connectdb): + * postgresql.c (Fpq_connect_start): + * postgresql.c (Fpq_connect_poll): + * postgresql.c (Fpq_set_client_encoding): + * postgresql.c (Fpq_reset_start): + * postgresql.c (Fpq_reset_poll): + * postgresql.c (Fpq_pgconn): + * postgresql.c (Fpq_exec): + * postgresql.c (Fpq_send_query): + * postgresql.c (Fpq_get_result): + * postgresql.c (Fpq_result_status): + * postgresql.c (Fpq_make_empty_pgresult): + * postgresql.c (syms_of_postgresql): + * print.c: + * print.c (print_error_message): + * print.c (print_cons): + * print.c (default_object_printer): + * print.c (Fexternal_debugging_output): + * print.c (Fopen_termscript): + * print.c (syms_of_print): + * process-nt.c: + * process-nt.c (validate_signal_number): + * process-nt.c (mswindows_report_process_error): + * process-nt.c (mswindows_report_winsock_error): + * process-nt.c (nt_create_process): + * process-nt.c (get_internet_address): + * process-nt.c (nt_canonicalize_host_name): + * process-nt.c (nt_open_network_stream): + * process-unix.c (get_internet_address): + * process-unix.c (unix_create_process): + * process-unix.c (unix_send_process): + * process-unix.c (unix_kill_child_process): + * process-unix.c (unix_canonicalize_host_name): + * process-unix.c (unix_open_network_stream): + * process-unix.c (unix_open_multicast_group): + * process.c: + * process.c (print_process): + * process.c (get_process): + * process.c (report_process_error): + * process.c (init_process_io_handles): + * process.c (Fstart_process_internal): + * process.c (send_process): + * process.c (decode_signal): + * process.c (process_send_signal): + * process.c (Fkill_process): + * process.c (Fquit_process): + * process.c (Fstop_process): + * process.c (Fcontinue_process): + * process.c (Fprocess_send_eof): + * process.c (syms_of_process): + * ralloc.c (syms_of_ralloc): + * rangetab.c (Fput_range_table): + * rangetab.c (rangetab_data_validate): + * rangetab.c (syms_of_rangetab): + * redisplay.c (syms_of_redisplay): + * scrollbar.c (syms_of_scrollbar): + * search.c (matcher_overflow): + * search.c (compile_pattern_1): + * search.c (skip_chars): + * search.c (search_command): + * search.c (Freplace_match): + * search.c (Fmatch_data): + * search.c (syms_of_search): + * select-gtk.c (gtk_get_foreign_selection): + * select-gtk.c (gtk_get_window_property_as_lisp_data): + * select-gtk.c (lisp_data_to_selection_data): + * select-x.c (motif_clipboard_cb): + * select-x.c (x_reply_selection_request): + * select-x.c (copy_multiple_data): + * select-x.c (x_get_foreign_selection): + * select-x.c (x_get_window_property_as_lisp_data): + * select-x.c (lisp_data_to_selection_data): + * select-x.c (CHECK_CUTBUFFER): + * select-x.c (Fx_get_cutbuffer_internal): + * select-x.c (syms_of_select_x): + * select.c (Fown_selection_internal): + * select.c (syms_of_select): + * sgiplay.c: + * sgiplay.c (play_sound_file): + * sgiplay.c (play_sound_data): + * sgiplay.c (audio_initialize): + * sgiplay.c (play_internal): + * sgiplay.c (write_mulaw_8_chunk): + * sgiplay.c (write_linear_chunk): + * sgiplay.c (initialize_audio_port): + * sgiplay.c (open_audio_port): + * sgiplay.c (set_channels): + * sgiplay.c (set_output_format): + * sgiplay.c (struct): + * sgiplay.c (parse_snd_header): + * sheap.c (sheap_adjust_h): + * sound.c: + * sound.c (report_sound_error): + * sound.c (Fplay_sound_file): + * sound.c (Fplay_sound): + * sound.c (Fding): + * sound.c (init_nas_sound): + * sound.c (init_native_sound): + * sound.c (syms_of_sound): + * specifier.c: + * specifier.c (print_specifier): + * specifier.c (decode_specifier_type): + * specifier.c (check_valid_locale_or_locale_type): + * specifier.c (decode_locale): + * specifier.c (decode_locale_type): + * specifier.c (check_valid_domain): + * specifier.c (decode_specifier_tag_set): + * specifier.c (Fcanonicalize_tag_set): + * specifier.c (Fdefine_specifier_tag): + * specifier.c (Fspecifier_tag_predicate): + * specifier.c (check_valid_inst_list): + * specifier.c (check_valid_spec_list): + * specifier.c (decode_how_to_add_specification): + * specifier.c (check_modifiable_specifier): + * specifier.c (Fcopy_specifier): + * specifier.c (check_valid_specifier_matchspec): + * specifier.c (specifier_instance): + * specifier.c (boolean_validate): + * specifier.c (syms_of_specifier): + * sunplay.c: + * sunplay.c (init_device): + * sunplay.c (play_sound_file): + * sunplay.c (play_sound_data): + * symbols.c (oblookup): + * symbols.c (reject_constant_symbols): + * symbols.c (verify_ok_for_buffer_local): + * symbols.c (Fset): + * symbols.c (decode_magic_handler_type): + * symbols.c (handler_type_from_function_symbol): + * symbols.c (Fdefvaralias): + * symbols.c (init_symbols_once_early): + * symeval.h: + * symsinit.h: + * syntax.c (scan_lists): + * syntax.c (scan_sexps_forward): + * syntax.c (syms_of_syntax): + * sysdep.c (stuff_char): + * sysdep.c (sys_subshell): + * sysdep.c (dup2): + * toolbar-msw.c (mswindows_output_toolbar): + * toolbar.c (decode_toolbar_position): + * toolbar.c (compute_frame_toolbar_buttons): + * toolbar.c (CTB_ERROR): + * toolbar.c (check_toolbar_button_keywords): + * toolbar.c (toolbar_validate): + * toolbar.c (syms_of_toolbar): + * tooltalk.c (print_tooltalk_message): + * tooltalk.c (print_tooltalk_pattern): + * tooltalk.c (check_status): + * tooltalk.c (Ftooltalk_open_connection): + * tooltalk.c (syms_of_tooltalk): + * ui-byhand.c (Fgtk_box_query_child_packing): + * ui-byhand.c (Fgtk_button_box_get_child_size): + * ui-byhand.c (Fgtk_calendar_get_date): + * ui-byhand.c (Fgtk_clist_get_text): + * ui-byhand.c (Fgtk_clist_get_selection): + * ui-byhand.c (Fgtk_clist_get_pixmap): + * ui-byhand.c (Fgtk_clist_get_pixtext): + * ui-byhand.c (Fgtk_color_selection_get_color): + * ui-byhand.c (Fgtk_editable_insert_text): + * ui-byhand.c (Fgtk_pixmap_get): + * ui-byhand.c (Fgtk_curve_get_vector): + * ui-byhand.c (Fgtk_curve_set_vector): + * ui-byhand.c (Fgtk_label_get): + * ui-byhand.c (Fgtk_notebook_query_tab_label_packing): + * ui-byhand.c (Fgtk_widget_get_pointer): + * ui-byhand.c (generic_toolbar_insert_item): + * ui-gtk.c (Fdll_load): + * ui-gtk.c (ffi_object_printer): + * ui-gtk.c (Fgtk_import_variable_internal): + * ui-gtk.c (Fgtk_import_function_internal): + * ui-gtk.c (Fgtk_call_function): + * ui-gtk.c (emacs_gtk_object_printer): + * ui-gtk.c (object_getprop): + * ui-gtk.c (object_putprop): + * ui-gtk.c (emacs_gtk_object_finalizer): + * ui-gtk.c (emacs_gtk_boxed_printer): + * ui-gtk.c (Fgtk_fundamental_type): + * ui-gtk.c (Fgtk_describe_type): + * ui-gtk.c (syms_of_ui_gtk): + * ui-gtk.c (lisp_to_gtk_type): + * ui-gtk.c (symbol_to_enum): + * ui-gtk.c (enum_to_symbol): + * undo.c (Fprimitive_undo): + * undo.c (syms_of_undo): + * unexaix.c (report_error): + * unexaix.c (report_error_1): + * unexapollo.c (unexec): + * unexapollo.c (CopyData): + * unexconvex.c (report_error): + * unexconvex.c (a2;): + * unexec.c (report_error): + * unexec.c (report_error_1): + * widget.c (syms_of_widget): + * win32.c (Fmswindows_shell_execute): + * window.c (print_window): + * window.c (Fdelete_window): + * window.c (Fdelete_other_windows): + * window.c (Fset_window_buffer): + * window.c (Fselect_window): + * window.c (Fsplit_window): + * window.c (change_window_height): + * window.c (window_scroll): + * window.c (Fother_window_for_scrolling): + * window.c (print_window_config): + * window.c (syms_of_window): + -- defsymbol -> DEFSYMBOL. + -- add an error type to all errors. + -- eliminate the error functions in eval.c that let you just + use Qerror as the type. + -- redo the error API to be more consistent, sensibly named, + and easier to use. + -- redo the error hierarchy somewhat. create new errors: + structure-formation-error, gui-error, invalid-constant, + stack-overflow, out-of-memory, process-error, network-error, + sound-error, printing-unreadable-object, base64-conversion- + error; coding-system-error renamed to text-conversion error; + some others. + -- fix Mule problems in error strings in emodules.c, tooltalk.c. + -- fix error handling in mswin open-network-stream. + -- Mule-ize all sound files and clean up the headers. + -- nativesound.h -> sound.h and used for all sound files. + -- move some shared stuff into glyphs-shared.c: first attempt + at eliminating some of the massive GTK code duplication. + +2001-05-23 Ben Wing + + * event-msw.c (winsock_writer): + * event-msw.c (winsock_closer): + prior kludgy code was clobbering the buffer, thinking it was + "unused" space to store an unneeded return value; instead, use + the variable we've already got staring us in the face. + +2001-05-23 Ben Wing + + for 21.5: + + * s\cygwin32.h: + * s\cygwin32.h (C_SWITCH_SYSTEM): + * s\cygwin32.h (BROKEN_SIGIO): + * s\mingw32.h (C_SWITCH_SYSTEM): + * s\mingw32.h (TEXT_START): + remove support for way old beta versions of cygwin. + don't put -Wno-sign-compare in the system switches; this + isn't a system issue. define BROKEN_SIGIO for cygwin to + get C-g support. + +2001-05-23 Ben Wing + + for 21.4: + + * device-msw.c (msprinter_init_device): + signal an error rather than crash with an unavailable network + printer (from Mike Alexander). + + * event-msw.c: + * event-msw.c (struct winsock_stream): + * event-msw.c (winsock_writer): + * event-msw.c (winsock_closer): + * event-msw.c (make_winsock_stream_1): + cleanup headers. fix (hopefully) an error with data corruption + when sending to a network connection. + + * fileio.c (Fexpand_file_name): Fix evil code that attempts + to handle the ~user prefix by (a) always assuming we're referencing + ourselves and not even verifying the user -- hence any file with + a tilde as its first char is invalid! (b) if there wasn't a slash + following the filename, the pointer was set *past* the end of + file and we started reading from uninitialized memory. Now we + simply treat these as files, always. + + optionally for 21.4 (doc fix): + + * lread.c (pas_de_holgazan_ici): + * lread.c (load_force_doc_string_unwind): + cambia de pas_de_lache_ici -- al minimo usa la palabra certa. + + for 21.5: + + * frame.c (restore_frame_list_to_its_unbesmirched_state): + fix warnings. + + * emacs.c (make_arg_list_1): + * nt.c (win32_get_long_filename): + * nt.c (init_environment): + * nt.c (GetCachedVolumeInformation): + * nt.c (get_volume_info): + * nt.c (map_win32_filename): + * nt.c (sys_rename): + * nt.c (generate_inode_val): + * ntproc.c (Fwin32_short_file_name): + * ntproc.c (Fwin32_long_file_name): + * process-nt.c (nt_create_process): + * realpath.c (win32_readlink): + * unexnt.c: + * unexnt.c (_start): + * unexnt.c (unexec): + * unexnt.c (get_bss_info_from_map_file): + rename MAX_PATH to standard PATH_MAX. + + * process-nt.c: + * realpath.c: + cleanup headers. + + * process-unix.c (get_internet_address): + * sysdep.c (init_system_name): + * systime.h: + * syswindows.h: + kill BROKEN_CYGWIN and support for way old beta versions of cygwin. + + * sysfile.h: + use _MAX_PATH (Windows) preferentially for PATH_MAX if defined. + include io.h on Cygwin (we need get_osfhandle()). include + sys/fcntl.h always, since we were including it in various + header files anyway. + + * unexcw.c: + * unexcw.c (DONT_ENCAPSULATE): + * unexcw.c (CHECK_AOUT_POS): + * unexcw.c (unexec): + * unexcw.c (get_section_info): + * unexcw.c (copy_executable_and_dump_data_section): + * unexcw.c (dup_file_area): + * unexcw.c (write_int_to_bss): + fix up style to conform to standard. remove duplicate definition + of PERROR. + + * buffer.c (common_init_complex_vars_of_buffer): comment change. + + * database.c: + * debug.h (struct debug_classes): + * device-tty.c: + * dired-msw.c: + * dired-msw.c (mswindows_sortby): + * glyphs-msw.c: + header cleanups (remove places that directly include a system + header file, because we have our own layer to do this more cleanly + and portably); indentation fixes. + +2001-05-22 Martin Buchholz + + * config.h.in (SYSTEM_TYPE): Allow configure to set this. + * s/darwin.h: New. Add support for MacOS X. + +2001-05-20 Mike Alexander + + * device-msw.c (msprinter_init_device): Don't assert out if the + printer isn't reachable on the net. + +2001-05-21 Martin Buchholz + + * gui-x.c (sanity_check_lwlib): Remove. + +2001-05-14 Martin Buchholz + + realloc() was being called with a null pointer, causing a crash in + etags running `make TAGS' on SunOS 4. + The realloc bug should be handled in the config infrastructure, + not the regular code. It's actually a feature to make the regular + code less defensive, since we *want* it to crash faster. + * s/sunos4.h (realloc_accepting_nullptr): Safe version of realloc. + * s/sunos4.h (realloc): Re-#define realloc to realloc_accepting_nullptr. + * regex.c (RETALLOC_IF): Remove. Use RETALLOC instead. + * regex.c (RETALLOC): Code as if realloc() is ANSI-compliant. + * alloc.c (xrealloc): Code as if realloc() is ANSI-compliant. + * gmalloc.c: Undef functions to be defined here, in case system + header files or the config infrastructure have #define'd them. + * tparam.c: Likewise. + * tparam.c: Assume standard C header files. + +2001-05-12 Craig Lanning + + * s\mingw32.h: + Properly find MinGW's inside Cygwin's restructured + include directories. Don't try to include + since we are dropping support for MinGW in versions of Cygwin + earlier than b21. + +2001-05-12 Craig Lanning + + * nt.c: + Drop support for MinGW in versions of Cygwin before b21. + * sysdep.c: + Properly find MinGW's inside Cygwin's restructured + include directories. + * syswindows.h: + Drop support for MinGW in versions of Cygwin before b21. + * unexcw.c: + Even though a.out.h is no longer detected by configure, allow + MinGW to use it until we figure out how to do the job with Win32. + + +2001-05-19 Ben Wing + + * console-msw.h: + * scrollbar-msw.c (mswindows_create_scrollbar_instance): + * scrollbar-msw.c (mswindows_handle_scrollbar_event): + * event-msw.c: + * event-msw.c (mswindows_find_frame): + we might receive scrollbar events on windows without scrollbars + (e.g. holding down and moving the wheel button). + + * dired.c (user_name_completion): win9x support. + + * eval.c: doc comment about gcpro'ing in record_unwind_protect. + + * frame-msw.c (msprinter_init_frame_3): typo. + + * frame.c: + * frame.c (restore_frame_list_to_its_unbesmirched_state): + * frame.c (Fmake_frame): + avoid problems with errors during init_frame_3. + + * process-nt.c: + * process-nt.c (vars_of_process_nt): + remove unused mswindows-quote-process-args. rec for 21.4. + + * unexcw.c (PERROR): use do/while. + +2001-05-03 Kirill 'Big K' Katsnelson + + * lisp.h: (dump_add_opaque): make varaddress parameter const. + + * dumper.c (struct pdump_opaque): make varaddress const. + (dump_add_opaque): make varaddress parameter const. + (pdump_load_finish): override const when copying into + info.varaddress. + +2001-05-02 Kirill 'Big K' Katsnelson + + * console.h (struct console_methods): Added flags member. + (CONSOLE_IMPLEMENTATION_FLAGS): Defined. + (CONMETH_IMPL_FLAG): + (CONSOLE_IMPL_FLAG): Macro to check implememntation flags. + Defined XDEVIMPF_DONT_PREEMPT_REDISPLAY. + + * device.c (window_system_pixelated_geometry): Use the above macros. + + * device.h (DEVICE_IMPL_FLAG): Macro to check a device + implememntation flag. + * device.h (DEVICE_DISPLAY_P): Use it. + + * frame.c (delete_frame_internal): Use the above macro. + + * redisplay.c (redisplay_device): Use it. + (redisplay_device): Obey XDEVIMPF_DONT_PREEMPT_REDISPLAY. + (redisplay_frame): Ditto. + + * device-msw.c (mswindows_device_implementation_flags): Removed. + (msprinter_device_implementation_flags): Removed. + (console_type_create_device_mswindows): Removed references to + implementation_flags methods, set implementation flags here. + (console_type_create_device_mswindows): Added XDEVIMPF_DONT_PREEMPT. + + * device-gtk.c (gtk_device_implementation_flags): Removed method. + (console_type_create_device_gtk): Removed method declaration. + Added commented out statement which semantically matches the + commented out statement in the above removed method. + +2001-05-17 Stephen J. Turnbull + + * regex.c (DECLARE_NOTHING): Define if !emacs && REGEX_MALLOC. + +2001-05-11 Yoshiki Hayashi + + * lisp.h (EMACS_INT_MAX): This should be one bit less since + EMACS_INT is signed. + +2001-05-13 Mike Alexander + + * frame-msw.c (mswindows_make_frame_visible): Call SetActiveWindow + to make the frame the active window. + +2001-05-11 Martin Buchholz + + Eliminate the need to define HAVE_PTYS in s&m files. + + * config.h.in: + * event-msw.c (emacs_mswindows_create_stream_pair): + * event-stream.c (execute_internal_event): + * event-unixoid.c (event_stream_unixoid_create_stream_pair): + * process-unix.c: + * process-unix.c (unix_create_process): + * sysdep.c: + * sysdep.c (set_descriptor_non_blocking): + * sysdep.c (setup_pty): Delete ancient FIONBIO code. + * systty.h: + * s/aix3-1.h: + * s/bsd4-1.h: + * s/bsd4-2.h: + * s/cxux.h: + * s/dgux.h: + * s/cygwin32.h: + * s/esix.h: + * s/hpux.h: + * s/iris3-5.h: + * s/iris3-6.h: + * s/irix3-3.h: + * s/isc2-2.h: + * s/linux.h: + * s/ptx.h: + * s/rtu.h: + * s/sco4.h: + * s/sco5.h: + * s/template.h: + * s/umax.h: + * s/umips.h: + * s/unipl5-0.h: + * s/unipl5-2.h: + * s/usg5-0.h: + * s/usg5-3.h: + * s/usg5-4.h: + * s/windowsnt.h: + * s/xenix.h: + * m/7300.h: + * m/delta.h: + * m/delta88k.h: + * m/dpx2.h: + * m/hp800.h: + * m/ibmps2-aix.h: + * m/ibmrt-aix.h: + * m/mips.h: + * m/pfa50.h: + * m/sps7.h: + * m/stride.h: + * m/tad68k.h: + * m/tekxd88.h: + * m/wicat.h: + Nuke all references to HAVE_PTYS, SYSV_PTYS, NEED_BSDTTY. + All current Unix systems have ptys, and even on systems without + ptys, the basic functionality has been sufficiently + autoconfiscated that everything should just work anyways. + +2001-05-11 Mike Alexander + + * event-msw.c (mswindows_need_event_in_modal_loop): + (mswindows_need_event): + Fix indentation. + +2001-05-12 Ben Wing + + * .cvsignore: add xemacs.opt, a VC-generated file. + +2001-05-12 Ben Wing + + * event-msw.c (mswindows_dde_callback): + * event-msw.c (mswindows_wnd_proc): + eliminate cygwin warnings. + + * dired.c: + * dired.c (user_name_completion): + * syswindows.h: + * win32.c: + * win32.c (init_potentially_nonexistent_functions): + find the Net* functions the hard way to avoid errors on win 9x. + +2001-05-10 Ben Wing + + * dired.c: + * dired.c (user_name_completion_unwind): + * dired.c (user_name_completion): + * dired.c (syms_of_dired): + implement user-name-all-completions under Windows. + + * emacs.c: + * emacs.c (syms_of_emacs): + create new function force-debugging-signal (only when DEBUG_XEMACS) + to breakpoint or abort to the debugger. + + * file-coding.c: + * file-coding.c (syms_of_file_coding): + * file-coding.h: + * lisp.h: + move coding-system-charset to lisp to avoid doc warning. + +2001-05-09 William M. Perry + + * scrollbar-gtk.c (gtk_create_scrollbar_instance): Fix the + disappearing GTK scrollbar problem. + +2001-05-09 Ben Wing + + * regex.c (regex_compile): + fix error compiling regexps with back-references in them. + 2001-05-09 Martin Buchholz * XEmacs 21.5.1 "anise" is released. @@ -3818,7 +6281,6 @@ [6]. [7]. - * device.h (wrap_device): New. First of its kind; meant to replace XSETDEVICE. * dialog-msw.c: Many file-dialog symbols. @@ -4061,7 +6523,6 @@ * frame.c: * frame.c (Fmouse_pixel_position): Minor doc fixes. - * frame.h (wrap_frame): New. Macro like wrap_device. * general.c: @@ -4135,7 +6596,6 @@ * keymap.h: Support new button modifiers. - * lisp-disunion.h (wrap_object): * lisp-disunion.h (XSETOBJ): Rename make_obj to wrap_object. diff --text -u 'xemacs-21.5.1/src/Makefile.in.in' 'xemacs-21.5.2/src/Makefile.in.in' Index: ././src/Makefile.in.in --- ././src/Makefile.in.in Fri Apr 13 03:23:23 2001 +++ ././src/Makefile.in.in Fri Jun 8 21:21:21 2001 @@ -141,13 +141,17 @@ win32_objs=win32.o xemacs_res.o #endif +#ifdef HAVE_SETITIMER +profile_objs=profile.o +#endif + ## -Demacs is needed to make some files produce the correct version ## for use in Emacs. cppflags = $(CPPFLAGS) -Demacs -I. $(c_switch_all) cflags = $(CFLAGS) $(cppflags) #if defined (WIN32_NATIVE) || defined (CYGWIN) -ldflags = $(LDFLAGS) -mwindows $(ld_switch_all) $(ld_dynamic_link_flags) +ldflags = $(LDFLAGS) -mwindows -e _mainCRTStartup $(ld_switch_all) $(ld_dynamic_link_flags) #else ldflags = $(LDFLAGS) $(ld_switch_all) $(ld_dynamic_link_flags) #endif @@ -190,11 +194,11 @@ eval.o events.o $(extra_objs)\ event-stream.o extents.o faces.o\ fileio.o $(LOCK_OBJ) filemode.o floatfns.o fns.o font-lock.o\ - frame.o general.o glyphs.o glyphs-eimage.o glyphs-widget.o\ + frame.o general.o glyphs.o glyphs-eimage.o glyphs-shared.o glyphs-widget.o\ gui.o gutter.o $(gui_objs) hash.o imgproc.o indent.o insdel.o intl.o\ keymap.o $(RTC_patch_objs) line-number.o lread.o lstream.o\ macros.o marker.o md5.o minibuf.o objects.o opaque.o\ - print.o process.o profile.o\ + print.o process.o $(profile_objs)\ rangetab.o redisplay.o redisplay-output.o regex.o\ search.o select.o $(sheap_objs) signal.o sound.o\ specifier.o strftime.o symbols.o syntax.o sysdep.o\ diff --text -u 'xemacs-21.5.1/src/abbrev.c' 'xemacs-21.5.2/src/abbrev.c' Index: ././src/abbrev.c --- ././src/abbrev.c Fri Apr 13 03:23:24 2001 +++ ././src/abbrev.c Thu May 24 16:51:01 2001 @@ -404,7 +404,7 @@ void syms_of_abbrev (void) { - defsymbol (&Qpre_abbrev_expand_hook, "pre-abbrev-expand-hook"); + DEFSYMBOL (Qpre_abbrev_expand_hook); DEFSUBR (Fexpand_abbrev); } diff --text -u 'xemacs-21.5.1/src/alloc.c' 'xemacs-21.5.2/src/alloc.c' Index: ././src/alloc.c --- ././src/alloc.c Fri Apr 13 03:23:24 2001 +++ ././src/alloc.c Mon Jun 18 16:10:07 2001 @@ -163,7 +163,7 @@ #ifdef ERROR_CHECK_TYPECHECK -Error_behavior ERROR_ME, ERROR_ME_NOT, ERROR_ME_WARN; +Error_Behavior ERROR_ME, ERROR_ME_NOT, ERROR_ME_WARN; #endif @@ -236,7 +236,7 @@ Fset (Qvalues, Qnil); Vcommand_history = Qnil; - error ("Memory exhausted"); + out_of_memory ("Memory exhausted", Qunbound); } /* like malloc and realloc but check for no memory left, and block input. */ @@ -271,12 +271,10 @@ void * xrealloc (void *block, size_t size) { - /* We must call malloc explicitly when BLOCK is 0, since some - reallocs don't do this. */ - void *val = block ? realloc (block, size) : malloc (size); + block = realloc (block, size); - if (!val && (size != 0)) memory_full (); - return val; + if (!block && (size != 0)) memory_full (); + return block; } void @@ -1435,7 +1433,7 @@ if (EQ (symbol, Qt) || EQ (symbol, Qnil) || SYMBOL_IS_KEYWORD (symbol)) - signal_simple_error_2 + invalid_constant_2 ("Invalid constant symbol in formal parameter list", symbol, arglist); } @@ -2111,14 +2109,14 @@ } Lisp_Object -build_string (const char *str) +build_string (const CBufbyte *str) { /* Some strlen's crash and burn if passed null. */ return make_string ((const Bufbyte *) str, (str ? strlen(str) : 0)); } Lisp_Object -build_ext_string (const char *str, Lisp_Object coding_system) +build_ext_string (const Extbyte *str, Lisp_Object coding_system) { /* Some strlen's crash and burn if passed null. */ return make_ext_string ((const Extbyte *) str, (str ? strlen(str) : 0), @@ -2126,7 +2124,7 @@ } Lisp_Object -build_translated_string (const char *str) +build_translated_string (const CBufbyte *str) { return build_string (GETTEXT (str)); } @@ -3242,6 +3240,61 @@ /* Maybe we want to use this when doing a "panic" gc after memory_full()? */ static int gc_hooks_inhibited; +struct post_gc_action +{ + void (*fun) (void *); + void *arg; +}; + +typedef struct post_gc_action post_gc_action; + +typedef struct +{ + Dynarr_declare (post_gc_action); +} post_gc_action_dynarr; + +static post_gc_action_dynarr *post_gc_actions; + +/* Register an action to be called at the end of GC. + gc_in_progress is 0 when this is called. + This is used when it is discovered that an action needs to be taken, + but it's during GC, so it's not safe. (e.g. in a finalize method.) + + As a general rule, do not use Lisp objects here. + And NEVER signal an error. +*/ + +void +register_post_gc_action (void (*fun) (void *), void *arg) +{ + post_gc_action action; + + if (!post_gc_actions) + post_gc_actions = Dynarr_new (post_gc_action); + + action.fun = fun; + action.arg = arg; + + Dynarr_add (post_gc_actions, action); +} + +static void +run_post_gc_actions (void) +{ + int i; + + if (post_gc_actions) + { + for (i = 0; i < Dynarr_length (post_gc_actions); i++) + { + post_gc_action action = Dynarr_at (post_gc_actions, i); + (action.fun) (action.arg); + } + + Dynarr_reset (post_gc_actions); + } +} + void garbage_collect_1 (void) @@ -3273,7 +3326,7 @@ return; frame = DEVICE_SELECTED_FRAME (XDEVICE (device)); if (NILP (frame)) - signal_simple_error ("No frames exist on device", device); + invalid_state ("No frames exist on device", device); f = XFRAME (frame); } @@ -3423,7 +3476,6 @@ } } - mark_redisplay (); mark_profiling_info (); /* OK, now do the after-mark stuff. This is for things that @@ -3456,6 +3508,8 @@ #endif gc_in_progress = 0; + + run_post_gc_actions (); /******* End of garbage collection ********/ diff --text -u 'xemacs-21.5.1/src/backtrace.h' 'xemacs-21.5.2/src/backtrace.h' Index: ././src/backtrace.h --- ././src/backtrace.h Fri Apr 13 03:23:25 2001 +++ ././src/backtrace.h Mon Jun 18 16:10:09 2001 @@ -79,7 +79,11 @@ JMP_BUF jmp; struct backtrace *backlist; #if 0 /* FSFmacs */ - /* #### */ + /* FSF uses a separate handler stack to hold condition-cases, + where we use Vcondition_handlers. We should switch to their + system becaue it avoids the need to mess around with consing + up stuff and then dangerously freeing it. See comment in + condition_case_unwind(). */ struct handler *handlerlist; #endif int lisp_eval_depth; diff --text -u 'xemacs-21.5.1/src/buffer.c' 'xemacs-21.5.2/src/buffer.c' Index: ././src/buffer.c --- ././src/buffer.c Wed May 9 19:50:37 2001 +++ ././src/buffer.c Mon Jun 18 16:10:09 2001 @@ -238,7 +238,6 @@ #define MARKED_SLOT(x) mark_object (buf->x) #include "bufslots.h" -#undef MARKED_SLOT mark_object (buf->extent_info); if (buf->text) @@ -260,10 +259,9 @@ if (print_readably) { if (!BUFFER_LIVE_P (b)) - error ("printing unreadable object #"); + printing_unreadable_object ("#"); else - error ("printing unreadable object #", - XSTRING_DATA (b->name)); + printing_unreadable_object ("#", XSTRING_DATA (b->name)); } else if (!BUFFER_LIVE_P (b)) write_c_string ("#", printcharfun); @@ -306,8 +304,8 @@ nsberror (Lisp_Object spec) { if (STRINGP (spec)) - error ("No buffer named %s", XSTRING_DATA (spec)); - signal_simple_error ("Invalid buffer argument", spec); + invalid_argument ("No buffer named", spec); + invalid_argument ("Invalid buffer argument", spec); } DEFUN ("buffer-list", Fbuffer_list, 0, 1, 0, /* @@ -619,7 +617,8 @@ return buf; if (XSTRING_LENGTH (name) == 0) - error ("Empty string for buffer name is not allowed"); + invalid_argument ("Empty string for buffer name is not allowed", + Qunbound); b = allocate_buffer (); @@ -660,9 +659,9 @@ CHECK_STRING (name); name = LISP_GETTEXT (name); if (!NILP (Fget_buffer (name))) - signal_simple_error ("Buffer name already in use", name); + invalid_argument ("Buffer name already in use", name); if (XSTRING_LENGTH (name) == 0) - error ("Empty string for buffer name is not allowed"); + invalid_argument ("Empty string for buffer name is not allowed", Qunbound); b = allocate_buffer (); @@ -697,7 +696,6 @@ b->slot = def->slot; \ } #include "bufslots.h" -#undef MARKED_SLOT } @@ -846,7 +844,6 @@ result = Fcons (Fcons (syms->slot, buf->slot), result); \ } #include "bufslots.h" -#undef MARKED_SLOT } return result; } @@ -948,7 +945,7 @@ newname = LISP_GETTEXT (newname); if (XSTRING_LENGTH (newname) == 0) - error ("Empty string is invalid as a buffer name"); + invalid_argument ("Empty string is invalid as a buffer name", Qunbound); tem = Fget_buffer (newname); /* Don't short-circuit if UNIQUE is t. That is a useful way to rename @@ -963,8 +960,7 @@ if (!NILP (unique)) newname = Fgenerate_new_buffer_name (newname, current_buffer->name); else - error ("Buffer name \"%s\" is in use", - XSTRING_DATA (newname)); + invalid_argument ("Buffer name is in use", newname); } current_buffer->name = newname; @@ -1498,7 +1494,7 @@ { buffer = get_buffer (buffer, 0); if (NILP (buffer)) - error ("Selecting deleted or non-existent buffer"); + invalid_operation ("Selecting deleted or non-existent buffer", Qunbound); set_buffer_internal (XBUFFER (buffer)); return buffer; } @@ -1586,7 +1582,7 @@ before = get_buffer (before, 1); if (EQ (before, buffer)) - error ("Cannot place a buffer before itself"); + invalid_operation ("Cannot place a buffer before itself", Qunbound); bury_buffer_1 (buffer, before, &Vbuffer_alist); bury_buffer_1 (buffer, before, &selected_frame ()->buffer_alist); @@ -1925,12 +1921,12 @@ if (size_in_bytes == 0) break; else if (size_in_bytes < 0) - error ("Error converting to external format"); + signal_error (Qtext_conversion_error, "Error converting to external format", Qunbound); size_in_bytes = Lstream_write (writer, tempbuf, size_in_bytes); if (size_in_bytes <= 0) - error ("Error converting to external format"); + signal_error (Qtext_conversion_error, "Error converting to external format", Qunbound); } /* Closing writer will close any stream at the other end of writer. */ @@ -2063,12 +2059,12 @@ if (size_in_bytes == 0) break; else if (size_in_bytes < 0) - error ("Error converting to internal format"); + signal_error (Qtext_conversion_error, "Error converting to internal format", Qunbound); size_in_bytes = Lstream_write (writer, tempbuf, size_in_bytes); if (size_in_bytes <= 0) - error ("Error converting to internal format"); + signal_error (Qtext_conversion_error, "Error converting to internal format", Qunbound); } /* Closing writer will close any stream at the other end of writer. */ @@ -2097,31 +2093,31 @@ { INIT_LRECORD_IMPLEMENTATION (buffer); - defsymbol (&Qbuffer_live_p, "buffer-live-p"); - defsymbol (&Qbuffer_or_string_p, "buffer-or-string-p"); - defsymbol (&Qmode_class, "mode-class"); - defsymbol (&Qrename_auto_save_file, "rename-auto-save-file"); - defsymbol (&Qkill_buffer_hook, "kill-buffer-hook"); - defsymbol (&Qpermanent_local, "permanent-local"); - - defsymbol (&Qfirst_change_hook, "first-change-hook"); - defsymbol (&Qbefore_change_functions, "before-change-functions"); - defsymbol (&Qafter_change_functions, "after-change-functions"); + DEFSYMBOL (Qbuffer_live_p); + DEFSYMBOL (Qbuffer_or_string_p); + DEFSYMBOL (Qmode_class); + DEFSYMBOL (Qrename_auto_save_file); + DEFSYMBOL (Qkill_buffer_hook); + DEFSYMBOL (Qpermanent_local); + + DEFSYMBOL (Qfirst_change_hook); + DEFSYMBOL (Qbefore_change_functions); + DEFSYMBOL (Qafter_change_functions); /* #### Obsolete, for compatibility */ - defsymbol (&Qbefore_change_function, "before-change-function"); - defsymbol (&Qafter_change_function, "after-change-function"); + DEFSYMBOL (Qbefore_change_function); + DEFSYMBOL (Qafter_change_function); - defsymbol (&Qdefault_directory, "default-directory"); + DEFSYMBOL (Qdefault_directory); - defsymbol (&Qget_file_buffer, "get-file-buffer"); - defsymbol (&Qchange_major_mode_hook, "change-major-mode-hook"); + DEFSYMBOL (Qget_file_buffer); + DEFSYMBOL (Qchange_major_mode_hook); - defsymbol (&Qfundamental_mode, "fundamental-mode"); + DEFSYMBOL (Qfundamental_mode); - defsymbol (&Qfind_file_compare_truenames, "find-file-compare-truenames"); + DEFSYMBOL (Qfind_file_compare_truenames); - defsymbol (&Qswitch_to_buffer, "switch-to-buffer"); + DEFSYMBOL (Qswitch_to_buffer); DEFSUBR (Fbufferp); DEFSUBR (Fbuffer_live_p); @@ -2384,7 +2380,6 @@ #define MARKED_SLOT(x) b->x = zap #include "bufslots.h" -#undef MARKED_SLOT } static void @@ -2504,7 +2499,9 @@ /* #### Warning: 1<<31 is the largest number currently allowable due to the XINT() handling of this value. With some - rearrangement you can get 3 more bits. */ + rearrangement you can get 3 more bits. + + #### 3 more? 34 bits???? -ben */ } } @@ -3027,7 +3024,6 @@ != !(NILP (XBUFFER (Vbuffer_local_symbols)->slot))) \ abort () #include "bufslots.h" -#undef MARKED_SLOT { Lisp_Object scratch = Fget_buffer_create (QSscratch); diff --text -u 'xemacs-21.5.1/src/buffer.h' 'xemacs-21.5.2/src/buffer.h' Index: ././src/buffer.h --- ././src/buffer.h Fri Apr 13 03:23:26 2001 +++ ././src/buffer.h Mon Jun 18 16:10:10 2001 @@ -224,6 +224,7 @@ DECLARE_LRECORD (buffer, struct buffer); #define XBUFFER(x) XRECORD (x, buffer, struct buffer) #define XSETBUFFER(x, p) XSETRECORD (x, p, buffer) +#define wrap_buffer(p) wrap_record (p, buffer) #define BUFFERP(x) RECORDP (x, buffer) #define CHECK_BUFFER(x) CHECK_RECORD (x, buffer) #define CONCHECK_BUFFER(x) CONCHECK_RECORD (x, buffer) @@ -1284,12 +1285,12 @@ #define DFC_C_STRING_ALLOCA_USE_CONVERTED_DATA(sink) do { \ void * dfc_sink_ret = alloca (dfc_sink.data.len + 1); \ memcpy (dfc_sink_ret, dfc_sink.data.ptr, dfc_sink.data.len + 1); \ - (sink) = (char *) dfc_sink_ret; \ + ((dfc_aliasing_voidpp) &(sink))->p = dfc_sink_ret; \ } while (0) #define DFC_C_STRING_MALLOC_USE_CONVERTED_DATA(sink) do { \ void * dfc_sink_ret = xmalloc (dfc_sink.data.len + 1); \ memcpy (dfc_sink_ret, dfc_sink.data.ptr, dfc_sink.data.len + 1); \ - (sink) = (char *) dfc_sink_ret; \ + ((dfc_aliasing_voidpp) &(sink))->p = dfc_sink_ret; \ } while (0) #define DFC_LISP_STRING_USE_CONVERTED_DATA(sink) \ sink = make_string ((Bufbyte *) dfc_sink.data.ptr, dfc_sink.data.len) diff --text -u 'xemacs-21.5.1/src/bufslots.h' 'xemacs-21.5.2/src/bufslots.h' Index: ././src/bufslots.h --- ././src/bufslots.h Fri Apr 13 03:23:26 2001 +++ ././src/bufslots.h Mon Jun 18 16:10:10 2001 @@ -27,10 +27,13 @@ XEmacs: a few other changes. */ -/* In the declaration of the buffer structure, this file is included - after defining MARKED_SLOT(x) to be Lisp_Object x; i.e. just a slot - definition. In the garbage collector this file is included after - defining MARKED_SLOT(x) to be mark_object(buffer->x). */ +/* We define the Lisp_Objects in the buffer structure in a separate file + because there are numerous places we want to iterate over them, such + as when defining them in the structure, initializing them, or marking + them. + + To use, define MARKED_SLOT before including this file. No need to + undefine; that happens automatically. */ #ifndef BUFFER_SLOTS_FIRST_NAME #define BUFFER_SLOTS_FIRST_NAME name @@ -222,9 +225,4 @@ #define BUFFER_SLOTS_LAST_NAME modeline_extent_table #endif -#if 0 /* FSFmacs */ - /* This is silly and stupid */ - /* These are so we don't have to recompile everything - the next few times we add a new slot. */ - MARKED_SLOT (extra1, extra2, extra3); -#endif +#undef MARKED_SLOT diff --text -u 'xemacs-21.5.1/src/bytecode.c' 'xemacs-21.5.2/src/bytecode.c' Index: ././src/bytecode.c --- ././src/bytecode.c Fri Apr 13 03:23:26 2001 +++ ././src/bytecode.c Wed Jun 6 21:34:44 2001 @@ -211,8 +211,6 @@ typedef unsigned char Opbyte; -static void invalid_byte_code_error (char *error_message, ...); - Lisp_Object * execute_rare_opcode (Lisp_Object *stack_ptr, const Opbyte *program_ptr, Opcode opcode); @@ -634,9 +632,9 @@ REGISTER Opcode opcode = (Opcode) READ_UINT_1; #ifdef ERROR_CHECK_BYTE_CODE if (stack_ptr > stack_end) - invalid_byte_code_error ("byte code stack overflow"); + stack_overflow ("byte code stack overflow", Qunbound); if (stack_ptr < stack_beg) - invalid_byte_code_error ("byte code stack underflow"); + stack_overflow ("byte code stack underflow", Qunbound); #endif #ifdef BYTE_CODE_METER @@ -842,7 +840,7 @@ #ifdef ERROR_CHECK_BYTE_CODE /* Binds and unbinds are supposed to be compiled balanced. */ if (specpdl_depth() != speccount) - invalid_byte_code_error ("unbalanced specbinding stack"); + invalid_byte_code ("unbalanced specbinding stack", Qunbound); #endif return TOP; @@ -1481,20 +1479,10 @@ } -static void -invalid_byte_code_error (char *error_message, ...) +DOESNT_RETURN +invalid_byte_code (const CBufbyte *reason, Lisp_Object frob) { - Lisp_Object obj; - va_list args; - char *buf = alloca_array (char, strlen (error_message) + 128); - - sprintf (buf, "%s", error_message); - va_start (args, error_message); - obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (buf), Qnil, -1, - args); - va_end (args); - - signal_error (Qinvalid_byte_code, list1 (obj)); + signal_error (Qinvalid_byte_code, reason, frob); } /* Check for valid opcodes. Change this when adding new opcodes. */ @@ -1504,8 +1492,8 @@ if ((opcode < Bvarref) || (opcode == 0251) || (opcode > Bassq && opcode < Bconstant)) - invalid_byte_code_error - ("invalid opcode %d in instruction stream", opcode); + invalid_byte_code ("invalid opcode in instruction stream", + make_int (opcode)); } /* Check that IDX is a valid offset into the `constants' vector */ @@ -1513,19 +1501,20 @@ check_constants_index (int idx, Lisp_Object constants) { if (idx < 0 || idx >= XVECTOR_LENGTH (constants)) - invalid_byte_code_error - ("reference %d to constants array out of range 0, %d", + signal_ferror + (Qinvalid_byte_code, + "reference %d to constants array out of range 0, %ld", idx, XVECTOR_LENGTH (constants) - 1); } /* Get next character from Lisp instructions string. */ -#define READ_INSTRUCTION_CHAR(lvalue) do { \ - (lvalue) = charptr_emchar (ptr); \ - INC_CHARPTR (ptr); \ - *icounts_ptr++ = program_ptr - program; \ - if (lvalue > UCHAR_MAX) \ - invalid_byte_code_error \ - ("Invalid character %c in byte code string"); \ +#define READ_INSTRUCTION_CHAR(lvalue) do { \ + (lvalue) = charptr_emchar (ptr); \ + INC_CHARPTR (ptr); \ + *icounts_ptr++ = program_ptr - program; \ + if (lvalue > UCHAR_MAX) \ + invalid_byte_code \ + ("Invalid character in byte code string", make_char (lvalue)); \ } while (0) /* Get opcode from Lisp instructions string. */ @@ -1653,10 +1642,9 @@ check_constants_index (arg, constants); val = XVECTOR_DATA (constants) [arg]; if (!SYMBOLP (val)) - invalid_byte_code_error ("variable reference to non-symbol %S", val); + invalid_byte_code ("variable reference to non-symbol", val); if (EQ (val, Qnil) || EQ (val, Qt) || (SYMBOL_IS_KEYWORD (val))) - invalid_byte_code_error ("variable reference to constant symbol %s", - string_data (XSYMBOL (val)->name)); + invalid_byte_code ("variable reference to constant symbol", val); WRITE_NARGS (Bvarref); break; @@ -1669,10 +1657,9 @@ check_constants_index (arg, constants); val = XVECTOR_DATA (constants) [arg]; if (!SYMBOLP (val)) - invalid_byte_code_error ("attempt to set non-symbol %S", val); + wtaerror ("attempt to set non-symbol", val); if (EQ (val, Qnil) || EQ (val, Qt)) - invalid_byte_code_error ("attempt to set constant symbol %s", - string_data (XSYMBOL (val)->name)); + signal_error (Qsetting_constant, 0, val); /* Ignore assignments to keywords by converting to Bdiscard. For backward compatibility only - we'd like to make this an error. */ if (SYMBOL_IS_KEYWORD (val)) @@ -1691,10 +1678,10 @@ check_constants_index (arg, constants); val = XVECTOR_DATA (constants) [arg]; if (!SYMBOLP (val)) - invalid_byte_code_error ("attempt to let-bind non-symbol %S", val); + wtaerror ("attempt to let-bind non-symbol", val); if (EQ (val, Qnil) || EQ (val, Qt) || (SYMBOL_IS_KEYWORD (val))) - invalid_byte_code_error ("attempt to let-bind constant symbol %s", - string_data (XSYMBOL (val)->name)); + signal_error (Qsetting_constant, + "attempt to let-bind constant symbol", val); WRITE_NARGS (Bvarbind); break; @@ -1740,8 +1727,7 @@ jumps_ptr->to = jumps_ptr->from + arg; jumps_ptr++; if (arg >= -1 && arg <= argsize) - invalid_byte_code_error - ("goto instruction is its own target"); + invalid_byte_code ("goto instruction is its own target", Qunbound); if (arg <= SCHAR_MIN || arg > SCHAR_MAX) { @@ -2347,7 +2333,8 @@ { Lisp_Object tem = read_doc_string (f->instructions); if (!CONSP (tem)) - signal_simple_error ("Invalid lazy-loaded byte code", tem); + signal_error (Qinvalid_byte_code, + "Invalid lazy-loaded byte code", tem); /* v18 or v19 bytecode file. Need to Ebolify. */ if (f->flags.ebolified && VECTORP (XCDR (tem))) ebolify_bytecode_constants (XCDR (tem)); @@ -2412,8 +2399,8 @@ INIT_LRECORD_IMPLEMENTATION (compiled_function); DEFERROR_STANDARD (Qinvalid_byte_code, Qinvalid_state); - defsymbol (&Qbyte_code, "byte-code"); - defsymbol (&Qcompiled_functionp, "compiled-function-p"); + DEFSYMBOL (Qbyte_code); + DEFSYMBOL_MULTIWORD_PREDICATE (Qcompiled_functionp); DEFSUBR (Fbyte_code); DEFSUBR (Ffetch_bytecode); @@ -2432,7 +2419,7 @@ #endif #ifdef BYTE_CODE_METER - defsymbol (&Qbyte_code_meter, "byte-code-meter"); + DEFSYMBOL (Qbyte_code_meter); #endif } diff --text -u 'xemacs-21.5.1/src/bytecode.h' 'xemacs-21.5.2/src/bytecode.h' Index: ././src/bytecode.h --- ././src/bytecode.h Fri Apr 13 03:23:27 2001 +++ ././src/bytecode.h Mon Jun 18 16:10:10 2001 @@ -92,6 +92,7 @@ #define XCOMPILED_FUNCTION(x) XRECORD (x, compiled_function, \ Lisp_Compiled_Function) #define XSETCOMPILED_FUNCTION(x, p) XSETRECORD (x, p, compiled_function) +#define wrap_compiled_function(p) wrap_record (p, compiled_function) #define COMPILED_FUNCTIONP(x) RECORDP (x, compiled_function) #define CHECK_COMPILED_FUNCTION(x) CHECK_RECORD (x, compiled_function) #define CONCHECK_COMPILED_FUNCTION(x) CONCHECK_RECORD (x, compiled_function) diff --text -u 'xemacs-21.5.1/src/callint.c' 'xemacs-21.5.2/src/callint.c' Index: ././src/callint.c --- ././src/callint.c Sat May 5 19:53:58 2001 +++ ././src/callint.c Thu May 24 16:51:02 2001 @@ -254,11 +254,11 @@ Lisp_Object tem; if (zmacs_regions && !zmacs_region_active_p) - error ("The region is not active now"); + invalid_operation ("The region is not active now", Qunbound); tem = Fmarker_buffer (current_buffer->mark); if (NILP (tem) || (XBUFFER (tem) != current_buffer)) - error ("The mark is not set now"); + invalid_operation ("The mark is not set now", Qunbound); return marker_position (current_buffer->mark); } @@ -499,7 +499,7 @@ prompt_data = (const char *) XSTRING_DATA (specs); if (prompt_data[prompt_index] == '+') - error ("`+' is not used in `interactive' for ordinary commands"); + syntax_error ("`+' is not used in `interactive' for ordinary commands", Qunbound); else if (prompt_data[prompt_index] == '*') { prompt_index++; @@ -528,7 +528,7 @@ if (MINI_WINDOW_P (XWINDOW (window)) && ! (minibuf_level > 0 && EQ (window, minibuf_window))) - error ("Attempt to select inactive minibuffer window"); + invalid_operation ("Attempt to select inactive minibuffer window", Qunbound); #if 0 /* unclean! see event-stream.c */ /* If the current buffer wants to clean up, let it. */ @@ -737,10 +737,9 @@ #endif if (NILP (event)) - error ("%s must be bound to a mouse or misc-user event", - (SYMBOLP (function) - ? (char *) string_data (XSYMBOL (function)->name) - : "command")); + signal_error (Qinvalid_operation, + "function must be bound to a mouse or misc-user event", + function); args[argnum] = event; mouse_event_count++; break; @@ -959,9 +958,10 @@ case '+': default: { - error ("Invalid `interactive' control letter \"%c\" (#o%03o).", - prompt_data[prompt_index], - prompt_data[prompt_index]); + signal_ferror (Qsyntax_error, + "Invalid `interactive' control letter \"%c\" (#o%03o).", + prompt_data[prompt_index], + prompt_data[prompt_index]); } } #undef PROMPT @@ -1035,30 +1035,30 @@ void syms_of_callint (void) { - defsymbol (&Qcall_interactively, "call-interactively"); - defsymbol (&Qread_from_minibuffer, "read-from-minibuffer"); - defsymbol (&Qcompleting_read, "completing-read"); - defsymbol (&Qread_file_name, "read-file-name"); - defsymbol (&Qread_directory_name, "read-directory-name"); - defsymbol (&Qread_string, "read-string"); - defsymbol (&Qread_buffer, "read-buffer"); - defsymbol (&Qread_variable, "read-variable"); - defsymbol (&Qread_function, "read-function"); - defsymbol (&Qread_command, "read-command"); - defsymbol (&Qread_number, "read-number"); - defsymbol (&Qread_expression, "read-expression"); + DEFSYMBOL (Qcall_interactively); + DEFSYMBOL (Qread_from_minibuffer); + DEFSYMBOL (Qcompleting_read); + DEFSYMBOL (Qread_file_name); + DEFSYMBOL (Qread_directory_name); + DEFSYMBOL (Qread_string); + DEFSYMBOL (Qread_buffer); + DEFSYMBOL (Qread_variable); + DEFSYMBOL (Qread_function); + DEFSYMBOL (Qread_command); + DEFSYMBOL (Qread_number); + DEFSYMBOL (Qread_expression); #if defined(MULE) || defined(FILE_CODING) - defsymbol (&Qread_coding_system, "read-coding-system"); - defsymbol (&Qread_non_nil_coding_system, "read-non-nil-coding-system"); + DEFSYMBOL (Qread_coding_system); + DEFSYMBOL (Qread_non_nil_coding_system); #endif - defsymbol (&Qevents_to_keys, "events-to-keys"); - defsymbol (&Qcommand_debug_status, "command-debug-status"); - defsymbol (&Qenable_recursive_minibuffers, "enable-recursive-minibuffers"); + DEFSYMBOL (Qevents_to_keys); + DEFSYMBOL (Qcommand_debug_status); + DEFSYMBOL (Qenable_recursive_minibuffers); defsymbol (&QletX, "let*"); - defsymbol (&Qsave_excursion, "save-excursion"); + DEFSYMBOL (Qsave_excursion); #if 0 /* ill-conceived */ - defsymbol (&Qmouse_leave_buffer_hook, "mouse-leave-buffer-hook"); + DEFSYMBOL (Qmouse_leave_buffer_hook); #endif DEFSUBR (Finteractive); diff --text -u 'xemacs-21.5.1/src/callproc.c' 'xemacs-21.5.2/src/callproc.c' Index: ././src/callproc.c --- ././src/callproc.c Sat May 5 19:53:58 2001 +++ ././src/callproc.c Fri Jun 8 21:21:22 2001 @@ -1,4 +1,4 @@ -/* Synchronous subprocess invocation for XEmacs. +/* Old synchronous subprocess invocation for XEmacs. Copyright (C) 1985, 86, 87, 88, 93, 94, 95 Free Software Foundation, Inc. This file is part of XEmacs. @@ -21,6 +21,16 @@ /* Synched up with: Mule 2.0, FSF 19.30. */ /* Partly sync'ed with 19.36.4 */ + +/* #### This ENTIRE file is only used in batch mode. + + We only need two things to get rid of both this and ntproc.c: + + -- my `stderr-proc' ws, which adds support for a separate stderr + in asynch. subprocesses. (it's a feature in `old-call-process-internal'.) + -- a noninteractive event loop that supports processes. +*/ + #include #include "lisp.h" @@ -138,20 +148,6 @@ return Qnil; } -static Lisp_Object fork_error; -#if 0 /* UNUSED */ -static void -report_fork_error (char *string, Lisp_Object data) -{ - Lisp_Object errstring = lisp_strerror (errno); - - fork_error = Fcons (build_string (string), Fcons (errstring, data)); - - /* terminate this branch of the fork, without closing stdin/out/etc. */ - _exit (1); -} -#endif /* unused */ - DEFUN ("old-call-process-internal", Fold_call_process_internal, 1, MANY, 0, /* Call PROGRAM synchronously in separate process, with coding-system specified. Arguments are @@ -202,7 +198,7 @@ #if defined (NO_SUBPROCESSES) /* Without asynchronous processes we cannot have BUFFER == 0. */ if (nargs >= 3 && !INTP (args[2])) - error ("Operating system cannot handle asynchronous subprocesses"); + signal_error (Qunimplemented, "Operating system cannot handle asynchronous subprocesses", Qunbound); #endif /* NO_SUBPROCESSES */ /* Do all filename munging before building new_argv because GC in @@ -233,8 +229,8 @@ /* This is in FSF, but it breaks everything in the presence of ange-ftp-visited files, so away with it. */ if (NILP (Ffile_accessible_directory_p (current_dir))) - report_file_error ("Setting current directory", - Fcons (current_buffer->directory, Qnil)); + signal_error (Qprocess_error, "Setting current directory", + current_buffer->directory); #endif /* 0 */ NUNGCPRO; } @@ -308,12 +304,12 @@ new_argv[max(nargs - 3,1)] = 0; if (NILP (path)) - report_file_error ("Searching for program", Fcons (args[0], Qnil)); + signal_error (Qprocess_error, "Searching for program", args[0]); new_argv[0] = (char *) XSTRING_DATA (path); filefd = open ((char *) XSTRING_DATA (infile), O_RDONLY | OPEN_BINARY, 0); if (filefd < 0) - report_file_error ("Opening process input file", Fcons (infile, Qnil)); + report_process_error ("Opening process input file", infile); if (INTP (buffer)) { @@ -368,10 +364,9 @@ if (fd1 >= 0) close (fd1); errno = save_errno; - report_file_error ("Cannot open", Fcons(error_file, Qnil)); + report_process_error ("Cannot open", error_file); } - fork_error = Qnil; #ifdef WIN32_NATIVE pid = child_setup (filefd, fd1, fd_error, new_argv, (char *) XSTRING_DATA (current_dir)); @@ -424,9 +419,6 @@ close (fd1); } - if (!NILP (fork_error)) - signal_error (Qfile_error, fork_error); - #ifndef WIN32_NATIVE if (pid < 0) { @@ -434,7 +426,7 @@ if (fd[0] >= 0) close (fd[0]); errno = save_errno; - report_file_error ("Doing fork", Qnil); + report_process_error ("Doing fork", Qunbound); } #endif @@ -787,7 +779,7 @@ (const char* const*)env); if (cpid == -1) /* An error occurred while trying to spawn the process. */ - report_file_error ("Spawning child process", Qnil); + report_process_error ("Spawning child process", Qunbound); reset_standard_handles (in, out, err, handles); return cpid; #else /* not WIN32_NATIVE */ @@ -897,12 +889,39 @@ { /* Initialize shell-file-name from environment variables or best guess. */ #ifdef WIN32_NATIVE - const char *shell = egetenv ("COMSPEC"); - if (!shell) shell = "\\WINNT\\system32\\cmd.exe"; + const char *shell = egetenv ("SHELL"); + if (!shell) shell = egetenv ("COMSPEC"); + /* Should never happen! */ + if (!shell) shell = (GetVersion () & 0x80000000 ? "command" : "cmd"); #else /* not WIN32_NATIVE */ const char *shell = egetenv ("SHELL"); if (!shell) shell = "/bin/sh"; #endif + +#if 0 /* defined (WIN32_NATIVE) */ + /* BAD BAD BAD. We do not wanting to be passing an XEmacs-created + SHELL var down to some inferior Cygwin process, which might get + screwed up. + + There are a few broken apps (eterm/term.el, eterm/tshell.el, + os-utils/terminal.el, texinfo/tex-mode.el) where this will + cause problems. Those broken apps don't look at + shell-file-name, instead just at explicit-shell-file-name, + ESHELL and SHELL. They are apparently attempting to borrow + what `M-x shell' uses, but that latter also looks at + shell-file-name. What we want is for all of these apps to look + at shell-file-name, so that the user can change the value of + shell-file-name and everything will work out hunky-dorey. + */ + + if (!egetenv ("SHELL")) + { + CBufbyte *faux_var = alloca_array (CBufbyte, 7 + strlen (shell)); + sprintf (faux_var, "SHELL=%s", shell); + Vprocess_environment = Fcons (build_string (faux_var), + Vprocess_environment); + } +#endif /* 0 */ Vshell_file_name = build_string (shell); } diff --text -u 'xemacs-21.5.1/src/casetab.c' 'xemacs-21.5.2/src/casetab.c' Index: ././src/casetab.c --- ././src/casetab.c Fri Apr 13 03:23:27 2001 +++ ././src/casetab.c Thu May 24 16:51:03 2001 @@ -74,7 +74,7 @@ Lisp_Case_Table *ct = XCASE_TABLE (obj); char buf[200]; if (print_readably) - error ("printing unreadable object #header.uid); + printing_unreadable_object ("#header.uid); write_c_string ("#", ct->header.uid); write_c_string (buf, printcharfun); @@ -176,7 +176,7 @@ else if (EQ (char_case, Qupcase)) return case_table_char (character, XCASE_TABLE_UPCASE (case_table)); else - signal_simple_error ("Char case must be downcase or upcase", char_case); + invalid_constant ("Char case must be downcase or upcase", char_case); return Qnil; /* Not reached. */ } @@ -212,7 +212,7 @@ Fput_char_table (character, value, XCASE_TABLE_EQV (case_table)); } else - signal_simple_error ("Char case must be downcase or upcase", char_case); + invalid_constant ("Char case must be downcase or upcase", char_case); return Qnil; } @@ -447,9 +447,9 @@ { INIT_LRECORD_IMPLEMENTATION (case_table); - defsymbol (&Qcase_tablep, "case-table-p"); - defsymbol (&Qdowncase, "downcase"); - defsymbol (&Qupcase, "upcase"); + DEFSYMBOL_MULTIWORD_PREDICATE (Qcase_tablep); + DEFSYMBOL (Qdowncase); + DEFSYMBOL (Qupcase); DEFSUBR (Fcase_table_p); DEFSUBR (Fget_case_table); diff --text -u 'xemacs-21.5.1/src/casetab.h' 'xemacs-21.5.2/src/casetab.h' Index: ././src/casetab.h --- ././src/casetab.h Fri Apr 13 03:23:27 2001 +++ ././src/casetab.h Mon Jun 18 16:10:10 2001 @@ -35,6 +35,7 @@ DECLARE_LRECORD (case_table, Lisp_Case_Table); #define XCASE_TABLE(x) XRECORD (x, case_table, Lisp_Case_Table) #define XSETCASE_TABLE(x, p) XSETRECORD (x, p, case_table) +#define wrap_case_table(p) wrap_record (p, case_table) #define CASE_TABLEP(x) RECORDP (x, case_table) #define CHECK_CASE_TABLE(x) CHECK_RECORD (x, case_table) #define CONCHECK_CASE_TABLE(x) CONCHECK_RECORD (x, case_table) diff --text -u 'xemacs-21.5.1/src/chartab.c' 'xemacs-21.5.2/src/chartab.c' Index: ././src/chartab.c --- ././src/chartab.c Fri Apr 13 03:23:27 2001 +++ ././src/chartab.c Fri May 25 20:26:52 2001 @@ -211,7 +211,7 @@ if (EQ (symbol, Qcategory)) return CHAR_TABLE_TYPE_CATEGORY; #endif - signal_simple_error ("Unrecognized char table type", symbol); + invalid_constant ("Unrecognized char table type", symbol); return CHAR_TABLE_TYPE_GENERIC; /* not reached */ } @@ -729,14 +729,14 @@ } #ifndef MULE else - signal_simple_error ("Range must be t or a character", range); + sferror ("Range must be t or a character", range); #else /* MULE */ else if (VECTORP (range)) { Lisp_Vector *vec = XVECTOR (range); Lisp_Object *elts = vector_data (vec); if (vector_length (vec) != 2) - signal_simple_error ("Length of charset row vector must be 2", + sferror ("Length of charset row vector must be 2", range); outrange->type = CHARTAB_RANGE_ROW; outrange->charset = Fget_charset (elts[0]); @@ -746,7 +746,7 @@ { case CHARSET_TYPE_94: case CHARSET_TYPE_96: - signal_simple_error ("Charset in row vector must be multi-byte", + sferror ("Charset in row vector must be multi-byte", outrange->charset); case CHARSET_TYPE_94X94: check_int_range (outrange->row, 33, 126); @@ -761,7 +761,7 @@ else { if (!CHARSETP (range) && !SYMBOLP (range)) - signal_simple_error + sferror ("Char table range must be t, charset, char, or vector", range); outrange->type = CHARTAB_RANGE_CHARSET; outrange->charset = Fget_charset (range); @@ -948,7 +948,7 @@ static int check_valid_char_table_value (Lisp_Object value, enum char_table_type type, - Error_behavior errb) + Error_Behavior errb) { switch (type) { @@ -979,8 +979,9 @@ case CHAR_TABLE_TYPE_DISPLAY: /* #### fix this */ - maybe_signal_simple_error ("Display char tables not yet implemented", - value, Qchar_table, errb); + maybe_signal_error (Qunimplemented, + "Display char tables not yet implemented", + value, Qchar_table, errb); return 0; case CHAR_TABLE_TYPE_CHAR: @@ -1473,7 +1474,7 @@ static int chartab_type_validate (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb) + Error_Behavior errb) { /* #### should deal with ERRB */ symbol_to_char_table_type (value); @@ -1482,7 +1483,7 @@ static int chartab_data_validate (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb) + Error_Behavior errb) { Lisp_Object rest; @@ -1494,12 +1495,12 @@ rest = XCDR (rest); if (!CONSP (rest)) - signal_simple_error ("Invalid list format", value); + signal_error (Qlist_formation_error, "Invalid list format", value); if (CONSP (range)) { if (!CONSP (XCDR (range)) || !NILP (XCDR (XCDR (range)))) - signal_simple_error ("Invalid range format", range); + sferror ("Invalid range format", range); decode_char_table_range (XCAR (range), &dummy); decode_char_table_range (XCAR (XCDR (range)), &dummy); } @@ -1617,7 +1618,7 @@ Lisp_Char_Table *ctbl; #ifdef ERROR_CHECK_TYPECHECK if (NILP (Fcategory_table_p (table))) - signal_simple_error ("Expected category table", table); + wtaerror ("Expected category table", table); #endif ctbl = XCHAR_TABLE (table); temp = get_char_table (ch, ctbl); @@ -1806,13 +1807,13 @@ #ifdef MULE INIT_LRECORD_IMPLEMENTATION (char_table_entry); - defsymbol (&Qcategory_table_p, "category-table-p"); - defsymbol (&Qcategory_designator_p, "category-designator-p"); - defsymbol (&Qcategory_table_value_p, "category-table-value-p"); + DEFSYMBOL (Qcategory_table_p); + DEFSYMBOL (Qcategory_designator_p); + DEFSYMBOL (Qcategory_table_value_p); #endif /* MULE */ - defsymbol (&Qchar_table, "char-table"); - defsymbol (&Qchar_tablep, "char-table-p"); + DEFSYMBOL (Qchar_table); + DEFSYMBOL_MULTIWORD_PREDICATE (Qchar_tablep); DEFSUBR (Fchar_table_p); DEFSUBR (Fchar_table_type_list); diff --text -u 'xemacs-21.5.1/src/chartab.h' 'xemacs-21.5.2/src/chartab.h' Index: ././src/chartab.h --- ././src/chartab.h Fri Apr 13 03:23:28 2001 +++ ././src/chartab.h Mon Jun 18 16:10:11 2001 @@ -52,6 +52,7 @@ #define XCHAR_TABLE_ENTRY(x) \ XRECORD (x, char_table_entry, Lisp_Char_Table_Entry) #define XSETCHAR_TABLE_ENTRY(x, p) XSETRECORD (x, p, char_table_entry) +#define wrap_char_table_entry(p) wrap_record (p, char_table_entry) #define CHAR_TABLE_ENTRYP(x) RECORDP (x, char_table_entry) /* #define CHECK_CHAR_TABLE_ENTRY(x) CHECK_RECORD (x, char_table_entry) char table entries should never escape to Lisp */ @@ -122,6 +123,7 @@ DECLARE_LRECORD (char_table, Lisp_Char_Table); #define XCHAR_TABLE(x) XRECORD (x, char_table, Lisp_Char_Table) #define XSETCHAR_TABLE(x, p) XSETRECORD (x, p, char_table) +#define wrap_char_table(p) wrap_record (p, char_table) #define CHAR_TABLEP(x) RECORDP (x, char_table) #define CHECK_CHAR_TABLE(x) CHECK_RECORD (x, char_table) #define CONCHECK_CHAR_TABLE(x) CONCHECK_RECORD (x, char_table) diff --text -u 'xemacs-21.5.1/src/cmdloop.c' 'xemacs-21.5.2/src/cmdloop.c' Index: ././src/cmdloop.c --- ././src/cmdloop.c Mon Apr 30 23:10:53 2001 +++ ././src/cmdloop.c Thu May 24 16:51:03 2001 @@ -248,7 +248,7 @@ * signal an error here to avoid the loop. */ if (in_menu_callback) - error ("Attempt to enter command_loop_3 inside menu callback"); + invalid_operation ("Attempt to enter command_loop_3 inside menu callback", Qunbound); #endif /* LWLIB_MENUBARS_LUCID */ /* This function can GC */ for (;;) @@ -606,10 +606,10 @@ void syms_of_cmdloop (void) { - defsymbol (&Qcommand_error, "command-error"); - defsymbol (&Qreally_early_error_handler, "really-early-error-handler"); - defsymbol (&Qtop_level, "top-level"); - defsymbol (&Qerrors_deactivate_region, "errors-deactivate-region"); + DEFSYMBOL (Qcommand_error); + DEFSYMBOL (Qreally_early_error_handler); + DEFSYMBOL (Qtop_level); + DEFSYMBOL (Qerrors_deactivate_region); #ifndef LISP_COMMAND_LOOP DEFSUBR (Frecursive_edit); diff --text -u 'xemacs-21.5.1/src/cmds.c' 'xemacs-21.5.2/src/cmds.c' Index: ././src/cmds.c --- ././src/cmds.c Fri Apr 13 03:23:28 2001 +++ ././src/cmds.c Thu May 24 16:51:03 2001 @@ -276,14 +276,14 @@ if (n < 0) { if (pos < BUF_BEGV (buf)) - signal_error (Qbeginning_of_buffer, Qnil); + signal_error (Qbeginning_of_buffer, 0, Qunbound); else buffer_delete_range (buf, pos, BUF_PT (buf), 0); } else { if (pos > BUF_ZV (buf)) - signal_error (Qend_of_buffer, Qnil); + signal_error (Qend_of_buffer, 0, Qunbound); else buffer_delete_range (buf, BUF_PT (buf), pos, 0); } @@ -340,8 +340,8 @@ c = Fevent_to_character (Vlast_command_event, Qnil, Qnil, Qt); if (NILP (c)) - signal_simple_error ("Last typed character has no ASCII equivalent", - Fcopy_event (Vlast_command_event, Qnil)); + invalid_operation ("Last typed character has no ASCII equivalent", + Fcopy_event (Vlast_command_event, Qnil)); CHECK_CHAR_COERCE_INT (c); @@ -502,10 +502,10 @@ void syms_of_cmds (void) { - defsymbol (&Qkill_forward_chars, "kill-forward-chars"); - defsymbol (&Qself_insert_command, "self-insert-command"); - defsymbol (&Qoverwrite_mode_binary, "overwrite-mode-binary"); - defsymbol (&Qno_self_insert, "no-self-insert"); + DEFSYMBOL (Qkill_forward_chars); + DEFSYMBOL (Qself_insert_command); + DEFSYMBOL (Qoverwrite_mode_binary); + DEFSYMBOL (Qno_self_insert); DEFSUBR (Fforward_char); DEFSUBR (Fbackward_char); diff --text -u 'xemacs-21.5.1/src/config.h.in' 'xemacs-21.5.2/src/config.h.in' Index: ././src/config.h.in --- ././src/config.h.in Fri Apr 13 03:23:29 2001 +++ ././src/config.h.in Mon Jun 11 13:44:52 2001 @@ -26,26 +26,6 @@ #ifndef _SRC_CONFIG_H_ #define _SRC_CONFIG_H_ - -/* alloca twiddling belongs in one place, not the s&m headers - AIX requires this to be the first thing in the file. */ -#undef HAVE_ALLOCA_H - -#ifndef NOT_C_CODE -#ifdef __GNUC__ -#define alloca __builtin_alloca -#elif defined __DECC -#include -#pragma intrinsic(alloca) -#elif defined HAVE_ALLOCA_H -#include -#elif defined(_AIX) -#pragma alloca -#elif ! defined (alloca) -void *alloca (); -#endif -#endif /* C code */ - /* Use this to add code in a structured way to FSF-maintained source files so as to make it obvious where XEmacs changes are. */ #define XEMACS 1 @@ -338,7 +318,7 @@ #undef HAVE_WAITPID #undef HAVE_VSNPRINTF -/* PTY support functions */ +/* Many flavors of PTY support */ #undef HAVE_GETPT /* glibc's easy pty allocation function */ #undef HAVE__GETPTY /* SGI's easy pty allocation function */ #undef HAVE_OPENPTY /* BSD's easy pty allocation function */ @@ -348,7 +328,9 @@ #undef HAVE_KILLPG /* BSD */ #undef HAVE_TCGETPGRP /* Posix 1 */ #undef HAVE_ISASTREAM /* SysV streams */ -#undef HAVE_PTY_H /* Linux, Tru64 openpty */ +#undef HAVE_SYS_PTY_H /* AIX */ +#undef HAVE_SYS_PTYIO_H /* HP-UX */ +#undef HAVE_PTY_H /* Linux, Tru64 */ #undef HAVE_LIBUTIL_H /* BSD openpty */ #undef HAVE_UTIL_H /* NetBSD openpty */ #undef HAVE_STROPTS_H /* SysV streams */ @@ -601,6 +583,26 @@ definitions isn't right with 64-bit systems. */ #undef USE_UNION_TYPE +/* alloca twiddling. + Because we might be #including alloca.h here, feature test macros + such as _XOPEN_SOURCE must be defined above. */ +#undef HAVE_ALLOCA_H +#ifndef NOT_C_CODE +#ifdef __GNUC__ +#define alloca __builtin_alloca +#elif defined __DECC +#include +#pragma intrinsic(alloca) +#elif defined HAVE_ALLOCA_H +#include +#elif defined(_AIX) +/* AIX requires this before any "real" code in the translation unit. */ +#pragma alloca +#elif ! defined (alloca) +void *alloca (); +#endif +#endif /* C code */ + /* The configuration script may define `opsysfile' to be the name of the s/...h file that describes your operating system. The file name is chosen based on the configuration name. */ @@ -627,6 +629,13 @@ } #endif +/* s&m files shouldn't be required to define anything, or even to exist. + If the s&m files don't define SYSTEM_TYPE, configure will select an + appropriate default value. */ +#ifndef SYSTEM_TYPE +#undef SYSTEM_TYPE +#endif + #if defined (USE_SYSTEM_MALLOC) && !defined (SYSTEM_MALLOC) #define SYSTEM_MALLOC #endif @@ -879,6 +888,8 @@ #undef MAIL_LOCK_DOT #undef MAIL_LOCK_LOCKING #undef MAIL_LOCK_MMDF + +#undef HAVE_MKSTEMP #undef PREFIX_USER_DEFINED #undef EXEC_PREFIX_USER_DEFINED diff --text -u 'xemacs-21.5.1/src/conslots.h' 'xemacs-21.5.2/src/conslots.h' Index: ././src/conslots.h --- ././src/conslots.h Fri Apr 13 03:23:29 2001 +++ ././src/conslots.h Mon Jun 18 16:10:11 2001 @@ -20,10 +20,13 @@ /* Synched up with: Mule 2.0, FSF 19.30. (see FSF keyboard.h.) */ -/* In the declaration of the console structure, this file is included - after defining MARKED_SLOT(x) to be Lisp_Object x; i.e. just a slot - definition. In the garbage collector this file is included after - defining MARKED_SLOT(x) to be mark_object(console->x). */ +/* We define the Lisp_Objects in the console structure in a separate file + because there are numerous places we want to iterate over them, such + as when defining them in the structure, initializing them, or marking + them. + + To use, define MARKED_SLOT before including this file. No need to + undefine; that happens automatically. */ #ifndef CONSOLE_SLOTS_FIRST_NAME #define CONSOLE_SLOTS_FIRST_NAME name @@ -101,3 +104,4 @@ #define CONSOLE_SLOTS_LAST_NAME function_key_map #endif +#undef MARKED_SLOT diff --text -u 'xemacs-21.5.1/src/console-gtk.c' 'xemacs-21.5.2/src/console-gtk.c' Index: ././src/console-gtk.c --- ././src/console-gtk.c Fri Apr 13 03:23:29 2001 +++ ././src/console-gtk.c Fri May 25 20:26:53 2001 @@ -45,7 +45,7 @@ the integrity of our input, because the generic functions don't. */ static Lisp_Object -gtk_device_to_console_connection (Lisp_Object connection, Error_behavior errb) +gtk_device_to_console_connection (Lisp_Object connection, Error_Behavior errb) { /* Strip the trailing .# off of the connection, if it's there. */ @@ -60,7 +60,7 @@ static Lisp_Object gtk_semi_canonicalize_console_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { struct gcpro gcpro1; @@ -72,7 +72,7 @@ } static Lisp_Object -gtk_canonicalize_console_connection (Lisp_Object connection, Error_behavior errb) +gtk_canonicalize_console_connection (Lisp_Object connection, Error_Behavior errb) { Lisp_Object hostname = Qnil; struct gcpro gcpro1, gcpro2; @@ -86,7 +86,7 @@ static Lisp_Object gtk_semi_canonicalize_device_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { struct gcpro gcpro1; @@ -98,7 +98,7 @@ } static Lisp_Object -gtk_canonicalize_device_connection (Lisp_Object connection, Error_behavior errb) +gtk_canonicalize_device_connection (Lisp_Object connection, Error_Behavior errb) { struct gcpro gcpro1; diff --text -u 'xemacs-21.5.1/src/console-msw.c' 'xemacs-21.5.2/src/console-msw.c' Index: ././src/console-msw.c --- ././src/console-msw.c Fri Apr 13 03:23:29 2001 +++ ././src/console-msw.c Thu May 31 21:45:35 2001 @@ -1,5 +1,5 @@ /* Console functions for mswindows. - Copyright (C) 1996, 2000 Ben Wing. + Copyright (C) 1996, 2000, 2001 Ben Wing. This file is part of XEmacs. @@ -148,7 +148,7 @@ static Lisp_Object mswindows_canonicalize_console_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { /* Do not allow more than one mswindows device, by explicitly requiring that CONNECTION is nil, the only allowed connection in @@ -156,7 +156,7 @@ if (!NILP (connection)) { if (ERRB_EQ (errb, ERROR_ME)) - signal_simple_error + invalid_argument ("Invalid (non-nil) connection for mswindows device/console", connection); else @@ -168,7 +168,7 @@ static Lisp_Object mswindows_canonicalize_device_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { return mswindows_canonicalize_console_connection (connection, errb); } @@ -530,14 +530,14 @@ #undef FROB else - signal_simple_error ("Unrecognized flag", st); + invalid_constant ("Unrecognized flag", st); } { int retval = MessageBox (NULL, msgout, titleout, sty); if (retval == 0) - error ("Out of memory when calling `mswindows-message-box'"); + out_of_memory ("When calling `mswindows-message-box'", Qunbound); #define FROB(sym, val) if (retval == val) return sym FROB (Qabort, IDABORT); @@ -549,33 +549,56 @@ FROB (Qyes, IDYES); #undef FROB - signal_simple_error ("Unknown return value from MessageBox()", - make_int (retval)); + invalid_argument ("Unknown return value from MessageBox()", + make_int (retval)); } return Qnil; } -void -mswindows_output_last_error (char *frob) +Lisp_Object +mswindows_lisp_error (int errnum) { - LPVOID lpMsgBuf; - int errval = GetLastError(); + LPTSTR lpMsgBuf; + Lisp_Object result; + Bufbyte *inres; + Bytecount len; FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, errval, + NULL, errnum, + /* !!#### not Mule-correct */ MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), + /* yeah, i'm casting a char ** to a char *. ya gotta + problem widdat? */ (LPTSTR) &lpMsgBuf, 0, NULL); + + TO_INTERNAL_FORMAT (C_STRING, lpMsgBuf, ALLOCA, (inres, len), + Qmswindows_tstr); + /* Messages tend to end with a period and newline */ + if (len >= 3 && !bufbyte_strcmp (inres + len - 3, ".\r\n")) + len -= 3; + result = make_string (inres, len); + + LocalFree (lpMsgBuf); + return result; +} + +void +mswindows_output_last_error (char *frob) +{ + int errval = GetLastError (); + Lisp_Object errmess = mswindows_lisp_error (errval); + stderr_out ("last error during %s is %d: %s\n", - frob, errval, (char*)lpMsgBuf); + frob, errval, XSTRING_DATA (errmess)); } static Lisp_Object msprinter_canonicalize_console_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { /* If nil connection is specified, transform it into the name of the default printer */ @@ -585,7 +608,8 @@ if (NILP (connection)) { if (ERRB_EQ (errb, ERROR_ME)) - error ("There is no default printer in the system"); + invalid_state ("There is no default printer in the system", + Qunbound); else return Qunbound; } @@ -597,7 +621,7 @@ static Lisp_Object msprinter_canonicalize_device_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { return msprinter_canonicalize_console_connection (connection, errb); } @@ -612,40 +636,40 @@ { DEFSUBR (Fmswindows_debugging_output); - defsymbol (&Qabortretryignore, "abortretryignore"); - defsymbol (&Qapplmodal, "applmodal"); - defsymbol (&Qdefault_desktop_only, "default-desktop-only"); - defsymbol (&Qdefbutton1, "defbutton1"); - defsymbol (&Qdefbutton2, "defbutton2"); - defsymbol (&Qdefbutton3, "defbutton3"); - defsymbol (&Qdefbutton4, "defbutton4"); - /* defsymbol (&Qhelp, "help"); */ - defsymbol (&Qiconasterisk, "iconasterisk"); - defsymbol (&Qiconexclamation, "iconexclamation"); - defsymbol (&Qiconhand, "iconhand"); - defsymbol (&Qiconinformation, "iconinformation"); - defsymbol (&Qiconquestion, "iconquestion"); - defsymbol (&Qiconstop, "iconstop"); - /* defsymbol (&Qok, "ok"); */ - defsymbol (&Qokcancel, "okcancel"); - defsymbol (&Qretrycancel, "retrycancel"); - /* defsymbol (&Qright, "right"); */ - defsymbol (&Qrtlreading, "rtlreading"); - defsymbol (&Qservice_notification, "service-notification"); - defsymbol (&Qsetforeground, "setforeground"); - defsymbol (&Qsystemmodal, "systemmodal"); - defsymbol (&Qtaskmodal, "taskmodal"); - defsymbol (&Qtopmost, "topmost"); - defsymbol (&Qyesno, "yesno"); - defsymbol (&Qyesnocancel, "yesnocancel"); - - /* defsymbol (&Qabort, "abort"); */ - /* defsymbol (&Qcancel, "cancel"); */ - /* defsymbol (&Qignore, "ignore"); */ - /* defsymbol (&Qno, "no"); */ - /* defsymbol (&Qok, "ok"); */ - /* defsymbol (&Qretry, "retry"); */ - /* defsymbol (&Qyes, "yes"); */ + DEFSYMBOL (Qabortretryignore); + DEFSYMBOL (Qapplmodal); + DEFSYMBOL (Qdefault_desktop_only); + DEFSYMBOL (Qdefbutton1); + DEFSYMBOL (Qdefbutton2); + DEFSYMBOL (Qdefbutton3); + DEFSYMBOL (Qdefbutton4); + /* DEFSYMBOL (Qhelp); */ + DEFSYMBOL (Qiconasterisk); + DEFSYMBOL (Qiconexclamation); + DEFSYMBOL (Qiconhand); + DEFSYMBOL (Qiconinformation); + DEFSYMBOL (Qiconquestion); + DEFSYMBOL (Qiconstop); + /* DEFSYMBOL (Qok); */ + DEFSYMBOL (Qokcancel); + DEFSYMBOL (Qretrycancel); + /* DEFSYMBOL (Qright); */ + DEFSYMBOL (Qrtlreading); + DEFSYMBOL (Qservice_notification); + DEFSYMBOL (Qsetforeground); + DEFSYMBOL (Qsystemmodal); + DEFSYMBOL (Qtaskmodal); + DEFSYMBOL (Qtopmost); + DEFSYMBOL (Qyesno); + DEFSYMBOL (Qyesnocancel); + + /* DEFSYMBOL (Qabort); */ + /* DEFSYMBOL (Qcancel); */ + /* DEFSYMBOL (Qignore); */ + /* DEFSYMBOL (Qno); */ + /* DEFSYMBOL (Qok); */ + /* DEFSYMBOL (Qretry); */ + /* DEFSYMBOL (Qyes); */ DEFSUBR (Fmswindows_message_box); } diff --text -u 'xemacs-21.5.1/src/console-msw.h' 'xemacs-21.5.2/src/console-msw.h' Index: ././src/console-msw.h --- ././src/console-msw.h Mon May 7 16:52:01 2001 +++ ././src/console-msw.h Mon Jun 18 16:10:11 2001 @@ -83,6 +83,7 @@ DECLARE_LRECORD (devmode, Lisp_Devmode); #define XDEVMODE(x) XRECORD (x, devmode, Lisp_Devmode) #define XSETDEVMODE(x, p) XSETRECORD (x, p, devmode) +#define wrap_devmode(p) wrap_record (p, devmode) #define DEVMODEP(x) RECORDP (x, devmode) #define CHECK_DEVMODE(x) CHECK_RECORD (x, devmode) #define CONCHECK_DEVMODE(x) CONCHECK_RECORD (x, devmode) @@ -273,8 +274,8 @@ #define FRAME_MSPRINTER_BOTTOM_MARGIN(f) (FRAME_MSPRINTER_DATA (f)->bottom_margin) #define FRAME_MSPRINTER_JOB_STARTED(f) (FRAME_MSPRINTER_DATA (f)->job_started) #define FRAME_MSPRINTER_PAGE_STARTED(f) (FRAME_MSPRINTER_DATA (f)->page_started) -#define FRAME_MSPRINTER_CHARWIDTH(f) (FRAME_MSPRINTER_DATA (f)->charheight) -#define FRAME_MSPRINTER_CHARHEIGHT(f) (FRAME_MSPRINTER_DATA (f)->charwidth) +#define FRAME_MSPRINTER_CHARWIDTH(f) (FRAME_MSPRINTER_DATA (f)->charwidth) +#define FRAME_MSPRINTER_CHARHEIGHT(f) (FRAME_MSPRINTER_DATA (f)->charheight) #define FRAME_MSPRINTER_PIXLEFT(f) (FRAME_MSPRINTER_DATA (f)->pix_left) #define FRAME_MSPRINTER_PIXTOP(f) (FRAME_MSPRINTER_DATA (f)->pix_top) @@ -371,6 +372,10 @@ int mswindows_windows9x_p (void); void mswindows_output_last_error (char *frob); +DOESNT_RETURN mswindows_report_process_error (const char *string, + Lisp_Object data, + int errnum); +Lisp_Object mswindows_lisp_error (int errnum); Lisp_Object mswindows_handle_print_dialog_box (struct frame *f, Lisp_Object keys); @@ -385,6 +390,8 @@ Lisp_Object msprinter_default_printer (void); +Lisp_Object mswindows_find_frame (HWND hwnd); + struct mswindows_dialog_id { struct lcrecord_header header; @@ -397,6 +404,7 @@ DECLARE_LRECORD (mswindows_dialog_id, struct mswindows_dialog_id); #define XMSWINDOWS_DIALOG_ID(x) XRECORD (x, mswindows_dialog_id, struct mswindows_dialog_id) #define XSETMSWINDOWS_DIALOG_ID(x, p) XSETRECORD (x, p, mswindows_dialog_id) +#define wrap_mswindows_dialog_id(p) wrap_record (p, mswindows_dialog_id) #define MSWINDOWS_DIALOG_IDP(x) RECORDP (x, mswindows_dialog_id) #define CHECK_MSWINDOWS_DIALOG_ID(x) CHECK_RECORD (x, mswindows_dialog_id) #define CONCHECK_MSWINDOWS_DIALOG_ID(x) CONCHECK_RECORD (x, mswindows_dialog_id) diff --text -u 'xemacs-21.5.1/src/console-stream.c' 'xemacs-21.5.2/src/console-stream.c' Index: ././src/console-stream.c --- ././src/console-stream.c Fri Apr 13 03:23:30 2001 +++ ././src/console-stream.c Fri May 25 20:26:53 2001 @@ -73,7 +73,7 @@ this descriptor. */ fopen ((char *) XSTRING_DATA (tty), READ_PLUS_TEXT); if (!stream_con->in) - error ("Unable to open tty %s", XSTRING_DATA (tty)); + signal_error (Qio_error, "Unable to open tty", tty); } } @@ -118,14 +118,14 @@ Lisp_Object stream_semi_canonicalize_console_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { return NILP (connection) ? Vstdio_str : connection; } Lisp_Object stream_canonicalize_console_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { if (NILP (connection) || internal_equal (connection, Vstdio_str, 0)) return Vstdio_str; @@ -143,14 +143,14 @@ Lisp_Object stream_semi_canonicalize_device_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { return stream_semi_canonicalize_console_connection (connection, errb); } Lisp_Object stream_canonicalize_device_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { return stream_canonicalize_console_connection (connection, errb); } @@ -162,7 +162,7 @@ #if 0 struct device *d = XDEVICE (FRAME_DEVICE (f)); if (!NILP (DEVICE_FRAME_LIST (d))) - error ("Only one frame allowed on stream devices"); + invalid_operation ("Only one frame allowed on stream devices", Qunbound); #endif f->name = build_string ("stream"); f->height = 80; diff --text -u 'xemacs-21.5.1/src/console-stream.h' 'xemacs-21.5.2/src/console-stream.h' Index: ././src/console-stream.h --- ././src/console-stream.h Fri Apr 13 03:23:30 2001 +++ ././src/console-stream.h Fri May 25 20:26:53 2001 @@ -43,11 +43,11 @@ extern Lisp_Object Vterminal_console, Vterminal_frame, Vterminal_device; Lisp_Object stream_semi_canonicalize_console_connection(Lisp_Object, - Error_behavior); + Error_Behavior); Lisp_Object stream_canonicalize_console_connection(Lisp_Object, - Error_behavior); + Error_Behavior); Lisp_Object stream_semi_canonicalize_device_connection(Lisp_Object, - Error_behavior); + Error_Behavior); Lisp_Object stream_canonicalize_device_connection(Lisp_Object, - Error_behavior); + Error_Behavior); #endif /* INCLUDED_console_stream_h_ */ diff --text -u 'xemacs-21.5.1/src/console-tty.c' 'xemacs-21.5.2/src/console-tty.c' Index: ././src/console-tty.c --- ././src/console-tty.c Fri Apr 13 03:23:30 2001 +++ ././src/console-tty.c Fri May 25 20:26:53 2001 @@ -83,7 +83,7 @@ if (!temp_type) { - error ("Cannot determine terminal type"); + invalid_state ("Cannot determine terminal type", Qunbound); } else terminal_type = build_string (temp_type); @@ -109,7 +109,7 @@ tty_con->infd = tty_con->outfd = open ((char *) XSTRING_DATA (tty), O_RDWR); if (tty_con->infd < 0) - error ("Unable to open tty %s", XSTRING_DATA (tty)); + signal_error (Qio_error, "Unable to open tty", tty); tty_con->is_stdio = 0; } @@ -303,28 +303,28 @@ Lisp_Object tty_semi_canonicalize_console_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { return stream_semi_canonicalize_console_connection (connection, errb); } Lisp_Object tty_canonicalize_console_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { return stream_canonicalize_console_connection (connection, errb); } Lisp_Object tty_semi_canonicalize_device_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { return stream_semi_canonicalize_console_connection (connection, errb); } Lisp_Object tty_canonicalize_device_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { return stream_canonicalize_console_connection (connection, errb); } @@ -339,8 +339,8 @@ { DEFSUBR (Fconsole_tty_terminal_type); DEFSUBR (Fconsole_tty_controlling_process); - defsymbol (&Qterminal_type, "terminal-type"); - defsymbol (&Qcontrolling_process, "controlling-process"); + DEFSYMBOL (Qterminal_type); + DEFSYMBOL (Qcontrolling_process); #ifdef FILE_CODING DEFSUBR (Fconsole_tty_output_coding_system); DEFSUBR (Fset_console_tty_output_coding_system); diff --text -u 'xemacs-21.5.1/src/console-tty.h' 'xemacs-21.5.2/src/console-tty.h' Index: ././src/console-tty.h --- ././src/console-tty.h Fri Apr 13 03:23:30 2001 +++ ././src/console-tty.h Fri May 25 20:26:53 2001 @@ -280,13 +280,13 @@ /* called from console-stream.c */ Lisp_Object tty_semi_canonicalize_console_connection (Lisp_Object connection, - Error_behavior errb); + Error_Behavior errb); Lisp_Object tty_canonicalize_console_connection (Lisp_Object connection, - Error_behavior errb); + Error_Behavior errb); Lisp_Object tty_semi_canonicalize_device_connection (Lisp_Object connection, - Error_behavior errb); + Error_Behavior errb); Lisp_Object tty_canonicalize_device_connection (Lisp_Object connection, - Error_behavior errb); + Error_Behavior errb); struct console * tty_find_console_from_fd (int fd); #endif /* INCLUDED_console_tty_h_ */ diff --text -u 'xemacs-21.5.1/src/console-x.c' 'xemacs-21.5.2/src/console-x.c' Index: ././src/console-x.c --- ././src/console-x.c Fri Apr 13 03:23:30 2001 +++ ././src/console-x.c Fri May 25 20:26:53 2001 @@ -86,7 +86,7 @@ the integrity of our input, because the generic functions don't. */ static Lisp_Object -x_device_to_console_connection (Lisp_Object connection, Error_behavior errb) +x_device_to_console_connection (Lisp_Object connection, Error_Behavior errb) { /* Strip the trailing .# off of the connection, if it's there. */ @@ -141,8 +141,7 @@ if (elt + 1 == argc) { suppress_early_error_handler_backtrace = 1; - type_error (Qinvalid_argument, - "-display specified with no arg"); + invalid_argument ("-display specified with no arg", Qunbound); } else { @@ -168,7 +167,7 @@ static Lisp_Object x_semi_canonicalize_console_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { struct gcpro gcpro1; @@ -219,7 +218,7 @@ } static Lisp_Object -x_canonicalize_console_connection (Lisp_Object connection, Error_behavior errb) +x_canonicalize_console_connection (Lisp_Object connection, Error_Behavior errb) { Lisp_Object hostname = Qnil; struct gcpro gcpro1, gcpro2; @@ -247,7 +246,7 @@ static Lisp_Object x_semi_canonicalize_device_connection (Lisp_Object connection, - Error_behavior errb) + Error_Behavior errb) { int hostname_length, display_length, screen_length; struct gcpro gcpro1; @@ -275,7 +274,7 @@ } static Lisp_Object -x_canonicalize_device_connection (Lisp_Object connection, Error_behavior errb) +x_canonicalize_device_connection (Lisp_Object connection, Error_Behavior errb) { int hostname_length, display_length, screen_length; Lisp_Object screen_str = Qnil; diff --text -u 'xemacs-21.5.1/src/console-x.h' 'xemacs-21.5.2/src/console-x.h' Index: ././src/console-x.h --- ././src/console-x.h Fri Apr 13 03:23:30 2001 +++ ././src/console-x.h Thu May 31 21:45:35 2001 @@ -427,6 +427,9 @@ int x_initialize_frame_menubar (struct frame *f); void x_init_modifier_mapping (struct device *d); +int x_frame_window_state (struct frame *f); + + #define X_ERROR_OCCURRED(dpy, body) \ (expect_x_error (dpy), body, x_error_occurred_p (dpy)) diff --text -u 'xemacs-21.5.1/src/console.c' 'xemacs-21.5.2/src/console.c' Index: ././src/console.c --- ././src/console.c Fri Apr 13 03:23:30 2001 +++ ././src/console.c Mon Jun 18 16:10:12 2001 @@ -104,7 +104,6 @@ #define MARKED_SLOT(x) mark_object (con->x) #include "conslots.h" -#undef MARKED_SLOT /* Can be zero for Vconsole_defaults, Vconsole_local_symbols */ if (con->conmeths) @@ -123,8 +122,8 @@ char buf[256]; if (print_readably) - error ("printing unreadable object #", - XSTRING_DATA (con->name), con->header.uid); + printing_unreadable_object ("#", + XSTRING_DATA (con->name), con->header.uid); sprintf (buf, "#<%s-console", !CONSOLE_LIVE_P (con) ? "dead" : CONSOLE_TYPE_NAME (con)); @@ -176,7 +175,7 @@ struct console_methods * -decode_console_type (Lisp_Object type, Error_behavior errb) +decode_console_type (Lisp_Object type, Error_Behavior errb) { int i; @@ -184,7 +183,7 @@ if (EQ (type, Dynarr_at (the_console_type_entry_dynarr, i).symbol)) return Dynarr_at (the_console_type_entry_dynarr, i).meths; - maybe_signal_simple_error ("Invalid console type", type, Qconsole, errb); + maybe_invalid_constant ("Invalid console type", type, Qconsole, errb); return 0; } @@ -281,10 +280,10 @@ Fselect_window (FRAME_SELECTED_WINDOW (f), Qnil); } else - error ("Can't select console with no frames."); + invalid_operation ("Can't select console with no frames", Qunbound); } else - error ("Can't select a console with no devices"); + invalid_operation ("Can't select a console with no devices", Qunbound); return Qnil; } @@ -358,7 +357,7 @@ static Lisp_Object semi_canonicalize_console_connection (struct console_methods *meths, - Lisp_Object name, Error_behavior errb) + Lisp_Object name, Error_Behavior errb) { if (HAS_CONTYPE_METH_P (meths, semi_canonicalize_console_connection)) return CONTYPE_METH (meths, semi_canonicalize_console_connection, @@ -370,7 +369,7 @@ static Lisp_Object canonicalize_console_connection (struct console_methods *meths, - Lisp_Object name, Error_behavior errb) + Lisp_Object name, Error_Behavior errb) { if (HAS_CONTYPE_METH_P (meths, canonicalize_console_connection)) return CONTYPE_METH (meths, canonicalize_console_connection, @@ -461,9 +460,9 @@ if (NILP (console)) { if (NILP (type)) - signal_simple_error ("No such console", connection); + invalid_argument ("No such console", connection); else - signal_simple_error_2 ("No such console", type, connection); + invalid_argument_2 ("No such console", type, connection); } return console; } @@ -580,6 +579,15 @@ LISP_TO_VOID (console)); } +static void +nuke_all_console_slots (struct console *con, Lisp_Object zap) +{ + zero_lcrecord (con); + +#define MARKED_SLOT(x) con->x = zap +#include "conslots.h" +} + /* Delete console CON. If FORCE is non-zero, allow deletion of the only frame. @@ -625,7 +633,7 @@ if (down_we_go) { if (!force) - error ("Attempt to delete the only frame"); + invalid_operation ("Attempt to delete the only frame", Qunbound); else if (from_io_error) { /* Mayday mayday! We're going down! */ @@ -719,7 +727,15 @@ MAYBE_CONMETH (con, delete_console, (con)); Vconsole_list = delq_no_quit (console, Vconsole_list); + RESET_CHANGED_SET_FLAGS; + + /* Nobody should be accessing anything in this object any more, and + making all Lisp_Objects Qnil allows for better GC'ing in case a + pointer to the dead console continues to hang around. Zero all + other structs in case someone tries to access something through + them. */ + nuke_all_console_slots (con, Qnil); con->conmeths = dead_console_methods; UNGCPRO; @@ -1107,14 +1123,14 @@ DEFSUBR (Fset_input_mode); DEFSUBR (Fcurrent_input_mode); - defsymbol (&Qconsolep, "consolep"); - defsymbol (&Qconsole_live_p, "console-live-p"); + DEFSYMBOL (Qconsolep); + DEFSYMBOL (Qconsole_live_p); - defsymbol (&Qcreate_console_hook, "create-console-hook"); - defsymbol (&Qdelete_console_hook, "delete-console-hook"); + DEFSYMBOL (Qcreate_console_hook); + DEFSYMBOL (Qdelete_console_hook); - defsymbol (&Qsuspend_hook, "suspend-hook"); - defsymbol (&Qsuspend_resume_hook, "suspend-resume-hook"); + DEFSYMBOL (Qsuspend_hook); + DEFSYMBOL (Qsuspend_resume_hook); } static const struct lrecord_description cte_description_1[] = { @@ -1203,37 +1219,38 @@ #endif } -/* The docstrings for DEFVAR_* are recorded externally by make-docfile. */ -#define DEFVAR_CONSOLE_LOCAL_1(lname, field_name, forward_type, magicfun) do { \ - static const struct symbol_value_forward I_hate_C = \ - { /* struct symbol_value_forward */ \ - { /* struct symbol_value_magic */ \ - { /* struct lcrecord_header */ \ - { /* struct lrecord_header */ \ - lrecord_type_symbol_value_forward, /* lrecord_type_index */ \ - 1, /* mark bit */ \ - 1, /* c_readonly bit */ \ - 1 /* lisp_readonly bit */ \ - }, \ - 0, /* next */ \ - 0, /* uid */ \ - 0 /* free */ \ - }, \ - &(console_local_flags.field_name), \ - forward_type \ - }, \ - magicfun \ - }; \ - \ - { \ - int offset = ((char *)symbol_value_forward_forward (&I_hate_C) \ - - (char *)&console_local_flags); \ - \ - defvar_magic (lname, &I_hate_C); \ - \ - *((Lisp_Object *)(offset + (char *)XCONSOLE (Vconsole_local_symbols))) \ - = intern (lname); \ - } \ +/* The docstrings for DEFVAR_* are recorded externally by make-docfile. */ \ +#define DEFVAR_CONSOLE_LOCAL_1(lname, field_name, forward_type, magicfun) \ +do { \ + static const struct symbol_value_forward I_hate_C = \ + { /* struct symbol_value_forward */ \ + { /* struct symbol_value_magic */ \ + { /* struct lcrecord_header */ \ + { /* struct lrecord_header */ \ + lrecord_type_symbol_value_forward, /* lrecord_type_index */ \ + 1, /* mark bit */ \ + 1, /* c_readonly bit */ \ + 1 /* lisp_readonly bit */ \ + }, \ + 0, /* next */ \ + 0, /* uid */ \ + 0 /* free */ \ + }, \ + &(console_local_flags.field_name), \ + forward_type \ + }, \ + magicfun \ + }; \ + \ + { \ + int offset = ((char *)symbol_value_forward_forward (&I_hate_C) \ + - (char *)&console_local_flags); \ + \ + defvar_magic (lname, &I_hate_C); \ + \ + *((Lisp_Object *)(offset + (char *)XCONSOLE (Vconsole_local_symbols))) \ + = intern (lname); \ + } \ } while (0) #define DEFVAR_CONSOLE_LOCAL_MAGIC(lname, field_name, magicfun) \ @@ -1254,16 +1271,6 @@ DEFVAR_CONSOLE_DEFAULTS_MAGIC (lname, field_name, 0) static void -nuke_all_console_slots (struct console *con, Lisp_Object zap) -{ - zero_lcrecord (con); - -#define MARKED_SLOT(x) con->x = zap -#include "conslots.h" -#undef MARKED_SLOT -} - -static void common_init_complex_vars_of_console (void) { /* Make sure all markable slots in console_defaults @@ -1467,5 +1474,4 @@ != !(NILP (XCONSOLE (Vconsole_local_symbols)->slot))) \ abort () #include "conslots.h" -#undef MARKED_SLOT } diff --text -u 'xemacs-21.5.1/src/console.h' 'xemacs-21.5.2/src/console.h' Index: ././src/console.h --- ././src/console.h Sat May 5 19:54:00 2001 +++ ././src/console.h Mon Jun 18 16:10:12 2001 @@ -63,11 +63,34 @@ extern const struct struct_description cted_description; extern const struct struct_description console_methods_description; + +/* + * Constants returned by device_implementation_flags_method + */ + +/* Set when device uses pixel-based geometry */ +#define XDEVIMPF_PIXEL_GEOMETRY 0x00000001L + +/* Indicates that the device is a printer */ +#define XDEVIMPF_IS_A_PRINTER 0x00000002L + +/* Do not automatically redisplay this device */ +#define XDEVIMPF_NO_AUTO_REDISPLAY 0x00000004L + +/* Do not delete the device when last frame's gone */ +#define XDEVIMPF_FRAMELESS_OK 0x00000008L + +/* Do not preempt resiaply of frame or device once it starts */ +#define XDEVIMPF_DONT_PREEMPT_REDISPLAY 0x00000010L + struct console_methods { const char *name; /* Used by print_console, print_device, print_frame */ Lisp_Object symbol; Lisp_Object predicate_symbol; + unsigned int flags; /* Read-only implementation flags, set once upon + console type creation. INITIALIZE_CONSOLE_TYPE sets + this member to 0. */ /* console methods */ void (*init_console_method) (struct console *, Lisp_Object props); @@ -75,15 +98,15 @@ int (*initially_selected_for_input_method) (struct console *); void (*delete_console_method) (struct console *); Lisp_Object (*semi_canonicalize_console_connection_method) - (Lisp_Object connection, Error_behavior errb); + (Lisp_Object connection, Error_Behavior errb); Lisp_Object (*semi_canonicalize_device_connection_method) - (Lisp_Object connection, Error_behavior errb); + (Lisp_Object connection, Error_Behavior errb); Lisp_Object (*canonicalize_console_connection_method) - (Lisp_Object connection, Error_behavior errb); + (Lisp_Object connection, Error_Behavior errb); Lisp_Object (*canonicalize_device_connection_method) - (Lisp_Object connection, Error_behavior errb); + (Lisp_Object connection, Error_Behavior errb); Lisp_Object (*device_to_console_connection_method) - (Lisp_Object connection, Error_behavior errb); + (Lisp_Object connection, Error_Behavior errb); /* device methods */ void (*init_device_method) (struct device *, Lisp_Object props); @@ -93,7 +116,6 @@ void (*asynch_device_change_method) (void); Lisp_Object (*device_system_metrics_method) (struct device *, enum device_metrics); - unsigned int (*device_implementation_flags_method) (void); Lisp_Object (*own_selection_method)(Lisp_Object selection_name, Lisp_Object selection_value, Lisp_Object how_to_add, @@ -188,7 +210,7 @@ int (*initialize_color_instance_method) (Lisp_Color_Instance *, Lisp_Object name, Lisp_Object device, - Error_behavior errb); + Error_Behavior errb); void (*mark_color_instance_method) (Lisp_Color_Instance *); void (*print_color_instance_method) (Lisp_Color_Instance *, Lisp_Object printcharfun, @@ -206,14 +228,14 @@ int (*initialize_font_instance_method) (Lisp_Font_Instance *, Lisp_Object name, Lisp_Object device, - Error_behavior errb); + Error_Behavior errb); void (*mark_font_instance_method) (Lisp_Font_Instance *); void (*print_font_instance_method) (Lisp_Font_Instance *, Lisp_Object printcharfun, int escapeflag); void (*finalize_font_instance_method) (Lisp_Font_Instance *); Lisp_Object (*font_instance_truename_method) (Lisp_Font_Instance *, - Error_behavior errb); + Error_Behavior errb); Lisp_Object (*font_instance_properties_method) (Lisp_Font_Instance *); Lisp_Object (*list_fonts_method) (Lisp_Object pattern, Lisp_Object device); @@ -303,26 +325,12 @@ #endif }; -/* - * Constants returned by device_implementation_flags_method - */ - -/* Set when device uses pixel-based geometry */ -#define XDEVIMPF_PIXEL_GEOMETRY 0x00000001L - -/* Indicates that the device is a printer */ -#define XDEVIMPF_IS_A_PRINTER 0x00000002L - -/* Do not automatically redisplay this device */ -#define XDEVIMPF_NO_AUTO_REDISPLAY 0x00000004L - -/* Do not delete the device when last frame's gone */ -#define XDEVIMPF_FRAMELESS_OK 0x00000008L - +#define CONMETH_TYPE(meths) ((meths)->symbol) +#define CONMETH_IMPL_FLAG(meths, f) ((meths)->flags & (f)) #define CONSOLE_TYPE_NAME(c) ((c)->conmeths->name) #define CONSOLE_TYPE(c) ((c)->conmeths->symbol) -#define CONMETH_TYPE(meths) ((meths)->symbol) +#define CONSOLE_IMPL_FLAG(c, f) CONMETH_IMPL_FLAG ((c)->conmeths, (f)) /******** Accessing / calling a console method *********/ @@ -407,6 +415,10 @@ #define CONSOLE_INHERITS_METHOD(type, fromtype, m) \ (type##_console_methods->m##_method = fromtype##_##m) +/* Define console type implementation flags */ +#define CONSOLE_IMPLEMENTATION_FLAGS(type, flg) \ + (type##_console_methods->flags = flg) + struct console { struct lcrecord_header header; @@ -431,7 +443,6 @@ #define MARKED_SLOT(x) Lisp_Object x #include "conslots.h" -#undef MARKED_SLOT /* Where to store the next keystroke of the macro. Index into con->kbd_macro_builder. */ @@ -452,6 +463,7 @@ DECLARE_LRECORD (console, struct console); #define XCONSOLE(x) XRECORD (x, console, struct console) #define XSETCONSOLE(x, p) XSETRECORD (x, p, console) +#define wrap_console(p) wrap_record (p, console) #define CONSOLEP(x) RECORDP (x, console) #define CHECK_CONSOLE(x) CHECK_RECORD (x, console) #define CONCHECK_CONSOLE(x) CONCHECK_RECORD (x, console) @@ -612,7 +624,7 @@ void add_entry_to_console_type_list (Lisp_Object symbol, struct console_methods *type); struct console_methods *decode_console_type (Lisp_Object type, - Error_behavior errb); + Error_Behavior errb); void delete_console_internal (struct console *con, int force, int from_kill_emacs, int from_io_error); void io_error_delete_console (Lisp_Object console); diff --text -u 'xemacs-21.5.1/src/data.c' 'xemacs-21.5.2/src/data.c' Index: ././src/data.c --- ././src/data.c Fri Apr 13 03:23:31 2001 +++ ././src/data.c Sun Jun 10 19:42:30 2001 @@ -1,7 +1,7 @@ /* Primitive operations on Lisp data types for XEmacs Lisp interpreter. Copyright (C) 1985, 1986, 1988, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. - Copyright (C) 2000 Ben Wing. + Copyright (C) 2000, 2001 Ben Wing. This file is part of XEmacs. @@ -41,19 +41,21 @@ Lisp_Object Qnil, Qt, Qquote, Qlambda, Qunbound; Lisp_Object Qerror_conditions, Qerror_message; Lisp_Object Qerror, Qquit, Qsyntax_error, Qinvalid_read_syntax; -Lisp_Object Qlist_formation_error; +Lisp_Object Qlist_formation_error, Qstructure_formation_error; Lisp_Object Qmalformed_list, Qmalformed_property_list; Lisp_Object Qcircular_list, Qcircular_property_list; -Lisp_Object Qinvalid_argument, Qwrong_type_argument, Qargs_out_of_range; +Lisp_Object Qinvalid_argument, Qinvalid_constant, Qwrong_type_argument; +Lisp_Object Qargs_out_of_range; Lisp_Object Qwrong_number_of_arguments, Qinvalid_function, Qno_catch; -Lisp_Object Qinternal_error, Qinvalid_state; +Lisp_Object Qinternal_error, Qinvalid_state, Qstack_overflow, Qout_of_memory; Lisp_Object Qvoid_variable, Qcyclic_variable_indirection; Lisp_Object Qvoid_function, Qcyclic_function_indirection; -Lisp_Object Qinvalid_operation, Qinvalid_change; +Lisp_Object Qinvalid_operation, Qinvalid_change, Qprinting_unreadable_object; Lisp_Object Qsetting_constant; Lisp_Object Qediting_error; Lisp_Object Qbeginning_of_buffer, Qend_of_buffer, Qbuffer_read_only; -Lisp_Object Qio_error, Qend_of_file; +Lisp_Object Qio_error, Qfile_error, Qconversion_error, Qend_of_file; +Lisp_Object Qtext_conversion_error; Lisp_Object Qarith_error, Qrange_error, Qdomain_error; Lisp_Object Qsingularity_error, Qoverflow_error, Qunderflow_error; Lisp_Object Qintegerp, Qnatnump, Qsymbolp; @@ -65,6 +67,7 @@ Lisp_Object Qnumberp, Qnumber_char_or_marker_p; Lisp_Object Qbit_vectorp, Qbitp, Qcdr; +Lisp_Object Qerror_lacks_explanatory_string; Lisp_Object Qfloatp; #ifdef DEBUG_XEMACS @@ -113,7 +116,7 @@ DOESNT_RETURN dead_wrong_type_argument (Lisp_Object predicate, Lisp_Object value) { - signal_error (Qwrong_type_argument, list2 (predicate, value)); + signal_error_1 (Qwrong_type_argument, list2 (predicate, value)); } DEFUN ("wrong-type-argument", Fwrong_type_argument, 2, 2, 0, /* @@ -131,25 +134,27 @@ DOESNT_RETURN c_write_error (Lisp_Object obj) { - signal_simple_error ("Attempt to modify read-only object (c)", obj); + signal_error (Qsetting_constant, + "Attempt to modify read-only object (c)", obj); } DOESNT_RETURN lisp_write_error (Lisp_Object obj) { - signal_simple_error ("Attempt to modify read-only object (lisp)", obj); + signal_error (Qsetting_constant, + "Attempt to modify read-only object (lisp)", obj); } DOESNT_RETURN args_out_of_range (Lisp_Object a1, Lisp_Object a2) { - signal_error (Qargs_out_of_range, list2 (a1, a2)); + signal_error_1 (Qargs_out_of_range, list2 (a1, a2)); } DOESNT_RETURN args_out_of_range_3 (Lisp_Object a1, Lisp_Object a2, Lisp_Object a3) { - signal_error (Qargs_out_of_range, list3 (a1, a2, a3)); + signal_error_1 (Qargs_out_of_range, list3 (a1, a2, a3)); } void @@ -1008,8 +1013,6 @@ */ (number)) { - char buffer[VALBITS]; - CHECK_INT_OR_FLOAT (number); #ifdef LISP_FLOAT_TYPE @@ -1022,8 +1025,12 @@ } #endif /* LISP_FLOAT_TYPE */ - long_to_string (buffer, XINT (number)); - return build_string (buffer); + { + char buffer[DECIMAL_PRINT_SIZE (long)]; + + long_to_string (buffer, XINT (number)); + return build_string (buffer); + } } static int @@ -1582,7 +1589,7 @@ print_weak_list (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { if (print_readably) - error ("printing unreadable object #"); + printing_unreadable_object ("#"); write_c_string ("#type), @@ -1910,7 +1917,7 @@ if (EQ (symbol, Qvalue_assoc)) return WEAK_LIST_VALUE_ASSOC; if (EQ (symbol, Qfull_assoc)) return WEAK_LIST_FULL_ASSOC; - signal_simple_error ("Invalid weak list type", symbol); + invalid_constant ("Invalid weak list type", symbol); return WEAK_LIST_SIMPLE; /* not reached */ } @@ -2011,7 +2018,7 @@ { EMACS_REESTABLISH_SIGNAL (signo, arith_error); EMACS_UNBLOCK_SIGNAL (signo); - signal_error (Qarith_error, Qnil); + signal_error (Qarith_error, 0, Qunbound); } void @@ -2025,9 +2032,9 @@ if (!initialized) return; #endif /* CANNOT_DUMP */ - signal (SIGFPE, arith_error); + EMACS_SIGNAL (SIGFPE, arith_error); #ifdef uts - signal (SIGEMT, arith_error); + EMACS_SIGNAL (SIGEMT, arith_error); #endif /* uts */ } @@ -2046,28 +2053,25 @@ DEFERROR (Qerror, "error", Qnil); DEFERROR_STANDARD (Qquit, Qnil); - DEFERROR (Qunimplemented, "Feature not yet implemented", Qerror); - DEFERROR_STANDARD (Qsyntax_error, Qerror); - DEFERROR_STANDARD (Qinvalid_read_syntax, Qsyntax_error); - DEFERROR_STANDARD (Qlist_formation_error, Qsyntax_error); + DEFERROR_STANDARD (Qinvalid_argument, Qerror); - /* Generated by list traversal macros */ + DEFERROR_STANDARD (Qsyntax_error, Qinvalid_argument); + DEFERROR_STANDARD (Qinvalid_read_syntax, Qsyntax_error); + DEFERROR_STANDARD (Qstructure_formation_error, Qsyntax_error); + DEFERROR_STANDARD (Qlist_formation_error, Qstructure_formation_error); DEFERROR_STANDARD (Qmalformed_list, Qlist_formation_error); DEFERROR_STANDARD (Qmalformed_property_list, Qmalformed_list); DEFERROR_STANDARD (Qcircular_list, Qlist_formation_error); DEFERROR_STANDARD (Qcircular_property_list, Qcircular_list); - DEFERROR_STANDARD (Qinvalid_argument, Qerror); DEFERROR_STANDARD (Qwrong_type_argument, Qinvalid_argument); DEFERROR_STANDARD (Qargs_out_of_range, Qinvalid_argument); DEFERROR_STANDARD (Qwrong_number_of_arguments, Qinvalid_argument); DEFERROR_STANDARD (Qinvalid_function, Qinvalid_argument); + DEFERROR_STANDARD (Qinvalid_constant, Qinvalid_argument); DEFERROR (Qno_catch, "No catch for tag", Qinvalid_argument); - DEFERROR_STANDARD (Qinternal_error, Qerror); - - DEFERROR (Qinvalid_state, "Properties or values have been set incorrectly", - Qerror); + DEFERROR_STANDARD (Qinvalid_state, Qerror); DEFERROR (Qvoid_function, "Symbol's function definition is void", Qinvalid_state); DEFERROR (Qcyclic_function_indirection, @@ -2078,22 +2082,27 @@ DEFERROR (Qcyclic_variable_indirection, "Symbol's chain of variable indirections contains a loop", Qinvalid_state); + DEFERROR_STANDARD (Qstack_overflow, Qinvalid_state); + DEFERROR_STANDARD (Qinternal_error, Qinvalid_state); + DEFERROR_STANDARD (Qout_of_memory, Qinvalid_state); - DEFERROR (Qinvalid_operation, - "Operation not allowed or error during operation", Qerror); - DEFERROR (Qinvalid_change, "Attempt to set properties or values incorrectly", - Qinvalid_operation); + DEFERROR_STANDARD (Qinvalid_operation, Qerror); + DEFERROR_STANDARD (Qinvalid_change, Qinvalid_operation); DEFERROR (Qsetting_constant, "Attempt to set a constant symbol", Qinvalid_change); + DEFERROR_STANDARD (Qprinting_unreadable_object, Qinvalid_operation); + DEFERROR (Qunimplemented, "Feature not yet implemented", Qinvalid_operation); - DEFERROR (Qediting_error, "Invalid operation during editing", - Qinvalid_operation); + DEFERROR_STANDARD (Qediting_error, Qinvalid_operation); DEFERROR_STANDARD (Qbeginning_of_buffer, Qediting_error); DEFERROR_STANDARD (Qend_of_buffer, Qediting_error); DEFERROR (Qbuffer_read_only, "Buffer is read-only", Qediting_error); DEFERROR (Qio_error, "IO Error", Qinvalid_operation); - DEFERROR (Qend_of_file, "End of file or stream", Qio_error); + DEFERROR_STANDARD (Qfile_error, Qio_error); + DEFERROR (Qend_of_file, "End of file or stream", Qfile_error); + DEFERROR_STANDARD (Qconversion_error, Qio_error); + DEFERROR_STANDARD (Qtext_conversion_error, Qconversion_error); DEFERROR (Qarith_error, "Arithmetic error", Qinvalid_operation); DEFERROR (Qrange_error, "Arithmetic range error", Qarith_error); @@ -2133,6 +2142,7 @@ DEFSYMBOL (Qnumberp); DEFSYMBOL (Qnumber_char_or_marker_p); DEFSYMBOL (Qcdr); + DEFSYMBOL (Qerror_lacks_explanatory_string); DEFSYMBOL_MULTIWORD_PREDICATE (Qweak_listp); #ifdef LISP_FLOAT_TYPE diff --text -u 'xemacs-21.5.1/src/database.c' 'xemacs-21.5.2/src/database.c' Index: ././src/database.c --- ././src/database.c Fri Apr 13 03:23:31 2001 +++ ././src/database.c Mon Jun 18 16:10:13 2001 @@ -28,7 +28,6 @@ #include "lisp.h" #include "sysfile.h" #include "buffer.h" -#include #ifndef HAVE_DATABASE #error HAVE_DATABASE not defined!! @@ -112,6 +111,7 @@ #define XDATABASE(x) XRECORD (x, database, Lisp_Database) #define XSETDATABASE(x, p) XSETRECORD (x, p, database) +#define wrap_database(p) wrap_record (p, database) #define DATABASEP(x) RECORDP (x, database) #define CHECK_DATABASE(x) CHECK_RECORD (x, database) #define CONCHECK_DATABASE(x) CONCHECK_RECORD (x, database) @@ -120,7 +120,7 @@ #define CHECK_LIVE_DATABASE(db) do { \ CHECK_DATABASE (db); \ if (!DATABASE_LIVE_P (XDATABASE(db))) \ - signal_simple_error ("Attempting to access closed database", db); \ + invalid_operation ("Attempting to access closed database", db); \ } while (0) @@ -160,7 +160,7 @@ Lisp_Database *db = XDATABASE (obj); if (print_readably) - error ("printing unreadable object #", db->header.uid); + printing_unreadable_object ("#", db->header.uid); write_c_string ("#fname, printcharfun, 0); @@ -184,7 +184,7 @@ Lisp_Object object; XSETDATABASE (object, db); - signal_simple_error + invalid_operation ("Can't dump an emacs containing database objects", object); } db->funcs->close (db); @@ -655,7 +655,7 @@ real_subtype = DB_QUEUE; #endif else - signal_simple_error ("Unsupported subtype", subtype); + invalid_constant ("Unsupported subtype", subtype); #if DB_VERSION_MAJOR == 1 dbase = dbopen (filename, accessmask, modemask, real_subtype, NULL); @@ -707,7 +707,7 @@ } #endif /* HAVE_BERKELEY_DB */ - signal_simple_error ("Unsupported database type", type); + invalid_constant ("Unsupported database type", type); return Qnil; db_done: @@ -787,19 +787,19 @@ { INIT_LRECORD_IMPLEMENTATION (database); - defsymbol (&Qdatabasep, "databasep"); + DEFSYMBOL (Qdatabasep); #ifdef HAVE_DBM - defsymbol (&Qdbm, "dbm"); + DEFSYMBOL (Qdbm); #endif #ifdef HAVE_BERKELEY_DB - defsymbol (&Qberkeley_db, "berkeley-db"); - defsymbol (&Qhash, "hash"); - defsymbol (&Qbtree, "btree"); - defsymbol (&Qrecno, "recno"); + DEFSYMBOL (Qberkeley_db); + DEFSYMBOL (Qhash); + DEFSYMBOL (Qbtree); + DEFSYMBOL (Qrecno); #if DB_VERSION_MAJOR > 2 - defsymbol (&Qqueue, "queue"); + DEFSYMBOL (Qqueue); #endif - defsymbol (&Qunknown, "unknown"); + DEFSYMBOL (Qunknown); #endif DEFSUBR (Fopen_database); diff --text -u 'xemacs-21.5.1/src/debug.c' 'xemacs-21.5.2/src/debug.c' Index: ././src/debug.c --- ././src/debug.c Fri Apr 13 03:23:31 2001 +++ ././src/debug.c Thu May 24 16:51:05 2001 @@ -97,7 +97,7 @@ (class)) { if (NILP (xemacs_debug_loop (X_VALIDATE, class, Qnil))) - error ("No such debug class exists"); + invalid_argument ("No such debug class exists", Qunbound); else xemacs_debug_loop (X_ADD, class, Qnil); @@ -110,7 +110,7 @@ (class)) { if (NILP (xemacs_debug_loop (X_VALIDATE, class, Qnil))) - error ("No such debug class exists"); + invalid_argument ("No such debug class exists", Qunbound); else xemacs_debug_loop (X_DELETE, class, Qnil); @@ -148,7 +148,7 @@ LIST_LOOP (rest, classes ) { if (NILP (xemacs_debug_loop (X_VALIDATE, XCAR (rest), Qnil))) - error ("Invalid object in class list"); + sferror ("Invalid object in class list", Qunbound); } LIST_LOOP (rest, classes) @@ -166,7 +166,7 @@ { CHECK_INT (type); if (NILP (xemacs_debug_loop (X_VALIDATE, class, Qnil))) - error ("Invalid debug class"); + invalid_argument ("Invalid debug class", Qunbound); xemacs_debug_loop (X_SETTYPE, class, type); @@ -179,7 +179,7 @@ (class)) { if (NILP (xemacs_debug_loop (X_VALIDATE, class, Qnil))) - error ("Invalid debug class"); + invalid_argument ("Invalid debug class", Qunbound); return (xemacs_debug_loop (X_TYPE, class, Qnil)); } @@ -187,12 +187,12 @@ void syms_of_debug (void) { - defsymbol (&Qredisplay, "redisplay"); - defsymbol (&Qbuffers, "buffers"); - defsymbol (&Qfaces, "faces"); - defsymbol (&Qwindows, "windows"); - defsymbol (&Qframes, "frames"); - defsymbol (&Qdevices, "devices"); + DEFSYMBOL (Qredisplay); + DEFSYMBOL (Qbuffers); + DEFSYMBOL (Qfaces); + DEFSYMBOL (Qwindows); + DEFSYMBOL (Qframes); + DEFSYMBOL (Qdevices); DEFSUBR (Fadd_debug_class_to_check); DEFSUBR (Fdelete_debug_class_to_check); diff --text -u 'xemacs-21.5.1/src/debug.h' 'xemacs-21.5.2/src/debug.h' Index: ././src/debug.h --- ././src/debug.h Fri Apr 13 03:23:32 2001 +++ ././src/debug.h Wed May 23 18:59:43 2001 @@ -30,8 +30,6 @@ #ifdef DEBUG_XEMACS -#include - struct debug_classes { unsigned int redisplay :1; diff --text -u 'xemacs-21.5.1/src/depend' 'xemacs-21.5.2/src/depend' Index: ././src/depend --- ././src/depend Mon May 7 16:52:02 2001 +++ ././src/depend Fri May 25 12:53:26 2001 @@ -10,10 +10,10 @@ console-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h events.h mule-charset.h opaque.h syscommctrl.h systime.h syswindows.h device-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h dialog-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h -dired-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h nt.h regex.h sysdir.h sysfile.h sysproc.h systime.h syswindows.h +dired-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h nt.h regex.h sysdir.h sysfile.h sysfloat.h sysproc.h systime.h syswindows.h event-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h menubar-msw.h menubar.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h select.h specifier.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h frame-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h -glyphs-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syswindows.h toolbar.h window.h winslots.h +glyphs-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h sysfile.h syswindows.h toolbar.h window.h winslots.h gui-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h menubar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h menubar-msw.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h objects-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h hash.h insdel.h mule-charset.h objects-msw.h objects.h specifier.h syscommctrl.h syswindows.h @@ -39,7 +39,7 @@ #endif #if defined(HAVE_TTY) console-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h -device-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h +device-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h objects-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h insdel.h mule-charset.h objects-tty.h objects.h specifier.h syssignal.h systty.h @@ -105,7 +105,7 @@ device.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h dgif_lib.o: $(LISP_H) gifrlib.h sysfile.h dialog.o: $(LISP_H) conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h -dired.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h elhash.h mule-charset.h ndir.h opaque.h regex.h syntax.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h +dired.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h elhash.h mule-charset.h ndir.h opaque.h regex.h syntax.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h syswindows.h doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h insdel.h keymap.h mule-charset.h sysfile.h doprnt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h lstream.h mule-charset.h dragdrop.o: $(LISP_H) dragdrop.h @@ -119,7 +119,7 @@ emacs-widget-accessors.o: emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h dumper.h frame.h frameslots.h glyphs.h gui.h mule-charset.h nt.h paths.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h syswindows.h toolbar.h window.h winslots.h emodules.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h toolbar.h window.h winslots.h -esd.o: $(LISP_H) miscplay.h +esd.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h conslots.h console.h mule-charset.h opaque.h event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console-x.h console.h device.h dragdrop.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.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 toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lstream.h macros.h menubar.h mule-charset.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h @@ -141,6 +141,7 @@ gif_io.o: config.h gifrlib.h sysfile.h glade.o: bytecode.h glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h +glyphs-shared.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h toolbar.h window.h winslots.h glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h gmalloc.o: config.h getpagesize.h @@ -151,7 +152,7 @@ gutter.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h hash.o: $(LISP_H) hash.h hftctl.o: $(LISP_H) -hpplay.o: $(LISP_H) nativesound.h +hpplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h imgproc.o: $(LISP_H) imgproc.h indent.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.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 frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lstream.h mule-charset.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h syscommctrl.h sysdll.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window.h winslots.h xintrinsic.h @@ -161,9 +162,9 @@ intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h lastfile.o: config.h -libsst.o: $(LISP_H) libsst.h +libsst.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h libsst.h mule-charset.h sound.h sysfile.h line-number.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h line-number.h mule-charset.h -linuxplay.o: $(LISP_H) miscplay.h nativesound.h sysfile.h syssignal.h +linuxplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h syssignal.h systty.h lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h elhash.h file-coding.h lstream.h mule-charset.h opaque.h sysfile.h sysfloat.h lstream.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h lstream.h mule-charset.h sysfile.h macros.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h keymap.h macros.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h @@ -172,42 +173,42 @@ md5.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h lstream.h mule-charset.h menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h keymap.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-stream.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h -miscplay.o: $(LISP_H) miscplay.h sysfile.h syssignal.h -nas.o: $(LISP_H) sysdep.h syssignal.h +miscplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h syssignal.h +nas.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h sysdep.h syssignal.h native-gtk-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h nt.o: $(LISP_H) ndir.h nt.h ntheap.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h ntheap.o: $(LISP_H) ntheap.h syswindows.h -ntplay.o: $(LISP_H) nativesound.h nt.h sysfile.h syswindows.h +ntplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h nt.h sound.h sysfile.h syswindows.h ntproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h mule-charset.h nt.h ntheap.h process.h syscommctrl.h sysfile.h sysproc.h syssignal.h systime.h syswait.h syswindows.h objects.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.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 chartab.h mule-charset.h postgresql.h sysdep.h print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-msw.h console-stream.h console-tty.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syssignal.h systty.h syswindows.h toolbar.h window.h winslots.h -process-nt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h hash.h lstream.h mule-charset.h nt.h process.h procimpl.h syscommctrl.h sysdep.h syswindows.h +process-nt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h hash.h lstream.h mule-charset.h nt.h process.h procimpl.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h syswindows.h process-unix.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h process.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h profile.o: $(LISP_H) backtrace.h bytecode.h elhash.h hash.h syssignal.h systime.h ralloc.o: $(LISP_H) getpagesize.h rangetab.o: $(LISP_H) rangetab.h -realpath.o: $(LISP_H) syswindows.h +realpath.o: $(LISP_H) sysfile.h syswindows.h redisplay-output.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h redisplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-tty.h console.h debug.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h menubar.h mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h regex.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h regex.h syntax.h scrollbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h search.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h opaque.h regex.h syntax.h select.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h toolbar.h window.h winslots.h -sgiplay.o: $(LISP_H) libst.h +sgiplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h libst.h mule-charset.h sound.h sysfile.h sysproc.h systime.h sheap.o: $(LISP_H) sheap-adjust.h signal.o: $(LISP_H) conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h -sound.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h mule-charset.h nativesound.h redisplay.h sysdep.h sysfile.h sysproc.h systime.h xintrinsic.h +sound.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h mule-charset.h redisplay.h sound.h sysdep.h sysfile.h sysproc.h systime.h xintrinsic.h specifier.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h strcat.o: config.h strcmp.o: config.h strcpy.o: config.h strftime.o: $(LISP_H) sunOS-fix.o: config.h -sunplay.o: $(LISP_H) nativesound.h sysdep.h syssignal.h +sunplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h sysdep.h sysfile.h syssignal.h sunpro.o: $(LISP_H) symbols.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h elhash.h mule-charset.h syntax.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h extents.h mule-charset.h syntax.h @@ -234,7 +235,7 @@ unexhp9k3.o: config.h sysdep.h unexhp9k800.o: $(LISP_H) unexmips.o: config.h getpagesize.h -unexnt.o: $(LISP_H) nt.h ntheap.h syswindows.h +unexnt.o: $(LISP_H) nt.h ntheap.h sysfile.h syswindows.h unexsunos4.o: config.h vm-limit.o: $(LISP_H) mem-limits.h widget.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h diff --text -u 'xemacs-21.5.1/src/device-gtk.c' 'xemacs-21.5.2/src/device-gtk.c' Index: ././src/device-gtk.c --- ././src/device-gtk.c Fri Apr 13 03:23:32 2001 +++ ././src/device-gtk.c Thu May 24 16:51:05 2001 @@ -198,7 +198,7 @@ getting an empty argv array causes them to abort. */ if (NILP (Vgtk_initial_argv_list)) { - signal_simple_error ("gtk-initial-argv-list must be set before creating Gtk devices", Vgtk_initial_argv_list); + invalid_operation ("gtk-initial-argv-list must be set before creating Gtk devices", Vgtk_initial_argv_list); return; } @@ -429,7 +429,7 @@ case GDK_VISUAL_TRUE_COLOR: return intern ("true-color"); case GDK_VISUAL_DIRECT_COLOR: return intern ("direct-color"); default: - error ("display has an unknown visual class"); + invalid_state ("display has an unknown visual class", Qunbound); return Qnil; /* suppress compiler warning */ } } @@ -520,7 +520,7 @@ struct device *d = decode_device (device); if (!DEVICE_GTK_P (d)) - signal_simple_error ("Not a GTK device", device); + gui_error ("Not a GTK device", device); return (NILP (Fgethash (keysym, DEVICE_GTK_DATA (d)->x_keysym_map_hashtable, Qnil)) ? Qnil : Qt); @@ -680,12 +680,6 @@ return (result); } -static unsigned int -gtk_device_implementation_flags (void) -{ - return 0; /* XDEVIMPF_PIXEL_GEOMETRY; */ -} - /************************************************************************/ /* initialization */ @@ -705,8 +699,8 @@ DEFSUBR (Fgtk_ungrab_keyboard); DEFSUBR (Fgtk_init); - defsymbol (&Qinit_pre_gtk_win, "init-pre-gtk-win"); - defsymbol (&Qinit_post_gtk_win, "init-post-gtk-win"); + DEFSYMBOL (Qinit_pre_gtk_win); + DEFSYMBOL (Qinit_post_gtk_win); } void @@ -717,7 +711,10 @@ CONSOLE_HAS_METHOD (gtk, mark_device); CONSOLE_HAS_METHOD (gtk, delete_device); CONSOLE_HAS_METHOD (gtk, device_system_metrics); - CONSOLE_HAS_METHOD (gtk, device_implementation_flags); + /* CONSOLE_IMPLEMENTATION_FLAGS (gtk, XDEVIMPF_PIXEL_GEOMETRY); */ + /* I inserted the above commented out statement, as the original + implementation of gtk_device_implementation_flags(), which I + deleted, contained commented out XDEVIMPF_PIXEL_GEOMETRY - kkm*/ } void diff --text -u 'xemacs-21.5.1/src/device-msw.c' 'xemacs-21.5.2/src/device-msw.c' Index: ././src/device-msw.c --- ././src/device-msw.c Mon May 7 16:52:05 2001 +++ ././src/device-msw.c Thu May 31 21:45:35 2001 @@ -340,12 +340,6 @@ return Qunbound; } -static unsigned int -mswindows_device_implementation_flags (void) -{ - return XDEVIMPF_PIXEL_GEOMETRY; -} - /************************************************************************/ /* printer helpers */ @@ -462,9 +456,10 @@ signal_open_printer_error (d); pdm = (DEVMODE*) xmalloc (dm_size); - DocumentProperties (NULL, DEVICE_MSPRINTER_HPRINTER(d), - printer_name, pdm, - NULL, DM_OUT_BUFFER); + if (DocumentProperties (NULL, DEVICE_MSPRINTER_HPRINTER(d), + printer_name, pdm, + NULL, DM_OUT_BUFFER) < 0) + signal_open_printer_error (d); assert (DEVMODE_SIZE (pdm) <= dm_size); @@ -533,14 +528,6 @@ mark_object (DEVICE_MSPRINTER_DEVMODE (d)); } -static unsigned int -msprinter_device_implementation_flags (void) -{ - return ( XDEVIMPF_PIXEL_GEOMETRY - | XDEVIMPF_IS_A_PRINTER - | XDEVIMPF_NO_AUTO_REDISPLAY - | XDEVIMPF_FRAMELESS_OK ); -} /************************************************************************/ /* printer Lisp subroutines */ @@ -585,7 +572,7 @@ Nothing wrong on the Windows side, just forge a unique connection name. Use the memory address of d as a unique suffix. */ - char* new_connext = alloca (strlen (devname + 11)); + Extbyte *new_connext = (Extbyte *) alloca (strlen (devname + 11)); sprintf (new_connext, "%s:%X", devname, d->header.uid); new_connection = build_ext_string (devname, Qmswindows_tstr); } @@ -629,7 +616,7 @@ DEVMODE* devmode = (DEVMODE*) GlobalLock (hDevMode); /* Size and name may have changed */ - ldm->devmode = xrealloc (ldm->devmode, DEVMODE_SIZE (devmode)); + ldm->devmode = (DEVMODE *) xrealloc (ldm->devmode, DEVMODE_SIZE (devmode)); if (new_name) { if (ldm->printer_name) @@ -644,7 +631,7 @@ if (!sync_printer_with_devmode (d, devmode, ldm->devmode, new_name)) { global_free_2_maybe (hDevNames, hDevMode); - error ("Printer device initialization I/O error, device deleted."); + signal_error (Qio_error, "Printer device initialization I/O error, device deleted", Qunbound); } } else @@ -772,17 +759,16 @@ else if (EQ (value, Qpages)) flags |= PD_PAGENUMS; else if (!EQ (value, Qall)) - invalid_argument ("Invalid value for :selected-page-button", - value); + invalid_constant ("for :selected-page-button", value); } else - syntax_error ("Unrecognized print-dialog keyword", key); + invalid_constant ("Unrecognized print-dialog keyword", key); } } if ((UNBOUNDP (device) && UNBOUNDP (settings)) || (!UNBOUNDP (device) && !UNBOUNDP (settings))) - syntax_error ("Exactly one of :device and :printer-settings must be given", + sferror ("Exactly one of :device and :printer-settings must be given", keys); return print_dialog_worker (!UNBOUNDP (device) ? device : settings, flags); @@ -842,13 +828,13 @@ plist = value; } else - syntax_error ("Unrecognized page-setup dialog keyword", key); + invalid_constant ("Unrecognized page-setup dialog keyword", key); } } if ((UNBOUNDP (device) && UNBOUNDP (settings)) || (!UNBOUNDP (device) && !UNBOUNDP (settings))) - syntax_error ("Exactly one of :device and :printer-settings must be given", + sferror ("Exactly one of :device and :printer-settings must be given", keys); if (UNBOUNDP (device)) @@ -950,11 +936,12 @@ DocumentProperties (NULL, DEVICE_MSPRINTER_HPRINTER(d), DEVICE_MSPRINTER_NAME(d), NULL, NULL, 0); if (dm_size <= 0) - invalid_operation ("Unable to specialize settings, printer error", - device); + signal_error (Qio_error, + "Unable to specialize settings, printer error", + device); assert (XDEVMODE_SIZE (ldm) <= dm_size); - ldm->devmode = xrealloc (ldm->devmode, dm_size); + ldm->devmode = (DEVMODE *) xrealloc (ldm->devmode, dm_size); } /* If we bail out on signal here, no damage is done, except that @@ -962,7 +949,9 @@ hold a larger one - not a big deal */ if (!sync_printer_with_devmode (d, ldm->devmode, ldm->devmode, ldm->printer_name)) - error ("Printer device initialization I/O error, device deleted."); + signal_error (Qio_error, + "Printer device initialization I/O error, device deleted", + Qunbound); if (ldm->printer_name == NULL) ldm->printer_name = xstrdup (DEVICE_MSPRINTER_NAME(d)); @@ -1019,7 +1008,9 @@ if (!sync_printer_with_devmode (d, ldm_new->devmode, ldm_current->devmode, ldm_new->printer_name)) - error ("Printer device initialization I/O error, device deleted."); + signal_error (Qio_error, + "Printer device initialization I/O error, device deleted", + Qunbound); if (ldm_new->printer_name != NULL) { @@ -1042,8 +1033,8 @@ char buf[100]; Lisp_Devmode *dm = XDEVMODE (obj); if (print_readably) - error ("printing unreadable object #", - dm->header.uid); + printing_unreadable_object ("#", + dm->header.uid); write_c_string ("#printer_name) { @@ -1231,7 +1222,7 @@ if (GetLastError () != ERROR_INSUFFICIENT_BUFFER) signal_enum_printer_error (); - data_buf = alloca (bytes_needed); + data_buf = (BYTE *) alloca (bytes_needed); ok = EnumPrinters (enum_flags, NULL, enum_level, data_buf, bytes_needed, &bytes_needed, &num_printers); if (!ok) @@ -1304,13 +1295,17 @@ CONSOLE_HAS_METHOD (mswindows, mark_device); CONSOLE_HAS_METHOD (mswindows, delete_device); CONSOLE_HAS_METHOD (mswindows, device_system_metrics); - CONSOLE_HAS_METHOD (mswindows, device_implementation_flags); + CONSOLE_IMPLEMENTATION_FLAGS (mswindows, XDEVIMPF_PIXEL_GEOMETRY); CONSOLE_HAS_METHOD (msprinter, init_device); CONSOLE_HAS_METHOD (msprinter, mark_device); CONSOLE_HAS_METHOD (msprinter, delete_device); CONSOLE_HAS_METHOD (msprinter, device_system_metrics); - CONSOLE_HAS_METHOD (msprinter, device_implementation_flags); + CONSOLE_IMPLEMENTATION_FLAGS (msprinter, (XDEVIMPF_PIXEL_GEOMETRY + | XDEVIMPF_IS_A_PRINTER + | XDEVIMPF_NO_AUTO_REDISPLAY + | XDEVIMPF_DONT_PREEMPT_REDISPLAY + | XDEVIMPF_FRAMELESS_OK)); } diff --text -u 'xemacs-21.5.1/src/device-tty.c' 'xemacs-21.5.2/src/device-tty.c' Index: ././src/device-tty.c --- ././src/device-tty.c Fri Apr 13 03:23:33 2001 +++ ././src/device-tty.c Sun Jun 10 19:42:30 2001 @@ -36,10 +36,9 @@ #include "redisplay.h" #include "sysdep.h" +#include "sysfile.h" #include "syssignal.h" /* for SIGWINCH */ -#include - Lisp_Object Qinit_pre_tty_win, Qinit_post_tty_win; @@ -66,22 +65,22 @@ #if 0 case TTY_UNABLE_OPEN_DATABASE: suppress_early_error_handler_backtrace = 1; - error ("Can't access terminal information database"); + signal_error (Qio_error, "Can't access terminal information database", Qunbound); break; #endif case TTY_TYPE_UNDEFINED: suppress_early_error_handler_backtrace = 1; - error ("Terminal type `%s' undefined (or can't access database?)", - XSTRING_DATA (terminal_type)); + signal_error (Qio_error, "Terminal type undefined (or can't access database?)", + terminal_type); break; case TTY_TYPE_INSUFFICIENT: suppress_early_error_handler_backtrace = 1; - error ("Terminal type `%s' not powerful enough to run Emacs", - XSTRING_DATA (terminal_type)); + signal_error (Qio_error, "Terminal type not powerful enough to run Emacs", + terminal_type); break; case TTY_SIZE_UNSPECIFIED: suppress_early_error_handler_backtrace = 1; - error ("Can't determine window size of terminal"); + signal_error (Qio_error, "Can't determine window size of terminal", Qunbound); break; case TTY_INIT_SUCCESS: break; @@ -189,8 +188,8 @@ void syms_of_device_tty (void) { - defsymbol (&Qinit_pre_tty_win, "init-pre-tty-win"); - defsymbol (&Qinit_post_tty_win, "init-post-tty-win"); + DEFSYMBOL (Qinit_pre_tty_win); + DEFSYMBOL (Qinit_post_tty_win); } void @@ -210,6 +209,6 @@ { #ifdef SIGWINCH if (initialized && !noninteractive) - signal (SIGWINCH, tty_device_size_change_signal); + EMACS_SIGNAL (SIGWINCH, tty_device_size_change_signal); #endif /* SIGWINCH */ } diff --text -u 'xemacs-21.5.1/src/device-x.c' 'xemacs-21.5.2/src/device-x.c' Index: ././src/device-x.c --- ././src/device-x.c Fri Apr 13 03:23:33 2001 +++ ././src/device-x.c Fri May 25 20:26:54 2001 @@ -211,7 +211,7 @@ app_name, (char *) value.addr, app_class, (char *) value.addr); suppress_early_error_handler_backtrace = 1; - error ("Invalid geometry resource"); + syntax_error ("Invalid geometry resource", Qunbound); } } @@ -568,7 +568,7 @@ if (dpy == 0) { suppress_early_error_handler_backtrace = 1; - signal_simple_error ("X server not responding\n", display); + gui_error ("X server not responding\n", display); } if (STRINGP (Vx_emacs_application_class) && @@ -1285,13 +1285,14 @@ if (NILP (locale)) locale = Qglobal; if (NILP (Fvalid_specifier_locale_p (locale))) - signal_simple_error ("Invalid locale", locale); + invalid_argument ("Invalid locale", locale); if (WINDOWP (locale)) /* #### I can't come up with any coherent way of naming windows. By relative position? That seems tricky because windows can change position, be split, etc. By order of creation? That seems less than useful. */ - signal_simple_error ("Windows currently can't be resourced", locale); + signal_error (Qunimplemented, + "Windows currently can't be resourced", locale); if (!NILP (device) && !DEVICEP (device)) CHECK_DEVICE (device); @@ -1440,7 +1441,7 @@ char *raw_result; XrmDatabase db; Display *display; - Error_behavior errb = decode_error_behavior_flag (noerror); + Error_Behavior errb = decode_error_behavior_flag (noerror); CHECK_STRING (name); CHECK_STRING (class); @@ -1483,8 +1484,13 @@ while (namerest[0] && classrest[0]) namerest++, classrest++; if (namerest[0] || classrest[0]) - signal_simple_error_2 - ("class list and name list must be the same length", name, class); + { + maybe_signal_error_2 + (Qstructure_formation_error, + "class list and name list must be the same length", name, class, + Qresource, errb); + return Qnil; + } result = XrmQGetResource (db, namelist, classlist, &xrm_type, &xrm_value); if (result != True || xrm_type != string_quark) @@ -1504,33 +1510,32 @@ !ascii_strcasecmp (raw_result, "true") || !ascii_strcasecmp (raw_result, "yes")) return Fcons (Qt, Qnil); - return maybe_continuable_error - (Qresource, errb, - "can't convert %s: %s to a Boolean", name_string, raw_result); + return maybe_signal_continuable_error_2 + (Qinvalid_operation, "Can't convert to a Boolean", + build_string (name_string), build_string (raw_result), Qresource, + errb); } else if (EQ (type, Qinteger) || EQ (type, Qnatnum)) { int i; char c; if (1 != sscanf (raw_result, "%d%c", &i, &c)) - return maybe_continuable_error - (Qresource, errb, - "can't convert %s: %s to an integer", name_string, raw_result); + return maybe_signal_continuable_error_2 + (Qinvalid_operation, "Can't convert to an integer", + build_string (name_string), build_string (raw_result), Qresource, + errb); else if (EQ (type, Qnatnum) && i < 0) - return maybe_continuable_error - (Qresource, errb, - "invalid numerical value %d for resource %s", i, name_string); + return maybe_signal_continuable_error_2 + (Qinvalid_argument, "Invalid numerical value for resource", + make_int (i), build_string (name_string), Qresource, errb); else return make_int (i); } else { return maybe_signal_continuable_error - (Qwrong_type_argument, - list2 (build_translated_string - ("should be string, integer, natnum or boolean"), - type), - Qresource, errb); + (Qwrong_type_argument, "Should be string, integer, natnum or boolean", + type, Qresource, errb); } } @@ -1576,7 +1581,7 @@ str = (char *) XSTRING_DATA (resource_line); if (!(colon_pos = strchr (str, ':')) || strchr (str, '\n')) invalid: - signal_simple_error ("Invalid resource line", resource_line); + syntax_error ("Invalid resource line", resource_line); if (strspn (str, /* Only the following chars are allowed before the colon */ " \t.*?abcdefghijklmnopqrstuvwxyz" @@ -1625,7 +1630,7 @@ case TrueColor: return intern ("true-color"); case DirectColor: return intern ("direct-color"); default: - error ("display has an unknown visual class"); + invalid_state ("display has an unknown visual class", Qunbound); return Qnil; /* suppress compiler warning */ } } @@ -1711,7 +1716,7 @@ { struct device *d = decode_device (device); if (!DEVICE_X_P (d)) - signal_simple_error ("Not an X device", device); + gui_error ("Not an X device", device); return DEVICE_X_DATA (d)->x_keysym_map_hash_table; } @@ -1732,7 +1737,7 @@ { struct device *d = decode_device (device); if (!DEVICE_X_P (d)) - signal_simple_error ("Not an X device", device); + gui_error ("Not an X device", device); return (EQ (Qsans_modifiers, Fgethash (keysym, DEVICE_X_KEYSYM_MAP_HASH_TABLE (d), Qnil)) ? @@ -1755,7 +1760,7 @@ { struct device *d = decode_device (device); if (!DEVICE_X_P (d)) - signal_simple_error ("Not an X device", device); + gui_error ("Not an X device", device); return (NILP (Fgethash (keysym, DEVICE_X_KEYSYM_MAP_HASH_TABLE (d), Qnil)) ? Qnil : Qt); @@ -1903,7 +1908,7 @@ Lisp_Object font_path = Qnil; if (!directories) - signal_simple_error ("Can't get X font path", device); + gui_error ("Can't get X font path", device); while (ndirs_return--) font_path = Fcons (build_ext_string (directories[ndirs_return], @@ -1985,9 +1990,9 @@ DEFSUBR (Fx_get_font_path); DEFSUBR (Fx_set_font_path); - defsymbol (&Qx_error, "x-error"); - defsymbol (&Qinit_pre_x_win, "init-pre-x-win"); - defsymbol (&Qinit_post_x_win, "init-post-x-win"); + DEFSYMBOL (Qx_error); + DEFSYMBOL (Qinit_pre_x_win); + DEFSYMBOL (Qinit_post_x_win); } void diff --text -u 'xemacs-21.5.1/src/device.c' 'xemacs-21.5.2/src/device.c' Index: ././src/device.c --- ././src/device.c Fri Apr 13 03:23:33 2001 +++ ././src/device.c Mon Jun 18 16:10:13 2001 @@ -83,25 +83,8 @@ { struct device *d = XDEVICE (obj); - mark_object (d->name); - mark_object (d->connection); - mark_object (d->canon_connection); - mark_object (d->console); - mark_object (d->selected_frame); - mark_object (d->frame_with_focus_real); - mark_object (d->frame_with_focus_for_hooks); - mark_object (d->frame_that_ought_to_have_focus); - mark_object (d->device_class); - mark_object (d->user_defined_tags); - mark_object (d->pixel_to_glyph_cache.obj1); - mark_object (d->pixel_to_glyph_cache.obj2); - - mark_object (d->color_instance_cache); - mark_object (d->font_instance_cache); -#ifdef MULE - mark_object (d->charset_font_cache); -#endif - mark_object (d->image_instance_cache); +#define MARKED_SLOT(x) mark_object (d->x) +#include "devslots.h" if (d->devmeths) { @@ -119,8 +102,8 @@ char buf[256]; if (print_readably) - error ("printing unreadable object #", - XSTRING_DATA (d->name), d->header.uid); + printing_unreadable_object ("#", + XSTRING_DATA (d->name), d->header.uid); sprintf (buf, "#<%s-device", !DEVICE_LIVE_P (d) ? "dead" : DEVICE_TYPE_NAME (d)); @@ -161,6 +144,15 @@ return Fcopy_sequence (Vdevice_class_list); } +static void +nuke_all_device_slots (struct device *d, Lisp_Object zap) +{ + zero_lcrecord (d); + +#define MARKED_SLOT(x) d->x = zap +#include "devslots.h" +} + static struct device * allocate_device (Lisp_Object console) { @@ -168,25 +160,12 @@ struct device *d = alloc_lcrecord_type (struct device, &lrecord_device); struct gcpro gcpro1; - zero_lcrecord (d); - XSETDEVICE (device, d); GCPRO1 (device); - d->name = Qnil; - d->console = console; - d->connection = Qnil; - d->canon_connection = Qnil; - d->frame_list = Qnil; - d->selected_frame = Qnil; - d->frame_with_focus_real = Qnil; - d->frame_with_focus_for_hooks = Qnil; - d->frame_that_ought_to_have_focus = Qnil; - d->device_class = Qnil; - d->user_defined_tags = Qnil; - d->pixel_to_glyph_cache.obj1 = Qnil; - d->pixel_to_glyph_cache.obj2 = Qnil; + nuke_all_device_slots (d, Qnil); + d->console = console; d->infd = d->outfd = -1; /* #### is 20 reasonable? */ @@ -279,7 +258,7 @@ (XFRAME (DEVICE_SELECTED_FRAME (XDEVICE (device)))), Qnil); else - error ("Can't select a device with no frames"); + invalid_operation ("Can't select a device with no frames", Qunbound); return Qnil; } @@ -302,7 +281,8 @@ CHECK_LIVE_FRAME (frame); if (! EQ (device, FRAME_DEVICE (XFRAME (frame)))) - error ("In `set-device-selected-frame', FRAME is not on DEVICE"); + invalid_argument ("In `set-device-selected-frame', FRAME is not on DEVICE", + Qunbound); if (EQ (device, Fselected_device (Qnil))) return Fselect_frame (frame); @@ -384,7 +364,7 @@ static Lisp_Object semi_canonicalize_device_connection (struct console_methods *meths, - Lisp_Object name, Error_behavior errb) + Lisp_Object name, Error_Behavior errb) { if (HAS_CONTYPE_METH_P (meths, semi_canonicalize_device_connection)) return CONTYPE_METH (meths, semi_canonicalize_device_connection, @@ -396,7 +376,7 @@ static Lisp_Object canonicalize_device_connection (struct console_methods *meths, - Lisp_Object name, Error_behavior errb) + Lisp_Object name, Error_Behavior errb) { if (HAS_CONTYPE_METH_P (meths, canonicalize_device_connection)) return CONTYPE_METH (meths, canonicalize_device_connection, @@ -487,9 +467,9 @@ if (NILP (device)) { if (NILP (type)) - signal_simple_error ("No such device", connection); + invalid_argument ("No such device", connection); else - signal_simple_error_2 ("No such device", type, connection); + invalid_argument_2 ("No such device", type, connection); } return device; } @@ -557,7 +537,7 @@ conmeths = decode_console_type (type, ERROR_ME_NOT); if (!conmeths) - signal_simple_error ("Invalid device type", type); + invalid_constant ("Invalid device type", type); device = Ffind_device (connection, type); if (!NILP (device)) @@ -823,8 +803,17 @@ MAYBE_DEVMETH (d, delete_device, (d)); CONSOLE_DEVICE_LIST (c) = delq_no_quit (device, CONSOLE_DEVICE_LIST (c)); + RESET_CHANGED_SET_FLAGS; + + /* Nobody should be accessing anything in this object any more, and + making all Lisp_Objects Qnil allows for better GC'ing in case a + pointer to the dead device continues to hang around. Zero all + other structs in case someone tries to access something through + them. */ + nuke_all_device_slots (d, Qnil); d->devmeths = dead_console_methods; + UNGCPRO; } @@ -883,9 +872,9 @@ struct device *d = decode_device (device); XSETDEVICE (device, d); if (!DEVICE_TTY_P (d)) - signal_simple_error ("Cannot change the class of this device", device); + gui_error ("Cannot change the class of this device", device); if (!EQ (class, Qcolor) && !EQ (class, Qmono) && !EQ (class, Qgrayscale)) - signal_simple_error ("Must be color, mono, or grayscale", class); + invalid_constant ("Must be color, mono, or grayscale", class); if (! EQ (DEVICE_CLASS (d), class)) { Lisp_Object frmcons; @@ -1067,7 +1056,7 @@ FROB (slow_device); FROB (security); else - signal_simple_error ("Invalid device metric symbol", metric); + invalid_constant ("Invalid device metric symbol", metric); res = DEVMETH_OR_GIVEN (d, device_system_metrics, (d, m), Qunbound); return UNBOUNDP(res) ? default_ : res; @@ -1175,8 +1164,7 @@ Lisp_Object winsy = domain_device_type (domain); struct console_methods *meth = decode_console_type (winsy, ERROR_ME_NOT); assert (meth); - return (MAYBE_INT_CONTYPE_METH (meth, device_implementation_flags, ()) - & XDEVIMPF_PIXEL_GEOMETRY); + return CONMETH_IMPL_FLAG (meth, XDEVIMPF_PIXEL_GEOMETRY); } DEFUN ("domain-device-type", Fdomain_device_type, 0, 1, 0, /* @@ -1187,7 +1175,7 @@ { if (!WINDOWP (domain) && !FRAMEP (domain) && !DEVICEP (domain) && !CONSOLEP (domain)) - signal_simple_error + invalid_argument ("Domain must be either a window, frame, device or console", domain); return domain_device_type (domain); @@ -1281,54 +1269,54 @@ DEFSUBR (Fdomain_device_type); DEFSUBR (Fdevice_printer_p); - defsymbol (&Qdevicep, "devicep"); - defsymbol (&Qdevice_live_p, "device-live-p"); + DEFSYMBOL (Qdevicep); + DEFSYMBOL (Qdevice_live_p); - defsymbol (&Qcreate_device_hook, "create-device-hook"); - defsymbol (&Qdelete_device_hook, "delete-device-hook"); + DEFSYMBOL (Qcreate_device_hook); + DEFSYMBOL (Qdelete_device_hook); /* Qcolor defined in general.c */ - defsymbol (&Qgrayscale, "grayscale"); - defsymbol (&Qmono, "mono"); + DEFSYMBOL (Qgrayscale); + DEFSYMBOL (Qmono); /* Device metrics symbols */ - defsymbol (&Qcolor_default, "color-default"); - defsymbol (&Qcolor_select, "color-select"); - defsymbol (&Qcolor_balloon, "color-balloon"); - defsymbol (&Qcolor_3d_face, "color-3d-face"); - defsymbol (&Qcolor_3d_light, "color-3d-light"); - defsymbol (&Qcolor_3d_dark, "color-3d-dark"); - defsymbol (&Qcolor_menu, "color-menu"); - defsymbol (&Qcolor_menu_highlight, "color-menu-highlight"); - defsymbol (&Qcolor_menu_button, "color-menu-button"); - defsymbol (&Qcolor_menu_disabled, "color-menu-disabled"); - defsymbol (&Qcolor_toolbar, "color-toolbar"); - defsymbol (&Qcolor_scrollbar, "color-scrollbar"); - defsymbol (&Qcolor_desktop, "color-desktop"); - defsymbol (&Qcolor_workspace, "color-workspace"); - defsymbol (&Qfont_default, "font-default"); - defsymbol (&Qfont_menubar, "font-menubar"); - defsymbol (&Qfont_dialog, "font-dialog"); - defsymbol (&Qsize_cursor, "size-cursor"); - defsymbol (&Qsize_scrollbar, "size-scrollbar"); - defsymbol (&Qsize_menu, "size-menu"); - defsymbol (&Qsize_toolbar, "size-toolbar"); - defsymbol (&Qsize_toolbar_button, "size-toolbar-button"); - defsymbol (&Qsize_toolbar_border, "size-toolbar-border"); - defsymbol (&Qsize_icon, "size-icon"); - defsymbol (&Qsize_icon_small, "size-icon-small"); - defsymbol (&Qsize_device, "size-device"); - defsymbol (&Qsize_workspace, "size-workspace"); - defsymbol (&Qoffset_workspace, "offset-workspace"); - defsymbol (&Qsize_device_mm, "size-device-mm"); - defsymbol (&Qnum_bit_planes, "num-bit-planes"); - defsymbol (&Qnum_color_cells, "num-color-cells"); - defsymbol (&Qdevice_dpi, "device-dpi"); - defsymbol (&Qmouse_buttons, "mouse-buttons"); - defsymbol (&Qswap_buttons, "swap-buttons"); - defsymbol (&Qshow_sounds, "show-sounds"); - defsymbol (&Qslow_device, "slow-device"); - defsymbol (&Qsecurity, "security"); + DEFSYMBOL (Qcolor_default); + DEFSYMBOL (Qcolor_select); + DEFSYMBOL (Qcolor_balloon); + DEFSYMBOL (Qcolor_3d_face); + DEFSYMBOL (Qcolor_3d_light); + DEFSYMBOL (Qcolor_3d_dark); + DEFSYMBOL (Qcolor_menu); + DEFSYMBOL (Qcolor_menu_highlight); + DEFSYMBOL (Qcolor_menu_button); + DEFSYMBOL (Qcolor_menu_disabled); + DEFSYMBOL (Qcolor_toolbar); + DEFSYMBOL (Qcolor_scrollbar); + DEFSYMBOL (Qcolor_desktop); + DEFSYMBOL (Qcolor_workspace); + DEFSYMBOL (Qfont_default); + DEFSYMBOL (Qfont_menubar); + DEFSYMBOL (Qfont_dialog); + DEFSYMBOL (Qsize_cursor); + DEFSYMBOL (Qsize_scrollbar); + DEFSYMBOL (Qsize_menu); + DEFSYMBOL (Qsize_toolbar); + DEFSYMBOL (Qsize_toolbar_button); + DEFSYMBOL (Qsize_toolbar_border); + DEFSYMBOL (Qsize_icon); + DEFSYMBOL (Qsize_icon_small); + DEFSYMBOL (Qsize_device); + DEFSYMBOL (Qsize_workspace); + DEFSYMBOL (Qoffset_workspace); + DEFSYMBOL (Qsize_device_mm); + DEFSYMBOL (Qnum_bit_planes); + DEFSYMBOL (Qnum_color_cells); + DEFSYMBOL (Qdevice_dpi); + DEFSYMBOL (Qmouse_buttons); + DEFSYMBOL (Qswap_buttons); + DEFSYMBOL (Qshow_sounds); + DEFSYMBOL (Qslow_device); + DEFSYMBOL (Qsecurity); } void @@ -1363,5 +1351,5 @@ staticpro (&Vdevice_class_list); /* Death to devices.el !!! */ - Fprovide(intern("devices")); + Fprovide (intern ("devices")); } diff --text -u 'xemacs-21.5.1/src/device.h' 'xemacs-21.5.2/src/device.h' Index: ././src/device.h --- ././src/device.h Fri Apr 13 03:23:33 2001 +++ ././src/device.h Mon Jun 18 16:10:13 2001 @@ -48,6 +48,7 @@ #define DEVICE_TYPE_NAME(d) ((d)->devmeths->name) #define DEVICE_TYPE(d) ((d)->devmeths->symbol) +#define DEVICE_IMPL_FLAG(d, f) CONMETH_IMPL_FLAG ((d)->devmeths, (f)) #define DEVICE_SPECIFIC_FRAME_PROPS(d) \ ((d)->devmeths->device_specific_frame_props) @@ -71,90 +72,6 @@ through device->console, but it's faster this way. */ struct console_methods *devmeths; - /* Name of this device, for resourcing and printing purposes. - If not explicitly given, it's initialized in a device-specific - manner. */ - Lisp_Object name; - - /* What this device is connected to */ - Lisp_Object connection; - - /* A canonical name for the connection that is used to determine - whether `make-device' is being called on an existing device. */ - Lisp_Object canon_connection; - - /* List of frames on this device. */ - Lisp_Object frame_list; - - /* The console this device is on. */ - Lisp_Object console; - - /* Frame which is "currently selected". This is what `selected-frame' - returns and is the default frame for many operations. This may - not be the same as frame_with_focus; `select-frame' changes the - selected_frame but not the frame_with_focus. However, eventually - either the two values will be the same, or frame_with_focus will - be nil: right before waiting for an event, the focus is changed - to point to the selected_frame if XEmacs currently has the focus - on this device. Note that frame_with_focus may be nil (none of the - frames on this device have the window-system focus), but - selected_frame will never be nil if there are any frames on - the device. */ - Lisp_Object selected_frame; - /* Frame that currently contains the window-manager focus, or none. - Note that we've split frame_with_focus into two variables. - frame_with_focus_real is the value we use most of the time, - but frame_with_focus_for_hooks is used for running the select-frame-hook - and deselect-frame-hook. We do this because we split the focus handling - into two parts: one part (deals with drawing the solid/box cursor) - runs as soon as a focus event is received; the other (running the - hooks) runs after any pending sit-for/sleep-for/accept-process-output - calls are done. */ - Lisp_Object frame_with_focus_real; - Lisp_Object frame_with_focus_for_hooks; - /* If we have recently issued a request to change the focus as a - result of select-frame having been called, the following variable - records the frame we are trying to focus on. The reason for this - is that the window manager may not grant our request to change - the focus (so we can't just change frame_with_focus), and we don't - want to keep sending requests again and again to the window manager. - This variable is reset whenever a focus-change event is seen. */ - Lisp_Object frame_that_ought_to_have_focus; - - /* Color class of this device. */ - Lisp_Object device_class; - - /* Alist of values for user-defined tags in this device. */ - Lisp_Object user_defined_tags; - - /* Hash tables for device-specific objects (fonts, colors, etc). - These are key-weak hash tables (or hash tables containing key-weak - hash tables) so that they disappear when the key goes away. */ - - /* This is a simple key-weak hash table hashing color names to - instances. */ - Lisp_Object color_instance_cache; - - /* This is a simple key-weak hash table hashing font names to - instances. */ - Lisp_Object font_instance_cache; - -#ifdef MULE - /* This is a bi-level cache, where the hash table in this slot here - indexes charset objects to key-weak hash tables, which in turn - index font names to more specific font names that match the - given charset's registry. This speeds up the horrendously - slow XListFonts() operation that needs to be done in order - to determine an appropriate font. */ - Lisp_Object charset_font_cache; -#endif - - /* This is a bi-level cache, where the hash table in this slot here - indexes image-instance-type masks (there are currently 6 - image-instance types and thus 64 possible masks) to key-weak hash - tables like the one for colors. */ - Lisp_Object image_instance_cache; - /* A structure of auxiliary data specific to the device type. struct x_device is used for X window frames; defined in console-x.h struct tty_device is used to TTY's; defined in console-tty.h */ @@ -195,6 +112,8 @@ unsigned int on_console_p :1; unsigned int connected_to_nas_p :1; +#define MARKED_SLOT(x) Lisp_Object x +#include "devslots.h" /* File descriptors for input and output. Much of the time (but not always) these will be the same. For an X device, @@ -220,7 +139,7 @@ DECLARE_LRECORD (device, struct device); #define XDEVICE(x) XRECORD (x, device, struct device) #define XSETDEVICE(x, p) XSETRECORD (x, p, device) -#define wrap_device(p) wrap_object (p) +#define wrap_device(p) wrap_record (p, device) #define DEVICEP(x) RECORDP (x, device) #define CHECK_DEVICE(x) CHECK_RECORD (x, device) #define CONCHECK_DEVICE(x) CONCHECK_RECORD (x, device) @@ -273,9 +192,7 @@ #define DEVICE_DISPLAY_P(dev) \ (DEVICE_LIVE_P (dev) && \ - (MAYBE_INT_DEVMETH (dev, \ - device_implementation_flags, ()) \ - & XDEVIMPF_IS_A_PRINTER) ? 0 : 1) + !DEVICE_IMPL_FLAG (dev, XDEVIMPF_IS_A_PRINTER)) #define CHECK_DISPLAY_DEVICE(dev) \ do { \ diff --text -u /dev/null 'xemacs-21.5.2/src/devslots.h' Index: ././src/devslots.h --- ././src/devslots.h Thu Jan 1 09:00:00 1970 +++ ././src/devslots.h Mon Jun 18 16:10:14 2001 @@ -0,0 +1,116 @@ +/* Definitions of marked slots in consoles + Copyright (C) 1990, 1992, 1993 Free Software Foundation, Inc. + +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. */ + +/* We define the Lisp_Objects in the device structure in a separate file + because there are numerous places we want to iterate over them, such + as when defining them in the structure, initializing them, or marking + them. + + To use, define MARKED_SLOT before including this file. In the structure + definition, you also need to define FRAME_SLOT_DECLARATION. No need to + undefine either value; that happens automatically. */ + + /* Name of this device, for resourcing and printing purposes. + If not explicitly given, it's initialized in a device-specific + manner. */ + MARKED_SLOT (name); + + /* What this device is connected to */ + MARKED_SLOT (connection); + + /* A canonical name for the connection that is used to determine + whether `make-device' is being called on an existing device. */ + MARKED_SLOT (canon_connection); + + /* List of frames on this device. */ + MARKED_SLOT (frame_list); + + /* The console this device is on. */ + MARKED_SLOT (console); + + /* Frame which is "currently selected". This is what `selected-frame' + returns and is the default frame for many operations. This may + not be the same as frame_with_focus; `select-frame' changes the + selected_frame but not the frame_with_focus. However, eventually + either the two values will be the same, or frame_with_focus will + be nil: right before waiting for an event, the focus is changed + to point to the selected_frame if XEmacs currently has the focus + on this device. Note that frame_with_focus may be nil (none of the + frames on this device have the window-system focus), but + selected_frame will never be nil if there are any frames on + the device. */ + MARKED_SLOT (selected_frame); + /* Frame that currently contains the window-manager focus, or none. + Note that we've split frame_with_focus into two variables. + frame_with_focus_real is the value we use most of the time, + but frame_with_focus_for_hooks is used for running the select-frame-hook + and deselect-frame-hook. We do this because we split the focus handling + into two parts: one part (deals with drawing the solid/box cursor) + runs as soon as a focus event is received; the other (running the + hooks) runs after any pending sit-for/sleep-for/accept-process-output + calls are done. */ + MARKED_SLOT (frame_with_focus_real); + MARKED_SLOT (frame_with_focus_for_hooks); + /* If we have recently issued a request to change the focus as a + result of select-frame having been called, the following variable + records the frame we are trying to focus on. The reason for this + is that the window manager may not grant our request to change + the focus (so we can't just change frame_with_focus), and we don't + want to keep sending requests again and again to the window manager. + This variable is reset whenever a focus-change event is seen. */ + MARKED_SLOT (frame_that_ought_to_have_focus); + + /* Color class of this device. */ + MARKED_SLOT (device_class); + + /* Alist of values for user-defined tags in this device. */ + MARKED_SLOT (user_defined_tags); + + /* Hash tables for device-specific objects (fonts, colors, etc). + These are key-weak hash tables (or hash tables containing key-weak + hash tables) so that they disappear when the key goes away. */ + + /* This is a simple key-weak hash table hashing color names to + instances. */ + MARKED_SLOT (color_instance_cache); + + /* This is a simple key-weak hash table hashing font names to + instances. */ + MARKED_SLOT (font_instance_cache); + +#ifdef MULE + /* This is a bi-level cache, where the hash table in this slot here + indexes charset objects to key-weak hash tables, which in turn + index font names to more specific font names that match the + given charset's registry. This speeds up the horrendously + slow XListFonts() operation that needs to be done in order + to determine an appropriate font. */ + MARKED_SLOT (charset_font_cache); +#endif + + /* This is a bi-level cache, where the hash table in this slot here + indexes image-instance-type masks (there are currently 6 + image-instance types and thus 64 possible masks) to key-weak hash + tables like the one for colors. */ + MARKED_SLOT (image_instance_cache); + +#undef MARKED_SLOT diff --text -u 'xemacs-21.5.1/src/dialog-gtk.c' 'xemacs-21.5.2/src/dialog-gtk.c' Index: ././src/dialog-gtk.c --- ././src/dialog-gtk.c Fri Apr 13 03:23:33 2001 +++ ././src/dialog-gtk.c Thu May 24 16:51:06 2001 @@ -47,7 +47,7 @@ void syms_of_dialog_gtk (void) { - defsymbol (&Qgtk_make_dialog_box_internal, "gtk-make-dialog-box-internal"); + DEFSYMBOL (Qgtk_make_dialog_box_internal); } void diff --text -u 'xemacs-21.5.1/src/dialog-msw.c' 'xemacs-21.5.2/src/dialog-msw.c' Index: ././src/dialog-msw.c --- ././src/dialog-msw.c Mon May 7 16:52:09 2001 +++ ././src/dialog-msw.c Mon Jun 18 16:10:14 2001 @@ -42,7 +42,6 @@ static Lisp_Object Q_initial_directory; static Lisp_Object Q_initial_filename; static Lisp_Object Q_filter_list; -static Lisp_Object Q_title; static Lisp_Object Q_allow_multi_select; static Lisp_Object Q_create_prompt_on_nonexistent; static Lisp_Object Q_overwrite_prompt; @@ -176,7 +175,8 @@ } DEFINE_LRECORD_IMPLEMENTATION ("mswindows-dialog-id", mswindows_dialog_id, - mark_mswindows_dialog_id, 0, 0, 0, 0, 0, + mark_mswindows_dialog_id, + internal_object_printer, 0, 0, 0, 0, struct mswindows_dialog_id); /* Dialog procedure */ @@ -286,11 +286,11 @@ } -#define ALIGN_TEMPLATE \ -{ \ - unsigned int slippage = Dynarr_length (template) & 3; \ - if (slippage) \ - Dynarr_add_many (template, &zeroes, slippage); \ +#define ALIGN_TEMPLATE \ +{ \ + unsigned int slippage = Dynarr_length (template_) & 3; \ + if (slippage) \ + Dynarr_add_many (template_, &zeroes, slippage); \ } static struct @@ -375,7 +375,7 @@ ofn.Flags &= ~(OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST); } else - syntax_error ("Unrecognized file-dialog keyword", key); + invalid_constant ("Unrecognized file-dialog keyword", key); } } @@ -394,15 +394,15 @@ for (i = 0; i < countof (common_dialog_errors); i++) { if (common_dialog_errors[i].errmess == err) - signal_type_error (Qdialog_box_error, - "Creating file-dialog-box", - build_string - (common_dialog_errors[i].errname)); + signal_error (Qdialog_box_error, + "Creating file-dialog-box", + build_string + (common_dialog_errors[i].errname)); } - signal_type_error (Qdialog_box_error, - "Unknown common dialog box error???", - make_int (err)); + signal_error (Qdialog_box_error, + "Unknown common dialog box error???", + make_int (err)); } } @@ -413,7 +413,7 @@ handle_question_dialog_box (struct frame *f, Lisp_Object keys) { Lisp_Object_dynarr *dialog_items = Dynarr_new (Lisp_Object); - unsigned_char_dynarr *template = Dynarr_new (unsigned_char); + unsigned_char_dynarr *template_ = Dynarr_new (unsigned_char); unsigned int button_row_width = 0; unsigned int text_width, text_height; Lisp_Object question = Qnil, title = Qnil; @@ -422,7 +422,7 @@ record_unwind_protect (free_dynarr_opaque_ptr, make_opaque_ptr (dialog_items)); record_unwind_protect (free_dynarr_opaque_ptr, - make_opaque_ptr (template)); + make_opaque_ptr (template_)); /* A big NO NEED to GCPRO gui_items stored in the array: they are just pointers into KEYS list, which is GC-protected by the caller */ @@ -462,15 +462,15 @@ button_row_width -= X_BUTTON_MARGIN; } else - syntax_error ("Unrecognized question-dialog keyword", key); + invalid_constant ("Unrecognized question-dialog keyword", key); } } if (Dynarr_length (dialog_items) == 0) - syntax_error ("Dialog descriptor provides no buttons", keys); + sferror ("Dialog descriptor provides no buttons", keys); if (NILP (question)) - syntax_error ("Dialog descriptor provides no question", keys); + sferror ("Dialog descriptor provides no question", keys); /* Determine the final width layout */ { @@ -543,20 +543,20 @@ dlg_tem.cx = text_width + 2 * X_TEXT_FROM_EDGE; dlg_tem.cy = (Y_TEXT_FROM_EDGE + text_height + Y_TEXT_FROM_BUTTON + Y_BUTTON + Y_BUTTON_FROM_EDGE); - Dynarr_add_many (template, &dlg_tem, sizeof (dlg_tem)); + Dynarr_add_many (template_, &dlg_tem, sizeof (dlg_tem)); /* We want no menu and standard class */ - Dynarr_add_many (template, &zeroes, 4); + Dynarr_add_many (template_, &zeroes, 4); /* And the third is the dialog title. "XEmacs" unless one is supplied. Note that the string must be in Unicode. */ if (NILP (title)) - Dynarr_add_many (template, L"XEmacs", 14); + Dynarr_add_many (template_, L"XEmacs", 14); else - push_lisp_string_as_unicode (template, title); + push_lisp_string_as_unicode (template_, title); /* We want standard dialog font */ - Dynarr_add_many (template, L"\x08MS Shell Dlg", 28); + Dynarr_add_many (template_, L"\x08MS Shell Dlg", 28); /* Next add text control. */ item_tem.style = WS_CHILD | WS_VISIBLE | SS_LEFT | SS_NOPREFIX; @@ -568,17 +568,17 @@ item_tem.id = 0xFFFF; ALIGN_TEMPLATE; - Dynarr_add_many (template, &item_tem, sizeof (item_tem)); + Dynarr_add_many (template_, &item_tem, sizeof (item_tem)); /* Right after class id follows */ - Dynarr_add_many (template, &ones, 2); - Dynarr_add_many (template, &static_class_id, sizeof (static_class_id)); + Dynarr_add_many (template_, &ones, 2); + Dynarr_add_many (template_, &static_class_id, sizeof (static_class_id)); /* Next thing to add is control text, as Unicode string */ - push_lisp_string_as_unicode (template, question); + push_lisp_string_as_unicode (template_, question); /* Specify 0 length creation data */ - Dynarr_add_many (template, &zeroes, 2); + Dynarr_add_many (template_, &zeroes, 2); /* Now it's the button time */ item_tem.y = Y_TEXT_FROM_EDGE + text_height + Y_TEXT_FROM_BUTTON; @@ -601,11 +601,12 @@ item_tem.id = i + ID_ITEM_BIAS; ALIGN_TEMPLATE; - Dynarr_add_many (template, &item_tem, sizeof (item_tem)); + Dynarr_add_many (template_, &item_tem, sizeof (item_tem)); /* Right after 0xFFFF and class id atom follows */ - Dynarr_add_many (template, &ones, 2); - Dynarr_add_many (template, &button_class_id, sizeof (button_class_id)); + Dynarr_add_many (template_, &ones, 2); + Dynarr_add_many (template_, &button_class_id, + sizeof (button_class_id)); /* Next thing to add is control text, as Unicode string */ { @@ -621,11 +622,11 @@ 2 * XSTRING_LENGTH (ctext) + 3, &accel_unused, ctext); - push_bufbyte_string_as_unicode (template, trans, translen); + push_bufbyte_string_as_unicode (template_, trans, translen); } /* Specify 0 length creation data. */ - Dynarr_add_many (template, &zeroes, 2); + Dynarr_add_many (template_, &zeroes, 2); item_tem.x += item_tem.cx + X_BUTTON_SPACING; } @@ -654,12 +655,12 @@ /* Woof! Everything is ready. Pop pop pop in now! */ did->hwnd = CreateDialogIndirectParam (NULL, - (LPDLGTEMPLATE) Dynarr_atp (template, 0), + (LPDLGTEMPLATE) Dynarr_atp (template_, 0), FRAME_MSWINDOWS_HANDLE (f), dialog_proc, (LPARAM) LISP_TO_VOID (dialog_data)); if (!did->hwnd) /* Something went wrong creating the dialog */ - signal_type_error (Qdialog_box_error, "Creating dialog", keys); + signal_error (Qdialog_box_error, "Creating dialog", keys); Vdialog_data_list = Fcons (dialog_data, Vdialog_data_list); @@ -682,7 +683,7 @@ else if (EQ (type, Qpage_setup)) return mswindows_handle_page_setup_dialog_box (f, keys); else - signal_type_error (Qunimplemented, "Dialog box type", type); + signal_error (Qunimplemented, "Dialog box type", type); return Qnil; } @@ -709,7 +710,7 @@ DEFKEYWORD (Q_no_read_only_return); /* Errors */ - DEFERROR_STANDARD (Qdialog_box_error, Qinvalid_operation); + DEFERROR_STANDARD (Qdialog_box_error, Qgui_error); } void diff --text -u 'xemacs-21.5.1/src/dialog-x.c' 'xemacs-21.5.2/src/dialog-x.c' Index: ././src/dialog-x.c --- ././src/dialog-x.c Fri Apr 13 03:23:34 2001 +++ ././src/dialog-x.c Thu May 24 16:51:06 2001 @@ -151,12 +151,12 @@ buttons = value; } else - syntax_error ("Unrecognized question-dialog keyword", key); + invalid_constant ("Unrecognized question-dialog keyword", key); } } if (NILP (question)) - syntax_error ("Dialog descriptor provides no question", keys); + sferror ("Dialog descriptor provides no question", keys); /* Inhibit GC during this conversion. The reasons for this are the same as in menu_item_descriptor_to_widget_value(); see @@ -185,7 +185,7 @@ if (NILP (button)) { if (partition_seen) - syntax_error ("More than one partition (nil) seen in dbox spec", + sferror ("More than one partition (nil) seen in dbox spec", keys); partition_seen = 1; continue; @@ -221,7 +221,7 @@ n++; if (lbuttons > 9 || rbuttons > 9) - syntax_error ("Too many buttons (9)", + sferror ("Too many buttons (9)", keys); /* #### this leaks */ } @@ -231,7 +231,7 @@ } if (n == 0) - syntax_error ("Dialog boxes must have some buttons", keys); + sferror ("Dialog boxes must have some buttons", keys); { Extbyte type = (text_field_p ? 'P' : 'Q'); @@ -259,7 +259,7 @@ Widget parent, dbox; if (!EQ (type, Qquestion)) - signal_type_error (Qunimplemented, "Dialog box type", type); + signal_error (Qunimplemented, "Dialog box type", type); data = dbox_descriptor_to_widget_value (keys); diff --text -u 'xemacs-21.5.1/src/dialog.c' 'xemacs-21.5.2/src/dialog.c' Index: ././src/dialog.c --- ././src/dialog.c Fri Apr 13 03:23:34 2001 +++ ././src/dialog.c Thu May 24 16:51:06 2001 @@ -45,8 +45,8 @@ CHECK_SYMBOL (type); if (!HAS_DEVMETH_P (d, make_dialog_box_internal)) - signal_type_error (Qunimplemented, - "Device does not support dialogs", f->device); + signal_error (Qunimplemented, + "Device does not support dialogs", f->device); return DEVMETH (d, make_dialog_box_internal, (f, type, keys)); } diff --text -u 'xemacs-21.5.1/src/dired-msw.c' 'xemacs-21.5.2/src/dired-msw.c' Index: ././src/dired-msw.c --- ././src/dired-msw.c Fri Apr 13 03:23:34 2001 +++ ././src/dired-msw.c Fri Jun 22 10:50:04 2001 @@ -73,20 +73,13 @@ #include "lisp.h" #include "buffer.h" +#include "nt.h" #include "regex.h" #include "sysdir.h" #include "sysproc.h" #include "sysfile.h" - -#include - -#include /* To make nt.h happy */ -#include "nt.h" /* For prototypes */ - -#if ROUND_FILE_SIZES > 0 -#include /* for floor() */ -#endif +#include "sysfloat.h" static int mswindows_ls_sort_case_insensitive; @@ -96,9 +89,8 @@ extern Lisp_Object Vmswindows_downcase_file_names; /* in device-msw.c */ - - -enum mswindows_sortby { +enum mswindows_sortby +{ MSWINDOWS_SORT_BY_NAME, MSWINDOWS_SORT_BY_NAME_NOCASE, MSWINDOWS_SORT_BY_MOD_DATE, @@ -227,7 +219,7 @@ if (fh == INVALID_HANDLE_VALUE) { report_file_error ("Opening directory", - list1(build_string(dirfile))); + build_string (dirfile)); } } else @@ -240,7 +232,7 @@ } FindClose(fh); report_file_error ("Reading directory", - list1(build_string(dirfile))); + build_string (dirfile)); } } @@ -428,9 +420,8 @@ (file, switches, wildcard, full_directory_p)) { Lisp_Object result, handler, wildpat, fns, basename; - char *filename; char *switchstr; - int len, nfiles, i; + int nfiles, i; int hide_system, hide_dot, reverse, display_size; WIN32_FIND_DATA *files, **sorted_files; enum mswindows_sortby sort_by; @@ -495,28 +486,11 @@ } } - /* - * Sometimes we get ".../foo* /" as FILE (without the space). - * While the shell and `ls' don't mind, we certainly do, - * because it makes us think there is no wildcard, only a - * directory name. - */ - if (!NILP(Fstring_match(build_string("[[?*]"), file, Qnil, Qnil))) - { - wildcard = Qt; - filename = XSTRING_DATA(file); - len = strlen(filename); - if (len > 0 && (filename[len - 1] == '\\' || - filename[len - 1] == '/')) - { - filename[len - 1] = '\0'; - } - file = build_string(filename); - } if (!NILP(wildcard)) { Lisp_Object newfile; + file = Fdirectory_file_name (file); basename = Ffile_name_nondirectory(file); fns = intern("wildcard-to-regexp"); wildpat = call1(fns, basename); @@ -628,7 +602,7 @@ void syms_of_dired_mswindows (void) { - defsymbol (&Qmswindows_insert_directory, "mswindows-insert-directory"); + DEFSYMBOL (Qmswindows_insert_directory); DEFSUBR (Fmswindows_insert_directory); } diff --text -u 'xemacs-21.5.1/src/dired.c' 'xemacs-21.5.2/src/dired.c' Index: ././src/dired.c --- ././src/dired.c Fri Apr 13 03:23:34 2001 +++ ././src/dired.c Thu May 24 16:51:07 2001 @@ -35,6 +35,10 @@ #include "opaque.h" #include "syntax.h" +#ifdef WIN32_NATIVE +#include "syswindows.h" +#endif + Lisp_Object Vcompletion_ignored_extensions; Lisp_Object Qdirectory_files; Lisp_Object Qfile_name_completion; @@ -122,7 +126,7 @@ unwind-protection in case of error, but now there is. */ d = opendir ((char *) XSTRING_DATA (directory)); if (!d) - report_file_error ("Opening directory", list1 (directory)); + report_file_error ("Opening directory", directory); regex_match_object = Qt; regex_emacs_buffer = current_buffer; @@ -339,7 +343,7 @@ { d = opendir ((char *) XSTRING_DATA (Fdirectory_file_name (directory))); if (!d) - report_file_error ("Opening directory", list1 (directory)); + report_file_error ("Opening directory", directory); XCAR (locative) = make_opaque_ptr ((void *)d); /* Loop reading blocks */ @@ -510,11 +514,6 @@ } - -/* The *pwent() functions do not exist on NT. #### The NT equivalent - is NetUserEnum(), and rewriting to use it is not hard.*/ -#ifndef WIN32_NATIVE - static Lisp_Object user_name_completion (Lisp_Object user, int all_flag, int *uniq); @@ -589,8 +588,10 @@ static Lisp_Object user_name_completion_unwind (Lisp_Object cache_incomplete_p) { +#ifndef WIN32_NATIVE endpwent (); speed_up_interrupts (); +#endif if (! NILP (XCAR (cache_incomplete_p))) free_user_cache (&user_cache); @@ -630,13 +631,21 @@ if (!user_cache.user_names) { +#ifndef WIN32_NATIVE struct passwd *pwd; +#else + DWORD entriesread; + DWORD totalentries; + DWORD resume_handle = 0; +#endif + Lisp_Object cache_incomplete_p = noseeum_cons (Qt, Qnil); int speccount = specpdl_depth (); + record_unwind_protect (user_name_completion_unwind, cache_incomplete_p); +#ifndef WIN32_NATIVE slow_down_interrupts (); setpwent (); - record_unwind_protect (user_name_completion_unwind, cache_incomplete_p); while ((pwd = getpwent ())) { QUIT; @@ -649,6 +658,69 @@ Qnative); user_cache.length++; } +#else + if (xNetUserEnum) + { + do + { + USER_INFO_0 *bufptr; + NET_API_STATUS status_status_statui_statum_statu; + int i; + + QUIT; + status_status_statui_statum_statu = + xNetUserEnum (NULL, 0, 0, (LPBYTE *) &bufptr, 1024, + &entriesread, &totalentries, &resume_handle); + if (status_status_statui_statum_statu != NERR_Success && + status_status_statui_statum_statu != ERROR_MORE_DATA) + invalid_operation ("Error enumerating users", + make_int (GetLastError ())); + for (i = 0; i < entriesread; i++) + { + int nout = + WideCharToMultiByte (CP_ACP, WC_COMPOSITECHECK, + bufptr[i].usri0_name, + -1, 0, 0, "~", 0); + void *outp = alloca (nout); + WideCharToMultiByte (CP_ACP, WC_COMPOSITECHECK, + bufptr[i].usri0_name, -1, + (LPSTR) outp, nout, "~", 0); + DO_REALLOC (user_cache.user_names, user_cache.size, + user_cache.length + 1, struct user_name); + TO_INTERNAL_FORMAT (C_STRING, outp, + MALLOC, + (user_cache. + user_names[user_cache.length].ptr, + user_cache. + user_names[user_cache.length].len), + Qmswindows_tstr); + user_cache.length++; + } + xNetApiBufferFree (bufptr); + } + while (entriesread != totalentries); + } + else /* Win 9x */ + { + Extbyte name[2 * (UNLEN + 1)]; + DWORD length = sizeof (name); + + if (GetUserName (name, &length)) + { + DO_REALLOC (user_cache.user_names, user_cache.size, + user_cache.length + 1, struct user_name); + TO_INTERNAL_FORMAT (C_STRING, name, + MALLOC, + (user_cache. + user_names[user_cache.length].ptr, + user_cache. + user_names[user_cache.length].len), + Qmswindows_tstr); + user_cache.length++; + } + } +#endif + XCAR (cache_incomplete_p) = Qnil; unbind_to (speccount, Qnil); @@ -713,7 +785,6 @@ return Qt; return Fsubstring (bestmatch, Qzero, make_int (bestmatchsize)); } -#endif /* ! defined WIN32_NATIVE */ Lisp_Object @@ -871,19 +942,17 @@ void syms_of_dired (void) { - defsymbol (&Qdirectory_files, "directory-files"); - defsymbol (&Qfile_name_completion, "file-name-completion"); - defsymbol (&Qfile_name_all_completions, "file-name-all-completions"); - defsymbol (&Qfile_attributes, "file-attributes"); + DEFSYMBOL (Qdirectory_files); + DEFSYMBOL (Qfile_name_completion); + DEFSYMBOL (Qfile_name_all_completions); + DEFSYMBOL (Qfile_attributes); DEFSUBR (Fdirectory_files); DEFSUBR (Ffile_name_completion); DEFSUBR (Ffile_name_all_completions); -#ifndef WIN32_NATIVE DEFSUBR (Fuser_name_completion); DEFSUBR (Fuser_name_completion_1); DEFSUBR (Fuser_name_all_completions); -#endif DEFSUBR (Ffile_attributes); } diff --text -u 'xemacs-21.5.1/src/doc.c' 'xemacs-21.5.2/src/doc.c' Index: ././src/doc.c --- ././src/doc.c Fri Apr 13 03:23:35 2001 +++ ././src/doc.c Thu May 24 16:51:07 2001 @@ -231,16 +231,16 @@ #endif /* CANNOT_DUMP */ if (fd < 0) - error ("Cannot open doc string file \"%s\"", - name_nonreloc ? name_nonreloc : - (char *) XSTRING_DATA (name_reloc)); + signal_error (Qfile_error, "Cannot open doc string file", + name_nonreloc ? build_string (name_nonreloc) : + name_reloc); } tem = unparesseuxify_doc_string (fd, position, name_nonreloc, name_reloc); close (fd); if (!STRINGP (tem)) - signal_error (Qerror, tem); + signal_error_1 (Qinvalid_byte_code, tem); return tem; } @@ -255,7 +255,7 @@ Lisp_Object string = get_doc_string (filepos); if (!STRINGP (string)) - signal_simple_error ("loading bytecode failed to return string", string); + invalid_state ("loading bytecode failed to return string", string); return Fread (string); } @@ -421,7 +421,7 @@ #ifndef CANNOT_DUMP if (!purify_flag) - error ("Snarf-documentation can only be called in an undumped Emacs"); + invalid_operation ("Snarf-documentation can only be called in an undumped Emacs", Qunbound); #endif CHECK_STRING (filename); @@ -446,8 +446,7 @@ fd = open (name, O_RDONLY | OPEN_BINARY, 0); if (fd < 0) - report_file_error ("Opening doc string file", - Fcons (build_string (name), Qnil)); + report_file_error ("Opening doc string file", build_string (name)); Vinternal_doc_file_name = filename; filled = 0; pos = 0; @@ -617,7 +616,7 @@ else { /* lose: */ - error ("DOC file invalid at position %d", pos); + signal_error (Qfile_error, "DOC file invalid at position", make_int (pos)); weird: /* goto lose */; } diff --text -u 'xemacs-21.5.1/src/doprnt.c' 'xemacs-21.5.2/src/doprnt.c' Index: ././src/doprnt.c --- ././src/doprnt.c Fri Apr 13 03:23:35 2001 +++ ././src/doprnt.c Fri May 25 19:04:28 2001 @@ -130,7 +130,7 @@ while (start != end && isdigit (*start)) { if ((size_t) (arg_ptr - arg_convert) >= sizeof (arg_convert) - 1) - error ("Format converter number too large"); + syntax_error ("Format converter number too large", Qunbound); *arg_ptr++ = *start++; } *arg_ptr = '\0'; @@ -142,10 +142,10 @@ #define NEXT_ASCII_BYTE(ch) \ do { \ if (fmt == fmt_end) \ - error ("Premature end of format string"); \ + syntax_error ("Premature end of format string", Qunbound); \ ch = *fmt; \ if (ch >= 0200) \ - error ("Non-ASCII character in format converter spec"); \ + syntax_error ("Non-ASCII character in format converter spec", Qunbound); \ fmt++; \ } while (0) @@ -296,7 +296,7 @@ } if (!strchr (valid_converters, ch)) - error ("Invalid converter character %c", ch); + syntax_error ("Invalid converter character", make_char (ch)); spec.converter = ch; } @@ -356,7 +356,7 @@ } if (j == Dynarr_length (specs)) - error ("No conversion spec for argument %d", i); + syntax_error ("No conversion spec for argument", make_int (i)); ch = spec->converter; @@ -425,7 +425,7 @@ { /* allow too many args for string, but not too few */ if (nargs < get_args_needed (specs)) - signal_error (Qwrong_number_of_arguments, + signal_error_1 (Qwrong_number_of_arguments, list3 (Qformat, make_int (nargs), !NILP (format_reloc) ? format_reloc : @@ -493,7 +493,7 @@ } if (largs && (spec->argnum < 1 || spec->argnum > nargs)) - error ("Invalid repositioning argument %d", spec->argnum); + syntax_error ("Invalid repositioning argument", make_int (spec->argnum)); else if (ch == 'S' || ch == 's') { @@ -558,8 +558,8 @@ obj = make_int (XCHAR (obj)); if (!INT_OR_FLOATP (obj)) { - error ("format specifier %%%c doesn't match argument type", - ch); + syntax_error ("format specifier %%%c doesn't match argument type", + make_char (ch)); } else if (strchr (double_converters, ch)) arg.d = XFLOATINT (obj); @@ -585,7 +585,7 @@ a = (Emchar) arg.l; if (!valid_char_p (a)) - error ("invalid character value %d to %%c spec", a); + syntax_error ("invalid character value %d to %%c spec", make_char (a)); charlen = set_charptr_emchar (charbuf, a); doprnt_1 (stream, charbuf, charlen, spec->minwidth, @@ -614,11 +614,15 @@ if (spec->zero_flag) *p++ = '0'; if (spec->minwidth >= 0) - p = long_to_string (p, spec->minwidth); + { + long_to_string (p, spec->minwidth); + p += strlen (p); + } if (spec->precision >= 0) { *p++ = '.'; - p = long_to_string (p, spec->precision); + long_to_string (p, spec->precision); + p += strlen (p); } if (strchr (double_converters, ch)) diff --text -u 'xemacs-21.5.1/src/dragdrop.c' 'xemacs-21.5.2/src/dragdrop.c' Index: ././src/dragdrop.c --- ././src/dragdrop.c Fri Apr 13 03:23:35 2001 +++ ././src/dragdrop.c Thu May 24 16:51:07 2001 @@ -113,9 +113,9 @@ void syms_of_dragdrop (void) { - defsymbol (&Qdragdrop_MIME, "dragdrop-MIME"); - defsymbol (&Qdragdrop_URL, "dragdrop-URL"); - defsymbol (&Qdragdrop_drop_dispatch, "dragdrop-drop-dispatch"); + DEFSYMBOL (Qdragdrop_MIME); + DEFSYMBOL (Qdragdrop_URL); + DEFSYMBOL (Qdragdrop_drop_dispatch); } void diff --text -u 'xemacs-21.5.1/src/dumper.c' 'xemacs-21.5.2/src/dumper.c' Index: ././src/dumper.c --- ././src/dumper.c Fri Apr 13 03:23:35 2001 +++ ././src/dumper.c Tue Jun 19 10:35:38 2001 @@ -44,7 +44,7 @@ typedef struct { - void *varaddress; + const void *varaddress; size_t size; } pdump_opaque; @@ -84,7 +84,7 @@ /* Mark SIZE bytes at non-heap address VARADDRESS for dumping as is, without any bit-twiddling. */ void -dump_add_opaque (void *varaddress, size_t size) +dump_add_opaque (const void *varaddress, size_t size) { pdump_opaque info; info.varaddress = varaddress; @@ -934,7 +934,9 @@ obj.value = * obj.address; if (POINTER_TYPE_P (XTYPE (obj.value))) - obj.value = wrap_object ((void *) pdump_get_entry (XRECORD_LHEADER (obj.value))->save_offset); + obj.value = + wrap_pointer_1 ((void *) pdump_get_entry (XRECORD_LHEADER + (obj.value))->save_offset); PDUMP_WRITE (pdump_static_Lisp_Object, obj); } @@ -960,7 +962,7 @@ obj.value = *(Lisp_Object *)(desc[pos].offset + (char *)(XRECORD_LHEADER (obj.value))); } - obj.value = wrap_object ((void *) elt->save_offset); + obj.value = wrap_pointer_1 ((void *) elt->save_offset); PDUMP_WRITE (pdump_static_Lisp_Object, obj); } @@ -1114,7 +1116,7 @@ for (i=0; inb_opaques; i++) { pdump_opaque info = PDUMP_READ_ALIGNED (p, pdump_opaque); - memcpy (info.varaddress, p, info.size); + memcpy ((void*)info.varaddress, p, info.size); p += info.size; } @@ -1147,7 +1149,7 @@ pdump_static_Lisp_Object obj = PDUMP_READ (p, pdump_static_Lisp_Object); if (POINTER_TYPE_P (XTYPE (obj.value))) - obj.value = wrap_object ((char *) XPNTR (obj.value) + delta); + obj.value = wrap_pointer_1 ((char *) XPNTR (obj.value) + delta); (* obj.address) = obj.value; } diff --text -u 'xemacs-21.5.1/src/editfns.c' 'xemacs-21.5.2/src/editfns.c' Index: ././src/editfns.c --- ././src/editfns.c Mon Apr 30 23:10:56 2001 +++ ././src/editfns.c Thu May 31 21:45:35 2001 @@ -111,9 +111,8 @@ { Lisp_Object ch2 = Fevent_to_character (character, Qt, Qnil, Qnil); if (NILP (ch2)) - return - signal_simple_continuable_error - ("character has no ASCII equivalent:", Fcopy_event (character, Qnil)); + invalid_argument + ("character has no ASCII equivalent:", Fcopy_event (character, Qnil)); character = ch2; } @@ -234,7 +233,7 @@ Fsignal (Qmark_inactive, Qnil); #endif m = Fmarker_position (b->mark); - if (NILP (m)) error ("There is no region now"); + if (NILP (m)) invalid_operation ("There is no region now", Qunbound); if (!!(BUF_PT (b) < XINT (m)) == !!beginningp) return make_int (BUF_PT (b)); else @@ -741,7 +740,8 @@ return "unknown" instead of the null if the username cannot be determined. */ - return pw ? pw->pw_name : "unknown"; + /* !!#### fix up in my mule ws */ + return pw ? pw->pw_name : (char *) "unknown"; #else /* For all but Cygwin return NULL (nil) */ return pw ? pw->pw_name : NULL; @@ -1110,7 +1110,7 @@ CHECK_STRING (format_string); if (! lisp_to_time (time_, &value)) - error ("Invalid time specification"); + invalid_argument ("Invalid time specification", Qunbound); /* This is probably enough. */ size = XSTRING_LENGTH (format_string) * 6 + 50; @@ -1151,7 +1151,7 @@ Lisp_Object list_args[9]; if (! lisp_to_time (specified_time, &time_spec)) - error ("Invalid time specification"); + invalid_argument ("Invalid time specification", Qunbound); decoded_time = localtime (&time_spec); list_args[0] = make_int (decoded_time->tm_sec); @@ -1228,7 +1228,7 @@ tzstring = tzbuf; } else - error ("Invalid time zone specification"); + invalid_argument ("Invalid time zone specification", Qunbound); /* Set TZ before calling mktime; merely adjusting mktime's returned value doesn't suffice, since that would mishandle leap seconds. */ @@ -1246,7 +1246,7 @@ } if (the_time == (time_t) -1) - error ("Specified time is not representable"); + invalid_argument ("Specified time is not representable", Qunbound); return wasteful_word_to_lisp (the_time); } @@ -2382,9 +2382,9 @@ len2 = endr2 - startr2; if (startr2 < endr1) - error ("transposed regions not properly ordered"); + invalid_argument ("transposed regions not properly ordered", Qunbound); else if (startr1 == endr1 || startr2 == endr2) - error ("transposed region may not be of length 0"); + invalid_argument ("transposed region may not be of length 0", Qunbound); string1 = make_string_from_buffer (buf, startr1, len1); string2 = make_string_from_buffer (buf, startr2, len2); @@ -2409,12 +2409,12 @@ void syms_of_editfns (void) { - defsymbol (&Qpoint, "point"); - defsymbol (&Qmark, "mark"); - defsymbol (&Qregion_beginning, "region-beginning"); - defsymbol (&Qregion_end, "region-end"); - defsymbol (&Qformat, "format"); - defsymbol (&Quser_files_and_directories, "user-files-and-directories"); + DEFSYMBOL (Qpoint); + DEFSYMBOL (Qmark); + DEFSYMBOL (Qregion_beginning); + DEFSYMBOL (Qregion_end); + DEFSYMBOL (Qformat); + DEFSYMBOL (Quser_files_and_directories); DEFSUBR (Fchar_equal); DEFSUBR (Fchar_Equal); @@ -2480,9 +2480,9 @@ DEFSUBR (Fsave_restriction); DEFSUBR (Ftranspose_regions); - defsymbol (&Qzmacs_update_region, "zmacs-update-region"); - defsymbol (&Qzmacs_deactivate_region, "zmacs-deactivate-region"); - defsymbol (&Qzmacs_region_buffer, "zmacs-region-buffer"); + DEFSYMBOL (Qzmacs_update_region); + DEFSYMBOL (Qzmacs_deactivate_region); + DEFSYMBOL (Qzmacs_region_buffer); } void diff --text -u 'xemacs-21.5.1/src/eldap.c' 'xemacs-21.5.2/src/eldap.c' Index: ././src/eldap.c --- ././src/eldap.c Fri Apr 13 03:23:36 2001 +++ ././src/eldap.c Fri May 25 20:26:54 2001 @@ -82,7 +82,7 @@ ldap_err = ld->ld_errno; #endif } - signal_simple_error ("LDAP error", + invalid_operation ("LDAP error", build_string (ldap_err2string (ldap_err))); } @@ -113,8 +113,7 @@ Lisp_LDAP *ldap = XLDAP (obj); if (print_readably) - error ("printing unreadable object #", - XSTRING_DATA (ldap->host)); + printing_unreadable_object ("#", XSTRING_DATA (ldap->host)); write_c_string ("#host, printcharfun, 1); @@ -140,7 +139,7 @@ Lisp_LDAP *ldap = (Lisp_LDAP *) header; if (for_disksave) - signal_simple_error ("Can't dump an emacs containing LDAP objects", + invalid_operation ("Can't dump an emacs containing LDAP objects", make_ldap (ldap)); if (ldap->ld) @@ -243,7 +242,7 @@ ldap_auth = LDAP_AUTH_KRBV42; #endif else - signal_simple_error ("Invalid authentication method", value); + invalid_constant ("Invalid authentication method", value); } /* Bind DN */ else if (EQ (keyword, Qbinddn)) @@ -269,7 +268,7 @@ else if (EQ (value, Qalways)) ldap_deref = LDAP_DEREF_ALWAYS; else - signal_simple_error ("Invalid deref value", value); + invalid_constant ("Invalid deref value", value); } /* Timelimit */ else if (EQ (keyword, Qtimelimit)) @@ -297,10 +296,7 @@ speed_up_interrupts (); if (ld == NULL ) - signal_simple_error_2 ("Failed connecting to host", - host, - lisp_strerror (errno)); - + report_process_error ("Failed connecting to host", host); #ifdef HAVE_LDAP_SET_OPTION if ((err = ldap_set_option (ld, LDAP_OPT_DEREF, @@ -333,8 +329,12 @@ err = ldap_bind_s (ld, ldap_binddn, ldap_passwd, ldap_auth); if (err != LDAP_SUCCESS) - signal_simple_error ("Failed binding to the server", - build_string (ldap_err2string (err))); + { + Bufbyte *interrmess; + EXTERNAL_TO_C_STRING (ldap_err2string (err), interrmess, Qnative); + signal_error (Qprocess_error, "Failed binding to the server", + build_string (interrmess)); + } ldap = allocate_ldap (); ldap->ld = ld; @@ -459,7 +459,7 @@ else if (EQ (scope, Qsubtree)) ldap_scope = LDAP_SCOPE_SUBTREE; else - signal_simple_error ("Invalid scope", scope); + invalid_constant ("Invalid scope", scope); } /* Attributes to search */ @@ -619,7 +619,7 @@ /* Check the entry */ CHECK_CONS (entry); if (NILP (entry)) - signal_simple_error ("Cannot add void entry", entry); + invalid_operation ("Cannot add void entry", entry); /* Build the ldap_mods array */ len = XINT (Flength (entry)); @@ -735,7 +735,7 @@ else if (EQ (mod_op, Qreplace)) ldap_mods[i].mod_op |= LDAP_MOD_REPLACE; else - signal_simple_error ("Invalid LDAP modification type", mod_op); + 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); @@ -796,24 +796,24 @@ { INIT_LRECORD_IMPLEMENTATION (ldap); - defsymbol (&Qldapp, "ldapp"); - defsymbol (&Qport, "port"); - 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"); - defsymbol (&Qkrbv41, "krbv41"); - defsymbol (&Qkrbv42, "krbv42"); - defsymbol (&Qnever, "never"); - defsymbol (&Qalways, "always"); - defsymbol (&Qfind, "find"); - defsymbol (&Qadd, "add"); - defsymbol (&Qreplace, "replace"); + 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); diff --text -u 'xemacs-21.5.1/src/eldap.h' 'xemacs-21.5.2/src/eldap.h' Index: ././src/eldap.h --- ././src/eldap.h Fri Apr 13 03:23:36 2001 +++ ././src/eldap.h Mon Jun 18 16:10:15 2001 @@ -44,6 +44,7 @@ DECLARE_LRECORD (ldap, Lisp_LDAP); #define XLDAP(x) XRECORD (x, ldap, Lisp_LDAP) #define XSETLDAP(x, p) XSETRECORD (x, p, 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) @@ -51,7 +52,7 @@ #define CHECK_LIVE_LDAP(ldap) do { \ CHECK_LDAP (ldap); \ if (!XLDAP (ldap)->ld) \ - signal_simple_error ("Attempting to access closed LDAP connection", \ + invalid_operation ("Attempting to access closed LDAP connection", \ ldap); \ } while (0) diff --text -u 'xemacs-21.5.1/src/elhash.c' 'xemacs-21.5.2/src/elhash.c' Index: ././src/elhash.c --- ././src/elhash.c Sat May 5 19:54:02 2001 +++ ././src/elhash.c Mon Jun 18 16:10:15 2001 @@ -573,12 +573,12 @@ unclear how this would cope with ERRB. */ static int hash_table_size_validate (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb) + Error_Behavior errb) { if (NATNUMP (value)) return 1; - maybe_signal_error (Qwrong_type_argument, list2 (Qnatnump, value), + maybe_signal_error_1 (Qwrong_type_argument, list2 (Qnatnump, value), Qhash_table, errb); return 0; } @@ -591,7 +591,7 @@ static int hash_table_weakness_validate (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb) + Error_Behavior errb) { if (EQ (value, Qnil)) return 1; if (EQ (value, Qt)) return 1; @@ -607,7 +607,7 @@ if (EQ (value, Qkey_or_value_weak)) return 1; if (EQ (value, Qvalue_weak)) return 1; - maybe_signal_simple_error ("Invalid hash table weakness", + maybe_invalid_constant ("Invalid hash table weakness", value, Qhash_table, errb); return 0; } @@ -629,20 +629,20 @@ if (EQ (obj, Qkey_or_value_weak)) return HASH_TABLE_KEY_VALUE_WEAK; if (EQ (obj, Qvalue_weak)) return HASH_TABLE_VALUE_WEAK; - signal_simple_error ("Invalid hash table weakness", obj); + invalid_constant ("Invalid hash table weakness", obj); return HASH_TABLE_NON_WEAK; /* not reached */ } static int hash_table_test_validate (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb) + Error_Behavior errb) { if (EQ (value, Qnil)) return 1; if (EQ (value, Qeq)) return 1; if (EQ (value, Qequal)) return 1; if (EQ (value, Qeql)) return 1; - maybe_signal_simple_error ("Invalid hash table test", + maybe_invalid_constant ("Invalid hash table test", value, Qhash_table, errb); return 0; } @@ -655,17 +655,17 @@ if (EQ (obj, Qequal)) return HASH_TABLE_EQUAL; if (EQ (obj, Qeql)) return HASH_TABLE_EQL; - signal_simple_error ("Invalid hash table test", obj); + invalid_constant ("Invalid hash table test", obj); return HASH_TABLE_EQ; /* not reached */ } static int hash_table_rehash_size_validate (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb) + Error_Behavior errb) { if (!FLOATP (value)) { - maybe_signal_error (Qwrong_type_argument, list2 (Qfloatp, value), + maybe_signal_error_1 (Qwrong_type_argument, list2 (Qfloatp, value), Qhash_table, errb); return 0; } @@ -674,7 +674,7 @@ double rehash_size = XFLOAT_DATA (value); if (rehash_size <= 1.0) { - maybe_signal_simple_error + maybe_invalid_argument ("Hash table rehash size must be greater than 1.0", value, Qhash_table, errb); return 0; @@ -692,11 +692,11 @@ static int hash_table_rehash_threshold_validate (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb) + Error_Behavior errb) { if (!FLOATP (value)) { - maybe_signal_error (Qwrong_type_argument, list2 (Qfloatp, value), + maybe_signal_error_1 (Qwrong_type_argument, list2 (Qfloatp, value), Qhash_table, errb); return 0; } @@ -705,7 +705,7 @@ double rehash_threshold = XFLOAT_DATA (value); if (rehash_threshold <= 0.0 || rehash_threshold >= 1.0) { - maybe_signal_simple_error + maybe_invalid_argument ("Hash table rehash threshold must be between 0.0 and 1.0", value, Qhash_table, errb); return 0; @@ -723,7 +723,7 @@ static int hash_table_data_validate (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb) + Error_Behavior errb) { int len; @@ -731,7 +731,7 @@ if (len & 1) { - maybe_signal_simple_error + maybe_sferror ("Hash table data must have alternating key/value pairs", value, Qhash_table, errb); return 0; @@ -909,11 +909,11 @@ else if (EQ (keyword, Q_rehash_threshold)) rehash_threshold = value; else if (EQ (keyword, Q_weakness)) weakness = value; else if (EQ (keyword, Q_type))/*obsolete*/ weakness = value; - else signal_simple_error ("Invalid hash table property keyword", keyword); + else invalid_constant ("Invalid hash table property keyword", keyword); } if (i < nargs) - signal_simple_error ("Hash table property requires a value", args[i]); + sferror ("Hash table property requires a value", args[i]); #define VALIDATE_VAR(var) \ if (!NILP (var)) hash_table_##var##_validate (Q##var, var, ERROR_ME); @@ -1092,6 +1092,7 @@ DEFUN ("remhash", Fremhash, 2, 2, 0, /* Remove the entry for KEY from HASH-TABLE. Do nothing if there is no entry for KEY in HASH-TABLE. +Return non-nil if an entry was removed. */ (key, hash_table)) { @@ -1665,28 +1666,28 @@ DEFSUBR (Finternal_hash_value); #endif - defsymbol (&Qhash_tablep, "hash-table-p"); - defsymbol (&Qhash_table, "hash-table"); - defsymbol (&Qhashtable, "hashtable"); - defsymbol (&Qweakness, "weakness"); - defsymbol (&Qvalue, "value"); - defsymbol (&Qkey_or_value, "key-or-value"); - defsymbol (&Qkey_and_value, "key-and-value"); - defsymbol (&Qrehash_size, "rehash-size"); - defsymbol (&Qrehash_threshold, "rehash-threshold"); - - defsymbol (&Qweak, "weak"); /* obsolete */ - defsymbol (&Qkey_weak, "key-weak"); /* obsolete */ - defsymbol (&Qkey_or_value_weak, "key-or-value-weak"); /* obsolete */ - defsymbol (&Qvalue_weak, "value-weak"); /* obsolete */ - defsymbol (&Qnon_weak, "non-weak"); /* obsolete */ - - defkeyword (&Q_test, ":test"); - defkeyword (&Q_size, ":size"); - defkeyword (&Q_rehash_size, ":rehash-size"); - defkeyword (&Q_rehash_threshold, ":rehash-threshold"); - defkeyword (&Q_weakness, ":weakness"); - defkeyword (&Q_type, ":type"); /* obsolete */ + DEFSYMBOL_MULTIWORD_PREDICATE (Qhash_tablep); + DEFSYMBOL (Qhash_table); + DEFSYMBOL (Qhashtable); + DEFSYMBOL (Qweakness); + DEFSYMBOL (Qvalue); + DEFSYMBOL (Qkey_or_value); + DEFSYMBOL (Qkey_and_value); + DEFSYMBOL (Qrehash_size); + DEFSYMBOL (Qrehash_threshold); + + DEFSYMBOL (Qweak); /* obsolete */ + DEFSYMBOL (Qkey_weak); /* obsolete */ + DEFSYMBOL (Qkey_or_value_weak); /* obsolete */ + DEFSYMBOL (Qvalue_weak); /* obsolete */ + DEFSYMBOL (Qnon_weak); /* obsolete */ + + DEFKEYWORD (Q_test); + DEFKEYWORD (Q_size); + DEFKEYWORD (Q_rehash_size); + DEFKEYWORD (Q_rehash_threshold); + DEFKEYWORD (Q_weakness); + DEFKEYWORD (Q_type); /* obsolete */ } void diff --text -u 'xemacs-21.5.1/src/elhash.h' 'xemacs-21.5.2/src/elhash.h' Index: ././src/elhash.h --- ././src/elhash.h Mon Apr 30 23:10:58 2001 +++ ././src/elhash.h Mon Jun 18 16:10:16 2001 @@ -29,6 +29,7 @@ #define XHASH_TABLE(x) XRECORD (x, hash_table, Lisp_Hash_Table) #define XSETHASH_TABLE(x, p) XSETRECORD (x, p, hash_table) +#define wrap_hash_table(p) wrap_record (p, hash_table) #define HASH_TABLEP(x) RECORDP (x, hash_table) #define CHECK_HASH_TABLE(x) CHECK_RECORD (x, hash_table) #define CONCHECK_HASH_TABLE(x) CONCHECK_RECORD (x, hash_table) diff --text -u 'xemacs-21.5.1/src/emacs-marshals.c' 'xemacs-21.5.2/src/emacs-marshals.c' Index: ././src/emacs-marshals.c --- ././src/emacs-marshals.c Fri Apr 13 03:23:37 2001 +++ ././src/emacs-marshals.c Tue Jun 5 02:00:00 2001 @@ -1,3 +1,5 @@ +/* This file was automatically generated by ../lisp/gtk-marshal.el */ +/* DO NOT EDIT BY HAND!!! */ #define GTK_VALUE_ARRAY(x) GTK_VALUE_POINTER(x) #define GTK_VALUE_LIST(x) GTK_VALUE_POINTER(x) @@ -235,6 +237,46 @@ } static void +emacs_gtk_marshal_INT__POINTER_INT (ffi_actual_function func, GtkArg *args) +{ + __INT_fn rfunc = (__INT_fn) func; + guint *return_val; + + return_val = GTK_RETLOC_INT (args[2]); + *return_val = (*rfunc) (GTK_VALUE_POINTER (args[0]), GTK_VALUE_INT (args[1])); +} + +static void +emacs_gtk_marshal_INT__POINTER_STRING_INT (ffi_actual_function func, GtkArg *args) +{ + __INT_fn rfunc = (__INT_fn) func; + guint *return_val; + + return_val = GTK_RETLOC_INT (args[3]); + *return_val = (*rfunc) (GTK_VALUE_POINTER (args[0]), GTK_VALUE_STRING (args[1]), GTK_VALUE_INT (args[2])); +} + +static void +emacs_gtk_marshal_INT__POINTER_STRING_STRING (ffi_actual_function func, GtkArg *args) +{ + __INT_fn rfunc = (__INT_fn) func; + guint *return_val; + + return_val = GTK_RETLOC_INT (args[3]); + *return_val = (*rfunc) (GTK_VALUE_POINTER (args[0]), GTK_VALUE_STRING (args[1]), GTK_VALUE_STRING (args[2])); +} + +static void +emacs_gtk_marshal_INT__POINTER_STRING (ffi_actual_function func, GtkArg *args) +{ + __INT_fn rfunc = (__INT_fn) func; + guint *return_val; + + return_val = GTK_RETLOC_INT (args[2]); + *return_val = (*rfunc) (GTK_VALUE_POINTER (args[0]), GTK_VALUE_STRING (args[1])); +} + +static void emacs_gtk_marshal_INT__POINTER (ffi_actual_function func, GtkArg *args) { __INT_fn rfunc = (__INT_fn) func; @@ -302,6 +344,13 @@ } static void +emacs_gtk_marshal_NONE__INT_INT_INT_INT (ffi_actual_function func, GtkArg *args) +{ + __NONE_fn rfunc = (__NONE_fn) func; + (*rfunc) (GTK_VALUE_INT (args[0]), GTK_VALUE_INT (args[1]), GTK_VALUE_INT (args[2]), GTK_VALUE_INT (args[3])); +} + +static void emacs_gtk_marshal_NONE__INT_INT (ffi_actual_function func, GtkArg *args) { __NONE_fn rfunc = (__NONE_fn) func; @@ -711,6 +760,13 @@ } static void +emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_INT_INT_INT_INT_INT_INT (ffi_actual_function func, GtkArg *args) +{ + __NONE_fn rfunc = (__NONE_fn) func; + (*rfunc) (GTK_VALUE_OBJECT (args[0]), GTK_VALUE_POINTER (args[1]), GTK_VALUE_POINTER (args[2]), GTK_VALUE_INT (args[3]), GTK_VALUE_INT (args[4]), GTK_VALUE_INT (args[5]), GTK_VALUE_INT (args[6]), GTK_VALUE_INT (args[7]), GTK_VALUE_INT (args[8])); +} + +static void emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_POINTER_STRING_INT (ffi_actual_function func, GtkArg *args) { __NONE_fn rfunc = (__NONE_fn) func; @@ -753,6 +809,13 @@ } static void +emacs_gtk_marshal_NONE__OBJECT_STRING_INT_INT_INT (ffi_actual_function func, GtkArg *args) +{ + __NONE_fn rfunc = (__NONE_fn) func; + (*rfunc) (GTK_VALUE_OBJECT (args[0]), GTK_VALUE_STRING (args[1]), GTK_VALUE_INT (args[2]), GTK_VALUE_INT (args[3]), GTK_VALUE_INT (args[4])); +} + +static void emacs_gtk_marshal_NONE__OBJECT_STRING_POINTER_INT_INT_INT (ffi_actual_function func, GtkArg *args) { __NONE_fn rfunc = (__NONE_fn) func; @@ -795,6 +858,13 @@ } static void +emacs_gtk_marshal_NONE__POINTER_INT_INT (ffi_actual_function func, GtkArg *args) +{ + __NONE_fn rfunc = (__NONE_fn) func; + (*rfunc) (GTK_VALUE_POINTER (args[0]), GTK_VALUE_INT (args[1]), GTK_VALUE_INT (args[2])); +} + +static void emacs_gtk_marshal_NONE__POINTER_POINTER_BOOL_INT_INT_INT_INT_INT_INT (ffi_actual_function func, GtkArg *args) { __NONE_fn rfunc = (__NONE_fn) func; @@ -851,6 +921,13 @@ } static void +emacs_gtk_marshal_NONE__POINTER_STRING_STRING (ffi_actual_function func, GtkArg *args) +{ + __NONE_fn rfunc = (__NONE_fn) func; + (*rfunc) (GTK_VALUE_POINTER (args[0]), GTK_VALUE_STRING (args[1]), GTK_VALUE_STRING (args[2])); +} + +static void emacs_gtk_marshal_NONE__POINTER_STRING (ffi_actual_function func, GtkArg *args) { __NONE_fn rfunc = (__NONE_fn) func; @@ -1348,42 +1425,37 @@ } static void -emacs_gtk_marshal_STRING__NONE (ffi_actual_function func, GtkArg *args) +emacs_gtk_marshal_STRING__POINTER_STRING (ffi_actual_function func, GtkArg *args) { __STRING_fn rfunc = (__STRING_fn) func; gchar * *return_val; - return_val = GTK_RETLOC_STRING (args[0]); - *return_val = (*rfunc) (); + return_val = GTK_RETLOC_STRING (args[2]); + *return_val = (*rfunc) (GTK_VALUE_POINTER (args[0]), GTK_VALUE_STRING (args[1])); } static void -emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_INT_INT_INT_INT_INT_INT (ffi_actual_function func, GtkArg *args) +emacs_gtk_marshal_STRING__POINTER (ffi_actual_function func, GtkArg *args) { - __NONE_fn rfunc = (__NONE_fn) func; - (*rfunc) (GTK_VALUE_OBJECT (args[0]), GTK_VALUE_POINTER (args[1]), GTK_VALUE_POINTER (args[2]), GTK_VALUE_INT (args[3]), GTK_VALUE_INT (args[4]), GTK_VALUE_INT (args[5]), GTK_VALUE_INT (args[6]), GTK_VALUE_INT (args[7]), GTK_VALUE_INT (args[8])); -} + __STRING_fn rfunc = (__STRING_fn) func; + gchar * *return_val; -static void -emacs_gtk_marshal_NONE__OBJECT_STRING_INT_INT_INT (ffi_actual_function func, GtkArg *args) -{ - __NONE_fn rfunc = (__NONE_fn) func; - (*rfunc) (GTK_VALUE_OBJECT (args[0]), GTK_VALUE_STRING (args[1]), GTK_VALUE_INT (args[2]), GTK_VALUE_INT (args[3]), GTK_VALUE_INT (args[4])); + return_val = GTK_RETLOC_STRING (args[1]); + *return_val = (*rfunc) (GTK_VALUE_POINTER (args[0])); } static void -emacs_gtk_marshal_NONE__INT_INT_INT_INT (ffi_actual_function func, GtkArg *args) +emacs_gtk_marshal_STRING__NONE (ffi_actual_function func, GtkArg *args) { - __NONE_fn rfunc = (__NONE_fn) func; - (*rfunc) (GTK_VALUE_INT (args[0]), GTK_VALUE_INT (args[1]), GTK_VALUE_INT (args[2]), GTK_VALUE_INT (args[3])); + __STRING_fn rfunc = (__STRING_fn) func; + gchar * *return_val; + + return_val = GTK_RETLOC_STRING (args[0]); + *return_val = (*rfunc) (); } #include "hash.h" -static struct hash_table * marshaller_hashtable; - -extern unsigned long string_hash (const char *xv); - static int our_string_eq (const void *st1, const void *st2) { @@ -1414,6 +1486,8 @@ return h; } +static struct hash_table *marshaller_hashtable; + static void initialize_marshaller_storage (void) { if (!marshaller_hashtable) @@ -1442,6 +1516,10 @@ puthash ("emacs_gtk_marshal_INT__OBJECT_POINTER", (void *) emacs_gtk_marshal_INT__OBJECT_POINTER, marshaller_hashtable); puthash ("emacs_gtk_marshal_INT__OBJECT_STRING", (void *) emacs_gtk_marshal_INT__OBJECT_STRING, marshaller_hashtable); puthash ("emacs_gtk_marshal_INT__OBJECT", (void *) emacs_gtk_marshal_INT__OBJECT, marshaller_hashtable); + puthash ("emacs_gtk_marshal_INT__POINTER_INT", (void *) emacs_gtk_marshal_INT__POINTER_INT, marshaller_hashtable); + puthash ("emacs_gtk_marshal_INT__POINTER_STRING_INT", (void *) emacs_gtk_marshal_INT__POINTER_STRING_INT, marshaller_hashtable); + puthash ("emacs_gtk_marshal_INT__POINTER_STRING_STRING", (void *) emacs_gtk_marshal_INT__POINTER_STRING_STRING, marshaller_hashtable); + puthash ("emacs_gtk_marshal_INT__POINTER_STRING", (void *) emacs_gtk_marshal_INT__POINTER_STRING, marshaller_hashtable); puthash ("emacs_gtk_marshal_INT__POINTER", (void *) emacs_gtk_marshal_INT__POINTER, marshaller_hashtable); puthash ("emacs_gtk_marshal_INT__STRING_STRING_INT_ARRAY", (void *) emacs_gtk_marshal_INT__STRING_STRING_INT_ARRAY, marshaller_hashtable); puthash ("emacs_gtk_marshal_INT__STRING", (void *) emacs_gtk_marshal_INT__STRING, marshaller_hashtable); @@ -1449,6 +1527,7 @@ puthash ("emacs_gtk_marshal_LIST__OBJECT", (void *) emacs_gtk_marshal_LIST__OBJECT, marshaller_hashtable); puthash ("emacs_gtk_marshal_LIST__NONE", (void *) emacs_gtk_marshal_LIST__NONE, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__BOOL", (void *) emacs_gtk_marshal_NONE__BOOL, marshaller_hashtable); + puthash ("emacs_gtk_marshal_NONE__INT_INT_INT_INT", (void *) emacs_gtk_marshal_NONE__INT_INT_INT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__INT_INT", (void *) emacs_gtk_marshal_NONE__INT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__INT", (void *) emacs_gtk_marshal_NONE__INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_BOOL_INT", (void *) emacs_gtk_marshal_NONE__OBJECT_BOOL_INT, marshaller_hashtable); @@ -1506,18 +1585,21 @@ puthash ("emacs_gtk_marshal_NONE__OBJECT_POINTER_INT_STRING_INT_POINTER_POINTER", (void *) emacs_gtk_marshal_NONE__OBJECT_POINTER_INT_STRING_INT_POINTER_POINTER, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_POINTER_INT_STRING", (void *) emacs_gtk_marshal_NONE__OBJECT_POINTER_INT_STRING, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_POINTER_INT", (void *) emacs_gtk_marshal_NONE__OBJECT_POINTER_INT, marshaller_hashtable); + puthash ("emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_INT_INT_INT_INT_INT_INT", (void *) emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_INT_INT_INT_INT_INT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_POINTER_STRING_INT", (void *) emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_POINTER_STRING_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_POINTER", (void *) emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_POINTER, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER", (void *) emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_POINTER_STRING_INT_POINTER_POINTER_POINTER_POINTER_BOOL_BOOL", (void *) emacs_gtk_marshal_NONE__OBJECT_POINTER_STRING_INT_POINTER_POINTER_POINTER_POINTER_BOOL_BOOL, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_POINTER", (void *) emacs_gtk_marshal_NONE__OBJECT_POINTER, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_STRING_BOOL", (void *) emacs_gtk_marshal_NONE__OBJECT_STRING_BOOL, marshaller_hashtable); + puthash ("emacs_gtk_marshal_NONE__OBJECT_STRING_INT_INT_INT", (void *) emacs_gtk_marshal_NONE__OBJECT_STRING_INT_INT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_STRING_POINTER_INT_INT_INT", (void *) emacs_gtk_marshal_NONE__OBJECT_STRING_POINTER_INT_INT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_STRING_POINTER_INT_INT", (void *) emacs_gtk_marshal_NONE__OBJECT_STRING_POINTER_INT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_STRING_STRING", (void *) emacs_gtk_marshal_NONE__OBJECT_STRING_STRING, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT_STRING", (void *) emacs_gtk_marshal_NONE__OBJECT_STRING, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__OBJECT", (void *) emacs_gtk_marshal_NONE__OBJECT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__POINTER_INT", (void *) emacs_gtk_marshal_NONE__POINTER_INT, marshaller_hashtable); + puthash ("emacs_gtk_marshal_NONE__POINTER_INT_INT", (void *) emacs_gtk_marshal_NONE__POINTER_INT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__POINTER_POINTER_BOOL_INT_INT_INT_INT_INT_INT", (void *) emacs_gtk_marshal_NONE__POINTER_POINTER_BOOL_INT_INT_INT_INT_INT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__POINTER_POINTER_BOOL_INT_INT_INT_INT", (void *) emacs_gtk_marshal_NONE__POINTER_POINTER_BOOL_INT_INT_INT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__POINTER_POINTER_INT_INT_INT_INT", (void *) emacs_gtk_marshal_NONE__POINTER_POINTER_INT_INT_INT_INT, marshaller_hashtable); @@ -1526,6 +1608,7 @@ puthash ("emacs_gtk_marshal_NONE__POINTER_POINTER_POINTER_INT_INT_STRING", (void *) emacs_gtk_marshal_NONE__POINTER_POINTER_POINTER_INT_INT_STRING, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__POINTER_POINTER_POINTER_POINTER", (void *) emacs_gtk_marshal_NONE__POINTER_POINTER_POINTER_POINTER, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__POINTER_POINTER", (void *) emacs_gtk_marshal_NONE__POINTER_POINTER, marshaller_hashtable); + puthash ("emacs_gtk_marshal_NONE__POINTER_STRING_STRING", (void *) emacs_gtk_marshal_NONE__POINTER_STRING_STRING, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__POINTER_STRING", (void *) emacs_gtk_marshal_NONE__POINTER_STRING, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__POINTER", (void *) emacs_gtk_marshal_NONE__POINTER, marshaller_hashtable); puthash ("emacs_gtk_marshal_NONE__NONE", (void *) emacs_gtk_marshal_NONE__NONE, marshaller_hashtable); @@ -1576,10 +1659,9 @@ puthash ("emacs_gtk_marshal_STRING__OBJECT_INT_INT", (void *) emacs_gtk_marshal_STRING__OBJECT_INT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_STRING__OBJECT_INT", (void *) emacs_gtk_marshal_STRING__OBJECT_INT, marshaller_hashtable); puthash ("emacs_gtk_marshal_STRING__OBJECT", (void *) emacs_gtk_marshal_STRING__OBJECT, marshaller_hashtable); + puthash ("emacs_gtk_marshal_STRING__POINTER_STRING", (void *) emacs_gtk_marshal_STRING__POINTER_STRING, marshaller_hashtable); + puthash ("emacs_gtk_marshal_STRING__POINTER", (void *) emacs_gtk_marshal_STRING__POINTER, marshaller_hashtable); puthash ("emacs_gtk_marshal_STRING__NONE", (void *) emacs_gtk_marshal_STRING__NONE, marshaller_hashtable); - puthash ("emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_INT_INT_INT_INT_INT_INT", (void *) emacs_gtk_marshal_NONE__OBJECT_POINTER_POINTER_INT_INT_INT_INT_INT_INT, marshaller_hashtable); - puthash ("emacs_gtk_marshal_NONE__OBJECT_STRING_INT_INT_INT", (void *) emacs_gtk_marshal_NONE__OBJECT_STRING_INT_INT_INT, marshaller_hashtable); - puthash ("emacs_gtk_marshal_NONE__INT_INT_INT_INT", (void *) emacs_gtk_marshal_NONE__INT_INT_INT_INT, marshaller_hashtable); }; } diff --text -u 'xemacs-21.5.1/src/emacs-widget-accessors.c' 'xemacs-21.5.2/src/emacs-widget-accessors.c' Index: ././src/emacs-widget-accessors.c --- ././src/emacs-widget-accessors.c Fri Apr 13 03:23:38 2001 +++ ././src/emacs-widget-accessors.c Thu May 31 11:00:31 2001 @@ -1,3 +1,5 @@ +/* This file was automatically generated by ../lisp/gtk-widget-accessors.el */ +/* DO NOT EDIT BY HAND!!! */ DEFUN ("gtk-adjustment-lower", Fgtk_adjustment_lower, 1, 1, 0, /* Access the `lower' slot of OBJ, a GtkAdjustment object. */ @@ -10,7 +12,7 @@ if (!GTK_IS_ADJUSTMENT (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkAdjustment", obj); + wtaerror ("Object is not a GtkAdjustment", obj); }; the_obj = GTK_ADJUSTMENT (XGTK_OBJECT (obj)->object); @@ -31,7 +33,7 @@ if (!GTK_IS_ADJUSTMENT (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkAdjustment", obj); + wtaerror ("Object is not a GtkAdjustment", obj); }; the_obj = GTK_ADJUSTMENT (XGTK_OBJECT (obj)->object); @@ -52,7 +54,7 @@ if (!GTK_IS_ADJUSTMENT (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkAdjustment", obj); + wtaerror ("Object is not a GtkAdjustment", obj); }; the_obj = GTK_ADJUSTMENT (XGTK_OBJECT (obj)->object); @@ -73,7 +75,7 @@ if (!GTK_IS_ADJUSTMENT (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkAdjustment", obj); + wtaerror ("Object is not a GtkAdjustment", obj); }; the_obj = GTK_ADJUSTMENT (XGTK_OBJECT (obj)->object); @@ -94,7 +96,7 @@ if (!GTK_IS_ADJUSTMENT (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkAdjustment", obj); + wtaerror ("Object is not a GtkAdjustment", obj); }; the_obj = GTK_ADJUSTMENT (XGTK_OBJECT (obj)->object); @@ -115,7 +117,7 @@ if (!GTK_IS_ADJUSTMENT (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkAdjustment", obj); + wtaerror ("Object is not a GtkAdjustment", obj); }; the_obj = GTK_ADJUSTMENT (XGTK_OBJECT (obj)->object); @@ -136,7 +138,7 @@ if (!GTK_IS_WIDGET (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkWidget", obj); + wtaerror ("Object is not a GtkWidget", obj); }; the_obj = GTK_WIDGET (XGTK_OBJECT (obj)->object); @@ -157,7 +159,7 @@ if (!GTK_IS_WIDGET (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkWidget", obj); + wtaerror ("Object is not a GtkWidget", obj); }; the_obj = GTK_WIDGET (XGTK_OBJECT (obj)->object); @@ -178,7 +180,7 @@ if (!GTK_IS_WIDGET (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkWidget", obj); + wtaerror ("Object is not a GtkWidget", obj); }; the_obj = GTK_WIDGET (XGTK_OBJECT (obj)->object); @@ -199,7 +201,7 @@ if (!GTK_IS_WIDGET (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkWidget", obj); + wtaerror ("Object is not a GtkWidget", obj); }; the_obj = GTK_WIDGET (XGTK_OBJECT (obj)->object); @@ -220,7 +222,7 @@ if (!GTK_IS_WIDGET (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkWidget", obj); + wtaerror ("Object is not a GtkWidget", obj); }; the_obj = GTK_WIDGET (XGTK_OBJECT (obj)->object); @@ -241,7 +243,7 @@ if (!GTK_IS_BUTTON (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkButton", obj); + wtaerror ("Object is not a GtkButton", obj); }; the_obj = GTK_BUTTON (XGTK_OBJECT (obj)->object); @@ -262,7 +264,7 @@ if (!GTK_IS_BUTTON (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkButton", obj); + wtaerror ("Object is not a GtkButton", obj); }; the_obj = GTK_BUTTON (XGTK_OBJECT (obj)->object); @@ -283,7 +285,7 @@ if (!GTK_IS_BUTTON (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkButton", obj); + wtaerror ("Object is not a GtkButton", obj); }; the_obj = GTK_BUTTON (XGTK_OBJECT (obj)->object); @@ -304,7 +306,7 @@ if (!GTK_IS_COMBO (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCombo", obj); + wtaerror ("Object is not a GtkCombo", obj); }; the_obj = GTK_COMBO (XGTK_OBJECT (obj)->object); @@ -325,7 +327,7 @@ if (!GTK_IS_COMBO (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCombo", obj); + wtaerror ("Object is not a GtkCombo", obj); }; the_obj = GTK_COMBO (XGTK_OBJECT (obj)->object); @@ -346,7 +348,7 @@ if (!GTK_IS_COMBO (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCombo", obj); + wtaerror ("Object is not a GtkCombo", obj); }; the_obj = GTK_COMBO (XGTK_OBJECT (obj)->object); @@ -367,7 +369,7 @@ if (!GTK_IS_COMBO (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCombo", obj); + wtaerror ("Object is not a GtkCombo", obj); }; the_obj = GTK_COMBO (XGTK_OBJECT (obj)->object); @@ -388,7 +390,7 @@ if (!GTK_IS_COMBO (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCombo", obj); + wtaerror ("Object is not a GtkCombo", obj); }; the_obj = GTK_COMBO (XGTK_OBJECT (obj)->object); @@ -409,7 +411,7 @@ if (!GTK_IS_GAMMA_CURVE (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkGammaCurve", obj); + wtaerror ("Object is not a GtkGammaCurve", obj); }; the_obj = GTK_GAMMA_CURVE (XGTK_OBJECT (obj)->object); @@ -430,7 +432,7 @@ if (!GTK_IS_GAMMA_CURVE (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkGammaCurve", obj); + wtaerror ("Object is not a GtkGammaCurve", obj); }; the_obj = GTK_GAMMA_CURVE (XGTK_OBJECT (obj)->object); @@ -451,7 +453,7 @@ if (!GTK_IS_GAMMA_CURVE (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkGammaCurve", obj); + wtaerror ("Object is not a GtkGammaCurve", obj); }; the_obj = GTK_GAMMA_CURVE (XGTK_OBJECT (obj)->object); @@ -472,7 +474,7 @@ if (!GTK_IS_GAMMA_CURVE (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkGammaCurve", obj); + wtaerror ("Object is not a GtkGammaCurve", obj); }; the_obj = GTK_GAMMA_CURVE (XGTK_OBJECT (obj)->object); @@ -493,7 +495,7 @@ if (!GTK_IS_GAMMA_CURVE (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkGammaCurve", obj); + wtaerror ("Object is not a GtkGammaCurve", obj); }; the_obj = GTK_GAMMA_CURVE (XGTK_OBJECT (obj)->object); @@ -514,7 +516,7 @@ if (!GTK_IS_CHECK_MENU_ITEM (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCheckMenuItem", obj); + wtaerror ("Object is not a GtkCheckMenuItem", obj); }; the_obj = GTK_CHECK_MENU_ITEM (XGTK_OBJECT (obj)->object); @@ -535,7 +537,7 @@ if (!GTK_IS_NOTEBOOK (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkNotebook", obj); + wtaerror ("Object is not a GtkNotebook", obj); }; the_obj = GTK_NOTEBOOK (XGTK_OBJECT (obj)->object); @@ -556,7 +558,7 @@ if (!GTK_IS_TEXT (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkText", obj); + wtaerror ("Object is not a GtkText", obj); }; the_obj = GTK_TEXT (XGTK_OBJECT (obj)->object); @@ -577,7 +579,7 @@ if (!GTK_IS_TEXT (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkText", obj); + wtaerror ("Object is not a GtkText", obj); }; the_obj = GTK_TEXT (XGTK_OBJECT (obj)->object); @@ -598,7 +600,7 @@ if (!GTK_IS_FILE_SELECTION (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFileSelection", obj); + wtaerror ("Object is not a GtkFileSelection", obj); }; the_obj = GTK_FILE_SELECTION (XGTK_OBJECT (obj)->object); @@ -619,7 +621,7 @@ if (!GTK_IS_FILE_SELECTION (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFileSelection", obj); + wtaerror ("Object is not a GtkFileSelection", obj); }; the_obj = GTK_FILE_SELECTION (XGTK_OBJECT (obj)->object); @@ -640,7 +642,7 @@ if (!GTK_IS_FILE_SELECTION (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFileSelection", obj); + wtaerror ("Object is not a GtkFileSelection", obj); }; the_obj = GTK_FILE_SELECTION (XGTK_OBJECT (obj)->object); @@ -661,7 +663,7 @@ if (!GTK_IS_FILE_SELECTION (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFileSelection", obj); + wtaerror ("Object is not a GtkFileSelection", obj); }; the_obj = GTK_FILE_SELECTION (XGTK_OBJECT (obj)->object); @@ -682,7 +684,7 @@ if (!GTK_IS_FILE_SELECTION (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFileSelection", obj); + wtaerror ("Object is not a GtkFileSelection", obj); }; the_obj = GTK_FILE_SELECTION (XGTK_OBJECT (obj)->object); @@ -703,7 +705,7 @@ if (!GTK_IS_FILE_SELECTION (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFileSelection", obj); + wtaerror ("Object is not a GtkFileSelection", obj); }; the_obj = GTK_FILE_SELECTION (XGTK_OBJECT (obj)->object); @@ -724,7 +726,7 @@ if (!GTK_IS_FILE_SELECTION (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFileSelection", obj); + wtaerror ("Object is not a GtkFileSelection", obj); }; the_obj = GTK_FILE_SELECTION (XGTK_OBJECT (obj)->object); @@ -745,7 +747,7 @@ if (!GTK_IS_FILE_SELECTION (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFileSelection", obj); + wtaerror ("Object is not a GtkFileSelection", obj); }; the_obj = GTK_FILE_SELECTION (XGTK_OBJECT (obj)->object); @@ -766,7 +768,7 @@ if (!GTK_IS_FILE_SELECTION (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFileSelection", obj); + wtaerror ("Object is not a GtkFileSelection", obj); }; the_obj = GTK_FILE_SELECTION (XGTK_OBJECT (obj)->object); @@ -787,7 +789,7 @@ if (!GTK_IS_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFontSelectionDialog", obj); + wtaerror ("Object is not a GtkFontSelectionDialog", obj); }; the_obj = GTK_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -808,7 +810,7 @@ if (!GTK_IS_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFontSelectionDialog", obj); + wtaerror ("Object is not a GtkFontSelectionDialog", obj); }; the_obj = GTK_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -829,7 +831,7 @@ if (!GTK_IS_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFontSelectionDialog", obj); + wtaerror ("Object is not a GtkFontSelectionDialog", obj); }; the_obj = GTK_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -850,7 +852,7 @@ if (!GTK_IS_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFontSelectionDialog", obj); + wtaerror ("Object is not a GtkFontSelectionDialog", obj); }; the_obj = GTK_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -871,7 +873,7 @@ if (!GTK_IS_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFontSelectionDialog", obj); + wtaerror ("Object is not a GtkFontSelectionDialog", obj); }; the_obj = GTK_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -892,7 +894,7 @@ if (!GTK_IS_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkFontSelectionDialog", obj); + wtaerror ("Object is not a GtkFontSelectionDialog", obj); }; the_obj = GTK_FONT_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -913,7 +915,7 @@ if (!GTK_IS_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkColorSelectionDialog", obj); + wtaerror ("Object is not a GtkColorSelectionDialog", obj); }; the_obj = GTK_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -934,7 +936,7 @@ if (!GTK_IS_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkColorSelectionDialog", obj); + wtaerror ("Object is not a GtkColorSelectionDialog", obj); }; the_obj = GTK_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -955,7 +957,7 @@ if (!GTK_IS_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkColorSelectionDialog", obj); + wtaerror ("Object is not a GtkColorSelectionDialog", obj); }; the_obj = GTK_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -976,7 +978,7 @@ if (!GTK_IS_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkColorSelectionDialog", obj); + wtaerror ("Object is not a GtkColorSelectionDialog", obj); }; the_obj = GTK_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -997,7 +999,7 @@ if (!GTK_IS_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkColorSelectionDialog", obj); + wtaerror ("Object is not a GtkColorSelectionDialog", obj); }; the_obj = GTK_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -1018,7 +1020,7 @@ if (!GTK_IS_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkColorSelectionDialog", obj); + wtaerror ("Object is not a GtkColorSelectionDialog", obj); }; the_obj = GTK_COLOR_SELECTION_DIALOG (XGTK_OBJECT (obj)->object); @@ -1039,7 +1041,7 @@ if (!GTK_IS_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkDialog", obj); + wtaerror ("Object is not a GtkDialog", obj); }; the_obj = GTK_DIALOG (XGTK_OBJECT (obj)->object); @@ -1060,7 +1062,7 @@ if (!GTK_IS_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkDialog", obj); + wtaerror ("Object is not a GtkDialog", obj); }; the_obj = GTK_DIALOG (XGTK_OBJECT (obj)->object); @@ -1081,7 +1083,7 @@ if (!GTK_IS_INPUT_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkInputDialog", obj); + wtaerror ("Object is not a GtkInputDialog", obj); }; the_obj = GTK_INPUT_DIALOG (XGTK_OBJECT (obj)->object); @@ -1102,7 +1104,7 @@ if (!GTK_IS_INPUT_DIALOG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkInputDialog", obj); + wtaerror ("Object is not a GtkInputDialog", obj); }; the_obj = GTK_INPUT_DIALOG (XGTK_OBJECT (obj)->object); @@ -1123,7 +1125,7 @@ if (!GTK_IS_PLUG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkPlug", obj); + wtaerror ("Object is not a GtkPlug", obj); }; the_obj = GTK_PLUG (XGTK_OBJECT (obj)->object); @@ -1144,7 +1146,7 @@ if (!GTK_IS_PLUG (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkPlug", obj); + wtaerror ("Object is not a GtkPlug", obj); }; the_obj = GTK_PLUG (XGTK_OBJECT (obj)->object); @@ -1165,7 +1167,7 @@ if (!GTK_IS_OBJECT (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkObject", obj); + wtaerror ("Object is not a GtkObject", obj); }; the_obj = GTK_OBJECT (XGTK_OBJECT (obj)->object); @@ -1186,7 +1188,7 @@ if (!GTK_IS_OBJECT (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkObject", obj); + wtaerror ("Object is not a GtkObject", obj); }; the_obj = GTK_OBJECT (XGTK_OBJECT (obj)->object); @@ -1207,7 +1209,7 @@ if (!GTK_IS_PANED (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkPaned", obj); + wtaerror ("Object is not a GtkPaned", obj); }; the_obj = GTK_PANED (XGTK_OBJECT (obj)->object); @@ -1228,7 +1230,7 @@ if (!GTK_IS_PANED (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkPaned", obj); + wtaerror ("Object is not a GtkPaned", obj); }; the_obj = GTK_PANED (XGTK_OBJECT (obj)->object); @@ -1249,7 +1251,7 @@ if (!GTK_IS_PANED (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkPaned", obj); + wtaerror ("Object is not a GtkPaned", obj); }; the_obj = GTK_PANED (XGTK_OBJECT (obj)->object); @@ -1270,7 +1272,7 @@ if (!GTK_IS_PANED (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkPaned", obj); + wtaerror ("Object is not a GtkPaned", obj); }; the_obj = GTK_PANED (XGTK_OBJECT (obj)->object); @@ -1291,7 +1293,7 @@ if (!GTK_IS_PANED (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkPaned", obj); + wtaerror ("Object is not a GtkPaned", obj); }; the_obj = GTK_PANED (XGTK_OBJECT (obj)->object); @@ -1312,7 +1314,7 @@ if (!GTK_IS_PANED (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkPaned", obj); + wtaerror ("Object is not a GtkPaned", obj); }; the_obj = GTK_PANED (XGTK_OBJECT (obj)->object); @@ -1333,7 +1335,7 @@ if (!GTK_IS_CLIST (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCList", obj); + wtaerror ("Object is not a GtkCList", obj); }; the_obj = GTK_CLIST (XGTK_OBJECT (obj)->object); @@ -1354,7 +1356,7 @@ if (!GTK_IS_CLIST (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCList", obj); + wtaerror ("Object is not a GtkCList", obj); }; the_obj = GTK_CLIST (XGTK_OBJECT (obj)->object); @@ -1375,7 +1377,7 @@ if (!GTK_IS_CLIST (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCList", obj); + wtaerror ("Object is not a GtkCList", obj); }; the_obj = GTK_CLIST (XGTK_OBJECT (obj)->object); @@ -1396,7 +1398,7 @@ if (!GTK_IS_CLIST (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCList", obj); + wtaerror ("Object is not a GtkCList", obj); }; the_obj = GTK_CLIST (XGTK_OBJECT (obj)->object); @@ -1417,7 +1419,7 @@ if (!GTK_IS_CLIST (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCList", obj); + wtaerror ("Object is not a GtkCList", obj); }; the_obj = GTK_CLIST (XGTK_OBJECT (obj)->object); @@ -1438,7 +1440,7 @@ if (!GTK_IS_CLIST (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCList", obj); + wtaerror ("Object is not a GtkCList", obj); }; the_obj = GTK_CLIST (XGTK_OBJECT (obj)->object); @@ -1459,7 +1461,7 @@ if (!GTK_IS_CLIST (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkCList", obj); + wtaerror ("Object is not a GtkCList", obj); }; the_obj = GTK_CLIST (XGTK_OBJECT (obj)->object); @@ -1480,7 +1482,7 @@ if (!GTK_IS_LIST (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkList", obj); + wtaerror ("Object is not a GtkList", obj); }; the_obj = GTK_LIST (XGTK_OBJECT (obj)->object); @@ -1501,7 +1503,7 @@ if (!GTK_IS_LIST (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkList", obj); + wtaerror ("Object is not a GtkList", obj); }; the_obj = GTK_LIST (XGTK_OBJECT (obj)->object); @@ -1522,7 +1524,7 @@ if (!GTK_IS_TREE (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkTree", obj); + wtaerror ("Object is not a GtkTree", obj); }; the_obj = GTK_TREE (XGTK_OBJECT (obj)->object); @@ -1543,7 +1545,7 @@ if (!GTK_IS_TREE (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkTree", obj); + wtaerror ("Object is not a GtkTree", obj); }; the_obj = GTK_TREE (XGTK_OBJECT (obj)->object); @@ -1564,7 +1566,7 @@ if (!GTK_IS_TREE (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkTree", obj); + wtaerror ("Object is not a GtkTree", obj); }; the_obj = GTK_TREE (XGTK_OBJECT (obj)->object); @@ -1585,7 +1587,7 @@ if (!GTK_IS_TREE (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkTree", obj); + wtaerror ("Object is not a GtkTree", obj); }; the_obj = GTK_TREE (XGTK_OBJECT (obj)->object); @@ -1606,7 +1608,7 @@ if (!GTK_IS_TREE_ITEM (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkTreeItem", obj); + wtaerror ("Object is not a GtkTreeItem", obj); }; the_obj = GTK_TREE_ITEM (XGTK_OBJECT (obj)->object); @@ -1627,7 +1629,7 @@ if (!GTK_IS_SCROLLED_WINDOW (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkScrolledWindow", obj); + wtaerror ("Object is not a GtkScrolledWindow", obj); }; the_obj = GTK_SCROLLED_WINDOW (XGTK_OBJECT (obj)->object); @@ -1648,7 +1650,7 @@ if (!GTK_IS_SCROLLED_WINDOW (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkScrolledWindow", obj); + wtaerror ("Object is not a GtkScrolledWindow", obj); }; the_obj = GTK_SCROLLED_WINDOW (XGTK_OBJECT (obj)->object); @@ -1669,7 +1671,7 @@ if (!GTK_IS_SCROLLED_WINDOW (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkScrolledWindow", obj); + wtaerror ("Object is not a GtkScrolledWindow", obj); }; the_obj = GTK_SCROLLED_WINDOW (XGTK_OBJECT (obj)->object); @@ -1690,7 +1692,7 @@ if (!GTK_IS_SCROLLED_WINDOW (XGTK_OBJECT (obj)->object)) { - signal_simple_error ("Object is not a GtkScrolledWindow", obj); + wtaerror ("Object is not a GtkScrolledWindow", obj); }; the_obj = GTK_SCROLLED_WINDOW (XGTK_OBJECT (obj)->object); diff --text -u 'xemacs-21.5.1/src/emacs.c' 'xemacs-21.5.2/src/emacs.c' Index: ././src/emacs.c --- ././src/emacs.c Sat May 5 19:54:05 2001 +++ ././src/emacs.c Mon Jun 18 16:10:16 2001 @@ -506,7 +506,7 @@ /* Now, reset our signal handler, so the next time, we just die. Don't do this before auto-saving. */ - signal (sig, SIG_DFL); + EMACS_SIGNAL (sig, SIG_DFL); /* Keep in mind that there's more than one signal that we can crash on. */ @@ -631,7 +631,7 @@ { /* #### bad bad bad; this function shouldn't do anything except set a flag, or weird corruption could happen. */ - signal (sig, memory_warning_signal); + EMACS_SIGNAL (sig, memory_warning_signal); malloc_warning (GETTEXT ("Operating system warns that virtual memory is running low.\n")); @@ -657,10 +657,10 @@ if (i == 0) { /* Do not trust to what crt0 has stuffed into argv[0] */ - Extbyte full_exe_path[MAX_PATH]; + Extbyte full_exe_path[PATH_MAX]; Lisp_Object fullpath; - GetModuleFileName (NULL, full_exe_path, MAX_PATH); + GetModuleFileName (NULL, full_exe_path, PATH_MAX); fullpath = build_ext_string (full_exe_path, Qmswindows_tstr); result = Fcons (fullpath, result); #if defined(HAVE_SHLIB) @@ -1237,6 +1237,7 @@ defsubr() (i.e. DEFSUBR) deferror(), DEFERROR(), or DEFERROR_STANDARD() defkeyword() or DEFKEYWORD() + Fput() Order does not matter in these functions. */ @@ -1292,6 +1293,7 @@ syms_of_general (); syms_of_glyphs (); syms_of_glyphs_eimage (); + syms_of_glyphs_shared (); syms_of_glyphs_widget (); syms_of_gui (); syms_of_gutter (); @@ -2014,9 +2016,13 @@ complex_vars_of_menubar (); #endif - /* This calls Fmake_glyph_internal(). */ #ifdef HAVE_SCROLLBARS + /* This calls Fmake_glyph_internal(). */ complex_vars_of_scrollbar (); +#ifdef HAVE_MS_WINDOWS + /* Calls make_lisp_hash_table(). */ + complex_vars_of_scrollbar_mswindows (); +#endif #endif /* This calls allocate_glyph(). */ @@ -2179,7 +2185,7 @@ #endif #endif /* HAVE_X_WINDOWS */ -#if defined(MULE) && defined(HAVE_WNN) +#if defined (MULE) && defined (HAVE_WNN) reinit_vars_of_mule_wnn (); #endif @@ -2598,7 +2604,7 @@ assert (!gc_in_progress); if (run_temacs_argc < 0) - error ("I've lost my temacs-hood."); + invalid_operation ("I've lost my temacs-hood.", Qunbound); /* Need to convert the orig_invoc_name and all of the arguments to external format. */ @@ -3213,8 +3219,9 @@ while (!STRINGP (Vpath_separator) || (XSTRING_CHAR_LENGTH (Vpath_separator) != 1)) - Vpath_separator = signal_simple_continuable_error - ("`path-separator' should be set to a single-character string", + Vpath_separator = signal_continuable_error + (Qinvalid_state, + "`path-separator' should be set to a single-character string", Vpath_separator); return (split_string_by_emchar_1 @@ -3310,6 +3317,27 @@ } #endif /* USE_ASSERTIONS */ + +#ifdef DEBUG_XEMACS + +DEFUN ("force-debugging-signal", Fforce_debugging_signal, 0, 1, 0, /* +Cause XEmacs to enter the debugger. +On some systems, there may be no way to do this gracefully; if so, +nothing happens unless ABORT is non-nil, in which case XEmacs will +abort() -- a sure-fire way to immediately get back to the debugger, +but also a sure-fire way to kill XEmacs (and dump core on Unix +systems)! +*/ + (abort_)) +{ + enter_debugger (); + if (!NILP (abort_)) + abort (); + return Qnil; +} + +#endif /* DEBUG_XEMACS */ + #ifdef QUANTIFY DEFUN ("quantify-start-recording-data", Fquantify_start_recording_data, 0, 0, "", /* @@ -3355,6 +3383,10 @@ DEFSUBR (Fkill_emacs); DEFSUBR (Fnoninteractive); +#ifdef DEBUG_XEMACS + DEFSUBR (Fforce_debugging_signal); +#endif + #ifdef QUANTIFY DEFSUBR (Fquantify_start_recording_data); DEFSUBR (Fquantify_stop_recording_data); @@ -3364,8 +3396,8 @@ DEFSUBR (Fsplit_string_by_char); DEFSUBR (Fsplit_path); /* #### */ - defsymbol (&Qkill_emacs_hook, "kill-emacs-hook"); - defsymbol (&Qsave_buffers_kill_emacs, "save-buffers-kill-emacs"); + DEFSYMBOL (Qkill_emacs_hook); + DEFSYMBOL (Qsave_buffers_kill_emacs); } void diff --text -u 'xemacs-21.5.1/src/emodules.c' 'xemacs-21.5.2/src/emodules.c' Index: ././src/emodules.c --- ././src/emodules.c Fri Apr 13 03:23:39 2001 +++ ././src/emodules.c Wed Jun 6 21:34:45 2001 @@ -32,6 +32,8 @@ /* Load path */ Lisp_Object Vmodule_load_path; +Lisp_Object Qdll_error; + typedef struct _emodules_list { int used; /* Is this slot used? */ @@ -327,7 +329,7 @@ dlhandle = 0; if ((module == (const char *)0) || (module[0] == '\0')) - error ("Empty module name"); + 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. */ @@ -336,46 +338,51 @@ GCPRO2(filename, foundname); filename = build_string (tmod); - fd = locate_file(Vmodule_load_path, filename, Vmodule_extensions, - &foundname, -1); + fd = locate_file (Vmodule_load_path, filename, Vmodule_extensions, + &foundname, -1); UNGCPRO; if (fd < 0) - signal_simple_error ("Cannot open dynamic module", filename); + signal_error (Qdll_error, "Cannot open dynamic module", filename); soname = (char *)alloca (XSTRING_LENGTH (foundname) + 1); strcpy (soname, (char *)XSTRING_DATA (foundname)); dlhandle = dll_open (soname); if (dlhandle == (dll_handle)0) - error ("Opening dynamic module: %s", dll_error (dlhandle)); + { + CBufbyte *dllerrint; + + EXTERNAL_TO_C_STRING (dll_error (dlhandle), dllerrint, Qnative); + signal_error (Qdll_error, "Opening dynamic module", + build_string (dllerrint)); + } ellcc_rev = (const long *)dll_variable (dlhandle, "emodule_compiler"); if ((ellcc_rev == (const long *)0) || (*ellcc_rev <= 0)) - error ("Missing symbol `emodule_compiler': Invalid dynamic module"); + signal_error (Qdll_error, "Invalid dynamic module: Missing symbol `emodule_compiler'", Qunbound); if (*ellcc_rev > EMODULES_REVISION) - error ("Unsupported version `%ld(%ld)': Invalid dynamic module", - *ellcc_rev, EMODULES_REVISION); + signal_ferror (Qdll_error, "Invalid dynamic module: Unsupported version `%ld(%ld)'", *ellcc_rev, EMODULES_REVISION); f = (const char **)dll_variable (dlhandle, "emodule_name"); if ((f == (const char **)0) || (*f == (const char *)0)) - error ("Missing symbol `emodule_name': Invalid dynamic module"); + signal_error (Qdll_error, "Invalid dynamic module: Missing symbol `emodule_name'", Qunbound); mname = (char *)alloca (strlen (*f) + 1); strcpy (mname, *f); if (mname[0] == '\0') - error ("Empty value for `emodule_name': Invalid dynamic module"); + signal_error (Qdll_error, "Invalid dynamic module: Empty value for `emodule_name'", Qunbound); f = (const char **)dll_variable (dlhandle, "emodule_version"); if ((f == (const char **)0) || (*f == (const char *)0)) - error ("Missing symbol `emodule_version': Invalid dynamic module"); + signal_error (Qdll_error, "Missing symbol `emodule_version': Invalid dynamic module", Qunbound); mver = (char *)alloca (strlen (*f) + 1); strcpy (mver, *f); f = (const char **)dll_variable (dlhandle, "emodule_title"); if ((f == (const char **)0) || (*f == (const char *)0)) - error ("Missing symbol `emodule_title': Invalid dynamic module"); + signal_error (Qdll_error, "Invalid dynamic module: Missing symbol `emodule_title'", Qunbound); mtitle = (char *)alloca (strlen (*f) + 1); strcpy (mtitle, *f); @@ -394,25 +401,29 @@ strcat (symname, mname); modsyms = (void (*)(void))dll_function (dlhandle, symname); if (modsyms == (void (*)(void))0) - error ("Missing symbol `%s': Invalid dynamic module", symname); + { + missing_symbol: + signal_error (Qdll_error, "Invalid dynamic module: Missing symbol", + build_string (symname)); + } strcpy (symname, "vars_of_"); strcat (symname, mname); modvars = (void (*)(void))dll_function (dlhandle, symname); if (modvars == (void (*)(void))0) - error ("Missing symbol `%s': Invalid dynamic module", symname); + goto missing_symbol; strcpy (symname, "docs_of_"); strcat (symname, mname); moddocs = (void (*)(void))dll_function (dlhandle, symname); if (moddocs == (void (*)(void))0) - error ("Missing symbol `%s': Invalid dynamic module", symname); + goto missing_symbol; if (modname && modname[0] && strcmp (modname, mname)) - error ("Module name mismatch"); + signal_error (Qdll_error, "Module name mismatch", Qunbound); if (modver && modver[0] && strcmp (modver, mver)) - error ("Module version mismatch"); + signal_error (Qdll_error, "Module version mismatch", Qunbound); /* * Attempt to make a new slot for this module. If this really is the @@ -518,6 +529,7 @@ void syms_of_module (void) { + DEFERROR_STANDARD (Qdll_error, Qerror); DEFSUBR(Fload_module); DEFSUBR(Flist_modules); #ifdef DANGEROUS_NASTY_SCARY_MONSTER diff --text -u 'xemacs-21.5.1/src/esd.c' 'xemacs-21.5.2/src/esd.c' Index: ././src/esd.c --- ././src/esd.c Fri Apr 13 03:23:39 2001 +++ ././src/esd.c Wed Jun 6 21:34:45 2001 @@ -19,32 +19,32 @@ /* Synched up with: Not in FSF. */ -#ifdef HAVE_CONFIG_H -#include -#endif +/* This file Mule-ized by Ben Wing, 5-15-01. */ +#include #include "lisp.h" + #include "miscplay.h" +#include "sound.h" + +#include "sysfile.h" #include -#include -#include -#include -#include -#include /* the name given to ESD - I think this should identify ourselves */ #define ESD_NAME "xemacs" -int esd_play_sound_file(char *file, int vol); -int esd_play_sound_file(char *file, int vol) +int esd_play_sound_file (Extbyte *file, int vol); +int +esd_play_sound_file (Extbyte *file, int vol) { /* #### FIXME: vol is ignored */ return esd_play_file(ESD_NAME, file, 0); } -int esd_play_sound_data(unsigned char *data, size_t length, int vol); -int esd_play_sound_data(unsigned char *data, size_t length, int vol) +int esd_play_sound_data (UChar_Binary *data, size_t length, int vol); +int +esd_play_sound_data (UChar_Binary *data, size_t length, int vol) { /* #### FIXME: vol is ignored */ size_t (*parsesndfile)(void **dayta,size_t *sz,void **outbuf); size_t (*sndcnv)(void **dayta,size_t *sz,void **); @@ -63,7 +63,7 @@ ffmt = analyze_format(data,&fmt,&speed,&tracks,&parsesndfile); if (ffmt != fmtRaw && ffmt != fmtSunAudio && ffmt != fmtWave) { - message(GETTEXT("audio: Unsupported file format (neither RAW, nor Sun/DECAudio, nor WAVE)")); + sound_warn("Unsupported file format (neither RAW, nor Sun/DECAudio, nor WAVE)"); return 0; } @@ -87,16 +87,24 @@ flags |= ESD_BITS16; break; default: - message(GETTEXT("audio: byte format %d unimplemented"), fmt); - return 0; + { + Extbyte warn_buf[255]; + sprintf (warn_buf, "byte format %d unimplemented", fmt); + sound_warn (warn_buf); + return 0; + } } switch (tracks) { case 1: flags |= ESD_MONO; break; case 2: flags |= ESD_STEREO; break; default: - message(GETTEXT("audio: %d channels - only 1 or 2 supported"), tracks); - return 0; + { + Extbyte warn_buf[255]; + sprintf (warn_buf, "%d channels - only 1 or 2 supported", tracks); + sound_warn (warn_buf); + return 0; + } } sock = esd_play_stream(flags, speed, NULL, "xemacs"); @@ -110,11 +118,13 @@ for (cptr = optr; (crtn = sndcnv((void **)&cptr,&prtn, (void **)&sptr)) > 0; ) { if ((wrtn = write(sock,sptr,crtn)) < 0) { - message(GETTEXT("audio: write error (%s)"), strerror(errno)); + sound_perror ("write error"); goto END_OF_PLAY; } if (wrtn != crtn) { - message(GETTEXT("audio: only wrote %d of %d bytes"), wrtn, crtn); + Extbyte warn_buf[255]; + sprintf (warn_buf , "only wrote %d of %d bytes", wrtn, crtn); + sound_warn (warn_buf); goto END_OF_PLAY; } } diff --text -u 'xemacs-21.5.1/src/eval.c' 'xemacs-21.5.2/src/eval.c' Index: ././src/eval.c --- ././src/eval.c Fri Apr 13 03:23:39 2001 +++ ././src/eval.c Mon Jun 18 16:10:17 2001 @@ -1,7 +1,7 @@ /* Evaluator for XEmacs Lisp interpreter. Copyright (C) 1985-1987, 1992-1994 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. - Copyright (C) 2000 Ben Wing. + Copyright (C) 2000, 2001 Ben Wing. This file is part of XEmacs. @@ -284,13 +284,13 @@ print_subr (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { Lisp_Subr *subr = XSUBR (obj); - const char *header = + const CBufbyte *header = (subr->max_args == UNEVALLED) ? "#prompt ? " (interactive)>" : ">"; + const CBufbyte *name = subr_name (subr); + const CBufbyte *trailer = subr->prompt ? " (interactive)>" : ">"; if (print_readably) - error ("printing unreadable object %s%s%s", header, name, trailer); + printing_unreadable_object ("%s%s%s", header, name, trailer); write_c_string (header, printcharfun); write_c_string (name, printcharfun); @@ -866,7 +866,7 @@ CHECK_CONS (tem); value = Feval (XCAR (tem)); if (!NILP (XCDR (tem))) - signal_simple_error + sferror ("`let' bindings can have only one value-form", var); } } @@ -924,7 +924,7 @@ gcpro1.nvars = idx; if (!NILP (XCDR (tem))) - signal_simple_error + sferror ("`let' bindings can have only one value-form", var); } } @@ -1096,7 +1096,7 @@ Lisp_Object doc = XCAR (args); Fput (sym, Qvariable_documentation, doc); if (!NILP (args = XCDR (args))) - error ("too many arguments"); + signal_error (Qwrong_number_of_arguments, "too many arguments", Qunbound); } } @@ -1144,7 +1144,7 @@ Lisp_Object doc = XCAR (args); Fput (sym, Qvariable_documentation, doc); if (!NILP (args = XCDR (args))) - error ("too many arguments"); + signal_error (Qwrong_number_of_arguments, "too many arguments", Qunbound); } #ifdef I18N3 @@ -1343,10 +1343,7 @@ static void unwind_to_catch (struct catchtag *c, Lisp_Object val) { -#if 0 /* FSFmacs */ - /* #### */ REGISTER int last_time; -#endif /* Unwind the specbind, catch, and handler stacks back to CATCH Before each catch is discarded, unbind all special bindings @@ -1365,8 +1362,7 @@ set_poll_suppress_count (catch->poll_suppress_count); #endif -#if 0 /* FSFmacs */ - /* #### FSFmacs has the following loop. Is it more correct? */ +#if 1 do { last_time = catchlist == c; @@ -1374,21 +1370,40 @@ /* Unwind the specpdl stack, and then restore the proper set of handlers. */ unbind_to (catchlist->pdlcount, Qnil); - handlerlist = catchlist->handlerlist; catchlist = catchlist->next; #ifdef ERROR_CHECK_TYPECHECK check_error_state_sanity (); #endif } while (! last_time); -#else /* Actual XEmacs code */ +#else + /* Former XEmacs code. This is definitely not as correct because + there may be a number of catches we're unwinding, and a number + of unwind-protects in the process. By not undoing the catches till + the end, there may be invalid catches still current. (This would + be a particular problem with code like this: + + (catch 'foo + (call-some-code-which-does... + (catch 'bar + (unwind-protect + (call-some-code-which-does... + (catch 'bar + (call-some-code-which-does... + (throw 'foo nil)))) + (throw 'bar nil))))) + + This would try to throw to the inner (catch 'bar)! + + --ben + */ /* Unwind the specpdl stack */ unbind_to (c->pdlcount, Qnil); catchlist = c->next; #ifdef ERROR_CHECK_TYPECHECK check_error_state_sanity (); #endif -#endif +#endif /* Former code */ gcprolist = c->gcpro; backtrace_list = c->backlist; @@ -1504,6 +1519,9 @@ static Lisp_Object condition_bind_unwind (Lisp_Object loser) { + /* There is no problem freeing stuff here like there is in + condition_case_unwind(), because there are no outside pointers + (like the tag below in the catchlist) pointing to the objects. */ Lisp_Cons *victim; /* ((handler-fun . handler-args) ... other handlers) */ Lisp_Object tem = XCAR (loser); @@ -1526,17 +1544,32 @@ static Lisp_Object condition_case_unwind (Lisp_Object loser) { - Lisp_Cons *victim; - /* (( . clauses) ... other handlers */ - victim = XCONS (XCAR (loser)); - free_cons (victim); + /* NO! Doing this now leaves the tag deleted in a still-active + catch. With the recent changes to unwind_to_catch(), the + evil situation might not happen any more; it certainly could + happen before because it did. But it's very precarious to rely + on something like this. #### Instead we should rewrite, adopting + the FSF's mechanism with a struct handler instead of + Vcondition_handlers; then we have NO Lisp-object structures used + to hold all of the values, and there's no possibility either of + crashes from freeing objects too quickly, or objects not getting + freed and hanging around till the next GC. + + In practice, the extra consing here should not matter because + it only happens when we throw past the condition-case, which almost + always is the result of an error. Most of the time, there will be + no error, and we will free the objects below in the main function. + + --ben + + DO NOT DO: free_cons (XCAR (loser)); + */ - victim = XCONS (loser); if (EQ (loser, Vcondition_handlers)) /* may have been rebound to some tail */ - Vcondition_handlers = victim->cdr; + Vcondition_handlers = XCDR (loser); - free_cons (victim); + /* DO NOT DO: free_cons (loser); */ return Qnil; } @@ -1599,7 +1632,7 @@ { int speccount = specpdl_depth(); struct catchtag c; - struct gcpro gcpro1; + struct gcpro gcpro1, gcpro2, gcpro3; #if 0 /* FSFmacs */ c.tag = Qnil; @@ -1607,9 +1640,18 @@ /* Do consing now so out-of-memory error happens up front */ /* (unbound . stuff) is a special condition-case kludge marker which is known specially by Fsignal. - This is an abomination, but to fix it would require either + [[ This is an abomination, but to fix it would require either making condition_case cons (a union of the conditions of the clauses) - or changing the byte-compiler output (no thanks). */ + or changing the byte-compiler output (no thanks).]] + + The above comment is clearly wrong. FSF does not do it this way + and did not change the byte-compiler output. Instead they use a + `struct handler' to hold the various values (in place of our + Vcondition_handlers) and chain them together, with pointers from + the `struct catchtag' to the `struct handler'. We should perhaps + consider moving to something similar, but not before I merge my + stderr-proc workspace, which contains changes to these + functions. --ben */ c.tag = noseeum_cons (noseeum_cons (Qunbound, handlers), Vcondition_handlers); #endif @@ -1647,22 +1689,27 @@ Vcondition_handlers = c.tag; #endif GCPRO1 (harg); /* Somebody has to gc-protect */ - c.val = ((*bfun) (barg)); + UNGCPRO; - /* The following is *not* true: (ben) + /* Once we change `catchlist' below, the stuff in c will not be GCPRO'd. */ + GCPRO3 (harg, c.val, c.tag); - ungcpro, restoring catchlist and condition_handlers are actually - redundant since unbind_to now restores them. But it looks funny not to - have this code here, and it doesn't cost anything, so I'm leaving it.*/ - UNGCPRO; catchlist = c.next; #ifdef ERROR_CHECK_TYPECHECK check_error_state_sanity (); #endif + /* Note: The unbind also resets Vcondition_handlers. Maybe we should + delete this here. */ Vcondition_handlers = XCDR (c.tag); + unbind_to (speccount, Qnil); - return unbind_to (speccount, c.val); + UNGCPRO; + /* free the conses *after* the unbind, because the unbind will run + condition_case_unwind above. */ + free_cons (XCONS (XCAR (c.tag))); + free_cons (XCONS (c.tag)); + return c.val; } static Lisp_Object @@ -1720,7 +1767,7 @@ else { invalid_condition_handler: - signal_simple_error ("Invalid condition handler", handler); + sferror ("Invalid condition handler", handler); } } @@ -1839,7 +1886,9 @@ #else /* But the reality is that that stinks, because: */ /* GACK!!! Really want some way for debug-on-quit errors to be continuable!! */ - error ("Returning a value from an error is no longer supported"); + signal_error (Qunimplemented, + "Returning a value from an error is no longer supported", + Qunbound); #endif } @@ -2017,7 +2066,7 @@ data. */ /* The simplest external error function: it would be called - signal_continuable_error() in the terminology below, but it's + signal_continuable_error_1() in the terminology below, but it's Lisp-callable. */ DEFUN ("signal", Fsignal, 2, 2, 0, /* @@ -2055,7 +2104,7 @@ /* Signal a non-continuable error. */ DOESNT_RETURN -signal_error (Lisp_Object sig, Lisp_Object data) +signal_error_1 (Lisp_Object sig, Lisp_Object data) { for (;;) Fsignal (sig, data); @@ -2120,7 +2169,7 @@ (2) silently fail and return some error value. (3) do as (2) but issue a warning in the process. - Currently there's lots of stuff that passes an Error_behavior + Currently there's lots of stuff that passes an Error_Behavior value and calls maybe_signal_error() and other such functions. This approach is inherently error-prone and broken. A much more robust and easier approach is to use call_with_suspended_errors(). @@ -2130,7 +2179,7 @@ Lisp_Object call_with_suspended_errors (lisp_fn_t fun, volatile Lisp_Object retval, - Lisp_Object class, Error_behavior errb, + Lisp_Object class, Error_Behavior errb, int nargs, ...) { va_list vargs; @@ -2221,8 +2270,8 @@ Qresource, etc.). */ void -maybe_signal_error (Lisp_Object sig, Lisp_Object data, Lisp_Object class, - Error_behavior errb) +maybe_signal_error_1 (Lisp_Object sig, Lisp_Object data, Lisp_Object class, + Error_Behavior errb) { if (ERRB_EQ (errb, ERROR_ME_NOT)) return; @@ -2237,8 +2286,8 @@ according to ERRB. */ Lisp_Object -maybe_signal_continuable_error (Lisp_Object sig, Lisp_Object data, - Lisp_Object class, Error_behavior errb) +maybe_signal_continuable_error_1 (Lisp_Object sig, Lisp_Object data, + Lisp_Object class, Error_Behavior errb) { if (ERRB_EQ (errb, ERROR_ME_NOT)) return Qnil; @@ -2254,129 +2303,119 @@ /****************** Error functions class 2 ******************/ -/* Class 2: Printf-like functions that signal an error. - These functions signal an error of a specified type, whose data - is a single string, created using the arguments. */ - -/* dump an error message; called like printf */ +/* Class 2: Signal an error with a string and an associated object. + Normally these functions are used to attach one associated object, + but to attach no objects, specify Qunbound for FROB, and for more + than one object, make a list of the objects with Qunbound as the + first element. (If you have specifically two objects to attach, + consider using the function in class 3 below.) These functions + signal an error of a specified type, whose data is one or more + objects (usually two), a string the related Lisp object(s) + specified as FROB. */ + +/* Out of REASON and FROB, return a list of elements suitable for passing + to signal_error_1(). */ + +Lisp_Object +build_error_data (const CBufbyte *reason, Lisp_Object frob) +{ + if (EQ (frob, Qunbound)) + frob = Qnil; + else if (CONSP (frob) && EQ (XCAR (frob), Qunbound)) + frob = XCDR (frob); + else + frob = list1 (frob); + if (!reason) + return frob; + else + return Fcons (build_translated_string (reason), frob); +} DOESNT_RETURN -type_error (Lisp_Object type, const char *fmt, ...) +signal_error (Lisp_Object type, const CBufbyte *reason, Lisp_Object frob) { - Lisp_Object obj; - va_list args; - - va_start (args, fmt); - obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1, - args); - va_end (args); - - /* Fsignal GC-protects its args */ - signal_error (type, list1 (obj)); + signal_error_1 (type, build_error_data (reason, frob)); } void -maybe_type_error (Lisp_Object type, Lisp_Object class, Error_behavior errb, - const char *fmt, ...) +maybe_signal_error (Lisp_Object type, const CBufbyte *reason, + Lisp_Object frob, Lisp_Object class, + Error_Behavior errb) { - Lisp_Object obj; - va_list args; - /* Optimization: */ if (ERRB_EQ (errb, ERROR_ME_NOT)) return; - - va_start (args, fmt); - obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1, - args); - va_end (args); - - /* Fsignal GC-protects its args */ - maybe_signal_error (type, list1 (obj), class, errb); + maybe_signal_error_1 (type, build_error_data (reason, frob), class, errb); } Lisp_Object -continuable_type_error (Lisp_Object type, const char *fmt, ...) +signal_continuable_error (Lisp_Object type, const CBufbyte *reason, + Lisp_Object frob) { - Lisp_Object obj; - va_list args; - - va_start (args, fmt); - obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1, - args); - va_end (args); - - /* Fsignal GC-protects its args */ - return Fsignal (type, list1 (obj)); + return Fsignal (type, build_error_data (reason, frob)); } Lisp_Object -maybe_continuable_type_error (Lisp_Object type, Lisp_Object class, - Error_behavior errb, const char *fmt, ...) +maybe_signal_continuable_error (Lisp_Object type, const CBufbyte *reason, + Lisp_Object frob, Lisp_Object class, + Error_Behavior errb) { - Lisp_Object obj; - va_list args; - /* Optimization: */ if (ERRB_EQ (errb, ERROR_ME_NOT)) return Qnil; - - va_start (args, fmt); - obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1, - args); - va_end (args); - - /* Fsignal GC-protects its args */ - return maybe_signal_continuable_error (type, list1 (obj), class, errb); + return maybe_signal_continuable_error_1 (type, + build_error_data (reason, frob), + class, errb); } /****************** Error functions class 3 ******************/ -/* Class 3: Signal an error with a string and an associated object. +/* Class 3: Signal an error with a string and two associated objects. These functions signal an error of a specified type, whose data - is two objects, a string and a related Lisp object (usually the object - where the error is occurring). */ + is three objects, a string and two related Lisp objects. + (The equivalent could be accomplished using the class 2 functions, + but these are more convenient in this particular case.) */ DOESNT_RETURN -signal_type_error (Lisp_Object type, const char *reason, Lisp_Object frob) +signal_error_2 (Lisp_Object type, const CBufbyte *reason, + Lisp_Object frob0, Lisp_Object frob1) { - if (UNBOUNDP (frob)) - signal_error (type, list1 (build_translated_string (reason))); - else - signal_error (type, list2 (build_translated_string (reason), frob)); + signal_error_1 (type, list3 (build_translated_string (reason), frob0, + frob1)); } void -maybe_signal_type_error (Lisp_Object type, const char *reason, - Lisp_Object frob, Lisp_Object class, - Error_behavior errb) +maybe_signal_error_2 (Lisp_Object type, const CBufbyte *reason, + Lisp_Object frob0, Lisp_Object frob1, + Lisp_Object class, Error_Behavior errb) { /* Optimization: */ if (ERRB_EQ (errb, ERROR_ME_NOT)) return; - maybe_signal_error (type, list2 (build_translated_string (reason), frob), - class, errb); + maybe_signal_error_1 (type, list3 (build_translated_string (reason), frob0, + frob1), class, errb); } Lisp_Object -signal_type_continuable_error (Lisp_Object type, const char *reason, - Lisp_Object frob) +signal_continuable_error_2 (Lisp_Object type, const CBufbyte *reason, + Lisp_Object frob0, Lisp_Object frob1) { - return Fsignal (type, list2 (build_translated_string (reason), frob)); + return Fsignal (type, list3 (build_translated_string (reason), frob0, + frob1)); } Lisp_Object -maybe_signal_type_continuable_error (Lisp_Object type, const char *reason, - Lisp_Object frob, Lisp_Object class, - Error_behavior errb) +maybe_signal_continuable_error_2 (Lisp_Object type, const CBufbyte *reason, + Lisp_Object frob0, Lisp_Object frob1, + Lisp_Object class, Error_Behavior errb) { /* Optimization: */ if (ERRB_EQ (errb, ERROR_ME_NOT)) return Qnil; - return maybe_signal_continuable_error - (type, list2 (build_translated_string (reason), - frob), class, errb); + return maybe_signal_continuable_error_1 + (type, list3 (build_translated_string (reason), frob0, frob1), + class, errb); } @@ -2384,12 +2423,10 @@ /* Class 4: Printf-like functions that signal an error. These functions signal an error of a specified type, whose data - is a two objects, a string (created using the arguments) and a - Lisp object. -*/ + is a single string, created using the arguments. */ DOESNT_RETURN -type_error_with_frob (Lisp_Object type, Lisp_Object frob, const char *fmt, ...) +signal_ferror (Lisp_Object type, const CBufbyte *fmt, ...) { Lisp_Object obj; va_list args; @@ -2400,13 +2437,12 @@ va_end (args); /* Fsignal GC-protects its args */ - signal_error (type, list2 (obj, frob)); + signal_error (type, 0, obj); } void -maybe_type_error_with_frob (Lisp_Object type, Lisp_Object frob, - Lisp_Object class, Error_behavior errb, - const char *fmt, ...) +maybe_signal_ferror (Lisp_Object type, Lisp_Object class, Error_Behavior errb, + const CBufbyte *fmt, ...) { Lisp_Object obj; va_list args; @@ -2421,12 +2457,11 @@ va_end (args); /* Fsignal GC-protects its args */ - maybe_signal_error (type, list2 (obj, frob), class, errb); + maybe_signal_error (type, 0, obj, class, errb); } Lisp_Object -continuable_type_error_with_frob (Lisp_Object type, Lisp_Object frob, - const char *fmt, ...) +signal_continuable_ferror (Lisp_Object type, const CBufbyte *fmt, ...) { Lisp_Object obj; va_list args; @@ -2437,13 +2472,12 @@ va_end (args); /* Fsignal GC-protects its args */ - return Fsignal (type, list2 (obj, frob)); + return Fsignal (type, list1 (obj)); } Lisp_Object -maybe_continuable_type_error_with_frob (Lisp_Object type, Lisp_Object frob, - Lisp_Object class, Error_behavior errb, - const char *fmt, ...) +maybe_signal_continuable_ferror (Lisp_Object type, Lisp_Object class, + Error_Behavior errb, const CBufbyte *fmt, ...) { Lisp_Object obj; va_list args; @@ -2458,71 +2492,27 @@ va_end (args); /* Fsignal GC-protects its args */ - return maybe_signal_continuable_error (type, list2 (obj, frob), - class, errb); + return maybe_signal_continuable_error (type, 0, obj, class, errb); } /****************** Error functions class 5 ******************/ -/* Class 5: Signal an error with a string and two associated objects. +/* Class 5: Printf-like functions that signal an error. These functions signal an error of a specified type, whose data - is three objects, a string and two related Lisp objects. */ - -DOESNT_RETURN -signal_type_error_2 (Lisp_Object type, const char *reason, - Lisp_Object frob0, Lisp_Object frob1) -{ - signal_error (type, list3 (build_translated_string (reason), frob0, - frob1)); -} - -void -maybe_signal_type_error_2 (Lisp_Object type, const char *reason, - Lisp_Object frob0, Lisp_Object frob1, - Lisp_Object class, Error_behavior errb) -{ - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return; - maybe_signal_error (type, list3 (build_translated_string (reason), frob0, - frob1), class, errb); -} - - -Lisp_Object -signal_type_continuable_error_2 (Lisp_Object type, const char *reason, - Lisp_Object frob0, Lisp_Object frob1) -{ - return Fsignal (type, list3 (build_translated_string (reason), frob0, - frob1)); -} - -Lisp_Object -maybe_signal_type_continuable_error_2 (Lisp_Object type, const char *reason, - Lisp_Object frob0, Lisp_Object frob1, - Lisp_Object class, Error_behavior errb) -{ - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return Qnil; - return maybe_signal_continuable_error - (type, list3 (build_translated_string (reason), frob0, - frob1), - class, errb); -} - - -/****************** Simple error functions class 2 ******************/ - -/* Simple class 2: Printf-like functions that signal an error. - These functions signal an error of type Qerror, whose data - is a single string, created using the arguments. */ - -/* dump an error message; called like printf */ + is a one or more objects, a string (created using the arguments) + and additional Lisp objects specified in FROB. (The syntax of FROB + is the same as for class 2.) + + There is no need for a class 6 because you can always attach 2 + objects using class 5 (for FROB, specify a list with three + elements, the first of which is Qunbound), and these functions are + not commonly used. +*/ DOESNT_RETURN -error (const char *fmt, ...) +signal_ferror_with_frob (Lisp_Object type, Lisp_Object frob, const CBufbyte *fmt, + ...) { Lisp_Object obj; va_list args; @@ -2533,11 +2523,13 @@ va_end (args); /* Fsignal GC-protects its args */ - signal_error (Qerror, list1 (obj)); + signal_error_1 (type, Fcons (obj, build_error_data (0, frob))); } void -maybe_error (Lisp_Object class, Error_behavior errb, const char *fmt, ...) +maybe_signal_ferror_with_frob (Lisp_Object type, Lisp_Object frob, + Lisp_Object class, Error_Behavior errb, + const CBufbyte *fmt, ...) { Lisp_Object obj; va_list args; @@ -2552,11 +2544,13 @@ va_end (args); /* Fsignal GC-protects its args */ - maybe_signal_error (Qerror, list1 (obj), class, errb); + maybe_signal_error_1 (type, Fcons (obj, build_error_data (0, frob)), class, + errb); } Lisp_Object -continuable_error (const char *fmt, ...) +signal_continuable_ferror_with_frob (Lisp_Object type, Lisp_Object frob, + const CBufbyte *fmt, ...) { Lisp_Object obj; va_list args; @@ -2567,12 +2561,14 @@ va_end (args); /* Fsignal GC-protects its args */ - return Fsignal (Qerror, list1 (obj)); + return Fsignal (type, Fcons (obj, build_error_data (0, frob))); } Lisp_Object -maybe_continuable_error (Lisp_Object class, Error_behavior errb, - const char *fmt, ...) +maybe_signal_continuable_ferror_with_frob (Lisp_Object type, Lisp_Object frob, + Lisp_Object class, + Error_Behavior errb, + const CBufbyte *fmt, ...) { Lisp_Object obj; va_list args; @@ -2587,287 +2583,239 @@ va_end (args); /* Fsignal GC-protects its args */ - return maybe_signal_continuable_error (Qerror, list1 (obj), class, errb); + return maybe_signal_continuable_error_1 (type, + Fcons (obj, + build_error_data (0, frob)), + class, errb); } -/****************** Simple error functions class 3 ******************/ - -/* Simple class 3: Signal an error with a string and an associated object. - These functions signal an error of type Qerror, whose data - is two objects, a string and a related Lisp object (usually the object - where the error is occurring). */ - -DOESNT_RETURN -signal_simple_error (const char *reason, Lisp_Object frob) +/* This is what the QUIT macro calls to signal a quit */ +void +signal_quit (void) { - signal_error (Qerror, list2 (build_translated_string (reason), frob)); + /* This function can GC */ + if (EQ (Vquit_flag, Qcritical)) + debug_on_quit |= 2; /* set critical bit. */ + Vquit_flag = Qnil; + /* note that this is continuable. */ + Fsignal (Qquit, Qnil); } -void -maybe_signal_simple_error (const char *reason, Lisp_Object frob, - Lisp_Object class, Error_behavior errb) + +/************************ convenience error functions ***********************/ + +Lisp_Object +signal_void_function_error (Lisp_Object function) { - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return; - maybe_signal_error (Qerror, list2 (build_translated_string (reason), frob), - class, errb); + return Fsignal (Qvoid_function, list1 (function)); } Lisp_Object -signal_simple_continuable_error (const char *reason, Lisp_Object frob) +signal_invalid_function_error (Lisp_Object function) { - return Fsignal (Qerror, list2 (build_translated_string (reason), frob)); + return Fsignal (Qinvalid_function, list1 (function)); } Lisp_Object -maybe_signal_simple_continuable_error (const char *reason, Lisp_Object frob, - Lisp_Object class, Error_behavior errb) +signal_wrong_number_of_arguments_error (Lisp_Object function, int nargs) { - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return Qnil; - return maybe_signal_continuable_error - (Qerror, list2 (build_translated_string (reason), - frob), class, errb); + return Fsignal (Qwrong_number_of_arguments, + list2 (function, make_int (nargs))); } - -/****************** Simple error functions class 4 ******************/ - -/* Simple class 4: Printf-like functions that signal an error. - These functions signal an error of type Qerror, whose data - is a two objects, a string (created using the arguments) and a - Lisp object. -*/ - +/* Used in list traversal macros for efficiency. */ DOESNT_RETURN -error_with_frob (Lisp_Object frob, const char *fmt, ...) +signal_malformed_list_error (Lisp_Object list) { - Lisp_Object obj; - va_list args; - - va_start (args, fmt); - obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1, - args); - va_end (args); - - /* Fsignal GC-protects its args */ - signal_error (Qerror, list2 (obj, frob)); + signal_error (Qmalformed_list, 0, list); } -void -maybe_error_with_frob (Lisp_Object frob, Lisp_Object class, - Error_behavior errb, const char *fmt, ...) +DOESNT_RETURN +signal_malformed_property_list_error (Lisp_Object list) { - Lisp_Object obj; - va_list args; - - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return; - - va_start (args, fmt); - obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1, - args); - va_end (args); - - /* Fsignal GC-protects its args */ - maybe_signal_error (Qerror, list2 (obj, frob), class, errb); + signal_error (Qmalformed_property_list, 0, list); } -Lisp_Object -continuable_error_with_frob (Lisp_Object frob, const char *fmt, ...) +DOESNT_RETURN +signal_circular_list_error (Lisp_Object list) { - Lisp_Object obj; - va_list args; - - va_start (args, fmt); - obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1, - args); - va_end (args); - - /* Fsignal GC-protects its args */ - return Fsignal (Qerror, list2 (obj, frob)); + signal_error (Qcircular_list, 0, list); } -Lisp_Object -maybe_continuable_error_with_frob (Lisp_Object frob, Lisp_Object class, - Error_behavior errb, const char *fmt, ...) +DOESNT_RETURN +signal_circular_property_list_error (Lisp_Object list) { - Lisp_Object obj; - va_list args; - - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return Qnil; + signal_error (Qcircular_property_list, 0, list); +} - va_start (args, fmt); - obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1, - args); - va_end (args); +DOESNT_RETURN +syntax_error (const CBufbyte *reason, Lisp_Object frob) +{ + signal_error (Qsyntax_error, reason, frob); +} - /* Fsignal GC-protects its args */ - return maybe_signal_continuable_error (Qerror, list2 (obj, frob), - class, errb); +DOESNT_RETURN +syntax_error_2 (const CBufbyte *reason, Lisp_Object frob1, Lisp_Object frob2) +{ + signal_error_2 (Qsyntax_error, reason, frob1, frob2); } - -/****************** Simple error functions class 5 ******************/ +void +maybe_syntax_error (const CBufbyte *reason, Lisp_Object frob, + Lisp_Object class, Error_Behavior errb) +{ + maybe_signal_error (Qsyntax_error, reason, frob, class, errb); +} -/* Simple class 5: Signal an error with a string and two associated objects. - These functions signal an error of type Qerror, whose data - is three objects, a string and two related Lisp objects. */ +DOESNT_RETURN +sferror (const CBufbyte *reason, Lisp_Object frob) +{ + signal_error (Qstructure_formation_error, reason, frob); +} DOESNT_RETURN -signal_simple_error_2 (const char *reason, - Lisp_Object frob0, Lisp_Object frob1) +sferror_2 (const CBufbyte *reason, Lisp_Object frob1, Lisp_Object frob2) { - signal_error (Qerror, list3 (build_translated_string (reason), frob0, - frob1)); + signal_error_2 (Qstructure_formation_error, reason, frob1, frob2); } void -maybe_signal_simple_error_2 (const char *reason, Lisp_Object frob0, - Lisp_Object frob1, Lisp_Object class, - Error_behavior errb) +maybe_sferror (const CBufbyte *reason, Lisp_Object frob, + Lisp_Object class, Error_Behavior errb) { - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return; - maybe_signal_error (Qerror, list3 (build_translated_string (reason), frob0, - frob1), class, errb); + maybe_signal_error (Qstructure_formation_error, reason, frob, class, errb); } - -Lisp_Object -signal_simple_continuable_error_2 (const char *reason, Lisp_Object frob0, - Lisp_Object frob1) +DOESNT_RETURN +invalid_argument (const CBufbyte *reason, Lisp_Object frob) { - return Fsignal (Qerror, list3 (build_translated_string (reason), frob0, - frob1)); + signal_error (Qinvalid_argument, reason, frob); } -Lisp_Object -maybe_signal_simple_continuable_error_2 (const char *reason, Lisp_Object frob0, - Lisp_Object frob1, Lisp_Object class, - Error_behavior errb) +DOESNT_RETURN +invalid_argument_2 (const CBufbyte *reason, Lisp_Object frob1, + Lisp_Object frob2) { - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return Qnil; - return maybe_signal_continuable_error - (Qerror, list3 (build_translated_string (reason), frob0, - frob1), - class, errb); + signal_error_2 (Qinvalid_argument, reason, frob1, frob2); } - -/* This is what the QUIT macro calls to signal a quit */ void -signal_quit (void) +maybe_invalid_argument (const CBufbyte *reason, Lisp_Object frob, + Lisp_Object class, Error_Behavior errb) { - /* This function can GC */ - if (EQ (Vquit_flag, Qcritical)) - debug_on_quit |= 2; /* set critical bit. */ - Vquit_flag = Qnil; - /* note that this is continuable. */ - Fsignal (Qquit, Qnil); + maybe_signal_error (Qinvalid_argument, reason, frob, class, errb); } - -/* Used in core lisp functions for efficiency */ -Lisp_Object -signal_void_function_error (Lisp_Object function) +DOESNT_RETURN +invalid_constant (const CBufbyte *reason, Lisp_Object frob) { - return Fsignal (Qvoid_function, list1 (function)); + signal_error (Qinvalid_constant, reason, frob); } -Lisp_Object -signal_invalid_function_error (Lisp_Object function) +DOESNT_RETURN +invalid_constant_2 (const CBufbyte *reason, Lisp_Object frob1, + Lisp_Object frob2) { - return Fsignal (Qinvalid_function, list1 (function)); + signal_error_2 (Qinvalid_constant, reason, frob1, frob2); } -Lisp_Object -signal_wrong_number_of_arguments_error (Lisp_Object function, int nargs) +void +maybe_invalid_constant (const CBufbyte *reason, Lisp_Object frob, + Lisp_Object class, Error_Behavior errb) { - return Fsignal (Qwrong_number_of_arguments, - list2 (function, make_int (nargs))); + maybe_signal_error (Qinvalid_constant, reason, frob, class, errb); } -/* Used in list traversal macros for efficiency. */ DOESNT_RETURN -signal_malformed_list_error (Lisp_Object list) +invalid_operation (const CBufbyte *reason, Lisp_Object frob) { - signal_error (Qmalformed_list, list1 (list)); + signal_error (Qinvalid_operation, reason, frob); } DOESNT_RETURN -signal_malformed_property_list_error (Lisp_Object list) +invalid_operation_2 (const CBufbyte *reason, Lisp_Object frob1, + Lisp_Object frob2) { - signal_error (Qmalformed_property_list, list1 (list)); + signal_error_2 (Qinvalid_operation, reason, frob1, frob2); } -DOESNT_RETURN -signal_circular_list_error (Lisp_Object list) +void +maybe_invalid_operation (const CBufbyte *reason, Lisp_Object frob, + Lisp_Object class, Error_Behavior errb) { - signal_error (Qcircular_list, list1 (list)); + maybe_signal_error (Qinvalid_operation, reason, frob, class, errb); } DOESNT_RETURN -signal_circular_property_list_error (Lisp_Object list) +invalid_change (const CBufbyte *reason, Lisp_Object frob) { - signal_error (Qcircular_property_list, list1 (list)); + signal_error (Qinvalid_change, reason, frob); } DOESNT_RETURN -syntax_error (const char *reason, Lisp_Object frob) +invalid_change_2 (const CBufbyte *reason, Lisp_Object frob1, Lisp_Object frob2) { - signal_type_error (Qsyntax_error, reason, frob); + signal_error_2 (Qinvalid_change, reason, frob1, frob2); } -DOESNT_RETURN -syntax_error_2 (const char *reason, Lisp_Object frob1, Lisp_Object frob2) +void +maybe_invalid_change (const CBufbyte *reason, Lisp_Object frob, + Lisp_Object class, Error_Behavior errb) { - signal_type_error_2 (Qsyntax_error, reason, frob1, frob2); + maybe_signal_error (Qinvalid_change, reason, frob, class, errb); } DOESNT_RETURN -invalid_argument (const char *reason, Lisp_Object frob) +invalid_state (const CBufbyte *reason, Lisp_Object frob) { - signal_type_error (Qinvalid_argument, reason, frob); + signal_error (Qinvalid_state, reason, frob); } DOESNT_RETURN -invalid_argument_2 (const char *reason, Lisp_Object frob1, Lisp_Object frob2) +invalid_state_2 (const CBufbyte *reason, Lisp_Object frob1, Lisp_Object frob2) { - signal_type_error_2 (Qinvalid_argument, reason, frob1, frob2); + signal_error_2 (Qinvalid_state, reason, frob1, frob2); +} + +void +maybe_invalid_state (const CBufbyte *reason, Lisp_Object frob, + Lisp_Object class, Error_Behavior errb) +{ + maybe_signal_error (Qinvalid_state, reason, frob, class, errb); } DOESNT_RETURN -invalid_operation (const char *reason, Lisp_Object frob) +wtaerror (const CBufbyte *reason, Lisp_Object frob) { - signal_type_error (Qinvalid_operation, reason, frob); + signal_error (Qwrong_type_argument, reason, frob); } DOESNT_RETURN -invalid_operation_2 (const char *reason, Lisp_Object frob1, Lisp_Object frob2) +stack_overflow (const CBufbyte *reason, Lisp_Object frob) { - signal_type_error_2 (Qinvalid_operation, reason, frob1, frob2); + signal_error (Qstack_overflow, reason, frob); } DOESNT_RETURN -invalid_change (const char *reason, Lisp_Object frob) +out_of_memory (const CBufbyte *reason, Lisp_Object frob) { - signal_type_error (Qinvalid_change, reason, frob); + signal_error (Qout_of_memory, reason, frob); } DOESNT_RETURN -invalid_change_2 (const char *reason, Lisp_Object frob1, Lisp_Object frob2) +printing_unreadable_object (const CBufbyte *fmt, ...) { - signal_type_error_2 (Qinvalid_change, reason, frob1, frob2); + Lisp_Object obj; + va_list args; + + va_start (args, fmt); + obj = emacs_doprnt_string_va ((const Bufbyte *) GETTEXT (fmt), Qnil, -1, + args); + va_end (args); + + /* Fsignal GC-protects its args */ + signal_error (Qprinting_unreadable_object, 0, obj); } @@ -3177,8 +3125,7 @@ || (CONSP (fun) && EQ (XCAR (fun), Qautoload))) #endif - error ("Autoloading failed to define function %s", - string_data (XSYMBOL (funname)->name)); + invalid_state ("Autoloading failed to define function", funname); UNGCPRO; } @@ -3262,7 +3209,8 @@ if (max_lisp_eval_depth < 100) max_lisp_eval_depth = 100; if (lisp_eval_depth > max_lisp_eval_depth) - error ("Lisp nesting exceeds `max-lisp-eval-depth'"); + stack_overflow ("Lisp nesting exceeds `max-lisp-eval-depth'", + Qunbound); } /* We guaranteed CONSP (form) above */ @@ -3481,7 +3429,8 @@ if (max_lisp_eval_depth < 100) max_lisp_eval_depth = 100; if (lisp_eval_depth > max_lisp_eval_depth) - error ("Lisp nesting exceeds `max-lisp-eval-depth'"); + stack_overflow ("Lisp nesting exceeds `max-lisp-eval-depth'", + Qunbound); } backtrace.pdlcount = specpdl_depth(); @@ -3701,7 +3650,7 @@ } DEFUN ("function-min-args", Ffunction_min_args, 1, 1, 0, /* -Return the number of arguments a function may be called with. +Return the minimum number of arguments a function may be called with. The function may be any form that can be passed to `funcall', any special form, or any macro. */ @@ -3711,7 +3660,7 @@ } DEFUN ("function-max-args", Ffunction_max_args, 1, 1, 0, /* -Return the number of arguments a function may be called with. +Return the maximum number of arguments a function may be called with. The function may be any form that can be passed to `funcall', any special form, or any macro. If the function takes an arbitrary number of arguments or is @@ -4486,7 +4435,7 @@ if (!NILP (arg)) { - char *str = (char *) get_opaque_ptr (arg); + CBufbyte *str = (CBufbyte *) get_opaque_ptr (arg); args[0] = build_string (str); } else @@ -4540,7 +4489,7 @@ } Lisp_Object -eval_in_buffer_trapping_errors (const char *warning_string, +eval_in_buffer_trapping_errors (const CBufbyte *warning_string, struct buffer *buf, Lisp_Object form) { int speccount = specpdl_depth(); @@ -4580,7 +4529,8 @@ } Lisp_Object -run_hook_trapping_errors (const char *warning_string, Lisp_Object hook_symbol) +run_hook_trapping_errors (const CBufbyte *warning_string, + Lisp_Object hook_symbol) { int speccount; Lisp_Object tem; @@ -4613,7 +4563,7 @@ if an error occurs. */ Lisp_Object -safe_run_hook_trapping_errors (const char *warning_string, +safe_run_hook_trapping_errors (const CBufbyte *warning_string, Lisp_Object hook_symbol, int allow_quit) { @@ -4659,7 +4609,7 @@ } Lisp_Object -call0_trapping_errors (const char *warning_string, Lisp_Object function) +call0_trapping_errors (const CBufbyte *warning_string, Lisp_Object function) { int speccount; Lisp_Object tem; @@ -4706,7 +4656,7 @@ } Lisp_Object -call1_trapping_errors (const char *warning_string, Lisp_Object function, +call1_trapping_errors (const CBufbyte *warning_string, Lisp_Object function, Lisp_Object object) { int speccount = specpdl_depth(); @@ -4743,7 +4693,7 @@ } Lisp_Object -call2_trapping_errors (const char *warning_string, Lisp_Object function, +call2_trapping_errors (const CBufbyte *warning_string, Lisp_Object function, Lisp_Object object1, Lisp_Object object2) { int speccount = specpdl_depth(); @@ -4801,8 +4751,9 @@ !NILP (Vdebug_on_signal)) /* Leave room for some specpdl in the debugger. */ max_specpdl_size = size_needed + 100; - continuable_error - ("Variable binding depth exceeds max-specpdl-size"); + signal_continuable_error + (Qstack_overflow, + "Variable binding depth exceeds max-specpdl-size", Qunbound); } } while (specpdl_size < size_needed) @@ -4926,6 +4877,9 @@ Fset (symbol, value); } +/* Note: As long as the unwind-protect exists, its arg is automatically + GCPRO'd. */ + void record_unwind_protect (Lisp_Object (*function) (Lisp_Object arg), Lisp_Object arg) @@ -5296,7 +5250,7 @@ automatically be called when it is safe to do so. */ void -warn_when_safe (Lisp_Object class, Lisp_Object level, const char *fmt, ...) +warn_when_safe (Lisp_Object class, Lisp_Object level, const CBufbyte *fmt, ...) { Lisp_Object obj; va_list args; @@ -5321,27 +5275,27 @@ { INIT_LRECORD_IMPLEMENTATION (subr); - defsymbol (&Qinhibit_quit, "inhibit-quit"); - defsymbol (&Qautoload, "autoload"); - defsymbol (&Qdebug_on_error, "debug-on-error"); - defsymbol (&Qstack_trace_on_error, "stack-trace-on-error"); - defsymbol (&Qdebug_on_signal, "debug-on-signal"); - defsymbol (&Qstack_trace_on_signal, "stack-trace-on-signal"); - defsymbol (&Qdebugger, "debugger"); - defsymbol (&Qmacro, "macro"); + DEFSYMBOL (Qinhibit_quit); + DEFSYMBOL (Qautoload); + DEFSYMBOL (Qdebug_on_error); + DEFSYMBOL (Qstack_trace_on_error); + DEFSYMBOL (Qdebug_on_signal); + DEFSYMBOL (Qstack_trace_on_signal); + DEFSYMBOL (Qdebugger); + DEFSYMBOL (Qmacro); defsymbol (&Qand_rest, "&rest"); defsymbol (&Qand_optional, "&optional"); /* Note that the process code also uses Qexit */ - defsymbol (&Qexit, "exit"); - defsymbol (&Qsetq, "setq"); - defsymbol (&Qinteractive, "interactive"); - defsymbol (&Qcommandp, "commandp"); - defsymbol (&Qdefun, "defun"); - defsymbol (&Qprogn, "progn"); - defsymbol (&Qvalues, "values"); - defsymbol (&Qdisplay_warning, "display-warning"); - defsymbol (&Qrun_hooks, "run-hooks"); - defsymbol (&Qif, "if"); + DEFSYMBOL (Qexit); + DEFSYMBOL (Qsetq); + DEFSYMBOL (Qinteractive); + DEFSYMBOL (Qcommandp); + DEFSYMBOL (Qdefun); + DEFSYMBOL (Qprogn); + DEFSYMBOL (Qvalues); + DEFSYMBOL (Qdisplay_warning); + DEFSYMBOL (Qrun_hooks); + DEFSYMBOL (Qif); DEFSUBR (For); DEFSUBR (Fand); diff --text -u 'xemacs-21.5.1/src/event-Xt.c' 'xemacs-21.5.2/src/event-Xt.c' Index: ././src/event-Xt.c --- ././src/event-Xt.c Sat May 5 19:54:08 2001 +++ ././src/event-Xt.c Fri Jul 27 06:10:44 2001 @@ -1668,11 +1668,46 @@ } static void +update_frame_iconify_status (struct frame *f) +{ + f->iconified = (x_frame_window_state (f) == IconicState); +} + +static void handle_map_event (struct frame *f, XEvent *event) { Lisp_Object frame; XSETFRAME (frame, f); + + /* It seems that, given the multiplicity of window managers and X + implementations, plus the fact that X was designed without + window managers or icons in mind and this was then grafted on + with about the skill of a drunk freshman med student attempting + surgery with a rusty razor blade, we cannot treat any off + MapNotify/UnmapNotify/VisibilityNotify as more than vague hints + as to the actual situation. + + So we should just query the actual status. Unfortunately, things + are worse because (a) there aren't obvious ways to query some + of these values (e.g. "totally visible"), and (b) there may be + race conditions (see below). + + However, according to the ICCCM, there's a specific way to + ask the window manager whether the state is (a) visible, + (b) iconic, (c) withdrawn. It must be one of these three. + We already use this call to check for the iconified state. + I'd suggest we do the same for visible (i.e. NormalState), + and scrap most of the nasty code below. + + --ben + */ + + update_frame_iconify_status (f); + + /* #### Ben suggests rewriting the code below using + x_frame_window_state (f). */ + if (event->type == MapNotify) { XWindowAttributes xwa; @@ -1691,12 +1726,7 @@ XGetWindowAttributes (event->xany.display, event->xmap.window, &xwa); if (xwa.map_state != IsViewable) - { - /* Calling Fframe_iconified_p is the only way we have to - correctly update FRAME_ICONIFIED_P */ - Fframe_iconified_p (frame); - return; - } + return; FRAME_X_TOTALLY_VISIBLE_P (f) = 1; #if 0 @@ -1731,9 +1761,6 @@ { FRAME_X_TOTALLY_VISIBLE_P (f) = 0; change_frame_visibility (f, 0); - /* Calling Fframe_iconified_p is the only way we have to - correctly update FRAME_ICONIFIED_P */ - Fframe_iconified_p (frame); } } @@ -1932,6 +1959,11 @@ case VisibilityNotify: /* window visibility has changed */ if (event->xvisibility.window == XtWindow (FRAME_X_SHELL_WIDGET (f))) { + /* See comment in handle_map_event */ + update_frame_iconify_status (f); + + /* #### Ben suggests rewriting the code below using + x_frame_window_state (f). */ FRAME_X_TOTALLY_VISIBLE_P (f) = (event->xvisibility.state == VisibilityUnobscured); /* Note that the fvwm pager only sends VisibilityNotify when @@ -2987,21 +3019,20 @@ } /* XtAppPending() can be super-slow, esp. over a network connection. - Quantify results have indicated that in some cases the - call to detect_input_pending() completely dominates the - running time of redisplay(). Fortunately, in a SIGIO world - we can more quickly determine whether there are any X events: - if an event has happened since the last time we checked, then - a SIGIO will have happened. On a machine with broken SIGIO, - we'll still be in an OK state -- the sigio_happened flag - will get set at least once a second, so we'll be no more than - one second behind reality. (In general it's OK if we - erroneously report no input pending when input is actually - pending() -- preemption is just a bit less efficient, that's - all. It's bad bad bad if you err the other way -- you've - promised that `next-event' won't block but it actually will, - and some action might get delayed until the next time you - hit a key.) + Quantify results have indicated that in some cases the call to + detect_input_pending() completely dominates the running time of + redisplay(). Fortunately, in a SIGIO world we can more quickly + determine whether there are any X events: if an event has + happened since the last time we checked, then a SIGIO will have + happened. On a machine with broken SIGIO, we'll still be in an + OK state -- quit_check_signal_tick_count will get ticked at least + every 1/4 second, so we'll be no more than that much behind + reality. (In general it's OK if we erroneously report no input + pending when input is actually pending() -- preemption is just a + bit less efficient, that's all. It's bad bad bad if you err the + other way -- you've promised that `next-event' won't block but it + actually will, and some action might get delayed until the next + time you hit a key.) */ /* quit_check_signal_tick_count is volatile so try to avoid race conditions @@ -3247,9 +3278,9 @@ void syms_of_event_Xt (void) { - defsymbol (&Qkey_mapping, "key-mapping"); - defsymbol (&Qsans_modifiers, "sans-modifiers"); - defsymbol (&Qself_insert_command, "self-insert-command"); + DEFSYMBOL (Qkey_mapping); + DEFSYMBOL (Qsans_modifiers); + DEFSYMBOL (Qself_insert_command); } void diff --text -u 'xemacs-21.5.1/src/event-gtk.c' 'xemacs-21.5.2/src/event-gtk.c' Index: ././src/event-gtk.c --- ././src/event-gtk.c Fri Apr 13 03:23:40 2001 +++ ././src/event-gtk.c Thu May 31 11:00:31 2001 @@ -1253,6 +1253,26 @@ if (*state & gd->HyperMask) modifiers |= XEMACS_MOD_HYPER; if (*state & gd->AltMask) modifiers |= XEMACS_MOD_ALT; + { + int numero_de_botao = -1; + + if (!key_event_p) + numero_de_botao = gdk_event->button.button; + + /* the button gets noted either in the button or the modifiers + field, but not both. */ + if (numero_de_botao != 1 && (*state & GDK_BUTTON1_MASK)) + modifiers |= XEMACS_MOD_BUTTON1; + if (numero_de_botao != 2 && (*state & GDK_BUTTON2_MASK)) + modifiers |= XEMACS_MOD_BUTTON2; + if (numero_de_botao != 3 && (*state & GDK_BUTTON3_MASK)) + modifiers |= XEMACS_MOD_BUTTON3; + if (numero_de_botao != 4 && (*state & GDK_BUTTON4_MASK)) + modifiers |= XEMACS_MOD_BUTTON4; + if (numero_de_botao != 5 && (*state & GDK_BUTTON5_MASK)) + modifiers |= XEMACS_MOD_BUTTON5; + } + /* Ignore the Caps_Lock key if: - any other modifiers are down, so that Caps_Lock doesn't turn C-x into C-X, which would suck. @@ -1374,6 +1394,12 @@ if (mask & gd->SuperMask) modifiers |= XEMACS_MOD_SUPER; if (mask & gd->HyperMask) modifiers |= XEMACS_MOD_HYPER; if (mask & gd->AltMask) modifiers |= XEMACS_MOD_ALT; + if (mask & GDK_BUTTON1_MASK) modifiers |= XEMACS_MOD_BUTTON1; + if (mask & GDK_BUTTON2_MASK) modifiers |= XEMACS_MOD_BUTTON2; + if (mask & GDK_BUTTON3_MASK) modifiers |= XEMACS_MOD_BUTTON3; + if (mask & GDK_BUTTON4_MASK) modifiers |= XEMACS_MOD_BUTTON4; + if (mask & GDK_BUTTON5_MASK) modifiers |= XEMACS_MOD_BUTTON5; + /* Currently ignores Shift_Lock but probably shouldn't (but it definitely should ignore Caps_Lock). */ emacs_event->event.motion.modifiers = modifiers; @@ -1693,8 +1719,8 @@ void syms_of_event_gtk (void) { - defsymbol (&Qkey_mapping, "key-mapping"); - defsymbol (&Qsans_modifiers, "sans-modifiers"); + DEFSYMBOL (Qkey_mapping); + DEFSYMBOL (Qsans_modifiers); } void reinit_vars_of_event_gtk (void) diff --text -u 'xemacs-21.5.1/src/event-msw.c' 'xemacs-21.5.2/src/event-msw.c' Index: ././src/event-msw.c --- ././src/event-msw.c Sat May 5 19:54:11 2001 +++ ././src/event-msw.c Fri Jun 8 21:21:23 2001 @@ -1,7 +1,7 @@ /* The mswindows event_stream interface. Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. - Copyright (C) 1996, 2000 Ben Wing. + Copyright (C) 1996, 2000, 2001 Ben Wing. Copyright (C) 1997 Jonathan Harris. This file is part of XEmacs. @@ -49,30 +49,29 @@ # include "dragdrop.h" #endif +#include "buffer.h" #include "device.h" #include "events.h" -#include "frame.h" -#include "buffer.h" #include "faces.h" +#include "frame.h" #include "lstream.h" +#include "objects-msw.h" #include "process.h" #include "redisplay.h" #include "select.h" +#include "sysdep.h" #include "window.h" + +#include "sysfile.h" #include "sysproc.h" -#include "syswait.h" #include "systime.h" -#include "sysdep.h" -#include "objects-msw.h" +#include "syswait.h" #ifdef HAVE_MSG_SELECT -#include "sysfile.h" #include "console-tty.h" #elif defined(CYGWIN) typedef unsigned int SOCKET; #endif -#include -#include #if !(defined(CYGWIN) || defined(MINGW)) # include /* For IShellLink */ @@ -92,7 +91,6 @@ /* Timer ID used for button2 emulation */ #define BUTTON_2_TIMER_ID 1 -static Lisp_Object mswindows_find_frame (HWND hwnd); static Lisp_Object mswindows_find_console (HWND hwnd); static Lisp_Object mswindows_key_to_emacs_keysym (int mswindows_key, int mods, int extendedp); @@ -153,6 +151,9 @@ #ifdef DEBUG_XEMACS Fixnum debug_mswindows_events; + +static void debug_output_mswin_message (HWND hwnd, UINT message_, + WPARAM wParam, LPARAM lParam); #endif /* This is the event signaled by the event pump. @@ -665,7 +666,7 @@ LPARAM user_data; /* Any user data stored in the stream object */ SOCKET s; /* Socket handle (which is a Win32 handle) */ OVERLAPPED ov; /* Overlapped I/O structure */ - void* buffer; /* Buffer. Allocated for input stream only */ + void* buffer; /* Buffer. */ unsigned long bufsize; /* Number of bytes last read */ unsigned long bufpos; /* Position in buffer for next fetch */ unsigned int error_p :1; /* I/O Error seen */ @@ -775,18 +776,24 @@ if (size == 0) return 0; - { - ResetEvent (str->ov.hEvent); + ResetEvent (str->ov.hEvent); - /* Docs indicate that 4th parameter to WriteFile can be NULL since this is - * an overlapped operation. This fails on Win95 with winsock 1.x so we - * supply a spare address which is ignored by Win95 anyway. Sheesh. */ - if (WriteFile ((HANDLE)str->s, data, size, (LPDWORD)&str->buffer, &str->ov) - || GetLastError() == ERROR_IO_PENDING) - str->pending_p = 1; - else - str->error_p = 1; - } + /* According to WriteFile docs, we must hold onto the data we pass to it + and not make any changes until it finishes -- which may not be until + the next time we get here, since we use asynchronous I/O. We have + in fact seen data loss as a result of not doing this. */ + str->buffer = xrealloc (str->buffer, size); + memcpy (str->buffer, data, size); + + /* According to MSDN WriteFile docs, the fourth parameter cannot be NULL + on Win95 even when doing an overlapped operation, as we are, where + the return value through that parameter is not meaningful. */ + if (WriteFile ((HANDLE)str->s, str->buffer, size, &str->bufsize, + &str->ov) + || GetLastError() == ERROR_IO_PENDING) + str->pending_p = 1; + else + str->error_p = 1; return str->error_p ? -1 : size; } @@ -805,8 +812,11 @@ if (str->pending_p) WaitForSingleObject (str->ov.hEvent, INFINITE); - if (lstr->flags & LSTREAM_FL_READ) - xfree (str->buffer); + if (str->buffer) + { + xfree (str->buffer); + str->buffer = 0; + } CloseHandle (str->ov.hEvent); return 0; @@ -826,14 +836,10 @@ Lstream *lstr = Lstream_new (lstream_winsock, mode); struct winsock_stream *str = WINSOCK_STREAM_DATA (lstr); + xzero (*str); str->s = s; - str->blocking_p = 0; - str->error_p = 0; - str->eof_p = 0; - str->pending_p = 0; str->user_data = param; - xzero (str->ov); str->ov.hEvent = CreateEvent (NULL, TRUE, FALSE, NULL); if (lstr->flags & LSTREAM_FL_READ) @@ -1044,14 +1050,11 @@ &mswindows_s_dispatch_event_queue_tail : &mswindows_u_dispatch_event_queue_tail); - sevt = XEVENT(event); + sevt = XEVENT (event); if (sevt->event_type == key_press_event && (sevt->event.key.modifiers & FAKE_MOD_QUIT)) - { - sevt->event.key.modifiers &= - ~(FAKE_MOD_QUIT | FAKE_MOD_QUIT_CRITICAL); - --mswindows_quit_chars_count; - } + sevt->event.key.modifiers &= + ~(FAKE_MOD_QUIT | FAKE_MOD_QUIT_CRITICAL); return event; } @@ -1365,11 +1368,11 @@ { /* We'll deadlock if go waiting */ if (mswindows_pending_timers_count == 0) - error ("Deadlock due to an attempt to call next-event in a wrong context"); + invalid_operation ("Deadlock due to an attempt to call next-event in a wrong context", Qunbound); /* Fetch and dispatch any pending timers */ if (GetMessage (&msg, NULL, WM_TIMER, WM_TIMER) > 0) - DispatchMessage (&msg); + DispatchMessage (&msg); } } @@ -1401,10 +1404,10 @@ EMACS_SET_SECS_USECS (sometime, 0, 0); EMACS_TIME_TO_SELECT_TIME (sometime, select_time_to_block); pointer_to_this = &select_time_to_block; - if (mswindows_in_modal_loop) - /* In modal loop with badly_p false, don't care about - Windows events. */ - FD_CLR (windows_fd, &temp_mask); + if (mswindows_in_modal_loop) + /* In modal loop with badly_p false, don't care about + Windows events. */ + FD_CLR (windows_fd, &temp_mask); } active = select (MAXDESC, &temp_mask, 0, 0, pointer_to_this); @@ -1418,10 +1421,10 @@ { if (FD_ISSET (windows_fd, &temp_mask)) { - if (mswindows_in_modal_loop) - mswindows_need_event_in_modal_loop (badly_p); - else - mswindows_drain_windows_queue (); + if (mswindows_in_modal_loop) + mswindows_need_event_in_modal_loop (badly_p); + else + mswindows_drain_windows_queue (); } else { @@ -1488,22 +1491,22 @@ /* Now try getting a message or process event */ DWORD what_events; if (mswindows_in_modal_loop) - /* In a modal loop, only look for timer events, and only if - we really need one. */ - { - if (badly_p) - what_events = QS_TIMER; - else - what_events = 0; - } + /* In a modal loop, only look for timer events, and only if + we really need one. */ + { + if (badly_p) + what_events = QS_TIMER; + else + what_events = 0; + } else - /* Look for any event */ - what_events = QS_ALLINPUT; + /* Look for any event */ + what_events = QS_ALLINPUT; active = MsgWaitForMultipleObjects (mswindows_waitable_count, mswindows_waitable_handles, FALSE, badly_p ? INFINITE : 0, - what_events); + what_events); /* This will assert if handle being waited for becomes abandoned. Not the case currently tho */ @@ -1519,10 +1522,10 @@ else if (active == WAIT_OBJECT_0 + mswindows_waitable_count) { /* Got your message, thanks */ - if (mswindows_in_modal_loop) - mswindows_need_event_in_modal_loop (badly_p); - else - mswindows_drain_windows_queue (); + if (mswindows_in_modal_loop) + mswindows_need_event_in_modal_loop (badly_p); + else + mswindows_drain_windows_queue (); } else { @@ -1539,12 +1542,12 @@ { /* None. This means that the process handle itself has signaled. Remove the handle from the wait vector, and make status_notify - note the exited process. First find the process object if - possible. */ - LIST_LOOP_3 (vaffanculo, Vprocess_list, vproctail) - if (get_nt_process_handle (XPROCESS (vaffanculo)) == - mswindows_waitable_handles [ix]) - break; + note the exited process. First find the process object if + possible. */ + LIST_LOOP_3 (vaffanculo, Vprocess_list, vproctail) + if (get_nt_process_handle (XPROCESS (vaffanculo)) == + mswindows_waitable_handles [ix]) + break; mswindows_waitable_handles [ix] = mswindows_waitable_handles [--mswindows_waitable_count]; kick_status_notify (); @@ -1553,11 +1556,11 @@ process, and (2) status notifications will happen in accept-process-output, sleep-for, and sit-for. */ /* #### horrible kludge till my real process fixes go in. - #### Replaced with a slightly less horrible kluge that - at least finds the right process instead of axing the - first one on the list. + #### Replaced with a slightly less horrible kluge that + at least finds the right process instead of axing the + first one on the list. */ - if (!NILP (vproctail)) + if (!NILP (vproctail)) { mswindows_enqueue_process_event (XPROCESS (vaffanculo)); } @@ -1673,9 +1676,9 @@ return DDE_FNOTPROCESSED; #ifdef CYGWIN - filename = alloca (cygwin32_win32_to_posix_path_list_buf_size (cmd) + 5); + filename = alloca (cygwin_win32_to_posix_path_list_buf_size (cmd) + 5); strcpy (filename, "file:"); - cygwin32_win32_to_posix_path_list (cmd, filename+5); + cygwin_win32_to_posix_path_list (cmd, filename+5); #else dostounix_filename (cmd); filename = alloca (strlen (cmd)+6); @@ -2058,10 +2061,14 @@ struct frame *frame; struct mswindows_frame* msframe; - /* Not perfect but avoids crashes. There is potential for wierd - behavior here. */ - if (gc_in_progress) - goto defproc; + /* If you hit this, rewrite the offending API call to occur after GC, + using register_post_gc_action(). */ + assert (!gc_in_progress); + +#ifdef DEBUG_XEMACS + if (debug_mswindows_events) + debug_output_mswin_message (hwnd, message_, wParam, lParam); +#endif /* DEBUG_XEMACS */ assert (!GetWindowLong (hwnd, GWL_USERDATA)); switch (message_) @@ -2097,13 +2104,8 @@ int should_set_keymap = 0; #ifdef DEBUG_XEMACS - if (debug_mswindows_events) - { - stderr_out ("%s wparam=%d lparam=%d\n", - message_ == WM_KEYUP ? "WM_KEYUP" : "WM_SYSKEYUP", - wParam, (int)lParam); - output_alt_keyboard_state (); - } + if (debug_mswindows_events > 2) + output_alt_keyboard_state (); #endif /* DEBUG_XEMACS */ mswindows_handle_sticky_modifiers (wParam, lParam, 0, 1); @@ -2154,13 +2156,8 @@ int sticky_changed; #ifdef DEBUG_XEMACS - if (debug_mswindows_events) - { - stderr_out ("%s wparam=%d lparam=%d\n", - message_ == WM_KEYDOWN ? "WM_KEYDOWN" : "WM_SYSKEYDOWN", - wParam, (int)lParam); - output_alt_keyboard_state (); - } + if (debug_mswindows_events > 2) + output_alt_keyboard_state (); #endif /* DEBUG_XEMACS */ GetKeyboardState (keymap_orig); @@ -2255,6 +2252,16 @@ int mods_with_quit = mods; WPARAM ch = tranmsg.wParam; +#ifdef DEBUG_XEMACS + if (debug_mswindows_events) + { + stderr_out ("-> "); + debug_output_mswin_message (tranmsg.hwnd, tranmsg.message, + tranmsg.wParam, + tranmsg.lParam); + } +#endif /* DEBUG_XEMACS */ + /* If a quit char with no modifiers other than control and shift, then mark it with a fake modifier, which is removed upon dequeueing the event */ @@ -2273,7 +2280,7 @@ mods_with_quit |= FAKE_MOD_QUIT; if (mods_with_shift & XEMACS_MOD_SHIFT) mods_with_quit |= FAKE_MOD_QUIT_CRITICAL; - ++mswindows_quit_chars_count; + mswindows_quit_chars_count++; } else if (potential_accelerator && !got_accelerator && mswindows_char_is_accelerator (frame, ch)) @@ -2603,6 +2610,33 @@ mswindows_handle_paint (XFRAME (mswindows_find_frame (hwnd))); break; + case WM_WINDOWPOSCHANGED: + /* This is sent before WM_SIZE; in fact, the processing of this + by DefWindowProc() sends WM_SIZE. But WM_SIZE is not sent when + a window is hidden (make-frame-invisible), so we need to process + this and update the state flags. */ + { + fobj = mswindows_find_frame (hwnd); + frame = XFRAME (fobj); + if (IsIconic (hwnd)) + { + FRAME_VISIBLE_P (frame) = 0; + FRAME_ICONIFIED_P (frame) = 1; + } + else if (IsWindowVisible (hwnd)) + { + FRAME_VISIBLE_P (frame) = 1; + FRAME_ICONIFIED_P (frame) = 0; + } + else + { + FRAME_VISIBLE_P (frame) = 0; + FRAME_ICONIFIED_P (frame) = 0; + } + + return DefWindowProc (hwnd, message_, wParam, lParam); + } + case WM_SIZE: /* We only care about this message if our size has really changed */ if (wParam==SIZE_RESTORED || wParam==SIZE_MAXIMIZED || wParam==SIZE_MINIMIZED) @@ -2621,7 +2655,6 @@ if (wParam==SIZE_MINIMIZED) { /* Iconified */ - FRAME_VISIBLE_P (frame) = 0; mswindows_enqueue_magic_event (hwnd, XM_UNMAPFRAME); } else @@ -2657,7 +2690,6 @@ { if (!msframe->sizing && !FRAME_VISIBLE_P (frame)) mswindows_enqueue_magic_event (hwnd, XM_MAPFRAME); - FRAME_VISIBLE_P (frame) = 1; if (!msframe->sizing || mswindows_dynamic_frame_resize) redisplay (); @@ -2959,14 +2991,14 @@ if (psl->lpVtbl->QueryInterface (psl, &IID_IPersistFile, &ppf) == S_OK) { - WORD wsz[MAX_PATH]; + OLECHAR wsz[PATH_MAX]; WIN32_FIND_DATA wfd; - LPSTR resolved = (char *) xmalloc (MAX_PATH+1); + LPSTR resolved = (char *) xmalloc (PATH_MAX+1); - MultiByteToWideChar (CP_ACP,0, fname, -1, wsz, MAX_PATH); + MultiByteToWideChar (CP_ACP,0, fname, -1, wsz, PATH_MAX); if ((ppf->lpVtbl->Load (ppf, wsz, STGM_READ) == S_OK) && - (psl->lpVtbl->GetPath (psl, resolved, MAX_PATH, + (psl->lpVtbl->GetPath (psl, resolved, PATH_MAX, &wfd, 0)==S_OK)) { xfree (fname); @@ -2983,9 +3015,9 @@ #endif #ifdef CYGWIN - filename = xmalloc (cygwin32_win32_to_posix_path_list_buf_size (fname) + 5); + filename = xmalloc (cygwin_win32_to_posix_path_list_buf_size (fname) + 5); strcpy (filename, "file:"); - cygwin32_win32_to_posix_path_list (fname, filename+5); + cygwin_win32_to_posix_path_list (fname, filename+5); #else filename = (char *)xmalloc (len+6); strcat (strcpy (filename, "file:"), fname); @@ -3236,7 +3268,7 @@ /* * Find the frame that matches the supplied mswindows window handle */ -static Lisp_Object +Lisp_Object mswindows_find_frame (HWND hwnd) { LONG l = GetWindowLong (hwnd, XWL_FRAMEOBJ); @@ -3413,7 +3445,7 @@ HANDLE hev = get_process_input_waitable (process); if (!add_waitable_handle (hev)) - error ("Too many active processes"); + invalid_operation ("Too many active processes", Qunbound); #ifdef HAVE_WIN32_PROCESSES { @@ -3425,7 +3457,7 @@ if (!add_waitable_handle (hprocess)) { remove_waitable_handle (hev); - error ("Too many active processes"); + invalid_operation ("Too many active processes", Qunbound); } } } @@ -3472,6 +3504,7 @@ if (mswindows_in_modal_loop) return; + mswindows_quit_chars_count = 0; /* Drain windows queue. This sets up number of quit characters in the queue. */ mswindows_drain_windows_queue (); @@ -3486,7 +3519,7 @@ match_against.event_type = key_press_event; match_against.event.key.modifiers = FAKE_MOD_QUIT; - while (mswindows_quit_chars_count-- > 0) + while (mswindows_quit_chars_count > 0) { emacs_event = mswindows_cancel_dispatch_event (&match_against); assert (!NILP (emacs_event)); @@ -3496,6 +3529,7 @@ critical_p = 1; Fdeallocate_event (emacs_event); + mswindows_quit_chars_count--; } Vquit_flag = critical_p ? Qcritical : Qt; @@ -3554,7 +3588,7 @@ ? make_filedesc_output_stream (fdo, 0, -1, LSTR_BLOCKED_OK) : Qnil); -#if defined(HAVE_UNIX_PROCESSES) && defined(HAVE_PTYS) +#if defined(HAVE_UNIX_PROCESSES) /* FLAGS is process->pty_flag for UNIX_PROCESSES */ if ((flags & STREAM_PTY_FLUSHING) && fdo >= 0) { @@ -3631,6 +3665,323 @@ } #endif +#ifdef DEBUG_XEMACS + +struct mswin_message_debug +{ + int mess; + char *string; +}; + +#define FROB(val) { val, #val, }, + +struct mswin_message_debug debug_mswin_messages[] = +{ +FROB (WM_NULL) +FROB (WM_CREATE) +FROB (WM_DESTROY) +FROB (WM_MOVE) +FROB (WM_SIZE) + +FROB (WM_ACTIVATE) + +FROB (WM_SETFOCUS) +FROB (WM_KILLFOCUS) +FROB (WM_ENABLE) +FROB (WM_SETREDRAW) +FROB (WM_SETTEXT) +FROB (WM_GETTEXT) +FROB (WM_GETTEXTLENGTH) +FROB (WM_PAINT) +FROB (WM_CLOSE) +FROB (WM_QUERYENDSESSION) +FROB (WM_QUIT) +FROB (WM_QUERYOPEN) +FROB (WM_ERASEBKGND) +FROB (WM_SYSCOLORCHANGE) +FROB (WM_ENDSESSION) +FROB (WM_SHOWWINDOW) +FROB (WM_WININICHANGE) +#if(WINVER >= 0x0400) +FROB (WM_SETTINGCHANGE) +#endif /* WINVER >= 0x0400 */ + +FROB (WM_DEVMODECHANGE) +FROB (WM_ACTIVATEAPP) +FROB (WM_FONTCHANGE) +FROB (WM_TIMECHANGE) +FROB (WM_CANCELMODE) +FROB (WM_SETCURSOR) +FROB (WM_MOUSEACTIVATE) +FROB (WM_CHILDACTIVATE) +FROB (WM_QUEUESYNC) + +FROB (WM_GETMINMAXINFO) + +FROB (WM_PAINTICON) +FROB (WM_ICONERASEBKGND) +FROB (WM_NEXTDLGCTL) +FROB (WM_SPOOLERSTATUS) +FROB (WM_DRAWITEM) +FROB (WM_MEASUREITEM) +FROB (WM_DELETEITEM) +FROB (WM_VKEYTOITEM) +FROB (WM_CHARTOITEM) +FROB (WM_SETFONT) +FROB (WM_GETFONT) +FROB (WM_SETHOTKEY) +FROB (WM_GETHOTKEY) +FROB (WM_QUERYDRAGICON) +FROB (WM_COMPAREITEM) +#if(WINVER >= 0x0500) +FROB (WM_GETOBJECT) +#endif /* WINVER >= 0x0500 */ +FROB (WM_COMPACTING) +FROB (WM_COMMNOTIFY) +FROB (WM_WINDOWPOSCHANGING) +FROB (WM_WINDOWPOSCHANGED) + +FROB (WM_POWER) + +FROB (WM_COPYDATA) +FROB (WM_CANCELJOURNAL) + +#if(WINVER >= 0x0400) +FROB (WM_NOTIFY) +FROB (WM_INPUTLANGCHANGEREQUEST) +FROB (WM_INPUTLANGCHANGE) +FROB (WM_TCARD) +FROB (WM_HELP) +FROB (WM_USERCHANGED) +FROB (WM_NOTIFYFORMAT) + +FROB (WM_CONTEXTMENU) +FROB (WM_STYLECHANGING) +FROB (WM_STYLECHANGED) +FROB (WM_DISPLAYCHANGE) +FROB (WM_GETICON) +FROB (WM_SETICON) +#endif /* WINVER >= 0x0400 */ + +FROB (WM_NCCREATE) +FROB (WM_NCDESTROY) +FROB (WM_NCCALCSIZE) +FROB (WM_NCHITTEST) +FROB (WM_NCPAINT) +FROB (WM_NCACTIVATE) +FROB (WM_GETDLGCODE) +#ifdef WM_SYNCPAINT /* not in VC 5 */ +FROB (WM_SYNCPAINT) +#endif /* WM_SYNCPAINT */ +FROB (WM_NCMOUSEMOVE) +FROB (WM_NCLBUTTONDOWN) +FROB (WM_NCLBUTTONUP) +FROB (WM_NCLBUTTONDBLCLK) +FROB (WM_NCRBUTTONDOWN) +FROB (WM_NCRBUTTONUP) +FROB (WM_NCRBUTTONDBLCLK) +FROB (WM_NCMBUTTONDOWN) +FROB (WM_NCMBUTTONUP) +FROB (WM_NCMBUTTONDBLCLK) + +/* FROB (WM_KEYFIRST) */ +FROB (WM_KEYDOWN) +FROB (WM_KEYUP) +FROB (WM_CHAR) +FROB (WM_DEADCHAR) +FROB (WM_SYSKEYDOWN) +FROB (WM_SYSKEYUP) +FROB (WM_SYSCHAR) +FROB (WM_SYSDEADCHAR) +FROB (WM_KEYLAST) + +#if(WINVER >= 0x0400) && defined (WM_IME_STARTCOMPOSITION) +/* not in Cygwin? */ +FROB (WM_IME_STARTCOMPOSITION) +FROB (WM_IME_ENDCOMPOSITION) +FROB (WM_IME_COMPOSITION) +FROB (WM_IME_KEYLAST) +#endif /* WINVER >= 0x0400 && defined (WM_IME_STARTCOMPOSITION) */ + +FROB (WM_INITDIALOG) +FROB (WM_COMMAND) +FROB (WM_SYSCOMMAND) +FROB (WM_TIMER) +FROB (WM_HSCROLL) +FROB (WM_VSCROLL) +FROB (WM_INITMENU) +FROB (WM_INITMENUPOPUP) +FROB (WM_MENUSELECT) +FROB (WM_MENUCHAR) +FROB (WM_ENTERIDLE) +#if(WINVER >= 0x0500) +FROB (WM_MENURBUTTONUP) +FROB (WM_MENUDRAG) +FROB (WM_MENUGETOBJECT) +FROB (WM_UNINITMENUPOPUP) +FROB (WM_MENUCOMMAND) +#endif /* WINVER >= 0x0500 */ + + +FROB (WM_CTLCOLORMSGBOX) +FROB (WM_CTLCOLOREDIT) +FROB (WM_CTLCOLORLISTBOX) +FROB (WM_CTLCOLORBTN) +FROB (WM_CTLCOLORDLG) +FROB (WM_CTLCOLORSCROLLBAR) +FROB (WM_CTLCOLORSTATIC) + + +/* FROB (WM_MOUSEFIRST) */ +FROB (WM_MOUSEMOVE) +FROB (WM_LBUTTONDOWN) +FROB (WM_LBUTTONUP) +FROB (WM_LBUTTONDBLCLK) +FROB (WM_RBUTTONDOWN) +FROB (WM_RBUTTONUP) +FROB (WM_RBUTTONDBLCLK) +FROB (WM_MBUTTONDOWN) +FROB (WM_MBUTTONUP) +FROB (WM_MBUTTONDBLCLK) + +#if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) +FROB (WM_MOUSEWHEEL) +FROB (WM_MOUSELAST) +#else +FROB (WM_MOUSELAST) +#endif /* if (_WIN32_WINNT < 0x0400) */ + +FROB (WM_PARENTNOTIFY) +FROB (WM_ENTERMENULOOP) +FROB (WM_EXITMENULOOP) + +#if(WINVER >= 0x0400) +FROB (WM_NEXTMENU) + +FROB (WM_SIZING) +FROB (WM_CAPTURECHANGED) +FROB (WM_MOVING) +FROB (WM_POWERBROADCAST) + +FROB (WM_DEVICECHANGE) + +#endif /* WINVER >= 0x0400 */ + +FROB (WM_MDICREATE) +FROB (WM_MDIDESTROY) +FROB (WM_MDIACTIVATE) +FROB (WM_MDIRESTORE) +FROB (WM_MDINEXT) +FROB (WM_MDIMAXIMIZE) +FROB (WM_MDITILE) +FROB (WM_MDICASCADE) +FROB (WM_MDIICONARRANGE) +FROB (WM_MDIGETACTIVE) + + +FROB (WM_MDISETMENU) +FROB (WM_ENTERSIZEMOVE) +FROB (WM_EXITSIZEMOVE) +FROB (WM_DROPFILES) +FROB (WM_MDIREFRESHMENU) + +#ifdef WM_IME_SETCONTEXT /* not in Cygwin? */ + +#if(WINVER >= 0x0400) +FROB (WM_IME_SETCONTEXT) +FROB (WM_IME_NOTIFY) +FROB (WM_IME_CONTROL) +FROB (WM_IME_COMPOSITIONFULL) +FROB (WM_IME_SELECT) +FROB (WM_IME_CHAR) +#endif /* WINVER >= 0x0400 */ +#if(WINVER >= 0x0500) +FROB (WM_IME_REQUEST) +#endif /* WINVER >= 0x0500 */ +#if(WINVER >= 0x0400) +FROB (WM_IME_KEYDOWN) +FROB (WM_IME_KEYUP) +#endif /* WINVER >= 0x0400 */ + +#endif /* WM_IME_SETCONTEXT */ + +#if(_WIN32_WINNT >= 0x0400) +FROB (WM_MOUSEHOVER) +FROB (WM_MOUSELEAVE) +#endif /* _WIN32_WINNT >= 0x0400 */ + +FROB (WM_CUT) +FROB (WM_COPY) +FROB (WM_PASTE) +FROB (WM_CLEAR) +FROB (WM_UNDO) +FROB (WM_RENDERFORMAT) +FROB (WM_RENDERALLFORMATS) +FROB (WM_DESTROYCLIPBOARD) +FROB (WM_DRAWCLIPBOARD) +FROB (WM_PAINTCLIPBOARD) +FROB (WM_VSCROLLCLIPBOARD) +FROB (WM_SIZECLIPBOARD) +FROB (WM_ASKCBFORMATNAME) +FROB (WM_CHANGECBCHAIN) +FROB (WM_HSCROLLCLIPBOARD) +FROB (WM_QUERYNEWPALETTE) +FROB (WM_PALETTEISCHANGING) +FROB (WM_PALETTECHANGED) +FROB (WM_HOTKEY) + +#if(WINVER >= 0x0400) +FROB (WM_PRINT) +FROB (WM_PRINTCLIENT) + +FROB (WM_HANDHELDFIRST) +FROB (WM_HANDHELDLAST) + +FROB (WM_AFXFIRST) +FROB (WM_AFXLAST) +#endif /* WINVER >= 0x0400 */ + +FROB (WM_PENWINFIRST) +FROB (WM_PENWINLAST) +}; + +#undef FROB + +static void +debug_output_mswin_message (HWND hwnd, UINT message_, WPARAM wParam, + LPARAM lParam) +{ + Lisp_Object frame = mswindows_find_frame (hwnd); + int i; + char *str = 0; + /* struct mswin_message_debug *i_hate_cranking_out_code_like_this; */ + + for (i = 0; i < countof (debug_mswin_messages); i++) + { + if (debug_mswin_messages[i].mess == message_) + { + str = debug_mswin_messages[i].string; + break; + } + } + + if (str) + stderr_out ("%s", str); + else + stderr_out ("%x", message_); + + if (debug_mswindows_events > 1) + { + stderr_out (" wparam=%d lparam=%d hwnd=%x frame: ", + wParam, (int) lParam, (unsigned int) hwnd); + debug_print (frame); + } + else + stderr_out ("\n"); +} + +#endif /* DEBUG_XEMACS */ + /************************************************************************/ /* initialization */ /************************************************************************/ @@ -3690,13 +4041,12 @@ #ifdef DEBUG_XEMACS DEFVAR_INT ("debug-mswindows-events", &debug_mswindows_events /* -If non-zero, display debug information about Windows events that XEmacs sees. +If non-zero, display debug information about Windows messages that XEmacs sees. Information is displayed in a console window. Currently defined values are: -1 == non-verbose output -2 == verbose output - -#### Unfortunately, not yet implemented. +1 == non-verbose output (just the message name) +2 == verbose output (all parameters) +3 == even more verbose output (extra debugging info) */ ); debug_mswindows_events = 0; #endif diff --text -u 'xemacs-21.5.1/src/event-stream.c' 'xemacs-21.5.2/src/event-stream.c' Index: ././src/event-stream.c --- ././src/event-stream.c Tue May 8 17:08:47 2001 +++ ././src/event-stream.c Thu May 31 21:45:36 2001 @@ -102,6 +102,7 @@ static Fixnum auto_save_interval; Lisp_Object Qundefined_keystroke_sequence; +Lisp_Object Qinvalid_key_binding; Lisp_Object Qcommand_event_p; @@ -414,20 +415,23 @@ switch (op) { case EVENT_STREAM_PROCESS: - error ("Can't start subprocesses in -batch mode"); + invalid_operation ("Can't start subprocesses in -batch mode", + Qunbound); case EVENT_STREAM_TIMEOUT: - error ("Can't add timeouts in -batch mode"); + invalid_operation ("Can't add timeouts in -batch mode", Qunbound); case EVENT_STREAM_CONSOLE: - error ("Can't add consoles in -batch mode"); + invalid_operation ("Can't add consoles in -batch mode", Qunbound); case EVENT_STREAM_READ: - error ("Can't read events in -batch mode"); + invalid_operation ("Can't read events in -batch mode", Qunbound); default: abort (); } } else if (!event_stream) { - error ("event-stream callbacks not initialized (internal error?)"); + invalid_operation + ("event-stream callbacks not initialized (internal error?)", + Qunbound); } } @@ -920,12 +924,28 @@ /* timeouts */ /**********************************************************************/ -/**** Low-level timeout functions. **** +/* NOTE: "Low-level" or "interval" timeouts are one-shot timeouts that + measure single intervals. "High-level timeouts" or "wakeups" are + the objects generated by `add-timeout' or `add-async-timout' -- + they can fire repeatedly (and in fact can have a different initial + time and resignal time). Given the nature of both setitimer() and + select() -- i.e. all we get is a single one-shot timer -- we have + to decompose all high-level timeouts into a series of intervals or + low-level timeouts. + + Low-level timeouts are of two varieties: synchronous and asynchronous. + The former are handled at the window-system level, the latter in + signal.c. +*/ + +/**** Low-level timeout helper functions. **** These functions maintain a sorted list of one-shot timeouts (where - the timeouts are in absolute time). They are intended for use by - functions that need to convert a list of absolute timeouts into a - series of intervals to wait for. */ + the timeouts are in absolute time so we never lose any time as a + result of the delay between noting an interval and firing the next + one). They are intended for use by functions that need to convert + a list of absolute timeouts into a series of intervals to wait + for. */ /* We ensure that 0 is never a valid ID, so that a value of 0 can be used to indicate an absence of a timer. */ @@ -950,6 +970,8 @@ tm = Blocktype_alloc (the_low_level_timeout_blocktype); tm->next = NULL; + /* Don't just use ++low_level_timeout_id_tick, for the (admittedly + rare) case in which numbers wrap around. */ if (low_level_timeout_id_tick == 0) low_level_timeout_id_tick++; tm->id = low_level_timeout_id_tick++; @@ -1043,8 +1065,10 @@ } -/**** High-level timeout functions. ****/ +/**** High-level timeout functions. **** */ +/* We ensure that 0 is never a valid ID, so that a value of 0 can be + used to indicate an absence of a timer. */ static int timeout_id_tick; static Lisp_Object pending_timeout_list, pending_async_timeout_list; @@ -1094,6 +1118,10 @@ EMACS_TIME current_time; EMACS_TIME interval; + /* Don't just use ++timeout_id_tick, for the (admittedly rare) case + in which numbers wrap around. */ + if (timeout_id_tick == 0) + timeout_id_tick++; timeout->id = timeout_id_tick++; timeout->resignal_msecs = vanilliseconds; timeout->function = function; @@ -1107,9 +1135,9 @@ if (async_p) { timeout->interval_id = - event_stream_add_async_timeout (timeout->next_signal_time); - pending_async_timeout_list = noseeum_cons (op, - pending_async_timeout_list); + signal_add_async_interval_timeout (timeout->next_signal_time); + pending_async_timeout_list = + noseeum_cons (op, pending_async_timeout_list); } else { @@ -1134,7 +1162,7 @@ NOTE: The returned FUNCTION and OBJECT are *not* GC-protected at all. */ -static int +int event_stream_resignal_wakeup (int interval_id, int async_p, Lisp_Object *function, Lisp_Object *object) { @@ -1193,7 +1221,7 @@ if (async_p) timeout->interval_id = - event_stream_add_async_timeout (timeout->next_signal_time); + signal_add_async_interval_timeout (timeout->next_signal_time); else timeout->interval_id = event_stream_add_timeout (timeout->next_signal_time); @@ -1237,7 +1265,7 @@ *timeout_list = delq_no_quit_and_free_cons (op, *timeout_list); if (async_p) - event_stream_remove_async_timeout (timeout->interval_id); + signal_remove_async_interval_timeout (timeout->interval_id); else event_stream_remove_timeout (timeout->interval_id); free_managed_lcrecord (Vtimeout_free_list, op); @@ -1273,50 +1301,6 @@ } -/**** Asynch. timeout functions (see also signal.c) ****/ - -#if !defined (SIGIO) && !defined (DONT_POLL_FOR_QUIT) -extern int poll_for_quit_id; -#endif - -#if defined(HAVE_UNIX_PROCESSES) && !defined(SIGCHLD) -extern int poll_for_sigchld_id; -#endif - -void -event_stream_deal_with_async_timeout (int interval_id) -{ - /* This function can GC */ - Lisp_Object humpty, dumpty; -#if ((!defined (SIGIO) && !defined (DONT_POLL_FOR_QUIT)) \ - || defined(HAVE_UNIX_PROCESSES) && !defined(SIGCHLD)) - int id = -#endif - event_stream_resignal_wakeup (interval_id, 1, &humpty, &dumpty); - -#if !defined (SIGIO) && !defined (DONT_POLL_FOR_QUIT) - if (id == poll_for_quit_id) - { - quit_check_signal_happened = 1; - quit_check_signal_tick_count++; - return; - } -#endif - -#if defined(HAVE_UNIX_PROCESSES) && !defined(SIGCHLD) - if (id == poll_for_sigchld_id) - { - kick_status_notify (); - return; - } -#endif - - /* call1 GC-protects its arguments */ - call1_trapping_errors ("Error in asynchronous timeout callback", - humpty, dumpty); -} - - /**** Lisp-level timeout functions. ****/ static unsigned long @@ -1332,11 +1316,11 @@ fsecs = XINT (secs); #endif if (fsecs < 0) - signal_simple_error ("timeout is negative", secs); + invalid_argument ("timeout is negative", secs); if (!allow_0 && fsecs == 0) - signal_simple_error ("timeout is non-positive", secs); + invalid_argument ("timeout is non-positive", secs); if (fsecs >= (((unsigned int) 0xFFFFFFFF) / 1000)) - signal_simple_error + invalid_argument ("timeout would exceed 32 bits when represented in milliseconds", secs); return (unsigned long) (1000 * fsecs); @@ -2081,7 +2065,8 @@ * so we signal an error here. */ if (in_menu_callback) - error ("Attempt to call next-event inside menu callback"); + invalid_operation ("Attempt to call next-event inside menu callback", + Qunbound); #endif /* LWLIB_MENUBARS_LUCID */ if (NILP (event)) @@ -2119,7 +2104,7 @@ if (!CONSP (Vunread_command_events)) { Vunread_command_events = Qnil; - signal_error (Qwrong_type_argument, + signal_error_1 (Qwrong_type_argument, list3 (Qconsp, Vunread_command_events, Qunread_command_events)); } @@ -2128,7 +2113,7 @@ Lisp_Object e = XCAR (Vunread_command_events); Vunread_command_events = XCDR (Vunread_command_events); if (!EVENTP (e) || !command_event_p (e)) - signal_error (Qwrong_type_argument, + signal_error_1 (Qwrong_type_argument, list3 (Qcommand_event_p, e, Qunread_command_events)); redisplay (); if (!EQ (e, event)) @@ -2145,7 +2130,7 @@ if (!EVENTP (e) || !command_event_p (e)) { - signal_error (Qwrong_type_argument, + signal_error_1 (Qwrong_type_argument, list3 (Qeventp, e, Qunread_command_event)); } if (!EQ (e, event)) @@ -2235,7 +2220,7 @@ if (XEVENT_TYPE (Vlast_input_event) == dead_event) { Vlast_input_event = Fmake_event (Qnil, Qnil); - error ("Someone deallocated last-input-event!"); + invalid_state ("Someone deallocated last-input-event!", Qunbound); } if (! EQ (event, Vlast_input_event)) Fcopy_event (event, Vlast_input_event); @@ -2977,7 +2962,7 @@ the filter function forces this by returning 0. Emacs must not interpret this as a closed pipe. */ connected_via_filedesc_p (XPROCESS (p)))) -#ifdef HAVE_PTYS + /* On some OSs with ptys, when the process on one end of a pty exits, the other end gets an error reading with errno = EIO instead of getting an EOF (0 bytes read). @@ -2985,8 +2970,10 @@ EIO, just continue, because the child process has exited and should clean itself up soon (e.g. when we get a SIGCHLD). */ +#ifdef EIO || (readstatus == -1 && errno == EIO) #endif + ) { /* Currently, we rely on SIGCHLD to indicate that the @@ -3171,10 +3158,11 @@ return result; } - signal_simple_error ((munge == MUNGE_ME_FUNCTION_KEY ? - "Invalid binding in function-key-map" : - "Invalid binding in key-translation-map"), - result); + signal_error (Qinvalid_key_binding, + (munge == MUNGE_ME_FUNCTION_KEY ? + "Invalid binding in function-key-map" : + "Invalid binding in key-translation-map"), + result); } return Qnil; @@ -3436,7 +3424,7 @@ CHECK_INT (size); if (XINT (size) <= 0) - error ("Recent keys ring size must be positive"); + invalid_argument ("Recent keys ring size must be positive", size); if (XINT (size) == recent_keys_ring_size) return size; @@ -3871,7 +3859,7 @@ if (XEVENT (Vlast_command_event)->event_type == dead_event) { Vlast_command_event = Fmake_event (Qnil, Qnil); - error ("Someone deallocated the last-command-event!"); + invalid_state ("Someone deallocated the last-command-event!", Qunbound); } if (! EQ (event, Vlast_command_event)) @@ -4443,7 +4431,7 @@ O_WRONLY | O_TRUNC | O_CREAT | OPEN_BINARY, CREAT_MODE); if (fd < 0) - error ("Unable to create dribble file"); + report_file_error ("Unable to create dribble file", filename); Vdribble_file = make_filedesc_output_stream (fd, 0, 0, LSTR_CLOSING); #ifdef MULE Vdribble_file = @@ -4482,10 +4470,11 @@ INIT_LRECORD_IMPLEMENTATION (command_builder); INIT_LRECORD_IMPLEMENTATION (timeout); - defsymbol (&Qdisabled, "disabled"); - defsymbol (&Qcommand_event_p, "command-event-p"); + DEFSYMBOL (Qdisabled); + DEFSYMBOL (Qcommand_event_p); - DEFERROR_STANDARD (Qundefined_keystroke_sequence, Qinvalid_argument); + DEFERROR_STANDARD (Qundefined_keystroke_sequence, Qsyntax_error); + DEFERROR_STANDARD (Qinvalid_key_binding, Qinvalid_state); DEFSUBR (Frecent_keys); DEFSUBR (Frecent_keys_ring_size); @@ -4510,20 +4499,18 @@ DEFSUBR (Fopen_dribble_file); DEFSUBR (Fcurrent_event_timestamp); - defsymbol (&Qpre_command_hook, "pre-command-hook"); - defsymbol (&Qpost_command_hook, "post-command-hook"); - defsymbol (&Qunread_command_events, "unread-command-events"); - defsymbol (&Qunread_command_event, "unread-command-event"); - defsymbol (&Qpre_idle_hook, "pre-idle-hook"); - defsymbol (&Qhandle_pre_motion_command, "handle-pre-motion-command"); - defsymbol (&Qhandle_post_motion_command, "handle-post-motion-command"); - defsymbol (&Qretry_undefined_key_binding_unshifted, - "retry-undefined-key-binding-unshifted"); - defsymbol (&Qauto_show_make_point_visible, - "auto-show-make-point-visible"); + DEFSYMBOL (Qpre_command_hook); + DEFSYMBOL (Qpost_command_hook); + DEFSYMBOL (Qunread_command_events); + DEFSYMBOL (Qunread_command_event); + DEFSYMBOL (Qpre_idle_hook); + DEFSYMBOL (Qhandle_pre_motion_command); + DEFSYMBOL (Qhandle_post_motion_command); + DEFSYMBOL (Qretry_undefined_key_binding_unshifted); + DEFSYMBOL (Qauto_show_make_point_visible); - defsymbol (&Qself_insert_defer_undo, "self-insert-defer-undo"); - defsymbol (&Qcancel_mode_internal, "cancel-mode-internal"); + DEFSYMBOL (Qself_insert_defer_undo); + DEFSYMBOL (Qcancel_mode_internal); } void diff --text -u 'xemacs-21.5.1/src/event-unixoid.c' 'xemacs-21.5.2/src/event-unixoid.c' Index: ././src/event-unixoid.c --- ././src/event-unixoid.c Fri Apr 13 03:23:42 2001 +++ ././src/event-unixoid.c Mon May 14 13:52:02 2001 @@ -288,7 +288,7 @@ ? make_filedesc_output_stream (outfd, 0, -1, LSTR_BLOCKED_OK) : Qnil); -#if defined(HAVE_UNIX_PROCESSES) && defined(HAVE_PTYS) +#if defined(HAVE_UNIX_PROCESSES) /* FLAGS is process->pty_flag for UNIX_PROCESSES */ if ((flags & STREAM_PTY_FLUSHING) && outfd >= 0) { diff --text -u 'xemacs-21.5.1/src/events.c' 'xemacs-21.5.2/src/events.c' Index: ././src/events.c --- ././src/events.c Sat May 5 19:54:17 2001 +++ ././src/events.c Thu May 24 16:51:12 2001 @@ -143,7 +143,7 @@ print_event (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { if (print_readably) - error ("Printing unreadable object #"); + printing_unreadable_object ("#"); switch (XEVENT (obj)->event_type) { @@ -458,7 +458,7 @@ (e.g. CHANNEL), which we don't want in empty events. */ e->event_type = empty_event; if (!NILP (plist)) - syntax_error ("Cannot set properties of empty event", plist); + invalid_operation ("Cannot set properties of empty event", plist); UNGCPRO; return event; } @@ -481,7 +481,7 @@ else { /* Not allowed: Qprocess, Qtimeout, Qmagic, Qeval, Qmagic_eval. */ - invalid_argument ("Invalid event type", type); + invalid_constant ("Invalid event type", type); } EVENT_CHANNEL (e) = Qnil; @@ -490,7 +490,7 @@ Fcanonicalize_plist (plist, Qnil); #define WRONG_EVENT_TYPE_FOR_PROPERTY(event_type, prop) \ - syntax_error_2 ("Invalid property for event type", prop, event_type) + invalid_argument_2 ("Invalid property for event type", prop, event_type) { EXTERNAL_PROPERTY_LIST_LOOP_3 (keyword, value, plist) @@ -515,7 +515,7 @@ { case key_press_event: if (!SYMBOLP (value) && !CHARP (value)) - syntax_error ("Invalid event key", value); + invalid_argument ("Invalid event key", value); e->event.key.keysym = value; break; default: @@ -561,7 +561,7 @@ else if (EQ (sym, Qbutton4)) modifiers |= XEMACS_MOD_BUTTON4; else if (EQ (sym, Qbutton5)) modifiers |= XEMACS_MOD_BUTTON5; else - syntax_error ("Invalid key modifier", sym); + invalid_constant ("Invalid key modifier", sym); } switch (e->event_type) @@ -649,7 +649,7 @@ } } else - syntax_error_2 ("Invalid property", keyword, value); + invalid_constant_2 ("Invalid property", keyword, value); } } @@ -694,24 +694,24 @@ { case key_press_event: if (UNBOUNDP (e->event.key.keysym)) - syntax_error ("A key must be specified to make a keypress event", + sferror ("A key must be specified to make a keypress event", plist); break; case button_press_event: if (!e->event.button.button) - syntax_error + sferror ("A button must be specified to make a button-press event", plist); break; case button_release_event: if (!e->event.button.button) - syntax_error + sferror ("A button must be specified to make a button-release event", plist); break; case misc_user_event: if (NILP (e->event.misc.function)) - syntax_error ("A function must be specified to make a misc-user event", + sferror ("A function must be specified to make a misc-user event", plist); break; default: @@ -735,7 +735,7 @@ CHECK_EVENT (event); if (XEVENT_TYPE (event) == dead_event) - error ("this event is already deallocated!"); + invalid_argument ("this event is already deallocated!", Qunbound); assert (XEVENT_TYPE (event) <= last_event_type); @@ -787,8 +787,9 @@ { CHECK_LIVE_EVENT (event2); if (EQ (event1, event2)) - return signal_simple_continuable_error_2 - ("copy-event called with `eq' events", event1, event2); + return signal_continuable_error_2 + (Qinvalid_argument, + "copy-event called with `eq' events", event1, event2); } assert (XEVENT_TYPE (event1) <= last_event_type); @@ -988,7 +989,7 @@ Lisp_Object k = Qnil; int m = 0; if (event->event_type == dead_event) - error ("character-to-event called with a deallocated event!"); + invalid_argument ("character-to-event called with a deallocated event!", Qunbound); #ifndef MULE c &= 255; @@ -1415,10 +1416,7 @@ { QUIT; if (EQ (ev, event)) - signal_error (Qerror, - list3 (build_string ("Cyclic event-next"), - event, - next_event)); + invalid_operation_2 ("Cyclic event-next", event, next_event); } XSET_EVENT_NEXT (event, next_event); return next_event; @@ -2323,17 +2321,17 @@ DEFSUBR (Fevent_function); DEFSUBR (Fevent_object); - defsymbol (&Qeventp, "eventp"); - defsymbol (&Qevent_live_p, "event-live-p"); - defsymbol (&Qkey_press_event_p, "key-press-event-p"); - defsymbol (&Qbutton_event_p, "button-event-p"); - defsymbol (&Qmouse_event_p, "mouse-event-p"); - defsymbol (&Qprocess_event_p, "process-event-p"); - defsymbol (&Qkey_press, "key-press"); - defsymbol (&Qbutton_press, "button-press"); - defsymbol (&Qbutton_release, "button-release"); - defsymbol (&Qmisc_user, "misc-user"); - defsymbol (&Qascii_character, "ascii-character"); + DEFSYMBOL (Qeventp); + DEFSYMBOL (Qevent_live_p); + DEFSYMBOL (Qkey_press_event_p); + DEFSYMBOL (Qbutton_event_p); + DEFSYMBOL (Qmouse_event_p); + DEFSYMBOL (Qprocess_event_p); + DEFSYMBOL (Qkey_press); + DEFSYMBOL (Qbutton_press); + DEFSYMBOL (Qbutton_release); + DEFSYMBOL (Qmisc_user); + DEFSYMBOL (Qascii_character); defsymbol (&QKbackspace, "backspace"); defsymbol (&QKtab, "tab"); diff --text -u 'xemacs-21.5.1/src/events.h' 'xemacs-21.5.2/src/events.h' Index: ././src/events.h --- ././src/events.h Sat May 5 19:54:18 2001 +++ ././src/events.h Mon Jun 18 16:10:18 2001 @@ -462,6 +462,7 @@ DECLARE_LRECORD (timeout, Lisp_Timeout); #define XTIMEOUT(x) XRECORD (x, timeout, Lisp_Timeout) #define XSETTIMEOUT(x, p) XSETRECORD (x, p, timeout) +#define wrap_timeout(p) wrap_record (p, timeout) #define TIMEOUTP(x) RECORDP (x, timeout) #define CHECK_TIMEOUT(x) CHECK_RECORD (x, timeout) #define CONCHECK_TIMEOUT(x) CONCHECK_RECORD (x, timeout) @@ -496,6 +497,7 @@ DECLARE_LRECORD (event, Lisp_Event); #define XEVENT(x) XRECORD (x, event, Lisp_Event) #define XSETEVENT(x, p) XSETRECORD (x, p, event) +#define wrap_event(p) wrap_record (p, event) #define EVENTP(x) RECORDP (x, event) #define CHECK_EVENT(x) CHECK_RECORD (x, event) #define CONCHECK_EVENT(x) CONCHECK_RECORD (x, event) @@ -626,11 +628,13 @@ Lisp_Object function, Lisp_Object object, int async_p); +int event_stream_resignal_wakeup (int interval_id, int async_p, + Lisp_Object *function, Lisp_Object *object); void event_stream_disable_wakeup (int id, int async_p); -void event_stream_deal_with_async_timeout (int interval_id); -int event_stream_add_async_timeout (EMACS_TIME thyme); -void event_stream_remove_async_timeout (int id); +/* from signal.c */ +int signal_add_async_interval_timeout (EMACS_TIME thyme); +void signal_remove_async_interval_timeout (int id); /* from event-stream.c -- focus sanity */ extern int focus_follows_mouse; diff --text -u 'xemacs-21.5.1/src/extents.c' 'xemacs-21.5.2/src/extents.c' Index: ././src/extents.c --- ././src/extents.c Fri Apr 13 18:11:41 2001 +++ ././src/extents.c Thu May 24 16:51:12 2001 @@ -3026,9 +3026,9 @@ if (print_readably) { if (!EXTENT_LIVE_P (XEXTENT (obj))) - error ("printing unreadable object #"); + printing_unreadable_object ("#"); else - error ("printing unreadable object #", + printing_unreadable_object ("#", (long) XEXTENT (obj)); } @@ -3049,7 +3049,7 @@ else { if (print_readably) - error ("printing unreadable object #"); + printing_unreadable_object ("#"); write_c_string ("#", printcharfun); @@ -3536,7 +3536,7 @@ return Qnil; for (rest = parent; !NILP (rest); rest = extent_parent (XEXTENT (rest))) if (EQ (rest, extent)) - signal_type_error (Qinvalid_change, + signal_error (Qinvalid_change, "Circular parent chain would result", extent); if (NILP (parent)) @@ -3877,7 +3877,7 @@ EQ (sym, Qall_extents_open_closed)) { if (all_extents_specified) - error ("Only one `all-extents-*' flag may be specified"); + invalid_argument ("Only one `all-extents-*' flag may be specified", Qunbound); all_extents_specified = 1; } if (EQ (sym, Qstart_in_region) || EQ (sym, Qend_in_region) || @@ -3885,7 +3885,7 @@ EQ (sym, Qstart_or_end_in_region)) { if (in_region_specified) - error ("Only one `*-in-region' flag may be specified"); + invalid_argument ("Only one `*-in-region' flag may be specified", Qunbound); in_region_specified = 1; } @@ -3902,7 +3902,7 @@ EQ (sym, Qstart_and_end_in_region) ? ME_START_AND_END_IN_REGION : EQ (sym, Qstart_or_end_in_region) ? ME_START_OR_END_IN_REGION : EQ (sym, Qnegate_in_region) ? ME_NEGATE_IN_REGION : - (invalid_argument ("Invalid `map-extents' flag", sym), 0); + (invalid_constant ("Invalid `map-extents' flag", sym), 0); flags = XCDR (flags); } @@ -4266,7 +4266,7 @@ if (EQ (at_flag, Qbefore)) return EXTENT_AT_BEFORE; if (EQ (at_flag, Qat)) return EXTENT_AT_AT; - invalid_argument ("Invalid AT-FLAG in `extent-at'", at_flag); + invalid_constant ("Invalid AT-FLAG in `extent-at'", at_flag); return EXTENT_AT_AFTER; /* unreached */ } @@ -5072,7 +5072,7 @@ if (EQ (layout_obj, Qwhitespace)) return GL_WHITESPACE; if (EQ (layout_obj, Qtext)) return GL_TEXT; - invalid_argument ("Unknown glyph layout type", layout_obj); + invalid_constant ("Unknown glyph layout type", layout_obj); return GL_TEXT; /* unreached */ } @@ -5363,13 +5363,13 @@ else if (EQ (property, Qdetached)) { if (NILP (value)) - error ("can only set `detached' to t"); + invalid_operation ("can only set `detached' to t", Qunbound); Fdetach_extent (extent); } else if (EQ (property, Qdestroyed)) { if (NILP (value)) - error ("can only set `destroyed' to t"); + invalid_operation ("can only set `destroyed' to t", Qunbound); Fdelete_extent (extent); } else if (EQ (property, Qpriority)) @@ -6578,7 +6578,7 @@ prop = Fextent_property (extent, Qtext_prop, Qnil); if (NILP (prop)) - signal_type_error (Qinternal_error, + signal_error (Qinternal_error, "Internal error: no text-prop", extent); val = Fextent_property (extent, prop, Qnil); #if 0 @@ -6587,7 +6587,7 @@ ** with a value of Qnil. This is bad bad bad. */ if (NILP (val)) - signal_type_error_2 (Qinternal_error, + signal_error_2 (Qinternal_error, "Internal error: no text-prop", extent, prop); #endif @@ -6757,51 +6757,50 @@ INIT_LRECORD_IMPLEMENTATION (extent_info); INIT_LRECORD_IMPLEMENTATION (extent_auxiliary); - defsymbol (&Qextentp, "extentp"); - defsymbol (&Qextent_live_p, "extent-live-p"); + DEFSYMBOL (Qextentp); + DEFSYMBOL (Qextent_live_p); - defsymbol (&Qall_extents_closed, "all-extents-closed"); - defsymbol (&Qall_extents_open, "all-extents-open"); - defsymbol (&Qall_extents_closed_open, "all-extents-closed-open"); - defsymbol (&Qall_extents_open_closed, "all-extents-open-closed"); - defsymbol (&Qstart_in_region, "start-in-region"); - defsymbol (&Qend_in_region, "end-in-region"); - defsymbol (&Qstart_and_end_in_region, "start-and-end-in-region"); - defsymbol (&Qstart_or_end_in_region, "start-or-end-in-region"); - defsymbol (&Qnegate_in_region, "negate-in-region"); - - defsymbol (&Qdetached, "detached"); - defsymbol (&Qdestroyed, "destroyed"); - defsymbol (&Qbegin_glyph, "begin-glyph"); - defsymbol (&Qend_glyph, "end-glyph"); - defsymbol (&Qstart_open, "start-open"); - defsymbol (&Qend_open, "end-open"); - defsymbol (&Qstart_closed, "start-closed"); - defsymbol (&Qend_closed, "end-closed"); - defsymbol (&Qread_only, "read-only"); - /* defsymbol (&Qhighlight, "highlight"); in faces.c */ - defsymbol (&Qunique, "unique"); - defsymbol (&Qduplicable, "duplicable"); - defsymbol (&Qdetachable, "detachable"); - defsymbol (&Qpriority, "priority"); - defsymbol (&Qmouse_face, "mouse-face"); - defsymbol (&Qinitial_redisplay_function,"initial-redisplay-function"); - - - defsymbol (&Qglyph_layout, "glyph-layout"); /* backwards compatibility */ - defsymbol (&Qbegin_glyph_layout, "begin-glyph-layout"); - defsymbol (&Qend_glyph_layout, "end-glyph-layout"); - defsymbol (&Qoutside_margin, "outside-margin"); - defsymbol (&Qinside_margin, "inside-margin"); - defsymbol (&Qwhitespace, "whitespace"); + DEFSYMBOL (Qall_extents_closed); + DEFSYMBOL (Qall_extents_open); + DEFSYMBOL (Qall_extents_closed_open); + DEFSYMBOL (Qall_extents_open_closed); + DEFSYMBOL (Qstart_in_region); + DEFSYMBOL (Qend_in_region); + DEFSYMBOL (Qstart_and_end_in_region); + DEFSYMBOL (Qstart_or_end_in_region); + DEFSYMBOL (Qnegate_in_region); + + DEFSYMBOL (Qdetached); + DEFSYMBOL (Qdestroyed); + DEFSYMBOL (Qbegin_glyph); + DEFSYMBOL (Qend_glyph); + DEFSYMBOL (Qstart_open); + DEFSYMBOL (Qend_open); + DEFSYMBOL (Qstart_closed); + DEFSYMBOL (Qend_closed); + DEFSYMBOL (Qread_only); + /* DEFSYMBOL (Qhighlight); in faces.c */ + DEFSYMBOL (Qunique); + DEFSYMBOL (Qduplicable); + DEFSYMBOL (Qdetachable); + DEFSYMBOL (Qpriority); + DEFSYMBOL (Qmouse_face); + DEFSYMBOL (Qinitial_redisplay_function); + + + DEFSYMBOL (Qglyph_layout); /* backwards compatibility */ + DEFSYMBOL (Qbegin_glyph_layout); + DEFSYMBOL (Qend_glyph_layout); + DEFSYMBOL (Qoutside_margin); + DEFSYMBOL (Qinside_margin); + DEFSYMBOL (Qwhitespace); /* Qtext defined in general.c */ - defsymbol (&Qpaste_function, "paste-function"); - defsymbol (&Qcopy_function, "copy-function"); + DEFSYMBOL (Qpaste_function); + DEFSYMBOL (Qcopy_function); - defsymbol (&Qtext_prop, "text-prop"); - defsymbol (&Qtext_prop_extent_paste_function, - "text-prop-extent-paste-function"); + DEFSYMBOL (Qtext_prop); + DEFSYMBOL (Qtext_prop_extent_paste_function); DEFSUBR (Fextentp); DEFSUBR (Fextent_live_p); diff --text -u 'xemacs-21.5.1/src/extents.h' 'xemacs-21.5.2/src/extents.h' Index: ././src/extents.h --- ././src/extents.h Fri Apr 13 03:23:43 2001 +++ ././src/extents.h Mon Jun 18 16:10:18 2001 @@ -26,6 +26,7 @@ DECLARE_LRECORD (extent, struct extent); #define XEXTENT(x) XRECORD (x, extent, struct extent) #define XSETEXTENT(x, p) XSETRECORD (x, p, extent) +#define wrap_extent(p) wrap_record (p, extent) #define EXTENTP(x) RECORDP (x, extent) #define CHECK_EXTENT(x) CHECK_RECORD (x, extent) #define CONCHECK_EXTENT(x) CONCHECK_RECORD (x, extent) @@ -145,6 +146,7 @@ #define XEXTENT_AUXILIARY(x) \ XRECORD (x, extent_auxiliary, struct extent_auxiliary) #define XSETEXTENT_AUXILIARY(x, p) XSETRECORD (x, p, extent_auxiliary) +#define wrap_extent_auxiliary(p) wrap_record (p, extent_auxiliary) #define EXTENT_AUXILIARYP(x) RECORDP (x, extent_auxiliary) #define CHECK_EXTENT_AUXILIARY(x) CHECK_RECORD (x, extent_auxiliary) #define CONCHECK_EXTENT_AUXILIARY(x) CONCHECK_RECORD (x, extent_auxiliary) @@ -160,6 +162,7 @@ DECLARE_LRECORD (extent_info, struct extent_info); #define XEXTENT_INFO(x) XRECORD (x, extent_info, struct extent_info) #define XSETEXTENT_INFO(x, p) XSETRECORD (x, p, extent_info) +#define wrap_extent_info(p) wrap_record (p, extent_info) #define EXTENT_INFOP(x) RECORDP (x, extent_info) #define CHECK_EXTENT_INFO(x) CHECK_RECORD (x, extent_info) #define CONCHECK_EXTENT_INFO(x) CONCHECK_RECORD (x, extent_info) diff --text -u 'xemacs-21.5.1/src/faces.c' 'xemacs-21.5.2/src/faces.c' Index: ././src/faces.c --- ././src/faces.c Fri Apr 13 03:23:43 2001 +++ ././src/faces.c Fri May 25 20:26:55 2001 @@ -294,7 +294,7 @@ static int face_name_validate (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb) + Error_Behavior errb) { if (ERRB_EQ (errb, ERROR_ME)) { @@ -306,7 +306,7 @@ } static int -face_validate (Lisp_Object data, Error_behavior errb) +face_validate (Lisp_Object data, Error_Behavior errb) { int name_seen = 0; Lisp_Object valw = Qnil; @@ -327,13 +327,13 @@ if (!name_seen) { - maybe_error (Qface, errb, "No face name given"); + maybe_sferror ("No face name given", Qunbound, Qface, errb); return 0; } if (NILP (Ffind_face (valw))) { - maybe_signal_simple_error ("No such face", valw, Qface, errb); + maybe_invalid_argument ("No such face", valw, Qface, errb); return 0; } @@ -555,7 +555,7 @@ Lisp_Object face_property_matching_instance (Lisp_Object face, Lisp_Object property, Lisp_Object charset, Lisp_Object domain, - Error_behavior errb, int no_fallback, + Error_Behavior errb, int no_fallback, Lisp_Object depth) { Lisp_Object retval = @@ -636,7 +636,7 @@ Lisp_Object face = Ffind_face (name); if (NILP (face)) - signal_simple_error ("No such face", name); + invalid_argument ("No such face", name); return face; } @@ -1828,10 +1828,10 @@ INIT_LRECORD_IMPLEMENTATION (face); /* Qdefault, Qwidget, Qleft_margin, Qright_margin defined in general.c */ - defsymbol (&Qmodeline, "modeline"); - defsymbol (&Qgui_element, "gui-element"); - defsymbol (&Qtext_cursor, "text-cursor"); - defsymbol (&Qvertical_divider, "vertical-divider"); + DEFSYMBOL (Qmodeline); + DEFSYMBOL (Qgui_element); + DEFSYMBOL (Qtext_cursor); + DEFSYMBOL (Qvertical_divider); DEFSUBR (Ffacep); DEFSUBR (Ffind_face); @@ -1842,22 +1842,22 @@ DEFSUBR (Fmake_face); DEFSUBR (Fcopy_face); - defsymbol (&Qfacep, "facep"); - defsymbol (&Qforeground, "foreground"); - defsymbol (&Qbackground, "background"); + DEFSYMBOL (Qfacep); + DEFSYMBOL (Qforeground); + DEFSYMBOL (Qbackground); /* Qfont defined in general.c */ - defsymbol (&Qdisplay_table, "display-table"); - defsymbol (&Qbackground_pixmap, "background-pixmap"); - defsymbol (&Qunderline, "underline"); - defsymbol (&Qstrikethru, "strikethru"); + DEFSYMBOL (Qdisplay_table); + DEFSYMBOL (Qbackground_pixmap); + DEFSYMBOL (Qunderline); + DEFSYMBOL (Qstrikethru); /* Qhighlight, Qreverse defined in general.c */ - defsymbol (&Qdim, "dim"); - defsymbol (&Qblinking, "blinking"); + DEFSYMBOL (Qdim); + DEFSYMBOL (Qblinking); - defsymbol (&Qinit_face_from_resources, "init-face-from-resources"); - defsymbol (&Qinit_global_faces, "init-global-faces"); - defsymbol (&Qinit_device_faces, "init-device-faces"); - defsymbol (&Qinit_frame_faces, "init-frame-faces"); + DEFSYMBOL (Qinit_face_from_resources); + DEFSYMBOL (Qinit_global_faces); + DEFSYMBOL (Qinit_device_faces); + DEFSYMBOL (Qinit_frame_faces); } void diff --text -u 'xemacs-21.5.1/src/faces.h' 'xemacs-21.5.2/src/faces.h' Index: ././src/faces.h --- ././src/faces.h Sat May 5 19:54:19 2001 +++ ././src/faces.h Mon Jun 18 16:10:19 2001 @@ -225,6 +225,7 @@ DECLARE_LRECORD (face, Lisp_Face); #define XFACE(x) XRECORD (x, face, Lisp_Face) #define XSETFACE(x, p) XSETRECORD (x, p, face) +#define wrap_face(p) wrap_record (p, face) #define FACEP(x) RECORDP (x, face) #define CHECK_FACE(x) CHECK_RECORD (x, face) @@ -334,7 +335,7 @@ Lisp_Object property, Lisp_Object charset, Lisp_Object domain, - Error_behavior errb, + Error_Behavior errb, int no_fallback, Lisp_Object depth); diff --text -u 'xemacs-21.5.1/src/file-coding.c' 'xemacs-21.5.2/src/file-coding.c' Index: ././src/file-coding.c --- ././src/file-coding.c Fri Apr 13 03:23:44 2001 +++ ././src/file-coding.c Thu May 24 18:37:29 2001 @@ -37,8 +37,6 @@ #endif #include "file-coding.h" -Lisp_Object Qcoding_system_error; - Lisp_Object Vkeyboard_coding_system; Lisp_Object Vterminal_coding_system; Lisp_Object Vcoding_system_for_read; @@ -376,8 +374,7 @@ { Lisp_Coding_System *c = XCODING_SYSTEM (obj); if (print_readably) - error ("printing unreadable object #", - c->header.uid); + printing_unreadable_object ("#", c->header.uid); write_c_string ("#name, printcharfun, 1); @@ -424,7 +421,7 @@ if (EQ (symbol, Qcrlf)) return EOL_CRLF; if (EQ (symbol, Qcr)) return EOL_CR; - signal_simple_error ("Unrecognized eol type", symbol); + invalid_constant ("Unrecognized eol type", symbol); return EOL_AUTODETECT; /* not reached */ } @@ -547,7 +544,7 @@ Lisp_Object coding_system = Ffind_coding_system (name); if (NILP (coding_system)) - signal_simple_error ("No such coding system", name); + invalid_argument ("No such coding system", name); return coding_system; } @@ -649,11 +646,11 @@ struct charset_conversion_spec spec; if (!CONSP (car) || !CONSP (XCDR (car)) || !NILP (XCDR (XCDR (car)))) - signal_simple_error ("Invalid charset conversion spec", car); + invalid_argument ("Invalid charset conversion spec", car); from = Fget_charset (XCAR (car)); to = Fget_charset (XCAR (XCDR (car))); if (XCHARSET_TYPE (from) != XCHARSET_TYPE (to)) - signal_simple_error_2 + invalid_operation_2 ("Attempted conversion between different charset types", from, to); spec.from_charset = from; @@ -880,7 +877,7 @@ else if (EQ (type, Qinternal)) { ty = CODESYS_INTERNAL; } #endif else - signal_simple_error ("Invalid coding system type", type); + invalid_constant ("Invalid coding system type", type); CHECK_SYMBOL (name); @@ -958,7 +955,7 @@ value); } else - signal_simple_error ("Unrecognized property", key); + invalid_constant ("Unrecognized property", key); } else if (EQ (type, Qccl)) { @@ -972,7 +969,7 @@ else if (EQ (key, Qencode)) suffix = "-ccl-encode"; else - signal_simple_error ("Unrecognized property", key); + invalid_constant ("Unrecognized property", key); /* If value is vector, register it as a ccl program associated with an newly created symbol for @@ -991,7 +988,7 @@ } /* check if the given ccl programs are valid. */ if (setup_ccl_program (&test_ccl, sym) < 0) - signal_simple_error ("Invalid CCL program", value); + invalid_argument ("Invalid CCL program", value); if (EQ (key, Qdecode)) CODING_SYSTEM_CCL_DECODE (codesys) = sym; @@ -1001,7 +998,7 @@ } #endif /* MULE */ else - signal_simple_error ("Unrecognized property", key); + invalid_constant ("Unrecognized property", key); } } @@ -1074,7 +1071,7 @@ if (SYMBOLP (aliasee)) return aliasee; else - signal_simple_error ("Symbol is not a coding system alias", alias); + invalid_argument ("Symbol is not a coding system alias", alias); return Qnil; /* To keep the compiler happy */ } @@ -1126,7 +1123,7 @@ CHECK_SYMBOL (alias); if (!NILP (Fcoding_system_canonical_name_p (alias))) - signal_simple_error + invalid_change ("Symbol is the canonical name of a coding system and cannot be redefined", alias); @@ -1172,7 +1169,7 @@ /* Check for coding system alias loops */ if (EQ (alias, aliasee)) - alias_loop: signal_simple_error_2 + alias_loop: invalid_operation_2 ("Attempt to create a coding system alias loop", alias, aliasee); for (probe = aliasee; @@ -1286,18 +1283,6 @@ return CHARSETP (cs) ? XCHARSET_NAME (cs) : Qnil; } - -DEFUN ("coding-system-charset", Fcoding_system_charset, 2, 2, 0, /* -Return initial charset of CODING-SYSTEM designated to GNUM. -GNUM allows 0 .. 3. -*/ - (coding_system, gnum)) -{ - coding_system = Fget_coding_system (coding_system); - CHECK_INT (gnum); - - return coding_system_charset (coding_system, XINT (gnum)); -} #endif /* MULE */ DEFUN ("coding-system-property", Fcoding_system_property, 2, 2, 0, /* @@ -1323,14 +1308,14 @@ #ifdef MULE case CODESYS_PROP_ISO2022: if (type != CODESYS_ISO2022) - signal_simple_error + invalid_argument ("Property only valid in ISO2022 coding systems", prop); break; case CODESYS_PROP_CCL: if (type != CODESYS_CCL) - signal_simple_error + invalid_argument ("Property only valid in CCL coding systems", prop); break; @@ -1341,7 +1326,7 @@ } if (!ok) - signal_simple_error ("Unrecognized property", prop); + invalid_constant ("Unrecognized property", prop); if (EQ (prop, Qname)) return XCODING_SYSTEM_NAME (coding_system); @@ -1437,7 +1422,7 @@ if (EQ (coding_category_symbol[i], symbol)) return i; - signal_simple_error ("Unrecognized coding category", symbol); + invalid_constant ("Unrecognized coding category", symbol); return 0; /* not reached */ } @@ -1479,7 +1464,7 @@ int cat = decode_coding_category (XCAR (rest)); if (category_to_priority[cat] >= 0) - signal_simple_error ("Duplicate coding category in list", XCAR (rest)); + sferror ("Duplicate coding category in list", XCAR (rest)); category_to_priority[cat] = i++; } @@ -5602,8 +5587,6 @@ { INIT_LRECORD_IMPLEMENTATION (coding_system); - DEFERROR_STANDARD (Qcoding_system_error, Qio_error); - DEFSUBR (Fcoding_system_p); DEFSUBR (Ffind_coding_system); DEFSUBR (Fget_coding_system); @@ -5619,9 +5602,6 @@ DEFSUBR (Fcoding_system_type); DEFSUBR (Fcoding_system_doc_string); -#ifdef MULE - DEFSUBR (Fcoding_system_charset); -#endif DEFSUBR (Fcoding_system_property); DEFSUBR (Fcoding_category_list); @@ -5643,50 +5623,50 @@ DEFSUBR (Fset_char_ucs); DEFSUBR (Fchar_ucs); #endif /* MULE */ - defsymbol (&Qcoding_systemp, "coding-system-p"); - defsymbol (&Qno_conversion, "no-conversion"); - defsymbol (&Qraw_text, "raw-text"); + DEFSYMBOL_MULTIWORD_PREDICATE (Qcoding_systemp); + DEFSYMBOL (Qno_conversion); + DEFSYMBOL (Qraw_text); #ifdef MULE - defsymbol (&Qbig5, "big5"); - defsymbol (&Qshift_jis, "shift-jis"); + DEFSYMBOL (Qbig5); + DEFSYMBOL (Qshift_jis); defsymbol (&Qucs4, "ucs-4"); defsymbol (&Qutf8, "utf-8"); - defsymbol (&Qccl, "ccl"); - defsymbol (&Qiso2022, "iso2022"); + DEFSYMBOL (Qccl); + DEFSYMBOL (Qiso2022); #endif /* MULE */ - defsymbol (&Qmnemonic, "mnemonic"); - defsymbol (&Qeol_type, "eol-type"); - defsymbol (&Qpost_read_conversion, "post-read-conversion"); - defsymbol (&Qpre_write_conversion, "pre-write-conversion"); - - defsymbol (&Qcr, "cr"); - defsymbol (&Qlf, "lf"); - defsymbol (&Qcrlf, "crlf"); - defsymbol (&Qeol_cr, "eol-cr"); - defsymbol (&Qeol_lf, "eol-lf"); - defsymbol (&Qeol_crlf, "eol-crlf"); + DEFSYMBOL (Qmnemonic); + DEFSYMBOL (Qeol_type); + DEFSYMBOL (Qpost_read_conversion); + DEFSYMBOL (Qpre_write_conversion); + + DEFSYMBOL (Qcr); + DEFSYMBOL (Qlf); + DEFSYMBOL (Qcrlf); + DEFSYMBOL (Qeol_cr); + DEFSYMBOL (Qeol_lf); + DEFSYMBOL (Qeol_crlf); #ifdef MULE - defsymbol (&Qcharset_g0, "charset-g0"); - defsymbol (&Qcharset_g1, "charset-g1"); - defsymbol (&Qcharset_g2, "charset-g2"); - defsymbol (&Qcharset_g3, "charset-g3"); - defsymbol (&Qforce_g0_on_output, "force-g0-on-output"); - defsymbol (&Qforce_g1_on_output, "force-g1-on-output"); - defsymbol (&Qforce_g2_on_output, "force-g2-on-output"); - defsymbol (&Qforce_g3_on_output, "force-g3-on-output"); - defsymbol (&Qno_iso6429, "no-iso6429"); - defsymbol (&Qinput_charset_conversion, "input-charset-conversion"); - defsymbol (&Qoutput_charset_conversion, "output-charset-conversion"); - - defsymbol (&Qshort, "short"); - defsymbol (&Qno_ascii_eol, "no-ascii-eol"); - defsymbol (&Qno_ascii_cntl, "no-ascii-cntl"); - defsymbol (&Qseven, "seven"); - defsymbol (&Qlock_shift, "lock-shift"); - defsymbol (&Qescape_quoted, "escape-quoted"); + DEFSYMBOL (Qcharset_g0); + DEFSYMBOL (Qcharset_g1); + DEFSYMBOL (Qcharset_g2); + DEFSYMBOL (Qcharset_g3); + DEFSYMBOL (Qforce_g0_on_output); + DEFSYMBOL (Qforce_g1_on_output); + DEFSYMBOL (Qforce_g2_on_output); + DEFSYMBOL (Qforce_g3_on_output); + DEFSYMBOL (Qno_iso6429); + DEFSYMBOL (Qinput_charset_conversion); + DEFSYMBOL (Qoutput_charset_conversion); + + DEFSYMBOL (Qshort); + DEFSYMBOL (Qno_ascii_eol); + DEFSYMBOL (Qno_ascii_cntl); + DEFSYMBOL (Qseven); + DEFSYMBOL (Qlock_shift); + DEFSYMBOL (Qescape_quoted); #endif /* MULE */ - defsymbol (&Qencode, "encode"); - defsymbol (&Qdecode, "decode"); + DEFSYMBOL (Qencode); + DEFSYMBOL (Qdecode); #ifdef MULE defsymbol (&coding_category_symbol[CODING_CATEGORY_SHIFT_JIS], diff --text -u 'xemacs-21.5.1/src/file-coding.h' 'xemacs-21.5.2/src/file-coding.h' Index: ././src/file-coding.h --- ././src/file-coding.h Fri Apr 13 03:23:44 2001 +++ ././src/file-coding.h Mon Jun 18 16:10:19 2001 @@ -144,6 +144,7 @@ DECLARE_LRECORD (coding_system, Lisp_Coding_System); #define XCODING_SYSTEM(x) XRECORD (x, coding_system, Lisp_Coding_System) #define XSETCODING_SYSTEM(x, p) XSETRECORD (x, p, coding_system) +#define wrap_coding_system(p) wrap_record (p, coding_system) #define CODING_SYSTEMP(x) RECORDP (x, coding_system) #define CHECK_CODING_SYSTEM(x) CHECK_RECORD (x, coding_system) #define CONCHECK_CODING_SYSTEM(x) CONCHECK_RECORD (x, coding_system) @@ -231,7 +232,6 @@ EXFUN (Fcoding_category_list, 0); EXFUN (Fcoding_category_system, 1); EXFUN (Fcoding_priority_list, 0); -EXFUN (Fcoding_system_charset, 2); EXFUN (Fcoding_system_doc_string, 1); EXFUN (Fcoding_system_list, 0); EXFUN (Fcoding_system_name, 1); diff --text -u 'xemacs-21.5.1/src/fileio.c' 'xemacs-21.5.2/src/fileio.c' Index: ././src/fileio.c --- ././src/fileio.c Fri Apr 13 03:23:45 2001 +++ ././src/fileio.c Sun Jun 10 19:42:31 2001 @@ -1,6 +1,6 @@ /* File IO for XEmacs. Copyright (C) 1985-1988, 1992-1995 Free Software Foundation, Inc. - Copyright (C) 1996 Ben Wing. + Copyright (C) 1996, 2001 Ben Wing. This file is part of XEmacs. @@ -54,6 +54,7 @@ #endif /* HPUX */ #ifdef WIN32_NATIVE +#include "nt.h" #define IS_DRIVE(x) isalpha (x) /* Need to lower-case the drive letter, or else expanded filenames will sometimes compare inequal, because @@ -114,7 +115,7 @@ static Lisp_Object Vinhibit_file_name_handlers; static Lisp_Object Vinhibit_file_name_operation; -Lisp_Object Qfile_error, Qfile_already_exists; +Lisp_Object Qfile_already_exists; Lisp_Object Qauto_save_hook; Lisp_Object Qauto_save_error; @@ -126,104 +127,36 @@ EXFUN (Frunning_temacs_p, 0); -/* signal a file error when errno contains a meaningful value. */ +/* DATA can be anything acceptable to signal_error (). + */ DOESNT_RETURN -report_file_error (const char *string, Lisp_Object data) -{ - /* #### dmoore - This uses current_buffer, better make sure no one - has GC'd the current buffer. File handlers are giving me a headache - maybe I'll just always protect current_buffer around all of those - calls. */ - - signal_error (Qfile_error, - Fcons (build_translated_string (string), - Fcons (lisp_strerror (errno), data))); -} - -void -maybe_report_file_error (const char *string, Lisp_Object data, - Lisp_Object class, Error_behavior errb) +report_file_type_error (Lisp_Object errtype, Lisp_Object oserrmess, + const CBufbyte *string, Lisp_Object data) { - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return; + struct gcpro gcpro1; + Lisp_Object errdata = build_error_data (NULL, data); - maybe_signal_error (Qfile_error, - Fcons (build_translated_string (string), - Fcons (lisp_strerror (errno), data)), - class, errb); + GCPRO1 (errdata); + errdata = Fcons (build_translated_string (string), + Fcons (oserrmess, errdata)); + signal_error_1 (errtype, errdata); + UNGCPRO; /* not reached */ } -/* signal a file error when errno does not contain a meaningful value. */ - DOESNT_RETURN -signal_file_error (const char *string, Lisp_Object data) +report_error_with_errno (Lisp_Object errtype, + const CBufbyte *string, Lisp_Object data) { - signal_error (Qfile_error, - list2 (build_translated_string (string), data)); + report_file_type_error (errtype, lisp_strerror (errno), string, data); } -void -maybe_signal_file_error (const char *string, Lisp_Object data, - Lisp_Object class, Error_behavior errb) -{ - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return; - maybe_signal_error (Qfile_error, - list2 (build_translated_string (string), data), - class, errb); -} - -DOESNT_RETURN -signal_double_file_error (const char *string1, const char *string2, - Lisp_Object data) -{ - signal_error (Qfile_error, - list3 (build_translated_string (string1), - build_translated_string (string2), - data)); -} - -void -maybe_signal_double_file_error (const char *string1, const char *string2, - Lisp_Object data, Lisp_Object class, - Error_behavior errb) -{ - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return; - maybe_signal_error (Qfile_error, - list3 (build_translated_string (string1), - build_translated_string (string2), - data), - class, errb); -} +/* signal a file error when errno contains a meaningful value. */ DOESNT_RETURN -signal_double_file_error_2 (const char *string1, const char *string2, - Lisp_Object data1, Lisp_Object data2) +report_file_error (const CBufbyte *string, Lisp_Object data) { - signal_error (Qfile_error, - list4 (build_translated_string (string1), - build_translated_string (string2), - data1, data2)); -} - -void -maybe_signal_double_file_error_2 (const char *string1, const char *string2, - Lisp_Object data1, Lisp_Object data2, - Lisp_Object class, Error_behavior errb) -{ - /* Optimization: */ - if (ERRB_EQ (errb, ERROR_ME_NOT)) - return; - maybe_signal_error (Qfile_error, - list4 (build_translated_string (string1), - build_translated_string (string2), - data1, data2), - class, errb); + report_error_with_errno (Qfile_error, string, data); } @@ -273,7 +206,7 @@ signal handler) because that's way too losing. (#### Actually, longjmp()ing out of the signal handler may not be - as losing as I thought. See sys_do_signal() in sysdep.c.) */ + as losing as I thought. See qxe_reliable_signal() in sysdep.c.) */ ssize_t read_allowing_quit (int fildes, void *buf, size_t size) @@ -726,7 +659,7 @@ error, or to ignore the error, which will likely result in inflooping. */ report_file_error ("Cannot create temporary name for prefix", - list1 (prefix)); + prefix); return Qnil; /* not reached */ } } @@ -980,23 +913,11 @@ memcpy (o, (char *) nm, p - nm); o [p - nm] = 0; - /* #### marcpa's syncing note: FSF uses getpwnam even on NT, - which does not work. The following works only if ~USER - names the user who runs this instance of XEmacs. While - NT is single-user (for the moment) you still can have - multiple user profiles users defined, each with its HOME. - Therefore, the following should be reworked to handle - this case. */ -#ifdef WIN32_NATIVE - /* Now if the file given is "~foo/file" and HOME="c:/", then - we want the file to be named "c:/file" ("~foo" becomes - "c:/"). The variable o has "~foo", so we can use the - length of that string to offset nm. August Hill, 31 Aug - 1998. */ - newdir = (Bufbyte *) get_home_directory(); - dostounix_filename (newdir); - nm += strlen(o) + 1; -#else /* not WIN32_NATIVE */ + /* #### While NT is single-user (for the moment) you still + can have multiple user profiles users defined, each with + its HOME. So maybe possibly we should think about handling + ~user. --ben */ +#ifndef WIN32_NATIVE #ifdef CYGWIN if ((user = user_login_name (NULL)) != NULL) { @@ -1396,7 +1317,7 @@ errno = ENAMETOOLONG; goto lose; lose: - report_file_error ("Finding truename", list1 (expanded_name)); + report_file_error ("Finding truename", expanded_name); } RETURN_UNGCPRO (Qnil); } @@ -1676,16 +1597,6 @@ return; } -/* A slightly higher-level interface than `set_file_times' */ -static int -lisp_string_set_file_times (Lisp_Object filename, - EMACS_TIME atime, EMACS_TIME mtime) -{ - char *ext_filename; - LISP_STRING_TO_EXTERNAL (filename, ext_filename, Qfile_name); - return set_file_times (ext_filename, atime, mtime); -} - DEFUN ("copy-file", Fcopy_file, 2, 4, "fCopy file: \nFCopy %s to file: \np\nP", /* Copy FILENAME to NEWNAME. Both args must be strings. @@ -1759,7 +1670,7 @@ ifd = interruptible_open ((char *) XSTRING_DATA (filename), O_RDONLY | OPEN_BINARY, 0); if (ifd < 0) - report_file_error ("Opening input file", list1 (filename)); + report_file_error ("Opening input file", filename); record_unwind_protect (close_file_unwind, make_int (ifd)); @@ -1773,7 +1684,7 @@ { errno = 0; report_file_error ("Input and output files are the same", - list2 (filename, newname)); + list3 (Qunbound, filename, newname)); } #endif @@ -1791,7 +1702,7 @@ /* Get a better looking error message. */ errno = EISDIR; #endif /* EISDIR */ - report_file_error ("Non-regular file", list1 (filename)); + report_file_error ("Non-regular file", filename); } } #endif /* S_ISREG && S_ISLNK */ @@ -1799,7 +1710,7 @@ ofd = open( (char *) XSTRING_DATA (newname), O_WRONLY | O_CREAT | O_TRUNC | OPEN_BINARY, CREAT_MODE); if (ofd < 0) - report_file_error ("Opening output file", list1 (newname)); + report_file_error ("Opening output file", newname); { Lisp_Object ofd_locative = noseeum_cons (make_int (ofd), Qnil); @@ -1809,12 +1720,12 @@ while ((n = read_allowing_quit (ifd, buf, sizeof (buf))) > 0) { if (write_allowing_quit (ofd, buf, n) != n) - report_file_error ("I/O error", list1 (newname)); + report_file_error ("I/O error", newname); } /* Closing the output clobbers the file times on some systems. */ if (close (ofd) < 0) - report_file_error ("I/O error", list1 (newname)); + report_file_error ("I/O error", newname); if (input_file_statable_p) { @@ -1823,7 +1734,7 @@ EMACS_TIME atime, mtime; EMACS_SET_SECS_USECS (atime, st.st_atime, 0); EMACS_SET_SECS_USECS (mtime, st.st_mtime, 0); - if (lisp_string_set_file_times (newname, atime, mtime)) + if (set_file_times (newname, atime, mtime)) report_file_error ("I/O error", list1 (newname)); } chmod ((const char *) XSTRING_DATA (newname), @@ -1874,7 +1785,7 @@ dir [XSTRING_LENGTH (dirname_) - 1] = 0; if (mkdir (dir, 0777) != 0) - report_file_error ("Creating directory", list1 (dirname_)); + report_file_error ("Creating directory", dirname_); return Qnil; } @@ -1900,7 +1811,7 @@ return (call2 (handler, Qdelete_directory, dirname_)); if (rmdir ((char *) XSTRING_DATA (dirname_)) != 0) - report_file_error ("Removing directory", list1 (dirname_)); + report_file_error ("Removing directory", dirname_); return Qnil; } @@ -1925,7 +1836,7 @@ return call2 (handler, Qdelete_file, filename); if (0 > unlink ((char *) XSTRING_DATA (filename))) - report_file_error ("Removing old name", list1 (filename)); + report_file_error ("Removing old name", filename); return Qnil; } @@ -2022,7 +1933,7 @@ } else { - report_file_error ("Renaming", list2 (filename, newname)); + report_file_error ("Renaming", list3 (Qunbound, filename, newname)); } } UNGCPRO; @@ -2074,7 +1985,7 @@ Reverted to previous behavior pending a working fix. (jhar) */ #if defined(WIN32_NATIVE) /* Windows does not support this operation. */ - report_file_error ("Adding new name", Flist (2, &filename)); + signal_error_2 (Qunimplemented, "Adding new name", filename, newname); #else /* not defined(WIN32_NATIVE) */ unlink ((char *) XSTRING_DATA (newname)); @@ -2082,7 +1993,7 @@ (char *) XSTRING_DATA (newname))) { report_file_error ("Adding new name", - list2 (filename, newname)); + list3 (Qunbound, filename, newname)); } #endif /* defined(WIN32_NATIVE) */ @@ -2140,7 +2051,7 @@ (char *) XSTRING_DATA (linkname))) { report_file_error ("Making symbolic link", - list2 (filename, linkname)); + list3 (Qunbound, filename, linkname)); } #endif /* S_IFLNK */ @@ -2307,7 +2218,7 @@ #if defined(WIN32_NATIVE) || defined(CYGWIN) /* Under MS-DOS and Windows, open does not work for directories. */ UNGCPRO; - if (access (XSTRING_DATA (abspath), 0) == 0) + if (access ((char *) XSTRING_DATA (abspath), 0) == 0) return Qt; else return Qnil; @@ -2581,7 +2492,7 @@ return call3 (handler, Qset_file_modes, abspath, mode); if (chmod ((char *) XSTRING_DATA (abspath), XINT (mode)) < 0) - report_file_error ("Doing chmod", list1 (abspath)); + report_file_error ("Doing chmod", abspath); return Qnil; } @@ -2715,7 +2626,7 @@ int not_regular = 0; if (buf->base_buffer && ! NILP (visit)) - error ("Cannot do file visiting in an indirect buffer"); + invalid_operation ("Cannot do file visiting in an indirect buffer", Qunbound); /* No need to call Fbarf_if_buffer_read_only() here. That's called in begin_multiple_change() or wherever. */ @@ -2754,7 +2665,7 @@ #endif if ( (!NILP (start) || !NILP (end)) && !NILP (visit) ) - error ("Attempt to visit less than an entire file"); + invalid_operation ("Attempt to visit less than an entire file", Qunbound); fd = -1; @@ -2763,7 +2674,7 @@ if (fd >= 0) close (fd); badopen: if (NILP (visit)) - report_file_error ("Opening input file", list1 (filename)); + report_file_error ("Opening input file", filename); st.st_mtime = -1; goto notfound; } @@ -2813,7 +2724,7 @@ /* Supposedly happens on VMS. */ if (st.st_size < 0) - error ("File size is negative"); + signal_error (Qfile_error, "File size is negative", Qunbound); if (NILP (end)) { @@ -2821,7 +2732,7 @@ { end = make_int (st.st_size); if (XINT (end) != st.st_size) - error ("Maximum buffer size exceeded"); + out_of_memory ("Maximum buffer size exceeded", Qunbound); } } @@ -2859,8 +2770,7 @@ Bufpos bufpos; nread = read_allowing_quit (fd, buffer, sizeof buffer); if (nread < 0) - error ("IO error reading %s: %s", - XSTRING_DATA (filename), strerror (errno)); + report_file_error ("Reading", filename); else if (nread == 0) break; bufpos = 0; @@ -2898,7 +2808,7 @@ /* How much can we scan in the next step? */ trial = min (curpos, (Bufpos) sizeof (buffer)); if (lseek (fd, curpos - trial, 0) < 0) - report_file_error ("Setting file position", list1 (filename)); + report_file_error ("Setting file position", filename); total_read = 0; while (total_read < trial) @@ -2906,7 +2816,7 @@ nread = read_allowing_quit (fd, buffer + total_read, trial - total_read); if (nread <= 0) - report_file_error ("IO error reading file", list1 (filename)); + report_file_error ("IO error reading file", filename); total_read += nread; } /* Scan this bufferful from the end, comparing with @@ -2952,7 +2862,7 @@ /* Make sure point-max won't overflow after this insertion. */ if (total != XINT (make_int (total))) - error ("Maximum buffer size exceeded"); + out_of_memory ("Maximum buffer size exceeded", Qunbound); } else /* For a special file, all we can do is guess. The value of -1 @@ -2969,7 +2879,7 @@ ) { if (lseek (fd, XINT (start), 0) < 0) - report_file_error ("Setting file position", list1 (filename)); + report_file_error ("Setting file position", filename); } { @@ -3030,8 +2940,8 @@ if (saverrno != 0) { - error ("IO error reading %s: %s", - XSTRING_DATA (filename), strerror (saverrno)); + errno = saverrno; + report_file_error ("Reading", filename); } notfound: @@ -3077,7 +2987,7 @@ /* If visiting nonexistent file, return nil. */ if (buf->modtime == -1) report_file_error ("Opening input file", - list1 (filename)); + filename); } /* Decode file format */ @@ -3272,7 +3182,7 @@ if (!auto_saving) unlock_file (lockname); errno = save_errno; #endif /* CLASH_DETECTION */ - report_file_error ("Opening output file", list1 (filename)); + report_file_error ("Opening output file", filename); } { @@ -3292,7 +3202,7 @@ if (!auto_saving) unlock_file (lockname); #endif /* CLASH_DETECTION */ report_file_error ("Lseek error", - list1 (filename)); + filename); } } @@ -3391,7 +3301,7 @@ if (failure) { errno = save_errno; - report_file_error ("Writing file", list1 (fn)); + report_file_error ("Writing file", fn); } if (visiting) @@ -4158,47 +4068,47 @@ void syms_of_fileio (void) { - defsymbol (&Qexpand_file_name, "expand-file-name"); - defsymbol (&Qfile_truename, "file-truename"); - defsymbol (&Qsubstitute_in_file_name, "substitute-in-file-name"); - defsymbol (&Qdirectory_file_name, "directory-file-name"); - defsymbol (&Qfile_name_directory, "file-name-directory"); - defsymbol (&Qfile_name_nondirectory, "file-name-nondirectory"); - defsymbol (&Qunhandled_file_name_directory, "unhandled-file-name-directory"); - defsymbol (&Qfile_name_as_directory, "file-name-as-directory"); - defsymbol (&Qcopy_file, "copy-file"); - defsymbol (&Qmake_directory_internal, "make-directory-internal"); - defsymbol (&Qdelete_directory, "delete-directory"); - defsymbol (&Qdelete_file, "delete-file"); - defsymbol (&Qrename_file, "rename-file"); - defsymbol (&Qadd_name_to_file, "add-name-to-file"); - defsymbol (&Qmake_symbolic_link, "make-symbolic-link"); - defsymbol (&Qfile_exists_p, "file-exists-p"); - defsymbol (&Qfile_executable_p, "file-executable-p"); - defsymbol (&Qfile_readable_p, "file-readable-p"); - defsymbol (&Qfile_symlink_p, "file-symlink-p"); - defsymbol (&Qfile_writable_p, "file-writable-p"); - defsymbol (&Qfile_directory_p, "file-directory-p"); - defsymbol (&Qfile_regular_p, "file-regular-p"); - defsymbol (&Qfile_accessible_directory_p, "file-accessible-directory-p"); - defsymbol (&Qfile_modes, "file-modes"); - defsymbol (&Qset_file_modes, "set-file-modes"); - defsymbol (&Qfile_newer_than_file_p, "file-newer-than-file-p"); - defsymbol (&Qinsert_file_contents, "insert-file-contents"); - defsymbol (&Qwrite_region, "write-region"); - defsymbol (&Qverify_visited_file_modtime, "verify-visited-file-modtime"); - defsymbol (&Qset_visited_file_modtime, "set-visited-file-modtime"); - defsymbol (&Qcar_less_than_car, "car-less-than-car"); /* Vomitous! */ - - defsymbol (&Qauto_save_hook, "auto-save-hook"); - defsymbol (&Qauto_save_error, "auto-save-error"); - defsymbol (&Qauto_saving, "auto-saving"); + DEFSYMBOL (Qexpand_file_name); + DEFSYMBOL (Qfile_truename); + DEFSYMBOL (Qsubstitute_in_file_name); + DEFSYMBOL (Qdirectory_file_name); + DEFSYMBOL (Qfile_name_directory); + DEFSYMBOL (Qfile_name_nondirectory); + DEFSYMBOL (Qunhandled_file_name_directory); + DEFSYMBOL (Qfile_name_as_directory); + DEFSYMBOL (Qcopy_file); + DEFSYMBOL (Qmake_directory_internal); + DEFSYMBOL (Qdelete_directory); + DEFSYMBOL (Qdelete_file); + DEFSYMBOL (Qrename_file); + DEFSYMBOL (Qadd_name_to_file); + DEFSYMBOL (Qmake_symbolic_link); + DEFSYMBOL (Qfile_exists_p); + DEFSYMBOL (Qfile_executable_p); + DEFSYMBOL (Qfile_readable_p); + DEFSYMBOL (Qfile_symlink_p); + DEFSYMBOL (Qfile_writable_p); + DEFSYMBOL (Qfile_directory_p); + DEFSYMBOL (Qfile_regular_p); + DEFSYMBOL (Qfile_accessible_directory_p); + DEFSYMBOL (Qfile_modes); + DEFSYMBOL (Qset_file_modes); + DEFSYMBOL (Qfile_newer_than_file_p); + DEFSYMBOL (Qinsert_file_contents); + DEFSYMBOL (Qwrite_region); + DEFSYMBOL (Qverify_visited_file_modtime); + DEFSYMBOL (Qset_visited_file_modtime); + DEFSYMBOL (Qcar_less_than_car); /* Vomitous! */ + + DEFSYMBOL (Qauto_save_hook); + DEFSYMBOL (Qauto_save_error); + DEFSYMBOL (Qauto_saving); + + DEFSYMBOL (Qformat_decode); + DEFSYMBOL (Qformat_annotate_function); - defsymbol (&Qformat_decode, "format-decode"); - defsymbol (&Qformat_annotate_function, "format-annotate-function"); + DEFSYMBOL (Qcompute_buffer_file_truename); - defsymbol (&Qcompute_buffer_file_truename, "compute-buffer-file-truename"); - DEFERROR_STANDARD (Qfile_error, Qio_error); DEFERROR_STANDARD (Qfile_already_exists, Qfile_error); DEFSUBR (Ffind_file_name_handler); diff --text -u 'xemacs-21.5.1/src/filelock.c' 'xemacs-21.5.2/src/filelock.c' Index: ././src/filelock.c --- ././src/filelock.c Fri Apr 13 03:23:45 2001 +++ ././src/filelock.c Sun Jun 10 19:42:31 2001 @@ -1,19 +1,19 @@ /* Copyright (C) 1985, 86, 87, 93, 94, 96 Free Software Foundation, Inc. -This file is part of GNU Emacs. +This file is part of XEmacs. -GNU Emacs is free software; you can redistribute it and/or modify +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. -GNU Emacs is distributed in the hope that it will be useful, +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 GNU Emacs; see the file COPYING. If not, write to +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. */ @@ -492,9 +492,8 @@ DEFSUBR (Flock_buffer); DEFSUBR (Ffile_locked_p); - defsymbol (&Qask_user_about_supersession_threat, - "ask-user-about-supersession-threat"); - defsymbol (&Qask_user_about_lock, "ask-user-about-lock"); + DEFSYMBOL (Qask_user_about_supersession_threat); + DEFSYMBOL (Qask_user_about_lock); } void diff --text -u 'xemacs-21.5.1/src/floatfns.c' 'xemacs-21.5.2/src/floatfns.c' Index: ././src/floatfns.c --- ././src/floatfns.c Fri Apr 13 03:23:45 2001 +++ ././src/floatfns.c Sun Jun 10 19:42:31 2001 @@ -937,7 +937,7 @@ occurring inside a signal handler to be restartable, considering that anything could happen when the error is signaled and trapped and considering the asynchronous nature of signal handlers. */ - signal_error (Qarith_error, list1 (float_error_arg)); + signal_error (Qarith_error, 0, float_error_arg); } /* Another idea was to replace the library function `infnan' @@ -983,7 +983,7 @@ { #ifdef LISP_FLOAT_TYPE # ifdef FLOAT_CATCH_SIGILL - signal (SIGILL, float_error); + EMACS_SIGNAL (SIGILL, float_error); # endif in_float = 0; #endif /* LISP_FLOAT_TYPE */ diff --text -u 'xemacs-21.5.1/src/fns.c' 'xemacs-21.5.2/src/fns.c' Index: ././src/fns.c --- ././src/fns.c Fri Apr 13 03:23:45 2001 +++ ././src/fns.c Fri May 25 20:26:55 2001 @@ -55,6 +55,8 @@ Lisp_Object Qstring_lessp; Lisp_Object Qidentity; +Lisp_Object Qbase64_conversion_error; + static int internal_old_equal (Lisp_Object, Lisp_Object, int); Lisp_Object safe_copy_tree (Lisp_Object arg, Lisp_Object vecp, int depth); @@ -205,8 +207,8 @@ check_losing_bytecode (const char *function, Lisp_Object seq) { if (COMPILED_FUNCTIONP (seq)) - error_with_frob - (seq, + signal_ferror_with_frob + (Qinvalid_argument, seq, "As of 20.3, `%s' no longer works with compiled-function objects", function); } @@ -871,7 +873,7 @@ safe_copy_tree (Lisp_Object arg, Lisp_Object vecp, int depth) { if (depth > 200) - signal_simple_error ("Stack overflow in copy-tree", arg); + stack_overflow ("Stack overflow in copy-tree", arg); if (CONSP (arg)) { @@ -2047,7 +2049,7 @@ result in a list with an odd length. */ static Lisp_Object -bad_bad_bunny (Lisp_Object *plist, Lisp_Object *badplace, Error_behavior errb) +bad_bad_bunny (Lisp_Object *plist, Lisp_Object *badplace, Error_Behavior errb) { if (ERRB_EQ (errb, ERROR_ME)) return Fsignal (Qmalformed_property_list, list2 (*plist, *badplace)); @@ -2074,7 +2076,7 @@ */ static Lisp_Object -bad_bad_turtle (Lisp_Object *plist, Lisp_Object *badplace, Error_behavior errb) +bad_bad_turtle (Lisp_Object *plist, Lisp_Object *badplace, Error_Behavior errb) { if (ERRB_EQ (errb, ERROR_ME)) return Fsignal (Qcircular_property_list, list1 (*plist)); @@ -2103,7 +2105,7 @@ static int advance_plist_pointers (Lisp_Object *plist, Lisp_Object **tortoise, Lisp_Object **hare, - Error_behavior errb, Lisp_Object *retval) + Error_Behavior errb, Lisp_Object *retval) { int i; Lisp_Object *tortsave = *tortoise; @@ -2185,7 +2187,7 @@ Lisp_Object external_plist_get (Lisp_Object *plist, Lisp_Object property, - int laxp, Error_behavior errb) + int laxp, Error_Behavior errb) { Lisp_Object *tortoise = plist; Lisp_Object *hare = plist; @@ -2219,7 +2221,7 @@ void external_plist_put (Lisp_Object *plist, Lisp_Object property, - Lisp_Object value, int laxp, Error_behavior errb) + Lisp_Object value, int laxp, Error_Behavior errb) { Lisp_Object *tortoise = plist; Lisp_Object *hare = plist; @@ -2246,7 +2248,7 @@ int external_remprop (Lisp_Object *plist, Lisp_Object property, - int laxp, Error_behavior errb) + int laxp, Error_Behavior errb) { Lisp_Object *tortoise = plist; Lisp_Object *hare = plist; @@ -2569,7 +2571,7 @@ if (LRECORDP (object) && XRECORD_LHEADER_IMPLEMENTATION (object)->getprop) val = XRECORD_LHEADER_IMPLEMENTATION (object)->getprop (object, property); else - signal_simple_error ("Object type has no properties", object); + invalid_operation ("Object type has no properties", object); return UNBOUNDP (val) ? default_ : val; } @@ -2591,10 +2593,10 @@ { if (! XRECORD_LHEADER_IMPLEMENTATION (object)->putprop (object, property, value)) - signal_simple_error ("Can't set property on object", property); + invalid_change ("Can't set property on object", property); } else - signal_simple_error ("Object type has no settable properties", object); + invalid_change ("Object type has no settable properties", object); return value; } @@ -2615,10 +2617,10 @@ { ret = XRECORD_LHEADER_IMPLEMENTATION (object)->remprop (object, property); if (ret == -1) - signal_simple_error ("Can't remove property from object", property); + invalid_change ("Can't remove property from object", property); } else - signal_simple_error ("Object type has no removable properties", object); + invalid_change ("Object type has no removable properties", object); return ret ? Qt : Qnil; } @@ -2635,7 +2637,7 @@ if (LRECORDP (object) && XRECORD_LHEADER_IMPLEMENTATION (object)->plist) return XRECORD_LHEADER_IMPLEMENTATION (object)->plist (object); else - signal_simple_error ("Object type has no properties", object); + invalid_operation ("Object type has no properties", object); return Qnil; } @@ -2645,7 +2647,7 @@ internal_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) { if (depth > 200) - error ("Stack overflow in equal"); + stack_overflow ("Stack overflow in equal", Qunbound); QUIT; if (EQ_WITH_EBOLA_NOTICE (obj1, obj2)) return 1; @@ -2675,7 +2677,7 @@ internal_old_equal (Lisp_Object obj1, Lisp_Object obj2, int depth) { if (depth > 200) - error ("Stack overflow in equal"); + stack_overflow ("Stack overflow in equal", Qunbound); QUIT; if (HACKEQ_UNSAFE (obj1, obj2)) return 1; @@ -3178,10 +3180,11 @@ Lisp_Object ret = Qnil; if (loads == -2) - error ("load-average not implemented for this operating system"); + signal_error (Qunimplemented, + "load-average not implemented for this operating system", + Qunbound); else if (loads < 0) - signal_simple_error ("Could not get load-average", - lisp_strerror (errno)); + invalid_operation ("Could not get load-average", lisp_strerror (errno)); while (loads-- > 0) { @@ -3349,8 +3352,7 @@ tem = Fmemq (feature, Vfeatures); if (NILP (tem)) - error ("Required feature %s was not provided", - string_data (XSYMBOL (feature)->name)); + invalid_state ("Required feature was not provided", feature); /* Once loading finishes, don't undo it. */ Vautoload_queue = Qt; @@ -3419,11 +3421,17 @@ The octets are divided into 6 bit chunks, which are then encoded into base64 characters. */ -#define ADVANCE_INPUT(c, stream) \ - ((ec = Lstream_get_emchar (stream)) == -1 ? 0 : \ - ((ec > 255) ? \ - (signal_simple_error ("Non-ascii character in base64 input", \ - make_char (ec)), 0) \ +static DOESNT_RETURN +base64_conversion_error (const char *reason, Lisp_Object frob) +{ + signal_error (Qbase64_conversion_error, reason, frob); +} + +#define ADVANCE_INPUT(c, stream) \ + ((ec = Lstream_get_emchar (stream)) == -1 ? 0 : \ + ((ec > 255) ? \ + (base64_conversion_error ("Non-ascii character in base64 input", \ + make_char (ec)), 0) \ : (c = (Bufbyte)ec), 1)) static Bytind @@ -3518,33 +3526,37 @@ if (ec < 0) break; if (ec == '=') - signal_simple_error ("Illegal `=' character while decoding base64", - make_int (streampos)); + base64_conversion_error ("Illegal `=' character while decoding base64", + make_int (streampos)); value = base64_char_to_value[ec] << 18; /* Process second byte of a quadruplet. */ ADVANCE_INPUT_IGNORE_NONBASE64 (ec, istream, streampos); if (ec < 0) - error ("Premature EOF while decoding base64"); + base64_conversion_error ("Premature EOF while decoding base64", + Qunbound); if (ec == '=') - signal_simple_error ("Illegal `=' character while decoding base64", - make_int (streampos)); + base64_conversion_error ("Illegal `=' character while decoding base64", + make_int (streampos)); value |= base64_char_to_value[ec] << 12; STORE_BYTE (e, value >> 16, ccnt); /* Process third byte of a quadruplet. */ ADVANCE_INPUT_IGNORE_NONBASE64 (ec, istream, streampos); if (ec < 0) - error ("Premature EOF while decoding base64"); + base64_conversion_error ("Premature EOF while decoding base64", + Qunbound); if (ec == '=') { ADVANCE_INPUT_IGNORE_NONBASE64 (ec, istream, streampos); if (ec < 0) - error ("Premature EOF while decoding base64"); + base64_conversion_error ("Premature EOF while decoding base64", + Qunbound); if (ec != '=') - signal_simple_error ("Padding `=' expected but not found while decoding base64", - make_int (streampos)); + base64_conversion_error + ("Padding `=' expected but not found while decoding base64", + make_int (streampos)); continue; } @@ -3554,7 +3566,8 @@ /* Process fourth byte of a quadruplet. */ ADVANCE_INPUT_IGNORE_NONBASE64 (ec, istream, streampos); if (ec < 0) - error ("Premature EOF while decoding base64"); + base64_conversion_error ("Premature EOF while decoding base64", + Qunbound); if (ec == '=') continue; @@ -3766,9 +3779,11 @@ { INIT_LRECORD_IMPLEMENTATION (bit_vector); - defsymbol (&Qstring_lessp, "string-lessp"); - defsymbol (&Qidentity, "identity"); - defsymbol (&Qyes_or_no_p, "yes-or-no-p"); + DEFSYMBOL (Qstring_lessp); + DEFSYMBOL (Qidentity); + DEFSYMBOL (Qyes_or_no_p); + + DEFERROR_STANDARD (Qbase64_conversion_error, Qconversion_error); DEFSUBR (Fidentity); DEFSUBR (Frandom); diff --text -u 'xemacs-21.5.1/src/font-lock.c' 'xemacs-21.5.2/src/font-lock.c' Index: ././src/font-lock.c --- ././src/font-lock.c Fri Apr 13 03:23:46 2001 +++ ././src/font-lock.c Thu May 24 16:51:14 2001 @@ -812,9 +812,9 @@ void syms_of_font_lock (void) { - defsymbol (&Qcomment, "comment"); - defsymbol (&Qblock_comment, "block-comment"); - defsymbol (&Qbeginning_of_defun, "beginning-of-defun"); + DEFSYMBOL (Qcomment); + DEFSYMBOL (Qblock_comment); + DEFSYMBOL (Qbeginning_of_defun); DEFSUBR (Fbuffer_syntactic_context); DEFSUBR (Fbuffer_syntactic_context_depth); diff --text -u 'xemacs-21.5.1/src/frame-gtk.c' 'xemacs-21.5.2/src/frame-gtk.c' Index: ././src/frame-gtk.c --- ././src/frame-gtk.c Fri Apr 13 03:23:46 2001 +++ ././src/frame-gtk.c Thu May 24 16:51:15 2001 @@ -784,7 +784,7 @@ if (!GTK_IS_CONTAINER (XGTK_OBJECT (lisp_window_id)->object)) { - signal_simple_error ("Window ID must be a GtkContainer subclass", lisp_window_id); + invalid_argument ("Window ID must be a GtkContainer subclass", lisp_window_id); } shell = gtk_vbox_new (FALSE, 0); @@ -957,8 +957,8 @@ popup = Fselected_frame (device); CHECK_LIVE_FRAME (popup); if (!EQ (device, FRAME_DEVICE (XFRAME (popup)))) - signal_simple_error_2 ("Parent must be on same device as frame", - device, popup); + invalid_argument_2 ("Parent must be on same device as frame", + device, popup); } initially_unmapped = Fplist_get (props, Qinitially_unmapped, Qnil); @@ -1182,7 +1182,7 @@ static void gtk_cant_notify_wm_error (void) { - error ("Can't notify window manager of iconification."); + signal_error (Qgui_error, "Can't notify window manager of iconification", Qunbound); } /* Raise frame F. */ @@ -1389,11 +1389,11 @@ void syms_of_frame_gtk (void) { - defsymbol (&Qwindow_id, "window-id"); - defsymbol (&Qtext_widget, "text-widget"); - defsymbol (&Qcontainer_widget, "container-widget"); - defsymbol (&Qshell_widget, "shell-widget"); - defsymbol (&Qdetachable_menubar, "detachable-menubar"); + DEFSYMBOL (Qwindow_id); + DEFSYMBOL (Qtext_widget); + DEFSYMBOL (Qcontainer_widget); + DEFSYMBOL (Qshell_widget); + DEFSYMBOL (Qdetachable_menubar); #ifdef HAVE_DRAGNDROP staticpro (&Vcurrent_drag_object); diff --text -u 'xemacs-21.5.1/src/frame-msw.c' 'xemacs-21.5.2/src/frame-msw.c' Index: ././src/frame-msw.c --- ././src/frame-msw.c Sat May 5 19:54:20 2001 +++ ././src/frame-msw.c Thu May 31 21:45:37 2001 @@ -339,6 +339,7 @@ ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_RESTORE); else ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOW); + SetActiveWindow (FRAME_MSWINDOWS_HANDLE(f)); f->visible = 1; f->iconified = 0; } @@ -517,11 +518,14 @@ static void mswindows_set_title_from_bufbyte (struct frame *f, Bufbyte *title) { - unsigned int new_checksum = hash_string (title, strlen (title)); - if (new_checksum != FRAME_MSWINDOWS_TITLE_CHECKSUM(f)) + unsigned int new_checksum = hash_string (title, strlen ((char *) title)); + if (new_checksum != FRAME_MSWINDOWS_TITLE_CHECKSUM (f)) { - FRAME_MSWINDOWS_TITLE_CHECKSUM(f) = new_checksum; - SetWindowText (FRAME_MSWINDOWS_HANDLE(f), title); + Extbyte *title_ext; + + FRAME_MSWINDOWS_TITLE_CHECKSUM (f) = new_checksum; + C_STRING_TO_EXTERNAL (title, title_ext, Qmswindows_tstr); + SetWindowText (FRAME_MSWINDOWS_HANDLE (f), title_ext); } } @@ -883,7 +887,7 @@ || frame_top < 0 || frame_left + frame_width > GetDeviceCaps (hdc, HORZRES) || frame_top + frame_height > GetDeviceCaps (hdc, VERTRES)) - invalid_operation ("Print area is ouside of the printer's " + invalid_operation ("Print area is outside of the printer's " "hardware printable area", STRINGP (f->name) ? f->name : Qunbound); diff --text -u 'xemacs-21.5.1/src/frame-x.c' 'xemacs-21.5.2/src/frame-x.c' Index: ././src/frame-x.c --- ././src/frame-x.c Sat May 5 19:54:22 2001 +++ ././src/frame-x.c Thu May 31 21:45:37 2001 @@ -396,15 +396,15 @@ } #endif /* !HAVE_WMCOMMAND */ -static int -x_frame_iconified_p (struct frame *f) +int +x_frame_window_state (struct frame *f) { Atom actual_type; int actual_format; unsigned long nitems, bytesafter; unsigned long *datap = 0; Widget widget; - int result = 0; + int result = -1; struct device *d = XDEVICE (FRAME_DEVICE (f)); widget = FRAME_X_SHELL_WIDGET (f); @@ -415,14 +415,20 @@ (unsigned char **) &datap) && datap) { - if (nitems <= 2 /* "suggested" by ICCCM version 1 */ - && datap[0] == IconicState) - result = 1; + if (nitems <= 2) /* "suggested" by ICCCM version 1 */ + result = (int) datap[0]; XFree ((char *) datap); } + return result; } +static int +x_frame_iconified_p (struct frame *f) +{ + return x_frame_window_state (f) == IconicState; +} + /************************************************************************/ /* frame properties */ @@ -1893,7 +1899,7 @@ #ifndef EXTERNAL_WIDGET if (!NILP (lisp_window_id)) - error ("support for external widgets was not enabled at compile-time"); + signal_error (Qunimplemented, "support for external widgets was not enabled at compile-time", Qunbound); #else if (!NILP (lisp_window_id)) { @@ -1914,7 +1920,8 @@ else sscanf (string, "%lu", &window_id); if (!is_valid_window (window_id, d)) - error ("Invalid window %lu", (unsigned long) window_id); + signal_ferror (Qinvalid_argument, "Invalid window %lu", + (unsigned long) window_id); FRAME_X_EXTERNAL_WINDOW_P (f) = 1; } else #endif /* EXTERNAL_WIDGET */ @@ -2161,8 +2168,8 @@ popup = Fselected_frame (device); CHECK_LIVE_FRAME (popup); if (!EQ (device, FRAME_DEVICE (XFRAME (popup)))) - signal_simple_error_2 ("Parent must be on same device as frame", - device, popup); + invalid_argument_2 ("Parent must be on same device as frame", + device, popup); } /* @@ -2423,7 +2430,7 @@ static void x_cant_notify_wm_error (void) { - error ("Can't notify window manager of iconification."); + signal_error (Qgui_error, "Can't notify window manager of iconification", Qunbound); } /* Raise frame F. */ @@ -2526,6 +2533,9 @@ x_frame_visible_p (struct frame *f) { #if 0 + + /* #### Ben suggests using x_frame_window_state (f) == NormalState. */ + Display *display = DEVICE_X_DISPLAY (XDEVICE (f->device)); XWindowAttributes xwa; int result; @@ -2772,8 +2782,8 @@ void syms_of_frame_x (void) { - defsymbol (&Qwindow_id, "window-id"); - defsymbol (&Qx_resource_name, "x-resource-name"); + DEFSYMBOL (Qwindow_id); + DEFSYMBOL (Qx_resource_name); DEFSUBR (Fx_window_id); #ifdef HAVE_CDE diff --text -u 'xemacs-21.5.1/src/frame.c' 'xemacs-21.5.2/src/frame.c' Index: ././src/frame.c --- ././src/frame.c Fri Apr 13 03:23:47 2001 +++ ././src/frame.c Mon Jun 18 16:10:19 2001 @@ -133,6 +133,15 @@ if (FRAME_LIVE_P (f)) /* device is nil for a dead frame */ MAYBE_FRAMEMETH (f, mark_frame, (f)); +#ifdef HAVE_SCROLLBARS + if (f->sb_vcache) + mark_object (wrap_scrollbar_instance (f->sb_vcache)); + if (f->sb_hcache) + mark_object (wrap_scrollbar_instance (f->sb_hcache)); +#endif + + mark_gutters (f); + return Qnil; } @@ -143,8 +152,8 @@ char buf[200]; if (print_readably) - error ("printing unreadable object #", - XSTRING_DATA (frm->name), frm->header.uid); + printing_unreadable_object ("#", + XSTRING_DATA (frm->name), frm->header.uid); sprintf (buf, "#<%s-frame ", !FRAME_LIVE_P (frm) ? "dead" : FRAME_TYPE_NAME (frm)); @@ -161,6 +170,8 @@ static void nuke_all_frame_slots (struct frame *f) { + zero_lcrecord (f); + #define MARKED_SLOT(x) f->x = Qnil #include "frameslots.h" } @@ -177,7 +188,6 @@ Lisp_Object root_window; struct frame *f = alloc_lcrecord_type (struct frame, &lrecord_frame); - zero_lcrecord (f); nuke_all_frame_slots (f); XSETFRAME (frame, f); @@ -263,7 +273,7 @@ if (!NILP (mini_window) && !EQ (DEVICE_CONSOLE (XDEVICE (device)), FRAME_CONSOLE (XFRAME (XWINDOW (mini_window)->frame)))) - error ("frame and minibuffer must be on the same console"); + invalid_argument ("frame and minibuffer must be on the same console", Qunbound); /* Do not create a default minibuffer frame on printer devices. */ if (NILP (mini_window) @@ -336,6 +346,15 @@ return foolist; } +static Lisp_Object +restore_frame_list_to_its_unbesmirched_state (Lisp_Object kawnz) +{ + Lisp_Object lissed = XCDR (kawnz); + if (!EQ (lissed, Qunbound)) + DEVICE_FRAME_LIST (XDEVICE (XCAR (kawnz))) = lissed; + return Qnil; +} + DEFUN ("make-frame", Fmake_frame, 0, 2, "", /* Create and return a new frame, displaying the current buffer. Runs the functions listed in `create-frame-hook' after frame creation. @@ -354,9 +373,10 @@ struct device *d; Lisp_Object frame = Qnil, name = Qnil, minibuf; struct gcpro gcpro1, gcpro2, gcpro3; - int speccount = specpdl_depth (); + int speccount = specpdl_depth (), speccount2; int first_frame_on_device = 0; int first_frame_on_console = 0; + Lisp_Object besmirched_cons = Qnil; d = decode_device (device); XSETDEVICE (device, d); @@ -384,7 +404,7 @@ if (!NILP (Fstring_match (make_string ((const Bufbyte *) "\\.", 2), name, Qnil, Qnil))) - signal_simple_error (". not allowed in frame names", name); + syntax_error (". not allowed in frame names", name); f = allocate_frame_core (device); XSETFRAME (frame, f); @@ -415,7 +435,7 @@ else if (EQ (minibuf, Qt) || UNBOUNDP (minibuf)) setup_normal_frame (f); else - signal_simple_error ("Invalid value for `minibuffer'", minibuf); + invalid_argument ("Invalid value for `minibuffer'", minibuf); update_frame_window_mirror (f); @@ -432,6 +452,14 @@ if (NILP (DEVICE_FRAME_LIST (d))) first_frame_on_device = 1; + /* It's possible for one of the init methods below to signal an error; + in that case, let's make sure the device isn't besmirched by + having a half-initialized frame attached to it */ + speccount2 = specpdl_depth (); + record_unwind_protect (restore_frame_list_to_its_unbesmirched_state, + besmirched_cons = + Fcons (device, DEVICE_FRAME_LIST (d))); + /* This *must* go before the init_*() methods. Those functions call Lisp code, and if any of them causes a warning to be displayed and the *Warnings* buffer to be created, it won't get added to @@ -479,6 +507,10 @@ /* Hallelujah, praise the lord. */ f->init_finished = 1; + XCDR (besmirched_cons) = Qunbound; + + unbind_to (speccount2, Qnil); + /* If this is the first frame on the device, make it the selected one. */ if (first_frame_on_device && NILP (DEVICE_SELECTED_FRAME (d))) set_device_selected_frame (d, frame); @@ -768,7 +800,7 @@ Lisp_Object device = Fselected_device (Qnil); Lisp_Object frame = DEVICE_SELECTED_FRAME (XDEVICE (device)); if (NILP (frame)) - signal_simple_error ("No frames exist on device", device); + gui_error ("No frames exist on device", device); return XFRAME (frame); } @@ -786,7 +818,7 @@ { Lisp_Object device; XSETDEVICE (device, d); - signal_simple_error ("No frames exist on device", device); + gui_error ("No frames exist on device", device); } return XFRAME (frame); } @@ -935,7 +967,7 @@ CHECK_LIVE_WINDOW (window); if (! EQ (frame, WINDOW_FRAME (XWINDOW (window)))) - error ("In `set-frame-selected-window', WINDOW is not on FRAME"); + invalid_argument ("In `set-frame-selected-window', WINDOW is not on FRAME", Qunbound); if (XFRAME (frame) == selected_frame ()) return Fselect_window (window, Qnil); @@ -1304,9 +1336,8 @@ console = DEVICE_CONSOLE (d); con = XCONSOLE (console); - if (!called_from_delete_device && - !(MAYBE_INT_DEVMETH (d, device_implementation_flags, ()) - & XDEVIMPF_FRAMELESS_OK)) + if (!called_from_delete_device + && !DEVICE_IMPL_FLAG (d, XDEVIMPF_FRAMELESS_OK)) { /* If we're deleting the only non-minibuffer frame on the device, delete the device. */ @@ -1326,7 +1357,7 @@ So we put it back. */ if (!force && !allow_deletion_of_last_visible_frame && !other_visible_frames (f)) - error ("Attempt to delete the sole visible or iconified frame"); + invalid_operation ("Attempt to delete the sole visible or iconified frame", Qunbound); /* Does this frame have a minibuffer, and is it the surrogate minibuffer for any other frame? */ @@ -1345,7 +1376,7 @@ { /* We've found another frame whose minibuffer is on this frame. */ - signal_simple_error + gui_error ("Attempt to delete a surrogate minibuffer frame", frame); } } @@ -1368,7 +1399,7 @@ (XFRAME (this)), Qnil))) /* We've found a popup frame whose parent is this frame. */ - signal_simple_error + gui_error ("Attempt to delete a frame with live popups", frame); } } @@ -1549,10 +1580,9 @@ d->frame_list = delq_no_quit (frame, d->frame_list); RESET_CHANGED_SET_FLAGS; - f->dead = 1; f->visible = 0; - free_window_mirror (f->root_mirror); + free_window_mirror (XWINDOW_MIRROR (f->root_mirror)); /* free_line_insertion_deletion_costs (f); */ /* If we've deleted the last non-minibuf frame, then try to find @@ -1639,12 +1669,15 @@ con->default_minibuffer_frame = Qnil; } - nuke_all_frame_slots (f); /* nobody should be accessing the device - or anything else any more, and making - them Qnil allows for better GC'ing - in case a pointer to the dead frame - continues to hang around. */ + /* Nobody should be accessing anything in this object any more, and + making all Lisp_Objects Qnil allows for better GC'ing in case a + pointer to the dead frame continues to hang around. Zero all + other structs in case someone tries to access something through + them. */ + + nuke_all_frame_slots (f); f->framemeths = dead_console_methods; + UNGCPRO; } @@ -1903,7 +1936,7 @@ sel_frame = XFRAME (DEVICE_SELECTED_FRAME (d)); if (NILP (force) && !other_visible_frames (f)) - error ("Attempt to make invisible the sole visible or iconified frame"); + invalid_operation ("Attempt to make invisible the sole visible or iconified frame", Qunbound); /* Don't allow minibuf_window to remain on a deleted frame. */ if (EQ (f->minibuffer_window, minibuf_window)) @@ -2138,12 +2171,12 @@ if (WINDOWP (val)) { if (! MINI_WINDOW_P (XWINDOW (val))) - signal_simple_error + gui_error ("Surrogate minibuffer windows must be minibuffer windows", val); if (FRAME_HAS_MINIBUF_P (f) || FRAME_MINIBUF_ONLY_P (f)) - signal_simple_error + gui_error ("Can't change the surrogate minibuffer of a frame with its own minibuffer", frame); /* Install the chosen minibuffer window, with proper buffer. */ @@ -2152,7 +2185,7 @@ else if (EQ (val, Qt)) { if (FRAME_HAS_MINIBUF_P (f) || FRAME_MINIBUF_ONLY_P (f)) - signal_simple_error + gui_error ("Frame already has its own minibuffer", frame); else { @@ -3185,69 +3218,69 @@ { INIT_LRECORD_IMPLEMENTATION (frame); - defsymbol (&Qdelete_frame_hook, "delete-frame-hook"); - defsymbol (&Qselect_frame_hook, "select-frame-hook"); - defsymbol (&Qdeselect_frame_hook, "deselect-frame-hook"); - defsymbol (&Qcreate_frame_hook, "create-frame-hook"); - defsymbol (&Qcustom_initialize_frame, "custom-initialize-frame"); - defsymbol (&Qmouse_enter_frame_hook, "mouse-enter-frame-hook"); - defsymbol (&Qmouse_leave_frame_hook, "mouse-leave-frame-hook"); - defsymbol (&Qmap_frame_hook, "map-frame-hook"); - defsymbol (&Qunmap_frame_hook, "unmap-frame-hook"); - - defsymbol (&Qframep, "framep"); - defsymbol (&Qframe_live_p, "frame-live-p"); - defsymbol (&Qdelete_frame, "delete-frame"); - defsymbol (&Qsynchronize_minibuffers, "synchronize-minibuffers"); - defsymbol (&Qbuffer_predicate, "buffer-predicate"); - defsymbol (&Qframe_being_created, "frame-being-created"); - defsymbol (&Qmake_initial_minibuffer_frame, "make-initial-minibuffer-frame"); - - defsymbol (&Qframe_title_format, "frame-title-format"); - defsymbol (&Qframe_icon_title_format, "frame-icon-title-format"); - - defsymbol (&Qhidden, "hidden"); - defsymbol (&Qvisible, "visible"); - defsymbol (&Qiconic, "iconic"); - defsymbol (&Qinvisible, "invisible"); - defsymbol (&Qvisible_iconic, "visible-iconic"); - defsymbol (&Qinvisible_iconic, "invisible-iconic"); - defsymbol (&Qnomini, "nomini"); - defsymbol (&Qvisible_nomini, "visible-nomini"); - defsymbol (&Qiconic_nomini, "iconic-nomini"); - defsymbol (&Qinvisible_nomini, "invisible-nomini"); - defsymbol (&Qvisible_iconic_nomini, "visible-iconic-nomini"); - defsymbol (&Qinvisible_iconic_nomini, "invisible-iconic-nomini"); - - defsymbol (&Qminibuffer, "minibuffer"); - defsymbol (&Qunsplittable, "unsplittable"); - defsymbol (&Qinternal_border_width, "internal-border-width"); - defsymbol (&Qtop_toolbar_shadow_color, "top-toolbar-shadow-color"); - defsymbol (&Qbottom_toolbar_shadow_color, "bottom-toolbar-shadow-color"); - defsymbol (&Qbackground_toolbar_color, "background-toolbar-color"); - defsymbol (&Qtop_toolbar_shadow_pixmap, "top-toolbar-shadow-pixmap"); - defsymbol (&Qbottom_toolbar_shadow_pixmap, "bottom-toolbar-shadow-pixmap"); - defsymbol (&Qtoolbar_shadow_thickness, "toolbar-shadow-thickness"); - defsymbol (&Qscrollbar_placement, "scrollbar-placement"); - defsymbol (&Qinter_line_space, "inter-line-space"); + DEFSYMBOL (Qdelete_frame_hook); + DEFSYMBOL (Qselect_frame_hook); + DEFSYMBOL (Qdeselect_frame_hook); + DEFSYMBOL (Qcreate_frame_hook); + DEFSYMBOL (Qcustom_initialize_frame); + DEFSYMBOL (Qmouse_enter_frame_hook); + DEFSYMBOL (Qmouse_leave_frame_hook); + DEFSYMBOL (Qmap_frame_hook); + DEFSYMBOL (Qunmap_frame_hook); + + DEFSYMBOL (Qframep); + DEFSYMBOL (Qframe_live_p); + DEFSYMBOL (Qdelete_frame); + DEFSYMBOL (Qsynchronize_minibuffers); + DEFSYMBOL (Qbuffer_predicate); + DEFSYMBOL (Qframe_being_created); + DEFSYMBOL (Qmake_initial_minibuffer_frame); + + DEFSYMBOL (Qframe_title_format); + DEFSYMBOL (Qframe_icon_title_format); + + DEFSYMBOL (Qhidden); + DEFSYMBOL (Qvisible); + DEFSYMBOL (Qiconic); + DEFSYMBOL (Qinvisible); + DEFSYMBOL (Qvisible_iconic); + DEFSYMBOL (Qinvisible_iconic); + DEFSYMBOL (Qnomini); + DEFSYMBOL (Qvisible_nomini); + DEFSYMBOL (Qiconic_nomini); + DEFSYMBOL (Qinvisible_nomini); + DEFSYMBOL (Qvisible_iconic_nomini); + DEFSYMBOL (Qinvisible_iconic_nomini); + + DEFSYMBOL (Qminibuffer); + DEFSYMBOL (Qunsplittable); + DEFSYMBOL (Qinternal_border_width); + DEFSYMBOL (Qtop_toolbar_shadow_color); + DEFSYMBOL (Qbottom_toolbar_shadow_color); + DEFSYMBOL (Qbackground_toolbar_color); + DEFSYMBOL (Qtop_toolbar_shadow_pixmap); + DEFSYMBOL (Qbottom_toolbar_shadow_pixmap); + DEFSYMBOL (Qtoolbar_shadow_thickness); + DEFSYMBOL (Qscrollbar_placement); + DEFSYMBOL (Qinter_line_space); /* Qiconic already in this function. */ - defsymbol (&Qvisual_bell, "visual-bell"); - defsymbol (&Qbell_volume, "bell-volume"); - defsymbol (&Qpointer_background, "pointer-background"); - defsymbol (&Qpointer_color, "pointer-color"); - defsymbol (&Qtext_pointer, "text-pointer"); - defsymbol (&Qspace_pointer, "space-pointer"); - defsymbol (&Qmodeline_pointer, "modeline-pointer"); - defsymbol (&Qgc_pointer, "gc-pointer"); - defsymbol (&Qinitially_unmapped, "initially-unmapped"); - defsymbol (&Quse_backing_store, "use-backing-store"); - defsymbol (&Qborder_color, "border-color"); - defsymbol (&Qborder_width, "border-width"); + DEFSYMBOL (Qvisual_bell); + DEFSYMBOL (Qbell_volume); + DEFSYMBOL (Qpointer_background); + DEFSYMBOL (Qpointer_color); + DEFSYMBOL (Qtext_pointer); + DEFSYMBOL (Qspace_pointer); + DEFSYMBOL (Qmodeline_pointer); + DEFSYMBOL (Qgc_pointer); + DEFSYMBOL (Qinitially_unmapped); + DEFSYMBOL (Quse_backing_store); + DEFSYMBOL (Qborder_color); + DEFSYMBOL (Qborder_width); /* Qwidth, Qheight, Qleft, Qtop in general.c */ - defsymbol (&Qset_specifier, "set-specifier"); - defsymbol (&Qset_face_property, "set-face-property"); - defsymbol (&Qface_property_instance, "face-property-instance"); - defsymbol (&Qframe_property_alias, "frame-property-alias"); + DEFSYMBOL (Qset_specifier); + DEFSYMBOL (Qset_face_property); + DEFSYMBOL (Qface_property_instance); + DEFSYMBOL (Qframe_property_alias); DEFSUBR (Fmake_frame); DEFSUBR (Fframep); diff --text -u 'xemacs-21.5.1/src/frame.h' 'xemacs-21.5.2/src/frame.h' Index: ././src/frame.h --- ././src/frame.h Fri Apr 13 03:23:47 2001 +++ ././src/frame.h Mon Jun 18 16:10:19 2001 @@ -87,15 +87,10 @@ dependencies. */ int internal_border_width; - /* This frame's root window mirror. This structure exactly mirrors - the frame's window structure but contains only pointers to the - display structures. */ - struct window_mirror *root_mirror; - int modiff; - struct expose_ignore* subwindow_exposures; - struct expose_ignore* subwindow_exposures_tail; + struct expose_ignore *subwindow_exposures; + struct expose_ignore *subwindow_exposures_tail; #ifdef HAVE_SCROLLBARS /* frame-local scrollbar information. See scrollbar.c. */ @@ -151,9 +146,6 @@ /* Is frame marked for deletion? This is used in XSetErrorHandler(). */ unsigned int being_deleted :1; - /* Nonzero if this frame has been destroyed. */ - unsigned int dead :1; - /* Nonzero if last attempt at redisplay on this frame was preempted. */ unsigned int display_preempted :1; @@ -245,7 +237,7 @@ DECLARE_LRECORD (frame, struct frame); #define XFRAME(x) XRECORD (x, frame, struct frame) #define XSETFRAME(x, p) XSETRECORD (x, p, frame) -#define wrap_frame(p) wrap_object (p) +#define wrap_frame(p) wrap_record (p, frame) #define FRAMEP(x) RECORDP (x, frame) #define CHECK_FRAME(x) CHECK_RECORD (x, frame) #define CONCHECK_FRAME(x) CONCHECK_RECORD (x, frame) @@ -505,7 +497,7 @@ #define SET_FRAME_CLEAR(f) MARK_FRAME_CHANGED (f); (f)->clear = 1 #define FRAME_DEVICE(f) ((f)->device) #define FRAME_CONSOLE(f) DEVICE_CONSOLE (XDEVICE (FRAME_DEVICE (f))) -#define FRAME_LIVE_P(f) (!(f)->dead) +#define FRAME_LIVE_P(f) (!EQ (FRAME_TYPE (f), Qdead)) #define FRAME_MINIBUF_ONLY_P(f) \ EQ (FRAME_ROOT_WINDOW (f), FRAME_MINIBUF_WINDOW (f)) diff --text -u 'xemacs-21.5.1/src/frameslots.h' 'xemacs-21.5.2/src/frameslots.h' Index: ././src/frameslots.h --- ././src/frameslots.h Fri Apr 13 03:23:48 2001 +++ ././src/frameslots.h Mon Jun 18 16:10:20 2001 @@ -21,6 +21,15 @@ /* Synched up with: FSF 19.30. Split out of frame.h. */ +/* We define the Lisp_Objects in the frame structure in a separate file + because there are numerous places we want to iterate over them, such + as when defining them in the structure, initializing them, or marking + them. + + To use, define MARKED_SLOT before including this file. In the structure + definition, you also need to define FRAME_SLOT_DECLARATION. No need to + undefine either value; that happens automatically. */ + #ifdef FRAME_SLOT_DECLARATION #define MARKED_SLOT_ARRAY(slot, size) MARKED_SLOT(slot[size]) #else @@ -80,6 +89,11 @@ This will only be a minibuf window if we are a minibuf-only frame. */ MARKED_SLOT (last_nonminibuf_window); + + /* This frame's root window mirror. This structure exactly mirrors + the frame's window structure but contains only pointers to the + display structures. */ + MARKED_SLOT (root_mirror); /* frame property list */ MARKED_SLOT (plist); diff --text -u 'xemacs-21.5.1/src/general-slots.h' 'xemacs-21.5.2/src/general-slots.h' Index: ././src/general-slots.h --- ././src/general-slots.h Mon May 7 16:52:10 2001 +++ ././src/general-slots.h Thu May 24 16:51:16 2001 @@ -103,6 +103,7 @@ SYMBOL (Qequal); SYMBOL (Qeval); SYMBOL (Qextents); +SYMBOL (Qexternal); SYMBOL (Qface); SYMBOL (Qfallback); SYMBOL (Qfile); @@ -217,6 +218,7 @@ SYMBOL (Qsignal); SYMBOL (Qsimple); SYMBOL (Qsize); +SYMBOL (Qsound); SYMBOL (Qspace); SYMBOL (Qspecifier); SYMBOL (Qstandard); diff --text -u 'xemacs-21.5.1/src/glade.c' 'xemacs-21.5.2/src/glade.c' Index: ././src/glade.c --- ././src/glade.c Fri Apr 13 03:23:49 2001 +++ ././src/glade.c Thu May 24 16:51:16 2001 @@ -107,7 +107,7 @@ if (!GLADE_IS_XML (XGTK_OBJECT (xml)->object)) { - signal_simple_error ("Object is not a GladeXML type.", xml); + wtaerror ("Object is not a GladeXML type.", xml); } #ifdef LIBGLADE_XML_TXTDOMAIN diff --text -u 'xemacs-21.5.1/src/glyphs-eimage.c' 'xemacs-21.5.2/src/glyphs-eimage.c' Index: ././src/glyphs-eimage.c --- ././src/glyphs-eimage.c Fri Apr 13 03:23:49 2001 +++ ././src/glyphs-eimage.c Fri Jul 27 06:10:45 2001 @@ -675,7 +675,7 @@ for (slice = 0; slice < unwind.giffile->ImageCount; slice++) { - /* We check here that that the current image covers the full "screen" size. */ + /* We check here that the current image covers the full "screen" size. */ if (unwind.giffile->SavedImages[slice].ImageDesc.Height != height || unwind.giffile->SavedImages[slice].ImageDesc.Width != width || unwind.giffile->SavedImages[slice].ImageDesc.Left != 0 @@ -1123,11 +1123,11 @@ break; default: fprintf(stderr,"Eh? invalid seek mode in tiff_memory_seek\n"); - return -1; + return (toff_t) -1; } if ((newidx > mem->len) || (newidx < 0)) - return -1; + return (toff_t) -1; mem->index = newidx; return newidx; diff --text -u 'xemacs-21.5.1/src/glyphs-gtk.c' 'xemacs-21.5.2/src/glyphs-gtk.c' Index: ././src/glyphs-gtk.c --- ././src/glyphs-gtk.c Fri Apr 13 03:23:50 2001 +++ ././src/glyphs-gtk.c Tue Jun 5 02:00:00 2001 @@ -153,7 +153,6 @@ #include "bitmaps.h" DEFINE_IMAGE_INSTANTIATOR_FORMAT (gtk_resource); -Lisp_Object Q_resource_type, Q_resource_id; Lisp_Object Qgtk_resource; #ifdef HAVE_WIDGETS Lisp_Object Qgtk_widget_instantiate_internal, Qgtk_widget_property_internal; @@ -624,13 +623,13 @@ width, height, &best_width, &best_height)) /* this means that an X error of some sort occurred (we trap these so they're not fatal). */ - signal_simple_error ("XQueryBestCursor() failed?", instantiator); + gui_error ("XQueryBestCursor() failed?", instantiator); if (width > best_width || height > best_height) - error_with_frob (instantiator, - "pointer too large (%dx%d): " - "server requires %dx%d or smaller", - width, height, best_width, best_height); + signal_ferror_with_frob (Qgui_error, instantiator, + "pointer too large (%dx%d): " + "server requires %dx%d or smaller", + width, height, best_width, best_height); #endif } @@ -727,7 +726,7 @@ GdkPixmap *pixmap; if (!DEVICE_GTK_P (XDEVICE (device))) - signal_simple_error ("Not a Gtk device", device); + gui_error ("Not a Gtk device", device); d = GET_GTK_WIDGET_WINDOW (DEVICE_GTK_APP_SHELL (XDEVICE (device))); @@ -737,13 +736,13 @@ pixmap = gdk_pixmap_new (d, gdk_image->width, gdk_image->height, gdk_image->depth); if (!pixmap) - signal_simple_error ("Unable to create pixmap", instantiator); + gui_error ("Unable to create pixmap", instantiator); gc = gdk_gc_new (pixmap); if (!gc) { gdk_pixmap_unref (pixmap); - signal_simple_error ("Unable to create GC", instantiator); + gui_error ("Unable to create GC", instantiator); } gdk_draw_image (GDK_DRAWABLE (pixmap), gc, gdk_image, @@ -820,14 +819,14 @@ pixmap = gdk_pixmap_new (d, gdk_image->width, gdk_image->height, gdk_image->depth); if (!pixmap) - signal_simple_error ("Unable to create pixmap", instantiator); + gui_error ("Unable to create pixmap", instantiator); gc = gdk_gc_new (pixmap); if (!gc) { gdk_pixmap_unref (pixmap); - signal_simple_error ("Unable to create GC", instantiator); + gui_error ("Unable to create GC", instantiator); } gdk_draw_image (GDK_DRAWABLE (pixmap), gc, gdk_image, 0, 0, 0, 0, @@ -923,7 +922,7 @@ gdk_color_white(cmap, &white); if (!DEVICE_GTK_P (XDEVICE (device))) - signal_simple_error ("Not a Gtk device", device); + gui_error ("Not a Gtk device", device); if ((dest_mask & IMAGE_MONO_PIXMAP_MASK) && (dest_mask & IMAGE_COLOR_PIXMAP_MASK)) @@ -1120,8 +1119,7 @@ unlink (filename_out); errno = old_errno; } - report_file_error ("Creating temp file", - list1 (build_string (filename_out))); + report_file_error ("Creating temp file", build_string (filename_out)); } CHECK_STRING (string); @@ -1181,8 +1179,7 @@ #endif if (fubar) - report_file_error ("Writing temp file", - list1 (build_string (filename_out))); + report_file_error ("Writing temp file", build_string (filename_out)); } struct color_symbol @@ -1279,7 +1276,7 @@ unsigned int w, h; if (!DEVICE_GTK_P (XDEVICE (device))) - signal_simple_error ("Not a Gtk device", device); + gui_error ("Not a Gtk device", device); if (dest_mask & IMAGE_COLOR_PIXMAP_MASK) type = IMAGE_COLOR_PIXMAP; @@ -1454,7 +1451,7 @@ } if (emsg) - signal_simple_error_2 (emsg, data, Qimage); + gui_error_2 (emsg, data, Qimage); bp = bits = (char *) alloca (PIXELS / 8); @@ -1489,43 +1486,16 @@ NILP (find_keyword_in_vector (instantiator, Q_resource_id))) || NILP (find_keyword_in_vector (instantiator, Q_resource_type))) - signal_simple_error ("Must supply :file, :resource-id and :resource-type", + sferror ("Must supply :file, :resource-id and :resource-type", instantiator); } static Lisp_Object -gtk_resource_normalize (Lisp_Object inst, Lisp_Object console_type, Lisp_Object dest_mask) +gtk_resource_normalize (Lisp_Object inst, Lisp_Object console_type, + Lisp_Object dest_mask) { - /* This function can call lisp */ - Lisp_Object file = Qnil; - struct gcpro gcpro1, gcpro2; - Lisp_Object alist = Qnil; - - GCPRO2 (file, alist); - - file = potential_pixmap_file_instantiator (inst, Q_file, Q_data, - console_type); - - if (CONSP (file)) /* failure locating filename */ - signal_double_file_error ("Opening pixmap file", - "no such file or directory", - Fcar (file)); - - if (NILP (file)) /* no conversion necessary */ - RETURN_UNGCPRO (inst); - - alist = tagged_vector_to_alist (inst); - - { - alist = remassq_no_quit (Q_file, alist); - alist = Fcons (Fcons (Q_file, file), alist); - } - - { - Lisp_Object result = alist_to_tagged_vector (Qgtk_resource, alist); - free_alist (alist); - RETURN_UNGCPRO (result); - } + return shared_resource_normalize (inst, console_type, dest_mask, + Qgtk_resource); } static int @@ -1572,18 +1542,20 @@ Lisp_Object resource_id = find_keyword_in_vector (instantiator, Q_resource_id); if (!DEVICE_GTK_P (XDEVICE (device))) - signal_simple_error ("Not a GTK device", device); + gui_error ("Not a GTK device", device); type = resource_symbol_to_type (resource_type); - // if (dest_mask & IMAGE_POINTER_MASK && type == IMAGE_POINTER_MASK) - // iitype = IMAGE_POINTER; - // else if (dest_mask & IMAGE_COLOR_PIXMAP_MASK) - // iitype = IMAGE_COLOR_PIXMAP; - // else - // incompatible_image_types (instantiator, dest_mask, - // IMAGE_COLOR_PIXMAP_MASK | IMAGE_POINTER_MASK); - +#if 0 + if (dest_mask & IMAGE_POINTER_MASK && type == IMAGE_POINTER_MASK) + iitype = IMAGE_POINTER; + else if (dest_mask & IMAGE_COLOR_PIXMAP_MASK) + iitype = IMAGE_COLOR_PIXMAP; + else + incompatible_image_types (instantiator, dest_mask, + IMAGE_COLOR_PIXMAP_MASK | IMAGE_POINTER_MASK); +#endif + /* mess with the keyword info we were provided with */ gtk_initialize_pixmap_image_instance (ii, 1, type); c = gdk_cursor_new (resource_name_to_resource (resource_id, type)); @@ -1599,7 +1571,7 @@ { CHECK_SYMBOL (data); if (!resource_symbol_to_type (data)) - signal_simple_error ("invalid resource type", data); + invalid_constant ("invalid resource type", data); } static void @@ -1613,7 +1585,7 @@ !resource_name_to_resource (data, IMAGE_BITMAP) #endif ) - signal_simple_error ("invalid resource identifier", data); + invalid_constant ("invalid resource identifier", data); } #if 0 @@ -1809,11 +1781,11 @@ Lisp_Object foreground, background; if (!DEVICE_GTK_P (XDEVICE (device))) - signal_simple_error ("Not a Gtk device", device); + gui_error ("Not a Gtk device", device); if (!STRINGP (data) || strncmp ("FONT ", (char *) XSTRING_DATA (data), 5)) - signal_simple_error ("Invalid font-glyph instantiator", + invalid_argument ("Invalid font-glyph instantiator", instantiator); if (!(dest_mask & IMAGE_POINTER_MASK)) @@ -1837,10 +1809,10 @@ count = 4, mask_name[0] = 0; if (count != 2 && count != 4) - signal_simple_error ("invalid cursor specification", data); + syntax_error ("invalid cursor specification", data); source = gdk_font_load (source_name); if (! source) - signal_simple_error_2 ("couldn't load font", + gui_error_2 ("couldn't load font", build_string (source_name), data); if (count == 2) @@ -1852,8 +1824,8 @@ mask = gdk_font_load (mask_name); if (!mask) /* continuable */ - Fsignal (Qerror, list3 (build_string ("couldn't load font"), - build_string (mask_name), data)); + Fsignal (Qgui_error, list3 (build_string ("couldn't load font"), + build_string (mask_name), data)); } if (!mask) mask_char = 0; @@ -1991,7 +1963,7 @@ Lisp_Object foreground, background; if (!DEVICE_GTK_P (XDEVICE (device))) - signal_simple_error ("Not a Gtk device", device); + gui_error ("Not a Gtk device", device); if (!(dest_mask & IMAGE_POINTER_MASK)) incompatible_image_types (instantiator, dest_mask, IMAGE_POINTER_MASK); @@ -2001,7 +1973,7 @@ Qfile_name); if ((i = cursor_name_to_index (name_ext)) == -1) - signal_simple_error ("Unrecognized cursor-font name", data); + invalid_argument ("Unrecognized cursor-font name", data); gtk_initialize_pixmap_image_instance (ii, 1, IMAGE_POINTER); IMAGE_INSTANCE_GTK_CURSOR (ii) = gdk_cursor_new (i); @@ -2220,7 +2192,7 @@ Lisp_Object frame = DOMAIN_FRAME (domain); if (!DEVICE_GTK_P (XDEVICE (device))) - signal_simple_error ("Not a GTK device", device); + gui_error ("Not a GTK device", device); IMAGE_INSTANCE_TYPE (ii) = IMAGE_SUBWINDOW; @@ -2571,13 +2543,11 @@ void syms_of_glyphs_gtk (void) { - defkeyword (&Q_resource_id, ":resource-id"); - defkeyword (&Q_resource_type, ":resource-type"); #ifdef HAVE_WIDGETS - defsymbol (&Qgtk_widget_instantiate_internal, "gtk-widget-instantiate-internal"); - defsymbol (&Qgtk_widget_property_internal, "gtk-widget-property-internal"); - defsymbol (&Qgtk_widget_redisplay_internal, "gtk-widget-redisplay-internal"); - defsymbol (&Qgtk_widget_set_style, "gtk-widget-set-style"); + DEFSYMBOL (Qgtk_widget_instantiate_internal); + DEFSYMBOL (Qgtk_widget_property_internal); + DEFSYMBOL (Qgtk_widget_redisplay_internal); + DEFSYMBOL (Qgtk_widget_set_style); #endif } @@ -2756,224 +2726,6 @@ BUILD_GLYPH_INST (Vhscroll_glyph, hscroll); #undef BUILD_GLYPH_INST -} - - -/* Ripped off from glyphs-msw.c */ -/* - * The data returned by the following routine is always in left-most byte - * first and left-most bit first. If it doesn't return BitmapSuccess then - * its arguments won't have been touched. This routine should look as much - * like the Xlib routine XReadBitmapfile as possible. - */ -#define MAX_SIZE 1024 - -/* shared data for the image read/parse logic */ -static short hexTable[256]; /* conversion value */ -static int initialized = FALSE; /* easier to fill in at run time */ - -/* - * Table index for the hex values. Initialized once, first time. - * Used for translation value or delimiter significance lookup. - */ -static void initHexTable() -{ - /* - * We build the table at run time for several reasons: - * - * 1. portable to non-ASCII machines. - * 2. still reentrant since we set the init flag after setting table. - * 3. easier to extend. - * 4. less prone to bugs. - */ - hexTable['0'] = 0; hexTable['1'] = 1; - hexTable['2'] = 2; hexTable['3'] = 3; - hexTable['4'] = 4; hexTable['5'] = 5; - hexTable['6'] = 6; hexTable['7'] = 7; - hexTable['8'] = 8; hexTable['9'] = 9; - hexTable['A'] = 10; hexTable['B'] = 11; - hexTable['C'] = 12; hexTable['D'] = 13; - hexTable['E'] = 14; hexTable['F'] = 15; - hexTable['a'] = 10; hexTable['b'] = 11; - hexTable['c'] = 12; hexTable['d'] = 13; - hexTable['e'] = 14; hexTable['f'] = 15; - - /* delimiters of significance are flagged w/ negative value */ - hexTable[' '] = -1; hexTable[','] = -1; - hexTable['}'] = -1; hexTable['\n'] = -1; - hexTable['\t'] = -1; - - initialized = TRUE; -} - -/* - * read next hex value in the input stream, return -1 if EOF - */ -static int NextInt ( FILE *fstream ) -{ - int ch; - int value = 0; - int gotone = 0; - int done = 0; - - /* loop, accumulate hex value until find delimiter */ - /* skip any initial delimiters found in read stream */ - - while (!done) { - ch = getc(fstream); - if (ch == EOF) { - value = -1; - done++; - } else { - /* trim high bits, check type and accumulate */ - ch &= 0xff; - if (isascii(ch) && isxdigit(ch)) { - value = (value << 4) + hexTable[ch]; - gotone++; - } else if ((hexTable[ch]) < 0 && gotone) - done++; - } - } - return value; -} - -int read_bitmap_data (fstream, width, height, datap, x_hot, y_hot) - FILE *fstream; /* handle on file */ - unsigned int *width, *height; /* RETURNED */ - unsigned char **datap; /* RETURNED */ - int *x_hot, *y_hot; /* RETURNED */ -{ - unsigned char *data = NULL; /* working variable */ - char line[MAX_SIZE]; /* input line from file */ - int size; /* number of bytes of data */ - char name_and_type[MAX_SIZE]; /* an input line */ - char *type; /* for parsing */ - int value; /* from an input line */ - int version10p; /* boolean, old format */ - int padding; /* to handle alignment */ - int bytes_per_line; /* per scanline of data */ - unsigned int ww = 0; /* width */ - unsigned int hh = 0; /* height */ - int hx = -1; /* x hotspot */ - int hy = -1; /* y hotspot */ - -#define Xmalloc(size) malloc(size) - - /* first time initialization */ - if (initialized == FALSE) initHexTable(); - - /* error cleanup and return macro */ -#define RETURN(code) { if (data) free (data); return code; } - - while (fgets(line, MAX_SIZE, fstream)) { - if (strlen(line) == MAX_SIZE-1) { - RETURN (BitmapFileInvalid); - } - if (sscanf(line,"#define %s %d",name_and_type,&value) == 2) { - if (!(type = strrchr(name_and_type, '_'))) - type = name_and_type; - else - type++; - - if (!strcmp("width", type)) - ww = (unsigned int) value; - if (!strcmp("height", type)) - hh = (unsigned int) value; - if (!strcmp("hot", type)) { - if (type-- == name_and_type || type-- == name_and_type) - continue; - if (!strcmp("x_hot", type)) - hx = value; - if (!strcmp("y_hot", type)) - hy = value; - } - continue; - } - - if (sscanf(line, "static short %s = {", name_and_type) == 1) - version10p = 1; - else if (sscanf(line,"static unsigned char %s = {",name_and_type) == 1) - version10p = 0; - else if (sscanf(line, "static char %s = {", name_and_type) == 1) - version10p = 0; - else - continue; - - if (!(type = strrchr(name_and_type, '_'))) - type = name_and_type; - else - type++; - - if (strcmp("bits[]", type)) - continue; - - if (!ww || !hh) - RETURN (BitmapFileInvalid); - - if ((ww % 16) && ((ww % 16) < 9) && version10p) - padding = 1; - else - padding = 0; - - bytes_per_line = (ww+7)/8 + padding; - - size = bytes_per_line * hh; - data = (unsigned char *) Xmalloc ((unsigned int) size); - if (!data) - RETURN (BitmapNoMemory); - - if (version10p) { - unsigned char *ptr; - int bytes; - - for (bytes=0, ptr=data; bytes> 8; - } - } else { - unsigned char *ptr; - int bytes; - - for (bytes=0, ptr=data; bytes -#include -#ifdef HAVE_XFACE -#include -#endif #define WIDGET_GLYPH_SLOT 0 @@ -98,7 +94,6 @@ static COLORREF transparent_color = RGB (1,1,1); DEFINE_IMAGE_INSTANTIATOR_FORMAT (mswindows_resource); -Lisp_Object Q_resource_type, Q_resource_id; Lisp_Object Qmswindows_resource; static void @@ -165,16 +160,16 @@ /************************************************************************/ static BITMAPINFO* convert_EImage_to_DIBitmap (Lisp_Object device, int width, int height, - unsigned char *pic, + UChar_Binary *pic, int *bit_count, - unsigned char** bmp_data) + UChar_Binary** bmp_data) { struct device *d = XDEVICE (device); int i,j; RGBQUAD* colortbl; int ncolors; BITMAPINFO* bmp_info; - unsigned char *ip, *dp; + UChar_Binary *ip, *dp; if (GetDeviceCaps (get_device_compdc (d), BITSPIXEL) > 0) { @@ -199,7 +194,7 @@ /* bitmap data needs to be in blue, green, red triples - in that order, eimage is in RGB format so we need to convert */ - *bmp_data = xnew_array_and_zero (unsigned char, bpline * height); + *bmp_data = xnew_array_and_zero (UChar_Binary, bpline * height); *bit_count = bpline * height; if (!bmp_data) @@ -239,7 +234,7 @@ return NULL; } - colortbl=(RGBQUAD*)(((unsigned char*)bmp_info)+sizeof(BITMAPINFOHEADER)); + colortbl=(RGBQUAD*)(((UChar_Binary*)bmp_info)+sizeof(BITMAPINFOHEADER)); bmp_info->bmiHeader.biBitCount=8; bmp_info->bmiHeader.biCompression=BI_RGB; @@ -247,7 +242,7 @@ bmp_info->bmiHeader.biClrUsed=ncolors; bmp_info->bmiHeader.biClrImportant=ncolors; - *bmp_data = (unsigned char *) xmalloc_and_zero (bpline * height); + *bmp_data = (UChar_Binary *) xmalloc_and_zero (bpline * height); *bit_count = bpline * height; if (!*bmp_data) @@ -371,7 +366,7 @@ 0, 0); if (!bitmap || !bmp_buf) - signal_simple_error ("Unable to create bitmap", instantiator); + signal_image_error ("Unable to create bitmap", instantiator); /* copy in the actual bitmap */ memcpy (bmp_buf, bmp_data, bmp_bits); @@ -423,7 +418,7 @@ 0,0); if (!bitmap || !bmp_buf) - signal_simple_error ("Unable to create bitmap", instantiator); + signal_image_error ("Unable to create bitmap", instantiator); /* copy in the actual bitmap */ memcpy (bmp_buf, bmp_data, bmp_bits); @@ -434,14 +429,14 @@ mswindows_init_image_instance_from_eimage (Lisp_Image_Instance *ii, int width, int height, int slices, - unsigned char *eimage, + UChar_Binary *eimage, int dest_mask, Lisp_Object instantiator, Lisp_Object domain) { Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii); BITMAPINFO* bmp_info; - unsigned char* bmp_data; + UChar_Binary* bmp_data; int bmp_bits; COLORREF bkcolor; int slice; @@ -460,8 +455,8 @@ eimage + (width * height * 3 * slice), &bmp_bits, &bmp_data))) { - signal_simple_error ("EImage to DIBitmap conversion failed", - instantiator); + signal_image_error ("EImage to DIBitmap conversion failed", + instantiator); } /* Now create the pixmap and set up the image instance */ @@ -479,18 +474,18 @@ } inline static void -set_mono_pixel (unsigned char* bits, +set_mono_pixel (UChar_Binary* bits, int bpline, int height, int x, int y, int white) { int i; - unsigned char bitnum; + UChar_Binary bitnum; /* Find the byte on which this scanline begins */ i = (height - y - 1) * bpline; /* Find the byte containing this pixel */ i += (x >> 3); /* Which bit is it? */ - bitnum = (unsigned char) (7 - (x & 7)); + bitnum = (UChar_Binary) (7 - (x & 7)); if (white) /* Turn it on */ bits[i] |= (1 << bitnum); else /* Turn it off */ @@ -503,7 +498,7 @@ { HBITMAP mask; HGDIOBJ old = NULL; - unsigned char *dibits, *and_bits; + UChar_Binary *dibits, *and_bits; BITMAPINFO *bmp_info = (BITMAPINFO*) xmalloc_and_zero (sizeof (BITMAPINFO) + sizeof (RGBQUAD)); int i, j; @@ -557,7 +552,7 @@ bmp_info->bmiHeader.biClrImportant = 0; bmp_info->bmiHeader.biSizeImage = height * bpline; - dibits = (unsigned char*) xmalloc_and_zero (bpline * height); + dibits = (UChar_Binary*) xmalloc_and_zero (bpline * height); if (GetDIBits (hcdc, IMAGE_INSTANCE_MSWINDOWS_BITMAP (image), 0, @@ -576,7 +571,7 @@ { for (j=0; j> 8; - } - } else { - unsigned char *ptr; - int bytes; - - for (bytes=0, ptr=data; bytes> 4]); } } @@ -1782,8 +1470,7 @@ static void init_image_instance_from_xbm_inline (Lisp_Image_Instance *ii, int width, int height, - /* Note that data is in ext-format! */ - const char *bits, + const UChar_Binary *bits, Lisp_Object instantiator, Lisp_Object pointer_fg, Lisp_Object pointer_bg, @@ -1834,14 +1521,13 @@ init_image_instance_geometry (ii); IMAGE_INSTANCE_MSWINDOWS_MASK (ii) = mask ? mask : - xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height, - TRUE, black, white); + xbm_create_bitmap_from_data (hdc, bits, width, height, TRUE, black, white); switch (type) { case IMAGE_MONO_PIXMAP: IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) = - xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height, + xbm_create_bitmap_from_data (hdc, bits, width, height, FALSE, black, black); break; @@ -1870,7 +1556,7 @@ IMAGE_INSTANCE_PIXMAP_BG (ii) = background; IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) = - xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height, + xbm_create_bitmap_from_data (hdc, bits, width, height, FALSE, fg, black); } break; @@ -1897,7 +1583,7 @@ bg = COLOR_INSTANCE_MSWINDOWS_COLOR (XCOLOR_INSTANCE (background)); IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) = - xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height, + xbm_create_bitmap_from_data (hdc, bits, width, height, TRUE, fg, black); mswindows_initialize_image_instance_icon (ii, TRUE); } @@ -1912,8 +1598,7 @@ xbm_instantiate_1 (Lisp_Object image_instance, Lisp_Object instantiator, Lisp_Object pointer_fg, Lisp_Object pointer_bg, int dest_mask, int width, int height, - /* Note that data is in ext-format! */ - const char *bits) + const UChar_Binary *bits) { Lisp_Object mask_data = find_keyword_in_vector (instantiator, Q_mask_data); Lisp_Object mask_file = find_keyword_in_vector (instantiator, Q_mask_file); @@ -1923,13 +1608,13 @@ if (!NILP (mask_data)) { - const char *ext_data; + UChar_Binary *ext_data; TO_EXTERNAL_FORMAT (LISP_STRING, XCAR (XCDR (XCDR (mask_data))), C_STRING_ALLOCA, ext_data, Qbinary); mask = xbm_create_bitmap_from_data (hdc, - (unsigned char *) ext_data, + ext_data, XINT (XCAR (mask_data)), XINT (XCAR (XCDR (mask_data))), FALSE, @@ -1951,7 +1636,7 @@ int dest_mask, Lisp_Object domain) { Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); - const char *ext_data; + const UChar_Binary *ext_data; assert (!NILP (data)); @@ -1996,9 +1681,9 @@ { Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); int i, stattis; - char *p, *bits, *bp; - const char * volatile emsg = 0; - const char * volatile dstring; + UChar_Binary *p, *bits, *bp; + const CBufbyte * volatile emsg = 0; + const UChar_Binary * volatile dstring; assert (!NILP (data)); @@ -2006,7 +1691,7 @@ C_STRING_ALLOCA, dstring, Qbinary); - if ((p = strchr (dstring, ':'))) + if ((p = (UChar_Binary *) strchr ((char *) dstring, ':'))) { dstring = p + 1; } @@ -2032,9 +1717,9 @@ } if (emsg) - signal_simple_error_2 (emsg, data, Qimage); + signal_image_error_2 (emsg, data, Qimage); - bp = bits = (char *) alloca (PIXELS / 8); + bp = bits = (UChar_Binary *) alloca (PIXELS / 8); /* the compface library exports char F[], which uses a single byte per pixel to represent a 48x48 bitmap. Yuck. */ @@ -2046,7 +1731,7 @@ { n |= ((*p++) << b); } - *bp++ = (char) n; + *bp++ = (UChar_Binary) n; } xbm_instantiate_1 (image_instance, instantiator, pointer_fg, @@ -2093,6 +1778,12 @@ #endif static void +finalize_destroy_window (void *win) +{ + DestroyWindow ((HWND) win); +} + +static void mswindows_finalize_image_instance (Lisp_Image_Instance *p) { if (!p->data) @@ -2109,8 +1800,14 @@ #endif if (IMAGE_INSTANCE_SUBWINDOW_ID (p)) { - DestroyWindow (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p)); - DestroyWindow (IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (p)); + /* DestroyWindow is not safe here, as it will send messages + to our window proc. */ + register_post_gc_action + (finalize_destroy_window, + (void *) (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p))); + register_post_gc_action + (finalize_destroy_window, + (void *) (IMAGE_INSTANCE_MSWINDOWS_CLIPWINDOW (p))); IMAGE_INSTANCE_SUBWINDOW_ID (p) = 0; } } @@ -2412,8 +2109,8 @@ NULL, /* No menu */ NULL, /* must be null for this class */ NULL)) == NULL) - signal_simple_error ("window creation failed with code", - make_int (GetLastError())); + gui_error ("window creation failed with code", + make_int (GetLastError())); wnd = CreateWindow( "STATIC", "", @@ -2551,8 +2248,8 @@ (HMENU)id, /* No menu */ NULL, /* must be null for this class */ NULL)) == NULL) - signal_simple_error ("window creation failed with code", - make_int (GetLastError())); + gui_error ("window creation failed with code", + make_int (GetLastError())); if ((wnd = CreateWindowEx( exflags /* | WS_EX_NOPARENTNOTIFY*/, @@ -2571,8 +2268,8 @@ (FRAME_MSWINDOWS_HANDLE (XFRAME (frame)), GWL_HINSTANCE), NULL)) == NULL) - signal_simple_error ("window creation failed with code", - make_int (GetLastError())); + gui_error ("window creation failed with code", + make_int (GetLastError())); IMAGE_INSTANCE_SUBWINDOW_ID (ii) = wnd; SetWindowLong (wnd, GWL_USERDATA, (LONG)LISP_TO_VOID(image_instance)); @@ -2783,7 +2480,7 @@ if ((ret = (HTREEITEM)SendMessage (wnd, TVM_INSERTITEM, 0, (LPARAM)&tvitem)) == 0) - signal_simple_error ("error adding tree view entry", item); + gui_error ("error adding tree view entry", item); return ret; } @@ -2906,7 +2603,7 @@ if ((ret = SendMessage (wnd, TCM_INSERTITEM, i, (LPARAM)&tvitem)) < 0) - signal_simple_error ("error adding tab entry", item); + gui_error ("error adding tab entry", item); return ret; } @@ -3107,7 +2804,7 @@ C_STRING_ALLOCA, lparam, Qnative); if (SendMessage (wnd, CB_ADDSTRING, 0, (LPARAM)lparam) == CB_ERR) - signal_simple_error ("error adding combo entries", instantiator); + gui_error ("error adding combo entries", instantiator); } } @@ -3218,8 +2915,6 @@ void syms_of_glyphs_mswindows (void) { - defkeyword (&Q_resource_id, ":resource-id"); - defkeyword (&Q_resource_type, ":resource-type"); } void diff --text -u /dev/null 'xemacs-21.5.2/src/glyphs-shared.c' Index: ././src/glyphs-shared.c --- ././src/glyphs-shared.c Thu Jan 1 09:00:00 1970 +++ ././src/glyphs-shared.c Fri Jun 8 21:21:24 2001 @@ -0,0 +1,339 @@ +/* Routines shared between window-system backends for glyph objects. + Copyright (C) 1993, 1994 Free Software Foundation, Inc. + Copyright (C) 1995 Board of Trustees, University of Illinois. + Copyright (C) 1995 Tinker Systems + Copyright (C) 1995, 1996 Ben Wing + Copyright (C) 1995 Sun Microsystems + Copyright (C) 1998, 1999, 2000 Andy Piper. + +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. */ + +/* taken from glyphs-*.c + HINT HINT HINT Bill Perry: Please put code here and avoid massive + duplication in *-gtk.c!!! */ + +#include +#include "lisp.h" +#include "lstream.h" + +#include "window.h" +#include "elhash.h" +#include "buffer.h" +#include "frame.h" +#include "insdel.h" +#include "opaque.h" +#include "sysdep.h" +#include "sysfile.h" +#include "faces.h" +#include "imgproc.h" + +Lisp_Object Q_resource_type, Q_resource_id; + +void +shared_resource_validate (Lisp_Object instantiator) +{ + if ((NILP (find_keyword_in_vector (instantiator, Q_file)) + && + NILP (find_keyword_in_vector (instantiator, Q_resource_id))) + || + NILP (find_keyword_in_vector (instantiator, Q_resource_type))) + sferror ("Must supply :file, :resource-id and :resource-type", + instantiator); +} + + +Lisp_Object +shared_resource_normalize (Lisp_Object inst, Lisp_Object console_type, + Lisp_Object dest_mask, Lisp_Object tag) +{ + /* This function can call lisp */ + Lisp_Object file = Qnil; + struct gcpro gcpro1, gcpro2; + Lisp_Object alist = Qnil; + + GCPRO2 (file, alist); + + file = potential_pixmap_file_instantiator (inst, Q_file, Q_data, + console_type); + + if (CONSP (file)) /* failure locating filename */ + signal_double_image_error ("Opening pixmap file", + "no such file or directory", + Fcar (file)); + + if (NILP (file)) /* no conversion necessary */ + RETURN_UNGCPRO (inst); + + alist = tagged_vector_to_alist (inst); + + { + alist = remassq_no_quit (Q_file, alist); + alist = Fcons (Fcons (Q_file, file), alist); + } + + { + Lisp_Object result = alist_to_tagged_vector (tag, alist); + free_alist (alist); + RETURN_UNGCPRO (result); + } +} + +/* Originally from xmu.c, but is now shared across X11, GTK, and MSW. */ +/* + * Based on an optimized version provided by Jim Becker, August 5, 1988. + */ + + +#ifndef BitmapSuccess +#define BitmapSuccess 0 +#define BitmapOpenFailed 1 +#define BitmapFileInvalid 2 +#define BitmapNoMemory 3 +#endif + +#define MAX_SIZE 255 + +/* shared data for the image read/parse logic */ +static short hexTable[256]; /* conversion value */ +static int hex_initialized; /* easier to fill in at run time */ + + +/* + * Table index for the hex values. Initialized once, first time. + * Used for translation value or delimiter significance lookup. + */ +static void initHexTable (void) +{ + /* + * We build the table at run time for several reasons: + * + * 1. portable to non-ASCII machines. + * 2. still reentrant since we set the init flag after setting table. + * 3. easier to extend. + * 4. less prone to bugs. + */ + hexTable['0'] = 0; hexTable['1'] = 1; + hexTable['2'] = 2; hexTable['3'] = 3; + hexTable['4'] = 4; hexTable['5'] = 5; + hexTable['6'] = 6; hexTable['7'] = 7; + hexTable['8'] = 8; hexTable['9'] = 9; + hexTable['A'] = 10; hexTable['B'] = 11; + hexTable['C'] = 12; hexTable['D'] = 13; + hexTable['E'] = 14; hexTable['F'] = 15; + hexTable['a'] = 10; hexTable['b'] = 11; + hexTable['c'] = 12; hexTable['d'] = 13; + hexTable['e'] = 14; hexTable['f'] = 15; + + /* delimiters of significance are flagged w/ negative value */ + hexTable[' '] = -1; hexTable[','] = -1; + hexTable['}'] = -1; hexTable['\n'] = -1; + hexTable['\t'] = -1; + + hex_initialized = 1; +} + +/* + * read next hex value in the input stream, return -1 if EOF + */ +static int NextInt (FILE *fstream) +{ + int ch; + int value = 0; + int gotone = 0; + int done = 0; + + /* loop, accumulate hex value until find delimiter */ + /* skip any initial delimiters found in read stream */ + + while (!done) { + ch = getc(fstream); + if (ch == EOF) { + value = -1; + done++; + } else { + /* trim high bits, check type and accumulate */ + ch &= 0xff; + if (isascii(ch) && isxdigit(ch)) { + value = (value << 4) + hexTable[ch]; + gotone++; + } else if ((hexTable[ch]) < 0 && gotone) + done++; + } + } + return value; +} + + +/* + * The data returned by the following routine is always in left-most byte + * first and left-most bit first. If it doesn't return BitmapSuccess then + * its arguments won't have been touched. This routine should look as much + * like the Xlib routine XReadBitmapfile as possible. + */ +static int +read_bitmap_data (FILE *fstream, unsigned int *width, + unsigned int *height, UChar_Binary **datap, + int *x_hot, int *y_hot) +{ + UChar_Binary *data = NULL; /* working variable */ + char line[MAX_SIZE]; /* input line from file */ + int size; /* number of bytes of data */ + char name_and_type[MAX_SIZE]; /* an input line */ + char *type; /* for parsing */ + int value; /* from an input line */ + int version10p; /* boolean, old format */ + int padding; /* to handle alignment */ + int bytes_per_line; /* per scanline of data */ + unsigned int ww = 0; /* width */ + unsigned int hh = 0; /* height */ + int hx = -1; /* x hotspot */ + int hy = -1; /* y hotspot */ + +#ifndef Xmalloc +#define Xmalloc(size) malloc(size) +#endif + + /* first time initialization */ + if (!hex_initialized) initHexTable(); + + /* error cleanup and return macro */ +#define RETURN(code) { if (data) free (data); return code; } + + while (fgets(line, MAX_SIZE, fstream)) { + if (strlen(line) == MAX_SIZE-1) { + RETURN (BitmapFileInvalid); + } + if (sscanf(line,"#define %s %d",name_and_type,&value) == 2) { + if (!(type = strrchr(name_and_type, '_'))) + type = name_and_type; + else + type++; + + if (!strcmp("width", type)) + ww = (unsigned int) value; + if (!strcmp("height", type)) + hh = (unsigned int) value; + if (!strcmp("hot", type)) { + if (type-- == name_and_type || type-- == name_and_type) + continue; + if (!strcmp("x_hot", type)) + hx = value; + if (!strcmp("y_hot", type)) + hy = value; + } + continue; + } + + if (sscanf(line, "static short %s = {", name_and_type) == 1) + version10p = 1; + else if (sscanf(line,"static unsigned char %s = {",name_and_type) == 1) + version10p = 0; + else if (sscanf(line, "static char %s = {", name_and_type) == 1) + version10p = 0; + else + continue; + + if (!(type = strrchr(name_and_type, '_'))) + type = name_and_type; + else + type++; + + if (strcmp("bits[]", type)) + continue; + + if (!ww || !hh) + RETURN (BitmapFileInvalid); + + if ((ww % 16) && ((ww % 16) < 9) && version10p) + padding = 1; + else + padding = 0; + + bytes_per_line = (ww+7)/8 + padding; + + size = bytes_per_line * hh; + data = (UChar_Binary *) Xmalloc ((unsigned int) size); + if (!data) + RETURN (BitmapNoMemory); + + if (version10p) { + UChar_Binary *ptr; + int bytes; + + for (bytes=0, ptr=data; bytes> 8; + } + } else { + UChar_Binary *ptr; + int bytes; + + for (bytes=0, ptr=data; bytes +#include #endif #include @@ -680,7 +681,7 @@ errno = old_errno; } report_file_error ("Creating temp file", - list1 (build_string (filename_out))); + build_string (filename_out)); } CHECK_STRING (string); @@ -741,7 +742,7 @@ if (fubar) report_file_error ("Writing temp file", - list1 (build_string (filename_out))); + build_string (filename_out)); } #endif /* 0 */ @@ -763,13 +764,13 @@ width, height, &best_width, &best_height)) /* this means that an X error of some sort occurred (we trap these so they're not fatal). */ - signal_simple_error ("XQueryBestCursor() failed?", instantiator); + gui_error ("XQueryBestCursor() failed?", instantiator); if (width > best_width || height > best_height) - error_with_frob (instantiator, - "pointer too large (%dx%d): " - "server requires %dx%d or smaller", - width, height, best_width, best_height); + signal_ferror_with_frob (Qgui_error, instantiator, + "pointer too large (%dx%d): " + "server requires %dx%d or smaller", + width, height, best_width, best_height); } @@ -862,7 +863,7 @@ Pixmap pixmap; if (!DEVICE_X_P (XDEVICE (device))) - signal_simple_error ("Not an X device", device); + gui_error ("Not an X device", device); dpy = DEVICE_X_DISPLAY (XDEVICE (device)); d = XtWindow(DEVICE_XT_APP_SHELL (XDEVICE (device))); @@ -874,13 +875,13 @@ pixmap = XCreatePixmap (dpy, d, ximage->width, ximage->height, ximage->depth); if (!pixmap) - signal_simple_error ("Unable to create pixmap", instantiator); + gui_error ("Unable to create pixmap", instantiator); gc = XCreateGC (dpy, pixmap, 0, NULL); if (!gc) { XFreePixmap (dpy, pixmap); - signal_simple_error ("Unable to create GC", instantiator); + gui_error ("Unable to create GC", instantiator); } XPutImage (dpy, pixmap, gc, ximage, 0, 0, 0, 0, @@ -923,13 +924,13 @@ pixmap = XCreatePixmap (dpy, d, ximage->width, ximage->height, ximage->depth); if (!pixmap) - signal_simple_error ("Unable to create pixmap", instantiator); + gui_error ("Unable to create pixmap", instantiator); gc = XCreateGC (dpy, pixmap, 0, NULL); if (!gc) { XFreePixmap (dpy, pixmap); - signal_simple_error ("Unable to create GC", instantiator); + gui_error ("Unable to create GC", instantiator); } XPutImage (dpy, pixmap, gc, ximage, 0, 0, 0, 0, @@ -988,14 +989,6 @@ } } -int read_bitmap_data_from_file (const char *filename, unsigned int *width, - unsigned int *height, unsigned char **datap, - int *x_hot, int *y_hot) -{ - return XmuReadBitmapDataFromFile (filename, width, height, - datap, x_hot, y_hot); -} - /* Given inline data for a mono pixmap, create and return the corresponding X object. */ @@ -1035,7 +1028,7 @@ enum image_instance_type type; if (!DEVICE_X_P (XDEVICE (device))) - signal_simple_error ("Not an X device", device); + gui_error ("Not an X device", device); dpy = DEVICE_X_DISPLAY (XDEVICE (device)); draw = XtWindow(DEVICE_XT_APP_SHELL (XDEVICE (device))); @@ -1323,7 +1316,7 @@ unsigned int w, h; if (!DEVICE_X_P (XDEVICE (device))) - signal_simple_error ("Not an X device", device); + gui_error ("Not an X device", device); dpy = DEVICE_X_DISPLAY (XDEVICE (device)); xs = DefaultScreenOfDisplay (dpy); @@ -1422,19 +1415,13 @@ if (force_mono) { /* second time; blow out. */ - signal_double_file_error ("Reading pixmap data", - "color allocation failed", - data); + gui_error ("XPM color allocation failed", data); } else { + /* second time; blow out. */ if (! (dest_mask & IMAGE_MONO_PIXMAP_MASK)) - { - /* second time; blow out. */ - signal_double_file_error ("Reading pixmap data", - "color allocation failed", - data); - } + gui_error ("XPM color allocation failed", data); force_mono = 1; IMAGE_INSTANCE_TYPE (ii) = IMAGE_MONO_PIXMAP; goto retry; @@ -1443,15 +1430,14 @@ case XpmNoMemory: { xpm_free (&xpmattrs); - signal_double_file_error ("Parsing pixmap data", - "out of memory", data); + out_of_memory ("Parsing pixmap data", data); } default: { xpm_free (&xpmattrs); - signal_double_file_error_2 ("Parsing pixmap data", - "unknown error code", - make_int (result), data); + signal_error_2 (Qgui_error, + "Parsing pixmap data: unknown error code", + make_int (result), data); } } @@ -1705,7 +1691,7 @@ } if (emsg) - signal_simple_error_2 (emsg, data, Qimage); + gui_error_2 (emsg, data, Qimage); bp = bits = (char *) alloca (PIXELS / 8); @@ -1948,13 +1934,13 @@ Lisp_Object foreground, background; if (!DEVICE_X_P (XDEVICE (device))) - signal_simple_error ("Not an X device", device); + gui_error ("Not an X device", device); dpy = DEVICE_X_DISPLAY (XDEVICE (device)); if (!STRINGP (data) || strncmp ("FONT ", (char *) XSTRING_DATA (data), 5)) - signal_simple_error ("Invalid font-glyph instantiator", + invalid_argument ("Invalid font-glyph instantiator", instantiator); if (!(dest_mask & IMAGE_POINTER_MASK)) @@ -1978,12 +1964,11 @@ count = 4, mask_name[0] = 0; if (count != 2 && count != 4) - signal_simple_error ("invalid cursor specification", data); + syntax_error ("invalid cursor specification", data); source = safe_XLoadFont (dpy, source_name); if (! source) - signal_simple_error_2 ("couldn't load font", - build_string (source_name), - data); + signal_error_2 (Qgui_error, + "couldn't load font", build_string (source_name), data); if (count == 2) mask = 0; else if (!mask_name[0]) @@ -1992,9 +1977,9 @@ { mask = safe_XLoadFont (dpy, mask_name); if (!mask) - /* continuable */ - Fsignal (Qerror, list3 (build_string ("couldn't load font"), - build_string (mask_name), data)); + signal_continuable_error_2 (Qgui_error, + "couldn't load font", + build_string (mask_name), data); } if (!mask) mask_char = 0; @@ -2043,7 +2028,7 @@ Lisp_Object foreground, background; if (!DEVICE_X_P (XDEVICE (device))) - signal_simple_error ("Not an X device", device); + gui_error ("Not an X device", device); dpy = DEVICE_X_DISPLAY (XDEVICE (device)); @@ -2052,7 +2037,7 @@ LISP_STRING_TO_EXTERNAL (data, name_ext, Qfile_name); if ((i = XmuCursorNameToIndex (name_ext)) == -1) - signal_simple_error ("Unrecognized cursor-font name", data); + invalid_argument ("Unrecognized cursor-font name", data); x_initialize_pixmap_image_instance (ii, 1, IMAGE_POINTER); IMAGE_INSTANCE_X_CURSOR (ii) = XCreateFontCursor (dpy, i); @@ -2265,7 +2250,8 @@ { Lisp_Object sw; XSETIMAGE_INSTANCE (sw, p); - signal_simple_error ("XEmacs bug: subwindow is deleted", sw); + signal_error (Qinternal_error, + "XEmacs bug: subwindow is deleted", sw); } lw_add_widget_value_arg (wv, XtNwidth, @@ -2311,7 +2297,7 @@ h = IMAGE_INSTANCE_HEIGHT (ii); if (!DEVICE_X_P (XDEVICE (device))) - signal_simple_error ("Not an X device", device); + gui_error ("Not an X device", device); dpy = DEVICE_X_DISPLAY (XDEVICE (device)); xs = DefaultScreenOfDisplay (dpy); @@ -2472,7 +2458,7 @@ XColor fcolor, bcolor; if (!DEVICE_X_P (d)) - signal_simple_error ("Not an X device", device); + gui_error ("Not an X device", device); /* have to set the type this late in case there is no device instantiation for a widget. But we can go ahead and do it without @@ -2682,18 +2668,18 @@ static void x_progress_gauge_redisplay (Lisp_Object image_instance) { - Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); + Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance); - if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii)) + if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p)) { Arg al [1]; Lisp_Object val; #ifdef ERROR_CHECK_GLYPHS - assert (GUI_ITEMP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii))); + assert (GUI_ITEMP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (p))); #endif - val = XGUI_ITEM (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii))->value; + val = XGUI_ITEM (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (p))->value; XtSetArg (al[0], XtNvalue, XINT (val)); - XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (ii), al, 1); + XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (p), al, 1); } } diff --text -u 'xemacs-21.5.1/src/glyphs.c' 'xemacs-21.5.2/src/glyphs.c' Index: ././src/glyphs.c --- ././src/glyphs.c Fri Apr 13 03:23:52 2001 +++ ././src/glyphs.c Sat Jul 28 14:09:03 2001 @@ -154,7 +154,7 @@ struct image_instantiator_methods * decode_device_ii_format (Lisp_Object device, Lisp_Object format, - Error_behavior errb) + Error_Behavior errb) { int i; @@ -183,14 +183,14 @@ } } - maybe_signal_simple_error ("Invalid image-instantiator format", format, + maybe_invalid_argument ("Invalid image-instantiator format", format, Qimage, errb); return 0; } struct image_instantiator_methods * -decode_image_instantiator_format (Lisp_Object format, Error_behavior errb) +decode_image_instantiator_format (Lisp_Object format, Error_Behavior errb) { return decode_device_ii_format (Qnil, format, errb); } @@ -315,7 +315,7 @@ (!NILP (XCDR (XCDR (mapping))) && (!CONSP (XCDR (XCDR (mapping))) || !NILP (XCDR (XCDR (XCDR (mapping))))))) - signal_simple_error ("Invalid mapping form", mapping); + invalid_argument ("Invalid mapping form", mapping); else { Lisp_Object exp = XCAR (mapping); @@ -400,7 +400,7 @@ } /* Oh well. */ - signal_simple_error ("Unable to interpret glyph instantiator", + invalid_argument ("Unable to interpret glyph instantiator", data); return Qnil; @@ -484,7 +484,7 @@ CHECK_VECTOR (instantiator); if (!KEYWORDP (keyword)) - signal_simple_error ("instantiator property must be a keyword", keyword); + invalid_argument ("instantiator property must be a keyword", keyword); elt = XVECTOR_DATA (instantiator); len = XVECTOR_LENGTH (instantiator); @@ -544,7 +544,7 @@ { if (NILP (find_keyword_in_vector (instantiator, Q_file)) && NILP (find_keyword_in_vector (instantiator, Q_data))) - signal_simple_error ("Must supply either :file or :data", + sferror ("Must supply either :file or :data", instantiator); } @@ -552,14 +552,14 @@ data_must_be_present (Lisp_Object instantiator) { if (NILP (find_keyword_in_vector (instantiator, Q_data))) - signal_simple_error ("Must supply :data", instantiator); + sferror ("Must supply :data", instantiator); } static void face_must_be_present (Lisp_Object instantiator) { if (NILP (find_keyword_in_vector (instantiator, Q_face))) - signal_simple_error ("Must supply :face", instantiator); + sferror ("Must supply :face", instantiator); } /* utility function useful in retrieving data from a file. */ @@ -696,11 +696,12 @@ if (governing_domain == GOVERNING_DOMAIN_WINDOW && NILP (DOMAIN_WINDOW (domain))) - signal_simple_error_2 ("Domain for this instantiator must be resolvable to a window", - instantiator, domain); + invalid_argument_2 + ("Domain for this instantiator must be resolvable to a window", + instantiator, domain); else if (governing_domain == GOVERNING_DOMAIN_FRAME && NILP (DOMAIN_FRAME (domain))) - signal_simple_error_2 + invalid_argument_2 ("Domain for this instantiator must be resolvable to a frame", instantiator, domain); @@ -767,7 +768,7 @@ GCPRO1 (ii); if (!valid_image_instantiator_format_p (INSTANTIATOR_TYPE (instantiator), DOMAIN_DEVICE (governing_domain))) - signal_simple_error + invalid_argument ("Image instantiator format is invalid in this locale.", instantiator); @@ -783,7 +784,7 @@ if (!HAS_IIFORMAT_METH_P (meths, instantiate) && (!device_meths || !HAS_IIFORMAT_METH_P (device_meths, instantiate))) - signal_simple_error + invalid_argument ("Don't know how to instantiate this image instantiator?", instantiator); @@ -905,7 +906,7 @@ Lisp_Image_Instance *ii = XIMAGE_INSTANCE (obj); if (print_readably) - error ("printing unreadable object #", + printing_unreadable_object ("#", ii->header.uid); write_c_string ("# XSTRING_CHAR_LENGTH (bits)) - signal_simple_error ("data is too short for width and height", + invalid_argument ("data is too short for width and height", vector3 (width, height, bits)); } @@ -2592,29 +2611,29 @@ case BitmapOpenFailed: { /* should never happen */ - signal_double_file_error ("Opening bitmap file", - "no such file or directory", - name); + signal_double_image_error ("Opening bitmap file", + "no such file or directory", + name); } case BitmapFileInvalid: { if (ok_if_data_invalid) return Qt; - signal_double_file_error ("Reading bitmap file", - "invalid data in file", - name); + signal_double_image_error ("Reading bitmap file", + "invalid data in file", + name); } case BitmapNoMemory: { - signal_double_file_error ("Reading bitmap file", - "out of memory", - name); + signal_double_image_error ("Reading bitmap file", + "out of memory", + name); } default: { - signal_double_file_error_2 ("Reading bitmap file", - "unknown error code", - make_int (result), name); + signal_double_image_error_2 ("Reading bitmap file", + "unknown error code", + make_int (result), name); } } @@ -2682,9 +2701,9 @@ Q_mask_data, console_type); if (CONSP (file)) /* failure locating filename */ - signal_double_file_error ("Opening bitmap file", - "no such file or directory", - Fcar (file)); + signal_double_image_error ("Opening bitmap file", + "no such file or directory", + Fcar (file)); if (NILP (file) && NILP (mask_file)) /* no conversion necessary */ RETURN_UNGCPRO (inst); @@ -2767,9 +2786,9 @@ Q_mask_data, console_type); if (CONSP (file)) /* failure locating filename */ - signal_double_file_error ("Opening bitmap file", - "no such file or directory", - Fcar (file)); + signal_double_image_error ("Opening bitmap file", + "no such file or directory", + Fcar (file)); if (NILP (file) && NILP (mask_file)) /* no conversion necessary */ RETURN_UNGCPRO (inst); @@ -2880,20 +2899,20 @@ } case XpmNoMemory: { - signal_double_file_error ("Reading pixmap file", - "out of memory", name); + signal_double_image_error ("Reading pixmap file", + "out of memory", name); } case XpmOpenFailed: { /* should never happen? */ - signal_double_file_error ("Opening pixmap file", - "no such file or directory", name); + signal_double_image_error ("Opening pixmap file", + "no such file or directory", name); } default: { - signal_double_file_error_2 ("Parsing pixmap file", - "unknown error code", - make_int (result), name); + signal_double_image_error_2 ("Parsing pixmap file", + "unknown error code", + make_int (result), name); break; } } @@ -2914,7 +2933,7 @@ !STRINGP (XCAR (XCAR (rest))) || (!STRINGP (XCDR (XCAR (rest))) && !COLOR_SPECIFIERP (XCDR (XCAR (rest))))) - signal_simple_error ("Invalid color symbol alist", data); + sferror ("Invalid color symbol alist", data); } } @@ -2949,7 +2968,7 @@ if (NILP (value)) continue; if (!STRINGP (value) && !COLOR_SPECIFIERP (value)) - signal_simple_error + invalid_argument ("Result from xpm-color-symbols eval must be nil, string, or color", value); results = Fcons (Fcons (name, value), results); @@ -2981,9 +3000,9 @@ console_type); if (CONSP (file)) /* failure locating filename */ - signal_double_file_error ("Opening pixmap file", - "no such file or directory", - Fcar (file)); + signal_double_image_error ("Opening pixmap file", + "no such file or directory", + Fcar (file)); color_symbols = find_keyword_in_vector_or_given (inst, Q_color_symbols, Qunbound); @@ -3140,11 +3159,11 @@ if (mask & dest_mask) return instantiator; else - signal_simple_error ("Type of image instance not allowed here", + invalid_argument ("Type of image instance not allowed here", instantiator); } else - signal_simple_error_2 ("Wrong domain for image instance", + invalid_argument_2 ("Wrong domain for image instance", instantiator, domain); } /* How ugly !! An image instanciator that uses a kludgy syntax to snarf in @@ -3284,8 +3303,7 @@ #endif } else if (NILP (instance)) - signal_simple_error ("Can't instantiate image (probably cached)", - instantiator); + gui_error ("Can't instantiate image (probably cached)", instantiator); /* We found an instance. However, because we are using the glyph as the hash key instead of the instantiator, the current instantiator may not be the same as the original. Thus we @@ -3335,12 +3353,12 @@ int i; if (instantiator_len < 1) - signal_simple_error ("Vector length must be at least 1", + sferror ("Vector length must be at least 1", instantiator); meths = decode_image_instantiator_format (elt[0], ERROR_ME); if (!(instantiator_len & 1)) - signal_simple_error + sferror ("Must have alternating keyword/value pairs", instantiator); GCPRO1 (already_seen); @@ -3353,19 +3371,19 @@ CHECK_SYMBOL (keyword); if (!SYMBOL_IS_KEYWORD (keyword)) - signal_simple_error ("Symbol must begin with a colon", keyword); + invalid_argument ("Symbol must begin with a colon", keyword); for (j = 0; j < Dynarr_length (meths->keywords); j++) if (EQ (keyword, Dynarr_at (meths->keywords, j).keyword)) break; if (j == Dynarr_length (meths->keywords)) - signal_simple_error ("Unrecognized keyword", keyword); + invalid_argument ("Unrecognized keyword", keyword); if (!Dynarr_at (meths->keywords, j).multiple_p) { if (!NILP (memq_no_quit (keyword, already_seen))) - signal_simple_error + sferror ("Keyword may not appear more than once", keyword); already_seen = Fcons (keyword, already_seen); } @@ -3378,7 +3396,7 @@ MAYBE_IIFORMAT_METH (meths, validate, (instantiator)); } else - signal_simple_error ("Must be string or vector", instantiator); + invalid_argument ("Must be string or vector", instantiator); } static void @@ -3561,7 +3579,7 @@ char buf[20]; if (print_readably) - error ("printing unreadable object #", glyph->header.uid); + printing_unreadable_object ("#", glyph->header.uid); write_c_string ("# -#if (!defined(__linux__)) /* possible under xterm */ #define KG_SHIFT 0 #define KG_CTRL 2 #define KG_ALT 3 -#else -#include -#endif extern int gpm_tried; extern void *gpm_stack; @@ -536,7 +532,7 @@ if (noninteractive) { - error ("Can't connect to GPM in batch mode."); + invalid_operation ("Can't connect to GPM in batch mode.", Qunbound); } if (!console_name) @@ -560,7 +556,7 @@ */ if (!NILP (Fgpm_enabled_p (device))) { - error ("GPM already enabled for this console."); + invalid_operation ("GPM already enabled for this console.", Qunbound); } conn.eventMask = GPM_DOWN|GPM_UP|GPM_MOVE|GPM_DRAG; diff --text -u 'xemacs-21.5.1/src/gui-gtk.c' 'xemacs-21.5.2/src/gui-gtk.c' Index: ././src/gui-gtk.c --- ././src/gui-gtk.c Fri Apr 13 03:23:54 2001 +++ ././src/gui-gtk.c Thu May 24 16:51:19 2001 @@ -82,7 +82,7 @@ syms_of_gui_gtk (void) { #ifdef HAVE_POPUPS - defsymbol (&Qmenu_no_selection_hook, "menu-no-selection-hook"); + DEFSYMBOL (Qmenu_no_selection_hook); #endif } diff --text -u 'xemacs-21.5.1/src/gui-x.c' 'xemacs-21.5.2/src/gui-x.c' Index: ././src/gui-x.c --- ././src/gui-x.c Fri Apr 13 03:23:54 2001 +++ ././src/gui-x.c Thu May 24 16:51:19 2001 @@ -405,12 +405,12 @@ return 1; } else if (!GUI_ITEMP (gui_item)) - syntax_error ("need a string or a gui_item here", gui_item); + invalid_argument ("need a string or a gui_item here", gui_item); pgui = XGUI_ITEM (gui_item); if (!NILP (pgui->filter)) - syntax_error (":filter keyword not permitted on leaf nodes", gui_item); + sferror (":filter keyword not permitted on leaf nodes", gui_item); #ifdef HAVE_MENUBARS if (menu_entry_p && !gui_item_included_p (gui_item, Vmenubar_configuration)) @@ -533,13 +533,13 @@ #endif } else - syntax_error_2 ("Unknown style", pgui->style, gui_item); + invalid_constant_2 ("Unknown style", pgui->style, gui_item); if (!allow_text_field_p && (wv->type == TEXT_TYPE)) - syntax_error ("Text field not allowed in this context", gui_item); + sferror ("Text field not allowed in this context", gui_item); if (!NILP (pgui->selected) && EQ (pgui->style, Qtext)) - syntax_error + sferror (":selected only makes sense with :style toggle, radio or button", gui_item); return 1; @@ -584,7 +584,7 @@ { /* first one is the parent */ if (CONSP (XCAR (items))) - syntax_error ("parent item must not be a list", XCAR (items)); + sferror ("parent item must not be a list", XCAR (items)); if (parent) wv = gui_items_to_widget_values_1 (gui_object_instance, @@ -631,7 +631,7 @@ Lisp_Object wv_closure; if (NILP (items)) - syntax_error ("must have some items", items); + sferror ("must have some items", items); /* Inhibit GC during this conversion. The reasons for this are the same as in menu_item_descriptor_to_widget_value(); see @@ -663,64 +663,6 @@ return control; } -/* This is a kludge to make sure emacs can only link against a version of - lwlib that was compiled in the right way. Emacs references symbols which - correspond to the way it thinks lwlib was compiled, and if lwlib wasn't - compiled in that way, then somewhat meaningful link errors will result. - The alternatives to this range from obscure link errors, to obscure - runtime errors that look a lot like bugs. - */ - -static void -sanity_check_lwlib (void) -{ -#define MACROLET(v) { extern int v; v = 1; } - -#if (XlibSpecificationRelease == 4) - MACROLET (lwlib_uses_x11r4); -#elif (XlibSpecificationRelease == 5) - MACROLET (lwlib_uses_x11r5); -#elif (XlibSpecificationRelease == 6) - MACROLET (lwlib_uses_x11r6); -#else - MACROLET (lwlib_uses_unknown_x11); -#endif -#ifdef LWLIB_USES_MOTIF - MACROLET (lwlib_uses_motif); -#else - MACROLET (lwlib_does_not_use_motif); -#endif -#if (XmVersion >= 1002) - MACROLET (lwlib_uses_motif_1_2); -#else - MACROLET (lwlib_does_not_use_motif_1_2); -#endif -#ifdef LWLIB_MENUBARS_LUCID - MACROLET (lwlib_menubars_lucid); -#elif defined (HAVE_MENUBARS) - MACROLET (lwlib_menubars_motif); -#endif -#ifdef LWLIB_SCROLLBARS_LUCID - MACROLET (lwlib_scrollbars_lucid); -#elif defined (LWLIB_SCROLLBARS_MOTIF) - MACROLET (lwlib_scrollbars_motif); -#elif defined (HAVE_SCROLLBARS) - MACROLET (lwlib_scrollbars_athena); -#endif -#ifdef LWLIB_DIALOGS_MOTIF - MACROLET (lwlib_dialogs_motif); -#elif defined (HAVE_DIALOGS) - MACROLET (lwlib_dialogs_athena); -#endif -#ifdef LWLIB_WIDGETS_MOTIF - MACROLET (lwlib_widgets_motif); -#elif defined (HAVE_WIDGETS) - MACROLET (lwlib_widgets_athena); -#endif - -#undef MACROLET -} - void syms_of_gui_x (void) { @@ -734,9 +676,6 @@ #ifdef HAVE_POPUPS popup_up_p = 0; #endif - - /* this makes only safe calls as in emacs.c */ - sanity_check_lwlib (); } void diff --text -u 'xemacs-21.5.1/src/gui-x.h' 'xemacs-21.5.2/src/gui-x.h' Index: ././src/gui-x.h --- ././src/gui-x.h Fri Apr 13 03:23:54 2001 +++ ././src/gui-x.h Mon Jun 18 16:10:20 2001 @@ -61,6 +61,7 @@ DECLARE_LRECORD (popup_data, struct popup_data); #define XPOPUP_DATA(x) XRECORD (x, popup_data, struct popup_data) #define XSETPOPUP_DATA(x, p) XSETRECORD (x, p, popup_data) +#define wrap_popup_data(p) wrap_record (p, popup_data) #define POPUP_DATAP(x) RECORDP (x, popup_data) #define CHECK_POPUP_DATA(x) CHECK_RECORD (x, popup_data) diff --text -u 'xemacs-21.5.1/src/gui.c' 'xemacs-21.5.2/src/gui.c' Index: ././src/gui.c --- ././src/gui.c Fri Apr 13 03:23:54 2001 +++ ././src/gui.c Fri May 25 20:26:56 2001 @@ -39,6 +39,8 @@ static Lisp_Object parse_gui_item_tree_list (Lisp_Object list); Lisp_Object find_keyword_in_vector (Lisp_Object vector, Lisp_Object keyword); +Lisp_Object Qgui_error; + #ifdef HAVE_POPUPS /* count of menus/dboxes currently up */ @@ -115,13 +117,13 @@ int gui_item_add_keyval_pair (Lisp_Object gui_item, Lisp_Object key, Lisp_Object val, - Error_behavior errb) + Error_Behavior errb) { Lisp_Gui_Item *pgui_item = XGUI_ITEM (gui_item); int retval = 0; if (!KEYWORDP (key)) - syntax_error_2 ("Non-keyword in gui item", key, pgui_item->name); + sferror_2 ("Non-keyword in gui item", key, pgui_item->name); if (EQ (key, Q_descriptor)) { @@ -162,11 +164,11 @@ if (SYMBOLP (val) || CHARP (val)) pgui_item->accelerator = val; else if (ERRB_EQ (errb, ERROR_ME)) - syntax_error ("Bad keyboard accelerator", val); + invalid_argument ("Bad keyboard accelerator", val); } } else if (ERRB_EQ (errb, ERROR_ME)) - syntax_error_2 ("Unknown keyword in gui item", key, + invalid_argument_2 ("Unknown keyword in gui item", key, pgui_item->name); return retval; } @@ -212,7 +214,7 @@ */ static Lisp_Object make_gui_item_from_keywords_internal (Lisp_Object item, - Error_behavior errb) + Error_Behavior errb) { int length, plist_p, start; Lisp_Object *contents; @@ -224,7 +226,7 @@ contents = XVECTOR_DATA (item); if (length < 1) - syntax_error ("GUI item descriptors must be at least 1 elts long", item); + sferror ("GUI item descriptors must be at least 1 elts long", item); /* length 1: [ "name" ] length 2: [ "name" callback ] @@ -259,7 +261,7 @@ { int i; if ((length - start) & 1) - syntax_error ( + sferror ( "GUI item descriptor has an odd number of keywords and values", item); @@ -287,12 +289,12 @@ contents = XVECTOR_DATA (item); if (!NILP (desc) && !STRINGP (desc) && !VECTORP (desc)) - syntax_error ("Invalid GUI item descriptor", item); + sferror ("Invalid GUI item descriptor", item); if (length & 1) { if (!SYMBOLP (contents [0])) - syntax_error ("Invalid GUI item descriptor", item); + sferror ("Invalid GUI item descriptor", item); contents++; /* Ignore the leading symbol. */ length--; } @@ -321,7 +323,7 @@ if (length & 1) { if (!SYMBOLP (contents [0])) - syntax_error ("Invalid GUI item descriptor", item); + sferror ("Invalid GUI item descriptor", item); contents++; /* Ignore the leading symbol. */ length--; } @@ -486,7 +488,7 @@ static DOESNT_RETURN signal_too_long_error (Lisp_Object name) { - syntax_error ("GUI item produces too long displayable string", name); + invalid_argument ("GUI item produces too long displayable string", name); } #ifdef HAVE_WINDOW_SYSTEM @@ -699,7 +701,7 @@ char buf[20]; if (print_readably) - error ("printing unreadable object #", g->header.uid); + printing_unreadable_object ("#", g->header.uid); write_c_string ("#", g->header.uid); @@ -771,7 +773,7 @@ CHECK_STRING (entry); } else - syntax_error ("item must be a vector or a string", entry); + sferror ("item must be a vector or a string", entry); RETURN_UNGCPRO (ret); } @@ -823,12 +825,27 @@ 0, Lisp_Gui_Item); + +DOESNT_RETURN +gui_error (const char *reason, Lisp_Object frob) +{ + signal_error (Qgui_error, reason, frob); +} + +DOESNT_RETURN +gui_error_2 (const char *reason, Lisp_Object frob0, Lisp_Object frob1) +{ + signal_error_2 (Qgui_error, reason, frob0, frob1); +} + void syms_of_gui (void) { INIT_LRECORD_IMPLEMENTATION (gui_item); DEFSYMBOL (Qmenu_no_selection_hook); + + DEFERROR_STANDARD (Qgui_error, Qio_error); #ifdef HAVE_POPUPS DEFSUBR (Fpopup_up_p); diff --text -u 'xemacs-21.5.1/src/gui.h' 'xemacs-21.5.2/src/gui.h' Index: ././src/gui.h --- ././src/gui.h Fri Apr 13 03:23:55 2001 +++ ././src/gui.h Mon Jun 18 16:10:21 2001 @@ -63,6 +63,7 @@ DECLARE_LRECORD (gui_item, Lisp_Gui_Item); #define XGUI_ITEM(x) XRECORD (x, gui_item, Lisp_Gui_Item) #define XSETGUI_ITEM(x, p) XSETRECORD (x, p, gui_item) +#define wrap_gui_item(p) wrap_record (p, gui_item) #define GUI_ITEMP(x) RECORDP (x, gui_item) #define CHECK_GUI_ITEM(x) CHECK_RECORD (x, gui_item) #define CONCHECK_GUI_ITEM(x) CONCHECK_RECORD (x, gui_item) @@ -72,7 +73,7 @@ Lisp_Object widget_gui_parse_item_keywords (Lisp_Object item); int gui_item_add_keyval_pair (Lisp_Object gui_item, Lisp_Object key, Lisp_Object val, - Error_behavior errb); + Error_Behavior errb); Lisp_Object gui_parse_item_keywords (Lisp_Object item); Lisp_Object gui_parse_item_keywords_no_errors (Lisp_Object item); void gui_add_item_keywords_to_plist (Lisp_Object plist, Lisp_Object gui_item); diff --text -u 'xemacs-21.5.1/src/gutter.c' 'xemacs-21.5.2/src/gutter.c' Index: ././src/gutter.c --- ././src/gutter.c Fri Apr 13 03:23:55 2001 +++ ././src/gutter.c Sat Jul 28 14:09:03 2001 @@ -424,7 +424,10 @@ (f->extents_changed && w->gutter_extent_modiff[pos])) { #ifdef DEBUG_GUTTERS - printf ("gutter redisplay [%dx%d@%d+%d] triggered by %s,\n", + stderr_out ("gutter redisplay [%s %dx%d@%d+%d] triggered by %s,\n", + pos == TOP_GUTTER ? "TOP" : + pos == BOTTOM_GUTTER ? "BOTTOM" : + pos == LEFT_GUTTER ? "LEFT" : "RIGHT", width, height, x, y, force ? "force" : f->faces_changed ? "f->faces_changed" : f->frame_changed ? "f->frame_changed" : @@ -521,22 +524,25 @@ redisplay_clear_region (window, findex, x, y, width, height); } -/* #### I don't currently believe that redisplay needs to mark the +/* [[#### I don't currently believe that redisplay needs to mark the glyphs in its structures since these will always be referenced from somewhere else. However, I'm not sure enough to stake my life on it - at this point, so we do the safe thing. */ + at this point, so we do the safe thing.]] + + ALWAYS mark everything. --ben */ /* See the comment in image_instantiate_cache_result as to why marking the glyph will also mark the image_instance. */ void -mark_gutters (struct frame* f) +mark_gutters (struct frame *f) { enum gutter_pos pos; GUTTER_POS_LOOP (pos) { if (f->current_display_lines[pos]) mark_redisplay_structs (f->current_display_lines[pos]); - /* #### Do we really need to mark the desired lines? */ + /* [[#### Do we really need to mark the desired lines?]] + ALWAYS mark everything. --ben */ if (f->desired_display_lines[pos]) mark_redisplay_structs (f->desired_display_lines[pos]); } @@ -668,7 +674,7 @@ return; #ifdef DEBUG_WIDGETS - printf ("redrawing gutter after expose %d+%d, %dx%d\n", + stderr_out ("redrawing gutter after expose %d+%d, %dx%d\n", x, y, width, height); #endif /* #### optimize this - redrawing the whole gutter for every expose @@ -725,7 +731,7 @@ if (EQ (position, Qbottom)) return BOTTOM_GUTTER; if (EQ (position, Qleft)) return LEFT_GUTTER; if (EQ (position, Qright)) return RIGHT_GUTTER; - signal_simple_error ("Invalid gutter position", position); + invalid_constant ("Invalid gutter position", position); return TOP_GUTTER; /* not reached */ } @@ -838,7 +844,7 @@ /* Must be a string or a plist. */ if (!STRINGP (instantiator) && NILP (Fvalid_plist_p (instantiator))) - signal_simple_error ("Gutter spec must be string, plist or nil", instantiator); + sferror ("Gutter spec must be string, plist or nil", instantiator); if (!STRINGP (instantiator)) { @@ -848,7 +854,7 @@ { if (!SYMBOLP (XCAR (rest)) || !STRINGP (XCAR (XCDR (rest)))) - signal_simple_error ("Gutter plist spec must contain strings", instantiator); + sferror ("Gutter plist spec must contain strings", instantiator); } } } @@ -987,7 +993,7 @@ return; if (!INTP (instantiator) && !EQ (instantiator, Qautodetect)) - signal_simple_error ("Gutter size must be an integer or 'autodetect", instantiator); + invalid_argument ("Gutter size must be an integer or 'autodetect", instantiator); } DEFUN ("gutter-size-specifier-p", Fgutter_size_specifier_p, 1, 1, 0, /* @@ -1012,7 +1018,7 @@ return; if (!NILP (instantiator) && !EQ (instantiator, Qt) && !CONSP (instantiator)) - signal_simple_error ("Gutter visibility must be a boolean or list of symbols", + invalid_argument ("Gutter visibility must be a boolean or list of symbols", instantiator); if (CONSP (instantiator)) @@ -1022,7 +1028,7 @@ EXTERNAL_LIST_LOOP (rest, instantiator) { if (!SYMBOLP (XCAR (rest))) - signal_simple_error ("Gutter visibility must be a boolean or list of symbols", + invalid_argument ("Gutter visibility must be a boolean or list of symbols", instantiator); } } @@ -1136,10 +1142,9 @@ DEFSUBR (Fgutter_pixel_width); DEFSUBR (Fredisplay_gutter_area); - defsymbol (&Qgutter_size, "gutter-size"); - defsymbol (&Qgutter_visible, "gutter-visible"); - defsymbol (&Qdefault_gutter_position_changed_hook, - "default-gutter-position-changed-hook"); + DEFSYMBOL (Qgutter_size); + DEFSYMBOL (Qgutter_visible); + DEFSYMBOL (Qdefault_gutter_position_changed_hook); } void diff --text -u 'xemacs-21.5.1/src/hpplay.c' 'xemacs-21.5.2/src/hpplay.c' Index: ././src/hpplay.c --- ././src/hpplay.c Fri Apr 13 03:23:56 2001 +++ ././src/hpplay.c Fri May 25 20:26:57 2001 @@ -19,6 +19,8 @@ /* Synched up with: Not in FSF. */ +/* This file Mule-ized by Ben Wing, 5-15-01. */ + /*** NAME @@ -51,10 +53,8 @@ #include #include "lisp.h" -#include "nativesound.h" +#include "sound.h" -#include -#include #ifdef HPUX10 #include #include @@ -71,22 +71,20 @@ /* Functions */ /* error handling */ -void player_error_internal( - Audio * audio, - char * text, - long errorCode - ) +void +player_error_internal (Audio * audio, Char_ASCII * text, long errorCode) { - char errorbuff[132],buf[256]; + Extbyte errorbuff[132]; + Bufbyte *interr; - AGetErrorText(audio, errorCode, errorbuff, 131); - sprintf(buf,"%s: %s\n",text,errorbuff); - error(buf); + AGetErrorText (audio, errorCode, errorbuff, 131); + EXTERNAL_TO_C_STRING (errorbuf, interr, Qnative); + + signal_error (Qsound_error, text, build_string (interr)); } -long myHandler(audio, err_event) - Audio * audio; - AErrorEvent * err_event; +long +myHandler( Audio * audio, AErrorEvent * err_event) { player_error_internal(audio, "Internal sound error", err_event->error_code); return 1; /* Must return something, was orig. an exit */ @@ -94,177 +92,154 @@ /* Playing */ void -play_bucket_internal(audio, pSBucket, volume) - Audio *audio; - SBucket *pSBucket; - long volume; +play_bucket_internal( Audio *audio, SBucket *pSBucket, long volume) { - SBPlayParams playParams; - AGainEntry gainEntry; - ATransID xid; - long status; - char * speaker; - - playParams.priority = APriorityNormal; /* normal priority */ - - /* - * We can't signal an error, because all h*ll would break loose if - * we did. - */ - if (SYMBOLP (Vhp_play_speaker)) - { - speaker = (char *) (string_data (XSYMBOL (Vhp_play_speaker)->name)); - - /* - * setup the playback parameters - */ - - /* speaker selection */ - if ( strcmp(speaker,"external") == 0 ) { - gainEntry.u.o.out_dst = AODTMonoJack; - } else { - gainEntry.u.o.out_dst = AODTMonoIntSpeaker; - } - } - else - { - /* - * Quietly revert to the internal speaker - */ - gainEntry.u.o.out_dst = AODTMonoIntSpeaker; - } - - gainEntry.u.o.out_ch = AOCTMono; - gainEntry.gain = AUnityGain; - playParams.gain_matrix.type = AGMTOutput; /* gain matrix */ - playParams.gain_matrix.num_entries = 1; - playParams.gain_matrix.gain_entries = &gainEntry; - playParams.play_volume = hp_play_gain; /* play volume */ - playParams.pause_first = False; /* don't pause */ - playParams.start_offset.type = ATTSamples; /* start offset 0 */ - playParams.start_offset.u.samples = 0; - playParams.duration.type = ATTFullLength; /* play entire sample */ - playParams.loop_count = 1; /* play sample just once */ - playParams.previous_transaction = 0; /* no linked transaction */ - playParams.event_mask = 0; /* don't solicit any events */ - - /* - * play the sound bucket - */ - xid = APlaySBucket( audio, pSBucket, &playParams, NULL ); - - /* - * set close mode to prevent playback from stopping - * when we close audio connection - */ - ASetCloseDownMode( audio, AKeepTransactions, &status ); - - /* - * That's all, folks! - * Always destroy bucket and close connection. - */ - ADestroySBucket( audio, pSBucket, &status ); - ACloseAudio( audio, &status ); + SBPlayParams playParams; + AGainEntry gainEntry; + ATransID xid; + long status; + + playParams.priority = APriorityNormal; /* normal priority */ + + /* + * We can't signal an error, because all h*ll would break loose if + * we did. + */ + if (EQ (Vhp_play_speaker, Qexternal)) + gainEntry.u.o.out_dst = AODTMonoJack; + else + gainEntry.u.o.out_dst = AODTMonoIntSpeaker; + + gainEntry.u.o.out_ch = AOCTMono; + gainEntry.gain = AUnityGain; + playParams.gain_matrix.type = AGMTOutput; /* gain matrix */ + playParams.gain_matrix.num_entries = 1; + playParams.gain_matrix.gain_entries = &gainEntry; + playParams.play_volume = hp_play_gain; /* play volume */ + playParams.pause_first = False; /* don't pause */ + playParams.start_offset.type = ATTSamples; /* start offset 0 */ + playParams.start_offset.u.samples = 0; + playParams.duration.type = ATTFullLength; /* play entire sample */ + playParams.loop_count = 1; /* play sample just once */ + playParams.previous_transaction = 0; /* no linked transaction */ + playParams.event_mask = 0; /* don't solicit any events */ + + /* + * play the sound bucket + */ + xid = APlaySBucket( audio, pSBucket, &playParams, NULL ); + + /* + * set close mode to prevent playback from stopping + * when we close audio connection + */ + ASetCloseDownMode( audio, AKeepTransactions, &status ); + + /* + * That's all, folks! + * Always destroy bucket and close connection. + */ + ADestroySBucket( audio, pSBucket, &status ); + ACloseAudio( audio, &status ); } void -play_sound_file (sound_file, volume) - char * sound_file; - int volume; +play_sound_file (Extbyte * sound_file, int volume) { - SBucket *pSBucket; - Audio *audio; - long status; - AErrorHandler prevHandler; /* pointer to previous handler */ - char *server; - - if (STRINGP(Vhp_play_server)) - server = (char *) XSTRING_DATA (Vhp_play_server); + sbucket *pSBucket; + Audio *audio; + long status; + AErrorHandler prevHandler; /* pointer to previous handler */ + Extbyte *server; + + if (STRINGP (Vhp_play_server)) + LISP_STRING_TO_EXTERNAL (Vhp_play_server, server, Qnative); + else server = ""; - /* - * open audio connection - */ - audio = AOpenAudio( server, &status ); - if( status ) { - player_error_internal( audio, "Open audio failed", status ); + /* + * open audio connection + */ + audio = AOpenAudio( server, &status ); + if( status ) + { + player_error_internal( audio, "Open audio failed", status ); } - /* replace default error handler */ - prevHandler = ASetErrorHandler(myHandler); + /* replace default error handler */ + prevHandler = ASetErrorHandler(myHandler); - /* - * Load the audio file into a sound bucket - */ + /* + * Load the audio file into a sound bucket + */ - pSBucket = ALoadAFile( audio, sound_file, AFFUnknown, 0, NULL, NULL ); + pSBucket = ALoadAFile( audio, sound_file, AFFUnknown, 0, NULL, NULL ); - /* - * Play the bucket - */ + /* + * Play the bucket + */ - play_bucket_internal(audio, pSBucket, volume); + play_bucket_internal(audio, pSBucket, volume); - ASetErrorHandler(prevHandler); + ASetErrorHandler(prevHandler); } int -play_sound_data (data, length, volume) - unsigned char * data; - int length; - int volume; +play_sound_data (UChar_Binary * data, int length, int volume) { - SBucket *pSBucket; - Audio *audio; - AErrorHandler prevHandler; - SunHeader *header; - long status; - char *server; - int result; - - /* #### Finish this to return an error code. - This function signal a lisp error. How consistent with the rest. - What if this function is needed in doing the beep for the error? - - Apparently the author of this didn't read the comment in - Fplay_sound. - */ + SBucket *pSBucket; + Audio *audio; + AErrorHandler prevHandler; + SunHeader *header; + long status; + Extbyte *server; + int result; + + /* #### Finish this to return an error code. + This function signal a lisp error. How consistent with the rest. + What if this function is needed in doing the beep for the error? + + Apparently the author of this didn't read the comment in + Fplay_sound. + */ - if (STRINGP (Vhp_play_server)) - server = (char *) XSTRING_DATA (Vhp_play_server); + if (STRINGP (Vhp_play_server)) + LISP_STRING_TO_EXTERNAL (Vhp_play_server, server, Qnative); + else server = ""; - /* open audio connection */ - audio = AOpenAudio( server, &status ); - if( status ) { - player_error_internal( audio, "Open audio failed", status ); + /* open audio connection */ + audio = AOpenAudio( server, &status ); + if(status) + { + player_error_internal( audio, "Open audio failed", status ); } - /* replace default error handler */ - prevHandler = ASetErrorHandler (myHandler); + /* replace default error handler */ + prevHandler = ASetErrorHandler (myHandler); - /* Create sound bucket */ - header = (SunHeader *) data; + /* Create sound bucket */ + header = (SunHeader *) data; - pSBucket = ACreateSBucket(audio, NULL, NULL, &status); - if (status) - player_error_internal( audio, "Bucket creation failed", status ); + pSBucket = ACreateSBucket(audio, NULL, NULL, &status); + if (status) + player_error_internal( audio, "Bucket creation failed", status ); - APutSBucketData(audio, pSBucket, 0, (char *) (data + header->header_size), header->data_length, &status); + APutSBucketData(audio, pSBucket, 0, (Char_Binary *) (data + header->header_size), header->data_length, &status); - if (status) - player_error_internal( audio, "Audio data copy failed", status ); + if (status) + player_error_internal( audio, "Audio data copy failed", status ); - /* Play sound */ - play_bucket_internal(audio, pSBucket, volume); + /* Play sound */ + play_bucket_internal(audio, pSBucket, volume); - ASetErrorHandler(prevHandler); - if (status) - player_error_internal( audio, "Audio data copy failed", status ); + ASetErrorHandler(prevHandler); + if (status) + player_error_internal( audio, "Audio data copy failed", status ); - return 1; + return 1; } void @@ -288,7 +263,7 @@ Vhp_play_speaker = intern ("internal"); - DEFVAR_INT("hp-play-gain", &hp_play_gain /* + DEFVAR_INT ("hp-play-gain", &hp_play_gain /* Global gain value for playing sounds. Default value is AUnityGain which means keep level. Please refer to the HP documentation, for instance in diff --text -u 'xemacs-21.5.1/src/indent.c' 'xemacs-21.5.2/src/indent.c' Index: ././src/indent.c --- ././src/indent.c Fri Apr 13 03:23:56 2001 +++ ././src/indent.c Thu May 24 16:51:20 2001 @@ -311,7 +311,7 @@ if (last_visible >= BUF_BEGV (buf)) BUF_SET_PT (buf, last_visible); else - error ("Visible portion of buffer not modifiable"); + invalid_operation ("Visible portion of buffer not modifiable", Qunbound); } if (indent_tabs_mode) @@ -931,7 +931,7 @@ DEFSUBR (Fvertical_motion); DEFSUBR (Fvertical_motion_pixels); - defsymbol (&Qcoerce, "coerce"); + DEFSYMBOL (Qcoerce); } void diff --text -u 'xemacs-21.5.1/src/inline.c' 'xemacs-21.5.2/src/inline.c' Index: ././src/inline.c --- ././src/inline.c Fri Apr 13 03:23:56 2001 +++ ././src/inline.c Mon Jun 18 16:10:21 2001 @@ -77,6 +77,10 @@ #include "toolbar.h" #endif +#ifdef HAVE_SCROLLBARS +#include "scrollbar.h" +#endif + #ifdef HAVE_DATABASE #include "database.h" #endif diff --text -u 'xemacs-21.5.1/src/input-method-xlib.c' 'xemacs-21.5.2/src/input-method-xlib.c' Index: ././src/input-method-xlib.c --- ././src/input-method-xlib.c Fri Apr 13 03:23:56 2001 +++ ././src/input-method-xlib.c Thu May 24 16:51:20 2001 @@ -816,7 +816,7 @@ CHECK_LIVE_FRAME (frame); f = XFRAME (frame); if (!FRAME_X_P (f)) - return signal_simple_error ("This frame is not on X device", frame); + invalid_argument ("This frame is not on X device", frame); XIM_init_frame (f); return FRAME_X_XIC (f) ? Qt : Qnil; @@ -836,7 +836,7 @@ CHECK_LIVE_FRAME (frame); f = XFRAME (frame); if (!FRAME_X_P (f)) - return signal_simple_error ("This frame is not on X device", frame); + invalid_argument ("This frame is not on X device", frame); d = XDEVICE (FRAME_DEVICE (f)); if (DEVICE_X_XIM (d)) { @@ -850,7 +850,7 @@ void syms_of_input_method_xlib (void) { - defsymbol (&Qxim_xlib, "xim-xlib"); + DEFSYMBOL (Qxim_xlib); #if 0 /* see above */ DEFSUBR (Fx_open_xim); DEFSUBR (Fx_close_xim); diff --text -u 'xemacs-21.5.1/src/insdel.c' 'xemacs-21.5.2/src/insdel.c' Index: ././src/insdel.c --- ././src/insdel.c Fri Apr 13 03:23:57 2001 +++ ././src/insdel.c Thu May 24 16:51:20 2001 @@ -1272,7 +1272,7 @@ if (*from_out >= 0 && *to_out >= 0 && *from_out > *to_out) { if (flags & GB_CHECK_ORDER) - signal_simple_error_2 ("start greater than end", from, to); + invalid_argument_2 ("start greater than end", from, to); else { Bufpos temp = *from_out; @@ -1371,7 +1371,7 @@ if (*from_out >= 0 && *to_out >= 0 && *from_out > *to_out) { if (flags & GB_CHECK_ORDER) - signal_simple_error_2 ("start greater than end", from, to); + invalid_argument_2 ("start greater than end", from, to); else { Bufpos temp = *from_out; @@ -1869,7 +1869,7 @@ if (BUF_Z (buf) - BUF_BEG (buf) + BUF_GAP_SIZE (buf) + increment > EMACS_INT_MAX) - error ("Maximum buffer size exceeded"); + out_of_memory ("Maximum buffer size exceeded", Qunbound); result = BUFFER_REALLOC (buf->text->beg, BI_BUF_Z (buf) - BI_BUF_BEG (buf) + @@ -2445,7 +2445,7 @@ /* Make sure that point-max won't exceed the size of an emacs int. */ if ((length + BUF_Z (buf)) > EMACS_INT_MAX) - error ("Maximum buffer size exceeded"); + out_of_memory ("Maximum buffer size exceeded", Qunbound); /* theoretically not necessary -- caller should GCPRO. #### buffer_insert_from_buffer_1() doesn't! */ diff --text -u 'xemacs-21.5.1/src/intl.c' 'xemacs-21.5.2/src/intl.c' Index: ././src/intl.c --- ././src/intl.c Fri Apr 13 03:23:57 2001 +++ ././src/intl.c Thu May 24 16:51:21 2001 @@ -304,7 +304,7 @@ /* defer-gettext is defined as a symbol because when it is used in menu specification strings, it is not evaluated as a function by menu_item_descriptor_to_widget_value(). */ - defsymbol (&Qdefer_gettext, "defer-gettext"); + DEFSYMBOL (Qdefer_gettext); DEFSUBR (Fignore_defer_gettext); DEFSUBR (Fgettext); diff --text -u 'xemacs-21.5.1/src/keymap.c' 'xemacs-21.5.2/src/keymap.c' Index: ././src/keymap.c --- ././src/keymap.c Sat May 5 19:54:28 2001 +++ ././src/keymap.c Thu May 24 16:51:21 2001 @@ -256,7 +256,7 @@ Lisp_Keymap *keymap = XKEYMAP (obj); char buf[200]; if (print_readably) - error ("printing unreadable object #", keymap->header.uid); + printing_unreadable_object ("#", keymap->header.uid); write_c_string ("#name)) { @@ -387,8 +387,7 @@ keymap = get_keymap (keymap, 1, 1); if (EQ (keymap, start_keymap)) { - signal_simple_error ("Cyclic keymap indirection", - start_keymap); + invalid_argument ("Cyclic keymap indirection", start_keymap); } } } @@ -586,7 +585,7 @@ Lisp_Object maps; if (XKEYMAP (def) == to_keymap) - signal_simple_error ("Cyclic keymap definition", def); + invalid_argument ("Cyclic keymap definition", def); for (maps = keymap_submaps (def); CONSP (maps); @@ -1277,16 +1276,16 @@ /* || (XCHAR (*keysym) >= 128 && XCHAR (*keysym) < 160) */) /* yuck! Can't make the above restriction; too many compatibility problems ... */ - signal_simple_error ("keysym char must be printable", *keysym); + invalid_argument ("keysym char must be printable", *keysym); /* #### This bites! I want to be able to write (control shift a) */ if (modifiers & XEMACS_MOD_SHIFT) - signal_simple_error + invalid_argument ("The `shift' modifier may not be applied to ASCII keysyms", spec); } else { - signal_simple_error ("Unknown keysym specifier", *keysym); + invalid_argument ("Unknown keysym specifier", *keysym); } if (SYMBOLP (*keysym)) @@ -1325,7 +1324,7 @@ !strcmp (name, "BS"))) #endif /* unused */ ) - signal_simple_error + invalid_argument ("Invalid (FSF Emacs) key format (see doc of define-key)", *keysym); @@ -1447,17 +1446,14 @@ break; } default: - signal_error (Qwrong_type_argument, - list2 (build_translated_string - ("unable to bind this type of event"), - spec)); + wtaerror ("unable to bind this type of event", spec); } } else if (SYMBOLP (spec)) { /* Be nice, allow = to mean (=) */ if (bucky_sym_to_bucky_bit (spec) != 0) - signal_simple_error ("Key is a modifier name", spec); + invalid_argument ("Key is a modifier name", spec); define_key_check_and_coerce_keysym (spec, &spec, 0); returned_value->keysym = spec; returned_value->modifiers = 0; @@ -1479,19 +1475,20 @@ if (!NILP (XCDR (rest))) { if (! modifier) - signal_simple_error ("Unknown modifier", keysym); + invalid_argument ("Unknown modifier", keysym); } else { if (modifier) - signal_simple_error ("Nothing but modifiers here", + sferror ("Nothing but modifiers here", spec); } rest = XCDR (rest); QUIT; } if (!NILP (rest)) - signal_simple_error ("List must be nil-terminated", spec); + signal_error (Qlist_formation_error, + "List must be nil-terminated", spec); define_key_check_and_coerce_keysym (spec, &keysym, modifiers); returned_value->keysym = keysym; @@ -1499,7 +1496,7 @@ } else { - signal_simple_error ("Unknown key-sequence specifier", + invalid_argument ("Unknown key-sequence specifier", spec); } } @@ -1518,7 +1515,7 @@ { Lisp_Object fn, arg; if (! NILP (Fcdr (Fcdr (list)))) - signal_simple_error ("Invalid menu event desc", list); + invalid_argument ("Invalid menu event desc", list); arg = Fcar (Fcdr (list)); if (SYMBOLP (arg)) fn = Qcall_interactively; @@ -1541,7 +1538,8 @@ EQ (raw_key.keysym, Qbutton5) || EQ (raw_key.keysym, Qbutton5up) || EQ (raw_key.keysym, Qbutton6) || EQ (raw_key.keysym, Qbutton6up) || EQ (raw_key.keysym, Qbutton7) || EQ (raw_key.keysym, Qbutton7up)) - error ("Mouse-clicks can't appear in saved keyboard macros."); + invalid_operation ("Mouse-clicks can't appear in saved keyboard macros", + Qunbound); XEVENT (event)->channel = Vselected_console; XEVENT (event)->event_type = key_press_event; @@ -1724,18 +1722,19 @@ } if (EQ (keys, new_keys)) - error_with_frob (mpc_binding, - "can't bind %s: %s has a non-keymap binding", - (char *) XSTRING_DATA (Fkey_description (keys)), - (char *) XSTRING_DATA (Fsingle_key_description - (Vmeta_prefix_char))); - else - error_with_frob (mpc_binding, - "can't bind %s: %s %s has a non-keymap binding", - (char *) XSTRING_DATA (Fkey_description (keys)), - (char *) XSTRING_DATA (Fkey_description (new_keys)), - (char *) XSTRING_DATA (Fsingle_key_description - (Vmeta_prefix_char))); + signal_ferror_with_frob (Qinvalid_operation, mpc_binding, + "can't bind %s: %s has a non-keymap binding", + (char *) XSTRING_DATA (Fkey_description (keys)), + (char *) XSTRING_DATA (Fsingle_key_description + (Vmeta_prefix_char))); + else + signal_ferror_with_frob (Qinvalid_operation, mpc_binding, + "can't bind %s: %s %s has a non-keymap binding", + (char *) XSTRING_DATA (Fkey_description (keys)), + (char *) XSTRING_DATA (Fkey_description + (new_keys)), + (char *) XSTRING_DATA (Fsingle_key_description + (Vmeta_prefix_char))); } DEFUN ("define-key", Fdefine_key, 3, 3, 0, /* @@ -1921,7 +1920,7 @@ XKEYMAP (keymap)->table, Qnil); if (!NILP (meta_map) && keymap_fullness (meta_map) != 0) - signal_simple_error_2 + invalid_operation_2 ("Map contains meta-bindings, can't bind", Fsingle_key_description (Vmeta_prefix_char), keymap); NUNGCPRO; @@ -1977,7 +1976,7 @@ keymap_store (keymap, &raw_key1, cmd); } if (NILP (Fkeymapp (cmd))) - signal_simple_error_2 ("Invalid prefix keys in sequence", + sferror_2 ("Invalid prefix keys in sequence", c, keys); if (ascii_hack && !NILP (raw_key2.keysym) && @@ -3278,7 +3277,7 @@ #endif strcpy (bufp, (char *) string_data (XSYMBOL (keysym)->name)); if (!NILP (XCDR (rest))) - signal_simple_error ("Invalid key description", + invalid_argument ("Invalid key description", key); } } @@ -3312,8 +3311,9 @@ Lisp_Object ch = Fevent_to_character (chr, Qnil, Qnil, Qt); if (NILP (ch)) return - signal_simple_continuable_error - ("character has no ASCII equivalent", Fcopy_event (chr, Qnil)); + signal_continuable_error + (Qinvalid_argument, + "character has no ASCII equivalent", Fcopy_event (chr, Qnil)); chr = ch; } diff --text -u 'xemacs-21.5.1/src/keymap.h' 'xemacs-21.5.2/src/keymap.h' Index: ././src/keymap.h --- ././src/keymap.h Fri Apr 13 03:23:58 2001 +++ ././src/keymap.h Mon Jun 18 16:10:22 2001 @@ -29,6 +29,7 @@ DECLARE_LRECORD (keymap, Lisp_Keymap); #define XKEYMAP(x) XRECORD (x, keymap, Lisp_Keymap) #define XSETKEYMAP(x, p) XSETRECORD (x, p, keymap) +#define wrap_keymap(p) wrap_record (p, keymap) #define KEYMAPP(x) RECORDP (x, keymap) #define CHECK_KEYMAP(x) CHECK_RECORD (x, keymap) #define CONCHECK_KEYMAP(x) CONCHECK_RECORD (x, keymap) diff --text -u 'xemacs-21.5.1/src/libsst.c' 'xemacs-21.5.2/src/libsst.c' Index: ././src/libsst.c --- ././src/libsst.c Fri Apr 13 03:23:58 2001 +++ ././src/libsst.c Thu May 24 16:51:21 2001 @@ -15,21 +15,18 @@ /* Synched up with: Not in FSF. */ -#ifdef emacs +/* This file Mule-ized by Ben Wing, 5-15-01. */ + #include #include "lisp.h" -#endif -#include -#include -#include - -#ifdef HAVE_UNISTD_H -#include -#endif +#include "sound.h" #include "libsst.h" +#include "sysfile.h" + + #define AUDBUF 1024 int @@ -38,12 +35,12 @@ { int fd, i, gr, ger, gx; struct audio_ioctl ai; - char *ep; + Extbyte *ep; fd = open( "/dev/audio", O_RDWR ); if ( fd < 0 ) { - perror( "sst_open: open /dev/audio" ); + sound_perror( "sst_open: open /dev/audio" ); return( fd ); } @@ -53,7 +50,7 @@ i = AUDBUF; if ( ioctl( fd, AUDIOSETQSIZE, &i ) < 0 ) { - perror( "sst_open: SETQSIZE" ); + sound_perror( "sst_open: SETQSIZE" ); return( fd ); } #endif /* AUDIOSETQSIZE */ @@ -67,7 +64,7 @@ play_level = atoi( ep ); if ( play_level < 0 || play_level > 99 ) { - warn( "sst_open: SST_PLAY must be between 0 and 99" ); + sound_warn( "sst_open: SST_PLAY must be between 0 and 99" ); return( -1 ); } } @@ -80,7 +77,7 @@ record_level = atoi( ep ); if ( record_level < 0 || record_level > 99 ) { - warn( "sst_open: SST_RECORD must be between 0 and 99" ); + sound_warn( "sst_open: SST_RECORD must be between 0 and 99" ); return( -1 ); } } @@ -110,7 +107,7 @@ ai.control = AUDIO_MAP_MMR2; if ( ioctl( fd, AUDIOGETREG, &ai ) < 0 ) { - perror( "sst_open: GETREG MMR2" ); + sound_perror( "sst_open: GETREG MMR2" ); return( -1 ); } if ( (ep = getenv( "SST_EARPHONES" )) != NULL ) @@ -119,7 +116,7 @@ ai.data[0] |= AUDIO_MMR2_BITS_LS; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_open: SETREG MMR2" ); + sound_perror( "sst_open: SETREG MMR2" ); return( fd ); } @@ -136,13 +133,13 @@ ai.data[0] = 0; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_close: SETREG MMR1" ); + sound_perror( "sst_close: SETREG MMR1" ); } ai.control = AUDIO_MAP_MMR2; ai.data[0] = 0; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_close: SETREG MMR2" ); + sound_perror( "sst_close: SETREG MMR2" ); } close( fd ); } @@ -150,7 +147,7 @@ /* These are tables of values to be loaded into various gain registers. */ -static unsigned char ger_table[][2] = { +static UChar_Binary ger_table[][2] = { 0xaa, 0xaa, /* -10db */ 0x79, 0xac, 0x41, 0x99, @@ -183,7 +180,7 @@ }; -static unsigned char gr_gx_table[][2] = { +static UChar_Binary gr_gx_table[][2] = { 0x8b, 0x7c, /* -18db */ 0x8b, 0x35, 0x8b, 0x24, @@ -225,9 +222,9 @@ if ( ( value < -10 ) || ( value > 18 ) ) { - char buf [255]; + Extbyte buf [255]; sprintf (buf, "sst_set_ger: GER %d out of range", value); - warn(buf); + sound_warn(buf); return; } @@ -238,18 +235,18 @@ if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_set_ger: SETREG GER" ); + sound_perror( "sst_set_ger: SETREG GER" ); } ai.control = AUDIO_MAP_MMR1; if ( ioctl( fd, AUDIOGETREG, &ai ) < 0 ) { - perror( "sst_set_ger: GETREG MMR1" ); + sound_perror( "sst_set_ger: GETREG MMR1" ); } ai.data[0] |= AUDIO_MMR1_BITS_LOAD_GER; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_set_ger: SETREG MMR1" ); + sound_perror( "sst_set_ger: SETREG MMR1" ); } } @@ -261,9 +258,9 @@ if ( ( value < -18 ) || ( value > 12 ) ) { - char buf [255]; + Extbyte buf [255]; sprintf (buf, "sst_set_gr: GR %d out of range", value); - warn (buf); + sound_warn (buf); return; } @@ -273,18 +270,18 @@ if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_set_gr: SETREG GR" ); + sound_perror( "sst_set_gr: SETREG GR" ); } ai.control = AUDIO_MAP_MMR1; if ( ioctl( fd, AUDIOGETREG, &ai ) < 0 ) { - perror( "sst_set_gr: GETREG MMR1" ); + sound_perror( "sst_set_gr: GETREG MMR1" ); } ai.data[0] |= AUDIO_MMR1_BITS_LOAD_GR; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_set_gr: SETREG MMR1" ); + sound_perror( "sst_set_gr: SETREG MMR1" ); } } @@ -293,12 +290,12 @@ int fd, value; { struct audio_ioctl ai; - char buf [255]; + Extbyte buf [255]; if ( ( value < -18 ) || ( value > 12 ) ) { sprintf (buf, "sst_set_gx: GX %d out of range", value); - warn (buf); + sound_warn (buf); return; } @@ -311,18 +308,18 @@ if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_set_gx: SETREG GX" ); + sound_perror( "sst_set_gx: SETREG GX" ); } ai.control = AUDIO_MAP_MMR1; if ( ioctl( fd, AUDIOGETREG, &ai ) < 0 ) { - perror( "sst_set_gx: GETREG MMR1" ); + sound_perror( "sst_set_gx: GETREG MMR1" ); } ai.data[0] |= AUDIO_MMR1_BITS_LOAD_GX; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_set_gx: SETREG MMR1" ); + sound_perror( "sst_set_gx: SETREG MMR1" ); } } @@ -330,10 +327,10 @@ sst_tones( fd, dhz1, dhz2, thz, rhz, usec ) int fd, dhz1, dhz2, thz, rhz, usec; { - char buf [255]; + Extbyte buf [255]; struct audio_ioctl ai; int dval1, dval2, tval, rval; - unsigned char oldmmr2, newmmr2; + UChar_Binary oldmmr2, newmmr2; if ( dhz1 == 0 ) dval1 = 0; @@ -343,7 +340,7 @@ if ( ( dval1 < 1 ) || ( dval1 > 255 ) ) { sprintf(buf, "sst_tones: dhz1 %d out of range", dhz1 ); - warn (buf); + sound_warn (buf); return; } } @@ -356,7 +353,7 @@ if ( ( dval2 < 1 ) || ( dval2 > 255 ) ) { sprintf(buf, "sst_tones: dhz2 %d out of range", dhz2 ); - warn (buf); + sound_warn (buf); return; } } @@ -369,7 +366,7 @@ if ( ( tval < 1 ) || ( tval > 255 ) ) { sprintf(buf, "sst_tones: thz %d out of range", thz ); - warn (buf); + sound_warn (buf); return; } } @@ -382,7 +379,7 @@ if ( ( rval < 1 ) || ( rval > 255 ) ) { sprintf(buf, "sst_tones: rhz %d out of range", dhz2 ); - warn (buf); + sound_warn (buf); return; } } @@ -390,21 +387,21 @@ if ( ( dval1 != 0 || dval2 != 0 ) && ( tval != 0 || rval != 0 ) ) { sprintf(buf, "sst_tones: cannot use DTMF and TONE or RINGER at the same time", dhz2 ); - warn (buf); + sound_warn (buf); return; } if ( tval != 0 && rval != 0 ) { sprintf(buf, "sst_tones: cannot use TONE and RINGER at the same time", dhz2 ); - warn (buf); + sound_warn (buf); return; } ai.control = AUDIO_MAP_MMR2; if ( ioctl( fd, AUDIOGETREG, &ai ) < 0 ) { - perror( "sst_tones: GETREG MMR2" ); + sound_perror( "sst_tones: GETREG MMR2" ); } oldmmr2 = newmmr2 = ai.data[0]; @@ -416,7 +413,7 @@ ai.data[1] = dval2; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_tones: SETREG FTGR" ); + sound_perror( "sst_tones: SETREG FTGR" ); } } @@ -428,7 +425,7 @@ ai.data[1] = 0; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_tones: SETREG FTGR" ); + sound_perror( "sst_tones: SETREG FTGR" ); } } @@ -440,7 +437,7 @@ ai.data[1] = 0; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_tones: SETREG FTGR" ); + sound_perror( "sst_tones: SETREG FTGR" ); } } @@ -448,7 +445,7 @@ ai.data[0] = newmmr2; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_tones: SETREG MMR2" ); + sound_perror( "sst_tones: SETREG MMR2" ); } usleep( usec ); @@ -456,16 +453,16 @@ ai.data[0] = oldmmr2; if ( ioctl( fd, AUDIOSETREG, &ai ) < 0 ) { - perror( "sst_tones: SETREG MMR2" ); + sound_perror( "sst_tones: SETREG MMR2" ); } } void sst_dtmf( fd, dial, usecper, usecpause ) int fd, usecper, usecpause; -char *dial; +Extbyte *dial; { - char *cp; + Extbyte *cp; for ( cp = dial; *cp != '\0'; cp++ ) { @@ -495,9 +492,9 @@ default: { - char buf [255]; + Extbyte buf [255]; sprintf( buf, "sst_dtmf: unknown dialing code '%c'", *cp ); - warn (buf); + sound_warn (buf); } } usleep( usecpause ); diff --text -u 'xemacs-21.5.1/src/libsst.h' 'xemacs-21.5.2/src/libsst.h' Index: ././src/libsst.h --- ././src/libsst.h Fri Apr 13 03:23:58 2001 +++ ././src/libsst.h Thu May 24 16:51:21 2001 @@ -12,6 +12,8 @@ /* Synched up with: Not in FSF. */ +/* This file Mule-ized by Ben Wing, 5-15-01. */ + #ifndef INCLUDED_libsst_h_ #define INCLUDED_libsst_h_ @@ -39,15 +41,5 @@ void sst_tones( /* int fd, dhz1, dhz2, thz, rhz, usec */ ); void sst_dtmf( /* int fd, char *dial, int usecper, usecpause */ ); - -#ifdef emacs -extern char *strerror (); -extern void message (); -# define perror(string) \ - message("audio: %s, %s", string, strerror (errno)) -# define warn(str) message ("audio: %s", GETTEXT (str)) -#else /* !emacs */ -# define warn(str) fprintf (stderr, "%s\n", (str)) -#endif /* emacs */ #endif /* INCLUDED_libsst_h_ */ diff --text -u 'xemacs-21.5.1/src/linuxplay.c' 'xemacs-21.5.2/src/linuxplay.c' Index: ././src/linuxplay.c --- ././src/linuxplay.c Fri Apr 13 03:23:58 2001 +++ ././src/linuxplay.c Sun Jun 10 19:42:31 2001 @@ -46,6 +46,8 @@ /* Synched up with: Not in FSF. */ +/* This file Mule-ized by Ben Wing, 5-15-01. */ + /* XEmacs beta testers say: undef this by default. */ #undef NOVOLUMECTRLFORMULAW /* Changing the volume for uLaw-encoded samples sounds very poor; possibly, @@ -53,35 +55,18 @@ driver, so undefine this symbol at your discretion */ -#ifdef HAVE_CONFIG_H +#define DONT_ENCAPSULATE + #include -#endif +#include "lisp.h" #include "miscplay.h" -#include "nativesound.h" +#include "sound.h" -#include -#include -#include SOUNDCARD_H_FILE /* Path computed by configure */ -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef LINUXPLAYSTANDALONE -#define perror(str) fprintf(stderr,"audio: %s %s\n",str,strerror(errno)); -#define warn(str) fprintf(stderr,"audio: %s\n",str); -#else -#include "lisp.h" #include "syssignal.h" #include "sysfile.h" -#define perror(str) message("audio: %s, %s ",str,strerror(errno)) -#define warn(str) message("audio: %s ",GETTEXT(str)) -#endif +#include "systty.h" /* for sys/ioctl.h */ +#include SOUNDCARD_H_FILE /* Path computed by configure */ static SIGTYPE (*sighup_handler) (int); static SIGTYPE (*sigint_handler) (int); @@ -89,7 +74,7 @@ static int mix_fd; static int audio_vol; static int audio_fd; -static char *audio_dev = "/dev/dsp"; +static Char_ASCII *audio_dev = "/dev/dsp"; /* Intercept SIGINT and SIGHUP in order to close the audio and mixer devices before terminating sound output; this requires reliable @@ -123,16 +108,17 @@ others, too. Thus we do quite a lot of double checking; actually most of this is not needed right now, but it will come in handy, if the kernel's sounddriver ever changes or if third-party sounddrivers are used. */ -static int audio_init(int mixx_fd, int auddio_fd, int fmt, int speed, - int tracks, int *volume, - size_t (**sndcnv) (void **, size_t *sz, void **)) +static int +audio_init(int mixx_fd, int auddio_fd, int fmt, int speed, + int tracks, int *volume, + size_t (**sndcnv) (void **, size_t *sz, void **)) { int i,the_speed,the_stereo,the_fmt; *sndcnv = sndcnvnop; if (ioctl(auddio_fd,SNDCTL_DSP_SYNC,NULL) < 0) { - perror("SNDCTL_DSP_SYNC"); + sound_perror("SNDCTL_DSP_SYNC"); return(0); } /* Initialize sound hardware with preferred parameters */ @@ -142,7 +128,7 @@ the_fmt = fmt; if(ioctl(audio_fd,SNDCTL_DSP_SETFMT,&the_fmt) < 0) { - perror("SNDCTL_DSP_SETFMT"); + sound_perror("SNDCTL_DSP_SETFMT"); return(0); } @@ -152,19 +138,19 @@ if (((i=fmt=AFMT_U8),ioctl(audio_fd,SNDCTL_DSP_SETFMT,&i)) < 0 || fmt != i || ioctl(audio_fd,SNDCTL_DSP_SETFMT,&the_fmt) < 0 || fmt != the_fmt) { - perror("SNDCTL_DSP_SETFMT"); + sound_perror("SNDCTL_DSP_SETFMT"); return(0); } } else if (fmt == AFMT_MU_LAW && the_fmt == AFMT_U8 ) { /* the kernel will convert for us */ } else { - perror("SNDCTL_DSP_SETFMT"); + sound_perror("SNDCTL_DSP_SETFMT"); return(0); } } else if (fmt == AFMT_S8) { *sndcnv = sndcnv2unsigned; if (((i=fmt=AFMT_U8),ioctl(audio_fd,SNDCTL_DSP_SETFMT,&i)) < 0 || fmt != i || ioctl(audio_fd,SNDCTL_DSP_SETFMT,&the_fmt) < 0 || fmt != the_fmt) { - perror("SNDCTRL_DSP_SETFMT"); + sound_perror("SNDCTRL_DSP_SETFMT"); return(0); } } /* The PCSP driver does not support reading of the sampling rate via the @@ -193,11 +179,11 @@ the_fmt == AFMT_U8 ? sndcnv8U_2mono : the_fmt == AFMT_MU_LAW ? sndcnvULaw_2mono : NULL; if (*sndcnv == NULL) { /* this should not happen */ - perror("SNDCTL_DSP_STEREO"); + sound_perror("SNDCTL_DSP_STEREO"); return(0); } /* Switch to mono mode */ if (((i = 0),ioctl(audio_fd,SNDCTL_DSP_STEREO,&i)) < 0 || i) { - perror("SNDCTL_DSP_STEREO"); + sound_perror("SNDCTL_DSP_STEREO"); return(0); } /* Now double check that everything is set as expected */ if (((i = AFMT_QUERY),ioctl(audio_fd,SNDCTL_DSP_SETFMT,&i)) < 0 || @@ -210,18 +196,18 @@ i != 1)) { /* There was no way that we could set the soundcard to a meaningful mode */ - perror("SNDCTL_DSP_SETFMT and SNDCTL_DSP_STEREO"); + sound_perror("SNDCTL_DSP_SETFMT and SNDCTL_DSP_STEREO"); return(0); } } else { /* Somebody set the soundcard to stereo even though we requested mono; this should not happen... */ if (((i = the_stereo = tracks),ioctl(audio_fd,SNDCTL_DSP_STEREO,&i))<0 || i != the_stereo-1) { - perror("SNDCTL_DSP_STEREO"); + sound_perror("SNDCTL_DSP_STEREO"); return(0); } if (((i = AFMT_QUERY),ioctl(audio_fd,SNDCTL_DSP_SETFMT,&i)) < 0 || i != the_fmt) { - perror("SNDCTL_DSP_SETFMT"); + sound_perror("SNDCTL_DSP_SETFMT"); return(0); } } } /* Fail if deviations from desired sampling frequency are too big */ @@ -230,9 +216,9 @@ "the_speed" is still unchanged */ ioctl(audio_fd,SOUND_PCM_READ_RATE,&the_speed); if (speed*14 < the_speed*10 || speed*6 > the_speed*10) { - char buffer[256]; + Extbyte buffer[256]; sprintf(buffer,"SNDCTL_DSP_SPEED (req: %d, rtn: %d)",speed,the_speed); - perror(buffer); + sound_perror(buffer); return(0); } /* Use the mixer device for setting the playback volume */ @@ -282,16 +268,17 @@ Returns 1 on succes. 0 otherwise. */ -static int linux_play_data_or_file(int fd,unsigned char *data, - int length,int volume) +static int +linux_play_data_or_file(int fd, UChar_Binary *data, + int length, int volume) { size_t (*parsesndfile)(void **dayta,size_t *sz,void **outbuf); size_t (*sndcnv)(void **dayta,size_t *sz,void **); fmtType ffmt; int fmt,speed,tracks; - unsigned char *pptr,*optr,*cptr,*sptr; + UChar_Binary *pptr,*optr,*cptr,*sptr; int wrtn,rrtn,crtn,prtn; - unsigned char sndbuf[SNDBUFSZ]; + UChar_Binary sndbuf[SNDBUFSZ]; /* We need to read at least the header information before we can start doing anything */ @@ -308,7 +295,7 @@ ffmt = analyze_format(data,&fmt,&speed,&tracks,&parsesndfile); if (ffmt != fmtRaw && ffmt != fmtSunAudio && ffmt != fmtWave) { - warn("Unsupported file format (neither RAW, nor Sun/DECAudio, nor WAVE)"); + sound_warn("Unsupported file format (neither RAW, nor Sun/DECAudio, nor WAVE)"); return 0; } /* The VoxWare-SDK discourages opening /dev/audio; opening /dev/dsp and @@ -316,7 +303,7 @@ if ((audio_fd=open(audio_dev, O_WRONLY | O_NONBLOCK, 0)) < 0) { /* JV. Much too verbose. In addition this can crash. See NOTE: in Fplay_sound - perror(audio_dev); */ + sound_perror(audio_dev); */ if (mix_fd > 0 && mix_fd != audio_fd) { close(mix_fd); mix_fd = -1; } return 0; } @@ -324,8 +311,8 @@ this could lead to problems, when multiple sound cards are installed */ mix_fd = audio_fd; - sighup_handler = signal(SIGHUP, sighandler); - sigint_handler = signal(SIGINT, sighandler); + sighup_handler = EMACS_SIGNAL (SIGHUP, sighandler); + sigint_handler = EMACS_SIGNAL (SIGINT, sighandler); if (!audio_init(mix_fd,audio_fd,fmt,speed,tracks,&volume,&sndcnv)) goto END_OF_PLAY; @@ -344,18 +331,18 @@ (void **)&sptr)) > 0; ) { for (;;) { if ((wrtn = write(audio_fd,sptr,crtn)) < 0) { - perror("write"); goto END_OF_PLAY; } + sound_perror("write"); goto END_OF_PLAY; } else if (wrtn) break; else if (ioctl(audio_fd,SNDCTL_DSP_SYNC,NULL) < 0) { - perror("SNDCTL_DSP_SYNC"); goto END_OF_PLAY; } } + sound_perror("SNDCTL_DSP_SYNC"); goto END_OF_PLAY; } } if (wrtn != crtn) { - char buf[255]; + Extbyte buf[255]; sprintf(buf,"play: crtn = %d, wrtn = %d",crtn,wrtn); - warn(buf); + sound_warn(buf); goto END_OF_PLAY; } } if (fd >= 0) { if ((rrtn = read(fd,sndbuf,SNDBUFSZ)) < 0) { - perror("read"); goto END_OF_PLAY; } } + sound_perror("read"); goto END_OF_PLAY; } } else break; } while (rrtn > 0); @@ -370,8 +357,8 @@ ioctl(audio_fd,SNDCTL_DSP_SYNC,NULL); ioctl(audio_fd,SNDCTL_DSP_RESET,NULL); - signal(SIGHUP,sighup_handler); - signal(SIGINT,sigint_handler); + EMACS_SIGNAL (SIGHUP,sighup_handler); + EMACS_SIGNAL (SIGINT,sigint_handler); if (mix_fd > 0) { if (audio_vol >= 0) { @@ -389,12 +376,13 @@ /* Call "linux_play_data_or_file" with the appropriate parameters for playing a soundfile */ -void play_sound_file (char *sound_file, int volume) +void +play_sound_file (Extbyte *sound_file, int volume) { int fd; if ((fd=open(sound_file,O_RDONLY,0)) < 0) { - perror(sound_file); + sound_perror(sound_file); return; } linux_play_data_or_file(fd,NULL,0,volume); close(fd); @@ -403,7 +391,8 @@ /* Call "linux_play_data_or_file" with the appropriate parameters for playing pre-loaded data */ -int play_sound_data (unsigned char *data, int length, int volume) +int +play_sound_data (UChar_Binary *data, int length, int volume) { return linux_play_data_or_file(-1,data,length,volume); } diff --text -u 'xemacs-21.5.1/src/lisp-disunion.h' 'xemacs-21.5.2/src/lisp-disunion.h' Index: ././src/lisp-disunion.h --- ././src/lisp-disunion.h Fri Apr 13 03:23:58 2001 +++ ././src/lisp-disunion.h Mon Jun 18 16:10:22 2001 @@ -78,7 +78,7 @@ typedef EMACS_INT Lisp_Object; #define Lisp_Type_Int_Bit (Lisp_Type_Int_Even & Lisp_Type_Int_Odd) -#define wrap_object(ptr) ((Lisp_Object) (ptr)) +#define wrap_pointer_1(ptr) ((Lisp_Object) (ptr)) #define make_int(x) ((Lisp_Object) (((x) << INT_GCBITS) | Lisp_Type_Int_Bit)) #define make_char(x) ((Lisp_Object) (((x) << GCBITS) | Lisp_Type_Char)) #define VALMASK (((1UL << VALBITS) - 1UL) << GCTYPEBITS) @@ -98,7 +98,7 @@ #define EQ(x,y) ((x) == (y)) #define XSETINT(var, value) ((void) ((var) = make_int (value))) #define XSETCHAR(var, value) ((void) ((var) = make_char (value))) -#define XSETOBJ(var, value) ((void) ((var) = wrap_object (value))) +#define XSETOBJ(var, value) ((void) ((var) = wrap_pointer_1 (value))) /* Convert between a (void *) and a Lisp_Object, as when the Lisp_Object is passed to a toolkit callback function */ diff --text -u 'xemacs-21.5.1/src/lisp-union.h' 'xemacs-21.5.2/src/lisp-union.h' Index: ././src/lisp-union.h --- ././src/lisp-union.h Fri Apr 13 03:23:58 2001 +++ ././src/lisp-union.h Mon Jun 18 16:10:23 2001 @@ -118,9 +118,9 @@ return obj; } -INLINE_HEADER Lisp_Object wrap_object (void *ptr); +INLINE_HEADER Lisp_Object wrap_pointer_1 (void *ptr); INLINE_HEADER Lisp_Object -wrap_object (void *ptr) +wrap_pointer_1 (void *ptr) { Lisp_Object obj; XSETOBJ (obj, ptr); diff --text -u 'xemacs-21.5.1/src/lisp.h' 'xemacs-21.5.2/src/lisp.h' Index: ././src/lisp.h --- ././src/lisp.h Sat May 5 19:54:31 2001 +++ ././src/lisp.h Mon Jun 18 16:10:23 2001 @@ -318,18 +318,28 @@ be interpreted as text. [A fifth possible type "e) a general pointer to memory" should be replaced with void *.] Using these more specific types rather than the general ones helps avoid the confusions that - occur when the semantics of a char * argument being studied are unclear. */ + occur when the semantics of a char * argument being studied are unclear. -typedef unsigned char UChar; + Note that these typedefs are purely for documentation purposes; from + the C code's perspective, they are exactly equivalent to `char *', + `unsigned char *', etc., so you can freely use them with library + functions declared as such. */ /* The data representing the text in a buffer is logically a set of Bufbytes, declared as follows. */ -typedef UChar Bufbyte; +typedef unsigned char Bufbyte; -/* Explicitly signed or unsigned versions: */ -typedef UChar UBufbyte; -typedef char SBufbyte; +/* The following should be used when you are working with internal data + but for whatever reason need to have it declared a "char *". Examples + are function arguments whose values are most commonly literal strings, + or where you have to apply a stdlib string function to internal data. + + In general, you should avoid this where possible and use Bufbyte instead, + for consistency. For example, the new Mule workspace contains + Bufbyte versions of the stdlib string functions. */ + +typedef char CBufbyte; /* The data representing a string in "external" format (binary or any external encoding) is logically a set of Extbytes, declared as @@ -341,13 +351,14 @@ /* A byte in a string in binary format: */ typedef char Char_Binary; -typedef UChar UChar_Binary; +typedef signed char SChar_Binary; +typedef unsigned char UChar_Binary; /* A byte in a string in entirely US-ASCII format: (Nothing outside the range 00 - 7F) */ typedef char Char_ASCII; -typedef UChar UChar_ASCII; +typedef unsigned char UChar_ASCII; /* To the user, a buffer is made up of characters, declared as follows. @@ -520,7 +531,7 @@ ERROR_ME, ERROR_ME_NOT, ERROR_ME_WARN -} Error_behavior; +} Error_Behavior; #define ERRB_EQ(a, b) ((a) == (b)) @@ -532,11 +543,11 @@ typedef struct _error_behavior_struct_ { int really_unlikely_name_to_have_accidentally_in_a_non_errb_structure; -} Error_behavior; +} Error_Behavior; -extern Error_behavior ERROR_ME; -extern Error_behavior ERROR_ME_NOT; -extern Error_behavior ERROR_ME_WARN; +extern Error_Behavior ERROR_ME; +extern Error_Behavior ERROR_ME_NOT; +extern Error_Behavior ERROR_ME_WARN; #define ERRB_EQ(a, b) \ ((a).really_unlikely_name_to_have_accidentally_in_a_non_errb_structure == \ @@ -581,7 +592,7 @@ #define INT_VALBITS (BITS_PER_EMACS_INT - INT_GCBITS) #define VALBITS (BITS_PER_EMACS_INT - GCBITS) -#define EMACS_INT_MAX ((EMACS_INT) ((1UL << INT_VALBITS) -1UL)) +#define EMACS_INT_MAX ((EMACS_INT) ((1UL << (INT_VALBITS - 1)) -1UL)) #define EMACS_INT_MIN (-(EMACS_INT_MAX) - 1) #ifdef USE_UNION_TYPE @@ -665,6 +676,7 @@ DECLARE_LRECORD (cons, Lisp_Cons); #define XCONS(x) XRECORD (x, cons, Lisp_Cons) #define XSETCONS(x, p) XSETRECORD (x, p, cons) +#define wrap_cons(p) wrap_record (p, cons) #define CONSP(x) RECORDP (x, cons) #define CHECK_CONS(x) CHECK_RECORD (x, cons) #define CONCHECK_CONS(x) CONCHECK_RECORD (x, cons) @@ -1152,6 +1164,7 @@ DECLARE_LRECORD (string, Lisp_String); #define XSTRING(x) XRECORD (x, string, Lisp_String) #define XSETSTRING(x, p) XSETRECORD (x, p, string) +#define wrap_string(p) wrap_record (p, string) #define STRINGP(x) RECORDP (x, string) #define CHECK_STRING(x) CHECK_RECORD (x, string) #define CONCHECK_STRING(x) CONCHECK_RECORD (x, string) @@ -1243,6 +1256,7 @@ DECLARE_LRECORD (vector, Lisp_Vector); #define XVECTOR(x) XRECORD (x, vector, Lisp_Vector) #define XSETVECTOR(x, p) XSETRECORD (x, p, vector) +#define wrap_vector(p) wrap_record (p, vector) #define VECTORP(x) RECORDP (x, vector) #define CHECK_VECTOR(x) CHECK_RECORD (x, vector) #define CONCHECK_VECTOR(x) CONCHECK_RECORD (x, vector) @@ -1281,6 +1295,7 @@ DECLARE_LRECORD (bit_vector, Lisp_Bit_Vector); #define XBIT_VECTOR(x) XRECORD (x, bit_vector, Lisp_Bit_Vector) #define XSETBIT_VECTOR(x, p) XSETRECORD (x, p, bit_vector) +#define wrap_bit_vector(p) wrap_record (p, bit_vector) #define BIT_VECTORP(x) RECORDP (x, bit_vector) #define CHECK_BIT_VECTOR(x) CHECK_RECORD (x, bit_vector) #define CONCHECK_BIT_VECTOR(x) CONCHECK_RECORD (x, bit_vector) @@ -1346,6 +1361,7 @@ DECLARE_LRECORD (symbol, Lisp_Symbol); #define XSYMBOL(x) XRECORD (x, symbol, Lisp_Symbol) #define XSETSYMBOL(x, p) XSETRECORD (x, p, symbol) +#define wrap_symbol(p) wrap_record (p, symbol) #define SYMBOLP(x) RECORDP (x, symbol) #define CHECK_SYMBOL(x) CHECK_RECORD (x, symbol) #define CONCHECK_SYMBOL(x) CONCHECK_RECORD (x, symbol) @@ -1375,6 +1391,7 @@ DECLARE_LRECORD (subr, Lisp_Subr); #define XSUBR(x) XRECORD (x, subr, Lisp_Subr) #define XSETSUBR(x, p) XSETRECORD (x, p, subr) +#define wrap_subr(p) wrap_record (p, subr) #define SUBRP(x) RECORDP (x, subr) #define CHECK_SUBR(x) CHECK_RECORD (x, subr) #define CONCHECK_SUBR(x) CONCHECK_RECORD (x, subr) @@ -1401,6 +1418,7 @@ DECLARE_LRECORD (marker, Lisp_Marker); #define XMARKER(x) XRECORD (x, marker, Lisp_Marker) #define XSETMARKER(x, p) XSETRECORD (x, p, marker) +#define wrap_marker(p) wrap_record (p, marker) #define MARKERP(x) RECORDP (x, marker) #define CHECK_MARKER(x) CHECK_RECORD (x, marker) #define CONCHECK_MARKER(x) CONCHECK_RECORD (x, marker) @@ -1454,6 +1472,7 @@ DECLARE_LRECORD (float, Lisp_Float); #define XFLOAT(x) XRECORD (x, float, Lisp_Float) #define XSETFLOAT(x, p) XSETRECORD (x, p, float) +#define wrap_float(p) wrap_record (p, float) #define FLOATP(x) RECORDP (x, float) #define CHECK_FLOAT(x) CHECK_RECORD (x, float) #define CONCHECK_FLOAT(x) CONCHECK_RECORD (x, float) @@ -1590,7 +1609,7 @@ { Lisp_Object keyword; int (*validate) (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb); + Error_Behavior errb); }; typedef struct @@ -1603,7 +1622,7 @@ { Lisp_Object type; structure_keyword_entry_dynarr *keywords; - int (*validate) (Lisp_Object data, Error_behavior errb); + int (*validate) (Lisp_Object data, Error_Behavior errb); Lisp_Object (*instantiate) (Lisp_Object data); }; @@ -1615,14 +1634,14 @@ struct structure_type *define_structure_type (Lisp_Object type, int (*validate) (Lisp_Object data, - Error_behavior errb), + Error_Behavior errb), Lisp_Object (*instantiate) (Lisp_Object data)); void define_structure_type_keyword (struct structure_type *st, Lisp_Object keyword, int (*validate) (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb)); + Error_Behavior errb)); /*---------------------------- weak lists ------------------------------*/ @@ -1653,6 +1672,7 @@ DECLARE_LRECORD (weak_list, struct weak_list); #define XWEAK_LIST(x) XRECORD (x, weak_list, struct weak_list) #define XSETWEAK_LIST(x, p) XSETRECORD (x, p, weak_list) +#define wrap_weak_list(p) wrap_record (p, weak_list) #define WEAK_LISTP(x) RECORDP (x, weak_list) #define CHECK_WEAK_LIST(x) CHECK_RECORD (x, weak_list) #define CONCHECK_WEAK_LIST(x) CONCHECK_RECORD (x, weak_list) @@ -1678,6 +1698,7 @@ DECLARE_LRECORD (lcrecord_list, struct lcrecord_list); #define XLCRECORD_LIST(x) XRECORD (x, lcrecord_list, struct lcrecord_list) #define XSETLCRECORD_LIST(x, p) XSETRECORD (x, p, lcrecord_list) +#define wrap_lcrecord_list(p) wrap_record (p, lcrecord_list) #define LCRECORD_LISTP(x) RECORDP (x, lcrecord_list) /* #define CHECK_LCRECORD_LIST(x) CHECK_RECORD (x, lcrecord_list) Lcrecord lists should never escape to the Lisp level, so @@ -2147,6 +2168,8 @@ extern Lisp_Object_ptr_dynarr *staticpros; +void register_post_gc_action (void (*fun) (void *), void *arg); + /* Call staticpro (&var) to protect static variable `var'. */ void staticpro (Lisp_Object *); @@ -2163,7 +2186,7 @@ /* dump_add_opaque (&var, size) dumps the opaque static structure `var'. */ #ifdef PDUMP -void dump_add_opaque (void *, size_t); +void dump_add_opaque (const void *, size_t); #else #define dump_add_opaque(varaddr,size) DO_NOTHING #endif @@ -2322,9 +2345,9 @@ extern EMACS_INT gc_generation_number[1]; int c_readonly (Lisp_Object); int lisp_readonly (Lisp_Object); -Lisp_Object build_string (const char *); -Lisp_Object build_ext_string (const char *, Lisp_Object); -Lisp_Object build_translated_string (const char *); +Lisp_Object build_string (const CBufbyte *); +Lisp_Object build_ext_string (const Extbyte *, Lisp_Object); +Lisp_Object build_translated_string (const CBufbyte *); Lisp_Object make_string (const Bufbyte *, Bytecount); Lisp_Object make_ext_string (const Extbyte *, EMACS_INT, Lisp_Object); Lisp_Object make_uninit_string (Bytecount); @@ -2360,6 +2383,10 @@ extern int find_file_compare_truenames; extern int find_file_use_truenames; +/* Defined in bytecode.c */ +DECLARE_DOESNT_RETURN (invalid_byte_code + (const CBufbyte *reason, Lisp_Object frob)); + /* Defined in callproc.c */ char *egetenv (const char *); @@ -2455,108 +2482,122 @@ extern int suppress_early_error_handler_backtrace; /* Defined in eval.c */ -DECLARE_DOESNT_RETURN (signal_error (Lisp_Object, Lisp_Object)); -void maybe_signal_error (Lisp_Object, Lisp_Object, Lisp_Object, - Error_behavior); -Lisp_Object maybe_signal_continuable_error (Lisp_Object, Lisp_Object, - Lisp_Object, Error_behavior); -DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (type_error (Lisp_Object, - const char *, - ...), 2, 3); -void maybe_type_error (Lisp_Object, Lisp_Object, Error_behavior, const char *, - ...) PRINTF_ARGS (4, 5); -Lisp_Object continuable_type_error (Lisp_Object, const char *, ...) +DECLARE_DOESNT_RETURN (signal_error_1 (Lisp_Object, Lisp_Object)); +void maybe_signal_error_1 (Lisp_Object, Lisp_Object, Lisp_Object, + Error_Behavior); +Lisp_Object maybe_signal_continuable_error_1 (Lisp_Object, Lisp_Object, + Lisp_Object, Error_Behavior); +DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (signal_ferror + (Lisp_Object, + const CBufbyte *, + ...), 2, 3); +void maybe_signal_ferror (Lisp_Object, Lisp_Object, Error_Behavior, + const CBufbyte *, ...) PRINTF_ARGS (4, 5); +Lisp_Object signal_continuable_ferror (Lisp_Object, const CBufbyte *, ...) PRINTF_ARGS (2, 3); -Lisp_Object maybe_continuable_type_error (Lisp_Object, Lisp_Object, - Error_behavior, - const char *, ...) +Lisp_Object maybe_signal_continuable_ferror (Lisp_Object, Lisp_Object, + Error_Behavior, + const CBufbyte *, ...) PRINTF_ARGS (4, 5); -DECLARE_DOESNT_RETURN (signal_type_error (Lisp_Object, const char *, - Lisp_Object)); -void maybe_signal_type_error (Lisp_Object, const char *, Lisp_Object, - Lisp_Object, Error_behavior); -Lisp_Object signal_type_continuable_error (Lisp_Object, const char *, - Lisp_Object); -Lisp_Object maybe_signal_type_continuable_error (Lisp_Object, const char *, - Lisp_Object, - Lisp_Object, Error_behavior); -DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (type_error_with_frob + +Lisp_Object build_error_data (const CBufbyte *reason, Lisp_Object frob); +DECLARE_DOESNT_RETURN (signal_error (Lisp_Object, const CBufbyte *, + Lisp_Object)); +void maybe_signal_error (Lisp_Object, const CBufbyte *, Lisp_Object, + Lisp_Object, Error_Behavior); +Lisp_Object signal_continuable_error (Lisp_Object, const CBufbyte *, + Lisp_Object); +Lisp_Object maybe_signal_continuable_error (Lisp_Object, const CBufbyte *, + Lisp_Object, + Lisp_Object, Error_Behavior); +DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (signal_ferror_with_frob (Lisp_Object, Lisp_Object, - const char *, + const CBufbyte *, ...), 3, 4); -void maybe_type_error_with_frob (Lisp_Object, Lisp_Object, Lisp_Object, - Error_behavior, - const char *, ...) PRINTF_ARGS (5, 6); -Lisp_Object continuable_type_error_with_frob (Lisp_Object, Lisp_Object, - const char *, - ...) PRINTF_ARGS (3, 4); -Lisp_Object maybe_continuable_type_error_with_frob -(Lisp_Object, Lisp_Object, Lisp_Object, Error_behavior, const char *, ...) +void maybe_signal_ferror_with_frob (Lisp_Object, Lisp_Object, Lisp_Object, + Error_Behavior, + const CBufbyte *, ...) PRINTF_ARGS (5, 6); +Lisp_Object signal_continuable_ferror_with_frob (Lisp_Object, Lisp_Object, + const CBufbyte *, + ...) PRINTF_ARGS (3, 4); +Lisp_Object maybe_signal_continuable_ferror_with_frob (Lisp_Object, + Lisp_Object, + Lisp_Object, + Error_Behavior, + const CBufbyte *, ...) PRINTF_ARGS (5, 6); -DECLARE_DOESNT_RETURN (signal_type_error_2 (Lisp_Object, const char *, - Lisp_Object, Lisp_Object)); -void maybe_signal_type_error_2 (Lisp_Object, const char *, Lisp_Object, - Lisp_Object, Lisp_Object, Error_behavior); -Lisp_Object signal_type_continuable_error_2 (Lisp_Object, const char *, - Lisp_Object, Lisp_Object); -Lisp_Object maybe_signal_type_continuable_error_2 (Lisp_Object, const char *, - Lisp_Object, Lisp_Object, - Lisp_Object, - Error_behavior); -DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (error (const char *, - ...), 1, 2); -void maybe_error (Lisp_Object, Error_behavior, const char *, - ...) PRINTF_ARGS (3, 4); -Lisp_Object continuable_error (const char *, ...) PRINTF_ARGS (1, 2); -Lisp_Object maybe_continuable_error (Lisp_Object, Error_behavior, - const char *, ...) PRINTF_ARGS (3, 4); -DECLARE_DOESNT_RETURN (signal_simple_error (const char *, Lisp_Object)); -void maybe_signal_simple_error (const char *, Lisp_Object, - Lisp_Object, Error_behavior); -Lisp_Object signal_simple_continuable_error (const char *, Lisp_Object); -Lisp_Object maybe_signal_simple_continuable_error (const char *, Lisp_Object, - Lisp_Object, Error_behavior); -DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (error_with_frob - (Lisp_Object, const char *, - ...), 2, 3); -void maybe_error_with_frob (Lisp_Object, Lisp_Object, Error_behavior, - const char *, ...) PRINTF_ARGS (4, 5); -Lisp_Object continuable_error_with_frob (Lisp_Object, const char *, - ...) PRINTF_ARGS (2, 3); -Lisp_Object maybe_continuable_error_with_frob -(Lisp_Object, Lisp_Object, Error_behavior, const char *, ...) PRINTF_ARGS (4, 5); -DECLARE_DOESNT_RETURN (signal_simple_error_2 (const char *, - Lisp_Object, Lisp_Object)); -void maybe_signal_simple_error_2 (const char *, Lisp_Object, Lisp_Object, - Lisp_Object, Error_behavior); -Lisp_Object signal_simple_continuable_error_2 (const char *, - Lisp_Object, Lisp_Object); -Lisp_Object maybe_signal_simple_continuable_error_2 (const char *, Lisp_Object, - Lisp_Object, Lisp_Object, - Error_behavior); +DECLARE_DOESNT_RETURN (signal_error_2 (Lisp_Object, const CBufbyte *, + Lisp_Object, Lisp_Object)); +void maybe_signal_error_2 (Lisp_Object, const CBufbyte *, Lisp_Object, + Lisp_Object, Lisp_Object, Error_Behavior); +Lisp_Object signal_continuable_error_2 (Lisp_Object, const CBufbyte *, + Lisp_Object, Lisp_Object); +Lisp_Object maybe_signal_continuable_error_2 (Lisp_Object, const CBufbyte *, + Lisp_Object, Lisp_Object, + Lisp_Object, + Error_Behavior); + + DECLARE_DOESNT_RETURN (signal_malformed_list_error (Lisp_Object)); DECLARE_DOESNT_RETURN (signal_malformed_property_list_error (Lisp_Object)); DECLARE_DOESNT_RETURN (signal_circular_list_error (Lisp_Object)); DECLARE_DOESNT_RETURN (signal_circular_property_list_error (Lisp_Object)); -DECLARE_DOESNT_RETURN (syntax_error (const char *reason, Lisp_Object frob)); -DECLARE_DOESNT_RETURN (syntax_error_2 (const char *reason, Lisp_Object frob1, +DECLARE_DOESNT_RETURN (syntax_error (const CBufbyte *reason, + Lisp_Object frob)); +DECLARE_DOESNT_RETURN (syntax_error_2 (const CBufbyte *reason, + Lisp_Object frob1, Lisp_Object frob2)); -DECLARE_DOESNT_RETURN (invalid_argument (const char *reason, +void maybe_syntax_error (const CBufbyte *, Lisp_Object, Lisp_Object, + Error_Behavior); +DECLARE_DOESNT_RETURN (sferror (const CBufbyte *reason, Lisp_Object frob)); +DECLARE_DOESNT_RETURN (sferror_2 (const CBufbyte *reason, Lisp_Object frob1, + Lisp_Object frob2)); +void maybe_sferror (const CBufbyte *, Lisp_Object, Lisp_Object, + Error_Behavior); +DECLARE_DOESNT_RETURN (invalid_argument (const CBufbyte *reason, + Lisp_Object frob)); +DECLARE_DOESNT_RETURN (invalid_argument_2 (const CBufbyte *reason, + Lisp_Object frob1, + Lisp_Object frob2)); +void maybe_invalid_argument (const CBufbyte *, Lisp_Object, Lisp_Object, + Error_Behavior); +DECLARE_DOESNT_RETURN (invalid_operation (const CBufbyte *reason, + Lisp_Object frob)); +DECLARE_DOESNT_RETURN (invalid_operation_2 (const CBufbyte *reason, + Lisp_Object frob1, + Lisp_Object frob2)); +void maybe_invalid_operation (const CBufbyte *, Lisp_Object, Lisp_Object, + Error_Behavior); +DECLARE_DOESNT_RETURN (invalid_state (const CBufbyte *reason, + Lisp_Object frob)); +DECLARE_DOESNT_RETURN (invalid_state_2 (const CBufbyte *reason, + Lisp_Object frob1, + Lisp_Object frob2)); +void maybe_invalid_state (const CBufbyte *, Lisp_Object, Lisp_Object, + Error_Behavior); +DECLARE_DOESNT_RETURN (invalid_change (const CBufbyte *reason, Lisp_Object frob)); -DECLARE_DOESNT_RETURN (invalid_argument_2 (const char *reason, +DECLARE_DOESNT_RETURN (invalid_change_2 (const CBufbyte *reason, Lisp_Object frob1, Lisp_Object frob2)); -DECLARE_DOESNT_RETURN (invalid_operation (const char *reason, - Lisp_Object frob)); -DECLARE_DOESNT_RETURN (invalid_operation_2 (const char *reason, - Lisp_Object frob1, - Lisp_Object frob2)); -DECLARE_DOESNT_RETURN (invalid_change (const char *reason, +void maybe_invalid_change (const CBufbyte *, Lisp_Object, Lisp_Object, + Error_Behavior); +DECLARE_DOESNT_RETURN (invalid_constant (const CBufbyte *reason, + Lisp_Object frob)); +DECLARE_DOESNT_RETURN (invalid_constant_2 (const CBufbyte *reason, + Lisp_Object frob1, + Lisp_Object frob2)); +void maybe_invalid_constant (const CBufbyte *, Lisp_Object, Lisp_Object, + Error_Behavior); +DECLARE_DOESNT_RETURN (wtaerror (const CBufbyte *reason, Lisp_Object frob)); +DECLARE_DOESNT_RETURN (out_of_memory (const CBufbyte *reason, + Lisp_Object frob)); +DECLARE_DOESNT_RETURN (stack_overflow (const CBufbyte *reason, Lisp_Object frob)); -DECLARE_DOESNT_RETURN (invalid_change_2 (const char *reason, - Lisp_Object frob1, - Lisp_Object frob2)); +DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS (printing_unreadable_object + (const CBufbyte *, + ...), 1, 2); Lisp_Object signal_void_function_error (Lisp_Object); Lisp_Object signal_invalid_function_error (Lisp_Object); @@ -2601,16 +2642,16 @@ Lisp_Object eval_in_buffer (struct buffer *, Lisp_Object); Lisp_Object call0_with_handler (Lisp_Object, Lisp_Object); Lisp_Object call1_with_handler (Lisp_Object, Lisp_Object, Lisp_Object); -Lisp_Object eval_in_buffer_trapping_errors (const char *, struct buffer *, +Lisp_Object eval_in_buffer_trapping_errors (const CBufbyte *, struct buffer *, Lisp_Object); -Lisp_Object run_hook_trapping_errors (const char *, Lisp_Object); -Lisp_Object safe_run_hook_trapping_errors (const char *, Lisp_Object, int); -Lisp_Object call0_trapping_errors (const char *, Lisp_Object); -Lisp_Object call1_trapping_errors (const char *, Lisp_Object, Lisp_Object); -Lisp_Object call2_trapping_errors (const char *, +Lisp_Object run_hook_trapping_errors (const CBufbyte *, Lisp_Object); +Lisp_Object safe_run_hook_trapping_errors (const CBufbyte *, Lisp_Object, int); +Lisp_Object call0_trapping_errors (const CBufbyte *, Lisp_Object); +Lisp_Object call1_trapping_errors (const CBufbyte *, Lisp_Object, Lisp_Object); +Lisp_Object call2_trapping_errors (const CBufbyte *, Lisp_Object, Lisp_Object, Lisp_Object); Lisp_Object call_with_suspended_errors (lisp_fn_t, volatile Lisp_Object, Lisp_Object, - Error_behavior, int, ...); + Error_Behavior, int, ...); /* C Code should be using internal_catch, record_unwind_p, condition_case_1 */ Lisp_Object internal_catch (Lisp_Object, Lisp_Object (*) (Lisp_Object), Lisp_Object, int * volatile); @@ -2626,7 +2667,7 @@ void do_autoload (Lisp_Object, Lisp_Object); Lisp_Object un_autoload (Lisp_Object); void warn_when_safe_lispobj (Lisp_Object, Lisp_Object, Lisp_Object); -void warn_when_safe (Lisp_Object, Lisp_Object, const char *, +void warn_when_safe (Lisp_Object, Lisp_Object, const CBufbyte *, ...) PRINTF_ARGS (3, 4); @@ -2651,21 +2692,14 @@ /* Defined in fileio.c */ void record_auto_save (void); void force_auto_save_soon (void); -DECLARE_DOESNT_RETURN (report_file_error (const char *, Lisp_Object)); -void maybe_report_file_error (const char *, Lisp_Object, - Lisp_Object, Error_behavior); -DECLARE_DOESNT_RETURN (signal_file_error (const char *, Lisp_Object)); -void maybe_signal_file_error (const char *, Lisp_Object, - Lisp_Object, Error_behavior); -DECLARE_DOESNT_RETURN (signal_double_file_error (const char *, const char *, - Lisp_Object)); -void maybe_signal_double_file_error (const char *, const char *, - Lisp_Object, Lisp_Object, Error_behavior); -DECLARE_DOESNT_RETURN (signal_double_file_error_2 (const char *, const char *, - Lisp_Object, Lisp_Object)); -void maybe_signal_double_file_error_2 (const char *, const char *, - Lisp_Object, Lisp_Object, Lisp_Object, - Error_behavior); +DECLARE_DOESNT_RETURN (report_error_with_errno (Lisp_Object errtype, + const CBufbyte *string, + Lisp_Object data)); +DECLARE_DOESNT_RETURN (report_file_type_error (Lisp_Object errtype, + Lisp_Object oserrmess, + const CBufbyte *string, + Lisp_Object data)); +DECLARE_DOESNT_RETURN (report_file_error (const CBufbyte *, Lisp_Object)); Lisp_Object lisp_strerror (int); Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object); ssize_t read_allowing_quit (int, void *, size_t); @@ -2705,10 +2739,10 @@ void internal_plist_put (Lisp_Object *, Lisp_Object, Lisp_Object); int internal_remprop (Lisp_Object *, Lisp_Object); Lisp_Object external_plist_get (Lisp_Object *, Lisp_Object, - int, Error_behavior); + int, Error_Behavior); void external_plist_put (Lisp_Object *, Lisp_Object, - Lisp_Object, int, Error_behavior); -int external_remprop (Lisp_Object *, Lisp_Object, int, Error_behavior); + Lisp_Object, int, Error_Behavior); +int external_remprop (Lisp_Object *, Lisp_Object, int, Error_Behavior); int internal_equal (Lisp_Object, Lisp_Object, int); Lisp_Object concat2 (Lisp_Object, Lisp_Object); Lisp_Object concat3 (Lisp_Object, Lisp_Object, Lisp_Object); @@ -2719,9 +2753,22 @@ void check_losing_bytecode (const char *, Lisp_Object); /* Defined in glyphs.c */ -Error_behavior decode_error_behavior_flag (Lisp_Object); -Lisp_Object encode_error_behavior_flag (Error_behavior); +Error_Behavior decode_error_behavior_flag (Lisp_Object); +Lisp_Object encode_error_behavior_flag (Error_Behavior); +/* Defined in glyphs-shared.c */ +void shared_resource_validate (Lisp_Object instantiator); +Lisp_Object shared_resource_normalize (Lisp_Object inst, + Lisp_Object console_type, + Lisp_Object dest_mask, + Lisp_Object tag); +extern Lisp_Object Q_resource_type, Q_resource_id; + +/* Defined in gui.c */ +DECLARE_DOESNT_RETURN (gui_error (const char *reason, + Lisp_Object frob)); +DECLARE_DOESNT_RETURN (gui_error_2 (const char *reason, + Lisp_Object frob0, Lisp_Object frob1)); /* Defined in indent.c */ int bi_spaces_at_point (struct buffer *, Bytind); int column_at_point (struct buffer *, Bufpos, int); @@ -2815,7 +2862,19 @@ void print_cons (Lisp_Object, Lisp_Object, int); void print_vector (Lisp_Object, Lisp_Object, int); void print_string (Lisp_Object, Lisp_Object, int); -char *long_to_string (char *, long); + +/* The number of bytes required to store the decimal printed + representation of an integral type. Add a few bytes for truncation, + optional sign prefix, and null byte terminator. + 2.40824 == log (256) / log (10). + + We don't use floating point since Sun cc (buggily?) cannot use + floating point computations to define a compile-time integral + constant. */ +#define DECIMAL_PRINT_SIZE(integral_type) \ +(((2410824 * sizeof (integral_type)) / 1000000) + 3) +void long_to_string (char *, long); + void print_internal (Lisp_Object, Lisp_Object, int); void print_symbol (Lisp_Object, Lisp_Object, int); void print_float (Lisp_Object, Lisp_Object, int); @@ -2827,6 +2886,10 @@ void float_to_string (char *, double); void internal_object_printer (Lisp_Object, Lisp_Object, int); +/* Defined in process.c */ +DECLARE_DOESNT_RETURN (report_process_error (const char *, Lisp_Object)); +DECLARE_DOESNT_RETURN (report_network_error (const char *, Lisp_Object)); + /* Defined in profile.c */ void mark_profiling_info (void); void profile_increase_call_count (Lisp_Object); @@ -2853,10 +2916,10 @@ Bytind bi_find_next_emchar_in_string (Lisp_String*, Emchar, Bytind, EMACS_INT); Bufpos find_before_next_newline (struct buffer *, Bufpos, Bufpos, int); struct re_pattern_buffer *compile_pattern (Lisp_Object, struct re_registers *, - Lisp_Object, int, Error_behavior); + Lisp_Object, int, Error_Behavior); Bytecount fast_string_match (Lisp_Object, const Bufbyte *, Lisp_Object, Bytecount, - Bytecount, int, Error_behavior, int); + Bytecount, int, Error_Behavior, int); Bytecount fast_lisp_string_match (Lisp_Object, Lisp_Object); void restore_match_data (void); extern Fixnum warn_about_possibly_incompatible_back_references; @@ -2870,12 +2933,13 @@ /* Defined in sound.c */ void init_device_sound (struct device *); +DECLARE_DOESNT_RETURN (report_sound_error (const Char_ASCII *, Lisp_Object)); /* Defined in specifier.c */ Lisp_Object specifier_instance (Lisp_Object, Lisp_Object, Lisp_Object, - Error_behavior, int, int, Lisp_Object); + Error_Behavior, int, int, Lisp_Object); Lisp_Object specifier_instance_no_quit (Lisp_Object, Lisp_Object, Lisp_Object, - Error_behavior, int, Lisp_Object); + Error_Behavior, int, Lisp_Object); /* Defined in symbols.c */ unsigned int hash_string (const Bufbyte *, Bytecount); @@ -2952,7 +3016,6 @@ EXFUN (Fcoding_category_list, 0); EXFUN (Fcoding_category_system, 1); EXFUN (Fcoding_priority_list, 0); -EXFUN (Fcoding_system_charset, 2); EXFUN (Fcoding_system_doc_string, 1); EXFUN (Fcoding_system_list, 0); EXFUN (Fcoding_system_name, 1); @@ -3183,10 +3246,9 @@ extern Lisp_Object Qchar_or_string_p, Qcharacterp; extern Lisp_Object Qcharset_g0, Qcharset_g1, Qcharset_g2, Qcharset_g3; extern Lisp_Object Qcircular_list, Qcircular_property_list; -extern Lisp_Object Qcoding_system_error; extern Lisp_Object Qcolor_pixmap_image_instance_p; extern Lisp_Object Qcommandp, Qcompletion_ignore_case; -extern Lisp_Object Qconsole_live_p, Qconst_specifier, Qcr; +extern Lisp_Object Qconsole_live_p, Qconst_specifier, Qconversion_error, Qcr; extern Lisp_Object Qcrlf, Qcurrent_menubar, Qctext; extern Lisp_Object Qcyclic_variable_indirection, Qdecode; extern Lisp_Object Qdefun, Qdevice_live_p; @@ -3195,20 +3257,22 @@ extern Lisp_Object Qediting_error; extern Lisp_Object Qencode, Qend_of_buffer, Qend_of_file, Qend_open; extern Lisp_Object Qeol_cr, Qeol_crlf, Qeol_lf, Qeol_type; -extern Lisp_Object Qerror, Qerror_conditions, Qerror_message, Qescape_quoted; +extern Lisp_Object Qerror, Qerror_conditions, Qerror_lacks_explanatory_string; +extern Lisp_Object Qerror_message, Qescape_quoted; extern Lisp_Object Qevent_live_p, Qexit, Qextent_live_p; extern Lisp_Object Qexternal_debugging_output, Qfeaturep; extern Lisp_Object Qfile_error; extern Lisp_Object Qforce_g0_on_output, Qforce_g1_on_output; extern Lisp_Object Qforce_g2_on_output, Qforce_g3_on_output, Qforeground; -extern Lisp_Object Qformat, Qframe_live_p; +extern Lisp_Object Qformat, Qframe_live_p, Qgui_error; extern Lisp_Object Qicon_glyph_p, Qidentity; extern Lisp_Object Qinhibit_quit, Qinhibit_read_only; extern Lisp_Object Qinput_charset_conversion; extern Lisp_Object Qinteger_char_or_marker_p, Qinteger_or_char_p; extern Lisp_Object Qinteger_or_marker_p, Qintegerp, Qinteractive; -extern Lisp_Object Qinternal_error, Qinvalid_argument; -extern Lisp_Object Qinvalid_change, Qinvalid_function, Qinvalid_operation; +extern Lisp_Object Qinternal_error, Qinvalid_argument, Qinvalid_byte_code; +extern Lisp_Object Qinvalid_change, Qinvalid_constant, Qinvalid_function; +extern Lisp_Object Qinvalid_operation; extern Lisp_Object Qinvalid_read_syntax, Qinvalid_state; extern Lisp_Object Qio_error; extern Lisp_Object Qiso2022; @@ -3221,16 +3285,17 @@ extern Lisp_Object Qmnemonic; extern Lisp_Object Qmono_pixmap_image_instance_p; extern Lisp_Object Qmouse_leave_buffer_hook; -extern Lisp_Object Qnas, Qnatnump, Qnative_layout; +extern Lisp_Object Qnatnump, Qnative_layout, Qnetwork_error; extern Lisp_Object Qno_ascii_cntl, Qno_ascii_eol, Qno_catch; extern Lisp_Object Qno_conversion, Qno_iso6429; extern Lisp_Object Qnothing_image_instance_p; -extern Lisp_Object Qnumber_char_or_marker_p, Qnumberp; +extern Lisp_Object Qnumber_char_or_marker_p, Qnumberp, Qout_of_memory; extern Lisp_Object Qoutput_charset_conversion; extern Lisp_Object Qoverflow_error, Qpoint, Qpointer_glyph_p; extern Lisp_Object Qpointer_image_instance_p, Qpost_read_conversion; extern Lisp_Object Qpre_write_conversion, Qprint_length; -extern Lisp_Object Qprint_string_length, Qprogn, Qquit; +extern Lisp_Object Qprint_string_length, Qprinting_unreadable_object; +extern Lisp_Object Qprogn, Qprocess_error, Qquit; extern Lisp_Object Qquote, Qrange_error, Qread_char; extern Lisp_Object Qread_from_minibuffer, Qreally_early_error_handler; extern Lisp_Object Qregion_beginning, Qregion_end; @@ -3239,12 +3304,12 @@ extern Lisp_Object Qself_insert_command, Qself_insert_defer_undo; extern Lisp_Object Qsequencep, Qset, Qsetting_constant; extern Lisp_Object Qseven, Qshift_jis, Qshort; -extern Lisp_Object Qsingularity_error; +extern Lisp_Object Qsingularity_error, Qsound_error, Qstack_overflow; extern Lisp_Object Qstandard_input, Qstandard_output; extern Lisp_Object Qstart_open; -extern Lisp_Object Qstring_lessp, Qsubwindow; +extern Lisp_Object Qstring_lessp, Qstructure_formation_error, Qsubwindow; extern Lisp_Object Qsubwindow_image_instance_p; -extern Lisp_Object Qsyntax_error, Qt; +extern Lisp_Object Qsyntax_error, Qt, Qtext_conversion_error; extern Lisp_Object Qtext_image_instance_p; extern Lisp_Object Qtop_level; extern Lisp_Object Qtrue_list_p; diff --text -u 'xemacs-21.5.1/src/lread.c' 'xemacs-21.5.2/src/lread.c' Index: ././src/lread.c --- ././src/lread.c Fri Apr 13 03:23:59 2001 +++ ././src/lread.c Fri May 25 20:26:57 2001 @@ -220,15 +220,13 @@ static DOESNT_RETURN read_syntax_error (const char *string) { - signal_error (Qinvalid_read_syntax, - list1 (build_translated_string (string))); + signal_error (Qinvalid_read_syntax, string, Qunbound); } static Lisp_Object continuable_read_syntax_error (const char *string) { - return Fsignal (Qinvalid_read_syntax, - list1 (build_translated_string (string))); + return signal_continuable_error (Qinvalid_read_syntax, string, Qunbound); } @@ -244,7 +242,7 @@ struct buffer *b = XBUFFER (readcharfun); if (!BUFFER_LIVE_P (b)) - error ("Reading from killed buffer"); + invalid_operation ("Reading from killed buffer", Qunbound); if (BUF_PT (b) >= BUF_ZV (b)) return -1; @@ -421,19 +419,19 @@ } static Lisp_Object -pas_de_lache_ici (int fd, Lisp_Object victim) +pas_de_holgazan_ici (int fd, Lisp_Object victim) { Lisp_Object tem; EMACS_INT pos; if (!INTP (XCDR (victim))) - signal_simple_error ("Bogus doc string reference", victim); + invalid_byte_code ("Bogus doc string reference", victim); pos = XINT (XCDR (victim)); if (pos < 0) pos = -pos; /* kludge to mark a user variable */ tem = unparesseuxify_doc_string (fd, pos, 0, Vload_file_name_internal); if (!STRINGP (tem)) - signal_error (Qerror, tem); + signal_error_1 (Qinvalid_byte_code, tem); return tem; } @@ -456,7 +454,7 @@ { assert (CONSP (XCAR (john))); assert (!purify_flag); /* should have been handled in read_list() */ - XCAR (john) = pas_de_lache_ici (fd, XCAR (john)); + XCAR (john) = pas_de_holgazan_ici (fd, XCAR (john)); } else { @@ -466,14 +464,14 @@ if (CONSP (XCOMPILED_FUNCTION (john)->instructions)) { struct gcpro ngcpro1; - Lisp_Object juan = (pas_de_lache_ici + Lisp_Object juan = (pas_de_holgazan_ici (fd, XCOMPILED_FUNCTION (john)->instructions)); Lisp_Object ivan; NGCPRO1 (juan); ivan = Fread (juan); if (!CONSP (ivan)) - signal_simple_error ("invalid lazy-loaded byte code", ivan); + invalid_byte_code ("invalid lazy-loaded byte code", ivan); XCOMPILED_FUNCTION (john)->instructions = XCAR (ivan); /* v18 or v19 bytecode file. Need to Ebolify. */ if (XCOMPILED_FUNCTION (john)->flags.ebolified @@ -487,7 +485,7 @@ { assert (!purify_flag); /* should have been handled in read_compiled_function() */ - doc = pas_de_lache_ici (fd, doc); + doc = pas_de_holgazan_ici (fd, doc); set_compiled_function_documentation (XCOMPILED_FUNCTION (john), doc); } @@ -598,7 +596,7 @@ if (fd < 0) { if (NILP (noerror)) - signal_file_error ("Cannot open load file", file); + signal_error (Qfile_error, "Cannot open load file", file); else { UNGCPRO; @@ -816,7 +814,7 @@ return XINT (mode); } else - signal_simple_error ("Invalid value", mode); + invalid_argument ("Invalid value", mode); return 0; /* unreached */ } @@ -1410,7 +1408,7 @@ QUIT; if (b != 0 && !BUFFER_LIVE_P (b)) - error ("Reading from killed buffer"); + invalid_operation ("Reading from killed buffer", Qunbound); c = readchar (readcharfun); if (c == ';') @@ -1487,7 +1485,7 @@ else buf = Fget_buffer (buffer); if (NILP (buf)) - error ("No such buffer."); + invalid_argument ("No such buffer", Qunbound); if (NILP (printflag)) tem = Qsymbolp; /* #### #@[]*&$#*[& SI:NULL-STREAM */ @@ -1672,7 +1670,7 @@ Emchar c = readchar (readcharfun); if (c < 0) - signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun))); + signal_error (Qend_of_file, 0, READCHARFUN_MAYBE (readcharfun)); switch (c) { @@ -1690,12 +1688,12 @@ case 'M': c = readchar (readcharfun); if (c < 0) - signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun))); + signal_error (Qend_of_file, 0, READCHARFUN_MAYBE (readcharfun)); if (c != '-') - error ("Invalid escape character syntax"); + syntax_error ("Invalid escape character syntax", Qunbound); c = readchar (readcharfun); if (c < 0) - signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun))); + signal_error (Qend_of_file, 0, READCHARFUN_MAYBE (readcharfun)); if (c == '\\') c = read_escape (readcharfun); return c | 0200; @@ -1725,15 +1723,15 @@ #define ctl_modifier (0x400000) #define meta_modifier (0x800000) */ -#define FSF_LOSSAGE(mask) \ - if (fail_on_bucky_bit_character_escapes || \ - ((c = readchar (readcharfun)) != '-')) \ - error ("Invalid escape character syntax"); \ - c = readchar (readcharfun); \ - if (c < 0) \ - signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun))); \ - if (c == '\\') \ - c = read_escape (readcharfun); \ +#define FSF_LOSSAGE(mask) \ + if (fail_on_bucky_bit_character_escapes || \ + ((c = readchar (readcharfun)) != '-')) \ + syntax_error ("Invalid escape character syntax", Qunbound); \ + c = readchar (readcharfun); \ + if (c < 0) \ + signal_error (Qend_of_file, 0, READCHARFUN_MAYBE (readcharfun)); \ + if (c == '\\') \ + c = read_escape (readcharfun); \ return c | mask case 'S': FSF_LOSSAGE (shift_modifier); @@ -1751,13 +1749,13 @@ case 'C': c = readchar (readcharfun); if (c < 0) - signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun))); + signal_error (Qend_of_file, 0, READCHARFUN_MAYBE (readcharfun)); if (c != '-') - error ("Invalid escape character syntax"); + syntax_error ("Invalid escape character syntax", Qunbound); case '^': c = readchar (readcharfun); if (c < 0) - signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun))); + signal_error (Qend_of_file, 0, READCHARFUN_MAYBE (readcharfun)); if (c == '\\') c = read_escape (readcharfun); /* FSFmacs junk for non-ASCII controls. @@ -1853,7 +1851,7 @@ { c = readchar (readcharfun); if (c < 0) - signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun))); + signal_error (Qend_of_file, 0, READCHARFUN_MAYBE (readcharfun)); *saw_a_backslash = 1; } Lstream_put_emchar (XLSTREAM (Vread_buffer_stream), c); @@ -2068,7 +2066,7 @@ struct structure_type * define_structure_type (Lisp_Object type, int (*validate) (Lisp_Object data, - Error_behavior errb), + Error_Behavior errb), Lisp_Object (*instantiate) (Lisp_Object data)) { struct structure_type st; @@ -2087,7 +2085,7 @@ define_structure_type_keyword (struct structure_type *st, Lisp_Object keyword, int (*validate) (Lisp_Object keyword, Lisp_Object value, - Error_behavior errb)) + Error_Behavior errb)) { struct structure_keyword_entry en; @@ -2213,7 +2211,7 @@ QUIT; c = readchar (readcharfun); if (c < 0) - signal_error (Qend_of_file, list1 (READCHARFUN_MAYBE (readcharfun))); + signal_error (Qend_of_file, 0, READCHARFUN_MAYBE (readcharfun)); switch (c) { @@ -2819,7 +2817,7 @@ else #endif if (ch != '.') - signal_simple_error ("BUG! Internal reader error", elt); + signal_error (Qinternal_error, "BUG! Internal reader error", elt); else if (!s->allow_dotted_lists) read_syntax_error ("\".\" in a vector"); else @@ -3118,25 +3116,25 @@ DEFSUBR (Feval_buffer); DEFSUBR (Feval_region); - defsymbol (&Qstandard_input, "standard-input"); - defsymbol (&Qread_char, "read-char"); - defsymbol (&Qcurrent_load_list, "current-load-list"); - defsymbol (&Qload, "load"); - defsymbol (&Qload_file_name, "load-file-name"); - defsymbol (&Qfset, "fset"); + DEFSYMBOL (Qstandard_input); + DEFSYMBOL (Qread_char); + DEFSYMBOL (Qcurrent_load_list); + DEFSYMBOL (Qload); + DEFSYMBOL (Qload_file_name); + DEFSYMBOL (Qfset); #ifdef LISP_BACKQUOTES - defsymbol (&Qbackquote, "backquote"); + DEFSYMBOL (Qbackquote); defsymbol (&Qbacktick, "`"); defsymbol (&Qcomma, ","); defsymbol (&Qcomma_at, ",@"); defsymbol (&Qcomma_dot, ",."); #endif - defsymbol (&Qexists, "exists"); - defsymbol (&Qreadable, "readable"); - defsymbol (&Qwritable, "writable"); - defsymbol (&Qexecutable, "executable"); + DEFSYMBOL (Qexists); + DEFSYMBOL (Qreadable); + DEFSYMBOL (Qwritable); + DEFSYMBOL (Qexecutable); } void @@ -3292,7 +3290,7 @@ Ffset (Qload, intern ("load-internal")); #ifdef FEATUREP_SYNTAX - defsymbol (&Qfeaturep, "featurep"); + DEFSYMBOL (Qfeaturep); Fprovide(intern("xemacs")); #ifdef INFODOCK Fprovide(intern("infodock")); diff --text -u 'xemacs-21.5.1/src/lrecord.h' 'xemacs-21.5.2/src/lrecord.h' Index: ././src/lrecord.h --- ././src/lrecord.h Fri Apr 13 03:24:00 2001 +++ ././src/lrecord.h Mon Jun 18 16:10:24 2001 @@ -171,10 +171,12 @@ lrecord_type_device, lrecord_type_frame, lrecord_type_window, + lrecord_type_window_mirror, lrecord_type_window_configuration, lrecord_type_gui_item, lrecord_type_popup_data, lrecord_type_toolbar_button, + lrecord_type_scrollbar_instance, lrecord_type_color_instance, lrecord_type_font_instance, lrecord_type_image_instance, @@ -268,7 +270,7 @@ unsigned int basic_p :1; }; -/* All the built-in lisp object types are enumerated in `enum record_type'. +/* All the built-in lisp object types are enumerated in `enum lrecord_type'. Additional ones may be defined by a module (none yet). We leave some room in `lrecord_implementations_table' for such new lisp object types. */ #define MODULE_DEFINABLE_TYPE_COUNT 32 @@ -512,8 +514,8 @@ struct lcrecord_header header; - 2. Put a DECLARE_LRECORD() for the object below the struct definition, - along with the standard XFOO/XSETFOO junk. + 2. Put the "standard junk" (DECLARE_RECORD()/XFOO/XSETFOO/etc.) below the + struct definition -- see below. 3. Add this header file to inline.c. @@ -566,9 +568,12 @@ int border_width; }; +[[ the standard junk: ]] + DECLARE_LRECORD (toolbar_button, struct toolbar_button); #define XTOOLBAR_BUTTON(x) XRECORD (x, toolbar_button, struct toolbar_button) #define XSETTOOLBAR_BUTTON(x, p) XSETRECORD (x, p, toolbar_button) +#define wrap_toolbar_button(p) wrap_record (p, toolbar_button) #define TOOLBAR_BUTTONP(x) RECORDP (x, toolbar_button) #define CHECK_TOOLBAR_BUTTON(x) CHECK_RECORD (x, toolbar_button) #define CONCHECK_TOOLBAR_BUTTON(x) CONCHECK_RECORD (x, toolbar_button) @@ -596,9 +601,12 @@ return data->help_string; } +[[ If your object should never escape to Lisp, declare its print method + as internal_object_printer instead of 0. ]] + DEFINE_LRECORD_IMPLEMENTATION ("toolbar-button", toolbar_button, - mark_toolbar_button, 0, 0, 0, 0, 0, - struct toolbar_button); + mark_toolbar_button, 0, + 0, 0, 0, 0, struct toolbar_button); ... @@ -684,6 +692,18 @@ assert (RECORD_TYPEP (var, lrecord_type_##c_name)); \ } while (0) +INLINE_HEADER Lisp_Object wrap_record_1 (void *ptr, enum lrecord_type ty); +INLINE_HEADER Lisp_Object +wrap_record_1 (void *ptr, enum lrecord_type ty) +{ + Lisp_Object obj; + XSETOBJ (obj, ptr); + assert (RECORD_TYPEP (obj, ty)); + return obj; +} + +#define wrap_record(ptr, ty) wrap_record_1 (ptr, lrecord_type_##ty) + #else /* not ERROR_CHECK_TYPECHECK */ # define DECLARE_LRECORD(c_name, structtype) \ @@ -699,6 +719,9 @@ # define XNONRECORD(x, c_name, type_enum, structtype) \ ((structtype *) XPNTR (x)) # define XSETRECORD(var, p, c_name) XSETOBJ (var, p) +/* wrap_pointer_1 is so named as a suggestion not to use it unless you + know what you're doing. */ +#define wrap_record(ptr, ty) wrap_pointer_1 (ptr) #endif /* not ERROR_CHECK_TYPECHECK */ diff --text -u 'xemacs-21.5.1/src/lstream.c' 'xemacs-21.5.2/src/lstream.c' Index: ././src/lstream.c --- ././src/lstream.c Fri Apr 13 03:24:00 2001 +++ ././src/lstream.c Thu May 24 16:51:22 2001 @@ -288,14 +288,7 @@ } #define Lstream_internal_error(reason, lstr) \ - Lstream_signal_simple_error ("Internal error: " reason, lstr) - -static void Lstream_signal_simple_error (const char *reason, Lstream *lstr) -{ - Lisp_Object obj; - XSETLSTREAM (obj, lstr); - signal_simple_error (reason, obj); -} + signal_error (Qinternal_error, reason, wrap_lstream (lstr)) void Lstream_reopen (Lstream *lstr) diff --text -u 'xemacs-21.5.1/src/lstream.h' 'xemacs-21.5.2/src/lstream.h' Index: ././src/lstream.h --- ././src/lstream.h Fri Apr 13 03:24:00 2001 +++ ././src/lstream.h Mon Jun 18 16:10:25 2001 @@ -33,6 +33,7 @@ DECLARE_LRECORD (lstream, struct lstream); #define XLSTREAM(x) XRECORD (x, lstream, struct lstream) #define XSETLSTREAM(x, p) XSETRECORD (x, p, lstream) +#define wrap_lstream(p) wrap_record (p, lstream) #define LSTREAMP(x) RECORDP (x, lstream) /* #define CHECK_LSTREAM(x) CHECK_RECORD (x, lstream) Lstream pointers should never escape to the Lisp level, so diff --text -u 'xemacs-21.5.1/src/m/7300.h' 'xemacs-21.5.2/src/m/7300.h' Index: ././src/m/7300.h --- ././src/m/7300.h Fri Apr 13 03:24:32 2001 +++ ././src/m/7300.h Mon May 14 13:52:27 2001 @@ -61,9 +61,6 @@ #endif -/* If you have the PD pty driver installed, uncomment the following line. */ -/* #define HAVE_PTYS */ - /* We don't have memmove. */ #define memmove(d, s, n) safe_bcopy (s, d, n) diff --text -u 'xemacs-21.5.1/src/m/delta.h' 'xemacs-21.5.2/src/m/delta.h' Index: ././src/m/delta.h --- ././src/m/delta.h Fri Apr 13 03:24:33 2001 +++ ././src/m/delta.h Mon May 14 13:52:27 2001 @@ -67,8 +67,6 @@ /* Machine specific stuff */ -#define HAVE_PTYS -#define SYSV_PTYS #define BROKEN_CLOSEDIR /* builtin closedir is interruptible */ #define memmove(t,f,s) safe_bcopy(f,t,s) /* for overlapping copies */ #undef KERNEL_FILE diff --text -u 'xemacs-21.5.1/src/m/delta88k.h' 'xemacs-21.5.2/src/m/delta88k.h' Index: ././src/m/delta88k.h --- ././src/m/delta88k.h Fri Apr 13 03:24:33 2001 +++ ././src/m/delta88k.h Mon May 14 13:52:27 2001 @@ -76,12 +76,6 @@ #define STACK_DIRECTION -1 /* The stack grows towards lower addresses. */ #endif /* __GNUC__ */ -/* Motorola SysV has PTYs. Not all usg3-5 systems do, so this is defined - here. */ - -#define HAVE_PTYS -#define SYSV_PTYS - /* * we have the wrong name for networking libs */ @@ -106,10 +100,6 @@ #endif /* USG5_4 */ #define NO_SIOCTL_H - -/* XEmacs change -- removed crap about random and bstring */ - -#define NO_PTY_H /* XEmacs change -- smarch@quaver.urbana.mcd.mot.com */ #ifndef NOT_C_CODE diff --text -u 'xemacs-21.5.1/src/m/dpx2.h' 'xemacs-21.5.2/src/m/dpx2.h' Index: ././src/m/dpx2.h --- ././src/m/dpx2.h Fri Apr 13 03:24:34 2001 +++ ././src/m/dpx2.h Mon May 14 13:52:27 2001 @@ -145,10 +145,6 @@ #define STACK_DIRECTION -1 -/* we also have this */ -#define HAVE_PTYS -#define SYSV_PTYS - /* on bos2.00.45 there is a bug that makes the F_SETOWN fcntl() call enters in an infinite loop. Avoid calling it */ #define F_SETOWN_BUG diff --text -u 'xemacs-21.5.1/src/m/hp800.h' 'xemacs-21.5.2/src/m/hp800.h' Index: ././src/m/hp800.h --- ././src/m/hp800.h Fri Apr 13 03:24:34 2001 +++ ././src/m/hp800.h Mon May 14 13:52:27 2001 @@ -100,8 +100,6 @@ #define LIBS_MACHINE #define LIBS_DEBUG -/* Include the file bsdtty.h, since this machine has job control. */ -#define NEED_BSDTTY /* The symbol in the kernel where the load average is found is named _avenrun. At this time there are two major flavors diff --text -u 'xemacs-21.5.1/src/m/ibmps2-aix.h' 'xemacs-21.5.2/src/m/ibmps2-aix.h' Index: ././src/m/ibmps2-aix.h --- ././src/m/ibmps2-aix.h Fri Apr 13 03:24:34 2001 +++ ././src/m/ibmps2-aix.h Mon May 14 13:52:28 2001 @@ -93,10 +93,6 @@ /* This page was added in June 1990. It may be incorrect for some versions of aix, so delete it if it causes trouble. */ -/* AIX386 has BSD4.3 PTYs */ - -#define HAVE_PTYS - /* #define SKTPAIR */ /* SKTPAIR works, but what is advantage over pipes? */ /* Specify the font for X to use. */ diff --text -u 'xemacs-21.5.1/src/m/ibmrt-aix.h' 'xemacs-21.5.2/src/m/ibmrt-aix.h' Index: ././src/m/ibmrt-aix.h --- ././src/m/ibmrt-aix.h Fri Apr 13 03:24:35 2001 +++ ././src/m/ibmrt-aix.h Mon May 14 13:52:28 2001 @@ -76,7 +76,6 @@ /* AIX has PTYs, so define here, along with macros needed to make them work. */ -#define HAVE_PTYS #define PTY_ITERATION for (i=0; i<256; i++) #define PTY_NAME_SPRINTF sprintf (ptyname, "/dev/ptc%d", i); diff --text -u 'xemacs-21.5.1/src/m/mips.h' 'xemacs-21.5.2/src/m/mips.h' Index: ././src/m/mips.h --- ././src/m/mips.h Fri Apr 13 03:24:36 2001 +++ ././src/m/mips.h Mon May 14 13:52:28 2001 @@ -136,8 +136,6 @@ /* The `select' in the system won't work for pipes, so don't use it. */ #undef HAVE_SELECT /* override configuration decision */ -#define HAVE_PTYS - /* ??? */ #define IRIS diff --text -u 'xemacs-21.5.1/src/m/pfa50.h' 'xemacs-21.5.2/src/m/pfa50.h' Index: ././src/m/pfa50.h --- ././src/m/pfa50.h Fri Apr 13 03:24:37 2001 +++ ././src/m/pfa50.h Mon May 14 13:52:28 2001 @@ -56,8 +56,6 @@ #define TERMINFO -#define HAVE_PTYS - /* SX/A use SystemV style getdents/readdir. */ #define NO_SIOCTL_H diff --text -u 'xemacs-21.5.1/src/m/sps7.h' 'xemacs-21.5.2/src/m/sps7.h' Index: ././src/m/sps7.h --- ././src/m/sps7.h Fri Apr 13 03:24:39 2001 +++ ././src/m/sps7.h Mon May 14 13:52:28 2001 @@ -44,12 +44,6 @@ #define SMX #define V3x -/* - * Define HAVE_PTYS if the system supports pty devices. - */ - -#define HAVE_PTYS - /* Have the socketpair call */ diff --text -u 'xemacs-21.5.1/src/m/stride.h' 'xemacs-21.5.2/src/m/stride.h' Index: ././src/m/stride.h --- ././src/m/stride.h Fri Apr 13 03:24:39 2001 +++ ././src/m/stride.h Mon May 14 13:52:28 2001 @@ -50,7 +50,6 @@ /* The STRIDE system is more powerful than standard USG5. */ -#define HAVE_PTYS #define SKTPAIR #define MAIL_USE_FLOCK diff --text -u 'xemacs-21.5.1/src/m/tad68k.h' 'xemacs-21.5.2/src/m/tad68k.h' Index: ././src/m/tad68k.h --- ././src/m/tad68k.h Fri Apr 13 03:24:40 2001 +++ ././src/m/tad68k.h Mon May 14 13:52:28 2001 @@ -73,5 +73,4 @@ /* omit next three lines if no TCP installed */ #define select gnu_select /* avoid select() name clash */ -#define HAVE_PTYS /* we do have PTYs if we have TCP */ #define LIBS_SYSTEM "-lsocket" /* get TCP networking functions */ diff --text -u 'xemacs-21.5.1/src/m/tekxd88.h' 'xemacs-21.5.2/src/m/tekxd88.h' Index: ././src/m/tekxd88.h --- ././src/m/tekxd88.h Fri Apr 13 03:24:40 2001 +++ ././src/m/tekxd88.h Mon May 14 13:52:28 2001 @@ -67,9 +67,6 @@ #undef LIB_X11_LIB /* Don't use shared libraries defined in usg5-3.h */ #undef LIBX11_SYSTEM -#define HAVE_PTYS /* XD88 SysV has PTYs. */ -#define SYSV_PTYS /* Requires */ - #ifdef ghs /* Stands for "Green Hills Software", defined only in /bin/cc */ /* -X18 means do not allocate programmer-defined local variables to a register unless they are declared register. (Copied from perl-4.036 diff --text -u 'xemacs-21.5.1/src/m/wicat.h' 'xemacs-21.5.2/src/m/wicat.h' Index: ././src/m/wicat.h --- ././src/m/wicat.h Fri Apr 13 03:24:41 2001 +++ ././src/m/wicat.h Mon May 14 13:52:28 2001 @@ -98,7 +98,6 @@ /* For WICAT version supporting PTYs and select (currently internal only) */ -#ifdef HAVE_PTYS #undef FIRST_PTY_LETTER #define FIRST_PTY_LETTER 'q' #endif diff --text -u 'xemacs-21.5.1/src/macros.c' 'xemacs-21.5.2/src/macros.c' Index: ././src/macros.c --- ././src/macros.c Fri Apr 13 03:24:00 2001 +++ ././src/macros.c Thu May 24 16:51:22 2001 @@ -62,7 +62,7 @@ /* This function can GC */ struct console *con = XCONSOLE (Vselected_console); if (!NILP (con->defining_kbd_macro)) - error ("Already defining kbd macro"); + invalid_operation ("Already defining kbd macro", Qunbound); if (NILP (con->kbd_macro_builder)) con->kbd_macro_builder = make_vector (30, Qnil); @@ -105,7 +105,7 @@ int repeat; if (NILP (con->defining_kbd_macro)) - error ("Not defining kbd macro"); + invalid_operation ("Not defining kbd macro", Qunbound); if (NILP (arg)) repeat = -1; @@ -193,7 +193,7 @@ } else if (!EQ (Vexecuting_macro, Qt)) /* Some things replace the macro with Qt to force an early exit. */ - error ("junk in executing-macro"); + signal_error (Qinvalid_state, "junk in executing-macro", Qunbound); Fthrow (Qexecute_kbd_macro, Qt); } @@ -234,9 +234,9 @@ struct console *con = XCONSOLE (Vselected_console); if (!NILP (con->defining_kbd_macro)) - error ("Can't execute anonymous macro while defining one"); + invalid_operation ("Can't execute anonymous macro while defining one", Qunbound); else if (NILP (con->last_kbd_macro)) - error ("No kbd macro has been defined"); + invalid_operation ("No kbd macro has been defined", Qunbound); else Fexecute_kbd_macro (con->last_kbd_macro, prefix); return Qnil; @@ -275,7 +275,7 @@ final = indirect_function (macro, 1); if (!STRINGP (final) && !VECTORP (final)) - error ("Keyboard macros must be strings or vectors"); + invalid_argument ("Keyboard macros must be strings or vectors", Qunbound); tem = Fcons (Vexecuting_macro, make_int (executing_macro_index)); record_unwind_protect (pop_kbd_macro, tem); @@ -307,7 +307,7 @@ DEFSUBR (Fcall_last_kbd_macro); DEFSUBR (Fexecute_kbd_macro); DEFSUBR (Fcancel_kbd_macro_events); - defsymbol (&Qexecute_kbd_macro, "execute-kbd-macro"); + DEFSYMBOL (Qexecute_kbd_macro); } void diff --text -u 'xemacs-21.5.1/src/marker.c' 'xemacs-21.5.2/src/marker.c' Index: ././src/marker.c --- ././src/marker.c Fri Apr 13 03:24:01 2001 +++ ././src/marker.c Thu May 24 16:51:23 2001 @@ -59,7 +59,7 @@ char buf[200]; if (print_readably) - error ("printing unreadable object #", (long) marker); + printing_unreadable_object ("#", (long) marker); write_c_string (GETTEXT ("#buffer) @@ -186,8 +186,8 @@ (MARKERP (position) && !XMARKER (position)->buffer)) { if (point_p) - signal_simple_error ("Can't make point-marker point nowhere", - marker); + invalid_operation ("Can't make point-marker point nowhere", + marker); if (XMARKER (marker)->buffer) unchain_marker (marker); return marker; @@ -204,7 +204,7 @@ if (!BUFFER_LIVE_P (XBUFFER (buffer))) { if (point_p) - signal_simple_error + invalid_operation ("Can't move point-marker in a killed buffer", marker); if (XMARKER (marker)->buffer) unchain_marker (marker); @@ -231,8 +231,8 @@ #ifndef moving_point_by_moving_its_marker_is_a_bug BUF_SET_PT (b, charno); /* this will move the marker */ #else /* It's not a feature, so it must be a bug */ - signal_simple_error ("DEBUG: attempt to move point via point-marker", - marker); + invalid_operation ("DEBUG: attempt to move point via point-marker", + marker); #endif } else @@ -243,7 +243,7 @@ if (m->buffer != b) { if (point_p) - signal_simple_error ("Can't change buffer of point-marker", marker); + invalid_operation ("Can't change buffer of point-marker", marker); if (m->buffer != 0) unchain_marker (marker); m->buffer = b; @@ -327,7 +327,7 @@ Bytind pos; if (!buf) - error ("Marker does not point anywhere"); + invalid_argument ("Marker does not point anywhere", Qunbound); /* FSF claims that marker indices could end up denormalized, i.e. in the gap. This is way bogus if it ever happens, and means @@ -351,7 +351,7 @@ struct buffer *buf = XMARKER (marker)->buffer; if (!buf) - error ("Marker does not point anywhere"); + invalid_argument ("Marker does not point anywhere", Qunbound); return bytind_to_bufpos (buf, bi_marker_position (marker)); } @@ -363,7 +363,7 @@ struct buffer *buf = m->buffer; if (!buf) - error ("Marker does not point anywhere"); + invalid_argument ("Marker does not point anywhere", Qunbound); #ifdef ERROR_CHECK_BUFPOS if (pos < BI_BUF_BEG (buf) || pos > BI_BUF_Z (buf)) @@ -379,7 +379,7 @@ struct buffer *buf = XMARKER (marker)->buffer; if (!buf) - error ("Marker does not point anywhere"); + invalid_argument ("Marker does not point anywhere", Qunbound); set_bi_marker_position (marker, bufpos_to_bytind (buf, pos)); } diff --text -u 'xemacs-21.5.1/src/md5.c' 'xemacs-21.5.2/src/md5.c' Index: ././src/md5.c --- ././src/md5.c Fri Apr 13 03:24:01 2001 +++ ././src/md5.c Thu May 24 16:51:23 2001 @@ -502,7 +502,7 @@ /* Default to binary. */ coding_system = Fget_coding_system (Qbinary); else - signal_simple_error ("No such coding system", coding); + invalid_argument ("No such coding system", coding); } } return coding_system; diff --text -u 'xemacs-21.5.1/src/menubar-gtk.c' 'xemacs-21.5.2/src/menubar-gtk.c' Index: ././src/menubar-gtk.c --- ././src/menubar-gtk.c Fri Apr 13 03:24:01 2001 +++ ././src/menubar-gtk.c Thu May 24 16:51:23 2001 @@ -439,7 +439,7 @@ Lisp_Object cascade = desc; desc = Fcdr (desc); if (NILP (desc)) - signal_simple_error ("keyword in menu lacks a value", + sferror ("keyword in menu lacks a value", cascade); val = Fcar (desc); desc = Fcdr (desc); @@ -458,7 +458,7 @@ || CHARP (val)) wv->accel = LISP_TO_VOID (val); else - signal_simple_error ("bad keyboard accelerator", val); + invalid_argument ("bad keyboard accelerator", val); #endif } else if (EQ (key, Q_label)) @@ -466,7 +466,7 @@ /* implement in 21.2 */ } else - signal_simple_error ("unknown menu cascade keyword", cascade); + invalid_argument ("unknown menu cascade keyword", cascade); } gtk_object_set_data (GTK_OBJECT (menu_item), XEMACS_MENU_DESCR_TAG, LISP_TO_VOID (desc)); @@ -486,7 +486,7 @@ } else { - signal_simple_error ("menu name (first element) must be a string", + invalid_argument ("menu name (first element) must be a string", desc); } @@ -612,7 +612,7 @@ GtkWidget *widget = NULL; if (length < 2) - signal_simple_error ("button descriptors must be at least 2 long", descr); + sferror ("button descriptors must be at least 2 long", descr); /* length 2: [ "name" callback ] length 3: [ "name" callback active-p ] @@ -636,7 +636,7 @@ /* the new way */ int i; if (length & 1) - signal_simple_error ( + sferror ( "button descriptor has an odd number of keywords and values", descr); @@ -647,7 +647,7 @@ Lisp_Object key = contents [i++]; Lisp_Object val = contents [i++]; if (!KEYWORDP (key)) - signal_simple_error_2 ("not a keyword", key, descr); + invalid_argument_2 ("not a keyword", key, descr); if (EQ (key, Q_active)) active_p = val; else if (EQ (key, Q_suffix)) suffix = val; @@ -663,12 +663,12 @@ if ( SYMBOLP (val) || CHARP (val)) accel = val; else - signal_simple_error ("bad keyboard accelerator", val); + invalid_argument ("bad keyboard accelerator", val); } else if (EQ (key, Q_filter)) - signal_simple_error(":filter keyword not permitted on leaf nodes", descr); + sferror(":filter keyword not permitted on leaf nodes", descr); else - signal_simple_error_2 ("unknown menu item keyword", key, descr); + invalid_argument_2 ("unknown menu item keyword", key, descr); } } @@ -809,7 +809,7 @@ } else { - signal_simple_error_2 ("unknown style", style, descr); + invalid_argument_2 ("unknown style", style, descr); } gtk_widget_set_sensitive (widget, ! NILP (active_p)); diff --text -u 'xemacs-21.5.1/src/menubar-msw.c' 'xemacs-21.5.2/src/menubar-msw.c' Index: ././src/menubar-msw.c --- ././src/menubar-msw.c Fri Apr 13 03:24:01 2001 +++ ././src/menubar-msw.c Thu May 31 21:45:39 2001 @@ -150,7 +150,7 @@ while ((ptr = (Bufbyte *) memchr (ptr, '&', len - (ptr - item))) != NULL) { if (len + 2 > maxlen) - syntax_error ("Menu item produces too long displayable string", + invalid_argument ("Menu item produces too long displayable string", error_name); memmove (ptr + 1, ptr, (len - (ptr - item)) + 1); len++; @@ -160,7 +160,7 @@ /* Replace XEmacs accelerator '%_' with Windows accelerator '&' and `%%' with `%'. */ ptr = item; - while ((ptr = memchr (ptr, '%', len - (ptr - item))) != NULL) + while ((ptr = (Bufbyte *) memchr (ptr, '%', len - (ptr - item))) != NULL) { if (*(ptr + 1) == '_') { @@ -194,7 +194,7 @@ { /* Force a default accelerator */ if (len + 2 > maxlen) - syntax_error ("Menu item produces too long displayable string", + invalid_argument ("Menu item produces too long displayable string", error_name); ptr = item; memmove (ptr + 1, ptr, len + 1); @@ -354,7 +354,8 @@ { item_info.fType = MFT_STRING; item_info.fState = MFS_DISABLED; - item_info.dwTypeData = XSTRING_DATA (item); + /* !!#### mule-bogosity, fixed in my mule ws */ + item_info.dwTypeData = (Extbyte *) XSTRING_DATA (item); oldflags |= MF_STRING | MF_DISABLED; oldlpnewitem = item_info.dwTypeData; } @@ -373,7 +374,7 @@ menu_parse_submenu_keywords (item, gui_item); if (!STRINGP (pgui_item->name)) - syntax_error ("Menu name (first element) must be a string", + invalid_argument ("Menu name (first element) must be a string", item); if (!gui_item_included_p (gui_item, Vmenubar_configuration)) @@ -479,7 +480,7 @@ UNGCPRO; } else - syntax_error ("Malformed menu item descriptor", item); + sferror ("Malformed menu item descriptor", item); if (flush_right) item_info.fType |= MFT_RIGHTJUSTIFY; /* can't support in 3.51 */ @@ -534,7 +535,7 @@ /* Check that menu name is specified when expected */ if (NILP (pgui_item->name) && deep_p) - syntax_error ("Menu must have a name", desc); + sferror ("Menu must have a name", desc); /* Apply filter if specified */ if (!NILP (pgui_item->filter)) @@ -744,14 +745,14 @@ #ifdef DEBUG_XEMACS /* Allow to continue in a debugger after assert - not so fatal */ if (UNBOUNDP (path)) - error ("internal menu error"); + signal_error (Qinternal_error, "internal menu error", Qunbound); #endif /* Now find a desc chunk for it. If none, then probably menu open hook has played too much games around stuff */ desc = Fmenu_find_real_submenu (current_menudesc, path); if (NILP (desc)) - signal_simple_error ("This menu does not exist any more", path); + invalid_state ("This menu does not exist any more", path); /* Now, stuff it */ /* DESC may be generated by filter, so we have to gcpro it */ @@ -956,8 +957,8 @@ if (!ok) { menu_cleanup (f); - signal_simple_error ("Cannot track popup menu while in menu", - menu_desc); + invalid_operation ("Cannot track popup menu while in menu", + menu_desc); } UNGCPRO; } diff --text -u 'xemacs-21.5.1/src/menubar-x.c' 'xemacs-21.5.2/src/menubar-x.c' Index: ././src/menubar-x.c --- ././src/menubar-x.c Fri Apr 13 03:24:02 2001 +++ ././src/menubar-x.c Thu May 24 16:51:23 2001 @@ -173,7 +173,7 @@ Lisp_Object cascade = desc; desc = Fcdr (desc); if (NILP (desc)) - syntax_error ("Keyword in menu lacks a value", cascade); + sferror ("Keyword in menu lacks a value", cascade); val = Fcar (desc); desc = Fcdr (desc); if (EQ (key, Q_included)) @@ -190,14 +190,14 @@ || CHARP (val)) wv->accel = LISP_TO_VOID (val); else - syntax_error ("bad keyboard accelerator", val); + invalid_argument ("bad keyboard accelerator", val); } else if (EQ (key, Q_label)) { /* implement in 21.2 */ } else - syntax_error ("Unknown menu cascade keyword", cascade); + invalid_argument ("Unknown menu cascade keyword", cascade); } if ((!NILP (config_tag) @@ -284,7 +284,7 @@ } else { - syntax_error ("Menu name (first element) must be a string", desc); + sferror ("Menu name (first element) must be a string", desc); } if (deep_p || menubar_root_p) @@ -296,7 +296,7 @@ if (menubar_root_p && NILP (child)) /* the partition */ { if (partition_seen) - syntax_error + sferror ("More than one partition (nil) in menubar description", desc); partition_seen = 1; @@ -321,9 +321,9 @@ wv = NULL; } else if (NILP (desc)) - syntax_error ("nil may not appear in menu descriptions", desc); + sferror ("nil may not appear in menu descriptions", desc); else - syntax_error ("Unrecognized menu descriptor", desc); + sferror ("Unrecognized menu descriptor", desc); menu_item_done: @@ -814,7 +814,7 @@ CHECK_STRING (XCAR (menu_desc)); data = menu_item_descriptor_to_widget_value (menu_desc, POPUP_TYPE, 1, 1); - if (! data) error ("no menu"); + if (! data) signal_error (Qgui_error, "no menu", Qunbound); menu_id = new_lwlib_id (); menu = lw_create_widget ("popup", "popup" /* data->name */, menu_id, data, @@ -1332,7 +1332,7 @@ widget_value *val; if (NILP (f->menubar_data)) - error ("Frame has no menubar."); + invalid_argument ("Frame has no menubar", Qunbound); id = XPOPUP_DATA (f->menubar_data)->id; val = lw_get_all_values (id); diff --text -u 'xemacs-21.5.1/src/menubar.c' 'xemacs-21.5.2/src/menubar.c' Index: ././src/menubar.c --- ././src/menubar.c Fri Apr 13 03:24:02 2001 +++ ././src/menubar.c Thu May 24 16:51:23 2001 @@ -381,18 +381,18 @@ void syms_of_menubar (void) { - defsymbol (&Qcurrent_menubar, "current-menubar"); + DEFSYMBOL (Qcurrent_menubar); - defsymbol (&Qmenu_force, "menu-force"); - defsymbol (&Qmenu_fallback, "menu-fallback"); + DEFSYMBOL (Qmenu_force); + DEFSYMBOL (Qmenu_fallback); - defsymbol (&Qmenu_quit, "menu-quit"); - defsymbol (&Qmenu_up, "menu-up"); - defsymbol (&Qmenu_down, "menu-down"); - defsymbol (&Qmenu_left, "menu-left"); - defsymbol (&Qmenu_right, "menu-right"); - defsymbol (&Qmenu_select, "menu-select"); - defsymbol (&Qmenu_escape, "menu-escape"); + DEFSYMBOL (Qmenu_quit); + DEFSYMBOL (Qmenu_up); + DEFSYMBOL (Qmenu_down); + DEFSYMBOL (Qmenu_left); + DEFSYMBOL (Qmenu_right); + DEFSYMBOL (Qmenu_select); + DEFSYMBOL (Qmenu_escape); DEFSUBR (Fpopup_menu); DEFSUBR (Fnormalize_menu_item_name); @@ -625,7 +625,7 @@ the menubar will still be performed optimally. */ ); Vactivate_menubar_hook = Qnil; - defsymbol (&Qactivate_menubar_hook, "activate-menubar-hook"); + DEFSYMBOL (Qactivate_menubar_hook); DEFVAR_BOOL ("menubar-show-keybindings", &menubar_show_keybindings /* If true, the menubar will display keyboard equivalents. diff --text -u 'xemacs-21.5.1/src/minibuf.c' 'xemacs-21.5.2/src/minibuf.c' Index: ././src/minibuf.c --- ././src/minibuf.c Fri Apr 13 03:24:02 2001 +++ ././src/minibuf.c Thu May 24 16:51:23 2001 @@ -393,8 +393,8 @@ Lisp_Symbol *next; if (!SYMBOLP (bucket)) { - signal_simple_error ("Bad obarray passed to try-completions", - bucket); + invalid_argument ("Bad obarray passed to try-completions", + bucket); } next = symbol_next (XSYMBOL (bucket)); elt = bucket; @@ -927,9 +927,9 @@ void syms_of_minibuf (void) { - defsymbol (&Qminibuffer_setup_hook, "minibuffer-setup-hook"); + DEFSYMBOL (Qminibuffer_setup_hook); - defsymbol (&Qcompletion_ignore_case, "completion-ignore-case"); + DEFSYMBOL (Qcompletion_ignore_case); DEFSUBR (Fminibuffer_depth); #if 0 @@ -942,10 +942,10 @@ DEFSUBR (Ftry_completion); DEFSUBR (Fall_completions); - defsymbol (&Qappend_message, "append-message"); - defsymbol (&Qclear_message, "clear-message"); - defsymbol (&Qdisplay_message, "display-message"); - defsymbol (&Qcurrent_message_label, "current-message-label"); + DEFSYMBOL (Qappend_message); + DEFSYMBOL (Qclear_message); + DEFSYMBOL (Qdisplay_message); + DEFSYMBOL (Qcurrent_message_label); } void diff --text -u 'xemacs-21.5.1/src/miscplay.c' 'xemacs-21.5.2/src/miscplay.c' Index: ././src/miscplay.c --- ././src/miscplay.c Fri Apr 13 03:24:02 2001 +++ ././src/miscplay.c Wed Jun 6 21:34:46 2001 @@ -16,17 +16,20 @@ ** implied warranty. */ -#ifdef HAVE_CONFIG_H +/* Synched up with: Not in FSF. */ + +/* This file Mule-ized by Ben Wing, 5-15-01. */ + +#define DONT_ENCAPSULATE + #include -#endif +#include "lisp.h" #include "miscplay.h" -#include "lisp.h" +#include "sound.h" + #include "syssignal.h" #include "sysfile.h" -#define warn(str) message("audio: %s ",GETTEXT(str)) - -#include #ifdef __GNUC__ #define UNUSED(x) ((void)(x)) @@ -53,7 +56,7 @@ int align; enum wvState state; size_t left; - unsigned char leftover[HEADERSZ]; + UChar_Binary leftover[HEADERSZ]; signed long chunklength; } wave; struct { @@ -61,13 +64,13 @@ int isdata; int skipping; size_t left; - unsigned char leftover[HEADERSZ]; + UChar_Binary leftover[HEADERSZ]; } audio; } parsestate; /* Use a global buffer as scratch-pad for possible conversions of the sampling format */ -unsigned char miscplay_sndbuf[SNDBUFSZ]; +UChar_Binary miscplay_sndbuf[SNDBUFSZ]; /* Initialize global parser state information to zero */ void reset_parsestate() @@ -81,7 +84,7 @@ { if (parsestate.wave.state != wvOutOfBlock && parsestate.wave.state != wvFatal) { - warn("Unexpected end of WAVE file"); + sound_warn("Unexpected end of WAVE file"); return 0; } else return 1; @@ -113,12 +116,12 @@ this might require re-partioning of the data segments if headers cross the boundaries between two read operations. This is done in a two-step way: first we request a certain amount of bytes... */ -static inline int waverequire(void **data,size_t *sz,size_t rq) +static int waverequire(void **data,size_t *sz,size_t rq) { int rc = 1; if (rq > HEADERSZ) { - warn("Header size exceeded while parsing WAVE file"); + sound_warn("Header size exceeded while parsing WAVE file"); parsestate.wave.state = wvFatal; *sz = 0; return(0); } @@ -128,7 +131,7 @@ memcpy(parsestate.wave.leftover+parsestate.wave.left, *data,rq); parsestate.wave.left += rq; - (*(unsigned char **)data) += rq; + (*(UChar_Binary **)data) += rq; *sz -= rq; return(rc); } @@ -171,7 +174,7 @@ if (parsestate.wave.align != 1 && parsestate.wave.align != 2 && parsestate.wave.align != 4) { - warn("Illegal datawidth detected while parsing WAVE file"); + sound_warn("Illegal datawidth detected while parsing WAVE file"); parsestate.wave.state = wvFatal; } else parsestate.wave.state = wvOutOfBlock; @@ -199,7 +202,7 @@ else { if (parsestate.wave.chunklength > 0 && *sz > 0) { *sz -= parsestate.wave.chunklength; - (*(unsigned char **)data) += parsestate.wave.chunklength; } + (*(UChar_Binary **)data) += parsestate.wave.chunklength; } parsestate.wave.state = wvOutOfBlock; } break; case wvSoundChunk: { @@ -224,7 +227,7 @@ count = *sz; count -= rq = count % parsestate.wave.align; } *outbuf = *data; - (*(unsigned char **)data) += count; + (*(UChar_Binary **)data) += count; *sz -= count; if ((parsestate.wave.chunklength -= count) < parsestate.wave.align) { parsestate.wave.state = wvOutOfBlock; @@ -239,7 +242,7 @@ waverequire(data,sz,rq); return(count); } case wvFatalNotify: - warn("Irrecoverable error while parsing WAVE file"); + sound_warn("Irrecoverable error while parsing WAVE file"); parsestate.wave.state = wvFatal; break; case wvFatal: @@ -265,7 +268,7 @@ count = parsestate.audio.align - parsestate.audio.left); *outbuf = parsestate.audio.leftover; *sz -= count; - *data = (*(char **)data) + count; + *data = (*(Char_Binary **)data) + count; parsestate.audio.left = 0; return(parsestate.audio.align); } else { @@ -273,7 +276,7 @@ memmove(parsestate.audio.leftover + parsestate.audio.left, *data, *sz); - *data = (*(char **)data) + *sz; + *data = (*(Char_Binary **)data) + *sz; parsestate.audio.left += *sz; *sz = 0; return(0); } } @@ -285,7 +288,7 @@ *outbuf = *data; if ((parsestate.audio.left = rc % parsestate.audio.align) != 0) { memmove(parsestate.audio.leftover, - (char *)*outbuf + rc - parsestate.audio.left, + (Char_Binary *)*outbuf + rc - parsestate.audio.left, parsestate.audio.left); rc -= parsestate.audio.left; } *sz = 0; @@ -295,9 +298,9 @@ header information and determine how many bytes we need to skip until the start of the sound chunk */ if (!parsestate.audio.skipping) { - unsigned char *header = (unsigned char *) *data; + UChar_Binary *header = (UChar_Binary *) *data; if (*sz < 8) { - warn("Irrecoverable error while parsing Sun/DEC audio file"); + sound_warn("Irrecoverable error while parsing Sun/DEC audio file"); return(0); } /* Keep compatibility with Linux 68k, etc. by not relying on byte-sex */ if (header[3]) { /* Sun audio (big endian) */ @@ -317,10 +320,10 @@ if (*sz >= (size_t) parsestate.audio.skipping) { /* Skip just the header information and return the sound chunk */ int rc = *sz - parsestate.audio.skipping; - *outbuf = (char *)*data + parsestate.audio.skipping; + *outbuf = (Char_Binary *)*data + parsestate.audio.skipping; if ((parsestate.audio.left = rc % parsestate.audio.align) != 0) { memmove(parsestate.audio.leftover, - (char *)*outbuf + rc - parsestate.audio.left, + (Char_Binary *)*outbuf + rc - parsestate.audio.left, parsestate.audio.left); rc -= parsestate.audio.left; } *sz = 0; @@ -348,20 +351,20 @@ /* Convert 8 bit unsigned stereo data to 8 bit unsigned mono data */ size_t sndcnv8U_2mono(void **data,size_t *sz,void **outbuf) { - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc,count; count = *sz / 2; if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; while (count--) { - *dest++ = (unsigned char)(((int)*(src) + + *dest++ = (UChar_Binary)(((int)*(src) + (int)*(src+1)) / 2); src += 2; } @@ -372,21 +375,21 @@ /* Convert 8 bit signed stereo data to 8 bit signed mono data */ size_t sndcnv8S_2mono(void **data,size_t *sz,void **outbuf) { - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc, count; count = *sz / 2; if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; while (count--) { - *dest++ = (unsigned char)(((int)*((signed char *)(src)) + - (int)*((signed char *)(src+1))) / 2); + *dest++ = (UChar_Binary)(((int)*((SChar_Binary *)(src)) + + (int)*((SChar_Binary *)(src+1))) / 2); src += 2; } *data = src; @@ -396,21 +399,21 @@ /* Convert 8 bit signed stereo data to 8 bit unsigned mono data */ size_t sndcnv2monounsigned(void **data,size_t *sz,void **outbuf) { - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc,count; count = *sz / 2; if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; while (count--) { - *dest++ = (unsigned char)(((int)*((signed char *)(src)) + - (int)*((signed char *)(src+1))) / 2) ^ 0x80; + *dest++ = (UChar_Binary)(((int)*((SChar_Binary *)(src)) + + (int)*((SChar_Binary *)(src+1))) / 2) ^ 0x80; src += 2; } *data = src; @@ -420,15 +423,15 @@ /* Convert 8 bit signed mono data to 8 bit unsigned mono data */ size_t sndcnv2unsigned(void **data,size_t *sz,void **outbuf) { - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc,count; count = *sz; if (count > SNDBUFSZ) { *sz -= SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; while (count--) @@ -439,7 +442,7 @@ /* Convert a number in the range -32768..32767 to an 8 bit ulaw encoded number --- I hope, I got this conversion right :-) */ -static inline signed char int2ulaw(int i) +static inline SChar_Binary int2ulaw(int i) { /* Lookup table for fast calculation of number of bits that need shifting*/ static short int t_bits[128] = { @@ -464,7 +467,7 @@ size_t sndcnvULaw_2linear(void **data,size_t *sz,void **outbuf) { /* conversion table stolen from Linux's ulaw.h */ - static unsigned char ulaw_dsp[] = { + static UChar_Binary ulaw_dsp[] = { 3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63, 66, 68, 70, 72, 74, 76, 78, 80, @@ -498,7 +501,7 @@ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; - unsigned char *p=(unsigned char *)*data; + UChar_Binary *p=(UChar_Binary *)*data; *outbuf = *data; while ((*sz)--) @@ -508,7 +511,7 @@ } *sz = 0; *data = p; - return p - (unsigned char *)*outbuf; + return p - (UChar_Binary *)*outbuf; } /* Convert 8 bit ulaw stereo data to 8 bit ulaw mono data */ @@ -550,15 +553,15 @@ +60, +56, +52, +48, +44, +40, +36, +32, +28, +24, +20, +16, +12, +8, +4, +0}; - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc,count; count = *sz / 2; if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; while (count--) @@ -596,8 +599,8 @@ signed mono data */ size_t sndcnv16_2monoLE(void **data,size_t *sz,void **outbuf) { - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc,count; signed short i; @@ -605,7 +608,7 @@ if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; for (count /= 2; count--; ) { @@ -614,8 +617,8 @@ (int)(src[2]) + 256*(int)(src[3])) / 2; src += 4; - *dest++ = (unsigned char)(i & 0xFF); - *dest++ = (unsigned char)((i / 256) & 0xFF); } + *dest++ = (UChar_Binary)(i & 0xFF); + *dest++ = (UChar_Binary)((i / 256) & 0xFF); } *data = src; return(rc); } @@ -624,8 +627,8 @@ signed mono data */ size_t sndcnv16_2monoBE(void **data,size_t *sz,void **outbuf) { - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc,count; signed short i; @@ -633,7 +636,7 @@ if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; for (count /= 2; count--; ) { @@ -642,8 +645,8 @@ (int)(src[3]) + 256*(int)(src[2])) / 2; src += 4; - *dest++ = (unsigned char)((i / 256) & 0xFF); - *dest++ = (unsigned char)(i & 0xFF); } + *dest++ = (UChar_Binary)((i / 256) & 0xFF); + *dest++ = (UChar_Binary)(i & 0xFF); } *data = src; return(rc); } @@ -651,19 +654,19 @@ /* Convert 16 bit little endian signed data to 8 bit unsigned data */ size_t sndcnv2byteLE(void **data,size_t *sz,void **outbuf) { - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc,count; count = *sz / 2; if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; while (count--) { - *dest++ = (unsigned char)(((signed char *)src)[1] ^ (signed char)0x80); + *dest++ = (UChar_Binary)(((SChar_Binary *)src)[1] ^ (SChar_Binary)0x80); src += 2; } *data = src; @@ -673,19 +676,19 @@ /* Convert 16 bit big endian signed data to 8 bit unsigned data */ size_t sndcnv2byteBE(void **data,size_t *sz,void **outbuf) { - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc,count; count = *sz / 2; if (count > SNDBUFSZ) { *sz -= 2*SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; while (count--) { - *dest++ = (unsigned char)(((signed char *)src)[0] ^ (signed char)0x80); + *dest++ = (UChar_Binary)(((SChar_Binary *)src)[0] ^ (SChar_Binary)0x80); src += 2; } *data = src; @@ -696,20 +699,20 @@ mono data */ size_t sndcnv2monobyteLE(void **data,size_t *sz,void **outbuf) { - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc,count; count = *sz / 4; if (count > SNDBUFSZ) { *sz -= 4*SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; while (count--) { - *dest++ = (unsigned char)(((int)((signed char *)src)[1] + - (int)((signed char *)src)[3]) / 2 ^ 0x80); + *dest++ = (UChar_Binary)(((int)((SChar_Binary *)src)[1] + + (int)((SChar_Binary *)src)[3]) / 2 ^ 0x80); src += 4; } *data = src; @@ -720,20 +723,20 @@ mono data */ size_t sndcnv2monobyteBE(void **data,size_t *sz,void **outbuf) { - REGISTER unsigned char *src; - REGISTER unsigned char *dest; + REGISTER UChar_Binary *src; + REGISTER UChar_Binary *dest; int rc,count; count = *sz / 4; if (count > SNDBUFSZ) { *sz -= 4*SNDBUFSZ; count = SNDBUFSZ; } else *sz = 0; rc = count; - src = (unsigned char *) *data; + src = (UChar_Binary *) *data; *outbuf = dest = miscplay_sndbuf; while (count--) { - *dest++ = (unsigned char)(((int)((signed char *)src)[0] + - (int)((signed char *)src)[2]) / 2 ^ 0x80); + *dest++ = (UChar_Binary)(((int)((SChar_Binary *)src)[0] + + (int)((SChar_Binary *)src)[2]) / 2 ^ 0x80); src += 4; } *data = src; @@ -743,7 +746,7 @@ /* Look at the header of the sound file and try to determine the format; we can recognize files in VOC, WAVE, and, Sun/DEC-audio format--- everything else is assumed to be raw 8 bit unsigned data sampled at 8kHz */ -fmtType analyze_format(unsigned char *format,int *fmt,int *speed, +fmtType analyze_format(UChar_Binary *format,int *fmt,int *speed, int *tracks, size_t (**parsesndfile)(void **,size_t *sz, void **)) diff --text -u 'xemacs-21.5.1/src/miscplay.h' 'xemacs-21.5.2/src/miscplay.h' Index: ././src/miscplay.h --- ././src/miscplay.h Fri Apr 13 03:24:02 2001 +++ ././src/miscplay.h Thu May 24 16:51:24 2001 @@ -16,11 +16,13 @@ ** implied warranty. */ +/* Synched up with: Not in FSF. */ + +/* This file Mule-ized by Ben Wing, 5-15-01. */ + #ifndef INCLUDED_miscplay_h_ #define INCLUDED_miscplay_h_ -#include - #define HEADERSZ 256 /* has to be at least as big as the biggest header */ #define SNDBUFSZ 2048 /* has to be at least as big as HEADERSZ */ @@ -53,7 +55,7 @@ size_t sndcnv2monobyteLE(void **data,size_t *sz,void **outbuf); size_t sndcnv2monobyteBE(void **data,size_t *sz,void **outbuf); -fmtType analyze_format(unsigned char *format,int *fmt,int *speed, +fmtType analyze_format(UChar_Binary *format,int *fmt,int *speed, int *tracks, size_t (**parsesndfile)(void **,size_t *sz, void **)); diff --text -u 'xemacs-21.5.1/src/mule-canna.c' 'xemacs-21.5.2/src/mule-canna.c' Index: ././src/mule-canna.c --- ././src/mule-canna.c Fri Apr 13 03:24:03 2001 +++ ././src/mule-canna.c Sun Jun 10 19:42:31 2001 @@ -55,7 +55,7 @@ - list of warning messages DESCRIPTION: Initialize ``canna'', which is a kana-to-kanji - converter for GNU Emacs. The first arg + converter for XEmacs. The first arg specifies if inserting space character between BUNSETSU when candidates are displayed. The second arg specifies server. The third arg @@ -69,7 +69,7 @@ list of warning messages DESCRIPTION: finalize ``canna'', which is a kana-to-kanji - converter for GNU Emacs. This cause to write + converter for XEmacs. This cause to write miscellaneous informations to kana-to-kanji dictionary. @@ -344,7 +344,7 @@ } DEFUN ("canna-initialize", Fcanna_initialize, 0, 3, 0, /* -Initialize ``canna'', which is a kana-to-kanji converter for GNU Emacs. +Initialize ``canna'', which is a kana-to-kanji converter for XEmacs. The first arg specifies if inserting space character between BUNSETSU when candidates are displayed. The second arg specifies server. @@ -462,7 +462,7 @@ } DEFUN ("canna-finalize", Fcanna_finalize, 0, 0, 0, /* -finalize ``canna'', which is a kana-to-kanji converter for GNU Emacs. +finalize ``canna'', which is a kana-to-kanji converter for XEmacs. This cause to write miscellaneous informations to kana-to-kanji dictionary. */ ()) diff --text -u 'xemacs-21.5.1/src/mule-ccl.c' 'xemacs-21.5.2/src/mule-ccl.c' Index: ././src/mule-ccl.c --- ././src/mule-ccl.c Fri Apr 13 03:24:03 2001 +++ ././src/mule-ccl.c Sun Jun 10 19:42:32 2001 @@ -2,20 +2,20 @@ Copyright (C) 1995, 1997 Electrotechnical Laboratory, JAPAN. Licensed to the Free Software Foundation. -This file is part of GNU Emacs. +This file is part of XEmacs. -GNU Emacs is free software; you can redistribute it and/or modify +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. -GNU Emacs is distributed in the hope that it will be useful, +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 GNU Emacs; see the file COPYING. If not, write to +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. */ @@ -41,6 +41,8 @@ #endif /* not emacs */ +Lisp_Object Qccl_error; + /* This contains all code conversion map available to CCL. */ Lisp_Object Vcode_conversion_map_vector; @@ -1993,11 +1995,11 @@ int i; if (setup_ccl_program (&ccl, ccl_prog) < 0) - error ("Invalid CCL program"); + syntax_error ("Invalid CCL program", Qunbound); CHECK_VECTOR (reg); if (XVECTOR_LENGTH (reg) != 8) - error ("Length of vector REGISTERS is not 8"); + syntax_error ("Length of vector REGISTERS is not 8", Qunbound); for (i = 0; i < 8; i++) ccl.reg[i] = (INTP (XVECTOR_DATA (reg)[i]) @@ -2009,7 +2011,7 @@ CCL_MODE_ENCODING); QUIT; if (ccl.status != CCL_STAT_SUCCESS) - error ("Error in CCL program at %dth code", ccl.ic); + signal_error (Qccl_error, "Error in CCL program at code numbered ...", make_int (ccl.ic)); for (i = 0; i < 8; i++) XSETINT (XVECTOR (reg)->contents[i], ccl.reg[i]); @@ -2050,11 +2052,11 @@ struct gcpro gcpro1, gcpro2; if (setup_ccl_program (&ccl, ccl_prog) < 0) - error ("Invalid CCL program"); + syntax_error ("Invalid CCL program", Qunbound); CHECK_VECTOR (status); if (XVECTOR (status)->size != 9) - error ("Length of vector STATUS is not 9"); + syntax_error ("Length of vector STATUS is not 9", Qunbound); CHECK_STRING (string); GCPRO2 (status, string); @@ -2087,10 +2089,10 @@ Dynarr_free (outbuf); QUIT; if (ccl.status == CCL_STAT_SUSPEND_BY_DST) - error ("Output buffer for the CCL programs overflow"); + signal_error (Qccl_error, "Output buffer for the CCL programs overflow", Qunbound); if (ccl.status != CCL_STAT_SUCCESS && ccl.status != CCL_STAT_SUSPEND_BY_SRC) - error ("Error in CCL program at %dth code", ccl.ic); + signal_error (Qccl_error, "Error in CCL program at code numbered...", make_int (ccl.ic)); return val; } @@ -2228,6 +2230,8 @@ void syms_of_mule_ccl (void) { + DEFERROR_STANDARD (Qccl_error, Qconversion_error); + DEFSUBR (Fccl_program_p); DEFSUBR (Fccl_execute); DEFSUBR (Fccl_execute_on_string); @@ -2241,10 +2245,10 @@ staticpro (&Vccl_program_table); Vccl_program_table = Fmake_vector (make_int (32), Qnil); - defsymbol (&Qccl_program, "ccl-program"); - defsymbol (&Qccl_program_idx, "ccl-program-idx"); - defsymbol (&Qcode_conversion_map, "code-conversion-map"); - defsymbol (&Qcode_conversion_map_id, "code-conversion-map-id"); + DEFSYMBOL (Qccl_program); + DEFSYMBOL (Qccl_program_idx); + DEFSYMBOL (Qcode_conversion_map); + DEFSYMBOL (Qcode_conversion_map_id); DEFVAR_LISP ("code-conversion-map-vector", &Vcode_conversion_map_vector /* Vector of code conversion maps. diff --text -u 'xemacs-21.5.1/src/mule-ccl.h' 'xemacs-21.5.2/src/mule-ccl.h' Index: ././src/mule-ccl.h --- ././src/mule-ccl.h Fri Apr 13 03:24:03 2001 +++ ././src/mule-ccl.h Sun Jun 10 19:42:32 2001 @@ -4,18 +4,18 @@ This file is part of XEmacs. -GNU Emacs is free software; you can redistribute it and/or modify +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. -GNU Emacs is distributed in the hope that it will be useful, +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 GNU Emacs; see the file COPYING. If not, write to +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. */ diff --text -u 'xemacs-21.5.1/src/mule-charset.c' 'xemacs-21.5.2/src/mule-charset.c' Index: ././src/mule-charset.c --- ././src/mule-charset.c Tue May 8 17:08:49 2001 +++ ././src/mule-charset.c Fri May 25 20:26:57 2001 @@ -404,9 +404,10 @@ char buf[200]; if (print_readably) - error ("printing unreadable object #", - string_data (XSYMBOL (CHARSET_NAME (cs))->name), - cs->header.uid); + printing_unreadable_object ("#", + string_data (XSYMBOL (CHARSET_NAME (cs))-> + name), + cs->header.uid); write_c_string ("# 2) - signal_simple_error ("Invalid value for 'dimension", value); + invalid_constant ("Invalid value for 'dimension", value); } else if (EQ (keyword, Qchars)) @@ -712,7 +713,7 @@ CHECK_INT (value); chars = XINT (value); if (chars != 94 && chars != 96) - signal_simple_error ("Invalid value for 'chars", value); + invalid_constant ("Invalid value for 'chars", value); } else if (EQ (keyword, Qcolumns)) @@ -720,7 +721,7 @@ CHECK_INT (value); columns = XINT (value); if (columns != 1 && columns != 2) - signal_simple_error ("Invalid value for 'columns", value); + invalid_constant ("Invalid value for 'columns", value); } else if (EQ (keyword, Qgraphic)) @@ -728,7 +729,7 @@ CHECK_INT (value); graphic = XINT (value); if (graphic < 0 || graphic > 1) - signal_simple_error ("Invalid value for 'graphic", value); + invalid_constant ("Invalid value for 'graphic", value); } else if (EQ (keyword, Qregistry)) @@ -744,7 +745,7 @@ else if (EQ (value, Qr2l)) direction = CHARSET_RIGHT_TO_LEFT; else - signal_simple_error ("Invalid value for 'direction", value); + invalid_constant ("Invalid value for 'direction", value); } else if (EQ (keyword, Qfinal)) @@ -752,7 +753,7 @@ CHECK_CHAR_COERCE_INT (value); final = XCHAR (value); if (final < '0' || final > '~') - signal_simple_error ("Invalid value for 'final", value); + invalid_constant ("Invalid value for 'final", value); } else if (EQ (keyword, Qccl_program)) @@ -760,19 +761,19 @@ struct ccl_program test_ccl; if (setup_ccl_program (&test_ccl, value) < 0) - signal_simple_error ("Invalid value for 'ccl-program", value); + invalid_argument ("Invalid value for 'ccl-program", value); ccl_program = value; } else - signal_simple_error ("Unrecognized property", keyword); + invalid_constant ("Unrecognized property", keyword); } } if (!final) - error ("'final must be specified"); + invalid_argument ("'final must be specified", Qunbound); if (dimension == 2 && final > 0x5F) - signal_simple_error + invalid_constant ("Final must be in the range 0x30 - 0x5F for dimension == 2", make_char (final)); @@ -783,8 +784,9 @@ if (!NILP (CHARSET_BY_ATTRIBUTES (type, final, CHARSET_LEFT_TO_RIGHT)) || !NILP (CHARSET_BY_ATTRIBUTES (type, final, CHARSET_RIGHT_TO_LEFT))) - error - ("Character set already defined for this DIMENSION/CHARS/FINAL combo"); + invalid_argument + ("Character set already defined for this DIMENSION/CHARS/FINAL combo", + Qunbound); id = get_unallocated_leading_byte (dimension); @@ -824,12 +826,12 @@ charset = Fget_charset (charset); if (!NILP (XCHARSET_REVERSE_DIRECTION_CHARSET (charset))) - signal_simple_error ("Charset already has reverse-direction charset", + invalid_operation ("Charset already has reverse-direction charset", charset); CHECK_SYMBOL (new_name); if (!NILP (Ffind_charset (new_name))) - signal_simple_error ("Cannot redefine existing charset", new_name); + invalid_operation ("Cannot redefine existing charset", new_name); cs = XCHARSET (charset); @@ -888,27 +890,27 @@ CHECK_INT (dimension); dm = XINT (dimension); if (dm < 1 || dm > 2) - signal_simple_error ("Invalid value for DIMENSION", dimension); + invalid_constant ("Invalid value for DIMENSION", dimension); CHECK_INT (chars); ch = XINT (chars); if (ch != 94 && ch != 96) - signal_simple_error ("Invalid value for CHARS", chars); + invalid_constant ("Invalid value for CHARS", chars); CHECK_CHAR_COERCE_INT (final); fi = XCHAR (final); if (fi < '0' || fi > '~') - signal_simple_error ("Invalid value for FINAL", final); + invalid_constant ("Invalid value for FINAL", final); if (EQ (direction, Ql2r)) di = CHARSET_LEFT_TO_RIGHT; else if (EQ (direction, Qr2l)) di = CHARSET_RIGHT_TO_LEFT; else if (!NILP (direction)) - signal_simple_error ("Invalid value for DIRECTION", direction); + invalid_constant ("Invalid value for DIRECTION", direction); if (dm == 2 && fi > 0x5F) - signal_simple_error + invalid_constant ("Final must be in the range 0x30 - 0x5F for dimension == 2", final); if (dm == 1) @@ -994,7 +996,7 @@ /* #### Is this translation OK? If so, error checking sufficient? */ return CHARSETP (obj) ? XCHARSET_NAME (obj) : obj; } - signal_simple_error ("Unrecognized charset property name", prop); + invalid_constant ("Unrecognized charset property name", prop); return Qnil; /* not reached */ } @@ -1018,7 +1020,7 @@ charset = Fget_charset (charset); if (setup_ccl_program (&test_ccl, ccl_program) < 0) - signal_simple_error ("Invalid ccl-program", ccl_program); + invalid_argument ("Invalid ccl-program", ccl_program); XCHARSET_CCL_PROGRAM (charset) = ccl_program; face_property_was_changed (Vdefault_face, Qfont, Qglobal); return Qnil; @@ -1089,7 +1091,7 @@ if (CHARSET_DIMENSION (cs) == 1) { if (!NILP (arg2)) - signal_simple_error + invalid_argument ("Charset is of dimension one; second octet must be nil", arg2); return make_char (MAKE_CHAR (charset, a1, 0)); } @@ -1131,7 +1133,7 @@ else if (EQ (n, make_int (1))) return make_int (octet1); else - signal_simple_error ("Octet number must be 0 or 1", n); + invalid_constant ("Octet number must be 0 or 1", n); } DEFUN ("split-char", Fsplit_char, 1, 1, 0, /* @@ -1181,7 +1183,7 @@ if (UNBOUNDP (ch)) { if (composite_char_row_next >= 128) - signal_simple_error ("No more composite chars available", lispstr); + invalid_operation ("No more composite chars available", lispstr); emch = MAKE_CHAR (Vcharset_composite, composite_char_row_next, composite_char_col_next); Fputhash (make_char (emch), lispstr, @@ -1232,7 +1234,7 @@ CHECK_CHAR (ch); emch = XCHAR (ch); if (CHAR_LEADING_BYTE (emch) != LEADING_BYTE_COMPOSITE) - signal_simple_error ("Must be composite char", ch); + invalid_argument ("Must be composite char", ch); return composite_char_string (emch); } #endif /* ENABLE_COMPOSITE_CHARS */ @@ -1275,45 +1277,45 @@ DEFSUBR (Fcomposite_char_string); #endif - defsymbol (&Qcharsetp, "charsetp"); - defsymbol (&Qregistry, "registry"); - defsymbol (&Qfinal, "final"); - defsymbol (&Qgraphic, "graphic"); - defsymbol (&Qdirection, "direction"); - defsymbol (&Qreverse_direction_charset, "reverse-direction-charset"); - defsymbol (&Qshort_name, "short-name"); - defsymbol (&Qlong_name, "long-name"); + DEFSYMBOL (Qcharsetp); + DEFSYMBOL (Qregistry); + DEFSYMBOL (Qfinal); + DEFSYMBOL (Qgraphic); + DEFSYMBOL (Qdirection); + DEFSYMBOL (Qreverse_direction_charset); + DEFSYMBOL (Qshort_name); + DEFSYMBOL (Qlong_name); - defsymbol (&Ql2r, "l2r"); - defsymbol (&Qr2l, "r2l"); + DEFSYMBOL (Ql2r); + DEFSYMBOL (Qr2l); /* Charsets, compatible with FSF 20.3 Naming convention is Script-Charset[-Edition] */ - defsymbol (&Qascii, "ascii"); - defsymbol (&Qcontrol_1, "control-1"); - defsymbol (&Qlatin_iso8859_1, "latin-iso8859-1"); - defsymbol (&Qlatin_iso8859_2, "latin-iso8859-2"); - defsymbol (&Qlatin_iso8859_3, "latin-iso8859-3"); - defsymbol (&Qlatin_iso8859_4, "latin-iso8859-4"); - defsymbol (&Qthai_tis620, "thai-tis620"); - defsymbol (&Qgreek_iso8859_7, "greek-iso8859-7"); - defsymbol (&Qarabic_iso8859_6, "arabic-iso8859-6"); - defsymbol (&Qhebrew_iso8859_8, "hebrew-iso8859-8"); - defsymbol (&Qkatakana_jisx0201, "katakana-jisx0201"); - defsymbol (&Qlatin_jisx0201, "latin-jisx0201"); - defsymbol (&Qcyrillic_iso8859_5, "cyrillic-iso8859-5"); - defsymbol (&Qlatin_iso8859_9, "latin-iso8859-9"); - defsymbol (&Qjapanese_jisx0208_1978, "japanese-jisx0208-1978"); - defsymbol (&Qchinese_gb2312, "chinese-gb2312"); - defsymbol (&Qjapanese_jisx0208, "japanese-jisx0208"); - defsymbol (&Qkorean_ksc5601, "korean-ksc5601"); - defsymbol (&Qjapanese_jisx0212, "japanese-jisx0212"); - defsymbol (&Qchinese_cns11643_1, "chinese-cns11643-1"); - defsymbol (&Qchinese_cns11643_2, "chinese-cns11643-2"); - defsymbol (&Qchinese_big5_1, "chinese-big5-1"); - defsymbol (&Qchinese_big5_2, "chinese-big5-2"); + DEFSYMBOL (Qascii); + DEFSYMBOL (Qcontrol_1); + DEFSYMBOL (Qlatin_iso8859_1); + DEFSYMBOL (Qlatin_iso8859_2); + DEFSYMBOL (Qlatin_iso8859_3); + DEFSYMBOL (Qlatin_iso8859_4); + DEFSYMBOL (Qthai_tis620); + DEFSYMBOL (Qgreek_iso8859_7); + DEFSYMBOL (Qarabic_iso8859_6); + DEFSYMBOL (Qhebrew_iso8859_8); + DEFSYMBOL (Qkatakana_jisx0201); + DEFSYMBOL (Qlatin_jisx0201); + DEFSYMBOL (Qcyrillic_iso8859_5); + DEFSYMBOL (Qlatin_iso8859_9); + DEFSYMBOL (Qjapanese_jisx0208_1978); + DEFSYMBOL (Qchinese_gb2312); + DEFSYMBOL (Qjapanese_jisx0208); + DEFSYMBOL (Qkorean_ksc5601); + DEFSYMBOL (Qjapanese_jisx0212); + DEFSYMBOL (Qchinese_cns11643_1); + DEFSYMBOL (Qchinese_cns11643_2); + DEFSYMBOL (Qchinese_big5_1); + DEFSYMBOL (Qchinese_big5_2); - defsymbol (&Qcomposite, "composite"); + DEFSYMBOL (Qcomposite); } void diff --text -u 'xemacs-21.5.1/src/mule-charset.h' 'xemacs-21.5.2/src/mule-charset.h' Index: ././src/mule-charset.h --- ././src/mule-charset.h Fri Apr 13 03:24:03 2001 +++ ././src/mule-charset.h Mon Jun 18 16:10:25 2001 @@ -496,6 +496,7 @@ DECLARE_LRECORD (charset, Lisp_Charset); #define XCHARSET(x) XRECORD (x, charset, Lisp_Charset) #define XSETCHARSET(x, p) XSETRECORD (x, p, charset) +#define wrap_charset(p) wrap_record (p, charset) #define CHARSETP(x) RECORDP (x, charset) #define CHECK_CHARSET(x) CHECK_RECORD (x, charset) #define CONCHECK_CHARSET(x) CONCHECK_RECORD (x, charset) diff --text -u 'xemacs-21.5.1/src/mule-wnnfns.c' 'xemacs-21.5.2/src/mule-wnnfns.c' Index: ././src/mule-wnnfns.c --- ././src/mule-wnnfns.c Fri Apr 13 03:24:05 2001 +++ ././src/mule-wnnfns.c Thu May 24 16:51:24 2001 @@ -1098,7 +1098,7 @@ else if (EQ (key, Qwnn_kaikakko)) param.p15 = setval; else { - signal_simple_error ("Invalid wnn keyword", key); + invalid_constant ("Invalid wnn keyword", key); return Qnil; } } @@ -1848,14 +1848,14 @@ #endif /* Wnn6 */ DEFSUBR (Fwnn_version); - defsymbol (&Qjserver, "jserver"); - defsymbol (&Qcserver, "cserver"); - /* defsymbol (&Qtserver, "tserver"); */ - defsymbol (&Qkserver, "kserver"); - - defsymbol (&Qwnn_no_uniq, "wnn-no-uniq"); - defsymbol (&Qwnn_uniq, "wnn-uniq"); - defsymbol (&Qwnn_uniq_kanji, "wnn-uniq-kanji"); + DEFSYMBOL (Qjserver); + DEFSYMBOL (Qcserver); + /* DEFSYMBOL (Qtserver); */ + DEFSYMBOL (Qkserver); + + DEFSYMBOL (Qwnn_no_uniq); + DEFSYMBOL (Qwnn_uniq); + DEFSYMBOL (Qwnn_uniq_kanji); defsymbol (&Qwnn_n, "wnn_n"); defsymbol (&Qwnn_nsho, "wnn_nsho"); defsymbol (&Qwnn_hindo, "wnn_hindo"); diff --text -u 'xemacs-21.5.1/src/mule.c' 'xemacs-21.5.2/src/mule.c' Index: ././src/mule.c --- ././src/mule.c Fri Apr 13 03:24:05 2001 +++ ././src/mule.c Thu May 24 16:51:24 2001 @@ -45,7 +45,7 @@ CHECK_CONS (pattern); len = XINT (Flength (pattern)); if (len > MAXWORDBUF) - error ("Too complicated regular expression for word!"); + invalid_argument ("Too complicated regular expression for word!", Qunbound); for (i = 0; i < len; i++) { temp = XCAR (pattern); diff --text -u 'xemacs-21.5.1/src/nas.c' 'xemacs-21.5.2/src/nas.c' Index: ././src/nas.c --- ././src/nas.c Fri Apr 13 03:24:06 2001 +++ ././src/nas.c Sun Jun 10 19:42:32 2001 @@ -26,6 +26,8 @@ /* Synched up with: Not in FSF. */ +/* This file Mule-ized by Ben Wing, 5-15-01. */ + /* There are four compile-time options. * * XTOOLKIT This will be part of an Xt program. @@ -52,21 +54,13 @@ * 1998-10-01 rlt Added support for WAVE files. */ -#ifdef emacs #include #include "lisp.h" -#include "sysdep.h" -#include "syssignal.h" -#endif -#include -#include -#include -#include +#include "sound.h" -#ifdef HAVE_UNISTD_H -#include -#endif +#include "sysdep.h" +#include "syssignal.h" /* NAS <= 1.2p5 defines {BIG,LITTLE}_ENDIAN in