mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -07:00
vim-patch:8.2.4860: MS-Windows: always uses current directory for executables
Problem: MS-Windows: always uses current directory for executables.
Solution: Check the NoDefaultCurrentDirectoryInExePath environment variable.
(Yasuhiro Matsumoto, closes vim/vim#10341)
05cf63e9bd
Omit doc change: override in later doc update.
Co-authored-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
This commit is contained in:
parent
a89088b7a0
commit
336ab2682e
@ -17,7 +17,6 @@
|
||||
#endif
|
||||
|
||||
#include "auto/config.h"
|
||||
#include "nvim/errors.h"
|
||||
#include "nvim/os/fs.h"
|
||||
#include "nvim/os/os_defs.h"
|
||||
|
||||
@ -36,6 +35,7 @@
|
||||
|
||||
#include "nvim/api/private/helpers.h"
|
||||
#include "nvim/ascii_defs.h"
|
||||
#include "nvim/errors.h"
|
||||
#include "nvim/gettext_defs.h"
|
||||
#include "nvim/globals.h"
|
||||
#include "nvim/log.h"
|
||||
@ -356,10 +356,16 @@ static bool is_executable_in_path(const char *name, char **abspath)
|
||||
}
|
||||
|
||||
#ifdef MSWIN
|
||||
// Prepend ".;" to $PATH.
|
||||
size_t pathlen = strlen(path_env);
|
||||
char *path = memcpy(xmallocz(pathlen + 2), "." ENV_SEPSTR, 2);
|
||||
memcpy(path + 2, path_env, pathlen);
|
||||
char *path = NULL;
|
||||
if (!os_env_exists("NoDefaultCurrentDirectoryInExePath")) {
|
||||
// Prepend ".;" to $PATH.
|
||||
size_t pathlen = strlen(path_env);
|
||||
path = xmallocz(pathlen + 2);
|
||||
memcpy(path, "." ENV_SEPSTR, 2);
|
||||
memcpy(path + 2, path_env, pathlen);
|
||||
} else {
|
||||
path = xstrdup(path_env);
|
||||
}
|
||||
#else
|
||||
char *path = xstrdup(path_env);
|
||||
#endif
|
||||
|
@ -3578,6 +3578,24 @@ func Test_isabsolutepath()
|
||||
endif
|
||||
endfunc
|
||||
|
||||
" Test for exepath()
|
||||
func Test_exepath()
|
||||
if has('win32')
|
||||
call assert_notequal(exepath('cmd'), '')
|
||||
|
||||
let oldNoDefaultCurrentDirectoryInExePath = $NoDefaultCurrentDirectoryInExePath
|
||||
call writefile(['@echo off', 'echo Evil'], 'vim-test-evil.bat')
|
||||
let $NoDefaultCurrentDirectoryInExePath = ''
|
||||
call assert_notequal(exepath("vim-test-evil.bat"), '')
|
||||
let $NoDefaultCurrentDirectoryInExePath = '1'
|
||||
call assert_equal(exepath("vim-test-evil.bat"), '')
|
||||
let $NoDefaultCurrentDirectoryInExePath = oldNoDefaultCurrentDirectoryInExePath
|
||||
call delete('vim-test-evil.bat')
|
||||
else
|
||||
call assert_notequal(exepath('sh'), '')
|
||||
endif
|
||||
endfunc
|
||||
|
||||
" Test for virtcol()
|
||||
func Test_virtcol()
|
||||
new
|
||||
|
Loading…
Reference in New Issue
Block a user