dovecot-2.0: buffer_create_[const_]data() API change: Take buffe...

dovecot at dovecot.org dovecot at dovecot.org
Tue Jul 14 05:24:33 EEST 2009


details:   http://hg.dovecot.org/dovecot-2.0/rev/3da42dafa798
changeset: 9623:3da42dafa798
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Jul 13 21:11:05 2009 -0400
description:
buffer_create_[const_]data() API change: Take buffer_t as parameter instead of allocating it.

diffstat:

12 files changed, 76 insertions(+), 89 deletions(-)
src/lib-index/mail-index-map.c                |    2 -
src/lib-index/mail-index-modseq.c             |   20 +++++------
src/lib-index/mail-index-transaction-export.c |    9 ++---
src/lib-index/mail-transaction-log-file.c     |    6 +--
src/lib-index/mail-transaction-log-private.h  |    2 +
src/lib-index/mail-transaction-log-view.c     |   28 +++++++---------
src/lib-otp/otp-parse.c                       |   12 +++---
src/lib-storage/index/index-mail.c            |   21 ++++--------
src/lib-storage/index/maildir/maildir-save.c  |    8 ++--
src/lib/buffer.c                              |   43 +++++++++++--------------
src/lib/buffer.h                              |   10 +----
src/lib/str.c                                 |    4 +-

diffs (truncated from 417 to 300 lines):

