mirror of
https://github.com/Xevion/easy7zip.git
synced 2026-02-01 02:24:22 -06:00
4.59 beta
This commit is contained in:
committed by
Kornel Lesiński
parent
3901bf0ab8
commit
173c07e166
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user