diff options
author | Igor Pavlov <ipavlov@users.sourceforge.net> | 2008-08-13 04:00:00 +0400 |
---|---|---|
committer | Kornel LesiĆski <kornel@geekhood.net> | 2016-05-28 02:15:56 +0300 |
commit | 173c07e166fdf6fcd20f18ea73008f1b628945df (patch) | |
tree | 13ebea85cdc4c16ae93714ff0627ee9f91ad7e08 /CPP/7zip/UI/Common/UpdateProduce.cpp | |
parent | 3901bf0ab88106a5b031cba7bc18d60cdebf7eef (diff) |
4.59 beta
Diffstat (limited to 'CPP/7zip/UI/Common/UpdateProduce.cpp')
-rwxr-xr-x | CPP/7zip/UI/Common/UpdateProduce.cpp | 59 |
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(); } |