main: try to force an UTF-8 locale if user’s locale isn’t UTF-8

This commit is contained in:
Daniel Eklöf 2022-01-11 21:37:03 +01:00
parent 9873d2732f
commit 827bfef550
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

19
main.c
View file

@ -436,6 +436,25 @@ main(int argc, char *const *argv)
user_notification_add_fmt(&user_notifications, USER_NOTIFICATION_ERROR,
"locale '%s' is not UTF-8", locale);
/*
* Try to force an UTF-8 locale. If we succeed, launch the
* users shell as usual, but add a user-notification saying
* the locale has been changed.
*/
if (setlocale(LC_CTYPE, "C.UTF-8") != NULL) {
user_notification_add(
&user_notifications, USER_NOTIFICATION_WARNING,
xstrdup("locale forcibly changed to C.UTF-8"));
bad_locale = false;
}
else if (setlocale(LC_CTYPE, "en_US.UTF-8") != NULL) {
user_notification_add(
&user_notifications, USER_NOTIFICATION_WARNING,
xstrdup("locale forcibly changed to en_US.UTF-8"));
bad_locale = false;
}
}
struct config conf = {NULL};