193 lines
4.2 KiB
C++
193 lines
4.2 KiB
C++
/*
|
|
* This is a part of the BugTrap package.
|
|
* Copyright (c) 2005-2009 IntelleSoft.
|
|
* All rights reserved.
|
|
*
|
|
* Description: Log file descriptor.
|
|
* Author: Maksim Pyatkovskiy.
|
|
*
|
|
* This source code is only intended as a supplement to the
|
|
* BugTrap package reference and related electronic documentation
|
|
* provided with the product. See these sources for detailed
|
|
* information regarding the BugTrap package.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "BugTrap.h"
|
|
#include "BugTrapUtils.h"
|
|
|
|
/// Log file descriptor.
|
|
class CLogLink
|
|
{
|
|
public:
|
|
/// Initialize the object.
|
|
CLogLink(void);
|
|
/// Initialize the object.
|
|
CLogLink(PCTSTR pszLogFileName);
|
|
/// Destroy the object.
|
|
virtual ~CLogLink(void);
|
|
/// Get log type.
|
|
virtual BUGTRAP_LOGTYPE GetLogType(void) const;
|
|
/// Save log link entries.
|
|
virtual void SaveEntries(bool bCrash);
|
|
/// Get custom log file name.
|
|
PCTSTR GetLogFileName(void) const;
|
|
/// Set custom log file name.
|
|
void SetLogFileName(PCTSTR pszLogFileName);
|
|
/// Object comparison.
|
|
friend bool operator==(const CLogLink& rLogLink1, const CLogLink& rLogLink2);
|
|
/// Object comparison.
|
|
friend bool operator!=(const CLogLink& rLogLink1, const CLogLink& rLogLink2);
|
|
|
|
protected:
|
|
/// Custom log file name.
|
|
TCHAR m_szLogFileName[MAX_PATH];
|
|
};
|
|
|
|
inline CLogLink::CLogLink(void)
|
|
{
|
|
*m_szLogFileName = _T('\0');
|
|
}
|
|
|
|
/**
|
|
* @param pszLogFileName - pointer to custom log file name.
|
|
*/
|
|
inline CLogLink::CLogLink(PCTSTR pszLogFileName)
|
|
{
|
|
GetCompleteLogFileName(m_szLogFileName, pszLogFileName, NULL);
|
|
}
|
|
|
|
inline CLogLink::~CLogLink(void)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* @return pointer to custom log file name.
|
|
*/
|
|
inline PCTSTR CLogLink::GetLogFileName(void) const
|
|
{
|
|
return m_szLogFileName;
|
|
}
|
|
|
|
/**
|
|
* @param pszLogFileName - pointer to custom log file name.
|
|
*/
|
|
inline void CLogLink::SetLogFileName(PCTSTR pszLogFileName)
|
|
{
|
|
GetCompleteLogFileName(m_szLogFileName, pszLogFileName, NULL);
|
|
}
|
|
|
|
/**
|
|
* @return type of the log.
|
|
*/
|
|
inline BUGTRAP_LOGTYPE CLogLink::GetLogType(void) const
|
|
{
|
|
return BTLT_LOGFILE;
|
|
}
|
|
|
|
/**
|
|
* @param bCrash - true if crash has occurred.
|
|
*/
|
|
inline void CLogLink::SaveEntries(bool /*bCrash*/)
|
|
{
|
|
}
|
|
|
|
/// Reg file descriptor.
|
|
class CRegLink : public CLogLink
|
|
{
|
|
public:
|
|
/// Object constructor.
|
|
CRegLink(void);
|
|
/// Object constructor.
|
|
CRegLink(PCTSTR pszLogFileName);
|
|
/// Object constructor.
|
|
CRegLink(PCTSTR pszLogFileName, PCTSTR pszRegKey);
|
|
/// Get log type.
|
|
virtual BUGTRAP_LOGTYPE GetLogType(void) const;
|
|
/// Save log link entries.
|
|
virtual void SaveEntries(bool bCrash);
|
|
/// Get registry key path.
|
|
PCTSTR GetRegKey(void) const;
|
|
/// Set registry key path.
|
|
void SetRegKey(PCTSTR pszRegKey);
|
|
|
|
protected:
|
|
/// Registry key path.
|
|
TCHAR m_szRegKey[MAX_PATH];
|
|
};
|
|
|
|
inline CRegLink::CRegLink(void)
|
|
{
|
|
*m_szRegKey = _T('\0');
|
|
}
|
|
|
|
/**
|
|
* @param pszLogFileName - pointer to custom log file name.
|
|
*/
|
|
inline CRegLink::CRegLink(PCTSTR pszLogFileName) : CLogLink(pszLogFileName)
|
|
{
|
|
*m_szRegKey = _T('\0');
|
|
}
|
|
|
|
/**
|
|
* @param pszLogFileName - pointer to custom log file name.
|
|
* @param pszRegKey - registry key path
|
|
*/
|
|
inline CRegLink::CRegLink(PCTSTR pszLogFileName, PCTSTR pszRegKey) : CLogLink(pszLogFileName)
|
|
{
|
|
_tcscpy_s(m_szRegKey, countof(m_szRegKey), pszRegKey);
|
|
}
|
|
|
|
/**
|
|
* @return type of the log.
|
|
*/
|
|
inline BUGTRAP_LOGTYPE CRegLink::GetLogType(void) const
|
|
{
|
|
return BTLT_REGEXPORT;
|
|
}
|
|
|
|
/**
|
|
* @param bCrash - true if crash has occurred.
|
|
*/
|
|
inline void CRegLink::SaveEntries(bool bCrash)
|
|
{
|
|
if (bCrash)
|
|
BT_ExportRegistryKey(m_szLogFileName, m_szRegKey);
|
|
}
|
|
|
|
/**
|
|
* @param pszRegKey - registry key path
|
|
*/
|
|
inline void CRegLink::SetRegKey(PCTSTR pszRegKey)
|
|
{
|
|
_tcscpy_s(m_szRegKey, countof(m_szRegKey), pszRegKey);
|
|
}
|
|
|
|
/**
|
|
* @return registry key path.
|
|
*/
|
|
inline PCTSTR CRegLink::GetRegKey(void) const
|
|
{
|
|
return m_szRegKey;
|
|
}
|
|
|
|
/**
|
|
* @param rLogLink1 - 1st object.
|
|
* @param rLogLink2 - 2nd object.
|
|
* @return comparison result.
|
|
*/
|
|
inline bool operator==(const CLogLink& rLogLink1, const CLogLink& rLogLink2)
|
|
{
|
|
return (_tcsicmp(rLogLink1.m_szLogFileName, rLogLink2.m_szLogFileName) == 0);
|
|
}
|
|
|
|
/**
|
|
* @param rLogLink1 - 1st object.
|
|
* @param rLogLink2 - 2nd object.
|
|
* @return comparison result.
|
|
*/
|
|
inline bool operator!=(const CLogLink& rLogLink1, const CLogLink& rLogLink2)
|
|
{
|
|
return (_tcsicmp(rLogLink1.m_szLogFileName, rLogLink2.m_szLogFileName) != 0);
|
|
}
|