rugged 1.7.2 → 1.9.4
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 +4 -4
- data/ext/rugged/rugged.c +12 -1
- data/ext/rugged/rugged_blame.c +22 -6
- data/ext/rugged/rugged_blob.c +24 -9
- data/ext/rugged/rugged_branch.c +10 -7
- data/ext/rugged/rugged_branch_collection.c +8 -6
- data/ext/rugged/rugged_commit.c +7 -6
- data/ext/rugged/rugged_config.c +20 -11
- data/ext/rugged/rugged_diff.c +26 -12
- data/ext/rugged/rugged_diff_hunk.c +2 -1
- data/ext/rugged/rugged_index.c +39 -29
- data/ext/rugged/rugged_note.c +7 -6
- data/ext/rugged/rugged_object.c +3 -2
- data/ext/rugged/rugged_patch.c +23 -9
- data/ext/rugged/rugged_rebase.c +22 -10
- data/ext/rugged/rugged_reference.c +22 -13
- data/ext/rugged/rugged_reference_collection.c +9 -7
- data/ext/rugged/rugged_remote.c +23 -12
- data/ext/rugged/rugged_remote_collection.c +11 -9
- data/ext/rugged/rugged_repo.c +60 -45
- data/ext/rugged/rugged_revwalk.c +22 -12
- data/ext/rugged/rugged_submodule.c +23 -20
- data/ext/rugged/rugged_submodule_collection.c +20 -9
- data/ext/rugged/rugged_tag.c +6 -4
- data/ext/rugged/rugged_tag_collection.c +7 -5
- data/ext/rugged/rugged_tree.c +27 -15
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +3 -0
- data/vendor/libgit2/CMakeLists.txt +23 -10
- data/vendor/libgit2/COPYING +195 -1
- data/vendor/libgit2/cmake/DefaultCFlags.cmake +4 -1
- data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
- data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
- data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
- data/vendor/libgit2/cmake/SelectSSH.cmake +30 -19
- data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +3 -3
- data/vendor/libgit2/deps/xdiff/CMakeLists.txt +1 -1
- data/vendor/libgit2/deps/xdiff/xmerge.c +16 -12
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +5 -27
- data/vendor/libgit2/deps/zlib/crc32.c +94 -167
- data/vendor/libgit2/deps/zlib/deflate.c +358 -435
- data/vendor/libgit2/deps/zlib/deflate.h +41 -10
- data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
- data/vendor/libgit2/deps/zlib/infback.c +17 -30
- data/vendor/libgit2/deps/zlib/inffast.c +1 -4
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +36 -102
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +287 -352
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +202 -202
- data/vendor/libgit2/deps/zlib/zutil.c +18 -44
- data/vendor/libgit2/deps/zlib/zutil.h +13 -33
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +27 -6
- data/vendor/libgit2/include/git2/attr.h +17 -4
- data/vendor/libgit2/include/git2/blame.h +133 -28
- data/vendor/libgit2/include/git2/blob.h +71 -28
- data/vendor/libgit2/include/git2/branch.h +22 -15
- data/vendor/libgit2/include/git2/buffer.h +6 -4
- data/vendor/libgit2/include/git2/cert.h +2 -1
- data/vendor/libgit2/include/git2/checkout.h +83 -32
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +25 -9
- data/vendor/libgit2/include/git2/commit.h +132 -3
- data/vendor/libgit2/include/git2/common.h +120 -63
- data/vendor/libgit2/include/git2/config.h +93 -23
- data/vendor/libgit2/include/git2/credential.h +30 -2
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +134 -4
- data/vendor/libgit2/include/git2/describe.h +13 -1
- data/vendor/libgit2/include/git2/diff.h +38 -8
- data/vendor/libgit2/include/git2/email.h +9 -29
- data/vendor/libgit2/include/git2/errors.h +46 -73
- data/vendor/libgit2/include/git2/filter.h +14 -7
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +3 -2
- data/vendor/libgit2/include/git2/ignore.h +10 -0
- data/vendor/libgit2/include/git2/index.h +100 -15
- data/vendor/libgit2/include/git2/indexer.h +21 -4
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +50 -3
- data/vendor/libgit2/include/git2/message.h +2 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +9 -8
- data/vendor/libgit2/include/git2/odb.h +91 -49
- data/vendor/libgit2/include/git2/odb_backend.h +80 -52
- data/vendor/libgit2/include/git2/oid.h +23 -25
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +13 -1
- data/vendor/libgit2/include/git2/patch.h +2 -3
- data/vendor/libgit2/include/git2/pathspec.h +9 -0
- data/vendor/libgit2/include/git2/proxy.h +12 -3
- data/vendor/libgit2/include/git2/rebase.h +9 -6
- data/vendor/libgit2/include/git2/refdb.h +2 -2
- data/vendor/libgit2/include/git2/reflog.h +3 -2
- data/vendor/libgit2/include/git2/refs.h +9 -6
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +113 -25
- data/vendor/libgit2/include/git2/repository.h +57 -21
- data/vendor/libgit2/include/git2/reset.h +16 -3
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +3 -3
- data/vendor/libgit2/include/git2/revwalk.h +3 -2
- data/vendor/libgit2/include/git2/signature.h +46 -1
- data/vendor/libgit2/include/git2/stash.h +17 -3
- data/vendor/libgit2/include/git2/status.h +10 -6
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -3
- data/vendor/libgit2/include/git2/submodule.h +20 -9
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +43 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +8 -1
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +11 -2
- data/vendor/libgit2/include/git2/sys/transport.h +25 -4
- data/vendor/libgit2/include/git2/tag.h +3 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +16 -5
- data/vendor/libgit2/include/git2/types.h +19 -3
- data/vendor/libgit2/include/git2/version.h +46 -8
- data/vendor/libgit2/include/git2/worktree.h +16 -6
- data/vendor/libgit2/src/CMakeLists.txt +6 -4
- data/vendor/libgit2/src/cli/CMakeLists.txt +3 -4
- data/vendor/libgit2/src/cli/cmd.c +1 -1
- data/vendor/libgit2/src/cli/cmd.h +4 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
- data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
- data/vendor/libgit2/src/cli/cmd_help.c +6 -7
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +1 -1
- data/vendor/libgit2/src/cli/main.c +52 -24
- data/vendor/libgit2/src/cli/opt.c +31 -5
- data/vendor/libgit2/src/cli/opt.h +21 -3
- data/vendor/libgit2/src/cli/opt_usage.c +102 -33
- data/vendor/libgit2/src/cli/opt_usage.h +6 -1
- data/vendor/libgit2/src/cli/progress.c +51 -2
- data/vendor/libgit2/src/cli/progress.h +12 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
- data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
- data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +55 -21
- data/vendor/libgit2/src/libgit2/apply.c +10 -13
- data/vendor/libgit2/src/libgit2/attr.c +30 -13
- data/vendor/libgit2/src/libgit2/attr_file.c +17 -5
- data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
- data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
- data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
- data/vendor/libgit2/src/libgit2/blame.c +130 -44
- data/vendor/libgit2/src/libgit2/blame.h +1 -0
- data/vendor/libgit2/src/libgit2/cache.c +22 -17
- data/vendor/libgit2/src/libgit2/cache.h +7 -9
- data/vendor/libgit2/src/libgit2/checkout.c +34 -24
- data/vendor/libgit2/src/libgit2/checkout.h +0 -2
- data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
- data/vendor/libgit2/src/libgit2/clone.c +192 -166
- data/vendor/libgit2/src/libgit2/clone.h +4 -1
- data/vendor/libgit2/src/libgit2/commit.c +93 -1
- data/vendor/libgit2/src/libgit2/commit_graph.c +68 -58
- data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
- data/vendor/libgit2/src/libgit2/config.c +390 -299
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/libgit2/config.h +9 -4
- data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
- data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
- data/vendor/libgit2/src/libgit2/config_file.c +101 -89
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +195 -40
- data/vendor/libgit2/src/libgit2/config_parse.c +12 -10
- data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
- data/vendor/libgit2/src/libgit2/delta.c +5 -1
- data/vendor/libgit2/src/libgit2/describe.c +24 -24
- data/vendor/libgit2/src/libgit2/diff.c +1 -1
- data/vendor/libgit2/src/libgit2/diff_driver.c +13 -20
- data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
- data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
- data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
- data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
- data/vendor/libgit2/src/libgit2/diff_stats.c +19 -12
- data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
- data/vendor/libgit2/src/libgit2/email.c +1 -0
- data/vendor/libgit2/src/libgit2/fetch.c +5 -3
- data/vendor/libgit2/src/libgit2/fetchhead.c +1 -1
- data/vendor/libgit2/src/libgit2/filter.c +5 -5
- data/vendor/libgit2/src/libgit2/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +18 -20
- data/vendor/libgit2/src/libgit2/grafts.h +0 -1
- data/vendor/libgit2/src/libgit2/graph.c +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/libgit2/ignore.c +9 -5
- data/vendor/libgit2/src/libgit2/index.c +76 -98
- data/vendor/libgit2/src/libgit2/index.h +5 -2
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/libgit2/indexer.c +36 -40
- data/vendor/libgit2/src/libgit2/iterator.c +14 -8
- data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
- data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
- data/vendor/libgit2/src/libgit2/merge.c +43 -38
- data/vendor/libgit2/src/libgit2/merge.h +4 -0
- data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
- data/vendor/libgit2/src/libgit2/merge_file.c +43 -30
- data/vendor/libgit2/src/libgit2/message.c +1 -1
- data/vendor/libgit2/src/libgit2/midx.c +30 -18
- data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
- data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
- data/vendor/libgit2/src/libgit2/object.c +6 -5
- data/vendor/libgit2/src/libgit2/odb.c +7 -10
- data/vendor/libgit2/src/libgit2/odb_loose.c +24 -14
- data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
- data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
- data/vendor/libgit2/src/libgit2/oid.c +36 -10
- data/vendor/libgit2/src/libgit2/oid.h +11 -0
- data/vendor/libgit2/src/libgit2/pack-objects.c +59 -34
- data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
- data/vendor/libgit2/src/libgit2/pack.c +33 -24
- data/vendor/libgit2/src/libgit2/pack.h +15 -10
- data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
- data/vendor/libgit2/src/libgit2/path.c +1 -1
- data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
- data/vendor/libgit2/src/libgit2/push.c +79 -28
- data/vendor/libgit2/src/libgit2/push.h +1 -0
- data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
- data/vendor/libgit2/src/libgit2/reflog.c +1 -2
- data/vendor/libgit2/src/libgit2/reflog.h +2 -0
- data/vendor/libgit2/src/libgit2/refs.c +41 -13
- data/vendor/libgit2/src/libgit2/refs.h +6 -1
- data/vendor/libgit2/src/libgit2/refspec.c +28 -1
- data/vendor/libgit2/src/libgit2/refspec.h +8 -0
- data/vendor/libgit2/src/libgit2/remote.c +125 -62
- data/vendor/libgit2/src/libgit2/remote.h +0 -1
- data/vendor/libgit2/src/libgit2/repository.c +235 -54
- data/vendor/libgit2/src/libgit2/repository.h +10 -6
- data/vendor/libgit2/src/libgit2/revert.c +1 -2
- data/vendor/libgit2/src/libgit2/revparse.c +2 -2
- data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
- data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
- data/vendor/libgit2/src/libgit2/settings.c +468 -0
- data/vendor/libgit2/src/libgit2/settings.h +6 -2
- data/vendor/libgit2/src/libgit2/signature.c +132 -15
- data/vendor/libgit2/src/libgit2/signature.h +0 -1
- data/vendor/libgit2/src/libgit2/status.c +1 -1
- data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
- data/vendor/libgit2/src/libgit2/streams/openssl.c +32 -7
- data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
- data/vendor/libgit2/src/libgit2/streams/socket.c +30 -0
- data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
- data/vendor/libgit2/src/libgit2/submodule.c +118 -68
- data/vendor/libgit2/src/libgit2/submodule.h +6 -7
- data/vendor/libgit2/src/libgit2/tag.c +4 -2
- data/vendor/libgit2/src/libgit2/trailer.c +6 -6
- data/vendor/libgit2/src/libgit2/transaction.c +26 -20
- data/vendor/libgit2/src/libgit2/transaction.h +4 -1
- data/vendor/libgit2/src/libgit2/transport.c +4 -1
- data/vendor/libgit2/src/libgit2/transports/auth_sspi.c +2 -0
- data/vendor/libgit2/src/libgit2/transports/credential.c +2 -2
- data/vendor/libgit2/src/libgit2/transports/git.c +1 -1
- data/vendor/libgit2/src/libgit2/transports/http.c +1 -2
- data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
- data/vendor/libgit2/src/libgit2/transports/httpclient.c +124 -81
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/libgit2/transports/local.c +16 -8
- data/vendor/libgit2/src/libgit2/transports/smart.c +25 -13
- data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
- data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +5 -5
- data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
- data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +386 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
- data/vendor/libgit2/src/libgit2/tree.c +34 -26
- data/vendor/libgit2/src/libgit2/tree.h +3 -2
- data/vendor/libgit2/src/libgit2/worktree.c +14 -17
- data/vendor/libgit2/src/util/CMakeLists.txt +7 -10
- data/vendor/libgit2/src/util/alloc.c +4 -1
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
- data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
- data/vendor/libgit2/src/util/array.h +18 -17
- data/vendor/libgit2/src/util/cc-compat.h +2 -0
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/util/date.c +22 -14
- data/vendor/libgit2/src/util/date.h +12 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
- data/vendor/libgit2/src/util/fs_path.c +81 -10
- data/vendor/libgit2/src/util/fs_path.h +29 -0
- data/vendor/libgit2/src/util/futils.c +6 -5
- data/vendor/libgit2/src/util/futils.h +24 -7
- data/vendor/libgit2/src/util/git2_features.h.in +12 -1
- data/vendor/libgit2/src/util/git2_util.h +6 -0
- data/vendor/libgit2/src/util/hash/builtin.c +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +148 -0
- data/vendor/libgit2/src/util/hash/openssl.h +17 -1
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +8 -6
- data/vendor/libgit2/src/util/hash/sha.h +4 -1
- data/vendor/libgit2/src/util/hashmap.h +425 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/util/integer.h +3 -1
- data/vendor/libgit2/src/util/net.c +17 -11
- data/vendor/libgit2/src/util/net.h +2 -0
- data/vendor/libgit2/src/util/pool.c +1 -1
- data/vendor/libgit2/src/util/pool.h +5 -0
- data/vendor/libgit2/src/util/pqueue.h +1 -1
- data/vendor/libgit2/src/util/process.h +223 -0
- data/vendor/libgit2/src/util/rand.c +1 -7
- data/vendor/libgit2/src/util/regexp.c +1 -1
- data/vendor/libgit2/src/util/runtime.c +2 -2
- data/vendor/libgit2/src/util/sortedcache.c +14 -13
- data/vendor/libgit2/src/util/sortedcache.h +3 -3
- data/vendor/libgit2/src/util/str.c +20 -8
- data/vendor/libgit2/src/util/str.h +5 -3
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/util/unix/posix.h +0 -2
- data/vendor/libgit2/src/util/unix/process.c +706 -0
- data/vendor/libgit2/src/util/unix/realpath.c +23 -5
- data/vendor/libgit2/src/util/util.c +18 -5
- data/vendor/libgit2/src/util/util.h +5 -38
- data/vendor/libgit2/src/util/vector.c +3 -3
- data/vendor/libgit2/src/util/vector.h +2 -2
- data/vendor/libgit2/src/util/win32/path_w32.c +81 -5
- data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
- data/vendor/libgit2/src/util/win32/process.c +522 -0
- metadata +60 -32
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
- data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
- data/vendor/libgit2/src/libgit2/errors.c +0 -293
- data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
- data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
- data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
- data/vendor/libgit2/src/libgit2/offmap.c +0 -101
- data/vendor/libgit2/src/libgit2/offmap.h +0 -133
- data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
- data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
- data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
- data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
- data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
- data/vendor/libgit2/src/util/khash.h +0 -615
- data/vendor/libgit2/src/util/strmap.c +0 -100
- data/vendor/libgit2/src/util/strmap.h +0 -131
- /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
|
@@ -0,0 +1,168 @@
|
|
|
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 <git2.h>
|
|
9
|
+
#include <git2/sys/config.h>
|
|
10
|
+
|
|
11
|
+
#include "git2_util.h"
|
|
12
|
+
#include "vector.h"
|
|
13
|
+
#include "fs_path.h"
|
|
14
|
+
|
|
15
|
+
#include "common.h"
|
|
16
|
+
#include "error.h"
|
|
17
|
+
|
|
18
|
+
static int parse_option(cli_opt *opt, void *data)
|
|
19
|
+
{
|
|
20
|
+
git_str kv = GIT_STR_INIT, env = GIT_STR_INIT;
|
|
21
|
+
git_vector *cmdline_config = data;
|
|
22
|
+
int error = 0;
|
|
23
|
+
|
|
24
|
+
if (opt->spec && opt->spec->alias == 'c') {
|
|
25
|
+
if (git_str_puts(&kv, opt->value) < 0) {
|
|
26
|
+
error = cli_error_git();
|
|
27
|
+
goto done;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
else if (opt->spec && !strcmp(opt->spec->name, "config-env")) {
|
|
32
|
+
char *val = strchr(opt->value, '=');
|
|
33
|
+
|
|
34
|
+
if (val == NULL || *(val + 1) == '\0') {
|
|
35
|
+
error = cli_error("invalid config format: '%s'", opt->value);
|
|
36
|
+
goto done;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (git_str_put(&kv, opt->value, (val - opt->value)) < 0) {
|
|
40
|
+
error = cli_error_git();
|
|
41
|
+
goto done;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
val++;
|
|
45
|
+
|
|
46
|
+
if ((error = git__getenv(&env, val)) == GIT_ENOTFOUND) {
|
|
47
|
+
error = cli_error("missing environment variable '%s' for configuration '%s'", val, kv.ptr);
|
|
48
|
+
goto done;
|
|
49
|
+
} else if (error) {
|
|
50
|
+
error = cli_error_git();
|
|
51
|
+
goto done;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (git_str_putc(&kv, '=') < 0 ||
|
|
55
|
+
git_str_puts(&kv, env.ptr) < 0) {
|
|
56
|
+
error = cli_error_git();
|
|
57
|
+
goto done;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (kv.size > 0 &&
|
|
62
|
+
git_vector_insert(cmdline_config, git_str_detach(&kv)) < 0)
|
|
63
|
+
error = cli_error_git();
|
|
64
|
+
|
|
65
|
+
done:
|
|
66
|
+
git_str_dispose(&env);
|
|
67
|
+
git_str_dispose(&kv);
|
|
68
|
+
return error;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static int parse_common_options(
|
|
72
|
+
git_repository *repo,
|
|
73
|
+
cli_repository_open_options *opts)
|
|
74
|
+
{
|
|
75
|
+
cli_opt_spec common_opts[] = {
|
|
76
|
+
{ CLI_COMMON_OPT_CONFIG },
|
|
77
|
+
{ CLI_COMMON_OPT_CONFIG_ENV },
|
|
78
|
+
{ 0 }
|
|
79
|
+
};
|
|
80
|
+
git_config_backend_memory_options config_opts =
|
|
81
|
+
GIT_CONFIG_BACKEND_MEMORY_OPTIONS_INIT;
|
|
82
|
+
git_vector cmdline = GIT_VECTOR_INIT;
|
|
83
|
+
git_config *config = NULL;
|
|
84
|
+
git_config_backend *backend = NULL;
|
|
85
|
+
int error = 0;
|
|
86
|
+
|
|
87
|
+
config_opts.backend_type = "command line";
|
|
88
|
+
|
|
89
|
+
if ((error = cli_opt_foreach(common_opts, opts->args,
|
|
90
|
+
opts->args_len, CLI_OPT_PARSE_GNU, parse_option,
|
|
91
|
+
&cmdline)) < 0)
|
|
92
|
+
goto done;
|
|
93
|
+
|
|
94
|
+
if (git_vector_length(&cmdline) == 0)
|
|
95
|
+
goto done;
|
|
96
|
+
|
|
97
|
+
if (git_repository_config(&config, repo) < 0 ||
|
|
98
|
+
git_config_backend_from_values(&backend,
|
|
99
|
+
(const char **)cmdline.contents, cmdline.length,
|
|
100
|
+
&config_opts) < 0 ||
|
|
101
|
+
git_config_add_backend(config, backend, GIT_CONFIG_LEVEL_APP,
|
|
102
|
+
repo, 0) < 0)
|
|
103
|
+
error = cli_error_git();
|
|
104
|
+
|
|
105
|
+
done:
|
|
106
|
+
if (error && backend)
|
|
107
|
+
backend->free(backend);
|
|
108
|
+
git_config_free(config);
|
|
109
|
+
git_vector_dispose_deep(&cmdline);
|
|
110
|
+
return error;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
int cli_repository_open(
|
|
114
|
+
git_repository **out,
|
|
115
|
+
cli_repository_open_options *opts)
|
|
116
|
+
{
|
|
117
|
+
git_repository *repo;
|
|
118
|
+
|
|
119
|
+
if (git_repository_open_ext(&repo, ".", GIT_REPOSITORY_OPEN_FROM_ENV, NULL) < 0)
|
|
120
|
+
return -1;
|
|
121
|
+
|
|
122
|
+
if (opts && parse_common_options(repo, opts) < 0)
|
|
123
|
+
return -1;
|
|
124
|
+
|
|
125
|
+
*out = repo;
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/*
|
|
130
|
+
* This resolves paths - not _pathspecs_ like git - it accepts an absolute
|
|
131
|
+
* path (to a path within the repository working directory) or a path
|
|
132
|
+
* relative to the current directory.
|
|
133
|
+
*/
|
|
134
|
+
int cli_resolve_path(git_str *out, git_repository *repo, const char *given_path)
|
|
135
|
+
{
|
|
136
|
+
git_str path = GIT_STR_INIT;
|
|
137
|
+
int error = 0;
|
|
138
|
+
|
|
139
|
+
if (!git_fs_path_is_absolute(given_path)) {
|
|
140
|
+
char cwd[GIT_PATH_MAX];
|
|
141
|
+
|
|
142
|
+
if (p_getcwd(cwd, GIT_PATH_MAX) < 0)
|
|
143
|
+
error = cli_error_os();
|
|
144
|
+
else if (git_str_puts(&path, cwd) < 0 ||
|
|
145
|
+
git_fs_path_apply_relative(&path, given_path) < 0)
|
|
146
|
+
error = cli_error_git();
|
|
147
|
+
|
|
148
|
+
if (error)
|
|
149
|
+
goto done;
|
|
150
|
+
} else if (git_str_puts(&path, given_path) < 0) {
|
|
151
|
+
error = cli_error_git();
|
|
152
|
+
goto done;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
error = git_fs_path_make_relative(&path, git_repository_workdir(repo));
|
|
156
|
+
|
|
157
|
+
if (error == GIT_ENOTFOUND)
|
|
158
|
+
error = cli_error("path '%s' is not inside the git repository '%s'",
|
|
159
|
+
given_path, git_repository_workdir(repo));
|
|
160
|
+
else if (error < 0)
|
|
161
|
+
error = cli_error_git();
|
|
162
|
+
else
|
|
163
|
+
git_str_swap(out, &path);
|
|
164
|
+
|
|
165
|
+
done:
|
|
166
|
+
git_str_dispose(&path);
|
|
167
|
+
return error;
|
|
168
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
|
3
|
+
*
|
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#ifndef CLI_common_h__
|
|
9
|
+
#define CLI_common_h__
|
|
10
|
+
|
|
11
|
+
#define PROGRAM_NAME "git2"
|
|
12
|
+
|
|
13
|
+
#include "git2_util.h"
|
|
14
|
+
|
|
15
|
+
#include "error.h"
|
|
16
|
+
#include "opt.h"
|
|
17
|
+
#include "opt_usage.h"
|
|
18
|
+
|
|
19
|
+
/*
|
|
20
|
+
* Common command arguments.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
extern int cli_opt__show_help;
|
|
24
|
+
extern int cli_opt__use_pager;
|
|
25
|
+
|
|
26
|
+
#define CLI_COMMON_OPT_HELP \
|
|
27
|
+
CLI_OPT_TYPE_SWITCH, "help", 0, &cli_opt__show_help, 1, \
|
|
28
|
+
CLI_OPT_USAGE_HIDDEN | CLI_OPT_USAGE_STOP_PARSING, \
|
|
29
|
+
NULL, "display help information"
|
|
30
|
+
#define CLI_COMMON_OPT_CONFIG \
|
|
31
|
+
CLI_OPT_TYPE_VALUE, NULL, 'c', NULL, 0, \
|
|
32
|
+
CLI_OPT_USAGE_HIDDEN, \
|
|
33
|
+
"key=value", "add configuration value"
|
|
34
|
+
#define CLI_COMMON_OPT_CONFIG_ENV \
|
|
35
|
+
CLI_OPT_TYPE_VALUE, "config-env", 0, NULL, 0, \
|
|
36
|
+
CLI_OPT_USAGE_HIDDEN, \
|
|
37
|
+
"key=value", "set configuration value to environment variable"
|
|
38
|
+
#define CLI_COMMON_OPT_NO_PAGER \
|
|
39
|
+
CLI_OPT_TYPE_SWITCH, "no-pager", 0, &cli_opt__use_pager, 0, \
|
|
40
|
+
CLI_OPT_USAGE_HIDDEN, \
|
|
41
|
+
NULL, "don't paginate multi-page output"
|
|
42
|
+
|
|
43
|
+
#define CLI_COMMON_OPT \
|
|
44
|
+
{ CLI_COMMON_OPT_HELP }, \
|
|
45
|
+
{ CLI_COMMON_OPT_CONFIG }, \
|
|
46
|
+
{ CLI_COMMON_OPT_CONFIG_ENV }, \
|
|
47
|
+
{ CLI_COMMON_OPT_NO_PAGER }
|
|
48
|
+
|
|
49
|
+
typedef struct {
|
|
50
|
+
char **args;
|
|
51
|
+
int args_len;
|
|
52
|
+
} cli_repository_open_options;
|
|
53
|
+
|
|
54
|
+
extern int cli_repository_open(
|
|
55
|
+
git_repository **out,
|
|
56
|
+
cli_repository_open_options *opts);
|
|
57
|
+
|
|
58
|
+
extern int cli_resolve_path(
|
|
59
|
+
git_str *out,
|
|
60
|
+
git_repository *repo,
|
|
61
|
+
const char *given_path);
|
|
62
|
+
|
|
63
|
+
#endif /* CLI_common_h__ */
|
|
@@ -7,17 +7,19 @@
|
|
|
7
7
|
|
|
8
8
|
#include <stdio.h>
|
|
9
9
|
#include <git2.h>
|
|
10
|
-
#include "
|
|
10
|
+
#include "common.h"
|
|
11
11
|
#include "cmd.h"
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
int cli_opt__show_help = 0;
|
|
14
|
+
int cli_opt__use_pager = 1;
|
|
15
|
+
|
|
14
16
|
static int show_version = 0;
|
|
15
17
|
static char *command = NULL;
|
|
16
18
|
static char **args = NULL;
|
|
17
19
|
|
|
18
20
|
const cli_opt_spec cli_common_opts[] = {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
CLI_COMMON_OPT,
|
|
22
|
+
|
|
21
23
|
{ CLI_OPT_TYPE_SWITCH, "version", 0, &show_version, 1,
|
|
22
24
|
CLI_OPT_USAGE_DEFAULT, NULL, "display the version" },
|
|
23
25
|
{ CLI_OPT_TYPE_ARG, "command", 0, &command, 0,
|
|
@@ -28,21 +30,57 @@ const cli_opt_spec cli_common_opts[] = {
|
|
|
28
30
|
};
|
|
29
31
|
|
|
30
32
|
const cli_cmd_spec cli_cmds[] = {
|
|
33
|
+
{ "blame", cmd_blame, "Show the origin of each line of a file" },
|
|
31
34
|
{ "cat-file", cmd_cat_file, "Display an object in the repository" },
|
|
32
35
|
{ "clone", cmd_clone, "Clone a repository into a new directory" },
|
|
36
|
+
{ "config", cmd_config, "View or set configuration values " },
|
|
33
37
|
{ "hash-object", cmd_hash_object, "Hash a raw object and product its object ID" },
|
|
34
38
|
{ "help", cmd_help, "Display help information" },
|
|
39
|
+
{ "index-pack", cmd_index_pack, "Create an index for a packfile" },
|
|
40
|
+
{ "init", cmd_init, "Create a new git repository" },
|
|
35
41
|
{ NULL }
|
|
36
42
|
};
|
|
37
43
|
|
|
44
|
+
/*
|
|
45
|
+
* Reorder the argv as it was given, since git has the notion of global
|
|
46
|
+
* options (like `--help` or `-c key=val`) that we want to pass to the
|
|
47
|
+
* subcommand, and that can appear early in the arguments, before the
|
|
48
|
+
* command name. Put the command-name in argv[1] to allow easier parsing.
|
|
49
|
+
*/
|
|
50
|
+
static void reorder_args(char **argv, size_t first)
|
|
51
|
+
{
|
|
52
|
+
char *tmp;
|
|
53
|
+
size_t i;
|
|
54
|
+
|
|
55
|
+
if (first == 1)
|
|
56
|
+
return;
|
|
57
|
+
|
|
58
|
+
tmp = argv[first];
|
|
59
|
+
|
|
60
|
+
for (i = first; i > 1; i--)
|
|
61
|
+
argv[i] = argv[i - 1];
|
|
62
|
+
|
|
63
|
+
argv[1] = tmp;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/*
|
|
67
|
+
* When invoked without a command, or just with `--help`, we invoke
|
|
68
|
+
* the help command; but we want to preserve only arguments that would
|
|
69
|
+
* be useful for that.
|
|
70
|
+
*/
|
|
71
|
+
static void help_args(int *argc, char **argv)
|
|
72
|
+
{
|
|
73
|
+
cli_opt__show_help = 0;
|
|
74
|
+
|
|
75
|
+
argv[0] = "help";
|
|
76
|
+
*argc = 1;
|
|
77
|
+
}
|
|
78
|
+
|
|
38
79
|
int main(int argc, char **argv)
|
|
39
80
|
{
|
|
40
81
|
const cli_cmd_spec *cmd;
|
|
41
82
|
cli_opt_parser optparser;
|
|
42
83
|
cli_opt opt;
|
|
43
|
-
char *help_args[3] = { NULL };
|
|
44
|
-
int help_args_len;
|
|
45
|
-
int args_len = 0;
|
|
46
84
|
int ret = 0;
|
|
47
85
|
|
|
48
86
|
if (git_libgit2_init() < 0) {
|
|
@@ -56,7 +94,7 @@ int main(int argc, char **argv)
|
|
|
56
94
|
while (cli_opt_parser_next(&opt, &optparser)) {
|
|
57
95
|
if (!opt.spec) {
|
|
58
96
|
cli_opt_status_fprint(stderr, PROGRAM_NAME, &opt);
|
|
59
|
-
cli_opt_usage_fprint(stderr, PROGRAM_NAME, NULL, cli_common_opts);
|
|
97
|
+
cli_opt_usage_fprint(stderr, PROGRAM_NAME, NULL, cli_common_opts, CLI_OPT_USAGE_SHOW_HIDDEN);
|
|
60
98
|
ret = CLI_EXIT_USAGE;
|
|
61
99
|
goto done;
|
|
62
100
|
}
|
|
@@ -66,8 +104,7 @@ int main(int argc, char **argv)
|
|
|
66
104
|
* remaining arguments as args for the command itself.
|
|
67
105
|
*/
|
|
68
106
|
if (command) {
|
|
69
|
-
|
|
70
|
-
args_len = (int)(argc - optparser.idx);
|
|
107
|
+
reorder_args(argv, optparser.idx);
|
|
71
108
|
break;
|
|
72
109
|
}
|
|
73
110
|
}
|
|
@@ -77,19 +114,10 @@ int main(int argc, char **argv)
|
|
|
77
114
|
goto done;
|
|
78
115
|
}
|
|
79
116
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
*/
|
|
85
|
-
if (!command || show_help) {
|
|
86
|
-
help_args[0] = command ? (char *)command : "help";
|
|
87
|
-
help_args[1] = command ? "--help" : NULL;
|
|
88
|
-
help_args_len = command ? 2 : 1;
|
|
89
|
-
|
|
90
|
-
command = help_args[0];
|
|
91
|
-
args = help_args;
|
|
92
|
-
args_len = help_args_len;
|
|
117
|
+
if (!command) {
|
|
118
|
+
help_args(&argc, argv);
|
|
119
|
+
ret = cmd_help(argc, argv);
|
|
120
|
+
goto done;
|
|
93
121
|
}
|
|
94
122
|
|
|
95
123
|
if ((cmd = cli_cmd_spec_byname(command)) == NULL) {
|
|
@@ -98,7 +126,7 @@ int main(int argc, char **argv)
|
|
|
98
126
|
goto done;
|
|
99
127
|
}
|
|
100
128
|
|
|
101
|
-
ret = cmd->fn(
|
|
129
|
+
ret = cmd->fn(argc - 1, &argv[1]);
|
|
102
130
|
|
|
103
131
|
done:
|
|
104
132
|
git_libgit2_shutdown();
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* This file was produced by using the `rename.pl` script included with
|
|
11
11
|
* adopt. The command-line specified was:
|
|
12
12
|
*
|
|
13
|
-
* ./rename.pl cli_opt --filename=opt --include=
|
|
13
|
+
* ./rename.pl cli_opt --filename=opt --include=common.h --inline=GIT_INLINE --header-guard=CLI_opt_h__ --lowercase-status --without-usage
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
#include <stdlib.h>
|
|
@@ -19,7 +19,11 @@
|
|
|
19
19
|
#include <limits.h>
|
|
20
20
|
#include <assert.h>
|
|
21
21
|
|
|
22
|
-
#
|
|
22
|
+
#if defined(__sun) || defined(__illumos__) || defined(__CYGWIN__)
|
|
23
|
+
# include <alloca.h>
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
#include "common.h"
|
|
23
27
|
#include "opt.h"
|
|
24
28
|
|
|
25
29
|
#ifdef _WIN32
|
|
@@ -46,7 +50,7 @@ GIT_INLINE(const cli_opt_spec *) spec_for_long(
|
|
|
46
50
|
const char *arg)
|
|
47
51
|
{
|
|
48
52
|
const cli_opt_spec *spec;
|
|
49
|
-
char *eql;
|
|
53
|
+
const char *eql;
|
|
50
54
|
size_t eql_pos;
|
|
51
55
|
|
|
52
56
|
eql = strchr(arg, '=');
|
|
@@ -73,7 +77,7 @@ GIT_INLINE(const cli_opt_spec *) spec_for_long(
|
|
|
73
77
|
|
|
74
78
|
/* Handle --option=value arguments */
|
|
75
79
|
if (spec->type == CLI_OPT_TYPE_VALUE &&
|
|
76
|
-
eql &&
|
|
80
|
+
spec->name && eql &&
|
|
77
81
|
strncmp(arg, spec->name, eql_pos) == 0 &&
|
|
78
82
|
spec->name[eql_pos] == '\0') {
|
|
79
83
|
*has_value = 1;
|
|
@@ -355,7 +359,7 @@ GIT_INLINE(const cli_opt_spec *) spec_for_sort(
|
|
|
355
359
|
const char *arg)
|
|
356
360
|
{
|
|
357
361
|
int is_negated, has_value = 0;
|
|
358
|
-
const char *value;
|
|
362
|
+
const char *value = NULL;
|
|
359
363
|
const cli_opt_spec *spec = NULL;
|
|
360
364
|
size_t idx = 0;
|
|
361
365
|
|
|
@@ -575,6 +579,28 @@ cli_opt_status_t cli_opt_parse(
|
|
|
575
579
|
return validate_required(opt, specs, given_specs);
|
|
576
580
|
}
|
|
577
581
|
|
|
582
|
+
int cli_opt_foreach(
|
|
583
|
+
const cli_opt_spec specs[],
|
|
584
|
+
char **args,
|
|
585
|
+
size_t args_len,
|
|
586
|
+
unsigned int flags,
|
|
587
|
+
int (*callback)(cli_opt *, void *),
|
|
588
|
+
void *callback_data)
|
|
589
|
+
{
|
|
590
|
+
cli_opt_parser parser;
|
|
591
|
+
cli_opt opt;
|
|
592
|
+
int ret;
|
|
593
|
+
|
|
594
|
+
cli_opt_parser_init(&parser, specs, args, args_len, flags);
|
|
595
|
+
|
|
596
|
+
while (cli_opt_parser_next(&opt, &parser)) {
|
|
597
|
+
if ((ret = callback(&opt, callback_data)) != 0)
|
|
598
|
+
return ret;
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
return 0;
|
|
602
|
+
}
|
|
603
|
+
|
|
578
604
|
static int spec_name_fprint(FILE *file, const cli_opt_spec *spec)
|
|
579
605
|
{
|
|
580
606
|
int error;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* This file was produced by using the `rename.pl` script included with
|
|
11
11
|
* adopt. The command-line specified was:
|
|
12
12
|
*
|
|
13
|
-
* ./rename.pl cli_opt --filename=opt --include=
|
|
13
|
+
* ./rename.pl cli_opt --filename=opt --include=common.h --inline=GIT_INLINE --header-guard=CLI_opt_h__ --lowercase-status --without-usage
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
#ifndef CLI_opt_h__
|
|
@@ -275,8 +275,8 @@ typedef struct cli_opt_parser {
|
|
|
275
275
|
size_t arg_idx;
|
|
276
276
|
size_t in_args;
|
|
277
277
|
size_t in_short;
|
|
278
|
-
int needs_sort : 1,
|
|
279
|
-
|
|
278
|
+
unsigned int needs_sort : 1,
|
|
279
|
+
in_literal : 1;
|
|
280
280
|
} cli_opt_parser;
|
|
281
281
|
|
|
282
282
|
/**
|
|
@@ -300,6 +300,24 @@ cli_opt_status_t cli_opt_parse(
|
|
|
300
300
|
size_t args_len,
|
|
301
301
|
unsigned int flags);
|
|
302
302
|
|
|
303
|
+
/**
|
|
304
|
+
* Quickly executes the given callback for each argument.
|
|
305
|
+
*
|
|
306
|
+
* @param specs A NULL-terminated array of `cli_opt_spec`s that can be parsed
|
|
307
|
+
* @param args The arguments that will be parsed
|
|
308
|
+
* @param args_len The length of arguments to be parsed
|
|
309
|
+
* @param flags The `cli_opt_flag_t flags for parsing
|
|
310
|
+
* @param callback The callback to invoke for each specified option
|
|
311
|
+
* @param callback_data Data to be provided to the callback
|
|
312
|
+
*/
|
|
313
|
+
int cli_opt_foreach(
|
|
314
|
+
const cli_opt_spec specs[],
|
|
315
|
+
char **args,
|
|
316
|
+
size_t args_len,
|
|
317
|
+
unsigned int flags,
|
|
318
|
+
int (*callback)(cli_opt *, void *),
|
|
319
|
+
void *callback_data);
|
|
320
|
+
|
|
303
321
|
/**
|
|
304
322
|
* Initializes a parser that parses the given arguments according to the
|
|
305
323
|
* given specifications.
|