diff options
author | Igor Pavlov <ipavlov@users.sourceforge.net> | 2021-11-29 06:03:01 +0300 |
---|---|---|
committer | fn ⌃ ⌥ <70830482+FnControlOption@users.noreply.github.com> | 2021-11-29 06:03:01 +0300 |
commit | 1194dc935382931bbfdd4e49004bd755e6165df1 (patch) | |
tree | 60354d8832278528f74c48ca3b5e446175747409 /CPP/7zip/UI/Far | |
parent | d789d4137d8a7c16696c5bc1b13f24bb887eb7ea (diff) |
21.0421.04
Diffstat (limited to 'CPP/7zip/UI/Far')
-rw-r--r-- | CPP/7zip/UI/Far/ExtractEngine.cpp | 2 | ||||
-rw-r--r-- | CPP/7zip/UI/Far/Far.dsp | 32 | ||||
-rw-r--r-- | CPP/7zip/UI/Far/Plugin.cpp | 25 | ||||
-rw-r--r-- | CPP/7zip/UI/Far/PluginDelete.cpp | 2 | ||||
-rw-r--r-- | CPP/7zip/UI/Far/PluginRead.cpp | 6 | ||||
-rw-r--r-- | CPP/7zip/UI/Far/PluginWrite.cpp | 16 | ||||
-rw-r--r-- | CPP/7zip/UI/Far/makefile | 4 |
7 files changed, 74 insertions, 13 deletions
diff --git a/CPP/7zip/UI/Far/ExtractEngine.cpp b/CPP/7zip/UI/Far/ExtractEngine.cpp index e6fe2d01..ab5c0def 100644 --- a/CPP/7zip/UI/Far/ExtractEngine.cpp +++ b/CPP/7zip/UI/Far/ExtractEngine.cpp @@ -130,6 +130,7 @@ STDMETHODIMP CExtractCallbackImp::AskOverwrite( static const char * const kTestString = "Testing"; static const char * const kExtractString = "Extracting"; static const char * const kSkipString = "Skipping"; +static const char * const kReadString = "Reading"; STDMETHODIMP CExtractCallbackImp::PrepareOperation(const wchar_t *name, Int32 /* isFolder */, Int32 askExtractMode, const UInt64 * /* position */) { @@ -143,6 +144,7 @@ STDMETHODIMP CExtractCallbackImp::PrepareOperation(const wchar_t *name, Int32 /* case NArchive::NExtract::NAskMode::kExtract: s = kExtractString; break; case NArchive::NExtract::NAskMode::kTest: s = kTestString; break; case NArchive::NExtract::NAskMode::kSkip: s = kSkipString; break; + case NArchive::NExtract::NAskMode::kReadExternal: s = kReadString; break; default: s = "???"; // return E_FAIL; }; diff --git a/CPP/7zip/UI/Far/Far.dsp b/CPP/7zip/UI/Far/Far.dsp index b32ae6fa..bd6d8fd4 100644 --- a/CPP/7zip/UI/Far/Far.dsp +++ b/CPP/7zip/UI/Far/Far.dsp @@ -118,6 +118,14 @@ SOURCE=..\..\..\Common\CRC.cpp # End Source File # Begin Source File +SOURCE=..\..\..\Common\DynLimBuf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\Common\DynLimBuf.h +# End Source File +# Begin Source File + SOURCE=..\..\..\Common\IntToString.cpp # End Source File # Begin Source File @@ -430,6 +438,14 @@ SOURCE=..\Common\HandlerLoader.h # End Source File # Begin Source File +SOURCE=..\Common\HashCalc.cpp +# End Source File +# Begin Source File + +SOURCE=..\Common\HashCalc.h +# End Source File +# Begin Source File + SOURCE=..\Common\LoadCodecs.cpp # End Source File # Begin Source File @@ -622,6 +638,14 @@ SOURCE=..\..\Common\LimitedStreams.h # End Source File # Begin Source File +SOURCE=..\..\Common\MethodProps.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\Common\MethodProps.h +# End Source File +# Begin Source File + SOURCE=..\..\Common\ProgressUtils.cpp # End Source File # Begin Source File @@ -712,6 +736,14 @@ SOURCE=..\..\..\..\C\Threads.h # PROP Default_Filter "" # Begin Source File +SOURCE=..\..\Archive\Common\ItemNameUtils.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\Archive\Common\ItemNameUtils.h +# End Source File +# Begin Source File + SOURCE=..\..\Archive\Common\OutStreamWithCRC.cpp # End Source File # Begin Source File diff --git a/CPP/7zip/UI/Far/Plugin.cpp b/CPP/7zip/UI/Far/Plugin.cpp index 92b62369..8dc1375a 100644 --- a/CPP/7zip/UI/Far/Plugin.cpp +++ b/CPP/7zip/UI/Far/Plugin.cpp @@ -686,9 +686,14 @@ struct CArchiveItemProperty VARTYPE Type; }; -static inline char GetHex(Byte value) +static inline char GetHex_Upper(unsigned v) { - return (char)((value < 10) ? ('0' + value) : ('A' + (value - 10))); + return (char)((v < 10) ? ('0' + v) : ('A' + (v - 10))); +} + +static inline char GetHex_Lower(unsigned v) +{ + return (char)((v < 10) ? ('0' + v) : ('a' + (v - 10))); } HRESULT CPlugin::ShowAttributesWindow() @@ -810,11 +815,21 @@ HRESULT CPlugin::ShowAttributesWindow() } else { + const bool needUpper = (dataSize <= 8) + && (property.ID == kpidCRC || property.ID == kpidChecksum); for (UInt32 k = 0; k < dataSize; k++) { - Byte b = ((const Byte *)data)[k]; - s += GetHex((Byte)((b >> 4) & 0xF)); - s += GetHex((Byte)(b & 0xF)); + unsigned b = ((const Byte *)data)[k]; + if (needUpper) + { + s += GetHex_Upper((b >> 4) & 0xF); + s += GetHex_Upper(b & 0xF); + } + else + { + s += GetHex_Lower((b >> 4) & 0xF); + s += GetHex_Lower(b & 0xF); + } } } } diff --git a/CPP/7zip/UI/Far/PluginDelete.cpp b/CPP/7zip/UI/Far/PluginDelete.cpp index 0d19c6e7..939a3558 100644 --- a/CPP/7zip/UI/Far/PluginDelete.cpp +++ b/CPP/7zip/UI/Far/PluginDelete.cpp @@ -17,7 +17,7 @@ int CPlugin::DeleteFiles(PluginPanelItem *panelItems, int numItems, int opMode) { if (numItems == 0) return FALSE; - if (_agent->IsThereReadOnlyArc()) + if (_agent->IsThere_ReadOnlyArc()) { g_StartupInfo.ShowMessage(NMessageID::kUpdateNotSupportedForThisArchive); return FALSE; diff --git a/CPP/7zip/UI/Far/PluginRead.cpp b/CPP/7zip/UI/Far/PluginRead.cpp index 9df4a09f..70e7e141 100644 --- a/CPP/7zip/UI/Far/PluginRead.cpp +++ b/CPP/7zip/UI/Far/PluginRead.cpp @@ -37,6 +37,12 @@ HRESULT CPlugin::ExtractFiles( const UString &destPath, bool passwordIsDefined, const UString &password) { + if (_agent->_isHashHandler) + { + g_StartupInfo.ShowMessage(NMessageID::kMoveIsNotSupported); + return NFileOperationReturnCode::kError; + } + CScreenRestorer screenRestorer; CProgressBox progressBox; CProgressBox *progressBoxPointer = NULL; diff --git a/CPP/7zip/UI/Far/PluginWrite.cpp b/CPP/7zip/UI/Far/PluginWrite.cpp index bf1d13df..8a76bb4e 100644 --- a/CPP/7zip/UI/Far/PluginWrite.cpp +++ b/CPP/7zip/UI/Far/PluginWrite.cpp @@ -81,18 +81,17 @@ NFileOperationReturnCode::EEnum CPlugin::PutFiles( struct PluginPanelItem *panelItems, int numItems, int moveMode, int opMode) { - /* - if (moveMode != 0) + if (moveMode != 0 + && _agent->_isHashHandler) { g_StartupInfo.ShowMessage(NMessageID::kMoveIsNotSupported); return NFileOperationReturnCode::kError; } - */ if (numItems <= 0) return NFileOperationReturnCode::kError; - if (_agent->IsThereReadOnlyArc()) + if (_agent->IsThere_ReadOnlyArc()) { g_StartupInfo.ShowMessage(NMessageID::kUpdateNotSupportedForThisArchive); return NFileOperationReturnCode::kError; @@ -231,8 +230,11 @@ NFileOperationReturnCode::EEnum CPlugin::PutFiles( updateCallbackSpec->PasswordIsDefined = PasswordIsDefined; updateCallbackSpec->Password = Password; - if (SetOutProperties(outArchive, compressionInfo.Level) != S_OK) - return NFileOperationReturnCode::kError; + if (!_agent->_isHashHandler) + { + if (SetOutProperties(outArchive, compressionInfo.Level) != S_OK) + return NFileOperationReturnCode::kError; + } /* outArchive->SetFolder(_folder); @@ -726,7 +728,7 @@ static const char * const k_CreateFolder_History = "NewFolder"; // we use defaul HRESULT CPlugin::CreateFolder() { - if (_agent->IsThereReadOnlyArc()) + if (_agent->IsThere_ReadOnlyArc()) { g_StartupInfo.ShowMessage(NMessageID::kUpdateNotSupportedForThisArchive); return TRUE; diff --git a/CPP/7zip/UI/Far/makefile b/CPP/7zip/UI/Far/makefile index 14be13d6..0db22749 100644 --- a/CPP/7zip/UI/Far/makefile +++ b/CPP/7zip/UI/Far/makefile @@ -22,6 +22,7 @@ CURRENT_OBJS = \ $O\UpdateCallbackFar.obj \ COMMON_OBJS = \ + $O\DynLimBuf.obj \ $O\IntToString.obj \ $O\NewHandler.obj \ $O\MyString.obj \ @@ -52,6 +53,7 @@ WIN_OBJS = \ $O\FileStreams.obj \ $O\FilterCoder.obj \ $O\LimitedStreams.obj \ + $O\MethodProps.obj \ $O\ProgressUtils.obj \ $O\PropId.obj \ $O\StreamObjects.obj \ @@ -64,6 +66,7 @@ UI_COMMON_OBJS = \ $O\DefaultName.obj \ $O\EnumDirItems.obj \ $O\ExtractingFilePath.obj \ + $O\HashCalc.obj \ $O\LoadCodecs.obj \ $O\OpenArchive.obj \ $O\PropIDUtils.obj \ @@ -77,6 +80,7 @@ UI_COMMON_OBJS = \ $O\ZipRegistry.obj \ AR_COMMON_OBJS = \ + $O\ItemNameUtils.obj \ $O\OutStreamWithCRC.obj \ AGENT_OBJS = \ |