diff options
-rw-r--r-- | src/nvim/os/env.c | 33 | ||||
-rw-r--r-- | test/functional/eval/let_spec.lua | 20 |
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) |