diff --git a/legacy/eina/src/lib/eina_file_win32.c b/legacy/eina/src/lib/eina_file_win32.c index 8f7e32ef98..5c20fdd17e 100644 --- a/legacy/eina/src/lib/eina_file_win32.c +++ b/legacy/eina/src/lib/eina_file_win32.c @@ -37,6 +37,9 @@ extern "C" void *alloca (size_t); #endif +#include +#include + #define WIN32_LEAN_AND_MEAN #include #undef WIN32_LEAN_AND_MEAN @@ -998,7 +1001,7 @@ eina_file_close(Eina_File *file) eina_hash_del(_eina_file_cache, file->filename, file); _eina_file_real_close(file); - + eina_lock_release(&_eina_file_lock_cache); } @@ -1023,6 +1026,16 @@ eina_file_filename_get(Eina_File *file) return file->filename; } +EAPI Eina_Iterator *eina_file_xattr_get(Eina_File *file __UNUSED__) +{ + return NULL; +} + +EAPI Eina_Iterator *eina_file_xattr_value_get(Eina_File *file __UNUSED__) +{ + return NULL; +} + EAPI void * eina_file_map_all(Eina_File *file, Eina_File_Populate rule __UNUSED__) { @@ -1156,32 +1169,46 @@ eina_file_map_free(Eina_File *file, void *map) } EAPI int -eina_file_statat(void *container, Eina_File_Direct_Info *info, Eina_Stat *st) +eina_file_statat(void *container __UNUSED__, Eina_File_Direct_Info *info, Eina_Stat *st) { - WIN32_FILE_ATTRIBUTE_DATA fad; - ULARGE_INTEGER length; - ULARGE_INTEGER mtime; - ULARGE_INTEGER atime; + struct __stat64 buf; EINA_SAFETY_ON_NULL_RETURN_VAL(info, -1); EINA_SAFETY_ON_NULL_RETURN_VAL(st, -1); - if (!GetFileAttributesEx(info->path, GetFileExInfoStandard, &fad)) + if (stat64(info->path, &buf)) { if (info->type != EINA_FILE_LNK) info->type = EINA_FILE_UNKNOWN; return -1; } - length.u.LowPart = fad.nFileSizeLow; - length.u.HighPart = fad.nFileSizeHigh; - atime.u.LowPart = fad.ftLastAccessTime.dwLowDateTime; - atime.u.HighPart = fad.ftLastAccessTime.dwHighDateTime; - mtime.u.LowPart = fad.ftLastWriteTime.dwLowDateTime; - mtime.u.HighPart = fad.ftLastWriteTime.dwHighDateTime; + if (info->type == EINA_FILE_UNKNOWN) + { + if (S_ISREG(buf.st_mode)) + info->type = EINA_FILE_REG; + else if (S_ISDIR(buf.st_mode)) + info->type = EINA_FILE_DIR; + else + info->type = EINA_FILE_UNKNOWN; + } + + st->dev = buf.st_dev; + st->ino = buf.st_ino; + st->mode = buf.st_mode; + st->nlink = buf.st_nlink; + st->uid = buf.st_uid; + st->gid = buf.st_gid; + st->rdev = buf.st_rdev; + st->size = buf.st_size; + st->blksize = 0; + st->blocks = 0; + st->atime = buf.st_atime; + st->mtime = buf.st_mtime; + st->ctime = buf.st_ctime; + st->atimensec = 0; + st->mtimensec = 0; + st->ctimensec = 0; - st->size = length.QuadPart; - st->atime = atime.QuadPart; - st->mtime = mtime.QuadPart; return 0; }