fileinfo: implement os_fileinfo_size

this replaces os_get_file_size and file_info.stat.st_size
This commit is contained in:
Stefan Hoffmann
2014-08-08 16:25:33 +02:00
parent 3051015f89
commit aa378acdf5
6 changed files with 35 additions and 23 deletions

View File

@@ -9165,15 +9165,16 @@ static void f_getfsize(typval_T *argvars, typval_T *rettv)
rettv->v_type = VAR_NUMBER;
off_t file_size;
if (os_get_file_size(fname, &file_size)) {
FileInfo file_info;
if (os_get_file_info(fname, &file_info)) {
off_t filesize = os_fileinfo_size(&file_info);
if (os_isdir((char_u *)fname))
rettv->vval.v_number = 0;
else {
rettv->vval.v_number = (varnumber_T)file_size;
rettv->vval.v_number = (varnumber_T)filesize;
/* non-perfect check for overflow */
if ((off_t)rettv->vval.v_number != file_size) {
if ((off_t)rettv->vval.v_number != filesize) {
rettv->vval.v_number = -2;
}
}