Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: third_party/lzma/v4_65/files/CPP/7zip/UI/Common/Extract.cpp

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/lzma/v4_65/files/CPP/7zip/UI/Common/Extract.cpp
diff --git a/third_party/lzma/v4_65/files/CPP/7zip/UI/Common/Extract.cpp b/third_party/lzma/v4_65/files/CPP/7zip/UI/Common/Extract.cpp
deleted file mode 100644
index 3ac497f428a1f292abc899946fd11d0d76ce2b20..0000000000000000000000000000000000000000
--- a/third_party/lzma/v4_65/files/CPP/7zip/UI/Common/Extract.cpp
+++ /dev/null
@@ -1,218 +0,0 @@
-// Extract.cpp
-
-#include "StdAfx.h"
-
-#include "Extract.h"
-
-#include "Windows/Defs.h"
-#include "Windows/FileDir.h"
-
-#include "OpenArchive.h"
-#include "SetProperties.h"
-
-using namespace NWindows;
-
-static HRESULT DecompressArchive(
- IInArchive *archive,
- UInt64 packSize,
- const NWildcard::CCensorNode &wildcardCensor,
- const CExtractOptions &options,
- IExtractCallbackUI *callback,
- CArchiveExtractCallback *extractCallbackSpec,
- UString &errorMessage)
-{
- CRecordVector<UInt32> realIndices;
- UInt32 numItems;
- RINOK(archive->GetNumberOfItems(&numItems));
-
- for(UInt32 i = 0; i < numItems; i++)
- {
- UString filePath;
- RINOK(GetArchiveItemPath(archive, i, options.DefaultItemName, filePath));
- bool isFolder;
- RINOK(IsArchiveItemFolder(archive, i, isFolder));
- if (!wildcardCensor.CheckPath(filePath, !isFolder))
- continue;
- realIndices.Add(i);
- }
- if (realIndices.Size() == 0)
- {
- callback->ThereAreNoFiles();
- return S_OK;
- }
-
- UStringVector removePathParts;
-
- UString outDir = options.OutputDir;
- outDir.Replace(L"*", options.DefaultItemName);
- #ifdef _WIN32
- outDir.TrimRight();
- #endif
-
- if(!outDir.IsEmpty())
- if(!NFile::NDirectory::CreateComplexDirectory(outDir))
- {
- HRESULT res = ::GetLastError();
- if (res == S_OK)
- res = E_FAIL;
- errorMessage = ((UString)L"Can not create output directory ") + outDir;
- return res;
- }
-
- extractCallbackSpec->Init(
- archive,
- callback,
- options.StdOutMode,
- outDir,
- removePathParts,
- options.DefaultItemName,
- options.ArchiveFileInfo.MTime,
- options.ArchiveFileInfo.Attrib,
- packSize);
-
- #ifdef COMPRESS_MT
- RINOK(SetProperties(archive, options.Properties));
- #endif
-
- HRESULT result = archive->Extract(&realIndices.Front(),
- realIndices.Size(), options.TestMode? 1: 0, extractCallbackSpec);
-
- return callback->ExtractResult(result);
-}
-
-HRESULT DecompressArchives(
- CCodecs *codecs, const CIntVector &formatIndices,
- UStringVector &archivePaths, UStringVector &archivePathsFull,
- const NWildcard::CCensorNode &wildcardCensor,
- const CExtractOptions &optionsSpec,
- IOpenCallbackUI *openCallback,
- IExtractCallbackUI *extractCallback,
- UString &errorMessage,
- CDecompressStat &stat)
-{
- stat.Clear();
- CExtractOptions options = optionsSpec;
- int i;
- UInt64 totalPackSize = 0;
- CRecordVector<UInt64> archiveSizes;
- for (i = 0; i < archivePaths.Size(); i++)
- {
- const UString &archivePath = archivePaths[i];
- NFile::NFind::CFileInfoW fi;
- if (!NFile::NFind::FindFile(archivePath, fi))
- throw "there is no such archive";
- if (fi.IsDir())
- throw "can't decompress folder";
- archiveSizes.Add(fi.Size);
- totalPackSize += fi.Size;
- }
- CArchiveExtractCallback *extractCallbackSpec = new CArchiveExtractCallback;
- CMyComPtr<IArchiveExtractCallback> ec(extractCallbackSpec);
- bool multi = (archivePaths.Size() > 1);
- extractCallbackSpec->InitForMulti(multi, options.PathMode, options.OverwriteMode);
- if (multi)
- {
- RINOK(extractCallback->SetTotal(totalPackSize));
- }
- for (i = 0; i < archivePaths.Size(); i++)
- {
- const UString &archivePath = archivePaths[i];
- NFile::NFind::CFileInfoW fi;
- if (!NFile::NFind::FindFile(archivePath, fi))
- throw "there is no such archive";
-
- if (fi.IsDir())
- throw "there is no such archive";
-
- options.ArchiveFileInfo = fi;
-
- #ifndef _NO_CRYPTO
- openCallback->Open_ClearPasswordWasAskedFlag();
- #endif
-
- RINOK(extractCallback->BeforeOpen(archivePath));
- CArchiveLink archiveLink;
-
- CIntVector formatIndices2 = formatIndices;
- #ifndef _SFX
- if (formatIndices.IsEmpty())
- {
- int pos = archivePath.ReverseFind(L'.');
- if (pos >= 0)
- {
- UString s = archivePath.Mid(pos + 1);
- int index = codecs->FindFormatForExtension(s);
- if (index >= 0 && s == L"001")
- {
- s = archivePath.Left(pos);
- pos = s.ReverseFind(L'.');
- if (pos >= 0)
- {
- int index2 = codecs->FindFormatForExtension(s.Mid(pos + 1));
- if (index2 >= 0 && s.CompareNoCase(L"rar") != 0)
- {
- formatIndices2.Add(index2);
- formatIndices2.Add(index);
- }
- }
- }
- }
- }
- #endif
- HRESULT result = MyOpenArchive(codecs, formatIndices2, archivePath, archiveLink, openCallback);
- if (result == E_ABORT)
- return result;
-
- bool crypted = false;
- #ifndef _NO_CRYPTO
- crypted = openCallback->Open_WasPasswordAsked();
- #endif
-
- RINOK(extractCallback->OpenResult(archivePath, result, crypted));
- if (result != S_OK)
- continue;
-
- for (int v = 0; v < archiveLink.VolumePaths.Size(); v++)
- {
- int index = archivePathsFull.FindInSorted(archiveLink.VolumePaths[v]);
- if (index >= 0 && index > i)
- {
- archivePaths.Delete(index);
- archivePathsFull.Delete(index);
- totalPackSize -= archiveSizes[index];
- archiveSizes.Delete(index);
- }
- }
- if (archiveLink.VolumePaths.Size() != 0)
- {
- totalPackSize += archiveLink.VolumesSize;
- RINOK(extractCallback->SetTotal(totalPackSize));
- }
-
- #ifndef _NO_CRYPTO
- UString password;
- RINOK(openCallback->Open_GetPasswordIfAny(password));
- if (!password.IsEmpty())
- {
- RINOK(extractCallback->SetPassword(password));
- }
- #endif
-
- options.DefaultItemName = archiveLink.GetDefaultItemName();
- RINOK(DecompressArchive(
- archiveLink.GetArchive(),
- fi.Size + archiveLink.VolumesSize,
- wildcardCensor, options, extractCallback, extractCallbackSpec, errorMessage));
- extractCallbackSpec->LocalProgressSpec->InSize += fi.Size +
- archiveLink.VolumesSize;
- extractCallbackSpec->LocalProgressSpec->OutSize = extractCallbackSpec->UnpackSize;
- if (!errorMessage.IsEmpty())
- return E_FAIL;
- }
- stat.NumFolders = extractCallbackSpec->NumFolders;
- stat.NumFiles = extractCallbackSpec->NumFiles;
- stat.UnpackSize = extractCallbackSpec->UnpackSize;
- stat.NumArchives = archivePaths.Size();
- stat.PackSize = extractCallbackSpec->LocalProgressSpec->InSize;
- return S_OK;
-}

Powered by Google App Engine
This is Rietveld 408576698