2001-09-08 Simon Josefsson <jas@extundo.com>
authorSimon Josefsson <jas@extundo.com>
Sat, 8 Sep 2001 19:32:16 +0000 (19:32 +0000)
committerSimon Josefsson <jas@extundo.com>
Sat, 8 Sep 2001 19:32:16 +0000 (19:32 +0000)
* nnfolder.el (nnfolder-marks-modtime): New variable.
(nnfolder-marks-changed-p): New function.
(nnfolder-save-marks, nnfolder-open-marks): Save modtime.
(nnfolder-request-update-info): Don't update if marks didn't change.

lisp/ChangeLog
lisp/nnfolder.el

index 9372588..8953994 100644 (file)
@@ -1,5 +1,10 @@
 2001-09-08  Simon Josefsson  <jas@extundo.com>
 
+       * nnfolder.el (nnfolder-marks-modtime): New variable.
+       (nnfolder-marks-changed-p): New function.
+       (nnfolder-save-marks, nnfolder-open-marks): Save modtime.
+       (nnfolder-request-update-info): Don't update if marks didn't change.
+
        * nnml.el (nnml-marks-modtime): New variable.
        (nnml-marks-changed-p): New function.
        (nnml-save-marks, nnml-open-marks): Save modtime.
index 9a30f30..7edef4e 100644 (file)
@@ -161,6 +161,8 @@ This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnfolder-marks-file-suffix ".mrk")
 
+(defvar nnfolder-marks-modtime (makehash))
+
 \f
 
 ;;; Interface functions
@@ -1169,7 +1171,7 @@ This command does not work if you use short group names."
   (when (and server
             (not (nnfolder-server-opened server)))
     (nnfolder-open-server server))
-  (unless nnfolder-marks-is-evil
+  (when (and (not nnfolder-marks-is-evil) (nnfolder-marks-changed-p group))
     (nnheader-message 8 "Updating marks for %s..." group)
     (nnfolder-open-marks group server)
     ;; Update info using `nnfolder-marks'.
@@ -1196,14 +1198,25 @@ This command does not work if you use short group names."
   (let ((nnfolder-directory (or nnfolder-marks-directory nnfolder-directory)))
     (concat (nnfolder-group-pathname group) nnfolder-marks-file-suffix)))
 
+(defun nnfolder-marks-changed-p (group)
+  (let ((file (nnfolder-group-marks-pathname group)))
+    (if (null (gethash file nnfolder-marks-modtime))
+       t ;; never looked at marks file, assume it has changed
+      (not (eq (gethash fil nnfolder-marks-modtime)
+              (nth 5 (file-attributes file)))))))
+
 (defun nnfolder-save-marks (group server)
   (let ((file-name-coding-system nnmail-pathname-coding-system)
        (file (nnfolder-group-marks-pathname group)))
     (condition-case err
-       (with-temp-file file
-         (erase-buffer)
-         (princ nnfolder-marks (current-buffer))
-         (insert "\n"))
+       (progn
+         (with-temp-file file
+           (erase-buffer)
+           (princ nnfolder-marks (current-buffer))
+           (insert "\n"))
+         (puthash file
+                  (nth 5 (file-attributes file))
+                  nnml-marks-modtime))
       (error (or (gnus-yes-or-no-p
                  (format "Could not write to %s (%s).  Continue? " file err))
                 (error "Cannot write to %s (%s)" err))))))
@@ -1213,6 +1226,9 @@ This command does not work if you use short group names."
     (if (file-exists-p file)
        (setq nnfolder-marks (condition-case err
                                 (with-temp-buffer
+                                  (puthash file
+                                           (nth 5 (file-attributes file))
+                                           nnml-marks-modtime)
                                   (nnheader-insert-file-contents file)
                                   (read (current-buffer)))
                               (error (or (gnus-yes-or-no-p