error and progname
==================

The error function uses the program_name variable, but does not depend on the progname module.  Why?  Because error is released under the LGPL, whereas progname is GPL.  RMS does not want additional baggage accompanying the error module, so an LGPL user must provide their own replacement program_name, and a GPL user should manually specify using the progname module.

Additionally, using the progname module is not something that can be done implicitly. It requires that every main() function be modified to set program_name as one of its first actions.