win: os_getenv(): use _wgetenv()

This commit is contained in:
Justin M. Keyes
2018-01-28 02:59:44 +01:00
parent 76562fa192
commit 865584dd0c

View File

@@ -36,8 +36,25 @@
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