diff --git a/.gitignore b/.gitignore index ea1e225..2cf651f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.o /build *.make +*.lib diff --git a/src/base/stat.c b/src/base/stat.c index 43f1dc6..057217c 100644 --- a/src/base/stat.c +++ b/src/base/stat.c @@ -3,28 +3,34 @@ int ppr_stat(const char* path, struct ppr_stat* s) { #if defined(PPR_IS_WIN32) - WIN32_FILE_ATTRIBUTE_DATA fad; + DWORD attr; ULARGE_INTEGER mtime; + PPR_FILE* f; + FILETIME ft; - if(!GetFileAttributesEx(path, GetFileExInfoStandard, &fad)) return -1; + if((attr = GetFileAttributes(path)) == INVALID_FILE_ATTRIBUTES) return -1; - memcpy(&mtime, &fad.ftLastWriteTime, sizeof(mtime)); + f = ppr_fopen(path, "r"); /* :))))))) */ + + GetFileTime((HANDLE)f, NULL, NULL, &ft); + + memcpy(&mtime, &ft, sizeof(mtime)); s->st_size = 0; s->st_modtime = (mtime.QuadPart / 10000000) / 11644473600; s->st_mode = 0; s->st_mode |= PPR_S_IFREG; - if(fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + if(attr & FILE_ATTRIBUTE_DIRECTORY) { s->st_mode &= ~PPR_S_IFREG; s->st_mode |= PPR_S_IFDIR; } if(PPR_S_ISREG(s->st_mode)) { - PPR_FILE* f = ppr_fopen(path, "r"); /* :))))))) */ s->st_size = GetFileSize((HANDLE)f, NULL); - ppr_fclose(f); } + + ppr_fclose(f); return 0; #elif defined(PPR_IS_UNIX) || defined(PPR_IS_NETWARE)