#include #include #include #include #include #include #include #include int _stat(const char* path, struct stat* buffer) { HANDLE findHandle; WIN32_FIND_DATAA findData; if (!buffer) { __set_errno(EINVAL); return -1; } if (strchr(path, '*') || strchr(path, '?')) { __set_errno(EINVAL); return -1; } findHandle = FindFirstFileA(path, &findData); if (findHandle == INVALID_HANDLE_VALUE) { __set_errno(ENOENT); return -1; } FindClose(findHandle); memset (buffer, 0, sizeof(struct stat)); buffer->st_ctime = FileTimeToUnixTime(&findData.ftCreationTime,NULL); buffer->st_atime = FileTimeToUnixTime(&findData.ftLastAccessTime,NULL); buffer->st_mtime = FileTimeToUnixTime(&findData.ftLastWriteTime,NULL); // statbuf->st_dev = fd; buffer->st_size = findData.nFileSizeLow; buffer->st_mode = S_IREAD; if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) buffer->st_mode |= S_IFDIR; else buffer->st_mode |= S_IFREG; if (!(findData.dwFileAttributes & FILE_ATTRIBUTE_READONLY)) buffer->st_mode |= S_IWRITE; return 0; }