]> repos.lx-s.de Git - winmute.git/commitdiff
Delete log file, when logging is disabled.
authorAlexander Steinhöfer <alexander@steinhoefer.net>
Fri, 8 Apr 2022 07:41:25 +0000 (09:41 +0200)
committerAlexander Steinhöfer <alexander@steinhoefer.net>
Fri, 8 Apr 2022 07:41:25 +0000 (09:41 +0200)
WinMute/Settings_GeneralDlg.cpp
WinMute/WMLog.cpp
WinMute/WMLog.h

index e716672bb894a118271eb26b0ef6461c6b79fdc9..6822601d5823a59ff1d12a1de6c3d3a5dba7bc8c 100644 (file)
@@ -81,9 +81,11 @@ INT_PTR CALLBACK Settings_GeneralDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPA
       HWND hLogging = GetDlgItem(hDlg, IDC_ENABLELOGGING);
 
       int showNotifications = Button_GetCheck(hNotify) == BST_CHECKED;
-      int enableLog = Button_GetCheck(hLogging) == BST_CHECKED;
       settings->SetValue(SettingsKey::NOTIFICATIONS_ENABLED, showNotifications);
+
+      int enableLog = Button_GetCheck(hLogging) == BST_CHECKED;
       settings->SetValue(SettingsKey::LOGGING_ENABLED, enableLog);
+      WMLog::GetInstance().SetEnabled(enableLog);
 
       if (Button_GetCheck(hAutostart) == BST_CHECKED) {
          settings->EnableAutostart(true);
index 22c27488cbb4bbb16458f6523235f1b8e5ce6737..f2842e5e09f5b71ee7cb23222002e1b6248212e9 100644 (file)
@@ -49,17 +49,14 @@ WMLog& WMLog::GetInstance()
    return log;
 }
 
-WMLog::WMLog() :
-   initialized_(false)
+WMLog::WMLog():
+   enabled_(false)
 {
-   if (OpenLogFile(GetLogFilePath(), logFile_)) {
-      initialized_ = true;
-   }
 }
 
 WMLog::~WMLog()
 {
-   if (initialized_) {
+   if (logFile_.is_open()) {
       logFile_.close();
    }
 }
@@ -71,9 +68,32 @@ std::string WMLog::GetLogFilePath()
    return path.string();
 }
 
+void WMLog::DeleteLogFile()
+{
+   auto p = GetLogFilePath();
+   logFile_.close();
+   DeleteFileA(p.c_str());
+}
+
 void WMLog::SetEnabled(bool enable)
 {
-   enabled_ = enable;
+   if (enable == enabled_) {
+      if (!enable) {
+         DeleteLogFile();
+      }
+      return;
+   }
+   if (enable) {
+      if (OpenLogFile(GetLogFilePath(), logFile_)) {
+         enabled_ = true;
+      }
+   } else {
+      if (logFile_.is_open()) {
+         logFile_.close();
+      }
+      DeleteLogFile();
+      enabled_ = false;
+   }
 }
 
 void WMLog::WriteMessage(const TCHAR* msg)
@@ -97,7 +117,7 @@ void WMLog::WriteMessage(const TCHAR* msg)
 
 void WMLog::Write(const TCHAR *fmt, ...)
 {
-   if (!initialized_ || !enabled_) {
+   if (!enabled_) {
       return;
    }
 
index ab173dcc499b00f9e124990ed90a8640980a4860..91de656f363015f11e1412f18a849929ddcf85c9 100644 (file)
@@ -51,8 +51,8 @@ private:
    WMLog& operator=(const WMLog&) = delete;
 
    void WriteMessage(const TCHAR* msg);
+   void DeleteLogFile();
 
-   bool initialized_;
    bool enabled_;
 #ifdef UNICODE
    std::wofstream logFile_;