As some people at GUADEC asked me to continue the technical stories about Tinymail, here’s a preview on how it goes:
When you open a local E-mail folder that is stored on a MMC card, you obviously need to open some resources. Those include, for example, the summary’s mmapable file. You might also need to opendir() the directory and perhaps even chdir() to it? Perhaps rename items from a “new” or “tmp” to a “cur” subdirectory? In the process you might have left a directory or two open?
Suddenly … you get bug reports from system testers telling you that if the E-mail client is running, they can’t unmount the MMC card.
Today, Tinymail’s implementation for a few local E-mail folders makes sure that no directory related resources are left open, chdir() always goes to the root folder and the mapped files are closed as soon as the last component stopped using the folder.
Isn’t doing a chdir() liable to be rather inconvenient for the application?
There’s usually no reason to do a chdir, indeed.
And thanks to you, camel-lite can use maildir folders on FAT-formatted drives (very common for memory cards and USB sticks), whereas regular camel (in regular Evolution) fails in obsucre ways. I doubt that the Windows port of Evolution works very well on FAT drives without these changes.
Regretfully I had to deviate from the Maildir standard for that. That standard requires the usage of certain characters that are not supported on FAT-formatted drives.
There’s no standard for Maildir on FAT-formatted partitions, so the current solution was to replace all those characters with underscores.
This indeed means that migrating the Maildir on your MMC to another E-mail solution might not work. Sadly. If the people who specified Maildir would stick their heads together and just TELL US what characters to use on FAT32, that would of course solve a lot of problems about this.