# HG changeset patch # User Timo Sirainen # Date 1439723448 -7200 # Node ID 2f1378beeef6becafd72e3f768e7ae88247b2ce9 # Parent 295fd771e02dbe9400b61aa2e9888a3072c7b294 lib-fs: Small code cleanup for handling write_stream_finish() diff -r 295fd771e02d -r 2f1378beeef6 src/lib-fs/fs-api.c --- 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,