[dovecot-cvs] dovecot/src/lib-index mail-index-private.h, 1.18,
1.19 mail-index-sync-update.c, 1.22,
1.23 mail-index-transaction-private.h, 1.3,
1.4 mail-index-transaction.c, 1.8, 1.9 mail-index.c, 1.129,
1.130 mail-index.h, 1.113, 1.114 mail-transaction-log-view.c,
1.17, 1.18 mail-transaction-log.c, 1.35,
1.36 mail-transaction-log.h, 1.11,
1.12 mail-transaction-util.c, 1.9,
1.10 mail-transaction-util.h, 1.5, 1.6
cras at procontrol.fi
cras at procontrol.fi
Mon Jun 14 05:07:35 EEST 2004
- Previous message: [dovecot-cvs] dovecot/src/lib-index mail-index-fsck.c, 1.21,
1.22 mail-index-lock.c, 1.19, 1.20 mail-index-private.h, 1.17,
1.18 mail-index-sync-update.c, 1.21, 1.22 mail-index-sync.c,
1.18, 1.19 mail-index-transaction.c, 1.7,
1.8 mail-index-view-sync.c, 1.12, 1.13 mail-index-view.c, 1.10,
1.11 mail-index.c, 1.128, 1.129 mail-index.h, 1.112,
1.113 mail-transaction-log.c, 1.34,
1.35 mail-transaction-util.c, 1.8, 1.9 mail-transaction-util.h,
1.4, 1.5
- Next message: [dovecot-cvs] dovecot/src/lib-index mail-index-lock.c, 1.20,
1.21 mail-index-private.h, 1.19, 1.20 mail-index-sync-update.c,
1.23, 1.24 mail-index-transaction.c, 1.9,
1.10 mail-index-view.c, 1.11, 1.12 mail-index.c, 1.130,
1.131 mail-index.h, 1.114, 1.115 mail-transaction-log.c, 1.36,
1.37 mail-transaction-util.c, 1.10, 1.11
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv19543/lib-index
Modified Files:
mail-index-private.h mail-index-sync-update.c
mail-index-transaction-private.h mail-index-transaction.c
mail-index.c mail-index.h mail-transaction-log-view.c
mail-transaction-log.c mail-transaction-log.h
mail-transaction-util.c mail-transaction-util.h
Log Message:
Modifying extra_records should work now.
Index: mail-index-private.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-private.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- mail-index-private.h 13 Jun 2004 23:38:47 -0000 1.18
+++ mail-index-private.h 14 Jun 2004 02:07:33 -0000 1.19
@@ -6,6 +6,12 @@
struct mail_transaction_header;
+/* Maximum number of extra record data items we allowed. Currently maximum
+ would be 32767 because of how transaction log is implemented. Raising this
+ limit only means it takes a few bytes more memory, but 32 should be enough
+ for a long time, right? :) */
+#define MAIL_INDEX_MAX_EXTRA_RECORDS 32
+
/* Index file is grown exponentially when we're adding less than this many
records. */
#define MAIL_INDEX_MAX_POWER_GROW (1024*1024 / sizeof(struct mail_index_record))
@@ -49,6 +55,10 @@
mode_t mode;
gid_t gid;
+
+ uint16_t extra_record_offsets[MAIL_INDEX_MAX_EXTRA_RECORDS];
+ uint16_t extra_record_sizes[MAIL_INDEX_MAX_EXTRA_RECORDS];
+ unsigned int extra_records_count;
unsigned int record_size;
char *filepath;
Index: mail-index-sync-update.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-sync-update.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- mail-index-sync-update.c 13 Jun 2004 23:38:47 -0000 1.22
+++ mail-index-sync-update.c 14 Jun 2004 02:07:33 -0000 1.23
@@ -214,6 +214,31 @@
return 1;
}
+static int
+sync_extra_rec_update(const struct mail_transaction_extra_rec_header *hdr,
+ const struct mail_transaction_extra_rec_update *u,
+ void *context)
+{
+ struct mail_index_view *view = context;
+ struct mail_index_record *rec;
+ uint32_t seq;
+ uint16_t offset, size;
+ int ret;
+
+ ret = mail_index_lookup_uid_range(view, u->uid, u->uid,
+ &seq, &seq);
+ i_assert(ret == 0);
+
+ if (seq != 0) {
+ offset = view->index->extra_record_offsets[hdr->idx];
+ size = view->index->extra_record_sizes[hdr->idx];
+
+ rec = MAIL_INDEX_MAP_IDX(view->index, view->map, seq-1);
+ memcpy(PTR_OFFSET(rec, offset), u->data, size);
+ }
+ return 1;
+}
+
static int mail_index_grow(struct mail_index *index, struct mail_index_map *map,
unsigned int count)
{
@@ -354,5 +379,5 @@
struct mail_transaction_map_functions mail_index_map_sync_funcs = {
sync_expunge, sync_append, sync_flag_update,
- sync_cache_update, sync_header_update
+ sync_cache_update, sync_header_update, sync_extra_rec_update
};
Index: mail-index-transaction-private.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-transaction-private.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- mail-index-transaction-private.h 24 May 2004 01:50:16 -0000 1.3
+++ mail-index-transaction-private.h 14 Jun 2004 02:07:33 -0000 1.4
@@ -16,6 +16,8 @@
unsigned char hdr_change[sizeof(struct mail_index_header)];
unsigned char hdr_mask[sizeof(struct mail_index_header)];
+ buffer_t *extra_rec_updates[MAIL_INDEX_MAX_EXTRA_RECORDS];
+
buffer_t *cache_updates;
unsigned int hide_transaction:1;
unsigned int hdr_changed:1;
Index: mail-index-transaction.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-transaction.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- mail-index-transaction.c 13 Jun 2004 23:38:47 -0000 1.8
+++ mail-index-transaction.c 14 Jun 2004 02:07:33 -0000 1.9
@@ -28,13 +28,23 @@
static void mail_index_transaction_free(struct mail_index_transaction *t)
{
+ unsigned int i;
+
mail_index_view_transaction_unref(t->view);
+
+ for (i = 0; i < t->view->index->extra_records_count; i++) {
+ if (t->extra_rec_updates[i] != NULL)
+ buffer_free(t->extra_rec_updates[i]);
+ }
+
if (t->appends != NULL)
buffer_free(t->appends);
if (t->expunges != NULL)
buffer_free(t->expunges);
if (t->updates != NULL)
buffer_free(t->updates);
+ if (t->cache_updates != NULL)
+ buffer_free(t->cache_updates);
i_free(t);
}
@@ -66,15 +76,25 @@
static int
mail_index_transaction_convert_to_uids(struct mail_index_transaction *t)
{
+ struct mail_index *index = t->view->index;
+ unsigned int i;
+
if (mail_index_view_lock(t->view) < 0)
return -1;
+ for (i = 0; i < index->extra_records_count; i++) {
+ mail_index_buffer_convert_to_uids(t->view,
+ t->extra_rec_updates[i],
+ index->extra_record_sizes[i],
+ FALSE);
+ }
+
mail_index_buffer_convert_to_uids(t->view, t->expunges,
sizeof(struct mail_transaction_expunge), TRUE);
mail_index_buffer_convert_to_uids(t->view, t->updates,
sizeof(struct mail_transaction_flag_update), TRUE);
mail_index_buffer_convert_to_uids(t->view, t->cache_updates,
- sizeof(struct mail_transaction_cache_update), TRUE);
+ sizeof(struct mail_transaction_cache_update), FALSE);
return 0;
}
@@ -391,45 +411,65 @@
&update, sizeof(update));
}
-void mail_index_update_cache(struct mail_index_transaction *t,
- uint32_t seq, uint32_t offset)
+static void mail_index_update_seq_buffer(buffer_t **buffer, uint32_t seq,
+ const void *record, size_t record_size)
{
- struct mail_transaction_cache_update *data, update;
unsigned int idx, left_idx, right_idx;
+ void *data;
+ uint32_t full_record_size, *seq_p;
size_t size;
- if (t->cache_updates == NULL) {
- t->cache_updates = buffer_create_dynamic(default_pool,
- 1024, (size_t)-1);
- }
+ full_record_size = record_size + sizeof(uint32_t);
- data = buffer_get_modifyable_data(t->cache_updates, &size);
- size /= sizeof(*data);
+ if (*buffer == NULL)
+ *buffer = buffer_create_dynamic(default_pool, 1024, (size_t)-1);
+ data = buffer_get_modifyable_data(*buffer, &size);
/* we're probably appending it, check */
- if (size == 0 || data[size-1].uid < seq)
- idx = size;
+ if (size == 0)
+ idx = 0;
+ else if (*((uint32_t *)PTR_OFFSET(data, size-full_record_size)) < seq)
+ idx = size / full_record_size;
else {
- idx = 0; left_idx = 0; right_idx = size;
+ idx = 0; left_idx = 0; right_idx = size / full_record_size;
while (left_idx < right_idx) {
idx = (left_idx + right_idx) / 2;
- if (data[idx].uid < seq)
+ seq_p = PTR_OFFSET(data, idx * full_record_size);
+ if (*seq_p < seq)
left_idx = idx+1;
- else if (data[idx].uid > seq)
+ else if (*seq_p > seq)
right_idx = idx;
else {
/* already there, update */
- data[idx].cache_offset = offset;
+ memcpy(seq_p+1, record, record_size);
return;
}
}
}
- update.uid = seq;
- update.cache_offset = offset;
- buffer_insert(t->updates, idx * sizeof(update),
- &update, sizeof(update));
+ idx *= full_record_size;
+ buffer_copy(*buffer, idx + full_record_size, *buffer, idx, (size_t)-1);
+ seq_p = buffer_get_space_unsafe(*buffer, idx, full_record_size);
+
+ *seq_p = seq;
+ memcpy(seq_p+1, record, record_size);
+}
+
+void mail_index_update_cache(struct mail_index_transaction *t,
+ uint32_t seq, uint32_t offset)
+{
+ mail_index_update_seq_buffer(&t->cache_updates, seq,
+ &offset, sizeof(offset));
+}
+
+void mail_index_update_extra_rec(struct mail_index_transaction *t,
+ uint32_t seq, uint32_t idx, const void *data)
+{
+ i_assert(idx < t->view->index->extra_records_count);
+
+ mail_index_update_seq_buffer(&t->extra_rec_updates[idx], seq, data,
+ t->view->index->extra_record_sizes[idx]);
}
void mail_index_update_header(struct mail_index_transaction *t,
Index: mail-index.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index.c,v
retrieving revision 1.129
retrieving revision 1.130
diff -u -d -r1.129 -r1.130
--- mail-index.c 13 Jun 2004 23:38:47 -0000 1.129
+++ mail-index.c 14 Jun 2004 02:07:33 -0000 1.130
@@ -41,14 +41,29 @@
i_free(index);
}
-uint16_t mail_index_register_record_extra(struct mail_index *index,
- uint16_t size)
+uint32_t mail_index_register_record_extra(struct mail_index *index,
+ uint16_t size, uint32_t *offset_r)
{
+ uint16_t offset;
+
i_assert(!index->opened);
i_assert(index->record_size + size <= 65535);
+ i_assert(size % 4 == 0);
+ if (index->extra_records_count >= MAIL_INDEX_MAX_EXTRA_RECORDS) {
+ i_panic("Maximum extra record count reached, "
+ "you'll need to recompile with larger limit. "
+ "MAIL_INDEX_MAX_EXTRA_RECORDS = %d",
+ MAIL_INDEX_MAX_EXTRA_RECORDS);
+ }
+
+ offset = index->record_size;
index->record_size += size;
- return index->record_size - size;
+ *offset_r = offset;
+
+ index->extra_record_offsets[index->extra_records_count] = offset;
+ index->extra_record_sizes[index->extra_records_count] = size;
+ return index->extra_records_count++;
}
static int mail_index_check_header(struct mail_index *index,
Index: mail-index.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index.h,v
retrieving revision 1.113
retrieving revision 1.114
diff -u -d -r1.113 -r1.114
--- mail-index.h 13 Jun 2004 23:38:47 -0000 1.113
+++ mail-index.h 14 Jun 2004 02:07:33 -0000 1.114
@@ -138,9 +138,11 @@
/* register extra data to be used in mail_index_record. calls to this function
must remain in same order as long as the index exists, or it breaks.
- returns the relative offset in mail_index_record for the data. */
-uint16_t mail_index_register_record_extra(struct mail_index *index,
- uint16_t size);
+
+ returns the index number, and sets *offset_r to relative offset in
+ mail_index_record for the data. */
+uint32_t mail_index_register_record_extra(struct mail_index *index,
+ uint16_t size, uint32_t *offset_r);
int mail_index_open(struct mail_index *index, enum mail_index_open_flags flags);
void mail_index_close(struct mail_index *index);
@@ -267,6 +269,8 @@
/* Update field in header. */
void mail_index_update_header(struct mail_index_transaction *t,
size_t offset, const void *data, size_t size);
+void mail_index_update_extra_rec(struct mail_index_transaction *t,
+ uint32_t seq, uint32_t idx, const void *data);
/* Returns the last error code. */
enum mail_index_error mail_index_get_last_error(struct mail_index *index);
Index: mail-transaction-log-view.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-transaction-log-view.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- mail-transaction-log-view.c 30 May 2004 16:35:18 -0000 1.17
+++ mail-transaction-log-view.c 14 Jun 2004 02:07:33 -0000 1.18
@@ -262,6 +262,7 @@
hdr = CONST_PTR_OFFSET(data, view->cur_offset - file->buffer_offset);
view->cur_offset += sizeof(*hdr);
+ data = CONST_PTR_OFFSET(hdr, sizeof(*hdr));
if (file_size - view->cur_offset < hdr->size) {
mail_transaction_log_file_set_corrupted(file,
@@ -296,6 +297,16 @@
"extra bits in header type: 0x%x",
hdr->type & MAIL_TRANSACTION_TYPE_MASK);
return -1;
+ } else if (hdr->type == MAIL_TRANSACTION_EXTRA_REC_UPDATE) {
+ const struct mail_transaction_extra_rec_header *ehdr = data;
+
+ if (ehdr->idx >= view->log->index->extra_records_count) {
+ mail_transaction_log_file_set_corrupted(file,
+ "extra record update out of range (%u > %u)",
+ ehdr->idx,
+ view->log->index->extra_records_count);
+ return -1;
+ }
}
if (hdr->size % record_size != 0) {
@@ -308,8 +319,7 @@
}
*hdr_r = hdr;
- *data_r = CONST_PTR_OFFSET(data, view->cur_offset -
- file->buffer_offset);
+ *data_r = data;
view->cur_offset += hdr->size;
return 1;
}
Index: mail-transaction-log.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-transaction-log.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- mail-transaction-log.c 13 Jun 2004 23:38:47 -0000 1.35
+++ mail-transaction-log.c 14 Jun 2004 02:07:33 -0000 1.36
@@ -936,9 +936,9 @@
return ret;
}
-static int
-log_append_buffer(struct mail_transaction_log_file *file, const buffer_t *buf,
- enum mail_transaction_type type, int external)
+static int log_append_buffer(struct mail_transaction_log_file *file,
+ const buffer_t *buf, const buffer_t *hdr_buf,
+ enum mail_transaction_type type, int external)
{
struct mail_transaction_header hdr;
const void *data;
@@ -946,15 +946,9 @@
i_assert((type & MAIL_TRANSACTION_TYPE_MASK) != 0);
- if (buf != NULL) {
- data = buffer_get_data(buf, &size);
- if (size == 0)
- return 0;
- } else {
- /* write only the header */
- data = NULL;
- size = 0;
- }
+ data = buffer_get_data(buf, &size);
+ if (size == 0)
+ return 0;
hdr.type = type;
if (type == MAIL_TRANSACTION_EXPUNGE)
@@ -967,11 +961,22 @@
return -1;
file->hdr.used_size += sizeof(hdr);
- if (size != 0) {
- if (pwrite_full(file->fd, data, size, file->hdr.used_size) < 0)
- return -1;
- file->hdr.used_size += size;
+ if (hdr_buf != NULL) {
+ const void *hdr_data;
+ size_t hdr_size;
+
+ hdr_data = buffer_get_data(buf, &hdr_size);
+ if (hdr_size > 0) {
+ if (pwrite_full(file->fd, hdr_data, hdr_size,
+ file->hdr.used_size) < 0)
+ return -1;
+ file->hdr.used_size += hdr_size;
+ }
}
+
+ if (pwrite_full(file->fd, data, size, file->hdr.used_size) < 0)
+ return -1;
+ file->hdr.used_size += size;
return 0;
}
@@ -1009,12 +1014,15 @@
uint32_t *log_file_seq_r,
uoff_t *log_file_offset_r)
{
+ struct mail_transaction_extra_rec_header extra_rec_hdr;
struct mail_index_view *view = t->view;
struct mail_index *index;
struct mail_transaction_log *log;
struct mail_transaction_log_file *file;
size_t offset;
uoff_t append_offset;
+ buffer_t *hdr_buf;
+ unsigned int i;
int ret;
index = mail_index_view_get_index(view);
@@ -1070,28 +1078,41 @@
ret = 0;
if (t->appends != NULL) {
- ret = log_append_buffer(file, t->appends,
+ ret = log_append_buffer(file, t->appends, NULL,
MAIL_TRANSACTION_APPEND,
view->external);
}
if (t->updates != NULL && ret == 0) {
- ret = log_append_buffer(file, t->updates,
+ ret = log_append_buffer(file, t->updates, NULL,
MAIL_TRANSACTION_FLAG_UPDATE,
view->external);
}
if (t->cache_updates != NULL && ret == 0) {
- ret = log_append_buffer(file, t->cache_updates,
+ ret = log_append_buffer(file, t->cache_updates, NULL,
MAIL_TRANSACTION_CACHE_UPDATE,
view->external);
}
+
+ hdr_buf = buffer_create_data(pool_datastack_create(),
+ &extra_rec_hdr, sizeof(extra_rec_hdr));
+ for (i = 0; i < view->index->extra_records_count; i++) {
+ if (t->extra_rec_updates[i] == NULL || ret != 0)
+ continue;
+
+ extra_rec_hdr.idx = i;
+ ret = log_append_buffer(file, t->extra_rec_updates[i], hdr_buf,
+ MAIL_TRANSACTION_EXTRA_REC_UPDATE,
+ view->external);
+ }
+
if (t->expunges != NULL && ret == 0) {
- ret = log_append_buffer(file, t->expunges,
+ ret = log_append_buffer(file, t->expunges, NULL,
MAIL_TRANSACTION_EXPUNGE,
view->external);
}
if (t->hdr_changed && ret == 0) {
ret = log_append_buffer(file, log_get_hdr_update_buffer(t),
- MAIL_TRANSACTION_HEADER_UPDATE,
+ NULL, MAIL_TRANSACTION_HEADER_UPDATE,
view->external);
}
Index: mail-transaction-log.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-transaction-log.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- mail-transaction-log.h 28 May 2004 01:33:11 -0000 1.11
+++ mail-transaction-log.h 14 Jun 2004 02:07:33 -0000 1.12
@@ -14,22 +14,23 @@
};
enum mail_transaction_type {
- MAIL_TRANSACTION_EXPUNGE = 0x00000001,
- MAIL_TRANSACTION_APPEND = 0x00000002,
- MAIL_TRANSACTION_FLAG_UPDATE = 0x00000004,
- MAIL_TRANSACTION_CACHE_UPDATE = 0x00000008,
- MAIL_TRANSACTION_HEADER_UPDATE = 0x00000010,
+ MAIL_TRANSACTION_EXPUNGE = 0x00000001,
+ MAIL_TRANSACTION_APPEND = 0x00000002,
+ MAIL_TRANSACTION_FLAG_UPDATE = 0x00000004,
+ MAIL_TRANSACTION_CACHE_UPDATE = 0x00000008,
+ MAIL_TRANSACTION_HEADER_UPDATE = 0x00000010,
+ MAIL_TRANSACTION_EXTRA_REC_UPDATE = 0x00000020,
- MAIL_TRANSACTION_TYPE_MASK = 0x0000ffff,
+ MAIL_TRANSACTION_TYPE_MASK = 0x0000ffff,
/* since we'll expunge mails based on data read from transaction log,
try to avoid the possibility of corrupted transaction log expunging
messages. this value is ORed to the actual MAIL_TRANSACTION_EXPUNGE
flag. if it's not present, assume corrupted log. */
- MAIL_TRANSACTION_EXPUNGE_PROT = 0x0000cd90,
+ MAIL_TRANSACTION_EXPUNGE_PROT = 0x0000cd90,
/* Mailbox synchronization noticed this change. */
- MAIL_TRANSACTION_EXTERNAL = 0x10000000
+ MAIL_TRANSACTION_EXTERNAL = 0x10000000
};
struct mail_transaction_header {
@@ -60,6 +61,15 @@
unsigned char data[1]; /* variable size */
};
+struct mail_transaction_extra_rec_header {
+ uint32_t idx;
+};
+
+struct mail_transaction_extra_rec_update {
+ uint32_t uid;
+ unsigned char data[1]; /* variable size */
+};
+
struct mail_transaction_log *
mail_transaction_log_open_or_create(struct mail_index *index);
void mail_transaction_log_close(struct mail_transaction_log *log);
Index: mail-transaction-util.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-transaction-util.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- mail-transaction-util.c 13 Jun 2004 23:38:47 -0000 1.9
+++ mail-transaction-util.c 14 Jun 2004 02:07:33 -0000 1.10
@@ -23,6 +23,7 @@
{ MAIL_TRANSACTION_CACHE_UPDATE, 0,
sizeof(struct mail_transaction_cache_update) },
{ MAIL_TRANSACTION_HEADER_UPDATE, 0, 1 }, /* variable size, use 1 */
+ { MAIL_TRANSACTION_EXTRA_REC_UPDATE, 0, 1 },
{ 0, 0, 0 }
};
@@ -57,6 +58,7 @@
struct mail_transaction_map_functions *map,
void *context)
{
+
int ret = 0;
switch (hdr->type & MAIL_TRANSACTION_TYPE_MASK) {
@@ -136,6 +138,28 @@
}
break;
}
+ case MAIL_TRANSACTION_EXTRA_REC_UPDATE: {
+ const struct mail_transaction_extra_rec_header *ehdr;
+ const struct mail_transaction_extra_rec_update *rec;
+ unsigned int i, record_size;
+
+ if (map->extra_rec_update == NULL)
+ break;
+
+ ehdr = data;
+ i_assert(ehdr->idx < index->extra_records_count);
+ record_size = index->extra_record_sizes[ehdr->idx];
+
+ rec = CONST_PTR_OFFSET(data, sizeof(*hdr));
+ for (i = 0; i < hdr->size; ) {
+ ret = map->extra_rec_update(ehdr, rec, context);
+ if (ret <= 0)
+ break;
+
+ rec = CONST_PTR_OFFSET(rec, record_size);
+ }
+ break;
+ }
default:
i_unreached();
}
Index: mail-transaction-util.h
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-transaction-util.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- mail-transaction-util.h 13 Jun 2004 23:38:47 -0000 1.5
+++ mail-transaction-util.h 14 Jun 2004 02:07:33 -0000 1.6
@@ -17,6 +17,10 @@
void *context);
int (*header_update)(const struct mail_transaction_header_update *u,
void *context);
+ int (*extra_rec_update)
+ (const struct mail_transaction_extra_rec_header *hdr,
+ const struct mail_transaction_extra_rec_update *u,
+ void *context);
};
const struct mail_transaction_type_map *
- Previous message: [dovecot-cvs] dovecot/src/lib-index mail-index-fsck.c, 1.21,
1.22 mail-index-lock.c, 1.19, 1.20 mail-index-private.h, 1.17,
1.18 mail-index-sync-update.c, 1.21, 1.22 mail-index-sync.c,
1.18, 1.19 mail-index-transaction.c, 1.7,
1.8 mail-index-view-sync.c, 1.12, 1.13 mail-index-view.c, 1.10,
1.11 mail-index.c, 1.128, 1.129 mail-index.h, 1.112,
1.113 mail-transaction-log.c, 1.34,
1.35 mail-transaction-util.c, 1.8, 1.9 mail-transaction-util.h,
1.4, 1.5
- Next message: [dovecot-cvs] dovecot/src/lib-index mail-index-lock.c, 1.20,
1.21 mail-index-private.h, 1.19, 1.20 mail-index-sync-update.c,
1.23, 1.24 mail-index-transaction.c, 1.9,
1.10 mail-index-view.c, 1.11, 1.12 mail-index.c, 1.130,
1.131 mail-index.h, 1.114, 1.115 mail-transaction-log.c, 1.36,
1.37 mail-transaction-util.c, 1.10, 1.11
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list