mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-09 15:00:04 +00:00
Add git_tree_cache_get
Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
This commit is contained in:
parent
b419fe2d8c
commit
3ba69ba8a4
@ -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)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
|||||||
|
|
||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user