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