From mboxrd@z Thu Jan 1 00:00:00 1970 From: wmorgan-sup@masanjin.net (William Morgan) Date: Tue, 22 Jan 2008 21:20:16 -0800 Subject: [sup-talk] [PATCH] modulo the file size in a maildir, so it's <= 7 digits. In-Reply-To: <1201034511-sup-3452@tomsk> References: <1200646334-sup-3256@archie> <1200970931-sup-8284@south> <1201034511-sup-3452@tomsk> Message-ID: <1201065536-sup-7142@south> Reformatted excerpts from Marcus Williams's message of 2008-01-22: > :) Why do you use mtime + filesize rather than just the filename > (before the colon) as the id? Other than the flags on files (after the > colon) does this ever change? Exactly the type of question man was not meant to ask. The short answer is: because maildir filenames, while unique, are not integers, and Sup needs integers. The long answer is: in order to have a mailstore-format-indepedent way of keeping track of messages that haven't been added to the index (as opposed to messages which the mailstore thinks are unread, which is a different question entirely), Sup uses message identifiers that are unique, increasing, but not necessarily continguous, integers. Then Sup can keep track of the last id that was added to the index for each source, and polling consists of simply adding messages for which the id is greater than the last id that Sup added from that source. The other way to do this would be to have each source type maintain its own logic for returning which messages hadn't been added to the index. That could have been implemented by either pawing through the index upon startup for each message (unacceptably slow for large mailstores), or by maintaining a separate listing of added messages (probably very large and seems a bit silly). The terrible part about this solution, of course, is that Sup can't uniquely represent two messages that have the same mtime and the same size. One day I'm sure this will cause pain. -- William