changeset 83232:5e454dd0d649

Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-715 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-716 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-717 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-718 RCS keyword removal * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-719 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-74 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-272
author Karoly Lorentey <lorentey@elte.hu>
date Wed, 08 Dec 2004 22:21:07 +0000
parents 549734260e34 (current diff) c05f062fa72f (diff)
children a2e7b2d1eb70
files ChangeLog etc/TODO lisp/ChangeLog man/ChangeLog src/alloc.c src/config.in src/emacs.c src/keyboard.c
diffstat 40 files changed, 1677 insertions(+), 286 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Dec 08 22:20:27 2004 +0000
+++ b/ChangeLog	Wed Dec 08 22:21:07 2004 +0000
@@ -1,6 +1,11 @@
+2004-12-07  Stefan  <monnier@iro.umontreal.ca>
+
+	* configure.in (INLINE, RE_TRANSLATE_P): Move patches mistakenly
+	committed to src/config.in.
+
 2004-12-07  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
-	* configure.in: If $HAVE_GTK_FILE_CHOOSER = yes, check for 
+	* configure.in: If $HAVE_GTK_FILE_CHOOSER = yes, check for
 	pthreads and define HAVE_GTK_AND_PTHREAD.
 	* configure: Regenerate.
 
--- a/configure.in	Wed Dec 08 22:20:27 2004 +0000
+++ b/configure.in	Wed Dec 08 22:21:07 2004 +0000
@@ -3,7 +3,7 @@
 dnl 	autoconf
 dnl in the directory containing this script.
 dnl
-dnl  Copyright (C) 1994, 95, 96, 1999, 2000, 01, 02, 03, 2004
+dnl  Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2003, 2004
 dnl  Free Software Foundation, Inc.
 dnl
 dnl  This file is part of GNU Emacs.
@@ -2767,7 +2767,8 @@
 fi
 
 AH_TOP([/* GNU Emacs site configuration template file.
-   Copyright (C) 1988, 93, 94, 99, 2000, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1988, 1993, 1994, 1999, 2000, 2002, 2004
+             Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -2848,7 +2849,7 @@
 /* Don't try to switch on inline handling as detected by AC_C_INLINE
    generally, because even if non-gcc compilers accept `inline', they
    may reject `extern inline'.  */
-#ifdef __GNUC__
+#if defined (__GNUC__) && defined (OPTIMIZE)
 #define INLINE __inline__
 #else
 #define INLINE
@@ -2896,7 +2897,13 @@
 /* Tell regex.c to use a type compatible with Emacs.  */
 #define RE_TRANSLATE_TYPE Lisp_Object
 #define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
-#define RE_TRANSLATE_P(TBL) (XFASTINT (TBL) != 0)
+#ifdef make_number
+/* If make_number is a macro, use it.  */
+#define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
+#else
+/* If make_number is a function, avoid it.  */
+#define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
+#endif
 #endif
 
 /* Avoid link-time collision with system mktime if we will use our own.  */
--- a/etc/TODO	Wed Dec 08 22:20:27 2004 +0000
+++ b/etc/TODO	Wed Dec 08 22:21:07 2004 +0000
@@ -318,8 +318,6 @@
 
 * Internal changes
 
-** Replace Emacs's regex.c with the new DFA-based glibc regex code.
-
 ** Replace gmalloc.c with the modified Doug Lea code from the current
   GNU libc so that the special mmapping of buffers can be removed --
   that apparently loses under Solaris, at least.  [fx has mostly done
--- a/lisp/ChangeLog	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/ChangeLog	Wed Dec 08 22:21:07 2004 +0000
@@ -1,8 +1,34 @@
-2004-12-06  Stefan  <monnier@iro.umontreal.ca>
+2004-12-08  Jay Belanger  <belanger@truman.edu>
+
+	* calc/calc.el: Add math-read-preprocess-string to autoloads.
+
+	* calc/calc-ext.el (math-read-replacement-list)
+	(math-read-superscripts, math-read-preprocess-string): Move to
+	calc-aent.el.
+
+	* calc/calc-aent.el (math-read-replacement-list)
+	(math-read-superscripts, math-read-preprocess-string): Move from
+	calc-ext.el.
+
+2004-12-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* isearch.el (isearch-quote-char): Fix up typo in last change.
+
+2004-12-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* mouse.el (mouse-set-font): Handle the case where the command was
+	not invoked using the mouse.
+
+	* edmacro.el: `edit-kbd-macro' is now bound to `C-x C-k e'.
+	(edmacro-finish-edit): Further update for keyboard macros that are
+	lambda forms.
+	(edmacro-sanitize-for-string): Correctly remove Meta modifier
+	(as suggested by Kim Storm).
+
+2004-12-06  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* font-lock.el (font-lock-unfontify-region): Save buffer state.
-	(font-lock-default-unfontify-region): Don't save buffer state any
-	more.
+	(font-lock-default-unfontify-region): Don't save buffer state any more.
 
 2004-12-07  Jay Belanger  <belanger@truman.edu>
 
--- a/lisp/calc/calc-aent.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/calc/calc-aent.el	Wed Dec 08 22:21:07 2004 +0000
@@ -465,6 +465,73 @@
 
 ;;; Algebraic expression parsing.   [Public]
 
+(defvar math-read-replacement-list
+  '(;; Misc symbols
+    ("±" "+/-")  ; plus or minus
+    ("×" "*")    ; multiplication sign
+    ("÷" ":")    ; division sign
+    ("−" "-")    ; subtraction sign
+    ("∕" "/")    ; division sign
+    ("∗" "*")    ; asterisk multiplication
+    ("∞" "inf")  ; infinity symbol
+    ("≤" "<=")
+    ("≥" ">=")
+    ("≦" "<=")
+    ("≧" ">=")
+    ;; fractions
+    ("¼" "(1:4)") ; 1/4
+    ("½" "(1:2)") ; 1/2
+    ("¾" "(3:4)") ; 3/4
+    ("⅓" "(1:3)") ; 1/3
+    ("⅔" "(2:3)") ; 2/3
+    ("⅕" "(1:5)") ; 1/5
+    ("⅖" "(2:5)") ; 2/5
+    ("⅗" "(3:5)") ; 3/5
+    ("⅘" "(4:5)") ; 4/5
+    ("⅙" "(1:6)") ; 1/6
+    ("⅚" "(5:6)") ; 5/6
+    ("⅛" "(1:8)") ; 1/8
+    ("⅜" "(3:8)") ; 3/8
+    ("⅝" "(5:8)") ; 5/8
+    ("⅞" "(7:8)") ; 7/8
+    ("⅟" "1:")    ; 1/...
+    ;; superscripts
+    ("⁰" "0")  ; 0
+    ("¹" "1")  ; 1
+    ("²" "2")  ; 2
+    ("³" "3")  ; 3
+    ("⁴" "4")  ; 4
+    ("⁵" "5")  ; 5
+    ("⁶" "6")  ; 6
+    ("⁷" "7")  ; 7
+    ("⁸" "8")  ; 8
+    ("⁹" "9")  ; 9
+    ("⁺" "+")  ; +
+    ("⁻" "-")  ; -
+    ("⁽" "(")  ; (
+    ("⁾" ")")  ; )
+    ("ⁿ" "n")  ; n
+    ("ⁱ" "i")) ; i
+  "A list whose elements (old new) indicate replacements to make
+in Calc algebraic input.")
+
+(defvar math-read-superscripts
+  "⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁽⁾ⁿⁱ" ; 0123456789+-()ni
+  "A string consisting of the superscripts allowed by Calc.")
+
+(defun math-read-preprocess-string (str)
+  "Replace some substrings of STR by Calc equivalents."
+  (setq str
+        (replace-regexp-in-string (concat "[" math-read-superscripts "]+")
+                                  "^(\\&)" str))
+  (let ((rep-list math-read-replacement-list))
+    (while rep-list
+      (setq str
+            (replace-regexp-in-string (nth 0 (car rep-list))
+                                      (nth 1 (car rep-list)) str))
+      (setq rep-list (cdr rep-list))))
+  str)
+
 ;; The next few variables are local to math-read-exprs (and math-read-expr
 ;; in calc-ext.el), but are set in functions they call.
 
--- a/lisp/calc/calc-ext.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/calc/calc-ext.el	Wed Dec 08 22:21:07 2004 +0000
@@ -2874,73 +2874,6 @@
 
 (defvar math-expr-data)
 
-(defvar math-read-replacement-list
-  '(;; Misc symbols
-    ("±" "+/-")  ; plus or minus
-    ("×" "*")    ; multiplication sign
-    ("÷" ":")    ; division sign
-    ("−" "-")    ; subtraction sign
-    ("∕" "/")    ; division sign
-    ("∗" "*")    ; asterisk multiplication
-    ("∞" "inf")  ; infinity symbol
-    ("≤" "<=")
-    ("≥" ">=")
-    ("≦" "<=")
-    ("≧" ">=")
-    ;; fractions
-    ("¼" "(1:4)") ; 1/4
-    ("½" "(1:2)") ; 1/2
-    ("¾" "(3:4)") ; 3/4
-    ("⅓" "(1:3)") ; 1/3
-    ("⅔" "(2:3)") ; 2/3
-    ("⅕" "(1:5)") ; 1/5
-    ("⅖" "(2:5)") ; 2/5
-    ("⅗" "(3:5)") ; 3/5
-    ("⅘" "(4:5)") ; 4/5
-    ("⅙" "(1:6)") ; 1/6
-    ("⅚" "(5:6)") ; 5/6
-    ("⅛" "(1:8)") ; 1/8
-    ("⅜" "(3:8)") ; 3/8
-    ("⅝" "(5:8)") ; 5/8
-    ("⅞" "(7:8)") ; 7/8
-    ("⅟" "1:")    ; 1/...
-    ;; superscripts
-    ("⁰" "0")  ; 0
-    ("¹" "1")  ; 1
-    ("²" "2")  ; 2
-    ("³" "3")  ; 3
-    ("⁴" "4")  ; 4
-    ("⁵" "5")  ; 5
-    ("⁶" "6")  ; 6
-    ("⁷" "7")  ; 7
-    ("⁸" "8")  ; 8
-    ("⁹" "9")  ; 9
-    ("⁺" "+")  ; +
-    ("⁻" "-")  ; -
-    ("⁽" "(")  ; (
-    ("⁾" ")")  ; )
-    ("ⁿ" "n")  ; n
-    ("ⁱ" "i")) ; i
-  "A list whose elements (old new) indicate replacements to make
-in Calc algebraic input.")
-
-(defvar math-read-superscripts
-  "⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁽⁾ⁿⁱ" ; 0123456789+-()ni
-  "A string consisting of the superscripts allowed by Calc.")
-
-(defun math-read-preprocess-string (str)
-  "Replace some substrings of STR by Calc equivalents."
-  (setq str
-        (replace-regexp-in-string (concat "[" math-read-superscripts "]+")
-                                  "^(\\&)" str))
-  (let ((rep-list math-read-replacement-list))
-    (while rep-list
-      (setq str
-            (replace-regexp-in-string (nth 0 (car rep-list))
-                                      (nth 1 (car rep-list)) str))
-      (setq rep-list (cdr rep-list))))
-  str)
-
 (defun math-read-expr (math-exp-str)
   (let ((math-exp-pos 0)
 	(math-exp-old-pos 0)
--- a/lisp/calc/calc.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/calc/calc.el	Wed Dec 08 22:21:07 2004 +0000
@@ -890,7 +890,7 @@
     calc-check-user-syntax calc-do-alg-entry calc-do-calc-eval
     calc-do-quick-calc calc-match-user-syntax math-build-parse-table
     math-find-user-tokens math-read-expr-list math-read-exprs math-read-if
-    math-read-token math-remove-dashes)
+    math-read-token math-remove-dashes math-read-preprocess-string)
 
  ("calc-embed" calc-do-embedded-activate)
 
--- a/lisp/edmacro.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/edmacro.el	Wed Dec 08 22:21:07 2004 +0000
@@ -1,6 +1,6 @@
 ;;; edmacro.el --- keyboard macro editor
 
-;; Copyright (C) 1993, 1994 Free Software Foundation, Inc.
+;; Copyright (C) 1993, 1994, 2004 Free Software Foundation, Inc.
 
 ;; Author: Dave Gillespie <daveg@synaptics.com>
 ;; Maintainer: Dave Gillespie <daveg@synaptics.com>
@@ -28,7 +28,7 @@
 
 ;;; Usage:
 ;;
-;; The `C-x C-k' (`edit-kbd-macro') command edits a keyboard macro
+;; The `C-x C-k e' (`edit-kbd-macro') command edits a keyboard macro
 ;; in a special buffer.  It prompts you to type a key sequence,
 ;; which should be one of:
 ;;
@@ -266,7 +266,8 @@
 			    (and b (commandp b) (not (arrayp b))
 				 (not (kmacro-extract-lambda b))
 				 (or (not (fboundp b))
-				     (not (arrayp (symbol-function b))))
+				     (not (or (arrayp (symbol-function b))
+					      (get b 'kmacro))))
 				 (not (y-or-n-p
 				       (format "Key %s is already defined; %s"
 					       (edmacro-format-keys key 1)
@@ -655,7 +656,7 @@
 This function assumes that the events can be stored in a string."
   (setq seq (copy-sequence seq))
   (loop for i below (length seq) do
-        (when (< (aref seq i) 0)
+        (when (logand (aref seq i) 128)
           (setf (aref seq i) (logand (aref seq i) 127))))
   seq)
 
--- a/lisp/gnus/ChangeLog	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/ChangeLog	Wed Dec 08 22:21:07 2004 +0000
@@ -1,3 +1,89 @@
+2004-12-02  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* message.el (message-forward-make-body-mml): Remove headers
+	according to message-forward-ignored-headers if a message is
+	decoded.
+
+2004-12-02  Romain Francoise  <romain@orebokech.com>
+
+	* message.el (message-forward-make-body-plain): Always remove
+	headers according to message-forward-ignored-headers.
+
+2004-11-26  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* lpath.el: Remove bbdb-create-internal, bbdb-records,
+	spam-BBDB-register-routine and spam-enter-ham-BBDB.
+
+	* nnrss.el (nnrss-string-as-multibyte): Redefine it as a macro in
+	order to silence the byte compiler.
+
+	* pop3.el (pop3-md5): Define it before being used.
+
+	* spam.el: Fix the way to silence the byte compiler, which
+	complained about bbdb-buffer, bbdb-create-internal,
+	bbdb-search-simple, mail-check-payment, spam-BBDB-register-routine,
+	spam-enter-ham-BBDB, spam-stat-buffer-change-to-non-spam,
+	spam-stat-buffer-change-to-spam, spam-stat-buffer-is-non-spam,
+	spam-stat-buffer-is-spam, spam-stat-load,
+	spam-stat-register-ham-routine, spam-stat-register-spam-routine,
+	spam-stat-save and spam-stat-split-fancy.
+
+2004-11-26  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* canlock.el (canlock-password): Remove `:size 0' or `:size 1'
+	which may confuse users.
+	(canlock-password-for-verify): Ditto.
+
+	* deuglify.el (gnus-outlook-deuglify-unwrap-stop-chars): Ditto.
+
+	* gnus-art.el (gnus-emphasis-alist): Ditto.
+
+	* gnus-registry.el (gnus-registry-max-entries): Ditto.
+
+	* gnus-score.el (gnus-adaptive-word-length-limit): Ditto.
+
+	* gnus-start.el (gnus-save-killed-list): Ditto.
+
+	* gnus-sum.el (gnus-thread-hide-subtree): Ditto.
+	(gnus-sum-thread-tree-root): Ditto.
+	(gnus-sum-thread-tree-false-root): Ditto.
+	(gnus-sum-thread-tree-single-indent): Ditto.
+
+	* message.el (message-courtesy-message): Ditto.
+	(message-archive-note): Ditto.
+	(message-subscribed-address-file): Ditto.
+	(message-user-fqdn): Ditto.
+
+	* spam-report.el (spam-report-gmane-regex): Ditto.
+
+	* spam.el (spam-blackhole-good-server-regex): Ditto.
+
+2004-11-25  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* message.el (message-forbidden-properties): Fixed typo in doc
+	string.
+
+2004-11-25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+	* message.el (message-strip-forbidden-properties): Bind
+	buffer-read-only (etc) to nil.
+
+2004-11-25  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* gnus-util.el (gnus-replace-in-string): Added doc string.
+
+	* nnmail.el (nnmail-split-header-length-limit): Increase to 2048
+	to avoid problems when splitting mails with many recipients.
+
+2004-11-23  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+	* rfc2047.el (rfc2047-header-encoding-alist): Add In-Reply-To to
+	address-mime.  Suggested by ARISAWA Akihiro <ari@mbf.ocn.ne.jp>.
+
+2004-11-22  Marek Martin  <marek.martin@mum.pri.ee>  (tiny change)
+
+	* nnfolder.el (nnfolder-request-create-group): Save current buffer.
+
 2004-11-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* gnus-sum.el (gnus-summary-exit): Remove redundant and harmful
--- a/lisp/gnus/canlock.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/canlock.el	Wed Dec 08 22:21:07 2004 +0000
@@ -55,13 +55,13 @@
 (defcustom canlock-password nil
   "Password to use when signing a Cancel-Lock or a Cancel-Key header."
   :type '(radio (const :format "Not specified " nil)
-		(string :tag "Password" :size 0))
+		(string :tag "Password"))
   :group 'canlock)
 
 (defcustom canlock-password-for-verify canlock-password
   "Password to use when verifying a Cancel-Lock or a Cancel-Key header."
   :type '(radio (const :format "Not specified " nil)
-		(string :tag "Password" :size 0))
+		(string :tag "Password"))
   :group 'canlock)
 
 (defcustom canlock-force-insert-header nil
--- a/lisp/gnus/deuglify.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/deuglify.el	Wed Dec 08 22:21:07 2004 +0000
@@ -1,6 +1,6 @@
 ;;; deuglify.el --- deuglify broken Outlook (Express) articles
 
-;; Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
 ;; Copyright (C) 2001, 2002 Raymond Scholz
 
 ;; Author: Raymond Scholz <rscholz@zonix.de>
@@ -257,7 +257,7 @@
   "Characters that inhibit unwrapping if they are the last one on the cited line above the possible wrapped line."
   :version "21.4"
   :type '(radio (const :format "None  " nil)
-		(string :size 0 :value ".?!"))
+		(string :value ".?!"))
   :group 'gnus-outlook-deuglify)
 
 (defcustom gnus-outlook-deuglify-no-wrap-chars "`"
--- a/lisp/gnus/gnus-art.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/gnus-art.el	Wed Dec 08 22:21:07 2004 +0000
@@ -399,15 +399,15 @@
 		     :value
 		     (gnus-emphasis-custom-value-to-external value))))
 	      (widget-group-value-create widget))
-	    (regexp :format "%t: %v\n" :size 1)
-	    (integer :format "Match group: %v\n" :size 0)
-	    (integer  :format "Emphasize group: %v\n" :size 0)
+	    regexp
+	    (integer :format "Match group: %v")
+	    (integer  :format "Emphasize group: %v")
 	    face)
      (group :tag "Simple"
 	    :value (("_" . "_") nil default)
 	    (cons :format "%v"
-		  (regexp :format "Start regexp: %v\n" :size 0)
-		  (regexp :format "End regexp: %v\n" :size 0))
+		  (regexp :format "Start regexp: %v")
+		  (regexp :format "End regexp: %v"))
 	    (boolean :format "Show start and end patterns: %[%v%]\n"
 		     :on " On " :off " Off ")
 	    face)))
--- a/lisp/gnus/gnus-registry.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/gnus-registry.el	Wed Dec 08 22:21:07 2004 +0000
@@ -1,5 +1,5 @@
 ;;; gnus-registry.el --- article registry for Gnus
-;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Ted Zlatanov <tzz@lifelogs.com>
@@ -128,7 +128,7 @@
   "Maximum number of entries in the registry, nil for unlimited."
   :group 'gnus-registry
   :type '(radio (const :format "Unlimited " nil)
-		(integer :format "Maximum number: %v\n" :size 0)))
+		(integer :format "Maximum number: %v")))
 
 ;; Function(s) missing in Emacs 20
 (when (memq nil (mapcar 'fboundp '(puthash)))
--- a/lisp/gnus/gnus-score.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/gnus-score.el	Wed Dec 08 22:21:07 2004 +0000
@@ -240,7 +240,7 @@
   :version "21.4"
   :group 'gnus-score-adapt
   :type '(radio (const :format "Unlimited " nil)
-		(integer :format "Maximum length: %v\n" :size 0)))
+		(integer :format "Maximum length: %v")))
 
 (defcustom gnus-ignored-adaptive-words nil
   "List of words to be ignored when doing adaptive word scoring."
--- a/lisp/gnus/gnus-start.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/gnus-start.el	Wed Dec 08 22:21:07 2004 +0000
@@ -258,7 +258,7 @@
 			       (and value (not (stringp value))))
 		      :value t)
 		(const nil)
