rugged 1.6.3 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/rugged/rugged_allocator.c +0 -54
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +25 -17
- data/vendor/libgit2/COPYING +195 -1
- data/vendor/libgit2/cmake/CheckPrototypeDefinitionSafe.cmake +16 -0
- data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +4 -4
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +34 -6
- data/vendor/libgit2/cmake/SelectHashes.cmake +32 -11
- data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
- data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
- data/vendor/libgit2/cmake/SelectXdiff.cmake +9 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
- data/vendor/libgit2/deps/pcre/LICENCE +5 -5
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +6 -3
- data/vendor/libgit2/deps/pcre/pcre_exec.c +2 -2
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +28 -0
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/git-xdiff.h +4 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.c +19 -18
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiffi.h +2 -4
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.c +3 -3
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xhistogram.c +7 -18
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmacros.h +18 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xmerge.c +22 -20
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xpatience.c +21 -30
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.c +13 -30
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.c +18 -1
- data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xutils.h +2 -1
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +5 -27
- data/vendor/libgit2/deps/zlib/crc32.c +94 -167
- data/vendor/libgit2/deps/zlib/deflate.c +358 -435
- data/vendor/libgit2/deps/zlib/deflate.h +41 -10
- data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
- data/vendor/libgit2/deps/zlib/infback.c +17 -30
- data/vendor/libgit2/deps/zlib/inffast.c +1 -4
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +36 -102
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +287 -352
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +202 -202
- data/vendor/libgit2/deps/zlib/zutil.c +18 -44
- data/vendor/libgit2/deps/zlib/zutil.h +13 -33
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +27 -6
- data/vendor/libgit2/include/git2/attr.h +17 -4
- data/vendor/libgit2/include/git2/blame.h +133 -28
- data/vendor/libgit2/include/git2/blob.h +71 -28
- data/vendor/libgit2/include/git2/branch.h +22 -15
- data/vendor/libgit2/include/git2/buffer.h +6 -4
- data/vendor/libgit2/include/git2/cert.h +2 -1
- data/vendor/libgit2/include/git2/checkout.h +83 -32
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +25 -9
- data/vendor/libgit2/include/git2/commit.h +132 -3
- data/vendor/libgit2/include/git2/common.h +138 -56
- data/vendor/libgit2/include/git2/config.h +93 -23
- data/vendor/libgit2/include/git2/credential.h +30 -2
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +133 -3
- data/vendor/libgit2/include/git2/describe.h +13 -1
- data/vendor/libgit2/include/git2/diff.h +77 -9
- data/vendor/libgit2/include/git2/email.h +9 -29
- data/vendor/libgit2/include/git2/errors.h +49 -74
- data/vendor/libgit2/include/git2/filter.h +14 -7
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +3 -2
- data/vendor/libgit2/include/git2/ignore.h +10 -0
- data/vendor/libgit2/include/git2/index.h +100 -6
- data/vendor/libgit2/include/git2/indexer.h +21 -4
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +46 -1
- data/vendor/libgit2/include/git2/message.h +2 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +9 -8
- data/vendor/libgit2/include/git2/odb.h +91 -49
- data/vendor/libgit2/include/git2/odb_backend.h +80 -52
- data/vendor/libgit2/include/git2/oid.h +24 -25
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +13 -1
- data/vendor/libgit2/include/git2/patch.h +2 -3
- data/vendor/libgit2/include/git2/pathspec.h +9 -0
- data/vendor/libgit2/include/git2/proxy.h +10 -0
- data/vendor/libgit2/include/git2/rebase.h +9 -6
- data/vendor/libgit2/include/git2/refdb.h +2 -2
- data/vendor/libgit2/include/git2/reflog.h +3 -2
- data/vendor/libgit2/include/git2/refs.h +9 -6
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +112 -18
- data/vendor/libgit2/include/git2/repository.h +61 -15
- data/vendor/libgit2/include/git2/reset.h +16 -3
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +3 -3
- data/vendor/libgit2/include/git2/revwalk.h +3 -2
- data/vendor/libgit2/include/git2/signature.h +46 -1
- data/vendor/libgit2/include/git2/stash.h +17 -3
- data/vendor/libgit2/include/git2/status.h +10 -6
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -3
- data/vendor/libgit2/include/git2/submodule.h +20 -9
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -34
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +109 -58
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +47 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +8 -1
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +25 -2
- data/vendor/libgit2/include/git2/sys/transport.h +44 -5
- data/vendor/libgit2/include/git2/tag.h +3 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +16 -5
- data/vendor/libgit2/include/git2/types.h +19 -3
- data/vendor/libgit2/include/git2/version.h +44 -8
- data/vendor/libgit2/include/git2/worktree.h +19 -7
- data/vendor/libgit2/src/CMakeLists.txt +40 -15
- data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
- data/vendor/libgit2/src/cli/cmd.c +1 -1
- data/vendor/libgit2/src/cli/cmd.h +4 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
- data/vendor/libgit2/src/cli/cmd_clone.c +27 -13
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
- data/vendor/libgit2/src/cli/cmd_help.c +6 -7
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +1 -1
- data/vendor/libgit2/src/cli/main.c +52 -24
- data/vendor/libgit2/src/cli/opt.c +29 -3
- data/vendor/libgit2/src/cli/opt.h +21 -3
- data/vendor/libgit2/src/cli/opt_usage.c +102 -33
- data/vendor/libgit2/src/cli/opt_usage.h +6 -1
- data/vendor/libgit2/src/cli/progress.c +60 -10
- data/vendor/libgit2/src/cli/progress.h +16 -4
- data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
- data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
- data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +27 -27
- data/vendor/libgit2/src/libgit2/annotated_commit.c +2 -2
- data/vendor/libgit2/src/libgit2/annotated_commit.h +1 -1
- data/vendor/libgit2/src/libgit2/apply.c +14 -16
- data/vendor/libgit2/src/libgit2/attr.c +30 -13
- data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
- data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
- data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
- data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
- data/vendor/libgit2/src/libgit2/blame.c +152 -59
- data/vendor/libgit2/src/libgit2/blame.h +1 -0
- data/vendor/libgit2/src/libgit2/blame_git.c +0 -1
- data/vendor/libgit2/src/libgit2/branch.c +2 -2
- data/vendor/libgit2/src/libgit2/cache.c +22 -17
- data/vendor/libgit2/src/libgit2/cache.h +7 -9
- data/vendor/libgit2/src/libgit2/checkout.c +34 -24
- data/vendor/libgit2/src/libgit2/checkout.h +0 -2
- data/vendor/libgit2/src/libgit2/cherrypick.c +4 -5
- data/vendor/libgit2/src/libgit2/clone.c +186 -164
- data/vendor/libgit2/src/libgit2/clone.h +4 -1
- data/vendor/libgit2/src/libgit2/commit.c +123 -9
- data/vendor/libgit2/src/libgit2/commit_graph.c +166 -88
- data/vendor/libgit2/src/libgit2/commit_graph.h +21 -6
- data/vendor/libgit2/src/libgit2/commit_list.c +12 -5
- data/vendor/libgit2/src/libgit2/commit_list.h +1 -0
- data/vendor/libgit2/src/libgit2/config.c +394 -300
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/libgit2/config.h +9 -4
- data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
- data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
- data/vendor/libgit2/src/libgit2/config_file.c +113 -96
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
- data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
- data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
- data/vendor/libgit2/src/libgit2/describe.c +34 -31
- data/vendor/libgit2/src/libgit2/diff.c +17 -8
- data/vendor/libgit2/src/libgit2/diff.h +6 -6
- data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
- data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
- data/vendor/libgit2/src/libgit2/diff_file.c +7 -7
- data/vendor/libgit2/src/libgit2/diff_generate.c +39 -18
- data/vendor/libgit2/src/libgit2/diff_parse.c +22 -6
- data/vendor/libgit2/src/libgit2/diff_print.c +88 -13
- data/vendor/libgit2/src/libgit2/diff_tform.c +40 -12
- data/vendor/libgit2/src/libgit2/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/libgit2/email.c +5 -3
- data/vendor/libgit2/src/libgit2/fetch.c +39 -9
- data/vendor/libgit2/src/libgit2/fetch.h +0 -2
- data/vendor/libgit2/src/libgit2/fetchhead.c +11 -9
- data/vendor/libgit2/src/libgit2/filter.c +5 -5
- data/vendor/libgit2/src/libgit2/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +270 -0
- data/vendor/libgit2/src/libgit2/grafts.h +35 -0
- data/vendor/libgit2/src/libgit2/graph.c +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/libgit2/ident.c +3 -3
- data/vendor/libgit2/src/libgit2/ignore.c +9 -5
- data/vendor/libgit2/src/libgit2/index.c +392 -208
- data/vendor/libgit2/src/libgit2/index.h +16 -3
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/libgit2/indexer.c +44 -41
- data/vendor/libgit2/src/libgit2/iterator.c +34 -13
- data/vendor/libgit2/src/libgit2/iterator.h +3 -0
- data/vendor/libgit2/src/libgit2/libgit2.c +155 -331
- data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
- data/vendor/libgit2/src/libgit2/merge.c +56 -46
- data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
- data/vendor/libgit2/src/libgit2/merge_file.c +0 -2
- data/vendor/libgit2/src/libgit2/midx.c +86 -44
- data/vendor/libgit2/src/libgit2/midx.h +13 -3
- data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
- data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
- data/vendor/libgit2/src/libgit2/notes.c +9 -8
- data/vendor/libgit2/src/libgit2/object.c +42 -16
- data/vendor/libgit2/src/libgit2/object.h +6 -0
- data/vendor/libgit2/src/libgit2/odb.c +16 -9
- data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
- data/vendor/libgit2/src/libgit2/odb_pack.c +28 -7
- data/vendor/libgit2/src/libgit2/oid.c +35 -2
- data/vendor/libgit2/src/libgit2/oid.h +11 -0
- data/vendor/libgit2/src/libgit2/oidarray.c +49 -3
- data/vendor/libgit2/src/libgit2/oidarray.h +5 -1
- data/vendor/libgit2/src/libgit2/pack-objects.c +77 -43
- data/vendor/libgit2/src/libgit2/pack-objects.h +17 -6
- data/vendor/libgit2/src/libgit2/pack.c +33 -27
- data/vendor/libgit2/src/libgit2/pack.h +15 -10
- data/vendor/libgit2/src/libgit2/parse.c +7 -4
- data/vendor/libgit2/src/libgit2/parse.h +1 -1
- data/vendor/libgit2/src/libgit2/patch.h +7 -1
- data/vendor/libgit2/src/libgit2/patch_generate.c +24 -5
- data/vendor/libgit2/src/libgit2/patch_parse.c +18 -10
- data/vendor/libgit2/src/libgit2/path.c +1 -1
- data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
- data/vendor/libgit2/src/libgit2/push.c +81 -30
- data/vendor/libgit2/src/libgit2/push.h +1 -0
- data/vendor/libgit2/src/libgit2/reader.c +1 -1
- data/vendor/libgit2/src/libgit2/rebase.c +72 -84
- data/vendor/libgit2/src/libgit2/refdb_fs.c +146 -70
- data/vendor/libgit2/src/libgit2/reflog.c +1 -2
- data/vendor/libgit2/src/libgit2/reflog.h +2 -0
- data/vendor/libgit2/src/libgit2/refs.c +34 -8
- data/vendor/libgit2/src/libgit2/refs.h +6 -1
- data/vendor/libgit2/src/libgit2/refspec.c +28 -1
- data/vendor/libgit2/src/libgit2/refspec.h +8 -0
- data/vendor/libgit2/src/libgit2/remote.c +136 -67
- data/vendor/libgit2/src/libgit2/remote.h +1 -0
- data/vendor/libgit2/src/libgit2/repository.c +789 -330
- data/vendor/libgit2/src/libgit2/repository.h +22 -3
- data/vendor/libgit2/src/libgit2/reset.c +2 -2
- data/vendor/libgit2/src/libgit2/revert.c +9 -13
- data/vendor/libgit2/src/libgit2/revparse.c +6 -3
- data/vendor/libgit2/src/libgit2/revwalk.c +36 -11
- data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
- data/vendor/libgit2/src/libgit2/settings.c +468 -0
- data/vendor/libgit2/src/libgit2/settings.h +6 -2
- data/vendor/libgit2/src/libgit2/signature.c +132 -15
- data/vendor/libgit2/src/libgit2/signature.h +0 -1
- data/vendor/libgit2/src/libgit2/stash.c +9 -8
- data/vendor/libgit2/src/libgit2/status.c +1 -1
- data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -61
- data/vendor/libgit2/src/libgit2/streams/openssl.c +40 -23
- data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.c +715 -0
- data/vendor/libgit2/src/libgit2/streams/schannel.h +28 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +237 -51
- data/vendor/libgit2/src/libgit2/streams/socket.h +3 -1
- data/vendor/libgit2/src/libgit2/streams/stransport.c +79 -19
- data/vendor/libgit2/src/libgit2/streams/tls.c +5 -0
- data/vendor/libgit2/src/libgit2/submodule.c +106 -63
- data/vendor/libgit2/src/libgit2/submodule.h +9 -10
- data/vendor/libgit2/src/libgit2/tag.c +1 -1
- data/vendor/libgit2/src/libgit2/trailer.c +6 -6
- data/vendor/libgit2/src/libgit2/transaction.c +26 -20
- data/vendor/libgit2/src/libgit2/transaction.h +4 -1
- data/vendor/libgit2/src/libgit2/transport.c +4 -1
- data/vendor/libgit2/src/libgit2/transports/auth.h +1 -2
- data/vendor/libgit2/src/libgit2/transports/{auth_negotiate.c → auth_gssapi.c} +32 -32
- data/vendor/libgit2/src/libgit2/transports/auth_negotiate.h +1 -1
- data/vendor/libgit2/src/libgit2/transports/auth_ntlm.h +1 -1
- data/vendor/libgit2/src/libgit2/transports/{auth_ntlm.c → auth_ntlmclient.c} +12 -12
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +341 -0
- data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
- data/vendor/libgit2/src/libgit2/transports/git.c +7 -8
- data/vendor/libgit2/src/libgit2/transports/http.c +8 -4
- data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
- data/vendor/libgit2/src/libgit2/transports/httpclient.c +117 -72
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/libgit2/transports/local.c +21 -11
- data/vendor/libgit2/src/libgit2/transports/smart.c +50 -32
- data/vendor/libgit2/src/libgit2/transports/smart.h +26 -9
- data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +139 -18
- data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +209 -57
- data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/libgit2/transports/winhttp.c +48 -21
- data/vendor/libgit2/src/libgit2/tree-cache.c +26 -16
- data/vendor/libgit2/src/libgit2/tree-cache.h +5 -3
- data/vendor/libgit2/src/libgit2/tree.c +35 -27
- data/vendor/libgit2/src/libgit2/tree.h +3 -2
- data/vendor/libgit2/src/libgit2/worktree.c +39 -27
- data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
- data/vendor/libgit2/src/util/alloc.c +69 -7
- data/vendor/libgit2/src/util/alloc.h +34 -9
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
- data/vendor/libgit2/src/util/allocators/failalloc.c +0 -60
- data/vendor/libgit2/src/util/allocators/failalloc.h +0 -6
- data/vendor/libgit2/src/util/allocators/stdalloc.c +2 -115
- data/vendor/libgit2/src/util/allocators/win32_leakcheck.c +0 -68
- data/vendor/libgit2/src/util/array.h +24 -18
- data/vendor/libgit2/src/util/cc-compat.h +4 -0
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/util/date.c +22 -14
- data/vendor/libgit2/src/util/date.h +12 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
- data/vendor/libgit2/src/util/filebuf.c +6 -1
- data/vendor/libgit2/src/util/filebuf.h +19 -6
- data/vendor/libgit2/src/util/fs_path.c +16 -5
- data/vendor/libgit2/src/util/fs_path.h +23 -0
- data/vendor/libgit2/src/util/futils.c +14 -10
- data/vendor/libgit2/src/util/futils.h +13 -4
- data/vendor/libgit2/src/util/git2_features.h.in +21 -4
- data/vendor/libgit2/src/util/git2_util.h +6 -0
- data/vendor/libgit2/src/util/hash/openssl.c +152 -0
- data/vendor/libgit2/src/util/hash/openssl.h +17 -1
- data/vendor/libgit2/src/util/hash/sha.h +4 -1
- data/vendor/libgit2/src/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/util/integer.h +3 -1
- data/vendor/libgit2/src/util/net.c +318 -161
- data/vendor/libgit2/src/util/net.h +27 -0
- data/vendor/libgit2/src/util/pool.c +1 -1
- data/vendor/libgit2/src/util/pool.h +5 -0
- data/vendor/libgit2/src/util/posix.c +54 -0
- data/vendor/libgit2/src/util/posix.h +22 -0
- data/vendor/libgit2/src/util/pqueue.h +1 -1
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +6 -10
- data/vendor/libgit2/src/util/regexp.c +1 -1
- data/vendor/libgit2/src/util/sortedcache.c +14 -13
- data/vendor/libgit2/src/util/sortedcache.h +3 -3
- data/vendor/libgit2/src/util/staticstr.h +66 -0
- data/vendor/libgit2/src/util/str.c +2 -2
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/util/unix/posix.h +0 -2
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/util/unix/realpath.c +23 -5
- data/vendor/libgit2/src/util/util.c +17 -12
- data/vendor/libgit2/src/util/util.h +28 -54
- data/vendor/libgit2/src/util/vector.c +3 -3
- data/vendor/libgit2/src/util/vector.h +2 -2
- data/vendor/libgit2/src/util/win32/error.c +1 -1
- data/vendor/libgit2/src/util/win32/path_w32.c +8 -8
- data/vendor/libgit2/src/util/win32/posix_w32.c +30 -7
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- data/vendor/libgit2/src/util/win32/utf-conv.c +73 -75
- data/vendor/libgit2/src/util/win32/utf-conv.h +81 -14
- data/vendor/libgit2/src/util/win32/w32_util.c +1 -1
- metadata +72 -49
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +0 -17
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
- data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
- data/vendor/libgit2/src/libgit2/errors.c +0 -238
- data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
- data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
- data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
- data/vendor/libgit2/src/libgit2/netops.c +0 -124
- data/vendor/libgit2/src/libgit2/netops.h +0 -68
- data/vendor/libgit2/src/libgit2/offmap.c +0 -101
- data/vendor/libgit2/src/libgit2/offmap.h +0 -133
- data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
- data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
- data/vendor/libgit2/src/libgit2/threadstate.c +0 -84
- data/vendor/libgit2/src/libgit2/threadstate.h +0 -24
- data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
- data/vendor/libgit2/src/util/khash.h +0 -615
- data/vendor/libgit2/src/util/strmap.c +0 -100
- data/vendor/libgit2/src/util/strmap.h +0 -131
- /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xdiff.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xemit.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xinclude.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xprepare.h +0 -0
- /data/vendor/libgit2/{src/libgit2 → deps}/xdiff/xtypes.h +0 -0
@@ -18,7 +18,7 @@
|
|
18
18
|
# endif
|
19
19
|
# include <windows.h>
|
20
20
|
|
21
|
-
# ifdef
|
21
|
+
# ifdef GIT_QSORT_MSC
|
22
22
|
# include <search.h>
|
23
23
|
# endif
|
24
24
|
#endif
|
@@ -623,12 +623,12 @@ int git__bsearch_r(
|
|
623
623
|
*/
|
624
624
|
int git__strcmp_cb(const void *a, const void *b)
|
625
625
|
{
|
626
|
-
return
|
626
|
+
return git__strcmp((const char *)a, (const char *)b);
|
627
627
|
}
|
628
628
|
|
629
629
|
int git__strcasecmp_cb(const void *a, const void *b)
|
630
630
|
{
|
631
|
-
return
|
631
|
+
return git__strcasecmp((const char *)a, (const char *)b);
|
632
632
|
}
|
633
633
|
|
634
634
|
int git__parse_bool(int *out, const char *value)
|
@@ -673,7 +673,7 @@ size_t git__unescape(char *str)
|
|
673
673
|
return (pos - str);
|
674
674
|
}
|
675
675
|
|
676
|
-
#if defined(
|
676
|
+
#if defined(GIT_QSORT_MSC) || defined(GIT_QSORT_BSD)
|
677
677
|
typedef struct {
|
678
678
|
git__sort_r_cmp cmp;
|
679
679
|
void *payload;
|
@@ -688,9 +688,11 @@ static int GIT_LIBGIT2_CALL git__qsort_r_glue_cmp(
|
|
688
688
|
#endif
|
689
689
|
|
690
690
|
|
691
|
-
#if !defined(
|
692
|
-
|
693
|
-
|
691
|
+
#if !defined(GIT_QSORT_BSD) && \
|
692
|
+
!defined(GIT_QSORT_GNU) && \
|
693
|
+
!defined(GIT_QSORT_C11) && \
|
694
|
+
!defined(GIT_QSORT_MSC)
|
695
|
+
|
694
696
|
static void swap(uint8_t *a, uint8_t *b, size_t elsize)
|
695
697
|
{
|
696
698
|
char tmp[256];
|
@@ -716,17 +718,20 @@ static void insertsort(
|
|
716
718
|
for (j = i; j > base && cmp(j, j - elsize, payload) < 0; j -= elsize)
|
717
719
|
swap(j, j - elsize, elsize);
|
718
720
|
}
|
721
|
+
|
719
722
|
#endif
|
720
723
|
|
721
724
|
void git__qsort_r(
|
722
725
|
void *els, size_t nel, size_t elsize, git__sort_r_cmp cmp, void *payload)
|
723
726
|
{
|
724
|
-
#if defined(
|
727
|
+
#if defined(GIT_QSORT_GNU)
|
728
|
+
qsort_r(els, nel, elsize, cmp, payload);
|
729
|
+
#elif defined(GIT_QSORT_C11)
|
730
|
+
qsort_s(els, nel, elsize, cmp, payload);
|
731
|
+
#elif defined(GIT_QSORT_BSD)
|
725
732
|
git__qsort_r_glue glue = { cmp, payload };
|
726
733
|
qsort_r(els, nel, elsize, &glue, git__qsort_r_glue_cmp);
|
727
|
-
#elif defined(
|
728
|
-
qsort_r(els, nel, elsize, cmp, payload);
|
729
|
-
#elif defined(GIT_QSORT_S)
|
734
|
+
#elif defined(GIT_QSORT_MSC)
|
730
735
|
git__qsort_r_glue glue = { cmp, payload };
|
731
736
|
qsort_s(els, nel, elsize, git__qsort_r_glue_cmp, &glue);
|
732
737
|
#else
|
@@ -743,7 +748,7 @@ int git__getenv(git_str *out, const char *name)
|
|
743
748
|
|
744
749
|
git_str_clear(out);
|
745
750
|
|
746
|
-
if (
|
751
|
+
if (git_utf8_to_16_alloc(&wide_name, name) < 0)
|
747
752
|
return -1;
|
748
753
|
|
749
754
|
if ((value_len = GetEnvironmentVariableW(wide_name, NULL, 0)) > 0) {
|
@@ -7,15 +7,15 @@
|
|
7
7
|
#ifndef INCLUDE_util_h__
|
8
8
|
#define INCLUDE_util_h__
|
9
9
|
|
10
|
-
#ifndef GIT_WIN32
|
11
|
-
# include <ctype.h>
|
12
|
-
#endif
|
13
|
-
|
14
10
|
#include "str.h"
|
15
11
|
#include "git2_util.h"
|
16
12
|
#include "strnlen.h"
|
17
13
|
#include "thread.h"
|
18
14
|
|
15
|
+
#ifndef GIT_WIN32
|
16
|
+
# include <ctype.h>
|
17
|
+
#endif
|
18
|
+
|
19
19
|
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
|
20
20
|
#define bitsizeof(x) (CHAR_BIT * sizeof(x))
|
21
21
|
#define MSB(x, bits) ((x) & (~UINT64_C(0) << (bitsizeof(x) - (bits))))
|
@@ -83,15 +83,6 @@ extern char *git__strsep(char **end, const char *sep);
|
|
83
83
|
extern void git__strntolower(char *str, size_t len);
|
84
84
|
extern void git__strtolower(char *str);
|
85
85
|
|
86
|
-
#ifdef GIT_WIN32
|
87
|
-
GIT_INLINE(int) git__tolower(int c)
|
88
|
-
{
|
89
|
-
return (c >= 'A' && c <= 'Z') ? (c + 32) : c;
|
90
|
-
}
|
91
|
-
#else
|
92
|
-
# define git__tolower(a) tolower(a)
|
93
|
-
#endif
|
94
|
-
|
95
86
|
extern size_t git__linenlen(const char *buffer, size_t buffer_len);
|
96
87
|
|
97
88
|
GIT_INLINE(const char *) git__next_line(const char *s)
|
@@ -249,26 +240,6 @@ GIT_INLINE(size_t) git__size_t_powerof2(size_t v)
|
|
249
240
|
return git__size_t_bitmask(v) + 1;
|
250
241
|
}
|
251
242
|
|
252
|
-
GIT_INLINE(bool) git__isupper(int c)
|
253
|
-
{
|
254
|
-
return (c >= 'A' && c <= 'Z');
|
255
|
-
}
|
256
|
-
|
257
|
-
GIT_INLINE(bool) git__isalpha(int c)
|
258
|
-
{
|
259
|
-
return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
|
260
|
-
}
|
261
|
-
|
262
|
-
GIT_INLINE(bool) git__isdigit(int c)
|
263
|
-
{
|
264
|
-
return (c >= '0' && c <= '9');
|
265
|
-
}
|
266
|
-
|
267
|
-
GIT_INLINE(bool) git__isspace(int c)
|
268
|
-
{
|
269
|
-
return (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r' || c == '\v');
|
270
|
-
}
|
271
|
-
|
272
243
|
GIT_INLINE(bool) git__isspace_nonlf(int c)
|
273
244
|
{
|
274
245
|
return (c == ' ' || c == '\t' || c == '\f' || c == '\r' || c == '\v');
|
@@ -279,11 +250,6 @@ GIT_INLINE(bool) git__iswildcard(int c)
|
|
279
250
|
return (c == '*' || c == '?' || c == '[');
|
280
251
|
}
|
281
252
|
|
282
|
-
GIT_INLINE(bool) git__isxdigit(int c)
|
283
|
-
{
|
284
|
-
return ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'));
|
285
|
-
}
|
286
|
-
|
287
253
|
/*
|
288
254
|
* Parse a string value as a boolean, just like Core Git does.
|
289
255
|
*
|
@@ -319,59 +285,67 @@ GIT_INLINE(void) git__memzero(void *data, size_t size)
|
|
319
285
|
|
320
286
|
#ifdef GIT_WIN32
|
321
287
|
|
322
|
-
GIT_INLINE(
|
288
|
+
GIT_INLINE(uint64_t) git_time_monotonic(void)
|
323
289
|
{
|
324
290
|
/* GetTickCount64 returns the number of milliseconds that have
|
325
291
|
* elapsed since the system was started. */
|
326
|
-
return
|
292
|
+
return GetTickCount64();
|
327
293
|
}
|
328
294
|
|
329
295
|
#elif __APPLE__
|
330
296
|
|
331
297
|
#include <mach/mach_time.h>
|
298
|
+
#include <sys/time.h>
|
332
299
|
|
333
|
-
GIT_INLINE(
|
300
|
+
GIT_INLINE(uint64_t) git_time_monotonic(void)
|
334
301
|
{
|
335
|
-
|
336
|
-
|
302
|
+
static double scaling_factor = 0;
|
303
|
+
|
304
|
+
if (scaling_factor == 0) {
|
305
|
+
mach_timebase_info_data_t info;
|
337
306
|
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
307
|
+
scaling_factor = mach_timebase_info(&info) == KERN_SUCCESS ?
|
308
|
+
((double)info.numer / (double)info.denom) / 1.0E6 :
|
309
|
+
-1;
|
310
|
+
} else if (scaling_factor < 0) {
|
311
|
+
struct timeval tv;
|
312
|
+
|
313
|
+
/* mach_timebase_info failed; fall back to gettimeofday */
|
314
|
+
gettimeofday(&tv, NULL);
|
315
|
+
return (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
|
316
|
+
}
|
343
317
|
|
344
|
-
|
318
|
+
return (uint64_t)(mach_absolute_time() * scaling_factor);
|
345
319
|
}
|
346
320
|
|
347
321
|
#elif defined(__amigaos4__)
|
348
322
|
|
349
323
|
#include <proto/timer.h>
|
350
324
|
|
351
|
-
GIT_INLINE(
|
325
|
+
GIT_INLINE(uint64_t) git_time_monotonic(void)
|
352
326
|
{
|
353
327
|
struct TimeVal tv;
|
354
328
|
ITimer->GetUpTime(&tv);
|
355
|
-
return (
|
329
|
+
return (tv.Seconds * 1000) + (tv.Microseconds / 1000);
|
356
330
|
}
|
357
331
|
|
358
332
|
#else
|
359
333
|
|
360
334
|
#include <sys/time.h>
|
361
335
|
|
362
|
-
GIT_INLINE(
|
336
|
+
GIT_INLINE(uint64_t) git_time_monotonic(void)
|
363
337
|
{
|
364
338
|
struct timeval tv;
|
365
339
|
|
366
340
|
#ifdef CLOCK_MONOTONIC
|
367
341
|
struct timespec tp;
|
368
342
|
if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
|
369
|
-
return (
|
343
|
+
return (tp.tv_sec * 1000) + (tp.tv_nsec / 1.0E6);
|
370
344
|
#endif
|
371
345
|
|
372
346
|
/* Fall back to using gettimeofday */
|
373
347
|
gettimeofday(&tv, NULL);
|
374
|
-
return (
|
348
|
+
return (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
|
375
349
|
}
|
376
350
|
|
377
351
|
#endif
|
@@ -76,7 +76,7 @@ int git_vector_dup(git_vector *v, const git_vector *src, git_vector_cmp cmp)
|
|
76
76
|
return 0;
|
77
77
|
}
|
78
78
|
|
79
|
-
void
|
79
|
+
void git_vector_dispose(git_vector *v)
|
80
80
|
{
|
81
81
|
if (!v)
|
82
82
|
return;
|
@@ -88,7 +88,7 @@ void git_vector_free(git_vector *v)
|
|
88
88
|
v->_alloc_size = 0;
|
89
89
|
}
|
90
90
|
|
91
|
-
void
|
91
|
+
void git_vector_dispose_deep(git_vector *v)
|
92
92
|
{
|
93
93
|
size_t i;
|
94
94
|
|
@@ -100,7 +100,7 @@ void git_vector_free_deep(git_vector *v)
|
|
100
100
|
v->contents[i] = NULL;
|
101
101
|
}
|
102
102
|
|
103
|
-
|
103
|
+
git_vector_dispose(v);
|
104
104
|
}
|
105
105
|
|
106
106
|
int git_vector_init(git_vector *v, size_t initial_size, git_vector_cmp cmp)
|
@@ -28,8 +28,8 @@ typedef struct git_vector {
|
|
28
28
|
|
29
29
|
GIT_WARN_UNUSED_RESULT int git_vector_init(
|
30
30
|
git_vector *v, size_t initial_size, git_vector_cmp cmp);
|
31
|
-
void
|
32
|
-
void
|
31
|
+
void git_vector_dispose(git_vector *v);
|
32
|
+
void git_vector_dispose_deep(git_vector *v); /* free each entry and self */
|
33
33
|
void git_vector_clear(git_vector *v);
|
34
34
|
GIT_WARN_UNUSED_RESULT int git_vector_dup(
|
35
35
|
git_vector *v, const git_vector *src, git_vector_cmp cmp);
|
@@ -43,7 +43,7 @@ char *git_win32_get_error_message(DWORD error_code)
|
|
43
43
|
(LPWSTR)&lpMsgBuf, 0, NULL)) {
|
44
44
|
/* Convert the message to UTF-8. If this fails, we will
|
45
45
|
* return NULL, which is a condition expected by the caller */
|
46
|
-
if (
|
46
|
+
if (git_utf8_from_16_alloc(&utf8_msg, lpMsgBuf) < 0)
|
47
47
|
utf8_msg = NULL;
|
48
48
|
|
49
49
|
LocalFree(lpMsgBuf);
|
@@ -336,13 +336,13 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
|
|
336
336
|
|
337
337
|
/* See if this is an absolute path (beginning with a drive letter) */
|
338
338
|
if (git_fs_path_is_absolute(src)) {
|
339
|
-
if (
|
339
|
+
if (git_utf8_to_16(dest, GIT_WIN_PATH_MAX, src) < 0)
|
340
340
|
goto on_error;
|
341
341
|
}
|
342
342
|
/* File-prefixed NT-style paths beginning with \\?\ */
|
343
343
|
else if (path__is_nt_namespace(src)) {
|
344
344
|
/* Skip the NT prefix, the destination already contains it */
|
345
|
-
if (
|
345
|
+
if (git_utf8_to_16(dest, GIT_WIN_PATH_MAX, src + PATH__NT_NAMESPACE_LEN) < 0)
|
346
346
|
goto on_error;
|
347
347
|
}
|
348
348
|
/* UNC paths */
|
@@ -351,7 +351,7 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
|
|
351
351
|
dest += 4;
|
352
352
|
|
353
353
|
/* Skip the leading "\\" */
|
354
|
-
if (
|
354
|
+
if (git_utf8_to_16(dest, GIT_WIN_PATH_MAX - 2, src + 2) < 0)
|
355
355
|
goto on_error;
|
356
356
|
}
|
357
357
|
/* Absolute paths omitting the drive letter */
|
@@ -365,7 +365,7 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
|
|
365
365
|
}
|
366
366
|
|
367
367
|
/* Skip the drive letter specification ("C:") */
|
368
|
-
if (
|
368
|
+
if (git_utf8_to_16(dest + 2, GIT_WIN_PATH_MAX - 2, src) < 0)
|
369
369
|
goto on_error;
|
370
370
|
}
|
371
371
|
/* Relative paths */
|
@@ -377,7 +377,7 @@ int git_win32_path_from_utf8(git_win32_path out, const char *src)
|
|
377
377
|
|
378
378
|
dest[cwd_len++] = L'\\';
|
379
379
|
|
380
|
-
if (
|
380
|
+
if (git_utf8_to_16(dest + cwd_len, GIT_WIN_PATH_MAX - cwd_len, src) < 0)
|
381
381
|
goto on_error;
|
382
382
|
}
|
383
383
|
|
@@ -404,7 +404,7 @@ int git_win32_path_relative_from_utf8(git_win32_path out, const char *src)
|
|
404
404
|
return git_win32_path_from_utf8(out, src);
|
405
405
|
}
|
406
406
|
|
407
|
-
if ((len =
|
407
|
+
if ((len = git_utf8_to_16(dest, GIT_WIN_PATH_MAX, src)) < 0)
|
408
408
|
return -1;
|
409
409
|
|
410
410
|
for (p = dest; p < (dest + len); p++) {
|
@@ -433,7 +433,7 @@ int git_win32_path_to_utf8(git_win32_utf8_path dest, const wchar_t *src)
|
|
433
433
|
}
|
434
434
|
}
|
435
435
|
|
436
|
-
if ((len =
|
436
|
+
if ((len = git_utf8_from_16(out, GIT_WIN_PATH_UTF8, src)) < 0)
|
437
437
|
return len;
|
438
438
|
|
439
439
|
git_fs_path_mkposix(dest);
|
@@ -471,7 +471,7 @@ char *git_win32_path_8dot3_name(const char *path)
|
|
471
471
|
if (namelen > 12 || (shortname = git__malloc(namelen + 1)) == NULL)
|
472
472
|
return NULL;
|
473
473
|
|
474
|
-
if ((len =
|
474
|
+
if ((len = git_utf8_from_16(shortname, namelen + 1, start)) < 0)
|
475
475
|
return NULL;
|
476
476
|
|
477
477
|
return shortname;
|
@@ -649,7 +649,7 @@ int p_getcwd(char *buffer_out, size_t size)
|
|
649
649
|
git_win32_path_remove_namespace(cwd, wcslen(cwd));
|
650
650
|
|
651
651
|
/* Convert the working directory back to UTF-8 */
|
652
|
-
if (
|
652
|
+
if (git_utf8_from_16(buffer_out, size, cwd) < 0) {
|
653
653
|
DWORD code = GetLastError();
|
654
654
|
|
655
655
|
if (code == ERROR_INSUFFICIENT_BUFFER)
|
@@ -770,6 +770,7 @@ int p_rmdir(const char *path)
|
|
770
770
|
* handle to the directory." This sounds like what everybody else calls
|
771
771
|
* EBUSY. Let's convert appropriate error codes.
|
772
772
|
*/
|
773
|
+
case ERROR_ACCESS_DENIED:
|
773
774
|
case ERROR_SHARING_VIOLATION:
|
774
775
|
errno = EBUSY;
|
775
776
|
break;
|
@@ -787,13 +788,19 @@ int p_rmdir(const char *path)
|
|
787
788
|
char *p_realpath(const char *orig_path, char *buffer)
|
788
789
|
{
|
789
790
|
git_win32_path orig_path_w, buffer_w;
|
791
|
+
DWORD long_len;
|
790
792
|
|
791
793
|
if (git_win32_path_from_utf8(orig_path_w, orig_path) < 0)
|
792
794
|
return NULL;
|
793
795
|
|
794
|
-
/*
|
796
|
+
/*
|
797
|
+
* POSIX realpath performs two functions: first, it turns relative
|
798
|
+
* paths into absolute paths. For this, we need GetFullPathName.
|
799
|
+
*
|
800
|
+
* Note that if the path provided is a relative path, then the current directory
|
795
801
|
* is used to resolve the path -- which is a concurrency issue because the current
|
796
|
-
* directory is a process-wide variable.
|
802
|
+
* directory is a process-wide variable.
|
803
|
+
*/
|
797
804
|
if (!GetFullPathNameW(orig_path_w, GIT_WIN_PATH_UTF16, buffer_w, NULL)) {
|
798
805
|
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
|
799
806
|
errno = ENAMETOOLONG;
|
@@ -803,9 +810,26 @@ char *p_realpath(const char *orig_path, char *buffer)
|
|
803
810
|
return NULL;
|
804
811
|
}
|
805
812
|
|
806
|
-
/*
|
807
|
-
|
808
|
-
|
813
|
+
/*
|
814
|
+
* Then, the path is canonicalized. eg, on macOS,
|
815
|
+
* "/TMP" -> "/private/tmp". For this, we need GetLongPathName.
|
816
|
+
*/
|
817
|
+
if ((long_len = GetLongPathNameW(buffer_w, buffer_w, GIT_WIN_PATH_UTF16)) == 0) {
|
818
|
+
DWORD error = GetLastError();
|
819
|
+
|
820
|
+
if (error == ERROR_FILE_NOT_FOUND ||
|
821
|
+
error == ERROR_PATH_NOT_FOUND)
|
822
|
+
errno = ENOENT;
|
823
|
+
else if (error == ERROR_ACCESS_DENIED)
|
824
|
+
errno = EPERM;
|
825
|
+
else
|
826
|
+
errno = EINVAL;
|
827
|
+
|
828
|
+
return NULL;
|
829
|
+
}
|
830
|
+
|
831
|
+
if (long_len > GIT_WIN_PATH_UTF16) {
|
832
|
+
errno = ENAMETOOLONG;
|
809
833
|
return NULL;
|
810
834
|
}
|
811
835
|
|
@@ -821,7 +845,6 @@ char *p_realpath(const char *orig_path, char *buffer)
|
|
821
845
|
return NULL;
|
822
846
|
|
823
847
|
git_fs_path_mkposix(buffer);
|
824
|
-
|
825
848
|
return buffer;
|
826
849
|
}
|
827
850
|
|