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 *.o
/build /build
*.make *.make
*.lib

View file

@ -3,29 +3,35 @@
int ppr_stat(const char* path, struct ppr_stat* s) { int ppr_stat(const char* path, struct ppr_stat* s) {
#if defined(PPR_IS_WIN32) #if defined(PPR_IS_WIN32)
WIN32_FILE_ATTRIBUTE_DATA fad; DWORD attr;
ULARGE_INTEGER mtime; 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_size = 0;
s->st_modtime = (mtime.QuadPart / 10000000) / 11644473600; s->st_modtime = (mtime.QuadPart / 10000000) / 11644473600;
s->st_mode = 0; s->st_mode = 0;
s->st_mode |= PPR_S_IFREG; 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_IFREG;
s->st_mode |= PPR_S_IFDIR; s->st_mode |= PPR_S_IFDIR;
} }
if(PPR_S_ISREG(s->st_mode)) { if(PPR_S_ISREG(s->st_mode)) {
PPR_FILE* f = ppr_fopen(path, "r"); /* :))))))) */
s->st_size = GetFileSize((HANDLE)f, NULL); s->st_size = GetFileSize((HANDLE)f, NULL);
ppr_fclose(f);
} }
ppr_fclose(f);
return 0; return 0;
#elif defined(PPR_IS_UNIX) || defined(PPR_IS_NETWARE) #elif defined(PPR_IS_UNIX) || defined(PPR_IS_NETWARE)
struct stat st; struct stat st;