]> granicus.if.org Git - vim/commitdiff
patch 8.2.0273: MS-Windows uninstall may delete wrong batch file v8.2.0273
authorBram Moolenaar <Bram@vim.org>
Mon, 17 Feb 2020 21:53:14 +0000 (22:53 +0100)
committerBram Moolenaar <Bram@vim.org>
Mon, 17 Feb 2020 21:53:14 +0000 (22:53 +0100)
Problem:    MS-Windows uninstall may delete wrong batch file.
Solution:   Add specific marker in the generated batch file. (Ken Takata,
            closes #5654)

src/Make_mvc.mak
src/dosinst.c
src/dosinst.h
src/uninstall.c
src/version.c

index fd7a6ab5c36bf3678aee8c99a787c648534498c4..6076dc172ecdd95ee6c38e859abce8e86c44b612 100644 (file)
@@ -1359,7 +1359,7 @@ $(VIM): $(VIM).exe
 $(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 \
index 2ded88ef3b0a70c77f8eeba3b2a5899b0dcd6f83..6ce40439a0eb3b0999631f754e4505414401c52b 100644 (file)
@@ -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");
 
index a849dad9073e563fbf07c64f98d8276d83ca49c7..c262c4224bb67617fd6832ce1dd0f0bea0498d27 100644 (file)
@@ -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,
index ef0538a140a515dcc1c95ce92e7b4dc4bea33d95..e9a9aac3272cce72563781ad2fed35a431a9ed2d 100644 (file)
@@ -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);
     }
index 1008eaf1e6470f40ee5d696c31d506c533160d56..2fbccd29a2a19bb3ecf25c660f787e2f367f7937 100644 (file)
@@ -738,6 +738,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    273,
 /**/
     272,
 /**/