home *** CD-ROM | disk | FTP | other *** search
- // multiarc.cpp : Defines the entry point for the DLL application.
- //
-
- #include "stdafx.h"
-
- #include "ArchiverManager.h"
-
- #define E_EGENERALERROR 27
-
- HINSTANCE g_hInstance;
- CArchiverManager aman;
-
- char g_szMultiarcPath[MAX_PATH];
- char g_szMultiarcTempPath[MAX_PATH];
-
- BOOL InitializeArcMan()
- {
- char szFullPath[MAX_PATH],szDrive[_MAX_DRIVE],szPath[MAX_PATH],
- szName[_MAX_FNAME],szExt[_MAX_EXT];
- GetModuleFileName(g_hInstance,szFullPath,MAX_PATH);
- _splitpath(szFullPath,szDrive,szPath,szName,szExt);
- strcpy(szExt,"ini");
- _makepath(szFullPath,szDrive,szPath,szName,szExt);
- _makepath(g_szMultiarcPath,szDrive,szPath,0,0);
- aman.LoadArchiveDescriptions(szFullPath);
-
- GetTempPath(MAX_PATH,g_szMultiarcTempPath);
- lstrcat(g_szMultiarcTempPath,"$mltwcx");
- CreateDirectory(g_szMultiarcTempPath,0);
-
- return TRUE;
- }
-
- BOOL APIENTRY DllMain( HANDLE hModule,
- DWORD ul_reason_for_call,
- LPVOID lpReserved
- )
- {
- switch(ul_reason_for_call)
- {
- case DLL_PROCESS_ATTACH:
- g_hInstance=(HINSTANCE)hModule;
- return InitializeArcMan();
- }
- return TRUE;
- }
-
- int __stdcall OpenArchive(tOpenArchiveData* ArchiveData)
- {
- return (int) aman.OpenArchive(ArchiveData);
- }
-
- int __stdcall CloseArchive(int hArcData)
- {
- return aman.CloseArchive((CArchiverEngine *)hArcData);
- }
-
- int __stdcall ReadHeader(int hArcData,tHeaderData* HeaderData)
- {
- CArchiverEngine *engine=(CArchiverEngine *)hArcData;
- return engine->ReadHeader(HeaderData);
- }
-
- int __stdcall ProcessFile(int hArcData,int Operation,char* DestPath,char* DestName)
- {
- CArchiverEngine *engine=(CArchiverEngine *)hArcData;
-
- if(Operation == PK_SKIP)
- return 0;
-
- int iRet=E_EREAD;
- switch(Operation)
- {
- case PK_EXTRACT:
- iRet=(engine->ExtractFile(DestPath,DestName))?0:E_EGENERALERROR;
- break;
- case PK_TEST:
- iRet=(engine->TestArchive())?0:E_EGENERALERROR;
- break;
- }
- return iRet;
- }
-
- int __stdcall PackFiles(char *PackedFile,char *SubPath,char *SrcPath,
- char *AddList,int Flags)
- {
- tOpenArchiveData data;
- data.ArcName=PackedFile;
- CArchiverEngine *engine=aman.OpenArchive(&data,TRUE);
- if(!data.OpenResult)
- {
- bool bRet=engine->PackFiles(SubPath,SrcPath,AddList,Flags);
- aman.CloseArchive(engine);
- return bRet?0:E_EGENERALERROR;
- }
- return E_EGENERALERROR;
- }
-
- int __stdcall DeleteFiles(char *PackedFile,char *DeleteList)
- {
- tOpenArchiveData data;
- data.ArcName=PackedFile;
- CArchiverEngine *engine=aman.OpenArchive(&data);
- if(!data.OpenResult)
- {
- bool bRet=engine->DeleteFiles(DeleteList);
- aman.CloseArchive(engine);
- return bRet?0:E_EGENERALERROR;
- }
- return E_EGENERALERROR;
- }
-