* elmo.el (elmo-message-fetch-with-cache-process): Fixed typo.
[elisp/wanderlust.git] / elmo / elmo-util.el
index 502d5dd..fe62464 100644 (file)
@@ -390,7 +390,7 @@ Return value is a cons cell of (STRUCTURE . REST)"
 (defun elmo-passwd-alist-load ()
   (save-excursion
     (let ((filename (expand-file-name elmo-passwd-alist-file-name
-                                     elmo-msgdb-dir))
+                                     elmo-msgdb-directory))
          (tmp-buffer (get-buffer-create " *elmo-passwd-alist-tmp*"))
          insert-file-contents-pre-hook ; To avoid autoconv-xmas...
          insert-file-contents-post-hook
@@ -416,7 +416,7 @@ Return value is a cons cell of (STRUCTURE . REST)"
   (interactive)
   (save-excursion
     (let ((filename (expand-file-name elmo-passwd-alist-file-name
-                                     elmo-msgdb-dir))
+                                     elmo-msgdb-directory))
          (tmp-buffer (get-buffer-create " *elmo-passwd-alist-tmp*")))
       (set-buffer tmp-buffer)
       (erase-buffer)
@@ -711,7 +711,7 @@ Return value is a cons cell of (STRUCTURE . REST)"
     (if (null (file-directory-p parent))
        (elmo-make-directory parent))
     (make-directory path)
-    (if (string= path (expand-file-name elmo-msgdb-dir))
+    (if (string= path (expand-file-name elmo-msgdb-directory))
        (set-file-modes path (+ (* 64 7) (* 8 0) 0))))) ; chmod 0700
 
 (defun elmo-delete-directory (path &optional no-hierarchy)
@@ -816,29 +816,26 @@ Return value is a cons cell of (STRUCTURE . REST)"
                         (length (memq number number-list)))
                      (string-to-int (elmo-filter-value condition)))))
      ((string= (elmo-filter-key condition) "since")
-      (let ((date (elmo-date-get-datevec (elmo-filter-value condition))))
+      (let ((field-date (elmo-date-make-sortable-string
+                        (timezone-fix-time
+                         (std11-field-body "date")
+                         (current-time-zone) nil)))
+           (specified-date (elmo-date-make-sortable-string
+                            (elmo-date-get-datevec
+                             (elmo-filter-value condition)))))
        (setq result
-             (string<
-              (timezone-make-sortable-date (aref date 0)
-                                           (aref date 1)
-                                           (aref date 2)
-                                           (timezone-make-time-string
-                                            (aref date 3)
-                                            (aref date 4)
-                                            (aref date 5)))
-              (timezone-make-date-sortable (std11-field-body "date"))))))
+             (or (string= field-date specified-date)
+                 (string< specified-date field-date)))))
      ((string= (elmo-filter-key condition) "before")
-      (let ((date (elmo-date-get-datevec (elmo-filter-value condition))))
-       (setq result
-             (string<
-              (timezone-make-date-sortable (std11-field-body "date"))
-              (timezone-make-sortable-date (aref date 0)
-                                           (aref date 1)
-                                           (aref date 2)
-                                           (timezone-make-time-string
-                                            (aref date 3)
-                                            (aref date 4)
-                                            (aref date 5)))))))
+      (setq result
+           (string<
+            (elmo-date-make-sortable-string
+             (timezone-fix-time
+              (std11-field-body "date")
+              (current-time-zone) nil))
+            (elmo-date-make-sortable-string
+             (elmo-date-get-datevec
+              (elmo-filter-value condition))))))
      ((string= (elmo-filter-key condition) "body")
       (and (re-search-forward "^$" nil t)         ; goto body
           (setq result (search-forward (elmo-filter-value condition)
@@ -897,11 +894,15 @@ Return value is a cons cell of (STRUCTURE . REST)"
     (cond
      ((string= (elmo-filter-key condition) "last")
       (setq result (<= (length (memq number number-list))
-                      (string-to-int (elmo-filter-value condition)))))
+                      (string-to-int (elmo-filter-value condition))))
+      (if (eq (elmo-filter-type condition) 'unmatch)
+         (setq result (not result))))
      ((string= (elmo-filter-key condition) "first")
       (setq result (< (- (length number-list)
                         (length (memq number number-list)))
-                     (string-to-int (elmo-filter-value condition)))))
+                     (string-to-int (elmo-filter-value condition))))
+      (if (eq (elmo-filter-type condition) 'unmatch)
+         (setq result (not result))))
      (t
       (elmo-set-work-buf
        (as-binary-input-file (insert-file-contents file))
@@ -911,8 +912,6 @@ Return value is a cons cell of (STRUCTURE . REST)"
        (setq result
             (elmo-buffer-field-primitive-condition-match
              condition number number-list)))))
