--- /dev/null
+interface Merge7z
+{
+ struct Proxy
+ {
+ LPCSTR Merge7z[2];
+ HMODULE handle;
+ interface Merge7z *operator->();
+ };
+ struct Initialize
+ {
+ enum
+ {
+ Unicode = 1,
+ Local7z = 2,
+ Default = sizeof(TCHAR) == sizeof(WCHAR) ? Unicode : 0
+ };
+ };
+ virtual int Initialize(DWORD = Initialize::Default);
+ interface Envelope
+ {
+ virtual void Free() = 0;
+ };
+ interface DirItemEnumerator
+ {
+ struct Item
+ {
+ struct
+ {
+ enum
+ {
+ Attributes = 1,
+ CreationTime = 2,
+ LastAccessTime = 4,
+ LastWriteTime = 8,
+ Size = 16,
+ Name = 32,
+ FullPath = 64,
+ CheckIfPresent = 128,
+ NeedFindFile = Attributes|CreationTime|LastAccessTime|LastWriteTime|Size|Name
+ };
+ } *operator->();
+ UINT32 Mask;
+ UINT32 Attributes;
+ FILETIME CreationTime;
+ FILETIME LastAccessTime;
+ FILETIME LastWriteTime;
+ UINT64 Size;
+ LPCTSTR Name;
+ LPCTSTR FullPath;
+ };
+ virtual UINT Open() = 0;
+ virtual Envelope *Enum(Item &) = 0;
+ };
+ interface Format
+ {
+ virtual HRESULT DeCompressArchive(HWND, LPCTSTR path, LPCTSTR folder) = 0;
+ virtual HRESULT CompressArchive(HWND, LPCTSTR path, DirItemEnumerator *) = 0;
+ };
+ Merge7z();
+ Format &Format7z;
+ Format &ZipHandler;
+ Format &RarHandler;
+ Format &BZip2Handler;
+ Format &TarHandler;
+ virtual Format *GuessFormat(LPCTSTR path);
+};
+
--- /dev/null
+/* File: Merge7z311.cpp
+ * Author: Jochen Tucht 2003/12/09
+ * Copyright (C) Jochen Tucht
+ *
+ * Purpose: Provide a handy C++ interface to access 7Zip services
+ *
+ * Remarks: Based on 7z311 sources. May or may not compile/run with earlier or
+ * later versions. See Merge7z311.dsp for dependencies. Some less
+ * version-dependent parts of code reside in Merge7zCommon.cpp.
+ *
+ * *** SECURITY ALERT ***
+ * Be aware of 2. a) of the GNU General Public License. Please log your changes
+ * at the end of this comment.
+ *
+ * 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.
+ *
+
+DATE: BY: DESCRIPTION:
+========== ================== ================================================
+
+*/
+
+#include "stdafx.h"
+
+#include "Merge7zCommon.h"
+
+#include "7zip/FileManager/OpenCallback.h"
+#include "7zip/FileManager/ExtractCallback.h"
+#include "7zip/FileManager/UpdateCallback100.h"
+
+/**
+ * @brief Extraction thread
+ */
+class CThreadExtracting : CThread
+{
+protected:
+ DWORD Process()
+ {
+ ExtractCallbackSpec->ProgressDialog.WaitCreating();
+ result = Archive->Extract(0, -1, false, ArchiveExtractCallback);
+ ExtractCallbackSpec->ProgressDialog.MyClose();
+ return 0;
+ }
+ static DWORD WINAPI Process(void *param)
+ {
+ return ((CThreadExtracting *)param)->Process();
+ }
+ CExtractCallbackImp *ExtractCallbackSpec;
+ IInArchive *Archive;
+ IArchiveExtractCallback *ArchiveExtractCallback;
+public:
+ HRESULT result;
+
+ CThreadExtracting
+ (
+ CExtractCallbackImp *ExtractCallbackSpec,
+ IInArchive *Archive,
+ IArchiveExtractCallback *ArchiveExtractCallback,
+ const CSysString &title
+ ):
+ ExtractCallbackSpec(ExtractCallbackSpec),
+ Archive(Archive),
+ ArchiveExtractCallback(ArchiveExtractCallback)
+ {
+ result = E_FAIL;
+ if COMPLAIN(!Create(Process, this))
+ {
+ Complain(_T("Failed to create extraction thread"));
+ }
+ ExtractCallbackSpec->StartProgressDialog(GetUnicodeString(title));
+ }
+};
+
+/**
+ * @brief Extraction method accessible from outside
+ */
+HRESULT Format7zDLL::Interface::DeCompressArchive(HWND hwndParent, LPCTSTR path, LPCTSTR folder)
+{
+ IInArchive *archive = 0;
+ CInFileStream *file = 0;
+ COpenArchiveCallback *callback = 0;
+ CArchiveExtractCallback *extractCallbackSpec = 0;
+ CExtractCallbackImp *extractCallbackSpec2 = 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.
+ (archive = GetInArchive()) -> AddRef();
+ (file = new CInFileStream) -> AddRef();
+ (callback = new COpenArchiveCallback) -> AddRef();
+ callback->_passwordIsDefined = false;
+ callback->_parentWindow = hwndParent;
+ /*CMyComBSTR password;
+ callback->CryptoGetTextPassword(&password);*/
+ if COMPLAIN(!file->Open(path))
+ {
+ ComplainCantOpen(path);
+ }
+ if COMPLAIN(archive->Open(file, 0, callback) != S_OK)
+ {
+ ComplainCantOpen(path);
+ }
+
+ NFile::NFind::CFileInfo fileInfo;
+ if COMPLAIN(!NFile::NFind::FindFile(path, fileInfo))
+ {
+ ComplainCantOpen(path);
+ }
+
+ if (*folder)
+ {
+ if COMPLAIN(!NFile::NDirectory::CreateComplexDirectory(folder))
+ {
+ Complain(_T("Can not create output directory"));
+ }
+ }
+
+ // if path is whatever.tar.bz2, default to whatever.tar:
+ UString ustrDefaultName = GetUnicodeString(path);
+ int dot = ustrDefaultName.ReverseFind('.');
+ int slash = ustrDefaultName.ReverseFind('\\');
+ if (dot > slash)
+ {
+ if (StrChrW(L"Tt", ustrDefaultName[dot + 1]))
+ {
+ ustrDefaultName.ReleaseBuffer(dot + 2);
+ ustrDefaultName += L"ar";
+ }
+ else
+ {
+ ustrDefaultName.ReleaseBuffer(dot);
+ }
+ ustrDefaultName.Delete(0, slash + 1);
+ }
+ else
+ {
+ ustrDefaultName = L"noname";
+ }
+
+ (extractCallbackSpec2 = new CExtractCallbackImp) -> AddRef();
+
+ extractCallbackSpec2->Init
+ (
+ NExtractionMode::NOverwrite::kWithoutPrompt, // overwriteMode
+ false, // passwordIsDefined
+ UString() // password
+ );
+
+ extractCallbackSpec2->_parentWindow = hwndParent;
+
+ extractCallbackSpec2->ProgressDialog.MainWindow = 0;
+ (extractCallbackSpec = new CArchiveExtractCallback) -> AddRef();
+
+ extractCallbackSpec->Init
+ (
+ archive,
+ extractCallbackSpec2,
+ GetUnicodeString(folder),
+ NExtractionMode::NPath::kFullPathnames,
+ NExtractionMode::NOverwrite::kWithoutPrompt,
+ UStringVector(),
+ ustrDefaultName,
+ fileInfo.LastWriteTime,
+ fileInfo.Attributes
+ );
+
+ result = CThreadExtracting
+ (
+ extractCallbackSpec2,
+ archive,
+ extractCallbackSpec,
+ PathFindFileName(path)
+ ).result;
+
+ if COMPLAIN(extractCallbackSpec->_numErrors)
+ {
+ Complain(_T("%I64u error(s)"), extractCallbackSpec->_numErrors);
+ }
+ }
+ catch (Complain *complain)
+ {
+ result = complain->Alert(hwndParent);
+ }
+ // Always release interfaces in this order, or else all hell will break
+ // loose!
+ Release(static_cast<IArchiveExtractCallback*>(extractCallbackSpec));
+ Release(archive);
+ Release(static_cast<IFolderArchiveExtractCallback*>(extractCallbackSpec2));
+ Release(static_cast<IInStream*>(file));
+ Release(static_cast<IArchiveOpenCallback*>(callback));
+ return result;
+}
+
+/**
+ * @brief Compression thread
+ */
+class CThreadUpdateCompress : CThread
+{
+protected:
+ DWORD Process()
+ {
+ updateCallback100->ProgressDialog.WaitCreating();
+ result = outArchive->UpdateItems(file, numItems, updateCallbackSpec);
+ updateCallback100->ProgressDialog.MyClose();
+ return 0;
+ }
+ static DWORD WINAPI Process(void *param)
+ {
+ return ((CThreadUpdateCompress *)param)->Process();
+ }
+ CUpdateCallback100Imp *updateCallback100;
+ IOutArchive *outArchive;
+ CArchiveUpdateCallback *updateCallbackSpec;
+ COutFileStream *file;
+public:
+ HRESULT result;
+ UINT32 numItems;
+ CThreadUpdateCompress
+ (
+ CUpdateCallback100Imp *updateCallback100,
+ IOutArchive *outArchive,
+ CArchiveUpdateCallback *updateCallbackSpec,
+ UINT32 numItems,
+ COutFileStream *file,
+ const CSysString &title
+ ):
+ updateCallback100(updateCallback100),
+ outArchive(outArchive),
+ updateCallbackSpec(updateCallbackSpec),
+ numItems(numItems),
+ file(file)
+ {
+ result = E_FAIL;
+ if COMPLAIN(!Create(Process, this))
+ {
+ Complain(_T("Failed to create extraction thread"));
+ }
+ updateCallback100->StartProgressDialog(GetUnicodeString(title));
+ }
+};
+
+/**
+ * @brief Compression method accessible from outside
+ */
+HRESULT Format7zDLL::Interface::CompressArchive(HWND hwndParent, LPCTSTR path, Merge7z::DirItemEnumerator *etor)
+{
+ UINT codePage = AreFileApisANSI() ? CP_ACP : CP_OEMCP;
+ IOutArchive *outArchive = 0;
+ COutFileStream *file = 0;
+ COpenArchiveCallback *callback = 0;
+ CArchiveUpdateCallback *updateCallbackSpec = 0;
+ CUpdateCallback100Imp *updateCallback100 = 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.
+ (outArchive = GetOutArchive()) -> AddRef();
+ (file = new COutFileStream) -> AddRef();
+ (callback = new COpenArchiveCallback) -> AddRef();
+ callback->_passwordIsDefined = false;
+ callback->_parentWindow = hwndParent;
+ /*CMyComBSTR password;
+ callback->CryptoGetTextPassword(&password);*/
+ if COMPLAIN(!file->Open(path))
+ {
+ ComplainCantOpen(path);
+ }
+ (updateCallbackSpec = new CArchiveUpdateCallback) -> AddRef();
+ (updateCallback100 = new CUpdateCallback100Imp) -> AddRef();
+ updateCallback100->Init
+ (
+ hwndParent,
+ false, // passwordIsDefined
+ UString() // password
+ );
+ NFileTimeType::EEnum fileTimeType;
+ UINT32 value;
+ if COMPLAIN(outArchive->GetFileTimeType(&value) != S_OK)
+ {
+ ComplainCantOpen(path);
+ }
+ switch(value)
+ {
+ case NFileTimeType::kWindows:
+ case NFileTimeType::kDOS:
+ case NFileTimeType::kUnix:
+ fileTimeType = NFileTimeType::EEnum(value);
+ break;
+ default:
+ ComplainCantOpen(path);
+ }
+
+ CObjectVector<CUpdatePair2> operationChain;
+ CObjectVector<CArchiveItem> archiveItems;
+ CObjectVector<CDirItem> dirItems;
+
+ UINT count = etor->Open();
+ dirItems.Reserve(count);
+ while (count--)
+ {
+ Merge7z::DirItemEnumerator::Item etorItem;
+ etorItem.Mask = 0;
+ Merge7z::Envelope *envelope = etor->Enum(etorItem);
+ CDirItem item;
+ if (etorItem.Mask & etorItem->Name)
+ item.Name = GetUnicodeString(etorItem.Name);
+ if (etorItem.Mask & etorItem->FullPath)
+ item.FullPath = GetUnicodeString(etorItem.FullPath);
+ if (etorItem.Mask & etorItem->Attributes)
+ item.Attributes = etorItem.Attributes;
+ if (etorItem.Mask & etorItem->Size)
+ item.Size = etorItem.Size;
+ if (etorItem.Mask & etorItem->CreationTime)
+ item.CreationTime = etorItem.CreationTime;
+ if (etorItem.Mask & etorItem->LastAccessTime)
+ item.LastAccessTime = etorItem.LastAccessTime;
+ if (etorItem.Mask & etorItem->LastWriteTime)
+ item.LastWriteTime = etorItem.LastWriteTime;
+ if (envelope)
+ {
+ envelope->Free();
+ }
+ if (etorItem.Mask && (etorItem.Mask & (etorItem->NeedFindFile|etorItem->CheckIfPresent)) != etorItem->NeedFindFile)
+ {
+ NFile::NFind::CFileInfoW fileInfo;
+ if (NFile::NFind::FindFile(item.FullPath, fileInfo))
+ {
+ if (!(etorItem.Mask & etorItem->Name))
+ item.Name = fileInfo.Name;
+ if (!(etorItem.Mask & etorItem->Attributes))
+ item.Attributes = fileInfo.Attributes;
+ if (!(etorItem.Mask & etorItem->Size))
+ item.Size = fileInfo.Size;
+ if (!(etorItem.Mask & etorItem->CreationTime))
+ item.CreationTime = fileInfo.CreationTime;
+ if (!(etorItem.Mask & etorItem->LastAccessTime))
+ item.LastAccessTime = fileInfo.LastAccessTime;
+ if (!(etorItem.Mask & etorItem->LastWriteTime))
+ item.LastWriteTime = fileInfo.LastWriteTime;
+ }
+ else
+ {
+ if COMPLAIN(!(etorItem.Mask & etorItem->CheckIfPresent))
+ {
+ ComplainCantOpen(GetSystemString(item.FullPath));
+ }
+ etorItem.Mask = 0;
+ }
+ }
+ if (etorItem.Mask)
+ {
+ CUpdatePair2 pair2;
+ pair2.IsAnti = false;
+ pair2.DirItemIndex = dirItems.Add(item);
+ pair2.ExistInArchive = false;
+ pair2.ExistOnDisk = true;
+ pair2.NewData = pair2.NewProperties = true;
+ operationChain.Add(pair2);
+ }
+ }
+
+ updateCallbackSpec->Init(UString()/*folderPrefix*/, &dirItems, &archiveItems,
+ &operationChain, NULL, updateCallback100);
+
+ result = CThreadUpdateCompress
+ (
+ updateCallback100,
+ outArchive,
+ updateCallbackSpec,
+ operationChain.Size(),
+ file,
+ PathFindFileName(path)
+ ).result;
+
+ //result = outArchive->UpdateItems(file, operationChain.Size(), updateCallbackSpec);
+ if COMPLAIN(result != S_OK)
+ {
+ ComplainCantOpen(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));
+ Release(outArchive);
+ Release(static_cast<IFolderArchiveUpdateCallback*>(updateCallback100));
+ Release(static_cast<IOutStream*>(file));
+ Release(static_cast<IArchiveOpenCallback*>(callback));
+ return result;
+}
--- /dev/null
+# Microsoft Developer Studio Project File - Name="Merge7z311" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=Merge7z311 - Win32 UnicodeDebug
+!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
+!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
+!MESSAGE
+!MESSAGE NMAKE /f "Merge7z311.mak".
+!MESSAGE
+!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
+!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
+!MESSAGE
+!MESSAGE NMAKE /f "Merge7z311.mak" CFG="Merge7z311 - Win32 UnicodeDebug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "Merge7z311 - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Merge7z311 - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Merge7z311 - Win32 UnicodeDebug" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Merge7z311 - Win32 UnicodeRelease" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Merge7z311 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Merge7z311___Win32_Release"
+# PROP Intermediate_Dir "Merge7z311___Win32_Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../7z311" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z311_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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
+# ADD 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/Merge7z311.dll"
+
+!ELSEIF "$(CFG)" == "Merge7z311 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Merge7z311___Win32_Debug"
+# PROP Intermediate_Dir "Merge7z311___Win32_Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# 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
+# ADD CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "../../7z311" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z311_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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
+# ADD 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 /debug /machine:I386 /out:"../Build/MergeDebug/Merge7z311.dll"
+# SUBTRACT LINK32 /map
+
+!ELSEIF "$(CFG)" == "Merge7z311 - Win32 UnicodeDebug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Merge7z311___Win32_UnicodeDebug"
+# PROP BASE Intermediate_Dir "Merge7z311___Win32_UnicodeDebug"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Merge7z311___Win32_UnicodeDebug"
+# PROP Intermediate_Dir "Merge7z311___Win32_UnicodeDebug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "../../7z311" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "../../7z311" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z311_EXPORTS" /D "UNICODE" /D "_UNICODE" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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/Merge7z311.dll"
+# ADD 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 /debug /machine:I386 /out:"../Build/MergeUnicodeDebug/Merge7z311U.dll"
+# SUBTRACT LINK32 /map
+
+!ELSEIF "$(CFG)" == "Merge7z311 - Win32 UnicodeRelease"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Merge7z311___Win32_UnicodeRelease"
+# PROP BASE Intermediate_Dir "Merge7z311___Win32_UnicodeRelease"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Merge7z311___Win32_UnicodeRelease"
+# PROP Intermediate_Dir "Merge7z311___Win32_UnicodeRelease"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "../../7z311" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../7z311" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z311_EXPORTS" /D "UNICODE" /D "_UNICODE" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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/Merge7z311.dll"
+# ADD 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/MergeUnicodeRelease/Merge7z311U.dll"
+
+!ENDIF
+
+# Begin Target
+
+# Name "Merge7z311 - Win32 Release"
+# Name "Merge7z311 - Win32 Debug"
+# Name "Merge7z311 - Win32 UnicodeDebug"
+# Name "Merge7z311 - Win32 UnicodeRelease"
+# Begin Group "Quellcodedateien"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Merge7z.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Merge7z311.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Merge7zCommon.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Merge7zCommon.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\tools.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\tools.h
+# End Source File
+# End Group
+# Begin Group "Header-Dateien"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Ressourcendateien"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\Ui\Gui\FM.ico
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\UI\GUI\resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\Ui\Gui\resource.rc
+# End Source File
+# End Group
+# Begin Group "Windows"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\DLL.cpp
+
+!IF "$(CFG)" == "Merge7z311 - Win32 Release"
+
+!ELSEIF "$(CFG)" == "Merge7z311 - Win32 Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF "$(CFG)" == "Merge7z311 - Win32 UnicodeDebug"
+
+!ELSEIF "$(CFG)" == "Merge7z311 - Win32 UnicodeRelease"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\DLL.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\FileIO.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\FileIO.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\PropVariant.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\PropVariant.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\PropVariantConversions.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\PropVariantConversions.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\ResourceString.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\ResourceString.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\Synchronization.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\Synchronization.h
+# End Source File
+# End Group
+# Begin Group "Common"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\IntToString.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\IntToString.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\Lang.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\Lang.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\StdInStream.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\StdInStream.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\String.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\String.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\StringConvert.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\StringConvert.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\TextConfig.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\TextConfig.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\UTFConvert.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\UTFConvert.h
+# End Source File
+# End Group
+# Begin Group "7zip Common"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\Ui\Agent\ArchiveExtractCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\UI\Agent\ArchiveExtractCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\Ui\Agent\ArchiveUpdateCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\UI\Agent\ArchiveUpdateCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\Control\Dialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\Control\Dialog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\ExtractCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\ExtractCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\Common\FileStreams.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\Common\FileStreams.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\FormatUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\FormatUtils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\LangUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\LangUtils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\Resource\MessagesDialog\MessagesDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\OpenCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\OpenCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\Resource\OverwriteDialog\OverwriteDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\Resource\PasswordDialog\PasswordDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\Resource\PasswordDialog\PasswordDialog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\Resource\ProgressDialog2\ProgressDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\Resource\ProgressDialog2\ProgressDialog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\Registry.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\Registry.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\RegistryUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\RegistryUtils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\FileManager\UpdateCallback100.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\Window.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\Window.h
+# End Source File
+# End Group
+# Begin Group "Extract"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\Ui\Common\ExtractingFilePath.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\UI\Common\ExtractingFilePath.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\FileDir.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\FileDir.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\FileFind.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\FileFind.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\FileName.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\FileName.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\Common\FilePathAutoRename.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\Common\FilePathAutoRename.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\System.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Windows\System.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\Vector.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\Vector.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\Wildcard.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z311\Common\Wildcard.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\7z311\7zip\Ui\Gui\7zG.exe.manifest
+# End Source File
+# End Target
+# End Project
--- /dev/null
+# Microsoft Developer Studio Project File - Name="Merge7z312" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=Merge7z312 - Win32 UnicodeDebug
+!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
+!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
+!MESSAGE
+!MESSAGE NMAKE /f "Merge7z312.mak".
+!MESSAGE
+!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
+!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
+!MESSAGE
+!MESSAGE NMAKE /f "Merge7z312.mak" CFG="Merge7z312 - Win32 UnicodeDebug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "Merge7z312 - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Merge7z312 - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Merge7z312 - Win32 UnicodeDebug" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Merge7z312 - Win32 UnicodeRelease" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Merge7z312 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Merge7z312___Win32_Release"
+# PROP Intermediate_Dir "Merge7z312___Win32_Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../7z312" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7z312_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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
+# ADD 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/Merge7z312.dll"
+
+!ELSEIF "$(CFG)" == "Merge7z312 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Merge7z312___Win32_Debug"
+# PROP Intermediate_Dir "Merge7z312___Win32_Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# 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
+# ADD CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "../../7z312" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7z312_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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
+# ADD 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 /debug /machine:I386 /out:"../Build/MergeDebug/Merge7z312.dll"
+# SUBTRACT LINK32 /map
+
+!ELSEIF "$(CFG)" == "Merge7z312 - Win32 UnicodeDebug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Merge7z312___Win32_UnicodeDebug"
+# PROP BASE Intermediate_Dir "Merge7z312___Win32_UnicodeDebug"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Merge7z312___Win32_UnicodeDebug"
+# PROP Intermediate_Dir "Merge7z312___Win32_UnicodeDebug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "../../7z312" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "../../7z312" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7z312_EXPORTS" /D "UNICODE" /D "_UNICODE" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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/Merge7z312.dll"
+# ADD 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 /debug /machine:I386 /out:"../Build/MergeUnicodeDebug/Merge7z312U.dll"
+# SUBTRACT LINK32 /map
+
+!ELSEIF "$(CFG)" == "Merge7z312 - Win32 UnicodeRelease"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Merge7z312___Win32_UnicodeRelease"
+# PROP BASE Intermediate_Dir "Merge7z312___Win32_UnicodeRelease"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Merge7z312___Win32_UnicodeRelease"
+# PROP Intermediate_Dir "Merge7z312___Win32_UnicodeRelease"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "../../7z312" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../7z312" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7z312_EXPORTS" /D "UNICODE" /D "_UNICODE" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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/Merge7z312.dll"
+# ADD 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/MergeUnicodeRelease/Merge7z312U.dll"
+
+!ENDIF
+
+# Begin Target
+
+# Name "Merge7z312 - Win32 Release"
+# Name "Merge7z312 - Win32 Debug"
+# Name "Merge7z312 - Win32 UnicodeDebug"
+# Name "Merge7z312 - Win32 UnicodeRelease"
+# Begin Group "Quellcodedateien"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Merge7z.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Merge7z311.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Merge7zCommon.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Merge7zCommon.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\tools.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\tools.h
+# End Source File
+# End Group
+# Begin Group "Header-Dateien"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Ressourcendateien"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\Ui\Gui\FM.ico
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\UI\GUI\resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\Ui\Gui\resource.rc
+# End Source File
+# End Group
+# Begin Group "Windows"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\DLL.cpp
+
+!IF "$(CFG)" == "Merge7z312 - Win32 Release"
+
+!ELSEIF "$(CFG)" == "Merge7z312 - Win32 Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF "$(CFG)" == "Merge7z312 - Win32 UnicodeDebug"
+
+!ELSEIF "$(CFG)" == "Merge7z312 - Win32 UnicodeRelease"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\DLL.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\FileIO.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\FileIO.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\PropVariant.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\PropVariant.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\PropVariantConversions.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\PropVariantConversions.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\ResourceString.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\ResourceString.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\Synchronization.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\Synchronization.h
+# End Source File
+# End Group
+# Begin Group "Common"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\IntToString.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\IntToString.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\Lang.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\Lang.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\StdInStream.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\StdInStream.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\String.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\String.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\StringConvert.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\StringConvert.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\TextConfig.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\TextConfig.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\UTFConvert.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\UTFConvert.h
+# End Source File
+# End Group
+# Begin Group "7zip Common"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\Ui\Agent\ArchiveExtractCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\UI\Agent\ArchiveExtractCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\Ui\Agent\ArchiveUpdateCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\UI\Agent\ArchiveUpdateCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\Control\Dialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\Control\Dialog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\ExtractCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\ExtractCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\Common\FileStreams.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\Common\FileStreams.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\FormatUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\FormatUtils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\LangUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\LangUtils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\Resource\MessagesDialog\MessagesDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\OpenCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\OpenCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\Resource\OverwriteDialog\OverwriteDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\Resource\PasswordDialog\PasswordDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\Resource\PasswordDialog\PasswordDialog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\Resource\ProgressDialog2\ProgressDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\Resource\ProgressDialog2\ProgressDialog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\Registry.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\Registry.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\RegistryUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\RegistryUtils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\FileManager\UpdateCallback100.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\Window.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\Window.h
+# End Source File
+# End Group
+# Begin Group "Extract"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\Ui\Common\ExtractingFilePath.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\UI\Common\ExtractingFilePath.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\FileDir.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\FileDir.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\FileFind.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\FileFind.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\FileName.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\FileName.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\Common\FilePathAutoRename.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\Common\FilePathAutoRename.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\System.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Windows\System.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\Vector.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\Vector.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\Wildcard.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z312\Common\Wildcard.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\7z312\7zip\Ui\Gui\7zG.exe.manifest
+# End Source File
+# End Target
+# End Project
--- /dev/null
+# Microsoft Developer Studio Project File - Name="Merge7z313" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=Merge7z313 - Win32 UnicodeDebug
+!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE
+!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl
+!MESSAGE
+!MESSAGE NMAKE /f "Merge7z313.mak".
+!MESSAGE
+!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben
+!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel:
+!MESSAGE
+!MESSAGE NMAKE /f "Merge7z313.mak" CFG="Merge7z313 - Win32 UnicodeDebug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "Merge7z313 - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Merge7z313 - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Merge7z313 - Win32 UnicodeDebug" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Merge7z313 - Win32 UnicodeRelease" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Merge7z313 - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Merge7z313___Win32_Release"
+# PROP Intermediate_Dir "Merge7z313___Win32_Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../7z313" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7z313_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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
+# ADD 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/Merge7z313.dll"
+
+!ELSEIF "$(CFG)" == "Merge7z313 - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Debug"
+# PROP BASE Intermediate_Dir "Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Merge7z313___Win32_Debug"
+# PROP Intermediate_Dir "Merge7z313___Win32_Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# 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
+# ADD CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "../../7z313" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7z313_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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
+# ADD 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 /debug /machine:I386 /out:"../Build/MergeDebug/Merge7z313.dll"
+# SUBTRACT LINK32 /map
+
+!ELSEIF "$(CFG)" == "Merge7z313 - Win32 UnicodeDebug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "Merge7z313___Win32_UnicodeDebug"
+# PROP BASE Intermediate_Dir "Merge7z313___Win32_UnicodeDebug"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Merge7z313___Win32_UnicodeDebug"
+# PROP Intermediate_Dir "Merge7z313___Win32_UnicodeDebug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "../../7z313" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD CPP /nologo /MTd /W3 /vd0 /GX /Z7 /Od /I "../../7z313" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7z313_EXPORTS" /D "UNICODE" /D "_UNICODE" /FR /Yu"stdafx.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "_DEBUG"
+# ADD RSC /l 0x407 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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/Merge7z313.dll"
+# ADD 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 /debug /machine:I386 /out:"../Build/MergeUnicodeDebug/Merge7z313U.dll"
+# SUBTRACT LINK32 /map
+
+!ELSEIF "$(CFG)" == "Merge7z313 - Win32 UnicodeRelease"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Merge7z313___Win32_UnicodeRelease"
+# PROP BASE Intermediate_Dir "Merge7z313___Win32_UnicodeRelease"
+# PROP BASE Ignore_Export_Lib 0
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Merge7z313___Win32_UnicodeRelease"
+# PROP Intermediate_Dir "Merge7z313___Win32_UnicodeRelease"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /I "../../7z313" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7Z310_EXPORTS" /Yu"stdafx.h" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../7z313" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MERGE7z313_EXPORTS" /D "UNICODE" /D "_UNICODE" /Yu"stdafx.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x407 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# 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/Merge7z313.dll"
+# ADD 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/MergeUnicodeRelease/Merge7z313U.dll"
+
+!ENDIF
+
+# Begin Target
+
+# Name "Merge7z313 - Win32 Release"
+# Name "Merge7z313 - Win32 Debug"
+# Name "Merge7z313 - Win32 UnicodeDebug"
+# Name "Merge7z313 - Win32 UnicodeRelease"
+# Begin Group "Quellcodedateien"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\Merge7z.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\Merge7z311.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Merge7zCommon.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Merge7zCommon.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.cpp
+# ADD CPP /Yc"stdafx.h"
+# End Source File
+# Begin Source File
+
+SOURCE=.\StdAfx.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\tools.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\tools.h
+# End Source File
+# End Group
+# Begin Group "Header-Dateien"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# End Group
+# Begin Group "Ressourcendateien"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\Ui\Gui\FM.ico
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\UI\GUI\resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\Ui\Gui\resource.rc
+# End Source File
+# End Group
+# Begin Group "Windows"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\DLL.cpp
+
+!IF "$(CFG)" == "Merge7z313 - Win32 Release"
+
+!ELSEIF "$(CFG)" == "Merge7z313 - Win32 Debug"
+
+# PROP Exclude_From_Build 1
+
+!ELSEIF "$(CFG)" == "Merge7z313 - Win32 UnicodeDebug"
+
+!ELSEIF "$(CFG)" == "Merge7z313 - Win32 UnicodeRelease"
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\DLL.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\FileIO.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\FileIO.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\PropVariant.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\PropVariant.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\PropVariantConversions.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\PropVariantConversions.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\ResourceString.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\ResourceString.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\Synchronization.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\Synchronization.h
+# End Source File
+# End Group
+# Begin Group "Common"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\IntToString.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\IntToString.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\Lang.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\Lang.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\StdInStream.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\StdInStream.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\String.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\String.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\StringConvert.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\StringConvert.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\TextConfig.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\TextConfig.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\UTFConvert.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\UTFConvert.h
+# End Source File
+# End Group
+# Begin Group "7zip Common"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\Ui\Agent\ArchiveExtractCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\UI\Agent\ArchiveExtractCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\Ui\Agent\ArchiveUpdateCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\UI\Agent\ArchiveUpdateCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\Control\Dialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\Control\Dialog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\ExtractCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\ExtractCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\Common\FileStreams.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\Common\FileStreams.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\FormatUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\FormatUtils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\LangUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\LangUtils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\Resource\MessagesDialog\MessagesDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\OpenCallback.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\OpenCallback.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\Resource\OverwriteDialog\OverwriteDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\Resource\PasswordDialog\PasswordDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\Resource\PasswordDialog\PasswordDialog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\Resource\ProgressDialog2\ProgressDialog.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\Resource\ProgressDialog2\ProgressDialog.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\Registry.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\Registry.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\RegistryUtils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\RegistryUtils.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\FileManager\UpdateCallback100.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\Window.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\Window.h
+# End Source File
+# End Group
+# Begin Group "Extract"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\Ui\Common\ExtractingFilePath.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\UI\Common\ExtractingFilePath.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\FileDir.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\FileDir.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\FileFind.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\FileFind.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\FileName.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\FileName.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\Common\FilePathAutoRename.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\Common\FilePathAutoRename.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\System.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Windows\System.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\Vector.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\Vector.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\Wildcard.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=..\..\7z313\Common\Wildcard.h
+# End Source File
+# End Group
+# Begin Source File
+
+SOURCE=..\..\7z313\7zip\Ui\Gui\7zG.exe.manifest
+# End Source File
+# End Target
+# End Project
--- /dev/null
+/* File: Merge7zCommon.cpp
+ * Author: Jochen Tucht 2003/12/09
+ * Copyright (C) Jochen Tucht
+ *
+ * Purpose: Provide a handy C++ interface to access 7Zip services
+ *
+ * Remarks: This file contains the presumably version-independent parts of
+ * Merge7z code. Version specific code resides in Merge7zXXX.cpp.
+ *
+ * *** SECURITY ALERT ***
+ * Be aware of 2. a) of the GNU General Public License. Please log your changes
+ * at the end of this comment.
+ *
+ * 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.
+ *
+
+DATE: BY: DESCRIPTION:
+========== ================== ================================================
+2003/12/16 Jochen Tucht GuessFormat() now checks for directory
+
+*/
+
+#include "stdafx.h"
+
+#define INITGUID
+#include <initguid.h>
+
+#include "Merge7zCommon.h"
+
+HINSTANCE g_hInstance;
+DWORD g_dwFlags;
+CHAR g_cPath7z[MAX_PATH];
+
+/**
+ * @brief Dll entry point
+ */
+BOOL APIENTRY DllMain(HINSTANCE hModule, DWORD, LPVOID)
+{
+ g_hInstance = hModule;
+ return TRUE;
+}
+
+/**
+ * @brief Load a dll and import a number of functions.
+ */
+static HMODULE DllProxyHelper(LPCSTR *export, ...)
+{
+ HMODULE handle = 0;
+ if (LPCSTR format = *export)
+ {
+ char path[MAX_PATH];
+ FormatMessageA
+ (
+ FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ARGUMENT_ARRAY,
+ format,
+ 0,
+ 0,
+ path,
+ sizeof path,
+ (va_list *)(&export + 1)
+ );
+ handle = LoadLibraryA(path);
+ if COMPLAIN(handle == 0)
+ {
+ ComplainNotFound(GetSystemString(path));
+ }
+ *export = 0;
+ while (LPCSTR name = *++export)
+ {
+ *export = (LPCSTR)GetProcAddress(handle, name);
+ if COMPLAIN(*export == 0)
+ {
+ ComplainNotFound(GetSystemString(name));
+ }
+ }
+ *export = (LPCSTR)handle;
+ }
+ return handle;
+}
+
+/**
+ * @brief Access archiver dll functions through proxy.
+ */
+struct Format7zDLL *Format7zDLL::Proxy::operator->()
+{
+ DllProxyHelper(Format7zDLL, g_cPath7z);
+ return (struct Format7zDLL *)Format7zDLL;
+}
+
+/**
+ * @brief Ask archiver dll for an instance of IInArchive.
+ */
+IInArchive *Format7zDLL::Interface::GetInArchive()
+{
+ void *pv;
+ if COMPLAIN(proxy->CreateObject(proxy.clsid, &IID_IInArchive, &pv) != S_OK)
+ {
+ ComplainCreateObject(proxy.handle, _T("IInArchive"));
+ }
+ return static_cast<IInArchive *>(pv);
+}
+
+/**
+ * @brief Ask archiver dll for an instance of IOutArchive.
+ */
+IOutArchive *Format7zDLL::Interface::GetOutArchive()
+{
+ void *pv;
+ if COMPLAIN(proxy->CreateObject(proxy.clsid, &IID_IOutArchive, &pv) != S_OK)
+ {
+ ComplainCreateObject(proxy.handle, _T("IOutArchive"));
+ }
+ return static_cast<IOutArchive *>(pv);
+}
+
+/**
+ * @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);
+ }
+ PathAppendA(g_cPath7z, "Formats");
+ return 0;
+}
+
+#define DEFINE_FORMAT(name, dll, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ EXTERN_C const GUID CLSID_##name \
+ = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }; \
+ Format7zDLL::Proxy PROXY_##name = \
+ { \
+ "%1\\" dll, \
+ "CreateObject", \
+ (HMODULE)0, \
+ &CLSID_##name \
+ }; \
+ Format7zDLL::Interface name = PROXY_##name;
+
+/* this is how DEFINE_FORMAT expands:
+DEFINE_GUID(CLSID_CFormat7z,
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x05, 0x00, 0x00);
+
+Format7zDLL::Proxy PROXY_CFormat7z =
+{
+ "%1\\7Z.DLL",
+ "CreateObject",
+ (HMODULE)0,
+ &CLSID_CFormat7z
+};
+
+Format7zDLL::Interface CFormat7z = PROXY_CFormat7z;/**/
+
+DEFINE_FORMAT(CFormat7z, "7Z.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x05, 0x00, 0x00);
+DEFINE_FORMAT(CArjHandler, "ARJ.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x0A, 0x00, 0x00);
+DEFINE_FORMAT(CBZip2Handler, "BZ2.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x07, 0x00, 0x00);
+DEFINE_FORMAT(CCabHandler, "CAB.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x06, 0x00, 0x00);
+DEFINE_FORMAT(CCpioHandler, "CPIO.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x08, 0x00, 0x00);
+DEFINE_FORMAT(CDebHandler, "DEB.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x0C, 0x00, 0x00);
+DEFINE_FORMAT(CGZipHandler, "GZ.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x03, 0x00, 0x00);
+DEFINE_FORMAT(CRarHandler, "RAR.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x02, 0x00, 0x00);
+DEFINE_FORMAT(CRpmHandler, "RPM.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x09, 0x00, 0x00);
+DEFINE_FORMAT(CSplitHandler, "SPLIT.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x0B, 0x00, 0x00);
+DEFINE_FORMAT(CTarHandler, "TAR.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x04, 0x00, 0x00);
+DEFINE_FORMAT(CZipHandler, "ZIP.DLL",
+ 0x23170F69, 0x40C1, 0x278A, 0x10, 0x00, 0x00, 0x01, 0x10, 0x01, 0x00, 0x00);
+
+/**
+ * @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 (PathIsDirectory(path))
+ return 0;
+ ENUM_LIST
+ (
+ EnumList,
+ _ENUM(7Z)
+ ENUM(ZIP)
+ ENUM(JAR)
+ ENUM(XPI)
+ ENUM(RAR)
+ ENUM(BZ2)
+ ENUM(TAR)
+ ENUM(GZ)
+ ENUM(TGZ)
+ ENUM(CAB)
+ ENUM(ARJ)
+ ENUM(CPIO)
+ ENUM(DEB)
+ ENUM(RPM)
+ _ENUM(001)
+ );
+ Format *pFormat = 0;
+ switch (EnumList->Find(PathFindExtension(path), FALSE))
+ {
+ case EnumList::_7Z:
+ pFormat = &CFormat7z;
+ break;
+ case EnumList::ZIP:
+ case EnumList::JAR:
+ case EnumList::XPI:
+ pFormat = &CZipHandler;
+ break;
+ case EnumList::RAR:
+ pFormat = &CRarHandler;
+ break;
+ case EnumList::BZ2:
+ pFormat = &CBZip2Handler;
+ break;
+ case EnumList::TAR:
+ pFormat = &CTarHandler;
+ break;
+ case EnumList::GZ:
+ case EnumList::TGZ:
+ pFormat = &CGZipHandler;
+ break;
+ case EnumList::CAB:
+ pFormat = &CCabHandler;
+ break;
+ case EnumList::ARJ:
+ pFormat = &CArjHandler;
+ break;
+ case EnumList::CPIO:
+ pFormat = &CCpioHandler;
+ break;
+ case EnumList::DEB:
+ pFormat = &CDebHandler;
+ break;
+ case EnumList::RPM:
+ pFormat = &CRpmHandler;
+ break;
+ case EnumList::_001:
+ pFormat = &CSplitHandler;
+ break;
+ }
+ return pFormat;
+}
+
+/**
+ * @brief Export instance of Merge7z interface.
+ */
+EXTERN_C
+{
+ __declspec(dllexport) Merge7z Merge7z;
+}
--- /dev/null
+// includes from 7-Zip sources
+#include "7zip/Archive/IArchive.h"
+#include "7zip/UI/Agent/ArchiveExtractCallback.h"
+#include "7zip/UI/Agent/ArchiveUpdateCallback.h"
+#include "Common/StringConvert.h"
+#include "Windows/PropVariant.h"
+#include "Windows/PropVariantConversions.h"
+#include "Windows/FileDir.h"
+#include "Windows/Thread.h"
+// Merge7z includes
+#include "tools.h"
+#include "Merge7z.h"
+
+using namespace NWindows;
+
+extern HINSTANCE g_hInstance;
+extern DWORD g_dwFlags;
+extern CHAR g_cPath7z[MAX_PATH];
+
+typedef UINT32 (WINAPI * CreateObjectFunc)(
+ const GUID *clsID,
+ const GUID *interfaceID,
+ void **outObject);
+
+struct Format7zDLL
+{
+ HMODULE origin;
+ CreateObjectFunc CreateObject;
+ HMODULE handle;
+ const CLSID *clsid;
+ struct Proxy;
+ interface Interface;
+};
+
+struct Format7zDLL::Proxy
+{
+ LPCSTR Format7zDLL
+ [
+ &((struct Format7zDLL *)0)->handle
+ - &((struct Format7zDLL *)0)->origin
+ ];
+ HMODULE handle;
+ const CLSID *clsid;
+ struct Format7zDLL *operator->();
+};
+
+interface Format7zDLL::Interface : Merge7z::Format
+{
+ Proxy &proxy;
+ Interface(Proxy &proxy):proxy(proxy)
+ {
+ }
+ virtual IInArchive *GetInArchive();
+ virtual HRESULT DeCompressArchive(HWND, LPCTSTR path, LPCTSTR folder);
+ virtual IOutArchive *GetOutArchive();
+ virtual HRESULT CompressArchive(HWND, LPCTSTR path, Merge7z::DirItemEnumerator *);
+};
+
--- /dev/null
+// stdafx.cpp : Quelltextdatei, die nur die Standard-Includes einbindet
+// Merge7z.pch ist die vorkompilierte Header-Datei
+// stdafx.obj enthält die vorkompilierte Typinformation
+
+#include "stdafx.h"
+
+// ZU ERLEDIGEN: Verweis auf alle zusätzlichen Header-Dateien, die Sie in STDAFX.H
+// und nicht in dieser Datei benötigen
--- /dev/null
+#include <limits.h>
+#include <windows.h>
+#include <shlwapi.h>
+#include <commctrl.h>
+#include <basetyps.h>
+#include <vector>
+//<jtuc>
+//- help 7z sources compile with old SDK headers
+#ifndef GWLP_WNDPROC
+typedef INT_PTR LONG_PTR;
+
+#define SetWindowLongPtr SetWindowLong
+#define GetWindowLongPtr GetWindowLong
+
+#define GWLP_WNDPROC GWL_WNDPROC
+#define GWLP_USERDATA GWL_USERDATA
+#define DWLP_MSGRESULT DWL_MSGRESULT
+//#define BIF_NEWDIALOGSTYLE 0
+//#define BTNS_BUTTON 0
+#endif
+
+#ifndef ListView_SetCheckState
+#define ListView_SetCheckState(hLv, iItem, bCheck) ListView_SetItemState(hLv, iItem, bCheck ? INDEXTOSTATEIMAGEMASK(2) : INDEXTOSTATEIMAGEMASK(1), LVIS_STATEIMAGEMASK)
+#endif
+//</jtuc>
+
+#define LANG
+
+// the following defines control how ReadArchiverInfoList() will collect the
+// list of available formats.
+
+/*#define EXCLUDE_COM
+#define FORMAT_7Z
+#define FORMAT_BZIP2
+#define FORMAT_GZIP
+#define FORMAT_TAR
+#define FORMAT_ZIP
+#define FORMAT_CPIO
+#define FORMAT_RPM
+#define FORMAT_ARJ*/
+
+//#define _SFX
--- /dev/null
+/* File: tools.cpp
+ * Author: Jochen Tucht 2003/12/09
+ * Copyright (C) Jochen Tucht
+ *
+ * Purpose: supplementary classes and functions for Merge7z
+ *
+ * Remarks:
+ *
+ * *** SECURITY ALERT ***
+ * Be aware of 2. a) of the GNU General Public License. Please log your changes
+ * at the end of this comment.
+ *
+ * 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.
+ *
+
+DATE: BY: DESCRIPTION:
+========== ================== ================================================
+
+*/
+
+#include "stdafx.h"
+
+#ifndef StrIsIntlEqual
+#ifdef UNICODE
+#define StrIsIntlEqual StrIsIntlEqualW
+#else
+#define StrIsIntlEqual StrIsIntlEqualA
+#endif
+#endif
+
+#include "tools.h"
+
+/**
+ * @brief Construct and throw a Complain object containing an error message.
+ */
+Complain::Complain(LPCTSTR format, ...)
+{
+ wvsprintf(msg, format, (va_list)(&format + 1));
+ throw this;
+}
+
+/**
+ * @brief Report error to user. To be called from within catch block.
+ */
+int Complain::Alert(HWND hwndParent, UINT flags)
+{
+ return MessageBox(hwndParent, msg, 0, flags);
+}
+
+/**
+ * @brief Complain that some DLL failed to CreateObject() something.
+ */
+void ComplainCreateObject(HMODULE handle, LPCTSTR name)
+{
+ TCHAR module[MAX_PATH];
+ ::GetModuleFileName(handle, module, sizeof module);
+ Complain(_T("%.300s Failed to create %.300s"), module, name);
+}
+
+/**
+ * @brief Complain that something could not be found.
+ */
+void ComplainNotFound(LPCTSTR name)
+{
+ Complain(_T("Not found: %.300s"), name);
+}
+
+/**
+ * @brief Complain that something could not be opened.
+ */
+void ComplainCantOpen(LPCTSTR name)
+{
+ Complain(_T("Can't open: %.300s"), name);
+}
+
+/**
+ * @brief Release interface until ref count reaches 0.
+ *
+ * Very bad practice in general, but helps avoiding resource leaks
+ * due to inaccurate ref counting.
+ */
+void NTAPI Release(IUnknown *punk)
+{
+ while (punk)
+ {
+ ULONG Release = punk->Release();
+ if (Release == 0)
+ {
+ punk = 0;
+ }
+ }
+}
+
+/**
+ * @brief Find a keyword within an EnumList, and return its numeric value.
+ */
+EnumList::Find(LPCTSTR r, BOOL fCaseSens) const
+{
+ static const TCHAR trim[] = _T(".;:() ");
+ int cch = StrCSpn(r += StrSpn(r, trim), trim);
+ int Find = 0;
+ LPCTSTR q = buffer;
+ while (LPCTSTR p = StrChr(q, '('))
+ {
+ q = StrChr(++p, ')');
+ if (StrIsIntlEqual(fCaseSens, p, r, cch) && q - p == cch)
+ break;
+ ++Find;
+ }
+ return Find;
+}
--- /dev/null
+#include <tchar.h>
+
+#ifdef _DEBUG
+static int FAIL_AT_LINE = 0;
+#define COMPLAIN(X) ((X) || FAIL_AT_LINE == __LINE__)
+#else
+#define COMPLAIN(X) (X)
+#endif
+
+class Complain
+{
+public:
+ TCHAR msg[1024];
+ Complain(LPCTSTR, ...);
+ int Alert(HWND, UINT = MB_ICONSTOP|MB_TASKMODAL);
+};
+
+void ComplainCreateObject(HMODULE, LPCTSTR);
+void ComplainNotFound(LPCTSTR);
+void ComplainCantOpen(LPCTSTR);
+
+void NTAPI Release(IUnknown *);
+
+struct EnumList
+{
+ TCHAR buffer[INT_MAX];
+ int Find(LPCTSTR r, BOOL fCaseSens) const;
+};
+
+#define ENUM(X) X,
+#define _ENUM(X) _##X,
+#define ENUM_LIST(T,X) struct T: ::EnumList{enum{X N};} const*const T=(struct T const*)_T(#X);
+