mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-06-12 23:01:16 -03:00
fix handling of non-ASCII chars in C locale
The relevant standards allow the mbtowc/mbrtowc functions to reject non-ASCII characters (i.e., chars with the high bit set) when the locale is C or POSIX. The BSD libraries (e.g., on OS X) don't do this but the GNU libraries (e.g., on Linux) do. Like most programs we need the C/POSIX locales to allow arbitrary bytes. So explicitly check if we're in a single-byte locale (which would also include ISO-8859 variants) and simply pass-thru the chars without encoding or decoding. Fixes #2802.
This commit is contained in:
@@ -377,14 +377,13 @@ static void setup_path()
|
||||
|
||||
int env_set_pwd()
|
||||
{
|
||||
wchar_t dir_path[4096];
|
||||
wchar_t *res = wgetcwd(dir_path, 4096);
|
||||
if (!res)
|
||||
wcstring res = wgetcwd();
|
||||
if (res.empty())
|
||||
{
|
||||
debug(0, _(L"Could not determine current working directory. Is your locale set correctly?"));
|
||||
return 0;
|
||||
}
|
||||
env_set(L"PWD", dir_path, ENV_EXPORT | ENV_GLOBAL);
|
||||
env_set(L"PWD", res.c_str(), ENV_EXPORT | ENV_GLOBAL);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user