changeset 241:f955c73f5258 r20-5b19

Import from CVS: tag r20-5b19
author cvs
date Mon, 13 Aug 2007 10:16:16 +0200
parents 835e739f3c17
children fc816b73a05f
files CHANGES-beta ChangeLog Makefile.in etc/NEWS lisp/ChangeLog lisp/files.el lisp/menubar.el lisp/modeline.el lisp/package-get-base.el lisp/package-info.el src/ChangeLog src/elhash.c src/eval.c src/faces.c src/fns.c src/hash.c src/hash.h src/keymap.c src/line-number.c src/lstream.c src/mule-ccl.c src/mule-charset.c src/mule-coding.c src/profile.c src/symbols.c version.sh
diffstat 26 files changed, 848 insertions(+), 303 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES-beta	Mon Aug 13 10:15:49 2007 +0200
+++ b/CHANGES-beta	Mon Aug 13 10:16:16 2007 +0200
@@ -1,4 +1,9 @@
 							-*- indented-text -*-
+to 20.5 beta19 "Damani"
+-- Package building update
+-- Hash and profile patches from Hrvoje Niksic
+-- Miscellaneous bug fixes
+
 to 20.5 beta18 "Daera Din Panah"
 -- Miscellaneous and sundry fixes for 20.4 merged
 -- MS Windows updates from Kirill Katsnelson and Andy Piper
--- a/ChangeLog	Mon Aug 13 10:15:49 2007 +0200
+++ b/ChangeLog	Mon Aug 13 10:16:16 2007 +0200
@@ -1,3 +1,12 @@
+1998-01-12  SL Baur  <steve@altair.xemacs.org>
+
+	* XEmacs 20.5-beta19 is released.
+
+1998-01-12  Damon Lipparelli  <lipp@primus.com>
+
+	* Makefile.in: Yow!  Fixed paths to install dirs when --prefix !=
+	--exec-prefix.
+
 1998-01-10  SL Baur  <steve@altair.xemacs.org>
 
 	* XEmacs 20.5-beta18 is released.
--- a/Makefile.in	Mon Aug 13 10:15:49 2007 +0200
+++ b/Makefile.in	Mon Aug 13 10:16:16 2007 +0200
@@ -403,7 +403,7 @@
 
 install-only: ${MAKE_SUBDIR} check-features install-arch-dep install-arch-indep
 
-install: all check-features install-arch-dep install-arch-indep;
+install: all check-features install-arch-dep install-arch-indep
 
 install-arch-dep: mkdir
 	for subdir in ${INSTALL_ARCH_DEP_SUBDIR}; do \
@@ -420,21 +420,21 @@
 	   for subdir in `find ${archlibdir} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; \
 	     do (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; done ; \
 	else true; fi
-	${INSTALL_PROGRAM} src/xemacs ${bindir}/${progname}${version}
-	-chmod 0755 ${bindir}/${progname}${version}
-	cd ${bindir} && $(RM) ./xemacs && ${LN_S} ${progname}${version} ./xemacs
+	${INSTALL_PROGRAM} src/xemacs ${bindir}/${progname}-${version}
+	-chmod 0755 ${bindir}/${progname}-${version}
+	cd ${bindir} && $(RM) ./xemacs && ${LN_S} ${progname}-${version} ./xemacs
 	if test "${prefix}" != "${exec_prefix}"; then \
            test ! -d ${exec_prefix}/lib/xemacs && \
                 $(LN_S) ${prefix}/lib/xemacs ${exec_prefix}/lib/xemacs; \
-           test ! -d ${exec_prefix}/lib/${progname}${version}/etc && \
-                $(LN_S) ${prefix}/lib/${progname}${version}/etc \
-                        ${exec_prefix}/lib/${progname}${version}/etc; \
-           test ! -d ${exec_prefix}/lib/${progname}${version}/info && \
-                $(LN_S) ${prefix}/lib/${progname}${version}/info \
-                        ${exec_prefix}/lib/${progname}${version}/info; \
-           test ! -d ${exec_prefix}/lib/${progname}${version}/lisp && \
-                $(LN_S) ${prefix}/lib/${progname}${version}/lisp \
-                        ${exec_prefix}/lib/${progname}${version}/lisp; \
+           test ! -d ${exec_prefix}/lib/${progname}-${version}/etc && \
+                $(LN_S) ${prefix}/lib/${progname}-${version}/etc \
+                        ${exec_prefix}/lib/${progname}-${version}/etc; \
+           test ! -d ${exec_prefix}/lib/${progname}-${version}/info && \
+                $(LN_S) ${prefix}/lib/${progname}-${version}/info \
+                        ${exec_prefix}/lib/${progname}-${version}/info; \
+           test ! -d ${exec_prefix}/lib/${progname}-${version}/lisp && \
+                $(LN_S) ${prefix}/lib/${progname}-${version}/lisp \
+                        ${exec_prefix}/lib/${progname}-${version}/lisp; \
 	fi
 
 install-arch-indep: mkdir info
@@ -520,7 +520,7 @@
 #	done
 #	cd ${infodir} && $(RM) cl* xemacs* forms* info* vip*
 #	cd ${mandir} && $(RM) xemacs.1 etags.1 ctags.1 gnuserv.1
-#	cd ${bindir} && $(RM) ${progname}${version} xemacs
+#	cd ${bindir} && $(RM) ${progname}-${version} xemacs
 
 
 ## Some makes seem to remember that they've built something called FRC,
--- a/etc/NEWS	Mon Aug 13 10:15:49 2007 +0200
+++ b/etc/NEWS	Mon Aug 13 10:16:16 2007 +0200
@@ -100,10 +100,10 @@
 * Lisp and internal changes in XEmacs 20.5
 ==========================================
 
-** There is initial support for 30-bit integers in elisp (normally,
+** There is initial support for 31-bit integers in elisp (normally,
 integers are only 28 bits wide on 32-bit machines.)  Compile with
 -DUSE_MINIMAL_TAGBITS to test.  With this change, the maximum buffer
-size on 32-bit machines is bumped from 128M to 512M.
+size on 32-bit machines is bumped from 128M to 1G.
 
 ** The internal image code now uses the ImageMagick library as an
 interface to various image-related functions.  You still need the
@@ -124,6 +124,11 @@
 
    #<hashtable size 2/13 data (key1 value1 key2 value2) 0x874d>
 
+** When profiling is in effect, a call-count of all recorded functions
+is now calculated.  This information is stored in
+`call-count-profile-table', and is utilized by `profile-results' as
+well as the new function `profile-call-count-results'.
+
 ** The `make-event' function now supports the TYPE and PLIST
 arguments, which can be used to create many various events from Lisp.
 See the documentation for details.
@@ -146,6 +151,11 @@
 very large buffers.  This is achieved by caching the line numbers of
 recent buffer positions, and reusing them.  This cache is used only in
 the buffers where `line-number-mode' is in effect.
+
+* Changes in XEmacs 20.4
+========================
+
+** XEmacs 20.4 is a bugfix release with no user-visible changes.
 
 
 * Changes in XEmacs 20.3
--- a/lisp/ChangeLog	Mon Aug 13 10:15:49 2007 +0200
+++ b/lisp/ChangeLog	Mon Aug 13 10:16:16 2007 +0200
@@ -1,3 +1,18 @@
+1998-01-12  SL Baur  <steve@altair.xemacs.org>
+
+	* menubar.el (check-menu-syntax): Emergency dirty fix -- the 0 plist
+	bug strikes a menudescriptor.
+
+	* package-get-base.el (package-get-base): Updated.
+
+	* package-info.el (batch-update-package-info): Derive REQUIRES
+	from the Makefile.
+
+1998-01-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* files.el (save-some-buffers): Don't play games with deleting
+	other windows if we are in the minibuffer window.
+
 1998-01-08  Karl M. Hegbloom  <karlheg@bittersweet.inetarena.com>
 
 	* modeline.el (modeline-minor-mode-menu): Add support for :active
--- a/lisp/files.el	Mon Aug 13 10:15:49 2007 +0200
+++ b/lisp/files.el	Mon Aug 13 10:16:16 2007 +0200
@@ -2351,6 +2351,7 @@
     (save-window-excursion
       ;; This can bomb during autoloads generation
       (when (and (not noninteractive)
+		 (not (eq (selected-window) (minibuffer-window)))
 		 save-some-buffers-query-display-buffer)
 	(delete-other-windows))
       ;; XEmacs - do not use queried flag
--- a/lisp/menubar.el	Mon Aug 13 10:15:49 2007 +0200
+++ b/lisp/menubar.el	Mon Aug 13 10:16:16 2007 +0200
@@ -170,7 +170,8 @@
 			     menuitem)))
 		)))
 	)
-       (t (signal 'error (list "unrecognised menu descriptor" menuitem))))
+       ;; (t (signal 'error (list "unrecognised menu descriptor" menuitem))))
+       (t (message "unrecognised menu descriptor %s" (prin1-to-string menuitem))))
       (setq menu (cdr menu)))))
 
 
--- a/lisp/modeline.el	Mon Aug 13 10:15:49 2007 +0200
+++ b/lisp/modeline.el	Mon Aug 13 10:16:16 2007 +0200
@@ -300,19 +300,42 @@
 (defvar place)
 (defun add-minor-mode (toggle name &optional keymap after toggle-fun)
   "Add a minor mode to `minor-mode-alist' and `minor-mode-map-alist'.
+
 TOGGLE is a symbol whose value as a variable specifies whether the
