diff options
Diffstat (limited to 'src/filepath.c')
-rw-r--r-- | src/filepath.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/src/filepath.c b/src/filepath.c index f0da60f452..851091e57a 100644 --- a/src/filepath.c +++ b/src/filepath.c @@ -893,32 +893,34 @@ f_exepath(typval_T *argvars, typval_T *rettv) } /* - * "filereadable()" function + * Return TRUE if "fname" is a readable file. */ - void -f_filereadable(typval_T *argvars, typval_T *rettv) + int +file_is_readable(char_u *fname) { int fd; - char_u *p; - int n; - - if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) - return; #ifndef O_NONBLOCK # define O_NONBLOCK 0 #endif - p = tv_get_string(&argvars[0]); - if (*p && !mch_isdir(p) && (fd = mch_open((char *)p, - O_RDONLY | O_NONBLOCK, 0)) >= 0) + if (*fname && !mch_isdir(fname) + && (fd = mch_open((char *)fname, O_RDONLY | O_NONBLOCK, 0)) >= 0) { - n = TRUE; close(fd); + return TRUE; } - else - n = FALSE; + return FALSE; +} - rettv->vval.v_number = n; +/* + * "filereadable()" function + */ + void +f_filereadable(typval_T *argvars, typval_T *rettv) +{ + if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) + return; + rettv->vval.v_number = file_is_readable(tv_get_string(&argvars[0])); } /* @@ -1761,7 +1763,7 @@ read_file_or_blob(typval_T *argvars, typval_T *rettv, int always_blob) if (mch_isdir(fname)) { - semsg(_(e_src_is_directory), fname); + semsg(_(e_str_is_directory), fname); return; } if (*fname == NUL || (fd = mch_fopen((char *)fname, READBIN)) == NULL) |