Mercurial > dovecot > original-hg > dovecot-1.2
diff src/lib-storage/index/dbox/dbox-file.c @ 6940:414c9d631a81 HEAD
Replaced t_push/t_pop calls with T_FRAME*() macros.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 05 Dec 2007 17:47:44 +0200 |
parents | 47c746a769ba |
children | f2c37fe48668 |
line wrap: on
line diff
--- a/src/lib-storage/index/dbox/dbox-file.c Wed Dec 05 17:47:19 2007 +0200 +++ b/src/lib-storage/index/dbox/dbox-file.c Wed Dec 05 17:47:44 2007 +0200 @@ -328,7 +328,6 @@ file->append_offset = 0; file->msg_header_size = 0; - t_push(); for (tmp = t_strsplit(line, " "); *tmp != NULL; tmp++) { key = **tmp; value = *tmp + 1; @@ -348,7 +347,6 @@ } pos += strlen(value) + 2; } - t_pop(); if (file->msg_header_size == 0) { dbox_file_set_corrupted(file, "Missing message header size"); @@ -363,6 +361,7 @@ static int dbox_file_read_header(struct dbox_file *file) { const char *line; + int ret; i_stream_seek(file->input, 0); line = i_stream_read_next_line(file->input); @@ -374,7 +373,10 @@ return -1; } file->file_header_size = file->input->v_offset; - return dbox_file_parse_header(file, line) < 0 ? 0 : 1; + T_FRAME( + ret = dbox_file_parse_header(file, line) < 0 ? 0 : 1; + ); + return ret; } static int dbox_file_open_fd(struct dbox_file *file) @@ -989,7 +991,7 @@ return ret; } -int dbox_file_metadata_write(struct dbox_file *file) +static int dbox_file_metadata_write_real(struct dbox_file *file) { const char *const *metadata, *const *changes; unsigned int i, j, count, changes_count, space_needed, skip_pos; @@ -1022,7 +1024,6 @@ skip_pos += strlen(metadata[i]) + 1; } - t_push(); str = t_str_new(512); last_change_len = orig_len = 0; /* overwrite existing metadata fields */ @@ -1058,10 +1059,8 @@ str_truncate(str, last_change_len); if (skip_pos + str_len(str) >= file->metadata_len) { if ((ret = dbox_file_grow_metadata(file, skip_pos + - str_len(str))) <= 0) { - t_pop(); + str_len(str))) <= 0) return ret; - } } memset(space, DBOX_METADATA_SPACE, sizeof(space)); @@ -1074,10 +1073,21 @@ ret = pwrite_full(file->fd, str_data(str), str_len(str), offset + skip_pos); - if (ret < 0) + if (ret < 0) { dbox_file_set_syscall_error(file, "pwrite"); - t_pop(); - return ret < 0 ? -1 : 1; + return -1; + } + return 1; +} + +int dbox_file_metadata_write(struct dbox_file *file) +{ + int ret; + + T_FRAME( + ret = dbox_file_metadata_write_real(file); + ); + return ret; } int dbox_file_metadata_write_to(struct dbox_file *file, struct ostream *output)