aboutsummaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
authorStefan Hoffmann <stefan991@gmail.com>2014-04-25 18:32:55 +0200
committerStefan Hoffmann <stefan991@gmail.com>2014-05-09 15:49:33 +0200
commitd936bb82ad1833ce3b5170ee89fb6cd9f4b749d7 (patch)
treebfd7effc763ffcf8005736c2606aa7904c51feed /src/eval.c
parentedbb687b73877d8db8b1c6e376e3422bb85a11a9 (diff)
downloadrneovim-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.c17
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;
}