rugged 1.1.1 → 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 +1 -1
- data/ext/rugged/rugged.c +7 -4
- data/ext/rugged/rugged_object.c +1 -1
- data/ext/rugged/rugged_repo.c +3 -3
- data/lib/rugged/repository.rb +2 -2
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +11 -6
- data/vendor/libgit2/COPYING +109 -1
- data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +4 -0
- data/vendor/libgit2/cmake/SelectHashes.cmake +1 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +17 -5
- 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 +150 -118
- 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/include/git2/attr.h +89 -0
- data/vendor/libgit2/include/git2/blame.h +93 -42
- data/vendor/libgit2/include/git2/blob.h +14 -2
- 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 +14 -4
- data/vendor/libgit2/include/git2/deprecated.h +206 -6
- data/vendor/libgit2/include/git2/diff.h +34 -19
- data/vendor/libgit2/include/git2/errors.h +6 -6
- 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 +2 -2
- data/vendor/libgit2/include/git2/odb.h +29 -0
- 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 +6 -2
- data/vendor/libgit2/include/git2/remote.h +59 -6
- data/vendor/libgit2/include/git2/revparse.h +5 -5
- data/vendor/libgit2/include/git2/status.h +115 -59
- 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/tree.h +0 -14
- data/vendor/libgit2/include/git2/types.h +9 -0
- data/vendor/libgit2/include/git2/version.h +4 -4
- data/vendor/libgit2/include/git2/worktree.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +25 -4
- 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 +16 -7
- data/vendor/libgit2/src/array.h +11 -11
- data/vendor/libgit2/src/attr.c +181 -74
- data/vendor/libgit2/src/attr_file.c +84 -39
- data/vendor/libgit2/src/attr_file.h +32 -11
- data/vendor/libgit2/src/attrcache.c +42 -37
- data/vendor/libgit2/src/attrcache.h +4 -5
- data/vendor/libgit2/src/blame.c +11 -5
- data/vendor/libgit2/src/blob.c +35 -24
- data/vendor/libgit2/src/branch.c +69 -17
- data/vendor/libgit2/src/buffer.c +334 -25
- data/vendor/libgit2/src/buffer.h +153 -2
- data/vendor/libgit2/src/cache.c +2 -2
- data/vendor/libgit2/src/cache.h +7 -7
- data/vendor/libgit2/src/cc-compat.h +10 -2
- data/vendor/libgit2/src/checkout.c +48 -26
- data/vendor/libgit2/src/cherrypick.c +6 -2
- data/vendor/libgit2/src/clone.c +41 -47
- 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 +25 -2
- data/vendor/libgit2/src/config.c +37 -15
- data/vendor/libgit2/src/config_cache.c +5 -3
- data/vendor/libgit2/src/config_file.c +16 -8
- data/vendor/libgit2/src/config_parse.c +4 -6
- 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 +6 -3
- data/vendor/libgit2/src/diff.c +11 -8
- data/vendor/libgit2/src/diff_driver.c +21 -17
- data/vendor/libgit2/src/diff_file.c +2 -6
- data/vendor/libgit2/src/diff_generate.c +46 -17
- data/vendor/libgit2/src/diff_print.c +19 -6
- data/vendor/libgit2/src/diff_stats.c +7 -5
- data/vendor/libgit2/src/diff_tform.c +9 -8
- data/vendor/libgit2/src/diff_xdiff.c +4 -2
- data/vendor/libgit2/src/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/errors.c +24 -19
- data/vendor/libgit2/src/features.h.in +5 -1
- data/vendor/libgit2/src/fetch.c +5 -2
- data/vendor/libgit2/src/fetchhead.c +8 -4
- data/vendor/libgit2/src/filebuf.c +9 -7
- data/vendor/libgit2/src/filter.c +206 -110
- data/vendor/libgit2/src/filter.h +24 -5
- data/vendor/libgit2/src/futils.c +5 -5
- data/vendor/libgit2/src/futils.h +1 -1
- 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/ignore.c +35 -19
- data/vendor/libgit2/src/index.c +106 -70
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +31 -29
- data/vendor/libgit2/src/integer.h +64 -2
- data/vendor/libgit2/src/iterator.c +36 -24
- data/vendor/libgit2/src/iterator.h +1 -1
- data/vendor/libgit2/src/khash.h +2 -11
- data/vendor/libgit2/src/{settings.c → libgit2.c} +117 -50
- 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 +70 -30
- data/vendor/libgit2/src/merge.h +2 -1
- data/vendor/libgit2/src/merge_driver.c +19 -13
- data/vendor/libgit2/src/merge_file.c +11 -3
- data/vendor/libgit2/src/message.c +3 -1
- data/vendor/libgit2/src/midx.c +471 -10
- data/vendor/libgit2/src/midx.h +28 -1
- data/vendor/libgit2/src/mwindow.c +103 -59
- data/vendor/libgit2/src/mwindow.h +3 -3
- data/vendor/libgit2/src/net.c +127 -3
- 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 +22 -14
- data/vendor/libgit2/src/odb.c +285 -48
- data/vendor/libgit2/src/odb.h +16 -2
- data/vendor/libgit2/src/odb_loose.c +28 -18
- data/vendor/libgit2/src/odb_mempack.c +1 -1
- data/vendor/libgit2/src/odb_pack.c +391 -114
- data/vendor/libgit2/src/oid.c +5 -4
- data/vendor/libgit2/src/pack-objects.c +54 -48
- data/vendor/libgit2/src/pack.c +329 -119
- data/vendor/libgit2/src/pack.h +25 -7
- data/vendor/libgit2/src/patch.c +14 -7
- data/vendor/libgit2/src/patch_generate.c +2 -2
- data/vendor/libgit2/src/patch_parse.c +2 -1
- data/vendor/libgit2/src/path.c +98 -53
- data/vendor/libgit2/src/path.h +79 -6
- data/vendor/libgit2/src/pathspec.c +8 -8
- data/vendor/libgit2/src/pool.c +13 -7
- data/vendor/libgit2/src/posix.c +11 -3
- data/vendor/libgit2/src/reader.c +10 -6
- data/vendor/libgit2/src/rebase.c +93 -49
- data/vendor/libgit2/src/refdb.c +30 -13
- data/vendor/libgit2/src/refdb_fs.c +121 -69
- data/vendor/libgit2/src/reflog.c +19 -14
- data/vendor/libgit2/src/refs.c +76 -41
- data/vendor/libgit2/src/refspec.c +32 -12
- data/vendor/libgit2/src/remote.c +272 -102
- data/vendor/libgit2/src/remote.h +2 -1
- data/vendor/libgit2/src/repository.c +176 -103
- data/vendor/libgit2/src/repository.h +12 -1
- data/vendor/libgit2/src/reset.c +7 -6
- data/vendor/libgit2/src/revert.c +6 -2
- data/vendor/libgit2/src/revparse.c +14 -9
- data/vendor/libgit2/src/revwalk.c +32 -15
- data/vendor/libgit2/src/runtime.c +162 -0
- data/vendor/libgit2/src/runtime.h +62 -0
- data/vendor/libgit2/src/settings.h +11 -0
- data/vendor/libgit2/src/signature.c +6 -5
- data/vendor/libgit2/src/sortedcache.h +10 -8
- data/vendor/libgit2/src/stash.c +3 -1
- data/vendor/libgit2/src/status.c +7 -4
- data/vendor/libgit2/src/strarray.c +2 -1
- 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 +101 -201
- 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 +5 -6
- 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 +128 -62
- data/vendor/libgit2/src/submodule.h +9 -9
- data/vendor/libgit2/src/sysdir.c +4 -6
- data/vendor/libgit2/src/tag.c +47 -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 +19 -8
- 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 +15 -7
- 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 +53 -26
- data/vendor/libgit2/src/transports/httpclient.h +1 -1
- data/vendor/libgit2/src/transports/local.c +3 -3
- data/vendor/libgit2/src/transports/smart.c +12 -7
- 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 +41 -31
- 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/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 +53 -129
- 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/map.c +1 -1
- data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
- data/vendor/libgit2/src/win32/path_w32.c +22 -24
- data/vendor/libgit2/src/win32/path_w32.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +7 -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 +27 -16
- data/vendor/libgit2/src/zstream.c +1 -1
- metadata +32 -16
- 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 -363
- 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 -369
- 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
data/vendor/libgit2/src/tree.h
CHANGED
data/vendor/libgit2/src/tsort.c
CHANGED
|
@@ -66,8 +66,10 @@ int p_mmap(git_map *out, size_t len, int prot, int flags, int fd, off64_t offset
|
|
|
66
66
|
|
|
67
67
|
int p_munmap(git_map *map)
|
|
68
68
|
{
|
|
69
|
-
|
|
69
|
+
GIT_ASSERT_ARG(map);
|
|
70
70
|
munmap(map->data, map->len);
|
|
71
|
+
map->data = NULL;
|
|
72
|
+
map->len = 0;
|
|
71
73
|
|
|
72
74
|
return 0;
|
|
73
75
|
}
|
|
@@ -12,7 +12,8 @@ typedef struct {
|
|
|
12
12
|
pthread_t thread;
|
|
13
13
|
} git_thread;
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
GIT_INLINE(int) git_threads_global_init(void) { return 0; }
|
|
16
|
+
|
|
16
17
|
#define git_thread_create(git_thread_ptr, start_routine, arg) \
|
|
17
18
|
pthread_create(&(git_thread_ptr)->thread, NULL, start_routine, arg)
|
|
18
19
|
#define git_thread_join(git_thread_ptr, status) \
|
|
@@ -0,0 +1,150 @@
|
|
|
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
|
+
#include "utf8.h"
|
|
9
|
+
|
|
10
|
+
#include "common.h"
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
* git_utf8_iterate is taken from the utf8proc project,
|
|
14
|
+
* http://www.public-software-group.org/utf8proc
|
|
15
|
+
*
|
|
16
|
+
* Copyright (c) 2009 Public Software Group e. V., Berlin, Germany
|
|
17
|
+
*
|
|
18
|
+
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
19
|
+
* copy of this software and associated documentation files (the ""Software""),
|
|
20
|
+
* to deal in the Software without restriction, including without limitation
|
|
21
|
+
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
22
|
+
* and/or sell copies of the Software, and to permit persons to whom the
|
|
23
|
+
* Software is furnished to do so, subject to the following conditions:
|
|
24
|
+
*
|
|
25
|
+
* The above copyright notice and this permission notice shall be included in
|
|
26
|
+
* all copies or substantial portions of the Software.
|
|
27
|
+
*
|
|
28
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
29
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
30
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
31
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
32
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
33
|
+
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
34
|
+
* DEALINGS IN THE SOFTWARE.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
static const uint8_t utf8proc_utf8class[256] = {
|
|
38
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
39
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
40
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
41
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
42
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
43
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
44
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
45
|
+
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
46
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
47
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
48
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
49
|
+
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
50
|
+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
51
|
+
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
52
|
+
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
53
|
+
4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
static int utf8_charlen(const uint8_t *str, size_t str_len)
|
|
57
|
+
{
|
|
58
|
+
uint8_t length;
|
|
59
|
+
size_t i;
|
|
60
|
+
|
|
61
|
+
length = utf8proc_utf8class[str[0]];
|
|
62
|
+
if (!length)
|
|
63
|
+
return -1;
|
|
64
|
+
|
|
65
|
+
if (str_len > 0 && length > str_len)
|
|
66
|
+
return -1;
|
|
67
|
+
|
|
68
|
+
for (i = 1; i < length; i++) {
|
|
69
|
+
if ((str[i] & 0xC0) != 0x80)
|
|
70
|
+
return -1;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return (int)length;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
int git_utf8_iterate(uint32_t *out, const char *_str, size_t str_len)
|
|
77
|
+
{
|
|
78
|
+
const uint8_t *str = (const uint8_t *)_str;
|
|
79
|
+
uint32_t uc = 0;
|
|
80
|
+
int length;
|
|
81
|
+
|
|
82
|
+
*out = 0;
|
|
83
|
+
|
|
84
|
+
if ((length = utf8_charlen(str, str_len)) < 0)
|
|
85
|
+
return -1;
|
|
86
|
+
|
|
87
|
+
switch (length) {
|
|
88
|
+
case 1:
|
|
89
|
+
uc = str[0];
|
|
90
|
+
break;
|
|
91
|
+
case 2:
|
|
92
|
+
uc = ((str[0] & 0x1F) << 6) + (str[1] & 0x3F);
|
|
93
|
+
if (uc < 0x80) uc = -1;
|
|
94
|
+
break;
|
|
95
|
+
case 3:
|
|
96
|
+
uc = ((str[0] & 0x0F) << 12) + ((str[1] & 0x3F) << 6)
|
|
97
|
+
+ (str[2] & 0x3F);
|
|
98
|
+
if (uc < 0x800 || (uc >= 0xD800 && uc < 0xE000) ||
|
|
99
|
+
(uc >= 0xFDD0 && uc < 0xFDF0)) uc = -1;
|
|
100
|
+
break;
|
|
101
|
+
case 4:
|
|
102
|
+
uc = ((str[0] & 0x07) << 18) + ((str[1] & 0x3F) << 12)
|
|
103
|
+
+ ((str[2] & 0x3F) << 6) + (str[3] & 0x3F);
|
|
104
|
+
if (uc < 0x10000 || uc >= 0x110000) uc = -1;
|
|
105
|
+
break;
|
|
106
|
+
default:
|
|
107
|
+
return -1;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if ((uc & 0xFFFF) >= 0xFFFE)
|
|
111
|
+
return -1;
|
|
112
|
+
|
|
113
|
+
*out = uc;
|
|
114
|
+
return length;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
size_t git_utf8_char_length(const char *_str, size_t str_len)
|
|
118
|
+
{
|
|
119
|
+
const uint8_t *str = (const uint8_t *)_str;
|
|
120
|
+
size_t offset = 0, count = 0;
|
|
121
|
+
|
|
122
|
+
while (offset < str_len) {
|
|
123
|
+
int length = utf8_charlen(str + offset, str_len - offset);
|
|
124
|
+
|
|
125
|
+
if (length < 0)
|
|
126
|
+
length = 1;
|
|
127
|
+
|
|
128
|
+
offset += length;
|
|
129
|
+
count++;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return count;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
size_t git_utf8_valid_buf_length(const char *_str, size_t str_len)
|
|
136
|
+
{
|
|
137
|
+
const uint8_t *str = (const uint8_t *)_str;
|
|
138
|
+
size_t offset = 0;
|
|
139
|
+
|
|
140
|
+
while (offset < str_len) {
|
|
141
|
+
int length = utf8_charlen(str + offset, str_len - offset);
|
|
142
|
+
|
|
143
|
+
if (length < 0)
|
|
144
|
+
break;
|
|
145
|
+
|
|
146
|
+
offset += length;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return offset;
|
|
150
|
+
}
|
|
@@ -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,11 +27,15 @@
|
|
|
22
27
|
# include <Shlwapi.h>
|
|
23
28
|
#endif
|
|
24
29
|
|
|
30
|
+
#if defined(hpux) || defined(__hpux) || defined(_hpux)
|
|
31
|
+
# include <sys/pstat.h>
|
|
32
|
+
#endif
|
|
33
|
+
|
|
25
34
|
int git__strntol64(int64_t *result, const char *nptr, size_t nptr_len, const char **endptr, int base)
|
|
26
35
|
{
|
|
27
36
|
const char *p;
|
|
28
|
-
int64_t n, nn;
|
|
29
|
-
int c, ovfl,
|
|
37
|
+
int64_t n, nn, v;
|
|
38
|
+
int c, ovfl, neg, ndig;
|
|
30
39
|
|
|
31
40
|
p = nptr;
|
|
32
41
|
neg = 0;
|
|
@@ -101,19 +110,11 @@ int git__strntol64(int64_t *result, const char *nptr, size_t nptr_len, const cha
|
|
|
101
110
|
if (v >= base)
|
|
102
111
|
break;
|
|
103
112
|
v = neg ? -v : v;
|
|
104
|
-
if (n
|
|
105
|
-
ovfl = 1;
|
|
106
|
-
/* Keep on iterating until the end of this number */
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
nn = n * base;
|
|
110
|
-
if ((v > 0 && nn > INT64_MAX - v) ||
|
|
111
|
-
(v < 0 && nn < INT64_MIN - v)) {
|
|
113
|
+
if (git__multiply_int64_overflow(&nn, n, base) || git__add_int64_overflow(&n, nn, v)) {
|
|
112
114
|
ovfl = 1;
|
|
113
115
|
/* Keep on iterating until the end of this number */
|
|
114
116
|
continue;
|
|
115
117
|
}
|
|
116
|
-
n = nn + v;
|
|
117
118
|
}
|
|
118
119
|
|
|
119
120
|
Return:
|
|
@@ -678,7 +679,7 @@ typedef struct {
|
|
|
678
679
|
void *payload;
|
|
679
680
|
} git__qsort_r_glue;
|
|
680
681
|
|
|
681
|
-
static int
|
|
682
|
+
static int GIT_LIBGIT2_CALL git__qsort_r_glue_cmp(
|
|
682
683
|
void *payload, const void *a, const void *b)
|
|
683
684
|
{
|
|
684
685
|
git__qsort_r_glue *glue = payload;
|
|
@@ -733,123 +734,6 @@ void git__qsort_r(
|
|
|
733
734
|
#endif
|
|
734
735
|
}
|
|
735
736
|
|
|
736
|
-
/*
|
|
737
|
-
* git__utf8_iterate is taken from the utf8proc project,
|
|
738
|
-
* http://www.public-software-group.org/utf8proc
|
|
739
|
-
*
|
|
740
|
-
* Copyright (c) 2009 Public Software Group e. V., Berlin, Germany
|
|
741
|
-
*
|
|
742
|
-
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
743
|
-
* copy of this software and associated documentation files (the ""Software""),
|
|
744
|
-
* to deal in the Software without restriction, including without limitation
|
|
745
|
-
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
746
|
-
* and/or sell copies of the Software, and to permit persons to whom the
|
|
747
|
-
* Software is furnished to do so, subject to the following conditions:
|
|
748
|
-
*
|
|
749
|
-
* The above copyright notice and this permission notice shall be included in
|
|
750
|
-
* all copies or substantial portions of the Software.
|
|
751
|
-
*
|
|
752
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
753
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
754
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
755
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
756
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
757
|
-
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
758
|
-
* DEALINGS IN THE SOFTWARE.
|
|
759
|
-
*/
|
|
760
|
-
|
|
761
|
-
static const int8_t utf8proc_utf8class[256] = {
|
|
762
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
763
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
764
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
765
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
766
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
767
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
768
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
769
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
770
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
771
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
772
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
773
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
774
|
-
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
775
|
-
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
776
|
-
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
777
|
-
4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0
|
|
778
|
-
};
|
|
779
|
-
|
|
780
|
-
static int util_utf8_charlen(const uint8_t *str, size_t str_len)
|
|
781
|
-
{
|
|
782
|
-
size_t length, i;
|
|
783
|
-
|
|
784
|
-
length = utf8proc_utf8class[str[0]];
|
|
785
|
-
if (!length)
|
|
786
|
-
return -1;
|
|
787
|
-
|
|
788
|
-
if (str_len > 0 && length > str_len)
|
|
789
|
-
return -1;
|
|
790
|
-
|
|
791
|
-
for (i = 1; i < length; i++) {
|
|
792
|
-
if ((str[i] & 0xC0) != 0x80)
|
|
793
|
-
return -1;
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
return (int)length;
|
|
797
|
-
}
|
|
798
|
-
|
|
799
|
-
int git__utf8_iterate(const uint8_t *str, int str_len, int32_t *dst)
|
|
800
|
-
{
|
|
801
|
-
int length;
|
|
802
|
-
int32_t uc = -1;
|
|
803
|
-
|
|
804
|
-
*dst = -1;
|
|
805
|
-
length = util_utf8_charlen(str, str_len);
|
|
806
|
-
if (length < 0)
|
|
807
|
-
return -1;
|
|
808
|
-
|
|
809
|
-
switch (length) {
|
|
810
|
-
case 1:
|
|
811
|
-
uc = str[0];
|
|
812
|
-
break;
|
|
813
|
-
case 2:
|
|
814
|
-
uc = ((str[0] & 0x1F) << 6) + (str[1] & 0x3F);
|
|
815
|
-
if (uc < 0x80) uc = -1;
|
|
816
|
-
break;
|
|
817
|
-
case 3:
|
|
818
|
-
uc = ((str[0] & 0x0F) << 12) + ((str[1] & 0x3F) << 6)
|
|
819
|
-
+ (str[2] & 0x3F);
|
|
820
|
-
if (uc < 0x800 || (uc >= 0xD800 && uc < 0xE000) ||
|
|
821
|
-
(uc >= 0xFDD0 && uc < 0xFDF0)) uc = -1;
|
|
822
|
-
break;
|
|
823
|
-
case 4:
|
|
824
|
-
uc = ((str[0] & 0x07) << 18) + ((str[1] & 0x3F) << 12)
|
|
825
|
-
+ ((str[2] & 0x3F) << 6) + (str[3] & 0x3F);
|
|
826
|
-
if (uc < 0x10000 || uc >= 0x110000) uc = -1;
|
|
827
|
-
break;
|
|
828
|
-
}
|
|
829
|
-
|
|
830
|
-
if (uc < 0 || ((uc & 0xFFFF) >= 0xFFFE))
|
|
831
|
-
return -1;
|
|
832
|
-
|
|
833
|
-
*dst = uc;
|
|
834
|
-
return length;
|
|
835
|
-
}
|
|
836
|
-
|
|
837
|
-
size_t git__utf8_valid_buf_length(const uint8_t *str, size_t str_len)
|
|
838
|
-
{
|
|
839
|
-
size_t offset = 0;
|
|
840
|
-
|
|
841
|
-
while (offset < str_len) {
|
|
842
|
-
int length = util_utf8_charlen(str + offset, str_len - offset);
|
|
843
|
-
|
|
844
|
-
if (length < 0)
|
|
845
|
-
break;
|
|
846
|
-
|
|
847
|
-
offset += length;
|
|
848
|
-
}
|
|
849
|
-
|
|
850
|
-
return offset;
|
|
851
|
-
}
|
|
852
|
-
|
|
853
737
|
#ifdef GIT_WIN32
|
|
854
738
|
int git__getenv(git_buf *out, const char *name)
|
|
855
739
|
{
|
|
@@ -893,3 +777,43 @@ int git__getenv(git_buf *out, const char *name)
|
|
|
893
777
|
return git_buf_puts(out, val);
|
|
894
778
|
}
|
|
895
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
|
+
}
|