rugged 1.4.5 → 1.5.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/README.md +34 -2
- data/ext/rugged/extconf.rb +1 -0
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_remote.c +10 -10
- data/ext/rugged/rugged_repo.c +2 -7
- data/ext/rugged/rugged_settings.c +5 -0
- data/lib/rugged/tree.rb +4 -0
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +16 -3
- data/vendor/libgit2/COPYING +40 -0
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/FindPCRE.cmake +3 -4
- data/vendor/libgit2/cmake/FindPCRE2.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHashes.cmake +62 -14
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
- data/vendor/libgit2/include/git2/branch.h +2 -2
- data/vendor/libgit2/include/git2/common.h +11 -0
- data/vendor/libgit2/include/git2/config.h +6 -6
- data/vendor/libgit2/include/git2/deprecated.h +2 -0
- data/vendor/libgit2/include/git2/errors.h +17 -3
- data/vendor/libgit2/include/git2/merge.h +1 -1
- data/vendor/libgit2/include/git2/status.h +5 -2
- data/vendor/libgit2/include/git2/sys/remote.h +15 -0
- data/vendor/libgit2/include/git2/sys/transport.h +9 -5
- data/vendor/libgit2/include/git2/version.h +27 -6
- data/vendor/libgit2/src/CMakeLists.txt +104 -214
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +53 -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 +135 -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/features.h.in +9 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +131 -0
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +1 -1
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +14 -9
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +20 -17
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +1 -1
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +2 -2
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +1 -1
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +1 -0
- data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +31 -1
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +6 -6
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +2 -2
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +3 -3
- data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +5 -0
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +20 -23
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +2 -1
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +9 -9
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +1 -1
- data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +0 -1
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +1 -0
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +2 -2
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +2 -21
- data/vendor/libgit2/src/{oid.h → libgit2/oid.h} +35 -2
- data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +24 -18
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +3 -2
- data/vendor/libgit2/src/{path.c → libgit2/path.c} +1 -0
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +11 -1
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +6 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +1 -1
- data/vendor/libgit2/src/{remote.h → libgit2/remote.h} +1 -1
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1 -0
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +15 -5
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +12 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +91 -326
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +1 -1
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +16 -23
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +1 -1
- data/vendor/libgit2/src/util/CMakeLists.txt +74 -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/{date.c → util/date.c} +4 -3
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +1 -1
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +1 -1
- data/vendor/libgit2/src/{fs_path.c → util/fs_path.c} +17 -11
- data/vendor/libgit2/src/{fs_path.h → util/fs_path.h} +1 -1
- data/vendor/libgit2/src/{futils.c → util/futils.c} +44 -2
- data/vendor/libgit2/src/{futils.h → util/futils.h} +2 -1
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +13 -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 +1 -1
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.c +55 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.c +46 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +194 -0
- data/vendor/libgit2/src/util/hash/openssl.h +45 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +355 -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/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/{hash.c → util/hash.c} +17 -1
- data/vendor/libgit2/src/{hash.h → util/hash.h} +5 -3
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/{net.c → util/net.c} +0 -1
- data/vendor/libgit2/src/{net.h → util/net.h} +1 -1
- data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
- data/vendor/libgit2/src/{posix.h → util/posix.h} +1 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +1 -1
- data/vendor/libgit2/src/{rand.c → util/rand.c} +7 -3
- data/vendor/libgit2/src/{rand.h → util/rand.h} +1 -1
- 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.h → util/sortedcache.h} +1 -1
- data/vendor/libgit2/src/{str.h → util/str.h} +1 -1
- 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/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -1
- 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} +1 -1
- data/vendor/libgit2/src/{util.h → util/util.h} +1 -1
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.h → util/vector.h} +1 -1
- 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}/findfile.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +1 -1
- 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.h +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.h → util/zstream.h} +1 -1
- metadata +390 -361
- 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/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 -40
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +0 -0
- /data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +0 -0
- /data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +0 -0
- /data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +0 -0
- /data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +0 -0
- /data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +0 -0
- /data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +0 -0
- /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
- /data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +0 -0
- /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +0 -0
- /data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +0 -0
- /data/vendor/libgit2/src/{buf.c → libgit2/buf.c} +0 -0
- /data/vendor/libgit2/src/{buf.h → libgit2/buf.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.c → libgit2/checkout.c} +0 -0
- /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
- /data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +0 -0
- /data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +0 -0
- /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
- /data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +0 -0
- /data/vendor/libgit2/src/{commit.h → libgit2/commit.h} +0 -0
- /data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +0 -0
- /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
- /data/vendor/libgit2/src/{config.h → libgit2/config.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_file.c → libgit2/config_file.c} +0 -0
- /data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +0 -0
- /data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +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/{crlf.c → libgit2/crlf.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.c → libgit2/diff.c} +0 -0
- /data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +0 -0
- /data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +0 -0
- /data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +0 -0
- /data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.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_print.c → libgit2/diff_print.c} +0 -0
- /data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +0 -0
- /data/vendor/libgit2/src/{diff_stats.h → libgit2/diff_stats.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +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/{email.c → libgit2/email.c} +0 -0
- /data/vendor/libgit2/src/{email.h → libgit2/email.h} +0 -0
- /data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +0 -0
- /data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +0 -0
- /data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{filter.h → libgit2/filter.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/{ident.c → libgit2/ident.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/{ignore.c → libgit2/ignore.c} +0 -0
- /data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +0 -0
- /data/vendor/libgit2/src/{index.h → libgit2/index.h} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +0 -0
- /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +0 -0
- /data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +0 -0
- /data/vendor/libgit2/src/{message.c → libgit2/message.c} +0 -0
- /data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +0 -0
- /data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object.h → libgit2/object.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +0 -0
- /data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +0 -0
- /data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +0 -0
- /data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.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/{pack-objects.c → libgit2/pack-objects.c} +0 -0
- /data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +0 -0
- /data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +0 -0
- /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
- /data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +0 -0
- /data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +0 -0
- /data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +0 -0
- /data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +0 -0
- /data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{path.h → libgit2/path.h} +0 -0
- /data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +0 -0
- /data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +0 -0
- /data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +0 -0
- /data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +0 -0
- /data/vendor/libgit2/src/{push.c → libgit2/push.c} +0 -0
- /data/vendor/libgit2/src/{push.h → libgit2/push.h} +0 -0
- /data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +0 -0
- /data/vendor/libgit2/src/{reader.h → libgit2/reader.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/{reflog.c → libgit2/reflog.c} +0 -0
- /data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +0 -0
- /data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +0 -0
- /data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +0 -0
- /data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +0 -0
- /data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +0 -0
- /data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +0 -0
- /data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +0 -0
- /data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +0 -0
- /data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +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/{signature.c → libgit2/signature.c} +0 -0
- /data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +0 -0
- /data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +0 -0
- /data/vendor/libgit2/src/{status.c → libgit2/status.c} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.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.c +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/{submodule.c → libgit2/submodule.c} +0 -0
- /data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +0 -0
- /data/vendor/libgit2/src/{sysdir.c → libgit2/sysdir.c} +0 -0
- /data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +0 -0
- /data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +0 -0
- /data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +0 -0
- /data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +0 -0
- /data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +0 -0
- /data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +0 -0
- /data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +0 -0
- /data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +0 -0
- /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
- /data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.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}/git.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +0 -0
- /data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +0 -0
- /data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/git-xdiff.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +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.c +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/{cc-compat.h → util/cc-compat.h} +0 -0
- /data/vendor/libgit2/src/{date.h → util/date.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +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/{khash.h → util/khash.h} +0 -0
- /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
- /data/vendor/libgit2/src/{posix.c → util/posix.c} +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{regexp.c → util/regexp.c} +0 -0
- /data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +0 -0
- /data/vendor/libgit2/src/{str.c → util/str.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/{thread.h → util/thread.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}/findfile.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}/path_w32.c +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_buffer.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +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
- /data/vendor/libgit2/src/{zstream.c → util/zstream.c} +0 -0
@@ -24,6 +24,8 @@
|
|
24
24
|
|
25
25
|
# define GIT_ASSERT_WITH_RETVAL(expr, fail) assert(expr)
|
26
26
|
# define GIT_ASSERT_ARG_WITH_RETVAL(expr, fail) assert(expr)
|
27
|
+
|
28
|
+
# define GIT_ASSERT_WITH_CLEANUP(expr, cleanup) assert(expr)
|
27
29
|
#else
|
28
30
|
|
29
31
|
/** Internal consistency check to stop the function. */
|
@@ -53,6 +55,20 @@
|
|
53
55
|
} \
|
54
56
|
} while(0)
|
55
57
|
|
58
|
+
/**
|
59
|
+
* Go to to the given label on assertion failures; useful when you have
|
60
|
+
* taken a lock or otherwise need to release a resource.
|
61
|
+
*/
|
62
|
+
# define GIT_ASSERT_WITH_CLEANUP(expr, cleanup) \
|
63
|
+
GIT_ASSERT__WITH_CLEANUP(expr, GIT_ERROR_INTERNAL, "unrecoverable internal error", cleanup)
|
64
|
+
|
65
|
+
# define GIT_ASSERT__WITH_CLEANUP(expr, code, msg, cleanup) do { \
|
66
|
+
if (!(expr)) { \
|
67
|
+
git_error_set(code, "%s: '%s'", msg, #expr); \
|
68
|
+
cleanup; \
|
69
|
+
} \
|
70
|
+
} while(0)
|
71
|
+
|
56
72
|
#endif /* GIT_ASSERT_HARD */
|
57
73
|
|
58
74
|
#endif
|
@@ -1,10 +1,11 @@
|
|
1
1
|
/*
|
2
|
-
*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
3
|
*
|
4
|
-
*
|
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.
|
5
6
|
*/
|
6
7
|
|
7
|
-
#include "
|
8
|
+
#include "git2_util.h"
|
8
9
|
|
9
10
|
#ifndef GIT_WIN32
|
10
11
|
#include <sys/time.h>
|
@@ -65,7 +65,7 @@ static int lock_file(git_filebuf *file, int flags, mode_t mode)
|
|
65
65
|
|
66
66
|
if ((flags & GIT_FILEBUF_APPEND) && git_fs_path_exists(file->path_original) == true) {
|
67
67
|
git_file source;
|
68
|
-
char buffer[
|
68
|
+
char buffer[GIT_BUFSIZE_FILEIO];
|
69
69
|
ssize_t read_bytes;
|
70
70
|
int error = 0;
|
71
71
|
|
@@ -7,8 +7,9 @@
|
|
7
7
|
|
8
8
|
#include "fs_path.h"
|
9
9
|
|
10
|
+
#include "git2_util.h"
|
11
|
+
#include "futils.h"
|
10
12
|
#include "posix.h"
|
11
|
-
#include "repository.h"
|
12
13
|
#ifdef GIT_WIN32
|
13
14
|
#include "win32/posix.h"
|
14
15
|
#include "win32/w32_buffer.h"
|
@@ -21,6 +22,13 @@
|
|
21
22
|
#include <stdio.h>
|
22
23
|
#include <ctype.h>
|
23
24
|
|
25
|
+
#define ensure_error_set(code) do { \
|
26
|
+
const git_error *e = git_error_last(); \
|
27
|
+
if (!e || !e->message) \
|
28
|
+
git_error_set(e ? e->klass : GIT_ERROR_CALLBACK, \
|
29
|
+
"filesystem callback returned %d", code); \
|
30
|
+
} while(0)
|
31
|
+
|
24
32
|
static int dos_drive_prefix_length(const char *path)
|
25
33
|
{
|
26
34
|
int i;
|
@@ -101,7 +109,7 @@ int git_fs_path_basename_r(git_str *buffer, const char *path)
|
|
101
109
|
/* Empty or NULL string gets treated as "." */
|
102
110
|
if (path == NULL || *path == '\0') {
|
103
111
|
startp = ".";
|
104
|
-
len
|
112
|
+
len = 1;
|
105
113
|
goto Exit;
|
106
114
|
}
|
107
115
|
|
@@ -113,7 +121,7 @@ int git_fs_path_basename_r(git_str *buffer, const char *path)
|
|
113
121
|
/* All slashes becomes "/" */
|
114
122
|
if (endp == path && *endp == '/') {
|
115
123
|
startp = "/";
|
116
|
-
len
|
124
|
+
len = 1;
|
117
125
|
goto Exit;
|
118
126
|
}
|
119
127
|
|
@@ -185,8 +193,7 @@ int git_fs_path_dirname_r(git_str *buffer, const char *path)
|
|
185
193
|
|
186
194
|
if (endp - path + 1 > INT_MAX) {
|
187
195
|
git_error_set(GIT_ERROR_INVALID, "path too long");
|
188
|
-
|
189
|
-
goto Exit;
|
196
|
+
return -1;
|
190
197
|
}
|
191
198
|
|
192
199
|
if ((len = win32_prefix_length(path, (int)(endp - path + 1))) > 0) {
|
@@ -211,8 +218,7 @@ int git_fs_path_dirname_r(git_str *buffer, const char *path)
|
|
211
218
|
|
212
219
|
if (endp - path + 1 > INT_MAX) {
|
213
220
|
git_error_set(GIT_ERROR_INVALID, "path too long");
|
214
|
-
|
215
|
-
goto Exit;
|
221
|
+
return -1;
|
216
222
|
}
|
217
223
|
|
218
224
|
if ((len = win32_prefix_length(path, (int)(endp - path + 1))) > 0) {
|
@@ -530,7 +536,7 @@ int git_fs_path_walk_up(
|
|
530
536
|
if (!scan) {
|
531
537
|
error = cb(data, "");
|
532
538
|
if (error)
|
533
|
-
|
539
|
+
ensure_error_set(error);
|
534
540
|
return error;
|
535
541
|
}
|
536
542
|
|
@@ -543,7 +549,7 @@ int git_fs_path_walk_up(
|
|
543
549
|
iter.ptr[scan] = oldc;
|
544
550
|
|
545
551
|
if (error) {
|
546
|
-
|
552
|
+
ensure_error_set(error);
|
547
553
|
break;
|
548
554
|
}
|
549
555
|
|
@@ -563,7 +569,7 @@ int git_fs_path_walk_up(
|
|
563
569
|
if (!error && stop == 0 && iter.ptr[0] != '/') {
|
564
570
|
error = cb(data, "");
|
565
571
|
if (error)
|
566
|
-
|
572
|
+
ensure_error_set(error);
|
567
573
|
}
|
568
574
|
|
569
575
|
return error;
|
@@ -1167,7 +1173,7 @@ int git_fs_path_direach(
|
|
1167
1173
|
/* Only set our own error if the callback did not set one already */
|
1168
1174
|
if (error != 0) {
|
1169
1175
|
if (!git_error_last())
|
1170
|
-
|
1176
|
+
ensure_error_set(error);
|
1171
1177
|
|
1172
1178
|
break;
|
1173
1179
|
}
|
@@ -167,18 +167,60 @@ int git_futils_readbuffer_fd(git_str *buf, git_file fd, size_t len)
|
|
167
167
|
/* p_read loops internally to read len bytes */
|
168
168
|
read_size = p_read(fd, buf->ptr, len);
|
169
169
|
|
170
|
-
if (read_size
|
170
|
+
if (read_size < 0) {
|
171
171
|
git_error_set(GIT_ERROR_OS, "failed to read descriptor");
|
172
172
|
git_str_dispose(buf);
|
173
173
|
return -1;
|
174
174
|
}
|
175
175
|
|
176
|
+
if ((size_t)read_size != len) {
|
177
|
+
git_error_set(GIT_ERROR_FILESYSTEM, "could not read (expected %" PRIuZ " bytes, read %" PRIuZ ")", len, (size_t)read_size);
|
178
|
+
git_str_dispose(buf);
|
179
|
+
return -1;
|
180
|
+
}
|
181
|
+
|
176
182
|
buf->ptr[read_size] = '\0';
|
177
183
|
buf->size = read_size;
|
178
184
|
|
179
185
|
return 0;
|
180
186
|
}
|
181
187
|
|
188
|
+
int git_futils_readbuffer_fd_full(git_str *buf, git_file fd)
|
189
|
+
{
|
190
|
+
static size_t blocksize = 10240;
|
191
|
+
size_t alloc_len = 0, total_size = 0;
|
192
|
+
ssize_t read_size = 0;
|
193
|
+
|
194
|
+
git_str_clear(buf);
|
195
|
+
|
196
|
+
while (true) {
|
197
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, alloc_len, blocksize);
|
198
|
+
|
199
|
+
if (git_str_grow(buf, alloc_len) < 0)
|
200
|
+
return -1;
|
201
|
+
|
202
|
+
/* p_read loops internally to read blocksize bytes */
|
203
|
+
read_size = p_read(fd, buf->ptr, blocksize);
|
204
|
+
|
205
|
+
if (read_size < 0) {
|
206
|
+
git_error_set(GIT_ERROR_OS, "failed to read descriptor");
|
207
|
+
git_str_dispose(buf);
|
208
|
+
return -1;
|
209
|
+
}
|
210
|
+
|
211
|
+
total_size += read_size;
|
212
|
+
|
213
|
+
if ((size_t)read_size < blocksize) {
|
214
|
+
break;
|
215
|
+
}
|
216
|
+
}
|
217
|
+
|
218
|
+
buf->ptr[total_size] = '\0';
|
219
|
+
buf->size = total_size;
|
220
|
+
|
221
|
+
return 0;
|
222
|
+
}
|
223
|
+
|
182
224
|
int git_futils_readbuffer_updated(
|
183
225
|
git_str *out,
|
184
226
|
const char *path,
|
@@ -856,7 +898,7 @@ int git_futils_fake_symlink(const char *target, const char *path)
|
|
856
898
|
static int cp_by_fd(int ifd, int ofd, bool close_fd_when_done)
|
857
899
|
{
|
858
900
|
int error = 0;
|
859
|
-
char buffer[
|
901
|
+
char buffer[GIT_BUFSIZE_FILEIO];
|
860
902
|
ssize_t len = 0;
|
861
903
|
|
862
904
|
while (!error && (len = p_read(ifd, buffer, sizeof(buffer))) > 0)
|
@@ -7,7 +7,7 @@
|
|
7
7
|
#ifndef INCLUDE_futils_h__
|
8
8
|
#define INCLUDE_futils_h__
|
9
9
|
|
10
|
-
#include "
|
10
|
+
#include "git2_util.h"
|
11
11
|
|
12
12
|
#include "map.h"
|
13
13
|
#include "posix.h"
|
@@ -27,6 +27,7 @@ extern int git_futils_readbuffer_updated(
|
|
27
27
|
const char *path,
|
28
28
|
unsigned char checksum[GIT_HASH_SHA1_SIZE],
|
29
29
|
int *updated);
|
30
|
+
extern int git_futils_readbuffer_fd_full(git_str *obj, git_file fd);
|
30
31
|
extern int git_futils_readbuffer_fd(git_str *obj, git_file fd, size_t len);
|
31
32
|
|
32
33
|
/* Additional constants for `git_futils_writebuffer`'s `open_flags`. We
|
@@ -4,8 +4,8 @@
|
|
4
4
|
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
6
6
|
*/
|
7
|
-
#ifndef
|
8
|
-
#define
|
7
|
+
#ifndef INCLUDE_git2_util_h__
|
8
|
+
#define INCLUDE_git2_util_h__
|
9
9
|
|
10
10
|
#ifndef LIBGIT2_NO_FEATURES_H
|
11
11
|
# include "git2/sys/features.h"
|
@@ -14,13 +14,13 @@
|
|
14
14
|
#include "git2/common.h"
|
15
15
|
#include "cc-compat.h"
|
16
16
|
|
17
|
+
typedef struct git_str git_str;
|
18
|
+
|
17
19
|
/** Declare a function as always inlined. */
|
18
20
|
#if defined(_MSC_VER)
|
19
21
|
# define GIT_INLINE(type) static __inline type
|
20
22
|
#elif defined(__GNUC__)
|
21
23
|
# define GIT_INLINE(type) static __inline__ type
|
22
|
-
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
|
23
|
-
# define GIT_INLINE(type) static inline type
|
24
24
|
#else
|
25
25
|
# define GIT_INLINE(type) static type
|
26
26
|
#endif
|
@@ -67,12 +67,12 @@
|
|
67
67
|
# include <ws2tcpip.h>
|
68
68
|
# include "win32/msvc-compat.h"
|
69
69
|
# include "win32/mingw-compat.h"
|
70
|
-
# include "win32/w32_common.h"
|
71
70
|
# include "win32/win32-compat.h"
|
72
|
-
# include "win32/
|
71
|
+
# include "win32/w32_common.h"
|
73
72
|
# include "win32/version.h"
|
73
|
+
# include "win32/error.h"
|
74
74
|
# ifdef GIT_THREADS
|
75
|
-
#
|
75
|
+
# include "win32/thread.h"
|
76
76
|
# endif
|
77
77
|
|
78
78
|
#else
|
@@ -99,24 +99,17 @@
|
|
99
99
|
|
100
100
|
#include "git2/types.h"
|
101
101
|
#include "git2/errors.h"
|
102
|
-
#include "errors.h"
|
103
102
|
#include "thread.h"
|
104
103
|
#include "integer.h"
|
105
104
|
#include "assert_safe.h"
|
106
|
-
#include "utf8.h"
|
107
|
-
|
108
|
-
/*
|
109
|
-
* Include the declarations for deprecated functions; this ensures
|
110
|
-
* that they're decorated with the proper extern/visibility attributes.
|
111
|
-
*/
|
112
|
-
#include "git2/deprecated.h"
|
113
105
|
|
114
106
|
#include "posix.h"
|
115
107
|
|
116
|
-
#define
|
117
|
-
#define
|
118
|
-
#define
|
119
|
-
#define
|
108
|
+
#define GIT_BUFSIZE_DEFAULT 65536
|
109
|
+
#define GIT_BUFSIZE_FILEIO GIT_BUFSIZE_DEFAULT
|
110
|
+
#define GIT_BUFSIZE_FILTERIO GIT_BUFSIZE_DEFAULT
|
111
|
+
#define GIT_BUFSIZE_NETIO GIT_BUFSIZE_DEFAULT
|
112
|
+
|
120
113
|
|
121
114
|
/**
|
122
115
|
* Check a pointer allocation result, returning -1 if it failed.
|
@@ -126,7 +119,7 @@
|
|
126
119
|
} while(0)
|
127
120
|
|
128
121
|
/**
|
129
|
-
* Check a
|
122
|
+
* Check a buffer allocation result, returning -1 if it failed.
|
130
123
|
*/
|
131
124
|
#define GIT_ERROR_CHECK_ALLOC_STR(buf) do { \
|
132
125
|
if ((void *)(buf) == NULL || git_str_oom(buf)) { return -1; } \
|
@@ -138,40 +131,6 @@
|
|
138
131
|
#define GIT_ERROR_CHECK_ERROR(code) \
|
139
132
|
do { int _err = (code); if (_err) return _err; } while (0)
|
140
133
|
|
141
|
-
/**
|
142
|
-
* Check a versioned structure for validity
|
143
|
-
*/
|
144
|
-
GIT_INLINE(int) git_error__check_version(const void *structure, unsigned int expected_max, const char *name)
|
145
|
-
{
|
146
|
-
unsigned int actual;
|
147
|
-
|
148
|
-
if (!structure)
|
149
|
-
return 0;
|
150
|
-
|
151
|
-
actual = *(const unsigned int*)structure;
|
152
|
-
if (actual > 0 && actual <= expected_max)
|
153
|
-
return 0;
|
154
|
-
|
155
|
-
git_error_set(GIT_ERROR_INVALID, "invalid version %d on %s", actual, name);
|
156
|
-
return -1;
|
157
|
-
}
|
158
|
-
#define GIT_ERROR_CHECK_VERSION(S,V,N) if (git_error__check_version(S,V,N) < 0) return -1
|
159
|
-
|
160
|
-
/**
|
161
|
-
* Initialize a structure with a version.
|
162
|
-
*/
|
163
|
-
GIT_INLINE(void) git__init_structure(void *structure, size_t len, unsigned int version)
|
164
|
-
{
|
165
|
-
memset(structure, 0, len);
|
166
|
-
*((int*)structure) = version;
|
167
|
-
}
|
168
|
-
#define GIT_INIT_STRUCTURE(S,V) git__init_structure(S, sizeof(*S), V)
|
169
|
-
|
170
|
-
#define GIT_INIT_STRUCTURE_FROM_TEMPLATE(PTR,VERSION,TYPE,TPL) do { \
|
171
|
-
TYPE _tmpl = TPL; \
|
172
|
-
GIT_ERROR_CHECK_VERSION(&(VERSION), _tmpl.version, #TYPE); \
|
173
|
-
memcpy((PTR), &_tmpl, sizeof(_tmpl)); } while (0)
|
174
|
-
|
175
134
|
|
176
135
|
/** Check for additive overflow, setting an error if would occur. */
|
177
136
|
#define GIT_ADD_SIZET_OVERFLOW(out, one, two) \
|
@@ -204,11 +163,6 @@ GIT_INLINE(void) git__init_structure(void *structure, size_t len, unsigned int v
|
|
204
163
|
#define GIT_ERROR_CHECK_ALLOC_MULTIPLY(out, nelem, elsize) \
|
205
164
|
if (GIT_MULTIPLY_SIZET_OVERFLOW(out, nelem, elsize)) { return -1; }
|
206
165
|
|
207
|
-
/* NOTE: other git_error functions are in the public errors.h header file */
|
208
|
-
|
209
|
-
/* Forward declare git_str */
|
210
|
-
typedef struct git_str git_str;
|
211
|
-
|
212
166
|
#include "util.h"
|
213
167
|
|
214
168
|
#endif
|
@@ -0,0 +1,53 @@
|
|
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 "builtin.h"
|
9
|
+
|
10
|
+
int git_hash_sha256_global_init(void)
|
11
|
+
{
|
12
|
+
return 0;
|
13
|
+
}
|
14
|
+
|
15
|
+
int git_hash_sha256_ctx_init(git_hash_sha256_ctx *ctx)
|
16
|
+
{
|
17
|
+
return git_hash_sha256_init(ctx);
|
18
|
+
}
|
19
|
+
|
20
|
+
void git_hash_sha256_ctx_cleanup(git_hash_sha256_ctx *ctx)
|
21
|
+
{
|
22
|
+
GIT_UNUSED(ctx);
|
23
|
+
}
|
24
|
+
|
25
|
+
int git_hash_sha256_init(git_hash_sha256_ctx *ctx)
|
26
|
+
{
|
27
|
+
GIT_ASSERT_ARG(ctx);
|
28
|
+
if (SHA256Reset(&ctx->c)) {
|
29
|
+
git_error_set(GIT_ERROR_SHA, "SHA256 error");
|
30
|
+
return -1;
|
31
|
+
}
|
32
|
+
return 0;
|
33
|
+
}
|
34
|
+
|
35
|
+
int git_hash_sha256_update(git_hash_sha256_ctx *ctx, const void *data, size_t len)
|
36
|
+
{
|
37
|
+
GIT_ASSERT_ARG(ctx);
|
38
|
+
if (SHA256Input(&ctx->c, data, len)) {
|
39
|
+
git_error_set(GIT_ERROR_SHA, "SHA256 error");
|
40
|
+
return -1;
|
41
|
+
}
|
42
|
+
return 0;
|
43
|
+
}
|
44
|
+
|
45
|
+
int git_hash_sha256_final(unsigned char *out, git_hash_sha256_ctx *ctx)
|
46
|
+
{
|
47
|
+
GIT_ASSERT_ARG(ctx);
|
48
|
+
if (SHA256Result(&ctx->c, out)) {
|
49
|
+
git_error_set(GIT_ERROR_SHA, "SHA256 error");
|
50
|
+
return -1;
|
51
|
+
}
|
52
|
+
return 0;
|
53
|
+
}
|
@@ -5,15 +5,15 @@
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
6
6
|
*/
|
7
7
|
|
8
|
-
#ifndef
|
9
|
-
#define
|
8
|
+
#ifndef INCLUDE_hash_builtin_h__
|
9
|
+
#define INCLUDE_hash_builtin_h__
|
10
10
|
|
11
|
-
#include "hash/
|
11
|
+
#include "hash/sha.h"
|
12
12
|
|
13
|
-
#include
|
13
|
+
#include "rfc6234/sha.h"
|
14
14
|
|
15
|
-
struct
|
16
|
-
|
15
|
+
struct git_hash_sha256_ctx {
|
16
|
+
SHA256Context c;
|
17
17
|
};
|
18
18
|
|
19
19
|
#endif
|
@@ -40,7 +40,7 @@ int git_hash_sha1_final(unsigned char *out, git_hash_sha1_ctx *ctx)
|
|
40
40
|
{
|
41
41
|
GIT_ASSERT_ARG(ctx);
|
42
42
|
if (SHA1DCFinal(out, &ctx->c)) {
|
43
|
-
git_error_set(
|
43
|
+
git_error_set(GIT_ERROR_SHA, "SHA1 collision attack detected");
|
44
44
|
return -1;
|
45
45
|
}
|
46
46
|
|
@@ -5,10 +5,10 @@
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
6
6
|
*/
|
7
7
|
|
8
|
-
#ifndef
|
9
|
-
#define
|
8
|
+
#ifndef INCLUDE_hash_collisiondetect_h__
|
9
|
+
#define INCLUDE_hash_collisiondetect_h__
|
10
10
|
|
11
|
-
#include "hash/
|
11
|
+
#include "hash/sha.h"
|
12
12
|
|
13
13
|
#include "sha1dc/sha1.h"
|
14
14
|
|
@@ -9,6 +9,8 @@
|
|
9
9
|
|
10
10
|
#define CC_LONG_MAX ((CC_LONG)-1)
|
11
11
|
|
12
|
+
#ifdef GIT_SHA1_COMMON_CRYPTO
|
13
|
+
|
12
14
|
int git_hash_sha1_global_init(void)
|
13
15
|
{
|
14
16
|
return 0;
|
@@ -55,3 +57,56 @@ int git_hash_sha1_final(unsigned char *out, git_hash_sha1_ctx *ctx)
|
|
55
57
|
CC_SHA1_Final(out, &ctx->c);
|
56
58
|
return 0;
|
57
59
|
}
|
60
|
+
|
61
|
+
#endif
|
62
|
+
|
63
|
+
#ifdef GIT_SHA256_COMMON_CRYPTO
|
64
|
+
|
65
|
+
int git_hash_sha256_global_init(void)
|
66
|
+
{
|
67
|
+
return 0;
|
68
|
+
}
|
69
|
+
|
70
|
+
int git_hash_sha256_ctx_init(git_hash_sha256_ctx *ctx)
|
71
|
+
{
|
72
|
+
return git_hash_sha256_init(ctx);
|
73
|
+
}
|
74
|
+
|
75
|
+
void git_hash_sha256_ctx_cleanup(git_hash_sha256_ctx *ctx)
|
76
|
+
{
|
77
|
+
GIT_UNUSED(ctx);
|
78
|
+
}
|
79
|
+
|
80
|
+
int git_hash_sha256_init(git_hash_sha256_ctx *ctx)
|
81
|
+
{
|
82
|
+
GIT_ASSERT_ARG(ctx);
|
83
|
+
CC_SHA256_Init(&ctx->c);
|
84
|
+
return 0;
|
85
|
+
}
|
86
|
+
|
87
|
+
int git_hash_sha256_update(git_hash_sha256_ctx *ctx, const void *_data, size_t len)
|
88
|
+
{
|
89
|
+
const unsigned char *data = _data;
|
90
|
+
|
91
|
+
GIT_ASSERT_ARG(ctx);
|
92
|
+
|
93
|
+
while (len > 0) {
|
94
|
+
CC_LONG chunk = (len > CC_LONG_MAX) ? CC_LONG_MAX : (CC_LONG)len;
|
95
|
+
|
96
|
+
CC_SHA256_Update(&ctx->c, data, chunk);
|
97
|
+
|
98
|
+
data += chunk;
|
99
|
+
len -= chunk;
|
100
|
+
}
|
101
|
+
|
102
|
+
return 0;
|
103
|
+
}
|
104
|
+
|
105
|
+
int git_hash_sha256_final(unsigned char *out, git_hash_sha256_ctx *ctx)
|
106
|
+
{
|
107
|
+
GIT_ASSERT_ARG(ctx);
|
108
|
+
CC_SHA256_Final(out, &ctx->c);
|
109
|
+
return 0;
|
110
|
+
}
|
111
|
+
|
112
|
+
#endif
|
@@ -5,15 +5,23 @@
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
6
6
|
*/
|
7
7
|
|
8
|
-
#ifndef
|
9
|
-
#define
|
8
|
+
#ifndef INCLUDE_hash_common_crypto_h__
|
9
|
+
#define INCLUDE_hash_common_crypto_h__
|
10
10
|
|
11
|
-
#include "hash/
|
11
|
+
#include "hash/sha.h"
|
12
12
|
|
13
13
|
#include <CommonCrypto/CommonDigest.h>
|
14
14
|
|
15
|
+
#ifdef GIT_SHA1_COMMON_CRYPTO
|
15
16
|
struct git_hash_sha1_ctx {
|
16
17
|
CC_SHA1_CTX c;
|
17
18
|
};
|
19
|
+
#endif
|
20
|
+
|
21
|
+
#ifdef GIT_SHA256_COMMON_CRYPTO
|
22
|
+
struct git_hash_sha256_ctx {
|
23
|
+
CC_SHA256_CTX c;
|
24
|
+
};
|
25
|
+
#endif
|
18
26
|
|
19
27
|
#endif
|
@@ -7,6 +7,8 @@
|
|
7
7
|
|
8
8
|
#include "mbedtls.h"
|
9
9
|
|
10
|
+
#ifdef GIT_SHA1_MBEDTLS
|
11
|
+
|
10
12
|
int git_hash_sha1_global_init(void)
|
11
13
|
{
|
12
14
|
return 0;
|
@@ -44,3 +46,47 @@ int git_hash_sha1_final(unsigned char *out, git_hash_sha1_ctx *ctx)
|
|
44
46
|
mbedtls_sha1_finish(&ctx->c, out);
|
45
47
|
return 0;
|
46
48
|
}
|
49
|
+
|
50
|
+
#endif
|
51
|
+
|
52
|
+
#ifdef GIT_SHA256_MBEDTLS
|
53
|
+
|
54
|
+
int git_hash_sha256_global_init(void)
|
55
|
+
{
|
56
|
+
return 0;
|
57
|
+
}
|
58
|
+
|
59
|
+
int git_hash_sha256_ctx_init(git_hash_sha256_ctx *ctx)
|
60
|
+
{
|
61
|
+
return git_hash_sha256_init(ctx);
|
62
|
+
}
|
63
|
+
|
64
|
+
void git_hash_sha256_ctx_cleanup(git_hash_sha256_ctx *ctx)
|
65
|
+
{
|
66
|
+
if (ctx)
|
67
|
+
mbedtls_sha256_free(&ctx->c);
|
68
|
+
}
|
69
|
+
|
70
|
+
int git_hash_sha256_init(git_hash_sha256_ctx *ctx)
|
71
|
+
{
|
72
|
+
GIT_ASSERT_ARG(ctx);
|
73
|
+
mbedtls_sha256_init(&ctx->c);
|
74
|
+
mbedtls_sha256_starts(&ctx->c, 0);
|
75
|
+
return 0;
|
76
|
+
}
|
77
|
+
|
78
|
+
int git_hash_sha256_update(git_hash_sha256_ctx *ctx, const void *data, size_t len)
|
79
|
+
{
|
80
|
+
GIT_ASSERT_ARG(ctx);
|
81
|
+
mbedtls_sha256_update(&ctx->c, data, len);
|
82
|
+
return 0;
|
83
|
+
}
|
84
|
+
|
85
|
+
int git_hash_sha256_final(unsigned char *out, git_hash_sha256_ctx *ctx)
|
86
|
+
{
|
87
|
+
GIT_ASSERT_ARG(ctx);
|
88
|
+
mbedtls_sha256_finish(&ctx->c, out);
|
89
|
+
return 0;
|
90
|
+
}
|
91
|
+
|
92
|
+
#endif
|
@@ -5,15 +5,25 @@
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
6
6
|
*/
|
7
7
|
|
8
|
-
#ifndef
|
9
|
-
#define
|
8
|
+
#ifndef INCLUDE_hash_mbedtls_h__
|
9
|
+
#define INCLUDE_hash_mbedtls_h__
|
10
10
|
|
11
|
-
#include "hash/
|
11
|
+
#include "hash/sha.h"
|
12
12
|
|
13
|
-
#
|
13
|
+
#ifdef GIT_SHA1_MBEDTLS
|
14
|
+
# include <mbedtls/sha1.h>
|
14
15
|
|
15
16
|
struct git_hash_sha1_ctx {
|
16
17
|
mbedtls_sha1_context c;
|
17
18
|
};
|
19
|
+
#endif
|
20
|
+
|
21
|
+
#ifdef GIT_SHA256_MBEDTLS
|
22
|
+
# include <mbedtls/sha256.h>
|
23
|
+
|
24
|
+
struct git_hash_sha256_ctx {
|
25
|
+
mbedtls_sha256_context c;
|
26
|
+
};
|
27
|
+
#endif
|
18
28
|
|
19
29
|
#endif /* INCLUDE_hash_sha1_mbedtls_h__ */
|