This commit is contained in:
Elena.Subbotina
2023-06-09 18:27:12 +03:00
parent 9fc7aa5bca
commit a0ff455786
6 changed files with 22 additions and 9 deletions

View File

@ -68,6 +68,9 @@ public:
inline void close() override {
std::fstream::close();
}
inline bool isError() override {
return (std::fstream::bad() || std::fstream::fail());
}
};
}

View File

@ -48,6 +48,7 @@ namespace CFCPP
virtual void write (const char* buffer, _INT64 len) = 0;
virtual void flush() = 0;
virtual void close() = 0;
virtual bool isError() = 0;
};
using Stream = std::shared_ptr<IStream>;

View File

@ -123,6 +123,14 @@ void StreamView::close()
if (std::dynamic_pointer_cast<std::iostream>(stream) != nullptr)
stream->close();
}
bool StreamView::isError()
{
if (std::dynamic_pointer_cast<std::iostream>(stream) == nullptr) return true;
if ((std::dynamic_pointer_cast<std::iostream>(stream))->bad()) return true;
if ((std::dynamic_pointer_cast<std::iostream>(stream))->fail()) return true;
return false;
}
_INT64 StreamView::read(char *buffer, _INT64 len)
{

View File

@ -46,14 +46,13 @@ public:
StreamView(const SVector<Sector> &sectorChain, _INT32 sectorSize, _INT64 length,
SList<Sector> &availableSectors, Stream stream, bool isFatStream = false);
_INT64 tell() override;
_INT64 seek(_INT64 offset, std::ios_base::seekdir mode = std::ios::beg) override;
_INT64 read(char *buffer, _INT64 count) override;
void write(const char *buffer, _INT64 count) override;
void flush() override {}
void close() override;
bool isError() override;
_INT64 getPosition() const;
void SetLength(_INT64 value);

View File

@ -942,9 +942,10 @@ bool ECMACryptFile::EncryptOfficeFile(const std::wstring &file_name_inp, const s
}
}
//-------------------------------------------------------------------
bool result = true;
if (bLargeFile)
{
pStorageNew->Save(file_name_out);
result = pStorageNew->Save(file_name_out);
pStorageNew->Close();
delete pStorageNew;
}
@ -974,7 +975,7 @@ bool ECMACryptFile::EncryptOfficeFile(const std::wstring &file_name_inp, const s
// }
////test back---------------------------------------------------------------------------------test back
return true;
return result;
}
bool ECMACryptFile::DecryptOfficeFile(const std::wstring &file_name_inp, const std::wstring &file_name_out, const std::wstring &password, bool & bDataIntegrity)
{

View File

@ -3049,11 +3049,12 @@ namespace NExtractTools
NSDirectory::CreateDirectory(sTempUnpackedOox);
_UINT32 nRes = odf_flat2oox_dir(sFrom, sTempUnpackedOox, sTemp, params);
if(SUCCEEDED_X2T(nRes))
{
COfficeUtils oCOfficeUtils(NULL);
nRes = (S_OK == oCOfficeUtils.CompressFileOrDirectory(sTempUnpackedOox, sTo, true)) ? nRes : AVS_FILEUTILS_ERROR_CONVERT;
}
if (SUCCEEDED_X2T(nRes))
{
nRes = dir2zipMscrypt(sTempUnpackedOox, sTo, sTemp, params);
}
return nRes;
}
_UINT32 odf_flat2oox_dir(const std::wstring &sFrom, const std::wstring &sTo, const std::wstring & sTemp, InputParams& params)