diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..462388d45 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +C/Util/7zipInstall/_w/ +CPP/7zip/Bundles/Alone2/_o/ +CPP/7zip/Bundles/Alone2/_w/ +CPP/7zip/Bundles/Format7zF/_w/ +CPP/7zip/UI/Console/_w/ +mingw-shim/*.h + +# Local fork builds and test executables +**/_anyz2/ +**/_linux/ +tests/transpose_streams +tests/transpose_gui.exe diff --git a/C/Transpose.c b/C/Transpose.c new file mode 100644 index 000000000..97b870bc8 --- /dev/null +++ b/C/Transpose.c @@ -0,0 +1,431 @@ +/* Transpose.c -- Byte-transposition converter + Domaine public. */ + +#include "Precomp.h" +#include + +#include "Transpose.h" +#include "LzmaEnc.h" +#include "Alloc.h" +#include "Ppmd7.h" + +/* The wire format stores log2(records per block), not a byte-size exponent. + Decoding only needs shifts and multiplication; there is no division. */ +unsigned Transpose_StepExp(unsigned R, unsigned exp) +{ + unsigned step = 0; + while (((SizeT)R << (step + 1)) <= ((SizeT)1 << exp)) + step++; + return step; +} + +unsigned Transpose_PickExp(UInt64 size) +{ + unsigned e = TRANSPOSE_EXP_MIN; + while (e < TRANSPOSE_EXP_MAX && ((UInt64)1 << (e + 1)) * 32 <= size) + e++; + return e; +} + +SizeT Transpose_Convert(unsigned R, unsigned stepExp, Byte *data, + SizeT size, Byte *tmp, int encode) +{ + const SizeT n = (SizeT)1 << stepExp; + const SizeT blk = (SizeT)R << stepExp; + SizeT done = 0; + while (size - done >= blk) + { + SizeT c, i; + if (encode) + { + for (c = 0; c < R; c++) + for (i = 0; i < n; i++) + tmp[c * n + i] = data[done + i * R + c]; + } + else + { + for (c = 0; c < R; c++) + for (i = 0; i < n; i++) + tmp[i * R + c] = data[done + c * n + i]; + } + memcpy(data + done, tmp, blk); + done += blk; + } + return done; +} + +SizeT Transpose_Encode(unsigned R, unsigned exp, Byte *data, SizeT size, Byte *tmp) +{ + return Transpose_Convert(R, Transpose_StepExp(R, exp), data, size, tmp, 1); +} + +/* --- Detection de la periode ------------------------------------------------ + On NE cherche PAS une periodicite : on cherche si transposer AIDE, ce qui + n'est pas la meme chose. Mesure sur echantillon (validee contre la verite + terrain sur 30 fichiers) : l'ecart absolu moyen entre octets distants de R. + + mad(L) = moyenne de |data[i] - data[i-L]| + + Transposer avec R rend adjacents les octets distants de R. Cela n'aide que + si mad(R) est NETTEMENT plus bas que mad(1), c'est-a-dire si une colonne est + plus homogene que le flux brut. Sans marge franche on renvoie 1 = identite. + + Un detecteur par autocorrelation a ete essaye puis REJETE : il voyait des + periodes partout (bandes laterales des harmoniques) et degradait 7 fichiers + sur 10, parfois lourdement (107 607 -> 137 309 octets). La periodicite d'un + signal ne dit rien sur l'homogeneite de ses colonnes. */ + +/* mad(R) doit valoir au plus 70 % de mad(1) pour que le filtre s'active. */ +#define TRANSPOSE_MARGE_NUM 70 +#define TRANSPOSE_MARGE_DEN 100 + +static UInt64 Transpose_Mad(const Byte *d, SizeT n, unsigned L) +{ + UInt64 s = 0; + SizeT i; + for (i = L; i < n; i++) + { + const int diff = (int)d[i] - (int)d[i - L]; + s += (UInt64)(diff < 0 ? -diff : diff); + } + return s; +} + +unsigned Transpose_DetectR(const Byte *data, SizeT size) +{ + SizeT n = (size < TRANSPOSE_SAMPLE) ? size : TRANSPOSE_SAMPLE; + unsigned maxlag = TRANSPOSE_MAX_R; + unsigned L, best = 1; + double mad1, bestv; + + /* il faut au moins quelques enregistrements du plus grand R teste */ + if (n < (SizeT)4 * maxlag) + return 1; + + mad1 = (double)Transpose_Mad(data, n, 1) / (double)(n - 1); + if (mad1 <= 0) + return 1; /* flux constant : rien a gagner */ + + bestv = mad1; + for (L = 2; L <= maxlag; L++) + { + const double v = (double)Transpose_Mad(data, n, L) / (double)(n - L); + if (v < bestv) + { + bestv = v; + best = L; + } + } + + if (bestv * TRANSPOSE_MARGE_DEN > mad1 * TRANSPOSE_MARGE_NUM) + return 1; /* pas de colonne franchement plus homogene : on ne touche a rien */ + return best; +} + +/* --- Mode calcul ------------------------------------------------------------ + L'heuristique ci-dessus se trompe parfois (elle est volontairement prudente). + Ici on tranche par la mesure : on transpose un echantillon avec chacun des + R les plus prometteurs, on le compresse pour de vrai en LZMA, et on garde + celui qui rend le plus petit resultat. R=1 est toujours en lice, donc le + mode calcul ne peut pas etre pire que ne rien faire. */ + +static SizeT Transpose_LzmaSize(const Byte *src, SizeT len) +{ + CLzmaEncProps props; + Byte propsEnc[LZMA_PROPS_SIZE]; + SizeT propsSize = LZMA_PROPS_SIZE; + SizeT destLen = len + len / 3 + 128; + Byte *dest = (Byte *)ISzAlloc_Alloc(&g_Alloc, destLen); + SRes res; + if (!dest) + return (SizeT)-1; + LzmaEncProps_Init(&props); + /* La sonde doit RESSEMBLER au codeur reel, sinon elle classe a l'envers : + avec un dictionnaire de 1 Mo elle jugeait R=1 meilleur que R=15 sur un + fichier ou LZMA2 en d=64m prefere nettement R=15 (28974 contre 23456). */ + props.level = 9; + props.dictSize = 1 << 26; /* 64 Mo, comme -mx=9 */ + props.numThreads = 1; + res = LzmaEncode(dest, &destLen, src, len, &props, propsEnc, &propsSize, 0, + NULL, &g_Alloc, &g_BigAlloc); + ISzAlloc_Free(&g_Alloc, dest); + return (res == SZ_OK) ? destLen : (SizeT)-1; +} + +/* Sortie qui ne garde rien : on ne veut que la TAILLE produite. */ +typedef struct { IByteOut vt; UInt64 count; } CTransposeCountOut; +static void TransposeCountOut_Write(IByteOutPtr pp, Byte b) +{ + CTransposeCountOut *p = Z7_CONTAINER_FROM_VTBL(pp, CTransposeCountOut, vt); + UNUSED_VAR(b) + p->count++; +} + +static SizeT Transpose_PpmdSize(const Byte *src, SizeT len) +{ + CPpmd7 ppmd; + CTransposeCountOut out; + out.vt.Write = TransposeCountOut_Write; + out.count = 0; + Ppmd7_Construct(&ppmd); + if (!Ppmd7_Alloc(&ppmd, 16u << 20, &g_BigAlloc)) + return (SizeT)-1; + ppmd.rc.enc.Stream = &out.vt; + Ppmd7z_Init_RangeEnc(&ppmd); + Ppmd7_Init(&ppmd, 16); + Ppmd7z_EncodeSymbols(&ppmd, src, src + len); + Ppmd7z_Flush_RangeEnc(&ppmd); + Ppmd7_Free(&ppmd, &g_BigAlloc); + return (SizeT)out.count; +} + +static SizeT Transpose_ProbeSize(const Byte *src, SizeT len, unsigned probe) +{ + return (probe == TRANSPOSE_PROBE_PPMD) ? Transpose_PpmdSize(src, len) + : Transpose_LzmaSize(src, len); +} + +unsigned Transpose_MeasureR(const Byte *data, SizeT size, unsigned exp, unsigned probe) +{ + SizeT n = (size < TRANSPOSE_MEASURE_SAMPLE) ? size : TRANSPOSE_MEASURE_SAMPLE; + unsigned cands[TRANSPOSE_MEASURE_CANDS]; + unsigned nc = 0, L, i, best = 1; + double mad[TRANSPOSE_MAX_R + 1]; + SizeT bestSize; + Byte *buf, *tmp; + + if (n < (SizeT)4 * TRANSPOSE_MAX_R) + return 1; + + /* classement prealable : on ne mesure pas les 256 valeurs, seulement les + plus prometteuses selon l'ecart absolu moyen. */ + for (L = 1; L <= TRANSPOSE_MAX_R; L++) + mad[L] = (double)Transpose_Mad(data, n, L) / (double)(n - L); + for (i = 0; i < TRANSPOSE_MEASURE_CANDS; i++) + { + unsigned pick = 0; + double bv = 0; + for (L = 2; L <= TRANSPOSE_MAX_R; L++) + if (mad[L] >= 0 && (pick == 0 || mad[L] < bv)) { bv = mad[L]; pick = L; } + if (!pick) break; + cands[nc++] = pick; + mad[pick] = -1; /* retire du classement */ + } + + bestSize = Transpose_ProbeSize(data, n, probe); /* reference : R=1, aucune transposition */ + if (bestSize == (SizeT)-1) + return 1; + + buf = (Byte *)ISzAlloc_Alloc(&g_Alloc, n); + tmp = (Byte *)ISzAlloc_Alloc(&g_Alloc, (size_t)1 << exp); + if (!buf || !tmp) + { + if (buf) ISzAlloc_Free(&g_Alloc, buf); + if (tmp) ISzAlloc_Free(&g_Alloc, tmp); + return 1; + } + + for (i = 0; i < nc; i++) + { + SizeT got; + memcpy(buf, data, n); + Transpose_Encode(cands[i], exp, buf, n, tmp); + got = Transpose_ProbeSize(buf, n, probe); + if (got != (SizeT)-1 && got < bestSize) { bestSize = got; best = cands[i]; } + } + + ISzAlloc_Free(&g_Alloc, buf); + ISzAlloc_Free(&g_Alloc, tmp); + return best; +} + +/* --- Choix sur le fichier entier (passe prealable) -------------------------- + Trois etapes, de la moins chere a la plus chere : + 1. une compression de reference a R=1, dont on a besoin de toute facon ; + si le fichier compresse deja tres bien, on s'arrete la ; + 2. un classement gratuit par ecart absolu moyen, qui donne un candidat ; + 3. un classement par un codeur RAPIDE (LZMA niveau 1), qui en donne un + second — les deux sondes voient des choses differentes : l'ecart moyen + rate les resonances que seul un chercheur de repetitions voit, et le + codeur rapide rate les redondances purement statistiques. + Puis on compresse pour de vrai ces deux candidats au plus, et on garde le + meilleur des trois resultats. */ + +static SizeT Transpose_FastSize(const Byte *src, SizeT len) +{ + CLzmaEncProps props; + Byte propsEnc[LZMA_PROPS_SIZE]; + SizeT propsSize = LZMA_PROPS_SIZE; + SizeT destLen = len + len / 3 + 128; + Byte *dest = (Byte *)ISzAlloc_Alloc(&g_Alloc, destLen); + SRes res; + if (!dest) + return (SizeT)-1; + LzmaEncProps_Init(&props); + props.level = 1; /* on classe, on ne livre pas */ + props.dictSize = 1 << 18; + props.numThreads = 1; + res = LzmaEncode(dest, &destLen, src, len, &props, propsEnc, &propsSize, 0, + NULL, &g_Alloc, &g_BigAlloc); + ISzAlloc_Free(&g_Alloc, dest); + return (res == SZ_OK) ? destLen : (SizeT)-1; +} + +/* Poids relatifs pour la barre de progression. Une sonde PPMd porte sur tout + le tampon (jusqu'a 64 Mo) et coute environ un ordre de grandeur de plus par + octet qu'une sonde LZMA-1 sur l'echantillon de triage : la barre serait + mensongere a compter les etapes a poids egal. */ +#define TP_W_TRIAGE 1 +#define TP_W_PROBE 8 + +static int Transpose_Tick(ITransposeProgress *prog, UInt64 done, UInt64 total) +{ + return prog ? prog->Progress(prog, done, total) : 0; +} + +unsigned Transpose_ChooseR_Full(const Byte *data, SizeT size, unsigned exp, unsigned probe, + int partial, ITransposeProgress *prog) +{ + static const unsigned CS[] = { 2,3,4,6,8,12,16,24,32,44,48,64,88,96,128,176,192,224,256 }; + const unsigned nCS = (unsigned)(sizeof(CS) / sizeof(CS[0])); + unsigned i, best = 1, cand[2]; + unsigned nCand = 0; + SizeT baseline, bestSize, tri; + double mad1, madBest = 0, fast1, fastBest = 0; + unsigned madR = 0, fastR = 0; + Byte *buf, *tmp; + UInt64 done = 0; + const UInt64 total = (UInt64)TP_W_TRIAGE * (2 + nCS) + (UInt64)TP_W_PROBE * 3; + + if (size < (SizeT)4 * TRANSPOSE_MAX_R) + return 1; + + /* --------------------------------------------------------------------- + PHASE 1 — TRIAGE. Uniquement des sondes bon marche, et sur un + echantillon, pas sur tout le tampon. + + L'ordre compte. La version precedente payait d'abord la sonde PPMd sur + l'integralite du tampon, puis cherchait des candidats — et rendait R=1 + sans en avoir trouve un seul. Sur du contenu deja compresse (video, JPEG) + ce travail etait donc integralement perdu, pour des minutes d'attente + pendant lesquelles la fenetre paraissait figee. + + La reference PPMd ne sert qu'a etre COMPAREE a des candidats. S'il n'y a + aucun candidat, il n'y a rien a comparer : on sort avant de la payer. + --------------------------------------------------------------------- */ + + tri = (size < (SizeT)TRANSPOSE_TRIAGE_SAMPLE) ? size : (SizeT)TRANSPOSE_TRIAGE_SAMPLE; + + buf = (Byte *)ISzAlloc_Alloc(&g_Alloc, tri); + tmp = (Byte *)ISzAlloc_Alloc(&g_Alloc, (size_t)1 << exp); + if (!buf || !tmp) + { + if (buf) ISzAlloc_Free(&g_Alloc, buf); + if (tmp) ISzAlloc_Free(&g_Alloc, tmp); + return 1; + } + + /* 1a. reference du codeur rapide, pour le classement 1c. + + Il y avait ici un garde-fou « deja tres compressible (>= 10x) ? alors on + abandonne, transposer ne peut que nuire ». Il est RETIRE. + + Deux raisons, la seconde mesuree. D'abord il ne protegeait de rien : le + verdict final est un minimum qui inclut toujours R=1, donc la degradation + est deja impossible par construction ; ce garde-fou ne pouvait que faire + PERDRE du gain. Ensuite, l'evaluer au codeur rapide le rendait franchement + nuisible — c_int32.bin (entiers consecutifs) est tres repetitif, LZMA-1 y + depasse le seuil de 10x la ou PPMd restait dessous : le garde-fou se + declenchait et rendait R=1 au lieu de R=4. Mesure : R=4 retrouve, et + l'attente supprimee par le triage rend le garde-fou inutile. */ + fast1 = (double)Transpose_FastSize(data, tri); + done += TP_W_TRIAGE; + if (Transpose_Tick(prog, done, total)) goto abandon; + + /* 1b. classement par ecart absolu moyen. On balaye TOUTES les valeurs de 2 a + 256, pas une grille : une grille rate les periodes intermediaires — + mesure : l'optimum d'un fichier de test est R=15, absent de toute grille + raisonnable, et le rater coute 27 %. */ + mad1 = (double)Transpose_Mad(data, tri, 1) / (double)(tri - 1); + if (mad1 > 0) + { + unsigned L; + for (L = 2; L <= TRANSPOSE_MAX_R; L++) + { + double v; + if ((SizeT)L >= tri) break; + v = (double)Transpose_Mad(data, tri, L) / (double)(tri - L); + if (madR == 0 || v < madBest) { madBest = v; madR = L; } + } + } + done += TP_W_TRIAGE; + if (Transpose_Tick(prog, done, total)) goto abandon; + /* Seuil volontairement LARGE : le verdict final vient de compressions + reelles ou R=1 est toujours en lice, donc un candidat de trop ne coute que + du temps, jamais de la justesse. Un seuil serre (0,30) ratait 85 % de gain + sur des releves de capteurs float, dont l'ecart moyen tombe a 0,52. */ + if (madR && madBest < 0.90 * mad1) + cand[nCand++] = madR; + + /* 1c. classement par codeur rapide */ + if (fast1 > 0) + for (i = 0; i < nCS; i++) + { + double v; + if ((SizeT)CS[i] >= tri) break; + memcpy(buf, data, tri); + Transpose_Encode(CS[i], exp, buf, tri, tmp); + v = (double)Transpose_FastSize(buf, tri); + if (v > 0 && (fastR == 0 || v < fastBest)) { fastBest = v; fastR = CS[i]; } + done += TP_W_TRIAGE; + if (Transpose_Tick(prog, done, total)) goto abandon; + } + if (fastR && fastBest < 0.90 * fast1 && fastR != madR && nCand < 2) + cand[nCand++] = fastR; + + ISzAlloc_Free(&g_Alloc, buf); + buf = NULL; + + /* Aucun candidat : rien a departager, on ne paie pas la sonde chere. */ + if (nCand == 0) + goto abandon; + + /* --------------------------------------------------------------------- + PHASE 2 — VERDICT par compressions REELLES sur tout le tampon, R=1 + toujours en lice. C'est ce qui rend la degradation impossible par + construction : le resultat retenu est un minimum qui inclut toujours la + taille sans filtre. + --------------------------------------------------------------------- */ + + buf = (Byte *)ISzAlloc_Alloc(&g_Alloc, size); + if (!buf) + goto abandon; + + baseline = Transpose_ProbeSize(data, size, probe); + done += TP_W_PROBE; + if (Transpose_Tick(prog, done, total)) goto abandon; + if (baseline == (SizeT)-1 || baseline == 0) + goto abandon; + + bestSize = baseline; + for (i = 0; i < nCand; i++) + { + SizeT got; + memcpy(buf, data, size); + Transpose_Encode(cand[i], exp, buf, size, tmp); + got = Transpose_ProbeSize(buf, size, probe); + if (got != (SizeT)-1 && got < bestSize) { bestSize = got; best = cand[i]; } + done += TP_W_PROBE; + if (Transpose_Tick(prog, done, total)) { best = 1; goto abandon; } + } + /* Si la decision porte sur un prefixe et non sur tout le fichier, la + garantie ci-dessus ne tient plus : on exige alors une marge franche. */ + if (partial && best != 1 && (double)bestSize > TRANSPOSE_PREFIX_MARGIN * (double)baseline) + best = 1; + +abandon: + if (buf) ISzAlloc_Free(&g_Alloc, buf); + if (tmp) ISzAlloc_Free(&g_Alloc, tmp); + Transpose_Tick(prog, total, total); + return best; +} diff --git a/C/Transpose.h b/C/Transpose.h new file mode 100644 index 000000000..40cfa4d91 --- /dev/null +++ b/C/Transpose.h @@ -0,0 +1,112 @@ +/* Transpose.h -- Byte-transposition converter for fixed-size records + Domaine public. Regroupe l'octet i de chaque enregistrement de R octets. + Concu pour precede LZMA2 : les colonnes homogenes se compressent mieux. */ + +#ifndef ZIP7_INC_TRANSPOSE_H +#define ZIP7_INC_TRANSPOSE_H + +#include "7zTypes.h" + +EXTERN_C_BEGIN + +/* R = 1 signifie IDENTITE : le filtre ne touche a rien. + C'est le repli quand aucune periode nette n'est detectee, pour que le + filtre ne puisse jamais degrader le fichier. */ +#define TRANSPOSE_MIN_R 1 +#define TRANSPOSE_MAX_R 256 + +/* Taille de bloc FIXE, independante du tampon de l'appelant. + Indispensable : 7-Zip n'utilise pas les memes tailles de tampon a la + compression et a la decompression. Sans bloc fixe, la transposition n'est + pas reversible. + + La taille est choisie a l'encodage selon la taille du flux, puis INSCRITE + dans l'archive : les deux cotes utilisent donc la meme, quels que soient + leurs tampons. + + Pourquoi la faire varier : le dernier bloc incomplet du flux n'est jamais + transpose (le filtre ne sait pas qu'il est le dernier), et ces octets bruts + coutent cher. Sur un petit fichier un bloc de 64 Ko laisse jusqu'a 12 % des + donnees non traitees ; un bloc court limite la perte. Sur un gros fichier + la queue est negligeable et un bloc long donne de meilleures colonnes. */ +#define TRANSPOSE_EXP_MIN 12 /* 4 Ko */ +#define TRANSPOSE_EXP_MAX 16 /* 64 Ko */ +#define TRANSPOSE_EXP_DEF 16 /* defaut si la taille est inconnue */ +#define TRANSPOSE_BLOCK (1u << TRANSPOSE_EXP_MAX) /* tampon temporaire max */ + +/* Choisit l'exposant du bloc pour un flux de taille donnee. */ +unsigned Transpose_PickExp(UInt64 size); + +/* Transpose des blocs complets, en place, via un tampon temporaire. + Le dernier bloc incomplet est laisse tel quel. + Renvoie le nombre d'octets effectivement convertis. */ +SizeT Transpose_Encode(unsigned R, unsigned exp, Byte *data, SizeT size, Byte *tmp); +/* Validated by the caller: R in 1..256, stepExp <= 16, + (R << stepExp) <= TRANSPOSE_BLOCK. Final incomplete blocks stay raw. */ +unsigned Transpose_StepExp(unsigned R, unsigned exp); +SizeT Transpose_Convert(unsigned R, unsigned stepExp, Byte *data, + SizeT size, Byte *tmp, int encode); + +/* Taille de l'echantillon analyse pour deviner la periode. */ +#define TRANSPOSE_SAMPLE 65536 + +/* Propose R en comparant les ecarts absolus moyens par colonne. + Renvoie 1 si aucune periode franche ne ressort : dans ce cas le filtre + se comporte en identite plutot que de risquer d'empirer la compression. */ +unsigned Transpose_DetectR(const Byte *data, SizeT size); + +/* Mode CALCUL : au lieu de se fier a l'heuristique, on compresse reellement un + echantillon avec chaque R candidat (plus R=1) et on garde le vainqueur. + Plus lent, mais c'est une mesure et non une supposition. */ +#define TRANSPOSE_MEASURE_SAMPLE (4u << 20) /* 4 Mo : il faut plusieurs blocs pour + voir si la transposition casse + la redondance a longue portee */ +#define TRANSPOSE_MEASURE_CANDS 8 +/* Codeur servant a la mesure. Il DOIT etre celui qui suivra reellement le + filtre : LZMA et PPMd ne preferent pas le meme R, et se tromper de codeur + de mesure conduit a des choix aberrants (mesure : jusqu'a x19 de perte). */ +#define TRANSPOSE_PROBE_LZMA 0 +#define TRANSPOSE_PROBE_PPMD 1 +unsigned Transpose_MeasureR(const Byte *data, SizeT size, unsigned exp, unsigned probe); + +/* Choix de R sur le fichier ENTIER, pour une passe prealable. + On ne cherche pas a deviner juste : on compresse pour de vrai a R=1 et aux + rares candidats retenus, et on garde le plus petit. R=1 etant toujours en + lice, degrader devient impossible par construction — pas seulement rare. + Un filtre en flux ne peut pas faire cela : il ne voit jamais plus que le + tampon de FilterCoder, et le verdict s'inverse avec la taille de + l'echantillon (mesure : R=12 gagne sur 2 Mo, perd sur 3,5 Mo). */ + +/* Au-dela de ce rapport de compression sans filtre, transposer n'apporte + jamais rien : mesure sur 55 fichiers, aucun gain rate a partir de 10x. */ +#define TRANSPOSE_RATIO_GUARD 10 +/* Signe de vie pendant la passe de mesure. Sans lui la fenetre de 7zG affiche + « Compression » a 0 % et parait figee, sans meme pouvoir etre annulee, le + temps que la mesure se fasse — mesure sur un dossier de 4,2 Go de video. + Progress renvoie 0 pour continuer, non nul pour abandonner (l'appelant rend + alors R=1, ce qui revient a ne pas filtrer). */ +typedef struct ITransposeProgress ITransposeProgress; +struct ITransposeProgress +{ + int (*Progress)(ITransposeProgress *p, UInt64 done, UInt64 total); +}; + +/* Echantillon sur lequel se fait le TRIAGE bon marche, avant toute sonde + chere. 4 Mo : il faut plusieurs blocs pour que la mesure soit + representative, c'est la meme raison qui fixe TRANSPOSE_MEASURE_SAMPLE. */ +#define TRANSPOSE_TRIAGE_SAMPLE (4u << 20) + +unsigned Transpose_ChooseR_Full(const Byte *data, SizeT size, unsigned exp, unsigned probe, + int partial, ITransposeProgress *prog); + +/* Au-dela de cette taille on ne lit pas tout le fichier : la decision porte + alors sur un prefixe, et la garantie de non-degradation ne tient plus — + un prefixe peut mentir (mesure : R=12 gagne sur 2 Mo d'un fichier de 3,5 Mo + et perd sur le fichier entier). Sur un prefixe on exige donc une marge + franche avant d'accepter la transposition. */ +#define TRANSPOSE_FULL_LIMIT (64u << 20) +#define TRANSPOSE_PREFIX_MARGIN 0.80 + +EXTERN_C_END + +#endif diff --git a/CPP/7zip/7zip_gcc.mak b/CPP/7zip/7zip_gcc.mak index a78c0fab3..9ede8f08e 100644 --- a/CPP/7zip/7zip_gcc.mak +++ b/CPP/7zip/7zip_gcc.mak @@ -751,6 +751,8 @@ $O/DeflateRegister.o: ../../Compress/DeflateRegister.cpp $(CXX) $(CXXFLAGS) $< $O/DeltaFilter.o: ../../Compress/DeltaFilter.cpp $(CXX) $(CXXFLAGS) $< +$O/TransposeFilter.o: ../../Compress/TransposeFilter.cpp + $(CXX) $(CXXFLAGS) $< $O/DllExports2Compress.o: ../../Compress/DllExports2Compress.cpp $(CXX) $(CXXFLAGS) $< $O/DllExportsCompress.o: ../../Compress/DllExportsCompress.cpp @@ -1186,6 +1188,8 @@ $O/CpuArch.o: ../../../../C/CpuArch.c $(CC) $(CFLAGS) $< $O/Delta.o: ../../../../C/Delta.c $(CC) $(CFLAGS) $< +$O/Transpose.o: ../../../../C/Transpose.c + $(CC) $(CFLAGS) $< $O/DllSecur.o: ../../../../C/DllSecur.c $(CC) $(CFLAGS) $< $O/HuffEnc.o: ../../../../C/HuffEnc.c diff --git a/CPP/7zip/Bundles/Format7zF/Arc_gcc.mak b/CPP/7zip/Bundles/Format7zF/Arc_gcc.mak index 746aaff29..347d6b5cf 100644 --- a/CPP/7zip/Bundles/Format7zF/Arc_gcc.mak +++ b/CPP/7zip/Bundles/Format7zF/Arc_gcc.mak @@ -254,6 +254,7 @@ COMPRESS_OBJS = \ $O/DeflateEncoder.o \ $O/DeflateRegister.o \ $O/DeltaFilter.o \ + $O/TransposeFilter.o \ $O/ImplodeDecoder.o \ $O/LzfseDecoder.o \ $O/LzhDecoder.o \ @@ -334,6 +335,7 @@ C_OBJS = \ $O/BwtSort.o \ $O/CpuArch.o \ $O/Delta.o \ + $O/Transpose.o \ $O/HuffEnc.o \ $O/LzFind.o \ $O/Lzma2Dec.o \ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7z.dll b/CPP/7zip/Bundles/Format7zF/_o/7z.dll new file mode 100755 index 000000000..235ed0d5a Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7z.dll differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zAes.o b/CPP/7zip/Bundles/Format7zF/_o/7zAes.o new file mode 100644 index 000000000..6767a61ce Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zAes.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zAesRegister.o b/CPP/7zip/Bundles/Format7zF/_o/7zAesRegister.o new file mode 100644 index 000000000..19210bffa Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zAesRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zBuf2.o b/CPP/7zip/Bundles/Format7zF/_o/7zBuf2.o new file mode 100644 index 000000000..7fe1100d0 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zBuf2.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zCompressionMode.o b/CPP/7zip/Bundles/Format7zF/_o/7zCompressionMode.o new file mode 100644 index 000000000..2ff3a366d Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zCompressionMode.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zCrc.o b/CPP/7zip/Bundles/Format7zF/_o/7zCrc.o new file mode 100644 index 000000000..9c365c132 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zCrc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zCrcOpt.o b/CPP/7zip/Bundles/Format7zF/_o/7zCrcOpt.o new file mode 100644 index 000000000..8cb0861f2 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zCrcOpt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zDecode.o b/CPP/7zip/Bundles/Format7zF/_o/7zDecode.o new file mode 100644 index 000000000..e366847fd Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zDecode.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zEncode.o b/CPP/7zip/Bundles/Format7zF/_o/7zEncode.o new file mode 100644 index 000000000..0027bbd13 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zEncode.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zExtract.o b/CPP/7zip/Bundles/Format7zF/_o/7zExtract.o new file mode 100644 index 000000000..a3c6deecf Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zExtract.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zFolderInStream.o b/CPP/7zip/Bundles/Format7zF/_o/7zFolderInStream.o new file mode 100644 index 000000000..b4ed3ff18 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zFolderInStream.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zHandler.o b/CPP/7zip/Bundles/Format7zF/_o/7zHandler.o new file mode 100644 index 000000000..6741bbcc4 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zHandlerOut.o b/CPP/7zip/Bundles/Format7zF/_o/7zHandlerOut.o new file mode 100644 index 000000000..265046a23 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zHandlerOut.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zHeader.o b/CPP/7zip/Bundles/Format7zF/_o/7zHeader.o new file mode 100644 index 000000000..4fbd5523b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zHeader.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zIn.o b/CPP/7zip/Bundles/Format7zF/_o/7zIn.o new file mode 100644 index 000000000..be27a75ed Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zIn.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zOut.o b/CPP/7zip/Bundles/Format7zF/_o/7zOut.o new file mode 100644 index 000000000..f2c6538bc Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zOut.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zProperties.o b/CPP/7zip/Bundles/Format7zF/_o/7zProperties.o new file mode 100644 index 000000000..ffa28f09f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zProperties.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zRegister.o b/CPP/7zip/Bundles/Format7zF/_o/7zRegister.o new file mode 100644 index 000000000..a1eaa79e4 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zSpecStream.o b/CPP/7zip/Bundles/Format7zF/_o/7zSpecStream.o new file mode 100644 index 000000000..f38419597 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zSpecStream.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zStream.o b/CPP/7zip/Bundles/Format7zF/_o/7zStream.o new file mode 100644 index 000000000..2a71cf315 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zStream.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/7zUpdate.o b/CPP/7zip/Bundles/Format7zF/_o/7zUpdate.o new file mode 100644 index 000000000..26d31d639 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/7zUpdate.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Aes.o b/CPP/7zip/Bundles/Format7zF/_o/Aes.o new file mode 100644 index 000000000..fdc31a435 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Aes.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/AesOpt.o b/CPP/7zip/Bundles/Format7zF/_o/AesOpt.o new file mode 100644 index 000000000..05ae2450c Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/AesOpt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Alloc.o b/CPP/7zip/Bundles/Format7zF/_o/Alloc.o new file mode 100644 index 000000000..fc8bf76c5 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Alloc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ApfsHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ApfsHandler.o new file mode 100644 index 000000000..48abaa01a Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ApfsHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ApmHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ApmHandler.o new file mode 100644 index 000000000..aa7ab4e22 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ApmHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ArHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ArHandler.o new file mode 100644 index 000000000..eb7e4066f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ArHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ArchiveExports.o b/CPP/7zip/Bundles/Format7zF/_o/ArchiveExports.o new file mode 100644 index 000000000..75b0e13f5 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ArchiveExports.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ArjHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ArjHandler.o new file mode 100644 index 000000000..0e551b28a Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ArjHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BZip2Crc.o b/CPP/7zip/Bundles/Format7zF/_o/BZip2Crc.o new file mode 100644 index 000000000..6e1ebfe13 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BZip2Crc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BZip2Decoder.o b/CPP/7zip/Bundles/Format7zF/_o/BZip2Decoder.o new file mode 100644 index 000000000..78084fa67 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BZip2Decoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BZip2Encoder.o b/CPP/7zip/Bundles/Format7zF/_o/BZip2Encoder.o new file mode 100644 index 000000000..3c5c0552a Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BZip2Encoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BZip2Register.o b/CPP/7zip/Bundles/Format7zF/_o/BZip2Register.o new file mode 100644 index 000000000..336699040 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BZip2Register.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Base64Handler.o b/CPP/7zip/Bundles/Format7zF/_o/Base64Handler.o new file mode 100644 index 000000000..2ce7f2bce Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Base64Handler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Bcj2.o b/CPP/7zip/Bundles/Format7zF/_o/Bcj2.o new file mode 100644 index 000000000..9deb1aa1a Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Bcj2.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Bcj2Coder.o b/CPP/7zip/Bundles/Format7zF/_o/Bcj2Coder.o new file mode 100644 index 000000000..c22ace055 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Bcj2Coder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Bcj2Enc.o b/CPP/7zip/Bundles/Format7zF/_o/Bcj2Enc.o new file mode 100644 index 000000000..797912420 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Bcj2Enc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Bcj2Register.o b/CPP/7zip/Bundles/Format7zF/_o/Bcj2Register.o new file mode 100644 index 000000000..b0b4c9989 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Bcj2Register.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BcjCoder.o b/CPP/7zip/Bundles/Format7zF/_o/BcjCoder.o new file mode 100644 index 000000000..f56f8f28e Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BcjCoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BcjRegister.o b/CPP/7zip/Bundles/Format7zF/_o/BcjRegister.o new file mode 100644 index 000000000..3c1843775 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BcjRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BitlDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/BitlDecoder.o new file mode 100644 index 000000000..dd643cac2 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BitlDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Blake2s.o b/CPP/7zip/Bundles/Format7zF/_o/Blake2s.o new file mode 100644 index 000000000..af875bfe6 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Blake2s.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Bra.o b/CPP/7zip/Bundles/Format7zF/_o/Bra.o new file mode 100644 index 000000000..b142f30d9 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Bra.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Bra86.o b/CPP/7zip/Bundles/Format7zF/_o/Bra86.o new file mode 100644 index 000000000..b46279869 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Bra86.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BraIA64.o b/CPP/7zip/Bundles/Format7zF/_o/BraIA64.o new file mode 100644 index 000000000..d61c9f4ef Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BraIA64.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BranchMisc.o b/CPP/7zip/Bundles/Format7zF/_o/BranchMisc.o new file mode 100644 index 000000000..77fa2bb3e Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BranchMisc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BranchRegister.o b/CPP/7zip/Bundles/Format7zF/_o/BranchRegister.o new file mode 100644 index 000000000..adc1e3d96 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BranchRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/BwtSort.o b/CPP/7zip/Bundles/Format7zF/_o/BwtSort.o new file mode 100644 index 000000000..582a64ef6 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/BwtSort.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ByteSwap.o b/CPP/7zip/Bundles/Format7zF/_o/ByteSwap.o new file mode 100644 index 000000000..00a897fae Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ByteSwap.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Bz2Handler.o b/CPP/7zip/Bundles/Format7zF/_o/Bz2Handler.o new file mode 100644 index 000000000..9575f1953 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Bz2Handler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CRC.o b/CPP/7zip/Bundles/Format7zF/_o/CRC.o new file mode 100644 index 000000000..d634888ad Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CRC.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CWrappers.o b/CPP/7zip/Bundles/Format7zF/_o/CWrappers.o new file mode 100644 index 000000000..08ade51f9 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CWrappers.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CabBlockInStream.o b/CPP/7zip/Bundles/Format7zF/_o/CabBlockInStream.o new file mode 100644 index 000000000..9ae0c4c39 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CabBlockInStream.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CabHandler.o b/CPP/7zip/Bundles/Format7zF/_o/CabHandler.o new file mode 100644 index 000000000..825960aba Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CabHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CabHeader.o b/CPP/7zip/Bundles/Format7zF/_o/CabHeader.o new file mode 100644 index 000000000..75ea31a0f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CabHeader.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CabIn.o b/CPP/7zip/Bundles/Format7zF/_o/CabIn.o new file mode 100644 index 000000000..d428b400f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CabIn.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CabRegister.o b/CPP/7zip/Bundles/Format7zF/_o/CabRegister.o new file mode 100644 index 000000000..5cde71f42 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CabRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ChmHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ChmHandler.o new file mode 100644 index 000000000..6eb9f1475 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ChmHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ChmIn.o b/CPP/7zip/Bundles/Format7zF/_o/ChmIn.o new file mode 100644 index 000000000..a4f50a6b3 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ChmIn.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CodecExports.o b/CPP/7zip/Bundles/Format7zF/_o/CodecExports.o new file mode 100644 index 000000000..10f5bb24f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CodecExports.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CoderMixer2.o b/CPP/7zip/Bundles/Format7zF/_o/CoderMixer2.o new file mode 100644 index 000000000..c01c25796 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CoderMixer2.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ComHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ComHandler.o new file mode 100644 index 000000000..5775cb503 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ComHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CopyCoder.o b/CPP/7zip/Bundles/Format7zF/_o/CopyCoder.o new file mode 100644 index 000000000..61f6f0cd0 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CopyCoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CopyRegister.o b/CPP/7zip/Bundles/Format7zF/_o/CopyRegister.o new file mode 100644 index 000000000..c9c3027bb Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CopyRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CpioHandler.o b/CPP/7zip/Bundles/Format7zF/_o/CpioHandler.o new file mode 100644 index 000000000..dabf47754 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CpioHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CpuArch.o b/CPP/7zip/Bundles/Format7zF/_o/CpuArch.o new file mode 100644 index 000000000..1758820d2 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CpuArch.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CramfsHandler.o b/CPP/7zip/Bundles/Format7zF/_o/CramfsHandler.o new file mode 100644 index 000000000..fdc40cf72 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CramfsHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CrcReg.o b/CPP/7zip/Bundles/Format7zF/_o/CrcReg.o new file mode 100644 index 000000000..689cac4d8 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CrcReg.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/CreateCoder.o b/CPP/7zip/Bundles/Format7zF/_o/CreateCoder.o new file mode 100644 index 000000000..f4b287e4b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/CreateCoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Deflate64Register.o b/CPP/7zip/Bundles/Format7zF/_o/Deflate64Register.o new file mode 100644 index 000000000..1e19eb5bc Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Deflate64Register.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/DeflateDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/DeflateDecoder.o new file mode 100644 index 000000000..751db7abf Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/DeflateDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/DeflateEncoder.o b/CPP/7zip/Bundles/Format7zF/_o/DeflateEncoder.o new file mode 100644 index 000000000..58f7b8161 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/DeflateEncoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/DeflateProps.o b/CPP/7zip/Bundles/Format7zF/_o/DeflateProps.o new file mode 100644 index 000000000..4283f7f74 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/DeflateProps.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/DeflateRegister.o b/CPP/7zip/Bundles/Format7zF/_o/DeflateRegister.o new file mode 100644 index 000000000..ee0c5a2ce Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/DeflateRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Delta.o b/CPP/7zip/Bundles/Format7zF/_o/Delta.o new file mode 100644 index 000000000..c38e4538b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Delta.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/DeltaFilter.o b/CPP/7zip/Bundles/Format7zF/_o/DeltaFilter.o new file mode 100644 index 000000000..7575881c8 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/DeltaFilter.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/DllExports2.o b/CPP/7zip/Bundles/Format7zF/_o/DllExports2.o new file mode 100644 index 000000000..7acb4fe90 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/DllExports2.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/DmgHandler.o b/CPP/7zip/Bundles/Format7zF/_o/DmgHandler.o new file mode 100644 index 000000000..dc0021c71 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/DmgHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/DummyOutStream.o b/CPP/7zip/Bundles/Format7zF/_o/DummyOutStream.o new file mode 100644 index 000000000..7ba94d4b4 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/DummyOutStream.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/DynLimBuf.o b/CPP/7zip/Bundles/Format7zF/_o/DynLimBuf.o new file mode 100644 index 000000000..f60af113e Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/DynLimBuf.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ElfHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ElfHandler.o new file mode 100644 index 000000000..51aa3e0cd Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ElfHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ExtHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ExtHandler.o new file mode 100644 index 000000000..cbc4a09e5 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ExtHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/FatHandler.o b/CPP/7zip/Bundles/Format7zF/_o/FatHandler.o new file mode 100644 index 000000000..f07a49cb3 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/FatHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/FileDir.o b/CPP/7zip/Bundles/Format7zF/_o/FileDir.o new file mode 100644 index 000000000..9312993a5 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/FileDir.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/FileFind.o b/CPP/7zip/Bundles/Format7zF/_o/FileFind.o new file mode 100644 index 000000000..fb1f78af7 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/FileFind.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/FileIO.o b/CPP/7zip/Bundles/Format7zF/_o/FileIO.o new file mode 100644 index 000000000..a45d23507 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/FileIO.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/FileName.o b/CPP/7zip/Bundles/Format7zF/_o/FileName.o new file mode 100644 index 000000000..591a01021 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/FileName.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/FilterCoder.o b/CPP/7zip/Bundles/Format7zF/_o/FilterCoder.o new file mode 100644 index 000000000..0b6e625a8 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/FilterCoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/FindSignature.o b/CPP/7zip/Bundles/Format7zF/_o/FindSignature.o new file mode 100644 index 000000000..94f6d1e21 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/FindSignature.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/FlvHandler.o b/CPP/7zip/Bundles/Format7zF/_o/FlvHandler.o new file mode 100644 index 000000000..4194cce42 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/FlvHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/GptHandler.o b/CPP/7zip/Bundles/Format7zF/_o/GptHandler.o new file mode 100644 index 000000000..32dfa423a Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/GptHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/GzHandler.o b/CPP/7zip/Bundles/Format7zF/_o/GzHandler.o new file mode 100644 index 000000000..f68fdae0b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/GzHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/HandlerCont.o b/CPP/7zip/Bundles/Format7zF/_o/HandlerCont.o new file mode 100644 index 000000000..29ab7e949 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/HandlerCont.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/HandlerOut.o b/CPP/7zip/Bundles/Format7zF/_o/HandlerOut.o new file mode 100644 index 000000000..a8f96b3bc Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/HandlerOut.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/HfsHandler.o b/CPP/7zip/Bundles/Format7zF/_o/HfsHandler.o new file mode 100644 index 000000000..963f01f75 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/HfsHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/HmacSha1.o b/CPP/7zip/Bundles/Format7zF/_o/HmacSha1.o new file mode 100644 index 000000000..abde312ab Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/HmacSha1.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/HmacSha256.o b/CPP/7zip/Bundles/Format7zF/_o/HmacSha256.o new file mode 100644 index 000000000..025b3695b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/HmacSha256.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/HuffEnc.o b/CPP/7zip/Bundles/Format7zF/_o/HuffEnc.o new file mode 100644 index 000000000..14569eeec Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/HuffEnc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/IhexHandler.o b/CPP/7zip/Bundles/Format7zF/_o/IhexHandler.o new file mode 100644 index 000000000..3c9f41229 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/IhexHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ImplodeDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/ImplodeDecoder.o new file mode 100644 index 000000000..566c30342 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ImplodeDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/InBuffer.o b/CPP/7zip/Bundles/Format7zF/_o/InBuffer.o new file mode 100644 index 000000000..b76d2d4e5 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/InBuffer.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/InOutTempBuffer.o b/CPP/7zip/Bundles/Format7zF/_o/InOutTempBuffer.o new file mode 100644 index 000000000..3d13bdae0 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/InOutTempBuffer.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/InStreamWithCRC.o b/CPP/7zip/Bundles/Format7zF/_o/InStreamWithCRC.o new file mode 100644 index 000000000..9ab8d1fbf Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/InStreamWithCRC.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/IntToString.o b/CPP/7zip/Bundles/Format7zF/_o/IntToString.o new file mode 100644 index 000000000..70da5a4af Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/IntToString.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/IsoHandler.o b/CPP/7zip/Bundles/Format7zF/_o/IsoHandler.o new file mode 100644 index 000000000..5362a4045 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/IsoHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/IsoHeader.o b/CPP/7zip/Bundles/Format7zF/_o/IsoHeader.o new file mode 100644 index 000000000..1b64c073e Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/IsoHeader.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/IsoIn.o b/CPP/7zip/Bundles/Format7zF/_o/IsoIn.o new file mode 100644 index 000000000..068042a8e Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/IsoIn.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/IsoRegister.o b/CPP/7zip/Bundles/Format7zF/_o/IsoRegister.o new file mode 100644 index 000000000..f89a95bb1 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/IsoRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ItemNameUtils.o b/CPP/7zip/Bundles/Format7zF/_o/ItemNameUtils.o new file mode 100644 index 000000000..299e5aa76 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ItemNameUtils.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LimitedStreams.o b/CPP/7zip/Bundles/Format7zF/_o/LimitedStreams.o new file mode 100644 index 000000000..10cc9f3ee Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LimitedStreams.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LockedStream.o b/CPP/7zip/Bundles/Format7zF/_o/LockedStream.o new file mode 100644 index 000000000..350992b26 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LockedStream.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LpHandler.o b/CPP/7zip/Bundles/Format7zF/_o/LpHandler.o new file mode 100644 index 000000000..90eccbe17 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LpHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzFind.o b/CPP/7zip/Bundles/Format7zF/_o/LzFind.o new file mode 100644 index 000000000..5bcd2ae17 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzFind.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzFindMt.o b/CPP/7zip/Bundles/Format7zF/_o/LzFindMt.o new file mode 100644 index 000000000..9c4c0d5e4 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzFindMt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzFindOpt.o b/CPP/7zip/Bundles/Format7zF/_o/LzFindOpt.o new file mode 100644 index 000000000..fb66df33c Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzFindOpt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzFindPrepare.o b/CPP/7zip/Bundles/Format7zF/_o/LzFindPrepare.o new file mode 100644 index 000000000..5ce869354 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzFindPrepare.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzOutWindow.o b/CPP/7zip/Bundles/Format7zF/_o/LzOutWindow.o new file mode 100644 index 000000000..7f1d1e178 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzOutWindow.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzfseDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/LzfseDecoder.o new file mode 100644 index 000000000..33343ded8 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzfseDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzhDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/LzhDecoder.o new file mode 100644 index 000000000..85203920c Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzhDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzhHandler.o b/CPP/7zip/Bundles/Format7zF/_o/LzhHandler.o new file mode 100644 index 000000000..7b3e6c908 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzhHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Lzma2Dec.o b/CPP/7zip/Bundles/Format7zF/_o/Lzma2Dec.o new file mode 100644 index 000000000..64bc67420 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Lzma2Dec.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Lzma2DecMt.o b/CPP/7zip/Bundles/Format7zF/_o/Lzma2DecMt.o new file mode 100644 index 000000000..5154b41fd Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Lzma2DecMt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Lzma2Decoder.o b/CPP/7zip/Bundles/Format7zF/_o/Lzma2Decoder.o new file mode 100644 index 000000000..87899e6e0 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Lzma2Decoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Lzma2Enc.o b/CPP/7zip/Bundles/Format7zF/_o/Lzma2Enc.o new file mode 100644 index 000000000..e086340b0 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Lzma2Enc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Lzma2Encoder.o b/CPP/7zip/Bundles/Format7zF/_o/Lzma2Encoder.o new file mode 100644 index 000000000..75943caed Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Lzma2Encoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Lzma2Register.o b/CPP/7zip/Bundles/Format7zF/_o/Lzma2Register.o new file mode 100644 index 000000000..f32251ac6 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Lzma2Register.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzmaDec.o b/CPP/7zip/Bundles/Format7zF/_o/LzmaDec.o new file mode 100644 index 000000000..5c54665fb Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzmaDec.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzmaDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/LzmaDecoder.o new file mode 100644 index 000000000..78d83bcdf Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzmaDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzmaEnc.o b/CPP/7zip/Bundles/Format7zF/_o/LzmaEnc.o new file mode 100644 index 000000000..0c7a7cda6 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzmaEnc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzmaEncoder.o b/CPP/7zip/Bundles/Format7zF/_o/LzmaEncoder.o new file mode 100644 index 000000000..046727c87 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzmaEncoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzmaHandler.o b/CPP/7zip/Bundles/Format7zF/_o/LzmaHandler.o new file mode 100644 index 000000000..b6524b44d Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzmaHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzmaRegister.o b/CPP/7zip/Bundles/Format7zF/_o/LzmaRegister.o new file mode 100644 index 000000000..e0f4ce7e1 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzmaRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzmsDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/LzmsDecoder.o new file mode 100644 index 000000000..cf05d2056 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzmsDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/LzxDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/LzxDecoder.o new file mode 100644 index 000000000..9f7027320 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/LzxDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MachoHandler.o b/CPP/7zip/Bundles/Format7zF/_o/MachoHandler.o new file mode 100644 index 000000000..8a6384064 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MachoHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MbrHandler.o b/CPP/7zip/Bundles/Format7zF/_o/MbrHandler.o new file mode 100644 index 000000000..874e25ed2 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MbrHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Md5.o b/CPP/7zip/Bundles/Format7zF/_o/Md5.o new file mode 100644 index 000000000..4774899b7 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Md5.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Md5Reg.o b/CPP/7zip/Bundles/Format7zF/_o/Md5Reg.o new file mode 100644 index 000000000..c36f62fa8 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Md5Reg.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MemBlocks.o b/CPP/7zip/Bundles/Format7zF/_o/MemBlocks.o new file mode 100644 index 000000000..c98ba6a67 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MemBlocks.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MethodId.o b/CPP/7zip/Bundles/Format7zF/_o/MethodId.o new file mode 100644 index 000000000..62c021adf Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MethodId.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MethodProps.o b/CPP/7zip/Bundles/Format7zF/_o/MethodProps.o new file mode 100644 index 000000000..c87f8b14f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MethodProps.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MslzHandler.o b/CPP/7zip/Bundles/Format7zF/_o/MslzHandler.o new file mode 100644 index 000000000..5f423393a Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MslzHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MtCoder.o b/CPP/7zip/Bundles/Format7zF/_o/MtCoder.o new file mode 100644 index 000000000..f815628b8 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MtCoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MtDec.o b/CPP/7zip/Bundles/Format7zF/_o/MtDec.o new file mode 100644 index 000000000..3dbd826ed Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MtDec.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MubHandler.o b/CPP/7zip/Bundles/Format7zF/_o/MubHandler.o new file mode 100644 index 000000000..6651c66ce Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MubHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MultiStream.o b/CPP/7zip/Bundles/Format7zF/_o/MultiStream.o new file mode 100644 index 000000000..91b70209b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MultiStream.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MyAes.o b/CPP/7zip/Bundles/Format7zF/_o/MyAes.o new file mode 100644 index 000000000..1b5a9659f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MyAes.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MyAesReg.o b/CPP/7zip/Bundles/Format7zF/_o/MyAesReg.o new file mode 100644 index 000000000..812bc2d43 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MyAesReg.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MyMap.o b/CPP/7zip/Bundles/Format7zF/_o/MyMap.o new file mode 100644 index 000000000..5d54f2dff Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MyMap.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MyString.o b/CPP/7zip/Bundles/Format7zF/_o/MyString.o new file mode 100644 index 000000000..f57bd7d08 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MyString.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MyVector.o b/CPP/7zip/Bundles/Format7zF/_o/MyVector.o new file mode 100644 index 000000000..7493ed7c7 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MyVector.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/MyXml.o b/CPP/7zip/Bundles/Format7zF/_o/MyXml.o new file mode 100644 index 000000000..95940bf2b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/MyXml.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/NewHandler.o b/CPP/7zip/Bundles/Format7zF/_o/NewHandler.o new file mode 100644 index 000000000..59c88e52c Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/NewHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/NsisDecode.o b/CPP/7zip/Bundles/Format7zF/_o/NsisDecode.o new file mode 100644 index 000000000..5377ac516 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/NsisDecode.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/NsisHandler.o b/CPP/7zip/Bundles/Format7zF/_o/NsisHandler.o new file mode 100644 index 000000000..93509b468 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/NsisHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/NsisIn.o b/CPP/7zip/Bundles/Format7zF/_o/NsisIn.o new file mode 100644 index 000000000..d1c83ac28 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/NsisIn.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/NsisRegister.o b/CPP/7zip/Bundles/Format7zF/_o/NsisRegister.o new file mode 100644 index 000000000..51a598e93 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/NsisRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/NtfsHandler.o b/CPP/7zip/Bundles/Format7zF/_o/NtfsHandler.o new file mode 100644 index 000000000..eb99e8447 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/NtfsHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/OffsetStream.o b/CPP/7zip/Bundles/Format7zF/_o/OffsetStream.o new file mode 100644 index 000000000..2532633b3 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/OffsetStream.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/OutBuffer.o b/CPP/7zip/Bundles/Format7zF/_o/OutBuffer.o new file mode 100644 index 000000000..3dda2264d Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/OutBuffer.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/OutMemStream.o b/CPP/7zip/Bundles/Format7zF/_o/OutMemStream.o new file mode 100644 index 000000000..ab747df54 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/OutMemStream.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/OutStreamWithCRC.o b/CPP/7zip/Bundles/Format7zF/_o/OutStreamWithCRC.o new file mode 100644 index 000000000..fce041b0f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/OutStreamWithCRC.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/OutStreamWithSha1.o b/CPP/7zip/Bundles/Format7zF/_o/OutStreamWithSha1.o new file mode 100644 index 000000000..e2859aff3 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/OutStreamWithSha1.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ParseProperties.o b/CPP/7zip/Bundles/Format7zF/_o/ParseProperties.o new file mode 100644 index 000000000..7e39c00c3 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ParseProperties.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Pbkdf2HmacSha1.o b/CPP/7zip/Bundles/Format7zF/_o/Pbkdf2HmacSha1.o new file mode 100644 index 000000000..27ed1ccd6 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Pbkdf2HmacSha1.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/PeHandler.o b/CPP/7zip/Bundles/Format7zF/_o/PeHandler.o new file mode 100644 index 000000000..451d92825 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/PeHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Ppmd7.o b/CPP/7zip/Bundles/Format7zF/_o/Ppmd7.o new file mode 100644 index 000000000..f51345f1f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Ppmd7.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Ppmd7Dec.o b/CPP/7zip/Bundles/Format7zF/_o/Ppmd7Dec.o new file mode 100644 index 000000000..b4a9a89ba Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Ppmd7Dec.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Ppmd7Enc.o b/CPP/7zip/Bundles/Format7zF/_o/Ppmd7Enc.o new file mode 100644 index 000000000..af48c0d49 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Ppmd7Enc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Ppmd7aDec.o b/CPP/7zip/Bundles/Format7zF/_o/Ppmd7aDec.o new file mode 100644 index 000000000..f0180394d Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Ppmd7aDec.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Ppmd8.o b/CPP/7zip/Bundles/Format7zF/_o/Ppmd8.o new file mode 100644 index 000000000..1cc868630 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Ppmd8.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Ppmd8Dec.o b/CPP/7zip/Bundles/Format7zF/_o/Ppmd8Dec.o new file mode 100644 index 000000000..413a7134c Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Ppmd8Dec.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Ppmd8Enc.o b/CPP/7zip/Bundles/Format7zF/_o/Ppmd8Enc.o new file mode 100644 index 000000000..540fac17b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Ppmd8Enc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/PpmdDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/PpmdDecoder.o new file mode 100644 index 000000000..76d86d5eb Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/PpmdDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/PpmdEncoder.o b/CPP/7zip/Bundles/Format7zF/_o/PpmdEncoder.o new file mode 100644 index 000000000..cfc9e53b1 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/PpmdEncoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/PpmdHandler.o b/CPP/7zip/Bundles/Format7zF/_o/PpmdHandler.o new file mode 100644 index 000000000..22b052f65 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/PpmdHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/PpmdRegister.o b/CPP/7zip/Bundles/Format7zF/_o/PpmdRegister.o new file mode 100644 index 000000000..6cd40d17a Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/PpmdRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/PpmdZip.o b/CPP/7zip/Bundles/Format7zF/_o/PpmdZip.o new file mode 100644 index 000000000..cd0d7ce6b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/PpmdZip.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ProgressMt.o b/CPP/7zip/Bundles/Format7zF/_o/ProgressMt.o new file mode 100644 index 000000000..1717223c4 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ProgressMt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ProgressUtils.o b/CPP/7zip/Bundles/Format7zF/_o/ProgressUtils.o new file mode 100644 index 000000000..c5f245493 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ProgressUtils.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/PropId.o b/CPP/7zip/Bundles/Format7zF/_o/PropId.o new file mode 100644 index 000000000..edffc734d Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/PropId.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/PropVariant.o b/CPP/7zip/Bundles/Format7zF/_o/PropVariant.o new file mode 100644 index 000000000..c7568f1f9 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/PropVariant.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/PropVariantConv.o b/CPP/7zip/Bundles/Format7zF/_o/PropVariantConv.o new file mode 100644 index 000000000..0fc3de1e8 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/PropVariantConv.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/PropVariantUtils.o b/CPP/7zip/Bundles/Format7zF/_o/PropVariantUtils.o new file mode 100644 index 000000000..00583b302 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/PropVariantUtils.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/QcowHandler.o b/CPP/7zip/Bundles/Format7zF/_o/QcowHandler.o new file mode 100644 index 000000000..640390aba Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/QcowHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/QuantumDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/QuantumDecoder.o new file mode 100644 index 000000000..92a2d3be9 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/QuantumDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/RandGen.o b/CPP/7zip/Bundles/Format7zF/_o/RandGen.o new file mode 100644 index 000000000..985ab3e23 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/RandGen.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Rar1Decoder.o b/CPP/7zip/Bundles/Format7zF/_o/Rar1Decoder.o new file mode 100644 index 000000000..c5983bc08 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Rar1Decoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Rar20Crypto.o b/CPP/7zip/Bundles/Format7zF/_o/Rar20Crypto.o new file mode 100644 index 000000000..1013576dd Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Rar20Crypto.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Rar2Decoder.o b/CPP/7zip/Bundles/Format7zF/_o/Rar2Decoder.o new file mode 100644 index 000000000..dba17d934 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Rar2Decoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Rar3Decoder.o b/CPP/7zip/Bundles/Format7zF/_o/Rar3Decoder.o new file mode 100644 index 000000000..972331640 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Rar3Decoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Rar3Vm.o b/CPP/7zip/Bundles/Format7zF/_o/Rar3Vm.o new file mode 100644 index 000000000..02aa8719e Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Rar3Vm.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Rar5Aes.o b/CPP/7zip/Bundles/Format7zF/_o/Rar5Aes.o new file mode 100644 index 000000000..0fc35334b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Rar5Aes.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Rar5Decoder.o b/CPP/7zip/Bundles/Format7zF/_o/Rar5Decoder.o new file mode 100644 index 000000000..a796477fe Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Rar5Decoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Rar5Handler.o b/CPP/7zip/Bundles/Format7zF/_o/Rar5Handler.o new file mode 100644 index 000000000..33ccc2a54 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Rar5Handler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/RarAes.o b/CPP/7zip/Bundles/Format7zF/_o/RarAes.o new file mode 100644 index 000000000..3becd51a6 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/RarAes.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/RarCodecsRegister.o b/CPP/7zip/Bundles/Format7zF/_o/RarCodecsRegister.o new file mode 100644 index 000000000..beadb16a6 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/RarCodecsRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/RarHandler.o b/CPP/7zip/Bundles/Format7zF/_o/RarHandler.o new file mode 100644 index 000000000..ee5e9f2b9 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/RarHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/RpmHandler.o b/CPP/7zip/Bundles/Format7zF/_o/RpmHandler.o new file mode 100644 index 000000000..382e6c6b8 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/RpmHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha1.o b/CPP/7zip/Bundles/Format7zF/_o/Sha1.o new file mode 100644 index 000000000..05d801b3f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha1.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha1Opt.o b/CPP/7zip/Bundles/Format7zF/_o/Sha1Opt.o new file mode 100644 index 000000000..28e46c755 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha1Opt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha1Prepare.o b/CPP/7zip/Bundles/Format7zF/_o/Sha1Prepare.o new file mode 100644 index 000000000..5131510ad Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha1Prepare.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha1Reg.o b/CPP/7zip/Bundles/Format7zF/_o/Sha1Reg.o new file mode 100644 index 000000000..d531701ef Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha1Reg.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha256.o b/CPP/7zip/Bundles/Format7zF/_o/Sha256.o new file mode 100644 index 000000000..624778ce6 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha256.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha256Opt.o b/CPP/7zip/Bundles/Format7zF/_o/Sha256Opt.o new file mode 100644 index 000000000..fe102fd9d Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha256Opt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha256Prepare.o b/CPP/7zip/Bundles/Format7zF/_o/Sha256Prepare.o new file mode 100644 index 000000000..ecd5e687b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha256Prepare.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha256Reg.o b/CPP/7zip/Bundles/Format7zF/_o/Sha256Reg.o new file mode 100644 index 000000000..df754ead4 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha256Reg.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha3.o b/CPP/7zip/Bundles/Format7zF/_o/Sha3.o new file mode 100644 index 000000000..95fe08ec5 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha3.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha3Reg.o b/CPP/7zip/Bundles/Format7zF/_o/Sha3Reg.o new file mode 100644 index 000000000..a30a921d5 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha3Reg.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha512.o b/CPP/7zip/Bundles/Format7zF/_o/Sha512.o new file mode 100644 index 000000000..83d6a6bd0 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha512.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha512Opt.o b/CPP/7zip/Bundles/Format7zF/_o/Sha512Opt.o new file mode 100644 index 000000000..a2ee4b7ef Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha512Opt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha512Prepare.o b/CPP/7zip/Bundles/Format7zF/_o/Sha512Prepare.o new file mode 100644 index 000000000..8454c1197 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha512Prepare.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sha512Reg.o b/CPP/7zip/Bundles/Format7zF/_o/Sha512Reg.o new file mode 100644 index 000000000..1b0de25d9 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sha512Reg.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ShrinkDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/ShrinkDecoder.o new file mode 100644 index 000000000..27a03f604 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ShrinkDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Sort.o b/CPP/7zip/Bundles/Format7zF/_o/Sort.o new file mode 100644 index 000000000..f76fbbb8f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Sort.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/SparseHandler.o b/CPP/7zip/Bundles/Format7zF/_o/SparseHandler.o new file mode 100644 index 000000000..34976157f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/SparseHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/SplitHandler.o b/CPP/7zip/Bundles/Format7zF/_o/SplitHandler.o new file mode 100644 index 000000000..3a7aa1654 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/SplitHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/SquashfsHandler.o b/CPP/7zip/Bundles/Format7zF/_o/SquashfsHandler.o new file mode 100644 index 000000000..8de93644f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/SquashfsHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/StreamBinder.o b/CPP/7zip/Bundles/Format7zF/_o/StreamBinder.o new file mode 100644 index 000000000..d37d46c52 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/StreamBinder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/StreamObjects.o b/CPP/7zip/Bundles/Format7zF/_o/StreamObjects.o new file mode 100644 index 000000000..8fcaaa128 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/StreamObjects.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/StreamUtils.o b/CPP/7zip/Bundles/Format7zF/_o/StreamUtils.o new file mode 100644 index 000000000..0df5c12af Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/StreamUtils.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/StringConvert.o b/CPP/7zip/Bundles/Format7zF/_o/StringConvert.o new file mode 100644 index 000000000..f7ec3f424 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/StringConvert.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/StringToInt.o b/CPP/7zip/Bundles/Format7zF/_o/StringToInt.o new file mode 100644 index 000000000..2bba1530c Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/StringToInt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/SwapBytes.o b/CPP/7zip/Bundles/Format7zF/_o/SwapBytes.o new file mode 100644 index 000000000..7c79fed35 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/SwapBytes.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/SwfHandler.o b/CPP/7zip/Bundles/Format7zF/_o/SwfHandler.o new file mode 100644 index 000000000..565e2427d Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/SwfHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Synchronization.o b/CPP/7zip/Bundles/Format7zF/_o/Synchronization.o new file mode 100644 index 000000000..29395b79b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Synchronization.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/System.o b/CPP/7zip/Bundles/Format7zF/_o/System.o new file mode 100644 index 000000000..84a316acb Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/System.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/TarHandler.o b/CPP/7zip/Bundles/Format7zF/_o/TarHandler.o new file mode 100644 index 000000000..60011ab22 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/TarHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/TarHandlerOut.o b/CPP/7zip/Bundles/Format7zF/_o/TarHandlerOut.o new file mode 100644 index 000000000..00829eea7 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/TarHandlerOut.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/TarHeader.o b/CPP/7zip/Bundles/Format7zF/_o/TarHeader.o new file mode 100644 index 000000000..ba0e3a276 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/TarHeader.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/TarIn.o b/CPP/7zip/Bundles/Format7zF/_o/TarIn.o new file mode 100644 index 000000000..b63dac0e1 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/TarIn.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/TarOut.o b/CPP/7zip/Bundles/Format7zF/_o/TarOut.o new file mode 100644 index 000000000..7f9b95c9f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/TarOut.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/TarRegister.o b/CPP/7zip/Bundles/Format7zF/_o/TarRegister.o new file mode 100644 index 000000000..16535af72 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/TarRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/TarUpdate.o b/CPP/7zip/Bundles/Format7zF/_o/TarUpdate.o new file mode 100644 index 000000000..26b2e7fea Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/TarUpdate.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Threads.o b/CPP/7zip/Bundles/Format7zF/_o/Threads.o new file mode 100644 index 000000000..5839e38e5 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Threads.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/TimeUtils.o b/CPP/7zip/Bundles/Format7zF/_o/TimeUtils.o new file mode 100644 index 000000000..837fc0902 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/TimeUtils.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Transpose.o b/CPP/7zip/Bundles/Format7zF/_o/Transpose.o new file mode 100644 index 000000000..9b86fe72f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Transpose.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/TransposeFilter.o b/CPP/7zip/Bundles/Format7zF/_o/TransposeFilter.o new file mode 100644 index 000000000..c09d3cd18 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/TransposeFilter.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/UTFConvert.o b/CPP/7zip/Bundles/Format7zF/_o/UTFConvert.o new file mode 100644 index 000000000..84ac1ac02 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/UTFConvert.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/UdfHandler.o b/CPP/7zip/Bundles/Format7zF/_o/UdfHandler.o new file mode 100644 index 000000000..6cd00c2a4 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/UdfHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/UdfIn.o b/CPP/7zip/Bundles/Format7zF/_o/UdfIn.o new file mode 100644 index 000000000..24ad8030e Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/UdfIn.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/UefiHandler.o b/CPP/7zip/Bundles/Format7zF/_o/UefiHandler.o new file mode 100644 index 000000000..e0e72731f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/UefiHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/UniqBlocks.o b/CPP/7zip/Bundles/Format7zF/_o/UniqBlocks.o new file mode 100644 index 000000000..7a35445fb Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/UniqBlocks.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/VdiHandler.o b/CPP/7zip/Bundles/Format7zF/_o/VdiHandler.o new file mode 100644 index 000000000..ed3c5bc83 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/VdiHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/VhdHandler.o b/CPP/7zip/Bundles/Format7zF/_o/VhdHandler.o new file mode 100644 index 000000000..26003c598 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/VhdHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/VhdxHandler.o b/CPP/7zip/Bundles/Format7zF/_o/VhdxHandler.o new file mode 100644 index 000000000..745974699 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/VhdxHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/VirtThread.o b/CPP/7zip/Bundles/Format7zF/_o/VirtThread.o new file mode 100644 index 000000000..4a1d66219 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/VirtThread.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/VmdkHandler.o b/CPP/7zip/Bundles/Format7zF/_o/VmdkHandler.o new file mode 100644 index 000000000..ce618b3ae Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/VmdkHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Wildcard.o b/CPP/7zip/Bundles/Format7zF/_o/Wildcard.o new file mode 100644 index 000000000..20ff7b7a8 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Wildcard.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/WimHandler.o b/CPP/7zip/Bundles/Format7zF/_o/WimHandler.o new file mode 100644 index 000000000..903115b21 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/WimHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/WimHandlerOut.o b/CPP/7zip/Bundles/Format7zF/_o/WimHandlerOut.o new file mode 100644 index 000000000..726a2659b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/WimHandlerOut.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/WimIn.o b/CPP/7zip/Bundles/Format7zF/_o/WimIn.o new file mode 100644 index 000000000..6dd354c0e Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/WimIn.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/WimRegister.o b/CPP/7zip/Bundles/Format7zF/_o/WimRegister.o new file mode 100644 index 000000000..5a735a4ce Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/WimRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/WzAes.o b/CPP/7zip/Bundles/Format7zF/_o/WzAes.o new file mode 100644 index 000000000..f9ae266d0 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/WzAes.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XarHandler.o b/CPP/7zip/Bundles/Format7zF/_o/XarHandler.o new file mode 100644 index 000000000..b685a1b0b Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XarHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XpressDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/XpressDecoder.o new file mode 100644 index 000000000..35744eff6 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XpressDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Xxh64.o b/CPP/7zip/Bundles/Format7zF/_o/Xxh64.o new file mode 100644 index 000000000..63817959c Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Xxh64.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Xxh64Reg.o b/CPP/7zip/Bundles/Format7zF/_o/Xxh64Reg.o new file mode 100644 index 000000000..e676ad699 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Xxh64Reg.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/Xz.o b/CPP/7zip/Bundles/Format7zF/_o/Xz.o new file mode 100644 index 000000000..2b6920941 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/Xz.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XzCrc64.o b/CPP/7zip/Bundles/Format7zF/_o/XzCrc64.o new file mode 100644 index 000000000..491e4acac Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XzCrc64.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XzCrc64Init.o b/CPP/7zip/Bundles/Format7zF/_o/XzCrc64Init.o new file mode 100644 index 000000000..aa72550d2 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XzCrc64Init.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XzCrc64Opt.o b/CPP/7zip/Bundles/Format7zF/_o/XzCrc64Opt.o new file mode 100644 index 000000000..bf0f85453 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XzCrc64Opt.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XzCrc64Reg.o b/CPP/7zip/Bundles/Format7zF/_o/XzCrc64Reg.o new file mode 100644 index 000000000..c67a6ed3d Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XzCrc64Reg.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XzDec.o b/CPP/7zip/Bundles/Format7zF/_o/XzDec.o new file mode 100644 index 000000000..3b6c2da9f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XzDec.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XzDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/XzDecoder.o new file mode 100644 index 000000000..8fd488799 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XzDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XzEnc.o b/CPP/7zip/Bundles/Format7zF/_o/XzEnc.o new file mode 100644 index 000000000..eddb4c188 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XzEnc.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XzEncoder.o b/CPP/7zip/Bundles/Format7zF/_o/XzEncoder.o new file mode 100644 index 000000000..169295479 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XzEncoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XzHandler.o b/CPP/7zip/Bundles/Format7zF/_o/XzHandler.o new file mode 100644 index 000000000..818b54b37 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XzHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/XzIn.o b/CPP/7zip/Bundles/Format7zF/_o/XzIn.o new file mode 100644 index 000000000..3f669bca7 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/XzIn.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/ZDecoder.o new file mode 100644 index 000000000..60ecb7264 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ZHandler.o new file mode 100644 index 000000000..bb4e259b6 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZipAddCommon.o b/CPP/7zip/Bundles/Format7zF/_o/ZipAddCommon.o new file mode 100644 index 000000000..703cf6f43 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZipAddCommon.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZipCrypto.o b/CPP/7zip/Bundles/Format7zF/_o/ZipCrypto.o new file mode 100644 index 000000000..8132e956f Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZipCrypto.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZipHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ZipHandler.o new file mode 100644 index 000000000..3deb84573 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZipHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZipHandlerOut.o b/CPP/7zip/Bundles/Format7zF/_o/ZipHandlerOut.o new file mode 100644 index 000000000..3d54fd648 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZipHandlerOut.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZipIn.o b/CPP/7zip/Bundles/Format7zF/_o/ZipIn.o new file mode 100644 index 000000000..04090a56d Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZipIn.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZipItem.o b/CPP/7zip/Bundles/Format7zF/_o/ZipItem.o new file mode 100644 index 000000000..4d66e5d72 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZipItem.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZipOut.o b/CPP/7zip/Bundles/Format7zF/_o/ZipOut.o new file mode 100644 index 000000000..bb94c7cac Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZipOut.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZipRegister.o b/CPP/7zip/Bundles/Format7zF/_o/ZipRegister.o new file mode 100644 index 000000000..bd61d7cbe Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZipRegister.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZipStrong.o b/CPP/7zip/Bundles/Format7zF/_o/ZipStrong.o new file mode 100644 index 000000000..68a88f630 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZipStrong.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZipUpdate.o b/CPP/7zip/Bundles/Format7zF/_o/ZipUpdate.o new file mode 100644 index 000000000..61b42cef9 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZipUpdate.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZlibDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/ZlibDecoder.o new file mode 100644 index 000000000..57c789bae Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZlibDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZlibEncoder.o b/CPP/7zip/Bundles/Format7zF/_o/ZlibEncoder.o new file mode 100644 index 000000000..5c0f0dd88 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZlibEncoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZstdDec.o b/CPP/7zip/Bundles/Format7zF/_o/ZstdDec.o new file mode 100644 index 000000000..a341b0de9 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZstdDec.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZstdDecoder.o b/CPP/7zip/Bundles/Format7zF/_o/ZstdDecoder.o new file mode 100644 index 000000000..bbcbb638a Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZstdDecoder.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/ZstdHandler.o b/CPP/7zip/Bundles/Format7zF/_o/ZstdHandler.o new file mode 100644 index 000000000..ac8a6e989 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/ZstdHandler.o differ diff --git a/CPP/7zip/Bundles/Format7zF/_o/resource.o b/CPP/7zip/Bundles/Format7zF/_o/resource.o new file mode 100644 index 000000000..368481b53 Binary files /dev/null and b/CPP/7zip/Bundles/Format7zF/_o/resource.o differ diff --git a/CPP/7zip/Common/FilterCoder.cpp b/CPP/7zip/Common/FilterCoder.cpp index 8d7e0dccf..eaf63adf9 100644 --- a/CPP/7zip/Common/FilterCoder.cpp +++ b/CPP/7zip/Common/FilterCoder.cpp @@ -53,7 +53,10 @@ HRESULT CFilterCoder::Alloc() /* minimal bufSize is 16 bytes for AES and IA64 filter. bufSize for AES must be aligned for 16 bytes. We use (1 << 12) min size to support future aligned filters. */ - const UInt32 kMinSize = 1 << 12; + // This fork includes Transpose, whose largest complete block is 64 KiB. + // Every call path (Code, Read and Write) must hold at least one block. + // Smaller buffers can otherwise stall or pass untransformed data through. + const UInt32 kMinSize = 1 << 16; size &= ~(UInt32)(kMinSize - 1); if (size < kMinSize) size = kMinSize; diff --git a/CPP/7zip/Compress/TransposeFilter.cpp b/CPP/7zip/Compress/TransposeFilter.cpp new file mode 100644 index 000000000..27ab5dee4 --- /dev/null +++ b/CPP/7zip/Compress/TransposeFilter.cpp @@ -0,0 +1,201 @@ +// TransposeFilter.cpp -- filtre de transposition par octet pour enregistrements de taille fixe + +#include "StdAfx.h" + +#include "../../../C/Transpose.h" + +#include "../../Common/MyBuffer.h" +#include "../../Common/MyCom.h" + +#include "../ICoder.h" + +#include "../Common/RegisterCodec.h" + +namespace NCompress { +namespace NTranspose { + +struct CTranspose +{ + // _R == 0 : mode AUTOMATIQUE, la periode sera devinee sur les premieres + // donnees vues puis figee pour tout le flux. + unsigned _R; + unsigned _stepExp; + unsigned _requestedR; + unsigned _exp; // budget de bloc cote encodeur, pas une propriete du flux + unsigned _measure; // 0 = heuristique (rapide), 1 = on mesure vraiment + CByteBuffer _tmp; + CTranspose(): _R(0), _stepExp(0), _requestedR(0), _exp(TRANSPOSE_EXP_DEF), _measure(0) {} + Byte *Tmp(size_t need) + { + if (_tmp.Size() < need) + _tmp.Alloc(need); + return (Byte *)_tmp; + } +}; + +#ifndef Z7_EXTRACT_ONLY + +class CEncoder Z7_final: + public ICompressFilter, + public ICompressSetCoderProperties, + public ICompressSetCoderPropertiesOpt, + public ICompressWriteCoderProperties, + public CMyUnknownImp, + CTranspose +{ + Z7_IFACES_IMP_UNK_4( + ICompressFilter, + ICompressSetCoderProperties, + ICompressSetCoderPropertiesOpt, + ICompressWriteCoderProperties) +}; + +// 7-Zip annonce ici la taille du flux a venir : c'est ce qui permet de choisir +// une taille de bloc adaptee plutot qu'une constante unique. +Z7_COM7F_IMF(CEncoder::SetCoderPropertiesOpt(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps)) +{ + for (UInt32 i = 0; i < numProps; i++) + if (propIDs[i] == NCoderPropID::kExpectedDataSize && props[i].vt == VT_UI8) + _exp = Transpose_PickExp(props[i].uhVal.QuadPart); + return S_OK; +} + +Z7_COM7F_IMF(CEncoder::Init()) +{ + _R = _requestedR; + if (_R) _stepExp = Transpose_StepExp(_R, _exp); + return S_OK; +} + +Z7_COM7F_IMF2(UInt32, CEncoder::Filter(Byte *data, UInt32 size)) +{ + // Mode automatique : on devine la periode sur le premier bloc vu, puis on la + // fige. 7-Zip (v23+) reecrit les proprietes du codec APRES Code(), donc le R + // decouvert ici sera bien inscrit dans l'archive. + if (_R == 0) + { + // On ne fige la decision qu'avec assez de donnees sous les yeux ; sinon on + // rend la main pour etre rappele avec un tampon plus grand. Le seuil est + // la taille de bloc choisie, pas l'echantillon d'analyse : un petit + // fichier doit pouvoir beneficier du filtre lui aussi. + if (size < ((SizeT)1 << _exp)) + return 0; + _R = _measure ? Transpose_MeasureR(data, size, _exp, + (_measure == 2) ? TRANSPOSE_PROBE_LZMA : TRANSPOSE_PROBE_PPMD) + : Transpose_DetectR(data, size); + _stepExp = Transpose_StepExp(_R, _exp); + } + + // Aucune periode franche : on ne touche a rien. Le filtre est alors neutre + // et ne peut pas degrader la compression. + if (_R == 1) + return size; + + // en dessous d'un bloc complet, on ne convertit rien + if (_R == 0 || size < ((SizeT)_R << _stepExp)) + return 0; + const SizeT used = Transpose_Convert(_R, _stepExp, data, size, Tmp(TRANSPOSE_BLOCK), 1); + return (UInt32)used; +} + +Z7_COM7F_IMF(CEncoder::SetCoderProperties(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps)) +{ + unsigned R = 0; + for (UInt32 i = 0; i < numProps; i++) + { + const PROPVARIANT &prop = props[i]; + const PROPID propID = propIDs[i]; + if (propID >= NCoderPropID::kReduceSize) + continue; + if (prop.vt != VT_UI4) + return E_INVALIDARG; + switch (propID) + { + case NCoderPropID::kDefaultProp: + if (prop.ulVal < TRANSPOSE_MIN_R || prop.ulVal > TRANSPOSE_MAX_R) + return E_INVALIDARG; + R = prop.ulVal; + break; + case NCoderPropID::kAlgorithm: + // a=0 : heuristique rapide. Elle se trompe lourdement (mesure : 13 cas + // sur 40, jusqu'a +2245 %). Ne pas l'utiliser par defaut. + // a=1 : on MESURE sur l'echantillon vu par le filtre, sonde PPMd. + // a=2 : idem, sonde LZMA. + // a=3 : on decide dans une passe prealable sur le fichier ENTIER. + // Normalement Update.cpp resout a=3 en un R concret avant que le + // filtre ne le voie. Si le filtre le recoit quand meme — cas d'un + // 7zFM/7zG d'origine, sans la passe — on retombe sur a=1 plutot + // que d'echouer : moins bon, mais fonctionnel. + if (prop.ulVal > 3) + return E_INVALIDARG; + _measure = (prop.ulVal == 3) ? 1 : prop.ulVal; + break; + case NCoderPropID::kNumThreads: break; + case NCoderPropID::kLevel: break; + default: return E_INVALIDARG; + } + } + _requestedR = _R = R; + return S_OK; +} + +Z7_COM7F_IMF(CEncoder::WriteCoderProperties(ISequentialOutStream *outStream)) +{ + // _R == 0 signifie que Filter() n'a jamais rien vu (flux vide) : on inscrit + // l'identite, jamais une valeur non initialisee. + const unsigned r = (_R == 0) ? 1 : _R; + Byte prop[2]; + prop[0] = (Byte)(r - 1); + prop[1] = (Byte)(_R ? _stepExp : 0); + return outStream->Write(prop, 2, NULL); +} + +#endif + +class CDecoder Z7_final: + public ICompressFilter, + public ICompressSetDecoderProperties2, + public CMyUnknownImp, + CTranspose +{ + Z7_IFACES_IMP_UNK_2( + ICompressFilter, + ICompressSetDecoderProperties2) +}; + +Z7_COM7F_IMF(CDecoder::Init()) { return S_OK; } + +Z7_COM7F_IMF2(UInt32, CDecoder::Filter(Byte *data, UInt32 size)) +{ + if (_R == 1) + return size; + if (_R == 0) return 0; + if (size < ((SizeT)_R << _stepExp)) + return 0; + const SizeT used = Transpose_Convert(_R, _stepExp, data, size, Tmp(TRANSPOSE_BLOCK), 0); + return (UInt32)used; +} + +Z7_COM7F_IMF(CDecoder::SetDecoderProperties2(const Byte *props, UInt32 size)) +{ + // New allocated method ID: exactly two bytes, no legacy property layouts. + _R = 0; + if (size != 2 || props[1] > TRANSPOSE_EXP_MAX) + return E_INVALIDARG; + const unsigned R = (unsigned)props[0] + 1; + if (((SizeT)R << props[1]) > TRANSPOSE_BLOCK) + return E_INVALIDARG; + _R = R; + _stepExp = props[1]; + return S_OK; +} + +// Allocated by Igor Pavlov in https://github.com/ip7z/7zip/pull/245. +#define Z7_ID_TRANSPOSE 0x04F71301 + +REGISTER_FILTER_E(Transpose, + CDecoder(), + CEncoder(), + Z7_ID_TRANSPOSE, "Transpose") + +}} diff --git a/CPP/7zip/UI/Common/Update.cpp b/CPP/7zip/UI/Common/Update.cpp index 1c2754e9a..b4f67280e 100644 --- a/CPP/7zip/UI/Common/Update.cpp +++ b/CPP/7zip/UI/Common/Update.cpp @@ -2,6 +2,11 @@ #include "StdAfx.h" +#include "../../../../C/Alloc.h" +#include "../../../../C/Transpose.h" + +#include "../../../Common/IntToString.h" + // #include #include "Update.h" @@ -344,6 +349,125 @@ int FindAltStreamColon_in_Path(const wchar_t *path); + +/* --- Passe prealable pour le filtre Transpose ------------------------------- + Le filtre ne peut pas choisir R tout seul : en flux il ne voit jamais plus + que le tampon de FilterCoder, et le verdict s'inverse avec la taille de + l'echantillon. Ici on a le fichier, on le lit et on tranche par des + compressions reelles ou R=1 est toujours en lice. + Declencheur : -m0=Transpose:a=3 (ou toute position). */ + +static bool Transpose_IsAutoValue(const UString &v) +{ + UString s = v; + s.MakeLower_Ascii(); + return s.IsPrefixedBy_Ascii_NoCase("transpose") && s.Find(L"a=3") >= 0; +} + +/* Pont entre la barre de progression de 7-Zip et la passe de mesure. Sans lui + la fenetre affiche « Compression » a 0 % pendant toute la mesure, sans + bouger et sans pouvoir etre annulee. Les points de travail rendus par + Transpose.c sont abstraits : on les remet a l'echelle des octets examines, + seule unite que la fenetre sait afficher. */ +struct CTransposeProgress +{ + ITransposeProgress vt; // doit rester le premier membre + IUpdateCallbackUI *callback; + UInt64 scale; + bool totalSet; +}; + +static int Transpose_ProgressCb(ITransposeProgress *p, UInt64 done, UInt64 total) +{ + CTransposeProgress *self = (CTransposeProgress *)(void *)p; + if (!self->callback || total == 0) + return 0; + if (!self->totalSet) + { + self->totalSet = true; + if (self->callback->SetTotal(self->scale) != S_OK) + return 1; + } + { + const UInt64 cur = (UInt64)((double)done / (double)total * (double)self->scale); + if (self->callback->SetCompleted(&cur) != S_OK) + return 1; + } + return self->callback->CheckBreak() == S_OK ? 0 : 1; +} + +static void Transpose_ResolveAuto( + CObjectVector &props, + const CDirItems &dirItems, + IUpdateCallbackUI *callback) +{ + unsigned iProp; + int found = -1; + for (iProp = 0; iProp < props.Size(); iProp++) + if (Transpose_IsAutoValue(props[iProp].Value)) + { found = (int)iProp; break; } + if (found < 0) + return; + + // on decide d'apres le plus gros fichier a compresser + unsigned bestIdx = 0; + UInt64 bestSize = 0; + unsigned i; + for (i = 0; i < dirItems.Items.Size(); i++) + { + const CDirItem &di = dirItems.Items[i]; + if (di.IsDir()) + continue; + if (di.Size > bestSize) { bestSize = di.Size; bestIdx = i; } + } + + // Match the following coder's family. This remains a probe: dictionary, + // solid boundaries and a prefix-only decision can change the final result. + unsigned probe = TRANSPOSE_PROBE_LZMA; + for (unsigned j = 0; j < props.Size(); j++) + if (props[j].Value.IsPrefixedBy_Ascii_NoCase("PPMd")) + probe = TRANSPOSE_PROBE_PPMD; + + unsigned R = 1; + if (bestSize >= 4 * TRANSPOSE_MAX_R) + { + const size_t lim = (size_t)TRANSPOSE_FULL_LIMIT; + const int partial = (bestSize > lim) ? 1 : 0; + const size_t n = partial ? lim : (size_t)bestSize; + Byte *buf = (Byte *)MyAlloc(n); + if (buf) + { + NIO::CInFile file; + if (file.Open(dirItems.GetPhyPath(bestIdx))) + { + size_t got = 0; + if (file.ReadFull(buf, n, got) && got >= 4 * TRANSPOSE_MAX_R) + { + const unsigned exp = Transpose_PickExp(bestSize); + CTransposeProgress prog; + prog.vt.Progress = Transpose_ProgressCb; + prog.callback = callback; + prog.scale = got; + prog.totalSet = false; + R = Transpose_ChooseR_Full(buf, got, exp, probe, partial, &prog.vt); + } + } + MyFree(buf); + } + } + + if (R <= 1) + props.Delete((unsigned)found); // rien a gagner : on retire le filtre + else + { + char tmp[16]; + ConvertUInt32ToString((UInt32)R, tmp); + UString v ("Transpose:"); + v += tmp; + props[(unsigned)found].Value = v; + } +} + static HRESULT Compress( const CUpdateOptions &options, bool isUpdatingItself, @@ -394,7 +518,9 @@ static HRESULT Compress( throw kUpdateIsNotSupoorted; // we need to set properties to get fileTimeType. - RINOK(SetProperties(outArchive, options.MethodMode.Properties)) + CObjectVector methodProps = options.MethodMode.Properties; + Transpose_ResolveAuto(methodProps, dirItems, callback); + RINOK(SetProperties(outArchive, methodProps)) NFileTimeType::EEnum fileTimeType; { diff --git a/CPP/7zip/UI/Common/ZipRegistry.cpp b/CPP/7zip/UI/Common/ZipRegistry.cpp index 936b8881b..e32036f98 100644 --- a/CPP/7zip/UI/Common/ZipRegistry.cpp +++ b/CPP/7zip/UI/Common/ZipRegistry.cpp @@ -284,6 +284,7 @@ void CInfo::Save() const fk.Create(optionsKey, fo.FormatID); SetRegString(fk, kMethod, fo.Method); + SetRegString(fk, L"Filter", fo.Filter); SetRegString(fk, kOptions, fo.Options); SetRegString(fk, kEncryptionMethod, fo.EncryptionMethod); SetRegString(fk, kMemUse, fo.MemUse); @@ -342,6 +343,7 @@ void CInfo::Load() if (fk.Open(optionsKey, fo.FormatID, KEY_READ) == ERROR_SUCCESS) { GetRegString(fk, kMethod, fo.Method); + GetRegString(fk, L"Filter", fo.Filter); GetRegString(fk, kOptions, fo.Options); GetRegString(fk, kEncryptionMethod, fo.EncryptionMethod); GetRegString(fk, kMemUse, fo.MemUse); diff --git a/CPP/7zip/UI/Common/ZipRegistry.h b/CPP/7zip/UI/Common/ZipRegistry.h index ce084f4ea..f3333ab73 100644 --- a/CPP/7zip/UI/Common/ZipRegistry.h +++ b/CPP/7zip/UI/Common/ZipRegistry.h @@ -97,6 +97,7 @@ namespace NCompression CSysString FormatID; UString Method; + UString Filter; UString Options; UString EncryptionMethod; UString MemUse; @@ -122,6 +123,7 @@ namespace NCompression BlockLogSize = NumThreads = Level = Dictionary = Order = (UInt32)(Int32)-1; // DictionaryChain = (UInt32)(Int32)-1; Method.Empty(); + Filter.Empty(); // Options.Empty(); // EncryptionMethod.Empty(); } diff --git a/CPP/7zip/UI/Console/_o/7z.exe b/CPP/7zip/UI/Console/_o/7z.exe new file mode 100755 index 000000000..61e31af57 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/7z.exe differ diff --git a/CPP/7zip/UI/Console/_o/7zCrc.o b/CPP/7zip/UI/Console/_o/7zCrc.o new file mode 100644 index 000000000..9c365c132 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/7zCrc.o differ diff --git a/CPP/7zip/UI/Console/_o/7zCrcOpt.o b/CPP/7zip/UI/Console/_o/7zCrcOpt.o new file mode 100644 index 000000000..8cb0861f2 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/7zCrcOpt.o differ diff --git a/CPP/7zip/UI/Console/_o/Alloc.o b/CPP/7zip/UI/Console/_o/Alloc.o new file mode 100644 index 000000000..fc8bf76c5 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Alloc.o differ diff --git a/CPP/7zip/UI/Console/_o/ArchiveCommandLine.o b/CPP/7zip/UI/Console/_o/ArchiveCommandLine.o new file mode 100644 index 000000000..1df059d45 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/ArchiveCommandLine.o differ diff --git a/CPP/7zip/UI/Console/_o/ArchiveExtractCallback.o b/CPP/7zip/UI/Console/_o/ArchiveExtractCallback.o new file mode 100644 index 000000000..1452c0560 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/ArchiveExtractCallback.o differ diff --git a/CPP/7zip/UI/Console/_o/ArchiveOpenCallback.o b/CPP/7zip/UI/Console/_o/ArchiveOpenCallback.o new file mode 100644 index 000000000..3e1ebd4e6 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/ArchiveOpenCallback.o differ diff --git a/CPP/7zip/UI/Console/_o/Bench.o b/CPP/7zip/UI/Console/_o/Bench.o new file mode 100644 index 000000000..fea5b3f82 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Bench.o differ diff --git a/CPP/7zip/UI/Console/_o/BenchCon.o b/CPP/7zip/UI/Console/_o/BenchCon.o new file mode 100644 index 000000000..a0c8f2739 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/BenchCon.o differ diff --git a/CPP/7zip/UI/Console/_o/CRC.o b/CPP/7zip/UI/Console/_o/CRC.o new file mode 100644 index 000000000..d634888ad Binary files /dev/null and b/CPP/7zip/UI/Console/_o/CRC.o differ diff --git a/CPP/7zip/UI/Console/_o/CWrappers.o b/CPP/7zip/UI/Console/_o/CWrappers.o new file mode 100644 index 000000000..08ade51f9 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/CWrappers.o differ diff --git a/CPP/7zip/UI/Console/_o/CommandLineParser.o b/CPP/7zip/UI/Console/_o/CommandLineParser.o new file mode 100644 index 000000000..f498fde53 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/CommandLineParser.o differ diff --git a/CPP/7zip/UI/Console/_o/ConsoleClose.o b/CPP/7zip/UI/Console/_o/ConsoleClose.o new file mode 100644 index 000000000..90b1888e3 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/ConsoleClose.o differ diff --git a/CPP/7zip/UI/Console/_o/CopyCoder.o b/CPP/7zip/UI/Console/_o/CopyCoder.o new file mode 100644 index 000000000..61f6f0cd0 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/CopyCoder.o differ diff --git a/CPP/7zip/UI/Console/_o/CpuArch.o b/CPP/7zip/UI/Console/_o/CpuArch.o new file mode 100644 index 000000000..1758820d2 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/CpuArch.o differ diff --git a/CPP/7zip/UI/Console/_o/CrcReg.o b/CPP/7zip/UI/Console/_o/CrcReg.o new file mode 100644 index 000000000..689cac4d8 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/CrcReg.o differ diff --git a/CPP/7zip/UI/Console/_o/CreateCoder.o b/CPP/7zip/UI/Console/_o/CreateCoder.o new file mode 100644 index 000000000..f4b287e4b Binary files /dev/null and b/CPP/7zip/UI/Console/_o/CreateCoder.o differ diff --git a/CPP/7zip/UI/Console/_o/DLL.o b/CPP/7zip/UI/Console/_o/DLL.o new file mode 100644 index 000000000..3c68234b3 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/DLL.o differ diff --git a/CPP/7zip/UI/Console/_o/DefaultName.o b/CPP/7zip/UI/Console/_o/DefaultName.o new file mode 100644 index 000000000..f9c2edcfc Binary files /dev/null and b/CPP/7zip/UI/Console/_o/DefaultName.o differ diff --git a/CPP/7zip/UI/Console/_o/DllSecur.o b/CPP/7zip/UI/Console/_o/DllSecur.o new file mode 100644 index 000000000..e851115fc Binary files /dev/null and b/CPP/7zip/UI/Console/_o/DllSecur.o differ diff --git a/CPP/7zip/UI/Console/_o/DynLimBuf.o b/CPP/7zip/UI/Console/_o/DynLimBuf.o new file mode 100644 index 000000000..f60af113e Binary files /dev/null and b/CPP/7zip/UI/Console/_o/DynLimBuf.o differ diff --git a/CPP/7zip/UI/Console/_o/EnumDirItems.o b/CPP/7zip/UI/Console/_o/EnumDirItems.o new file mode 100644 index 000000000..205ea0d7c Binary files /dev/null and b/CPP/7zip/UI/Console/_o/EnumDirItems.o differ diff --git a/CPP/7zip/UI/Console/_o/ErrorMsg.o b/CPP/7zip/UI/Console/_o/ErrorMsg.o new file mode 100644 index 000000000..1459cc7be Binary files /dev/null and b/CPP/7zip/UI/Console/_o/ErrorMsg.o differ diff --git a/CPP/7zip/UI/Console/_o/Extract.o b/CPP/7zip/UI/Console/_o/Extract.o new file mode 100644 index 000000000..c0f187a33 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Extract.o differ diff --git a/CPP/7zip/UI/Console/_o/ExtractCallbackConsole.o b/CPP/7zip/UI/Console/_o/ExtractCallbackConsole.o new file mode 100644 index 000000000..6f18c132f Binary files /dev/null and b/CPP/7zip/UI/Console/_o/ExtractCallbackConsole.o differ diff --git a/CPP/7zip/UI/Console/_o/ExtractingFilePath.o b/CPP/7zip/UI/Console/_o/ExtractingFilePath.o new file mode 100644 index 000000000..187913aac Binary files /dev/null and b/CPP/7zip/UI/Console/_o/ExtractingFilePath.o differ diff --git a/CPP/7zip/UI/Console/_o/FileDir.o b/CPP/7zip/UI/Console/_o/FileDir.o new file mode 100644 index 000000000..9312993a5 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/FileDir.o differ diff --git a/CPP/7zip/UI/Console/_o/FileFind.o b/CPP/7zip/UI/Console/_o/FileFind.o new file mode 100644 index 000000000..930919f0a Binary files /dev/null and b/CPP/7zip/UI/Console/_o/FileFind.o differ diff --git a/CPP/7zip/UI/Console/_o/FileIO.o b/CPP/7zip/UI/Console/_o/FileIO.o new file mode 100644 index 000000000..fd7ba68b9 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/FileIO.o differ diff --git a/CPP/7zip/UI/Console/_o/FileLink.o b/CPP/7zip/UI/Console/_o/FileLink.o new file mode 100644 index 000000000..d30684ebf Binary files /dev/null and b/CPP/7zip/UI/Console/_o/FileLink.o differ diff --git a/CPP/7zip/UI/Console/_o/FileName.o b/CPP/7zip/UI/Console/_o/FileName.o new file mode 100644 index 000000000..591a01021 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/FileName.o differ diff --git a/CPP/7zip/UI/Console/_o/FilePathAutoRename.o b/CPP/7zip/UI/Console/_o/FilePathAutoRename.o new file mode 100644 index 000000000..2d15ae2b4 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/FilePathAutoRename.o differ diff --git a/CPP/7zip/UI/Console/_o/FileStreams.o b/CPP/7zip/UI/Console/_o/FileStreams.o new file mode 100644 index 000000000..6a5b8c978 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/FileStreams.o differ diff --git a/CPP/7zip/UI/Console/_o/FileSystem.o b/CPP/7zip/UI/Console/_o/FileSystem.o new file mode 100644 index 000000000..96feb2944 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/FileSystem.o differ diff --git a/CPP/7zip/UI/Console/_o/FilterCoder.o b/CPP/7zip/UI/Console/_o/FilterCoder.o new file mode 100644 index 000000000..0b6e625a8 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/FilterCoder.o differ diff --git a/CPP/7zip/UI/Console/_o/HashCalc.o b/CPP/7zip/UI/Console/_o/HashCalc.o new file mode 100644 index 000000000..eb403c226 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/HashCalc.o differ diff --git a/CPP/7zip/UI/Console/_o/HashCon.o b/CPP/7zip/UI/Console/_o/HashCon.o new file mode 100644 index 000000000..14597444b Binary files /dev/null and b/CPP/7zip/UI/Console/_o/HashCon.o differ diff --git a/CPP/7zip/UI/Console/_o/InBuffer.o b/CPP/7zip/UI/Console/_o/InBuffer.o new file mode 100644 index 000000000..b76d2d4e5 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/InBuffer.o differ diff --git a/CPP/7zip/UI/Console/_o/InOutTempBuffer.o b/CPP/7zip/UI/Console/_o/InOutTempBuffer.o new file mode 100644 index 000000000..cd50a444c Binary files /dev/null and b/CPP/7zip/UI/Console/_o/InOutTempBuffer.o differ diff --git a/CPP/7zip/UI/Console/_o/IntToString.o b/CPP/7zip/UI/Console/_o/IntToString.o new file mode 100644 index 000000000..70da5a4af Binary files /dev/null and b/CPP/7zip/UI/Console/_o/IntToString.o differ diff --git a/CPP/7zip/UI/Console/_o/ItemNameUtils.o b/CPP/7zip/UI/Console/_o/ItemNameUtils.o new file mode 100644 index 000000000..299e5aa76 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/ItemNameUtils.o differ diff --git a/CPP/7zip/UI/Console/_o/LimitedStreams.o b/CPP/7zip/UI/Console/_o/LimitedStreams.o new file mode 100644 index 000000000..10cc9f3ee Binary files /dev/null and b/CPP/7zip/UI/Console/_o/LimitedStreams.o differ diff --git a/CPP/7zip/UI/Console/_o/List.o b/CPP/7zip/UI/Console/_o/List.o new file mode 100644 index 000000000..dec408b0a Binary files /dev/null and b/CPP/7zip/UI/Console/_o/List.o differ diff --git a/CPP/7zip/UI/Console/_o/ListFileUtils.o b/CPP/7zip/UI/Console/_o/ListFileUtils.o new file mode 100644 index 000000000..d8b4622f6 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/ListFileUtils.o differ diff --git a/CPP/7zip/UI/Console/_o/LoadCodecs.o b/CPP/7zip/UI/Console/_o/LoadCodecs.o new file mode 100644 index 000000000..a781f56b6 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/LoadCodecs.o differ diff --git a/CPP/7zip/UI/Console/_o/LzFind.o b/CPP/7zip/UI/Console/_o/LzFind.o new file mode 100644 index 000000000..5bcd2ae17 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/LzFind.o differ diff --git a/CPP/7zip/UI/Console/_o/LzFindMt.o b/CPP/7zip/UI/Console/_o/LzFindMt.o new file mode 100644 index 000000000..9c4c0d5e4 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/LzFindMt.o differ diff --git a/CPP/7zip/UI/Console/_o/LzFindOpt.o b/CPP/7zip/UI/Console/_o/LzFindOpt.o new file mode 100644 index 000000000..fb66df33c Binary files /dev/null and b/CPP/7zip/UI/Console/_o/LzFindOpt.o differ diff --git a/CPP/7zip/UI/Console/_o/LzmaEnc.o b/CPP/7zip/UI/Console/_o/LzmaEnc.o new file mode 100644 index 000000000..0c7a7cda6 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/LzmaEnc.o differ diff --git a/CPP/7zip/UI/Console/_o/Main.o b/CPP/7zip/UI/Console/_o/Main.o new file mode 100644 index 000000000..ac1240136 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Main.o differ diff --git a/CPP/7zip/UI/Console/_o/MainAr.o b/CPP/7zip/UI/Console/_o/MainAr.o new file mode 100644 index 000000000..12b1a7270 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/MainAr.o differ diff --git a/CPP/7zip/UI/Console/_o/MemoryLock.o b/CPP/7zip/UI/Console/_o/MemoryLock.o new file mode 100644 index 000000000..50a350b97 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/MemoryLock.o differ diff --git a/CPP/7zip/UI/Console/_o/MethodId.o b/CPP/7zip/UI/Console/_o/MethodId.o new file mode 100644 index 000000000..62c021adf Binary files /dev/null and b/CPP/7zip/UI/Console/_o/MethodId.o differ diff --git a/CPP/7zip/UI/Console/_o/MethodProps.o b/CPP/7zip/UI/Console/_o/MethodProps.o new file mode 100644 index 000000000..c87f8b14f Binary files /dev/null and b/CPP/7zip/UI/Console/_o/MethodProps.o differ diff --git a/CPP/7zip/UI/Console/_o/MultiOutStream.o b/CPP/7zip/UI/Console/_o/MultiOutStream.o new file mode 100644 index 000000000..fe96d809d Binary files /dev/null and b/CPP/7zip/UI/Console/_o/MultiOutStream.o differ diff --git a/CPP/7zip/UI/Console/_o/MyString.o b/CPP/7zip/UI/Console/_o/MyString.o new file mode 100644 index 000000000..f57bd7d08 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/MyString.o differ diff --git a/CPP/7zip/UI/Console/_o/MyVector.o b/CPP/7zip/UI/Console/_o/MyVector.o new file mode 100644 index 000000000..7493ed7c7 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/MyVector.o differ diff --git a/CPP/7zip/UI/Console/_o/NewHandler.o b/CPP/7zip/UI/Console/_o/NewHandler.o new file mode 100644 index 000000000..59c88e52c Binary files /dev/null and b/CPP/7zip/UI/Console/_o/NewHandler.o differ diff --git a/CPP/7zip/UI/Console/_o/OffsetStream.o b/CPP/7zip/UI/Console/_o/OffsetStream.o new file mode 100644 index 000000000..2532633b3 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/OffsetStream.o differ diff --git a/CPP/7zip/UI/Console/_o/OpenArchive.o b/CPP/7zip/UI/Console/_o/OpenArchive.o new file mode 100644 index 000000000..01a9d49b2 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/OpenArchive.o differ diff --git a/CPP/7zip/UI/Console/_o/OpenCallbackConsole.o b/CPP/7zip/UI/Console/_o/OpenCallbackConsole.o new file mode 100644 index 000000000..ad8059bf8 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/OpenCallbackConsole.o differ diff --git a/CPP/7zip/UI/Console/_o/OutBuffer.o b/CPP/7zip/UI/Console/_o/OutBuffer.o new file mode 100644 index 000000000..3dda2264d Binary files /dev/null and b/CPP/7zip/UI/Console/_o/OutBuffer.o differ diff --git a/CPP/7zip/UI/Console/_o/PercentPrinter.o b/CPP/7zip/UI/Console/_o/PercentPrinter.o new file mode 100644 index 000000000..a4cbe59a9 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/PercentPrinter.o differ diff --git a/CPP/7zip/UI/Console/_o/Ppmd7.o b/CPP/7zip/UI/Console/_o/Ppmd7.o new file mode 100644 index 000000000..f51345f1f Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Ppmd7.o differ diff --git a/CPP/7zip/UI/Console/_o/Ppmd7Enc.o b/CPP/7zip/UI/Console/_o/Ppmd7Enc.o new file mode 100644 index 000000000..af48c0d49 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Ppmd7Enc.o differ diff --git a/CPP/7zip/UI/Console/_o/ProgressUtils.o b/CPP/7zip/UI/Console/_o/ProgressUtils.o new file mode 100644 index 000000000..c5f245493 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/ProgressUtils.o differ diff --git a/CPP/7zip/UI/Console/_o/PropIDUtils.o b/CPP/7zip/UI/Console/_o/PropIDUtils.o new file mode 100644 index 000000000..a8586bbf2 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/PropIDUtils.o differ diff --git a/CPP/7zip/UI/Console/_o/PropId.o b/CPP/7zip/UI/Console/_o/PropId.o new file mode 100644 index 000000000..edffc734d Binary files /dev/null and b/CPP/7zip/UI/Console/_o/PropId.o differ diff --git a/CPP/7zip/UI/Console/_o/PropVariant.o b/CPP/7zip/UI/Console/_o/PropVariant.o new file mode 100644 index 000000000..c7568f1f9 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/PropVariant.o differ diff --git a/CPP/7zip/UI/Console/_o/PropVariantConv.o b/CPP/7zip/UI/Console/_o/PropVariantConv.o new file mode 100644 index 000000000..0fc3de1e8 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/PropVariantConv.o differ diff --git a/CPP/7zip/UI/Console/_o/Registry.o b/CPP/7zip/UI/Console/_o/Registry.o new file mode 100644 index 000000000..93aad04c6 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Registry.o differ diff --git a/CPP/7zip/UI/Console/_o/SetProperties.o b/CPP/7zip/UI/Console/_o/SetProperties.o new file mode 100644 index 000000000..add471316 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/SetProperties.o differ diff --git a/CPP/7zip/UI/Console/_o/Sort.o b/CPP/7zip/UI/Console/_o/Sort.o new file mode 100644 index 000000000..f76fbbb8f Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Sort.o differ diff --git a/CPP/7zip/UI/Console/_o/SortUtils.o b/CPP/7zip/UI/Console/_o/SortUtils.o new file mode 100644 index 000000000..dde551509 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/SortUtils.o differ diff --git a/CPP/7zip/UI/Console/_o/StdInStream.o b/CPP/7zip/UI/Console/_o/StdInStream.o new file mode 100644 index 000000000..9b99514bb Binary files /dev/null and b/CPP/7zip/UI/Console/_o/StdInStream.o differ diff --git a/CPP/7zip/UI/Console/_o/StdOutStream.o b/CPP/7zip/UI/Console/_o/StdOutStream.o new file mode 100644 index 000000000..019ab9f40 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/StdOutStream.o differ diff --git a/CPP/7zip/UI/Console/_o/StreamObjects.o b/CPP/7zip/UI/Console/_o/StreamObjects.o new file mode 100644 index 000000000..8fcaaa128 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/StreamObjects.o differ diff --git a/CPP/7zip/UI/Console/_o/StreamUtils.o b/CPP/7zip/UI/Console/_o/StreamUtils.o new file mode 100644 index 000000000..0df5c12af Binary files /dev/null and b/CPP/7zip/UI/Console/_o/StreamUtils.o differ diff --git a/CPP/7zip/UI/Console/_o/StringConvert.o b/CPP/7zip/UI/Console/_o/StringConvert.o new file mode 100644 index 000000000..f7ec3f424 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/StringConvert.o differ diff --git a/CPP/7zip/UI/Console/_o/StringToInt.o b/CPP/7zip/UI/Console/_o/StringToInt.o new file mode 100644 index 000000000..2bba1530c Binary files /dev/null and b/CPP/7zip/UI/Console/_o/StringToInt.o differ diff --git a/CPP/7zip/UI/Console/_o/Synchronization.o b/CPP/7zip/UI/Console/_o/Synchronization.o new file mode 100644 index 000000000..29395b79b Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Synchronization.o differ diff --git a/CPP/7zip/UI/Console/_o/System.o b/CPP/7zip/UI/Console/_o/System.o new file mode 100644 index 000000000..84a316acb Binary files /dev/null and b/CPP/7zip/UI/Console/_o/System.o differ diff --git a/CPP/7zip/UI/Console/_o/SystemInfo.o b/CPP/7zip/UI/Console/_o/SystemInfo.o new file mode 100644 index 000000000..7a4ee2f6f Binary files /dev/null and b/CPP/7zip/UI/Console/_o/SystemInfo.o differ diff --git a/CPP/7zip/UI/Console/_o/TempFiles.o b/CPP/7zip/UI/Console/_o/TempFiles.o new file mode 100644 index 000000000..dd2981897 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/TempFiles.o differ diff --git a/CPP/7zip/UI/Console/_o/Threads.o b/CPP/7zip/UI/Console/_o/Threads.o new file mode 100644 index 000000000..5839e38e5 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Threads.o differ diff --git a/CPP/7zip/UI/Console/_o/TimeUtils.o b/CPP/7zip/UI/Console/_o/TimeUtils.o new file mode 100644 index 000000000..837fc0902 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/TimeUtils.o differ diff --git a/CPP/7zip/UI/Console/_o/Transpose.o b/CPP/7zip/UI/Console/_o/Transpose.o new file mode 100644 index 000000000..9b86fe72f Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Transpose.o differ diff --git a/CPP/7zip/UI/Console/_o/UTFConvert.o b/CPP/7zip/UI/Console/_o/UTFConvert.o new file mode 100644 index 000000000..84ac1ac02 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/UTFConvert.o differ diff --git a/CPP/7zip/UI/Console/_o/UniqBlocks.o b/CPP/7zip/UI/Console/_o/UniqBlocks.o new file mode 100644 index 000000000..7a35445fb Binary files /dev/null and b/CPP/7zip/UI/Console/_o/UniqBlocks.o differ diff --git a/CPP/7zip/UI/Console/_o/Update.o b/CPP/7zip/UI/Console/_o/Update.o new file mode 100644 index 000000000..0bbaf6548 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Update.o differ diff --git a/CPP/7zip/UI/Console/_o/UpdateAction.o b/CPP/7zip/UI/Console/_o/UpdateAction.o new file mode 100644 index 000000000..3a9f43337 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/UpdateAction.o differ diff --git a/CPP/7zip/UI/Console/_o/UpdateCallback.o b/CPP/7zip/UI/Console/_o/UpdateCallback.o new file mode 100644 index 000000000..24e557b1e Binary files /dev/null and b/CPP/7zip/UI/Console/_o/UpdateCallback.o differ diff --git a/CPP/7zip/UI/Console/_o/UpdateCallbackConsole.o b/CPP/7zip/UI/Console/_o/UpdateCallbackConsole.o new file mode 100644 index 000000000..e53590d0d Binary files /dev/null and b/CPP/7zip/UI/Console/_o/UpdateCallbackConsole.o differ diff --git a/CPP/7zip/UI/Console/_o/UpdatePair.o b/CPP/7zip/UI/Console/_o/UpdatePair.o new file mode 100644 index 000000000..ab1a2784b Binary files /dev/null and b/CPP/7zip/UI/Console/_o/UpdatePair.o differ diff --git a/CPP/7zip/UI/Console/_o/UpdateProduce.o b/CPP/7zip/UI/Console/_o/UpdateProduce.o new file mode 100644 index 000000000..3500a165f Binary files /dev/null and b/CPP/7zip/UI/Console/_o/UpdateProduce.o differ diff --git a/CPP/7zip/UI/Console/_o/UserInputUtils.o b/CPP/7zip/UI/Console/_o/UserInputUtils.o new file mode 100644 index 000000000..a5d0f4bb6 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/UserInputUtils.o differ diff --git a/CPP/7zip/UI/Console/_o/Wildcard.o b/CPP/7zip/UI/Console/_o/Wildcard.o new file mode 100644 index 000000000..20ff7b7a8 Binary files /dev/null and b/CPP/7zip/UI/Console/_o/Wildcard.o differ diff --git a/CPP/7zip/UI/Console/_o/resource.o b/CPP/7zip/UI/Console/_o/resource.o new file mode 100644 index 000000000..0e79e331e Binary files /dev/null and b/CPP/7zip/UI/Console/_o/resource.o differ diff --git a/CPP/7zip/UI/Console/makefile.gcc b/CPP/7zip/UI/Console/makefile.gcc index 952641e99..3871ceadb 100644 --- a/CPP/7zip/UI/Console/makefile.gcc +++ b/CPP/7zip/UI/Console/makefile.gcc @@ -32,7 +32,6 @@ else MT_OBJS = \ $O/Synchronization.o \ - $O/Threads.o \ endif @@ -166,6 +165,14 @@ C_OBJS = \ $O/Sort.o \ $O/7zCrc.o \ $O/7zCrcOpt.o \ + $O/Transpose.o \ + $O/LzmaEnc.o \ + $O/LzFind.o \ + $O/LzFindMt.o \ + $O/LzFindOpt.o \ + $O/Ppmd7.o \ + $O/Ppmd7Enc.o \ + $O/Threads.o \ OBJS = \ diff --git a/CPP/7zip/UI/FileManager/_o/7zCrc.o b/CPP/7zip/UI/FileManager/_o/7zCrc.o new file mode 100644 index 000000000..9c365c132 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/7zCrc.o differ diff --git a/CPP/7zip/UI/FileManager/_o/7zCrcOpt.o b/CPP/7zip/UI/FileManager/_o/7zCrcOpt.o new file mode 100644 index 000000000..8cb0861f2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/7zCrcOpt.o differ diff --git a/CPP/7zip/UI/FileManager/_o/7zFM.exe b/CPP/7zip/UI/FileManager/_o/7zFM.exe new file mode 100755 index 000000000..cdb36d0b2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/7zFM.exe differ diff --git a/CPP/7zip/UI/FileManager/_o/AboutDialog.o b/CPP/7zip/UI/FileManager/_o/AboutDialog.o new file mode 100644 index 000000000..3ccd0737e Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/AboutDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Agent.o b/CPP/7zip/UI/FileManager/_o/Agent.o new file mode 100644 index 000000000..fb5c0dfc2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Agent.o differ diff --git a/CPP/7zip/UI/FileManager/_o/AgentOut.o b/CPP/7zip/UI/FileManager/_o/AgentOut.o new file mode 100644 index 000000000..4bc4c05eb Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/AgentOut.o differ diff --git a/CPP/7zip/UI/FileManager/_o/AgentProxy.o b/CPP/7zip/UI/FileManager/_o/AgentProxy.o new file mode 100644 index 000000000..9b2c4deec Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/AgentProxy.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Alloc.o b/CPP/7zip/UI/FileManager/_o/Alloc.o new file mode 100644 index 000000000..fc8bf76c5 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Alloc.o differ diff --git a/CPP/7zip/UI/FileManager/_o/AltStreamsFolder.o b/CPP/7zip/UI/FileManager/_o/AltStreamsFolder.o new file mode 100644 index 000000000..70cd6b20a Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/AltStreamsFolder.o differ diff --git a/CPP/7zip/UI/FileManager/_o/App.o b/CPP/7zip/UI/FileManager/_o/App.o new file mode 100644 index 000000000..9dba03a73 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/App.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ArchiveExtractCallback.o b/CPP/7zip/UI/FileManager/_o/ArchiveExtractCallback.o new file mode 100644 index 000000000..1452c0560 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ArchiveExtractCallback.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ArchiveFolder.o b/CPP/7zip/UI/FileManager/_o/ArchiveFolder.o new file mode 100644 index 000000000..0bdec8fa4 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ArchiveFolder.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ArchiveFolderOpen.o b/CPP/7zip/UI/FileManager/_o/ArchiveFolderOpen.o new file mode 100644 index 000000000..43778fdd8 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ArchiveFolderOpen.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ArchiveFolderOut.o b/CPP/7zip/UI/FileManager/_o/ArchiveFolderOut.o new file mode 100644 index 000000000..87911fc4f Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ArchiveFolderOut.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ArchiveName.o b/CPP/7zip/UI/FileManager/_o/ArchiveName.o new file mode 100644 index 000000000..f0dd9d029 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ArchiveName.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ArchiveOpenCallback.o b/CPP/7zip/UI/FileManager/_o/ArchiveOpenCallback.o new file mode 100644 index 000000000..3e1ebd4e6 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ArchiveOpenCallback.o differ diff --git a/CPP/7zip/UI/FileManager/_o/BrowseDialog.o b/CPP/7zip/UI/FileManager/_o/BrowseDialog.o new file mode 100644 index 000000000..b57aeb483 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/BrowseDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/BrowseDialog2.o b/CPP/7zip/UI/FileManager/_o/BrowseDialog2.o new file mode 100644 index 000000000..ba7264abf Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/BrowseDialog2.o differ diff --git a/CPP/7zip/UI/FileManager/_o/CRC.o b/CPP/7zip/UI/FileManager/_o/CRC.o new file mode 100644 index 000000000..d634888ad Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/CRC.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ClassDefs.o b/CPP/7zip/UI/FileManager/_o/ClassDefs.o new file mode 100644 index 000000000..217736cc7 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ClassDefs.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Clipboard.o b/CPP/7zip/UI/FileManager/_o/Clipboard.o new file mode 100644 index 000000000..9eda9dff6 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Clipboard.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ComboBox.o b/CPP/7zip/UI/FileManager/_o/ComboBox.o new file mode 100644 index 000000000..691779ad2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ComboBox.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ComboDialog.o b/CPP/7zip/UI/FileManager/_o/ComboDialog.o new file mode 100644 index 000000000..de8284af0 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ComboDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/CommonDialog.o b/CPP/7zip/UI/FileManager/_o/CommonDialog.o new file mode 100644 index 000000000..fb3cef670 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/CommonDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/CompressCall.o b/CPP/7zip/UI/FileManager/_o/CompressCall.o new file mode 100644 index 000000000..a4cce029b Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/CompressCall.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ContextMenu.o b/CPP/7zip/UI/FileManager/_o/ContextMenu.o new file mode 100644 index 000000000..91f06df2c Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ContextMenu.o differ diff --git a/CPP/7zip/UI/FileManager/_o/CopyCoder.o b/CPP/7zip/UI/FileManager/_o/CopyCoder.o new file mode 100644 index 000000000..61f6f0cd0 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/CopyCoder.o differ diff --git a/CPP/7zip/UI/FileManager/_o/CopyDialog.o b/CPP/7zip/UI/FileManager/_o/CopyDialog.o new file mode 100644 index 000000000..a1f0869a2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/CopyDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/CpuArch.o b/CPP/7zip/UI/FileManager/_o/CpuArch.o new file mode 100644 index 000000000..1758820d2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/CpuArch.o differ diff --git a/CPP/7zip/UI/FileManager/_o/CreateCoder.o b/CPP/7zip/UI/FileManager/_o/CreateCoder.o new file mode 100644 index 000000000..f4b287e4b Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/CreateCoder.o differ diff --git a/CPP/7zip/UI/FileManager/_o/DLL.o b/CPP/7zip/UI/FileManager/_o/DLL.o new file mode 100644 index 000000000..3c68234b3 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/DLL.o differ diff --git a/CPP/7zip/UI/FileManager/_o/DefaultName.o b/CPP/7zip/UI/FileManager/_o/DefaultName.o new file mode 100644 index 000000000..f9c2edcfc Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/DefaultName.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Dialog.o b/CPP/7zip/UI/FileManager/_o/Dialog.o new file mode 100644 index 000000000..0cdb3be65 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Dialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/DllSecur.o b/CPP/7zip/UI/FileManager/_o/DllSecur.o new file mode 100644 index 000000000..e851115fc Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/DllSecur.o differ diff --git a/CPP/7zip/UI/FileManager/_o/DynLimBuf.o b/CPP/7zip/UI/FileManager/_o/DynLimBuf.o new file mode 100644 index 000000000..f60af113e Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/DynLimBuf.o differ diff --git a/CPP/7zip/UI/FileManager/_o/EditDialog.o b/CPP/7zip/UI/FileManager/_o/EditDialog.o new file mode 100644 index 000000000..82008c10a Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/EditDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/EditPage.o b/CPP/7zip/UI/FileManager/_o/EditPage.o new file mode 100644 index 000000000..9da3e9da9 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/EditPage.o differ diff --git a/CPP/7zip/UI/FileManager/_o/EnumDirItems.o b/CPP/7zip/UI/FileManager/_o/EnumDirItems.o new file mode 100644 index 000000000..205ea0d7c Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/EnumDirItems.o differ diff --git a/CPP/7zip/UI/FileManager/_o/EnumFormatEtc.o b/CPP/7zip/UI/FileManager/_o/EnumFormatEtc.o new file mode 100644 index 000000000..e8e189a07 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/EnumFormatEtc.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ErrorMsg.o b/CPP/7zip/UI/FileManager/_o/ErrorMsg.o new file mode 100644 index 000000000..1459cc7be Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ErrorMsg.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ExtractCallback.o b/CPP/7zip/UI/FileManager/_o/ExtractCallback.o new file mode 100644 index 000000000..4347c1503 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ExtractCallback.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ExtractingFilePath.o b/CPP/7zip/UI/FileManager/_o/ExtractingFilePath.o new file mode 100644 index 000000000..187913aac Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ExtractingFilePath.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FM.o b/CPP/7zip/UI/FileManager/_o/FM.o new file mode 100644 index 000000000..81ecabdda Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FM.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FSDrives.o b/CPP/7zip/UI/FileManager/_o/FSDrives.o new file mode 100644 index 000000000..21b433e14 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FSDrives.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FSFolder.o b/CPP/7zip/UI/FileManager/_o/FSFolder.o new file mode 100644 index 000000000..f31dfcca2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FSFolder.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FSFolderCopy.o b/CPP/7zip/UI/FileManager/_o/FSFolderCopy.o new file mode 100644 index 000000000..b163eaaeb Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FSFolderCopy.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FileDir.o b/CPP/7zip/UI/FileManager/_o/FileDir.o new file mode 100644 index 000000000..9312993a5 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FileDir.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FileFind.o b/CPP/7zip/UI/FileManager/_o/FileFind.o new file mode 100644 index 000000000..930919f0a Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FileFind.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FileFolderPluginOpen.o b/CPP/7zip/UI/FileManager/_o/FileFolderPluginOpen.o new file mode 100644 index 000000000..355f58477 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FileFolderPluginOpen.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FileIO.o b/CPP/7zip/UI/FileManager/_o/FileIO.o new file mode 100644 index 000000000..fd7ba68b9 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FileIO.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FileLink.o b/CPP/7zip/UI/FileManager/_o/FileLink.o new file mode 100644 index 000000000..d30684ebf Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FileLink.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FileName.o b/CPP/7zip/UI/FileManager/_o/FileName.o new file mode 100644 index 000000000..591a01021 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FileName.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FilePathAutoRename.o b/CPP/7zip/UI/FileManager/_o/FilePathAutoRename.o new file mode 100644 index 000000000..2d15ae2b4 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FilePathAutoRename.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FilePlugins.o b/CPP/7zip/UI/FileManager/_o/FilePlugins.o new file mode 100644 index 000000000..1ecdf0b81 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FilePlugins.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FileStreams.o b/CPP/7zip/UI/FileManager/_o/FileStreams.o new file mode 100644 index 000000000..6a5b8c978 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FileStreams.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FileSystem.o b/CPP/7zip/UI/FileManager/_o/FileSystem.o new file mode 100644 index 000000000..96feb2944 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FileSystem.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FilterCoder.o b/CPP/7zip/UI/FileManager/_o/FilterCoder.o new file mode 100644 index 000000000..0b6e625a8 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FilterCoder.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FoldersPage.o b/CPP/7zip/UI/FileManager/_o/FoldersPage.o new file mode 100644 index 000000000..9520659a1 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FoldersPage.o differ diff --git a/CPP/7zip/UI/FileManager/_o/FormatUtils.o b/CPP/7zip/UI/FileManager/_o/FormatUtils.o new file mode 100644 index 000000000..52ea5036f Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/FormatUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/HashCalc.o b/CPP/7zip/UI/FileManager/_o/HashCalc.o new file mode 100644 index 000000000..eb403c226 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/HashCalc.o differ diff --git a/CPP/7zip/UI/FileManager/_o/HashGUI.o b/CPP/7zip/UI/FileManager/_o/HashGUI.o new file mode 100644 index 000000000..febed7f3e Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/HashGUI.o differ diff --git a/CPP/7zip/UI/FileManager/_o/HelpUtils.o b/CPP/7zip/UI/FileManager/_o/HelpUtils.o new file mode 100644 index 000000000..e6917a8b2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/HelpUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/IntToString.o b/CPP/7zip/UI/FileManager/_o/IntToString.o new file mode 100644 index 000000000..70da5a4af Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/IntToString.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ItemNameUtils.o b/CPP/7zip/UI/FileManager/_o/ItemNameUtils.o new file mode 100644 index 000000000..299e5aa76 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ItemNameUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Lang.o b/CPP/7zip/UI/FileManager/_o/Lang.o new file mode 100644 index 000000000..af76ceb9f Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Lang.o differ diff --git a/CPP/7zip/UI/FileManager/_o/LangPage.o b/CPP/7zip/UI/FileManager/_o/LangPage.o new file mode 100644 index 000000000..4ff30b32a Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/LangPage.o differ diff --git a/CPP/7zip/UI/FileManager/_o/LangUtils.o b/CPP/7zip/UI/FileManager/_o/LangUtils.o new file mode 100644 index 000000000..1282e1257 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/LangUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/LimitedStreams.o b/CPP/7zip/UI/FileManager/_o/LimitedStreams.o new file mode 100644 index 000000000..10cc9f3ee Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/LimitedStreams.o differ diff --git a/CPP/7zip/UI/FileManager/_o/LinkDialog.o b/CPP/7zip/UI/FileManager/_o/LinkDialog.o new file mode 100644 index 000000000..3dbea3d0f Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/LinkDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ListView.o b/CPP/7zip/UI/FileManager/_o/ListView.o new file mode 100644 index 000000000..56559c0a4 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ListView.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ListViewDialog.o b/CPP/7zip/UI/FileManager/_o/ListViewDialog.o new file mode 100644 index 000000000..364416bb4 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ListViewDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/LoadCodecs.o b/CPP/7zip/UI/FileManager/_o/LoadCodecs.o new file mode 100644 index 000000000..a781f56b6 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/LoadCodecs.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MemDialog.o b/CPP/7zip/UI/FileManager/_o/MemDialog.o new file mode 100644 index 000000000..69180091c Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MemDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MemoryGlobal.o b/CPP/7zip/UI/FileManager/_o/MemoryGlobal.o new file mode 100644 index 000000000..4d1a9db05 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MemoryGlobal.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MemoryLock.o b/CPP/7zip/UI/FileManager/_o/MemoryLock.o new file mode 100644 index 000000000..50a350b97 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MemoryLock.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Menu.o b/CPP/7zip/UI/FileManager/_o/Menu.o new file mode 100644 index 000000000..3f6eb6d1e Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Menu.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MenuPage.o b/CPP/7zip/UI/FileManager/_o/MenuPage.o new file mode 100644 index 000000000..78f431a52 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MenuPage.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MessagesDialog.o b/CPP/7zip/UI/FileManager/_o/MessagesDialog.o new file mode 100644 index 000000000..0a896f301 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MessagesDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MethodProps.o b/CPP/7zip/UI/FileManager/_o/MethodProps.o new file mode 100644 index 000000000..c87f8b14f Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MethodProps.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MultiOutStream.o b/CPP/7zip/UI/FileManager/_o/MultiOutStream.o new file mode 100644 index 000000000..fe96d809d Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MultiOutStream.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MyLoadMenu.o b/CPP/7zip/UI/FileManager/_o/MyLoadMenu.o new file mode 100644 index 000000000..284d98317 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MyLoadMenu.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MyMessages.o b/CPP/7zip/UI/FileManager/_o/MyMessages.o new file mode 100644 index 000000000..f4d0f91f8 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MyMessages.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MyString.o b/CPP/7zip/UI/FileManager/_o/MyString.o new file mode 100644 index 000000000..f57bd7d08 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MyString.o differ diff --git a/CPP/7zip/UI/FileManager/_o/MyVector.o b/CPP/7zip/UI/FileManager/_o/MyVector.o new file mode 100644 index 000000000..7493ed7c7 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/MyVector.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Net.o b/CPP/7zip/UI/FileManager/_o/Net.o new file mode 100644 index 000000000..32743e3aa Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Net.o differ diff --git a/CPP/7zip/UI/FileManager/_o/NetFolder.o b/CPP/7zip/UI/FileManager/_o/NetFolder.o new file mode 100644 index 000000000..7d5493da6 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/NetFolder.o differ diff --git a/CPP/7zip/UI/FileManager/_o/NewHandler.o b/CPP/7zip/UI/FileManager/_o/NewHandler.o new file mode 100644 index 000000000..59c88e52c Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/NewHandler.o differ diff --git a/CPP/7zip/UI/FileManager/_o/OpenArchive.o b/CPP/7zip/UI/FileManager/_o/OpenArchive.o new file mode 100644 index 000000000..01a9d49b2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/OpenArchive.o differ diff --git a/CPP/7zip/UI/FileManager/_o/OpenCallback.o b/CPP/7zip/UI/FileManager/_o/OpenCallback.o new file mode 100644 index 000000000..64e69ed3a Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/OpenCallback.o differ diff --git a/CPP/7zip/UI/FileManager/_o/OptionsDialog.o b/CPP/7zip/UI/FileManager/_o/OptionsDialog.o new file mode 100644 index 000000000..a86bc02b9 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/OptionsDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/OverwriteDialog.o b/CPP/7zip/UI/FileManager/_o/OverwriteDialog.o new file mode 100644 index 000000000..ff889f843 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/OverwriteDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Panel.o b/CPP/7zip/UI/FileManager/_o/Panel.o new file mode 100644 index 000000000..fc6cf0593 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Panel.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelCopy.o b/CPP/7zip/UI/FileManager/_o/PanelCopy.o new file mode 100644 index 000000000..c52a861d1 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelCopy.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelCrc.o b/CPP/7zip/UI/FileManager/_o/PanelCrc.o new file mode 100644 index 000000000..ef0830c67 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelCrc.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelDrag.o b/CPP/7zip/UI/FileManager/_o/PanelDrag.o new file mode 100644 index 000000000..f67a26f21 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelDrag.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelFolderChange.o b/CPP/7zip/UI/FileManager/_o/PanelFolderChange.o new file mode 100644 index 000000000..77e9b9f74 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelFolderChange.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelItemOpen.o b/CPP/7zip/UI/FileManager/_o/PanelItemOpen.o new file mode 100644 index 000000000..fc68e29e9 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelItemOpen.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelItems.o b/CPP/7zip/UI/FileManager/_o/PanelItems.o new file mode 100644 index 000000000..89c0f48ad Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelItems.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelKey.o b/CPP/7zip/UI/FileManager/_o/PanelKey.o new file mode 100644 index 000000000..5a10f0247 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelKey.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelListNotify.o b/CPP/7zip/UI/FileManager/_o/PanelListNotify.o new file mode 100644 index 000000000..a157aa07f Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelListNotify.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelMenu.o b/CPP/7zip/UI/FileManager/_o/PanelMenu.o new file mode 100644 index 000000000..9e3fb5814 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelMenu.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelOperations.o b/CPP/7zip/UI/FileManager/_o/PanelOperations.o new file mode 100644 index 000000000..33e8ebad5 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelOperations.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelSelect.o b/CPP/7zip/UI/FileManager/_o/PanelSelect.o new file mode 100644 index 000000000..51dc4fbb9 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelSelect.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelSort.o b/CPP/7zip/UI/FileManager/_o/PanelSort.o new file mode 100644 index 000000000..318fd69cf Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelSort.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PanelSplitFile.o b/CPP/7zip/UI/FileManager/_o/PanelSplitFile.o new file mode 100644 index 000000000..56a741ae0 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PanelSplitFile.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PasswordDialog.o b/CPP/7zip/UI/FileManager/_o/PasswordDialog.o new file mode 100644 index 000000000..c5c2fdd9e Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PasswordDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ProcessUtils.o b/CPP/7zip/UI/FileManager/_o/ProcessUtils.o new file mode 100644 index 000000000..d4a6c93a6 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ProcessUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ProgramLocation.o b/CPP/7zip/UI/FileManager/_o/ProgramLocation.o new file mode 100644 index 000000000..7d4ee50d0 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ProgramLocation.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ProgressDialog2.o b/CPP/7zip/UI/FileManager/_o/ProgressDialog2.o new file mode 100644 index 000000000..469fd3731 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ProgressDialog2.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ProgressUtils.o b/CPP/7zip/UI/FileManager/_o/ProgressUtils.o new file mode 100644 index 000000000..c5f245493 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ProgressUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PropIDUtils.o b/CPP/7zip/UI/FileManager/_o/PropIDUtils.o new file mode 100644 index 000000000..a8586bbf2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PropIDUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PropId.o b/CPP/7zip/UI/FileManager/_o/PropId.o new file mode 100644 index 000000000..edffc734d Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PropId.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PropVariant.o b/CPP/7zip/UI/FileManager/_o/PropVariant.o new file mode 100644 index 000000000..c7568f1f9 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PropVariant.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PropVariantConv.o b/CPP/7zip/UI/FileManager/_o/PropVariantConv.o new file mode 100644 index 000000000..0fc3de1e8 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PropVariantConv.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PropertyName.o b/CPP/7zip/UI/FileManager/_o/PropertyName.o new file mode 100644 index 000000000..2e4f721d2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PropertyName.o differ diff --git a/CPP/7zip/UI/FileManager/_o/PropertyPage.o b/CPP/7zip/UI/FileManager/_o/PropertyPage.o new file mode 100644 index 000000000..2946cf59b Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/PropertyPage.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Random.o b/CPP/7zip/UI/FileManager/_o/Random.o new file mode 100644 index 000000000..05abaef64 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Random.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Registry.o b/CPP/7zip/UI/FileManager/_o/Registry.o new file mode 100644 index 000000000..93aad04c6 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Registry.o differ diff --git a/CPP/7zip/UI/FileManager/_o/RegistryAssociations.o b/CPP/7zip/UI/FileManager/_o/RegistryAssociations.o new file mode 100644 index 000000000..fb1677930 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/RegistryAssociations.o differ diff --git a/CPP/7zip/UI/FileManager/_o/RegistryContextMenu.o b/CPP/7zip/UI/FileManager/_o/RegistryContextMenu.o new file mode 100644 index 000000000..9289696de Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/RegistryContextMenu.o differ diff --git a/CPP/7zip/UI/FileManager/_o/RegistryUtils.o b/CPP/7zip/UI/FileManager/_o/RegistryUtils.o new file mode 100644 index 000000000..979a3de50 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/RegistryUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ResourceString.o b/CPP/7zip/UI/FileManager/_o/ResourceString.o new file mode 100644 index 000000000..9041ebb00 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ResourceString.o differ diff --git a/CPP/7zip/UI/FileManager/_o/RootFolder.o b/CPP/7zip/UI/FileManager/_o/RootFolder.o new file mode 100644 index 000000000..d8b76ae70 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/RootFolder.o differ diff --git a/CPP/7zip/UI/FileManager/_o/SecurityUtils.o b/CPP/7zip/UI/FileManager/_o/SecurityUtils.o new file mode 100644 index 000000000..58edc9fa2 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/SecurityUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/SetProperties.o b/CPP/7zip/UI/FileManager/_o/SetProperties.o new file mode 100644 index 000000000..add471316 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/SetProperties.o differ diff --git a/CPP/7zip/UI/FileManager/_o/SettingsPage.o b/CPP/7zip/UI/FileManager/_o/SettingsPage.o new file mode 100644 index 000000000..282b5e7d7 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/SettingsPage.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Shell.o b/CPP/7zip/UI/FileManager/_o/Shell.o new file mode 100644 index 000000000..a95d159a7 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Shell.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Sort.o b/CPP/7zip/UI/FileManager/_o/Sort.o new file mode 100644 index 000000000..f76fbbb8f Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Sort.o differ diff --git a/CPP/7zip/UI/FileManager/_o/SortUtils.o b/CPP/7zip/UI/FileManager/_o/SortUtils.o new file mode 100644 index 000000000..dde551509 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/SortUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/SplitDialog.o b/CPP/7zip/UI/FileManager/_o/SplitDialog.o new file mode 100644 index 000000000..21412d099 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/SplitDialog.o differ diff --git a/CPP/7zip/UI/FileManager/_o/SplitUtils.o b/CPP/7zip/UI/FileManager/_o/SplitUtils.o new file mode 100644 index 000000000..68955e1bb Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/SplitUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/StreamObjects.o b/CPP/7zip/UI/FileManager/_o/StreamObjects.o new file mode 100644 index 000000000..8fcaaa128 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/StreamObjects.o differ diff --git a/CPP/7zip/UI/FileManager/_o/StreamUtils.o b/CPP/7zip/UI/FileManager/_o/StreamUtils.o new file mode 100644 index 000000000..0df5c12af Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/StreamUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/StringConvert.o b/CPP/7zip/UI/FileManager/_o/StringConvert.o new file mode 100644 index 000000000..f7ec3f424 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/StringConvert.o differ diff --git a/CPP/7zip/UI/FileManager/_o/StringToInt.o b/CPP/7zip/UI/FileManager/_o/StringToInt.o new file mode 100644 index 000000000..2bba1530c Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/StringToInt.o differ diff --git a/CPP/7zip/UI/FileManager/_o/StringUtils.o b/CPP/7zip/UI/FileManager/_o/StringUtils.o new file mode 100644 index 000000000..6e2859b74 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/StringUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Synchronization.o b/CPP/7zip/UI/FileManager/_o/Synchronization.o new file mode 100644 index 000000000..29395b79b Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Synchronization.o differ diff --git a/CPP/7zip/UI/FileManager/_o/SysIconUtils.o b/CPP/7zip/UI/FileManager/_o/SysIconUtils.o new file mode 100644 index 000000000..a48917a57 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/SysIconUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/System.o b/CPP/7zip/UI/FileManager/_o/System.o new file mode 100644 index 000000000..84a316acb Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/System.o differ diff --git a/CPP/7zip/UI/FileManager/_o/SystemPage.o b/CPP/7zip/UI/FileManager/_o/SystemPage.o new file mode 100644 index 000000000..874ea7ac1 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/SystemPage.o differ diff --git a/CPP/7zip/UI/FileManager/_o/TextPairs.o b/CPP/7zip/UI/FileManager/_o/TextPairs.o new file mode 100644 index 000000000..0087a6f6e Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/TextPairs.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Threads.o b/CPP/7zip/UI/FileManager/_o/Threads.o new file mode 100644 index 000000000..5839e38e5 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Threads.o differ diff --git a/CPP/7zip/UI/FileManager/_o/TimeUtils.o b/CPP/7zip/UI/FileManager/_o/TimeUtils.o new file mode 100644 index 000000000..837fc0902 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/TimeUtils.o differ diff --git a/CPP/7zip/UI/FileManager/_o/UTFConvert.o b/CPP/7zip/UI/FileManager/_o/UTFConvert.o new file mode 100644 index 000000000..84ac1ac02 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/UTFConvert.o differ diff --git a/CPP/7zip/UI/FileManager/_o/UniqBlocks.o b/CPP/7zip/UI/FileManager/_o/UniqBlocks.o new file mode 100644 index 000000000..7a35445fb Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/UniqBlocks.o differ diff --git a/CPP/7zip/UI/FileManager/_o/UpdateAction.o b/CPP/7zip/UI/FileManager/_o/UpdateAction.o new file mode 100644 index 000000000..3a9f43337 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/UpdateAction.o differ diff --git a/CPP/7zip/UI/FileManager/_o/UpdateCallback.o b/CPP/7zip/UI/FileManager/_o/UpdateCallback.o new file mode 100644 index 000000000..24e557b1e Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/UpdateCallback.o differ diff --git a/CPP/7zip/UI/FileManager/_o/UpdateCallback100.o b/CPP/7zip/UI/FileManager/_o/UpdateCallback100.o new file mode 100644 index 000000000..72f5e7ced Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/UpdateCallback100.o differ diff --git a/CPP/7zip/UI/FileManager/_o/UpdateCallbackAgent.o b/CPP/7zip/UI/FileManager/_o/UpdateCallbackAgent.o new file mode 100644 index 000000000..0aff511e9 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/UpdateCallbackAgent.o differ diff --git a/CPP/7zip/UI/FileManager/_o/UpdateCallbackGUI2.o b/CPP/7zip/UI/FileManager/_o/UpdateCallbackGUI2.o new file mode 100644 index 000000000..fd5c0faec Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/UpdateCallbackGUI2.o differ diff --git a/CPP/7zip/UI/FileManager/_o/UpdatePair.o b/CPP/7zip/UI/FileManager/_o/UpdatePair.o new file mode 100644 index 000000000..ab1a2784b Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/UpdatePair.o differ diff --git a/CPP/7zip/UI/FileManager/_o/UpdateProduce.o b/CPP/7zip/UI/FileManager/_o/UpdateProduce.o new file mode 100644 index 000000000..3500a165f Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/UpdateProduce.o differ diff --git a/CPP/7zip/UI/FileManager/_o/VerCtrl.o b/CPP/7zip/UI/FileManager/_o/VerCtrl.o new file mode 100644 index 000000000..82f1d91c0 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/VerCtrl.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ViewSettings.o b/CPP/7zip/UI/FileManager/_o/ViewSettings.o new file mode 100644 index 000000000..fbe5a2a46 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ViewSettings.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Wildcard.o b/CPP/7zip/UI/FileManager/_o/Wildcard.o new file mode 100644 index 000000000..20ff7b7a8 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Wildcard.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Window.o b/CPP/7zip/UI/FileManager/_o/Window.o new file mode 100644 index 000000000..d8a71143e Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Window.o differ diff --git a/CPP/7zip/UI/FileManager/_o/Window2.o b/CPP/7zip/UI/FileManager/_o/Window2.o new file mode 100644 index 000000000..13aa3dfc4 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/Window2.o differ diff --git a/CPP/7zip/UI/FileManager/_o/WorkDir.o b/CPP/7zip/UI/FileManager/_o/WorkDir.o new file mode 100644 index 000000000..ae6cce266 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/WorkDir.o differ diff --git a/CPP/7zip/UI/FileManager/_o/ZipRegistry.o b/CPP/7zip/UI/FileManager/_o/ZipRegistry.o new file mode 100644 index 000000000..32c516cbc Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/ZipRegistry.o differ diff --git a/CPP/7zip/UI/FileManager/_o/resource.o b/CPP/7zip/UI/FileManager/_o/resource.o new file mode 100644 index 000000000..161c87329 Binary files /dev/null and b/CPP/7zip/UI/FileManager/_o/resource.o differ diff --git a/CPP/7zip/UI/FileManager/makefile.gcc b/CPP/7zip/UI/FileManager/makefile.gcc new file mode 100644 index 000000000..0a3a66b62 --- /dev/null +++ b/CPP/7zip/UI/FileManager/makefile.gcc @@ -0,0 +1,210 @@ +PROG = 7zFM +IS_NOT_STANDALONE = 1 + +# Interface graphique : sous-systeme Windows (point d'entree WinMain) +LDFLAGS_STATIC_3 = -mwindows +MY_LIBS = -lhtmlhelp -lmpr + +LOCAL_FLAGS = \ + -DZ7_LANG \ + -DZ7_EXTERNAL_CODECS \ + -DZ7_DEVICE_FILE \ + +FM_OBJS = \ + $O/AboutDialog.o \ + $O/AltStreamsFolder.o \ + $O/App.o \ + $O/BrowseDialog.o \ + $O/BrowseDialog2.o \ + $O/ClassDefs.o \ + $O/ComboDialog.o \ + $O/CopyDialog.o \ + $O/EditDialog.o \ + $O/EditPage.o \ + $O/EnumFormatEtc.o \ + $O/ExtractCallback.o \ + $O/FileFolderPluginOpen.o \ + $O/FilePlugins.o \ + $O/FM.o \ + $O/FoldersPage.o \ + $O/FormatUtils.o \ + $O/FSDrives.o \ + $O/FSFolder.o \ + $O/FSFolderCopy.o \ + $O/HelpUtils.o \ + $O/LangPage.o \ + $O/LangUtils.o \ + $O/LinkDialog.o \ + $O/ListViewDialog.o \ + $O/MemDialog.o \ + $O/MenuPage.o \ + $O/MessagesDialog.o \ + $O/MyLoadMenu.o \ + $O/NetFolder.o \ + $O/OpenCallback.o \ + $O/OptionsDialog.o \ + $O/OverwriteDialog.o \ + $O/Panel.o \ + $O/PanelCopy.o \ + $O/PanelCrc.o \ + $O/PanelDrag.o \ + $O/PanelFolderChange.o \ + $O/PanelItemOpen.o \ + $O/PanelItems.o \ + $O/PanelKey.o \ + $O/PanelListNotify.o \ + $O/PanelMenu.o \ + $O/PanelOperations.o \ + $O/PanelSelect.o \ + $O/PanelSort.o \ + $O/PanelSplitFile.o \ + $O/PasswordDialog.o \ + $O/ProgramLocation.o \ + $O/ProgressDialog2.o \ + $O/PropertyName.o \ + $O/RegistryAssociations.o \ + $O/RegistryUtils.o \ + $O/RootFolder.o \ + $O/SettingsPage.o \ + $O/SplitDialog.o \ + $O/SplitUtils.o \ + $O/StringUtils.o \ + $O/SysIconUtils.o \ + $O/SystemPage.o \ + $O/TextPairs.o \ + $O/UpdateCallback100.o \ + $O/VerCtrl.o \ + $O/ViewSettings.o \ + +AGENT_OBJS = \ + $O/Agent.o \ + $O/AgentOut.o \ + $O/AgentProxy.o \ + $O/ArchiveFolder.o \ + $O/ArchiveFolderOpen.o \ + $O/ArchiveFolderOut.o \ + $O/UpdateCallbackAgent.o \ + +COMMON_OBJS = \ + $O/CRC.o \ + $O/DynLimBuf.o \ + $O/IntToString.o \ + $O/Lang.o \ + $O/MyString.o \ + $O/MyVector.o \ + $O/NewHandler.o \ + $O/Random.o \ + $O/StringConvert.o \ + $O/StringToInt.o \ + $O/UTFConvert.o \ + $O/Wildcard.o \ + +WIN_OBJS = \ + $O/Clipboard.o \ + $O/CommonDialog.o \ + $O/DLL.o \ + $O/ErrorMsg.o \ + $O/FileDir.o \ + $O/FileFind.o \ + $O/FileIO.o \ + $O/FileLink.o \ + $O/FileName.o \ + $O/FileSystem.o \ + $O/MemoryGlobal.o \ + $O/MemoryLock.o \ + $O/Menu.o \ + $O/Net.o \ + $O/ProcessUtils.o \ + $O/PropVariant.o \ + $O/PropVariantConv.o \ + $O/Registry.o \ + $O/ResourceString.o \ + $O/SecurityUtils.o \ + $O/Shell.o \ + $O/Synchronization.o \ + $O/System.o \ + $O/TimeUtils.o \ + $O/Window.o \ + +WIN_CTRL_OBJS = \ + $O/ComboBox.o \ + $O/Dialog.o \ + $O/ListView.o \ + $O/PropertyPage.o \ + $O/Window2.o \ + +7ZIP_COMMON_OBJS = \ + $O/CreateCoder.o \ + $O/FilePathAutoRename.o \ + $O/FileStreams.o \ + $O/FilterCoder.o \ + $O/LimitedStreams.o \ + $O/MethodProps.o \ + $O/MultiOutStream.o \ + $O/ProgressUtils.o \ + $O/PropId.o \ + $O/StreamObjects.o \ + $O/StreamUtils.o \ + $O/UniqBlocks.o \ + +UI_COMMON_OBJS = \ + $O/ArchiveExtractCallback.o \ + $O/ArchiveName.o \ + $O/ArchiveOpenCallback.o \ + $O/CompressCall.o \ + $O/DefaultName.o \ + $O/EnumDirItems.o \ + $O/ExtractingFilePath.o \ + $O/HashCalc.o \ + $O/LoadCodecs.o \ + $O/OpenArchive.o \ + $O/PropIDUtils.o \ + $O/SetProperties.o \ + $O/SortUtils.o \ + $O/UpdateAction.o \ + $O/UpdateCallback.o \ + $O/UpdatePair.o \ + $O/UpdateProduce.o \ + $O/WorkDir.o \ + $O/ZipRegistry.o \ + +EXPLORER_OBJS = \ + $O/ContextMenu.o \ + $O/MyMessages.o \ + $O/RegistryContextMenu.o \ + +GUI_OBJS = \ + $O/HashGUI.o \ + $O/UpdateCallbackGUI2.o \ + +COMPRESS_OBJS = \ + $O/CopyCoder.o \ + +AR_COMMON_OBJS = \ + $O/ItemNameUtils.o \ + +C_OBJS = \ + $O/Alloc.o \ + $O/CpuArch.o \ + $O/DllSecur.o \ + $O/Sort.o \ + $O/Threads.o \ + $O/7zCrc.o \ + $O/7zCrcOpt.o \ + +OBJS = \ + $(C_OBJS) \ + $(COMMON_OBJS) \ + $(WIN_OBJS) \ + $(WIN_CTRL_OBJS) \ + $(COMPRESS_OBJS) \ + $(AR_COMMON_OBJS) \ + $(7ZIP_COMMON_OBJS) \ + $(UI_COMMON_OBJS) \ + $(AGENT_OBJS) \ + $(EXPLORER_OBJS) \ + $(GUI_OBJS) \ + $(FM_OBJS) \ + $O/resource.o \ + +include ../../7zip_gcc.mak diff --git a/CPP/7zip/UI/GUI/CompressDialog.cpp b/CPP/7zip/UI/GUI/CompressDialog.cpp index 53e56fe27..26a996c7c 100644 --- a/CPP/7zip/UI/GUI/CompressDialog.cpp +++ b/CPP/7zip/UI/GUI/CompressDialog.cpp @@ -49,6 +49,7 @@ static const UInt32 kLangIDs[] = IDT_COMPRESS_FORMAT, IDT_COMPRESS_LEVEL, IDT_COMPRESS_METHOD, + IDT_COMPRESS_PREPROCESS, IDT_COMPRESS_DICTIONARY, IDT_COMPRESS_ORDER, IDT_COMPRESS_SOLID, @@ -469,6 +470,10 @@ bool CCompressDialog::OnInit() m_Format.Attach(GetItem(IDC_COMPRESS_FORMAT)); // that combo has CBS_SORT style in resources m_Level.Attach(GetItem(IDC_COMPRESS_LEVEL)); m_Method.Attach(GetItem(IDC_COMPRESS_METHOD)); + m_Preprocess.Attach(GetItem(IDC_COMPRESS_PREPROCESS)); + m_Preprocess.AddString(L"None"); + m_Preprocess.AddString(L"anyz2 (Transpose)"); + m_Preprocess.SetCurSel(0); m_Dictionary.Attach(GetItem(IDC_COMPRESS_DICTIONARY)); /* @@ -1168,6 +1173,7 @@ void CCompressDialog::OnOK() } Info.Method = GetMethodSpec(); + Info.Transpose = UseTranspose(); Info.EncryptionMethod = GetEncryptionMethodSpec(); Info.FormatIndex = (int)GetFormatIndex(); Info.SFXMode = IsSFX(); @@ -1370,6 +1376,7 @@ bool CCompressDialog::OnCommand(unsigned code, unsigned itemID, LPARAM lParam) case IDC_COMPRESS_METHOD: { MethodChanged(); + SetPreprocess(); SetSolidBlockSize(); SetNumThreads(); CheckSFXNameChange(); @@ -1624,6 +1631,35 @@ static void Modify_Auto(AString &s) s.Insert(0, k_Auto_Prefix); } +bool CCompressDialog::UseTranspose() +{ + return Get_ArcInfoEx().Is_7z() && !IsSFX() && GetLevel() != 0 + && (GetMethodID() == kLZMA || GetMethodID() == kLZMA2 || GetMethodID() == kPPMd) + && m_Preprocess.GetCurSel() == 1; +} + +void CCompressDialog::SetPreprocess() +{ + const CArcInfoEx &ai = Get_ArcInfoEx(); + if (_preprocessFormat != ai.Name) + { + _preprocessFormat = ai.Name; + bool enabled = ai.Is_7z(); + const int index = FindRegistryFormat(ai.Name); + if (index >= 0) + { + const NCompression::CFormatOptions &fo = m_RegistryInfo.Formats[index]; + enabled = fo.Filter.IsEqualTo_Ascii_NoCase("Transpose") + || fo.Method.IsEqualTo_Ascii_NoCase("anyz2"); + } + m_Preprocess.SetCurSel(enabled ? 1 : 0); + } + const bool allowed = ai.Is_7z() && !IsSFX() && GetLevel() != 0 + && (GetMethodID() == kLZMA || GetMethodID() == kLZMA2 || GetMethodID() == kPPMd); + EnableItem(IDC_COMPRESS_PREPROCESS, allowed); + EnableItem(IDT_COMPRESS_PREPROCESS, allowed); +} + void CCompressDialog::SetMethod2(int keepMethodId) { m_Method.ResetContent(); @@ -1646,6 +1682,7 @@ void CCompressDialog::SetMethod2(int keepMethodId) { const NCompression::CFormatOptions &fo = m_RegistryInfo.Formats[index]; defaultMethod = fo.Method; + if (defaultMethod.IsEqualTo_Ascii_NoCase("anyz2")) defaultMethod = "LZMA2"; } } const bool isSfx = IsSFX(); @@ -1700,6 +1737,7 @@ void CCompressDialog::SetMethod2(int keepMethodId) } if ((defaultMethod.IsEqualTo_Ascii_NoCase(method) || m == 0) && !weUseSameMethod) m_Method.SetCurSel(itemIndex); + } if (!weUseSameMethod) @@ -2615,7 +2653,8 @@ void CCompressDialog::SetNumThreads2() else switch (methodID) { case kLZMA: numAlgoThreadsMax = 2; break; - case kLZMA2: numAlgoThreadsMax = 256 * 2; break; // MTCODER_THREADS_MAX * 2 + case kLZMA2: + numAlgoThreadsMax = 256 * 2; break; // MTCODER_THREADS_MAX * 2 case kBZip2: numAlgoThreadsMax = 64; break; // case kZSTD: numAlgoThreadsMax = num_ZSTD_threads_MAX; break; case kCopy: @@ -3310,6 +3349,7 @@ void CCompressDialog::SaveOptionsInMem() fo.Order = GetOrderSpec(); fo.Method = GetMethodSpec(); + fo.Filter = m_Preprocess.GetCurSel() == 1 ? L"Transpose" : L""; fo.EncryptionMethod = GetEncryptionMethodSpec(); fo.NumThreads = GetNumThreadsSpec(); fo.BlockLogSize = GetBlockSizeSpec(); diff --git a/CPP/7zip/UI/GUI/CompressDialog.h b/CPP/7zip/UI/GUI/CompressDialog.h index e0f3aa536..68e53ed07 100644 --- a/CPP/7zip/UI/GUI/CompressDialog.h +++ b/CPP/7zip/UI/GUI/CompressDialog.h @@ -44,6 +44,7 @@ namespace NCompressDialog UInt32 Level; UString Method; + bool Transpose; UInt64 Dict64; // UInt64 Dict64_Chain; bool OrderMode; @@ -97,6 +98,7 @@ namespace NCompressDialog // Dict64_Chain = (UInt64)(Int64)(-1); OrderMode = false; Method.Empty(); + Transpose = false; Options.Empty(); EncryptionMethod.Empty(); TimePrec = (UInt32)(Int32)(-1); @@ -154,6 +156,10 @@ class CCompressDialog: public NWindows::NControl::CModalDialog NWindows::NControl::CComboBox m_Format; NWindows::NControl::CComboBox m_Level; NWindows::NControl::CComboBox m_Method; + NWindows::NControl::CComboBox m_Preprocess; + UString _preprocessFormat; + void SetPreprocess(); + bool UseTranspose(); NWindows::NControl::CComboBox m_Dictionary; // NWindows::NControl::CComboBox m_Dictionary_Chain; NWindows::NControl::CComboBox m_Order; @@ -226,6 +232,7 @@ class CCompressDialog: public NWindows::NControl::CModalDialog { SetMethod2(keepMethodId); EnableMultiCombo(IDC_COMPRESS_METHOD); + SetPreprocess(); } void MethodChanged() diff --git a/CPP/7zip/UI/GUI/CompressDialog.rc b/CPP/7zip/UI/GUI/CompressDialog.rc index df1516c35..e51f91894 100644 --- a/CPP/7zip/UI/GUI/CompressDialog.rc +++ b/CPP/7zip/UI/GUI/CompressDialog.rc @@ -34,7 +34,7 @@ #define g4xs (xc - gSize - gSpace) #define g4xs2 (g4xs - m - m) -#define yOpt 80 +#define yOpt 101 #define xArcFolderOffs 40 @@ -116,6 +116,9 @@ BEGIN COMBOBOX IDC_COMPRESS_PATH_MODE, g4x + 84, 59, g4xs - 84, 80, MY_COMBO + LTEXT "Preprocessing:", IDT_COMPRESS_PREPROCESS, g4x, 82, 72, 8 + COMBOBOX IDC_COMPRESS_PREPROCESS, g4x + 74, 80, g4xs - 74, 80, MY_COMBO + GROUPBOX "Options", IDG_COMPRESS_OPTIONS, g4x, yOpt, g4xs, GROUP_Y_SIZE CONTROL "Create SF&X archive", IDX_COMPRESS_SFX, MY_CHECKBOX, diff --git a/CPP/7zip/UI/GUI/CompressDialogRes.h b/CPP/7zip/UI/GUI/CompressDialogRes.h index d04d4b9c1..628c3c174 100644 --- a/CPP/7zip/UI/GUI/CompressDialogRes.h +++ b/CPP/7zip/UI/GUI/CompressDialogRes.h @@ -123,3 +123,6 @@ // #define IDX_COMPRESS_NT_SECUR_SET 213 #define IDS_MEM_OPERATION_BLOCKED 7810 + +#define IDC_COMPRESS_PREPROCESS 118 +#define IDT_COMPRESS_PREPROCESS 4092 diff --git a/CPP/7zip/UI/GUI/UpdateGUI.cpp b/CPP/7zip/UI/GUI/UpdateGUI.cpp index a600a8bc1..7f51ddbe4 100644 --- a/CPP/7zip/UI/GUI/UpdateGUI.cpp +++ b/CPP/7zip/UI/GUI/UpdateGUI.cpp @@ -212,13 +212,23 @@ static void SetOutProperties( AddProp_UInt32(properties, "x", (UInt32)di.Level); if (setMethod) { - if (!di.Method.IsEmpty()) + // Preprocessing is independent of the compression method. All dictionary + // and order properties below belong to the downstream coder, never Transpose. + const bool isAnyz2 = is7z && di.Transpose; + AString numPrefix ("0"); + if (isAnyz2) + { + AddProp_UString(properties, "0", UString("Transpose:a=3")); + AddProp_UString(properties, "1", di.Method.IsEmpty() ? UString("LZMA2") : di.Method); + numPrefix = "1"; + } + else if (!di.Method.IsEmpty()) AddProp_UString(properties, is7z ? "0": "m", di.Method); if (di.Dict64 != (UInt64)(Int64)-1) { AString name; if (is7z) - name = "0"; + name = numPrefix; name += (di.OrderMode ? "mem" : "d"); AddProp_Size(properties, name, di.Dict64); } @@ -236,7 +246,7 @@ static void SetOutProperties( { AString name; if (is7z) - name = "0"; + name = numPrefix; name += (di.OrderMode ? "o" : "fb"); AddProp_UInt32(properties, name, (UInt32)di.Order); } diff --git a/CPP/7zip/UI/GUI/_o/7zCrc.o b/CPP/7zip/UI/GUI/_o/7zCrc.o new file mode 100644 index 000000000..9c365c132 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/7zCrc.o differ diff --git a/CPP/7zip/UI/GUI/_o/7zCrcOpt.o b/CPP/7zip/UI/GUI/_o/7zCrcOpt.o new file mode 100644 index 000000000..8cb0861f2 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/7zCrcOpt.o differ diff --git a/CPP/7zip/UI/GUI/_o/7zG.exe b/CPP/7zip/UI/GUI/_o/7zG.exe new file mode 100755 index 000000000..8ad42bf92 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/7zG.exe differ diff --git a/CPP/7zip/UI/GUI/_o/Alloc.o b/CPP/7zip/UI/GUI/_o/Alloc.o new file mode 100644 index 000000000..fc8bf76c5 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Alloc.o differ diff --git a/CPP/7zip/UI/GUI/_o/ArchiveCommandLine.o b/CPP/7zip/UI/GUI/_o/ArchiveCommandLine.o new file mode 100644 index 000000000..1df059d45 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ArchiveCommandLine.o differ diff --git a/CPP/7zip/UI/GUI/_o/ArchiveExtractCallback.o b/CPP/7zip/UI/GUI/_o/ArchiveExtractCallback.o new file mode 100644 index 000000000..1452c0560 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ArchiveExtractCallback.o differ diff --git a/CPP/7zip/UI/GUI/_o/ArchiveOpenCallback.o b/CPP/7zip/UI/GUI/_o/ArchiveOpenCallback.o new file mode 100644 index 000000000..3e1ebd4e6 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ArchiveOpenCallback.o differ diff --git a/CPP/7zip/UI/GUI/_o/Bench.o b/CPP/7zip/UI/GUI/_o/Bench.o new file mode 100644 index 000000000..fea5b3f82 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Bench.o differ diff --git a/CPP/7zip/UI/GUI/_o/BenchmarkDialog.o b/CPP/7zip/UI/GUI/_o/BenchmarkDialog.o new file mode 100644 index 000000000..7986e2bde Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/BenchmarkDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/BrowseDialog.o b/CPP/7zip/UI/GUI/_o/BrowseDialog.o new file mode 100644 index 000000000..b57aeb483 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/BrowseDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/CRC.o b/CPP/7zip/UI/GUI/_o/CRC.o new file mode 100644 index 000000000..d634888ad Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/CRC.o differ diff --git a/CPP/7zip/UI/GUI/_o/Clipboard.o b/CPP/7zip/UI/GUI/_o/Clipboard.o new file mode 100644 index 000000000..9eda9dff6 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Clipboard.o differ diff --git a/CPP/7zip/UI/GUI/_o/ComboBox.o b/CPP/7zip/UI/GUI/_o/ComboBox.o new file mode 100644 index 000000000..691779ad2 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ComboBox.o differ diff --git a/CPP/7zip/UI/GUI/_o/ComboDialog.o b/CPP/7zip/UI/GUI/_o/ComboDialog.o new file mode 100644 index 000000000..de8284af0 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ComboDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/CommandLineParser.o b/CPP/7zip/UI/GUI/_o/CommandLineParser.o new file mode 100644 index 000000000..f498fde53 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/CommandLineParser.o differ diff --git a/CPP/7zip/UI/GUI/_o/CommonDialog.o b/CPP/7zip/UI/GUI/_o/CommonDialog.o new file mode 100644 index 000000000..fb3cef670 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/CommonDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/CompressDialog.o b/CPP/7zip/UI/GUI/_o/CompressDialog.o new file mode 100644 index 000000000..51876470e Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/CompressDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/CopyCoder.o b/CPP/7zip/UI/GUI/_o/CopyCoder.o new file mode 100644 index 000000000..61f6f0cd0 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/CopyCoder.o differ diff --git a/CPP/7zip/UI/GUI/_o/CpuArch.o b/CPP/7zip/UI/GUI/_o/CpuArch.o new file mode 100644 index 000000000..1758820d2 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/CpuArch.o differ diff --git a/CPP/7zip/UI/GUI/_o/CreateCoder.o b/CPP/7zip/UI/GUI/_o/CreateCoder.o new file mode 100644 index 000000000..f4b287e4b Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/CreateCoder.o differ diff --git a/CPP/7zip/UI/GUI/_o/DLL.o b/CPP/7zip/UI/GUI/_o/DLL.o new file mode 100644 index 000000000..3c68234b3 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/DLL.o differ diff --git a/CPP/7zip/UI/GUI/_o/DefaultName.o b/CPP/7zip/UI/GUI/_o/DefaultName.o new file mode 100644 index 000000000..f9c2edcfc Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/DefaultName.o differ diff --git a/CPP/7zip/UI/GUI/_o/Dialog.o b/CPP/7zip/UI/GUI/_o/Dialog.o new file mode 100644 index 000000000..0cdb3be65 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Dialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/DllSecur.o b/CPP/7zip/UI/GUI/_o/DllSecur.o new file mode 100644 index 000000000..e851115fc Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/DllSecur.o differ diff --git a/CPP/7zip/UI/GUI/_o/DynLimBuf.o b/CPP/7zip/UI/GUI/_o/DynLimBuf.o new file mode 100644 index 000000000..f60af113e Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/DynLimBuf.o differ diff --git a/CPP/7zip/UI/GUI/_o/EditDialog.o b/CPP/7zip/UI/GUI/_o/EditDialog.o new file mode 100644 index 000000000..82008c10a Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/EditDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/EnumDirItems.o b/CPP/7zip/UI/GUI/_o/EnumDirItems.o new file mode 100644 index 000000000..205ea0d7c Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/EnumDirItems.o differ diff --git a/CPP/7zip/UI/GUI/_o/ErrorMsg.o b/CPP/7zip/UI/GUI/_o/ErrorMsg.o new file mode 100644 index 000000000..1459cc7be Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ErrorMsg.o differ diff --git a/CPP/7zip/UI/GUI/_o/Extract.o b/CPP/7zip/UI/GUI/_o/Extract.o new file mode 100644 index 000000000..c0f187a33 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Extract.o differ diff --git a/CPP/7zip/UI/GUI/_o/ExtractCallback.o b/CPP/7zip/UI/GUI/_o/ExtractCallback.o new file mode 100644 index 000000000..4347c1503 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ExtractCallback.o differ diff --git a/CPP/7zip/UI/GUI/_o/ExtractDialog.o b/CPP/7zip/UI/GUI/_o/ExtractDialog.o new file mode 100644 index 000000000..2a1ce08f8 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ExtractDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/ExtractGUI.o b/CPP/7zip/UI/GUI/_o/ExtractGUI.o new file mode 100644 index 000000000..5b5f09dd0 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ExtractGUI.o differ diff --git a/CPP/7zip/UI/GUI/_o/ExtractingFilePath.o b/CPP/7zip/UI/GUI/_o/ExtractingFilePath.o new file mode 100644 index 000000000..187913aac Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ExtractingFilePath.o differ diff --git a/CPP/7zip/UI/GUI/_o/FileDir.o b/CPP/7zip/UI/GUI/_o/FileDir.o new file mode 100644 index 000000000..9312993a5 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/FileDir.o differ diff --git a/CPP/7zip/UI/GUI/_o/FileFind.o b/CPP/7zip/UI/GUI/_o/FileFind.o new file mode 100644 index 000000000..930919f0a Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/FileFind.o differ diff --git a/CPP/7zip/UI/GUI/_o/FileIO.o b/CPP/7zip/UI/GUI/_o/FileIO.o new file mode 100644 index 000000000..fd7ba68b9 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/FileIO.o differ diff --git a/CPP/7zip/UI/GUI/_o/FileLink.o b/CPP/7zip/UI/GUI/_o/FileLink.o new file mode 100644 index 000000000..d30684ebf Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/FileLink.o differ diff --git a/CPP/7zip/UI/GUI/_o/FileName.o b/CPP/7zip/UI/GUI/_o/FileName.o new file mode 100644 index 000000000..591a01021 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/FileName.o differ diff --git a/CPP/7zip/UI/GUI/_o/FilePathAutoRename.o b/CPP/7zip/UI/GUI/_o/FilePathAutoRename.o new file mode 100644 index 000000000..2d15ae2b4 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/FilePathAutoRename.o differ diff --git a/CPP/7zip/UI/GUI/_o/FileStreams.o b/CPP/7zip/UI/GUI/_o/FileStreams.o new file mode 100644 index 000000000..6a5b8c978 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/FileStreams.o differ diff --git a/CPP/7zip/UI/GUI/_o/FileSystem.o b/CPP/7zip/UI/GUI/_o/FileSystem.o new file mode 100644 index 000000000..96feb2944 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/FileSystem.o differ diff --git a/CPP/7zip/UI/GUI/_o/FilterCoder.o b/CPP/7zip/UI/GUI/_o/FilterCoder.o new file mode 100644 index 000000000..0b6e625a8 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/FilterCoder.o differ diff --git a/CPP/7zip/UI/GUI/_o/FormatUtils.o b/CPP/7zip/UI/GUI/_o/FormatUtils.o new file mode 100644 index 000000000..52ea5036f Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/FormatUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/GUI.o b/CPP/7zip/UI/GUI/_o/GUI.o new file mode 100644 index 000000000..559f03767 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/GUI.o differ diff --git a/CPP/7zip/UI/GUI/_o/HashCalc.o b/CPP/7zip/UI/GUI/_o/HashCalc.o new file mode 100644 index 000000000..eb403c226 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/HashCalc.o differ diff --git a/CPP/7zip/UI/GUI/_o/HashGUI.o b/CPP/7zip/UI/GUI/_o/HashGUI.o new file mode 100644 index 000000000..febed7f3e Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/HashGUI.o differ diff --git a/CPP/7zip/UI/GUI/_o/HelpUtils.o b/CPP/7zip/UI/GUI/_o/HelpUtils.o new file mode 100644 index 000000000..e6917a8b2 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/HelpUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/IntToString.o b/CPP/7zip/UI/GUI/_o/IntToString.o new file mode 100644 index 000000000..70da5a4af Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/IntToString.o differ diff --git a/CPP/7zip/UI/GUI/_o/ItemNameUtils.o b/CPP/7zip/UI/GUI/_o/ItemNameUtils.o new file mode 100644 index 000000000..299e5aa76 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ItemNameUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/Lang.o b/CPP/7zip/UI/GUI/_o/Lang.o new file mode 100644 index 000000000..af76ceb9f Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Lang.o differ diff --git a/CPP/7zip/UI/GUI/_o/LangUtils.o b/CPP/7zip/UI/GUI/_o/LangUtils.o new file mode 100644 index 000000000..1282e1257 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/LangUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/LimitedStreams.o b/CPP/7zip/UI/GUI/_o/LimitedStreams.o new file mode 100644 index 000000000..10cc9f3ee Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/LimitedStreams.o differ diff --git a/CPP/7zip/UI/GUI/_o/ListFileUtils.o b/CPP/7zip/UI/GUI/_o/ListFileUtils.o new file mode 100644 index 000000000..d8b4622f6 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ListFileUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/ListView.o b/CPP/7zip/UI/GUI/_o/ListView.o new file mode 100644 index 000000000..56559c0a4 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ListView.o differ diff --git a/CPP/7zip/UI/GUI/_o/ListViewDialog.o b/CPP/7zip/UI/GUI/_o/ListViewDialog.o new file mode 100644 index 000000000..364416bb4 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ListViewDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/LoadCodecs.o b/CPP/7zip/UI/GUI/_o/LoadCodecs.o new file mode 100644 index 000000000..a781f56b6 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/LoadCodecs.o differ diff --git a/CPP/7zip/UI/GUI/_o/LzFind.o b/CPP/7zip/UI/GUI/_o/LzFind.o new file mode 100644 index 000000000..5bcd2ae17 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/LzFind.o differ diff --git a/CPP/7zip/UI/GUI/_o/LzFindMt.o b/CPP/7zip/UI/GUI/_o/LzFindMt.o new file mode 100644 index 000000000..9c4c0d5e4 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/LzFindMt.o differ diff --git a/CPP/7zip/UI/GUI/_o/LzFindOpt.o b/CPP/7zip/UI/GUI/_o/LzFindOpt.o new file mode 100644 index 000000000..fb66df33c Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/LzFindOpt.o differ diff --git a/CPP/7zip/UI/GUI/_o/LzmaEnc.o b/CPP/7zip/UI/GUI/_o/LzmaEnc.o new file mode 100644 index 000000000..0c7a7cda6 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/LzmaEnc.o differ diff --git a/CPP/7zip/UI/GUI/_o/MemDialog.o b/CPP/7zip/UI/GUI/_o/MemDialog.o new file mode 100644 index 000000000..69180091c Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/MemDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/MemoryGlobal.o b/CPP/7zip/UI/GUI/_o/MemoryGlobal.o new file mode 100644 index 000000000..4d1a9db05 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/MemoryGlobal.o differ diff --git a/CPP/7zip/UI/GUI/_o/MemoryLock.o b/CPP/7zip/UI/GUI/_o/MemoryLock.o new file mode 100644 index 000000000..50a350b97 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/MemoryLock.o differ diff --git a/CPP/7zip/UI/GUI/_o/MethodProps.o b/CPP/7zip/UI/GUI/_o/MethodProps.o new file mode 100644 index 000000000..c87f8b14f Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/MethodProps.o differ diff --git a/CPP/7zip/UI/GUI/_o/MultiOutStream.o b/CPP/7zip/UI/GUI/_o/MultiOutStream.o new file mode 100644 index 000000000..fe96d809d Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/MultiOutStream.o differ diff --git a/CPP/7zip/UI/GUI/_o/MyMessages.o b/CPP/7zip/UI/GUI/_o/MyMessages.o new file mode 100644 index 000000000..f4d0f91f8 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/MyMessages.o differ diff --git a/CPP/7zip/UI/GUI/_o/MyString.o b/CPP/7zip/UI/GUI/_o/MyString.o new file mode 100644 index 000000000..f57bd7d08 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/MyString.o differ diff --git a/CPP/7zip/UI/GUI/_o/MyVector.o b/CPP/7zip/UI/GUI/_o/MyVector.o new file mode 100644 index 000000000..7493ed7c7 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/MyVector.o differ diff --git a/CPP/7zip/UI/GUI/_o/NewHandler.o b/CPP/7zip/UI/GUI/_o/NewHandler.o new file mode 100644 index 000000000..59c88e52c Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/NewHandler.o differ diff --git a/CPP/7zip/UI/GUI/_o/OpenArchive.o b/CPP/7zip/UI/GUI/_o/OpenArchive.o new file mode 100644 index 000000000..01a9d49b2 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/OpenArchive.o differ diff --git a/CPP/7zip/UI/GUI/_o/OpenCallback.o b/CPP/7zip/UI/GUI/_o/OpenCallback.o new file mode 100644 index 000000000..64e69ed3a Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/OpenCallback.o differ diff --git a/CPP/7zip/UI/GUI/_o/OutStreamWithCRC.o b/CPP/7zip/UI/GUI/_o/OutStreamWithCRC.o new file mode 100644 index 000000000..fce041b0f Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/OutStreamWithCRC.o differ diff --git a/CPP/7zip/UI/GUI/_o/OverwriteDialog.o b/CPP/7zip/UI/GUI/_o/OverwriteDialog.o new file mode 100644 index 000000000..ff889f843 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/OverwriteDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/PasswordDialog.o b/CPP/7zip/UI/GUI/_o/PasswordDialog.o new file mode 100644 index 000000000..c5c2fdd9e Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/PasswordDialog.o differ diff --git a/CPP/7zip/UI/GUI/_o/Ppmd7.o b/CPP/7zip/UI/GUI/_o/Ppmd7.o new file mode 100644 index 000000000..f51345f1f Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Ppmd7.o differ diff --git a/CPP/7zip/UI/GUI/_o/Ppmd7Enc.o b/CPP/7zip/UI/GUI/_o/Ppmd7Enc.o new file mode 100644 index 000000000..af48c0d49 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Ppmd7Enc.o differ diff --git a/CPP/7zip/UI/GUI/_o/ProgramLocation.o b/CPP/7zip/UI/GUI/_o/ProgramLocation.o new file mode 100644 index 000000000..7d4ee50d0 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ProgramLocation.o differ diff --git a/CPP/7zip/UI/GUI/_o/ProgressDialog2.o b/CPP/7zip/UI/GUI/_o/ProgressDialog2.o new file mode 100644 index 000000000..469fd3731 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ProgressDialog2.o differ diff --git a/CPP/7zip/UI/GUI/_o/ProgressUtils.o b/CPP/7zip/UI/GUI/_o/ProgressUtils.o new file mode 100644 index 000000000..c5f245493 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ProgressUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/PropIDUtils.o b/CPP/7zip/UI/GUI/_o/PropIDUtils.o new file mode 100644 index 000000000..a8586bbf2 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/PropIDUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/PropId.o b/CPP/7zip/UI/GUI/_o/PropId.o new file mode 100644 index 000000000..edffc734d Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/PropId.o differ diff --git a/CPP/7zip/UI/GUI/_o/PropVariant.o b/CPP/7zip/UI/GUI/_o/PropVariant.o new file mode 100644 index 000000000..c7568f1f9 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/PropVariant.o differ diff --git a/CPP/7zip/UI/GUI/_o/PropVariantConv.o b/CPP/7zip/UI/GUI/_o/PropVariantConv.o new file mode 100644 index 000000000..0fc3de1e8 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/PropVariantConv.o differ diff --git a/CPP/7zip/UI/GUI/_o/PropertyName.o b/CPP/7zip/UI/GUI/_o/PropertyName.o new file mode 100644 index 000000000..2e4f721d2 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/PropertyName.o differ diff --git a/CPP/7zip/UI/GUI/_o/Registry.o b/CPP/7zip/UI/GUI/_o/Registry.o new file mode 100644 index 000000000..93aad04c6 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Registry.o differ diff --git a/CPP/7zip/UI/GUI/_o/RegistryUtils.o b/CPP/7zip/UI/GUI/_o/RegistryUtils.o new file mode 100644 index 000000000..979a3de50 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/RegistryUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/ResourceString.o b/CPP/7zip/UI/GUI/_o/ResourceString.o new file mode 100644 index 000000000..9041ebb00 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ResourceString.o differ diff --git a/CPP/7zip/UI/GUI/_o/SetProperties.o b/CPP/7zip/UI/GUI/_o/SetProperties.o new file mode 100644 index 000000000..add471316 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/SetProperties.o differ diff --git a/CPP/7zip/UI/GUI/_o/Shell.o b/CPP/7zip/UI/GUI/_o/Shell.o new file mode 100644 index 000000000..a95d159a7 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Shell.o differ diff --git a/CPP/7zip/UI/GUI/_o/Sort.o b/CPP/7zip/UI/GUI/_o/Sort.o new file mode 100644 index 000000000..f76fbbb8f Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Sort.o differ diff --git a/CPP/7zip/UI/GUI/_o/SortUtils.o b/CPP/7zip/UI/GUI/_o/SortUtils.o new file mode 100644 index 000000000..dde551509 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/SortUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/SplitUtils.o b/CPP/7zip/UI/GUI/_o/SplitUtils.o new file mode 100644 index 000000000..68955e1bb Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/SplitUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/StreamObjects.o b/CPP/7zip/UI/GUI/_o/StreamObjects.o new file mode 100644 index 000000000..8fcaaa128 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/StreamObjects.o differ diff --git a/CPP/7zip/UI/GUI/_o/StreamUtils.o b/CPP/7zip/UI/GUI/_o/StreamUtils.o new file mode 100644 index 000000000..0df5c12af Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/StreamUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/StringConvert.o b/CPP/7zip/UI/GUI/_o/StringConvert.o new file mode 100644 index 000000000..f7ec3f424 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/StringConvert.o differ diff --git a/CPP/7zip/UI/GUI/_o/StringToInt.o b/CPP/7zip/UI/GUI/_o/StringToInt.o new file mode 100644 index 000000000..2bba1530c Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/StringToInt.o differ diff --git a/CPP/7zip/UI/GUI/_o/StringUtils.o b/CPP/7zip/UI/GUI/_o/StringUtils.o new file mode 100644 index 000000000..6e2859b74 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/StringUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/Synchronization.o b/CPP/7zip/UI/GUI/_o/Synchronization.o new file mode 100644 index 000000000..29395b79b Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Synchronization.o differ diff --git a/CPP/7zip/UI/GUI/_o/SysIconUtils.o b/CPP/7zip/UI/GUI/_o/SysIconUtils.o new file mode 100644 index 000000000..a48917a57 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/SysIconUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/System.o b/CPP/7zip/UI/GUI/_o/System.o new file mode 100644 index 000000000..84a316acb Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/System.o differ diff --git a/CPP/7zip/UI/GUI/_o/SystemInfo.o b/CPP/7zip/UI/GUI/_o/SystemInfo.o new file mode 100644 index 000000000..7a4ee2f6f Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/SystemInfo.o differ diff --git a/CPP/7zip/UI/GUI/_o/TempFiles.o b/CPP/7zip/UI/GUI/_o/TempFiles.o new file mode 100644 index 000000000..dd2981897 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/TempFiles.o differ diff --git a/CPP/7zip/UI/GUI/_o/Threads.o b/CPP/7zip/UI/GUI/_o/Threads.o new file mode 100644 index 000000000..5839e38e5 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Threads.o differ diff --git a/CPP/7zip/UI/GUI/_o/TimeUtils.o b/CPP/7zip/UI/GUI/_o/TimeUtils.o new file mode 100644 index 000000000..837fc0902 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/TimeUtils.o differ diff --git a/CPP/7zip/UI/GUI/_o/Transpose.o b/CPP/7zip/UI/GUI/_o/Transpose.o new file mode 100644 index 000000000..9b86fe72f Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Transpose.o differ diff --git a/CPP/7zip/UI/GUI/_o/UTFConvert.o b/CPP/7zip/UI/GUI/_o/UTFConvert.o new file mode 100644 index 000000000..84ac1ac02 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/UTFConvert.o differ diff --git a/CPP/7zip/UI/GUI/_o/UniqBlocks.o b/CPP/7zip/UI/GUI/_o/UniqBlocks.o new file mode 100644 index 000000000..7a35445fb Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/UniqBlocks.o differ diff --git a/CPP/7zip/UI/GUI/_o/Update.o b/CPP/7zip/UI/GUI/_o/Update.o new file mode 100644 index 000000000..0bbaf6548 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Update.o differ diff --git a/CPP/7zip/UI/GUI/_o/UpdateAction.o b/CPP/7zip/UI/GUI/_o/UpdateAction.o new file mode 100644 index 000000000..3a9f43337 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/UpdateAction.o differ diff --git a/CPP/7zip/UI/GUI/_o/UpdateCallback.o b/CPP/7zip/UI/GUI/_o/UpdateCallback.o new file mode 100644 index 000000000..24e557b1e Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/UpdateCallback.o differ diff --git a/CPP/7zip/UI/GUI/_o/UpdateCallbackGUI.o b/CPP/7zip/UI/GUI/_o/UpdateCallbackGUI.o new file mode 100644 index 000000000..e701bf3a9 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/UpdateCallbackGUI.o differ diff --git a/CPP/7zip/UI/GUI/_o/UpdateCallbackGUI2.o b/CPP/7zip/UI/GUI/_o/UpdateCallbackGUI2.o new file mode 100644 index 000000000..fd5c0faec Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/UpdateCallbackGUI2.o differ diff --git a/CPP/7zip/UI/GUI/_o/UpdateGUI.o b/CPP/7zip/UI/GUI/_o/UpdateGUI.o new file mode 100644 index 000000000..50f2feb31 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/UpdateGUI.o differ diff --git a/CPP/7zip/UI/GUI/_o/UpdatePair.o b/CPP/7zip/UI/GUI/_o/UpdatePair.o new file mode 100644 index 000000000..ab1a2784b Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/UpdatePair.o differ diff --git a/CPP/7zip/UI/GUI/_o/UpdateProduce.o b/CPP/7zip/UI/GUI/_o/UpdateProduce.o new file mode 100644 index 000000000..3500a165f Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/UpdateProduce.o differ diff --git a/CPP/7zip/UI/GUI/_o/Wildcard.o b/CPP/7zip/UI/GUI/_o/Wildcard.o new file mode 100644 index 000000000..20ff7b7a8 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Wildcard.o differ diff --git a/CPP/7zip/UI/GUI/_o/Window.o b/CPP/7zip/UI/GUI/_o/Window.o new file mode 100644 index 000000000..d8a71143e Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/Window.o differ diff --git a/CPP/7zip/UI/GUI/_o/WorkDir.o b/CPP/7zip/UI/GUI/_o/WorkDir.o new file mode 100644 index 000000000..ae6cce266 Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/WorkDir.o differ diff --git a/CPP/7zip/UI/GUI/_o/ZipRegistry.o b/CPP/7zip/UI/GUI/_o/ZipRegistry.o new file mode 100644 index 000000000..32c516cbc Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/ZipRegistry.o differ diff --git a/CPP/7zip/UI/GUI/_o/resource.o b/CPP/7zip/UI/GUI/_o/resource.o new file mode 100644 index 000000000..a86114b1c Binary files /dev/null and b/CPP/7zip/UI/GUI/_o/resource.o differ diff --git a/CPP/7zip/UI/GUI/makefile.gcc b/CPP/7zip/UI/GUI/makefile.gcc new file mode 100644 index 000000000..3ccd21092 --- /dev/null +++ b/CPP/7zip/UI/GUI/makefile.gcc @@ -0,0 +1,167 @@ +PROG = 7zG +IS_NOT_STANDALONE = 1 + +# Interface graphique : sous-systeme Windows (point d'entree WinMain) +LDFLAGS_STATIC_3 = -mwindows +MY_LIBS = -lhtmlhelp + +LOCAL_FLAGS = \ + -DZ7_LANG \ + -DZ7_EXTERNAL_CODECS \ + -DZ7_DEVICE_FILE \ + +GUI_OBJS = \ + $O/BenchmarkDialog.o \ + $O/CompressDialog.o \ + $O/ExtractDialog.o \ + $O/ExtractGUI.o \ + $O/GUI.o \ + $O/HashGUI.o \ + $O/UpdateCallbackGUI.o \ + $O/UpdateCallbackGUI2.o \ + $O/UpdateGUI.o \ + +COMMON_OBJS = \ + $O/CommandLineParser.o \ + $O/CRC.o \ + $O/DynLimBuf.o \ + $O/IntToString.o \ + $O/Lang.o \ + $O/ListFileUtils.o \ + $O/MyString.o \ + $O/MyVector.o \ + $O/NewHandler.o \ + $O/StringConvert.o \ + $O/StringToInt.o \ + $O/UTFConvert.o \ + $O/Wildcard.o \ + +WIN_OBJS = \ + $O/Clipboard.o \ + $O/CommonDialog.o \ + $O/DLL.o \ + $O/ErrorMsg.o \ + $O/FileDir.o \ + $O/FileFind.o \ + $O/FileIO.o \ + $O/FileLink.o \ + $O/FileName.o \ + $O/FileSystem.o \ + $O/MemoryGlobal.o \ + $O/MemoryLock.o \ + $O/PropVariant.o \ + $O/PropVariantConv.o \ + $O/Registry.o \ + $O/ResourceString.o \ + $O/Shell.o \ + $O/Synchronization.o \ + $O/System.o \ + $O/SystemInfo.o \ + $O/TimeUtils.o \ + $O/Window.o \ + +WIN_CTRL_OBJS = \ + $O/ComboBox.o \ + $O/Dialog.o \ + $O/ListView.o \ + +7ZIP_COMMON_OBJS = \ + $O/CreateCoder.o \ + $O/FilePathAutoRename.o \ + $O/FileStreams.o \ + $O/FilterCoder.o \ + $O/LimitedStreams.o \ + $O/MethodProps.o \ + $O/MultiOutStream.o \ + $O/ProgressUtils.o \ + $O/PropId.o \ + $O/StreamObjects.o \ + $O/StreamUtils.o \ + $O/UniqBlocks.o \ + +UI_COMMON_OBJS = \ + $O/ArchiveCommandLine.o \ + $O/ArchiveExtractCallback.o \ + $O/ArchiveOpenCallback.o \ + $O/Bench.o \ + $O/DefaultName.o \ + $O/EnumDirItems.o \ + $O/Extract.o \ + $O/ExtractingFilePath.o \ + $O/HashCalc.o \ + $O/LoadCodecs.o \ + $O/OpenArchive.o \ + $O/PropIDUtils.o \ + $O/SetProperties.o \ + $O/SortUtils.o \ + $O/TempFiles.o \ + $O/Update.o \ + $O/UpdateAction.o \ + $O/UpdateCallback.o \ + $O/UpdatePair.o \ + $O/UpdateProduce.o \ + $O/WorkDir.o \ + $O/ZipRegistry.o \ + +AR_COMMON_OBJS = \ + $O/ItemNameUtils.o \ + $O/OutStreamWithCRC.o \ + +FM_OBJS = \ + $O/BrowseDialog.o \ + $O/ComboDialog.o \ + $O/EditDialog.o \ + $O/ExtractCallback.o \ + $O/FormatUtils.o \ + $O/HelpUtils.o \ + $O/LangUtils.o \ + $O/ListViewDialog.o \ + $O/MemDialog.o \ + $O/OpenCallback.o \ + $O/OverwriteDialog.o \ + $O/PasswordDialog.o \ + $O/ProgramLocation.o \ + $O/ProgressDialog2.o \ + $O/PropertyName.o \ + $O/RegistryUtils.o \ + $O/SplitUtils.o \ + $O/StringUtils.o \ + $O/SysIconUtils.o \ + +EXPLORER_OBJS = \ + $O/MyMessages.o \ + +COMPRESS_OBJS = \ + $O/CopyCoder.o \ + +C_OBJS = \ + $O/Alloc.o \ + $O/CpuArch.o \ + $O/DllSecur.o \ + $O/Sort.o \ + $O/Threads.o \ + $O/7zCrc.o \ + $O/7zCrcOpt.o \ + $O/Transpose.o \ + $O/LzmaEnc.o \ + $O/LzFind.o \ + $O/LzFindMt.o \ + $O/LzFindOpt.o \ + $O/Ppmd7.o \ + $O/Ppmd7Enc.o \ + +OBJS = \ + $(C_OBJS) \ + $(COMMON_OBJS) \ + $(WIN_OBJS) \ + $(WIN_CTRL_OBJS) \ + $(COMPRESS_OBJS) \ + $(AR_COMMON_OBJS) \ + $(7ZIP_COMMON_OBJS) \ + $(UI_COMMON_OBJS) \ + $(FM_OBJS) \ + $(EXPLORER_OBJS) \ + $(GUI_OBJS) \ + $O/resource.o \ + +include ../../7zip_gcc.mak diff --git a/DOC/Anyz2.md b/DOC/Anyz2.md new file mode 100644 index 000000000..af83d0444 --- /dev/null +++ b/DOC/Anyz2.md @@ -0,0 +1,74 @@ +# anyz2 in the integrated 7-Zip fork + +Transpose is built into this fork's `7z.dll` / `7z.so`. Ship the matching +`7z.exe`, `7zG.exe`, `7zFM.exe` and `7z.dll` together. No codec plugin is needed. +The upstream discussion is https://github.com/ip7z/7zip/pull/245; upstream is +not currently accepting new built-in filters, so this remains a maintained fork. + +In **Add to Archive**, select **Preprocessing → anyz2 (Transpose)** and choose +**LZMA2**, **LZMA** or **PPMd** independently under **Compression method**. +The GUI puts Transpose at method 0, the chosen compressor at method 1, and +sends dictionary and word/order settings to method 1. No manual parameters +are needed. The filter choice is saved per archive format; the former +`Method=anyz2` preference migrates to LZMA2 with Transpose enabled. +Preprocessing is disabled for other formats, Store, SFX and compressors for +which the prepass has no matching probe. SFX modules have not been extended. + +The prepass measures candidates against an untransformed baseline, using the +following coder's family (PPMd or LZMA). Its settings can differ from the actual +compression settings; it examines at most 64 MiB of the largest input file. +A heterogeneous solid folder can differ from that file. Therefore this is a +selection heuristic, not a guarantee that every final archive is smaller. +The Python arbiter in `~/tabz/anyz2` is a separate, broader experiment; the GUI +filter does not run all of its external compressors or select codecs per block. + +## Format and buffering + +Igor Pavlov allocated developer range `04F713xx`; Transpose uses `04F71301`. +It is still registered with `REGISTER_FILTER_E`, not as a compressor. +Exactly two property bytes encode `R-1` and `log2(records per block)`. +The byte block length is `R << step`, limited to 64 KiB. Choosing a power-of-two +record count removes division from decoding. It can give a smaller block than +the previous arbitrary record count. All incomplete final blocks remain raw. + +`CFilterCoder` now guarantees a minimum 64 KiB buffer for all of its Code, +Read and Write paths. This matters because the upstream 4 KiB minimum is too +small for Transpose, especially when decoding with a different buffer size. +The usual 2 MiB default is unchanged. The filter never requests AES padding. + +The new ID intentionally does not decode the experimental `0C` or +`3FE2B7E19B8A0001` formats. Keep the previous fork binaries for those archives; +the original `_o` build directories are preserved by the build script. +Do not reinterpret old archives with the new two-byte properties. + +## Build and validation + +From the repository root: + +```sh +python3 tests/build_anyz2.py +python3 tests/run_transpose.py +python3 tests/build_anyz2.py --windows +``` + +Windows cross builds require mingw-w64 and the header aliases described in +`mingw-shim/README.md`. Outputs use `_linux` and `_anyz2`, preserving older builds. +Put the Linux console binary and `7z.so` together, then run: + +```sh +python3 tests/transpose_archives.py /path/to/7z +``` + +`transpose_streams.cpp` checks 12,288 combinations against an independently +constructed transposition, covering R=1..256, exact and partial blocks, +short input/output operations, all three FilterCoder paths, mismatched buffer +sizes including requests for 4 KiB, and malformed properties. +`transpose_archives.py` checks 58 Transpose archives, including PPMd, LZMA2, +prepass and solid archives, plus an AES/BCJ regression archive. +`transpose_gui.cpp` drives the real Windows dialog and creates an archive. +Compile it with mingw-w64 and run beside the Windows binaries with a +`gui-input.bin` fixture. It can also run under Wine/Xvfb. + +When updating from upstream, review changes to `CFilterCoder`, coder properties, +GUI property routing and codec IDs, rebuild all four Windows binaries and rerun +these checks. A successful upstream merge alone does not verify this fork. diff --git a/DOC/Methods.txt b/DOC/Methods.txt index cd5fa0456..99351c54c 100644 --- a/DOC/Methods.txt +++ b/DOC/Methods.txt @@ -39,7 +39,6 @@ List of defined IDs 09 - SPARC 0A - ARM64 0B - RISCV - 21 - LZMA2 02.. - Common @@ -175,3 +174,26 @@ List of defined IDs --- End of document + +Third-party IDs +--------------- + +04 F7 13 xx - plokijuter (allocated by Igor Pavlov, PR #245) + + 04 F7 13 01 - Transpose (byte transposition, records of R bytes) + Properties: exactly 2 bytes: R-1, log2(records per block). + R = 1..256; step exponent = 0..16; R << exponent <= 65536. + Block size = R << exponent, with no division in the decoder. + Within each complete block, output[j * records + i] = input[i * R + j]. + Final incomplete blocks are copied unchanged. R=1 is identity. + This layout does NOT interpret the old experimental IDs (0C or + 3F E2B7E19B8A 0001) or their one-/two-byte exponent-of-byte-size layouts. + Keep the previous fork binary to extract those experimental archives. + -m0=Transpose : heuristic selection of R. + -m0=Transpose:15 : force R=15. + In this fork, a=3 requests a prepass, up to 64 MiB of the largest file. + It is a compression probe, not a guarantee of improvement for the + actual coder settings or a heterogeneous solid stream. + The GUI offers anyz2 (Transpose) as Preprocessing, independently of + LZMA, LZMA2 or PPMd. It is unavailable for ZIP, Store and SFX. + Built into 7z.dll; no external plugin is required in this fork. diff --git a/mingw-shim/README.md b/mingw-shim/README.md new file mode 100644 index 000000000..bf20483a0 --- /dev/null +++ b/mingw-shim/README.md @@ -0,0 +1,15 @@ +# mingw-shim + +Cross-compiling 7-Zip from Linux with mingw-w64 fails on headers the source +includes with Windows casing (`CommCtrl.h`, `ShlObj.h`, ...) while mingw ships +them lowercase. Populate this directory with symlinks and add it as the first +`-I` path: + + for h in $(grep -rhoE '#include <[A-Za-z0-9_]+\.h>' CPP | grep -oE '<[A-Za-z0-9_]+\.h>' \ + | tr -d '<>' | sort -u); do + l=$(echo "$h" | tr 'A-Z' 'a-z') + [ "$h" = "$l" ] && continue + [ -f "/usr/x86_64-w64-mingw32/include/$l" ] && ln -sf "/usr/x86_64-w64-mingw32/include/$l" "mingw-shim/$h" + done + +The symlinks themselves are not committed: they point into the local toolchain. diff --git a/tests/build_anyz2.py b/tests/build_anyz2.py new file mode 100644 index 000000000..2613437b6 --- /dev/null +++ b/tests/build_anyz2.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python3 +"""Build the integrated fork; output goes to separate directories, preserving old builds.""" +import argparse, subprocess +from pathlib import Path +r = Path(__file__).resolve().parents[1] +p = argparse.ArgumentParser() +p.add_argument('--windows', action='store_true') +p.add_argument('-j', default='4') +a = p.parse_args() +args = ['make', '-f', 'makefile.gcc', '-j'+a.j, 'O='+('_anyz2' if a.windows else '_linux')] +if a.windows: + args += ['IS_MINGW=1', 'MSYSTEM=MINGW64', 'CC=x86_64-w64-mingw32-gcc', 'CXX=x86_64-w64-mingw32-g++', + 'RC=x86_64-w64-mingw32-windres', 'RFLAGS=-I'+str(r/'mingw-shim')+' -i', + 'CFLAGS_BASE2=-I'+str(r/'mingw-shim'), 'CXXFLAGS_BASE2=-I'+str(r/'mingw-shim'), + 'CXX_WARN_FLAGS=-Wno-unused-value -Wno-cast-function-type'] +paths = ['Bundles/Format7zF', 'UI/Console'] +if a.windows: paths += ['UI/GUI', 'UI/FileManager'] +for path in paths: + subprocess.run(args, cwd=r/'CPP/7zip'/path, check=True) diff --git a/tests/run_transpose.py b/tests/run_transpose.py new file mode 100644 index 000000000..aabaa37e0 --- /dev/null +++ b/tests/run_transpose.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +"""Build after Format7zF/_linux, then exercise all FilterCoder streaming paths.""" +from pathlib import Path +import subprocess +r = Path(__file__).resolve().parents[1] +o = r / 'CPP/7zip/Bundles/Format7zF/_linux' +names = 'Transpose LzmaEnc LzFind LzFindMt LzFindOpt Threads CpuArch Alloc Ppmd7 Ppmd7Enc StreamUtils MyWindows FilterCoder'.split() +subprocess.run(['g++', '-O2', '-Wall', '-Wextra', '-Werror', '-o', str(r/'tests/transpose_streams'), str(r/'tests/transpose_streams.cpp')] + [str(o/(n+'.o')) for n in names] + ['-lpthread'], check=True) +subprocess.run([str(r/'tests/transpose_streams')], check=True, timeout=120) diff --git a/tests/transpose_archives.py b/tests/transpose_archives.py new file mode 100644 index 000000000..d256ea06b --- /dev/null +++ b/tests/transpose_archives.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +import os, random, struct, subprocess, sys, tempfile +from pathlib import Path +exe = str(Path(sys.argv[1]).resolve()) +def run(*args): + p = subprocess.run([exe, *map(str, args)], capture_output=True, timeout=90) + if p.returncode: raise RuntimeError(p.stdout.decode(errors='replace') + p.stderr.decode(errors='replace')) + return p.stdout +with tempfile.TemporaryDirectory() as tmp: + tmp = Path(tmp) + rng = random.Random(47) + samples = { + 'empty': b'', 'tiny': b'x', 'tail': rng.randbytes(65535), + 'boundary': rng.randbytes(65536), 'long': rng.randbytes((2 << 20) + 1), + 'text': b'A repeated sentence with words.\n' * 8192, + 'records': b''.join(struct.pack(' +#include +#include +#include +#include "../CPP/7zip/UI/GUI/CompressDialogRes.h" +static HWND dialog; +static DWORD processId; +static BOOL CALLBACK Find(HWND w, LPARAM) { + DWORD pid = 0; GetWindowThreadProcessId(w, &pid); + if (pid == processId && GetDlgItem(w, IDC_COMPRESS_METHOD) && GetDlgItem(w, IDC_COMPRESS_PREPROCESS)) dialog = w; + return TRUE; +} +static void Check(bool b, const char *what) { + if (!b) { std::fprintf(stderr, "FAIL: %s\n", what); std::exit(1); } +} +static int FindItem(int id, const char *needle) { + HWND box = GetDlgItem(dialog, id); + int count = (int)SendMessageA(box, CB_GETCOUNT, 0, 0); + for (int i = 0; i < count; ++i) { + wchar_t wide[512] = {}; + char text[1024] = {}; + SendMessageW(box, CB_GETLBTEXT, i, (LPARAM)wide); + WideCharToMultiByte(CP_UTF8, 0, wide, -1, text, sizeof(text), NULL, NULL); + if (id == IDC_COMPRESS_FORMAT ? std::strcmp(text, needle) == 0 : std::strstr(text, needle) != NULL) return i; + } + return -1; +} +static void Select(int id, int index) { + Check(index >= 0, "combo item exists"); + HWND box = GetDlgItem(dialog, id); + SendMessageA(box, CB_SETCURSEL, index, 0); + SendMessageA(dialog, WM_COMMAND, MAKEWPARAM(id, CBN_SELCHANGE), (LPARAM)box); +} +static bool Enabled() { return IsWindowEnabled(GetDlgItem(dialog, IDC_COMPRESS_PREPROCESS)) != 0; } +int main() { + STARTUPINFOA si = {}; si.cb = sizeof(si); + PROCESS_INFORMATION pi = {}; + char command[] = "7zG.exe a -ad gui-test.7z gui-input.bin"; + Check(CreateProcessA(NULL, command, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi), "launch 7zG"); + processId = pi.dwProcessId; + for (int i = 0; i < 300 && !dialog; ++i) { EnumWindows(Find, 0); Sleep(100); } + Check(dialog != NULL, "compression dialog found"); + Sleep(1500); + Check(FindItem(IDC_COMPRESS_METHOD, "anyz2") == -1, "anyz2 absent from compressors"); + Check(FindItem(IDC_COMPRESS_PREPROCESS, "anyz2") >= 0, "anyz2 in preprocessing"); + Select(IDC_COMPRESS_FORMAT, FindItem(IDC_COMPRESS_FORMAT, "zip")); + Check(!Enabled(), "ZIP disables preprocessing"); + Select(IDC_COMPRESS_FORMAT, FindItem(IDC_COMPRESS_FORMAT, "7z")); + Select(IDC_COMPRESS_LEVEL, 0); + Check(!Enabled(), "Store disables preprocessing"); + Select(IDC_COMPRESS_LEVEL, 3); + Check(Enabled(), "compressed 7z enables preprocessing"); + HWND sfx = GetDlgItem(dialog, IDX_COMPRESS_SFX); + SendMessageA(sfx, BM_CLICK, 0, 0); + Check(!Enabled(), "SFX disables preprocessing"); + SendMessageA(sfx, BM_CLICK, 0, 0); + Check(Enabled(), "return from SFX restores preprocessing"); + Select(IDC_COMPRESS_METHOD, FindItem(IDC_COMPRESS_METHOD, "BZip2")); + Check(!Enabled(), "unsupported probe coder disables preprocessing"); + Select(IDC_COMPRESS_METHOD, FindItem(IDC_COMPRESS_METHOD, "PPMd")); + Check(Enabled(), "PPMd supports preprocessing"); + Select(IDC_COMPRESS_DICTIONARY, FindItem(IDC_COMPRESS_DICTIONARY, "16 MB")); + Select(IDC_COMPRESS_ORDER, FindItem(IDC_COMPRESS_ORDER, "16")); + Select(IDC_COMPRESS_PREPROCESS, FindItem(IDC_COMPRESS_PREPROCESS, "anyz2")); + SetWindowTextA(GetDlgItem(dialog, IDC_COMPRESS_ARCHIVE), "gui-test.7z"); + FILE *f = std::fopen("gui-ready", "w"); if (f) std::fclose(f); + Sleep(2500); + SendMessageA(GetDlgItem(dialog, IDOK), BM_CLICK, 0, 0); + Check(WaitForSingleObject(pi.hProcess, 90000) == WAIT_OBJECT_0, "GUI compression completed"); + DWORD result = 1; GetExitCodeProcess(pi.hProcess, &result); + Check(result == 0, "GUI compression successful"); + CloseHandle(pi.hProcess); CloseHandle(pi.hThread); + std::puts("GUI categories, ZIP, Store, SFX, BZip2, PPMd and compression passed"); +} diff --git a/tests/transpose_streams.cpp b/tests/transpose_streams.cpp new file mode 100644 index 000000000..2943b63c4 --- /dev/null +++ b/tests/transpose_streams.cpp @@ -0,0 +1,128 @@ +#include +#include +#include +#include +#include "../CPP/Common/MyInitGuid.h" +#include "../CPP/7zip/Common/FilterCoder.h" +#include "../CPP/7zip/Compress/TransposeFilter.cpp" + +void RegisterCodec(const CCodecInfo *) throw() {} +using namespace NCompress::NTranspose; + +class Input final: public ISequentialInStream, public CMyUnknownImp { +public: + std::vector data; + size_t pos; + UInt32 chunk; + Input(const std::vector& d, UInt32 c): data(d), pos(0), chunk(c) {} + Z7_IFACES_IMP_UNK_1(ISequentialInStream) +}; +Z7_COM7F_IMF(Input::Read(void *buf, UInt32 size, UInt32 *done)) { + size = (UInt32)std::min(std::min(size, chunk), data.size() - pos); + if (size) memcpy(buf, data.data() + pos, size); + pos += size; *done = size; return S_OK; +} +class Output final: public ISequentialOutStream, public CMyUnknownImp { +public: + std::vector data; + Z7_IFACES_IMP_UNK_1(ISequentialOutStream) +}; +Z7_COM7F_IMF(Output::Write(const void *buf, UInt32 size, UInt32 *done)) { + size = std::min(size, 131); + const Byte *p = (const Byte *)buf; + data.insert(data.end(), p, p + size); + if (done) *done = size; + return S_OK; +} + +static std::vector Run(const std::vector& data, unsigned R, + unsigned exp, bool encode, unsigned path, UInt32 buffer) { + CFilterCoder coder(encode); + if (encode) { + CEncoder *enc = new CEncoder; + coder.Filter = enc; + PROPID id = NCoderPropID::kDefaultProp; + PROPVARIANT value = {}; value.vt = VT_UI4; value.ulVal = R; + assert(static_cast(enc)->SetCoderProperties(&id, &value, 1) == S_OK); + // PickExp(size) == exp. + id = NCoderPropID::kExpectedDataSize; + value.vt = VT_UI8; value.uhVal.QuadPart = (UInt64)32 << exp; + assert(static_cast(enc)->SetCoderPropertiesOpt(&id, &value, 1) == S_OK); + } else { + CDecoder *dec = new CDecoder; + coder.Filter = dec; + const Byte props[] = {(Byte)(R - 1), (Byte)Transpose_StepExp(R, exp)}; + assert(static_cast(dec)->SetDecoderProperties2(props, 2) == S_OK); + } + assert(static_cast(&coder)->SetInBufSize(0, buffer) == S_OK); + assert(static_cast(&coder)->SetOutBufSize(0, buffer + 123) == S_OK); + Input *in = new Input(data, 137); + CMyComPtr ip = in; + Output *out = new Output; + CMyComPtr op = out; + if (path == 0) { + assert(static_cast(&coder)->Code(ip, op, NULL, NULL, NULL) == S_OK); + } else if (path == 1) { + assert(static_cast(&coder)->SetInStream(ip) == S_OK); + assert(static_cast(&coder)->SetOutStreamSize(NULL) == S_OK); + Byte b[193]; + for (;;) { + UInt32 n; + assert(static_cast(&coder)->Read(b, sizeof(b), &n) == S_OK); + if (!n) break; + out->data.insert(out->data.end(), b, b + n); + } + } else { + assert(static_cast(&coder)->SetOutStream(op) == S_OK); + assert(static_cast(&coder)->SetOutStreamSize(NULL) == S_OK); + size_t pos = 0; + while (pos < data.size()) { + UInt32 n; + assert(static_cast(&coder)->Write(data.data() + pos, (UInt32)std::min(997, data.size() - pos), &n) == S_OK); + assert(n > 0); pos += n; + } + assert(static_cast(&coder)->OutStreamFinish() == S_OK); + } + if (encode) { + Output *props = new Output; + CMyComPtr pp = props; + CMyComPtr wp; + assert(coder.Filter.QueryInterface(IID_ICompressWriteCoderProperties, &wp) == S_OK); + assert(wp->WriteCoderProperties(pp) == S_OK); + assert(props->data.size() == 2 && props->data[0] == R-1); + } + return out->data; +} +int main() { + unsigned count = 0; + for (unsigned R = 1; R <= 256; ++R) { + for (unsigned exp: {12u, 16u}) { + const size_t rows = (size_t)1 << Transpose_StepExp(R, exp); + const size_t block = rows * R; + for (size_t n: {size_t(0), size_t(1), block-1, block, block+1, size_t(65535), size_t(65536), size_t(131073)}) { + std::vector d(n), ref; + unsigned x = 4124; + for (Byte &b: d) { x ^= x << 13; x ^= x >> 17; x ^= x << 5; b = (Byte)x; } + ref = d; + for (size_t off = 0; off + block <= n; off += block) + for (size_t c = 0; c < R; ++c) + for (size_t i = 0; i < rows; ++i) + ref[off + c * rows + i] = d[off + i * R + c]; + for (unsigned path = 0; path < 3; ++path) { + const UInt32 bs = path == 0 ? 4096 : path == 1 ? 65536 : 131072; + auto enc = Run(d, R, exp, true, path, bs); + assert(enc == ref); + assert(Run(enc, R, exp, false, (path + 1) % 3, 4096) == d); + ++count; + } + } + } + } + CDecoder dec; + Byte props[3] = {255, 16, 0}; + for (unsigned len: {0u, 1u, 3u}) assert(static_cast(&dec)->SetDecoderProperties2(props, len) == E_INVALIDARG); + assert(static_cast(&dec)->SetDecoderProperties2(props, 2) == E_INVALIDARG); + props[0] = 0; props[1] = 17; + assert(static_cast(&dec)->SetDecoderProperties2(props, 2) == E_INVALIDARG); + printf("%u stream round trips + independent reference + invalid properties passed\n", count); +}