* @brief Write logfile */
| 316 | * @brief Write logfile |
| 317 | */ |
| 318 | bool CConfigLog::DoFile(String &sError) |
| 319 | { |
| 320 | CVersionInfo version; |
| 321 | String text; |
| 322 | |
| 323 | String sFileName = paths::ConcatPath(GetOptionsMgr()->GetInt(OPT_USERDATA_LOCATION) == 0 ? env::GetAppDataPath() : env::GetMyDocuments(), WinMergeUserDataFolder); |
| 324 | paths::CreateIfNeeded(sFileName); |
| 325 | m_sFileName = paths::ConcatPath(sFileName, _T("WinMerge.txt")); |
| 326 | |
| 327 | if (!m_pfile->OpenCreateUtf8(m_sFileName)) |
| 328 | { |
| 329 | m_sFileName = paths::ConcatPath(env::GetTemporaryPath(), _T("WinMerge.txt")); |
| 330 | if (!m_pfile->OpenCreateUtf8(m_sFileName)) |
| 331 | { |
| 332 | const UniFile::UniError& err = m_pfile->GetLastUniError(); |
| 333 | sError = err.GetError(); |
| 334 | return false; |
| 335 | } |
| 336 | } |
| 337 | m_pfile->SetBom(true); |
| 338 | m_pfile->WriteBom(); |
| 339 | |
| 340 | // Begin log |
| 341 | FileWriteString(_T("WinMerge Configuration Log\r\n")); |
| 342 | FileWriteString(_T("--------------------------\r\n")); |
| 343 | FileWriteString(_T("\r\nLog Saved to: ")); |
| 344 | FileWriteString(maskUserNameInPath(m_sFileName)); |
| 345 | FileWriteString(_T("\r\n >> >> Please add this information (or attach this file) when reporting bugs << <<")); |
| 346 | |
| 347 | // Platform stuff |
| 348 | |
| 349 | FileWriteString(_T("\r\n\r\nWindows Info: ")); |
| 350 | text = GetWindowsVer(); |
| 351 | FileWriteString(text); |
| 352 | text = GetProcessorInfo(); |
| 353 | if (!text.empty()) |
| 354 | { |
| 355 | FileWriteString(_T("\r\n Processor: ")); |
| 356 | FileWriteString(text); |
| 357 | } |
| 358 | |
| 359 | // WinMerge stuff |
| 360 | |
| 361 | FileWriteString(_T("\r\n\r\nWinMerge Info:")); |
| 362 | String sEXEFullFileName = paths::GetLongPath(version.GetFullFileName(), false); |
| 363 | FileWriteString(_T("\r\n Code File: ")); |
| 364 | FileWriteString(maskUserNameInPath(sEXEFullFileName)); |
| 365 | |
| 366 | FileWriteString(_T("\r\n Version: ")); |
| 367 | FileWriteString(version.GetProductVersion()); |
| 368 | String privBuild = version.GetPrivateBuild(); |
| 369 | if (!privBuild.empty()) |
| 370 | { |
| 371 | FileWriteString(_T(" + ") + privBuild); |
| 372 | } |
| 373 | |
| 374 | FileWriteString(_T("\r\n Code File Modified: ")); |
| 375 | FileWriteString(GetLastModified(sEXEFullFileName)); |
nothing calls this directly
no test coverage detected