rugged 0.27.10 → 0.27.10.1
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 +0 -1
- data/vendor/libgit2/CMakeLists.txt +54 -98
- data/vendor/libgit2/COPYING +0 -28
- data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +1 -15
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +8 -9
- data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +0 -6
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -2
- data/vendor/libgit2/deps/http-parser/{COPYING → LICENSE-MIT} +0 -0
- data/vendor/libgit2/deps/http-parser/http_parser.c +6 -11
- data/vendor/libgit2/deps/regex/CMakeLists.txt +2 -0
- data/vendor/libgit2/deps/regex/config.h +7 -0
- data/vendor/libgit2/deps/regex/regcomp.c +3857 -0
- data/vendor/libgit2/deps/regex/regex.c +92 -0
- data/vendor/libgit2/deps/regex/regex.h +582 -0
- data/vendor/libgit2/deps/regex/regex_internal.c +1744 -0
- data/vendor/libgit2/deps/regex/regex_internal.h +819 -0
- data/vendor/libgit2/deps/regex/regexec.c +4369 -0
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +0 -1
- data/vendor/libgit2/deps/zlib/adler32.c +7 -0
- data/vendor/libgit2/deps/zlib/crc32.c +7 -0
- data/vendor/libgit2/include/git2.h +0 -5
- data/vendor/libgit2/include/git2/annotated_commit.h +0 -9
- data/vendor/libgit2/include/git2/attr.h +20 -38
- data/vendor/libgit2/include/git2/blame.h +25 -42
- data/vendor/libgit2/include/git2/blob.h +13 -45
- data/vendor/libgit2/include/git2/branch.h +1 -1
- data/vendor/libgit2/include/git2/buffer.h +16 -22
- data/vendor/libgit2/include/git2/checkout.h +32 -65
- data/vendor/libgit2/include/git2/cherrypick.h +7 -9
- data/vendor/libgit2/include/git2/clone.h +10 -12
- data/vendor/libgit2/include/git2/commit.h +3 -53
- data/vendor/libgit2/include/git2/common.h +8 -60
- data/vendor/libgit2/include/git2/config.h +19 -30
- data/vendor/libgit2/include/git2/describe.h +9 -32
- data/vendor/libgit2/include/git2/diff.h +156 -208
- data/vendor/libgit2/include/git2/errors.h +46 -54
- data/vendor/libgit2/include/git2/filter.h +0 -8
- data/vendor/libgit2/include/git2/ignore.h +2 -2
- data/vendor/libgit2/include/git2/index.h +52 -74
- data/vendor/libgit2/include/git2/indexer.h +6 -76
- data/vendor/libgit2/include/git2/inttypes.h +309 -0
- data/vendor/libgit2/include/git2/merge.h +18 -35
- data/vendor/libgit2/include/git2/net.h +5 -0
- data/vendor/libgit2/include/git2/notes.h +1 -1
- data/vendor/libgit2/include/git2/object.h +29 -17
- data/vendor/libgit2/include/git2/odb.h +11 -12
- data/vendor/libgit2/include/git2/odb_backend.h +9 -10
- data/vendor/libgit2/include/git2/oid.h +2 -2
- data/vendor/libgit2/include/git2/pack.h +3 -14
- data/vendor/libgit2/include/git2/proxy.h +8 -14
- data/vendor/libgit2/include/git2/rebase.h +6 -53
- data/vendor/libgit2/include/git2/refs.h +15 -33
- data/vendor/libgit2/include/git2/refspec.h +0 -17
- data/vendor/libgit2/include/git2/remote.h +24 -123
- data/vendor/libgit2/include/git2/repository.h +39 -76
- data/vendor/libgit2/include/git2/revert.h +4 -6
- 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 +12 -15
- data/vendor/libgit2/include/git2/status.h +20 -33
- data/vendor/libgit2/include/git2/submodule.h +12 -30
- 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/filter.h +6 -6
- data/vendor/libgit2/include/git2/sys/index.h +0 -3
- data/vendor/libgit2/include/git2/sys/mempack.h +35 -35
- data/vendor/libgit2/include/git2/sys/merge.h +4 -9
- data/vendor/libgit2/include/git2/sys/odb_backend.h +22 -66
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -76
- data/vendor/libgit2/include/git2/sys/repository.h +1 -5
- data/vendor/libgit2/include/git2/sys/stream.h +12 -92
- data/vendor/libgit2/include/git2/sys/time.h +31 -0
- data/vendor/libgit2/include/git2/sys/transport.h +83 -129
- data/vendor/libgit2/include/git2/tag.h +4 -13
- data/vendor/libgit2/include/git2/trace.h +2 -2
- data/vendor/libgit2/include/git2/transaction.h +0 -1
- data/vendor/libgit2/include/git2/transport.h +311 -11
- data/vendor/libgit2/include/git2/tree.h +4 -4
- data/vendor/libgit2/include/git2/types.h +111 -33
- data/vendor/libgit2/include/git2/version.h +4 -4
- data/vendor/libgit2/include/git2/worktree.h +13 -48
- data/vendor/libgit2/libgit2.pc.in +13 -0
- data/vendor/libgit2/src/CMakeLists.txt +164 -96
- data/vendor/libgit2/src/annotated_commit.c +8 -15
- data/vendor/libgit2/src/apply.c +31 -537
- data/vendor/libgit2/src/apply.h +1 -3
- data/vendor/libgit2/src/array.h +2 -2
- data/vendor/libgit2/src/attr.c +75 -81
- data/vendor/libgit2/src/attr_file.c +121 -207
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +53 -51
- data/vendor/libgit2/src/attrcache.h +1 -2
- data/vendor/libgit2/src/blame.c +20 -47
- data/vendor/libgit2/src/blame.h +1 -2
- data/vendor/libgit2/src/blame_git.c +20 -37
- data/vendor/libgit2/src/blob.c +42 -128
- data/vendor/libgit2/src/blob.h +2 -19
- data/vendor/libgit2/src/branch.c +43 -67
- data/vendor/libgit2/src/buf_text.c +6 -7
- data/vendor/libgit2/src/buffer.c +57 -69
- data/vendor/libgit2/src/buffer.h +1 -1
- data/vendor/libgit2/src/cache.c +45 -38
- data/vendor/libgit2/src/cache.h +3 -3
- data/vendor/libgit2/src/cc-compat.h +3 -20
- data/vendor/libgit2/src/checkout.c +90 -109
- data/vendor/libgit2/src/cherrypick.c +9 -15
- data/vendor/libgit2/src/clone.c +27 -49
- data/vendor/libgit2/src/clone.h +0 -4
- data/vendor/libgit2/src/commit.c +49 -117
- data/vendor/libgit2/src/commit.h +0 -7
- data/vendor/libgit2/src/commit_list.c +78 -30
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +91 -27
- data/vendor/libgit2/src/config.c +176 -194
- data/vendor/libgit2/src/config.h +20 -8
- data/vendor/libgit2/src/config_cache.c +35 -41
- data/vendor/libgit2/src/config_file.c +753 -439
- data/vendor/libgit2/src/config_file.h +73 -0
- data/vendor/libgit2/src/config_parse.c +63 -114
- data/vendor/libgit2/src/config_parse.h +16 -17
- data/vendor/libgit2/src/crlf.c +190 -219
- data/vendor/libgit2/src/delta.c +18 -25
- data/vendor/libgit2/src/describe.c +41 -42
- data/vendor/libgit2/src/diff.c +68 -53
- data/vendor/libgit2/src/diff.h +1 -2
- data/vendor/libgit2/src/diff_driver.c +49 -47
- data/vendor/libgit2/src/diff_file.c +17 -19
- data/vendor/libgit2/src/diff_file.h +1 -1
- data/vendor/libgit2/src/diff_generate.c +106 -162
- 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 +30 -42
- data/vendor/libgit2/src/diff_stats.c +7 -22
- data/vendor/libgit2/src/diff_tform.c +16 -16
- data/vendor/libgit2/src/diff_xdiff.c +3 -15
- data/vendor/libgit2/src/errors.c +39 -51
- data/vendor/libgit2/src/features.h.in +3 -11
- data/vendor/libgit2/src/fetch.c +5 -10
- data/vendor/libgit2/src/fetchhead.c +17 -17
- data/vendor/libgit2/src/filebuf.c +36 -32
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/{futils.c → fileops.c} +73 -80
- data/vendor/libgit2/src/{futils.h → fileops.h} +6 -6
- data/vendor/libgit2/src/filter.c +38 -46
- data/vendor/libgit2/src/filter.h +10 -0
- data/vendor/libgit2/src/fnmatch.c +248 -0
- data/vendor/libgit2/src/fnmatch.h +48 -0
- data/vendor/libgit2/src/global.c +63 -48
- data/vendor/libgit2/src/global.h +2 -0
- data/vendor/libgit2/src/hash.c +0 -61
- data/vendor/libgit2/src/hash.h +19 -20
- data/vendor/libgit2/src/hash/hash_collisiondetect.h +47 -0
- data/vendor/libgit2/src/hash/{sha1/common_crypto.c → hash_common_crypto.h} +17 -17
- data/vendor/libgit2/src/hash/{sha1/generic.c → hash_generic.c} +10 -22
- data/vendor/libgit2/src/hash/{sha1/generic.h → hash_generic.h} +10 -4
- data/vendor/libgit2/src/hash/hash_openssl.h +59 -0
- data/vendor/libgit2/src/hash/{sha1/win32.c → hash_win32.c} +37 -47
- data/vendor/libgit2/src/hash/{sha1/win32.h → hash_win32.h} +19 -6
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/sha1.c +3 -14
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/sha1.h +0 -0
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/ubc_check.c +0 -0
- data/vendor/libgit2/src/hash/{sha1/sha1dc → sha1dc}/ubc_check.h +0 -0
- data/vendor/libgit2/src/hashsig.c +5 -5
- data/vendor/libgit2/src/idxmap.c +61 -107
- data/vendor/libgit2/src/idxmap.h +31 -153
- data/vendor/libgit2/src/ignore.c +47 -43
- data/vendor/libgit2/src/index.c +232 -337
- data/vendor/libgit2/src/index.h +1 -17
- data/vendor/libgit2/src/indexer.c +175 -346
- data/vendor/libgit2/src/integer.h +26 -71
- data/vendor/libgit2/src/iterator.c +70 -142
- data/vendor/libgit2/src/iterator.h +0 -15
- data/vendor/libgit2/src/khash.h +1 -3
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +100 -144
- data/vendor/libgit2/src/merge_driver.c +11 -11
- data/vendor/libgit2/src/merge_file.c +2 -2
- data/vendor/libgit2/src/mwindow.c +29 -24
- data/vendor/libgit2/src/mwindow.h +4 -4
- data/vendor/libgit2/src/netops.c +156 -55
- data/vendor/libgit2/src/netops.h +23 -3
- data/vendor/libgit2/src/notes.c +11 -16
- data/vendor/libgit2/src/object.c +69 -120
- data/vendor/libgit2/src/object.h +9 -22
- data/vendor/libgit2/src/object_api.c +8 -8
- data/vendor/libgit2/src/odb.c +93 -116
- data/vendor/libgit2/src/odb.h +7 -8
- data/vendor/libgit2/src/odb_loose.c +55 -62
- data/vendor/libgit2/src/odb_mempack.c +34 -21
- data/vendor/libgit2/src/odb_pack.c +14 -18
- data/vendor/libgit2/src/offmap.c +35 -53
- data/vendor/libgit2/src/offmap.h +21 -108
- data/vendor/libgit2/src/oid.c +7 -12
- data/vendor/libgit2/src/oidmap.c +47 -49
- data/vendor/libgit2/src/oidmap.h +24 -101
- data/vendor/libgit2/src/pack-objects.c +87 -88
- data/vendor/libgit2/src/pack-objects.h +8 -2
- data/vendor/libgit2/src/pack.c +101 -99
- data/vendor/libgit2/src/pack.h +19 -17
- data/vendor/libgit2/src/parse.c +0 -10
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +4 -4
- data/vendor/libgit2/src/patch_generate.c +20 -20
- data/vendor/libgit2/src/patch_parse.c +63 -151
- data/vendor/libgit2/src/path.c +104 -117
- data/vendor/libgit2/src/path.h +71 -3
- data/vendor/libgit2/src/pathspec.c +19 -19
- data/vendor/libgit2/src/pool.c +22 -26
- data/vendor/libgit2/src/pool.h +7 -7
- data/vendor/libgit2/src/posix.c +10 -10
- data/vendor/libgit2/src/posix.h +1 -12
- data/vendor/libgit2/src/proxy.c +3 -8
- data/vendor/libgit2/src/push.c +31 -37
- data/vendor/libgit2/src/push.h +1 -2
- data/vendor/libgit2/src/rebase.c +59 -115
- data/vendor/libgit2/src/refdb.c +3 -15
- data/vendor/libgit2/src/refdb_fs.c +254 -381
- data/vendor/libgit2/src/reflog.c +15 -13
- data/vendor/libgit2/src/refs.c +88 -118
- data/vendor/libgit2/src/refs.h +3 -5
- data/vendor/libgit2/src/refspec.c +37 -56
- data/vendor/libgit2/src/refspec.h +1 -1
- data/vendor/libgit2/src/remote.c +215 -266
- data/vendor/libgit2/src/remote.h +2 -11
- data/vendor/libgit2/src/repository.c +225 -280
- data/vendor/libgit2/src/repository.h +40 -52
- data/vendor/libgit2/src/reset.c +8 -8
- data/vendor/libgit2/src/revert.c +9 -14
- data/vendor/libgit2/src/revparse.c +48 -47
- data/vendor/libgit2/src/revwalk.c +57 -120
- data/vendor/libgit2/src/revwalk.h +1 -22
- data/vendor/libgit2/src/settings.c +10 -47
- data/vendor/libgit2/src/signature.c +11 -11
- data/vendor/libgit2/src/sortedcache.c +36 -22
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +99 -125
- data/vendor/libgit2/src/status.c +22 -28
- data/vendor/libgit2/src/stream.h +2 -17
- data/vendor/libgit2/src/streams/curl.c +385 -0
- data/vendor/libgit2/src/{allocators/stdalloc.h → streams/curl.h} +5 -5
- data/vendor/libgit2/src/streams/openssl.c +114 -224
- data/vendor/libgit2/src/streams/openssl.h +108 -4
- data/vendor/libgit2/src/streams/socket.c +30 -55
- data/vendor/libgit2/src/streams/stransport.c +32 -57
- data/vendor/libgit2/src/streams/stransport.h +0 -5
- data/vendor/libgit2/src/streams/tls.c +19 -50
- data/vendor/libgit2/src/streams/tls.h +4 -12
- data/vendor/libgit2/src/strmap.c +74 -47
- data/vendor/libgit2/src/strmap.h +33 -108
- data/vendor/libgit2/src/submodule.c +216 -272
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +19 -29
- data/vendor/libgit2/src/tag.c +28 -41
- data/vendor/libgit2/src/tag.h +1 -2
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +3 -3
- data/vendor/libgit2/src/trailer.c +38 -52
- data/vendor/libgit2/src/transaction.c +29 -30
- data/vendor/libgit2/src/transport.c +5 -5
- data/vendor/libgit2/src/transports/auth.c +11 -15
- data/vendor/libgit2/src/transports/auth.h +3 -10
- data/vendor/libgit2/src/transports/auth_negotiate.c +18 -33
- data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
- data/vendor/libgit2/src/transports/cred.c +24 -24
- data/vendor/libgit2/src/{allocators/win32_crtdbg.h → transports/cred.h} +4 -5
- data/vendor/libgit2/src/transports/git.c +31 -26
- data/vendor/libgit2/src/transports/http.c +348 -881
- data/vendor/libgit2/src/transports/http.h +0 -2
- data/vendor/libgit2/src/transports/local.c +35 -35
- data/vendor/libgit2/src/transports/smart.c +47 -70
- data/vendor/libgit2/src/transports/smart.h +4 -3
- data/vendor/libgit2/src/transports/smart_pkt.c +40 -43
- data/vendor/libgit2/src/transports/smart_protocol.c +116 -96
- data/vendor/libgit2/src/transports/ssh.c +66 -77
- data/vendor/libgit2/src/transports/winhttp.c +314 -318
- data/vendor/libgit2/src/tree-cache.c +12 -19
- data/vendor/libgit2/src/tree.c +142 -103
- data/vendor/libgit2/src/tree.h +12 -1
- data/vendor/libgit2/src/unix/map.c +3 -3
- data/vendor/libgit2/src/unix/posix.h +11 -1
- data/vendor/libgit2/src/userdiff.h +1 -3
- data/vendor/libgit2/src/util.c +56 -70
- data/vendor/libgit2/src/util.h +156 -28
- data/vendor/libgit2/src/vector.c +4 -4
- data/vendor/libgit2/src/win32/dir.c +3 -3
- data/vendor/libgit2/src/win32/findfile.c +3 -3
- data/vendor/libgit2/src/win32/map.c +11 -9
- data/vendor/libgit2/src/win32/msvc-compat.h +0 -6
- data/vendor/libgit2/src/win32/path_w32.c +9 -113
- data/vendor/libgit2/src/win32/path_w32.h +29 -18
- data/vendor/libgit2/src/win32/posix.h +4 -1
- data/vendor/libgit2/src/win32/posix_w32.c +45 -70
- data/vendor/libgit2/src/win32/precompiled.h +2 -0
- data/vendor/libgit2/src/win32/thread.c +10 -5
- data/vendor/libgit2/src/win32/w32_buffer.c +5 -9
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -3
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +75 -26
- data/vendor/libgit2/src/win32/w32_stack.c +11 -6
- data/vendor/libgit2/src/win32/w32_stack.h +3 -3
- data/vendor/libgit2/src/win32/w32_util.c +64 -27
- data/vendor/libgit2/src/win32/w32_util.h +49 -5
- data/vendor/libgit2/src/worktree.c +60 -95
- data/vendor/libgit2/src/worktree.h +0 -2
- data/vendor/libgit2/src/xdiff/xdiffi.c +5 -7
- data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
- data/vendor/libgit2/src/xdiff/xmerge.c +15 -27
- data/vendor/libgit2/src/xdiff/xpatience.c +0 -3
- data/vendor/libgit2/src/zstream.c +4 -4
- metadata +33 -122
- data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +0 -28
- data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +0 -38
- data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +0 -37
- data/vendor/libgit2/cmake/Modules/FindmbedTLS.cmake +0 -93
- data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +0 -110
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +0 -53
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +0 -124
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +0 -66
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +0 -21
- data/vendor/libgit2/deps/ntlmclient/compat.h +0 -33
- data/vendor/libgit2/deps/ntlmclient/crypt.h +0 -64
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +0 -120
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +0 -18
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -145
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +0 -18
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +0 -130
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +0 -21
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +0 -1420
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +0 -174
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +0 -320
- data/vendor/libgit2/deps/ntlmclient/unicode.h +0 -36
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +0 -445
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +0 -201
- data/vendor/libgit2/deps/ntlmclient/utf8.h +0 -1257
- data/vendor/libgit2/deps/ntlmclient/util.c +0 -21
- data/vendor/libgit2/deps/ntlmclient/util.h +0 -14
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +0 -140
- data/vendor/libgit2/deps/pcre/COPYING +0 -5
- data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +0 -22
- data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +0 -17
- data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +0 -58
- data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +0 -29
- data/vendor/libgit2/deps/pcre/config.h.in +0 -57
- data/vendor/libgit2/deps/pcre/pcre.h +0 -641
- data/vendor/libgit2/deps/pcre/pcre_byte_order.c +0 -319
- data/vendor/libgit2/deps/pcre/pcre_chartables.c +0 -198
- data/vendor/libgit2/deps/pcre/pcre_compile.c +0 -9800
- data/vendor/libgit2/deps/pcre/pcre_config.c +0 -190
- data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +0 -3676
- data/vendor/libgit2/deps/pcre/pcre_exec.c +0 -7173
- data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +0 -245
- data/vendor/libgit2/deps/pcre/pcre_get.c +0 -669
- data/vendor/libgit2/deps/pcre/pcre_globals.c +0 -86
- data/vendor/libgit2/deps/pcre/pcre_internal.h +0 -2787
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +0 -11913
- data/vendor/libgit2/deps/pcre/pcre_maketables.c +0 -156
- data/vendor/libgit2/deps/pcre/pcre_newline.c +0 -210
- data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +0 -94
- data/vendor/libgit2/deps/pcre/pcre_printint.c +0 -834
- data/vendor/libgit2/deps/pcre/pcre_refcount.c +0 -92
- data/vendor/libgit2/deps/pcre/pcre_string_utils.c +0 -211
- data/vendor/libgit2/deps/pcre/pcre_study.c +0 -1686
- data/vendor/libgit2/deps/pcre/pcre_tables.c +0 -727
- data/vendor/libgit2/deps/pcre/pcre_ucd.c +0 -3644
- data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +0 -301
- data/vendor/libgit2/deps/pcre/pcre_version.c +0 -98
- data/vendor/libgit2/deps/pcre/pcre_xclass.c +0 -268
- data/vendor/libgit2/deps/pcre/pcreposix.c +0 -421
- data/vendor/libgit2/deps/pcre/pcreposix.h +0 -117
- data/vendor/libgit2/deps/pcre/ucp.h +0 -224
- data/vendor/libgit2/deps/winhttp/COPYING.GPL +0 -993
- data/vendor/libgit2/deps/winhttp/COPYING.LGPL +0 -502
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/apply.h +0 -149
- data/vendor/libgit2/include/git2/cert.h +0 -135
- data/vendor/libgit2/include/git2/cred.h +0 -308
- data/vendor/libgit2/include/git2/deprecated.h +0 -493
- data/vendor/libgit2/include/git2/mailmap.h +0 -115
- data/vendor/libgit2/include/git2/sys/alloc.h +0 -101
- data/vendor/libgit2/include/git2/sys/cred.h +0 -90
- data/vendor/libgit2/include/git2/sys/path.h +0 -64
- data/vendor/libgit2/src/alloc.c +0 -43
- data/vendor/libgit2/src/alloc.h +0 -40
- data/vendor/libgit2/src/allocators/stdalloc.c +0 -119
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
- data/vendor/libgit2/src/config_backend.h +0 -96
- data/vendor/libgit2/src/config_entries.c +0 -229
- data/vendor/libgit2/src/config_entries.h +0 -24
- data/vendor/libgit2/src/config_mem.c +0 -220
- data/vendor/libgit2/src/config_snapshot.c +0 -206
- data/vendor/libgit2/src/errors.h +0 -81
- data/vendor/libgit2/src/hash/sha1.h +0 -38
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +0 -48
- data/vendor/libgit2/src/hash/sha1/collisiondetect.h +0 -19
- data/vendor/libgit2/src/hash/sha1/common_crypto.h +0 -19
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +0 -46
- data/vendor/libgit2/src/hash/sha1/mbedtls.h +0 -19
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/openssl.h +0 -19
- data/vendor/libgit2/src/mailmap.c +0 -485
- data/vendor/libgit2/src/mailmap.h +0 -35
- data/vendor/libgit2/src/net.c +0 -184
- data/vendor/libgit2/src/net.h +0 -36
- data/vendor/libgit2/src/reader.c +0 -265
- data/vendor/libgit2/src/reader.h +0 -107
- data/vendor/libgit2/src/regexp.c +0 -221
- data/vendor/libgit2/src/regexp.h +0 -97
- data/vendor/libgit2/src/streams/mbedtls.c +0 -483
- data/vendor/libgit2/src/streams/mbedtls.h +0 -23
- data/vendor/libgit2/src/streams/registry.c +0 -118
- data/vendor/libgit2/src/streams/registry.h +0 -19
- data/vendor/libgit2/src/transports/auth_ntlm.c +0 -223
- data/vendor/libgit2/src/transports/auth_ntlm.h +0 -35
- data/vendor/libgit2/src/wildmatch.c +0 -320
- data/vendor/libgit2/src/wildmatch.h +0 -23
- data/vendor/libgit2/src/win32/w32_common.h +0 -39
@@ -32,6 +32,8 @@ static DWORD WINAPI git_win32__threadproc(LPVOID lpParameter)
|
|
32
32
|
|
33
33
|
thread->result = thread->proc(thread->param);
|
34
34
|
|
35
|
+
git__free_tls_data();
|
36
|
+
|
35
37
|
return CLEAN_THREAD_EXIT;
|
36
38
|
}
|
37
39
|
|
@@ -40,15 +42,15 @@ int git_threads_init(void)
|
|
40
42
|
HMODULE hModule = GetModuleHandleW(L"kernel32");
|
41
43
|
|
42
44
|
if (hModule) {
|
43
|
-
win32_srwlock_initialize = (win32_srwlock_fn)
|
45
|
+
win32_srwlock_initialize = (win32_srwlock_fn)
|
44
46
|
GetProcAddress(hModule, "InitializeSRWLock");
|
45
|
-
win32_srwlock_acquire_shared = (win32_srwlock_fn)
|
47
|
+
win32_srwlock_acquire_shared = (win32_srwlock_fn)
|
46
48
|
GetProcAddress(hModule, "AcquireSRWLockShared");
|
47
|
-
win32_srwlock_release_shared = (win32_srwlock_fn)
|
49
|
+
win32_srwlock_release_shared = (win32_srwlock_fn)
|
48
50
|
GetProcAddress(hModule, "ReleaseSRWLockShared");
|
49
|
-
win32_srwlock_acquire_exclusive = (win32_srwlock_fn)
|
51
|
+
win32_srwlock_acquire_exclusive = (win32_srwlock_fn)
|
50
52
|
GetProcAddress(hModule, "AcquireSRWLockExclusive");
|
51
|
-
win32_srwlock_release_exclusive = (win32_srwlock_fn)
|
53
|
+
win32_srwlock_release_exclusive = (win32_srwlock_fn)
|
52
54
|
GetProcAddress(hModule, "ReleaseSRWLockExclusive");
|
53
55
|
}
|
54
56
|
|
@@ -101,6 +103,9 @@ void git_thread_exit(void *value)
|
|
101
103
|
{
|
102
104
|
assert(GIT_GLOBAL->current_thread);
|
103
105
|
GIT_GLOBAL->current_thread->result = value;
|
106
|
+
|
107
|
+
git__free_tls_data();
|
108
|
+
|
104
109
|
ExitThread(CLEAN_THREAD_EXIT);
|
105
110
|
}
|
106
111
|
|
@@ -25,29 +25,25 @@ int git_buf_put_w(git_buf *buf, const wchar_t *string_w, size_t len_w)
|
|
25
25
|
int utf8_len, utf8_write_len;
|
26
26
|
size_t new_size;
|
27
27
|
|
28
|
-
if (!len_w)
|
28
|
+
if (!len_w)
|
29
29
|
return 0;
|
30
|
-
} else if (len_w > INT_MAX) {
|
31
|
-
git_error_set_oom();
|
32
|
-
return -1;
|
33
|
-
}
|
34
30
|
|
35
31
|
assert(string_w);
|
36
32
|
|
37
33
|
/* Measure the string necessary for conversion */
|
38
|
-
if ((utf8_len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, string_w,
|
34
|
+
if ((utf8_len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, string_w, len_w, NULL, 0, NULL, NULL)) == 0)
|
39
35
|
return 0;
|
40
36
|
|
41
37
|
assert(utf8_len > 0);
|
42
38
|
|
43
|
-
|
44
|
-
|
39
|
+
GITERR_CHECK_ALLOC_ADD(&new_size, buf->size, (size_t)utf8_len);
|
40
|
+
GITERR_CHECK_ALLOC_ADD(&new_size, new_size, 1);
|
45
41
|
|
46
42
|
if (git_buf_grow(buf, new_size) < 0)
|
47
43
|
return -1;
|
48
44
|
|
49
45
|
if ((utf8_write_len = WideCharToMultiByte(
|
50
|
-
CP_UTF8, WC_ERR_INVALID_CHARS, string_w,
|
46
|
+
CP_UTF8, WC_ERR_INVALID_CHARS, string_w, len_w, &buf->ptr[buf->size], utf8_len, NULL, NULL)) == 0)
|
51
47
|
return handle_wc_error();
|
52
48
|
|
53
49
|
assert(utf8_write_len == utf8_len);
|
@@ -254,11 +254,11 @@ int git_win32__crtdbg_stacktrace__dump(
|
|
254
254
|
bool b_quiet = IS_BIT_SET(opt, GIT_WIN32__CRTDBG_STACKTRACE__QUIET);
|
255
255
|
|
256
256
|
if (b_leaks_since_mark && b_leaks_total) {
|
257
|
-
|
257
|
+
giterr_set(GITERR_INVALID, "cannot combine LEAKS_SINCE_MARK and LEAKS_TOTAL.");
|
258
258
|
return GIT_ERROR;
|
259
259
|
}
|
260
260
|
if (!b_set_mark && !b_leaks_since_mark && !b_leaks_total) {
|
261
|
-
|
261
|
+
giterr_set(GITERR_INVALID, "nothing to do.");
|
262
262
|
return GIT_ERROR;
|
263
263
|
}
|
264
264
|
|
@@ -341,5 +341,4 @@ const char *git_win32__crtdbg_stacktrace(int skip, const char *file)
|
|
341
341
|
|
342
342
|
return result;
|
343
343
|
}
|
344
|
-
|
345
344
|
#endif
|
@@ -17,32 +17,6 @@
|
|
17
17
|
#include "git2/errors.h"
|
18
18
|
#include "strnlen.h"
|
19
19
|
|
20
|
-
/* MSVC CRTDBG memory leak reporting.
|
21
|
-
*
|
22
|
-
* We DO NOT use the "_CRTDBG_MAP_ALLOC" macro described in the MSVC
|
23
|
-
* documentation because all allocs/frees in libgit2 already go through
|
24
|
-
* the "git__" routines defined in this file. Simply using the normal
|
25
|
-
* reporting mechanism causes all leaks to be attributed to a routine
|
26
|
-
* here in util.h (ie, the actual call to calloc()) rather than the
|
27
|
-
* caller of git__calloc().
|
28
|
-
*
|
29
|
-
* Therefore, we declare a set of "git__crtdbg__" routines to replace
|
30
|
-
* the corresponding "git__" routines and re-define the "git__" symbols
|
31
|
-
* as macros. This allows us to get and report the file:line info of
|
32
|
-
* the real caller.
|
33
|
-
*
|
34
|
-
* We DO NOT replace the "git__free" routine because it needs to remain
|
35
|
-
* a function pointer because it is used as a function argument when
|
36
|
-
* setting up various structure "destructors".
|
37
|
-
*
|
38
|
-
* We also DO NOT use the "_CRTDBG_MAP_ALLOC" macro because it causes
|
39
|
-
* "free" to be remapped to "_free_dbg" and this causes problems for
|
40
|
-
* structures which define a field named "free".
|
41
|
-
*
|
42
|
-
* Finally, CRTDBG must be explicitly enabled and configured at program
|
43
|
-
* startup. See tests/main.c for an example.
|
44
|
-
*/
|
45
|
-
|
46
20
|
/**
|
47
21
|
* Initialize our memory leak tracking and de-dup data structures.
|
48
22
|
* This should ONLY be called by git_libgit2_init().
|
@@ -123,5 +97,80 @@ GIT_EXTERN(int) git_win32__crtdbg_stacktrace__dump(
|
|
123
97
|
*/
|
124
98
|
const char *git_win32__crtdbg_stacktrace(int skip, const char *file);
|
125
99
|
|
100
|
+
GIT_INLINE(void *) git__crtdbg__malloc(size_t len, const char *file, int line)
|
101
|
+
{
|
102
|
+
void *ptr = _malloc_dbg(len, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
|
103
|
+
if (!ptr) giterr_set_oom();
|
104
|
+
return ptr;
|
105
|
+
}
|
106
|
+
|
107
|
+
GIT_INLINE(void *) git__crtdbg__calloc(size_t nelem, size_t elsize, const char *file, int line)
|
108
|
+
{
|
109
|
+
void *ptr = _calloc_dbg(nelem, elsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
|
110
|
+
if (!ptr) giterr_set_oom();
|
111
|
+
return ptr;
|
112
|
+
}
|
113
|
+
|
114
|
+
GIT_INLINE(char *) git__crtdbg__strdup(const char *str, const char *file, int line)
|
115
|
+
{
|
116
|
+
char *ptr = _strdup_dbg(str, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
|
117
|
+
if (!ptr) giterr_set_oom();
|
118
|
+
return ptr;
|
119
|
+
}
|
120
|
+
|
121
|
+
GIT_INLINE(char *) git__crtdbg__strndup(const char *str, size_t n, const char *file, int line)
|
122
|
+
{
|
123
|
+
size_t length = 0, alloclength;
|
124
|
+
char *ptr;
|
125
|
+
|
126
|
+
length = p_strnlen(str, n);
|
127
|
+
|
128
|
+
if (GIT_ADD_SIZET_OVERFLOW(&alloclength, length, 1) ||
|
129
|
+
!(ptr = git__crtdbg__malloc(alloclength, file, line)))
|
130
|
+
return NULL;
|
131
|
+
|
132
|
+
if (length)
|
133
|
+
memcpy(ptr, str, length);
|
134
|
+
|
135
|
+
ptr[length] = '\0';
|
136
|
+
|
137
|
+
return ptr;
|
138
|
+
}
|
139
|
+
|
140
|
+
GIT_INLINE(char *) git__crtdbg__substrdup(const char *start, size_t n, const char *file, int line)
|
141
|
+
{
|
142
|
+
char *ptr;
|
143
|
+
size_t alloclen;
|
144
|
+
|
145
|
+
if (GIT_ADD_SIZET_OVERFLOW(&alloclen, n, 1) ||
|
146
|
+
!(ptr = git__crtdbg__malloc(alloclen, file, line)))
|
147
|
+
return NULL;
|
148
|
+
|
149
|
+
memcpy(ptr, start, n);
|
150
|
+
ptr[n] = '\0';
|
151
|
+
return ptr;
|
152
|
+
}
|
153
|
+
|
154
|
+
GIT_INLINE(void *) git__crtdbg__realloc(void *ptr, size_t size, const char *file, int line)
|
155
|
+
{
|
156
|
+
void *new_ptr = _realloc_dbg(ptr, size, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
|
157
|
+
if (!new_ptr) giterr_set_oom();
|
158
|
+
return new_ptr;
|
159
|
+
}
|
160
|
+
|
161
|
+
GIT_INLINE(void *) git__crtdbg__reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line)
|
162
|
+
{
|
163
|
+
size_t newsize;
|
164
|
+
|
165
|
+
return GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize) ?
|
166
|
+
NULL : _realloc_dbg(ptr, newsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
|
167
|
+
}
|
168
|
+
|
169
|
+
GIT_INLINE(void *) git__crtdbg__mallocarray(size_t nelem, size_t elsize, const char *file, int line)
|
170
|
+
{
|
171
|
+
return git__crtdbg__reallocarray(NULL, nelem, elsize, file, line);
|
172
|
+
}
|
173
|
+
|
174
|
+
|
126
175
|
#endif
|
127
176
|
#endif
|
@@ -13,6 +13,11 @@
|
|
13
13
|
#include "win32/posix.h"
|
14
14
|
#include "hash.h"
|
15
15
|
|
16
|
+
/**
|
17
|
+
* This is supposedly defined in WinBase.h (from Windows.h) but there were linker issues.
|
18
|
+
*/
|
19
|
+
USHORT WINAPI RtlCaptureStackBackTrace(ULONG, ULONG, PVOID*, PULONG);
|
20
|
+
|
16
21
|
static bool g_win32_stack_initialized = false;
|
17
22
|
static HANDLE g_win32_stack_process = INVALID_HANDLE_VALUE;
|
18
23
|
static git_win32__stack__aux_cb_alloc g_aux_cb_alloc = NULL;
|
@@ -50,7 +55,7 @@ void git_win32__stack_cleanup(void)
|
|
50
55
|
int git_win32__stack_capture(git_win32__stack__raw_data *pdata, int skip)
|
51
56
|
{
|
52
57
|
if (!g_win32_stack_initialized) {
|
53
|
-
|
58
|
+
giterr_set(GITERR_INVALID, "git_win32_stack not initialized.");
|
54
59
|
return GIT_ERROR;
|
55
60
|
}
|
56
61
|
|
@@ -76,7 +81,7 @@ int git_win32__stack_compare(
|
|
76
81
|
}
|
77
82
|
|
78
83
|
int git_win32__stack_format(
|
79
|
-
char *pbuf,
|
84
|
+
char *pbuf, int buf_len,
|
80
85
|
const git_win32__stack__raw_data *pdata,
|
81
86
|
const char *prefix, const char *suffix)
|
82
87
|
{
|
@@ -91,13 +96,13 @@ int git_win32__stack_format(
|
|
91
96
|
} s;
|
92
97
|
|
93
98
|
IMAGEHLP_LINE64 line;
|
94
|
-
|
99
|
+
int buf_used = 0;
|
95
100
|
unsigned int k;
|
96
101
|
char detail[MY_MAX_FILENAME * 2]; /* filename plus space for function name and formatting */
|
97
|
-
|
102
|
+
int detail_len;
|
98
103
|
|
99
104
|
if (!g_win32_stack_initialized) {
|
100
|
-
|
105
|
+
giterr_set(GITERR_INVALID, "git_win32_stack not initialized.");
|
101
106
|
return GIT_ERROR;
|
102
107
|
}
|
103
108
|
|
@@ -171,7 +176,7 @@ int git_win32__stack_format(
|
|
171
176
|
}
|
172
177
|
|
173
178
|
int git_win32__stack(
|
174
|
-
char * pbuf,
|
179
|
+
char * pbuf, int buf_len,
|
175
180
|
int skip,
|
176
181
|
const char *prefix, const char *suffix)
|
177
182
|
{
|
@@ -38,7 +38,7 @@ typedef void (*git_win32__stack__aux_cb_alloc)(unsigned int *aux_id);
|
|
38
38
|
* @param aux_msg A buffer where a formatted message should be written.
|
39
39
|
* @param aux_msg_len The size of the buffer.
|
40
40
|
*/
|
41
|
-
typedef void (*git_win32__stack__aux_cb_lookup)(unsigned int aux_id, char *aux_msg,
|
41
|
+
typedef void (*git_win32__stack__aux_cb_lookup)(unsigned int aux_id, char *aux_msg, unsigned int aux_msg_len);
|
42
42
|
|
43
43
|
/**
|
44
44
|
* Register an "aux" data provider to augment our C stacktrace data.
|
@@ -116,7 +116,7 @@ int git_win32__stack_compare(
|
|
116
116
|
* @param suffix String written after each frame; defaults to "\n".
|
117
117
|
*/
|
118
118
|
int git_win32__stack_format(
|
119
|
-
char *pbuf,
|
119
|
+
char *pbuf, int buf_len,
|
120
120
|
const git_win32__stack__raw_data *pdata,
|
121
121
|
const char *prefix, const char *suffix);
|
122
122
|
|
@@ -132,7 +132,7 @@ int git_win32__stack_format(
|
|
132
132
|
* @param suffix String written after each frame; defaults to "\n".
|
133
133
|
*/
|
134
134
|
int git_win32__stack(
|
135
|
-
char * pbuf,
|
135
|
+
char * pbuf, int buf_len,
|
136
136
|
int skip,
|
137
137
|
const char *prefix, const char *suffix);
|
138
138
|
|
@@ -68,7 +68,7 @@ int git_win32__set_hidden(const char *path, bool hidden)
|
|
68
68
|
newattrs = attrs & ~FILE_ATTRIBUTE_HIDDEN;
|
69
69
|
|
70
70
|
if (attrs != newattrs && !SetFileAttributesW(buf, newattrs)) {
|
71
|
-
|
71
|
+
giterr_set(GITERR_OS, "failed to %s hidden bit for '%s'",
|
72
72
|
hidden ? "set" : "unset", path);
|
73
73
|
return -1;
|
74
74
|
}
|
@@ -94,33 +94,70 @@ int git_win32__hidden(bool *out, const char *path)
|
|
94
94
|
return 0;
|
95
95
|
}
|
96
96
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
97
|
+
/**
|
98
|
+
* Removes any trailing backslashes from a path, except in the case of a drive
|
99
|
+
* letter path (C:\, D:\, etc.). This function cannot fail.
|
100
|
+
*
|
101
|
+
* @param path The path which should be trimmed.
|
102
|
+
* @return The length of the modified string (<= the input length)
|
103
|
+
*/
|
104
|
+
size_t git_win32__path_trim_end(wchar_t *str, size_t len)
|
101
105
|
{
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
if (git_win32_path_readlink_w(target, path) >= 0) {
|
114
|
-
st->st_mode = (st->st_mode & ~S_IFMT) | S_IFLNK;
|
115
|
-
|
116
|
-
/* st_size gets the UTF-8 length of the target name, in bytes,
|
117
|
-
* not counting the NULL terminator */
|
118
|
-
if ((st->st_size = git__utf16_to_8(NULL, 0, target)) < 0) {
|
119
|
-
git_error_set(GIT_ERROR_OS, "could not convert reparse point name for '%ls'", path);
|
120
|
-
return -1;
|
121
|
-
}
|
122
|
-
}
|
106
|
+
while (1) {
|
107
|
+
if (!len || str[len - 1] != L'\\')
|
108
|
+
break;
|
109
|
+
|
110
|
+
/* Don't trim backslashes from drive letter paths, which
|
111
|
+
* are 3 characters long and of the form C:\, D:\, etc. */
|
112
|
+
if (len == 3 && git_win32__isalpha(str[0]) && str[1] == ':')
|
113
|
+
break;
|
114
|
+
|
115
|
+
len--;
|
123
116
|
}
|
124
117
|
|
125
|
-
|
118
|
+
str[len] = L'\0';
|
119
|
+
|
120
|
+
return len;
|
121
|
+
}
|
122
|
+
|
123
|
+
/**
|
124
|
+
* Removes any of the following namespace prefixes from a path,
|
125
|
+
* if found: "\??\", "\\?\", "\\?\UNC\". This function cannot fail.
|
126
|
+
*
|
127
|
+
* @param path The path which should be converted.
|
128
|
+
* @return The length of the modified string (<= the input length)
|
129
|
+
*/
|
130
|
+
size_t git_win32__canonicalize_path(wchar_t *str, size_t len)
|
131
|
+
{
|
132
|
+
static const wchar_t dosdevices_prefix[] = L"\\\?\?\\";
|
133
|
+
static const wchar_t nt_prefix[] = L"\\\\?\\";
|
134
|
+
static const wchar_t unc_prefix[] = L"UNC\\";
|
135
|
+
size_t to_advance = 0;
|
136
|
+
|
137
|
+
/* "\??\" -- DOS Devices prefix */
|
138
|
+
if (len >= CONST_STRLEN(dosdevices_prefix) &&
|
139
|
+
!wcsncmp(str, dosdevices_prefix, CONST_STRLEN(dosdevices_prefix))) {
|
140
|
+
to_advance += CONST_STRLEN(dosdevices_prefix);
|
141
|
+
len -= CONST_STRLEN(dosdevices_prefix);
|
142
|
+
}
|
143
|
+
/* "\\?\" -- NT namespace prefix */
|
144
|
+
else if (len >= CONST_STRLEN(nt_prefix) &&
|
145
|
+
!wcsncmp(str, nt_prefix, CONST_STRLEN(nt_prefix))) {
|
146
|
+
to_advance += CONST_STRLEN(nt_prefix);
|
147
|
+
len -= CONST_STRLEN(nt_prefix);
|
148
|
+
}
|
149
|
+
|
150
|
+
/* "\??\UNC\", "\\?\UNC\" -- UNC prefix */
|
151
|
+
if (to_advance && len >= CONST_STRLEN(unc_prefix) &&
|
152
|
+
!wcsncmp(str + to_advance, unc_prefix, CONST_STRLEN(unc_prefix))) {
|
153
|
+
to_advance += CONST_STRLEN(unc_prefix);
|
154
|
+
len -= CONST_STRLEN(unc_prefix);
|
155
|
+
}
|
156
|
+
|
157
|
+
if (to_advance) {
|
158
|
+
memmove(str, str + to_advance, len * sizeof(wchar_t));
|
159
|
+
str[len] = L'\0';
|
160
|
+
}
|
161
|
+
|
162
|
+
return git_win32__path_trim_end(str, len);
|
126
163
|
}
|
@@ -59,10 +59,23 @@ extern int git_win32__set_hidden(const char *path, bool hidden);
|
|
59
59
|
*/
|
60
60
|
extern int git_win32__hidden(bool *hidden, const char *path);
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
62
|
+
/**
|
63
|
+
* Removes any trailing backslashes from a path, except in the case of a drive
|
64
|
+
* letter path (C:\, D:\, etc.). This function cannot fail.
|
65
|
+
*
|
66
|
+
* @param path The path which should be trimmed.
|
67
|
+
* @return The length of the modified string (<= the input length)
|
68
|
+
*/
|
69
|
+
size_t git_win32__path_trim_end(wchar_t *str, size_t len);
|
70
|
+
|
71
|
+
/**
|
72
|
+
* Removes any of the following namespace prefixes from a path,
|
73
|
+
* if found: "\??\", "\\?\", "\\?\UNC\". This function cannot fail.
|
74
|
+
*
|
75
|
+
* @param path The path which should be converted.
|
76
|
+
* @return The length of the modified string (<= the input length)
|
77
|
+
*/
|
78
|
+
size_t git_win32__canonicalize_path(wchar_t *str, size_t len);
|
66
79
|
|
67
80
|
/**
|
68
81
|
* Converts a FILETIME structure to a struct timespec.
|
@@ -120,7 +133,7 @@ GIT_INLINE(void) git_win32__stat_init(
|
|
120
133
|
st->st_uid = 0;
|
121
134
|
st->st_nlink = 1;
|
122
135
|
st->st_mode = mode;
|
123
|
-
st->st_size = ((
|
136
|
+
st->st_size = ((git_off_t)nFileSizeHigh << 32) + nFileSizeLow;
|
124
137
|
st->st_dev = _getdrive() - 1;
|
125
138
|
st->st_rdev = st->st_dev;
|
126
139
|
git_win32__filetime_to_timespec(&ftLastAccessTime, &(st->st_atim));
|
@@ -141,4 +154,35 @@ GIT_INLINE(void) git_win32__file_information_to_stat(
|
|
141
154
|
fileinfo->ftLastWriteTime);
|
142
155
|
}
|
143
156
|
|
157
|
+
GIT_INLINE(int) git_win32__file_attribute_to_stat(
|
158
|
+
struct stat *st,
|
159
|
+
const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
|
160
|
+
const wchar_t *path)
|
161
|
+
{
|
162
|
+
git_win32__stat_init(st,
|
163
|
+
attrdata->dwFileAttributes,
|
164
|
+
attrdata->nFileSizeHigh,
|
165
|
+
attrdata->nFileSizeLow,
|
166
|
+
attrdata->ftCreationTime,
|
167
|
+
attrdata->ftLastAccessTime,
|
168
|
+
attrdata->ftLastWriteTime);
|
169
|
+
|
170
|
+
if (attrdata->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && path) {
|
171
|
+
git_win32_path target;
|
172
|
+
|
173
|
+
if (git_win32_path_readlink_w(target, path) >= 0) {
|
174
|
+
st->st_mode = (st->st_mode & ~S_IFMT) | S_IFLNK;
|
175
|
+
|
176
|
+
/* st_size gets the UTF-8 length of the target name, in bytes,
|
177
|
+
* not counting the NULL terminator */
|
178
|
+
if ((st->st_size = git__utf16_to_8(NULL, 0, target)) < 0) {
|
179
|
+
giterr_set(GITERR_OS, "could not convert reparse point name for '%ls'", path);
|
180
|
+
return -1;
|
181
|
+
}
|
182
|
+
}
|
183
|
+
}
|
184
|
+
|
185
|
+
return 0;
|
186
|
+
}
|
187
|
+
|
144
188
|
#endif
|