Hi David,
Agreed, this needs a good cleaning.
I'd like to see a lot of the noddy `-foo sets bool foo, -nofoo clears
it'-case processing in a switch disappear into a central, new,
option-processing routine.
$ post '-sasl -user' -foobar
seen -sasl
post: -foobar unknown
$
I'd say it's more pilot error. If we could catch and deal with it
robustly, great, but if not, OK.
It can come about in a script when options are being built up in a
variable and «"$opt"» is used to pass them with erroneous quotes out of
habit. It silently works when $opt only has -foo xor -bar, it silently
half works when it has both and may go unnoticed for a while.
We could definitely catch it since `-sasl' takes no parameter and thus
the problem is smatch() taking the following space, and the definition's
end, as a match. Presumably, smatch() is called with a string from a
file and it's intended the caller moves on by strlen("-sasl"), skips
blanks, and calls smatch() again. If I'm right, then it's wrongly
been coerced into two roles rather than being told which it should do as
a parameter, or better still, force the caller to terminate the word
being passed in so it's just like an argv[n].
--
Cheers, Ralph.
https://plus.google.com/+RalphCorderoy
--
Nmh-workers
https://lists.nongnu.org/mailman/listinfo/nmh-workers