rugged 0.27.10 → 0.27.10.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +0 -1
- data/vendor/libgit2/CMakeLists.txt +54 -98
- data/vendor/libgit2/COPYING +0 -28
- data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +1 -15
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +8 -9
- data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +0 -6
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -2
- data/vendor/libgit2/deps/http-parser/{COPYING → LICENSE-MIT} +0 -0
- data/vendor/libgit2/deps/http-parser/http_parser.c +6 -11
- data/vendor/libgit2/deps/regex/CMakeLists.txt +2 -0
- data/vendor/libgit2/deps/regex/config.h +7 -0
- data/vendor/libgit2/deps/regex/regcomp.c +3857 -0
- data/vendor/libgit2/deps/regex/regex.c +92 -0
- data/vendor/libgit2/deps/regex/regex.h +582 -0
- data/vendor/libgit2/deps/regex/regex_internal.c +1744 -0
- data/vendor/libgit2/deps/regex/regex_internal.h +819 -0
- data/vendor/libgit2/deps/regex/regexec.c +4369 -0
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +0 -1
- data/vendor/libgit2/deps/zlib/adler32.c +7 -0
- data/vendor/libgit2/deps/zlib/crc32.c +7 -0
- data/vendor/libgit2/include/git2.h +0 -5
- data/vendor/libgit2/include/git2/annotated_commit.h +0 -9
- data/vendor/libgit2/include/git2/attr.h +20 -38
- data/vendor/libgit2/include/git2/blame.h +25 -42
- data/vendor/libgit2/include/git2/blob.h +13 -45
- data/vendor/libgit2/include/git2/branch.h +1 -1
- data/vendor/libgit2/include/git2/buffer.h +16 -22
- data/vendor/libgit2/include/git2/checkout.h +32 -65
- data/vendor/libgit2/include/git2/cherrypick.h +7 -9
- data/vendor/libgit2/include/git2/clone.h +10 -12
- data/vendor/libgit2/include/git2/commit.h +3 -53
- data/vendor/libgit2/include/git2/common.h +8 -60
- data/vendor/libgit2/include/git2/config.h +19 -30
- data/vendor/libgit2/include/git2/describe.h +9 -32
- data/vendor/libgit2/include/git2/diff.h +156 -208
- data/vendor/libgit2/include/git2/errors.h +46 -54
- data/vendor/libgit2/include/git2/filter.h +0 -8
- data/vendor/libgit2/include/git2/ignore.h +2 -2
- data/vendor/libgit2/include/git2/index.h +52 -74
- data/vendor/libgit2/include/git2/indexer.h +6 -76
- data/vendor/libgit2/include/git2/inttypes.h +309 -0
- data/vendor/libgit2/include/git2/merge.h +18 -35
- data/vendor/libgit2/include/git2/net.h +5 -0
- data/vendor/libgit2/include/git2/notes.h +1 -1
- data/vendor/libgit2/include/git2/object.h +29 -17
- data/vendor/libgit2/include/git2/odb.h +11 -12
- data/vendor/libgit2/include/git2/odb_backend.h +9 -10
- data/vendor/libgit2/include/git2/oid.h +2 -2
- data/vendor/libgit2/include/git2/pack.h +3 -14
- data/vendor/libgit2/include/git2/proxy.h +8 -14
- data/vendor/libgit2/include/git2/rebase.h +6 -53
- data/vendor/libgit2/include/git2/refs.h +15 -33
- data/vendor/libgit2/include/git2/refspec.h +0 -17
- data/vendor/libgit2/include/git2/remote.h +24 -123
- data/vendor/libgit2/include/git2/repository.h +39 -76
- data/vendor/libgit2/include/git2/revert.h +4 -6
- data/vendor/libgit2/include/git2/revwalk.h +7 -7
- data/vendor/libgit2/include/git2/signature.h +2 -2
- data/vendor/libgit2/include/git2/stash.h +12 -15
- data/vendor/libgit2/include/git2/status.h +20 -33
- data/vendor/libgit2/include/git2/submodule.h +12 -30
- data/vendor/libgit2/include/git2/sys/commit.h +1 -1
- data/vendor/libgit2/include/git2/sys/config.h +13 -13
- data/vendor/libgit2/include/git2/sys/filter.h +6 -6
- data/vendor/libgit2/include/git2/sys/index.h +0 -3
- data/vendor/libgit2/include/git2/sys/mempack.h +35 -35
- data/vendor/libgit2/include/git2/sys/merge.h +4 -9
- data/vendor/libgit2/include/git2/sys/odb_backend.h +22 -66
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -76
- data/vendor/libgit2/include/git2/sys/repository.h +1 -5
- data/vendor/libgit2/include/git2/sys/stream.h +12 -92
- data/vendor/libgit2/include/git2/sys/time.h +31 -0
- data/vendor/libgit2/include/git2/sys/transport.h +83 -129
- data/vendor/libgit2/include/git2/tag.h +4 -13
- data/vendor/libgit2/include/git2/trace.h +2 -2
- data/vendor/libgit2/include/git2/transaction.h +0 -1
- data/vendor/libgit2/include/git2/transport.h +311 -11
- data/vendor/libgit2/include/git2/tree.h +4 -4
- data/vendor/libgit2/include/git2/types.h +111 -33
- data/vendor/libgit2/include/git2/version.h +4 -4
- data/vendor/libgit2/include/git2/worktree.h +13 -48
- data/vendor/libgit2/libgit2.pc.in +13 -0
- data/vendor/libgit2/src/CMakeLists.txt +164 -96
- data/vendor/libgit2/src/annotated_commit.c +8 -15
- data/vendor/libgit2/src/apply.c +31 -537
- data/vendor/libgit2/src/apply.h +1 -3
- data/vendor/libgit2/src/array.h +2 -2
- data/vendor/libgit2/src/attr.c +75 -81
- data/vendor/libgit2/src/attr_file.c +121 -207
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +53 -51
- data/vendor/libgit2/src/attrcache.h +1 -2
- data/vendor/libgit2/src/blame.c +20 -47
- data/vendor/libgit2/src/blame.h +1 -2
- data/vendor/libgit2/src/blame_git.c +20 -37
- data/vendor/libgit2/src/blob.c +42 -128
- data/vendor/libgit2/src/blob.h +2 -19
- data/vendor/libgit2/src/branch.c +43 -67
- data/vendor/libgit2/src/buf_text.c +6 -7
- data/vendor/libgit2/src/buffer.c +57 -69
- data/vendor/libgit2/src/buffer.h +1 -1
- data/vendor/libgit2/src/cache.c +45 -38
- data/vendor/libgit2/src/cache.h +3 -3
- data/vendor/libgit2/src/cc-compat.h +3 -20
- data/vendor/libgit2/src/checkout.c +90 -109
- data/vendor/libgit2/src/cherrypick.c +9 -15
- data/vendor/libgit2/src/clone.c +27 -49
- data/vendor/libgit2/src/clone.h +0 -4
- data/vendor/libgit2/src/commit.c +49 -117
- data/vendor/libgit2/src/commit.h +0 -7
- data/vendor/libgit2/src/commit_list.c +78 -30
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +91 -27
- data/vendor/libgit2/src/config.c +176 -194
- data/vendor/libgit2/src/config.h +20 -8
- data/vendor/libgit2/src/config_cache.c +35 -41
- data/vendor/libgit2/src/config_file.c +753 -439
- data/vendor/libgit2/src/config_file.h +73 -0
- data/vendor/libgit2/src/config_parse.c +63 -114
- data/vendor/libgit2/src/config_parse.h +16 -17
- data/vendor/libgit2/src/crlf.c +190 -219
- data/vendor/libgit2/src/delta.c +18 -25
- data/vendor/libgit2/src/describe.c +41 -42
- data/vendor/libgit2/src/diff.c +68 -53
- data/vendor/libgit2/src/diff.h +1 -2
- data/vendor/libgit2/src/diff_driver.c +49 -47
- data/vendor/libgit2/src/diff_file.c +17 -19
- data/vendor/libgit2/src/diff_file.h +1 -1
- data/vendor/libgit2/src/diff_generate.c +106 -162
- data/vendor/libgit2/src/diff_generate.h +3 -3
- data/vendor/libgit2/src/diff_parse.c +4 -4
- data/vendor/libgit2/src/diff_print.c +30 -42
- data/vendor/libgit2/src/diff_stats.c +7 -22
- data/vendor/libgit2/src/diff_tform.c +16 -16
- data/vendor/libgit2/src/diff_xdiff.c +3 -15
- data/vendor/libgit2/src/errors.c +39 -51
- data/vendor/libgit2/src/features.h.in +3 -11
- data/vendor/libgit2/src/fetch.c +5 -10
- data/vendor/libgit2/src/fetchhead.c +17 -17
- data/vendor/libgit2/src/filebuf.c +36 -32
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/{futils.c → fileops.c} +73 -80
- data/vendor/libgit2/src/{futils.h → fileops.h} +6 -6
- data/vendor/libgit2/src/filter.c +38 -46
- data/vendor/libgit2/src/filter.h +10 -0
- data/vendor/libgit2/src/fnmatch.c +248 -0
- data/vendor/libgit2/src/fnmatch.h +48 -0
- data/vendor/libgit2/src/global.c +63 -48
- data/vendor/libgit2/src/global.h +2 -0
- data/vendor/libgit2/src/hash.c +0 -61
- data/vendor/libgit2/src/hash.h +19 -20
- data/vendor/libgit2/src/hash/hash_collisiondetect.h +47 -0
- data/vendor/libgit2/src/hash/{sha1/common_crypto.c → hash_common_crypto.h} +17 -17
- data/vendor/libgit2/src/hash/{sha1/generic.c → hash_generic.c} +10 -22
- data/vendor/libgit2/src/hash/{sha1/generic.h → hash_generic.h} +10 -4
- data/vendor/libgit2/src/hash/hash_openssl.h +59 -0
- data/vendor/libgit2/src/hash/{sha1/win32.c → hash_win32.c} +37 -47
- data/vendor/libgit2/src/hash/{sha1/win32.h → hash_win32.h} +19 -6
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/sha1.c +3 -14
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/sha1.h +0 -0
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/ubc_check.c +0 -0
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/ubc_check.h +0 -0
- data/vendor/libgit2/src/hashsig.c +5 -5
- data/vendor/libgit2/src/idxmap.c +61 -107
- data/vendor/libgit2/src/idxmap.h +31 -153
- data/vendor/libgit2/src/ignore.c +47 -43
- data/vendor/libgit2/src/index.c +232 -337
- data/vendor/libgit2/src/index.h +1 -17
- data/vendor/libgit2/src/indexer.c +175 -346
- data/vendor/libgit2/src/integer.h +26 -71
- data/vendor/libgit2/src/iterator.c +70 -142
- data/vendor/libgit2/src/iterator.h +0 -15
- data/vendor/libgit2/src/khash.h +1 -3
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +100 -144
- data/vendor/libgit2/src/merge_driver.c +11 -11
- data/vendor/libgit2/src/merge_file.c +2 -2
- data/vendor/libgit2/src/mwindow.c +29 -24
- data/vendor/libgit2/src/mwindow.h +4 -4
- data/vendor/libgit2/src/netops.c +156 -55
- data/vendor/libgit2/src/netops.h +23 -3
- data/vendor/libgit2/src/notes.c +11 -16
- data/vendor/libgit2/src/object.c +69 -120
- data/vendor/libgit2/src/object.h +9 -22
- data/vendor/libgit2/src/object_api.c +8 -8
- data/vendor/libgit2/src/odb.c +93 -116
- data/vendor/libgit2/src/odb.h +7 -8
- data/vendor/libgit2/src/odb_loose.c +55 -62
- data/vendor/libgit2/src/odb_mempack.c +34 -21
- data/vendor/libgit2/src/odb_pack.c +14 -18
- data/vendor/libgit2/src/offmap.c +35 -53
- data/vendor/libgit2/src/offmap.h +21 -108
- data/vendor/libgit2/src/oid.c +7 -12
- data/vendor/libgit2/src/oidmap.c +47 -49
- data/vendor/libgit2/src/oidmap.h +24 -101
- data/vendor/libgit2/src/pack-objects.c +87 -88
- data/vendor/libgit2/src/pack-objects.h +8 -2
- data/vendor/libgit2/src/pack.c +101 -99
- data/vendor/libgit2/src/pack.h +19 -17
- data/vendor/libgit2/src/parse.c +0 -10
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +4 -4
- data/vendor/libgit2/src/patch_generate.c +20 -20
- data/vendor/libgit2/src/patch_parse.c +63 -151
- data/vendor/libgit2/src/path.c +104 -117
- data/vendor/libgit2/src/path.h +71 -3
- data/vendor/libgit2/src/pathspec.c +19 -19
- data/vendor/libgit2/src/pool.c +22 -26
- data/vendor/libgit2/src/pool.h +7 -7
- data/vendor/libgit2/src/posix.c +10 -10
- data/vendor/libgit2/src/posix.h +1 -12
- data/vendor/libgit2/src/proxy.c +3 -8
- data/vendor/libgit2/src/push.c +31 -37
- data/vendor/libgit2/src/push.h +1 -2
- data/vendor/libgit2/src/rebase.c +59 -115
- data/vendor/libgit2/src/refdb.c +3 -15
- data/vendor/libgit2/src/refdb_fs.c +254 -381
- data/vendor/libgit2/src/reflog.c +15 -13
- data/vendor/libgit2/src/refs.c +88 -118
- data/vendor/libgit2/src/refs.h +3 -5
- data/vendor/libgit2/src/refspec.c +37 -56
- data/vendor/libgit2/src/refspec.h +1 -1
- data/vendor/libgit2/src/remote.c +215 -266
- data/vendor/libgit2/src/remote.h +2 -11
- data/vendor/libgit2/src/repository.c +225 -280
- data/vendor/libgit2/src/repository.h +40 -52
- data/vendor/libgit2/src/reset.c +8 -8
- data/vendor/libgit2/src/revert.c +9 -14
- data/vendor/libgit2/src/revparse.c +48 -47
- data/vendor/libgit2/src/revwalk.c +57 -120
- data/vendor/libgit2/src/revwalk.h +1 -22
- data/vendor/libgit2/src/settings.c +10 -47
- data/vendor/libgit2/src/signature.c +11 -11
- data/vendor/libgit2/src/sortedcache.c +36 -22
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +99 -125
- data/vendor/libgit2/src/status.c +22 -28
- data/vendor/libgit2/src/stream.h +2 -17
- data/vendor/libgit2/src/streams/curl.c +385 -0
- data/vendor/libgit2/src/{allocators/stdalloc.h → streams/curl.h} +5 -5
- data/vendor/libgit2/src/streams/openssl.c +114 -224
- data/vendor/libgit2/src/streams/openssl.h +108 -4
- data/vendor/libgit2/src/streams/socket.c +30 -55
- data/vendor/libgit2/src/streams/stransport.c +32 -57
- data/vendor/libgit2/src/streams/stransport.h +0 -5
- data/vendor/libgit2/src/streams/tls.c +19 -50
- data/vendor/libgit2/src/streams/tls.h +4 -12
- data/vendor/libgit2/src/strmap.c +74 -47
- data/vendor/libgit2/src/strmap.h +33 -108
- data/vendor/libgit2/src/submodule.c +216 -272
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +19 -29
- data/vendor/libgit2/src/tag.c +28 -41
- data/vendor/libgit2/src/tag.h +1 -2
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +3 -3
- data/vendor/libgit2/src/trailer.c +38 -52
- data/vendor/libgit2/src/transaction.c +29 -30
- data/vendor/libgit2/src/transport.c +5 -5
- data/vendor/libgit2/src/transports/auth.c +11 -15
- data/vendor/libgit2/src/transports/auth.h +3 -10
- data/vendor/libgit2/src/transports/auth_negotiate.c +18 -33
- data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
- data/vendor/libgit2/src/transports/cred.c +24 -24
- data/vendor/libgit2/src/{allocators/win32_crtdbg.h → transports/cred.h} +4 -5
- data/vendor/libgit2/src/transports/git.c +31 -26
- data/vendor/libgit2/src/transports/http.c +348 -881
- data/vendor/libgit2/src/transports/http.h +0 -2
- data/vendor/libgit2/src/transports/local.c +35 -35
- data/vendor/libgit2/src/transports/smart.c +47 -70
- data/vendor/libgit2/src/transports/smart.h +4 -3
- data/vendor/libgit2/src/transports/smart_pkt.c +40 -43
- data/vendor/libgit2/src/transports/smart_protocol.c +116 -96
- data/vendor/libgit2/src/transports/ssh.c +66 -77
- data/vendor/libgit2/src/transports/winhttp.c +314 -318
- data/vendor/libgit2/src/tree-cache.c +12 -19
- data/vendor/libgit2/src/tree.c +142 -103
- data/vendor/libgit2/src/tree.h +12 -1
- data/vendor/libgit2/src/unix/map.c +3 -3
- data/vendor/libgit2/src/unix/posix.h +11 -1
- data/vendor/libgit2/src/userdiff.h +1 -3
- data/vendor/libgit2/src/util.c +56 -70
- data/vendor/libgit2/src/util.h +156 -28
- data/vendor/libgit2/src/vector.c +4 -4
- data/vendor/libgit2/src/win32/dir.c +3 -3
- data/vendor/libgit2/src/win32/findfile.c +3 -3
- data/vendor/libgit2/src/win32/map.c +11 -9
- data/vendor/libgit2/src/win32/msvc-compat.h +0 -6
- data/vendor/libgit2/src/win32/path_w32.c +9 -113
- data/vendor/libgit2/src/win32/path_w32.h +29 -18
- data/vendor/libgit2/src/win32/posix.h +4 -1
- data/vendor/libgit2/src/win32/posix_w32.c +45 -70
- data/vendor/libgit2/src/win32/precompiled.h +2 -0
- data/vendor/libgit2/src/win32/thread.c +10 -5
- data/vendor/libgit2/src/win32/w32_buffer.c +5 -9
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -3
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +75 -26
- data/vendor/libgit2/src/win32/w32_stack.c +11 -6
- data/vendor/libgit2/src/win32/w32_stack.h +3 -3
- data/vendor/libgit2/src/win32/w32_util.c +64 -27
- data/vendor/libgit2/src/win32/w32_util.h +49 -5
- data/vendor/libgit2/src/worktree.c +60 -95
- data/vendor/libgit2/src/worktree.h +0 -2
- data/vendor/libgit2/src/xdiff/xdiffi.c +5 -7
- data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
- data/vendor/libgit2/src/xdiff/xmerge.c +15 -27
- data/vendor/libgit2/src/xdiff/xpatience.c +0 -3
- data/vendor/libgit2/src/zstream.c +4 -4
- metadata +33 -122
- data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +0 -28
- data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +0 -38
- data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +0 -37
- data/vendor/libgit2/cmake/Modules/FindmbedTLS.cmake +0 -93
- data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +0 -110
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +0 -53
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +0 -124
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +0 -66
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +0 -21
- data/vendor/libgit2/deps/ntlmclient/compat.h +0 -33
- data/vendor/libgit2/deps/ntlmclient/crypt.h +0 -64
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +0 -120
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +0 -18
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -145
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +0 -18
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +0 -130
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +0 -21
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +0 -1420
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +0 -174
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +0 -320
- data/vendor/libgit2/deps/ntlmclient/unicode.h +0 -36
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +0 -445
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +0 -201
- data/vendor/libgit2/deps/ntlmclient/utf8.h +0 -1257
- data/vendor/libgit2/deps/ntlmclient/util.c +0 -21
- data/vendor/libgit2/deps/ntlmclient/util.h +0 -14
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +0 -140
- data/vendor/libgit2/deps/pcre/COPYING +0 -5
- data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +0 -22
- data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +0 -17
- data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +0 -58
- data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +0 -29
- data/vendor/libgit2/deps/pcre/config.h.in +0 -57
- data/vendor/libgit2/deps/pcre/pcre.h +0 -641
- data/vendor/libgit2/deps/pcre/pcre_byte_order.c +0 -319
- data/vendor/libgit2/deps/pcre/pcre_chartables.c +0 -198
- data/vendor/libgit2/deps/pcre/pcre_compile.c +0 -9800
- data/vendor/libgit2/deps/pcre/pcre_config.c +0 -190
- data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +0 -3676
- data/vendor/libgit2/deps/pcre/pcre_exec.c +0 -7173
- data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +0 -245
- data/vendor/libgit2/deps/pcre/pcre_get.c +0 -669
- data/vendor/libgit2/deps/pcre/pcre_globals.c +0 -86
- data/vendor/libgit2/deps/pcre/pcre_internal.h +0 -2787
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +0 -11913
- data/vendor/libgit2/deps/pcre/pcre_maketables.c +0 -156
- data/vendor/libgit2/deps/pcre/pcre_newline.c +0 -210
- data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +0 -94
- data/vendor/libgit2/deps/pcre/pcre_printint.c +0 -834
- data/vendor/libgit2/deps/pcre/pcre_refcount.c +0 -92
- data/vendor/libgit2/deps/pcre/pcre_string_utils.c +0 -211
- data/vendor/libgit2/deps/pcre/pcre_study.c +0 -1686
- data/vendor/libgit2/deps/pcre/pcre_tables.c +0 -727
- data/vendor/libgit2/deps/pcre/pcre_ucd.c +0 -3644
- data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +0 -301
- data/vendor/libgit2/deps/pcre/pcre_version.c +0 -98
- data/vendor/libgit2/deps/pcre/pcre_xclass.c +0 -268
- data/vendor/libgit2/deps/pcre/pcreposix.c +0 -421
- data/vendor/libgit2/deps/pcre/pcreposix.h +0 -117
- data/vendor/libgit2/deps/pcre/ucp.h +0 -224
- data/vendor/libgit2/deps/winhttp/COPYING.GPL +0 -993
- data/vendor/libgit2/deps/winhttp/COPYING.LGPL +0 -502
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/apply.h +0 -149
- data/vendor/libgit2/include/git2/cert.h +0 -135
- data/vendor/libgit2/include/git2/cred.h +0 -308
- data/vendor/libgit2/include/git2/deprecated.h +0 -493
- data/vendor/libgit2/include/git2/mailmap.h +0 -115
- data/vendor/libgit2/include/git2/sys/alloc.h +0 -101
- data/vendor/libgit2/include/git2/sys/cred.h +0 -90
- data/vendor/libgit2/include/git2/sys/path.h +0 -64
- data/vendor/libgit2/src/alloc.c +0 -43
- data/vendor/libgit2/src/alloc.h +0 -40
- data/vendor/libgit2/src/allocators/stdalloc.c +0 -119
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
- data/vendor/libgit2/src/config_backend.h +0 -96
- data/vendor/libgit2/src/config_entries.c +0 -229
- data/vendor/libgit2/src/config_entries.h +0 -24
- data/vendor/libgit2/src/config_mem.c +0 -220
- data/vendor/libgit2/src/config_snapshot.c +0 -206
- data/vendor/libgit2/src/errors.h +0 -81
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +0 -48
- data/vendor/libgit2/src/hash/sha1/collisiondetect.h +0 -19
- data/vendor/libgit2/src/hash/sha1/common_crypto.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/mbedtls.h +0 -19
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/openssl.h +0 -19
- data/vendor/libgit2/src/mailmap.c +0 -485
- data/vendor/libgit2/src/mailmap.h +0 -35
- data/vendor/libgit2/src/net.c +0 -184
- data/vendor/libgit2/src/net.h +0 -36
- data/vendor/libgit2/src/reader.c +0 -265
- data/vendor/libgit2/src/reader.h +0 -107
- data/vendor/libgit2/src/regexp.c +0 -221
- data/vendor/libgit2/src/regexp.h +0 -97
- data/vendor/libgit2/src/streams/mbedtls.c +0 -483
- data/vendor/libgit2/src/streams/mbedtls.h +0 -23
- data/vendor/libgit2/src/streams/registry.c +0 -118
- data/vendor/libgit2/src/streams/registry.h +0 -19
- data/vendor/libgit2/src/transports/auth_ntlm.c +0 -223
- data/vendor/libgit2/src/transports/auth_ntlm.h +0 -35
- data/vendor/libgit2/src/wildmatch.c +0 -320
- data/vendor/libgit2/src/wildmatch.h +0 -23
- data/vendor/libgit2/src/win32/w32_common.h +0 -39
data/vendor/libgit2/src/oid.c
CHANGED
@@ -17,7 +17,7 @@ static char to_hex[] = "0123456789abcdef";
|
|
17
17
|
|
18
18
|
static int oid_error_invalid(const char *msg)
|
19
19
|
{
|
20
|
-
|
20
|
+
giterr_set(GITERR_INVALID, "unable to parse OID - %s", msg);
|
21
21
|
return -1;
|
22
22
|
}
|
23
23
|
|
@@ -237,7 +237,7 @@ int git_oid_streq(const git_oid *oid_a, const char *str)
|
|
237
237
|
return git_oid_strcmp(oid_a, str) == 0 ? 0 : -1;
|
238
238
|
}
|
239
239
|
|
240
|
-
int
|
240
|
+
int git_oid_iszero(const git_oid *oid_a)
|
241
241
|
{
|
242
242
|
const unsigned char *a = oid_a->id;
|
243
243
|
unsigned int i;
|
@@ -247,11 +247,6 @@ int git_oid_is_zero(const git_oid *oid_a)
|
|
247
247
|
return 1;
|
248
248
|
}
|
249
249
|
|
250
|
-
int git_oid_iszero(const git_oid *oid_a)
|
251
|
-
{
|
252
|
-
return git_oid_is_zero(oid_a);
|
253
|
-
}
|
254
|
-
|
255
250
|
typedef short node_index;
|
256
251
|
|
257
252
|
typedef union {
|
@@ -268,7 +263,7 @@ struct git_oid_shorten {
|
|
268
263
|
static int resize_trie(git_oid_shorten *self, size_t new_size)
|
269
264
|
{
|
270
265
|
self->nodes = git__reallocarray(self->nodes, new_size, sizeof(trie_node));
|
271
|
-
|
266
|
+
GITERR_CHECK_ALLOC(self->nodes);
|
272
267
|
|
273
268
|
if (new_size > self->size) {
|
274
269
|
memset(&self->nodes[self->size], 0x0, (new_size - self->size) * sizeof(trie_node));
|
@@ -386,7 +381,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
|
|
386
381
|
node_index idx;
|
387
382
|
|
388
383
|
if (os->full) {
|
389
|
-
|
384
|
+
giterr_set(GITERR_INVALID, "unable to shorten OID - OID set full");
|
390
385
|
return -1;
|
391
386
|
}
|
392
387
|
|
@@ -401,7 +396,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
|
|
401
396
|
trie_node *node;
|
402
397
|
|
403
398
|
if (c == -1) {
|
404
|
-
|
399
|
+
giterr_set(GITERR_INVALID, "unable to shorten OID - invalid hex value");
|
405
400
|
return -1;
|
406
401
|
}
|
407
402
|
|
@@ -416,7 +411,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
|
|
416
411
|
node = push_leaf(os, idx, git__fromhex(tail[0]), &tail[1]);
|
417
412
|
if (node == NULL) {
|
418
413
|
if (os->full)
|
419
|
-
|
414
|
+
giterr_set(GITERR_INVALID, "unable to shorten OID - OID set full");
|
420
415
|
return -1;
|
421
416
|
}
|
422
417
|
}
|
@@ -424,7 +419,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
|
|
424
419
|
if (node->children[c] == 0) {
|
425
420
|
if (push_leaf(os, idx, c, &text_oid[i + 1]) == NULL) {
|
426
421
|
if (os->full)
|
427
|
-
|
422
|
+
giterr_set(GITERR_INVALID, "unable to shorten OID - OID set full");
|
428
423
|
return -1;
|
429
424
|
}
|
430
425
|
break;
|
data/vendor/libgit2/src/oidmap.c
CHANGED
@@ -7,15 +7,6 @@
|
|
7
7
|
|
8
8
|
#include "oidmap.h"
|
9
9
|
|
10
|
-
#define kmalloc git__malloc
|
11
|
-
#define kcalloc git__calloc
|
12
|
-
#define krealloc git__realloc
|
13
|
-
#define kreallocarray git__reallocarray
|
14
|
-
#define kfree git__free
|
15
|
-
#include "khash.h"
|
16
|
-
|
17
|
-
__KHASH_TYPE(oid, const git_oid *, void *)
|
18
|
-
|
19
10
|
GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid)
|
20
11
|
{
|
21
12
|
khint_t h;
|
@@ -25,12 +16,9 @@ GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid)
|
|
25
16
|
|
26
17
|
__KHASH_IMPL(oid, static kh_inline, const git_oid *, void *, 1, git_oidmap_hash, git_oid_equal)
|
27
18
|
|
28
|
-
|
19
|
+
git_oidmap *git_oidmap_alloc()
|
29
20
|
{
|
30
|
-
|
31
|
-
GIT_ERROR_CHECK_ALLOC(*out);
|
32
|
-
|
33
|
-
return 0;
|
21
|
+
return kh_init(oid);
|
34
22
|
}
|
35
23
|
|
36
24
|
void git_oidmap_free(git_oidmap *map)
|
@@ -48,60 +36,70 @@ size_t git_oidmap_size(git_oidmap *map)
|
|
48
36
|
return kh_size(map);
|
49
37
|
}
|
50
38
|
|
51
|
-
|
39
|
+
size_t git_oidmap_lookup_index(git_oidmap *map, const git_oid *key)
|
52
40
|
{
|
53
|
-
|
54
|
-
if (idx == kh_end(map) || !kh_exist(map, idx))
|
55
|
-
return NULL;
|
56
|
-
return kh_val(map, idx);
|
41
|
+
return kh_get(oid, map, key);
|
57
42
|
}
|
58
43
|
|
59
|
-
int
|
44
|
+
int git_oidmap_valid_index(git_oidmap *map, size_t idx)
|
60
45
|
{
|
61
|
-
|
62
|
-
|
46
|
+
return idx != kh_end(map);
|
47
|
+
}
|
63
48
|
|
64
|
-
|
65
|
-
|
66
|
-
|
49
|
+
int git_oidmap_exists(git_oidmap *map, const git_oid *key)
|
50
|
+
{
|
51
|
+
return kh_get(oid, map, key) != kh_end(map);
|
52
|
+
}
|
67
53
|
|
68
|
-
|
69
|
-
|
54
|
+
int git_oidmap_has_data(git_oidmap *map, size_t idx)
|
55
|
+
{
|
56
|
+
return kh_exist(map, idx);
|
57
|
+
}
|
70
58
|
|
71
|
-
|
59
|
+
const git_oid *git_oidmap_key(git_oidmap *map, size_t idx)
|
60
|
+
{
|
61
|
+
return kh_key(map, idx);
|
62
|
+
}
|
72
63
|
|
73
|
-
|
64
|
+
void git_oidmap_set_key_at(git_oidmap *map, size_t idx, git_oid *key)
|
65
|
+
{
|
66
|
+
kh_key(map, idx) = key;
|
74
67
|
}
|
75
68
|
|
76
|
-
|
69
|
+
void *git_oidmap_value_at(git_oidmap *map, size_t idx)
|
77
70
|
{
|
78
|
-
|
79
|
-
if (idx == kh_end(map))
|
80
|
-
return GIT_ENOTFOUND;
|
81
|
-
kh_del(oid, map, idx);
|
82
|
-
return 0;
|
71
|
+
return kh_val(map, idx);
|
83
72
|
}
|
84
73
|
|
85
|
-
|
74
|
+
void git_oidmap_set_value_at(git_oidmap *map, size_t idx, void *value)
|
86
75
|
{
|
87
|
-
|
76
|
+
kh_val(map, idx) = value;
|
88
77
|
}
|
89
78
|
|
90
|
-
|
79
|
+
void git_oidmap_delete_at(git_oidmap *map, size_t idx)
|
91
80
|
{
|
92
|
-
|
81
|
+
kh_del(oid, map, idx);
|
82
|
+
}
|
93
83
|
|
94
|
-
|
95
|
-
|
84
|
+
int git_oidmap_put(git_oidmap *map, const git_oid *key, int *err)
|
85
|
+
{
|
86
|
+
return kh_put(oid, map, key, err);
|
87
|
+
}
|
96
88
|
|
97
|
-
|
98
|
-
|
89
|
+
void git_oidmap_insert(git_oidmap *map, const git_oid *key, void *value, int *rval)
|
90
|
+
{
|
91
|
+
khiter_t idx = kh_put(oid, map, key, rval);
|
99
92
|
|
100
|
-
if (
|
101
|
-
*
|
102
|
-
|
103
|
-
|
104
|
-
|
93
|
+
if ((*rval) >= 0) {
|
94
|
+
if ((*rval) == 0)
|
95
|
+
kh_key(map, idx) = key;
|
96
|
+
kh_val(map, idx) = value;
|
97
|
+
}
|
98
|
+
}
|
105
99
|
|
106
|
-
|
100
|
+
void git_oidmap_delete(git_oidmap *map, const git_oid *key)
|
101
|
+
{
|
102
|
+
khiter_t idx = git_oidmap_lookup_index(map, key);
|
103
|
+
if (git_oidmap_valid_index(map, idx))
|
104
|
+
git_oidmap_delete_at(map, idx);
|
107
105
|
}
|
data/vendor/libgit2/src/oidmap.h
CHANGED
@@ -11,118 +11,41 @@
|
|
11
11
|
|
12
12
|
#include "git2/oid.h"
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
#define kmalloc git__malloc
|
15
|
+
#define kcalloc git__calloc
|
16
|
+
#define krealloc git__realloc
|
17
|
+
#define kreallocarray git__reallocarray
|
18
|
+
#define kfree git__free
|
19
|
+
#include "khash.h"
|
16
20
|
|
17
|
-
|
18
|
-
|
19
|
-
*
|
20
|
-
* @param out Pointer to the map that shall be allocated.
|
21
|
-
* @return 0 on success, an error code if allocation has failed.
|
22
|
-
*/
|
23
|
-
int git_oidmap_new(git_oidmap **out);
|
21
|
+
__KHASH_TYPE(oid, const git_oid *, void *)
|
22
|
+
typedef khash_t(oid) git_oidmap;
|
24
23
|
|
25
|
-
|
26
|
-
* Free memory associated with the map.
|
27
|
-
*
|
28
|
-
* Note that this function will _not_ free values added to this
|
29
|
-
* map.
|
30
|
-
*
|
31
|
-
* @param map Pointer to the map that is to be free'd. May be
|
32
|
-
* `NULL`.
|
33
|
-
*/
|
24
|
+
git_oidmap *git_oidmap_alloc(void);
|
34
25
|
void git_oidmap_free(git_oidmap *map);
|
35
|
-
|
36
|
-
/**
|
37
|
-
* Clear all entries from the map.
|
38
|
-
*
|
39
|
-
* This function will remove all entries from the associated map.
|
40
|
-
* Memory associated with it will not be released, though.
|
41
|
-
*
|
42
|
-
* @param map Pointer to the map that shall be cleared. May be
|
43
|
-
* `NULL`.
|
44
|
-
*/
|
45
26
|
void git_oidmap_clear(git_oidmap *map);
|
46
27
|
|
47
|
-
/**
|
48
|
-
* Return the number of elements in the map.
|
49
|
-
*
|
50
|
-
* @parameter map map containing the elements
|
51
|
-
* @return number of elements in the map
|
52
|
-
*/
|
53
28
|
size_t git_oidmap_size(git_oidmap *map);
|
54
29
|
|
55
|
-
|
56
|
-
*
|
57
|
-
*
|
58
|
-
* @param map map to search key in
|
59
|
-
* @param key key to search for
|
60
|
-
* @return value associated with the given key or NULL if the key was not found
|
61
|
-
*/
|
62
|
-
void *git_oidmap_get(git_oidmap *map, const git_oid *key);
|
30
|
+
size_t git_oidmap_lookup_index(git_oidmap *map, const git_oid *key);
|
31
|
+
int git_oidmap_valid_index(git_oidmap *map, size_t idx);
|
63
32
|
|
64
|
-
|
65
|
-
*
|
66
|
-
*
|
67
|
-
* If the map has no corresponding entry for the given key, a new
|
68
|
-
* entry will be created with the given value. If an entry exists
|
69
|
-
* already, its value will be updated to match the given value.
|
70
|
-
*
|
71
|
-
* @param map map to create new entry in
|
72
|
-
* @param key key to set
|
73
|
-
* @param value value to associate the key with; may be NULL
|
74
|
-
* @return zero if the key was successfully set, a negative error
|
75
|
-
* code otherwise
|
76
|
-
*/
|
77
|
-
int git_oidmap_set(git_oidmap *map, const git_oid *key, void *value);
|
33
|
+
int git_oidmap_exists(git_oidmap *map, const git_oid *key);
|
34
|
+
int git_oidmap_has_data(git_oidmap *map, size_t idx);
|
78
35
|
|
79
|
-
|
80
|
-
*
|
81
|
-
*
|
82
|
-
*
|
83
|
-
*
|
84
|
-
*
|
85
|
-
* @param map map to delete key in
|
86
|
-
* @param key key to delete
|
87
|
-
* @return `0` if the key has been deleted, GIT_ENOTFOUND if no
|
88
|
-
* such key was found, a negative code in case of an
|
89
|
-
* error
|
90
|
-
*/
|
91
|
-
int git_oidmap_delete(git_oidmap *map, const git_oid *key);
|
36
|
+
const git_oid *git_oidmap_key(git_oidmap *map, size_t idx);
|
37
|
+
void git_oidmap_set_key_at(git_oidmap *map, size_t idx, git_oid *key);
|
38
|
+
void *git_oidmap_value_at(git_oidmap *map, size_t idx);
|
39
|
+
void git_oidmap_set_value_at(git_oidmap *map, size_t idx, void *value);
|
40
|
+
void git_oidmap_delete_at(git_oidmap *map, size_t idx);
|
92
41
|
|
93
|
-
|
94
|
-
*
|
95
|
-
*
|
96
|
-
* @param map map to query for the key
|
97
|
-
* @param key key to search for
|
98
|
-
* @return 0 if the key has not been found, 1 otherwise
|
99
|
-
*/
|
100
|
-
int git_oidmap_exists(git_oidmap *map, const git_oid *key);
|
42
|
+
int git_oidmap_put(git_oidmap *map, const git_oid *key, int *err);
|
43
|
+
void git_oidmap_insert(git_oidmap *map, const git_oid *key, void *value, int *rval);
|
44
|
+
void git_oidmap_delete(git_oidmap *map, const git_oid *key);
|
101
45
|
|
102
|
-
|
103
|
-
* Iterate over entries of the map.
|
104
|
-
*
|
105
|
-
* This functions allows to iterate over all key-value entries of
|
106
|
-
* the map. The current position is stored in the `iter` variable
|
107
|
-
* and should be initialized to `0` before the first call to this
|
108
|
-
* function.
|
109
|
-
*
|
110
|
-
* @param map map to iterate over
|
111
|
-
* @param value pointer to the variable where to store the current
|
112
|
-
* value. May be NULL.
|
113
|
-
* @param iter iterator storing the current position. Initialize
|
114
|
-
* with zero previous to the first call.
|
115
|
-
* @param key pointer to the variable where to store the current
|
116
|
-
* key. May be NULL.
|
117
|
-
* @return `0` if the next entry was correctly retrieved.
|
118
|
-
* GIT_ITEROVER if no entries are left. A negative error
|
119
|
-
* code otherwise.
|
120
|
-
*/
|
121
|
-
int git_oidmap_iterate(void **value, git_oidmap *map, size_t *iter, const git_oid **key);
|
46
|
+
#define git_oidmap_foreach_value kh_foreach_value
|
122
47
|
|
123
|
-
#define
|
124
|
-
|
125
|
-
code; \
|
126
|
-
} }
|
48
|
+
#define git_oidmap_begin kh_begin
|
49
|
+
#define git_oidmap_end kh_end
|
127
50
|
|
128
51
|
#endif
|
@@ -38,13 +38,7 @@ struct tree_walk_context {
|
|
38
38
|
|
39
39
|
struct pack_write_context {
|
40
40
|
git_indexer *indexer;
|
41
|
-
|
42
|
-
};
|
43
|
-
|
44
|
-
struct walk_object {
|
45
|
-
git_oid id;
|
46
|
-
unsigned int uninteresting:1,
|
47
|
-
seen:1;
|
41
|
+
git_transfer_progress *stats;
|
48
42
|
};
|
49
43
|
|
50
44
|
#ifdef GIT_THREADS
|
@@ -105,7 +99,7 @@ static int packbuilder_config(git_packbuilder *pb)
|
|
105
99
|
ret = git_config_get_int64(&val, config, KEY); \
|
106
100
|
if (!ret) { \
|
107
101
|
if (!git__is_sizet(val)) { \
|
108
|
-
|
102
|
+
giterr_set(GITERR_CONFIG, \
|
109
103
|
"configuration value '%s' is too large", KEY); \
|
110
104
|
ret = -1; \
|
111
105
|
goto out; \
|
@@ -139,15 +133,17 @@ int git_packbuilder_new(git_packbuilder **out, git_repository *repo)
|
|
139
133
|
*out = NULL;
|
140
134
|
|
141
135
|
pb = git__calloc(1, sizeof(*pb));
|
142
|
-
|
136
|
+
GITERR_CHECK_ALLOC(pb);
|
143
137
|
|
144
|
-
|
138
|
+
pb->object_ix = git_oidmap_alloc();
|
139
|
+
if (!pb->object_ix)
|
145
140
|
goto on_error;
|
146
141
|
|
147
|
-
|
142
|
+
pb->walk_objects = git_oidmap_alloc();
|
143
|
+
if (!pb->walk_objects)
|
148
144
|
goto on_error;
|
149
145
|
|
150
|
-
git_pool_init(&pb->object_pool, sizeof(
|
146
|
+
git_pool_init(&pb->object_pool, sizeof(git_walk_object));
|
151
147
|
|
152
148
|
pb->repo = repo;
|
153
149
|
pb->nr_threads = 1; /* do not spawn any thread by default */
|
@@ -164,7 +160,7 @@ int git_packbuilder_new(git_packbuilder **out, git_repository *repo)
|
|
164
160
|
git_mutex_init(&pb->progress_mutex) ||
|
165
161
|
git_cond_init(&pb->progress_cond))
|
166
162
|
{
|
167
|
-
|
163
|
+
giterr_set(GITERR_OS, "failed to initialize packbuilder mutex");
|
168
164
|
goto on_error;
|
169
165
|
}
|
170
166
|
|
@@ -192,25 +188,25 @@ unsigned int git_packbuilder_set_threads(git_packbuilder *pb, unsigned int n)
|
|
192
188
|
return pb->nr_threads;
|
193
189
|
}
|
194
190
|
|
195
|
-
static
|
191
|
+
static void rehash(git_packbuilder *pb)
|
196
192
|
{
|
197
193
|
git_pobject *po;
|
194
|
+
khiter_t pos;
|
198
195
|
size_t i;
|
196
|
+
int ret;
|
199
197
|
|
200
198
|
git_oidmap_clear(pb->object_ix);
|
201
|
-
|
202
199
|
for (i = 0, po = pb->object_list; i < pb->nr_objects; i++, po++) {
|
203
|
-
|
204
|
-
|
200
|
+
pos = git_oidmap_put(pb->object_ix, &po->id, &ret);
|
201
|
+
git_oidmap_set_value_at(pb->object_ix, pos, po);
|
205
202
|
}
|
206
|
-
|
207
|
-
return 0;
|
208
203
|
}
|
209
204
|
|
210
205
|
int git_packbuilder_insert(git_packbuilder *pb, const git_oid *oid,
|
211
206
|
const char *name)
|
212
207
|
{
|
213
208
|
git_pobject *po;
|
209
|
+
khiter_t pos;
|
214
210
|
size_t newsize;
|
215
211
|
int ret;
|
216
212
|
|
@@ -222,11 +218,11 @@ int git_packbuilder_insert(git_packbuilder *pb, const git_oid *oid,
|
|
222
218
|
return 0;
|
223
219
|
|
224
220
|
if (pb->nr_objects >= pb->nr_alloc) {
|
225
|
-
|
226
|
-
|
221
|
+
GITERR_CHECK_ALLOC_ADD(&newsize, pb->nr_alloc, 1024);
|
222
|
+
GITERR_CHECK_ALLOC_MULTIPLY(&newsize, newsize, 3 / 2);
|
227
223
|
|
228
224
|
if (!git__is_uint32(newsize)) {
|
229
|
-
|
225
|
+
giterr_set(GITERR_NOMEMORY, "packfile too large to fit in memory.");
|
230
226
|
return -1;
|
231
227
|
}
|
232
228
|
|
@@ -234,10 +230,8 @@ int git_packbuilder_insert(git_packbuilder *pb, const git_oid *oid,
|
|
234
230
|
|
235
231
|
pb->object_list = git__reallocarray(pb->object_list,
|
236
232
|
pb->nr_alloc, sizeof(*po));
|
237
|
-
|
238
|
-
|
239
|
-
if (rehash(pb) < 0)
|
240
|
-
return -1;
|
233
|
+
GITERR_CHECK_ALLOC(pb->object_list);
|
234
|
+
rehash(pb);
|
241
235
|
}
|
242
236
|
|
243
237
|
po = pb->object_list + pb->nr_objects;
|
@@ -250,10 +244,13 @@ int git_packbuilder_insert(git_packbuilder *pb, const git_oid *oid,
|
|
250
244
|
git_oid_cpy(&po->id, oid);
|
251
245
|
po->hash = name_hash(name);
|
252
246
|
|
253
|
-
|
254
|
-
|
255
|
-
|
247
|
+
pos = git_oidmap_put(pb->object_ix, &po->id, &ret);
|
248
|
+
if (ret < 0) {
|
249
|
+
giterr_set_oom();
|
250
|
+
return ret;
|
256
251
|
}
|
252
|
+
assert(ret != 0);
|
253
|
+
git_oidmap_set_value_at(pb->object_ix, pos, po);
|
257
254
|
|
258
255
|
pb->done = false;
|
259
256
|
|
@@ -269,7 +266,7 @@ int git_packbuilder_insert(git_packbuilder *pb, const git_oid *oid,
|
|
269
266
|
pb->nr_objects, 0, pb->progress_cb_payload);
|
270
267
|
|
271
268
|
if (ret)
|
272
|
-
return
|
269
|
+
return giterr_set_after_callback(ret);
|
273
270
|
}
|
274
271
|
}
|
275
272
|
|
@@ -298,7 +295,7 @@ static int get_delta(void **out, git_odb *odb, git_pobject *po)
|
|
298
295
|
goto on_error;
|
299
296
|
|
300
297
|
if (error == GIT_EBUFS || delta_size != po->delta_size) {
|
301
|
-
|
298
|
+
giterr_set(GITERR_INVALID, "delta size changed");
|
302
299
|
goto on_error;
|
303
300
|
}
|
304
301
|
|
@@ -321,7 +318,7 @@ static int write_object(
|
|
321
318
|
void *cb_data)
|
322
319
|
{
|
323
320
|
git_odb_object *obj = NULL;
|
324
|
-
|
321
|
+
git_otype type;
|
325
322
|
unsigned char hdr[10], *zbuf = NULL;
|
326
323
|
void *data = NULL;
|
327
324
|
size_t hdr_len, zbuf_len = COMPRESS_BUFLEN, data_len;
|
@@ -339,7 +336,7 @@ static int write_object(
|
|
339
336
|
goto done;
|
340
337
|
|
341
338
|
data_len = po->delta_size;
|
342
|
-
type =
|
339
|
+
type = GIT_OBJ_REF_DELTA;
|
343
340
|
} else {
|
344
341
|
if ((error = git_odb_read(&obj, pb->odb, &po->id)) < 0)
|
345
342
|
goto done;
|
@@ -356,7 +353,7 @@ static int write_object(
|
|
356
353
|
(error = git_hash_update(&pb->ctx, hdr, hdr_len)) < 0)
|
357
354
|
goto done;
|
358
355
|
|
359
|
-
if (type ==
|
356
|
+
if (type == GIT_OBJ_REF_DELTA) {
|
360
357
|
if ((error = write_cb(po->delta->id.id, GIT_OID_RAWSZ, cb_data)) < 0 ||
|
361
358
|
(error = git_hash_update(&pb->ctx, po->delta->id.id, GIT_OID_RAWSZ)) < 0)
|
362
359
|
goto done;
|
@@ -371,7 +368,7 @@ static int write_object(
|
|
371
368
|
goto done;
|
372
369
|
} else {
|
373
370
|
zbuf = git__malloc(zbuf_len);
|
374
|
-
|
371
|
+
GITERR_CHECK_ALLOC(zbuf);
|
375
372
|
|
376
373
|
git_zstream_reset(&pb->zstream);
|
377
374
|
git_zstream_set_input(&pb->zstream, data, data_len);
|
@@ -513,12 +510,15 @@ static int cb_tag_foreach(const char *name, git_oid *oid, void *data)
|
|
513
510
|
{
|
514
511
|
git_packbuilder *pb = data;
|
515
512
|
git_pobject *po;
|
513
|
+
khiter_t pos;
|
516
514
|
|
517
515
|
GIT_UNUSED(name);
|
518
516
|
|
519
|
-
|
517
|
+
pos = git_oidmap_lookup_index(pb->object_ix, oid);
|
518
|
+
if (!git_oidmap_valid_index(pb->object_ix, pos))
|
520
519
|
return 0;
|
521
520
|
|
521
|
+
po = git_oidmap_value_at(pb->object_ix, pos);
|
522
522
|
po->tagged = 1;
|
523
523
|
|
524
524
|
/* TODO: peel objects */
|
@@ -590,8 +590,8 @@ static git_pobject **compute_write_order(git_packbuilder *pb)
|
|
590
590
|
*/
|
591
591
|
for (i = last_untagged; i < pb->nr_objects; i++) {
|
592
592
|
git_pobject *po = pb->object_list + i;
|
593
|
-
if (po->type !=
|
594
|
-
po->type !=
|
593
|
+
if (po->type != GIT_OBJ_COMMIT &&
|
594
|
+
po->type != GIT_OBJ_TAG)
|
595
595
|
continue;
|
596
596
|
add_to_write_order(wo, &wo_end, po);
|
597
597
|
}
|
@@ -601,7 +601,7 @@ static git_pobject **compute_write_order(git_packbuilder *pb)
|
|
601
601
|
*/
|
602
602
|
for (i = last_untagged; i < pb->nr_objects; i++) {
|
603
603
|
git_pobject *po = pb->object_list + i;
|
604
|
-
if (po->type !=
|
604
|
+
if (po->type != GIT_OBJ_TREE)
|
605
605
|
continue;
|
606
606
|
add_to_write_order(wo, &wo_end, po);
|
607
607
|
}
|
@@ -617,7 +617,7 @@ static git_pobject **compute_write_order(git_packbuilder *pb)
|
|
617
617
|
|
618
618
|
if (wo_end != pb->nr_objects) {
|
619
619
|
git__free(wo);
|
620
|
-
|
620
|
+
giterr_set(GITERR_INVALID, "invalid write order");
|
621
621
|
return NULL;
|
622
622
|
}
|
623
623
|
|
@@ -641,7 +641,7 @@ static int write_pack(git_packbuilder *pb,
|
|
641
641
|
return -1;
|
642
642
|
|
643
643
|
if (!git__is_uint32(pb->nr_objects)) {
|
644
|
-
|
644
|
+
giterr_set(GITERR_INVALID, "too many objects");
|
645
645
|
return -1;
|
646
646
|
}
|
647
647
|
|
@@ -798,13 +798,13 @@ static int try_delta(git_packbuilder *pb, struct unpacked *trg,
|
|
798
798
|
|
799
799
|
sz = git_odb_object_size(obj);
|
800
800
|
trg->data = git__malloc(sz);
|
801
|
-
|
801
|
+
GITERR_CHECK_ALLOC(trg->data);
|
802
802
|
memcpy(trg->data, git_odb_object_data(obj), sz);
|
803
803
|
|
804
804
|
git_odb_object_free(obj);
|
805
805
|
|
806
806
|
if (sz != trg_size) {
|
807
|
-
|
807
|
+
giterr_set(GITERR_INVALID,
|
808
808
|
"inconsistent target object length");
|
809
809
|
return -1;
|
810
810
|
}
|
@@ -820,13 +820,13 @@ static int try_delta(git_packbuilder *pb, struct unpacked *trg,
|
|
820
820
|
|
821
821
|
sz = obj_sz;
|
822
822
|
src->data = git__malloc(sz);
|
823
|
-
|
823
|
+
GITERR_CHECK_ALLOC(src->data);
|
824
824
|
memcpy(src->data, git_odb_object_data(obj), sz);
|
825
825
|
|
826
826
|
git_odb_object_free(obj);
|
827
827
|
|
828
828
|
if (sz != src_size) {
|
829
|
-
|
829
|
+
giterr_set(GITERR_INVALID,
|
830
830
|
"inconsistent source object length");
|
831
831
|
return -1;
|
832
832
|
}
|
@@ -872,7 +872,7 @@ static int try_delta(git_packbuilder *pb, struct unpacked *trg,
|
|
872
872
|
}
|
873
873
|
|
874
874
|
trg_object->delta_data = git__realloc(delta_buf, delta_size);
|
875
|
-
|
875
|
+
GITERR_CHECK_ALLOC(trg_object->delta_data);
|
876
876
|
} else {
|
877
877
|
/* create delta when writing the pack */
|
878
878
|
git_packbuilder__cache_unlock(pb);
|
@@ -938,7 +938,7 @@ static int report_delta_progress(
|
|
938
938
|
count, pb->nr_objects, pb->progress_cb_payload);
|
939
939
|
|
940
940
|
if (ret)
|
941
|
-
return
|
941
|
+
return giterr_set_after_callback(ret);
|
942
942
|
}
|
943
943
|
}
|
944
944
|
|
@@ -957,7 +957,7 @@ static int find_deltas(git_packbuilder *pb, git_pobject **list,
|
|
957
957
|
int error = -1;
|
958
958
|
|
959
959
|
array = git__calloc(window, sizeof(struct unpacked));
|
960
|
-
|
960
|
+
GITERR_CHECK_ALLOC(array);
|
961
961
|
|
962
962
|
for (;;) {
|
963
963
|
struct unpacked *n = array + idx;
|
@@ -1043,7 +1043,7 @@ static int find_deltas(git_packbuilder *pb, git_pobject **list,
|
|
1043
1043
|
|
1044
1044
|
git__free(po->delta_data);
|
1045
1045
|
po->delta_data = git__malloc(zbuf.size);
|
1046
|
-
|
1046
|
+
GITERR_CHECK_ALLOC(po->delta_data);
|
1047
1047
|
|
1048
1048
|
memcpy(po->delta_data, zbuf.ptr, zbuf.size);
|
1049
1049
|
po->z_delta_size = zbuf.size;
|
@@ -1095,7 +1095,7 @@ on_error:
|
|
1095
1095
|
git__free(array[i].data);
|
1096
1096
|
}
|
1097
1097
|
git__free(array);
|
1098
|
-
|
1098
|
+
git_buf_free(&zbuf);
|
1099
1099
|
|
1100
1100
|
return error;
|
1101
1101
|
}
|
@@ -1136,7 +1136,7 @@ static void *threaded_find_deltas(void *arg)
|
|
1136
1136
|
git_packbuilder__progress_unlock(me->pb);
|
1137
1137
|
|
1138
1138
|
if (git_mutex_lock(&me->mutex)) {
|
1139
|
-
|
1139
|
+
giterr_set(GITERR_THREAD, "unable to lock packfile condition mutex");
|
1140
1140
|
return NULL;
|
1141
1141
|
}
|
1142
1142
|
|
@@ -1174,7 +1174,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
|
|
1174
1174
|
}
|
1175
1175
|
|
1176
1176
|
p = git__mallocarray(pb->nr_threads, sizeof(*p));
|
1177
|
-
|
1177
|
+
GITERR_CHECK_ALLOC(p);
|
1178
1178
|
|
1179
1179
|
/* Partition the work among the threads */
|
1180
1180
|
for (i = 0; i < pb->nr_threads; ++i) {
|
@@ -1215,7 +1215,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
|
|
1215
1215
|
ret = git_thread_create(&p[i].thread,
|
1216
1216
|
threaded_find_deltas, &p[i]);
|
1217
1217
|
if (ret) {
|
1218
|
-
|
1218
|
+
giterr_set(GITERR_THREAD, "unable to create thread");
|
1219
1219
|
return -1;
|
1220
1220
|
}
|
1221
1221
|
active_threads++;
|
@@ -1284,7 +1284,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list,
|
|
1284
1284
|
git_packbuilder__progress_unlock(pb);
|
1285
1285
|
|
1286
1286
|
if (git_mutex_lock(&target->mutex)) {
|
1287
|
-
|
1287
|
+
giterr_set(GITERR_THREAD, "unable to lock packfile condition mutex");
|
1288
1288
|
git__free(p);
|
1289
1289
|
return -1;
|
1290
1290
|
}
|
@@ -1325,7 +1325,7 @@ static int prepare_pack(git_packbuilder *pb)
|
|
1325
1325
|
pb->progress_cb(GIT_PACKBUILDER_DELTAFICATION, 0, pb->nr_objects, pb->progress_cb_payload);
|
1326
1326
|
|
1327
1327
|
delta_list = git__mallocarray(pb->nr_objects, sizeof(*delta_list));
|
1328
|
-
|
1328
|
+
GITERR_CHECK_ALLOC(delta_list);
|
1329
1329
|
|
1330
1330
|
for (i = 0; i < pb->nr_objects; ++i) {
|
1331
1331
|
git_pobject *po = pb->object_list + i;
|
@@ -1379,25 +1379,21 @@ int git_packbuilder_write(
|
|
1379
1379
|
git_packbuilder *pb,
|
1380
1380
|
const char *path,
|
1381
1381
|
unsigned int mode,
|
1382
|
-
|
1382
|
+
git_transfer_progress_cb progress_cb,
|
1383
1383
|
void *progress_cb_payload)
|
1384
1384
|
{
|
1385
|
-
git_indexer_options opts = GIT_INDEXER_OPTIONS_INIT;
|
1386
1385
|
git_indexer *indexer;
|
1387
|
-
|
1386
|
+
git_transfer_progress stats;
|
1388
1387
|
struct pack_write_context ctx;
|
1389
1388
|
int t;
|
1390
1389
|
|
1391
1390
|
PREPARE_PACK;
|
1392
1391
|
|
1393
|
-
opts.progress_cb = progress_cb;
|
1394
|
-
opts.progress_cb_payload = progress_cb_payload;
|
1395
|
-
|
1396
1392
|
if (git_indexer_new(
|
1397
|
-
&indexer, path, mode, pb->odb,
|
1393
|
+
&indexer, path, mode, pb->odb, progress_cb, progress_cb_payload) < 0)
|
1398
1394
|
return -1;
|
1399
1395
|
|
1400
|
-
if (!
|
1396
|
+
if (!git_repository__cvar(&t, pb->repo, GIT_CVAR_FSYNCOBJECTFILES) && t)
|
1401
1397
|
git_indexer__set_fsync(indexer, 1);
|
1402
1398
|
|
1403
1399
|
ctx.indexer = indexer;
|
@@ -1430,7 +1426,7 @@ static int cb_tree_walk(
|
|
1430
1426
|
struct tree_walk_context *ctx = payload;
|
1431
1427
|
|
1432
1428
|
/* A commit inside a tree represents a submodule commit and should be skipped. */
|
1433
|
-
if (git_tree_entry_type(entry) ==
|
1429
|
+
if (git_tree_entry_type(entry) == GIT_OBJ_COMMIT)
|
1434
1430
|
return 0;
|
1435
1431
|
|
1436
1432
|
if (!(error = git_buf_sets(&ctx->buf, root)) &&
|
@@ -1467,7 +1463,7 @@ int git_packbuilder_insert_tree(git_packbuilder *pb, const git_oid *oid)
|
|
1467
1463
|
error = git_tree_walk(tree, GIT_TREEWALK_PRE, cb_tree_walk, &context);
|
1468
1464
|
|
1469
1465
|
git_tree_free(tree);
|
1470
|
-
|
1466
|
+
git_buf_free(&context.buf);
|
1471
1467
|
return error;
|
1472
1468
|
}
|
1473
1469
|
|
@@ -1478,27 +1474,27 @@ int git_packbuilder_insert_recur(git_packbuilder *pb, const git_oid *id, const c
|
|
1478
1474
|
|
1479
1475
|
assert(pb && id);
|
1480
1476
|
|
1481
|
-
if ((error = git_object_lookup(&obj, pb->repo, id,
|
1477
|
+
if ((error = git_object_lookup(&obj, pb->repo, id, GIT_OBJ_ANY)) < 0)
|
1482
1478
|
return error;
|
1483
1479
|
|
1484
1480
|
switch (git_object_type(obj)) {
|
1485
|
-
case
|
1481
|
+
case GIT_OBJ_BLOB:
|
1486
1482
|
error = git_packbuilder_insert(pb, id, name);
|
1487
1483
|
break;
|
1488
|
-
case
|
1484
|
+
case GIT_OBJ_TREE:
|
1489
1485
|
error = git_packbuilder_insert_tree(pb, id);
|
1490
1486
|
break;
|
1491
|
-
case
|
1487
|
+
case GIT_OBJ_COMMIT:
|
1492
1488
|
error = git_packbuilder_insert_commit(pb, id);
|
1493
1489
|
break;
|
1494
|
-
case
|
1490
|
+
case GIT_OBJ_TAG:
|
1495
1491
|
if ((error = git_packbuilder_insert(pb, id, name)) < 0)
|
1496
1492
|
goto cleanup;
|
1497
1493
|
error = git_packbuilder_insert_recur(pb, git_tag_target_id((git_tag *) obj), NULL);
|
1498
1494
|
break;
|
1499
1495
|
|
1500
1496
|
default:
|
1501
|
-
|
1497
|
+
giterr_set(GITERR_INVALID, "unknown object type");
|
1502
1498
|
error = -1;
|
1503
1499
|
}
|
1504
1500
|
|
@@ -1517,13 +1513,13 @@ size_t git_packbuilder_written(git_packbuilder *pb)
|
|
1517
1513
|
return pb->nr_written;
|
1518
1514
|
}
|
1519
1515
|
|
1520
|
-
|
1516
|
+
int lookup_walk_object(git_walk_object **out, git_packbuilder *pb, const git_oid *id)
|
1521
1517
|
{
|
1522
|
-
|
1518
|
+
git_walk_object *obj;
|
1523
1519
|
|
1524
1520
|
obj = git_pool_mallocz(&pb->object_pool, 1);
|
1525
1521
|
if (!obj) {
|
1526
|
-
|
1522
|
+
giterr_set_oom();
|
1527
1523
|
return -1;
|
1528
1524
|
}
|
1529
1525
|
|
@@ -1533,17 +1529,20 @@ static int lookup_walk_object(struct walk_object **out, git_packbuilder *pb, con
|
|
1533
1529
|
return 0;
|
1534
1530
|
}
|
1535
1531
|
|
1536
|
-
static int retrieve_object(
|
1532
|
+
static int retrieve_object(git_walk_object **out, git_packbuilder *pb, const git_oid *id)
|
1537
1533
|
{
|
1538
|
-
struct walk_object *obj;
|
1539
1534
|
int error;
|
1535
|
+
khiter_t pos;
|
1536
|
+
git_walk_object *obj;
|
1540
1537
|
|
1541
|
-
|
1538
|
+
pos = git_oidmap_lookup_index(pb->walk_objects, id);
|
1539
|
+
if (git_oidmap_valid_index(pb->walk_objects, pos)) {
|
1540
|
+
obj = git_oidmap_value_at(pb->walk_objects, pos);
|
1541
|
+
} else {
|
1542
1542
|
if ((error = lookup_walk_object(&obj, pb, id)) < 0)
|
1543
1543
|
return error;
|
1544
1544
|
|
1545
|
-
|
1546
|
-
return error;
|
1545
|
+
git_oidmap_insert(pb->walk_objects, &obj->id, obj, &error);
|
1547
1546
|
}
|
1548
1547
|
|
1549
1548
|
*out = obj;
|
@@ -1553,7 +1552,7 @@ static int retrieve_object(struct walk_object **out, git_packbuilder *pb, const
|
|
1553
1552
|
static int mark_blob_uninteresting(git_packbuilder *pb, const git_oid *id)
|
1554
1553
|
{
|
1555
1554
|
int error;
|
1556
|
-
|
1555
|
+
git_walk_object *obj;
|
1557
1556
|
|
1558
1557
|
if ((error = retrieve_object(&obj, pb, id)) < 0)
|
1559
1558
|
return error;
|
@@ -1565,7 +1564,7 @@ static int mark_blob_uninteresting(git_packbuilder *pb, const git_oid *id)
|
|
1565
1564
|
|
1566
1565
|
static int mark_tree_uninteresting(git_packbuilder *pb, const git_oid *id)
|
1567
1566
|
{
|
1568
|
-
|
1567
|
+
git_walk_object *obj;
|
1569
1568
|
git_tree *tree;
|
1570
1569
|
int error;
|
1571
1570
|
size_t i;
|
@@ -1585,11 +1584,11 @@ static int mark_tree_uninteresting(git_packbuilder *pb, const git_oid *id)
|
|
1585
1584
|
const git_tree_entry *entry = git_tree_entry_byindex(tree, i);
|
1586
1585
|
const git_oid *entry_id = git_tree_entry_id(entry);
|
1587
1586
|
switch (git_tree_entry_type(entry)) {
|
1588
|
-
case
|
1587
|
+
case GIT_OBJ_TREE:
|
1589
1588
|
if ((error = mark_tree_uninteresting(pb, entry_id)) < 0)
|
1590
1589
|
goto cleanup;
|
1591
1590
|
break;
|
1592
|
-
case
|
1591
|
+
case GIT_OBJ_BLOB:
|
1593
1592
|
if ((error = mark_blob_uninteresting(pb, entry_id)) < 0)
|
1594
1593
|
goto cleanup;
|
1595
1594
|
break;
|
@@ -1637,7 +1636,7 @@ int insert_tree(git_packbuilder *pb, git_tree *tree)
|
|
1637
1636
|
size_t i;
|
1638
1637
|
int error;
|
1639
1638
|
git_tree *subtree;
|
1640
|
-
|
1639
|
+
git_walk_object *obj;
|
1641
1640
|
const char *name;
|
1642
1641
|
|
1643
1642
|
if ((error = retrieve_object(&obj, pb, git_tree_id(tree))) < 0)
|
@@ -1655,7 +1654,7 @@ int insert_tree(git_packbuilder *pb, git_tree *tree)
|
|
1655
1654
|
const git_tree_entry *entry = git_tree_entry_byindex(tree, i);
|
1656
1655
|
const git_oid *entry_id = git_tree_entry_id(entry);
|
1657
1656
|
switch (git_tree_entry_type(entry)) {
|
1658
|
-
case
|
1657
|
+
case GIT_OBJ_TREE:
|
1659
1658
|
if ((error = git_tree_lookup(&subtree, pb->repo, entry_id)) < 0)
|
1660
1659
|
return error;
|
1661
1660
|
|
@@ -1666,7 +1665,7 @@ int insert_tree(git_packbuilder *pb, git_tree *tree)
|
|
1666
1665
|
return error;
|
1667
1666
|
|
1668
1667
|
break;
|
1669
|
-
case
|
1668
|
+
case GIT_OBJ_BLOB:
|
1670
1669
|
if ((error = retrieve_object(&obj, pb, entry_id)) < 0)
|
1671
1670
|
return error;
|
1672
1671
|
if (obj->uninteresting)
|
@@ -1685,7 +1684,7 @@ int insert_tree(git_packbuilder *pb, git_tree *tree)
|
|
1685
1684
|
return error;
|
1686
1685
|
}
|
1687
1686
|
|
1688
|
-
int insert_commit(git_packbuilder *pb,
|
1687
|
+
int insert_commit(git_packbuilder *pb, git_walk_object *obj)
|
1689
1688
|
{
|
1690
1689
|
int error;
|
1691
1690
|
git_commit *commit = NULL;
|
@@ -1715,7 +1714,7 @@ int git_packbuilder_insert_walk(git_packbuilder *pb, git_revwalk *walk)
|
|
1715
1714
|
{
|
1716
1715
|
int error;
|
1717
1716
|
git_oid id;
|
1718
|
-
|
1717
|
+
git_walk_object *obj;
|
1719
1718
|
|
1720
1719
|
assert(pb && walk);
|
1721
1720
|
|