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.