Patch 8.1.0895 (after 8.1.0879)
Problem: MS-Windows: dealing with temp name encoding not quite right.
Solution: Use more wide functions. (Ken Takata, closes #3921)
Files: src/fileio.c
*** ../vim-8.1.0894/src/fileio.c 2019-02-08 14:41:27.007922657 +0100
--- src/fileio.c 2019-02-10 23:25:09.355719242 +0100
***************
*** 7322,7327 ****
--- 7322,7329 ----
{
#ifdef USE_TMPNAM
char_u itmp[L_tmpnam]; /* use tmpnam() */
+ #elif defined(WIN3264)
+ WCHAR itmp[TEMPNAMELEN];
#else
char_u itmp[TEMPNAMELEN];
#endif
***************
*** 7443,7493 ****
#else /* TEMPDIRNAMES */
# ifdef WIN3264
! char szTempFile[_MAX_PATH + 1];
! char buf4[4];
char_u *retval;
char_u *p;
! STRCPY(itmp, "");
! if (GetTempPath(_MAX_PATH, szTempFile) == 0)
{
! szTempFile[0] = '.'; /* GetTempPath() failed, use current dir */
! szTempFile[1] = NUL;
}
! strcpy(buf4, "VIM");
buf4[2] = extra_char; /* make it "VIa", "VIb", etc. */
! if (GetTempFileName(szTempFile, buf4, 0, (LPSTR)itmp) == 0)
return NULL;
if (!keep)
! /* GetTempFileName() will create the file, we don't want that */
! (void)DeleteFile((LPSTR)itmp);
! /* Backslashes in a temp file name cause problems when filtering with
! * "sh". NOTE: This also checks 'shellcmdflag' to help those people who
! * didn't set 'shellslash'. */
! retval = vim_strsave(itmp);
if (*p_shcf == '-' || p_ssl)
for (p = retval; *p; ++p)
if (*p == '\\')
*p = '/';
-
- #if defined(WIN3264)
- if (enc_utf8)
- {
- int len;
- char_u *pp = NULL;
-
- // Convert from active codepage to UTF-8 since mch_call_shell()
- // converts command-line to wide string from encoding.
- acp_to_enc(retval, (int)STRLEN(retval), &pp, &len);
- if (pp != NULL)
- {
- vim_free(retval);
- return pp;
- }
- }
- #endif
-
return retval;
# else /* WIN3264 */
--- 7445,7477 ----
#else /* TEMPDIRNAMES */
# ifdef WIN3264
! WCHAR wszTempFile[_MAX_PATH + 1];
! WCHAR buf4[4];
char_u *retval;
char_u *p;
! wcscpy(itmp, L"");
! if (GetTempPathW(_MAX_PATH, wszTempFile) == 0)
{
! wszTempFile[0] = L'.'; // GetTempPathW() failed, use current dir
! wszTempFile[1] = NUL;
}
! wcscpy(buf4, L"VIM");
buf4[2] = extra_char; /* make it "VIa", "VIb", etc. */
! if (GetTempFileNameW(wszTempFile, buf4, 0, itmp) == 0)
return NULL;
if (!keep)
! // GetTempFileName() will create the file, we don't want that
! (void)DeleteFileW(itmp);
! // Backslashes in a temp file name cause problems when filtering with
! // "sh". NOTE: This also checks 'shellcmdflag' to help those people who
! // didn't set 'shellslash'.
! retval = utf16_to_enc(itmp, NULL);
if (*p_shcf == '-' || p_ssl)
for (p = retval; *p; ++p)
if (*p == '\\')
*p = '/';
return retval;
# else /* WIN3264 */
*** ../vim-8.1.0894/src/version.c 2019-02-10 23:18:49.038187525 +0100
--- src/version.c 2019-02-10 23:25:57.095404785 +0100
***************
*** 785,786 ****
--- 785,788 ----
{ /* Add new patch number below this line */
+ /**/
+ 895,
/**/
--
NEIL INNES PLAYED: THE FIRST SELF-DESTRUCTIVE MONK, ROBIN'S LEAST FAVORITE
MINSTREL, THE PAGE CRUSHED BY A RABBIT, THE OWNER OF A DUCK
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.