diff options
author | Stefan Hoffmann <stefan991@gmail.com> | 2014-04-25 18:32:55 +0200 |
---|---|---|
committer | Stefan Hoffmann <stefan991@gmail.com> | 2014-05-09 15:49:33 +0200 |
commit | d936bb82ad1833ce3b5170ee89fb6cd9f4b749d7 (patch) | |
tree | bfd7effc763ffcf8005736c2606aa7904c51feed /src/eval.c | |
parent | edbb687b73877d8db8b1c6e376e3422bb85a11a9 (diff) | |
download | rneovim-d936bb82ad1833ce3b5170ee89fb6cd9f4b749d7.tar.gz rneovim-d936bb82ad1833ce3b5170ee89fb6cd9f4b749d7.tar.bz2 rneovim-d936bb82ad1833ce3b5170ee89fb6cd9f4b749d7.zip |
use os_getperm() in f_getfperm()
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/eval.c b/src/eval.c index ed246c363b..59bd6d2975 100644 --- a/src/eval.c +++ b/src/eval.c @@ -9664,24 +9664,21 @@ static void f_getfontname(typval_T *argvars, typval_T *rettv) */ static void f_getfperm(typval_T *argvars, typval_T *rettv) { - char_u *fname; - struct stat st; - char_u *perm = NULL; + char_u *perm = NULL; char_u flags[] = "rwx"; - int i; - - fname = get_tv_string(&argvars[0]); - rettv->v_type = VAR_STRING; - if (mch_stat((char *)fname, &st) >= 0) { + char_u *filename = get_tv_string(&argvars[0]); + int32_t file_perm = os_getperm(filename); + if (file_perm >= 0) { perm = vim_strsave((char_u *)"---------"); if (perm != NULL) { - for (i = 0; i < 9; i++) { - if (st.st_mode & (1 << (8 - i))) + for (int i = 0; i < 9; i++) { + if (file_perm & (1 << (8 - i))) perm[i] = flags[i % 3]; } } } + rettv->v_type = VAR_STRING; rettv->vval.v_string = perm; } |