Index: xfa/src/fgas/src/crt/fx_system.cpp |
diff --git a/xfa/src/fgas/src/crt/fx_system.cpp b/xfa/src/fgas/src/crt/fx_system.cpp |
index 861d1177ad0757b6f452b38b19f123663637f747..b08236bb1db3efb8baf67ce5fb781181a198a37d 100644 |
--- a/xfa/src/fgas/src/crt/fx_system.cpp |
+++ b/xfa/src/fgas/src/crt/fx_system.cpp |
@@ -1,229 +1,229 @@ |
-// Copyright 2014 PDFium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
- |
-#include <algorithm> |
- |
-#include "xfa/src/fgas/src/fgas_base.h" |
-#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \ |
- _FX_OS_ == _FX_WIN64_ |
-#include <io.h> |
-#elif _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_LINUX_Mini_ |
-#include <sys/times.h> |
-#endif |
-#ifdef __cplusplus |
-extern "C" { |
-#endif |
-FX_FLOAT FX_tan(FX_FLOAT a) { |
- return (FX_FLOAT)tan(a); |
-} |
-FX_FLOAT FX_log(FX_FLOAT b, FX_FLOAT x) { |
- return FXSYS_log(x) / FXSYS_log(b); |
-} |
-FX_WCHAR* FX_wcsncpy(FX_WCHAR* dstStr, const FX_WCHAR* srcStr, size_t count) { |
- FXSYS_assert(dstStr != NULL && srcStr != NULL && count > 0); |
- for (size_t i = 0; i < count; ++i) |
- if ((dstStr[i] = srcStr[i]) == L'\0') { |
- break; |
- } |
- return dstStr; |
-} |
-int32_t FX_wcsnicmp(const FX_WCHAR* s1, const FX_WCHAR* s2, size_t count) { |
- FXSYS_assert(s1 != NULL && s2 != NULL && count > 0); |
- FX_WCHAR wch1 = 0, wch2 = 0; |
- while (count-- > 0) { |
- wch1 = (FX_WCHAR)FX_tolower(*s1++); |
- wch2 = (FX_WCHAR)FX_tolower(*s2++); |
- if (wch1 != wch2) { |
- break; |
- } |
- } |
- return wch1 - wch2; |
-} |
-int32_t FX_strnicmp(const FX_CHAR* s1, const FX_CHAR* s2, size_t count) { |
- FXSYS_assert(s1 != NULL && s2 != NULL && count > 0); |
- FX_CHAR ch1 = 0, ch2 = 0; |
- while (count-- > 0) { |
- ch1 = (FX_CHAR)FX_tolower(*s1++); |
- ch2 = (FX_CHAR)FX_tolower(*s2++); |
- if (ch1 != ch2) { |
- break; |
- } |
- } |
- return ch1 - ch2; |
-} |
-int32_t FX_filelength(FXSYS_FILE* file) { |
- FXSYS_assert(file != NULL); |
-#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ |
- return _filelength(_fileno(file)); |
-#else |
- int32_t iPos = FXSYS_ftell(file); |
- FXSYS_fseek(file, 0, FXSYS_SEEK_END); |
- int32_t iLen = FXSYS_ftell(file); |
- FXSYS_fseek(file, iPos, FXSYS_SEEK_SET); |
- return iLen; |
-#endif |
-} |
-FX_BOOL FX_fsetsize(FXSYS_FILE* file, int32_t size) { |
- FXSYS_assert(file != NULL); |
-#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ |
- return _chsize(_fileno(file), size) == 0; |
-#elif _FX_OS_ == _FX_WIN32_MOBILE_ |
- HANDLE hFile = _fileno(file); |
- FX_DWORD dwPos = ::SetFilePointer(hFile, 0, 0, FILE_CURRENT); |
- ::SetFilePointer(hFile, size, 0, FILE_BEGIN); |
- FX_BOOL bRet = ::SetEndOfFile(hFile); |
- ::SetFilePointer(hFile, (int32_t)dwPos, 0, FILE_BEGIN); |
- return bRet; |
-#else |
- return FALSE; |
-#endif |
-} |
-FX_FLOAT FX_strtof(const FX_CHAR* pcsStr, int32_t iLength, int32_t* pUsedLen) { |
- FXSYS_assert(pcsStr != NULL); |
- if (iLength < 0) { |
- iLength = FXSYS_strlen(pcsStr); |
- } |
- return FX_wcstof(CFX_WideString::FromLocal(pcsStr, iLength), iLength, |
- pUsedLen); |
-} |
-FX_FLOAT FX_wcstof(const FX_WCHAR* pwsStr, int32_t iLength, int32_t* pUsedLen) { |
- FXSYS_assert(pwsStr != NULL); |
- if (iLength < 0) { |
- iLength = FXSYS_wcslen(pwsStr); |
- } |
- if (iLength == 0) { |
- return 0.0f; |
- } |
- int32_t iUsedLen = 0; |
- FX_BOOL bNegtive = FALSE; |
- switch (pwsStr[iUsedLen]) { |
- case '-': |
- bNegtive = TRUE; |
- case '+': |
- iUsedLen++; |
- break; |
- } |
- FX_FLOAT fValue = 0.0f; |
- while (iUsedLen < iLength) { |
- FX_WCHAR wch = pwsStr[iUsedLen]; |
- if (wch >= L'0' && wch <= L'9') { |
- fValue = fValue * 10.0f + (wch - L'0'); |
- } else { |
- break; |
- } |
- iUsedLen++; |
- } |
- if (iUsedLen < iLength && pwsStr[iUsedLen] == L'.') { |
- FX_FLOAT fPrecise = 0.1f; |
- while (++iUsedLen < iLength) { |
- FX_WCHAR wch = pwsStr[iUsedLen]; |
- if (wch >= L'0' && wch <= L'9') { |
- fValue += (wch - L'0') * fPrecise; |
- fPrecise *= 0.1f; |
- } else { |
- break; |
- } |
- } |
- } |
- if (pUsedLen) { |
- *pUsedLen = iUsedLen; |
- } |
- return bNegtive ? -fValue : fValue; |
-} |
-void FX_memset(void* pBuf, int32_t iValue, size_t size) { |
- FXSYS_assert(pBuf != NULL && size > 0 && (size & 0x03) == 0); |
- FXSYS_assert((((size_t)pBuf) & 0x03) == 0); |
- FX_DWORD* pStart = (FX_DWORD*)pBuf; |
- FX_DWORD* pEnd = pStart + (size >> 2); |
- while (pStart < pEnd) { |
- *pStart++ = iValue; |
- } |
-} |
-void FX_memcpy(void* pDst, const void* pSrc, size_t size) { |
- FXSYS_assert(pDst != NULL && pSrc != NULL && size > 0 && (size & 0x03) == 0); |
- FXSYS_assert((((size_t)pDst) & 0x03) == 0 && (((size_t)pSrc) & 0x03) == 0); |
- FX_DWORD* pStart = (FX_DWORD*)pDst; |
- FX_DWORD* pEnd = pStart + (size >> 2); |
- FX_DWORD* pValue = (FX_DWORD*)pSrc; |
- while (pStart < pEnd) { |
- *pStart++ = *pValue++; |
- } |
-} |
-FX_BOOL FX_IsRelativePath(const CFX_WideStringC& wsUrl) { |
- int32_t iUrlLen = wsUrl.GetLength(); |
- if (iUrlLen == 0) { |
- return TRUE; |
- } |
- for (int32_t i = std::min(5, iUrlLen) - 1; i >= 0; --i) |
- if (wsUrl.GetAt(i) == ':') { |
- return FALSE; |
- } |
- return TRUE; |
-} |
-FX_BOOL FX_JoinPath(const CFX_WideStringC& wsBasePath, |
- const CFX_WideStringC& wsRelativePath, |
- CFX_WideString& wsAbsolutePath) { |
- if (!FX_IsRelativePath(wsRelativePath)) { |
- wsAbsolutePath = wsRelativePath; |
- return TRUE; |
- } |
- const FX_WCHAR* pRelStart = wsRelativePath.GetPtr(); |
- const FX_WCHAR* pRelEnd = pRelStart + wsRelativePath.GetLength(); |
- if (pRelStart < pRelEnd) { |
- switch (*pRelStart) { |
- case '#': |
- wsAbsolutePath = CFX_WideString(wsBasePath, wsRelativePath); |
- return wsAbsolutePath.GetLength() > 0; |
- case '/': |
- case '\\': |
- wsAbsolutePath = wsRelativePath; |
- return wsAbsolutePath.GetLength() > 0; |
- } |
- } |
- int32_t nBackCount = 0; |
- for (;;) { |
- if (pRelStart >= pRelEnd) { |
- wsAbsolutePath = wsBasePath; |
- return TRUE; |
- } |
- if (*pRelStart != '.') { |
- break; |
- } |
- if (pRelStart + 1 < pRelEnd && |
- (pRelStart[1] == '/' || pRelStart[1] == '\\')) { |
- pRelStart += 2; |
- } else if (pRelStart + 2 < pRelEnd && pRelStart[1] == '.' && |
- (pRelStart[2] == '/' || pRelStart[2] == '\\')) { |
- pRelStart += 3; |
- nBackCount++; |
- } else { |
- return FALSE; |
- } |
- } |
- const FX_WCHAR* pBaseStart = wsBasePath.GetPtr(); |
- const FX_WCHAR* pBaseEnd = pBaseStart + wsBasePath.GetLength(); |
- while (pBaseStart < (--pBaseEnd) && *pBaseEnd != '/' && *pBaseEnd != '\\') |
- ; |
- if (pBaseStart == pBaseEnd) { |
- wsAbsolutePath = CFX_WideStringC(pRelStart, pRelEnd - pRelStart); |
- return wsAbsolutePath.GetLength() > 0; |
- } |
- while (nBackCount > 0) { |
- if (pBaseStart >= (--pBaseEnd)) { |
- return FALSE; |
- } else if (*pBaseEnd == '/' || *pBaseEnd == '\\') |
- if ((--nBackCount) <= 0) { |
- break; |
- } |
- } |
- wsAbsolutePath = |
- CFX_WideString(CFX_WideStringC(pBaseStart, pBaseEnd - pBaseStart + 1), |
- CFX_WideStringC(pRelStart, pRelEnd - pRelStart)); |
- return wsAbsolutePath.GetLength() > 0; |
-} |
-#ifdef __cplusplus |
-}; |
-#endif |
+// Copyright 2014 PDFium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+ |
+#include <algorithm> |
+ |
+#include "xfa/src/fgas/src/fgas_base.h" |
+#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN32_MOBILE_ || \ |
+ _FX_OS_ == _FX_WIN64_ |
+#include <io.h> |
+#elif _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_LINUX_Mini_ |
+#include <sys/times.h> |
+#endif |
+#ifdef __cplusplus |
+extern "C" { |
+#endif |
+FX_FLOAT FX_tan(FX_FLOAT a) { |
+ return (FX_FLOAT)tan(a); |
+} |
+FX_FLOAT FX_log(FX_FLOAT b, FX_FLOAT x) { |
+ return FXSYS_log(x) / FXSYS_log(b); |
+} |
+FX_WCHAR* FX_wcsncpy(FX_WCHAR* dstStr, const FX_WCHAR* srcStr, size_t count) { |
+ FXSYS_assert(dstStr != NULL && srcStr != NULL && count > 0); |
+ for (size_t i = 0; i < count; ++i) |
+ if ((dstStr[i] = srcStr[i]) == L'\0') { |
+ break; |
+ } |
+ return dstStr; |
+} |
+int32_t FX_wcsnicmp(const FX_WCHAR* s1, const FX_WCHAR* s2, size_t count) { |
+ FXSYS_assert(s1 != NULL && s2 != NULL && count > 0); |
+ FX_WCHAR wch1 = 0, wch2 = 0; |
+ while (count-- > 0) { |
+ wch1 = (FX_WCHAR)FX_tolower(*s1++); |
+ wch2 = (FX_WCHAR)FX_tolower(*s2++); |
+ if (wch1 != wch2) { |
+ break; |
+ } |
+ } |
+ return wch1 - wch2; |
+} |
+int32_t FX_strnicmp(const FX_CHAR* s1, const FX_CHAR* s2, size_t count) { |
+ FXSYS_assert(s1 != NULL && s2 != NULL && count > 0); |
+ FX_CHAR ch1 = 0, ch2 = 0; |
+ while (count-- > 0) { |
+ ch1 = (FX_CHAR)FX_tolower(*s1++); |
+ ch2 = (FX_CHAR)FX_tolower(*s2++); |
+ if (ch1 != ch2) { |
+ break; |
+ } |
+ } |
+ return ch1 - ch2; |
+} |
+int32_t FX_filelength(FXSYS_FILE* file) { |
+ FXSYS_assert(file != NULL); |
+#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ |
+ return _filelength(_fileno(file)); |
+#else |
+ int32_t iPos = FXSYS_ftell(file); |
+ FXSYS_fseek(file, 0, FXSYS_SEEK_END); |
+ int32_t iLen = FXSYS_ftell(file); |
+ FXSYS_fseek(file, iPos, FXSYS_SEEK_SET); |
+ return iLen; |
+#endif |
+} |
+FX_BOOL FX_fsetsize(FXSYS_FILE* file, int32_t size) { |
+ FXSYS_assert(file != NULL); |
+#if _FX_OS_ == _FX_WIN32_DESKTOP_ || _FX_OS_ == _FX_WIN64_ |
+ return _chsize(_fileno(file), size) == 0; |
+#elif _FX_OS_ == _FX_WIN32_MOBILE_ |
+ HANDLE hFile = _fileno(file); |
+ FX_DWORD dwPos = ::SetFilePointer(hFile, 0, 0, FILE_CURRENT); |
+ ::SetFilePointer(hFile, size, 0, FILE_BEGIN); |
+ FX_BOOL bRet = ::SetEndOfFile(hFile); |
+ ::SetFilePointer(hFile, (int32_t)dwPos, 0, FILE_BEGIN); |
+ return bRet; |
+#else |
+ return FALSE; |
+#endif |
+} |
+FX_FLOAT FX_strtof(const FX_CHAR* pcsStr, int32_t iLength, int32_t* pUsedLen) { |
+ FXSYS_assert(pcsStr != NULL); |
+ if (iLength < 0) { |
+ iLength = FXSYS_strlen(pcsStr); |
+ } |
+ return FX_wcstof(CFX_WideString::FromLocal(pcsStr, iLength), iLength, |
+ pUsedLen); |
+} |
+FX_FLOAT FX_wcstof(const FX_WCHAR* pwsStr, int32_t iLength, int32_t* pUsedLen) { |
+ FXSYS_assert(pwsStr != NULL); |
+ if (iLength < 0) { |
+ iLength = FXSYS_wcslen(pwsStr); |
+ } |
+ if (iLength == 0) { |
+ return 0.0f; |
+ } |
+ int32_t iUsedLen = 0; |
+ FX_BOOL bNegtive = FALSE; |
+ switch (pwsStr[iUsedLen]) { |
+ case '-': |
+ bNegtive = TRUE; |
+ case '+': |
+ iUsedLen++; |
+ break; |
+ } |
+ FX_FLOAT fValue = 0.0f; |
+ while (iUsedLen < iLength) { |
+ FX_WCHAR wch = pwsStr[iUsedLen]; |
+ if (wch >= L'0' && wch <= L'9') { |
+ fValue = fValue * 10.0f + (wch - L'0'); |
+ } else { |
+ break; |
+ } |
+ iUsedLen++; |
+ } |
+ if (iUsedLen < iLength && pwsStr[iUsedLen] == L'.') { |
+ FX_FLOAT fPrecise = 0.1f; |
+ while (++iUsedLen < iLength) { |
+ FX_WCHAR wch = pwsStr[iUsedLen]; |
+ if (wch >= L'0' && wch <= L'9') { |
+ fValue += (wch - L'0') * fPrecise; |
+ fPrecise *= 0.1f; |
+ } else { |
+ break; |
+ } |
+ } |
+ } |
+ if (pUsedLen) { |
+ *pUsedLen = iUsedLen; |
+ } |
+ return bNegtive ? -fValue : fValue; |
+} |
+void FX_memset(void* pBuf, int32_t iValue, size_t size) { |
+ FXSYS_assert(pBuf != NULL && size > 0 && (size & 0x03) == 0); |
+ FXSYS_assert((((size_t)pBuf) & 0x03) == 0); |
+ FX_DWORD* pStart = (FX_DWORD*)pBuf; |
+ FX_DWORD* pEnd = pStart + (size >> 2); |
+ while (pStart < pEnd) { |
+ *pStart++ = iValue; |
+ } |
+} |
+void FX_memcpy(void* pDst, const void* pSrc, size_t size) { |
+ FXSYS_assert(pDst != NULL && pSrc != NULL && size > 0 && (size & 0x03) == 0); |
+ FXSYS_assert((((size_t)pDst) & 0x03) == 0 && (((size_t)pSrc) & 0x03) == 0); |
+ FX_DWORD* pStart = (FX_DWORD*)pDst; |
+ FX_DWORD* pEnd = pStart + (size >> 2); |
+ FX_DWORD* pValue = (FX_DWORD*)pSrc; |
+ while (pStart < pEnd) { |
+ *pStart++ = *pValue++; |
+ } |
+} |
+FX_BOOL FX_IsRelativePath(const CFX_WideStringC& wsUrl) { |
+ int32_t iUrlLen = wsUrl.GetLength(); |
+ if (iUrlLen == 0) { |
+ return TRUE; |
+ } |
+ for (int32_t i = std::min(5, iUrlLen) - 1; i >= 0; --i) |
+ if (wsUrl.GetAt(i) == ':') { |
+ return FALSE; |
+ } |
+ return TRUE; |
+} |
+FX_BOOL FX_JoinPath(const CFX_WideStringC& wsBasePath, |
+ const CFX_WideStringC& wsRelativePath, |
+ CFX_WideString& wsAbsolutePath) { |
+ if (!FX_IsRelativePath(wsRelativePath)) { |
+ wsAbsolutePath = wsRelativePath; |
+ return TRUE; |
+ } |
+ const FX_WCHAR* pRelStart = wsRelativePath.GetPtr(); |
+ const FX_WCHAR* pRelEnd = pRelStart + wsRelativePath.GetLength(); |
+ if (pRelStart < pRelEnd) { |
+ switch (*pRelStart) { |
+ case '#': |
+ wsAbsolutePath = CFX_WideString(wsBasePath, wsRelativePath); |
+ return wsAbsolutePath.GetLength() > 0; |
+ case '/': |
+ case '\\': |
+ wsAbsolutePath = wsRelativePath; |
+ return wsAbsolutePath.GetLength() > 0; |
+ } |
+ } |
+ int32_t nBackCount = 0; |
+ for (;;) { |
+ if (pRelStart >= pRelEnd) { |
+ wsAbsolutePath = wsBasePath; |
+ return TRUE; |
+ } |
+ if (*pRelStart != '.') { |
+ break; |
+ } |
+ if (pRelStart + 1 < pRelEnd && |
+ (pRelStart[1] == '/' || pRelStart[1] == '\\')) { |
+ pRelStart += 2; |
+ } else if (pRelStart + 2 < pRelEnd && pRelStart[1] == '.' && |
+ (pRelStart[2] == '/' || pRelStart[2] == '\\')) { |
+ pRelStart += 3; |
+ nBackCount++; |
+ } else { |
+ return FALSE; |
+ } |
+ } |
+ const FX_WCHAR* pBaseStart = wsBasePath.GetPtr(); |
+ const FX_WCHAR* pBaseEnd = pBaseStart + wsBasePath.GetLength(); |
+ while (pBaseStart < (--pBaseEnd) && *pBaseEnd != '/' && *pBaseEnd != '\\') |
+ ; |
+ if (pBaseStart == pBaseEnd) { |
+ wsAbsolutePath = CFX_WideStringC(pRelStart, pRelEnd - pRelStart); |
+ return wsAbsolutePath.GetLength() > 0; |
+ } |
+ while (nBackCount > 0) { |
+ if (pBaseStart >= (--pBaseEnd)) { |
+ return FALSE; |
+ } else if (*pBaseEnd == '/' || *pBaseEnd == '\\') |
+ if ((--nBackCount) <= 0) { |
+ break; |
+ } |
+ } |
+ wsAbsolutePath = |
+ CFX_WideString(CFX_WideStringC(pBaseStart, pBaseEnd - pBaseStart + 1), |
+ CFX_WideStringC(pRelStart, pRelEnd - pRelStart)); |
+ return wsAbsolutePath.GetLength() > 0; |
+} |
+#ifdef __cplusplus |
+}; |
+#endif |