# This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # unrar-iconv # unrar-iconv/files # unrar-iconv/files/patch-iconv # unrar-iconv/Makefile # unrar-iconv/distinfo # unrar-iconv/pkg-descr # echo c - unrar-iconv mkdir -p unrar-iconv > /dev/null 2>&1 echo c - unrar-iconv/files mkdir -p unrar-iconv/files > /dev/null 2>&1 echo x - unrar-iconv/files/patch-iconv sed 's/^X//' >unrar-iconv/files/patch-iconv << 'END-of-unrar-iconv/files/patch-iconv' X--- cmddata.cpp Tue Oct 4 11:57:54 2005 X+++ cmddata.cpp Mon Jan 16 18:06:24 2006 X@@ -123,6 +123,34 @@ X if (Test && Extract) X Test=false; X BareOutput=(CmdChar=='L' || CmdChar=='V') && Command[1]=='B'; X+#ifdef WITH_ICONV X+ if ( (encInt[0] != '\0') || (encExt[0] != '\0') ) { X+ char fullEncInt[ENC_MAXLEN + OPT_MAXLEN + 1]; X+ char fullEncExt[ENC_MAXLEN + OPT_MAXLEN + 1]; X+ X+ strcpy(fullEncInt, encInt); X+ strcpy(fullEncExt, encExt); X+ X+ if (encOpt[0] == '\0') strcpy(encOpt, OPT_DEFAULT); X+ X+ if (encOpt[0] != '\0') { X+ strcat(fullEncInt, "//"); strcat(fullEncInt, encOpt); X+ strcat(fullEncExt, "//"); strcat(fullEncExt, encOpt); X+ } X+ X+ h_E2I = iconv_open(fullEncInt, encExt); X+ h_I2E = iconv_open(fullEncExt, encInt); X+ X+ if ( (h_E2I == (iconv_t)(-1)) || (h_I2E == (iconv_t)(-1)) ) { X+ if (h_E2I != (iconv_t)(-1)) iconv_close(h_E2I); X+ if (h_I2E != (iconv_t)(-1)) iconv_close(h_I2E); X+ mprintf(St(MIconvCannotOpen), encInt, encExt, encOpt); X+ } X+ } else { X+ h_E2I = (iconv_t)(-1); X+ h_I2E = (iconv_t)(-1); X+ } X+#endif X } X X X@@ -746,6 +774,22 @@ X break; X } X break; X+#ifdef WITH_ICONV X+ case 'L': X+ switch(toupper(Switch[1])) X+ { X+ case 'L': X+ strncpy(encExt, Switch+2, sizeof(encExt)-1); X+ break; X+ case 'A': X+ strncpy(encInt, Switch+2, sizeof(encInt)-1); X+ break; X+ case 'O': X+ strncpy(encOpt, Switch+2, sizeof(encOpt)-1); X+ break; X+ } X+ break; X+#endif X #ifndef GUI X case '?' : X OutHelp(); X@@ -964,7 +920,11 @@ X MCHelpCmdT,MCHelpCmdV,MCHelpCmdX,MCHelpSw,MCHelpSwm,MCHelpSwAC,MCHelpSwAD, X MCHelpSwAP,MCHelpSwAVm,MCHelpSwCm,MCHelpSwCFGm,MCHelpSwCL,MCHelpSwCU, X MCHelpSwDH,MCHelpSwEP,MCHelpSwEP3,MCHelpSwF,MCHelpSwIDP,MCHelpSwIERR, X- MCHelpSwINUL,MCHelpSwIOFF,MCHelpSwKB,MCHelpSwN,MCHelpSwNa,MCHelpSwNal, X+ MCHelpSwINUL,MCHelpSwIOFF,MCHelpSwKB, X+#ifdef WITH_ICONV X+ MCHelpSwLA,MCHelpSwLL,MCHelpSwLO, X+#endif X+ MCHelpSwN,MCHelpSwNa,MCHelpSwNal, X MCHelpSwOp,MCHelpSwOm,MCHelpSwOC,MCHelpSwOR,MCHelpSwOW,MCHelpSwP, X MCHelpSwPm,MCHelpSwR,MCHelpSwRI,MCHelpSwSL,MCHelpSwSM,MCHelpSwTA, X MCHelpSwTB,MCHelpSwTN,MCHelpSwTO,MCHelpSwTS,MCHelpSwU,MCHelpSwVUnr, X--- global.hpp Tue Oct 4 11:57:54 2005 X+++ global.hpp Mon Jan 16 18:04:41 2006 X@@ -9,6 +9,19 @@ X X EXTVAR ErrorHandler ErrHandler; X X+#ifdef WITH_ICONV X X+#define OPT_DEFAULT "IGNORE" /* ignore unrepresentable chars */ X+ X+#define ENC_MAXLEN 32 /* encoding name maximum length */ X+#define OPT_MAXLEN 9 /* strlen("TRANSLIT") */ X+ X+EXTVAR iconv_t h_E2I; /* ExtToInt handler */ X+EXTVAR iconv_t h_I2E; /* IntToExt handler */ X+EXTVAR char encInt[ENC_MAXLEN]; /* internal (archive) encoding */ X+EXTVAR char encExt[ENC_MAXLEN]; /* external (filesystem) encoding */ X+EXTVAR char encOpt[OPT_MAXLEN]; /* encoding option (ignore/translit) */ X+ X+#endif X X #endif X--- loclang.hpp Tue Oct 4 11:57:54 2005 X+++ loclang.hpp Mon Jan 16 18:04:41 2006 X@@ -6,7 +6,7 @@ X #define MCopyright "\nRAR %s Copyright (c) 1993-%d Alexander Roshal %d %s %d" X #define MRegTo "\nRegistered to %s\n" X #define MShare "\nShareware version Type RAR -? for help\n" X-#define MUCopyright "\nUNRAR %s freeware Copyright (c) 1993-%d Alexander Roshal\n" X+#define MUCopyright "\nUNRAR %s (iconv) freeware Copyright (c) 1993-%d Alexander Roshal\n" X #define MBeta "beta" X #define MMonthJan "Jan" X #define MMonthFeb "Feb" X@@ -310,7 +310,7 @@ X #define MSyncScanError "\nFile search errors, cannot synchronize archive" X #define MCorrectingName "\nWARNING: Attempting to correct the invalid file name" X #define MUnpCannotMerge "\nWARNING: You need to start extraction from a previous volume to unpack %s" X-#define MUnknownOption "\nERROR: Unknown option: %s" X+#define MUnknownOption "\nERROR: Unknown option: %s\n" X #define MSubHeadCorrupt "\nERROR: Corrupt data header found, ignored" X #define MSubHeadUnknown "\nWARNING: Unknown data header format, ignored" X #define MSubHeadDataCRC "\nERROR: Corrupt %s data block" X@@ -338,3 +338,9 @@ X #define MMaxPathLimit "\nTotal path and file name length must not exceed %d characters" X #define MRecVolLimit "\nTotal number of usual and recovery volumes must not exceed 255" X #define MVolumeNumber "volume %d" X+#ifdef WITH_ICONV X+#define MCHelpSwLA "\n la Archive internal filenames encoding" X+#define MCHelpSwLL "\n ll Your locale encoding" X+#define MCHelpSwLO "\n lo