ArchiveExtractCallback.cpp (p7zip_15.14.1_src_all) | : | ArchiveExtractCallback.cpp (p7zip_16.02_src_all) | ||
---|---|---|---|---|
skipping to change at line 1039 | skipping to change at line 1039 | |||
if (_pathMode != NExtract::NPathMode::kAbsPaths | if (_pathMode != NExtract::NPathMode::kAbsPaths | |||
|| !NName::IsAbsolutePath(processedPath)) | || !NName::IsAbsolutePath(processedPath)) | |||
{ | { | |||
fullProcessedPath = MakePath_from_2_Parts(_dirPathPrefix, fullProcessedPa th); | fullProcessedPath = MakePath_from_2_Parts(_dirPathPrefix, fullProcessedPa th); | |||
} | } | |||
#ifdef SUPPORT_ALT_STREAMS | #ifdef SUPPORT_ALT_STREAMS | |||
if (_item.IsAltStream && _item.ParentIndex != (UInt32)(Int32)-1) | if (_item.IsAltStream && _item.ParentIndex != (UInt32)(Int32)-1) | |||
{ | { | |||
CIndexToPathPair pair(_item.ParentIndex); | int renIndex = _renamedFiles.FindInSorted(CIndexToPathPair(_item.ParentInd | |||
int renIndex = _renamedFiles.FindInSorted(pair); | ex)); | |||
if (renIndex >= 0) | if (renIndex >= 0) | |||
{ | { | |||
const CIndexToPathPair &pair = _renamedFiles[renIndex]; | const CIndexToPathPair &pair = _renamedFiles[renIndex]; | |||
fullProcessedPath = pair.Path; | fullProcessedPath = pair.Path; | |||
fullProcessedPath += (FChar)':'; | fullProcessedPath += (FChar)':'; | |||
UString s = _item.AltStreamName; | UString s = _item.AltStreamName; | |||
Correct_AltStream_Name(s); | Correct_AltStream_Name(s); | |||
fullProcessedPath += us2fs(s); | fullProcessedPath += us2fs(s); | |||
} | } | |||
} | } | |||
skipping to change at line 1311 | skipping to change at line 1310 | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
#endif | #endif | |||
if (needWriteFile) | if (needWriteFile) | |||
{ | { | |||
_outFileStreamSpec = new COutFileStream; | _outFileStreamSpec = new COutFileStream; | |||
CMyComPtr<ISequentialOutStream> outStreamLoc(_outFileStreamSpec); | CMyComPtr<ISequentialOutStream> outStreamLoc2(_outFileStreamSpec); | |||
if (!_outFileStreamSpec->Open(fullProcessedPath, _isSplit ? OPEN_ALWAY S: CREATE_ALWAYS)) | if (!_outFileStreamSpec->Open(fullProcessedPath, _isSplit ? OPEN_ALWAY S: CREATE_ALWAYS)) | |||
{ | { | |||
// if (::GetLastError() != ERROR_FILE_EXISTS || !isSplit) | // if (::GetLastError() != ERROR_FILE_EXISTS || !isSplit) | |||
{ | { | |||
RINOK(SendMessageError_with_LastError("Can not open output file", fullProcessedPath)); | RINOK(SendMessageError_with_LastError("Can not open output file", fullProcessedPath)); | |||
return S_OK; | return S_OK; | |||
} | } | |||
} | } | |||
#ifdef SUPPORT_ALT_STREAMS | #ifdef SUPPORT_ALT_STREAMS | |||
skipping to change at line 1337 | skipping to change at line 1336 | |||
if (oldSize == _renamedFiles.Size()) | if (oldSize == _renamedFiles.Size()) | |||
_renamedFiles[insertIndex].Path = fullProcessedPath; | _renamedFiles[insertIndex].Path = fullProcessedPath; | |||
} | } | |||
#endif | #endif | |||
if (_isSplit) | if (_isSplit) | |||
{ | { | |||
RINOK(_outFileStreamSpec->Seek(_position, STREAM_SEEK_SET, NULL)); | RINOK(_outFileStreamSpec->Seek(_position, STREAM_SEEK_SET, NULL)); | |||
} | } | |||
_outFileStream = outStreamLoc; | _outFileStream = outStreamLoc2; | |||
} | } | |||
} | } | |||
} | } | |||
outStreamLoc = _outFileStream; | outStreamLoc = _outFileStream; | |||
} | } | |||
} | } | |||
#ifndef _SFX | #ifndef _SFX | |||
End of changes. 3 change blocks. | ||||
4 lines changed or deleted | 4 lines changed or added |