46 lines
1.2 KiB
Bash
Executable File
46 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# As reported in
|
|
# https://github.com/notepad-plus-plus/notepad-plus-plus/issues/12417:
|
|
#
|
|
# If certain locale related environmental variables are set,
|
|
# notepad++.exe throws the exception:
|
|
#
|
|
# locale::facet::_s_create_c_locale name not valid
|
|
#
|
|
# To prevent the exception from being thrown, these environmental
|
|
# variables have to be unset.
|
|
#
|
|
# To set the localization, -L can be used, see notepad++ --help,
|
|
|
|
|
|
# determine npplocale, if one of LC_ALL LC_MESSAGES LANG is set,
|
|
# else respect notepad++'s language setting
|
|
for locale in $LC_ALL $LC_MESSAGES $LANG
|
|
do
|
|
if [[ $locale =~ ^([a-z]{2}) ]]
|
|
then
|
|
# looks like a browser language code, use it
|
|
npplocale="-L${BASH_REMATCH[1]}"
|
|
# first match wins
|
|
break
|
|
fi
|
|
done
|
|
|
|
# unset npplocale if the -L argument was set explicitly
|
|
for arg in "$@"
|
|
do
|
|
if [[ $arg =~ ^-L ]]
|
|
then
|
|
npplocale=""
|
|
fi
|
|
done
|
|
|
|
# https://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html
|
|
# shows how to determine environmental variables that impact the locale
|
|
# These are (impact verified by test):
|
|
unset LANG LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_MONETARY LC_TIME
|
|
|
|
# execute notepad++ securely with expected localization
|
|
exec ${MINGW_PREFIX}/lib/notepad++/notepad++.exe $npplocale "$@"
|