📄 stat.c
字号:
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: lib/crt/??????
* PURPOSE: Unknown
* PROGRAMER: Unknown
* UPDATE HISTORY:
* 25/11/05: Added license header
*/
#include <precomp.h>
#include <sys/stat.h>
/*
* @implemented
*/
int _stat(const char* path, struct _stat* buffer)
{
WIN32_FILE_ATTRIBUTE_DATA fileAttributeData;
char* ext;
if (!buffer)
{
__set_errno(EINVAL);
return -1;
}
if (strchr(path, '*') || strchr(path, '?'))
{
__set_errno(ENOENT);
return -1;
}
if (!GetFileAttributesExA(path, GetFileExInfoStandard, &fileAttributeData))
{
__set_errno(ENOENT);
return -1;
}
memset (buffer, 0, sizeof(struct stat));
buffer->st_ctime = FileTimeToUnixTime(&fileAttributeData.ftCreationTime,NULL);
buffer->st_atime = FileTimeToUnixTime(&fileAttributeData.ftLastAccessTime,NULL);
buffer->st_mtime = FileTimeToUnixTime(&fileAttributeData.ftLastWriteTime,NULL);
// statbuf->st_dev = fd;
buffer->st_size = fileAttributeData.nFileSizeLow;
buffer->st_mode = S_IREAD;
if (fileAttributeData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
buffer->st_mode |= S_IFDIR;
else
{
buffer->st_mode |= S_IFREG;
ext = strrchr(path, '.');
if (ext && (!_stricmp(ext, ".exe") ||
!_stricmp(ext, ".com") ||
!_stricmp(ext, ".bat") ||
!_stricmp(ext, ".cmd")))
buffer->st_mode |= S_IEXEC;
}
if (!(fileAttributeData.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
buffer->st_mode |= S_IWRITE;
return 0;
}
/*
* @implemented
*/
int _stati64 (const char *path, struct _stati64 *buffer)
{
WIN32_FILE_ATTRIBUTE_DATA fileAttributeData;
char* ext;
if (!buffer)
{
__set_errno(EINVAL);
return -1;
}
if(strchr(path, '*') || strchr(path, '?'))
{
__set_errno(ENOENT);
return -1;
}
if (!GetFileAttributesExA(path, GetFileExInfoStandard, &fileAttributeData))
{
__set_errno(ENOENT);
return -1;
}
memset (buffer, 0, sizeof(struct _stati64));
buffer->st_ctime = FileTimeToUnixTime(&fileAttributeData.ftCreationTime,NULL);
buffer->st_atime = FileTimeToUnixTime(&fileAttributeData.ftLastAccessTime,NULL);
buffer->st_mtime = FileTimeToUnixTime(&fileAttributeData.ftLastWriteTime,NULL);
// statbuf->st_dev = fd;
buffer->st_size = ((((__int64)fileAttributeData.nFileSizeHigh) << 16) << 16) +
fileAttributeData.nFileSizeLow;
buffer->st_mode = S_IREAD;
if (fileAttributeData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
buffer->st_mode |= S_IFDIR;
else
{
buffer->st_mode |= S_IFREG;
ext = strrchr(path, '.');
if (ext && (!_stricmp(ext, ".exe") ||
!_stricmp(ext, ".com") ||
!_stricmp(ext, ".bat") ||
!_stricmp(ext, ".cmd")))
buffer->st_mode |= S_IEXEC;
}
if (!(fileAttributeData.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
buffer->st_mode |= S_IWRITE;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -