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
@@ -0,0 +1,70 @@
|
|
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_ctype_compat_h__
|
8
|
+
#define INCLUDE_ctype_compat_h__
|
9
|
+
|
10
|
+
/*
|
11
|
+
* The Microsoft C runtime (MSVCRT) may take a heavy lock on the
|
12
|
+
* locale in order to figure out how the `ctype` functions work.
|
13
|
+
* This is deeply slow. Provide our own to avoid that.
|
14
|
+
*/
|
15
|
+
|
16
|
+
#ifdef GIT_WIN32
|
17
|
+
|
18
|
+
GIT_INLINE(int) git__tolower(int c)
|
19
|
+
{
|
20
|
+
return (c >= 'A' && c <= 'Z') ? (c + 32) : c;
|
21
|
+
}
|
22
|
+
|
23
|
+
GIT_INLINE(int) git__toupper(int c)
|
24
|
+
{
|
25
|
+
return (c >= 'a' && c <= 'z') ? (c - 32) : c;
|
26
|
+
}
|
27
|
+
|
28
|
+
GIT_INLINE(bool) git__isalpha(int c)
|
29
|
+
{
|
30
|
+
return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
|
31
|
+
}
|
32
|
+
|
33
|
+
GIT_INLINE(bool) git__isdigit(int c)
|
34
|
+
{
|
35
|
+
return (c >= '0' && c <= '9');
|
36
|
+
}
|
37
|
+
|
38
|
+
GIT_INLINE(bool) git__isalnum(int c)
|
39
|
+
{
|
40
|
+
return git__isalpha(c) || git__isdigit(c);
|
41
|
+
}
|
42
|
+
|
43
|
+
GIT_INLINE(bool) git__isspace(int c)
|
44
|
+
{
|
45
|
+
return (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r' || c == '\v');
|
46
|
+
}
|
47
|
+
|
48
|
+
GIT_INLINE(bool) git__isxdigit(int c)
|
49
|
+
{
|
50
|
+
return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
|
51
|
+
}
|
52
|
+
|
53
|
+
GIT_INLINE(bool) git__isprint(int c)
|
54
|
+
{
|
55
|
+
return (c >= ' ' && c <= '~');
|
56
|
+
}
|
57
|
+
|
58
|
+
#else
|
59
|
+
# define git__tolower(a) tolower((unsigned char)(a))
|
60
|
+
# define git__toupper(a) toupper((unsigned char)(a))
|
61
|
+
|
62
|
+
# define git__isalpha(a) (!!isalpha((unsigned char)(a)))
|
63
|
+
# define git__isdigit(a) (!!isdigit((unsigned char)(a)))
|
64
|
+
# define git__isalnum(a) (!!isalnum((unsigned char)(a)))
|
65
|
+
# define git__isspace(a) (!!isspace((unsigned char)(a)))
|
66
|
+
# define git__isxdigit(a) (!!isxdigit((unsigned char)(a)))
|
67
|
+
# define git__isprint(a) (!!isprint((unsigned char)(a)))
|
68
|
+
#endif
|
69
|
+
|
70
|
+
#endif
|
@@ -129,9 +129,9 @@ static size_t match_string(const char *date, const char *str)
|
|
129
129
|
for (i = 0; *date; date++, str++, i++) {
|
130
130
|
if (*date == *str)
|
131
131
|
continue;
|
132
|
-
if (
|
132
|
+
if (git__toupper(*date) == git__toupper(*str))
|
133
133
|
continue;
|
134
|
-
if (!
|
134
|
+
if (!git__isalnum(*date))
|
135
135
|
break;
|
136
136
|
return 0;
|
137
137
|
}
|
@@ -143,7 +143,7 @@ static int skip_alpha(const char *date)
|
|
143
143
|
int i = 0;
|
144
144
|
do {
|
145
145
|
i++;
|
146
|
-
} while (
|
146
|
+
} while (git__isalpha(date[i]));
|
147
147
|
return i;
|
148
148
|
}
|
149
149
|
|
@@ -251,7 +251,7 @@ static size_t match_multi_number(unsigned long num, char c, const char *date, ch
|
|
251
251
|
|
252
252
|
num2 = strtol(end+1, &end, 10);
|
253
253
|
num3 = -1;
|
254
|
-
if (*end == c &&
|
254
|
+
if (*end == c && git__isdigit(end[1]))
|
255
255
|
num3 = strtol(end+1, &end, 10);
|
256
256
|
|
257
257
|
/* Time? Date? */
|
@@ -349,7 +349,7 @@ static size_t match_digit(const char *date, struct tm *tm, int *offset, int *tm_
|
|
349
349
|
case '.':
|
350
350
|
case '/':
|
351
351
|
case '-':
|
352
|
-
if (
|
352
|
+
if (git__isdigit(end[1])) {
|
353
353
|
size_t match = match_multi_number(num, *end, date, end, tm);
|
354
354
|
if (match)
|
355
355
|
return match;
|
@@ -364,7 +364,7 @@ static size_t match_digit(const char *date, struct tm *tm, int *offset, int *tm_
|
|
364
364
|
n = 0;
|
365
365
|
do {
|
366
366
|
n++;
|
367
|
-
} while (
|
367
|
+
} while (git__isdigit(date[n]));
|
368
368
|
|
369
369
|
/* Four-digit year or a timezone? */
|
370
370
|
if (n == 4) {
|
@@ -514,11 +514,11 @@ static int parse_date_basic(const char *date, git_time_t *timestamp, int *offset
|
|
514
514
|
if (!c || c == '\n')
|
515
515
|
break;
|
516
516
|
|
517
|
-
if (
|
517
|
+
if (git__isalpha(c))
|
518
518
|
match = match_alpha(date, &tm, offset);
|
519
|
-
else if (
|
519
|
+
else if (git__isdigit(c))
|
520
520
|
match = match_digit(date, &tm, offset, &tm_gmt);
|
521
|
-
else if ((c == '-' || c == '+') &&
|
521
|
+
else if ((c == '-' || c == '+') && git__isdigit(date[1]))
|
522
522
|
match = match_tz(date, offset);
|
523
523
|
|
524
524
|
if (!match) {
|
@@ -682,7 +682,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
|
|
682
682
|
const char *end = date;
|
683
683
|
int i;
|
684
684
|
|
685
|
-
while (
|
685
|
+
while (git__isalpha(*++end))
|
686
686
|
/* scan to non-alpha */;
|
687
687
|
|
688
688
|
for (i = 0; i < 12; i++) {
|
@@ -783,7 +783,7 @@ static const char *approxidate_digit(const char *date, struct tm *tm, int *num)
|
|
783
783
|
case '.':
|
784
784
|
case '/':
|
785
785
|
case '-':
|
786
|
-
if (
|
786
|
+
if (git__isdigit(end[1])) {
|
787
787
|
size_t match = match_multi_number(number, *end, date, end, tm);
|
788
788
|
if (match)
|
789
789
|
return date + match;
|
@@ -843,13 +843,13 @@ static git_time_t approxidate_str(const char *date,
|
|
843
843
|
if (!c)
|
844
844
|
break;
|
845
845
|
date++;
|
846
|
-
if (
|
846
|
+
if (git__isdigit(c)) {
|
847
847
|
pending_number(&tm, &number);
|
848
848
|
date = approxidate_digit(date-1, &tm, &number);
|
849
849
|
touched = 1;
|
850
850
|
continue;
|
851
851
|
}
|
852
|
-
if (
|
852
|
+
if (git__isalpha(c))
|
853
853
|
date = approxidate_alpha(date-1, &tm, &now, &number, &touched);
|
854
854
|
}
|
855
855
|
pending_number(&tm, &number);
|
@@ -858,7 +858,7 @@ static git_time_t approxidate_str(const char *date,
|
|
858
858
|
return update_tm(&tm, &now, 0);
|
859
859
|
}
|
860
860
|
|
861
|
-
int
|
861
|
+
int git_date_offset_parse(git_time_t *out, int *out_offset, const char *date)
|
862
862
|
{
|
863
863
|
time_t time_sec;
|
864
864
|
git_time_t timestamp;
|
@@ -866,6 +866,7 @@ int git_date_parse(git_time_t *out, const char *date)
|
|
866
866
|
|
867
867
|
if (!parse_date_basic(date, ×tamp, &offset)) {
|
868
868
|
*out = timestamp;
|
869
|
+
*out_offset = offset;
|
869
870
|
return 0;
|
870
871
|
}
|
871
872
|
|
@@ -876,6 +877,13 @@ int git_date_parse(git_time_t *out, const char *date)
|
|
876
877
|
return error_ret;
|
877
878
|
}
|
878
879
|
|
880
|
+
int git_date_parse(git_time_t *out, const char *date)
|
881
|
+
{
|
882
|
+
int offset;
|
883
|
+
|
884
|
+
return git_date_offset_parse(out, &offset, date);
|
885
|
+
}
|
886
|
+
|
879
887
|
int git_date_rfc2822_fmt(git_str *out, git_time_t time, int offset)
|
880
888
|
{
|
881
889
|
time_t t;
|
@@ -10,9 +10,21 @@
|
|
10
10
|
#include "util.h"
|
11
11
|
#include "str.h"
|
12
12
|
|
13
|
+
/*
|
14
|
+
* Parse a string into a value as a git_time_t with a timezone offset.
|
15
|
+
*
|
16
|
+
* Sample valid input:
|
17
|
+
* - "yesterday"
|
18
|
+
* - "July 17, 2003"
|
19
|
+
* - "2003-7-17 08:23i+03"
|
20
|
+
*/
|
21
|
+
extern int git_date_offset_parse(git_time_t *out, int *out_offset, const char *date);
|
22
|
+
|
13
23
|
/*
|
14
24
|
* Parse a string into a value as a git_time_t.
|
15
25
|
*
|
26
|
+
* Timezone offset is ignored.
|
27
|
+
*
|
16
28
|
* Sample valid input:
|
17
29
|
* - "yesterday"
|
18
30
|
* - "July 17, 2003"
|
@@ -0,0 +1,401 @@
|
|
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 "git2_util.h"
|
9
|
+
|
10
|
+
#include "errors.h"
|
11
|
+
#include "posix.h"
|
12
|
+
#include "str.h"
|
13
|
+
#include "runtime.h"
|
14
|
+
|
15
|
+
/*
|
16
|
+
* Some static error data that is used when we're out of memory, TLS
|
17
|
+
* has not been setup, or TLS has failed.
|
18
|
+
*/
|
19
|
+
|
20
|
+
static git_error oom_error = {
|
21
|
+
"Out of memory",
|
22
|
+
GIT_ERROR_NOMEMORY
|
23
|
+
};
|
24
|
+
|
25
|
+
static git_error uninitialized_error = {
|
26
|
+
"library has not been initialized",
|
27
|
+
GIT_ERROR_INVALID
|
28
|
+
};
|
29
|
+
|
30
|
+
static git_error tlsdata_error = {
|
31
|
+
"thread-local data initialization failure",
|
32
|
+
GIT_ERROR_THREAD
|
33
|
+
};
|
34
|
+
|
35
|
+
static git_error no_error = {
|
36
|
+
"no error",
|
37
|
+
GIT_ERROR_NONE
|
38
|
+
};
|
39
|
+
|
40
|
+
#define IS_STATIC_ERROR(err) \
|
41
|
+
((err) == &oom_error || (err) == &uninitialized_error || \
|
42
|
+
(err) == &tlsdata_error || (err) == &no_error)
|
43
|
+
|
44
|
+
/* Per-thread error state (TLS) */
|
45
|
+
|
46
|
+
static git_tlsdata_key tls_key;
|
47
|
+
|
48
|
+
struct error_threadstate {
|
49
|
+
/* The error message buffer. */
|
50
|
+
git_str message;
|
51
|
+
|
52
|
+
/* Error information, set by `git_error_set` and friends. */
|
53
|
+
git_error error;
|
54
|
+
|
55
|
+
/*
|
56
|
+
* The last error to occur; points to the error member of this
|
57
|
+
* struct _or_ a static error.
|
58
|
+
*/
|
59
|
+
git_error *last;
|
60
|
+
};
|
61
|
+
|
62
|
+
static void threadstate_dispose(struct error_threadstate *threadstate)
|
63
|
+
{
|
64
|
+
if (!threadstate)
|
65
|
+
return;
|
66
|
+
|
67
|
+
git_str_dispose(&threadstate->message);
|
68
|
+
}
|
69
|
+
|
70
|
+
static struct error_threadstate *threadstate_get(void)
|
71
|
+
{
|
72
|
+
struct error_threadstate *threadstate;
|
73
|
+
|
74
|
+
if ((threadstate = git_tlsdata_get(tls_key)) != NULL)
|
75
|
+
return threadstate;
|
76
|
+
|
77
|
+
/*
|
78
|
+
* Avoid git__malloc here, since if it fails, it sets an error
|
79
|
+
* message, which requires thread state, which would allocate
|
80
|
+
* here, which would fail, which would set an error message...
|
81
|
+
*/
|
82
|
+
|
83
|
+
if ((threadstate = git__allocator.gmalloc(
|
84
|
+
sizeof(struct error_threadstate),
|
85
|
+
__FILE__, __LINE__)) == NULL)
|
86
|
+
return NULL;
|
87
|
+
|
88
|
+
memset(threadstate, 0, sizeof(struct error_threadstate));
|
89
|
+
|
90
|
+
if (git_str_init(&threadstate->message, 0) < 0) {
|
91
|
+
git__allocator.gfree(threadstate);
|
92
|
+
return NULL;
|
93
|
+
}
|
94
|
+
|
95
|
+
git_tlsdata_set(tls_key, threadstate);
|
96
|
+
return threadstate;
|
97
|
+
}
|
98
|
+
|
99
|
+
static void GIT_SYSTEM_CALL threadstate_free(void *threadstate)
|
100
|
+
{
|
101
|
+
threadstate_dispose(threadstate);
|
102
|
+
git__free(threadstate);
|
103
|
+
}
|
104
|
+
|
105
|
+
static void git_error_global_shutdown(void)
|
106
|
+
{
|
107
|
+
struct error_threadstate *threadstate;
|
108
|
+
|
109
|
+
threadstate = git_tlsdata_get(tls_key);
|
110
|
+
git_tlsdata_set(tls_key, NULL);
|
111
|
+
|
112
|
+
threadstate_dispose(threadstate);
|
113
|
+
git__free(threadstate);
|
114
|
+
|
115
|
+
git_tlsdata_dispose(tls_key);
|
116
|
+
}
|
117
|
+
|
118
|
+
int git_error_global_init(void)
|
119
|
+
{
|
120
|
+
if (git_tlsdata_init(&tls_key, &threadstate_free) != 0)
|
121
|
+
return -1;
|
122
|
+
|
123
|
+
return git_runtime_shutdown_register(git_error_global_shutdown);
|
124
|
+
}
|
125
|
+
|
126
|
+
static void set_error_from_buffer(int error_class)
|
127
|
+
{
|
128
|
+
struct error_threadstate *threadstate = threadstate_get();
|
129
|
+
git_error *error;
|
130
|
+
git_str *buf;
|
131
|
+
|
132
|
+
if (!threadstate)
|
133
|
+
return;
|
134
|
+
|
135
|
+
error = &threadstate->error;
|
136
|
+
buf = &threadstate->message;
|
137
|
+
|
138
|
+
error->message = buf->ptr;
|
139
|
+
error->klass = error_class;
|
140
|
+
|
141
|
+
threadstate->last = error;
|
142
|
+
}
|
143
|
+
|
144
|
+
static void set_error(int error_class, char *string)
|
145
|
+
{
|
146
|
+
struct error_threadstate *threadstate = threadstate_get();
|
147
|
+
git_str *buf;
|
148
|
+
|
149
|
+
if (!threadstate)
|
150
|
+
return;
|
151
|
+
|
152
|
+
buf = &threadstate->message;
|
153
|
+
|
154
|
+
git_str_clear(buf);
|
155
|
+
|
156
|
+
if (string)
|
157
|
+
git_str_puts(buf, string);
|
158
|
+
|
159
|
+
if (!git_str_oom(buf))
|
160
|
+
set_error_from_buffer(error_class);
|
161
|
+
}
|
162
|
+
|
163
|
+
void git_error_set_oom(void)
|
164
|
+
{
|
165
|
+
struct error_threadstate *threadstate = threadstate_get();
|
166
|
+
|
167
|
+
if (!threadstate)
|
168
|
+
return;
|
169
|
+
|
170
|
+
threadstate->last = &oom_error;
|
171
|
+
}
|
172
|
+
|
173
|
+
void git_error_set(int error_class, const char *fmt, ...)
|
174
|
+
{
|
175
|
+
va_list ap;
|
176
|
+
|
177
|
+
va_start(ap, fmt);
|
178
|
+
git_error_vset(error_class, fmt, ap);
|
179
|
+
va_end(ap);
|
180
|
+
}
|
181
|
+
|
182
|
+
void git_error_vset(int error_class, const char *fmt, va_list ap)
|
183
|
+
{
|
184
|
+
#ifdef GIT_WIN32
|
185
|
+
DWORD win32_error_code = (error_class == GIT_ERROR_OS) ? GetLastError() : 0;
|
186
|
+
#endif
|
187
|
+
|
188
|
+
struct error_threadstate *threadstate = threadstate_get();
|
189
|
+
int error_code = (error_class == GIT_ERROR_OS) ? errno : 0;
|
190
|
+
git_str *buf;
|
191
|
+
|
192
|
+
if (!threadstate)
|
193
|
+
return;
|
194
|
+
|
195
|
+
buf = &threadstate->message;
|
196
|
+
|
197
|
+
git_str_clear(buf);
|
198
|
+
|
199
|
+
if (fmt) {
|
200
|
+
git_str_vprintf(buf, fmt, ap);
|
201
|
+
if (error_class == GIT_ERROR_OS)
|
202
|
+
git_str_PUTS(buf, ": ");
|
203
|
+
}
|
204
|
+
|
205
|
+
if (error_class == GIT_ERROR_OS) {
|
206
|
+
#ifdef GIT_WIN32
|
207
|
+
char *win32_error = git_win32_get_error_message(win32_error_code);
|
208
|
+
if (win32_error) {
|
209
|
+
git_str_puts(buf, win32_error);
|
210
|
+
git__free(win32_error);
|
211
|
+
|
212
|
+
SetLastError(0);
|
213
|
+
}
|
214
|
+
else
|
215
|
+
#endif
|
216
|
+
if (error_code)
|
217
|
+
git_str_puts(buf, strerror(error_code));
|
218
|
+
|
219
|
+
if (error_code)
|
220
|
+
errno = 0;
|
221
|
+
}
|
222
|
+
|
223
|
+
if (!git_str_oom(buf))
|
224
|
+
set_error_from_buffer(error_class);
|
225
|
+
}
|
226
|
+
|
227
|
+
int git_error_set_str(int error_class, const char *string)
|
228
|
+
{
|
229
|
+
struct error_threadstate *threadstate = threadstate_get();
|
230
|
+
git_str *buf;
|
231
|
+
|
232
|
+
GIT_ASSERT_ARG(string);
|
233
|
+
|
234
|
+
if (!threadstate)
|
235
|
+
return -1;
|
236
|
+
|
237
|
+
buf = &threadstate->message;
|
238
|
+
|
239
|
+
git_str_clear(buf);
|
240
|
+
git_str_puts(buf, string);
|
241
|
+
|
242
|
+
if (git_str_oom(buf))
|
243
|
+
return -1;
|
244
|
+
|
245
|
+
set_error_from_buffer(error_class);
|
246
|
+
return 0;
|
247
|
+
}
|
248
|
+
|
249
|
+
void git_error_clear(void)
|
250
|
+
{
|
251
|
+
struct error_threadstate *threadstate = threadstate_get();
|
252
|
+
|
253
|
+
if (!threadstate)
|
254
|
+
return;
|
255
|
+
|
256
|
+
if (threadstate->last != NULL) {
|
257
|
+
set_error(0, NULL);
|
258
|
+
threadstate->last = NULL;
|
259
|
+
}
|
260
|
+
|
261
|
+
errno = 0;
|
262
|
+
#ifdef GIT_WIN32
|
263
|
+
SetLastError(0);
|
264
|
+
#endif
|
265
|
+
}
|
266
|
+
|
267
|
+
bool git_error_exists(void)
|
268
|
+
{
|
269
|
+
struct error_threadstate *threadstate;
|
270
|
+
|
271
|
+
if ((threadstate = threadstate_get()) == NULL)
|
272
|
+
return true;
|
273
|
+
|
274
|
+
return threadstate->last != NULL;
|
275
|
+
}
|
276
|
+
|
277
|
+
const git_error *git_error_last(void)
|
278
|
+
{
|
279
|
+
struct error_threadstate *threadstate;
|
280
|
+
|
281
|
+
/* If the library is not initialized, return a static error. */
|
282
|
+
if (!git_runtime_init_count())
|
283
|
+
return &uninitialized_error;
|
284
|
+
|
285
|
+
if ((threadstate = threadstate_get()) == NULL)
|
286
|
+
return &tlsdata_error;
|
287
|
+
|
288
|
+
if (!threadstate->last)
|
289
|
+
return &no_error;
|
290
|
+
|
291
|
+
return threadstate->last;
|
292
|
+
}
|
293
|
+
|
294
|
+
int git_error_save(git_error **out)
|
295
|
+
{
|
296
|
+
struct error_threadstate *threadstate = threadstate_get();
|
297
|
+
git_error *error, *dup;
|
298
|
+
|
299
|
+
if (!threadstate) {
|
300
|
+
*out = &tlsdata_error;
|
301
|
+
return -1;
|
302
|
+
}
|
303
|
+
|
304
|
+
error = threadstate->last;
|
305
|
+
|
306
|
+
if (!error || error == &no_error) {
|
307
|
+
*out = &no_error;
|
308
|
+
return 0;
|
309
|
+
} else if (IS_STATIC_ERROR(error)) {
|
310
|
+
*out = error;
|
311
|
+
return 0;
|
312
|
+
}
|
313
|
+
|
314
|
+
if ((dup = git__malloc(sizeof(git_error))) == NULL) {
|
315
|
+
*out = &oom_error;
|
316
|
+
return -1;
|
317
|
+
}
|
318
|
+
|
319
|
+
dup->klass = error->klass;
|
320
|
+
dup->message = git__strdup(error->message);
|
321
|
+
|
322
|
+
if (!dup->message) {
|
323
|
+
*out = &oom_error;
|
324
|
+
return -1;
|
325
|
+
}
|
326
|
+
|
327
|
+
*out = dup;
|
328
|
+
return 0;
|
329
|
+
}
|
330
|
+
|
331
|
+
int git_error_restore(git_error *error)
|
332
|
+
{
|
333
|
+
struct error_threadstate *threadstate = threadstate_get();
|
334
|
+
|
335
|
+
GIT_ASSERT_ARG(error);
|
336
|
+
|
337
|
+
if (IS_STATIC_ERROR(error) && threadstate)
|
338
|
+
threadstate->last = error;
|
339
|
+
else
|
340
|
+
set_error(error->klass, error->message);
|
341
|
+
|
342
|
+
git_error_free(error);
|
343
|
+
return 0;
|
344
|
+
}
|
345
|
+
|
346
|
+
void git_error_free(git_error *error)
|
347
|
+
{
|
348
|
+
if (!error)
|
349
|
+
return;
|
350
|
+
|
351
|
+
if (IS_STATIC_ERROR(error))
|
352
|
+
return;
|
353
|
+
|
354
|
+
git__free(error->message);
|
355
|
+
git__free(error);
|
356
|
+
}
|
357
|
+
|
358
|
+
int git_error_system_last(void)
|
359
|
+
{
|
360
|
+
#ifdef GIT_WIN32
|
361
|
+
return GetLastError();
|
362
|
+
#else
|
363
|
+
return errno;
|
364
|
+
#endif
|
365
|
+
}
|
366
|
+
|
367
|
+
void git_error_system_set(int code)
|
368
|
+
{
|
369
|
+
#ifdef GIT_WIN32
|
370
|
+
SetLastError(code);
|
371
|
+
#else
|
372
|
+
errno = code;
|
373
|
+
#endif
|
374
|
+
}
|
375
|
+
|
376
|
+
/* Deprecated error values and functions */
|
377
|
+
|
378
|
+
#ifndef GIT_DEPRECATE_HARD
|
379
|
+
|
380
|
+
#include "git2/deprecated.h"
|
381
|
+
|
382
|
+
const git_error *giterr_last(void)
|
383
|
+
{
|
384
|
+
return git_error_last();
|
385
|
+
}
|
386
|
+
|
387
|
+
void giterr_clear(void)
|
388
|
+
{
|
389
|
+
git_error_clear();
|
390
|
+
}
|
391
|
+
|
392
|
+
void giterr_set_str(int error_class, const char *string)
|
393
|
+
{
|
394
|
+
git_error_set_str(error_class, string);
|
395
|
+
}
|
396
|
+
|
397
|
+
void giterr_set_oom(void)
|
398
|
+
{
|
399
|
+
git_error_set_oom();
|
400
|
+
}
|
401
|
+
#endif
|
@@ -8,13 +8,22 @@
|
|
8
8
|
#ifndef INCLUDE_errors_h__
|
9
9
|
#define INCLUDE_errors_h__
|
10
10
|
|
11
|
-
#include "
|
11
|
+
#include "git2_util.h"
|
12
|
+
#include "git2/sys/errors.h"
|
13
|
+
|
14
|
+
/* Initialize the error thread-state. */
|
15
|
+
int git_error_global_init(void);
|
12
16
|
|
13
17
|
/*
|
14
18
|
* `vprintf`-style formatting for the error message for this thread.
|
15
19
|
*/
|
16
20
|
void git_error_vset(int error_class, const char *fmt, va_list ap);
|
17
21
|
|
22
|
+
/**
|
23
|
+
* Determines whether an error exists.
|
24
|
+
*/
|
25
|
+
bool git_error_exists(void);
|
26
|
+
|
18
27
|
/**
|
19
28
|
* Set error message for user callback if needed.
|
20
29
|
*
|
@@ -27,9 +36,8 @@ GIT_INLINE(int) git_error_set_after_callback_function(
|
|
27
36
|
int error_code, const char *action)
|
28
37
|
{
|
29
38
|
if (error_code) {
|
30
|
-
|
31
|
-
|
32
|
-
git_error_set(e ? e->klass : GIT_ERROR_CALLBACK,
|
39
|
+
if (!git_error_exists())
|
40
|
+
git_error_set(GIT_ERROR_CALLBACK,
|
33
41
|
"%s callback returned %d", action, error_code);
|
34
42
|
}
|
35
43
|
return error_code;
|
@@ -53,28 +61,24 @@ int git_error_system_last(void);
|
|
53
61
|
*/
|
54
62
|
void git_error_system_set(int code);
|
55
63
|
|
56
|
-
/**
|
57
|
-
* Structure to preserve libgit2 error state
|
58
|
-
*/
|
59
|
-
typedef struct {
|
60
|
-
int error_code;
|
61
|
-
unsigned int oom : 1;
|
62
|
-
git_error error_msg;
|
63
|
-
} git_error_state;
|
64
|
-
|
65
64
|
/**
|
66
65
|
* Capture current error state to restore later, returning error code.
|
67
66
|
* If `error_code` is zero, this does not clear the current error state.
|
68
67
|
* You must either restore this error state, or free it.
|
68
|
+
*
|
69
|
+
* This function returns 0 on success, or -1 on failure. If the function
|
70
|
+
* fails, the `out` structure is set to the failure error message and
|
71
|
+
* the normal system error message is not updated.
|
69
72
|
*/
|
70
|
-
extern int
|
73
|
+
extern int git_error_save(git_error **out);
|
71
74
|
|
72
75
|
/**
|
73
|
-
* Restore error state to
|
76
|
+
* Restore thread error state to the given value. The given value is
|
77
|
+
* freed and `git_error_free` need not be called on it.
|
74
78
|
*/
|
75
|
-
extern int
|
79
|
+
extern int git_error_restore(git_error *error);
|
76
80
|
|
77
81
|
/** Free an error state. */
|
78
|
-
extern void
|
82
|
+
extern void git_error_free(git_error *error);
|
79
83
|
|
80
84
|
#endif
|
@@ -302,11 +302,16 @@ int git_filebuf_open_withsize(git_filebuf *file, const char *path, int flags, mo
|
|
302
302
|
}
|
303
303
|
|
304
304
|
/* If we are hashing on-write, allocate a new hash context */
|
305
|
-
if (flags &
|
305
|
+
if (flags & GIT_FILEBUF_HASH_SHA1) {
|
306
306
|
file->compute_digest = 1;
|
307
307
|
|
308
308
|
if (git_hash_ctx_init(&file->digest, GIT_HASH_ALGORITHM_SHA1) < 0)
|
309
309
|
goto cleanup;
|
310
|
+
} else if (flags & GIT_FILEBUF_HASH_SHA256) {
|
311
|
+
file->compute_digest = 1;
|
312
|
+
|
313
|
+
if (git_hash_ctx_init(&file->digest, GIT_HASH_ALGORITHM_SHA256) < 0)
|
314
|
+
goto cleanup;
|
310
315
|
}
|
311
316
|
|
312
317
|
compression = flags >> GIT_FILEBUF_DEFLATE_SHIFT;
|