Date: Fri, 4 Jul 2008 20:50:38 +1100 From: =?utf-8?b?0JPQvtC70Y/RiNC+0LIg0KHQtdGA0LPQtdC5?= <athathoth@yandex.ru> To: freebsd-ports@freebsd.org Subject: unrar-iconv-3.80.b2,5 patch error Message-ID: <200807042050.38736.athathoth@yandex.ru>
next in thread | raw e-mail | index | archive | help
--Boundary-00=_uJfbI5UNyPHlpJK Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline ======== # cd /usr/ports/archivers/unrar-iconv # make patch ===> Vulnerability check disabled, database not found ===> Extracting for unrar-iconv-3.80.b2,5 ===> Patching for unrar-iconv-3.80.b2,5 ===> Applying extra patch /usr/ports/archivers/unrar-iconv/files/patch-iconv 1 out of 1 hunks failed--saving rejects to makefile.unix.rej *** Error code 1 Stop in /usr/ports/archivers/unrar-iconv. ======== New patch (files/patch-iconv) attached --Boundary-00=_uJfbI5UNyPHlpJK Content-Type: text/x-diff; charset="utf-8"; name="patch-iconv" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="patch-iconv" --- cmddata.cpp Tue Oct 4 11:57:54 2005 +++ cmddata.cpp Mon Jan 16 18:06:24 2006 @@ -123,6 +123,34 @@ if (Test && Extract) Test=false; BareOutput=(CmdChar=='L' || CmdChar=='V') && Command[1]=='B'; +#ifdef WITH_ICONV + if ( (encInt[0] != '\0') || (encExt[0] != '\0') ) { + char fullEncInt[ENC_MAXLEN + OPT_MAXLEN + 1]; + char fullEncExt[ENC_MAXLEN + OPT_MAXLEN + 1]; + + strcpy(fullEncInt, encInt); + strcpy(fullEncExt, encExt); + + if (encOpt[0] == '\0') strcpy(encOpt, OPT_DEFAULT); + + if (encOpt[0] != '\0') { + strcat(fullEncInt, "//"); strcat(fullEncInt, encOpt); + strcat(fullEncExt, "//"); strcat(fullEncExt, encOpt); + } + + h_E2I = iconv_open(fullEncInt, encExt); + h_I2E = iconv_open(fullEncExt, encInt); + + if ( (h_E2I == (iconv_t)(-1)) || (h_I2E == (iconv_t)(-1)) ) { + if (h_E2I != (iconv_t)(-1)) iconv_close(h_E2I); + if (h_I2E != (iconv_t)(-1)) iconv_close(h_I2E); + mprintf(St(MIconvCannotOpen), encInt, encExt, encOpt); + } + } else { + h_E2I = (iconv_t)(-1); + h_I2E = (iconv_t)(-1); + } +#endif } @@ -746,6 +774,22 @@ break; } break; +#ifdef WITH_ICONV + case 'L': + switch(toupper(Switch[1])) + { + case 'L': + strncpy(encExt, Switch+2, sizeof(encExt)-1); + break; + case 'A': + strncpy(encInt, Switch+2, sizeof(encInt)-1); + break; + case 'O': + strncpy(encOpt, Switch+2, sizeof(encOpt)-1); + break; + } + break; +#endif #ifndef GUI case '?' : OutHelp(); @@ -938,7 +982,11 @@ MCHelpSwm,MCHelpSwAC,MCHelpSwAD,MCHelpSwAP, MCHelpSwCm,MCHelpSwCFGm,MCHelpSwCL,MCHelpSwCU, MCHelpSwDH,MCHelpSwEP,MCHelpSwEP3,MCHelpSwF,MCHelpSwIDP,MCHelpSwIERR, - MCHelpSwINUL,MCHelpSwIOFF,MCHelpSwKB,MCHelpSwN,MCHelpSwNa,MCHelpSwNal, + MCHelpSwINUL,MCHelpSwIOFF,MCHelpSwKB, +#ifdef WITH_ICONV + MCHelpSwLA,MCHelpSwLL,MCHelpSwLO, +#endif + MCHelpSwN,MCHelpSwNa,MCHelpSwNal, MCHelpSwO,MCHelpSwOC,MCHelpSwOR,MCHelpSwOW,MCHelpSwP, MCHelpSwPm,MCHelpSwR,MCHelpSwRI,MCHelpSwSL,MCHelpSwSM,MCHelpSwTA, MCHelpSwTB,MCHelpSwTN,MCHelpSwTO,MCHelpSwTS,MCHelpSwU,MCHelpSwVUnr, --- global.hpp Tue Oct 4 11:57:54 2005 +++ global.hpp Mon Jan 16 18:04:41 2006 @@ -9,6 +9,19 @@ EXTVAR ErrorHandler ErrHandler; +#ifdef WITH_ICONV +#define OPT_DEFAULT "IGNORE" /* ignore unrepresentable chars */ + +#define ENC_MAXLEN 32 /* encoding name maximum length */ +#define OPT_MAXLEN 9 /* strlen("TRANSLIT") */ + +EXTVAR iconv_t h_E2I; /* ExtToInt handler */ +EXTVAR iconv_t h_I2E; /* IntToExt handler */ +EXTVAR char encInt[ENC_MAXLEN]; /* internal (archive) encoding */ +EXTVAR char encExt[ENC_MAXLEN]; /* external (filesystem) encoding */ +EXTVAR char encOpt[OPT_MAXLEN]; /* encoding option (ignore/translit) */ + +#endif #endif --- loclang.hpp Tue Oct 4 11:57:54 2005 +++ loclang.hpp Mon Jan 16 18:04:41 2006 @@ -6,7 +6,7 @@ #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" -#define MUCopyright "\nUNRAR %s freeware Copyright (c) 1993-%d Alexander Roshal\n" +#define MUCopyright "\nUNRAR %s (iconv) freeware Copyright (c) 1993-%d Alexander Roshal\n" #define MBeta "beta" #define MMonthJan "Jan" #define MMonthFeb "Feb" @@ -310,7 +310,7 @@ #define MSyncScanError "\nFile search errors, cannot synchronize archive" #define MCorrectingName "\nWARNING: Attempting to correct the invalid file name" #define MUnpCannotMerge "\nWARNING: You need to start extraction from a previous volume to unpack %s" -#define MUnknownOption "\nERROR: Unknown option: %s" +#define MUnknownOption "\nERROR: Unknown option: %s\n" #define MSubHeadCorrupt "\nERROR: Corrupt data header found, ignored" #define MSubHeadUnknown "\nWARNING: Unknown data header format, ignored" #define MSubHeadDataCRC "\nERROR: Corrupt %s data block" @@ -338,3 +338,9 @@ #define MMaxPathLimit "\nTotal path and file name length must not exceed %d characters" #define MRecVolLimit "\nTotal number of usual and recovery volumes must not exceed 255" #define MVolumeNumber "volume %d" +#ifdef WITH_ICONV +#define MCHelpSwLA "\n la<encoding> Archive internal filenames encoding" +#define MCHelpSwLL "\n ll<encoding> Your locale encoding" +#define MCHelpSwLO "\n lo<option> Encoding option {ignore,translit,<empty>}" +#define MIconvCannotOpen "\nCannot open iconv to convert between '%s' and '%s' with option '%s'" +#endif --- makefile.unix 2008-07-04 12:40:36.000000000 +1100 +++ makefile.unix 2008-07-04 12:48:38.000000000 +1100 @@ -10,7 +10,14 @@ CXXFLAGS=-O2 DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE STRIP=strip -DESTDIR=/usr +DESTDIR=/usr/local +# iconv stuff. Remove #ICONV# to enable +# where to get iconv.h +CXXFLAGS+= -I/usr/local/include +# where to get libiconv.so* +LIBS+= -L/usr/local/lib -liconv +# enable iconv stuff +DEFINES+= -DWITH_ICONV # Linux using LCC #CXX=lcc --- os.hpp Tue Oct 4 11:57:54 2005 +++ os.hpp Mon Jan 16 18:04:41 2006 @@ -169,6 +169,10 @@ #include <utime.h> #include <locale.h> +#ifdef WITH_ICONV +#include <iconv.h> +#endif + #ifdef S_IFLNK #define SAVE_LINKS #endif --- strfn.cpp.orig 2007-09-10 17:49:28.000000000 +0600 +++ strfn.cpp 2008-04-03 21:15:08.000000000 +0600 @@ -22,23 +22,49 @@ void ExtToInt(const char *Src,char *Dest) { +#ifdef WITH_ICONV + static size_t ret; + ret = (size_t)(-1); + if (h_E2I != (iconv_t)(-1)) { + static size_t inbytesleft, outbytesleft; + inbytesleft = strlen(Src)+1; + outbytesleft = NM; + ret = iconv(h_E2I, &Src, &inbytesleft, &Dest, &outbytesleft); + Dest[outbytesleft-inbytesleft]=NULL; + } + if (ret == (size_t)(-1)) strcpy(Dest, Src); +#else /* !WITH_ICONV */ #if defined(_WIN_32) CharToOem(Src,Dest); #else if (Dest!=Src) strcpy(Dest,Src); #endif +#endif /* !WITH_ICONV */ } void IntToExt(const char *Src,char *Dest) { +#ifdef WITH_ICONV + static size_t ret; + ret = (size_t)(-1); + if (h_I2E != (iconv_t)(-1)) { + static size_t inbytesleft, outbytesleft; + inbytesleft = strlen(Src)+1; + outbytesleft = NM; + ret = iconv(h_I2E, &Src, &inbytesleft, &Dest, &outbytesleft); + Dest[outbytesleft-inbytesleft]=NULL; + } + if (ret == (size_t)(-1)) strcpy(Dest,Src); +#else /* !WITH_ICONV */ #if defined(_WIN_32) OemToChar(Src,Dest); #else if (Dest!=Src) strcpy(Dest,Src); #endif +#endif /* !WITH_ICONV */ } --Boundary-00=_uJfbI5UNyPHlpJK--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200807042050.38736.athathoth>