mboxrd-parse/ port

The "mboxrd-read" Tool

This is a library of one function (with two front doors) that parse mboxrd files into lazy lists of messages.

 (require (planet clements/mboxrd-read))

(mboxrd-parse path)
  (lazy-listof (list/c bytes? (promise/c bytes?)))
  path : path?

Given a path to an mbox file, return a lazy list of the messages in the file. Each file is represented as a list containing a byte-string representing the header and the promise of a byte-string representing the body. These byte-strings can be appended to obtain the original message except that every \n in the original is replaced by \r\n to match the RFC 2822 format.

(mboxrd-parse/port port)
  (lazy-listof (list/c bytes? (promise/c bytes?)))
  port : port?

Similar to mboxrd-read, but operates on a port rather than on a path. Note that this procedure assumes that it’s the only one reading the port. Bad stuff will happen if its not; it doesn’t leave the "From " of the next message on the stream. This procedure closes the port when peek-char returns eof.

Additionally, you can use the utilities (e.g. extract-field) in "net/head.ss" to process the header.

Let me know of any bugs.