Sam Steingold asked: > Does clisp need to know whether LC_MESSAGES is supported by the system, > or is a fake one defined by libintl or gnulib. > ... > > No, this is not needed: gettext's libintl.h already defines LC_MESSAGES when > > needed, and clisp uses libintl.h. > > CLISP includes libintl.h only if ENABLE_NLS is defined (i.e., when > gettext is present). > It uses HAVE_LC_MESSAGES in spvw_ctype.d:init_ctype which is called > unconditionally in spvw.d. > I.e., on platforms without gettext where LC_MESSAGES is not defined > init_ctype is still called and its call > > setlocale(LC_MESSAGES,""); > > must be guarded by either "#if HAVE_LC_MESSAGES" or "#ifdef LC_MESSAGES".
By looking at the clisp code history: $ hg annotate -r 11858 spvw_ctype.d $ hg diff -r 3562 -r 3563 I think the point was to allow the setlocale() call to be enabled even on platforms where <locale.h> does not have LC_MESSAGES (namely, native Windows). The macro HAVE_LC_MESSAGES means - on Unix platforms, that LC_MESSAGES was found in <locale.h>, - on Windows platforms, that gettext is in use (always). I think you can remove the #if because all Unix platforms nowadays have LC_MESSAGES. Bruno -- In memoriam The men and boys of Srebenica <http://en.wikipedia.org/wiki/Srebrenica_massacre>