Mercurial > dovecot > original-hg > dovecot-1.2
changeset 2191:4d25f3fe5de1 HEAD
mail_index_lookup() and mail_index_lookup_extra() now returns 0 if message
has been expunged, 1 if not.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 20 Jun 2004 07:17:42 +0300 |
parents | 755ec9442a58 |
children | d7378b25046b |
files | src/lib-index/mail-index-view.c src/lib-index/mail-index.h |
diffstat | 2 files changed, 18 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-index-view.c Sun Jun 20 06:25:32 2004 +0300 +++ b/src/lib-index/mail-index-view.c Sun Jun 20 07:17:42 2004 +0300 @@ -178,7 +178,7 @@ if (view->map == view->index->map) { *map_r = view->map; *rec_r = rec; - return 0; + return 1; } if (mail_index_view_lock_head(view, FALSE) < 0) @@ -193,7 +193,7 @@ if (seq == 0) { *rec_r = NULL; - return 0; + return 1; } do { @@ -204,8 +204,13 @@ break; } while (seq > 0); - *rec_r = n_rec->uid == uid ? n_rec : rec; - return 0; + if (n_rec->uid == uid) { + *rec_r = n_rec; + return 1; + } else { + *rec_r = rec; + return 0; + } } int mail_index_lookup(struct mail_index_view *view, uint32_t seq, @@ -213,7 +218,7 @@ { struct mail_index_map *map; - return mail_index_lookup_int(view, seq, &map, rec_r); + return mail_index_lookup_int(view, seq, &map, rec_r); } int mail_index_lookup_uid(struct mail_index_view *view, uint32_t seq, @@ -235,20 +240,21 @@ const struct mail_index_record *rec; struct mail_index_map *map; uint32_t offset; + int ret; - if (mail_index_lookup_int(view, seq, &map, &rec) < 0) + if ((ret = mail_index_lookup_int(view, seq, &map, &rec)) < 0) return -1; if (rec == NULL) { *data_r = NULL; - return 0; + return ret; } /* FIXME: do data_id mapping conversion */ offset = view->index->extra_records[data_id].offset; *data_r = CONST_PTR_OFFSET(rec, offset); - return 0; + return ret; } static uint32_t mail_index_bsearch_uid(struct mail_index_view *view,
--- a/src/lib-index/mail-index.h Sun Jun 20 06:25:32 2004 +0300 +++ b/src/lib-index/mail-index.h Sun Jun 20 07:17:42 2004 +0300 @@ -238,15 +238,16 @@ /* Returns the index header. */ int mail_index_get_header(struct mail_index_view *view, const struct mail_index_header **hdr_r); -/* Returns the given message. */ +/* Returns the given message. Returns -1 if error, 1 if ok, 0 if mail was + expunged but data was returned from some older index. */ int mail_index_lookup(struct mail_index_view *view, uint32_t seq, const struct mail_index_record **rec_r); /* Returns the UID for given message. May be slightly faster than - mail_index_lookup()->uid */ + mail_index_lookup()->uid. */ int mail_index_lookup_uid(struct mail_index_view *view, uint32_t seq, uint32_t *uid_r); /* Returns the wanted extra data for given message. If it doesn't exist, - *data_r is set to NULL. */ + *data_r is set to NULL. Return values are same as for mail_index_lookup(). */ int mail_index_lookup_extra(struct mail_index_view *view, uint32_t seq, uint32_t data_id, const void **data_r); /* Convert UID range to sequence range. If no UIDs are found, sequences are