aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/os/env.c33
-rw-r--r--test/functional/eval/let_spec.lua20
2 files changed, 12 insertions, 41 deletions
diff --git a/src/nvim/os/env.c b/src/nvim/os/env.c
index 4f14e4eee3..cbbd36dc8e 100644
--- a/src/nvim/os/env.c
+++ b/src/nvim/os/env.c
@@ -36,25 +36,8 @@
const char *os_getenv(const char *name)
FUNC_ATTR_NONNULL_ALL
{
-#if !defined(WIN32)
const char *e = getenv(name);
return e == NULL || *e == NUL ? NULL : e;
-#else
- wchar_t *wname;
- utf8_to_utf16(name, &wname);
- if (wname == NULL) {
- xfree(wname);
- return NULL;
- }
- wchar_t *wvalue = _wgetenv(wname);
- char *value;
- int rv = utf16_to_utf8(wvalue, &value);
- if (rv != 0 || *value == NUL) {
- xfree(value);
- return NULL;
- }
- return value; // TODO(jmk): this was allocated, but callers don't free it ...
-#endif
}
/// Returns `true` if the environment variable, `name`, has been defined
@@ -72,21 +55,9 @@ int os_setenv(const char *name, const char *value, int overwrite)
if (!overwrite && os_getenv(name) != NULL) {
return 0;
}
- wchar_t *wname;
- utf8_to_utf16(name, &wname);
- if (wname == NULL) {
- return -1;
- }
- wchar_t *wvalue;
- utf8_to_utf16(value, &wvalue);
- if (wvalue == NULL) {
- return -1;
- }
- int rv = (int)_wputenv_s(wname, wvalue);
- xfree(wname); // Unlike unix putenv(), we can free after _wputenv_s().
- xfree(wvalue);
+ int rv = (int)_putenv_s(name, value);
if (rv != 0) {
- ELOG("_wputenv_s failed: %d: %s", rv, uv_strerror(rv));
+ ELOG("_putenv_s failed: %d: %s", rv, uv_strerror(rv));
return -1;
}
return 0;
diff --git a/test/functional/eval/let_spec.lua b/test/functional/eval/let_spec.lua
index 050cff3c22..ff71daab74 100644
--- a/test/functional/eval/let_spec.lua
+++ b/test/functional/eval/let_spec.lua
@@ -45,15 +45,15 @@ describe(':let', function()
]=])
end)
- it("sets environment variables", function()
- local multibyte_multiline = [[\p* .ม .ม .ม .ม่ .ม่ .ม่ ֹ ֹ ֹ .ֹ .ֹ .ֹ ֹֻ ֹֻ ֹֻ
- .ֹֻ .ֹֻ .ֹֻ ֹֻ ֹֻ ֹֻ .ֹֻ .ֹֻ .ֹֻ ֹ ֹ ֹ .ֹ .ֹ .ֹ ֹ ֹ ֹ .ֹ .ֹ .ֹ ֹֻ ֹֻ
- .ֹֻ .ֹֻ .ֹֻ a a a ca ca ca à à à]]
- command("let $NVIM_TEST1 = 'AìaB'")
- command("let $NVIM_TEST2 = 'AaあB'")
- command("let $NVIM_TEST3 = '"..multibyte_multiline.."'")
- eq('AìaB', eval('$NVIM_TEST1'))
- eq('AaあB', eval('$NVIM_TEST2'))
- eq(multibyte_multiline, eval('$NVIM_TEST3'))
+ it("multibyte environment variables", function()
+ command("let $NVIM_TEST = 'AìaB'")
+ eq('AìaB', eval('$NVIM_TEST'))
+ command("let $NVIM_TEST = 'AaあB'")
+ eq('AaあB', eval('$NVIM_TEST'))
+ local mbyte = [[\p* .ม .ม .ม .ม่ .ม่ .ม่ ֹ ֹ ֹ .ֹ .ֹ .ֹ ֹֻ ֹֻ ֹֻ
+ .ֹֻ .ֹֻ .ֹֻ ֹֻ ֹֻ ֹֻ .ֹֻ .ֹֻ .ֹֻ ֹ ֹ ֹ .ֹ .ֹ .ֹ ֹ ֹ ֹ .ֹ .ֹ .ֹ ֹֻ ֹֻ
+ .ֹֻ .ֹֻ .ֹֻ a a a ca ca ca à à à]]
+ command("let $NVIM_TEST = '"..mbyte.."'")
+ eq(mbyte, eval('$NVIM_TEST'))
end)
end)