Corey, you've hit the nail on the head.
Geeks are good at diagnosis, poor at solution.
My model for error messages is:
fprintf(stderr, "%s[%d]: %s..."
pgm,__LINE__, "blah, blah, blah...");
where pgm is set to the program name, either by parsing argv, or setting it by hand.
Also, I _never_ use the word, "inva-id". The program knows-or should know-the
_exact_ reason to issue the message.
The "%s[%d]: " is #defined as MSGFMT so it can be easily changed.
GPGP key: 0x3e0e49ddb07f9aae