Commit 1c9c081a by Carlos Martín Nieto

indexer: add git_indexer_stream_free() and _hash()

parent 907ebe85
...@@ -53,6 +53,23 @@ GIT_EXTERN(int) git_indexer_stream_add(git_indexer_stream *idx, void *data, size ...@@ -53,6 +53,23 @@ GIT_EXTERN(int) git_indexer_stream_add(git_indexer_stream *idx, void *data, size
GIT_EXTERN(int) git_indexer_stream_finalize(git_indexer_stream *idx, git_indexer_stats *stats); GIT_EXTERN(int) git_indexer_stream_finalize(git_indexer_stream *idx, git_indexer_stats *stats);
/** /**
* Get the packfile's hash
*
* A packfile's name is derived from the sorted hashing of all object
* names. This is only correct after the index has been finalized.
*
* @param idx the indexer instance
*/
GIT_EXTERN(const git_oid *) git_indexer_stream_hash(git_indexer_stream *idx);
/**
* Free the indexer and its resources
*
* @param idx the indexer to free
*/
GIT_EXTERN(void) git_indexer_stream_free(git_indexer_stream *idx);
/**
* Create a new indexer instance * Create a new indexer instance
* *
* @param out where to store the indexer instance * @param out where to store the indexer instance
......
...@@ -60,6 +60,11 @@ const git_oid *git_indexer_hash(git_indexer *idx) ...@@ -60,6 +60,11 @@ const git_oid *git_indexer_hash(git_indexer *idx)
return &idx->hash; 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) static int open_pack(struct git_pack_file **out, const char *filename)
{ {
size_t namelen; size_t namelen;
...@@ -544,6 +549,30 @@ on_error: ...@@ -544,6 +549,30 @@ on_error:
return -1; 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) int git_indexer_new(git_indexer **out, const char *packname)
{ {
git_indexer *idx; git_indexer *idx;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment