⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tartool.h

📁 一个解压程序,只要设定了解压路径和解压文件的种类,就可以随意解压
💻 H
字号:
#ifndef AFX_TARTOOL_H__5015A722_3A09_11D4_8D96_9C430C9F5A32__INCLUDED_
#define AFX_TARTOOL_H__5015A722_3A09_11D4_8D96_9C430C9F5A32__INCLUDED_

#include "Tool.h"
#include "zlib/zlib.h"
#include "libbzip2/bzlib.h"
#include "complib.h"

// TAR+BZIP2 偲偐 TAR+GZIP 偲偐 TAR+COMPRESS 偲偐 堦妵僒億乕僩
class CTarTool : public CTool
{
public:
	CTarTool() : CTool( "Tar 揥奐" ){fp=NULL;}
	CTarTool(const char* r)	: CTool(r) {}

	bool IsType( const char* ext )
//		{return 0==stricmp(ext,"tar");}
		{return 0==strcmp(ext,"tar");} //by uema2.

	bool Check( const char* fname, unsigned long fsize );
	bool Extract( const char* fname, const char* ddir );

protected:
	virtual bool   TarOpen(const char* fname);
	virtual size_t TarRead(void* red,size_t size);
	virtual void   TarClose();
private:
	void SkipBlock(int num);
	FILE* fp;
};

class CTbzTool : public CTarTool
{
//
// using
//
// libbzip2 1.0.1
//   http://sources.redhat.com/bzip2/
// Copyright (C) 1996-2000 Julian R Seward.  All rights reserved.
//
// see "libbzip2/LICENSE"
//

public:
	CTbzTool() : CTarTool("Tar+Bzip2 揥奐") {bfp=NULL;};
	bool IsType( const char* ext )
//		{return 0==stricmp(ext,"bz2") || 0==stricmp(ext,"tbz");}
		{return 0==strcmp(ext,"bz2") || 0==strcmp(ext,"tbz");} //by uema2.
protected:
	bool   TarOpen(const char* fname);
	size_t TarRead(void* red,size_t size);
	void   TarClose();
private:
	BZFILE* bfp;
};

class CTgzTool : public CTarTool
{
//
// using
//
// zlib 1.1.3
//   http://www.info-zip.org/pub/infozip/zlib/
// Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler
//
// see "zlib/zlib.h"
//

public:
	CTgzTool() : CTarTool("Tar+Gzip 揥奐") {gfp=NULL;};
	bool IsType( const char* ext )
//		{return 0==stricmp(ext,"gz") || 0==stricmp(ext,"tgz");}
		{return 0==strcmp(ext,"gz") || 0==strcmp(ext,"tgz");} // by uema2.
protected:
	bool   TarOpen(const char* fname);
	size_t TarRead(void* red,size_t size);
	void   TarClose();
private:
	gzFile gfp;
};

class CTaZTool : public CTarTool
{
// see complib.h

public:
	CTaZTool() : CTarTool("Tar+Compress 揥奐") {zfp=NULL;};
	bool IsType( const char* ext )
		{return 0==strcmp(ext,"Z") || 0==strcmp(ext,"taZ");}
protected:
	bool   TarOpen(const char* fname);
	size_t TarRead(void* red,size_t size);
	void   TarClose();
private:
	ZFILE* zfp;
};

class CTazTool : public CTarTool
{
// see complib.h

public:
	CTazTool() : CTarTool("Tar+Pack 揥奐") {pfp=NULL;};
	bool IsType( const char* ext )
		{return 0==strcmp(ext,"z") || 0==strcmp(ext,"taz");}
protected:
	bool   TarOpen(const char* fname);
	size_t TarRead(void* red,size_t size);
	void   TarClose();
private:
	PFILE* pfp;
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -