The function low_stat in fdlib.c uses a sequence of FileTimeToSystemTime, SystemTimeToTzSpecificLocalTime and the obscure function __loctotime_t to convert FILETIME to time_t.
Not only is this unnecessarily complex, it completely breaks Pike on W9x - SystemTimeToTzSpecificLocalTime is not supported and always returns FALSE, so low_stat always fails and Pike refuses to find any modules.
The following calculation achieves the same result and makes Pike work on W9x again (example for ftLastWriteTime):
buf->st_mtime = (time_t)((((INT64)findbuf.ftLastWriteTime.dwHighDateTime << 32) + findbuf.ftLastWriteTime.dwLowDateTime - 116444736000000000) / 10000000);
Reference:
http://msdn.microsoft.com/library/en-us/sysinfo/base/converting_a_time_t_val...
Please consider implementing this change, as I'd really like to use Pike on a W9x system.
Regards, Axel