-/*/Merge7z453.cpp\r
-\r
-Copyright (c) Jochen Neubeck\r
-\r
-This library is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU Lesser General Public\r
-License as published by the Free Software Foundation; either\r
-version 2.1 of the License, or (at your option) any later version.\r
-\r
-This library is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-Lesser General Public License for more details.\r
-\r
-You should have received a copy of the GNU Lesser General Public\r
-License along with this library; if not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\r
-\r
-Please mind 2. b) of the GNU LGPL terms, and log your changes below.\r
-\r
-DATE: BY: DESCRIPTION:\r
-========== ================== ================================================\r
-2007-08-30 Jochen Neubeck Branched from Merge7z409.cpp\r
-*/\r
-\r
-#include "stdafx.h"\r
-\r
-#define INITGUID\r
-#include <initguid.h>\r
-\r
-#include "Merge7zCommon.h"\r
-\r
-#include "7zip/UI/FileManager/OpenCallback.h"\r
-#include "7zip/UI/FileManager/ExtractCallback.h"\r
-\r
-#include "7zip/UI/Common/ArchiveExtractCallback.h"\r
-#include "7zip/UI/GUI/UpdateCallbackGUI.h"\r
-\r
-#include "Windows/Thread.h"\r
-\r
-/**\r
- * @brief Extraction thread\r
- */\r
-class CThreadExtracting : CThread\r
-{\r
-protected:\r
- THREAD_FUNC_RET_TYPE Process()\r
- {\r
- ExtractCallbackSpec->ProgressDialog.WaitCreating();\r
- result = Archive->Extract(indices, numItems, false, ArchiveExtractCallback);\r
- ExtractCallbackSpec->ProgressDialog.MyClose();\r
- return 0;\r
- }\r
- static THREAD_FUNC_RET_TYPE WINAPI Process(void *param)\r
- {\r
- return ((CThreadExtracting *)param)->Process();\r
- }\r
- CExtractCallbackImp *ExtractCallbackSpec;\r
- IInArchive *Archive;\r
- IArchiveExtractCallback *ArchiveExtractCallback;\r
- const UINT32 *indices;\r
- UINT32 numItems;\r
-public:\r
- HRESULT result;\r
-\r
- CThreadExtracting\r
- (\r
- CExtractCallbackImp *ExtractCallbackSpec,\r
- IInArchive *Archive,\r
- IArchiveExtractCallback *ArchiveExtractCallback,\r
- const CSysString &title,\r
- const UINT32 *indices = 0,\r
- UINT32 numItems = -1\r
- ):\r
- ExtractCallbackSpec(ExtractCallbackSpec),\r
- Archive(Archive),\r
- ArchiveExtractCallback(ArchiveExtractCallback),\r
- indices(indices),\r
- numItems(numItems)\r
- {\r
- result = E_FAIL;\r
- if (HRESULT hr = Create(Process, this))\r
- {\r
- Complain(hr, NULL);\r
- }\r
- ExtractCallbackSpec->StartProgressDialog(GetUnicodeString(title));\r
- }\r
-};\r
-\r
-/**\r
- * @brief Initialize Inspector\r
- */\r
-Format7zDLL::Interface::Inspector::Inspector(Format7zDLL::Interface *format, LPCTSTR path)\r
-: format(format), archive(0), file(0), callback(0), path(path), ustrDefaultName(GetUnicodeString(path))\r
-{\r
-}\r
-\r
-/**\r
- * @brief Initialize Inspector\r
- */\r
-void Format7zDLL::Interface::Inspector::Init(HWND hwndParent)\r
-{\r
- format->GetDefaultName(hwndParent, ustrDefaultName);\r
- COpenArchiveCallback *callbackImpl = new COpenArchiveCallback;\r
- //COpenCallbackImp *callbackImpl = new COpenCallbackImp;\r
- (archive = format->GetInArchive()) -> AddRef();\r
- (file = new CInFileStream) -> AddRef();\r
- (callback = callbackImpl) -> AddRef();\r
- callbackImpl->PasswordIsDefined = false;\r
- callbackImpl->ParentWindow = hwndParent;\r
- /*CMyComBSTR password;\r
- callback->CryptoGetTextPassword(&password);*/\r
- if COMPLAIN(!NFile::NFind::FindFile(path, fileInfo))\r
- {\r
- Complain(ERROR_FILE_NOT_FOUND, path);\r
- }\r
- if COMPLAIN(!file->Open(path))\r
- {\r
- Complain(ERROR_OPEN_FAILED, path);\r
- }\r
- if COMPLAIN(archive->Open(file, 0, callback) != S_OK)\r
- {\r
- Complain(ERROR_CANT_ACCESS_FILE, path);\r
- }\r
- passwordIsDefined = callbackImpl->PasswordIsDefined;\r
- password = callbackImpl->Password;\r
-}\r
-\r
-/**\r
- * @brief Extract set of items specified by index\r
- */\r
-HRESULT Format7zDLL::Interface::Inspector::Extract(HWND hwndParent, LPCTSTR folder, const UINT32 *indices, UINT32 numItems)\r
-{\r
- CArchiveExtractCallback *extractCallbackSpec = 0;\r
- CExtractCallbackImp *extractCallbackSpec2 = 0;\r
- HRESULT result = 0;\r
- try\r
- {\r
- if (*folder)\r
- {\r
- if COMPLAIN(!NFile::NDirectory::CreateComplexDirectory(folder))\r
- {\r
- Complain(ERROR_CANNOT_MAKE, folder);\r
- }\r
- }\r
-\r
- (extractCallbackSpec2 = new CExtractCallbackImp) -> AddRef();\r
-\r
- extractCallbackSpec2->Init();\r
-\r
- extractCallbackSpec2->ParentWindow = hwndParent;\r
- extractCallbackSpec2->OverwriteMode = NExtract::NOverwriteMode::kWithoutPrompt;\r
- extractCallbackSpec2->PasswordIsDefined = passwordIsDefined;\r
- extractCallbackSpec2->Password = password;\r
-\r
- extractCallbackSpec2->ProgressDialog.MainWindow = 0;\r
- (extractCallbackSpec = new CArchiveExtractCallback) -> AddRef();\r
-\r
- extractCallbackSpec->InitForMulti\r
- (\r
- false,\r
- NExtract::NPathMode::kFullPathnames,\r
- NExtract::NOverwriteMode::kWithoutPrompt\r
- );\r
- extractCallbackSpec->Init\r
- (\r
- archive, \r
- extractCallbackSpec2,\r
- false, //stdOutMode\r
- GetUnicodeString(folder),\r
- UStringVector(),\r
- ustrDefaultName,\r
- fileInfo.LastWriteTime,\r
- fileInfo.Attributes,\r
- (UInt64)(Int64)-1\r
- );\r
-\r
- result = CThreadExtracting\r
- (\r
- extractCallbackSpec2,\r
- archive,\r
- extractCallbackSpec,\r
- PathFindFileName(path),\r
- indices,\r
- numItems\r
- ).result;\r
-\r
- if COMPLAIN(extractCallbackSpec->_numErrors)\r
- {\r
- // There is no canned system message for this one, so it won't\r
- // localize. I can't help it.\r
- Complain(_T("%s:\n%I64u error(s)"), path, extractCallbackSpec->_numErrors);\r
- }\r
- if COMPLAIN(result != S_OK && result != E_ABORT)\r
- {\r
- Complain(result, path);\r
- }\r
- }\r
- catch (Complain *complain)\r
- {\r
- result = complain->Alert(hwndParent);\r
- }\r
- Release(static_cast<IArchiveExtractCallback*>(extractCallbackSpec));\r
- Release(static_cast<IFolderArchiveExtractCallback*>(extractCallbackSpec2));\r
- return result;\r
-}\r
-\r
-/**\r
- * @brief Compression thread\r
- */\r
-class CThreadUpdateCompress : CThread\r
-{\r
-protected:\r
- THREAD_FUNC_RET_TYPE Process()\r
- {\r
- updateCallbackGUI->ProgressDialog.WaitCreating();\r
- result = outArchive->UpdateItems(file, numItems, updateCallbackSpec);\r
- updateCallbackGUI->ProgressDialog.MyClose();\r
- return 0;\r
- }\r
- static THREAD_FUNC_RET_TYPE WINAPI Process(void *param)\r
- {\r
- return ((CThreadUpdateCompress *)param)->Process();\r
- }\r
- CUpdateCallbackGUI *updateCallbackGUI;\r
- IOutArchive *outArchive;\r
- CArchiveUpdateCallback *updateCallbackSpec;\r
- COutFileStream *file;\r
-public:\r
- HRESULT result;\r
- UINT32 numItems;\r
- CThreadUpdateCompress\r
- (\r
- CUpdateCallbackGUI *updateCallbackGUI,\r
- IOutArchive *outArchive,\r
- CArchiveUpdateCallback *updateCallbackSpec,\r
- UINT32 numItems,\r
- COutFileStream *file,\r
- const CSysString &title\r
- ):\r
- updateCallbackGUI(updateCallbackGUI),\r
- outArchive(outArchive),\r
- updateCallbackSpec(updateCallbackSpec),\r
- numItems(numItems),\r
- file(file)\r
- {\r
- result = E_FAIL;\r
- if (HRESULT hr = Create(Process, this))\r
- {\r
- Complain(hr, NULL);\r
- }\r
- updateCallbackGUI->StartProgressDialog(GetUnicodeString(title));\r
- }\r
-};\r
-\r
-/**\r
- * @brief Construct Updater\r
- */\r
-Format7zDLL::Interface::Updater::Updater(Format7zDLL::Interface *format, LPCTSTR path)\r
-: format(format), outArchive(0), file(0), path(path)\r
-{\r
-}\r
-\r
-/**\r
- * @brief Initialize Updater\r
- */\r
-void Format7zDLL::Interface::Updater::Init(HWND hwndParent)\r
-{\r
- (outArchive = format->GetOutArchive()) -> AddRef();\r
- (file = new COutFileStream) -> AddRef();\r
- if COMPLAIN(!file->Create(path, true))\r
- {\r
- Complain(ERROR_CANNOT_MAKE, path);\r
- }\r
-}\r
-\r
-/**\r
- * @brief Commit update\r
- */\r
-HRESULT Format7zDLL::Interface::Updater::Commit(HWND hwndParent)\r
-{\r
- CArchiveUpdateCallback *updateCallbackSpec = 0;\r
- CUpdateCallbackGUI *updateCallbackGUI = 0;\r
- HRESULT result = 0;\r
- try\r
- {\r
- // Ref counts are not always accurate with 7-Zip.\r
- // An extra AddRef() ensures that interfaces remain valid until they\r
- // are explicitly released at the end of this function.\r
- (updateCallbackSpec = new CArchiveUpdateCallback) -> AddRef();\r
- (updateCallbackGUI = new CUpdateCallbackGUI);// -> AddRef();\r
-\r
- // No items in dest archive. We always recreate the dest archive\r
- // Build the operationChain. One element per item\r
- CObjectVector<CUpdatePair2> operationChain;\r
- CUpdatePair2 pair2;\r
- pair2.IsAnti = false;\r
- pair2.ExistInArchive = false;\r
- pair2.ExistOnDisk = true;\r
- pair2.NewData = pair2.NewProperties = true;\r
-\r
- operationChain.Reserve(dirItems.Size());\r
- int i;\r
- for (i = 0 ; i < dirItems.Size() ; i++)\r
- {\r
- pair2.DirItemIndex = i;\r
- operationChain.Add(pair2);\r
- }\r
-\r
- /* The following code may or may not help implement update on existing\r
- /* archives, which is currently not supported.\r
- UINT32 fileTimeType;\r
- outArchive->GetFileTimeType(&fileTimeType);\r
-\r
- CObjectVector<CUpdatePair> updatePairs;\r
- GetUpdatePairInfoList(dirItems, archiveItems, NFileTimeType::EEnum(fileTimeType), updatePairs); // must be done only once!!!\r
- \r
- CObjectVector<CUpdatePair2> operationChain;\r
- UpdateProduce(dirItems, archiveItems, updatePairs, NUpdateArchive::kAddActionSet, operationChain);*/\r
-\r
- // Now compress...\r
- updateCallbackSpec->DirItems = &dirItems;\r
- updateCallbackSpec->ArchiveItems = &archiveItems;\r
- updateCallbackSpec->UpdatePairs = &operationChain;\r
- updateCallbackSpec->Callback = updateCallbackGUI;\r
-\r
- result = CThreadUpdateCompress\r
- (\r
- updateCallbackGUI,\r
- outArchive,\r
- updateCallbackSpec,\r
- operationChain.Size(),\r
- file,\r
- PathFindFileName(path)\r
- ).result;\r
-\r
- //result = outArchive->UpdateItems(file, operationChain.Size(), updateCallbackSpec);\r
- if COMPLAIN(result != S_OK && result != E_ABORT)\r
- {\r
- Complain(result, path);\r
- }\r
- }\r
- catch (Complain *complain)\r
- {\r
- result = complain->Alert(hwndParent);\r
- }\r
- // Always release interfaces in this order, or else all hell will break\r
- // loose!\r
- Release(static_cast<IArchiveUpdateCallback*>(updateCallbackSpec));\r
- delete updateCallbackGUI;\r
- return result;\r
-}\r
+/*/Merge7z453.cpp
+
+Copyright (c) Jochen Neubeck
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Please mind 2. b) of the GNU LGPL terms, and log your changes below.
+
+DATE: BY: DESCRIPTION:
+========== ================== ================================================
+2007-08-30 Jochen Neubeck Branched from Merge7z409.cpp
+*/
+
+#include "stdafx.h"
+
+#define INITGUID
+#include <initguid.h>
+
- #include "Merge7zCommon.h"
++#include "Merge7zCommon453.h"
+
+#include "7zip/UI/FileManager/OpenCallback.h"
+#include "7zip/UI/FileManager/ExtractCallback.h"
+
+#include "7zip/UI/Common/ArchiveExtractCallback.h"
+#include "7zip/UI/GUI/UpdateCallbackGUI.h"
+
+#include "Windows/Thread.h"
+
+/**
+ * @brief Extraction thread
+ */
+class CThreadExtracting : NWindows::CThread
+{
+protected:
+ THREAD_FUNC_RET_TYPE Process()
+ {
+ ExtractCallbackSpec->ProgressDialog.WaitCreating();
+ result = Archive->Extract(indices, numItems, false, ArchiveExtractCallback);
+ ExtractCallbackSpec->ProgressDialog.MyClose();
+ return 0;
+ }
+ static THREAD_FUNC_RET_TYPE WINAPI Process(void *param)
+ {
+ return ((CThreadExtracting *)param)->Process();
+ }
+ CExtractCallbackImp *ExtractCallbackSpec;
+ IInArchive *Archive;
+ IArchiveExtractCallback *ArchiveExtractCallback;
+ const UINT32 *indices;
+ UINT32 numItems;
+public:
+ HRESULT result;
+
+ CThreadExtracting
+ (
+ CExtractCallbackImp *ExtractCallbackSpec,
+ IInArchive *Archive,
+ IArchiveExtractCallback *ArchiveExtractCallback,
+ const CSysString &title,
+ const UINT32 *indices = 0,
+ UINT32 numItems = -1
+ ):
+ ExtractCallbackSpec(ExtractCallbackSpec),
+ Archive(Archive),
+ ArchiveExtractCallback(ArchiveExtractCallback),
+ indices(indices),
+ numItems(numItems)
+ {
+ result = E_FAIL;
+ if (HRESULT hr = Create(Process, this))
+ {
+ Complain(hr, NULL);
+ }
+ ExtractCallbackSpec->StartProgressDialog(GetUnicodeString(title));
+ }
+};
+
+/**
+ * @brief Initialize Inspector
+ */
+Format7zDLL::Interface::Inspector::Inspector(Format7zDLL::Interface *format, LPCTSTR path)
+: format(format), archive(0), file(0), callback(0), path(path), ustrDefaultName(GetUnicodeString(path))
+{
+}
+
+/**
+ * @brief Initialize Inspector
+ */
+void Format7zDLL::Interface::Inspector::Init(HWND hwndParent)
+{
+ format->GetDefaultName(hwndParent, ustrDefaultName);
+ COpenArchiveCallback *callbackImpl = new COpenArchiveCallback;
+ //COpenCallbackImp *callbackImpl = new COpenCallbackImp;
+ (archive = format->GetInArchive()) -> AddRef();
+ (file = new CInFileStream) -> AddRef();
+ (callback = callbackImpl) -> AddRef();
+ callbackImpl->PasswordIsDefined = false;
+ callbackImpl->ParentWindow = hwndParent;
+ /*CMyComBSTR password;
+ callback->CryptoGetTextPassword(&password);*/
+ if COMPLAIN(!NFile::NFind::FindFile(path, fileInfo))
+ {
+ Complain(ERROR_FILE_NOT_FOUND, path);
+ }
+ if COMPLAIN(!file->Open(path))
+ {
+ Complain(ERROR_OPEN_FAILED, path);
+ }
+ if COMPLAIN(archive->Open(file, 0, callback) != S_OK)
+ {
+ Complain(ERROR_CANT_ACCESS_FILE, path);
+ }
+ passwordIsDefined = callbackImpl->PasswordIsDefined;
+ password = callbackImpl->Password;
+}
+
+/**
+ * @brief Extract set of items specified by index
+ */
+HRESULT Format7zDLL::Interface::Inspector::Extract(HWND hwndParent, LPCTSTR folder, const UINT32 *indices, UINT32 numItems)
+{
+ CArchiveExtractCallback *extractCallbackSpec = 0;
+ CExtractCallbackImp *extractCallbackSpec2 = 0;
+ HRESULT result = 0;
+ try
+ {
+ if (*folder)
+ {
+ if COMPLAIN(!NFile::NDirectory::CreateComplexDirectory(folder))
+ {
+ Complain(ERROR_CANNOT_MAKE, folder);
+ }
+ }
+
+ (extractCallbackSpec2 = new CExtractCallbackImp) -> AddRef();
+
+ extractCallbackSpec2->Init();
+
+ extractCallbackSpec2->ParentWindow = hwndParent;
+ extractCallbackSpec2->OverwriteMode = NExtract::NOverwriteMode::kWithoutPrompt;
+ extractCallbackSpec2->PasswordIsDefined = passwordIsDefined;
+ extractCallbackSpec2->Password = password;
+
+ extractCallbackSpec2->ProgressDialog.MainWindow = 0;
+ (extractCallbackSpec = new CArchiveExtractCallback) -> AddRef();
+
+ extractCallbackSpec->InitForMulti
+ (
+ false,
+ NExtract::NPathMode::kFullPathnames,
+ NExtract::NOverwriteMode::kWithoutPrompt
+ );
+ extractCallbackSpec->Init
+ (
+ archive,
+ extractCallbackSpec2,
+ false, //stdOutMode
+ GetUnicodeString(folder),
+ UStringVector(),
+ ustrDefaultName,
+ fileInfo.LastWriteTime,
+ fileInfo.Attributes,
+ (UInt64)(Int64)-1
+ );
+
+ result = CThreadExtracting
+ (
+ extractCallbackSpec2,
+ archive,
+ extractCallbackSpec,
+ PathFindFileName(path),
+ indices,
+ numItems
+ ).result;
+
+ if COMPLAIN(extractCallbackSpec->_numErrors)
+ {
+ // There is no canned system message for this one, so it won't
+ // localize. I can't help it.
+ Complain(_T("%s:\n%I64u error(s)"), path, extractCallbackSpec->_numErrors);
+ }
+ if COMPLAIN(result != S_OK && result != E_ABORT)
+ {
+ Complain(result, path);
+ }
+ }
+ catch (Complain *complain)
+ {
+ result = complain->Alert(hwndParent);
+ }
+ Release(static_cast<IArchiveExtractCallback*>(extractCallbackSpec));
+ Release(static_cast<IFolderArchiveExtractCallback*>(extractCallbackSpec2));
+ return result;
+}
+
+/**
+ * @brief Compression thread
+ */
+class CThreadUpdateCompress : NWindows::CThread
+{
+protected:
+ THREAD_FUNC_RET_TYPE Process()
+ {
+ updateCallbackGUI->ProgressDialog.WaitCreating();
+ result = outArchive->UpdateItems(file, numItems, updateCallbackSpec);
+ updateCallbackGUI->ProgressDialog.MyClose();
+ return 0;
+ }
+ static THREAD_FUNC_RET_TYPE WINAPI Process(void *param)
+ {
+ return ((CThreadUpdateCompress *)param)->Process();
+ }
+ CUpdateCallbackGUI *updateCallbackGUI;
+ IOutArchive *outArchive;
+ CArchiveUpdateCallback *updateCallbackSpec;
+ COutFileStream *file;
+public:
+ HRESULT result;
+ UINT32 numItems;
+ CThreadUpdateCompress
+ (
+ CUpdateCallbackGUI *updateCallbackGUI,
+ IOutArchive *outArchive,
+ CArchiveUpdateCallback *updateCallbackSpec,
+ UINT32 numItems,
+ COutFileStream *file,
+ const CSysString &title
+ ):
+ updateCallbackGUI(updateCallbackGUI),
+ outArchive(outArchive),
+ updateCallbackSpec(updateCallbackSpec),
+ numItems(numItems),
+ file(file)
+ {
+ result = E_FAIL;
+ if (HRESULT hr = Create(Process, this))
+ {
+ Complain(hr, NULL);
+ }
+ updateCallbackGUI->StartProgressDialog(GetUnicodeString(title));
+ }
+};
+
+/**
+ * @brief Construct Updater
+ */
+Format7zDLL::Interface::Updater::Updater(Format7zDLL::Interface *format, LPCTSTR path)
+: format(format), outArchive(0), file(0), path(path)
+{
+}
+
+/**
+ * @brief Initialize Updater
+ */
+void Format7zDLL::Interface::Updater::Init(HWND hwndParent)
+{
+ (outArchive = format->GetOutArchive()) -> AddRef();
+ (file = new COutFileStream) -> AddRef();
+ if COMPLAIN(!file->Create(path, true))
+ {
+ Complain(ERROR_CANNOT_MAKE, path);
+ }
+}
+
+/**
+ * @brief Commit update
+ */
+HRESULT Format7zDLL::Interface::Updater::Commit(HWND hwndParent)
+{
+ CArchiveUpdateCallback *updateCallbackSpec = 0;
+ CUpdateCallbackGUI *updateCallbackGUI = 0;
+ HRESULT result = 0;
+ try
+ {
+ // Ref counts are not always accurate with 7-Zip.
+ // An extra AddRef() ensures that interfaces remain valid until they
+ // are explicitly released at the end of this function.
+ (updateCallbackSpec = new CArchiveUpdateCallback) -> AddRef();
+ (updateCallbackGUI = new CUpdateCallbackGUI);// -> AddRef();
+
+ // No items in dest archive. We always recreate the dest archive
+ // Build the operationChain. One element per item
+ CObjectVector<CUpdatePair2> operationChain;
+ CUpdatePair2 pair2;
+ pair2.IsAnti = false;
+ pair2.ExistInArchive = false;
+ pair2.ExistOnDisk = true;
+ pair2.NewData = pair2.NewProperties = true;
+
+ operationChain.Reserve(dirItems.Size());
+ int i;
+ for (i = 0 ; i < dirItems.Size() ; i++)
+ {
+ pair2.DirItemIndex = i;
+ operationChain.Add(pair2);
+ }
+
+ /* The following code may or may not help implement update on existing
+ /* archives, which is currently not supported.
+ UINT32 fileTimeType;
+ outArchive->GetFileTimeType(&fileTimeType);
+
+ CObjectVector<CUpdatePair> updatePairs;
+ GetUpdatePairInfoList(dirItems, archiveItems, NFileTimeType::EEnum(fileTimeType), updatePairs); // must be done only once!!!
+
+ CObjectVector<CUpdatePair2> operationChain;
+ UpdateProduce(dirItems, archiveItems, updatePairs, NUpdateArchive::kAddActionSet, operationChain);*/
+
+ // Now compress...
+ updateCallbackSpec->DirItems = &dirItems;
+ updateCallbackSpec->ArchiveItems = &archiveItems;
+ updateCallbackSpec->UpdatePairs = &operationChain;
+ updateCallbackSpec->Callback = updateCallbackGUI;
+
+ result = CThreadUpdateCompress
+ (
+ updateCallbackGUI,
+ outArchive,
+ updateCallbackSpec,
+ operationChain.Size(),
+ file,
+ PathFindFileName(path)
+ ).result;
+
+ //result = outArchive->UpdateItems(file, operationChain.Size(), updateCallbackSpec);
+ if COMPLAIN(result != S_OK && result != E_ABORT)
+ {
+ Complain(result, path);
+ }
+ }
+ catch (Complain *complain)
+ {
+ result = complain->Alert(hwndParent);
+ }
+ // Always release interfaces in this order, or else all hell will break
+ // loose!
+ Release(static_cast<IArchiveUpdateCallback*>(updateCallbackSpec));
+ delete updateCallbackGUI;
+ return result;
+}
# End Source File\r
# Begin Source File\r
\r
--SOURCE=.\Merge7zCommon.cpp\r
++SOURCE=.\Merge7zCommon453.cpp\r
# End Source File\r
# Begin Source File\r
\r
--SOURCE=.\Merge7zCommon.h\r
++SOURCE=.\Merge7zCommon453.h\r
# End Source File\r
# Begin Source File\r
\r
--- /dev/null
- Microsoft Developer Studio Workspace File, Format Version 6.00
- # \8cx\8d\90: \82±\82ÌÜ°¸½Íß°½ ̧²Ù \82ð\95Ò\8fW\82Ü\82½\82Í\8dí\8f\9c\82µ\82È\82¢\82Å\82\82¾\82³\82¢!
-
- ###############################################################################
-
- Project: "Merge7z457"=".\Merge7z457.dsp" - Package Owner=<4>
-
- Package=<5>
- {{{
- }}}
-
- Package=<4>
- {{{
- }}}
-
- ###############################################################################
-
- Global:
-
- Package=<5>
- {{{
- }}}
-
- Package=<3>
- {{{
- }}}
-
- ###############################################################################
-
++Microsoft Developer Studio Workspace File, Format Version 6.00\r
++# \8cx\8d\90: \82±\82ÌÜ°¸½Íß°½ ̧²Ù \82ð\95Ò\8fW\82Ü\82½\82Í\8dí\8f\9c\82µ\82È\82¢\82Å\82\82¾\82³\82¢!\r
++\r
++###############################################################################\r
++\r
++Project: "Merge7z457"=".\Merge7z457.dsp" - Package Owner=<4>\r
++\r
++Package=<5>\r
++{{{\r
++}}}\r
++\r
++Package=<4>\r
++{{{\r
++}}}\r
++\r
++###############################################################################\r
++\r
++Global:\r
++\r
++Package=<5>\r
++{{{\r
++}}}\r
++\r
++Package=<3>\r
++{{{\r
++}}}\r
++\r
++###############################################################################\r
++\r
# End Source File\r
# Begin Source File\r
\r
--SOURCE=.\Merge7zCommon.cpp\r
++SOURCE=.\Merge7zCommon453.cpp\r
# End Source File\r
# Begin Source File\r
\r
--SOURCE=.\Merge7zCommon.h\r
++SOURCE=.\Merge7zCommon453.h\r
# End Source File\r
# Begin Source File\r
\r
--- /dev/null
--- /dev/null
++# Microsoft Developer Studio Project File - Name="Merge7z465" - Package Owner=<4>\r
++# Microsoft Developer Studio Generated Build File, Format Version 6.00\r
++# ** \95Ò\8fW\82µ\82È\82¢\82Å\82\82¾\82³\82¢ **\r
++\r
++# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102\r
++\r
++CFG=Merge7z465 - Win32 UnicodeDebug\r
++!MESSAGE \82±\82ê\82Í\97L\8cø\82ÈÒ²¸Ì§²Ù\82Å\82Í\82 \82è\82Ü\82¹\82ñ\81B \82±\82ÌÌßÛ¼Þª¸Ä\82ðËÞÙÄÞ\82·\82é\82½\82ß\82É\82Í NMAKE \82ð\8eg\97p\82µ\82Ä\82\82¾\82³\82¢\81B\r
++!MESSAGE [Ò²¸Ì§²Ù\82Ì´¸½Îß°Ä] ºÏÝÄÞ\82ð\8eg\97p\82µ\82Ä\8eÀ\8ds\82µ\82Ä\82\82¾\82³\82¢\r
++!MESSAGE \r
++!MESSAGE NMAKE /f "Merge7z465.mak".\r
++!MESSAGE \r
++!MESSAGE NMAKE \82Ì\8eÀ\8ds\8e\9e\82É\8d\\90¬\82ð\8ew\92è\82Å\82«\82Ü\82·\r
++!MESSAGE ºÏÝÄÞ ×²Ý\8fã\82ÅϸÛ\82Ì\90Ý\92è\82ð\92è\8b`\82µ\82Ü\82·\81B\97á:\r
++!MESSAGE \r
++!MESSAGE NMAKE /f "Merge7z465.mak" CFG="Merge7z465 - Win32 UnicodeDebug"\r
++!MESSAGE \r
++!MESSAGE \91I\91ð\89Â\94\\82ÈËÞÙÄÞ Ó°ÄÞ:\r
++!MESSAGE \r
++!MESSAGE "Merge7z465 - Win32 Release" ("Win32 (x86) Dynamic-Link Library" \97p)\r
++!MESSAGE "Merge7z465 - Win32 Debug" ("Win32 (x86) Dynamic-Link Library" \97p)\r
++!MESSAGE "Merge7z465 - Win32 UnicodeDebug" ("Win32 (x86) Dynamic-Link Library" \97p)\r
++!MESSAGE "Merge7z465 - Win32 UnicodeRelease" ("Win32 (x86) Dynamic-Link Library" \97p)\r
++!MESSAGE \r
++\r
++# Begin Project\r
++# PROP AllowPerConfigDependencies 0\r
++# PROP Scc_ProjName ""\r
++# PROP Scc_LocalPath ""\r
++CPP=cl.exe\r
++MTL=midl.exe\r
++RSC=rc.exe\r
++\r
++!IF "$(CFG)" == "Merge7z465 - Win32 Release"\r
++\r
++# PROP BASE Use_MFC 0\r
++# PROP BASE Use_Debug_Libraries 0\r
++# PROP BASE Output_Dir "Release"\r
++# PROP BASE Intermediate_Dir "Release"\r
++# PROP BASE Target_Dir ""\r
++# PROP Use_MFC 0\r
++# PROP Use_Debug_Libraries 0\r
++# PROP Output_Dir "..\BuildTmp\Merge7z465___Win32_Release"\r
++# PROP Intermediate_Dir "..\BuildTmp\Merge7z465___Win32_Release"\r
++# PROP Ignore_Export_Lib 0\r
++# PROP Target_Dir ""\r
++# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /YX /FD /c\r
++# ADD CPP /nologo /MT /W3 /GX /O1 /I "$(SRC7Z)\7z465" /I "$(SRC7Z)\7z465\CPP" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "Merge7z465_EXPORTS" /FR /Yu"stdafx.h" /FD /c\r
++# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
++# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
++# ADD BASE RSC /l 0x407 /d "NDEBUG"\r
++# ADD RSC /l 0x407 /d "NDEBUG"\r
++BSC32=bscmake.exe\r
++# ADD BASE BSC32 /nologo\r
++# ADD BSC32 /nologo\r
++LINK32=link.exe\r
++# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386\r
++# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib shlwapi.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:none /machine:I386 /out:"../../Build/MergeRelease/Merge7z465.dll"\r
++\r
++!ELSEIF "$(CFG)" == "Merge7z465 - Win32 Debug"\r
++\r
++# PROP BASE Use_MFC 0\r
++# PROP BASE Use_Debug_Libraries 1\r
++# PROP BASE Output_Dir "Debug"\r
++# PROP BASE Intermediate_Dir "Debug"\r
++# PROP BASE Target_Dir ""\r
++# PROP Use_MFC 0\r
++# PROP Use_Debug_Libraries 1\r
++# PROP Output_Dir "..\BuildTmp\Merge7z465___Win32_Debug"\r
++# PROP Intermediate_Dir "..\BuildTmp\Merge7z465___Win32_Debug"\r
++# PROP Ignore_Export_Lib 0\r
++# PROP Target_Dir ""\r
++# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /YX /FD /GZ /c\r
++# ADD CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "$(SRC7Z)\7z465" /I "$(SRC7Z)\7z465\CPP" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "Merge7z465_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c\r
++# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
++# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
++# ADD BASE RSC /l 0x407 /d "_DEBUG"\r
++# ADD RSC /l 0x407 /d "_DEBUG"\r
++BSC32=bscmake.exe\r
++# ADD BASE BSC32 /nologo\r
++# ADD BSC32 /nologo\r
++LINK32=link.exe\r
++# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept\r
++# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib shlwapi.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"../../Build/MergeDebug/Merge7z465.pdb" /debug /machine:I386 /out:"../../Build/MergeDebug/Merge7z465.dll"\r
++# SUBTRACT LINK32 /pdb:none /map\r
++\r
++!ELSEIF "$(CFG)" == "Merge7z465 - Win32 UnicodeDebug"\r
++\r
++# PROP BASE Use_MFC 0\r
++# PROP BASE Use_Debug_Libraries 1\r
++# PROP BASE Output_Dir "..\BuildTmp\Merge7z465___Win32_UnicodeDebug"\r
++# PROP BASE Intermediate_Dir "..\BuildTmp\Merge7z465___Win32_UnicodeDebug"\r
++# PROP BASE Ignore_Export_Lib 0\r
++# PROP BASE Target_Dir ""\r
++# PROP Use_MFC 0\r
++# PROP Use_Debug_Libraries 1\r
++# PROP Output_Dir "..\BuildTmp\Merge7z465___Win32_UnicodeDebug"\r
++# PROP Intermediate_Dir "..\BuildTmp\Merge7z465___Win32_UnicodeDebug"\r
++# PROP Ignore_Export_Lib 0\r
++# PROP Target_Dir ""\r
++# ADD BASE CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "$(SRC7Z)\7z465" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c\r
++# ADD CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "$(SRC7Z)\7z465" /I "$(SRC7Z)\7z465\CPP" /D "Merge7z465_EXPORTS" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "UNICODE" /D "_UNICODE" /FR /Yu"stdafx.h" /FD /GZ /c\r
++# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
++# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32\r
++# ADD BASE RSC /l 0x407 /d "_DEBUG"\r
++# ADD RSC /l 0x407 /d "_DEBUG"\r
++BSC32=bscmake.exe\r
++# ADD BASE BSC32 /nologo\r
++# ADD BSC32 /nologo\r
++LINK32=link.exe\r
++# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shlwapi.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:none /map /debug /machine:I386 /out:"../../Build/MergeDebug/Merge7z465.dll"\r
++# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib shlwapi.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"../../Build/MergeUnicodeDebug/Merge7z465U.pdb" /debug /machine:I386 /out:"../../Build/MergeUnicodeDebug/Merge7z465U.dll"\r
++# SUBTRACT LINK32 /pdb:none /map\r
++\r
++!ELSEIF "$(CFG)" == "Merge7z465 - Win32 UnicodeRelease"\r
++\r
++# PROP BASE Use_MFC 0\r
++# PROP BASE Use_Debug_Libraries 0\r
++# PROP BASE Output_Dir "..\BuildTmp\Merge7z465___Win32_UnicodeRelease"\r
++# PROP BASE Intermediate_Dir "..\BuildTmp\Merge7z465___Win32_UnicodeRelease"\r
++# PROP BASE Ignore_Export_Lib 0\r
++# PROP BASE Target_Dir ""\r
++# PROP Use_MFC 0\r
++# PROP Use_Debug_Libraries 0\r
++# PROP Output_Dir "..\BuildTmp\Merge7z465___Win32_UnicodeRelease"\r
++# PROP Intermediate_Dir "..\BuildTmp\Merge7z465___Win32_UnicodeRelease"\r
++# PROP Ignore_Export_Lib 0\r
++# PROP Target_Dir ""\r
++# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "$(SRC7Z)\7z465" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /Yu"stdafx.h" /FD /c\r
++# ADD CPP /nologo /MT /W3 /GX /O1 /I "$(SRC7Z)\7z465\CPP" /D "Merge7z465_EXPORTS" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "UNICODE" /D "_UNICODE" /Yu"stdafx.h" /FD /c\r
++# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
++# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32\r
++# ADD BASE RSC /l 0x407 /d "NDEBUG"\r
++# ADD RSC /l 0x407 /d "NDEBUG"\r
++BSC32=bscmake.exe\r
++# ADD BASE BSC32 /nologo\r
++# ADD BSC32 /nologo\r
++LINK32=link.exe\r
++# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shlwapi.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:none /machine:I386 /out:"../../Build/MergeRelease/Merge7z465.dll"\r
++# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib shlwapi.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /pdb:none /machine:I386 /out:"../../Build/MergeUnicodeRelease/Merge7z465U.dll"\r
++\r
++!ENDIF \r
++\r
++# Begin Target\r
++\r
++# Name "Merge7z465 - Win32 Release"\r
++# Name "Merge7z465 - Win32 Debug"\r
++# Name "Merge7z465 - Win32 UnicodeDebug"\r
++# Name "Merge7z465 - Win32 UnicodeRelease"\r
++# Begin Group "Quellcodedateien"\r
++\r
++# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
++# Begin Source File\r
++\r
++SOURCE=.\Merge7z.def\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\Merge7z.h\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\Merge7z459.cpp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\Merge7zCommon.cpp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\Merge7zCommon.h\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\StdAfx.cpp\r
++# ADD CPP /Yc"stdafx.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\StdAfx.h\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\tools.cpp\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\tools.h\r
++# End Source File\r
++# End Group\r
++# Begin Group "Header-Dateien"\r
++\r
++# PROP Default_Filter "h;hpp;hxx;hm;inl"\r
++# End Group\r
++# Begin Group "Ressourcendateien"\r
++\r
++# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui\FM.ico"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\GUI\resource.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui\resource.rc"\r
++# End Source File\r
++# End Group\r
++# Begin Group "Windows"\r
++\r
++# PROP Default_Filter ""\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\DLL.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\DLL.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\Error.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\Error.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\FileIO.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\FileIO.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\PropVariant.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\PropVariant.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\PropVariantConversions.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\PropVariantConversions.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\ResourceString.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\ResourceString.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\Synchronization.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\Synchronization.h"\r
++# End Source File\r
++# End Group\r
++# Begin Group "Common"\r
++\r
++# PROP Default_Filter ""\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\IntToString.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\IntToString.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\Lang.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\Lang.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\MyString.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\MyString.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\StdInStream.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\StdInStream.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\StringConvert.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\StringConvert.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\StringToInt.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\StringToInt.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\TextConfig.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\TextConfig.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\UTFConvert.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\UTFConvert.h"\r
++# End Source File\r
++# End Group\r
++# Begin Group "7zip Common"\r
++\r
++# PROP Default_Filter ""\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Ui\Common\ArchiveExtractCallback.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\ArchiveExtractCallback.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\ArchiveOpenCallback.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\ArchiveOpenCallback.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\DefaultName.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\DefaultName.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\Control\Dialog.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\Control\Dialog.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="..\..\..\..\..\7-zip\7z465\CPP\7zip\UI\Common\EnumDirItems.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="..\..\..\..\..\7-zip\7z465\CPP\7zip\UI\Common\EnumDirItems.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\ExtractCallback.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\ExtractCallback.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Common\FileStreams.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Common\FileStreams.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\FormatUtils.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\FormatUtils.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\LangUtils.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\LangUtils.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\Control\ListView.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\Control\ListView.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\LoadCodecs.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\LoadCodecs.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\MessagesDialog.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\MessagesDialog.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\OpenArchive.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\OpenArchive.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\OpenCallback.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\OpenCallback.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\OverwriteDialog.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\OverwriteDialog.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\PasswordDialog.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\PasswordDialog.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\ProgramLocation.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\ProgramLocation.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\ProgressDialog2.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Common\ProgressUtils.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Common\ProgressUtils.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Common\StreamUtils.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Common\StreamUtils.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\UpdateCallback.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\UpdateCallback.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\GUI\UpdateCallbackGUI.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\GUI\UpdateCallbackGUI.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\Window.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\Window.h"\r
++# End Source File\r
++# End Group\r
++# Begin Group "Extract"\r
++\r
++# PROP Default_Filter ""\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Ui\Common\ExtractingFilePath.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\UI\Common\ExtractingFilePath.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\FileDir.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\FileDir.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\FileFind.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\FileFind.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\FileName.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Windows\FileName.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Common\FilePathAutoRename.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Common\FilePathAutoRename.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\MyVector.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\MyVector.h"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\Wildcard.cpp"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\Common\Wildcard.h"\r
++# End Source File\r
++# End Group\r
++# Begin Group "C"\r
++\r
++# PROP Default_Filter ""\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\C\Threads.c"\r
++# SUBTRACT CPP /YX /Yc /Yu\r
++# End Source File\r
++# End Group\r
++# Begin Source File\r
++\r
++SOURCE="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui\7zG.exe.manifest"\r
++# End Source File\r
++# Begin Source File\r
++\r
++SOURCE=.\revision.txt\r
++# End Source File\r
++# End Target\r
++# End Project\r
--- /dev/null
--- /dev/null
++<?xml version="1.0" encoding="shift_jis"?>\r
++<VisualStudioProject\r
++ ProjectType="Visual C++"\r
++ Version="9.00"\r
++ Name="Merge7z465"\r
++ ProjectGUID="{34C32ABA-B317-406A-9F7A-598550CB855C}"\r
++ RootNamespace="Merge7z465"\r
++ TargetFrameworkVersion="0"\r
++ >\r
++ <Platforms>\r
++ <Platform\r
++ Name="Win32"\r
++ />\r
++ <Platform\r
++ Name="x64"\r
++ />\r
++ </Platforms>\r
++ <ToolFiles>\r
++ </ToolFiles>\r
++ <Configurations>\r
++ <Configuration\r
++ Name="Release|Win32"\r
++ OutputDirectory=".\..\BuildTmp\Merge7z465___Win32_Release"\r
++ IntermediateDirectory=".\..\BuildTmp\Merge7z465___Win32_Release"\r
++ ConfigurationType="2"\r
++ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
++ UseOfMFC="0"\r
++ ATLMinimizesCRunTimeLibraryUsage="false"\r
++ CharacterSet="2"\r
++ >\r
++ <Tool\r
++ Name="VCPreBuildEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCCustomBuildTool"\r
++ />\r
++ <Tool\r
++ Name="VCXMLDataGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCWebServiceProxyGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCMIDLTool"\r
++ PreprocessorDefinitions="NDEBUG"\r
++ MkTypLibCompatible="true"\r
++ SuppressStartupBanner="true"\r
++ TargetEnvironment="1"\r
++ TypeLibraryName=".\..\BuildTmp\Merge7z465___Win32_Release/Merge7z465.tlb"\r
++ HeaderFileName=""\r
++ />\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ Optimization="1"\r
++ InlineFunctionExpansion="1"\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465,$(SRC7Z)\7z465\CPP"\r
++ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;Merge7z465_EXPORTS"\r
++ StringPooling="true"\r
++ RuntimeLibrary="0"\r
++ EnableFunctionLevelLinking="true"\r
++ UsePrecompiledHeader="2"\r
++ PrecompiledHeaderThrough="stdafx.h"\r
++ PrecompiledHeaderFile=".\..\BuildTmp\Merge7z465___Win32_Release/Merge7z465.pch"\r
++ AssemblerListingLocation=".\..\BuildTmp\Merge7z465___Win32_Release/"\r
++ ObjectFile=".\..\BuildTmp\Merge7z465___Win32_Release/"\r
++ ProgramDataBaseFileName=".\..\BuildTmp\Merge7z465___Win32_Release/"\r
++ BrowseInformation="1"\r
++ WarningLevel="3"\r
++ SuppressStartupBanner="true"\r
++ />\r
++ <Tool\r
++ Name="VCManagedResourceCompilerTool"\r
++ />\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions="NDEBUG"\r
++ Culture="1031"\r
++ />\r
++ <Tool\r
++ Name="VCPreLinkEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCLinkerTool"\r
++ AdditionalDependencies="shlwapi.lib odbc32.lib odbccp32.lib"\r
++ OutputFile="../../Build/MergeRelease/Merge7z465.dll"\r
++ LinkIncremental="1"\r
++ SuppressStartupBanner="true"\r
++ ModuleDefinitionFile=".\Merge7z.def"\r
++ RandomizedBaseAddress="1"\r
++ DataExecutionPrevention="0"\r
++ ImportLibrary=".\..\BuildTmp\Merge7z465___Win32_Release/Merge7z465.lib"\r
++ TargetMachine="1"\r
++ />\r
++ <Tool\r
++ Name="VCALinkTool"\r
++ />\r
++ <Tool\r
++ Name="VCManifestTool"\r
++ />\r
++ <Tool\r
++ Name="VCXDCMakeTool"\r
++ />\r
++ <Tool\r
++ Name="VCBscMakeTool"\r
++ SuppressStartupBanner="true"\r
++ OutputFile=".\..\BuildTmp\Merge7z465___Win32_Release/Merge7z465.bsc"\r
++ />\r
++ <Tool\r
++ Name="VCFxCopTool"\r
++ />\r
++ <Tool\r
++ Name="VCAppVerifierTool"\r
++ />\r
++ <Tool\r
++ Name="VCPostBuildEventTool"\r
++ />\r
++ </Configuration>\r
++ <Configuration\r
++ Name="Release|x64"\r
++ OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
++ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
++ ConfigurationType="2"\r
++ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
++ UseOfMFC="0"\r
++ ATLMinimizesCRunTimeLibraryUsage="false"\r
++ CharacterSet="2"\r
++ >\r
++ <Tool\r
++ Name="VCPreBuildEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCCustomBuildTool"\r
++ />\r
++ <Tool\r
++ Name="VCXMLDataGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCWebServiceProxyGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCMIDLTool"\r
++ PreprocessorDefinitions="NDEBUG"\r
++ MkTypLibCompatible="true"\r
++ SuppressStartupBanner="true"\r
++ TargetEnvironment="3"\r
++ TypeLibraryName=".\..\BuildTmp\Merge7z465___Win32_Release/Merge7z465.tlb"\r
++ HeaderFileName=""\r
++ />\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ Optimization="1"\r
++ InlineFunctionExpansion="1"\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465,$(SRC7Z)\7z465\CPP"\r
++ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;Merge7z465_EXPORTS"\r
++ StringPooling="true"\r
++ RuntimeLibrary="0"\r
++ EnableFunctionLevelLinking="true"\r
++ UsePrecompiledHeader="2"\r
++ PrecompiledHeaderThrough="stdafx.h"\r
++ PrecompiledHeaderFile=".\..\BuildTmp\Merge7z465___Win32_Release/Merge7z465.pch"\r
++ AssemblerListingLocation=".\..\BuildTmp\Merge7z465___Win32_Release/"\r
++ ObjectFile=".\..\BuildTmp\Merge7z465___Win32_Release/"\r
++ ProgramDataBaseFileName=".\..\BuildTmp\Merge7z465___Win32_Release/"\r
++ BrowseInformation="1"\r
++ WarningLevel="3"\r
++ SuppressStartupBanner="true"\r
++ />\r
++ <Tool\r
++ Name="VCManagedResourceCompilerTool"\r
++ />\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions="NDEBUG"\r
++ Culture="1031"\r
++ />\r
++ <Tool\r
++ Name="VCPreLinkEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCLinkerTool"\r
++ AdditionalDependencies="shlwapi.lib odbc32.lib odbccp32.lib"\r
++ OutputFile="../../Build/X64/MergeRelease/Merge7z465.dll"\r
++ LinkIncremental="1"\r
++ SuppressStartupBanner="true"\r
++ ModuleDefinitionFile=".\Merge7z.def"\r
++ RandomizedBaseAddress="1"\r
++ DataExecutionPrevention="0"\r
++ ImportLibrary=".\..\BuildTmp\Merge7z465___Win32_Release/Merge7z465.lib"\r
++ TargetMachine="17"\r
++ />\r
++ <Tool\r
++ Name="VCALinkTool"\r
++ />\r
++ <Tool\r
++ Name="VCManifestTool"\r
++ />\r
++ <Tool\r
++ Name="VCXDCMakeTool"\r
++ />\r
++ <Tool\r
++ Name="VCBscMakeTool"\r
++ SuppressStartupBanner="true"\r
++ OutputFile=".\..\BuildTmp\Merge7z465___Win32_Release/Merge7z465.bsc"\r
++ />\r
++ <Tool\r
++ Name="VCFxCopTool"\r
++ />\r
++ <Tool\r
++ Name="VCAppVerifierTool"\r
++ />\r
++ <Tool\r
++ Name="VCPostBuildEventTool"\r
++ />\r
++ </Configuration>\r
++ <Configuration\r
++ Name="UnicodeRelease|Win32"\r
++ OutputDirectory=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease"\r
++ IntermediateDirectory=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease"\r
++ ConfigurationType="2"\r
++ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
++ UseOfMFC="0"\r
++ ATLMinimizesCRunTimeLibraryUsage="false"\r
++ CharacterSet="1"\r
++ >\r
++ <Tool\r
++ Name="VCPreBuildEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCCustomBuildTool"\r
++ />\r
++ <Tool\r
++ Name="VCXMLDataGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCWebServiceProxyGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCMIDLTool"\r
++ PreprocessorDefinitions="NDEBUG"\r
++ MkTypLibCompatible="true"\r
++ SuppressStartupBanner="true"\r
++ TargetEnvironment="1"\r
++ TypeLibraryName=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/Merge7z465.tlb"\r
++ HeaderFileName=""\r
++ />\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ Optimization="1"\r
++ InlineFunctionExpansion="1"\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465\CPP"\r
++ PreprocessorDefinitions="Merge7z465_EXPORTS;WIN32;NDEBUG;_WINDOWS;_USRDLL;UNICODE"\r
++ StringPooling="true"\r
++ RuntimeLibrary="0"\r
++ EnableFunctionLevelLinking="true"\r
++ UsePrecompiledHeader="2"\r
++ PrecompiledHeaderThrough="stdafx.h"\r
++ PrecompiledHeaderFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/Merge7z465.pch"\r
++ AssemblerListingLocation=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/"\r
++ ObjectFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/"\r
++ ProgramDataBaseFileName=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/"\r
++ WarningLevel="3"\r
++ SuppressStartupBanner="true"\r
++ />\r
++ <Tool\r
++ Name="VCManagedResourceCompilerTool"\r
++ />\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions="NDEBUG"\r
++ Culture="1031"\r
++ />\r
++ <Tool\r
++ Name="VCPreLinkEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCLinkerTool"\r
++ AdditionalDependencies="shlwapi.lib odbc32.lib odbccp32.lib"\r
++ OutputFile="../../Build/MergeUnicodeRelease/Merge7z465U.dll"\r
++ LinkIncremental="1"\r
++ SuppressStartupBanner="true"\r
++ ModuleDefinitionFile=".\Merge7z.def"\r
++ RandomizedBaseAddress="1"\r
++ DataExecutionPrevention="0"\r
++ ImportLibrary=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/Merge7z465U.lib"\r
++ TargetMachine="1"\r
++ />\r
++ <Tool\r
++ Name="VCALinkTool"\r
++ />\r
++ <Tool\r
++ Name="VCManifestTool"\r
++ />\r
++ <Tool\r
++ Name="VCXDCMakeTool"\r
++ />\r
++ <Tool\r
++ Name="VCBscMakeTool"\r
++ SuppressStartupBanner="true"\r
++ OutputFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/Merge7z465.bsc"\r
++ />\r
++ <Tool\r
++ Name="VCFxCopTool"\r
++ />\r
++ <Tool\r
++ Name="VCAppVerifierTool"\r
++ />\r
++ <Tool\r
++ Name="VCPostBuildEventTool"\r
++ />\r
++ </Configuration>\r
++ <Configuration\r
++ Name="UnicodeRelease|x64"\r
++ OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
++ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
++ ConfigurationType="2"\r
++ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
++ UseOfMFC="0"\r
++ ATLMinimizesCRunTimeLibraryUsage="false"\r
++ CharacterSet="1"\r
++ >\r
++ <Tool\r
++ Name="VCPreBuildEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCCustomBuildTool"\r
++ />\r
++ <Tool\r
++ Name="VCXMLDataGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCWebServiceProxyGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCMIDLTool"\r
++ PreprocessorDefinitions="NDEBUG"\r
++ MkTypLibCompatible="true"\r
++ SuppressStartupBanner="true"\r
++ TargetEnvironment="3"\r
++ TypeLibraryName=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/Merge7z465.tlb"\r
++ HeaderFileName=""\r
++ />\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ Optimization="1"\r
++ InlineFunctionExpansion="1"\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465\CPP"\r
++ PreprocessorDefinitions="Merge7z465_EXPORTS;WIN32;NDEBUG;_WINDOWS;_USRDLL;UNICODE"\r
++ StringPooling="true"\r
++ RuntimeLibrary="0"\r
++ EnableFunctionLevelLinking="true"\r
++ UsePrecompiledHeader="2"\r
++ PrecompiledHeaderThrough="stdafx.h"\r
++ PrecompiledHeaderFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/Merge7z465.pch"\r
++ AssemblerListingLocation=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/"\r
++ ObjectFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/"\r
++ ProgramDataBaseFileName=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/"\r
++ WarningLevel="3"\r
++ SuppressStartupBanner="true"\r
++ />\r
++ <Tool\r
++ Name="VCManagedResourceCompilerTool"\r
++ />\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions="NDEBUG"\r
++ Culture="1031"\r
++ />\r
++ <Tool\r
++ Name="VCPreLinkEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCLinkerTool"\r
++ AdditionalDependencies="shlwapi.lib odbc32.lib odbccp32.lib"\r
++ OutputFile="../../Build/X64/MergeUnicodeRelease/Merge7z465U.dll"\r
++ LinkIncremental="1"\r
++ SuppressStartupBanner="true"\r
++ ModuleDefinitionFile=".\Merge7z.def"\r
++ RandomizedBaseAddress="1"\r
++ DataExecutionPrevention="0"\r
++ ImportLibrary=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/Merge7z465U.lib"\r
++ TargetMachine="17"\r
++ />\r
++ <Tool\r
++ Name="VCALinkTool"\r
++ />\r
++ <Tool\r
++ Name="VCManifestTool"\r
++ />\r
++ <Tool\r
++ Name="VCXDCMakeTool"\r
++ />\r
++ <Tool\r
++ Name="VCBscMakeTool"\r
++ SuppressStartupBanner="true"\r
++ OutputFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeRelease/Merge7z465.bsc"\r
++ />\r
++ <Tool\r
++ Name="VCFxCopTool"\r
++ />\r
++ <Tool\r
++ Name="VCAppVerifierTool"\r
++ />\r
++ <Tool\r
++ Name="VCPostBuildEventTool"\r
++ />\r
++ </Configuration>\r
++ <Configuration\r
++ Name="Debug|Win32"\r
++ OutputDirectory=".\..\BuildTmp\Merge7z465___Win32_Debug"\r
++ IntermediateDirectory=".\..\BuildTmp\Merge7z465___Win32_Debug"\r
++ ConfigurationType="2"\r
++ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
++ UseOfMFC="0"\r
++ ATLMinimizesCRunTimeLibraryUsage="false"\r
++ CharacterSet="2"\r
++ >\r
++ <Tool\r
++ Name="VCPreBuildEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCCustomBuildTool"\r
++ />\r
++ <Tool\r
++ Name="VCXMLDataGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCWebServiceProxyGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCMIDLTool"\r
++ PreprocessorDefinitions="_DEBUG"\r
++ MkTypLibCompatible="true"\r
++ SuppressStartupBanner="true"\r
++ TargetEnvironment="1"\r
++ TypeLibraryName=".\..\BuildTmp\Merge7z465___Win32_Debug/Merge7z465.tlb"\r
++ HeaderFileName=""\r
++ />\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ Optimization="0"\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465,$(SRC7Z)\7z465\CPP"\r
++ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;Merge7z465_EXPORTS"\r
++ BasicRuntimeChecks="3"\r
++ RuntimeLibrary="1"\r
++ UsePrecompiledHeader="2"\r
++ PrecompiledHeaderThrough="stdafx.h"\r
++ PrecompiledHeaderFile=".\..\BuildTmp\Merge7z465___Win32_Debug/Merge7z465.pch"\r
++ AssemblerListingLocation=".\..\BuildTmp\Merge7z465___Win32_Debug/"\r
++ ObjectFile=".\..\BuildTmp\Merge7z465___Win32_Debug/"\r
++ ProgramDataBaseFileName=".\..\BuildTmp\Merge7z465___Win32_Debug/"\r
++ BrowseInformation="1"\r
++ WarningLevel="3"\r
++ SuppressStartupBanner="true"\r
++ DebugInformationFormat="1"\r
++ />\r
++ <Tool\r
++ Name="VCManagedResourceCompilerTool"\r
++ />\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions="_DEBUG"\r
++ Culture="1031"\r
++ />\r
++ <Tool\r
++ Name="VCPreLinkEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCLinkerTool"\r
++ AdditionalDependencies="shlwapi.lib odbc32.lib odbccp32.lib"\r
++ OutputFile="../../Build/MergeDebug/Merge7z465.dll"\r
++ LinkIncremental="1"\r
++ SuppressStartupBanner="true"\r
++ ModuleDefinitionFile=".\Merge7z.def"\r
++ GenerateDebugInformation="true"\r
++ ProgramDatabaseFile="../../Build/MergeDebug/Merge7z465.pdb"\r
++ RandomizedBaseAddress="1"\r
++ DataExecutionPrevention="0"\r
++ ImportLibrary=".\..\BuildTmp\Merge7z465___Win32_Debug/Merge7z465.lib"\r
++ TargetMachine="1"\r
++ />\r
++ <Tool\r
++ Name="VCALinkTool"\r
++ />\r
++ <Tool\r
++ Name="VCManifestTool"\r
++ />\r
++ <Tool\r
++ Name="VCXDCMakeTool"\r
++ />\r
++ <Tool\r
++ Name="VCBscMakeTool"\r
++ SuppressStartupBanner="true"\r
++ OutputFile=".\..\BuildTmp\Merge7z465___Win32_Debug/Merge7z465.bsc"\r
++ />\r
++ <Tool\r
++ Name="VCFxCopTool"\r
++ />\r
++ <Tool\r
++ Name="VCAppVerifierTool"\r
++ />\r
++ <Tool\r
++ Name="VCPostBuildEventTool"\r
++ />\r
++ </Configuration>\r
++ <Configuration\r
++ Name="Debug|x64"\r
++ OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
++ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
++ ConfigurationType="2"\r
++ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
++ UseOfMFC="0"\r
++ ATLMinimizesCRunTimeLibraryUsage="false"\r
++ CharacterSet="2"\r
++ >\r
++ <Tool\r
++ Name="VCPreBuildEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCCustomBuildTool"\r
++ />\r
++ <Tool\r
++ Name="VCXMLDataGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCWebServiceProxyGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCMIDLTool"\r
++ PreprocessorDefinitions="_DEBUG"\r
++ MkTypLibCompatible="true"\r
++ SuppressStartupBanner="true"\r
++ TargetEnvironment="3"\r
++ TypeLibraryName=".\..\BuildTmp\Merge7z465___Win32_Debug/Merge7z465.tlb"\r
++ HeaderFileName=""\r
++ />\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ Optimization="0"\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465,$(SRC7Z)\7z465\CPP"\r
++ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;Merge7z465_EXPORTS"\r
++ BasicRuntimeChecks="3"\r
++ RuntimeLibrary="1"\r
++ UsePrecompiledHeader="2"\r
++ PrecompiledHeaderThrough="stdafx.h"\r
++ PrecompiledHeaderFile=".\..\BuildTmp\Merge7z465___Win32_Debug/Merge7z465.pch"\r
++ AssemblerListingLocation=".\..\BuildTmp\Merge7z465___Win32_Debug/"\r
++ ObjectFile=".\..\BuildTmp\Merge7z465___Win32_Debug/"\r
++ ProgramDataBaseFileName=".\..\BuildTmp\Merge7z465___Win32_Debug/"\r
++ BrowseInformation="1"\r
++ WarningLevel="3"\r
++ SuppressStartupBanner="true"\r
++ DebugInformationFormat="1"\r
++ />\r
++ <Tool\r
++ Name="VCManagedResourceCompilerTool"\r
++ />\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions="_DEBUG"\r
++ Culture="1031"\r
++ />\r
++ <Tool\r
++ Name="VCPreLinkEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCLinkerTool"\r
++ AdditionalDependencies="shlwapi.lib odbc32.lib odbccp32.lib"\r
++ OutputFile="../../Build/X64/MergeDebug/Merge7z465.dll"\r
++ LinkIncremental="1"\r
++ SuppressStartupBanner="true"\r
++ ModuleDefinitionFile=".\Merge7z.def"\r
++ GenerateDebugInformation="true"\r
++ ProgramDatabaseFile="../../Build/MergeDebug/Merge7z465.pdb"\r
++ RandomizedBaseAddress="1"\r
++ DataExecutionPrevention="0"\r
++ ImportLibrary=".\..\BuildTmp\Merge7z465___Win32_Debug/Merge7z465.lib"\r
++ TargetMachine="17"\r
++ />\r
++ <Tool\r
++ Name="VCALinkTool"\r
++ />\r
++ <Tool\r
++ Name="VCManifestTool"\r
++ />\r
++ <Tool\r
++ Name="VCXDCMakeTool"\r
++ />\r
++ <Tool\r
++ Name="VCBscMakeTool"\r
++ SuppressStartupBanner="true"\r
++ OutputFile=".\..\BuildTmp\Merge7z465___Win32_Debug/Merge7z465.bsc"\r
++ />\r
++ <Tool\r
++ Name="VCFxCopTool"\r
++ />\r
++ <Tool\r
++ Name="VCAppVerifierTool"\r
++ />\r
++ <Tool\r
++ Name="VCPostBuildEventTool"\r
++ />\r
++ </Configuration>\r
++ <Configuration\r
++ Name="UnicodeDebug|Win32"\r
++ OutputDirectory=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug"\r
++ IntermediateDirectory=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug"\r
++ ConfigurationType="2"\r
++ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
++ UseOfMFC="0"\r
++ ATLMinimizesCRunTimeLibraryUsage="false"\r
++ CharacterSet="1"\r
++ >\r
++ <Tool\r
++ Name="VCPreBuildEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCCustomBuildTool"\r
++ />\r
++ <Tool\r
++ Name="VCXMLDataGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCWebServiceProxyGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCMIDLTool"\r
++ PreprocessorDefinitions="_DEBUG"\r
++ MkTypLibCompatible="true"\r
++ SuppressStartupBanner="true"\r
++ TargetEnvironment="1"\r
++ TypeLibraryName=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/Merge7z465.tlb"\r
++ HeaderFileName=""\r
++ />\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ Optimization="0"\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465,$(SRC7Z)\7z465\CPP"\r
++ PreprocessorDefinitions="Merge7z465_EXPORTS;WIN32;_DEBUG;_WINDOWS;_USRDLL;UNICODE"\r
++ BasicRuntimeChecks="3"\r
++ RuntimeLibrary="1"\r
++ UsePrecompiledHeader="2"\r
++ PrecompiledHeaderThrough="stdafx.h"\r
++ PrecompiledHeaderFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/Merge7z465.pch"\r
++ AssemblerListingLocation=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/"\r
++ ObjectFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/"\r
++ ProgramDataBaseFileName=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/"\r
++ BrowseInformation="1"\r
++ WarningLevel="3"\r
++ SuppressStartupBanner="true"\r
++ DebugInformationFormat="1"\r
++ />\r
++ <Tool\r
++ Name="VCManagedResourceCompilerTool"\r
++ />\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions="_DEBUG"\r
++ Culture="1031"\r
++ />\r
++ <Tool\r
++ Name="VCPreLinkEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCLinkerTool"\r
++ AdditionalDependencies="shlwapi.lib odbc32.lib odbccp32.lib"\r
++ OutputFile="../../Build/MergeUnicodeDebug/Merge7z465U.dll"\r
++ LinkIncremental="1"\r
++ SuppressStartupBanner="true"\r
++ ModuleDefinitionFile=".\Merge7z.def"\r
++ GenerateDebugInformation="true"\r
++ ProgramDatabaseFile="../../Build/MergeUnicodeDebug/Merge7z465U.pdb"\r
++ RandomizedBaseAddress="1"\r
++ DataExecutionPrevention="0"\r
++ ImportLibrary=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/Merge7z465U.lib"\r
++ TargetMachine="1"\r
++ />\r
++ <Tool\r
++ Name="VCALinkTool"\r
++ />\r
++ <Tool\r
++ Name="VCManifestTool"\r
++ />\r
++ <Tool\r
++ Name="VCXDCMakeTool"\r
++ />\r
++ <Tool\r
++ Name="VCBscMakeTool"\r
++ SuppressStartupBanner="true"\r
++ OutputFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/Merge7z465.bsc"\r
++ />\r
++ <Tool\r
++ Name="VCFxCopTool"\r
++ />\r
++ <Tool\r
++ Name="VCAppVerifierTool"\r
++ />\r
++ <Tool\r
++ Name="VCPostBuildEventTool"\r
++ />\r
++ </Configuration>\r
++ <Configuration\r
++ Name="UnicodeDebug|x64"\r
++ OutputDirectory="$(PlatformName)\$(ConfigurationName)"\r
++ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"\r
++ ConfigurationType="2"\r
++ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"\r
++ UseOfMFC="0"\r
++ ATLMinimizesCRunTimeLibraryUsage="false"\r
++ CharacterSet="1"\r
++ >\r
++ <Tool\r
++ Name="VCPreBuildEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCCustomBuildTool"\r
++ />\r
++ <Tool\r
++ Name="VCXMLDataGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCWebServiceProxyGeneratorTool"\r
++ />\r
++ <Tool\r
++ Name="VCMIDLTool"\r
++ PreprocessorDefinitions="_DEBUG"\r
++ MkTypLibCompatible="true"\r
++ SuppressStartupBanner="true"\r
++ TargetEnvironment="3"\r
++ TypeLibraryName=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/Merge7z465.tlb"\r
++ HeaderFileName=""\r
++ />\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ Optimization="0"\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465,$(SRC7Z)\7z465\CPP"\r
++ PreprocessorDefinitions="Merge7z465_EXPORTS;WIN32;_DEBUG;_WINDOWS;_USRDLL;UNICODE"\r
++ BasicRuntimeChecks="3"\r
++ RuntimeLibrary="1"\r
++ UsePrecompiledHeader="2"\r
++ PrecompiledHeaderThrough="stdafx.h"\r
++ PrecompiledHeaderFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/Merge7z465.pch"\r
++ AssemblerListingLocation=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/"\r
++ ObjectFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/"\r
++ ProgramDataBaseFileName=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/"\r
++ BrowseInformation="1"\r
++ WarningLevel="3"\r
++ SuppressStartupBanner="true"\r
++ DebugInformationFormat="1"\r
++ />\r
++ <Tool\r
++ Name="VCManagedResourceCompilerTool"\r
++ />\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions="_DEBUG"\r
++ Culture="1031"\r
++ />\r
++ <Tool\r
++ Name="VCPreLinkEventTool"\r
++ />\r
++ <Tool\r
++ Name="VCLinkerTool"\r
++ AdditionalDependencies="shlwapi.lib odbc32.lib odbccp32.lib"\r
++ OutputFile="../../Build/X64/MergeUnicodeDebug/Merge7z465U.dll"\r
++ LinkIncremental="1"\r
++ SuppressStartupBanner="true"\r
++ ModuleDefinitionFile=".\Merge7z.def"\r
++ GenerateDebugInformation="true"\r
++ ProgramDatabaseFile="../../Build/MergeUnicodeDebug/Merge7z465U.pdb"\r
++ RandomizedBaseAddress="1"\r
++ DataExecutionPrevention="0"\r
++ ImportLibrary=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/Merge7z465U.lib"\r
++ TargetMachine="17"\r
++ />\r
++ <Tool\r
++ Name="VCALinkTool"\r
++ />\r
++ <Tool\r
++ Name="VCManifestTool"\r
++ />\r
++ <Tool\r
++ Name="VCXDCMakeTool"\r
++ />\r
++ <Tool\r
++ Name="VCBscMakeTool"\r
++ SuppressStartupBanner="true"\r
++ OutputFile=".\..\BuildTmp\Merge7z465___Win32_UnicodeDebug/Merge7z465.bsc"\r
++ />\r
++ <Tool\r
++ Name="VCFxCopTool"\r
++ />\r
++ <Tool\r
++ Name="VCAppVerifierTool"\r
++ />\r
++ <Tool\r
++ Name="VCPostBuildEventTool"\r
++ />\r
++ </Configuration>\r
++ </Configurations>\r
++ <References>\r
++ </References>\r
++ <Files>\r
++ <Filter\r
++ Name="Quellcodedateien"\r
++ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"\r
++ >\r
++ <File\r
++ RelativePath="Merge7z.def"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="Merge7z.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath=".\Merge7z459.cpp"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="Merge7zCommon.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="Merge7zCommon.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="StdAfx.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="1"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="1"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="1"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="1"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="1"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="1"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="1"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="1"\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="StdAfx.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="tools.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="tools.h"\r
++ >\r
++ </File>\r
++ </Filter>\r
++ <Filter\r
++ Name="Ressourcendateien"\r
++ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"\r
++ >\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui\FM.ico"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\GUI\resource.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui\resource.rc"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions=""\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions=""\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions=""\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions=""\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions=""\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions=""\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions=""\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCResourceCompilerTool"\r
++ PreprocessorDefinitions=""\r
++ AdditionalIncludeDirectories="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui"\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ </Filter>\r
++ <Filter\r
++ Name="Windows"\r
++ >\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\DLL.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\DLL.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\Error.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\Error.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\FileIO.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\FileIO.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\PropVariant.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\PropVariant.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\PropVariantConversions.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\PropVariantConversions.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\ResourceString.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\ResourceString.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\Synchronization.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\Synchronization.h"\r
++ >\r
++ </File>\r
++ </Filter>\r
++ <Filter\r
++ Name="Common"\r
++ >\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\IntToString.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\IntToString.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\Lang.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\Lang.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\MyString.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\MyString.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\StdInStream.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\StdInStream.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\StringConvert.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\StringConvert.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\StringToInt.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\StringToInt.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\TextConfig.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\TextConfig.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\UTFConvert.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\UTFConvert.h"\r
++ >\r
++ </File>\r
++ </Filter>\r
++ <Filter\r
++ Name="7zip Common"\r
++ >\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Ui\Common\ArchiveExtractCallback.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\Common\ArchiveExtractCallback.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\Common\ArchiveOpenCallback.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\Common\ArchiveOpenCallback.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\Common\DefaultName.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\Common\DefaultName.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\Control\Dialog.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\Control\Dialog.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="..\..\..\..\..\7-zip\7z465\CPP\7zip\UI\Common\EnumDirItems.cpp"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="..\..\..\..\..\7-zip\7z465\CPP\7zip\UI\Common\EnumDirItems.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\ExtractCallback.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\ExtractCallback.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Common\FileStreams.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Common\FileStreams.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\FormatUtils.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\FormatUtils.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\LangUtils.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\LangUtils.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="..\..\..\..\..\7-zip\7z465\CPP\Windows\Control\ListView.cpp"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="..\..\..\..\..\7-zip\7z465\CPP\Windows\Control\ListView.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="..\..\..\..\..\7-zip\7z465\CPP\7zip\UI\Common\LoadCodecs.cpp"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="..\..\..\..\..\7-zip\7z465\CPP\7zip\UI\Common\LoadCodecs.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\MessagesDialog.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\MessagesDialog.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\Common\OpenArchive.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\Common\OpenArchive.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\OpenCallback.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\OpenCallback.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\OverwriteDialog.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\OverwriteDialog.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\PasswordDialog.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\PasswordDialog.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\ProgramLocation.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\ProgramLocation.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\FileManager\ProgressDialog2.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Common\ProgressUtils.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Common\ProgressUtils.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Common\StreamUtils.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Common\StreamUtils.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\Common\UpdateCallback.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\Common\UpdateCallback.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\GUI\UpdateCallbackGUI.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\GUI\UpdateCallbackGUI.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\Window.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\Window.h"\r
++ >\r
++ </File>\r
++ </Filter>\r
++ <Filter\r
++ Name="Extract"\r
++ >\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Ui\Common\ExtractingFilePath.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\UI\Common\ExtractingFilePath.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\FileDir.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\FileDir.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\FileFind.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\FileFind.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\FileName.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Windows\FileName.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Common\FilePathAutoRename.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Common\FilePathAutoRename.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\MyVector.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\MyVector.h"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\Wildcard.cpp"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\Common\Wildcard.h"\r
++ >\r
++ </File>\r
++ </Filter>\r
++ <Filter\r
++ Name="C"\r
++ >\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\C\Threads.c"\r
++ >\r
++ <FileConfiguration\r
++ Name="Release|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="0"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Release|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="0"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="0"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeRelease|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="0"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="0"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="Debug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="0"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|Win32"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="0"\r
++ />\r
++ </FileConfiguration>\r
++ <FileConfiguration\r
++ Name="UnicodeDebug|x64"\r
++ >\r
++ <Tool\r
++ Name="VCCLCompilerTool"\r
++ AdditionalIncludeDirectories=""\r
++ PreprocessorDefinitions=""\r
++ UsePrecompiledHeader="0"\r
++ />\r
++ </FileConfiguration>\r
++ </File>\r
++ </Filter>\r
++ <Filter\r
++ Name="Header-Dateien"\r
++ Filter="h;hpp;hxx;hm;inl"\r
++ >\r
++ </Filter>\r
++ <File\r
++ RelativePath="$(SRC7Z)\7z465\CPP\7zip\Ui\Gui\7zG.exe.manifest"\r
++ >\r
++ </File>\r
++ <File\r
++ RelativePath="revision.txt"\r
++ >\r
++ </File>\r
++ </Files>\r
++ <Globals>\r
++ </Globals>\r
++</VisualStudioProject>\r
--/* Merge7zCommon.cpp: Provide a handy C++ interface to access 7Zip services
-- * Copyright (c) 2003 Jochen Tucht
-- *
-- * License: This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2 of the License, or
-- * (at your option) any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-- *
-- * Remarks: This file contains the presumably version-independent parts of
-- * Merge7z code. Version specific code resides in Merge7zXXX.cpp.
--
--Please mind 2. a) of the GNU General Public License, and log your changes below.
--
--DATE: BY: DESCRIPTION:
--========== ================== ================================================
--2003-12-09 Jochen Tucht Created
--2003-12-16 Jochen Tucht GuessFormat() now checks for directory
--2004-03-18 Jochen Tucht Experimental DllGetVersion() based on rcsid.
--2004-10-10 Jochen Tucht DllGetVersion() based on new REVISION.TXT
--2005-01-15 Jochen Tucht Changed as explained in revision.txt
--2005-02-26 Jochen Tucht Changed as explained in revision.txt
--2005-03-19 Jochen Tucht Changed as explained in revision.txt
--2005-06-22 Jochen Tucht Treat .ear and .war like .zip
--2005-07-05 Jochen Tucht Add missing .tbz2
--2005-08-20 Jochen Tucht Option to guess archive format by signature.
-- EnumerateDirectory() in EnumDirItems.cpp has
-- somewhat changed so I can no longer use it.
--2005-10-02 Jochen Tucht Add CHM format
--2005-11-19 Jochen Tucht Minor changes to build against 7z430 beta
--2006-06-28 Jochen Neubeck Add ISO format (introduced with 7z436 beta)
-- Add NSIS format (introduced with 7z440 beta)
--2007-01-27 Jochen Neubeck Unassociate .exe filename extension from NSIS
-- format due to undesired side effect on WinMerge
--2007-04-20 Jochen Neubeck Cope with 7z445's revised plugin system
--2007-07-13 Jochen Neubeck Pass MSI files to CAB handler
--2007-08-25 Jochen Neubeck Add COM format (introduced with 7z452 beta)
-- This format also handles MSI files, which are
-- therefore no longer passed to the CAB handler.
--2007-09-01 Jochen Neubeck No longer #include "LangUtils.h", which has
-- moved to a different location as of 7z453 beta.
--2007-12-22 Jochen Neubeck Unassociate .001 filename extension
-2008-08-03 Jochen Neubeck Add LZMA format (introduced with 7z458 beta)
-2010-04-24 Jochen Neubeck New formats introduced with 7z459 beta:
- XAR, MUB, HFS, DMG, ELF (not sure if they work)
--*/
--
--#include "stdafx.h"
--#include "Merge7zCommon.h"
--
--void ReloadLang(); //Implemented in /*/FileManager/LangUtils.cpp
--
--using namespace NWindows;
--using namespace NFile;
--using namespace NName;
--
--void AddDirFileInfo(
-- const UString &prefix,
-- const UString &fullPathName,
-- NFind::CFileInfoW &fileInfo,
- CObjectVector<CDirItem> &dirItems)
- CDirItems &dirItems)
--{
-- CDirItem item;
- item.Attributes = fileInfo.Attributes;
- item.Attrib = fileInfo.Attrib;
-- item.Size = fileInfo.Size;
- item.CreationTime = fileInfo.CreationTime;
- item.LastAccessTime = fileInfo.LastAccessTime;
- item.LastWriteTime = fileInfo.LastWriteTime;
- item.Name = prefix + fileInfo.Name;
- item.FullPath = fullPathName;
- dirItems.Add(item);
- item.CTime = fileInfo.CTime;
- item.ATime = fileInfo.ATime;
- item.MTime = fileInfo.MTime;
- //UString
- item.LogParent = dirItems.AddPrefix(-1, -1, prefix + fileInfo.Name);
- item.PhyParent = dirItems.AddPrefix(-1, -1, fullPathName);
- //item.Name = prefix + fileInfo.Name;
- //item.FullPath = fullPathName;
- dirItems.Items.Add(item);
--}
--
--static void EnumerateDirectory(
-- const UString &baseFolderPrefix,
-- const UString &directory,
-- const UString &prefix,
- CObjectVector<CDirItem> &dirItems)
- CDirItems &dirItems)
--{
-- NFind::CEnumeratorW enumerator(baseFolderPrefix + directory + wchar_t(kAnyStringWildcard));
-- NFind::CFileInfoW fileInfo;
-- while (enumerator.Next(fileInfo))
-- {
-- AddDirFileInfo(prefix, directory + fileInfo.Name, fileInfo, dirItems);
- if (fileInfo.IsDirectory())
- if (fileInfo.IsDir())
-- {
-- EnumerateDirectory(baseFolderPrefix, directory + fileInfo.Name + wchar_t(kDirDelimiter),
-- prefix + fileInfo.Name + wchar_t(kDirDelimiter), dirItems);
-- }
-- }
--}
--
--HINSTANCE g_hInstance;
--#ifndef _UNICODE
--bool g_IsNT = false;
--static bool IsItWindowsNT()
--{
-- OSVERSIONINFO versionInfo;
-- versionInfo.dwOSVersionInfoSize = sizeof(versionInfo);
-- if (!::GetVersionEx(&versionInfo))
-- return false;
-- return (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT);
--}
--#endif
--
--DWORD g_dwFlags;
--CHAR g_cPath7z[MAX_PATH];
--
--/**
-- * @brief Dll entry point
-- */
--BOOL APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)
--{
-- if (dwReason == DLL_PROCESS_ATTACH)
-- {
-- g_hInstance = hInstance;
--# ifndef _UNICODE
-- g_IsNT = IsItWindowsNT();
--# endif
-- }
-- return TRUE;
--}
--
--/**
-- * @brief Load a dll and import a number of functions.
-- */
--static HMODULE DllProxyHelper(LPCSTR *proxy, ...)
--{
-- HMODULE handle = NULL;
-- if (LPCSTR name = *proxy)
-- {
-- if (proxy[1] && proxy[1] != name)
-- {
-- char path[MAX_PATH];
-- FormatMessageA
-- (
-- FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ARGUMENT_ARRAY,
-- name,
-- 0,
-- 0,
-- path,
-- sizeof path,
-- (va_list *)(&proxy + 1)
-- );
-- handle = LoadLibraryA(path);
-- if (handle)
-- {
- LPCSTR *export = proxy;
- LPCSTR *p = proxy;
-- *proxy = NULL;
- while ((name = *++export) != NULL)
- while ((name = *++p) != NULL)
-- {
- *export = (LPCSTR)GetProcAddress(handle, name);
- if (*export == NULL)
- *p = (LPCSTR)GetProcAddress(handle, name);
- if (*p == NULL)
-- {
-- *proxy = proxy[1] = name;
- export = proxy + 2;
- p = proxy + 2;
-- break;
-- }
-- }
- *export = (LPCSTR)handle;
- *p = (LPCSTR)handle;
-- }
-- }
-- if ((name = *proxy) != NULL)
-- {
-- DWORD dwError = ERROR_MOD_NOT_FOUND;
-- HMODULE hContext = NULL;
-- if (proxy[1] == name)
-- {
-- dwError = ERROR_PROC_NOT_FOUND;
-- hContext = (HMODULE)proxy[2];
-- }
-- Complain(dwError, GetSystemString(name), hContext);
-- }
-- }
-- return handle;
--}
--
--/**
-- * @brief Ask archiver dll for an interface of given class.
-- */
--HRESULT Format7zDLL::Interface::CreateObject(const GUID *interfaceID, void **outObject)
--{
-- PROPVARIANT value;
-- HRESULT result = proxy->GetHandlerProperty(NArchive::kClassID, &value);
-- if SUCCEEDED(result)
-- {
-- if (value.vt != VT_BSTR || SysStringByteLen(value.bstrVal) != sizeof(GUID))
-- {
-- result = DISP_E_TYPEMISMATCH;
-- }
-- else
-- {
-- result = proxy->CreateObject((const CLSID *)value.bstrVal, interfaceID, outObject);
-- }
-- VariantClear((VARIANT *)&value);
-- }
-- return result;
--}
--
--/**
-- * @brief Ask archiver dll for an instance of IInArchive.
-- */
--IInArchive *Format7zDLL::Interface::GetInArchive()
--{
-- void *pv;
-- if COMPLAIN(CreateObject(&IID_IInArchive, &pv) != S_OK)
-- {
-- Complain(RPC_S_INTERFACE_NOT_FOUND, _T("IInArchive"), proxy.handle);
-- }
-- return static_cast<IInArchive *>(pv);
--}
--
--/**
-- * @brief Ask archiver dll for an instance of IOutArchive.
-- */
--IOutArchive *Format7zDLL::Interface::GetOutArchive()
--{
-- void *pv;
-- if COMPLAIN(CreateObject(&IID_IOutArchive, &pv) != S_OK)
-- {
-- Complain(RPC_S_INTERFACE_NOT_FOUND, _T("IOutArchive"), proxy.handle);
-- }
-- return static_cast<IOutArchive *>(pv);
--}
--
--/**
-- * @brief Extraction method accessible from outside
-- */
--HRESULT Format7zDLL::Interface::DeCompressArchive(HWND hwndParent, LPCTSTR path, LPCTSTR folder)
--{
-- HRESULT result = E_FAIL;
-- if (Merge7z::Format::Inspector *inspector = Open(hwndParent, path))
-- {
-- if (CMyComBSTR(GetHandlerAddExtension(hwndParent)).Length())
-- {
-- //Most handlers seem to be happy with missing index array, but rpm
-- //handler doesn't know how to "extract all" and needs index array
-- //even for the one and only file inside (which is .cpio.gz).
-- static const UINT32 indices[1] = {0};
-- result = inspector->Extract(hwndParent, folder, indices, 1);
-- }
-- else
-- {
-- result = inspector->Extract(hwndParent, folder);
-- }
-- inspector->Free();
-- }
-- return result;
--}
--
--/**
-- * @brief Open archive for inspection.
-- */
--Merge7z::Format::Inspector *Format7zDLL::Interface::Open(HWND hwndParent, LPCTSTR path)
--{
-- Inspector *inspector = new Inspector(this, path);
-- try
-- {
-- inspector->Init(hwndParent);
-- }
-- catch (Complain *complain)
-- {
-- complain->Alert(hwndParent);
-- inspector->Free();
-- inspector = 0;
-- }
-- return inspector;
--}
--
--/**
-- * @brief Prepare inspection interface for iteration.
-- */
--UINT32 Format7zDLL::Interface::Inspector::Open()
--{
-- UINT32 numItems = 0;
-- archive->GetNumberOfItems(&numItems);
-- return numItems;
--}
--
--/**
-- * @brief free inspection interface.
-- */
--void Format7zDLL::Interface::Inspector::Free()
--{
-- Release(archive);
-- Release(static_cast<IInStream *>(file));
-- Release(callback);
-- delete this;
--}
--
--HRESULT Format7zDLL::Interface::Inspector::GetProperty(UINT32 index, PROPID propID, PROPVARIANT *value, VARTYPE vt)
--{
-- VariantInit((VARIANT *)value);
-- HRESULT result = archive->GetProperty(index, propID, value);
-- if (SUCCEEDED(result) && value->vt != vt)
-- {
-- VariantClear((VARIANT *)value);
-- result = DISP_E_TYPEMISMATCH;
-- }
-- return result;
--}
--
--BSTR Format7zDLL::Interface::Inspector::GetPath(UINT32 index)
--{
-- PROPVARIANT value;
-- return SUCCEEDED(GetProperty(index, kpidPath, &value, VT_BSTR)) ? value.bstrVal : 0;
--}
--
--BSTR Format7zDLL::Interface::Inspector::GetName(UINT32 index)
--{
-- PROPVARIANT value;
-- return SUCCEEDED(GetProperty(index, kpidName, &value, VT_BSTR)) ? value.bstrVal : 0;
--}
--
--BSTR Format7zDLL::Interface::Inspector::GetExtension(UINT32 index)
--{
-- PROPVARIANT value;
-- return SUCCEEDED(GetProperty(index, kpidExtension, &value, VT_BSTR)) ? value.bstrVal : 0;
--}
--
--VARIANT_BOOL Format7zDLL::Interface::Inspector::IsFolder(UINT32 index)
--{
-- PROPVARIANT value;
- return SUCCEEDED(GetProperty(index, kpidIsFolder, &value, VT_BOOL)) ? value.boolVal : 0;
- return SUCCEEDED(GetProperty(index, kpidIsDir, &value, VT_BOOL)) ? value.boolVal : 0;
--}
--
--FILETIME Format7zDLL::Interface::Inspector::LastWriteTime(UINT32 index)
--{
-- static const FILETIME invalid = { 0, 0 };
-- PROPVARIANT value;
- return SUCCEEDED(GetProperty(index, kpidLastWriteTime, &value, VT_FILETIME)) ? value.filetime : invalid;
- return SUCCEEDED(GetProperty(index, kpidMTime, &value, VT_FILETIME)) ? value.filetime : invalid;
--}
--
--void Format7zDLL::Interface::GetDefaultName(HWND hwndParent, UString &ustrDefaultName)
--{
-- int dot = ustrDefaultName.ReverseFind('.');
-- int slash = ustrDefaultName.ReverseFind('\\');
-- if (dot > slash)
-- {
-- LPCWSTR pchExtension = ustrDefaultName;
-- pchExtension += dot + 1;
-- static const OLECHAR wBlank[] = L" ";
-- CMyComBSTR bstrHandlerExtension = GetHandlerExtension(hwndParent);
-- CMyComBSTR bstrHandlerAddExtension = GetHandlerAddExtension(hwndParent);
-- LPWSTR pchHandlerExtension = bstrHandlerExtension.m_str;
-- LPWSTR pchHandlerAddExtension = bstrHandlerAddExtension.m_str;
-- while (int cchHandlerAddExtension = StrCSpnW(pchHandlerAddExtension += StrSpnW(pchHandlerAddExtension, wBlank), wBlank))
-- {
-- int cchHandlerExtension = StrCSpnW(pchHandlerExtension += StrSpnW(pchHandlerExtension, wBlank), wBlank);
-- if (StrIsIntlEqualW(FALSE, pchExtension, pchHandlerExtension, cchHandlerExtension) && pchExtension[cchHandlerExtension] == 0)
-- {
-- pchHandlerAddExtension[cchHandlerAddExtension] = '\0'; // will also stop iteration
-- ustrDefaultName.ReleaseBuffer(dot);
-- if (*pchHandlerAddExtension == '.') // consider != '*'
-- {
-- ustrDefaultName += pchHandlerAddExtension;
-- dot += cchHandlerAddExtension; // make ReleaseBuffer(dot) below a NOP
-- }
-- }
-- pchHandlerExtension += cchHandlerExtension;
-- pchHandlerAddExtension += cchHandlerAddExtension;
-- }
-- ustrDefaultName.ReleaseBuffer(dot);
-- ustrDefaultName.Delete(0, slash + 1);
-- }
-- else
-- {
-- ustrDefaultName = L"noname";
-- }
--}
--
--BSTR Format7zDLL::Interface::GetDefaultName(HWND hwndParent, LPCTSTR path)
--{
-- UString ustrDefaultName = GetUnicodeString(path);
-- GetDefaultName(hwndParent, ustrDefaultName);
-- return SysAllocString(ustrDefaultName);
--}
--
--BSTR Format7zDLL::Interface::Inspector::GetDefaultName()
--{
-- //UString ustrDefaultName = GetUnicodeString(path);
-- return SysAllocString(ustrDefaultName);
--}
--
--/**
-- * @brief Open archive for update.
-- */
--Merge7z::Format::Updater *Format7zDLL::Interface::Update(HWND hwndParent, LPCTSTR path)
--{
-- Updater *updater = new Updater(this, path);
-- try
-- {
-- updater->Init(hwndParent);
-- }
-- catch (Complain *complain)
-- {
-- complain->Alert(hwndParent);
-- updater->Free();
-- updater = 0;
-- }
-- return updater;
--}
--
--/**
-- * @brief Add item to updater
-- */
--UINT32 Format7zDLL::Interface::Updater::Add(Merge7z::DirItemEnumerator::Item &etorItem)
--{
-- // fill in the default values from the enumerator
-- CDirItem item;
- UString Name = GetUnicodeString(etorItem.Name);
- UString FullPath = GetUnicodeString(etorItem.FullPath);
-- if (etorItem.Mask.Item & etorItem.Mask.Name)
- item.Name = GetUnicodeString(etorItem.Name);
- //item.Name = GetUnicodeString(etorItem.Name);
- item.LogParent = dirItems.AddPrefix(-1, -1, Name);
-- if (etorItem.Mask.Item & etorItem.Mask.FullPath)
- item.FullPath = GetUnicodeString(etorItem.FullPath);
- //item.FullPath = GetUnicodeString(etorItem.FullPath);
- item.PhyParent = dirItems.AddPrefix(-1, -1, FullPath);
-- if (etorItem.Mask.Item & etorItem.Mask.Attributes)
- item.Attributes = etorItem.Attributes;
- item.Attrib = etorItem.Attributes;
-- if (etorItem.Mask.Item & etorItem.Mask.Size)
-- item.Size = etorItem.Size;
-- if (etorItem.Mask.Item & etorItem.Mask.CreationTime)
- item.CreationTime = etorItem.CreationTime;
- item.CTime = etorItem.CreationTime;
-- if (etorItem.Mask.Item & etorItem.Mask.LastAccessTime)
- item.LastAccessTime = etorItem.LastAccessTime;
- item.ATime = etorItem.LastAccessTime;
-- if (etorItem.Mask.Item & etorItem.Mask.LastWriteTime)
- item.LastWriteTime = etorItem.LastWriteTime;
- item.MTime = etorItem.LastWriteTime;
-- if (etorItem.Mask.Item && (etorItem.Mask.Item & (etorItem.Mask.NeedFindFile|etorItem.Mask.CheckIfPresent)) != etorItem.Mask.NeedFindFile)
-- {
-- // Check the info from the disk
-- NFile::NFind::CFileInfoW fileInfo;
- if (NFile::NFind::FindFile(item.FullPath, fileInfo))
- if (NFile::NFind::CFindFile().FindFirst(FullPath, fileInfo))
-- {
-- if (!(etorItem.Mask.Item & etorItem.Mask.Name))
-- item.Name = fileInfo.Name;
-- if (!(etorItem.Mask.Item & etorItem.Mask.Attributes))
- item.Attributes = fileInfo.Attributes;
- item.Attrib = fileInfo.Attrib;
-- if (!(etorItem.Mask.Item & etorItem.Mask.Size))
-- item.Size = fileInfo.Size;
-- if (!(etorItem.Mask.Item & etorItem.Mask.CreationTime))
- item.CreationTime = fileInfo.CreationTime;
- item.CTime = fileInfo.CTime;
-- if (!(etorItem.Mask.Item & etorItem.Mask.LastAccessTime))
- item.LastAccessTime = fileInfo.LastAccessTime;
- item.ATime = fileInfo.ATime;
-- if (!(etorItem.Mask.Item & etorItem.Mask.LastWriteTime))
- item.LastWriteTime = fileInfo.LastWriteTime;
- item.MTime = fileInfo.MTime;
-- }
-- else
-- {
-- // file not valid, forget it
-- etorItem.Mask.Item = 0;
-- }
-- }
-- if (etorItem.Mask.Item)
-- {
-- // No check from disk, simply use info from enumerators (risky)
-- // Why risky? This is not at all obvious.
- dirItems.Add(item);
- dirItems.Items.Add(item);
-- // Recurse into directories (call a function of 7zip)
- if ((etorItem.Mask.Item & etorItem.Mask.Recurse) && (item.Attributes & FILE_ATTRIBUTE_DIRECTORY))
- if ((etorItem.Mask.Item & etorItem.Mask.Recurse) && (item.Attrib & FILE_ATTRIBUTE_DIRECTORY))
-- {
- EnumerateDirectory(UString(), item.FullPath + L'\\',
- item.Name + L'\\', dirItems);
- EnumerateDirectory(UString(), FullPath + L'\\',
- Name + L'\\', dirItems);
-- }
-- }
-- return etorItem.Mask.Item;
--}
--
--/**
-- * @brief free updater interface.
-- */
--void Format7zDLL::Interface::Updater::Free()
--{
-- Release(outArchive);
-- Release(static_cast<IOutStream *>(file));
-- delete this;
--}
--
--/**
-- * @brief Compression method accessible from outside
-- *
-- * @note See CAgent::DoOperation (in 7zip source) for model
-- */
--HRESULT Format7zDLL::Interface::CompressArchive(HWND hwndParent, LPCTSTR path, Merge7z::DirItemEnumerator *etor)
--{
-- HRESULT result = E_FAIL;
-- if (Merge7z::Format::Updater *updater = Update(hwndParent, path))
-- {
-- UINT count = etor->Open();
-- while (count--)
-- {
-- Merge7z::DirItemEnumerator::Item etorItem;
-- etorItem.Mask.Item = 0;
-- Merge7z::Envelope *envelope = etor->Enum(etorItem);
- updater->Add(etorItem);
- if (etorItem.Mask.Item != 0)
- {
- updater->Add(etorItem);
- }
-- if (envelope)
-- {
-- envelope->Free();
-- }
-- }
-- result = updater->Commit(hwndParent);
-- updater->Free();
-- }
-- return result;
--}
--
--/**
-- * @brief get handler property identified by given propID
-- */
--HRESULT Format7zDLL::Interface::GetHandlerProperty(HWND hwndParent, PROPID propID, PROPVARIANT *value, VARTYPE vt)
--{
-- VariantInit((VARIANT *)value);
-- HRESULT result = DISP_E_EXCEPTION;
-- try
-- {
-- result = proxy->GetHandlerProperty(propID, value);
-- if (SUCCEEDED(result) && value->vt != vt)
-- {
-- VariantClear((VARIANT *)value);
-- result = DISP_E_TYPEMISMATCH;
-- }
-- }
-- catch (Complain *complain)
-- {
-- complain->Alert(hwndParent);
-- }
-- return result;
--}
--
--/**
-- * @brief get Name handler property
-- */
--BSTR Format7zDLL::Interface::GetHandlerName(HWND hwndParent)
--{
-- PROPVARIANT value;
-- return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kName, &value, VT_BSTR)) ? value.bstrVal : 0;
--}
--
--/**
-- * @brief get ClassID handler property
-- */
--BSTR Format7zDLL::Interface::GetHandlerClassID(HWND hwndParent)
--{
-- PROPVARIANT value;
-- return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kClassID, &value, VT_BSTR)) ? value.bstrVal : 0;
--}
--
--/**
-- * @brief get Extension handler property
-- */
--BSTR Format7zDLL::Interface::GetHandlerExtension(HWND hwndParent)
--{
-- PROPVARIANT value;
-- return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kExtension, &value, VT_BSTR)) ? value.bstrVal : 0;
--}
--
--/**
-- * @brief get AddExtension handler property
-- */
--BSTR Format7zDLL::Interface::GetHandlerAddExtension(HWND hwndParent)
--{
-- PROPVARIANT value;
-- return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kAddExtension, &value, VT_BSTR)) ? value.bstrVal : 0;
--}
--
--/**
-- * @brief get Update handler property
-- */
--VARIANT_BOOL Format7zDLL::Interface::GetHandlerUpdate(HWND hwndParent)
--{
-- PROPVARIANT value;
-- return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kUpdate, &value, VT_BOOL)) ? value.boolVal : 0;
--}
--
--/**
-- * @brief get KeepName handler property
-- */
--VARIANT_BOOL Format7zDLL::Interface::GetHandlerKeepName(HWND hwndParent)
--{
-- PROPVARIANT value;
-- return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kKeepName, &value, VT_BOOL)) ? value.boolVal : 0;
--}
--
--/**
-- * @brief Initialize the library.
-- */
--int Merge7z::Initialize(DWORD dwFlags)
--{
-- g_dwFlags = dwFlags;
-- if (dwFlags & Initialize::Local7z)
-- {
-- GetModuleFileNameA(g_hInstance, g_cPath7z, sizeof g_cPath7z);
-- PathRemoveFileSpecA(g_cPath7z);
-- }
-- else
-- {
-- DWORD type = 0;
-- DWORD size = sizeof g_cPath7z;
-- SHGetValueA(HKEY_LOCAL_MACHINE, "Software\\7-Zip", "Path", &type, g_cPath7z, &size);
-- }
-- PathAddBackslashA(g_cPath7z);
-- if (WORD wLangID = HIWORD(dwFlags))
-- {
-- LoadLang(MAKEINTATOM(wLangID));
-- }
-- return 0;
--}
--
--Format7zDLL::Interface *Format7zDLL::Interface::head = NULL;
--
--/**
-- * @brief Access archiver dll functions through proxy.
- */
- #if MY_VER_MAJOR * 100 + MY_VER_MINOR < 445
-
- /**
- * @brief 7-Zip 4.15+: IsArchiveItemFolder(), needed by CArchiveExtractCallback,
- * used to reside in OpenArchive.cpp, which has been removed from Merge7z in an
- * attempt to reduce dependencies (actually got rid of four cpp files).
- * 7-Zip 4.45+: OpenArchive.cpp included again - no more secondary dependencies.
-- */
- static HRESULT IsArchiveItemProp(IInArchive *archive, UINT32 index, PROPID propID, bool &result)
- {
- NCOM::CPropVariant prop;
- RINOK(archive->GetProperty(index, propID, &prop));
- if(prop.vt == VT_BOOL)
- result = VARIANT_BOOLToBool(prop.boolVal);
- else if (prop.vt == VT_EMPTY)
- result = false;
- else
- return E_FAIL;
- return S_OK;
- }
-
- HRESULT IsArchiveItemFolder(IInArchive *archive, UINT32 index, bool &result)
- {
- return IsArchiveItemProp(archive, index, kpidIsFolder, result);
- }
-
- HRESULT IsArchiveItemAnti(IInArchive *archive, UINT32 index, bool &result)
- {
- return IsArchiveItemProp(archive, index, kpidIsAnti, result);
- }
-
- static const char aCreateObject[] = "CreateObject";
- static const char aGetHandlerProperty[] = "GetHandlerProperty";
-
- struct Format7zDLL::Proxy *Format7zDLL::Proxy::operator->()
- {
- DllProxyHelper(&aModule, g_cPath7z);
- return this;
- }
-
- #define DEFINE_FORMAT(name, id, dll, extension, signature) \
- Format7zDLL::Proxy PROXY_##name = \
- { \
- "%1Formats\\" dll, \
- aCreateObject, \
- aGetHandlerProperty, \
- (HMODULE)0, \
- signature extension + sizeof signature extension - sizeof extension, \
- sizeof signature extension - sizeof extension \
- }; \
- Format7zDLL::Interface name = PROXY_##name;
-
- #else
--
--#define CLS_ARC_ID_ITEM(cls) ((cls).Data4[5])
--
--Format7zDLL::Proxy::Handle Format7zDLL::Proxy::handle =
--{
-- "%1!s!7z.dll",
-- "CreateObject",
-- "GetHandlerProperty2",
-- "GetNumberOfFormats",
-- (HMODULE)0
--};
--
--struct Format7zDLL::Proxy *Format7zDLL::Proxy::operator->()
--{
-- DllProxyHelper(&handle.aModule, g_cPath7z);
-- if (formatIndex < 0)
-- {
-- GUID clsId =
-- {
-- 0x23170F69, 0x40C1, 0x278A,
-- 0x10, 0x00, 0x00, 0x01, 0x10, (BYTE)-formatIndex, 0x00, 0x00
-- };
-- UINT32 i = 0;
-- handle.GetNumberOfFormats(&i);
-- while (i)
-- {
-- PROPVARIANT value;
-- ::VariantInit((LPVARIANT)&value);
-- if (SUCCEEDED(handle.GetHandlerProperty2(--i, NArchive::kClassID, &value)) &&
-- value.vt == VT_BSTR &&
-- SysStringByteLen(value.bstrVal) == sizeof(GUID) &&
-- IsEqualGUID(clsId, *value.puuid))
-- {
-- formatIndex = i;
-- i = 0;
-- }
-- ::VariantClear((LPVARIANT)&value);
-- }
-- if (formatIndex < 0)
-- {
-- TCHAR szArcID[4];
-- wsprintf(szArcID, _T("%02x"), (UINT)CLS_ARC_ID_ITEM(clsId));
-- Complain(RPC_S_INTERFACE_NOT_FOUND, szArcID, handle);
-- }
-- }
-- return this;
--}
--
--STDMETHODIMP Format7zDLL::Proxy::CreateObject(const GUID *clsID, const GUID *interfaceID, void **outObject)
--{
-- return handle.CreateObject(clsID, interfaceID, outObject);
--}
--
--STDMETHODIMP Format7zDLL::Proxy::GetHandlerProperty(PROPID propID, PROPVARIANT *value)
--{
-- return handle.GetHandlerProperty2(formatIndex, propID, value);
--}
--
- #define DEFINE_FORMAT(name, id, dll, extension, signature) \
-#define DEFINE_FORMAT(name, id, extension, signature) \
-- Format7zDLL::Proxy PROXY_##name = \
-- { \
-- -0x##id, \
- signature extension + sizeof signature extension - sizeof extension, \
- sizeof signature extension - sizeof extension \
- 0, \
- sizeof signature extension - sizeof extension, \
- '@', \
- signature extension + sizeof signature extension - sizeof extension \
-- }; \
-- Format7zDLL::Interface name = PROXY_##name;
-
- #endif
--
- DEFINE_FORMAT(CFormat7z, 07, "7Z.DLL", "7z", "@7z\xBC\xAF\x27\x1C");
- DEFINE_FORMAT(CArjHandler, 04, "ARJ.DLL", "arj", "@\x60\xEA");
- DEFINE_FORMAT(CBZip2Handler, 02, "BZ2.DLL", "bz2 tbz2", "@BZh");
- DEFINE_FORMAT(CCabHandler, 08, "CAB.DLL", "cab", "@MSCF");
- DEFINE_FORMAT(CCpioHandler, ED, "CPIO.DLL", "cpio", "");
- DEFINE_FORMAT(CDebHandler, EC, "DEB.DLL", "deb", "@!<arch>\n");
- DEFINE_FORMAT(CLzhHandler, 06, "LZH.DLL", "lzh lha", "@@@-l@@-");//"@-l" doesn't work because signature starts at offset 2
- DEFINE_FORMAT(CGZipHandler, EF, "GZ.DLL", "gz tgz", "@\x1F\x8B");
- DEFINE_FORMAT(CRarHandler, 03, "RAR.DLL", "rar", "@Rar!\x1a\x07\x00");
- DEFINE_FORMAT(CRpmHandler, EB, "RPM.DLL", "rpm", "");
- DEFINE_FORMAT(CTarHandler, EE, "TAR.DLL", "tar", "");
- DEFINE_FORMAT(CZHandler, 05, "Z.DLL", "z", "@\x1F\x9D");
- DEFINE_FORMAT(CZipHandler, 01, "ZIP.DLL", "zip jar war ear xpi", "@PK\x03\x04");
- DEFINE_FORMAT(CChmHandler, E9, "CHM.DLL", "chm chi chq chw hxs hxi hxr hxq hxw lit", "@ITSF");
- DEFINE_FORMAT(CIsoHandler, E7, "ISO.DLL", "iso", "");
- DEFINE_FORMAT(CNsisHandler, 09, "NSIS.DLL", "", "@@@@@\xEF\xBE\xAD\xDENullsoftInst");
-DEFINE_FORMAT(CFormat7z, 07, "7z", "7z\xBC\xAF\x27\x1C");
-DEFINE_FORMAT(CArjHandler, 04, "arj", "\x60\xEA");
-DEFINE_FORMAT(CBZip2Handler, 02, "bz2 tbz2", "BZh");
-DEFINE_FORMAT(CCabHandler, 08, "cab", "MSCF");
-DEFINE_FORMAT(CCpioHandler, ED, "cpio", "");
-DEFINE_FORMAT(CDebHandler, EC, "deb", "!<arch>\n");
-DEFINE_FORMAT(CLzhHandler, 06, "lzh lha", "@@-l@@-");//"@-l" doesn't work because signature starts at offset 2
-DEFINE_FORMAT(CGZipHandler, EF, "gz tgz", "\x1F\x8B");
-DEFINE_FORMAT(CRarHandler, 03, "rar", "Rar!\x1a\x07\x00");
-DEFINE_FORMAT(CRpmHandler, EB, "rpm", "");
-DEFINE_FORMAT(CTarHandler, EE, "tar", "");
-DEFINE_FORMAT(CZHandler, 05, "z", "\x1F\x9D");
-DEFINE_FORMAT(CZipHandler, 01, "zip jar war ear xpi", "PK\x03\x04");
-DEFINE_FORMAT(CChmHandler, E9, "chm chi chq chw hxs hxi hxr hxq hxw lit", "ITSF");
-DEFINE_FORMAT(CIsoHandler, E7, "iso", "");
-DEFINE_FORMAT(CNsisHandler, 09, "", "@@@@\xEF\xBE\xAD\xDENullsoftInst");
--#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 449
- DEFINE_FORMAT(CWimHandler, E6, "WIM.DLL", "wim swm", "@MSWIM\x00\x00\x00");
-DEFINE_FORMAT(CWimHandler, E6, "wim swm", "MSWIM\x00\x00\x00");
--#endif
--#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 452
- DEFINE_FORMAT(CComHandler, E5, "COM.DLL", "", "@\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1");
-DEFINE_FORMAT(CComHandler, E5, "", "\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1");
--#endif
--#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 458
- DEFINE_FORMAT(CLzmaHandler, 0A, "LZMA.DLL", "lzma lzma86", "");
-DEFINE_FORMAT(CLzmaHandler, 0A, "lzma lzma86", "");
-#endif
-#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 459
-DEFINE_FORMAT(CXarHandler, E1, "", "xar!\x00\x1C");
-DEFINE_FORMAT(CMubHandler, E2, "mub", "");
-DEFINE_FORMAT(CHfsHandler, E3, "hfs", "");
-DEFINE_FORMAT(CDmgHandler, E4, "dmg", "");
-DEFINE_FORMAT(CElfHandler, DE, "elf", "");
--#endif
--
--/**
-- * @brief Construct Merge7z interface.
-- */
--Merge7z::Merge7z():
--Format7z(CFormat7z),
--ZipHandler(CZipHandler),
--RarHandler(CRarHandler),
--BZip2Handler(CBZip2Handler),
--TarHandler(CTarHandler)
--{
--}
--
--/**
-- * @brief Figure out which archiver dll to use for a given archive.
-- */
--Merge7z::Format *Merge7z::GuessFormat(LPCTSTR path)
--{
-- if (g_dwFlags & Initialize::GuessFormatBySignature)
-- return GuessFormatBySignature(path, g_dwFlags & Initialize::GuessFormatByExtension ? path : 0);
-- return GuessFormatByExtension(path);
--}
--
--/**
-- * @brief Figure out which archiver dll to use for a given archive.
-- */
--Merge7z::Format *Merge7z::GuessFormatByExtension(LPCTSTR path)
--{
-- SZ_EXTENSION ext;
-- if (PathIsDirectory(path))
-- return 0;
-- return GuessFormatEx(GetExtension(path, ext), 0, 0);
--}
--
--/**
-- * @brief Figure out which archiver dll to use for a given archive.
-- */
--Merge7z::Format *Merge7z::GuessFormatBySignature(LPCTSTR path, LPCTSTR extension)
--{
-- SZ_EXTENSION ext;
-- CH_SIGNATURE sig;
-- if (PathIsDirectory(path))
-- return 0;
-- return GuessFormatEx(GetExtension(extension, ext), sig, GetSignature(path, sig));
--}
--
--/**
-- * @brief Figure out which archiver dll to use for a given archive.
-- */
--Merge7z::Format *Merge7z::GuessFormatEx(LPCSTR ext, LPCH sig, int cchSig)
--{
-- Format7zDLL::Interface *pFormat = Format7zDLL::Interface::head;
-- Format7zDLL::Interface *pFormatByExtension = 0;
-- while (pFormat)
-- {
-- static const char aBlank[] = " ";
-- LPCSTR pchExtension = pFormat->proxy.extension;
- int cchExtension = pFormat->proxy.signature;
- int cchExtension = pFormat->proxy.sig_count;
-- if (cchSig > 0 && cchExtension)
-- {
-- LPCSTR pchSignature = pchExtension - cchExtension;
- char joker = *pchSignature++;
- --cchExtension;
- char joker = pFormat->proxy.sig_joker;
- size_t begin = pFormat->proxy.sig_begin;
-- if (cchSig >= cchExtension)
-- {
-- while (cchExtension--)
-- {
-- char expected = pchSignature[cchExtension];
- if (expected != joker && sig[cchExtension] != expected)
- if (expected != joker && sig[begin + cchExtension] != expected)
-- break;
-- }
-- if (cchExtension == -1)
-- return pFormat;
-- }
-- }
-- else while
-- (
-- ext
-- && pFormatByExtension == 0
-- && (cchExtension = StrCSpnA(pchExtension += StrSpnA(pchExtension, aBlank), aBlank)) != 0
-- )
-- {
-- if (StrIsIntlEqualA(FALSE, pchExtension, ext, cchExtension) && ext[cchExtension] == '\0')
-- {
-- pFormatByExtension = pFormat;
-- }
-- pchExtension += cchExtension;
-- }
-- pFormat = pFormat->next;
-- }
-- return pFormat ? pFormat : pFormatByExtension;
--}
--
--/**
-- * @brief Get filename extension as ANSI characters.
-- */
--LPCSTR Merge7z::GetExtension(LPCTSTR path, SZ_EXTENSION ext)
--{
-- if (path == NULL)
-- return NULL;
-- path = PathFindExtension(path);
--#ifdef UNICODE
-- return WideCharToMultiByte(CP_ACP, 0, path, -1, ext, sizeof(SZ_EXTENSION), 0, 0) > 1 ? ext + 1 : 0;
--#else
-- ext[sizeof(SZ_EXTENSION) - 2] = '\0';
-- lstrcpynA(ext, path, sizeof(SZ_EXTENSION));
-- return ext[0] != '\0' && ext[sizeof(SZ_EXTENSION) - 2] == '\0' ? ext + 1 : 0;
--#endif
--}
--
--/**
-- * @brief Read start signature from given file.
-- */
--DWORD Merge7z::GetSignature(LPCTSTR path, CH_SIGNATURE sig)
--{
-- if (sig == NULL)
-- return sizeof(CH_SIGNATURE);
-- DWORD cchSig = 0;
-- HANDLE h = CreateFile(path, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
-- if (h != INVALID_HANDLE_VALUE)
-- {
-- ReadFile(h, sig, sizeof(CH_SIGNATURE), &cchSig, 0);
-- if (cchSig >= 64 && MAKEWORD(sig[0],sig[1]) == IMAGE_DOS_SIGNATURE)
-- {
-- DWORD offset =
-- (
-- LPDWORD(sig)[5] //DOS CS:IP
-- ? 512UL * (LPWORD(sig)[1] ? LPWORD(sig)[2] - 1 : LPWORD(sig)[2]) + LPWORD(sig)[1]
-- : LPDWORD(sig)[15]
-- );
-- if (SetFilePointer(h, offset, 0, FILE_BEGIN) == offset)
-- {
-- ReadFile(h, sig, sizeof(CH_SIGNATURE), &cchSig, 0);
-- if (cchSig >= 4 + sizeof(IMAGE_FILE_HEADER) && MAKELONG(MAKEWORD(sig[0],sig[1]), MAKEWORD(sig[2],sig[3])) == MAKELONG(MAKEWORD('P','E'), 0))
-- {
-- cchSig = 0;
-- IMAGE_FILE_HEADER *pImageFileHeader = (IMAGE_FILE_HEADER *) (sig + 4);
-- offset += 4 + sizeof(IMAGE_FILE_HEADER) + pImageFileHeader->SizeOfOptionalHeader;
-- if (SetFilePointer(h, offset, 0, FILE_BEGIN) == offset)
-- {
-- int iSection = pImageFileHeader->NumberOfSections;
-- while (iSection--)
-- {
-- IMAGE_SECTION_HEADER ImageSectionHeader;
-- DWORD cbImageSectionHeader = 0;
-- ReadFile(h, &ImageSectionHeader, sizeof ImageSectionHeader, &cbImageSectionHeader, 0);
-- if (cbImageSectionHeader != sizeof ImageSectionHeader)
-- break;
-- if (memcmp(ImageSectionHeader.Name, "_winzip_", 8) == 0)
-- {
-- // looks like WinZip Self-Extractor
-- memcpy(sig, "PK\x03\x04", cchSig = 4);
-- break;
-- }
-- DWORD ahead = ImageSectionHeader.PointerToRawData + ImageSectionHeader.SizeOfRawData;
-- if (offset < ahead)
-- offset = ahead;
-- }
-- if (iSection == -1 && SetFilePointer(h, offset, 0, FILE_BEGIN) == offset)
-- {
-- ReadFile(h, sig, sizeof(CH_SIGNATURE), &cchSig, 0);
-- }
-- }
-- }
-- }
-- }
-- CloseHandle(h);
-- }
-- return cchSig;
--}
--
--/**
-- * @brief Load language file for 7-Zip UIs.
-- */
--
--static CSysString g_LangPath;
--
--LPCTSTR Merge7z::LoadLang(LPCTSTR langFile)
--{
-- TCHAR langFileGuess[8];
-- if (HIWORD(langFile) == 0)
-- {
-- langFileGuess[0] = '\0';
-- if (int cchLng = GetLocaleInfo(LCID(langFile), LOCALE_SISO639LANGNAME, langFileGuess, 4))
-- {
-- langFileGuess[cchLng - 1] = '-';
-- GetLocaleInfo(LCID(langFile), LOCALE_SISO3166CTRYNAME, langFileGuess + cchLng, 4);
-- langFile = langFileGuess;
-- }
-- }
-- g_LangPath = GetSystemString(g_cPath7z);
-- g_LangPath += TEXT("Lang\\");
-- g_LangPath += langFile;
-- int slash = g_LangPath.ReverseFind('\\');
-- int minus = g_LangPath.ReverseFind('-');
-- int dot = g_LangPath.ReverseFind('.');
-- if (dot <= slash)
-- {
-- dot = g_LangPath.Length();
-- g_LangPath += TEXT(".txt");
-- }
-- if (minus > slash && !PathFileExists(g_LangPath))
-- {
-- // 2nd chance: filename == language code
-- CSysString Region = g_LangPath.Mid(minus, dot - minus);
-- Region.Replace('-', '\\');
-- g_LangPath.Delete(minus, dot - minus);
-- if (!PathFileExists(g_LangPath))
-- {
-- // 3rd chance: filename == region code (Norwegian)
-- g_LangPath.Delete(slash, minus - slash);
-- g_LangPath.Insert(slash, Region);
-- }
-- }
-- ReloadLang();
-- return g_LangPath;
--}
--
--/**
-- * @brief Override ReadRegLang to return path set by Merge7z::LoadLang().
-- * This is global 7-Zip function otherwise defined in RegistryUtils.cpp.
-- * Exclude RegistryUtils.cpp from build to avoid link-time collision.
-- */
--
--void ReadRegLang(UString &langFile)
--{
-- langFile = GetUnicodeString(g_LangPath);
--}
--
--void SaveRegLang(const UString &langFile)
--{
--}
--
--/**
-- * @brief Export instance of Merge7z interface.
-- */
--EXTERN_C
--{
-- __declspec(dllexport) Merge7z Merge7z;
--}
--
--EXTERN_C HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi)
--{
-- // Compute dwBuild from revision.txt
-- static const DWORD dwBuild =
-- (
-- sizeof""
--# define VERSION(MAJOR,MINOR)
--# include "revision.txt"
--# undef VERSION
-- );
-- C_ASSERT(dwBuild == DllBuild_Merge7z);
-- // Compute dwVersion from revision.txt
-- static const DWORD dwVersion =
-- (
-- 0*sizeof""
--# define VERSION(MAJOR,MINOR) , MAKELONG(MINOR,MAJOR) + 0*sizeof""
--# include "revision.txt"
--# undef VERSION
-- );
-- static const DLLVERSIONINFO dvi =
-- {
-- sizeof dvi,
-- HIWORD(dwVersion), LOWORD(dwVersion), dwBuild, DLLVER_PLATFORM_WINDOWS
-- };
-- CopyMemory(pdvi, &dvi, pdvi->cbSize < dvi.cbSize ? pdvi->cbSize : dvi.cbSize);
-- return S_OK;
--}
++/* Merge7zCommon.cpp: Provide a handy C++ interface to access 7Zip services\r
++ * Copyright (c) 2003 Jochen Tucht\r
++ *\r
++ * License: This program is free software; you can redistribute it and/or modify\r
++ * it under the terms of the GNU General Public License as published by\r
++ * the Free Software Foundation; either version 2 of the License, or\r
++ * (at your option) any later version.\r
++ *\r
++ * This program is distributed in the hope that it will be useful,\r
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
++ * GNU General Public License for more details.\r
++ *\r
++ * You should have received a copy of the GNU General Public License\r
++ * along with this program; if not, write to the Free Software\r
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
++ *\r
++ * Remarks: This file contains the presumably version-independent parts of\r
++ * Merge7z code. Version specific code resides in Merge7zXXX.cpp.\r
++\r
++Please mind 2. a) of the GNU General Public License, and log your changes below.\r
++\r
++DATE: BY: DESCRIPTION:\r
++========== ================== ================================================\r
++2003-12-09 Jochen Tucht Created\r
++2003-12-16 Jochen Tucht GuessFormat() now checks for directory\r
++2004-03-18 Jochen Tucht Experimental DllGetVersion() based on rcsid.\r
++2004-10-10 Jochen Tucht DllGetVersion() based on new REVISION.TXT\r
++2005-01-15 Jochen Tucht Changed as explained in revision.txt\r
++2005-02-26 Jochen Tucht Changed as explained in revision.txt\r
++2005-03-19 Jochen Tucht Changed as explained in revision.txt\r
++2005-06-22 Jochen Tucht Treat .ear and .war like .zip\r
++2005-07-05 Jochen Tucht Add missing .tbz2\r
++2005-08-20 Jochen Tucht Option to guess archive format by signature.\r
++ EnumerateDirectory() in EnumDirItems.cpp has\r
++ somewhat changed so I can no longer use it.\r
++2005-10-02 Jochen Tucht Add CHM format\r
++2005-11-19 Jochen Tucht Minor changes to build against 7z430 beta\r
++2006-06-28 Jochen Neubeck Add ISO format (introduced with 7z436 beta)\r
++ Add NSIS format (introduced with 7z440 beta)\r
++2007-01-27 Jochen Neubeck Unassociate .exe filename extension from NSIS\r
++ format due to undesired side effect on WinMerge\r
++2007-04-20 Jochen Neubeck Cope with 7z445's revised plugin system\r
++2007-07-13 Jochen Neubeck Pass MSI files to CAB handler\r
++2007-08-25 Jochen Neubeck Add COM format (introduced with 7z452 beta)\r
++ This format also handles MSI files, which are\r
++ therefore no longer passed to the CAB handler.\r
++2007-09-01 Jochen Neubeck No longer #include "LangUtils.h", which has\r
++ moved to a different location as of 7z453 beta.\r
++2007-12-22 Jochen Neubeck Unassociate .001 filename extension\r
++2008-08-03 Jochen Neubeck Add LZMA format (introduced with 7z458 beta)\r
++2010-04-24 Jochen Neubeck New formats introduced with 7z459 beta:\r
++ XAR, MUB, HFS, DMG, ELF (not sure if they work)\r
++*/\r
++\r
++#include "stdafx.h"\r
++#include "Merge7zCommon.h"\r
++\r
++void ReloadLang(); //Implemented in /*/FileManager/LangUtils.cpp\r
++\r
++using namespace NWindows;\r
++using namespace NFile;\r
++using namespace NName;\r
++\r
++void AddDirFileInfo(\r
++ const UString &prefix, \r
++ const UString &fullPathName,\r
++ NFind::CFileInfoW &fileInfo, \r
++ CDirItems &dirItems)\r
++{\r
++ CDirItem item;\r
++ item.Attrib = fileInfo.Attrib;\r
++ item.Size = fileInfo.Size;\r
++ item.CTime = fileInfo.CTime;\r
++ item.ATime = fileInfo.ATime;\r
++ item.MTime = fileInfo.MTime;\r
++ //UString\r
++ item.LogParent = dirItems.AddPrefix(-1, -1, prefix + fileInfo.Name);\r
++ item.PhyParent = dirItems.AddPrefix(-1, -1, fullPathName);\r
++ //item.Name = prefix + fileInfo.Name;\r
++ //item.FullPath = fullPathName;\r
++ dirItems.Items.Add(item);\r
++}\r
++\r
++static void EnumerateDirectory(\r
++ const UString &baseFolderPrefix,\r
++ const UString &directory, \r
++ const UString &prefix,\r
++ CDirItems &dirItems)\r
++{\r
++ NFind::CEnumeratorW enumerator(baseFolderPrefix + directory + wchar_t(kAnyStringWildcard));\r
++ NFind::CFileInfoW fileInfo;\r
++ while (enumerator.Next(fileInfo))\r
++ { \r
++ AddDirFileInfo(prefix, directory + fileInfo.Name, fileInfo, dirItems);\r
++ if (fileInfo.IsDir())\r
++ {\r
++ EnumerateDirectory(baseFolderPrefix, directory + fileInfo.Name + wchar_t(kDirDelimiter),\r
++ prefix + fileInfo.Name + wchar_t(kDirDelimiter), dirItems);\r
++ }\r
++ }\r
++}\r
++\r
++HINSTANCE g_hInstance;\r
++#ifndef _UNICODE\r
++bool g_IsNT = false;\r
++static bool IsItWindowsNT()\r
++{\r
++ OSVERSIONINFO versionInfo;\r
++ versionInfo.dwOSVersionInfoSize = sizeof(versionInfo);\r
++ if (!::GetVersionEx(&versionInfo)) \r
++ return false;\r
++ return (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT);\r
++}\r
++#endif\r
++\r
++DWORD g_dwFlags;\r
++CHAR g_cPath7z[MAX_PATH];\r
++\r
++/**\r
++ * @brief Dll entry point\r
++ */\r
++BOOL APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)\r
++{\r
++ if (dwReason == DLL_PROCESS_ATTACH)\r
++ {\r
++ g_hInstance = hInstance;\r
++# ifndef _UNICODE\r
++ g_IsNT = IsItWindowsNT();\r
++# endif\r
++ }\r
++ return TRUE;\r
++}\r
++\r
++/**\r
++ * @brief Load a dll and import a number of functions.\r
++ */\r
++static HMODULE DllProxyHelper(LPCSTR *proxy, ...)\r
++{\r
++ HMODULE handle = NULL;\r
++ if (LPCSTR name = *proxy)\r
++ {\r
++ if (proxy[1] && proxy[1] != name)\r
++ {\r
++ char path[MAX_PATH];\r
++ FormatMessageA\r
++ (\r
++ FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ARGUMENT_ARRAY,\r
++ name,\r
++ 0,\r
++ 0,\r
++ path,\r
++ sizeof path,\r
++ (va_list *)(&proxy + 1)\r
++ );\r
++ handle = LoadLibraryA(path);\r
++ if (handle)\r
++ {\r
++ LPCSTR *p = proxy;\r
++ *proxy = NULL;\r
++ while ((name = *++p) != NULL)\r
++ {\r
++ *p = (LPCSTR)GetProcAddress(handle, name);\r
++ if (*p == NULL)\r
++ {\r
++ *proxy = proxy[1] = name;\r
++ p = proxy + 2;\r
++ break;\r
++ }\r
++ }\r
++ *p = (LPCSTR)handle;\r
++ }\r
++ }\r
++ if ((name = *proxy) != NULL)\r
++ {\r
++ DWORD dwError = ERROR_MOD_NOT_FOUND;\r
++ HMODULE hContext = NULL;\r
++ if (proxy[1] == name)\r
++ {\r
++ dwError = ERROR_PROC_NOT_FOUND;\r
++ hContext = (HMODULE)proxy[2];\r
++ }\r
++ Complain(dwError, GetSystemString(name), hContext);\r
++ }\r
++ }\r
++ return handle;\r
++}\r
++\r
++/**\r
++ * @brief Ask archiver dll for an interface of given class.\r
++ */\r
++HRESULT Format7zDLL::Interface::CreateObject(const GUID *interfaceID, void **outObject)\r
++{\r
++ PROPVARIANT value;\r
++ HRESULT result = proxy->GetHandlerProperty(NArchive::kClassID, &value);\r
++ if SUCCEEDED(result)\r
++ {\r
++ if (value.vt != VT_BSTR || SysStringByteLen(value.bstrVal) != sizeof(GUID))\r
++ {\r
++ result = DISP_E_TYPEMISMATCH;\r
++ }\r
++ else\r
++ {\r
++ result = proxy->CreateObject((const CLSID *)value.bstrVal, interfaceID, outObject);\r
++ }\r
++ VariantClear((VARIANT *)&value);\r
++ }\r
++ return result;\r
++}\r
++\r
++/**\r
++ * @brief Ask archiver dll for an instance of IInArchive.\r
++ */\r
++IInArchive *Format7zDLL::Interface::GetInArchive()\r
++{\r
++ void *pv;\r
++ if COMPLAIN(CreateObject(&IID_IInArchive, &pv) != S_OK)\r
++ {\r
++ Complain(RPC_S_INTERFACE_NOT_FOUND, _T("IInArchive"), proxy.handle);\r
++ }\r
++ return static_cast<IInArchive *>(pv);\r
++}\r
++\r
++/**\r
++ * @brief Ask archiver dll for an instance of IOutArchive.\r
++ */\r
++IOutArchive *Format7zDLL::Interface::GetOutArchive()\r
++{\r
++ void *pv;\r
++ if COMPLAIN(CreateObject(&IID_IOutArchive, &pv) != S_OK)\r
++ {\r
++ Complain(RPC_S_INTERFACE_NOT_FOUND, _T("IOutArchive"), proxy.handle);\r
++ }\r
++ return static_cast<IOutArchive *>(pv);\r
++}\r
++\r
++/**\r
++ * @brief Extraction method accessible from outside\r
++ */\r
++HRESULT Format7zDLL::Interface::DeCompressArchive(HWND hwndParent, LPCTSTR path, LPCTSTR folder)\r
++{\r
++ HRESULT result = E_FAIL;\r
++ if (Merge7z::Format::Inspector *inspector = Open(hwndParent, path))\r
++ {\r
++ if (CMyComBSTR(GetHandlerAddExtension(hwndParent)).Length())\r
++ {\r
++ //Most handlers seem to be happy with missing index array, but rpm\r
++ //handler doesn't know how to "extract all" and needs index array\r
++ //even for the one and only file inside (which is .cpio.gz).\r
++ static const UINT32 indices[1] = {0};\r
++ result = inspector->Extract(hwndParent, folder, indices, 1);\r
++ }\r
++ else\r
++ {\r
++ result = inspector->Extract(hwndParent, folder);\r
++ }\r
++ inspector->Free();\r
++ }\r
++ return result;\r
++}\r
++\r
++/**\r
++ * @brief Open archive for inspection.\r
++ */\r
++Merge7z::Format::Inspector *Format7zDLL::Interface::Open(HWND hwndParent, LPCTSTR path)\r
++{\r
++ Inspector *inspector = new Inspector(this, path);\r
++ try\r
++ {\r
++ inspector->Init(hwndParent);\r
++ }\r
++ catch (Complain *complain)\r
++ {\r
++ complain->Alert(hwndParent);\r
++ inspector->Free();\r
++ inspector = 0;\r
++ }\r
++ return inspector;\r
++}\r
++\r
++/**\r
++ * @brief Prepare inspection interface for iteration.\r
++ */\r
++UINT32 Format7zDLL::Interface::Inspector::Open()\r
++{\r
++ UINT32 numItems = 0;\r
++ archive->GetNumberOfItems(&numItems);\r
++ return numItems;\r
++}\r
++\r
++/**\r
++ * @brief free inspection interface.\r
++ */\r
++void Format7zDLL::Interface::Inspector::Free()\r
++{\r
++ Release(archive);\r
++ Release(static_cast<IInStream *>(file));\r
++ Release(callback);\r
++ delete this;\r
++}\r
++\r
++HRESULT Format7zDLL::Interface::Inspector::GetProperty(UINT32 index, PROPID propID, PROPVARIANT *value, VARTYPE vt)\r
++{\r
++ VariantInit((VARIANT *)value);\r
++ HRESULT result = archive->GetProperty(index, propID, value);\r
++ if (SUCCEEDED(result) && value->vt != vt)\r
++ {\r
++ VariantClear((VARIANT *)value);\r
++ result = DISP_E_TYPEMISMATCH;\r
++ }\r
++ return result;\r
++}\r
++\r
++BSTR Format7zDLL::Interface::Inspector::GetPath(UINT32 index)\r
++{\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetProperty(index, kpidPath, &value, VT_BSTR)) ? value.bstrVal : 0;\r
++}\r
++\r
++BSTR Format7zDLL::Interface::Inspector::GetName(UINT32 index)\r
++{\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetProperty(index, kpidName, &value, VT_BSTR)) ? value.bstrVal : 0;\r
++}\r
++\r
++BSTR Format7zDLL::Interface::Inspector::GetExtension(UINT32 index)\r
++{\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetProperty(index, kpidExtension, &value, VT_BSTR)) ? value.bstrVal : 0;\r
++}\r
++\r
++VARIANT_BOOL Format7zDLL::Interface::Inspector::IsFolder(UINT32 index)\r
++{\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetProperty(index, kpidIsDir, &value, VT_BOOL)) ? value.boolVal : 0;\r
++}\r
++\r
++FILETIME Format7zDLL::Interface::Inspector::LastWriteTime(UINT32 index)\r
++{\r
++ static const FILETIME invalid = { 0, 0 };\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetProperty(index, kpidMTime, &value, VT_FILETIME)) ? value.filetime : invalid;\r
++}\r
++\r
++void Format7zDLL::Interface::GetDefaultName(HWND hwndParent, UString &ustrDefaultName)\r
++{\r
++ int dot = ustrDefaultName.ReverseFind('.');\r
++ int slash = ustrDefaultName.ReverseFind('\\');\r
++ if (dot > slash)\r
++ {\r
++ LPCWSTR pchExtension = ustrDefaultName;\r
++ pchExtension += dot + 1;\r
++ static const OLECHAR wBlank[] = L" ";\r
++ CMyComBSTR bstrHandlerExtension = GetHandlerExtension(hwndParent);\r
++ CMyComBSTR bstrHandlerAddExtension = GetHandlerAddExtension(hwndParent);\r
++ LPWSTR pchHandlerExtension = bstrHandlerExtension.m_str;\r
++ LPWSTR pchHandlerAddExtension = bstrHandlerAddExtension.m_str;\r
++ while (int cchHandlerAddExtension = StrCSpnW(pchHandlerAddExtension += StrSpnW(pchHandlerAddExtension, wBlank), wBlank))\r
++ {\r
++ int cchHandlerExtension = StrCSpnW(pchHandlerExtension += StrSpnW(pchHandlerExtension, wBlank), wBlank);\r
++ if (StrIsIntlEqualW(FALSE, pchExtension, pchHandlerExtension, cchHandlerExtension) && pchExtension[cchHandlerExtension] == 0)\r
++ {\r
++ pchHandlerAddExtension[cchHandlerAddExtension] = '\0'; // will also stop iteration\r
++ ustrDefaultName.ReleaseBuffer(dot);\r
++ if (*pchHandlerAddExtension == '.') // consider != '*'\r
++ {\r
++ ustrDefaultName += pchHandlerAddExtension;\r
++ dot += cchHandlerAddExtension; // make ReleaseBuffer(dot) below a NOP\r
++ }\r
++ }\r
++ pchHandlerExtension += cchHandlerExtension;\r
++ pchHandlerAddExtension += cchHandlerAddExtension;\r
++ }\r
++ ustrDefaultName.ReleaseBuffer(dot);\r
++ ustrDefaultName.Delete(0, slash + 1);\r
++ }\r
++ else\r
++ {\r
++ ustrDefaultName = L"noname";\r
++ }\r
++}\r
++\r
++BSTR Format7zDLL::Interface::GetDefaultName(HWND hwndParent, LPCTSTR path)\r
++{\r
++ UString ustrDefaultName = GetUnicodeString(path);\r
++ GetDefaultName(hwndParent, ustrDefaultName);\r
++ return SysAllocString(ustrDefaultName);\r
++}\r
++\r
++BSTR Format7zDLL::Interface::Inspector::GetDefaultName()\r
++{\r
++ //UString ustrDefaultName = GetUnicodeString(path);\r
++ return SysAllocString(ustrDefaultName);\r
++}\r
++\r
++/**\r
++ * @brief Open archive for update.\r
++ */\r
++Merge7z::Format::Updater *Format7zDLL::Interface::Update(HWND hwndParent, LPCTSTR path)\r
++{\r
++ Updater *updater = new Updater(this, path);\r
++ try\r
++ {\r
++ updater->Init(hwndParent);\r
++ }\r
++ catch (Complain *complain)\r
++ {\r
++ complain->Alert(hwndParent);\r
++ updater->Free();\r
++ updater = 0;\r
++ }\r
++ return updater;\r
++}\r
++\r
++/**\r
++ * @brief Add item to updater\r
++ */\r
++UINT32 Format7zDLL::Interface::Updater::Add(Merge7z::DirItemEnumerator::Item &etorItem)\r
++{\r
++ // fill in the default values from the enumerator\r
++ CDirItem item;\r
++ UString Name = GetUnicodeString(etorItem.Name);\r
++ UString FullPath = GetUnicodeString(etorItem.FullPath);\r
++ if (etorItem.Mask.Item & etorItem.Mask.Name)\r
++ //item.Name = GetUnicodeString(etorItem.Name);\r
++ item.LogParent = dirItems.AddPrefix(-1, -1, Name);\r
++ if (etorItem.Mask.Item & etorItem.Mask.FullPath)\r
++ //item.FullPath = GetUnicodeString(etorItem.FullPath);\r
++ item.PhyParent = dirItems.AddPrefix(-1, -1, FullPath);\r
++ if (etorItem.Mask.Item & etorItem.Mask.Attributes)\r
++ item.Attrib = etorItem.Attributes;\r
++ if (etorItem.Mask.Item & etorItem.Mask.Size)\r
++ item.Size = etorItem.Size;\r
++ if (etorItem.Mask.Item & etorItem.Mask.CreationTime)\r
++ item.CTime = etorItem.CreationTime;\r
++ if (etorItem.Mask.Item & etorItem.Mask.LastAccessTime)\r
++ item.ATime = etorItem.LastAccessTime;\r
++ if (etorItem.Mask.Item & etorItem.Mask.LastWriteTime)\r
++ item.MTime = etorItem.LastWriteTime;\r
++ if (etorItem.Mask.Item && (etorItem.Mask.Item & (etorItem.Mask.NeedFindFile|etorItem.Mask.CheckIfPresent)) != etorItem.Mask.NeedFindFile)\r
++ {\r
++ // Check the info from the disk\r
++ NFile::NFind::CFileInfoW fileInfo;\r
++ if (NFile::NFind::CFindFile().FindFirst(FullPath, fileInfo))\r
++ {\r
++ if (!(etorItem.Mask.Item & etorItem.Mask.Name))\r
++ item.Name = fileInfo.Name;\r
++ if (!(etorItem.Mask.Item & etorItem.Mask.Attributes))\r
++ item.Attrib = fileInfo.Attrib;\r
++ if (!(etorItem.Mask.Item & etorItem.Mask.Size))\r
++ item.Size = fileInfo.Size;\r
++ if (!(etorItem.Mask.Item & etorItem.Mask.CreationTime))\r
++ item.CTime = fileInfo.CTime;\r
++ if (!(etorItem.Mask.Item & etorItem.Mask.LastAccessTime))\r
++ item.ATime = fileInfo.ATime;\r
++ if (!(etorItem.Mask.Item & etorItem.Mask.LastWriteTime))\r
++ item.MTime = fileInfo.MTime;\r
++ }\r
++ else\r
++ {\r
++ // file not valid, forget it\r
++ etorItem.Mask.Item = 0;\r
++ }\r
++ }\r
++ if (etorItem.Mask.Item)\r
++ {\r
++ // No check from disk, simply use info from enumerators (risky)\r
++ // Why risky? This is not at all obvious.\r
++ dirItems.Items.Add(item);\r
++ // Recurse into directories (call a function of 7zip)\r
++ if ((etorItem.Mask.Item & etorItem.Mask.Recurse) && (item.Attrib & FILE_ATTRIBUTE_DIRECTORY))\r
++ {\r
++ EnumerateDirectory(UString(), FullPath + L'\\',\r
++ Name + L'\\', dirItems);\r
++ }\r
++ }\r
++ return etorItem.Mask.Item;\r
++}\r
++\r
++/**\r
++ * @brief free updater interface.\r
++ */\r
++void Format7zDLL::Interface::Updater::Free()\r
++{\r
++ Release(outArchive);\r
++ Release(static_cast<IOutStream *>(file));\r
++ delete this;\r
++}\r
++\r
++/**\r
++ * @brief Compression method accessible from outside\r
++ *\r
++ * @note See CAgent::DoOperation (in 7zip source) for model\r
++ */\r
++HRESULT Format7zDLL::Interface::CompressArchive(HWND hwndParent, LPCTSTR path, Merge7z::DirItemEnumerator *etor)\r
++{\r
++ HRESULT result = E_FAIL;\r
++ if (Merge7z::Format::Updater *updater = Update(hwndParent, path))\r
++ {\r
++ UINT count = etor->Open();\r
++ while (count--)\r
++ {\r
++ Merge7z::DirItemEnumerator::Item etorItem;\r
++ etorItem.Mask.Item = 0;\r
++ Merge7z::Envelope *envelope = etor->Enum(etorItem);\r
++ if (etorItem.Mask.Item != 0)\r
++ {\r
++ updater->Add(etorItem);\r
++ }\r
++ if (envelope)\r
++ {\r
++ envelope->Free();\r
++ }\r
++ }\r
++ result = updater->Commit(hwndParent);\r
++ updater->Free();\r
++ }\r
++ return result;\r
++}\r
++\r
++/**\r
++ * @brief get handler property identified by given propID\r
++ */\r
++HRESULT Format7zDLL::Interface::GetHandlerProperty(HWND hwndParent, PROPID propID, PROPVARIANT *value, VARTYPE vt)\r
++{\r
++ VariantInit((VARIANT *)value);\r
++ HRESULT result = DISP_E_EXCEPTION;\r
++ try\r
++ {\r
++ result = proxy->GetHandlerProperty(propID, value);\r
++ if (SUCCEEDED(result) && value->vt != vt)\r
++ {\r
++ VariantClear((VARIANT *)value);\r
++ result = DISP_E_TYPEMISMATCH;\r
++ }\r
++ }\r
++ catch (Complain *complain)\r
++ {\r
++ complain->Alert(hwndParent);\r
++ }\r
++ return result;\r
++}\r
++\r
++/**\r
++ * @brief get Name handler property\r
++ */\r
++BSTR Format7zDLL::Interface::GetHandlerName(HWND hwndParent)\r
++{\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kName, &value, VT_BSTR)) ? value.bstrVal : 0;\r
++}\r
++\r
++/**\r
++ * @brief get ClassID handler property\r
++ */\r
++BSTR Format7zDLL::Interface::GetHandlerClassID(HWND hwndParent)\r
++{\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kClassID, &value, VT_BSTR)) ? value.bstrVal : 0;\r
++}\r
++\r
++/**\r
++ * @brief get Extension handler property\r
++ */\r
++BSTR Format7zDLL::Interface::GetHandlerExtension(HWND hwndParent)\r
++{\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kExtension, &value, VT_BSTR)) ? value.bstrVal : 0;\r
++}\r
++\r
++/**\r
++ * @brief get AddExtension handler property\r
++ */\r
++BSTR Format7zDLL::Interface::GetHandlerAddExtension(HWND hwndParent)\r
++{\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kAddExtension, &value, VT_BSTR)) ? value.bstrVal : 0;\r
++}\r
++\r
++/**\r
++ * @brief get Update handler property\r
++ */\r
++VARIANT_BOOL Format7zDLL::Interface::GetHandlerUpdate(HWND hwndParent)\r
++{\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kUpdate, &value, VT_BOOL)) ? value.boolVal : 0;\r
++}\r
++\r
++/**\r
++ * @brief get KeepName handler property\r
++ */\r
++VARIANT_BOOL Format7zDLL::Interface::GetHandlerKeepName(HWND hwndParent)\r
++{\r
++ PROPVARIANT value;\r
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kKeepName, &value, VT_BOOL)) ? value.boolVal : 0;\r
++}\r
++\r
++/**\r
++ * @brief Initialize the library.\r
++ */\r
++int Merge7z::Initialize(DWORD dwFlags)\r
++{\r
++ g_dwFlags = dwFlags;\r
++ if (dwFlags & Initialize::Local7z)\r
++ {\r
++ GetModuleFileNameA(g_hInstance, g_cPath7z, sizeof g_cPath7z);\r
++ PathRemoveFileSpecA(g_cPath7z);\r
++ }\r
++ else\r
++ {\r
++ DWORD type = 0;\r
++ DWORD size = sizeof g_cPath7z;\r
++ SHGetValueA(HKEY_LOCAL_MACHINE, "Software\\7-Zip", "Path", &type, g_cPath7z, &size);\r
++ }\r
++ PathAddBackslashA(g_cPath7z);\r
++ if (WORD wLangID = HIWORD(dwFlags))\r
++ {\r
++ LoadLang(MAKEINTATOM(wLangID));\r
++ }\r
++ return 0;\r
++}\r
++\r
++Format7zDLL::Interface *Format7zDLL::Interface::head = NULL;\r
++\r
++/**\r
++ * @brief Access archiver dll functions through proxy.\r
++ */\r
++\r
++#else\r
++//DEFINE_FORMAT(CFtpHandler, "FTP.DLL", "ftp", "");\r
++\r
++#define CLS_ARC_ID_ITEM(cls) ((cls).Data4[5])\r
++\r
++Format7zDLL::Proxy::Handle Format7zDLL::Proxy::handle =\r
++{\r
++ "%1!s!7z.dll",\r
++ "CreateObject",\r
++ "GetHandlerProperty2",\r
++ "GetNumberOfFormats",\r
++ (HMODULE)0\r
++};\r
++\r
++struct Format7zDLL::Proxy *Format7zDLL::Proxy::operator->()\r
++{\r
++ DllProxyHelper(&handle.aModule, g_cPath7z);\r
++ if (formatIndex < 0)\r
++ {\r
++ GUID clsId =\r
++ {\r
++ 0x23170F69, 0x40C1, 0x278A,\r
++ 0x10, 0x00, 0x00, 0x01, 0x10, (BYTE)-formatIndex, 0x00, 0x00\r
++ };\r
++ UINT32 i = 0;\r
++ handle.GetNumberOfFormats(&i);\r
++ while (i)\r
++ {\r
++ PROPVARIANT value;\r
++ ::VariantInit((LPVARIANT)&value);\r
++ if (SUCCEEDED(handle.GetHandlerProperty2(--i, NArchive::kClassID, &value)) &&\r
++ value.vt == VT_BSTR &&\r
++ SysStringByteLen(value.bstrVal) == sizeof(GUID) &&\r
++ IsEqualGUID(clsId, *value.puuid))\r
++ {\r
++ formatIndex = i;\r
++ i = 0;\r
++ }\r
++ ::VariantClear((LPVARIANT)&value);\r
++ }\r
++ if (formatIndex < 0)\r
++ {\r
++ TCHAR szArcID[4];\r
++ wsprintf(szArcID, _T("%02x"), (UINT)CLS_ARC_ID_ITEM(clsId));\r
++ Complain(RPC_S_INTERFACE_NOT_FOUND, szArcID, handle);\r
++ }\r
++ }\r
++ return this;\r
++}\r
++\r
++STDMETHODIMP Format7zDLL::Proxy::CreateObject(const GUID *clsID, const GUID *interfaceID, void **outObject)\r
++{\r
++ return handle.CreateObject(clsID, interfaceID, outObject);\r
++}\r
++\r
++STDMETHODIMP Format7zDLL::Proxy::GetHandlerProperty(PROPID propID, PROPVARIANT *value)\r
++{\r
++ return handle.GetHandlerProperty2(formatIndex, propID, value);\r
++}\r
++\r
++#define DEFINE_FORMAT(name, id, extension, signature) \\r
++ Format7zDLL::Proxy PROXY_##name = \\r
++ { \\r
++ -0x##id, \\r
++ 0, \\r
++ sizeof signature extension - sizeof extension, \\r
++ '@', \\r
++ signature extension + sizeof signature extension - sizeof extension \\r
++ }; \\r
++ Format7zDLL::Interface name = PROXY_##name;\r
++\r
++DEFINE_FORMAT(CFormat7z, 07, "7z", "7z\xBC\xAF\x27\x1C");\r
++DEFINE_FORMAT(CArjHandler, 04, "arj", "\x60\xEA");\r
++DEFINE_FORMAT(CBZip2Handler, 02, "bz2 tbz2", "BZh");\r
++DEFINE_FORMAT(CCabHandler, 08, "cab", "MSCF");\r
++DEFINE_FORMAT(CCpioHandler, ED, "cpio", "");\r
++DEFINE_FORMAT(CDebHandler, EC, "deb", "!<arch>\n");\r
++DEFINE_FORMAT(CLzhHandler, 06, "lzh lha", "@@-l@@-");//"@-l" doesn't work because signature starts at offset 2\r
++DEFINE_FORMAT(CGZipHandler, EF, "gz tgz", "\x1F\x8B");\r
++DEFINE_FORMAT(CRarHandler, 03, "rar", "Rar!\x1a\x07\x00");\r
++DEFINE_FORMAT(CRpmHandler, EB, "rpm", "");\r
++DEFINE_FORMAT(CTarHandler, EE, "tar", "");\r
++DEFINE_FORMAT(CZHandler, 05, "z", "\x1F\x9D");\r
++DEFINE_FORMAT(CZipHandler, 01, "zip jar war ear xpi", "PK\x03\x04");\r
++DEFINE_FORMAT(CChmHandler, E9, "chm chi chq chw hxs hxi hxr hxq hxw lit", "ITSF");\r
++DEFINE_FORMAT(CIsoHandler, E7, "iso", "");\r
++DEFINE_FORMAT(CNsisHandler, 09, "", "@@@@\xEF\xBE\xAD\xDENullsoftInst");\r
++#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 449\r
++DEFINE_FORMAT(CWimHandler, E6, "wim swm", "MSWIM\x00\x00\x00");\r
++#endif\r
++#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 452\r
++DEFINE_FORMAT(CComHandler, E5, "", "\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1");\r
++#endif\r
++#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 458\r
++DEFINE_FORMAT(CLzmaHandler, 0A, "lzma lzma86", "");\r
++#endif\r
++#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 459\r
++DEFINE_FORMAT(CXarHandler, E1, "", "xar!\x00\x1C");\r
++DEFINE_FORMAT(CMubHandler, E2, "mub", "");\r
++DEFINE_FORMAT(CHfsHandler, E3, "hfs", "");\r
++DEFINE_FORMAT(CDmgHandler, E4, "dmg", "");\r
++DEFINE_FORMAT(CElfHandler, DE, "elf", "");\r
++#endif\r
++\r
++/**\r
++ * @brief Construct Merge7z interface.\r
++ */\r
++Merge7z::Merge7z():\r
++Format7z(CFormat7z),\r
++ZipHandler(CZipHandler),\r
++RarHandler(CRarHandler),\r
++BZip2Handler(CBZip2Handler),\r
++TarHandler(CTarHandler)\r
++{\r
++}\r
++\r
++/**\r
++ * @brief Figure out which archiver dll to use for a given archive.\r
++ */\r
++Merge7z::Format *Merge7z::GuessFormat(LPCTSTR path)\r
++{\r
++ if (g_dwFlags & Initialize::GuessFormatBySignature)\r
++ return GuessFormatBySignature(path, g_dwFlags & Initialize::GuessFormatByExtension ? path : 0);\r
++ return GuessFormatByExtension(path);\r
++}\r
++\r
++/**\r
++ * @brief Figure out which archiver dll to use for a given archive.\r
++ */\r
++Merge7z::Format *Merge7z::GuessFormatByExtension(LPCTSTR path)\r
++{\r
++ SZ_EXTENSION ext;\r
++ if (PathIsDirectory(path))\r
++ return 0;\r
++ return GuessFormatEx(GetExtension(path, ext), 0, 0);\r
++}\r
++\r
++/**\r
++ * @brief Figure out which archiver dll to use for a given archive.\r
++ */\r
++Merge7z::Format *Merge7z::GuessFormatBySignature(LPCTSTR path, LPCTSTR extension)\r
++{\r
++ SZ_EXTENSION ext;\r
++ CH_SIGNATURE sig;\r
++ if (PathIsDirectory(path))\r
++ return 0;\r
++ return GuessFormatEx(GetExtension(extension, ext), sig, GetSignature(path, sig));\r
++}\r
++\r
++/**\r
++ * @brief Figure out which archiver dll to use for a given archive.\r
++ */\r
++Merge7z::Format *Merge7z::GuessFormatEx(LPCSTR ext, LPCH sig, int cchSig)\r
++{\r
++ Format7zDLL::Interface *pFormat = Format7zDLL::Interface::head;\r
++ Format7zDLL::Interface *pFormatByExtension = 0;\r
++ while (pFormat)\r
++ {\r
++ static const char aBlank[] = " ";\r
++ LPCSTR pchExtension = pFormat->proxy.extension;\r
++ int cchExtension = pFormat->proxy.sig_count;\r
++ if (cchSig > 0 && cchExtension)\r
++ {\r
++ LPCSTR pchSignature = pchExtension - cchExtension;\r
++ char joker = pFormat->proxy.sig_joker;\r
++ size_t begin = pFormat->proxy.sig_begin;\r
++ if (cchSig >= cchExtension)\r
++ {\r
++ while (cchExtension--)\r
++ {\r
++ char expected = pchSignature[cchExtension];\r
++ if (expected != joker && sig[begin + cchExtension] != expected)\r
++ break;\r
++ }\r
++ if (cchExtension == -1)\r
++ return pFormat;\r
++ }\r
++ }\r
++ else while\r
++ (\r
++ ext\r
++ && pFormatByExtension == 0\r
++ && (cchExtension = StrCSpnA(pchExtension += StrSpnA(pchExtension, aBlank), aBlank)) != 0\r
++ )\r
++ {\r
++ if (StrIsIntlEqualA(FALSE, pchExtension, ext, cchExtension) && ext[cchExtension] == '\0')\r
++ {\r
++ pFormatByExtension = pFormat;\r
++ }\r
++ pchExtension += cchExtension;\r
++ }\r
++ pFormat = pFormat->next;\r
++ }\r
++ return pFormat ? pFormat : pFormatByExtension;\r
++}\r
++\r
++/**\r
++ * @brief Get filename extension as ANSI characters.\r
++ */\r
++LPCSTR Merge7z::GetExtension(LPCTSTR path, SZ_EXTENSION ext)\r
++{\r
++ if (path == NULL)\r
++ return NULL;\r
++ path = PathFindExtension(path);\r
++#ifdef UNICODE\r
++ return WideCharToMultiByte(CP_ACP, 0, path, -1, ext, sizeof(SZ_EXTENSION), 0, 0) > 1 ? ext + 1 : 0;\r
++#else\r
++ ext[sizeof(SZ_EXTENSION) - 2] = '\0';\r
++ lstrcpynA(ext, path, sizeof(SZ_EXTENSION));\r
++ return ext[0] != '\0' && ext[sizeof(SZ_EXTENSION) - 2] == '\0' ? ext + 1 : 0;\r
++#endif\r
++}\r
++\r
++/**\r
++ * @brief Read start signature from given file.\r
++ */\r
++DWORD Merge7z::GetSignature(LPCTSTR path, CH_SIGNATURE sig)\r
++{\r
++ if (sig == NULL)\r
++ return sizeof(CH_SIGNATURE);\r
++ DWORD cchSig = 0;\r
++ HANDLE h = CreateFile(path, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);\r
++ if (h != INVALID_HANDLE_VALUE)\r
++ {\r
++ ReadFile(h, sig, sizeof(CH_SIGNATURE), &cchSig, 0);\r
++ if (cchSig >= 64 && MAKEWORD(sig[0],sig[1]) == IMAGE_DOS_SIGNATURE)\r
++ {\r
++ DWORD offset = \r
++ (\r
++ LPDWORD(sig)[5] //DOS CS:IP\r
++ ? 512UL * (LPWORD(sig)[1] ? LPWORD(sig)[2] - 1 : LPWORD(sig)[2]) + LPWORD(sig)[1]\r
++ : LPDWORD(sig)[15]\r
++ );\r
++ if (SetFilePointer(h, offset, 0, FILE_BEGIN) == offset)\r
++ {\r
++ ReadFile(h, sig, sizeof(CH_SIGNATURE), &cchSig, 0);\r
++ if (cchSig >= 4 + sizeof(IMAGE_FILE_HEADER) && MAKELONG(MAKEWORD(sig[0],sig[1]), MAKEWORD(sig[2],sig[3])) == MAKELONG(MAKEWORD('P','E'), 0))\r
++ {\r
++ cchSig = 0;\r
++ IMAGE_FILE_HEADER *pImageFileHeader = (IMAGE_FILE_HEADER *) (sig + 4);\r
++ offset += 4 + sizeof(IMAGE_FILE_HEADER) + pImageFileHeader->SizeOfOptionalHeader;\r
++ if (SetFilePointer(h, offset, 0, FILE_BEGIN) == offset)\r
++ {\r
++ int iSection = pImageFileHeader->NumberOfSections;\r
++ while (iSection--)\r
++ {\r
++ IMAGE_SECTION_HEADER ImageSectionHeader;\r
++ DWORD cbImageSectionHeader = 0;\r
++ ReadFile(h, &ImageSectionHeader, sizeof ImageSectionHeader, &cbImageSectionHeader, 0);\r
++ if (cbImageSectionHeader != sizeof ImageSectionHeader)\r
++ break;\r
++ if (memcmp(ImageSectionHeader.Name, "_winzip_", 8) == 0)\r
++ {\r
++ // looks like WinZip Self-Extractor\r
++ memcpy(sig, "PK\x03\x04", cchSig = 4);\r
++ break;\r
++ }\r
++ DWORD ahead = ImageSectionHeader.PointerToRawData + ImageSectionHeader.SizeOfRawData;\r
++ if (offset < ahead)\r
++ offset = ahead;\r
++ }\r
++ if (iSection == -1 && SetFilePointer(h, offset, 0, FILE_BEGIN) == offset)\r
++ {\r
++ ReadFile(h, sig, sizeof(CH_SIGNATURE), &cchSig, 0);\r
++ }\r
++ }\r
++ }\r
++ }\r
++ }\r
++ CloseHandle(h);\r
++ }\r
++ return cchSig;\r
++}\r
++\r
++/**\r
++ * @brief Load language file for 7-Zip UIs.\r
++ */\r
++\r
++static CSysString g_LangPath;\r
++\r
++LPCTSTR Merge7z::LoadLang(LPCTSTR langFile)\r
++{\r
++ TCHAR langFileGuess[8];\r
++ if (HIWORD(langFile) == 0)\r
++ {\r
++ langFileGuess[0] = '\0';\r
++ if (int cchLng = GetLocaleInfo(LCID(langFile), LOCALE_SISO639LANGNAME, langFileGuess, 4))\r
++ {\r
++ langFileGuess[cchLng - 1] = '-';\r
++ GetLocaleInfo(LCID(langFile), LOCALE_SISO3166CTRYNAME, langFileGuess + cchLng, 4);\r
++ langFile = langFileGuess;\r
++ }\r
++ }\r
++ g_LangPath = GetSystemString(g_cPath7z);\r
++ g_LangPath += TEXT("Lang\\");\r
++ g_LangPath += langFile;\r
++ int slash = g_LangPath.ReverseFind('\\');\r
++ int minus = g_LangPath.ReverseFind('-');\r
++ int dot = g_LangPath.ReverseFind('.');\r
++ if (dot <= slash)\r
++ {\r
++ dot = g_LangPath.Length();\r
++ g_LangPath += TEXT(".txt");\r
++ }\r
++ if (minus > slash && !PathFileExists(g_LangPath))\r
++ {\r
++ // 2nd chance: filename == language code\r
++ CSysString Region = g_LangPath.Mid(minus, dot - minus);\r
++ Region.Replace('-', '\\');\r
++ g_LangPath.Delete(minus, dot - minus);\r
++ if (!PathFileExists(g_LangPath))\r
++ {\r
++ // 3rd chance: filename == region code (Norwegian)\r
++ g_LangPath.Delete(slash, minus - slash);\r
++ g_LangPath.Insert(slash, Region);\r
++ }\r
++ }\r
++ ReloadLang();\r
++ return g_LangPath;\r
++}\r
++\r
++/**\r
++ * @brief Override ReadRegLang to return path set by Merge7z::LoadLang().\r
++ * This is global 7-Zip function otherwise defined in RegistryUtils.cpp.\r
++ * Exclude RegistryUtils.cpp from build to avoid link-time collision.\r
++ */\r
++\r
++void ReadRegLang(UString &langFile)\r
++{\r
++ langFile = GetUnicodeString(g_LangPath);\r
++}\r
++\r
++void SaveRegLang(const UString &langFile)\r
++{\r
++}\r
++\r
++/**\r
++ * @brief Export instance of Merge7z interface.\r
++ */\r
++EXTERN_C\r
++{\r
++ __declspec(dllexport) Merge7z Merge7z;\r
++}\r
++\r
++EXTERN_C HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi)\r
++{\r
++ // Compute dwBuild from revision.txt\r
++ static const DWORD dwBuild =\r
++ (\r
++ sizeof""\r
++# define VERSION(MAJOR,MINOR)\r
++# include "revision.txt"\r
++# undef VERSION\r
++ );\r
++ C_ASSERT(dwBuild == DllBuild_Merge7z);\r
++ // Compute dwVersion from revision.txt\r
++ static const DWORD dwVersion =\r
++ (\r
++ 0*sizeof""\r
++# define VERSION(MAJOR,MINOR) , MAKELONG(MINOR,MAJOR) + 0*sizeof""\r
++# include "revision.txt"\r
++# undef VERSION\r
++ );\r
++ static const DLLVERSIONINFO dvi =\r
++ {\r
++ sizeof dvi,\r
++ HIWORD(dwVersion), LOWORD(dwVersion), dwBuild, DLLVER_PLATFORM_WINDOWS\r
++ };\r
++ CopyMemory(pdvi, &dvi, pdvi->cbSize < dvi.cbSize ? pdvi->cbSize : dvi.cbSize);\r
++ return S_OK;\r
++}\r
--// includes from 7-Zip sources
--
--#include "7zip/MyVersion.h"
--#include "7zip/Archive/IArchive.h"
--#include "Common/StringConvert.h"
--#include "Windows/PropVariant.h"
--#include "Windows/PropVariantConversions.h"
--#include "Windows/FileDir.h"
--#include "Windows/FileFind.h"
--
--#include "7zip/UI/Common/DirItem.h"
--#include "7zip/Common/FileStreams.h"
--
--// Merge7z includes
--#include "tools.h"
- #define DllBuild_Merge7z 27
-#define DllBuild_Merge7z 28
--#define DLLPSTUB /##/
--#include "Merge7z.h"
--
--typedef char SZ_EXTENSION[8];
- typedef char CH_SIGNATURE[64]; //MAX(4 + IMAGE_SIZEOF_FILE_HEADER, 64)
-typedef char CH_SIGNATURE[512]; //MAX(4 + IMAGE_SIZEOF_FILE_HEADER, 512)
--
--using namespace NWindows;
--
--extern HINSTANCE g_hInstance;
--extern DWORD g_dwFlags;
--extern CHAR g_cPath7z[MAX_PATH];
--
--struct Format7zDLL
--{
-- struct Proxy;
-- interface Interface;
- };
-
- #if MY_VER_MAJOR * 100 + MY_VER_MINOR < 445
-
- struct Format7zDLL::Proxy
- {
- const char *aModule;
- union
- {
- const char *aCreateObject;
- HRESULT(STDAPICALLTYPE*CreateObject)(const GUID *clsID, const GUID *interfaceID, void **outObject);
- };
- union
- {
- const char *aGetHandlerProperty;
- HRESULT(STDAPICALLTYPE*GetHandlerProperty)(PROPID propID, PROPVARIANT *value);
- };
- HMODULE handle;
- const char *extension;
- size_t signature;
- struct Proxy *operator->();
--};
-
- #else
--
--struct Format7zDLL::Proxy
--{
-- INT32 formatIndex;
- WORD sig_begin;
- BYTE sig_count;
- char sig_joker;
-- const char *extension;
- size_t signature;
-- STDMETHODIMP CreateObject(const GUID *clsID, const GUID *interfaceID, void **outObject);
-- STDMETHODIMP GetHandlerProperty(PROPID propID, PROPVARIANT *value);
-- static struct Handle
-- {
-- const char *aModule;
-- union
-- {
-- const char *aCreateObject;
-- HRESULT(STDAPICALLTYPE*CreateObject)(const GUID *clsID, const GUID *interfaceID, void **outObject);
-- };
-- union
-- {
-- const char *aGetHandlerProperty2;
-- HRESULT(STDAPICALLTYPE*GetHandlerProperty2)(UINT32 formatIndex, PROPID propID, PROPVARIANT *value);
-- };
-- union
-- {
-- const char *aGetNumberOfFormats;
-- HRESULT(STDAPICALLTYPE*GetNumberOfFormats)(UINT32 *numFormats);
-- };
-- HMODULE handle;
-- operator HMODULE() { return handle; }
-- } handle;
-- struct Proxy *operator->();
--};
-
- #endif
--
--interface Format7zDLL::Interface : Merge7z::Format
--{
-- Proxy &proxy;
-- static Interface *head;
-- Interface *next;
-- Interface(Proxy &proxy):proxy(proxy), next(head)
-- {
-- head = this;
-- }
-- void GetDefaultName(HWND, UString &);
-- virtual HRESULT CreateObject(const GUID *interfaceID, void **outObject);
-- virtual IInArchive *GetInArchive();
-- virtual HRESULT DeCompressArchive(HWND, LPCTSTR path, LPCTSTR folder);
-- virtual IOutArchive *GetOutArchive();
-- virtual HRESULT CompressArchive(HWND, LPCTSTR path, Merge7z::DirItemEnumerator *);
-- interface Inspector : Merge7z::Format::Inspector
-- {
-- virtual void Free();
-- virtual UINT32 Open();
-- virtual HRESULT Extract(HWND, LPCTSTR folder, const UINT32 *indices = 0, UINT32 numItems = -1);
-- virtual HRESULT GetProperty(UINT32, PROPID, PROPVARIANT *, VARTYPE);
-- virtual BSTR GetPath(UINT32);
-- virtual BSTR GetName(UINT32);
-- virtual BSTR GetExtension(UINT32);
-- virtual VARIANT_BOOL IsFolder(UINT32);
-- virtual FILETIME LastWriteTime(UINT32);
-- virtual BSTR GetDefaultName();
-- Format7zDLL::Interface *const format;
-- IInArchive *archive;
-- CInFileStream *file;
-- IArchiveOpenCallback *callback;
-- CSysString const path;
-- UString ustrDefaultName;
-- bool passwordIsDefined;
-- UString password;
-- NFile::NFind::CFileInfo fileInfo;
-- Inspector(Format7zDLL::Interface *, LPCTSTR);
-- void Init(HWND);
-- };
-- virtual Merge7z::Format::Inspector *Open(HWND, LPCTSTR);
-- interface Updater : Merge7z::Format::Updater
-- {
-- virtual void Free();
-- virtual UINT32 Add(Merge7z::DirItemEnumerator::Item &);
-- virtual HRESULT Commit(HWND);
-- Format7zDLL::Interface *const format;
-- IOutArchive *outArchive;
-- COutFileStream *file;
-- CSysString const path;
- CObjectVector<CDirItem> dirItems;
- CObjectVector<CArchiveItem> archiveItems;
- //CObjectVector<CDirItem> dirItems;
- CDirItems dirItems;
- CObjectVector<CArcItem> archiveItems;
-- Updater(Format7zDLL::Interface *, LPCTSTR);
-- void Init(HWND);
-- };
-- virtual Merge7z::Format::Updater *Update(HWND, LPCTSTR);
-- virtual HRESULT GetHandlerProperty(HWND, PROPID, PROPVARIANT *, VARTYPE);
-- virtual BSTR GetHandlerName(HWND);
-- virtual BSTR GetHandlerClassID(HWND);
-- virtual BSTR GetHandlerExtension(HWND);
-- virtual BSTR GetHandlerAddExtension(HWND);
-- virtual VARIANT_BOOL GetHandlerUpdate(HWND);
-- virtual VARIANT_BOOL GetHandlerKeepName(HWND);
-- virtual BSTR GetDefaultName(HWND, LPCTSTR);
--};
++// includes from 7-Zip sources\r
++\r
++#include "7zip/MyVersion.h"\r
++#include "7zip/Archive/IArchive.h"\r
++#include "Common/StringConvert.h"\r
++#include "Windows/PropVariant.h"\r
++#include "Windows/PropVariantConversions.h"\r
++#include "Windows/FileDir.h"\r
++#include "Windows/FileFind.h"\r
++\r
++#include "7zip/UI/Common/DirItem.h"\r
++#include "7zip/Common/FileStreams.h"\r
++\r
++// Merge7z includes\r
++#include "tools.h"\r
++#define DllBuild_Merge7z 28\r
++#define DLLPSTUB /##/\r
++#include "Merge7z.h"\r
++\r
++typedef char SZ_EXTENSION[8];\r
++typedef char CH_SIGNATURE[512]; //MAX(4 + IMAGE_SIZEOF_FILE_HEADER, 512)\r
++\r
++using namespace NWindows;\r
++\r
++extern HINSTANCE g_hInstance;\r
++extern DWORD g_dwFlags;\r
++extern CHAR g_cPath7z[MAX_PATH];\r
++\r
++struct Format7zDLL\r
++{\r
++ struct Proxy;\r
++ interface Interface;\r
++};\r
++\r
++struct Format7zDLL::Proxy\r
++{\r
++ INT32 formatIndex;\r
++ WORD sig_begin;\r
++ BYTE sig_count;\r
++ char sig_joker;\r
++ const char *extension;\r
++ STDMETHODIMP CreateObject(const GUID *clsID, const GUID *interfaceID, void **outObject);\r
++ STDMETHODIMP GetHandlerProperty(PROPID propID, PROPVARIANT *value);\r
++ static struct Handle\r
++ {\r
++ const char *aModule;\r
++ union\r
++ {\r
++ const char *aCreateObject;\r
++ HRESULT(STDAPICALLTYPE*CreateObject)(const GUID *clsID, const GUID *interfaceID, void **outObject);\r
++ };\r
++ union\r
++ {\r
++ const char *aGetHandlerProperty2;\r
++ HRESULT(STDAPICALLTYPE*GetHandlerProperty2)(UINT32 formatIndex, PROPID propID, PROPVARIANT *value);\r
++ };\r
++ union\r
++ {\r
++ const char *aGetNumberOfFormats;\r
++ HRESULT(STDAPICALLTYPE*GetNumberOfFormats)(UINT32 *numFormats);\r
++ };\r
++ HMODULE handle;\r
++ operator HMODULE() { return handle; }\r
++ } handle;\r
++ struct Proxy *operator->();\r
++};\r
++\r
++interface Format7zDLL::Interface : Merge7z::Format\r
++{\r
++ Proxy &proxy;\r
++ static Interface *head;\r
++ Interface *next;\r
++ Interface(Proxy &proxy):proxy(proxy), next(head)\r
++ {\r
++ head = this;\r
++ }\r
++ void GetDefaultName(HWND, UString &);\r
++ virtual HRESULT CreateObject(const GUID *interfaceID, void **outObject);\r
++ virtual IInArchive *GetInArchive();\r
++ virtual HRESULT DeCompressArchive(HWND, LPCTSTR path, LPCTSTR folder);\r
++ virtual IOutArchive *GetOutArchive();\r
++ virtual HRESULT CompressArchive(HWND, LPCTSTR path, Merge7z::DirItemEnumerator *);\r
++ interface Inspector : Merge7z::Format::Inspector\r
++ {\r
++ virtual void Free();\r
++ virtual UINT32 Open();\r
++ virtual HRESULT Extract(HWND, LPCTSTR folder, const UINT32 *indices = 0, UINT32 numItems = -1);\r
++ virtual HRESULT GetProperty(UINT32, PROPID, PROPVARIANT *, VARTYPE);\r
++ virtual BSTR GetPath(UINT32);\r
++ virtual BSTR GetName(UINT32);\r
++ virtual BSTR GetExtension(UINT32);\r
++ virtual VARIANT_BOOL IsFolder(UINT32);\r
++ virtual FILETIME LastWriteTime(UINT32);\r
++ virtual BSTR GetDefaultName();\r
++ Format7zDLL::Interface *const format;\r
++ IInArchive *archive;\r
++ CInFileStream *file;\r
++ IArchiveOpenCallback *callback;\r
++ CSysString const path;\r
++ UString ustrDefaultName;\r
++ bool passwordIsDefined;\r
++ UString password;\r
++ NFile::NFind::CFileInfo fileInfo;\r
++ Inspector(Format7zDLL::Interface *, LPCTSTR);\r
++ void Init(HWND);\r
++ };\r
++ virtual Merge7z::Format::Inspector *Open(HWND, LPCTSTR);\r
++ interface Updater : Merge7z::Format::Updater\r
++ {\r
++ virtual void Free();\r
++ virtual UINT32 Add(Merge7z::DirItemEnumerator::Item &);\r
++ virtual HRESULT Commit(HWND);\r
++ Format7zDLL::Interface *const format;\r
++ IOutArchive *outArchive;\r
++ COutFileStream *file;\r
++ CSysString const path;\r
++ //CObjectVector<CDirItem> dirItems;\r
++ CDirItems dirItems;\r
++ CObjectVector<CArcItem> archiveItems;\r
++ Updater(Format7zDLL::Interface *, LPCTSTR);\r
++ void Init(HWND);\r
++ };\r
++ virtual Merge7z::Format::Updater *Update(HWND, LPCTSTR);\r
++ virtual HRESULT GetHandlerProperty(HWND, PROPID, PROPVARIANT *, VARTYPE);\r
++ virtual BSTR GetHandlerName(HWND);\r
++ virtual BSTR GetHandlerClassID(HWND);\r
++ virtual BSTR GetHandlerExtension(HWND);\r
++ virtual BSTR GetHandlerAddExtension(HWND);\r
++ virtual VARIANT_BOOL GetHandlerUpdate(HWND);\r
++ virtual VARIANT_BOOL GetHandlerKeepName(HWND);\r
++ virtual BSTR GetDefaultName(HWND, LPCTSTR);\r
++};\r
--- /dev/null
--- /dev/null
++/* Merge7zCommon.cpp: Provide a handy C++ interface to access 7Zip services
++ * Copyright (c) 2003 Jochen Tucht
++ *
++ * License: This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ *
++ * Remarks: This file contains the presumably version-independent parts of
++ * Merge7z code. Version specific code resides in Merge7zXXX.cpp.
++
++Please mind 2. a) of the GNU General Public License, and log your changes below.
++
++DATE: BY: DESCRIPTION:
++========== ================== ================================================
++2003-12-09 Jochen Tucht Created
++2003-12-16 Jochen Tucht GuessFormat() now checks for directory
++2004-03-18 Jochen Tucht Experimental DllGetVersion() based on rcsid.
++2004-10-10 Jochen Tucht DllGetVersion() based on new REVISION.TXT
++2005-01-15 Jochen Tucht Changed as explained in revision.txt
++2005-02-26 Jochen Tucht Changed as explained in revision.txt
++2005-03-19 Jochen Tucht Changed as explained in revision.txt
++2005-06-22 Jochen Tucht Treat .ear and .war like .zip
++2005-07-05 Jochen Tucht Add missing .tbz2
++2005-08-20 Jochen Tucht Option to guess archive format by signature.
++ EnumerateDirectory() in EnumDirItems.cpp has
++ somewhat changed so I can no longer use it.
++2005-10-02 Jochen Tucht Add CHM format
++2005-11-19 Jochen Tucht Minor changes to build against 7z430 beta
++2006-06-28 Jochen Neubeck Add ISO format (introduced with 7z436 beta)
++ Add NSIS format (introduced with 7z440 beta)
++2007-01-27 Jochen Neubeck Unassociate .exe filename extension from NSIS
++ format due to undesired side effect on WinMerge
++2007-04-20 Jochen Neubeck Cope with 7z445's revised plugin system
++2007-07-13 Jochen Neubeck Pass MSI files to CAB handler
++2007-08-25 Jochen Neubeck Add COM format (introduced with 7z452 beta)
++ This format also handles MSI files, which are
++ therefore no longer passed to the CAB handler.
++2007-09-01 Jochen Neubeck No longer #include "LangUtils.h", which has
++ moved to a different location as of 7z453 beta.
++2007-12-22 Jochen Neubeck Unassociate .001 filename extension
++*/
++
++#include "stdafx.h"
++#include "Merge7zCommon453.h"
++
++void ReloadLang(); //Implemented in /*/FileManager/LangUtils.cpp
++
++using namespace NWindows;
++using namespace NFile;
++using namespace NName;
++
++void AddDirFileInfo(
++ const UString &prefix,
++ const UString &fullPathName,
++ NFind::CFileInfoW &fileInfo,
++ CObjectVector<CDirItem> &dirItems)
++{
++ CDirItem item;
++ item.Attributes = fileInfo.Attributes;
++ item.Size = fileInfo.Size;
++ item.CreationTime = fileInfo.CreationTime;
++ item.LastAccessTime = fileInfo.LastAccessTime;
++ item.LastWriteTime = fileInfo.LastWriteTime;
++ item.Name = prefix + fileInfo.Name;
++ item.FullPath = fullPathName;
++ dirItems.Add(item);
++}
++
++static void EnumerateDirectory(
++ const UString &baseFolderPrefix,
++ const UString &directory,
++ const UString &prefix,
++ CObjectVector<CDirItem> &dirItems)
++{
++ NFind::CEnumeratorW enumerator(baseFolderPrefix + directory + wchar_t(kAnyStringWildcard));
++ NFind::CFileInfoW fileInfo;
++ while (enumerator.Next(fileInfo))
++ {
++ AddDirFileInfo(prefix, directory + fileInfo.Name, fileInfo, dirItems);
++ if (fileInfo.IsDirectory())
++ {
++ EnumerateDirectory(baseFolderPrefix, directory + fileInfo.Name + wchar_t(kDirDelimiter),
++ prefix + fileInfo.Name + wchar_t(kDirDelimiter), dirItems);
++ }
++ }
++}
++
++HINSTANCE g_hInstance;
++#ifndef _UNICODE
++bool g_IsNT = false;
++static bool IsItWindowsNT()
++{
++ OSVERSIONINFO versionInfo;
++ versionInfo.dwOSVersionInfoSize = sizeof(versionInfo);
++ if (!::GetVersionEx(&versionInfo))
++ return false;
++ return (versionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT);
++}
++#endif
++
++DWORD g_dwFlags;
++CHAR g_cPath7z[MAX_PATH];
++
++/**
++ * @brief Dll entry point
++ */
++BOOL APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID)
++{
++ if (dwReason == DLL_PROCESS_ATTACH)
++ {
++ g_hInstance = hInstance;
++# ifndef _UNICODE
++ g_IsNT = IsItWindowsNT();
++# endif
++ }
++ return TRUE;
++}
++
++/**
++ * @brief Load a dll and import a number of functions.
++ */
++static HMODULE DllProxyHelper(LPCSTR *proxy, ...)
++{
++ HMODULE handle = NULL;
++ if (LPCSTR name = *proxy)
++ {
++ if (proxy[1] && proxy[1] != name)
++ {
++ char path[MAX_PATH];
++ FormatMessageA
++ (
++ FORMAT_MESSAGE_FROM_STRING|FORMAT_MESSAGE_ARGUMENT_ARRAY,
++ name,
++ 0,
++ 0,
++ path,
++ sizeof path,
++ (va_list *)(&proxy + 1)
++ );
++ handle = LoadLibraryA(path);
++ if (handle)
++ {
++ LPCSTR *export = proxy;
++ *proxy = NULL;
++ while ((name = *++export) != NULL)
++ {
++ *export = (LPCSTR)GetProcAddress(handle, name);
++ if (*export == NULL)
++ {
++ *proxy = proxy[1] = name;
++ export = proxy + 2;
++ break;
++ }
++ }
++ *export = (LPCSTR)handle;
++ }
++ }
++ if ((name = *proxy) != NULL)
++ {
++ DWORD dwError = ERROR_MOD_NOT_FOUND;
++ HMODULE hContext = NULL;
++ if (proxy[1] == name)
++ {
++ dwError = ERROR_PROC_NOT_FOUND;
++ hContext = (HMODULE)proxy[2];
++ }
++ Complain(dwError, GetSystemString(name), hContext);
++ }
++ }
++ return handle;
++}
++
++/**
++ * @brief Ask archiver dll for an interface of given class.
++ */
++HRESULT Format7zDLL::Interface::CreateObject(const GUID *interfaceID, void **outObject)
++{
++ PROPVARIANT value;
++ HRESULT result = proxy->GetHandlerProperty(NArchive::kClassID, &value);
++ if SUCCEEDED(result)
++ {
++ if (value.vt != VT_BSTR || SysStringByteLen(value.bstrVal) != sizeof(GUID))
++ {
++ result = DISP_E_TYPEMISMATCH;
++ }
++ else
++ {
++ result = proxy->CreateObject((const CLSID *)value.bstrVal, interfaceID, outObject);
++ }
++ VariantClear((VARIANT *)&value);
++ }
++ return result;
++}
++
++/**
++ * @brief Ask archiver dll for an instance of IInArchive.
++ */
++IInArchive *Format7zDLL::Interface::GetInArchive()
++{
++ void *pv;
++ if COMPLAIN(CreateObject(&IID_IInArchive, &pv) != S_OK)
++ {
++ Complain(RPC_S_INTERFACE_NOT_FOUND, _T("IInArchive"), proxy.handle);
++ }
++ return static_cast<IInArchive *>(pv);
++}
++
++/**
++ * @brief Ask archiver dll for an instance of IOutArchive.
++ */
++IOutArchive *Format7zDLL::Interface::GetOutArchive()
++{
++ void *pv;
++ if COMPLAIN(CreateObject(&IID_IOutArchive, &pv) != S_OK)
++ {
++ Complain(RPC_S_INTERFACE_NOT_FOUND, _T("IOutArchive"), proxy.handle);
++ }
++ return static_cast<IOutArchive *>(pv);
++}
++
++/**
++ * @brief Extraction method accessible from outside
++ */
++HRESULT Format7zDLL::Interface::DeCompressArchive(HWND hwndParent, LPCTSTR path, LPCTSTR folder)
++{
++ HRESULT result = E_FAIL;
++ if (Merge7z::Format::Inspector *inspector = Open(hwndParent, path))
++ {
++ if (CMyComBSTR(GetHandlerAddExtension(hwndParent)).Length())
++ {
++ //Most handlers seem to be happy with missing index array, but rpm
++ //handler doesn't know how to "extract all" and needs index array
++ //even for the one and only file inside (which is .cpio.gz).
++ static const UINT32 indices[1] = {0};
++ result = inspector->Extract(hwndParent, folder, indices, 1);
++ }
++ else
++ {
++ result = inspector->Extract(hwndParent, folder);
++ }
++ inspector->Free();
++ }
++ return result;
++}
++
++/**
++ * @brief Open archive for inspection.
++ */
++Merge7z::Format::Inspector *Format7zDLL::Interface::Open(HWND hwndParent, LPCTSTR path)
++{
++ Inspector *inspector = new Inspector(this, path);
++ try
++ {
++ inspector->Init(hwndParent);
++ }
++ catch (Complain *complain)
++ {
++ complain->Alert(hwndParent);
++ inspector->Free();
++ inspector = 0;
++ }
++ return inspector;
++}
++
++/**
++ * @brief Prepare inspection interface for iteration.
++ */
++UINT32 Format7zDLL::Interface::Inspector::Open()
++{
++ UINT32 numItems = 0;
++ archive->GetNumberOfItems(&numItems);
++ return numItems;
++}
++
++/**
++ * @brief free inspection interface.
++ */
++void Format7zDLL::Interface::Inspector::Free()
++{
++ Release(archive);
++ Release(static_cast<IInStream *>(file));
++ Release(callback);
++ delete this;
++}
++
++HRESULT Format7zDLL::Interface::Inspector::GetProperty(UINT32 index, PROPID propID, PROPVARIANT *value, VARTYPE vt)
++{
++ VariantInit((VARIANT *)value);
++ HRESULT result = archive->GetProperty(index, propID, value);
++ if (SUCCEEDED(result) && value->vt != vt)
++ {
++ VariantClear((VARIANT *)value);
++ result = DISP_E_TYPEMISMATCH;
++ }
++ return result;
++}
++
++BSTR Format7zDLL::Interface::Inspector::GetPath(UINT32 index)
++{
++ PROPVARIANT value;
++ return SUCCEEDED(GetProperty(index, kpidPath, &value, VT_BSTR)) ? value.bstrVal : 0;
++}
++
++BSTR Format7zDLL::Interface::Inspector::GetName(UINT32 index)
++{
++ PROPVARIANT value;
++ return SUCCEEDED(GetProperty(index, kpidName, &value, VT_BSTR)) ? value.bstrVal : 0;
++}
++
++BSTR Format7zDLL::Interface::Inspector::GetExtension(UINT32 index)
++{
++ PROPVARIANT value;
++ return SUCCEEDED(GetProperty(index, kpidExtension, &value, VT_BSTR)) ? value.bstrVal : 0;
++}
++
++VARIANT_BOOL Format7zDLL::Interface::Inspector::IsFolder(UINT32 index)
++{
++ PROPVARIANT value;
++ return SUCCEEDED(GetProperty(index, kpidIsFolder, &value, VT_BOOL)) ? value.boolVal : 0;
++}
++
++FILETIME Format7zDLL::Interface::Inspector::LastWriteTime(UINT32 index)
++{
++ static const FILETIME invalid = { 0, 0 };
++ PROPVARIANT value;
++ return SUCCEEDED(GetProperty(index, kpidLastWriteTime, &value, VT_FILETIME)) ? value.filetime : invalid;
++}
++
++void Format7zDLL::Interface::GetDefaultName(HWND hwndParent, UString &ustrDefaultName)
++{
++ int dot = ustrDefaultName.ReverseFind('.');
++ int slash = ustrDefaultName.ReverseFind('\\');
++ if (dot > slash)
++ {
++ LPCWSTR pchExtension = ustrDefaultName;
++ pchExtension += dot + 1;
++ static const OLECHAR wBlank[] = L" ";
++ CMyComBSTR bstrHandlerExtension = GetHandlerExtension(hwndParent);
++ CMyComBSTR bstrHandlerAddExtension = GetHandlerAddExtension(hwndParent);
++ LPWSTR pchHandlerExtension = bstrHandlerExtension.m_str;
++ LPWSTR pchHandlerAddExtension = bstrHandlerAddExtension.m_str;
++ while (int cchHandlerAddExtension = StrCSpnW(pchHandlerAddExtension += StrSpnW(pchHandlerAddExtension, wBlank), wBlank))
++ {
++ int cchHandlerExtension = StrCSpnW(pchHandlerExtension += StrSpnW(pchHandlerExtension, wBlank), wBlank);
++ if (StrIsIntlEqualW(FALSE, pchExtension, pchHandlerExtension, cchHandlerExtension) && pchExtension[cchHandlerExtension] == 0)
++ {
++ pchHandlerAddExtension[cchHandlerAddExtension] = '\0'; // will also stop iteration
++ ustrDefaultName.ReleaseBuffer(dot);
++ if (*pchHandlerAddExtension == '.') // consider != '*'
++ {
++ ustrDefaultName += pchHandlerAddExtension;
++ dot += cchHandlerAddExtension; // make ReleaseBuffer(dot) below a NOP
++ }
++ }
++ pchHandlerExtension += cchHandlerExtension;
++ pchHandlerAddExtension += cchHandlerAddExtension;
++ }
++ ustrDefaultName.ReleaseBuffer(dot);
++ ustrDefaultName.Delete(0, slash + 1);
++ }
++ else
++ {
++ ustrDefaultName = L"noname";
++ }
++}
++
++BSTR Format7zDLL::Interface::GetDefaultName(HWND hwndParent, LPCTSTR path)
++{
++ UString ustrDefaultName = GetUnicodeString(path);
++ GetDefaultName(hwndParent, ustrDefaultName);
++ return SysAllocString(ustrDefaultName);
++}
++
++BSTR Format7zDLL::Interface::Inspector::GetDefaultName()
++{
++ //UString ustrDefaultName = GetUnicodeString(path);
++ return SysAllocString(ustrDefaultName);
++}
++
++/**
++ * @brief Open archive for update.
++ */
++Merge7z::Format::Updater *Format7zDLL::Interface::Update(HWND hwndParent, LPCTSTR path)
++{
++ Updater *updater = new Updater(this, path);
++ try
++ {
++ updater->Init(hwndParent);
++ }
++ catch (Complain *complain)
++ {
++ complain->Alert(hwndParent);
++ updater->Free();
++ updater = 0;
++ }
++ return updater;
++}
++
++/**
++ * @brief Add item to updater
++ */
++UINT32 Format7zDLL::Interface::Updater::Add(Merge7z::DirItemEnumerator::Item &etorItem)
++{
++ // fill in the default values from the enumerator
++ CDirItem item;
++ if (etorItem.Mask.Item & etorItem.Mask.Name)
++ item.Name = GetUnicodeString(etorItem.Name);
++ if (etorItem.Mask.Item & etorItem.Mask.FullPath)
++ item.FullPath = GetUnicodeString(etorItem.FullPath);
++ if (etorItem.Mask.Item & etorItem.Mask.Attributes)
++ item.Attributes = etorItem.Attributes;
++ if (etorItem.Mask.Item & etorItem.Mask.Size)
++ item.Size = etorItem.Size;
++ if (etorItem.Mask.Item & etorItem.Mask.CreationTime)
++ item.CreationTime = etorItem.CreationTime;
++ if (etorItem.Mask.Item & etorItem.Mask.LastAccessTime)
++ item.LastAccessTime = etorItem.LastAccessTime;
++ if (etorItem.Mask.Item & etorItem.Mask.LastWriteTime)
++ item.LastWriteTime = etorItem.LastWriteTime;
++ if (etorItem.Mask.Item && (etorItem.Mask.Item & (etorItem.Mask.NeedFindFile|etorItem.Mask.CheckIfPresent)) != etorItem.Mask.NeedFindFile)
++ {
++ // Check the info from the disk
++ NFile::NFind::CFileInfoW fileInfo;
++ if (NFile::NFind::FindFile(item.FullPath, fileInfo))
++ {
++ if (!(etorItem.Mask.Item & etorItem.Mask.Name))
++ item.Name = fileInfo.Name;
++ if (!(etorItem.Mask.Item & etorItem.Mask.Attributes))
++ item.Attributes = fileInfo.Attributes;
++ if (!(etorItem.Mask.Item & etorItem.Mask.Size))
++ item.Size = fileInfo.Size;
++ if (!(etorItem.Mask.Item & etorItem.Mask.CreationTime))
++ item.CreationTime = fileInfo.CreationTime;
++ if (!(etorItem.Mask.Item & etorItem.Mask.LastAccessTime))
++ item.LastAccessTime = fileInfo.LastAccessTime;
++ if (!(etorItem.Mask.Item & etorItem.Mask.LastWriteTime))
++ item.LastWriteTime = fileInfo.LastWriteTime;
++ }
++ else
++ {
++ // file not valid, forget it
++ etorItem.Mask.Item = 0;
++ }
++ }
++ if (etorItem.Mask.Item)
++ {
++ // No check from disk, simply use info from enumerators (risky)
++ // Why risky? This is not at all obvious.
++ dirItems.Add(item);
++ // Recurse into directories (call a function of 7zip)
++ if ((etorItem.Mask.Item & etorItem.Mask.Recurse) && (item.Attributes & FILE_ATTRIBUTE_DIRECTORY))
++ {
++ EnumerateDirectory(UString(), item.FullPath + L'\\',
++ item.Name + L'\\', dirItems);
++ }
++ }
++ return etorItem.Mask.Item;
++}
++
++/**
++ * @brief free updater interface.
++ */
++void Format7zDLL::Interface::Updater::Free()
++{
++ Release(outArchive);
++ Release(static_cast<IOutStream *>(file));
++ delete this;
++}
++
++/**
++ * @brief Compression method accessible from outside
++ *
++ * @note See CAgent::DoOperation (in 7zip source) for model
++ */
++HRESULT Format7zDLL::Interface::CompressArchive(HWND hwndParent, LPCTSTR path, Merge7z::DirItemEnumerator *etor)
++{
++ HRESULT result = E_FAIL;
++ if (Merge7z::Format::Updater *updater = Update(hwndParent, path))
++ {
++ UINT count = etor->Open();
++ while (count--)
++ {
++ Merge7z::DirItemEnumerator::Item etorItem;
++ etorItem.Mask.Item = 0;
++ Merge7z::Envelope *envelope = etor->Enum(etorItem);
++ updater->Add(etorItem);
++ if (envelope)
++ {
++ envelope->Free();
++ }
++ }
++ result = updater->Commit(hwndParent);
++ updater->Free();
++ }
++ return result;
++}
++
++/**
++ * @brief get handler property identified by given propID
++ */
++HRESULT Format7zDLL::Interface::GetHandlerProperty(HWND hwndParent, PROPID propID, PROPVARIANT *value, VARTYPE vt)
++{
++ VariantInit((VARIANT *)value);
++ HRESULT result = DISP_E_EXCEPTION;
++ try
++ {
++ result = proxy->GetHandlerProperty(propID, value);
++ if (SUCCEEDED(result) && value->vt != vt)
++ {
++ VariantClear((VARIANT *)value);
++ result = DISP_E_TYPEMISMATCH;
++ }
++ }
++ catch (Complain *complain)
++ {
++ complain->Alert(hwndParent);
++ }
++ return result;
++}
++
++/**
++ * @brief get Name handler property
++ */
++BSTR Format7zDLL::Interface::GetHandlerName(HWND hwndParent)
++{
++ PROPVARIANT value;
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kName, &value, VT_BSTR)) ? value.bstrVal : 0;
++}
++
++/**
++ * @brief get ClassID handler property
++ */
++BSTR Format7zDLL::Interface::GetHandlerClassID(HWND hwndParent)
++{
++ PROPVARIANT value;
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kClassID, &value, VT_BSTR)) ? value.bstrVal : 0;
++}
++
++/**
++ * @brief get Extension handler property
++ */
++BSTR Format7zDLL::Interface::GetHandlerExtension(HWND hwndParent)
++{
++ PROPVARIANT value;
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kExtension, &value, VT_BSTR)) ? value.bstrVal : 0;
++}
++
++/**
++ * @brief get AddExtension handler property
++ */
++BSTR Format7zDLL::Interface::GetHandlerAddExtension(HWND hwndParent)
++{
++ PROPVARIANT value;
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kAddExtension, &value, VT_BSTR)) ? value.bstrVal : 0;
++}
++
++/**
++ * @brief get Update handler property
++ */
++VARIANT_BOOL Format7zDLL::Interface::GetHandlerUpdate(HWND hwndParent)
++{
++ PROPVARIANT value;
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kUpdate, &value, VT_BOOL)) ? value.boolVal : 0;
++}
++
++/**
++ * @brief get KeepName handler property
++ */
++VARIANT_BOOL Format7zDLL::Interface::GetHandlerKeepName(HWND hwndParent)
++{
++ PROPVARIANT value;
++ return SUCCEEDED(GetHandlerProperty(hwndParent, NArchive::kKeepName, &value, VT_BOOL)) ? value.boolVal : 0;
++}
++
++/**
++ * @brief Initialize the library.
++ */
++int Merge7z::Initialize(DWORD dwFlags)
++{
++ g_dwFlags = dwFlags;
++ if (dwFlags & Initialize::Local7z)
++ {
++ GetModuleFileNameA(g_hInstance, g_cPath7z, sizeof g_cPath7z);
++ PathRemoveFileSpecA(g_cPath7z);
++ }
++ else
++ {
++ DWORD type = 0;
++ DWORD size = sizeof g_cPath7z;
++ SHGetValueA(HKEY_LOCAL_MACHINE, "Software\\7-Zip", "Path", &type, g_cPath7z, &size);
++ }
++ PathAddBackslashA(g_cPath7z);
++ if (WORD wLangID = HIWORD(dwFlags))
++ {
++ LoadLang(MAKEINTATOM(wLangID));
++ }
++ return 0;
++}
++
++Format7zDLL::Interface *Format7zDLL::Interface::head = NULL;
++
++/**
++ * @brief Access archiver dll functions through proxy.
++ */
++#if MY_VER_MAJOR * 100 + MY_VER_MINOR < 445
++
++/**
++ * @brief 7-Zip 4.15+: IsArchiveItemFolder(), needed by CArchiveExtractCallback,
++ * used to reside in OpenArchive.cpp, which has been removed from Merge7z in an
++ * attempt to reduce dependencies (actually got rid of four cpp files).
++ * 7-Zip 4.45+: OpenArchive.cpp included again - no more secondary dependencies.
++ */
++static HRESULT IsArchiveItemProp(IInArchive *archive, UINT32 index, PROPID propID, bool &result)
++{
++ NCOM::CPropVariant prop;
++ RINOK(archive->GetProperty(index, propID, &prop));
++ if(prop.vt == VT_BOOL)
++ result = VARIANT_BOOLToBool(prop.boolVal);
++ else if (prop.vt == VT_EMPTY)
++ result = false;
++ else
++ return E_FAIL;
++ return S_OK;
++}
++
++HRESULT IsArchiveItemFolder(IInArchive *archive, UINT32 index, bool &result)
++{
++ return IsArchiveItemProp(archive, index, kpidIsFolder, result);
++}
++
++HRESULT IsArchiveItemAnti(IInArchive *archive, UINT32 index, bool &result)
++{
++ return IsArchiveItemProp(archive, index, kpidIsAnti, result);
++}
++
++static const char aCreateObject[] = "CreateObject";
++static const char aGetHandlerProperty[] = "GetHandlerProperty";
++
++struct Format7zDLL::Proxy *Format7zDLL::Proxy::operator->()
++{
++ DllProxyHelper(&aModule, g_cPath7z);
++ return this;
++}
++
++#define DEFINE_FORMAT(name, id, dll, extension, signature) \
++ Format7zDLL::Proxy PROXY_##name = \
++ { \
++ "%1Formats\\" dll, \
++ aCreateObject, \
++ aGetHandlerProperty, \
++ (HMODULE)0, \
++ signature extension + sizeof signature extension - sizeof extension, \
++ sizeof signature extension - sizeof extension \
++ }; \
++ Format7zDLL::Interface name = PROXY_##name;
++
++#else
++//DEFINE_FORMAT(CFtpHandler, "FTP.DLL", "ftp", "");
++
++#define CLS_ARC_ID_ITEM(cls) ((cls).Data4[5])
++
++Format7zDLL::Proxy::Handle Format7zDLL::Proxy::handle =
++{
++ "%1!s!7z.dll",
++ "CreateObject",
++ "GetHandlerProperty2",
++ "GetNumberOfFormats",
++ (HMODULE)0
++};
++
++struct Format7zDLL::Proxy *Format7zDLL::Proxy::operator->()
++{
++ DllProxyHelper(&handle.aModule, g_cPath7z);
++ if (formatIndex < 0)
++ {
++ GUID clsId =
++ {
++ 0x23170F69, 0x40C1, 0x278A,
++ 0x10, 0x00, 0x00, 0x01, 0x10, (BYTE)-formatIndex, 0x00, 0x00
++ };
++ UINT32 i = 0;
++ handle.GetNumberOfFormats(&i);
++ while (i)
++ {
++ PROPVARIANT value;
++ ::VariantInit((LPVARIANT)&value);
++ if (SUCCEEDED(handle.GetHandlerProperty2(--i, NArchive::kClassID, &value)) &&
++ value.vt == VT_BSTR &&
++ SysStringByteLen(value.bstrVal) == sizeof(GUID) &&
++ IsEqualGUID(clsId, *value.puuid))
++ {
++ formatIndex = i;
++ i = 0;
++ }
++ ::VariantClear((LPVARIANT)&value);
++ }
++ if (formatIndex < 0)
++ {
++ TCHAR szArcID[4];
++ wsprintf(szArcID, _T("%02x"), (UINT)CLS_ARC_ID_ITEM(clsId));
++ Complain(RPC_S_INTERFACE_NOT_FOUND, szArcID, handle);
++ }
++ }
++ return this;
++}
++
++STDMETHODIMP Format7zDLL::Proxy::CreateObject(const GUID *clsID, const GUID *interfaceID, void **outObject)
++{
++ return handle.CreateObject(clsID, interfaceID, outObject);
++}
++
++STDMETHODIMP Format7zDLL::Proxy::GetHandlerProperty(PROPID propID, PROPVARIANT *value)
++{
++ return handle.GetHandlerProperty2(formatIndex, propID, value);
++}
++
++#define DEFINE_FORMAT(name, id, dll, extension, signature) \
++ Format7zDLL::Proxy PROXY_##name = \
++ { \
++ -0x##id, \
++ signature extension + sizeof signature extension - sizeof extension, \
++ sizeof signature extension - sizeof extension \
++ }; \
++ Format7zDLL::Interface name = PROXY_##name;
++
++#endif
++
++DEFINE_FORMAT(CFormat7z, 07, "7Z.DLL", "7z", "@7z\xBC\xAF\x27\x1C");
++DEFINE_FORMAT(CArjHandler, 04, "ARJ.DLL", "arj", "@\x60\xEA");
++DEFINE_FORMAT(CBZip2Handler, 02, "BZ2.DLL", "bz2 tbz2", "@BZh");
++DEFINE_FORMAT(CCabHandler, 08, "CAB.DLL", "cab", "@MSCF");
++DEFINE_FORMAT(CCpioHandler, ED, "CPIO.DLL", "cpio", "");
++DEFINE_FORMAT(CDebHandler, EC, "DEB.DLL", "deb", "@!<arch>\n");
++DEFINE_FORMAT(CLzhHandler, 06, "LZH.DLL", "lzh lha", "@@@-l@@-");//"@-l" doesn't work because signature starts at offset 2
++DEFINE_FORMAT(CGZipHandler, EF, "GZ.DLL", "gz tgz", "@\x1F\x8B");
++DEFINE_FORMAT(CRarHandler, 03, "RAR.DLL", "rar", "@Rar!\x1a\x07\x00");
++DEFINE_FORMAT(CRpmHandler, EB, "RPM.DLL", "rpm", "");
++DEFINE_FORMAT(CTarHandler, EE, "TAR.DLL", "tar", "");
++DEFINE_FORMAT(CZHandler, 05, "Z.DLL", "z", "@\x1F\x9D");
++DEFINE_FORMAT(CZipHandler, 01, "ZIP.DLL", "zip jar war ear xpi", "@PK\x03\x04");
++DEFINE_FORMAT(CChmHandler, E9, "CHM.DLL", "chm chi chq chw hxs hxi hxr hxq hxw lit", "@ITSF");
++DEFINE_FORMAT(CIsoHandler, E7, "ISO.DLL", "iso", "");
++DEFINE_FORMAT(CNsisHandler, 09, "NSIS.DLL", "", "@@@@@\xEF\xBE\xAD\xDENullsoftInst");
++#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 449
++DEFINE_FORMAT(CWimHandler, E6, "WIM.DLL", "wim swm", "@MSWIM\x00\x00\x00");
++#endif
++#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 452
++DEFINE_FORMAT(CComHandler, E5, "COM.DLL", "", "@\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1");
++#endif
++#if MY_VER_MAJOR * 100 + MY_VER_MINOR >= 458
++DEFINE_FORMAT(CLzmaHandler, 0A, "LZMA.DLL", "lzma lzma86", "");
++#endif
++
++/**
++ * @brief Construct Merge7z interface.
++ */
++Merge7z::Merge7z():
++Format7z(CFormat7z),
++ZipHandler(CZipHandler),
++RarHandler(CRarHandler),
++BZip2Handler(CBZip2Handler),
++TarHandler(CTarHandler)
++{
++}
++
++/**
++ * @brief Figure out which archiver dll to use for a given archive.
++ */
++Merge7z::Format *Merge7z::GuessFormat(LPCTSTR path)
++{
++ if (g_dwFlags & Initialize::GuessFormatBySignature)
++ return GuessFormatBySignature(path, g_dwFlags & Initialize::GuessFormatByExtension ? path : 0);
++ return GuessFormatByExtension(path);
++}
++
++/**
++ * @brief Figure out which archiver dll to use for a given archive.
++ */
++Merge7z::Format *Merge7z::GuessFormatByExtension(LPCTSTR path)
++{
++ SZ_EXTENSION ext;
++ if (PathIsDirectory(path))
++ return 0;
++ return GuessFormatEx(GetExtension(path, ext), 0, 0);
++}
++
++/**
++ * @brief Figure out which archiver dll to use for a given archive.
++ */
++Merge7z::Format *Merge7z::GuessFormatBySignature(LPCTSTR path, LPCTSTR extension)
++{
++ SZ_EXTENSION ext;
++ CH_SIGNATURE sig;
++ if (PathIsDirectory(path))
++ return 0;
++ return GuessFormatEx(GetExtension(extension, ext), sig, GetSignature(path, sig));
++}
++
++/**
++ * @brief Figure out which archiver dll to use for a given archive.
++ */
++Merge7z::Format *Merge7z::GuessFormatEx(LPCSTR ext, LPCH sig, int cchSig)
++{
++ Format7zDLL::Interface *pFormat = Format7zDLL::Interface::head;
++ Format7zDLL::Interface *pFormatByExtension = 0;
++ while (pFormat)
++ {
++ static const char aBlank[] = " ";
++ LPCSTR pchExtension = pFormat->proxy.extension;
++ int cchExtension = pFormat->proxy.signature;
++ if (cchSig > 0 && cchExtension)
++ {
++ LPCSTR pchSignature = pchExtension - cchExtension;
++ char joker = *pchSignature++;
++ --cchExtension;
++ if (cchSig >= cchExtension)
++ {
++ while (cchExtension--)
++ {
++ char expected = pchSignature[cchExtension];
++ if (expected != joker && sig[cchExtension] != expected)
++ break;
++ }
++ if (cchExtension == -1)
++ return pFormat;
++ }
++ }
++ else while
++ (
++ ext
++ && pFormatByExtension == 0
++ && (cchExtension = StrCSpnA(pchExtension += StrSpnA(pchExtension, aBlank), aBlank)) != 0
++ )
++ {
++ if (StrIsIntlEqualA(FALSE, pchExtension, ext, cchExtension) && ext[cchExtension] == '\0')
++ {
++ pFormatByExtension = pFormat;
++ }
++ pchExtension += cchExtension;
++ }
++ pFormat = pFormat->next;
++ }
++ return pFormat ? pFormat : pFormatByExtension;
++}
++
++/**
++ * @brief Get filename extension as ANSI characters.
++ */
++LPCSTR Merge7z::GetExtension(LPCTSTR path, SZ_EXTENSION ext)
++{
++ if (path == NULL)
++ return NULL;
++ path = PathFindExtension(path);
++#ifdef UNICODE
++ return WideCharToMultiByte(CP_ACP, 0, path, -1, ext, sizeof(SZ_EXTENSION), 0, 0) > 1 ? ext + 1 : 0;
++#else
++ ext[sizeof(SZ_EXTENSION) - 2] = '\0';
++ lstrcpynA(ext, path, sizeof(SZ_EXTENSION));
++ return ext[0] != '\0' && ext[sizeof(SZ_EXTENSION) - 2] == '\0' ? ext + 1 : 0;
++#endif
++}
++
++/**
++ * @brief Read start signature from given file.
++ */
++DWORD Merge7z::GetSignature(LPCTSTR path, CH_SIGNATURE sig)
++{
++ if (sig == NULL)
++ return sizeof(CH_SIGNATURE);
++ DWORD cchSig = 0;
++ HANDLE h = CreateFile(path, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
++ if (h != INVALID_HANDLE_VALUE)
++ {
++ ReadFile(h, sig, sizeof(CH_SIGNATURE), &cchSig, 0);
++ if (cchSig >= 64 && MAKEWORD(sig[0],sig[1]) == IMAGE_DOS_SIGNATURE)
++ {
++ DWORD offset =
++ (
++ LPDWORD(sig)[5] //DOS CS:IP
++ ? 512UL * (LPWORD(sig)[1] ? LPWORD(sig)[2] - 1 : LPWORD(sig)[2]) + LPWORD(sig)[1]
++ : LPDWORD(sig)[15]
++ );
++ if (SetFilePointer(h, offset, 0, FILE_BEGIN) == offset)
++ {
++ ReadFile(h, sig, sizeof(CH_SIGNATURE), &cchSig, 0);
++ if (cchSig >= 4 + sizeof(IMAGE_FILE_HEADER) && MAKELONG(MAKEWORD(sig[0],sig[1]), MAKEWORD(sig[2],sig[3])) == MAKELONG(MAKEWORD('P','E'), 0))
++ {
++ cchSig = 0;
++ IMAGE_FILE_HEADER *pImageFileHeader = (IMAGE_FILE_HEADER *) (sig + 4);
++ offset += 4 + sizeof(IMAGE_FILE_HEADER) + pImageFileHeader->SizeOfOptionalHeader;
++ if (SetFilePointer(h, offset, 0, FILE_BEGIN) == offset)
++ {
++ int iSection = pImageFileHeader->NumberOfSections;
++ while (iSection--)
++ {
++ IMAGE_SECTION_HEADER ImageSectionHeader;
++ DWORD cbImageSectionHeader = 0;
++ ReadFile(h, &ImageSectionHeader, sizeof ImageSectionHeader, &cbImageSectionHeader, 0);
++ if (cbImageSectionHeader != sizeof ImageSectionHeader)
++ break;
++ if (memcmp(ImageSectionHeader.Name, "_winzip_", 8) == 0)
++ {
++ // looks like WinZip Self-Extractor
++ memcpy(sig, "PK\x03\x04", cchSig = 4);
++ break;
++ }
++ DWORD ahead = ImageSectionHeader.PointerToRawData + ImageSectionHeader.SizeOfRawData;
++ if (offset < ahead)
++ offset = ahead;
++ }
++ if (iSection == -1 && SetFilePointer(h, offset, 0, FILE_BEGIN) == offset)
++ {
++ ReadFile(h, sig, sizeof(CH_SIGNATURE), &cchSig, 0);
++ }
++ }
++ }
++ }
++ }
++ CloseHandle(h);
++ }
++ return cchSig;
++}
++
++/**
++ * @brief Load language file for 7-Zip UIs.
++ */
++
++static CSysString g_LangPath;
++
++LPCTSTR Merge7z::LoadLang(LPCTSTR langFile)
++{
++ TCHAR langFileGuess[8];
++ if (HIWORD(langFile) == 0)
++ {
++ langFileGuess[0] = '\0';
++ if (int cchLng = GetLocaleInfo(LCID(langFile), LOCALE_SISO639LANGNAME, langFileGuess, 4))
++ {
++ langFileGuess[cchLng - 1] = '-';
++ GetLocaleInfo(LCID(langFile), LOCALE_SISO3166CTRYNAME, langFileGuess + cchLng, 4);
++ langFile = langFileGuess;
++ }
++ }
++ g_LangPath = GetSystemString(g_cPath7z);
++ g_LangPath += TEXT("Lang\\");
++ g_LangPath += langFile;
++ int slash = g_LangPath.ReverseFind('\\');
++ int minus = g_LangPath.ReverseFind('-');
++ int dot = g_LangPath.ReverseFind('.');
++ if (dot <= slash)
++ {
++ dot = g_LangPath.Length();
++ g_LangPath += TEXT(".txt");
++ }
++ if (minus > slash && !PathFileExists(g_LangPath))
++ {
++ // 2nd chance: filename == language code
++ CSysString Region = g_LangPath.Mid(minus, dot - minus);
++ Region.Replace('-', '\\');
++ g_LangPath.Delete(minus, dot - minus);
++ if (!PathFileExists(g_LangPath))
++ {
++ // 3rd chance: filename == region code (Norwegian)
++ g_LangPath.Delete(slash, minus - slash);
++ g_LangPath.Insert(slash, Region);
++ }
++ }
++ ReloadLang();
++ return g_LangPath;
++}
++
++/**
++ * @brief Override ReadRegLang to return path set by Merge7z::LoadLang().
++ * This is global 7-Zip function otherwise defined in RegistryUtils.cpp.
++ * Exclude RegistryUtils.cpp from build to avoid link-time collision.
++ */
++
++void ReadRegLang(UString &langFile)
++{
++ langFile = GetUnicodeString(g_LangPath);
++}
++
++void SaveRegLang(const UString &langFile)
++{
++}
++
++/**
++ * @brief Export instance of Merge7z interface.
++ */
++EXTERN_C
++{
++ __declspec(dllexport) Merge7z Merge7z;
++}
++
++EXTERN_C HRESULT CALLBACK DllGetVersion(DLLVERSIONINFO *pdvi)
++{
++ // Compute dwBuild from revision.txt
++ static const DWORD dwBuild =
++ (
++ sizeof""
++# define VERSION(MAJOR,MINOR)
++# include "revision453.txt"
++# undef VERSION
++ );
++ C_ASSERT(dwBuild == DllBuild_Merge7z);
++ // Compute dwVersion from revision.txt
++ static const DWORD dwVersion =
++ (
++ 0*sizeof""
++# define VERSION(MAJOR,MINOR) , MAKELONG(MINOR,MAJOR) + 0*sizeof""
++# include "revision453.txt"
++# undef VERSION
++ );
++ static const DLLVERSIONINFO dvi =
++ {
++ sizeof dvi,
++ HIWORD(dwVersion), LOWORD(dwVersion), dwBuild, DLLVER_PLATFORM_WINDOWS
++ };
++ CopyMemory(pdvi, &dvi, pdvi->cbSize < dvi.cbSize ? pdvi->cbSize : dvi.cbSize);
++ return S_OK;
++}
--- /dev/null
--- /dev/null
++// includes from 7-Zip sources
++
++#include "7zip/MyVersion.h"
++#include "7zip/Archive/IArchive.h"
++#include "Common/StringConvert.h"
++#include "Windows/PropVariant.h"
++#include "Windows/PropVariantConversions.h"
++#include "Windows/FileDir.h"
++#include "Windows/FileFind.h"
++
++#include "7zip/UI/Common/DirItem.h"
++#include "7zip/Common/FileStreams.h"
++
++// Merge7z includes
++#include "tools.h"
++#define DllBuild_Merge7z 27
++#define DLLPSTUB /##/
++#include "Merge7z.h"
++
++typedef char SZ_EXTENSION[8];
++typedef char CH_SIGNATURE[64]; //MAX(4 + IMAGE_SIZEOF_FILE_HEADER, 64)
++
++using namespace NWindows;
++
++extern HINSTANCE g_hInstance;
++extern DWORD g_dwFlags;
++extern CHAR g_cPath7z[MAX_PATH];
++
++struct Format7zDLL
++{
++ struct Proxy;
++ interface Interface;
++};
++
++#if MY_VER_MAJOR * 100 + MY_VER_MINOR < 445
++
++struct Format7zDLL::Proxy
++{
++ const char *aModule;
++ union
++ {
++ const char *aCreateObject;
++ HRESULT(STDAPICALLTYPE*CreateObject)(const GUID *clsID, const GUID *interfaceID, void **outObject);
++ };
++ union
++ {
++ const char *aGetHandlerProperty;
++ HRESULT(STDAPICALLTYPE*GetHandlerProperty)(PROPID propID, PROPVARIANT *value);
++ };
++ HMODULE handle;
++ const char *extension;
++ size_t signature;
++ struct Proxy *operator->();
++};
++
++#else
++
++struct Format7zDLL::Proxy
++{
++ INT32 formatIndex;
++ const char *extension;
++ size_t signature;
++ STDMETHODIMP CreateObject(const GUID *clsID, const GUID *interfaceID, void **outObject);
++ STDMETHODIMP GetHandlerProperty(PROPID propID, PROPVARIANT *value);
++ static struct Handle
++ {
++ const char *aModule;
++ union
++ {
++ const char *aCreateObject;
++ HRESULT(STDAPICALLTYPE*CreateObject)(const GUID *clsID, const GUID *interfaceID, void **outObject);
++ };
++ union
++ {
++ const char *aGetHandlerProperty2;
++ HRESULT(STDAPICALLTYPE*GetHandlerProperty2)(UINT32 formatIndex, PROPID propID, PROPVARIANT *value);
++ };
++ union
++ {
++ const char *aGetNumberOfFormats;
++ HRESULT(STDAPICALLTYPE*GetNumberOfFormats)(UINT32 *numFormats);
++ };
++ HMODULE handle;
++ operator HMODULE() { return handle; }
++ } handle;
++ struct Proxy *operator->();
++};
++
++#endif
++
++interface Format7zDLL::Interface : Merge7z::Format
++{
++ Proxy &proxy;
++ static Interface *head;
++ Interface *next;
++ Interface(Proxy &proxy):proxy(proxy), next(head)
++ {
++ head = this;
++ }
++ void GetDefaultName(HWND, UString &);
++ virtual HRESULT CreateObject(const GUID *interfaceID, void **outObject);
++ virtual IInArchive *GetInArchive();
++ virtual HRESULT DeCompressArchive(HWND, LPCTSTR path, LPCTSTR folder);
++ virtual IOutArchive *GetOutArchive();
++ virtual HRESULT CompressArchive(HWND, LPCTSTR path, Merge7z::DirItemEnumerator *);
++ interface Inspector : Merge7z::Format::Inspector
++ {
++ virtual void Free();
++ virtual UINT32 Open();
++ virtual HRESULT Extract(HWND, LPCTSTR folder, const UINT32 *indices = 0, UINT32 numItems = -1);
++ virtual HRESULT GetProperty(UINT32, PROPID, PROPVARIANT *, VARTYPE);
++ virtual BSTR GetPath(UINT32);
++ virtual BSTR GetName(UINT32);
++ virtual BSTR GetExtension(UINT32);
++ virtual VARIANT_BOOL IsFolder(UINT32);
++ virtual FILETIME LastWriteTime(UINT32);
++ virtual BSTR GetDefaultName();
++ Format7zDLL::Interface *const format;
++ IInArchive *archive;
++ CInFileStream *file;
++ IArchiveOpenCallback *callback;
++ CSysString const path;
++ UString ustrDefaultName;
++ bool passwordIsDefined;
++ UString password;
++ NFile::NFind::CFileInfo fileInfo;
++ Inspector(Format7zDLL::Interface *, LPCTSTR);
++ void Init(HWND);
++ };
++ virtual Merge7z::Format::Inspector *Open(HWND, LPCTSTR);
++ interface Updater : Merge7z::Format::Updater
++ {
++ virtual void Free();
++ virtual UINT32 Add(Merge7z::DirItemEnumerator::Item &);
++ virtual HRESULT Commit(HWND);
++ Format7zDLL::Interface *const format;
++ IOutArchive *outArchive;
++ COutFileStream *file;
++ CSysString const path;
++ CObjectVector<CDirItem> dirItems;
++ CObjectVector<CArchiveItem> archiveItems;
++ Updater(Format7zDLL::Interface *, LPCTSTR);
++ void Init(HWND);
++ };
++ virtual Merge7z::Format::Updater *Update(HWND, LPCTSTR);
++ virtual HRESULT GetHandlerProperty(HWND, PROPID, PROPVARIANT *, VARTYPE);
++ virtual BSTR GetHandlerName(HWND);
++ virtual BSTR GetHandlerClassID(HWND);
++ virtual BSTR GetHandlerExtension(HWND);
++ virtual BSTR GetHandlerAddExtension(HWND);
++ virtual VARIANT_BOOL GetHandlerUpdate(HWND);
++ virtual VARIANT_BOOL GetHandlerKeepName(HWND);
++ virtual BSTR GetDefaultName(HWND, LPCTSTR);
++};
--Merge7z readme
--==============
--
--The Merge7z DLL files provide WinMerge its seamless handling of compressed files.
--For WinMerge to be able to open compressed files, it requires a Merge7z DLL file,
--(for example, Merge7z430.dll), through which it calls 7-Zip archive code.
--
--7-Zip is a Free and Open Source program handling many compression formats,
--available from:
-- http://www.7-zip.org/
--
--The Merge7z DLL files are available in two forms:
--
--(1) A Windows installer is available, which puts the files into the
--correct place for you. For example, "Merge7zInstaller0017-311-430.exe"
--is a Merge7z installer which will install Merge7z DLL files which are
--compatible with 7-Zip releases 3.11 through 4.30. (The 0017 indicates
--that this is build 0017 of the installer.)
--
--(2) A simple binary bundle is available, from which you should copy
--all files into the same directory as your WinMerge.exe and WinMergeU.exe
--programs (typically this would be C:\Program Files\WinMerge).
--Merge7z0017-311-430.7z is an example of a binary bundle distribution.
--This binary bundle is so named because it is build 0017 and contains DLLs
--compatible with 7-Zip versions 3.11 through 4.30.
--
--
--
--The WinMerge User's Manual contains a chapter on 7-Zip and archive support.
- http://winmerge.org/2.8/manual/installing.html
- http://winmerge.org/docs/manual/Install.html
--
--Configuration information about your current system, and its presence or
--absence of archive support, is available from the WinMerge Help/Configuration
--menu, which will create a long text file containing configuration information.
--The section beginning "Archive support" has details about Merge7z and
--7-Zip files discovered by WinMerge.
++Merge7z readme\r
++==============\r
++\r
++The Merge7z DLL files provide WinMerge its seamless handling of compressed files. \r
++For WinMerge to be able to open compressed files, it requires a Merge7z DLL file, \r
++(for example, Merge7z430.dll), through which it calls 7-Zip archive code.\r
++\r
++7-Zip is a Free and Open Source program handling many compression formats,\r
++available from:\r
++ http://www.7-zip.org/\r
++\r
++The Merge7z DLL files are available in two forms:\r
++\r
++(1) A Windows installer is available, which puts the files into the\r
++correct place for you. For example, "Merge7zInstaller0017-311-430.exe"\r
++is a Merge7z installer which will install Merge7z DLL files which are \r
++compatible with 7-Zip releases 3.11 through 4.30. (The 0017 indicates\r
++that this is build 0017 of the installer.)\r
++\r
++(2) A simple binary bundle is available, from which you should copy\r
++all files into the same directory as your WinMerge.exe and WinMergeU.exe\r
++programs (typically this would be C:\Program Files\WinMerge).\r
++Merge7z0017-311-430.7z is an example of a binary bundle distribution.\r
++This binary bundle is so named because it is build 0017 and contains DLLs \r
++compatible with 7-Zip versions 3.11 through 4.30.\r
++\r
++\r
++\r
++The WinMerge User's Manual contains a chapter on 7-Zip and archive support.\r
++ http://winmerge.org/docs/manual/Install.html\r
++\r
++Configuration information about your current system, and its presence or\r
++absence of archive support, is available from the WinMerge Help/Configuration\r
++menu, which will create a long text file containing configuration information.\r
++The section beginning "Archive support" has details about Merge7z and\r
++7-Zip files discovered by WinMerge.\r
--//Merge7z/revision.txt
--
--"*"//2003-12-16 Jochen Tucht GuessFormat() now checks for directory
--"*"//2004-03-15 Jochen Tucht Fix Visual Studio 2003 build issue
--"*"//2004-04-13 Jochen Tucht Experimental DllGetVersion() based on rcsid.
--"*"//2004-08-19 Laurent Ganier Compression of folders
--// Through EnumerateDirectory (from code of 7zip)
--
--VERSION(2,1)
--
--"*"//2004-10-10 Jochen Tucht Support 7z409 beta. DllGetVersion() no longer
--//based on rcsid. Revision numbers will be generated from new file REVISION.TXT.
--
--"*"//2004-10-17 Jochen Tucht Leave decision whether to recurse into folders
--//to enumerator (Mask.Recurse)
--
--"*"//2004-10-18 Jochen Tucht Change generation of revision numbers to allow
--//for arbitrary version numbers at any stage without affecting build number.
--//Merge7z may now follow a WinMerge-like versioning policy, or just use same
--//version numbers as WinMerge, yet provide a build number simply reflecting
--//the number of changes recorded in this revision.txt.
--
--VERSION(2,2)
--
--"*"//2005-01-15 Jochen Tucht New interface Merge7z::Format::Inspector
--// New interface Merge7z::Format::Updater
--// New method Merge7z::LoadLang() to set UI language
--
--"*"//2005-02-26 Jochen Tucht Fix extensions when unwrapping tgz, rpm, ...
--// Expose some handler properties
--// Fix crash on failure to open archive
--// Use canned system messages wherever possible
--// Fix Merge7z::LoadLang() for no.txt (Norwegian)
--// Use DLLPSTUB if DllBuild_Merge7z >= 10
--// Optimize release builds for size
--
--"*"//2005-03-19 Jochen Tucht Set UI language during Merge7z::Initialize()
--// according to LANGID given in HIWORD(dwFlags)
--// Allow for Merge7z::LoadLang(MAKEINTATOM(LANGID))
--// Don't show error message on intentional abort
--
--"*"//2005-06-22 Jochen Tucht Treat .ear and .war like .zip
--"*"//2005-08-20 Jochen Tucht Option to guess archive format by signature
--"*"//2005-08-25 Jochen Tucht Fix broken GuessFormatByExtension()
--"*"//2005-10-02 Jochen Tucht Add CHM format
--"*"//2005-10-04 Jochen Tucht Don't rely on 7-Zip's format CLSIDs
--"*"//2005-11-19 Jochen Tucht Minor changes to build against 7z430 beta
--"*"//2006-06-28 Jochen Neubeck Add ISO format (introduced with 7z436 beta)
--// Add NSIS format (introduced with 7z440 beta)
--// Avoid to occasionally prompt for password twice
--"*"//2007-01-27 Jochen Neubeck Unassociate .exe filename extension from NSIS
--// format due to undesired side effect on WinMerge
--"*"//2007-04-20 Jochen Neubeck Cope with 7z445's revised plugin system
--"*"//2007-07-13 Jochen Neubeck Pass MSI files to CAB handler
--// Drop support for 7-Zip versions prior to 4.32
--"*"//2007-07-15 Jochen Neubeck Add WIM format (introduced with 7z449 beta)
--"*"//2007-07-16 Jochen Neubeck Cope with revised CThread::Create() in 7z446
--"*"//2007-08-25 Jochen Neubeck Add COM format (introduced with 7z452 beta)
--// No longer pass MSI files to CAB handler
--"*"//2007-09-01 Jochen Neubeck Some refactoring to build against 7z453 beta
--"*"//2007-12-22 Jochen Neubeck Unassociate .001 filename extension
--"*"//2008-08-03 Jochen Neubeck Fix OpenArchive.* being taken from wrong folder
--// Add LZMA format (introduced with 7z458 beta)
-"*"//2010-04-24 Jochen Neubeck New formats introduced with 7z459 beta:
-// XAR, MUB, HFS, DMG, ELF (not sure if they work)
-// Support 7z465, 7z907, 7z909-7z913
++//Merge7z/revision.txt\r
++\r
++"*"//2003-12-16 Jochen Tucht GuessFormat() now checks for directory\r
++"*"//2004-03-15 Jochen Tucht Fix Visual Studio 2003 build issue\r
++"*"//2004-04-13 Jochen Tucht Experimental DllGetVersion() based on rcsid.\r
++"*"//2004-08-19 Laurent Ganier Compression of folders\r
++// Through EnumerateDirectory (from code of 7zip)\r
++\r
++VERSION(2,1)\r
++\r
++"*"//2004-10-10 Jochen Tucht Support 7z409 beta. DllGetVersion() no longer\r
++//based on rcsid. Revision numbers will be generated from new file REVISION.TXT.\r
++\r
++"*"//2004-10-17 Jochen Tucht Leave decision whether to recurse into folders\r
++//to enumerator (Mask.Recurse)\r
++\r
++"*"//2004-10-18 Jochen Tucht Change generation of revision numbers to allow\r
++//for arbitrary version numbers at any stage without affecting build number.\r
++//Merge7z may now follow a WinMerge-like versioning policy, or just use same\r
++//version numbers as WinMerge, yet provide a build number simply reflecting\r
++//the number of changes recorded in this revision.txt.\r
++\r
++VERSION(2,2)\r
++\r
++"*"//2005-01-15 Jochen Tucht New interface Merge7z::Format::Inspector\r
++// New interface Merge7z::Format::Updater\r
++// New method Merge7z::LoadLang() to set UI language\r
++\r
++"*"//2005-02-26 Jochen Tucht Fix extensions when unwrapping tgz, rpm, ...\r
++// Expose some handler properties\r
++// Fix crash on failure to open archive\r
++// Use canned system messages wherever possible\r
++// Fix Merge7z::LoadLang() for no.txt (Norwegian)\r
++// Use DLLPSTUB if DllBuild_Merge7z >= 10\r
++// Optimize release builds for size\r
++\r
++"*"//2005-03-19 Jochen Tucht Set UI language during Merge7z::Initialize()\r
++// according to LANGID given in HIWORD(dwFlags)\r
++// Allow for Merge7z::LoadLang(MAKEINTATOM(LANGID))\r
++// Don't show error message on intentional abort\r
++\r
++"*"//2005-06-22 Jochen Tucht Treat .ear and .war like .zip\r
++"*"//2005-08-20 Jochen Tucht Option to guess archive format by signature\r
++"*"//2005-08-25 Jochen Tucht Fix broken GuessFormatByExtension()\r
++"*"//2005-10-02 Jochen Tucht Add CHM format\r
++"*"//2005-10-04 Jochen Tucht Don't rely on 7-Zip's format CLSIDs\r
++"*"//2005-11-19 Jochen Tucht Minor changes to build against 7z430 beta\r
++"*"//2006-06-28 Jochen Neubeck Add ISO format (introduced with 7z436 beta)\r
++// Add NSIS format (introduced with 7z440 beta)\r
++// Avoid to occasionally prompt for password twice\r
++"*"//2007-01-27 Jochen Neubeck Unassociate .exe filename extension from NSIS\r
++// format due to undesired side effect on WinMerge\r
++"*"//2007-04-20 Jochen Neubeck Cope with 7z445's revised plugin system\r
++"*"//2007-07-13 Jochen Neubeck Pass MSI files to CAB handler\r
++// Drop support for 7-Zip versions prior to 4.32\r
++"*"//2007-07-15 Jochen Neubeck Add WIM format (introduced with 7z449 beta)\r
++"*"//2007-07-16 Jochen Neubeck Cope with revised CThread::Create() in 7z446\r
++"*"//2007-08-25 Jochen Neubeck Add COM format (introduced with 7z452 beta)\r
++// No longer pass MSI files to CAB handler\r
++"*"//2007-09-01 Jochen Neubeck Some refactoring to build against 7z453 beta\r
++"*"//2007-12-22 Jochen Neubeck Unassociate .001 filename extension\r
++"*"//2008-08-03 Jochen Neubeck Fix OpenArchive.* being taken from wrong folder\r
++// Add LZMA format (introduced with 7z458 beta)\r
++"*"//2010-04-24 Jochen Neubeck New formats introduced with 7z459 beta:\r
++// XAR, MUB, HFS, DMG, ELF (not sure if they work)\r
++// Support 7z465, 7z907, 7z909-7z913\r
--- /dev/null
--- /dev/null
++//Merge7z/revision.txt
++
++"*"//2003-12-16 Jochen Tucht GuessFormat() now checks for directory
++"*"//2004-03-15 Jochen Tucht Fix Visual Studio 2003 build issue
++"*"//2004-04-13 Jochen Tucht Experimental DllGetVersion() based on rcsid.
++"*"//2004-08-19 Laurent Ganier Compression of folders
++// Through EnumerateDirectory (from code of 7zip)
++
++VERSION(2,1)
++
++"*"//2004-10-10 Jochen Tucht Support 7z409 beta. DllGetVersion() no longer
++//based on rcsid. Revision numbers will be generated from new file REVISION.TXT.
++
++"*"//2004-10-17 Jochen Tucht Leave decision whether to recurse into folders
++//to enumerator (Mask.Recurse)
++
++"*"//2004-10-18 Jochen Tucht Change generation of revision numbers to allow
++//for arbitrary version numbers at any stage without affecting build number.
++//Merge7z may now follow a WinMerge-like versioning policy, or just use same
++//version numbers as WinMerge, yet provide a build number simply reflecting
++//the number of changes recorded in this revision.txt.
++
++VERSION(2,2)
++
++"*"//2005-01-15 Jochen Tucht New interface Merge7z::Format::Inspector
++// New interface Merge7z::Format::Updater
++// New method Merge7z::LoadLang() to set UI language
++
++"*"//2005-02-26 Jochen Tucht Fix extensions when unwrapping tgz, rpm, ...
++// Expose some handler properties
++// Fix crash on failure to open archive
++// Use canned system messages wherever possible
++// Fix Merge7z::LoadLang() for no.txt (Norwegian)
++// Use DLLPSTUB if DllBuild_Merge7z >= 10
++// Optimize release builds for size
++
++"*"//2005-03-19 Jochen Tucht Set UI language during Merge7z::Initialize()
++// according to LANGID given in HIWORD(dwFlags)
++// Allow for Merge7z::LoadLang(MAKEINTATOM(LANGID))
++// Don't show error message on intentional abort
++
++"*"//2005-06-22 Jochen Tucht Treat .ear and .war like .zip
++"*"//2005-08-20 Jochen Tucht Option to guess archive format by signature
++"*"//2005-08-25 Jochen Tucht Fix broken GuessFormatByExtension()
++"*"//2005-10-02 Jochen Tucht Add CHM format
++"*"//2005-10-04 Jochen Tucht Don't rely on 7-Zip's format CLSIDs
++"*"//2005-11-19 Jochen Tucht Minor changes to build against 7z430 beta
++"*"//2006-06-28 Jochen Neubeck Add ISO format (introduced with 7z436 beta)
++// Add NSIS format (introduced with 7z440 beta)
++// Avoid to occasionally prompt for password twice
++"*"//2007-01-27 Jochen Neubeck Unassociate .exe filename extension from NSIS
++// format due to undesired side effect on WinMerge
++"*"//2007-04-20 Jochen Neubeck Cope with 7z445's revised plugin system
++"*"//2007-07-13 Jochen Neubeck Pass MSI files to CAB handler
++// Drop support for 7-Zip versions prior to 4.32
++"*"//2007-07-15 Jochen Neubeck Add WIM format (introduced with 7z449 beta)
++"*"//2007-07-16 Jochen Neubeck Cope with revised CThread::Create() in 7z446
++"*"//2007-08-25 Jochen Neubeck Add COM format (introduced with 7z452 beta)
++// No longer pass MSI files to CAB handler
++"*"//2007-09-01 Jochen Neubeck Some refactoring to build against 7z453 beta
++"*"//2007-12-22 Jochen Neubeck Unassociate .001 filename extension
++"*"//2008-08-03 Jochen Neubeck Fix OpenArchive.* being taken from wrong folder
++// Add LZMA format (introduced with 7z458 beta)
--Files.rc2 RCDATA Files.rc2
--
--#define SHARPEN($) #$
- #define VIIZIP($) $ 7-ZIP SHARPEN(/7z457bin/$)
-#define VIIZIP($) $ 7-ZIP SHARPEN(/7z465bin/$)
--#define MERGE7Z($) $ Merge7z SHARPEN(../../Build/MergeRelease/$)
--#define MERGE7ZU($) $ Merge7z SHARPEN(../../Build/MergeUnicodeRelease/$)
--
- MERGE7Z(Merge7z432.dll)
- MERGE7ZU(Merge7z432U.dll)
- MERGE7Z(Merge7z433.dll)
- MERGE7ZU(Merge7z433U.dll)
- MERGE7Z(Merge7z434.dll)
- MERGE7ZU(Merge7z434U.dll)
- MERGE7Z(Merge7z435.dll)
- MERGE7ZU(Merge7z435U.dll)
- MERGE7Z(Merge7z436.dll)
- MERGE7ZU(Merge7z436U.dll)
- MERGE7Z(Merge7z437.dll)
- MERGE7ZU(Merge7z437U.dll)
- MERGE7Z(Merge7z438.dll)
- MERGE7ZU(Merge7z438U.dll)
- MERGE7Z(Merge7z439.dll)
- MERGE7ZU(Merge7z439U.dll)
- MERGE7Z(Merge7z440.dll)
- MERGE7ZU(Merge7z440U.dll)
- MERGE7Z(Merge7z442.dll)
- MERGE7ZU(Merge7z442U.dll)
- MERGE7Z(Merge7z443.dll)
- MERGE7ZU(Merge7z443U.dll)
- MERGE7Z(Merge7z444.dll)
- MERGE7ZU(Merge7z444U.dll)
- MERGE7Z(Merge7z445.dll)
- MERGE7ZU(Merge7z445U.dll)
- MERGE7Z(Merge7z446.dll)
- MERGE7ZU(Merge7z446U.dll)
- MERGE7Z(Merge7z447.dll)
- MERGE7ZU(Merge7z447U.dll)
- MERGE7Z(Merge7z448.dll)
- MERGE7ZU(Merge7z448U.dll)
- MERGE7Z(Merge7z449.dll)
- MERGE7ZU(Merge7z449U.dll)
- MERGE7Z(Merge7z450.dll)
- MERGE7ZU(Merge7z450U.dll)
- MERGE7Z(Merge7z451.dll)
- MERGE7ZU(Merge7z451U.dll)
- MERGE7Z(Merge7z452.dll)
- MERGE7ZU(Merge7z452U.dll)
- MERGE7Z(Merge7z453.dll)
- MERGE7ZU(Merge7z453U.dll)
- MERGE7Z(Merge7z454.dll)
- MERGE7ZU(Merge7z454U.dll)
- MERGE7Z(Merge7z455.dll)
- MERGE7ZU(Merge7z455U.dll)
- MERGE7Z(Merge7z456.dll)
- MERGE7ZU(Merge7z456U.dll)
- MERGE7Z(Merge7z457.dll)
- MERGE7ZU(Merge7z457U.dll)
- MERGE7Z(Merge7z458.dll)
- MERGE7ZU(Merge7z458U.dll)
-MERGE7Z(Merge7z465.dll)
-MERGE7ZU(Merge7z465U.dll)
-MERGE7Z(Merge7z907.dll)
-MERGE7ZU(Merge7z907U.dll)
-MERGE7Z(Merge7z909.dll)
-MERGE7ZU(Merge7z909U.dll)
-MERGE7Z(Merge7z910.dll)
-MERGE7ZU(Merge7z910U.dll)
-MERGE7Z(Merge7z911.dll)
-MERGE7ZU(Merge7z911U.dll)
-MERGE7Z(Merge7z912.dll)
-MERGE7ZU(Merge7z912U.dll)
-MERGE7Z(Merge7z913.dll)
-MERGE7ZU(Merge7z913U.dll)
--
--VIIZIP(7zip_pad.xml)
--VIIZIP(7z.dll)
--VIIZIP(Lang/af.txt)
--VIIZIP(Lang/ar.txt)
--VIIZIP(Lang/ast.txt)
--VIIZIP(Lang/az.txt)
--VIIZIP(Lang/ba.txt)
--VIIZIP(Lang/be.txt)
--VIIZIP(Lang/bg.txt)
--VIIZIP(Lang/bn.txt)
--VIIZIP(Lang/br.txt)
--VIIZIP(Lang/ca.txt)
--VIIZIP(Lang/cs.txt)
--VIIZIP(Lang/cy.txt)
--VIIZIP(Lang/da.txt)
--VIIZIP(Lang/de.txt)
--VIIZIP(Lang/el.txt)
--VIIZIP(Lang/en.ttt)
--VIIZIP(Lang/eo.txt)
--VIIZIP(Lang/es.txt)
--VIIZIP(Lang/et.txt)
--VIIZIP(Lang/eu.txt)
--VIIZIP(Lang/ext.txt)
--VIIZIP(Lang/fa.txt)
--VIIZIP(Lang/fi.txt)
--VIIZIP(Lang/fr.txt)
--VIIZIP(Lang/fur.txt)
--VIIZIP(Lang/fy.txt)
--VIIZIP(Lang/gl.txt)
--VIIZIP(Lang/he.txt)
--VIIZIP(Lang/hr.txt)
--VIIZIP(Lang/hu.txt)
--VIIZIP(Lang/hy.txt)
--VIIZIP(Lang/id.txt)
--VIIZIP(Lang/io.txt)
-VIIZIP(Lang/is.txt)
--VIIZIP(Lang/it.txt)
--VIIZIP(Lang/ja.txt)
--VIIZIP(Lang/ka.txt)
--VIIZIP(Lang/ko.txt)
--VIIZIP(Lang/ku.txt)
-VIIZIP(Lang/ku-ckb.txt)
--VIIZIP(Lang/lt.txt)
--VIIZIP(Lang/lv.txt)
--VIIZIP(Lang/mk.txt)
--VIIZIP(Lang/mn.txt)
- VIIZIP(Lang/ms.txt)
--VIIZIP(Lang/mr.txt)
-VIIZIP(Lang/ms.txt)
--VIIZIP(Lang/nb.txt)
--VIIZIP(Lang/ne.txt)
--VIIZIP(Lang/nl.txt)
--VIIZIP(Lang/nn.txt)
-VIIZIP(Lang/pa-in.txt)
--VIIZIP(Lang/pl.txt)
-VIIZIP(Lang/ps.txt)
-VIIZIP(Lang/pt.txt)
--VIIZIP(Lang/pt-br.txt)
--VIIZIP(Lang/ro.txt)
--VIIZIP(Lang/ru.txt)
-VIIZIP(Lang/si.txt)
--VIIZIP(Lang/sk.txt)
--VIIZIP(Lang/sl.txt)
--VIIZIP(Lang/sq.txt)
--VIIZIP(Lang/sr-spc.txt)
--VIIZIP(Lang/sr-spl.txt)
--VIIZIP(Lang/sv.txt)
--VIIZIP(Lang/ta.txt)
--VIIZIP(Lang/th.txt)
--VIIZIP(Lang/tr.txt)
--VIIZIP(Lang/tt.txt)
--VIIZIP(Lang/uk.txt)
--VIIZIP(Lang/uz.txt)
--VIIZIP(Lang/va.txt)
--VIIZIP(Lang/vi.txt)
--VIIZIP(Lang/zh-cn.txt)
--VIIZIP(Lang/zh-tw.txt)
++Files.rc2 RCDATA Files.rc2\r
++\r
++#define SHARPEN($) #$\r
++#define VIIZIP($) $ 7-ZIP SHARPEN(/7z465bin/$)\r
++#define MERGE7Z($) $ Merge7z SHARPEN(../../Build/MergeRelease/$)\r
++#define MERGE7ZU($) $ Merge7z SHARPEN(../../Build/MergeUnicodeRelease/$)\r
++\r
++MERGE7Z(Merge7z465.dll)\r
++MERGE7ZU(Merge7z465U.dll)\r
++MERGE7Z(Merge7z907.dll)\r
++MERGE7ZU(Merge7z907U.dll)\r
++MERGE7Z(Merge7z909.dll)\r
++MERGE7ZU(Merge7z909U.dll)\r
++MERGE7Z(Merge7z910.dll)\r
++MERGE7ZU(Merge7z910U.dll)\r
++MERGE7Z(Merge7z911.dll)\r
++MERGE7ZU(Merge7z911U.dll)\r
++MERGE7Z(Merge7z912.dll)\r
++MERGE7ZU(Merge7z912U.dll)\r
++MERGE7Z(Merge7z913.dll)\r
++MERGE7ZU(Merge7z913U.dll)\r
++\r
++VIIZIP(7zip_pad.xml)\r
++VIIZIP(7z.dll)\r
++VIIZIP(Lang/af.txt)\r
++VIIZIP(Lang/ar.txt)\r
++VIIZIP(Lang/ast.txt)\r
++VIIZIP(Lang/az.txt)\r
++VIIZIP(Lang/ba.txt)\r
++VIIZIP(Lang/be.txt)\r
++VIIZIP(Lang/bg.txt)\r
++VIIZIP(Lang/bn.txt)\r
++VIIZIP(Lang/br.txt)\r
++VIIZIP(Lang/ca.txt)\r
++VIIZIP(Lang/cs.txt)\r
++VIIZIP(Lang/cy.txt)\r
++VIIZIP(Lang/da.txt)\r
++VIIZIP(Lang/de.txt)\r
++VIIZIP(Lang/el.txt)\r
++VIIZIP(Lang/en.ttt)\r
++VIIZIP(Lang/eo.txt)\r
++VIIZIP(Lang/es.txt)\r
++VIIZIP(Lang/et.txt)\r
++VIIZIP(Lang/eu.txt)\r
++VIIZIP(Lang/ext.txt)\r
++VIIZIP(Lang/fa.txt)\r
++VIIZIP(Lang/fi.txt)\r
++VIIZIP(Lang/fr.txt)\r
++VIIZIP(Lang/fur.txt)\r
++VIIZIP(Lang/fy.txt)\r
++VIIZIP(Lang/gl.txt)\r
++VIIZIP(Lang/he.txt)\r
++VIIZIP(Lang/hr.txt)\r
++VIIZIP(Lang/hu.txt)\r
++VIIZIP(Lang/hy.txt)\r
++VIIZIP(Lang/id.txt)\r
++VIIZIP(Lang/io.txt)\r
++VIIZIP(Lang/is.txt)\r
++VIIZIP(Lang/it.txt)\r
++VIIZIP(Lang/ja.txt)\r
++VIIZIP(Lang/ka.txt)\r
++VIIZIP(Lang/ko.txt)\r
++VIIZIP(Lang/ku.txt)\r
++VIIZIP(Lang/ku-ckb.txt)\r
++VIIZIP(Lang/lt.txt)\r
++VIIZIP(Lang/lv.txt)\r
++VIIZIP(Lang/mk.txt)\r
++VIIZIP(Lang/mn.txt)\r
++VIIZIP(Lang/mr.txt)\r
++VIIZIP(Lang/ms.txt)\r
++VIIZIP(Lang/nb.txt)\r
++VIIZIP(Lang/ne.txt)\r
++VIIZIP(Lang/nl.txt)\r
++VIIZIP(Lang/nn.txt)\r
++VIIZIP(Lang/pa-in.txt)\r
++VIIZIP(Lang/pl.txt)\r
++VIIZIP(Lang/ps.txt)\r
++VIIZIP(Lang/pt.txt)\r
++VIIZIP(Lang/pt-br.txt)\r
++VIIZIP(Lang/ro.txt)\r
++VIIZIP(Lang/ru.txt)\r
++VIIZIP(Lang/si.txt)\r
++VIIZIP(Lang/sk.txt)\r
++VIIZIP(Lang/sl.txt)\r
++VIIZIP(Lang/sq.txt)\r
++VIIZIP(Lang/sr-spc.txt)\r
++VIIZIP(Lang/sr-spl.txt)\r
++VIIZIP(Lang/sv.txt)\r
++VIIZIP(Lang/ta.txt)\r
++VIIZIP(Lang/th.txt)\r
++VIIZIP(Lang/tr.txt)\r
++VIIZIP(Lang/tt.txt)\r
++VIIZIP(Lang/uk.txt)\r
++VIIZIP(Lang/uz.txt)\r
++VIIZIP(Lang/va.txt)\r
++VIIZIP(Lang/vi.txt)\r
++VIIZIP(Lang/zh-cn.txt)\r
++VIIZIP(Lang/zh-tw.txt)\r
--/* Installer.cpp: Merge7z plugin installer
-- * Copyright (c) 2005 Jochen Tucht
-- *
-- * License: This program is free software; you can redistribute it and/or modify
-- * it under the terms of the GNU General Public License as published by
-- * the Free Software Foundation; either version 2 of the License, or
-- * (at your option) any later version.
-- *
-- * This program is distributed in the hope that it will be useful,
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * You should have received a copy of the GNU General Public License
-- * along with this program; if not, write to the Free Software
-- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-- *
-- * Remarks: Bundles plugins for all supported versions of 7-Zip in a single
-- * installer. Also includes essential components from latest 7-Zip
-- * stable release for optional standalone operation.
-- * Files to be installed are embedded as resources (see Files.rc2).
-- * The resulting exe must be run through UPX (upx.sourceforge.net)
-- * to reduce size.
--
--Please mind 2. a) of the GNU General Public License, and log your changes below.
--
--DATE: BY: DESCRIPTION:
--========== ================== ================================================
--2005-01-15 Jochen Tucht Created
--2005-02-28 Jochen Tucht Initialize filename in Open dialog to "*.exe"
--2005-04-26 Jochen Tucht No default assumption on program directory
-- Double-click option for in-place extraction
-- Fix empty path issue with GetFileTitle()
-- Accept extraction folder on command line
-- Batch options: /standalone, /select, /commit
- 2005-05-30 Jochen Tucht Standalone option now based on 7z420
- 2005-06-28 Jochen Tucht Standalone option now based on 7z423
- 2005-12-04 Jochen Tucht Standalone option now based on 7z431
- 2005-12-09 Jochen Tucht Standalone option now based on 7z432
- 2006-06-28 Jochen Neubeck Standalone option now based on 7z442
- 2007-12-22 Jochen Neubeck Standalone option now based on 7z457
-2010-05-13 Jochen Neubeck Base application specific installation on 7z465
--*/
--
--#include <windows.h>
-
- #define VERSION7Z 4.57
--
- #pragma intrinsic(memset) // do not depend on CRT
-#define VERSION7Z 4.65
--
--#define SHARPEN(X) #X
--#define SHARPEN2(X) SHARPEN(X)
--
--// Compute dwBuild from revision.txt
--static const DWORD dwBuild =
--(
-- sizeof""
--# define VERSION(MAJOR,MINOR)
--# include "../Merge7z/revision.txt"
--# undef VERSION
--);
--
--static SYSTEMTIME st = {0,0,0,0,0,0,0,0};
--
--LPTSTR NTAPI ArgLower(LPTSTR lpCmdLine)
--{
-- while (*lpCmdLine == VK_SPACE)
-- ++lpCmdLine;
-- return lpCmdLine;
--}
--
--LPTSTR NTAPI ArgUpper(LPTSTR lpCmdLine)
--{
-- TCHAR cSpace = VK_SPACE;
-- while (*lpCmdLine && *lpCmdLine != cSpace)
-- {
-- if (*lpCmdLine == '"')
-- {
-- cSpace ^= VK_SPACE;
-- }
-- ++lpCmdLine;
-- }
-- return lpCmdLine;
--}
--
--int NTAPI PathGetTailLength(LPCTSTR path)
--{
-- //GetFileTitle() returns garbage when passed in empty path...
-- return *path ? GetFileTitle(path, 0, 0) : 0;
--}
--
--void InstallFile(HWND hWnd, LPTSTR lpName, LPCTSTR lpType, LPTSTR path, int cchPath)
--{
-- HMODULE hModule = GetModuleHandle(0);
-- HRSRC hResource = FindResource(hModule, lpName, lpType);
-- DWORD dwSize = SizeofResource(hModule, hResource);
-- LPVOID pResource = LoadResource(hModule, hResource);
-- LPTSTR name = path + cchPath;
-- if (name != lpName)
-- {
-- lstrcpy(name, lpName);
-- }
-- int cchName = lstrlen(name);
-- int i;
-- for (i = 0 ; i < cchName ; ++i)
-- {
-- if (name[i] == '/')
-- {
-- name[i] = '\0';
-- CreateDirectory(path, 0);
-- name[i] = '\\';
-- }
-- }
-- HANDLE hFile = CreateFile(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
-- if (hFile != INVALID_HANDLE_VALUE)
-- {
-- DWORD dwNumberOfBytesWritten;
-- BOOL bSuccess = WriteFile(hFile, pResource, dwSize, &dwNumberOfBytesWritten, 0);
-- FILETIME ft;
-- if (SystemTimeToFileTime(&st, &ft))
-- {
-- SetFileTime(hFile, &ft, &ft, &ft);
-- }
-- CloseHandle(hFile);
-- if (!bSuccess || dwNumberOfBytesWritten != dwSize)
-- {
-- hFile = INVALID_HANDLE_VALUE;
-- }
-- }
-- if (hFile == INVALID_HANDLE_VALUE)
-- {
-- LONG error = GetLastError();
-- name[cchName++] = '\n';
-- FormatMessage
-- (
-- FORMAT_MESSAGE_FROM_SYSTEM,
-- NULL, error,
-- MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT),
-- name + cchName, MAX_PATH, NULL
-- );
-- int response = MessageBox(hWnd, path, 0, MB_ICONSTOP|MB_OKCANCEL);
-- if (response == IDCANCEL)
-- {
-- ExitProcess(1);
-- }
-- }
--}
--
--BOOL CALLBACK fnPopulateList(HMODULE hModule, LPCTSTR lpType, LPTSTR lpName, LONG lParam)
--{
-- TCHAR acName[MAX_PATH];
-- if (ATOM aName = FindAtom(lpName))
-- {
-- GetAtomName(aName, lpName = acName, sizeof acName);
-- }
-- SendDlgItemMessage((HWND)lParam, 100, LB_ADDSTRING, 0, (LPARAM)lpName);
-- return TRUE;
--}
--
--BOOL CALLBACK fnInstallFiles(HMODULE hModule, LPCTSTR lpType, LPTSTR lpName, LONG lParam)
--{
-- HWND hWnd = (HWND)lParam;
-- TCHAR path[8 * MAX_PATH];
-- int cchPath = GetDlgItemText(hWnd, 203, path, 5 * MAX_PATH);
-- int cchName = PathGetTailLength(path);
-- if (cchName < cchPath)
-- {
-- cchPath -= cchName;
-- }
-- if (cchPath != 3 || path[1] != ':')
-- {
-- path[cchPath++] = '\\';
-- }
-- TCHAR acName[MAX_PATH];
-- if (ATOM aName = FindAtom(lpName))
-- {
-- GetAtomName(aName, lpName = acName, sizeof acName);
-- }
-- InstallFile(hWnd, lpName, lpType, path, cchPath);
-- return TRUE;
--}
--
--BOOL CALLBACK DlgMain_InitDialog(HWND hWnd, LPARAM lParam)
--{
-- char date[] = __DATE__; // Compilation date "MMM DD YYYY"
--
-- TCHAR path[5 * MAX_PATH];
-- wsprintf(path + GetWindowText(hWnd, path, MAX_PATH),
-- " (dllbuild %04lu, %s)", dwBuild, date);
-- SetWindowText(hWnd, path);
--
-- TCHAR fmt[MAX_PATH];
-- GetDlgItemText(hWnd, 205, fmt, MAX_PATH);
-- wsprintf(path, fmt, SHARPEN2(VERSION7Z));
-- SetDlgItemText(hWnd, 205, path);
--
-- date[6] = '#';
-- st.wYear = FindAtom(&date[6]);
-- date[6] = '\0';
-- date[3] = '#';
-- st.wDay = FindAtom(&date[3]);
-- date[3] = '\0';
-- st.wMonth = 1;
-- const char *month = "Jan\0Feb\0Mar\0Apr\0May\0Jun\0Jul\0Aug\0Sep\0Oct\0Nov\0Dec";
-- while (lstrcmpi(month, date))
-- {
-- ++st.wMonth;
-- month += 4;
-- }
-- st.wHour = 12;
--
-- EnumResourceNames(GetModuleHandle(0), "Merge7z", fnPopulateList, (LONG)hWnd);
-- LONG lCount = SendDlgItemMessage(hWnd, 100, LB_GETCOUNT , 0, 0);
-- SendDlgItemMessage(hWnd, 100, LB_SELITEMRANGEEX, 0, lCount - 1);
-- CheckRadioButton(hWnd, 201, 202, 201);
-- BOOL bCommit = FALSE;
-- BOOL bSelect = FALSE;
-- LPTSTR lpCmdLine = GetCommandLine();
-- LPTSTR lpArgLower = ArgLower(lpCmdLine);
-- LPTSTR lpArgUpper = ArgUpper(lpArgLower);
-- while (*(lpArgLower = ArgLower(lpArgUpper)))
-- {
-- TCHAR cAhead = *(lpArgUpper = ArgUpper(lpArgLower));
-- *lpArgUpper = '\0';
-- if (0 == lstrcmpi(lpArgLower, "/standalone"))
-- {
-- CheckRadioButton(hWnd, 201, 202, 202);
-- SendMessage(hWnd, WM_COMMAND, 202, 0);
-- CheckDlgButton(hWnd, 205, 1);
-- SendMessage(hWnd, WM_COMMAND, 205, 0);
-- }
-- else if (0 == lstrcmpi(lpArgLower, "/select"))
-- {
-- int lower = -1;
-- int upper = -1;
-- *lpArgUpper = cAhead;
-- if (*(lpArgLower = ArgLower(lpArgUpper)))
-- {
-- cAhead = *(lpArgUpper = ArgUpper(lpArgLower));
-- *lpArgUpper = '\0';
-- lower = SendDlgItemMessage(hWnd, 100, LB_FINDSTRING, -1, (LPARAM)lpArgLower);
-- if (lower == -1)
-- {
-- MessageBox(hWnd, lpArgLower, "No match", MB_ICONSTOP);
-- }
-- }
-- *lpArgUpper = cAhead;
-- if (*(lpArgLower = ArgLower(lpArgUpper)))
-- {
-- cAhead = *(lpArgUpper = ArgUpper(lpArgLower));
-- *lpArgUpper = '\0';
-- int ahead = -1;
-- while ((ahead = SendDlgItemMessage(hWnd, 100, LB_FINDSTRING, ahead, (LPARAM)lpArgLower)) > upper)
-- {
-- upper = ahead;
-- }
-- if (upper == -1)
-- {
-- MessageBox(hWnd, lpArgLower, "No match", MB_ICONSTOP);
-- }
-- }
-- if (lower >= 0 && upper >= 0)
-- {
-- if (!bSelect)
-- {
-- SendDlgItemMessage(hWnd, 100, LB_SETSEL, 0, -1);
-- bSelect = TRUE;
-- }
-- SendDlgItemMessage(hWnd, 100, LB_SELITEMRANGEEX, lower, upper);
-- }
-- }
-- else if (0 == lstrcmpi(lpArgLower, "/commit"))
-- {
-- bCommit = TRUE;
-- }
-- /*//just for test
-- else if (0 == lstrcmpi(lpArgLower, "\"ping pong\""))
-- {
-- MessageBox(hWnd, "", lpArgLower, 0);
-- }*/
-- else
-- {
-- DWORD dwAttributes = GetFileAttributes(lpArgLower);
-- if (dwAttributes != 0xFFFFFFFF && dwAttributes & FILE_ATTRIBUTE_DIRECTORY)
-- {
-- lstrcpy(path, lpArgLower);
-- if (PathGetTailLength(path) > 1)
-- {
-- lstrcat(path, "\\");
-- }
-- lstrcat(path, "*.exe");
-- CheckRadioButton(hWnd, 201, 202, 202);
-- SendMessage(hWnd, WM_COMMAND, 202, 0);
-- SetDlgItemText(hWnd, 203, path);
-- }
-- else
-- {
-- MessageBox(hWnd, lpArgLower, "Not a directory", MB_ICONSTOP);
-- }
-- }
-- *lpArgUpper = cAhead;
-- }
-- if (bCommit)
-- {
-- SendMessage(hWnd, WM_COMMAND, IDOK, 0);
-- }
-- return TRUE;
--}
--
--BOOL CALLBACK DlgMain_BrowseExe(HWND hWnd)
--{
-- struct
-- {
-- OPENFILENAME ofn;
-- TCHAR buffer[5 * MAX_PATH];
-- } path;
- ZeroMemory(&path, sizeof path);
- SecureZeroMemory(&path, sizeof path);
-- path.ofn.lStructSize = sizeof path.ofn;
-- path.ofn.hwndOwner = hWnd;
-- path.ofn.lpstrFile = path.buffer;
-- path.ofn.nMaxFile = sizeof path.buffer;
-- path.ofn.lpstrFilter = "*.exe\0*.exe\0";
-- path.ofn.lpstrTitle = "Browse for application ...";
-- path.ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_PATHMUSTEXIST;
-- int cchPath = GetDlgItemText(hWnd, 203, path.buffer, sizeof path.buffer);
-- int cchName = PathGetTailLength(path.buffer);
-- if (cchName < cchPath)
-- {
-- lstrcpy(path.buffer + cchPath - cchName, "\\*.exe");
-- }
-- if (GetOpenFileName(&path.ofn))
-- {
-- SetDlgItemText(hWnd, 203, path.buffer);
-- }
-- return FALSE;
--}
--
--BOOL CALLBACK DlgMain_InstallFiles(HWND hWnd)
--{
-- HCURSOR hCursor = SetCursor(LoadCursor(0, IDC_WAIT));
-- HINSTANCE hModule = GetModuleHandle(0);
-- int count = SendDlgItemMessage(hWnd, 100, LB_GETCOUNT , 0, 0);
-- int index = 0;
-- TCHAR path[8 * MAX_PATH];
-- int cchPath;
-- if (IsDlgButtonChecked(hWnd, 201))
-- {
-- cchPath = GetSystemDirectory(path, 4 * MAX_PATH);
-- }
-- else
-- {
-- cchPath = GetDlgItemText(hWnd, 203, path, 5 * MAX_PATH);
-- int cchName = PathGetTailLength(path);
-- if (cchName < cchPath)
-- {
-- cchPath -= cchName;
-- }
-- }
-- if (cchPath != 3 || path[1] != ':')
-- {
-- path[cchPath++] = '\\';
-- }
-- LPTSTR name = path + cchPath;
-- while (index < count)
-- {
-- if (SendDlgItemMessage(hWnd, 100, LB_GETSEL, index, 0))
-- {
-- int cchName = SendDlgItemMessage(hWnd, 100, LB_GETTEXT, index, (LPARAM)name);
-- InstallFile(hWnd, name, "Merge7z", path, cchPath);
-- }
-- ++index;
-- }
-- if (IsDlgButtonChecked(hWnd, 205))
-- {
-- EnumResourceNames(GetModuleHandle(0), "7-ZIP", fnInstallFiles, (LONG)hWnd);
-- }
-- SetCursor(hCursor);
-- return TRUE;
--}
--
--BOOL CALLBACK DlgMain_EnableStandalone(HWND hWnd)
--{
-- if (IsDlgButtonChecked(hWnd, 205))
-- {
-- TCHAR buffer[40];
-- const UINT major = UINT(VERSION7Z);
-- const UINT minor = UINT(VERSION7Z * 100) % 100;
-- wsprintf(buffer, "Merge7z%u%02u.dll", major, minor);
-- int lower = SendDlgItemMessage(hWnd, 100, LB_FINDSTRINGEXACT, -1, (LPARAM)buffer);
-- wsprintf(buffer, "Merge7z%u%02uU.dll", major, minor);
-- int upper = SendDlgItemMessage(hWnd, 100, LB_FINDSTRINGEXACT, -1, (LPARAM)buffer);
-- SendDlgItemMessage(hWnd, 100, LB_SELITEMRANGEEX, lower, upper);
-- if (GetFocus() == GetDlgItem(hWnd, 205))
-- {
-- SendDlgItemMessage(hWnd, 100, LB_SETTOPINDEX, lower, 0);
-- }
-- }
-- return TRUE;
--}
--
--BOOL CALLBACK DlgMain(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
--{
-- TCHAR path[8 * MAX_PATH];
-- switch (uMsg)
-- {
-- case WM_INITDIALOG:
-- return DlgMain_InitDialog(hWnd, lParam);
-- case WM_COMMAND:
-- switch (wParam)
-- {
-- case 201:
-- CheckDlgButton(hWnd, 205, 0);
-- //fall through
-- case 202:
-- EnableWindow(GetDlgItem(hWnd, 203), wParam == 202);
-- EnableWindow(GetDlgItem(hWnd, 204), wParam == 202);
-- EnableWindow(GetDlgItem(hWnd, 205), wParam == 202);
-- SetDlgItemText(hWnd, 203, "");
-- break;
-- case MAKELONG(202, BN_DOUBLECLICKED):
-- GetModuleFileName(0, path, sizeof path);
-- SetDlgItemText(hWnd, 203, path);
-- break;
-- case MAKELONG(203, EN_CHANGE):
-- EnableWindow(GetDlgItem(hWnd, IDOK), GetWindowTextLength((HWND)lParam) || IsDlgButtonChecked(hWnd, 201));
-- break;
-- case 204:
-- return DlgMain_BrowseExe(hWnd);
-- case 205:
-- if (IsDlgButtonChecked(hWnd, 205) && GetKeyState(VK_SHIFT) >= 0)
-- SendDlgItemMessage(hWnd, 100, LB_SETSEL, 0, -1);
-- //fall through
-- case MAKELONG(100, LBN_SELCHANGE):
-- return DlgMain_EnableStandalone(hWnd);
-- case IDOK: if (DlgMain_InstallFiles(hWnd)) case IDCANCEL:
-- EndDialog(hWnd, wParam);
-- break;
-- }
-- return TRUE;
-- }
-- return FALSE;
--}
--
--void WinMainCRTStartup(void)
--{
-- InitAtomTable(0x3001);
-- HINSTANCE hModule = GetModuleHandle(0);
-- HRSRC hResource = FindResource(hModule, "Files.rc2", RT_RCDATA);
-- char *q = (char *)LoadResource(hModule, hResource);
-- DWORD n = SizeofResource(hModule, hResource);
-- char directive[MAX_PATH];
-- char arguments[MAX_PATH];
-- char *p = 0;
-- char c = '\n';
-- while (n)
-- {
-- switch (c)
-- {
-- case '(':
-- p = arguments;
-- break;
-- case ')':
-- if (*directive == '\n')
-- AddAtom(arguments);
-- //fall through
-- case '\n':
-- case '#':
-- p = directive;
-- //fall through
-- default:
-- *p++ = c;
-- *p = '\0';
-- break;
-- }
-- c = *q++;
-- --n;
-- }
-- DialogBoxParam(hModule, MAKEINTRESOURCE(100), 0, DlgMain, 0);
-- ExitProcess(0);
--}
++/* Installer.cpp: Merge7z plugin installer\r
++ * Copyright (c) 2005 Jochen Tucht\r
++ *\r
++ * License: This program is free software; you can redistribute it and/or modify\r
++ * it under the terms of the GNU General Public License as published by\r
++ * the Free Software Foundation; either version 2 of the License, or\r
++ * (at your option) any later version.\r
++ *\r
++ * This program is distributed in the hope that it will be useful,\r
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
++ * GNU General Public License for more details.\r
++ *\r
++ * You should have received a copy of the GNU General Public License\r
++ * along with this program; if not, write to the Free Software\r
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
++ *\r
++ * Remarks: Bundles plugins for all supported versions of 7-Zip in a single\r
++ * installer. Also includes essential components from latest 7-Zip\r
++ * stable release for optional standalone operation.\r
++ * Files to be installed are embedded as resources (see Files.rc2).\r
++ * The resulting exe must be run through UPX (upx.sourceforge.net)\r
++ * to reduce size.\r
++\r
++Please mind 2. a) of the GNU General Public License, and log your changes below.\r
++\r
++DATE: BY: DESCRIPTION:\r
++========== ================== ================================================\r
++2005-01-15 Jochen Tucht Created\r
++2005-02-28 Jochen Tucht Initialize filename in Open dialog to "*.exe"\r
++2005-04-26 Jochen Tucht No default assumption on program directory\r
++ Double-click option for in-place extraction\r
++ Fix empty path issue with GetFileTitle()\r
++ Accept extraction folder on command line\r
++ Batch options: /standalone, /select, /commit\r
++2010-05-13 Jochen Neubeck Base application specific installation on 7z465\r
++*/\r
++\r
++#include <windows.h>\r
++\r
++#define VERSION7Z 4.65\r
++\r
++#define SHARPEN(X) #X\r
++#define SHARPEN2(X) SHARPEN(X)\r
++\r
++// Compute dwBuild from revision.txt\r
++static const DWORD dwBuild =\r
++(\r
++ sizeof""\r
++# define VERSION(MAJOR,MINOR)\r
++# include "../Merge7z/revision.txt"\r
++# undef VERSION\r
++);\r
++\r
++static SYSTEMTIME st = {0,0,0,0,0,0,0,0};\r
++\r
++LPTSTR NTAPI ArgLower(LPTSTR lpCmdLine)\r
++{\r
++ while (*lpCmdLine == VK_SPACE)\r
++ ++lpCmdLine;\r
++ return lpCmdLine;\r
++}\r
++\r
++LPTSTR NTAPI ArgUpper(LPTSTR lpCmdLine)\r
++{\r
++ TCHAR cSpace = VK_SPACE;\r
++ while (*lpCmdLine && *lpCmdLine != cSpace)\r
++ {\r
++ if (*lpCmdLine == '"')\r
++ {\r
++ cSpace ^= VK_SPACE;\r
++ }\r
++ ++lpCmdLine;\r
++ }\r
++ return lpCmdLine;\r
++}\r
++\r
++int NTAPI PathGetTailLength(LPCTSTR path)\r
++{\r
++ //GetFileTitle() returns garbage when passed in empty path...\r
++ return *path ? GetFileTitle(path, 0, 0) : 0;\r
++}\r
++\r
++void InstallFile(HWND hWnd, LPTSTR lpName, LPCTSTR lpType, LPTSTR path, int cchPath)\r
++{\r
++ HMODULE hModule = GetModuleHandle(0);\r
++ HRSRC hResource = FindResource(hModule, lpName, lpType);\r
++ DWORD dwSize = SizeofResource(hModule, hResource);\r
++ LPVOID pResource = LoadResource(hModule, hResource);\r
++ LPTSTR name = path + cchPath;\r
++ if (name != lpName)\r
++ {\r
++ lstrcpy(name, lpName);\r
++ }\r
++ int cchName = lstrlen(name);\r
++ int i;\r
++ for (i = 0 ; i < cchName ; ++i)\r
++ {\r
++ if (name[i] == '/')\r
++ {\r
++ name[i] = '\0';\r
++ CreateDirectory(path, 0);\r
++ name[i] = '\\';\r
++ }\r
++ }\r
++ HANDLE hFile = CreateFile(path, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);\r
++ if (hFile != INVALID_HANDLE_VALUE)\r
++ {\r
++ DWORD dwNumberOfBytesWritten;\r
++ BOOL bSuccess = WriteFile(hFile, pResource, dwSize, &dwNumberOfBytesWritten, 0);\r
++ FILETIME ft;\r
++ if (SystemTimeToFileTime(&st, &ft))\r
++ {\r
++ SetFileTime(hFile, &ft, &ft, &ft);\r
++ }\r
++ CloseHandle(hFile);\r
++ if (!bSuccess || dwNumberOfBytesWritten != dwSize)\r
++ {\r
++ hFile = INVALID_HANDLE_VALUE;\r
++ }\r
++ }\r
++ if (hFile == INVALID_HANDLE_VALUE)\r
++ {\r
++ LONG error = GetLastError();\r
++ name[cchName++] = '\n';\r
++ FormatMessage\r
++ (\r
++ FORMAT_MESSAGE_FROM_SYSTEM,\r
++ NULL, error,\r
++ MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT),\r
++ name + cchName, MAX_PATH, NULL\r
++ );\r
++ int response = MessageBox(hWnd, path, 0, MB_ICONSTOP|MB_OKCANCEL);\r
++ if (response == IDCANCEL)\r
++ {\r
++ ExitProcess(1);\r
++ }\r
++ }\r
++}\r
++\r
++BOOL CALLBACK fnPopulateList(HMODULE hModule, LPCTSTR lpType, LPTSTR lpName, LONG lParam)\r
++{\r
++ TCHAR acName[MAX_PATH];\r
++ if (ATOM aName = FindAtom(lpName))\r
++ {\r
++ GetAtomName(aName, lpName = acName, sizeof acName);\r
++ }\r
++ SendDlgItemMessage((HWND)lParam, 100, LB_ADDSTRING, 0, (LPARAM)lpName);\r
++ return TRUE;\r
++}\r
++\r
++BOOL CALLBACK fnInstallFiles(HMODULE hModule, LPCTSTR lpType, LPTSTR lpName, LONG lParam)\r
++{\r
++ HWND hWnd = (HWND)lParam;\r
++ TCHAR path[8 * MAX_PATH];\r
++ int cchPath = GetDlgItemText(hWnd, 203, path, 5 * MAX_PATH);\r
++ int cchName = PathGetTailLength(path);\r
++ if (cchName < cchPath)\r
++ {\r
++ cchPath -= cchName;\r
++ }\r
++ if (cchPath != 3 || path[1] != ':')\r
++ {\r
++ path[cchPath++] = '\\';\r
++ }\r
++ TCHAR acName[MAX_PATH];\r
++ if (ATOM aName = FindAtom(lpName))\r
++ {\r
++ GetAtomName(aName, lpName = acName, sizeof acName);\r
++ }\r
++ InstallFile(hWnd, lpName, lpType, path, cchPath);\r
++ return TRUE;\r
++}\r
++\r
++BOOL CALLBACK DlgMain_InitDialog(HWND hWnd, LPARAM lParam)\r
++{\r
++ char date[] = __DATE__; // Compilation date "MMM DD YYYY"\r
++\r
++ TCHAR path[5 * MAX_PATH];\r
++ wsprintf(path + GetWindowText(hWnd, path, MAX_PATH),\r
++ " (dllbuild %04lu, %s)", dwBuild, date);\r
++ SetWindowText(hWnd, path);\r
++\r
++ TCHAR fmt[MAX_PATH];\r
++ GetDlgItemText(hWnd, 205, fmt, MAX_PATH);\r
++ wsprintf(path, fmt, SHARPEN2(VERSION7Z));\r
++ SetDlgItemText(hWnd, 205, path);\r
++\r
++ date[6] = '#';\r
++ st.wYear = FindAtom(&date[6]);\r
++ date[6] = '\0';\r
++ date[3] = '#';\r
++ st.wDay = FindAtom(&date[3]);\r
++ date[3] = '\0';\r
++ st.wMonth = 1;\r
++ const char *month = "Jan\0Feb\0Mar\0Apr\0May\0Jun\0Jul\0Aug\0Sep\0Oct\0Nov\0Dec";\r
++ while (lstrcmpi(month, date))\r
++ {\r
++ ++st.wMonth;\r
++ month += 4;\r
++ } \r
++ st.wHour = 12;\r
++\r
++ EnumResourceNames(GetModuleHandle(0), "Merge7z", fnPopulateList, (LONG)hWnd);\r
++ LONG lCount = SendDlgItemMessage(hWnd, 100, LB_GETCOUNT , 0, 0);\r
++ SendDlgItemMessage(hWnd, 100, LB_SELITEMRANGEEX, 0, lCount - 1);\r
++ CheckRadioButton(hWnd, 201, 202, 201);\r
++ BOOL bCommit = FALSE;\r
++ BOOL bSelect = FALSE;\r
++ LPTSTR lpCmdLine = GetCommandLine();\r
++ LPTSTR lpArgLower = ArgLower(lpCmdLine);\r
++ LPTSTR lpArgUpper = ArgUpper(lpArgLower);\r
++ while (*(lpArgLower = ArgLower(lpArgUpper)))\r
++ {\r
++ TCHAR cAhead = *(lpArgUpper = ArgUpper(lpArgLower));\r
++ *lpArgUpper = '\0';\r
++ if (0 == lstrcmpi(lpArgLower, "/standalone"))\r
++ {\r
++ CheckRadioButton(hWnd, 201, 202, 202);\r
++ SendMessage(hWnd, WM_COMMAND, 202, 0);\r
++ CheckDlgButton(hWnd, 205, 1);\r
++ SendMessage(hWnd, WM_COMMAND, 205, 0);\r
++ }\r
++ else if (0 == lstrcmpi(lpArgLower, "/select"))\r
++ {\r
++ int lower = -1;\r
++ int upper = -1;\r
++ *lpArgUpper = cAhead;\r
++ if (*(lpArgLower = ArgLower(lpArgUpper)))\r
++ {\r
++ cAhead = *(lpArgUpper = ArgUpper(lpArgLower));\r
++ *lpArgUpper = '\0';\r
++ lower = SendDlgItemMessage(hWnd, 100, LB_FINDSTRING, -1, (LPARAM)lpArgLower);\r
++ if (lower == -1)\r
++ {\r
++ MessageBox(hWnd, lpArgLower, "No match", MB_ICONSTOP);\r
++ }\r
++ }\r
++ *lpArgUpper = cAhead;\r
++ if (*(lpArgLower = ArgLower(lpArgUpper)))\r
++ {\r
++ cAhead = *(lpArgUpper = ArgUpper(lpArgLower));\r
++ *lpArgUpper = '\0';\r
++ int ahead = -1;\r
++ while ((ahead = SendDlgItemMessage(hWnd, 100, LB_FINDSTRING, ahead, (LPARAM)lpArgLower)) > upper)\r
++ {\r
++ upper = ahead;\r
++ }\r
++ if (upper == -1)\r
++ {\r
++ MessageBox(hWnd, lpArgLower, "No match", MB_ICONSTOP);\r
++ }\r
++ }\r
++ if (lower >= 0 && upper >= 0)\r
++ {\r
++ if (!bSelect)\r
++ {\r
++ SendDlgItemMessage(hWnd, 100, LB_SETSEL, 0, -1);\r
++ bSelect = TRUE;\r
++ }\r
++ SendDlgItemMessage(hWnd, 100, LB_SELITEMRANGEEX, lower, upper);\r
++ }\r
++ }\r
++ else if (0 == lstrcmpi(lpArgLower, "/commit"))\r
++ {\r
++ bCommit = TRUE;\r
++ }\r
++ /*//just for test\r
++ else if (0 == lstrcmpi(lpArgLower, "\"ping pong\""))\r
++ {\r
++ MessageBox(hWnd, "", lpArgLower, 0);\r
++ }*/\r
++ else\r
++ {\r
++ DWORD dwAttributes = GetFileAttributes(lpArgLower);\r
++ if (dwAttributes != 0xFFFFFFFF && dwAttributes & FILE_ATTRIBUTE_DIRECTORY)\r
++ {\r
++ lstrcpy(path, lpArgLower);\r
++ if (PathGetTailLength(path) > 1)\r
++ {\r
++ lstrcat(path, "\\");\r
++ }\r
++ lstrcat(path, "*.exe");\r
++ CheckRadioButton(hWnd, 201, 202, 202);\r
++ SendMessage(hWnd, WM_COMMAND, 202, 0);\r
++ SetDlgItemText(hWnd, 203, path);\r
++ }\r
++ else\r
++ {\r
++ MessageBox(hWnd, lpArgLower, "Not a directory", MB_ICONSTOP);\r
++ }\r
++ }\r
++ *lpArgUpper = cAhead;\r
++ }\r
++ if (bCommit)\r
++ {\r
++ SendMessage(hWnd, WM_COMMAND, IDOK, 0);\r
++ }\r
++ return TRUE;\r
++}\r
++\r
++BOOL CALLBACK DlgMain_BrowseExe(HWND hWnd)\r
++{\r
++ struct\r
++ {\r
++ OPENFILENAME ofn;\r
++ TCHAR buffer[5 * MAX_PATH];\r
++ } path;\r
++ SecureZeroMemory(&path, sizeof path);\r
++ path.ofn.lStructSize = sizeof path.ofn;\r
++ path.ofn.hwndOwner = hWnd;\r
++ path.ofn.lpstrFile = path.buffer;\r
++ path.ofn.nMaxFile = sizeof path.buffer;\r
++ path.ofn.lpstrFilter = "*.exe\0*.exe\0";\r
++ path.ofn.lpstrTitle = "Browse for application ...";\r
++ path.ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_PATHMUSTEXIST;\r
++ int cchPath = GetDlgItemText(hWnd, 203, path.buffer, sizeof path.buffer);\r
++ int cchName = PathGetTailLength(path.buffer);\r
++ if (cchName < cchPath)\r
++ {\r
++ lstrcpy(path.buffer + cchPath - cchName, "\\*.exe");\r
++ }\r
++ if (GetOpenFileName(&path.ofn))\r
++ {\r
++ SetDlgItemText(hWnd, 203, path.buffer);\r
++ }\r
++ return FALSE;\r
++}\r
++\r
++BOOL CALLBACK DlgMain_InstallFiles(HWND hWnd)\r
++{\r
++ HCURSOR hCursor = SetCursor(LoadCursor(0, IDC_WAIT));\r
++ HINSTANCE hModule = GetModuleHandle(0);\r
++ int count = SendDlgItemMessage(hWnd, 100, LB_GETCOUNT , 0, 0);\r
++ int index = 0;\r
++ TCHAR path[8 * MAX_PATH];\r
++ int cchPath;\r
++ if (IsDlgButtonChecked(hWnd, 201))\r
++ {\r
++ cchPath = GetSystemDirectory(path, 4 * MAX_PATH);\r
++ }\r
++ else\r
++ {\r
++ cchPath = GetDlgItemText(hWnd, 203, path, 5 * MAX_PATH);\r
++ int cchName = PathGetTailLength(path);\r
++ if (cchName < cchPath)\r
++ {\r
++ cchPath -= cchName;\r
++ }\r
++ }\r
++ if (cchPath != 3 || path[1] != ':')\r
++ {\r
++ path[cchPath++] = '\\';\r
++ }\r
++ LPTSTR name = path + cchPath;\r
++ while (index < count)\r
++ {\r
++ if (SendDlgItemMessage(hWnd, 100, LB_GETSEL, index, 0))\r
++ {\r
++ int cchName = SendDlgItemMessage(hWnd, 100, LB_GETTEXT, index, (LPARAM)name);\r
++ InstallFile(hWnd, name, "Merge7z", path, cchPath);\r
++ }\r
++ ++index;\r
++ }\r
++ if (IsDlgButtonChecked(hWnd, 205))\r
++ {\r
++ EnumResourceNames(GetModuleHandle(0), "7-ZIP", fnInstallFiles, (LONG)hWnd);\r
++ }\r
++ SetCursor(hCursor);\r
++ return TRUE;\r
++}\r
++\r
++BOOL CALLBACK DlgMain_EnableStandalone(HWND hWnd)\r
++{\r
++ if (IsDlgButtonChecked(hWnd, 205))\r
++ {\r
++ TCHAR buffer[40];\r
++ const UINT major = UINT(VERSION7Z);\r
++ const UINT minor = UINT(VERSION7Z * 100) % 100;\r
++ wsprintf(buffer, "Merge7z%u%02u.dll", major, minor);\r
++ int lower = SendDlgItemMessage(hWnd, 100, LB_FINDSTRINGEXACT, -1, (LPARAM)buffer);\r
++ wsprintf(buffer, "Merge7z%u%02uU.dll", major, minor);\r
++ int upper = SendDlgItemMessage(hWnd, 100, LB_FINDSTRINGEXACT, -1, (LPARAM)buffer);\r
++ SendDlgItemMessage(hWnd, 100, LB_SELITEMRANGEEX, lower, upper);\r
++ if (GetFocus() == GetDlgItem(hWnd, 205))\r
++ {\r
++ SendDlgItemMessage(hWnd, 100, LB_SETTOPINDEX, lower, 0);\r
++ }\r
++ }\r
++ return TRUE;\r
++}\r
++\r
++BOOL CALLBACK DlgMain(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)\r
++{\r
++ TCHAR path[8 * MAX_PATH];\r
++ switch (uMsg)\r
++ {\r
++ case WM_INITDIALOG:\r
++ return DlgMain_InitDialog(hWnd, lParam);\r
++ case WM_COMMAND:\r
++ switch (wParam)\r
++ {\r
++ case 201:\r
++ CheckDlgButton(hWnd, 205, 0);\r
++ //fall through\r
++ case 202:\r
++ EnableWindow(GetDlgItem(hWnd, 203), wParam == 202);\r
++ EnableWindow(GetDlgItem(hWnd, 204), wParam == 202);\r
++ EnableWindow(GetDlgItem(hWnd, 205), wParam == 202);\r
++ SetDlgItemText(hWnd, 203, "");\r
++ break;\r
++ case MAKELONG(202, BN_DOUBLECLICKED):\r
++ GetModuleFileName(0, path, sizeof path);\r
++ SetDlgItemText(hWnd, 203, path);\r
++ break;\r
++ case MAKELONG(203, EN_CHANGE):\r
++ EnableWindow(GetDlgItem(hWnd, IDOK), GetWindowTextLength((HWND)lParam) || IsDlgButtonChecked(hWnd, 201));\r
++ break;\r
++ case 204:\r
++ return DlgMain_BrowseExe(hWnd);\r
++ case 205:\r
++ if (IsDlgButtonChecked(hWnd, 205) && GetKeyState(VK_SHIFT) >= 0)\r
++ SendDlgItemMessage(hWnd, 100, LB_SETSEL, 0, -1);\r
++ //fall through\r
++ case MAKELONG(100, LBN_SELCHANGE):\r
++ return DlgMain_EnableStandalone(hWnd);\r
++ case IDOK: if (DlgMain_InstallFiles(hWnd)) case IDCANCEL:\r
++ EndDialog(hWnd, wParam);\r
++ break;\r
++ }\r
++ return TRUE;\r
++ }\r
++ return FALSE;\r
++}\r
++\r
++void WinMainCRTStartup(void)\r
++{\r
++ InitAtomTable(0x3001);\r
++ HINSTANCE hModule = GetModuleHandle(0);\r
++ HRSRC hResource = FindResource(hModule, "Files.rc2", RT_RCDATA);\r
++ char *q = (char *)LoadResource(hModule, hResource);\r
++ DWORD n = SizeofResource(hModule, hResource);\r
++ char directive[MAX_PATH];\r
++ char arguments[MAX_PATH];\r
++ char *p = 0;\r
++ char c = '\n';\r
++ while (n)\r
++ {\r
++ switch (c)\r
++ {\r
++ case '(':\r
++ p = arguments;\r
++ break;\r
++ case ')':\r
++ if (*directive == '\n')\r
++ AddAtom(arguments);\r
++ //fall through\r
++ case '\n':\r
++ case '#':\r
++ p = directive;\r
++ //fall through\r
++ default:\r
++ *p++ = c;\r
++ *p = '\0';\r
++ break;\r
++ }\r
++ c = *q++;\r
++ --n;\r
++ }\r
++ DialogBoxParam(hModule, MAKEINTRESOURCE(100), 0, DlgMain, 0);\r
++ ExitProcess(0);\r
++}\r
--//Microsoft Developer Studio generated resource script.
--//
--#include "resource.h"
--
--#define APSTUDIO_READONLY_SYMBOLS
--/////////////////////////////////////////////////////////////////////////////
--//
--// Generated from the TEXTINCLUDE 2 resource.
--//
- #include <afxres.h>
-#include <winresrc.h>
--/////////////////////////////////////////////////////////////////////////////
--#undef APSTUDIO_READONLY_SYMBOLS
--
--/////////////////////////////////////////////////////////////////////////////
--// Deutsch (Deutschland) resources
--
--#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
--#ifdef _WIN32
--LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
--#pragma code_page(1252)
--#endif //_WIN32
--
--#ifdef APSTUDIO_INVOKED
--/////////////////////////////////////////////////////////////////////////////
--//
--// TEXTINCLUDE
--//
--
--1 TEXTINCLUDE DISCARDABLE
--BEGIN
-- "resource.h\0"
--END
--
--2 TEXTINCLUDE DISCARDABLE
--BEGIN
- "#include <afxres.h>\0"
- "#include <winresrc.h>\0"
--END
--
--3 TEXTINCLUDE DISCARDABLE
--BEGIN
-- "#include ""files.rc2""\0"
--END
--
--#endif // APSTUDIO_INVOKED
--
--
--/////////////////////////////////////////////////////////////////////////////
--//
--// Dialog
--//
--
--100 DIALOGEX 0, 0, 308, 185
--STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION |
-- WS_SYSMENU
--CAPTION "Merge7z Interface Plugin Installer"
--FONT 8, "MS Sans Serif"
--BEGIN
- GROUPBOX "&Select plugins to be installed",IDC_STATIC,2,0,304,90,
- GROUPBOX "&Select plugins to be installed",-1,2,0,304,90,
-- WS_GROUP,WS_EX_TRANSPARENT
-- LISTBOX 100,6,10,296,76,LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN |
-- LBS_EXTENDEDSEL | WS_HSCROLL | WS_GROUP | WS_TABSTOP
- GROUPBOX "&Options",IDC_STATIC,2,92,304,72,WS_GROUP,
- GROUPBOX "&Options",-1,2,92,304,72,WS_GROUP,
-- WS_EX_TRANSPARENT
-- CONTROL "S&hared installation",201,"Button",BS_AUTORADIOBUTTON |
-- WS_GROUP | WS_TABSTOP,6,102,73,10
-- CONTROL "&Application specific installation",202,"Button",
-- BS_AUTORADIOBUTTON | BS_NOTIFY | WS_TABSTOP,6,114,111,10
-- EDITTEXT 203,18,126,232,14,ES_AUTOHSCROLL | WS_DISABLED |
-- WS_GROUP
-- PUSHBUTTON "&Browse",204,252,126,50,14,WS_DISABLED | WS_GROUP
-- CONTROL "&Enable standalone operation\nThis option adds required components from 7-Zip %s to program directory.",
-- 205,"Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE |
-- WS_DISABLED | WS_TABSTOP,18,142,280,18
-- DEFPUSHBUTTON "OK",IDOK,202,168,50,14,WS_GROUP
-- PUSHBUTTON "Cancel",IDCANCEL,256,168,50,14,WS_GROUP
--END
--
--
--/////////////////////////////////////////////////////////////////////////////
--//
--// DESIGNINFO
--//
--
--#ifdef APSTUDIO_INVOKED
--GUIDELINES DESIGNINFO DISCARDABLE
--BEGIN
-- 100, DIALOG
-- BEGIN
-- LEFTMARGIN, 7
-- RIGHTMARGIN, 301
-- TOPMARGIN, 7
-- BOTTOMMARGIN, 178
-- END
--END
--#endif // APSTUDIO_INVOKED
--
--#endif // Deutsch (Deutschland) resources
--/////////////////////////////////////////////////////////////////////////////
--
--
--
--#ifndef APSTUDIO_INVOKED
--/////////////////////////////////////////////////////////////////////////////
--//
--// Generated from the TEXTINCLUDE 3 resource.
--//
--#include "files.rc2"
--/////////////////////////////////////////////////////////////////////////////
--#endif // not APSTUDIO_INVOKED
--
++//Microsoft Developer Studio generated resource script.\r
++//\r
++#include "resource.h"\r
++\r
++#define APSTUDIO_READONLY_SYMBOLS\r
++/////////////////////////////////////////////////////////////////////////////\r
++//\r
++// Generated from the TEXTINCLUDE 2 resource.\r
++//\r
++#include <winresrc.h>\r
++/////////////////////////////////////////////////////////////////////////////\r
++#undef APSTUDIO_READONLY_SYMBOLS\r
++\r
++/////////////////////////////////////////////////////////////////////////////\r
++// Deutsch (Deutschland) resources\r
++\r
++#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)\r
++#ifdef _WIN32\r
++LANGUAGE LANG_GERMAN, SUBLANG_GERMAN\r
++#pragma code_page(1252)\r
++#endif //_WIN32\r
++\r
++#ifdef APSTUDIO_INVOKED\r
++/////////////////////////////////////////////////////////////////////////////\r
++//\r
++// TEXTINCLUDE\r
++//\r
++\r
++1 TEXTINCLUDE DISCARDABLE \r
++BEGIN\r
++ "resource.h\0"\r
++END\r
++\r
++2 TEXTINCLUDE DISCARDABLE \r
++BEGIN\r
++ "#include <winresrc.h>\0"\r
++END\r
++\r
++3 TEXTINCLUDE DISCARDABLE \r
++BEGIN\r
++ "#include ""files.rc2""\0"\r
++END\r
++\r
++#endif // APSTUDIO_INVOKED\r
++\r
++\r
++/////////////////////////////////////////////////////////////////////////////\r
++//\r
++// Dialog\r
++//\r
++\r
++100 DIALOGEX 0, 0, 308, 185\r
++STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION | \r
++ WS_SYSMENU\r
++CAPTION "Merge7z Interface Plugin Installer"\r
++FONT 8, "MS Sans Serif"\r
++BEGIN\r
++ GROUPBOX "&Select plugins to be installed",-1,2,0,304,90,\r
++ WS_GROUP,WS_EX_TRANSPARENT\r
++ LISTBOX 100,6,10,296,76,LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | \r
++ LBS_EXTENDEDSEL | WS_HSCROLL | WS_GROUP | WS_TABSTOP\r
++ GROUPBOX "&Options",-1,2,92,304,72,WS_GROUP,\r
++ WS_EX_TRANSPARENT\r
++ CONTROL "S&hared installation",201,"Button",BS_AUTORADIOBUTTON | \r
++ WS_GROUP | WS_TABSTOP,6,102,73,10\r
++ CONTROL "&Application specific installation",202,"Button",\r
++ BS_AUTORADIOBUTTON | BS_NOTIFY | WS_TABSTOP,6,114,111,10\r
++ EDITTEXT 203,18,126,232,14,ES_AUTOHSCROLL | WS_DISABLED | \r
++ WS_GROUP\r
++ PUSHBUTTON "&Browse",204,252,126,50,14,WS_DISABLED | WS_GROUP\r
++ CONTROL "&Enable standalone operation\nThis option adds required components from 7-Zip %s to program directory.",\r
++ 205,"Button",BS_AUTOCHECKBOX | BS_TOP | BS_MULTILINE | \r
++ WS_DISABLED | WS_TABSTOP,18,142,280,18\r
++ DEFPUSHBUTTON "OK",IDOK,202,168,50,14,WS_GROUP\r
++ PUSHBUTTON "Cancel",IDCANCEL,256,168,50,14,WS_GROUP\r
++END\r
++\r
++\r
++/////////////////////////////////////////////////////////////////////////////\r
++//\r
++// DESIGNINFO\r
++//\r
++\r
++#ifdef APSTUDIO_INVOKED\r
++GUIDELINES DESIGNINFO DISCARDABLE \r
++BEGIN\r
++ 100, DIALOG\r
++ BEGIN\r
++ LEFTMARGIN, 7\r
++ RIGHTMARGIN, 301\r
++ TOPMARGIN, 7\r
++ BOTTOMMARGIN, 178\r
++ END\r
++END\r
++#endif // APSTUDIO_INVOKED\r
++\r
++#endif // Deutsch (Deutschland) resources\r
++/////////////////////////////////////////////////////////////////////////////\r
++\r
++\r
++\r
++#ifndef APSTUDIO_INVOKED\r
++/////////////////////////////////////////////////////////////////////////////\r
++//\r
++// Generated from the TEXTINCLUDE 3 resource.\r
++//\r
++#include "files.rc2"\r
++/////////////////////////////////////////////////////////////////////////////\r
++#endif // not APSTUDIO_INVOKED\r
++\r
; ID line follows -- this is updated by SVN
- ; $Id: WinMerge.iss 7095 2010-01-12 21:45:51Z kimmov $
-; $Id$
++; $Id: WinMerge.iss 7150 2010-05-04 17:26:43Z kimmov $
;
; Programmed by: Christian Blackburn, Christian List, Kimmo Varis,
; Purpose: The is the Inno Setup installation script for distributing our WinmMerge application.
*/
// ID line follows -- this is updated by SVN
- // $Id: 7zCommon.cpp 7063 2009-12-27 15:28:16Z kimmov $
-// $Id$
++// $Id: 7zCommon.cpp 7169 2010-05-16 14:44:19Z jtuc $
#include "stdafx.h"
#include "OptionsDef.h"
*
*/
// ID line follows -- this is updated by SVN
--// $Id$
++// $Id: AnsiConvert.cpp 7163 2010-05-15 13:20:17Z jtuc $
#include <windows.h>
* @brief String utilities.
*/
// ID line follows -- this is updated by SVN
- // $Id: UnicodeString.cpp 7058 2009-12-26 23:11:18Z kimmov $
-// $Id$
++// $Id: UnicodeString.cpp 7170 2010-05-16 15:19:15Z jtuc $
// String formatting code originally from Paul Senzee:
// http://www.senzee5.com/2006/05/c-formatting-stdstring.html
*
*/
// ID line follows -- this is updated by SVN
- // $Id: coretools.cpp 6699 2009-04-23 19:28:00Z kimmov $
-// $Id$
++// $Id: coretools.cpp 7168 2010-05-16 13:45:23Z jtuc $
#include <windows.h>
#include <tchar.h>
* @brief Implementation file for TimeSizeCompare
*/
// ID line follows -- this is updated by SVN
- // $Id: TimeSizeCompare.cpp 6932 2009-07-26 14:04:31Z kimmov $
-// $Id$
++// $Id: TimeSizeCompare.cpp 7153 2010-05-04 18:11:48Z kimmov $
#include "stdafx.h"
#include "DiffItem.h"
*/
int TimeSizeCompare::CompareFiles(int compMethod, const DIFFITEM &di)
{
- UINT code = 0;
-
- // Compare by modified date
- // Check that we have both filetimes
- if (di.diffFileInfo[0].mtime != 0 && di.diffFileInfo[1].mtime != 0)
+ UINT code = DIFFCODE::SAME;
+ if ((compMethod == CMP_DATE) || (compMethod == CMP_DATE_SIZE))
{
- INT64 nTimeDiff = di.diffFileInfo[0].mtime - di.diffFileInfo[1].mtime;
- // Remove sign
- nTimeDiff = (nTimeDiff > 0 ? nTimeDiff : -nTimeDiff);
- if (m_ignoreSmallDiff)
+ // Compare by modified date
+ // Check that we have both filetimes
- if (di.left.mtime != 0 && di.right.mtime != 0)
++ if (di.diffFileInfo[0].mtime != 0 && di.diffFileInfo[1].mtime != 0)
{
- // If option to ignore small timediffs (couple of seconds)
- // is set, decrease absolute difference by allowed diff
- nTimeDiff -= SmallTimeDiff;
- INT64 nTimeDiff =_abs64(di.left.mtime - di.right.mtime);
++ INT64 nTimeDiff =_abs64( di.diffFileInfo[0].mtime - di.diffFileInfo[1].mtime);
+ if (m_ignoreSmallDiff)
+ {
+ // If option to ignore small timediffs (couple of seconds)
+ // is set, decrease absolute difference by allowed diff
+ nTimeDiff -= SmallTimeDiff;
+ }
+ if (nTimeDiff <= 0)
+ code = DIFFCODE::SAME;
+ else
+ code = DIFFCODE::DIFF;
}
- if (nTimeDiff <= 0)
- code = DIFFCODE::SAME;
- else
- code = DIFFCODE::DIFF;
- }
- else
- {
- // Filetimes for item(s) could not be read. So we have to
- // set error status, unless we have DATE_SIZE -compare
- // when we have still hope for size compare..
- if (compMethod == CMP_DATE_SIZE)
- code = DIFFCODE::SAME;
else
- code = DIFFCODE::CMPERR;
+ {
+ // Filetimes for item(s) could not be read. So we have to
+ // set error status, unless we have DATE_SIZE -compare
+ // when we have still hope for size compare..
+ if (compMethod == CMP_DATE_SIZE)
+ code = DIFFCODE::SAME;
+ else
+ code = DIFFCODE::CMPERR;
+ }
}
-
- // This is actual CMP_DATE_SIZE method..
+ // This is actual CMP_SIZE method..
// If file sizes differ mark them different
- if (compMethod == CMP_DATE_SIZE)
+ if ((compMethod == CMP_DATE_SIZE) || (compMethod == CMP_SIZE))
{
- if (di.left.size != di.right.size)
+ if (di.diffFileInfo[0].size != di.diffFileInfo[1].size)
{
code &= ~DIFFCODE::SAME;
code = DIFFCODE::DIFF;
* @date Created: 2003-08-22
*/
// ID line follows -- this is updated by SVN
- // $Id: DiffFileData.cpp 6899 2009-07-05 14:22:19Z kimmov $
-// $Id$
++// $Id: DiffFileData.cpp 7162 2010-05-15 13:14:27Z jtuc $
#include "stdafx.h"
#include <io.h>
* @brief Implementation of FileTextEncoding structure
*/
// ID line follows -- this is updated by SVN
- // $Id: FileTextEncoding.cpp 5621 2008-07-15 19:44:58Z kimmov $
-// $Id$
++// $Id: FileTextEncoding.cpp 7172 2010-05-19 12:57:18Z jtuc $
#include "stdafx.h"
#include "unicoder.h"
* @brief Declaration of FileTextEncoding structure
*/
// ID line follows -- this is updated by SVN
--// $Id$
++// $Id: FileTextEncoding.h 7172 2010-05-19 12:57:18Z jtuc $
#ifndef FileTextEncoding_h_included
#define FileTextEncoding_h_included
* @brief Implementation file for FilterList.
*/
// ID line follows -- this is updated by SVN
- // $Id: FilterList.cpp 6687 2009-04-21 14:12:15Z kimmov $
-// $Id$
++// $Id: FilterList.cpp 7164 2010-05-15 13:57:32Z jtuc $
#include <windows.h>
#include <vector>
*
*/
// ID line follows -- this is updated by SVN
- // $Id: HexMergeDoc.cpp 6836 2009-06-09 22:01:48Z kimmov $
-// $Id$
++// $Id: HexMergeDoc.cpp 7166 2010-05-16 12:05:13Z jtuc $
#include "stdafx.h"
#include <afxinet.h>
CHexMergeDoc::CHexMergeDoc()
: m_pDirDoc(NULL)
{
- m_pView[MERGE_VIEW_LEFT] = NULL;
- m_pView[MERGE_VIEW_RIGHT] = NULL;
- m_nBufferType[0] = BUFFER_NORMAL;
- m_nBufferType[1] = BUFFER_NORMAL;
+ m_nBuffers = m_nBuffersTemp;
+ for (int nBuffer = 0; nBuffer < m_nBuffers; nBuffer++)
++ {
+ m_pView[nBuffer] = NULL;
++ m_nBufferType[nBuffer] = BUFFER_NORMAL;
++ }
}
/**
}
/**
+ * @brief Load one file
+ */
+ HRESULT CHexMergeDoc::LoadOneFile(int index, LPCTSTR filename, BOOL readOnly)
+ {
+ if (Try(m_pView[index]->LoadFile(filename), MB_ICONSTOP) != 0)
+ return E_FAIL;
+ m_pView[index]->SetReadOnly(readOnly);
+ m_filePaths.SetPath(index, filename);
+ ASSERT(m_nBufferType[index] == BUFFER_NORMAL); // should have been initialized to BUFFER_NORMAL in constructor
+ String strDesc = GetMainFrame()->m_strDescriptions[index];
+ if (!strDesc.empty())
+ {
+ m_strDesc[index] = strDesc;
+ m_nBufferType[index] = BUFFER_NORMAL_NAMED;
+ }
+ UpdateHeaderPath(index);
+ m_pView[index]->ResizeWindow();
+ return S_OK;
+ }
+
+ /**
* @brief Load files and initialize frame's compare result icon
*/
-HRESULT CHexMergeDoc::OpenDocs(LPCTSTR pathLeft, LPCTSTR pathRight, BOOL bROLeft, BOOL bRORight)
+HRESULT CHexMergeDoc::OpenDocs(const PathContext &paths, BOOL bRO[])
{
- if (SUCCEEDED(hr = LoadOneFile(MERGE_VIEW_LEFT, pathLeft, bROLeft)) &&
- SUCCEEDED(hr = LoadOneFile(MERGE_VIEW_RIGHT, pathRight, bRORight)))
+ HRESULT hr;
- String &path = paths.GetPath(nBuffer);
- if (Try(m_pView[nBuffer]->LoadFile(path.c_str()), MB_ICONSTOP) == 0)
- {
- m_pView[nBuffer]->SetReadOnly(bRO[nBuffer]);
- m_filePaths.SetPath(nBuffer, path.c_str());
- m_strDesc[nBuffer] = path;
- }
+ int nBuffer;
+ for (nBuffer = 0; nBuffer < m_nBuffers; nBuffer++)
+ {
- for (nBuffer = 0; nBuffer < m_nBuffers; nBuffer++)
++ if (FAILED(hr = LoadOneFile(nBuffer, paths.GetPath(nBuffer).c_str(), bRO[nBuffer])))
++ break;
+ }
++ if (nBuffer == m_nBuffers)
{
- UpdateHeaderPath(nBuffer);
- m_pView[nBuffer]->ResizeWindow();
+ UpdateDiffItem(0);
+ if (GetOptionsMgr()->GetBool(OPT_SCROLL_TO_FIRST))
- m_pView[MERGE_VIEW_LEFT]->SendMessage(WM_COMMAND, ID_FIRSTDIFF);
++ m_pView[0]->SendMessage(WM_COMMAND, ID_FIRSTDIFF);
}
- UpdateDiffItem(0);
- if (GetOptionsMgr()->GetBool(OPT_SCROLL_TO_FIRST))
- m_pView[0]->SendMessage(WM_COMMAND, ID_FIRSTDIFF);
- return S_OK;
+ else
+ {
+ if (CFrameWnd *pFrame = GetParentFrame())
+ {
+ // Use verify macro to trap possible error in debug.
+ VERIFY(pFrame->DestroyWindow());
+ }
+ }
+ return hr;
}
/**
* @brief Declaration of CHexMergeDoc class
*/
// RCS ID line follows -- this is updated by CVS
- // $Id: HexMergeDoc.h 6166 2008-12-14 18:25:09Z jtuc $
-// $Id$
++// $Id: HexMergeDoc.h 7166 2010-05-16 12:05:13Z jtuc $
#include "TempFile.h"
#include "PathContext.h"
BOOL CloseNow();
CHexMergeFrame * GetParentFrame();
void UpdateHeaderPath(int pane);
- HRESULT OpenDocs(LPCTSTR pathLeft, LPCTSTR pathRight, BOOL bROLeft, BOOL bRORight);
+ HRESULT OpenDocs(const PathContext &paths, BOOL bRO[]);
- protected:
+ private:
static void CopySel(CHexMergeView *pViewSrc, CHexMergeView *pViewDst);
static void CopyAll(CHexMergeView *pViewSrc, CHexMergeView *pViewDst);
+ void DoFileSave(int nBuffer);
+ void DoFileSaveAs(int nBuffer);
+ HRESULT LoadOneFile(int index, LPCTSTR filename, BOOL readOnly);
// Implementation data
protected:
- CHexMergeView * m_pView[MERGE_VIEW_COUNT]; /**< Pointer to left/right view */
+ CHexMergeView * m_pView[3]; /**< Pointer to left/right view */
CDirDoc * m_pDirDoc;
- TempFile m_tempFiles[2]; /**< Temp files for compared files */
- String m_strDesc[2]; /**< Left/right side description text */
- BUFFERTYPE m_nBufferType[2];
+ TempFile m_tempFiles[3]; /**< Temp files for compared files */
+ String m_strDesc[3]; /**< Left/right side description text */
+ BUFFERTYPE m_nBufferType[3];
// Generated message map functions
protected:
*
*/
// ID line follows -- this is updated by SVN
- // $Id: HexMergeFrm.cpp 6653 2009-04-12 09:30:35Z jtuc $
-// $Id$
++// $Id: HexMergeFrm.cpp 7166 2010-05-16 12:05:13Z jtuc $
#include "stdafx.h"
#include "Merge.h"
*
*/
// ID line follows -- this is updated by SVN
- // $Id: HexMergeFrm.h 6653 2009-04-12 09:30:35Z jtuc $
-// $Id$
++// $Id: HexMergeFrm.h 7166 2010-05-16 12:05:13Z jtuc $
#include "SplitterWndEx.h"
#include "EditorFilepathBar.h"
*
*/
// ID line follows -- this is updated by SVN
--// $Id$
++// $Id: HexMergeView.cpp 7165 2010-05-15 14:04:43Z jtuc $
#include "stdafx.h"
#include "Merge.h"
*
*/
// ID line follows -- this is updated by SVN
- // $Id: MergeDiffDetailView.cpp 6732 2009-05-12 07:21:01Z kimmov $
-// $Id$
++// $Id: MergeDiffDetailView.cpp 7137 2010-04-23 17:34:32Z kimmov $
//
//////////////////////////////////////////////////////////////////////
return 0;
DWORD dwLineFlags = GetLineFlags(nLineIndex);
- if ((dwLineFlags & LF_SNP) == LF_SNP || (dwLineFlags & LF_DIFF) != LF_DIFF || (dwLineFlags & LF_MOVED) == LF_MOVED)
- if ((dwLineFlags & LF_DIFF) != LF_DIFF)
++ if ((dwLineFlags & LF_SNP) == LF_SNP || (dwLineFlags & LF_DIFF) != LF_DIFF)
return 0; // No diff
if (!GetOptionsMgr()->GetBool(OPT_WORDDIFF_HIGHLIGHT))
* @brief Implementation of the CMergeEditView class
*/
// ID line follows -- this is updated by SVN
- // $Id: MergeEditView.cpp 7086 2010-01-09 13:38:25Z kimmov $
-// $Id$
++// $Id: MergeEditView.cpp 7142 2010-04-28 17:05:50Z kimmov $
#include "StdAfx.h"
#include <vector>
pDoc->UpdateHeaderActivity(m_nThisPane, bActivate != FALSE);
}
-int CMergeEditView::GetAdditionalTextBlocks (int nLineIndex, TEXTBLOCK *pBuf)
+int CMergeEditView::GetAdditionalTextBlocks (int nLineIndex, TEXTBLOCK *&pBuf)
{
+ pBuf = NULL;
+
DWORD dwLineFlags = GetLineFlags(nLineIndex);
- if ((dwLineFlags & LF_SNP) == LF_SNP || (dwLineFlags & LF_DIFF) != LF_DIFF || (dwLineFlags & LF_MOVED) == LF_MOVED)
- if ((dwLineFlags & LF_DIFF) != LF_DIFF)
++ if ((dwLineFlags & LF_SNP) == LF_SNP || (dwLineFlags & LF_DIFF) != LF_DIFF)
return 0;
if (!GetOptionsMgr()->GetBool(OPT_WORDDIFF_HIGHLIGHT))
}
/**
- * @brief Update left EOL mode in status bar.
+ * @brief Update EOL mode in status bar
*/
-void CMergeEditView::OnUpdateStatusLeftEOL(CCmdUI* pCmdUI)
+void CMergeEditView::OnUpdateStatusEOL(CCmdUI* pCmdUI)
{
- GetDocument()->GetLeftView()->OnUpdateIndicatorCRLF(pCmdUI);
-}
-
-/**
- * @brief Update right EOL mode in status bar.
- */
-void CMergeEditView::OnUpdateStatusRightEOL(CCmdUI* pCmdUI)
-{
-- if (GetOptionsMgr()->GetBool(OPT_ALLOW_MIXED_EOL) ||
- GetDocument()->IsMixedEOL(pCmdUI->m_nID - ID_STATUS_PANE0FILE_EOL))
- GetDocument()->IsMixedEOL(1))
-- {
-- String eol = LoadResString(IDS_EOL_MIXED);
-- pCmdUI->SetText(eol.c_str());
-- }
-- else
- GetDocument()->GetView(pCmdUI->m_nID - ID_STATUS_PANE0FILE_EOL)->OnUpdateIndicatorCRLF(pCmdUI);
- GetDocument()->GetRightView()->OnUpdateIndicatorCRLF(pCmdUI);
++ GetDocument()->GetView(pCmdUI->m_nID - ID_STATUS_PANE0FILE_EOL)->OnUpdateIndicatorCRLF(pCmdUI);
}
/**
*
*/
// ID line follows -- this is updated by SVN
- // $Id: codepage_detect.cpp 5584 2008-07-09 12:09:56Z kimmov $
-// $Id$
++// $Id: codepage_detect.cpp 7172 2010-05-19 12:57:18Z jtuc $
#include "StdAfx.h"
#include <shlwapi.h>
encoding->m_bom = true;
break;
default:
- if (fi.pImage && !CheckForInvalidUtf8((LPBYTE)fi.pImage, fi.cbImage))
- encoding->SetUnicoding(ucr::UTF8);
+ encoding->m_bom = false;
+ if (memchr(fi.pImage, 0, fi.cbImage))
+ encoding->m_binary = true;
break;
-
}
- if (fi.nByteOrder == 1 && bGuessEncoding)
+ if (fi.nByteOrder < 4 && guessEncodingType != 0)
{
LPCTSTR ext = PathFindExtension(filepath);
const char *src = (char *)fi.pImage;
* @brief Implementation file for sd_ComputeWordDiffs (q.v.)
*
*/
-// ID line follows -- this is updated by SVN
-// $Id$
+// RCS ID line follows -- this is updated by CVS
- // $Id: stringdiffs.cpp 7047 2009-12-21 19:08:49Z kimmov $
++// $Id: stringdiffs.cpp 7149 2010-05-03 17:08:20Z kimmov $
#include <windows.h>
#include <tchar.h>
msgstr ""
"Project-Id-Version: WinMerge\n"
"Report-Msgid-Bugs-To: http://bugs.winmerge.org/\n"
- "POT-Creation-Date: 2010-04-18 21:01+0000\n"
-"POT-Creation-Date: 2010-04-28 20:51+0000\n"
++"POT-Creation-Date: 2010-05-23 21:07+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: English <winmerge-translate@lists.sourceforge.net>\n"