Patch 8.1.1740

11 views
Skip to first unread message

Bram Moolenaar

unread,
Jul 24, 2019, 9:00:08 AM7/24/19
to vim...@googlegroups.com

Patch 8.1.1740
Problem: Exepath() doesn't work for "bin/cat".
Solution: Check for any path separator. (Daniel Hahler, closes #4724,
closes #4710)
Files: src/evalfunc.c, src/os_unix.c, src/testdir/test_functions.vim


*** ../vim-8.1.1739/src/evalfunc.c 2019-07-22 23:03:53.322360395 +0200
--- src/evalfunc.c 2019-07-24 14:58:14.992053041 +0200
***************
*** 3058,3065 ****
char_u *name = tv_get_string(&argvars[0]);

/* Check in $PATH and also check directly if there is a directory name. */
! rettv->vval.v_number = mch_can_exe(name, NULL, TRUE)
! || (gettail(name) != name && mch_can_exe(name, NULL, FALSE));
}

static garray_T redir_execute_ga;
--- 3058,3064 ----
char_u *name = tv_get_string(&argvars[0]);

/* Check in $PATH and also check directly if there is a directory name. */
! rettv->vval.v_number = mch_can_exe(name, NULL, TRUE);
}

static garray_T redir_execute_ga;
*** ../vim-8.1.1739/src/os_unix.c 2019-06-14 21:36:51.014437500 +0200
--- src/os_unix.c 2019-07-24 14:58:14.992053041 +0200
***************
*** 3103,3114 ****

/* When "use_path" is false and if it's an absolute or relative path don't
* need to use $PATH. */
! if (!use_path || mch_isFullName(name) || (name[0] == '.'
! && (name[1] == '/' || (name[1] == '.' && name[2] == '/'))))
{
/* There must be a path separator, files in the current directory
* can't be executed. */
! if (gettail(name) != name && executable_file(name))
{
if (path != NULL)
{
--- 3103,3113 ----

/* When "use_path" is false and if it's an absolute or relative path don't
* need to use $PATH. */
! if (!use_path || gettail(name) != name)
{
/* There must be a path separator, files in the current directory
* can't be executed. */
! if ((use_path || gettail(name) != name) && executable_file(name))
{
if (path != NULL)
{
*** ../vim-8.1.1739/src/testdir/test_functions.vim 2019-07-05 21:53:14.939268472 +0200
--- src/testdir/test_functions.vim 2019-07-24 14:54:16.045668675 +0200
***************
*** 990,995 ****
--- 990,1003 ----
elseif has('unix')
call assert_equal(1, executable('cat'))
call assert_equal(0, executable('nodogshere'))
+
+ " get "cat" path and remove the leading /
+ let catcmd = exepath('cat')[1:]
+ new
+ lcd /
+ call assert_equal(1, executable(catcmd))
+ call assert_equal('/' .. catcmd, exepath(catcmd))
+ bwipe
endif
endfunc

*** ../vim-8.1.1739/src/version.c 2019-07-24 14:25:07.171074151 +0200
--- src/version.c 2019-07-24 14:57:34.208328113 +0200
***************
*** 779,780 ****
--- 779,782 ----
{ /* Add new patch number below this line */
+ /**/
+ 1740,
/**/

--
Kiss me twice. I'm schizophrenic.

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages