summaryrefslogtreecommitdiff
path: root/src/tree.c
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2011-01-29 02:12:59 +0200
committerVicent Marti <tanoku@gmail.com>2011-01-29 02:12:59 +0200
commitb29e8f19300bb95b9f8307f1438193271233adc8 (patch)
tree0507587cdeb25cf3d93552ff33e3d599f659b3a6 /src/tree.c
parent37c2d54c8590d3eaeb33aec198089dc917fd351d (diff)
downloadlibgit2-b29e8f19300bb95b9f8307f1438193271233adc8.tar.gz
Return the created entry in git_tree_add_entry()
Yes, we are breaking the API. Alpha software, deal with it. We need a way of getting a pointer to each newly added entry to the index, because manually looking up the entry after creation is outrageously expensive. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Diffstat (limited to 'src/tree.c')
-rw-r--r--src/tree.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/tree.c b/src/tree.c
index d160a79a4..dffe872e0 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -174,7 +174,7 @@ size_t git_tree_entrycount(git_tree *tree)
return tree->entries.length;
}
-int git_tree_add_entry(git_tree *tree, const git_oid *id, const char *filename, int attributes)
+int git_tree_add_entry(git_tree_entry **entry_out, git_tree *tree, const git_oid *id, const char *filename, int attributes)
{
git_tree_entry *entry;
@@ -195,6 +195,9 @@ int git_tree_add_entry(git_tree *tree, const git_oid *id, const char *filename,
git_vector_sort(&tree->entries);
+ if (entry_out != NULL)
+ *entry_out = entry;
+
tree->object.modified = 1;
return GIT_SUCCESS;
}