| Index: core/src/fxcrt/fxcrt_platforms.cpp
|
| diff --git a/core/src/fxcrt/fxcrt_platforms.cpp b/core/src/fxcrt/fxcrt_platforms.cpp
|
| index e7182943be2b59686b78b70406b8809695465eef..a9f22d00c62498782007f977eefbbe2a6d323ebf 100644
|
| --- a/core/src/fxcrt/fxcrt_platforms.cpp
|
| +++ b/core/src/fxcrt/fxcrt_platforms.cpp
|
| @@ -7,187 +7,172 @@
|
| #include "../../include/fxcrt/fx_basic.h"
|
| #include "fxcrt_platforms.h"
|
|
|
| -#if (_FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ && _FXM_PLATFORM_ != _FXM_PLATFORM_LINUX_ && _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ && _FXM_PLATFORM_ != _FXM_PLATFORM_ANDROID_)
|
| -IFXCRT_FileAccess* FXCRT_FileAccess_Create()
|
| -{
|
| - return new CFXCRT_FileAccess_CRT;
|
| -}
|
| -void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_ByteString &bsMode)
|
| -{
|
| - if (dwModes & FX_FILEMODE_ReadOnly) {
|
| - bsMode = FX_BSTRC("rb");
|
| - } else if (dwModes & FX_FILEMODE_Truncate) {
|
| - bsMode = FX_BSTRC("w+b");
|
| - } else {
|
| - bsMode = FX_BSTRC("a+b");
|
| - }
|
| -}
|
| -void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_WideString &wsMode)
|
| -{
|
| - if (dwModes & FX_FILEMODE_ReadOnly) {
|
| - wsMode = FX_WSTRC(L"rb");
|
| - } else if (dwModes & FX_FILEMODE_Truncate) {
|
| - wsMode = FX_WSTRC(L"w+b");
|
| - } else {
|
| - wsMode = FX_WSTRC(L"a+b");
|
| - }
|
| -}
|
| -CFXCRT_FileAccess_CRT::CFXCRT_FileAccess_CRT()
|
| - : m_hFile(NULL)
|
| -{
|
| -}
|
| -CFXCRT_FileAccess_CRT::~CFXCRT_FileAccess_CRT()
|
| -{
|
| - Close();
|
| -}
|
| -FX_BOOL CFXCRT_FileAccess_CRT::Open(const CFX_ByteStringC& fileName, FX_DWORD dwMode)
|
| -{
|
| - if (m_hFile) {
|
| - return FALSE;
|
| - }
|
| - CFX_ByteString strMode;
|
| - FXCRT_GetFileModeString(dwMode, strMode);
|
| - m_hFile = FXSYS_fopen(fileName.GetCStr(), strMode.c_str());
|
| - return m_hFile != NULL;
|
| -}
|
| -FX_BOOL CFXCRT_FileAccess_CRT::Open(const CFX_WideStringC& fileName, FX_DWORD dwMode)
|
| -{
|
| - if (m_hFile) {
|
| - return FALSE;
|
| - }
|
| - CFX_WideString strMode;
|
| - FXCRT_GetFileModeString(dwMode, strMode);
|
| - m_hFile = FXSYS_wfopen(fileName.GetPtr(), strMode.c_str());
|
| - return m_hFile != NULL;
|
| -}
|
| -void CFXCRT_FileAccess_CRT::Close()
|
| -{
|
| - if (!m_hFile) {
|
| - return;
|
| - }
|
| - FXSYS_fclose(m_hFile);
|
| - m_hFile = NULL;
|
| -}
|
| -void CFXCRT_FileAccess_CRT::Release()
|
| -{
|
| - delete this;
|
| -}
|
| -FX_FILESIZE CFXCRT_FileAccess_CRT::GetSize() const
|
| -{
|
| - if (!m_hFile) {
|
| - return 0;
|
| - }
|
| - FX_FILESIZE pos = (FX_FILESIZE)FXSYS_ftell(m_hFile);
|
| - FXSYS_fseek(m_hFile, 0, FXSYS_SEEK_END);
|
| - FX_FILESIZE size = (FX_FILESIZE)FXSYS_ftell(m_hFile);
|
| - FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET);
|
| - return size;
|
| -}
|
| -FX_FILESIZE CFXCRT_FileAccess_CRT::GetPosition() const
|
| -{
|
| - if (!m_hFile) {
|
| - return (FX_FILESIZE) - 1;
|
| - }
|
| - return (FX_FILESIZE)FXSYS_ftell(m_hFile);
|
| -}
|
| -FX_FILESIZE CFXCRT_FileAccess_CRT::SetPosition(FX_FILESIZE pos)
|
| -{
|
| - if (!m_hFile) {
|
| - return (FX_FILESIZE) - 1;
|
| - }
|
| - FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET);
|
| - return (FX_FILESIZE)FXSYS_ftell(m_hFile);
|
| -}
|
| -size_t CFXCRT_FileAccess_CRT::Read(void* pBuffer, size_t szBuffer)
|
| -{
|
| - if (!m_hFile) {
|
| - return 0;
|
| - }
|
| - return FXSYS_fread(pBuffer, 1, szBuffer, m_hFile);
|
| -}
|
| -size_t CFXCRT_FileAccess_CRT::Write(const void* pBuffer, size_t szBuffer)
|
| -{
|
| - if (!m_hFile) {
|
| - return 0;
|
| - }
|
| - return FXSYS_fwrite(pBuffer, 1, szBuffer, m_hFile);
|
| -}
|
| -size_t CFXCRT_FileAccess_CRT::ReadPos(void* pBuffer, size_t szBuffer, FX_FILESIZE pos)
|
| -{
|
| - if (!m_hFile) {
|
| - return (FX_FILESIZE) - 1;
|
| - }
|
| - FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET);
|
| - return FXSYS_fread(pBuffer, 1, szBuffer, m_hFile);
|
| -}
|
| -size_t CFXCRT_FileAccess_CRT::WritePos(const void* pBuffer, size_t szBuffer, FX_FILESIZE pos)
|
| -{
|
| - if (!m_hFile) {
|
| - return (FX_FILESIZE) - 1;
|
| - }
|
| - FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET);
|
| - return FXSYS_fwrite(pBuffer, 1, szBuffer, m_hFile);
|
| -}
|
| -FX_BOOL CFXCRT_FileAccess_CRT::Flush()
|
| -{
|
| - if (!m_hFile) {
|
| - return FALSE;
|
| - }
|
| - return !FXSYS_fflush(m_hFile);
|
| -}
|
| -FX_BOOL CFXCRT_FileAccess_CRT::Truncate(FX_FILESIZE szFile)
|
| -{
|
| +#if (_FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ && \
|
| + _FXM_PLATFORM_ != _FXM_PLATFORM_LINUX_ && \
|
| + _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ && \
|
| + _FXM_PLATFORM_ != _FXM_PLATFORM_ANDROID_)
|
| +IFXCRT_FileAccess* FXCRT_FileAccess_Create() {
|
| + return new CFXCRT_FileAccess_CRT;
|
| +}
|
| +void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_ByteString& bsMode) {
|
| + if (dwModes & FX_FILEMODE_ReadOnly) {
|
| + bsMode = FX_BSTRC("rb");
|
| + } else if (dwModes & FX_FILEMODE_Truncate) {
|
| + bsMode = FX_BSTRC("w+b");
|
| + } else {
|
| + bsMode = FX_BSTRC("a+b");
|
| + }
|
| +}
|
| +void FXCRT_GetFileModeString(FX_DWORD dwModes, CFX_WideString& wsMode) {
|
| + if (dwModes & FX_FILEMODE_ReadOnly) {
|
| + wsMode = FX_WSTRC(L"rb");
|
| + } else if (dwModes & FX_FILEMODE_Truncate) {
|
| + wsMode = FX_WSTRC(L"w+b");
|
| + } else {
|
| + wsMode = FX_WSTRC(L"a+b");
|
| + }
|
| +}
|
| +CFXCRT_FileAccess_CRT::CFXCRT_FileAccess_CRT() : m_hFile(NULL) {}
|
| +CFXCRT_FileAccess_CRT::~CFXCRT_FileAccess_CRT() {
|
| + Close();
|
| +}
|
| +FX_BOOL CFXCRT_FileAccess_CRT::Open(const CFX_ByteStringC& fileName,
|
| + FX_DWORD dwMode) {
|
| + if (m_hFile) {
|
| return FALSE;
|
| + }
|
| + CFX_ByteString strMode;
|
| + FXCRT_GetFileModeString(dwMode, strMode);
|
| + m_hFile = FXSYS_fopen(fileName.GetCStr(), strMode.c_str());
|
| + return m_hFile != NULL;
|
| +}
|
| +FX_BOOL CFXCRT_FileAccess_CRT::Open(const CFX_WideStringC& fileName,
|
| + FX_DWORD dwMode) {
|
| + if (m_hFile) {
|
| + return FALSE;
|
| + }
|
| + CFX_WideString strMode;
|
| + FXCRT_GetFileModeString(dwMode, strMode);
|
| + m_hFile = FXSYS_wfopen(fileName.GetPtr(), strMode.c_str());
|
| + return m_hFile != NULL;
|
| +}
|
| +void CFXCRT_FileAccess_CRT::Close() {
|
| + if (!m_hFile) {
|
| + return;
|
| + }
|
| + FXSYS_fclose(m_hFile);
|
| + m_hFile = NULL;
|
| +}
|
| +void CFXCRT_FileAccess_CRT::Release() {
|
| + delete this;
|
| +}
|
| +FX_FILESIZE CFXCRT_FileAccess_CRT::GetSize() const {
|
| + if (!m_hFile) {
|
| + return 0;
|
| + }
|
| + FX_FILESIZE pos = (FX_FILESIZE)FXSYS_ftell(m_hFile);
|
| + FXSYS_fseek(m_hFile, 0, FXSYS_SEEK_END);
|
| + FX_FILESIZE size = (FX_FILESIZE)FXSYS_ftell(m_hFile);
|
| + FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET);
|
| + return size;
|
| +}
|
| +FX_FILESIZE CFXCRT_FileAccess_CRT::GetPosition() const {
|
| + if (!m_hFile) {
|
| + return (FX_FILESIZE)-1;
|
| + }
|
| + return (FX_FILESIZE)FXSYS_ftell(m_hFile);
|
| +}
|
| +FX_FILESIZE CFXCRT_FileAccess_CRT::SetPosition(FX_FILESIZE pos) {
|
| + if (!m_hFile) {
|
| + return (FX_FILESIZE)-1;
|
| + }
|
| + FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET);
|
| + return (FX_FILESIZE)FXSYS_ftell(m_hFile);
|
| +}
|
| +size_t CFXCRT_FileAccess_CRT::Read(void* pBuffer, size_t szBuffer) {
|
| + if (!m_hFile) {
|
| + return 0;
|
| + }
|
| + return FXSYS_fread(pBuffer, 1, szBuffer, m_hFile);
|
| +}
|
| +size_t CFXCRT_FileAccess_CRT::Write(const void* pBuffer, size_t szBuffer) {
|
| + if (!m_hFile) {
|
| + return 0;
|
| + }
|
| + return FXSYS_fwrite(pBuffer, 1, szBuffer, m_hFile);
|
| +}
|
| +size_t CFXCRT_FileAccess_CRT::ReadPos(void* pBuffer,
|
| + size_t szBuffer,
|
| + FX_FILESIZE pos) {
|
| + if (!m_hFile) {
|
| + return (FX_FILESIZE)-1;
|
| + }
|
| + FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET);
|
| + return FXSYS_fread(pBuffer, 1, szBuffer, m_hFile);
|
| +}
|
| +size_t CFXCRT_FileAccess_CRT::WritePos(const void* pBuffer,
|
| + size_t szBuffer,
|
| + FX_FILESIZE pos) {
|
| + if (!m_hFile) {
|
| + return (FX_FILESIZE)-1;
|
| + }
|
| + FXSYS_fseek(m_hFile, pos, FXSYS_SEEK_SET);
|
| + return FXSYS_fwrite(pBuffer, 1, szBuffer, m_hFile);
|
| +}
|
| +FX_BOOL CFXCRT_FileAccess_CRT::Flush() {
|
| + if (!m_hFile) {
|
| + return FALSE;
|
| + }
|
| + return !FXSYS_fflush(m_hFile);
|
| }
|
| -FX_BOOL FX_File_Exist(const CFX_ByteStringC& fileName)
|
| -{
|
| - return access(fileName.GetCStr(), F_OK) > -1;
|
| -}
|
| -FX_BOOL FX_File_Exist(const CFX_WideStringC& fileName)
|
| -{
|
| - return FX_File_Exist(FX_UTF8Encode(fileName));
|
| -}
|
| -FX_BOOL FX_File_Delete(const CFX_ByteStringC& fileName)
|
| -{
|
| - return remove(fileName.GetCStr()) > -1;
|
| +FX_BOOL CFXCRT_FileAccess_CRT::Truncate(FX_FILESIZE szFile) {
|
| + return FALSE;
|
| }
|
| -FX_BOOL FX_File_Delete(const CFX_WideStringC& fileName)
|
| -{
|
| - return FX_File_Delete(FX_UTF8Encode(fileName));
|
| +FX_BOOL FX_File_Exist(const CFX_ByteStringC& fileName) {
|
| + return access(fileName.GetCStr(), F_OK) > -1;
|
| }
|
| -FX_BOOL FX_File_Copy(const CFX_ByteStringC& fileNameSrc, const CFX_ByteStringC& fileNameDst)
|
| -{
|
| - CFXCRT_FileAccess_CRT src, dst;
|
| - if (!src.Open(fileNameSrc, FX_FILEMODE_ReadOnly)) {
|
| - return FALSE;
|
| - }
|
| - FX_FILESIZE size = src.GetSize();
|
| - if (!size) {
|
| - return FALSE;
|
| - }
|
| - if (!dst.Open(fileNameDst, FX_FILEMODE_Truncate)) {
|
| - return FALSE;
|
| - }
|
| - FX_FILESIZE num = 0;
|
| - uint8_t* pBuffer = FX_Alloc(uint8_t, 32768);
|
| - while (num = src.Read(pBuffer, 32768)) {
|
| - if (dst.Write(pBuffer, num) != num) {
|
| - break;
|
| - }
|
| - }
|
| - FX_Free(pBuffer);
|
| - return TRUE;
|
| +FX_BOOL FX_File_Exist(const CFX_WideStringC& fileName) {
|
| + return FX_File_Exist(FX_UTF8Encode(fileName));
|
| }
|
| -FX_BOOL FX_File_Copy(const CFX_WideStringC& fileNameSrc, const CFX_WideStringC& fileNameDst)
|
| -{
|
| - return FX_File_Copy(FX_UTF8Encode(fileNameSrc), FX_UTF8Encode(fileNameDst));
|
| +FX_BOOL FX_File_Delete(const CFX_ByteStringC& fileName) {
|
| + return remove(fileName.GetCStr()) > -1;
|
| }
|
| -FX_BOOL FX_File_Move(const CFX_ByteStringC& fileNameSrc, const CFX_ByteStringC& fileNameDst)
|
| -{
|
| - return rename(fileNameSrc.GetCStr(), fileNameDst.GetCStr());
|
| +FX_BOOL FX_File_Delete(const CFX_WideStringC& fileName) {
|
| + return FX_File_Delete(FX_UTF8Encode(fileName));
|
| }
|
| -FX_BOOL FX_File_Move(const CFX_WideStringC& fileNameSrc, const CFX_WideStringC& fileNameDst)
|
| -{
|
| - return FX_File_Move(FX_UTF8Encode(fileNameSrc), FX_UTF8Encode(fileNameDst));
|
| +FX_BOOL FX_File_Copy(const CFX_ByteStringC& fileNameSrc,
|
| + const CFX_ByteStringC& fileNameDst) {
|
| + CFXCRT_FileAccess_CRT src, dst;
|
| + if (!src.Open(fileNameSrc, FX_FILEMODE_ReadOnly)) {
|
| + return FALSE;
|
| + }
|
| + FX_FILESIZE size = src.GetSize();
|
| + if (!size) {
|
| + return FALSE;
|
| + }
|
| + if (!dst.Open(fileNameDst, FX_FILEMODE_Truncate)) {
|
| + return FALSE;
|
| + }
|
| + FX_FILESIZE num = 0;
|
| + uint8_t* pBuffer = FX_Alloc(uint8_t, 32768);
|
| + while (num = src.Read(pBuffer, 32768)) {
|
| + if (dst.Write(pBuffer, num) != num) {
|
| + break;
|
| + }
|
| + }
|
| + FX_Free(pBuffer);
|
| + return TRUE;
|
| +}
|
| +FX_BOOL FX_File_Copy(const CFX_WideStringC& fileNameSrc,
|
| + const CFX_WideStringC& fileNameDst) {
|
| + return FX_File_Copy(FX_UTF8Encode(fileNameSrc), FX_UTF8Encode(fileNameDst));
|
| +}
|
| +FX_BOOL FX_File_Move(const CFX_ByteStringC& fileNameSrc,
|
| + const CFX_ByteStringC& fileNameDst) {
|
| + return rename(fileNameSrc.GetCStr(), fileNameDst.GetCStr());
|
| +}
|
| +FX_BOOL FX_File_Move(const CFX_WideStringC& fileNameSrc,
|
| + const CFX_WideStringC& fileNameDst) {
|
| + return FX_File_Move(FX_UTF8Encode(fileNameSrc), FX_UTF8Encode(fileNameDst));
|
| }
|
| #endif
|
|
|