-minor mode is active.  NAME is the name that should appear in the
-modeline (it should either be a string beginning with a space or a
-symbol).  KEYMAP is a keymap to make active when the minor mode is
-active.  AFTER is the toggling symbol used for another minor mode.  If
-AFTER is non-nil, then it is used to position the new mode in the
-minor-mode alists.  TOGGLE-FUN specifies an interactive function that
-is called to toggle the mode on and off; this affects what happens
-when button2 is pressed on the mode, and when button3 is pressed
-somewhere in the list of modes.  If TOGGLE-FUN is nil and TOGGLE names
-an interactive function, TOGGLE is used as the toggle function.
+minor mode is active.
+
+ If TOGGLE has the `:menu-tag' property set to a string, that string
+ will be used as the label on the `modeline-minor-mode-menu' instead
+ of TOGGLE's symbol-name.
+
+ TOGGLE may have an `:included' property, which determines whether a
+ menu button will be shown for this minor mode in the
+ `modeline-minor-mode-menu'.  This should be either a boolean
+ variable, or an expression evaluating to t or nil.  \(See the
+ documentation of `current-menubar' for more information.)
+
+ It may have an `:active' property also, as documented in
+ `current-menubar'.
 
-Example:  (add-minor-mode 'view-minor-mode \" View\" view-mode-map)"
+NAME is the name that should appear in the modeline.  It should either
+be a string beginning with a space, or a symbol with a similar string
+as its value.
+
+KEYMAP is a keymap to make active when the minor mode is active.
+
+AFTER is the toggling symbol used for another minor mode.  If AFTER is
+non-nil, then it is used to position the new mode in the minor-mode
+alists.
+
+TOGGLE-FUN specifies an interactive function that is called to toggle
+the mode on and off; this affects what happens when button2 is pressed
+on the mode, and when button3 is pressed somewhere in the list of
+modes.  If TOGGLE-FUN is nil and TOGGLE names an interactive function,
+TOGGLE is used as the toggle function.
+
+Example: (put 'view-minor-mode :menu-tag \"View (minor)\")
+         (put 'view-minor-mode :included '(buffer-file-name))
+         (add-minor-mode 'view-minor-mode \" View\" view-mode-map)"
   (let (el place
 	(add-elt #'(lambda (elt sym)
 		     (cond ((null after) ; add to front
@@ -373,23 +396,32 @@
 		    'minor-mode-map-alist)))
     ))
 
+;; gettext anyone?
+(put 'abbrev-mode :menu-tag "Abbreviation Expansion")
 (add-minor-mode 'abbrev-mode " Abbrev")
+;; only when visiting a file...
 (add-minor-mode 'overwrite-mode 'overwrite-mode)
+(put 'auto-fill-function :menu-tag "Auto Fill")
 (add-minor-mode 'auto-fill-function " Fill" nil nil 'auto-fill-mode)
-;; not really a minor mode...
-(add-minor-mode 'defining-kbd-macro " Def")
+
+;; what's the meaning of `####' vs `FIXME' or ...?
+;; not really a minor mode...  and it doesn't work right anyway.
+;;(put 'defining-kbd-macro :menu-tag "Defining kbd macro")
+;;(add-minor-mode 'defining-kbd-macro " Def") FIXME
 
 (defun modeline-minor-mode-menu (event)
+  "The menu that pops up when you press `button3' inside the
+parentheses on the modeline."
   (interactive "e")
   (save-excursion
     (set-buffer (event-buffer event))
     (popup-menu-and-execute-in-window
-     (cons (format "Minor Mode Commands for %S:"
-		   (buffer-name (event-buffer event)))
+     (cons "Minor Mode Toggles"
 	   (apply 'nconc
 		  (mapcar
 		   #'(lambda (x)
 		       (let* ((toggle-sym (car x))
+			      (menu-tag (get toggle-sym :menu-tag nil))
 			      (toggle-fun
 			       (or (get toggle-sym
 					'modeline-toggle-function)
@@ -398,15 +430,23 @@
 					toggle-sym))))
 			 (if (not toggle-fun) nil
 			   (list (vector
-				  (concat (if (and (boundp toggle-sym)
-						   (symbol-value toggle-sym))
-					      "turn off " "turn on ")
-					  (if (symbolp toggle-fun)
-					      (symbol-name toggle-fun)
-					    (symbol-name toggle-sym)))
-
+				  (or (and (stringp menu-tag)
+					   menu-tag)
+				      (setq menu-tag (capitalize
+						      (replace-in-string
+						       (replace-in-string
+							(replace-in-string (if (symbolp toggle-fun)
+									       (symbol-name toggle-fun)
+									     (symbol-name toggle-sym))
+									   "-" " ")
+							"minor" " (minor)")
+						       " mode" ""))))
 				  toggle-fun
-				  t)))))
+				  :active (get toggle-sym :active t)
+				  :included (get toggle-sym :included t)
+				  :style 'toggle
+				  :selected (and (boundp toggle-sym)
+						 toggle-sym))))))
 		   minor-mode-alist)))
      event)))
 
