forked from enlightenment/efl
Eina: use stat64() instead of GetFileAttributesEx()
SVN revision: 69067
This commit is contained in:
parent
531668d2ca
commit
2872041d17
|
@ -37,6 +37,9 @@ extern "C"
|
||||||
void *alloca (size_t);
|
void *alloca (size_t);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#undef WIN32_LEAN_AND_MEAN
|
#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_hash_del(_eina_file_cache, file->filename, file);
|
||||||
_eina_file_real_close(file);
|
_eina_file_real_close(file);
|
||||||
|
|
||||||
eina_lock_release(&_eina_file_lock_cache);
|
eina_lock_release(&_eina_file_lock_cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1023,6 +1026,16 @@ eina_file_filename_get(Eina_File *file)
|
||||||
return file->filename;
|
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 *
|
EAPI void *
|
||||||
eina_file_map_all(Eina_File *file, Eina_File_Populate rule __UNUSED__)
|
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
|
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;
|
struct __stat64 buf;
|
||||||
ULARGE_INTEGER length;
|
|
||||||
ULARGE_INTEGER mtime;
|
|
||||||
ULARGE_INTEGER atime;
|
|
||||||
|
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(info, -1);
|
EINA_SAFETY_ON_NULL_RETURN_VAL(info, -1);
|
||||||
EINA_SAFETY_ON_NULL_RETURN_VAL(st, -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)
|
if (info->type != EINA_FILE_LNK)
|
||||||
info->type = EINA_FILE_UNKNOWN;
|
info->type = EINA_FILE_UNKNOWN;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
length.u.LowPart = fad.nFileSizeLow;
|
if (info->type == EINA_FILE_UNKNOWN)
|
||||||
length.u.HighPart = fad.nFileSizeHigh;
|
{
|
||||||
atime.u.LowPart = fad.ftLastAccessTime.dwLowDateTime;
|
if (S_ISREG(buf.st_mode))
|
||||||
atime.u.HighPart = fad.ftLastAccessTime.dwHighDateTime;
|
info->type = EINA_FILE_REG;
|
||||||
mtime.u.LowPart = fad.ftLastWriteTime.dwLowDateTime;
|
else if (S_ISDIR(buf.st_mode))
|
||||||
mtime.u.HighPart = fad.ftLastWriteTime.dwHighDateTime;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue