Eric Wong <[email protected]> wrote:
> Konstantin Ryabitsev <[email protected]> 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....)