(require 'sasl))
(error))
(defun-maybe sasl-cram-md5 (username passphrase challenge))
- (defun-maybe sasl-digest-md5-digest-response
+ (defun-maybe sasl-digest-md5-digest-response
(digest-challenge username passwd serv-type host &optional realm))
- (defun-maybe starttls-negotiate (a))
+ (defun-maybe starttls-negotiate (a))
(defun-maybe elmo-generic-list-folder-unread (spec mark-alist unread-marks))
(defsubst-maybe utf7-decode-string (string &optional imap) string))
(defvar elmo-imap4-lock nil)
-;; For debugging.
+;; For debugging.
(defvar elmo-imap4-debug nil
- "Non-nil forces IMAP4 folder as debug mode.
+ "Non-nil forces IMAP4 folder as debug mode.
Debug information is inserted in the buffer \"*IMAP4 DEBUG*\"")
(defsubst elmo-imap4-debug (message &rest args)
(insert string)
(goto-char (point-min))
;; XXX This doesn't consider literal name response.
- (while (re-search-forward
+ (while (re-search-forward
"\\* LIST (\\([^)]*\\)) \"[^\"]*\" \\([^\n]*\\)$" nil t)
(unless (string-match "noselect"
(elmo-match-buffer 1))
(setq val (elmo-match-buffer 2))
(if (string-match "^\"\\(.*\\)\"$" val)
- (setq val (match-string 1 val)))
- (setq mailbox-list
- (append mailbox-list
+ (setq val (match-string 1 val)))
+ (setq mailbox-list
+ (append mailbox-list
(list val)))))
mailbox-list)))
;; Append delimiter
(if (and root
(not (string= root ""))
- (not (string-match (concat "\\(.*\\)"
+ (not (string-match (concat "\\(.*\\)"
(regexp-quote delim)
"\\'")
root)))
(setq root (concat root delim)))
- (elmo-imap4-send-command (process-buffer process)
+ (elmo-imap4-send-command (process-buffer process)
process
(format "list \"%s\" *" root))
(setq response (elmo-imap4-read-response (process-buffer process)
(unless (string= (elmo-imap4-spec-username spec)
elmo-default-imap4-user)
(setq append-serv (concat ":" (elmo-imap4-spec-username spec))))
- (unless (string= (elmo-imap4-spec-hostname spec)
+ (unless (string= (elmo-imap4-spec-hostname spec)
elmo-default-imap4-server)
(setq append-serv (concat append-serv "@" (elmo-imap4-spec-hostname
spec))))
(unless (eq (elmo-imap4-spec-port spec)
elmo-default-imap4-port)
- (setq append-serv (concat append-serv ":"
- (int-to-string
+ (setq append-serv (concat append-serv ":"
+ (int-to-string
(elmo-imap4-spec-port spec)))))
(unless (eq (setq ssl (elmo-imap4-spec-ssl spec))
elmo-default-imap4-ssl)
(setq append-serv (concat append-serv "!"))))
(mapcar '(lambda (fld)
(concat "%" (elmo-imap4-decode-folder-string fld)
- (and append-serv
+ (and append-serv
(eval append-serv))))
result))))
(elmo-imap4-spec-folder spec)))
(setq response (elmo-imap4-read-response (process-buffer process)
process))
- (when (and response (string-match
+ (when (and response (string-match
"\\* STATUS [^(]* \\(([^)]*)\\)" response))
(setq response (read (downcase (elmo-match-string 1 response))))
(cons (- (cadr (memq 'uidnext response)) 1)
user-at-host-on-port)
(if (not (elmo-plugged-p server port))
(error "Unplugged"))
- (setq user-at-host-on-port
+ (setq user-at-host-on-port
(concat user-at-host ":" (int-to-string port)
(if (eq ssl 'starttls) "!!" (if ssl "!"))))
(setq ret-val (assoc user-at-host-on-port
elmo-imap4-connection-cache))
- (if (and ret-val
- (or (eq (setq proc-stat
- (process-status (cadr (cdr ret-val))))
+ (if (and ret-val
+ (or (eq (setq proc-stat
+ (process-status (cadr (cdr ret-val))))
'closed)
(eq proc-stat 'exit)))
;; connection is closed...
(progn
(kill-buffer (car (cdr ret-val)))
- (setq elmo-imap4-connection-cache
+ (setq elmo-imap4-connection-cache
(delete ret-val elmo-imap4-connection-cache))
(setq ret-val nil)))
(if ret-val
- (progn
+ (progn
(setq ret-val (cdr ret-val)) ;; connection cache exists.
ret-val)
(setq result
(elmo-remove-passwd user-at-host)
(delete-process process)
(error "Login failed"))
- (setq elmo-imap4-connection-cache
- (append elmo-imap4-connection-cache
- (list
+ (setq elmo-imap4-connection-cache
+ (append elmo-imap4-connection-cache
+ (list
(cons user-at-host-on-port
- (setq ret-val (list buffer process
+ (setq ret-val (list buffer process
""; current-folder..
))))))
ret-val)))
(defun elmo-imap4-process-filter (process output)
- (save-match-data
+ (save-match-data
(with-current-buffer (process-buffer process)
(goto-char (point-max))
(insert output)
(forward-line -1)
(beginning-of-line)
- (if (looking-at (concat
- "\\(^"
- elmo-imap4-seq-prefix
+ (if (looking-at (concat
+ "\\(^"
+ elmo-imap4-seq-prefix
(int-to-string elmo-imap4-seqno)
"\\|^\\* OK\\|^\\* BYE\\'\\|^\\+\\)[^\n]*\n\\'"))
(progn
(setq response-string
(buffer-substring elmo-imap4-read-point (- match-end 2)))
(goto-char elmo-imap4-read-point)
- (if (looking-at (format "%s[0-9]+ OK.*$\\|\\+.*$"
+ (if (looking-at (format "%s[0-9]+ OK.*$\\|\\+.*$"
elmo-imap4-seq-prefix))
(progn (setq response-continue nil)
(setq elmo-imap4-read-point match-end)
- (setq return-value
- (if return-value
+ (setq return-value
+ (if return-value
(concat return-value "\n" response-string)
response-string)))
- (if (looking-at (format "\\(. BYE.*\\|%s[0-9]+ \\(NO\\|BAD\\).*\\)$"
+ (if (looking-at (format "\\(. BYE.*\\|%s[0-9]+ \\(NO\\|BAD\\).*\\)$"
elmo-imap4-seq-prefix))
(progn (setq response-continue nil)
(setq elmo-imap4-read-point match-end)
(setq elmo-imap4-read-point match-end)
(if not-command
(setq response-continue nil))
- (setq return-value
- (if return-value
+ (setq return-value
+ (if return-value
(concat return-value "\n" response-string)
response-string)))
(setq elmo-imap4-read-point match-end)))
(response-string nil)
match-end)
(goto-char elmo-imap4-read-point)
- (while (not (re-search-forward
- (format "%s[0-9]+ \\(NO\\|BAD\\|OK\\).*$"
+ (while (not (re-search-forward
+ (format "%s[0-9]+ \\(NO\\|BAD\\|OK\\).*$"
elmo-imap4-seq-prefix)
nil t))
(accept-process-output process)
(goto-char elmo-imap4-read-point))
(beginning-of-line)
(setq match-end (point))
- (setq response-string (buffer-substring
+ (setq response-string (buffer-substring
elmo-imap4-read-point match-end))
(if (eq (length response-string) 0)
nil
(with-current-buffer buffer
(setq start elmo-imap4-read-point)
(while (< (point-max) (+ start bytes))
- (accept-process-output process))
+ (accept-process-output process))
(with-current-buffer outbuf
(erase-buffer)
(insert-buffer-substring buffer start (+ start bytes))
(let ((buffer (car connection))
(process (cadr connection)))
(save-excursion
- (elmo-imap4-send-command buffer
+ (elmo-imap4-send-command buffer
process "noop")
(elmo-imap4-read-response buffer process))))
(let ((connection (elmo-imap4-get-connection spec))
response ret-val beg end)
(and (not (null (elmo-imap4-spec-folder spec)))
- (if (not (string= (elmo-imap4-connection-get-cwf connection)
+ (if (not (string= (elmo-imap4-connection-get-cwf connection)
(elmo-imap4-spec-folder spec)))
- (if (null (setq response
- (elmo-imap4-select-folder
+ (if (null (setq response
+ (elmo-imap4-select-folder
(elmo-imap4-spec-folder spec)
connection)))
(error "Select folder failed"))
(if elmo-imap4-use-select-to-update-status
- (elmo-imap4-select-folder
+ (elmo-imap4-select-folder
(elmo-imap4-spec-folder spec)
- connection)
+ connection)
(elmo-imap4-check connection)))))))
(defun elmo-imap4-check (connection)
(let ((process (elmo-imap4-connection-get-process connection)))
(save-excursion
- (elmo-imap4-send-command (process-buffer process)
+ (elmo-imap4-send-command (process-buffer process)
process "check")
(elmo-imap4-read-response (process-buffer process) process))))
(unwind-protect
(progn
(elmo-imap4-send-command (process-buffer process)
- process (format "select \"%s\""
+ process (format "select \"%s\""
folder))
- (setq response (elmo-imap4-read-response
+ (setq response (elmo-imap4-read-response
(process-buffer process) process)))
(if (null response)
(progn
response)
(save-excursion
(elmo-imap4-send-command (process-buffer process)
- process
- (format "status \"%s\" (uidvalidity)"
+ process
+ (format "status \"%s\" (uidvalidity)"
(elmo-imap4-spec-folder spec)))
- (setq response (elmo-imap4-read-response
+ (setq response (elmo-imap4-read-response
(process-buffer process) process))
(if (string-match "UIDVALIDITY \\([0-9]+\\)" response)
(string= (elmo-get-file-string validity-file)
response)
(save-excursion
(elmo-imap4-send-command (process-buffer process)
- process
- (format "status \"%s\" (uidvalidity)"
+ process
+ (format "status \"%s\" (uidvalidity)"
(elmo-imap4-spec-folder spec)))
- (setq response (elmo-imap4-read-response
+ (setq response (elmo-imap4-read-response
(process-buffer process) process))
(if (string-match "UIDVALIDITY \\([0-9]+\\)" response)
(progn
(and (elmo-imap4-spec-folder spec)
(if (not (string= (elmo-imap4-connection-get-cwf connection)
(elmo-imap4-spec-folder spec)))
- (if (null (setq response
- (elmo-imap4-select-folder
+ (if (null (setq response
+ (elmo-imap4-select-folder
(elmo-imap4-spec-folder spec)
connection)))
(error "Select folder failed"))
;; for status update.
(if elmo-imap4-use-select-to-update-status
- (elmo-imap4-select-folder (elmo-imap4-spec-folder spec)
+ (elmo-imap4-select-folder (elmo-imap4-spec-folder spec)
connection)
(unless (elmo-imap4-check connection)
;; Check failed...not selected??
- (elmo-imap4-select-folder (elmo-imap4-spec-folder spec)
+ (elmo-imap4-select-folder (elmo-imap4-spec-folder spec)
connection)))))
(elmo-imap4-send-command (process-buffer process)
process
- (format (if elmo-imap4-use-uid
+ (format (if elmo-imap4-use-uid
"uid search %s"
"search %s") str))
(setq response (elmo-imap4-read-response (process-buffer process)
(if (string-match "\n" response)
(progn
(setq end (match-end 0))
- (setq ret-val (read (concat "(" (substring
- response
+ (setq ret-val (read (concat "(" (substring
+ response
0 end) ")"))))
(error "SEARCH failed"))))
ret-val)))
(string= "before" search-key))
(setq search-key (concat "sent" search-key))
(elmo-imap4-send-command buffer process
- (format
+ (format
(if elmo-imap4-use-uid
- "uid search %s %s"
+ "uid search %s %s"
" search %s %s")
search-key
(elmo-date-get-description
- (elmo-date-get-datevec
+ (elmo-date-get-datevec
(elmo-filter-value filter))))))
(t
- (setq word (encode-mime-charset-string (elmo-filter-value filter)
+ (setq word (encode-mime-charset-string (elmo-filter-value filter)
elmo-search-mime-charset))
- (elmo-imap4-send-command buffer process
- (format
+ (elmo-imap4-send-command buffer process
+ (format
(if elmo-imap4-use-uid
- "uid search CHARSET %s%s %s {%d}"
+ "uid search CHARSET %s%s %s {%d}"
" search CHARSET %s%s %s {%d}")
(symbol-name elmo-search-mime-charset)
(if (eq (elmo-filter-type filter) 'unmatch)
(if (and (elmo-imap4-spec-folder spec)
(not (string= (elmo-imap4-connection-get-cwf connection)
(elmo-imap4-spec-folder spec)))
- (null (elmo-imap4-select-folder
+ (null (elmo-imap4-select-folder
(elmo-imap4-spec-folder spec) connection)))
(error "Select folder failed"))
(while condition
(setq ret-val (nconc ret-val response))
(setq condition (cdr condition)))
(if from-msgs
- (elmo-list-filter
+ (elmo-list-filter
from-msgs
(elmo-uniq-list (sort ret-val '<)))
(elmo-uniq-list (sort ret-val '<))))))
(t
(concat mbox "@" host))))
-(static-cond
+(static-cond
((fboundp 'float)
;; Emacs can parse dot symbol.
(defvar elmo-imap4-rfc822-size "RFC822\.SIZE")
(defvar elmo-imap4-header-fields "HEADER\.FIELDS")
(defmacro elmo-imap4-replace-dot-symbols ()) ;; noop
)
- (t
+ (t
;; Cannot parse dot symbol, replace it.
(defvar elmo-imap4-rfc822-size "RFC822_SIZE")
(defvar elmo-imap4-header-fields "HEADER_FIELDS")
(goto-char (point-min))
(while (re-search-forward "{\\([0-9]+\\)}\r\n" nil t)
(let (str)
- (goto-char (+ (point)
+ (goto-char (+ (point)
(string-to-int (elmo-match-buffer 1))))
- (setq str (save-match-data
- (elmo-replace-in-string
+ (setq str (save-match-data
+ (elmo-replace-in-string
(buffer-substring (match-end 0) (point))
"\r" "")))
(delete-region (match-beginning 0) (point))
(insert string)
(goto-char (point-min))
(setq beg (point))
- (if (re-search-forward "^\* \\([0-9]+\\) FETCH"
+ (if (re-search-forward "^\* \\([0-9]+\\) FETCH"
nil t)
(progn
(setq beg (point))
(unless elmo-imap4-use-uid
(setq number (string-to-int (elmo-match-buffer 1))))
- (while (re-search-forward
- "^\* \\([0-9]+\\) FETCH"
+ (while (re-search-forward
+ "^\* \\([0-9]+\\) FETCH"
nil t)
(setq attr (elmo-imap4-make-attributes-object
(buffer-substring beg (match-beginning 0))))
((eq sym 'BODY)
(setq extra-fields (elmo-collect-field-from-string value t)))
((eq sym 'ENVELOPE)
- ;; According to rfc2060,
+ ;; According to rfc2060,
;; 0 date, 1 subject, 2 from, 3 sender,
;; 4 reply-to, 5 to, 6 cc, 7 bcc, 8 in-reply-to, 9 message-id.
(setq date-string (elmo-imap4-nth 0 value))
(and (or (elmo-imap4-nth 0 from-list)
(elmo-imap4-nth 2 from-list)
(elmo-imap4-nth 3 from-list))
- (elmo-delete-char
+ (elmo-delete-char
?\"
(elmo-imap4-make-address
(elmo-imap4-nth 0 from-list)
(elmo-imap4-nth 0 cc)
(elmo-imap4-nth 2 cc)
(elmo-imap4-nth 3 cc)))
- (elmo-imap4-nth 6 value) ","))
+ (elmo-imap4-nth 6 value) ","))
(setq reference (elmo-msgdb-get-last-message-id
(elmo-imap4-nth 8 value)))
(setq message-id (elmo-imap4-nth 9 value)))))
entity found)
(while (and elist (not found))
(setq entity (car elist))
- (cond
+ (cond
((and (consp entity)
(eq (+ 1 (cdr entity)) msg))
(setcdr entity msg)
(setcar elist (cons entity msg))
(setq found t))
((or (and (integerp entity) (eq entity msg))
- (and (consp entity)
+ (and (consp entity)
(<= (car entity) msg)
(<= msg (cdr entity)))) ; included
(setq found t))); noop
(setq chop-length (length msg-list)))
(while (and (not (null msg-list))
(< count chop-length))
- (setq cont-list
- (elmo-imap4-add-to-cont-list
+ (setq cont-list
+ (elmo-imap4-add-to-cont-list
cont-list (car msg-list)))
(incf count)
(setq msg-list (cdr msg-list)))
- (setq set-list
+ (setq set-list
(cons
(cons
count
(if (and (elmo-imap4-spec-folder spec)
(not (string= (elmo-imap4-connection-get-cwf connection)
(elmo-imap4-spec-folder spec)))
- (null (elmo-imap4-select-folder
+ (null (elmo-imap4-select-folder
(elmo-imap4-spec-folder spec) connection)))
(error "Select folder failed"))
(setq set-list (elmo-imap4-make-number-set-list msg-list))
(when set-list
(elmo-imap4-send-command (process-buffer process)
process
- (format
- (if elmo-imap4-use-uid
+ (format
+ (if elmo-imap4-use-uid
"uid store %s %sflags.silent (%s)"
"store %s %sflags.silent (%s)")
(cdr (car set-list))
(unless (elmo-imap4-read-response (process-buffer process) process)
(error "Store %s flag failed" mark))
(unless no-expunge
- (elmo-imap4-send-command
+ (elmo-imap4-send-command
(process-buffer process) process "expunge")
(unless (elmo-imap4-read-response (process-buffer process) process)
(error "Expunge failed"))))
(defun elmo-imap4-unmark-important (spec msgs)
(and (elmo-imap4-use-flag-p spec)
- (elmo-imap4-mark-set-on-msgs spec msgs "\\Flagged" 'unmark
+ (elmo-imap4-mark-set-on-msgs spec msgs "\\Flagged" 'unmark
'no-expunge)))
(defun elmo-imap4-mark-as-unread (spec msgs)
(defun elmo-imap4-delete-msgs-no-expunge (spec msgs)
(elmo-imap4-mark-set-on-msgs spec msgs "\\Deleted" nil 'no-expunge))
-(defun elmo-imap4-msgdb-create-as-numlist (spec numlist new-mark already-mark
- seen-mark important-mark
+(defun elmo-imap4-msgdb-create-as-numlist (spec numlist new-mark already-mark
+ seen-mark important-mark
seen-list)
"Create msgdb for SPEC for NUMLIST."
(elmo-imap4-msgdb-create spec numlist new-mark already-mark
seen-mark important-mark seen-list t))
-(defun elmo-imap4-msgdb-create (spec numlist new-mark already-mark seen-mark
+(defun elmo-imap4-msgdb-create (spec numlist new-mark already-mark seen-mark
important-mark seen-list &optional as-num)
"Create msgdb for SPEC."
(when numlist
(error "No IMAP4 capability!!")))))
(setq count 0)
(setq length (length numlist))
- (setq set-list (elmo-imap4-make-number-set-list
+ (setq set-list (elmo-imap4-make-number-set-list
numlist
elmo-imap4-overview-fetch-chop-length))
(message "Getting overview...")
(if (and (elmo-imap4-spec-folder spec)
(not (string= (elmo-imap4-connection-get-cwf connection)
(elmo-imap4-spec-folder spec)))
- (null (elmo-imap4-select-folder
+ (null (elmo-imap4-select-folder
(elmo-imap4-spec-folder spec) connection)))
- (error "Select imap folder %s failed"
+ (error "Select imap folder %s failed"
(elmo-imap4-spec-folder spec)))
(while set-list
- (elmo-imap4-send-command
+ (elmo-imap4-send-command
(process-buffer process)
process
;; get overview entity from IMAP4
- (format
+ (format
(if rfc2060
(concat
(if elmo-imap4-use-uid "uid " "")
(with-current-buffer (process-buffer process)
(if ov-str
(setq ret-val
- (elmo-msgdb-append
+ (elmo-msgdb-append
ret-val
- (elmo-imap4-create-msgdb-from-overview-string
+ (elmo-imap4-create-msgdb-from-overview-string
ov-str
(elmo-imap4-spec-folder spec)
new-mark already-mark seen-mark important-mark
(setq ov-str (elmo-imap4-read-contents (process-buffer process)
process))
(elmo-display-progress
- 'elmo-imap4-msgdb-create "Getting overview..."
+ 'elmo-imap4-msgdb-create "Getting overview..."
(/ (* count 100) length))
(setq set-list (cdr set-list)))
;; process last one.
(with-current-buffer (process-buffer process)
(if ov-str
(setq ret-val
- (elmo-msgdb-append
+ (elmo-msgdb-append
ret-val
- (elmo-imap4-create-msgdb-from-overview-string
- ov-str
+ (elmo-imap4-create-msgdb-from-overview-string
+ ov-str
(elmo-imap4-spec-folder spec)
new-mark already-mark seen-mark important-mark
seen-list filter)))))
(setq prefix (elmo-imap4-nth 0 (car cur)))
(setq delim (elmo-imap4-nth 1 (car cur)))
(if (and prefix delim
- (string-match (concat "\\(.*\\)"
+ (string-match (concat "\\(.*\\)"
(regexp-quote delim)
"\\'")
prefix))
(length (car y))))))))
(defun elmo-imap4-open-connection (imap4-server user auth port passphrase ssl)
- "Open Imap connection and returns
+ "Open Imap connection and returns
the list of (process session-buffer current-working-folder).
Return nil if connection failed."
(let ((process nil)
(get-buffer-create (format " *IMAP session to %s:%d" host port)))
(save-excursion
(set-buffer process-buffer)
- (elmo-set-buffer-multibyte nil)
+ (elmo-set-buffer-multibyte nil)
(make-variable-buffer-local 'elmo-imap4-server-capability)
(make-variable-buffer-local 'elmo-imap4-lock)
(erase-buffer))
(setq response
(elmo-imap4-read-response process-buffer process)))
- (string-match
- (concat "^\\(" elmo-imap4-seq-prefix
+ (string-match
+ (concat "^\\(" elmo-imap4-seq-prefix
(int-to-string elmo-imap4-seqno)
"\\|\\*\\) OK")
response))
(and (string= "digest-md5" auth)
(not (memq 'auth=digest-md5 capability))))
(if (or elmo-imap4-force-login
- (y-or-n-p
- (format
+ (y-or-n-p
+ (format
"There's no %s capability in server. continue?" auth)))
(setq auth "login")
(error "Login aborted")))
- (cond
+ (cond
((string= "auth" auth)
(elmo-imap4-send-command
process-buffer process "authenticate login" 'no-lock)
- ;; Base64
+ ;; Base64
(when (null (elmo-imap4-read-response process-buffer process t))
(setq ret-val (cons nil process))
(throw 'done nil))
(throw 'done nil))
(setq ret-val (cons process-buffer process)))
((string= "cram-md5" auth)
- (elmo-imap4-send-command
+ (elmo-imap4-send-command
process-buffer process "authenticate cram-md5" 'no-lock)
- (when (null (setq response
- (elmo-imap4-read-response
+ (when (null (setq response
+ (elmo-imap4-read-response
process-buffer process t)))
(setq ret-val (cons nil process))
(throw 'done nil))
(setq response (cadr (split-string response " ")))
(elmo-imap4-send-string
- process-buffer process
+ process-buffer process
(elmo-base64-encode-string
- (sasl-cram-md5 user passphrase
+ (sasl-cram-md5 user passphrase
(elmo-base64-decode-string response))))
(when (null (elmo-imap4-read-response process-buffer process))
(setq ret-val (cons nil process))
(throw 'done nil))
(setq ret-val (cons process-buffer process)))
((string= "digest-md5" auth)
- (elmo-imap4-send-command
+ (elmo-imap4-send-command
process-buffer process "authenticate digest-md5" 'no-lock)
(when (null (setq response
- (elmo-imap4-read-response
+ (elmo-imap4-read-response
process-buffer process t)))
(setq ret-val (cons nil process))
(throw 'done nil))
(throw 'done nil))
(setq ret-val (cons process-buffer process)))
(t ;; not auth... try login
- (elmo-imap4-send-command
- process-buffer process
- (format "login %s \"%s\"" user
+ (elmo-imap4-send-command
+ process-buffer process
+ (format "login %s \"%s\"" user
(elmo-replace-in-string passphrase
- "\"" "\\\\\""))
+ "\"" "\\\\\""))
nil 'no-log) ;; No LOGGING.
(if (null (elmo-imap4-read-response process-buffer process))
(setq ret-val (cons nil process))
(elmo-set-buffer-multibyte nil)
(insert string)
(goto-char (point-min))
- (if (eq (re-search-forward "^$" nil t)
+ (if (eq (re-search-forward "^$" nil t)
(point-max))
(insert "\n"))
(goto-char (point-min))
(elmo-imap4-debug "lock(%d): (No-logging command)." (+ elmo-imap4-seqno 1))
(elmo-imap4-debug "lock(%d): %s" (+ elmo-imap4-seqno 1) command))
(setq elmo-imap4-lock t))
- (process-send-string process (concat (format "%s%d "
- elmo-imap4-seq-prefix
+ (process-send-string process (concat (format "%s%d "
+ elmo-imap4-seq-prefix
(elmo-imap4-get-seqno))
command))
(process-send-string process "\r\n")))
(when (elmo-imap4-spec-folder spec)
(when (not (string= (elmo-imap4-connection-get-cwf connection)
(elmo-imap4-spec-folder spec)))
- (if (null (setq response
- (elmo-imap4-select-folder
+ (if (null (setq response
+ (elmo-imap4-select-folder
(elmo-imap4-spec-folder spec) connection)))
(error "Select folder failed")))
(elmo-imap4-send-command (process-buffer process)
process
- (format
- (if elmo-imap4-use-uid
+ (format
+ (if elmo-imap4-use-uid
"uid fetch %s body.peek[%s]"
"fetch %s body.peek[%s]")
msg part))
- (if (null (setq response (elmo-imap4-read-response
- (process-buffer process)
+ (if (null (setq response (elmo-imap4-read-response
+ (process-buffer process)
process t)))
(error "Fetch failed"))
(save-match-data
(while (string-match "^\\* OK" response)
- (if (null (setq response (elmo-imap4-read-response
- (process-buffer process)
+ (if (null (setq response (elmo-imap4-read-response
+ (process-buffer process)
process t)))
(error "Fetch failed"))))
(save-match-data
(string-to-int
(elmo-match-string 1 response)))
(error "Fetch failed")))
- (if (null (setq response (elmo-imap4-read-bytes
+ (if (null (setq response (elmo-imap4-read-bytes
(process-buffer process) process bytes)))
(error "Fetch message failed"))
(setq ret-val response)
(defun elmo-imap4-prefetch-msg (spec msg outbuf)
(elmo-imap4-read-msg spec msg outbuf 'unseen))
-(defun elmo-imap4-read-msg (spec msg outbuf
+(defun elmo-imap4-read-msg (spec msg outbuf
&optional leave-seen-flag-untouched)
(save-excursion
(let* ((connection (elmo-imap4-get-connection spec))
(when (elmo-imap4-spec-folder spec)
(when (not (string= (elmo-imap4-connection-get-cwf connection)
(elmo-imap4-spec-folder spec)))
- (if (null (setq response
- (elmo-imap4-select-folder
- (elmo-imap4-spec-folder spec)
+ (if (null (setq response
+ (elmo-imap4-select-folder
+ (elmo-imap4-spec-folder spec)
connection)))
(error "Select folder failed")))
(elmo-imap4-send-command (process-buffer process)
process
- (format
- (if elmo-imap4-use-uid
- "uid fetch %s body%s[]"
+ (format
+ (if elmo-imap4-use-uid
+ "uid fetch %s body%s[]"
"fetch %s body%s[]")
msg
(if leave-seen-flag-untouched
".peek" "")))
- (if (null (setq response (elmo-imap4-read-response
+ (if (null (setq response (elmo-imap4-read-response
(process-buffer process)
process t)))
(error "Fetch failed"))
(save-match-data
(while (string-match "^\\* OK" response)
- (if (null (setq response (elmo-imap4-read-response
- (process-buffer process)
+ (if (null (setq response (elmo-imap4-read-response
+ (process-buffer process)
process t)))
(error "Fetch failed"))))
(save-match-data
(string-to-int
(elmo-match-string 1 response)))
(error "Fetch failed")))
- (setq ret-val (elmo-imap4-read-body
- (process-buffer process)
+ (setq ret-val (elmo-imap4-read-body
+ (process-buffer process)
process bytes outbuf))
- (elmo-imap4-read-response (process-buffer process)
+ (elmo-imap4-read-response (process-buffer process)
process)) ;; ignore remaining..
)
ret-val)))
(defun elmo-imap4-setup-send-buffer-from-file (file)
- (let ((tmp-buf (get-buffer-create
+ (let ((tmp-buf (get-buffer-create
" *elmo-imap4-setup-send-buffer-from-file*")))
(save-excursion
(save-match-data
(as-binary-input-file
(insert-file-contents file))
(goto-char (point-min))
- (if (eq (re-search-forward "^$" nil t)
+ (if (eq (re-search-forward "^$" nil t)
(point-max))
- (insert "\n"))
+ (insert "\n"))
(goto-char (point-min))
(while (search-forward "\n" nil t)
(replace-match "\r\n"))))
(setq message-ids (cdr message-ids)))
(let* ((connection (elmo-imap4-get-connection spec))
(process (elmo-imap4-connection-get-process connection)))
- (elmo-imap4-send-command (process-buffer process)
+ (elmo-imap4-send-command (process-buffer process)
process "expunge")
(if (null (elmo-imap4-read-response (process-buffer process)
process))
(if (and (elmo-imap4-spec-folder spec)
(not (string= (elmo-imap4-connection-get-cwf connection)
(elmo-imap4-spec-folder spec)))
- (null (elmo-imap4-select-folder
- (elmo-imap4-spec-folder spec)
+ (null (elmo-imap4-select-folder
+ (elmo-imap4-spec-folder spec)
connection)))
(error "Select folder failed"))
(save-excursion
(elmo-imap4-send-command (process-buffer process)
process
- (format
- (if elmo-imap4-use-uid
+ (format
+ (if elmo-imap4-use-uid
"uid search header message-id \"%s\""
"search header message-id \"%s\"")
msgid))
- (setq response (elmo-imap4-read-response
+ (setq response (elmo-imap4-read-response
(process-buffer process) process))
- (if (and response
+ (if (and response
(string-match "^\\* SEARCH\\([^\n]*\\)$" response))
(setq msgs (read (concat "(" (elmo-match-string 1 response) ")")))
(error "SEARCH failed"))
(if (and (elmo-imap4-spec-folder spec)
(not (string= (elmo-imap4-connection-get-cwf connection)
(elmo-imap4-spec-folder spec)))
- (null (elmo-imap4-select-folder
+ (null (elmo-imap4-select-folder
(elmo-imap4-spec-folder spec) connection)))
(error "Select folder failed"))
(save-excursion
- (setq send-buf (elmo-imap4-setup-send-buffer-from-file
+ (setq send-buf (elmo-imap4-setup-send-buffer-from-file
(elmo-cache-get-path msgid)))
(set-buffer send-buf)
(elmo-imap4-send-command (process-buffer process)
(elmo-imap4-send-command (process-buffer process)
process
(format
- (if elmo-imap4-use-uid
- "uid copy %s %s"
+ (if elmo-imap4-use-uid
+ "uid copy %s %s"
"copy %s %s")
(car mlist) dst-folder))
(if (null (elmo-imap4-read-response (process-buffer process)
(error "Copy failed")
(setq mlist (cdr mlist))))
(when expunge-it
- (elmo-imap4-send-command (process-buffer process)
+ (elmo-imap4-send-command (process-buffer process)
process "expunge")
(if (null (elmo-imap4-read-response (process-buffer process)
process))
(format
"status \"%s\" (unseen messages)"
(elmo-imap4-spec-folder spec)))
- (setq response (elmo-imap4-read-response
+ (setq response (elmo-imap4-read-response
(process-buffer process) process))
(when (string-match "\\* STATUS [^(]* \\(([^)]*)\\)" response)
(setq response (read (downcase (elmo-match-string 1 response))))