Index: locale.c =================================================================== --- locale.c.orig +++ locale.c @@ -29,6 +29,10 @@ #include "bashintl.h" #include "bashansi.h" #include +#include +#include +#include +#include #include "chartypes.h" #include @@ -68,6 +72,15 @@ void set_default_locale () { #if defined (HAVE_SETLOCALE) + struct stat st; + + if (stat("/usr/lib/locale/locale-archive", &st) == 0 && st.st_size == 0) { + errno = EINVAL; + sys_error("set_default_locale: broken locale"); + fprintf (stderr, "%s: Please remove /usr/lib/locale/locale-archive\n", + get_name_for_error()); + sleep(1); + } default_locale = setlocale (LC_ALL, ""); if (default_locale) default_locale = savestring (default_locale);