13b7203622 2011-02-23 kinaba: #ifndef AFX_ARCDLL_H__911C109D_A40E_4722_A6F7_E3ACB8C2D2E3__INCLUDED_ 13b7203622 2011-02-23 kinaba: #define AFX_ARCDLL_H__911C109D_A40E_4722_A6F7_E3ACB8C2D2E3__INCLUDED_ 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: #include "Archiver.h" 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcDLL : public CArchiver 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcDLL( 13b7203622 2011-02-23 kinaba: const char* Dllname, // DLL名 13b7203622 2011-02-23 kinaba: const char* Exts, // 対応拡張子 13b7203622 2011-02-23 kinaba: const char* Ecmd, // 解凍用コマンド 13b7203622 2011-02-23 kinaba: const char* Xcmd, // 部分解凍用コマンド 13b7203622 2011-02-23 kinaba: unsigned int Wild=1, // ワイルドカードの形式( 0=no(*) 1=* 2=*.* ) 13b7203622 2011-02-23 kinaba: const char* Scmd=NULL )// SFX変換用コマンド 13b7203622 2011-02-23 kinaba: : dll( Dllname ), CArchiver( Exts ), m_Ecmd( Ecmd ), 13b7203622 2011-02-23 kinaba: m_Xcmd( Xcmd ), m_Wild( Wild ), m_Scmd( Scmd ) {} 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: protected: //-- 派生してもよし 13b7203622 2011-02-23 kinaba: virtual DWORD set_cmpr_mhd() 13b7203622 2011-02-23 kinaba: { return 0; } 13b7203622 2011-02-23 kinaba: virtual const char* get_cmpr_ext( int method ) 13b7203622 2011-02-23 kinaba: { return cmp_ext(); } 13b7203622 2011-02-23 kinaba: virtual const char* get_cmpr_cmd( int method ) 13b7203622 2011-02-23 kinaba: { return ""; } 13b7203622 2011-02-23 kinaba: virtual void decorate_add_cmpr( kiStr& lst, const char* fname ); 13b7203622 2011-02-23 kinaba: virtual void decorate_add_melt( kiStr& lst, const char* fname ); 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: protected: //-- 内部処理 13b7203622 2011-02-23 kinaba: CArcModule dll; 13b7203622 2011-02-23 kinaba: bool v_ver( kiStr& str ){ dll.ver(str); return true; } 13b7203622 2011-02-23 kinaba: bool v_check( const kiPath& aname ){ return dll.chk(aname); } 13b7203622 2011-02-23 kinaba: int v_contents( const kiPath& aname, kiPath& dname ){ return dll.cnt(aname,dname,m_Wild==2?"*.*":"*"); } 13b7203622 2011-02-23 kinaba: bool v_list( const arcname& aname, aflArray& files ){ return dll.lst_dll(aname,files,m_Wild==2?"*.*":"*"); } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: int v_load(); 13b7203622 2011-02-23 kinaba: int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 13b7203622 2011-02-23 kinaba: int v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ); 13b7203622 2011-02-23 kinaba: kiStr v_name(const char*) const { return dll.name(); } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: const char *m_Ecmd, *m_Xcmd, *m_Scmd; 13b7203622 2011-02-23 kinaba: unsigned int m_Wild; 13b7203622 2011-02-23 kinaba: int cmpr( int mhd, kiStr& aname,const kiPath& to,const kiStr& lst ); 13b7203622 2011-02-23 kinaba: bool arc2sfx( const kiStr& aname ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcDLL_DotSlash : public CArcDLL 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: // "./-" や "./@" とすることでとりあえず無理矢理圧縮する形式 13b7203622 2011-02-23 kinaba: virtual void decorate_add_cmpr( kiStr& lst, const char* fname ); 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: protected: 13b7203622 2011-02-23 kinaba: CArcDLL_DotSlash( 13b7203622 2011-02-23 kinaba: const char* Dllname, 13b7203622 2011-02-23 kinaba: const char* Exts, 13b7203622 2011-02-23 kinaba: const char* Ecmd, 13b7203622 2011-02-23 kinaba: const char* Xcmd, 13b7203622 2011-02-23 kinaba: unsigned int Wild=1, 13b7203622 2011-02-23 kinaba: const char* Scmd=NULL ) 13b7203622 2011-02-23 kinaba: : CArcDLL( Dllname, Exts, Ecmd, Xcmd, Wild, Scmd ) {} 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcRar : public CArcDLL 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcRar() : CArcDLL( 13b7203622 2011-02-23 kinaba: "Unrar32.dll", 13b7203622 2011-02-23 kinaba: "rar.", 13b7203622 2011-02-23 kinaba: "-x", 13b7203622 2011-02-23 kinaba: "-x -s -y --" ) {} 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: kiStr v_name(const char*) const { return "RAR"; } 13b7203622 2011-02-23 kinaba: // 特別に派生 13b7203622 2011-02-23 kinaba: bool v_check( const kiPath& aname ); 13b7203622 2011-02-23 kinaba: int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcUnZip : public CArcDLL 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcUnZip() : CArcDLL( 13b7203622 2011-02-23 kinaba: "UnZip32.dll", 13b7203622 2011-02-23 kinaba: "zip.jar.", 13b7203622 2011-02-23 kinaba: "-x", 13b7203622 2011-02-23 kinaba: "-x --i -o" ) {} 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: kiStr v_name(const char*) const { return "ZIP"; } 13b7203622 2011-02-23 kinaba: // 特別に派生 13b7203622 2011-02-23 kinaba: int v_melt( const arcname& aname, const kiPath& ddir, const aflArray* files ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcLzh : public CArcDLL 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcLzh() : CArcDLL( 13b7203622 2011-02-23 kinaba: "Unlha32.dll", 13b7203622 2011-02-23 kinaba: "lzh.lha.lzs.", 13b7203622 2011-02-23 kinaba: "x -a1 -jf0", 13b7203622 2011-02-23 kinaba: "x -a1 -jf0 -jyo -p1 -n -gm --", 13b7203622 2011-02-23 kinaba: 0, 13b7203622 2011-02-23 kinaba: "s -gw3 -x1" ) {} 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: kiStr v_name(const char*) const { return "LZH"; } 13b7203622 2011-02-23 kinaba: DWORD set_cmpr_mhd(); 13b7203622 2011-02-23 kinaba: const char* get_cmpr_cmd( int method ); 13b7203622 2011-02-23 kinaba: void decorate_add_cmpr( kiStr& lst, const char* fname ); 13b7203622 2011-02-23 kinaba: void decorate_add_melt( kiStr& lst, const char* fname ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcZip : public CArcDLL 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcZip() : CArcDLL( 13b7203622 2011-02-23 kinaba: "Zip32j.dll", 13b7203622 2011-02-23 kinaba: "", 13b7203622 2011-02-23 kinaba: NULL, 13b7203622 2011-02-23 kinaba: NULL, 13b7203622 2011-02-23 kinaba: 1, 13b7203622 2011-02-23 kinaba: "--sfx" ) {} 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: DWORD set_cmpr_mhd(); 13b7203622 2011-02-23 kinaba: const char* get_cmpr_cmd( int method ); 13b7203622 2011-02-23 kinaba: void decorate_add_cmpr( kiStr& lst, const char* fname ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcCab : public CArcDLL_DotSlash 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcCab() : CArcDLL_DotSlash( 13b7203622 2011-02-23 kinaba: "Cab32.dll", 13b7203622 2011-02-23 kinaba: "cab.", 13b7203622 2011-02-23 kinaba: "-x", 13b7203622 2011-02-23 kinaba: "-x -i -o", 13b7203622 2011-02-23 kinaba: 1, 13b7203622 2011-02-23 kinaba: "-f" ) {} 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: kiStr v_name(const char*) const { return "CAB"; } 13b7203622 2011-02-23 kinaba: DWORD set_cmpr_mhd(); 13b7203622 2011-02-23 kinaba: const char* get_cmpr_cmd( int method ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcTar : public CArcDLL_DotSlash 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcTar() : CArcDLL_DotSlash( 13b7203622 2011-02-23 kinaba: "Tar32.dll", 13b7203622 2011-02-23 kinaba: "tar.tgz.tbz.gz.bz2.z.taz.rpm.deb.ar.xz.lzma.", 13b7203622 2011-02-23 kinaba: "-xvf", 13b7203622 2011-02-23 kinaba: "--check-all-path=1 --display-dialog=0 -xvf", 13b7203622 2011-02-23 kinaba: 2 ) {} 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_NORMAL 0 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_TAR 1 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_TARGZ 2 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_TARZ 3 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_GZ 4 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_Z 5 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_TARBZ2 6 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_BZ2 7 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_CPIO 32 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_CPIOGZ 32+4 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_CPIOZ 32+5 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_CPIOBZ2 32+7 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_AR 48 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_ARGZ 48+4 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_ARZ 48+5 13b7203622 2011-02-23 kinaba: #define ARCHIVETYPE_ARBZ2 48+7 13b7203622 2011-02-23 kinaba: kiStr v_name(const char* an) const { switch(dll.arctype(an)) { 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_GZ: return "GZ"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_Z: return "Z"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_BZ2: return "BZ2"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_TARGZ: return "TAR+GZ"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_TARZ: return "TAR+Z"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_TARBZ2: return "TAR+BZ2"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_CPIOGZ: return kiStr("rpm").isSame(kiPath::ext(an)) ? "RPM" : "CPIO+GZ"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_CPIOZ: return "CPIO+Z"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_CPIOBZ2:return "CPIO+BZ2"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_ARGZ: return "AR+GZ"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_ARZ: return "AR+Z"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_ARBZ2: return "AR+BZ2"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_AR: return "AR"; 13b7203622 2011-02-23 kinaba: case ARCHIVETYPE_CPIO: return "CPIO"; 13b7203622 2011-02-23 kinaba: default: return "TAR"; 13b7203622 2011-02-23 kinaba: }} 13b7203622 2011-02-23 kinaba: const char* get_cmpr_ext( int method ); 13b7203622 2011-02-23 kinaba: DWORD set_cmpr_mhd(); 13b7203622 2011-02-23 kinaba: const char* get_cmpr_cmd( int method ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcBga : public CArcDLL_DotSlash 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcBga() : CArcDLL_DotSlash( 13b7203622 2011-02-23 kinaba: "Bga32.dll", 13b7203622 2011-02-23 kinaba: "gza.bza.", 13b7203622 2011-02-23 kinaba: "x -a", 13b7203622 2011-02-23 kinaba: "x -a -i -o", 13b7203622 2011-02-23 kinaba: 0, 13b7203622 2011-02-23 kinaba: "s" ) {} 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: kiStr v_name(const char* an) const { return dll.arctype(an)==2 ? "BZA" : "GZA"; } 13b7203622 2011-02-23 kinaba: const char* get_cmpr_ext( int method ); 13b7203622 2011-02-23 kinaba: DWORD set_cmpr_mhd(); 13b7203622 2011-02-23 kinaba: const char* get_cmpr_cmd( int method ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcYz1 : public CArcDLL 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcYz1() : CArcDLL( 13b7203622 2011-02-23 kinaba: "Yz1.dll", 13b7203622 2011-02-23 kinaba: "yz1.", 13b7203622 2011-02-23 kinaba: "x", 13b7203622 2011-02-23 kinaba: "x -y -z -i2 --", 13b7203622 2011-02-23 kinaba: 0, 13b7203622 2011-02-23 kinaba: "s" ) {} 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: kiStr v_name(const char*) const { return "YZ1"; } 13b7203622 2011-02-23 kinaba: DWORD set_cmpr_mhd(); 13b7203622 2011-02-23 kinaba: const char* get_cmpr_cmd( int method ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcArj : public CArcDLL 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcArj() : CArcDLL 13b7203622 2011-02-23 kinaba: ( "Unarj32j.dll", "arj.", "x -jyc", "x -y -p -hm -i -!" ) {} 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: kiStr v_name(const char*) const { return "ARJ"; } 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArcGca : public CArcDLL 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArcGca() : CArcDLL 13b7203622 2011-02-23 kinaba: ( "UnGCA32.dll", "gca.", "e -sx1", "ex -xx1 -sx0 -yx0" ) {} 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: kiStr v_name(const char*) const { return "GCA"; } 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArc7z : public CArcDLL_DotSlash 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArc7z() : CArcDLL_DotSlash( 13b7203622 2011-02-23 kinaba: "7-zip32.dll", 13b7203622 2011-02-23 kinaba: "7z.zip.jar.", 13b7203622 2011-02-23 kinaba: "x --", 13b7203622 2011-02-23 kinaba: "x -y -hide --", 13b7203622 2011-02-23 kinaba: 1, 13b7203622 2011-02-23 kinaba: "" ) {} 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: kiStr v_name(const char* an) const { return dll.arctype(an)==1 ? "ZIP" : "7Z"; } 13b7203622 2011-02-23 kinaba: DWORD set_cmpr_mhd(); 13b7203622 2011-02-23 kinaba: const char* get_cmpr_cmd( int method ); 13b7203622 2011-02-23 kinaba: const char* get_cmpr_ext( int method ); 13b7203622 2011-02-23 kinaba: virtual int v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ); 13b7203622 2011-02-23 kinaba: bool m_SfxMode; 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: class CArc7zZip : public CArcDLL_DotSlash 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: public: 13b7203622 2011-02-23 kinaba: CArc7zZip() : CArcDLL_DotSlash( 13b7203622 2011-02-23 kinaba: "7-zip32.dll", 13b7203622 2011-02-23 kinaba: "",NULL,NULL,1,"" ) {} 13b7203622 2011-02-23 kinaba: private: 13b7203622 2011-02-23 kinaba: DWORD set_cmpr_mhd(); 13b7203622 2011-02-23 kinaba: const char* get_cmpr_cmd( int method ); 13b7203622 2011-02-23 kinaba: virtual bool v_ver( kiStr& ){return false;}//CArc7zに任せる 13b7203622 2011-02-23 kinaba: virtual int v_compress( const kiPath& base, const wfdArray& files, const kiPath& ddir, int method, bool sfx ); 13b7203622 2011-02-23 kinaba: }; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------------------------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: #endif