rem: for (start = 0; start < handle->cache_num_builtins; start++) { if (strcmp(handle->cache_chain_heads[start].name, name) == 0) return &handle->cache_chain_heads[start];
add: for (i = 0; i < handle->cache_num_chains; i++) { if (strcmp(handle->cache_chain_heads[i].name, name) == 0) return &handle->cache_chain_heads[i];
context: find_label(const char *name, iptc_handle_t handle){	unsigned int start, end;	if (handle->cache_chain_heads == NULL	    && !populate_cache(handle))		return NULL;	/* Linear search through builtins, then binary */	for (start = 0; start < handle->cache_num_builtins; start++) {		if (strcmp(handle->cache_chain_heads[start].name, name) == 0)			return &handle->cache_chain_heads[start];	}	/* Binary search. */	end = handle->cache_num_chains - 1;	while (start < end) {		struct chain_cache *mid;		int res;		mid = &handle->cache_chain_heads[(start + end) / 2];		res = strcmp(name, mid->name);		if (res == 0) {			 return mid;		} else if (res > 0)			start = (start + end + 1) / 2;		else			end = (start + end) / 2;	}	if (strcmp(name, handle->cache_chain_heads[start].name) == 0)		return &handle->cache_chain_heads[start];	else		return NULL;}