diff options
author | Bram Moolenaar <Bram@vim.org> | 2011-05-05 18:31:59 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2011-05-05 18:31:59 +0200 |
commit | 3c9c99cb2c7839b96101ba0f41e93f8991adf531 (patch) | |
tree | 6b5cfe20a7ec59b30b38c94804cd8f5a6e5df500 | |
parent | 948733a874e279e4f72977ae2759a5618bdf0fe0 (diff) |
updated for version 7.3.177v7.3.177
Problem: MS-Windows: mkdir() doesn't work properly when 'encoding' is
"utf-8".
Solution: Convert to utf-16. (Yukihiro Nakadaira)
-rw-r--r-- | src/os_win32.c | 24 | ||||
-rw-r--r-- | src/os_win32.h | 2 | ||||
-rw-r--r-- | src/proto/os_win32.pro | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
4 files changed, 28 insertions, 1 deletions
diff --git a/src/os_win32.c b/src/os_win32.c index bf51d24731..179ee64ad9 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -2640,6 +2640,30 @@ mch_isdir(char_u *name) } /* + * Create directory "name". + * Return 0 on success, -1 on error. + */ + int +mch_mkdir(char_u *name) +{ +#ifdef FEAT_MBYTE + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + { + WCHAR *p; + int retval; + + p = enc_to_utf16(name, NULL); + if (p == NULL) + return -1; + retval = _wmkdir(p); + vim_free(p); + return retval; + } +#endif + return _mkdir(name); +} + +/* * Return TRUE if file "fname" has more than one link. */ int diff --git a/src/os_win32.h b/src/os_win32.h index 527d8c7b30..41a44bf0d7 100644 --- a/src/os_win32.h +++ b/src/os_win32.h @@ -191,5 +191,5 @@ Trace(char *pszFormat, ...); #ifdef __BORLANDC__ # define vim_mkdir(x, y) mkdir(x) #else -# define vim_mkdir(x, y) _mkdir(x) +# define vim_mkdir(x, y) mch_mkdir(x) #endif diff --git a/src/proto/os_win32.pro b/src/proto/os_win32.pro index a3f5b3ecde..68d4ee2aa3 100644 --- a/src/proto/os_win32.pro +++ b/src/proto/os_win32.pro @@ -20,6 +20,7 @@ long mch_getperm __ARGS((char_u *name)); int mch_setperm __ARGS((char_u *name, long perm)); void mch_hide __ARGS((char_u *name)); int mch_isdir __ARGS((char_u *name)); +int mch_mkdir __ARGS((char_u *name)); int mch_is_linked __ARGS((char_u *fname)); int win32_fileinfo __ARGS((char_u *name, BY_HANDLE_FILE_INFORMATION *lpFileInfo)); int mch_writable __ARGS((char_u *name)); diff --git a/src/version.c b/src/version.c index 94c21dd66c..0c24bd2f7e 100644 --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 177, +/**/ 176, /**/ 175, |