projects
/
gnus
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Remove nnml-retrieve-groups that is unnecessary and somewhat problematic
[gnus]
/
lisp
/
mail-source.el
diff --git
a/lisp/mail-source.el
b/lisp/mail-source.el
index
6e6ef76
..
cf18fbe
100644
(file)
--- a/
lisp/mail-source.el
+++ b/
lisp/mail-source.el
@@
-1,6
+1,6
@@
;;; mail-source.el --- functions for fetching mail
;;; mail-source.el --- functions for fetching mail
-;; Copyright (C) 1999-201
1
Free Software Foundation, Inc.
+;; Copyright (C) 1999-201
5
Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news, mail
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
;; Keywords: news, mail
@@
-24,10
+24,6
@@
;;; Code:
;;; Code:
-;; For Emacs <22.2 and XEmacs.
-(eval-and-compile
- (unless (fboundp 'declare-function) (defmacro declare-function (&rest r))))
-
(require 'format-spec)
(eval-when-compile
(require 'cl)
(require 'format-spec)
(eval-when-compile
(require 'cl)
@@
-63,7
+59,7
@@
This variable is a list of mail source specifiers.
See Info node `(gnus)Mail Source Specifiers'."
:group 'mail-source
This variable is a list of mail source specifiers.
See Info node `(gnus)Mail Source Specifiers'."
:group 'mail-source
- :version "2
3.1" ;; No Gnus
+ :version "2
4.4"
:link '(custom-manual "(gnus)Mail Source Specifiers")
:type `(choice
(const :tag "None" nil)
:link '(custom-manual "(gnus)Mail Source Specifiers")
:type `(choice
(const :tag "None" nil)
@@
-159,7
+155,18
@@
See Info node `(gnus)Mail Source Specifiers'."
:value nil
(const :tag "Clear" nil)
(const starttls)
:value nil
(const :tag "Clear" nil)
(const starttls)
- (const :tag "SSL/TLS" ssl)))))
+ (const :tag "SSL/TLS" ssl)))
+ (group :inline t
+ (const :format "" :value :leave)
+ (choice :format "\
+%{Leave mail on server%}:\n\t\t%[Value Menu%] %v"
+ :value nil
+ (const :tag "\
+Don't leave mails" nil)
+ (const :tag "\
+Leave all mails" t)
+ (number :tag "\
+Leave mails for this many days" :value 14)))))
(cons :tag "Maildir (qmail, postfix...)"
(const :format "" maildir)
(checklist :tag "Options" :greedy t
(cons :tag "Maildir (qmail, postfix...)"
(const :format "" maildir)
(checklist :tag "Options" :greedy t
@@
-340,7
+347,8
@@
Common keywords should be listed here.")
(:function)
(:password)
(:authentication password)
(:function)
(:password)
(:authentication password)
- (:stream nil))
+ (:stream nil)
+ (:leave))
(maildir
(:path (or (getenv "MAILDIR") "~/Maildir/"))
(:subdirs ("cur" "new"))
(maildir
(:path (or (getenv "MAILDIR") "~/Maildir/"))
(:subdirs ("cur" "new"))
@@
-604,7
+612,7
@@
If CONFIRM is non-nil, ask for confirmation before removing a file."
(when (and (> (- currday fileday) diff)
(if confirm
(y-or-n-p
(when (and (> (- currday fileday) diff)
(if confirm
(y-or-n-p
- (
format
"\
+ (
gnus-format-message
"\
Delete old (> %s day(s)) incoming mail file `%s'? " diff bfile))
(gnus-message 8 "\
Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
Delete old (> %s day(s)) incoming mail file `%s'? " diff bfile))
(gnus-message 8 "\
Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
@@
-721,12
+729,6
@@
Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
;; Return whether we moved successfully or not.
to)))
;; Return whether we moved successfully or not.
to)))
-(defun mail-source-movemail-and-remove (from to)
- "Move FROM to TO using movemail, then remove FROM if empty."
- (or (not (mail-source-movemail from to))
- (not (zerop (nth 7 (file-attributes from))))
- (delete-file from)))
-
(defun mail-source-fetch-with-program (program)
(eq 0 (call-process shell-file-name nil nil nil
shell-command-switch program)))
(defun mail-source-fetch-with-program (program)
(eq 0 (call-process shell-file-name nil nil nil
shell-command-switch program)))
@@
-748,13
+750,16
@@
Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
(setq script (substring script 0 (match-beginning 0))
background 0))
(setq result
(setq script (substring script 0 (match-beginning 0))
background 0))
(setq result
- (call-process shell-file-name nil
background
nil
+ (call-process shell-file-name nil
stderr
nil
shell-command-switch script))
shell-command-switch script))
- (when (and result
- (not (zerop result)))
- (set-buffer stderr)
- (message "Mail source error: %s" (buffer-string)))
- (kill-buffer stderr)))
+ (if (and result
+ (not (zerop result)))
+ (progn
+ (split-window-vertically)
+ (other-window 1)
+ (switch-to-buffer stderr)
+ (message "Mail source error: %s " (buffer-string)))
+ (kill-buffer stderr))))
;;;
;;; Different fetchers
;;;
;;; Different fetchers
@@
-803,6
+808,10
@@
Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
prescript-delay)
(let ((from (format "%s:%s:%s" server user port))
(mail-source-string (format "pop:%s@%s" user server))
prescript-delay)
(let ((from (format "%s:%s:%s" server user port))
(mail-source-string (format "pop:%s@%s" user server))
+ (process-environment (if server
+ (cons (concat "MAILHOST=" server)
+ process-environment)
+ process-environment))
result)
(when (eq authentication 'password)
(setq password
result)
(when (eq authentication 'password)
(setq password
@@
-810,8
+819,6
@@
Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
(cdr (assoc from mail-source-password-cache))
(read-passwd
(format "Password for %s at %s: " user server)))))
(cdr (assoc from mail-source-password-cache))
(read-passwd
(format "Password for %s at %s: " user server)))))
- (when server
- (setenv "MAILHOST" server))
(setq result
(cond
(program
(setq result
(cond
(program
@@
-831,7
+838,8
@@
Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
(pop3-port port)
(pop3-authentication-scheme
(if (eq authentication 'apop) 'apop 'pass))
(pop3-port port)
(pop3-authentication-scheme
(if (eq authentication 'apop) 'apop 'pass))
- (pop3-stream-type stream))
+ (pop3-stream-type stream)
+ (pop3-leave-mail-on-server leave))
(if (or debug-on-quit debug-on-error)
(save-excursion (pop3-movemail mail-source-crash-box))
(condition-case err
(if (or debug-on-quit debug-on-error)
(save-excursion (pop3-movemail mail-source-crash-box))
(condition-case err
@@
-870,6
+878,10
@@
Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
(mail-source-bind (pop source)
(let ((from (format "%s:%s:%s" server user port))
(mail-source-string (format "pop:%s@%s" user server))
(mail-source-bind (pop source)
(let ((from (format "%s:%s:%s" server user port))
(mail-source-string (format "pop:%s@%s" user server))
+ (process-environment (if server
+ (cons (concat "MAILHOST=" server)
+ process-environment)
+ process-environment))
result)
(when (eq authentication 'password)
(setq password
result)
(when (eq authentication 'password)
(setq password
@@
-879,8
+891,6
@@
Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
(format "Password for %s at %s: " user server))))
(unless (assoc from mail-source-password-cache)
(push (cons from password) mail-source-password-cache)))
(format "Password for %s at %s: " user server))))
(unless (assoc from mail-source-password-cache)
(push (cons from password) mail-source-password-cache)))
- (when server
- (setenv "MAILHOST" server))
(setq result
(cond
;; No easy way to check whether mail is waiting for these.
(setq result
(cond
;; No easy way to check whether mail is waiting for these.
@@
-924,7
+934,7
@@
authentication. To do that, you need to set the
`message-send-mail-function' variable as `message-smtpmail-send-it'
and put the following line in your ~/.gnus.el file:
`message-send-mail-function' variable as `message-smtpmail-send-it'
and put the following line in your ~/.gnus.el file:
-\(add-hook
'message-send-mail-hook
'mail-source-touch-pop)
+\(add-hook
\\='message-send-mail-hook \\=
'mail-source-touch-pop)
See the Gnus manual for details."
(let ((sources (if mail-source-primary-source
See the Gnus manual for details."
(let ((sources (if mail-source-primary-source
@@
-1017,6
+1027,7
@@
This only works when `display-time' is enabled."
(dolist (file (directory-files (concat path subdir) t))
(when (and (not (file-directory-p file))
(not (if function
(dolist (file (directory-files (concat path subdir) t))
(when (and (not (file-directory-p file))
(not (if function
+ ;; `function' should return nil if successful.
(funcall function file mail-source-crash-box)
(let ((coding-system-for-write
mm-text-coding-system)
(funcall function file mail-source-crash-box)
(let ((coding-system-for-write
mm-text-coding-system)
@@
-1035,7
+1046,8
@@
This only works when `display-time' is enabled."
;;; (insert "\n\n")
;; MMDF mail format
(insert "\001\001\001\001\n"))
;;; (insert "\n\n")
;; MMDF mail format
(insert "\001\001\001\001\n"))
- (delete-file file)))))
+ (delete-file file)
+ nil))))
(incf found (mail-source-callback callback file))
(mail-source-delete-crash-box)))))
found)))
(incf found (mail-source-callback callback file))
(mail-source-delete-crash-box)))))
found)))
@@
-1078,10
+1090,13
@@
This only works when `display-time' is enabled."
(if (and (imap-open server port stream authentication buf)
(imap-authenticate
user (or (cdr (assoc from mail-source-password-cache))
(if (and (imap-open server port stream authentication buf)
(imap-authenticate
user (or (cdr (assoc from mail-source-password-cache))
- password) buf)
- (imap-mailbox-select mailbox nil buf))
+ password) buf))
+ (let ((mailbox-list (if (listp mailbox) mailbox (list mailbox))))
+ (dolist (mailbox mailbox-list)
+ (when (imap-mailbox-select mailbox nil buf)
(let ((coding-system-for-write mail-source-imap-file-coding-system)
str)
(let ((coding-system-for-write mail-source-imap-file-coding-system)
str)
+ (message "Fetching from %s..." mailbox)
(with-temp-file mail-source-crash-box
;; Avoid converting 8-bit chars from inserted strings to
;; multibyte.
(with-temp-file mail-source-crash-box
;; Avoid converting 8-bit chars from inserted strings to
;; multibyte.
@@
-1116,8
+1131,8
@@
This only works when `display-time' is enabled."
fetchflag nil buf))
(if dontexpunge
(imap-mailbox-unselect buf)
fetchflag nil buf))
(if dontexpunge
(imap-mailbox-unselect buf)
-
(imap-mailbox-close nil buf
))
- (imap-close buf))
+
(imap-mailbox-close nil buf)))
))
+
(imap-close buf))
(imap-close buf)
;; We nix out the password in case the error
;; was because of a wrong password being given.
(imap-close buf)
;; We nix out the password in case the error
;; was because of a wrong password being given.