racket/collects/sirmail/recover.ss
2005-05-27 18:56:37 +00:00

28 lines
732 B
Scheme

(require (lib "list.ss")
(lib "head.ss" "net"))
(define msgs (quicksort
(filter (lambda (x) (regexp-match "^[0-9]*$" x)) (directory-list))
(lambda (a b) (< (string->number a) (string->number b)))))
(define mailbox
(let loop ([msgs msgs][p 1])
(if (null? msgs)
null
(let ([msg (car msgs)]
[rest (loop (cdr msgs) (add1 p))])
(let ([header (with-input-from-file msg
(lambda () (read-string (file-size msg))))])
(cons (list
(string->number msg)
p
(file-exists? (format "~abody" msg))
(extract-field "From" header)
(extract-field "Subject" header)
null
#f)
rest))))))
(with-output-to-file "mailbox" (lambda () (write mailbox) (newline)) 'truncate)