From f1dba144810b190bc7c621a346f537e1f646b75a Mon Sep 17 00:00:00 2001 From: Andrius Bentkus Date: Tue, 5 Jul 2016 09:41:51 +0300 Subject: [PATCH] Add get user agent functionality. --- CHANGELOG.md | 4 ++++ include/git2/common.h | 1 + src/settings.c | 8 ++++++++ tests/core/useragent.c | 6 ++++++ 4 files changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44d868e7e..32925d485 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ v0.24 + 1 ### API additions +* You can now get the user-agent used by libgit2 using the + `GIT_OPT_GET_USER_AGENT` option with `git_libgit2_opts()`. + It is the counterpart to `GIT_OPT_SET_USER_AGENT`. + * `git_commit_create_buffer()` creates a commit and writes it into a user-provided buffer instead of writing it into the object db. diff --git a/include/git2/common.h b/include/git2/common.h index d7428d811..18abe46b3 100644 --- a/include/git2/common.h +++ b/include/git2/common.h @@ -158,6 +158,7 @@ typedef enum { GIT_OPT_SET_USER_AGENT, GIT_OPT_ENABLE_STRICT_OBJECT_CREATION, GIT_OPT_SET_SSL_CIPHERS, + GIT_OPT_GET_USER_AGENT, } git_libgit2_opt_t; /** diff --git a/src/settings.c b/src/settings.c index 00a3ef04d..4a6e0f353 100644 --- a/src/settings.c +++ b/src/settings.c @@ -209,6 +209,14 @@ int git_libgit2_opts(int key, ...) #endif break; + case GIT_OPT_GET_USER_AGENT: + { + git_buf *out = va_arg(ap, git_buf *); + git_buf_sanitize(out); + error = git_buf_sets(out, git__user_agent); + } + break; + default: giterr_set(GITERR_INVALID, "invalid option key"); error = -1; diff --git a/tests/core/useragent.c b/tests/core/useragent.c index 6d06693a8..5c09223bb 100644 --- a/tests/core/useragent.c +++ b/tests/core/useragent.c @@ -4,8 +4,14 @@ void test_core_useragent__get(void) { const char *custom_name = "super duper git"; + git_buf buf = GIT_BUF_INIT; cl_assert_equal_p(NULL, git_libgit2__user_agent()); cl_git_pass(git_libgit2_opts(GIT_OPT_SET_USER_AGENT, custom_name)); cl_assert_equal_s(custom_name, git_libgit2__user_agent()); + + cl_git_pass(git_libgit2_opts(GIT_OPT_GET_USER_AGENT, &buf)); + cl_assert_equal_s(custom_name, buf.ptr); + + git_buf_free(&buf); }