summaryrefslogtreecommitdiffstats
path: root/app-arch/p7zip/files/p7zip_9.13-ds-rusxmms.patch
diff options
context:
space:
mode:
Diffstat (limited to 'app-arch/p7zip/files/p7zip_9.13-ds-rusxmms.patch')
-rw-r--r--app-arch/p7zip/files/p7zip_9.13-ds-rusxmms.patch307
1 files changed, 307 insertions, 0 deletions
diff --git a/app-arch/p7zip/files/p7zip_9.13-ds-rusxmms.patch b/app-arch/p7zip/files/p7zip_9.13-ds-rusxmms.patch
new file mode 100644
index 0000000..df27ac2
--- /dev/null
+++ b/app-arch/p7zip/files/p7zip_9.13-ds-rusxmms.patch
@@ -0,0 +1,307 @@
+diff -dPNur p7zip_9.13/C/rccrecode.c p7zip_9.13-rusxmms/C/rccrecode.c
+--- p7zip_9.13/C/rccrecode.c 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_9.13-rusxmms/C/rccrecode.c 2010-07-31 20:32:27.000000000 +0200
+@@ -0,0 +1,73 @@
++#include <pthread.h>
++#include <librcc.h>
++
++static rcc_class_default_charset default_oem[] = {
++ { "ru", "IBM866" },
++ { NULL, NULL }
++};
++
++static rcc_class_default_charset default_iso[] = {
++ { "ru", "CP1251" },
++ { NULL, NULL }
++};
++
++#define ARC_CLASS 0
++#define OUT_CLASS 1
++#define ARCOUT_CLASS 0
++static rcc_class classes[] = {
++ { "oem", RCC_CLASS_STANDARD, NULL, default_oem, "OEM Encoding", 0 },
++ { "out", RCC_CLASS_STANDARD, "LC_CTYPE", NULL, "Output", 0 },
++ { NULL, RCC_CLASS_STANDARD, NULL, NULL, NULL, 0 }
++};
++
++static int initialized = 0;
++static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
++
++void *rcc_init() {
++ rcc_context ctx;
++
++ pthread_mutex_lock(&mutex);
++ if (!initialized) {
++ rccInit();
++// rccInitDefaultContext(NULL, 0, 0, classes, 0);
++// rccInitDb4(NULL, NULL, 0);
++// rccLoad(NULL, "zip");
++ }
++ initialized++;
++ pthread_mutex_unlock(&mutex);
++
++ ctx = rccCreateContext(NULL, 0, 0, classes, 0);
++ if (ctx) {
++ rccInitDb4(ctx, NULL, 0);
++ rccLoad(ctx, "zip");
++ }
++
++ return ctx;
++}
++
++
++void rcc_free(void *ctx) {
++ if (ctx) rccFreeContext((rcc_context)ctx);
++
++ pthread_mutex_lock(&mutex);
++ if (initialized == 1) rccFree();
++ initialized--;
++ pthread_mutex_unlock(&mutex);
++}
++
++
++char *rcc_read(void *ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, ARC_CLASS, OUT_CLASS, string, size, NULL);
++}
++
++char *rcc_write(void *ctx, const char *string, size_t size) {
++ if (!initialized) {
++ rcc_init();
++ if (!initialized) return NULL;
++ }
++ return rccSizedRecode((rcc_context)ctx, OUT_CLASS, ARCOUT_CLASS, string, size, NULL);
++}
+diff -dPNur p7zip_9.13/C/rccrecode.h p7zip_9.13-rusxmms/C/rccrecode.h
+--- p7zip_9.13/C/rccrecode.h 1970-01-01 01:00:00.000000000 +0100
++++ p7zip_9.13-rusxmms/C/rccrecode.h 2010-07-31 14:07:34.000000000 +0200
+@@ -0,0 +1,17 @@
++#ifndef _RCC_RECODE_H
++#define _RCC_RECODE_H
++
++# ifdef __cplusplus
++extern "C" {
++# endif
++
++ void *rcc_init();
++ void rcc_free(void *ctx);
++ char *rcc_read(void *ctx, const char *string, size_t size);
++ char *rcc_write(void *ctx, const char *string, size_t size);
++
++# ifdef __cplusplus
++}
++# endif
++
++#endif /* _RCC_RECODE_H */
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.cpp p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.cpp
+--- p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.cpp 2010-04-25 17:14:42.000000000 +0200
++++ p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.cpp 2010-07-31 20:33:42.000000000 +0200
+@@ -9,6 +9,8 @@
+ #include "../../Common/LimitedStreams.h"
+ #include "../../Common/StreamUtils.h"
+
++#include "../../../../C/rccrecode.h"
++
+ #include "ZipIn.h"
+
+ #define Get16(p) GetUi16(p)
+@@ -17,7 +19,17 @@
+
+ namespace NArchive {
+ namespace NZip {
+-
++
++CInArchive::CInArchive()
++{
++ rccctx = rcc_init();
++}
++
++CInArchive::~CInArchive()
++{
++ rcc_free(rccctx);
++}
++
+ HRESULT CInArchive::Open(IInStream *stream, const UInt64 *searchHeaderSizeLimit)
+ {
+ _inBufMode = false;
+@@ -200,12 +212,20 @@
+
+ void CInArchive::ReadFileName(UInt32 nameSize, AString &dest)
+ {
++ char *rccrec;
++
+ if (nameSize == 0)
+ dest.Empty();
+ char *p = dest.GetBuffer((int)nameSize);
+ SafeReadBytes(p, nameSize);
+ p[nameSize] = 0;
+ dest.ReleaseBuffer();
++
++ rccrec = rcc_read(rccctx, (LPCSTR)dest, 0);
++ if (rccrec) {
++ dest = rccrec;
++ free(rccrec);
++ }
+ }
+
+ void CInArchive::ReadExtra(UInt32 extraSize, CExtraBlock &extraBlock,
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.cpp.orig p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.cpp.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.h p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.h
+--- p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.h 2010-04-25 17:14:27.000000000 +0200
++++ p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.h 2010-07-31 20:33:42.000000000 +0200
+@@ -117,6 +117,10 @@
+ ISequentialInStream *CreateLimitedStream(UInt64 position, UInt64 size);
+ IInStream* CreateStream();
+
++ void *rccctx;
++ CInArchive();
++ ~CInArchive();
++
+ bool IsOpen() const { return m_Stream != NULL; }
+ };
+
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipIn.h.orig p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipIn.h.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipOut.cpp p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipOut.cpp
+--- p7zip_9.13/CPP/7zip/Archive/Zip/ZipOut.cpp 2010-04-25 17:14:42.000000000 +0200
++++ p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipOut.cpp 2010-07-31 20:33:42.000000000 +0200
+@@ -6,9 +6,24 @@
+
+ #include "ZipOut.h"
+
++#include "../../../../C/rccrecode.h"
++
+ namespace NArchive {
+ namespace NZip {
+
++COutArchive::COutArchive() {
++ rccctx = rcc_init();
++}
++
++COutArchive::~COutArchive() {
++ rcc_free(rccctx);
++}
++
++void COutArchive::Recode(CItem &item) {
++ char *rccrec = rcc_write(rccctx, (const char *)item.Name, item.Name.Length());
++ if (rccrec) item.Name = rccrec;
++}
++
+ void COutArchive::Create(IOutStream *outStream)
+ {
+ if (!m_OutBuffer.Create(1 << 16))
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipOut.cpp.orig p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipOut.cpp.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipOut.h p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipOut.h
+--- p7zip_9.13/CPP/7zip/Archive/Zip/ZipOut.h 2010-04-25 17:14:27.000000000 +0200
++++ p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipOut.h 2010-07-31 20:33:42.000000000 +0200
+@@ -49,6 +49,11 @@
+ void CreateStreamForCompressing(IOutStream **outStream);
+ void CreateStreamForCopying(ISequentialOutStream **outStream);
+ void SeekToPackedDataPosition();
++
++ void *rccctx;
++ COutArchive();
++ ~COutArchive();
++ void Recode(CItem &item);
+ };
+
+ }}
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipUpdate.cpp p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipUpdate.cpp
+--- p7zip_9.13/CPP/7zip/Archive/Zip/ZipUpdate.cpp 2010-04-25 17:25:47.000000000 +0200
++++ p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipUpdate.cpp 2010-07-31 20:33:42.000000000 +0200
+@@ -86,6 +86,7 @@
+ item.NtfsATime = ui.NtfsATime;
+ item.NtfsCTime = ui.NtfsCTime;
+ item.NtfsTimeIsDefined = ui.NtfsTimeIsDefined;
++ archive.Recode(item);
+ }
+ else
+ isDir = item.IsDir();
+@@ -358,9 +359,11 @@
+ item.NtfsCTime = ui.NtfsCTime;
+ item.NtfsTimeIsDefined = ui.NtfsTimeIsDefined;
+
++ archive.Recode(item);
++
+ item.CentralExtra.RemoveUnknownSubBlocks();
+ item.LocalExtra.RemoveUnknownSubBlocks();
+-
++
+ archive.PrepareWriteCompressedData2((UInt16)item.Name.Length(), item.UnPackSize, item.PackSize, item.LocalExtra.HasWzAesField());
+ item.LocalHeaderPosition = archive.GetCurrentPosition();
+ archive.SeekToPackedDataPosition();
+diff -dPNur p7zip_9.13/CPP/7zip/Archive/Zip/ZipUpdate.cpp.orig p7zip_9.13-rusxmms/CPP/7zip/Archive/Zip/ZipUpdate.cpp.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Alone/makefile p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile
+--- p7zip_9.13/CPP/7zip/Bundles/Alone/makefile 2010-03-16 20:15:59.000000000 +0100
++++ p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile 2010-07-31 20:33:42.000000000 +0200
+@@ -251,6 +251,7 @@
+
+
+ OBJS=\
++rccrecode.o \
+ myGetTickCount.o \
+ wine_date_and_time.o \
+ myAddExeFlag.o \
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Alone/makefile.list p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile.list
+--- p7zip_9.13/CPP/7zip/Bundles/Alone/makefile.list 2010-03-16 20:17:05.000000000 +0100
++++ p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile.list 2010-07-31 20:33:42.000000000 +0200
+@@ -194,6 +194,7 @@
+ ../../Crypto/ZipStrong.cpp
+
+ SRCS_C=\
++ ../../../../C/rccrecode.c \
+ ../../../../C/Aes.c \
+ ../../../../C/7zStream.c \
+ ../../../../C/Alloc.c \
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Alone/makefile.list.orig p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile.list.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Alone/makefile.orig p7zip_9.13-rusxmms/CPP/7zip/Bundles/Alone/makefile.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile
+--- p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile 2010-03-16 20:49:21.000000000 +0100
++++ p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile 2010-07-31 20:33:42.000000000 +0200
+@@ -298,6 +298,7 @@
+
+
+ OBJS = \
++ rccrecode.o \
+ wine_date_and_time.o \
+ myGetTickCount.o \
+ $(COMMON_OBJS) \
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile.list p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile.list
+--- p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile.list 2010-03-16 20:50:11.000000000 +0100
++++ p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile.list 2010-07-31 20:33:42.000000000 +0200
+@@ -224,6 +224,7 @@
+ ../../Crypto/ZipStrong.cpp
+
+ SRCS_C=\
++ ../../../../C/rccrecode.c \
+ ../../../../C/7zBuf2.c \
+ ../../../../C/7zStream.c \
+ ../../../../C/Aes.c \
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile.list.orig p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile.list.orig
+diff -dPNur p7zip_9.13/CPP/7zip/Bundles/Format7zFree/makefile.orig p7zip_9.13-rusxmms/CPP/7zip/Bundles/Format7zFree/makefile.orig
+diff -dPNur p7zip_9.13/makefile.machine p7zip_9.13-rusxmms/makefile.machine
+--- p7zip_9.13/makefile.machine 2010-05-30 10:33:48.000000000 +0200
++++ p7zip_9.13-rusxmms/makefile.machine 2010-07-31 20:33:42.000000000 +0200
+@@ -15,7 +15,7 @@
+ CC_SHARED=-fPIC
+ LINK_SHARED=-fPIC -shared
+
+-LOCAL_LIBS=-lpthread
++LOCAL_LIBS=-lpthread -lrcc
+ LOCAL_LIBS_DLL=$(LOCAL_LIBS) -ldl
+
+ OBJ_CRC32=$(OBJ_CRC32_C)
+diff -dPNur p7zip_9.13/makefile.machine.orig p7zip_9.13-rusxmms/makefile.machine.orig
+diff -dPNur p7zip_9.13/makefile.rules p7zip_9.13-rusxmms/makefile.rules
+--- p7zip_9.13/makefile.rules 2010-03-16 20:18:44.000000000 +0100
++++ p7zip_9.13-rusxmms/makefile.rules 2010-07-31 20:33:42.000000000 +0200
+@@ -655,3 +655,5 @@
+ LangUtils.o : ../../UI/FileManager/LangUtils.cpp
+ $(CXX) $(CXXFLAGS) ../../UI/FileManager/LangUtils.cpp
+
++rccrecode.o : ../../../../C/rccrecode.c
++ $(CC) $(CFLAGS) ../../../../C/rccrecode.c
+diff -dPNur p7zip_9.13/makefile.rules.orig p7zip_9.13-rusxmms/makefile.rules.orig
+diff -dPNur p7zip_9.13/p7zip_9.04-ds-rusxmms.patch p7zip_9.13-rusxmms/p7zip_9.04-ds-rusxmms.patch