T-gnus 6.15.3 revision 00 (Synch with Oort Gnus v0.03) t-gnus-6_15_3-00
authoryamaoka <yamaoka>
Mon, 7 May 2001 00:20:40 +0000 (00:20 +0000)
committeryamaoka <yamaoka>
Mon, 7 May 2001 00:20:40 +0000 (00:20 +0000)
19 files changed:
ChangeLog
README.T-gnus
lisp/ChangeLog
lisp/gnus-srvr.el
lisp/gnus-sum.el
lisp/gnus-vers.el
lisp/gnus.el
lisp/imap.el
lisp/mail-source.el
lisp/mm-uu.el
lisp/mm-view.el
lisp/nnmail.el
lisp/nnrss.el
lisp/nntp.el
lisp/nnultimate.el
lisp/smime.el
texi/ChangeLog
texi/gnus-ja.texi
texi/gnus.texi

index 3220590..f48d683 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2001-05-07  Katsumi Yamaoka <yamaoka@jpl.org>
+
+       * lisp/gnus-vers.el: T-gnus 6.15.3 revision 00.
+
 2001-04-27  Katsumi Yamaoka <yamaoka@jpl.org>
 
        * lisp/gnus-vers.el (gnus-revision-number): Increment to 01.
index 5555dd6..8aab2e8 100644 (file)
@@ -33,6 +33,6 @@ NEWS:
 
 * T-gnus 6.15 - this is based on Oort Gnus.
 
-  The latest T-gnus is T-gnus 6.15.2 (based on Oort Gnus 0.02).  It
+  The latest T-gnus is T-gnus 6.15.3 (based on Oort Gnus 0.03).  It
   requires SEMI/WEMI (1.13.5 or later), FLIM (1.13.1 or later), and
   APEL (10.0 or later).
index af6700b..1ddd422 100644 (file)
@@ -1,3 +1,80 @@
+2001-05-01 19:21:19 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
+
+       * gnus.el: Oort Gnus v0.03 is released.
+
+2001-05-01 19:06:21  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnultimate.el (nnultimate-topic-article-to-article): Use the
+       group.
+
+2001-04-24 19:50:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-srvr.el (gnus-server-insert-server-line): Add a space.
+
+2001-04-15 14:55:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnultimate.el (nnultimate-retrieve-headers): Return all
+       available headers. 
+
+       * gnus-sum.el (gnus-read-all-available-headers): New variable.
+       (gnus-get-newsgroup-headers-xover): Use it.
+
+2001-04-14 15:47:26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnultimate.el (nnultimate-retrieve-headers): Clean up.
+
+2001-04-30 17:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nntp.el (nntp-retrieve-groups): Use throw instead of error.
+
+2001-04-29 09:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnrss.el (nnrss-insert-w3): Use cache before I figure out how to
+       disable it.
+
+       * gnus.el (gnus-info-nodes): Remove a few The's.
+
+2001-04-29 08:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * mail-source.el (mail-source-movemail): Call-process may return a
+       signal description string.
+
+       * gnus-start.el (gnus-read-newsrc-el-file):
+       gnus-newsrc-file-version may be nil.
+
+       * nnmail.el (nnmail-get-new-mail): Use the exact file only.
+       Suggested by Michael Sperber [Mr. Preprocessor]  
+       <sperber@informatik.uni-tuebingen.de>.
+
+2001-04-25  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * mm-uu.el (mm-uu-configure-list): Fixed customize type.
+
+2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * mm-view.el (mm-display-inline-fontify): Allow XEmacs to fully
+       fontify HANDLE.
+
+2001-04-18  Simon Josefsson  <simon@josefsson.org>
+
+       * smime.el (smime-ask-passphrase): Rework to return value.
+       (smime-sign-region): Rework to bind value and use it.
+       (smime-decrypt-region): Ditto.
+
+2001-04-18  Mathias Herberts <Mathias.Herberts@iroise.net>
+       Committed by Simon Josefsson  <simon@josefsson.org>
+
+       * smime.el (smime-ask-passphrase): New function.
+       (smime-sign-region): Use it.
+       (smime-encrypt-cipher): New variable.
+       (smime-decrypt-region): Ditto.
+
+2001-04-12  Jason Merrill  <jason_merrill@redhat.com>
+       Committed by Simon Josefsson  <simon@josefsson.org>
+
+       * imap.el (imap-shell-open): Erase the buffer *after* copying it into
+       the log.
+
 2001-04-14 01:14:42 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
 
        *gnus.el: Oort Gnus v0.02 is released.
