seven-zip 1.4.2 → 1.7.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +49 -0
- data/.github/workflows/release.yml +21 -0
- data/README.md +13 -2
- data/Rakefile +2 -0
- data/ext/p7zip/C/7zBuf.h +4 -8
- data/ext/p7zip/C/7zBuf2.c +9 -3
- data/ext/p7zip/C/7zCrc.c +84 -32
- data/ext/p7zip/C/7zCrc.h +2 -2
- data/ext/p7zip/C/7zCrcOpt.c +89 -8
- data/ext/p7zip/C/7zStream.c +4 -2
- data/ext/p7zip/C/{Types.h → 7zTypes.h} +8 -6
- data/ext/p7zip/C/7zVersion.h +21 -6
- data/ext/p7zip/C/Aes.c +28 -15
- data/ext/p7zip/C/Aes.h +2 -2
- data/ext/p7zip/C/Alloc.c +60 -12
- data/ext/p7zip/C/Alloc.h +6 -7
- data/ext/p7zip/C/Bcj2.c +256 -0
- data/ext/p7zip/C/Bcj2.h +146 -0
- data/ext/p7zip/C/Bcj2Enc.c +312 -0
- data/ext/p7zip/C/Blake2.h +48 -0
- data/ext/p7zip/C/Blake2s.c +244 -0
- data/ext/p7zip/C/Bra.c +2 -0
- data/ext/p7zip/C/Bra.h +4 -8
- data/ext/p7zip/C/Bra86.c +48 -51
- data/ext/p7zip/C/BraIA64.c +3 -1
- data/ext/p7zip/C/BwtSort.c +3 -4
- data/ext/p7zip/C/BwtSort.h +4 -8
- data/ext/p7zip/C/Compiler.h +32 -0
- data/ext/p7zip/C/CpuArch.c +50 -7
- data/ext/p7zip/C/CpuArch.h +112 -41
- data/ext/p7zip/C/Delta.c +2 -0
- data/ext/p7zip/C/Delta.h +4 -8
- data/ext/p7zip/C/HuffEnc.c +8 -6
- data/ext/p7zip/C/HuffEnc.h +4 -8
- data/ext/p7zip/C/LzFind.c +391 -108
- data/ext/p7zip/C/LzFind.h +20 -18
- data/ext/p7zip/C/LzFindMt.c +100 -90
- data/ext/p7zip/C/LzFindMt.h +4 -8
- data/ext/p7zip/C/LzHash.h +23 -20
- data/ext/p7zip/C/Lzma2Dec.c +48 -26
- data/ext/p7zip/C/Lzma2Dec.h +4 -8
- data/ext/p7zip/C/Lzma2Enc.c +58 -15
- data/ext/p7zip/C/Lzma2Enc.h +3 -7
- data/ext/p7zip/C/{LzmaUtil/Lzma86Enc.h → Lzma86.h} +47 -14
- data/ext/p7zip/C/{LzmaUtil/Lzma86Dec.c → Lzma86Dec.c} +6 -13
- data/ext/p7zip/C/{LzmaUtil/Lzma86Enc.c → Lzma86Enc.c} +8 -15
- data/ext/p7zip/C/LzmaDec.c +180 -79
- data/ext/p7zip/C/LzmaDec.h +4 -8
- data/ext/p7zip/C/LzmaEnc.c +230 -147
- data/ext/p7zip/C/LzmaEnc.h +6 -8
- data/ext/p7zip/C/MtCoder.c +3 -3
- data/ext/p7zip/C/Ppmd.h +5 -5
- data/ext/p7zip/C/Ppmd7.c +9 -7
- data/ext/p7zip/C/Ppmd7.h +3 -3
- data/ext/p7zip/C/Ppmd7Dec.c +2 -0
- data/ext/p7zip/C/Ppmd7Enc.c +4 -2
- data/ext/p7zip/C/Ppmd8.c +34 -31
- data/ext/p7zip/C/Ppmd8.h +5 -1
- data/ext/p7zip/C/Ppmd8Dec.c +2 -0
- data/ext/p7zip/C/Ppmd8Enc.c +2 -0
- data/ext/p7zip/C/Precomp.h +10 -0
- data/ext/p7zip/C/RotateDefs.h +11 -1
- data/ext/p7zip/C/Sha1.c +340 -0
- data/ext/p7zip/C/Sha1.h +38 -0
- data/ext/p7zip/C/Sha256.c +107 -63
- data/ext/p7zip/C/Sha256.h +2 -2
- data/ext/p7zip/C/Sort.c +59 -11
- data/ext/p7zip/C/Sort.h +8 -10
- data/ext/p7zip/C/Threads.h +1 -1
- data/ext/p7zip/C/Xz.c +7 -5
- data/ext/p7zip/C/Xz.h +40 -17
- data/ext/p7zip/C/XzCrc64.c +69 -16
- data/ext/p7zip/C/XzCrc64.h +2 -2
- data/ext/p7zip/C/XzCrc64Opt.c +69 -0
- data/ext/p7zip/C/XzDec.c +93 -55
- data/ext/p7zip/C/XzEnc.c +206 -165
- data/ext/p7zip/C/XzEnc.h +23 -9
- data/ext/p7zip/C/XzIn.c +50 -43
- data/ext/p7zip/CPP/7zip/Archive/7z/7zCompressionMode.h +37 -13
- data/ext/p7zip/CPP/7zip/Archive/7z/7zDecode.cpp +392 -181
- data/ext/p7zip/CPP/7zip/Archive/7z/7zDecode.h +29 -29
- data/ext/p7zip/CPP/7zip/Archive/7z/7zEncode.cpp +424 -212
- data/ext/p7zip/CPP/7zip/Archive/7z/7zEncode.h +53 -16
- data/ext/p7zip/CPP/7zip/Archive/7z/7zExtract.cpp +312 -174
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderInStream.cpp +74 -61
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderInStream.h +22 -19
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHandler.cpp +505 -232
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHandler.h +70 -16
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHandlerOut.cpp +602 -172
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHeader.cpp +5 -0
- data/ext/p7zip/CPP/7zip/Archive/7z/7zHeader.h +54 -3
- data/ext/p7zip/CPP/7zip/Archive/7z/7zIn.cpp +981 -616
- data/ext/p7zip/CPP/7zip/Archive/7z/7zIn.h +275 -89
- data/ext/p7zip/CPP/7zip/Archive/7z/7zItem.h +77 -162
- data/ext/p7zip/CPP/7zip/Archive/7z/7zOut.cpp +288 -238
- data/ext/p7zip/CPP/7zip/Archive/7z/7zOut.h +189 -20
- data/ext/p7zip/CPP/7zip/Archive/7z/7zProperties.cpp +59 -49
- data/ext/p7zip/CPP/7zip/Archive/7z/7zRegister.cpp +12 -9
- data/ext/p7zip/CPP/7zip/Archive/7z/7zSpecStream.cpp +4 -6
- data/ext/p7zip/CPP/7zip/Archive/7z/7zSpecStream.h +5 -5
- data/ext/p7zip/CPP/7zip/Archive/7z/7zUpdate.cpp +1743 -447
- data/ext/p7zip/CPP/7zip/Archive/7z/7zUpdate.h +61 -10
- data/ext/p7zip/CPP/7zip/Archive/ApmHandler.cpp +84 -120
- data/ext/p7zip/CPP/7zip/Archive/ArHandler.cpp +854 -0
- data/ext/p7zip/CPP/7zip/Archive/ArchiveExports.cpp +48 -32
- data/ext/p7zip/CPP/7zip/Archive/ArjHandler.cpp +519 -340
- data/ext/p7zip/CPP/7zip/Archive/Bz2Handler.cpp +223 -203
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabBlockInStream.cpp +50 -139
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabBlockInStream.h +17 -18
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHandler.cpp +566 -234
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHandler.h +10 -1
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHeader.cpp +2 -2
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabHeader.h +12 -15
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabIn.cpp +341 -122
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabIn.h +81 -66
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabItem.h +17 -14
- data/ext/p7zip/CPP/7zip/Archive/Cab/CabRegister.cpp +10 -4
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHandler.cpp +190 -83
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHandler.h +7 -1
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmIn.cpp +292 -174
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmIn.h +73 -47
- data/ext/p7zip/CPP/7zip/Archive/ComHandler.cpp +886 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2.cpp +994 -71
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2.h +364 -101
- data/ext/p7zip/CPP/7zip/Archive/Common/DummyOutStream.cpp +7 -12
- data/ext/p7zip/CPP/7zip/Archive/Common/DummyOutStream.h +4 -3
- data/ext/p7zip/CPP/7zip/Archive/Common/FindSignature.cpp +6 -6
- data/ext/p7zip/CPP/7zip/Archive/Common/FindSignature.h +2 -2
- data/ext/p7zip/CPP/7zip/Archive/Common/HandlerOut.cpp +77 -543
- data/ext/p7zip/CPP/7zip/Archive/Common/HandlerOut.h +31 -51
- data/ext/p7zip/CPP/7zip/Archive/Common/InStreamWithCRC.cpp +18 -14
- data/ext/p7zip/CPP/7zip/Archive/Common/ItemNameUtils.cpp +34 -7
- data/ext/p7zip/CPP/7zip/Archive/Common/ItemNameUtils.h +5 -2
- data/ext/p7zip/CPP/7zip/Archive/Common/MultiStream.cpp +25 -24
- data/ext/p7zip/CPP/7zip/Archive/Common/MultiStream.h +8 -3
- data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithCRC.h +1 -0
- data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.cpp +2 -2
- data/ext/p7zip/CPP/7zip/Archive/Common/OutStreamWithSha1.h +5 -5
- data/ext/p7zip/CPP/7zip/Archive/Common/ParseProperties.cpp +0 -174
- data/ext/p7zip/CPP/7zip/Archive/Common/ParseProperties.h +2 -14
- data/ext/p7zip/CPP/7zip/Archive/CpioHandler.cpp +506 -335
- data/ext/p7zip/CPP/7zip/Archive/CramfsHandler.cpp +227 -84
- data/ext/p7zip/CPP/7zip/Archive/DeflateProps.cpp +0 -115
- data/ext/p7zip/CPP/7zip/Archive/DeflateProps.h +0 -29
- data/ext/p7zip/CPP/7zip/Archive/DllExports2.cpp +63 -17
- data/ext/p7zip/CPP/7zip/Archive/DmgHandler.cpp +1007 -339
- data/ext/p7zip/CPP/7zip/Archive/ElfHandler.cpp +618 -177
- data/ext/p7zip/CPP/7zip/Archive/ExtHandler.cpp +2867 -0
- data/ext/p7zip/CPP/7zip/Archive/FatHandler.cpp +136 -76
- data/ext/p7zip/CPP/7zip/Archive/FlvHandler.cpp +132 -150
- data/ext/p7zip/CPP/7zip/Archive/GptHandler.cpp +405 -0
- data/ext/p7zip/CPP/7zip/Archive/GzHandler.cpp +560 -214
- data/ext/p7zip/CPP/7zip/Archive/HandlerCont.cpp +288 -0
- data/ext/p7zip/CPP/7zip/Archive/HandlerCont.h +116 -0
- data/ext/p7zip/CPP/7zip/Archive/HfsHandler.cpp +1880 -0
- data/ext/p7zip/CPP/7zip/Archive/IArchive.h +415 -51
- data/ext/p7zip/CPP/7zip/Archive/IhexHandler.cpp +497 -0
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHandler.cpp +158 -71
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHandler.h +2 -1
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHeader.cpp +0 -9
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoHeader.h +8 -5
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoIn.cpp +311 -91
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoIn.h +101 -83
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoItem.h +48 -39
- data/ext/p7zip/CPP/7zip/Archive/Iso/IsoRegister.cpp +12 -4
- data/ext/p7zip/CPP/7zip/Archive/LzhHandler.cpp +127 -114
- data/ext/p7zip/CPP/7zip/Archive/LzmaHandler.cpp +264 -121
- data/ext/p7zip/CPP/7zip/Archive/MachoHandler.cpp +402 -242
- data/ext/p7zip/CPP/7zip/Archive/MbrHandler.cpp +56 -114
- data/ext/p7zip/CPP/7zip/Archive/MslzHandler.cpp +230 -90
- data/ext/p7zip/CPP/7zip/Archive/MubHandler.cpp +129 -153
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisDecode.cpp +179 -58
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisDecode.h +36 -7
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisHandler.cpp +407 -237
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisHandler.h +9 -16
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisIn.cpp +5535 -1098
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisIn.h +345 -81
- data/ext/p7zip/CPP/7zip/Archive/Nsis/NsisRegister.cpp +11 -4
- data/ext/p7zip/CPP/7zip/Archive/NtfsHandler.cpp +1424 -434
- data/ext/p7zip/CPP/7zip/Archive/PeHandler.cpp +1831 -521
- data/ext/p7zip/CPP/7zip/Archive/PpmdHandler.cpp +50 -35
- data/ext/p7zip/CPP/7zip/Archive/QcowHandler.cpp +615 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/Rar5Handler.cpp +2746 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/Rar5Handler.h +411 -0
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHandler.cpp +1241 -355
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHandler.h +70 -20
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHeader.h +38 -34
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarItem.h +34 -16
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarVol.h +129 -0
- data/ext/p7zip/CPP/7zip/Archive/RpmHandler.cpp +641 -194
- data/ext/p7zip/CPP/7zip/Archive/SplitHandler.cpp +174 -181
- data/ext/p7zip/CPP/7zip/Archive/SquashfsHandler.cpp +237 -174
- data/ext/p7zip/CPP/7zip/Archive/SwfHandler.cpp +471 -192
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandler.cpp +350 -59
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandler.h +24 -7
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHandlerOut.cpp +79 -27
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHeader.cpp +5 -7
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarHeader.h +20 -44
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarIn.cpp +279 -64
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarIn.h +10 -1
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarItem.h +34 -8
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarOut.cpp +145 -87
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarOut.h +13 -5
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarRegister.cpp +14 -9
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarUpdate.cpp +154 -27
- data/ext/p7zip/CPP/7zip/Archive/Tar/TarUpdate.h +10 -6
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfHandler.cpp +53 -128
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfHandler.h +6 -5
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfIn.cpp +384 -119
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfIn.h +40 -21
- data/ext/p7zip/CPP/7zip/Archive/UefiHandler.cpp +1618 -0
- data/ext/p7zip/CPP/7zip/Archive/VdiHandler.cpp +362 -0
- data/ext/p7zip/CPP/7zip/Archive/VhdHandler.cpp +438 -247
- data/ext/p7zip/CPP/7zip/Archive/VmdkHandler.cpp +1518 -0
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandler.cpp +837 -249
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandler.h +73 -47
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimHandlerOut.cpp +1614 -351
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimIn.cpp +1519 -513
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimIn.h +498 -139
- data/ext/p7zip/CPP/7zip/Archive/Wim/WimRegister.cpp +13 -9
- data/ext/p7zip/CPP/7zip/Archive/XarHandler.cpp +272 -128
- data/ext/p7zip/CPP/7zip/Archive/XzHandler.cpp +502 -253
- data/ext/p7zip/CPP/7zip/Archive/XzHandler.h +65 -0
- data/ext/p7zip/CPP/7zip/Archive/ZHandler.cpp +114 -39
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipAddCommon.cpp +118 -134
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipAddCommon.h +6 -0
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipCompressionMode.h +40 -20
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandler.cpp +541 -274
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandler.h +13 -40
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHandlerOut.cpp +165 -254
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHeader.h +70 -178
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipIn.cpp +1934 -550
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipIn.h +294 -63
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItem.cpp +160 -86
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItem.h +139 -110
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipOut.cpp +177 -154
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipOut.h +50 -18
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipRegister.cpp +18 -9
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipUpdate.cpp +367 -201
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipUpdate.h +11 -10
- data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile +2 -319
- data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile.depend +0 -4962
- data/ext/p7zip/CPP/7zip/Bundles/Format7zFree/makefile.list +1004 -259
- data/ext/p7zip/CPP/7zip/Common/CWrappers.cpp +26 -22
- data/ext/p7zip/CPP/7zip/Common/CWrappers.h +19 -14
- data/ext/p7zip/CPP/7zip/Common/CreateCoder.cpp +298 -130
- data/ext/p7zip/CPP/7zip/Common/CreateCoder.h +118 -34
- data/ext/p7zip/CPP/7zip/Common/FilePathAutoRename.cpp +24 -28
- data/ext/p7zip/CPP/7zip/Common/FilePathAutoRename.h +5 -5
- data/ext/p7zip/CPP/7zip/Common/FileStreams.cpp +268 -65
- data/ext/p7zip/CPP/7zip/Common/FileStreams.h +70 -33
- data/ext/p7zip/CPP/7zip/Common/FilterCoder.cpp +302 -131
- data/ext/p7zip/CPP/7zip/Common/FilterCoder.h +141 -43
- data/ext/p7zip/CPP/7zip/Common/InBuffer.cpp +87 -35
- data/ext/p7zip/CPP/7zip/Common/InBuffer.h +54 -45
- data/ext/p7zip/CPP/7zip/Common/InOutTempBuffer.cpp +22 -17
- data/ext/p7zip/CPP/7zip/Common/InOutTempBuffer.h +5 -5
- data/ext/p7zip/CPP/7zip/Common/LimitedStreams.cpp +256 -43
- data/ext/p7zip/CPP/7zip/Common/LimitedStreams.h +135 -8
- data/ext/p7zip/CPP/7zip/Common/MemBlocks.cpp +5 -5
- data/ext/p7zip/CPP/7zip/Common/MemBlocks.h +3 -3
- data/ext/p7zip/CPP/7zip/Common/MethodId.cpp +0 -24
- data/ext/p7zip/CPP/7zip/Common/MethodId.h +1 -1
- data/ext/p7zip/CPP/7zip/Common/MethodProps.cpp +430 -71
- data/ext/p7zip/CPP/7zip/Common/MethodProps.h +170 -17
- data/ext/p7zip/CPP/7zip/Common/OffsetStream.cpp +8 -4
- data/ext/p7zip/CPP/7zip/Common/OffsetStream.h +4 -3
- data/ext/p7zip/CPP/7zip/Common/OutBuffer.cpp +26 -31
- data/ext/p7zip/CPP/7zip/Common/OutBuffer.h +17 -18
- data/ext/p7zip/CPP/7zip/Common/OutMemStream.cpp +5 -5
- data/ext/p7zip/CPP/7zip/Common/OutMemStream.h +5 -4
- data/ext/p7zip/CPP/7zip/Common/ProgressUtils.cpp +22 -13
- data/ext/p7zip/CPP/7zip/Common/ProgressUtils.h +4 -3
- data/ext/p7zip/CPP/7zip/Common/PropId.cpp +108 -0
- data/ext/p7zip/CPP/7zip/Common/RegisterArc.h +63 -17
- data/ext/p7zip/CPP/7zip/Common/RegisterCodec.h +79 -6
- data/ext/p7zip/CPP/7zip/Common/StreamBinder.cpp +95 -90
- data/ext/p7zip/CPP/7zip/Common/StreamBinder.h +46 -23
- data/ext/p7zip/CPP/7zip/Common/StreamObjects.cpp +88 -24
- data/ext/p7zip/CPP/7zip/Common/StreamObjects.h +36 -14
- data/ext/p7zip/CPP/7zip/Common/StreamUtils.cpp +4 -4
- data/ext/p7zip/CPP/7zip/Common/StreamUtils.h +6 -6
- data/ext/p7zip/CPP/7zip/Common/UniqBlocks.cpp +57 -0
- data/ext/p7zip/CPP/7zip/Common/UniqBlocks.h +26 -0
- data/ext/p7zip/CPP/7zip/Common/VirtThread.cpp +8 -6
- data/ext/p7zip/CPP/7zip/Common/VirtThread.h +6 -5
- data/ext/p7zip/CPP/7zip/Compress/BZip2Const.h +13 -12
- data/ext/p7zip/CPP/7zip/Compress/BZip2Crc.h +1 -1
- data/ext/p7zip/CPP/7zip/Compress/BZip2Decoder.cpp +198 -147
- data/ext/p7zip/CPP/7zip/Compress/BZip2Decoder.h +60 -27
- data/ext/p7zip/CPP/7zip/Compress/BZip2Encoder.cpp +111 -116
- data/ext/p7zip/CPP/7zip/Compress/BZip2Encoder.h +53 -59
- data/ext/p7zip/CPP/7zip/Compress/BZip2Register.cpp +12 -7
- data/ext/p7zip/CPP/7zip/Compress/Bcj2Coder.cpp +554 -282
- data/ext/p7zip/CPP/7zip/Compress/Bcj2Coder.h +73 -71
- data/ext/p7zip/CPP/7zip/Compress/Bcj2Register.cpp +10 -5
- data/ext/p7zip/CPP/7zip/Compress/BcjCoder.cpp +13 -4
- data/ext/p7zip/CPP/7zip/Compress/BcjCoder.h +17 -5
- data/ext/p7zip/CPP/7zip/Compress/BcjRegister.cpp +7 -9
- data/ext/p7zip/CPP/7zip/Compress/BitlDecoder.cpp +2 -2
- data/ext/p7zip/CPP/7zip/Compress/BitlDecoder.h +58 -61
- data/ext/p7zip/CPP/7zip/Compress/BitlEncoder.h +24 -25
- data/ext/p7zip/CPP/7zip/Compress/BitmDecoder.h +46 -17
- data/ext/p7zip/CPP/7zip/Compress/BitmEncoder.h +18 -19
- data/ext/p7zip/CPP/7zip/Compress/BranchMisc.cpp +14 -28
- data/ext/p7zip/CPP/7zip/Compress/BranchMisc.h +27 -6
- data/ext/p7zip/CPP/7zip/Compress/BranchRegister.cpp +26 -15
- data/ext/p7zip/CPP/7zip/Compress/ByteSwap.cpp +45 -26
- data/ext/p7zip/CPP/7zip/Compress/CodecExports.cpp +254 -70
- data/ext/p7zip/CPP/7zip/Compress/CopyCoder.cpp +65 -17
- data/ext/p7zip/CPP/7zip/Compress/CopyCoder.h +15 -3
- data/ext/p7zip/CPP/7zip/Compress/CopyRegister.cpp +5 -4
- data/ext/p7zip/CPP/7zip/Compress/Deflate64Register.cpp +12 -6
- data/ext/p7zip/CPP/7zip/Compress/DeflateConst.h +43 -46
- data/ext/p7zip/CPP/7zip/Compress/DeflateDecoder.cpp +145 -81
- data/ext/p7zip/CPP/7zip/Compress/DeflateDecoder.h +31 -33
- data/ext/p7zip/CPP/7zip/Compress/DeflateEncoder.cpp +179 -162
- data/ext/p7zip/CPP/7zip/Compress/DeflateEncoder.h +35 -30
- data/ext/p7zip/CPP/7zip/Compress/DeflateRegister.cpp +11 -7
- data/ext/p7zip/CPP/7zip/Compress/DeltaFilter.cpp +55 -39
- data/ext/p7zip/CPP/7zip/Compress/{DllExports2.cpp → DllExports2Compress.cpp} +8 -8
- data/ext/p7zip/CPP/7zip/Compress/DllExportsCompress.cpp +48 -0
- data/ext/p7zip/CPP/7zip/Compress/HuffmanDecoder.h +220 -49
- data/ext/p7zip/CPP/7zip/Compress/ImplodeDecoder.cpp +14 -9
- data/ext/p7zip/CPP/7zip/Compress/ImplodeDecoder.h +2 -3
- data/ext/p7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.cpp +7 -7
- data/ext/p7zip/CPP/7zip/Compress/ImplodeHuffmanDecoder.h +1 -1
- data/ext/p7zip/CPP/7zip/Compress/LzOutWindow.cpp +1 -1
- data/ext/p7zip/CPP/7zip/Compress/LzOutWindow.h +21 -18
- data/ext/p7zip/CPP/7zip/Compress/LzhDecoder.cpp +171 -141
- data/ext/p7zip/CPP/7zip/Compress/LzhDecoder.h +32 -64
- data/ext/p7zip/CPP/7zip/Compress/Lzham/LICENSE +22 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/LzhamRegister.cpp +783 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/README.md +211 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham.h +803 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham_dynamic_lib.h +156 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham_exports.inc +31 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/include/lzham_static_lib.h +59 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/include/zlib.h +2 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/CMakeLists.txt +69 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_comp.h +38 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzbase.cpp +244 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzbase.h +46 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp.cpp +750 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp_internal.cpp +2240 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp_internal.h +503 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_lzcomp_state.cpp +1684 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_match_accel.cpp +947 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_match_accel.h +164 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_null_threading.h +98 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_pthreads_threading.cpp +214 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_pthreads_threading.h +535 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_threading.h +12 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_win32_threading.cpp +232 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzham_win32_threading.h +387 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamcomp/lzhamcomp.vcxproj +208 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/CMakeLists.txt +86 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_assert.cpp +80 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_assert.h +58 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_checksum.cpp +73 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_checksum.h +13 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_config.h +25 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_core.h +303 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_decomp.h +37 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_helpers.h +54 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_huffman_codes.cpp +286 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_huffman_codes.h +32 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_lzdecomp.cpp +1586 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_lzdecompbase.cpp +131 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_lzdecompbase.h +89 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_math.h +142 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_mem.cpp +463 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_mem.h +115 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_platform.cpp +159 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_platform.h +284 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_prefix_coding.cpp +431 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_prefix_coding.h +157 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_symbol_codec.cpp +1527 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_symbol_codec.h +494 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_timer.cpp +147 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_timer.h +99 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_traits.h +141 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_types.h +72 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_utils.h +58 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_vector.cpp +83 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzham_vector.h +628 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamdecomp/lzhamdecomp.vcxproj +224 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamlib/lzham_lib.cpp +179 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/lzhamlib/lzhamlib.vcxproj +187 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/makefile +10 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/makefile.depend +0 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzham/makefile.list +129 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Decoder.cpp +123 -46
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Decoder.h +29 -14
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Encoder.cpp +14 -9
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Encoder.h +1 -1
- data/ext/p7zip/CPP/7zip/Compress/Lzma2Register.cpp +9 -7
- data/ext/p7zip/CPP/7zip/Compress/LzmaDecoder.cpp +24 -8
- data/ext/p7zip/CPP/7zip/Compress/LzmaDecoder.h +8 -1
- data/ext/p7zip/CPP/7zip/Compress/LzmaEncoder.cpp +30 -27
- data/ext/p7zip/CPP/7zip/Compress/LzmaEncoder.h +3 -1
- data/ext/p7zip/CPP/7zip/Compress/LzmaRegister.cpp +9 -7
- data/ext/p7zip/CPP/7zip/Compress/LzmsDecoder.cpp +576 -0
- data/ext/p7zip/CPP/7zip/Compress/LzmsDecoder.h +271 -0
- data/ext/p7zip/CPP/7zip/Compress/Lzx.h +32 -36
- data/ext/p7zip/CPP/7zip/Compress/LzxDecoder.cpp +380 -238
- data/ext/p7zip/CPP/7zip/Compress/LzxDecoder.h +170 -83
- data/ext/p7zip/CPP/7zip/Compress/Mtf8.h +7 -9
- data/ext/p7zip/CPP/7zip/Compress/PpmdDecoder.cpp +1 -5
- data/ext/p7zip/CPP/7zip/Compress/PpmdEncoder.cpp +51 -18
- data/ext/p7zip/CPP/7zip/Compress/PpmdEncoder.h +18 -8
- data/ext/p7zip/CPP/7zip/Compress/PpmdRegister.cpp +9 -8
- data/ext/p7zip/CPP/7zip/Compress/PpmdZip.cpp +61 -25
- data/ext/p7zip/CPP/7zip/Compress/PpmdZip.h +21 -6
- data/ext/p7zip/CPP/7zip/Compress/QuantumDecoder.cpp +122 -102
- data/ext/p7zip/CPP/7zip/Compress/QuantumDecoder.h +68 -157
- data/ext/p7zip/CPP/7zip/Compress/Rar/makefile +33 -18
- data/ext/p7zip/CPP/7zip/Compress/Rar/makefile.depend +0 -158
- data/ext/p7zip/CPP/7zip/Compress/Rar/makefile.list +105 -56
- data/ext/p7zip/CPP/7zip/Compress/Rar1Decoder.cpp +34 -21
- data/ext/p7zip/CPP/7zip/Compress/Rar1Decoder.h +2 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar2Decoder.cpp +77 -67
- data/ext/p7zip/CPP/7zip/Compress/Rar2Decoder.h +12 -10
- data/ext/p7zip/CPP/7zip/Compress/Rar3Decoder.cpp +139 -118
- data/ext/p7zip/CPP/7zip/Compress/Rar3Decoder.h +48 -33
- data/ext/p7zip/CPP/7zip/Compress/Rar3Vm.cpp +148 -113
- data/ext/p7zip/CPP/7zip/Compress/Rar3Vm.h +35 -19
- data/ext/p7zip/CPP/7zip/Compress/Rar5Decoder.cpp +961 -0
- data/ext/p7zip/CPP/7zip/Compress/Rar5Decoder.h +335 -0
- data/ext/p7zip/CPP/7zip/Compress/RarCodecsRegister.cpp +13 -6
- data/ext/p7zip/CPP/7zip/Compress/ShrinkDecoder.cpp +91 -71
- data/ext/p7zip/CPP/7zip/Compress/ShrinkDecoder.h +2 -4
- data/ext/p7zip/CPP/7zip/Compress/XpressDecoder.cpp +129 -0
- data/ext/p7zip/CPP/7zip/Compress/XpressDecoder.h +13 -0
- data/ext/p7zip/CPP/7zip/Compress/ZDecoder.cpp +98 -20
- data/ext/p7zip/CPP/7zip/Compress/ZDecoder.h +19 -7
- data/ext/p7zip/CPP/7zip/Compress/ZlibDecoder.cpp +14 -11
- data/ext/p7zip/CPP/7zip/Compress/ZlibDecoder.h +32 -1
- data/ext/p7zip/CPP/7zip/Crypto/7zAes.cpp +137 -101
- data/ext/p7zip/CPP/7zip/Crypto/7zAes.h +31 -30
- data/ext/p7zip/CPP/7zip/Crypto/7zAesRegister.cpp +8 -9
- data/ext/p7zip/CPP/7zip/Crypto/HmacSha1.cpp +39 -28
- data/ext/p7zip/CPP/7zip/Crypto/HmacSha1.h +3 -3
- data/ext/p7zip/CPP/7zip/Crypto/HmacSha256.cpp +62 -0
- data/ext/p7zip/CPP/7zip/Crypto/HmacSha256.h +27 -0
- data/ext/p7zip/CPP/7zip/Crypto/MyAes.cpp +73 -7
- data/ext/p7zip/CPP/7zip/Crypto/MyAes.h +25 -8
- data/ext/p7zip/CPP/7zip/Crypto/MyAesReg.cpp +16 -0
- data/ext/p7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.cpp +29 -15
- data/ext/p7zip/CPP/7zip/Crypto/Pbkdf2HmacSha1.h +2 -1
- data/ext/p7zip/CPP/7zip/Crypto/RandGen.cpp +49 -34
- data/ext/p7zip/CPP/7zip/Crypto/RandGen.h +2 -2
- data/ext/p7zip/CPP/7zip/Crypto/Rar20Crypto.cpp +36 -39
- data/ext/p7zip/CPP/7zip/Crypto/Rar20Crypto.h +15 -17
- data/ext/p7zip/CPP/7zip/Crypto/Rar5Aes.cpp +257 -0
- data/ext/p7zip/CPP/7zip/Crypto/Rar5Aes.h +84 -0
- data/ext/p7zip/CPP/7zip/Crypto/RarAes.cpp +70 -71
- data/ext/p7zip/CPP/7zip/Crypto/RarAes.h +24 -19
- data/ext/p7zip/CPP/7zip/Crypto/Sha1Cls.h +51 -0
- data/ext/p7zip/CPP/7zip/Crypto/WzAes.cpp +68 -54
- data/ext/p7zip/CPP/7zip/Crypto/WzAes.h +37 -27
- data/ext/p7zip/CPP/7zip/Crypto/ZipCrypto.cpp +60 -34
- data/ext/p7zip/CPP/7zip/Crypto/ZipCrypto.h +28 -11
- data/ext/p7zip/CPP/7zip/Crypto/ZipStrong.cpp +90 -28
- data/ext/p7zip/CPP/7zip/Crypto/ZipStrong.h +13 -2
- data/ext/p7zip/CPP/7zip/Guid.txt +57 -11
- data/ext/p7zip/CPP/7zip/ICoder.h +202 -17
- data/ext/p7zip/CPP/7zip/IDecl.h +16 -3
- data/ext/p7zip/CPP/7zip/IPassword.h +1 -2
- data/ext/p7zip/CPP/7zip/IProgress.h +2 -16
- data/ext/p7zip/CPP/7zip/IStream.h +82 -13
- data/ext/p7zip/CPP/7zip/MyVersion.h +2 -11
- data/ext/p7zip/CPP/7zip/PropID.h +60 -9
- data/ext/p7zip/CPP/Common/C_FileIO.cpp +5 -1
- data/ext/p7zip/CPP/Common/C_FileIO.h +7 -1
- data/ext/p7zip/CPP/Common/CommandLineParser.cpp +122 -148
- data/ext/p7zip/CPP/Common/CommandLineParser.h +20 -29
- data/ext/p7zip/CPP/Common/Common.h +13 -0
- data/ext/p7zip/CPP/Common/CrcReg.cpp +98 -0
- data/ext/p7zip/CPP/Common/Defs.h +5 -10
- data/ext/p7zip/CPP/Common/DynLimBuf.cpp +93 -0
- data/ext/p7zip/CPP/Common/DynLimBuf.h +40 -0
- data/ext/p7zip/CPP/Common/DynamicBuffer.h +45 -31
- data/ext/p7zip/CPP/Common/IntToString.cpp +109 -40
- data/ext/p7zip/CPP/Common/IntToString.h +14 -9
- data/ext/p7zip/CPP/Common/Lang.cpp +120 -87
- data/ext/p7zip/CPP/Common/Lang.h +10 -15
- data/ext/p7zip/CPP/Common/ListFileUtils.cpp +82 -40
- data/ext/p7zip/CPP/Common/ListFileUtils.h +7 -4
- data/ext/p7zip/CPP/Common/MyBuffer.h +244 -0
- data/ext/p7zip/CPP/Common/MyCom.h +65 -28
- data/ext/p7zip/CPP/Common/MyGuidDef.h +1 -1
- data/ext/p7zip/CPP/Common/MyInitGuid.h +23 -0
- data/ext/p7zip/CPP/Common/MyLinux.h +42 -0
- data/ext/p7zip/CPP/Common/MyMap.cpp +8 -8
- data/ext/p7zip/CPP/Common/MyMap.h +2 -2
- data/ext/p7zip/CPP/Common/MyString.cpp +1643 -117
- data/ext/p7zip/CPP/Common/MyString.h +677 -486
- data/ext/p7zip/CPP/Common/MyTypes.h +38 -0
- data/ext/p7zip/CPP/Common/MyUnknown.h +4 -0
- data/ext/p7zip/CPP/Common/MyVector.cpp +0 -84
- data/ext/p7zip/CPP/Common/MyVector.h +472 -112
- data/ext/p7zip/CPP/Common/MyWindows.cpp +18 -1
- data/ext/p7zip/CPP/Common/MyWindows.h +8 -0
- data/ext/p7zip/CPP/Common/MyXml.cpp +169 -118
- data/ext/p7zip/CPP/Common/MyXml.h +14 -11
- data/ext/p7zip/CPP/Common/NewHandler.cpp +39 -0
- data/ext/p7zip/CPP/Common/NewHandler.h +55 -2
- data/ext/p7zip/CPP/Common/Random.h +14 -0
- data/ext/p7zip/CPP/Common/Sha1Reg.cpp +40 -0
- data/ext/p7zip/CPP/Common/Sha256Reg.cpp +40 -0
- data/ext/p7zip/CPP/Common/StdInStream.cpp +46 -27
- data/ext/p7zip/CPP/Common/StdInStream.h +11 -10
- data/ext/p7zip/CPP/Common/StdOutStream.cpp +48 -35
- data/ext/p7zip/CPP/Common/StdOutStream.h +44 -17
- data/ext/p7zip/CPP/Common/StringConvert.cpp +56 -17
- data/ext/p7zip/CPP/Common/StringConvert.h +7 -3
- data/ext/p7zip/CPP/Common/StringToInt.cpp +102 -48
- data/ext/p7zip/CPP/Common/StringToInt.h +13 -10
- data/ext/p7zip/CPP/Common/TextConfig.cpp +33 -47
- data/ext/p7zip/CPP/Common/TextConfig.h +3 -6
- data/ext/p7zip/CPP/Common/UTFConvert.cpp +218 -75
- data/ext/p7zip/CPP/Common/UTFConvert.h +4 -3
- data/ext/p7zip/CPP/Common/Wildcard.cpp +345 -125
- data/ext/p7zip/CPP/Common/Wildcard.h +82 -13
- data/ext/p7zip/CPP/Common/XzCrc64Reg.cpp +42 -0
- data/ext/p7zip/CPP/Windows/FileDir.cpp +427 -475
- data/ext/p7zip/CPP/Windows/FileDir.h +94 -72
- data/ext/p7zip/CPP/Windows/FileFind.cpp +235 -244
- data/ext/p7zip/CPP/Windows/FileFind.h +63 -59
- data/ext/p7zip/CPP/Windows/FileIO.cpp +29 -46
- data/ext/p7zip/CPP/Windows/FileIO.h +40 -42
- data/ext/p7zip/CPP/Windows/FileName.cpp +696 -17
- data/ext/p7zip/CPP/Windows/FileName.h +11 -3
- data/ext/p7zip/CPP/Windows/NtCheck.h +2 -0
- data/ext/p7zip/CPP/Windows/PropVariant.cpp +134 -30
- data/ext/p7zip/CPP/Windows/PropVariant.h +80 -24
- data/ext/p7zip/CPP/Windows/PropVariantUtils.cpp +89 -18
- data/ext/p7zip/CPP/Windows/PropVariantUtils.h +12 -7
- data/ext/p7zip/CPP/Windows/System.cpp +20 -15
- data/ext/p7zip/CPP/Windows/System.h +3 -2
- data/ext/p7zip/CPP/Windows/TimeUtils.cpp +203 -0
- data/ext/p7zip/CPP/Windows/TimeUtils.h +24 -0
- data/ext/p7zip/CPP/include_windows/basetyps.h +4 -4
- data/ext/p7zip/CPP/include_windows/windows.h +17 -11
- data/ext/p7zip/CPP/myWindows/StdAfx.h +97 -5
- data/ext/p7zip/CPP/myWindows/config.h +20 -5
- data/ext/p7zip/CPP/myWindows/myPrivate.h +8 -0
- data/ext/p7zip/CPP/myWindows/wine_date_and_time.cpp +34 -0
- data/ext/p7zip/ChangeLog +283 -35
- data/ext/p7zip/{DOCS → DOC}/7zC.txt +6 -13
- data/ext/p7zip/{DOCS → DOC}/License.txt +3 -2
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/add.htm +93 -87
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/bench.htm +88 -79
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/delete.htm +62 -59
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/extract.htm +96 -91
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/extract_full.htm +73 -68
- data/ext/p7zip/DOC/MANUAL/cmdline/commands/hash.htm +65 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/index.htm +36 -33
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/list.htm +78 -77
- data/ext/p7zip/DOC/MANUAL/cmdline/commands/rename.htm +51 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/style.css +232 -232
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/test.htm +47 -46
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/commands/update.htm +71 -66
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/exit_codes.htm +27 -27
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/index.htm +29 -29
- data/ext/p7zip/{DOCS/MANUAL/switches → DOC/MANUAL/cmdline}/style.css +232 -232
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ar_exclude.htm +56 -56
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ar_include.htm +80 -83
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ar_no.htm +52 -52
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/bb.htm +61 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/bs.htm +67 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/charset.htm +61 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/exclude.htm +71 -60
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/include.htm +89 -87
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/index.htm +95 -64
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/large_pages.htm +59 -50
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/list_tech.htm +36 -36
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/method.htm +738 -625
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/output_dir.htm +53 -53
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/overwrite.htm +56 -56
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/password.htm +55 -54
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/recurse.htm +85 -83
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/sa.htm +58 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/scc.htm +42 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/scrc.htm +53 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/sdel.htm +39 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/sfx.htm +153 -156
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/shared.htm +40 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/sni.htm +56 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/sns.htm +77 -0
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/spf.htm +80 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/ssc.htm +50 -50
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/stdin.htm +56 -55
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/stdout.htm +54 -50
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/stl.htm +39 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/stop_switch.htm +31 -31
- data/ext/p7zip/DOC/MANUAL/cmdline/switches/stx.htm +50 -0
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline/switches}/style.css +232 -232
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/type.htm +121 -83
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/update.htm +177 -176
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/volume.htm +49 -49
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/working_dir.htm +56 -55
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/switches/yes.htm +48 -48
- data/ext/p7zip/{DOCS/MANUAL → DOC/MANUAL/cmdline}/syntax.htm +120 -120
- data/ext/p7zip/DOC/MANUAL/fm/about.htm +21 -0
- data/ext/p7zip/DOC/MANUAL/fm/benchmark.htm +56 -0
- data/ext/p7zip/DOC/MANUAL/fm/index.htm +54 -0
- data/ext/p7zip/DOC/MANUAL/fm/menu.htm +154 -0
- data/ext/p7zip/DOC/MANUAL/fm/options.htm +152 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/add.htm +311 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/extract.htm +78 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/index.htm +63 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/7-zip/style.css +232 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/index.htm +22 -0
- data/ext/p7zip/DOC/MANUAL/fm/plugins/style.css +232 -0
- data/ext/p7zip/DOC/MANUAL/fm/style.css +232 -0
- data/ext/p7zip/DOC/MANUAL/general/7z.htm +117 -0
- data/ext/p7zip/DOC/MANUAL/general/faq.htm +125 -0
- data/ext/p7zip/DOC/MANUAL/general/formats.htm +100 -0
- data/ext/p7zip/DOC/MANUAL/general/index.htm +27 -0
- data/ext/p7zip/DOC/MANUAL/general/license.htm +30 -0
- data/ext/p7zip/DOC/MANUAL/general/performance.htm +98 -0
- data/ext/p7zip/DOC/MANUAL/general/style.css +232 -0
- data/ext/p7zip/DOC/MANUAL/general/thanks.htm +43 -0
- data/ext/p7zip/DOC/MANUAL/start.htm +37 -0
- data/ext/p7zip/DOC/MANUAL/style.css +232 -0
- data/ext/p7zip/DOC/Methods.txt +158 -0
- data/ext/p7zip/{DOCS → DOC}/copying.txt +9 -11
- data/ext/p7zip/DOC/lzma.txt +328 -0
- data/ext/p7zip/{DOCS → DOC}/readme.txt +42 -65
- data/ext/p7zip/{DOCS/history.txt → DOC/src-history.txt} +88 -2
- data/ext/p7zip/README +117 -91
- data/ext/p7zip/TODO +0 -2
- data/ext/p7zip/install.sh +31 -29
- data/ext/p7zip/last_error +1 -0
- data/ext/p7zip/makefile +29 -125
- data/ext/p7zip/makefile.afl +23 -0
- data/ext/p7zip/makefile.aix_gcc +5 -4
- data/ext/p7zip/makefile.android_arm +49 -0
- data/ext/p7zip/makefile.beos +5 -4
- data/ext/p7zip/makefile.common +150 -0
- data/ext/p7zip/makefile.crc32 +3 -3
- data/ext/p7zip/makefile.cygwin +5 -4
- data/ext/p7zip/makefile.cygwin64 +21 -0
- data/ext/p7zip/makefile.cygwin64_asm +22 -0
- data/ext/p7zip/makefile.cygwin_asm +6 -4
- data/ext/p7zip/makefile.cygwin_clang +21 -0
- data/ext/p7zip/makefile.cygwin_clang_asm +23 -0
- data/ext/p7zip/{makefile.djgpp_old → makefile.djgpp} +5 -4
- data/ext/p7zip/makefile.djgpp_watt +7 -5
- data/ext/p7zip/makefile.freebsd5 +5 -4
- data/ext/p7zip/{makefile.freebsd6 → makefile.freebsd6+} +6 -5
- data/ext/p7zip/makefile.glb +27 -18
- data/ext/p7zip/makefile.gprof +3 -2
- data/ext/p7zip/makefile.haiku +19 -0
- data/ext/p7zip/makefile.hpux-acc +3 -2
- data/ext/p7zip/makefile.hpux-acc_64 +3 -2
- data/ext/p7zip/makefile.hpux-gcc +5 -4
- data/ext/p7zip/makefile.linux_amd64 +5 -4
- data/ext/p7zip/makefile.linux_amd64_asm +12 -5
- data/ext/p7zip/makefile.linux_amd64_asm_icc +5 -3
- data/ext/p7zip/makefile.linux_amd64_sanitizer +26 -0
- data/ext/p7zip/makefile.linux_any_cpu +5 -4
- data/ext/p7zip/makefile.linux_any_cpu_gcc_4.X +7 -4
- data/ext/p7zip/makefile.linux_clang_amd64_asm +25 -0
- data/ext/p7zip/makefile.linux_clang_amd64_asm_sanitize +27 -0
- data/ext/p7zip/makefile.linux_cross_aarch64 +25 -0
- data/ext/p7zip/makefile.linux_cross_arm +7 -4
- data/ext/p7zip/makefile.linux_cross_djgpp +27 -0
- data/ext/p7zip/makefile.linux_cross_m68k +26 -0
- data/ext/p7zip/makefile.linux_cross_mipsel +27 -0
- data/ext/p7zip/makefile.linux_cross_ppc +25 -0
- data/ext/p7zip/makefile.linux_cross_ppc64 +25 -0
- data/ext/p7zip/makefile.linux_cross_ppc64le +25 -0
- data/ext/p7zip/makefile.linux_cross_s390x +25 -0
- data/ext/p7zip/makefile.linux_cross_sparc64 +25 -0
- data/ext/p7zip/makefile.linux_gcc6_sanitize +23 -0
- data/ext/p7zip/makefile.linux_gcc_2.95_no_need_for_libstdc +6 -4
- data/ext/p7zip/makefile.linux_other +6 -5
- data/ext/p7zip/makefile.linux_s390x +5 -4
- data/ext/p7zip/{makefile.machine_base → makefile.linux_scan-build} +5 -4
- data/ext/p7zip/makefile.linux_valgrind +25 -0
- data/ext/p7zip/{makefile.linux_clang_amd64 → makefile.linux_x32} +6 -5
- data/ext/p7zip/makefile.linux_x86_asm_gcc_4.X +10 -5
- data/ext/p7zip/makefile.linux_x86_asm_gcc_4.X_fltk +8 -4
- data/ext/p7zip/makefile.linux_x86_asm_gcc_mudflap_4.X +4 -2
- data/ext/p7zip/makefile.linux_x86_asm_icc +4 -2
- data/ext/p7zip/makefile.linux_x86_icc +3 -2
- data/ext/p7zip/makefile.macosx_arm64 +17 -0
- data/ext/p7zip/{makefile.macosx_32bits → makefile.macosx_gcc_32bits} +3 -2
- data/ext/p7zip/{makefile.macosx_32bits_asm → makefile.macosx_gcc_32bits_asm} +5 -3
- data/ext/p7zip/{makefile.macosx_32bits_ppc → makefile.macosx_gcc_32bits_ppc} +3 -2
- data/ext/p7zip/{makefile.macosx_64bits → makefile.macosx_gcc_64bits} +3 -2
- data/ext/p7zip/makefile.macosx_llvm_64bits +9 -3
- data/ext/p7zip/makefile.netbsd +5 -4
- data/ext/p7zip/makefile.netware_asm_gcc_3.X +6 -4
- data/ext/p7zip/makefile.oldmake +41 -130
- data/ext/p7zip/makefile.openbsd +7 -3
- data/ext/p7zip/makefile.openbsd_no_port +9 -5
- data/ext/p7zip/makefile.qnx_shared.bin +5 -4
- data/ext/p7zip/makefile.qnx_static +5 -4
- data/ext/p7zip/makefile.solaris_sparc_CC_32 +5 -4
- data/ext/p7zip/makefile.solaris_sparc_CC_64 +6 -4
- data/ext/p7zip/makefile.solaris_sparc_gcc +7 -6
- data/ext/p7zip/makefile.solaris_x86 +5 -4
- data/ext/p7zip/makefile.tru64 +5 -4
- data/ext/seven_zip_ruby/extconf.rb +92 -6
- data/ext/seven_zip_ruby/seven_zip_archive.cpp +40 -17
- data/ext/seven_zip_ruby/seven_zip_archive.h +1 -1
- data/ext/seven_zip_ruby/utils.cpp +267 -124
- data/ext/seven_zip_ruby/utils.h +2 -0
- data/lib/seven_zip_ruby/7z.dll +0 -0
- data/lib/seven_zip_ruby/7z.sfx +0 -0
- data/lib/seven_zip_ruby/7z64.dll +0 -0
- data/lib/seven_zip_ruby/7zCon.sfx +0 -0
- data/lib/seven_zip_ruby/seven_zip_reader.rb +16 -1
- data/lib/seven_zip_ruby/version.rb +1 -1
- data/p7zip/.gitignore +7 -0
- data/p7zip/README.txt +29 -0
- data/p7zip/extract.sh +134 -0
- data/spec/seven_zip_ruby_spec.rb +22 -13
- data/test/res/The Flying Spaghetti Monster.txt +3 -0
- data/test/res/The Three Little Pigs.txt +5 -0
- data/test/res/UTF_content.txt +3 -0
- data/test/res/test_reader_data.7z +0 -0
- data/test/res/test_reader_filename_cp932.7z +0 -0
- data/test/res/test_reader_files.7z +0 -0
- data/test/test_seven_zip_reader.rb +187 -0
- data/test/test_seven_zip_writer.rb +184 -0
- metadata +267 -219
- data/.github/workflows/test-and-release.yml +0 -43
- data/ext/C/Types.h +0 -254
- data/ext/CPP/7zip/Archive/IArchive.h +0 -234
- data/ext/CPP/7zip/IDecl.h +0 -15
- data/ext/CPP/7zip/IPassword.h +0 -24
- data/ext/CPP/7zip/IProgress.h +0 -33
- data/ext/CPP/7zip/IStream.h +0 -58
- data/ext/CPP/7zip/PropID.h +0 -76
- data/ext/CPP/Common/MyCom.h +0 -225
- data/ext/CPP/Common/MyGuidDef.h +0 -54
- data/ext/CPP/Common/MyInitGuid.h +0 -22
- data/ext/CPP/Common/MyUnknown.h +0 -13
- data/ext/CPP/Common/MyWindows.h +0 -204
- data/ext/CPP/Common/Types.h +0 -11
- data/ext/CPP/Windows/PropVariant.h +0 -56
- data/ext/CPP/include_windows/basetyps.h +0 -19
- data/ext/CPP/include_windows/tchar.h +0 -89
- data/ext/CPP/include_windows/windows.h +0 -194
- data/ext/p7zip/Asm/x64/7zCrcT8U.asm +0 -103
- data/ext/p7zip/Asm/x86/7zCrcT8U.asm +0 -101
- data/ext/p7zip/C/7zCrcT8.c +0 -43
- data/ext/p7zip/C/Alloc.back3 +0 -238
- data/ext/p7zip/C/Alloc.c.back +0 -243
- data/ext/p7zip/C/Alloc.c.back2 +0 -222
- data/ext/p7zip/C/LzmaUtil/Lzma86Dec.h +0 -51
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderOutStream.cpp +0 -149
- data/ext/p7zip/CPP/7zip/Archive/7z/7zFolderOutStream.h +0 -58
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHeader.cpp +0 -24
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmHeader.h +0 -28
- data/ext/p7zip/CPP/7zip/Archive/Chm/ChmRegister.cpp +0 -13
- data/ext/p7zip/CPP/7zip/Archive/Com/ComHandler.cpp +0 -239
- data/ext/p7zip/CPP/7zip/Archive/Com/ComHandler.h +0 -28
- data/ext/p7zip/CPP/7zip/Archive/Com/ComIn.cpp +0 -389
- data/ext/p7zip/CPP/7zip/Archive/Com/ComIn.h +0 -119
- data/ext/p7zip/CPP/7zip/Archive/Com/ComRegister.cpp +0 -13
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2MT.cpp +0 -240
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2MT.h +0 -80
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2ST.cpp +0 -239
- data/ext/p7zip/CPP/7zip/Archive/Common/CoderMixer2ST.h +0 -88
- data/ext/p7zip/CPP/7zip/Archive/Common/CrossThreadProgress.cpp +0 -15
- data/ext/p7zip/CPP/7zip/Archive/Common/CrossThreadProgress.h +0 -37
- data/ext/p7zip/CPP/7zip/Archive/DebHandler.cpp +0 -413
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsHandler.cpp +0 -243
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsHandler.h +0 -26
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsIn.cpp +0 -480
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsIn.h +0 -154
- data/ext/p7zip/CPP/7zip/Archive/Hfs/HfsRegister.cpp +0 -13
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarHeader.cpp +0 -21
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarIn.cpp +0 -478
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarIn.h +0 -123
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarItem.cpp +0 -55
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarRegister.cpp +0 -13
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarVolumeInStream.cpp +0 -78
- data/ext/p7zip/CPP/7zip/Archive/Rar/RarVolumeInStream.h +0 -49
- data/ext/p7zip/CPP/7zip/Archive/Udf/UdfRegister.cpp +0 -13
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipHeader.cpp +0 -36
- data/ext/p7zip/CPP/7zip/Archive/Zip/ZipItemEx.h +0 -34
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7zFM.txt +0 -163
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7zG.txt +0 -131
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_7za.txt +0 -253
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_ALL.txt +0 -32
- data/ext/p7zip/CPP/7zip/CMAKE/CMakeLists_Format7zFree.txt +0 -290
- data/ext/p7zip/CPP/7zip/CMAKE/generate.sh +0 -37
- data/ext/p7zip/CPP/7zip/CMAKE/generate_xcode.sh +0 -32
- data/ext/p7zip/CPP/7zip/Common/LockedStream.cpp +0 -23
- data/ext/p7zip/CPP/7zip/Common/LockedStream.h +0 -38
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder1.cpp +0 -309
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder1.h +0 -98
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder2.cpp +0 -90
- data/ext/p7zip/CPP/7zip/Compress/ArjDecoder2.h +0 -59
- data/ext/p7zip/CPP/7zip/Compress/BranchCoder.cpp +0 -19
- data/ext/p7zip/CPP/7zip/Compress/BranchCoder.h +0 -44
- data/ext/p7zip/CPP/7zip/Compress/DllExports.cpp +0 -39
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaAlone.cpp +0 -531
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBench.cpp +0 -1018
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBench.h +0 -48
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBenchCon.cpp +0 -311
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/LzmaBenchCon.h +0 -20
- data/ext/p7zip/CPP/7zip/Compress/LZMA_Alone/makefile +0 -173
- data/ext/p7zip/CPP/7zip/Compress/Lzx86Converter.cpp +0 -90
- data/ext/p7zip/CPP/7zip/Compress/Lzx86Converter.h +0 -46
- data/ext/p7zip/CPP/7zip/Compress/RangeCoder.h +0 -205
- data/ext/p7zip/CPP/7zip/Compress/RangeCoderBit.h +0 -114
- data/ext/p7zip/CPP/7zip/Crypto/Sha1.cpp +0 -229
- data/ext/p7zip/CPP/7zip/Crypto/Sha1.h +0 -68
- data/ext/p7zip/CPP/7zip/PREMAKE/generate.sh +0 -18
- data/ext/p7zip/CPP/7zip/PREMAKE/premake4.lua +0 -263
- data/ext/p7zip/CPP/7zip/QMAKE/7ZA/7ZA.pro +0 -228
- data/ext/p7zip/CPP/7zip/QMAKE/7ZA/7ZA_osx.pro +0 -228
- data/ext/p7zip/CPP/7zip/QMAKE/test_emul/test_emul.pro +0 -26
- data/ext/p7zip/CPP/7zip/TEST/TestUI/TestUI.cpp +0 -560
- data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile +0 -33
- data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile.depend +0 -577
- data/ext/p7zip/CPP/7zip/TEST/TestUI/makefile.list +0 -16
- data/ext/p7zip/CPP/Common/Buffer.h +0 -77
- data/ext/p7zip/CPP/Common/Types.h +0 -11
- data/ext/p7zip/CPP/Windows/COM.cpp +0 -37
- data/ext/p7zip/CPP/Windows/COM.h +0 -69
- data/ext/p7zip/CPP/Windows/Clipboard.cpp +0 -160
- data/ext/p7zip/CPP/Windows/Clipboard.h +0 -28
- data/ext/p7zip/CPP/Windows/CommonDialog.h +0 -19
- data/ext/p7zip/CPP/Windows/Control/ComboBox.h +0 -82
- data/ext/p7zip/CPP/Windows/Control/Controls.cpp +0 -515
- data/ext/p7zip/CPP/Windows/Control/Dialog.cpp +0 -560
- data/ext/p7zip/CPP/Windows/Control/Dialog.h +0 -179
- data/ext/p7zip/CPP/Windows/Control/DialogImpl.h +0 -73
- data/ext/p7zip/CPP/Windows/Control/Edit.h +0 -24
- data/ext/p7zip/CPP/Windows/Control/ListView.h +0 -164
- data/ext/p7zip/CPP/Windows/Control/ProgressBar.h +0 -34
- data/ext/p7zip/CPP/Windows/Control/Static.h +0 -23
- data/ext/p7zip/CPP/Windows/Control/StatusBar.h +0 -56
- data/ext/p7zip/CPP/Windows/Control/Window2.cpp +0 -211
- data/ext/p7zip/CPP/Windows/Control/Window2.h +0 -111
- data/ext/p7zip/CPP/Windows/DLL.cpp +0 -193
- data/ext/p7zip/CPP/Windows/DLL.h +0 -48
- data/ext/p7zip/CPP/Windows/Error.cpp +0 -58
- data/ext/p7zip/CPP/Windows/Error.h +0 -33
- data/ext/p7zip/CPP/Windows/Menu.h +0 -4
- data/ext/p7zip/CPP/Windows/PropVariantConversions.cpp +0 -142
- data/ext/p7zip/CPP/Windows/PropVariantConversions.h +0 -14
- data/ext/p7zip/CPP/Windows/Registry.cpp +0 -313
- data/ext/p7zip/CPP/Windows/Registry.h +0 -113
- data/ext/p7zip/CPP/Windows/ResourceString.h +0 -22
- data/ext/p7zip/CPP/Windows/Shell.h +0 -21
- data/ext/p7zip/CPP/Windows/Time.cpp +0 -88
- data/ext/p7zip/CPP/Windows/Time.h +0 -21
- data/ext/p7zip/CPP/Windows/Window.cpp +0 -101
- data/ext/p7zip/CPP/Windows/Window.h +0 -43
- data/ext/p7zip/CPP/myWindows/initguid.h +0 -4
- data/ext/p7zip/CPP/myWindows/makefile +0 -21
- data/ext/p7zip/CPP/myWindows/makefile.depend +0 -32
- data/ext/p7zip/CPP/myWindows/makefile.list +0 -28
- data/ext/p7zip/CPP/myWindows/myAddExeFlag.cpp +0 -20
- data/ext/p7zip/CPP/myWindows/myGetTickCount.cpp +0 -8
- data/ext/p7zip/CPP/myWindows/mySplitCommandLine.cpp +0 -82
- data/ext/p7zip/CPP/myWindows/test_emul.cpp +0 -745
- data/ext/p7zip/CPP/myWindows/wine_GetXXXDefaultLangID.cpp +0 -741
- data/ext/p7zip/DOCS/MANUAL/switches/charset.htm +0 -49
- data/ext/p7zip/DOCS/Methods.txt +0 -152
- data/ext/p7zip/DOCS/lzma.txt +0 -598
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/ChangeLog +0 -41
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/readme +0 -21
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/readme.u7z +0 -30
- data/ext/p7zip/contrib/VirtualFileSystemForMidnightCommander/u7z +0 -133
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/README +0 -21
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/check/check.sh +0 -117
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/check/files.tar +0 -0
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/man1/p7zip.1 +0 -33
- data/ext/p7zip/contrib/gzip-like_CLI_wrapper_for_7z/p7zip +0 -144
- data/ext/p7zip/contrib/qnx630sp3/qnx630sp3-shared +0 -14
- data/ext/p7zip/contrib/qnx630sp3/qnx630sp3-static +0 -10
- data/ext/p7zip/integration_context_menu.txt +0 -51
- data/ext/p7zip/makefile.rules +0 -661
- /data/ext/p7zip/{DOCS → DOC}/7zFormat.txt +0 -0
- /data/ext/p7zip/{DOCS → DOC}/unRarLicense.txt +0 -0
@@ -2,10 +2,18 @@
|
|
2
2
|
|
3
3
|
#include "StdAfx.h"
|
4
4
|
|
5
|
+
#ifndef _UNICODE
|
6
|
+
#include "../Common/StringConvert.h"
|
7
|
+
#endif
|
8
|
+
|
5
9
|
#include "FileDir.h"
|
6
|
-
#include "FileName.h"
|
7
10
|
#include "FileFind.h"
|
8
|
-
#include "
|
11
|
+
#include "FileName.h"
|
12
|
+
|
13
|
+
using namespace NWindows;
|
14
|
+
using namespace NFile;
|
15
|
+
using namespace NName;
|
16
|
+
|
9
17
|
#include "../Common/StringConvert.h"
|
10
18
|
#include "../Common/IntToString.h"
|
11
19
|
|
@@ -25,6 +33,10 @@
|
|
25
33
|
// #define TRACEN(u) u;
|
26
34
|
#define TRACEN(u) /* */
|
27
35
|
|
36
|
+
int g_filedir = 1;
|
37
|
+
|
38
|
+
static NWindows::NSynchronization::CCriticalSection g_CountCriticalSection;
|
39
|
+
|
28
40
|
class Umask
|
29
41
|
{
|
30
42
|
public:
|
@@ -32,12 +44,14 @@ class Umask
|
|
32
44
|
mode_t mask;
|
33
45
|
Umask() {
|
34
46
|
current_umask = umask (0); /* get and set the umask */
|
35
|
-
umask(current_umask);
|
47
|
+
umask(current_umask); /* restore the umask */
|
36
48
|
mask = 0777 & (~current_umask);
|
37
|
-
}
|
49
|
+
}
|
38
50
|
};
|
39
51
|
|
40
52
|
static Umask gbl_umask;
|
53
|
+
extern BOOLEAN WINAPI RtlTimeToSecondsSince1970( const LARGE_INTEGER *Time, DWORD *Seconds );
|
54
|
+
|
41
55
|
|
42
56
|
#ifdef _UNICODE
|
43
57
|
AString nameWindowToUnix2(LPCWSTR name) // FIXME : optimization ?
|
@@ -47,10 +61,7 @@ AString nameWindowToUnix2(LPCWSTR name) // FIXME : optimization ?
|
|
47
61
|
}
|
48
62
|
#endif
|
49
63
|
|
50
|
-
|
51
|
-
|
52
|
-
#ifdef _UNICODE
|
53
|
-
DWORD WINAPI GetFullPathName( LPCTSTR name, DWORD len, LPTSTR buffer, LPTSTR *lastpart ) { // FIXME
|
64
|
+
DWORD WINAPI GetFullPathNameW( LPCTSTR name, DWORD len, LPTSTR buffer, LPTSTR *lastpart ) { // FIXME
|
54
65
|
if (name == 0) return 0;
|
55
66
|
|
56
67
|
DWORD name_len = lstrlen(name);
|
@@ -71,7 +82,7 @@ DWORD WINAPI GetFullPathName( LPCTSTR name, DWORD len, LPTSTR buffer, LPTSTR *la
|
|
71
82
|
*lastpart=ptr+1;
|
72
83
|
ptr++;
|
73
84
|
}
|
74
|
-
TRACEN((printf("GetFullPathNameA(%
|
85
|
+
TRACEN((printf("GetFullPathNameA(%ls,%d,%ls,%ls)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
|
75
86
|
return ret;
|
76
87
|
}
|
77
88
|
if (isascii(name[0]) && (name[1] == ':')) { // FIXME isascii
|
@@ -89,14 +100,14 @@ DWORD WINAPI GetFullPathName( LPCTSTR name, DWORD len, LPTSTR buffer, LPTSTR *la
|
|
89
100
|
*lastpart=ptr+1;
|
90
101
|
ptr++;
|
91
102
|
}
|
92
|
-
TRACEN((printf("GetFullPathNameA(%
|
103
|
+
TRACEN((printf("GetFullPathNameA(%ls,%d,%ls,%ls)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
|
93
104
|
return ret;
|
94
105
|
}
|
95
106
|
|
96
107
|
// name is a relative pathname.
|
97
108
|
//
|
98
109
|
if (len < 2) {
|
99
|
-
TRACEN((printf("GetFullPathNameA(%
|
110
|
+
TRACEN((printf("GetFullPathNameA(%ls,%d,)=0000 (case 2)\n",name, (int)len)))
|
100
111
|
return 0;
|
101
112
|
}
|
102
113
|
|
@@ -110,13 +121,13 @@ DWORD WINAPI GetFullPathName( LPCTSTR name, DWORD len, LPTSTR buffer, LPTSTR *la
|
|
110
121
|
if (cret) {
|
111
122
|
begin_len = strlen(begin);
|
112
123
|
}
|
113
|
-
|
124
|
+
|
114
125
|
if (begin_len >= 1) {
|
115
126
|
// strlen(begin) + strlen("/") + strlen(name)
|
116
127
|
ret = begin_len + 1 + name_len;
|
117
128
|
|
118
129
|
if (ret >= len) {
|
119
|
-
TRACEN((printf("GetFullPathNameA(%
|
130
|
+
TRACEN((printf("GetFullPathNameA(%ls,%d,)=0000 (case 4)\n",name, (int)len)))
|
120
131
|
return 0;
|
121
132
|
}
|
122
133
|
UString wbegin = GetUnicodeString(begin);
|
@@ -131,136 +142,14 @@ DWORD WINAPI GetFullPathName( LPCTSTR name, DWORD len, LPTSTR buffer, LPTSTR *la
|
|
131
142
|
*lastpart=ptr+1;
|
132
143
|
ptr++;
|
133
144
|
}
|
134
|
-
TRACEN((printf("GetFullPathNameA(%
|
135
|
-
} else {
|
136
|
-
ret = 0;
|
137
|
-
TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 5)\n",name, (int)len)))
|
138
|
-
}
|
139
|
-
return ret;
|
140
|
-
}
|
141
|
-
|
142
|
-
#endif
|
143
|
-
|
144
|
-
#if 0
|
145
|
-
DWORD WINAPI GetFullPathName( LPCSTR name, DWORD len, LPSTR buffer, LPSTR *lastpart ) {
|
146
|
-
if (name == 0) return 0;
|
147
|
-
|
148
|
-
DWORD name_len = strlen(name);
|
149
|
-
|
150
|
-
if (name[0] == '/') {
|
151
|
-
DWORD ret = name_len+2;
|
152
|
-
if (ret >= len) {
|
153
|
-
TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 0)\n",name, (int)len)))
|
154
|
-
return 0;
|
155
|
-
}
|
156
|
-
strcpy(buffer,"c:");
|
157
|
-
strcat(buffer,name);
|
158
|
-
|
159
|
-
*lastpart=buffer;
|
160
|
-
char *ptr=buffer;
|
161
|
-
while (*ptr) {
|
162
|
-
if (*ptr == '/')
|
163
|
-
*lastpart=ptr+1;
|
164
|
-
ptr++;
|
165
|
-
}
|
166
|
-
TRACEN((printf("GetFullPathNameA(%s,%d,%s,%s)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
|
167
|
-
return ret;
|
168
|
-
}
|
169
|
-
if (isascii(name[0]) && (name[1] == ':')) {
|
170
|
-
DWORD ret = name_len;
|
171
|
-
if (ret >= len) {
|
172
|
-
TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 1)\n",name, (int)len)))
|
173
|
-
return 0;
|
174
|
-
}
|
175
|
-
strcpy(buffer,name);
|
176
|
-
|
177
|
-
*lastpart=buffer;
|
178
|
-
char *ptr=buffer;
|
179
|
-
while (*ptr) {
|
180
|
-
if (*ptr == '/')
|
181
|
-
*lastpart=ptr+1;
|
182
|
-
ptr++;
|
183
|
-
}
|
184
|
-
TRACEN((printf("GetFullPathNameA(%s,%d,%s,%s)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
|
185
|
-
return ret;
|
186
|
-
}
|
187
|
-
|
188
|
-
// name is a relative pathname.
|
189
|
-
//
|
190
|
-
if (len < 2) {
|
191
|
-
TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 2)\n",name, (int)len)))
|
192
|
-
return 0;
|
193
|
-
}
|
194
|
-
|
195
|
-
DWORD ret = 0;
|
196
|
-
char begin[MAX_PATHNAME_LEN];
|
197
|
-
/* DWORD begin_len = GetCurrentDirectoryA(MAX_PATHNAME_LEN,begin); */
|
198
|
-
DWORD begin_len = 0;
|
199
|
-
begin[0]='c';
|
200
|
-
begin[1]=':';
|
201
|
-
char * cret = getcwd(begin+2, MAX_PATHNAME_LEN - 3);
|
202
|
-
if (cret) {
|
203
|
-
begin_len = strlen(begin);
|
204
|
-
}
|
205
|
-
|
206
|
-
if (begin_len >= 1) {
|
207
|
-
// strlen(begin) + strlen("/") + strlen(name)
|
208
|
-
ret = begin_len + 1 + name_len;
|
209
|
-
|
210
|
-
if (ret >= len) {
|
211
|
-
TRACEN((printf("GetFullPathNameA(%s,%d,)=0000 (case 4)\n",name, (int)len)))
|
212
|
-
return 0;
|
213
|
-
}
|
214
|
-
strcpy(buffer,begin);
|
215
|
-
strcat(buffer,"/");
|
216
|
-
strcat(buffer,name);
|
217
|
-
|
218
|
-
*lastpart=buffer + begin_len + 1;
|
219
|
-
char *ptr=buffer;
|
220
|
-
while (*ptr) {
|
221
|
-
if (*ptr == '/')
|
222
|
-
*lastpart=ptr+1;
|
223
|
-
ptr++;
|
224
|
-
}
|
225
|
-
TRACEN((printf("GetFullPathNameA(%s,%d,%s,%s)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
|
145
|
+
TRACEN((printf("GetFullPathNameA(%ls,%d,%ls,%ls)=%d\n",name, (int)len,buffer, *lastpart,(int)ret)))
|
226
146
|
} else {
|
227
147
|
ret = 0;
|
228
|
-
TRACEN((printf("GetFullPathNameA(%
|
148
|
+
TRACEN((printf("GetFullPathNameA(%ls,%d,)=0000 (case 5)\n",name, (int)len)))
|
229
149
|
}
|
230
150
|
return ret;
|
231
151
|
}
|
232
152
|
|
233
|
-
static BOOL WINAPI RemoveDirectory(LPCSTR path) {
|
234
|
-
if (!path || !*path) {
|
235
|
-
SetLastError(ERROR_PATH_NOT_FOUND);
|
236
|
-
return FALSE;
|
237
|
-
}
|
238
|
-
const char * name = nameWindowToUnix(path);
|
239
|
-
TRACEN((printf("RemoveDirectoryA(%s)\n",name)))
|
240
|
-
|
241
|
-
if (rmdir( name ) != 0) {
|
242
|
-
return FALSE;
|
243
|
-
}
|
244
|
-
return TRUE;
|
245
|
-
}
|
246
|
-
#endif
|
247
|
-
|
248
|
-
#ifdef _UNICODE
|
249
|
-
static BOOL WINAPI RemoveDirectory(LPCWSTR path) {
|
250
|
-
if (!path || !*path) {
|
251
|
-
SetLastError(ERROR_PATH_NOT_FOUND);
|
252
|
-
return FALSE;
|
253
|
-
}
|
254
|
-
AString name = nameWindowToUnix2(path);
|
255
|
-
TRACEN((printf("RemoveDirectoryA(%s)\n",(const char *)name)))
|
256
|
-
|
257
|
-
if (rmdir( (const char *)name ) != 0) {
|
258
|
-
return FALSE;
|
259
|
-
}
|
260
|
-
return TRUE;
|
261
|
-
}
|
262
|
-
#endif
|
263
|
-
|
264
153
|
static int copy_fd(int fin,int fout)
|
265
154
|
{
|
266
155
|
char buffer[16384];
|
@@ -297,6 +186,7 @@ static BOOL CopyFile(const char *src,const char *dst)
|
|
297
186
|
flags |= O_LARGEFILE;
|
298
187
|
#endif
|
299
188
|
|
189
|
+
// printf("##DBG CopyFile(%s,%s)\n",src,dst);
|
300
190
|
int fout = open(dst,O_CREAT | O_WRONLY | O_EXCL | flags, 0600);
|
301
191
|
if (fout != -1)
|
302
192
|
{
|
@@ -314,102 +204,76 @@ static BOOL CopyFile(const char *src,const char *dst)
|
|
314
204
|
return FALSE;
|
315
205
|
}
|
316
206
|
|
317
|
-
/*****************************************************************************************/
|
318
207
|
|
208
|
+
#ifndef _UNICODE
|
209
|
+
extern bool g_IsNT;
|
210
|
+
#endif
|
319
211
|
|
320
212
|
namespace NWindows {
|
321
213
|
namespace NFile {
|
322
|
-
namespace NDirectory {
|
323
214
|
|
215
|
+
// SetCurrentDirectory doesn't support \\?\ prefix
|
324
216
|
|
325
|
-
|
326
|
-
|
327
|
-
|
217
|
+
#ifdef WIN_LONG_PATH
|
218
|
+
bool GetLongPathBase(CFSTR fileName, UString &res);
|
219
|
+
bool GetLongPath(CFSTR fileName, UString &res);
|
220
|
+
#endif
|
328
221
|
|
329
|
-
|
330
|
-
}
|
222
|
+
namespace NDir {
|
331
223
|
|
332
|
-
#ifdef _UNICODE
|
333
|
-
bool GetOnlyName(LPCTSTR fileName, CSysString &resultName)
|
334
|
-
{
|
335
|
-
int index;
|
336
|
-
if (!MyGetFullPathName(fileName, resultName, index))
|
337
|
-
return false;
|
338
|
-
resultName = resultName.Mid(index);
|
339
|
-
return true;
|
340
|
-
}
|
341
224
|
|
342
|
-
|
343
|
-
{
|
344
|
-
int index;
|
345
|
-
if (!MyGetFullPathName(fileName, resultName, index))
|
346
|
-
return false;
|
347
|
-
resultName = resultName.Left(index);
|
348
|
-
return true;
|
349
|
-
}
|
350
|
-
#endif
|
225
|
+
#ifdef _WIN32
|
351
226
|
|
227
|
+
#ifndef UNDER_CE
|
352
228
|
|
353
|
-
bool
|
229
|
+
bool MyGetWindowsDirectory(FString &path)
|
354
230
|
{
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
char * cret = getcwd(begin+2, MAX_PATHNAME_LEN - 3);
|
359
|
-
if (cret)
|
231
|
+
UINT needLength;
|
232
|
+
#ifndef _UNICODE
|
233
|
+
if (!g_IsNT)
|
360
234
|
{
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
#endif
|
366
|
-
return true;
|
235
|
+
TCHAR s[MAX_PATH + 2];
|
236
|
+
s[0] = 0;
|
237
|
+
needLength = ::GetWindowsDirectory(s, MAX_PATH + 1);
|
238
|
+
path = fas2fs(s);
|
367
239
|
}
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
bool MyMoveFile( LPCTSTR fn1, LPCTSTR fn2 ) {
|
372
|
-
#ifdef _UNICODE
|
373
|
-
AString src = nameWindowToUnix2(fn1);
|
374
|
-
AString dst = nameWindowToUnix2(fn2);
|
375
|
-
#else
|
376
|
-
const char * src = nameWindowToUnix(fn1);
|
377
|
-
const char * dst = nameWindowToUnix(fn2);
|
378
|
-
#endif
|
379
|
-
|
380
|
-
TRACEN((printf("MoveFileW(%s,%s)\n",src,dst)))
|
381
|
-
|
382
|
-
int ret = rename(src,dst);
|
383
|
-
if (ret != 0)
|
240
|
+
else
|
241
|
+
#endif
|
384
242
|
{
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
struct stat info_file;
|
391
|
-
ret = stat(src,&info_file);
|
392
|
-
if (ret == 0) {
|
393
|
-
TRACEN((printf("##DBG chmod-1(%s,%o)\n",dst,(unsigned)info_file.st_mode & gbl_umask.mask)))
|
394
|
-
ret = chmod(dst,info_file.st_mode & gbl_umask.mask);
|
395
|
-
}
|
396
|
-
if (ret == 0) {
|
397
|
-
ret = unlink(src);
|
398
|
-
}
|
399
|
-
if (ret == 0) return true;
|
400
|
-
}
|
401
|
-
return false;
|
243
|
+
WCHAR s[MAX_PATH + 2];
|
244
|
+
s[0] = 0;
|
245
|
+
needLength = ::GetWindowsDirectoryW(s, MAX_PATH + 1);
|
246
|
+
path = us2fs(s);
|
402
247
|
}
|
403
|
-
return
|
248
|
+
return (needLength > 0 && needLength <= MAX_PATH);
|
404
249
|
}
|
405
250
|
|
406
|
-
|
251
|
+
|
252
|
+
bool MyGetSystemDirectory(FString &path)
|
407
253
|
{
|
408
|
-
|
254
|
+
UINT needLength;
|
255
|
+
#ifndef _UNICODE
|
256
|
+
if (!g_IsNT)
|
257
|
+
{
|
258
|
+
TCHAR s[MAX_PATH + 2];
|
259
|
+
s[0] = 0;
|
260
|
+
needLength = ::GetSystemDirectory(s, MAX_PATH + 1);
|
261
|
+
path = fas2fs(s);
|
262
|
+
}
|
263
|
+
else
|
264
|
+
#endif
|
265
|
+
{
|
266
|
+
WCHAR s[MAX_PATH + 2];
|
267
|
+
s[0] = 0;
|
268
|
+
needLength = ::GetSystemDirectoryW(s, MAX_PATH + 1);
|
269
|
+
path = us2fs(s);
|
270
|
+
}
|
271
|
+
return (needLength > 0 && needLength <= MAX_PATH);
|
409
272
|
}
|
273
|
+
#endif
|
274
|
+
#endif // _WIN32
|
410
275
|
|
411
|
-
bool SetDirTime(
|
412
|
-
const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime)
|
276
|
+
bool SetDirTime(CFSTR fileName, const FILETIME * /* cTime */ , const FILETIME *aTime, const FILETIME *mTime)
|
413
277
|
{
|
414
278
|
AString cfilename = UnicodeStringToMultiByte(fileName);
|
415
279
|
const char * unix_filename = nameWindowToUnix((const char *)cfilename);
|
@@ -427,22 +291,22 @@ bool SetDirTime(LPCWSTR fileName, const FILETIME * /* creationTime */ ,
|
|
427
291
|
buf.modtime = current_time;
|
428
292
|
}
|
429
293
|
|
430
|
-
if (
|
294
|
+
if (aTime)
|
431
295
|
{
|
432
296
|
LARGE_INTEGER ltime;
|
433
297
|
DWORD dw;
|
434
|
-
ltime.QuadPart =
|
435
|
-
ltime.QuadPart = (ltime.QuadPart << 32) |
|
298
|
+
ltime.QuadPart = aTime->dwHighDateTime;
|
299
|
+
ltime.QuadPart = (ltime.QuadPart << 32) | aTime->dwLowDateTime;
|
436
300
|
RtlTimeToSecondsSince1970( <ime, &dw );
|
437
301
|
buf.actime = dw;
|
438
302
|
}
|
439
303
|
|
440
|
-
if (
|
304
|
+
if (mTime)
|
441
305
|
{
|
442
306
|
LARGE_INTEGER ltime;
|
443
307
|
DWORD dw;
|
444
|
-
ltime.QuadPart =
|
445
|
-
ltime.QuadPart = (ltime.QuadPart << 32) |
|
308
|
+
ltime.QuadPart = mTime->dwHighDateTime;
|
309
|
+
ltime.QuadPart = (ltime.QuadPart << 32) | mTime->dwLowDateTime;
|
446
310
|
RtlTimeToSecondsSince1970( <ime, &dw );
|
447
311
|
buf.modtime = dw;
|
448
312
|
}
|
@@ -452,26 +316,22 @@ bool SetDirTime(LPCWSTR fileName, const FILETIME * /* creationTime */ ,
|
|
452
316
|
return true;
|
453
317
|
}
|
454
318
|
|
455
|
-
#
|
456
|
-
bool
|
457
|
-
{
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
bool MyMoveFile(LPCWSTR existFileName, LPCWSTR newFileName)
|
467
|
-
{
|
468
|
-
UINT codePage = CP_ACP;
|
469
|
-
return MyMoveFile(UnicodeStringToMultiByte(existFileName, codePage), UnicodeStringToMultiByte(newFileName, codePage));
|
319
|
+
#ifdef WIN_LONG_PATH
|
320
|
+
bool GetLongPaths(CFSTR s1, CFSTR s2, UString &d1, UString &d2)
|
321
|
+
{
|
322
|
+
if (!GetLongPathBase(s1, d1) ||
|
323
|
+
!GetLongPathBase(s2, d2))
|
324
|
+
return false;
|
325
|
+
if (d1.IsEmpty() && d2.IsEmpty())
|
326
|
+
return false;
|
327
|
+
if (d1.IsEmpty()) d1 = fs2us(s1);
|
328
|
+
if (d2.IsEmpty()) d2 = fs2us(s2);
|
329
|
+
return true;
|
470
330
|
}
|
471
331
|
#endif
|
472
332
|
|
473
|
-
|
474
333
|
static int convert_to_symlink(const char * name) {
|
334
|
+
TRACEN(printf("LINK(%s)\n",name))
|
475
335
|
FILE *file = fopen(name,"rb");
|
476
336
|
if (file) {
|
477
337
|
char buf[MAX_PATHNAME_LEN+1];
|
@@ -481,18 +341,19 @@ static int convert_to_symlink(const char * name) {
|
|
481
341
|
int ir = unlink(name);
|
482
342
|
if (ir == 0) {
|
483
343
|
ir = symlink(buf,name);
|
344
|
+
TRACEN(printf("TO(%s)\n",buf))
|
484
345
|
}
|
485
|
-
return ir;
|
346
|
+
return ir;
|
486
347
|
}
|
487
348
|
}
|
488
349
|
return -1;
|
489
350
|
}
|
490
351
|
|
491
|
-
bool
|
352
|
+
bool SetFileAttrib(CFSTR fileName, DWORD fileAttributes,CObjectVector<CDelayedSymLink> *delayedSymLinks)
|
492
353
|
{
|
493
354
|
if (!fileName) {
|
494
355
|
SetLastError(ERROR_PATH_NOT_FOUND);
|
495
|
-
TRACEN((printf("
|
356
|
+
TRACEN((printf("SetFileAttrib(NULL,%d) : false-1\n",fileAttributes)))
|
496
357
|
return false;
|
497
358
|
}
|
498
359
|
#ifdef _UNICODE
|
@@ -504,14 +365,14 @@ bool MySetFileAttributes(LPCTSTR fileName, DWORD fileAttributes)
|
|
504
365
|
#ifdef ENV_HAVE_LSTAT
|
505
366
|
if (global_use_lstat) {
|
506
367
|
if(lstat(name,&stat_info)!=0) {
|
507
|
-
TRACEN((printf("
|
368
|
+
TRACEN((printf("SetFileAttrib(%s,%d) : false-2-1\n",(const char *)name,fileAttributes)))
|
508
369
|
return false;
|
509
370
|
}
|
510
371
|
} else
|
511
372
|
#endif
|
512
373
|
{
|
513
374
|
if(stat(name,&stat_info)!=0) {
|
514
|
-
TRACEN((printf("
|
375
|
+
TRACEN((printf("SetFileAttrib(%s,%d) : false-2-2\n",(const char *)name,fileAttributes)))
|
515
376
|
return false;
|
516
377
|
}
|
517
378
|
}
|
@@ -520,19 +381,21 @@ bool MySetFileAttributes(LPCTSTR fileName, DWORD fileAttributes)
|
|
520
381
|
stat_info.st_mode = fileAttributes >> 16;
|
521
382
|
#ifdef ENV_HAVE_LSTAT
|
522
383
|
if (S_ISLNK(stat_info.st_mode)) {
|
523
|
-
|
524
|
-
|
384
|
+
if (delayedSymLinks) {
|
385
|
+
delayedSymLinks->Add(CDelayedSymLink(name));
|
386
|
+
} else if ( convert_to_symlink(name) != 0) {
|
387
|
+
TRACEN((printf("SetFileAttrib(%s,%d) : false-3\n",(const char *)name,fileAttributes)))
|
525
388
|
return false;
|
526
389
|
}
|
527
390
|
} else
|
528
391
|
#endif
|
529
392
|
if (S_ISREG(stat_info.st_mode)) {
|
530
|
-
TRACEN((printf("##DBG chmod-2(%s,%o)\n",name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
|
393
|
+
TRACEN((printf("##DBG chmod-2(%s,%o)\n",(const char *)name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
|
531
394
|
chmod(name,stat_info.st_mode & gbl_umask.mask);
|
532
395
|
} else if (S_ISDIR(stat_info.st_mode)) {
|
533
396
|
// user/7za must be able to create files in this directory
|
534
397
|
stat_info.st_mode |= (S_IRUSR | S_IWUSR | S_IXUSR);
|
535
|
-
TRACEN((printf("##DBG chmod-3(%s,%o)\n",name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
|
398
|
+
TRACEN((printf("##DBG chmod-3(%s,%o)\n",(const char *)name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
|
536
399
|
chmod(name,stat_info.st_mode & gbl_umask.mask);
|
537
400
|
}
|
538
401
|
#ifdef ENV_HAVE_LSTAT
|
@@ -545,121 +408,123 @@ bool MySetFileAttributes(LPCTSTR fileName, DWORD fileAttributes)
|
|
545
408
|
/* Only Windows Attributes */
|
546
409
|
if( S_ISDIR(stat_info.st_mode)) {
|
547
410
|
/* Remark : FILE_ATTRIBUTE_READONLY ignored for directory. */
|
548
|
-
TRACEN((printf("##DBG chmod-4(%s,%o)\n",name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
|
411
|
+
TRACEN((printf("##DBG chmod-4(%s,%o)\n",(const char *)name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
|
549
412
|
chmod(name,stat_info.st_mode & gbl_umask.mask);
|
550
413
|
} else {
|
551
414
|
if (fileAttributes & FILE_ATTRIBUTE_READONLY) stat_info.st_mode &= ~0222; /* octal!, clear write permission bits */
|
552
|
-
TRACEN((printf("##DBG chmod-5(%s,%o)\n",name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
|
415
|
+
TRACEN((printf("##DBG chmod-5(%s,%o)\n",(const char *)name,(unsigned)stat_info.st_mode & gbl_umask.mask)))
|
553
416
|
chmod(name,stat_info.st_mode & gbl_umask.mask);
|
554
417
|
}
|
555
418
|
}
|
556
|
-
TRACEN((printf("
|
419
|
+
TRACEN((printf("SetFileAttrib(%s,%d) : true\n",(const char *)name,fileAttributes)))
|
557
420
|
|
558
421
|
return true;
|
559
422
|
}
|
560
423
|
|
561
|
-
bool
|
562
|
-
{
|
563
|
-
if (!
|
424
|
+
bool RemoveDir(CFSTR path)
|
425
|
+
{
|
426
|
+
if (!path || !*path) {
|
564
427
|
SetLastError(ERROR_PATH_NOT_FOUND);
|
565
|
-
return
|
428
|
+
return FALSE;
|
566
429
|
}
|
430
|
+
AString name = nameWindowToUnix2(path);
|
431
|
+
TRACEN((printf("RemoveDirectoryA(%s)\n",(const char *)name)))
|
567
432
|
|
433
|
+
if (rmdir( (const char *)name ) != 0) {
|
434
|
+
return FALSE;
|
435
|
+
}
|
436
|
+
return TRUE;
|
437
|
+
}
|
438
|
+
|
439
|
+
bool MyMoveFile(CFSTR existFileName, CFSTR newFileName)
|
440
|
+
{
|
568
441
|
#ifdef _UNICODE
|
569
|
-
AString
|
442
|
+
AString src = nameWindowToUnix2(existFileName);
|
443
|
+
AString dst = nameWindowToUnix2(newFileName);
|
570
444
|
#else
|
571
|
-
const char *
|
445
|
+
const char * src = nameWindowToUnix(existFileName);
|
446
|
+
const char * dst = nameWindowToUnix(newFileName);
|
572
447
|
#endif
|
573
|
-
bool bret = false;
|
574
|
-
if (mkdir( name, 0700 ) == 0) bret = true;
|
575
|
-
|
576
|
-
TRACEN((printf("MyCreateDirectory(%s)=%d\n",name,(int)bret)))
|
577
|
-
return bret;
|
578
|
-
}
|
579
448
|
|
580
|
-
|
581
|
-
bool MyCreateDirectory(LPCWSTR pathName)
|
582
|
-
{
|
583
|
-
return MyCreateDirectory(UnicodeStringToMultiByte(pathName, CP_ACP));
|
584
|
-
}
|
585
|
-
#endif
|
449
|
+
TRACEN((printf("MyMoveFile(%s,%s)\n",(const char *)src,(const char *)dst)))
|
586
450
|
|
587
|
-
|
588
|
-
|
589
|
-
CSysString pathName = _aPathName;
|
590
|
-
int pos = pathName.ReverseFind(TEXT(CHAR_PATH_SEPARATOR));
|
591
|
-
if (pos > 0 && pos == pathName.Length() - 1)
|
592
|
-
{
|
593
|
-
if (pathName.Length() == 3 && pathName[1] == ':')
|
594
|
-
return true; // Disk folder;
|
595
|
-
pathName.Delete(pos);
|
596
|
-
}
|
597
|
-
CSysString pathName2 = pathName;
|
598
|
-
pos = pathName.Length();
|
599
|
-
while(true)
|
451
|
+
int ret = rename(src,dst);
|
452
|
+
if (ret != 0)
|
600
453
|
{
|
601
|
-
if(
|
602
|
-
break;
|
603
|
-
if(::GetLastError() == ERROR_ALREADY_EXISTS)
|
454
|
+
if (errno == EXDEV) // FIXED : bug #1112167 (Temporary directory must be on same partition as target)
|
604
455
|
{
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
456
|
+
BOOL bret = CopyFile(src,dst);
|
457
|
+
if (bret == FALSE) return false;
|
458
|
+
|
459
|
+
struct stat info_file;
|
460
|
+
ret = stat(src,&info_file);
|
461
|
+
if (ret == 0) {
|
462
|
+
TRACEN((printf("##DBG chmod-1(%s,%o)\n",(const char *)dst,(unsigned)info_file.st_mode & gbl_umask.mask)))
|
463
|
+
ret = chmod(dst,info_file.st_mode & gbl_umask.mask);
|
464
|
+
}
|
465
|
+
if (ret == 0) {
|
466
|
+
ret = unlink(src);
|
467
|
+
}
|
468
|
+
if (ret == 0) return true;
|
613
469
|
}
|
614
|
-
|
615
|
-
if (pos < 0 || pos == 0)
|
616
|
-
return false;
|
617
|
-
if (pathName[pos - 1] == ':')
|
618
|
-
return false;
|
619
|
-
pathName = pathName.Left(pos);
|
620
|
-
}
|
621
|
-
pathName = pathName2;
|
622
|
-
while(pos < pathName.Length())
|
623
|
-
{
|
624
|
-
pos = pathName.Find(TEXT(CHAR_PATH_SEPARATOR), pos + 1);
|
625
|
-
if (pos < 0)
|
626
|
-
pos = pathName.Length();
|
627
|
-
if(!MyCreateDirectory(pathName.Left(pos)))
|
628
|
-
return false;
|
470
|
+
return false;
|
629
471
|
}
|
630
472
|
return true;
|
631
473
|
}
|
632
474
|
|
633
|
-
|
475
|
+
bool CreateDir(CFSTR path)
|
476
|
+
{
|
477
|
+
if (!path || !*path) {
|
478
|
+
SetLastError(ERROR_PATH_NOT_FOUND);
|
479
|
+
return false;
|
480
|
+
}
|
481
|
+
|
482
|
+
#ifdef _UNICODE
|
483
|
+
AString name = nameWindowToUnix2(path);
|
484
|
+
#else
|
485
|
+
const char * name = nameWindowToUnix(path);
|
486
|
+
#endif
|
487
|
+
bool bret = false;
|
488
|
+
if (mkdir( name, 0700 ) == 0) bret = true;
|
634
489
|
|
635
|
-
|
490
|
+
TRACEN((printf("CreateDir(%s)=%d\n",(const char *)name,(int)bret)))
|
491
|
+
return bret;
|
492
|
+
}
|
493
|
+
|
494
|
+
bool CreateComplexDir(CFSTR _aPathName)
|
636
495
|
{
|
637
|
-
|
638
|
-
|
639
|
-
|
496
|
+
AString name = nameWindowToUnix2(_aPathName);
|
497
|
+
TRACEN((printf("CreateComplexDir(%s)\n",(const char *)name)))
|
498
|
+
|
499
|
+
|
500
|
+
FString pathName = _aPathName;
|
501
|
+
int pos = pathName.ReverseFind(FCHAR_PATH_SEPARATOR);
|
502
|
+
if (pos > 0 && pos == pathName.Len() - 1)
|
640
503
|
{
|
641
|
-
if (pathName.
|
504
|
+
if (pathName.Len() == 3 && pathName[1] == L':')
|
642
505
|
return true; // Disk folder;
|
643
506
|
pathName.Delete(pos);
|
644
507
|
}
|
645
|
-
|
646
|
-
pos = pathName.
|
647
|
-
|
508
|
+
FString pathName2 = pathName;
|
509
|
+
pos = pathName.Len();
|
510
|
+
TRACEN((printf("CreateComplexDir(%s) pathName2=%ls\n",(const char *)name,(CFSTR)pathName2)))
|
511
|
+
for (;;)
|
648
512
|
{
|
649
|
-
if(
|
513
|
+
if (CreateDir(pathName))
|
650
514
|
break;
|
651
|
-
|
515
|
+
TRACEN((printf("CreateComplexDir(%s) GetLastError=%d (ERROR_ALREADY_EXISTS=%d)\n",(const char *)name,::GetLastError(), ERROR_ALREADY_EXISTS)))
|
516
|
+
if (::GetLastError() == ERROR_ALREADY_EXISTS)
|
652
517
|
{
|
653
518
|
#ifdef _WIN32 // FIXED for supporting symbolic link instead of a directory
|
654
|
-
NFind::
|
655
|
-
if (!
|
519
|
+
NFind::CFileInfo fileInfo;
|
520
|
+
if (!fileInfo.Find(pathName)) // For network folders
|
656
521
|
return true;
|
657
522
|
if (!fileInfo.IsDir())
|
658
523
|
return false;
|
659
524
|
#endif
|
660
525
|
break;
|
661
526
|
}
|
662
|
-
pos = pathName.ReverseFind(
|
527
|
+
pos = pathName.ReverseFind(FCHAR_PATH_SEPARATOR);
|
663
528
|
if (pos < 0 || pos == 0)
|
664
529
|
return false;
|
665
530
|
if (pathName[pos - 1] == L':')
|
@@ -667,20 +532,18 @@ bool CreateComplexDirectory(LPCWSTR _aPathName)
|
|
667
532
|
pathName = pathName.Left(pos);
|
668
533
|
}
|
669
534
|
pathName = pathName2;
|
670
|
-
while(pos < pathName.
|
535
|
+
while (pos < pathName.Len())
|
671
536
|
{
|
672
|
-
pos = pathName.Find(
|
537
|
+
pos = pathName.Find(FCHAR_PATH_SEPARATOR, pos + 1);
|
673
538
|
if (pos < 0)
|
674
|
-
pos = pathName.
|
675
|
-
if(!
|
539
|
+
pos = pathName.Len();
|
540
|
+
if (!CreateDir(pathName.Left(pos)))
|
676
541
|
return false;
|
677
542
|
}
|
678
543
|
return true;
|
679
544
|
}
|
680
545
|
|
681
|
-
|
682
|
-
|
683
|
-
bool DeleteFileAlways(LPCTSTR name)
|
546
|
+
bool DeleteFileAlways(CFSTR name)
|
684
547
|
{
|
685
548
|
if (!name || !*name) {
|
686
549
|
SetLastError(ERROR_PATH_NOT_FOUND);
|
@@ -693,235 +556,324 @@ bool DeleteFileAlways(LPCTSTR name)
|
|
693
556
|
#endif
|
694
557
|
bool bret = false;
|
695
558
|
if (remove(unixname) == 0) bret = true;
|
696
|
-
TRACEN((printf("DeleteFileAlways(%s)=%d\n",unixname,(int)bret)))
|
559
|
+
TRACEN((printf("DeleteFileAlways(%s)=%d\n",(const char *)unixname,(int)bret)))
|
697
560
|
return bret;
|
698
561
|
}
|
699
562
|
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
563
|
+
bool RemoveDirWithSubItems(const FString &path)
|
564
|
+
{
|
565
|
+
bool needRemoveSubItems = true;
|
566
|
+
{
|
567
|
+
NFind::CFileInfo fi;
|
568
|
+
if (!fi.Find(path))
|
569
|
+
return false;
|
570
|
+
if (!fi.IsDir())
|
571
|
+
{
|
572
|
+
::SetLastError(ERROR_DIRECTORY);
|
573
|
+
return false;
|
574
|
+
}
|
575
|
+
if (fi.HasReparsePoint())
|
576
|
+
needRemoveSubItems = false;
|
577
|
+
}
|
578
|
+
|
579
|
+
if (needRemoveSubItems)
|
580
|
+
{
|
581
|
+
FString s = path;
|
582
|
+
s += FCHAR_PATH_SEPARATOR;
|
583
|
+
unsigned prefixSize = s.Len();
|
584
|
+
s += FCHAR_ANY_MASK;
|
585
|
+
NFind::CEnumerator enumerator(s);
|
586
|
+
NFind::CFileInfo fi;
|
587
|
+
while (enumerator.Next(fi))
|
588
|
+
{
|
589
|
+
s.DeleteFrom(prefixSize);
|
590
|
+
s += fi.Name;
|
591
|
+
if (fi.IsDir())
|
592
|
+
{
|
593
|
+
if (!RemoveDirWithSubItems(s))
|
594
|
+
return false;
|
595
|
+
}
|
596
|
+
else if (!DeleteFileAlways(s))
|
597
|
+
return false;
|
598
|
+
}
|
599
|
+
}
|
600
|
+
|
601
|
+
if (!SetFileAttrib(path, 0))
|
602
|
+
return false;
|
603
|
+
return RemoveDir(path);
|
704
604
|
}
|
705
|
-
#endif
|
706
605
|
|
707
606
|
|
708
|
-
|
607
|
+
bool RemoveDirectoryWithSubItems(const FString &path); // FIXME
|
608
|
+
static bool RemoveDirectorySubItems2(const FString pathPrefix, const NFind::CFileInfo &fileInfo)
|
709
609
|
{
|
710
610
|
if (fileInfo.IsDir())
|
711
611
|
return RemoveDirectoryWithSubItems(pathPrefix + fileInfo.Name);
|
712
612
|
return DeleteFileAlways(pathPrefix + fileInfo.Name);
|
713
613
|
}
|
714
|
-
|
715
|
-
bool RemoveDirectoryWithSubItems(const UString &path)
|
614
|
+
bool RemoveDirectoryWithSubItems(const FString &path)
|
716
615
|
{
|
717
|
-
NFind::
|
718
|
-
|
616
|
+
NFind::CFileInfo fileInfo;
|
617
|
+
FString pathPrefix = path + FCHAR_PATH_SEPARATOR;
|
719
618
|
{
|
720
|
-
NFind::
|
619
|
+
NFind::CEnumerator enumerator(pathPrefix + FCHAR_ANY_MASK);
|
721
620
|
while (enumerator.Next(fileInfo))
|
722
621
|
if (!RemoveDirectorySubItems2(pathPrefix, fileInfo))
|
723
622
|
return false;
|
724
623
|
}
|
725
|
-
if (!
|
624
|
+
if (!SetFileAttrib(path, 0))
|
726
625
|
return false;
|
727
|
-
return
|
626
|
+
return RemoveDir(path);
|
728
627
|
}
|
729
628
|
|
730
|
-
#
|
629
|
+
#ifdef UNDER_CE
|
731
630
|
|
732
|
-
bool MyGetFullPathName(
|
733
|
-
int &fileNamePartStartIndex)
|
631
|
+
bool MyGetFullPathName(CFSTR fileName, FString &resFullPath)
|
734
632
|
{
|
735
|
-
|
736
|
-
LPTSTR buffer = resultPath.GetBuffer(MAX_PATH);
|
737
|
-
DWORD needLength = ::GetFullPathName(fileName, MAX_PATH + 1,
|
738
|
-
buffer, &fileNamePointer);
|
739
|
-
resultPath.ReleaseBuffer();
|
740
|
-
if (needLength == 0 || needLength >= MAX_PATH)
|
741
|
-
return false;
|
742
|
-
if (fileNamePointer == 0)
|
743
|
-
fileNamePartStartIndex = lstrlen(fileName);
|
744
|
-
else
|
745
|
-
fileNamePartStartIndex = fileNamePointer - buffer;
|
633
|
+
resFullPath = fileName;
|
746
634
|
return true;
|
747
635
|
}
|
748
636
|
|
749
|
-
#
|
750
|
-
|
751
|
-
|
637
|
+
#else
|
638
|
+
|
639
|
+
bool MyGetFullPathName(CFSTR path, FString &resFullPath)
|
752
640
|
{
|
753
|
-
|
754
|
-
CSysString sysPath;
|
755
|
-
if (!MyGetFullPathName(UnicodeStringToMultiByte(fileName,
|
756
|
-
currentPage), sysPath, fileNamePartStartIndex))
|
757
|
-
return false;
|
758
|
-
UString resultPath1 = MultiByteToUnicodeString(
|
759
|
-
sysPath.Left(fileNamePartStartIndex), currentPage);
|
760
|
-
UString resultPath2 = MultiByteToUnicodeString(
|
761
|
-
sysPath.Mid(fileNamePartStartIndex), currentPage);
|
762
|
-
fileNamePartStartIndex = resultPath1.Length();
|
763
|
-
resultPath = resultPath1 + resultPath2;
|
764
|
-
return true;
|
641
|
+
return GetFullPath(path, resFullPath);
|
765
642
|
}
|
766
|
-
#endif
|
767
|
-
|
768
643
|
|
769
|
-
bool
|
644
|
+
bool SetCurrentDir(CFSTR path)
|
770
645
|
{
|
771
|
-
|
772
|
-
|
646
|
+
AString apath = UnicodeStringToMultiByte(path);
|
647
|
+
|
648
|
+
return chdir((const char*)apath) == 0;
|
773
649
|
}
|
774
650
|
|
775
|
-
|
776
|
-
bool MyGetFullPathName(LPCWSTR fileName, UString &path)
|
651
|
+
bool GetCurrentDir(FString &path)
|
777
652
|
{
|
778
|
-
|
779
|
-
|
780
|
-
|
653
|
+
char begin[MAX_PATHNAME_LEN];
|
654
|
+
begin[0]='c';
|
655
|
+
begin[1]=':';
|
656
|
+
char * cret = getcwd(begin+2, MAX_PATHNAME_LEN - 3);
|
657
|
+
if (cret)
|
658
|
+
{
|
659
|
+
#ifdef _UNICODE
|
660
|
+
path = GetUnicodeString(begin);
|
661
|
+
#else
|
662
|
+
path = begin;
|
781
663
|
#endif
|
664
|
+
return true;
|
665
|
+
}
|
666
|
+
return false;
|
667
|
+
}
|
782
668
|
|
783
669
|
#endif
|
784
670
|
|
785
|
-
|
786
|
-
bool MySearchPath(LPCWSTR path, LPCWSTR fileName, LPCWSTR extension, UString &resultPath)
|
671
|
+
bool GetFullPathAndSplit(CFSTR path, FString &resDirPrefix, FString &resFileName)
|
787
672
|
{
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
exit(EXIT_FAILURE);
|
796
|
-
}
|
797
|
-
|
798
|
-
if (fileName == 0) {
|
799
|
-
printf("NOT EXPECTED : MySearchPath : fileName == NULL\n");
|
800
|
-
exit(EXIT_FAILURE);
|
801
|
-
}
|
802
|
-
|
803
|
-
const char *p7zip_home_dir = getenv("P7ZIP_HOME_DIR");
|
804
|
-
if (p7zip_home_dir) {
|
805
|
-
AString file_path = p7zip_home_dir;
|
806
|
-
file_path += UnicodeStringToMultiByte(fileName, CP_ACP);
|
807
|
-
|
808
|
-
TRACEN((printf("MySearchPath() fopen(%s)\n",(const char *)file_path)))
|
809
|
-
FILE *file = fopen((const char *)file_path,"r");
|
810
|
-
if (file) {
|
811
|
-
// file is found
|
812
|
-
fclose(file);
|
813
|
-
resultPath = MultiByteToUnicodeString(file_path, CP_ACP);
|
814
|
-
return true;
|
815
|
-
}
|
816
|
-
}
|
817
|
-
return false;
|
673
|
+
bool res = MyGetFullPathName(path, resDirPrefix);
|
674
|
+
if (!res)
|
675
|
+
resDirPrefix = path;
|
676
|
+
int pos = resDirPrefix.ReverseFind(FCHAR_PATH_SEPARATOR);
|
677
|
+
resFileName = resDirPrefix.Ptr(pos + 1);
|
678
|
+
resDirPrefix.DeleteFrom(pos + 1);
|
679
|
+
return res;
|
818
680
|
}
|
819
681
|
|
820
|
-
|
821
|
-
bool MyGetTempPath(CSysString &path)
|
682
|
+
bool GetOnlyDirPrefix(CFSTR path, FString &resDirPrefix)
|
822
683
|
{
|
823
|
-
|
824
|
-
return
|
684
|
+
FString resFileName;
|
685
|
+
return GetFullPathAndSplit(path, resDirPrefix, resFileName);
|
825
686
|
}
|
826
|
-
#endif
|
827
687
|
|
828
|
-
bool MyGetTempPath(
|
688
|
+
bool MyGetTempPath(FString &path)
|
829
689
|
{
|
830
690
|
path = L"c:/tmp/"; // final '/' is needed
|
831
691
|
return true;
|
832
692
|
}
|
833
693
|
|
834
|
-
static
|
835
|
-
|
836
|
-
static CSysString CSysConvertUInt32ToString(UInt32 value)
|
837
|
-
{
|
838
|
-
TCHAR buffer[32];
|
839
|
-
ConvertUInt32ToString(value, buffer);
|
840
|
-
return buffer;
|
841
|
-
}
|
842
|
-
|
843
|
-
UINT CTempFile::Create(LPCTSTR dirPath, LPCTSTR prefix, CSysString &resultPath)
|
694
|
+
static bool CreateTempFile(CFSTR prefix, bool addRandom, FString &path, NIO::COutFile *outFile)
|
844
695
|
{
|
696
|
+
#ifdef _WIN32
|
697
|
+
UInt32 d = (GetTickCount() << 12) ^ (GetCurrentThreadId() << 14) ^ GetCurrentProcessId();
|
698
|
+
#else
|
845
699
|
static UInt32 memo_count = 0;
|
846
700
|
UInt32 count;
|
847
701
|
|
848
702
|
g_CountCriticalSection.Enter();
|
849
703
|
count = memo_count++;
|
850
704
|
g_CountCriticalSection.Leave();
|
851
|
-
|
852
|
-
Remove();
|
853
|
-
/* UINT number = ::GetTempFileName(dirPath, prefix, 0, path.GetBuffer(MAX_PATH)); */
|
854
705
|
UINT number = (UINT)getpid();
|
855
706
|
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
707
|
+
UInt32 d = (GetTickCount() << 12) ^ (count << 14) ^ number;
|
708
|
+
#endif
|
709
|
+
for (unsigned i = 0; i < 100; i++)
|
710
|
+
{
|
711
|
+
path = prefix;
|
712
|
+
if (addRandom)
|
713
|
+
{
|
714
|
+
FChar s[16];
|
715
|
+
UInt32 value = d;
|
716
|
+
unsigned k;
|
717
|
+
for (k = 0; k < 8; k++)
|
718
|
+
{
|
719
|
+
unsigned t = value & 0xF;
|
720
|
+
value >>= 4;
|
721
|
+
s[k] = (char)((t < 10) ? ('0' + t) : ('A' + (t - 10)));
|
722
|
+
}
|
723
|
+
s[k] = '\0';
|
724
|
+
if (outFile)
|
725
|
+
path += FChar('.');
|
726
|
+
path += s;
|
727
|
+
UInt32 step = GetTickCount() + 2;
|
728
|
+
if (step == 0)
|
729
|
+
step = 1;
|
730
|
+
d += step;
|
731
|
+
}
|
732
|
+
addRandom = true;
|
733
|
+
if (outFile)
|
734
|
+
path += FTEXT(".tmp");
|
735
|
+
if (NFind::DoesFileOrDirExist(path))
|
736
|
+
{
|
737
|
+
SetLastError(ERROR_ALREADY_EXISTS);
|
738
|
+
continue;
|
739
|
+
}
|
740
|
+
if (outFile)
|
741
|
+
{
|
742
|
+
if (outFile->Create(path, false))
|
743
|
+
return true;
|
744
|
+
}
|
745
|
+
else
|
746
|
+
{
|
747
|
+
if (CreateDir(path))
|
748
|
+
return true;
|
749
|
+
}
|
750
|
+
DWORD error = GetLastError();
|
751
|
+
if (error != ERROR_FILE_EXISTS &&
|
752
|
+
error != ERROR_ALREADY_EXISTS)
|
753
|
+
break;
|
754
|
+
}
|
755
|
+
path.Empty();
|
756
|
+
return false;
|
757
|
+
}
|
758
|
+
|
759
|
+
bool CTempFile::Create(CFSTR prefix, NIO::COutFile *outFile)
|
760
|
+
{
|
761
|
+
if (!Remove())
|
762
|
+
return false;
|
763
|
+
if (!CreateTempFile(prefix, false, _path, outFile))
|
764
|
+
return false;
|
865
765
|
_mustBeDeleted = true;
|
866
|
-
|
867
|
-
return number;
|
766
|
+
return true;
|
868
767
|
}
|
869
768
|
|
870
|
-
bool CTempFile::
|
769
|
+
bool CTempFile::CreateRandomInTempFolder(CFSTR namePrefix, NIO::COutFile *outFile)
|
871
770
|
{
|
872
|
-
|
771
|
+
if (!Remove())
|
772
|
+
return false;
|
773
|
+
FString tempPath;
|
873
774
|
if (!MyGetTempPath(tempPath))
|
874
775
|
return false;
|
875
|
-
if (
|
876
|
-
return
|
877
|
-
|
776
|
+
if (!CreateTempFile(tempPath + namePrefix, true, _path, outFile))
|
777
|
+
return false;
|
778
|
+
_mustBeDeleted = true;
|
779
|
+
return true;
|
878
780
|
}
|
879
781
|
|
880
|
-
|
881
782
|
bool CTempFile::Remove()
|
882
783
|
{
|
883
784
|
if (!_mustBeDeleted)
|
884
785
|
return true;
|
885
|
-
_mustBeDeleted = !DeleteFileAlways(
|
786
|
+
_mustBeDeleted = !DeleteFileAlways(_path);
|
886
787
|
return !_mustBeDeleted;
|
887
788
|
}
|
888
789
|
|
889
|
-
bool
|
790
|
+
bool CTempFile::MoveTo(CFSTR name, bool deleteDestBefore)
|
890
791
|
{
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
random.Init();
|
895
|
-
*/
|
896
|
-
for (;;)
|
897
|
-
{
|
898
|
-
{
|
899
|
-
CTempFileW tempFile;
|
900
|
-
if (!tempFile.Create(prefix, dirName))
|
792
|
+
if (deleteDestBefore)
|
793
|
+
if (NFind::DoesFileExist(name))
|
794
|
+
if (!DeleteFileAlways(name))
|
901
795
|
return false;
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
796
|
+
DisableDeleting();
|
797
|
+
return MyMoveFile(_path, name);
|
798
|
+
}
|
799
|
+
|
800
|
+
bool CTempDir::Create(CFSTR prefix)
|
801
|
+
{
|
802
|
+
if (!Remove())
|
803
|
+
return false;
|
804
|
+
FString tempPath;
|
805
|
+
if (!MyGetTempPath(tempPath))
|
806
|
+
return false;
|
807
|
+
if (!CreateTempFile(tempPath + prefix, true, _path, NULL))
|
808
|
+
return false;
|
809
|
+
_mustBeDeleted = true;
|
810
|
+
return true;
|
811
|
+
}
|
812
|
+
|
813
|
+
bool CTempDir::Remove()
|
814
|
+
{
|
815
|
+
if (!_mustBeDeleted)
|
816
|
+
return true;
|
817
|
+
_mustBeDeleted = !RemoveDirectoryWithSubItems(_path);
|
818
|
+
return !_mustBeDeleted;
|
819
|
+
}
|
820
|
+
|
821
|
+
#ifdef ENV_UNIX
|
822
|
+
|
823
|
+
CDelayedSymLink::CDelayedSymLink(const char * source)
|
824
|
+
: _source(source)
|
825
|
+
{
|
826
|
+
struct stat st;
|
827
|
+
|
828
|
+
if (lstat(_source, &st) == 0) {
|
829
|
+
_dev = st.st_dev;
|
830
|
+
_ino = st.st_ino;
|
831
|
+
} else {
|
832
|
+
_dev = 0;
|
917
833
|
}
|
918
834
|
}
|
919
835
|
|
920
|
-
bool
|
836
|
+
bool CDelayedSymLink::Create()
|
921
837
|
{
|
922
|
-
|
923
|
-
|
838
|
+
struct stat st;
|
839
|
+
|
840
|
+
if (_dev == 0) {
|
841
|
+
errno = EPERM;
|
842
|
+
return false;
|
843
|
+
}
|
844
|
+
if (lstat(_source, &st) != 0)
|
845
|
+
return false;
|
846
|
+
if (_dev != st.st_dev || _ino != st.st_ino) {
|
847
|
+
// Placeholder file has been overwritten or moved by another
|
848
|
+
// symbolic link creation
|
849
|
+
errno = EPERM;
|
850
|
+
return false;
|
851
|
+
}
|
852
|
+
|
853
|
+
return convert_to_symlink(_source) == 0;
|
924
854
|
}
|
925
855
|
|
856
|
+
#endif // ENV_UNIX
|
926
857
|
|
927
858
|
}}}
|
859
|
+
|
860
|
+
#ifndef _SFX
|
861
|
+
|
862
|
+
namespace NWindows {
|
863
|
+
namespace NDLL {
|
864
|
+
|
865
|
+
FString GetModuleDirPrefix()
|
866
|
+
{
|
867
|
+
FString s;
|
868
|
+
|
869
|
+
const char *p7zip_home_dir = getenv("P7ZIP_HOME_DIR");
|
870
|
+
if (p7zip_home_dir) {
|
871
|
+
return MultiByteToUnicodeString(p7zip_home_dir,CP_ACP);
|
872
|
+
}
|
873
|
+
|
874
|
+
return FTEXT(".") FSTRING_PATH_SEPARATOR;
|
875
|
+
}
|
876
|
+
|
877
|
+
}}
|
878
|
+
|
879
|
+
#endif
|