Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pavlov <ipavlov@users.sourceforge.net>2008-08-13 04:00:00 +0400
committerKornel LesiƄski <kornel@geekhood.net>2016-05-28 02:15:56 +0300
commit173c07e166fdf6fcd20f18ea73008f1b628945df (patch)
tree13ebea85cdc4c16ae93714ff0627ee9f91ad7e08 /CPP/7zip/UI/Common/UpdateProduce.cpp
parent3901bf0ab88106a5b031cba7bc18d60cdebf7eef (diff)
4.59 beta
Diffstat (limited to 'CPP/7zip/UI/Common/UpdateProduce.cpp')
-rwxr-xr-xCPP/7zip/UI/Common/UpdateProduce.cpp59
1 files changed, 25 insertions, 34 deletions
diff --git a/CPP/7zip/UI/Common/UpdateProduce.cpp b/CPP/7zip/UI/Common/UpdateProduce.cpp
index 5552161a..b2bc59a5 100755
--- a/CPP/7zip/UI/Common/UpdateProduce.cpp
+++ b/CPP/7zip/UI/Common/UpdateProduce.cpp
@@ -6,58 +6,49 @@
using namespace NUpdateArchive;
-static const char *kUpdateActionSetCollision =
- "Internal collision in update action set";
+static const char *kUpdateActionSetCollision = "Internal collision in update action set";
void UpdateProduce(
- const CObjectVector<CUpdatePair> &updatePairs,
+ const CRecordVector<CUpdatePair> &updatePairs,
const NUpdateArchive::CActionSet &actionSet,
- CObjectVector<CUpdatePair2> &operationChain)
+ CRecordVector<CUpdatePair2> &operationChain)
{
- for(int i = 0; i < updatePairs.Size(); i++)
+ for (int i = 0; i < updatePairs.Size(); i++)
{
- // CUpdateArchiveRange aRange;
const CUpdatePair &pair = updatePairs[i];
- CUpdatePair2 pair2;
- pair2.IsAnti = false;
- pair2.ArchiveItemIndex = pair.ArchiveItemIndex;
- pair2.DirItemIndex = pair.DirItemIndex;
- pair2.ExistInArchive = (pair.State != NPairState::kOnlyOnDisk);
- pair2.ExistOnDisk = (pair.State != NPairState::kOnlyInArchive && pair.State != NPairState::kNotMasked);
+ CUpdatePair2 up2;
+ up2.IsAnti = false;
+ up2.DirIndex = pair.DirIndex;
+ up2.ArcIndex = pair.ArcIndex;
+ up2.NewData = up2.NewProps = true;
switch(actionSet.StateActions[pair.State])
{
case NPairAction::kIgnore:
/*
if (pair.State != NPairState::kOnlyOnDisk)
- IgnoreArchiveItem(m_ArchiveItems[pair.ArchiveItemIndex]);
+ IgnoreArchiveItem(m_ArchiveItems[pair.ArcIndex]);
// cout << "deleting";
*/
- break;
+ continue;
+
case NPairAction::kCopy:
- {
- if (pair.State == NPairState::kOnlyOnDisk)
- throw kUpdateActionSetCollision;
- pair2.NewData = pair2.NewProperties = false;
- operationChain.Add(pair2);
- break;
- }
+ if (pair.State == NPairState::kOnlyOnDisk)
+ throw kUpdateActionSetCollision;
+ up2.NewData = up2.NewProps = false;
+ break;
+
case NPairAction::kCompress:
- {
- if (pair.State == NPairState::kOnlyInArchive ||
+ if (pair.State == NPairState::kOnlyInArchive ||
pair.State == NPairState::kNotMasked)
- throw kUpdateActionSetCollision;
- pair2.NewData = pair2.NewProperties = true;
- operationChain.Add(pair2);
- break;
- }
+ throw kUpdateActionSetCollision;
+ break;
+
case NPairAction::kCompressAsAnti:
- {
- pair2.IsAnti = true;
- pair2.NewData = pair2.NewProperties = true;
- operationChain.Add(pair2);
- break;
- }
+ up2.IsAnti = true;
+ break;
}
+ operationChain.Add(up2);
}
+ operationChain.ReserveDown();
}