summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2011-05-05 18:31:59 +0200
committerBram Moolenaar <Bram@vim.org>2011-05-05 18:31:59 +0200
commit3c9c99cb2c7839b96101ba0f41e93f8991adf531 (patch)
tree6b5cfe20a7ec59b30b38c94804cd8f5a6e5df500
parent948733a874e279e4f72977ae2759a5618bdf0fe0 (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.c24
-rw-r--r--src/os_win32.h2
-rw-r--r--src/proto/os_win32.pro1
-rw-r--r--src/version.c2
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,