From 6effa574f8ad73b68be9517c6385b9f529c253c2 Mon Sep 17 00:00:00 2001 From: zeffy Date: Fri, 18 May 2018 04:22:40 -0700 Subject: [PATCH] Clear log file if it is larger than 4 MiB --- src/setup_ai/wufuc_setup.aip | 14 ++++++-------- src/wufuc/logger.c | 12 +++++++++++- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/setup_ai/wufuc_setup.aip b/src/setup_ai/wufuc_setup.aip index efa6a50..523ad42 100644 --- a/src/setup_ai/wufuc_setup.aip +++ b/src/setup_ai/wufuc_setup.aip @@ -21,7 +21,7 @@ - + @@ -209,7 +209,7 @@ - + @@ -218,15 +218,13 @@ - - + + - - - + + - diff --git a/src/wufuc/logger.c b/src/wufuc/logger.c index 475550e..e7c0a26 100644 --- a/src/wufuc/logger.c +++ b/src/wufuc/logger.c @@ -16,6 +16,9 @@ static BOOL CALLBACK init_once_callback( LPWSTR folder; int count; LPWSTR file; + WIN32_FILE_ATTRIBUTE_DATA fad; + ULARGE_INTEGER size; + DWORD dwCreationDisposition = OPEN_ALWAYS; if ( !GetModuleFileNameW(NULL, s_szExeFilePath, _countof(s_szExeFilePath)) ) return FALSE; @@ -34,11 +37,18 @@ static BOOL CALLBACK init_once_callback( if ( (CreateDirectoryW(folder, NULL) || GetLastError() == ERROR_ALREADY_EXISTS) && aswprintf(&file, L"%ls\\wufuc.1.log", folder) != -1 ) { + if ( GetFileAttributesExW(file, GetFileExInfoStandard, &fad) ) { + size.HighPart = fad.nFileSizeHigh; + size.LowPart = fad.nFileSizeLow; + + if ( size.QuadPart > (4 << 20) ) // 4 MiB + dwCreationDisposition = CREATE_ALWAYS; + } s_hFile = CreateFileW(file, FILE_APPEND_DATA, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL, - OPEN_ALWAYS, + dwCreationDisposition, FILE_ATTRIBUTE_NORMAL, NULL); free(file);