rugged 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +1 -0
- data/README.md +3 -3
- data/ext/rugged/rugged.c +7 -4
- data/ext/rugged/rugged_commit.c +1 -1
- data/ext/rugged/rugged_config.c +1 -1
- data/ext/rugged/rugged_object.c +1 -1
- data/ext/rugged/rugged_remote.c +32 -2
- data/ext/rugged/rugged_repo.c +13 -3
- data/lib/rugged/commit.rb +17 -4
- data/lib/rugged/repository.rb +7 -8
- data/lib/rugged/submodule_collection.rb +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +41 -74
- data/vendor/libgit2/COPYING +109 -1
- data/vendor/libgit2/cmake/{Modules/AddCFlagIfSupported.cmake → AddCFlagIfSupported.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/EnableWarnings.cmake → EnableWarnings.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindCoreFoundation.cmake → FindCoreFoundation.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindGSSAPI.cmake → FindGSSAPI.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindGSSFramework.cmake → FindGSSFramework.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindHTTP_Parser.cmake → FindHTTP_Parser.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindIconv.cmake → FindIconv.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPCRE.cmake → FindPCRE.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPCRE2.cmake → FindPCRE2.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindPkgLibraries.cmake → FindPkgLibraries.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindSecurity.cmake → FindSecurity.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/FindStatNsec.cmake → FindStatNsec.cmake} +0 -0
- data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
- data/vendor/libgit2/cmake/{Modules/FindmbedTLS.cmake → FindmbedTLS.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/IdeSplitSources.cmake → IdeSplitSources.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/PkgBuildConfig.cmake → PkgBuildConfig.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/SanitizeBool.cmake → SanitizeBool.cmake} +0 -0
- data/vendor/libgit2/cmake/{Modules/SelectGSSAPI.cmake → SelectGSSAPI.cmake} +18 -26
- data/vendor/libgit2/cmake/{Modules/SelectHTTPSBackend.cmake → SelectHTTPSBackend.cmake} +29 -32
- data/vendor/libgit2/cmake/{Modules/SelectHashes.cmake → SelectHashes.cmake} +21 -28
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +4 -3
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +24 -10
- data/vendor/libgit2/deps/ntlmclient/compat.h +0 -27
- data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +164 -135
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
- data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +15 -1
- data/vendor/libgit2/deps/ntlmclient/util.h +2 -1
- data/vendor/libgit2/deps/pcre/LICENCE +93 -0
- data/vendor/libgit2/deps/pcre/pcre.h +2 -2
- data/vendor/libgit2/deps/pcre/pcre_compile.c +29 -17
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +4 -4
- data/vendor/libgit2/deps/pcre/pcreposix.c +2 -3
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -5
- data/vendor/libgit2/deps/zlib/deflate.c +1 -0
- data/vendor/libgit2/include/git2/annotated_commit.h +1 -1
- data/vendor/libgit2/include/git2/apply.h +2 -0
- data/vendor/libgit2/include/git2/attr.h +89 -0
- data/vendor/libgit2/include/git2/blame.h +95 -42
- data/vendor/libgit2/include/git2/blob.h +31 -3
- data/vendor/libgit2/include/git2/branch.h +25 -0
- data/vendor/libgit2/include/git2/cert.h +42 -5
- data/vendor/libgit2/include/git2/checkout.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +35 -19
- data/vendor/libgit2/include/git2/common.h +33 -6
- data/vendor/libgit2/include/git2/config.h +1 -1
- data/vendor/libgit2/include/git2/deprecated.h +248 -8
- data/vendor/libgit2/include/git2/diff.h +35 -20
- data/vendor/libgit2/include/git2/errors.h +8 -7
- data/vendor/libgit2/include/git2/filter.h +57 -17
- data/vendor/libgit2/include/git2/graph.h +20 -2
- data/vendor/libgit2/include/git2/index.h +4 -5
- data/vendor/libgit2/include/git2/indexer.h +2 -1
- data/vendor/libgit2/include/git2/odb.h +44 -20
- data/vendor/libgit2/include/git2/pack.h +1 -1
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/rebase.h +25 -1
- data/vendor/libgit2/include/git2/refs.h +9 -5
- data/vendor/libgit2/include/git2/remote.h +59 -6
- data/vendor/libgit2/include/git2/repository.h +95 -52
- data/vendor/libgit2/include/git2/revparse.h +5 -5
- data/vendor/libgit2/include/git2/status.h +115 -59
- data/vendor/libgit2/include/git2/strarray.h +6 -10
- data/vendor/libgit2/include/git2/submodule.h +9 -0
- data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
- data/vendor/libgit2/include/git2/sys/filter.h +49 -28
- data/vendor/libgit2/include/git2/sys/midx.h +74 -0
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
- data/vendor/libgit2/include/git2/sys/transport.h +1 -0
- data/vendor/libgit2/include/git2/tag.h +12 -0
- data/vendor/libgit2/include/git2/transport.h +1 -1
- data/vendor/libgit2/include/git2/tree.h +2 -14
- data/vendor/libgit2/include/git2/types.h +9 -0
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +77 -44
- data/vendor/libgit2/src/alloc.c +21 -8
- data/vendor/libgit2/src/allocators/failalloc.c +92 -0
- data/vendor/libgit2/src/allocators/failalloc.h +23 -0
- data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
- data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
- data/vendor/libgit2/src/annotated_commit.c +21 -9
- data/vendor/libgit2/src/apply.c +21 -8
- data/vendor/libgit2/src/array.h +11 -11
- data/vendor/libgit2/src/assert_safe.h +58 -0
- data/vendor/libgit2/src/attr.c +181 -74
- data/vendor/libgit2/src/attr_file.c +92 -42
- data/vendor/libgit2/src/attr_file.h +32 -11
- data/vendor/libgit2/src/attrcache.c +44 -40
- data/vendor/libgit2/src/attrcache.h +4 -5
- data/vendor/libgit2/src/blame.c +28 -15
- data/vendor/libgit2/src/blame_git.c +6 -3
- data/vendor/libgit2/src/blob.c +46 -24
- data/vendor/libgit2/src/branch.c +87 -37
- data/vendor/libgit2/src/buffer.c +339 -27
- data/vendor/libgit2/src/buffer.h +153 -2
- data/vendor/libgit2/src/cache.c +3 -24
- data/vendor/libgit2/src/cache.h +7 -7
- data/vendor/libgit2/src/cc-compat.h +10 -2
- data/vendor/libgit2/src/checkout.c +97 -98
- data/vendor/libgit2/src/cherrypick.c +8 -2
- data/vendor/libgit2/src/clone.c +104 -29
- data/vendor/libgit2/src/commit.c +41 -28
- data/vendor/libgit2/src/commit_graph.c +1209 -0
- data/vendor/libgit2/src/commit_graph.h +162 -0
- data/vendor/libgit2/src/commit_list.c +46 -0
- data/vendor/libgit2/src/commit_list.h +2 -0
- data/vendor/libgit2/src/common.h +26 -2
- data/vendor/libgit2/src/config.c +40 -22
- data/vendor/libgit2/src/config_cache.c +9 -4
- data/vendor/libgit2/src/config_entries.c +35 -27
- data/vendor/libgit2/src/config_file.c +25 -8
- data/vendor/libgit2/src/config_parse.c +5 -7
- data/vendor/libgit2/src/config_snapshot.c +2 -1
- data/vendor/libgit2/src/crlf.c +16 -6
- data/vendor/libgit2/src/date.c +4 -3
- data/vendor/libgit2/src/delta.c +1 -1
- data/vendor/libgit2/src/describe.c +11 -4
- data/vendor/libgit2/src/diff.c +23 -19
- data/vendor/libgit2/src/diff_driver.c +21 -17
- data/vendor/libgit2/src/diff_file.c +5 -7
- data/vendor/libgit2/src/diff_generate.c +56 -28
- data/vendor/libgit2/src/diff_parse.c +2 -3
- data/vendor/libgit2/src/diff_print.c +81 -65
- data/vendor/libgit2/src/diff_stats.c +19 -16
- data/vendor/libgit2/src/diff_tform.c +13 -13
- data/vendor/libgit2/src/diff_xdiff.c +4 -2
- data/vendor/libgit2/src/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/errors.c +26 -19
- data/vendor/libgit2/src/features.h.in +5 -1
- data/vendor/libgit2/src/fetch.c +7 -2
- data/vendor/libgit2/src/fetchhead.c +8 -4
- data/vendor/libgit2/src/filebuf.c +9 -7
- data/vendor/libgit2/src/filter.c +209 -113
- data/vendor/libgit2/src/filter.h +24 -5
- data/vendor/libgit2/src/futils.c +8 -8
- data/vendor/libgit2/src/futils.h +4 -4
- data/vendor/libgit2/src/graph.c +64 -9
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
- data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
- data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
- data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
- data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
- data/vendor/libgit2/src/hash.c +16 -13
- data/vendor/libgit2/src/hash.h +1 -1
- data/vendor/libgit2/src/hashsig.c +23 -10
- data/vendor/libgit2/src/ident.c +13 -3
- data/vendor/libgit2/src/idxmap.c +0 -22
- data/vendor/libgit2/src/ignore.c +35 -19
- data/vendor/libgit2/src/index.c +126 -84
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +60 -36
- data/vendor/libgit2/src/integer.h +79 -2
- data/vendor/libgit2/src/iterator.c +40 -28
- data/vendor/libgit2/src/iterator.h +1 -1
- data/vendor/libgit2/src/khash.h +2 -11
- data/vendor/libgit2/src/{settings.c → libgit2.c} +125 -49
- data/vendor/libgit2/src/libgit2.h +15 -0
- data/vendor/libgit2/src/mailmap.c +23 -10
- data/vendor/libgit2/src/map.h +3 -3
- data/vendor/libgit2/src/merge.c +108 -46
- data/vendor/libgit2/src/merge.h +2 -1
- data/vendor/libgit2/src/merge_driver.c +19 -13
- data/vendor/libgit2/src/merge_file.c +15 -9
- data/vendor/libgit2/src/message.c +3 -1
- data/vendor/libgit2/src/midx.c +879 -0
- data/vendor/libgit2/src/midx.h +110 -0
- data/vendor/libgit2/src/mwindow.c +214 -95
- data/vendor/libgit2/src/mwindow.h +3 -3
- data/vendor/libgit2/src/net.c +133 -4
- data/vendor/libgit2/src/net.h +16 -2
- data/vendor/libgit2/src/netops.c +6 -4
- data/vendor/libgit2/src/netops.h +2 -2
- data/vendor/libgit2/src/notes.c +10 -10
- data/vendor/libgit2/src/object.c +24 -15
- data/vendor/libgit2/src/odb.c +298 -57
- data/vendor/libgit2/src/odb.h +16 -2
- data/vendor/libgit2/src/odb_loose.c +31 -21
- data/vendor/libgit2/src/odb_mempack.c +3 -1
- data/vendor/libgit2/src/odb_pack.c +391 -114
- data/vendor/libgit2/src/oid.c +7 -4
- data/vendor/libgit2/src/pack-objects.c +83 -69
- data/vendor/libgit2/src/pack.c +383 -150
- data/vendor/libgit2/src/pack.h +44 -9
- data/vendor/libgit2/src/patch.c +14 -7
- data/vendor/libgit2/src/patch_generate.c +3 -5
- data/vendor/libgit2/src/patch_parse.c +6 -3
- data/vendor/libgit2/src/path.c +102 -57
- data/vendor/libgit2/src/path.h +79 -6
- data/vendor/libgit2/src/pathspec.c +12 -11
- data/vendor/libgit2/src/pool.c +34 -22
- data/vendor/libgit2/src/pool.h +9 -1
- data/vendor/libgit2/src/posix.c +43 -12
- data/vendor/libgit2/src/posix.h +9 -0
- data/vendor/libgit2/src/proxy.c +2 -0
- data/vendor/libgit2/src/push.c +2 -0
- data/vendor/libgit2/src/reader.c +10 -6
- data/vendor/libgit2/src/rebase.c +95 -49
- data/vendor/libgit2/src/refdb.c +165 -13
- data/vendor/libgit2/src/refdb.h +69 -0
- data/vendor/libgit2/src/refdb_fs.c +144 -152
- data/vendor/libgit2/src/reflog.c +21 -20
- data/vendor/libgit2/src/refs.c +151 -231
- data/vendor/libgit2/src/refs.h +2 -20
- data/vendor/libgit2/src/refspec.c +80 -44
- data/vendor/libgit2/src/regexp.c +2 -2
- data/vendor/libgit2/src/remote.c +312 -121
- data/vendor/libgit2/src/remote.h +2 -1
- data/vendor/libgit2/src/repository.c +351 -189
- data/vendor/libgit2/src/repository.h +23 -29
- data/vendor/libgit2/src/reset.c +7 -6
- data/vendor/libgit2/src/revert.c +8 -2
- data/vendor/libgit2/src/revparse.c +19 -13
- data/vendor/libgit2/src/revwalk.c +35 -20
- data/vendor/libgit2/src/runtime.c +162 -0
- data/vendor/libgit2/src/runtime.h +62 -0
- data/vendor/libgit2/src/{refdb_fs.h → settings.h} +3 -11
- data/vendor/libgit2/src/signature.c +6 -5
- data/vendor/libgit2/src/sortedcache.c +2 -3
- data/vendor/libgit2/src/sortedcache.h +10 -8
- data/vendor/libgit2/src/stash.c +7 -3
- data/vendor/libgit2/src/status.c +9 -4
- data/vendor/libgit2/src/strarray.c +64 -0
- data/vendor/libgit2/src/streams/mbedtls.c +14 -17
- data/vendor/libgit2/src/streams/mbedtls.h +1 -1
- data/vendor/libgit2/src/streams/openssl.c +113 -207
- data/vendor/libgit2/src/streams/openssl.h +9 -1
- data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
- data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
- data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
- data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
- data/vendor/libgit2/src/streams/registry.c +10 -9
- data/vendor/libgit2/src/streams/socket.c +6 -2
- data/vendor/libgit2/src/streams/stransport.c +6 -3
- data/vendor/libgit2/src/streams/tls.c +5 -3
- data/vendor/libgit2/src/submodule.c +134 -66
- data/vendor/libgit2/src/submodule.h +9 -9
- data/vendor/libgit2/src/sysdir.c +8 -26
- data/vendor/libgit2/src/sysdir.h +0 -11
- data/vendor/libgit2/src/tag.c +49 -11
- data/vendor/libgit2/src/thread.c +140 -0
- data/vendor/libgit2/src/thread.h +479 -0
- data/vendor/libgit2/src/threadstate.c +83 -0
- data/vendor/libgit2/src/threadstate.h +24 -0
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +17 -13
- data/vendor/libgit2/src/transaction.c +21 -9
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +1 -1
- data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
- data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
- data/vendor/libgit2/src/transports/credential.c +17 -7
- data/vendor/libgit2/src/transports/credential_helpers.c +2 -0
- data/vendor/libgit2/src/transports/git.c +1 -3
- data/vendor/libgit2/src/transports/http.c +19 -17
- data/vendor/libgit2/src/transports/http.h +1 -0
- data/vendor/libgit2/src/transports/httpclient.c +84 -42
- data/vendor/libgit2/src/transports/httpclient.h +1 -1
- data/vendor/libgit2/src/transports/local.c +5 -5
- data/vendor/libgit2/src/transports/smart.c +14 -9
- data/vendor/libgit2/src/transports/smart.h +1 -1
- data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
- data/vendor/libgit2/src/transports/ssh.c +51 -17
- data/vendor/libgit2/src/transports/winhttp.c +156 -88
- data/vendor/libgit2/src/tree.c +100 -77
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/tsort.c +0 -2
- data/vendor/libgit2/src/unix/map.c +3 -1
- data/vendor/libgit2/src/unix/posix.h +16 -1
- data/vendor/libgit2/src/unix/pthread.h +2 -1
- data/vendor/libgit2/src/utf8.c +150 -0
- data/vendor/libgit2/src/utf8.h +52 -0
- data/vendor/libgit2/src/util.c +74 -183
- data/vendor/libgit2/src/util.h +33 -39
- data/vendor/libgit2/src/vector.c +23 -19
- data/vendor/libgit2/src/vector.h +4 -2
- data/vendor/libgit2/src/win32/findfile.c +4 -2
- data/vendor/libgit2/src/win32/git2.rc +18 -3
- data/vendor/libgit2/src/win32/map.c +1 -1
- data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
- data/vendor/libgit2/src/win32/path_w32.c +23 -25
- data/vendor/libgit2/src/win32/path_w32.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +77 -1
- data/vendor/libgit2/src/win32/precompiled.h +0 -1
- data/vendor/libgit2/src/win32/reparse.h +4 -4
- data/vendor/libgit2/src/win32/thread.c +24 -15
- data/vendor/libgit2/src/win32/thread.h +1 -1
- data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
- data/vendor/libgit2/src/win32/w32_common.h +18 -9
- data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
- data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
- data/vendor/libgit2/src/win32/w32_util.h +6 -6
- data/vendor/libgit2/src/worktree.c +37 -15
- data/vendor/libgit2/src/zstream.c +1 -1
- metadata +56 -38
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +0 -29
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +0 -96
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
- data/vendor/libgit2/src/buf_text.c +0 -316
- data/vendor/libgit2/src/buf_text.h +0 -122
- data/vendor/libgit2/src/global.c +0 -361
- data/vendor/libgit2/src/global.h +0 -41
- data/vendor/libgit2/src/thread-utils.c +0 -58
- data/vendor/libgit2/src/thread-utils.h +0 -246
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
- data/vendor/libgit2/src/win32/w32_stack.c +0 -188
- data/vendor/libgit2/src/win32/w32_stack.h +0 -140
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
|
+
*/
|
|
7
|
+
#ifndef INCLUDE_utf8_h__
|
|
8
|
+
#define INCLUDE_utf8_h__
|
|
9
|
+
|
|
10
|
+
#include "common.h"
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
* Iterate through an UTF-8 string, yielding one codepoint at a time.
|
|
14
|
+
*
|
|
15
|
+
* @param out pointer where to store the current codepoint
|
|
16
|
+
* @param str current position in the string
|
|
17
|
+
* @param str_len size left in the string
|
|
18
|
+
* @return length in bytes of the read codepoint; -1 if the codepoint was invalid
|
|
19
|
+
*/
|
|
20
|
+
extern int git_utf8_iterate(uint32_t *out, const char *str, size_t str_len);
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Returns the number of characters in the given string.
|
|
24
|
+
*
|
|
25
|
+
* This function will count invalid codepoints; if any given byte is
|
|
26
|
+
* not part of a valid UTF-8 codepoint, then it will be counted toward
|
|
27
|
+
* the length in characters.
|
|
28
|
+
*
|
|
29
|
+
* In other words:
|
|
30
|
+
* 0x24 (U+0024 "$") has length 1
|
|
31
|
+
* 0xc2 0xa2 (U+00A2 "¢") has length 1
|
|
32
|
+
* 0x24 0xc2 0xa2 (U+0024 U+00A2 "$¢") has length 2
|
|
33
|
+
* 0xf0 0x90 0x8d 0x88 (U+10348 "𐍈") has length 1
|
|
34
|
+
* 0x24 0xc0 0xc1 0x34 (U+0024 <invalid> <invalid> "4) has length 4
|
|
35
|
+
*
|
|
36
|
+
* @param str string to scan
|
|
37
|
+
* @param str_len size of the string
|
|
38
|
+
* @return length in characters of the string
|
|
39
|
+
*/
|
|
40
|
+
extern size_t git_utf8_char_length(const char *str, size_t str_len);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Iterate through an UTF-8 string and stops after finding any invalid UTF-8
|
|
44
|
+
* codepoints.
|
|
45
|
+
*
|
|
46
|
+
* @param str string to scan
|
|
47
|
+
* @param str_len size of the string
|
|
48
|
+
* @return length in bytes of the string that contains valid data
|
|
49
|
+
*/
|
|
50
|
+
extern size_t git_utf8_valid_buf_length(const char *str, size_t str_len);
|
|
51
|
+
|
|
52
|
+
#endif
|
data/vendor/libgit2/src/util.c
CHANGED
|
@@ -13,6 +13,11 @@
|
|
|
13
13
|
# include "win32/utf-conv.h"
|
|
14
14
|
# include "win32/w32_buffer.h"
|
|
15
15
|
|
|
16
|
+
# ifndef WIN32_LEAN_AND_MEAN
|
|
17
|
+
# define WIN32_LEAN_AND_MEAN
|
|
18
|
+
# endif
|
|
19
|
+
# include <windows.h>
|
|
20
|
+
|
|
16
21
|
# ifdef HAVE_QSORT_S
|
|
17
22
|
# include <search.h>
|
|
18
23
|
# endif
|
|
@@ -22,57 +27,15 @@
|
|
|
22
27
|
# include <Shlwapi.h>
|
|
23
28
|
#endif
|
|
24
29
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (array == NULL)
|
|
30
|
-
return;
|
|
31
|
-
|
|
32
|
-
for (i = 0; i < array->count; ++i)
|
|
33
|
-
git__free(array->strings[i]);
|
|
34
|
-
|
|
35
|
-
git__free(array->strings);
|
|
36
|
-
|
|
37
|
-
memset(array, 0, sizeof(*array));
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
int git_strarray_copy(git_strarray *tgt, const git_strarray *src)
|
|
41
|
-
{
|
|
42
|
-
size_t i;
|
|
43
|
-
|
|
44
|
-
assert(tgt && src);
|
|
45
|
-
|
|
46
|
-
memset(tgt, 0, sizeof(*tgt));
|
|
47
|
-
|
|
48
|
-
if (!src->count)
|
|
49
|
-
return 0;
|
|
50
|
-
|
|
51
|
-
tgt->strings = git__calloc(src->count, sizeof(char *));
|
|
52
|
-
GIT_ERROR_CHECK_ALLOC(tgt->strings);
|
|
53
|
-
|
|
54
|
-
for (i = 0; i < src->count; ++i) {
|
|
55
|
-
if (!src->strings[i])
|
|
56
|
-
continue;
|
|
57
|
-
|
|
58
|
-
tgt->strings[tgt->count] = git__strdup(src->strings[i]);
|
|
59
|
-
if (!tgt->strings[tgt->count]) {
|
|
60
|
-
git_strarray_free(tgt);
|
|
61
|
-
memset(tgt, 0, sizeof(*tgt));
|
|
62
|
-
return -1;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
tgt->count++;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return 0;
|
|
69
|
-
}
|
|
30
|
+
#if defined(hpux) || defined(__hpux) || defined(_hpux)
|
|
31
|
+
# include <sys/pstat.h>
|
|
32
|
+
#endif
|
|
70
33
|
|
|
71
34
|
int git__strntol64(int64_t *result, const char *nptr, size_t nptr_len, const char **endptr, int base)
|
|
72
35
|
{
|
|
73
36
|
const char *p;
|
|
74
|
-
int64_t n, nn;
|
|
75
|
-
int c, ovfl,
|
|
37
|
+
int64_t n, nn, v;
|
|
38
|
+
int c, ovfl, neg, ndig;
|
|
76
39
|
|
|
77
40
|
p = nptr;
|
|
78
41
|
neg = 0;
|
|
@@ -147,19 +110,11 @@ int git__strntol64(int64_t *result, const char *nptr, size_t nptr_len, const cha
|
|
|
147
110
|
if (v >= base)
|
|
148
111
|
break;
|
|
149
112
|
v = neg ? -v : v;
|
|
150
|
-
if (n
|
|
151
|
-
ovfl = 1;
|
|
152
|
-
/* Keep on iterating until the end of this number */
|
|
153
|
-
continue;
|
|
154
|
-
}
|
|
155
|
-
nn = n * base;
|
|
156
|
-
if ((v > 0 && nn > INT64_MAX - v) ||
|
|
157
|
-
(v < 0 && nn < INT64_MIN - v)) {
|
|
113
|
+
if (git__multiply_int64_overflow(&nn, n, base) || git__add_int64_overflow(&n, nn, v)) {
|
|
158
114
|
ovfl = 1;
|
|
159
115
|
/* Keep on iterating until the end of this number */
|
|
160
116
|
continue;
|
|
161
117
|
}
|
|
162
|
-
n = nn + v;
|
|
163
118
|
}
|
|
164
119
|
|
|
165
120
|
Return:
|
|
@@ -424,35 +379,48 @@ void git__hexdump(const char *buffer, size_t len)
|
|
|
424
379
|
last_line = (len % LINE_WIDTH);
|
|
425
380
|
|
|
426
381
|
for (i = 0; i < line_count; ++i) {
|
|
382
|
+
printf("%08" PRIxZ " ", (i * LINE_WIDTH));
|
|
383
|
+
|
|
427
384
|
line = buffer + (i * LINE_WIDTH);
|
|
428
|
-
for (j = 0; j < LINE_WIDTH; ++j, ++line)
|
|
429
|
-
printf("%
|
|
385
|
+
for (j = 0; j < LINE_WIDTH; ++j, ++line) {
|
|
386
|
+
printf("%02x ", (unsigned char)*line & 0xFF);
|
|
387
|
+
|
|
388
|
+
if (j == (LINE_WIDTH / 2))
|
|
389
|
+
printf(" ");
|
|
390
|
+
}
|
|
430
391
|
|
|
431
|
-
printf("|
|
|
392
|
+
printf(" |");
|
|
432
393
|
|
|
433
394
|
line = buffer + (i * LINE_WIDTH);
|
|
434
395
|
for (j = 0; j < LINE_WIDTH; ++j, ++line)
|
|
435
396
|
printf("%c", (*line >= 32 && *line <= 126) ? *line : '.');
|
|
436
397
|
|
|
437
|
-
printf("
|
|
398
|
+
printf("|\n");
|
|
438
399
|
}
|
|
439
400
|
|
|
440
401
|
if (last_line > 0) {
|
|
402
|
+
printf("%08" PRIxZ " ", (line_count * LINE_WIDTH));
|
|
441
403
|
|
|
442
404
|
line = buffer + (line_count * LINE_WIDTH);
|
|
443
|
-
for (j = 0; j < last_line; ++j, ++line)
|
|
444
|
-
printf("%
|
|
405
|
+
for (j = 0; j < last_line; ++j, ++line) {
|
|
406
|
+
printf("%02x ", (unsigned char)*line & 0xFF);
|
|
407
|
+
|
|
408
|
+
if (j == (LINE_WIDTH / 2))
|
|
409
|
+
printf(" ");
|
|
410
|
+
}
|
|
445
411
|
|
|
412
|
+
if (j < (LINE_WIDTH / 2))
|
|
413
|
+
printf(" ");
|
|
446
414
|
for (j = 0; j < (LINE_WIDTH - last_line); ++j)
|
|
447
|
-
printf("
|
|
415
|
+
printf(" ");
|
|
448
416
|
|
|
449
|
-
printf("|
|
|
417
|
+
printf(" |");
|
|
450
418
|
|
|
451
419
|
line = buffer + (line_count * LINE_WIDTH);
|
|
452
420
|
for (j = 0; j < last_line; ++j, ++line)
|
|
453
421
|
printf("%c", (*line >= 32 && *line <= 126) ? *line : '.');
|
|
454
422
|
|
|
455
|
-
printf("
|
|
423
|
+
printf("|\n");
|
|
456
424
|
}
|
|
457
425
|
|
|
458
426
|
printf("\n");
|
|
@@ -711,7 +679,7 @@ typedef struct {
|
|
|
711
679
|
void *payload;
|
|
712
680
|
} git__qsort_r_glue;
|
|
713
681
|
|
|
714
|
-
static int
|
|
682
|
+
static int GIT_LIBGIT2_CALL git__qsort_r_glue_cmp(
|
|
715
683
|
void *payload, const void *a, const void *b)
|
|
716
684
|
{
|
|
717
685
|
git__qsort_r_glue *glue = payload;
|
|
@@ -766,123 +734,6 @@ void git__qsort_r(
|
|
|
766
734
|
#endif
|
|
767
735
|
}
|
|
768
736
|
|
|
769
|
-
/*
|
|
770
|
-
* git__utf8_iterate is taken from the utf8proc project,
|
|
771
|
-
* http://www.public-software-group.org/utf8proc
|
|
772
|
-
*
|
|
773
|
-
* Copyright (c) 2009 Public Software Group e. V., Berlin, Germany
|
|
774
|
-
*
|
|
775
|
-
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
776
|
-
* copy of this software and associated documentation files (the ""Software""),
|
|
777
|
-
* to deal in the Software without restriction, including without limitation
|
|
778
|
-
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
779
|
-
* and/or sell copies of the Software, and to permit persons to whom the
|
|
780
|
-
* Software is furnished to do so, subject to the following conditions:
|
|
781
|
-
*
|
|
782
|
-
* The above copyright notice and this permission notice shall be included in
|
|
783
|
-
* all copies or substantial portions of the Software.
|
|
784
|
-
*
|
|
785
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
786
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
787
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
788
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
789
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
790
|
-
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
791
|
-
* DEALINGS IN THE SOFTWARE.
|
|
792
|
-
*/
|
|
793
|
-
|
|
794
|
-
static const int8_t utf8proc_utf8class[256] = {
|
|
795
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
796
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
797
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
798
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
799
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
800
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
801
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
802
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
803
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
804
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
805
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
806
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
807
|
-
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
808
|
-
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
809
|
-
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
810
|
-
4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0
|
|
811
|
-
};
|
|
812
|
-
|
|
813
|
-
int git__utf8_charlen(const uint8_t *str, size_t str_len)
|
|
814
|
-
{
|
|
815
|
-
size_t length, i;
|
|
816
|
-
|
|
817
|
-
length = utf8proc_utf8class[str[0]];
|
|
818
|
-
if (!length)
|
|
819
|
-
return -1;
|
|
820
|
-
|
|
821
|
-
if (str_len > 0 && length > str_len)
|
|
822
|
-
return -1;
|
|
823
|
-
|
|
824
|
-
for (i = 1; i < length; i++) {
|
|
825
|
-
if ((str[i] & 0xC0) != 0x80)
|
|
826
|
-
return -1;
|
|
827
|
-
}
|
|
828
|
-
|
|
829
|
-
return (int)length;
|
|
830
|
-
}
|
|
831
|
-
|
|
832
|
-
int git__utf8_iterate(const uint8_t *str, int str_len, int32_t *dst)
|
|
833
|
-
{
|
|
834
|
-
int length;
|
|
835
|
-
int32_t uc = -1;
|
|
836
|
-
|
|
837
|
-
*dst = -1;
|
|
838
|
-
length = git__utf8_charlen(str, str_len);
|
|
839
|
-
if (length < 0)
|
|
840
|
-
return -1;
|
|
841
|
-
|
|
842
|
-
switch (length) {
|
|
843
|
-
case 1:
|
|
844
|
-
uc = str[0];
|
|
845
|
-
break;
|
|
846
|
-
case 2:
|
|
847
|
-
uc = ((str[0] & 0x1F) << 6) + (str[1] & 0x3F);
|
|
848
|
-
if (uc < 0x80) uc = -1;
|
|
849
|
-
break;
|
|
850
|
-
case 3:
|
|
851
|
-
uc = ((str[0] & 0x0F) << 12) + ((str[1] & 0x3F) << 6)
|
|
852
|
-
+ (str[2] & 0x3F);
|
|
853
|
-
if (uc < 0x800 || (uc >= 0xD800 && uc < 0xE000) ||
|
|
854
|
-
(uc >= 0xFDD0 && uc < 0xFDF0)) uc = -1;
|
|
855
|
-
break;
|
|
856
|
-
case 4:
|
|
857
|
-
uc = ((str[0] & 0x07) << 18) + ((str[1] & 0x3F) << 12)
|
|
858
|
-
+ ((str[2] & 0x3F) << 6) + (str[3] & 0x3F);
|
|
859
|
-
if (uc < 0x10000 || uc >= 0x110000) uc = -1;
|
|
860
|
-
break;
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
if (uc < 0 || ((uc & 0xFFFF) >= 0xFFFE))
|
|
864
|
-
return -1;
|
|
865
|
-
|
|
866
|
-
*dst = uc;
|
|
867
|
-
return length;
|
|
868
|
-
}
|
|
869
|
-
|
|
870
|
-
size_t git__utf8_valid_buf_length(const uint8_t *str, size_t str_len)
|
|
871
|
-
{
|
|
872
|
-
size_t offset = 0;
|
|
873
|
-
|
|
874
|
-
while (offset < str_len) {
|
|
875
|
-
int length = git__utf8_charlen(str + offset, str_len - offset);
|
|
876
|
-
|
|
877
|
-
if (length < 0)
|
|
878
|
-
break;
|
|
879
|
-
|
|
880
|
-
offset += length;
|
|
881
|
-
}
|
|
882
|
-
|
|
883
|
-
return offset;
|
|
884
|
-
}
|
|
885
|
-
|
|
886
737
|
#ifdef GIT_WIN32
|
|
887
738
|
int git__getenv(git_buf *out, const char *name)
|
|
888
739
|
{
|
|
@@ -926,3 +777,43 @@ int git__getenv(git_buf *out, const char *name)
|
|
|
926
777
|
return git_buf_puts(out, val);
|
|
927
778
|
}
|
|
928
779
|
#endif
|
|
780
|
+
|
|
781
|
+
/*
|
|
782
|
+
* By doing this in two steps we can at least get
|
|
783
|
+
* the function to be somewhat coherent, even
|
|
784
|
+
* with this disgusting nest of #ifdefs.
|
|
785
|
+
*/
|
|
786
|
+
#ifndef _SC_NPROCESSORS_ONLN
|
|
787
|
+
# ifdef _SC_NPROC_ONLN
|
|
788
|
+
# define _SC_NPROCESSORS_ONLN _SC_NPROC_ONLN
|
|
789
|
+
# elif defined _SC_CRAY_NCPU
|
|
790
|
+
# define _SC_NPROCESSORS_ONLN _SC_CRAY_NCPU
|
|
791
|
+
# endif
|
|
792
|
+
#endif
|
|
793
|
+
|
|
794
|
+
int git__online_cpus(void)
|
|
795
|
+
{
|
|
796
|
+
#ifdef _SC_NPROCESSORS_ONLN
|
|
797
|
+
long ncpus;
|
|
798
|
+
#endif
|
|
799
|
+
|
|
800
|
+
#ifdef _WIN32
|
|
801
|
+
SYSTEM_INFO info;
|
|
802
|
+
GetSystemInfo(&info);
|
|
803
|
+
|
|
804
|
+
if ((int)info.dwNumberOfProcessors > 0)
|
|
805
|
+
return (int)info.dwNumberOfProcessors;
|
|
806
|
+
#elif defined(hpux) || defined(__hpux) || defined(_hpux)
|
|
807
|
+
struct pst_dynamic psd;
|
|
808
|
+
|
|
809
|
+
if (!pstat_getdynamic(&psd, sizeof(psd), (size_t)1, 0))
|
|
810
|
+
return (int)psd.psd_proc_cnt;
|
|
811
|
+
#endif
|
|
812
|
+
|
|
813
|
+
#ifdef _SC_NPROCESSORS_ONLN
|
|
814
|
+
if ((ncpus = (long)sysconf(_SC_NPROCESSORS_ONLN)) > 0)
|
|
815
|
+
return (int)ncpus;
|
|
816
|
+
#endif
|
|
817
|
+
|
|
818
|
+
return 1;
|
|
819
|
+
}
|
data/vendor/libgit2/src/util.h
CHANGED
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
#include "buffer.h"
|
|
19
19
|
#include "common.h"
|
|
20
20
|
#include "strnlen.h"
|
|
21
|
-
#include "thread
|
|
21
|
+
#include "thread.h"
|
|
22
22
|
|
|
23
23
|
#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
|
|
24
24
|
#define bitsizeof(x) (CHAR_BIT * sizeof(x))
|
|
25
|
-
#define MSB(x, bits) ((x) & (~
|
|
25
|
+
#define MSB(x, bits) ((x) & (~UINT64_C(0) << (bitsizeof(x) - (bits))))
|
|
26
26
|
#ifndef min
|
|
27
27
|
# define min(a,b) ((a) < (b) ? (a) : (b))
|
|
28
28
|
#endif
|
|
@@ -168,30 +168,41 @@ extern int git__strncasecmp(const char *a, const char *b, size_t sz);
|
|
|
168
168
|
|
|
169
169
|
extern int git__strcasesort_cmp(const char *a, const char *b);
|
|
170
170
|
|
|
171
|
+
/*
|
|
172
|
+
* Compare some NUL-terminated `a` to a possibly non-NUL terminated
|
|
173
|
+
* `b` of length `b_len`; like `strncmp` but ensuring that
|
|
174
|
+
* `strlen(a) == b_len` as well.
|
|
175
|
+
*/
|
|
176
|
+
GIT_INLINE(int) git__strlcmp(const char *a, const char *b, size_t b_len)
|
|
177
|
+
{
|
|
178
|
+
int cmp = strncmp(a, b, b_len);
|
|
179
|
+
return cmp ? cmp : (int)a[b_len];
|
|
180
|
+
}
|
|
181
|
+
|
|
171
182
|
typedef struct {
|
|
172
|
-
|
|
183
|
+
git_atomic32 refcount;
|
|
173
184
|
void *owner;
|
|
174
185
|
} git_refcount;
|
|
175
186
|
|
|
176
187
|
typedef void (*git_refcount_freeptr)(void *r);
|
|
177
188
|
|
|
178
189
|
#define GIT_REFCOUNT_INC(r) { \
|
|
179
|
-
|
|
190
|
+
git_atomic32_inc(&(r)->rc.refcount); \
|
|
180
191
|
}
|
|
181
192
|
|
|
182
193
|
#define GIT_REFCOUNT_DEC(_r, do_free) { \
|
|
183
194
|
git_refcount *r = &(_r)->rc; \
|
|
184
|
-
int val =
|
|
195
|
+
int val = git_atomic32_dec(&r->refcount); \
|
|
185
196
|
if (val <= 0 && r->owner == NULL) { do_free(_r); } \
|
|
186
197
|
}
|
|
187
198
|
|
|
188
199
|
#define GIT_REFCOUNT_OWN(r, o) { \
|
|
189
|
-
(r)->rc.owner
|
|
200
|
+
(void)git_atomic_swap((r)->rc.owner, o); \
|
|
190
201
|
}
|
|
191
202
|
|
|
192
|
-
#define GIT_REFCOUNT_OWNER(r) ((r)->rc.owner)
|
|
203
|
+
#define GIT_REFCOUNT_OWNER(r) git_atomic_load((r)->rc.owner)
|
|
193
204
|
|
|
194
|
-
#define GIT_REFCOUNT_VAL(r)
|
|
205
|
+
#define GIT_REFCOUNT_VAL(r) git_atomic32_get((r)->rc.refcount)
|
|
195
206
|
|
|
196
207
|
|
|
197
208
|
static signed char from_hex[] = {
|
|
@@ -316,27 +327,6 @@ extern int git__date_rfc2822_fmt(char *out, size_t len, const git_time *date);
|
|
|
316
327
|
*/
|
|
317
328
|
extern size_t git__unescape(char *str);
|
|
318
329
|
|
|
319
|
-
/*
|
|
320
|
-
* Iterate through an UTF-8 string, yielding one
|
|
321
|
-
* codepoint at a time.
|
|
322
|
-
*
|
|
323
|
-
* @param str current position in the string
|
|
324
|
-
* @param str_len size left in the string; -1 if the string is NULL-terminated
|
|
325
|
-
* @param dst pointer where to store the current codepoint
|
|
326
|
-
* @return length in bytes of the read codepoint; -1 if the codepoint was invalid
|
|
327
|
-
*/
|
|
328
|
-
extern int git__utf8_iterate(const uint8_t *str, int str_len, int32_t *dst);
|
|
329
|
-
|
|
330
|
-
/*
|
|
331
|
-
* Iterate through an UTF-8 string and stops after finding any invalid UTF-8
|
|
332
|
-
* codepoints.
|
|
333
|
-
*
|
|
334
|
-
* @param str string to scan
|
|
335
|
-
* @param str_len size of the string
|
|
336
|
-
* @return length in bytes of the string that contains valid data
|
|
337
|
-
*/
|
|
338
|
-
extern size_t git__utf8_valid_buf_length(const uint8_t *str, size_t str_len);
|
|
339
|
-
|
|
340
330
|
/*
|
|
341
331
|
* Safely zero-out memory, making sure that the compiler
|
|
342
332
|
* doesn't optimize away the operation.
|
|
@@ -380,7 +370,7 @@ GIT_INLINE(double) git__timer(void)
|
|
|
380
370
|
return (double)time * scaling_factor / 1.0E9;
|
|
381
371
|
}
|
|
382
372
|
|
|
383
|
-
#elif defined(
|
|
373
|
+
#elif defined(__amigaos4__)
|
|
384
374
|
|
|
385
375
|
#include <proto/timer.h>
|
|
386
376
|
|
|
@@ -397,23 +387,27 @@ GIT_INLINE(double) git__timer(void)
|
|
|
397
387
|
|
|
398
388
|
GIT_INLINE(double) git__timer(void)
|
|
399
389
|
{
|
|
400
|
-
struct
|
|
390
|
+
struct timeval tv;
|
|
401
391
|
|
|
402
|
-
|
|
392
|
+
#ifdef CLOCK_MONOTONIC
|
|
393
|
+
struct timespec tp;
|
|
394
|
+
if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
|
|
403
395
|
return (double) tp.tv_sec + (double) tp.tv_nsec / 1.0E9;
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
return (double)tv.tv_sec + (double)tv.tv_usec / 1.0E6;
|
|
410
|
-
}
|
|
396
|
+
#endif
|
|
397
|
+
|
|
398
|
+
/* Fall back to using gettimeofday */
|
|
399
|
+
gettimeofday(&tv, NULL);
|
|
400
|
+
return (double)tv.tv_sec + (double)tv.tv_usec / 1.0E6;
|
|
411
401
|
}
|
|
412
402
|
|
|
413
403
|
#endif
|
|
414
404
|
|
|
415
405
|
extern int git__getenv(git_buf *out, const char *name);
|
|
416
406
|
|
|
407
|
+
extern int git__online_cpus(void);
|
|
408
|
+
|
|
409
|
+
GIT_INLINE(int) git__noop(void) { return 0; }
|
|
410
|
+
|
|
417
411
|
#include "alloc.h"
|
|
418
412
|
|
|
419
413
|
#endif
|