From e0380933e3745214331d358bda8c5e79299c84d2 Mon Sep 17 00:00:00 2001 From: Jim Posen Date: Sun, 6 Jan 2019 10:14:35 -0800 Subject: validation: Refactor file flush logic into FlatFileSeq. --- src/flatfile.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/flatfile.cpp') diff --git a/src/flatfile.cpp b/src/flatfile.cpp index d9fd4041b7..1cdead6bf5 100644 --- a/src/flatfile.cpp +++ b/src/flatfile.cpp @@ -72,3 +72,22 @@ size_t FlatFileSeq::Allocate(const CDiskBlockPos& pos, size_t add_size, bool& ou } return 0; } + +bool FlatFileSeq::Flush(const CDiskBlockPos& pos, bool finalize) +{ + FILE* file = Open(FlatFilePos(pos.nFile, 0)); // Avoid fseek to nPos + if (!file) { + return error("%s: failed to open file %d", __func__, pos.nFile); + } + if (finalize && !TruncateFile(file, pos.nPos)) { + fclose(file); + return error("%s: failed to truncate file %d", __func__, pos.nFile); + } + if (!FileCommit(file)) { + fclose(file); + return error("%s: failed to commit file %d", __func__, pos.nFile); + } + + fclose(file); + return true; +} -- cgit v1.2.3