Re: [PATCH] lei: support reading MH for convert+import+index
Eric Wong wrote: > Konstantin Ryabitsev wrote: > > Nice, so eventually we should be able to specify the following instead of > > faking out a maildir? > > > > watch=mh:/var/spool/mlmmj/list.name/archive > > Yes, that's the plan. Well, reading /usr/lib/python*/mailbox.py on my system makes me cry: def pack(self): """Re-name messages to eliminate numbering gaps. Invalidates keys.""" That's for the Python stdlib MH class where I was looking for a non-racy write implementation. And checking the nmh source[1] reveals packing happens there, too... Packing makes sense for a memory-efficient representation of .mh_sequences without resorting to a tree or hash table; but it invalidates `lei index' and forces -watch to do a full rescan if anybody uses pack. Ugh... Fortunately, this doesn't seem to be the default behavior of nmh (`nopack' appears to be the default). [1] https://git.savannah.gnu.org/git/nmh.git sbr/folder_pack.c > > > inotify|EVFILT_VNODE watches aren't supported, yet, either. At least lei should have a reasonably fast way to handle this using mail_sync.sqlite3 to compare SHA-(1|256) without having to decode MIME/QP/Base-64 to get comparisons... I suppose -watch needs to start using that, too... > > In the case of mlmmj it's sufficient to watch the > > /var/spool/mlmmj/list.name/index file for updates, but I don't know how well > > this lends itself to other implementations (I am not at all familiar with > > MH). > > Just watching the directory itself is sufficient (like Maildir) > and will report new files. We just have to check /\A[0-9]+\z/ At least mlmmj won't pack because it's an archive (or at least it shouldn't)
Re: [PATCH] lei: support reading MH for convert+import+index
Konstantin Ryabitsev wrote: > Nice, so eventually we should be able to specify the following instead of > faking out a maildir? > > watch=mh:/var/spool/mlmmj/list.name/archive Yes, that's the plan. > > inotify|EVFILT_VNODE watches aren't supported, yet, either. > > In the case of mlmmj it's sufficient to watch the > /var/spool/mlmmj/list.name/index file for updates, but I don't know how well > this lends itself to other implementations (I am not at all familiar with MH). Just watching the directory itself is sufficient (like Maildir) and will report new files. We just have to check /\A[0-9]+\z/
Re: [PATCH] lei: support reading MH for convert+import+index
On Sat, Dec 16, 2023 at 01:09:32PM +, Eric Wong wrote: > The MH format is widely-supported and used by various MUAs such > as mutt and sylpheed, and a MH-like format is used by mlmmj for > archives, as well. Locking implementations for writes are > inconsistent, so this commit doesn't support writes, yet. Nice, so eventually we should be able to specify the following instead of faking out a maildir? watch=mh:/var/spool/mlmmj/list.name/archive > inotify|EVFILT_VNODE watches aren't supported, yet, either. In the case of mlmmj it's sufficient to watch the /var/spool/mlmmj/list.name/index file for updates, but I don't know how well this lends itself to other implementations (I am not at all familiar with MH). -K