changeset 19431:9800e126eaa2 v8.2.0273

patch 8.2.0273: MS-Windows uninstall may delete wrong batch file Commit: https://github.com/vim/vim/commit/1fa8d2c33d7290eda7dc2a94d4ec6a599a2d61dd Author: Bram Moolenaar <Bram@vim.org> Date: Mon Feb 17 22:53:14 2020 +0100 patch 8.2.0273: MS-Windows uninstall may delete wrong batch file Problem: MS-Windows uninstall may delete wrong batch file. Solution: Add specific marker in the generated batch file. (Ken Takata, closes #5654)
author Bram Moolenaar <Bram@vim.org>
date Mon, 17 Feb 2020 23:00:04 +0100
parents f08b2ab4e1d0
children 686bc965b4b4
files src/Make_mvc.mak src/dosinst.c src/dosinst.h src/uninstall.c src/version.c
diffstat 5 files changed, 12 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -1359,7 +1359,7 @@ all:	$(MAIN_TARGET) \
 $(OUTDIR):
 	if not exist $(OUTDIR)/nul  mkdir $(OUTDIR)
 
-CFLAGS_INST = /nologo -DNDEBUG -DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) $(CFLAGS_DEPR)
+CFLAGS_INST = /nologo /O2 -DNDEBUG -DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) $(CFLAGS_DEPR)
 
 install.exe: dosinst.c dosinst.h version.h
 	$(CC) $(CFLAGS_INST) dosinst.c kernel32.lib shell32.lib \
--- a/src/dosinst.c
+++ b/src/dosinst.c
@@ -841,6 +841,7 @@ install_bat_choice(int idx)
 
 	    fprintf(fd, "@echo off\n");
 	    fprintf(fd, "rem -- Run Vim --\n");
+	    fprintf(fd, VIMBAT_UNINSTKEY "\n");
 	    fprintf(fd, "\n");
 	    fprintf(fd, "setlocal\n");
 
--- a/src/dosinst.h
+++ b/src/dosinst.h
@@ -354,6 +354,9 @@ struct
 					"vimtutor.bat",  "vimtutor.bat", ""},
 };
 
+/* Uninstall key for vim.bat, etc. */
+#define VIMBAT_UNINSTKEY    "rem # uninstall key: " VIM_VERSION_NODOT " #"
+
 #define ICON_COUNT 3
 char *(icon_names[ICON_COUNT]) =
 	{"gVim " VIM_VERSION_SHORT,
--- a/src/uninstall.c
+++ b/src/uninstall.c
@@ -200,8 +200,7 @@ batfile_thisversion(char *path)
 {
     FILE	*fd;
     char	line[BUFSIZE];
-    char	*p;
-    int		ver_len = strlen(VIM_VERSION_NODOT);
+    int		key_len = strlen(VIMBAT_UNINSTKEY);
     int		found = FALSE;
 
     fd = fopen(path, "r");
@@ -209,17 +208,11 @@ batfile_thisversion(char *path)
     {
 	while (fgets(line, sizeof(line), fd) != NULL)
 	{
-	    for (p = line; *p != 0; ++p)
-		// don't accept "vim60an" when looking for "vim60".
-		if (strnicmp(p, VIM_VERSION_NODOT, ver_len) == 0
-			&& !isdigit(p[ver_len])
-			&& !isalpha(p[ver_len]))
-		{
-		    found = TRUE;
-		    break;
-		}
-	    if (found)
+	    if (strncmp(line, VIMBAT_UNINSTKEY, key_len) == 0)
+	    {
+		found = TRUE;
 		break;
+	    }
 	}
 	fclose(fd);
     }
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    273,
+/**/
     272,
 /**/
     271,