rugged 1.3.2.3 → 1.4.2
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/ext/rugged/extconf.rb +1 -1
- data/ext/rugged/rugged_config.c +7 -2
- data/ext/rugged/rugged_remote.c +17 -0
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +103 -276
- data/vendor/libgit2/COPYING +36 -19
- data/vendor/libgit2/cmake/AddCFlagIfSupported.cmake +21 -21
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +154 -0
- data/vendor/libgit2/cmake/EnableWarnings.cmake +13 -13
- data/vendor/libgit2/cmake/FindCoreFoundation.cmake +13 -13
- data/vendor/libgit2/cmake/FindGSSAPI.cmake +171 -287
- data/vendor/libgit2/cmake/FindGSSFramework.cmake +13 -13
- data/vendor/libgit2/cmake/{FindHTTP_Parser.cmake → FindHTTPParser.cmake} +17 -17
- data/vendor/libgit2/cmake/FindIconv.cmake +27 -27
- data/vendor/libgit2/cmake/FindLibSSH2.cmake +5 -5
- data/vendor/libgit2/cmake/FindPCRE.cmake +13 -13
- data/vendor/libgit2/cmake/FindPCRE2.cmake +12 -12
- data/vendor/libgit2/cmake/FindPkgLibraries.cmake +19 -19
- data/vendor/libgit2/cmake/FindSecurity.cmake +14 -14
- data/vendor/libgit2/cmake/FindStatNsec.cmake +12 -18
- data/vendor/libgit2/cmake/Findfutimens.cmake +8 -8
- data/vendor/libgit2/cmake/FindmbedTLS.cmake +63 -70
- data/vendor/libgit2/cmake/IdeSplitSources.cmake +18 -18
- data/vendor/libgit2/cmake/PkgBuildConfig.cmake +60 -60
- data/vendor/libgit2/cmake/SanitizeBool.cmake +20 -20
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +37 -37
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +19 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +100 -100
- data/vendor/libgit2/cmake/SelectHashes.cmake +39 -49
- data/vendor/libgit2/cmake/SelectRegex.cmake +51 -0
- data/vendor/libgit2/cmake/SelectSSH.cmake +41 -0
- data/vendor/libgit2/cmake/SelectWinHTTP.cmake +17 -0
- data/vendor/libgit2/cmake/SelectZlib.cmake +34 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +6 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +31 -31
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +1 -1
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +2 -2
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +88 -88
- data/vendor/libgit2/deps/winhttp/CMakeLists.txt +14 -16
- data/vendor/libgit2/deps/zlib/adler32.c +0 -7
- data/vendor/libgit2/deps/zlib/crc32.c +288 -975
- data/vendor/libgit2/deps/zlib/crc32.h +436 -9441
- data/vendor/libgit2/deps/zlib/deflate.c +31 -83
- data/vendor/libgit2/deps/zlib/deflate.h +15 -12
- data/vendor/libgit2/deps/zlib/gzguts.h +2 -3
- data/vendor/libgit2/deps/zlib/infback.c +1 -2
- data/vendor/libgit2/deps/zlib/inffast.c +14 -14
- data/vendor/libgit2/deps/zlib/inflate.c +8 -39
- data/vendor/libgit2/deps/zlib/inflate.h +2 -3
- data/vendor/libgit2/deps/zlib/inftrees.c +3 -3
- data/vendor/libgit2/deps/zlib/trees.c +48 -27
- data/vendor/libgit2/deps/zlib/zlib.h +100 -126
- data/vendor/libgit2/deps/zlib/zutil.c +2 -2
- data/vendor/libgit2/deps/zlib/zutil.h +9 -12
- data/vendor/libgit2/include/git2/apply.h +16 -2
- data/vendor/libgit2/include/git2/attr.h +11 -2
- data/vendor/libgit2/include/git2/blame.h +4 -1
- data/vendor/libgit2/include/git2/blob.h +14 -1
- data/vendor/libgit2/include/git2/branch.h +2 -0
- data/vendor/libgit2/include/git2/buffer.h +18 -78
- data/vendor/libgit2/include/git2/cert.h +2 -2
- data/vendor/libgit2/include/git2/checkout.h +5 -2
- data/vendor/libgit2/include/git2/clone.h +3 -3
- data/vendor/libgit2/include/git2/commit.h +2 -0
- data/vendor/libgit2/include/git2/common.h +5 -12
- data/vendor/libgit2/include/git2/config.h +19 -3
- data/vendor/libgit2/include/git2/credential.h +2 -1
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +1 -1
- data/vendor/libgit2/include/git2/describe.h +7 -2
- data/vendor/libgit2/include/git2/diff.h +17 -9
- data/vendor/libgit2/include/git2/email.h +1 -1
- data/vendor/libgit2/include/git2/errors.h +1 -2
- data/vendor/libgit2/include/git2/filter.h +7 -2
- data/vendor/libgit2/include/git2/graph.h +1 -0
- data/vendor/libgit2/include/git2/ignore.h +1 -1
- data/vendor/libgit2/include/git2/index.h +11 -5
- data/vendor/libgit2/include/git2/indexer.h +19 -0
- data/vendor/libgit2/include/git2/merge.h +23 -3
- data/vendor/libgit2/include/git2/message.h +2 -0
- data/vendor/libgit2/include/git2/object.h +23 -0
- data/vendor/libgit2/include/git2/odb.h +37 -7
- data/vendor/libgit2/include/git2/odb_backend.h +1 -1
- data/vendor/libgit2/include/git2/pack.h +24 -8
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/pathspec.h +1 -1
- data/vendor/libgit2/include/git2/proxy.h +1 -1
- data/vendor/libgit2/include/git2/rebase.h +9 -1
- data/vendor/libgit2/include/git2/refdb.h +3 -0
- data/vendor/libgit2/include/git2/reflog.h +1 -1
- data/vendor/libgit2/include/git2/refs.h +2 -2
- data/vendor/libgit2/include/git2/remote.h +184 -37
- data/vendor/libgit2/include/git2/repository.h +14 -9
- data/vendor/libgit2/include/git2/reset.h +2 -2
- data/vendor/libgit2/include/git2/revparse.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +4 -1
- data/vendor/libgit2/include/git2/signature.h +1 -1
- data/vendor/libgit2/include/git2/stash.h +3 -3
- data/vendor/libgit2/include/git2/status.h +9 -3
- data/vendor/libgit2/include/git2/submodule.h +7 -2
- data/vendor/libgit2/include/git2/sys/commit_graph.h +1 -1
- data/vendor/libgit2/include/git2/sys/odb_backend.h +2 -5
- data/vendor/libgit2/include/git2/sys/remote.h +31 -0
- data/vendor/libgit2/include/git2/sys/stream.h +1 -1
- data/vendor/libgit2/include/git2/sys/transport.h +25 -34
- data/vendor/libgit2/include/git2/tag.h +1 -0
- data/vendor/libgit2/include/git2/tree.h +4 -3
- data/vendor/libgit2/include/git2/types.h +7 -7
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +12 -2
- data/vendor/libgit2/src/CMakeLists.txt +189 -315
- data/vendor/libgit2/src/annotated_commit.h +1 -1
- data/vendor/libgit2/src/apply.c +18 -18
- data/vendor/libgit2/src/apply.h +2 -2
- data/vendor/libgit2/src/attr.c +18 -18
- data/vendor/libgit2/src/attr_file.c +17 -17
- data/vendor/libgit2/src/attr_file.h +4 -4
- data/vendor/libgit2/src/attrcache.c +17 -12
- data/vendor/libgit2/src/blame_git.c +1 -1
- data/vendor/libgit2/src/blob.c +33 -26
- data/vendor/libgit2/src/blob.h +1 -1
- data/vendor/libgit2/src/branch.c +150 -109
- data/vendor/libgit2/src/branch.h +15 -3
- data/vendor/libgit2/src/buf.c +126 -0
- data/vendor/libgit2/src/buf.h +50 -0
- data/vendor/libgit2/src/cc-compat.h +1 -1
- data/vendor/libgit2/src/checkout.c +74 -68
- data/vendor/libgit2/src/cherrypick.c +10 -10
- data/vendor/libgit2/src/clone.c +66 -66
- data/vendor/libgit2/src/commit.c +128 -58
- data/vendor/libgit2/src/commit.h +24 -1
- data/vendor/libgit2/src/commit_graph.c +68 -53
- data/vendor/libgit2/src/commit_graph.h +10 -3
- data/vendor/libgit2/src/commit_list.c +2 -3
- data/vendor/libgit2/src/common.h +10 -3
- data/vendor/libgit2/src/config.c +99 -77
- data/vendor/libgit2/src/config.h +15 -2
- data/vendor/libgit2/src/config_file.c +103 -91
- data/vendor/libgit2/src/config_mem.c +9 -9
- data/vendor/libgit2/src/config_parse.c +27 -23
- data/vendor/libgit2/src/crlf.c +24 -21
- data/vendor/libgit2/src/date.c +10 -17
- data/vendor/libgit2/src/date.h +33 -0
- data/vendor/libgit2/src/describe.c +27 -19
- data/vendor/libgit2/src/diff.c +25 -8
- data/vendor/libgit2/src/diff.h +2 -4
- data/vendor/libgit2/src/diff_driver.c +34 -36
- data/vendor/libgit2/src/diff_driver.h +3 -3
- data/vendor/libgit2/src/diff_file.c +29 -20
- data/vendor/libgit2/src/diff_generate.c +30 -6
- data/vendor/libgit2/src/diff_generate.h +5 -3
- data/vendor/libgit2/src/diff_print.c +102 -95
- data/vendor/libgit2/src/diff_stats.c +40 -29
- data/vendor/libgit2/src/{message.h → diff_stats.h} +7 -6
- data/vendor/libgit2/src/diff_tform.c +9 -8
- data/vendor/libgit2/src/diff_xdiff.c +3 -8
- data/vendor/libgit2/src/email.c +54 -38
- data/vendor/libgit2/src/email.h +1 -1
- data/vendor/libgit2/src/errors.c +18 -18
- data/vendor/libgit2/src/features.h.in +6 -1
- data/vendor/libgit2/src/fetch.c +69 -24
- data/vendor/libgit2/src/fetch.h +1 -1
- data/vendor/libgit2/src/fetchhead.c +19 -19
- data/vendor/libgit2/src/filebuf.c +28 -28
- data/vendor/libgit2/src/filebuf.h +1 -1
- data/vendor/libgit2/src/filter.c +96 -52
- data/vendor/libgit2/src/filter.h +26 -5
- data/vendor/libgit2/src/fs_path.c +1912 -0
- data/vendor/libgit2/src/fs_path.h +752 -0
- data/vendor/libgit2/src/futils.c +91 -85
- data/vendor/libgit2/src/futils.h +26 -14
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +2 -2
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +2 -2
- data/vendor/libgit2/src/hash/sha1/generic.c +2 -2
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +2 -2
- data/vendor/libgit2/src/hash/sha1/openssl.c +2 -2
- data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +1 -1
- data/vendor/libgit2/src/hash/sha1/win32.c +6 -6
- data/vendor/libgit2/src/hash/sha1.h +3 -1
- data/vendor/libgit2/src/hash.c +67 -35
- data/vendor/libgit2/src/hash.h +12 -12
- data/vendor/libgit2/src/ident.c +18 -18
- data/vendor/libgit2/src/ignore.c +35 -34
- data/vendor/libgit2/src/ignore.h +2 -2
- data/vendor/libgit2/src/index.c +79 -80
- data/vendor/libgit2/src/index.h +6 -3
- data/vendor/libgit2/src/indexer.c +75 -57
- data/vendor/libgit2/src/iterator.c +64 -56
- data/vendor/libgit2/src/iterator.h +5 -5
- data/vendor/libgit2/src/khash.h +1 -1
- data/vendor/libgit2/src/libgit2.c +22 -19
- data/vendor/libgit2/src/mailmap.c +38 -36
- data/vendor/libgit2/src/merge.c +27 -27
- data/vendor/libgit2/src/merge.h +1 -14
- data/vendor/libgit2/src/merge_driver.c +2 -2
- data/vendor/libgit2/src/merge_file.c +13 -3
- data/vendor/libgit2/src/message.c +21 -10
- data/vendor/libgit2/src/midx.c +83 -66
- data/vendor/libgit2/src/midx.h +3 -3
- data/vendor/libgit2/src/mwindow.c +1 -1
- data/vendor/libgit2/src/net.c +278 -68
- data/vendor/libgit2/src/net.h +10 -3
- data/vendor/libgit2/src/netops.c +1 -1
- data/vendor/libgit2/src/netops.h +1 -1
- data/vendor/libgit2/src/notes.c +20 -29
- data/vendor/libgit2/src/object.c +49 -9
- data/vendor/libgit2/src/object.h +1 -1
- data/vendor/libgit2/src/odb.c +35 -32
- data/vendor/libgit2/src/odb.h +1 -1
- data/vendor/libgit2/src/odb_loose.c +68 -68
- data/vendor/libgit2/src/odb_mempack.c +18 -5
- data/vendor/libgit2/src/odb_pack.c +43 -43
- data/vendor/libgit2/src/oid.c +11 -4
- data/vendor/libgit2/src/oid.h +15 -0
- data/vendor/libgit2/src/pack-objects.c +41 -26
- data/vendor/libgit2/src/pack-objects.h +11 -6
- data/vendor/libgit2/src/pack.c +10 -10
- data/vendor/libgit2/src/patch.c +3 -3
- data/vendor/libgit2/src/patch.h +1 -0
- data/vendor/libgit2/src/patch_generate.c +27 -11
- data/vendor/libgit2/src/patch_generate.h +5 -5
- data/vendor/libgit2/src/patch_parse.c +24 -24
- data/vendor/libgit2/src/path.c +76 -1951
- data/vendor/libgit2/src/path.h +34 -741
- data/vendor/libgit2/src/pathspec.c +6 -6
- data/vendor/libgit2/src/pathspec.h +2 -2
- data/vendor/libgit2/src/posix.c +3 -3
- data/vendor/libgit2/src/posix.h +1 -0
- data/vendor/libgit2/src/pqueue.h +1 -1
- data/vendor/libgit2/src/proxy.c +4 -1
- data/vendor/libgit2/src/proxy.h +1 -1
- data/vendor/libgit2/src/push.c +30 -35
- data/vendor/libgit2/src/push.h +4 -16
- data/vendor/libgit2/src/rand.c +226 -0
- data/vendor/libgit2/src/rand.h +37 -0
- data/vendor/libgit2/src/reader.c +8 -8
- data/vendor/libgit2/src/reader.h +2 -2
- data/vendor/libgit2/src/rebase.c +89 -88
- data/vendor/libgit2/src/refdb_fs.c +447 -173
- data/vendor/libgit2/src/refs.c +32 -32
- data/vendor/libgit2/src/refs.h +2 -2
- data/vendor/libgit2/src/refspec.c +32 -37
- data/vendor/libgit2/src/refspec.h +5 -2
- data/vendor/libgit2/src/regexp.c +1 -1
- data/vendor/libgit2/src/remote.c +713 -419
- data/vendor/libgit2/src/remote.h +15 -10
- data/vendor/libgit2/src/repository.c +350 -467
- data/vendor/libgit2/src/repository.h +11 -10
- data/vendor/libgit2/src/reset.c +8 -5
- data/vendor/libgit2/src/revert.c +10 -10
- data/vendor/libgit2/src/revparse.c +48 -35
- data/vendor/libgit2/src/revwalk.c +7 -7
- data/vendor/libgit2/src/signature.c +12 -6
- data/vendor/libgit2/src/signature.h +1 -1
- data/vendor/libgit2/src/sortedcache.c +1 -1
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +36 -37
- data/vendor/libgit2/src/status.c +4 -1
- data/vendor/libgit2/src/{buffer.c → str.c} +157 -151
- data/vendor/libgit2/src/str.h +357 -0
- data/vendor/libgit2/src/streams/mbedtls.c +8 -6
- data/vendor/libgit2/src/streams/openssl_dynamic.h +3 -3
- data/vendor/libgit2/src/submodule.c +171 -159
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +68 -52
- data/vendor/libgit2/src/sysdir.h +15 -10
- data/vendor/libgit2/src/tag.c +29 -27
- data/vendor/libgit2/src/thread.h +3 -3
- data/vendor/libgit2/src/threadstate.c +3 -3
- data/vendor/libgit2/src/threadstate.h +1 -1
- data/vendor/libgit2/src/trace.c +1 -14
- data/vendor/libgit2/src/trace.h +5 -22
- data/vendor/libgit2/src/trailer.c +1 -1
- data/vendor/libgit2/src/transaction.c +1 -1
- data/vendor/libgit2/src/transport.c +10 -10
- data/vendor/libgit2/src/transports/auth.c +7 -9
- data/vendor/libgit2/src/transports/auth.h +2 -3
- data/vendor/libgit2/src/transports/auth_negotiate.c +12 -13
- data/vendor/libgit2/src/transports/auth_ntlm.c +10 -10
- data/vendor/libgit2/src/transports/auth_ntlm.h +0 -1
- data/vendor/libgit2/src/transports/git.c +9 -11
- data/vendor/libgit2/src/transports/http.c +37 -17
- data/vendor/libgit2/src/transports/http.h +2 -3
- data/vendor/libgit2/src/transports/httpclient.c +65 -65
- data/vendor/libgit2/src/transports/local.c +124 -116
- data/vendor/libgit2/src/transports/smart.c +51 -139
- data/vendor/libgit2/src/transports/smart.h +25 -31
- data/vendor/libgit2/src/transports/smart_pkt.c +33 -33
- data/vendor/libgit2/src/transports/smart_protocol.c +57 -39
- data/vendor/libgit2/src/transports/ssh.c +47 -112
- data/vendor/libgit2/src/transports/winhttp.c +50 -56
- data/vendor/libgit2/src/tree-cache.c +5 -5
- data/vendor/libgit2/src/tree-cache.h +2 -2
- data/vendor/libgit2/src/tree.c +59 -48
- data/vendor/libgit2/src/tree.h +1 -1
- data/vendor/libgit2/src/unix/map.c +0 -2
- data/vendor/libgit2/src/unix/posix.h +1 -4
- data/vendor/libgit2/src/unix/realpath.c +0 -2
- data/vendor/libgit2/src/util.c +14 -14
- data/vendor/libgit2/src/util.h +2 -28
- data/vendor/libgit2/src/vector.h +1 -1
- data/vendor/libgit2/src/win32/findfile.c +172 -116
- data/vendor/libgit2/src/win32/findfile.h +7 -4
- data/vendor/libgit2/src/win32/path_w32.c +140 -9
- data/vendor/libgit2/src/win32/path_w32.h +2 -0
- data/vendor/libgit2/src/win32/posix.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +11 -27
- data/vendor/libgit2/src/win32/w32_buffer.c +2 -3
- data/vendor/libgit2/src/win32/w32_buffer.h +2 -3
- data/vendor/libgit2/src/win32/w32_leakcheck.c +1 -1
- data/vendor/libgit2/src/worktree.c +116 -94
- data/vendor/libgit2/src/worktree.h +1 -1
- data/vendor/libgit2/src/xdiff/git-xdiff.h +53 -0
- data/vendor/libgit2/src/xdiff/xdiff.h +15 -15
- data/vendor/libgit2/src/xdiff/xdiffi.c +134 -108
- data/vendor/libgit2/src/xdiff/xemit.c +23 -7
- data/vendor/libgit2/src/xdiff/xhistogram.c +87 -78
- data/vendor/libgit2/src/xdiff/xinclude.h +1 -12
- data/vendor/libgit2/src/xdiff/xmerge.c +104 -117
- data/vendor/libgit2/src/xdiff/xpatience.c +6 -17
- data/vendor/libgit2/src/xdiff/xprepare.c +15 -20
- data/vendor/libgit2/src/xdiff/xutils.c +18 -7
- data/vendor/libgit2/src/zstream.c +5 -5
- data/vendor/libgit2/src/zstream.h +4 -4
- metadata +25 -10
- data/vendor/libgit2/src/buffer.h +0 -374
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
#include "tree.h"
|
|
11
11
|
#include "index.h"
|
|
12
|
+
#include "path.h"
|
|
12
13
|
|
|
13
14
|
#define GIT_ITERATOR_FIRST_ACCESS (1 << 15)
|
|
14
15
|
#define GIT_ITERATOR_HONOR_IGNORES (1 << 16)
|
|
@@ -292,7 +293,7 @@ typedef enum {
|
|
|
292
293
|
ITERATOR_PATHLIST_IS_FILE = 1,
|
|
293
294
|
ITERATOR_PATHLIST_IS_DIR = 2,
|
|
294
295
|
ITERATOR_PATHLIST_IS_PARENT = 3,
|
|
295
|
-
ITERATOR_PATHLIST_FULL = 4
|
|
296
|
+
ITERATOR_PATHLIST_FULL = 4
|
|
296
297
|
} iterator_pathlist_search_t;
|
|
297
298
|
|
|
298
299
|
static iterator_pathlist_search_t iterator_pathlist_search(
|
|
@@ -424,7 +425,7 @@ typedef struct {
|
|
|
424
425
|
git_tree *tree;
|
|
425
426
|
|
|
426
427
|
/* path to this particular frame (folder) */
|
|
427
|
-
|
|
428
|
+
git_str path;
|
|
428
429
|
|
|
429
430
|
/* a sorted list of the entries for this frame (folder), these are
|
|
430
431
|
* actually pointers to the iterator's entry pool.
|
|
@@ -441,7 +442,7 @@ typedef struct {
|
|
|
441
442
|
* parent path.
|
|
442
443
|
*/
|
|
443
444
|
git_vector similar_trees;
|
|
444
|
-
git_array_t(
|
|
445
|
+
git_array_t(git_str) similar_paths;
|
|
445
446
|
} tree_iterator_frame;
|
|
446
447
|
|
|
447
448
|
typedef struct {
|
|
@@ -450,7 +451,7 @@ typedef struct {
|
|
|
450
451
|
git_array_t(tree_iterator_frame) frames;
|
|
451
452
|
|
|
452
453
|
git_index_entry entry;
|
|
453
|
-
|
|
454
|
+
git_str entry_path;
|
|
454
455
|
|
|
455
456
|
/* a pool of entries to reduce the number of allocations */
|
|
456
457
|
git_pool entry_pool;
|
|
@@ -472,7 +473,7 @@ GIT_INLINE(tree_iterator_frame *) tree_iterator_current_frame(
|
|
|
472
473
|
GIT_INLINE(int) tree_entry_cmp(
|
|
473
474
|
const git_tree_entry *a, const git_tree_entry *b, bool icase)
|
|
474
475
|
{
|
|
475
|
-
return
|
|
476
|
+
return git_fs_path_cmp(
|
|
476
477
|
a->filename, a->filename_len, a->attr == GIT_FILEMODE_TREE,
|
|
477
478
|
b->filename, b->filename_len, b->attr == GIT_FILEMODE_TREE,
|
|
478
479
|
icase ? git__strncasecmp : git__strncmp);
|
|
@@ -508,20 +509,20 @@ static int tree_iterator_entry_sort_icase(const void *ptr_a, const void *ptr_b)
|
|
|
508
509
|
}
|
|
509
510
|
|
|
510
511
|
static int tree_iterator_compute_path(
|
|
511
|
-
|
|
512
|
+
git_str *out,
|
|
512
513
|
tree_iterator_entry *entry)
|
|
513
514
|
{
|
|
514
|
-
|
|
515
|
+
git_str_clear(out);
|
|
515
516
|
|
|
516
517
|
if (entry->parent_path)
|
|
517
|
-
|
|
518
|
+
git_str_joinpath(out, entry->parent_path, entry->tree_entry->filename);
|
|
518
519
|
else
|
|
519
|
-
|
|
520
|
+
git_str_puts(out, entry->tree_entry->filename);
|
|
520
521
|
|
|
521
522
|
if (git_tree_entry__is_tree(entry->tree_entry))
|
|
522
|
-
|
|
523
|
+
git_str_putc(out, '/');
|
|
523
524
|
|
|
524
|
-
if (
|
|
525
|
+
if (git_str_oom(out))
|
|
525
526
|
return -1;
|
|
526
527
|
|
|
527
528
|
return 0;
|
|
@@ -601,7 +602,7 @@ GIT_INLINE(int) tree_iterator_frame_push_neighbors(
|
|
|
601
602
|
tree_iterator_entry *entry, *new_entry;
|
|
602
603
|
git_tree *tree = NULL;
|
|
603
604
|
git_tree_entry *tree_entry;
|
|
604
|
-
|
|
605
|
+
git_str *path;
|
|
605
606
|
size_t new_size, i;
|
|
606
607
|
int error = 0;
|
|
607
608
|
|
|
@@ -621,7 +622,7 @@ GIT_INLINE(int) tree_iterator_frame_push_neighbors(
|
|
|
621
622
|
path = git_array_alloc(parent_frame->similar_paths);
|
|
622
623
|
GIT_ERROR_CHECK_ALLOC(path);
|
|
623
624
|
|
|
624
|
-
memset(path, 0, sizeof(
|
|
625
|
+
memset(path, 0, sizeof(git_str));
|
|
625
626
|
|
|
626
627
|
if ((error = tree_iterator_compute_path(path, entry)) < 0)
|
|
627
628
|
break;
|
|
@@ -681,7 +682,7 @@ done:
|
|
|
681
682
|
static int tree_iterator_frame_pop(tree_iterator *iter)
|
|
682
683
|
{
|
|
683
684
|
tree_iterator_frame *frame;
|
|
684
|
-
|
|
685
|
+
git_str *buf = NULL;
|
|
685
686
|
git_tree *tree;
|
|
686
687
|
size_t i;
|
|
687
688
|
|
|
@@ -694,7 +695,7 @@ static int tree_iterator_frame_pop(tree_iterator *iter)
|
|
|
694
695
|
|
|
695
696
|
do {
|
|
696
697
|
buf = git_array_pop(frame->similar_paths);
|
|
697
|
-
|
|
698
|
+
git_str_dispose(buf);
|
|
698
699
|
} while (buf != NULL);
|
|
699
700
|
|
|
700
701
|
git_array_clear(frame->similar_paths);
|
|
@@ -704,7 +705,7 @@ static int tree_iterator_frame_pop(tree_iterator *iter)
|
|
|
704
705
|
|
|
705
706
|
git_vector_free(&frame->similar_trees);
|
|
706
707
|
|
|
707
|
-
|
|
708
|
+
git_str_dispose(&frame->path);
|
|
708
709
|
|
|
709
710
|
return 0;
|
|
710
711
|
}
|
|
@@ -892,7 +893,7 @@ static void tree_iterator_clear(tree_iterator *iter)
|
|
|
892
893
|
git_array_clear(iter->frames);
|
|
893
894
|
|
|
894
895
|
git_pool_clear(&iter->entry_pool);
|
|
895
|
-
|
|
896
|
+
git_str_clear(&iter->entry_path);
|
|
896
897
|
|
|
897
898
|
iterator_clear(&iter->base);
|
|
898
899
|
}
|
|
@@ -925,7 +926,7 @@ static void tree_iterator_free(git_iterator *i)
|
|
|
925
926
|
tree_iterator_clear(iter);
|
|
926
927
|
|
|
927
928
|
git_tree_free(iter->root);
|
|
928
|
-
|
|
929
|
+
git_str_dispose(&iter->entry_path);
|
|
929
930
|
}
|
|
930
931
|
|
|
931
932
|
int git_iterator_for_tree(
|
|
@@ -1040,11 +1041,11 @@ typedef struct {
|
|
|
1040
1041
|
|
|
1041
1042
|
/* info about the current entry */
|
|
1042
1043
|
git_index_entry entry;
|
|
1043
|
-
|
|
1044
|
+
git_str current_path;
|
|
1044
1045
|
int current_is_ignored;
|
|
1045
1046
|
|
|
1046
1047
|
/* temporary buffer for advance_over */
|
|
1047
|
-
|
|
1048
|
+
git_str tmp_buf;
|
|
1048
1049
|
} filesystem_iterator;
|
|
1049
1050
|
|
|
1050
1051
|
|
|
@@ -1266,7 +1267,7 @@ static int filesystem_iterator_entry_hash(
|
|
|
1266
1267
|
filesystem_iterator *iter,
|
|
1267
1268
|
filesystem_iterator_entry *entry)
|
|
1268
1269
|
{
|
|
1269
|
-
|
|
1270
|
+
git_str fullpath = GIT_STR_INIT;
|
|
1270
1271
|
int error;
|
|
1271
1272
|
|
|
1272
1273
|
if (S_ISDIR(entry->st.st_mode)) {
|
|
@@ -1278,11 +1279,11 @@ static int filesystem_iterator_entry_hash(
|
|
|
1278
1279
|
return git_repository_hashfile(&entry->id,
|
|
1279
1280
|
iter->base.repo, entry->path, GIT_OBJECT_BLOB, NULL);
|
|
1280
1281
|
|
|
1281
|
-
if (!(error =
|
|
1282
|
-
!(error =
|
|
1282
|
+
if (!(error = git_str_joinpath(&fullpath, iter->root, entry->path)) &&
|
|
1283
|
+
!(error = git_path_validate_str_length(iter->base.repo, &fullpath)))
|
|
1283
1284
|
error = git_odb_hashfile(&entry->id, fullpath.ptr, GIT_OBJECT_BLOB);
|
|
1284
1285
|
|
|
1285
|
-
|
|
1286
|
+
git_str_dispose(&fullpath);
|
|
1286
1287
|
return error;
|
|
1287
1288
|
}
|
|
1288
1289
|
|
|
@@ -1336,8 +1337,8 @@ static int filesystem_iterator_frame_push(
|
|
|
1336
1337
|
filesystem_iterator_entry *frame_entry)
|
|
1337
1338
|
{
|
|
1338
1339
|
filesystem_iterator_frame *new_frame = NULL;
|
|
1339
|
-
|
|
1340
|
-
|
|
1340
|
+
git_fs_path_diriter diriter = GIT_FS_PATH_DIRITER_INIT;
|
|
1341
|
+
git_str root = GIT_STR_INIT;
|
|
1341
1342
|
const char *path;
|
|
1342
1343
|
filesystem_iterator_entry *entry;
|
|
1343
1344
|
struct stat statbuf;
|
|
@@ -1356,12 +1357,12 @@ static int filesystem_iterator_frame_push(
|
|
|
1356
1357
|
memset(new_frame, 0, sizeof(filesystem_iterator_frame));
|
|
1357
1358
|
|
|
1358
1359
|
if (frame_entry)
|
|
1359
|
-
|
|
1360
|
+
git_str_joinpath(&root, iter->root, frame_entry->path);
|
|
1360
1361
|
else
|
|
1361
|
-
|
|
1362
|
+
git_str_puts(&root, iter->root);
|
|
1362
1363
|
|
|
1363
|
-
if (
|
|
1364
|
-
|
|
1364
|
+
if (git_str_oom(&root) ||
|
|
1365
|
+
git_path_validate_str_length(iter->base.repo, &root) < 0) {
|
|
1365
1366
|
error = -1;
|
|
1366
1367
|
goto done;
|
|
1367
1368
|
}
|
|
@@ -1369,7 +1370,7 @@ static int filesystem_iterator_frame_push(
|
|
|
1369
1370
|
new_frame->path_len = frame_entry ? frame_entry->path_len : 0;
|
|
1370
1371
|
|
|
1371
1372
|
/* Any error here is equivalent to the dir not existing, skip over it */
|
|
1372
|
-
if ((error =
|
|
1373
|
+
if ((error = git_fs_path_diriter_init(
|
|
1373
1374
|
&diriter, root.ptr, iter->dirload_flags)) < 0) {
|
|
1374
1375
|
error = GIT_ENOTFOUND;
|
|
1375
1376
|
goto done;
|
|
@@ -1387,12 +1388,18 @@ static int filesystem_iterator_frame_push(
|
|
|
1387
1388
|
/* check if this directory is ignored */
|
|
1388
1389
|
filesystem_iterator_frame_push_ignores(iter, frame_entry, new_frame);
|
|
1389
1390
|
|
|
1390
|
-
while ((error =
|
|
1391
|
+
while ((error = git_fs_path_diriter_next(&diriter)) == 0) {
|
|
1391
1392
|
iterator_pathlist_search_t pathlist_match = ITERATOR_PATHLIST_FULL;
|
|
1393
|
+
git_str path_str = GIT_STR_INIT;
|
|
1392
1394
|
bool dir_expected = false;
|
|
1393
1395
|
|
|
1394
|
-
if ((error =
|
|
1395
|
-
|
|
1396
|
+
if ((error = git_fs_path_diriter_fullpath(&path, &path_len, &diriter)) < 0)
|
|
1397
|
+
goto done;
|
|
1398
|
+
|
|
1399
|
+
path_str.ptr = (char *)path;
|
|
1400
|
+
path_str.size = path_len;
|
|
1401
|
+
|
|
1402
|
+
if ((error = git_path_validate_str_length(iter->base.repo, &path_str)) < 0)
|
|
1396
1403
|
goto done;
|
|
1397
1404
|
|
|
1398
1405
|
GIT_ASSERT(path_len > iter->root_len);
|
|
@@ -1414,7 +1421,7 @@ static int filesystem_iterator_frame_push(
|
|
|
1414
1421
|
* we have an index, we can just copy the data out of it.
|
|
1415
1422
|
*/
|
|
1416
1423
|
|
|
1417
|
-
if ((error =
|
|
1424
|
+
if ((error = git_fs_path_diriter_stat(&statbuf, &diriter)) < 0) {
|
|
1418
1425
|
/* file was removed between readdir and lstat */
|
|
1419
1426
|
if (error == GIT_ENOTFOUND)
|
|
1420
1427
|
continue;
|
|
@@ -1471,8 +1478,8 @@ done:
|
|
|
1471
1478
|
if (error < 0)
|
|
1472
1479
|
git_array_pop(iter->frames);
|
|
1473
1480
|
|
|
1474
|
-
|
|
1475
|
-
|
|
1481
|
+
git_str_dispose(&root);
|
|
1482
|
+
git_fs_path_diriter_free(&diriter);
|
|
1476
1483
|
return error;
|
|
1477
1484
|
}
|
|
1478
1485
|
|
|
@@ -1551,7 +1558,7 @@ static int filesystem_iterator_is_dir(
|
|
|
1551
1558
|
const filesystem_iterator_entry *entry)
|
|
1552
1559
|
{
|
|
1553
1560
|
struct stat st;
|
|
1554
|
-
|
|
1561
|
+
git_str fullpath = GIT_STR_INIT;
|
|
1555
1562
|
int error = 0;
|
|
1556
1563
|
|
|
1557
1564
|
if (S_ISDIR(entry->st.st_mode)) {
|
|
@@ -1564,15 +1571,15 @@ static int filesystem_iterator_is_dir(
|
|
|
1564
1571
|
goto done;
|
|
1565
1572
|
}
|
|
1566
1573
|
|
|
1567
|
-
if ((error =
|
|
1568
|
-
(error =
|
|
1574
|
+
if ((error = git_str_joinpath(&fullpath, iter->root, entry->path)) < 0 ||
|
|
1575
|
+
(error = git_path_validate_str_length(iter->base.repo, &fullpath)) < 0 ||
|
|
1569
1576
|
(error = p_stat(fullpath.ptr, &st)) < 0)
|
|
1570
1577
|
goto done;
|
|
1571
1578
|
|
|
1572
1579
|
*is_dir = S_ISDIR(st.st_mode);
|
|
1573
1580
|
|
|
1574
1581
|
done:
|
|
1575
|
-
|
|
1582
|
+
git_str_dispose(&fullpath);
|
|
1576
1583
|
return error;
|
|
1577
1584
|
}
|
|
1578
1585
|
|
|
@@ -1673,7 +1680,7 @@ static int filesystem_iterator_advance_into(
|
|
|
1673
1680
|
return filesystem_iterator_advance(out, i);
|
|
1674
1681
|
}
|
|
1675
1682
|
|
|
1676
|
-
int git_iterator_current_workdir_path(
|
|
1683
|
+
int git_iterator_current_workdir_path(git_str **out, git_iterator *i)
|
|
1677
1684
|
{
|
|
1678
1685
|
filesystem_iterator *iter = GIT_CONTAINER_OF(i, filesystem_iterator, base);
|
|
1679
1686
|
const git_index_entry *entry;
|
|
@@ -1684,10 +1691,10 @@ int git_iterator_current_workdir_path(git_buf **out, git_iterator *i)
|
|
|
1684
1691
|
return 0;
|
|
1685
1692
|
}
|
|
1686
1693
|
|
|
1687
|
-
|
|
1694
|
+
git_str_truncate(&iter->current_path, iter->root_len);
|
|
1688
1695
|
|
|
1689
1696
|
if (git_iterator_current(&entry, i) < 0 ||
|
|
1690
|
-
|
|
1697
|
+
git_str_puts(&iter->current_path, entry->path) < 0)
|
|
1691
1698
|
return -1;
|
|
1692
1699
|
|
|
1693
1700
|
*out = &iter->current_path;
|
|
@@ -1790,8 +1797,8 @@ static int filesystem_iterator_advance_over(
|
|
|
1790
1797
|
return filesystem_iterator_advance(out, i);
|
|
1791
1798
|
}
|
|
1792
1799
|
|
|
1793
|
-
|
|
1794
|
-
if ((error =
|
|
1800
|
+
git_str_clear(&iter->tmp_buf);
|
|
1801
|
+
if ((error = git_str_puts(&iter->tmp_buf, entry->path)) < 0)
|
|
1795
1802
|
return error;
|
|
1796
1803
|
|
|
1797
1804
|
base = iter->tmp_buf.ptr;
|
|
@@ -1858,7 +1865,7 @@ static void filesystem_iterator_clear(filesystem_iterator *iter)
|
|
|
1858
1865
|
git_array_clear(iter->frames);
|
|
1859
1866
|
git_ignore__free(&iter->ignores);
|
|
1860
1867
|
|
|
1861
|
-
|
|
1868
|
+
git_str_dispose(&iter->tmp_buf);
|
|
1862
1869
|
|
|
1863
1870
|
iterator_clear(&iter->base);
|
|
1864
1871
|
}
|
|
@@ -1892,7 +1899,7 @@ static void filesystem_iterator_free(git_iterator *i)
|
|
|
1892
1899
|
{
|
|
1893
1900
|
filesystem_iterator *iter = GIT_CONTAINER_OF(i, filesystem_iterator, base);
|
|
1894
1901
|
git__free(iter->root);
|
|
1895
|
-
|
|
1902
|
+
git_str_dispose(&iter->current_path);
|
|
1896
1903
|
git_tree_free(iter->tree);
|
|
1897
1904
|
if (iter->index)
|
|
1898
1905
|
git_index_snapshot_release(&iter->index_snapshot, iter->index);
|
|
@@ -1946,7 +1953,7 @@ static int iterator_for_filesystem(
|
|
|
1946
1953
|
iter->root[root_len] = '\0';
|
|
1947
1954
|
iter->root_len = root_len;
|
|
1948
1955
|
|
|
1949
|
-
if ((error =
|
|
1956
|
+
if ((error = git_str_puts(&iter->current_path, iter->root)) < 0)
|
|
1950
1957
|
goto on_error;
|
|
1951
1958
|
|
|
1952
1959
|
if ((error = iterator_init_common(&iter->base, repo, index, options)) < 0)
|
|
@@ -1961,9 +1968,10 @@ static int iterator_for_filesystem(
|
|
|
1961
1968
|
|
|
1962
1969
|
iter->index = index;
|
|
1963
1970
|
iter->dirload_flags =
|
|
1964
|
-
(iterator__ignore_case(&iter->base) ?
|
|
1971
|
+
(iterator__ignore_case(&iter->base) ?
|
|
1972
|
+
GIT_FS_PATH_DIR_IGNORE_CASE : 0) |
|
|
1965
1973
|
(iterator__flag(&iter->base, PRECOMPOSE_UNICODE) ?
|
|
1966
|
-
|
|
1974
|
+
GIT_FS_PATH_DIR_PRECOMPOSE_UNICODE : 0);
|
|
1967
1975
|
|
|
1968
1976
|
if ((error = filesystem_iterator_init(iter)) < 0)
|
|
1969
1977
|
goto on_error;
|
|
@@ -2024,7 +2032,7 @@ typedef struct {
|
|
|
2024
2032
|
|
|
2025
2033
|
/* the pseudotree entry */
|
|
2026
2034
|
git_index_entry tree_entry;
|
|
2027
|
-
|
|
2035
|
+
git_str tree_buf;
|
|
2028
2036
|
bool skip_tree;
|
|
2029
2037
|
|
|
2030
2038
|
const git_index_entry *entry;
|
|
@@ -2058,14 +2066,14 @@ static bool index_iterator_create_pseudotree(
|
|
|
2058
2066
|
prev_path = iter->entry ? iter->entry->path : "";
|
|
2059
2067
|
|
|
2060
2068
|
/* determine if the new path is in a different directory from the old */
|
|
2061
|
-
common_len =
|
|
2069
|
+
common_len = git_fs_path_common_dirlen(prev_path, path);
|
|
2062
2070
|
relative_path = path + common_len;
|
|
2063
2071
|
|
|
2064
2072
|
if ((dirsep = strchr(relative_path, '/')) == NULL)
|
|
2065
2073
|
return false;
|
|
2066
2074
|
|
|
2067
|
-
|
|
2068
|
-
|
|
2075
|
+
git_str_clear(&iter->tree_buf);
|
|
2076
|
+
git_str_put(&iter->tree_buf, path, (dirsep - path) + 1);
|
|
2069
2077
|
|
|
2070
2078
|
iter->tree_entry.mode = GIT_FILEMODE_TREE;
|
|
2071
2079
|
iter->tree_entry.path = iter->tree_buf.ptr;
|
|
@@ -2230,7 +2238,7 @@ static void index_iterator_free(git_iterator *i)
|
|
|
2230
2238
|
index_iterator *iter = GIT_CONTAINER_OF(i, index_iterator, base);
|
|
2231
2239
|
|
|
2232
2240
|
git_index_snapshot_release(&iter->entries, iter->base.index);
|
|
2233
|
-
|
|
2241
|
+
git_str_dispose(&iter->tree_buf);
|
|
2234
2242
|
}
|
|
2235
2243
|
|
|
2236
2244
|
int git_iterator_for_index(
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
#include "git2/index.h"
|
|
13
13
|
#include "vector.h"
|
|
14
|
-
#include "
|
|
14
|
+
#include "str.h"
|
|
15
15
|
#include "ignore.h"
|
|
16
16
|
|
|
17
17
|
typedef struct git_iterator git_iterator;
|
|
@@ -21,7 +21,7 @@ typedef enum {
|
|
|
21
21
|
GIT_ITERATOR_TREE = 1,
|
|
22
22
|
GIT_ITERATOR_INDEX = 2,
|
|
23
23
|
GIT_ITERATOR_WORKDIR = 3,
|
|
24
|
-
GIT_ITERATOR_FS = 4
|
|
24
|
+
GIT_ITERATOR_FS = 4
|
|
25
25
|
} git_iterator_t;
|
|
26
26
|
|
|
27
27
|
typedef enum {
|
|
@@ -42,7 +42,7 @@ typedef enum {
|
|
|
42
42
|
/** descend into symlinked directories */
|
|
43
43
|
GIT_ITERATOR_DESCEND_SYMLINKS = (1u << 7),
|
|
44
44
|
/** hash files in workdir or filesystem iterators */
|
|
45
|
-
GIT_ITERATOR_INCLUDE_HASH = (1u << 8)
|
|
45
|
+
GIT_ITERATOR_INCLUDE_HASH = (1u << 8)
|
|
46
46
|
} git_iterator_flag_t;
|
|
47
47
|
|
|
48
48
|
typedef enum {
|
|
@@ -278,11 +278,11 @@ extern bool git_iterator_current_tree_is_ignored(git_iterator *iter);
|
|
|
278
278
|
|
|
279
279
|
/**
|
|
280
280
|
* Get full path of the current item from a workdir iterator. This will
|
|
281
|
-
* return NULL for a non-workdir iterator. The
|
|
281
|
+
* return NULL for a non-workdir iterator. The git_str is still owned by
|
|
282
282
|
* the iterator; this is exposed just for efficiency.
|
|
283
283
|
*/
|
|
284
284
|
extern int git_iterator_current_workdir_path(
|
|
285
|
-
|
|
285
|
+
git_str **path, git_iterator *iter);
|
|
286
286
|
|
|
287
287
|
/**
|
|
288
288
|
* Retrieve the index stored in the iterator.
|
data/vendor/libgit2/src/khash.h
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
#include <git2.h>
|
|
11
11
|
#include "alloc.h"
|
|
12
|
+
#include "buf.h"
|
|
12
13
|
#include "cache.h"
|
|
13
14
|
#include "common.h"
|
|
14
15
|
#include "filter.h"
|
|
@@ -19,6 +20,7 @@
|
|
|
19
20
|
#include "mwindow.h"
|
|
20
21
|
#include "object.h"
|
|
21
22
|
#include "odb.h"
|
|
23
|
+
#include "rand.h"
|
|
22
24
|
#include "refs.h"
|
|
23
25
|
#include "runtime.h"
|
|
24
26
|
#include "sysdir.h"
|
|
@@ -69,6 +71,7 @@ int git_libgit2_init(void)
|
|
|
69
71
|
git_allocator_global_init,
|
|
70
72
|
git_threadstate_global_init,
|
|
71
73
|
git_threads_global_init,
|
|
74
|
+
git_rand_global_init,
|
|
72
75
|
git_hash_global_init,
|
|
73
76
|
git_sysdir_global_init,
|
|
74
77
|
git_filter_global_init,
|
|
@@ -192,15 +195,17 @@ int git_libgit2_opts(int key, ...)
|
|
|
192
195
|
{
|
|
193
196
|
int sysdir = va_arg(ap, int);
|
|
194
197
|
git_buf *out = va_arg(ap, git_buf *);
|
|
195
|
-
|
|
198
|
+
git_str str = GIT_STR_INIT;
|
|
199
|
+
const git_str *tmp;
|
|
196
200
|
int level;
|
|
197
201
|
|
|
198
|
-
if ((error =
|
|
199
|
-
(error =
|
|
200
|
-
(error = git_sysdir_get(&tmp, level)) < 0
|
|
202
|
+
if ((error = git_buf_tostr(&str, out)) < 0 ||
|
|
203
|
+
(error = config_level_to_sysdir(&level, sysdir)) < 0 ||
|
|
204
|
+
(error = git_sysdir_get(&tmp, level)) < 0 ||
|
|
205
|
+
(error = git_str_put(&str, tmp->ptr, tmp->size)) < 0)
|
|
201
206
|
break;
|
|
202
207
|
|
|
203
|
-
error =
|
|
208
|
+
error = git_buf_fromstr(out, &str);
|
|
204
209
|
}
|
|
205
210
|
break;
|
|
206
211
|
|
|
@@ -237,13 +242,15 @@ int git_libgit2_opts(int key, ...)
|
|
|
237
242
|
case GIT_OPT_GET_TEMPLATE_PATH:
|
|
238
243
|
{
|
|
239
244
|
git_buf *out = va_arg(ap, git_buf *);
|
|
240
|
-
|
|
245
|
+
git_str str = GIT_STR_INIT;
|
|
246
|
+
const git_str *tmp;
|
|
241
247
|
|
|
242
|
-
if ((error =
|
|
243
|
-
(error = git_sysdir_get(&tmp, GIT_SYSDIR_TEMPLATE)) < 0
|
|
248
|
+
if ((error = git_buf_tostr(&str, out)) < 0 ||
|
|
249
|
+
(error = git_sysdir_get(&tmp, GIT_SYSDIR_TEMPLATE)) < 0 ||
|
|
250
|
+
(error = git_str_put(&str, tmp->ptr, tmp->size)) < 0)
|
|
244
251
|
break;
|
|
245
252
|
|
|
246
|
-
error =
|
|
253
|
+
error = git_buf_fromstr(out, &str);
|
|
247
254
|
}
|
|
248
255
|
break;
|
|
249
256
|
|
|
@@ -306,9 +313,13 @@ int git_libgit2_opts(int key, ...)
|
|
|
306
313
|
case GIT_OPT_GET_USER_AGENT:
|
|
307
314
|
{
|
|
308
315
|
git_buf *out = va_arg(ap, git_buf *);
|
|
309
|
-
|
|
316
|
+
git_str str = GIT_STR_INIT;
|
|
317
|
+
|
|
318
|
+
if ((error = git_buf_tostr(&str, out)) < 0 ||
|
|
319
|
+
(error = git_str_puts(&str, git__user_agent)) < 0)
|
|
310
320
|
break;
|
|
311
|
-
|
|
321
|
+
|
|
322
|
+
error = git_buf_fromstr(out, &str);
|
|
312
323
|
}
|
|
313
324
|
break;
|
|
314
325
|
|
|
@@ -390,14 +401,6 @@ int git_libgit2_opts(int key, ...)
|
|
|
390
401
|
}
|
|
391
402
|
break;
|
|
392
403
|
|
|
393
|
-
case GIT_OPT_GET_OWNER_VALIDATION:
|
|
394
|
-
*(va_arg(ap, int *)) = git_repository__validate_ownership;
|
|
395
|
-
break;
|
|
396
|
-
|
|
397
|
-
case GIT_OPT_SET_OWNER_VALIDATION:
|
|
398
|
-
git_repository__validate_ownership = (va_arg(ap, int) != 0);
|
|
399
|
-
break;
|
|
400
|
-
|
|
401
404
|
default:
|
|
402
405
|
git_error_set(GIT_ERROR_INVALID, "invalid option key");
|
|
403
406
|
error = -1;
|