unalz
정보
이 프로그램은 트집의 콘솔 버전입니다. 따라서 별도의 UI 가 제공되지 않으며, 콘솔상에서 명령어로 ALZ 파일의 압축 해제가 가능합니다.
소개
unalz 는 트집과 내부적으로 100% 동일합니다. 다만 트집과 달리 콘솔(흔히 도스창이라 잘못 말하는..)상에서 작동하는 프로그램입니다.
또한, 이번 소스는 WIN32 뿐만 아니라 BSD/LINUX/DARWIN 에서도 컴파일이 가능 합니다.
특징
- .alz 파일 압축 해제
- .alz 파일의 deflate/변형 bzip2/raw 포맷 지원
- 분할 압축 파일 지원 (alz, a00, a01.. )
- WINDOWS 뿐만 아니라 POSIX(BSD/LINUX) 에서도 사용 가능
- 암호걸린 파일의 압축 해제
- 뒷부분이 잘린 파일도 멀쩡한 부분까지 압축 해제 가능
- CRC 체크기능
변경사항
0.20 (2004/10/22)
0.22 (2004/10/27)
- SIG_ERR 관련 컴파일 에러 수정
- make 할 때 타겟 지정 가능(posix, posix-noiconv, posix-utf8)
- big endian system 지원
- utf-8 파일 시스템 지원
- LP64 지원 (불완전-테스트 안됨)
0.23 (2004/10/30)
- 진행상태 출력방식 변경
- ASSERT 처리 변경
- MAC 처리부분 변경
- EUC-KR 추가
0.30 (2004/11/14)
- 암호 걸린 파일 처리 지원 ( by xxfree86 )
0.31 (2004/11/27)
- cygwin에서 컴파일 되도록 수정
- 암호처리 부분에 일부 사용된 GPL 의 CZipArchive 코드를 "ZIP File Format Specification version 4.5" 문서를 참고해서 다시 코딩 & 정리
- 암호걸린 파일과 안걸린 파일 섞였을때 처리
- 파일의 뒷부분이 잘려서 손상된 파일도 멀쩡한 부분까지는 압축을 풀도록 수정
- zlib 업데이트
0.40 (2005/06/18)
- 압축 해제후 CRC 체크기능 추가
- 암호처리 부분 버그 수정
- ALZ 파일이 아닐경우 에러 처리 추가
- UTF-8 파일시스템에서 버퍼 오버 플로우 에러 수정 (by goweol)
- GetFileList() 함수의 버그 수정
0.50 (2005/07/09)
- 빅엔디안에서 CRC 문제 수정
- 맥에서 iconv 관련 컴파일 문제 수정
- -l 옵션으로 파일 목록 표시 기능 추가 (by goweol)
- -d 옵션으로 압축해제 폴더를 지정하도록 수정
- 개별 파일의 압축을 풀 수 있도록 기능 추가
- 압축해제된 파일의 시간을 원래 시간으로 세팅하도록 기능 추가
- make 파일 수정 (linux 에서 -liconv 가 필요없는 시스템을 위해서)
0.51 (2005/07/24)
- -d 로 대상 경로를 "/" 로 시작되는 절대경로로 지정하면 프로그램이 죽던 버그 수정(Pavel Roskin)
- pipemode 추가(-p 옵션) : 메시지없이 파이프로 출력한다(Pavel Roskin)
- 리스트 모드에서 파일 날자/시간을 시스템 로케일 설정에 따라서 표시(Pavel Roskin)
- 커맨드라인에서 -pwd 옵션으로 암호 지정기능 추가
0.52 (2005/07/27)
- main() 에 setlocale() 추가로 locale 함수가 정상작동 되도록 수정(Pavel Roskin)
0.53 (2005/11/21)
- buffer overflow 버그 수정 (by Ulf Harnhammar)
0.55 (2006/03/10)
- "../" traverse 버그 수정(by vuln@secunia)
0.60 (2006/12/31)
- 엔디안 체크를 런타임에 수행
- strcpy/strcat/sprintf 와 같은 버퍼 오버플로우 가능성이 있는 함수 제거 (by liam.joo@gmail)
0.61 (2007/02/10)
0.62 (2008/04/04)
- Debian 컴파일 문제 수정
- 소스 정리 및 iterator 관련 문제 수정
0.63 (2009/01/09)
- apple 컴파일 문제 수정 (by lacovnk)
0.64 (2009/01/20)
- 2GB가 넘는 파일 처리 관련 수정(by bsjeon@hanmail)
- 파일 리스팅 부분 수정
- 소스 정리
0.65 (2009/04/01)
- VS2008 Express 에서 컴파일 관련 이슈 수정(by kaisyu@gmail)
- bzip2 1.0.5 update
테스트된 환경
- WIN32 : VC60, VC71,
DEV-C++, MINGW32, CYGWIN - BSD : 5.3 RC1 / gcc/g++
- LINUX : Fedora core2 / gcc/g++
- DARWIN : gcc
컴파일 방법
Windows
VC60, VC71, DEV-C++, MINGW32, CYGWIN 에서 컴파일 가능합니다. MINGW32/CYGWIN 의 경우는 make posix-noiconv 로 컴파일 하면 되며, 나머지는 각각의 프로그램에 맞는 프로젝트 파일을 열고 컴파일 하면 됩니다.
BSD/LINUX/DARWIN
make 할경우 다음과 같은 설명이 출력됩니다.
$ make
USAGE : make TARGET_SYSTEM
TARGET_SYSTEM is one of
posix : POSIX system (FreeBSD/linux/OSX/sparc)
posix-utf8 : POSIX with utf8 filesystem(e.g. OSX)
linux-utf8 : LINUX with utf8 filesystem(without -liconv option)
posix-noiconv : POSIX without libiconv (Windows(MINGW32,CYGWIN) or EUC-KR file system)
'install' for copy unalz to /usr/local/bin and
'clean' for clean
각각의 옵션에 대한 설명
- posix : 기본적으로 CP949 코드페이지를 지원하며 -utf8 옵션으로 UTF-8 파일 시스템을 지원합니다. libiconv 가 필요하며, 기본 패키지용으로 컴파일 할 때 적당합니다.
- posix-utf8 : 기본으로 UTF-8 파일 시스템을 사용하는 OS에 적합 합니다. DARWIN 의 경우 이 옵션으로 컴파일 하면 됩니다. 역시 컴파일시 libiconv 가 필요합니다.
- linux-utf8 : UTF-8 파일 시스템이면서, 컴파일시 -liconv 옵션이 필요 없는 경우 사용합니다.
- posix-noiconv : 시스템에 libiconv 가 없는 경우 컴파일 하기 위한 옵션입니다. 이때에는 CP949 만을 지원하므로 UTF-8 파일 시스템에서는 한글 파일명이 있을 경우 문제가 발생할 수 있습니다. 파일 시스템이 CP949(혹은 EUC-KR) 일 경우 이 옵션으로 컴파일 하여도 전혀 문제가 없습니다.
- libiconv 는 http://www.gnu.org/software/libiconv/ 에서 다운로드 받을 수 있습니다.
- bsd 의 경우 "make -f makefile.freebsd" 로도 컴파일이 가능합니다. ( -lz, -lbz2 사용 )
사용 방법
아래와 같이 사용합니다. 대상 디렉토리를 지정하지 않으면 현재 디렉토리에 파일의 압축이 풀립니다.
unalz [옵션..] 압축파일.alz [압축풀 파일 목록..]
코드 페이지 옵션
-utf8 : 파일 시스템이 UTF-8 일 경우 사용하는 옵션
-cp949 : 파일 시스템이 CP949 일 경우 사용하는 옵션
-euc-kr : 파일 시스템이 EUC-KR 일 경우 사용하는 옵션
기타 옵션
-d directory : 압축풀 대상 폴더 지정
-l : 파일 목록 출력
-p : 압축해제 결과를 파이프로 지정
-pwd PWD : 압축해제 암호 지정
끝
도움주신분들
minsu.kim at gmail : 멀티 플랫폼용 프로그램 개발에 관한 아이디어 제공
xxfree86 at maczoo : 코드페이지, 바이트 순서에 관한 부분, 경로명 문제 수정, totalcommander plugin 제작, 암호걸린 파일 처리 코드
aqua0125 at maczoo : 코드페이지 처리 부분, LP64
ganadist at mizi : SIG_ERR 관련 에러, makefile, iconv , LP64
yongari at kt-is : LP64, 엔디안문제, makefile.freebsd
pyrasis at gmail : NetBSD 패키징
yooseong at debian : 데비안 패키징
goweol at gmail : UTF-8 파일 시스템에서의 버퍼 오버플로우 문제 수정, -l 옵션 추가
proski at gnu : -d 절대경로지정시버그/-l 날자 로케일 문제/-p 파이프 모드 출력 관련 수정 제안
관련 프로젝트
Mls
CocoAL
unalz totalcommander plugin
kalzip
에러문의나 패치
메일이나 게시판으로 에러 사항이나 패치 내용을 알려주시면 반영할 수도 있습니다.