summaryrefslogtreecommitdiff
path: root/src/indexer.c
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2012-04-13 19:25:06 +0200
committerCarlos Martín Nieto <carlos@cmartin.tk>2012-04-13 22:19:45 +0200
commit1c9c081a6a0e02ea8a148717083e3f7a769c5a2e (patch)
treece0404684becd4903233d8f0abd3a9a5af7c3c98 /src/indexer.c
parent907ebe855602bcbed2bf1bb55647b4c1767614ba (diff)
downloadlibgit2-1c9c081a6a0e02ea8a148717083e3f7a769c5a2e.tar.gz
indexer: add git_indexer_stream_free() and _hash()
Diffstat (limited to 'src/indexer.c')
-rw-r--r--src/indexer.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/indexer.c b/src/indexer.c
index 744634205..1834d9884 100644
--- a/src/indexer.c
+++ b/src/indexer.c
@@ -60,6 +60,11 @@ const git_oid *git_indexer_hash(git_indexer *idx)
return &idx->hash;
}
+const git_oid *git_indexer_stream_hash(git_indexer_stream *idx)
+{
+ return &idx->hash;
+}
+
static int open_pack(struct git_pack_file **out, const char *filename)
{
size_t namelen;
@@ -544,6 +549,30 @@ on_error:
return -1;
}
+void git_indexer_stream_free(git_indexer_stream *idx)
+{
+ unsigned int i;
+ struct entry *e;
+ struct git_pack_entry *pe;
+ struct delta_info *delta;
+
+ if (idx == NULL)
+ return;
+
+ p_close(idx->pack->mwf.fd);
+ git_vector_foreach(&idx->objects, i, e)
+ git__free(e);
+ git_vector_free(&idx->objects);
+ git_vector_foreach(&idx->pack->cache, i, pe)
+ git__free(pe);
+ git_vector_free(&idx->pack->cache);
+ git_vector_foreach(&idx->deltas, i, delta)
+ git__free(delta);
+ git_vector_free(&idx->deltas);
+ git__free(idx->pack);
+ git__free(idx);
+}
+
int git_indexer_new(git_indexer **out, const char *packname)
{
git_indexer *idx;