Created
June 15, 2012 11:49
-
-
Save mattn/2936050 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -r 869a63c3f311 src/eval.c | |
--- a/src/eval.c Wed Jun 13 19:19:41 2012 +0200 | |
+++ b/src/eval.c Fri Jun 15 20:49:09 2012 +0900 | |
@@ -23554,6 +23554,25 @@ | |
return -1; | |
} | |
+#ifdef WIN3264 | |
+#if _WIN32_WINNT >= 0x0500 | |
+ /* Note: don't occur error if _WIN32_WINNT < 0x0500. */ | |
+ if (vim_strchr(*fnamep, '~')) | |
+ { | |
+ p = alloc(_MAX_PATH + 1); | |
+ if (p) | |
+ { | |
+ if (GetLongPathName(*fnamep, p, MAXPATHL)) | |
+ { | |
+ vim_free(*bufp); | |
+ *bufp = *fnamep = p; | |
+ } else | |
+ vim_free(p); | |
+ } | |
+ } | |
+#endif | |
+#endif | |
+ | |
/* Append a path separator to a directory. */ | |
if (mch_isdir(*fnamep)) | |
{ | |
diff -r 869a63c3f311 src/misc1.c | |
--- a/src/misc1.c Wed Jun 13 19:19:41 2012 +0200 | |
+++ b/src/misc1.c Fri Jun 15 20:49:09 2012 +0900 | |
@@ -4499,7 +4499,7 @@ | |
{ | |
size_t dirlen = 0, envlen = 0; | |
size_t len; | |
- char_u *homedir_env; | |
+ char_u *homedir_env, *homedir_env_orig; | |
char_u *p; | |
if (src == NULL) | |
@@ -4525,9 +4525,21 @@ | |
dirlen = STRLEN(homedir); | |
#ifdef VMS | |
- homedir_env = mch_getenv((char_u *)"SYS$LOGIN"); | |
+ homedir_env_orig = homedir_env = mch_getenv((char_u *)"SYS$LOGIN"); | |
#else | |
- homedir_env = mch_getenv((char_u *)"HOME"); | |
+ homedir_env_orig = homedir_env = mch_getenv((char_u *)"HOME"); | |
+#endif | |
+#if defined(FEAT_MODIFY_FNAME) || defined(WIN3264) | |
+ if (vim_strchr(homedir_env, '~')) | |
+ { | |
+ int usedlen = 0; | |
+ int flen; | |
+ char_u *fbuf = NULL; | |
+ flen = (int)STRLEN(homedir_env); | |
+ (void)modify_fname(":p", &usedlen, &homedir_env, | |
+ &fbuf, &flen); | |
+ homedir_env[STRLEN(homedir_env)-1] = 0; | |
+ } | |
#endif | |
if (homedir_env != NULL && *homedir_env == NUL) | |
@@ -4585,6 +4597,9 @@ | |
/* if (dstlen == 0) out of space, what to do??? */ | |
*dst = NUL; | |
+ | |
+ if (homedir_env != homedir_env_orig) | |
+ vim_free(homedir_env); | |
} | |
/* |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment