(nnimap-verify-uidvalidity): Delete overview file when
authorSimon Josefsson <jas@extundo.com>
Sun, 8 Oct 2000 09:37:56 +0000 (09:37 +0000)
committerSimon Josefsson <jas@extundo.com>
Sun, 8 Oct 2000 09:37:56 +0000 (09:37 +0000)
uid validity changes.
(nnimap-group-overview-filename): Store uidvalidity in filenames.
Rename old files into new format.

lisp/ChangeLog
lisp/nnimap.el

index ece2f98..113b5d8 100644 (file)
@@ -1,3 +1,10 @@
+2000-10-08  Simon Josefsson  <simon@josefsson.org>
+
+       * nnimap.el (nnimap-verify-uidvalidity): Delete overview file when
+       uid validity changes.
+       (nnimap-group-overview-filename): Store uidvalidity in filenames.
+       Rename old files into new format.
+
 2000-10-07 15:49:39  ShengHuo ZHU  <zsh@cs.rochester.edu>
 
        * mm-util.el (mm-enable-multibyte-mule4): New.
        (mm-inline-message): Test for `remove-specifier'; don't use
        condition-case.
 
->>>>>>> 5.672
 2000-09-24  Simon Josefsson  <simon@josefsson.org>
 
        * nnimap.el (nnimap-request-accept-article): Remove From[^:] lines.
index 7d96aa7..3e6e9ff 100644 (file)
@@ -323,10 +323,26 @@ If SERVER is nil, uses the current server."
                     group (gnus-server-to-method
                            (format "nnimap:%s" server))))
         (new-uidvalidity (imap-mailbox-get 'uidvalidity))
-        (old-uidvalidity (gnus-group-get-parameter gnusgroup 'uidvalidity)))
+        (old-uidvalidity (gnus-group-get-parameter gnusgroup 'uidvalidity))
+        (dir (file-name-as-directory (expand-file-name nnimap-directory)))
+         (nameuid (nnheader-translate-file-chars
+                   (concat nnimap-nov-file-name
+                           (if (equal server "")
+                               "unnamed"
+                             server) "." group "." old-uidvalidity
+                             nnimap-nov-file-name-suffix) t))
+         (file (if (or nnmail-use-long-file-names
+                      (file-exists-p (expand-file-name nameuid dir)))
+                  (expand-file-name nameuid dir)
+                (expand-file-name
+                 (mm-encode-coding-string
+                  (nnheader-replace-chars-in-string nameuid ?. ?/)
+                  nnmail-pathname-coding-system)
+                 dir))))
     (if old-uidvalidity
        (if (not (equal old-uidvalidity new-uidvalidity))
-           nil ;; uidvalidity clash
+           ;; uidvalidity clash
+           (gnus-delete-file file)
          (gnus-group-set-parameter gnusgroup 'uidvalidity new-uidvalidity)
          t)
       (gnus-group-add-parameter gnusgroup (cons 'uidvalidity new-uidvalidity))
@@ -442,18 +458,47 @@ If EXAMINE is non-nil the group is selected read-only."
 
 (defun nnimap-group-overview-filename (group server)
   "Make pathname for GROUP on SERVER."
-  (let ((dir (file-name-as-directory (expand-file-name nnimap-directory)))
-       (file (nnheader-translate-file-chars
-              (concat nnimap-nov-file-name
-                      (if (equal server "")
-                          "unnamed"
-                        server) "." group nnimap-nov-file-name-suffix) t)))
-    (if (or nnmail-use-long-file-names
-           (file-exists-p (concat dir file)))
-       (concat dir file)
-      (concat dir (mm-encode-coding-string
-                  (nnheader-replace-chars-in-string file ?. ?/)
-                  nnmail-pathname-coding-system)))))
+  (let* ((dir (file-name-as-directory (expand-file-name nnimap-directory)))
+         (uidvalidity (gnus-group-get-parameter
+                       (gnus-group-prefixed-name
+                        group (gnus-server-to-method
+                               (format "nnimap:%s" server)))
+                       'uidvalidity))
+         (name (nnheader-translate-file-chars
+                (concat nnimap-nov-file-name
+                        (if (equal server "")
+                            "unnamed"
+                          server) "." group nnimap-nov-file-name-suffix) t))
+         (nameuid (nnheader-translate-file-chars
+                   (concat nnimap-nov-file-name
+                           (if (equal server "")
+                               "unnamed"
+                             server) "." group "." uidvalidity
+                             nnimap-nov-file-name-suffix) t))
+         (oldfile (if (or nnmail-use-long-file-names
+                          (file-exists-p (expand-file-name name dir)))
+                      (expand-file-name name dir)
+                    (expand-file-name
+                     (mm-encode-coding-string
+                      (nnheader-replace-chars-in-string name ?. ?/)
+                      nnmail-pathname-coding-system)
+                     dir)))
+         (newfile (if (or nnmail-use-long-file-names
+                          (file-exists-p (expand-file-name nameuid dir)))
+                      (expand-file-name nameuid dir)
+                    (expand-file-name
+                     (mm-encode-coding-string
+                      (nnheader-replace-chars-in-string nameuid ?. ?/)
+                      nnmail-pathname-coding-system)
+                     dir))))
+    (if (and (file-exists-p oldfile)
+             (not (file-exists-p newfile)))
+        (progn
+         (message "nnimap: Upgrading novcache filename...")
+         (sit-for 1)
+         (rename-file oldfile newfile)
+         newfile)
+      newfile)))
 
 (defun nnimap-retrieve-headers-from-file (group server)
   (with-current-buffer nntp-server-buffer