index 9d5648f..729899a 100644 (file)
@@ -189,7 +189,7 @@ The following commands are available:
         (gnus-tmp-agent (if (and gnus-agent
                                  (member method
                                          gnus-agent-covered-methods))
-                            "(agent)"
+                            " (agent)"
                           "")))
     (beginning-of-line)
     (gnus-add-text-properties
index d2be9e7..504b09b 100644 (file)
@@ -1008,6 +1008,13 @@ when prompting the user for which type of files to save."
   :group 'gnus-summary
   :type 'regexp)
 
+(defcustom gnus-read-all-available-headers nil
+  "Whether Gnus should parse all headers made available to it.
+This is mostly relevant for slow backends where the user may
+wish to widen the summary buffer to include all headers
+that were fetched.  Say, for nnultimate groups."
+  :group 'gnus-summary
+  :type '(choice boolean regexp))
 
 ;;; Internal variables
 
@@ -5143,6 +5150,13 @@ Return a list of headers that match SEQUENCE (see
        (mail-parse-ignored-charsets gnus-newsgroup-ignored-charsets)
        (cur nntp-server-buffer)
        (dependencies (or dependencies gnus-newsgroup-dependencies))
+       (allp (cond
+              ((eq gnus-read-all-available-headers t)
+               t)
+              ((stringp gnus-read-all-available-headers)
+               (string-match gnus-read-all-available-headers group))
+              (t
+               nil)))
        number headers header)
     (save-excursion
       (set-buffer nntp-server-buffer)
@@ -5152,19 +5166,22 @@ Return a list of headers that match SEQUENCE (see
       (goto-char (point-min))
       (while (not (eobp))
        (condition-case ()
-           (while (and sequence (not (eobp)))
+           (while (and (or sequence allp)
+                       (not (eobp)))
              (setq number (read cur))
-             (while (and sequence
-                         (< (car sequence) number))
-               (setq sequence (cdr sequence)))
-             (and sequence
-                  (eq number (car sequence))
-                  (progn
-                    (setq sequence (cdr sequence))
-                    (setq header (inline
-                                   (gnus-nov-parse-line
-                                    number dependencies force-new))))
-                  (push header headers))
+             (when (not allp)
+               (while (and sequence
+                           (< (car sequence) number))
+                 (setq sequence (cdr sequence))))
+             (when (and (or allp
+                            (and sequence
+                                 (eq number (car sequence))))
+                        (progn
+                          (setq sequence (cdr sequence))
+                          (setq header (inline
+                                         (gnus-nov-parse-line
+                                          number dependencies force-new)))))
+               (push header headers))
              (forward-line 1))
          (error
           (gnus-error 4 "Strange nov line (%d)"
index 9343925..3fd3e96 100644 (file)
 (require 'product)
 (provide 'gnus-vers)
 
-(defconst gnus-revision-number "01"
+(defconst gnus-revision-number "00"
   "Revision number for this version of gnus.")
 
 ;; Product information of this gnus.
 (product-provide 'gnus-vers
   (product-define "T-gnus" nil
-                 (list 6 15 2
+                 (list 6 15 3
                        (string-to-number gnus-revision-number))))
 
-(defconst gnus-original-version-number "0.02"
+(defconst gnus-original-version-number "0.03"
   "Version number for this version of Gnus.")
 
 (provide 'running-pterodactyl-gnus-0_73-or-later)
index 9538a62..4f4dca2 100644 (file)
@@ -1822,10 +1822,10 @@ This variable can be nil, gnus or gnus-ja."
                 (const :tag "Japanese" gnus-ja)))
 
 (defvar gnus-info-nodes
-  '((gnus-group-mode "The Group Buffer")
-    (gnus-summary-mode "The Summary Buffer")
-    (gnus-article-mode "The Article Buffer")
-    (gnus-server-mode "The Server Buffer")
+  '((gnus-group-mode "Group Buffer")
+    (gnus-summary-mode "Summary Buffer")
+    (gnus-article-mode "Article Buffer")
+    (gnus-server-mode "Server Buffer")
     (gnus-browse-mode "Browse Foreign Server")
     (gnus-tree-mode "Tree Display"))
   "Alist of major modes and related Info nodes.")
index ec2585b..110760a 100644 (file)
@@ -644,12 +644,12 @@ If ARGS, PROMPT is used as an argument to `format'."
                      (not (imap-parse-greeting)))
            (accept-process-output process 1)
            (sit-for 1))
-         (erase-buffer)
          (and imap-log
               (with-current-buffer (get-buffer-create imap-log)
                 (buffer-disable-undo)
                 (goto-char (point-max))
                 (insert-buffer-substring buffer)))
+         (erase-buffer)
          (when (memq (process-status process) '(open run))
            (setq done process)))))
     (if done
index e4df22c..22aec7a 100644 (file)
@@ -541,8 +541,9 @@ Pass INFO on to CALLBACK."
                  (goto-char (point-min))
                  (when (looking-at "movemail: ")
                    (delete-region (point-min) (match-end 0)))
+                 ;; Result may be a signal description string.
                  (unless (yes-or-no-p
-                          (format "movemail: %s (%d return).  Continue? "
+                          (format "movemail: %s (%s return).  Continue? "
                                   (buffer-string) result))
                    (error "%s" (buffer-string)))
                  (setq to nil)))))))
index dd79e12..5893298 100644 (file)
@@ -132,13 +132,10 @@ This can be either \"inline\" or \"attachment\".")
   "A list of mm-uu configuration.
 To disable dissecting shar codes, for instance, add
 `(shar . disabled)' to this list."
-  :type `(repeat (cons
-                 ,(cons 'choice
-                        (mapcar
-                         (lambda (entry)
-                           (cons 'item (car entry)))
-                         mm-uu-type-alist))
-                 (choice (item disabled))))
+  :type 'alist
+  :options (mapcar (lambda (entry)
+                    (list (car entry) '(const disabled)))
+                  mm-uu-type-alist)
   :group 'gnus-article-mime)
 
 ;; functions
index 639c32e..976cdff 100644 (file)
 
 (defun mm-display-inline-fontify (handle mode)
   (let (text)
-    (with-temp-buffer
-      (mm-insert-part handle)
-      (funcall mode)
-      (font-lock-fontify-buffer)
-      (when (fboundp 'extent-list)
-       (map-extents (lambda (ext ignored)
-                      (set-extent-property ext 'duplicable t)
-                      nil)
-                    nil nil nil nil nil 'text-prop))
-      (setq text (buffer-string)))
+    ;; XEmacs @#$@ version of font-lock refuses to fully turn itself
+    ;; on for buffers whose name begins with " ".  That's why we use
+    ;; save-current-buffer/get-buffer-create rather than
+    ;; with-temp-buffer.
+    (save-current-buffer
+      (set-buffer (generate-new-buffer "*fontification*"))
+      (unwind-protect
+         (progn
+           (buffer-disable-undo)
+           (mm-insert-part handle)
+           (funcall mode)
+           (let ((font-lock-verbose nil))
+             ;; I find font-lock a bit too verbose.
+             (font-lock-fontify-buffer))
+           ;; By default, XEmacs font-lock uses non-duplicable text
+           ;; properties.  This code forces all the text properties
+           ;; to be copied along with the text.
+           (when (fboundp 'extent-list)
+             (map-extents (lambda (ext ignored)
+                            (set-extent-property ext 'duplicable t)
+                            nil)
+                          nil nil nil nil nil 'text-prop))
+           (setq text (buffer-string)))
+       (kill-buffer (current-buffer))))
     (mm-insert-inline handle text)))
 
+;; Shouldn't these functions check whether the user even wants to use
+;; font-lock?  At least under XEmacs, this fontification is pretty
+;; much unconditional.  Also, it would be nice to change for the size
+;; of the fontified region.
+
 (defun mm-display-patch-inline (handle)
   (mm-display-inline-fontify handle 'diff-mode))
 
index 912a232..939d853 100644 (file)
@@ -1576,11 +1576,9 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details."
                                 (list
                                  :predicate
                                  `(lambda (file)
-                                    (string-match
-                                     ,(concat
-                                       (regexp-quote (concat group suffix))
-                                       "$")
-                                     file)))))))
+                                    (string-equal
+                                     ,(concat group suffix)
+                                     (file-name-nondirectory file))))))))
        (when nnmail-fetched-sources
          (if (member source nnmail-fetched-sources)
              (setq source nil)
index e8f3332..db7e1c9 100644 (file)
 (defun nnrss-no-cache (url)
   "")
 
+;; TODO:: disable cache.
+;;
+;; (defun nnrss-insert-w3 (url)
+;;   (require 'url)
+;;   (require 'url-cache)
+;;   (let ((url-cache-creation-function 'nnrss-no-cache))
+;;     (mm-with-unibyte-current-buffer
+;;       (nnweb-insert url))))
+
 (defun nnrss-insert-w3 (url)
-  (require 'url)
-  (require 'url-cache)
-  (let ((url-cache-creation-function 'nnrss-no-cache))
-    (mm-with-unibyte-current-buffer
-      (nnweb-insert url))))
+  (mm-with-unibyte-current-buffer
+    (nnweb-insert url)))
 
 (defun nnrss-decode-entities-unibyte-string (string)
   (mm-with-unibyte-buffer
index a1ea1e7..092e8a2 100644 (file)
@@ -532,84 +532,85 @@ noticing asynchronous data.")
   "Retrieve group info on GROUPS."
   (nntp-possibly-change-group nil server)
   (when (nntp-find-connection-buffer nntp-server-buffer)
-    (save-excursion
-      ;; Erase nntp-server-buffer before nntp-inhibit-erase.
-      (set-buffer nntp-server-buffer)
-      (erase-buffer)
-      (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
-      ;; The first time this is run, this variable is `try'.  So we
-      ;; try.
-      (when (eq nntp-server-list-active-group 'try)
-       (nntp-try-list-active (car groups)))
-      (erase-buffer)
-      (let ((count 0)
-           (received 0)
-           (last-point (point-min))
-           (nntp-inhibit-erase t)
-           (buf (nntp-find-connection-buffer nntp-server-buffer))
-           (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP")))
-       (while groups
-         ;; Send the command to the server.
-         (nntp-send-command nil command (pop groups))
-         (incf count)
-         ;; Every 400 requests we have to read the stream in
-         ;; order to avoid deadlocks.
-         (when (or (null groups)       ;All requests have been sent.
-                   (zerop (% count nntp-maximum-request)))
-           (nntp-accept-response)
+    (catch 'done
+      (save-excursion
+       ;; Erase nntp-server-buffer before nntp-inhibit-erase.
+       (set-buffer nntp-server-buffer)
+       (erase-buffer)
+       (set-buffer (nntp-find-connection-buffer nntp-server-buffer))
+       ;; The first time this is run, this variable is `try'.  So we
+       ;; try.
+       (when (eq nntp-server-list-active-group 'try)
+         (nntp-try-list-active (car groups)))
+       (erase-buffer)
+       (let ((count 0)
+             (received 0)
+             (last-point (point-min))
+             (nntp-inhibit-erase t)
+             (buf (nntp-find-connection-buffer nntp-server-buffer))
+             (command (if nntp-server-list-active-group "LIST ACTIVE" "GROUP")))
+         (while groups
+           ;; Send the command to the server.
+           (nntp-send-command nil command (pop groups))
+           (incf count)
+           ;; Every 400 requests we have to read the stream in
+           ;; order to avoid deadlocks.
+           (when (or (null groups)     ;All requests have been sent.
+                     (zerop (% count nntp-maximum-request)))
+             (nntp-accept-response)
+             (while (and (gnus-buffer-live-p buf)
+                         (progn
+                           ;; Search `blue moon' in this file for the
+                           ;; reason why set-buffer here.
+                           (set-buffer buf)
+                           (goto-char last-point)
+                           ;; Count replies.
+                           (while (re-search-forward "^[0-9]" nil t)
+                             (incf received))
+                           (setq last-point (point))
+                           (< received count)))
+               (nntp-accept-response))))
+         
+         ;; Wait for the reply from the final command.
+         (unless (gnus-buffer-live-p buf)
+           (nnheader-report 'nntp "Connection to %s is closed." server)
+           (throw 'done nil))
+         (set-buffer buf)
+         (goto-char (point-max))
+         (re-search-backward "^[0-9]" nil t)
+         (when (looking-at "^[23]")
            (while (and (gnus-buffer-live-p buf)
                        (progn
-                         ;; Search `blue moon' in this file for the
-                         ;; reason why set-buffer here.
                          (set-buffer buf)
-                         (goto-char last-point)
-                         ;; Count replies.
-                         (while (re-search-forward "^[0-9]" nil t)
-                           (incf received))
-                         (setq last-point (point))
-                         (< received count)))
-             (nntp-accept-response))))
-
-       ;; Wait for the reply from the final command.
-       (unless (gnus-buffer-live-p buf)
-         (error
-          (nnheader-report 'nntp "Connection to %s is closed." server)))
-       (set-buffer buf)
-       (goto-char (point-max))
-       (re-search-backward "^[0-9]" nil t)
-       (when (looking-at "^[23]")
-         (while (and (gnus-buffer-live-p buf)
-                     (progn
-                       (set-buffer buf)
-                       (goto-char (point-max))
-                       (if (not nntp-server-list-active-group)
-                           (not (re-search-backward "\r?\n" (- (point) 3) t))
-                         (not (re-search-backward "^\\.\r?\n"
-                                                  (- (point) 4) t)))))
-                     (nntp-accept-response)))
-
-       ;; Now all replies are received.  We remove CRs.
-       (unless (gnus-buffer-live-p buf)
-         (error
-          (nnheader-report 'nntp "Connection to %s is closed." server)))
-       (set-buffer buf)
-       (goto-char (point-min))
-       (while (search-forward "\r" nil t)
-         (replace-match "" t t))
-
-       (if (not nntp-server-list-active-group)
-           (progn
-             (copy-to-buffer nntp-server-buffer (point-min) (point-max))
-             'group)
-         ;; We have read active entries, so we just delete the
-         ;; superfluous gunk.
+                         (goto-char (point-max))
+                         (if (not nntp-server-list-active-group)
+                             (not (re-search-backward "\r?\n" (- (point) 3) t))
+                           (not (re-search-backward "^\\.\r?\n"
+                                                    (- (point) 4) t)))))
+             (nntp-accept-response)))
+         
+         ;; Now all replies are received.  We remove CRs.
+         (unless (gnus-buffer-live-p buf)
+           (nnheader-report 'nntp "Connection to %s is closed." server)
+           (throw 'done nil))
+         (set-buffer buf)
          (goto-char (point-min))
-         (while (re-search-forward "^[.2-5]" nil t)
-           (delete-region (match-beginning 0)
-                          (progn (forward-line 1) (point))))
-         (copy-to-buffer nntp-server-buffer (point-min) (point-max))
-         'active)))))
-
+         (while (search-forward "\r" nil t)
+           (replace-match "" t t))
+         
+         (if (not nntp-server-list-active-group)
+             (progn
+               (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+               'group)
+           ;; We have read active entries, so we just delete the
+           ;; superfluous gunk.
+           (goto-char (point-min))
+           (while (re-search-forward "^[.2-5]" nil t)
+             (delete-region (match-beginning 0)
+                            (progn (forward-line 1) (point))))
+           (copy-to-buffer nntp-server-buffer (point-min) (point-max))
+           'active))))))
+  
 (deffoo nntp-retrieve-articles (articles &optional group server)
   (nntp-possibly-change-group group server)
   (save-excursion
index 4ed3377..3f69d36 100644 (file)
@@ -86,6 +86,8 @@
       (setq map mapping)
       (while (and (setq article (car articles))
                  map)
+       ;; Skip past the articles in the map until we reach the
+       ;; article we're looking for.
        (while (and map
                    (or (> article (caar map))
                        (< (cadar map) (caar map))))
              (setq contents (cdr (nth 2 (car (nth 2 table)))))
              (setq total-contents (nconc total-contents contents))
              (incf current-page))
-           ;;(setq total-contents (nreverse total-contents))
-           (dolist (art (cdr elem))
-             (if (not (nth (1- (cdr art)) total-contents))
-                 ()                    ;(debug)
-               (push (list (car art)
-                           (nth (1- (cdr art)) total-contents)
-                           subject)
-                     nnultimate-articles)))))
+           (when t
+             (let ((i 0))
+               (dolist (co total-contents)
+                 (push (list (or (nnultimate-topic-article-to-article
+                                  group (car elem) (incf i))
+                                 1)
+                             co subject)
+                       nnultimate-articles))))
+           (when nil
+             (dolist (art (cdr elem))
+               (when (nth (1- (cdr art)) total-contents)
+                 (push (list (car art)
+                             (nth (1- (cdr art)) total-contents)
+                             subject)
+                       nnultimate-articles))))))
        (setq nnultimate-articles
              (sort nnultimate-articles 'car-less-than-car))
        ;; Now we have all the articles, conveniently in an alist
             from (or date "")
             (concat "<" (number-to-string sid) "%"
                     (number-to-string article)
-                    "@ultimate>")
+                    "@ultimate." server ">")
             "" 0
             (/ (length (mapconcat
                         'identity
              (nnheader-insert-nov (cdr header))))))
       'nov)))
 
+(defun nnultimate-topic-article-to-article (group topic article)
+  (catch 'found
+    (dolist (elem (nth 5 (assoc group nnultimate-groups)))
+      (when (and (= topic (nth 2 elem))
+                (>= article (nth 3 elem))
+                (< article (+ (- (nth 1 elem) (nth 0 elem)) 1
+                              (nth 3 elem))))
+       (throw 'found
+              (+ (nth 0 elem) (- article (nth 3 elem))))))))
+
 (deffoo nnultimate-request-group (group &optional server dont-check)
   (nnultimate-possibly-change-server nil server)
   (when (not nnultimate-groups)
index 58be1ae..7035ac8 100644 (file)
 ;; that decision.  One might think that this even influenced were I
 ;; store my keys, and one would probably be right. :-)
 ;;
+;; Update: Mathias Herberts sent the patch.  However, it uses
+;; environment variables to pass the password to OpenSSL, which is
+;; slightly insecure. Hence a new todo: use a better -passin method.
+;;
 ;; Suggestions and comments are appreciated, mail me at simon@josefsson.org.
 
 ;; <rant>
 ;;; Code:
 
 (require 'dig)
+(require 'comint)
 (eval-when-compile (require 'cl))
 
 (defgroup smime nil
@@ -159,6 +164,17 @@ and the files themself should be in PEM format."
   :type 'string
   :group 'smime)
 
+;; OpenSSL option to select the encryption cipher
+
+(defcustom smime-encrypt-cipher "-des3"
+  "Cipher algorithm used for encryption."
+  :type '(choice (const :tag "Triple DES" "-des3")
+                (const :tag "DES"  "-des")
+                (const :tag "RC2 40 bits" "-rc2-40")
+                (const :tag "RC2 64 bits" "-rc2-64")
+                (const :tag "RC2 128 bits" "-rc2-128"))
+  :group 'smime)
+  
 (defcustom smime-dns-server nil
   "DNS server to query certificates from.
 If nil, use system defaults."
@@ -168,6 +184,17 @@ If nil, use system defaults."
 
 (defvar smime-details-buffer "*OpenSSL output*")
 
+;; Password dialog function
+
+(defun smime-ask-passphrase ()
+  "Asks the passphrase to unlock the secret key."
+  (let ((passphrase
+        (comint-read-noecho
+         "Passphrase for secret key (RET for no passphrase): " t)))
+    (if (string= passphrase "")
+       nil
+      passphrase)))
+
 ;; OpenSSL wrappers.
 
 (defun smime-call-openssl-region (b e buf &rest args)
@@ -186,15 +213,22 @@ If nil, use system defaults."
 If signing fails, the buffer is not modified.  Region is assumed to
 have proper MIME tags.  KEYFILE is expected to contain a PEM encoded
 private key and certificate."
-  (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*"))))
+  (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))
+       (passphrase (smime-ask-passphrase)))
+    (if passphrase
+       (setenv "GNUS_SMIME_PASSPHRASE" passphrase))
     (prog1
-       (when (smime-call-openssl-region b e buffer "smime" "-sign"
-                                        "-signer" (expand-file-name keyfile))
+       (when (apply 'smime-call-openssl-region b e buffer "smime" "-sign" 
+                    "-signer" (expand-file-name keyfile)
+                    (if passphrase
+                        (list "-passin" "env:GNUS_SMIME_PASSPHRASE")))
          (delete-region b e)
          (insert-buffer buffer)
          (when (looking-at "^MIME-Version: 1.0$")
            (delete-region (point) (progn (forward-line 1) (point))))
          t)
+      (if passphrase
+         (setenv "GNUS_SMIME_PASSPHRASE" "" t))
       (with-current-buffer (get-buffer-create smime-details-buffer)
        (goto-char (point-max))
        (insert-buffer buffer))
@@ -208,7 +242,7 @@ is expected to contain of a PEM encoded certificate."
   (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*"))))
     (prog1
        (when (apply 'smime-call-openssl-region b e buffer "smime" "-encrypt"
-                    (mapcar 'expand-file-name certfiles))
+                    smime-encrypt-cipher (mapcar 'expand-file-name certfiles))
          (delete-region b e)
          (insert-buffer buffer)
          (when (looking-at "^MIME-Version: 1.0$")
@@ -277,11 +311,17 @@ nil."
 
 (defun smime-decrypt-region (b e keyfile)
   (let ((buffer (generate-new-buffer (generate-new-buffer-name "*smime*")))
-       CAs)
-    (when (apply 'smime-call-openssl-region b e buffer "smime" "-decrypt"
-                "-recip" (list keyfile))
-
+       CAs (passphrase (smime-ask-passphrase)))
+    (if passphrase
+       (setenv "GNUS_SMIME_PASSPHRASE" passphrase))
+    (when (apply 'smime-call-openssl-region
+                b e buffer "smime" "-decrypt" 
+                "-recip" (list keyfile)
+                (if passphrase
+                    (list "-passin" "env:GNUS_SMIME_PASSPHRASE" )))
       )
+    (if passphrase
+       (setenv "GNUS_SMIME_PASSPHRASE" "" t))
     (with-current-buffer (get-buffer-create smime-details-buffer)
       (goto-char (point-max))
       (insert-buffer buffer))
index 1137890..e308649 100644 (file)
@@ -1,3 +1,17 @@
+2001-04-15 19:38:54  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Mail and Post): Fix.
+
+2001-04-29 09:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi: Remove a few The's.
+       (RSS): New.
+
+2001-04-26  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * gnus.texi (Unread Articles): Say that dormants are similar to
+       ticked.
+
 2001-04-13  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
 
        * gnus.texi (Sorting Groups): Note `C-k' and `C-y' for manually
index f8b5565..f8cb17a 100644 (file)
@@ -494,7 +494,7 @@ New Groups
 * Subscription Methods:: \e$B?7$7$$%0%k!<%W$KBP$7$F\e(B gnus \e$B$O2?$r$9$Y$-$+\e(B
 * Filtering New Groups:: Gnus \e$B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k\e(B
 
-The Group Buffer
+Group Buffer
 
 * Group Buffer Format::   \e$BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!\e(B
 * Group Maneuvering::     \e$B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I\e(B
@@ -535,7 +535,7 @@ Misc Group Stuff
 * Group Timestamp::       Gnus \e$B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k\e(B
 * File Commands::         Gnus \e$B$N%U%!%$%k$NFI$_=q$-\e(B
 
-The Summary Buffer
+Summary Buffer
 
 * Summary Buffer Format::      \e$B35N,%P%C%U%!$N304Q$r7hDj$9$k\e(B
 * Summary Maneuvering::        \e$B35N,%P%C%U%!$rF0$-2s$k\e(B
@@ -648,7 +648,7 @@ Various Summary Stuff
 * Summary Generation Commands::     \e$B35N,%P%C%U%!$N\e(B (\e$B:F\e(B) \e$B:n@.\e(B
 * Really Various Summary Commands:: \e$B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na\e(B
 
-The Article Buffer
+Article Buffer
 
 * Hiding Headers::       \e$B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k\e(B
 * Using MIME::           @sc{mime} \e$B5-;v$H$7$F8+$;$k\e(B
@@ -677,7 +677,7 @@ Select Methods
 * Combined Groups::   \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
 * Gnus Unplugged::    \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
 
-The Server Buffer
+Server Buffer
 
 * Server Buffer Format::      \e$B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k\e(B
 * Server Commands::           \e$B%5!<%P!<$rA`$kL?Na\e(B
@@ -735,6 +735,7 @@ Browsing the Web
 * Ultimate::       Ultimate Bulletin Board \e$B%7%9%F%`\e(B
 * Web Archive::    \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
 * Web Newspaper::  \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
+* RSS::            RDF Site Summary \e$B$rFI$`\e(B
 * Customizing w3:: Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
 
 Other Sources
@@ -4901,7 +4902,8 @@ gnus \e$B<+BN$O2D;k5-;v$r4|8B@Z$l>C5n$7$^$;$s\e(B) \e$B$N$G!"1J1s$K5-;v$rJ]B8$7$F$*
 
 @dfn{\e$BJ]N15-;v\e(B}\e$B$O%U%)%m!<%"%C%W$,$"$C$?$H$-$K$@$135N,%P%C%U%!$K8=$l$^$9!#\e(B
 \e$B%U%)%m!<%"%C%W$,L5$$$H$-$bI=<($5$;$?$$$H$-$O!"L?Na\e(B @kbd{/ D} \e$B$r;H$&$3$H\e(B
-\e$B$,$G$-$^$9!#\e(B
+\e$B$,$G$-$^$9!#$=$l0J30$O\e(B (\e$B8+$($k$+$I$&$+$OJL$K$7$F\e(B)\e$B!"2D;k5-;v\e(B (Ticked) \e$B$H\e(B
+\e$B;w$?$h$&$J$b$N$G$9!#\e(B
 
 @item SPACE
 @vindex gnus-unread-mark
@@ -5724,6 +5726,17 @@ gnus \e$B$OA4$F$N5-;v$N40A4$J\e(B @code{References} \e$BMs$r8+$F!"F1$8%9%l%C%I$KB0$
 \e$B!X$:$l!Y$r%9%l%C%I$rJd40$9$k$N$KLr$KN)$D$+$r9MN8$;$:$KI=<($7$^$9!#:G8e$K!"\e(B
 \e$B$3$NJQ?t$,\e(B @code{more} \e$B$G$"$k$H!"\e(Bgnus \e$B$O$I$3$K$b$D$J$,$C$F$$$J$$;^MU$N$^\e(B
 \e$B$P$i$J@a$r@Z$jMn$H$7$^$;$s!#$3$NJQ?t$O%G%#%U%)%k%H$G$O\e(B @code{nil} \e$B$G$9!#\e(B
+
+@item gnus-read-all-available-headers
+@vindex gnus-read-all-available-headers
+\e$B$3$l$O$I$A$i$+$H8@$($P$"$^$jLr$KN)$?$J$$JQ?t$G$9!#%K%e!<%9$G$O$J$$%0%k!<\e(B
+\e$B%W$K$*$$$F35N,%P%C%U%!$,$H$F$bBg$-$/$J$j!"$7$+$b?F5-;v$rC)$k$3$H$,$G$-$J\e(B
+\e$B$$>l9g$K;H$&$3$H$rA[Dj$7$F$$$^$9!#$=$l$O<g$K\e(B @code{nnultimate} \e$B%0%k!<%W\e(B
+\e$B$N$h$&$J!"%&%'%V$K4p$E$$$?%0%k!<%W$G$9!#\e(B
+
+\e$B$3$l$r;H$o$J$$>l9g$O%G%#%U%)%k%H$N\e(B @code{nil} \e$B$N$^$^$K$7$F$*$/$N$,L5Fq$G\e(B
+\e$B$9!#;H$$$?$$>l9g$O%0%k!<%WL>$K9gCW$9$k@55,I=8=$+!"$9$Y$F$N%0%k!<%WL>$K9g\e(B
+\e$BCW$9$k\e(B @code{t} \e$B$K$7$F2<$5$$!#\e(B
 @end table
 
 @node More Threading
@@ -9298,12 +9311,13 @@ gnus \e$B$O>o$KEj9F$K$I$NJ}K!$r;H$&$+$r$"$J$?$K?R$M$^$9!#\e(B
 
 @lisp
 (add-hook 'gnus-select-group-hook
-          (lambda ()
-            (cond
-             ((string-match "^de\\." gnus-newsgroup-name)
-              (ispell-change-dictionary "deutsch"))
-             (t
-              (ispell-change-dictionary "english")))))
+         (lambda ()
+           (cond
+            ((string-match
+              "^de\\." (gnus-group-real-name gnus-newsgroup-name))
+             (ispell-change-dictionary "deutsch"))
+            (t
+             (ispell-change-dictionary "english")))))
 @end lisp
 
 \e$B$"$J$?$NI,MW$K1~$8$FJQ99$7$F2<$5$$!#\e(B
@@ -12371,6 +12385,7 @@ Gnus \e$B$O$3$l$i$N%=!<%9$X$N3&LL$rDs6!$9$k%P%C%/%(%s%I72$r>/$7Hw$($D$D$"$j\e(B
 * Ultimate::       Ultimate Bulletin Board \e$B%7%9%F%`\e(B
 * Web Archive::    \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
 * Web Newspaper::  \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
+* RSS::            RDF Site Summary \e$B$rFI$`\e(B
 * Customizing w3:: Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
 @end menu
 
@@ -12658,6 +12673,28 @@ asahi RET an_group RET}\e$B!#\e(B(@sc{an_group} \e$B$r1\Mw$7$?$$5-;v%0%k!<%W$KCV$-4
 (nnshimbun "asahi" (nnshimbun-url "http://iij.asahi.com/"))
 @end lisp
 
+@node RSS
+@subsection RSS
+@cindex nnrss
+@cindex RSS
+
+\e$B$$$/$D$+$N%5%$%H$O\e(B RDF site summary (RSS) \e$B$r;}$C$F$$$^\e(B
+\e$B$9\e(B @uref{http://purl.org/rss/1.0/spec}\e$B!#$3$l$O$H$F$b5,B'E*$+$DNI<A$J%$%s\e(B
+\e$B%?!<%U%'!<%9$G!"\e(Bgnus \e$B$,%0%k!<%W$r>o$K?7$7$/$7$F$*$/$?$a$N>pJs$rF@$k$3$H\e(B
+\e$B$,$G$-$^$9!#\e(B
+
+\e$B4JC1$K\e(B @code{nnrss} \e$B$r;H$$;O$a$k$K$O!"%0%k!<%W%P%C%U%!\e(B
+\e$B$G\e(B @kbd{B nnrss RET RET} \e$B$H%?%$%W$7$F!"%0%k!<%W$r9VFI$7$F2<$5$$!#\e(B
+
+\e$B0J2<$N\e(B @code{nnrss} \e$BJQ?t$,JQ992DG=$G$9\e(B:
+
+@table @code
+@item nnrss-directory
+@vindex nnrss-directory
+@code{nnrss} \e$B$,%U%!%$%k$r=q$-9~$`%G%#%l%/%H%j!<$G!"%G%#%U%)%k%H\e(B
+\e$B$O\e(B @samp{~/News/rss/} \e$B$G$9!#\e(B
+@end table
+
 @node Customizing w3
 @subsection w3 \e$B$N%+%9%?%^%$%:\e(B
 @cindex w3
index 69a61fe..2d15b93 100644 (file)
@@ -440,7 +440,7 @@ New Groups
 * Subscription Methods::     What Gnus should do with new groups.
 * Filtering New Groups::     Making Gnus ignore certain new groups.
 
-The Group Buffer
+Group Buffer
 
 * Group Buffer Format::    Information listed and how you can change it.
 * Group Maneuvering::      Commands for moving in the group buffer.
@@ -481,7 +481,7 @@ Misc Group Stuff
 * Group Timestamp::       Making Gnus keep track of when you last read a group.
 * File Commands::         Reading and writing the Gnus files.
 
-The Summary Buffer
+Summary Buffer
 
 * Summary Buffer Format::       Deciding how the summary buffer is to look.
 * Summary Maneuvering::         Moving around the summary buffer.
@@ -591,7 +591,7 @@ Various Summary Stuff
 * Summary Generation Commands::       (Re)generating the summary buffer.
 * Really Various Summary Commands::   Those pesky non-conformant commands.
 
-The Article Buffer
+Article Buffer
 
 * Hiding Headers::        Deciding what headers should be displayed.
 * Using MIME::            Pushing articles through @sc{mime} before reading them.
@@ -620,7 +620,7 @@ Select Methods
 * Combined Groups::       Combining groups into one group.
 * Gnus Unplugged::        Reading news and mail offline.
 
-The Server Buffer
+Server Buffer
 
 * Server Buffer Format::      You can customize the look of this buffer.
 * Server Commands::           Commands to manipulate servers.
@@ -672,6 +672,8 @@ Browsing the Web
 * Slashdot::              Reading the Slashdot comments.
 * Ultimate::              The Ultimate Bulletin Board systems.
 * Web Archive::           Reading mailing list archived on web.
+* RSS::                   Reading RDF site summary.
+* Customizing w3::        Doing stuff to Emacs/w3 from Gnus.
 
 Other Sources
 
@@ -4931,6 +4933,8 @@ Marked as dormant (@code{gnus-dormant-mark}).
 @dfn{Dormant articles} will only appear in the summary buffer if there
 are followups to it.  If you want to see them even if they don't have
 followups, you can use the @kbd{/ D} command (@pxref{Limiting}).
+Otherwise (except for the visibility issue), they are just like ticked
+messages.
 
 @item SPACE
 @vindex gnus-unread-mark
@@ -5790,6 +5794,18 @@ thread or not.  Finally, if this variable is @code{more}, gnus won't cut
 off sparse leaf nodes that don't lead anywhere.  This variable is
 @code{nil} by default.
 
+@item gnus-read-all-available-headers
+@vindex gnus-read-all-available-headers
+This is a rather obscure variable that few will find useful.  It's
+intended for those non-news newsgroups where the backend has to fetch
+quite a lot to present the summary buffer, and where it's impossible to
+go back to parents of articles.  This is mostly the case in the
+web-based groups, like the @code{nnultimate} groups.
+
+If you don't use those, then it's safe to leave this as the default
+@code{nil}.  If you want to use this variable, it should be a regexp
+that matches the group name, or @code{t} for all groups.
+
 @end table
 
 
@@ -9734,7 +9750,8 @@ you're in, you could say something like the following:
 (add-hook 'gnus-select-group-hook
           (lambda ()
             (cond
-             ((string-match "^de\\." gnus-newsgroup-name)
+             ((string-match
+               "^de\\." (gnus-group-real-name gnus-newsgroup-name))
               (ispell-change-dictionary "deutsch"))
              (t
               (ispell-change-dictionary "english")))))
@@ -12904,6 +12921,7 @@ interfaces to these sources.
 * Slashdot::              Reading the Slashdot comments.
 * Ultimate::              The Ultimate Bulletin Board systems.
 * Web Archive::           Reading mailing list archived on web.
+* RSS::                   Reading RDF site summary.
 * Customizing w3::        Doing stuff to Emacs/w3 from Gnus.
 @end menu
 
@@ -13165,6 +13183,29 @@ The account name on the web server.
 The password for your account on the web server.
 @end table
 
+@node RSS
+@subsection RSS
+@cindex nnrss
+@cindex RSS
+
+Some sites have RDF site summary (RSS)
+@uref{http://purl.org/rss/1.0/spec}.  It has a quite regular and nice
+interface, and it's possible to get the information Gnus needs to keep
+groups updated.
+
+The easiest way to get started with @code{nnrss} is to say something
+like the following in the group buffer: @kbd{B nnrss RET RET}, then
+subscribe groups.
+
+The following @code{nnrss} variables can be altered:
+
+@table @code
+@item nnrss-directory
+@vindex nnrss-directory
+The directory where @code{nnrss} stores its files.  The default is
+@samp{~/News/rss/}.
+
+@end table
 
 @node Customizing w3
 @subsection Customizing w3