Common globals

There are a few common global variables that I use in most of my projects:

This pointer to a character string contains the version string. By convention, the version is always five characters: A.BCDE, with A being the major version number, and BCDE being the build number. The version is the only thing that's stored in the version.c file.
A pointer to a character string containing the name of the program. (This is an old convention of mine; QNX Neutrino now has the __progname variable as well.)
A pointer to a character string the same length as progname, filled with blank characters (it gets used in multi-line messages).

I strive to have all messages printed from every utility include the progname variable. This is useful if you're running a bunch of utilities and redirecting their output to a common log file or the console.

You'll often see code like this in my programs:

fprintf (stderr, "%s:  error message...\n", progname, ...);