|
|
@ -723,13 +723,17 @@ void AllocateFileRange(FILE *file, unsigned int offset, unsigned int length) { |
|
|
|
|
|
|
|
|
|
|
|
void ShrinkDebugFile() |
|
|
|
void ShrinkDebugFile() |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
// Amount of debug.log to save at end when shrinking (must fit in memory)
|
|
|
|
|
|
|
|
constexpr size_t RECENT_DEBUG_HISTORY_SIZE = 10 * 1000000; |
|
|
|
// Scroll debug.log if it's getting too big
|
|
|
|
// Scroll debug.log if it's getting too big
|
|
|
|
boost::filesystem::path pathLog = GetDataDir() / "debug.log"; |
|
|
|
boost::filesystem::path pathLog = GetDataDir() / "debug.log"; |
|
|
|
FILE* file = fopen(pathLog.string().c_str(), "r"); |
|
|
|
FILE* file = fopen(pathLog.string().c_str(), "r"); |
|
|
|
if (file && boost::filesystem::file_size(pathLog) > 10 * 1000000) |
|
|
|
// If debug.log file is more than 10% bigger the RECENT_DEBUG_HISTORY_SIZE
|
|
|
|
|
|
|
|
// trim it down by saving only the last RECENT_DEBUG_HISTORY_SIZE bytes
|
|
|
|
|
|
|
|
if (file && boost::filesystem::file_size(pathLog) > 11 * (RECENT_DEBUG_HISTORY_SIZE / 10)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Restart the file with some of the end
|
|
|
|
// Restart the file with some of the end
|
|
|
|
std::vector <char> vch(200000,0); |
|
|
|
std::vector<char> vch(RECENT_DEBUG_HISTORY_SIZE, 0); |
|
|
|
fseek(file, -((long)vch.size()), SEEK_END); |
|
|
|
fseek(file, -((long)vch.size()), SEEK_END); |
|
|
|
int nBytes = fread(vch.data(), 1, vch.size(), file); |
|
|
|
int nBytes = fread(vch.data(), 1, vch.size(), file); |
|
|
|
fclose(file); |
|
|
|
fclose(file); |
|
|
|