X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/agedu/blobdiff_plain/09fd761910218169867abf96b15d3cc1bc36e379..522edd92f2bbef89ccd1dd0a3e874516fb47e2ef:/trie.c diff --git a/trie.c b/trie.c index 51fba3e..345756f 100644 --- a/trie.c +++ b/trie.c @@ -628,6 +628,19 @@ triewalk *triewalk_new(const void *vt) return tw; } + +void triewalk_rebase(triewalk *tw, const void *t) +{ + ptrdiff_t diff = ((const unsigned char *)t - (const unsigned char *)(tw->t)); + int i; + + tw->t = t; + + for (i = 0; i < tw->nswitches; i++) + tw->switches[i].sw = (const struct trie_switch *) + ((const unsigned char *)(tw->switches[i].sw) + diff); +} + const struct trie_file *triewalk_next(triewalk *tw, char *buf) { off_t off;