summaryrefslogtreecommitdiff
path: root/refs/ref-cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'refs/ref-cache.c')
-rw-r--r--refs/ref-cache.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/refs/ref-cache.c b/refs/ref-cache.c
index 4274a43a9b..bf911028c8 100644
--- a/refs/ref-cache.c
+++ b/refs/ref-cache.c
@@ -63,9 +63,17 @@ struct ref_entry *create_ref_entry(const char *refname,
return ref;
}
+struct ref_cache *create_ref_cache(struct files_ref_store *refs)
+{
+ struct ref_cache *ret = xcalloc(1, sizeof(*ret));
+
+ ret->root = create_dir_entry(refs, "", 0, 1);
+ return ret;
+}
+
static void clear_ref_dir(struct ref_dir *dir);
-void free_ref_entry(struct ref_entry *entry)
+static void free_ref_entry(struct ref_entry *entry)
{
if (entry->flag & REF_DIR) {
/*
@@ -77,6 +85,12 @@ void free_ref_entry(struct ref_entry *entry)
free(entry);
}
+void free_ref_cache(struct ref_cache *cache)
+{
+ free_ref_entry(cache->root);
+ free(cache);
+}
+
/*
* Clear and free all entries in dir, recursively.
*/