mail-cache-fields.c revision 7bb939ef70752f2731d27b18c944ea94e5b23eb5
2454dfa32c93c20a8522c6ed42fe057baaac9f9aStephan Bosch/* Copyright (C) 2004 Timo Sirainen */
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomivoid mail_cache_register_fields(struct mail_cache *cache,
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi unsigned int new_idx;
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi unsigned int i, j;
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi for (i = 0; i < fields_count; i++) {
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi if (hash_lookup_full(cache->field_name_hash, fields[i].name,
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi /* check if the same header is being registered in the
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi same field array */
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi for (j = 0; j < i; j++) {
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi if (strcasecmp(fields[i].name, fields[j].name) == 0) {
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi /* @UNSAFE */
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi cache->fields_count * sizeof(*cache->field_file_map),
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi for (i = 0; i < fields_count; i++) {
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi /* new index - save it */
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi name = p_strdup(cache->field_pool, fields[i].name);
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi cache->fields[idx].field.field_size = (unsigned int)-1;
c34bdea0d736047ba7bbc835baf4126ea78d5da7Aki Tuomi hash_insert(cache->field_name_hash, name, POINTER_CAST(idx));
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomimail_cache_register_lookup(struct mail_cache *cache, const char *name)
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi if (hash_lookup_full(cache->field_name_hash, name,
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi return (unsigned int)-1;
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomimail_cache_register_get_list(struct mail_cache *cache, pool_t pool,
c31803dcbdf3d4e3b836134a2a04ee2cd5251ce5Aki Tuomi unsigned int *count_r)
c31803dcbdf3d4e3b836134a2a04ee2cd5251ce5Aki Tuomi unsigned int i;
f7060b8499ed07205734cf7af94ad5405fa687b5Aki Tuomi list = p_new(pool, struct mail_cache_field, cache->fields_count);
*offset_r = 0;
offset = 0;
while (next_offset != 0) {
sizeof(*field_hdr) +
if (offset == 0) {
sizeof(*field_hdr) +
decisions[i];
names);
sizes[i]) {
names);
const void *data;
unsigned int i, field;
const int *data;
unsigned int i, field;
int ret = 0;
t_push();
sizeof(uint32_t));
if (ret == 0) {
if (ret == 0) {
t_pop();
if (ret == 0)
return ret;
int ret;
return ret;
unsigned int field;
const char *name;
uint32_t i;
sizeof(uint32_t));
sizeof(uint32_t));
if (*offset_r == 0) {