2008-06-30 Tetsurou Okazaki <okazaki@be.to>
[elisp/wanderlust.git] / elmo / elmo-imap4.el
index 91522d0..0cc8e37 100644 (file)
@@ -38,6 +38,7 @@
 ;;    Author: Simon Josefsson <jas@pdc.kth.se>
 ;;
 
+;;; Code:
 (require 'elmo-vars)
 (require 'elmo-util)
 (require 'elmo-date)
@@ -48,7 +49,6 @@
 (require 'utf7)
 (require 'elmo-mime)
 
-;;; Code:
 (eval-when-compile (require 'cl))
 
 (defvar elmo-imap4-disuse-server-flag-mailbox-regexp "^#mh" ; UW imapd
@@ -331,14 +331,14 @@ Returns a TAG string which is assigned to the COMMAND."
                          ;; rfc2088
                          (progn
                            (setq cmdstr (concat cmdstr
-                                                (format "{%d+}" (nth 2 token))))
+                                                (format "{%d+}" (nth 2 token))
+                                                "\r\n"))
                            (process-send-string process cmdstr)
-                           (process-send-string process "\r\n")
                            (setq cmdstr nil))
                        (setq cmdstr (concat cmdstr
-                                            (format "{%d}" (nth 2 token))))
+                                            (format "{%d}" (nth 2 token))
+                                            "\r\n"))
                        (process-send-string process cmdstr)
-                       (process-send-string process "\r\n")
                        (setq cmdstr nil)
                        (elmo-imap4-accept-continue-req session))
                      (cond ((stringp (nth 1 token))
@@ -356,9 +356,7 @@ Returns a TAG string which is assigned to the COMMAND."
              (t
               (error "Invalid argument")))
        (setq command-args (cdr command-args)))
-      (if cmdstr
-         (process-send-string process cmdstr))
-      (process-send-string process "\r\n")
+      (process-send-string process (concat cmdstr "\r\n"))
       tag)))
 
 (defun elmo-imap4-send-string (session string)
@@ -1604,22 +1602,23 @@ Return nil if no complete line has arrived."
        (setq status
              (cons
               (let ((token (read (current-buffer))))
-                (cond ((eq token 'MESSAGES)
-                       (list 'messages (read (current-buffer))))
-                      ((eq token 'RECENT)
-                       (list 'recent (read (current-buffer))))
-                      ((eq token 'UIDNEXT)
-                       (list 'uidnext (read (current-buffer))))
-                      ((eq token 'UIDVALIDITY)
-                       (and (looking-at " \\([0-9]+\\)")
-                            (prog1 (list 'uidvalidity (match-string 1))
-                              (goto-char (match-end 1)))))
-                      ((eq token 'UNSEEN)
-                       (list 'unseen (read (current-buffer))))
-                      (t
-                       (message
-                        "Unknown status data %s in mailbox %s ignored"
-                        token mailbox))))
+                (case (intern (upcase (symbol-name token)))
+                  (MESSAGES
+                   (list 'messages (read (current-buffer))))
+                  (RECENT
+                   (list 'recent (read (current-buffer))))
+                  (UIDNEXT
+                   (list 'uidnext (read (current-buffer))))
+                  (UIDVALIDITY
+                   (and (looking-at " \\([0-9]+\\)")
+                        (prog1 (list 'uidvalidity (match-string 1))
+                          (goto-char (match-end 1)))))
+                  (UNSEEN
+                   (list 'unseen (read (current-buffer))))
+                  (t 
+                   (message
+                    "Unknown status data %s in mailbox %s ignored"
+                    token mailbox))))
               status))
        (skip-chars-forward " ")))
     (and elmo-imap4-status-callback
@@ -2225,12 +2224,12 @@ If optional argument REMOVE is non-nil, remove FLAG."
      ((string= "last" search-key)
       (let ((numbers (or from-msgs (elmo-folder-list-messages folder))))
        (nthcdr (max (- (length numbers)
-                       (string-to-int (elmo-filter-value filter)))
+                       (string-to-number (elmo-filter-value filter)))
                     0)
                numbers)))
      ((string= "first" search-key)
       (let* ((numbers (or from-msgs (elmo-folder-list-messages folder)))
-            (rest (nthcdr (string-to-int (elmo-filter-value filter) )
+            (rest (nthcdr (string-to-number (elmo-filter-value filter) )
                           numbers)))
        (mapcar '(lambda (x) (delete x numbers)) rest)
        numbers))