Commit 3ba69ba8 by Carlos Martín Nieto Committed by Vicent Marti

Add git_tree_cache_get

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
parent b419fe2d
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include "tree-cache.h" #include "tree-cache.h"
static git_tree_cache *find_child(git_tree_cache *tree, const char *path) static git_tree_cache *find_child(const git_tree_cache *tree, const char *path)
{ {
size_t i, dirlen; size_t i, dirlen;
const char *end; const char *end;
...@@ -53,6 +53,29 @@ void git_tree_cache_invalidate_path(git_tree_cache *tree, const char *path) ...@@ -53,6 +53,29 @@ void git_tree_cache_invalidate_path(git_tree_cache *tree, const char *path)
} }
} }
const git_tree_cache *git_tree_cache_get(const git_tree_cache *tree, const char *path)
{
const char *ptr = path, *end;
if (tree == NULL) {
return NULL;
}
while (1) {
end = strchr(ptr, '/');
tree = find_child(tree, ptr);
if (tree == NULL) { /* Can't find it */
return NULL;
}
if (end == NULL || end + 1 == '\0')
return tree;
ptr = end + 1;
}
}
static int read_tree_internal(git_tree_cache **out, static int read_tree_internal(git_tree_cache **out,
const char **buffer_in, const char *buffer_end, git_tree_cache *parent) const char **buffer_in, const char *buffer_end, git_tree_cache *parent)
{ {
......
...@@ -25,6 +25,7 @@ typedef struct git_tree_cache git_tree_cache; ...@@ -25,6 +25,7 @@ typedef struct git_tree_cache git_tree_cache;
int git_tree_cache_read(git_tree_cache **tree, const char *buffer, size_t buffer_size); int git_tree_cache_read(git_tree_cache **tree, const char *buffer, size_t buffer_size);
void git_tree_cache_invalidate_path(git_tree_cache *tree, const char *path); void git_tree_cache_invalidate_path(git_tree_cache *tree, const char *path);
const git_tree_cache *git_tree_cache_get(const git_tree_cache *tree, const char *path);
void git_tree_cache_free(git_tree_cache *tree); void git_tree_cache_free(git_tree_cache *tree);
#endif #endif
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