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

에러문의나 패치

메일이나 게시판으로 에러 사항이나 패치 내용을 알려주시면 반영할 수도 있습니다.