| Index: third_party/lzma/v4_65/files/CPP/7zip/Archive/7z/7zFolderOutStream.cpp
|
| diff --git a/third_party/lzma/v4_65/files/CPP/7zip/Archive/7z/7zFolderOutStream.cpp b/third_party/lzma/v4_65/files/CPP/7zip/Archive/7z/7zFolderOutStream.cpp
|
| deleted file mode 100644
|
| index 61b938d00589aa4f946a2368ea317b6ef23a3e85..0000000000000000000000000000000000000000
|
| --- a/third_party/lzma/v4_65/files/CPP/7zip/Archive/7z/7zFolderOutStream.cpp
|
| +++ /dev/null
|
| @@ -1,164 +0,0 @@
|
| -// 7zFolderOutStream.cpp
|
| -
|
| -#include "StdAfx.h"
|
| -
|
| -#include "7zFolderOutStream.h"
|
| -
|
| -namespace NArchive {
|
| -namespace N7z {
|
| -
|
| -CFolderOutStream::CFolderOutStream()
|
| -{
|
| - _outStreamWithHashSpec = new COutStreamWithCRC;
|
| - _outStreamWithHash = _outStreamWithHashSpec;
|
| -}
|
| -
|
| -HRESULT CFolderOutStream::Init(
|
| - const CArchiveDatabaseEx *archiveDatabase,
|
| - UInt32 ref2Offset,
|
| - UInt32 startIndex,
|
| - const CBoolVector *extractStatuses,
|
| - IArchiveExtractCallback *extractCallback,
|
| - bool testMode,
|
| - bool checkCrc)
|
| -{
|
| - _archiveDatabase = archiveDatabase;
|
| - _ref2Offset = ref2Offset;
|
| - _startIndex = startIndex;
|
| -
|
| - _extractStatuses = extractStatuses;
|
| - _extractCallback = extractCallback;
|
| - _testMode = testMode;
|
| -
|
| - _checkCrc = checkCrc;
|
| -
|
| - _currentIndex = 0;
|
| - _fileIsOpen = false;
|
| - return WriteEmptyFiles();
|
| -}
|
| -
|
| -HRESULT CFolderOutStream::OpenFile()
|
| -{
|
| - Int32 askMode;
|
| - if((*_extractStatuses)[_currentIndex])
|
| - askMode = _testMode ?
|
| - NArchive::NExtract::NAskMode::kTest :
|
| - NArchive::NExtract::NAskMode::kExtract;
|
| - else
|
| - askMode = NArchive::NExtract::NAskMode::kSkip;
|
| - CMyComPtr<ISequentialOutStream> realOutStream;
|
| -
|
| - UInt32 index = _startIndex + _currentIndex;
|
| - RINOK(_extractCallback->GetStream(_ref2Offset + index, &realOutStream, askMode));
|
| -
|
| - _outStreamWithHashSpec->SetStream(realOutStream);
|
| - _outStreamWithHashSpec->Init(_checkCrc);
|
| - if (askMode == NArchive::NExtract::NAskMode::kExtract &&
|
| - (!realOutStream))
|
| - {
|
| - const CFileItem &fi = _archiveDatabase->Files[index];
|
| - if (!_archiveDatabase->IsItemAnti(index) && !fi.IsDir)
|
| - askMode = NArchive::NExtract::NAskMode::kSkip;
|
| - }
|
| - return _extractCallback->PrepareOperation(askMode);
|
| -}
|
| -
|
| -HRESULT CFolderOutStream::WriteEmptyFiles()
|
| -{
|
| - for(;_currentIndex < _extractStatuses->Size(); _currentIndex++)
|
| - {
|
| - UInt32 index = _startIndex + _currentIndex;
|
| - const CFileItem &fi = _archiveDatabase->Files[index];
|
| - if (!_archiveDatabase->IsItemAnti(index) && !fi.IsDir && fi.Size != 0)
|
| - return S_OK;
|
| - RINOK(OpenFile());
|
| - RINOK(_extractCallback->SetOperationResult(NArchive::NExtract::NOperationResult::kOK));
|
| - _outStreamWithHashSpec->ReleaseStream();
|
| - }
|
| - return S_OK;
|
| -}
|
| -
|
| -STDMETHODIMP CFolderOutStream::Write(const void *data,
|
| - UInt32 size, UInt32 *processedSize)
|
| -{
|
| - UInt32 realProcessedSize = 0;
|
| - while(_currentIndex < _extractStatuses->Size())
|
| - {
|
| - if (_fileIsOpen)
|
| - {
|
| - UInt32 index = _startIndex + _currentIndex;
|
| - const CFileItem &fi = _archiveDatabase->Files[index];
|
| - UInt64 fileSize = fi.Size;
|
| -
|
| - UInt32 numBytesToWrite = (UInt32)MyMin(fileSize - _filePos,
|
| - UInt64(size - realProcessedSize));
|
| -
|
| - UInt32 processedSizeLocal;
|
| - RINOK(_outStreamWithHash->Write((const Byte *)data + realProcessedSize,
|
| - numBytesToWrite, &processedSizeLocal));
|
| -
|
| - _filePos += processedSizeLocal;
|
| - realProcessedSize += processedSizeLocal;
|
| - if (_filePos == fileSize)
|
| - {
|
| - bool digestsAreEqual;
|
| - if (fi.CrcDefined && _checkCrc)
|
| - digestsAreEqual = fi.Crc == _outStreamWithHashSpec->GetCRC();
|
| - else
|
| - digestsAreEqual = true;
|
| -
|
| - RINOK(_extractCallback->SetOperationResult(
|
| - digestsAreEqual ?
|
| - NArchive::NExtract::NOperationResult::kOK :
|
| - NArchive::NExtract::NOperationResult::kCRCError));
|
| - _outStreamWithHashSpec->ReleaseStream();
|
| - _fileIsOpen = false;
|
| - _currentIndex++;
|
| - }
|
| - if (realProcessedSize == size)
|
| - {
|
| - if (processedSize != NULL)
|
| - *processedSize = realProcessedSize;
|
| - return WriteEmptyFiles();
|
| - }
|
| - }
|
| - else
|
| - {
|
| - RINOK(OpenFile());
|
| - _fileIsOpen = true;
|
| - _filePos = 0;
|
| - }
|
| - }
|
| - if (processedSize != NULL)
|
| - *processedSize = size;
|
| - return S_OK;
|
| -}
|
| -
|
| -HRESULT CFolderOutStream::FlushCorrupted(Int32 resultEOperationResult)
|
| -{
|
| - while(_currentIndex < _extractStatuses->Size())
|
| - {
|
| - if (_fileIsOpen)
|
| - {
|
| - RINOK(_extractCallback->SetOperationResult(resultEOperationResult));
|
| - _outStreamWithHashSpec->ReleaseStream();
|
| - _fileIsOpen = false;
|
| - _currentIndex++;
|
| - }
|
| - else
|
| - {
|
| - RINOK(OpenFile());
|
| - _fileIsOpen = true;
|
| - }
|
| - }
|
| - return S_OK;
|
| -}
|
| -
|
| -HRESULT CFolderOutStream::WasWritingFinished()
|
| -{
|
| - if (_currentIndex == _extractStatuses->Size())
|
| - return S_OK;
|
| - return E_FAIL;
|
| -}
|
| -
|
| -}}
|
|
|