• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/emacs-93/emacs/lisp/gnus/

Lines Matching +refs:nnfolder +refs:group +refs:alist

0 ;;; nnfolder.el --- mail folder access for Gnus
47 (nnoo-declare nnfolder)
49 (defvoo nnfolder-directory (expand-file-name message-directory)
50 "The name of the nnfolder directory.")
52 (defvoo nnfolder-nov-directory nil
53 "The name of the nnfolder NOV directory.
54 If nil, `nnfolder-directory' is used.")
56 (defvoo nnfolder-marks-directory nil
57 "The name of the nnfolder MARKS directory.
58 If nil, `nnfolder-directory' is used.")
60 (defvoo nnfolder-active-file
61 (nnheader-concat nnfolder-directory "active")
67 (defvoo nnfolder-ignore-active-file nil
69 This causes nnfolder to do some extra work in order to determine the
74 (defvoo nnfolder-distrust-mbox nil
76 This means that nnfolder will not trust the user with respect to
82 (defvoo nnfolder-newsgroups-file
83 (concat (file-name-as-directory nnfolder-directory) "newsgroups")
86 (defvoo nnfolder-get-new-mail t
87 "If non-nil, nnfolder will check the incoming mail file and split the mail.")
89 (defvoo nnfolder-prepare-save-mail-hook nil
92 (defvoo nnfolder-save-buffer-hook nil
93 "Hook run before saving the nnfolder mbox buffer.")
96 (defvoo nnfolder-inhibit-expiry nil
102 (defconst nnfolder-version "nnfolder 2.0"
103 "nnfolder version.")
105 (defconst nnfolder-article-marker "X-Gnus-Article-Number: "
108 (defvoo nnfolder-current-group nil)
109 (defvoo nnfolder-current-buffer nil)
110 (defvoo nnfolder-status-string "")
111 (defvoo nnfolder-group-alist nil)
112 (defvoo nnfolder-buffer-alist nil)
113 (defvoo nnfolder-scantime-alist nil)
114 (defvoo nnfolder-active-timestamp nil)
115 (defvoo nnfolder-active-file-coding-system mm-text-coding-system)
116 (defvoo nnfolder-active-file-coding-system-for-write
118 (defvoo nnfolder-file-coding-system mm-text-coding-system)
119 (defvoo nnfolder-file-coding-system-for-write nnheader-file-coding-system
120 "Coding system for save nnfolder file.
121 if nil, `nnfolder-file-coding-system' is used.") ; FIXME: fill-in the doc-string of this variable
123 (defvoo nnfolder-nov-is-evil nil
128 the `nnfolder-generate-active-file' command. The function will go
129 through all nnfolder directories and generate nov databases for them
132 (defvoo nnfolder-nov-file-suffix ".nov")
134 (defvoo nnfolder-nov-buffer-alist nil)
136 (defvar nnfolder-nov-buffer-file-name nil)
138 (defvoo nnfolder-marks-is-evil nil
143 the corresponding marks file (usually base nnfolder file name
144 concatenated with `.mrk', but see `nnfolder-marks-file-suffix') for
145 the group. Then the marks file will be regenerated properly by Gnus.")
147 (defvoo nnfolder-marks nil)
149 (defvoo nnfolder-marks-file-suffix ".mrk")
151 (defvar nnfolder-marks-modtime (gnus-make-hashtable))
158 (nnoo-define-basics nnfolder)
160 (deffoo nnfolder-retrieve-headers (articles &optional group server fetch-old)
165 (nnfolder-possibly-change-group group server)
166 (when nnfolder-current-buffer
167 (set-buffer nnfolder-current-buffer)
171 (if (nnfolder-retrieve-headers-with-nov articles fetch-old)
176 (nnfolder-existing-articles)))
178 (set-buffer nnfolder-current-buffer)
179 (cond ((nnfolder-goto-article article)
186 (insert-buffer-substring nnfolder-current-buffer
203 ((search-backward (concat "\n" nnfolder-article-marker)
213 (search-forward (concat "\n" nnfolder-article-marker)
230 (deffoo nnfolder-open-server (server &optional defs)
231 (nnoo-change-server 'nnfolder server defs)
232 (nnmail-activate 'nnfolder t)
233 (gnus-make-directory nnfolder-directory)
234 (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
235 (and nnfolder-nov-directory
236 (gnus-make-directory nnfolder-nov-directory)))
237 (unless nnfolder-marks-is-evil
238 (and nnfolder-marks-directory
239 (gnus-make-directory nnfolder-marks-directory)))
241 ((not (file-exists-p nnfolder-directory))
242 (nnfolder-close-server)
243 (nnheader-report 'nnfolder "Couldn't create directory: %s"
244 nnfolder-directory))
245 ((not (file-directory-p (file-truename nnfolder-directory)))
246 (nnfolder-close-server)
247 (nnheader-report 'nnfolder "Not a directory: %s" nnfolder-directory))
249 (nnmail-activate 'nnfolder)
250 (nnheader-report 'nnfolder "Opened server %s using directory %s"
251 server nnfolder-directory)
254 (deffoo nnfolder-request-close ()
255 (let ((alist nnfolder-buffer-alist))
256 (while alist
257 (nnfolder-close-group (caar alist) nil t)
258 (setq alist (cdr alist))))
259 (nnoo-close-server 'nnfolder)
260 (setq nnfolder-buffer-alist nil
261 nnfolder-group-alist nil))
263 (deffoo nnfolder-request-article (article &optional group server buffer)
264 (nnfolder-possibly-change-group group server)
266 (set-buffer nnfolder-current-buffer)
268 (when (nnfolder-goto-article article)
279 (insert-buffer-substring nnfolder-current-buffer start stop)
286 (cons nnfolder-current-group article)
288 (cons nnfolder-current-group
289 (if (search-forward (concat "\n" nnfolder-article-marker)
295 (deffoo nnfolder-request-group (group &optional server dont-check)
296 (nnfolder-possibly-change-group group server t)
298 (if (not (assoc group nnfolder-group-alist))
299 (nnheader-report 'nnfolder "No such group: %s" group)
302 (nnheader-report 'nnfolder "Selected group %s" group)
304 (let* ((active (assoc group nnfolder-group-alist))
305 (group (car active))
309 (nnheader-report 'nnfolder "No such group: %s" group))
310 ((null nnfolder-current-group)
311 (nnheader-report 'nnfolder "Empty group: %s" group))
313 (nnheader-report 'nnfolder "Selected group %s" group)
316 (car range) (cdr range) group))))))))
318 (deffoo nnfolder-request-scan (&optional group server)
319 (nnfolder-possibly-change-group nil server)
320 (when nnfolder-get-new-mail
321 (nnfolder-possibly-change-group group server)
323 'nnfolder
325 (let ((bufs nnfolder-buffer-alist))
329 (setq nnfolder-buffer-alist
330 (delq (car bufs) nnfolder-buffer-alist))
332 (nnfolder-save-buffer)
335 nnfolder-directory
336 group)))
339 ;; we can keep the buffer in the group buffer cache, and not have to grovel
343 (deffoo nnfolder-close-group (group &optional server force)
344 ;; Make sure we _had_ the group open.
345 (when (or (assoc group nnfolder-buffer-alist)
346 (equal group nnfolder-current-group))
347 (let ((inf (assoc group nnfolder-buffer-alist)))
349 (when (and nnfolder-current-group
350 nnfolder-current-buffer)
351 (push (list nnfolder-current-group nnfolder-current-buffer)
352 nnfolder-buffer-alist))
353 (setq nnfolder-buffer-alist
354 (delq inf nnfolder-buffer-alist))
355 (setq nnfolder-current-buffer (cadr inf)
356 nnfolder-current-group (car inf))))
357 (when (and nnfolder-current-buffer
358 (buffer-name nnfolder-current-buffer))
360 (set-buffer nnfolder-current-buffer)
362 (nnfolder-save-buffer)
367 (setq nnfolder-buffer-alist (delq (assoc group nnfolder-buffer-alist)
368 nnfolder-buffer-alist)))))
369 (setq nnfolder-current-group nil
370 nnfolder-current-buffer nil)
373 (deffoo nnfolder-request-create-group (group &optional server args)
374 (nnfolder-possibly-change-group nil server)
375 (nnmail-activate 'nnfolder)
376 (when (and group
377 (not (assoc group nnfolder-group-alist)))
378 (push (list group (cons 1 0)) nnfolder-group-alist)
379 (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
381 (nnfolder-read-folder group)))
384 (deffoo nnfolder-request-list (&optional server)
385 (nnfolder-possibly-change-group nil server)
387 (let ((nnmail-file-coding-system nnfolder-active-file-coding-system))
388 (nnmail-find-file nnfolder-active-file)
389 (setq nnfolder-group-alist (nnmail-get-active)))
392 (deffoo nnfolder-request-newgroups (date &optional server)
393 (nnfolder-possibly-change-group nil server)
394 (nnfolder-request-list server))
396 (deffoo nnfolder-request-list-newsgroups (&optional server)
397 (nnfolder-possibly-change-group nil server)
399 (let ((nnmail-file-coding-system nnfolder-file-coding-system))
400 (nnmail-find-file nnfolder-newsgroups-file))))
405 (defun nnfolder-existing-articles ()
407 (when nnfolder-current-buffer
408 (set-buffer nnfolder-current-buffer)
410 (let ((marker (concat "\n" nnfolder-article-marker))
421 (deffoo nnfolder-request-expire-articles
423 (nnfolder-possibly-change-group newsgroup server)
430 (gnus-sorted-intersection articles (nnfolder-existing-articles))))
431 (nnmail-activate 'nnfolder)
434 (set-buffer nnfolder-current-buffer)
440 (when (and (nnfolder-goto-article (car maybe-expirable))
441 (search-forward (concat "\n" nnfolder-article-marker)
449 force nnfolder-inhibit-expiry))
452 (nnfolder-request-article (car maybe-expirable)
454 (let ((nnfolder-current-directory nil))
455 (nnmail-expiry-target-group
457 (nnfolder-possibly-change-group newsgroup server))
460 (nnfolder-delete-mail)
461 (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
462 (nnfolder-nov-delete-article newsgroup (car maybe-expirable)))
466 (unless nnfolder-inhibit-expiry
468 (nnfolder-save-buffer)
469 (nnfolder-adjust-min-active newsgroup)
470 (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
473 (deffoo nnfolder-request-move-article (article group server
476 (let ((buf (get-buffer-create " *nnfolder move*"))
479 (nnfolder-request-article article group server)
486 (concat "^" nnfolder-article-marker)
494 (nnfolder-possibly-change-group group server)
495 (set-buffer nnfolder-current-buffer)
497 (when (nnfolder-goto-article article)
498 (nnfolder-delete-mail))
499 (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
500 (nnfolder-nov-delete-article group article))
502 (nnfolder-save-buffer)
503 (nnfolder-adjust-min-active group)
504 (nnfolder-save-active nnfolder-group-alist nnfolder-active-file))))
507 (deffoo nnfolder-request-accept-article (group &optional server last)
509 (nnfolder-possibly-change-group group server)
512 result art-group)
519 (let ((nnmail-file-coding-system nnfolder-active-file-coding-system)
521 (nnmail-find-file nnfolder-active-file)
522 (setq nnfolder-group-alist (nnmail-parse-active))))
528 (while (re-search-backward (concat "^" nnfolder-article-marker) nil t)
532 group
535 (setq result (if (stringp group)
536 (list (cons group (nnfolder-active-number group)))
537 (setq art-group
538 (nnmail-article-group 'nnfolder-active-number))))
540 (yes-or-no-p "Moved to `junk' group; delete article? "))
543 (car (nnfolder-save-mail result)))))
546 (nnfolder-possibly-change-folder (or (caar art-group) group))
547 (nnfolder-save-buffer)
550 (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
552 (nnheader-report 'nnfolder "Couldn't store article"))
555 (deffoo nnfolder-request-replace-article (article group buffer)
556 (nnfolder-possibly-change-group group)
567 (nnfolder-normalize-buffer)
568 (set-buffer nnfolder-current-buffer)
570 (if (not (nnfolder-goto-article article))
572 (nnfolder-delete-mail)
574 (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
577 (let ((headers (nnfolder-parse-head article
579 (with-current-buffer (nnfolder-open-nov group)
583 (nnfolder-save-buffer)
586 (deffoo nnfolder-request-delete-group (group &optional force server)
587 (nnfolder-close-group group server t)
591 ;; Delete the file that holds the group.
592 (let ((data (nnfolder-group-pathname group))
593 (nov (nnfolder-group-nov-pathname group))
594 (mrk (nnfolder-group-marks-pathname group)))
598 ;; Remove the group from all structures.
599 (setq nnfolder-group-alist
600 (delq (assoc group nnfolder-group-alist) nnfolder-group-alist)
601 nnfolder-current-group nil
602 nnfolder-current-buffer nil)
604 (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
607 (deffoo nnfolder-request-rename-group (group new-name &optional server)
608 (nnfolder-possibly-change-group group server)
610 (set-buffer nnfolder-current-buffer)
613 (let ((new-file (nnfolder-group-pathname new-name)))
616 (when (file-exists-p (nnfolder-group-nov-pathname group))
617 (setq new-file (nnfolder-group-nov-pathname new-name))
619 (rename-file (nnfolder-group-nov-pathname group) new-file))
620 (when (file-exists-p (nnfolder-group-marks-pathname group))
621 (setq new-file (nnfolder-group-marks-pathname new-name))
623 (rename-file (nnfolder-group-marks-pathname group) new-file)))
626 (let ((entry (assoc group nnfolder-group-alist)))
628 (setq nnfolder-current-buffer nil
629 nnfolder-current-group nil)
630 ;; Save the new group alist.
631 (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
636 (deffoo nnfolder-request-regenerate (server)
637 (nnfolder-possibly-change-group nil server)
638 (nnfolder-generate-active-file)
645 (defun nnfolder-adjust-min-active (group)
646 ;; Find the lowest active article in this group.
647 (let* ((active (cadr (assoc group nnfolder-group-alist)))
648 (marker (concat "\n" nnfolder-article-marker))
652 (set-buffer nnfolder-current-buffer)
661 (defun nnfolder-article-string (article)
663 (concat "\n" nnfolder-article-marker (int-to-string article) " ")
666 (defun nnfolder-goto-article (article)
670 (let ((art-string (nnfolder-article-string article))
690 (defun nnfolder-delete-mail (&optional leave-delim)
707 (run-hooks 'nnfolder-delete-mail-hook)
710 (defun nnfolder-possibly-change-group (group &optional server dont-check)
713 (not (nnfolder-server-opened server)))
714 (nnfolder-open-server server))
715 (unless (gnus-buffer-live-p nnfolder-current-buffer)
716 (setq nnfolder-current-buffer nil
717 nnfolder-current-group nil))
718 ;; Change group.
720 (when (and group
721 (not (equal group nnfolder-current-group))
723 (nnmail-activate 'nnfolder)
724 (and (assoc group nnfolder-group-alist)
725 (file-exists-p (nnfolder-group-pathname group)))))
727 (setq nnfolder-current-group group
728 nnfolder-current-buffer nil)
733 (setq nnfolder-current-buffer
734 (nth 1 (assoc group nnfolder-buffer-alist)))
737 ;; alist. If it is live, verify that nobody else has
739 (when (and nnfolder-current-buffer
740 (not (gnus-buffer-live-p nnfolder-current-buffer)))
741 (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist)
742 nnfolder-current-buffer nil))
744 (setq nnfolder-current-group group)
746 (when (or (not nnfolder-current-buffer)
748 nnfolder-current-buffer)))
750 (setq file (nnfolder-group-pathname group))
755 (or nnfolder-file-coding-system-for-write
756 nnfolder-file-coding-system-for-write)))
759 (when (setq nnfolder-current-buffer (nnfolder-read-folder group))
760 (set-buffer nnfolder-current-buffer)
761 (push (list group nnfolder-current-buffer)
762 nnfolder-buffer-alist)))))))))
764 (defun nnfolder-save-mail (group-art-list)
766 (let* (save-list group-art)
781 (setq save-list group-art-list)
783 (nnmail-insert-xref group-art-list)
785 (run-hooks 'nnfolder-prepare-save-mail-hook)
788 (while (setq group-art (pop group-art-list))
794 (while (search-backward (concat "\n" nnfolder-article-marker) nil t)
798 (nnfolder-insert-newsgroup-line group-art)
804 (nnfolder-possibly-change-folder (car group-art))
806 (nnfolder-normalize-buffer)
808 (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
810 (nnfolder-add-nov (car group-art) (cdr group-art)
811 (nnfolder-parse-head nil beg end))))))
816 (defun nnfolder-normalize-buffer ()
824 (defun nnfolder-insert-newsgroup-line (group-art)
831 (insert (format (concat nnfolder-article-marker "%d %s\n")
832 (cdr group-art) (message-make-date)))))
834 (defun nnfolder-active-number (group)
836 (let ((active (cadr (assoc group nnfolder-group-alist))))
839 ;; This group is new, so we create a new entry for it.
842 (push (list group (setq active (cons 1 1)))
843 nnfolder-group-alist))
846 (defun nnfolder-possibly-change-folder (group)
847 (let ((inf (assoc group nnfolder-buffer-alist)))
852 (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist)))
853 (when nnfolder-group-alist
854 (nnfolder-save-active nnfolder-group-alist nnfolder-active-file))
855 (push (list group (nnfolder-read-folder group))
856 nnfolder-buffer-alist))))
874 (defun nnfolder-read-folder (group)
875 (let* ((file (nnfolder-group-pathname group))
876 (nov (nnfolder-group-nov-pathname group))
879 nnfolder-file-coding-system))
883 (if (equal (cadr (assoc group nnfolder-scantime-alist))
888 (push (list group buffer) nnfolder-buffer-alist)
890 (nnfolder-save-buffer))
897 (nnmail-activate 'nnfolder)
900 (marker (concat "\n" nnfolder-article-marker))
902 (active (or (cadr (assoc group nnfolder-group-alist))
904 (scantime (assoc group nnfolder-scantime-alist))
911 (unless (or gnus-nov-is-evil nnfolder-nov-is-evil
917 (setq novbuf (nnfolder-open-nov group))
931 (when (or nnfolder-ignore-active-file
943 (let ((headers (nnfolder-parse-head newnum)))
962 (when (not (or nnfolder-distrust-mbox
991 (nnfolder-insert-newsgroup-line
994 (nnfolder-active-number group))))
996 (let ((headers (nnfolder-parse-head newnum (point-min)
1006 (nnfolder-save-active nnfolder-group-alist nnfolder-active-file)
1008 ;; Set the scantime for this group.
1012 (push (list group newscantime)
1013 nnfolder-scantime-alist))
1016 (nnfolder-save-nov))
1020 (defun nnfolder-generate-active-file ()
1021 "Look for mbox folders in the nnfolder directory and make them into groups.
1022 This command does not work if you use short group names."
1024 (nnmail-activate 'nnfolder)
1025 (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
1026 (dolist (file (directory-files (or nnfolder-nov-directory
1027 nnfolder-directory)
1030 (regexp-quote nnfolder-nov-file-suffix)
1035 (let ((files (directory-files nnfolder-directory))
1040 (nnheader-concat nnfolder-directory file)))
1041 (let ((oldgroup (assoc file nnfolder-group-alist)))
1043 (nnheader-message 5 "Refreshing group %s..." file)
1044 (nnheader-message 5 "Adding group %s..." file))
1046 (setq nnfolder-group-alist
1047 (delq oldgroup (copy-sequence nnfolder-group-alist))))
1048 (push (list file (cons 1 0)) nnfolder-group-alist)
1049 (nnfolder-possibly-change-folder file)
1050 (nnfolder-possibly-change-group file)
1051 (nnfolder-close-group file))))
1054 (defun nnfolder-group-pathname (group)
1056 (setq group
1057 (mm-encode-coding-string group nnmail-pathname-coding-system))
1058 (let ((dir (file-name-as-directory (expand-file-name nnfolder-directory))))
1061 (file-exists-p (concat dir group)))
1062 (concat dir group)
1064 (concat dir (nnheader-replace-chars-in-string group ?. ?/)))))
1066 (defun nnfolder-group-nov-pathname (group)
1068 (let ((nnfolder-directory
1069 (or nnfolder-nov-directory nnfolder-directory)))
1070 (concat (nnfolder-group-pathname group) nnfolder-nov-file-suffix)))
1072 (defun nnfolder-save-buffer ()
1075 (run-hooks 'nnfolder-save-buffer-hook)
1078 (or nnfolder-file-coding-system-for-write
1079 nnfolder-file-coding-system)))
1081 (unless (or gnus-nov-is-evil nnfolder-nov-is-evil)
1082 (nnfolder-save-nov)))
1084 (defun nnfolder-save-active (group-alist active-file)
1086 (or nnfolder-active-file-coding-system-for-write
1087 nnfolder-active-file-coding-system)))
1088 (nnmail-save-active group-alist active-file)))
1090 (defun nnfolder-open-nov (group)
1091 (or (cdr (assoc group nnfolder-nov-buffer-alist))
1092 (let ((buffer (get-buffer-create (format " *nnfolder overview %s*" group))))
1095 (set (make-local-variable 'nnfolder-nov-buffer-file-name)
1096 (nnfolder-group-nov-pathname group))
1098 (when (file-exists-p nnfolder-nov-buffer-file-name)
1099 (nnheader-insert-file-contents nnfolder-nov-buffer-file-name)))
1100 (push (cons group buffer) nnfolder-nov-buffer-alist)
1103 (defun nnfolder-save-nov ()
1105 (while nnfolder-nov-buffer-alist
1106 (when (buffer-name (cdar nnfolder-nov-buffer-alist))
1107 (set-buffer (cdar nnfolder-nov-buffer-alist))
1110 nnfolder-nov-buffer-file-name))
1111 (nnmail-write-region 1 (point-max) nnfolder-nov-buffer-file-name
1115 (setq nnfolder-nov-buffer-alist (cdr nnfolder-nov-buffer-alist)))))
1117 (defun nnfolder-nov-delete-article (group article)
1119 (set-buffer (nnfolder-open-nov group))
1124 (defun nnfolder-retrieve-headers-with-nov (articles &optional fetch-old)
1125 (if (or gnus-nov-is-evil nnfolder-nov-is-evil)
1127 (let ((nov (nnfolder-group-nov-pathname nnfolder-current-group)))
1142 (defun nnfolder-parse-head (&optional number b e)
1164 (defun nnfolder-add-nov (group article headers)
1167 (set-buffer (nnfolder-open-nov group))
1172 (deffoo nnfolder-request-set-mark (group actions &optional server)
1174 (not (nnfolder-server-opened server)))
1175 (nnfolder-open-server server))
1176 (unless nnfolder-marks-is-evil
1177 (nnfolder-open-marks group server)
1185 (setq nnfolder-marks (gnus-update-alist-soft
1189 (cdr (assoc mark nnfolder-marks)) range)
1190 nnfolder-marks)))))
1191 (nnfolder-save-marks group server))
1194 (deffoo nnfolder-request-update-info (group info &optional server)
1197 (not (nnfolder-server-opened server)))
1198 (nnfolder-open-server server))
1199 (when (and (not nnfolder-marks-is-evil) (nnfolder-marks-changed-p group))
1200 (nnheader-message 8 "Updating marks for %s..." group)
1201 (nnfolder-open-marks group server)
1202 ;; Update info using `nnfolder-marks'.
1207 (gnus-update-alist-soft
1209 (cdr (assq (cdr pred) nnfolder-marks))
1213 (let ((seen (cdr (assq 'read nnfolder-marks))))
1219 (nnheader-message 8 "Updating marks for %s...done" group))
1222 (defun nnfolder-group-marks-pathname (group)
1224 (let ((nnfolder-directory (or nnfolder-marks-directory nnfolder-directory)))
1225 (concat (nnfolder-group-pathname group) nnfolder-marks-file-suffix)))
1227 (defun nnfolder-marks-changed-p (group)
1228 (let ((file (nnfolder-group-marks-pathname group)))
1229 (if (null (gnus-gethash file nnfolder-marks-modtime))
1231 (not (equal (gnus-gethash file nnfolder-marks-modtime)
1234 (defun nnfolder-save-marks (group server)
1236 (file (nnfolder-group-marks-pathname group)))
1241 (gnus-prin1 nnfolder-marks)
1245 nnfolder-marks-modtime))
1250 (defun nnfolder-open-marks (group server)
1251 (let ((file (nnfolder-group-marks-pathname group)))
1256 nnfolder-marks-modtime)
1258 (setq nnfolder-marks (read (current-buffer)))
1260 (setq nnfolder-marks (gnus-remassoc el nnfolder-marks))))
1262 (format "Error reading nnfolder marks file %s (%s). Continuing will use marks from .newsrc.eld. Continue? " file err))
1263 (error "Cannot read nnfolder marks file %s (%s)" file err))))
1267 (gnus-group-prefixed-name
1268 group
1269 (gnus-server-to-method (format "nnfolder:%s" server))))))
1270 (nnheader-message 7 "Bootstrapping marks for %s..." group)
1271 (setq nnfolder-marks (gnus-info-marks info))
1272 (push (cons 'read (gnus-info-read info)) nnfolder-marks)
1274 (setq nnfolder-marks (gnus-remassoc el nnfolder-marks)))
1275 (nnfolder-save-marks group server)
1276 (nnheader-message 7 "Bootstrapping marks for %s...done" group)))))
1278 (provide 'nnfolder)
1281 ;;; nnfolder.el ends here