summaryrefslogtreecommitdiffstats
path: root/osdep/io.c
diff options
context:
space:
mode:
authorAvi Halachmi (:avih) <avihpit@yahoo.com>2020-08-05 14:57:23 +0300
committeravih <avih@users.noreply.github.com>2020-08-16 12:24:19 +0300
commit557e9d95317baf54e035e4fabfd45b15e6d6e708 (patch)
treef6c5331278d5e681275f34734ab2a5d5fca81819 /osdep/io.c
parent7f67c5250a627c13e8797ff6fa5e42deec50bfdd (diff)
downloadmpv-557e9d95317baf54e035e4fabfd45b15e6d6e708.tar.bz2
mpv-557e9d95317baf54e035e4fabfd45b15e6d6e708.tar.xz
win32: scripting utils.get_env_list(): use UTF-8
lua/js utils.get_env_list() uses `environ' which was ANSI, thus it broke any unicode names/values. mpv already has an internal utf8_environ for win32, but it's used only at the getenv(..) wrapper and not exposed in itself, and also it has lazy initialization - on first getenv() call. Now `environ' maps to a function which ensures initialization while keeping it an l-value (like posix expects). The cost of this fuglyness is that files should include osdep/io.h (which now declares environ as extern) rather than declaring it themselves, or else the build will break on mingw.
Diffstat (limited to 'osdep/io.c')
-rw-r--r--osdep/io.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/osdep/io.c b/osdep/io.c
index db61a705fd..d4dcfc6fba 100644
--- a/osdep/io.c
+++ b/osdep/io.c
@@ -682,6 +682,12 @@ char *mp_getenv(const char *name)
return NULL;
}
+char ***mp_penviron()
+{
+ mp_getenv(""); // ensure init
+ return &utf8_environ; // `environ' should be an l-value
+}
+
off_t mp_lseek(int fd, off_t offset, int whence)
{
HANDLE h = (HANDLE)_get_osfhandle(fd);