--- a/lib/getlocalename_l-unsafe.c +++ b/lib/getlocalename_l-unsafe.c @@ -658,9 +658,10 @@ getlocalename_l_unsafe (int category, locale_t locale) }; const char *name = ((struct __locale_t *) locale)->mb_cur_max == 4 ? "C.UTF-8" : "C"; return (struct string_with_storage) { name, STORAGE_INDEFINITE }; -#elif defined __redox__ && HAVE_GETLOCALENAME_L - const char *name = getlocalename_l (category, locale); - return (struct string_with_storage) { name != NULL ? name : "", STORAGE_OBJECT }; +#elif defined __redox__ && !HAVE_GETLOCALENAME_L + /* Redox's relibc has no getlocalename_l; return the closest matching + POSIX locale name without referencing a non-existent symbol. */ + return (struct string_with_storage) { "C", STORAGE_INDEFINITE }; #else #error "Please port gnulib getlocalename_l-unsafe.c to your platform! Report this to bug-gnulib." #endif