annotate vimtutor.bat @ 34309:d7cfd8fb1d75 v9.1.0089

patch 9.1.0089: qsort() comparison functions should be transitive Commit: https://github.com/vim/vim/commit/e06e43766500ecb4cd1031fa16cf9cbebdb222c1 Author: Christian Brabandt <cb@256bit.org> Date: Fri Feb 9 19:39:14 2024 +0100 patch 9.1.0089: qsort() comparison functions should be transitive Problem: qsort() comparison functions should be transitive Solution: Do not subtract values, but rather use explicit comparisons Improve qsort() comparison functions There has been a recent report on qsort() causing out-of-bounds read & write in glibc for non transitive comparison functions https://www.qualys.com/2024/01/30/qsort.txt Even so the bug is in glibc's implementation of the qsort() algorithm, it's bad style to just use substraction for the comparison functions, which may cause overflow issues and as hinted at in OpenBSD's manual page for qsort(): "It is almost always an error to use subtraction to compute the return value of the comparison function." So check the qsort() comparison functions and change them to be safe. closes: #13980 Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Fri, 09 Feb 2024 19:45:06 +0100
parents 79aaaa134298
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 :: Start Vim on a copy of the tutor file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2 @echo off
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 :: Usage: vimtutor [-console] [xx]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 ::
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 :: -console means gvim will not be used
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 :: xx is a language code like "es" or "nl".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 :: When an xx argument is given, it tries loading that tutor.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 :: When this fails or no xx argument was given, it tries using 'v:lang'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 :: When that also fails, it uses the English version.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 :: Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
19711
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
13 FOR %%d in (. %TMP% %TEMP%) DO (
25812
79aaaa134298 patch 8.2.3441: MS-Windows: vimtutor can't handle path with spaces
Bram Moolenaar <Bram@vim.org>
parents: 25700
diff changeset
14 call :test_dir_writable "%~dpf0" %%d
19711
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
15 IF NOT ERRORLEVEL 1 GOTO dir_ok
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
16 )
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
17
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
18 echo No working directory is found
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
19 GOTO end
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
20
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
21 :test_dir_writable
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
22 SET TUTORCOPY=%2\$tutor$
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
23 COPY %1 %TUTORCOPY% >nul 2>nul
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
24 GOTO end
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
25
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
26 :dir_ok
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 SET xx=%1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 IF NOT .%1==.-console GOTO use_gui
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 SHIFT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 SET xx=%1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 GOTO use_vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 :use_gui
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 :: Try making a copy of tutor with gvim. If gvim cannot be found, try using
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37 :: vim instead. If vim cannot be found, alert user to check environment and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 :: installation.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 :: The script tutor.vim tells Vim which file to copy.
19711
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
41 start "dummy" /b /w "%~dp0gvim.exe" -u NONE -c "so $VIMRUNTIME/tutor/tutor.vim"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 IF ERRORLEVEL 1 GOTO use_vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 :: Start gvim without any .vimrc, set 'nocompatible'
19711
831a3f3be6f4 patch 8.2.0412: MS-Windows: cannot use vimtutor from the start menu
Bram Moolenaar <Bram@vim.org>
parents: 13113
diff changeset
45 start "dummy" /b /w "%~dp0gvim.exe" -u NONE -c "set nocp" %TUTORCOPY%
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 GOTO end
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49 :use_vim
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 :: The script tutor.vim tells Vim which file to copy
12485
ab40ecb0fd73 patch 8.0.1122: vimtutor.bat doesn't work well with vim.bat
Christian Brabandt <cb@256bit.org>
parents: 7
diff changeset
51 call vim -u NONE -c "so $VIMRUNTIME/tutor/tutor.vim"
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 IF ERRORLEVEL 1 GOTO no_executable
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 :: Start vim without any .vimrc, set 'nocompatible'
12485
ab40ecb0fd73 patch 8.0.1122: vimtutor.bat doesn't work well with vim.bat
Christian Brabandt <cb@256bit.org>
parents: 7
diff changeset
55 call vim -u NONE -c "set nocp" %TUTORCOPY%
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 GOTO end
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 :no_executable
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60 ECHO.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 ECHO.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62 ECHO No vim or gvim found in current directory or PATH.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 ECHO Check your installation or re-run install.exe
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 :end
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 :: remove the copy of the tutor
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 IF EXIST %TUTORCOPY% DEL %TUTORCOPY%
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 SET xx=