-    (if (eq (elmo-filter-type condition) 'unmatch)
-       (setq result (not result)))
     result))
 
 (defun elmo-file-field-condition-match (file condition number number-list)
@@ -1174,7 +1173,9 @@ the value of `foo'."
 (defun elmo-progress-clear (label)
   (let ((counter (assq label elmo-progress-counter-alist)))
     (when counter
-      (elmo-display-progress label "" 100)
+      (elmo-display-progress label
+                            (elmo-progress-counter-format counter)
+                            100)
       (setq elmo-progress-counter-alist
            (delq counter elmo-progress-counter-alist)))))
 
@@ -1547,15 +1548,13 @@ If optional argument SECTION is specified, partial cache path is returned."
   (if (setq msgid (elmo-msgid-to-cache msgid))
       (expand-file-name
        (if section
-          (format "%s/%s/%s/%s/%s"
-                  elmo-msgdb-dir
-                  elmo-cache-dirname
+          (format "%s/%s/%s/%s"
+                  elmo-cache-directory
                   (elmo-cache-get-path-subr msgid)
                   msgid
                   section)
-        (format "%s/%s/%s/%s"
-                elmo-msgdb-dir
-                elmo-cache-dirname
+        (format "%s/%s/%s"
+                elmo-cache-directory
                 (elmo-cache-get-path-subr msgid)
                 msgid)))))
 
@@ -1610,6 +1609,24 @@ Return t if cache is saved successfully."
     ;; ignore error
     (error)))
 
+(defun elmo-file-cache-load (cache-path section)
+  "Load cache on PATH into the current buffer.
+Return t if cache is loaded successfully."
+  (condition-case nil
+      (let (cache-file)
+       (when (and cache-path
+                  (if (elmo-cache-path-section-p cache-path)
+                      section
+                    (null section))
+                  (setq cache-file (elmo-file-cache-expand-path
+                                    cache-path
+                                    section))
+                  (file-exists-p cache-file))
+         (insert-file-contents-as-binary cache-file)
+         t))
+    ;; igore error
+    (error)))
+
 (defun elmo-cache-path-section-p (path)
   "Return non-nil when PATH is `section' cache path."
   (file-directory-p path))
@@ -1677,8 +1694,7 @@ If KBYTES is kilo bytes (This value must be float)."
        total beginning)
     (message "Checking disk usage...")
     (setq total (/ (elmo-disk-usage
-                   (expand-file-name
-                    elmo-cache-dirname elmo-msgdb-dir)) Kbytes))
+                   elmo-cache-directory) Kbytes))
     (setq beginning total)
     (message "Checking disk usage...done")
     (let ((cfl (elmo-cache-get-sorted-cache-file-list))
@@ -1726,7 +1742,7 @@ If KBYTES is kilo bytes (This value must be float)."
 
 (defun elmo-cache-get-sorted-cache-file-list ()
   (let ((dirs (directory-files
-              (expand-file-name elmo-cache-dirname elmo-msgdb-dir)
+              elmo-cache-directory
               t "^[^\\.]"))
        (i 0) num
        elist
@@ -1762,7 +1778,7 @@ If KBYTES is kilo bytes (This value must be float)."
                               elmo-cache-expire-default-age)))
                 (int-to-string elmo-cache-expire-default-age)))
        (dirs (directory-files
-              (expand-file-name elmo-cache-dirname elmo-msgdb-dir)
+              elmo-cache-directory
               t "^[^\\.]"))
        (count 0)
        curtime)
@@ -1806,8 +1822,7 @@ If KBYTES is kilo bytes (This value must be float)."
          (format "%s/%s"
                  (elmo-cache-get-path-subr msgid)
                  msgid))
-       (expand-file-name elmo-cache-dirname
-                         elmo-msgdb-dir)))))
+       elmo-cache-directory))))
 
 ;;;
 ;; Warnings.
@@ -1823,7 +1838,11 @@ If KBYTES is kilo bytes (This value must be float)."
   (display-buffer elmo-warning-buffer-name))
 
 (defvar elmo-obsolete-variable-alist nil)
-(defvar elmo-obsolete-variable-show-warnings nil)
+
+(defcustom elmo-obsolete-variable-show-warnings t
+  "Show warning window if obsolete variable is treated."
+  :type 'boolean
+  :group 'elmo)
 
 (defun elmo-define-obsolete-variable (obsolete var)
   "Define obsolete variable.
@@ -1867,12 +1886,12 @@ If ALIST is nil, `elmo-obsolete-variable-alist' is used."
   (setq elmo-dop-queue
        (elmo-object-load
         (expand-file-name elmo-dop-queue-filename
-                          elmo-msgdb-dir))))
+                          elmo-msgdb-directory))))
 
 (defun elmo-dop-queue-save ()
   (elmo-object-save
    (expand-file-name elmo-dop-queue-filename
-                    elmo-msgdb-dir)
+                    elmo-msgdb-directory)
    elmo-dop-queue))
 
 (require 'product)