(gnus-group-faq-directory): Update .tw entry. From
[gnus] / lisp / mail-source.el
index 4cd575a..19fdf51 100644 (file)
@@ -262,7 +262,7 @@ If non-nil, this maildrop will be checked periodically for new mail."
   :group 'mail-source
   :type 'integer)
 
-(defcustom mail-source-delete-incoming nil
+(defcustom mail-source-delete-incoming t
   "*If non-nil, delete incoming files after handling.
 If t, delete immediately, if nil, never delete.  If a positive number, delete
 files older than number of days."
@@ -277,7 +277,9 @@ files older than number of days."
                 (integer :tag "days")))
 
 (defcustom mail-source-delete-old-incoming-confirm t
-  "*If non-nil, ask for for confirmation before deleting old incoming files."
+  "*If non-nil, ask for for confirmation before deleting old incoming files.
+This variable only applies when `mail-source-delete-incoming' is a positive
+number."
   :group 'mail-source
   :type 'boolean)
 
@@ -509,17 +511,6 @@ Return the number of files that were found."
                      (error "Cannot get new mail"))
                    0)))))))))
 
-(eval-and-compile
-  (if (fboundp 'make-temp-file)
-      (defalias 'mail-source-make-complex-temp-name 'make-temp-file)
-    (defun mail-source-make-complex-temp-name (prefix)
-      (let ((newname (make-temp-name prefix))
-           (newprefix prefix))
-       (while (file-exists-p newname)
-         (setq newprefix (concat newprefix "x"))
-         (setq newname (make-temp-name newprefix)))
-       newname))))
-
 (defun mail-source-delete-old-incoming (&optional age confirm)
   "Remove incoming files older than AGE days.
 If CONFIRM is non-nil, ask for confirmation before removing a file."
@@ -529,7 +520,7 @@ If CONFIRM is non-nil, ask for confirmation before removing a file."
         (diff (if (natnump age) age 30));; fallback, if no valid AGE given
         currday files)
     (setq files (directory-files
-                mail-source-directory t 
+                mail-source-directory t
                 (concat mail-source-incoming-file-prefix "*"))
          currday (* (car (current-time)) high2days)
          currday (+ currday (* low2days (nth 1 (current-time)))))
@@ -564,7 +555,7 @@ Pass INFO on to CALLBACK."
        (if (eq mail-source-delete-incoming t)
            (delete-file mail-source-crash-box)
          (let ((incoming
-                (mail-source-make-complex-temp-name
+                (mm-make-temp-file
                  (expand-file-name
                   mail-source-incoming-file-prefix
                   mail-source-directory))))
@@ -576,7 +567,7 @@ Pass INFO on to CALLBACK."
              (mail-source-delete-old-incoming
               mail-source-delete-incoming
               mail-source-delete-old-incoming-confirm))))))))
-  
+
 (defun mail-source-movemail (from to)
   "Move FROM to TO using movemail."
   (if (not (file-writable-p to))
@@ -617,7 +608,8 @@ Pass INFO on to CALLBACK."
                (set-file-modes to mail-source-default-file-modes))
              (if (and (or (not (buffer-modified-p errors))
                           (zerop (buffer-size errors)))
-                      (zerop result))
+                      (and (numberp result)
+                           (zerop result)))
                  ;; No output => movemail won.
                  t
                (set-buffer errors)
@@ -652,22 +644,6 @@ Pass INFO on to CALLBACK."
       (not (zerop (nth 7 (file-attributes from))))
       (delete-file from)))
 
-(defvar mail-source-read-passwd nil)
-(defun mail-source-read-passwd (prompt &rest args)
-  "Read a password using PROMPT.
-If ARGS, PROMPT is used as an argument to `format'."
-  (let ((prompt
-        (if args
-            (apply 'format prompt args)
-          prompt)))
-    (unless mail-source-read-passwd
-      (if (or (fboundp 'read-passwd) (load "passwd" t))
-         (setq mail-source-read-passwd 'read-passwd)
-       (unless (fboundp 'ange-ftp-read-passwd)
-         (autoload 'ange-ftp-read-passwd "ange-ftp"))
-       (setq mail-source-read-passwd 'ange-ftp-read-passwd)))
-    (funcall mail-source-read-passwd prompt)))
-
 (defun mail-source-fetch-with-program (program)
   (zerop (call-process shell-file-name nil nil nil
                       shell-command-switch program)))
@@ -711,8 +687,7 @@ If ARGS, PROMPT is used as an argument to `format'."
   "Fetcher for directory sources."
   (mail-source-bind (directory source)
     (mail-source-run-script
-     prescript (format-spec-make ?t path)
-     prescript-delay)
+     prescript (format-spec-make ?t path) prescript-delay)
     (let ((found 0)
          (mail-source-string (format "directory:%s" path)))
       (dolist (file (directory-files
@@ -721,8 +696,7 @@ If ARGS, PROMPT is used as an argument to `format'."
                   (funcall predicate file)
                   (mail-source-movemail file mail-source-crash-box))
          (incf found (mail-source-callback callback file))))
-      (mail-source-run-script
-       postscript (format-spec-make ?t path))
+      (mail-source-run-script postscript (format-spec-make ?t path))
       found)))
 
 (defun mail-source-fetch-pop (source callback)
@@ -740,7 +714,7 @@ If ARGS, PROMPT is used as an argument to `format'."
        (setq password
              (or password
                  (cdr (assoc from mail-source-password-cache))
-                 (mail-source-read-passwd
+                 (read-passwd
                   (format "Password for %s at %s: " user server)))))
       (when server
        (setenv "MAILHOST" server))
@@ -804,7 +778,7 @@ If ARGS, PROMPT is used as an argument to `format'."
        (setq password
              (or password
                  (cdr (assoc from mail-source-password-cache))
-                 (mail-source-read-passwd
+                 (read-passwd
                   (format "Password for %s at %s: " user server))))
        (unless (assoc from mail-source-password-cache)
          (push (cons from password) mail-source-password-cache)))
@@ -994,7 +968,7 @@ This only works when `display-time' is enabled."
   (mail-source-bind (imap source)
     (let ((from (format "%s:%s:%s" server user port))
          (found 0)
-         (buf (get-buffer-create (generate-new-buffer-name " *imap source*")))
+         (buf (generate-new-buffer " *imap source*"))
          (mail-source-string (format "imap:%s:%s" server mailbox))
          (imap-shell-program (or (list program) imap-shell-program))
          remove)
@@ -1031,6 +1005,7 @@ This only works when `display-time' is enabled."
              (nnheader-ms-strip-cr))
            (incf found (mail-source-callback callback server))
            (when (and remove fetchflag)
+             (setq remove (nreverse remove))
              (imap-message-flags-add
               (imap-range-to-message-set (gnus-compress-sequence remove))
               fetchflag nil buf))
@@ -1044,7 +1019,7 @@ This only works when `display-time' is enabled."
        (setq mail-source-password-cache
              (delq (assoc from mail-source-password-cache)
                    mail-source-password-cache))
-       (error (imap-error-text buf)))
+       (error "IMAP error: %s" (imap-error-text buf)))
       (kill-buffer buf)
       found)))
 
@@ -1062,7 +1037,7 @@ This only works when `display-time' is enabled."
              (or password
                  (cdr (assoc (format "webmail:%s:%s" subtype user)
                              mail-source-password-cache))
-                 (mail-source-read-passwd
+                 (read-passwd
                   (format "Password for %s at %s: " user subtype))))
        (when (and password
                   (not (assoc (format "webmail:%s:%s" subtype user)