rugged 1.3.2 → 1.6.2
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/README.md +34 -2
- data/ext/rugged/extconf.rb +7 -4
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_blame.c +2 -0
- data/ext/rugged/rugged_blob.c +3 -0
- data/ext/rugged/rugged_commit.c +1 -0
- data/ext/rugged/rugged_config.c +9 -2
- data/ext/rugged/rugged_diff.c +1 -0
- data/ext/rugged/rugged_index.c +2 -0
- data/ext/rugged/rugged_patch.c +1 -0
- data/ext/rugged/rugged_rebase.c +1 -0
- data/ext/rugged/rugged_reference.c +1 -0
- data/ext/rugged/rugged_remote.c +28 -10
- data/ext/rugged/rugged_repo.c +7 -9
- data/ext/rugged/rugged_revwalk.c +5 -1
- data/ext/rugged/rugged_settings.c +5 -0
- data/ext/rugged/rugged_submodule.c +1 -0
- data/ext/rugged/rugged_tag.c +1 -0
- data/ext/rugged/rugged_tree.c +4 -0
- data/lib/rugged/index.rb +1 -1
- data/lib/rugged/tree.rb +5 -1
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +132 -288
- data/vendor/libgit2/COPYING +106 -19
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/ExperimentalFeatures.cmake +23 -0
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
- data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +12 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
- data/vendor/libgit2/cmake/SelectHashes.cmake +91 -53
- data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/zlib/adler32.c +7 -0
- data/vendor/libgit2/deps/zlib/crc32.c +975 -288
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +83 -31
- data/vendor/libgit2/deps/zlib/deflate.h +12 -15
- data/vendor/libgit2/deps/zlib/gzguts.h +3 -2
- data/vendor/libgit2/deps/zlib/infback.c +2 -1
- data/vendor/libgit2/deps/zlib/inffast.c +14 -14
- data/vendor/libgit2/deps/zlib/inflate.c +39 -8
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
- data/vendor/libgit2/deps/zlib/trees.c +27 -48
- data/vendor/libgit2/deps/zlib/zlib.h +126 -100
- data/vendor/libgit2/deps/zlib/zutil.c +2 -2
- data/vendor/libgit2/deps/zlib/zutil.h +12 -9
- data/vendor/libgit2/include/git2/apply.h +16 -2
- data/vendor/libgit2/include/git2/attr.h +11 -2
- data/vendor/libgit2/include/git2/blame.h +4 -1
- data/vendor/libgit2/include/git2/blob.h +14 -1
- data/vendor/libgit2/include/git2/branch.h +4 -2
- data/vendor/libgit2/include/git2/buffer.h +18 -78
- data/vendor/libgit2/include/git2/cert.h +2 -2
- data/vendor/libgit2/include/git2/checkout.h +5 -2
- data/vendor/libgit2/include/git2/clone.h +3 -3
- data/vendor/libgit2/include/git2/commit.h +2 -0
- data/vendor/libgit2/include/git2/common.h +28 -7
- data/vendor/libgit2/include/git2/config.h +25 -9
- data/vendor/libgit2/include/git2/credential.h +2 -1
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +9 -1
- data/vendor/libgit2/include/git2/describe.h +7 -2
- data/vendor/libgit2/include/git2/diff.h +18 -10
- data/vendor/libgit2/include/git2/email.h +1 -1
- data/vendor/libgit2/include/git2/errors.h +17 -3
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +7 -2
- data/vendor/libgit2/include/git2/graph.h +1 -0
- data/vendor/libgit2/include/git2/ignore.h +1 -1
- data/vendor/libgit2/include/git2/index.h +11 -5
- data/vendor/libgit2/include/git2/indexer.h +48 -0
- data/vendor/libgit2/include/git2/merge.h +24 -4
- data/vendor/libgit2/include/git2/message.h +2 -0
- data/vendor/libgit2/include/git2/object.h +49 -0
- data/vendor/libgit2/include/git2/odb.h +94 -13
- data/vendor/libgit2/include/git2/odb_backend.h +107 -19
- data/vendor/libgit2/include/git2/oid.h +115 -15
- data/vendor/libgit2/include/git2/pack.h +24 -8
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/pathspec.h +1 -1
- data/vendor/libgit2/include/git2/proxy.h +1 -1
- data/vendor/libgit2/include/git2/rebase.h +9 -1
- data/vendor/libgit2/include/git2/refdb.h +3 -0
- data/vendor/libgit2/include/git2/reflog.h +1 -1
- data/vendor/libgit2/include/git2/refs.h +2 -2
- data/vendor/libgit2/include/git2/remote.h +184 -37
- data/vendor/libgit2/include/git2/repository.h +34 -10
- data/vendor/libgit2/include/git2/reset.h +2 -2
- data/vendor/libgit2/include/git2/revparse.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +4 -1
- data/vendor/libgit2/include/git2/signature.h +1 -1
- data/vendor/libgit2/include/git2/stash.h +61 -7
- data/vendor/libgit2/include/git2/status.h +14 -5
- data/vendor/libgit2/include/git2/strarray.h +0 -13
- data/vendor/libgit2/include/git2/submodule.h +7 -2
- data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +3 -6
- data/vendor/libgit2/include/git2/sys/remote.h +46 -0
- data/vendor/libgit2/include/git2/sys/stream.h +1 -1
- data/vendor/libgit2/include/git2/sys/transport.h +46 -39
- data/vendor/libgit2/include/git2/tag.h +1 -0
- data/vendor/libgit2/include/git2/tree.h +4 -3
- data/vendor/libgit2/include/git2/types.h +7 -7
- data/vendor/libgit2/include/git2/version.h +27 -6
- data/vendor/libgit2/include/git2/worktree.h +12 -2
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +177 -419
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +57 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/cli/cli.h +20 -0
- data/vendor/libgit2/src/cli/cmd.c +21 -0
- data/vendor/libgit2/src/cli/cmd.h +33 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +154 -0
- data/vendor/libgit2/src/cli/cmd_help.c +86 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +106 -0
- data/vendor/libgit2/src/cli/opt.c +669 -0
- data/vendor/libgit2/src/cli/opt.h +349 -0
- data/vendor/libgit2/src/cli/opt_usage.c +194 -0
- data/vendor/libgit2/src/cli/opt_usage.h +35 -0
- data/vendor/libgit2/src/cli/progress.c +345 -0
- data/vendor/libgit2/src/cli/progress.h +117 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +141 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +1 -1
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +18 -18
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +18 -18
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +18 -18
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +4 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +18 -13
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +2 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -1
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +38 -29
- data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +3 -3
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +164 -118
- data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +15 -3
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +74 -68
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +13 -13
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +96 -67
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +178 -73
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +122 -89
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +14 -4
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +7 -4
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +101 -69
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +15 -2
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +105 -93
- data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +9 -9
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +27 -23
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +35 -27
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +30 -9
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +2 -4
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +34 -36
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +3 -3
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +44 -26
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +47 -18
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +112 -100
- data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +40 -29
- data/vendor/libgit2/src/libgit2/diff_stats.h +18 -0
- data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +13 -8
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +55 -39
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +18 -18
- data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
- data/vendor/libgit2/src/libgit2/experimental.h.in +13 -0
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +72 -27
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -1
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +23 -23
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +127 -53
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +35 -34
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +91 -90
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +6 -3
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +173 -92
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +71 -61
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +5 -5
- data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +46 -11
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +38 -36
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +30 -30
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +2 -2
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -3
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +112 -92
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +5 -4
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +15 -12
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +5 -2
- data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +1 -2
- data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +1 -1
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +25 -34
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +135 -30
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +12 -3
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +228 -81
- data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +44 -5
- data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +192 -134
- data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +18 -5
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +137 -85
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +136 -90
- data/vendor/libgit2/src/libgit2/oid.h +273 -0
- data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +56 -30
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +11 -6
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +114 -84
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +31 -16
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +4 -3
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +1 -0
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +27 -11
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +29 -29
- data/vendor/libgit2/src/libgit2/path.c +375 -0
- data/vendor/libgit2/src/libgit2/path.h +68 -0
- data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +6 -6
- data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +2 -2
- data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +4 -1
- data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +1 -1
- data/vendor/libgit2/src/{push.c → libgit2/push.c} +43 -38
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +4 -16
- data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +9 -9
- data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +2 -2
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +119 -107
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +506 -197
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +7 -5
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +1 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +34 -32
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +2 -2
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +32 -37
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +5 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +718 -420
- data/vendor/libgit2/src/libgit2/remote.h +100 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +629 -386
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +20 -9
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +14 -14
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +71 -42
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +12 -8
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +12 -6
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -1
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +235 -61
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +4 -1
- data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +1 -0
- data/vendor/libgit2/src/libgit2/strarray.h +25 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +8 -6
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +1 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +7 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +3 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +4 -1
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +177 -161
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +1 -1
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +53 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +73 -42
- data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +2 -2
- data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +3 -3
- data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +2 -2
- data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +1 -14
- data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +5 -22
- data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +1 -1
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +1 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +12 -13
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +10 -10
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +9 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +41 -20
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +2 -3
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +75 -66
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +138 -116
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +92 -133
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +35 -32
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +177 -65
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +97 -49
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +365 -198
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +58 -59
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +8 -8
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +2 -2
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +93 -83
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +4 -4
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +121 -94
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/libgit2/xdiff/git-xdiff.h +53 -0
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +15 -15
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +134 -108
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +23 -7
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +87 -78
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +1 -12
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +104 -117
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +6 -17
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +15 -20
- data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +18 -7
- data/vendor/libgit2/src/util/CMakeLists.txt +80 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +1 -1
- data/vendor/libgit2/src/{date.c → util/date.c} +14 -20
- data/vendor/libgit2/src/util/date.h +33 -0
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +29 -29
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +2 -2
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +453 -647
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +221 -188
- data/vendor/libgit2/src/{futils.c → util/futils.c} +135 -90
- data/vendor/libgit2/src/{futils.h → util/futils.h} +28 -15
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +15 -1
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +20 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/util/hash/common_crypto.c +112 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/util/hash/mbedtls.c +92 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +195 -0
- data/vendor/libgit2/src/util/hash/openssl.h +45 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +243 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +70 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/util/hash.c +158 -0
- data/vendor/libgit2/src/util/hash.h +61 -0
- data/vendor/libgit2/src/{khash.h → util/khash.h} +1 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1003 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +18 -4
- data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +3 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +4 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +2 -2
- data/vendor/libgit2/src/util/rand.c +234 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +4 -4
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +1 -1
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +2 -2
- data/vendor/libgit2/src/{buffer.c → util/str.c} +157 -151
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{thread.h → util/thread.h} +23 -22
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -3
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -4
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -3
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +15 -15
- data/vendor/libgit2/src/{util.h → util/util.h} +4 -29
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.h → util/vector.h} +2 -2
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +140 -9
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +3 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -2
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +12 -28
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +2 -3
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +3 -4
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.c → util/zstream.c} +5 -5
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +5 -5
- metadata +402 -356
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +0 -57
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash.c +0 -110
- data/vendor/libgit2/src/hash.h +0 -46
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
- /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
- /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
- /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
- /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
- /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
- /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
- /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
- /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
- /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
- /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
- /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
- /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
- /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
- /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
- /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
- /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
- /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
|
@@ -13,7 +13,14 @@
|
|
|
13
13
|
#include <string.h>
|
|
14
14
|
#include <limits.h>
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
const git_oid git_oid__empty_blob_sha1 =
|
|
17
|
+
GIT_OID_INIT(GIT_OID_SHA1,
|
|
18
|
+
{ 0xe6, 0x9d, 0xe2, 0x9b, 0xb2, 0xd1, 0xd6, 0x43, 0x4b, 0x8b,
|
|
19
|
+
0x29, 0xae, 0x77, 0x5a, 0xd8, 0xc2, 0xe4, 0x8c, 0x53, 0x91 });
|
|
20
|
+
const git_oid git_oid__empty_tree_sha1 =
|
|
21
|
+
GIT_OID_INIT(GIT_OID_SHA1,
|
|
22
|
+
{ 0x4b, 0x82, 0x5d, 0xc6, 0x42, 0xcb, 0x6e, 0xb9, 0xa0, 0x60,
|
|
23
|
+
0xe5, 0x4b, 0xf8, 0xd6, 0x92, 0x88, 0xfb, 0xee, 0x49, 0x04 });
|
|
17
24
|
|
|
18
25
|
static int oid_error_invalid(const char *msg)
|
|
19
26
|
{
|
|
@@ -21,21 +28,31 @@ static int oid_error_invalid(const char *msg)
|
|
|
21
28
|
return -1;
|
|
22
29
|
}
|
|
23
30
|
|
|
24
|
-
int
|
|
31
|
+
int git_oid__fromstrn(
|
|
32
|
+
git_oid *out,
|
|
33
|
+
const char *str,
|
|
34
|
+
size_t length,
|
|
35
|
+
git_oid_t type)
|
|
25
36
|
{
|
|
26
|
-
size_t p;
|
|
37
|
+
size_t size, p;
|
|
27
38
|
int v;
|
|
28
39
|
|
|
29
40
|
GIT_ASSERT_ARG(out);
|
|
30
41
|
GIT_ASSERT_ARG(str);
|
|
31
42
|
|
|
43
|
+
if (!(size = git_oid_size(type)))
|
|
44
|
+
return oid_error_invalid("unknown type");
|
|
45
|
+
|
|
32
46
|
if (!length)
|
|
33
47
|
return oid_error_invalid("too short");
|
|
34
48
|
|
|
35
|
-
if (length >
|
|
49
|
+
if (length > git_oid_hexsize(type))
|
|
36
50
|
return oid_error_invalid("too long");
|
|
37
51
|
|
|
38
|
-
|
|
52
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
53
|
+
out->type = type;
|
|
54
|
+
#endif
|
|
55
|
+
memset(out->id, 0, size);
|
|
39
56
|
|
|
40
57
|
for (p = 0; p < length; p++) {
|
|
41
58
|
v = git__fromhex(str[p]);
|
|
@@ -48,87 +65,128 @@ int git_oid_fromstrn(git_oid *out, const char *str, size_t length)
|
|
|
48
65
|
return 0;
|
|
49
66
|
}
|
|
50
67
|
|
|
51
|
-
int
|
|
68
|
+
int git_oid__fromstrp(git_oid *out, const char *str, git_oid_t type)
|
|
52
69
|
{
|
|
53
|
-
return
|
|
70
|
+
return git_oid__fromstrn(out, str, strlen(str), type);
|
|
54
71
|
}
|
|
55
72
|
|
|
56
|
-
int
|
|
73
|
+
int git_oid__fromstr(git_oid *out, const char *str, git_oid_t type)
|
|
57
74
|
{
|
|
58
|
-
return
|
|
75
|
+
return git_oid__fromstrn(out, str, git_oid_hexsize(type), type);
|
|
59
76
|
}
|
|
60
77
|
|
|
61
|
-
|
|
78
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
79
|
+
int git_oid_fromstrn(
|
|
80
|
+
git_oid *out,
|
|
81
|
+
const char *str,
|
|
82
|
+
size_t length,
|
|
83
|
+
git_oid_t type)
|
|
62
84
|
{
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
85
|
+
return git_oid__fromstrn(out, str, length, type);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
int git_oid_fromstrp(git_oid *out, const char *str, git_oid_t type)
|
|
89
|
+
{
|
|
90
|
+
return git_oid_fromstrn(out, str, strlen(str), type);
|
|
66
91
|
}
|
|
67
92
|
|
|
93
|
+
int git_oid_fromstr(git_oid *out, const char *str, git_oid_t type)
|
|
94
|
+
{
|
|
95
|
+
return git_oid_fromstrn(out, str, git_oid_hexsize(type), type);
|
|
96
|
+
}
|
|
97
|
+
#else
|
|
98
|
+
int git_oid_fromstrn(
|
|
99
|
+
git_oid *out,
|
|
100
|
+
const char *str,
|
|
101
|
+
size_t length)
|
|
102
|
+
{
|
|
103
|
+
return git_oid__fromstrn(out, str, length, GIT_OID_SHA1);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
int git_oid_fromstrp(git_oid *out, const char *str)
|
|
107
|
+
{
|
|
108
|
+
return git_oid__fromstrn(out, str, strlen(str), GIT_OID_SHA1);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
int git_oid_fromstr(git_oid *out, const char *str)
|
|
112
|
+
{
|
|
113
|
+
return git_oid__fromstrn(out, str, GIT_OID_SHA1_HEXSIZE, GIT_OID_SHA1);
|
|
114
|
+
}
|
|
115
|
+
#endif
|
|
116
|
+
|
|
68
117
|
int git_oid_nfmt(char *str, size_t n, const git_oid *oid)
|
|
69
118
|
{
|
|
70
|
-
size_t
|
|
119
|
+
size_t hex_size;
|
|
71
120
|
|
|
72
121
|
if (!oid) {
|
|
73
122
|
memset(str, 0, n);
|
|
74
123
|
return 0;
|
|
75
124
|
}
|
|
76
|
-
if (n > GIT_OID_HEXSZ) {
|
|
77
|
-
memset(&str[GIT_OID_HEXSZ], 0, n - GIT_OID_HEXSZ);
|
|
78
|
-
n = GIT_OID_HEXSZ;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
max_i = n / 2;
|
|
82
125
|
|
|
83
|
-
|
|
84
|
-
|
|
126
|
+
if (!(hex_size = git_oid_hexsize(git_oid_type(oid))))
|
|
127
|
+
return oid_error_invalid("unknown type");
|
|
85
128
|
|
|
86
|
-
if (n
|
|
87
|
-
|
|
129
|
+
if (n > hex_size) {
|
|
130
|
+
memset(&str[hex_size], 0, n - hex_size);
|
|
131
|
+
n = hex_size;
|
|
132
|
+
}
|
|
88
133
|
|
|
134
|
+
git_oid_fmt_substr(str, oid, 0, n);
|
|
89
135
|
return 0;
|
|
90
136
|
}
|
|
91
137
|
|
|
92
138
|
int git_oid_fmt(char *str, const git_oid *oid)
|
|
93
139
|
{
|
|
94
|
-
return git_oid_nfmt(str,
|
|
140
|
+
return git_oid_nfmt(str, git_oid_hexsize(git_oid_type(oid)), oid);
|
|
95
141
|
}
|
|
96
142
|
|
|
97
143
|
int git_oid_pathfmt(char *str, const git_oid *oid)
|
|
98
144
|
{
|
|
99
|
-
size_t
|
|
145
|
+
size_t hex_size;
|
|
100
146
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
for (i = 1; i < sizeof(oid->id); i++)
|
|
104
|
-
str = fmt_one(str, oid->id[i]);
|
|
147
|
+
if (!(hex_size = git_oid_hexsize(git_oid_type(oid))))
|
|
148
|
+
return oid_error_invalid("unknown type");
|
|
105
149
|
|
|
150
|
+
git_oid_fmt_substr(str, oid, 0, 2);
|
|
151
|
+
str[2] = '/';
|
|
152
|
+
git_oid_fmt_substr(&str[3], oid, 2, (hex_size - 2));
|
|
106
153
|
return 0;
|
|
107
154
|
}
|
|
108
155
|
|
|
109
156
|
char *git_oid_tostr_s(const git_oid *oid)
|
|
110
157
|
{
|
|
111
158
|
char *str = GIT_THREADSTATE->oid_fmt;
|
|
112
|
-
git_oid_nfmt(str,
|
|
159
|
+
git_oid_nfmt(str, git_oid_hexsize(git_oid_type(oid)) + 1, oid);
|
|
113
160
|
return str;
|
|
114
161
|
}
|
|
115
162
|
|
|
116
163
|
char *git_oid_allocfmt(const git_oid *oid)
|
|
117
164
|
{
|
|
118
|
-
|
|
119
|
-
|
|
165
|
+
size_t hex_size = git_oid_hexsize(git_oid_type(oid));
|
|
166
|
+
char *str = git__malloc(hex_size + 1);
|
|
167
|
+
|
|
168
|
+
if (!hex_size || !str)
|
|
169
|
+
return NULL;
|
|
170
|
+
|
|
171
|
+
if (git_oid_nfmt(str, hex_size + 1, oid) < 0) {
|
|
172
|
+
git__free(str);
|
|
120
173
|
return NULL;
|
|
121
|
-
|
|
174
|
+
}
|
|
175
|
+
|
|
122
176
|
return str;
|
|
123
177
|
}
|
|
124
178
|
|
|
125
179
|
char *git_oid_tostr(char *out, size_t n, const git_oid *oid)
|
|
126
180
|
{
|
|
181
|
+
size_t hex_size;
|
|
182
|
+
|
|
127
183
|
if (!out || n == 0)
|
|
128
184
|
return "";
|
|
129
185
|
|
|
130
|
-
|
|
131
|
-
|
|
186
|
+
hex_size = oid ? git_oid_hexsize(git_oid_type(oid)) : 0;
|
|
187
|
+
|
|
188
|
+
if (n > hex_size + 1)
|
|
189
|
+
n = hex_size + 1;
|
|
132
190
|
|
|
133
191
|
git_oid_nfmt(out, n - 1, oid); /* allow room for terminating NUL */
|
|
134
192
|
out[n - 1] = '\0';
|
|
@@ -136,52 +194,44 @@ char *git_oid_tostr(char *out, size_t n, const git_oid *oid)
|
|
|
136
194
|
return out;
|
|
137
195
|
}
|
|
138
196
|
|
|
139
|
-
int
|
|
140
|
-
git_oid *oid, const char **buffer_out,
|
|
141
|
-
const char *buffer_end, const char *header)
|
|
197
|
+
int git_oid__fromraw(git_oid *out, const unsigned char *raw, git_oid_t type)
|
|
142
198
|
{
|
|
143
|
-
|
|
144
|
-
const size_t header_len = strlen(header);
|
|
145
|
-
|
|
146
|
-
const char *buffer = *buffer_out;
|
|
147
|
-
|
|
148
|
-
if (buffer + (header_len + sha_len + 1) > buffer_end)
|
|
149
|
-
return -1;
|
|
199
|
+
size_t size;
|
|
150
200
|
|
|
151
|
-
if (
|
|
152
|
-
return
|
|
153
|
-
|
|
154
|
-
if (buffer[header_len + sha_len] != '\n')
|
|
155
|
-
return -1;
|
|
156
|
-
|
|
157
|
-
if (git_oid_fromstr(oid, buffer + header_len) < 0)
|
|
158
|
-
return -1;
|
|
159
|
-
|
|
160
|
-
*buffer_out = buffer + (header_len + sha_len + 1);
|
|
201
|
+
if (!(size = git_oid_size(type)))
|
|
202
|
+
return oid_error_invalid("unknown type");
|
|
161
203
|
|
|
204
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
205
|
+
out->type = type;
|
|
206
|
+
#endif
|
|
207
|
+
memcpy(out->id, raw, size);
|
|
162
208
|
return 0;
|
|
163
209
|
}
|
|
164
210
|
|
|
165
|
-
|
|
211
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
212
|
+
int git_oid_fromraw(git_oid *out, const unsigned char *raw, git_oid_t type)
|
|
166
213
|
{
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
git_oid_fmt(hex_oid, oid);
|
|
170
|
-
git_buf_puts(buf, header);
|
|
171
|
-
git_buf_put(buf, hex_oid, GIT_OID_HEXSZ);
|
|
172
|
-
git_buf_putc(buf, '\n');
|
|
214
|
+
return git_oid__fromraw(out, raw, type);
|
|
173
215
|
}
|
|
174
|
-
|
|
216
|
+
#else
|
|
175
217
|
int git_oid_fromraw(git_oid *out, const unsigned char *raw)
|
|
176
218
|
{
|
|
177
|
-
|
|
178
|
-
return 0;
|
|
219
|
+
return git_oid__fromraw(out, raw, GIT_OID_SHA1);
|
|
179
220
|
}
|
|
221
|
+
#endif
|
|
180
222
|
|
|
181
223
|
int git_oid_cpy(git_oid *out, const git_oid *src)
|
|
182
224
|
{
|
|
183
|
-
|
|
184
|
-
|
|
225
|
+
size_t size;
|
|
226
|
+
|
|
227
|
+
if (!(size = git_oid_size(git_oid_type(src))))
|
|
228
|
+
return oid_error_invalid("unknown type");
|
|
229
|
+
|
|
230
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
231
|
+
out->type = src->type;
|
|
232
|
+
#endif
|
|
233
|
+
|
|
234
|
+
return git_oid_raw_cpy(out->id, src->id, size);
|
|
185
235
|
}
|
|
186
236
|
|
|
187
237
|
int git_oid_cmp(const git_oid *a, const git_oid *b)
|
|
@@ -196,34 +246,22 @@ int git_oid_equal(const git_oid *a, const git_oid *b)
|
|
|
196
246
|
|
|
197
247
|
int git_oid_ncmp(const git_oid *oid_a, const git_oid *oid_b, size_t len)
|
|
198
248
|
{
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
len = GIT_OID_HEXSZ;
|
|
204
|
-
|
|
205
|
-
while (len > 1) {
|
|
206
|
-
if (*a != *b)
|
|
207
|
-
return 1;
|
|
208
|
-
a++;
|
|
209
|
-
b++;
|
|
210
|
-
len -= 2;
|
|
211
|
-
};
|
|
212
|
-
|
|
213
|
-
if (len)
|
|
214
|
-
if ((*a ^ *b) & 0xf0)
|
|
215
|
-
return 1;
|
|
249
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
250
|
+
if (oid_a->type != oid_b->type)
|
|
251
|
+
return oid_a->type - oid_b->type;
|
|
252
|
+
#endif
|
|
216
253
|
|
|
217
|
-
return
|
|
254
|
+
return git_oid_raw_ncmp(oid_a->id, oid_b->id, len);
|
|
218
255
|
}
|
|
219
256
|
|
|
220
257
|
int git_oid_strcmp(const git_oid *oid_a, const char *str)
|
|
221
258
|
{
|
|
222
259
|
const unsigned char *a;
|
|
223
260
|
unsigned char strval;
|
|
261
|
+
long size = (long)git_oid_size(git_oid_type(oid_a));
|
|
224
262
|
int hexval;
|
|
225
263
|
|
|
226
|
-
for (a = oid_a->id; *str && (a - oid_a->id) <
|
|
264
|
+
for (a = oid_a->id; *str && (a - oid_a->id) < size; ++a) {
|
|
227
265
|
if ((hexval = git__fromhex(*str++)) < 0)
|
|
228
266
|
return -1;
|
|
229
267
|
strval = (unsigned char)(hexval << 4);
|
|
@@ -247,8 +285,16 @@ int git_oid_streq(const git_oid *oid_a, const char *str)
|
|
|
247
285
|
int git_oid_is_zero(const git_oid *oid_a)
|
|
248
286
|
{
|
|
249
287
|
const unsigned char *a = oid_a->id;
|
|
250
|
-
|
|
251
|
-
|
|
288
|
+
size_t size = git_oid_size(git_oid_type(oid_a)), i;
|
|
289
|
+
|
|
290
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
291
|
+
if (!oid_a->type)
|
|
292
|
+
return 1;
|
|
293
|
+
else if (!size)
|
|
294
|
+
return 0;
|
|
295
|
+
#endif
|
|
296
|
+
|
|
297
|
+
for (i = 0; i < size; ++i, ++a)
|
|
252
298
|
if (*a != 0)
|
|
253
299
|
return 0;
|
|
254
300
|
return 1;
|
|
@@ -405,7 +451,7 @@ int git_oid_shorten_add(git_oid_shorten *os, const char *text_oid)
|
|
|
405
451
|
idx = 0;
|
|
406
452
|
is_leaf = false;
|
|
407
453
|
|
|
408
|
-
for (i = 0; i <
|
|
454
|
+
for (i = 0; i < GIT_OID_SHA1_HEXSIZE; ++i) {
|
|
409
455
|
int c = git__fromhex(text_oid[i]);
|
|
410
456
|
trie_node *node;
|
|
411
457
|
|
|
@@ -0,0 +1,273 @@
|
|
|
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_oid_h__
|
|
8
|
+
#define INCLUDE_oid_h__
|
|
9
|
+
|
|
10
|
+
#include "common.h"
|
|
11
|
+
|
|
12
|
+
#include "git2/experimental.h"
|
|
13
|
+
#include "git2/oid.h"
|
|
14
|
+
#include "hash.h"
|
|
15
|
+
|
|
16
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
17
|
+
# define GIT_OID_NONE { 0, { 0 } }
|
|
18
|
+
# define GIT_OID_INIT(type, ...) { type, __VA_ARGS__ }
|
|
19
|
+
#else
|
|
20
|
+
# define GIT_OID_NONE { { 0 } }
|
|
21
|
+
# define GIT_OID_INIT(type, ...) { __VA_ARGS__ }
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
extern const git_oid git_oid__empty_blob_sha1;
|
|
25
|
+
extern const git_oid git_oid__empty_tree_sha1;
|
|
26
|
+
|
|
27
|
+
GIT_INLINE(git_oid_t) git_oid_type(const git_oid *oid)
|
|
28
|
+
{
|
|
29
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
30
|
+
return oid->type;
|
|
31
|
+
#else
|
|
32
|
+
GIT_UNUSED(oid);
|
|
33
|
+
return GIT_OID_SHA1;
|
|
34
|
+
#endif
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
GIT_INLINE(size_t) git_oid_size(git_oid_t type)
|
|
38
|
+
{
|
|
39
|
+
switch (type) {
|
|
40
|
+
case GIT_OID_SHA1:
|
|
41
|
+
return GIT_OID_SHA1_SIZE;
|
|
42
|
+
|
|
43
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
44
|
+
case GIT_OID_SHA256:
|
|
45
|
+
return GIT_OID_SHA256_SIZE;
|
|
46
|
+
#endif
|
|
47
|
+
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
GIT_INLINE(size_t) git_oid_hexsize(git_oid_t type)
|
|
54
|
+
{
|
|
55
|
+
switch (type) {
|
|
56
|
+
case GIT_OID_SHA1:
|
|
57
|
+
return GIT_OID_SHA1_HEXSIZE;
|
|
58
|
+
|
|
59
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
60
|
+
case GIT_OID_SHA256:
|
|
61
|
+
return GIT_OID_SHA256_HEXSIZE;
|
|
62
|
+
#endif
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return 0;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
GIT_INLINE(const char *) git_oid_type_name(git_oid_t type)
|
|
70
|
+
{
|
|
71
|
+
switch (type) {
|
|
72
|
+
case GIT_OID_SHA1:
|
|
73
|
+
return "sha1";
|
|
74
|
+
|
|
75
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
76
|
+
case GIT_OID_SHA256:
|
|
77
|
+
return "sha256";
|
|
78
|
+
#endif
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return "unknown";
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
GIT_INLINE(git_oid_t) git_oid_type_fromstr(const char *name)
|
|
85
|
+
{
|
|
86
|
+
if (strcmp(name, "sha1") == 0)
|
|
87
|
+
return GIT_OID_SHA1;
|
|
88
|
+
|
|
89
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
90
|
+
if (strcmp(name, "sha256") == 0)
|
|
91
|
+
return GIT_OID_SHA256;
|
|
92
|
+
#endif
|
|
93
|
+
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
GIT_INLINE(git_oid_t) git_oid_type_fromstrn(const char *name, size_t len)
|
|
98
|
+
{
|
|
99
|
+
if (len == CONST_STRLEN("sha1") && strncmp(name, "sha1", len) == 0)
|
|
100
|
+
return GIT_OID_SHA1;
|
|
101
|
+
|
|
102
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
103
|
+
if (len == CONST_STRLEN("sha256") && strncmp(name, "sha256", len) == 0)
|
|
104
|
+
return GIT_OID_SHA256;
|
|
105
|
+
#endif
|
|
106
|
+
|
|
107
|
+
return 0;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
GIT_INLINE(git_hash_algorithm_t) git_oid_algorithm(git_oid_t type)
|
|
111
|
+
{
|
|
112
|
+
switch (type) {
|
|
113
|
+
case GIT_OID_SHA1:
|
|
114
|
+
return GIT_HASH_ALGORITHM_SHA1;
|
|
115
|
+
|
|
116
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
117
|
+
case GIT_OID_SHA256:
|
|
118
|
+
return GIT_HASH_ALGORITHM_SHA256;
|
|
119
|
+
#endif
|
|
120
|
+
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Format a git_oid into a newly allocated c-string.
|
|
128
|
+
*
|
|
129
|
+
* The c-string is owned by the caller and needs to be manually freed.
|
|
130
|
+
*
|
|
131
|
+
* @param id the oid structure to format
|
|
132
|
+
* @return the c-string; NULL if memory is exhausted. Caller must
|
|
133
|
+
* deallocate the string with git__free().
|
|
134
|
+
*/
|
|
135
|
+
char *git_oid_allocfmt(const git_oid *id);
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Format the requested nibbles of an object id.
|
|
139
|
+
*
|
|
140
|
+
* @param str the string to write into
|
|
141
|
+
* @param oid the oid structure to format
|
|
142
|
+
* @param start the starting number of nibbles
|
|
143
|
+
* @param count the number of nibbles to format
|
|
144
|
+
*/
|
|
145
|
+
GIT_INLINE(void) git_oid_fmt_substr(
|
|
146
|
+
char *str,
|
|
147
|
+
const git_oid *oid,
|
|
148
|
+
size_t start,
|
|
149
|
+
size_t count)
|
|
150
|
+
{
|
|
151
|
+
static char hex[] = "0123456789abcdef";
|
|
152
|
+
size_t i, end = start + count, min = start / 2, max = end / 2;
|
|
153
|
+
|
|
154
|
+
if (start & 1)
|
|
155
|
+
*str++ = hex[oid->id[min++] & 0x0f];
|
|
156
|
+
|
|
157
|
+
for (i = min; i < max; i++) {
|
|
158
|
+
*str++ = hex[oid->id[i] >> 4];
|
|
159
|
+
*str++ = hex[oid->id[i] & 0x0f];
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (end & 1)
|
|
163
|
+
*str++ = hex[oid->id[i] >> 4];
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
GIT_INLINE(int) git_oid_raw_ncmp(
|
|
167
|
+
const unsigned char *sha1,
|
|
168
|
+
const unsigned char *sha2,
|
|
169
|
+
size_t len)
|
|
170
|
+
{
|
|
171
|
+
if (len > GIT_OID_MAX_HEXSIZE)
|
|
172
|
+
len = GIT_OID_MAX_HEXSIZE;
|
|
173
|
+
|
|
174
|
+
while (len > 1) {
|
|
175
|
+
if (*sha1 != *sha2)
|
|
176
|
+
return 1;
|
|
177
|
+
sha1++;
|
|
178
|
+
sha2++;
|
|
179
|
+
len -= 2;
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
if (len)
|
|
183
|
+
if ((*sha1 ^ *sha2) & 0xf0)
|
|
184
|
+
return 1;
|
|
185
|
+
|
|
186
|
+
return 0;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
GIT_INLINE(int) git_oid_raw_cmp(
|
|
190
|
+
const unsigned char *sha1,
|
|
191
|
+
const unsigned char *sha2,
|
|
192
|
+
size_t size)
|
|
193
|
+
{
|
|
194
|
+
return memcmp(sha1, sha2, size);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
GIT_INLINE(int) git_oid_raw_cpy(
|
|
198
|
+
unsigned char *dst,
|
|
199
|
+
const unsigned char *src,
|
|
200
|
+
size_t size)
|
|
201
|
+
{
|
|
202
|
+
memcpy(dst, src, size);
|
|
203
|
+
return 0;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/*
|
|
207
|
+
* Compare two oid structures.
|
|
208
|
+
*
|
|
209
|
+
* @param a first oid structure.
|
|
210
|
+
* @param b second oid structure.
|
|
211
|
+
* @return <0, 0, >0 if a < b, a == b, a > b.
|
|
212
|
+
*/
|
|
213
|
+
GIT_INLINE(int) git_oid__cmp(const git_oid *a, const git_oid *b)
|
|
214
|
+
{
|
|
215
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
216
|
+
if (a->type != b->type)
|
|
217
|
+
return a->type - b->type;
|
|
218
|
+
|
|
219
|
+
return git_oid_raw_cmp(a->id, b->id, git_oid_size(a->type));
|
|
220
|
+
#else
|
|
221
|
+
return git_oid_raw_cmp(a->id, b->id, git_oid_size(GIT_OID_SHA1));
|
|
222
|
+
#endif
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
GIT_INLINE(void) git_oid__cpy_prefix(
|
|
226
|
+
git_oid *out, const git_oid *id, size_t len)
|
|
227
|
+
{
|
|
228
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
229
|
+
out->type = id->type;
|
|
230
|
+
#endif
|
|
231
|
+
|
|
232
|
+
memcpy(&out->id, id->id, (len + 1) / 2);
|
|
233
|
+
|
|
234
|
+
if (len & 1)
|
|
235
|
+
out->id[len / 2] &= 0xF0;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
GIT_INLINE(bool) git_oid__is_hexstr(const char *str, git_oid_t type)
|
|
239
|
+
{
|
|
240
|
+
size_t i;
|
|
241
|
+
|
|
242
|
+
for (i = 0; str[i] != '\0'; i++) {
|
|
243
|
+
if (git__fromhex(str[i]) < 0)
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
return (i == git_oid_hexsize(type));
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
GIT_INLINE(void) git_oid_clear(git_oid *out, git_oid_t type)
|
|
251
|
+
{
|
|
252
|
+
memset(out->id, 0, git_oid_size(type));
|
|
253
|
+
|
|
254
|
+
#ifdef GIT_EXPERIMENTAL_SHA256
|
|
255
|
+
out->type = type;
|
|
256
|
+
#endif
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* SHA256 support */
|
|
260
|
+
|
|
261
|
+
int git_oid__fromstr(git_oid *out, const char *str, git_oid_t type);
|
|
262
|
+
|
|
263
|
+
int git_oid__fromstrp(git_oid *out, const char *str, git_oid_t type);
|
|
264
|
+
|
|
265
|
+
int git_oid__fromstrn(
|
|
266
|
+
git_oid *out,
|
|
267
|
+
const char *str,
|
|
268
|
+
size_t length,
|
|
269
|
+
git_oid_t type);
|
|
270
|
+
|
|
271
|
+
int git_oid__fromraw(git_oid *out, const unsigned char *raw, git_oid_t type);
|
|
272
|
+
|
|
273
|
+
#endif
|