Fileutil: Fix file size and data reading.
This commit is contained in:
@@ -60,7 +60,7 @@ FILETIME POSIX_to_FileTime(FileTime fileTime) {
|
||||
FileTime FileTime_Get(char *fileName) {
|
||||
HANDLE hFile;
|
||||
FILETIME ftCreate, ftAccess, ftWrite;
|
||||
hFile = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL,
|
||||
hFile = CreateFile(fileName, READ_CONTROL, FILE_SHARE_READ, NULL,
|
||||
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
|
||||
GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite);
|
||||
CloseHandle(hFile);
|
||||
@@ -95,6 +95,50 @@ void FileTime_Set(char *fileName, FileTime t) {
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef WIN32
|
||||
long long File_GetSize(char *fileName) {
|
||||
HANDLE hFile;
|
||||
DWORD fSize;
|
||||
hFile = CreateFile(fileName, READ_CONTROL, FILE_SHARE_READ, NULL,
|
||||
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
|
||||
fSize = GetFileSize(hFile, NULL);
|
||||
CloseHandle(hFile);
|
||||
return (fSize);
|
||||
}
|
||||
#else
|
||||
long long File_GetSize(char *fileName) {
|
||||
struct stat fs;
|
||||
lstat(fileName, &fs);
|
||||
return (fs.st_size);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef WIN32
|
||||
void File_GetSizeAndTime(char *fileName, long long *size, FileTime *time) {
|
||||
HANDLE hFile;
|
||||
DWORD fSize;
|
||||
FILETIME ftCreate, ftAccess, ftWrite;
|
||||
hFile = CreateFile(fileName, READ_CONTROL, FILE_SHARE_READ, NULL,
|
||||
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
|
||||
fSize = GetFileSize(hFile, NULL);
|
||||
GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite);
|
||||
CloseHandle(hFile);
|
||||
*size = fSize;
|
||||
*time = FileTime_to_POSIX(ftWrite);
|
||||
}
|
||||
#else
|
||||
void File_GetSizeAndTime(char *fileName, long long *size, FileTime *time) {
|
||||
struct stat fs;
|
||||
lstat(fileName, &fs);
|
||||
*size = fs.st_size;
|
||||
*time = fs.st_mtime;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
void FileTime_Print(FileTime fileTime) {
|
||||
struct tm *tms;
|
||||
|
||||
@@ -199,47 +243,6 @@ int File_IsFile(char *fileName) {
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef WIN32
|
||||
long long File_GetSize(char *fileName) {
|
||||
HANDLE hFile;
|
||||
DWORD fSize;
|
||||
hFile = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL,
|
||||
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
|
||||
GetFileSize(hFile, &fSize);
|
||||
CloseHandle(hFile);
|
||||
return (fSize);
|
||||
}
|
||||
#else
|
||||
long long File_GetSize(char *fileName) {
|
||||
struct stat fs;
|
||||
lstat(fileName, &fs);
|
||||
return (fs.st_size);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef WIN32
|
||||
void File_GetSizeAndTime(char *fileName, long long *size, FileTime *time) {
|
||||
HANDLE hFile;
|
||||
DWORD fSize;
|
||||
FILETIME ftCreate, ftAccess, ftWrite;
|
||||
hFile = CreateFile(fileName, GENERIC_READ, FILE_SHARE_READ, NULL,
|
||||
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
|
||||
GetFileSize(hFile, &fSize);
|
||||
GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite);
|
||||
CloseHandle(hFile);
|
||||
*size = fSize;
|
||||
*time = FileTime_to_POSIX(ftWrite);
|
||||
}
|
||||
#else
|
||||
void File_GetSizeAndTime(char *fileName, long long *size, FileTime *time) {
|
||||
struct stat fs;
|
||||
lstat(fileName, &fs);
|
||||
*size = fs.st_size;
|
||||
*time = fs.st_mtime;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -16,6 +16,10 @@ void FileTime_Print(FileTime t);
|
||||
#define MaxPath 4096
|
||||
#define MaxPathNodes 512
|
||||
|
||||
long long File_GetSize(char *fileName);
|
||||
|
||||
void File_GetSizeAndTime(char *fileName, long long *size, FileTime *time);
|
||||
|
||||
void File_GetName(char *path, char *name);
|
||||
|
||||
int File_ExistsPath(char *path);
|
||||
@@ -24,10 +28,6 @@ int File_IsDirectory(char *path);
|
||||
|
||||
int File_IsFile(char *path);
|
||||
|
||||
long long File_GetSize(char *fileName);
|
||||
|
||||
void File_GetSizeAndTime(char *fileName, long long *size, FileTime *time);
|
||||
|
||||
int File_MakeDirectory(char *path);
|
||||
|
||||
void File_IterateDir(char *path,
|
||||
|
||||
Reference in New Issue
Block a user