레이블이 Total Commander인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Total Commander인 게시물을 표시합니다. 모든 게시물 표시

2009년 3월 19일 목요일

Total Commander Unalz Plug-in (0.64 applied)

이런 변두리까지 찾아주시는 분들이 계셔서 약간의 책임감(양심의 가책) 같은 걸 느끼고, 앞서 올렸던 소스를 조금 손 봤습니다. ;-)
  • 내부적으로 사용되고 있는 bzip2, zlib의 최신 버전 소스를 가져다 적용했습니다. (bzip2 1.05, zlib 1.23)
  • Unalz 0.64 소스의 수정 사항을 Unalz plug-in 분리 소스에 반영했습니다. (Unalz plug-in이 Unalz의 소스를 가져다 동일한 파일명으로 복사한 후 일부분만 변경해서 사용하는 방식으로 만들어져 있더군요. 이 작업은 시간이 제법 걸렸습니다.)
  • 경로명 encoding 변경할 때 동적할당 되는 heap 대신 stack을 사용하도록 수정했습니다. (약간의 속도 개선)
  • VC++ 2008 Express Edition에서도 빌드가 가능하도록 수정했습니다. (집에는 VC++ 2008 상용버전이 없어요. ㅜㅜ)
    • Unicode String과 MBCS 간 변환 관련 ATL 라이브러리를 Win32 API로 대체했습니다.
    • afxres.h 관련 error 해결에는 BLUE'nLIVE 님의 글을 참고했습니다.

소스와 바이너리가 위와 같이 변경되었지만, 링크 주소는 예전과 동일합니다. -- 2009.03.30

-----

오래 전에 Total Commander의 unalz plugin을 build해서 올렸던 적이 있는데, 이번에 새로 0.64 버전의 unalz 소스를 가져와 다시 build 해보았습니다. Visual C++ 2008을 사용해서 build 하려다 보니 소스 코드 내용 중 약간 변경이 필요한 부분이 있더군요. 그리고, unalz 내부 자료형이 변한 것도 고려 대상이 되었습니다. 아무튼 얼렁뚱땅 손을 좀 봐서 build하고 사용해보니 아직까지는 별 탈 없이 잘 동작하고 있습니다.

혹시라도 사용하실 생각이 있는 분을 위해 링크 올려둡니다. (수정한 소스도 함께...)

Binary: wcxArc_Unalz_v0.64.rar
Source: unalz_wcx_0.1i_unalz_0.64_source.rar

위 링크에서 다운로드가 불가능하면 아래 링크(DropBox)를 이용해보세요.

BinarywcxArc_Unalz_v0.64.rar
Sourceunalz_wcx_0.1i_unalz_0.64_source.rar

그리고, 경우에 따라 아래의 MS C Runtime Library가 필요할 수도 있습니다.

Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)


원 소스의 출처는 다음과 같습니다.

Unalz 소스: http://www.kipple.pe.kr/win/unalz/
Unalz.wcx 소스: http://www.totalcmd.net/plugring/unalz_wcx.html

당연한 언급이지만, 여기서 링크한 binary와 source에 대해 저는 아무런 권리도 가지고 있지 않습니다. 모든 권리는 원 저작자에게 있습니다. 또한, 여기서 제공된 binary 또는 source를 사용하면서 발생할 수 있는 어떠한 물질적 정신적 손해에 대해서도 책임을 지지 않습니다. ;-)


주의:
위에서 잠시 언급한 unalz 내부 자료형 변경과 관련하여 주의할 점이 있습니다.
Unalz가 버전이 올라가면서 2 GB 이상의 압축 파일을 지원하기 위해 INT32 대신 INT64 타입을 사용하게 된 것 같은데, Total Commander plugin interface는 아직 32-bit int 형이기 때문에 여기서 문제가 발생할 소지가 있어보입니다. 우선은 32-bit int 범위 내에서 표현 가능한 범위는 적절히 casting 하고, 그것을 넘어가는 경우는 assert로 막아두었기 때문에 엉뚱하게 동작하는 경우는 피할 수 있겠지만, 2 GB 넘어가는 압축 파일을 풀려고 하면 아무래도 crash가 발생하게 될 것 같습니다. :-(