mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
Update implementation to use 7zip 23.01
Mostly changes in macros
This commit is contained in:
parent
7e70cf2d70
commit
27b7176e41
@ -123,10 +123,8 @@ CompressedArchive::CompressedArchive(const QString &filePath, QObject *parent)
|
|||||||
CMyComPtr<IInStream> file = fileSpec;
|
CMyComPtr<IInStream> file = fileSpec;
|
||||||
|
|
||||||
YCArchiveOpenCallback *openCallbackSpec = new YCArchiveOpenCallback;
|
YCArchiveOpenCallback *openCallbackSpec = new YCArchiveOpenCallback;
|
||||||
CMyComPtr<IArchiveOpenCallback> openCallback = openCallbackSpec;
|
CMyComPtr<IArchiveOpenCallback> openCallback(openCallbackSpec);
|
||||||
openCallbackSpec->PasswordIsDefined = false;
|
openCallbackSpec->PasswordIsDefined = false;
|
||||||
// openCallbackSpec->PasswordIsDefined = true;
|
|
||||||
// openCallbackSpec->Password = L"1";
|
|
||||||
|
|
||||||
// get file type from suffix
|
// get file type from suffix
|
||||||
int i = -1;
|
int i = -1;
|
||||||
@ -136,10 +134,6 @@ CompressedArchive::CompressedArchive(const QString &filePath, QObject *parent)
|
|||||||
return;
|
return;
|
||||||
QByteArray magicNumber = filex.read(8); // read first 8 bytes
|
QByteArray magicNumber = filex.read(8); // read first 8 bytes
|
||||||
|
|
||||||
// if (memcmp(magicNumber,rar5,8)==0)
|
|
||||||
// return; //rar5 is not supported
|
|
||||||
// qDebug() << memcmp(magicNumber,rar,7);
|
|
||||||
// TODO: this suffix matching is rather primitive - better approach?
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
if (memcmp(magicNumber, rar, 6) != 0) {
|
if (memcmp(magicNumber, rar, 6) != 0) {
|
||||||
// match suffix to GUID list
|
// match suffix to GUID list
|
||||||
|
@ -44,26 +44,8 @@ class YCArchiveExtractCallback : public IArchiveExtractCallback,
|
|||||||
public ICryptoGetTextPassword,
|
public ICryptoGetTextPassword,
|
||||||
public CMyUnknownImp
|
public CMyUnknownImp
|
||||||
{
|
{
|
||||||
public:
|
Z7_IFACES_IMP_UNK_2(IArchiveExtractCallback, ICryptoGetTextPassword)
|
||||||
MY_UNKNOWN_IMP1(ICryptoGetTextPassword)
|
Z7_IFACE_COM7_IMP(IProgress)
|
||||||
|
|
||||||
// IProgress
|
|
||||||
STDMETHOD(SetTotal)
|
|
||||||
(UInt64 size);
|
|
||||||
STDMETHOD(SetCompleted)
|
|
||||||
(const UInt64 *completeValue);
|
|
||||||
|
|
||||||
// IArchiveExtractCallback
|
|
||||||
STDMETHOD(GetStream)
|
|
||||||
(UInt32 index, ISequentialOutStream **outStream, Int32 askExtractMode);
|
|
||||||
STDMETHOD(PrepareOperation)
|
|
||||||
(Int32 askExtractMode);
|
|
||||||
STDMETHOD(SetOperationResult)
|
|
||||||
(Int32 resultEOperationResult);
|
|
||||||
|
|
||||||
// ICryptoGetTextPassword
|
|
||||||
STDMETHOD(CryptoGetTextPassword)
|
|
||||||
(BSTR *aPassword);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CMyComPtr<IInArchive> _archiveHandler;
|
CMyComPtr<IInArchive> _archiveHandler;
|
||||||
@ -108,18 +90,18 @@ void YCArchiveExtractCallback::Init(IInArchive *archiveHandler, const UString &d
|
|||||||
directoryPath; // unused
|
directoryPath; // unused
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP YCArchiveExtractCallback::SetTotal(UInt64 /* size */)
|
Z7_COM7F_IMF(YCArchiveExtractCallback::SetTotal(UInt64 /* size */))
|
||||||
{
|
{
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP YCArchiveExtractCallback::SetCompleted(const UInt64 * /* completeValue */)
|
Z7_COM7F_IMF(YCArchiveExtractCallback::SetCompleted(const UInt64 * /* completeValue */))
|
||||||
{
|
{
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP YCArchiveExtractCallback::GetStream(UInt32 index,
|
Z7_COM7F_IMF(YCArchiveExtractCallback::GetStream(UInt32 index,
|
||||||
ISequentialOutStream **outStream, Int32 askExtractMode)
|
ISequentialOutStream **outStream, Int32 askExtractMode))
|
||||||
{
|
{
|
||||||
*outStream = 0;
|
*outStream = 0;
|
||||||
_outFileStream.Release();
|
_outFileStream.Release();
|
||||||
@ -220,7 +202,7 @@ STDMETHODIMP YCArchiveExtractCallback::GetStream(UInt32 index,
|
|||||||
}*/
|
}*/
|
||||||
if (newFileSizeDefined) {
|
if (newFileSizeDefined) {
|
||||||
CBufPtrSeqOutStream *outStreamSpec = new CBufPtrSeqOutStream;
|
CBufPtrSeqOutStream *outStreamSpec = new CBufPtrSeqOutStream;
|
||||||
CMyComPtr<CBufPtrSeqOutStream> outStreamLocal(outStreamSpec);
|
CMyComPtr<ISequentialOutStream> outStreamLocal(outStreamSpec);
|
||||||
data = (Byte *)MidAlloc(newFileSize);
|
data = (Byte *)MidAlloc(newFileSize);
|
||||||
outStreamSpec->Init(data, newFileSize);
|
outStreamSpec->Init(data, newFileSize);
|
||||||
*outStream = outStreamLocal.Detach();
|
*outStream = outStreamLocal.Detach();
|
||||||
@ -230,7 +212,7 @@ STDMETHODIMP YCArchiveExtractCallback::GetStream(UInt32 index,
|
|||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP YCArchiveExtractCallback::PrepareOperation(Int32 askExtractMode)
|
Z7_COM7F_IMF(YCArchiveExtractCallback::PrepareOperation(Int32 askExtractMode))
|
||||||
{
|
{
|
||||||
_extractMode = false;
|
_extractMode = false;
|
||||||
switch (askExtractMode) {
|
switch (askExtractMode) {
|
||||||
@ -248,7 +230,7 @@ STDMETHODIMP YCArchiveExtractCallback::PrepareOperation(Int32 askExtractMode)
|
|||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP YCArchiveExtractCallback::SetOperationResult(Int32 operationResult)
|
Z7_COM7F_IMF(YCArchiveExtractCallback::SetOperationResult(Int32 operationResult))
|
||||||
{
|
{
|
||||||
switch (operationResult) {
|
switch (operationResult) {
|
||||||
case NArchive::NExtract::NOperationResult::kOK:
|
case NArchive::NExtract::NOperationResult::kOK:
|
||||||
@ -303,7 +285,7 @@ STDMETHODIMP YCArchiveExtractCallback::SetOperationResult(Int32 operationResult)
|
|||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP YCArchiveExtractCallback::CryptoGetTextPassword(BSTR *password)
|
Z7_COM7F_IMF(YCArchiveExtractCallback::CryptoGetTextPassword(BSTR *password))
|
||||||
{
|
{
|
||||||
if (!PasswordIsDefined) {
|
if (!PasswordIsDefined) {
|
||||||
// You can ask real password here from user
|
// You can ask real password here from user
|
||||||
|
@ -10,17 +10,8 @@ class YCArchiveOpenCallback : public IArchiveOpenCallback,
|
|||||||
public ICryptoGetTextPassword,
|
public ICryptoGetTextPassword,
|
||||||
public CMyUnknownImp
|
public CMyUnknownImp
|
||||||
{
|
{
|
||||||
|
Z7_IFACES_IMP_UNK_2(IArchiveOpenCallback, ICryptoGetTextPassword)
|
||||||
public:
|
public:
|
||||||
MY_UNKNOWN_IMP1(ICryptoGetTextPassword)
|
|
||||||
|
|
||||||
STDMETHOD(SetTotal)
|
|
||||||
(const UInt64 *files, const UInt64 *bytes);
|
|
||||||
STDMETHOD(SetCompleted)
|
|
||||||
(const UInt64 *files, const UInt64 *bytes);
|
|
||||||
|
|
||||||
STDMETHOD(CryptoGetTextPassword)
|
|
||||||
(BSTR *password);
|
|
||||||
|
|
||||||
bool PasswordIsDefined;
|
bool PasswordIsDefined;
|
||||||
UString Password;
|
UString Password;
|
||||||
|
|
||||||
@ -28,17 +19,17 @@ public:
|
|||||||
: PasswordIsDefined(false) { }
|
: PasswordIsDefined(false) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
STDMETHODIMP YCArchiveOpenCallback::SetTotal(const UInt64 * /* files */, const UInt64 * /* bytes */)
|
Z7_COM7F_IMF(YCArchiveOpenCallback::SetTotal(const UInt64 * /* files */, const UInt64 * /* bytes */))
|
||||||
{
|
{
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP YCArchiveOpenCallback::SetCompleted(const UInt64 * /* files */, const UInt64 * /* bytes */)
|
Z7_COM7F_IMF(YCArchiveOpenCallback::SetCompleted(const UInt64 * /* files */, const UInt64 * /* bytes */))
|
||||||
{
|
{
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
STDMETHODIMP YCArchiveOpenCallback::CryptoGetTextPassword(BSTR *password)
|
Z7_COM7F_IMF(YCArchiveOpenCallback::CryptoGetTextPassword(BSTR *password))
|
||||||
{
|
{
|
||||||
if (!PasswordIsDefined) {
|
if (!PasswordIsDefined) {
|
||||||
// You can ask real password here from user
|
// You can ask real password here from user
|
||||||
|
Loading…
Reference in New Issue
Block a user