diff src/os_mswin.c @ 23:3f44e9abe4ec v7.0015

updated for version 7.0015
author vimboss
date Mon, 06 Sep 2004 17:44:46 +0000
parents db5102f7e29f
children 404aac550f35
line wrap: on
line diff
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -443,6 +443,10 @@ vim_stat(const char *name, struct stat *
     p = buf + strlen(buf);
     if (p > buf)
 	--p;
+#ifdef FEAT_MBYTE
+    if (p > buf && has_mbyte)
+	p -= (*mb_head_off)(buf, p);
+#endif
     if (p > buf && (*p == '\\' || *p == '/') && p[-1] != ':')
 	*p = NUL;
 #ifdef FEAT_MBYTE
@@ -624,6 +628,23 @@ mch_chdir(char *path)
     if (*path == NUL)		/* drive name only */
 	return 0;
 
+#ifdef FEAT_MBYTE
+    if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+    {
+	WCHAR	*p = enc_to_ucs2(path, NULL);
+	int	n;
+
+	if (p != NULL)
+	{
+	    n = _wchdir(p);
+	    vim_free(p);
+	    if (n == 0)
+		return 0;
+	    /* Retry with non-wide function (for Windows 98). */
+	}
+    }
+#endif
+
     return chdir(path);	       /* let the normal chdir() do the rest */
 }