diff -uNr -x '*~' unrar.orig/Makefile unrar/Makefile --- unrar.orig/Makefile 1970-01-01 09:00:00.000000000 +0900 +++ unrar/Makefile 2005-09-14 23:39:13.000000000 +0900 @@ -0,0 +1,126 @@ +# +# Makefile for UNIX - unrar +# +# Note: you have to 'make clean' before you can build +# the sfx module +# + +# Linux using GCC +CXX=g++-3.3 +CXXFLAGS=-O -g +LIBS=-liconv +DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DOSXJP +STRIP=strip + +# Linux using GCC +#CXX=g++ +#CXXFLAGS=-O2 +#DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE +#STRIP=strip + +# Linux using LCC +#CXX=lcc +#CXXFLAGS=-O2 +#DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE +#STRIP=strip + +# HP UX using aCC +#CXX=aCC +#CXXFLAGS=-AA +O2 +Onolimit +#DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE +#STRIP=strip + +# IRIX using GCC +#CXX=g++ +#CXXFLAGS=-O2 +#DEFINES=-DBIG_ENDIAN -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_BSD_COMPAT -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 +#STRIP=strip + +# IRIX using MIPSPro (experimental) +#CXX=CC +#CXXFLAGS=-O2 -mips3 -woff 1234,1156,3284 -LANG:std +#DEFINES=-DBIG_ENDIAN -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_BSD_COMPAT -DNATIVE_INT64 -DInt64=int64_t +#STRIP=strip + +# AIX using xlC (IBM VisualAge C++ 5.0) +#CXX=xlC +#CXXFLAGS=-O -qinline -qro -qroconst -qmaxmem=16384 -qcpluscmt +#DEFINES=-D_LARGE_FILES -D_LARGE_FILE_API +#LIBS=-lbsd +#STRIP=strip + +# Solaris using CC (SUN Forte Developer 7 C++) +#CXX=CC +#CXXFLAGS=-xO2 -xbuiltin=%all -xinline=%auto +#DEFINES=-DBIG_ENDIAN -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE +#STRIP=strip + +# Solaris using GCC (optimized for UltraSPARC 1 CPU) +#CXX=g++ +#CXXFLAGS=-O3 -mcpu=v9 -mtune=ultrasparc -m32 +#DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE +#STRIP=/usr/ccs/bin/strip + +# Tru64 5.1B using GCC3 +#CXX=g++ +#CXXFLAGS=-O2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_XOPEN_SOURCE=500 +#STRIP=strip +#LDFLAGS=-rpath /usr/local/gcc/lib + +# Tru64 5.1B using DEC C++ +#CXX=cxx +#CXXFLAGS=-O4 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DNATIVE_INT64 -DInt64=long +#STRIP=strip +#LDFLAGS= + +# QNX 6.x using GCC +#CXX=g++ +#CXXFLAGS=-O2 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fexceptions +#STRIP=strip +#LDFLAGS=-fexceptions + +# Cross-compile +# Linux using arm-linux-g++ +#CXX=arm-linux-g++ +#CXXFLAGS=-O2 +#DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE +#STRIP=arm-linux-strip +#LDFLAGS=-static + +########################## + +COMPILE=$(CXX) $(CXXFLAGS) $(DEFINES) +LINK=$(CXX) + +UNRAR_OBJ=filestr.o recvol.o rs.o scantree.o +LIB_OBJ=filestr.o scantree.o dll.o + +OBJECTS=rar.o strlist.o strfn.o pathfn.o int64.o savepos.o global.o file.o filefn.o filcreat.o \ + archive.o arcread.o unicode.o system.o isnt.o crypt.o crc.o rawread.o encname.o \ + resource.o match.o timefn.o rdwrfn.o consio.o options.o ulinks.o errhnd.o rarvm.o \ + rijndael.o getbits.o sha1.o extinfo.o extract.o volume.o list.o find.o unpack.o cmddata.o + +.cpp.o: + $(COMPILE) -D$(WHAT) -c $< + +all: unrar + +clean: + @rm -f *.o *.bak *~ + +unrar: WHAT=UNRAR +unrar: $(OBJECTS) $(UNRAR_OBJ) + @rm -f unrar + $(LINK) -o unrar $(LDFLAGS) $(OBJECTS) $(UNRAR_OBJ) $(LIBS) + $(STRIP) unrar + +sfx: WHAT=SFX_MODULE +sfx: $(OBJECTS) + @rm -f default.sfx + $(LINK) -o default.sfx $(LDFLAGS) $(OBJECTS) + $(STRIP) default.sfx + +lib: WHAT=RARDLL +lib: $(OBJECTS) $(LIB_OBJ) + @rm -f libunrar.so + $(LINK) -shared -o libunrar.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ) diff -uNr -x '*~' unrar.orig/arcread.cpp unrar/arcread.cpp --- unrar.orig/arcread.cpp 2005-08-04 01:34:30.000000000 +0900 +++ unrar/arcread.cpp 2005-09-14 23:39:04.000000000 +0900 @@ -1,5 +1,32 @@ #include "rar.hpp" +#ifdef OSXJP +#include + +void OSXJP_Convert(int buflen, char *name) +{ + iconv_t cd = (iconv_t)-1; + size_t il = strlen(name), ol = buflen; + char buf[buflen]; + const char *ib = name; + char *ob = buf; + + cd = iconv_open("UTF-8-MAC", "SJIS"); + if (cd < 0) goto passthru; + do { + if ((signed int)iconv(cd, &ib, &il, &ob, &ol) < 0) goto passthru; + } while (il > 0); + if (buf + buflen > ob) *ob = 0; + iconv_close(cd); + strncpy(name, buf, buflen); + return; + + passthru: + if (cd >= 0) iconv_close(cd); + return; +} +#endif + int Archive::SearchBlock(int BlockType) { int Size,Count=0; @@ -256,6 +283,9 @@ Alarm(); #endif } +#ifdef OSXJP + OSXJP_Convert(sizeof(hd->FileName), hd->FileName); +#endif } break; #ifndef SFX_MODULE diff -uNr -x '*~' unrar.orig/loclang.hpp unrar/loclang.hpp --- unrar.orig/loclang.hpp 2005-08-04 01:34:30.000000000 +0900 +++ unrar/loclang.hpp 2005-09-14 22:30:46.000000000 +0900 @@ -6,7 +6,11 @@ #define MCopyright "\nRAR %s Copyright (c) 1993-%d Alexander Roshal %d %s %d" #define MRegTo "\nRegistered to %s\n" #define MShare "\nShareware version Type RAR -? for help\n" +#ifdef OSXJP +#define MUCopyright "\nUNRAR %s freeware Copyright (c) 1993-%d Alexander Roshal\n" "\t\t\t\tOSXJP Patch by NAKAHASHI Ichiro, 2005" +#else #define MUCopyright "\nUNRAR %s freeware Copyright (c) 1993-%d Alexander Roshal\n" +#endif #define MBeta "beta" #define MMonthJan "Jan" #define MMonthFeb "Feb"