-		(regexp :format "%t: %v\n" :size 0)))
+		regexp))
 
 (defcustom gnus-ignored-newsgroups
   (mapconcat 'identity
--- a/lisp/gnus/gnus-sum.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/gnus-sum.el	Wed Dec 08 22:21:07 2004 +0000
@@ -264,7 +264,7 @@
 			       (not (or (consp value) (functionp value))))
 		      :value t)
 		(const nil)
-		(sexp :tag "Predicate specifier" :size 0)))
+		(sexp :tag "Predicate specifier")))
 
 (defcustom gnus-thread-hide-killed t
   "*If non-nil, hide killed threads automatically."
@@ -4639,19 +4639,19 @@
   "With %B spec, used for the root of a thread.
 If nil, use subject instead."
   :version "21.4"
-  :type '(radio (const :format "%v  " nil) (string :size 0))
+  :type '(radio (const :format "%v  " nil) string)
   :group 'gnus-thread)
 (defcustom gnus-sum-thread-tree-false-root "> "
   "With %B spec, used for a false root of a thread.
 If nil, use subject instead."
   :version "21.4"
-  :type '(radio (const :format "%v  " nil) (string :size 0))
+  :type '(radio (const :format "%v  " nil) string)
   :group 'gnus-thread)
 (defcustom gnus-sum-thread-tree-single-indent ""
   "With %B spec, used for a thread with just one message.
 If nil, use subject instead."
   :version "21.4"
-  :type '(radio (const :format "%v  " nil) (string :size 0))
+  :type '(radio (const :format "%v  " nil) string)
   :group 'gnus-thread)
 (defcustom gnus-sum-thread-tree-vertical "| "
   "With %B spec, used for drawing a vertical line."
--- a/lisp/gnus/gnus-util.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/gnus-util.el	Wed Dec 08 22:21:07 2004 +0000
@@ -60,10 +60,20 @@
    ((fboundp 'replace-in-string)
     (defalias 'gnus-replace-in-string 'replace-in-string))
    ((fboundp 'replace-regexp-in-string)
-    (defun gnus-replace-in-string  (string regexp newtext &optional literal)
+    (defun gnus-replace-in-string (string regexp newtext &optional literal)
+      "Replace all matches for REGEXP with NEWTEXT in STRING.
+If LITERAL is non-nil, insert NEWTEXT literally.  Return a new
+string containing the replacements.
+
+This is a compatibility function for different Emacsen."
       (replace-regexp-in-string regexp newtext string nil literal)))
    (t
     (defun gnus-replace-in-string (string regexp newtext &optional literal)
+      "Replace all matches for REGEXP with NEWTEXT in STRING.
+If LITERAL is non-nil, insert NEWTEXT literally.  Return a new
+string containing the replacements.
+
+This is a compatibility function for different Emacsen."
       (let ((start 0) tail)
 	(while (string-match regexp string start)
 	  (setq tail (- (length string) (match-end 0)))
--- a/lisp/gnus/message.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/message.el	Wed Dec 08 22:21:07 2004 +0000
@@ -146,7 +146,7 @@
 the article has been posted to will be inserted there.
 If this variable is nil, no such courtesy message will be added."
   :group 'message-sending
-  :type '(radio (string :format "%t: %v\n" :size 0) (const nil)))
+  :type '(radio string (const nil)))
 
 (defcustom message-ignored-bounced-headers
   "^\\(Received\\|Return-Path\\|Delivered-To\\):"
@@ -373,8 +373,7 @@
   "Note to insert why you wouldn't want this posting archived.
 If nil, don't insert any text in the body."
   :version "21.4"
-  :type '(radio (string :format "%t: %v\n" :size 0)
-		(const nil))
+  :type '(radio string (const nil))
   :link '(custom-manual "(message)Header Commands")
   :group 'message-various)
 
@@ -698,8 +697,7 @@
   :version "21.4"
   :group 'message-interface
   :link '(custom-manual "(message)Mailing Lists")
-  :type '(radio (file :format "%t: %v\n" :size 0)
-		(const nil)))
+  :type '(radio file (const nil)))
 
 (defcustom message-subscribed-addresses nil
   "*Specifies a list of addresses the user is subscribed to.
@@ -1442,7 +1440,7 @@
   :group 'message-headers
   :link '(custom-manual "(message)News Headers")
   :type '(radio (const :format "%v  " nil)
-		(string :format "FQDN: %v\n" :size 0)))
+		(string :format "FQDN: %v")))
 
 (defcustom message-use-idna (and (condition-case nil (require 'idna)
 				   (file-error))
@@ -2403,7 +2401,7 @@
   ;; fontified: is used by font-lock.
   ;; syntax-table, local-map: I dunno.
   ;; We need to add XEmacs names to the list.
-  "Property list of with properties.forbidden in message buffers.
+  "Property list of with properties forbidden in message buffers.
 The values of the properties are ignored, only the property names are used.")
 
 (defun message-tamago-not-in-use-p (pos)
@@ -2426,11 +2424,13 @@
 See also `message-forbidden-properties'."
   (when (and message-strip-special-text-properties
 	     (message-tamago-not-in-use-p begin))
-    (while (not (= begin end))
-      (when (not (get-text-property begin 'message-hidden))
-	(remove-text-properties begin (1+ begin)
-				message-forbidden-properties))
-      (incf begin))))
+    (let ((buffer-read-only nil)
+	  (inhibit-read-only t))
+      (while (not (= begin end))
+	(when (not (get-text-property begin 'message-hidden))
+	  (remove-text-properties begin (1+ begin)
+				  message-forbidden-properties))
+	(incf begin)))))
 
 ;;;###autoload
 (define-derived-mode message-mode text-mode "Message"
@@ -6193,8 +6193,7 @@
     (setq e (point))
     (insert
      "\n-------------------- End of forwarded message --------------------\n")
-    (when (and (not current-prefix-arg)
-	       message-forward-ignored-headers)
+    (when message-forward-ignored-headers
       (save-restriction
 	(narrow-to-region b e)
 	(goto-char b)
@@ -6240,7 +6239,7 @@
 	(goto-char (point-max))))
     (setq e (point))
     (insert "<#/mml>\n")
-    (when (and (not current-prefix-arg)
+    (when (and (not message-forward-decoded-p)
 	       message-forward-ignored-headers)
       (save-restriction
 	(narrow-to-region b e)
--- a/lisp/gnus/nnfolder.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/nnfolder.el	Wed Dec 08 22:21:07 2004 +0000
@@ -1,5 +1,5 @@
 ;;; nnfolder.el --- mail folder access for Gnus
-;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 ;;        Free Software Foundation, Inc.
 
 ;; Author: Simon Josefsson <simon@josefsson.org> (adding MARKS)
@@ -370,10 +370,11 @@
 (deffoo nnfolder-request-create-group (group &optional server args)
   (nnfolder-possibly-change-group nil server)
   (nnmail-activate 'nnfolder)
-  (when group
-    (unless (assoc group nnfolder-group-alist)
-      (push (list group (cons 1 0)) nnfolder-group-alist)
-      (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
+  (when (and group
+	     (not (assoc group nnfolder-group-alist)))
+    (push (list group (cons 1 0)) nnfolder-group-alist)
+    (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
+    (save-current-buffer
       (nnfolder-read-folder group)))
   t)
 
--- a/lisp/gnus/nnmail.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/nnmail.el	Wed Dec 08 22:21:07 2004 +0000
@@ -554,7 +554,7 @@
   :group 'nnmail
   :type '(repeat symbol))
 
-(defcustom nnmail-split-header-length-limit 512
+(defcustom nnmail-split-header-length-limit 2048
   "Header lines longer than this limit are excluded from the split function."
   :version "21.1"
   :group 'nnmail
--- a/lisp/gnus/nnrss.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/nnrss.el	Wed Dec 08 22:21:07 2004 +0000
@@ -82,6 +82,12 @@
 
 ;;; Interface functions
 
+(eval-when-compile
+  (defmacro nnrss-string-as-multibyte (string)
+    (if (featurep 'xemacs)
+	string
+      `(string-as-multibyte ,string))))
+
 (deffoo nnrss-retrieve-headers (articles &optional group server fetch-old)
   (nnrss-possibly-change-group group server)
   (let (e)
@@ -410,10 +416,6 @@
 
 (defalias 'nnrss-insert 'nnrss-insert-w3)
 
-(if (featurep 'xemacs)
-    (defalias 'nnrss-string-as-multibyte 'identity)
-  (defalias 'nnrss-string-as-multibyte 'string-as-multibyte))
-
 ;;; Snarf functions
 
 (defun nnrss-check-group (group server)
--- a/lisp/gnus/pop3.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/pop3.el	Wed Dec 08 22:21:07 2004 +0000
@@ -348,6 +348,22 @@
 
 ;; AUTHORIZATION STATE
 
+(eval-and-compile
+  (if (fboundp 'md5)
+      (defalias 'pop3-md5 'md5)
+    (defvar pop3-md5-program "md5"
+      "*Program to encode its input in MD5.")
+
+    (defun pop3-md5 (string)
+      (with-temp-buffer
+	(insert string)
+	(call-process-region (point-min) (point-max)
+			     pop3-md5-program
+			     t (current-buffer) nil)
+	;; The meaningful output is the first 32 characters.
+	;; Don't return the newline that follows them!
+	(buffer-substring (point-min) (+ 32 (point-min)))))))
+
 (defun pop3-user (process user)
   "Send USER information to POP3 server."
   (pop3-send-command process (format "USER %s" user))
@@ -378,22 +394,6 @@
 
 ;; TRANSACTION STATE
 
-(eval-and-compile
-  (if (fboundp 'md5)
-      (defalias 'pop3-md5 'md5)
-    (defvar pop3-md5-program "md5"
-      "*Program to encode its input in MD5.")
-
-    (defun pop3-md5 (string)
-      (with-temp-buffer
-	(insert string)
-	(call-process-region (point-min) (point-max)
-			     pop3-md5-program
-			     t (current-buffer) nil)
-	;; The meaningful output is the first 32 characters.
-	;; Don't return the newline that follows them!
-	(buffer-substring (point-min) (+ 32 (point-min)))))))
-
 (defun pop3-stat (process)
   "Return the number of messages in the maildrop and the maildrop's size."
   (pop3-send-command process "STAT")
--- a/lisp/gnus/rfc2047.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/rfc2047.el	Wed Dec 08 22:21:07 2004 +0000
@@ -71,7 +71,7 @@
   '(("Newsgroups" . nil)
     ("Followup-To" . nil)
     ("Message-ID" . nil)
-    ("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|Reply-To\\|Sender\
+    ("\\(Resent-\\)?\\(From\\|Cc\\|To\\|Bcc\\|\\(In-\\)?Reply-To\\|Sender\
 \\|Mail-Followup-To\\|Mail-Copies-To\\|Approved\\)" . address-mime)
     (t . mime))
   "*Header/encoding method alist.
--- a/lisp/gnus/spam-report.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/spam-report.el	Wed Dec 08 22:21:07 2004 +0000
@@ -43,7 +43,7 @@
 or the gnus-group-spam-exit-processor-report-gmane group/topic parameter
 instead."
   :type '(radio (const nil)
-		(regexp :format "%t: %v\n" :size 0 :value "^nntp\+.*:gmane\."))
+		(regexp :value "^nntp\+.*:gmane\."))
   :group 'spam-report)
 
 (defcustom spam-report-gmane-spam-header
--- a/lisp/gnus/spam.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/gnus/spam.el	Wed Dec 08 22:21:07 2004 +0000
@@ -295,8 +295,7 @@
 
 (defcustom spam-blackhole-good-server-regex nil
   "String matching IP addresses that should not be checked in the blackholes."
-  :type '(radio (const nil)
-		(regexp :format "%t: %v\n" :size 0))
+  :type '(radio (const nil) regexp)
   :group 'spam)
 
 (defcustom spam-face 'gnus-splash-face
@@ -1257,6 +1256,9 @@
 
 ;;;; Hashcash.
 
+(eval-when-compile
+  (autoload 'mail-check-payment "hashcash"))
+
 (condition-case nil
     (progn
       (require 'hashcash)
@@ -1265,9 +1267,7 @@
 	"Check the headers for hashcash payments."
 	(mail-check-payment)))	 ;mail-check-payment returns a boolean
 
-  (file-error (progn
-		(defalias 'mail-check-payment 'ignore)
-		(defalias 'spam-check-hashcash 'ignore))))
+  (file-error))
 
 ;;;; BBDB
 
@@ -1276,66 +1276,67 @@
 
 ;; all this is done inside a condition-case to trap errors
 
-(condition-case nil
-    (progn
-      (require 'bbdb)
-      (require 'bbdb-com)
+(eval-when-compile
+  (autoload 'bbdb-buffer "bbdb")
+  (autoload 'bbdb-create-internal "bbdb")
+  (autoload 'bbdb-search-simple "bbdb"))
 
-      (defun spam-enter-ham-BBDB (addresses &optional remove)
-	"Enter an address into the BBDB; implies ham (non-spam) sender"
-	(dolist (from addresses)
-	  (when (stringp from)
-	    (let* ((parsed-address (gnus-extract-address-components from))
-		   (name (or (nth 0 parsed-address) "Ham Sender"))
-		   (remove-function (if remove
-					'bbdb-delete-record-internal
-				      'ignore))
-		   (net-address (nth 1 parsed-address))
-		   (record (and net-address
-				(bbdb-search-simple nil net-address))))
-	      (when net-address
-		(gnus-message 5 "%s address %s %s BBDB"
-			      (if remove "Deleting" "Adding")
-			      from
-			      (if remove "from" "to"))
-		(if record
-		    (funcall remove-function record)
-		  (bbdb-create-internal name nil net-address nil nil
-					"ham sender added by spam.el")))))))
+(eval-and-compile
+  (when (condition-case nil
+	    (progn
+	      (require 'bbdb)
+	      (require 'bbdb-com))
+	  (file-error
+	   (defalias 'spam-BBDB-register-routine 'ignore)
+	   (defalias 'spam-enter-ham-BBDB 'ignore)
+	   nil))
 
-      (defun spam-BBDB-register-routine (articles &optional unregister)
-	(let (addresses)
-	  (dolist (article articles)
-	    (when (stringp (spam-fetch-field-from-fast article))
-	      (push (spam-fetch-field-from-fast article) addresses)))
-	  ;; now do the register/unregister action
-	  (spam-enter-ham-BBDB addresses unregister)))
-
-      (defun spam-BBDB-unregister-routine (articles)
-	(spam-BBDB-register-routine articles t))
+    (defun spam-enter-ham-BBDB (addresses &optional remove)
+      "Enter an address into the BBDB; implies ham (non-spam) sender"
+      (dolist (from addresses)
+	(when (stringp from)
+	  (let* ((parsed-address (gnus-extract-address-components from))
+		 (name (or (nth 0 parsed-address) "Ham Sender"))
+		 (remove-function (if remove
+				      'bbdb-delete-record-internal
+				    'ignore))
+		 (net-address (nth 1 parsed-address))
+		 (record (and net-address
+			      (bbdb-search-simple nil net-address))))
+	    (when net-address
+	      (gnus-message 5 "%s address %s %s BBDB"
+			    (if remove "Deleting" "Adding")
+			    from
+			    (if remove "from" "to"))
+	      (if record
+		  (funcall remove-function record)
+		(bbdb-create-internal name nil net-address nil nil
+				      "ham sender added by spam.el")))))))
 
-      (defun spam-check-BBDB ()
-	"Mail from people in the BBDB is classified as ham or non-spam"
-	(let ((who (nnmail-fetch-field "from"))
-	      (spam-split-group (if spam-split-symbolic-return
-				    'spam
-				  spam-split-group)))
-	  (when who
-	    (setq who (nth 1 (gnus-extract-address-components who)))
-	    (if (bbdb-search-simple nil who)
-		t
-	      (if spam-use-BBDB-exclusive
-		  spam-split-group
-		nil))))))
+    (defun spam-BBDB-register-routine (articles &optional unregister)
+      (let (addresses)
+	(dolist (article articles)
+	  (when (stringp (spam-fetch-field-from-fast article))
+	    (push (spam-fetch-field-from-fast article) addresses)))
+	;; now do the register/unregister action
+	(spam-enter-ham-BBDB addresses unregister)))
+
+    (defun spam-BBDB-unregister-routine (articles)
+      (spam-BBDB-register-routine articles t))
 
-  (file-error (progn
-		(defalias 'bbdb-search-simple 'ignore)
-		(defalias 'spam-check-BBDB 'ignore)
-		(defalias 'spam-BBDB-register-routine 'ignore)
-		(defalias 'spam-enter-ham-BBDB 'ignore)
-		(defalias 'bbdb-create-internal 'ignore)
-		(defalias 'bbdb-delete-record-internal 'ignore)
-		(defalias 'bbdb-records 'ignore))))
+    (defun spam-check-BBDB ()
+      "Mail from people in the BBDB is classified as ham or non-spam"
+      (let ((who (nnmail-fetch-field "from"))
+	    (spam-split-group (if spam-split-symbolic-return
+				  'spam
+				spam-split-group)))
+	(when who
+	  (setq who (nth 1 (gnus-extract-address-components who)))
+	  (if (bbdb-search-simple nil who)
+	      t
+	    (if spam-use-BBDB-exclusive
+		spam-split-group
+	      nil)))))))
 
 
 ;;;; ifile
@@ -1411,66 +1412,63 @@
 
 ;;;; spam-stat
 
-(condition-case nil
-    (progn
-      (let ((spam-stat-install-hooks nil))
-	(require 'spam-stat))
+(eval-when-compile
+  (autoload 'spam-stat-buffer-change-to-non-spam "spam-stat")
+  (autoload 'spam-stat-buffer-change-to-spam "spam-stat")
+  (autoload 'spam-stat-buffer-is-non-spam "spam-stat")
+  (autoload 'spam-stat-buffer-is-spam "spam-stat")
+  (autoload 'spam-stat-load "spam-stat")
+  (autoload 'spam-stat-save "spam-stat")
+  (autoload 'spam-stat-split-fancy "spam-stat"))
+
+(eval-and-compile
+  (when (condition-case nil
+	    (let ((spam-stat-install-hooks nil))
+	      (require 'spam-stat))
+	  (file-error
+	   (defalias 'spam-stat-register-ham-routine 'ignore)
+	   (defalias 'spam-stat-register-spam-routine 'ignore)
+	   nil))
 
-      (defun spam-check-stat ()
-	"Check the spam-stat backend for the classification of this message"
-	(let ((spam-split-group (if spam-split-symbolic-return
-				    'spam
-				  spam-split-group))
-	      (spam-stat-split-fancy-spam-group spam-split-group) ; override
-	      (spam-stat-buffer (buffer-name)) ; stat the current buffer
-	      category return)
-	  (spam-stat-split-fancy)))
+    (defun spam-check-stat ()
+      "Check the spam-stat backend for the classification of this message"
+      (let ((spam-split-group (if spam-split-symbolic-return
+				  'spam
+				spam-split-group))
+	    (spam-stat-split-fancy-spam-group spam-split-group) ; override
+	    (spam-stat-buffer (buffer-name)) ; stat the current buffer
+	    category return)
+	(spam-stat-split-fancy)))
 
-      (defun spam-stat-register-spam-routine (articles &optional unregister)
-	(dolist (article articles)
-	  (let ((article-string (spam-get-article-as-string article)))
-	    (with-temp-buffer
-	      (insert article-string)
-	      (if unregister
-		  (spam-stat-buffer-change-to-non-spam)
+    (defun spam-stat-register-spam-routine (articles &optional unregister)
+      (dolist (article articles)
+	(let ((article-string (spam-get-article-as-string article)))
+	  (with-temp-buffer
+	    (insert article-string)
+	    (if unregister
+		(spam-stat-buffer-change-to-non-spam)
 	      (spam-stat-buffer-is-spam))))))
 
-      (defun spam-stat-unregister-spam-routine (articles)
-	(spam-stat-register-spam-routine articles t))
+    (defun spam-stat-unregister-spam-routine (articles)
+      (spam-stat-register-spam-routine articles t))
 
-      (defun spam-stat-register-ham-routine (articles &optional unregister)
-	(dolist (article articles)
-	  (let ((article-string (spam-get-article-as-string article)))
-	    (with-temp-buffer
-	      (insert article-string)
-	      (if unregister
-		  (spam-stat-buffer-change-to-spam)
+    (defun spam-stat-register-ham-routine (articles &optional unregister)
+      (dolist (article articles)
+	(let ((article-string (spam-get-article-as-string article)))
+	  (with-temp-buffer
+	    (insert article-string)
+	    (if unregister
+		(spam-stat-buffer-change-to-spam)
 	      (spam-stat-buffer-is-non-spam))))))
 
-      (defun spam-stat-unregister-ham-routine (articles)
-	(spam-stat-register-ham-routine articles t))
-
-      (defun spam-maybe-spam-stat-load ()
-	(when spam-use-stat (spam-stat-load)))
-
-      (defun spam-maybe-spam-stat-save ()
-	(when spam-use-stat (spam-stat-save))))
+    (defun spam-stat-unregister-ham-routine (articles)
+      (spam-stat-register-ham-routine articles t))
 
-  (file-error (progn
-		(defalias 'spam-stat-load 'ignore)
-		(defalias 'spam-stat-save 'ignore)
-		(defalias 'spam-maybe-spam-stat-load 'ignore)
-		(defalias 'spam-maybe-spam-stat-save 'ignore)
-		(defalias 'spam-stat-register-ham-routine 'ignore)
-		(defalias 'spam-stat-unregister-ham-routine 'ignore)
-		(defalias 'spam-stat-register-spam-routine 'ignore)
-		(defalias 'spam-stat-unregister-spam-routine 'ignore)
-		(defalias 'spam-stat-buffer-is-spam 'ignore)
-		(defalias 'spam-stat-buffer-change-to-spam 'ignore)
-		(defalias 'spam-stat-buffer-is-non-spam 'ignore)
-		(defalias 'spam-stat-buffer-change-to-non-spam 'ignore)
-		(defalias 'spam-stat-split-fancy 'ignore)
-		(defalias 'spam-check-stat 'ignore))))
+    (defun spam-maybe-spam-stat-load ()
+      (when spam-use-stat (spam-stat-load)))
+
+    (defun spam-maybe-spam-stat-save ()
+      (when spam-use-stat (spam-stat-save)))))
 
 
 
--- a/lisp/isearch.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/isearch.el	Wed Dec 08 22:21:07 2004 +0000
@@ -1682,7 +1682,7 @@
     ;; single-byte character set, and convert them to Emacs
     ;; characters.
     (if (and isearch-regexp (= char ?\ ))
-	(if (subregexp-context-p isearch-string pos)
+	(if (subregexp-context-p isearch-string (length isearch-string))
 	    (isearch-process-search-string "[ ]" " ")
 	  (isearch-process-search-char char))
       (and enable-multibyte-characters
--- a/lisp/mouse.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/mouse.el	Wed Dec 08 22:21:07 2004 +0000
@@ -2201,7 +2201,9 @@
    (progn (unless (display-multi-font-p)
 	    (error "Cannot change fonts on this display"))
 	  (x-popup-menu
-	   last-nonmenu-event
+	   (if (listp last-nonmenu-event)
+	       last-nonmenu-event
+	     (list '(0 0) (selected-window)))
 	   ;; Append list of fontsets currently defined.
 	   (append x-fixed-font-alist (list (generate-fontset-menu))))))
   (if fonts
--- a/lisp/textmodes/org.el	Wed Dec 08 22:20:27 2004 +0000
+++ b/lisp/textmodes/org.el	Wed Dec 08 22:21:07 2004 +0000
@@ -5,7 +5,7 @@
 ;; Author: Carsten Dominik <dominik at science dot uva dot nl>
 ;; Keywords: outlines, hypermedia, calendar
 ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 3.03  (internal CVS version is $Revision: 1.2 $)
+;; Version: 3.03
 
 ;; This file is part of GNU Emacs.
 
--- a/man/ChangeLog	Wed Dec 08 22:20:27 2004 +0000
+++ b/man/ChangeLog	Wed Dec 08 22:21:07 2004 +0000
@@ -1,3 +1,14 @@
+2004-12-07  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* frames.texi (Scroll Bars): The option `scroll-bar-mode' has to
+	be set through Custom.  Otherwise, it has no effect.
+
+2004-12-07  Stefan  <monnier@iro.umontreal.ca>
+
+	* url.texi: New file.
+
+	* Makefile.in (INFO_TARGETS, DVI_TARGETS, ../info/url, url.dvi): Add it.
+
 2004-12-06  Jay Belanger  <belanger@truman.edu>
 
 	* calc.texi (Using Calc): Remove paragraph about installation.
@@ -96,6 +107,17 @@
 	to Alex Ott, Karl Fogel, Stefan Monnier, and David Kastrup for
 	suggestions.
 
+2004-11-22  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* message.texi (Various Message Variables): Mention that all mail
+	file variables are derived from `message-directory'.
+
+	* gnus.texi (Splitting Mail): Clarify bogus group.
+
+2004-11-16  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* gnus.texi (Filtering Spam Using The Spam ELisp Package): 
+
 2004-11-02  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* emacs-mime.texi (Encoding Customization): Fix
--- a/man/Makefile.in	Wed Dec 08 22:20:27 2004 +0000
+++ b/man/Makefile.in	Wed Dec 08 22:21:07 2004 +0000
@@ -39,7 +39,7 @@
 		../info/sc ../info/vip ../info/viper ../info/widget \
 		../info/efaq ../info/ada-mode ../info/autotype ../info/calc \
 		../info/idlwave ../info/eudc ../info/ebrowse ../info/pcl-cvs \
-		../info/woman ../info/eshell ../info/org \
+		../info/woman ../info/eshell ../info/org ../info/url \
 		../info/speedbar ../info/tramp ../info/ses ../info/smtpmail \
 		../info/flymake
 DVI_TARGETS = 	emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
@@ -47,7 +47,7 @@
                  gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \
 		 reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.dvi \
 		 ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \
-		 pcl-cvs.dvi woman.dvi eshell.dvi org.el \
+		 pcl-cvs.dvi woman.dvi eshell.dvi org.dvi url.dvi \
 		 speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \
                  emacs-xtra.dvi
 INFOSOURCES = info.texi
@@ -291,6 +291,11 @@
 org.dvi: org.texi
 	$(ENVADD) $(TEXI2DVI) ${srcdir}/org.texi
 
+../info/url: url.texi
+	cd $(srcdir); $(MAKEINFO) url.texi
+url.dvi: url.texi
+	$(ENVADD) $(TEXI2DVI) ${srcdir}/url.texi
+
 ../info/speedbar: speedbar.texi
 	cd $(srcdir); $(MAKEINFO) speedbar.texi
 speedbar.dvi: speedbar.texi
--- a/man/frames.texi	Wed Dec 08 22:20:27 2004 +0000
+++ b/man/frames.texi	Wed Dec 08 22:21:07 2004 +0000
@@ -761,8 +761,10 @@
 frames yet to be created.  Customize the option @code{scroll-bar-mode}
 to control the use of scroll bars at startup.  You can use it to specify
 that they are placed at the right of windows if you prefer that.  You
-can use the X resource @samp{verticalScrollBars} to control the initial
-setting of Scroll Bar mode similarly.  @xref{Resources}.
+have to set this variable through the @samp{Customize} interface
+(@pxref{Easy Customization}).  Otherwise, it will not work properly.
+You can use the X resource @samp{verticalScrollBars} to control the
+initial setting of Scroll Bar mode similarly.  @xref{Resources}.
 
 @findex toggle-scroll-bar
   To enable or disable scroll bars for just the selected frame, use the
--- a/man/gnus.texi	Wed Dec 08 22:20:27 2004 +0000
+++ b/man/gnus.texi	Wed Dec 08 22:21:07 2004 +0000
@@ -13244,14 +13244,16 @@
 argument.  It should return a non-@code{nil} value if it thinks that the
 mail belongs in that group.
 
+@cindex @samp{bogus} group
 The last of these groups should always be a general one, and the regular
-expression should @emph{always} be @samp{*} so that it matches any mails
+expression should @emph{always} be @samp{""} so that it matches any mails
 that haven't been matched by any of the other regexps.  (These rules are
-processed from the beginning of the alist toward the end.  The first
-rule to make a match will ``win'', unless you have crossposting enabled.
-In that case, all matching rules will ``win''.)  When new groups are
-created by splitting mail, you may want to run
-@code{gnus-group-find-new-groups} to see the new groups.
+processed from the beginning of the alist toward the end.  The first rule
+to make a match will ``win'', unless you have crossposting enabled.  In
+that case, all matching rules will ``win''.)  If no rule matched, the mail
+will end up in the @samp{bogus} group.  When new groups are created by
+splitting mail, you may want to run @code{gnus-group-find-new-groups} to
+see the new groups.  This also applies to the @samp{bogus} group.
 
 If you like to tinker with this yourself, you can set this variable to a
 function of your choice.  This function will be called without any
@@ -13268,7 +13270,7 @@
 The mail back ends all support cross-posting.  If several regexps match,
 the mail will be ``cross-posted'' to all those groups.
 @code{nnmail-crosspost} says whether to use this mechanism or not.  Note
-that no articles are crossposted to the general (@samp{*}) group.
+that no articles are crossposted to the general (@samp{""}) group.
 
 @vindex nnmail-crosspost-link-function
 @cindex crosspost
--- a/man/message.texi	Wed Dec 08 22:20:27 2004 +0000
+++ b/man/message.texi	Wed Dec 08 22:21:07 2004 +0000
@@ -1867,6 +1867,7 @@
 @item message-directory
 @vindex message-directory
 Directory used by many mailey things.  The default is @file{~/Mail/}.
+All other mail file variables are derived from @code{message-directory}.
 
 @item message-auto-save-directory
 @vindex message-auto-save-directory
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/man/url.texi	Wed Dec 08 22:21:07 2004 +0000
@@ -0,0 +1,1187 @@
+\input texinfo
+@setfilename url.info
+@settitle URL Programmer's Manual
+
+@iftex
+@c @finalout
+@end iftex
+@c @setchapternewpage odd
+@c @smallbook
+
+@tex
+\overfullrule=0pt
+%\global\baselineskip 30pt      % for printing in double space
+@end tex
+@dircategory World Wide Web
+@dircategory GNU Emacs Lisp
+@direntry
+* URL: (url).                 URL loading package.
+@end direntry
+
+@ifnottex
+This file documents the URL loading package.
+
+Copyright (C) 1996, 1997, 1998, 1999, 2002, 2004  Free Software Foundation
+Copyright (C) 1993, 1994, 1995, 1996  William M. Perry
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being 
+``GNU GENERAL PUBLIC LICENSE''.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License.''
+@end ifnottex
+
+@c
+@titlepage
+@sp 6
+@center @titlefont{URL}
+@center @titlefont{Programmer's Manual}
+@sp 4
+@center First Edition, URL Version 2.0
+@sp 1
+@c @center December 1999
+@sp 5
+@center William M. Perry
+@center @email{wmperry@@gnu.org}
+@center David Love
+@center @email{fx@@gnu.org}
+@page
+@vskip 0pt plus 1filll
+Copyright @copyright{} 1993, 1994, 1995, 1996 William M. Perry@*
+Copyright @copyright{} 1996, 1997, 1998, 1999, 2002 Free Software Foundation
+
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with the
+Invariant Sections being
+``GNU GENERAL PUBLIC LICENSE''.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License.''
+@end titlepage
+@page
+@node Top
+@top URL
+
+
+
+@menu
+* Getting Started::             Preparing your program to use URLs.
+* Retrieving URLs::             How to use this package to retrieve a URL.
+* Supported URL Types::         Descriptions of URL types currently supported.
+* Defining New URLs::           How to define a URL loader for a new protocol.
+* General Facilities::          URLs can be cached, accessed via a gateway
+                                and tracked in a history list.
+* Customization::               Variables you can alter.
+* Function Index::              
+* Variable Index::              
+* Concept Index::               
+@end menu
+
+@node Getting Started
+@chapter Getting Started
+@cindex URLs, definition
+@cindex URIs
+
+@dfn{Uniform Resource Locators} (URLs) are a specific form of
+@dfn{Uniform Resource Identifiers} (URI) described in RFC 2396 which
+updates RFC 1738 and RFC 1808.  RFC 2016 defines uniform resource
+agents.
+
+URIs have the form @var{scheme}:@var{scheme-specific-part}, where the
+@var{scheme}s supported by this library are described below.
+@xref{Supported URL Types}.
+
+FTP NFS, HTTP, HTTPS, @code{rlogin}, @code{telnet}, tn3270,
+IRC and gopher URLs all have the form
+
+@example
+@var{scheme}://@r{[}@var{userinfo}@@@r{]}@var{hostname}@r{[}:@var{port}@r{]}@r{[}/@var{path}@r{]}
+@end example
+@noindent
+where @samp{@r{[}} and @samp{@r{]}} delimit optional parts.
+@var{userinfo} sometimes takes the form @var{username}:@var{password}
+but you should beware of the security risks of sending cleartext
+passwords.  @var{hostname} may be a domain name or a dotted decimal
+address.  If the @samp{:@var{port}} is omitted then the library will
+use the `well known' port for that service when accessing URLs.  With
+the possible exception of @code{telnet}, it is rare for ports to be
+specified, and it is possible using a non-standard port may have
+undesired consequences if a different service is listening on that
+port (e.g.@: an HTTP URL specifying the SMTP port can cause mail to be
+sent).@c , but @xref{Other Variables, url-bad-port-list}.
+The meaning of
+the @var{path} component depends on the service.
+
+The library depends on MIME support provided by the @samp{mm-}
+packages from Gnus 5.8 or later.  @xref{(emacs-mime)Top, The MIME
+library}.
+
+@menu
+* Configuration::               
+* Parsed URLs::                 URLs are parsed into vector structures.
+@end menu
+
+@node Configuration
+@section Configuration
+
+@defvar url-configuration-directory
+@cindex @file{~/.url}
+@cindex configuration files
+The directory in which URL configuration files, the cache etc.,
+reside.  Default @file{~/.url}.
+@end defvar
+
+@node Parsed URLs
+@section Parsed URLs
+@cindex parsed URLs
+The library functions typically operate on @dfn{parsed} versions of
+URLs.  These are actually vectors of the form:
+
+@example
+[@var{type} @var{user} @var{password} @var{host} @var{port} @var{file} @var{target} @var{attributes} @var{full}]
+@end example
+
+@noindent where
+@table @var
+@item type
+is the type of the URL scheme, e.g.@: @code{http}
+@item user
+is the username associated with it, or @code{nil};
+@item password
+is the user password associated with it, or @code{nil};
+@item host
+is the host name associated with it, or @code{nil};
+@item port
+is the port number associated with it, or @code{nil};
+@item file
+is the `file' part of it, or @code{nil}.  This doesn't necessarily
+actually refer to a file;
+@item target
+is the target part, or @code{nil};
+@item attributes
+is the attributes associated with it, or @code{nil};
+@item full
+is @code{t} for a fully-specified URL, with a host part indicated by
+@samp{//} after the scheme part.
+@end table
+
+@findex url-type
+@findex url-user
+@findex url-password
+@findex url-host
+@findex url-port
+@findex url-file
+@findex url-target
+@findex url-attributes
+@findex url-full
+@findex url-set-type
+@findex url-set-user
+@findex url-set-password
+@findex url-set-host
+@findex url-set-port
+@findex url-set-file
+@findex url-set-target
+@findex url-set-attributes
+@findex url-set-full
+These attributes have accessors named @code{url-@var{part}}, where
+@var{part} is the name of one of the elements above, e.g.@:
+@code{url-host}.  Similarly, there are setters of the form
+@code{url-set-@var{part}}.
+
+There are functions for parsing and unparsing between the string and
+vector forms.
+
+@defun url-generic-parse-url url
+Return a parsed version of the string @var{url}.
+@end defun
+
+@defun url-recreate-url url
+@cindex unparsing URLs
+Recreates a URL string from the parsed @var{url}.
+@end defun
+
+@node Retrieving URLs
+@chapter Retrieving URLs
+
+@defun url-retrieve-synchronously url
+Retrieve @var{url} synchronously and return a buffer containing the
+data.  @var{url} is either a string or a parsed URL structure.  Return
+@var{nil} if there are no data associated with it (the case for dired,
+info, or mailto URLs that need no further processing).
+@end defun
+
+@defun url-retrieve url callback &optional cbargs
+Retrieve @var{url} asynchronously and call @var{callback} with args
+@var{cbargs} when finished.  The callback is called when the object
+has been completely retrieved, with the current buffer containing the
+object and any MIME headers associated with it.  @var{url} is either a
+string or a parsed URL structure.  Returns the buffer @var{url} will
+load into, or @var{nil} if the process has already completed.
+@end defun
+
+@node Supported URL Types
+@chapter Supported URL Types
+
+@menu
+* http/https::                  Hypertext Transfer Protocol.
+* file/ftp::                    Local files and FTP archives. 
+* info::                        Emacs `Info' pages.
+* mailto::                      Sending email.
+* news/nntp/snews::             Usenet news.
+* rlogin/telnet/tn3270::        Remote host connectivity.
+* irc::                         Internet Relay Chat.
+* data::                        Embedded data URLs.
+* nfs::                         Networked File System
+@c * finger::
+@c * gopher::
+@c * netrek::
+@c * prospero::
+* cid::                         Content-ID.
+* about::                       
+* ldap::                        Lightweight Directory Access Protocol
+* imap::                        IMAP mailboxes.
+* man::                         Unix man pages.
+@end menu
+
+@node http/https
+@section @code{http} and @code{https}
+
+The scheme @code{http} is Hypertext Transfer Protocol.  The library
+supports version 1.1, specified in RFC 2616.  (This supersedes 1.0,
+defined in RFC 1945) HTTP URLs have the following form, where most of
+the parts are optional:
+@example
+http://@var{user}:@var{password}@var{host}:@var{port}/@var{path}?@var{searchpart}#@var{fragment}
+@end example
+@c The @code{:@var{port}} part is optional, and @var{port} defaults to
+@c 80.  The @code{/@var{path}} part, if present, is a slash-separated
+@c series elements.  The @code{?@var{searchpart}}, if present, is the
+@c query for a search or the content of a form submission.  The
+@c @code{#fragment} part, if present, is a location in the document.
+
+The scheme @code{https} is a secure version of @code{http}, with
+transmission via SSL.  It is defined in RFC 2069.  Its default port is
+443.  This scheme depends on SSL support in Emacs via the
+@file{ssl.el} library and is actually implemented by forcing the
+@code{ssl} gateway method to be used.  @xref{Gateways in general}.
+
+@defopt url-honor-refresh-requests
+This controls honouring of HTTP @samp{Refresh} headers by which
+servers can direct clients to reload documents from the same URL or a
+or different one.  @code{nil} means they will not be honoured,
+@code{t} (the default) means they will always be honoured, and
+otherwise the user will be asked on each request.
+@end defopt
+
+
+@menu
+* Cookies::                     
+* HTTP language/coding::        
+* HTTP URL Options::            
+* Dealing with HTTP documents::  
+@end menu
+
+@node Cookies
+@subsection Cookies
+
+@defopt url-cookie-file
+The file in which cookies are stored, defaulting to @file{cookies} in
+the directory specified by @code{url-configuration-directory}.
+@end defopt
+
+@defopt url-cookie-confirmation
+Specifies whether confirmation is require to accept cookies.
+@end defopt
+
+@defopt url-cookie-multiple-line
+Specifies whether to put all cookies for the server on one line in the
+HTTP request to satisfy broken servers like
+@url{http://www.hotmail.com}.
+@end defopt
+
+@defopt url-cookie-trusted-urls
+A list of regular expressions matching URLs from which to accept
+cookies always.
+@end defopt
+
+@defopt url-cookie-untrusted-urls
+A list of regular expressions matching URLs from which to reject
+cookies always.
+@end defopt
+
+@defopt url-cookie-save-interval
+The number of seconds between automatic saves of cookies to disk.
+Default is one hour.
+@end defopt
+
+
+@node HTTP language/coding
+@subsection Language and Encoding Preferences
+
+HTTP allows clients to express preferences for the language and
+encoding of documents which servers may honour.
+
+@defopt url-mime-charset-string
+@cindex character sets
+@cindex coding systems
+This variable specifies a preference for character sets when documents
+can be served in more than one encoding.
+
+HTTP allows specifying a list of MIME charsets which indicate your
+preferred character set encodings, e.g.@: Latin-9 or Big5, and these
+can be weighted.  In Emacs 21 this list is generated automatically
+from the list of defined coding systems which have associated MIME
+types.  These are sorted by coding priority.  @xref{Recognize Coding,
+, Recognizing Coding Systems, emacs, GNU Emacs Manual}.
+@end defopt
+
+@defopt url-mime-language-string
+@cindex language preferences
+A string specifying the preferred language when servers can serve
+files in several languages.  Use RFC 1766 abbreviations, e.g.@:
+@samp{en} for English, @samp{de} for German.  It can be a
+comma-separated list in descending order of preference.  The ordering
+can be made explicit using `q' factors defined by HTTP, e.g.@:
+@w{@samp{de, en-gb;q=0.8, en;q=0.7}}.  It can be @samp{*} to get the
+first available language (as opposed to the default).
+@end defopt
+
+@node HTTP URL Options
+@subsection HTTP URL Options
+
+HTTP supports an @samp{OPTIONS} method describing things supported by
+the URL@.
+
+@defun url-http-options url
+Returns a property list describing options available for URL.  The
+property list members are:
+
+@table @code
+@item methods
+A list of symbols specifying what HTTP methods the resource
+supports.
+
+@item dav
+@cindex DAV
+A list of numbers specifying what DAV protocol/schema versions are
+supported.
+
+@item dasl
+@cindex DASL
+A list of supported DASL search types supported (string form).
+
+@item ranges
+A list of the units available for use in partial document fetches.
+
+@item p3p
+@cindex P3P
+The @dfn{Platform For Privacy Protection} description for the resource.
+Currently this is just the raw header contents.
+@end table
+
+@end defun
+
+@node Dealing with HTTP documents
+@subsection Dealing with HTTP documents
+
+HTTP URLs are retrieved into a buffer containing the HTTP headers
+followed by the body.  Since the headers are quasi-MIME, they may be
+processed using the MIME library.  @xref{(emacs-mime)Top, The MIME
+library}.  The MIME library doesn't provide a clean function to do
+that, so the URL library does.
+
+@defun url-decode-text-part handle &optional coding
+This function decodes charset-encoded text in the current buffer.  In
+Emacs, the buffer is expected to be unibyte initially and is set to
+multibyte after decoding.
+HANDLE is the MIME handle of the original part.  CODING is an explicit
+coding to use, overriding what the MIME headers specify.
+The coding system used for the decoding is returned.
+
+Note that this function doesn't deal with @samp{http-equiv} charset
+specifications in HTML @samp{<meta>} elements.
+@end defun
+
+@node file/ftp
+@section file and ftp
+@cindex files
+@cindex FTP
+@cindex File Transfer Protocol
+@cindex compressed files
+@findex dired
+
+@example
+ftp://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file}
+file://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file}
+@end example
+
+These schemes are defined in RFC 1808.
+@samp{ftp:} and @samp{file:} are synonomous in this library.  They
+allow reading arbitary files from hosts.  Either @samp{ange-ftp}
+(Emacs) or @samp{efs} (XEmacs) is used to retrieve them from remote
+hosts.  Local files are accessed directly.
+
+Compressed files are handled, but support is hard-coded so that
+@code{jka-compr-compression-info-list} and so on have no affect.
+Suffixes recognized are @samp{.z}, @samp{.gz}, @samp{.Z} and
+@samp{.bz2}.
+
+@defopt url-directory-index-file
+The filename to look for when indexing a directory, default
+@samp{"index.html"}.  If this file exists, and is readable, then it
+will be viewed instead of using @code{dired} to view the directory.
+@end defopt
+
+@node info
+@section info
+@cindex Info
+@cindex Texinfo
+@findex Info-goto-node
+
+@example
+info:@var{file}#@var{node}
+@end example
+
+Info URLs are not officially defined.  They invoke
+@code{Info-goto-node} with argument @samp{(@var{file})@var{node}}.
+@samp{#@var{node}} is optional, defaulting to @samp{Top}.
+
+@node mailto
+@section mailto
+
+@cindex mailto
+@cindex email
+A mailto URL will send an email message to the address in the
+URL, for example @samp{mailto:foo@@bar.com} would compose a
+message to @samp{foo@@bar.com}.  
+
+@defopt url-mail-command
+@vindex mail-user-agent
+The function called whenever url needs to send mail.  This should
+normally be left to default from @var{mail-user-agent}.  @xref{Mail
+Methods, , Mail-Composition Methods, emacs, GNU Emacs Manual}.
+@end defopt
+
+An @samp{X-Url-From} header field containing the URL of the document
+that contained the mailto URL is added if that URL is known.
+
+RFC 2368 extends the definition of mailto URLs in RFC 1738.
+The form of a mailto URL is
+@example
+@samp{mailto:@var{mailbox}[?@var{header}=@var{contents}[&@var{header}=@var{contents}]]}
+@end example
+@noindent where an arbitary number of @var{header}s can be added.  If the
+@var{header} is @samp{body}, then @var{contents} is put in the body
+otherwise a @var{header} header field is created with @var{contents}
+as its contents.  Note that the URL library does not consider any
+headers `dangerous' so you should check them before sending the
+message.
+
+@c Fixme: update
+Email messages are defined in @sc{rfc}822.
+
+@node news/nntp/snews
+@section @code{news}, @code{nntp} and @code{snews}
+@cindex news
+@cindex network news
+@cindex usenet
+@cindex NNTP
+@cindex snews
+
+@c draft-gilman-news-url-01
+The network news URL scheme take the following forms following RFC
+1738 except that for compatibility with other clients, host and port
+fields may be included in news URLs though they are properly only
+allowed for nntp an snews.
+
+@table @samp
+@item news:@var{newsgroup} 
+Retrieves a list of messages in @var{newsgroup};
+@item news:@var{message-id}
+Retrieves the message with the given @var{message-id};
+@item news:* 
+Retrieves a list of all available newsgroups;
+@item nntp://@var{host}:@var{port}/@var{newsgroup}
+@itemx nntp://@var{host}:@var{port}/@var{message-id}
+@itemx nntp://@var{host}:@var{port}/*
+Similar to the @samp{news} versions.
+@end table
+
+@samp{:@var{port}} is optional and defaults to :119.
+
+@samp{snews} is the same as @samp{nntp} except that the default port
+is :563.
+@cindex SSL
+(It is tunnelled through SSL.)
+
+An @samp{nntp} URL is the same as a news URL, except that the URL may
+specify an article by its number.
+
+@defopt url-news-server
+This variable can be used to override the default news server.
+Usually this will be set by the Gnus package, which is used to fetch
+news.
+@cindex environment variable
+@vindex NNTPSERVER
+It may be set from the conventional environment variable
+@code{NNTPSERVER}.
+@end defopt
+
+@node rlogin/telnet/tn3270
+@section rlogin, telnet and tn3270
+@cindex rlogin
+@cindex telnet
+@cindex tn3270
+@cindex terminal emulation
+@findex terminal-emulator
+
+These URL schemes from RFC 1738 for logon via a terminal emulator have
+the form
+@example
+telnet://@var{user}:@var{password}@@@var{host}:@var{port}
+@end example
+but the @code{:@var{password}} component is ignored.
+
+To handle rlogin, telnet and tn3270 URLs, a @code{rlogin},
+@code{telnet} or @code{tn3270} (the program names and arguments are
+hardcoded) session is run in a @code{terminal-emulator} buffer.
+Well-known ports are used if the URL does not specify a port.
+
+@node irc
+@section irc
+@cindex IRC
+@cindex Internet Relay Chat
+@cindex ZEN IRC
+@c Fixme: reference (was http://www.w3.org/Addressing/draft-mirashi-url-irc-01.txt) 
+@dfn{Internet Relay Chat} (IRC) is handled by handing off the @sc{irc}
+session to a function named in @code{url-irc-function}.  
+
+@defopt url-irc-function
+A function to actually open an IRC connection.
+This function
+must take five arguments, @var{host}, @var{port}, @var{channel},
+@var{user} and @var{password}.  The @var{channel} argument specifies the
+channel to join immediately, this can be @code{nil}.  By default this is
+@code{url-irc-zenirc}.
+@end defopt
+@defun url-irc-zenirc host port channel user password
+Processes the arguments and lets @code{zenirc} handle the session.
+@end defun
+
+@node data
+@section data
+@cindex data URLs
+
+@example
+data:@r{[}@var{media-type}@r{]}@r{[};@var{base64}@r{]},@var{data}
+@end example
+
+Data URLs contain MIME data in the URL itself.  They are defined in
+RFC 2397.
+
+@var{media-type} is a MIME @samp{Content-Type} string, possibly
+including parameters.  It defaults to
+@samp{text/plain;charset=US-ASCII}.  The @samp{text/plain} can be
+omitted but the charset parameter supplied.  If @samp{;base64} is
+present, the @var{data} are base64-encoded.
+  
+@node nfs
+@section nfs
+@cindex NFS
+@cindex Network File System
+@cindex automounter
+
+@example
+nfs://@var{user}:@var{password}@@@var{host}:@var{port}/@var{file}
+@end example
+
+The @samp{nfs:} scheme is defined in RFC 2224.  It is similar to
+@samp{ftp:} except that it points to a file on a remote host that is
+handled by the automounter on the local host.
+
+@defvar url-nfs-automounter-directory-spec
+@end defvar
+A string saying how to invoke the NFS automounter.  Certain @samp{%}
+sequences are recognized:
+
+@table @samp
+@item %h
+The hostname of the NFS server;
+@item %n
+The port number of the NFS server;
+@item %u
+The username to use to authenticate;
+@item %p
+The password to use to authenticate;
+@item %f
+The filename on the remote server;
+@item %%
+A literal @samp{%}.
+@end table
+
+Each can be used any number of times.
+
+@node cid
+@section cid
+@cindex Content-ID
+
+RFC 2111
+
+@node about
+@section about
+
+@node ldap
+@section ldap
+@cindex LDAP
+@cindex Lightweight Directory Access Protocol
+
+The LDAP scheme is defined in RFC 2255.
+
+@node imap
+@section imap
+@cindex IMAP
+
+RFC 2192
+
+@node man
+@section man
+@cindex @command{man}
+@cindex Unix man pages
+@findex man
+
+@example
+@samp{man:@var{page-spec}}
+@end example
+
+This is a non-standard scheme.  @var{page-spec} is passed directly to
+the Lisp @code{man} function.
+
+@node Defining New URLs
+@chapter Defining New URLs
+
+@menu
+* Naming conventions::          
+* Required functions::          
+* Optional functions::          
+* Asynchronous fetching::       
+* Supporting file-name-handlers::  
+@end menu
+
+@node Naming conventions
+@section Naming conventions
+
+@node Required functions
+@section Required functions
+
+@node Optional functions
+@section Optional functions
+
+@node Asynchronous fetching
+@section Asynchronous fetching
+
+@node Supporting file-name-handlers
+@section Supporting file-name-handlers
+
+@node General Facilities
+@chapter General Facilities
+
+@menu
+* Disk Caching::                
+* Proxies::                     
+* Gateways in general::         
+* History::                     
+@end menu
+
+@node Disk Caching
+@section Disk Caching
+@cindex Caching
+@cindex Persistent Cache
+@cindex Disk Cache
+
+The disk cache stores retrieved documents locally, whence they can be
+retrieved more quickly.  When requesting a URL that is in the cache,
+the library checks to see if the page has changed since it was last
+retrieved from the remote machine.  If not, the local copy is used,
+saving the transmission over the network.
+@cindex Cleaning the cache
+@cindex Clearing the cache
+@cindex Cache cleaning
+Currently the cache isn't cleared automatically.
+@c Running the @code{clean-cache} shell script
+@c fist is recommended, to allow for future cleaning of the cache.  This
+@c shell script will remove all files that have not been accessed since it
+@c was last run.  To keep the cache pared down, it is recommended that this
+@c script be run from @i{at} or @i{cron} (see the manual pages for
+@c crontab(5) or at(1) for more information)
+
+@defopt url-automatic-caching
+Setting this variable non-@code{nil} causes documents to be cached
+automatically.
+@end defopt
+
+@defopt url-cache-directory
+This variable specifies the
+directory to store the cache files.  It defaults to sub-directory
+@file{cache} of @code{url-configuration-directory}.
+@end defopt
+
+@c Fixme: function v. option, but neither used.
+@c @findex url-cache-expired
+@c @defopt url-cache-expired
+@c This is a function to decide whether or not a cache entry has expired.
+@c It takes two times as it parameters and returns non-@code{nil} if the
+@c second time is ``too old'' when compared with the first time.
+@c @end defopt
+
+@defopt url-cache-creation-function
+The cache relies on a scheme for mapping URLs to files in the cache.
+This variable names a function which sets the type of cache to use.
+It takes a URL as argument and returns the absolute file name of the
+corresponding cache file.  The two supplied possibilities are
+@code{url-cache-create-filename-using-md5} and
+@code{url-cache-create-filename-human-readable}.
+@end defopt
+
+@defun url-cache-create-filename-using-md5 url
+Creates a cache file name from @var{url} using MD5 hashing.
+@findex md5
+This is creates entries with very few cache collisions and is fast if
+you have the @code{md5} function as a primitive (Emacs 21 and XEmacs).
+@smallexample
+(url-cache-create-filename-using-md5 "http://www.example.com/foo/bar")
+  @result{} "/home/fx/.url/cache/fx/http/com/example/www/b8a35774ad20db71c7c3409a5410e74f"
+@end smallexample
+@end defun
+
+@defun url-cache-create-filename-human-readable url
+Creates a cache file name from @var{url} more obviously connected to
+@var{url} than for @code{url-cache-create-filename-using-md5}, but
+more likely to conflict with other files.
+@smallexample
+(url-cache-create-filename-human-readable "http://www.example.com/foo/bar")
+  @result{} "/home/fx/.url/cache/fx/http/com/example/www/foo/bar"
+@end smallexample
+@end defun
+
+@c Fixme: never actually used currently? 
+@c @defopt url-standalone-mode
+@c @cindex Relying on cache
+@c @cindex Cache only mode
+@c @cindex Standalone mode
+@c If this variable is non-@code{nil}, the library relies solely on the
+@c cache for fetching documents and avoids checking if they have changed
+@c on remote servers.
+@c @end defopt
+
+@c With a large cache of documents on the local disk, it can be very handy
+@c when traveling, or any other time the network connection is not active
+@c (a laptop with a dial-on-demand PPP connection, etc).  Emacs/W3 can rely
+@c solely on its cache, and avoid checking to see if the page has changed
+@c on the remote server.  In the case of a dial-on-demand PPP connection,
+@c this will keep the phone line free as long as possible, only bringing up
+@c the PPP connection when asking for a page that is not located in the
+@c cache.  This is very useful for demonstrations as well.
+
+@node Proxies
+@section Proxies and Gatewaying
+
+@c fixme: check/document url-ns stuff 
+@cindex proxy servers
+@cindex proxies
+@cindex environment variables
+@vindex HTTP_PROXY
+Proxy servers are commonly used to provide gateways through firewalls
+or as caches serving some more-or-less local network.  Each protocol
+(HTTP, FTP, etc.)@: can have a different gateway server.  Proxying is
+conventionally configured commonly amongst different programs through
+environment variables of the form @code{@var{protocol}_proxy}, where
+@var{protocol} is one of the supported network protocols (@code{http},
+@code{ftp} etc.).  The library recognizes such variables in either
+upper or lower case.  Their values are of one of the forms:
+@itemize @bullet
+@item @code{@var{host}:@var{port}}
+@item A full URL;
+@item Simply a host name.
+@end itemize
+
+@vindex NO_PROXY
+The @code{NO_PROXY} environment variable specifies URLs that should be
+excluded from proxying (on servers that should be contacted directly).
+This should be a comma-separated list of hostnames, domain names, or a
+mixture of both.  Asterisks can be used as wildcards, but other
+clients may not support that.  Domain names may be indicated by a
+leading dot.  For example:
+@example
+NO_PROXY="*.aventail.com,home.com,.seanet.com"
+@end example
+@noindent says to contact all machines in the @samp{aventail.com} and
+@samp{seanet.com} domains directly, as well as the machine named
+@samp{home.com}.  If @code{NO_PROXY} isn't defined, @code{no_PROXY}
+and @code{no_proxy} are also tried, in that order.  
+
+Proxies may also be specified directly in Lisp.
+
+@defopt url-proxy-services
+This variable is an alist of URL schemes and proxy servers that
+gateway them.  The items are of the form @w{@code{(@var{scheme}
+. @var{host}:@var{portnumber})}}, says that the URL @var{scheme} is
+gatewayed through @var{portnumber} on the specified @var{host}.  An
+exception is the pseudo scheme @code{"no_proxy"}, which is paired with
+a regexp matching host names not to be proxied.  This variable is
+initialized from the environment as above.
+
+@example
+(setq url-proxy-services
+      '(("http"     . "proxy.aventail.com:80")
+        ("no_proxy" . "^.*\\(aventail\\|seanet\\)\\.com")))
+@end example
+@end defopt
+
+@node Gateways in general
+@section Gateways in General
+@cindex gateways
+@cindex firewalls
+
+The library provides a general gateway layer through which all
+networking passes.  It can both control access to the network and
+provide access through gateways in firewalls.  This may make direct
+connexions in some cases and pass through some sort of gateway in
+others.@footnote{Proxies (which only operate over HTTP) are
+implemented using this.}  The library's basic function responsible for
+making connexions is @code{url-open-stream}.
+
+@defun url-open-stream name buffer host service
+@cindex opening a stream
+@cindex stream, opening
+Open a stream to @var{host}, possibly via a gateway.  The other
+arguments are as for @code{open-network-stream}.  This will not make a
+connexion if @code{url-gateway-unplugged} is non-@code{nil}.
+@end defun
+
+@defvar url-gateway-local-host-regexp
+This is a regular expression that matches local hosts that do not
+require the use of a gateway.  If @code{nil}, all connexions are made
+through the gateway.
+@end defvar
+
+@defvar url-gateway-method
+This variable controls which gateway method is used.  It may be useful
+to bind it temporarily in some applications.  It has values taken from
+a list of symbols.  Possible values are:
+
+@table @code
+@item telnet
+@cindex @command{telnet}
+Use this method if you must first telnet and log into a gateway host,
+and then run telnet from that host to connect to outside machines.
+
+@item rlogin
+@cindex @command{rlogin}
+This method is identical to @code{telnet}, but uses @command{rlogin}
+to log into the remote machine without having to send the username and
+password over the wire every time.
+
+@item socks
+@cindex @sc{socks}
+Use if the firewall has a @sc{socks} gateway running on it.  The
+@sc{socks} v5 protocol is defined in RFC 1928.
+
+@c @item ssl
+@c This probably shouldn't be documented
+@c Fixme: why not? -- fx
+
+@item native
+This method uses Emacs's builtin networking directly.  This is the
+default.  It can be used only if there is no firewall blocking access.
+@end table
+@end defvar
+
+The following variables control the gateway methods.
+
+@defopt url-gateway-telnet-host
+The gateway host to telnet to.  Once logged in there, you then telnet
+out to the hosts you want to connect to.
+@end defopt
+@defopt url-gateway-telnet-parameters
+This should be a list of parameters to pass to the @command{telnet} program.
+@end defopt
+@defopt url-gateway-telnet-password-prompt
+This is a regular expression that matches the password prompt when
+logging in.
+@end defopt
+@defopt url-gateway-telnet-login-prompt
+This is a regular expression that matches the username prompt when
+logging in.
+@end defopt
+@defopt url-gateway-telnet-user-name
+The username to log in with.
+@end defopt
+@defopt url-gateway-telnet-password
+The password to send when logging in.
+@end defopt
+@defopt url-gateway-prompt-pattern
+This is a regular expression that matches the shell prompt.
+@end defopt
+
+@defopt url-gateway-rlogin-host
+Host to @samp{rlogin} to before telnetting out.
+@end defopt
+@defopt url-gateway-rlogin-parameters
+Parametres to pass to @samp{rsh}.
+@end defopt
+@defopt url-gateway-rlogin-user-name
+User name to use when logging in to the gateway.
+@end defopt
+@defopt url-gateway-prompt-pattern
+This is a regular expression that matches the shell prompt.
+@end defopt
+
+@defopt socks-server
+This specifies the default server, it takes the form
+@w{@code{("Default server" @var{server} @var{port} @var{version})}}
+where @var{version} can be either 4 or 5.
+@end defopt
+@defvar socks-password
+If this is @code{nil} then you will be asked for the passward,
+otherwise it will be used as the password for authenticating you to
+the @sc{socks} server.
+@end defvar
+@defvar socks-username
+This is the username to use when authenticating yourself to the
+@sc{socks} server.  By default this is your login name.
+@end defvar
+@defvar socks-timeout
+This controls how long, in seconds, to wait for responses from the
+@sc{socks} server; it is 5 by default.
+@end defvar
+@c fixme: these have been effectively commented-out in the code
+@c @defopt socks-server-aliases
+@c This a list of server aliases.  It is a list of aliases of the form
+@c @var{(alias hostname port version)}.
+@c @end defopt
+@c @defopt socks-network-aliases
+@c This a list of network aliases.  Each entry in the list takes the form
+@c @var{(alias (network))} where @var{alias} is a string that names the
+@c @var{network}.  The networks can contain a pair (not a dotted pair) of
+@c @sc{ip} addresses which specify a range of @sc{ip} addresses, an @sc{ip}
+@c address and a netmask, a domain name or a unique hostname or @sc{ip}
+@c address.
+@c @end defopt
+@c @defopt socks-redirection-rules
+@c This a list of redirection rules.  Each rule take the form
+@c @var{(Destination network Connection type)} where @var{Destination
+@c network} is a network alias from @code{socks-network-aliases} and
+@c @var{Connection type} can be @code{nil} in which case a direct
+@c connection is used, or it can be an alias from
+@c @code{socks-server-aliases} in which case that server is used as a
+@c proxy.
+@c @end defopt
+@defopt socks-nslookup-program
+@cindex @command{nslookup}
+This the @samp{nslookup} program.  It is @code{"nslookup"} by default.
+@end defopt
+
+@menu
+* Suppressing network connexions::  
+@end menu
+@c * Broken hostname resolution::  
+
+@node Suppressing network connexions
+@subsection Suppressing Network Connexions
+
+@cindex network connexions, suppressing
+@cindex suppressing network connexions
+@cindex bugs, HTML
+@cindex HTML `bugs'
+In some circumstances it is desirable to suppress making network
+connexions.  A typical case is when rendering HTML in a mail user
+agent, when external URLs should not be activated, particularly to
+avoid `bugs' which `call home' by fetch single-pixel images and the
+like.  To arrange this, bind the following variable for the duration
+of such processing.
+
+@defvar url-gateway-unplugged
+If this variable is non-@code{nil} new network connexions are never
+opened by the URL library.
+@end defvar
+
+@c @node Broken hostname resolution
+@c @subsection Broken Hostname Resolution
+
+@c @cindex hostname resolver
+@c @cindex resolver, hostname
+@c Some C libraries do not include the hostname resolver routines in
+@c their static libraries.  If Emacs was linked statically, and was not
+@c linked with the resolver libraries, it wil not be able to get to any
+@c machines off the local network.  This is characterized by being able
+@c to reach someplace with a raw ip number, but not its hostname
+@c (@url{http://129.79.254.191/} works, but
+@c @url{http://www.cs.indiana.edu/} doesn't).  This used to happen on
+@c SunOS4 and Ultrix, but is now probably now rare.  If Emacs can't be
+@c rebuilt linked against the resolver library, it can use the external
+@c @command{nslookup} program instead.
+
+@c @defopt url-gateway-broken-resolution
+@c @cindex @code{nslookup} program
+@c @cindex program, @code{nslookup}
+@c If non-@code{nil}, this variable says to use the program specified by
+@c @code{url-gateway-nslookup-program} program to do hostname resolution.
+@c @end defopt
+
+@c @defopt url-gateway-nslookup-program
+@c The name of the program to do hostname lookup if Emacs can't do it
+@c directly.  This program should expect a single argument on the command
+@c line---the hostname to resolve---and should produce output similar to
+@c the standard Unix @command{nslookup} program:
+@c @example
+@c Name: www.cs.indiana.edu
+@c Address: 129.79.254.191
+@c @end example
+@c @end defopt
+
+@node History
+@section History
+
+The library can maintain a global history list tracking URLs accessed.
+URL completion can be done from it.  The history mechanism is set up
+@findex url-do-setup
+automatically via @code{url-do-setup} when it is configured to be on.
+Note that the size of the history list is currently not limited.
+
+@vindex url-history-hash-table
+The history `list' is actually a hash table,
+@code{url-history-hash-table}.  It contains access times keyed by URL
+strings.  The times are in the format returned by @code{current-time}.
+
+@defun url-history-update-url url time
+This function updates the hsitory table with an entry for @var{url}
+accessed at the gievn @var{time}.
+@end defun
+
+@defopt url-history-track
+If non-@code{nil}, the library will keep track of all the URLs
+accessed.  If is is @code{t}, the list is saved to disk at the end of
+each Emacs session.  The default is @code{nil}.
+@end defopt
+
+@defopt url-history-file
+The file storing the history list between sessions.  It defaults to
+@file{history} in @code{url-configuration-directory}.
+@end defopt
+
+@defopt url-history-save-interval
+@findex url-history-setup-save-timer
+The number of seconds between automatic saves of the history list.
+Default is one hour.  Note that if you change this variable directly,
+rather than using Custom, after @code{url-do-setup} has been run, you
+need to run the function @code{url-history-setup-save-timer}.
+@end defopt
+
+@defun url-history-parse-history &optional fname
+Parses the history file @var{fname} (default @code{url-history-file})
+and sets up the history list.
+@end defun
+
+@defun url-history-save-history &optional fname
+Saves the current history to file @var{fname} (default
+@code{url-history-file}).
+@end defun
+
+@defun url-completion-function string predicate function
+You can use this function to do completion of URLs from the history.
+@end defun
+
+@node Customization
+@chapter Customization
+
+@section Environment Variables
+
+@cindex environment variables
+The following environment variables affect the library's operation at
+startup.
+
+@table @code
+@item TMPDIR
+@vindex TMPDIR
+@vindex url-temporary-directory
+If this is defined, @var{url-temporary-directory} is initialized from
+it.
+@end table
+
+@section General User Options
+
+The following user options, settable with Customize, affect the
+general operation of the package.
+
+@defopt url-debug
+@cindex debugging
+Specifies the types of debug messages the library which are logged to
+the @code{*URL-DEBUG*} buffer.
+@code{t} means log all messages.
+A number means log all messages and show them with @code{message}.
+If may also be a list of the types of messages to be logged.
+@end defopt
+@defopt url-personal-mail-address
+@end defopt
+@defopt url-privacy-level
+@end defopt
+@defopt url-uncompressor-alist
+@end defopt
+@defopt url-passwd-entry-func
+@end defopt
+@defopt url-standalone-mode
+@end defopt
+@defopt url-bad-port-list
+@end defopt
+@defopt url-max-password-attempts
+@end defopt
+@defopt url-temporary-directory
+@end defopt
+@defopt url-show-status
+@end defopt
+@defopt url-confirmation-func
+The function to use for asking yes or no functions.  This is normally
+either @code{y-or-n-p} or @code{yes-or-no-p}, but could be another
+function taking a single argument (the prompt) and returning @code{t}
+only if an affirmative answer is given.
+@end defopt
+@defopt url-gateway-method
+@c fixme: describe gatewaying 
+A symbol specifying the type of gateway support to use fro connexions
+from the local machine.  The supported methods are:
+
+@table @code
+@item telnet
+Run telnet in a subprocess to connect;
+@item rlogin
+Rlogin to another machine to connect;
+@item socks
+Connect through a socks server;
+@item ssl
+Connect with SSL;
+@item native
+Connect directly.
+@end table
+@end defopt
+
+@node Function Index
+@unnumbered Command and Function Index
+@printindex fn
+
+@node Variable Index
+@unnumbered Variable Index
+@printindex vr
+
+@node Concept Index
+@unnumbered Concept Index
+@printindex cp
+
+@setchapternewpage odd
+@contents
+@bye
+
+@ignore
+   arch-tag: c96be356-7e2d-4196-bcda-b13246c5c3f0
+@end ignore
--- a/src/ChangeLog	Wed Dec 08 22:20:27 2004 +0000
+++ b/src/ChangeLog	Wed Dec 08 22:21:07 2004 +0000
@@ -1,3 +1,19 @@
+2004-12-07  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* emacs.c (Fdump_emacs): Add ! defined (SYSTEM_MALLOC) around
+	reset_malloc_hooks.
+
+	* keyboard.c (handle_async_input, input_available_signal): Add
+	! defined (SYSTEM_MALLOC) around thread code.
+
+	* alloc.c: Add comment about the reason for (UN)BLOCK_INPUT_ALLOC.
+
+2004-12-07  Stefan  <monnier@iro.umontreal.ca>
+
+	* eval.c (init_eval_once): Increase max_specpdl_size to 1000.
+
+	* config.in: Regenerate.
+
 2004-12-07  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
 
 	* xmenu.c (Fx_popup_menu): Correct documentation about position.
@@ -100,13 +116,10 @@
 
 2004-11-30  Kenichi Handa  <handa@m17n.org>
 
-	* term.c (encode_terminal_buf, encode_terminal_bufsize): New
-	variables.
+	* term.c (encode_terminal_buf, encode_terminal_bufsize): New variables.
 	(encode_terminal_code): Argument changed.  Encode all
-	characters at once, and return a pointer to the result of
-	encoding.
-	(write_glyphs): Decide coding here.  Adjusted for the above
-	change.
+	characters at once, and return a pointer to the result of encoding.
+	(write_glyphs): Decide coding here.  Adjusted for the above change.
 	(insert_glyphs): Likewise.
 	(term_init): Initialize encode_terminal_bufsize to 0.
 
--- a/src/alloc.c	Wed Dec 08 22:20:27 2004 +0000
+++ b/src/alloc.c	Wed Dec 08 22:21:07 2004 +0000
@@ -91,6 +91,23 @@
 
 #if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
 
+/* When GTK uses the file chooser dialog, different backends can be loaded
+   dynamically.  One such a backend is the Gnome VFS backend that gets loaded
+   if you run Gnome.  That backend creates several threads and also allocates
+   memory with malloc.
+
+   If Emacs sets malloc hooks (! SYSTEM_MALLOC) and the emacs_blocked_*
+   functions below are called from malloc, there is a chance that one
+   of these threads preempts the Emacs main thread and the hook variables
+   end up in a inconsistent state.  So we have a mutex to prevent that (note
+   that the backend handles concurrent access to malloc within its own threads
+   but Emacs code running in the main thread is not included in that control).
+
+   When UNBLOCK_INPUT is called, revoke_input_signal may be called.  If this
+   happens in one of the backend threads we will have two threads that tries
+   to run Emacs code at once, and the code is not prepared for that.
+   To prevent that, we only call BLOCK/UNBLOCK from the main thread.  */
+
 static pthread_mutex_t alloc_mutex;
 pthread_t main_thread;
 
--- a/src/config.in	Wed Dec 08 22:20:27 2004 +0000
+++ b/src/config.in	Wed Dec 08 22:21:07 2004 +0000
@@ -1,7 +1,8 @@
 /* src/config.in.  Generated from configure.in by autoheader.  */
 
 /* GNU Emacs site configuration template file.
-   Copyright (C) 1988, 93, 94, 99, 2000, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1988, 1993, 1994, 1999, 2000, 2002, 2004
+             Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -775,9 +776,9 @@
 /* If using the C implementation of alloca, define if you know the
    direction of stack growth for your system; otherwise it will be
    automatically deduced at run-time.
-	STACK_DIRECTION > 0 => grows toward higher addresses
-	STACK_DIRECTION < 0 => grows toward lower addresses
-	STACK_DIRECTION = 0 => direction of growth unknown */
+        STACK_DIRECTION > 0 => grows toward higher addresses
+        STACK_DIRECTION < 0 => grows toward lower addresses
+        STACK_DIRECTION = 0 => direction of growth unknown */
 #undef STACK_DIRECTION
 
 /* Define to 1 if you have the ANSI C header files. */
@@ -932,7 +933,7 @@
 /* Don't try to switch on inline handling as detected by AC_C_INLINE
    generally, because even if non-gcc compilers accept `inline', they
    may reject `extern inline'.  */
-#ifdef __GNUC__
+#if defined (__GNUC__) && defined (OPTIMIZE)
 #define INLINE __inline__
 #else
 #define INLINE
@@ -980,7 +981,13 @@
 /* Tell regex.c to use a type compatible with Emacs.  */
 #define RE_TRANSLATE_TYPE Lisp_Object
 #define RE_TRANSLATE(TBL, C) CHAR_TABLE_TRANSLATE (TBL, C)
-#define RE_TRANSLATE_P(TBL) (XFASTINT (TBL) != 0)
+#ifdef make_number
+/* If make_number is a macro, use it.  */
+#define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0)))
+#else
+/* If make_number is a function, avoid it.  */
+#define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0))
+#endif
 #endif
 
 /* Avoid link-time collision with system mktime if we will use our own.  */
--- a/src/emacs.c	Wed Dec 08 22:20:27 2004 +0000
+++ b/src/emacs.c	Wed Dec 08 22:21:07 2004 +0000
@@ -2237,7 +2237,7 @@
   memory_warnings (my_edata, malloc_warning);
 #endif /* not WINDOWSNT */
 #endif
-#ifdef HAVE_GTK_AND_PTHREAD
+#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
   /* Pthread may call malloc before main, and then we will get an endless
      loop, because pthread_self (see alloc.c) calls malloc the first time
      it is called on some systems.  */
--- a/src/eval.c	Wed Dec 08 22:20:27 2004 +0000
+++ b/src/eval.c	Wed Dec 08 22:21:07 2004 +0000
@@ -204,7 +204,7 @@
   specpdl_size = 50;
   specpdl = (struct specbinding *) xmalloc (specpdl_size * sizeof (struct specbinding));
   specpdl_ptr = specpdl;
-  max_specpdl_size = 650;
+  max_specpdl_size = 1000;
   max_lisp_eval_depth = 300;
 
   Vrun_hooks = Qnil;
--- a/src/keyboard.c	Wed Dec 08 22:20:27 2004 +0000
+++ b/src/keyboard.c	Wed Dec 08 22:21:07 2004 +0000
@@ -6849,7 +6849,7 @@
 #ifdef BSD4_1
   extern int select_alarmed;
 #endif
-#ifdef HAVE_GTK_AND_PTHREAD
+#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
   extern pthread_t main_thread;
   if (pthread_self () != main_thread)
     {
@@ -6895,7 +6895,7 @@
 {
   /* Must preserve main program's value of errno.  */
   int old_errno = errno;
-#ifdef HAVE_GTK_AND_PTHREAD
+#if ! defined (SYSTEM_MALLOC) && defined (HAVE_GTK_AND_PTHREAD)
   extern pthread_t main_thread;
   if (pthread_self () != main_thread)
     {