The index is now a central part of the system, as it should. We store
articles just like git stores its objects, in a two-tier directory.
For example, article whose message id hashes to deadbeef is stored at
index/de/ad/deadbeef. Articles in groups are now hardlinked to the
index, the main repository of articles.
Group's article names are now cached in groups/<g>/.meta/. The meta
information is incrementally augmented every time it's necessary.
Commands LIST and GROUP are now served at constant time.
Other little fixes were done a long the way.
We're ready to tackle the new design on the index, so we're going live
with the current changes so that we can use it every day and spot any
mishaps we might find (while we write the new index subsystem).
- Converts Makefile to UNIX line termination.
Makefiles cannot be formatted with DOS CRLF because, otherwise, we
could not escape \n to continue on a second line. We end up escaping
\r and not \n.
- Fixes remove-account!
Procedure delete-if ``may modify sequence'', but we cannot be sure it
will modify it. There are cases in which it does and there are cases
in which it doesn't. Seeing it did modify in one case, I incorrectly
assumed it would modify in all cases---such is life. Since I do want
to modify it always, I wrote delete-if*, which in calls setf to be
sure the list is overwritten.
- Avoids (load'ing "~/.sbclrc") and, instead, does what Quicklisp does.
It's not always the case that ~/.sbclrc exists. But Quicklisp in each
installation knows what to do. So we do what Quicklisp does in each
script that we use.
- Frees us from using sb-ext:{file-exists,file-does-not-exist}
Turns out SBCL 1.2.4.debian doesn't have these symbols.
- Adds command-line parsing.
- Adds install target to Makefile.
- Rewrites Makefile with a new strategy.
- Adds the daemon-tls/ service example.
- Adds the daemon service example.
- Convers all text files to LF instead of CRLF.