diff --git a/src/main.cpp b/src/main.cpp index bde9d660..87f5256f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1146,6 +1146,32 @@ CBlockIndex* FindBlockByHeight(int nHeight) return vBlockIndexByHeight[nHeight]; } +bool WriteBlockToDisk(CBlock& block, CDiskBlockPos& pos) +{ + // Open history file to append + CAutoFile fileout = CAutoFile(OpenBlockFile(pos), SER_DISK, CLIENT_VERSION); + if (!fileout) + return error("WriteBlockToDisk() : OpenBlockFile failed"); + + // Write index header + unsigned int nSize = fileout.GetSerializeSize(block); + fileout << FLATDATA(Params().MessageStart()) << nSize; + + // Write block + long fileOutPos = ftell(fileout); + if (fileOutPos < 0) + return error("WriteBlockToDisk() : ftell failed"); + pos.nPos = (unsigned int)fileOutPos; + fileout << block; + + // Flush stdio buffers and commit to disk before returning + fflush(fileout); + if (!IsInitialBlockDownload()) + FileCommit(fileout); + + return true; +} + bool CBlock::ReadFromDisk(const CBlockIndex* pindex) { if (!ReadFromDisk(pindex->GetBlockPos())) diff --git a/src/main.h b/src/main.h index bda775e8..a613613e 100644 --- a/src/main.h +++ b/src/main.h @@ -755,31 +755,7 @@ public: /** Functions for disk access for blocks */ -inline bool WriteBlockToDisk(CBlock& block, CDiskBlockPos& pos) -{ - // Open history file to append - CAutoFile fileout = CAutoFile(OpenBlockFile(pos), SER_DISK, CLIENT_VERSION); - if (!fileout) - return error("WriteBlockToDisk() : OpenBlockFile failed"); - - // Write index header - unsigned int nSize = fileout.GetSerializeSize(block); - fileout << FLATDATA(Params().MessageStart()) << nSize; - - // Write block - long fileOutPos = ftell(fileout); - if (fileOutPos < 0) - return error("WriteBlockToDisk() : ftell failed"); - pos.nPos = (unsigned int)fileOutPos; - fileout << block; - - // Flush stdio buffers and commit to disk before returning - fflush(fileout); - if (!IsInitialBlockDownload()) - FileCommit(fileout); - - return true; -} +bool WriteBlockToDisk(CBlock& block, CDiskBlockPos& pos);