Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2013-03-30 12:30:29 +0400
committerCarlos Martín Nieto <cmn@dwim.me>2013-03-31 14:51:53 +0400
commit97016f29ab2359da5c59e2acae6369794fceb9d4 (patch)
tree891c8062cce0c3a3afce5eda864be9d7e0bc16e5 /src/branch.c
parenta258d8e3574c4e993bf16e0c136d1a5fbc356728 (diff)
branch: refactor git_branch_remote_name
Return the size we'd need to write to instead of simply an error. Split the function into two to be used later by the upstream configuration functions.
Diffstat (limited to 'src/branch.c')
-rw-r--r--src/branch.c47
1 files changed, 22 insertions, 25 deletions
diff --git a/src/branch.c b/src/branch.c
index 56c63a82a..3b5d1d3c7 100644
--- a/src/branch.c
+++ b/src/branch.c
@@ -305,23 +305,16 @@ cleanup:
return error;
}
-int git_branch_remote_name(
- char *remote_name_out,
- size_t buffer_size,
- git_repository *repo,
- const char *canonical_branch_name)
+static int remote_name(git_buf *buf, git_repository *repo, const char *canonical_branch_name)
{
git_strarray remote_list = {0};
- size_t i, remote_name_size;
+ size_t i;
git_remote *remote;
const git_refspec *fetchspec;
int error = 0;
char *remote_name = NULL;
- assert(repo && canonical_branch_name);
-
- if (remote_name_out && buffer_size)
- *remote_name_out = '\0';
+ assert(buf && repo && canonical_branch_name);
/* Verify that this is a remote branch */
if (!git_reference__is_remote(canonical_branch_name)) {
@@ -362,23 +355,10 @@ int git_branch_remote_name(
}
if (remote_name) {
- remote_name_size = strlen(remote_name) + 1;
- error = (int) remote_name_size;
-
- if (remote_name_out) {
- if(remote_name_size > buffer_size) {
- giterr_set(
- GITERR_INVALID,
- "Buffer too short to hold the remote name.");
- error = GIT_ERROR;
- goto cleanup;
- }
-
- memcpy(remote_name_out, remote_name, remote_name_size);
- }
+ git_buf_clear(buf);
+ error = git_buf_puts(buf, remote_name);
} else {
error = GIT_ENOTFOUND;
- goto cleanup;
}
cleanup:
@@ -386,6 +366,23 @@ cleanup:
return error;
}
+int git_branch_remote_name(char *buffer, size_t buffer_len, git_repository *repo, const char *refname)
+{
+ int ret;
+ git_buf buf = GIT_BUF_INIT;
+
+ if ((ret = remote_name(&buf, repo, refname)) < 0)
+ return ret;
+
+ if (buffer)
+ git_buf_copy_cstr(buffer, buffer_len, &buf);
+
+ ret = git_buf_len(&buf) + 1;
+ git_buf_free(&buf);
+
+ return ret;
+}
+
int git_branch_upstream_name(
char *tracking_branch_name_out,
size_t buffer_size,