maczoo.com 게시판 인덱스 maczoo.com
매킨토시 사용자 커뮤니티
 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   쪽지를 확인하려면 로그인하십시오쪽지를 확인하려면 로그인하십시오   로그인로그인 

[TIP] unalz v0.2 OSX patch

 
글 쓰기   답변 달기    maczoo.com 게시판 인덱스 -> Tips & 사용기
이전 글 :: 다음 글  
글쓴이 메시지
xxfree86
lunatic of mac
lunatic of mac


가입: 2004년 2월 25일
올린 글: 134

올리기Posted: 토 10월 23, 2004 5:58 pm    주제: [TIP] unalz v0.2 OSX patch

1. unalz v0.2
'압축의 죄악' 알집(alz)포맷 압축을 풀어주는 공개프로그램입니다.
윈조즈용으로 '빵집','트집'(=똥집)등 공개프로그램이 있고, '트집'의 제작자께서 소스를 공개해주셨습니다.
라이센스 : BSD
URL : http://www.kipple.pe.kr/win/unalz/

2. 고친것
xcode 1.5에 포함된 gcc(v3.3)로 컴팔이 되지 않는 문제
컴팔되도 제대로 동작하지 않는 문제
디렉토리구분자문제로 빈 디렉토리가 엉뚱한 곳에 생기는 문제
디렉토리,파일에 한글이 들어있을때 뒈지는 문제