diff -r cae78e734cdb -r 3da42dafa798 src/lib-index/mail-index-map.c
--- a/src/lib-index/mail-index-map.c	Mon Jul 13 19:54:28 2009 -0400
+++ b/src/lib-index/mail-index-map.c	Mon Jul 13 21:11:05 2009 -0400
@@ -12,7 +12,7 @@ void mail_index_map_init_extbufs(struct 
 {
 #define EXTENSION_NAME_APPROX_LEN 20
 #define EXT_GLOBAL_ALLOC_SIZE \
-	((sizeof(map->extensions) + BUFFER_APPROX_SIZE) * 2)
+	((sizeof(map->extensions) + sizeof(buffer_t)) * 2)
 #define EXT_PER_ALLOC_SIZE \
 	(EXTENSION_NAME_APPROX_LEN + \
 	 sizeof(struct mail_index_ext) + sizeof(uint32_t))
diff -r cae78e734cdb -r 3da42dafa798 src/lib-index/mail-index-modseq.c
--- a/src/lib-index/mail-index-modseq.c	Mon Jul 13 19:54:28 2009 -0400
+++ b/src/lib-index/mail-index-modseq.c	Mon Jul 13 21:11:05 2009 -0400
@@ -300,7 +300,7 @@ mail_index_modseq_update_old_rec(struct 
 {
 	ARRAY_TYPE(seq_range) uids = ARRAY_INIT;
 	const struct seq_range *rec;
-	buffer_t *uid_buf;
+	buffer_t uid_buf;
 	unsigned int i, count;
 	uint32_t seq1, seq2;
 
@@ -319,9 +319,8 @@ mail_index_modseq_update_old_rec(struct 
 		return;
 	}
 	case MAIL_TRANSACTION_FLAG_UPDATE: {
-		uid_buf = buffer_create_const_data(pool_datastack_create(),
-						   tdata, thdr->size);
-		array_create_from_buffer(&uids, uid_buf,
+		buffer_create_const_data(&uid_buf, tdata, thdr->size);
+		array_create_from_buffer(&uids, &uid_buf,
 			sizeof(struct mail_transaction_flag_update));
 		break;
 	}
@@ -333,16 +332,15 @@ mail_index_modseq_update_old_rec(struct 
 		if ((seqset_offset % 4) != 0)
 			seqset_offset += 4 - (seqset_offset % 4);
 
-		uid_buf = buffer_create_const_data(pool_datastack_create(),
-					CONST_PTR_OFFSET(tdata, seqset_offset),
-					thdr->size - seqset_offset);
-		array_create_from_buffer(&uids, uid_buf, sizeof(uint32_t)*2);
+		buffer_create_const_data(&uid_buf,
+					 CONST_PTR_OFFSET(tdata, seqset_offset),
+					 thdr->size - seqset_offset);
+		array_create_from_buffer(&uids, &uid_buf, sizeof(uint32_t)*2);
 		break;
 	}
 	case MAIL_TRANSACTION_KEYWORD_RESET:
-		uid_buf = buffer_create_const_data(pool_datastack_create(),
-						   tdata, thdr->size);
-		array_create_from_buffer(&uids, uid_buf,
+		buffer_create_const_data(&uid_buf, tdata, thdr->size);
+		array_create_from_buffer(&uids, &uid_buf,
 			sizeof(struct mail_transaction_keyword_reset));
 		break;
 	default:
diff -r cae78e734cdb -r 3da42dafa798 src/lib-index/mail-index-transaction-export.c
--- a/src/lib-index/mail-index-transaction-export.c	Mon Jul 13 19:54:28 2009 -0400
+++ b/src/lib-index/mail-index-transaction-export.c	Mon Jul 13 21:11:05 2009 -0400
@@ -171,7 +171,7 @@ mail_transaction_log_append_ext_intros(s
 	uint32_t ext_id, reset_id;
 	const struct mail_transaction_ext_reset *reset;
 	const uint32_t *reset_ids;
-	buffer_t *reset_buf;
+	buffer_t reset_buf;
 
 	if (!array_is_created(&t->ext_resizes)) {
 		resize = NULL;
@@ -208,9 +208,8 @@ mail_transaction_log_append_ext_intros(s
 	}
 
 	memset(&ext_reset, 0, sizeof(ext_reset));
-	reset_buf = buffer_create_data(pool_datastack_create(),
-				       &ext_reset, sizeof(ext_reset));
-	buffer_set_used_size(reset_buf, sizeof(ext_reset));
+	buffer_create_data(&reset_buf, &ext_reset, sizeof(ext_reset));
+	buffer_set_used_size(&reset_buf, sizeof(ext_reset));
 
 	for (ext_id = 0; ext_id < ext_count; ext_id++) {
 		if (ext_id < reset_count)
@@ -233,7 +232,7 @@ mail_transaction_log_append_ext_intros(s
 		if (ext_reset.new_reset_id != 0) {
 			i_assert(ext_id < reset_id_count &&
 				 ext_reset.new_reset_id == reset_ids[ext_id]);
-			log_append_buffer(ctx, reset_buf,
+			log_append_buffer(ctx, &reset_buf,
 					  MAIL_TRANSACTION_EXT_RESET);
 		}
 		if (ext_id < hdrs_count && hdrs[ext_id].alloc_size > 0) {
diff -r cae78e734cdb -r 3da42dafa798 src/lib-index/mail-transaction-log-file.c
--- a/src/lib-index/mail-transaction-log-file.c	Mon Jul 13 19:54:28 2009 -0400
+++ b/src/lib-index/mail-transaction-log-file.c	Mon Jul 13 21:11:05 2009 -0400
@@ -1390,9 +1390,9 @@ mail_transaction_log_file_mmap(struct ma
 		}
 	}
 
-	file->buffer = buffer_create_const_data(default_pool,
-						file->mmap_base,
-						file->mmap_size);
+	buffer_create_const_data(&file->mmap_buffer,
+				 file->mmap_base, file->mmap_size);
+	file->buffer = &file->mmap_buffer;
 	file->buffer_offset = 0;
 	return 0;
 }
diff -r cae78e734cdb -r 3da42dafa798 src/lib-index/mail-transaction-log-private.h
--- a/src/lib-index/mail-transaction-log-private.h	Mon Jul 13 19:54:28 2009 -0400
+++ b/src/lib-index/mail-transaction-log-private.h	Mon Jul 13 21:11:05 2009 -0400
@@ -1,6 +1,7 @@
 #ifndef MAIL_TRANSACTION_LOG_VIEW_H
 #define MAIL_TRANSACTION_LOG_VIEW_H
 
+#include "buffer.h"
 #include "file-dotlock.h"
 #include "mail-transaction-log.h"
 
@@ -44,6 +45,7 @@ struct mail_transaction_log_file {
 	uoff_t last_size;
 
 	struct mail_transaction_log_header hdr;
+	buffer_t mmap_buffer;
 	buffer_t *buffer;
 	uoff_t buffer_offset;
 	void *mmap_base;
diff -r cae78e734cdb -r 3da42dafa798 src/lib-index/mail-transaction-log-view.c
--- a/src/lib-index/mail-transaction-log-view.c	Mon Jul 13 19:54:28 2009 -0400
+++ b/src/lib-index/mail-transaction-log-view.c	Mon Jul 13 21:11:05 2009 -0400
@@ -400,7 +400,7 @@ log_view_is_record_valid(struct mail_tra
 {
 	enum mail_transaction_type rec_type;
 	ARRAY_TYPE(seq_range) uids = ARRAY_INIT;
-	buffer_t *uid_buf = NULL;
+	buffer_t uid_buf;
 	uint32_t rec_size;
 	bool ret = TRUE;
 
@@ -437,15 +437,13 @@ log_view_is_record_valid(struct mail_tra
 		}
 		break;
 	case MAIL_TRANSACTION_EXPUNGE:
-		uid_buf = buffer_create_const_data(pool_datastack_create(),
-						   data, rec_size);
-		array_create_from_buffer(&uids, uid_buf,
+		buffer_create_const_data(&uid_buf, data, rec_size);
+		array_create_from_buffer(&uids, &uid_buf,
 			sizeof(struct mail_transaction_expunge));
 		break;
 	case MAIL_TRANSACTION_FLAG_UPDATE:
-		uid_buf = buffer_create_const_data(pool_datastack_create(),
-						   data, rec_size);
-		array_create_from_buffer(&uids, uid_buf,
+		buffer_create_const_data(&uid_buf, data, rec_size);
+		array_create_from_buffer(&uids, &uid_buf,
 			sizeof(struct mail_transaction_flag_update));
 		break;
 	case MAIL_TRANSACTION_KEYWORD_UPDATE: {
@@ -463,16 +461,16 @@ log_view_is_record_valid(struct mail_tra
 			break;
 		}
 
-		uid_buf = buffer_create_const_data(pool_datastack_create(),
-					CONST_PTR_OFFSET(data, seqset_offset),
-					rec_size - seqset_offset);
-		array_create_from_buffer(&uids, uid_buf, sizeof(uint32_t)*2);
+		buffer_create_const_data(&uid_buf,
+					 CONST_PTR_OFFSET(data, seqset_offset),
+					 rec_size - seqset_offset);
+		array_create_from_buffer(&uids, &uid_buf,
+					 sizeof(uint32_t)*2);
 		break;
 	}
 	case MAIL_TRANSACTION_KEYWORD_RESET:
-		uid_buf = buffer_create_const_data(pool_datastack_create(),
-						   data, rec_size);
-		array_create_from_buffer(&uids, uid_buf,
+		buffer_create_const_data(&uid_buf, data, rec_size);
+		array_create_from_buffer(&uids, &uid_buf,
 			sizeof(struct mail_transaction_keyword_reset));
 		break;
 	default:
@@ -483,7 +481,7 @@ log_view_is_record_valid(struct mail_tra
 		const struct seq_range *rec, *prev = NULL;
 		unsigned int i, count = array_count(&uids);
 
-		if ((uid_buf->used % uids.arr.element_size) != 0) {
+		if ((uid_buf.used % uids.arr.element_size) != 0) {
 			mail_transaction_log_file_set_corrupted(file,
 				"Invalid record size (type=0x%x)", rec_type);
 			ret = FALSE;
diff -r cae78e734cdb -r 3da42dafa798 src/lib-otp/otp-parse.c
--- a/src/lib-otp/otp-parse.c	Mon Jul 13 19:54:28 2009 -0400
+++ b/src/lib-otp/otp-parse.c	Mon Jul 13 21:11:05 2009 -0400
@@ -36,14 +36,14 @@ int otp_read_hex(const char *data, const
 int otp_read_hex(const char *data, const char **endptr, unsigned char *hash)
 {
 	string_t *str;
-	buffer_t *buf;
+	buffer_t buf;
 	unsigned int i = 0;
 
 	if (data == NULL)
 		return -1;
 
 	str = t_str_new(18);
-	buf = buffer_create_data(unsafe_data_stack_pool, hash, OTP_HASH_SIZE);
+	buffer_create_data(&buf, hash, OTP_HASH_SIZE);
 
 	while (*data) {
 		char c = *data;
@@ -68,12 +68,12 @@ int otp_read_hex(const char *data, const
 	if (i < OTP_HASH_SIZE * 2)
 		return -1;
 
-	return hex_to_binary(str_c(str), buf);
+	return hex_to_binary(str_c(str), &buf);
 }
 
 #define add_word() do { \
 	tmp = otp_lookup_word(str_c(word)); \
-	buffer_append(buf, &tmp, sizeof(tmp)); \
+	buffer_append(&buf, &tmp, sizeof(tmp)); \
 	count++; \
 } while (0)
 
@@ -83,7 +83,7 @@ int otp_read_words(const char *data, con
 	unsigned int len = 0, count = 0;
 	unsigned int parity = 0, bits[OTP_WORDS_NUMBER], tmp;
 	string_t *word;
-	buffer_t *buf;
+	buffer_t buf;
 
 	if (data == NULL)
 		return -1;
@@ -92,7 +92,7 @@ int otp_read_words(const char *data, con
 
 	data = otp_skip_lws(data);
 
-	buf = buffer_create_data(pool_datastack_create(), bits, sizeof(bits));
+	buffer_create_data(&buf, bits, sizeof(bits));
 
 	for (; *data && (count < OTP_WORDS_NUMBER); data++) {
 		char c = *data;
diff -r cae78e734cdb -r 3da42dafa798 src/lib-storage/index/index-mail.c
--- a/src/lib-storage/index/index-mail.c	Mon Jul 13 19:54:28 2009 -0400
+++ b/src/lib-storage/index/index-mail.c	Mon Jul 13 21:11:05 2009 -0400
@@ -104,21 +104,16 @@ static bool index_mail_get_fixed_field(s
 				       void *data, size_t data_size)
 {
 	unsigned int field_idx = mail->ibox->cache_fields[field].idx;
+	buffer_t buf;
 	int ret;
 
-	T_BEGIN {
-		buffer_t *buf;
-
-		buf = buffer_create_data(pool_datastack_create(),
-					 data, data_size);
-
-		if (index_mail_cache_lookup_field(mail, buf, field_idx) <= 0)
-			ret = FALSE;
-		else {
-			i_assert(buf->used == data_size);
-			ret = TRUE;
-		}
-	} T_END;
+	buffer_create_data(&buf, data, data_size);
+	if (index_mail_cache_lookup_field(mail, &buf, field_idx) <= 0)
+		ret = FALSE;
+	else {
+		i_assert(buf.used == data_size);
+		ret = TRUE;
+	}
 	return ret;
 }
 
diff -r cae78e734cdb -r 3da42dafa798 src/lib-storage/index/maildir/maildir-save.c
--- a/src/lib-storage/index/maildir/maildir-save.c	Mon Jul 13 19:54:28 2009 -0400
+++ b/src/lib-storage/index/maildir/maildir-save.c	Mon Jul 13 21:11:05 2009 -0400
@@ -51,7 +51,7 @@ struct maildir_save_context {
 	struct maildir_filename *files, **files_tail, *file_last;
 	unsigned int files_count;
 
-	buffer_t *keywords_buffer;
+	buffer_t keywords_buffer;
 	ARRAY_TYPE(keyword_indexes) keywords_array;
 
 	struct istream *input;
@@ -124,8 +124,8 @@ maildir_save_transaction_init(struct mai
 	ctx->newdir = p_strconcat(pool, mbox->ibox.box.path, "/new", NULL);
 	ctx->curdir = p_strconcat(pool, mbox->ibox.box.path, "/cur", NULL);
 
-	ctx->keywords_buffer = buffer_create_const_data(pool, NULL, 0);
-	array_create_from_buffer(&ctx->keywords_array, ctx->keywords_buffer,
+	buffer_create_const_data(&ctx->keywords_buffer, NULL, 0);
+	array_create_from_buffer(&ctx->keywords_array, &ctx->keywords_buffer,
 				 sizeof(unsigned int));
 	ctx->last_save_finished = TRUE;


More information about the dovecot-cvs mailing list