X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/14b3c5bc64a16df07583fe4b5ef2e0129d063893..d7978c0f8af20ff4c3f770589b1bb81568aecff3:/src/src/search.c diff --git a/src/src/search.c b/src/src/search.c index cd522dae8..11bfcd4df 100644 --- a/src/src/search.c +++ b/src/src/search.c @@ -249,7 +249,6 @@ Returns: nothing void search_tidyup(void) { -int i; int old_pool = store_pool; DEBUG(D_lookup) debug_printf("search_tidyup called\n"); @@ -257,7 +256,7 @@ DEBUG(D_lookup) debug_printf("search_tidyup called\n"); /* Close individually each cached open file. */ store_pool = POOL_SEARCH; -if (search_tree != NULL) +if (search_tree) { tidyup_subtree(search_tree); search_tree = NULL; @@ -267,10 +266,10 @@ open_filecount = 0; /* Call the general tidyup entry for any drivers that have one. */ -for (i = 0; i < lookup_list_count; i++) - if (lookup_list[i]->tidy != NULL) (lookup_list[i]->tidy)(); +for (int i = 0; i < lookup_list_count; i++) if (lookup_list[i]->tidy) + (lookup_list[i]->tidy)(); -if (search_reset_point != NULL) store_reset(search_reset_point); +if (search_reset_point) store_reset(search_reset_point); search_reset_point = NULL; store_pool = old_pool; } @@ -464,10 +463,10 @@ Returns: a pointer to a dynamic string containing the answer, static uschar * internal_search_find(void *handle, uschar *filename, uschar *keystring) { -tree_node *t = (tree_node *)handle; -search_cache *c = (search_cache *)(t->data.ptr); -expiring_data *e; -uschar *data = NULL; +tree_node * t = (tree_node *)handle; +search_cache * c = (search_cache *)(t->data.ptr); +expiring_data * e = NULL; /* compiler quietening */ +uschar * data = NULL; int search_type = t->name[0] - '0'; int old_pool = store_pool; @@ -475,7 +474,7 @@ int old_pool = store_pool; the callers don't have to test for NULL, set an empty string. */ search_error_message = US""; -search_find_defer = FALSE; +f.search_find_defer = FALSE; DEBUG(D_lookup) debug_printf("internal_search_find: file=\"%s\"\n " "type=%s key=\"%s\"\n", filename, @@ -521,7 +520,7 @@ else if (lookup_list[search_type]->find(c->handle, filename, keystring, keylength, &data, &search_error_message, &do_cache) == DEFER) - search_find_defer = TRUE; + f.search_find_defer = TRUE; /* A record that has been found is now in data, which is either NULL or points to a bit of dynamic store. Cache the result of the lookup if @@ -540,10 +539,10 @@ else } else { - t = store_get(sizeof(tree_node) + len + sizeof(expiring_data)); - e = (expiring_data *)((char *)t + sizeof(tree_node) + len); + e = store_get(sizeof(expiring_data) + sizeof(tree_node) + len); e->expiry = do_cache == UINT_MAX ? 0 : time(NULL)+do_cache; e->ptr = data; + t = (tree_node *)(e+1); memcpy(t->name, keystring, len); t->data.ptr = e; tree_insertnode(&c->item_cache, t); @@ -564,7 +563,7 @@ DEBUG(D_lookup) { if (data) debug_printf("lookup yielded: %s\n", data); - else if (search_find_defer) + else if (f.search_find_defer) debug_printf("lookup deferred: %s\n", search_error_message); else debug_printf("lookup failed\n"); } @@ -669,7 +668,7 @@ DEBUG(D_lookup) entry but could have been partial, flag to set up variables. */ yield = internal_search_find(handle, filename, keystring); -if (search_find_defer) return NULL; +if (f.search_find_defer) return NULL; if (yield != NULL) { if (partial >= 0) set_null_wild = TRUE; } /* Not matched a complete entry; handle partial lookups, but only if the full @@ -692,7 +691,7 @@ else if (partial >= 0) Ustrcpy(keystring2 + affixlen, keystring); DEBUG(D_lookup) debug_printf("trying partial match %s\n", keystring2); yield = internal_search_find(handle, filename, keystring2); - if (search_find_defer) return NULL; + if (f.search_find_defer) return NULL; } /* The key in its entirety did not match a wild entry; try chopping off @@ -730,7 +729,7 @@ else if (partial >= 0) DEBUG(D_lookup) debug_printf("trying partial match %s\n", keystring3); yield = internal_search_find(handle, filename, keystring3); - if (search_find_defer) return NULL; + if (f.search_find_defer) return NULL; if (yield != NULL) { /* First variable is the wild part; second is the fixed part. Take care @@ -757,7 +756,7 @@ else if (partial >= 0) } /* If nothing has been matched, but the option to look for "*@" is set, try -replacing everthing to the left of @ by *. After a match, the wild part +replacing everything to the left of @ by *. After a match, the wild part is set to the string to the left of the @. */ if (yield == NULL && (starflags & SEARCH_STARAT) != 0) @@ -772,7 +771,7 @@ if (yield == NULL && (starflags & SEARCH_STARAT) != 0) DEBUG(D_lookup) debug_printf("trying default match %s\n", atat); yield = internal_search_find(handle, filename, atat); *atat = savechar; - if (search_find_defer) return NULL; + if (f.search_find_defer) return NULL; if (yield != NULL && expand_setup != NULL && *expand_setup >= 0) {