fix for win95

This commit is contained in:
Nishi 2026-05-15 02:23:18 +09:00
commit cda34dfbaa
2 changed files with 13 additions and 6 deletions

1
.gitignore vendored
View file

@ -2,3 +2,4 @@
*.o
/build
*.make
*.lib

View file

@ -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)