v0.65
This commit is contained in:
parent
c9bd217232
commit
c4ad00c487
15 changed files with 3129 additions and 3419 deletions
19
UnAlz.cpp
19
UnAlz.cpp
|
@ -8,6 +8,10 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
# pragma warning( disable : 4996 ) // crt secure warning
|
||||||
|
#endif
|
||||||
|
|
||||||
// utime 함수 처리
|
// utime 함수 처리
|
||||||
#if defined(_WIN32) || defined(__CYGWIN__)
|
#if defined(_WIN32) || defined(__CYGWIN__)
|
||||||
# include <time.h>
|
# include <time.h>
|
||||||
|
@ -38,11 +42,6 @@
|
||||||
# include <errno.h> // iconv.h 때문에 필요
|
# include <errno.h> // iconv.h 때문에 필요
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32 // string conversion
|
|
||||||
# include <atlbase.h>
|
|
||||||
# include <atlconv.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _WIN32 // safe string 처리
|
#ifdef _WIN32 // safe string 처리
|
||||||
# include <strsafe.h>
|
# include <strsafe.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -246,8 +245,9 @@ void CUnAlz::SetCallback(_UnAlzCallback* pFunc, void* param)
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
BOOL CUnAlz::Open(LPCWSTR szPathName)
|
BOOL CUnAlz::Open(LPCWSTR szPathName)
|
||||||
{
|
{
|
||||||
USES_CONVERSION;
|
char szPathNameA[MAX_PATH];
|
||||||
return Open(W2A(szPathName));
|
::WideCharToMultiByte(CP_ACP, 0, szPathName, -1, szPathNameA, MAX_PATH, NULL, NULL);
|
||||||
|
return Open(szPathNameA);
|
||||||
}
|
}
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
/// 대상 파일 세팅하기.
|
/// 대상 파일 세팅하기.
|
||||||
|
@ -257,8 +257,9 @@ BOOL CUnAlz::Open(LPCWSTR szPathName)
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
BOOL CUnAlz::SetCurrentFile(LPCWSTR szFileName)
|
BOOL CUnAlz::SetCurrentFile(LPCWSTR szFileName)
|
||||||
{
|
{
|
||||||
USES_CONVERSION;
|
char szFileNameA[MAX_PATH];
|
||||||
return SetCurrentFile(W2A(szFileName));
|
::WideCharToMultiByte(CP_ACP, 0, szFileName, -1, szFileNameA, MAX_PATH, NULL, NULL);
|
||||||
|
return SetCurrentFile(szFileNameA);
|
||||||
}
|
}
|
||||||
BOOL CUnAlz::IsFolder(LPCWSTR szPathName)
|
BOOL CUnAlz::IsFolder(LPCWSTR szPathName)
|
||||||
{
|
{
|
||||||
|
|
8
UnAlz.h
8
UnAlz.h
|
@ -41,7 +41,7 @@
|
||||||
- .ALZ 의 압축을 해제하기 위한 모듈.
|
- .ALZ 의 압축을 해제하기 위한 모듈.
|
||||||
- ALZ는 BZIP2변형(변형이라고 뭐 개선한게 아니고, 헤더나 CRC 정보등을 빼서 크기를 줄인 것임)과,
|
- ALZ는 BZIP2변형(변형이라고 뭐 개선한게 아니고, 헤더나 CRC 정보등을 빼서 크기를 줄인 것임)과,
|
||||||
DEFLATE 압축 알고리즘에 ZIP과 유사한 헤더를 만들어서 씌운 포맷임.
|
DEFLATE 압축 알고리즘에 ZIP과 유사한 헤더를 만들어서 씌운 포맷임.
|
||||||
(bzip2 는 4.9x 에서 사용하였고, deflate 는 5.x 부터 사용하였음. 5.x 부터는 bzip2는 너무 느려서 사용 안함)
|
(bzip2 는 알집 4.9x 에서 사용하였고, deflate 는 5.x 부터 사용하였음. 5.x 부터는 bzip2는 너무 느려서 사용 안함)
|
||||||
- UnAlzBz2decompress.c 와 UnAlzbzlib.c 는 원래의 bzip2 소스에서 alz 용으로 수정된 파일임
|
- UnAlzBz2decompress.c 와 UnAlzbzlib.c 는 원래의 bzip2 소스에서 alz 용으로 수정된 파일임
|
||||||
(deflate 는 변형이 안되었기 때문에 그냥 zlib 를 써도 되지만.. bzip2 는 변형이 되어서
|
(deflate 는 변형이 안되었기 때문에 그냥 zlib 를 써도 되지만.. bzip2 는 변형이 되어서
|
||||||
원래의 bzip2 소스를 그대로 쓰면 안된다.)
|
원래의 bzip2 소스를 그대로 쓰면 안된다.)
|
||||||
|
@ -119,6 +119,10 @@
|
||||||
- 파일 리스팅 부분 수정
|
- 파일 리스팅 부분 수정
|
||||||
- 소스 정리
|
- 소스 정리
|
||||||
- unalz 0.64
|
- unalz 0.64
|
||||||
|
2009/04/01 - bzip2 1.0.5 update
|
||||||
|
- vs2008 컴파일 관련 이슈 수정(atlconv 안쓰기, crt secure warning disable) (by kaisyu@gmail)
|
||||||
|
- unalz 0.65
|
||||||
|
|
||||||
|
|
||||||
기능 :
|
기능 :
|
||||||
- alz 파일의 압축 해제 (deflate/변형 bzip2/raw)
|
- alz 파일의 압축 해제 (deflate/변형 bzip2/raw)
|
||||||
|
@ -224,7 +228,7 @@ namespace UNALZ
|
||||||
# pragma pack(1)
|
# pragma pack(1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char UNALZ_VERSION[] = "CUnAlz0.63";
|
static const char UNALZ_VERSION[] = "CUnAlz0.65";
|
||||||
static const char UNALZ_COPYRIGHT[] = "Copyright(C) 2004-2009 by kippler@gmail.com ( http://www.kipple.pe.kr ) ";
|
static const char UNALZ_COPYRIGHT[] = "Copyright(C) 2004-2009 by kippler@gmail.com ( http://www.kipple.pe.kr ) ";
|
||||||
|
|
||||||
enum {ALZ_ENCR_HEADER_LEN=12}; // xf86
|
enum {ALZ_ENCR_HEADER_LEN=12}; // xf86
|
||||||
|
|
|
@ -7,59 +7,19 @@
|
||||||
/*--- decompress.c ---*/
|
/*--- decompress.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
2. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product
|
|
||||||
documentation would be appreciated but is not required.
|
|
||||||
|
|
||||||
3. Altered source versions must be plainly marked as such, and must
|
|
||||||
not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
4. The name of the author may not be used to endorse or promote
|
|
||||||
products derived from this software without specific prior written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
||||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
||||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
Julian Seward, Cambridge, UK.
|
|
||||||
jseward@acm.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bzip2/bzlib_private.h"
|
#include "bzip2/bzlib_private.h"
|
||||||
|
@ -240,16 +200,13 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
// [ALZ] - 머리 떼기
|
// [ALZ] - 머리 떼기
|
||||||
/*
|
/*
|
||||||
GET_UCHAR(BZ_X_MAGIC_1, uc);
|
GET_UCHAR(BZ_X_MAGIC_1, uc);
|
||||||
if (uc != BZ_HDR_B)
|
if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC);
|
||||||
RETURN(BZ_DATA_ERROR_MAGIC);
|
|
||||||
|
|
||||||
GET_UCHAR(BZ_X_MAGIC_2, uc);
|
GET_UCHAR(BZ_X_MAGIC_2, uc);
|
||||||
if (uc != BZ_HDR_Z)
|
if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC);
|
||||||
RETURN(BZ_DATA_ERROR_MAGIC);
|
|
||||||
|
|
||||||
GET_UCHAR(BZ_X_MAGIC_3, uc)
|
GET_UCHAR(BZ_X_MAGIC_3, uc)
|
||||||
if (uc != BZ_HDR_h)
|
if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC);
|
||||||
RETURN(BZ_DATA_ERROR_MAGIC);
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
case BZ_X_MAGIC_1 : // 없어진 헤더 인식 대신
|
case BZ_X_MAGIC_1 : // 없어진 헤더 인식 대신
|
||||||
|
@ -259,8 +216,7 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
s->blockSize100k = 0x39; // static 할당.
|
s->blockSize100k = 0x39; // static 할당.
|
||||||
|
|
||||||
if (s->blockSize100k < (BZ_HDR_0 + 1) ||
|
if (s->blockSize100k < (BZ_HDR_0 + 1) ||
|
||||||
s->blockSize100k > (BZ_HDR_0 + 9))
|
s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC);
|
||||||
RETURN(BZ_DATA_ERROR_MAGIC);
|
|
||||||
s->blockSize100k -= BZ_HDR_0;
|
s->blockSize100k -= BZ_HDR_0;
|
||||||
|
|
||||||
if (s->smallDecompress) {
|
if (s->smallDecompress) {
|
||||||
|
@ -268,12 +224,10 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
s->ll4 = BZALLOC(
|
s->ll4 = BZALLOC(
|
||||||
((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar)
|
((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar)
|
||||||
);
|
);
|
||||||
if (s->ll16 == NULL || s->ll4 == NULL)
|
if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR);
|
||||||
RETURN(BZ_MEM_ERROR);
|
|
||||||
} else {
|
} else {
|
||||||
s->tt = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) );
|
s->tt = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) );
|
||||||
if (s->tt == NULL)
|
if (s->tt == NULL) RETURN(BZ_MEM_ERROR);
|
||||||
RETURN(BZ_MEM_ERROR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GET_UCHAR(BZ_X_BLKHDR_1, uc);
|
GET_UCHAR(BZ_X_BLKHDR_1, uc);
|
||||||
|
@ -300,23 +254,17 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
|
|
||||||
/* [ALZ] - 원래 헤더
|
/* [ALZ] - 원래 헤더
|
||||||
if (uc == 0x17) goto endhdr_2;
|
if (uc == 0x17) goto endhdr_2;
|
||||||
if (uc != 0x31)
|
if (uc != 0x31) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_UCHAR(BZ_X_BLKHDR_2, uc);
|
GET_UCHAR(BZ_X_BLKHDR_2, uc);
|
||||||
if (uc != 0x41)
|
if (uc != 0x41) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_UCHAR(BZ_X_BLKHDR_3, uc);
|
GET_UCHAR(BZ_X_BLKHDR_3, uc);
|
||||||
if (uc != 0x59)
|
if (uc != 0x59) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_UCHAR(BZ_X_BLKHDR_4, uc);
|
GET_UCHAR(BZ_X_BLKHDR_4, uc);
|
||||||
if (uc != 0x26)
|
if (uc != 0x26) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_UCHAR(BZ_X_BLKHDR_5, uc);
|
GET_UCHAR(BZ_X_BLKHDR_5, uc);
|
||||||
if (uc != 0x53)
|
if (uc != 0x53) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_UCHAR(BZ_X_BLKHDR_6, uc);
|
GET_UCHAR(BZ_X_BLKHDR_6, uc);
|
||||||
if (uc != 0x59)
|
if (uc != 0x59) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
s->currBlockNo++;
|
s->currBlockNo++;
|
||||||
|
@ -369,25 +317,21 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
if (uc == 1) s->inUse[i * 16 + j] = True;
|
if (uc == 1) s->inUse[i * 16 + j] = True;
|
||||||
}
|
}
|
||||||
makeMaps_d ( s );
|
makeMaps_d ( s );
|
||||||
if (s->nInUse == 0)
|
if (s->nInUse == 0) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
alphaSize = s->nInUse+2;
|
alphaSize = s->nInUse+2;
|
||||||
|
|
||||||
/*--- Now the selectors ---*/
|
/*--- Now the selectors ---*/
|
||||||
GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
|
GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
|
||||||
if (nGroups < 2 || nGroups > 6)
|
if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
|
GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
|
||||||
if (nSelectors < 1)
|
if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
for (i = 0; i < nSelectors; i++) {
|
for (i = 0; i < nSelectors; i++) {
|
||||||
j = 0;
|
j = 0;
|
||||||
while (True) {
|
while (True) {
|
||||||
GET_BIT(BZ_X_SELECTOR_3, uc);
|
GET_BIT(BZ_X_SELECTOR_3, uc);
|
||||||
if (uc == 0) break;
|
if (uc == 0) break;
|
||||||
j++;
|
j++;
|
||||||
if (j >= nGroups)
|
if (j >= nGroups) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
}
|
}
|
||||||
s->selectorMtf[i] = j;
|
s->selectorMtf[i] = j;
|
||||||
}
|
}
|
||||||
|
@ -411,8 +355,7 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
GET_BITS(BZ_X_CODING_1, curr, 5);
|
GET_BITS(BZ_X_CODING_1, curr, 5);
|
||||||
for (i = 0; i < alphaSize; i++) {
|
for (i = 0; i < alphaSize; i++) {
|
||||||
while (True) {
|
while (True) {
|
||||||
if (curr < 1 || curr > 20)
|
if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_BIT(BZ_X_CODING_2, uc);
|
GET_BIT(BZ_X_CODING_2, uc);
|
||||||
if (uc == 0) break;
|
if (uc == 0) break;
|
||||||
GET_BIT(BZ_X_CODING_3, uc);
|
GET_BIT(BZ_X_CODING_3, uc);
|
||||||
|
@ -488,16 +431,14 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
|
|
||||||
if (s->smallDecompress)
|
if (s->smallDecompress)
|
||||||
while (es > 0) {
|
while (es > 0) {
|
||||||
if (nblock >= nblockMAX)
|
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
s->ll16[nblock] = (UInt16)uc;
|
s->ll16[nblock] = (UInt16)uc;
|
||||||
nblock++;
|
nblock++;
|
||||||
es--;
|
es--;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
while (es > 0) {
|
while (es > 0) {
|
||||||
if (nblock >= nblockMAX)
|
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
s->tt[nblock] = (UInt32)uc;
|
s->tt[nblock] = (UInt32)uc;
|
||||||
nblock++;
|
nblock++;
|
||||||
es--;
|
es--;
|
||||||
|
@ -507,8 +448,7 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (nblock >= nblockMAX)
|
if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
|
|
||||||
/*-- uc = MTF ( nextSym-1 ) --*/
|
/*-- uc = MTF ( nextSym-1 ) --*/
|
||||||
{
|
{
|
||||||
|
@ -581,17 +521,23 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
if (s->origPtr < 0 || s->origPtr >= nblock)
|
if (s->origPtr < 0 || s->origPtr >= nblock)
|
||||||
RETURN(BZ_DATA_ERROR);
|
RETURN(BZ_DATA_ERROR);
|
||||||
|
|
||||||
|
/*-- Set up cftab to facilitate generation of T^(-1) --*/
|
||||||
|
s->cftab[0] = 0;
|
||||||
|
for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
|
||||||
|
for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
|
||||||
|
for (i = 0; i <= 256; i++) {
|
||||||
|
if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
|
||||||
|
/* s->cftab[i] can legitimately be == nblock */
|
||||||
|
RETURN(BZ_DATA_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
s->state_out_len = 0;
|
s->state_out_len = 0;
|
||||||
s->state_out_ch = 0;
|
s->state_out_ch = 0;
|
||||||
BZ_INITIALISE_CRC ( s->calculatedBlockCRC );
|
BZ_INITIALISE_CRC ( s->calculatedBlockCRC );
|
||||||
s->state = BZ_X_OUTPUT;
|
s->state = BZ_X_OUTPUT;
|
||||||
if (s->verbosity >= 2) VPrintf0 ( "rt+rld" );
|
if (s->verbosity >= 2) VPrintf0 ( "rt+rld" );
|
||||||
|
|
||||||
/*-- Set up cftab to facilitate generation of T^(-1) --*/
|
|
||||||
s->cftab[0] = 0;
|
|
||||||
for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
|
|
||||||
for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
|
|
||||||
|
|
||||||
if (s->smallDecompress) {
|
if (s->smallDecompress) {
|
||||||
|
|
||||||
/*-- Make a copy of cftab, used in generation of T --*/
|
/*-- Make a copy of cftab, used in generation of T --*/
|
||||||
|
@ -657,20 +603,15 @@ Int32 BZ2_decompress ( DState* s )
|
||||||
// [ALZ] - 꼬리 떼기
|
// [ALZ] - 꼬리 떼기
|
||||||
/*
|
/*
|
||||||
GET_UCHAR(BZ_X_ENDHDR_2, uc);
|
GET_UCHAR(BZ_X_ENDHDR_2, uc);
|
||||||
if (uc != 0x72)
|
if (uc != 0x72) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_UCHAR(BZ_X_ENDHDR_3, uc);
|
GET_UCHAR(BZ_X_ENDHDR_3, uc);
|
||||||
if (uc != 0x45)
|
if (uc != 0x45) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_UCHAR(BZ_X_ENDHDR_4, uc);
|
GET_UCHAR(BZ_X_ENDHDR_4, uc);
|
||||||
if (uc != 0x38)
|
if (uc != 0x38) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_UCHAR(BZ_X_ENDHDR_5, uc);
|
GET_UCHAR(BZ_X_ENDHDR_5, uc);
|
||||||
if (uc != 0x50)
|
if (uc != 0x50) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
GET_UCHAR(BZ_X_ENDHDR_6, uc);
|
GET_UCHAR(BZ_X_ENDHDR_6, uc);
|
||||||
if (uc != 0x90)
|
if (uc != 0x90) RETURN(BZ_DATA_ERROR);
|
||||||
RETURN(BZ_DATA_ERROR);
|
|
||||||
|
|
||||||
s->storedCombinedCRC = 0;
|
s->storedCombinedCRC = 0;
|
||||||
GET_UCHAR(BZ_X_CCRC_1, uc);
|
GET_UCHAR(BZ_X_CCRC_1, uc);
|
||||||
|
|
|
@ -10,6 +10,11 @@
|
||||||
# define U64FORM(x) "%"#x"llu"
|
# define U64FORM(x) "%"#x"llu"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
# pragma warning( disable : 4996 ) // crt secure warning
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define LEN_ATTR 6
|
#define LEN_ATTR 6
|
||||||
|
|
||||||
time_t dosTime2TimeT(UINT32 dostime) // from INFO-ZIP src
|
time_t dosTime2TimeT(UINT32 dostime) // from INFO-ZIP src
|
||||||
|
|
149
UnAlzbzlib.c
149
UnAlzbzlib.c
|
@ -9,80 +9,39 @@
|
||||||
// ALZ 압축 해제를 위해서 수정된 bzip2 소스
|
// ALZ 압축 해제를 위해서 수정된 bzip2 소스
|
||||||
// [ALZ] 라고 표시된 부분이 수정된 부분이다.
|
// [ALZ] 라고 표시된 부분이 수정된 부분이다.
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
# pragma warning( disable : 4996 ) // crt secure warning
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
/*--- Library top-level functions. ---*/
|
/*--- Library top-level functions. ---*/
|
||||||
/*--- bzlib.c ---*/
|
/*--- bzlib.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
|
|
||||||
2. The origin of this software must not be misrepresented; you must
|
/* CHANGES
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product
|
|
||||||
documentation would be appreciated but is not required.
|
|
||||||
|
|
||||||
3. Altered source versions must be plainly marked as such, and must
|
|
||||||
not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
4. The name of the author may not be used to endorse or promote
|
|
||||||
products derived from this software without specific prior written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
||||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
||||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
Julian Seward, Cambridge, UK.
|
|
||||||
jseward@acm.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
/*--
|
|
||||||
CHANGES
|
|
||||||
~~~~~~~
|
|
||||||
0.9.0 -- original version.
|
0.9.0 -- original version.
|
||||||
|
|
||||||
0.9.0a/b -- no changes in this file.
|
0.9.0a/b -- no changes in this file.
|
||||||
|
0.9.0c -- made zero-length BZ_FLUSH work correctly in bzCompress().
|
||||||
0.9.0c
|
fixed bzWrite/bzRead to ignore zero-length requests.
|
||||||
* made zero-length BZ_FLUSH work correctly in bzCompress().
|
fixed bzread to correctly handle read requests after EOF.
|
||||||
* fixed bzWrite/bzRead to ignore zero-length requests.
|
wrong parameter order in call to bzDecompressInit in
|
||||||
* fixed bzread to correctly handle read requests after EOF.
|
|
||||||
* wrong parameter order in call to bzDecompressInit in
|
|
||||||
bzBuffToBuffDecompress. Fixed.
|
bzBuffToBuffDecompress. Fixed.
|
||||||
--*/
|
*/
|
||||||
|
|
||||||
#include "bzip2/bzlib_private.h"
|
#include "bzip2/bzlib_private.h"
|
||||||
|
|
||||||
|
@ -99,12 +58,12 @@ void BZ2_bz__AssertH__fail ( int errcode )
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\n\nbzip2/libbzip2: internal error number %d.\n"
|
"\n\nbzip2/libbzip2: internal error number %d.\n"
|
||||||
"This is a bug in bzip2/libbzip2, %s.\n"
|
"This is a bug in bzip2/libbzip2, %s.\n"
|
||||||
"Please report it to me at: jseward@acm.org. If this happened\n"
|
"Please report it to me at: jseward@bzip.org. If this happened\n"
|
||||||
"when you were using some program which uses libbzip2 as a\n"
|
"when you were using some program which uses libbzip2 as a\n"
|
||||||
"component, you should also report this bug to the author(s)\n"
|
"component, you should also report this bug to the author(s)\n"
|
||||||
"of that program. Please make an effort to report this bug;\n"
|
"of that program. Please make an effort to report this bug;\n"
|
||||||
"timely and accurate bug reports eventually lead to higher\n"
|
"timely and accurate bug reports eventually lead to higher\n"
|
||||||
"quality software. Thanks. Julian Seward, 30 December 2001.\n\n",
|
"quality software. Thanks. Julian Seward, 10 December 2007.\n\n",
|
||||||
errcode,
|
errcode,
|
||||||
BZ2_bzlibVersion()
|
BZ2_bzlibVersion()
|
||||||
);
|
);
|
||||||
|
@ -585,8 +544,11 @@ int BZ_API(BZ2_bzDecompressInit)
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
|
/* Return True iff data corruption is discovered.
|
||||||
|
Returns False if there is no problem.
|
||||||
|
*/
|
||||||
static
|
static
|
||||||
void unRLE_obuf_to_output_FAST ( DState* s )
|
Bool unRLE_obuf_to_output_FAST ( DState* s )
|
||||||
{
|
{
|
||||||
UChar k1;
|
UChar k1;
|
||||||
|
|
||||||
|
@ -595,7 +557,7 @@ void unRLE_obuf_to_output_FAST ( DState* s )
|
||||||
while (True) {
|
while (True) {
|
||||||
/* try to finish existing run */
|
/* try to finish existing run */
|
||||||
while (True) {
|
while (True) {
|
||||||
if (s->strm->avail_out == 0) return;
|
if (s->strm->avail_out == 0) return False;
|
||||||
if (s->state_out_len == 0) break;
|
if (s->state_out_len == 0) break;
|
||||||
*( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
|
*( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
|
||||||
BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
|
BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
|
||||||
|
@ -607,8 +569,11 @@ void unRLE_obuf_to_output_FAST ( DState* s )
|
||||||
}
|
}
|
||||||
|
|
||||||
/* can a new run be started? */
|
/* can a new run be started? */
|
||||||
if (s->nblock_used == s->save_nblock+1) return;
|
if (s->nblock_used == s->save_nblock+1) return False;
|
||||||
|
|
||||||
|
/* Only caused by corrupt data stream? */
|
||||||
|
if (s->nblock_used > s->save_nblock+1)
|
||||||
|
return True;
|
||||||
|
|
||||||
s->state_out_len = 1;
|
s->state_out_len = 1;
|
||||||
s->state_out_ch = s->k0;
|
s->state_out_ch = s->k0;
|
||||||
|
@ -648,6 +613,7 @@ void unRLE_obuf_to_output_FAST ( DState* s )
|
||||||
UInt32 c_tPos = s->tPos;
|
UInt32 c_tPos = s->tPos;
|
||||||
char* cs_next_out = s->strm->next_out;
|
char* cs_next_out = s->strm->next_out;
|
||||||
unsigned int cs_avail_out = s->strm->avail_out;
|
unsigned int cs_avail_out = s->strm->avail_out;
|
||||||
|
Int32 ro_blockSize100k = s->blockSize100k;
|
||||||
/* end restore */
|
/* end restore */
|
||||||
|
|
||||||
UInt32 avail_out_INIT = cs_avail_out;
|
UInt32 avail_out_INIT = cs_avail_out;
|
||||||
|
@ -678,6 +644,10 @@ void unRLE_obuf_to_output_FAST ( DState* s )
|
||||||
cs_avail_out--;
|
cs_avail_out--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Only caused by corrupt data stream? */
|
||||||
|
if (c_nblock_used > s_save_nblockPP)
|
||||||
|
return True;
|
||||||
|
|
||||||
/* can a new run be started? */
|
/* can a new run be started? */
|
||||||
if (c_nblock_used == s_save_nblockPP) {
|
if (c_nblock_used == s_save_nblockPP) {
|
||||||
c_state_out_len = 0; goto return_notr;
|
c_state_out_len = 0; goto return_notr;
|
||||||
|
@ -723,6 +693,7 @@ void unRLE_obuf_to_output_FAST ( DState* s )
|
||||||
s->strm->avail_out = cs_avail_out;
|
s->strm->avail_out = cs_avail_out;
|
||||||
/* end save */
|
/* end save */
|
||||||
}
|
}
|
||||||
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -743,8 +714,11 @@ __inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab )
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
|
/* Return True iff data corruption is discovered.
|
||||||
|
Returns False if there is no problem.
|
||||||
|
*/
|
||||||
static
|
static
|
||||||
void unRLE_obuf_to_output_SMALL ( DState* s )
|
Bool unRLE_obuf_to_output_SMALL ( DState* s )
|
||||||
{
|
{
|
||||||
UChar k1;
|
UChar k1;
|
||||||
|
|
||||||
|
@ -753,7 +727,7 @@ void unRLE_obuf_to_output_SMALL ( DState* s )
|
||||||
while (True) {
|
while (True) {
|
||||||
/* try to finish existing run */
|
/* try to finish existing run */
|
||||||
while (True) {
|
while (True) {
|
||||||
if (s->strm->avail_out == 0) return;
|
if (s->strm->avail_out == 0) return False;
|
||||||
if (s->state_out_len == 0) break;
|
if (s->state_out_len == 0) break;
|
||||||
*( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
|
*( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
|
||||||
BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
|
BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
|
||||||
|
@ -765,8 +739,11 @@ void unRLE_obuf_to_output_SMALL ( DState* s )
|
||||||
}
|
}
|
||||||
|
|
||||||
/* can a new run be started? */
|
/* can a new run be started? */
|
||||||
if (s->nblock_used == s->save_nblock+1) return;
|
if (s->nblock_used == s->save_nblock+1) return False;
|
||||||
|
|
||||||
|
/* Only caused by corrupt data stream? */
|
||||||
|
if (s->nblock_used > s->save_nblock+1)
|
||||||
|
return True;
|
||||||
|
|
||||||
s->state_out_len = 1;
|
s->state_out_len = 1;
|
||||||
s->state_out_ch = s->k0;
|
s->state_out_ch = s->k0;
|
||||||
|
@ -799,7 +776,7 @@ void unRLE_obuf_to_output_SMALL ( DState* s )
|
||||||
while (True) {
|
while (True) {
|
||||||
/* try to finish existing run */
|
/* try to finish existing run */
|
||||||
while (True) {
|
while (True) {
|
||||||
if (s->strm->avail_out == 0) return;
|
if (s->strm->avail_out == 0) return False;
|
||||||
if (s->state_out_len == 0) break;
|
if (s->state_out_len == 0) break;
|
||||||
*( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
|
*( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
|
||||||
BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
|
BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
|
||||||
|
@ -811,7 +788,11 @@ void unRLE_obuf_to_output_SMALL ( DState* s )
|
||||||
}
|
}
|
||||||
|
|
||||||
/* can a new run be started? */
|
/* can a new run be started? */
|
||||||
if (s->nblock_used == s->save_nblock+1) return;
|
if (s->nblock_used == s->save_nblock+1) return False;
|
||||||
|
|
||||||
|
/* Only caused by corrupt data stream? */
|
||||||
|
if (s->nblock_used > s->save_nblock+1)
|
||||||
|
return True;
|
||||||
|
|
||||||
s->state_out_len = 1;
|
s->state_out_len = 1;
|
||||||
s->state_out_ch = s->k0;
|
s->state_out_ch = s->k0;
|
||||||
|
@ -841,6 +822,7 @@ void unRLE_obuf_to_output_SMALL ( DState* s )
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
|
int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
|
||||||
{
|
{
|
||||||
|
Bool corrupt;
|
||||||
DState* s;
|
DState* s;
|
||||||
if (strm == NULL) return BZ_PARAM_ERROR;
|
if (strm == NULL) return BZ_PARAM_ERROR;
|
||||||
s = strm->state;
|
s = strm->state;
|
||||||
|
@ -848,16 +830,16 @@ int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
|
||||||
if (s->strm != strm) return BZ_PARAM_ERROR;
|
if (s->strm != strm) return BZ_PARAM_ERROR;
|
||||||
|
|
||||||
while (True) {
|
while (True) {
|
||||||
if (s->state == BZ_X_IDLE)
|
if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR;
|
||||||
return BZ_SEQUENCE_ERROR;
|
|
||||||
if (s->state == BZ_X_OUTPUT) {
|
if (s->state == BZ_X_OUTPUT) {
|
||||||
if (s->smallDecompress)
|
if (s->smallDecompress)
|
||||||
unRLE_obuf_to_output_SMALL ( s ); else
|
corrupt = unRLE_obuf_to_output_SMALL ( s ); else
|
||||||
unRLE_obuf_to_output_FAST ( s );
|
corrupt = unRLE_obuf_to_output_FAST ( s );
|
||||||
|
if (corrupt) return BZ_DATA_ERROR;
|
||||||
if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) {
|
if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) {
|
||||||
BZ_FINALISE_CRC ( s->calculatedBlockCRC );
|
BZ_FINALISE_CRC ( s->calculatedBlockCRC );
|
||||||
if (s->verbosity >= 3)
|
if (s->verbosity >= 3)
|
||||||
VPrintf2 ( " {0x%x, 0x%x}", s->storedBlockCRC,
|
VPrintf2 ( " {0x%08x, 0x%08x}", s->storedBlockCRC,
|
||||||
s->calculatedBlockCRC );
|
s->calculatedBlockCRC );
|
||||||
if (s->verbosity >= 2) VPrintf0 ( "]" );
|
if (s->verbosity >= 2) VPrintf0 ( "]" );
|
||||||
|
|
||||||
|
@ -877,15 +859,14 @@ int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
|
||||||
Int32 r = BZ2_decompress ( s );
|
Int32 r = BZ2_decompress ( s );
|
||||||
if (r == BZ_STREAM_END) {
|
if (r == BZ_STREAM_END) {
|
||||||
if (s->verbosity >= 3)
|
if (s->verbosity >= 3)
|
||||||
VPrintf2 ( "\n combined CRCs: stored = 0x%x, computed = 0x%x",
|
VPrintf2 ( "\n combined CRCs: stored = 0x%08x, computed = 0x%08x",
|
||||||
s->storedCombinedCRC, s->calculatedCombinedCRC );
|
s->storedCombinedCRC, s->calculatedCombinedCRC );
|
||||||
// [ALZ]
|
// [ALZ]
|
||||||
// if (s->calculatedCombinedCRC != s->storedCombinedCRC)
|
// if (s->calculatedCombinedCRC != s->storedCombinedCRC)
|
||||||
// return BZ_DATA_ERROR;
|
// return BZ_DATA_ERROR;
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
if (s->state != BZ_X_OUTPUT)
|
if (s->state != BZ_X_OUTPUT) return r;
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1387,8 +1368,7 @@ int BZ_API(BZ2_bzBuffToBuffDecompress)
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
/*--
|
/*--
|
||||||
Code contributed by Yoshioka Tsuneo
|
Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
|
||||||
(QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp),
|
|
||||||
to support better zlib compatibility.
|
to support better zlib compatibility.
|
||||||
This code is not _officially_ part of libbzip2 (yet);
|
This code is not _officially_ part of libbzip2 (yet);
|
||||||
I haven't tested it, documented it, or considered the
|
I haven't tested it, documented it, or considered the
|
||||||
|
@ -1399,7 +1379,7 @@ int BZ_API(BZ2_bzBuffToBuffDecompress)
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
/*--
|
/*--
|
||||||
return version like "0.9.0c".
|
return version like "0.9.5d, 4-Sept-1999".
|
||||||
--*/
|
--*/
|
||||||
const char * BZ_API(BZ2_bzlibVersion)(void)
|
const char * BZ_API(BZ2_bzlibVersion)(void)
|
||||||
{
|
{
|
||||||
|
@ -1557,9 +1537,10 @@ int BZ_API(BZ2_bzflush) (BZFILE *b)
|
||||||
void BZ_API(BZ2_bzclose) (BZFILE* b)
|
void BZ_API(BZ2_bzclose) (BZFILE* b)
|
||||||
{
|
{
|
||||||
int bzerr;
|
int bzerr;
|
||||||
FILE *fp = ((bzFile *)b)->handle;
|
FILE *fp;
|
||||||
|
|
||||||
if (b==NULL) {return;}
|
if (b==NULL) {return;}
|
||||||
|
fp = ((bzFile *)b)->handle;
|
||||||
if(((bzFile*)b)->writing){
|
if(((bzFile*)b)->writing){
|
||||||
BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL);
|
BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL);
|
||||||
if(bzerr != BZ_OK){
|
if(bzerr != BZ_OK){
|
||||||
|
@ -1578,7 +1559,7 @@ void BZ_API(BZ2_bzclose) (BZFILE* b)
|
||||||
/*--
|
/*--
|
||||||
return last error code
|
return last error code
|
||||||
--*/
|
--*/
|
||||||
static char *bzerrorstrings[] = {
|
static const char *bzerrorstrings[] = {
|
||||||
"OK"
|
"OK"
|
||||||
,"SEQUENCE_ERROR"
|
,"SEQUENCE_ERROR"
|
||||||
,"PARAM_ERROR"
|
,"PARAM_ERROR"
|
||||||
|
|
|
@ -4,66 +4,19 @@
|
||||||
/*--- blocksort.c ---*/
|
/*--- blocksort.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
2. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product
|
|
||||||
documentation would be appreciated but is not required.
|
|
||||||
|
|
||||||
3. Altered source versions must be plainly marked as such, and must
|
|
||||||
not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
4. The name of the author may not be used to endorse or promote
|
|
||||||
products derived from this software without specific prior written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
||||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
||||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
Julian Seward, Cambridge, UK.
|
|
||||||
jseward@acm.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
|
|
||||||
To get some idea how the block sorting algorithms in this file
|
|
||||||
work, read my paper
|
|
||||||
On the Performance of BWT Sorting Algorithms
|
|
||||||
in Proceedings of the IEEE Data Compression Conference 2000,
|
|
||||||
Snowbird, Utah, USA, 27-30 March 2000. The main sort in this
|
|
||||||
file implements the algorithm called cache in the paper.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
||||||
|
@ -155,7 +108,7 @@ void fallbackQSort3 ( UInt32* fmap,
|
||||||
|
|
||||||
while (sp > 0) {
|
while (sp > 0) {
|
||||||
|
|
||||||
AssertH ( sp < FALLBACK_QSORT_STACK_SIZE, 1004 );
|
AssertH ( sp < FALLBACK_QSORT_STACK_SIZE - 1, 1004 );
|
||||||
|
|
||||||
fpop ( lo, hi );
|
fpop ( lo, hi );
|
||||||
if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {
|
if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {
|
||||||
|
@ -690,7 +643,7 @@ void mainQSort3 ( UInt32* ptr,
|
||||||
|
|
||||||
while (sp > 0) {
|
while (sp > 0) {
|
||||||
|
|
||||||
AssertH ( sp < MAIN_QSORT_STACK_SIZE, 1001 );
|
AssertH ( sp < MAIN_QSORT_STACK_SIZE - 2, 1001 );
|
||||||
|
|
||||||
mpop ( lo, hi, d );
|
mpop ( lo, hi, d );
|
||||||
if (hi - lo < MAIN_QSORT_SMALL_THRESH ||
|
if (hi - lo < MAIN_QSORT_SMALL_THRESH ||
|
||||||
|
|
|
@ -4,59 +4,19 @@
|
||||||
/*--- bzlib.h ---*/
|
/*--- bzlib.h ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
2. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product
|
|
||||||
documentation would be appreciated but is not required.
|
|
||||||
|
|
||||||
3. Altered source versions must be plainly marked as such, and must
|
|
||||||
not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
4. The name of the author may not be used to endorse or promote
|
|
||||||
products derived from this software without specific prior written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
||||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
||||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
Julian Seward, Cambridge, UK.
|
|
||||||
jseward@acm.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _BZLIB_H
|
#ifndef _BZLIB_H
|
||||||
|
@ -110,8 +70,10 @@ typedef
|
||||||
#define BZ_EXPORT
|
#define BZ_EXPORT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef BZ_NO_STDIO
|
||||||
/* Need a definitition for FILE */
|
/* Need a definitition for FILE */
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
|
@ -260,8 +222,7 @@ BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) (
|
||||||
|
|
||||||
|
|
||||||
/*--
|
/*--
|
||||||
Code contributed by Yoshioka Tsuneo
|
Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
|
||||||
(QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp),
|
|
||||||
to support better zlib compatibility.
|
to support better zlib compatibility.
|
||||||
This code is not _officially_ part of libbzip2 (yet);
|
This code is not _officially_ part of libbzip2 (yet);
|
||||||
I haven't tested it, documented it, or considered the
|
I haven't tested it, documented it, or considered the
|
||||||
|
|
|
@ -4,59 +4,19 @@
|
||||||
/*--- bzlib_private.h ---*/
|
/*--- bzlib_private.h ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
2. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product
|
|
||||||
documentation would be appreciated but is not required.
|
|
||||||
|
|
||||||
3. Altered source versions must be plainly marked as such, and must
|
|
||||||
not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
4. The name of the author may not be used to endorse or promote
|
|
||||||
products derived from this software without specific prior written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
||||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
||||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
Julian Seward, Cambridge, UK.
|
|
||||||
jseward@acm.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _BZLIB_PRIVATE_H
|
#ifndef _BZLIB_PRIVATE_H
|
||||||
|
@ -76,7 +36,7 @@
|
||||||
|
|
||||||
/*-- General stuff. --*/
|
/*-- General stuff. --*/
|
||||||
|
|
||||||
#define BZ_VERSION "1.0.2, 30-Dec-2001"
|
#define BZ_VERSION "1.0.5, 10-Dec-2007"
|
||||||
|
|
||||||
typedef char Char;
|
typedef char Char;
|
||||||
typedef unsigned char Bool;
|
typedef unsigned char Bool;
|
||||||
|
@ -94,9 +54,11 @@ typedef unsigned short UInt16;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef BZ_NO_STDIO
|
#ifndef BZ_NO_STDIO
|
||||||
|
|
||||||
extern void BZ2_bz__AssertH__fail ( int errcode );
|
extern void BZ2_bz__AssertH__fail ( int errcode );
|
||||||
#define AssertH(cond,errcode) \
|
#define AssertH(cond,errcode) \
|
||||||
{ if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
|
{ if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
|
||||||
|
|
||||||
#if BZ_DEBUG
|
#if BZ_DEBUG
|
||||||
#define AssertD(cond,msg) \
|
#define AssertD(cond,msg) \
|
||||||
{ if (!(cond)) { \
|
{ if (!(cond)) { \
|
||||||
|
@ -107,6 +69,7 @@ extern void BZ2_bz__AssertH__fail ( int errcode );
|
||||||
#else
|
#else
|
||||||
#define AssertD(cond,msg) /* */
|
#define AssertD(cond,msg) /* */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define VPrintf0(zf) \
|
#define VPrintf0(zf) \
|
||||||
fprintf(stderr,zf)
|
fprintf(stderr,zf)
|
||||||
#define VPrintf1(zf,za1) \
|
#define VPrintf1(zf,za1) \
|
||||||
|
@ -119,17 +82,20 @@ extern void BZ2_bz__AssertH__fail ( int errcode );
|
||||||
fprintf(stderr,zf,za1,za2,za3,za4)
|
fprintf(stderr,zf,za1,za2,za3,za4)
|
||||||
#define VPrintf5(zf,za1,za2,za3,za4,za5) \
|
#define VPrintf5(zf,za1,za2,za3,za4,za5) \
|
||||||
fprintf(stderr,zf,za1,za2,za3,za4,za5)
|
fprintf(stderr,zf,za1,za2,za3,za4,za5)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
extern void bz_internal_error ( int errcode );
|
extern void bz_internal_error ( int errcode );
|
||||||
#define AssertH(cond,errcode) \
|
#define AssertH(cond,errcode) \
|
||||||
{ if (!(cond)) bz_internal_error ( errcode ); }
|
{ if (!(cond)) bz_internal_error ( errcode ); }
|
||||||
#define AssertD(cond,msg) /* */
|
#define AssertD(cond,msg) do { } while (0)
|
||||||
#define VPrintf0(zf) /* */
|
#define VPrintf0(zf) do { } while (0)
|
||||||
#define VPrintf1(zf,za1) /* */
|
#define VPrintf1(zf,za1) do { } while (0)
|
||||||
#define VPrintf2(zf,za1,za2) /* */
|
#define VPrintf2(zf,za1,za2) do { } while (0)
|
||||||
#define VPrintf3(zf,za1,za2,za3) /* */
|
#define VPrintf3(zf,za1,za2,za3) do { } while (0)
|
||||||
#define VPrintf4(zf,za1,za2,za3,za4) /* */
|
#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0)
|
||||||
#define VPrintf5(zf,za1,za2,za3,za4,za5) /* */
|
#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -476,11 +442,15 @@ typedef
|
||||||
/*-- Macros for decompression. --*/
|
/*-- Macros for decompression. --*/
|
||||||
|
|
||||||
#define BZ_GET_FAST(cccc) \
|
#define BZ_GET_FAST(cccc) \
|
||||||
|
/* c_tPos is unsigned, hence test < 0 is pointless. */ \
|
||||||
|
if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
|
||||||
s->tPos = s->tt[s->tPos]; \
|
s->tPos = s->tt[s->tPos]; \
|
||||||
cccc = (UChar)(s->tPos & 0xff); \
|
cccc = (UChar)(s->tPos & 0xff); \
|
||||||
s->tPos >>= 8;
|
s->tPos >>= 8;
|
||||||
|
|
||||||
#define BZ_GET_FAST_C(cccc) \
|
#define BZ_GET_FAST_C(cccc) \
|
||||||
|
/* c_tPos is unsigned, hence test < 0 is pointless. */ \
|
||||||
|
if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \
|
||||||
c_tPos = c_tt[c_tPos]; \
|
c_tPos = c_tt[c_tPos]; \
|
||||||
cccc = (UChar)(c_tPos & 0xff); \
|
cccc = (UChar)(c_tPos & 0xff); \
|
||||||
c_tPos >>= 8;
|
c_tPos >>= 8;
|
||||||
|
@ -503,6 +473,8 @@ typedef
|
||||||
(((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
|
(((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
|
||||||
|
|
||||||
#define BZ_GET_SMALL(cccc) \
|
#define BZ_GET_SMALL(cccc) \
|
||||||
|
/* c_tPos is unsigned, hence test < 0 is pointless. */ \
|
||||||
|
if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
|
||||||
cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \
|
cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \
|
||||||
s->tPos = GET_LL(s->tPos);
|
s->tPos = GET_LL(s->tPos);
|
||||||
|
|
||||||
|
|
|
@ -4,71 +4,27 @@
|
||||||
/*--- compress.c ---*/
|
/*--- compress.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
|
|
||||||
2. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product
|
|
||||||
documentation would be appreciated but is not required.
|
|
||||||
|
|
||||||
3. Altered source versions must be plainly marked as such, and must
|
/* CHANGES
|
||||||
not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
4. The name of the author may not be used to endorse or promote
|
|
||||||
products derived from this software without specific prior written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
||||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
||||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
Julian Seward, Cambridge, UK.
|
|
||||||
jseward@acm.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
/*--
|
|
||||||
CHANGES
|
|
||||||
~~~~~~~
|
|
||||||
0.9.0 -- original version.
|
0.9.0 -- original version.
|
||||||
|
|
||||||
0.9.0a/b -- no changes in this file.
|
0.9.0a/b -- no changes in this file.
|
||||||
|
0.9.0c -- changed setting of nGroups in sendMTFValues()
|
||||||
0.9.0c
|
so as to do a bit better on small files
|
||||||
* changed setting of nGroups in sendMTFValues() so as to
|
*/
|
||||||
do a bit better on small files
|
|
||||||
--*/
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
||||||
|
|
||||||
|
@ -488,9 +444,11 @@ void sendMTFValues ( EState* s )
|
||||||
/*--
|
/*--
|
||||||
Recompute the tables based on the accumulated frequencies.
|
Recompute the tables based on the accumulated frequencies.
|
||||||
--*/
|
--*/
|
||||||
|
/* maxLen was changed from 20 to 17 in bzip2-1.0.3. See
|
||||||
|
comment in huffman.c for details. */
|
||||||
for (t = 0; t < nGroups; t++)
|
for (t = 0; t < nGroups; t++)
|
||||||
BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]),
|
BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]),
|
||||||
alphaSize, 20 );
|
alphaSize, 17 /*20*/ );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -527,7 +485,7 @@ void sendMTFValues ( EState* s )
|
||||||
if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
|
if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
|
||||||
if (s->len[t][i] < minLen) minLen = s->len[t][i];
|
if (s->len[t][i] < minLen) minLen = s->len[t][i];
|
||||||
}
|
}
|
||||||
AssertH ( !(maxLen > 20), 3004 );
|
AssertH ( !(maxLen > 17 /*20*/ ), 3004 );
|
||||||
AssertH ( !(minLen < 1), 3005 );
|
AssertH ( !(minLen < 1), 3005 );
|
||||||
BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]),
|
BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]),
|
||||||
minLen, maxLen, alphaSize );
|
minLen, maxLen, alphaSize );
|
||||||
|
@ -651,8 +609,8 @@ void BZ2_compressBlock ( EState* s, Bool is_last_block )
|
||||||
if (s->blockNo > 1) s->numZ = 0;
|
if (s->blockNo > 1) s->numZ = 0;
|
||||||
|
|
||||||
if (s->verbosity >= 2)
|
if (s->verbosity >= 2)
|
||||||
VPrintf4( " block %d: crc = 0x%8x, "
|
VPrintf4( " block %d: crc = 0x%08x, "
|
||||||
"combined CRC = 0x%8x, size = %d\n",
|
"combined CRC = 0x%08x, size = %d\n",
|
||||||
s->blockNo, s->blockCRC, s->combinedCRC, s->nblock );
|
s->blockNo, s->blockCRC, s->combinedCRC, s->nblock );
|
||||||
|
|
||||||
BZ2_blockSort ( s );
|
BZ2_blockSort ( s );
|
||||||
|
@ -703,7 +661,7 @@ void BZ2_compressBlock ( EState* s, Bool is_last_block )
|
||||||
bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 );
|
bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 );
|
||||||
bsPutUInt32 ( s, s->combinedCRC );
|
bsPutUInt32 ( s, s->combinedCRC );
|
||||||
if (s->verbosity >= 2)
|
if (s->verbosity >= 2)
|
||||||
VPrintf1( " final combined CRC = 0x%x\n ", s->combinedCRC );
|
VPrintf1( " final combined CRC = 0x%08x\n ", s->combinedCRC );
|
||||||
bsFinishWrite ( s );
|
bsFinishWrite ( s );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,59 +4,19 @@
|
||||||
/*--- crctable.c ---*/
|
/*--- crctable.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
2. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product
|
|
||||||
documentation would be appreciated but is not required.
|
|
||||||
|
|
||||||
3. Altered source versions must be plainly marked as such, and must
|
|
||||||
not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
4. The name of the author may not be used to endorse or promote
|
|
||||||
products derived from this software without specific prior written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
||||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
||||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
Julian Seward, Cambridge, UK.
|
|
||||||
jseward@acm.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
||||||
|
|
|
@ -4,59 +4,19 @@
|
||||||
/*--- huffman.c ---*/
|
/*--- huffman.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
2. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product
|
|
||||||
documentation would be appreciated but is not required.
|
|
||||||
|
|
||||||
3. Altered source versions must be plainly marked as such, and must
|
|
||||||
not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
4. The name of the author may not be used to endorse or promote
|
|
||||||
products derived from this software without specific prior written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
||||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
||||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
Julian Seward, Cambridge, UK.
|
|
||||||
jseward@acm.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
||||||
|
@ -162,7 +122,24 @@ void BZ2_hbMakeCodeLengths ( UChar *len,
|
||||||
|
|
||||||
if (! tooLong) break;
|
if (! tooLong) break;
|
||||||
|
|
||||||
for (i = 1; i < alphaSize; i++) {
|
/* 17 Oct 04: keep-going condition for the following loop used
|
||||||
|
to be 'i < alphaSize', which missed the last element,
|
||||||
|
theoretically leading to the possibility of the compressor
|
||||||
|
looping. However, this count-scaling step is only needed if
|
||||||
|
one of the generated Huffman code words is longer than
|
||||||
|
maxLen, which up to and including version 1.0.2 was 20 bits,
|
||||||
|
which is extremely unlikely. In version 1.0.3 maxLen was
|
||||||
|
changed to 17 bits, which has minimal effect on compression
|
||||||
|
ratio, but does mean this scaling step is used from time to
|
||||||
|
time, enough to verify that it works.
|
||||||
|
|
||||||
|
This means that bzip2-1.0.3 and later will only produce
|
||||||
|
Huffman codes with a maximum length of 17 bits. However, in
|
||||||
|
order to preserve backwards compatibility with bitstreams
|
||||||
|
produced by versions pre-1.0.3, the decompressor must still
|
||||||
|
handle lengths of up to 20. */
|
||||||
|
|
||||||
|
for (i = 1; i <= alphaSize; i++) {
|
||||||
j = weight[i] >> 8;
|
j = weight[i] >> 8;
|
||||||
j = 1 + (j / 2);
|
j = 1 + (j / 2);
|
||||||
weight[i] = j << 8;
|
weight[i] = j << 8;
|
||||||
|
|
|
@ -4,59 +4,19 @@
|
||||||
/*--- randtable.c ---*/
|
/*--- randtable.c ---*/
|
||||||
/*-------------------------------------------------------------*/
|
/*-------------------------------------------------------------*/
|
||||||
|
|
||||||
/*--
|
/* ------------------------------------------------------------------
|
||||||
This file is a part of bzip2 and/or libbzip2, a program and
|
This file is part of bzip2/libbzip2, a program and library for
|
||||||
library for lossless, block-sorting data compression.
|
lossless, block-sorting data compression.
|
||||||
|
|
||||||
Copyright (C) 1996-2002 Julian R Seward. All rights reserved.
|
bzip2/libbzip2 version 1.0.5 of 10 December 2007
|
||||||
|
Copyright (C) 1996-2007 Julian Seward <jseward@bzip.org>
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Please read the WARNING, DISCLAIMER and PATENTS sections in the
|
||||||
modification, are permitted provided that the following conditions
|
README file.
|
||||||
are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright
|
This program is released under the terms of the license contained
|
||||||
notice, this list of conditions and the following disclaimer.
|
in the file LICENSE.
|
||||||
|
------------------------------------------------------------------ */
|
||||||
2. The origin of this software must not be misrepresented; you must
|
|
||||||
not claim that you wrote the original software. If you use this
|
|
||||||
software in a product, an acknowledgment in the product
|
|
||||||
documentation would be appreciated but is not required.
|
|
||||||
|
|
||||||
3. Altered source versions must be plainly marked as such, and must
|
|
||||||
not be misrepresented as being the original software.
|
|
||||||
|
|
||||||
4. The name of the author may not be used to endorse or promote
|
|
||||||
products derived from this software without specific prior written
|
|
||||||
permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
|
||||||
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
|
||||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
||||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
Julian Seward, Cambridge, UK.
|
|
||||||
jseward@acm.org
|
|
||||||
bzip2/libbzip2 version 1.0 of 21 March 2000
|
|
||||||
|
|
||||||
This program is based on (at least) the work of:
|
|
||||||
Mike Burrows
|
|
||||||
David Wheeler
|
|
||||||
Peter Fenwick
|
|
||||||
Alistair Moffat
|
|
||||||
Radford Neal
|
|
||||||
Ian H. Witten
|
|
||||||
Robert Sedgewick
|
|
||||||
Jon L. Bentley
|
|
||||||
|
|
||||||
For more information on these sources, see the manual.
|
|
||||||
--*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "bzlib_private.h"
|
#include "bzlib_private.h"
|
||||||
|
|
4
main.cpp
4
main.cpp
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
# pragma warning( disable : 4786 ) // stl warning ¾ø¾Ö±â
|
# pragma warning( disable : 4786 ) // stl warning ¾ø¾Ö±â
|
||||||
|
# pragma warning( disable : 4996 ) // crt secure warning
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@ -70,7 +71,8 @@ void Copyright()
|
||||||
// printf("unalz v0.61 (2007/02/10) \n");
|
// printf("unalz v0.61 (2007/02/10) \n");
|
||||||
// printf("unalz v0.62 (2008/04/04) \n");
|
// printf("unalz v0.62 (2008/04/04) \n");
|
||||||
// printf("unalz v0.63 (2009/01/09) \n");
|
// printf("unalz v0.63 (2009/01/09) \n");
|
||||||
printf("unalz v0.64 (2009/01/20) \n");
|
// printf("unalz v0.64 (2009/01/20) \n");
|
||||||
|
printf("unalz v0.65 (2009/04/01) \n");
|
||||||
printf("Copyright(C) 2004-2009 by kippler@gmail.com (http://www.kipple.pe.kr) \n");
|
printf("Copyright(C) 2004-2009 by kippler@gmail.com (http://www.kipple.pe.kr) \n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,8 @@ CFG=unalz - Win32 Debug
|
||||||
|
|
||||||
# Begin Project
|
# Begin Project
|
||||||
# PROP AllowPerConfigDependencies 0
|
# PROP AllowPerConfigDependencies 0
|
||||||
|
# PROP Scc_ProjName ""$/Home/unalz", VXBAAAAA"
|
||||||
|
# PROP Scc_LocalPath "."
|
||||||
CPP=cl.exe
|
CPP=cl.exe
|
||||||
RSC=rc.exe
|
RSC=rc.exe
|
||||||
|
|
||||||
|
|
33
unalz.dsw
Executable file
33
unalz.dsw
Executable file
|
@ -0,0 +1,33 @@
|
||||||
|
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||||
|
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "unalz"=.\unalz.dsp - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
begin source code control
|
||||||
|
"$/Home/unalz", VXBAAAAA
|
||||||
|
.
|
||||||
|
end source code control
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Global:
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<3>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
Loading…
Reference in a new issue