|
|
|
@ -21,9 +21,10 @@ still exists and is the same inode. XXX It also checks 'birth time' but
|
|
|
|
|
this isn't portable. We can probably get away with comparing ctime
|
|
|
|
|
since we don't support hard links.
|
|
|
|
|
|
|
|
|
|
--- a/CPP/7zip/UI/Agent/Agent.cpp
|
|
|
|
|
+++ b/CPP/7zip/UI/Agent/Agent.cpp
|
|
|
|
|
@@ -1215,7 +1215,7 @@ STDMETHODIMP CAgentFolder::Extract(const
|
|
|
|
|
diff -rup p7zip_15.09.orig/CPP/7zip/UI/Agent/Agent.cpp p7zip_15.09/CPP/7zip/UI/Agent/Agent.cpp
|
|
|
|
|
--- p7zip_15.09.orig/CPP/7zip/UI/Agent/Agent.cpp 2015-09-17 20:02:35.000000000 +0100
|
|
|
|
|
+++ p7zip_15.09/CPP/7zip/UI/Agent/Agent.cpp 2015-12-03 02:22:47.073724194 +0000
|
|
|
|
|
@@ -1515,7 +1515,7 @@ STDMETHODIMP CAgentFolder::Extract(const
|
|
|
|
|
HRESULT result = _agentSpec->GetArchive()->Extract(&realIndices.Front(),
|
|
|
|
|
realIndices.Size(), testMode, extractCallback);
|
|
|
|
|
if (result == S_OK)
|
|
|
|
@ -32,9 +33,10 @@ since we don't support hard links.
|
|
|
|
|
return result;
|
|
|
|
|
COM_TRY_END
|
|
|
|
|
}
|
|
|
|
|
--- a/CPP/7zip/UI/Client7z/Client7z.cpp
|
|
|
|
|
+++ b/CPP/7zip/UI/Client7z/Client7z.cpp
|
|
|
|
|
@@ -222,8 +222,11 @@ private:
|
|
|
|
|
diff -rup p7zip_15.09.orig/CPP/7zip/UI/Client7z/Client7z.cpp p7zip_15.09/CPP/7zip/UI/Client7z/Client7z.cpp
|
|
|
|
|
--- p7zip_15.09.orig/CPP/7zip/UI/Client7z/Client7z.cpp 2015-10-17 15:52:30.000000000 +0100
|
|
|
|
|
+++ p7zip_15.09/CPP/7zip/UI/Client7z/Client7z.cpp 2015-12-03 02:22:47.073724194 +0000
|
|
|
|
|
@@ -230,8 +230,11 @@ private:
|
|
|
|
|
COutFileStream *_outFileStreamSpec;
|
|
|
|
|
CMyComPtr<ISequentialOutStream> _outFileStream;
|
|
|
|
|
|
|
|
|
@ -46,7 +48,7 @@ since we don't support hard links.
|
|
|
|
|
|
|
|
|
|
UInt64 NumErrors;
|
|
|
|
|
bool PasswordIsDefined;
|
|
|
|
|
@@ -441,11 +444,23 @@ STDMETHODIMP CArchiveExtractCallback::Se
|
|
|
|
|
@@ -449,11 +452,23 @@ STDMETHODIMP CArchiveExtractCallback::Se
|
|
|
|
|
}
|
|
|
|
|
_outFileStream.Release();
|
|
|
|
|
if (_extractMode && _processedFileInfo.AttribDefined)
|
|
|
|
@ -71,7 +73,7 @@ since we don't support hard links.
|
|
|
|
|
|
|
|
|
|
STDMETHODIMP CArchiveExtractCallback::CryptoGetTextPassword(BSTR *password)
|
|
|
|
|
{
|
|
|
|
|
@@ -912,6 +927,8 @@ int MY_CDECL main(int numArgs, const cha
|
|
|
|
|
@@ -914,6 +929,8 @@ int MY_CDECL main(int numArgs, const cha
|
|
|
|
|
// extractCallbackSpec->PasswordIsDefined = true;
|
|
|
|
|
// extractCallbackSpec->Password = L"1";
|
|
|
|
|
HRESULT result = archive->Extract(NULL, (UInt32)(Int32)(-1), false, extractCallback);
|
|
|
|
@ -80,18 +82,19 @@ since we don't support hard links.
|
|
|
|
|
if (result != S_OK)
|
|
|
|
|
{
|
|
|
|
|
PrintError("Extract Error");
|
|
|
|
|
--- a/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp
|
|
|
|
|
+++ b/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp
|
|
|
|
|
@@ -1083,7 +1083,7 @@ STDMETHODIMP CArchiveExtractCallback::Se
|
|
|
|
|
diff -rup p7zip_15.09.orig/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp p7zip_15.09/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp
|
|
|
|
|
--- p7zip_15.09.orig/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp 2015-10-03 09:49:15.000000000 +0100
|
|
|
|
|
+++ p7zip_15.09/CPP/7zip/UI/Common/ArchiveExtractCallback.cpp 2015-12-03 02:24:40.444963545 +0000
|
|
|
|
|
@@ -1502,7 +1502,7 @@ STDMETHODIMP CArchiveExtractCallback::Se
|
|
|
|
|
NumFiles++;
|
|
|
|
|
|
|
|
|
|
if (_extractMode && _fi.AttribDefined)
|
|
|
|
|
if (!_stdOutMode && _extractMode && _fi.AttribDefined)
|
|
|
|
|
- SetFileAttrib(_diskFilePath, _fi.Attrib);
|
|
|
|
|
+ SetFileAttrib(_diskFilePath, _fi.Attrib, &_delayedSymLinks);
|
|
|
|
|
RINOK(_extractCallback2->SetOperationResult(operationResult, _encrypted));
|
|
|
|
|
return S_OK;
|
|
|
|
|
COM_TRY_END
|
|
|
|
|
@@ -1149,8 +1149,9 @@ static int GetNumSlashes(const FChar *s)
|
|
|
|
|
|
|
|
|
|
RINOK(_extractCallback2->SetOperationResult(opRes, BoolToInt(_encrypted)));
|
|
|
|
|
|
|
|
|
|
@@ -1584,8 +1584,9 @@ static unsigned GetNumSlashes(const FCha
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -102,7 +105,7 @@ since we don't support hard links.
|
|
|
|
|
CRecordVector<CExtrRefSortPair> pairs;
|
|
|
|
|
pairs.ClearAndSetSize(_extractedFolderPaths.Size());
|
|
|
|
|
unsigned i;
|
|
|
|
|
@@ -1187,5 +1188,12 @@ HRESULT CArchiveExtractCallback::SetDirs
|
|
|
|
|
@@ -1622,5 +1623,12 @@ HRESULT CArchiveExtractCallback::SetDirs
|
|
|
|
|
(WriteATime && ATimeDefined) ? &ATime : NULL,
|
|
|
|
|
(WriteMTime && MTimeDefined) ? &MTime : (_arc->MTimeDefined ? &_arc->MTime : NULL));
|
|
|
|
|
}
|
|
|
|
@ -116,8 +119,9 @@ since we don't support hard links.
|
|
|
|
|
+
|
|
|
|
|
+ return result;
|
|
|
|
|
}
|
|
|
|
|
--- a/CPP/7zip/UI/Common/ArchiveExtractCallback.h
|
|
|
|
|
+++ b/CPP/7zip/UI/Common/ArchiveExtractCallback.h
|
|
|
|
|
diff -rup p7zip_15.09.orig/CPP/7zip/UI/Common/ArchiveExtractCallback.h p7zip_15.09/CPP/7zip/UI/Common/ArchiveExtractCallback.h
|
|
|
|
|
--- p7zip_15.09.orig/CPP/7zip/UI/Common/ArchiveExtractCallback.h 2015-10-03 11:29:09.000000000 +0100
|
|
|
|
|
+++ p7zip_15.09/CPP/7zip/UI/Common/ArchiveExtractCallback.h 2015-12-03 02:22:47.074724204 +0000
|
|
|
|
|
@@ -6,6 +6,8 @@
|
|
|
|
|
#include "../../../Common/MyCom.h"
|
|
|
|
|
#include "../../../Common/Wildcard.h"
|
|
|
|
@ -127,7 +131,7 @@ since we don't support hard links.
|
|
|
|
|
#include "../../IPassword.h"
|
|
|
|
|
|
|
|
|
|
#include "../../Common/FileStreams.h"
|
|
|
|
|
@@ -213,6 +215,8 @@ class CArchiveExtractCallback:
|
|
|
|
|
@@ -237,6 +239,8 @@ class CArchiveExtractCallback:
|
|
|
|
|
bool _saclEnabled;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
@ -136,18 +140,19 @@ since we don't support hard links.
|
|
|
|
|
void CreateComplexDirectory(const UStringVector &dirPathParts, FString &fullPath);
|
|
|
|
|
HRESULT GetTime(int index, PROPID propID, FILETIME &filetime, bool &filetimeIsDefined);
|
|
|
|
|
HRESULT GetUnpackSize();
|
|
|
|
|
@@ -293,7 +297,7 @@ public:
|
|
|
|
|
_baseParentFolder = indexInArc;
|
|
|
|
|
@@ -330,7 +334,7 @@ public:
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
- HRESULT SetDirsTimes();
|
|
|
|
|
+ HRESULT SetFinalAttribs();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
--- a/CPP/7zip/UI/Common/Extract.cpp
|
|
|
|
|
+++ b/CPP/7zip/UI/Common/Extract.cpp
|
|
|
|
|
@@ -170,7 +170,7 @@ static HRESULT DecompressArchive(
|
|
|
|
|
bool CensorNode_CheckPath(const NWildcard::CCensorNode &node, const CReadArcItem &item);
|
|
|
|
|
diff -rup p7zip_15.09.orig/CPP/7zip/UI/Common/Extract.cpp p7zip_15.09/CPP/7zip/UI/Common/Extract.cpp
|
|
|
|
|
--- p7zip_15.09.orig/CPP/7zip/UI/Common/Extract.cpp 2015-09-07 20:47:32.000000000 +0100
|
|
|
|
|
+++ p7zip_15.09/CPP/7zip/UI/Common/Extract.cpp 2015-12-03 02:22:47.075724215 +0000
|
|
|
|
|
@@ -207,7 +207,7 @@ static HRESULT DecompressArchive(
|
|
|
|
|
else
|
|
|
|
|
result = archive->Extract(&realIndices.Front(), realIndices.Size(), testMode, ecs);
|
|
|
|
|
if (result == S_OK && !options.StdInMode)
|
|
|
|
@ -156,9 +161,10 @@ since we don't support hard links.
|
|
|
|
|
return callback->ExtractResult(result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
--- a/CPP/Windows/FileDir.cpp
|
|
|
|
|
+++ b/CPP/Windows/FileDir.cpp
|
|
|
|
|
@@ -343,7 +343,8 @@ static int convert_to_symlink(const char
|
|
|
|
|
diff -rup p7zip_15.09.orig/CPP/Windows/FileDir.cpp p7zip_15.09/CPP/Windows/FileDir.cpp
|
|
|
|
|
--- p7zip_15.09.orig/CPP/Windows/FileDir.cpp 2015-10-10 13:37:41.000000000 +0100
|
|
|
|
|
+++ p7zip_15.09/CPP/Windows/FileDir.cpp 2015-12-03 02:22:47.075724215 +0000
|
|
|
|
|
@@ -347,7 +347,8 @@ static int convert_to_symlink(const char
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -168,7 +174,7 @@ since we don't support hard links.
|
|
|
|
|
{
|
|
|
|
|
if (!fileName) {
|
|
|
|
|
SetLastError(ERROR_PATH_NOT_FOUND);
|
|
|
|
|
@@ -375,7 +376,9 @@ bool SetFileAttrib(CFSTR fileName, DWORD
|
|
|
|
|
@@ -379,7 +380,9 @@ bool SetFileAttrib(CFSTR fileName, DWORD
|
|
|
|
|
stat_info.st_mode = fileAttributes >> 16;
|
|
|
|
|
#ifdef ENV_HAVE_LSTAT
|
|
|
|
|
if (S_ISLNK(stat_info.st_mode)) {
|
|
|
|
@ -179,7 +185,7 @@ since we don't support hard links.
|
|
|
|
|
TRACEN((printf("SetFileAttrib(%s,%d) : false-3\n",(const char *)name,fileAttributes)))
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
@@ -885,6 +888,43 @@ bool CTempDir::Remove()
|
|
|
|
|
@@ -814,6 +817,43 @@ bool CTempDir::Remove()
|
|
|
|
|
return !_mustBeDeleted;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -222,9 +228,10 @@ since we don't support hard links.
|
|
|
|
|
+
|
|
|
|
|
}}}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--- a/CPP/Windows/FileDir.h
|
|
|
|
|
+++ b/CPP/Windows/FileDir.h
|
|
|
|
|
#ifndef _SFX
|
|
|
|
|
diff -rup p7zip_15.09.orig/CPP/Windows/FileDir.h p7zip_15.09/CPP/Windows/FileDir.h
|
|
|
|
|
--- p7zip_15.09.orig/CPP/Windows/FileDir.h 2015-06-19 11:52:06.000000000 +0100
|
|
|
|
|
+++ p7zip_15.09/CPP/Windows/FileDir.h 2015-12-03 02:22:47.075724215 +0000
|
|
|
|
|
@@ -4,6 +4,7 @@
|
|
|
|
|
#define __WINDOWS_FILE_DIR_H
|
|
|
|
|
|
|
|
|
@ -249,7 +256,7 @@ since we don't support hard links.
|
|
|
|
|
bool MyMoveFile(CFSTR existFileName, CFSTR newFileName);
|
|
|
|
|
|
|
|
|
|
#ifndef UNDER_CE
|
|
|
|
|
@@ -69,6 +73,31 @@ public:
|
|
|
|
|
@@ -76,6 +80,31 @@ public:
|
|
|
|
|
bool Remove();
|
|
|
|
|
};
|
|
|
|
|
|