IO: fix Windows part; silense warnings

This commit is contained in:
李通洲
2023-01-28 22:05:23 +08:00
parent a1ea7804f3
commit e4973b3262
4 changed files with 42 additions and 13 deletions
+33 -4
View File
@@ -7,22 +7,37 @@
#ifdef _WIN32
#include <fileapi.h>
#include <io.h>
typedef HANDLE FFNativeFD;
#else
#include <unistd.h>
typedef int FFNativeFD;
#endif
static inline bool ffWriteFDBuffer(FFNativeFD fd, const FFstrbuf* content)
static inline FFNativeFD FFUnixFD2NativeFD(int unixfd)
{
#ifndef _WIN32
return write(fd, content->chars, content->length) != -1;
return unixfd;
#else
return (FFNativeFD) _get_osfhandle(unixfd);
#endif
}
static inline bool ffWriteFDData(FFNativeFD fd, size_t dataSize, const void* data)
{
#ifndef _WIN32
return write(fd, data, dataSize) != -1;
#else
DWORD written;
return WriteFile(fd, content->chars, content->length, &written, NULL) && written == content->length;
return WriteFile(fd, data, (DWORD) dataSize, &written, NULL) && written == dataSize;
#endif
}
static inline bool ffWriteFDBuffer(FFNativeFD fd, const FFstrbuf* content)
{
return ffWriteFDData(fd, content->length, content->chars);
}
bool ffWriteFileData(const char* fileName, size_t dataSize, const void* data);
static inline bool ffWriteFileBuffer(const char* fileName, const FFstrbuf* buffer)
@@ -30,8 +45,22 @@ static inline bool ffWriteFileBuffer(const char* fileName, const FFstrbuf* buffe
return ffWriteFileData(fileName, buffer->length, buffer->chars);
}
bool ffAppendFDBuffer(FFNativeFD fd, FFstrbuf* buffer);
static inline ssize_t ffReadFDData(FFNativeFD fd, size_t dataSize, void* data)
{
#ifndef _WIN32
return read(fd, data, dataSize);
#else
DWORD readed;
if(!ReadFile(fd, data, (DWORD)dataSize, &readed, NULL))
return -1;
return (ssize_t)readed;
#endif
}
ssize_t ffReadFileData(const char* fileName, size_t dataSize, void* data);
bool ffAppendFDBuffer(FFNativeFD fd, FFstrbuf* buffer);
bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer);
static inline bool ffReadFileBuffer(const char* fileName, FFstrbuf* buffer)
+1 -1
View File
@@ -80,7 +80,7 @@ ssize_t ffReadFileData(const char* fileName, size_t dataSize, void* data)
if(fd == -1)
return -1;
ssize_t readed = read(fd, data, dataSize);
ssize_t readed = ffReadFDData(fd, dataSize, data);
close(fd);
+5 -5
View File
@@ -71,13 +71,13 @@ ssize_t ffReadFileData(const char* fileName, size_t dataSize, void* data)
{
HANDLE handle = CreateFileA(fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(handle == INVALID_HANDLE_VALUE)
return false;
DWORD readed;
if(!ReadFile(handle, data, (DWORD)dataSize, &readed, NULL))
return -1;
return (ssize_t)readed;
ssize_t readed = ffReadFDData(handle, dataSize, data);
CloseHandle(handle);
return readed;
}
bool ffAppendFileBuffer(const char* fileName, FFstrbuf* buffer)