summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/refs.c11
-rw-r--r--src/refs.h2
2 files changed, 13 insertions, 0 deletions
diff --git a/src/refs.c b/src/refs.c
index c0e460cc3..e59b34aae 100644
--- a/src/refs.c
+++ b/src/refs.c
@@ -88,6 +88,17 @@ git_reference *git_reference__alloc(
return ref;
}
+git_reference *git_reference__set_name(
+ git_reference *ref, const char *name)
+{
+ size_t namelen = strlen(name);
+ git_reference *rewrite =
+ git__realloc(ref, sizeof(git_reference) + namelen + 1);
+ if (rewrite != NULL)
+ memcpy(rewrite->name, name, namelen + 1);
+ return rewrite;
+}
+
void git_reference_free(git_reference *reference)
{
if (reference == NULL)
diff --git a/src/refs.h b/src/refs.h
index f487ee3fc..4bb49d02a 100644
--- a/src/refs.h
+++ b/src/refs.h
@@ -61,6 +61,8 @@ struct git_reference {
char name[0];
};
+git_reference *git_reference__set_name(git_reference *ref, const char *name);
+
int git_reference__normalize_name_lax(char *buffer_out, size_t out_size, const char *name);
int git_reference__normalize_name(git_buf *buf, const char *name, unsigned int flags);
int git_reference__update_terminal(git_repository *repo, const char *ref_name, const git_oid *oid);