Add new utility functions FileCommit(), RenameOver()
This commit is contained in:
parent
49232d1abf
commit
768e5d52fb
3 changed files with 24 additions and 7 deletions
|
@ -956,13 +956,7 @@ public:
|
||||||
// Flush stdio buffers and commit to disk before returning
|
// Flush stdio buffers and commit to disk before returning
|
||||||
fflush(fileout);
|
fflush(fileout);
|
||||||
if (!IsInitialBlockDownload() || (nBestHeight+1) % 500 == 0)
|
if (!IsInitialBlockDownload() || (nBestHeight+1) % 500 == 0)
|
||||||
{
|
FileCommit(fileout);
|
||||||
#ifdef WIN32
|
|
||||||
_commit(_fileno(fileout));
|
|
||||||
#else
|
|
||||||
fsync(fileno(fileout));
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
21
src/util.cpp
21
src/util.cpp
|
@ -910,6 +910,27 @@ void CreatePidFile(const boost::filesystem::path &path, pid_t pid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RenameOver(boost::filesystem::path src, boost::filesystem::path dest)
|
||||||
|
{
|
||||||
|
#ifdef WIN32
|
||||||
|
return MoveFileEx(src.string().c_str(), dest.string().c_str(),
|
||||||
|
MOVEFILE_REPLACE_EXISTING);
|
||||||
|
#else
|
||||||
|
int rc = std::rename(src.string().c_str(), dest.string().c_str());
|
||||||
|
return (rc == 0);
|
||||||
|
#endif /* WIN32 */
|
||||||
|
}
|
||||||
|
|
||||||
|
void FileCommit(FILE *fileout)
|
||||||
|
{
|
||||||
|
fflush(fileout); // harmless if redundantly called
|
||||||
|
#ifdef WIN32
|
||||||
|
_commit(_fileno(fileout));
|
||||||
|
#else
|
||||||
|
fsync(fileno(fileout));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
int GetFilesize(FILE* file)
|
int GetFilesize(FILE* file)
|
||||||
{
|
{
|
||||||
int nSavePos = ftell(file);
|
int nSavePos = ftell(file);
|
||||||
|
|
|
@ -152,7 +152,9 @@ std::string EncodeBase64(const std::string& str);
|
||||||
void ParseParameters(int argc, const char*const argv[]);
|
void ParseParameters(int argc, const char*const argv[]);
|
||||||
bool WildcardMatch(const char* psz, const char* mask);
|
bool WildcardMatch(const char* psz, const char* mask);
|
||||||
bool WildcardMatch(const std::string& str, const std::string& mask);
|
bool WildcardMatch(const std::string& str, const std::string& mask);
|
||||||
|
void FileCommit(FILE *fileout);
|
||||||
int GetFilesize(FILE* file);
|
int GetFilesize(FILE* file);
|
||||||
|
bool RenameOver(boost::filesystem::path src, boost::filesystem::path dest);
|
||||||
boost::filesystem::path GetDefaultDataDir();
|
boost::filesystem::path GetDefaultDataDir();
|
||||||
const boost::filesystem::path &GetDataDir(bool fNetSpecific = true);
|
const boost::filesystem::path &GetDataDir(bool fNetSpecific = true);
|
||||||
boost::filesystem::path GetConfigFile();
|
boost::filesystem::path GetConfigFile();
|
||||||
|
|
Loading…
Reference in a new issue