Thread (55 messages) flat view 55 messages, 4 authors, 2021-01-26

Re: [PATCH 2/9] cache-tree: extract subtree_pos()

From: Elijah Newren <hidden>
Date: 2021-01-20 17:33:53

On Wed, Jan 20, 2021 at 8:54 AM Derrick Stolee via GitGitGadget
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Derrick Stolee <redacted>

This method will be helpful to use outside of cache-tree.c in a later
feature. The implementation is subtle due to subtree_name_cmp() sorting
by length and then lexicographically.

Signed-off-by: Derrick Stolee <redacted>
---
 cache-tree.c | 6 +++---
 cache-tree.h | 2 ++
 2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/cache-tree.c b/cache-tree.c
index c1e49901c17..2b130dd5e19 100644
--- a/cache-tree.c
+++ b/cache-tree.c
@@ -45,7 +45,7 @@ static int subtree_name_cmp(const char *one, int onelen,
        return memcmp(one, two, onelen);
 }

-static int subtree_pos(struct cache_tree *it, const char *path, int pathlen)
+int cache_tree_subtree_pos(struct cache_tree *it, const char *path, int pathlen)
 {
        struct cache_tree_sub **down = it->down;
        int lo, hi;
@@ -72,7 +72,7 @@ static struct cache_tree_sub *find_subtree(struct cache_tree *it,
                                           int create)
 {
        struct cache_tree_sub *down;
-       int pos = subtree_pos(it, path, pathlen);
+       int pos = cache_tree_subtree_pos(it, path, pathlen);
        if (0 <= pos)
                return it->down[pos];
        if (!create)
@@ -123,7 +123,7 @@ static int do_invalidate_path(struct cache_tree *it, const char *path)
        it->entry_count = -1;
        if (!*slash) {
                int pos;
-               pos = subtree_pos(it, path, namelen);
+               pos = cache_tree_subtree_pos(it, path, namelen);
                if (0 <= pos) {
                        cache_tree_free(&it->down[pos]->cache_tree);
                        free(it->down[pos]);
diff --git a/cache-tree.h b/cache-tree.h
index 639bfa5340e..8efeccebfc9 100644
--- a/cache-tree.h
+++ b/cache-tree.h
@@ -27,6 +27,8 @@ void cache_tree_free(struct cache_tree **);
 void cache_tree_invalidate_path(struct index_state *, const char *);
 struct cache_tree_sub *cache_tree_sub(struct cache_tree *, const char *);

+int cache_tree_subtree_pos(struct cache_tree *it, const char *path, int pathlen);
+
 void cache_tree_write(struct strbuf *, struct cache_tree *root);
 struct cache_tree *cache_tree_read(const char *buffer, unsigned long size);

--
gitgitgadget
Simple, straight-forward patch for exposing the function outside the
file scope; looks good.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help