https://git.reactos.org/?p=reactos.git;a=commitdiff;h=7e3a7a0e84bb8cdff4ad32...
commit 7e3a7a0e84bb8cdff4ad32cbd1a26d026ae2db1f Author: Stanislav Motylkov x86corez@gmail.com AuthorDate: Wed Oct 6 01:04:50 2021 +0300 Commit: Stanislav Motylkov x86corez@gmail.com CommitDate: Thu Oct 7 14:54:47 2021 +0300
[ZIPFLDR] Show error when compression method is not supported
CORE-17255 --- dll/shellext/zipfldr/CZipExtract.cpp | 23 ++++++++++++++++++++--- dll/shellext/zipfldr/lang/de-DE.rc | 1 + dll/shellext/zipfldr/lang/en-US.rc | 1 + dll/shellext/zipfldr/lang/et-EE.rc | 1 + dll/shellext/zipfldr/lang/fr-FR.rc | 1 + dll/shellext/zipfldr/lang/hi-IN.rc | 1 + dll/shellext/zipfldr/lang/it-IT.rc | 1 + dll/shellext/zipfldr/lang/ja-JP.rc | 1 + dll/shellext/zipfldr/lang/pl-PL.rc | 1 + dll/shellext/zipfldr/lang/pt-PT.rc | 1 + dll/shellext/zipfldr/lang/ro-RO.rc | 1 + dll/shellext/zipfldr/lang/ru-RU.rc | 1 + dll/shellext/zipfldr/lang/sv-SE.rc | 1 + dll/shellext/zipfldr/lang/zh-CN.rc | 1 + dll/shellext/zipfldr/lang/zh-TW.rc | 1 + dll/shellext/zipfldr/resource.h | 3 ++- 16 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/dll/shellext/zipfldr/CZipExtract.cpp b/dll/shellext/zipfldr/CZipExtract.cpp index 47be6caa5df..8f9381e9f83 100644 --- a/dll/shellext/zipfldr/CZipExtract.cpp +++ b/dll/shellext/zipfldr/CZipExtract.cpp @@ -590,7 +590,6 @@ public: break;
case eExtractAbort: - case eOpenError: case eUnpackError: { Close(); @@ -627,6 +626,20 @@ public: } break; } + + case eOpenError: + { + if (err == UNZ_BADZIPFILE && + Info.compression_method != 0 && + Info.compression_method != Z_DEFLATED && + Info.compression_method != Z_BZIP2ED) + { + if (ShowExtractError(hDlg, FullPath, Info.compression_method, eOpenError) == IDYES) + break; + } + Close(); + return false; + } } if (Result == eNoError && is_dir) continue; @@ -643,7 +656,7 @@ public: CStringA strErr, strText; PSTR Win32ErrorString;
- if (ErrorType == eFileError) + if (ErrorType == eFileError || ErrorType == eOpenError) strText.LoadString(IDS_CANTEXTRACTFILE); else strText.LoadString(GetModuleHandleA("shell32.dll"), 128); // IDS_CREATEFOLDER_DENIED @@ -660,7 +673,9 @@ public: LocalFree(Win32ErrorString); } } - if (strErr.GetLength() == 0) + if (ErrorType == eOpenError) + strErr.Format(IDS_DECOMPRESSERROR, Error); + else if (strErr.GetLength() == 0) strErr.Format(IDS_UNKNOWNERROR, Error);
strText.Append("\r\n\r\n" + strErr); @@ -670,6 +685,8 @@ public: mbFlags |= MB_RETRYCANCEL; else if (ErrorType == eFileError) mbFlags |= MB_ABORTRETRYIGNORE; + else if (ErrorType == eOpenError) + mbFlags |= MB_YESNO;
return MessageBoxA(hDlg, strText, strTitle, mbFlags); } diff --git a/dll/shellext/zipfldr/lang/de-DE.rc b/dll/shellext/zipfldr/lang/de-DE.rc index 19bb69ad39b..50f7cc681f7 100644 --- a/dll/shellext/zipfldr/lang/de-DE.rc +++ b/dll/shellext/zipfldr/lang/de-DE.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "Datei '%s' konnte nicht gelesen werden." IDS_EXTRACTING "Extrahieren..." IDS_CANTEXTRACTFILE "Datei '%1' konnte nicht extrahiert werden." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unbekannter Fehler 0x%08x."
IDS_WIZ_TITLE "Extrahier-Assistent" diff --git a/dll/shellext/zipfldr/lang/en-US.rc b/dll/shellext/zipfldr/lang/en-US.rc index e885f59a3f3..85286aa3a66 100644 --- a/dll/shellext/zipfldr/lang/en-US.rc +++ b/dll/shellext/zipfldr/lang/en-US.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "Cannot read file '%s'." IDS_EXTRACTING "Extracting..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Extraction Wizard" diff --git a/dll/shellext/zipfldr/lang/et-EE.rc b/dll/shellext/zipfldr/lang/et-EE.rc index 61bd7947e67..b36d05b7f71 100644 --- a/dll/shellext/zipfldr/lang/et-EE.rc +++ b/dll/shellext/zipfldr/lang/et-EE.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "Cannot read file '%s'." IDS_EXTRACTING "Ekstraktimine..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Ekstraktimise visard" diff --git a/dll/shellext/zipfldr/lang/fr-FR.rc b/dll/shellext/zipfldr/lang/fr-FR.rc index 217dca2d08b..9b47d0c7147 100644 --- a/dll/shellext/zipfldr/lang/fr-FR.rc +++ b/dll/shellext/zipfldr/lang/fr-FR.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "Cannot read file '%s'." IDS_EXTRACTING "Extraction..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Assistant d'extraction" diff --git a/dll/shellext/zipfldr/lang/hi-IN.rc b/dll/shellext/zipfldr/lang/hi-IN.rc index 9b972305b39..1c7f17c7e69 100644 --- a/dll/shellext/zipfldr/lang/hi-IN.rc +++ b/dll/shellext/zipfldr/lang/hi-IN.rc @@ -64,6 +64,7 @@ BEGIN IDS_CANTREADFILE "Cannot read file '%s'." IDS_EXTRACTING "Extracting..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "निष्कर्षण विज़ार्ड" diff --git a/dll/shellext/zipfldr/lang/it-IT.rc b/dll/shellext/zipfldr/lang/it-IT.rc index 6b75ce72126..a3ebbf1b386 100644 --- a/dll/shellext/zipfldr/lang/it-IT.rc +++ b/dll/shellext/zipfldr/lang/it-IT.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "Cannot read file '%s'." IDS_EXTRACTING "Estrazione..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Estrazione Guidata" diff --git a/dll/shellext/zipfldr/lang/ja-JP.rc b/dll/shellext/zipfldr/lang/ja-JP.rc index 8132f95d611..072a4937160 100644 --- a/dll/shellext/zipfldr/lang/ja-JP.rc +++ b/dll/shellext/zipfldr/lang/ja-JP.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "ファイル '%s' が読めません。" IDS_EXTRACTING "展開中..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "展開ウィザード" diff --git a/dll/shellext/zipfldr/lang/pl-PL.rc b/dll/shellext/zipfldr/lang/pl-PL.rc index 166312bb90a..a9ef3c0a94a 100644 --- a/dll/shellext/zipfldr/lang/pl-PL.rc +++ b/dll/shellext/zipfldr/lang/pl-PL.rc @@ -78,6 +78,7 @@ BEGIN IDS_CANTREADFILE "Błąd podczas czytania pliku '%s'." IDS_EXTRACTING "Trwa wyodrębnianie..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Kreator wyodrębniania" diff --git a/dll/shellext/zipfldr/lang/pt-PT.rc b/dll/shellext/zipfldr/lang/pt-PT.rc index 53bd82c5e7e..c43183dff83 100644 --- a/dll/shellext/zipfldr/lang/pt-PT.rc +++ b/dll/shellext/zipfldr/lang/pt-PT.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "Não é possível ler o arquivo '%s'." IDS_EXTRACTING "A extrair..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Assistente de extração" diff --git a/dll/shellext/zipfldr/lang/ro-RO.rc b/dll/shellext/zipfldr/lang/ro-RO.rc index 021bf033732..ab05fc60e1f 100644 --- a/dll/shellext/zipfldr/lang/ro-RO.rc +++ b/dll/shellext/zipfldr/lang/ro-RO.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "Cannot read file '%s'." IDS_EXTRACTING "Extragere..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Asistent de extracție" diff --git a/dll/shellext/zipfldr/lang/ru-RU.rc b/dll/shellext/zipfldr/lang/ru-RU.rc index e8b9c21b046..adfd8416be2 100644 --- a/dll/shellext/zipfldr/lang/ru-RU.rc +++ b/dll/shellext/zipfldr/lang/ru-RU.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "Не удалось прочитать файл '%s'." IDS_EXTRACTING "Извлечение..." IDS_CANTEXTRACTFILE "Не удалось извлечь файл '%1'." + IDS_DECOMPRESSERROR "Неизвестный метод компрессии %d. Продолжить?" IDS_UNKNOWNERROR "Неизвестная ошибка 0x%08x."
IDS_WIZ_TITLE "Мастер извлечения архивов" diff --git a/dll/shellext/zipfldr/lang/sv-SE.rc b/dll/shellext/zipfldr/lang/sv-SE.rc index 90d2676e9a5..e5da27b41a7 100644 --- a/dll/shellext/zipfldr/lang/sv-SE.rc +++ b/dll/shellext/zipfldr/lang/sv-SE.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "Cannot read file '%s'." IDS_EXTRACTING "Extraherar..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "Extraheringsguiden" diff --git a/dll/shellext/zipfldr/lang/zh-CN.rc b/dll/shellext/zipfldr/lang/zh-CN.rc index f899a8e218b..3cc125f21b6 100644 --- a/dll/shellext/zipfldr/lang/zh-CN.rc +++ b/dll/shellext/zipfldr/lang/zh-CN.rc @@ -77,6 +77,7 @@ BEGIN IDS_CANTREADFILE "Cannot read file '%s'." IDS_EXTRACTING "正在解压..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "解压向导" diff --git a/dll/shellext/zipfldr/lang/zh-TW.rc b/dll/shellext/zipfldr/lang/zh-TW.rc index c982d9a64c9..b2183286c27 100644 --- a/dll/shellext/zipfldr/lang/zh-TW.rc +++ b/dll/shellext/zipfldr/lang/zh-TW.rc @@ -80,6 +80,7 @@ BEGIN IDS_CANTREADFILE "無法讀取檔案 '%s'." IDS_EXTRACTING "正在解壓縮..." IDS_CANTEXTRACTFILE "Cannot extract file '%1'." + IDS_DECOMPRESSERROR "Unsupported compression method %d. Do you want to continue?" IDS_UNKNOWNERROR "Unknown error 0x%08x."
IDS_WIZ_TITLE "解壓縮精靈" diff --git a/dll/shellext/zipfldr/resource.h b/dll/shellext/zipfldr/resource.h index c7e021c63f4..7a9566e1f47 100644 --- a/dll/shellext/zipfldr/resource.h +++ b/dll/shellext/zipfldr/resource.h @@ -48,7 +48,8 @@ #define IDS_CANTREADFILE 113 #define IDS_EXTRACTING 114 #define IDS_CANTEXTRACTFILE 115 -#define IDS_UNKNOWNERROR 116 +#define IDS_DECOMPRESSERROR 116 +#define IDS_UNKNOWNERROR 117
/* Wizard titles */ #define IDS_WIZ_TITLE 8000