CString CConfigMsgLogDlg::GetUniqueLogFilePath(void)
{
    CString omStrFullPath = "";
    std::string acPathBuffer = {L'\0'};      // Get current working
    char acFilePath[BM_MAX_PATH] = {L'\0'};      // Get current working
    GetCurrentVerBusMasterUserDataPath(acPathBuffer);

    BOOL bFound = TRUE; // Means - "found unique name"

    for (USHORT Count = 0; bFound == TRUE; Count++)
    {
        CString omNewLogFileName = "";  // New Log file name
        auto baseName = GetDefaultLogFileName();
        omNewLogFileName.Format("%s_%d.log", baseName.c_str(), Count);
        PathCombine(acFilePath, acPathBuffer.c_str(), omNewLogFileName.GetBuffer(MAX_PATH));
        omStrFullPath = acFilePath;


        // We have two different strings to compare. The first one is the bare
        // log file name and the second one is the full path.

        // Iterate through the list of existing logging blocks. If the same
        // file name has a hit, then try for another name.
        bFound = FoundInLogList(omStrFullPath, omNewLogFileName);
    }
    // At the end of this routine a unique log file should've been found.
    return omStrFullPath;
}
Exemple #2
0
void TConfiguration::Default()
{
  TGuard Guard(FCriticalSection);

  FDisablePasswordStoring = false;
  FForceBanners = false;
  FDisableAcceptingHostKeys = false;

  std::unique_ptr<TRegistryStorage> AdminStorage(new TRegistryStorage(GetRegistryStorageKey(), HKEY_LOCAL_MACHINE));
  try__finally
  {
    if (AdminStorage->OpenRootKey(false))
    {
      LoadAdmin(AdminStorage.get());
      AdminStorage->CloseSubKey();
    }
  }
  __finally
  {
//    delete AdminStorage;
  };

  SetRandomSeedFile(FDefaultRandomSeedFile);
  SetPuttyRegistryStorageKey(OriginalPuttyRegistryStorageKey);
  FConfirmOverwriting = true;
  FConfirmResume = true;
  FAutoReadDirectoryAfterOp = true;
  FSessionReopenAuto = 5000;
  FSessionReopenBackground = 2000;
  FSessionReopenTimeout = 0;
  FSessionReopenAutoStall = 60000;
  FTunnelLocalPortNumberLow = 50000;
  FTunnelLocalPortNumberHigh = 50099;
  FCacheDirectoryChangesMaxSize = 100;
  FShowFtpWelcomeMessage = false;
  FExternalIpAddress.Clear();
  FTryFtpWhenSshFails = true;
  SetCollectUsage(FDefaultCollectUsage);
  FSessionReopenAutoMaximumNumberOfRetries = CONST_DEFAULT_NUMBER_OF_RETRIES;
  FDefaultCollectUsage = false;

  FLogging = false;
  FPermanentLogging = false;
  FLogFileName = GetDefaultLogFileName();
  FPermanentLogFileName = FLogFileName;
  FLogFileAppend = true;
  FLogSensitive = false;
  FPermanentLogSensitive = FLogSensitive;
  FLogWindowLines = 100;
  FLogProtocol = 0;
  FPermanentLogProtocol = FLogProtocol;
  UpdateActualLogProtocol();
  FLogActions = false;
  FPermanentLogActions = false;
  FActionsLogFileName = "%TEMP%" WGOOD_SLASH "&S.xml";
  FPermanentActionsLogFileName = FActionsLogFileName;
  FProgramIniPathWrittable = -1;

  Changed();
}
Exemple #3
0
CsuApp::CsuApp(): iRun(EFalse), iStopped(EFalse), iSystObs(*this)
{
    // Default logfilename
    iLogFileName = GetDefaultLogFileName();
    // Create Main window
    iMainWnd = new CsuMainWnd("MainWnd");
    iMainWnd->Show();
    iMainWnd->SetMenuObserver(this);
    // Create model
    iSpecFileName = KSpecFileName;
    iCaeEnv = CAE_Env::NewL(NULL, NULL, KSpecFileName, 1, NULL, iLogFileName.c_str());
    // Create view
    iCagProv = new CagProvider(iMainWnd);
    iViewProxy = iCagProv->CreateViewProxy();
    iCaeEnv->ConstructSystem();
    iIsTempl = !IsSpecFileWrittable();
    iViewProxy->SetRoot(iCaeEnv->RootCtrl());
    iViewProxy->SetObj(iCaeEnv->RootCtrl());

    iMainWnd->SetEnvLog(iLogFileName);
    iMainWnd->SetTitle(FormTitle(KSpecFileName));
    iMainWnd->Maximize();

    // Visualization window adapter
    iVisAdp = new CsuVisAdp("VisAdp", iCaeEnv);
    CAE_ConnPointBase* c_adinp = iCaeEnv->Root()->GetInpN("viswin");
    if (c_adinp != NULL) {
	iVisAdp->ConnectWnd(c_adinp);
    }
    iVisAdp->SetWnd(iMainWnd->GetEnviw());
}
Exemple #4
0
bool CLogger::AddLogV(LPCTSTR pszText,va_list Args)
{
	if (pszText==NULL)
		return false;

	CBlockLock Lock(&m_Lock);

	TCHAR szText[MAX_LOG_TEXT_LENGTH];
	StdUtil::vsnprintf(szText,lengthof(szText),pszText,Args);
	CLogItem *pLogItem=new CLogItem(szText);
	m_LogList.push_back(pLogItem);
	TRACE(TEXT("Log : %s\n"),szText);

	if (m_fOutputToFile) {
		TCHAR szFileName[MAX_PATH];
		HANDLE hFile;

		GetDefaultLogFileName(szFileName);
		hFile=::CreateFile(szFileName,GENERIC_WRITE,FILE_SHARE_READ,NULL,
						   OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
		if (hFile!=INVALID_HANDLE_VALUE) {
			char szText[MAX_LOG_TEXT_LENGTH];
			DWORD Length,Write;

			::SetFilePointer(hFile,0,NULL,FILE_END);
			Length=pLogItem->Format(szText,lengthof(szText)-1);
			szText[Length++]='\r';
			szText[Length++]='\n';
			::WriteFile(hFile,szText,Length,&Write,NULL);
			::CloseHandle(hFile);
		}
	}

	return true;
}
//---------------------------------------------------------------------
void TConfiguration::SetLogToFile(bool Value)
{
  if (Value != GetLogToFile())
  {
    SetLogFileName(Value ? GetDefaultLogFileName() : UnicodeString(L""));
    Changed();
  }
}
Exemple #6
0
bool CLogger::ReadSettings(CSettings &Settings)
{
	CBlockLock Lock(&m_Lock);

	Settings.Read(TEXT("OutputLogToFile"),&m_fOutputToFile);
	if (m_fOutputToFile && m_LogList.size()>0) {
		TCHAR szFileName[MAX_PATH];

		GetDefaultLogFileName(szFileName);
		SaveToFile(szFileName,true);
	}
	return true;
}
Exemple #7
0
INT_PTR CLogger::DlgProc(HWND hDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
	switch (uMsg) {
	case WM_INITDIALOG:
		{
			HWND hwndList=GetDlgItem(hDlg,IDC_LOG_LIST);
			LVCOLUMN lvc;
			LVITEM lvi;

			ListView_SetExtendedListViewStyle(hwndList,LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP);
			lvc.mask=LVCF_FMT | LVCF_WIDTH | LVCF_TEXT;
			lvc.fmt=LVCFMT_LEFT;
			lvc.cx=80;
			lvc.pszText=TEXT("日時");
			ListView_InsertColumn(hwndList,0,&lvc);
			lvc.pszText=TEXT("内容");
			ListView_InsertColumn(hwndList,1,&lvc);

			lvi.iItem=0;
			lvi.mask=LVIF_TEXT;
			m_Lock.Lock();
			ListView_SetItemCount(hwndList,(int)m_LogList.size());
			for (auto itr=m_LogList.begin();itr!=m_LogList.end();++itr) {
				const CLogItem *pLogItem=*itr;
				TCHAR szTime[64];

				lvi.iSubItem=0;
				pLogItem->FormatTime(szTime,lengthof(szTime));
				lvi.pszText=szTime;
				ListView_InsertItem(hwndList,&lvi);
				lvi.iSubItem=1;
				lvi.pszText=const_cast<LPTSTR>(pLogItem->GetText());
				ListView_SetItem(hwndList,&lvi);
				lvi.iItem++;
			}
			for (int i=0;i<2;i++)
				ListView_SetColumnWidth(hwndList,i,LVSCW_AUTOSIZE_USEHEADER);
			if (!m_LogList.empty())
				ListView_EnsureVisible(hwndList,(int)m_LogList.size()-1,FALSE);
			m_Lock.Unlock();

			DlgCheckBox_Check(hDlg,IDC_LOG_OUTPUTTOFILE,m_fOutputToFile);
		}
		return TRUE;

	case WM_COMMAND:
		switch (LOWORD(wParam)) {
		case IDC_LOG_CLEAR:
			ListView_DeleteAllItems(GetDlgItem(hDlg,IDC_LOG_LIST));
			Clear();
			return TRUE;

		case IDC_LOG_COPY:
			CopyToClipboard(GetAppClass().GetUICore()->GetMainWindow());
			return TRUE;

		case IDC_LOG_SAVE:
			{
				TCHAR szFileName[MAX_PATH];

				GetDefaultLogFileName(szFileName);
				if (!SaveToFile(szFileName,false)) {
					::MessageBox(hDlg,TEXT("保存ができません。"),NULL,MB_OK | MB_ICONEXCLAMATION);
				} else {
					TCHAR szMessage[MAX_PATH+64];

					StdUtil::snprintf(szMessage,lengthof(szMessage),
									  TEXT("ログを \"%s\" に保存しました。"),szFileName);
					::MessageBox(hDlg,szMessage,TEXT("ログ保存"),MB_OK | MB_ICONINFORMATION);
				}
			}
			return TRUE;
		}
		return TRUE;

	case WM_NOTIFY:
		switch (((LPNMHDR)lParam)->code) {
		case PSN_APPLY:
			{
				bool fOutput=DlgCheckBox_IsChecked(hDlg,IDC_LOG_OUTPUTTOFILE);

				if (fOutput!=m_fOutputToFile) {
					CBlockLock Lock(&m_Lock);

					if (fOutput && m_LogList.size()>0) {
						TCHAR szFileName[MAX_PATH];

						GetDefaultLogFileName(szFileName);
						SaveToFile(szFileName,true);
					}
					m_fOutputToFile=fOutput;

					m_fChanged=true;
				}
			}
			return TRUE;
		}
		break;
	}

	return FALSE;
}