rugged 1.6.3 → 1.9.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.
- checksums.yaml +4 -4
- data/ext/rugged/rugged_allocator.c +0 -54
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +25 -17
- data/vendor/libgit2/COPYING +195 -1
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
- data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
- data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
- data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
- data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
- data/vendor/libgit2/deps/pcre/LICENCE +5 -5
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
- data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +5 -27
- data/vendor/libgit2/deps/zlib/crc32.c +94 -167
- data/vendor/libgit2/deps/zlib/deflate.c +358 -435
- data/vendor/libgit2/deps/zlib/deflate.h +41 -10
- data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
- data/vendor/libgit2/deps/zlib/infback.c +17 -30
- data/vendor/libgit2/deps/zlib/inffast.c +1 -4
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +36 -102
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +287 -352
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +202 -202
- data/vendor/libgit2/deps/zlib/zutil.c +18 -44
- data/vendor/libgit2/deps/zlib/zutil.h +13 -33
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +27 -6
- data/vendor/libgit2/include/git2/attr.h +17 -4
- data/vendor/libgit2/include/git2/blame.h +133 -28
- data/vendor/libgit2/include/git2/blob.h +71 -28
- data/vendor/libgit2/include/git2/branch.h +22 -15
- data/vendor/libgit2/include/git2/buffer.h +6 -4
- data/vendor/libgit2/include/git2/cert.h +2 -1
- data/vendor/libgit2/include/git2/checkout.h +83 -32
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +25 -9
- data/vendor/libgit2/include/git2/commit.h +132 -3
- data/vendor/libgit2/include/git2/common.h +138 -56
- data/vendor/libgit2/include/git2/config.h +93 -23
- data/vendor/libgit2/include/git2/credential.h +30 -2
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +133 -3
- data/vendor/libgit2/include/git2/describe.h +13 -1
- data/vendor/libgit2/include/git2/diff.h +77 -9
- data/vendor/libgit2/include/git2/email.h +9 -29
- data/vendor/libgit2/include/git2/errors.h +49 -74
- data/vendor/libgit2/include/git2/filter.h +14 -7
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +3 -2
- data/vendor/libgit2/include/git2/ignore.h +10 -0
- data/vendor/libgit2/include/git2/index.h +100 -6
- data/vendor/libgit2/include/git2/indexer.h +21 -4
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +46 -1
- data/vendor/libgit2/include/git2/message.h +2 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +9 -8
- data/vendor/libgit2/include/git2/odb.h +91 -49
- data/vendor/libgit2/include/git2/odb_backend.h +80 -52
- data/vendor/libgit2/include/git2/oid.h +24 -25
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +13 -1
- data/vendor/libgit2/include/git2/patch.h +2 -3
- data/vendor/libgit2/include/git2/pathspec.h +9 -0
- data/vendor/libgit2/include/git2/proxy.h +10 -0
- data/vendor/libgit2/include/git2/rebase.h +9 -6
- data/vendor/libgit2/include/git2/refdb.h +2 -2
- data/vendor/libgit2/include/git2/reflog.h +3 -2
- data/vendor/libgit2/include/git2/refs.h +9 -6
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +112 -18
- data/vendor/libgit2/include/git2/repository.h +61 -15
- data/vendor/libgit2/include/git2/reset.h +16 -3
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +3 -3
- data/vendor/libgit2/include/git2/revwalk.h +3 -2
- data/vendor/libgit2/include/git2/signature.h +46 -1
- data/vendor/libgit2/include/git2/stash.h +17 -3
- data/vendor/libgit2/include/git2/status.h +10 -6
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -3
- data/vendor/libgit2/include/git2/submodule.h +20 -9
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +47 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +8 -1
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +25 -2
- data/vendor/libgit2/include/git2/sys/transport.h +44 -5
- data/vendor/libgit2/include/git2/tag.h +3 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +16 -5
- data/vendor/libgit2/include/git2/types.h +19 -3
- data/vendor/libgit2/include/git2/version.h +44 -8
- data/vendor/libgit2/include/git2/worktree.h +19 -7
- data/vendor/libgit2/src/CMakeLists.txt +40 -15
- data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
- data/vendor/libgit2/src/cli/cmd.c +1 -1
- data/vendor/libgit2/src/cli/cmd.h +4 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
- data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
- data/vendor/libgit2/src/cli/cmd_help.c +6 -7
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +1 -1
- data/vendor/libgit2/src/cli/main.c +52 -24
- data/vendor/libgit2/src/cli/opt.c +29 -3
- data/vendor/libgit2/src/cli/opt.h +21 -3
- data/vendor/libgit2/src/cli/opt_usage.c +102 -33
- data/vendor/libgit2/src/cli/opt_usage.h +6 -1
- data/vendor/libgit2/src/cli/progress.c +60 -10
- data/vendor/libgit2/src/cli/progress.h +16 -4
- data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
- data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
- data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
- data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
- data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
- data/vendor/libgit2/src/libgit2/apply.c +14 -16
- data/vendor/libgit2/src/libgit2/attr.c +30 -13
- data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
- data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
- data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
- data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
- data/vendor/libgit2/src/libgit2/blame.c +152 -59
- data/vendor/libgit2/src/libgit2/blame.h +1 -0
- data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
- data/vendor/libgit2/src/libgit2/branch.c +2 -2
- data/vendor/libgit2/src/libgit2/cache.c +22 -17
- data/vendor/libgit2/src/libgit2/cache.h +7 -9
- data/vendor/libgit2/src/libgit2/checkout.c +34 -24
- data/vendor/libgit2/src/libgit2/checkout.h +0 -2
- data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
- data/vendor/libgit2/src/libgit2/clone.c +186 -164
- data/vendor/libgit2/src/libgit2/clone.h +4 -1
- data/vendor/libgit2/src/libgit2/commit.c +123 -9
- data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
- data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
- data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
- data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
- data/vendor/libgit2/src/libgit2/config.c +394 -300
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/libgit2/config.h +9 -4
- data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
- data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
- data/vendor/libgit2/src/libgit2/config_file.c +113 -96
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
- data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
- data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
- data/vendor/libgit2/src/libgit2/describe.c +34 -31
- data/vendor/libgit2/src/libgit2/diff.c +17 -8
- data/vendor/libgit2/src/libgit2/diff.h +6 -6
- data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
- data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
- data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
- data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
- data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
- data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
- data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
- data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/libgit2/email.c +5 -3
- data/vendor/libgit2/src/libgit2/fetch.c +39 -9
- data/vendor/libgit2/src/libgit2/fetch.h +0 -2
- data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
- data/vendor/libgit2/src/libgit2/filter.c +5 -5
- data/vendor/libgit2/src/libgit2/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +270 -0
- data/vendor/libgit2/src/libgit2/grafts.h +35 -0
- data/vendor/libgit2/src/libgit2/graph.c +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/libgit2/ident.c +3 -3
- data/vendor/libgit2/src/libgit2/ignore.c +9 -5
- data/vendor/libgit2/src/libgit2/index.c +392 -208
- data/vendor/libgit2/src/libgit2/index.h +16 -3
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/libgit2/indexer.c +44 -41
- data/vendor/libgit2/src/libgit2/iterator.c +34 -13
- data/vendor/libgit2/src/libgit2/iterator.h +3 -0
- data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
- data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
- data/vendor/libgit2/src/libgit2/merge.c +56 -46
- data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
- data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
- data/vendor/libgit2/src/libgit2/midx.c +86 -44
- data/vendor/libgit2/src/libgit2/midx.h +13 -3
- data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
- data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
- data/vendor/libgit2/src/libgit2/notes.c +9 -8
- data/vendor/libgit2/src/libgit2/object.c +42 -16
- data/vendor/libgit2/src/libgit2/object.h +6 -0
- data/vendor/libgit2/src/libgit2/odb.c +16 -9
- data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
- data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
- data/vendor/libgit2/src/libgit2/oid.c +35 -2
- data/vendor/libgit2/src/libgit2/oid.h +11 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
- data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
- data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
- data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
- data/vendor/libgit2/src/libgit2/pack.c +33 -27
- data/vendor/libgit2/src/libgit2/pack.h +15 -10
- data/vendor/libgit2/src/libgit2/parse.c +7 -4
- data/vendor/libgit2/src/libgit2/parse.h +1 -1
- data/vendor/libgit2/src/libgit2/patch.h +7 -1
- data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
- data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
- data/vendor/libgit2/src/libgit2/path.c +1 -1
- data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
- data/vendor/libgit2/src/libgit2/push.c +81 -30
- data/vendor/libgit2/src/libgit2/push.h +1 -0
- data/vendor/libgit2/src/libgit2/reader.c +1 -1
- data/vendor/libgit2/src/libgit2/rebase.c +72 -84
- data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
- data/vendor/libgit2/src/libgit2/reflog.c +1 -2
- data/vendor/libgit2/src/libgit2/reflog.h +2 -0
- data/vendor/libgit2/src/libgit2/refs.c +34 -8
- data/vendor/libgit2/src/libgit2/refs.h +6 -1
- data/vendor/libgit2/src/libgit2/refspec.c +28 -1
- data/vendor/libgit2/src/libgit2/refspec.h +8 -0
- data/vendor/libgit2/src/libgit2/remote.c +136 -67
- data/vendor/libgit2/src/libgit2/remote.h +1 -0
- data/vendor/libgit2/src/libgit2/repository.c +789 -330
- data/vendor/libgit2/src/libgit2/repository.h +22 -3
- data/vendor/libgit2/src/libgit2/reset.c +2 -2
- data/vendor/libgit2/src/libgit2/revert.c +9 -13
- data/vendor/libgit2/src/libgit2/revparse.c +6 -3
- data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
- data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
- data/vendor/libgit2/src/libgit2/settings.c +468 -0
- data/vendor/libgit2/src/libgit2/settings.h +6 -2
- data/vendor/libgit2/src/libgit2/signature.c +132 -15
- data/vendor/libgit2/src/libgit2/signature.h +0 -1
- data/vendor/libgit2/src/libgit2/stash.c +9 -8
- data/vendor/libgit2/src/libgit2/status.c +1 -1
- data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
- data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
- data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
- data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
- data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
- data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
- data/vendor/libgit2/src/libgit2/submodule.c +106 -63
- data/vendor/libgit2/src/libgit2/submodule.h +9 -10
- data/vendor/libgit2/src/libgit2/tag.c +1 -1
- data/vendor/libgit2/src/libgit2/trailer.c +6 -6
- data/vendor/libgit2/src/libgit2/transaction.c +26 -20
- data/vendor/libgit2/src/libgit2/transaction.h +4 -1
- data/vendor/libgit2/src/libgit2/transport.c +4 -1
- data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
- data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
- data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
- data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
- data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
- data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
- data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
- data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
- data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
- data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
- data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
- data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
- data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
- data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
- data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
- data/vendor/libgit2/src/libgit2/tree.c +35 -27
- data/vendor/libgit2/src/libgit2/tree.h +3 -2
- data/vendor/libgit2/src/libgit2/worktree.c +39 -27
- data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
- data/vendor/libgit2/src/util/alloc.c +69 -7
- data/vendor/libgit2/src/util/alloc.h +34 -9
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
- data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
- data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
- data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
- data/vendor/libgit2/src/util/array.h +24 -18
- data/vendor/libgit2/src/util/cc-compat.h +4 -0
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/util/date.c +22 -14
- data/vendor/libgit2/src/util/date.h +12 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
- data/vendor/libgit2/src/util/filebuf.c +6 -1
- data/vendor/libgit2/src/util/filebuf.h +19 -6
- data/vendor/libgit2/src/util/fs_path.c +16 -5
- data/vendor/libgit2/src/util/fs_path.h +23 -0
- data/vendor/libgit2/src/util/futils.c +14 -10
- data/vendor/libgit2/src/util/futils.h +13 -4
- data/vendor/libgit2/src/util/git2_features.h.in +21 -4
- data/vendor/libgit2/src/util/git2_util.h +6 -0
- data/vendor/libgit2/src/util/hash/openssl.c +152 -0
- data/vendor/libgit2/src/util/hash/openssl.h +17 -1
- data/vendor/libgit2/src/util/hash/sha.h +4 -1
- data/vendor/libgit2/src/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/util/integer.h +3 -1
- data/vendor/libgit2/src/util/net.c +318 -161
- data/vendor/libgit2/src/util/net.h +27 -0
- data/vendor/libgit2/src/util/pool.c +1 -1
- data/vendor/libgit2/src/util/pool.h +5 -0
- data/vendor/libgit2/src/util/posix.c +54 -0
- data/vendor/libgit2/src/util/posix.h +22 -0
- data/vendor/libgit2/src/util/pqueue.h +1 -1
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +6 -10
- data/vendor/libgit2/src/util/regexp.c +1 -1
- data/vendor/libgit2/src/util/sortedcache.c +14 -13
- data/vendor/libgit2/src/util/sortedcache.h +3 -3
- data/vendor/libgit2/src/util/staticstr.h +66 -0
- data/vendor/libgit2/src/util/str.c +2 -2
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/util/unix/posix.h +0 -2
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/util/unix/realpath.c +23 -5
- data/vendor/libgit2/src/util/util.c +17 -12
- data/vendor/libgit2/src/util/util.h +28 -54
- data/vendor/libgit2/src/util/vector.c +3 -3
- data/vendor/libgit2/src/util/vector.h +2 -2
- data/vendor/libgit2/src/util/win32/error.c +1 -1
- data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
- data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
- data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
- data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
- metadata +72 -49
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
- data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
- data/vendor/libgit2/src/libgit2/errors.c +0 -238
- data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
- data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
- data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
- data/vendor/libgit2/src/libgit2/netops.c +0 -124
- data/vendor/libgit2/src/libgit2/netops.h +0 -68
- data/vendor/libgit2/src/libgit2/offmap.c +0 -101
- data/vendor/libgit2/src/libgit2/offmap.h +0 -133
- data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
- data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
- data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
- data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
- data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
- data/vendor/libgit2/src/util/khash.h +0 -615
- data/vendor/libgit2/src/util/strmap.c +0 -100
- data/vendor/libgit2/src/util/strmap.h +0 -131
- /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -301,3 +301,57 @@ int p_munmap(git_map *map)
|
|
301
301
|
}
|
302
302
|
|
303
303
|
#endif
|
304
|
+
|
305
|
+
#if defined(GIT_IO_POLL) || defined(GIT_IO_WSAPOLL)
|
306
|
+
|
307
|
+
/* Handled by posix.h; this test simplifies the final else */
|
308
|
+
|
309
|
+
#elif defined(GIT_IO_SELECT)
|
310
|
+
|
311
|
+
int p_poll(struct pollfd *fds, unsigned int nfds, int timeout_ms)
|
312
|
+
{
|
313
|
+
fd_set read_fds, write_fds, except_fds;
|
314
|
+
struct timeval timeout = { 0, 0 };
|
315
|
+
unsigned int i;
|
316
|
+
int max_fd = -1, ret;
|
317
|
+
|
318
|
+
FD_ZERO(&read_fds);
|
319
|
+
FD_ZERO(&write_fds);
|
320
|
+
FD_ZERO(&except_fds);
|
321
|
+
|
322
|
+
for (i = 0; i < nfds; i++) {
|
323
|
+
if ((fds[i].events & POLLIN))
|
324
|
+
FD_SET(fds[i].fd, &read_fds);
|
325
|
+
|
326
|
+
if ((fds[i].events & POLLOUT))
|
327
|
+
FD_SET(fds[i].fd, &write_fds);
|
328
|
+
|
329
|
+
if ((fds[i].events & POLLPRI))
|
330
|
+
FD_SET(fds[i].fd, &except_fds);
|
331
|
+
|
332
|
+
max_fd = MAX(max_fd, fds[i].fd);
|
333
|
+
}
|
334
|
+
|
335
|
+
if (timeout_ms > 0) {
|
336
|
+
timeout.tv_sec = timeout_ms / 1000;
|
337
|
+
timeout.tv_usec = (timeout_ms % 1000) * 1000;
|
338
|
+
}
|
339
|
+
|
340
|
+
if ((ret = select(max_fd + 1, &read_fds, &write_fds, &except_fds,
|
341
|
+
timeout_ms < 0 ? NULL : &timeout)) < 0)
|
342
|
+
goto done;
|
343
|
+
|
344
|
+
for (i = 0; i < nfds; i++) {
|
345
|
+
fds[i].revents = 0 |
|
346
|
+
FD_ISSET(fds[i].fd, &read_fds) ? POLLIN : 0 |
|
347
|
+
FD_ISSET(fds[i].fd, &write_fds) ? POLLOUT : 0 |
|
348
|
+
FD_ISSET(fds[i].fd, &except_fds) ? POLLPRI : 0;
|
349
|
+
}
|
350
|
+
|
351
|
+
done:
|
352
|
+
return ret;
|
353
|
+
}
|
354
|
+
|
355
|
+
#else
|
356
|
+
# error no poll compatible implementation
|
357
|
+
#endif
|
@@ -195,4 +195,26 @@ extern const char *p_gai_strerror(int ret);
|
|
195
195
|
# define p_gai_strerror(c) gai_strerror(c)
|
196
196
|
#endif /* NO_ADDRINFO */
|
197
197
|
|
198
|
+
#ifdef GIT_IO_POLL
|
199
|
+
# include <poll.h>
|
200
|
+
# define p_poll poll
|
201
|
+
#elif GIT_IO_WSAPOLL
|
202
|
+
# include <winsock2.h>
|
203
|
+
# define p_poll WSAPoll
|
204
|
+
#else
|
205
|
+
# define POLLIN 0x01
|
206
|
+
# define POLLPRI 0x02
|
207
|
+
# define POLLOUT 0x04
|
208
|
+
# define POLLERR 0x08
|
209
|
+
# define POLLHUP 0x10
|
210
|
+
|
211
|
+
struct pollfd {
|
212
|
+
int fd;
|
213
|
+
short events;
|
214
|
+
short revents;
|
215
|
+
};
|
216
|
+
|
217
|
+
extern int p_poll(struct pollfd *fds, unsigned int nfds, int timeout);
|
218
|
+
#endif
|
219
|
+
|
198
220
|
#endif
|
@@ -33,7 +33,7 @@ extern int git_pqueue_init(
|
|
33
33
|
size_t init_size,
|
34
34
|
git_vector_cmp cmp);
|
35
35
|
|
36
|
-
#define git_pqueue_free
|
36
|
+
#define git_pqueue_free git_vector_dispose
|
37
37
|
#define git_pqueue_clear git_vector_clear
|
38
38
|
#define git_pqueue_size git_vector_length
|
39
39
|
#define git_pqueue_get git_vector_get
|
@@ -0,0 +1,222 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#ifndef INCLUDE_process_h__
|
9
|
+
#define INCLUDE_process_h__
|
10
|
+
|
11
|
+
typedef struct git_process git_process;
|
12
|
+
|
13
|
+
typedef struct {
|
14
|
+
unsigned int capture_in : 1,
|
15
|
+
capture_out : 1,
|
16
|
+
capture_err : 1,
|
17
|
+
exclude_env : 1;
|
18
|
+
|
19
|
+
char *cwd;
|
20
|
+
} git_process_options;
|
21
|
+
|
22
|
+
typedef enum {
|
23
|
+
GIT_PROCESS_STATUS_NONE,
|
24
|
+
GIT_PROCESS_STATUS_NORMAL,
|
25
|
+
GIT_PROCESS_STATUS_ERROR
|
26
|
+
} git_process_result_status;
|
27
|
+
|
28
|
+
#define GIT_PROCESS_RESULT_INIT { GIT_PROCESS_STATUS_NONE }
|
29
|
+
|
30
|
+
typedef struct {
|
31
|
+
git_process_result_status status;
|
32
|
+
int exitcode;
|
33
|
+
int signal;
|
34
|
+
} git_process_result;
|
35
|
+
|
36
|
+
#define GIT_PROCESS_OPTIONS_INIT { 0 }
|
37
|
+
|
38
|
+
#ifdef GIT_WIN32
|
39
|
+
# define p_pid_t DWORD
|
40
|
+
#else
|
41
|
+
# define p_pid_t pid_t
|
42
|
+
#endif
|
43
|
+
|
44
|
+
/**
|
45
|
+
* Create a new process. The command to run should be specified as the
|
46
|
+
* element of the `arg` array, execv-style. This should be the full path
|
47
|
+
* to the command to run, the PATH is not obeyed.
|
48
|
+
*
|
49
|
+
* This function will add the given environment variables (in `env`)
|
50
|
+
* to the current environment. Operations on environment variables
|
51
|
+
* are not thread safe, so you may not modify the environment during
|
52
|
+
* this call. You can avoid this by setting `exclude_env` in the
|
53
|
+
* options and providing the entire environment yourself.
|
54
|
+
*
|
55
|
+
* @param out location to store the process
|
56
|
+
* @param args the command (with arguments) to run
|
57
|
+
* @param args_len the length of the args array
|
58
|
+
* @param env environment variables to add (or NULL)
|
59
|
+
* @param env_len the length of the env len
|
60
|
+
* @param opts the options for creating the process
|
61
|
+
* @return 0 or an error code
|
62
|
+
*/
|
63
|
+
extern int git_process_new(
|
64
|
+
git_process **out,
|
65
|
+
const char **args,
|
66
|
+
size_t args_len,
|
67
|
+
const char **env,
|
68
|
+
size_t env_len,
|
69
|
+
git_process_options *opts);
|
70
|
+
|
71
|
+
/**
|
72
|
+
* Create a new process. The command to run should be specified as the
|
73
|
+
* `cmdline` option - which is the full text of the command line as it
|
74
|
+
* would be specified or run by a user. The command to run will be
|
75
|
+
* looked up in the PATH.
|
76
|
+
*
|
77
|
+
* On Unix, this will be executed by the system's shell (`/bin/sh`)
|
78
|
+
* and may contain _Bourne-style_ shell quoting rules. On Windows,
|
79
|
+
* this will be passed to `CreateProcess`, and similarly, may
|
80
|
+
* contain _Windows-style_ shell quoting rules.
|
81
|
+
*
|
82
|
+
* This function will add the given environment variables (in `env`)
|
83
|
+
* to the current environment. Operations on environment variables
|
84
|
+
* are not thread safe, so you may not modify the environment during
|
85
|
+
* this call. You can avoid this by setting `exclude_env` in the
|
86
|
+
* options and providing the entire environment yourself.
|
87
|
+
*/
|
88
|
+
extern int git_process_new_from_cmdline(
|
89
|
+
git_process **out,
|
90
|
+
const char *cmdline,
|
91
|
+
const char **env,
|
92
|
+
size_t env_len,
|
93
|
+
git_process_options *opts);
|
94
|
+
|
95
|
+
#ifdef GIT_WIN32
|
96
|
+
|
97
|
+
extern int git_process__appname(
|
98
|
+
git_str *out,
|
99
|
+
const char *cmdline);
|
100
|
+
|
101
|
+
/* Windows path parsing is tricky; this helper function is for testing. */
|
102
|
+
extern int git_process__cmdline(
|
103
|
+
git_str *out,
|
104
|
+
const char **in,
|
105
|
+
size_t in_len);
|
106
|
+
|
107
|
+
#endif
|
108
|
+
|
109
|
+
/*
|
110
|
+
* Whether the given string looks like a command line option (starts
|
111
|
+
* with a dash). This is useful for examining strings that will become
|
112
|
+
* cmdline arguments to ensure that they are not erroneously treated
|
113
|
+
* as an option. For example, arguments to `ssh`.
|
114
|
+
*/
|
115
|
+
GIT_INLINE(bool) git_process__is_cmdline_option(const char *str)
|
116
|
+
{
|
117
|
+
return (str && str[0] == '-');
|
118
|
+
}
|
119
|
+
|
120
|
+
/**
|
121
|
+
* Start the process.
|
122
|
+
*
|
123
|
+
* @param process the process to start
|
124
|
+
* @return 0 or an error code
|
125
|
+
*/
|
126
|
+
extern int git_process_start(git_process *process);
|
127
|
+
|
128
|
+
/**
|
129
|
+
* Returns the process id of the process.
|
130
|
+
*
|
131
|
+
* @param out pointer to a pid_t to store the process id
|
132
|
+
* @param process the process to query
|
133
|
+
* @return 0 or an error code
|
134
|
+
*/
|
135
|
+
extern int git_process_id(p_pid_t *out, git_process *process);
|
136
|
+
|
137
|
+
/**
|
138
|
+
* Read from the process's stdout. The process must have been created with
|
139
|
+
* `capture_out` set to true.
|
140
|
+
*
|
141
|
+
* @param process the process to read from
|
142
|
+
* @param buf the buf to read into
|
143
|
+
* @param count maximum number of bytes to read
|
144
|
+
* @return number of bytes read or an error code
|
145
|
+
*/
|
146
|
+
extern ssize_t git_process_read(git_process *process, void *buf, size_t count);
|
147
|
+
|
148
|
+
/**
|
149
|
+
* Read from the process's stderr. The process must have been created with
|
150
|
+
* `capture_err` set to true.
|
151
|
+
*
|
152
|
+
* @param process the process to read from
|
153
|
+
* @param buf the buf to read into
|
154
|
+
* @param count maximum number of bytes to read
|
155
|
+
* @return number of bytes read or an error code
|
156
|
+
*/
|
157
|
+
extern ssize_t git_process_read_err(git_process *process, void *buf, size_t count);
|
158
|
+
|
159
|
+
/**
|
160
|
+
* Write to the process's stdin. The process must have been created with
|
161
|
+
* `capture_in` set to true.
|
162
|
+
*
|
163
|
+
* @param process the process to write to
|
164
|
+
* @param buf the buf to write
|
165
|
+
* @param count maximum number of bytes to write
|
166
|
+
* @return number of bytes written or an error code
|
167
|
+
*/
|
168
|
+
extern ssize_t git_process_write(git_process *process, const void *buf, size_t count);
|
169
|
+
|
170
|
+
/**
|
171
|
+
* Wait for the process to finish.
|
172
|
+
*
|
173
|
+
* @param result the result of the process or NULL
|
174
|
+
* @param process the process to wait on
|
175
|
+
*/
|
176
|
+
extern int git_process_wait(git_process_result *result, git_process *process);
|
177
|
+
|
178
|
+
/**
|
179
|
+
* Close the input pipe from the child.
|
180
|
+
*
|
181
|
+
* @param process the process to close the pipe on
|
182
|
+
*/
|
183
|
+
extern int git_process_close_in(git_process *process);
|
184
|
+
|
185
|
+
/**
|
186
|
+
* Close the output pipe from the child.
|
187
|
+
*
|
188
|
+
* @param process the process to close the pipe on
|
189
|
+
*/
|
190
|
+
extern int git_process_close_out(git_process *process);
|
191
|
+
|
192
|
+
/**
|
193
|
+
* Close the error pipe from the child.
|
194
|
+
*
|
195
|
+
* @param process the process to close the pipe on
|
196
|
+
*/
|
197
|
+
extern int git_process_close_err(git_process *process);
|
198
|
+
|
199
|
+
/**
|
200
|
+
* Close all resources that are used by the process. This does not
|
201
|
+
* wait for the process to complete.
|
202
|
+
*
|
203
|
+
* @parma process the process to close
|
204
|
+
*/
|
205
|
+
extern int git_process_close(git_process *process);
|
206
|
+
|
207
|
+
/**
|
208
|
+
* Place a human-readable error message in the given git buffer.
|
209
|
+
*
|
210
|
+
* @param msg the buffer to store the message
|
211
|
+
* @param result the process result that produced an error
|
212
|
+
*/
|
213
|
+
extern int git_process_result_msg(git_str *msg, git_process_result *result);
|
214
|
+
|
215
|
+
/**
|
216
|
+
* Free a process structure
|
217
|
+
*
|
218
|
+
* @param process the process to free
|
219
|
+
*/
|
220
|
+
extern void git_process_free(git_process *process);
|
221
|
+
|
222
|
+
#endif
|
@@ -10,10 +10,6 @@ See <http://creativecommons.org/publicdomain/zero/1.0/>. */
|
|
10
10
|
#include "rand.h"
|
11
11
|
#include "runtime.h"
|
12
12
|
|
13
|
-
#if defined(GIT_RAND_GETENTROPY)
|
14
|
-
# include <sys/random.h>
|
15
|
-
#endif
|
16
|
-
|
17
13
|
#if defined(GIT_WIN32)
|
18
14
|
# include <wincrypt.h>
|
19
15
|
#endif
|
@@ -32,7 +28,6 @@ GIT_INLINE(int) getseed(uint64_t *seed)
|
|
32
28
|
HCRYPTPROV provider;
|
33
29
|
SYSTEMTIME systemtime;
|
34
30
|
FILETIME filetime, idletime, kerneltime, usertime;
|
35
|
-
bits convert;
|
36
31
|
|
37
32
|
if (CryptAcquireContext(&provider, 0, 0, PROV_RSA_FULL,
|
38
33
|
CRYPT_VERIFYCONTEXT|CRYPT_SILENT)) {
|
@@ -67,7 +62,7 @@ GIT_INLINE(int) getseed(uint64_t *seed)
|
|
67
62
|
*seed ^= ((uint64_t)GetCurrentProcessId() << 32);
|
68
63
|
*seed ^= ((uint64_t)GetCurrentThreadId() << 48);
|
69
64
|
|
70
|
-
|
65
|
+
*seed ^= git_time_monotonic();
|
71
66
|
|
72
67
|
/* Mix in the addresses of some functions and variables */
|
73
68
|
*seed ^= (((uint64_t)((uintptr_t)seed) << 32));
|
@@ -81,9 +76,12 @@ GIT_INLINE(int) getseed(uint64_t *seed)
|
|
81
76
|
GIT_INLINE(int) getseed(uint64_t *seed)
|
82
77
|
{
|
83
78
|
struct timeval tv;
|
79
|
+
int fd;
|
80
|
+
|
81
|
+
# if defined(GIT_RAND_GETLOADAVG)
|
84
82
|
double loadavg[3];
|
85
83
|
bits convert;
|
86
|
-
|
84
|
+
# endif
|
87
85
|
|
88
86
|
# if defined(GIT_RAND_GETENTROPY)
|
89
87
|
GIT_UNUSED((fd = 0));
|
@@ -127,11 +125,9 @@ GIT_INLINE(int) getseed(uint64_t *seed)
|
|
127
125
|
convert.f = loadavg[0]; *seed ^= (convert.d >> 36);
|
128
126
|
convert.f = loadavg[1]; *seed ^= (convert.d);
|
129
127
|
convert.f = loadavg[2]; *seed ^= (convert.d >> 16);
|
130
|
-
# else
|
131
|
-
GIT_UNUSED(loadavg[0]);
|
132
128
|
# endif
|
133
129
|
|
134
|
-
|
130
|
+
*seed ^= git_time_monotonic();
|
135
131
|
|
136
132
|
/* Mix in the addresses of some variables */
|
137
133
|
*seed ^= ((uint64_t)((size_t)((void *)seed)) << 32);
|
@@ -125,7 +125,7 @@ int git_regexp_search(const git_regexp *r, const char *string, size_t nmatches,
|
|
125
125
|
|
126
126
|
if ((data = pcre2_match_data_create(nmatches, NULL)) == NULL) {
|
127
127
|
git_error_set_oom();
|
128
|
-
|
128
|
+
return -1;
|
129
129
|
}
|
130
130
|
|
131
131
|
if ((error = pcre2_match(*r, (const unsigned char *) string, strlen(string),
|
@@ -6,6 +6,7 @@
|
|
6
6
|
*/
|
7
7
|
|
8
8
|
#include "sortedcache.h"
|
9
|
+
#include "hashmap.h"
|
9
10
|
|
10
11
|
int git_sortedcache_new(
|
11
12
|
git_sortedcache **out,
|
@@ -26,8 +27,7 @@ int git_sortedcache_new(
|
|
26
27
|
GIT_ERROR_CHECK_ALLOC(sc);
|
27
28
|
|
28
29
|
if (git_pool_init(&sc->pool, 1) < 0 ||
|
29
|
-
git_vector_init(&sc->items, 4, item_cmp) < 0
|
30
|
-
git_strmap_new(&sc->map) < 0)
|
30
|
+
git_vector_init(&sc->items, 4, item_cmp) < 0)
|
31
31
|
goto fail;
|
32
32
|
|
33
33
|
if (git_rwlock_init(&sc->lock)) {
|
@@ -46,8 +46,7 @@ int git_sortedcache_new(
|
|
46
46
|
return 0;
|
47
47
|
|
48
48
|
fail:
|
49
|
-
|
50
|
-
git_vector_free(&sc->items);
|
49
|
+
git_vector_dispose(&sc->items);
|
51
50
|
git_pool_clear(&sc->pool);
|
52
51
|
git__free(sc);
|
53
52
|
return -1;
|
@@ -65,7 +64,7 @@ const char *git_sortedcache_path(git_sortedcache *sc)
|
|
65
64
|
|
66
65
|
static void sortedcache_clear(git_sortedcache *sc)
|
67
66
|
{
|
68
|
-
|
67
|
+
git_hashmap_str_clear(&sc->map);
|
69
68
|
|
70
69
|
if (sc->free_item) {
|
71
70
|
size_t i;
|
@@ -88,8 +87,8 @@ static void sortedcache_free(git_sortedcache *sc)
|
|
88
87
|
return;
|
89
88
|
|
90
89
|
sortedcache_clear(sc);
|
91
|
-
|
92
|
-
|
90
|
+
git_vector_dispose(&sc->items);
|
91
|
+
git_hashmap_str_dispose(&sc->map);
|
93
92
|
|
94
93
|
git_sortedcache_wunlock(sc);
|
95
94
|
|
@@ -274,7 +273,7 @@ int git_sortedcache_upsert(void **out, git_sortedcache *sc, const char *key)
|
|
274
273
|
char *item_key;
|
275
274
|
void *item;
|
276
275
|
|
277
|
-
if ((item
|
276
|
+
if (git_hashmap_str_get(&item, &sc->map, key) == 0)
|
278
277
|
goto done;
|
279
278
|
|
280
279
|
keylen = strlen(key);
|
@@ -294,11 +293,11 @@ int git_sortedcache_upsert(void **out, git_sortedcache *sc, const char *key)
|
|
294
293
|
item_key = ((char *)item) + sc->item_path_offset;
|
295
294
|
memcpy(item_key, key, keylen);
|
296
295
|
|
297
|
-
if ((error =
|
296
|
+
if ((error = git_hashmap_str_put(&sc->map, item_key, item)) < 0)
|
298
297
|
goto done;
|
299
298
|
|
300
299
|
if ((error = git_vector_insert(&sc->items, item)) < 0)
|
301
|
-
|
300
|
+
git_hashmap_str_remove(&sc->map, item_key);
|
302
301
|
|
303
302
|
done:
|
304
303
|
if (out)
|
@@ -307,9 +306,11 @@ done:
|
|
307
306
|
}
|
308
307
|
|
309
308
|
/* lookup item by key */
|
310
|
-
void *git_sortedcache_lookup(
|
309
|
+
void *git_sortedcache_lookup(git_sortedcache *sc, const char *key)
|
311
310
|
{
|
312
|
-
|
311
|
+
void *value;
|
312
|
+
|
313
|
+
return git_hashmap_str_get(&value, &sc->map, key) == 0 ? value : NULL;
|
313
314
|
}
|
314
315
|
|
315
316
|
/* find out how many items are in the cache */
|
@@ -370,7 +371,7 @@ int git_sortedcache_remove(git_sortedcache *sc, size_t pos)
|
|
370
371
|
|
371
372
|
(void)git_vector_remove(&sc->items, pos);
|
372
373
|
|
373
|
-
|
374
|
+
git_hashmap_str_remove(&sc->map, item + sc->item_path_offset);
|
374
375
|
|
375
376
|
if (sc->free_item)
|
376
377
|
sc->free_item(sc->free_item_payload, item);
|
@@ -14,7 +14,7 @@
|
|
14
14
|
#include "vector.h"
|
15
15
|
#include "thread.h"
|
16
16
|
#include "pool.h"
|
17
|
-
#include "
|
17
|
+
#include "hashmap_str.h"
|
18
18
|
|
19
19
|
#include <stddef.h>
|
20
20
|
|
@@ -36,7 +36,7 @@ typedef struct {
|
|
36
36
|
void *free_item_payload;
|
37
37
|
git_pool pool;
|
38
38
|
git_vector items;
|
39
|
-
|
39
|
+
git_hashmap_str map;
|
40
40
|
git_futils_filestamp stamp;
|
41
41
|
char path[GIT_FLEX_ARRAY];
|
42
42
|
} git_sortedcache;
|
@@ -163,7 +163,7 @@ GIT_WARN_UNUSED_RESULT int git_sortedcache_rlock(git_sortedcache *sc);
|
|
163
163
|
void git_sortedcache_runlock(git_sortedcache *sc);
|
164
164
|
|
165
165
|
/* Lookup item by key - returns NULL if not found */
|
166
|
-
void *git_sortedcache_lookup(
|
166
|
+
void *git_sortedcache_lookup(git_sortedcache *sc, const char *key);
|
167
167
|
|
168
168
|
/* Get how many items are in the cache
|
169
169
|
*
|
@@ -0,0 +1,66 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
#ifndef INCLUDE_stackstr_h__
|
8
|
+
#define INCLUDE_stackstr_h__
|
9
|
+
|
10
|
+
#include "git2_util.h"
|
11
|
+
|
12
|
+
typedef struct {
|
13
|
+
/* Length of / number of bytes used by `data`. */
|
14
|
+
size_t len;
|
15
|
+
|
16
|
+
/* Size of the allocated `data` buffer. */
|
17
|
+
size_t size;
|
18
|
+
|
19
|
+
/* The actual string buffer data. */
|
20
|
+
char data[GIT_FLEX_ARRAY];
|
21
|
+
} git_staticstr;
|
22
|
+
|
23
|
+
#define git_staticstr_with_size(__size) \
|
24
|
+
struct { \
|
25
|
+
size_t len; \
|
26
|
+
size_t size; \
|
27
|
+
char data[__size]; \
|
28
|
+
}
|
29
|
+
|
30
|
+
#define git_staticstr_init(__str, __size) \
|
31
|
+
do { \
|
32
|
+
(__str)->len = 0; \
|
33
|
+
(__str)->size = __size; \
|
34
|
+
(__str)->data[0] = '\0'; \
|
35
|
+
} while(0)
|
36
|
+
|
37
|
+
#define git_staticstr_offset(__str) \
|
38
|
+
((__str)->data + (__str)->len)
|
39
|
+
|
40
|
+
#define git_staticstr_remain(__str) \
|
41
|
+
((__str)->len > (__str)->size ? 0 : ((__str)->size - (__str)->len))
|
42
|
+
|
43
|
+
#define git_staticstr_increase(__str, __len) \
|
44
|
+
do { ((__str)->len += __len); } while(0)
|
45
|
+
|
46
|
+
#define git_staticstr_consume_bytes(__str, __len) \
|
47
|
+
do { git_staticstr_consume(__str, (__str)->data + __len); } while(0)
|
48
|
+
|
49
|
+
#define git_staticstr_consume(__str, __end) \
|
50
|
+
do { \
|
51
|
+
if (__end > (__str)->data && \
|
52
|
+
__end <= (__str)->data + (__str)->len) { \
|
53
|
+
size_t __consumed = __end - (__str)->data; \
|
54
|
+
memmove((__str)->data, __end, (__str)->len - __consumed); \
|
55
|
+
(__str)->len -= __consumed; \
|
56
|
+
(__str)->data[(__str)->len] = '\0'; \
|
57
|
+
} \
|
58
|
+
} while(0)
|
59
|
+
|
60
|
+
#define git_staticstr_clear(__str) \
|
61
|
+
do { \
|
62
|
+
(__str)->len = 0; \
|
63
|
+
(__str)->data[0] = 0; \
|
64
|
+
} while(0)
|
65
|
+
|
66
|
+
#endif
|
@@ -485,8 +485,8 @@ int git_str_decode_percent(
|
|
485
485
|
for (str_pos = 0; str_pos < str_len; buf->size++, str_pos++) {
|
486
486
|
if (str[str_pos] == '%' &&
|
487
487
|
str_len > str_pos + 2 &&
|
488
|
-
|
489
|
-
|
488
|
+
git__isxdigit(str[str_pos + 1]) &&
|
489
|
+
git__isxdigit(str[str_pos + 2])) {
|
490
490
|
buf->ptr[buf->size] = (HEX_DECODE(str[str_pos + 1]) << 4) +
|
491
491
|
HEX_DECODE(str[str_pos + 2]);
|
492
492
|
str_pos += 2;
|
@@ -0,0 +1,108 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include <stdio.h>
|
9
|
+
|
10
|
+
#include "git2_util.h"
|
11
|
+
#include "vector.h"
|
12
|
+
#include "strlist.h"
|
13
|
+
|
14
|
+
int git_strlist_copy(char ***out, const char **in, size_t len)
|
15
|
+
{
|
16
|
+
char **dup;
|
17
|
+
size_t i;
|
18
|
+
|
19
|
+
dup = git__calloc(len, sizeof(char *));
|
20
|
+
GIT_ERROR_CHECK_ALLOC(dup);
|
21
|
+
|
22
|
+
for (i = 0; i < len; i++) {
|
23
|
+
dup[i] = git__strdup(in[i]);
|
24
|
+
GIT_ERROR_CHECK_ALLOC(dup[i]);
|
25
|
+
}
|
26
|
+
|
27
|
+
*out = dup;
|
28
|
+
return 0;
|
29
|
+
}
|
30
|
+
|
31
|
+
int git_strlist_copy_with_null(char ***out, const char **in, size_t len)
|
32
|
+
{
|
33
|
+
char **dup;
|
34
|
+
size_t new_len, i;
|
35
|
+
|
36
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&new_len, len, 1);
|
37
|
+
|
38
|
+
dup = git__calloc(new_len, sizeof(char *));
|
39
|
+
GIT_ERROR_CHECK_ALLOC(dup);
|
40
|
+
|
41
|
+
for (i = 0; i < len; i++) {
|
42
|
+
dup[i] = git__strdup(in[i]);
|
43
|
+
GIT_ERROR_CHECK_ALLOC(dup[i]);
|
44
|
+
}
|
45
|
+
|
46
|
+
*out = dup;
|
47
|
+
return 0;
|
48
|
+
}
|
49
|
+
|
50
|
+
bool git_strlist_contains_prefix(
|
51
|
+
const char **strings,
|
52
|
+
size_t len,
|
53
|
+
const char *str,
|
54
|
+
size_t n)
|
55
|
+
{
|
56
|
+
size_t i;
|
57
|
+
|
58
|
+
for (i = 0; i < len; i++) {
|
59
|
+
if (strncmp(strings[i], str, n) == 0)
|
60
|
+
return true;
|
61
|
+
}
|
62
|
+
|
63
|
+
return false;
|
64
|
+
}
|
65
|
+
|
66
|
+
bool git_strlist_contains_key(
|
67
|
+
const char **strings,
|
68
|
+
size_t len,
|
69
|
+
const char *key,
|
70
|
+
char delimiter)
|
71
|
+
{
|
72
|
+
const char *c;
|
73
|
+
|
74
|
+
for (c = key; *c; c++) {
|
75
|
+
if (*c == delimiter)
|
76
|
+
break;
|
77
|
+
}
|
78
|
+
|
79
|
+
return *c ?
|
80
|
+
git_strlist_contains_prefix(strings, len, key, (c - key)) :
|
81
|
+
false;
|
82
|
+
}
|
83
|
+
|
84
|
+
void git_strlist_free(char **strings, size_t len)
|
85
|
+
{
|
86
|
+
size_t i;
|
87
|
+
|
88
|
+
if (!strings)
|
89
|
+
return;
|
90
|
+
|
91
|
+
for (i = 0; i < len; i++)
|
92
|
+
git__free(strings[i]);
|
93
|
+
|
94
|
+
git__free(strings);
|
95
|
+
}
|
96
|
+
|
97
|
+
void git_strlist_free_with_null(char **strings)
|
98
|
+
{
|
99
|
+
char **s;
|
100
|
+
|
101
|
+
if (!strings)
|
102
|
+
return;
|
103
|
+
|
104
|
+
for (s = strings; *s; s++)
|
105
|
+
git__free(*s);
|
106
|
+
|
107
|
+
git__free(strings);
|
108
|
+
}
|