Importing Oort Gnus v0.03.
authoryamaoka <yamaoka>
Sun, 6 May 2001 22:36:44 +0000 (22:36 +0000)
committeryamaoka <yamaoka>
Sun, 6 May 2001 22:36:44 +0000 (22:36 +0000)
16 files changed:
lisp/ChangeLog
lisp/gnus-srvr.el
lisp/gnus-start.el
lisp/gnus-sum.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.texi

index 7da8061..d1b7ab8 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 e10d588..22e0096 100644 (file)
@@ -2077,7 +2077,9 @@ If FORCE is non-nil, the .newsrc file is read."
           (error "Error in %s" ding-file))))
       ;; Older versions of `gnus-format-specs' are no longer valid
       ;; in Oort Gnus 0.01.
-      (let ((version (gnus-continuum-version gnus-newsrc-file-version)))
+      (let ((version 
+            (and gnus-newsrc-file-version
+                 (gnus-continuum-version gnus-newsrc-file-version))))
        (when (or (not version)
                  (< version 5.090002))
          (setq gnus-format-specs nil)))
index 5263405..7d8f6f5 100644 (file)
@@ -956,6 +956,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
 
@@ -5094,6 +5101,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)
@@ -5103,19 +5117,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 0168cd7..8428a0f 100644 (file)
@@ -256,7 +256,7 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "0.02"
+(defconst gnus-version-number "0.03"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Oort Gnus v%s" gnus-version-number)
@@ -1772,10 +1772,10 @@ covered by that variable."
   "The mail address of the Gnus maintainers.")
 
 (defvar gnus-info-nodes
-  '((gnus-group-mode "(gnus)The Group Buffer")
-    (gnus-summary-mode "(gnus)The Summary Buffer")
-    (gnus-article-mode "(gnus)The Article Buffer")
-    (gnus-server-mode "(gnus)The Server Buffer")
+  '((gnus-group-mode "(gnus)Group Buffer")
+    (gnus-summary-mode "(gnus)Summary Buffer")
+    (gnus-article-mode "(gnus)Article Buffer")
+    (gnus-server-mode "(gnus)Server Buffer")
     (gnus-browse-mode "(gnus)Browse Foreign Server")
     (gnus-tree-mode "(gnus)Tree Display"))
   "Alist of major modes and related Info nodes.")
index 8a87f22..30838f5 100644 (file)
@@ -653,13 +653,13 @@ 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)
                 (imap-disable-multibyte)
                 (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 5c54fb6..618d02e 100644 (file)
@@ -539,8 +539,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 bbff39d..5f93e7b 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 c28abd5..8b6befa 100644 (file)
@@ -1566,11 +1566,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 3ba900a..4a4b17b 100644 (file)
@@ -493,84 +493,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 0567ecc..250ca31 100644 (file)
@@ -85,6 +85,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 542e9fe..90d777e 100644 (file)
@@ -433,7 +433,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.
@@ -474,7 +474,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.
@@ -584,7 +584,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.
@@ -613,7 +613,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.
@@ -665,6 +665,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
 
@@ -4937,6 +4939,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
@@ -5796,6 +5800,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
 
 
@@ -9775,7 +9791,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")))))
@@ -12902,6 +12919,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
 
@@ -13163,6 +13181,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