Mercurial > dovecot > core-2.2
changeset 18935:2f1378beeef6
lib-fs: Small code cleanup for handling write_stream_finish()
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 16 Aug 2015 13:10:48 +0200 |
parents | 295fd771e02d |
children | e8e838cb9663 |
files | src/lib-fs/fs-api.c |
diffstat | 1 files changed, 20 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-fs/fs-api.c Sun Aug 16 13:07:21 2015 +0200 +++ b/src/lib-fs/fs-api.c Sun Aug 16 13:10:48 2015 +0200 @@ -555,9 +555,25 @@ return file->output; } +static int fs_write_stream_finish_int(struct fs_file *file, bool success) +{ + int ret; + + T_BEGIN { + ret = file->fs->v.write_stream_finish(file, success); + } T_END; + if (ret == 0) { + file->metadata_changed = FALSE; + } else { + /* write didn't finish yet. this shouldn't happen if we + indicated a failure. */ + i_assert(success); + } + return ret; +} + int fs_write_stream_finish(struct fs_file *file, struct ostream **output) { - int ret; bool success = TRUE; i_assert(*output == file->output || *output == NULL); @@ -573,24 +589,12 @@ success = FALSE; } } - T_BEGIN { - ret = file->fs->v.write_stream_finish(file, success); - } T_END; - if (ret != 0) - file->metadata_changed = FALSE; - return ret; + return fs_write_stream_finish_int(file, success); } int fs_write_stream_finish_async(struct fs_file *file) { - int ret; - - T_BEGIN { - ret = file->fs->v.write_stream_finish(file, TRUE); - } T_END; - if (ret != 0) - file->metadata_changed = FALSE; - return ret; + return fs_write_stream_finish_int(file, TRUE); } void fs_write_stream_abort(struct fs_file *file, struct ostream **output) @@ -600,10 +604,7 @@ *output = NULL; if (file->output != NULL) o_stream_ignore_last_errors(file->output); - T_BEGIN { - (void)file->fs->v.write_stream_finish(file, FALSE); - } T_END; - file->metadata_changed = FALSE; + (void)fs_write_stream_finish_int(file, FALSE); } void fs_write_set_hash(struct fs_file *file, const struct hash_method *method,