mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-12 09:10:00 -06:00
94 lines
2.0 KiB
C++
Executable File
94 lines
2.0 KiB
C++
Executable File
// Split/OutHandler.cpp
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "SplitHandler.h"
|
|
#include "../../../Windows/PropVariant.h"
|
|
#include "../../../Common/ComTry.h"
|
|
#include "../../../Common/StringToInt.h"
|
|
|
|
using namespace NWindows;
|
|
|
|
namespace NArchive {
|
|
namespace NSplit {
|
|
|
|
/*
|
|
STDMETHODIMP CHandler::GetFileTimeType(UINT32 *type)
|
|
{
|
|
*type = NFileTimeType::kWindows;
|
|
return S_OK;
|
|
}
|
|
|
|
|
|
STDMETHODIMP CHandler::UpdateItems(IOutStream *outStream, UINT32 numItems,
|
|
IArchiveUpdateCallback *updateCallback)
|
|
{
|
|
COM_TRY_BEGIN
|
|
|
|
if (numItems != 1)
|
|
return E_INVALIDARG;
|
|
|
|
UINT64 volumeSize;
|
|
RINOK(updateCallback->GetVolumeSize(0, &volumeSize));
|
|
|
|
INT32 newData;
|
|
INT32 newProperties;
|
|
UINT32 indexInArchive;
|
|
if (!updateCallback)
|
|
return E_FAIL;
|
|
|
|
UINT32 fileIndex;
|
|
RINOK(updateCallback->GetUpdateItemInfo(fileIndex,
|
|
&newData, &newProperties, &indexInArchive));
|
|
|
|
if (newProperties != 0)
|
|
{
|
|
{
|
|
NCOM::CPropVariant propVariant;
|
|
RINOK(updateCallback->GetProperty(fileIndex, kpidIsFolder, &propVariant));
|
|
if (propVariant.vt == VT_EMPTY)
|
|
{
|
|
}
|
|
else if (propVariant.vt != VT_BOOL)
|
|
return E_INVALIDARG;
|
|
else
|
|
{
|
|
if (propVariant.boolVal != VARIANT_FALSE)
|
|
return E_INVALIDARG;
|
|
}
|
|
}
|
|
{
|
|
NCOM::CPropVariant propVariant;
|
|
RINOK(updateCallback->GetProperty(fileIndex, kpidIsAnti, &propVariant));
|
|
if (propVariant.vt == VT_EMPTY)
|
|
{
|
|
}
|
|
else if (propVariant.vt != VT_BOOL)
|
|
return E_INVALIDARG;
|
|
else
|
|
{
|
|
if (propVariant.boolVal != VARIANT_FALSE)
|
|
return E_INVALIDARG;
|
|
}
|
|
}
|
|
}
|
|
UINT64 newSize;
|
|
bool thereIsCopyData = false;
|
|
if (newData != 0)
|
|
{
|
|
NCOM::CPropVariant propVariant;
|
|
RINOK(updateCallback->GetProperty(fileIndex, kpidSize, &propVariant));
|
|
if (propVariant.vt != VT_UI8)
|
|
return E_INVALIDARG;
|
|
newSize = *(const UINT64 *)(&propVariant.uhVal);
|
|
}
|
|
else
|
|
thereIsCopyData = true;
|
|
|
|
return S_OK;
|
|
COM_TRY_END
|
|
}
|
|
*/
|
|
|
|
}}
|