rugged 1.3.1 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/ext/rugged/extconf.rb +6 -3
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_allocator.c +0 -54
- 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/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +141 -289
- data/vendor/libgit2/COPYING +301 -20
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -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 +17 -17
- data/vendor/libgit2/cmake/FindIntlIconv.cmake +51 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- 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 +34 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +129 -101
- data/vendor/libgit2/cmake/SelectHashes.cmake +113 -54
- data/vendor/libgit2/cmake/SelectRegex.cmake +56 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +46 -0
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +38 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +33 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +7 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +25 -25
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +89 -88
- data/vendor/libgit2/deps/pcre/LICENCE +5 -5
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
- data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/deps/xdiff/git-xdiff.h +56 -0
- data/vendor/libgit2/{src → deps}/xdiff/xdiff.h +15 -15
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.c +152 -125
- data/vendor/libgit2/{src → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src → deps}/xdiff/xemit.c +26 -10
- data/vendor/libgit2/{src → deps}/xdiff/xhistogram.c +92 -94
- data/vendor/libgit2/{src → deps}/xdiff/xinclude.h +1 -12
- data/vendor/libgit2/{src → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src → deps}/xdiff/xmerge.c +126 -137
- data/vendor/libgit2/{src → deps}/xdiff/xpatience.c +26 -46
- data/vendor/libgit2/{src → deps}/xdiff/xprepare.c +24 -46
- data/vendor/libgit2/{src → deps}/xdiff/xutils.c +36 -8
- data/vendor/libgit2/{src → deps}/xdiff/xutils.h +2 -1
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +7 -22
- data/vendor/libgit2/deps/zlib/crc32.c +931 -317
- data/vendor/libgit2/deps/zlib/crc32.h +9441 -436
- data/vendor/libgit2/deps/zlib/deflate.c +428 -453
- data/vendor/libgit2/deps/zlib/deflate.h +51 -23
- data/vendor/libgit2/deps/zlib/gzguts.h +15 -19
- data/vendor/libgit2/deps/zlib/infback.c +19 -31
- data/vendor/libgit2/deps/zlib/inffast.c +15 -18
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +75 -110
- data/vendor/libgit2/deps/zlib/inflate.h +3 -2
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +294 -380
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +310 -284
- data/vendor/libgit2/deps/zlib/zutil.c +20 -46
- data/vendor/libgit2/deps/zlib/zutil.h +24 -41
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +43 -8
- data/vendor/libgit2/include/git2/attr.h +28 -6
- data/vendor/libgit2/include/git2/blame.h +137 -29
- data/vendor/libgit2/include/git2/blob.h +85 -29
- data/vendor/libgit2/include/git2/branch.h +25 -16
- data/vendor/libgit2/include/git2/buffer.h +24 -82
- data/vendor/libgit2/include/git2/cert.h +4 -3
- data/vendor/libgit2/include/git2/checkout.h +88 -34
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +134 -3
- data/vendor/libgit2/include/git2/common.h +172 -59
- data/vendor/libgit2/include/git2/config.h +118 -32
- data/vendor/libgit2/include/git2/credential.h +32 -3
- data/vendor/libgit2/include/git2/credential_helpers.h +2 -0
- data/vendor/libgit2/include/git2/deprecated.h +141 -3
- data/vendor/libgit2/include/git2/describe.h +20 -3
- data/vendor/libgit2/include/git2/diff.h +95 -19
- data/vendor/libgit2/include/git2/email.h +10 -30
- data/vendor/libgit2/include/git2/errors.h +51 -61
- data/vendor/libgit2/include/git2/experimental.h +20 -0
- data/vendor/libgit2/include/git2/filter.h +21 -9
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +4 -2
- data/vendor/libgit2/include/git2/ignore.h +11 -1
- data/vendor/libgit2/include/git2/index.h +111 -11
- data/vendor/libgit2/include/git2/indexer.h +67 -2
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +70 -5
- data/vendor/libgit2/include/git2/message.h +4 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +57 -7
- data/vendor/libgit2/include/git2/odb.h +156 -33
- data/vendor/libgit2/include/git2/odb_backend.h +132 -16
- data/vendor/libgit2/include/git2/oid.h +116 -17
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +37 -9
- data/vendor/libgit2/include/git2/patch.h +10 -3
- data/vendor/libgit2/include/git2/pathspec.h +10 -1
- data/vendor/libgit2/include/git2/proxy.h +11 -1
- data/vendor/libgit2/include/git2/rebase.h +18 -7
- data/vendor/libgit2/include/git2/refdb.h +5 -2
- data/vendor/libgit2/include/git2/reflog.h +4 -3
- data/vendor/libgit2/include/git2/refs.h +11 -8
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +295 -54
- data/vendor/libgit2/include/git2/repository.h +95 -25
- data/vendor/libgit2/include/git2/reset.h +18 -5
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +4 -4
- data/vendor/libgit2/include/git2/revwalk.h +7 -3
- data/vendor/libgit2/include/git2/signature.h +47 -2
- data/vendor/libgit2/include/git2/stash.h +78 -10
- data/vendor/libgit2/include/git2/status.h +24 -11
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -16
- data/vendor/libgit2/include/git2/submodule.h +27 -11
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +110 -59
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +47 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +53 -0
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +26 -3
- data/vendor/libgit2/include/git2/sys/transport.h +87 -41
- data/vendor/libgit2/include/git2/tag.h +4 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +20 -8
- data/vendor/libgit2/include/git2/types.h +26 -10
- data/vendor/libgit2/include/git2/version.h +63 -6
- data/vendor/libgit2/include/git2/worktree.h +30 -8
- data/vendor/libgit2/include/git2.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +203 -420
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +56 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/{branch.h → cli/cmd.c} +10 -8
- data/vendor/libgit2/src/cli/cmd.h +37 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +202 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +190 -0
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +152 -0
- data/vendor/libgit2/src/cli/cmd_help.c +85 -0
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +134 -0
- data/vendor/libgit2/src/cli/opt.c +695 -0
- data/vendor/libgit2/src/cli/opt.h +367 -0
- data/vendor/libgit2/src/cli/opt_usage.c +263 -0
- data/vendor/libgit2/src/cli/opt_usage.h +40 -0
- data/vendor/libgit2/src/cli/progress.c +395 -0
- data/vendor/libgit2/src/cli/progress.h +129 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +37 -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 +140 -0
- data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +2 -2
- data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +2 -2
- data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +32 -34
- data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +2 -2
- data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +48 -31
- data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +25 -20
- data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +6 -4
- data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +87 -46
- data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +5 -9
- data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +152 -57
- data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +1 -0
- data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +1 -2
- 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/libgit2/branch.h +31 -0
- data/vendor/libgit2/src/libgit2/buf.c +126 -0
- data/vendor/libgit2/src/libgit2/buf.h +50 -0
- data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +22 -17
- data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +7 -9
- data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +107 -91
- data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -2
- data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +14 -15
- data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +254 -203
- data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +4 -1
- data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +296 -77
- data/vendor/libgit2/src/libgit2/commit.h +87 -0
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +246 -135
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +33 -8
- data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +17 -7
- data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +1 -0
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +490 -360
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/{config.h → libgit2/config.h} +24 -6
- data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +8 -10
- data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +4 -5
- data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +212 -183
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +374 -0
- data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +37 -32
- data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +24 -31
- data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +24 -21
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +62 -51
- data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +44 -14
- data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +8 -10
- data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +46 -55
- data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +5 -5
- data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +45 -27
- data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +70 -20
- data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +5 -3
- data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +22 -6
- data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +192 -105
- 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} +49 -16
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +4 -8
- data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +1 -1
- data/vendor/libgit2/src/{email.c → libgit2/email.c} +58 -40
- data/vendor/libgit2/src/{email.h → libgit2/email.h} +1 -1
- data/vendor/libgit2/src/{transports/ssh.h → libgit2/experimental.h.in} +3 -4
- data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +105 -30
- data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +1 -3
- data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +30 -28
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +132 -58
- data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +26 -5
- data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +270 -0
- data/vendor/libgit2/src/libgit2/grafts.h +35 -0
- data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +20 -20
- data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +44 -39
- data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +2 -2
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +460 -276
- data/vendor/libgit2/src/{index.h → libgit2/index.h} +21 -5
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +208 -124
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +102 -71
- data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +8 -5
- data/vendor/libgit2/src/libgit2/libgit2.c +268 -0
- data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +39 -37
- data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +83 -73
- data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +1 -14
- data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +4 -4
- data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +13 -5
- data/vendor/libgit2/src/{message.c → libgit2/message.c} +21 -10
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +174 -112
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +17 -6
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +53 -57
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +9 -2
- data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +29 -37
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +166 -35
- data/vendor/libgit2/src/{object.h → libgit2/object.h} +17 -2
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +261 -88
- 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} +67 -22
- data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +162 -89
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +171 -92
- data/vendor/libgit2/src/libgit2/oid.h +284 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +89 -0
- data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +5 -1
- data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +126 -66
- data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +28 -12
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +146 -111
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +45 -25
- data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +8 -4
- data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +1 -1
- data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +3 -3
- data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +8 -1
- data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +51 -16
- data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +5 -5
- data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +42 -34
- 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} +7 -7
- 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} +116 -60
- data/vendor/libgit2/src/{push.h → libgit2/push.h} +5 -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} +147 -147
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +639 -254
- data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +8 -7
- data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +3 -2
- data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +67 -39
- data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +8 -3
- data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +60 -38
- data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +13 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +821 -454
- data/vendor/libgit2/src/libgit2/remote.h +101 -0
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1377 -594
- data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +43 -12
- data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +8 -5
- data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +18 -22
- data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +76 -44
- data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +48 -19
- data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +3 -3
- data/vendor/libgit2/src/{libgit2.c → libgit2/settings.c} +162 -95
- data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +6 -2
- data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +144 -21
- data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +1 -2
- data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +243 -68
- data/vendor/libgit2/src/{status.c → libgit2/status.c} +5 -2
- 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 +62 -67
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +41 -24
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +2 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +11 -3
- data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +6 -3
- data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +428 -0
- data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +3 -1
- data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +79 -19
- data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +5 -0
- data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +279 -220
- data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +10 -11
- data/vendor/libgit2/src/libgit2/sysdir.c +650 -0
- data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +55 -18
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +74 -43
- data/vendor/libgit2/src/{tag.h → libgit2/tag.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} +7 -7
- data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +27 -21
- data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +4 -1
- data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +14 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +7 -9
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +3 -5
- data/vendor/libgit2/src/{transports/auth_negotiate.c → libgit2/transports/auth_gssapi.c} +44 -45
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +1 -2
- data/vendor/libgit2/src/{transports/auth_ntlm.c → libgit2/transports/auth_ntlmclient.c} +22 -22
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +16 -19
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +49 -24
- data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -11
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +188 -134
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +10 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +159 -127
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +142 -165
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +56 -36
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +307 -74
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +297 -97
- data/vendor/libgit2/src/libgit2/transports/ssh.c +85 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/{transports/ssh.c → libgit2/transports/ssh_libssh2.c} +414 -268
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +101 -75
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +30 -20
- data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +7 -5
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +128 -110
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +7 -6
- data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +160 -121
- data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +1 -1
- data/vendor/libgit2/src/util/CMakeLists.txt +77 -0
- data/vendor/libgit2/src/{alloc.c → util/alloc.c} +69 -7
- data/vendor/libgit2/src/util/alloc.h +65 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/util/allocators/debugalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/failalloc.c +32 -0
- data/vendor/libgit2/src/util/allocators/failalloc.h +17 -0
- data/vendor/libgit2/src/util/allocators/stdalloc.c +37 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +50 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +25 -19
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +5 -1
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/{date.c → util/date.c} +35 -33
- data/vendor/libgit2/src/util/date.h +45 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{errors.h → util/errors.h} +22 -19
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +35 -30
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +21 -8
- data/vendor/libgit2/src/{path.c → util/fs_path.c} +591 -615
- data/vendor/libgit2/src/{path.h → util/fs_path.h} +257 -181
- data/vendor/libgit2/src/{futils.c → util/futils.c} +144 -95
- data/vendor/libgit2/src/{futils.h → util/futils.h} +40 -18
- data/vendor/libgit2/src/{features.h.in → util/git2_features.h.in} +33 -2
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +26 -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 +347 -0
- data/vendor/libgit2/src/util/hash/openssl.h +61 -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 +73 -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/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/{integer.h → util/integer.h} +3 -1
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/util/net.c +1160 -0
- data/vendor/libgit2/src/{net.h → util/net.h} +45 -4
- data/vendor/libgit2/src/{pool.c → util/pool.c} +1 -1
- data/vendor/libgit2/src/{pool.h → util/pool.h} +6 -1
- data/vendor/libgit2/src/{posix.c → util/posix.c} +57 -3
- data/vendor/libgit2/src/{posix.h → util/posix.h} +26 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +3 -3
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +230 -0
- data/vendor/libgit2/src/util/rand.h +37 -0
- data/vendor/libgit2/src/{regexp.c → util/regexp.c} +5 -5
- 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} +15 -14
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +5 -5
- data/vendor/libgit2/src/util/staticstr.h +66 -0
- data/vendor/libgit2/src/{buffer.c → util/str.c} +159 -153
- data/vendor/libgit2/src/util/str.h +357 -0
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- 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 -6
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +24 -8
- 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} +24 -19
- data/vendor/libgit2/src/{util.h → util/util.h} +30 -81
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.c → util/vector.c} +3 -3
- data/vendor/libgit2/src/{vector.h → util/vector.h} +4 -4
- 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.c +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 +148 -17
- 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 +42 -35
- 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/util/win32/process.c +506 -0
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/util/win32/utf-conv.c +144 -0
- data/vendor/libgit2/src/util/win32/utf-conv.h +127 -0
- 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.c +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 +431 -362
- data/vendor/libgit2/cmake/FindIconv.cmake +0 -45
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/alloc.h +0 -40
- data/vendor/libgit2/src/allocators/failalloc.c +0 -92
- data/vendor/libgit2/src/allocators/failalloc.h +0 -23
- data/vendor/libgit2/src/allocators/stdalloc.c +0 -150
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +0 -118
- data/vendor/libgit2/src/buffer.h +0 -374
- data/vendor/libgit2/src/commit.h +0 -46
- data/vendor/libgit2/src/config_entries.c +0 -237
- data/vendor/libgit2/src/config_entries.h +0 -24
- data/vendor/libgit2/src/config_mem.c +0 -220
- data/vendor/libgit2/src/errors.c +0 -238
- 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/idxmap.c +0 -157
- data/vendor/libgit2/src/idxmap.h +0 -177
- data/vendor/libgit2/src/khash.h +0 -615
- data/vendor/libgit2/src/libgit2.h +0 -15
- data/vendor/libgit2/src/message.h +0 -17
- data/vendor/libgit2/src/net.c +0 -540
- data/vendor/libgit2/src/netops.c +0 -125
- data/vendor/libgit2/src/netops.h +0 -68
- data/vendor/libgit2/src/offmap.c +0 -101
- data/vendor/libgit2/src/offmap.h +0 -133
- data/vendor/libgit2/src/oid.h +0 -51
- data/vendor/libgit2/src/oidarray.c +0 -43
- data/vendor/libgit2/src/oidmap.c +0 -107
- data/vendor/libgit2/src/oidmap.h +0 -128
- data/vendor/libgit2/src/remote.h +0 -55
- data/vendor/libgit2/src/streams/socket.c +0 -239
- data/vendor/libgit2/src/strmap.c +0 -100
- data/vendor/libgit2/src/strmap.h +0 -131
- data/vendor/libgit2/src/sysdir.c +0 -347
- data/vendor/libgit2/src/threadstate.c +0 -84
- data/vendor/libgit2/src/threadstate.h +0 -24
- data/vendor/libgit2/src/win32/findfile.c +0 -230
- data/vendor/libgit2/src/win32/findfile.h +0 -19
- data/vendor/libgit2/src/win32/utf-conv.c +0 -146
- data/vendor/libgit2/src/win32/utf-conv.h +0 -60
- /data/vendor/libgit2/{src → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src → deps}/xdiff/xtypes.h +0 -0
- /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/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +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.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.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/{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/{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_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}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +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/{pqueue.c → util/pqueue.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/{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}/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}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
@@ -4,16 +4,15 @@
|
|
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_fs_path_h__
|
8
|
+
#define INCLUDE_fs_path_h__
|
9
9
|
|
10
|
-
#include "
|
10
|
+
#include "git2_util.h"
|
11
11
|
|
12
12
|
#include "posix.h"
|
13
|
-
#include "
|
13
|
+
#include "str.h"
|
14
14
|
#include "vector.h"
|
15
|
-
|
16
|
-
#include "git2/sys/path.h"
|
15
|
+
#include "utf8.h"
|
17
16
|
|
18
17
|
/**
|
19
18
|
* Path manipulation utils
|
@@ -32,16 +31,16 @@
|
|
32
31
|
* the string ".". If path is a null pointer or points to an empty string,
|
33
32
|
* dirname() shall return a pointer to the string "." .
|
34
33
|
*
|
35
|
-
* The `
|
34
|
+
* The `git_fs_path_dirname` implementation is thread safe. The returned
|
36
35
|
* string must be manually free'd.
|
37
36
|
*
|
38
|
-
* The `
|
37
|
+
* The `git_fs_path_dirname_r` implementation writes the dirname to a `git_str`
|
39
38
|
* if the buffer pointer is not NULL.
|
40
39
|
* It returns an error code < 0 if there is an allocation error, otherwise
|
41
40
|
* the length of the dirname (which will be > 0).
|
42
41
|
*/
|
43
|
-
extern char *
|
44
|
-
extern int
|
42
|
+
extern char *git_fs_path_dirname(const char *path);
|
43
|
+
extern int git_fs_path_dirname_r(git_str *buffer, const char *path);
|
45
44
|
|
46
45
|
/*
|
47
46
|
* This function returns the basename of the file, which is the last
|
@@ -52,20 +51,20 @@ extern int git_path_dirname_r(git_buf *buffer, const char *path);
|
|
52
51
|
* Trailing slashes and backslashes are significant: the basename of
|
53
52
|
* c:/foo/bar/ is an empty string after the rightmost slash.
|
54
53
|
*
|
55
|
-
* The `
|
54
|
+
* The `git_fs_path_basename` implementation is thread safe. The returned
|
56
55
|
* string must be manually free'd.
|
57
56
|
*
|
58
|
-
* The `
|
57
|
+
* The `git_fs_path_basename_r` implementation writes the basename to a `git_str`.
|
59
58
|
* It returns an error code < 0 if there is an allocation error, otherwise
|
60
59
|
* the length of the basename (which will be >= 0).
|
61
60
|
*/
|
62
|
-
extern char *
|
63
|
-
extern int
|
61
|
+
extern char *git_fs_path_basename(const char *path);
|
62
|
+
extern int git_fs_path_basename_r(git_str *buffer, const char *path);
|
64
63
|
|
65
64
|
/* Return the offset of the start of the basename. Unlike the other
|
66
65
|
* basename functions, this returns 0 if the path is empty.
|
67
66
|
*/
|
68
|
-
extern size_t
|
67
|
+
extern size_t git_fs_path_basename_offset(git_str *buffer);
|
69
68
|
|
70
69
|
/**
|
71
70
|
* Find offset to root of path if path has one.
|
@@ -75,22 +74,45 @@ extern size_t git_path_basename_offset(git_buf *buffer);
|
|
75
74
|
* "c:/windows/rooted/path" returns 2). If the path is not rooted, this
|
76
75
|
* returns -1.
|
77
76
|
*/
|
78
|
-
extern int
|
77
|
+
extern int git_fs_path_root(const char *path);
|
79
78
|
|
80
79
|
/**
|
81
80
|
* Ensure path has a trailing '/'.
|
82
81
|
*/
|
83
|
-
extern int
|
82
|
+
extern int git_fs_path_to_dir(git_str *path);
|
84
83
|
|
85
84
|
/**
|
86
85
|
* Ensure string has a trailing '/' if there is space for it.
|
87
86
|
*/
|
88
|
-
extern void
|
87
|
+
extern void git_fs_path_string_to_dir(char *path, size_t size);
|
88
|
+
|
89
|
+
/**
|
90
|
+
* Provides the length of the given path string with no trailing
|
91
|
+
* slashes.
|
92
|
+
*/
|
93
|
+
size_t git_fs_path_dirlen(const char *path);
|
94
|
+
|
95
|
+
/**
|
96
|
+
* Returns nonzero if the given path is a filesystem root; on Windows, this
|
97
|
+
* means a drive letter (eg `A:/`, `C:\`). On POSIX this is `/`.
|
98
|
+
*/
|
99
|
+
GIT_INLINE(int) git_fs_path_is_root(const char *name)
|
100
|
+
{
|
101
|
+
#ifdef GIT_WIN32
|
102
|
+
if (((name[0] >= 'A' && name[0] <= 'Z') || (name[0] >= 'a' && name[0] <= 'z')) &&
|
103
|
+
name[1] == ':' &&
|
104
|
+
(name[2] == '/' || name[2] == '\\') &&
|
105
|
+
name[3] == '\0')
|
106
|
+
return 1;
|
107
|
+
#endif
|
108
|
+
|
109
|
+
return (name[0] == '/' && name[1] == '\0');
|
110
|
+
}
|
89
111
|
|
90
112
|
/**
|
91
113
|
* Taken from git.git; returns nonzero if the given path is "." or "..".
|
92
114
|
*/
|
93
|
-
GIT_INLINE(int)
|
115
|
+
GIT_INLINE(int) git_fs_path_is_dot_or_dotdot(const char *name)
|
94
116
|
{
|
95
117
|
return (name[0] == '.' &&
|
96
118
|
(name[1] == '\0' ||
|
@@ -98,23 +120,23 @@ GIT_INLINE(int) git_path_is_dot_or_dotdot(const char *name)
|
|
98
120
|
}
|
99
121
|
|
100
122
|
#ifdef GIT_WIN32
|
101
|
-
GIT_INLINE(int)
|
123
|
+
GIT_INLINE(int) git_fs_path_is_dot_or_dotdotW(const wchar_t *name)
|
102
124
|
{
|
103
125
|
return (name[0] == L'.' &&
|
104
126
|
(name[1] == L'\0' ||
|
105
127
|
(name[1] == L'.' && name[2] == L'\0')));
|
106
128
|
}
|
107
129
|
|
108
|
-
#define
|
130
|
+
#define git_fs_path_is_absolute(p) \
|
109
131
|
(git__isalpha((p)[0]) && (p)[1] == ':' && ((p)[2] == '\\' || (p)[2] == '/'))
|
110
132
|
|
111
|
-
#define
|
133
|
+
#define git_fs_path_is_dirsep(p) \
|
112
134
|
((p) == '/' || (p) == '\\')
|
113
135
|
|
114
136
|
/**
|
115
137
|
* Convert backslashes in path to forward slashes.
|
116
138
|
*/
|
117
|
-
GIT_INLINE(void)
|
139
|
+
GIT_INLINE(void) git_fs_path_mkposix(char *path)
|
118
140
|
{
|
119
141
|
while (*path) {
|
120
142
|
if (*path == '\\')
|
@@ -124,12 +146,12 @@ GIT_INLINE(void) git_path_mkposix(char *path)
|
|
124
146
|
}
|
125
147
|
}
|
126
148
|
#else
|
127
|
-
# define
|
149
|
+
# define git_fs_path_mkposix(p) /* blank */
|
128
150
|
|
129
|
-
#define
|
151
|
+
#define git_fs_path_is_absolute(p) \
|
130
152
|
((p)[0] == '/')
|
131
153
|
|
132
|
-
#define
|
154
|
+
#define git_fs_path_is_dirsep(p) \
|
133
155
|
((p) == '/')
|
134
156
|
|
135
157
|
#endif
|
@@ -137,7 +159,7 @@ GIT_INLINE(void) git_path_mkposix(char *path)
|
|
137
159
|
/**
|
138
160
|
* Check if string is a relative path (i.e. starts with "./" or "../")
|
139
161
|
*/
|
140
|
-
GIT_INLINE(int)
|
162
|
+
GIT_INLINE(int) git_fs_path_is_relative(const char *p)
|
141
163
|
{
|
142
164
|
return (p[0] == '.' && (p[1] == '/' || (p[1] == '.' && p[2] == '/')));
|
143
165
|
}
|
@@ -145,17 +167,17 @@ GIT_INLINE(int) git_path_is_relative(const char *p)
|
|
145
167
|
/**
|
146
168
|
* Check if string is at end of path segment (i.e. looking at '/' or '\0')
|
147
169
|
*/
|
148
|
-
GIT_INLINE(int)
|
170
|
+
GIT_INLINE(int) git_fs_path_at_end_of_segment(const char *p)
|
149
171
|
{
|
150
172
|
return !*p || *p == '/';
|
151
173
|
}
|
152
174
|
|
153
|
-
extern int git__percent_decode(
|
175
|
+
extern int git__percent_decode(git_str *decoded_out, const char *input);
|
154
176
|
|
155
177
|
/**
|
156
178
|
* Extract path from file:// URL.
|
157
179
|
*/
|
158
|
-
extern int
|
180
|
+
extern int git_fs_path_fromurl(git_str *local_path_out, const char *file_url);
|
159
181
|
|
160
182
|
|
161
183
|
/**
|
@@ -168,35 +190,35 @@ extern int git_path_fromurl(git_buf *local_path_out, const char *file_url);
|
|
168
190
|
* Check if a file exists and can be accessed.
|
169
191
|
* @return true or false
|
170
192
|
*/
|
171
|
-
extern bool
|
193
|
+
extern bool git_fs_path_exists(const char *path);
|
172
194
|
|
173
195
|
/**
|
174
196
|
* Check if the given path points to a directory.
|
175
197
|
* @return true or false
|
176
198
|
*/
|
177
|
-
extern bool
|
199
|
+
extern bool git_fs_path_isdir(const char *path);
|
178
200
|
|
179
201
|
/**
|
180
202
|
* Check if the given path points to a regular file.
|
181
203
|
* @return true or false
|
182
204
|
*/
|
183
|
-
extern bool
|
205
|
+
extern bool git_fs_path_isfile(const char *path);
|
184
206
|
|
185
207
|
/**
|
186
208
|
* Check if the given path points to a symbolic link.
|
187
209
|
* @return true or false
|
188
210
|
*/
|
189
|
-
extern bool
|
211
|
+
extern bool git_fs_path_islink(const char *path);
|
190
212
|
|
191
213
|
/**
|
192
214
|
* Check if the given path is a directory, and is empty.
|
193
215
|
*/
|
194
|
-
extern bool
|
216
|
+
extern bool git_fs_path_is_empty_dir(const char *path);
|
195
217
|
|
196
218
|
/**
|
197
219
|
* Stat a file and/or link and set error if needed.
|
198
220
|
*/
|
199
|
-
extern int
|
221
|
+
extern int git_fs_path_lstat(const char *path, struct stat *st);
|
200
222
|
|
201
223
|
/**
|
202
224
|
* Check if the parent directory contains the item.
|
@@ -205,7 +227,7 @@ extern int git_path_lstat(const char *path, struct stat *st);
|
|
205
227
|
* @param item Item that might be in the directory.
|
206
228
|
* @return 0 if item exists in directory, <0 otherwise.
|
207
229
|
*/
|
208
|
-
extern bool
|
230
|
+
extern bool git_fs_path_contains(git_str *dir, const char *item);
|
209
231
|
|
210
232
|
/**
|
211
233
|
* Check if the given path contains the given subdirectory.
|
@@ -214,7 +236,7 @@ extern bool git_path_contains(git_buf *dir, const char *item);
|
|
214
236
|
* @param subdir Subdirectory name to look for in parent
|
215
237
|
* @return true if subdirectory exists, false otherwise.
|
216
238
|
*/
|
217
|
-
extern bool
|
239
|
+
extern bool git_fs_path_contains_dir(git_str *parent, const char *subdir);
|
218
240
|
|
219
241
|
/**
|
220
242
|
* Determine the common directory length between two paths, including
|
@@ -226,7 +248,7 @@ extern bool git_path_contains_dir(git_buf *parent, const char *subdir);
|
|
226
248
|
* @param two The second path
|
227
249
|
* @return The length of the common directory
|
228
250
|
*/
|
229
|
-
extern size_t
|
251
|
+
extern size_t git_fs_path_common_dirlen(const char *one, const char *two);
|
230
252
|
|
231
253
|
/**
|
232
254
|
* Make the path relative to the given parent path.
|
@@ -237,7 +259,7 @@ extern size_t git_path_common_dirlen(const char *one, const char *two);
|
|
237
259
|
* if there was not common root between the paths,
|
238
260
|
* or <0.
|
239
261
|
*/
|
240
|
-
extern int
|
262
|
+
extern int git_fs_path_make_relative(git_str *path, const char *parent);
|
241
263
|
|
242
264
|
/**
|
243
265
|
* Check if the given path contains the given file.
|
@@ -246,7 +268,7 @@ extern int git_path_make_relative(git_buf *path, const char *parent);
|
|
246
268
|
* @param file File name to look for in parent
|
247
269
|
* @return true if file exists, false otherwise.
|
248
270
|
*/
|
249
|
-
extern bool
|
271
|
+
extern bool git_fs_path_contains_file(git_str *dir, const char *file);
|
250
272
|
|
251
273
|
/**
|
252
274
|
* Prepend base to unrooted path or just copy path over.
|
@@ -254,36 +276,36 @@ extern bool git_path_contains_file(git_buf *dir, const char *file);
|
|
254
276
|
* This will optionally return the index into the path where the "root"
|
255
277
|
* is, either the end of the base directory prefix or the path root.
|
256
278
|
*/
|
257
|
-
extern int
|
258
|
-
|
279
|
+
extern int git_fs_path_join_unrooted(
|
280
|
+
git_str *path_out, const char *path, const char *base, ssize_t *root_at);
|
259
281
|
|
260
282
|
/**
|
261
283
|
* Removes multiple occurrences of '/' in a row, squashing them into a
|
262
284
|
* single '/'.
|
263
285
|
*/
|
264
|
-
extern void
|
286
|
+
extern void git_fs_path_squash_slashes(git_str *path);
|
265
287
|
|
266
288
|
/**
|
267
289
|
* Clean up path, prepending base if it is not already rooted.
|
268
290
|
*/
|
269
|
-
extern int
|
291
|
+
extern int git_fs_path_prettify(git_str *path_out, const char *path, const char *base);
|
270
292
|
|
271
293
|
/**
|
272
294
|
* Clean up path, prepending base if it is not already rooted and
|
273
295
|
* appending a slash.
|
274
296
|
*/
|
275
|
-
extern int
|
297
|
+
extern int git_fs_path_prettify_dir(git_str *path_out, const char *path, const char *base);
|
276
298
|
|
277
299
|
/**
|
278
300
|
* Get a directory from a path.
|
279
301
|
*
|
280
|
-
* If path is a directory, this acts like `
|
302
|
+
* If path is a directory, this acts like `git_fs_path_prettify_dir`
|
281
303
|
* (cleaning up path and appending a '/'). If path is a normal file,
|
282
304
|
* this prettifies it, then removed the filename a la dirname and
|
283
305
|
* appends the trailing '/'. If the path does not exist, it is
|
284
306
|
* treated like a regular filename.
|
285
307
|
*/
|
286
|
-
extern int
|
308
|
+
extern int git_fs_path_find_dir(git_str *dir);
|
287
309
|
|
288
310
|
/**
|
289
311
|
* Resolve relative references within a path.
|
@@ -295,7 +317,7 @@ extern int git_path_find_dir(git_buf *dir);
|
|
295
317
|
* Additionally, this will recognize an "c:/" drive prefix or a "xyz://" URL
|
296
318
|
* prefix and not touch that part of the path.
|
297
319
|
*/
|
298
|
-
extern int
|
320
|
+
extern int git_fs_path_resolve_relative(git_str *path, size_t ceiling);
|
299
321
|
|
300
322
|
/**
|
301
323
|
* Apply a relative path to base path.
|
@@ -306,12 +328,12 @@ extern int git_path_resolve_relative(git_buf *path, size_t ceiling);
|
|
306
328
|
* slash, "." will be eaten with no change, and ".." will remove a
|
307
329
|
* segment from the base path.
|
308
330
|
*/
|
309
|
-
extern int
|
331
|
+
extern int git_fs_path_apply_relative(git_str *target, const char *relpath);
|
310
332
|
|
311
333
|
enum {
|
312
|
-
|
313
|
-
|
314
|
-
|
334
|
+
GIT_FS_PATH_DIR_IGNORE_CASE = (1u << 0),
|
335
|
+
GIT_FS_PATH_DIR_PRECOMPOSE_UNICODE = (1u << 1),
|
336
|
+
GIT_FS_PATH_DIR_INCLUDE_DOT_AND_DOTDOT = (1u << 2),
|
315
337
|
};
|
316
338
|
|
317
339
|
/**
|
@@ -319,7 +341,7 @@ enum {
|
|
319
341
|
*
|
320
342
|
* @param pathbuf Buffer the function reads the initial directory
|
321
343
|
* path from, and updates with each successive entry's name.
|
322
|
-
* @param flags Combination of
|
344
|
+
* @param flags Combination of GIT_FS_PATH_DIR flags.
|
323
345
|
* @param callback Callback for each entry. Passed the `payload` and each
|
324
346
|
* successive path inside the directory as a full path. This may
|
325
347
|
* safely append text to the pathbuf if needed. Return non-zero to
|
@@ -327,16 +349,16 @@ enum {
|
|
327
349
|
* @param payload Passed to callback as first argument.
|
328
350
|
* @return 0 on success or error code from OS error or from callback
|
329
351
|
*/
|
330
|
-
extern int
|
331
|
-
|
352
|
+
extern int git_fs_path_direach(
|
353
|
+
git_str *pathbuf,
|
332
354
|
uint32_t flags,
|
333
|
-
int (*callback)(void *payload,
|
355
|
+
int (*callback)(void *payload, git_str *path),
|
334
356
|
void *payload);
|
335
357
|
|
336
358
|
/**
|
337
359
|
* Sort function to order two paths
|
338
360
|
*/
|
339
|
-
extern int
|
361
|
+
extern int git_fs_path_cmp(
|
340
362
|
const char *name1, size_t len1, int isdir1,
|
341
363
|
const char *name2, size_t len2, int isdir2,
|
342
364
|
int (*compare)(const char *, const char *, size_t));
|
@@ -359,21 +381,25 @@ extern int git_path_cmp(
|
|
359
381
|
* be modified in any way. Return non-zero to stop iteration.
|
360
382
|
* @param payload Passed to fn as the first ath.
|
361
383
|
*/
|
362
|
-
extern int
|
363
|
-
|
384
|
+
extern int git_fs_path_walk_up(
|
385
|
+
git_str *pathbuf,
|
364
386
|
const char *ceiling,
|
365
387
|
int (*callback)(void *payload, const char *path),
|
366
388
|
void *payload);
|
367
389
|
|
368
390
|
|
369
|
-
enum {
|
391
|
+
enum {
|
392
|
+
GIT_FS_PATH_NOTEQUAL = 0,
|
393
|
+
GIT_FS_PATH_EQUAL = 1,
|
394
|
+
GIT_FS_PATH_PREFIX = 2
|
395
|
+
};
|
370
396
|
|
371
397
|
/*
|
372
398
|
* Determines if a path is equal to or potentially a child of another.
|
373
399
|
* @param parent The possible parent
|
374
400
|
* @param child The possible child
|
375
401
|
*/
|
376
|
-
GIT_INLINE(int)
|
402
|
+
GIT_INLINE(int) git_fs_path_equal_or_prefixed(
|
377
403
|
const char *parent,
|
378
404
|
const char *child,
|
379
405
|
ssize_t *prefixlen)
|
@@ -385,35 +411,35 @@ GIT_INLINE(int) git_path_equal_or_prefixed(
|
|
385
411
|
lastslash = (*p == '/');
|
386
412
|
|
387
413
|
if (*p++ != *c++)
|
388
|
-
return
|
414
|
+
return GIT_FS_PATH_NOTEQUAL;
|
389
415
|
}
|
390
416
|
|
391
417
|
if (*p != '\0')
|
392
|
-
return
|
418
|
+
return GIT_FS_PATH_NOTEQUAL;
|
393
419
|
|
394
420
|
if (*c == '\0') {
|
395
421
|
if (prefixlen)
|
396
422
|
*prefixlen = p - parent;
|
397
423
|
|
398
|
-
return
|
424
|
+
return GIT_FS_PATH_EQUAL;
|
399
425
|
}
|
400
426
|
|
401
427
|
if (*c == '/' || lastslash) {
|
402
428
|
if (prefixlen)
|
403
429
|
*prefixlen = (p - parent) - lastslash;
|
404
430
|
|
405
|
-
return
|
431
|
+
return GIT_FS_PATH_PREFIX;
|
406
432
|
}
|
407
433
|
|
408
|
-
return
|
434
|
+
return GIT_FS_PATH_NOTEQUAL;
|
409
435
|
}
|
410
436
|
|
411
437
|
/* translate errno to libgit2 error code and set error message */
|
412
|
-
extern int
|
438
|
+
extern int git_fs_path_set_error(
|
413
439
|
int errno_value, const char *path, const char *action);
|
414
440
|
|
415
441
|
/* check if non-ascii characters are present in filename */
|
416
|
-
extern bool
|
442
|
+
extern bool git_fs_path_has_non_ascii(const char *path, size_t pathlen);
|
417
443
|
|
418
444
|
#define GIT_PATH_REPO_ENCODING "UTF-8"
|
419
445
|
|
@@ -429,39 +455,39 @@ extern bool git_path_has_non_ascii(const char *path, size_t pathlen);
|
|
429
455
|
|
430
456
|
typedef struct {
|
431
457
|
iconv_t map;
|
432
|
-
|
433
|
-
}
|
458
|
+
git_str buf;
|
459
|
+
} git_fs_path_iconv_t;
|
434
460
|
|
435
|
-
#define GIT_PATH_ICONV_INIT { (iconv_t)-1,
|
461
|
+
#define GIT_PATH_ICONV_INIT { (iconv_t)-1, GIT_STR_INIT }
|
436
462
|
|
437
463
|
/* Init iconv data for converting decomposed UTF-8 to precomposed */
|
438
|
-
extern int
|
464
|
+
extern int git_fs_path_iconv_init_precompose(git_fs_path_iconv_t *ic);
|
439
465
|
|
440
466
|
/* Clear allocated iconv data */
|
441
|
-
extern void
|
467
|
+
extern void git_fs_path_iconv_clear(git_fs_path_iconv_t *ic);
|
442
468
|
|
443
469
|
/*
|
444
470
|
* Rewrite `in` buffer using iconv map if necessary, replacing `in`
|
445
471
|
* pointer internal iconv buffer if rewrite happened. The `in` pointer
|
446
472
|
* will be left unchanged if no rewrite was needed.
|
447
473
|
*/
|
448
|
-
extern int
|
474
|
+
extern int git_fs_path_iconv(git_fs_path_iconv_t *ic, const char **in, size_t *inlen);
|
449
475
|
|
450
476
|
#endif /* GIT_USE_ICONV */
|
451
477
|
|
452
|
-
extern bool
|
478
|
+
extern bool git_fs_path_does_decompose_unicode(const char *root);
|
453
479
|
|
454
480
|
|
455
|
-
typedef struct
|
481
|
+
typedef struct git_fs_path_diriter git_fs_path_diriter;
|
456
482
|
|
457
483
|
#if defined(GIT_WIN32) && !defined(__MINGW32__)
|
458
484
|
|
459
|
-
struct
|
485
|
+
struct git_fs_path_diriter
|
460
486
|
{
|
461
487
|
git_win32_path path;
|
462
488
|
size_t parent_len;
|
463
489
|
|
464
|
-
|
490
|
+
git_str path_utf8;
|
465
491
|
size_t parent_utf8_len;
|
466
492
|
|
467
493
|
HANDLE handle;
|
@@ -472,13 +498,13 @@ struct git_path_diriter
|
|
472
498
|
unsigned int needs_next;
|
473
499
|
};
|
474
500
|
|
475
|
-
#define
|
501
|
+
#define GIT_FS_PATH_DIRITER_INIT { {0}, 0, GIT_STR_INIT, 0, INVALID_HANDLE_VALUE }
|
476
502
|
|
477
503
|
#else
|
478
504
|
|
479
|
-
struct
|
505
|
+
struct git_fs_path_diriter
|
480
506
|
{
|
481
|
-
|
507
|
+
git_str path;
|
482
508
|
size_t parent_len;
|
483
509
|
|
484
510
|
unsigned int flags;
|
@@ -486,11 +512,11 @@ struct git_path_diriter
|
|
486
512
|
DIR *dir;
|
487
513
|
|
488
514
|
#ifdef GIT_USE_ICONV
|
489
|
-
|
515
|
+
git_fs_path_iconv_t ic;
|
490
516
|
#endif
|
491
517
|
};
|
492
518
|
|
493
|
-
#define
|
519
|
+
#define GIT_FS_PATH_DIRITER_INIT { GIT_STR_INIT }
|
494
520
|
|
495
521
|
#endif
|
496
522
|
|
@@ -502,8 +528,8 @@ struct git_path_diriter
|
|
502
528
|
* @param flags Directory reader flags
|
503
529
|
* @return 0 or an error code
|
504
530
|
*/
|
505
|
-
extern int
|
506
|
-
|
531
|
+
extern int git_fs_path_diriter_init(
|
532
|
+
git_fs_path_diriter *diriter,
|
507
533
|
const char *path,
|
508
534
|
unsigned int flags);
|
509
535
|
|
@@ -514,7 +540,7 @@ extern int git_path_diriter_init(
|
|
514
540
|
* @param diriter The directory iterator
|
515
541
|
* @return 0, GIT_ITEROVER, or an error code
|
516
542
|
*/
|
517
|
-
extern int
|
543
|
+
extern int git_fs_path_diriter_next(git_fs_path_diriter *diriter);
|
518
544
|
|
519
545
|
/**
|
520
546
|
* Returns the file name of the current item in the iterator.
|
@@ -524,10 +550,10 @@ extern int git_path_diriter_next(git_path_diriter *diriter);
|
|
524
550
|
* @param diriter The directory iterator
|
525
551
|
* @return 0 or an error code
|
526
552
|
*/
|
527
|
-
extern int
|
553
|
+
extern int git_fs_path_diriter_filename(
|
528
554
|
const char **out,
|
529
555
|
size_t *out_len,
|
530
|
-
|
556
|
+
git_fs_path_diriter *diriter);
|
531
557
|
|
532
558
|
/**
|
533
559
|
* Returns the full path of the current item in the iterator; that
|
@@ -539,10 +565,10 @@ extern int git_path_diriter_filename(
|
|
539
565
|
* @param diriter The directory iterator
|
540
566
|
* @return 0 or an error code
|
541
567
|
*/
|
542
|
-
extern int
|
568
|
+
extern int git_fs_path_diriter_fullpath(
|
543
569
|
const char **out,
|
544
570
|
size_t *out_len,
|
545
|
-
|
571
|
+
git_fs_path_diriter *diriter);
|
546
572
|
|
547
573
|
/**
|
548
574
|
* Performs an `lstat` on the current item in the iterator.
|
@@ -551,19 +577,19 @@ extern int git_path_diriter_fullpath(
|
|
551
577
|
* @param diriter The directory iterator
|
552
578
|
* @return 0 or an error code
|
553
579
|
*/
|
554
|
-
extern int
|
580
|
+
extern int git_fs_path_diriter_stat(struct stat *out, git_fs_path_diriter *diriter);
|
555
581
|
|
556
582
|
/**
|
557
583
|
* Closes the directory iterator.
|
558
584
|
*
|
559
585
|
* @param diriter The directory iterator
|
560
586
|
*/
|
561
|
-
extern void
|
587
|
+
extern void git_fs_path_diriter_free(git_fs_path_diriter *diriter);
|
562
588
|
|
563
589
|
/**
|
564
590
|
* Load all directory entries (except '.' and '..') into a vector.
|
565
591
|
*
|
566
|
-
* For cases where `
|
592
|
+
* For cases where `git_fs_path_direach()` is not appropriate, this
|
567
593
|
* allows you to load the filenames in a directory into a vector
|
568
594
|
* of strings. That vector can then be sorted, iterated, or whatever.
|
569
595
|
* Remember to free alloc of the allocated strings when you are done.
|
@@ -573,9 +599,9 @@ extern void git_path_diriter_free(git_path_diriter *diriter);
|
|
573
599
|
* @param prefix_len When inserting entries, the trailing part of path
|
574
600
|
* will be prefixed after this length. I.e. given path "/a/b" and
|
575
601
|
* prefix_len 3, the entries will look like "b/e1", "b/e2", etc.
|
576
|
-
* @param flags Combination of
|
602
|
+
* @param flags Combination of GIT_FS_PATH_DIR flags.
|
577
603
|
*/
|
578
|
-
extern int
|
604
|
+
extern int git_fs_path_dirload(
|
579
605
|
git_vector *contents,
|
580
606
|
const char *path,
|
581
607
|
size_t prefix_len,
|
@@ -583,77 +609,105 @@ extern int git_path_dirload(
|
|
583
609
|
|
584
610
|
|
585
611
|
/* Used for paths to repositories on the filesystem */
|
586
|
-
extern bool
|
587
|
-
extern int
|
588
|
-
|
589
|
-
/* Flags to determine path validity in `
|
590
|
-
#define
|
591
|
-
#define
|
592
|
-
#define
|
593
|
-
#define
|
594
|
-
#define
|
595
|
-
#define
|
596
|
-
#define
|
597
|
-
#define
|
598
|
-
#define
|
599
|
-
#define
|
600
|
-
|
601
|
-
#define
|
612
|
+
extern bool git_fs_path_is_local_file_url(const char *file_url);
|
613
|
+
extern int git_fs_path_from_url_or_path(git_str *local_path_out, const char *url_or_path);
|
614
|
+
|
615
|
+
/* Flags to determine path validity in `git_fs_path_isvalid` */
|
616
|
+
#define GIT_FS_PATH_REJECT_EMPTY_COMPONENT (1 << 0)
|
617
|
+
#define GIT_FS_PATH_REJECT_TRAVERSAL (1 << 1)
|
618
|
+
#define GIT_FS_PATH_REJECT_SLASH (1 << 2)
|
619
|
+
#define GIT_FS_PATH_REJECT_BACKSLASH (1 << 3)
|
620
|
+
#define GIT_FS_PATH_REJECT_TRAILING_DOT (1 << 4)
|
621
|
+
#define GIT_FS_PATH_REJECT_TRAILING_SPACE (1 << 5)
|
622
|
+
#define GIT_FS_PATH_REJECT_TRAILING_COLON (1 << 6)
|
623
|
+
#define GIT_FS_PATH_REJECT_DOS_PATHS (1 << 7)
|
624
|
+
#define GIT_FS_PATH_REJECT_NT_CHARS (1 << 8)
|
625
|
+
#define GIT_FS_PATH_REJECT_LONG_PATHS (1 << 9)
|
626
|
+
|
627
|
+
#define GIT_FS_PATH_REJECT_MAX (1 << 9)
|
602
628
|
|
603
629
|
/* Default path safety for writing files to disk: since we use the
|
604
630
|
* Win32 "File Namespace" APIs ("\\?\") we need to protect from
|
605
631
|
* paths that the normal Win32 APIs would not write.
|
606
632
|
*/
|
607
633
|
#ifdef GIT_WIN32
|
608
|
-
# define
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
634
|
+
# define GIT_FS_PATH_REJECT_FILESYSTEM_DEFAULTS \
|
635
|
+
GIT_FS_PATH_REJECT_EMPTY_COMPONENT | \
|
636
|
+
GIT_FS_PATH_REJECT_TRAVERSAL | \
|
637
|
+
GIT_FS_PATH_REJECT_BACKSLASH | \
|
638
|
+
GIT_FS_PATH_REJECT_TRAILING_DOT | \
|
639
|
+
GIT_FS_PATH_REJECT_TRAILING_SPACE | \
|
640
|
+
GIT_FS_PATH_REJECT_TRAILING_COLON | \
|
641
|
+
GIT_FS_PATH_REJECT_DOS_PATHS | \
|
642
|
+
GIT_FS_PATH_REJECT_NT_CHARS
|
616
643
|
#else
|
617
|
-
# define
|
618
|
-
|
644
|
+
# define GIT_FS_PATH_REJECT_FILESYSTEM_DEFAULTS \
|
645
|
+
GIT_FS_PATH_REJECT_EMPTY_COMPONENT | \
|
646
|
+
GIT_FS_PATH_REJECT_TRAVERSAL
|
619
647
|
#endif
|
620
648
|
|
621
|
-
|
622
|
-
|
623
|
-
|
649
|
+
/**
|
650
|
+
* Validate a filesystem path; with custom callbacks per-character and
|
651
|
+
* per-path component.
|
652
|
+
*/
|
653
|
+
extern bool git_fs_path_str_is_valid_ext(
|
654
|
+
const git_str *path,
|
655
|
+
unsigned int flags,
|
656
|
+
bool (*validate_char_cb)(char ch, void *payload),
|
657
|
+
bool (*validate_component_cb)(const char *component, size_t len, void *payload),
|
658
|
+
bool (*validate_length_cb)(const char *component, size_t len, size_t utf8_char_len),
|
659
|
+
void *payload);
|
624
660
|
|
625
|
-
|
626
|
-
|
627
|
-
|
661
|
+
GIT_INLINE(bool) git_fs_path_is_valid_ext(
|
662
|
+
const char *path,
|
663
|
+
unsigned int flags,
|
664
|
+
bool (*validate_char_cb)(char ch, void *payload),
|
665
|
+
bool (*validate_component_cb)(const char *component, size_t len, void *payload),
|
666
|
+
bool (*validate_length_cb)(const char *component, size_t len, size_t utf8_char_len),
|
667
|
+
void *payload)
|
668
|
+
{
|
669
|
+
const git_str str = GIT_STR_INIT_CONST(path, SIZE_MAX);
|
670
|
+
return git_fs_path_str_is_valid_ext(
|
671
|
+
&str,
|
672
|
+
flags,
|
673
|
+
validate_char_cb,
|
674
|
+
validate_component_cb,
|
675
|
+
validate_length_cb,
|
676
|
+
payload);
|
677
|
+
}
|
628
678
|
|
629
679
|
/**
|
630
|
-
* Validate a
|
631
|
-
*
|
632
|
-
*
|
633
|
-
*
|
634
|
-
*
|
635
|
-
* This will ensure that a git path does not contain any "unsafe" components,
|
636
|
-
* a '.' or '..' component, or a component that is ".git" (in any case).
|
637
|
-
*
|
638
|
-
* (Note: if you take or construct an on-disk path -- a workdir path,
|
639
|
-
* a path to a git repository or a reference name that could be a loose
|
640
|
-
* ref -- you should _also_ validate that with `git_path_validate_workdir`.)
|
641
|
-
*
|
642
|
-
* `repo` is optional. If specified, it will be used to determine the short
|
643
|
-
* path name to reject (if `GIT_PATH_REJECT_DOS_SHORTNAME` is specified),
|
644
|
-
* in addition to the default of "git~1".
|
680
|
+
* Validate a filesystem path. This ensures that the given path is legal
|
681
|
+
* and does not contain any "unsafe" components like path traversal ('.'
|
682
|
+
* or '..'), characters that are inappropriate for lesser filesystems
|
683
|
+
* (trailing ' ' or ':' characters), or filenames ("component names")
|
684
|
+
* that are not supported ('AUX', 'COM1").
|
645
685
|
*/
|
646
|
-
|
647
|
-
git_repository *repo,
|
686
|
+
GIT_INLINE(bool) git_fs_path_is_valid(
|
648
687
|
const char *path,
|
649
|
-
|
650
|
-
|
688
|
+
unsigned int flags)
|
689
|
+
{
|
690
|
+
const git_str str = GIT_STR_INIT_CONST(path, SIZE_MAX);
|
691
|
+
return git_fs_path_str_is_valid_ext(&str, flags, NULL, NULL, NULL, NULL);
|
692
|
+
}
|
693
|
+
|
694
|
+
/** Validate a filesystem path in a `git_str`. */
|
695
|
+
GIT_INLINE(bool) git_fs_path_str_is_valid(
|
696
|
+
const git_str *path,
|
697
|
+
unsigned int flags)
|
698
|
+
{
|
699
|
+
return git_fs_path_str_is_valid_ext(path, flags, NULL, NULL, NULL, NULL);
|
700
|
+
}
|
701
|
+
|
702
|
+
extern int git_fs_path_validate_str_length_with_suffix(
|
703
|
+
git_str *path,
|
704
|
+
size_t suffix_len);
|
651
705
|
|
652
706
|
/**
|
653
707
|
* Validate an on-disk path, taking into account that it will have a
|
654
708
|
* suffix appended (eg, `.lock`).
|
655
709
|
*/
|
656
|
-
GIT_INLINE(int)
|
710
|
+
GIT_INLINE(int) git_fs_path_validate_filesystem_with_suffix(
|
657
711
|
const char *path,
|
658
712
|
size_t path_len,
|
659
713
|
size_t suffix_len)
|
@@ -684,54 +738,76 @@ GIT_INLINE(int) git_path_validate_filesystem_with_suffix(
|
|
684
738
|
* Windows.
|
685
739
|
*
|
686
740
|
* For paths within the working directory, you should use ensure that
|
687
|
-
* `core.longpaths` is obeyed. Use `
|
741
|
+
* `core.longpaths` is obeyed. Use `git_fs_path_validate_workdir`.
|
688
742
|
*/
|
689
|
-
GIT_INLINE(int)
|
743
|
+
GIT_INLINE(int) git_fs_path_validate_filesystem(
|
690
744
|
const char *path,
|
691
745
|
size_t path_len)
|
692
746
|
{
|
693
|
-
return
|
747
|
+
return git_fs_path_validate_filesystem_with_suffix(path, path_len, 0);
|
694
748
|
}
|
695
749
|
|
696
750
|
/**
|
697
|
-
*
|
698
|
-
* the given working tree path is valid for the operating system/platform.
|
699
|
-
* This will ensure that an absolute path is smaller than MAX_PATH on
|
700
|
-
* Windows, while keeping `core.longpaths` configuration settings in mind.
|
701
|
-
*
|
702
|
-
* This should be checked by mechamisms like `git_checkout` after
|
703
|
-
* contructing on-disk paths and before trying to write them.
|
704
|
-
*
|
705
|
-
* If the repository is null, no repository configuration is applied.
|
751
|
+
* Convert any backslashes into slashes
|
706
752
|
*/
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
753
|
+
int git_fs_path_normalize_slashes(git_str *out, const char *path);
|
754
|
+
|
755
|
+
bool git_fs_path_supports_symlinks(const char *dir);
|
756
|
+
|
757
|
+
typedef enum {
|
758
|
+
GIT_FS_PATH_OWNER_NONE = 0,
|
759
|
+
|
760
|
+
/** The file must be owned by the current user. */
|
761
|
+
GIT_FS_PATH_OWNER_CURRENT_USER = (1 << 0),
|
762
|
+
|
763
|
+
/** The file must be owned by the system account. */
|
764
|
+
GIT_FS_PATH_OWNER_ADMINISTRATOR = (1 << 1),
|
765
|
+
|
766
|
+
/**
|
767
|
+
* The file may be owned by a system account if the current
|
768
|
+
* user is in an administrator group. Windows only; this is
|
769
|
+
* a noop on non-Windows systems.
|
770
|
+
*/
|
771
|
+
GIT_FS_PATH_USER_IS_ADMINISTRATOR = (1 << 2),
|
772
|
+
|
773
|
+
/**
|
774
|
+
* The file is owned by the current user, who is running `sudo`.
|
775
|
+
*/
|
776
|
+
GIT_FS_PATH_OWNER_RUNNING_SUDO = (1 << 3),
|
777
|
+
|
778
|
+
/** The file may be owned by another user. */
|
779
|
+
GIT_FS_PATH_OWNER_OTHER = (1 << 4)
|
780
|
+
} git_fs_path_owner_t;
|
717
781
|
|
718
782
|
/**
|
719
|
-
*
|
783
|
+
* Sets the mock ownership for files; subsequent calls to
|
784
|
+
* `git_fs_path_owner_is_*` functions will return this data until
|
785
|
+
* cleared with `GIT_FS_PATH_OWNER_NONE`.
|
720
786
|
*/
|
721
|
-
|
787
|
+
void git_fs_path__set_owner(git_fs_path_owner_t owner);
|
722
788
|
|
723
|
-
|
789
|
+
/** Verify that the file in question is owned by the given owner. */
|
790
|
+
int git_fs_path_owner_is(
|
791
|
+
bool *out,
|
792
|
+
const char *path,
|
793
|
+
git_fs_path_owner_t owner_type);
|
724
794
|
|
725
795
|
/**
|
726
|
-
* Validate a system file's ownership
|
727
|
-
*
|
728
796
|
* Verify that the file in question is owned by an administrator or system
|
729
|
-
* account
|
730
|
-
|
731
|
-
*
|
732
|
-
|
733
|
-
|
797
|
+
* account.
|
798
|
+
*/
|
799
|
+
int git_fs_path_owner_is_system(bool *out, const char *path);
|
800
|
+
|
801
|
+
/**
|
802
|
+
* Verify that the file in question is owned by the current user;
|
803
|
+
*/
|
804
|
+
|
805
|
+
int git_fs_path_owner_is_current_user(bool *out, const char *path);
|
806
|
+
|
807
|
+
/**
|
808
|
+
* Search the current PATH for the given executable, returning the full
|
809
|
+
* path if it is found.
|
734
810
|
*/
|
735
|
-
int
|
811
|
+
int git_fs_path_find_executable(git_str *fullpath, const char *executable);
|
736
812
|
|
737
813
|
#endif
|