--- a/lisp/package-get-base.el	Mon Aug 13 10:15:49 2007 +0200
+++ b/lisp/package-get-base.el	Mon Aug 13 10:16:16 2007 +0200
@@ -1,260 +1,456 @@
 (setq package-get-base
-'((cookie
+'((footnote
+  (version "1.01"
+   filename "footnote-1.01-pkg.tar.gz"
+   md5sum "6cca2b03fe2ed76f664a398d436bf954"
+   size 17986
+   provides (footnote)
+   requires (mail-lib xemacs-base)
+   type regular
+))
+(gnats
+  (version "1.01"
+   filename "gnats-1.01-pkg.tar.gz"
+   md5sum "6bfb95bc283102cbbe0a5fc7b3f7d727"
+   size 126295
+   provides (gnats gnats-admin send-pr)
+   requires (mail-lib xemacs-base)
+   type regular
+))
+(mailcrypt
   (version "1.02"
-   filename "cookie-1.02-pkg.tar.gz"
-   md5sum "95e110ddf03202403e45950d2cb53b11"
-   size 33774
+   filename "mailcrypt-1.02-pkg.tar.gz"
+   md5sum "a4bdb22e770882d1bf465e46736d67e3"
+   size 66763
+   provides (mailcrypt)
+   requires (gnus vm mail-lib xemacs-base)
+   type regular
+))
+(mh-e
+  (version "1.03"
+   filename "mh-e-1.03-pkg.tar.gz"
+   md5sum "3a82a8fd5c3d69b375b8e6191edef061"
+   size 128925
+   provides (mh-e)
+   requires (mail-lib xemacs-base)
+   type regular
+))
+(net-utils
+  (version "1.01"
+   filename "net-utils-1.01-pkg.tar.gz"
+   md5sum "a5e186be46e80d01367ca1b2923655e6"
+   size 48550
+   provides (ilisp-browse-cltl2 emacsbug feedmail metamail rcompile shadowfile webjump webster-www)
+   requires (w3 efs mail-lib xemacs-base)
+   type regular
+))
+(ph
+  (version "1.01"
+   filename "ph-1.01-pkg.tar.gz"
+   md5sum "f7e686b77eb427a505a10348a0e9ec59"
+   size 27483
+   provides (ph)
+   requires (xemacs-base)
+   type regular
+))
+(rmail
+  (version "1.01"
+   filename "rmail-1.01-pkg.tar.gz"
+   md5sum "d8a0b4457820839c3383d59c2e0c3ed6"
+   size 83541
+   provides (rmail rmailsum)
+   requires (tm apel mail-lib xemacs-base)
+   type regular
+))
+(supercite
+  (version "1.02"
+   filename "supercite-1.02-pkg.tar.gz"
+   md5sum "19327a45b407218b67c0dfeb143c7a18"
+   size 69344
+   provides (supercite)
+   requires (mail-lib xemacs-base)
+   type regular
+))
+(tm
+  (version "1.02"
+   filename "tm-1.02-pkg.tar.gz"
+   md5sum "fa55affd4762141dc1a8090565438bbe"
+   size 180988
+   provides (tm tm-edit tm-view mime-setup)
+   requires (gnus vm mailcrypt mail-lib xemacs-base)
+   type regular
+))
+(vm
+  (version "1.03"
+   filename "vm-1.03-pkg.tar.gz"
+   md5sum "c998cbe419f3d482050632ee7115240f"
+   size 476245
+   provides (vm)
+   requires (mail-lib xemacs-base)
+   type regular
+))
+(w3
+  (version "1.01"
+   filename "w3-1.01-pkg.tar.gz"
+   md5sum "7f896771d25cef4e9e606536bdb13f2e"
+   size 582585
+   provides (w3 url)
+   requires (w3 mail-lib xemacs-base)
+   type regular
+))
+(cookie
+  (version "1.03"
+   filename "cookie-1.03-pkg.tar.gz"
+   md5sum "28b2fee1f0acbc8f19af12a415743c3f"
+   size 33784
    provides (cookie1 yow)
-   requires (xemacs-base games-misc)
+   requires (xemacs-base)
+   type regular
+))
+(games
+  (version "1.01"
+   filename "games-1.01-pkg.tar.gz"
+   md5sum "844d4f68950614f11c078649c231c017"
+   size 29160
+   provides (gamegrid snake tetris sokoban)
+   requires (xemacs-base)
    type regular
 ))
 (mine
-  (version "1.02"
-   filename "mine-1.02-pkg.tar.gz"
-   md5sum "054f2eefb015b2878ba37f6473a47dec"
-   size 67166
+  (version "1.03"
+   filename "mine-1.03-pkg.tar.gz"
+   md5sum "ca06e2e17ac4f5695e66e7004fc7b860"
+   size 67172
    provides (xmine)
    requires (xemacs-base)
    type regular
 ))
 (misc-games
-  (version "1.01"
-   filename "misc-games-1.01-pkg.tar.gz"
-   md5sum "a86cf625a2700a9b0e7f71139df011a7"
-   size 172861
-   provides (decipher gomoku hanoi life tetris)
+  (version "1.04"
+   filename "misc-games-1.04-pkg.tar.gz"
+   md5sum "07ad46ffdf17ef846c40e81d15fcd832"
+   size 163171
+   provides (decipher gomoku hanoi life)
    requires (xemacs-base)
    type single
 ))
 (Sun
-  (version "1.02"
-   filename "Sun-1.02-pkg.tar.gz"
-   md5sum "22d61bc22784e1509a3b74e38393b828"
-   size 63707
+  (version "1.03"
+   filename "Sun-1.03-pkg.tar.gz"
+   md5sum "1c121ffcac7a00a653c144d488b43860"
+   size 63758
    provides (sccs eos-browser eos-common eos-debugger eos-debugger eos-editor eos-init eos-load eos-menubar eos-toolbar sunpro)
    requires (cc-mode xemacs-base)
    type regular
 ))
 (apel
-  (version "1.01"
-   filename "apel-1.01-pkg.tar.gz"
-   md5sum "6de339aeae8a36be7e954a80bb18bc3c"
-   size 34546
+  (version "1.02"
+   filename "apel-1.02-pkg.tar.gz"
+   md5sum "57230c9a3ed91126ea97277c87b9e72b"
+   size 34606
    provides (atype emu-20 emu-e19 emu-x20 emu-xemacs emu file-detect filename install mule-caesar path-util richtext std11-parse std11 tinyrich)
    requires (xemacs-base)
    type regular
 ))
 (edebug
-  (version "1.01"
-   filename "edebug-1.01-pkg.tar.gz"
-   md5sum "7ebf5f57dc47236f71d38a387d3cdccc"
-   size 117881
+  (version "1.02"
+   filename "edebug-1.02-pkg.tar.gz"
+   md5sum "5c89f5421ecabb1f026a93b8a4a1db0b"
+   size 117931
    provides (edebug cl-read cust-print eval-reg cl-specs)
    requires (xemacs-base)
    type regular
 ))
 (efs
-  (version "1.01"
-   filename "efs-1.01-pkg.tar.gz"
-   md5sum "d2ad5d764d60345e4530dc679715ec26"
-   size 506222
-   provides (efs dired efs-auto)
+  (version "1.03"
+   filename "efs-1.03-pkg.tar.gz"
+   md5sum "7bc6786f8dee4d955d6365f0cbe2b610"
+   size 540959
+   provides (efs diff dired efs-auto)
    requires (xemacs-base)
    type regular
 ))
 (mail-lib
-  (version "1.02"
-   filename "mail-lib-1.02-pkg.tar.gz"
-   md5sum "2d02a1b69146925c13ae4e2d759b1fb2"
-   size 118488
+  (version "1.04"
+   filename "mail-lib-1.04-pkg.tar.gz"
+   md5sum "59b9cd8aefaa035cb6de8ebdfc141b0a"
+   size 118703
    provides (browse-url highlight-headers mail-abbrevs mail-extr mail-utils reporter rfc822 rmail-mini sendmail smtpmail)
    requires (xemacs-base)
    type single
 ))
 (tooltalk
-  (version "1.02"
-   filename "tooltalk-1.02-pkg.tar.gz"
-   md5sum "3fdf1c49c43dd852d2c8895e074c39ba"
-   size 9174
+  (version "1.03"
+   filename "tooltalk-1.03-pkg.tar.gz"
+   md5sum "88845fc4ace46737ef34ff8acbe0be84"
+   size 9223
    provides ()
+   requires ()
    type regular
 ))
 (xemacs-base
-  (version "1.05"
-   filename "xemacs-base-1.05-pkg.tar.gz"
-   md5sum "cbfeb7910ba552a47a23cde220156179"
-   size 394189
+  (version "1.07"
+   filename "xemacs-base-1.07-pkg.tar.gz"
+   md5sum "b1b4c6a7005a2ee33fee0c992e256ceb"
+   size 376530
    provides (add-log advice annotations assoc case-table chistory comint-xemacs comint compile edmacro ehelp electric enriched env facemenu helper imenu iso-syntax outline passwd pp regi ring shell skeleton sort thing time-stamp timezone xbm-button xpm-button)
+   requires ()
    type regular
 ))
 (xemacs-devel
-  (version "1.03"
-   filename "xemacs-devel-1.03-pkg.tar.gz"
-   md5sum "e806e74988a89ac66314a72b6f0801a8"
-   size 64241
+  (version "1.05"
+   filename "xemacs-devel-1.05-pkg.tar.gz"
+   md5sum "e12d383c1c30467d8e683504eb00604c"
+   size 71065
    provides (docref eldoc elp find-func ielm regexp-opt trace)
    requires (xemacs-base)
    type single
 ))
 (egg-its
-  (version "1.01"
-   filename "egg-its-1.01-pkg.tar.gz"
-   md5sum "ba5e6aca993a2795a1cc3bedfbc7dcc0"
-   size 316515
+  (version "1.02"
+   filename "egg-its-1.02-pkg.tar.gz"
+   md5sum "e7fa42a1121fc260f459e4dabac061ac"
+   size 257713
    provides ()
-   requires (xemacs-base mule-base)
+   requires (leim mule-base xemacs-base)
    type regular
 ))
 (leim
-  (version "1.01"
-   filename "leim-1.01-pkg.tar.gz"
-   md5sum "5c467eb0476c9da9cc6f671da1884685"
-   size 1743472
+  (version "1.02"
+   filename "leim-1.02-pkg.tar.gz"
+   md5sum "5697435f2a2d0849b4eebcc22596fdda"
+   size 1744281
    provides ()
-   requires (xemacs-base mule-base)
+   requires (mule-base xemacs-base)
    type regular
 ))
 (locale
-  (version "1.01"
-   filename "locale-1.01-pkg.tar.gz"
-   md5sum "2f390e23929941a6aa6e3478a3f10ed7"
-   size 20628
+  (version "1.02"
+   filename "locale-1.02-pkg.tar.gz"
+   md5sum "9fcdf34a9f3ef696fa143398fb92ce1f"
+   size 20633
    provides ()
-   requires (xemacs-base mule-base)
+   requires (mule-base)
    type regular
 ))
 (mule-base
-  (version "1.02"
-   filename "mule-base-1.02-pkg.tar.gz"
-   md5sum "bf8754e52b309e130242bf5036de9a3e"
-   size 499508
+  (version "1.03"
+   filename "mule-base-1.03-pkg.tar.gz"
+   md5sum "098abbbc88f1702a3a79ec9511475f38"
+   size 499505
    provides (canna-leim canna char-table china-util cyril-util isearch-ext japan-util ccl can-n-egg mule-help)
    requires (xemacs-base)
    type regular
 ))
 (skk
-  (version "1.01"
-   filename "skk-1.01-pkg.tar.gz"
-   md5sum "9aa608eccfe7da7371ea7924c3523545"
-   size 1464809
+  (version "1.02"
+   filename "skk-1.02-pkg.tar.gz"
+   md5sum "9b836a14af426899f172a3d7ec5bc13a"
+   size 1466604
    provides (skk skk-tut)
-   requires (xemacs-base mule-base)
+   requires (viper mule-base xemacs-base)
    type regular
 ))
 (calendar
-  (version "1.01"
-   filename "calendar-1.01-pkg.tar.gz"
-   md5sum "bc0908ae5798f662b9cc5cb52325c21e"
-   size 168660
+  (version "1.02"
+   filename "calendar-1.02-pkg.tar.gz"
+   md5sum "df5bb1a0d8c53dc94debc1b9f6b625d2"
+   size 168684
    provides (appt cal-dst cal-french cal-mayan cal-x cal-xemacs calendar diary-ins diary-lib holidays lunar solar)
    requires (xemacs-base)
    type regular
 ))
 (edit-utils
-  (version "1.03"
-   filename "edit-utils-1.03-pkg.tar.gz"
-   md5sum "af2cbb68fce602132f6153bb3814b59a"
-   size 498040
-   provides (abbrevlist atomic-extents avoid backup-dir balloon-help big-menubar blink-cursor blink-paren bookmark compare-w completion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part floating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select info-look iswitchb lazy-lock lazy-shot live-icon man mic-paren paren mode-motion+ outl-mouse page-ext blink-paren paren recent-files redo reportmail rsz-minibuf saveconfsavehist saveplace scroll-in-place toolbar-utils tree-menu uniquify where-was-i-db)
+  (version "1.06"
+   filename "edit-utils-1.06-pkg.tar.gz"
+   md5sum "6b93a01ea3389125c1ea09d035c3eced"
+   size 517449
+   provides (abbrevlist atomic-extents avoid backup-dir balloon-help big-menubar blink-cursor blink-paren bookmark compare-w completion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part floating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select info-look iswitchb lazy-lock lazy-shot live-icon man mic-paren paren mode-motion+ outl-mouse page-ext blink-paren paren permanent-buffers recent-files redo reportmail rsz-minibuf saveconfsavehist saveplace scroll-in-place toolbar-utils tree-menu uniquify where-was-i-db)
    requires (xemacs-base)
    type single
 ))
 (forms
-  (version "1.03"
-   filename "forms-1.03-pkg.tar.gz"
-   md5sum "8f8a2d7118102b39e06e6a8766b3efe6"
-   size 39802
+  (version "1.04"
+   filename "forms-1.04-pkg.tar.gz"
+   md5sum "9ed253efbb559b54320cd7fda934bf87"
+   size 39809
    provides (forms forms-mode)
+   requires ()
    type regular
 ))
 (hm--html-menus
-  (version "1.01"
-   filename "hm--html-menus-1.01-pkg.tar.gz"
-   md5sum "23e7e4a7e783e70c9d4d68ecf609884f"
-   size 145889
+  (version "1.02"
+   filename "hm--html-menus-1.02-pkg.tar.gz"
+   md5sum "79a9958a08c7e40f8316a9bf8637b3c5"
+   size 144731
    provides (adapt hm--date hm--html-configuration hm--html-drag-and-drop hm--html-indentation hm--html-keys hm--html-menu hm--html-mode hm--html-not-standard hm--html html-view tmpl-minor-mode)
+   requires ()
    type regular
 ))
 (ispell
-  (version "1.02"
-   filename "ispell-1.02-pkg.tar.gz"
-   md5sum "2b9140b4b8757b64ccfc59755df5a7ab"
-   size 55709
+  (version "1.03"
+   filename "ispell-1.03-pkg.tar.gz"
+   md5sum "1119bf349568fb8004b317f1a58fed57"
+   size 55723
    provides (ispell)
+   requires ()
    type regular
 ))
 (pc
-  (version "1.03"
-   filename "pc-1.03-pkg.tar.gz"
-   md5sum "97eef269303c73dbe5d19c0f2ce6ed4d"
-   size 11247
+  (version "1.04"
+   filename "pc-1.04-pkg.tar.gz"
+   md5sum "4933e0ac375397076df583a6e93ba304"
+   size 11274
    provides (delbs pc-select pending-del s-region)
    requires (xemacs-base)
    type regular
 ))
+(psgml
+  (version "1.0"
+   filename "psgml-1.0-pkg.tar.gz"
+   md5sum "9d3f8d0909bc2c291955daa6829a9882"
+   size 379154
+   provides (psgml sgml tempo)
+   requires ()
+   type regular
+))
+(sgml
+  (version "1.0"
+   filename "sgml-1.0-pkg.tar.gz"
+   md5sum "e8e744cff0466a77554dfdd477e40cfe"
+   size 26814
+   provides (sgml linuxdoc-sgml)
+   requires (xemacs-base)
+   type regular
+))
 (slider
-  (version "1.03"
-   filename "slider-1.03-pkg.tar.gz"
-   md5sum "b7d54a810b03f394cafcbc4a8e6e5b44"
-   size 11845
+  (version "1.04"
+   filename "slider-1.04-pkg.tar.gz"
+   md5sum "b0af411f9c5a2764152cd0e67b11ba8b"
+   size 11855
    provides (slider color-selector)
+   requires ()
    type regular
 ))
 (speedbar
-  (version "1.01"
-   filename "speedbar-1.01-pkg.tar.gz"
-   md5sum "3fe68d6e9ae69036d35189a3ddebcc2e"
-   size 62397
+  (version "1.02"
+   filename "speedbar-1.02-pkg.tar.gz"
+   md5sum "c32984d7c232e7049d09f85989e2087c"
+   size 62424
    provides (speedbar)
    requires (xemacs-base)
    type regular
 ))
+(strokes
+  (version "1.0"
+   filename "strokes-1.0-pkg.tar.gz"
+   md5sum "a15ce2a1dca07b18a64bf332c8946e79"
+   size 43588
+   provides (strokes)
+   requires (text-modes edit-utils mail-lib xemacs-base)
+   type regular
+))
 (text-modes
-  (version "1.01"
-   filename "text-modes-1.01-pkg.tar.gz"
-   md5sum "6a4a4536bd9397f0af0b5d224f0176d3"
-   size 84693
+  (version "1.02"
+   filename "text-modes-1.02-pkg.tar.gz"
+   md5sum "cc787c8b9945415148ddcdb2590fea10"
+   size 102015
    provides (autoinsert crontab-edit filladapt image-mode iso-acc iso-ascii iso-cvt iso-insert iso-swed swedish tabify whitespace-mode winmgr-mode xpm-mode xrdb-mode)
    requires (xemacs-base)
    type regular
 ))
 (time
-  (version "1.01"
-   filename "time-1.01-pkg.tar.gz"
-   md5sum "d20af53a3a5f2731032e38783db2b9e9"
-   size 19819
+  (version "1.02"
+   filename "time-1.02-pkg.tar.gz"
+   md5sum "78751042a5fc579eda833e75fe91b347"
+   size 19839
    provides (time)
    requires (xemacs-base)
    type regular
 ))
+(eterm
+  (version "1.02"
+   filename "eterm-1.02-pkg.tar.gz"
+   md5sum "9bc542d4e560e8a00fd555e76079164f"
+   size 101730
+   provides (eterm)
+   requires (xemacs-base)
+   type regular
+))
+(igrep
+  (version "1.0"
+   filename "igrep-1.0-pkg.tar.gz"
+   md5sum "58c6155767fd01765000d829fabbc790"
+   size 13899
+   provides (igrep)
+   requires (efs xemacs-base)
+   type regular
+))
+(ilisp
+  (version "1.02"
+   filename "ilisp-1.02-pkg.tar.gz"
+   md5sum "7fc28390ad9ff212de8da2c3add0dba0"
+   size 213183
+   provides (ilisp completer)
+   requires (xemacs-base)
+   type regular
+))
+(os-utils
+  (version "1.03"
+   filename "os-utils-1.03-pkg.tar.gz"
+   md5sum "579cd4d025e0b20bbf7887250a0ea599"
+   size 216645
+   provides (archive-mode background crypt crypt++ inf-lisp jka-compr lpr ps-print tar-mode telnet terminal uncompress)
+   requires (xemacs-base)
+   type single
+))
+(view-process
+  (version "1.02"
+   filename "view-process-1.02-pkg.tar.gz"
+   md5sum "e0ee0de2d7116477aee75b82b8d929a5"
+   size 59824
+   provides (view-process-mode)
+   requires (xemacs-base)
+   type regular
+))
 (ada
-  (version "1.01"
-   filename "ada-1.01-pkg.tar.gz"
-   md5sum "3dfd652bb8e2aae934f34f1f015f4a57"
-   size 55141
+  (version "1.02"
+   filename "ada-1.02-pkg.tar.gz"
+   md5sum "0788c1e082dd1c01a7014b2d6314c4b5"
+   size 54261
    provides (ada-mode ada-stmt)
+   requires ()
    type regular
 ))
 (c-support
-  (version "1.01"
-   filename "c-support-1.01-pkg.tar.gz"
-   md5sum "eedf97a19d02454a0ac4021a213cd566"
-   size 41788
+  (version "1.02"
+   filename "c-support-1.02-pkg.tar.gz"
+   md5sum "9d6e3bb330ca128c13dea88f321c74c3"
+   size 41817
    provides (c-comment-edit cmacexp hideif hideshow)
    requires (cc-mode xemacs-base)
    type regular
 ))
 (cc-mode
-  (version "1.02"
-   filename "cc-mode-1.02-pkg.tar.gz"
-   md5sum "a6c3aab6e2c0168d981a5dacbab429f3"
-   size 128544
+  (version "1.03"
+   filename "cc-mode-1.03-pkg.tar.gz"
+   md5sum "c943e700b28d9c0fe9a870403b913959"
+   size 126973
    provides (cc-mode)
    requires (xemacs-base)
    type regular
 ))
+(debug
+  (version "1.0"
+   filename "debug-1.0-pkg.tar.gz"
+   md5sum "b4f7e2d93c10d9b60dd94171d4fe6a7f"
+   size 87115
+   provides ()
+   requires (xemacs-base)
+   type regular
+))
 (ediff
-  (version "1.01"
+  (version 1.01
    filename "ediff-1.01-pkg.tar.gz"
    md5sum "68431adebf0b9b76b2e347b5cb531378"
    size 241640
@@ -262,108 +458,139 @@
    requires (xemacs-base efs pcl-cvs)
    type regular
 ))
+(emerge
+  (version "1.0"
+   filename "emerge-1.0-pkg.tar.gz"
+   md5sum "d5a58538014f89a0210530605eac1817"
+   size 60851
+   provides (emerge)
+   requires ()
+   type regular
+))
 (pcl-cvs
-  (version "1.01"
-   filename "pcl-cvs-1.01-pkg.tar.gz"
-   md5sum "4fd7beb2f7a61c6bb8be8ebea5bfa03b"
-   size 134459
+  (version "1.02"
+   filename "pcl-cvs-1.02-pkg.tar.gz"
+   md5sum "c0d535bee1bb2ed97f209d76a0dad15f"
+   size 134504
    provides (pcl-cvs dll elib-node generic-sc)
    requires (xemacs-base)
    type regular
 ))
 (prog-modes
+  (version "1.02"
+   filename "prog-modes-1.02-pkg.tar.gz"
+   md5sum "6f49bfdc7c88ac2182d55c1d4f6c0015"
+   size 535033
+   provides (autoconf-mode cperl-mode eiffel3 f90 fortran ksh-mode m4-mode makefile perl-mode postscript python-mode rexx-mode simula-mode tcl teco verilog-mod)
+   requires (mail-lib xemacs-base)
+   type regular
+))
+(scheme
   (version "1.01"
-   filename "prog-modes-1.01-pkg.tar.gz"
-   md5sum "b0af0691a51202322a7d7d800a2d5543"
-   size 519423
-   provides (autoconf-mode cperl-mode eiffel3 f90 fortran ksh-mode m4-mode makefile perl-mode postscript python-mode rexx-mode simula-mode tcl teco verilog-mod)
-   requires (xemacs-base mail-lib )
+   filename "scheme-1.01-pkg.tar.gz"
+   md5sum "404316bd16588b6a8e743e261a14afb1"
+   size 34759
+   provides (scheme xscheme cmuscheme)
+   requires (xemacs-base)
    type regular
 ))
 (sh-script
-  (version "1.02"
-   filename "sh-script-1.02-pkg.tar.gz"
-   md5sum "14493ca0455148f4d62b583d3c1562a9"
-   size 33556
+  (version "1.03"
+   filename "sh-script-1.03-pkg.tar.gz"
+   md5sum "1f804e9aa1defc8d5f9d35ffb8f26a34"
+   size 33568
    provides (sh-script executable)
    requires (xemacs-base)
    type regular
 ))
-(vc
-  (version "1.01"
-   filename "vc-cc-1.01-pkg.tar.gz"
-   md5sum "2e549b7fbebc82e7166a6c225344e46c"
-   size 95934
+(vc-cc
+  (version "1.02"
+   filename "vc-cc-1.02-pkg.tar.gz"
+   md5sum "d0c0c5a9cdae43971d845858de4aa6bc"
+   size 95974
    provides (vc)
-   requires (xemacs-base efs)
+   requires (efs xemacs-base)
    type regular
 ))
 (vc
-  (version "1.01"
-   filename "vc-1.01-pkg.tar.gz"
-   md5sum "3b40953a1a171aed5f3f4e58963be229"
-   size 74214
+  (version "1.02"
+   filename "vc-1.02-pkg.tar.gz"
+   md5sum "c2e1a4c4de6b1e9a43dd6b74028fedf5"
+   size 74142
    provides (vc)
-   requires (xemacs-base efs)
+   requires (efs xemacs-base)
    type regular
 ))
 (vhdl
-  (version "1.01"
-   filename "vhdl-1.01-pkg.tar.gz"
-   md5sum "cefebce133fae1544bcd4a487493bde4"
-   size 54036
+  (version "1.02"
+   filename "vhdl-1.02-pkg.tar.gz"
+   md5sum "3c28c8ab7866519131ee0fe8e5b08f6e"
+   size 54025
    provides (vhdl-mode)
+   requires ()
    type regular
 ))
 (auctex
-  (version "1.01"
-   filename "auctex-1.01-pkg.tar.gz"
-   md5sum "f720a7e3cedae6276079adc2329b335b"
-   size 289282
+  (version "1.02"
+   filename "auctex-1.02-pkg.tar.gz"
+   md5sum "31f3845c0cd3178cbd07478da9a0e70e"
+   size 289385
    provides (auc-old bib-cite font-latex latex multi-prompt tex-buf tex-info tex-jp tex-site tex)
    requires (xemacs-base)
    type regular
 ))
 (crisp
-  (version "1.01"
-   filename "crisp-1.01-pkg.tar.gz"
-   md5sum "a984e6bc7446c14fc33d94d5ced95f57"
-   size 9029
+  (version "1.02"
+   filename "crisp-1.02-pkg.tar.gz"
+   md5sum "d1f9279563f71f947d758e5722619aef"
+   size 9038
    provides (crisp scroll-lock)
+   requires ()
    type regular
 ))
 (edt
-  (version "1.01"
-   filename "edt-1.01-pkg.tar.gz"
-   md5sum "7a9f9182ef96250906ec531ee8b81f46"
-   size 45966
+  (version "1.02"
+   filename "edt-1.02-pkg.tar.gz"
+   md5sum "eee41be05231820696aa27fcca84a38c"
+   size 45981
    provides (edt)
    requires (xemacs-base)
    type regular
 ))
 (texinfo
-  (version "1.03"
-   filename "texinfo-1.03-pkg.tar.gz"
-   md5sum "391537d64b8e03a4233d124c0a92a6c9"
-   size 113799
+  (version "1.04"
+   filename "texinfo-1.04-pkg.tar.gz"
+   md5sum "6da524a224540b84c7be79cffcc8f966"
+   size 113831
    provides (makeinfo tex-mode texinfmt texinfo texnfo-tex texnfo-upd)
    requires (xemacs-base)
    type regular
 ))
+(textools
+  (version "1.0"
+   filename "textools-1.0-pkg.tar.gz"
+   md5sum "c75f9e6b009a6f9892cd0aa68f8df17b"
+   size 187454
+   provides (bib-mode bibtex refer-to-bibtex reftex)
+   requires (xemacs-base)
+   type single
+))
 (tpu
-  (version "1.01"
-   filename "tpu-1.01-pkg.tar.gz"
-   md5sum "c76aa33c56bb7555c5976b42fdf7b391"
-   size 64845
+  (version "1.03"
+   filename "tpu-1.03-pkg.tar.gz"
+   md5sum "c9801b4a173570fce0598182408ce90c"
+   size 57373
    provides (tpu)
+   requires ()
    type regular
 ))
 (viper
-  (version "1.01"
-   filename "viper-1.01-pkg.tar.gz"
-   md5sum "c8b1c0c664baeefe4bfccac077d83ad3"
-   size 252762
+  (version "1.02"
+   filename "viper-1.02-pkg.tar.gz"
+   md5sum "99145b4a71030c0fc8c93e24ddc29dd3"
+   size 260582
    provides (viper)
+   requires (xemacs-base)
    type regular
 ))
 ))
--- a/lisp/package-info.el	Mon Aug 13 10:15:49 2007 +0200
+++ b/lisp/package-info.el	Mon Aug 13 10:16:16 2007 +0200
@@ -70,7 +70,10 @@
   (unless noninteractive
     (error "`batch-update-package-info' is to be used only with -batch"))
   (let ((version (nth 0 command-line-args-left))
-	(filename (nth 1 command-line-args-left)))
+	(filename (nth 1 command-line-args-left))
+	(requires (nth 2 command-line-args-left)))
+    (unless requires
+      (setq requires ""))
     (find-file package-info)
     (erase-buffer)
     (insert-file-contents-literally package-info-template)
@@ -82,6 +85,7 @@
 				      (file-name-nondirectory filename)))
     (pi-update-key "SIZE" (format "%d"
 				  (nth 7 (file-attributes filename))))
+    (pi-update-key "REQUIRES" requires)
     (save-buffers-kill-emacs 0)))
 
 (provide 'package-info)
--- a/src/ChangeLog	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/ChangeLog	Mon Aug 13 10:16:16 2007 +0200
@@ -1,4 +1,80 @@
-Sat Jan 10 11:36:11 1998    <andyp@parallax.co.uk>
+1998-01-12  SL Baur  <steve@altair.xemacs.org>
+
+	* profile.c (Fclear_profiling_info): Fix typing error.
+
+	* elhash.c (elisp_map_remhash): Fix typing error.
+	(elisp_maphash): Ditto.
+
+1998-01-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* mule-ccl.c (Fccl_execute_on_string): Use Dynar_free to free a
+ 	Dynarr.
+
+1998-01-13  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* profile.c (vars_of_profile): New variable
+ 	`call-count-profile-table'.
+	(Fclear_profiling_info): Clear call-count-profile-table.
+
+	* eval.c (funcall_recording_as): Use it.
+
+	* profile.c (profile_increase_call_count): New function.
+
+	* lstream.c (stdio_flusher): Comment addition.
+
+	* objects-msw.c (mswindows_string_to_color): Support #RRRGGGBBB,
+	as well as #RRGGBB.
+	(mswindows_X_color_map): Reformatted.
+
+1998-01-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* line-number.c (invalidate_line_number_cache): Comment fixup.
+
+	* symbols.c (Fapropos_internal): Docstring fix.
+
+	* fns.c (Fstring_equal): Docstring fix.
+
+1998-01-12  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* profile.c (get_profiling_info_maphash): Return int.
+	(mark_profiling_info_maphash): Ditto.
+
+	* elhash.c (Finternal_hash_value): New debugging function,
+	undefined by default.
+
+1998-01-11  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* mule-coding.c (add_coding_system_to_list_mapper): Ditto.
+
+	* mule-charset.c (add_charset_to_list_mapper): Return int.
+
+	* faces.c (add_face_to_list_mapper): Return int.
+	(mark_face_as_clean_mapper): Ditto.
+	(update_face_inheritance_mapper): Ditto.
+
+	* keymap.c (keymap_submaps_mapper_0): Return int.
+	(keymap_submaps_mapper): Ditto.
+	(copy_keymap_inverse_mapper): Ditto.
+	(copy_keymap_mapper): Ditto.
+	(map_keymap_unsorted_mapper): Ditto.
+	(map_keymap_sorted_mapper): Ditto.
+
+	* elhash.c (hashtable): Added a hash method.
+	(hashtable_hash): New function.
+
+1998-01-09  Hrvoje Niksic  <hniksic@srce.hr>
+
+	* elhash.c (lisp_maphash_function): Return 0.
+	(hashtable_equal_mapper): Bail out when an element is not `equal'.
+
+	* hash.c (maphash): Bail out if map function returns non-zero.
+
+1998-01-11  SL Baur  <steve@altair.xemacs.org>
+
+	* eval.c (Fbacktrace): Treat first parameter to byte-code
+	specially.
+
+Sat Jan 10 11:36:11 1998  Andy Piper  <andyp@parallax.co.uk>
 
 	* config.h.in: undef HAVE_SYS_UN_H so that it gets defined by
 	configure for gnuserv with UNIX_DOMAIN_SOCKETS.
--- a/src/elhash.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/elhash.c	Mon Aug 13 10:16:16 2007 +0200
@@ -51,9 +51,11 @@
 static Lisp_Object mark_hashtable (Lisp_Object, void (*) (Lisp_Object));
 static void print_hashtable (Lisp_Object, Lisp_Object, int);
 static int hashtable_equal (Lisp_Object t1, Lisp_Object t2, int depth);
+static unsigned long hashtable_hash (Lisp_Object obj, int depth);
 DEFINE_LRECORD_IMPLEMENTATION ("hashtable", hashtable,
                                mark_hashtable, print_hashtable, 0,
-			       hashtable_equal, 0, struct hashtable);
+			       hashtable_equal, hashtable_hash,
+			       struct hashtable);
 
 static Lisp_Object
 mark_hashtable (Lisp_Object obj, void (*markobj) (Lisp_Object))
@@ -78,43 +80,38 @@
    elements, and for each key in hashtable, the values are `equal'.
 
    This is similar to Common Lisp `equalp' of hashtables, with the
-   difference that CL requires the keys to be compared using the
-   `:test' function, which we don't do.  Doing that would require
-   consing, and consing is bad idea in `equal'.  Anyway, our method
-   should provide the same result -- if the keys are not equal
-   according to `:test', then Fgethash() in hashtable_equal_mapper()
-   will fail.  */
+   difference that CL requires the keys to be compared with the test
+   function, which we don't do.  Doing that would require consing, and
+   consing is bad idea in `equal'.  Anyway, our method should provide
+   the same result -- if the keys are not equal according to test
+   function, then Fgethash() in hashtable_equal_mapper() will fail.  */
 struct hashtable_equal_closure
 {
   int depth;
-  int equal_so_far;
+  int equal;
   Lisp_Object other_table;
 };
 
-static void
+static int
 hashtable_equal_mapper (void *key, void *contents, void *arg)
 {
   struct hashtable_equal_closure *closure =
     (struct hashtable_equal_closure *)arg;
   Lisp_Object keytem, valuetem;
+  Lisp_Object value_in_other;
 
-  /* It would be beautiful if maphash() allowed us to bail out when C
-     function returns non-zero, a la map_extents() et al.  #### Make
-     it so!  */
-  if (closure->equal_so_far)
+  CVOID_TO_LISP (keytem, key);
+  CVOID_TO_LISP (valuetem, contents);
+  /* Look up the key in the other hashtable, and compare the values.  */
+  value_in_other = Fgethash (keytem, closure->other_table, Qunbound);
+  if (UNBOUNDP (value_in_other)
+      || !internal_equal (valuetem, value_in_other, closure->depth))
     {
-      Lisp_Object value_in_other;
-      CVOID_TO_LISP (keytem, key);
-      CVOID_TO_LISP (valuetem, contents);
-      /* Look up the key in the other hashtable, and compare the
-         values.  */
-      value_in_other = Fgethash (keytem, closure->other_table, Qunbound);
-      if (UNBOUNDP (value_in_other)
-	  || !internal_equal (valuetem, value_in_other, closure->depth))
-	closure->equal_so_far = 0;
-      /* return 1; */
+      /* Give up. */
+      closure->equal = 0;
+      return 1;
     }
-  /* return 0; */
+  return 0;
 }
 
 static int
@@ -133,10 +130,71 @@
     return 0;
 
   closure.depth = depth + 1;
-  closure.equal_so_far = 1;
+  closure.equal = 1;
   closure.other_table = t2;
   elisp_maphash (hashtable_equal_mapper, t1, &closure);
-  return closure.equal_so_far;
+  return closure.equal;
+}
+
+/* Hashtable hash function.  This hashes 5 key-value pairs.  For EQ
+   hashtables, keys are used as the hash value themselves, whereas
+   values are hashed with internal_hash().  For EQUAL hashtables, both
+   keys and values are hashed properly.  EQL tables are handled as
+   necessary.  All of this should make the hash function compatible
+   with hashtable_equal().  The elements hashed are the first five
+   mapped over by maphash().  */
+
+struct hashtable_hash_closure
+{
+  struct hashtable *table;
+  int depth;
+  unsigned long hash;
+  int count;
+};
+
+/* Needed for tests.  */
+static int lisp_object_eql_equal (CONST void *x1, CONST void *x2);
+static int lisp_object_equal_equal (CONST void *x1, CONST void *x2);
+
+static int
+hashtable_hash_mapper (void *key, void *contents, void *arg)
+{
+  struct hashtable_hash_closure *closure =
+    (struct hashtable_hash_closure *)arg;
+  Lisp_Object valuetem, keytem;
+  unsigned long keyhash;
+
+  CVOID_TO_LISP (keytem, key);
+  CVOID_TO_LISP (valuetem, contents);
+
+  if (!closure->table->test_function)
+    /* For eq, use key itself as hash.  */
+    keyhash = LISP_HASH (keytem);
+  else if (closure->table->test_function == lisp_object_eql_equal)
+    /* The same as eq, unless the key is float.  */
+    keyhash = (FLOATP (keytem)
+	       ? internal_hash (keytem, closure->depth) : LISP_HASH (keytem));
+  else
+    /* equal: hash the key properly. */
+    keyhash = internal_hash (keytem, closure->depth);
+
+  closure->hash = HASH3 (closure->hash, keyhash,
+			 internal_hash (valuetem, closure->depth));
+  return (++closure->count > 5) ? 1 : 0;
+}
+
+static unsigned long
+hashtable_hash (Lisp_Object obj, int depth)
+{
+  struct hashtable_hash_closure closure;
+
+  closure.table = XHASHTABLE (obj);
+  closure.depth = depth + 1;
+  closure.hash = 0;
+  closure.count = 0;
+
+  elisp_maphash (hashtable_hash_mapper, obj, &closure);
+  return closure.hash;
 }
 
 /* Printing hashtables.
@@ -157,7 +215,7 @@
    #<hashtable size 2/13 data (key1 value1 key2 value2) 0x874d>
 
    The data is truncated to four pairs, and the rest is shown with
-   `...'.  The actual printer is non-consing.  */
+   `...'.  This printer does not cons.  */
 
 struct print_hashtable_data_closure
 {
@@ -168,7 +226,7 @@
   Lisp_Object printcharfun;
 };
 
-static void
+static int
 print_hashtable_data_mapper (void *key, void *contents, void *arg)
 {
   Lisp_Object keytem, valuetem;
@@ -188,6 +246,7 @@
       print_internal (valuetem, closure->printcharfun, 1);
     }
   ++closure->count;
+  return 0;
 }
 
 /* Print the data of the hashtable.  This maps through a Lisp
@@ -205,10 +264,6 @@
 		  printcharfun);
 }
 
-/* Needed for tests.  */
-static int lisp_object_eql_equal (CONST void *x1, CONST void *x2);
-static int lisp_object_equal_equal (CONST void *x1, CONST void *x2);
-
 static void
 print_hashtable (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
 {
@@ -226,8 +281,10 @@
 		"you-d-better-not-see-this"));
       write_c_string (buf, printcharfun);
     }
-  /* These checks are way kludgy... */
-  if (table->test_function == NULL)
+  /* These checks have a kludgy look to them, but they are safe.  Due
+     to nature of hashing, you cannot use arbitrary test functions
+     anyway.  */
+  if (!table->test_function)
     write_c_string (" test eq", printcharfun);
   else if (table->test_function == lisp_object_equal_equal)
     write_c_string (" test equal", printcharfun);
@@ -521,6 +578,8 @@
 int
 lisp_string_equal (CONST void *x1, CONST void *x2)
 {
+  /* This is wrong anyway.  You can't use strcmp() on Lisp strings,
+     because they can contain zero characters.  */
   Lisp_Object str1, str2;
   CVOID_TO_LISP (str1, x1);
   CVOID_TO_LISP (str2, x2);
@@ -803,7 +862,7 @@
   signal_error (Qinvalid_function, list1 (function));
 }
 
-static void
+static int
 lisp_maphash_function (CONST void *void_key,
 		       void *void_val,
 		       void *void_fn)
@@ -814,6 +873,7 @@
   VOID_TO_LISP (val, void_val);
   VOID_TO_LISP (fn, void_fn);
   call2 (fn, key, val);
+  return 0;
 }
 
 
@@ -840,7 +900,9 @@
    lisp hashtable.
  */
 void
-elisp_maphash (maphash_function function, Lisp_Object hashtable, void *closure)
+elisp_maphash (void (*function) (CONST void *key, void *contents,
+				 void *extra_arg),
+	       Lisp_Object hashtable, void *closure)
 {
   struct _C_hashtable htbl;
 
@@ -850,7 +912,10 @@
 }
 
 void
-elisp_map_remhash (remhash_predicate function, Lisp_Object hashtable,
+elisp_map_remhash (int (*function) (CONST void *key,
+				    CONST void *contents,
+				    void *extra_arg),
+		   Lisp_Object hashtable,
 		   void *closure)
 {
   struct _C_hashtable htbl;
@@ -933,7 +998,7 @@
   int did_mark;
 };
 
-static void
+static int
 marking_mapper (CONST void *key, void *contents, void *closure)
 {
   Lisp_Object keytem, valuetem;
@@ -1001,7 +1066,7 @@
       abort (); /* Huh? */
     }
 
-  return;
+  return 0;
 }
 
 int
@@ -1189,6 +1254,19 @@
   return LISP_HASH (obj);
 }
 
+#if 0
+xxDEFUN ("internal-hash-value", Finternal_hash_value, 1, 1, 0, /*
+Hash value of OBJECT.  For debugging.
+The value is returned as (HIGH . LOW).
+*/
+       (object))
+{
+  /* This function is pretty 32bit-centric. */
+  unsigned long hash = internal_hash (object, 0);
+  return Fcons (hash >> 16, hash & 0xffff);
+}
+#endif
+
 
 /************************************************************************/
 /*                            initialization                            */
@@ -1209,6 +1287,9 @@
   DEFSUBR (Fmake_weak_hashtable);
   DEFSUBR (Fmake_key_weak_hashtable);
   DEFSUBR (Fmake_value_weak_hashtable);
+#if 0
+  DEFSUBR (Finternal_hash_value);
+#endif
   defsymbol (&Qhashtablep, "hashtablep");
   defsymbol (&Qhashtable, "hashtable");
   defsymbol (&Qweak, "weak");
--- a/src/eval.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/eval.c	Mon Aug 13 10:16:16 2007 +0200
@@ -51,6 +51,9 @@
 #define POP_BACKTRACE(bt) \
   do { backtrace_list = (bt).next; } while (0)
 
+extern int profiling_active;
+void profile_increase_call_count (Lisp_Object);
+
 /* This is the list of current catches (and also condition-cases).
    This is a stack: the most recent catch is at the head of the
    list.  Catches are created by declaring a 'struct catchtag'
@@ -3199,6 +3202,10 @@
   }
 #endif
 
+  /* It might be useful to place this *after* all the checks.  */
+  if (profiling_active)
+    profile_increase_call_count (fun);
+
   if (SYMBOLP (fun))
     fun = indirect_function (fun, 1);
 
@@ -5047,6 +5054,10 @@
 		  int i;
 		  for (i = 0; i < backlist->nargs; i++)
 		    {
+		      if (!i && EQ(tem, Qbyte_code)) {
+			write_c_string("\"...\"", stream);
+			continue;
+		      }
 		      if (i != 0) write_c_string (" ", stream);
 		      Fprin1 (backlist->args[i], stream);
 		    }
--- a/src/faces.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/faces.c	Mon Aug 13 10:16:16 2007 +0200
@@ -390,7 +390,7 @@
   Lisp_Object *face_list;
 };
 
-static void
+static int
 add_face_to_list_mapper (CONST void *hash_key, void *hash_contents,
 			 void *face_list_closure)
 {
@@ -404,6 +404,7 @@
   face_list = fcl->face_list;
 
   *face_list = Fcons (XFACE (contents)->name, *face_list);
+  return 0;
 }
 
 static Lisp_Object
@@ -434,7 +435,7 @@
 }
 
 
-static void
+static int
 mark_face_as_clean_mapper (CONST void *hash_key, void *hash_contents,
 			   void *flag_closure)
 {
@@ -444,6 +445,7 @@
   CVOID_TO_LISP (key, hash_key);
   VOID_TO_LISP (contents, hash_contents);
   XFACE (contents)->dirty = *flag;
+  return 0;
 }
 
 static void
@@ -501,7 +503,7 @@
   UNGCPRO;
 }
 
-static void
+static int
 update_face_inheritance_mapper (CONST void *hash_key, void *hash_contents,
 				void *face_inheritance_closure)
 {
@@ -536,6 +538,7 @@
       update_inheritance_mapper_internal (contents, fcl->face, Qblinking);
       update_inheritance_mapper_internal (contents, fcl->face, Qreverse);
     }
+  return 0;
 }
 
 static void
--- a/src/fns.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/fns.c	Mon Aug 13 10:16:16 2007 +0200
@@ -269,11 +269,12 @@
 DEFUN ("string-equal", Fstring_equal, 2, 2, 0, /*
 T if two strings have identical contents.
 Case is significant.  Text properties are ignored.
-(Under XEmacs, `equal' also ignores text properties and extents in
-strings, but this is not the case under FSF Emacs.)
+\(Under XEmacs, `equal' also ignores text properties and extents in
+strings, but this is not the case under FSF Emacs 19.  In FSF Emacs 20
+`equal' is the same as in XEmacs, in that respect.)
 Symbols are also allowed; their print names are used instead.
 */
-  (s1, s2))
+       (s1, s2))
 {
   int len;
 
--- a/src/hash.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/hash.c	Mon Aug 13 10:16:16 2007 +0200
@@ -453,12 +453,18 @@
   hentry *limit;
 
   if (hash->zero_set)
-    ((*mf) (0, hash->zero_entry, arg));
+    {
+      if (((*mf) (0, hash->zero_entry, arg)))
+	return;
+    }
 
   for (e = hash->harray, limit = e + hash->size; e < limit; e++)
     {
       if (e->key)
-	((*mf) (e->key, e->contents, arg));
+	{
+	  if (((*mf) (e->key, e->contents, arg)))
+	    return;
+	}
     }
 }
 
--- a/src/hash.h	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/hash.h	Mon Aug 13 10:16:16 2007 +0200
@@ -70,7 +70,7 @@
 /* delete the entry which key is key */
 void remhash (CONST void *key, c_hashtable hash);
 
-typedef void (*maphash_function) (CONST void* key, void* contents, void* arg);
+typedef int (*maphash_function) (CONST void* key, void* contents, void* arg);
 
 typedef int (*remhash_predicate) (CONST void* key, CONST void* contents,
                                   void* arg);
--- a/src/keymap.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/keymap.c	Mon Aug 13 10:16:16 2007 +0200
@@ -681,7 +681,7 @@
   Lisp_Object *result_locative;
 };
 
-static void
+static int
 keymap_submaps_mapper_0 (CONST void *hash_key, void *hash_contents,
                          void *keymap_submaps_closure)
 {
@@ -690,9 +690,10 @@
   VOID_TO_LISP (contents, hash_contents);
   /* Perform any autoloads, etc */
   Fkeymapp (contents);
+  return 0;
 }
 
-static void
+static int
 keymap_submaps_mapper (CONST void *hash_key, void *hash_contents,
                        void *keymap_submaps_closure)
 {
@@ -707,6 +708,7 @@
 
   if (!NILP (Fkeymapp (contents)))
     *result_locative = Fcons (Fcons (key, contents), *result_locative);
+  return 0;
 }
 
 static int map_keymap_sort_predicate (Lisp_Object obj1, Lisp_Object obj2,
@@ -1110,7 +1112,7 @@
   Lisp_Object inverse_table;
 };
 
-static void
+static int
 copy_keymap_inverse_mapper (CONST void *hash_key, void *hash_contents,
                             void *copy_keymap_inverse_closure)
 {
@@ -1125,6 +1127,8 @@
   if (CONSP (inverse_contents))
     inverse_contents = Fcopy_sequence (inverse_contents);
   Fputhash (key, inverse_contents, closure->inverse_table);
+
+  return 0;
 }
 
 
@@ -1157,7 +1161,7 @@
   struct keymap *self;
 };
 
-static void
+static int
 copy_keymap_mapper (CONST void *hash_key, void *hash_contents,
                     void *copy_keymap_closure)
 {
@@ -1178,6 +1182,7 @@
   if (KEYMAPP (contents))
     keymap_store_internal (key, closure->self,
 			   copy_keymap (contents));
+  return 0;
 }
 
 static Lisp_Object
@@ -2765,7 +2770,7 @@
 };
 
 /* used by map_keymap() */
-static void
+static int
 map_keymap_unsorted_mapper (CONST void *hash_key, void *hash_contents,
                             void *map_keymap_unsorted_closure)
 {
@@ -2796,6 +2801,7 @@
       key.modifiers = modifiers;
       ((*closure->fn) (&key, contents, closure->arg));
     }
+  return 0;
 }
 
 
@@ -2805,7 +2811,7 @@
 };
 
 /* used by map_keymap_sorted() */
-static void
+static int
 map_keymap_sorted_mapper (CONST void *hash_key, void *hash_contents,
                           void *map_keymap_sorted_closure)
 {
@@ -2816,6 +2822,7 @@
   CVOID_TO_LISP (key, hash_key);
   VOID_TO_LISP (contents, hash_contents);
   *list = Fcons (Fcons (key, contents), *list);
+  return 0;
 }
 
 
--- a/src/line-number.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/line-number.c	Mon Aug 13 10:16:16 2007 +0200
@@ -134,8 +134,15 @@
       if (!CONSP (ring[i]))
 	break;
       /* As the marker stays behind the insertions, this check might
-         as well be >=.  However, Finsert_before_markers can move the
-         marker anyway, which bites in shell buffers.  */
+         as well be `>'.  However, Finsert_before_markers can move the
+         marker anyway, which bites in shell buffers.
+
+	 #### This is wrong; it works right, but forces recreation of
+	 the cached marker (and recalculation of newlines) every time
+	 a newline is inserted at point, which is way losing.  Isn't
+	 there a way to make a marker impervious to
+	 Finsert_before_markers()??  Maybe I should convert to using
+	 extents.  */
       if (marker_position (XCAR (ring[i])) >= pos)
 	{
 	  /* Get the marker out of the way.  */
--- a/src/lstream.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/lstream.c	Mon Aug 13 10:16:16 2007 +0200
@@ -898,7 +898,9 @@
   if (stream->flags & LSTREAM_FL_WRITE)
     return fflush (str->file);
   else
-    /* call fpurge?  Only exists on some systems. */
+    /* call fpurge?  Only exists on some systems.  #### Why not add a
+       configure check for HAVE_FPURGE and utilize it on systems that
+       support it?  --hniksic */
     return 0;
 }
 
--- a/src/mule-ccl.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/mule-ccl.c	Mon Aug 13 10:16:16 2007 +0200
@@ -967,7 +967,7 @@
   CHECK_VECTOR (ccl_prog);
   CHECK_VECTOR (reg);
   if (XVECTOR_LENGTH (reg) != 8)
-    error ("Invalid length of vector REGISTERS");
+    signal_simple_error ("Vector should be of length 8", reg);
 
   setup_ccl_program (&ccl, ccl_prog);
   for (i = 0; i < 8; i++)
@@ -1012,7 +1012,7 @@
   CHECK_VECTOR (ccl_prog);
   CHECK_VECTOR (status);
   if (XVECTOR_LENGTH (status) != 9)
-    error ("Invalid length of vector STATUS");
+    signal_simple_error ("Vector should be of length 9", status);
   CHECK_STRING (str);
   GCPRO3 (ccl_prog, status, str);
 
@@ -1040,7 +1040,7 @@
   UNGCPRO;
 
   val = make_string (Dynarr_atp (outbuf, 0), produced);
-  free (outbuf);
+  Dynarr_free (outbuf);
   QUIT;
   if (ccl.status != CCL_STAT_SUCCESS
       && ccl.status != CCL_STAT_SUSPEND)
--- a/src/mule-charset.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/mule-charset.c	Mon Aug 13 10:16:16 2007 +0200
@@ -561,7 +561,7 @@
   Lisp_Object *charset_list;
 };
 
-static void
+static int
 add_charset_to_list_mapper (CONST void *hash_key, void *hash_contents,
 			    void *charset_list_closure)
 {
@@ -575,6 +575,7 @@
   charset_list = chcl->charset_list;
 
   *charset_list = Fcons (XCHARSET_NAME (contents), *charset_list);
+  return 0;
 }
 
 DEFUN ("charset-list", Fcharset_list, 0, 0, 0, /*
--- a/src/mule-coding.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/mule-coding.c	Mon Aug 13 10:16:16 2007 +0200
@@ -439,7 +439,7 @@
   Lisp_Object *coding_system_list;
 };
 
-static void
+static int
 add_coding_system_to_list_mapper (CONST void *hash_key, void *hash_contents,
 				  void *coding_system_list_closure)
 {
@@ -454,6 +454,7 @@
 
   *coding_system_list = Fcons (XCODING_SYSTEM (contents)->name,
 			       *coding_system_list);
+  return 0;
 }
 
 DEFUN ("coding-system-list", Fcoding_system_list, 0, 0, 0, /*
--- a/src/profile.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/profile.c	Mon Aug 13 10:16:16 2007 +0200
@@ -1,5 +1,6 @@
 /* Why the hell is XEmacs so fucking slow?
    Copyright (C) 1996 Ben Wing.
+   Copyright (C) 1998 Free Software Foundation, Inc.
 
 This file is part of XEmacs.
 
@@ -28,27 +29,35 @@
 #include "syssignal.h"
 #include "systime.h"
 
-/*
+/* We implement our own profiling scheme so that we can determine
+   things like which Lisp functions are occupying the most time.  Any
+   standard OS-provided profiling works on C functions, which is
+   somewhat useless.
 
-We implement our own profiling scheme so that we can determine things
-like which Lisp functions are occupying the most time.  Any standard
-OS-provided profiling works on C functions, which is somewhat useless.
+   The basic idea is simple.  We set a profiling timer using setitimer
+   (ITIMER_PROF), which generates a SIGPROF every so often.  (This
+   runs not in real time but rather when the process is executing or
+   the system is running on behalf of the process.) When the signal
+   goes off, we see what we're in, and add by 1 the count associated
+   with that function.
 
-The basic idea is simple.  We set a profiling timer using
-setitimer (ITIMER_PROF), which generates a SIGPROF every so often.
-\(This runs not in real time but rather when the process is executing
-or the system is running on behalf of the process.) When the signal
-goes off, we see what we're in, and add by 1 the count associated with
-that function.
+   It would be nice to use the Lisp allocation mechanism etc. to keep
+   track of the profiling information, but we can't because that's not
+   safe, and trying to make it safe would be much more work than is
+   worth.
+
 
-It would be nice to use the Lisp allocation mechanism etc. to keep
-track of the profiling information, but we can't because that's not
-safe, and trying to make it safe would be much more work than is
-worth.
-
-*/
+   Jan 1998: In addition to this, I have added code to remember call
+   counts of Lisp funcalls.  The profile_increase_call_count()
+   function is called from funcall_recording_as(), and serves to add
+   data to Vcall_count_profile_table.  This mechanism is much simpler
+   and independent of the SIGPROF-driven one.  It uses the Lisp
+   allocation mechanism normally, since it is not called from a
+   handler.  It may even be useful to provide a way to turn on only
+   one profiling mechanism, but I haven't done so yet.  --hniksic */
 
 c_hashtable big_profile_table;
+Lisp_Object Vcall_count_profile_table;
 
 int default_profiling_interval;
 
@@ -69,6 +78,22 @@
    enough to catch us while we're already in there. */
 static volatile int inside_profiling;
 
+/* Increase the value of OBJ in Vcall_count_profile_table hashtable.
+   If hashtable is nil, create it first.  */
+void
+profile_increase_call_count (Lisp_Object obj)
+{
+  Lisp_Object count;
+
+  if (NILP (Vcall_count_profile_table))
+    Vcall_count_profile_table = Fmake_hashtable (make_int (100), Qeq);
+
+  count = Fgethash (obj, Vcall_count_profile_table, Qzero);
+  if (!INTP (count))
+    count = Qzero;
+  Fputhash (obj, make_int (1 + XINT (count)), Vcall_count_profile_table);
+}
+
 static SIGTYPE
 sigprof_handler (int signo)
 {
@@ -194,7 +219,7 @@
   Lisp_Object accum;
 };
 
-static void
+static int
 get_profiling_info_maphash (CONST void *void_key,
 			    void *void_val,
 			    void *void_closure)
@@ -209,6 +234,7 @@
   val = (EMACS_INT) void_val;
 
   closure->accum = Fcons (Fcons (key, make_int (val)), closure->accum);
+  return 0;
 }
 
 DEFUN ("get-profiling-info", Fget_profiling_info, 0, 0, 0, /*
@@ -236,7 +262,7 @@
   void (*markfun) (Lisp_Object);
 };
 
-static void
+static int
 mark_profiling_info_maphash (CONST void *void_key,
 			     void *void_val,
 			     void *void_closure)
@@ -245,6 +271,7 @@
 
   CVOID_TO_LISP (key, void_key);
   (((struct mark_profiling_info_closure *) void_closure)->markfun) (key);
+  return 0;
 }
 
 void
@@ -274,6 +301,8 @@
       clrhash (big_profile_table);
       inside_profiling = 0;
     }
+  if (!NILP(Vcall_count_profile_table))
+    Fclrhash (Vcall_count_profile_table);
   return Qnil;
 }
 
@@ -306,6 +335,13 @@
 */ );
   default_profiling_interval = 1000;
 
+  DEFVAR_LISP ("call-count-profile-table", &Vcall_count_profile_table /*
+The table where call-count information is stored by the profiling primitives.
+This is a hashtable whose keys are funcallable objects, and whose
+ values are their call counts (integers).
+*/ );
+  Vcall_count_profile_table = Qnil;
+
   inside_profiling = 0;
 
   QSin_redisplay = build_string ("(in redisplay)");
--- a/src/symbols.c	Mon Aug 13 10:15:49 2007 +0200
+++ b/src/symbols.c	Mon Aug 13 10:16:16 2007 +0200
@@ -445,8 +445,9 @@
 
 DEFUN ("apropos-internal", Fapropos_internal, 1, 2, 0, /*
 Show all symbols whose names contain match for REGEXP.
-If optional 2nd arg PREDICATE is non-nil, (funcall PRED SYM) is done
-for each symbol and a symbol is mentioned only if that returns non-nil.
+If optional 2nd arg PREDICATE is non-nil, (funcall PREDICATE SYMBOL)
+ is done for each symbol and a symbol is mentioned only if that
+ returns non-nil.
 Return list of symbols found.
 */
        (regexp, predicate))
--- a/version.sh	Mon Aug 13 10:15:49 2007 +0200
+++ b/version.sh	Mon Aug 13 10:16:16 2007 +0200
@@ -1,5 +1,5 @@
 #!/bin/sh
 emacs_major_version=20
 emacs_minor_version=5
-emacs_beta_version=18
-xemacs_codename="Daera Din Panah"
+emacs_beta_version=19
+xemacs_codename="Damani"