hane 1.1.1 → 1.2.0
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.
- package/README.md +32 -32
- package/binding.gyp +50 -50
- package/deps/win-nodeapi/node_api.def +158 -158
- package/package.json +34 -34
- package/src/native/addon.cc +183 -183
- package/src/native/zsign_driver.cc +86 -86
- package/src/native/zsign_driver.h +38 -38
- package/vendor/zlib/.cmake-format.yaml +245 -245
- package/vendor/zlib/.github/workflows/c-std.yml +230 -230
- package/vendor/zlib/.github/workflows/cmake.yml +112 -112
- package/vendor/zlib/.github/workflows/configure.yml +136 -136
- package/vendor/zlib/.github/workflows/fuzz.yml +25 -25
- package/vendor/zlib/.github/workflows/msys-cygwin.yml +77 -77
- package/vendor/zlib/BUILD.bazel +134 -134
- package/vendor/zlib/CMakeLists.txt +330 -330
- package/vendor/zlib/ChangeLog +1621 -1621
- package/vendor/zlib/FAQ +367 -367
- package/vendor/zlib/INDEX +68 -68
- package/vendor/zlib/LICENSE +22 -22
- package/vendor/zlib/MODULE.bazel +9 -9
- package/vendor/zlib/Makefile.in +419 -419
- package/vendor/zlib/README +115 -115
- package/vendor/zlib/README-cmake.md +83 -83
- package/vendor/zlib/adler32.c +164 -164
- package/vendor/zlib/amiga/Makefile.pup +69 -69
- package/vendor/zlib/amiga/Makefile.sas +68 -68
- package/vendor/zlib/compress.c +75 -75
- package/vendor/zlib/configure +966 -966
- package/vendor/zlib/contrib/README.contrib +57 -57
- package/vendor/zlib/contrib/ada/buffer_demo.adb +106 -106
- package/vendor/zlib/contrib/ada/mtest.adb +156 -156
- package/vendor/zlib/contrib/ada/read.adb +156 -156
- package/vendor/zlib/contrib/ada/readme.txt +65 -65
- package/vendor/zlib/contrib/ada/test.adb +463 -463
- package/vendor/zlib/contrib/ada/zlib-streams.adb +225 -225
- package/vendor/zlib/contrib/ada/zlib-streams.ads +114 -114
- package/vendor/zlib/contrib/ada/zlib-thin.adb +142 -142
- package/vendor/zlib/contrib/ada/zlib-thin.ads +450 -450
- package/vendor/zlib/contrib/ada/zlib.adb +701 -701
- package/vendor/zlib/contrib/ada/zlib.ads +328 -328
- package/vendor/zlib/contrib/ada/zlib.gpr +20 -20
- package/vendor/zlib/contrib/blast/Makefile +8 -8
- package/vendor/zlib/contrib/blast/README +4 -4
- package/vendor/zlib/contrib/blast/blast.c +466 -466
- package/vendor/zlib/contrib/blast/blast.h +83 -83
- package/vendor/zlib/contrib/delphi/ZLib.pas +557 -557
- package/vendor/zlib/contrib/delphi/ZLibConst.pas +11 -11
- package/vendor/zlib/contrib/delphi/readme.txt +76 -76
- package/vendor/zlib/contrib/delphi/zlibd32.mak +99 -99
- package/vendor/zlib/contrib/gcc_gvmat64/gvmat64.S +574 -574
- package/vendor/zlib/contrib/infback9/README +1 -1
- package/vendor/zlib/contrib/infback9/infback9.c +603 -603
- package/vendor/zlib/contrib/infback9/infback9.h +37 -37
- package/vendor/zlib/contrib/infback9/inffix9.h +107 -107
- package/vendor/zlib/contrib/infback9/inflate9.h +47 -47
- package/vendor/zlib/contrib/infback9/inftree9.c +319 -319
- package/vendor/zlib/contrib/infback9/inftree9.h +61 -61
- package/vendor/zlib/contrib/iostream/test.cpp +24 -24
- package/vendor/zlib/contrib/iostream/zfstream.cpp +329 -329
- package/vendor/zlib/contrib/iostream/zfstream.h +128 -128
- package/vendor/zlib/contrib/iostream2/zstream.h +307 -307
- package/vendor/zlib/contrib/iostream2/zstream_test.cpp +25 -25
- package/vendor/zlib/contrib/iostream3/README +35 -35
- package/vendor/zlib/contrib/iostream3/TODO +17 -17
- package/vendor/zlib/contrib/iostream3/test.cc +50 -50
- package/vendor/zlib/contrib/iostream3/zfstream.cc +479 -479
- package/vendor/zlib/contrib/iostream3/zfstream.h +466 -466
- package/vendor/zlib/contrib/minizip/CMakeLists.txt +380 -380
- package/vendor/zlib/contrib/minizip/Makefile +37 -37
- package/vendor/zlib/contrib/minizip/Makefile.am +45 -45
- package/vendor/zlib/contrib/minizip/MiniZip64_Changes.txt +6 -6
- package/vendor/zlib/contrib/minizip/MiniZip64_info.txt +74 -74
- package/vendor/zlib/contrib/minizip/configure.ac +32 -32
- package/vendor/zlib/contrib/minizip/crypt.h +128 -128
- package/vendor/zlib/contrib/minizip/ints.h +57 -57
- package/vendor/zlib/contrib/minizip/ioapi.c +231 -231
- package/vendor/zlib/contrib/minizip/ioapi.h +183 -183
- package/vendor/zlib/contrib/minizip/iowin32.c +448 -448
- package/vendor/zlib/contrib/minizip/iowin32.h +28 -28
- package/vendor/zlib/contrib/minizip/make_vms.com +25 -25
- package/vendor/zlib/contrib/minizip/miniunz.c +647 -647
- package/vendor/zlib/contrib/minizip/miniunzip.1 +63 -63
- package/vendor/zlib/contrib/minizip/minizip.1 +46 -46
- package/vendor/zlib/contrib/minizip/minizip.c +512 -512
- package/vendor/zlib/contrib/minizip/minizip.pc.in +12 -12
- package/vendor/zlib/contrib/minizip/minizip.pc.txt +13 -13
- package/vendor/zlib/contrib/minizip/minizipConfig.cmake.in +35 -35
- package/vendor/zlib/contrib/minizip/mztools.c +288 -288
- package/vendor/zlib/contrib/minizip/mztools.h +37 -37
- package/vendor/zlib/contrib/minizip/skipset.h +361 -361
- package/vendor/zlib/contrib/minizip/test/CMakeLists.txt +121 -121
- package/vendor/zlib/contrib/minizip/test/add_subdirectory_exclude_test.cmake.in +29 -29
- package/vendor/zlib/contrib/minizip/test/add_subdirectory_test.cmake.in +28 -28
- package/vendor/zlib/contrib/minizip/test/find_package_test.cmake.in +25 -25
- package/vendor/zlib/contrib/minizip/test/test_helper.cm +32 -32
- package/vendor/zlib/contrib/minizip/unzip.c +1981 -1981
- package/vendor/zlib/contrib/minizip/unzip.h +441 -441
- package/vendor/zlib/contrib/minizip/zip.c +2199 -2199
- package/vendor/zlib/contrib/minizip/zip.h +370 -370
- package/vendor/zlib/contrib/nuget/nuget.csproj +43 -43
- package/vendor/zlib/contrib/nuget/nuget.sln +22 -22
- package/vendor/zlib/contrib/pascal/example.pas +599 -599
- package/vendor/zlib/contrib/pascal/readme.txt +76 -76
- package/vendor/zlib/contrib/pascal/zlibd32.mak +99 -99
- package/vendor/zlib/contrib/pascal/zlibpas.pas +276 -276
- package/vendor/zlib/contrib/puff/Makefile +42 -42
- package/vendor/zlib/contrib/puff/README +63 -63
- package/vendor/zlib/contrib/puff/puff.c +840 -840
- package/vendor/zlib/contrib/puff/puff.h +35 -35
- package/vendor/zlib/contrib/puff/pufftest.c +169 -169
- package/vendor/zlib/contrib/untgz/Makefile +14 -14
- package/vendor/zlib/contrib/untgz/Makefile.msc +17 -17
- package/vendor/zlib/contrib/untgz/untgz.c +667 -667
- package/vendor/zlib/contrib/vstudio/readme.txt +81 -81
- package/vendor/zlib/contrib/vstudio/vc12/miniunz.vcxproj +315 -315
- package/vendor/zlib/contrib/vstudio/vc12/minizip.vcxproj +312 -312
- package/vendor/zlib/contrib/vstudio/vc12/testzlib.vcxproj +421 -421
- package/vendor/zlib/contrib/vstudio/vc12/testzlibdll.vcxproj +315 -315
- package/vendor/zlib/contrib/vstudio/vc12/zlib.rc +32 -32
- package/vendor/zlib/contrib/vstudio/vc12/zlibstat.vcxproj +458 -458
- package/vendor/zlib/contrib/vstudio/vc12/zlibvc.sln +119 -119
- package/vendor/zlib/contrib/vstudio/vc12/zlibvc.vcxproj +667 -667
- package/vendor/zlib/contrib/vstudio/vc14/miniunz.vcxproj +315 -315
- package/vendor/zlib/contrib/vstudio/vc14/minizip.vcxproj +312 -312
- package/vendor/zlib/contrib/vstudio/vc14/testzlib.vcxproj +421 -421
- package/vendor/zlib/contrib/vstudio/vc14/testzlibdll.vcxproj +315 -315
- package/vendor/zlib/contrib/vstudio/vc14/zlib.rc +32 -32
- package/vendor/zlib/contrib/vstudio/vc14/zlibstat.vcxproj +458 -458
- package/vendor/zlib/contrib/vstudio/vc14/zlibvc.sln +119 -119
- package/vendor/zlib/contrib/vstudio/vc14/zlibvc.vcxproj +667 -667
- package/vendor/zlib/contrib/vstudio/vc17/miniunz.vcxproj +408 -408
- package/vendor/zlib/contrib/vstudio/vc17/minizip.vcxproj +404 -404
- package/vendor/zlib/contrib/vstudio/vc17/testzlib.vcxproj +472 -472
- package/vendor/zlib/contrib/vstudio/vc17/testzlibdll.vcxproj +408 -408
- package/vendor/zlib/contrib/vstudio/vc17/zlib.rc +32 -32
- package/vendor/zlib/contrib/vstudio/vc17/zlibstat.vcxproj +601 -601
- package/vendor/zlib/contrib/vstudio/vc17/zlibvc.sln +179 -179
- package/vendor/zlib/contrib/vstudio/vc17/zlibvc.vcxproj +874 -874
- package/vendor/zlib/crc32.c +1049 -1049
- package/vendor/zlib/crc32.h +9446 -9446
- package/vendor/zlib/deflate.c +2152 -2152
- package/vendor/zlib/deflate.h +380 -380
- package/vendor/zlib/doc/algorithm.txt +209 -209
- package/vendor/zlib/doc/rfc1950.txt +619 -619
- package/vendor/zlib/doc/rfc1951.txt +955 -955
- package/vendor/zlib/doc/rfc1952.txt +675 -675
- package/vendor/zlib/doc/txtvsbin.txt +107 -107
- package/vendor/zlib/examples/README.examples +54 -54
- package/vendor/zlib/examples/enough.c +597 -597
- package/vendor/zlib/examples/fitblk.c +233 -233
- package/vendor/zlib/examples/gun.c +702 -702
- package/vendor/zlib/examples/gzappend.c +504 -504
- package/vendor/zlib/examples/gzjoin.c +449 -449
- package/vendor/zlib/examples/gzlog.c +1061 -1061
- package/vendor/zlib/examples/gzlog.h +91 -91
- package/vendor/zlib/examples/gznorm.c +474 -474
- package/vendor/zlib/examples/zlib_how.html +549 -549
- package/vendor/zlib/examples/zpipe.c +209 -209
- package/vendor/zlib/examples/zran.c +550 -550
- package/vendor/zlib/examples/zran.h +53 -53
- package/vendor/zlib/gzclose.c +23 -23
- package/vendor/zlib/gzguts.h +215 -215
- package/vendor/zlib/gzlib.c +585 -585
- package/vendor/zlib/gzread.c +603 -603
- package/vendor/zlib/gzwrite.c +631 -631
- package/vendor/zlib/infback.c +628 -628
- package/vendor/zlib/inffast.c +320 -320
- package/vendor/zlib/inffast.h +11 -11
- package/vendor/zlib/inffixed.h +94 -94
- package/vendor/zlib/inflate.c +1526 -1526
- package/vendor/zlib/inflate.h +126 -126
- package/vendor/zlib/inftrees.c +299 -299
- package/vendor/zlib/inftrees.h +62 -62
- package/vendor/zlib/make_vms.com +867 -867
- package/vendor/zlib/msdos/Makefile.bor +115 -115
- package/vendor/zlib/msdos/Makefile.dj2 +104 -104
- package/vendor/zlib/msdos/Makefile.emx +69 -69
- package/vendor/zlib/msdos/Makefile.msc +112 -112
- package/vendor/zlib/msdos/Makefile.tc +100 -100
- package/vendor/zlib/nintendods/Makefile +126 -126
- package/vendor/zlib/nintendods/README +5 -5
- package/vendor/zlib/old/Makefile.emx +69 -69
- package/vendor/zlib/old/Makefile.riscos +151 -151
- package/vendor/zlib/old/README +3 -3
- package/vendor/zlib/old/descrip.mms +48 -48
- package/vendor/zlib/old/os2/Makefile.os2 +136 -136
- package/vendor/zlib/old/os2/zlib.def +51 -51
- package/vendor/zlib/old/visual-basic.txt +160 -160
- package/vendor/zlib/os400/README400 +48 -48
- package/vendor/zlib/os400/bndsrc +133 -133
- package/vendor/zlib/os400/make.sh +366 -366
- package/vendor/zlib/os400/zlib.inc +531 -531
- package/vendor/zlib/qnx/package.qpg +141 -141
- package/vendor/zlib/test/CMakeLists.txt +265 -265
- package/vendor/zlib/test/add_subdirectory_exclude_test.cmake.in +29 -29
- package/vendor/zlib/test/add_subdirectory_test.cmake.in +28 -28
- package/vendor/zlib/test/example.c +552 -552
- package/vendor/zlib/test/find_package_test.cmake.in +26 -26
- package/vendor/zlib/test/infcover.c +672 -672
- package/vendor/zlib/test/minigzip.c +590 -590
- package/vendor/zlib/treebuild.xml +116 -116
- package/vendor/zlib/trees.c +1119 -1119
- package/vendor/zlib/trees.h +128 -128
- package/vendor/zlib/uncompr.c +85 -85
- package/vendor/zlib/watcom/watcom_f.mak +43 -43
- package/vendor/zlib/watcom/watcom_l.mak +43 -43
- package/vendor/zlib/win32/DLL_FAQ.txt +381 -381
- package/vendor/zlib/win32/Makefile.bor +109 -109
- package/vendor/zlib/win32/Makefile.gcc +177 -177
- package/vendor/zlib/win32/Makefile.msc +159 -159
- package/vendor/zlib/win32/README-WIN32.txt +103 -103
- package/vendor/zlib/win32/VisualC.txt +3 -3
- package/vendor/zlib/win32/zlib1.rc +37 -37
- package/vendor/zlib/zconf.h.in +544 -544
- package/vendor/zlib/zlib.3 +149 -149
- package/vendor/zlib/zlib.h +1957 -1957
- package/vendor/zlib/zlib.map +103 -103
- package/vendor/zlib/zlib.pc.cmakein +13 -13
- package/vendor/zlib/zlib.pc.in +13 -13
- package/vendor/zlib/zlibConfig.cmake.in +26 -26
- package/vendor/zlib/zutil.c +299 -299
- package/vendor/zlib/zutil.h +257 -257
- package/vendor/zsign/.gitattributes +3 -3
- package/vendor/zsign/LICENSE +20 -20
- package/vendor/zsign/README.md +142 -142
- package/vendor/zsign/build/linux/Makefile +43 -43
- package/vendor/zsign/build/macos/Makefile +43 -43
- package/vendor/zsign/build/windows/vs2022/include/minizip/crypt.h +128 -128
- package/vendor/zsign/build/windows/vs2022/include/minizip/ioapi.h +216 -216
- package/vendor/zsign/build/windows/vs2022/include/minizip/iowin32.h +28 -28
- package/vendor/zsign/build/windows/vs2022/include/minizip/mztools.h +37 -37
- package/vendor/zsign/build/windows/vs2022/include/minizip/unzip.h +437 -437
- package/vendor/zsign/build/windows/vs2022/include/minizip/zip.h +364 -364
- package/vendor/zsign/build/windows/vs2022/include/openssl/__DECC_INCLUDE_EPILOGUE.H +22 -22
- package/vendor/zsign/build/windows/vs2022/include/openssl/__DECC_INCLUDE_PROLOGUE.H +26 -26
- package/vendor/zsign/build/windows/vs2022/include/openssl/aes.h +111 -111
- package/vendor/zsign/build/windows/vs2022/include/openssl/applink.c +153 -153
- package/vendor/zsign/build/windows/vs2022/include/openssl/asn1_mac.h +10 -10
- package/vendor/zsign/build/windows/vs2022/include/openssl/asn1err.h +142 -142
- package/vendor/zsign/build/windows/vs2022/include/openssl/async.h +104 -104
- package/vendor/zsign/build/windows/vs2022/include/openssl/asyncerr.h +29 -29
- package/vendor/zsign/build/windows/vs2022/include/openssl/bioerr.h +72 -72
- package/vendor/zsign/build/windows/vs2022/include/openssl/blowfish.h +78 -78
- package/vendor/zsign/build/windows/vs2022/include/openssl/bn.h +590 -590
- package/vendor/zsign/build/windows/vs2022/include/openssl/bnerr.h +47 -47
- package/vendor/zsign/build/windows/vs2022/include/openssl/buffer.h +62 -62
- package/vendor/zsign/build/windows/vs2022/include/openssl/buffererr.h +25 -25
- package/vendor/zsign/build/windows/vs2022/include/openssl/camellia.h +117 -117
- package/vendor/zsign/build/windows/vs2022/include/openssl/cast.h +71 -71
- package/vendor/zsign/build/windows/vs2022/include/openssl/cmac.h +52 -52
- package/vendor/zsign/build/windows/vs2022/include/openssl/cmp_util.h +56 -56
- package/vendor/zsign/build/windows/vs2022/include/openssl/cmperr.h +131 -131
- package/vendor/zsign/build/windows/vs2022/include/openssl/cmserr.h +125 -125
- package/vendor/zsign/build/windows/vs2022/include/openssl/comperr.h +38 -38
- package/vendor/zsign/build/windows/vs2022/include/openssl/conf_api.h +46 -46
- package/vendor/zsign/build/windows/vs2022/include/openssl/conferr.h +52 -52
- package/vendor/zsign/build/windows/vs2022/include/openssl/conftypes.h +44 -44
- package/vendor/zsign/build/windows/vs2022/include/openssl/core.h +236 -236
- package/vendor/zsign/build/windows/vs2022/include/openssl/core_dispatch.h +1022 -1022
- package/vendor/zsign/build/windows/vs2022/include/openssl/core_object.h +41 -41
- package/vendor/zsign/build/windows/vs2022/include/openssl/crmferr.h +50 -50
- package/vendor/zsign/build/windows/vs2022/include/openssl/cryptoerr.h +56 -56
- package/vendor/zsign/build/windows/vs2022/include/openssl/cryptoerr_legacy.h +1466 -1466
- package/vendor/zsign/build/windows/vs2022/include/openssl/cterr.h +45 -45
- package/vendor/zsign/build/windows/vs2022/include/openssl/decoder.h +133 -133
- package/vendor/zsign/build/windows/vs2022/include/openssl/decodererr.h +28 -28
- package/vendor/zsign/build/windows/vs2022/include/openssl/des.h +211 -211
- package/vendor/zsign/build/windows/vs2022/include/openssl/dh.h +339 -339
- package/vendor/zsign/build/windows/vs2022/include/openssl/dherr.h +59 -59
- package/vendor/zsign/build/windows/vs2022/include/openssl/dsa.h +280 -280
- package/vendor/zsign/build/windows/vs2022/include/openssl/dsaerr.h +44 -44
- package/vendor/zsign/build/windows/vs2022/include/openssl/dtls1.h +57 -57
- package/vendor/zsign/build/windows/vs2022/include/openssl/e_os2.h +310 -310
- package/vendor/zsign/build/windows/vs2022/include/openssl/e_ostime.h +38 -38
- package/vendor/zsign/build/windows/vs2022/include/openssl/ebcdic.h +39 -39
- package/vendor/zsign/build/windows/vs2022/include/openssl/ec.h +1588 -1588
- package/vendor/zsign/build/windows/vs2022/include/openssl/ecdh.h +10 -10
- package/vendor/zsign/build/windows/vs2022/include/openssl/ecdsa.h +10 -10
- package/vendor/zsign/build/windows/vs2022/include/openssl/ecerr.h +104 -104
- package/vendor/zsign/build/windows/vs2022/include/openssl/encoder.h +124 -124
- package/vendor/zsign/build/windows/vs2022/include/openssl/encodererr.h +28 -28
- package/vendor/zsign/build/windows/vs2022/include/openssl/engine.h +833 -833
- package/vendor/zsign/build/windows/vs2022/include/openssl/engineerr.h +63 -63
- package/vendor/zsign/build/windows/vs2022/include/openssl/esserr.h +32 -32
- package/vendor/zsign/build/windows/vs2022/include/openssl/evp.h +2231 -2231
- package/vendor/zsign/build/windows/vs2022/include/openssl/evperr.h +140 -140
- package/vendor/zsign/build/windows/vs2022/include/openssl/fips_names.h +50 -50
- package/vendor/zsign/build/windows/vs2022/include/openssl/hmac.h +62 -62
- package/vendor/zsign/build/windows/vs2022/include/openssl/hpke.h +169 -169
- package/vendor/zsign/build/windows/vs2022/include/openssl/http.h +118 -118
- package/vendor/zsign/build/windows/vs2022/include/openssl/httperr.h +56 -56
- package/vendor/zsign/build/windows/vs2022/include/openssl/idea.h +82 -82
- package/vendor/zsign/build/windows/vs2022/include/openssl/indicator.h +31 -31
- package/vendor/zsign/build/windows/vs2022/include/openssl/kdf.h +138 -138
- package/vendor/zsign/build/windows/vs2022/include/openssl/kdferr.h +16 -16
- package/vendor/zsign/build/windows/vs2022/include/openssl/macros.h +338 -338
- package/vendor/zsign/build/windows/vs2022/include/openssl/md2.h +56 -56
- package/vendor/zsign/build/windows/vs2022/include/openssl/md4.h +63 -63
- package/vendor/zsign/build/windows/vs2022/include/openssl/md5.h +62 -62
- package/vendor/zsign/build/windows/vs2022/include/openssl/mdc2.h +55 -55
- package/vendor/zsign/build/windows/vs2022/include/openssl/modes.h +219 -219
- package/vendor/zsign/build/windows/vs2022/include/openssl/obj_mac.h +5820 -5820
- package/vendor/zsign/build/windows/vs2022/include/openssl/objects.h +184 -184
- package/vendor/zsign/build/windows/vs2022/include/openssl/objectserr.h +28 -28
- package/vendor/zsign/build/windows/vs2022/include/openssl/ocsperr.h +53 -53
- package/vendor/zsign/build/windows/vs2022/include/openssl/opensslconf.h +17 -17
- package/vendor/zsign/build/windows/vs2022/include/openssl/ossl_typ.h +16 -16
- package/vendor/zsign/build/windows/vs2022/include/openssl/param_build.h +63 -63
- package/vendor/zsign/build/windows/vs2022/include/openssl/params.h +160 -160
- package/vendor/zsign/build/windows/vs2022/include/openssl/pem.h +543 -543
- package/vendor/zsign/build/windows/vs2022/include/openssl/pem2.h +19 -19
- package/vendor/zsign/build/windows/vs2022/include/openssl/pemerr.h +58 -58
- package/vendor/zsign/build/windows/vs2022/include/openssl/pkcs12err.h +46 -46
- package/vendor/zsign/build/windows/vs2022/include/openssl/pkcs7err.h +63 -63
- package/vendor/zsign/build/windows/vs2022/include/openssl/prov_ssl.h +38 -38
- package/vendor/zsign/build/windows/vs2022/include/openssl/proverr.h +162 -162
- package/vendor/zsign/build/windows/vs2022/include/openssl/provider.h +66 -66
- package/vendor/zsign/build/windows/vs2022/include/openssl/quic.h +70 -70
- package/vendor/zsign/build/windows/vs2022/include/openssl/rand.h +125 -125
- package/vendor/zsign/build/windows/vs2022/include/openssl/randerr.h +69 -69
- package/vendor/zsign/build/windows/vs2022/include/openssl/rc2.h +68 -68
- package/vendor/zsign/build/windows/vs2022/include/openssl/rc4.h +47 -47
- package/vendor/zsign/build/windows/vs2022/include/openssl/rc5.h +79 -79
- package/vendor/zsign/build/windows/vs2022/include/openssl/ripemd.h +59 -59
- package/vendor/zsign/build/windows/vs2022/include/openssl/rsa.h +615 -615
- package/vendor/zsign/build/windows/vs2022/include/openssl/rsaerr.h +107 -107
- package/vendor/zsign/build/windows/vs2022/include/openssl/seed.h +113 -113
- package/vendor/zsign/build/windows/vs2022/include/openssl/self_test.h +98 -98
- package/vendor/zsign/build/windows/vs2022/include/openssl/sha.h +139 -139
- package/vendor/zsign/build/windows/vs2022/include/openssl/srtp.h +68 -68
- package/vendor/zsign/build/windows/vs2022/include/openssl/ssl2.h +30 -30
- package/vendor/zsign/build/windows/vs2022/include/openssl/ssl3.h +357 -357
- package/vendor/zsign/build/windows/vs2022/include/openssl/sslerr.h +379 -379
- package/vendor/zsign/build/windows/vs2022/include/openssl/sslerr_legacy.h +467 -467
- package/vendor/zsign/build/windows/vs2022/include/openssl/stack.h +90 -90
- package/vendor/zsign/build/windows/vs2022/include/openssl/store.h +377 -377
- package/vendor/zsign/build/windows/vs2022/include/openssl/storeerr.h +49 -49
- package/vendor/zsign/build/windows/vs2022/include/openssl/symhacks.h +39 -39
- package/vendor/zsign/build/windows/vs2022/include/openssl/thread.h +31 -31
- package/vendor/zsign/build/windows/vs2022/include/openssl/tls1.h +1220 -1220
- package/vendor/zsign/build/windows/vs2022/include/openssl/trace.h +320 -320
- package/vendor/zsign/build/windows/vs2022/include/openssl/ts.h +522 -522
- package/vendor/zsign/build/windows/vs2022/include/openssl/tserr.h +67 -67
- package/vendor/zsign/build/windows/vs2022/include/openssl/txt_db.h +63 -63
- package/vendor/zsign/build/windows/vs2022/include/openssl/types.h +245 -245
- package/vendor/zsign/build/windows/vs2022/include/openssl/uierr.h +38 -38
- package/vendor/zsign/build/windows/vs2022/include/openssl/whrlpool.h +62 -62
- package/vendor/zsign/build/windows/vs2022/include/openssl/x509err.h +70 -70
- package/vendor/zsign/build/windows/vs2022/include/openssl/x509v3err.h +96 -96
- package/vendor/zsign/src/archo.cpp +742 -742
- package/vendor/zsign/src/archo.h +61 -61
- package/vendor/zsign/src/bundle.cpp +589 -589
- package/vendor/zsign/src/bundle.h +46 -46
- package/vendor/zsign/src/common/archive.cpp +246 -246
- package/vendor/zsign/src/common/archive.h +22 -22
- package/vendor/zsign/src/common/common.h +56 -56
- package/vendor/zsign/src/common/fs.cpp +573 -573
- package/vendor/zsign/src/common/fs.h +50 -50
- package/vendor/zsign/src/common/log.cpp +145 -145
- package/vendor/zsign/src/common/log.h +37 -37
- package/vendor/zsign/src/common/mach-o.h +585 -585
- package/vendor/zsign/src/common/sha.cpp +133 -133
- package/vendor/zsign/src/common/sha.h +24 -24
- package/vendor/zsign/src/common/timer.cpp +28 -28
- package/vendor/zsign/src/common/timer.h +17 -17
- package/vendor/zsign/src/common/util.cpp +185 -185
- package/vendor/zsign/src/common/util.h +25 -25
- package/vendor/zsign/src/macho.cpp +273 -273
- package/vendor/zsign/src/macho.h +38 -38
- package/vendor/zsign/src/openssl.cpp +698 -698
- package/vendor/zsign/src/openssl.h +71 -71
- package/vendor/zsign/src/signing.cpp +745 -745
- package/vendor/zsign/src/signing.h +59 -59
- package/vendor/zsign/src/zsign.cpp +317 -317
- package/vendor/zsign/test/dylib/demo/Makefile +12 -12
- package/vendor/zsign/test/dylib/demo/control +9 -9
- package/vendor/zsign/test/dylib/demo/demo.m +21 -21
- package/vendor/zsign/test/linux/test.sh +19 -19
- package/vendor/zsign/test/macos/test.sh +19 -19
|
@@ -1,590 +1,590 @@
|
|
|
1
|
-
/* minigzip.c -- simulate gzip using the zlib compression library
|
|
2
|
-
* Copyright (C) 1995-2006, 2010, 2011, 2016 Jean-loup Gailly
|
|
3
|
-
* For conditions of distribution and use, see copyright notice in zlib.h
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/*
|
|
7
|
-
* minigzip is a minimal implementation of the gzip utility. This is
|
|
8
|
-
* only an example of using zlib and isn't meant to replace the
|
|
9
|
-
* full-featured gzip. No attempt is made to deal with file systems
|
|
10
|
-
* limiting names to 14 or 8+3 characters, etc... Error checking is
|
|
11
|
-
* very limited. So use minigzip only for testing; use gzip for the
|
|
12
|
-
* real thing. On MSDOS, use only on file names without extension
|
|
13
|
-
* or in pipe mode.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/* @(#) $Id$ */
|
|
17
|
-
|
|
18
|
-
#ifndef _POSIX_C_SOURCE
|
|
19
|
-
# define _POSIX_C_SOURCE 200112L
|
|
20
|
-
#endif
|
|
21
|
-
|
|
22
|
-
#if defined(_WIN32) && !defined(_CRT_SECURE_NO_WARNINGS)
|
|
23
|
-
# define _CRT_SECURE_NO_WARNINGS
|
|
24
|
-
#endif
|
|
25
|
-
#if defined(_WIN32) && !defined(_CRT_NONSTDC_NO_DEPRECATE)
|
|
26
|
-
# define _CRT_NONSTDC_NO_DEPRECATE
|
|
27
|
-
#endif
|
|
28
|
-
|
|
29
|
-
#include "zlib.h"
|
|
30
|
-
#include <stdio.h>
|
|
31
|
-
|
|
32
|
-
#ifdef STDC
|
|
33
|
-
# include <string.h>
|
|
34
|
-
# include <stdlib.h>
|
|
35
|
-
#endif
|
|
36
|
-
|
|
37
|
-
#ifdef USE_MMAP
|
|
38
|
-
# include <sys/types.h>
|
|
39
|
-
# include <sys/mman.h>
|
|
40
|
-
# include <sys/stat.h>
|
|
41
|
-
#endif
|
|
42
|
-
|
|
43
|
-
#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
|
|
44
|
-
# include <fcntl.h>
|
|
45
|
-
# include <io.h>
|
|
46
|
-
# ifdef UNDER_CE
|
|
47
|
-
# include <stdlib.h>
|
|
48
|
-
# endif
|
|
49
|
-
# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
|
|
50
|
-
#else
|
|
51
|
-
# define SET_BINARY_MODE(file)
|
|
52
|
-
#endif
|
|
53
|
-
|
|
54
|
-
#ifdef VMS
|
|
55
|
-
# define unlink delete
|
|
56
|
-
# define GZ_SUFFIX "-gz"
|
|
57
|
-
#endif
|
|
58
|
-
#if defined(__riscos) && !defined(__TARGET_UNIXLIB__)
|
|
59
|
-
# define GZ_SUFFIX "/gz"
|
|
60
|
-
# ifndef __GNUC__
|
|
61
|
-
# define unlink remove
|
|
62
|
-
# define fileno(file) file->__file
|
|
63
|
-
# endif
|
|
64
|
-
#endif
|
|
65
|
-
#if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
|
|
66
|
-
# include <unix.h> /* for fileno */
|
|
67
|
-
#endif
|
|
68
|
-
|
|
69
|
-
#if !defined(Z_HAVE_UNISTD_H) && !defined(_LARGEFILE64_SOURCE)
|
|
70
|
-
#ifndef WIN32 /* unlink already in stdio.h for WIN32 */
|
|
71
|
-
extern int unlink(const char *);
|
|
72
|
-
#endif
|
|
73
|
-
#endif
|
|
74
|
-
|
|
75
|
-
#if defined(UNDER_CE)
|
|
76
|
-
# include <windows.h>
|
|
77
|
-
# define perror(s) pwinerror(s)
|
|
78
|
-
|
|
79
|
-
/* Map the Windows error number in ERROR to a locale-dependent error
|
|
80
|
-
message string and return a pointer to it. Typically, the values
|
|
81
|
-
for ERROR come from GetLastError.
|
|
82
|
-
|
|
83
|
-
The string pointed to shall not be modified by the application,
|
|
84
|
-
but may be overwritten by a subsequent call to strwinerror
|
|
85
|
-
|
|
86
|
-
The strwinerror function does not change the current setting
|
|
87
|
-
of GetLastError. */
|
|
88
|
-
|
|
89
|
-
static char *strwinerror (error)
|
|
90
|
-
DWORD error;
|
|
91
|
-
{
|
|
92
|
-
static char buf[1024];
|
|
93
|
-
|
|
94
|
-
wchar_t *msgbuf;
|
|
95
|
-
DWORD lasterr = GetLastError();
|
|
96
|
-
DWORD chars = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM
|
|
97
|
-
| FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
|
98
|
-
NULL,
|
|
99
|
-
error,
|
|
100
|
-
0, /* Default language */
|
|
101
|
-
(LPVOID)&msgbuf,
|
|
102
|
-
0,
|
|
103
|
-
NULL);
|
|
104
|
-
if (chars != 0) {
|
|
105
|
-
/* If there is an \r\n appended, zap it. */
|
|
106
|
-
if (chars >= 2
|
|
107
|
-
&& msgbuf[chars - 2] == '\r' && msgbuf[chars - 1] == '\n') {
|
|
108
|
-
chars -= 2;
|
|
109
|
-
msgbuf[chars] = 0;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (chars > sizeof (buf) - 1) {
|
|
113
|
-
chars = sizeof (buf) - 1;
|
|
114
|
-
msgbuf[chars] = 0;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
wcstombs(buf, msgbuf, chars + 1);
|
|
118
|
-
LocalFree(msgbuf);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
sprintf(buf, "unknown win32 error (%ld)", error);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
SetLastError(lasterr);
|
|
125
|
-
return buf;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
static void pwinerror (s)
|
|
129
|
-
const char *s;
|
|
130
|
-
{
|
|
131
|
-
if (s && *s)
|
|
132
|
-
fprintf(stderr, "%s: %s\n", s, strwinerror(GetLastError ()));
|
|
133
|
-
else
|
|
134
|
-
fprintf(stderr, "%s\n", strwinerror(GetLastError ()));
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
#endif /* UNDER_CE */
|
|
138
|
-
|
|
139
|
-
#ifndef GZ_SUFFIX
|
|
140
|
-
# define GZ_SUFFIX ".gz"
|
|
141
|
-
#endif
|
|
142
|
-
#define SUFFIX_LEN (sizeof(GZ_SUFFIX)-1)
|
|
143
|
-
|
|
144
|
-
#define BUFLEN 16384
|
|
145
|
-
#define MAX_NAME_LEN 1024
|
|
146
|
-
|
|
147
|
-
#ifdef MAXSEG_64K
|
|
148
|
-
# define local static
|
|
149
|
-
/* Needed for systems with limitation on stack size. */
|
|
150
|
-
#else
|
|
151
|
-
# define local
|
|
152
|
-
#endif
|
|
153
|
-
|
|
154
|
-
/* ===========================================================================
|
|
155
|
-
* Safe string copy. Copy up to len bytes from src to dst, if src terminates
|
|
156
|
-
* with a null by then. If not, copy len-1 bytes from src, terminating it with
|
|
157
|
-
* a null in dst[len-1], cutting src short. Return a pointer to the terminating
|
|
158
|
-
* null. If len is zero, nothing is written to *dst and NULL is returned.
|
|
159
|
-
*/
|
|
160
|
-
static char *string_copy(char *dst, char const *src, z_size_t len) {
|
|
161
|
-
if (len == 0)
|
|
162
|
-
return NULL;
|
|
163
|
-
while (--len) {
|
|
164
|
-
*dst = *src++;
|
|
165
|
-
if (*dst == 0)
|
|
166
|
-
return dst;
|
|
167
|
-
dst++;
|
|
168
|
-
}
|
|
169
|
-
*dst = 0;
|
|
170
|
-
return dst;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
#ifdef Z_SOLO
|
|
174
|
-
/* for Z_SOLO, create simplified gz* functions using deflate and inflate */
|
|
175
|
-
|
|
176
|
-
#if defined(Z_HAVE_UNISTD_H) || defined(Z_LARGE)
|
|
177
|
-
# include <unistd.h> /* for unlink() */
|
|
178
|
-
#endif
|
|
179
|
-
|
|
180
|
-
static void *myalloc(void *q, unsigned n, unsigned m) {
|
|
181
|
-
(void)q;
|
|
182
|
-
return calloc(n, m);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
static void myfree(void *q, void *p) {
|
|
186
|
-
(void)q;
|
|
187
|
-
free(p);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
typedef struct gzFile_s {
|
|
191
|
-
FILE *file;
|
|
192
|
-
int write;
|
|
193
|
-
int err;
|
|
194
|
-
char *msg;
|
|
195
|
-
z_stream strm;
|
|
196
|
-
} *gzFile;
|
|
197
|
-
|
|
198
|
-
static gzFile gz_open(const char *path, int fd, const char *mode) {
|
|
199
|
-
gzFile gz;
|
|
200
|
-
int ret;
|
|
201
|
-
|
|
202
|
-
gz = malloc(sizeof(struct gzFile_s));
|
|
203
|
-
if (gz == NULL)
|
|
204
|
-
return NULL;
|
|
205
|
-
gz->write = strchr(mode, 'w') != NULL;
|
|
206
|
-
gz->strm.zalloc = myalloc;
|
|
207
|
-
gz->strm.zfree = myfree;
|
|
208
|
-
gz->strm.opaque = Z_NULL;
|
|
209
|
-
if (gz->write)
|
|
210
|
-
ret = deflateInit2(&(gz->strm), -1, 8, 15 + 16, 8, 0);
|
|
211
|
-
else {
|
|
212
|
-
gz->strm.next_in = 0;
|
|
213
|
-
gz->strm.avail_in = Z_NULL;
|
|
214
|
-
ret = inflateInit2(&(gz->strm), 15 + 16);
|
|
215
|
-
}
|
|
216
|
-
if (ret != Z_OK) {
|
|
217
|
-
free(gz);
|
|
218
|
-
return NULL;
|
|
219
|
-
}
|
|
220
|
-
gz->file = path == NULL ? fdopen(fd, gz->write ? "wb" : "rb") :
|
|
221
|
-
fopen(path, gz->write ? "wb" : "rb");
|
|
222
|
-
if (gz->file == NULL) {
|
|
223
|
-
gz->write ? deflateEnd(&(gz->strm)) : inflateEnd(&(gz->strm));
|
|
224
|
-
free(gz);
|
|
225
|
-
return NULL;
|
|
226
|
-
}
|
|
227
|
-
gz->err = 0;
|
|
228
|
-
gz->msg = "";
|
|
229
|
-
return gz;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
static gzFile gzopen(const char *path, const char *mode) {
|
|
233
|
-
return gz_open(path, -1, mode);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
static gzFile gzdopen(int fd, const char *mode) {
|
|
237
|
-
return gz_open(NULL, fd, mode);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
static int gzwrite(gzFile gz, const void *buf, unsigned len) {
|
|
241
|
-
z_stream *strm;
|
|
242
|
-
unsigned char out[BUFLEN];
|
|
243
|
-
|
|
244
|
-
if (gz == NULL || !gz->write)
|
|
245
|
-
return 0;
|
|
246
|
-
strm = &(gz->strm);
|
|
247
|
-
strm->next_in = (void *)buf;
|
|
248
|
-
strm->avail_in = len;
|
|
249
|
-
do {
|
|
250
|
-
strm->next_out = out;
|
|
251
|
-
strm->avail_out = BUFLEN;
|
|
252
|
-
(void)deflate(strm, Z_NO_FLUSH);
|
|
253
|
-
fwrite(out, 1, BUFLEN - strm->avail_out, gz->file);
|
|
254
|
-
} while (strm->avail_out == 0);
|
|
255
|
-
return len;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
static int gzread(gzFile gz, void *buf, unsigned len) {
|
|
259
|
-
int ret;
|
|
260
|
-
unsigned got;
|
|
261
|
-
unsigned char in[1];
|
|
262
|
-
z_stream *strm;
|
|
263
|
-
|
|
264
|
-
if (gz == NULL || gz->write)
|
|
265
|
-
return 0;
|
|
266
|
-
if (gz->err)
|
|
267
|
-
return 0;
|
|
268
|
-
strm = &(gz->strm);
|
|
269
|
-
strm->next_out = (void *)buf;
|
|
270
|
-
strm->avail_out = len;
|
|
271
|
-
do {
|
|
272
|
-
got = fread(in, 1, 1, gz->file);
|
|
273
|
-
if (got == 0)
|
|
274
|
-
break;
|
|
275
|
-
strm->next_in = in;
|
|
276
|
-
strm->avail_in = 1;
|
|
277
|
-
ret = inflate(strm, Z_NO_FLUSH);
|
|
278
|
-
if (ret == Z_DATA_ERROR) {
|
|
279
|
-
gz->err = Z_DATA_ERROR;
|
|
280
|
-
gz->msg = strm->msg;
|
|
281
|
-
return 0;
|
|
282
|
-
}
|
|
283
|
-
if (ret == Z_STREAM_END)
|
|
284
|
-
inflateReset(strm);
|
|
285
|
-
} while (strm->avail_out);
|
|
286
|
-
return len - strm->avail_out;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
static int gzclose(gzFile gz) {
|
|
290
|
-
z_stream *strm;
|
|
291
|
-
unsigned char out[BUFLEN];
|
|
292
|
-
|
|
293
|
-
if (gz == NULL)
|
|
294
|
-
return Z_STREAM_ERROR;
|
|
295
|
-
strm = &(gz->strm);
|
|
296
|
-
if (gz->write) {
|
|
297
|
-
strm->next_in = Z_NULL;
|
|
298
|
-
strm->avail_in = 0;
|
|
299
|
-
do {
|
|
300
|
-
strm->next_out = out;
|
|
301
|
-
strm->avail_out = BUFLEN;
|
|
302
|
-
(void)deflate(strm, Z_FINISH);
|
|
303
|
-
fwrite(out, 1, BUFLEN - strm->avail_out, gz->file);
|
|
304
|
-
} while (strm->avail_out == 0);
|
|
305
|
-
deflateEnd(strm);
|
|
306
|
-
}
|
|
307
|
-
else
|
|
308
|
-
inflateEnd(strm);
|
|
309
|
-
fclose(gz->file);
|
|
310
|
-
free(gz);
|
|
311
|
-
return Z_OK;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
static const char *gzerror(gzFile gz, int *err) {
|
|
315
|
-
*err = gz->err;
|
|
316
|
-
return gz->msg;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
#endif
|
|
320
|
-
|
|
321
|
-
static char *prog;
|
|
322
|
-
|
|
323
|
-
/* ===========================================================================
|
|
324
|
-
* Display error message and exit
|
|
325
|
-
*/
|
|
326
|
-
static void error(const char *msg) {
|
|
327
|
-
fprintf(stderr, "%s: %s\n", prog, msg);
|
|
328
|
-
exit(1);
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
#ifdef USE_MMAP /* MMAP version, Miguel Albrecht <malbrech@eso.org> */
|
|
332
|
-
|
|
333
|
-
/* Try compressing the input file at once using mmap. Return Z_OK if
|
|
334
|
-
* success, Z_ERRNO otherwise.
|
|
335
|
-
*/
|
|
336
|
-
static int gz_compress_mmap(FILE *in, gzFile out) {
|
|
337
|
-
int len;
|
|
338
|
-
int err;
|
|
339
|
-
int ifd = fileno(in);
|
|
340
|
-
caddr_t buf; /* mmap'ed buffer for the entire input file */
|
|
341
|
-
off_t buf_len; /* length of the input file */
|
|
342
|
-
struct stat sb;
|
|
343
|
-
|
|
344
|
-
/* Determine the size of the file, needed for mmap: */
|
|
345
|
-
if (fstat(ifd, &sb) < 0) return Z_ERRNO;
|
|
346
|
-
buf_len = sb.st_size;
|
|
347
|
-
if (buf_len <= 0) return Z_ERRNO;
|
|
348
|
-
|
|
349
|
-
/* Now do the actual mmap: */
|
|
350
|
-
buf = mmap((caddr_t) 0, buf_len, PROT_READ, MAP_SHARED, ifd, (off_t)0);
|
|
351
|
-
if (buf == (caddr_t)(-1)) return Z_ERRNO;
|
|
352
|
-
|
|
353
|
-
/* Compress the whole file at once: */
|
|
354
|
-
len = gzwrite(out, (char *)buf, (unsigned)buf_len);
|
|
355
|
-
|
|
356
|
-
if (len != (int)buf_len) error(gzerror(out, &err));
|
|
357
|
-
|
|
358
|
-
munmap(buf, buf_len);
|
|
359
|
-
fclose(in);
|
|
360
|
-
if (gzclose(out) != Z_OK) error("failed gzclose");
|
|
361
|
-
return Z_OK;
|
|
362
|
-
}
|
|
363
|
-
#endif /* USE_MMAP */
|
|
364
|
-
|
|
365
|
-
/* ===========================================================================
|
|
366
|
-
* Compress input to output then close both files.
|
|
367
|
-
*/
|
|
368
|
-
|
|
369
|
-
static void gz_compress(FILE *in, gzFile out) {
|
|
370
|
-
local char buf[BUFLEN];
|
|
371
|
-
int len;
|
|
372
|
-
int err;
|
|
373
|
-
|
|
374
|
-
#ifdef USE_MMAP
|
|
375
|
-
/* Try first compressing with mmap. If mmap fails (minigzip used in a
|
|
376
|
-
* pipe), use the normal fread loop.
|
|
377
|
-
*/
|
|
378
|
-
if (gz_compress_mmap(in, out) == Z_OK) return;
|
|
379
|
-
#endif
|
|
380
|
-
for (;;) {
|
|
381
|
-
len = (int)fread(buf, 1, sizeof(buf), in);
|
|
382
|
-
if (ferror(in)) {
|
|
383
|
-
perror("fread");
|
|
384
|
-
exit(1);
|
|
385
|
-
}
|
|
386
|
-
if (len == 0) break;
|
|
387
|
-
|
|
388
|
-
if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err));
|
|
389
|
-
}
|
|
390
|
-
fclose(in);
|
|
391
|
-
if (gzclose(out) != Z_OK) error("failed gzclose");
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
/* ===========================================================================
|
|
395
|
-
* Uncompress input to output then close both files.
|
|
396
|
-
*/
|
|
397
|
-
static void gz_uncompress(gzFile in, FILE *out) {
|
|
398
|
-
local char buf[BUFLEN];
|
|
399
|
-
int len;
|
|
400
|
-
int err;
|
|
401
|
-
|
|
402
|
-
for (;;) {
|
|
403
|
-
len = gzread(in, buf, sizeof(buf));
|
|
404
|
-
if (len < 0) error (gzerror(in, &err));
|
|
405
|
-
if (len == 0) break;
|
|
406
|
-
|
|
407
|
-
if ((int)fwrite(buf, 1, (unsigned)len, out) != len) {
|
|
408
|
-
error("failed fwrite");
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
if (fclose(out)) error("failed fclose");
|
|
412
|
-
|
|
413
|
-
if (gzclose(in) != Z_OK) error("failed gzclose");
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
/* ===========================================================================
|
|
418
|
-
* Compress the given file: create a corresponding .gz file and remove the
|
|
419
|
-
* original.
|
|
420
|
-
*/
|
|
421
|
-
static void file_compress(char *file, char *mode) {
|
|
422
|
-
local char outfile[MAX_NAME_LEN+1], *end;
|
|
423
|
-
FILE *in;
|
|
424
|
-
gzFile out;
|
|
425
|
-
|
|
426
|
-
if (strlen(file) + strlen(GZ_SUFFIX) >= sizeof(outfile)) {
|
|
427
|
-
fprintf(stderr, "%s: filename too long\n", prog);
|
|
428
|
-
exit(1);
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
end = string_copy(outfile, file, sizeof(outfile));
|
|
432
|
-
string_copy(end, GZ_SUFFIX, sizeof(outfile) - (z_size_t)(end - outfile));
|
|
433
|
-
|
|
434
|
-
in = fopen(file, "rb");
|
|
435
|
-
if (in == NULL) {
|
|
436
|
-
perror(file);
|
|
437
|
-
exit(1);
|
|
438
|
-
}
|
|
439
|
-
out = gzopen(outfile, mode);
|
|
440
|
-
if (out == NULL) {
|
|
441
|
-
fprintf(stderr, "%s: can't gzopen %s\n", prog, outfile);
|
|
442
|
-
exit(1);
|
|
443
|
-
}
|
|
444
|
-
gz_compress(in, out);
|
|
445
|
-
|
|
446
|
-
unlink(file);
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
/* ===========================================================================
|
|
451
|
-
* Uncompress the given file and remove the original.
|
|
452
|
-
*/
|
|
453
|
-
static void file_uncompress(char *file) {
|
|
454
|
-
local char buf[MAX_NAME_LEN+1];
|
|
455
|
-
char *infile, *outfile;
|
|
456
|
-
FILE *out;
|
|
457
|
-
gzFile in;
|
|
458
|
-
z_size_t len = strlen(file);
|
|
459
|
-
|
|
460
|
-
if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) {
|
|
461
|
-
fprintf(stderr, "%s: filename too long\n", prog);
|
|
462
|
-
exit(1);
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
string_copy(buf, file, sizeof(buf));
|
|
466
|
-
|
|
467
|
-
if (len > SUFFIX_LEN && strcmp(file+len-SUFFIX_LEN, GZ_SUFFIX) == 0) {
|
|
468
|
-
infile = file;
|
|
469
|
-
outfile = buf;
|
|
470
|
-
outfile[len-3] = '\0';
|
|
471
|
-
} else {
|
|
472
|
-
outfile = file;
|
|
473
|
-
infile = buf;
|
|
474
|
-
string_copy(buf + len, GZ_SUFFIX, sizeof(buf) - len);
|
|
475
|
-
}
|
|
476
|
-
in = gzopen(infile, "rb");
|
|
477
|
-
if (in == NULL) {
|
|
478
|
-
fprintf(stderr, "%s: can't gzopen %s\n", prog, infile);
|
|
479
|
-
exit(1);
|
|
480
|
-
}
|
|
481
|
-
out = fopen(outfile, "wb");
|
|
482
|
-
if (out == NULL) {
|
|
483
|
-
perror(file);
|
|
484
|
-
exit(1);
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
gz_uncompress(in, out);
|
|
488
|
-
|
|
489
|
-
unlink(infile);
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
/* ===========================================================================
|
|
494
|
-
* Usage: minigzip [-c] [-d] [-f] [-h] [-r] [-1 to -9] [files...]
|
|
495
|
-
* -c : write to standard output
|
|
496
|
-
* -d : decompress
|
|
497
|
-
* -f : compress with Z_FILTERED
|
|
498
|
-
* -h : compress with Z_HUFFMAN_ONLY
|
|
499
|
-
* -r : compress with Z_RLE
|
|
500
|
-
* -1 to -9 : compression level
|
|
501
|
-
*/
|
|
502
|
-
|
|
503
|
-
int main(int argc, char *argv[]) {
|
|
504
|
-
int copyout = 0;
|
|
505
|
-
int uncompr = 0;
|
|
506
|
-
gzFile file;
|
|
507
|
-
char *bname, outmode[5];
|
|
508
|
-
|
|
509
|
-
string_copy(outmode, "wb6 ", sizeof(outmode));
|
|
510
|
-
prog = argv[0];
|
|
511
|
-
bname = strrchr(argv[0], '/');
|
|
512
|
-
if (bname)
|
|
513
|
-
bname++;
|
|
514
|
-
else
|
|
515
|
-
bname = argv[0];
|
|
516
|
-
argc--, argv++;
|
|
517
|
-
|
|
518
|
-
if (!strcmp(bname, "gunzip"))
|
|
519
|
-
uncompr = 1;
|
|
520
|
-
else if (!strcmp(bname, "zcat"))
|
|
521
|
-
copyout = uncompr = 1;
|
|
522
|
-
|
|
523
|
-
while (argc > 0) {
|
|
524
|
-
if (strcmp(*argv, "-c") == 0)
|
|
525
|
-
copyout = 1;
|
|
526
|
-
else if (strcmp(*argv, "-d") == 0)
|
|
527
|
-
uncompr = 1;
|
|
528
|
-
else if (strcmp(*argv, "-f") == 0)
|
|
529
|
-
outmode[3] = 'f';
|
|
530
|
-
else if (strcmp(*argv, "-h") == 0)
|
|
531
|
-
outmode[3] = 'h';
|
|
532
|
-
else if (strcmp(*argv, "-r") == 0)
|
|
533
|
-
outmode[3] = 'R';
|
|
534
|
-
else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' &&
|
|
535
|
-
(*argv)[2] == 0)
|
|
536
|
-
outmode[2] = (*argv)[1];
|
|
537
|
-
else
|
|
538
|
-
break;
|
|
539
|
-
argc--, argv++;
|
|
540
|
-
}
|
|
541
|
-
if (outmode[3] == ' ')
|
|
542
|
-
outmode[3] = 0;
|
|
543
|
-
if (argc == 0) {
|
|
544
|
-
SET_BINARY_MODE(stdin);
|
|
545
|
-
SET_BINARY_MODE(stdout);
|
|
546
|
-
if (uncompr) {
|
|
547
|
-
file = gzdopen(fileno(stdin), "rb");
|
|
548
|
-
if (file == NULL) error("can't gzdopen stdin");
|
|
549
|
-
gz_uncompress(file, stdout);
|
|
550
|
-
} else {
|
|
551
|
-
file = gzdopen(fileno(stdout), outmode);
|
|
552
|
-
if (file == NULL) error("can't gzdopen stdout");
|
|
553
|
-
gz_compress(stdin, file);
|
|
554
|
-
}
|
|
555
|
-
} else {
|
|
556
|
-
if (copyout) {
|
|
557
|
-
SET_BINARY_MODE(stdout);
|
|
558
|
-
}
|
|
559
|
-
do {
|
|
560
|
-
if (uncompr) {
|
|
561
|
-
if (copyout) {
|
|
562
|
-
file = gzopen(*argv, "rb");
|
|
563
|
-
if (file == NULL)
|
|
564
|
-
fprintf(stderr, "%s: can't gzopen %s\n", prog, *argv);
|
|
565
|
-
else
|
|
566
|
-
gz_uncompress(file, stdout);
|
|
567
|
-
} else {
|
|
568
|
-
file_uncompress(*argv);
|
|
569
|
-
}
|
|
570
|
-
} else {
|
|
571
|
-
if (copyout) {
|
|
572
|
-
FILE * in = fopen(*argv, "rb");
|
|
573
|
-
|
|
574
|
-
if (in == NULL) {
|
|
575
|
-
perror(*argv);
|
|
576
|
-
} else {
|
|
577
|
-
file = gzdopen(fileno(stdout), outmode);
|
|
578
|
-
if (file == NULL) error("can't gzdopen stdout");
|
|
579
|
-
|
|
580
|
-
gz_compress(in, file);
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
} else {
|
|
584
|
-
file_compress(*argv, outmode);
|
|
585
|
-
}
|
|
586
|
-
}
|
|
587
|
-
} while (argv++, --argc);
|
|
588
|
-
}
|
|
589
|
-
return 0;
|
|
590
|
-
}
|
|
1
|
+
/* minigzip.c -- simulate gzip using the zlib compression library
|
|
2
|
+
* Copyright (C) 1995-2006, 2010, 2011, 2016 Jean-loup Gailly
|
|
3
|
+
* For conditions of distribution and use, see copyright notice in zlib.h
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* minigzip is a minimal implementation of the gzip utility. This is
|
|
8
|
+
* only an example of using zlib and isn't meant to replace the
|
|
9
|
+
* full-featured gzip. No attempt is made to deal with file systems
|
|
10
|
+
* limiting names to 14 or 8+3 characters, etc... Error checking is
|
|
11
|
+
* very limited. So use minigzip only for testing; use gzip for the
|
|
12
|
+
* real thing. On MSDOS, use only on file names without extension
|
|
13
|
+
* or in pipe mode.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/* @(#) $Id$ */
|
|
17
|
+
|
|
18
|
+
#ifndef _POSIX_C_SOURCE
|
|
19
|
+
# define _POSIX_C_SOURCE 200112L
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
#if defined(_WIN32) && !defined(_CRT_SECURE_NO_WARNINGS)
|
|
23
|
+
# define _CRT_SECURE_NO_WARNINGS
|
|
24
|
+
#endif
|
|
25
|
+
#if defined(_WIN32) && !defined(_CRT_NONSTDC_NO_DEPRECATE)
|
|
26
|
+
# define _CRT_NONSTDC_NO_DEPRECATE
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
#include "zlib.h"
|
|
30
|
+
#include <stdio.h>
|
|
31
|
+
|
|
32
|
+
#ifdef STDC
|
|
33
|
+
# include <string.h>
|
|
34
|
+
# include <stdlib.h>
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
#ifdef USE_MMAP
|
|
38
|
+
# include <sys/types.h>
|
|
39
|
+
# include <sys/mman.h>
|
|
40
|
+
# include <sys/stat.h>
|
|
41
|
+
#endif
|
|
42
|
+
|
|
43
|
+
#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
|
|
44
|
+
# include <fcntl.h>
|
|
45
|
+
# include <io.h>
|
|
46
|
+
# ifdef UNDER_CE
|
|
47
|
+
# include <stdlib.h>
|
|
48
|
+
# endif
|
|
49
|
+
# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
|
|
50
|
+
#else
|
|
51
|
+
# define SET_BINARY_MODE(file)
|
|
52
|
+
#endif
|
|
53
|
+
|
|
54
|
+
#ifdef VMS
|
|
55
|
+
# define unlink delete
|
|
56
|
+
# define GZ_SUFFIX "-gz"
|
|
57
|
+
#endif
|
|
58
|
+
#if defined(__riscos) && !defined(__TARGET_UNIXLIB__)
|
|
59
|
+
# define GZ_SUFFIX "/gz"
|
|
60
|
+
# ifndef __GNUC__
|
|
61
|
+
# define unlink remove
|
|
62
|
+
# define fileno(file) file->__file
|
|
63
|
+
# endif
|
|
64
|
+
#endif
|
|
65
|
+
#if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
|
|
66
|
+
# include <unix.h> /* for fileno */
|
|
67
|
+
#endif
|
|
68
|
+
|
|
69
|
+
#if !defined(Z_HAVE_UNISTD_H) && !defined(_LARGEFILE64_SOURCE)
|
|
70
|
+
#ifndef WIN32 /* unlink already in stdio.h for WIN32 */
|
|
71
|
+
extern int unlink(const char *);
|
|
72
|
+
#endif
|
|
73
|
+
#endif
|
|
74
|
+
|
|
75
|
+
#if defined(UNDER_CE)
|
|
76
|
+
# include <windows.h>
|
|
77
|
+
# define perror(s) pwinerror(s)
|
|
78
|
+
|
|
79
|
+
/* Map the Windows error number in ERROR to a locale-dependent error
|
|
80
|
+
message string and return a pointer to it. Typically, the values
|
|
81
|
+
for ERROR come from GetLastError.
|
|
82
|
+
|
|
83
|
+
The string pointed to shall not be modified by the application,
|
|
84
|
+
but may be overwritten by a subsequent call to strwinerror
|
|
85
|
+
|
|
86
|
+
The strwinerror function does not change the current setting
|
|
87
|
+
of GetLastError. */
|
|
88
|
+
|
|
89
|
+
static char *strwinerror (error)
|
|
90
|
+
DWORD error;
|
|
91
|
+
{
|
|
92
|
+
static char buf[1024];
|
|
93
|
+
|
|
94
|
+
wchar_t *msgbuf;
|
|
95
|
+
DWORD lasterr = GetLastError();
|
|
96
|
+
DWORD chars = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM
|
|
97
|
+
| FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
|
98
|
+
NULL,
|
|
99
|
+
error,
|
|
100
|
+
0, /* Default language */
|
|
101
|
+
(LPVOID)&msgbuf,
|
|
102
|
+
0,
|
|
103
|
+
NULL);
|
|
104
|
+
if (chars != 0) {
|
|
105
|
+
/* If there is an \r\n appended, zap it. */
|
|
106
|
+
if (chars >= 2
|
|
107
|
+
&& msgbuf[chars - 2] == '\r' && msgbuf[chars - 1] == '\n') {
|
|
108
|
+
chars -= 2;
|
|
109
|
+
msgbuf[chars] = 0;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (chars > sizeof (buf) - 1) {
|
|
113
|
+
chars = sizeof (buf) - 1;
|
|
114
|
+
msgbuf[chars] = 0;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
wcstombs(buf, msgbuf, chars + 1);
|
|
118
|
+
LocalFree(msgbuf);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
sprintf(buf, "unknown win32 error (%ld)", error);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
SetLastError(lasterr);
|
|
125
|
+
return buf;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
static void pwinerror (s)
|
|
129
|
+
const char *s;
|
|
130
|
+
{
|
|
131
|
+
if (s && *s)
|
|
132
|
+
fprintf(stderr, "%s: %s\n", s, strwinerror(GetLastError ()));
|
|
133
|
+
else
|
|
134
|
+
fprintf(stderr, "%s\n", strwinerror(GetLastError ()));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
#endif /* UNDER_CE */
|
|
138
|
+
|
|
139
|
+
#ifndef GZ_SUFFIX
|
|
140
|
+
# define GZ_SUFFIX ".gz"
|
|
141
|
+
#endif
|
|
142
|
+
#define SUFFIX_LEN (sizeof(GZ_SUFFIX)-1)
|
|
143
|
+
|
|
144
|
+
#define BUFLEN 16384
|
|
145
|
+
#define MAX_NAME_LEN 1024
|
|
146
|
+
|
|
147
|
+
#ifdef MAXSEG_64K
|
|
148
|
+
# define local static
|
|
149
|
+
/* Needed for systems with limitation on stack size. */
|
|
150
|
+
#else
|
|
151
|
+
# define local
|
|
152
|
+
#endif
|
|
153
|
+
|
|
154
|
+
/* ===========================================================================
|
|
155
|
+
* Safe string copy. Copy up to len bytes from src to dst, if src terminates
|
|
156
|
+
* with a null by then. If not, copy len-1 bytes from src, terminating it with
|
|
157
|
+
* a null in dst[len-1], cutting src short. Return a pointer to the terminating
|
|
158
|
+
* null. If len is zero, nothing is written to *dst and NULL is returned.
|
|
159
|
+
*/
|
|
160
|
+
static char *string_copy(char *dst, char const *src, z_size_t len) {
|
|
161
|
+
if (len == 0)
|
|
162
|
+
return NULL;
|
|
163
|
+
while (--len) {
|
|
164
|
+
*dst = *src++;
|
|
165
|
+
if (*dst == 0)
|
|
166
|
+
return dst;
|
|
167
|
+
dst++;
|
|
168
|
+
}
|
|
169
|
+
*dst = 0;
|
|
170
|
+
return dst;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
#ifdef Z_SOLO
|
|
174
|
+
/* for Z_SOLO, create simplified gz* functions using deflate and inflate */
|
|
175
|
+
|
|
176
|
+
#if defined(Z_HAVE_UNISTD_H) || defined(Z_LARGE)
|
|
177
|
+
# include <unistd.h> /* for unlink() */
|
|
178
|
+
#endif
|
|
179
|
+
|
|
180
|
+
static void *myalloc(void *q, unsigned n, unsigned m) {
|
|
181
|
+
(void)q;
|
|
182
|
+
return calloc(n, m);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
static void myfree(void *q, void *p) {
|
|
186
|
+
(void)q;
|
|
187
|
+
free(p);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
typedef struct gzFile_s {
|
|
191
|
+
FILE *file;
|
|
192
|
+
int write;
|
|
193
|
+
int err;
|
|
194
|
+
char *msg;
|
|
195
|
+
z_stream strm;
|
|
196
|
+
} *gzFile;
|
|
197
|
+
|
|
198
|
+
static gzFile gz_open(const char *path, int fd, const char *mode) {
|
|
199
|
+
gzFile gz;
|
|
200
|
+
int ret;
|
|
201
|
+
|
|
202
|
+
gz = malloc(sizeof(struct gzFile_s));
|
|
203
|
+
if (gz == NULL)
|
|
204
|
+
return NULL;
|
|
205
|
+
gz->write = strchr(mode, 'w') != NULL;
|
|
206
|
+
gz->strm.zalloc = myalloc;
|
|
207
|
+
gz->strm.zfree = myfree;
|
|
208
|
+
gz->strm.opaque = Z_NULL;
|
|
209
|
+
if (gz->write)
|
|
210
|
+
ret = deflateInit2(&(gz->strm), -1, 8, 15 + 16, 8, 0);
|
|
211
|
+
else {
|
|
212
|
+
gz->strm.next_in = 0;
|
|
213
|
+
gz->strm.avail_in = Z_NULL;
|
|
214
|
+
ret = inflateInit2(&(gz->strm), 15 + 16);
|
|
215
|
+
}
|
|
216
|
+
if (ret != Z_OK) {
|
|
217
|
+
free(gz);
|
|
218
|
+
return NULL;
|
|
219
|
+
}
|
|
220
|
+
gz->file = path == NULL ? fdopen(fd, gz->write ? "wb" : "rb") :
|
|
221
|
+
fopen(path, gz->write ? "wb" : "rb");
|
|
222
|
+
if (gz->file == NULL) {
|
|
223
|
+
gz->write ? deflateEnd(&(gz->strm)) : inflateEnd(&(gz->strm));
|
|
224
|
+
free(gz);
|
|
225
|
+
return NULL;
|
|
226
|
+
}
|
|
227
|
+
gz->err = 0;
|
|
228
|
+
gz->msg = "";
|
|
229
|
+
return gz;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
static gzFile gzopen(const char *path, const char *mode) {
|
|
233
|
+
return gz_open(path, -1, mode);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
static gzFile gzdopen(int fd, const char *mode) {
|
|
237
|
+
return gz_open(NULL, fd, mode);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
static int gzwrite(gzFile gz, const void *buf, unsigned len) {
|
|
241
|
+
z_stream *strm;
|
|
242
|
+
unsigned char out[BUFLEN];
|
|
243
|
+
|
|
244
|
+
if (gz == NULL || !gz->write)
|
|
245
|
+
return 0;
|
|
246
|
+
strm = &(gz->strm);
|
|
247
|
+
strm->next_in = (void *)buf;
|
|
248
|
+
strm->avail_in = len;
|
|
249
|
+
do {
|
|
250
|
+
strm->next_out = out;
|
|
251
|
+
strm->avail_out = BUFLEN;
|
|
252
|
+
(void)deflate(strm, Z_NO_FLUSH);
|
|
253
|
+
fwrite(out, 1, BUFLEN - strm->avail_out, gz->file);
|
|
254
|
+
} while (strm->avail_out == 0);
|
|
255
|
+
return len;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
static int gzread(gzFile gz, void *buf, unsigned len) {
|
|
259
|
+
int ret;
|
|
260
|
+
unsigned got;
|
|
261
|
+
unsigned char in[1];
|
|
262
|
+
z_stream *strm;
|
|
263
|
+
|
|
264
|
+
if (gz == NULL || gz->write)
|
|
265
|
+
return 0;
|
|
266
|
+
if (gz->err)
|
|
267
|
+
return 0;
|
|
268
|
+
strm = &(gz->strm);
|
|
269
|
+
strm->next_out = (void *)buf;
|
|
270
|
+
strm->avail_out = len;
|
|
271
|
+
do {
|
|
272
|
+
got = fread(in, 1, 1, gz->file);
|
|
273
|
+
if (got == 0)
|
|
274
|
+
break;
|
|
275
|
+
strm->next_in = in;
|
|
276
|
+
strm->avail_in = 1;
|
|
277
|
+
ret = inflate(strm, Z_NO_FLUSH);
|
|
278
|
+
if (ret == Z_DATA_ERROR) {
|
|
279
|
+
gz->err = Z_DATA_ERROR;
|
|
280
|
+
gz->msg = strm->msg;
|
|
281
|
+
return 0;
|
|
282
|
+
}
|
|
283
|
+
if (ret == Z_STREAM_END)
|
|
284
|
+
inflateReset(strm);
|
|
285
|
+
} while (strm->avail_out);
|
|
286
|
+
return len - strm->avail_out;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
static int gzclose(gzFile gz) {
|
|
290
|
+
z_stream *strm;
|
|
291
|
+
unsigned char out[BUFLEN];
|
|
292
|
+
|
|
293
|
+
if (gz == NULL)
|
|
294
|
+
return Z_STREAM_ERROR;
|
|
295
|
+
strm = &(gz->strm);
|
|
296
|
+
if (gz->write) {
|
|
297
|
+
strm->next_in = Z_NULL;
|
|
298
|
+
strm->avail_in = 0;
|
|
299
|
+
do {
|
|
300
|
+
strm->next_out = out;
|
|
301
|
+
strm->avail_out = BUFLEN;
|
|
302
|
+
(void)deflate(strm, Z_FINISH);
|
|
303
|
+
fwrite(out, 1, BUFLEN - strm->avail_out, gz->file);
|
|
304
|
+
} while (strm->avail_out == 0);
|
|
305
|
+
deflateEnd(strm);
|
|
306
|
+
}
|
|
307
|
+
else
|
|
308
|
+
inflateEnd(strm);
|
|
309
|
+
fclose(gz->file);
|
|
310
|
+
free(gz);
|
|
311
|
+
return Z_OK;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
static const char *gzerror(gzFile gz, int *err) {
|
|
315
|
+
*err = gz->err;
|
|
316
|
+
return gz->msg;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
#endif
|
|
320
|
+
|
|
321
|
+
static char *prog;
|
|
322
|
+
|
|
323
|
+
/* ===========================================================================
|
|
324
|
+
* Display error message and exit
|
|
325
|
+
*/
|
|
326
|
+
static void error(const char *msg) {
|
|
327
|
+
fprintf(stderr, "%s: %s\n", prog, msg);
|
|
328
|
+
exit(1);
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
#ifdef USE_MMAP /* MMAP version, Miguel Albrecht <malbrech@eso.org> */
|
|
332
|
+
|
|
333
|
+
/* Try compressing the input file at once using mmap. Return Z_OK if
|
|
334
|
+
* success, Z_ERRNO otherwise.
|
|
335
|
+
*/
|
|
336
|
+
static int gz_compress_mmap(FILE *in, gzFile out) {
|
|
337
|
+
int len;
|
|
338
|
+
int err;
|
|
339
|
+
int ifd = fileno(in);
|
|
340
|
+
caddr_t buf; /* mmap'ed buffer for the entire input file */
|
|
341
|
+
off_t buf_len; /* length of the input file */
|
|
342
|
+
struct stat sb;
|
|
343
|
+
|
|
344
|
+
/* Determine the size of the file, needed for mmap: */
|
|
345
|
+
if (fstat(ifd, &sb) < 0) return Z_ERRNO;
|
|
346
|
+
buf_len = sb.st_size;
|
|
347
|
+
if (buf_len <= 0) return Z_ERRNO;
|
|
348
|
+
|
|
349
|
+
/* Now do the actual mmap: */
|
|
350
|
+
buf = mmap((caddr_t) 0, buf_len, PROT_READ, MAP_SHARED, ifd, (off_t)0);
|
|
351
|
+
if (buf == (caddr_t)(-1)) return Z_ERRNO;
|
|
352
|
+
|
|
353
|
+
/* Compress the whole file at once: */
|
|
354
|
+
len = gzwrite(out, (char *)buf, (unsigned)buf_len);
|
|
355
|
+
|
|
356
|
+
if (len != (int)buf_len) error(gzerror(out, &err));
|
|
357
|
+
|
|
358
|
+
munmap(buf, buf_len);
|
|
359
|
+
fclose(in);
|
|
360
|
+
if (gzclose(out) != Z_OK) error("failed gzclose");
|
|
361
|
+
return Z_OK;
|
|
362
|
+
}
|
|
363
|
+
#endif /* USE_MMAP */
|
|
364
|
+
|
|
365
|
+
/* ===========================================================================
|
|
366
|
+
* Compress input to output then close both files.
|
|
367
|
+
*/
|
|
368
|
+
|
|
369
|
+
static void gz_compress(FILE *in, gzFile out) {
|
|
370
|
+
local char buf[BUFLEN];
|
|
371
|
+
int len;
|
|
372
|
+
int err;
|
|
373
|
+
|
|
374
|
+
#ifdef USE_MMAP
|
|
375
|
+
/* Try first compressing with mmap. If mmap fails (minigzip used in a
|
|
376
|
+
* pipe), use the normal fread loop.
|
|
377
|
+
*/
|
|
378
|
+
if (gz_compress_mmap(in, out) == Z_OK) return;
|
|
379
|
+
#endif
|
|
380
|
+
for (;;) {
|
|
381
|
+
len = (int)fread(buf, 1, sizeof(buf), in);
|
|
382
|
+
if (ferror(in)) {
|
|
383
|
+
perror("fread");
|
|
384
|
+
exit(1);
|
|
385
|
+
}
|
|
386
|
+
if (len == 0) break;
|
|
387
|
+
|
|
388
|
+
if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err));
|
|
389
|
+
}
|
|
390
|
+
fclose(in);
|
|
391
|
+
if (gzclose(out) != Z_OK) error("failed gzclose");
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/* ===========================================================================
|
|
395
|
+
* Uncompress input to output then close both files.
|
|
396
|
+
*/
|
|
397
|
+
static void gz_uncompress(gzFile in, FILE *out) {
|
|
398
|
+
local char buf[BUFLEN];
|
|
399
|
+
int len;
|
|
400
|
+
int err;
|
|
401
|
+
|
|
402
|
+
for (;;) {
|
|
403
|
+
len = gzread(in, buf, sizeof(buf));
|
|
404
|
+
if (len < 0) error (gzerror(in, &err));
|
|
405
|
+
if (len == 0) break;
|
|
406
|
+
|
|
407
|
+
if ((int)fwrite(buf, 1, (unsigned)len, out) != len) {
|
|
408
|
+
error("failed fwrite");
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (fclose(out)) error("failed fclose");
|
|
412
|
+
|
|
413
|
+
if (gzclose(in) != Z_OK) error("failed gzclose");
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
/* ===========================================================================
|
|
418
|
+
* Compress the given file: create a corresponding .gz file and remove the
|
|
419
|
+
* original.
|
|
420
|
+
*/
|
|
421
|
+
static void file_compress(char *file, char *mode) {
|
|
422
|
+
local char outfile[MAX_NAME_LEN+1], *end;
|
|
423
|
+
FILE *in;
|
|
424
|
+
gzFile out;
|
|
425
|
+
|
|
426
|
+
if (strlen(file) + strlen(GZ_SUFFIX) >= sizeof(outfile)) {
|
|
427
|
+
fprintf(stderr, "%s: filename too long\n", prog);
|
|
428
|
+
exit(1);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
end = string_copy(outfile, file, sizeof(outfile));
|
|
432
|
+
string_copy(end, GZ_SUFFIX, sizeof(outfile) - (z_size_t)(end - outfile));
|
|
433
|
+
|
|
434
|
+
in = fopen(file, "rb");
|
|
435
|
+
if (in == NULL) {
|
|
436
|
+
perror(file);
|
|
437
|
+
exit(1);
|
|
438
|
+
}
|
|
439
|
+
out = gzopen(outfile, mode);
|
|
440
|
+
if (out == NULL) {
|
|
441
|
+
fprintf(stderr, "%s: can't gzopen %s\n", prog, outfile);
|
|
442
|
+
exit(1);
|
|
443
|
+
}
|
|
444
|
+
gz_compress(in, out);
|
|
445
|
+
|
|
446
|
+
unlink(file);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
/* ===========================================================================
|
|
451
|
+
* Uncompress the given file and remove the original.
|
|
452
|
+
*/
|
|
453
|
+
static void file_uncompress(char *file) {
|
|
454
|
+
local char buf[MAX_NAME_LEN+1];
|
|
455
|
+
char *infile, *outfile;
|
|
456
|
+
FILE *out;
|
|
457
|
+
gzFile in;
|
|
458
|
+
z_size_t len = strlen(file);
|
|
459
|
+
|
|
460
|
+
if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) {
|
|
461
|
+
fprintf(stderr, "%s: filename too long\n", prog);
|
|
462
|
+
exit(1);
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
string_copy(buf, file, sizeof(buf));
|
|
466
|
+
|
|
467
|
+
if (len > SUFFIX_LEN && strcmp(file+len-SUFFIX_LEN, GZ_SUFFIX) == 0) {
|
|
468
|
+
infile = file;
|
|
469
|
+
outfile = buf;
|
|
470
|
+
outfile[len-3] = '\0';
|
|
471
|
+
} else {
|
|
472
|
+
outfile = file;
|
|
473
|
+
infile = buf;
|
|
474
|
+
string_copy(buf + len, GZ_SUFFIX, sizeof(buf) - len);
|
|
475
|
+
}
|
|
476
|
+
in = gzopen(infile, "rb");
|
|
477
|
+
if (in == NULL) {
|
|
478
|
+
fprintf(stderr, "%s: can't gzopen %s\n", prog, infile);
|
|
479
|
+
exit(1);
|
|
480
|
+
}
|
|
481
|
+
out = fopen(outfile, "wb");
|
|
482
|
+
if (out == NULL) {
|
|
483
|
+
perror(file);
|
|
484
|
+
exit(1);
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
gz_uncompress(in, out);
|
|
488
|
+
|
|
489
|
+
unlink(infile);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
/* ===========================================================================
|
|
494
|
+
* Usage: minigzip [-c] [-d] [-f] [-h] [-r] [-1 to -9] [files...]
|
|
495
|
+
* -c : write to standard output
|
|
496
|
+
* -d : decompress
|
|
497
|
+
* -f : compress with Z_FILTERED
|
|
498
|
+
* -h : compress with Z_HUFFMAN_ONLY
|
|
499
|
+
* -r : compress with Z_RLE
|
|
500
|
+
* -1 to -9 : compression level
|
|
501
|
+
*/
|
|
502
|
+
|
|
503
|
+
int main(int argc, char *argv[]) {
|
|
504
|
+
int copyout = 0;
|
|
505
|
+
int uncompr = 0;
|
|
506
|
+
gzFile file;
|
|
507
|
+
char *bname, outmode[5];
|
|
508
|
+
|
|
509
|
+
string_copy(outmode, "wb6 ", sizeof(outmode));
|
|
510
|
+
prog = argv[0];
|
|
511
|
+
bname = strrchr(argv[0], '/');
|
|
512
|
+
if (bname)
|
|
513
|
+
bname++;
|
|
514
|
+
else
|
|
515
|
+
bname = argv[0];
|
|
516
|
+
argc--, argv++;
|
|
517
|
+
|
|
518
|
+
if (!strcmp(bname, "gunzip"))
|
|
519
|
+
uncompr = 1;
|
|
520
|
+
else if (!strcmp(bname, "zcat"))
|
|
521
|
+
copyout = uncompr = 1;
|
|
522
|
+
|
|
523
|
+
while (argc > 0) {
|
|
524
|
+
if (strcmp(*argv, "-c") == 0)
|
|
525
|
+
copyout = 1;
|
|
526
|
+
else if (strcmp(*argv, "-d") == 0)
|
|
527
|
+
uncompr = 1;
|
|
528
|
+
else if (strcmp(*argv, "-f") == 0)
|
|
529
|
+
outmode[3] = 'f';
|
|
530
|
+
else if (strcmp(*argv, "-h") == 0)
|
|
531
|
+
outmode[3] = 'h';
|
|
532
|
+
else if (strcmp(*argv, "-r") == 0)
|
|
533
|
+
outmode[3] = 'R';
|
|
534
|
+
else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' &&
|
|
535
|
+
(*argv)[2] == 0)
|
|
536
|
+
outmode[2] = (*argv)[1];
|
|
537
|
+
else
|
|
538
|
+
break;
|
|
539
|
+
argc--, argv++;
|
|
540
|
+
}
|
|
541
|
+
if (outmode[3] == ' ')
|
|
542
|
+
outmode[3] = 0;
|
|
543
|
+
if (argc == 0) {
|
|
544
|
+
SET_BINARY_MODE(stdin);
|
|
545
|
+
SET_BINARY_MODE(stdout);
|
|
546
|
+
if (uncompr) {
|
|
547
|
+
file = gzdopen(fileno(stdin), "rb");
|
|
548
|
+
if (file == NULL) error("can't gzdopen stdin");
|
|
549
|
+
gz_uncompress(file, stdout);
|
|
550
|
+
} else {
|
|
551
|
+
file = gzdopen(fileno(stdout), outmode);
|
|
552
|
+
if (file == NULL) error("can't gzdopen stdout");
|
|
553
|
+
gz_compress(stdin, file);
|
|
554
|
+
}
|
|
555
|
+
} else {
|
|
556
|
+
if (copyout) {
|
|
557
|
+
SET_BINARY_MODE(stdout);
|
|
558
|
+
}
|
|
559
|
+
do {
|
|
560
|
+
if (uncompr) {
|
|
561
|
+
if (copyout) {
|
|
562
|
+
file = gzopen(*argv, "rb");
|
|
563
|
+
if (file == NULL)
|
|
564
|
+
fprintf(stderr, "%s: can't gzopen %s\n", prog, *argv);
|
|
565
|
+
else
|
|
566
|
+
gz_uncompress(file, stdout);
|
|
567
|
+
} else {
|
|
568
|
+
file_uncompress(*argv);
|
|
569
|
+
}
|
|
570
|
+
} else {
|
|
571
|
+
if (copyout) {
|
|
572
|
+
FILE * in = fopen(*argv, "rb");
|
|
573
|
+
|
|
574
|
+
if (in == NULL) {
|
|
575
|
+
perror(*argv);
|
|
576
|
+
} else {
|
|
577
|
+
file = gzdopen(fileno(stdout), outmode);
|
|
578
|
+
if (file == NULL) error("can't gzdopen stdout");
|
|
579
|
+
|
|
580
|
+
gz_compress(in, file);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
} else {
|
|
584
|
+
file_compress(*argv, outmode);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
} while (argv++, --argc);
|
|
588
|
+
}
|
|
589
|
+
return 0;
|
|
590
|
+
}
|