diff options
author | wm4 <wm4@nowhere> | 2014-02-03 22:11:33 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-02-03 22:12:30 +0100 |
commit | 8edf2cda4b9b63dc4bbfab0e77dca533be5dfc43 (patch) | |
tree | e19332cf372bb7b30f382ab146c4500d48ea5a5c /osdep | |
parent | d91b9e9f3b40798b65819f3bf2e13b7e550f5c80 (diff) | |
download | mpv-8edf2cda4b9b63dc4bbfab0e77dca533be5dfc43.tar.bz2 mpv-8edf2cda4b9b63dc4bbfab0e77dca533be5dfc43.tar.xz |
io: make MP_PATH_MAX private to win32 code
The win32 code is the only thing which actually needs this (and it's
used to make emulation of UTF-8 filename APIs easier).
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/io.c | 10 | ||||
-rw-r--r-- | osdep/io.h | 12 |
2 files changed, 10 insertions, 12 deletions
diff --git a/osdep/io.c b/osdep/io.c index 2e2603eb7f..c243b39de4 100644 --- a/osdep/io.c +++ b/osdep/io.c @@ -217,6 +217,16 @@ FILE *mp_fopen(const char *filename, const char *mode) return res; } +// Windows' MAX_PATH/PATH_MAX/FILENAME_MAX is fixed to 260, but this limit +// applies to unicode paths encoded with wchar_t (2 bytes on Windows). The UTF-8 +// version could end up bigger in memory. In the worst case each wchar_t is +// encoded to 3 bytes in UTF-8, so in the worst case we have: +// wcslen(wpath) * 3 <= strlen(utf8path) +// Thus we need MP_PATH_MAX as the UTF-8/char version of PATH_MAX. +// Also make sure there's free space for the terminating \0. +// (For codepoints encoded as UTF-16 surrogate pairs, UTF-8 has the same length.) +#define MP_PATH_MAX (FILENAME_MAX * 3 + 1) + struct mp_dir { DIR crap; // must be first member _WDIR *wdir; diff --git a/osdep/io.h b/osdep/io.h index 9f715d904e..5fa36abb1e 100644 --- a/osdep/io.h +++ b/osdep/io.h @@ -54,16 +54,6 @@ char *mp_to_utf8(void *talloc_ctx, const wchar_t *s); #include <sys/stat.h> #include <fcntl.h> -// Windows' MAX_PATH/PATH_MAX/FILENAME_MAX is fixed to 260, but this limit -// applies to unicode paths encoded with wchar_t (2 bytes on Windows). The UTF-8 -// version could end up bigger in memory. In the worst case each wchar_t is -// encoded to 3 bytes in UTF-8, so in the worst case we have: -// wcslen(wpath) * 3 <= strlen(utf8path) -// Thus we need MP_PATH_MAX as the UTF-8/char version of PATH_MAX. -// Also make sure there's free space for the terminating \0. -// (For codepoints encoded as UTF-16 surrogate pairs, UTF-8 has the same length.) -#define MP_PATH_MAX (FILENAME_MAX * 3 + 1) - void mp_get_converted_argv(int *argc, char ***argv); int mp_stat(const char *path, struct stat *buf); @@ -94,8 +84,6 @@ char *mp_getenv(const char *name); #else /* __MINGW32__ */ -#define MP_PATH_MAX PATH_MAX - #define mp_stat(...) stat(__VA_ARGS__) #endif /* __MINGW32__ */ |