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-f19f813537c7aea1c20749c914e756b54a9c3cf5.tar.gz 7zip-f19f813537c7aea1c20749c914e756b54a9c3cf5.tar.bz2 7zip-f19f813537c7aea1c20749c914e756b54a9c3cf5.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 | ||
