rugged 0.27.7 → 0.27.10
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/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +99 -51
- data/vendor/libgit2/COPYING +28 -0
- data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
- data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
- data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
- data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
- data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
- data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
- data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
- data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
- data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
- data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
- data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
- data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
- data/vendor/libgit2/deps/pcre/COPYING +5 -0
- data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
- data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
- data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
- data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
- data/vendor/libgit2/deps/pcre/config.h.in +57 -0
- data/vendor/libgit2/deps/pcre/pcre.h +641 -0
- data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
- data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
- data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
- data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
- data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
- data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
- data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
- data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
- data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
- data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
- data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
- data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
- data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
- data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
- data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
- data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
- data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
- data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
- data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
- data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
- data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
- data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
- data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
- data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
- data/vendor/libgit2/deps/pcre/ucp.h +224 -0
- data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
- data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
- data/vendor/libgit2/deps/zlib/COPYING +27 -0
- data/vendor/libgit2/deps/zlib/adler32.c +0 -7
- data/vendor/libgit2/deps/zlib/crc32.c +0 -7
- data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
- data/vendor/libgit2/include/git2/apply.h +149 -0
- data/vendor/libgit2/include/git2/attr.h +20 -13
- data/vendor/libgit2/include/git2/blame.h +4 -4
- data/vendor/libgit2/include/git2/blob.h +44 -12
- data/vendor/libgit2/include/git2/buffer.h +20 -26
- data/vendor/libgit2/include/git2/cert.h +135 -0
- data/vendor/libgit2/include/git2/checkout.h +53 -21
- data/vendor/libgit2/include/git2/cherrypick.h +3 -3
- data/vendor/libgit2/include/git2/clone.h +5 -5
- data/vendor/libgit2/include/git2/commit.h +25 -3
- data/vendor/libgit2/include/git2/common.h +35 -10
- data/vendor/libgit2/include/git2/config.h +29 -19
- data/vendor/libgit2/include/git2/cred.h +308 -0
- data/vendor/libgit2/include/git2/deprecated.h +493 -0
- data/vendor/libgit2/include/git2/describe.h +4 -4
- data/vendor/libgit2/include/git2/diff.h +177 -135
- data/vendor/libgit2/include/git2/errors.h +53 -46
- data/vendor/libgit2/include/git2/filter.h +8 -0
- data/vendor/libgit2/include/git2/index.h +74 -52
- data/vendor/libgit2/include/git2/indexer.h +76 -6
- data/vendor/libgit2/include/git2/merge.h +25 -10
- data/vendor/libgit2/include/git2/net.h +0 -5
- data/vendor/libgit2/include/git2/notes.h +1 -1
- data/vendor/libgit2/include/git2/object.h +17 -29
- data/vendor/libgit2/include/git2/odb.h +12 -11
- data/vendor/libgit2/include/git2/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/oid.h +2 -2
- data/vendor/libgit2/include/git2/pack.h +14 -3
- data/vendor/libgit2/include/git2/proxy.h +5 -3
- data/vendor/libgit2/include/git2/rebase.h +46 -2
- data/vendor/libgit2/include/git2/refs.h +34 -16
- data/vendor/libgit2/include/git2/remote.h +111 -14
- data/vendor/libgit2/include/git2/repository.h +69 -34
- data/vendor/libgit2/include/git2/revert.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +7 -7
- data/vendor/libgit2/include/git2/signature.h +2 -2
- data/vendor/libgit2/include/git2/stash.h +5 -5
- data/vendor/libgit2/include/git2/status.h +26 -17
- data/vendor/libgit2/include/git2/submodule.h +23 -6
- data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
- data/vendor/libgit2/include/git2/sys/commit.h +1 -1
- data/vendor/libgit2/include/git2/sys/config.h +13 -13
- data/vendor/libgit2/include/git2/sys/cred.h +90 -0
- data/vendor/libgit2/include/git2/sys/filter.h +6 -6
- data/vendor/libgit2/include/git2/sys/merge.h +3 -3
- data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
- data/vendor/libgit2/include/git2/sys/path.h +14 -5
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
- data/vendor/libgit2/include/git2/sys/repository.h +5 -1
- data/vendor/libgit2/include/git2/sys/stream.h +92 -12
- data/vendor/libgit2/include/git2/sys/transport.h +129 -83
- data/vendor/libgit2/include/git2/tag.h +13 -4
- data/vendor/libgit2/include/git2/trace.h +2 -2
- data/vendor/libgit2/include/git2/transport.h +11 -311
- data/vendor/libgit2/include/git2/tree.h +4 -4
- data/vendor/libgit2/include/git2/types.h +25 -106
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +5 -5
- data/vendor/libgit2/include/git2.h +4 -0
- data/vendor/libgit2/src/CMakeLists.txt +104 -235
- data/vendor/libgit2/src/alloc.c +14 -18
- data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
- data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
- data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
- data/vendor/libgit2/src/annotated_commit.c +18 -11
- data/vendor/libgit2/src/apply.c +535 -28
- data/vendor/libgit2/src/apply.h +3 -1
- data/vendor/libgit2/src/array.h +2 -2
- data/vendor/libgit2/src/attr.c +77 -71
- data/vendor/libgit2/src/attr_file.c +203 -117
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +49 -51
- data/vendor/libgit2/src/attrcache.h +2 -1
- data/vendor/libgit2/src/blame.c +38 -18
- data/vendor/libgit2/src/blame.h +1 -1
- data/vendor/libgit2/src/blame_git.c +29 -15
- data/vendor/libgit2/src/blob.c +123 -37
- data/vendor/libgit2/src/blob.h +19 -2
- data/vendor/libgit2/src/branch.c +47 -23
- data/vendor/libgit2/src/buf_text.c +7 -6
- data/vendor/libgit2/src/buffer.c +60 -53
- data/vendor/libgit2/src/cache.c +38 -45
- data/vendor/libgit2/src/cache.h +3 -3
- data/vendor/libgit2/src/cc-compat.h +20 -3
- data/vendor/libgit2/src/checkout.c +77 -67
- data/vendor/libgit2/src/cherrypick.c +12 -6
- data/vendor/libgit2/src/clone.c +36 -14
- data/vendor/libgit2/src/clone.h +4 -0
- data/vendor/libgit2/src/commit.c +103 -48
- data/vendor/libgit2/src/commit.h +7 -0
- data/vendor/libgit2/src/commit_list.c +36 -78
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +24 -90
- data/vendor/libgit2/src/config.c +203 -176
- data/vendor/libgit2/src/config.h +8 -20
- data/vendor/libgit2/src/config_backend.h +96 -0
- data/vendor/libgit2/src/config_cache.c +41 -35
- data/vendor/libgit2/src/config_entries.c +229 -0
- data/vendor/libgit2/src/config_entries.h +24 -0
- data/vendor/libgit2/src/config_file.c +422 -680
- data/vendor/libgit2/src/config_mem.c +220 -0
- data/vendor/libgit2/src/config_parse.c +96 -68
- data/vendor/libgit2/src/config_parse.h +15 -14
- data/vendor/libgit2/src/config_snapshot.c +206 -0
- data/vendor/libgit2/src/crlf.c +219 -196
- data/vendor/libgit2/src/delta.c +25 -18
- data/vendor/libgit2/src/describe.c +42 -41
- data/vendor/libgit2/src/diff.c +52 -67
- data/vendor/libgit2/src/diff.h +2 -1
- data/vendor/libgit2/src/diff_driver.c +44 -46
- data/vendor/libgit2/src/diff_file.c +16 -14
- data/vendor/libgit2/src/diff_file.h +1 -1
- data/vendor/libgit2/src/diff_generate.c +158 -103
- data/vendor/libgit2/src/diff_generate.h +3 -3
- data/vendor/libgit2/src/diff_parse.c +4 -4
- data/vendor/libgit2/src/diff_print.c +34 -22
- data/vendor/libgit2/src/diff_stats.c +22 -7
- data/vendor/libgit2/src/diff_tform.c +18 -16
- data/vendor/libgit2/src/diff_xdiff.c +3 -3
- data/vendor/libgit2/src/errors.c +51 -39
- data/vendor/libgit2/src/errors.h +81 -0
- data/vendor/libgit2/src/features.h.in +9 -3
- data/vendor/libgit2/src/fetch.c +8 -3
- data/vendor/libgit2/src/fetchhead.c +12 -12
- data/vendor/libgit2/src/filebuf.c +28 -32
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/filter.c +47 -33
- data/vendor/libgit2/src/filter.h +0 -10
- data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
- data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
- data/vendor/libgit2/src/global.c +35 -55
- data/vendor/libgit2/src/global.h +0 -2
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
- data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
- data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
- data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
- data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
- data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
- data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
- data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
- data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
- data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
- data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
- data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
- data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
- data/vendor/libgit2/src/hash/sha1.h +38 -0
- data/vendor/libgit2/src/hash.c +61 -0
- data/vendor/libgit2/src/hash.h +20 -21
- data/vendor/libgit2/src/hashsig.c +5 -5
- data/vendor/libgit2/src/idxmap.c +107 -61
- data/vendor/libgit2/src/idxmap.h +153 -31
- data/vendor/libgit2/src/ignore.c +38 -42
- data/vendor/libgit2/src/index.c +264 -199
- data/vendor/libgit2/src/index.h +7 -1
- data/vendor/libgit2/src/indexer.c +338 -167
- data/vendor/libgit2/src/integer.h +71 -26
- data/vendor/libgit2/src/iterator.c +134 -62
- data/vendor/libgit2/src/iterator.h +15 -0
- data/vendor/libgit2/src/mailmap.c +8 -8
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +137 -93
- data/vendor/libgit2/src/merge_driver.c +11 -11
- data/vendor/libgit2/src/merge_file.c +2 -2
- data/vendor/libgit2/src/mwindow.c +24 -29
- data/vendor/libgit2/src/mwindow.h +4 -4
- data/vendor/libgit2/src/net.c +184 -0
- data/vendor/libgit2/src/net.h +36 -0
- data/vendor/libgit2/src/netops.c +55 -156
- data/vendor/libgit2/src/netops.h +3 -23
- data/vendor/libgit2/src/notes.c +14 -9
- data/vendor/libgit2/src/object.c +120 -69
- data/vendor/libgit2/src/object.h +22 -9
- data/vendor/libgit2/src/object_api.c +8 -8
- data/vendor/libgit2/src/odb.c +111 -88
- data/vendor/libgit2/src/odb.h +8 -7
- data/vendor/libgit2/src/odb_loose.c +58 -47
- data/vendor/libgit2/src/odb_mempack.c +21 -34
- data/vendor/libgit2/src/odb_pack.c +17 -13
- data/vendor/libgit2/src/offmap.c +53 -35
- data/vendor/libgit2/src/offmap.h +108 -21
- data/vendor/libgit2/src/oid.c +12 -7
- data/vendor/libgit2/src/oidmap.c +49 -47
- data/vendor/libgit2/src/oidmap.h +101 -24
- data/vendor/libgit2/src/pack-objects.c +87 -86
- data/vendor/libgit2/src/pack-objects.h +2 -8
- data/vendor/libgit2/src/pack.c +94 -96
- data/vendor/libgit2/src/pack.h +16 -18
- data/vendor/libgit2/src/parse.c +17 -4
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +3 -3
- data/vendor/libgit2/src/patch_generate.c +18 -18
- data/vendor/libgit2/src/patch_parse.c +147 -79
- data/vendor/libgit2/src/path.c +207 -62
- data/vendor/libgit2/src/path.h +14 -0
- data/vendor/libgit2/src/pathspec.c +18 -18
- data/vendor/libgit2/src/pool.c +26 -22
- data/vendor/libgit2/src/pool.h +7 -7
- data/vendor/libgit2/src/posix.c +10 -10
- data/vendor/libgit2/src/posix.h +12 -1
- data/vendor/libgit2/src/proxy.c +8 -3
- data/vendor/libgit2/src/push.c +35 -29
- data/vendor/libgit2/src/push.h +2 -1
- data/vendor/libgit2/src/reader.c +265 -0
- data/vendor/libgit2/src/reader.h +107 -0
- data/vendor/libgit2/src/rebase.c +97 -38
- data/vendor/libgit2/src/refdb.c +15 -3
- data/vendor/libgit2/src/refdb_fs.c +318 -222
- data/vendor/libgit2/src/reflog.c +13 -15
- data/vendor/libgit2/src/refs.c +122 -89
- data/vendor/libgit2/src/refs.h +5 -3
- data/vendor/libgit2/src/refspec.c +27 -33
- data/vendor/libgit2/src/regexp.c +221 -0
- data/vendor/libgit2/src/regexp.h +97 -0
- data/vendor/libgit2/src/remote.c +229 -178
- data/vendor/libgit2/src/remote.h +11 -2
- data/vendor/libgit2/src/repository.c +227 -172
- data/vendor/libgit2/src/repository.h +52 -40
- data/vendor/libgit2/src/reset.c +7 -7
- data/vendor/libgit2/src/revert.c +11 -6
- data/vendor/libgit2/src/revparse.c +46 -46
- data/vendor/libgit2/src/revwalk.c +89 -54
- data/vendor/libgit2/src/revwalk.h +20 -0
- data/vendor/libgit2/src/settings.c +22 -9
- data/vendor/libgit2/src/signature.c +15 -13
- data/vendor/libgit2/src/sortedcache.c +22 -36
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +56 -76
- data/vendor/libgit2/src/status.c +27 -21
- data/vendor/libgit2/src/stream.h +17 -2
- data/vendor/libgit2/src/streams/mbedtls.c +100 -80
- data/vendor/libgit2/src/streams/mbedtls.h +5 -2
- data/vendor/libgit2/src/streams/openssl.c +93 -81
- data/vendor/libgit2/src/streams/openssl.h +5 -2
- data/vendor/libgit2/src/streams/registry.c +118 -0
- data/vendor/libgit2/src/streams/registry.h +19 -0
- data/vendor/libgit2/src/streams/socket.c +55 -30
- data/vendor/libgit2/src/streams/stransport.c +57 -32
- data/vendor/libgit2/src/streams/stransport.h +5 -0
- data/vendor/libgit2/src/streams/tls.c +48 -20
- data/vendor/libgit2/src/streams/tls.h +12 -4
- data/vendor/libgit2/src/strmap.c +47 -74
- data/vendor/libgit2/src/strmap.h +108 -33
- data/vendor/libgit2/src/submodule.c +190 -169
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +25 -15
- data/vendor/libgit2/src/tag.c +39 -26
- data/vendor/libgit2/src/tag.h +2 -1
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +2 -2
- data/vendor/libgit2/src/trailer.c +46 -32
- data/vendor/libgit2/src/transaction.c +30 -29
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +14 -10
- data/vendor/libgit2/src/transports/auth.h +10 -3
- data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
- data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
- data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
- data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
- data/vendor/libgit2/src/transports/cred.c +24 -24
- data/vendor/libgit2/src/transports/git.c +25 -30
- data/vendor/libgit2/src/transports/http.c +871 -335
- data/vendor/libgit2/src/transports/http.h +2 -0
- data/vendor/libgit2/src/transports/local.c +28 -28
- data/vendor/libgit2/src/transports/smart.c +64 -46
- data/vendor/libgit2/src/transports/smart.h +5 -6
- data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
- data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
- data/vendor/libgit2/src/transports/ssh.c +76 -65
- data/vendor/libgit2/src/transports/winhttp.c +328 -319
- data/vendor/libgit2/src/tree-cache.c +21 -14
- data/vendor/libgit2/src/tree.c +119 -112
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/unix/map.c +3 -3
- data/vendor/libgit2/src/unix/posix.h +1 -11
- data/vendor/libgit2/src/userdiff.h +3 -1
- data/vendor/libgit2/src/util.c +154 -93
- data/vendor/libgit2/src/util.h +19 -23
- data/vendor/libgit2/src/vector.c +15 -10
- data/vendor/libgit2/src/wildmatch.c +320 -0
- data/vendor/libgit2/src/wildmatch.h +23 -0
- data/vendor/libgit2/src/win32/dir.c +3 -3
- data/vendor/libgit2/src/win32/findfile.c +1 -1
- data/vendor/libgit2/src/win32/map.c +9 -11
- data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
- data/vendor/libgit2/src/win32/path_w32.c +113 -9
- data/vendor/libgit2/src/win32/path_w32.h +18 -29
- data/vendor/libgit2/src/win32/posix.h +1 -4
- data/vendor/libgit2/src/win32/posix_w32.c +69 -44
- data/vendor/libgit2/src/win32/precompiled.h +0 -2
- data/vendor/libgit2/src/win32/thread.c +5 -10
- data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
- data/vendor/libgit2/src/win32/w32_common.h +39 -0
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
- data/vendor/libgit2/src/win32/w32_stack.c +6 -11
- data/vendor/libgit2/src/win32/w32_stack.h +3 -3
- data/vendor/libgit2/src/win32/w32_util.c +27 -64
- data/vendor/libgit2/src/win32/w32_util.h +5 -49
- data/vendor/libgit2/src/worktree.c +44 -30
- data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
- data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
- data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
- data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
- data/vendor/libgit2/src/zstream.c +4 -4
- metadata +115 -38
- data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
- data/vendor/libgit2/deps/regex/config.h +0 -7
- data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
- data/vendor/libgit2/deps/regex/regex.c +0 -92
- data/vendor/libgit2/deps/regex/regex.h +0 -582
- data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
- data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
- data/vendor/libgit2/deps/regex/regexec.c +0 -4369
- data/vendor/libgit2/include/git2/inttypes.h +0 -309
- data/vendor/libgit2/include/git2/sys/time.h +0 -31
- data/vendor/libgit2/libgit2.pc.in +0 -13
- data/vendor/libgit2/src/config_file.h +0 -73
- data/vendor/libgit2/src/fnmatch.c +0 -248
- data/vendor/libgit2/src/fnmatch.h +0 -48
- data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
- data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
- data/vendor/libgit2/src/streams/curl.c +0 -385
- data/vendor/libgit2/src/streams/curl.h +0 -17
- /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
|
@@ -181,7 +181,7 @@ static int merge_driver_registry_insert(
|
|
|
181
181
|
git_merge_driver_entry *entry;
|
|
182
182
|
|
|
183
183
|
entry = git__calloc(1, sizeof(git_merge_driver_entry) + strlen(name) + 1);
|
|
184
|
-
|
|
184
|
+
GIT_ERROR_CHECK_ALLOC(entry);
|
|
185
185
|
|
|
186
186
|
strcpy(entry->name, name);
|
|
187
187
|
entry->driver = driver;
|
|
@@ -265,12 +265,12 @@ int git_merge_driver_register(const char *name, git_merge_driver *driver)
|
|
|
265
265
|
assert(name && driver);
|
|
266
266
|
|
|
267
267
|
if (git_rwlock_wrlock(&merge_driver_registry.lock) < 0) {
|
|
268
|
-
|
|
268
|
+
git_error_set(GIT_ERROR_OS, "failed to lock merge driver registry");
|
|
269
269
|
return -1;
|
|
270
270
|
}
|
|
271
271
|
|
|
272
272
|
if (!merge_driver_registry_find(NULL, name)) {
|
|
273
|
-
|
|
273
|
+
git_error_set(GIT_ERROR_MERGE, "attempt to reregister existing driver '%s'",
|
|
274
274
|
name);
|
|
275
275
|
error = GIT_EEXISTS;
|
|
276
276
|
goto done;
|
|
@@ -290,12 +290,12 @@ int git_merge_driver_unregister(const char *name)
|
|
|
290
290
|
int error = 0;
|
|
291
291
|
|
|
292
292
|
if (git_rwlock_wrlock(&merge_driver_registry.lock) < 0) {
|
|
293
|
-
|
|
293
|
+
git_error_set(GIT_ERROR_OS, "failed to lock merge driver registry");
|
|
294
294
|
return -1;
|
|
295
295
|
}
|
|
296
296
|
|
|
297
297
|
if ((entry = merge_driver_registry_lookup(&pos, name)) == NULL) {
|
|
298
|
-
|
|
298
|
+
git_error_set(GIT_ERROR_MERGE, "cannot find merge driver '%s' to unregister",
|
|
299
299
|
name);
|
|
300
300
|
error = GIT_ENOTFOUND;
|
|
301
301
|
goto done;
|
|
@@ -332,7 +332,7 @@ git_merge_driver *git_merge_driver_lookup(const char *name)
|
|
|
332
332
|
return &git_merge_driver__binary;
|
|
333
333
|
|
|
334
334
|
if (git_rwlock_rdlock(&merge_driver_registry.lock) < 0) {
|
|
335
|
-
|
|
335
|
+
git_error_set(GIT_ERROR_OS, "failed to lock merge driver registry");
|
|
336
336
|
return NULL;
|
|
337
337
|
}
|
|
338
338
|
|
|
@@ -341,7 +341,7 @@ git_merge_driver *git_merge_driver_lookup(const char *name)
|
|
|
341
341
|
git_rwlock_rdunlock(&merge_driver_registry.lock);
|
|
342
342
|
|
|
343
343
|
if (entry == NULL) {
|
|
344
|
-
|
|
344
|
+
git_error_set(GIT_ERROR_MERGE, "cannot use an unregistered filter");
|
|
345
345
|
return NULL;
|
|
346
346
|
}
|
|
347
347
|
|
|
@@ -371,17 +371,17 @@ static int merge_driver_name_for_path(
|
|
|
371
371
|
return error;
|
|
372
372
|
|
|
373
373
|
/* set: use the built-in 3-way merge driver ("text") */
|
|
374
|
-
if (
|
|
374
|
+
if (GIT_ATTR_IS_TRUE(value))
|
|
375
375
|
*out = merge_driver_name__text;
|
|
376
376
|
|
|
377
377
|
/* unset: do not merge ("binary") */
|
|
378
|
-
else if (
|
|
378
|
+
else if (GIT_ATTR_IS_FALSE(value))
|
|
379
379
|
*out = merge_driver_name__binary;
|
|
380
380
|
|
|
381
|
-
else if (
|
|
381
|
+
else if (GIT_ATTR_IS_UNSPECIFIED(value) && default_driver)
|
|
382
382
|
*out = default_driver;
|
|
383
383
|
|
|
384
|
-
else if (
|
|
384
|
+
else if (GIT_ATTR_IS_UNSPECIFIED(value))
|
|
385
385
|
*out = merge_driver_name__text;
|
|
386
386
|
|
|
387
387
|
else
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
#include "repository.h"
|
|
11
11
|
#include "posix.h"
|
|
12
|
-
#include "
|
|
12
|
+
#include "futils.h"
|
|
13
13
|
#include "index.h"
|
|
14
14
|
#include "diff_xdiff.h"
|
|
15
15
|
#include "merge.h"
|
|
@@ -130,7 +130,7 @@ static int merge_file__xdiff(
|
|
|
130
130
|
|
|
131
131
|
if ((xdl_result = xdl_merge(&ancestor_mmfile, &our_mmfile,
|
|
132
132
|
&their_mmfile, &xmparam, &mmbuffer)) < 0) {
|
|
133
|
-
|
|
133
|
+
git_error_set(GIT_ERROR_MERGE, "failed to merge files");
|
|
134
134
|
error = -1;
|
|
135
135
|
goto done;
|
|
136
136
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
#include "mwindow.h"
|
|
9
9
|
|
|
10
10
|
#include "vector.h"
|
|
11
|
-
#include "
|
|
11
|
+
#include "futils.h"
|
|
12
12
|
#include "map.h"
|
|
13
13
|
#include "global.h"
|
|
14
14
|
#include "strmap.h"
|
|
@@ -44,31 +44,28 @@ int git_mwindow_global_init(void)
|
|
|
44
44
|
assert(!git__pack_cache);
|
|
45
45
|
|
|
46
46
|
git__on_shutdown(git_mwindow_files_free);
|
|
47
|
-
return
|
|
47
|
+
return git_strmap_new(&git__pack_cache);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
int git_mwindow_get_pack(struct git_pack_file **out, const char *path)
|
|
51
51
|
{
|
|
52
|
-
int error;
|
|
53
|
-
char *packname;
|
|
54
|
-
git_strmap_iter pos;
|
|
55
52
|
struct git_pack_file *pack;
|
|
53
|
+
char *packname;
|
|
54
|
+
int error;
|
|
56
55
|
|
|
57
56
|
if ((error = git_packfile__name(&packname, path)) < 0)
|
|
58
57
|
return error;
|
|
59
58
|
|
|
60
59
|
if (git_mutex_lock(&git__mwindow_mutex) < 0) {
|
|
61
|
-
|
|
60
|
+
git_error_set(GIT_ERROR_OS, "failed to lock mwindow mutex");
|
|
62
61
|
return -1;
|
|
63
62
|
}
|
|
64
63
|
|
|
65
|
-
|
|
64
|
+
pack = git_strmap_get(git__pack_cache, packname);
|
|
66
65
|
git__free(packname);
|
|
67
66
|
|
|
68
|
-
if (
|
|
69
|
-
pack = git_strmap_value_at(git__pack_cache, pos);
|
|
67
|
+
if (pack != NULL) {
|
|
70
68
|
git_atomic_inc(&pack->refcount);
|
|
71
|
-
|
|
72
69
|
git_mutex_unlock(&git__mwindow_mutex);
|
|
73
70
|
*out = pack;
|
|
74
71
|
return 0;
|
|
@@ -82,7 +79,7 @@ int git_mwindow_get_pack(struct git_pack_file **out, const char *path)
|
|
|
82
79
|
|
|
83
80
|
git_atomic_inc(&pack->refcount);
|
|
84
81
|
|
|
85
|
-
|
|
82
|
+
error = git_strmap_set(git__pack_cache, pack->pack_name, pack);
|
|
86
83
|
git_mutex_unlock(&git__mwindow_mutex);
|
|
87
84
|
|
|
88
85
|
if (error < 0) {
|
|
@@ -97,7 +94,6 @@ int git_mwindow_get_pack(struct git_pack_file **out, const char *path)
|
|
|
97
94
|
void git_mwindow_put_pack(struct git_pack_file *pack)
|
|
98
95
|
{
|
|
99
96
|
int count;
|
|
100
|
-
git_strmap_iter pos;
|
|
101
97
|
|
|
102
98
|
if (git_mutex_lock(&git__mwindow_mutex) < 0)
|
|
103
99
|
return;
|
|
@@ -105,13 +101,12 @@ void git_mwindow_put_pack(struct git_pack_file *pack)
|
|
|
105
101
|
/* put before get would be a corrupted state */
|
|
106
102
|
assert(git__pack_cache);
|
|
107
103
|
|
|
108
|
-
pos = git_strmap_lookup_index(git__pack_cache, pack->pack_name);
|
|
109
104
|
/* if we cannot find it, the state is corrupted */
|
|
110
|
-
assert(
|
|
105
|
+
assert(git_strmap_exists(git__pack_cache, pack->pack_name));
|
|
111
106
|
|
|
112
107
|
count = git_atomic_dec(&pack->refcount);
|
|
113
108
|
if (count == 0) {
|
|
114
|
-
|
|
109
|
+
git_strmap_delete(git__pack_cache, pack->pack_name);
|
|
115
110
|
git_packfile_free(pack);
|
|
116
111
|
}
|
|
117
112
|
|
|
@@ -122,7 +117,7 @@ void git_mwindow_put_pack(struct git_pack_file *pack)
|
|
|
122
117
|
void git_mwindow_free_all(git_mwindow_file *mwf)
|
|
123
118
|
{
|
|
124
119
|
if (git_mutex_lock(&git__mwindow_mutex)) {
|
|
125
|
-
|
|
120
|
+
git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
|
|
126
121
|
return;
|
|
127
122
|
}
|
|
128
123
|
|
|
@@ -172,11 +167,11 @@ void git_mwindow_free_all_locked(git_mwindow_file *mwf)
|
|
|
172
167
|
/*
|
|
173
168
|
* Check if a window 'win' contains the address 'offset'
|
|
174
169
|
*/
|
|
175
|
-
int git_mwindow_contains(git_mwindow *win,
|
|
170
|
+
int git_mwindow_contains(git_mwindow *win, off64_t offset)
|
|
176
171
|
{
|
|
177
|
-
|
|
172
|
+
off64_t win_off = win->offset;
|
|
178
173
|
return win_off <= offset
|
|
179
|
-
&& offset <= (
|
|
174
|
+
&& offset <= (off64_t)(win_off + win->window_map.len);
|
|
180
175
|
}
|
|
181
176
|
|
|
182
177
|
/*
|
|
@@ -229,7 +224,7 @@ static int git_mwindow_close_lru(git_mwindow_file *mwf)
|
|
|
229
224
|
}
|
|
230
225
|
|
|
231
226
|
if (!lru_w) {
|
|
232
|
-
|
|
227
|
+
git_error_set(GIT_ERROR_OS, "failed to close memory window; couldn't find LRU");
|
|
233
228
|
return -1;
|
|
234
229
|
}
|
|
235
230
|
|
|
@@ -251,12 +246,12 @@ static int git_mwindow_close_lru(git_mwindow_file *mwf)
|
|
|
251
246
|
static git_mwindow *new_window(
|
|
252
247
|
git_mwindow_file *mwf,
|
|
253
248
|
git_file fd,
|
|
254
|
-
|
|
255
|
-
|
|
249
|
+
off64_t size,
|
|
250
|
+
off64_t offset)
|
|
256
251
|
{
|
|
257
252
|
git_mwindow_ctl *ctl = &mem_ctl;
|
|
258
253
|
size_t walign = git_mwindow__window_size / 2;
|
|
259
|
-
|
|
254
|
+
off64_t len;
|
|
260
255
|
git_mwindow *w;
|
|
261
256
|
|
|
262
257
|
w = git__malloc(sizeof(*w));
|
|
@@ -268,8 +263,8 @@ static git_mwindow *new_window(
|
|
|
268
263
|
w->offset = (offset / walign) * walign;
|
|
269
264
|
|
|
270
265
|
len = size - w->offset;
|
|
271
|
-
if (len > (
|
|
272
|
-
len = (
|
|
266
|
+
if (len > (off64_t)git_mwindow__window_size)
|
|
267
|
+
len = (off64_t)git_mwindow__window_size;
|
|
273
268
|
|
|
274
269
|
ctl->mapped += (size_t)len;
|
|
275
270
|
|
|
@@ -316,7 +311,7 @@ static git_mwindow *new_window(
|
|
|
316
311
|
unsigned char *git_mwindow_open(
|
|
317
312
|
git_mwindow_file *mwf,
|
|
318
313
|
git_mwindow **cursor,
|
|
319
|
-
|
|
314
|
+
off64_t offset,
|
|
320
315
|
size_t extra,
|
|
321
316
|
unsigned int *left)
|
|
322
317
|
{
|
|
@@ -324,7 +319,7 @@ unsigned char *git_mwindow_open(
|
|
|
324
319
|
git_mwindow *w = *cursor;
|
|
325
320
|
|
|
326
321
|
if (git_mutex_lock(&git__mwindow_mutex)) {
|
|
327
|
-
|
|
322
|
+
git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
|
|
328
323
|
return NULL;
|
|
329
324
|
}
|
|
330
325
|
|
|
@@ -376,7 +371,7 @@ int git_mwindow_file_register(git_mwindow_file *mwf)
|
|
|
376
371
|
int ret;
|
|
377
372
|
|
|
378
373
|
if (git_mutex_lock(&git__mwindow_mutex)) {
|
|
379
|
-
|
|
374
|
+
git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
|
|
380
375
|
return -1;
|
|
381
376
|
}
|
|
382
377
|
|
|
@@ -416,7 +411,7 @@ void git_mwindow_close(git_mwindow **window)
|
|
|
416
411
|
git_mwindow *w = *window;
|
|
417
412
|
if (w) {
|
|
418
413
|
if (git_mutex_lock(&git__mwindow_mutex)) {
|
|
419
|
-
|
|
414
|
+
git_error_set(GIT_ERROR_THREAD, "unable to lock mwindow mutex");
|
|
420
415
|
return;
|
|
421
416
|
}
|
|
422
417
|
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
typedef struct git_mwindow {
|
|
17
17
|
struct git_mwindow *next;
|
|
18
18
|
git_map window_map;
|
|
19
|
-
|
|
19
|
+
off64_t offset;
|
|
20
20
|
size_t last_used;
|
|
21
21
|
size_t inuse_cnt;
|
|
22
22
|
} git_mwindow;
|
|
@@ -24,7 +24,7 @@ typedef struct git_mwindow {
|
|
|
24
24
|
typedef struct git_mwindow_file {
|
|
25
25
|
git_mwindow *windows;
|
|
26
26
|
int fd;
|
|
27
|
-
|
|
27
|
+
off64_t size;
|
|
28
28
|
} git_mwindow_file;
|
|
29
29
|
|
|
30
30
|
typedef struct git_mwindow_ctl {
|
|
@@ -37,10 +37,10 @@ typedef struct git_mwindow_ctl {
|
|
|
37
37
|
git_vector windowfiles;
|
|
38
38
|
} git_mwindow_ctl;
|
|
39
39
|
|
|
40
|
-
int git_mwindow_contains(git_mwindow *win,
|
|
40
|
+
int git_mwindow_contains(git_mwindow *win, off64_t offset);
|
|
41
41
|
void git_mwindow_free_all(git_mwindow_file *mwf); /* locks */
|
|
42
42
|
void git_mwindow_free_all_locked(git_mwindow_file *mwf); /* run under lock */
|
|
43
|
-
unsigned char *git_mwindow_open(git_mwindow_file *mwf, git_mwindow **cursor,
|
|
43
|
+
unsigned char *git_mwindow_open(git_mwindow_file *mwf, git_mwindow **cursor, off64_t offset, size_t extra, unsigned int *left);
|
|
44
44
|
int git_mwindow_file_register(git_mwindow_file *mwf);
|
|
45
45
|
void git_mwindow_file_deregister(git_mwindow_file *mwf);
|
|
46
46
|
void git_mwindow_close(git_mwindow **w_cursor);
|
|
@@ -0,0 +1,184 @@
|
|
|
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 "net.h"
|
|
9
|
+
#include "netops.h"
|
|
10
|
+
|
|
11
|
+
#include <ctype.h>
|
|
12
|
+
#include "git2/errors.h"
|
|
13
|
+
|
|
14
|
+
#include "posix.h"
|
|
15
|
+
#include "buffer.h"
|
|
16
|
+
#include "http_parser.h"
|
|
17
|
+
#include "global.h"
|
|
18
|
+
|
|
19
|
+
#define DEFAULT_PORT_HTTP "80"
|
|
20
|
+
#define DEFAULT_PORT_HTTPS "443"
|
|
21
|
+
#define DEFAULT_PORT_GIT "9418"
|
|
22
|
+
#define DEFAULT_PORT_SSH "22"
|
|
23
|
+
|
|
24
|
+
static const char *default_port_for_scheme(const char *scheme)
|
|
25
|
+
{
|
|
26
|
+
if (strcmp(scheme, "http") == 0)
|
|
27
|
+
return DEFAULT_PORT_HTTP;
|
|
28
|
+
else if (strcmp(scheme, "https") == 0)
|
|
29
|
+
return DEFAULT_PORT_HTTPS;
|
|
30
|
+
else if (strcmp(scheme, "git") == 0)
|
|
31
|
+
return DEFAULT_PORT_GIT;
|
|
32
|
+
else if (strcmp(scheme, "ssh") == 0)
|
|
33
|
+
return DEFAULT_PORT_SSH;
|
|
34
|
+
|
|
35
|
+
return NULL;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
int git_net_url_parse(git_net_url *url, const char *given)
|
|
39
|
+
{
|
|
40
|
+
struct http_parser_url u = {0};
|
|
41
|
+
bool has_scheme, has_host, has_port, has_path, has_query, has_userinfo;
|
|
42
|
+
git_buf scheme = GIT_BUF_INIT,
|
|
43
|
+
host = GIT_BUF_INIT,
|
|
44
|
+
port = GIT_BUF_INIT,
|
|
45
|
+
path = GIT_BUF_INIT,
|
|
46
|
+
username = GIT_BUF_INIT,
|
|
47
|
+
password = GIT_BUF_INIT,
|
|
48
|
+
query = GIT_BUF_INIT;
|
|
49
|
+
int error = GIT_EINVALIDSPEC;
|
|
50
|
+
|
|
51
|
+
if (http_parser_parse_url(given, strlen(given), false, &u)) {
|
|
52
|
+
git_error_set(GIT_ERROR_NET, "malformed URL '%s'", given);
|
|
53
|
+
goto done;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
has_scheme = !!(u.field_set & (1 << UF_SCHEMA));
|
|
57
|
+
has_host = !!(u.field_set & (1 << UF_HOST));
|
|
58
|
+
has_port = !!(u.field_set & (1 << UF_PORT));
|
|
59
|
+
has_path = !!(u.field_set & (1 << UF_PATH));
|
|
60
|
+
has_query = !!(u.field_set & (1 << UF_QUERY));
|
|
61
|
+
has_userinfo = !!(u.field_set & (1 << UF_USERINFO));
|
|
62
|
+
|
|
63
|
+
if (has_scheme) {
|
|
64
|
+
const char *url_scheme = given + u.field_data[UF_SCHEMA].off;
|
|
65
|
+
size_t url_scheme_len = u.field_data[UF_SCHEMA].len;
|
|
66
|
+
git_buf_put(&scheme, url_scheme, url_scheme_len);
|
|
67
|
+
git__strntolower(scheme.ptr, scheme.size);
|
|
68
|
+
} else {
|
|
69
|
+
git_error_set(GIT_ERROR_NET, "malformed URL '%s'", given);
|
|
70
|
+
goto done;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (has_host) {
|
|
74
|
+
const char *url_host = given + u.field_data[UF_HOST].off;
|
|
75
|
+
size_t url_host_len = u.field_data[UF_HOST].len;
|
|
76
|
+
git_buf_decode_percent(&host, url_host, url_host_len);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (has_port) {
|
|
80
|
+
const char *url_port = given + u.field_data[UF_PORT].off;
|
|
81
|
+
size_t url_port_len = u.field_data[UF_PORT].len;
|
|
82
|
+
git_buf_put(&port, url_port, url_port_len);
|
|
83
|
+
} else {
|
|
84
|
+
const char *default_port = default_port_for_scheme(scheme.ptr);
|
|
85
|
+
|
|
86
|
+
if (default_port == NULL) {
|
|
87
|
+
git_error_set(GIT_ERROR_NET, "unknown scheme for URL '%s'", given);
|
|
88
|
+
goto done;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
git_buf_puts(&port, default_port);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (has_path) {
|
|
95
|
+
const char *url_path = given + u.field_data[UF_PATH].off;
|
|
96
|
+
size_t url_path_len = u.field_data[UF_PATH].len;
|
|
97
|
+
git_buf_put(&path, url_path, url_path_len);
|
|
98
|
+
} else {
|
|
99
|
+
git_buf_puts(&path, "/");
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (has_query) {
|
|
103
|
+
const char *url_query = given + u.field_data[UF_QUERY].off;
|
|
104
|
+
size_t url_query_len = u.field_data[UF_QUERY].len;
|
|
105
|
+
git_buf_decode_percent(&query, url_query, url_query_len);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (has_userinfo) {
|
|
109
|
+
const char *url_userinfo = given + u.field_data[UF_USERINFO].off;
|
|
110
|
+
size_t url_userinfo_len = u.field_data[UF_USERINFO].len;
|
|
111
|
+
const char *colon = memchr(url_userinfo, ':', url_userinfo_len);
|
|
112
|
+
|
|
113
|
+
if (colon) {
|
|
114
|
+
const char *url_username = url_userinfo;
|
|
115
|
+
size_t url_username_len = colon - url_userinfo;
|
|
116
|
+
const char *url_password = colon + 1;
|
|
117
|
+
size_t url_password_len = url_userinfo_len - (url_username_len + 1);
|
|
118
|
+
|
|
119
|
+
git_buf_decode_percent(&username, url_username, url_username_len);
|
|
120
|
+
git_buf_decode_percent(&password, url_password, url_password_len);
|
|
121
|
+
} else {
|
|
122
|
+
git_buf_decode_percent(&username, url_userinfo, url_userinfo_len);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
if (git_buf_oom(&scheme) ||
|
|
127
|
+
git_buf_oom(&host) ||
|
|
128
|
+
git_buf_oom(&port) ||
|
|
129
|
+
git_buf_oom(&path) ||
|
|
130
|
+
git_buf_oom(&query) ||
|
|
131
|
+
git_buf_oom(&username) ||
|
|
132
|
+
git_buf_oom(&password))
|
|
133
|
+
return -1;
|
|
134
|
+
|
|
135
|
+
url->scheme = git_buf_detach(&scheme);
|
|
136
|
+
url->host = git_buf_detach(&host);
|
|
137
|
+
url->port = git_buf_detach(&port);
|
|
138
|
+
url->path = git_buf_detach(&path);
|
|
139
|
+
url->query = git_buf_detach(&query);
|
|
140
|
+
url->username = git_buf_detach(&username);
|
|
141
|
+
url->password = git_buf_detach(&password);
|
|
142
|
+
|
|
143
|
+
error = 0;
|
|
144
|
+
|
|
145
|
+
done:
|
|
146
|
+
git_buf_dispose(&scheme);
|
|
147
|
+
git_buf_dispose(&host);
|
|
148
|
+
git_buf_dispose(&port);
|
|
149
|
+
git_buf_dispose(&path);
|
|
150
|
+
git_buf_dispose(&query);
|
|
151
|
+
git_buf_dispose(&username);
|
|
152
|
+
git_buf_dispose(&password);
|
|
153
|
+
return error;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
int git_net_url_is_default_port(git_net_url *url)
|
|
157
|
+
{
|
|
158
|
+
return (strcmp(url->port, default_port_for_scheme(url->scheme)) == 0);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
void git_net_url_swap(git_net_url *a, git_net_url *b)
|
|
162
|
+
{
|
|
163
|
+
git_net_url tmp = GIT_NET_URL_INIT;
|
|
164
|
+
|
|
165
|
+
memcpy(&tmp, a, sizeof(git_net_url));
|
|
166
|
+
memcpy(a, b, sizeof(git_net_url));
|
|
167
|
+
memcpy(b, &tmp, sizeof(git_net_url));
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
void git_net_url_dispose(git_net_url *url)
|
|
171
|
+
{
|
|
172
|
+
if (url->username)
|
|
173
|
+
git__memzero(url->username, strlen(url->username));
|
|
174
|
+
|
|
175
|
+
if (url->password)
|
|
176
|
+
git__memzero(url->password, strlen(url->password));
|
|
177
|
+
|
|
178
|
+
git__free(url->scheme); url->scheme = NULL;
|
|
179
|
+
git__free(url->host); url->host = NULL;
|
|
180
|
+
git__free(url->port); url->port = NULL;
|
|
181
|
+
git__free(url->path); url->path = NULL;
|
|
182
|
+
git__free(url->username); url->username = NULL;
|
|
183
|
+
git__free(url->password); url->password = NULL;
|
|
184
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
|
+
*/
|
|
7
|
+
#ifndef INCLUDE_net_h__
|
|
8
|
+
#define INCLUDE_net_h__
|
|
9
|
+
|
|
10
|
+
#include "common.h"
|
|
11
|
+
|
|
12
|
+
typedef struct git_net_url {
|
|
13
|
+
char *scheme;
|
|
14
|
+
char *host;
|
|
15
|
+
char *port;
|
|
16
|
+
char *path;
|
|
17
|
+
char *query;
|
|
18
|
+
char *username;
|
|
19
|
+
char *password;
|
|
20
|
+
} git_net_url;
|
|
21
|
+
|
|
22
|
+
#define GIT_NET_URL_INIT { NULL }
|
|
23
|
+
|
|
24
|
+
/** Parses a string containing a URL into a structure. */
|
|
25
|
+
int git_net_url_parse(git_net_url *url, const char *str);
|
|
26
|
+
|
|
27
|
+
/** Returns nonzero if the URL is on the default port. */
|
|
28
|
+
int git_net_url_is_default_port(git_net_url *url);
|
|
29
|
+
|
|
30
|
+
/** Swaps the contents of one URL for another. */
|
|
31
|
+
void git_net_url_swap(git_net_url *a, git_net_url *b);
|
|
32
|
+
|
|
33
|
+
/** Disposes the contents of the structure. */
|
|
34
|
+
void git_net_url_dispose(git_net_url *url);
|
|
35
|
+
|
|
36
|
+
#endif
|