rugged 0.28.4.1 → 1.0.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/README.md +2 -2
- data/ext/rugged/extconf.rb +3 -1
- data/ext/rugged/rugged.c +35 -31
- data/ext/rugged/rugged.h +13 -0
- data/ext/rugged/rugged_blob.c +11 -9
- data/ext/rugged/rugged_commit.c +17 -15
- data/ext/rugged/rugged_config.c +1 -1
- data/ext/rugged/rugged_diff.c +4 -26
- data/ext/rugged/rugged_index.c +4 -2
- data/ext/rugged/rugged_note.c +5 -3
- data/ext/rugged/rugged_object.c +57 -10
- data/ext/rugged/rugged_rebase.c +3 -1
- data/ext/rugged/rugged_remote.c +32 -8
- data/ext/rugged/rugged_repo.c +232 -17
- data/ext/rugged/rugged_tag.c +8 -6
- data/ext/rugged/rugged_tree.c +18 -16
- data/lib/rugged/commit.rb +1 -2
- data/lib/rugged/repository.rb +5 -6
- data/lib/rugged/submodule_collection.rb +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +39 -19
- data/vendor/libgit2/COPYING +28 -0
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +5 -1
- 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/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 +77 -0
- data/vendor/libgit2/cmake/Modules/SanitizeBool.cmake +20 -0
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +56 -0
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +127 -0
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +69 -0
- data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +23 -0
- data/vendor/libgit2/deps/ntlmclient/compat.h +55 -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 +1422 -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/zlib/adler32.c +0 -7
- data/vendor/libgit2/deps/zlib/crc32.c +0 -7
- data/vendor/libgit2/include/git2.h +2 -0
- data/vendor/libgit2/include/git2/apply.h +22 -2
- data/vendor/libgit2/include/git2/attr.h +23 -13
- data/vendor/libgit2/include/git2/blame.h +2 -2
- data/vendor/libgit2/include/git2/blob.h +44 -12
- data/vendor/libgit2/include/git2/branch.h +74 -57
- data/vendor/libgit2/include/git2/buffer.h +20 -14
- data/vendor/libgit2/include/git2/cert.h +135 -0
- data/vendor/libgit2/include/git2/checkout.h +46 -14
- data/vendor/libgit2/include/git2/cherrypick.h +3 -3
- data/vendor/libgit2/include/git2/clone.h +2 -2
- data/vendor/libgit2/include/git2/commit.h +23 -1
- data/vendor/libgit2/include/git2/common.h +15 -6
- data/vendor/libgit2/include/git2/config.h +12 -12
- data/vendor/libgit2/include/git2/cred_helpers.h +4 -42
- data/vendor/libgit2/include/git2/credential.h +314 -0
- data/vendor/libgit2/include/git2/credential_helpers.h +52 -0
- data/vendor/libgit2/include/git2/deprecated.h +321 -3
- data/vendor/libgit2/include/git2/describe.h +4 -4
- data/vendor/libgit2/include/git2/diff.h +16 -14
- data/vendor/libgit2/include/git2/errors.h +4 -2
- data/vendor/libgit2/include/git2/filter.h +8 -0
- data/vendor/libgit2/include/git2/index.h +2 -1
- data/vendor/libgit2/include/git2/indexer.h +48 -4
- data/vendor/libgit2/include/git2/merge.h +6 -10
- data/vendor/libgit2/include/git2/net.h +0 -5
- data/vendor/libgit2/include/git2/object.h +2 -14
- data/vendor/libgit2/include/git2/odb.h +3 -2
- data/vendor/libgit2/include/git2/odb_backend.h +5 -4
- data/vendor/libgit2/include/git2/oid.h +11 -6
- data/vendor/libgit2/include/git2/pack.h +12 -1
- data/vendor/libgit2/include/git2/proxy.h +6 -4
- data/vendor/libgit2/include/git2/rebase.h +46 -2
- data/vendor/libgit2/include/git2/refs.h +19 -0
- data/vendor/libgit2/include/git2/remote.h +40 -15
- data/vendor/libgit2/include/git2/repository.h +29 -6
- data/vendor/libgit2/include/git2/revert.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +7 -3
- data/vendor/libgit2/include/git2/stash.h +4 -4
- data/vendor/libgit2/include/git2/status.h +25 -16
- data/vendor/libgit2/include/git2/submodule.h +20 -3
- data/vendor/libgit2/include/git2/sys/alloc.h +9 -9
- data/vendor/libgit2/include/git2/sys/cred.h +15 -0
- data/vendor/libgit2/include/git2/sys/credential.h +90 -0
- data/vendor/libgit2/include/git2/sys/index.h +4 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +2 -1
- data/vendor/libgit2/include/git2/sys/merge.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +48 -4
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +164 -21
- data/vendor/libgit2/include/git2/sys/repository.h +17 -6
- data/vendor/libgit2/include/git2/sys/transport.h +4 -4
- data/vendor/libgit2/include/git2/tag.h +11 -2
- data/vendor/libgit2/include/git2/trace.h +2 -2
- data/vendor/libgit2/include/git2/transport.h +11 -340
- data/vendor/libgit2/include/git2/tree.h +5 -3
- data/vendor/libgit2/include/git2/types.h +4 -89
- data/vendor/libgit2/include/git2/version.h +5 -5
- data/vendor/libgit2/include/git2/worktree.h +5 -5
- data/vendor/libgit2/src/CMakeLists.txt +99 -236
- data/vendor/libgit2/src/alloc.c +2 -14
- data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +3 -4
- 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/apply.c +60 -30
- data/vendor/libgit2/src/attr.c +70 -64
- data/vendor/libgit2/src/attr_file.c +189 -96
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +48 -48
- data/vendor/libgit2/src/attrcache.h +2 -1
- data/vendor/libgit2/src/blame.c +17 -5
- data/vendor/libgit2/src/blame.h +1 -1
- data/vendor/libgit2/src/blame_git.c +21 -7
- data/vendor/libgit2/src/blob.c +81 -17
- data/vendor/libgit2/src/blob.h +2 -2
- data/vendor/libgit2/src/branch.c +60 -32
- data/vendor/libgit2/src/buffer.c +19 -7
- data/vendor/libgit2/src/buffer.h +1 -0
- data/vendor/libgit2/src/cache.c +33 -36
- data/vendor/libgit2/src/cache.h +1 -1
- data/vendor/libgit2/src/cc-compat.h +5 -0
- data/vendor/libgit2/src/checkout.c +26 -16
- data/vendor/libgit2/src/cherrypick.c +9 -3
- data/vendor/libgit2/src/clone.c +29 -7
- data/vendor/libgit2/src/clone.h +4 -0
- data/vendor/libgit2/src/commit.c +70 -22
- data/vendor/libgit2/src/commit.h +6 -0
- data/vendor/libgit2/src/commit_list.c +28 -76
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +3 -75
- data/vendor/libgit2/src/config.c +31 -40
- data/vendor/libgit2/src/config.h +7 -6
- data/vendor/libgit2/src/config_backend.h +12 -0
- data/vendor/libgit2/src/config_cache.c +39 -39
- data/vendor/libgit2/src/config_entries.c +69 -99
- data/vendor/libgit2/src/config_entries.h +1 -0
- data/vendor/libgit2/src/config_file.c +346 -380
- data/vendor/libgit2/src/config_mem.c +12 -16
- data/vendor/libgit2/src/config_parse.c +49 -29
- data/vendor/libgit2/src/config_parse.h +13 -12
- data/vendor/libgit2/src/config_snapshot.c +206 -0
- data/vendor/libgit2/src/crlf.c +14 -14
- data/vendor/libgit2/src/describe.c +21 -20
- data/vendor/libgit2/src/diff.c +43 -58
- data/vendor/libgit2/src/diff.h +4 -3
- data/vendor/libgit2/src/diff_driver.c +37 -38
- data/vendor/libgit2/src/diff_file.c +12 -10
- data/vendor/libgit2/src/diff_file.h +2 -2
- data/vendor/libgit2/src/diff_generate.c +148 -98
- data/vendor/libgit2/src/diff_generate.h +2 -2
- data/vendor/libgit2/src/diff_parse.c +1 -1
- data/vendor/libgit2/src/diff_print.c +25 -13
- data/vendor/libgit2/src/diff_stats.c +1 -1
- data/vendor/libgit2/src/diff_tform.c +11 -11
- data/vendor/libgit2/src/errors.c +21 -25
- data/vendor/libgit2/src/errors.h +81 -0
- data/vendor/libgit2/src/features.h.in +9 -2
- data/vendor/libgit2/src/fetch.c +7 -2
- data/vendor/libgit2/src/fetchhead.c +36 -4
- data/vendor/libgit2/src/filebuf.c +6 -10
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/filter.c +16 -8
- data/vendor/libgit2/src/{fileops.c → futils.c} +21 -17
- data/vendor/libgit2/src/{fileops.h → futils.h} +5 -5
- data/vendor/libgit2/src/global.c +12 -40
- data/vendor/libgit2/src/global.h +0 -2
- data/vendor/libgit2/src/hash.c +61 -0
- data/vendor/libgit2/src/hash.h +19 -21
- data/vendor/libgit2/src/hash/sha1.h +38 -0
- data/vendor/libgit2/src/hash/{hash_collisiondetect.h → sha1/collisiondetect.c} +14 -17
- data/vendor/libgit2/src/{sha1_lookup.h → hash/sha1/collisiondetect.h} +8 -8
- data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +15 -19
- 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 -14
- 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 -11
- data/vendor/libgit2/src/hash/{hash_openssl.h → sha1/openssl.c} +14 -18
- 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/{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
- data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +34 -24
- data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
- data/vendor/libgit2/src/hashsig.c +1 -1
- data/vendor/libgit2/src/idxmap.c +91 -65
- data/vendor/libgit2/src/idxmap.h +151 -15
- data/vendor/libgit2/src/ignore.c +32 -38
- data/vendor/libgit2/src/index.c +105 -83
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +71 -72
- data/vendor/libgit2/src/integer.h +39 -4
- data/vendor/libgit2/src/iterator.c +40 -35
- data/vendor/libgit2/src/iterator.h +8 -8
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +78 -51
- data/vendor/libgit2/src/merge.h +2 -2
- data/vendor/libgit2/src/merge_driver.c +5 -5
- data/vendor/libgit2/src/merge_file.c +1 -1
- data/vendor/libgit2/src/mwindow.c +18 -23
- data/vendor/libgit2/src/mwindow.h +4 -4
- data/vendor/libgit2/src/net.c +411 -0
- data/vendor/libgit2/src/net.h +57 -0
- data/vendor/libgit2/src/netops.c +6 -193
- data/vendor/libgit2/src/netops.h +1 -34
- data/vendor/libgit2/src/notes.c +8 -5
- data/vendor/libgit2/src/object.c +3 -3
- data/vendor/libgit2/src/object.h +2 -0
- data/vendor/libgit2/src/odb.c +41 -23
- data/vendor/libgit2/src/odb.h +3 -2
- data/vendor/libgit2/src/odb_loose.c +17 -10
- data/vendor/libgit2/src/odb_mempack.c +13 -24
- data/vendor/libgit2/src/odb_pack.c +4 -5
- data/vendor/libgit2/src/offmap.c +43 -55
- data/vendor/libgit2/src/offmap.h +102 -24
- data/vendor/libgit2/src/oid.c +19 -8
- data/vendor/libgit2/src/oidmap.c +39 -57
- data/vendor/libgit2/src/oidmap.h +99 -19
- data/vendor/libgit2/src/pack-objects.c +28 -33
- data/vendor/libgit2/src/pack-objects.h +1 -1
- data/vendor/libgit2/src/pack.c +117 -129
- data/vendor/libgit2/src/pack.h +15 -18
- data/vendor/libgit2/src/parse.c +10 -0
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +1 -1
- data/vendor/libgit2/src/patch_generate.c +2 -2
- data/vendor/libgit2/src/patch_parse.c +130 -33
- data/vendor/libgit2/src/path.c +43 -6
- data/vendor/libgit2/src/path.h +2 -0
- data/vendor/libgit2/src/pathspec.c +14 -14
- data/vendor/libgit2/src/pool.c +26 -22
- data/vendor/libgit2/src/pool.h +7 -7
- data/vendor/libgit2/src/posix.c +7 -7
- data/vendor/libgit2/src/posix.h +12 -1
- data/vendor/libgit2/src/proxy.c +7 -2
- data/vendor/libgit2/src/push.c +13 -7
- data/vendor/libgit2/src/reader.c +2 -2
- data/vendor/libgit2/src/rebase.c +87 -28
- data/vendor/libgit2/src/refdb.c +12 -0
- data/vendor/libgit2/src/refdb_fs.c +219 -167
- data/vendor/libgit2/src/reflog.c +11 -13
- data/vendor/libgit2/src/refs.c +39 -23
- data/vendor/libgit2/src/refs.h +8 -1
- data/vendor/libgit2/src/refspec.c +9 -16
- data/vendor/libgit2/src/regexp.c +221 -0
- data/vendor/libgit2/src/regexp.h +97 -0
- data/vendor/libgit2/src/remote.c +57 -55
- data/vendor/libgit2/src/remote.h +2 -2
- data/vendor/libgit2/src/repository.c +187 -154
- data/vendor/libgit2/src/repository.h +49 -40
- data/vendor/libgit2/src/revert.c +8 -3
- data/vendor/libgit2/src/revparse.c +18 -19
- data/vendor/libgit2/src/revwalk.c +72 -34
- data/vendor/libgit2/src/revwalk.h +20 -0
- data/vendor/libgit2/src/settings.c +13 -1
- data/vendor/libgit2/src/sortedcache.c +12 -26
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +47 -67
- data/vendor/libgit2/src/status.c +17 -11
- data/vendor/libgit2/src/streams/openssl.c +54 -2
- data/vendor/libgit2/src/streams/socket.c +2 -2
- data/vendor/libgit2/src/strmap.c +37 -84
- data/vendor/libgit2/src/strmap.h +105 -33
- data/vendor/libgit2/src/submodule.c +151 -126
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +11 -1
- data/vendor/libgit2/src/tag.c +10 -2
- data/vendor/libgit2/src/trace.c +1 -1
- data/vendor/libgit2/src/trace.h +3 -3
- data/vendor/libgit2/src/trailer.c +46 -32
- data/vendor/libgit2/src/transaction.c +10 -9
- data/vendor/libgit2/src/transports/auth.c +16 -15
- data/vendor/libgit2/src/transports/auth.h +18 -11
- data/vendor/libgit2/src/transports/auth_negotiate.c +64 -33
- 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 +38 -0
- data/vendor/libgit2/src/transports/credential.c +476 -0
- data/vendor/libgit2/src/transports/{cred_helpers.c → credential_helpers.c} +21 -8
- data/vendor/libgit2/src/transports/git.c +11 -16
- data/vendor/libgit2/src/transports/http.c +488 -1248
- data/vendor/libgit2/src/transports/http.h +4 -1
- data/vendor/libgit2/src/transports/httpclient.c +1549 -0
- data/vendor/libgit2/src/transports/httpclient.h +190 -0
- data/vendor/libgit2/src/transports/local.c +10 -10
- data/vendor/libgit2/src/transports/smart.c +19 -19
- data/vendor/libgit2/src/transports/smart.h +3 -3
- data/vendor/libgit2/src/transports/smart_pkt.c +1 -1
- data/vendor/libgit2/src/transports/smart_protocol.c +40 -64
- data/vendor/libgit2/src/transports/ssh.c +77 -59
- data/vendor/libgit2/src/transports/winhttp.c +272 -242
- data/vendor/libgit2/src/tree-cache.c +14 -7
- data/vendor/libgit2/src/tree.c +16 -26
- data/vendor/libgit2/src/unix/map.c +1 -1
- data/vendor/libgit2/src/unix/posix.h +2 -12
- data/vendor/libgit2/src/userdiff.h +3 -1
- data/vendor/libgit2/src/util.c +51 -53
- data/vendor/libgit2/src/util.h +16 -21
- data/vendor/libgit2/src/wildmatch.c +320 -0
- data/vendor/libgit2/src/wildmatch.h +23 -0
- data/vendor/libgit2/src/win32/map.c +3 -5
- data/vendor/libgit2/src/win32/path_w32.c +40 -3
- data/vendor/libgit2/src/win32/path_w32.h +15 -29
- data/vendor/libgit2/src/win32/posix.h +1 -4
- data/vendor/libgit2/src/win32/posix_w32.c +47 -5
- 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 +7 -3
- data/vendor/libgit2/src/win32/w32_common.h +39 -0
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +0 -93
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
- data/vendor/libgit2/src/win32/w32_stack.c +4 -9
- data/vendor/libgit2/src/win32/w32_stack.h +3 -3
- data/vendor/libgit2/src/win32/w32_util.c +31 -0
- data/vendor/libgit2/src/win32/w32_util.h +6 -32
- data/vendor/libgit2/src/worktree.c +79 -49
- data/vendor/libgit2/src/xdiff/xdiffi.c +1 -1
- data/vendor/libgit2/src/xdiff/xmerge.c +12 -0
- data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
- data/vendor/libgit2/src/zstream.c +5 -0
- data/vendor/libgit2/src/zstream.h +1 -0
- metadata +108 -41
- data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
- data/vendor/libgit2/deps/regex/COPYING +0 -502
- 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/fnmatch.c +0 -248
- data/vendor/libgit2/src/fnmatch.h +0 -48
- data/vendor/libgit2/src/sha1_lookup.c +0 -35
- data/vendor/libgit2/src/transports/cred.c +0 -390
@@ -47,7 +47,7 @@ extern int p_chdir(const char* path);
|
|
47
47
|
extern int p_chmod(const char* path, mode_t mode);
|
48
48
|
extern int p_rmdir(const char* path);
|
49
49
|
extern int p_access(const char* path, mode_t mode);
|
50
|
-
extern int p_ftruncate(int fd,
|
50
|
+
extern int p_ftruncate(int fd, off64_t size);
|
51
51
|
|
52
52
|
/* p_lstat is almost but not quite POSIX correct. Specifically, the use of
|
53
53
|
* ENOTDIR is wrong, in that it does not mean precisely that a non-directory
|
@@ -60,7 +60,4 @@ extern int p_lstat_posixly(const char *filename, struct stat *buf);
|
|
60
60
|
extern struct tm * p_localtime_r(const time_t *timer, struct tm *result);
|
61
61
|
extern struct tm * p_gmtime_r(const time_t *timer, struct tm *result);
|
62
62
|
|
63
|
-
/* Use the bundled regcomp */
|
64
|
-
#define p_regcomp regcomp
|
65
|
-
|
66
63
|
#endif
|
@@ -8,7 +8,7 @@
|
|
8
8
|
#include "common.h"
|
9
9
|
|
10
10
|
#include "../posix.h"
|
11
|
-
#include "../
|
11
|
+
#include "../futils.h"
|
12
12
|
#include "path.h"
|
13
13
|
#include "path_w32.h"
|
14
14
|
#include "utf-conv.h"
|
@@ -210,7 +210,7 @@ on_error:
|
|
210
210
|
* We now take a "git_off_t" rather than "long" because
|
211
211
|
* files may be longer than 2Gb.
|
212
212
|
*/
|
213
|
-
int p_ftruncate(int fd,
|
213
|
+
int p_ftruncate(int fd, off64_t size)
|
214
214
|
{
|
215
215
|
if (size < 0) {
|
216
216
|
errno = EINVAL;
|
@@ -251,9 +251,25 @@ int p_link(const char *old, const char *new)
|
|
251
251
|
|
252
252
|
GIT_INLINE(int) unlink_once(const wchar_t *path)
|
253
253
|
{
|
254
|
+
DWORD error;
|
255
|
+
|
254
256
|
if (DeleteFileW(path))
|
255
257
|
return 0;
|
256
258
|
|
259
|
+
if ((error = GetLastError()) == ERROR_ACCESS_DENIED) {
|
260
|
+
WIN32_FILE_ATTRIBUTE_DATA fdata;
|
261
|
+
if (!GetFileAttributesExW(path, GetFileExInfoStandard, &fdata) ||
|
262
|
+
!(fdata.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) ||
|
263
|
+
!(fdata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
|
264
|
+
goto out;
|
265
|
+
|
266
|
+
if (RemoveDirectoryW(path))
|
267
|
+
return 0;
|
268
|
+
}
|
269
|
+
|
270
|
+
out:
|
271
|
+
SetLastError(error);
|
272
|
+
|
257
273
|
if (last_error_retryable())
|
258
274
|
return GIT_RETRY;
|
259
275
|
|
@@ -398,18 +414,44 @@ int p_readlink(const char *path, char *buf, size_t bufsiz)
|
|
398
414
|
return (int)bufsiz;
|
399
415
|
}
|
400
416
|
|
417
|
+
static bool target_is_dir(const char *target, const char *path)
|
418
|
+
{
|
419
|
+
git_buf resolved = GIT_BUF_INIT;
|
420
|
+
git_win32_path resolved_w;
|
421
|
+
bool isdir = true;
|
422
|
+
|
423
|
+
if (git_path_is_absolute(target))
|
424
|
+
git_win32_path_from_utf8(resolved_w, target);
|
425
|
+
else if (git_path_dirname_r(&resolved, path) < 0 ||
|
426
|
+
git_path_apply_relative(&resolved, target) < 0 ||
|
427
|
+
git_win32_path_from_utf8(resolved_w, resolved.ptr) < 0)
|
428
|
+
goto out;
|
429
|
+
|
430
|
+
isdir = GetFileAttributesW(resolved_w) & FILE_ATTRIBUTE_DIRECTORY;
|
431
|
+
|
432
|
+
out:
|
433
|
+
git_buf_dispose(&resolved);
|
434
|
+
return isdir;
|
435
|
+
}
|
436
|
+
|
401
437
|
int p_symlink(const char *target, const char *path)
|
402
438
|
{
|
403
439
|
git_win32_path target_w, path_w;
|
404
440
|
DWORD dwFlags;
|
405
441
|
|
442
|
+
/*
|
443
|
+
* Convert both target and path to Windows-style paths. Note that we do
|
444
|
+
* not want to use `git_win32_path_from_utf8` for converting the target,
|
445
|
+
* as that function will automatically pre-pend the current working
|
446
|
+
* directory in case the path is not absolute. As Git will instead use
|
447
|
+
* relative symlinks, this is not someting we want.
|
448
|
+
*/
|
406
449
|
if (git_win32_path_from_utf8(path_w, path) < 0 ||
|
407
|
-
|
450
|
+
git_win32_path_relative_from_utf8(target_w, target) < 0)
|
408
451
|
return -1;
|
409
452
|
|
410
453
|
dwFlags = SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE;
|
411
|
-
|
412
|
-
if (GetFileAttributesW(target_w) & FILE_ATTRIBUTE_DIRECTORY)
|
454
|
+
if (target_is_dir(target, path))
|
413
455
|
dwFlags |= SYMBOLIC_LINK_FLAG_DIRECTORY;
|
414
456
|
|
415
457
|
if (!CreateSymbolicLinkW(path_w, target_w, dwFlags))
|
@@ -32,8 +32,6 @@ 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
|
-
|
37
35
|
return CLEAN_THREAD_EXIT;
|
38
36
|
}
|
39
37
|
|
@@ -42,15 +40,15 @@ int git_threads_init(void)
|
|
42
40
|
HMODULE hModule = GetModuleHandleW(L"kernel32");
|
43
41
|
|
44
42
|
if (hModule) {
|
45
|
-
win32_srwlock_initialize = (win32_srwlock_fn)
|
43
|
+
win32_srwlock_initialize = (win32_srwlock_fn)(void *)
|
46
44
|
GetProcAddress(hModule, "InitializeSRWLock");
|
47
|
-
win32_srwlock_acquire_shared = (win32_srwlock_fn)
|
45
|
+
win32_srwlock_acquire_shared = (win32_srwlock_fn)(void *)
|
48
46
|
GetProcAddress(hModule, "AcquireSRWLockShared");
|
49
|
-
win32_srwlock_release_shared = (win32_srwlock_fn)
|
47
|
+
win32_srwlock_release_shared = (win32_srwlock_fn)(void *)
|
50
48
|
GetProcAddress(hModule, "ReleaseSRWLockShared");
|
51
|
-
win32_srwlock_acquire_exclusive = (win32_srwlock_fn)
|
49
|
+
win32_srwlock_acquire_exclusive = (win32_srwlock_fn)(void *)
|
52
50
|
GetProcAddress(hModule, "AcquireSRWLockExclusive");
|
53
|
-
win32_srwlock_release_exclusive = (win32_srwlock_fn)
|
51
|
+
win32_srwlock_release_exclusive = (win32_srwlock_fn)(void *)
|
54
52
|
GetProcAddress(hModule, "ReleaseSRWLockExclusive");
|
55
53
|
}
|
56
54
|
|
@@ -103,9 +101,6 @@ void git_thread_exit(void *value)
|
|
103
101
|
{
|
104
102
|
assert(GIT_GLOBAL->current_thread);
|
105
103
|
GIT_GLOBAL->current_thread->result = value;
|
106
|
-
|
107
|
-
git__free_tls_data();
|
108
|
-
|
109
104
|
ExitThread(CLEAN_THREAD_EXIT);
|
110
105
|
}
|
111
106
|
|
@@ -25,13 +25,17 @@ 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
|
+
}
|
30
34
|
|
31
35
|
assert(string_w);
|
32
36
|
|
33
37
|
/* Measure the string necessary for conversion */
|
34
|
-
if ((utf8_len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, string_w, len_w, NULL, 0, NULL, NULL)) == 0)
|
38
|
+
if ((utf8_len = WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, string_w, (int)len_w, NULL, 0, NULL, NULL)) == 0)
|
35
39
|
return 0;
|
36
40
|
|
37
41
|
assert(utf8_len > 0);
|
@@ -43,7 +47,7 @@ int git_buf_put_w(git_buf *buf, const wchar_t *string_w, size_t len_w)
|
|
43
47
|
return -1;
|
44
48
|
|
45
49
|
if ((utf8_write_len = WideCharToMultiByte(
|
46
|
-
CP_UTF8, WC_ERR_INVALID_CHARS, string_w, len_w, &buf->ptr[buf->size], utf8_len, NULL, NULL)) == 0)
|
50
|
+
CP_UTF8, WC_ERR_INVALID_CHARS, string_w, (int)len_w, &buf->ptr[buf->size], utf8_len, NULL, NULL)) == 0)
|
47
51
|
return handle_wc_error();
|
48
52
|
|
49
53
|
assert(utf8_write_len == utf8_len);
|
@@ -0,0 +1,39 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#ifndef INCLUDE_win32_w32_common_h__
|
9
|
+
#define INCLUDE_win32_w32_common_h__
|
10
|
+
|
11
|
+
/*
|
12
|
+
* Provides a large enough buffer to support Windows paths: MAX_PATH is
|
13
|
+
* 260, corresponding to a maximum path length of 259 characters plus a
|
14
|
+
* NULL terminator. Prefixing with "\\?\" adds 4 characters, but if the
|
15
|
+
* original was a UNC path, then we turn "\\server\share" into
|
16
|
+
* "\\?\UNC\server\share". So we replace the first two characters with
|
17
|
+
* 8 characters, a net gain of 6, so the maximum length is MAX_PATH+6.
|
18
|
+
*/
|
19
|
+
#define GIT_WIN_PATH_UTF16 MAX_PATH+6
|
20
|
+
|
21
|
+
/* Maximum size of a UTF-8 Win32 path. We remove the "\\?\" or "\\?\UNC\"
|
22
|
+
* prefixes for presentation, bringing us back to 259 (non-NULL)
|
23
|
+
* characters. UTF-8 does have 4-byte sequences, but they are encoded in
|
24
|
+
* UTF-16 using surrogate pairs, which takes up the space of two characters.
|
25
|
+
* Two characters in the range U+0800 -> U+FFFF take up more space in UTF-8
|
26
|
+
* (6 bytes) than one surrogate pair (4 bytes).
|
27
|
+
*/
|
28
|
+
#define GIT_WIN_PATH_UTF8 (259 * 3 + 1)
|
29
|
+
|
30
|
+
/*
|
31
|
+
* The length of a Windows "shortname", for 8.3 compatibility.
|
32
|
+
*/
|
33
|
+
#define GIT_WIN_PATH_SHORTNAME 13
|
34
|
+
|
35
|
+
/* Win32 path types */
|
36
|
+
typedef wchar_t git_win32_path[GIT_WIN_PATH_UTF16];
|
37
|
+
typedef char git_win32_utf8_path[GIT_WIN_PATH_UTF8];
|
38
|
+
|
39
|
+
#endif
|
@@ -71,99 +71,6 @@ static bool g_limit_reached = false; /* had allocs after we filled row table */
|
|
71
71
|
static unsigned int g_checkpoint_id = 0; /* to better label leak checkpoints */
|
72
72
|
static bool g_transient_leaks_since_mark = false; /* payload for hook */
|
73
73
|
|
74
|
-
static void *crtdbg__malloc(size_t len, const char *file, int line)
|
75
|
-
{
|
76
|
-
void *ptr = _malloc_dbg(len, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
|
77
|
-
if (!ptr) git_error_set_oom();
|
78
|
-
return ptr;
|
79
|
-
}
|
80
|
-
|
81
|
-
static void *crtdbg__calloc(size_t nelem, size_t elsize, const char *file, int line)
|
82
|
-
{
|
83
|
-
void *ptr = _calloc_dbg(nelem, elsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
|
84
|
-
if (!ptr) git_error_set_oom();
|
85
|
-
return ptr;
|
86
|
-
}
|
87
|
-
|
88
|
-
static char *crtdbg__strdup(const char *str, const char *file, int line)
|
89
|
-
{
|
90
|
-
char *ptr = _strdup_dbg(str, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
|
91
|
-
if (!ptr) git_error_set_oom();
|
92
|
-
return ptr;
|
93
|
-
}
|
94
|
-
|
95
|
-
static char *crtdbg__strndup(const char *str, size_t n, const char *file, int line)
|
96
|
-
{
|
97
|
-
size_t length = 0, alloclength;
|
98
|
-
char *ptr;
|
99
|
-
|
100
|
-
length = p_strnlen(str, n);
|
101
|
-
|
102
|
-
if (GIT_ADD_SIZET_OVERFLOW(&alloclength, length, 1) ||
|
103
|
-
!(ptr = crtdbg__malloc(alloclength, file, line)))
|
104
|
-
return NULL;
|
105
|
-
|
106
|
-
if (length)
|
107
|
-
memcpy(ptr, str, length);
|
108
|
-
|
109
|
-
ptr[length] = '\0';
|
110
|
-
|
111
|
-
return ptr;
|
112
|
-
}
|
113
|
-
|
114
|
-
static char *crtdbg__substrdup(const char *start, size_t n, const char *file, int line)
|
115
|
-
{
|
116
|
-
char *ptr;
|
117
|
-
size_t alloclen;
|
118
|
-
|
119
|
-
if (GIT_ADD_SIZET_OVERFLOW(&alloclen, n, 1) ||
|
120
|
-
!(ptr = crtdbg__malloc(alloclen, file, line)))
|
121
|
-
return NULL;
|
122
|
-
|
123
|
-
memcpy(ptr, start, n);
|
124
|
-
ptr[n] = '\0';
|
125
|
-
return ptr;
|
126
|
-
}
|
127
|
-
|
128
|
-
static void *crtdbg__realloc(void *ptr, size_t size, const char *file, int line)
|
129
|
-
{
|
130
|
-
void *new_ptr = _realloc_dbg(ptr, size, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
|
131
|
-
if (!new_ptr) git_error_set_oom();
|
132
|
-
return new_ptr;
|
133
|
-
}
|
134
|
-
|
135
|
-
static void *crtdbg__reallocarray(void *ptr, size_t nelem, size_t elsize, const char *file, int line)
|
136
|
-
{
|
137
|
-
size_t newsize;
|
138
|
-
|
139
|
-
return GIT_MULTIPLY_SIZET_OVERFLOW(&newsize, nelem, elsize) ?
|
140
|
-
NULL : _realloc_dbg(ptr, newsize, _NORMAL_BLOCK, git_win32__crtdbg_stacktrace(1,file), line);
|
141
|
-
}
|
142
|
-
|
143
|
-
static void *crtdbg__mallocarray(size_t nelem, size_t elsize, const char *file, int line)
|
144
|
-
{
|
145
|
-
return crtdbg__reallocarray(NULL, nelem, elsize, file, line);
|
146
|
-
}
|
147
|
-
|
148
|
-
static void crtdbg__free(void *ptr)
|
149
|
-
{
|
150
|
-
free(ptr);
|
151
|
-
}
|
152
|
-
|
153
|
-
int git_win32_crtdbg_init_allocator(git_allocator *allocator)
|
154
|
-
{
|
155
|
-
allocator->gmalloc = crtdbg__malloc;
|
156
|
-
allocator->gcalloc = crtdbg__calloc;
|
157
|
-
allocator->gstrdup = crtdbg__strdup;
|
158
|
-
allocator->gstrndup = crtdbg__strndup;
|
159
|
-
allocator->gsubstrdup = crtdbg__substrdup;
|
160
|
-
allocator->grealloc = crtdbg__realloc;
|
161
|
-
allocator->greallocarray = crtdbg__reallocarray;
|
162
|
-
allocator->gmallocarray = crtdbg__mallocarray;
|
163
|
-
allocator->gfree = crtdbg__free;
|
164
|
-
return 0;
|
165
|
-
}
|
166
|
-
|
167
74
|
/**
|
168
75
|
* Compare function for bsearch on g_cs_index table.
|
169
76
|
*/
|
@@ -13,11 +13,6 @@
|
|
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
|
-
|
21
16
|
static bool g_win32_stack_initialized = false;
|
22
17
|
static HANDLE g_win32_stack_process = INVALID_HANDLE_VALUE;
|
23
18
|
static git_win32__stack__aux_cb_alloc g_aux_cb_alloc = NULL;
|
@@ -81,7 +76,7 @@ int git_win32__stack_compare(
|
|
81
76
|
}
|
82
77
|
|
83
78
|
int git_win32__stack_format(
|
84
|
-
char *pbuf,
|
79
|
+
char *pbuf, size_t buf_len,
|
85
80
|
const git_win32__stack__raw_data *pdata,
|
86
81
|
const char *prefix, const char *suffix)
|
87
82
|
{
|
@@ -96,10 +91,10 @@ int git_win32__stack_format(
|
|
96
91
|
} s;
|
97
92
|
|
98
93
|
IMAGEHLP_LINE64 line;
|
99
|
-
|
94
|
+
size_t buf_used = 0;
|
100
95
|
unsigned int k;
|
101
96
|
char detail[MY_MAX_FILENAME * 2]; /* filename plus space for function name and formatting */
|
102
|
-
|
97
|
+
size_t detail_len;
|
103
98
|
|
104
99
|
if (!g_win32_stack_initialized) {
|
105
100
|
git_error_set(GIT_ERROR_INVALID, "git_win32_stack not initialized.");
|
@@ -176,7 +171,7 @@ int git_win32__stack_format(
|
|
176
171
|
}
|
177
172
|
|
178
173
|
int git_win32__stack(
|
179
|
-
char * pbuf,
|
174
|
+
char * pbuf, size_t buf_len,
|
180
175
|
int skip,
|
181
176
|
const char *prefix, const char *suffix)
|
182
177
|
{
|
@@ -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, size_t 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, size_t 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, size_t buf_len,
|
136
136
|
int skip,
|
137
137
|
const char *prefix, const char *suffix);
|
138
138
|
|
@@ -93,3 +93,34 @@ int git_win32__hidden(bool *out, const char *path)
|
|
93
93
|
*out = (attrs & FILE_ATTRIBUTE_HIDDEN) ? true : false;
|
94
94
|
return 0;
|
95
95
|
}
|
96
|
+
|
97
|
+
int git_win32__file_attribute_to_stat(
|
98
|
+
struct stat *st,
|
99
|
+
const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
|
100
|
+
const wchar_t *path)
|
101
|
+
{
|
102
|
+
git_win32__stat_init(st,
|
103
|
+
attrdata->dwFileAttributes,
|
104
|
+
attrdata->nFileSizeHigh,
|
105
|
+
attrdata->nFileSizeLow,
|
106
|
+
attrdata->ftCreationTime,
|
107
|
+
attrdata->ftLastAccessTime,
|
108
|
+
attrdata->ftLastWriteTime);
|
109
|
+
|
110
|
+
if (attrdata->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && path) {
|
111
|
+
git_win32_path target;
|
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
|
+
}
|
123
|
+
}
|
124
|
+
|
125
|
+
return 0;
|
126
|
+
}
|
@@ -59,6 +59,11 @@ 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
|
+
extern int git_win32__file_attribute_to_stat(
|
63
|
+
struct stat *st,
|
64
|
+
const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
|
65
|
+
const wchar_t *path);
|
66
|
+
|
62
67
|
/**
|
63
68
|
* Converts a FILETIME structure to a struct timespec.
|
64
69
|
*
|
@@ -115,7 +120,7 @@ GIT_INLINE(void) git_win32__stat_init(
|
|
115
120
|
st->st_uid = 0;
|
116
121
|
st->st_nlink = 1;
|
117
122
|
st->st_mode = mode;
|
118
|
-
st->st_size = ((
|
123
|
+
st->st_size = ((int64_t)nFileSizeHigh << 32) + nFileSizeLow;
|
119
124
|
st->st_dev = _getdrive() - 1;
|
120
125
|
st->st_rdev = st->st_dev;
|
121
126
|
git_win32__filetime_to_timespec(&ftLastAccessTime, &(st->st_atim));
|
@@ -136,35 +141,4 @@ GIT_INLINE(void) git_win32__file_information_to_stat(
|
|
136
141
|
fileinfo->ftLastWriteTime);
|
137
142
|
}
|
138
143
|
|
139
|
-
GIT_INLINE(int) git_win32__file_attribute_to_stat(
|
140
|
-
struct stat *st,
|
141
|
-
const WIN32_FILE_ATTRIBUTE_DATA *attrdata,
|
142
|
-
const wchar_t *path)
|
143
|
-
{
|
144
|
-
git_win32__stat_init(st,
|
145
|
-
attrdata->dwFileAttributes,
|
146
|
-
attrdata->nFileSizeHigh,
|
147
|
-
attrdata->nFileSizeLow,
|
148
|
-
attrdata->ftCreationTime,
|
149
|
-
attrdata->ftLastAccessTime,
|
150
|
-
attrdata->ftLastWriteTime);
|
151
|
-
|
152
|
-
if (attrdata->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT && path) {
|
153
|
-
git_win32_path target;
|
154
|
-
|
155
|
-
if (git_win32_path_readlink_w(target, path) >= 0) {
|
156
|
-
st->st_mode = (st->st_mode & ~S_IFMT) | S_IFLNK;
|
157
|
-
|
158
|
-
/* st_size gets the UTF-8 length of the target name, in bytes,
|
159
|
-
* not counting the NULL terminator */
|
160
|
-
if ((st->st_size = git__utf16_to_8(NULL, 0, target)) < 0) {
|
161
|
-
git_error_set(GIT_ERROR_OS, "could not convert reparse point name for '%ls'", path);
|
162
|
-
return -1;
|
163
|
-
}
|
164
|
-
}
|
165
|
-
}
|
166
|
-
|
167
|
-
return 0;
|
168
|
-
}
|
169
|
-
|
170
144
|
#endif
|