From: Pavel Charvat Date: Fri, 29 Feb 2008 17:49:58 +0000 (+0100) Subject: admin: the can be more than one site for a single domain X-Git-Tag: holmes-import~404^2^2~7 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=66dbe15d91237307806ff32e796dd0e4ffd57126;p=libucw.git admin: the can be more than one site for a single domain --- diff --git a/lib/trie.h b/lib/trie.h index c3ee6e0b..aa929dba 100644 --- a/lib/trie.h +++ b/lib/trie.h @@ -29,6 +29,7 @@ * TRIE_WANT_FIND node *find(char *str) * TRIE_WANT_FIND_BUF node *find_buf(byte *ptr, uns len) * TRIE_WANT_ADD add(*node) + * TRIE_WANT_ADD_OVER node *add_over(*node) * TRIE_WANT_DELETE delete(char *str) * TRIE_WANT_DELETE_BUF delete_buf(byte *ptr, uns len) * TRIE_WANT_REMOVE remove(*node) @@ -120,7 +121,7 @@ TRIE_COMPILE_ASSERT(bucket_size, TRIE_BUCKET_SIZE >= 3 && TRIE_BUCKET_SIZE <= 25 #define TRIE_WANT_DO_FIND_PREFIX #endif -#if !defined(TRIE_WANT_DO_LOOKUP) && defined(TRIE_WANT_ADD) +#if !defined(TRIE_WANT_DO_LOOKUP) && (defined(TRIE_WANT_ADD) || defined(TRIE_WANT_ADD_OVER)) #define TRIE_WANT_DO_LOOKUP #endif @@ -749,6 +750,17 @@ P(add)(TAC P(node_t) *node) } #endif +#ifdef TRIE_WANT_ADD_OVER +static inline P(node_t) * +P(add_over)(TAC P(node_t) *node) +{ + struct P(edge) *edge = P(do_lookup)(TTC P(str_get)(node), P(str_len)(node)); + P(node_t) *over = edge->node; + edge->node = node; + return over; +} +#endif + #ifdef TRIE_WANT_DELETE static inline P(node_t) * P(delete)(TAC char *str) @@ -923,6 +935,7 @@ P(audit)(TA) #undef TRIE_WANT_FIND #undef TRIE_WANT_FIND_BUF #undef TRIE_WANT_ADD +#undef TRIE_WANT_ADD_OVER #undef TRIE_WANT_DELETE #undef TRIE_WANT_DELETE_BUF #undef TRIE_WANT_REMOVE