dovecot-2.0: Moved mail_index_seq_array_*() to mail-index-util.c...
dovecot at dovecot.org
dovecot at dovecot.org
Mon Jul 13 20:20:28 EEST 2009
details: http://hg.dovecot.org/dovecot-2.0/rev/2cab7f501986
changeset: 9612:2cab7f501986
user: Timo Sirainen <tss at iki.fi>
date: Mon Jul 13 13:13:03 2009 -0400
description:
Moved mail_index_seq_array_*() to mail-index-util.c and added its own .h file.
diffstat:
6 files changed, 79 insertions(+), 71 deletions(-)
src/lib-index/Makefile.am | 1
src/lib-index/mail-index-private.h | 11 ----
src/lib-index/mail-index-transaction-private.h | 6 --
src/lib-index/mail-index-transaction.c | 55 -----------------------
src/lib-index/mail-index-util.c | 57 ++++++++++++++++++++++++
src/lib-index/mail-index-util.h | 20 ++++++++
diffs (220 lines):
diff -r 546adc9dd14b -r 2cab7f501986 src/lib-index/Makefile.am
--- a/src/lib-index/Makefile.am Mon Jul 13 13:04:24 2009 -0400
+++ b/src/lib-index/Makefile.am Mon Jul 13 13:13:03 2009 -0400
@@ -51,6 +51,7 @@ headers = \
mail-index-strmap.h \
mail-index-sync-private.h \
mail-index-transaction-private.h \
+ mail-index-util.h \
mail-index-view-private.h \
mail-transaction-log.h \
mail-transaction-log-private.h \
diff -r 546adc9dd14b -r 2cab7f501986 src/lib-index/mail-index-private.h
--- a/src/lib-index/mail-index-private.h Mon Jul 13 13:04:24 2009 -0400
+++ b/src/lib-index/mail-index-private.h Mon Jul 13 13:13:03 2009 -0400
@@ -3,6 +3,7 @@
#include "file-lock.h"
#include "mail-index.h"
+#include "mail-index-util.h"
#include "mail-index-view-private.h"
#include "mail-index-transaction-private.h"
@@ -50,8 +51,6 @@ typedef int mail_index_sync_handler_t(st
uint32_t seq, void *old_data,
const void *new_data, void **context);
typedef void mail_index_sync_lost_handler_t(struct mail_index *index);
-
-ARRAY_DEFINE_TYPE(seq_array, uint32_t);
#define MAIL_INDEX_HEADER_SIZE_ALIGN(size) \
(((size) + 7) & ~7)
@@ -353,12 +352,4 @@ int mail_index_file_set_syscall_error(st
const char *filepath,
const char *function);
-uint32_t mail_index_uint32_to_offset(uint32_t offset);
-uint32_t mail_index_offset_to_uint32(uint32_t offset);
-
-#define MAIL_INDEX_PACK_MAX_SIZE ((sizeof(uint32_t) * 8 + 7) / 7)
-void mail_index_pack_num(uint8_t **p, uint32_t num);
-int mail_index_unpack_num(const uint8_t **p, const uint8_t *end,
- uint32_t *num_r);
-
#endif
diff -r 546adc9dd14b -r 2cab7f501986 src/lib-index/mail-index-transaction-private.h
--- a/src/lib-index/mail-index-transaction-private.h Mon Jul 13 13:04:24 2009 -0400
+++ b/src/lib-index/mail-index-transaction-private.h Mon Jul 13 13:13:03 2009 -0400
@@ -111,12 +111,6 @@ mail_index_transaction_get_flag_update_p
unsigned int right_idx,
uint32_t seq);
-bool mail_index_seq_array_lookup(const ARRAY_TYPE(seq_array) *array,
- uint32_t seq, unsigned int *idx_r);
-bool mail_index_seq_array_add(ARRAY_TYPE(seq_array) *array, uint32_t seq,
- const void *record, size_t record_size,
- void *old_record);
-
int mail_index_transaction_finish(struct mail_index_transaction *t);
void mail_index_transaction_export(struct mail_index_transaction *t,
struct mail_transaction_log_append_ctx *append_ctx);
diff -r 546adc9dd14b -r 2cab7f501986 src/lib-index/mail-index-transaction.c
--- a/src/lib-index/mail-index-transaction.c Mon Jul 13 13:04:24 2009 -0400
+++ b/src/lib-index/mail-index-transaction.c Mon Jul 13 13:13:03 2009 -0400
@@ -141,61 +141,6 @@ void mail_index_transaction_unref(struct
*_t = NULL;
if (--t->refcount == 0)
mail_index_transaction_free(t);
-}
-
-static int mail_index_seq_record_cmp(const void *key, const void *data)
-{
- const uint32_t *seq_p = key;
- const uint32_t *data_seq = data;
-
- return *seq_p - *data_seq;
-}
-
-bool mail_index_seq_array_lookup(const ARRAY_TYPE(seq_array) *array,
- uint32_t seq, unsigned int *idx_r)
-{
- const void *base;
- unsigned int count;
-
- base = array_get(array, &count);
- return bsearch_insert_pos(&seq, base, count, array->arr.element_size,
- mail_index_seq_record_cmp, idx_r);
-}
-
-bool mail_index_seq_array_add(ARRAY_TYPE(seq_array) *array, uint32_t seq,
- const void *record, size_t record_size,
- void *old_record)
-{
- void *p;
- unsigned int idx, aligned_record_size;
-
- /* records need to be 32bit aligned */
- aligned_record_size = (record_size + 3) & ~3;
-
- if (!array_is_created(array)) {
- array_create(array, default_pool,
- sizeof(seq) + aligned_record_size,
- 1024 / (sizeof(seq) + aligned_record_size));
- }
- i_assert(array->arr.element_size == sizeof(seq) + aligned_record_size);
-
- if (mail_index_seq_array_lookup(array, seq, &idx)) {
- /* already there, update */
- p = array_idx_modifiable(array, idx);
- if (old_record != NULL) {
- /* save the old record before overwriting it */
- memcpy(old_record, PTR_OFFSET(p, sizeof(seq)),
- record_size);
- }
- memcpy(PTR_OFFSET(p, sizeof(seq)), record, record_size);
- return TRUE;
- } else {
- /* insert */
- p = array_insert_space(array, idx);
- memcpy(p, &seq, sizeof(seq));
- memcpy(PTR_OFFSET(p, sizeof(seq)), record, record_size);
- return FALSE;
- }
}
uint32_t mail_index_transaction_get_next_uid(struct mail_index_transaction *t)
diff -r 546adc9dd14b -r 2cab7f501986 src/lib-index/mail-index-util.c
--- a/src/lib-index/mail-index-util.c Mon Jul 13 13:04:24 2009 -0400
+++ b/src/lib-index/mail-index-util.c Mon Jul 13 13:13:03 2009 -0400
@@ -1,6 +1,8 @@
/* Copyright (c) 2003-2009 Dovecot authors, see the included COPYING file */
#include "lib.h"
+#include "array.h"
+#include "bsearch-insert-pos.h"
#include "mail-index-private.h"
#if WORDS_BIGENDIAN
@@ -100,3 +102,58 @@ int mail_index_unpack_num(const uint8_t
*num_r = value;
return 0;
}
+
+static int mail_index_seq_record_cmp(const void *key, const void *data)
+{
+ const uint32_t *seq_p = key;
+ const uint32_t *data_seq = data;
+
+ return *seq_p - *data_seq;
+}
+
+bool mail_index_seq_array_lookup(const ARRAY_TYPE(seq_array) *array,
+ uint32_t seq, unsigned int *idx_r)
+{
+ const void *base;
+ unsigned int count;
+
+ base = array_get(array, &count);
+ return bsearch_insert_pos(&seq, base, count, array->arr.element_size,
+ mail_index_seq_record_cmp, idx_r);
+}
+
+bool mail_index_seq_array_add(ARRAY_TYPE(seq_array) *array, uint32_t seq,
+ const void *record, size_t record_size,
+ void *old_record)
+{
+ void *p;
+ unsigned int idx, aligned_record_size;
+
+ /* records need to be 32bit aligned */
+ aligned_record_size = (record_size + 3) & ~3;
+
+ if (!array_is_created(array)) {
+ array_create(array, default_pool,
+ sizeof(seq) + aligned_record_size,
+ 1024 / (sizeof(seq) + aligned_record_size));
+ }
+ i_assert(array->arr.element_size == sizeof(seq) + aligned_record_size);
+
+ if (mail_index_seq_array_lookup(array, seq, &idx)) {
+ /* already there, update */
+ p = array_idx_modifiable(array, idx);
+ if (old_record != NULL) {
+ /* save the old record before overwriting it */
+ memcpy(old_record, PTR_OFFSET(p, sizeof(seq)),
+ record_size);
+ }
+ memcpy(PTR_OFFSET(p, sizeof(seq)), record, record_size);
+ return TRUE;
+ } else {
+ /* insert */
+ p = array_insert_space(array, idx);
+ memcpy(p, &seq, sizeof(seq));
+ memcpy(PTR_OFFSET(p, sizeof(seq)), record, record_size);
+ return FALSE;
+ }
+}
diff -r 546adc9dd14b -r 2cab7f501986 src/lib-index/mail-index-util.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lib-index/mail-index-util.h Mon Jul 13 13:13:03 2009 -0400
@@ -0,0 +1,20 @@
+#ifndef MAIL_INDEX_UTIL_H
+#define MAIL_INDEX_UTIL_H
+
+ARRAY_DEFINE_TYPE(seq_array, uint32_t);
+
+uint32_t mail_index_uint32_to_offset(uint32_t offset);
+uint32_t mail_index_offset_to_uint32(uint32_t offset);
+
+#define MAIL_INDEX_PACK_MAX_SIZE ((sizeof(uint32_t) * 8 + 7) / 7)
+void mail_index_pack_num(uint8_t **p, uint32_t num);
+int mail_index_unpack_num(const uint8_t **p, const uint8_t *end,
+ uint32_t *num_r);
+
+bool mail_index_seq_array_lookup(const ARRAY_TYPE(seq_array) *array,
+ uint32_t seq, unsigned int *idx_r);
+bool mail_index_seq_array_add(ARRAY_TYPE(seq_array) *array, uint32_t seq,
+ const void *record, size_t record_size,
+ void *old_record);
+
+#endif
More information about the dovecot-cvs
mailing list