示例#1
0
int64_t lzbench_lzmat_compress(char *inbuf, size_t insize, char *outbuf, size_t outsize, size_t level, size_t, char*)
{
	uint32_t complen = outsize;
	if (lzmat_encode((uint8_t*)outbuf, &complen, (uint8_t*)inbuf, insize) != 0)
		return 0;
	return complen;
}
示例#2
0
文件: test_lzmat.c 项目: nemequ/lzmat
int _tmain(int argc, _TCHAR *argv[])
{
	FILE *f;
	unsigned char *buf, *buf1;
	int cb, cbOut, encode, err;

	_tprintf(_T("\nTest program for the LZMAT compression library.\nCopyright (c) 2007,2008 Vitaly Evseenko\n\n"));
	if(argc<4)
	{
		_tprintf(_T("Arguments required!\nUSAGE: test_lzmat <e|d> <InputFile> <OutputFile>\n"));
		return -1;
	}
	f=_tfopen(argv[2], _T("rb"));
	if(f==NULL)
	{
		_tprintf(_T("LZMAT: unable to open %s. Error: #%d\n"), argv[2], errno);
		return -1;
	}
	fseek(f, 0, SEEK_END);
	cb=ftell(f);
	fseek(f, 0, SEEK_SET);
	buf = (unsigned char *)malloc(cb);
	cb = fread(buf, 1, cb, f);
	fclose(f);
	if((char)(argv[1][0]|0x20)=='e')
		encode = 1;
	else if((char)(argv[1][0]|0x20)=='d')
		encode = 0;
	else
	{
		_tprintf(_T("LZMAT: invalid argument!\n"));
		return -1;
	}
//__asm int 3;
	if(encode)
	{
		cbOut=MAX_LZMAT_ENCODED_SIZE(cb);
		buf1 = (unsigned char *)malloc(cbOut+sizeof(int));

		*(int *)buf1 = cb;
		err = lzmat_encode(buf1+sizeof(int), &cbOut, buf, cb);
		if(err)
		{
			_tprintf(_T("LZMAT: encode err! #%d\n"), err);
			return err;
		}
		_tprintf(_T("LZMAT: encoded %d bytes to %d bytes\n"), cb, cbOut);
		f=_tfopen(argv[3], _T("w+b"));
		if(f==NULL)
		{
			_tprintf(_T("LZMAT: unable to open %s! Error: #%d\n"), argv[3], errno);
			return -1;
		}
		fwrite(buf1, 1, cbOut+sizeof(int), f);
		fclose(f);
		return 0;
	}
	cbOut = *(int *)buf;
	cb-=sizeof(int);
	buf1 = (unsigned char *)malloc(cbOut);
	err = lzmat_decode(buf1, &cbOut, buf+sizeof(int), cb);
	if(err)
	{
		_tprintf(_T("LZMAT: decode error %d\n"), err);
		return err;
	}
	_tprintf(_T("LZMAT: decoded %d to %d\n"), cb, cbOut);
	f=_tfopen(argv[3], _T("w+b"));
	if(f==NULL)
	{
		_tprintf(_T("LZMAT: unable to open %s! Error: #%d\n"), argv[3], errno);
		return -1;
	}
	fwrite(buf1, 1, cbOut, f);
	fclose(f);
	return 0;
}