So it turns out the completely untested NOTMUCH_OPT_STRING code was (surpise!) buggy. I also fixed a few remaining formatting issues, added a unit test, and some documentation (in command-line-arguements.h). I also reordered option description struct so that the two mandatory (in the sense of being non-zero) members come first.