diff options
author | Igor Pavlov <87184205+ip7z@users.noreply.github.com> | 2021-12-27 00:00:00 +0000 |
---|---|---|
committer | Igor Pavlov <87184205+ip7z@users.noreply.github.com> | 2022-03-18 15:35:13 +0500 |
commit | f19f813537c7aea1c20749c914e756b54a9c3cf5 (patch) | |
tree | 816ba62ca7c0fa19f2eb46d9e9d6f7dd7c3a744d /DOC | |
parent | 98e06a519b63b81986abe76d28887f6984a7732b (diff) | |
download | 7zip-21.07.tar.gz 7zip-21.07.tar.bz2 7zip-21.07.zip |
'21.07'21.07
Diffstat (limited to 'DOC')
-rw-r--r-- | DOC/7zC.txt | 187 | ||||
-rw-r--r-- | DOC/7zFormat.txt | 469 | ||||
-rw-r--r-- | DOC/7zip.hhp | 83 | ||||
-rw-r--r-- | DOC/7zip.wxs | 403 | ||||
-rw-r--r-- | DOC/License.txt | 90 | ||||
-rw-r--r-- | DOC/Methods.txt | 173 | ||||
-rw-r--r-- | DOC/copying.txt | 502 | ||||
-rw-r--r-- | DOC/lzma.txt | 328 | ||||
-rw-r--r-- | DOC/readme.txt | 272 | ||||
-rw-r--r-- | DOC/src-history.txt | 681 | ||||
-rw-r--r-- | DOC/unRarLicense.txt | 41 |
11 files changed, 3229 insertions, 0 deletions
diff --git a/DOC/7zC.txt b/DOC/7zC.txt new file mode 100644 index 0000000..939b720 --- /dev/null +++ b/DOC/7zC.txt | |||
@@ -0,0 +1,187 @@ | |||
1 | 7z ANSI-C Decoder 9.35 | ||
2 | ---------------------- | ||
3 | |||
4 | 7z ANSI-C provides 7z/LZMA decoding. | ||
5 | 7z ANSI-C version is simplified version ported from C++ code. | ||
6 | |||
7 | LZMA is default and general compression method of 7z format | ||
8 | in 7-Zip compression program (www.7-zip.org). LZMA provides high | ||
9 | compression ratio and very fast decompression. | ||
10 | |||
11 | |||
12 | LICENSE | ||
13 | ------- | ||
14 | |||
15 | 7z ANSI-C Decoder is part of the LZMA SDK. | ||
16 | LZMA SDK is written and placed in the public domain by Igor Pavlov. | ||
17 | |||
18 | Files | ||
19 | --------------------- | ||
20 | |||
21 | 7zDecode.* - Low level 7z decoding | ||
22 | 7zExtract.* - High level 7z decoding | ||
23 | 7zHeader.* - .7z format constants | ||
24 | 7zIn.* - .7z archive opening | ||
25 | 7zItem.* - .7z structures | ||
26 | 7zMain.c - Test application | ||
27 | |||
28 | |||
29 | How To Use | ||
30 | ---------- | ||
31 | |||
32 | You can create .7z archive with 7z.exe, 7za.exe or 7zr.exe: | ||
33 | |||
34 | 7z.exe a archive.7z *.htm -r -mx -m0fb=255 | ||
35 | |||
36 | If you have big number of files in archive, and you need fast extracting, | ||
37 | you can use partly-solid archives: | ||
38 | |||
39 | 7za.exe a archive.7z *.htm -ms=512K -r -mx -m0fb=255 -m0d=512K | ||
40 | |||
41 | In that example 7-Zip will use 512KB solid blocks. So it needs to decompress only | ||
42 | 512KB for extracting one file from such archive. | ||
43 | |||
44 | |||
45 | Limitations of current version of 7z ANSI-C Decoder | ||
46 | --------------------------------------------------- | ||
47 | |||
48 | - It reads only "FileName", "Size", "LastWriteTime" and "CRC" information for each file in archive. | ||
49 | - It supports only LZMA and Copy (no compression) methods with BCJ or BCJ2 filters. | ||
50 | - It converts original UTF-16 Unicode file names to UTF-8 Unicode file names. | ||
51 | |||
52 | These limitations will be fixed in future versions. | ||
53 | |||
54 | |||
55 | Using 7z ANSI-C Decoder Test application: | ||
56 | ----------------------------------------- | ||
57 | |||
58 | Usage: 7zDec <command> <archive_name> | ||
59 | |||
60 | <Command>: | ||
61 | e: Extract files from archive | ||
62 | l: List contents of archive | ||
63 | t: Test integrity of archive | ||
64 | |||
65 | Example: | ||
66 | |||
67 | 7zDec l archive.7z | ||
68 | |||
69 | lists contents of archive.7z | ||
70 | |||
71 | 7zDec e archive.7z | ||
72 | |||
73 | extracts files from archive.7z to current folder. | ||
74 | |||
75 | |||
76 | How to use .7z Decoder | ||
77 | ---------------------- | ||
78 | |||
79 | Memory allocation | ||
80 | ~~~~~~~~~~~~~~~~~ | ||
81 | |||
82 | 7z Decoder uses two memory pools: | ||
83 | 1) Temporary pool | ||
84 | 2) Main pool | ||
85 | Such scheme can allow you to avoid fragmentation of allocated blocks. | ||
86 | |||
87 | |||
88 | Steps for using 7z decoder | ||
89 | -------------------------- | ||
90 | |||
91 | Use code at 7zMain.c as example. | ||
92 | |||
93 | 1) Declare variables: | ||
94 | inStream /* implements ILookInStream interface */ | ||
95 | CSzArEx db; /* 7z archive database structure */ | ||
96 | ISzAlloc allocImp; /* memory functions for main pool */ | ||
97 | ISzAlloc allocTempImp; /* memory functions for temporary pool */ | ||
98 | |||
99 | 2) call CrcGenerateTable(); function to initialize CRC structures. | ||
100 | |||
101 | 3) call SzArEx_Init(&db); function to initialize db structures. | ||
102 | |||
103 | 4) call SzArEx_Open(&db, inStream, &allocMain, &allocTemp) to open archive | ||
104 | |||
105 | This function opens archive "inStream" and reads headers to "db". | ||
106 | All items in "db" will be allocated with "allocMain" functions. | ||
107 | SzArEx_Open function allocates and frees temporary structures by "allocTemp" functions. | ||
108 | |||
109 | 5) List items or Extract items | ||
110 | |||
111 | Listing code: | ||
112 | ~~~~~~~~~~~~~ | ||
113 | |||
114 | Use SzArEx_GetFileNameUtf16 function. Look example code in C\Util\7z\7zMain.c file. | ||
115 | |||
116 | |||
117 | Extracting code: | ||
118 | ~~~~~~~~~~~~~~~~ | ||
119 | |||
120 | SZ_RESULT SzAr_Extract( | ||
121 | CArchiveDatabaseEx *db, | ||
122 | ILookInStream *inStream, | ||
123 | UInt32 fileIndex, /* index of file */ | ||
124 | UInt32 *blockIndex, /* index of solid block */ | ||
125 | Byte **outBuffer, /* pointer to pointer to output buffer (allocated with allocMain) */ | ||
126 | size_t *outBufferSize, /* buffer size for output buffer */ | ||
127 | size_t *offset, /* offset of stream for required file in *outBuffer */ | ||
128 | size_t *outSizeProcessed, /* size of file in *outBuffer */ | ||
129 | ISzAlloc *allocMain, | ||
130 | ISzAlloc *allocTemp); | ||
131 | |||
132 | If you need to decompress more than one file, you can send these values from previous call: | ||
133 | blockIndex, | ||
134 | outBuffer, | ||
135 | outBufferSize, | ||
136 | You can consider "outBuffer" as cache of solid block. If your archive is solid, | ||
137 | it will increase decompression speed. | ||
138 | |||
139 | After decompressing you must free "outBuffer": | ||
140 | allocImp.Free(outBuffer); | ||
141 | |||
142 | 6) call SzArEx_Free(&db, allocImp.Free) to free allocated items in "db". | ||
143 | |||
144 | |||
145 | |||
146 | |||
147 | Memory requirements for .7z decoding | ||
148 | ------------------------------------ | ||
149 | |||
150 | Memory usage for Archive opening: | ||
151 | - Temporary pool: | ||
152 | - Memory for uncompressed .7z headers | ||
153 | - some other temporary blocks | ||
154 | - Main pool: | ||
155 | - Memory for database: | ||
156 | Estimated size of one file structures in solid archive: | ||
157 | - Size (4 or 8 Bytes) | ||
158 | - CRC32 (4 bytes) | ||
159 | - LastWriteTime (8 bytes) | ||
160 | - Some file information (4 bytes) | ||
161 | - File Name (variable length) + pointer + allocation structures | ||
162 | |||
163 | Memory usage for archive Decompressing: | ||
164 | - Temporary pool: | ||
165 | - Memory for LZMA decompressing structures | ||
166 | - Main pool: | ||
167 | - Memory for decompressed solid block | ||
168 | - Memory for temprorary buffers, if BCJ2 fileter is used. Usually these | ||
169 | temprorary buffers can be about 15% of solid block size. | ||
170 | |||
171 | |||
172 | 7z Decoder doesn't allocate memory for compressed blocks. | ||
173 | Instead of this, you must allocate buffer with desired | ||
174 | size before calling 7z Decoder. Use 7zMain.c as example. | ||
175 | |||
176 | |||
177 | Defines | ||
178 | ------- | ||
179 | |||
180 | _SZ_ALLOC_DEBUG - define it if you want to debug alloc/free operations to stderr. | ||
181 | |||
182 | |||
183 | --- | ||
184 | |||
185 | http://www.7-zip.org | ||
186 | http://www.7-zip.org/sdk.html | ||
187 | http://www.7-zip.org/support.html | ||
diff --git a/DOC/7zFormat.txt b/DOC/7zFormat.txt new file mode 100644 index 0000000..74cdfa4 --- /dev/null +++ b/DOC/7zFormat.txt | |||
@@ -0,0 +1,469 @@ | |||
1 | 7z Format description (18.06) | ||
2 | ---------------------------- | ||
3 | |||
4 | This file contains description of 7z archive format. | ||
5 | 7z archive can contain files compressed with any method. | ||
6 | See "Methods.txt" for description for defined compressing methods. | ||
7 | |||
8 | |||
9 | Format structure Overview | ||
10 | ------------------------- | ||
11 | |||
12 | Some fields can be optional. | ||
13 | |||
14 | Archive structure | ||
15 | ~~~~~~~~~~~~~~~~~ | ||
16 | SignatureHeader | ||
17 | [PackedStreams] | ||
18 | [PackedStreamsForHeaders] | ||
19 | [ | ||
20 | Header | ||
21 | or | ||
22 | { | ||
23 | Packed Header | ||
24 | HeaderInfo | ||
25 | } | ||
26 | ] | ||
27 | |||
28 | |||
29 | |||
30 | Header structure | ||
31 | ~~~~~~~~~~~~~~~~ | ||
32 | { | ||
33 | ArchiveProperties | ||
34 | AdditionalStreams | ||
35 | { | ||
36 | PackInfo | ||
37 | { | ||
38 | PackPos | ||
39 | NumPackStreams | ||
40 | Sizes[NumPackStreams] | ||
41 | CRCs[NumPackStreams] | ||
42 | } | ||
43 | CodersInfo | ||
44 | { | ||
45 | NumFolders | ||
46 | Folders[NumFolders] | ||
47 | { | ||
48 | NumCoders | ||
49 | CodersInfo[NumCoders] | ||
50 | { | ||
51 | ID | ||
52 | NumInStreams; | ||
53 | NumOutStreams; | ||
54 | PropertiesSize | ||
55 | Properties[PropertiesSize] | ||
56 | } | ||
57 | NumBindPairs | ||
58 | BindPairsInfo[NumBindPairs] | ||
59 | { | ||
60 | InIndex; | ||
61 | OutIndex; | ||
62 | } | ||
63 | PackedIndices | ||
64 | } | ||
65 | UnPackSize[Folders][Folders.NumOutstreams] | ||
66 | CRCs[NumFolders] | ||
67 | } | ||
68 | SubStreamsInfo | ||
69 | { | ||
70 | NumUnPackStreamsInFolders[NumFolders]; | ||
71 | UnPackSizes[] | ||
72 | CRCs[] | ||
73 | } | ||
74 | } | ||
75 | MainStreamsInfo | ||
76 | { | ||
77 | (Same as in AdditionalStreams) | ||
78 | } | ||
79 | FilesInfo | ||
80 | { | ||
81 | NumFiles | ||
82 | Properties[] | ||
83 | { | ||
84 | ID | ||
85 | Size | ||
86 | Data | ||
87 | } | ||
88 | } | ||
89 | } | ||
90 | |||
91 | HeaderInfo structure | ||
92 | ~~~~~~~~~~~~~~~~~~~~ | ||
93 | { | ||
94 | (Same as in AdditionalStreams) | ||
95 | } | ||
96 | |||
97 | |||
98 | |||
99 | Notes about Notation and encoding | ||
100 | --------------------------------- | ||
101 | |||
102 | 7z uses little endian encoding. | ||
103 | |||
104 | 7z archive format has optional headers that are marked as | ||
105 | [] | ||
106 | Header | ||
107 | [] | ||
108 | |||
109 | REAL_UINT64 means real UINT64. | ||
110 | |||
111 | UINT64 means real UINT64 encoded with the following scheme: | ||
112 | |||
113 | Size of encoding sequence depends from first byte: | ||
114 | First_Byte Extra_Bytes Value | ||
115 | (binary) | ||
116 | 0xxxxxxx : ( xxxxxxx ) | ||
117 | 10xxxxxx BYTE y[1] : ( xxxxxx << (8 * 1)) + y | ||
118 | 110xxxxx BYTE y[2] : ( xxxxx << (8 * 2)) + y | ||
119 | ... | ||
120 | 1111110x BYTE y[6] : ( x << (8 * 6)) + y | ||
121 | 11111110 BYTE y[7] : y | ||
122 | 11111111 BYTE y[8] : y | ||
123 | |||
124 | |||
125 | |||
126 | Property IDs | ||
127 | ------------ | ||
128 | |||
129 | 0x00 = kEnd | ||
130 | |||
131 | 0x01 = kHeader | ||
132 | |||
133 | 0x02 = kArchiveProperties | ||
134 | |||
135 | 0x03 = kAdditionalStreamsInfo | ||
136 | 0x04 = kMainStreamsInfo | ||
137 | 0x05 = kFilesInfo | ||
138 | |||
139 | 0x06 = kPackInfo | ||
140 | 0x07 = kUnPackInfo | ||
141 | 0x08 = kSubStreamsInfo | ||
142 | |||
143 | 0x09 = kSize | ||
144 | 0x0A = kCRC | ||
145 | |||
146 | 0x0B = kFolder | ||
147 | |||
148 | 0x0C = kCodersUnPackSize | ||
149 | 0x0D = kNumUnPackStream | ||
150 | |||
151 | 0x0E = kEmptyStream | ||
152 | 0x0F = kEmptyFile | ||
153 | 0x10 = kAnti | ||
154 | |||
155 | 0x11 = kName | ||
156 | 0x12 = kCTime | ||
157 | 0x13 = kATime | ||
158 | 0x14 = kMTime | ||
159 | 0x15 = kWinAttributes | ||
160 | 0x16 = kComment | ||
161 | |||
162 | 0x17 = kEncodedHeader | ||
163 | |||
164 | 0x18 = kStartPos | ||
165 | 0x19 = kDummy | ||
166 | |||
167 | |||
168 | 7z format headers | ||
169 | ----------------- | ||
170 | |||
171 | SignatureHeader | ||
172 | ~~~~~~~~~~~~~~~ | ||
173 | BYTE kSignature[6] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C}; | ||
174 | |||
175 | ArchiveVersion | ||
176 | { | ||
177 | BYTE Major; // now = 0 | ||
178 | BYTE Minor; // now = 4 | ||
179 | }; | ||
180 | |||
181 | UINT32 StartHeaderCRC; | ||
182 | |||
183 | StartHeader | ||
184 | { | ||
185 | REAL_UINT64 NextHeaderOffset | ||
186 | REAL_UINT64 NextHeaderSize | ||
187 | UINT32 NextHeaderCRC | ||
188 | } | ||
189 | |||
190 | |||
191 | ........................... | ||
192 | |||
193 | |||
194 | ArchiveProperties | ||
195 | ~~~~~~~~~~~~~~~~~ | ||
196 | BYTE NID::kArchiveProperties (0x02) | ||
197 | for (;;) | ||
198 | { | ||
199 | BYTE PropertyType; | ||
200 | if (aType == 0) | ||
201 | break; | ||
202 | UINT64 PropertySize; | ||
203 | BYTE PropertyData[PropertySize]; | ||
204 | } | ||
205 | |||
206 | |||
207 | Digests (NumStreams) | ||
208 | ~~~~~~~~~~~~~~~~~~~~~ | ||
209 | BYTE AllAreDefined | ||
210 | if (AllAreDefined == 0) | ||
211 | { | ||
212 | for(NumStreams) | ||
213 | BIT Defined | ||
214 | } | ||
215 | UINT32 CRCs[NumDefined] | ||
216 | |||
217 | |||
218 | PackInfo | ||
219 | ~~~~~~~~~~~~ | ||
220 | BYTE NID::kPackInfo (0x06) | ||
221 | UINT64 PackPos | ||
222 | UINT64 NumPackStreams | ||
223 | |||
224 | [] | ||
225 | BYTE NID::kSize (0x09) | ||
226 | UINT64 PackSizes[NumPackStreams] | ||
227 | [] | ||
228 | |||
229 | [] | ||
230 | BYTE NID::kCRC (0x0A) | ||
231 | PackStreamDigests[NumPackStreams] | ||
232 | [] | ||
233 | |||
234 | BYTE NID::kEnd | ||
235 | |||
236 | |||
237 | Folder | ||
238 | ~~~~~~ | ||
239 | UINT64 NumCoders; | ||
240 | for (NumCoders) | ||
241 | { | ||
242 | BYTE | ||
243 | { | ||
244 | 0:3 CodecIdSize | ||
245 | 4: Is Complex Coder | ||
246 | 5: There Are Attributes | ||
247 | 6: Reserved | ||
248 | 7: There are more alternative methods. (Not used anymore, must be 0). | ||
249 | } | ||
250 | BYTE CodecId[CodecIdSize] | ||
251 | if (Is Complex Coder) | ||
252 | { | ||
253 | UINT64 NumInStreams; | ||
254 | UINT64 NumOutStreams; | ||
255 | } | ||
256 | if (There Are Attributes) | ||
257 | { | ||
258 | UINT64 PropertiesSize | ||
259 | BYTE Properties[PropertiesSize] | ||
260 | } | ||
261 | } | ||
262 | |||
263 | NumBindPairs = NumOutStreamsTotal - 1; | ||
264 | |||
265 | for (NumBindPairs) | ||
266 | { | ||
267 | UINT64 InIndex; | ||
268 | UINT64 OutIndex; | ||
269 | } | ||
270 | |||
271 | NumPackedStreams = NumInStreamsTotal - NumBindPairs; | ||
272 | if (NumPackedStreams > 1) | ||
273 | for(NumPackedStreams) | ||
274 | { | ||
275 | UINT64 Index; | ||
276 | }; | ||
277 | |||
278 | |||
279 | |||
280 | |||
281 | Coders Info | ||
282 | ~~~~~~~~~~~ | ||
283 | |||
284 | BYTE NID::kUnPackInfo (0x07) | ||
285 | |||
286 | |||
287 | BYTE NID::kFolder (0x0B) | ||
288 | UINT64 NumFolders | ||
289 | BYTE External | ||
290 | switch(External) | ||
291 | { | ||
292 | case 0: | ||
293 | Folders[NumFolders] | ||
294 | case 1: | ||
295 | UINT64 DataStreamIndex | ||
296 | } | ||
297 | |||
298 | |||
299 | BYTE ID::kCodersUnPackSize (0x0C) | ||
300 | for(Folders) | ||
301 | for(Folder.NumOutStreams) | ||
302 | UINT64 UnPackSize; | ||
303 | |||
304 | |||
305 | [] | ||
306 | BYTE NID::kCRC (0x0A) | ||
307 | UnPackDigests[NumFolders] | ||
308 | [] | ||
309 | |||
310 | |||
311 | |||
312 | BYTE NID::kEnd | ||
313 | |||
314 | |||
315 | |||
316 | SubStreams Info | ||
317 | ~~~~~~~~~~~~~~ | ||
318 | BYTE NID::kSubStreamsInfo; (0x08) | ||
319 | |||
320 | [] | ||
321 | BYTE NID::kNumUnPackStream; (0x0D) | ||
322 | UINT64 NumUnPackStreamsInFolders[NumFolders]; | ||
323 | [] | ||
324 | |||
325 | |||
326 | [] | ||
327 | BYTE NID::kSize (0x09) | ||
328 | UINT64 UnPackSizes[] | ||
329 | [] | ||
330 | |||
331 | |||
332 | [] | ||
333 | BYTE NID::kCRC (0x0A) | ||
334 | Digests[Number of streams with unknown CRC] | ||
335 | [] | ||
336 | |||
337 | |||
338 | BYTE NID::kEnd | ||
339 | |||
340 | |||
341 | Streams Info | ||
342 | ~~~~~~~~~~~~ | ||
343 | |||
344 | [] | ||
345 | PackInfo | ||
346 | [] | ||
347 | |||
348 | |||
349 | [] | ||
350 | CodersInfo | ||
351 | [] | ||
352 | |||
353 | |||
354 | [] | ||
355 | SubStreamsInfo | ||
356 | [] | ||
357 | |||
358 | BYTE NID::kEnd | ||
359 | |||
360 | |||
361 | FilesInfo | ||
362 | ~~~~~~~~~ | ||
363 | BYTE NID::kFilesInfo; (0x05) | ||
364 | UINT64 NumFiles | ||
365 | |||
366 | for (;;) | ||
367 | { | ||
368 | BYTE PropertyType; | ||
369 | if (aType == 0) | ||
370 | break; | ||
371 | |||
372 | UINT64 Size; | ||
373 | |||
374 | switch(PropertyType) | ||
375 | { | ||
376 | kEmptyStream: (0x0E) | ||
377 | for(NumFiles) | ||
378 | BIT IsEmptyStream | ||
379 | |||
380 | kEmptyFile: (0x0F) | ||
381 | for(EmptyStreams) | ||
382 | BIT IsEmptyFile | ||
383 | |||
384 | kAnti: (0x10) | ||
385 | for(EmptyStreams) | ||
386 | BIT IsAntiFile | ||
387 | |||
388 | case kCTime: (0x12) | ||
389 | case kATime: (0x13) | ||
390 | case kMTime: (0x14) | ||
391 | BYTE AllAreDefined | ||
392 | if (AllAreDefined == 0) | ||
393 | { | ||
394 | for(NumFiles) | ||
395 | BIT TimeDefined | ||
396 | } | ||
397 | BYTE External; | ||
398 | if(External != 0) | ||
399 | UINT64 DataIndex | ||
400 | [] | ||
401 | for(Definded Items) | ||
402 | REAL_UINT64 Time | ||
403 | [] | ||
404 | |||
405 | kNames: (0x11) | ||
406 | BYTE External; | ||
407 | if(External != 0) | ||
408 | UINT64 DataIndex | ||
409 | [] | ||
410 | for(Files) | ||
411 | { | ||
412 | wchar_t Names[NameSize]; | ||
413 | wchar_t 0; | ||
414 | } | ||
415 | [] | ||
416 | |||
417 | kAttributes: (0x15) | ||
418 | BYTE AllAreDefined | ||
419 | if (AllAreDefined == 0) | ||
420 | { | ||
421 | for(NumFiles) | ||
422 | BIT AttributesAreDefined | ||
423 | } | ||
424 | BYTE External; | ||
425 | if(External != 0) | ||
426 | UINT64 DataIndex | ||
427 | [] | ||
428 | for(Definded Attributes) | ||
429 | UINT32 Attributes | ||
430 | [] | ||
431 | } | ||
432 | } | ||
433 | |||
434 | |||
435 | Header | ||
436 | ~~~~~~ | ||
437 | BYTE NID::kHeader (0x01) | ||
438 | |||
439 | [] | ||
440 | ArchiveProperties | ||
441 | [] | ||
442 | |||
443 | [] | ||
444 | BYTE NID::kAdditionalStreamsInfo; (0x03) | ||
445 | StreamsInfo | ||
446 | [] | ||
447 | |||
448 | [] | ||
449 | BYTE NID::kMainStreamsInfo; (0x04) | ||
450 | StreamsInfo | ||
451 | [] | ||
452 | |||
453 | [] | ||
454 | FilesInfo | ||
455 | [] | ||
456 | |||
457 | BYTE NID::kEnd | ||
458 | |||
459 | |||
460 | HeaderInfo | ||
461 | ~~~~~~~~~~ | ||
462 | [] | ||
463 | BYTE NID::kEncodedHeader; (0x17) | ||
464 | StreamsInfo for Encoded Header | ||
465 | [] | ||
466 | |||
467 | |||
468 | --- | ||
469 | End of document | ||
diff --git a/DOC/7zip.hhp b/DOC/7zip.hhp new file mode 100644 index 0000000..6c6bd70 --- /dev/null +++ b/DOC/7zip.hhp | |||
@@ -0,0 +1,83 @@ | |||
1 | [OPTIONS] | ||
2 | Compatibility=1.1 or later | ||
3 | Compiled file=7-zip.chm | ||
4 | Contents file=7zip.hhc | ||
5 | Default topic=start.htm | ||
6 | Display compile progress=No | ||
7 | Full-text search=Yes | ||
8 | Index file=7zip.hhk | ||
9 | Language=0x409 English (United States) | ||
10 | |||
11 | |||
12 | [FILES] | ||
13 | start.htm | ||
14 | general\thanks.htm | ||
15 | general\faq.htm | ||
16 | general\formats.htm | ||
17 | general\index.htm | ||
18 | general\license.htm | ||
19 | general\performance.htm | ||
20 | general\7z.htm | ||
21 | cmdline\index.htm | ||
22 | cmdline\syntax.htm | ||
23 | cmdline\exit_codes.htm | ||
24 | cmdline\commands\add.htm | ||
25 | cmdline\commands\bench.htm | ||
26 | cmdline\commands\delete.htm | ||
27 | cmdline\commands\extract.htm | ||
28 | cmdline\commands\extract_full.htm | ||
29 | cmdline\commands\update.htm | ||
30 | cmdline\commands\hash.htm | ||
31 | cmdline\commands\index.htm | ||
32 | cmdline\commands\list.htm | ||
33 | cmdline\commands\rename.htm | ||
34 | cmdline\commands\test.htm | ||
35 | cmdline\switches\index.htm | ||
36 | cmdline\switches\yes.htm | ||
37 | cmdline\switches\include.htm | ||
38 | cmdline\switches\method.htm | ||
39 | cmdline\switches\ar_include.htm | ||
40 | cmdline\switches\ar_exclude.htm | ||
41 | cmdline\switches\ar_no.htm | ||
42 | cmdline\switches\bb.htm | ||
43 | cmdline\switches\bs.htm | ||
44 | cmdline\switches\charset.htm | ||
45 | cmdline\switches\email.htm | ||
46 | cmdline\switches\list_tech.htm | ||
47 | cmdline\switches\large_pages.htm | ||
48 | cmdline\switches\output_dir.htm | ||
49 | cmdline\switches\overwrite.htm | ||
50 | cmdline\switches\password.htm | ||
51 | cmdline\switches\recurse.htm | ||
52 | cmdline\switches\sa.htm | ||
53 | cmdline\switches\scc.htm | ||
54 | cmdline\switches\scrc.htm | ||
55 | cmdline\switches\sdel.htm | ||
56 | cmdline\switches\sfx.htm | ||
57 | cmdline\switches\shared.htm | ||
58 | cmdline\switches\sni.htm | ||
59 | cmdline\switches\sns.htm | ||
60 | cmdline\switches\spf.htm | ||
61 | cmdline\switches\spm.htm | ||
62 | cmdline\switches\ssc.htm | ||
63 | cmdline\switches\stdin.htm | ||
64 | cmdline\switches\stdout.htm | ||
65 | cmdline\switches\stl.htm | ||
66 | cmdline\switches\stop_switch.htm | ||
67 | cmdline\switches\stx.htm | ||
68 | cmdline\switches\type.htm | ||
69 | cmdline\switches\update.htm | ||
70 | cmdline\switches\working_dir.htm | ||
71 | cmdline\switches\exclude.htm | ||
72 | fm\options.htm | ||
73 | fm\benchmark.htm | ||
74 | fm\index.htm | ||
75 | fm\menu.htm | ||
76 | fm\about.htm | ||
77 | fm\plugins\index.htm | ||
78 | fm\plugins\7-zip\extract.htm | ||
79 | fm\plugins\7-zip\index.htm | ||
80 | fm\plugins\7-zip\add.htm | ||
81 | |||
82 | [INFOTYPES] | ||
83 | |||
diff --git a/DOC/7zip.wxs b/DOC/7zip.wxs new file mode 100644 index 0000000..fdc63ce --- /dev/null +++ b/DOC/7zip.wxs | |||
@@ -0,0 +1,403 @@ | |||
1 | <?xml version="1.0"?> | ||
2 | |||
3 | <?define VerMajor = "21" ?> | ||
4 | <?define VerMinor = "07" ?> | ||
5 | <?define VerBuild = "00" ?> | ||
6 | <?define MmVer = "$(var.VerMajor).$(var.VerMinor)" ?> | ||
7 | <?define MmHex = "$(var.VerMajor)$(var.VerMinor)" ?> | ||
8 | <?define MmmmVer = "$(var.MmVer).$(var.VerBuild).0" ?> | ||
9 | <?define UpgradeMinVer = "4.38" ?> | ||
10 | |||
11 | <?define ProductName = "7-Zip" ?> | ||
12 | |||
13 | <?ifndef MyCPU?> | ||
14 | <?define MyCPU = "Intel" ?> | ||
15 | <?endif?> | ||
16 | |||
17 | <?if $(var.MyCPU) = "x64" ?> | ||
18 | <?define CpuId = "2" ?> | ||
19 | <?define PFilesFolder = "ProgramFiles64Folder" ?> | ||
20 | <?define Platforms = "x64" ?> | ||
21 | <?define CpuPostfix = " (x64 edition)" ?> | ||
22 | <?define Is64 = "yes" ?> | ||
23 | <?define NumBits = "64" ?> | ||
24 | <?elseif $(var.MyCPU) = "ia64" ?> | ||
25 | <?define CpuId = "3" ?> | ||
26 | <?define PFilesFolder = "ProgramFiles64Folder" ?> | ||
27 | <?define Platforms = "Intel64" ?> | ||
28 | <?define CpuPostfix = " (ia64 edition)" ?> | ||
29 | <?define Is64 = "yes" ?> | ||
30 | <?define NumBits = "64" ?> | ||
31 | <?else ?> | ||
32 | <?define CpuId = "1" ?> | ||
33 | <?define PFilesFolder = "ProgramFilesFolder" ?> | ||
34 | <?define Platforms = "Intel" ?> | ||
35 | <?define CpuPostfix = "" ?> | ||
36 | <?define Is64 = "no" ?> | ||
37 | <?define NumBits = "32" ?> | ||
38 | <?endif ?> | ||
39 | |||
40 | |||
41 | <?define ShellExtId = "{23170F69-40C1-278A-1000-000100020000}" ?> | ||
42 | |||
43 | <?define BaseId = "23170F69-40C1-270$(var.CpuId)" ?> | ||
44 | <?define BaseIdVer = "$(var.BaseId)-$(var.MmHex)-$(var.VerBuild)00" ?> | ||
45 | <?define ProductId = "$(var.BaseIdVer)01000000" ?> | ||
46 | <?define PackageId = "$(var.BaseIdVer)02000000" ?> | ||
47 | <?define CompId = "$(var.BaseIdVer)030000" ?> | ||
48 | <?define UpgradeCode = "$(var.BaseId)-0000-000004000000" ?> | ||
49 | |||
50 | <?define CompFm = "$(var.CompId)01" ?> | ||
51 | <?define CompShellExt = "$(var.CompId)02" ?> | ||
52 | <?define CompCmdLine = "$(var.CompId)03" ?> | ||
53 | <?define CompCmdLineA = "$(var.CompId)04" ?> | ||
54 | <?define CompGui = "$(var.CompId)05" ?> | ||
55 | <?define CompGuiSfx = "$(var.CompId)06" ?> | ||
56 | <?define CompConSfx = "$(var.CompId)07" ?> | ||
57 | <?define CompHelp = "$(var.CompId)08" ?> | ||
58 | <?define CompDocs = "$(var.CompId)09" ?> | ||
59 | <?define CompFormats = "$(var.CompId)10" ?> | ||
60 | <?define CompCodecs = "$(var.CompId)11" ?> | ||
61 | <?define CompLang = "$(var.CompId)12" ?> | ||
62 | <?define CompShellExt2 = "$(var.CompId)13" ?> | ||
63 | <?define CompInstallRegCU = "$(var.CompId)80" ?> | ||
64 | <?define CompInstallRegLM = "$(var.CompId)81" ?> | ||
65 | <?define CompInstallRegWild = "$(var.CompId)82" ?> | ||
66 | <?define CompInstallRegDirectory = "$(var.CompId)83" ?> | ||
67 | <?define CompInstallRegDirDD = "$(var.CompId)84" ?> | ||
68 | <?define CompInstallRegDriveDD = "$(var.CompId)85" ?> | ||
69 | <?define CompInstallRegApproved = "$(var.CompId)86" ?> | ||
70 | <?define CompInstallRegAppPath = "$(var.CompId)87" ?> | ||
71 | <?define CompInstallRegFolder = "$(var.CompId)88" ?> | ||
72 | |||
73 | |||
74 | <?define Manufacturer = "Igor Pavlov" ?> | ||
75 | <?define HomePage = "http://www.7-zip.org/" ?> | ||
76 | <?define AboutURL = "$(var.HomePage)" ?> | ||
77 | <?define UpdatesURL = "$(var.HomePage)download.html" ?> | ||
78 | <?define SupportURL = "$(var.HomePage)support.html" ?> | ||
79 | |||
80 | <Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi"> | ||
81 | <Product | ||
82 | Id="$(var.ProductId)" | ||
83 | UpgradeCode="$(var.UpgradeCode)" | ||
84 | Name="$(var.ProductName) $(var.MmVer)$(var.CpuPostfix)" | ||
85 | Language="1033" | ||
86 | Version="$(var.MmmmVer)" | ||
87 | Manufacturer="$(var.Manufacturer)"> | ||
88 | |||
89 | <Package | ||
90 | Id="$(var.PackageId)" | ||
91 | Description="$(var.ProductName)$(var.CpuPostfix) Package" | ||
92 | Comments="$(var.ProductName)$(var.CpuPostfix) Package" | ||
93 | Manufacturer="$(var.Manufacturer)" | ||
94 | InstallerVersion="200" | ||
95 | Compressed="yes" | ||
96 | Platforms="$(var.Platforms)" | ||
97 | /> | ||
98 | |||
99 | <!-- Major upgrade --> | ||
100 | <Upgrade Id="$(var.UpgradeCode)"> | ||
101 | <UpgradeVersion Minimum="$(var.UpgradeMinVer)" IncludeMinimum="yes" | ||
102 | Maximum="$(var.MmmmVer)" IncludeMaximum="no" Property="OLDERVERSIONBEINGUPGRADED" /> | ||
103 | </Upgrade> | ||
104 | |||
105 | <Media Id="1" Cabinet="product.cab" EmbedCab="yes" CompressionLevel="high" /> | ||
106 | |||
107 | <Property Id="MSIRMSHUTDOWN" Value="2"/> | ||
108 | |||
109 | <Property Id="INSTALLDIR"> | ||
110 | <RegistrySearch Id="My7zipPathLM" Type="raw" Root="HKLM" Key="Software\7-Zip" Name="Path" /> | ||
111 | <RegistrySearch Id="My7zipPathLM2" Type="raw" Root="HKLM" Key="Software\7-Zip" Name="Path$(var.NumBits)" /> | ||
112 | <RegistrySearch Id="My7zipPath" Type="raw" Root="HKCU" Key="Software\7-Zip" Name="Path" /> | ||
113 | <RegistrySearch Id="My7zipPath2" Type="raw" Root="HKCU" Key="Software\7-Zip" Name="Path$(var.NumBits)" /> | ||
114 | </Property> | ||
115 | |||
116 | <Property Id="ALLUSERS">2</Property> | ||
117 | |||
118 | <Property Id="LicenseAccepted">1</Property> | ||
119 | |||
120 | <Property Id="ARPURLINFOABOUT" Value="$(var.AboutURL)" /> | ||
121 | <Property Id="ARPHELPLINK" Value="$(var.SupportURL)" /> | ||
122 | <Property Id="ARPURLUPDATEINFO" Value="$(var.UpdatesURL)" /> | ||
123 | |||
124 | |||
125 | <Directory Id="TARGETDIR" Name="SourceDir"> | ||
126 | <Directory Id="$(var.PFilesFolder)" Name="Files"> | ||
127 | <Directory Id="INSTALLDIR" Name="7-Zip"> | ||
128 | |||
129 | <Component Id="InstallRegCU" Guid="$(var.CompInstallRegCU)" DiskId="1" Win64="$(var.Is64)"> | ||
130 | <Registry Id="MyInstallRegCU" Root="HKCU" Key="Software\7-Zip" Name="Path" Action="write" Type="string" Value="[INSTALLDIR]" /> | ||
131 | <Registry Id="MyInstallRegCU2" Root="HKCU" Key="Software\7-Zip" Name="Path$(var.NumBits)" Action="write" Type="string" Value="[INSTALLDIR]" /> | ||
132 | </Component> | ||
133 | <Component Id="InstallRegLM" Guid="$(var.CompInstallRegLM)" DiskId="1" Win64="$(var.Is64)"> | ||
134 | <Condition>Privileged</Condition> | ||
135 | <Registry Id="MyInstallRegLM" Root="HKLM" Key="Software\7-Zip" Name="Path" Action="write" Type="string" Value="[INSTALLDIR]" /> | ||
136 | <Registry Id="MyInstallRegLM2" Root="HKLM" Key="Software\7-Zip" Name="Path$(var.NumBits)" Action="write" Type="string" Value="[INSTALLDIR]" /> | ||
137 | </Component> | ||
138 | |||
139 | |||
140 | <Component Id="InstallRegWild" Guid="$(var.CompInstallRegWild)" DiskId="1" Win64="$(var.Is64)"> | ||
141 | <Registry Id="MyInstallRegWild" Action="write" Type="string" | ||
142 | Root="HKCR" Key="*\shellex\ContextMenuHandlers\7-Zip" | ||
143 | Value="$(var.ShellExtId)" /> | ||
144 | </Component> | ||
145 | |||
146 | <Component Id="InstallRegDirectory" Guid="$(var.CompInstallRegDirectory)" DiskId="1" Win64="$(var.Is64)"> | ||
147 | <Registry Id="MyInstallRegDirectory" Action="write" Type="string" | ||
148 | Root="HKCR" Key="Directory\shellex\ContextMenuHandlers\7-Zip" | ||
149 | Value="$(var.ShellExtId)" /> | ||
150 | </Component> | ||
151 | |||
152 | <Component Id="InstallRegFolder" Guid="$(var.CompInstallRegFolder)" DiskId="1" Win64="$(var.Is64)"> | ||
153 | <Registry Id="MyInstallRegFolder" Action="write" Type="string" | ||
154 | Root="HKCR" Key="Folder\shellex\ContextMenuHandlers\7-Zip" | ||
155 | Value="$(var.ShellExtId)" /> | ||
156 | </Component> | ||
157 | |||
158 | <Component Id="InstallRegDirDD" Guid="$(var.CompInstallRegDirDD)" DiskId="1" Win64="$(var.Is64)"> | ||
159 | <Registry Id="MyInstallRegDirDD" Action="write" Type="string" | ||
160 | Root="HKCR" Key="Directory\shellex\DragDropHandlers\7-Zip" | ||
161 | Value="$(var.ShellExtId)" /> | ||
162 | </Component> | ||
163 | |||
164 | <Component Id="InstallRegDriveDD" Guid="$(var.CompInstallRegDriveDD)" DiskId="1" Win64="$(var.Is64)"> | ||
165 | <Registry Id="MyInstallRegDriveDD" Action="write" Type="string" | ||
166 | Root="HKCR" Key="Drive\shellex\DragDropHandlers\7-Zip" | ||
167 | Value="$(var.ShellExtId)" /> | ||
168 | </Component> | ||
169 | |||
170 | <Component Id="InstallRegApproved" Guid="$(var.CompInstallRegApproved)" DiskId="1" Win64="$(var.Is64)"> | ||
171 | <Condition>Privileged</Condition> | ||
172 | <Registry Id="MyInstallRegApproved" Action="write" Type="string" | ||
173 | Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved" | ||
174 | Name="$(var.ShellExtId)" Value="7-Zip Shell Extension" /> | ||
175 | </Component> | ||
176 | |||
177 | |||
178 | <Component Id="InstallRegAppPath" Guid="$(var.CompInstallRegAppPath)" DiskId="1" Win64="$(var.Is64)"> | ||
179 | <Condition>Privileged</Condition> | ||
180 | <Registry Id="MyInstallRegAppPath" Action="write" Type="string" | ||
181 | Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe" | ||
182 | Value="[INSTALLDIR]7zFM.exe" /> | ||
183 | <Registry Id="MyInstallRegAppPath2" Action="write" Type="string" | ||
184 | Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe" Name="Path" | ||
185 | Value="[INSTALLDIR]" /> | ||
186 | </Component> | ||
187 | |||
188 | <Component Id="Fm" Guid="$(var.CompFm)" DiskId="1" Win64="$(var.Is64)"> | ||
189 | <File Id="_7zFM.exe" Name="7zFM.exe"> | ||
190 | <Shortcut Id="startmenuFmShortcut" Directory="PMenu" Name="7zipFM" LongName="7-Zip File Manager" /> | ||
191 | </File> | ||
192 | </Component> | ||
193 | |||
194 | <?if $(var.MyCPU) = "x64" ?> | ||
195 | |||
196 | <Component Id="ShellExt32" Guid="$(var.CompShellExt2)" DiskId="1" Win64="no"> | ||
197 | <File Id="_7zip32.dll" Name="7-zip32.dll" /> | ||
198 | <Registry Id="shellReg0_32" Action="write" Type="string" Root="HKCR" | ||
199 | Key="CLSID\$(var.ShellExtId)\InprocServer32" | ||
200 | Value="[INSTALLDIR]7-zip32.dll" /> | ||
201 | <Registry Id="shellReg1_32" Action="write" Type="string" Root="HKCR" | ||
202 | Key="CLSID\$(var.ShellExtId)\InprocServer32" | ||
203 | Name="ThreadingModel" | ||
204 | Value="Apartment" /> | ||
205 | </Component> | ||
206 | |||
207 | <?endif ?> | ||
208 | |||
209 | <Component Id="ShellExt" Guid="$(var.CompShellExt)" DiskId="1" Win64="$(var.Is64)"> | ||
210 | <File Id="_7zip.dll" Name="7-zip.dll" /> | ||
211 | <Registry Id="shellReg0" Action="write" Type="string" Root="HKCR" | ||
212 | Key="CLSID\$(var.ShellExtId)\InprocServer32" | ||
213 | Value="[INSTALLDIR]7-zip.dll" /> | ||
214 | <Registry Id="shellReg1" Action="write" Type="string" Root="HKCR" | ||
215 | Key="CLSID\$(var.ShellExtId)\InprocServer32" | ||
216 | Name="ThreadingModel" | ||
217 | Value="Apartment" /> | ||
218 | </Component> | ||
219 | |||
220 | <Component Id="Gui" Guid="$(var.CompGui)" DiskId="1" Win64="$(var.Is64)"> | ||
221 | <File Id="_7zG.exe" Name="7zG.exe" /> | ||
222 | </Component> | ||
223 | |||
224 | <Component Id="Formats" Guid="$(var.CompFormats)" DiskId="1" Win64="$(var.Is64)"> | ||
225 | <File Id="_7z.dll" Name="7z.dll" /> | ||
226 | </Component> | ||
227 | |||
228 | <Component Id="CmdLine" Guid="$(var.CompCmdLine)" DiskId="1" Win64="$(var.Is64)"> | ||
229 | <File Id="_7z.exe" Name="7z.exe" /> | ||
230 | </Component> | ||
231 | |||
232 | <Component Id="GuiSfx" Guid="$(var.CompGuiSfx)" DiskId="1" Win64="$(var.Is64)"> | ||
233 | <File Id="_7z.sfx" Name="7z.sfx" /> | ||
234 | </Component> | ||
235 | |||
236 | <Component Id="ConSfx" Guid="$(var.CompConSfx)" DiskId="1" Win64="$(var.Is64)"> | ||
237 | <File Id="_7zCon.sfx" Name="7zCon.sfx" /> | ||
238 | </Component> | ||
239 | |||
240 | <Component Id="Docs" Guid="$(var.CompDocs)" DiskId="1" Win64="$(var.Is64)"> | ||
241 | <File Id="descript.ion" Name="descript.ion" /> | ||
242 | <File Id="History.txt" Name="History.txt" /> | ||
243 | <File Id="License.txt" Name="License.txt" /> | ||
244 | <File Id="readme.txt" Name="readme.txt" /> | ||
245 | </Component> | ||
246 | |||
247 | |||
248 | <Component Id="Help" Guid="$(var.CompHelp)"> | ||
249 | <File Id="_7zip.chm" Name="7-zip.chm" DiskId="1" > | ||
250 | <Shortcut Id="startmenuHelpShortcut" Directory="PMenu" Name="7zipHelp" LongName="7-Zip Help" /> | ||
251 | </File> | ||
252 | </Component> | ||
253 | |||
254 | <Directory Id="MyLang" Name="Lang"> | ||
255 | <Component Id="Lang" Guid="$(var.CompLang)" DiskId="1" Win64="$(var.Is64)"> | ||
256 | <File Id="en.ttt" Name="en.ttt" /> | ||
257 | <File Id="af.txt" Name="af.txt" /> | ||
258 | <File Id="an.txt" Name="an.txt" /> | ||
259 | <File Id="ar.txt" Name="ar.txt" /> | ||
260 | <File Id="ast.txt" Name="ast.txt" /> | ||
261 | <File Id="az.txt" Name="az.txt" /> | ||
262 | <File Id="ba.txt" Name="ba.txt" /> | ||
263 | <File Id="be.txt" Name="be.txt" /> | ||
264 | <File Id="bg.txt" Name="bg.txt" /> | ||
265 | <File Id="bn.txt" Name="bn.txt" /> | ||
266 | <File Id="br.txt" Name="br.txt" /> | ||
267 | <File Id="ca.txt" Name="ca.txt" /> | ||
268 | <File Id="co.txt" Name="co.txt" /> | ||
269 | <File Id="cs.txt" Name="cs.txt" /> | ||
270 | <File Id="cy.txt" Name="cy.txt" /> | ||
271 | <File Id="da.txt" Name="da.txt" /> | ||
272 | <File Id="de.txt" Name="de.txt" /> | ||
273 | <File Id="el.txt" Name="el.txt" /> | ||
274 | <File Id="eo.txt" Name="eo.txt" /> | ||
275 | <File Id="es.txt" Name="es.txt" /> | ||
276 | <File Id="et.txt" Name="et.txt" /> | ||
277 | <File Id="eu.txt" Name="eu.txt" /> | ||
278 | <File Id="ext.txt" Name="ext.txt" /> | ||
279 | <File Id="fa.txt" Name="fa.txt" /> | ||
280 | <File Id="fi.txt" Name="fi.txt" /> | ||
281 | <File Id="fr.txt" Name="fr.txt" /> | ||
282 | <File Id="fur.txt" Name="fur.txt" /> | ||
283 | <File Id="fy.txt" Name="fy.txt" /> | ||
284 | <File Id="ga.txt" Name="ga.txt" /> | ||
285 | <File Id="gl.txt" Name="gl.txt" /> | ||
286 | <File Id="gu.txt" Name="gu.txt" /> | ||
287 | <File Id="he.txt" Name="he.txt" /> | ||
288 | <File Id="hi.txt" Name="hi.txt" /> | ||
289 | <File Id="hr.txt" Name="hr.txt" /> | ||
290 | <File Id="hu.txt" Name="hu.txt" /> | ||
291 | <File Id="hy.txt" Name="hy.txt" /> | ||
292 | <File Id="id.txt" Name="id.txt" /> | ||
293 | <File Id="io.txt" Name="io.txt" /> | ||
294 | <File Id="is.txt" Name="is.txt" /> | ||
295 | <File Id="it.txt" Name="it.txt" /> | ||
296 | <File Id="ja.txt" Name="ja.txt" /> | ||
297 | <File Id="ka.txt" Name="ka.txt" /> | ||
298 | <File Id="kaa.txt" Name="kaa.txt" /> | ||
299 | <File Id="kab.txt" Name="kab.txt" /> | ||
300 | <File Id="kk.txt" Name="kk.txt" /> | ||
301 | <File Id="ko.txt" Name="ko.txt" /> | ||
302 | <File Id="ku.txt" Name="ku.txt" /> | ||
303 | <File Id="ku_ckb.txt" Name="ku-ckb.txt" /> | ||
304 | <File Id="ky.txt" Name="ky.txt" /> | ||
305 | <File Id="lij.txt" Name="lij.txt" /> | ||
306 | <File Id="lt.txt" Name="lt.txt" /> | ||
307 | <File Id="lv.txt" Name="lv.txt" /> | ||
308 | <File Id="mk.txt" Name="mk.txt" /> | ||
309 | <File Id="mn.txt" Name="mn.txt" /> | ||
310 | <File Id="mng.txt" Name="mng.txt" /> | ||
311 | <File Id="mng2.txt" Name="mng2.txt" /> | ||
312 | <File Id="mr.txt" Name="mr.txt" /> | ||
313 | <File Id="ms.txt" Name="ms.txt" /> | ||
314 | <File Id="ne.txt" Name="ne.txt" /> | ||
315 | <File Id="nl.txt" Name="nl.txt" /> | ||
316 | <File Id="nb.txt" Name="nb.txt" /> | ||
317 | <File Id="nn.txt" Name="nn.txt" /> | ||
318 | <File Id="pa_in.txt" Name="pa-in.txt" /> | ||
319 | <File Id="pl.txt" Name="pl.txt" /> | ||
320 | <File Id="ps.txt" Name="ps.txt" /> | ||
321 | <File Id="pt.txt" Name="pt.txt" /> | ||
322 | <File Id="pt_br.txt" Name="pt-br.txt" /> | ||
323 | <File Id="ro.txt" Name="ro.txt" /> | ||
324 | <File Id="ru.txt" Name="ru.txt" /> | ||
325 | <File Id="sa.txt" Name="sa.txt" /> | ||
326 | <File Id="si.txt" Name="si.txt" /> | ||
327 | <File Id="sk.txt" Name="sk.txt" /> | ||
328 | <File Id="sl.txt" Name="sl.txt" /> | ||
329 | <File Id="sq.txt" Name="sq.txt" /> | ||
330 | <File Id="sr_spl.txt" Name="sr-spl.txt" /> | ||
331 | <File Id="sr_spc.txt" Name="sr-spc.txt" /> | ||
332 | <File Id="sv.txt" Name="sv.txt" /> | ||
333 | <File Id="sw.txt" Name="sw.txt" /> | ||
334 | <File Id="ta.txt" Name="ta.txt" /> | ||
335 | <File Id="tg.txt" Name="tg.txt" /> | ||
336 | <File Id="th.txt" Name="th.txt" /> | ||
337 | <File Id="tk.txt" Name="tk.txt" /> | ||
338 | <File Id="tr.txt" Name="tr.txt" /> | ||
339 | <File Id="tt.txt" Name="tt.txt" /> | ||
340 | <File Id="ug.txt" Name="ug.txt" /> | ||
341 | <File Id="uk.txt" Name="uk.txt" /> | ||
342 | <File Id="uz.txt" Name="uz.txt" /> | ||
343 | <File Id="uz_cyrl.txt" Name="uz-cyrl.txt" /> | ||
344 | <File Id="va.txt" Name="va.txt" /> | ||
345 | <File Id="vi.txt" Name="vi.txt" /> | ||
346 | <File Id="yo.txt" Name="yo.txt" /> | ||
347 | <File Id="zh_cn.txt" Name="zh-cn.txt" /> | ||
348 | <File Id="zh_tw.txt" Name="zh-tw.txt" /> | ||
349 | </Component> | ||
350 | </Directory> | ||
351 | |||
352 | |||
353 | </Directory> | ||
354 | </Directory> | ||
355 | |||
356 | <Directory Id="ProgramMenuFolder" Name="PMenu" LongName="Programs"> | ||
357 | <Directory Id="PMenu" Name="7zip" LongName="7-Zip" /> | ||
358 | </Directory> | ||
359 | </Directory> | ||
360 | |||
361 | <Feature Id="Complete" Title="7-Zip" Description="The complete package." | ||
362 | Display="expand" Level="1" ConfigurableDirectory="INSTALLDIR" | ||
363 | Absent="disallow" AllowAdvertise="no" > | ||
364 | <Feature Id="Program" Title="Program files" Description="Program files." Level="1" | ||
365 | Absent="disallow" AllowAdvertise="no"> | ||
366 | <ComponentRef Id="Fm" /> | ||
367 | <ComponentRef Id="ShellExt" /> | ||
368 | <?if $(var.MyCPU) = "x64" ?> | ||
369 | <ComponentRef Id="ShellExt32" /> | ||
370 | <?endif ?> | ||
371 | <ComponentRef Id="CmdLine" /> | ||
372 | <ComponentRef Id="Gui" /> | ||
373 | <ComponentRef Id="GuiSfx" /> | ||
374 | <ComponentRef Id="ConSfx" /> | ||
375 | <ComponentRef Id="Formats" /> | ||
376 | <ComponentRef Id="Docs" /> | ||
377 | <ComponentRef Id="Help" /> | ||
378 | <ComponentRef Id="InstallRegCU" /> | ||
379 | <ComponentRef Id="InstallRegLM" /> | ||
380 | <ComponentRef Id="InstallRegWild" /> | ||
381 | <ComponentRef Id="InstallRegDirectory" /> | ||
382 | <ComponentRef Id="InstallRegDirDD" /> | ||
383 | <ComponentRef Id="InstallRegDriveDD" /> | ||
384 | <ComponentRef Id="InstallRegApproved" /> | ||
385 | <ComponentRef Id="InstallRegAppPath" /> | ||
386 | <ComponentRef Id="InstallRegFolder" /> | ||
387 | |||
388 | </Feature> | ||
389 | <Feature Id="LanguageFiles" Title="Localization files" Description="Localization files for 71 languages." | ||
390 | Level="1" AllowAdvertise="no"> | ||
391 | <ComponentRef Id="Lang" /> | ||
392 | </Feature> | ||
393 | </Feature> | ||
394 | |||
395 | <UIRef Id="WixUI" /> | ||
396 | |||
397 | <!-- Install Sequences --> | ||
398 | <InstallExecuteSequence> | ||
399 | <RemoveExistingProducts After="InstallValidate" /> | ||
400 | </InstallExecuteSequence> | ||
401 | |||
402 | </Product> | ||
403 | </Wix> | ||
diff --git a/DOC/License.txt b/DOC/License.txt new file mode 100644 index 0000000..c9e858f --- /dev/null +++ b/DOC/License.txt | |||
@@ -0,0 +1,90 @@ | |||
1 | 7-Zip source code | ||
2 | ~~~~~~~~~~~~~~~~~ | ||
3 | License for use and distribution | ||
4 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
5 | |||
6 | 7-Zip Copyright (C) 1999-2020 Igor Pavlov. | ||
7 | |||
8 | The licenses for files are: | ||
9 | |||
10 | 1) CPP/7zip/Compress/Rar* files: the "GNU LGPL" with "unRAR license restriction" | ||
11 | 2) CPP/7zip/Compress/LzfseDecoder.cpp: the "BSD 3-clause License" | ||
12 | 3) Some files are "public domain" files, if "public domain" status is stated in source file. | ||
13 | 4) the "GNU LGPL" for all other files. If there is no license information in | ||
14 | some source file, that file is under the "GNU LGPL". | ||
15 | |||
16 | The "GNU LGPL" with "unRAR license restriction" means that you must follow both | ||
17 | "GNU LGPL" rules and "unRAR license restriction" rules. | ||
18 | |||
19 | |||
20 | |||
21 | |||
22 | GNU LGPL information | ||
23 | -------------------- | ||
24 | |||
25 | This library is free software; you can redistribute it and/or | ||
26 | modify it under the terms of the GNU Lesser General Public | ||
27 | License as published by the Free Software Foundation; either | ||
28 | version 2.1 of the License, or (at your option) any later version. | ||
29 | |||
30 | This library is distributed in the hope that it will be useful, | ||
31 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
32 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
33 | Lesser General Public License for more details. | ||
34 | |||
35 | You should have received a copy of the GNU Lesser General Public | ||
36 | License along with this library; if not, write to the Free Software | ||
37 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
38 | |||
39 | |||
40 | |||
41 | |||
42 | BSD 3-clause License | ||
43 | -------------------- | ||
44 | |||
45 | The "BSD 3-clause License" is used for the code in LzfseDecoder.cpp that implements LZFSE data decompression. | ||
46 | That code was derived from the code in the "LZFSE compression library" developed by Apple Inc, | ||
47 | that also uses the "BSD 3-clause License": | ||
48 | |||
49 | ---- | ||
50 | Copyright (c) 2015-2016, Apple Inc. All rights reserved. | ||
51 | |||
52 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: | ||
53 | |||
54 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. | ||
55 | |||
56 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer | ||
57 | in the documentation and/or other materials provided with the distribution. | ||
58 | |||
59 | 3. Neither the name of the copyright holder(s) nor the names of any contributors may be used to endorse or promote products derived | ||
60 | from this software without specific prior written permission. | ||
61 | |||
62 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
63 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
64 | COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
65 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
66 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
67 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
68 | ---- | ||
69 | |||
70 | |||
71 | |||
72 | |||
73 | unRAR license restriction | ||
74 | ------------------------- | ||
75 | |||
76 | The decompression engine for RAR archives was developed using source | ||
77 | code of unRAR program. | ||
78 | All copyrights to original unRAR code are owned by Alexander Roshal. | ||
79 | |||
80 | The license for original unRAR code has the following restriction: | ||
81 | |||
82 | The unRAR sources cannot be used to re-create the RAR compression algorithm, | ||
83 | which is proprietary. Distribution of modified unRAR sources in separate form | ||
84 | or as a part of other software is permitted, provided that it is clearly | ||
85 | stated in the documentation and source comments that the code may | ||
86 | not be used to develop a RAR (WinRAR) compatible archiver. | ||
87 | |||
88 | |||
89 | -- | ||
90 | Igor Pavlov | ||
diff --git a/DOC/Methods.txt b/DOC/Methods.txt new file mode 100644 index 0000000..d4a1b1d --- /dev/null +++ b/DOC/Methods.txt | |||
@@ -0,0 +1,173 @@ | |||
1 | 7-Zip method IDs for 7z and xz archives | ||
2 | --------------------------------------- | ||
3 | |||
4 | Version: 18.06 | ||
5 | Date: 2018-06-30 | ||
6 | |||
7 | Each compression or crypto method in 7z is associated with unique binary value (ID). | ||
8 | The length of ID in bytes is arbitrary but it can not exceed 63 bits (8 bytes). | ||
9 | |||
10 | xz and 7z formats use same ID map. | ||
11 | |||
12 | If you want to add some new ID, you have two ways: | ||
13 | 1) Write request for allocating IDs to 7-Zip developers. | ||
14 | 2) Generate 8-bytes ID: | ||
15 | |||
16 | 3F ZZ ZZ ZZ ZZ ZZ MM MM | ||
17 | |||
18 | 3F - Prefix for random IDs (1 byte) | ||
19 | ZZ ZZ ZZ ZZ ZZ - Developer ID (5 bytes). Use real random bytes. | ||
20 | |||
21 | MM MM - Method ID (2 bytes) | ||
22 | |||
23 | You can notify 7-Zip developers about your Developer ID / Method ID. | ||
24 | |||
25 | Note: Use new ID, if old codec can not decode data encoded with new version. | ||
26 | |||
27 | |||
28 | List of defined IDs | ||
29 | ------------------- | ||
30 | |||
31 | 00 - Copy | ||
32 | |||
33 | 03 - Delta | ||
34 | 04 - BCJ (x86) | ||
35 | 05 - PPC (big-endian) | ||
36 | 06 - IA64 | ||
37 | 07 - ARM (little-endian) | ||
38 | 08 - ARMT (little-endian) | ||
39 | 09 - SPARC | ||
40 | |||
41 | 21 - LZMA2 | ||
42 | |||
43 | 02.. - Common | ||
44 | 03 [Swap] | ||
45 | - 2 Swap2 | ||
46 | - 4 Swap4 | ||
47 | |||
48 | 03.. - 7z | ||
49 | 01 - | ||
50 | 01 - LZMA | ||
51 | |||
52 | 03 - [Branch Codecs] | ||
53 | 01 - [x86 Codecs] | ||
54 | 03 - BCJ | ||
55 | 1B - BCJ2 (4 packed streams) | ||
56 | 02 - | ||
57 | 05 - PPC (big-endian) | ||
58 | 03 - | ||
59 | 01 - Alpha | ||
60 | 04 - | ||
61 | 01 - IA64 | ||
62 | 05 - | ||
63 | 01 - ARM (little-endian) | ||
64 | 06 - | ||
65 | 05 - M68 (big-endian) | ||
66 | 07 - | ||
67 | 01 - ARMT (little-endian) | ||
68 | 08 - | ||
69 | 05 - SPARC | ||
70 | |||
71 | 04 - | ||
72 | 01 - PPMD | ||
73 | |||
74 | 7F - | ||
75 | 01 - experimental method. | ||
76 | |||
77 | |||
78 | 04.. - Misc codecs | ||
79 | |||
80 | 00 - Reserved | ||
81 | |||
82 | 01 - [Zip] | ||
83 | 00 - Copy (not used. Use {00} instead) | ||
84 | 01 - Shrink | ||
85 | 06 - Implode | ||
86 | 08 - Deflate | ||
87 | 09 - Deflate64 | ||
88 | 0A - Imploding | ||
89 | 0C - BZip2 (not used. Use {040202} instead) | ||
90 | 0E - LZMA (LZMA-zip) | ||
91 | 5F - xz | ||
92 | 60 - Jpeg | ||
93 | 61 - WavPack | ||
94 | 62 - PPMd (PPMd-zip) | ||
95 | 63 - wzAES | ||
96 | |||
97 | 02 - | ||
98 | 02 - BZip2 | ||
99 | |||
100 | 03 - [Rar] | ||
101 | 01 - Rar1 | ||
102 | 02 - Rar2 | ||
103 | 03 - Rar3 | ||
104 | 05 - Rar5 | ||
105 | |||
106 | 04 - [Arj] | ||
107 | 01 - Arj(1,2,3) | ||
108 | 02 - Arj4 | ||
109 | |||
110 | 05 - [Z] | ||
111 | |||
112 | 06 - [Lzh] | ||
113 | |||
114 | 07 - Reserved for 7z | ||
115 | |||
116 | 08 - [Cab] | ||
117 | |||
118 | 09 - [NSIS] | ||
119 | 01 - DeflateNSIS | ||
120 | 02 - BZip2NSIS | ||
121 | |||
122 | F7 - External codecs (that are not included to 7-Zip) | ||
123 | |||
124 | 0x xx - reserved | ||
125 | |||
126 | 10 xx - reserved (LZHAM) | ||
127 | 01 - LZHAM | ||
128 | |||
129 | 11 xx - reserved (Tino Reichardt) | ||
130 | 01 - ZSTD | ||
131 | 02 - BROTLI | ||
132 | 04 - LZ4 | ||
133 | 05 - LZ5 | ||
134 | 06 - LIZARD | ||
135 | |||
136 | 12 xx - reserverd (Denis Anisimov) | ||
137 | |||
138 | 01 - WavPack2 | ||
139 | FE - eSplitter | ||
140 | FF - RawSplitter | ||
141 | |||
142 | |||
143 | 06.. - Crypto | ||
144 | |||
145 | F0 - Ciphers without hashing algo | ||
146 | |||
147 | 01 - [AES] | ||
148 | 0x - AES-128 | ||
149 | 4x - AES-192 | ||
150 | 8x - AES-256 | ||
151 | Cx - AES | ||
152 | |||
153 | x0 - ECB | ||
154 | x1 - CBC | ||
155 | x2 - CFB | ||
156 | x3 - OFB | ||
157 | x4 - CTR | ||
158 | |||
159 | F1 - Combine Ciphers | ||
160 | |||
161 | 01 - [Zip] | ||
162 | 01 - ZipCrypto (Main Zip crypto algo) | ||
163 | |||
164 | 03 - [RAR] | ||
165 | 02 - | ||
166 | 03 - Rar29AES (AES-128 + modified SHA-1) | ||
167 | |||
168 | 07 - [7z] | ||
169 | 01 - 7zAES (AES-256 + SHA-256) | ||
170 | |||
171 | |||
172 | --- | ||
173 | End of document | ||
diff --git a/DOC/copying.txt b/DOC/copying.txt new file mode 100644 index 0000000..4362b49 --- /dev/null +++ b/DOC/copying.txt | |||
@@ -0,0 +1,502 @@ | |||
1 | GNU LESSER GENERAL PUBLIC LICENSE | ||
2 | Version 2.1, February 1999 | ||
3 | |||
4 | Copyright (C) 1991, 1999 Free Software Foundation, Inc. | ||
5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
6 | Everyone is permitted to copy and distribute verbatim copies | ||
7 | of this license document, but changing it is not allowed. | ||
8 | |||
9 | [This is the first released version of the Lesser GPL. It also counts | ||
10 | as the successor of the GNU Library Public License, version 2, hence | ||
11 | the version number 2.1.] | ||
12 | |||
13 | Preamble | ||
14 | |||
15 | The licenses for most software are designed to take away your | ||
16 | freedom to share and change it. By contrast, the GNU General Public | ||
17 | Licenses are intended to guarantee your freedom to share and change | ||
18 | free software--to make sure the software is free for all its users. | ||
19 | |||
20 | This license, the Lesser General Public License, applies to some | ||
21 | specially designated software packages--typically libraries--of the | ||
22 | Free Software Foundation and other authors who decide to use it. You | ||
23 | can use it too, but we suggest you first think carefully about whether | ||
24 | this license or the ordinary General Public License is the better | ||
25 | strategy to use in any particular case, based on the explanations below. | ||
26 | |||
27 | When we speak of free software, we are referring to freedom of use, | ||
28 | not price. Our General Public Licenses are designed to make sure that | ||
29 | you have the freedom to distribute copies of free software (and charge | ||
30 | for this service if you wish); that you receive source code or can get | ||
31 | it if you want it; that you can change the software and use pieces of | ||
32 | it in new free programs; and that you are informed that you can do | ||
33 | these things. | ||
34 | |||
35 | To protect your rights, we need to make restrictions that forbid | ||
36 | distributors to deny you these rights or to ask you to surrender these | ||
37 | rights. These restrictions translate to certain responsibilities for | ||
38 | you if you distribute copies of the library or if you modify it. | ||
39 | |||
40 | For example, if you distribute copies of the library, whether gratis | ||
41 | or for a fee, you must give the recipients all the rights that we gave | ||
42 | you. You must make sure that they, too, receive or can get the source | ||
43 | code. If you link other code with the library, you must provide | ||
44 | complete object files to the recipients, so that they can relink them | ||
45 | with the library after making changes to the library and recompiling | ||
46 | it. And you must show them these terms so they know their rights. | ||
47 | |||
48 | We protect your rights with a two-step method: (1) we copyright the | ||
49 | library, and (2) we offer you this license, which gives you legal | ||
50 | permission to copy, distribute and/or modify the library. | ||
51 | |||
52 | To protect each distributor, we want to make it very clear that | ||
53 | there is no warranty for the free library. Also, if the library is | ||
54 | modified by someone else and passed on, the recipients should know | ||
55 | that what they have is not the original version, so that the original | ||
56 | author's reputation will not be affected by problems that might be | ||
57 | introduced by others. | ||
58 | |||
59 | Finally, software patents pose a constant threat to the existence of | ||
60 | any free program. We wish to make sure that a company cannot | ||
61 | effectively restrict the users of a free program by obtaining a | ||
62 | restrictive license from a patent holder. Therefore, we insist that | ||
63 | any patent license obtained for a version of the library must be | ||
64 | consistent with the full freedom of use specified in this license. | ||
65 | |||
66 | Most GNU software, including some libraries, is covered by the | ||
67 | ordinary GNU General Public License. This license, the GNU Lesser | ||
68 | General Public License, applies to certain designated libraries, and | ||
69 | is quite different from the ordinary General Public License. We use | ||
70 | this license for certain libraries in order to permit linking those | ||
71 | libraries into non-free programs. | ||
72 | |||
73 | When a program is linked with a library, whether statically or using | ||
74 | a shared library, the combination of the two is legally speaking a | ||
75 | combined work, a derivative of the original library. The ordinary | ||
76 | General Public License therefore permits such linking only if the | ||
77 | entire combination fits its criteria of freedom. The Lesser General | ||
78 | Public License permits more lax criteria for linking other code with | ||
79 | the library. | ||
80 | |||
81 | We call this license the "Lesser" General Public License because it | ||
82 | does Less to protect the user's freedom than the ordinary General | ||
83 | Public License. It also provides other free software developers Less | ||
84 | of an advantage over competing non-free programs. These disadvantages | ||
85 | are the reason we use the ordinary General Public License for many | ||
86 | libraries. However, the Lesser license provides advantages in certain | ||
87 | special circumstances. | ||
88 | |||
89 | For example, on rare occasions, there may be a special need to | ||
90 | encourage the widest possible use of a certain library, so that it becomes | ||
91 | a de-facto standard. To achieve this, non-free programs must be | ||
92 | allowed to use the library. A more frequent case is that a free | ||
93 | library does the same job as widely used non-free libraries. In this | ||
94 | case, there is little to gain by limiting the free library to free | ||
95 | software only, so we use the Lesser General Public License. | ||
96 | |||
97 | In other cases, permission to use a particular library in non-free | ||
98 | programs enables a greater number of people to use a large body of | ||
99 | free software. For example, permission to use the GNU C Library in | ||
100 | non-free programs enables many more people to use the whole GNU | ||
101 | operating system, as well as its variant, the GNU/Linux operating | ||
102 | system. | ||
103 | |||
104 | Although the Lesser General Public License is Less protective of the | ||
105 | users' freedom, it does ensure that the user of a program that is | ||
106 | linked with the Library has the freedom and the wherewithal to run | ||
107 | that program using a modified version of the Library. | ||
108 | |||
109 | The precise terms and conditions for copying, distribution and | ||
110 | modification follow. Pay close attention to the difference between a | ||
111 | "work based on the library" and a "work that uses the library". The | ||
112 | former contains code derived from the library, whereas the latter must | ||
113 | be combined with the library in order to run. | ||
114 | |||
115 | GNU LESSER GENERAL PUBLIC LICENSE | ||
116 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||
117 | |||
118 | 0. This License Agreement applies to any software library or other | ||
119 | program which contains a notice placed by the copyright holder or | ||
120 | other authorized party saying it may be distributed under the terms of | ||
121 | this Lesser General Public License (also called "this License"). | ||
122 | Each licensee is addressed as "you". | ||
123 | |||
124 | A "library" means a collection of software functions and/or data | ||
125 | prepared so as to be conveniently linked with application programs | ||
126 | (which use some of those functions and data) to form executables. | ||
127 | |||
128 | The "Library", below, refers to any such software library or work | ||
129 | which has been distributed under these terms. A "work based on the | ||
130 | Library" means either the Library or any derivative work under | ||
131 | copyright law: that is to say, a work containing the Library or a | ||
132 | portion of it, either verbatim or with modifications and/or translated | ||
133 | straightforwardly into another language. (Hereinafter, translation is | ||
134 | included without limitation in the term "modification".) | ||
135 | |||
136 | "Source code" for a work means the preferred form of the work for | ||
137 | making modifications to it. For a library, complete source code means | ||
138 | all the source code for all modules it contains, plus any associated | ||
139 | interface definition files, plus the scripts used to control compilation | ||
140 | and installation of the library. | ||
141 | |||
142 | Activities other than copying, distribution and modification are not | ||
143 | covered by this License; they are outside its scope. The act of | ||
144 | running a program using the Library is not restricted, and output from | ||
145 | such a program is covered only if its contents constitute a work based | ||
146 | on the Library (independent of the use of the Library in a tool for | ||
147 | writing it). Whether that is true depends on what the Library does | ||
148 | and what the program that uses the Library does. | ||
149 | |||
150 | 1. You may copy and distribute verbatim copies of the Library's | ||
151 | complete source code as you receive it, in any medium, provided that | ||
152 | you conspicuously and appropriately publish on each copy an | ||
153 | appropriate copyright notice and disclaimer of warranty; keep intact | ||
154 | all the notices that refer to this License and to the absence of any | ||
155 | warranty; and distribute a copy of this License along with the | ||
156 | Library. | ||
157 | |||
158 | You may charge a fee for the physical act of transferring a copy, | ||
159 | and you may at your option offer warranty protection in exchange for a | ||
160 | fee. | ||
161 | |||
162 | 2. You may modify your copy or copies of the Library or any portion | ||
163 | of it, thus forming a work based on the Library, and copy and | ||
164 | distribute such modifications or work under the terms of Section 1 | ||
165 | above, provided that you also meet all of these conditions: | ||
166 | |||
167 | a) The modified work must itself be a software library. | ||
168 | |||
169 | b) You must cause the files modified to carry prominent notices | ||
170 | stating that you changed the files and the date of any change. | ||
171 | |||
172 | c) You must cause the whole of the work to be licensed at no | ||
173 | charge to all third parties under the terms of this License. | ||
174 | |||
175 | d) If a facility in the modified Library refers to a function or a | ||
176 | table of data to be supplied by an application program that uses | ||
177 | the facility, other than as an argument passed when the facility | ||
178 | is invoked, then you must make a good faith effort to ensure that, | ||
179 | in the event an application does not supply such function or | ||
180 | table, the facility still operates, and performs whatever part of | ||
181 | its purpose remains meaningful. | ||
182 | |||
183 | (For example, a function in a library to compute square roots has | ||
184 | a purpose that is entirely well-defined independent of the | ||
185 | application. Therefore, Subsection 2d requires that any | ||
186 | application-supplied function or table used by this function must | ||
187 | be optional: if the application does not supply it, the square | ||
188 | root function must still compute square roots.) | ||
189 | |||
190 | These requirements apply to the modified work as a whole. If | ||
191 | identifiable sections of that work are not derived from the Library, | ||
192 | and can be reasonably considered independent and separate works in | ||
193 | themselves, then this License, and its terms, do not apply to those | ||
194 | sections when you distribute them as separate works. But when you | ||
195 | distribute the same sections as part of a whole which is a work based | ||
196 | on the Library, the distribution of the whole must be on the terms of | ||
197 | this License, whose permissions for other licensees extend to the | ||
198 | entire whole, and thus to each and every part regardless of who wrote | ||
199 | it. | ||
200 | |||
201 | Thus, it is not the intent of this section to claim rights or contest | ||
202 | your rights to work written entirely by you; rather, the intent is to | ||
203 | exercise the right to control the distribution of derivative or | ||
204 | collective works based on the Library. | ||
205 | |||
206 | In addition, mere aggregation of another work not based on the Library | ||
207 | with the Library (or with a work based on the Library) on a volume of | ||
208 | a storage or distribution medium does not bring the other work under | ||
209 | the scope of this License. | ||
210 | |||
211 | 3. You may opt to apply the terms of the ordinary GNU General Public | ||
212 | License instead of this License to a given copy of the Library. To do | ||
213 | this, you must alter all the notices that refer to this License, so | ||
214 | that they refer to the ordinary GNU General Public License, version 2, | ||
215 | instead of to this License. (If a newer version than version 2 of the | ||
216 | ordinary GNU General Public License has appeared, then you can specify | ||
217 | that version instead if you wish.) Do not make any other change in | ||
218 | these notices. | ||
219 | |||
220 | Once this change is made in a given copy, it is irreversible for | ||
221 | that copy, so the ordinary GNU General Public License applies to all | ||
222 | subsequent copies and derivative works made from that copy. | ||
223 | |||
224 | This option is useful when you wish to copy part of the code of | ||
225 | the Library into a program that is not a library. | ||
226 | |||
227 | 4. You may copy and distribute the Library (or a portion or | ||
228 | derivative of it, under Section 2) in object code or executable form | ||
229 | under the terms of Sections 1 and 2 above provided that you accompany | ||
230 | it with the complete corresponding machine-readable source code, which | ||
231 | must be distributed under the terms of Sections 1 and 2 above on a | ||
232 | medium customarily used for software interchange. | ||
233 | |||
234 | If distribution of object code is made by offering access to copy | ||
235 | from a designated place, then offering equivalent access to copy the | ||
236 | source code from the same place satisfies the requirement to | ||
237 | distribute the source code, even though third parties are not | ||
238 | compelled to copy the source along with the object code. | ||
239 | |||
240 | 5. A program that contains no derivative of any portion of the | ||
241 | Library, but is designed to work with the Library by being compiled or | ||
242 | linked with it, is called a "work that uses the Library". Such a | ||
243 | work, in isolation, is not a derivative work of the Library, and | ||
244 | therefore falls outside the scope of this License. | ||
245 | |||
246 | However, linking a "work that uses the Library" with the Library | ||
247 | creates an executable that is a derivative of the Library (because it | ||
248 | contains portions of the Library), rather than a "work that uses the | ||
249 | library". The executable is therefore covered by this License. | ||
250 | Section 6 states terms for distribution of such executables. | ||
251 | |||
252 | When a "work that uses the Library" uses material from a header file | ||
253 | that is part of the Library, the object code for the work may be a | ||
254 | derivative work of the Library even though the source code is not. | ||
255 | Whether this is true is especially significant if the work can be | ||
256 | linked without the Library, or if the work is itself a library. The | ||
257 | threshold for this to be true is not precisely defined by law. | ||
258 | |||
259 | If such an object file uses only numerical parameters, data | ||
260 | structure layouts and accessors, and small macros and small inline | ||
261 | functions (ten lines or less in length), then the use of the object | ||
262 | file is unrestricted, regardless of whether it is legally a derivative | ||
263 | work. (Executables containing this object code plus portions of the | ||
264 | Library will still fall under Section 6.) | ||
265 | |||
266 | Otherwise, if the work is a derivative of the Library, you may | ||
267 | distribute the object code for the work under the terms of Section 6. | ||
268 | Any executables containing that work also fall under Section 6, | ||
269 | whether or not they are linked directly with the Library itself. | ||
270 | |||
271 | 6. As an exception to the Sections above, you may also combine or | ||
272 | link a "work that uses the Library" with the Library to produce a | ||
273 | work containing portions of the Library, and distribute that work | ||
274 | under terms of your choice, provided that the terms permit | ||
275 | modification of the work for the customer's own use and reverse | ||
276 | engineering for debugging such modifications. | ||
277 | |||
278 | You must give prominent notice with each copy of the work that the | ||
279 | Library is used in it and that the Library and its use are covered by | ||
280 | this License. You must supply a copy of this License. If the work | ||
281 | during execution displays copyright notices, you must include the | ||
282 | copyright notice for the Library among them, as well as a reference | ||
283 | directing the user to the copy of this License. Also, you must do one | ||
284 | of these things: | ||
285 | |||
286 | a) Accompany the work with the complete corresponding | ||
287 | machine-readable source code for the Library including whatever | ||
288 | changes were used in the work (which must be distributed under | ||
289 | Sections 1 and 2 above); and, if the work is an executable linked | ||
290 | with the Library, with the complete machine-readable "work that | ||
291 | uses the Library", as object code and/or source code, so that the | ||
292 | user can modify the Library and then relink to produce a modified | ||
293 | executable containing the modified Library. (It is understood | ||
294 | that the user who changes the contents of definitions files in the | ||
295 | Library will not necessarily be able to recompile the application | ||
296 | to use the modified definitions.) | ||
297 | |||
298 | b) Use a suitable shared library mechanism for linking with the | ||
299 | Library. A suitable mechanism is one that (1) uses at run time a | ||
300 | copy of the library already present on the user's computer system, | ||
301 | rather than copying library functions into the executable, and (2) | ||
302 | will operate properly with a modified version of the library, if | ||
303 | the user installs one, as long as the modified version is | ||
304 | interface-compatible with the version that the work was made with. | ||
305 | |||
306 | c) Accompany the work with a written offer, valid for at | ||
307 | least three years, to give the same user the materials | ||
308 | specified in Subsection 6a, above, for a charge no more | ||
309 | than the cost of performing this distribution. | ||
310 | |||
311 | d) If distribution of the work is made by offering access to copy | ||
312 | from a designated place, offer equivalent access to copy the above | ||
313 | specified materials from the same place. | ||
314 | |||
315 | e) Verify that the user has already received a copy of these | ||
316 | materials or that you have already sent this user a copy. | ||
317 | |||
318 | For an executable, the required form of the "work that uses the | ||
319 | Library" must include any data and utility programs needed for | ||
320 | reproducing the executable from it. However, as a special exception, | ||
321 | the materials to be distributed need not include anything that is | ||
322 | normally distributed (in either source or binary form) with the major | ||
323 | components (compiler, kernel, and so on) of the operating system on | ||
324 | which the executable runs, unless that component itself accompanies | ||
325 | the executable. | ||
326 | |||
327 | It may happen that this requirement contradicts the license | ||
328 | restrictions of other proprietary libraries that do not normally | ||
329 | accompany the operating system. Such a contradiction means you cannot | ||
330 | use both them and the Library together in an executable that you | ||
331 | distribute. | ||
332 | |||
333 | 7. You may place library facilities that are a work based on the | ||
334 | Library side-by-side in a single library together with other library | ||
335 | facilities not covered by this License, and distribute such a combined | ||
336 | library, provided that the separate distribution of the work based on | ||
337 | the Library and of the other library facilities is otherwise | ||
338 | permitted, and provided that you do these two things: | ||
339 | |||
340 | a) Accompany the combined library with a copy of the same work | ||
341 | based on the Library, uncombined with any other library | ||
342 | facilities. This must be distributed under the terms of the | ||
343 | Sections above. | ||
344 | |||
345 | b) Give prominent notice with the combined library of the fact | ||
346 | that part of it is a work based on the Library, and explaining | ||
347 | where to find the accompanying uncombined form of the same work. | ||
348 | |||
349 | 8. You may not copy, modify, sublicense, link with, or distribute | ||
350 | the Library except as expressly provided under this License. Any | ||
351 | attempt otherwise to copy, modify, sublicense, link with, or | ||
352 | distribute the Library is void, and will automatically terminate your | ||
353 | rights under this License. However, parties who have received copies, | ||
354 | or rights, from you under this License will not have their licenses | ||
355 | terminated so long as such parties remain in full compliance. | ||
356 | |||
357 | 9. You are not required to accept this License, since you have not | ||
358 | signed it. However, nothing else grants you permission to modify or | ||
359 | distribute the Library or its derivative works. These actions are | ||
360 | prohibited by law if you do not accept this License. Therefore, by | ||
361 | modifying or distributing the Library (or any work based on the | ||
362 | Library), you indicate your acceptance of this License to do so, and | ||
363 | all its terms and conditions for copying, distributing or modifying | ||
364 | the Library or works based on it. | ||
365 | |||
366 | 10. Each time you redistribute the Library (or any work based on the | ||
367 | Library), the recipient automatically receives a license from the | ||
368 | original licensor to copy, distribute, link with or modify the Library | ||
369 | subject to these terms and conditions. You may not impose any further | ||
370 | restrictions on the recipients' exercise of the rights granted herein. | ||
371 | You are not responsible for enforcing compliance by third parties with | ||
372 | this License. | ||
373 | |||
374 | 11. If, as a consequence of a court judgment or allegation of patent | ||
375 | infringement or for any other reason (not limited to patent issues), | ||
376 | conditions are imposed on you (whether by court order, agreement or | ||
377 | otherwise) that contradict the conditions of this License, they do not | ||
378 | excuse you from the conditions of this License. If you cannot | ||
379 | distribute so as to satisfy simultaneously your obligations under this | ||
380 | License and any other pertinent obligations, then as a consequence you | ||
381 | may not distribute the Library at all. For example, if a patent | ||
382 | license would not permit royalty-free redistribution of the Library by | ||
383 | all those who receive copies directly or indirectly through you, then | ||
384 | the only way you could satisfy both it and this License would be to | ||
385 | refrain entirely from distribution of the Library. | ||
386 | |||
387 | If any portion of this section is held invalid or unenforceable under any | ||
388 | particular circumstance, the balance of the section is intended to apply, | ||
389 | and the section as a whole is intended to apply in other circumstances. | ||
390 | |||
391 | It is not the purpose of this section to induce you to infringe any | ||
392 | patents or other property right claims or to contest validity of any | ||
393 | such claims; this section has the sole purpose of protecting the | ||
394 | integrity of the free software distribution system which is | ||
395 | implemented by public license practices. Many people have made | ||
396 | generous contributions to the wide range of software distributed | ||
397 | through that system in reliance on consistent application of that | ||
398 | system; it is up to the author/donor to decide if he or she is willing | ||
399 | to distribute software through any other system and a licensee cannot | ||
400 | impose that choice. | ||
401 | |||
402 | This section is intended to make thoroughly clear what is believed to | ||
403 | be a consequence of the rest of this License. | ||
404 | |||
405 | 12. If the distribution and/or use of the Library is restricted in | ||
406 | certain countries either by patents or by copyrighted interfaces, the | ||
407 | original copyright holder who places the Library under this License may add | ||
408 | an explicit geographical distribution limitation excluding those countries, | ||
409 | so that distribution is permitted only in or among countries not thus | ||
410 | excluded. In such case, this License incorporates the limitation as if | ||
411 | written in the body of this License. | ||
412 | |||
413 | 13. The Free Software Foundation may publish revised and/or new | ||
414 | versions of the Lesser General Public License from time to time. | ||
415 | Such new versions will be similar in spirit to the present version, | ||
416 | but may differ in detail to address new problems or concerns. | ||
417 | |||
418 | Each version is given a distinguishing version number. If the Library | ||
419 | specifies a version number of this License which applies to it and | ||
420 | "any later version", you have the option of following the terms and | ||
421 | conditions either of that version or of any later version published by | ||
422 | the Free Software Foundation. If the Library does not specify a | ||
423 | license version number, you may choose any version ever published by | ||
424 | the Free Software Foundation. | ||
425 | |||
426 | 14. If you wish to incorporate parts of the Library into other free | ||
427 | programs whose distribution conditions are incompatible with these, | ||
428 | write to the author to ask for permission. For software which is | ||
429 | copyrighted by the Free Software Foundation, write to the Free | ||
430 | Software Foundation; we sometimes make exceptions for this. Our | ||
431 | decision will be guided by the two goals of preserving the free status | ||
432 | of all derivatives of our free software and of promoting the sharing | ||
433 | and reuse of software generally. | ||
434 | |||
435 | NO WARRANTY | ||
436 | |||
437 | 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO | ||
438 | WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. | ||
439 | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR | ||
440 | OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY | ||
441 | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE | ||
442 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||
443 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE | ||
444 | LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME | ||
445 | THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. | ||
446 | |||
447 | 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN | ||
448 | WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY | ||
449 | AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU | ||
450 | FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR | ||
451 | CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE | ||
452 | LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING | ||
453 | RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A | ||
454 | FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF | ||
455 | SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH | ||
456 | DAMAGES. | ||
457 | |||
458 | END OF TERMS AND CONDITIONS | ||
459 | |||
460 | How to Apply These Terms to Your New Libraries | ||
461 | |||
462 | If you develop a new library, and you want it to be of the greatest | ||
463 | possible use to the public, we recommend making it free software that | ||
464 | everyone can redistribute and change. You can do so by permitting | ||
465 | redistribution under these terms (or, alternatively, under the terms of the | ||
466 | ordinary General Public License). | ||
467 | |||
468 | To apply these terms, attach the following notices to the library. It is | ||
469 | safest to attach them to the start of each source file to most effectively | ||
470 | convey the exclusion of warranty; and each file should have at least the | ||
471 | "copyright" line and a pointer to where the full notice is found. | ||
472 | |||
473 | <one line to give the library's name and a brief idea of what it does.> | ||
474 | Copyright (C) <year> <name of author> | ||
475 | |||
476 | This library is free software; you can redistribute it and/or | ||
477 | modify it under the terms of the GNU Lesser General Public | ||
478 | License as published by the Free Software Foundation; either | ||
479 | version 2.1 of the License, or (at your option) any later version. | ||
480 | |||
481 | This library is distributed in the hope that it will be useful, | ||
482 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
483 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
484 | Lesser General Public License for more details. | ||
485 | |||
486 | You should have received a copy of the GNU Lesser General Public | ||
487 | License along with this library; if not, write to the Free Software | ||
488 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
489 | |||
490 | Also add information on how to contact you by electronic and paper mail. | ||
491 | |||
492 | You should also get your employer (if you work as a programmer) or your | ||
493 | school, if any, to sign a "copyright disclaimer" for the library, if | ||
494 | necessary. Here is a sample; alter the names: | ||
495 | |||
496 | Yoyodyne, Inc., hereby disclaims all copyright interest in the | ||
497 | library `Frob' (a library for tweaking knobs) written by James Random Hacker. | ||
498 | |||
499 | <signature of Ty Coon>, 1 April 1990 | ||
500 | Ty Coon, President of Vice | ||
501 | |||
502 | That's all there is to it! | ||
diff --git a/DOC/lzma.txt b/DOC/lzma.txt new file mode 100644 index 0000000..a65988f --- /dev/null +++ b/DOC/lzma.txt | |||
@@ -0,0 +1,328 @@ | |||
1 | LZMA compression | ||
2 | ---------------- | ||
3 | Version: 9.35 | ||
4 | |||
5 | This file describes LZMA encoding and decoding functions written in C language. | ||
6 | |||
7 | LZMA is an improved version of famous LZ77 compression algorithm. | ||
8 | It was improved in way of maximum increasing of compression ratio, | ||
9 | keeping high decompression speed and low memory requirements for | ||
10 | decompressing. | ||
11 | |||
12 | Note: you can read also LZMA Specification (lzma-specification.txt from LZMA SDK) | ||
13 | |||
14 | Also you can look source code for LZMA encoding and decoding: | ||
15 | C/Util/Lzma/LzmaUtil.c | ||
16 | |||
17 | |||
18 | LZMA compressed file format | ||
19 | --------------------------- | ||
20 | Offset Size Description | ||
21 | 0 1 Special LZMA properties (lc,lp, pb in encoded form) | ||
22 | 1 4 Dictionary size (little endian) | ||
23 | 5 8 Uncompressed size (little endian). -1 means unknown size | ||
24 | 13 Compressed data | ||
25 | |||
26 | |||
27 | |||
28 | ANSI-C LZMA Decoder | ||
29 | ~~~~~~~~~~~~~~~~~~~ | ||
30 | |||
31 | Please note that interfaces for ANSI-C code were changed in LZMA SDK 4.58. | ||
32 | If you want to use old interfaces you can download previous version of LZMA SDK | ||
33 | from sourceforge.net site. | ||
34 | |||
35 | To use ANSI-C LZMA Decoder you need the following files: | ||
36 | 1) LzmaDec.h + LzmaDec.c + 7zTypes.h + Precomp.h + Compiler.h | ||
37 | |||
38 | Look example code: | ||
39 | C/Util/Lzma/LzmaUtil.c | ||
40 | |||
41 | |||
42 | Memory requirements for LZMA decoding | ||
43 | ------------------------------------- | ||
44 | |||
45 | Stack usage of LZMA decoding function for local variables is not | ||
46 | larger than 200-400 bytes. | ||
47 | |||
48 | LZMA Decoder uses dictionary buffer and internal state structure. | ||
49 | Internal state structure consumes | ||
50 | state_size = (4 + (1.5 << (lc + lp))) KB | ||
51 | by default (lc=3, lp=0), state_size = 16 KB. | ||
52 | |||
53 | |||
54 | How To decompress data | ||
55 | ---------------------- | ||
56 | |||
57 | LZMA Decoder (ANSI-C version) now supports 2 interfaces: | ||
58 | 1) Single-call Decompressing | ||
59 | 2) Multi-call State Decompressing (zlib-like interface) | ||
60 | |||
61 | You must use external allocator: | ||
62 | Example: | ||
63 | void *SzAlloc(void *p, size_t size) { p = p; return malloc(size); } | ||
64 | void SzFree(void *p, void *address) { p = p; free(address); } | ||
65 | ISzAlloc alloc = { SzAlloc, SzFree }; | ||
66 | |||
67 | You can use p = p; operator to disable compiler warnings. | ||
68 | |||
69 | |||
70 | Single-call Decompressing | ||
71 | ------------------------- | ||
72 | When to use: RAM->RAM decompressing | ||
73 | Compile files: LzmaDec.h + LzmaDec.c + 7zTypes.h | ||
74 | Compile defines: no defines | ||
75 | Memory Requirements: | ||
76 | - Input buffer: compressed size | ||
77 | - Output buffer: uncompressed size | ||
78 | - LZMA Internal Structures: state_size (16 KB for default settings) | ||
79 | |||
80 | Interface: | ||
81 | int LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, | ||
82 | const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, | ||
83 | ELzmaStatus *status, ISzAlloc *alloc); | ||
84 | In: | ||
85 | dest - output data | ||
86 | destLen - output data size | ||
87 | src - input data | ||
88 | srcLen - input data size | ||
89 | propData - LZMA properties (5 bytes) | ||
90 | propSize - size of propData buffer (5 bytes) | ||
91 | finishMode - It has meaning only if the decoding reaches output limit (*destLen). | ||
92 | LZMA_FINISH_ANY - Decode just destLen bytes. | ||
93 | LZMA_FINISH_END - Stream must be finished after (*destLen). | ||
94 | You can use LZMA_FINISH_END, when you know that | ||
95 | current output buffer covers last bytes of stream. | ||
96 | alloc - Memory allocator. | ||
97 | |||
98 | Out: | ||
99 | destLen - processed output size | ||
100 | srcLen - processed input size | ||
101 | |||
102 | Output: | ||
103 | SZ_OK | ||
104 | status: | ||
105 | LZMA_STATUS_FINISHED_WITH_MARK | ||
106 | LZMA_STATUS_NOT_FINISHED | ||
107 | LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK | ||
108 | SZ_ERROR_DATA - Data error | ||
109 | SZ_ERROR_MEM - Memory allocation error | ||
110 | SZ_ERROR_UNSUPPORTED - Unsupported properties | ||
111 | SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). | ||
112 | |||
113 | If LZMA decoder sees end_marker before reaching output limit, it returns OK result, | ||
114 | and output value of destLen will be less than output buffer size limit. | ||
115 | |||
116 | You can use multiple checks to test data integrity after full decompression: | ||
117 | 1) Check Result and "status" variable. | ||
118 | 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize. | ||
119 | 3) Check that output(srcLen) = compressedSize, if you know real compressedSize. | ||
120 | You must use correct finish mode in that case. */ | ||
121 | |||
122 | |||
123 | Multi-call State Decompressing (zlib-like interface) | ||
124 | ---------------------------------------------------- | ||
125 | |||
126 | When to use: file->file decompressing | ||
127 | Compile files: LzmaDec.h + LzmaDec.c + 7zTypes.h | ||
128 | |||
129 | Memory Requirements: | ||
130 | - Buffer for input stream: any size (for example, 16 KB) | ||
131 | - Buffer for output stream: any size (for example, 16 KB) | ||
132 | - LZMA Internal Structures: state_size (16 KB for default settings) | ||
133 | - LZMA dictionary (dictionary size is encoded in LZMA properties header) | ||
134 | |||
135 | 1) read LZMA properties (5 bytes) and uncompressed size (8 bytes, little-endian) to header: | ||
136 | unsigned char header[LZMA_PROPS_SIZE + 8]; | ||
137 | ReadFile(inFile, header, sizeof(header) | ||
138 | |||
139 | 2) Allocate CLzmaDec structures (state + dictionary) using LZMA properties | ||
140 | |||
141 | CLzmaDec state; | ||
142 | LzmaDec_Constr(&state); | ||
143 | res = LzmaDec_Allocate(&state, header, LZMA_PROPS_SIZE, &g_Alloc); | ||
144 | if (res != SZ_OK) | ||
145 | return res; | ||
146 | |||
147 | 3) Init LzmaDec structure before any new LZMA stream. And call LzmaDec_DecodeToBuf in loop | ||
148 | |||
149 | LzmaDec_Init(&state); | ||
150 | for (;;) | ||
151 | { | ||
152 | ... | ||
153 | int res = LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, | ||
154 | const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode); | ||
155 | ... | ||
156 | } | ||
157 | |||
158 | |||
159 | 4) Free all allocated structures | ||
160 | LzmaDec_Free(&state, &g_Alloc); | ||
161 | |||
162 | Look example code: | ||
163 | C/Util/Lzma/LzmaUtil.c | ||
164 | |||
165 | |||
166 | How To compress data | ||
167 | -------------------- | ||
168 | |||
169 | Compile files: | ||
170 | 7zTypes.h | ||
171 | Threads.h | ||
172 | LzmaEnc.h | ||
173 | LzmaEnc.c | ||
174 | LzFind.h | ||
175 | LzFind.c | ||
176 | LzFindMt.h | ||
177 | LzFindMt.c | ||
178 | LzHash.h | ||
179 | |||
180 | Memory Requirements: | ||
181 | - (dictSize * 11.5 + 6 MB) + state_size | ||
182 | |||
183 | Lzma Encoder can use two memory allocators: | ||
184 | 1) alloc - for small arrays. | ||
185 | 2) allocBig - for big arrays. | ||
186 | |||
187 | For example, you can use Large RAM Pages (2 MB) in allocBig allocator for | ||
188 | better compression speed. Note that Windows has bad implementation for | ||
189 | Large RAM Pages. | ||
190 | It's OK to use same allocator for alloc and allocBig. | ||
191 | |||
192 | |||
193 | Single-call Compression with callbacks | ||
194 | -------------------------------------- | ||
195 | |||
196 | Look example code: | ||
197 | C/Util/Lzma/LzmaUtil.c | ||
198 | |||
199 | When to use: file->file compressing | ||
200 | |||
201 | 1) you must implement callback structures for interfaces: | ||
202 | ISeqInStream | ||
203 | ISeqOutStream | ||
204 | ICompressProgress | ||
205 | ISzAlloc | ||
206 | |||
207 | static void *SzAlloc(void *p, size_t size) { p = p; return MyAlloc(size); } | ||
208 | static void SzFree(void *p, void *address) { p = p; MyFree(address); } | ||
209 | static ISzAlloc g_Alloc = { SzAlloc, SzFree }; | ||
210 | |||
211 | CFileSeqInStream inStream; | ||
212 | CFileSeqOutStream outStream; | ||
213 | |||
214 | inStream.funcTable.Read = MyRead; | ||
215 | inStream.file = inFile; | ||
216 | outStream.funcTable.Write = MyWrite; | ||
217 | outStream.file = outFile; | ||
218 | |||
219 | |||
220 | 2) Create CLzmaEncHandle object; | ||
221 | |||
222 | CLzmaEncHandle enc; | ||
223 | |||
224 | enc = LzmaEnc_Create(&g_Alloc); | ||
225 | if (enc == 0) | ||
226 | return SZ_ERROR_MEM; | ||
227 | |||
228 | |||
229 | 3) initialize CLzmaEncProps properties; | ||
230 | |||
231 | LzmaEncProps_Init(&props); | ||
232 | |||
233 | Then you can change some properties in that structure. | ||
234 | |||
235 | 4) Send LZMA properties to LZMA Encoder | ||
236 | |||
237 | res = LzmaEnc_SetProps(enc, &props); | ||
238 | |||
239 | 5) Write encoded properties to header | ||
240 | |||
241 | Byte header[LZMA_PROPS_SIZE + 8]; | ||
242 | size_t headerSize = LZMA_PROPS_SIZE; | ||
243 | UInt64 fileSize; | ||
244 | int i; | ||
245 | |||
246 | res = LzmaEnc_WriteProperties(enc, header, &headerSize); | ||
247 | fileSize = MyGetFileLength(inFile); | ||
248 | for (i = 0; i < 8; i++) | ||
249 | header[headerSize++] = (Byte)(fileSize >> (8 * i)); | ||
250 | MyWriteFileAndCheck(outFile, header, headerSize) | ||
251 | |||
252 | 6) Call encoding function: | ||
253 | res = LzmaEnc_Encode(enc, &outStream.funcTable, &inStream.funcTable, | ||
254 | NULL, &g_Alloc, &g_Alloc); | ||
255 | |||
256 | 7) Destroy LZMA Encoder Object | ||
257 | LzmaEnc_Destroy(enc, &g_Alloc, &g_Alloc); | ||
258 | |||
259 | |||
260 | If callback function return some error code, LzmaEnc_Encode also returns that code | ||
261 | or it can return the code like SZ_ERROR_READ, SZ_ERROR_WRITE or SZ_ERROR_PROGRESS. | ||
262 | |||
263 | |||
264 | Single-call RAM->RAM Compression | ||
265 | -------------------------------- | ||
266 | |||
267 | Single-call RAM->RAM Compression is similar to Compression with callbacks, | ||
268 | but you provide pointers to buffers instead of pointers to stream callbacks: | ||
269 | |||
270 | SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, | ||
271 | const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, | ||
272 | ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig); | ||
273 | |||
274 | Return code: | ||
275 | SZ_OK - OK | ||
276 | SZ_ERROR_MEM - Memory allocation error | ||
277 | SZ_ERROR_PARAM - Incorrect paramater | ||
278 | SZ_ERROR_OUTPUT_EOF - output buffer overflow | ||
279 | SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) | ||
280 | |||
281 | |||
282 | |||
283 | Defines | ||
284 | ------- | ||
285 | |||
286 | _LZMA_SIZE_OPT - Enable some optimizations in LZMA Decoder to get smaller executable code. | ||
287 | |||
288 | _LZMA_PROB32 - It can increase the speed on some 32-bit CPUs, but memory usage for | ||
289 | some structures will be doubled in that case. | ||
290 | |||
291 | _LZMA_UINT32_IS_ULONG - Define it if int is 16-bit on your compiler and long is 32-bit. | ||
292 | |||
293 | _LZMA_NO_SYSTEM_SIZE_T - Define it if you don't want to use size_t type. | ||
294 | |||
295 | |||
296 | _7ZIP_PPMD_SUPPPORT - Define it if you don't want to support PPMD method in AMSI-C .7z decoder. | ||
297 | |||
298 | |||
299 | C++ LZMA Encoder/Decoder | ||
300 | ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
301 | C++ LZMA code use COM-like interfaces. So if you want to use it, | ||
302 | you can study basics of COM/OLE. | ||
303 | C++ LZMA code is just wrapper over ANSI-C code. | ||
304 | |||
305 | |||
306 | C++ Notes | ||
307 | ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
308 | If you use some C++ code folders in 7-Zip (for example, C++ code for .7z handling), | ||
309 | you must check that you correctly work with "new" operator. | ||
310 | 7-Zip can be compiled with MSVC 6.0 that doesn't throw "exception" from "new" operator. | ||
311 | So 7-Zip uses "CPP\Common\NewHandler.cpp" that redefines "new" operator: | ||
312 | operator new(size_t size) | ||
313 | { | ||
314 | void *p = ::malloc(size); | ||
315 | if (p == 0) | ||
316 | throw CNewException(); | ||
317 | return p; | ||
318 | } | ||
319 | If you use MSCV that throws exception for "new" operator, you can compile without | ||
320 | "NewHandler.cpp". So standard exception will be used. Actually some code of | ||
321 | 7-Zip catches any exception in internal code and converts it to HRESULT code. | ||
322 | So you don't need to catch CNewException, if you call COM interfaces of 7-Zip. | ||
323 | |||
324 | --- | ||
325 | |||
326 | http://www.7-zip.org | ||
327 | http://www.7-zip.org/sdk.html | ||
328 | http://www.7-zip.org/support.html | ||
diff --git a/DOC/readme.txt b/DOC/readme.txt new file mode 100644 index 0000000..0f6c77b --- /dev/null +++ b/DOC/readme.txt | |||
@@ -0,0 +1,272 @@ | |||
1 | 7-Zip 21.07 Sources | ||
2 | ------------------- | ||
3 | |||
4 | 7-Zip is a file archiver for Windows. | ||
5 | |||
6 | 7-Zip Copyright (C) 1999-2021 Igor Pavlov. | ||
7 | |||
8 | |||
9 | License Info | ||
10 | ------------ | ||
11 | |||
12 | 7-Zip is free software distributed under the GNU LGPL | ||
13 | (except for unRar code). | ||
14 | read License.txt for more infomation about license. | ||
15 | |||
16 | Notes about unRAR license: | ||
17 | |||
18 | Please check main restriction from unRar license: | ||
19 | |||
20 | 2. The unRAR sources may be used in any software to handle RAR | ||
21 | archives without limitations free of charge, but cannot be used | ||
22 | to re-create the RAR compression algorithm, which is proprietary. | ||
23 | Distribution of modified unRAR sources in separate form or as a | ||
24 | part of other software is permitted, provided that it is clearly | ||
25 | stated in the documentation and source comments that the code may | ||
26 | not be used to develop a RAR (WinRAR) compatible archiver. | ||
27 | |||
28 | In brief it means: | ||
29 | 1) You can compile and use compiled files under GNU LGPL rules, since | ||
30 | unRAR license almost has no restrictions for compiled files. | ||
31 | You can link these compiled files to LGPL programs. | ||
32 | 2) You can fix bugs in source code and use compiled fixed version. | ||
33 | 3) You can not use unRAR sources to re-create the RAR compression algorithm. | ||
34 | |||
35 | |||
36 | LZMA SDK | ||
37 | -------- | ||
38 | |||
39 | This package also contains some files from LZMA SDK | ||
40 | You can download LZMA SDK from: | ||
41 | http://www.7-zip.org/sdk.html | ||
42 | LZMA SDK is written and placed in the public domain by Igor Pavlov. | ||
43 | |||
44 | |||
45 | How to compile in Windows | ||
46 | ------------------------- | ||
47 | |||
48 | To compile the sources to Windows binaries you need Visual Studio compiler and/or Windows SDK. | ||
49 | You can use latest Windows Studio 2017/2019 to compile binaries for x86, x64 and arm64 platforms. | ||
50 | Also you can use old compilers for some platforms: | ||
51 | x86 : Visual C++ 6.0 with Platform SDK | ||
52 | x64 : Windows Server 2003 R2 Platform SDK | ||
53 | arm64 : Windows Studio 2017 | ||
54 | arm : Windows Studio 2017 | ||
55 | ia64 (itanium) : Windows Server 2003 R2 Platform SDK | ||
56 | arm for Windows CE : Standard SDK for Windows CE 5.0 | ||
57 | |||
58 | If you use MSVC6, specify also Platform SDK directories at top of directories lists: | ||
59 | Tools / Options / Directories | ||
60 | - Include files | ||
61 | - Library files | ||
62 | |||
63 | Also you need Microsoft Macro Assembler: | ||
64 | - ml.exe for x86 | ||
65 | - ml64.exe for x64 | ||
66 | You can use ml.exe from Windows SDK for Windows Vista or some later versions. | ||
67 | |||
68 | There are two ways to compile 7-Zip binaries: | ||
69 | 1) via makefile in command line. | ||
70 | 2) via dsp file in Visual Studio. | ||
71 | |||
72 | The dsp file compiling can be used for development and debug purposes. | ||
73 | The final 7-Zip binaries are compiled via makefiles, that provide best | ||
74 | optimization options. | ||
75 | |||
76 | |||
77 | How to compile with makefile | ||
78 | ---------------------------- | ||
79 | |||
80 | Some macronames can be defined for compiling with makefile: | ||
81 | |||
82 | PLATFORM | ||
83 | with possible values: x64, x86, arm64, arm, ia64 | ||
84 | |||
85 | OLD_COMPILER | ||
86 | for old VC compiler, like MSCV 6.0. | ||
87 | |||
88 | MY_DYNAMIC_LINK | ||
89 | for dynamic linking to the run-time library (msvcrt.dll). | ||
90 | The default makefile option is static linking to the run-time library. | ||
91 | |||
92 | |||
93 | |||
94 | Compiling 7-Zip for Unix/Linux | ||
95 | ------------------------------ | ||
96 | |||
97 | There are several otpions to compile 7-Zip with different compilers: gcc and clang. | ||
98 | Also 7-Zip code contains two versions for some critical parts of code: in C and in Assembeler. | ||
99 | So if you compile the version with Assembeler code, you will get faster 7-Zip binary. | ||
100 | |||
101 | 7-Zip's assembler code uses the following syntax for different platforms: | ||
102 | |||
103 | 1) x86 and x86-64 (AMD64): MASM syntax. | ||
104 | There are 2 programs that supports MASM syntax in Linux. | ||
105 | ' 'Asmc Macro Assembler and JWasm. But JWasm now doesn't support some | ||
106 | cpu instructions used in 7-Zip. | ||
107 | So you must install Asmc Macro Assembler in Linux, if you want to compile fastest version | ||
108 | of 7-Zip x86 and x86-64: | ||
109 | https://github.com/nidud/asmc | ||
110 | |||
111 | 2) arm64: GNU assembler for ARM64 with preprocessor. | ||
112 | That systax of that arm64 assembler code in 7-Zip is supported by GCC and CLANG for ARM64. | ||
113 | |||
114 | There are different binaries that can be compiled from 7-Zip source. | ||
115 | There are 2 main files in folder for compiling: | ||
116 | makefile - that can be used for compiling Windows version of 7-Zip with nmake command | ||
117 | makefile.gcc - that can be used for compiling Linux/macOS versions of 7-Zip with make command | ||
118 | |||
119 | At first you must change the current folder to folder that contains `makefile.gcc`: | ||
120 | |||
121 | cd CPP/7zip/Bundles/Alone2 | ||
122 | |||
123 | Then you can compile `makefile.gcc` with the command: | ||
124 | |||
125 | make -j -f makefile.gcc | ||
126 | |||
127 | Also there are additional "*.mak" files in folder "CPP/7zip/" that can be used to compile | ||
128 | 7-Zip binaries with optimized code and optimzing options. | ||
129 | |||
130 | To compile with GCC without assembler: | ||
131 | cd CPP/7zip/Bundles/Alone2 | ||
132 | make -j -f ../../cmpl_gcc.mak | ||
133 | |||
134 | To compile with CLANG without assembler: | ||
135 | make -j -f ../../cmpl_clang.mak | ||
136 | |||
137 | To compile 7-Zip for x86-64 with asmc assembler: | ||
138 | make -j -f ../../cmpl_gcc_x64.mak | ||
139 | |||
140 | To compile 7-Zip for arm64 with assembler: | ||
141 | make -j -f ../../cmpl_gcc_arm64.mak | ||
142 | |||
143 | To compile 7-Zip for arm64 for macOS: | ||
144 | make -j -f ../../cmpl_mac_arm64.mak | ||
145 | |||
146 | Also you can change some compiler options in the mak files: | ||
147 | cmpl_gcc.mak | ||
148 | var_gcc.mak | ||
149 | warn_gcc.mak | ||
150 | |||
151 | makefile.gcc supports some variables that can change compile options | ||
152 | |||
153 | USE_JWASM=1 | ||
154 | use JWasm assembler instead of Asmc. | ||
155 | Note that JWasm doesn't support AES instructions. So AES code from C version AesOpt.c | ||
156 | will be used instead of assembler code from AesOpt.asm. | ||
157 | |||
158 | DISABLE_RAR=1 | ||
159 | removes whole RAR related code from compilation. | ||
160 | |||
161 | DISABLE_RAR_COMPRESS=1 | ||
162 | removes "not fully free" code of RAR decompression codecs from compilation. | ||
163 | |||
164 | RAR decompression codecs in 7-Zip code has some additional license restrictions, | ||
165 | that can be treated as not fully compatible with free-software licenses. | ||
166 | DISABLE_RAR_COMPRESS=1 allows to exclude such "not-fully-free" RAR code from compilation. | ||
167 | if DISABLE_RAR_COMPRESS=1 is specified, 7-zip will not be able to decompress files | ||
168 | from rar archives, but 7-zip still will be able to open rar archives to get list of | ||
169 | files or to extract files that are stored without compression. | ||
170 | if DISABLE_RAR=1 is specified, 7-zip will not be able to work with RAR archives. | ||
171 | |||
172 | |||
173 | |||
174 | 7-Zip and p7zip | ||
175 | =============== | ||
176 | Now there are two different ports of 7-Zip for Linux/macOS: | ||
177 | |||
178 | 1) p7zip - another port of 7-Zip for Linux, made by an independent developer. | ||
179 | The latest version of p7zip now is 16.02, and that p7zip 16.02 is outdated now. | ||
180 | http://sourceforge.net/projects/p7zip/ | ||
181 | |||
182 | 2) 7-Zip for Linux/macOS - this package - it's new code with all changes from latest 7-Zip for Windows. | ||
183 | |||
184 | These two ports are not identical. | ||
185 | Note also that some Linux specific things can be implemented better in p7zip than in new 7-Zip for Linux. | ||
186 | |||
187 | |||
188 | |||
189 | |||
190 | Notes: | ||
191 | ------ | ||
192 | 7-Zip consists of COM modules (DLL files). | ||
193 | But 7-Zip doesn't use standard COM interfaces for creating objects. | ||
194 | Look at | ||
195 | 7zip\UI\Client7z folder for example of using DLL files of 7-Zip. | ||
196 | Some DLL files can use other DLL files from 7-Zip. | ||
197 | If you don't like it, you must use standalone version of DLL. | ||
198 | To compile standalone version of DLL you must include all used parts | ||
199 | to project and define some defs. | ||
200 | For example, 7zip\Bundles\Format7z is a standalone version of 7z.dll | ||
201 | that works with 7z format. So you can use such DLL in your project | ||
202 | without additional DLL files. | ||
203 | |||
204 | |||
205 | Description of 7-Zip sources package | ||
206 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
207 | |||
208 | DOC Documentation | ||
209 | --- | ||
210 | 7zFormat.txt - 7z format description | ||
211 | copying.txt - GNU LGPL license | ||
212 | unRarLicense.txt - License for unRAR part of source code | ||
213 | src-history.txt - Sources history | ||
214 | Methods.txt - Compression method IDs | ||
215 | readme.txt - Readme file | ||
216 | lzma.txt - LZMA compression description | ||
217 | 7zip.nsi - installer script for NSIS | ||
218 | 7zip.wix - installer script for WIX | ||
219 | |||
220 | |||
221 | Asm - Source code in Assembler : optimized code for CRC, SHA, AES, LZMA decoding. | ||
222 | |||
223 | C - Source code in C | ||
224 | |||
225 | CPP - Source code in C++ | ||
226 | |||
227 | Common common files for C++ projects | ||
228 | |||
229 | Windows common files for Windows related code | ||
230 | |||
231 | 7zip | ||
232 | |||
233 | Common Common modules for 7-zip | ||
234 | |||
235 | Archive files related to archiving | ||
236 | |||
237 | Bundle Modules that are bundles of other modules (files) | ||
238 | |||
239 | Alone 7za.exe: Standalone version of 7-Zip console that supports only 7z/xz/cab/zip/gzip/bzip2/tar. | ||
240 | Alone2 7zz.exe: Standalone version of 7-Zip console that supports all formats. | ||
241 | Alone7z 7zr.exe: Standalone version of 7-Zip console that supports only 7z (reduced version) | ||
242 | Fm Standalone version of 7-Zip File Manager | ||
243 | Format7z 7za.dll: .7z support | ||
244 | Format7zExtract 7zxa.dll: .7z support, extracting only | ||
245 | Format7zR 7zr.dll: .7z support, reduced version | ||
246 | Format7zExtractR 7zxr.dll: .7z support, reduced version, extracting only | ||
247 | Format7zF 7z.dll: all formats | ||
248 | LzmaCon lzma.exe: LZMA compression/decompression | ||
249 | SFXCon 7zCon.sfx: Console 7z SFX module | ||
250 | SFXWin 7z.sfx: Windows 7z SFX module | ||
251 | SFXSetup 7zS.sfx: Windows 7z SFX module for Installers | ||
252 | |||
253 | Compress files for compression/decompression | ||
254 | |||
255 | Crypto files for encryption / decompression | ||
256 | |||
257 | UI | ||
258 | |||
259 | Agent Intermediary modules for FAR plugin and Explorer plugin | ||
260 | Client7z Test application for 7za.dll | ||
261 | Common Common UI files | ||
262 | Console 7z.exe : Console version | ||
263 | Explorer 7-zip.dll: 7-Zip Shell extension | ||
264 | Far plugin for Far Manager | ||
265 | FileManager 7zFM.exe: 7-Zip File Manager | ||
266 | GUI 7zG.exe: 7-Zip GUI version | ||
267 | |||
268 | |||
269 | |||
270 | --- | ||
271 | Igor Pavlov | ||
272 | http://www.7-zip.org | ||
diff --git a/DOC/src-history.txt b/DOC/src-history.txt new file mode 100644 index 0000000..0b54fe3 --- /dev/null +++ b/DOC/src-history.txt | |||
@@ -0,0 +1,681 @@ | |||
1 | HISTORY of the 7-Zip source code | ||
2 | -------------------------------- | ||
3 | |||
4 | 21.07 2021-12-26 | ||
5 | ------------------------- | ||
6 | - The sorting order of files in archives was slightly changed to be more consistent | ||
7 | for cases where the name of some directory is the same as the prefix part of the name | ||
8 | of another directory or file. | ||
9 | - TAR archives created by 7-Zip now are more consistent with archives created by GNU TAR program. | ||
10 | |||
11 | |||
12 | 21.06 2021-11-24 | ||
13 | ------------------------- | ||
14 | - Bug in LZMA encoder in file LzmaEnc.c was fixed: | ||
15 | LzmaEnc_MemEncode(), LzmaEncode() and LzmaCompress() could work incorrectly, | ||
16 | if size value for output buffer is smaller than size required for all compressed data. | ||
17 | LzmaEnc_Encode() could work incorrectly, | ||
18 | if callback ISeqOutStream::Write() doesn't write all compressed data. | ||
19 | NCompress::NLzma::CEncoder::Code() could work incorrectly, | ||
20 | if callback ISequentialOutStream::Write() returns error code. | ||
21 | - Bug in versions 21.00-21.05 was fixed: | ||
22 | 7-Zip didn't set attributes of directories during archive extracting. | ||
23 | |||
24 | |||
25 | 21.04 beta 2021-11-02 | ||
26 | ------------------------- | ||
27 | - 7-Zip now reduces the number of working CPU threads for compression, | ||
28 | if RAM size is not enough for compression with big LZMA2 dictionary. | ||
29 | - 7-Zip now can create and check "file.sha256" and "file.sha1" text files | ||
30 | that contain the list of file names and SHA-1 / SHA-256 checksums in format | ||
31 | compatible with sha1sum/sha256sum programs. | ||
32 | |||
33 | |||
34 | 21.03 beta 2021-07-20 | ||
35 | ------------------------- | ||
36 | - The maximum dictionary size for LZMA/LZMA2 compressing was increased to 4 GB (3840 MiB). | ||
37 | - Minor speed optimizations in LZMA/LZMA2 compressing. | ||
38 | |||
39 | |||
40 | 21.02 alpha 2021-05-06 | ||
41 | ------------------------- | ||
42 | - 7-Zip now writes additional field for filename in UTF-8 encoding to zip archives. | ||
43 | It allows to extract correct file name from zip archives on different systems. | ||
44 | - The command line version of 7-Zip for macOS was released. | ||
45 | - The speed for LZMA and LZMA2 decompression in arm64 versions for macOS and Linux | ||
46 | was increased by 20%-60%. | ||
47 | - Some changes and improvements in ZIP, TAR and NSIS code. | ||
48 | |||
49 | |||
50 | 21.01 alpha 2021-03-09 | ||
51 | ------------------------- | ||
52 | - The command line version of 7-Zip for Linux was released. | ||
53 | - The improvements for speed of ARM64 version using hardware CPU instructions | ||
54 | for AES, CRC-32, SHA-1 and SHA-256. | ||
55 | - The bug in versions 18.02 - 21.00 was fixed: | ||
56 | 7-Zip could not correctly extract some ZIP archives created with xz compression method. | ||
57 | - Some bugs were fixed. | ||
58 | |||
59 | |||
60 | 20.02 alpha 2020-08-08 | ||
61 | ------------------------- | ||
62 | - The default number of LZMA2 chunks per solid block in 7z archive was increased to 64. | ||
63 | It allows to increase the compression speed for big 7z archives, if there is a big number | ||
64 | of CPU cores and threads. | ||
65 | - The speed of PPMd compressing/decompressing was increased for 7z/ZIP/RAR archives. | ||
66 | - The new -ssp switch. If the switch -ssp is specified, 7-Zip doesn't allow the system | ||
67 | to modify "Last Access Time" property of source files for archiving and hashing operations. | ||
68 | - Some bugs were fixed. | ||
69 | |||
70 | |||
71 | 20.00 alpha 2020-02-06 | ||
72 | ------------------------- | ||
73 | - 7-Zip now supports new optional match finders for LZMA/LZMA2 compression: bt5 and hc5, | ||
74 | that can work faster than bt4 and hc4 match finders for the data with big redundancy. | ||
75 | - The compression ratio was improved for Fast and Fastest compression levels with the | ||
76 | following default settings: | ||
77 | - Fastest level (-mx1) : hc5 match finder with 256 KB dictionary. | ||
78 | - Fast level (-mx3) : hc5 match finder with 4 MB dictionary. | ||
79 | - Minor speed optimizations in multithreaded LZMA/LZMA2 compression for Normal/Maximum/Ultra | ||
80 | compression levels. | ||
81 | - bzip2 decoding code was updated to support bzip2 archives, created by lbzip2 program. | ||
82 | |||
83 | |||
84 | 19.02 2019-09-05 | ||
85 | ------------------------- | ||
86 | - Support for SHA-1/SHA-256 optimized code in | ||
87 | Sha1Opt.c, Sha256Opt.c, Sha256Opt.asm, Sha1Opt.asm. | ||
88 | |||
89 | |||
90 | 19.00 2019-02-21 | ||
91 | ------------------------- | ||
92 | - Encryption strength for 7z archives was increased: | ||
93 | the size of random initialization vector was increased from 64-bit to 128-bit, | ||
94 | and the pseudo-random number generator was improved. | ||
95 | - Some bugs were fixed. | ||
96 | |||
97 | |||
98 | 18.06 2018-12-30 | ||
99 | ------------------------- | ||
100 | - The speed for LZMA/LZMA2 compressing was increased by 3-10%, | ||
101 | and there are minor changes in compression ratio. | ||
102 | - Some bugs were fixed. | ||
103 | - The bug in 7-Zip 18.02-18.05 was fixed: | ||
104 | There was memory leak in multithreading xz decoder - XzDecMt_Decode(), | ||
105 | if xz stream contains only one block. | ||
106 | - 7-Zip 18.02-18.05 used only one CPU thread for bz2 archive creation. | ||
107 | - The changes for MSVS compiler makefiles: | ||
108 | - the makefiles now use "PLATFORM" macroname with values (x64, x86, arm64) | ||
109 | instead of "CPU" macroname with values (AMD64, ARM64). | ||
110 | - the makefiles by default now use static version of the run-time library. | ||
111 | |||
112 | |||
113 | 18.05 2018-04-30 | ||
114 | ------------------------- | ||
115 | - The speed for LZMA/LZMA2 compressing was increased | ||
116 | by 8% for fastest/fast compression levels and | ||
117 | by 3% for normal/maximum compression levels. | ||
118 | - Previous versions of 7-Zip could work incorrectly in "Large memory pages" mode in | ||
119 | Windows 10 because of some BUG with "Large Pages" in Windows 10. | ||
120 | Now 7-Zip doesn't use "Large Pages" on Windows 10 up to revision 1709 (16299). | ||
121 | |||
122 | |||
123 | 18.03 beta 2018-03-04 | ||
124 | ------------------------- | ||
125 | - Asm\x86\LzmaDecOpt.asm: new optimized LZMA decoder written in asm | ||
126 | for x64 with about 30% higher speed than main version of LZMA decoder written in C. | ||
127 | - The speed for single-thread LZMA/LZMA2 decoder written in C was increased by 3%. | ||
128 | - 7-Zip now can use multi-threading for 7z/LZMA2 decoding, | ||
129 | if there are multiple independent data chunks in LZMA2 stream. | ||
130 | - 7-Zip now can use multi-threading for xz decoding, | ||
131 | if there are multiple blocks in xz stream. | ||
132 | |||
133 | |||
134 | 17.00 beta 2017-04-29 | ||
135 | ------------------------- | ||
136 | - NewHandler.h / NewHandler.cpp: | ||
137 | now it redefines operator new() only for old MSVC compilers (_MSC_VER < 1900). | ||
138 | - C/7zTypes.h : the names of variables in interface structures were changed (vt). | ||
139 | - Some bugs were fixed. 7-Zip could crash in some cases. | ||
140 | - Some internal changes in code. | ||
141 | |||
142 | |||
143 | 16.02 2016-05-21 | ||
144 | ------------------------- | ||
145 | - The BUG in 16.00 - 16.01 was fixed: | ||
146 | Split Handler (SplitHandler.cpp) returned incorrect | ||
147 | total size value (kpidSize) for split archives. | ||
148 | |||
149 | |||
150 | 16.01 2016-05-19 | ||
151 | ------------------------- | ||
152 | - Some bugs were fixed, | ||
153 | - Some internal changes to reduce the number of compiler warnings. | ||
154 | |||
155 | |||
156 | 16.00 2016-05-10 | ||
157 | ------------------------- | ||
158 | - 7-Zip now can extract multivolume ZIP archives (z01, z02, ... , zip). | ||
159 | - Some bugs were fixed, | ||
160 | |||
161 | |||
162 | 15.12 2015-11-19 | ||
163 | ------------------------- | ||
164 | - The BUG in C version of 7z decoder was fixed: | ||
165 | 7zDec.c : SzDecodeLzma2() | ||
166 | 7z decoder could mistakenly report about decoding error for some 7z archives | ||
167 | that use LZMA2 compression method. | ||
168 | The probability to get that mistaken decoding error report was about | ||
169 | one error per 16384 solid blocks for solid blocks larger than 16 KB (compressed size). | ||
170 | - The BUG (in 9.26-15.11) in C version of 7z decoder was fixed: | ||
171 | 7zArcIn.c : SzReadHeader2() | ||
172 | 7z decoder worked incorrectly for 7z archives that contain | ||
173 | empty solid blocks, that can be placed to 7z archive, if some file is | ||
174 | unavailable for reading during archive creation. | ||
175 | |||
176 | |||
177 | 15.09 beta 2015-10-16 | ||
178 | ------------------------- | ||
179 | - The BUG in LZMA / LZMA2 encoding code was fixed. | ||
180 | The BUG in LzFind.c::MatchFinder_ReadBlock() function. | ||
181 | If input data size is larger than (4 GiB - dictionary_size), | ||
182 | the following code worked incorrectly: | ||
183 | - LZMA : LzmaEnc_MemEncode(), LzmaEncode() : LZMA encoding functions | ||
184 | for compressing from memory to memory. | ||
185 | That BUG is not related to LZMA encoder version that works via streams. | ||
186 | - LZMA2 : multi-threaded version of LZMA2 encoder worked incorrectly, if | ||
187 | default value of chunk size (CLzma2EncProps::blockSize) is changed | ||
188 | to value larger than (4 GiB - dictionary_size). | ||
189 | |||
190 | |||
191 | 9.38 beta 2015-01-03 | ||
192 | ------------------------- | ||
193 | - The BUG in 9.31-9.37 was fixed: | ||
194 | IArchiveGetRawProps interface was disabled for 7z archives. | ||
195 | - The BUG in 9.26-9.36 was fixed: | ||
196 | Some code in CPP\7zip\Archive\7z\ worked correctly only under Windows. | ||
197 | |||
198 | |||
199 | 9.36 beta 2014-12-26 | ||
200 | ------------------------- | ||
201 | - The BUG in command line version was fixed: | ||
202 | 7-Zip created temporary archive in current folder during update archive | ||
203 | operation, if -w{Path} switch was not specified. | ||
204 | The fixed 7-Zip creates temporary archive in folder that contains updated archive. | ||
205 | - The BUG in 9.33-9.35 was fixed: | ||
206 | 7-Zip silently ignored file reading errors during 7z or gz archive creation, | ||
207 | and the created archive contained only part of file that was read before error. | ||
208 | The fixed 7-Zip stops archive creation and it reports about error. | ||
209 | |||
210 | |||
211 | 9.31 2012-10-31 | ||
212 | ------------------------- | ||
213 | - InBuffer.h : CInBuffer uses ISequentialInStream *_stream; instead of CMyComPtr<ISequentialInStream> | ||
214 | OutBuffer.h: COutBuffer uses ISequentialOutStream *_stream; instead of CMyComPtr<ISequentialOutStream> | ||
215 | |||
216 | |||
217 | 9.26 2011-04-11 | ||
218 | ------------------------- | ||
219 | - The BUG was fixed: multi-threaded ZIP stored file size that was at scan stage, | ||
220 | So if the file was changed after scan, the Unpack Size field was incorrect | ||
221 | |||
222 | |||
223 | 9.21 2011-04-11 | ||
224 | ------------------------- | ||
225 | - New class FString for file names at file systems. | ||
226 | - Speed optimization in CRC code for big-endian CPUs. | ||
227 | |||
228 | |||
229 | 9.18 2010-11-02 | ||
230 | ------------------------- | ||
231 | - New small SFX module for installers (C/Util/SfxSetup). | ||
232 | |||
233 | |||
234 | 9.17 2010-10-04 | ||
235 | ------------------------- | ||
236 | - IStream.h::IOutStream:: | ||
237 | STDMETHOD(SetSize)(Int64 newSize) PURE; | ||
238 | was changed to | ||
239 | STDMETHOD(SetSize)(UInt64 newSize) PURE; | ||
240 | |||
241 | |||
242 | 9.09 2009-12-12 | ||
243 | ------------------------- | ||
244 | - The bug was fixed: | ||
245 | Utf16_To_Utf8 funstions in UTFConvert.cpp and 7zMain.c | ||
246 | incorrectly converted surrogate characters (the code >= 0x10000) to UTF-8. | ||
247 | |||
248 | |||
249 | 9.05 2009-07-05 | ||
250 | ------------------------- | ||
251 | - FileMapping.h::CFileMapping now returns WRes | ||
252 | |||
253 | |||
254 | 9.04 2009-05-30 | ||
255 | ------------------------- | ||
256 | - ICoder.h: NCoderPropID::EEnum values were changed | ||
257 | |||
258 | |||
259 | 9.02 2009-04-23 | ||
260 | ------------------------- | ||
261 | - Bug was fixed: if swap2 filter was requests at compression, | ||
262 | 7-zip used swap4 filter instead (but id was swap2), so archives were incorrect. | ||
263 | |||
264 | 4.61 2008-11-23 | ||
265 | ------------------------- | ||
266 | - Bug in ver. 4.58+ was fixed: | ||
267 | 7-Zip didn't use any -m* switch after -mtc, -mcl or -mcu for .zip archives. | ||
268 | - Bug in .CAB code was fixed. 7-Zip didn't show some empty files, | ||
269 | if .CAB archive contains more than one empty file. | ||
270 | |||
271 | |||
272 | 4.59 2008-07-27 | ||
273 | ------------------------- | ||
274 | - Bug was fixed: | ||
275 | LZMA Encoder in fast compression mode could access memory outside of | ||
276 | allocated range in some rare cases. | ||
277 | |||
278 | |||
279 | 4.59 alpha 2008-05-30 | ||
280 | ------------------------- | ||
281 | - BUGS was fixed: | ||
282 | 7zOut.cpp: 7-Zip incorrectly wrote size of property records in some cases. | ||
283 | 7zIn.cpp: 7-Zip incorrectly work with archive, containg archive properties. | ||
284 | |||
285 | 4.58 alpha 9 2008-04-29 | ||
286 | ------------------------- | ||
287 | - BUG was fixed: 7-Zip showed incorrect timestamps in ISO files. | ||
288 | |||
289 | |||
290 | 4.58 alpha 8 2008-04-15 | ||
291 | ------------------------- | ||
292 | - BUG in 4.58 alpha 5/6/7 was fixed: | ||
293 | LZMA encoder worked incorrectly, if lp != 0. | ||
294 | - Unicode (UTF-8) support for filenames in .ZIP archives. Now there are 3 modes: | ||
295 | 1) Default mode: 7-Zip uses UTF-8, if the local code page doesn't contain required symbols. | ||
296 | 2) -mcu switch: 7-Zip uses UTF-8, if there are non-ASCII symbols. | ||
297 | 3) -mcl switch: 7-Zip uses local code page. | ||
298 | - Now it's possible to use -mSW- and -mSW+ switches instead of -mSW=off and -mSW=on | ||
299 | |||
300 | |||
301 | 4.58 alpha 7 2008-04-08 | ||
302 | ------------------------- | ||
303 | - BUG was fixed: BZip2Encoder and BZip2Decoder used CEvent objects without | ||
304 | creating, when BZip2 code was called with one thread (with -mmt1 switch or with | ||
305 | default switches on single thread CPU). | ||
306 | - .lzma support. | ||
307 | - RPM and NSIS support was improved. | ||
308 | - LZMA now stores only (2 << n) or (3 << n) dictionary size value to LZMA properties. | ||
309 | |||
310 | |||
311 | 4.58 alpha 6 2008-03-27 | ||
312 | ------------------------- | ||
313 | - NTFS time extra in ZIP. | ||
314 | - New item property - kpidTimeType - VT_UI4 (0 - NTFS, 1 - Unix, 2 - DOS). | ||
315 | - Static CRC table is not required now for Lzma Encoder (in Lz MatchFinder). | ||
316 | |||
317 | |||
318 | 4.58 alpha 5 2008-03-19 | ||
319 | ------------------------- | ||
320 | - Creation time (-mtc switch) for .7z archives | ||
321 | - LZMA encoder was converted to ANSI-C | ||
322 | |||
323 | |||
324 | 4.58 alpha 3 2008-02-25 | ||
325 | ------------------------- | ||
326 | - Speed optimizations for LZMA decoding. Now it uses C code instead of C++. | ||
327 | - 7-Zip now has 128 MB dictionary limit for 32-bit version: | ||
328 | It's for speed optimization: kNumLogBits = 9 + sizeof(size_t) / 2; | ||
329 | - TAR: 'D' link flag support. | ||
330 | - 7-Zip now can unpack multivolume RAR archives created with | ||
331 | "old style volume names" scheme (-vn switch) and names *.001, *.002, ... | ||
332 | - Fixed bugs: | ||
333 | - 7-Zip FM could not copy / move files to root network folders like \\COMPNAME\FOLDERNAME\ | ||
334 | In case of move it removed original files. | ||
335 | - SFX-WIN: if there are errors, it still could return 0. | ||
336 | - ZIP (.XPS file) isZip64 && thisDiskNumber16 == 0xFFFF. | ||
337 | - ZIP name updating: | ||
338 | If zip file contains extra field and you try to change properties of files, | ||
339 | 7-zip tries to delete all extra fileds (except for WzAES). | ||
340 | And that code could hang. | ||
341 | - 7-Zip GUI didn't suggest BZip2 dictionary size used in previous run. | ||
342 | - If creation time stamp was included in .RAR archive, 7-zip used creation time stamp | ||
343 | as modification time stamp. | ||
344 | |||
345 | 4.58 alpha 2 2007-12-31 | ||
346 | ------------------------- | ||
347 | - Small changes in Deflate and LZMA compression. | ||
348 | - Some speed optimizations. | ||
349 | |||
350 | |||
351 | 4.57 | ||
352 | ---- | ||
353 | - Bug was fixed: | ||
354 | Anti item is created for wrong file: | ||
355 | http://sourceforge.net/forum/forum.php?thread_id=1880366&forum_id=45798 | ||
356 | |||
357 | |||
358 | 4.52 beta 2007-07-32 | ||
359 | ------------------------- | ||
360 | - 7-Zip could not decompress some cab files | ||
361 | - "." dir creating at FAT was fixed / long names | ||
362 | |||
363 | |||
364 | 4.50 beta 2007-07-24 | ||
365 | ------------------------- | ||
366 | - 7-Zip now replaces unsupported filenames (like "nul", "com1") during extracting. | ||
367 | - New switch for command line version: | ||
368 | -ssc[-] enables/disables case-sensitive mode. | ||
369 | - 7z.exe l shows archive comment for zip archives | ||
370 | - Some bugs were fixed: long paths names shorter than 4. | ||
371 | - Speed optimizations for AES encryption. | ||
372 | |||
373 | |||
374 | |||
375 | 4.56 beta 2007-09-13 | ||
376 | ------------------------- | ||
377 | - some fixes in LZ encoder (LZMA and Deflate) code. | ||
378 | size_t was replaces to ptrdiff_t. | ||
379 | size_t version worked incorrectly with some compilers. | ||
380 | |||
381 | |||
382 | 4.46 beta 2007-05-25 | ||
383 | ------------------------- | ||
384 | - CPP Synchronization objects now return HRes (error code) instead of bool. | ||
385 | |||
386 | |||
387 | 4.45 beta 2007-04-16 | ||
388 | ------------------------- | ||
389 | - 7-Zip now uses C version of CRC, so you must call CrcGenerateTable at | ||
390 | stratup code, or you must add CPP/Common/CRC.cpp to your project. | ||
391 | - Method ID in .7z now is 63-bit integer (UInt64). | ||
392 | - Open error messages | ||
393 | - unRar 1.5 fixed | ||
394 | - unShrink fixed | ||
395 | - BUG of 4.43 beta and 4.44 beta was fixed. | ||
396 | 7-Zip compressing to .zip in multi-threading mode didn't work in some cases. | ||
397 | |||
398 | |||
399 | 4.44 beta 2007-01-20 | ||
400 | ------------------------- | ||
401 | |||
402 | - Bug was fixed: LZMAEncoder.cpp::CEncoder::GetOptimumFast | ||
403 | it was: | ||
404 | data++ | ||
405 | fixed version: | ||
406 | data = _matchFinder.GetPointerToCurrentPos(_matchFinderObj) - 1; | ||
407 | It could lead to very small cpmpression ratio decreasing when block needs move. | ||
408 | |||
409 | |||
410 | 4.30 beta 2005-11-18 | ||
411 | ------------------------- | ||
412 | - Security.h::AddLockMemoryPrivilege - installs "Large pages" feature | ||
413 | - MemoryLock.h::EnableLockMemoryPrivilege - enables "Large pages" feature | ||
414 | - Alloc.h::SetLargePageSize - sets optimal LargePageSize size | ||
415 | |||
416 | |||
417 | 4.27 2005-09-21 | ||
418 | ------------------------- | ||
419 | - Some GUIDs/interfaces were changed. | ||
420 | IStream.h: | ||
421 | ISequentialInStream::Read now works as old ReadPart | ||
422 | ISequentialOutStream::Write now works as old WritePart | ||
423 | |||
424 | |||
425 | 4.26 beta 2005-08-05 | ||
426 | ------------------------- | ||
427 | - MyAlloc(0)/BigAlloc(0) now return 0 | ||
428 | |||
429 | |||
430 | 4.25 beta 2005-07-31 | ||
431 | ------------------------- | ||
432 | - More 64-bit compatibilty | ||
433 | |||
434 | |||
435 | 4.24 beta 2005-07-06 | ||
436 | ------------------------- | ||
437 | - Common\NewHandler.h: using throw() for code size optimization. | ||
438 | |||
439 | |||
440 | 4.23 2005-06-29 | ||
441 | ------------------------- | ||
442 | - Bug was fixed: memory leak in Cab decoder. | ||
443 | |||
444 | |||
445 | 4.19 beta 2005-05-21 | ||
446 | ------------------------- | ||
447 | - BZip2 code was rewritten. Now 7-Zip doesn't use original BZip2 code. | ||
448 | Old (original) version was moved to folder 7zip/Compress/BZip2Original/ | ||
449 | |||
450 | |||
451 | 4.14 beta 2005-01-11 | ||
452 | ------------------------- | ||
453 | - STL using was reduced | ||
454 | - 7za now supports Split(001) archves | ||
455 | |||
456 | |||
457 | 4.10 beta 2004-10-21 | ||
458 | ------------------------- | ||
459 | - Codecs now use new interface: ICompressSetDecoderProperties2 | ||
460 | |||
461 | |||
462 | 4.07 beta 2004-10-03 | ||
463 | ------------------------- | ||
464 | - some interfaces were changed slightly to support | ||
465 | -stdin -stdout mode. | ||
466 | - FilterCoder for simple filters | ||
467 | - Wildcard censor class was changed. | ||
468 | - Bug was fixed: when encrypted stream was multiple 16, | ||
469 | it used additional 16 empty bytes. | ||
470 | |||
471 | |||
472 | 3.11 2003-10-06 | ||
473 | ------------------------- | ||
474 | File functions support unicode strings even | ||
475 | on Windows 95/98/ME. | ||
476 | |||
477 | |||
478 | 3.08.02 2003-09-20 | ||
479 | ------------------------- | ||
480 | More compatible with GCC. | ||
481 | |||
482 | |||
483 | 3.08.02 beta 2003-08-20 | ||
484 | ------------------------- | ||
485 | Extracting bug in 7zExtract.cpp was fixed. | ||
486 | |||
487 | |||
488 | 3.08 beta 2003-08-19 | ||
489 | ------------------------- | ||
490 | Big source code reconstruction. | ||
491 | |||
492 | |||
493 | 2.30 Beta 32 2003-05-15 | ||
494 | ------------------------- | ||
495 | Small changes in Deflate decoder. | ||
496 | |||
497 | |||
498 | 2.30 Beta 31 2003-04-29 | ||
499 | ------------------------- | ||
500 | Common/NewHandler.cpp | ||
501 | HeapAlloc in (included to beta 30) was changed to malloc. | ||
502 | HeapAlloc worked slower in Win95/98/Me. | ||
503 | |||
504 | |||
505 | 2.30 Beta 30 2003-04-21 | ||
506 | ------------------------- | ||
507 | new file: Common/String.cpp | ||
508 | Common/NewHandler.* were changed | ||
509 | |||
510 | |||
511 | 2.30 Beta 29 2003-04-07 | ||
512 | ------------------------- | ||
513 | Small changes in LZMA code. | ||
514 | |||
515 | |||
516 | 2.30 Beta 28 2003-02-16 | ||
517 | ------------------------- | ||
518 | Processing anti-files was corrected. | ||
519 | |||
520 | |||
521 | 2.30 Beta 27 2003-01-24 | ||
522 | ------------------------- | ||
523 | Project/Archiver/Format/Common/ArchiveInterface.h: | ||
524 | new IArchiveOpenVolumeCallback interface. | ||
525 | |||
526 | |||
527 | 2.30 Beta 26 2003-01-12 | ||
528 | ------------------------- | ||
529 | SDK/Interface/PropID.h: | ||
530 | kpidComment now is kpidCommented | ||
531 | |||
532 | |||
533 | 2.30 Beta 25 2003-01-02 | ||
534 | ------------------------- | ||
535 | Main archive interfaces were changed. | ||
536 | |||
537 | |||
538 | 2.30 Beta 24 2002-11-01 | ||
539 | ------------------------- | ||
540 | SDK/Windows/Synchronization.h | ||
541 | SDK/Windows/Synchronization.cpp | ||
542 | - some changes. | ||
543 | |||
544 | |||
545 | 2.30 Beta 23 2002-09-07 | ||
546 | ------------------------- | ||
547 | Project/FileManager folder was added. | ||
548 | Notation of some source files was changed. | ||
549 | |||
550 | |||
551 | 2.30 Beta 22 2002-08-28 | ||
552 | ------------------------- | ||
553 | Project/FileManager folder was added. | ||
554 | Notation of some source files was changed. | ||
555 | |||
556 | |||
557 | |||
558 | 2.30 Beta 21 2002-07-08 | ||
559 | ------------------------- | ||
560 | Project/Compress/LZ/MatchFinder/BinTree/BinTree.h | ||
561 | Project/Compress/LZ/MatchFinder/BinTree/BinTreeMain.h | ||
562 | Project/Compress/LZ/MatchFinder/BinTree/HC.h | ||
563 | Project/Compress/LZ/MatchFinder/BinTree/HCMain.h | ||
564 | - RAM requirements for LZMA (7z) compression were reduced. | ||
565 | |||
566 | |||
567 | 2.30 Beta 20 2002-07-01 | ||
568 | ------------------------- | ||
569 | - SDK/Stream/WindowOut.h | ||
570 | now it uses only required memory (dictionary size). | ||
571 | - Project/Archiver/Resource | ||
572 | contains common resurces | ||
573 | |||
574 | |||
575 | 2.30 Beta 19 2002-04-11 | ||
576 | ------------------------- | ||
577 | - SDK/Archive/Rar/Handler.cpp | ||
578 | supporting RAR29 | ||
579 | |||
580 | 2.30 Beta 18 2002-03-25 | ||
581 | ------------------------- | ||
582 | - SDK/Archive/Cab/MSZipDecoder.cpp | ||
583 | SDK/Archive/Cab/LZXDecoder.cpp: | ||
584 | bug with corrupted archives was fixed | ||
585 | - Project/Compress/LZ/MatchFinder/BinTree/BinTree.h | ||
586 | - Project/Compress/LZ/MatchFinder/BinTree/BinTreeMain.h | ||
587 | some speed optimization (using prefetching) | ||
588 | |||
589 | |||
590 | 2.30 Beta 17 2002-03-03 | ||
591 | ------------------------- | ||
592 | - ARJ suppport. | ||
593 | |||
594 | |||
595 | 2.30 Beta 16 2002-02-24 | ||
596 | ------------------------- | ||
597 | - Project/Compress/LZ/LZMA/Decoder.cpp: | ||
598 | Bug was fixed: LZMA could not extract more than 4 GB. | ||
599 | - RPM and CPIO formats. | ||
600 | - Project/Compress/LZ/LZMA/Encoder.* | ||
601 | Project/Archiver/Format/7z/OutHandler.cpp | ||
602 | New fast compression mode for LZMA: -m0a=0. | ||
603 | - New match finders for LZMA: bt4b, hc3, hc4. | ||
604 | |||
605 | |||
606 | 2.30 Beta 15 2002-02-17 | ||
607 | ------------------------- | ||
608 | - Compression ratio in LZMA was slightly improved: | ||
609 | Project/Compress/LZ/LZMA/Encoder.* | ||
610 | Project/Archiver/Format/7z/OutHandler.cpp | ||
611 | |||
612 | |||
613 | 2.30 Beta 14 2002-02-10 | ||
614 | ------------------------- | ||
615 | - Supporting multithreading for LZMA: | ||
616 | Project/Compress/LZ/MatchFinder/MT | ||
617 | - Common/String.h: | ||
618 | CStringBase::Replace function was fixed. | ||
619 | |||
620 | |||
621 | 2.30 Beta 13 2002-01-27 | ||
622 | ------------------------- | ||
623 | - Compress/LZ/MatchFinder/BinTree3.h: | ||
624 | method | ||
625 | - Compress/LZ/MatchFinder/BinTreemain.h: | ||
626 | - one VirtualAlloc array was splitted to | ||
627 | the for 3 arrays. | ||
628 | - Hash-functions were changed. | ||
629 | |||
630 | |||
631 | |||
632 | 2.30 Beta 12 2002-01-16 | ||
633 | ------------------------- | ||
634 | - Compress/LZ/MatchFinder/BinTreemain.h: | ||
635 | Compress/LZ/MatchFinder/Patricia.h: | ||
636 | Compress/PPM/PPMd/SubAlloc.h: | ||
637 | Beta 11 bugs were fixed: | ||
638 | - VirtualFree was used incorrectly | ||
639 | - checking WIN32 instead _WINDOWS. | ||
640 | Compress/LZ/MatchFinder/Patricia.h: | ||
641 | Beta 11 bug with deleting m_Hash2Descendants was fixed. | ||
642 | |||
643 | |||
644 | 2.30 Beta 11 2002-01-15 | ||
645 | ------------------------- | ||
646 | - Compress/LZ/MatchFinder/BinTreemain.h: | ||
647 | Compress/LZ/MatchFinder/Patricia.h: | ||
648 | Compress/PPM/PPMd/SubAlloc.h: | ||
649 | using VirtualAlloc for memory allocating | ||
650 | - Exlorer/ContextMenu.cpp: | ||
651 | Testing supporting. | ||
652 | CreateProcess instead WinExec | ||
653 | - Format/Common/IArchiveHandler.h: | ||
654 | Exlorer/ProxyHandler.cpp: | ||
655 | FAR/Plugin.cpp: | ||
656 | New properties names: Method, HostOS. | ||
657 | - Exlorer/OverwriteDialog.cpp: | ||
658 | FAR/OverwriteDialog.cpp: | ||
659 | Windows/PropVariantConversions.h | ||
660 | Using National time format was eliminated. | ||
661 | |||
662 | |||
663 | |||
664 | 2.30 Beta 10 2002-01-11 | ||
665 | ------------------------- | ||
666 | - Exlorer/ContextMenu.cpp: bug with context menu on | ||
667 | Windows NT4 in Unicode version was fixed. | ||
668 | - Format/7z/UpdateArchiveEngine.cpp: bug was fixed - | ||
669 | Updating in Beta 8 and 9 didn't work. | ||
670 | - Exlorer/CCompressDialog.cpp: history growing bug was fixed. | ||
671 | |||
672 | |||
673 | 2.30 Beta 9 2002-01-08 | ||
674 | ------------------------- | ||
675 | - SDK/Common/Vector.h: sopporting sorted object vectors . | ||
676 | - Lang features. | ||
677 | - Two new match finders: pat3h and pat4h. | ||
678 | - SDK/Archive/Zip/InEngine.cpp: bug was fixed. | ||
679 | - SDK/Windows/FileDir.cpp: function CreateComplexDirectory | ||
680 | was changed. | ||
681 | |||
diff --git a/DOC/unRarLicense.txt b/DOC/unRarLicense.txt new file mode 100644 index 0000000..5f78b72 --- /dev/null +++ b/DOC/unRarLicense.txt | |||
@@ -0,0 +1,41 @@ | |||
1 | ****** ***** ****** unRAR - free utility for RAR archives | ||
2 | ** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
3 | ****** ******* ****** License for use and distribution of | ||
4 | ** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
5 | ** ** ** ** ** ** FREE portable version | ||
6 | ~~~~~~~~~~~~~~~~~~~~~ | ||
7 | |||
8 | The source code of unRAR utility is freeware. This means: | ||
9 | |||
10 | 1. All copyrights to RAR and the utility unRAR are exclusively | ||
11 | owned by the author - Alexander Roshal. | ||
12 | |||
13 | 2. The unRAR sources may be used in any software to handle RAR | ||
14 | archives without limitations free of charge, but cannot be used | ||
15 | to re-create the RAR compression algorithm, which is proprietary. | ||
16 | Distribution of modified unRAR sources in separate form or as a | ||
17 | part of other software is permitted, provided that it is clearly | ||
18 | stated in the documentation and source comments that the code may | ||
19 | not be used to develop a RAR (WinRAR) compatible archiver. | ||
20 | |||
21 | 3. The unRAR utility may be freely distributed. No person or company | ||
22 | may charge a fee for the distribution of unRAR without written | ||
23 | permission from the copyright holder. | ||
24 | |||
25 | 4. THE RAR ARCHIVER AND THE UNRAR UTILITY ARE DISTRIBUTED "AS IS". | ||
26 | NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT | ||
27 | YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS, | ||
28 | DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING | ||
29 | OR MISUSING THIS SOFTWARE. | ||
30 | |||
31 | 5. Installing and using the unRAR utility signifies acceptance of | ||
32 | these terms and conditions of the license. | ||
33 | |||
34 | 6. If you don't agree with terms of the license you must remove | ||
35 | unRAR files from your storage devices and cease to use the | ||
36 | utility. | ||
37 | |||
38 | Thank you for your interest in RAR and unRAR. | ||
39 | |||
40 | |||
41 | Alexander L. Roshal \ No newline at end of file | ||