File Annotation

Not logged in
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