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

📄 bz2tool.cpp

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

#include "stdafx.h"
#include "Bz2Tool.h"
#include "libbzip2/bzlib.h"

bool CBz2Tool::Check( const char* fname, unsigned long fsize )
{
	const unsigned char* hdr = CTool::common_buf;
	unsigned long siz = (fsize>XACR_BUFSIZE ? XACR_BUFSIZE : fsize);
//--------------------------------------------------------------------//

	if( siz<3 || hdr[0]!='B' || hdr[1]!='Z' || hdr[2]!='h' )
		return false;

	BZFILE* fp=BZ2_bzopen( fname,"rb" );
	if( fp==NULL )
		return false;
	BYTE dummy[20];
	bool ans=(-1!=BZ2_bzread(fp,dummy,20));
	BZ2_bzclose( fp );
	return ans;
}

bool CBz2Tool::Extract( const char* fname,const char* ddir )
{
	unsigned char* buf = CTool::common_buf;
//--------------------------------------------------------------------//

	BZFILE* fp=BZ2_bzopen( fname,"rb" );
	if( fp==NULL )return false;

	char outname[256];
	kiutil::getOriginalName( outname,fname,
//		0==stricmp(kiutil::pathExt(fname),"bz2") ? NULL : "unbzip2" );
		0==strcmp(kiutil::pathExt(fname),"bz2") ? NULL : "unbzip2" );

	//by uema2
	char tmpname[256];
	sprintf(tmpname, "%s\\%s", ueutil::GetExtractPath(), outname); // by uema2.
	strcpy(outname, tmpname);

	FILE* fwp=fopen( outname,"wb" );
	if( fwp!=NULL )
	{
		size_t s;
		while( s=BZ2_bzread( fp,buf,XACR_BUFSIZE ) )
		{
			if( s==-1 )
				break;
			fwrite( buf,1,s,fwp );
		}
		fclose(fwp);
	}
	BZ2_bzclose( fp );
	return true;
}

⌨️ 快捷键说明

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