*nix 에서도 alz 를 해제 가능해졌군요!!

정태영의 이미지

http://usr.gentoo.or.kr/forum/read.php?table=tip&no=3562
http://www.kipple.pe.kr/win/unalz/

라이센스도 bsd 라이센스라고 합니다 ;)
콘솔에서 동작하는 방식이고..

암호가 걸린 파일지원은 안된다고 하구요..
crc체크나 에러처리가 좀 미흡하다고 제작자분이 밝히셨네요..

드디어 ㅠ_ㅠ;; 주룩..

정태영의 이미지

리눅스에선 정상적으로 컴파일되고 실행되지만..
osx에서는 컴파일실패군요 -_ㅜ

Quote:
aqua@Macintosh unalz $ make
g++ -c main.cpp -o main.o
In file included from main.cpp:2:
UnAlz.h:336: error: parse error before `void'
UnAlz.h:342: error: missing ';' before right brace
UnAlz.h: In member function `const std::vector<UNALZ::SLocalFileHeader,
std::allocator<UNALZ::SLocalFileHeader> >& UNALZ::CUnAlz::GetFileList()':
UnAlz.h:308: error: `m_fileList' undeclared (first use this function)
UnAlz.h:308: error: (Each undeclared identifier is reported only once for each
function it appears in.)
UnAlz.h: In member function `
__gnu_cxx::__normal_iterator<UNALZ::SLocalFileHeader*,
std::vector<UNALZ::SLocalFileHeader, std::allocator<UNALZ::SLocalFileHeader>
> > UNALZ::CUnAlz::GetCurFileHeader()':
UnAlz.h:309: error: `m_posCur' undeclared (first use this function)
UnAlz.h: In member function `UNALZ::CUnAlz::ERR UNALZ::CUnAlz::GetLastErr()':
UnAlz.h:332: error: `m_nErr' undeclared (first use this function)
UnAlz.h: At global scope:
UnAlz.h:344: error: parse error before `public'
UnAlz.h:350: error: parse error before `private'
UnAlz.h:357: error: parse error before `private'
UnAlz.h:366: error: 'EXTRACT_TYPE' is used as a type, but is not defined as a
type.
UnAlz.h:374: error: parse error before `private'
UnAlz.h:383: error: parse error before `private'
UnAlz.h:385: error: syntax error before `*' token
UnAlz.h:386: error: `MYBZFILE' was not declared in this scope
UnAlz.h:386: error: `b' was not declared in this scope
UnAlz.h:386: error: parse error before `*' token
UnAlz.h:387: error: type specifier omitted for parameter `MYBZFILE'
UnAlz.h:387: error: parse error before `*' token
UnAlz.h:388: error: type specifier omitted for parameter `MYBZFILE'
UnAlz.h:388: error: parse error before `*' token
UnAlz.h:416: error: parse error before `private'
UnAlz.h:418: error: 'ERR' is used as a type, but is not defined as a type.
UnAlz.h:419: error: syntax error before `::' token
UnAlz.h:424: error: parse error before `}' token
make: *** [main.o] Error 1
aqua@Macintosh unalz $ g++ -v
Reading specs from /usr/libexec/gcc/darwin/ppc/3.3/specs
Thread model: posix
gcc version 3.3 20030304 (Apple Computer, Inc. build 1666)
aqua@Macintosh unalz $

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

feanor의 이미지

엥? 무슨 소리죠? perky씨가 파이썬으로 alzip 푸는 프로그램을 FreeBSD 포트에 포함시킨지 벌써 몇달이 지났는데요...

컴파일도 필요없습니다.

http://www.freshports.org/archivers/alz2zip/

--feanor

feanor의 이미지

흠, unalz은 분할압축을 지원하는군요.

소스 보고 alz2zip으로 포팅해야겠습니다. :-)

--feanor

정태영의 이미지

feanor wrote:
엥? 무슨 소리죠? perky씨가 파이썬으로 alzip 푸는 프로그램을 FreeBSD 포트에 포함시킨지 벌써 몇달이 지났는데요...

컴파일도 필요없습니다.

http://www.freshports.org/archivers/alz2zip/

--feanor

그건 http://www.zap.pe.kr 에 있던 c소스를 python 으로 바꿔놓은 걸로...
alz파일에 있는 파일들 중.. 제일 앞에 있는 파일 하나만을..
추출해낼 수 있을 뿐입니다..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

행복한고니의 이미지

꿀뷰 때문에 그 사이트 다니면서 조만간 누군가는 포팅하겠구나... 했는데, 제작자 분이 직접 하셨군요.

그나저나... BSD에서 된다고 해서 다운받아서 컴파일해봤는데 안되는군요. OTL...

FreeBSD 5.2.1 환경에서 했습니다.

Quote:

g++ -c main.cpp -o main.o
In file included from main.cpp:2:
UnAlz.h:336: error: syntax error before `(' token
UnAlz.h:342: error: missing ';' before right brace
UnAlz.h: In member function `const std::vector<UNALZ::SLocalFileHeader,
std::allocator<UNALZ::SLocalFileHeader> >& UNALZ::CUnAlz::GetFileList()':
UnAlz.h:308: error: `m_fileList' undeclared (first use this function)
UnAlz.h:308: error: (Each undeclared identifier is reported only once for each
function it appears in.)
UnAlz.h: In member function `
__gnu_cxx::__normal_iterator<UNALZ::SLocalFileHeader*,
std::vector<UNALZ::SLocalFileHeader, std::allocator<UNALZ::SLocalFileHeader>
> > UNALZ::CUnAlz::GetCurFileHeader()':
UnAlz.h:309: error: `m_posCur' undeclared (first use this function)
UnAlz.h: In member function `UNALZ::CUnAlz::ERR UNALZ::CUnAlz::GetLastErr()':
UnAlz.h:332: error: `m_nErr' undeclared (first use this function)
UnAlz.h: At global scope:
UnAlz.h:344: error: syntax error before `public'
UnAlz.h:350: error: syntax error before `private'
UnAlz.h:357: error: syntax error before `private'
In file included from main.cpp:2:
UnAlz.h:55:1: unterminated #ifndef
*** Error code 1

__________________________________
나는 세상에서 가장 중요한 사람이다.

ganadist의 이미지

잠시 살펴보니 SIG_ERR 정의 때문에 그렇군요.

이것은 이미 sys/signal.h에 정의되어 있어서 그렇던거 같던데..

makefile도 조금 고쳐서 http://ftp.mizi.com/~ganadist/unalz.diff 에 올려두었습니다.

맥에서 컴파일"만" 잘되네요.. (바이트 오더 이슈같다고들 합니다만.. 태영님이 고쳐주시겠죠 =33 )

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

정태영의 이미지

http://maczoo.com/viewtopic.php?t=35261

어떤 분이 이미 패치를 하셨군요 :D
맥에서도 사용가능할 듯 합니다 꺄아~~

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

정태영의 이미지

utf 환경등을 고려해서..
압축파일 내에서 filename 에 쓰인 charset 등을 변경가능하게 고쳐봤습니다..

os x 에서 작업하기는 했는데.. 중간중간 ifdef로 묶어줘야 할 곳들을
잘 안묶어주고 한 곳이 있는데..

ganadist님이 고쳐주실거라 믿습니다 :D

다만.. 파일이름을 cp949->utf-8로 변경안하면.. os x에서는..
bus error가 나더군요.. bus error를 일으키는 곳에 주석을 달아놨는데..

이것도 ganadist님이 고쳐주실거라 믿습니다 ;)

http://www.kipple.pe.kr/temp/unalz.tgz 를 기반으로 작업했고..
http://mytears.org/unalz.patch 가 ... 입니다 ;)

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

chronon의 이미지

오픈소스의 힘이 느껴지는 쓰레드네요. ;-)

cdpark의 이미지

정태영 wrote:
utf 환경등을 고려해서..
압축파일 내에서 filename 에 쓰인 charset 등을 변경가능하게 고쳐봤습니다..

unzip, tar 등등에도 이 기능은 포팅해 주세요. :)

정태영의 이미지

cdpark wrote:
정태영 wrote:
utf 환경등을 고려해서..
압축파일 내에서 filename 에 쓰인 charset 등을 변경가능하게 고쳐봤습니다..

unzip, tar 등등에도 이 기능은 포팅해 주세요. :)

한 번 직접 해보시는건 어떨까요? :)

사실 그렇게 어려운 작업은 아닐 듯 해서요 흐흐흐

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

zelon의 이미지

이번에 2번째 베타가 공개된 http://haansoftlinux.com/ 에 unalz 가 있네요^^

-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

랜덤여신의 이미지

zelon wrote:
이번에 2번째 베타가 공개된 http://haansoftlinux.com/ 에 unalz 가 있네요^^

와... 벌써 넣다니... 빠르네요... o.o

creib2000의 이미지

근본적으로, 쓸데없는 포맷을 만들어서 생긴 문제(?)군요.
도대체 alz 포맷을 만든 이유를 모르겠다는...

누가 좋은 점 있으면 좀 알려바주시길... ㅡㅡ

hey의 이미지

creib2000 wrote:
근본적으로, 쓸데없는 포맷을 만들어서 생긴 문제(?)군요.
도대체 alz 포맷을 만든 이유를 모르겠다는...

누가 좋은 점 있으면 좀 알려바주시길... ㅡㅡ


독점적인 시장점유율을 이용하여 경쟁자들을 견제하기 위해. 죠?


----------------------------
May the F/OSS be with you..


정태영의 이미지

creib2000 wrote:
근본적으로, 쓸데없는 포맷을 만들어서 생긴 문제(?)군요.
도대체 alz 포맷을 만든 이유를 모르겠다는...

누가 좋은 점 있으면 좀 알려바주시길... ㅡㅡ

원래 zip 포멧은.. 분할압축이 안됩니다..만.. 지펜놀이나.. winzip 등에서 꽁수로 분할압축을 구현해놨는데 그 구현방식이 서로 호환이 안된다고 들었습니다..

그래서 어느쪽을 따를지 고민을 하기보다 alz 란 포멧을 만든걸로 알고 있습니다..

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

버려진의 이미지

정태영 wrote:
creib2000 wrote:
근본적으로, 쓸데없는 포맷을 만들어서 생긴 문제(?)군요.
도대체 alz 포맷을 만든 이유를 모르겠다는...

누가 좋은 점 있으면 좀 알려바주시길... ㅡㅡ

원래 zip 포멧은.. 분할압축이 안됩니다..만.. 지펜놀이나.. winzip 등에서 꽁수로 분할압축을 구현해놨는데 그 구현방식이 서로 호환이 안된다고 들었습니다..

그래서 어느쪽을 따를지 고민을 하기보다 alz 란 포멧을 만든걸로 알고 있습니다..

rar의 분할압축은요? :|

ganadist의 이미지

cdpark wrote:
정태영 wrote:
utf 환경등을 고려해서..
압축파일 내에서 filename 에 쓰인 charset 등을 변경가능하게 고쳐봤습니다..

unzip, tar 등등에도 이 기능은 포팅해 주세요. :)

unzip은 제가 개인적으로 만든 패치가 있습니다.

http://ftp.mizi.com/~ganadist/unzip-locale.diff

unzip을 적용하고 나서 파일롤러로 윈도에서 묶은 zip파일 열은 모습

http://ftp.mizi.com/~ganadist/file-roller.png

젠투 버그질라와 unzip 버그 레포팅 폼에 등록은 해놨는데. 언제 적용될런지는 모르겠네요.

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

only2sea의 이미지

촙5 wrote:
rar의 분할압축은요? :|

rar 풀수는 있어도 압축하는건 아무나 못하죠.
alee의 이미지

ganadist wrote:

unzip은 제가 개인적으로 만든 패치가 있습니다.

http://ftp.mizi.com/~ganadist/unzip-locale.diff

unzip을 적용하고 나서 파일롤러로 윈도에서 묶은 zip파일 열은 모습

http://ftp.mizi.com/~ganadist/file-roller.png

젠투 버그질라와 unzip 버그 레포팅 폼에 등록은 해놨는데. 언제 적용될런지는 모르겠네요.

패치를 좀 살펴 보았는데, LANG 변수의 첫번째 두 글자가 ko이면 무조건 zip 파일의 charset을 무조건 UHC로 간주하도록 되어 있네요. 그런데 제 생각에는 이게 별로 좋은 방법이 아닌 것 같습니다. 가령 일본어 윈도우에서 만든 zip 파일을 LANG=ko_KR.UTF-8 환경에서 푼다거나, 한글 윈도우에서 만든 zip 파일을 LANG=ko··· 외의 로케일에서 푸는 경우 제대로 작동하지 않습니다.

제 생각에는 LANG 환경변수를 이용해서 추측하는 것 보다는 그냥 입력 파일의 charset을 지정해 주는 옵션을 집어넣는 것이 더 나을 것 같습니다. 혹은 먼저ZIPCHARSET 변수를 참조하고, ZIPCHARSET이 지정되어 있지 않을 경우에 한해서 LANG을 이용해 추측하는 것도 괜찮을 것 같습니다.

alee의 이미지

제가 LANG 변수가 ko_KR.UTF-8이 아니라서 제대로 안 되는줄 알았는데,
LANG을 ko_KR.UTF-8로 해도 여전히 파일명이 변환이 안 되고 그대로 풀리네요.
다른 분은 모두 잘 되시나요?

차리서의 이미지

alee wrote:
제가 LANG 변수가 ko_KR.UTF-8이 아니라서 제대로 안 되는줄 알았는데,
LANG을 ko_KR.UTF-8로 해도 여전히 파일명이 변환이 안 되고 그대로 풀리네요.
다른 분은 모두 잘 되시나요?

기술적인 이유는 잘 모르겠지만, 아무튼 저는 아주 잘 동작하고 있습니다. 젠투/Gnome에 ko_KR.UTF-8 환경입니다.

unalz-0.52 버전 소스를 받아서 컴파일했는데, 컴파일할 때 make 무엇을 했는지 지금 기억은 안 나는군요. Makefile을 다시 들여다보니 환경에 따라 컴파일 타겟이 조금씩 다르게 구성되어있군요. 그러고보니, 이중에서 제게 적합한 타겟을 골라내던 기억은 어렴풋이 납니다.

--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!

alee의 이미지

차리서 wrote:
alee wrote:
제가 LANG 변수가 ko_KR.UTF-8이 아니라서 제대로 안 되는줄 알았는데,
LANG을 ko_KR.UTF-8로 해도 여전히 파일명이 변환이 안 되고 그대로 풀리네요.
다른 분은 모두 잘 되시나요?

기술적인 이유는 잘 모르겠지만, 아무튼 저는 아주 잘 동작하고 있습니다. 젠투/Gnome에 ko_KR.UTF-8 환경입니다.

unalz-0.52 버전 소스를 받아서 컴파일했는데, 컴파일할 때 make 무엇을 했는지 지금 기억은 안 나는군요. Makefile을 다시 들여다보니 환경에 따라 컴파일 타겟이 조금씩 다르게 구성되어있군요. 그러고보니, 이중에서 제게 적합한 타겟을 골라내던 기억은 어렴풋이 납니다.

제 경우 apt-get source unzip 으로 소스를 받아서 패치를 적용한 후 debian/rules binary 로 빌드하여 설치했습니다. 남겨주신 글을 보고 생각난게 있어서 debian/rules 파일을 조금 수정하고 다시 빌드하니 잘 되네요. 감사합니다. :)
debian/rules 파일의 9번째 줄에 아래와 같이 -D_USE_ICONV 를 추가해 주었습니다.

DEFINES = -DACORN_FTYPE_NFS -DWILD_STOP_AT_DIR -D_USE_ICONV

그리고 제 경우 LANG을 설정하지 않고 LC_CTYPE만 ko_KR.UTF-8로 설정해 두고 사용합니다. 원래 문자셋에 대한 설정은 LANG 보다 LC_CTYPE이 우선하므로 getLegacyCharset() 함수에서 LC_CTYPE을 먼저 참조하도록 하는 것이 좋을 것 같습니다.

또, gnome 프로그램의 경우 파일명이 UTF-8이 아닌 경우 CHARSET 변수를 참조해서 파일명을 보여줍니다. 따라서 unzip도 따로 ZIPCHARSET 변수를 사용하는 것 보다는 그냥 CHARSET 변수를 참조하도록 해도 될 것 같습니다.

    char *lang = getenv("CHARSET");
    if(lang) return lang;
    if(!lang) lang = getenv("LC_CTYPE");
    if(!lang) lang = getenv("LANG");