| 90 | } |
| 91 | |
| 92 | void Log::Stop () |
| 93 | { |
| 94 | switch (m_Destination) |
| 95 | { |
| 96 | #ifndef _WIN32 |
| 97 | case eLogSyslog : |
| 98 | closelog(); |
| 99 | break; |
| 100 | #endif |
| 101 | case eLogFile: |
| 102 | case eLogStream: |
| 103 | if (m_LogStream) m_LogStream->flush(); |
| 104 | break; |
| 105 | default: |
| 106 | /* do nothing */ |
| 107 | break; |
| 108 | } |
| 109 | m_IsRunning = false; |
| 110 | m_Queue.WakeUp (); |
| 111 | if (m_Thread) |
| 112 | { |
| 113 | m_Thread->join (); |
| 114 | delete m_Thread; |
| 115 | m_Thread = nullptr; |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | std::string str_tolower(std::string s) { |
| 120 | std::transform(s.begin(), s.end(), s.begin(), |
no test coverage detected