0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

patch 8.2.0209: function a bit far away from where it's used

Problem:    Function a bit far away from where it's used.
Solution:   Move function close to where it's used. (Ken Takata, closes #5569)
This commit is contained in:
Bram Moolenaar
2020-02-04 22:32:59 +01:00
parent d816cd94d8
commit 80147dda4f
3 changed files with 42 additions and 40 deletions

View File

@@ -4423,17 +4423,17 @@ readdir_core(
int (*checkitem)(void *context, char_u *name)) int (*checkitem)(void *context, char_u *name))
{ {
int failed = FALSE; int failed = FALSE;
#ifdef MSWIN # ifdef MSWIN
char_u *buf, *p; char_u *buf, *p;
int ok; int ok;
HANDLE hFind = INVALID_HANDLE_VALUE; HANDLE hFind = INVALID_HANDLE_VALUE;
WIN32_FIND_DATAW wfb; WIN32_FIND_DATAW wfb;
WCHAR *wn = NULL; // UTF-16 name, NULL when not used. WCHAR *wn = NULL; // UTF-16 name, NULL when not used.
#endif # endif
ga_init2(gap, (int)sizeof(char *), 20); ga_init2(gap, (int)sizeof(char *), 20);
#ifdef MSWIN # ifdef MSWIN
buf = alloc(MAXPATHL); buf = alloc(MAXPATHL);
if (buf == NULL) if (buf == NULL)
return FAIL; return FAIL;
@@ -4498,7 +4498,7 @@ readdir_core(
vim_free(buf); vim_free(buf);
vim_free(wn); vim_free(wn);
#else # else
DIR *dirp; DIR *dirp;
struct dirent *dp; struct dirent *dp;
char_u *p; char_u *p;
@@ -4547,7 +4547,7 @@ readdir_core(
closedir(dirp); closedir(dirp);
} }
#endif # endif
if (!failed && gap->ga_len > 0) if (!failed && gap->ga_len > 0)
sort_strings((char_u **)gap->ga_data, gap->ga_len); sort_strings((char_u **)gap->ga_data, gap->ga_len);

View File

@@ -1255,41 +1255,6 @@ f_isdirectory(typval_T *argvars, typval_T *rettv)
rettv->vval.v_number = mch_isdir(tv_get_string(&argvars[0])); rettv->vval.v_number = mch_isdir(tv_get_string(&argvars[0]));
} }
/*
* Evaluate "expr" (= "context") for readdir().
*/
static int
readdir_checkitem(void *context, char_u *name)
{
typval_T *expr = (typval_T *)context;
typval_T save_val;
typval_T rettv;
typval_T argv[2];
int retval = 0;
int error = FALSE;
if (expr->v_type == VAR_UNKNOWN)
return 1;
prepare_vimvar(VV_VAL, &save_val);
set_vim_var_string(VV_VAL, name, -1);
argv[0].v_type = VAR_STRING;
argv[0].vval.v_string = name;
if (eval_expr_typval(expr, argv, 1, &rettv) == FAIL)
goto theend;
retval = tv_get_number_chk(&rettv, &error);
if (error)
retval = -1;
clear_tv(&rettv);
theend:
set_vim_var_string(VV_VAL, NULL, 0);
restore_vimvar(VV_VAL, &save_val);
return retval;
}
/* /*
* Create the directory in which "dir" is located, and higher levels when * Create the directory in which "dir" is located, and higher levels when
* needed. * needed.
@@ -1385,6 +1350,41 @@ f_pathshorten(typval_T *argvars, typval_T *rettv)
} }
} }
/*
* Evaluate "expr" (= "context") for readdir().
*/
static int
readdir_checkitem(void *context, char_u *name)
{
typval_T *expr = (typval_T *)context;
typval_T save_val;
typval_T rettv;
typval_T argv[2];
int retval = 0;
int error = FALSE;
if (expr->v_type == VAR_UNKNOWN)
return 1;
prepare_vimvar(VV_VAL, &save_val);
set_vim_var_string(VV_VAL, name, -1);
argv[0].v_type = VAR_STRING;
argv[0].vval.v_string = name;
if (eval_expr_typval(expr, argv, 1, &rettv) == FAIL)
goto theend;
retval = tv_get_number_chk(&rettv, &error);
if (error)
retval = -1;
clear_tv(&rettv);
theend:
set_vim_var_string(VV_VAL, NULL, 0);
restore_vimvar(VV_VAL, &save_val);
return retval;
}
/* /*
* "readdir()" function * "readdir()" function
*/ */

View File

@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
209,
/**/ /**/
208, 208,
/**/ /**/