;;; -*- Mode:LISP; Package:USER; Base:10; Readtable:ZL -*- ;; ;;; Utility for automatically generating ZMail.init file ;;; containing bug report filters for organizing incoming mail. ;;; ;;; -dg 2/28/86 ;;; (defconst *default-bug-filter-list* '( bug-lispm bug-local-file bug-file-server bug-object-lisp bug-site-editor bug-gateway bug-tape bug-tiger bug-lambda-diag bug-kermit bug-tcp bug-unix-interface bug-zmail bug-window-maker bug-zwei bug-unix software-testers software-release )) (defun write-filter-file (&key (bug-filter-list *default-bug-filter-list*) other-filters (load t)) (let ((init-filename (send (fs:user-homedir) :new-pathname :name "ZMail-filters" :canonical-type :lisp)) filter-move-list other-mail-list (filter-list (append bug-filter-list other-filters))) (unless (and (probef init-filename) (not (yes-or-no-p "Filter Init file already exists... clobber it?"))) (with-open-file (f init-filename :direction :output) ;;; write the header (format f ";;; Automatically generated ZMail init file ~ -*- Mode:Lisp; Package:ZWEI; Readtable:ZL; Base:10 -*-~2%") ;;; Assess mail files and filter associations for filters (dolist (filter filter-list) (let ((filter-filename (format nil "~A:////lmi////~A////mail////~A" fs:user-login-machine fs:user-id (string-downcase filter)))) (push (cons filter filter-filename) filter-move-list) (push (fs:parse-pathname filter-filename) other-mail-list))) ;;; output mail file list (pprint `(setq *other-mail-file-names* ',other-mail-list) f) (format f "~2%") ;;; output filter associations (pprint `(setq *filter-move-mail-file-alist* ',filter-move-list) f) (format f "~2%") ;;; write filter definitions (dolist (filter filter-list) (pprint `(DEFINE-FILTER ,filter (MSG) (msg-header-recipient-search *recipient-type-headers* ,(format nil "~c~A~c" #/top-j (string-downcase filter) #/top-k))) f) (format f "~2%"))) (when load (load init-filename)))))