significant changes ----------------------- cache.c - index caching fixed - support for mailboxes that lie about message sizes - duplicate message rejection - fid speedup hack - squeeze out all nuls and \rs from raw messages - hook for mailbox-specific decache hook. dat.h - careful tracking of why messages are to be removed - workaround for truncated mime messages - mailbox-specific index bits - semaphores preventing concurrent index access or sync - avl tree for message tracking by sha1sum. fs.c - rclunk races reduced. - support for reading top ctl and mbox/ctl file. - fix mailbox reference bugs in walk, clone - fix incorrect caching of rawunix file - fix incorrect formating of unixdate - support for fid hack - fix generation of info file for small partial reads. - increase the size of the fid cache - sync mboxes on exit 20090901 idx.c - support for reading cached index only with mailbox vouching for an up-to-date index. - identify and drop messages not seen in new cache. - write extra line of mailbox-specific info - deal with corrupted index entries - use avl tree to search for messages matching index entries - track bad characters and mailbox-specific entries in index - semaphore protects index writing. - fixes to index locking - hold reference to message when writing index. imap.c - fix parsing of imap capabilities - gmail kludges - support for imap lists - more careful ssl handling - fix thumbprint rereading. - todo: keep uid in avl tree - todo: removing messages. mbox.c - fix message references in plumb (don't try to cache deleted messages) - work around broken quoted-printable. - clean up more agressively after mailbox - ignore sequential mime boundaries (nil message) - catch truncated mime parts, work around. - use mailbox-specific sync. - don't attempt to delete messages not deleted by fs interface. ignore messages that were bad, duplicate or went missing to avoid race conditions. mdir.c - save qid information to index to avoid useless directory rescanning - don't try to delete new messages that can't be read - todo: keep file names in avl tree. avoid sorting directory. plan9.c - use bio to read mailbox; eliminate buffer break bugs. pop.c - dont RETR deleted messages strtotm.c - remove private cistrncmp imap4d --------- copy.c - don't append a newline to messages - write the uid when message is saved imap4d.c - deal with message sets that are specified hi:low - avoid crash on bad dates - support for uid+, quota - support for logindisabled - use unsigned uids - hacks to speed up apple mail searches imp.c - new file. use avl tree to work around conflicting sorting requirements. folder must be stored (or at least returned) in uid order. mdirs are sorted by date, which is often different mbox.c - use avl tree to match messages returned from upas/fs to internal structures search.c - avoid reading message info if possible - avoid reading message if possible - special messageid search for apple mail. apple mail searches for every email appended to a folder by message id utils.c - file locking fix - rewrite imp parsing to use an avl tree to work around ordering problems. nodes.c - work around message ordering problems. nedmail ---------- - k and K commands added (persistant mark/unmark mail) - k matching verb; as in gkh prints headers of marked mail - properly set the "seen" flag. - fix various command parsing problems - allow ranges to be specified and then procssed in reverse. - guard against unexpected message reordering - deal with dead fileserver - always use file(1) to check content type of application/octet-stream. many mailers send text out like this - nontraditional: use '*' to mark unseen messages - todo: use avl tree to avoid sorting directory.