*** empty log message ***
[gnus] / lisp / nnmail.el
index 978a8bd..3e9cd0f 100644 (file)
@@ -300,8 +300,8 @@ that) from the headers before splitting and saving the messages."
 This can also be a list of regexps."
   :group 'nnmail-prepare
   :type '(choice (const :tag "none" nil)
-                regexp
-                (repeat regexp)))
+                (regexp :value ".*")
+                (repeat :value (".*") regexp)))
 
 (defcustom nnmail-pre-get-new-mail-hook nil
   "Hook called just before starting to handle new incoming mail."
@@ -445,6 +445,8 @@ parameter.  It should return nil, `warn' or `delete'."
 (defvar nnmail-split-history nil
   "List of group/article elements that say where the previous split put messages.")
 
+(defvar nnmail-current-spool nil)
+
 (defvar nnmail-pop-password nil
   "*Password to use when reading mail from a POP server, if required.")
 
@@ -475,7 +477,7 @@ parameter.  It should return nil, `warn' or `delete'."
   (mail-send-and-exit nil))
 
 ;; 1997/5/4 by MORIOKA Tomohiko <morioka@jaist.ac.jp>
-(defvar nnmail-file-coding-system nil
+(defvar nnmail-file-coding-system 'raw-text
   "Coding system used in nnmail.")
 
 (defun nnmail-find-file (file)
@@ -616,17 +618,17 @@ parameter.  It should return nil, `warn' or `delete'."
              (save-excursion
                (setq errors (generate-new-buffer " *nnmail loss*"))
                (buffer-disable-undo errors)
-               (let ((default-directory "/"))
-                 (if (nnheader-functionp nnmail-movemail-program)
-                     (condition-case err
-                         (progn
-                           (funcall nnmail-movemail-program inbox tofile)
-                           (setq result 0))
-                       (error
-                        (save-excursion
-                          (set-buffer errors)
-                          (insert (prin1-to-string err))
-                          (setq result 255))))
+               (if (nnheader-functionp nnmail-movemail-program)
+                   (condition-case err
+                       (progn
+                         (funcall nnmail-movemail-program inbox tofile)
+                         (setq result 0))
+                     (error
+                      (save-excursion
+                        (set-buffer errors)
+                        (insert (prin1-to-string err))
+                        (setq result 255))))
+                 (let ((default-directory "/"))
                    (setq result
                          (apply
                           'call-process
@@ -877,7 +879,7 @@ is a spool.  If not using procmail, return GROUP."
                  (goto-char (match-beginning 0))))
        ;; Possibly wrong format?
        (progn
-         (pop-to-buffer (current-buffer))
+         (pop-to-buffer (find-file-noselect nnmail-current-spool))
          (error "Error, unknown mail format! (Possibly corrupted.)"))
       ;; Carry on until the bitter end.
       (while (not (eobp))
@@ -964,7 +966,7 @@ is a spool.  If not using procmail, return GROUP."
                  (forward-line 1)))
        ;; Possibly wrong format?
        (progn
-         (pop-to-buffer (current-buffer))
+         (pop-to-buffer (find-file-noselect nnmail-current-spool))
          (error "Error, unknown mail format! (Possibly corrupted.)"))
       ;; Carry on until the bitter end.
       (while (not (eobp))
@@ -1346,7 +1348,7 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
                     nnmail-use-procmail)
                 (directory-files
                  nnmail-procmail-directory
-                 t (concat (if group (concat "^" group) "")
+                 t (concat (if group (concat "^" (regexp-quote group)) "")
                            nnmail-procmail-suffix "$"))))
           (p procmails)
           (crash (when (and (file-exists-p nnmail-crash-box)
@@ -1550,7 +1552,7 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
     (setq nnmail-split-history nil))
   (let* ((spools (nnmail-get-spool-files group))
         (group-in group)
-        incoming incomings spool)
+        nnmail-current-spool incoming incomings spool)
     (when (and (nnmail-get-value "%s-get-new-mail" method)
               nnmail-spool-file)
       ;; We first activate all the groups.
@@ -1572,6 +1574,7 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
          (nnheader-message 3 "%s: Reading incoming mail..." method)
          (when (and (nnmail-move-inbox spool)
                     (file-exists-p nnmail-crash-box))
+           (setq nnmail-current-spool spool)
            ;; There is new mail.  We first find out if all this mail
            ;; is supposed to go to some specific group.
            (setq group (nnmail-get-split-group spool group-in))
@@ -1589,6 +1592,8 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
                         (file-name-nondirectory
                          (concat (file-name-as-directory temp) "Incoming")))
                      (concat (file-name-as-directory temp) "Incoming")))))
+           (unless (file-exists-p (file-name-directory incoming))
+             (make-directory (file-name-directory incoming) t))
            (rename-file nnmail-crash-box incoming t)
            (push incoming incomings))))
       ;; If we did indeed read any incoming spools, we save all info.