3. 준비물
OSX 10.3.x
xcode 1.x
unalz 소스 ( http://www.kipple.pe.kr/win/unalz/unalz.tgz )
패치파일 ( http://xxfree87.hihome.com/unalz.diff.gz )

4. 압축풀기/패치/컴파일
압축풀기
코드:
mario$ tar xvzf unalz.tgz
mario$ gzip -d unalz.diff.gz

패치
코드:

mario$ patch -p0 < unalz.diff
patching file unalz/UnAlz.cpp
patching file unalz/UnAlz.h
patching file unalz/makefile

컴파일
코드:
mario$ cd unalz
mario$ make


5. 기타
알집 5.2로 압축한 alz, 분할alz로 테스트해보았습니다.
바이트오더 뒤집기 매크로들은 http://osxdev.org 와 http://www.kldp.org 의 게시물에서 훔쳐왔습니다.
UTF8패치는 http://bbs.kldp.org/viewtopic.php?t=46209 의 unrar iconv코드를 베꼈습니다.
사용중 파일이 날아가거나 컴푸타가 폭발해도 당연히 책임 안집니다. Smile

혹시 컴팔하기가 귀찮으시면... : http://xxfree87.hihome.com/unalz.gz


.


xxfree86 가 일 10월 24, 2004 7:07 am에 수정함, 총 3 번 수정됨
위로
BB90020
master
master


가입: 2003년 11월 1일
올린 글: 416

올리기Posted: 토 10월 23, 2004 6:07 pm    주제:

감사합니다.. 안그래도 xx같은 alz파일때문에 골치아픈 일이 많았는데 이젠 쉽게 해결할수 있게 되었군요.^^
_________________
http://macinside.co.kr
위로
koder
beginner
beginner


가입: 2004년 10월 24일
올린 글: 5

올리기Posted: 일 10월 24, 2004 7:12 am    주제: 소스수정 확인 부탁드립니다.

소스 공개후 알려진 문제점과 님께서 고쳐주신 부분을 반영하여서
다시 파일을 만들어 보았습니다..


그런데, 제가 맥이 없는 관계로 컴파일을 해볼수가 없네요.
http://www.kipple.pe.kr/temp/unalz.tgz
에 있는 파일을 다운로드 받으셔서 테스트좀 해주셨으면 합니다.


코드:

make darwin


으로 컴파일 가능합니다.

* 파일을 수정하시게 되면 수정된 파일을 홈페이지에 있는 메일주소로 보내주셨으면 합니다. ( 패치파일 말고요.. )
위로
xxfree86
lunatic of mac
lunatic of mac


가입: 2004년 2월 25일
올린 글: 134

올리기Posted: 일 10월 24, 2004 8:23 am    주제: Re: 소스수정 확인 부탁드립니다.

koder 씀:
소스 공개후 알려진 문제점과 님께서 고쳐주신 부분을 반영하여서
다시 파일을 만들어 보았습니다..


그런데, 제가 맥이 없는 관계로 컴파일을 해볼수가 없네요.
http://www.kipple.pe.kr/temp/unalz.tgz
에 있는 파일을 다운로드 받으셔서 테스트좀 해주셨으면 합니다.


코드:

make darwin


으로 컴파일 가능합니다.

* 파일을 수정하시게 되면 수정된 파일을 홈페이지에 있는 메일주소로 보내주셨으면 합니다. ( 패치파일 말고요.. )


훌륭한 프로그램 제작해주셔서 감사합니다.

링크해주신 소스를 컴팔해서 영문파일/디렉토리,한글파일/디렉토리,한+영파일/디렉토리등이 포함된 분할압축파일을 테스트해보았으며 일단은 잘 동작합니다.

파일이름의 캐릭터셋 변환기능은 옵션으로 활용할 수 있도록 일반화하면 좋을것 같습니다.

멋진프로그램 다시한번 감사드리구요. 좋은 휴일 되시기 바랍니다. Smile

실행파일입니다:
http://xxfree87.hihome.com/unalz_02_for_osx_by_original_author.tar.gz
위로
aqua0125
heavy mania
heavy mania


가입: 2003년 8월 16일
올린 글: 90
위치: 서울

올리기Posted: 일 10월 24, 2004 1:43 pm    주제:

파일이름 conversion 은.. 옵션으로 활용할 수 있도록 고쳐봤습니다만..
...

getopt로 .. 옵션 파싱해낸 부분을 좀 -_-;; 테스트성으로 해놔서;;;;;
누군가 고쳐주실거라 믿습니다 Very Happy


http://www.kipple.pe.kr/temp/unalz.tgz 를 기반으로 작업했고..
http://mytears.org/unalz.patch

kldp bbs의 ganadist님이 수정해주신 makefile과..
getopt를 사용하도록 약간의 패치를 했는데..


-f from_codeset
-t to_codeset

식으로 사용하면 되기는 하지만.. 둘 다 명시하지 않을 경우..
아예 conversion 을 하지 않도록 했습니다..

그렇게 할 경우.. 한글 파일을 만나면 unalz가 bus error를 냅니다..


bus error를 유발시키는 fwrite 위에 주석을 달아놓기는 했는데..
어떻게 해결해야 할 지는 모르겠군요 Smile


누군가 고쳐주실거라 믿습니다..




http://bbs.kldp.org/viewtopic.php?p=202156#202156
kldp bbs에 있는 쓰레드와.. 겹치는거 같아 링크도 겁니다 Wink
_________________
--------------------------------------
http://mytears.org ~(~_~)~
삶은 산보다 무겁다!!
위로
koder
beginner
beginner


가입: 2004년 10월 24일
올린 글: 5

올리기Posted: 일 10월 24, 2004 6:12 pm    주제: 테스트 부탁드립니다.

여러분들의 도움으로 이것저것 수정하여서

http://www.kipple.pe.kr/win/unalz/

에 테스트버전을 올려 놓았습니다...

테스트 부탁드리겠습니다.



target 을 darwin 으로 하면 무조건 utf-8 을 쓰도록 하였습니다..

( 기타 다른건 전부 make target 을 추가하도록 하였습니다.. )


님들덕분에 즐거운(?) 주말이 되어 버렸군요. T.T
덕분에 제가 술이고픈 관계로 0.21 정식버전은 beerware 로 바꾸는걸 고려중입니다..
위로
aqua0125
heavy mania
heavy mania


가입: 2003년 8월 16일
올린 글: 90
위치: 서울

올리기Posted: 일 10월 24, 2004 10:25 pm    주제:

koder 님.. kldp.net 등에.. 자리를 틀어 보는건 어떨까요 Smile

unalz의 경우.. 많은 사람들이 필요로 하던 툴이고..
많은 사람들이 호응하고 있는데 말이죠 헤헷;;;
_________________
--------------------------------------
http://mytears.org ~(~_~)~
삶은 산보다 무겁다!!
위로
koder
beginner
beginner


가입: 2004년 10월 24일
올린 글: 5

올리기Posted: 일 10월 24, 2004 11:32 pm    주제:

aqua0125 씀:
koder 님.. kldp.net 등에.. 자리를 틀어 보는건 어떨까요 Smile

unalz의 경우.. 많은 사람들이 필요로 하던 툴이고..
많은 사람들이 호응하고 있는데 말이죠 헤헷;;;


kldp 는 가끔 들르기는 하지만 전 unix 쪽은 쥐약이라서요..
그냥 가끔 구경만 하죠..
위로
aqua0125
heavy mania
heavy mania


가입: 2003년 8월 16일
올린 글: 90
위치: 서울

올리기Posted: 일 10월 24, 2004 11:51 pm    주제:

http://kldp.net 은.. *nix 만을 위한 공간이 아닙니다 Smile

오픈소스 프로젝트를 개설하고.. 함께 개발해나갈 수 있는 공간입니다..
http://kldp.net/softwaremap/trove_list.php?form_cat=216&discrim=230

이걸 보시면 알겠지만.. MS Windows 를 위한
오픈소스 프로젝트들도 상당히 많이 있구요 Wink



cvs, 메일링리스트, 그 프로젝트를 위한 포럼..
등등을 제공하는 곳이죠 Smile
_________________
--------------------------------------
http://mytears.org ~(~_~)~
삶은 산보다 무겁다!!
위로
xxfree86
lunatic of mac
lunatic of mac


가입: 2004년 2월 25일
올린 글: 134

올리기Posted: 월 10월 25, 2004 1:24 am    주제: Re: 테스트 부탁드립니다.

koder 씀:
여러분들의 도움으로 이것저것 수정하여서

http://www.kipple.pe.kr/win/unalz/

에 테스트버전을 올려 놓았습니다...

테스트 부탁드리겠습니다.



target 을 darwin 으로 하면 무조건 utf-8 을 쓰도록 하였습니다..

( 기타 다른건 전부 make target 을 추가하도록 하였습니다.. )


님들덕분에 즐거운(?) 주말이 되어 버렸군요. T.T
덕분에 제가 술이고픈 관계로 0.21 정식버전은 beerware 로 바꾸는걸 고려중입니다..


찜찜한 경고메시지를 제거하려면...
코드:

#   define swapint64(Data) (INT64) (
(((Data)&0x00000000000000FFLL) << 56) |
(((Data)&0x000000000000FF00LL) << 40) |
(((Data)&0x0000000000FF0000LL) << 24) |
(((Data)&0x00000000FF000000LL) << 8)  |
(((Data)&0x000000FF00000000LL) >> 8)  |
(((Data)&0x0000FF0000000000LL) >> 24) |
(((Data)&0x00FF000000000000LL) >> 40) |
(((Data)&0xFF00000000000000LL) >> 56) )


처럼 상수 뒤에 롱롱(LL)을 붙여주면 되는군요.
http://www.osxdev.org/forum/viewtopic.php?t=379&start=0&postdays=0&postorder=asc&highlight=int64

iconv의 'const char **' <-> 'char **'컨버전 경고는
코드:

iconv_result = iconv(cd,(const char**)&inptr, &ileft, &outptr, &oleft);


로 해결했습니다.

그냥 팁정도수준이라 패치맹굴기도 그렇고 해서...
Makefile이 모습을 갖춰 나가는 걸 보니 덩달아 기분좋군요. Smile

BCB6팁.
Borland Cpp Builder 6의 VC++ 프로젝트 컨버전기능으로 컨버전 하고서 생긴 프로젝파일(bpr)에서 SYSDEFINES섹션의 '_MSC_VER=1100;'를 제거하고 컴팔하면 'STL호환성검사'를 통과하고 잘 컴팔 됩니다.
위로
koder
beginner
beginner


가입: 2004년 10월 24일
올린 글: 5

올리기Posted: 월 10월 25, 2004 9:52 am    주제:

그렇군요.. int64 를 어찌해야 하나 하고 있었는데.. LL 이란게 있었군요.

그런데 const char** 문제는 고민을 좀 해야될것 같습니다.

저도 저 에러를 보고 const char** 로 바꾸어 보았는데..

일부 시스템에서는 함수에서 char** 를 받게 되어 있더군요.

char** 를 const char** 를 바꾸면 warning 이지만

반대의 경우는 error 이라서 그냥 char** 로 놔둘까 생각중 입니다.
위로
koder
beginner
beginner


가입: 2004년 10월 24일
올린 글: 5

올리기Posted: 금 10월 29, 2004 12:38 pm    주제:

기존의 makefile 에서 구분하던 방식을 버리고

소스 내에서 os 를 판단하도록 수정하였습니다..

__FreeBSD__ __linux__ _WIN32 와 같은 식으로요..

그런데 매킨토시는 어찌되는지 몰라서 __DARWIN__ 으로 판단하도록
했는데.. 잘 돌아가는지 모르겠네요.
위로
xxfree86
lunatic of mac
lunatic of mac


가입: 2004년 2월 25일
올린 글: 134

올리기Posted: 금 10월 29, 2004 2:36 pm    주제:

koder 씀:
기존의 makefile 에서 구분하던 방식을 버리고

소스 내에서 os 를 판단하도록 수정하였습니다..

__FreeBSD__ __linux__ _WIN32 와 같은 식으로요..

그런데 매킨토시는 어찌되는지 몰라서 __DARWIN__ 으로 판단하도록
했는데.. 잘 돌아가는지 모르겠네요.


코드:

mario-osx:~ mario$ uname -a;gcc -v
Darwin mario-osx.local 7.5.0 Darwin Kernel Version 7.5.0: Thu Aug  5 19:26:16 PDT 2004; root:xnu/xnu-517.7.21.obj~3/RELEASE_PPC  Power Macintosh powerpc
Reading specs from /usr/libexec/gcc/darwin/ppc/3.3/specs
Thread model: posix
gcc version 3.3 20030304 (Apple Computer, Inc. build 1666)


mario-osx:~ mario$ gcc -dM -E - < /dev/null
#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __CHAR_BIT__ 8
#define __WCHAR_MAX__ 2147483647
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __FLT_EVAL_METHOD__ 0
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __GNUC_PATCHLEVEL__ 0
#define __SHRT_MAX__ 32767
#define __LDBL_MAX__ 1.7976931348623157e+308L
#define _ARCH_PPC 1
#define __APPLE_CC__ 1666
#define __LDBL_MAX_EXP__ 1024
#define __SCHAR_MAX__ 127
#define __DBL_DIG__ 15
#define __USER_LABEL_PREFIX__ _
#define __STDC_HOSTED__ 1
#define __FLT_EPSILON__ 1.19209290e-7F
#define __LDBL_MIN__ 2.2250738585072014e-308L
#define __ppc__ 1
#define __strong
#define __APPLE__ 1
#define __DECIMAL_DIG__ 17
#define __DYNAMIC__ 1
#define __GNUC__ 3
#define __DBL_MAX__ 1.7976931348623157e+308
#define __DBL_MAX_EXP__ 1024
#define __LONG_LONG_MAX__ 9223372036854775807LL
#define __GXX_ABI_VERSION 102
#define __FLT_MIN_EXP__ (-125)
#define __DBL_MIN__ 2.2250738585072014e-308
#define __REGISTER_PREFIX__
#define __NO_INLINE__ 1
#define __FLT_MANT_DIG__ 24
#define __VERSION__ "3.3 20030304 (Apple Computer, Inc. build 1666)"
#define __BIG_ENDIAN__ 1
#define __SIZE_TYPE__ long unsigned int
#define __FLT_RADIX__ 2
#define __LDBL_EPSILON__ 2.2204460492503131e-16L
#define __NATURAL_ALIGNMENT__ 1
#define __FLT_MAX_10_EXP__ 38
#define __LONG_MAX__ 2147483647L
#define _BIG_ENDIAN 1
#define __LDBL_MANT_DIG__ 53
#define __WCHAR_TYPE__ int
#define __FLT_DIG__ 6
#define __INT_MAX__ 2147483647
#define __MACH__ 1
#define __FLT_MAX_EXP__ 128
#define __DBL_MANT_DIG__ 53
#define __WINT_TYPE__ unsigned int
#define __LDBL_MIN_EXP__ (-1021)
#define __LDBL_MAX_10_EXP__ 308
#define __DBL_EPSILON__ 2.2204460492503131e-16
#define __FLT_DENORM_MIN__ 1.40129846e-45F
#define __FLT_MAX__ 3.40282347e+38F
#define __FLT_MIN_10_EXP__ (-37)
#define __GNUC_MINOR__ 3
#define __DBL_MAX_10_EXP__ 308
#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
#define __PTRDIFF_TYPE__ int
#define __LDBL_MIN_10_EXP__ (-307)
#define __LDBL_DIG__ 15
#define __POWERPC__ 1



__APPLE__ 정도가 어떨까 싶습니다만...

http://predef.sourceforge.net/

음.. 바이트오더뒤집기 함수가 이미 존재하고 있었군요..퍼헐...
le16toh, le32toh, le64toh 함수의 프로토타입 위치가 endian.h는 아닌것 같고...(어디일까?)

<machine/byte_order.h> 를 include하고
코드:

inline UINT16   unalz_le16toh(UINT16 a){return NXSwapShort(a);}
inline UINT32   unalz_le32toh(UINT32 a){return NXSwapLong(a);}
inline UINT64   unalz_le64toh(UINT64 a){return NXSwapLongLong(a);}


요렇게 조정하니 하니 컴팔/실행은 문제가 없군요. Smile
위로
이전 글 표시:   
이전 글 :: 다음 글  
글 쓰기   답변 달기    maczoo.com 게시판 인덱스 -> Tips & 사용기 시간대: GMT + 9 시간(한국)
페이지 1 중 1

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.4 © 2001, 2003 phpBB Group