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
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
#include "
|
|
8
|
+
#include "futils.h"
|
|
9
9
|
|
|
10
10
|
#include "global.h"
|
|
11
11
|
#include "strmap.h"
|
|
@@ -35,13 +35,13 @@ int git_futils_mktmp(git_buf *path_out, const char *filename, mode_t mode)
|
|
|
35
35
|
return -1;
|
|
36
36
|
|
|
37
37
|
if ((fd = p_mkstemp(path_out->ptr)) < 0) {
|
|
38
|
-
|
|
38
|
+
git_error_set(GIT_ERROR_OS,
|
|
39
39
|
"failed to create temporary file '%s'", path_out->ptr);
|
|
40
40
|
return -1;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
if (p_chmod(path_out->ptr, (mode & ~mask))) {
|
|
44
|
-
|
|
44
|
+
git_error_set(GIT_ERROR_OS,
|
|
45
45
|
"failed to set permissions on file '%s'", path_out->ptr);
|
|
46
46
|
return -1;
|
|
47
47
|
}
|
|
@@ -58,7 +58,7 @@ int git_futils_creat_withpath(const char *path, const mode_t dirmode, const mode
|
|
|
58
58
|
|
|
59
59
|
fd = p_creat(path, mode);
|
|
60
60
|
if (fd < 0) {
|
|
61
|
-
|
|
61
|
+
git_error_set(GIT_ERROR_OS, "failed to create file '%s'", path);
|
|
62
62
|
return -1;
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -72,7 +72,7 @@ int git_futils_creat_locked(const char *path, const mode_t mode)
|
|
|
72
72
|
|
|
73
73
|
if (fd < 0) {
|
|
74
74
|
int error = errno;
|
|
75
|
-
|
|
75
|
+
git_error_set(GIT_ERROR_OS, "failed to create locked file '%s'", path);
|
|
76
76
|
switch (error) {
|
|
77
77
|
case EEXIST:
|
|
78
78
|
return GIT_ELOCKED;
|
|
@@ -112,16 +112,22 @@ int git_futils_truncate(const char *path, int mode)
|
|
|
112
112
|
return 0;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
int git_futils_filesize(uint64_t *out, git_file fd)
|
|
116
116
|
{
|
|
117
117
|
struct stat sb;
|
|
118
118
|
|
|
119
119
|
if (p_fstat(fd, &sb)) {
|
|
120
|
-
|
|
120
|
+
git_error_set(GIT_ERROR_OS, "failed to stat file descriptor");
|
|
121
121
|
return -1;
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
|
|
124
|
+
if (sb.st_size < 0) {
|
|
125
|
+
git_error_set(GIT_ERROR_INVALID, "invalid file size");
|
|
126
|
+
return -1;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
*out = sb.st_size;
|
|
130
|
+
return 0;
|
|
125
131
|
}
|
|
126
132
|
|
|
127
133
|
mode_t git_futils_canonical_mode(mode_t raw_mode)
|
|
@@ -146,11 +152,11 @@ int git_futils_readbuffer_fd(git_buf *buf, git_file fd, size_t len)
|
|
|
146
152
|
git_buf_clear(buf);
|
|
147
153
|
|
|
148
154
|
if (!git__is_ssizet(len)) {
|
|
149
|
-
|
|
155
|
+
git_error_set(GIT_ERROR_INVALID, "read too large");
|
|
150
156
|
return -1;
|
|
151
157
|
}
|
|
152
158
|
|
|
153
|
-
|
|
159
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_len, len, 1);
|
|
154
160
|
if (git_buf_grow(buf, alloc_len) < 0)
|
|
155
161
|
return -1;
|
|
156
162
|
|
|
@@ -158,7 +164,7 @@ int git_futils_readbuffer_fd(git_buf *buf, git_file fd, size_t len)
|
|
|
158
164
|
read_size = p_read(fd, buf->ptr, len);
|
|
159
165
|
|
|
160
166
|
if (read_size != (ssize_t)len) {
|
|
161
|
-
|
|
167
|
+
git_error_set(GIT_ERROR_OS, "failed to read descriptor");
|
|
162
168
|
git_buf_dispose(buf);
|
|
163
169
|
return -1;
|
|
164
170
|
}
|
|
@@ -188,12 +194,12 @@ int git_futils_readbuffer_updated(
|
|
|
188
194
|
|
|
189
195
|
|
|
190
196
|
if (S_ISDIR(st.st_mode)) {
|
|
191
|
-
|
|
197
|
+
git_error_set(GIT_ERROR_INVALID, "requested file is a directory");
|
|
192
198
|
return GIT_ENOTFOUND;
|
|
193
199
|
}
|
|
194
200
|
|
|
195
201
|
if (!git__is_sizet(st.st_size+1)) {
|
|
196
|
-
|
|
202
|
+
git_error_set(GIT_ERROR_OS, "invalid regular file stat for '%s'", path);
|
|
197
203
|
return -1;
|
|
198
204
|
}
|
|
199
205
|
|
|
@@ -261,24 +267,24 @@ int git_futils_writebuffer(
|
|
|
261
267
|
mode = GIT_FILEMODE_BLOB;
|
|
262
268
|
|
|
263
269
|
if ((fd = p_open(path, flags, mode)) < 0) {
|
|
264
|
-
|
|
270
|
+
git_error_set(GIT_ERROR_OS, "could not open '%s' for writing", path);
|
|
265
271
|
return fd;
|
|
266
272
|
}
|
|
267
273
|
|
|
268
274
|
if ((error = p_write(fd, git_buf_cstr(buf), git_buf_len(buf))) < 0) {
|
|
269
|
-
|
|
275
|
+
git_error_set(GIT_ERROR_OS, "could not write to '%s'", path);
|
|
270
276
|
(void)p_close(fd);
|
|
271
277
|
return error;
|
|
272
278
|
}
|
|
273
279
|
|
|
274
280
|
if (do_fsync && (error = p_fsync(fd)) < 0) {
|
|
275
|
-
|
|
281
|
+
git_error_set(GIT_ERROR_OS, "could not fsync '%s'", path);
|
|
276
282
|
p_close(fd);
|
|
277
283
|
return error;
|
|
278
284
|
}
|
|
279
285
|
|
|
280
286
|
if ((error = p_close(fd)) < 0) {
|
|
281
|
-
|
|
287
|
+
git_error_set(GIT_ERROR_OS, "error while closing '%s'", path);
|
|
282
288
|
return error;
|
|
283
289
|
}
|
|
284
290
|
|
|
@@ -294,14 +300,14 @@ int git_futils_mv_withpath(const char *from, const char *to, const mode_t dirmod
|
|
|
294
300
|
return -1;
|
|
295
301
|
|
|
296
302
|
if (p_rename(from, to) < 0) {
|
|
297
|
-
|
|
303
|
+
git_error_set(GIT_ERROR_OS, "failed to rename '%s' to '%s'", from, to);
|
|
298
304
|
return -1;
|
|
299
305
|
}
|
|
300
306
|
|
|
301
307
|
return 0;
|
|
302
308
|
}
|
|
303
309
|
|
|
304
|
-
int git_futils_mmap_ro(git_map *out, git_file fd,
|
|
310
|
+
int git_futils_mmap_ro(git_map *out, git_file fd, off64_t begin, size_t len)
|
|
305
311
|
{
|
|
306
312
|
return p_mmap(out, len, GIT_PROT_READ, GIT_MAP_SHARED, fd, begin);
|
|
307
313
|
}
|
|
@@ -309,19 +315,17 @@ int git_futils_mmap_ro(git_map *out, git_file fd, git_off_t begin, size_t len)
|
|
|
309
315
|
int git_futils_mmap_ro_file(git_map *out, const char *path)
|
|
310
316
|
{
|
|
311
317
|
git_file fd = git_futils_open_ro(path);
|
|
312
|
-
|
|
318
|
+
uint64_t len;
|
|
313
319
|
int result;
|
|
314
320
|
|
|
315
321
|
if (fd < 0)
|
|
316
322
|
return fd;
|
|
317
323
|
|
|
318
|
-
if ((
|
|
319
|
-
result = -1;
|
|
324
|
+
if ((result = git_futils_filesize(&len, fd)) < 0)
|
|
320
325
|
goto out;
|
|
321
|
-
}
|
|
322
326
|
|
|
323
327
|
if (!git__is_sizet(len)) {
|
|
324
|
-
|
|
328
|
+
git_error_set(GIT_ERROR_OS, "file `%s` too large to mmap", path);
|
|
325
329
|
result = -1;
|
|
326
330
|
goto out;
|
|
327
331
|
}
|
|
@@ -346,7 +350,7 @@ GIT_INLINE(int) mkdir_validate_dir(
|
|
|
346
350
|
{
|
|
347
351
|
/* with exclusive create, existing dir is an error */
|
|
348
352
|
if ((flags & GIT_MKDIR_EXCL) != 0) {
|
|
349
|
-
|
|
353
|
+
git_error_set(GIT_ERROR_FILESYSTEM,
|
|
350
354
|
"failed to make directory '%s': directory exists", path);
|
|
351
355
|
return GIT_EEXISTS;
|
|
352
356
|
}
|
|
@@ -354,7 +358,7 @@ GIT_INLINE(int) mkdir_validate_dir(
|
|
|
354
358
|
if ((S_ISREG(st->st_mode) && (flags & GIT_MKDIR_REMOVE_FILES)) ||
|
|
355
359
|
(S_ISLNK(st->st_mode) && (flags & GIT_MKDIR_REMOVE_SYMLINKS))) {
|
|
356
360
|
if (p_unlink(path) < 0) {
|
|
357
|
-
|
|
361
|
+
git_error_set(GIT_ERROR_OS, "failed to remove %s '%s'",
|
|
358
362
|
S_ISLNK(st->st_mode) ? "symlink" : "file", path);
|
|
359
363
|
return GIT_EEXISTS;
|
|
360
364
|
}
|
|
@@ -362,7 +366,7 @@ GIT_INLINE(int) mkdir_validate_dir(
|
|
|
362
366
|
opts->perfdata.mkdir_calls++;
|
|
363
367
|
|
|
364
368
|
if (p_mkdir(path, mode) < 0) {
|
|
365
|
-
|
|
369
|
+
git_error_set(GIT_ERROR_OS, "failed to make directory '%s'", path);
|
|
366
370
|
return GIT_EEXISTS;
|
|
367
371
|
}
|
|
368
372
|
}
|
|
@@ -372,13 +376,13 @@ GIT_INLINE(int) mkdir_validate_dir(
|
|
|
372
376
|
opts->perfdata.stat_calls++;
|
|
373
377
|
|
|
374
378
|
if (p_stat(path, st) < 0) {
|
|
375
|
-
|
|
379
|
+
git_error_set(GIT_ERROR_OS, "failed to make directory '%s'", path);
|
|
376
380
|
return GIT_EEXISTS;
|
|
377
381
|
}
|
|
378
382
|
}
|
|
379
383
|
|
|
380
384
|
else if (!S_ISDIR(st->st_mode)) {
|
|
381
|
-
|
|
385
|
+
git_error_set(GIT_ERROR_FILESYSTEM,
|
|
382
386
|
"failed to make directory '%s': directory exists", path);
|
|
383
387
|
return GIT_EEXISTS;
|
|
384
388
|
}
|
|
@@ -400,7 +404,7 @@ GIT_INLINE(int) mkdir_validate_mode(
|
|
|
400
404
|
opts->perfdata.chmod_calls++;
|
|
401
405
|
|
|
402
406
|
if (p_chmod(path, mode) < 0) {
|
|
403
|
-
|
|
407
|
+
git_error_set(GIT_ERROR_OS, "failed to set permissions on '%s'", path);
|
|
404
408
|
return -1;
|
|
405
409
|
}
|
|
406
410
|
}
|
|
@@ -415,7 +419,7 @@ GIT_INLINE(int) mkdir_canonicalize(
|
|
|
415
419
|
ssize_t root_len;
|
|
416
420
|
|
|
417
421
|
if (path->size == 0) {
|
|
418
|
-
|
|
422
|
+
git_error_set(GIT_ERROR_OS, "attempt to create empty path");
|
|
419
423
|
return -1;
|
|
420
424
|
}
|
|
421
425
|
|
|
@@ -475,7 +479,8 @@ int git_futils_mkdir(
|
|
|
475
479
|
if (error == 0) {
|
|
476
480
|
break;
|
|
477
481
|
} else if (errno != ENOENT) {
|
|
478
|
-
|
|
482
|
+
git_error_set(GIT_ERROR_OS, "failed to stat '%s'", parent_path.ptr);
|
|
483
|
+
error = -1;
|
|
479
484
|
goto done;
|
|
480
485
|
}
|
|
481
486
|
|
|
@@ -489,10 +494,15 @@ int git_futils_mkdir(
|
|
|
489
494
|
|
|
490
495
|
assert(len);
|
|
491
496
|
|
|
492
|
-
/*
|
|
493
|
-
*
|
|
497
|
+
/*
|
|
498
|
+
* We've walked all the given path's parents and it's either relative
|
|
499
|
+
* (the parent is simply '.') or rooted (the length is less than or
|
|
500
|
+
* equal to length of the root path). The path may be less than the
|
|
501
|
+
* root path length on Windows, where `C:` == `C:/`.
|
|
494
502
|
*/
|
|
495
|
-
if ((len == 1 && parent_path.ptr[0] == '.') ||
|
|
503
|
+
if ((len == 1 && parent_path.ptr[0] == '.') ||
|
|
504
|
+
(len == 1 && parent_path.ptr[0] == '/') ||
|
|
505
|
+
len <= root_len) {
|
|
496
506
|
relative = make_path.ptr;
|
|
497
507
|
break;
|
|
498
508
|
}
|
|
@@ -602,18 +612,18 @@ int git_futils_mkdir_relative(
|
|
|
602
612
|
retry_lstat:
|
|
603
613
|
if (p_lstat(make_path.ptr, &st) < 0) {
|
|
604
614
|
if (mkdir_attempted || errno != ENOENT) {
|
|
605
|
-
|
|
615
|
+
git_error_set(GIT_ERROR_OS, "cannot access component in path '%s'", make_path.ptr);
|
|
606
616
|
error = -1;
|
|
607
617
|
goto done;
|
|
608
618
|
}
|
|
609
619
|
|
|
610
|
-
|
|
620
|
+
git_error_clear();
|
|
611
621
|
opts->perfdata.mkdir_calls++;
|
|
612
622
|
mkdir_attempted = true;
|
|
613
623
|
if (p_mkdir(make_path.ptr, mode) < 0) {
|
|
614
624
|
if (errno == EEXIST)
|
|
615
625
|
goto retry_lstat;
|
|
616
|
-
|
|
626
|
+
git_error_set(GIT_ERROR_OS, "failed to make directory '%s'", make_path.ptr);
|
|
617
627
|
error = -1;
|
|
618
628
|
goto done;
|
|
619
629
|
}
|
|
@@ -632,16 +642,13 @@ retry_lstat:
|
|
|
632
642
|
char *cache_path;
|
|
633
643
|
size_t alloc_size;
|
|
634
644
|
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
cache_path = git_pool_malloc(opts->pool, (uint32_t)alloc_size);
|
|
639
|
-
GITERR_CHECK_ALLOC(cache_path);
|
|
645
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_size, make_path.size, 1);
|
|
646
|
+
cache_path = git_pool_malloc(opts->pool, alloc_size);
|
|
647
|
+
GIT_ERROR_CHECK_ALLOC(cache_path);
|
|
640
648
|
|
|
641
649
|
memcpy(cache_path, make_path.ptr, make_path.size + 1);
|
|
642
650
|
|
|
643
|
-
|
|
644
|
-
if (error < 0)
|
|
651
|
+
if ((error = git_strmap_set(opts->dir_map, cache_path, cache_path)) < 0)
|
|
645
652
|
goto done;
|
|
646
653
|
}
|
|
647
654
|
}
|
|
@@ -654,7 +661,7 @@ retry_lstat:
|
|
|
654
661
|
opts->perfdata.stat_calls++;
|
|
655
662
|
|
|
656
663
|
if (p_stat(make_path.ptr, &st) < 0 || !S_ISDIR(st.st_mode)) {
|
|
657
|
-
|
|
664
|
+
git_error_set(GIT_ERROR_OS, "path is not a directory '%s'",
|
|
658
665
|
make_path.ptr);
|
|
659
666
|
error = GIT_ENOTFOUND;
|
|
660
667
|
}
|
|
@@ -677,10 +684,10 @@ typedef struct {
|
|
|
677
684
|
static int futils__error_cannot_rmdir(const char *path, const char *filemsg)
|
|
678
685
|
{
|
|
679
686
|
if (filemsg)
|
|
680
|
-
|
|
687
|
+
git_error_set(GIT_ERROR_OS, "could not remove directory '%s': %s",
|
|
681
688
|
path, filemsg);
|
|
682
689
|
else
|
|
683
|
-
|
|
690
|
+
git_error_set(GIT_ERROR_OS, "could not remove directory '%s'", path);
|
|
684
691
|
|
|
685
692
|
return -1;
|
|
686
693
|
}
|
|
@@ -818,7 +825,7 @@ int git_futils_rmdir_r(
|
|
|
818
825
|
&fullpath, base, futils__rmdir_empty_parent, &data);
|
|
819
826
|
|
|
820
827
|
if (error == GIT_ITEROVER) {
|
|
821
|
-
|
|
828
|
+
git_error_clear();
|
|
822
829
|
error = 0;
|
|
823
830
|
}
|
|
824
831
|
|
|
@@ -851,12 +858,12 @@ static int cp_by_fd(int ifd, int ofd, bool close_fd_when_done)
|
|
|
851
858
|
error = p_write(ofd, buffer, len);
|
|
852
859
|
|
|
853
860
|
if (len < 0) {
|
|
854
|
-
|
|
861
|
+
git_error_set(GIT_ERROR_OS, "read error while copying file");
|
|
855
862
|
error = (int)len;
|
|
856
863
|
}
|
|
857
864
|
|
|
858
865
|
if (error < 0)
|
|
859
|
-
|
|
866
|
+
git_error_set(GIT_ERROR_OS, "write error while copying file");
|
|
860
867
|
|
|
861
868
|
if (close_fd_when_done) {
|
|
862
869
|
p_close(ifd);
|
|
@@ -901,20 +908,20 @@ static int cp_link(const char *from, const char *to, size_t link_size)
|
|
|
901
908
|
char *link_data;
|
|
902
909
|
size_t alloc_size;
|
|
903
910
|
|
|
904
|
-
|
|
911
|
+
GIT_ERROR_CHECK_ALLOC_ADD(&alloc_size, link_size, 1);
|
|
905
912
|
link_data = git__malloc(alloc_size);
|
|
906
|
-
|
|
913
|
+
GIT_ERROR_CHECK_ALLOC(link_data);
|
|
907
914
|
|
|
908
915
|
read_len = p_readlink(from, link_data, link_size);
|
|
909
916
|
if (read_len != (ssize_t)link_size) {
|
|
910
|
-
|
|
917
|
+
git_error_set(GIT_ERROR_OS, "failed to read symlink data for '%s'", from);
|
|
911
918
|
error = -1;
|
|
912
919
|
}
|
|
913
920
|
else {
|
|
914
921
|
link_data[read_len] = '\0';
|
|
915
922
|
|
|
916
923
|
if (p_symlink(link_data, to) < 0) {
|
|
917
|
-
|
|
924
|
+
git_error_set(GIT_ERROR_OS, "could not symlink '%s' as '%s'",
|
|
918
925
|
link_data, to);
|
|
919
926
|
error = -1;
|
|
920
927
|
}
|
|
@@ -977,7 +984,7 @@ static int _cp_r_callback(void *ref, git_buf *from)
|
|
|
977
984
|
else if (error != GIT_ENOTFOUND)
|
|
978
985
|
return error;
|
|
979
986
|
else {
|
|
980
|
-
|
|
987
|
+
git_error_clear();
|
|
981
988
|
error = 0;
|
|
982
989
|
}
|
|
983
990
|
|
|
@@ -1010,7 +1017,7 @@ static int _cp_r_callback(void *ref, git_buf *from)
|
|
|
1010
1017
|
return 0;
|
|
1011
1018
|
|
|
1012
1019
|
if (p_unlink(info->to.ptr) < 0) {
|
|
1013
|
-
|
|
1020
|
+
git_error_set(GIT_ERROR_OS, "cannot overwrite existing file '%s'",
|
|
1014
1021
|
info->to.ptr);
|
|
1015
1022
|
return GIT_EEXISTS;
|
|
1016
1023
|
}
|
|
@@ -1030,7 +1037,7 @@ static int _cp_r_callback(void *ref, git_buf *from)
|
|
|
1030
1037
|
/* make symlink or regular file */
|
|
1031
1038
|
if (info->flags & GIT_CPDIR_LINK_FILES) {
|
|
1032
1039
|
if ((error = p_link(from->ptr, info->to.ptr)) < 0)
|
|
1033
|
-
|
|
1040
|
+
git_error_set(GIT_ERROR_OS, "failed to link '%s'", from->ptr);
|
|
1034
1041
|
} else if (S_ISLNK(from_st.st_mode)) {
|
|
1035
1042
|
error = cp_link(from->ptr, info->to.ptr, (size_t)from_st.st_size);
|
|
1036
1043
|
} else {
|
|
@@ -1103,7 +1110,7 @@ int git_futils_filestamp_check(
|
|
|
1103
1110
|
#if defined(GIT_USE_NSEC)
|
|
1104
1111
|
stamp->mtime.tv_nsec == st.st_mtime_nsec &&
|
|
1105
1112
|
#endif
|
|
1106
|
-
stamp->size == (
|
|
1113
|
+
stamp->size == (uint64_t)st.st_size &&
|
|
1107
1114
|
stamp->ino == (unsigned int)st.st_ino)
|
|
1108
1115
|
return 0;
|
|
1109
1116
|
|
|
@@ -1111,7 +1118,7 @@ int git_futils_filestamp_check(
|
|
|
1111
1118
|
#if defined(GIT_USE_NSEC)
|
|
1112
1119
|
stamp->mtime.tv_nsec = st.st_mtime_nsec;
|
|
1113
1120
|
#endif
|
|
1114
|
-
stamp->size = (
|
|
1121
|
+
stamp->size = (uint64_t)st.st_size;
|
|
1115
1122
|
stamp->ino = (unsigned int)st.st_ino;
|
|
1116
1123
|
|
|
1117
1124
|
return 1;
|
|
@@ -1139,7 +1146,7 @@ void git_futils_filestamp_set_from_stat(
|
|
|
1139
1146
|
#else
|
|
1140
1147
|
stamp->mtime.tv_nsec = 0;
|
|
1141
1148
|
#endif
|
|
1142
|
-
stamp->size = (
|
|
1149
|
+
stamp->size = (uint64_t)st->st_size;
|
|
1143
1150
|
stamp->ino = (unsigned int)st->st_ino;
|
|
1144
1151
|
} else {
|
|
1145
1152
|
memset(stamp, 0, sizeof(*stamp));
|
|
@@ -1155,12 +1162,12 @@ int git_futils_fsync_dir(const char *path)
|
|
|
1155
1162
|
int fd, error = -1;
|
|
1156
1163
|
|
|
1157
1164
|
if ((fd = p_open(path, O_RDONLY)) < 0) {
|
|
1158
|
-
|
|
1165
|
+
git_error_set(GIT_ERROR_OS, "failed to open directory '%s' for fsync", path);
|
|
1159
1166
|
return -1;
|
|
1160
1167
|
}
|
|
1161
1168
|
|
|
1162
1169
|
if ((error = p_fsync(fd)) < 0)
|
|
1163
|
-
|
|
1170
|
+
git_error_set(GIT_ERROR_OS, "failed to fsync directory '%s'", path);
|
|
1164
1171
|
|
|
1165
1172
|
p_close(fd);
|
|
1166
1173
|
return error;
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
6
|
*/
|
|
7
|
-
#ifndef
|
|
8
|
-
#define
|
|
7
|
+
#ifndef INCLUDE_futils_h__
|
|
8
|
+
#define INCLUDE_futils_h__
|
|
9
9
|
|
|
10
10
|
#include "common.h"
|
|
11
11
|
|
|
@@ -255,7 +255,7 @@ extern int git_futils_truncate(const char *path, int mode);
|
|
|
255
255
|
/**
|
|
256
256
|
* Get the filesize in bytes of a file
|
|
257
257
|
*/
|
|
258
|
-
extern
|
|
258
|
+
extern int git_futils_filesize(uint64_t *out, git_file fd);
|
|
259
259
|
|
|
260
260
|
#define GIT_PERMS_IS_EXEC(MODE) (((MODE) & 0111) != 0)
|
|
261
261
|
#define GIT_PERMS_CANONICAL(MODE) (GIT_PERMS_IS_EXEC(MODE) ? 0755 : 0644)
|
|
@@ -290,7 +290,7 @@ extern mode_t git_futils_canonical_mode(mode_t raw_mode);
|
|
|
290
290
|
extern int git_futils_mmap_ro(
|
|
291
291
|
git_map *out,
|
|
292
292
|
git_file fd,
|
|
293
|
-
|
|
293
|
+
off64_t begin,
|
|
294
294
|
size_t len);
|
|
295
295
|
|
|
296
296
|
/**
|
|
@@ -330,7 +330,7 @@ extern int git_futils_fake_symlink(const char *new, const char *old);
|
|
|
330
330
|
*/
|
|
331
331
|
typedef struct {
|
|
332
332
|
struct timespec mtime;
|
|
333
|
-
|
|
333
|
+
uint64_t size;
|
|
334
334
|
unsigned int ino;
|
|
335
335
|
} git_futils_filestamp;
|
|
336
336
|
|
|
@@ -340,7 +340,7 @@ typedef struct {
|
|
|
340
340
|
* This function updates the file stamp to current data for the given path
|
|
341
341
|
* and returns 0 if the file is up-to-date relative to the prior setting,
|
|
342
342
|
* 1 if the file has been changed, or GIT_ENOTFOUND if the file doesn't
|
|
343
|
-
* exist. This will not call
|
|
343
|
+
* exist. This will not call git_error_set, so you must set the error if you
|
|
344
344
|
* plan to return an error.
|
|
345
345
|
*
|
|
346
346
|
* @param stamp File stamp to be checked
|
data/vendor/libgit2/src/global.c
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
#include "sysdir.h"
|
|
13
13
|
#include "filter.h"
|
|
14
14
|
#include "merge_driver.h"
|
|
15
|
-
#include "streams/
|
|
15
|
+
#include "streams/registry.h"
|
|
16
16
|
#include "streams/mbedtls.h"
|
|
17
17
|
#include "streams/openssl.h"
|
|
18
18
|
#include "thread-utils.h"
|
|
@@ -26,9 +26,23 @@
|
|
|
26
26
|
|
|
27
27
|
git_mutex git__mwindow_mutex;
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
typedef int (*git_global_init_fn)(void);
|
|
30
|
+
|
|
31
|
+
static git_global_init_fn git__init_callbacks[] = {
|
|
32
|
+
git_allocator_global_init,
|
|
33
|
+
git_hash_global_init,
|
|
34
|
+
git_sysdir_global_init,
|
|
35
|
+
git_filter_global_init,
|
|
36
|
+
git_merge_driver_global_init,
|
|
37
|
+
git_transport_ssh_global_init,
|
|
38
|
+
git_stream_registry_global_init,
|
|
39
|
+
git_openssl_stream_global_init,
|
|
40
|
+
git_mbedtls_stream_global_init,
|
|
41
|
+
git_mwindow_global_init
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
static git_global_shutdown_fn git__shutdown_callbacks[ARRAY_SIZE(git__init_callbacks)];
|
|
30
45
|
|
|
31
|
-
static git_global_shutdown_fn git__shutdown_callbacks[MAX_SHUTDOWN_CB];
|
|
32
46
|
static git_atomic git__n_shutdown_callbacks;
|
|
33
47
|
static git_atomic git__n_inits;
|
|
34
48
|
char *git__user_agent;
|
|
@@ -37,7 +51,7 @@ char *git__ssl_ciphers;
|
|
|
37
51
|
void git__on_shutdown(git_global_shutdown_fn callback)
|
|
38
52
|
{
|
|
39
53
|
int count = git_atomic_inc(&git__n_shutdown_callbacks);
|
|
40
|
-
assert(count <=
|
|
54
|
+
assert(count <= (int) ARRAY_SIZE(git__shutdown_callbacks) && count > 0);
|
|
41
55
|
git__shutdown_callbacks[count - 1] = callback;
|
|
42
56
|
}
|
|
43
57
|
|
|
@@ -52,6 +66,7 @@ static void git__global_state_cleanup(git_global_st *st)
|
|
|
52
66
|
|
|
53
67
|
static int init_common(void)
|
|
54
68
|
{
|
|
69
|
+
size_t i;
|
|
55
70
|
int ret;
|
|
56
71
|
|
|
57
72
|
/* Initialize the CRT debug allocator first, before our first malloc */
|
|
@@ -60,17 +75,10 @@ static int init_common(void)
|
|
|
60
75
|
git_win32__stack_init();
|
|
61
76
|
#endif
|
|
62
77
|
|
|
63
|
-
/* Initialize
|
|
64
|
-
|
|
65
|
-
(ret =
|
|
66
|
-
|
|
67
|
-
(ret = git_filter_global_init()) == 0 &&
|
|
68
|
-
(ret = git_merge_driver_global_init()) == 0 &&
|
|
69
|
-
(ret = git_transport_ssh_global_init()) == 0 &&
|
|
70
|
-
(ret = git_openssl_stream_global_init()) == 0 &&
|
|
71
|
-
(ret = git_curl_stream_global_init()) == 0 &&
|
|
72
|
-
(ret = git_mbedtls_stream_global_init()) == 0)
|
|
73
|
-
ret = git_mwindow_global_init();
|
|
78
|
+
/* Initialize subsystems that have global state */
|
|
79
|
+
for (i = 0; i < ARRAY_SIZE(git__init_callbacks); i++)
|
|
80
|
+
if ((ret = git__init_callbacks[i]()) != 0)
|
|
81
|
+
break;
|
|
74
82
|
|
|
75
83
|
GIT_MEMORY_BARRIER;
|
|
76
84
|
|
|
@@ -133,14 +141,21 @@ static void shutdown_common(void)
|
|
|
133
141
|
*/
|
|
134
142
|
#if defined(GIT_THREADS) && defined(GIT_WIN32)
|
|
135
143
|
|
|
136
|
-
static DWORD
|
|
144
|
+
static DWORD _fls_index;
|
|
137
145
|
static volatile LONG _mutex = 0;
|
|
138
146
|
|
|
147
|
+
static void WINAPI fls_free(void *st)
|
|
148
|
+
{
|
|
149
|
+
git__global_state_cleanup(st);
|
|
150
|
+
git__free(st);
|
|
151
|
+
}
|
|
152
|
+
|
|
139
153
|
static int synchronized_threads_init(void)
|
|
140
154
|
{
|
|
141
155
|
int error;
|
|
142
156
|
|
|
143
|
-
|
|
157
|
+
if ((_fls_index = FlsAlloc(fls_free)) == FLS_OUT_OF_INDEXES)
|
|
158
|
+
return -1;
|
|
144
159
|
|
|
145
160
|
git_threads_init();
|
|
146
161
|
|
|
@@ -182,9 +197,7 @@ int git_libgit2_shutdown(void)
|
|
|
182
197
|
if ((ret = git_atomic_dec(&git__n_inits)) == 0) {
|
|
183
198
|
shutdown_common();
|
|
184
199
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
TlsFree(_tls_index);
|
|
200
|
+
FlsFree(_fls_index);
|
|
188
201
|
git_mutex_free(&git__mwindow_mutex);
|
|
189
202
|
|
|
190
203
|
#if defined(GIT_MSVC_CRTDBG)
|
|
@@ -205,7 +218,7 @@ git_global_st *git__global_state(void)
|
|
|
205
218
|
|
|
206
219
|
assert(git_atomic_get(&git__n_inits) > 0);
|
|
207
220
|
|
|
208
|
-
if ((ptr =
|
|
221
|
+
if ((ptr = FlsGetValue(_fls_index)) != NULL)
|
|
209
222
|
return ptr;
|
|
210
223
|
|
|
211
224
|
ptr = git__calloc(1, sizeof(git_global_st));
|
|
@@ -214,43 +227,10 @@ git_global_st *git__global_state(void)
|
|
|
214
227
|
|
|
215
228
|
git_buf_init(&ptr->error_buf, 0);
|
|
216
229
|
|
|
217
|
-
|
|
230
|
+
FlsSetValue(_fls_index, ptr);
|
|
218
231
|
return ptr;
|
|
219
232
|
}
|
|
220
233
|
|
|
221
|
-
/**
|
|
222
|
-
* Free the TLS data associated with this thread.
|
|
223
|
-
* This should only be used by the thread as it
|
|
224
|
-
* is exiting.
|
|
225
|
-
*/
|
|
226
|
-
void git__free_tls_data(void)
|
|
227
|
-
{
|
|
228
|
-
void *ptr = TlsGetValue(_tls_index);
|
|
229
|
-
if (!ptr)
|
|
230
|
-
return;
|
|
231
|
-
|
|
232
|
-
git__global_state_cleanup(ptr);
|
|
233
|
-
git__free(ptr);
|
|
234
|
-
TlsSetValue(_tls_index, NULL);
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
BOOL WINAPI DllMain(HINSTANCE hInstDll, DWORD fdwReason, LPVOID lpvReserved)
|
|
238
|
-
{
|
|
239
|
-
GIT_UNUSED(hInstDll);
|
|
240
|
-
GIT_UNUSED(lpvReserved);
|
|
241
|
-
|
|
242
|
-
/* This is how Windows lets us know our thread is being shut down */
|
|
243
|
-
if (fdwReason == DLL_THREAD_DETACH) {
|
|
244
|
-
git__free_tls_data();
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/*
|
|
248
|
-
* Windows pays attention to this during library loading. We don't do anything
|
|
249
|
-
* so we trivially succeed.
|
|
250
|
-
*/
|
|
251
|
-
return TRUE;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
234
|
#elif defined(GIT_THREADS) && defined(_POSIX_THREADS)
|
|
255
235
|
|
|
256
236
|
static pthread_key_t _tls_key;
|
data/vendor/libgit2/src/global.h
CHANGED
|
@@ -35,8 +35,6 @@ typedef void (*git_global_shutdown_fn)(void);
|
|
|
35
35
|
|
|
36
36
|
extern void git__on_shutdown(git_global_shutdown_fn callback);
|
|
37
37
|
|
|
38
|
-
extern void git__free_tls_data(void);
|
|
39
|
-
|
|
40
38
|
extern const char *git_libgit2__user_agent(void);
|
|
41
39
|
extern const char *git_libgit2__ssl_ciphers(void);
|
|
42
40
|
|