changeset 33710:385aaea67d33 v9.0.2089

patch 9.0.2089: sound_playfile() fails when using powershell Commit: https://github.com/vim/vim/commit/15d270019e88a8ba67618adf5efe1aaa81ce354b Author: GuyBrush <miguel.barro@live.com> Date: Sat Nov 4 09:48:53 2023 +0100 patch 9.0.2089: sound_playfile() fails when using powershell Problem: sound_playfile() fails when using powershell Solution: quote filename using doublequotes, don't escape filename, because it doesn't use the shell Avoiding powershell escaping because mci open command doesn't support single quoted filenames: open 'C:\whatever\sound.wav' is not valid. closes: #13471 Signed-off-by: GuyBrush <miguel.barro@live.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sat, 04 Nov 2023 10:00:05 +0100
parents 4285faa7a4fb
children a48901c1ce34
files src/Make_mvc.mak src/sound.c src/version.c
diffstat 3 files changed, 12 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -1272,7 +1272,7 @@ all:	$(MAIN_TARGET) \
 $(VIM): $(VIM).exe
 
 $(OUTDIR):
-	if not exist $(OUTDIR)/nul  mkdir $(OUTDIR)
+	if not exist $(OUTDIR)/nul  mkdir $(OUTDIR:/=\)
 
 CFLAGS_INST = /nologo /O2 -DNDEBUG -DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) $(CFLAGS_DEPR)
 
--- a/src/sound.c
+++ b/src/sound.c
@@ -322,7 +322,7 @@ sound_wndproc(HWND hwnd, UINT message, W
 
 		    vim_snprintf(buf, sizeof(buf), "close sound%06ld",
 								p->snd_id);
-		    mciSendString(buf, NULL, 0, 0);
+		    mciSendStringA(buf, NULL, 0, 0);
 
 		    long result =   wParam == MCI_NOTIFY_SUCCESSFUL ? 0
 				  : wParam == MCI_NOTIFY_ABORTED ? 1 : 2;
@@ -376,7 +376,7 @@ f_sound_playfile(typval_T *argvars, typv
 {
     long	newid = sound_id + 1;
     size_t	len;
-    char_u	*p, *esc;
+    char_u	*p, *filename;
     WCHAR	*wp;
     soundcb_T	*soundcb;
     char	buf[32];
@@ -385,17 +385,15 @@ f_sound_playfile(typval_T *argvars, typv
     if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL)
 	return;
 
-    esc = vim_strsave_shellescape(tv_get_string(&argvars[0]), FALSE, FALSE);
+    filename = tv_get_string(&argvars[0]);
 
-    len = STRLEN(esc) + 5 + 18 + 1;
+    len = STRLEN(filename) + 5 + 18 + 2 + 1;
     p = alloc(len);
     if (p == NULL)
     {
-	free(esc);
 	return;
     }
-    vim_snprintf((char *)p, len, "open %s alias sound%06ld", esc, newid);
-    free(esc);
+    vim_snprintf((char *)p, len, "open \"%s\" alias sound%06ld", filename, newid);
 
     wp = enc_to_utf16((char_u *)p, NULL);
     free(p);
@@ -408,7 +406,7 @@ f_sound_playfile(typval_T *argvars, typv
 	return;
 
     vim_snprintf(buf, sizeof(buf), "play sound%06ld notify", newid);
-    err = mciSendString(buf, NULL, 0, sound_window());
+    err = mciSendStringA(buf, NULL, 0, sound_window());
     if (err != 0)
 	goto failure;
 
@@ -426,7 +424,7 @@ f_sound_playfile(typval_T *argvars, typv
 
 failure:
     vim_snprintf(buf, sizeof(buf), "close sound%06ld", newid);
-    mciSendString(buf, NULL, 0, NULL);
+    mciSendStringA(buf, NULL, 0, NULL);
 }
 
     void
@@ -440,14 +438,14 @@ f_sound_stop(typval_T *argvars, typval_T
 
     id = tv_get_number(&argvars[0]);
     vim_snprintf(buf, sizeof(buf), "stop sound%06ld", id);
-    mciSendString(buf, NULL, 0, NULL);
+    mciSendStringA(buf, NULL, 0, NULL);
 }
 
     void
 f_sound_clear(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
 {
     PlaySoundW(NULL, NULL, 0);
-    mciSendString("close all", NULL, 0, NULL);
+    mciSendStringA("close all", NULL, 0, NULL);
 }
 
 # if defined(EXITFREE)
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2089,
+/**/
     2088,
 /**/
     2087,