Compare commits

..

3 Commits

Author SHA1 Message Date
dc574f6606 [x2t] For bug 55284 2022-02-06 13:02:42 +03:00
c886341ac1 Fix bug 53831 2022-02-04 15:03:06 +03:00
4a93c91011 Fix bug 47558 2022-01-28 11:39:25 +03:00
6 changed files with 68 additions and 10 deletions

View File

@ -3535,6 +3535,10 @@ int Binary_CustomsTableReader::ReadCustomContent(BYTE type, long length, void* p
{
pCustomXMLProps->m_oCustomXmlContent = m_oBufferedStream.GetString3(length);
}
else if (c_oSerCustoms::ContentA == type)
{
pCustomXMLProps->m_oCustomXmlContentA = m_oBufferedStream.GetString2A();
}
else
res = c_oSerConstants::ReadUnknown;
return res;

View File

@ -1158,7 +1158,8 @@ extern int g_nCurFormatVersion;
Custom = 0,
ItemId = 1,
Uri = 2,
Content = 3
Content = 3,
ContentA = 4
};}
namespace c_oSerApp{enum c_oSerApp
{

View File

@ -9058,11 +9058,8 @@ void BinaryCustomsTableWriter::Write(OOX::CDocument* pDocument)
}
}
int nCurPos2 = m_oBcw.WriteItemStart(c_oSerCustoms::Content);
std::wstring sXml = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)pCustomXml->m_sXmlA.c_str(), pCustomXml->m_sXmlA.length());
m_oBcw.m_oStream.WriteStringW3(sXml);
int nCurPos2 = m_oBcw.WriteItemStart(c_oSerCustoms::ContentA);
m_oBcw.m_oStream.WriteStringA(pCustomXml->m_sXmlA);
m_oBcw.WriteItemEnd(nCurPos2);
m_oBcw.WriteItemEnd(nCurPos);

View File

@ -57,7 +57,10 @@
#define MAX_PATH 1024
#endif
#define READ_WRITE_FULL_BUFFER_SIZE 10000000 // 10mb
#ifdef __ANDROID__
#define READ_WRITE_FULL
#define USE_LINUX_SENDFILE_INSTEAD_STREAMS
// Available since API level 21.
@ -1217,6 +1220,45 @@ namespace NSFile
if (strSrc == strDst)
return true;
#ifdef READ_WRITE_FULL
BYTE* pFileData = NULL;
DWORD dwChunkSize = READ_WRITE_FULL_BUFFER_SIZE;
CFileBinary oFileSrc;
CFileBinary oFileDst;
if (oFileSrc.OpenFile(strSrc) && oFileDst.CreateFileW(strDst))
{
DWORD dwFileSrcSize = (DWORD)oFileSrc.GetFileSize();
if (dwChunkSize > dwFileSrcSize)
dwChunkSize = dwFileSrcSize;
BYTE* pTempBuffer = new BYTE[dwChunkSize];
DWORD dwProcessedBytes = 0;
while (dwFileSrcSize != 0)
{
oFileSrc.ReadFile(pTempBuffer, dwChunkSize, dwProcessedBytes);
if (dwProcessedBytes != dwChunkSize)
break;
if (!oFileDst.WriteFile(pTempBuffer, dwChunkSize))
break;
dwFileSrcSize -= dwChunkSize;
if (dwChunkSize > dwFileSrcSize)
dwChunkSize = dwFileSrcSize;
}
oFileSrc.CloseFile();
oFileDst.CloseFile();
RELEASEARRAYOBJECTS(pTempBuffer);
if (0 != dwFileSrcSize)
Remove(strDst);
else
return true;
}
#endif
#if !defined(_WIN32) && !defined(_WIN32_WCE) && !defined(_WIN64)
std::string strSrcA = U_TO_UTF8(strSrc);
std::string strDstA = U_TO_UTF8(strDst);

View File

@ -149,13 +149,20 @@ namespace NSUnicodeConverter
std::wstring toUnicode(const char* sInput, const unsigned int& nInputLen, int nCodePage, bool isExact)
{
std::wstring sRes = L"";
if (!isExact && nInputLen > 0)
if (nInputLen > 0)
{
CFStringEncoding nEncodingCF = CFStringConvertWindowsCodepageToEncoding((unsigned int)nCodePage);
if (kCFStringEncodingInvalidId == nEncodingCF)
{
if (isExact)
{
std::string strInputA(sInput, nInputLen);
sRes = std::wstring(strInputA.begin(), strInputA.end());
}
return sRes;
NSStringEncoding nEncodingNS = CFStringConvertEncodingToNSStringEncoding(nEncodingCF);
}
NSStringEncoding nEncodingNS = CFStringConvertEncodingToNSStringEncoding(nEncodingCF);
NSString* sUnicodeNS = [[NSString alloc] initWithBytes:sInput length:nInputLen encoding:nEncodingNS];
sRes = NSStringToStdstring(sUnicodeNS);
}
@ -164,12 +171,19 @@ namespace NSUnicodeConverter
std::wstring toUnicode(const char* sInput, const unsigned int& nInputLen, const char* converterName, bool isExact)
{
std::wstring sRes = L"";
if (!isExact && nInputLen > 0)
if (nInputLen > 0)
{
NSString* sEncodingCF = StringAToNSString(std::string(converterName));
CFStringEncoding nEncodingCF = CFStringConvertIANACharSetNameToEncoding((CFStringRef)sEncodingCF);
if (kCFStringEncodingInvalidId == nEncodingCF)
{
if (isExact)
{
std::string strInputA(sInput, nInputLen);
sRes = std::wstring(strInputA.begin(), strInputA.end());
}
return sRes;
}
NSStringEncoding nEncodingNS = CFStringConvertEncodingToNSStringEncoding(nEncodingCF);
NSString* sUnicodeNS = [[NSString alloc] initWithBytes:sInput length:nInputLen encoding:nEncodingNS];

View File

@ -26,7 +26,7 @@ build_x2t_as_library {
include(X2tConverter.pri)
build_x2t_as_library {
shared:QMAKE_LFLAGS += -exported_symbols_list $$PWD/../../src/dylib/export
!core_debug:shared:QMAKE_LFLAGS += -exported_symbols_list $$PWD/../../src/dylib/export
}