summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@github.com>2016-07-05 15:51:01 -0400
committerGitHub <noreply@github.com>2016-07-05 15:51:01 -0400
commitc18a2bc4e013c07c497e9811f1d796852773d348 (patch)
treea991aedcf10c6e58c01c3206cb2371fcefca0365
parentb57c176aa94275e539b6673a3fef0bdfaa227e00 (diff)
parentf1dba144810b190bc7c621a346f537e1f646b75a (diff)
downloadlibgit2-c18a2bc4e013c07c497e9811f1d796852773d348.tar.gz
Merge pull request #3851 from txdv/get-user-agent
Add get user agent functionality.
-rw-r--r--CHANGELOG.md4
-rw-r--r--include/git2/common.h1
-rw-r--r--src/settings.c8
-rw-r--r--tests/core/useragent.c6
4 files changed, 19 insertions, 0 deletions
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);
}