|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
log.h
Abstract:
Implements routines that simplify the writing to setupact.log and setuperr.log.
Author:
Jim Schmidt (jimschm) 25-Feb-1997
Revision History:
mikeco 23-May-1997 Ran code through train_wreck.exe Ovidiu Temereanca (ovidiut) 23-Oct-1998 Added new logging capabilities
*/
//
// If either DBG or DEBUG defined, use debug mode
//
#ifdef DBG
#ifndef DEBUG
#define DEBUG
#endif
#endif
#ifdef DEBUG
#ifndef DBG
#define DBG
#endif
#endif
//
// Redefine MYASSERT
//
#ifdef DEBUG
#ifdef MYASSERT
#undef MYASSERT
#endif
#define DBG_ASSERT "Assert"
#define MYASSERT(expr) LogIfA( \
!(expr), \ DBG_ASSERT, \ "Assert Failure\n\n%s\n\n%s line %u", \ #expr, \
__FILE__, \ __LINE__ \ );
#else
#ifndef MYASSERT
#define MYASSERT(x)
#endif
#endif
#define LOG_FATAL_ERROR "Fatal Error"
#define LOG_ERROR "Error"
#define LOG_WARNING "Warning"
#define LOG_INFORMATION "Info"
#define LOG_ACCOUNTS "Accounts"
#define LOG_CONFIG "Configuration"
BOOL LogInit ( IN HWND LogPopupParentWnd );
BOOL LogReInit ( IN HWND *NewParent, OPTIONAL OUT HWND *OrgParent OPTIONAL );
VOID LogExit ( VOID );
VOID _cdecl LogA ( IN PCSTR Type, IN PCSTR Format, ... );
VOID _cdecl LogW ( IN PCSTR Type, IN PCSTR Format, ... );
VOID _cdecl LogIfA ( IN BOOL Condition, IN PCSTR Type, IN PCSTR Format, ... );
VOID _cdecl LogIfW ( IN BOOL Condition, IN PCSTR Type, IN PCSTR Format, ... );
VOID LogTitleA ( IN PCSTR Type, IN PCSTR Title );
VOID LogTitleW ( IN PCSTR Type, IN PCWSTR Title );
VOID LogLineA ( IN PCSTR Line );
VOID LogLineW ( IN PCWSTR Line );
VOID LogDirectA ( IN PCSTR Type, IN PCSTR Text );
VOID LogDirectW ( IN PCSTR Type, IN PCWSTR Text );
VOID SuppressAllLogPopups ( IN BOOL SuppressOn );
#ifdef PROGRESS_BAR
VOID _cdecl LogTime ( IN PCSTR Format, ... );
#endif
// Define W symbols
#define LOGW(x) LogW x
#define LOGW_IF(x) LogIfW x
#define ELSE_LOGW(x) else{LogW x;}
#define ELSE_LOGW_IF(x) else{LogIfW x;}
#define LOGTITLEW(type,title) LogTitleW (type,title)
#define LOGLINEW(title) LogLineW (title)
#define LOGDIRECTW(type,text) LogDirectW (type,text)
// Define A symbols
#define LOGA(x) LogA x
#define LOGA_IF(x) LogIfA x
#define ELSE_LOGA(x) else{LogA x;}
#define ELSE_LOGA_IF(x) else{LogIfA x;}
#define LOGTITLEA(type,title) LogTitleA (type,title)
#define LOGLINEA(line) LogLineA (line)
#define LOGDIRECTA(type,text) LogDirectA (type,text)
// Define generic symbols
#ifdef UNICODE
#define LOG(x) LOGW(x)
#define LOG_IF(x) LOGW_IF(x)
#define ELSE_LOG(x) ELSE_LOGW(x)
#define ELSE_LOG_IF(x) ELSE_LOGW_IF(x)
#define LOGTITLE(type,title) LOGTITLEW(type,title)
#define LOGLINE(title) LOGLINEW(title)
#define LOGDIRECT(type,text) LOGDIRECTW(type,text)
#else
#define LOG(x) LOGA(x)
#define LOG_IF(x) LOGA_IF(x)
#define ELSE_LOG(x) ELSE_LOGA(x)
#define ELSE_LOG_IF(x) ELSE_LOGA_IF(x)
#define LOGTITLE(type,title) LOGTITLEA(type,title)
#define LOGLINE(title) LOGLINEA(title)
#define LOGDIRECT(type,text) LOGDIRECTA(type,text)
#endif // UNICODE
#ifdef DEBUG
#define DBG_NAUSEA "Nausea"
#define DBG_VERBOSE "Verbose"
#define DBG_STATS "Stats"
#define DBG_WARNING "Warning"
#define DBG_ERROR "Error"
#define DBG_WHOOPS "Whoops"
#define DBG_TRACK "Track"
#define DBG_TIME "Time"
extern CHAR g_DebugInfPathBufA[]; extern WCHAR g_DebugInfPathBufW[]; #define g_DebugInfPath g_DebugInfPathBufA
#define g_DebugInfPathA g_DebugInfPathBufA
#define g_DebugInfPathW g_DebugInfPathBufW
extern BOOL g_ResetLog; // Defined in log.c
#define SET_RESETLOG() g_ResetLog = TRUE
#define CLR_RESETLOG() g_ResetLog = FALSE
#define RESETLOG() (g_ResetLog)
extern BOOL g_DoLog; // Defined in log.c
#define SET_DOLOG() g_DoLog = TRUE
#define CLR_DOLOG() g_DoLog = FALSE
#define DOLOG() (g_DoLog)
#ifndef PROGRESS_BAR
VOID _cdecl DebugLogTimeA ( IN PCSTR Format, ... );
VOID _cdecl DebugLogTimeW ( IN PCSTR Format, ... );
#endif
// Define W symbols
#define DEBUGMSGW(x) LogW x
#define DEBUGMSGW_IF(x) LogIfW x
#define ELSE_DEBUGMSGW(x) else LogW x
#define ELSE_DEBUGMSGW_IF(x) else LogW x
#ifdef PROGRESS_BAR
#define DEBUGLOGTIMEW(x) LogTime x
#else
#define DEBUGLOGTIMEW(x) DebugLogTimeW x
#endif
// Define A symbols
#define DEBUGMSGA(x) LogA x
#define DEBUGMSGA_IF(x) LogIfA x
#define ELSE_DEBUGMSGA(x) else LogA x
#define ELSE_DEBUGMSGA_IF(x) else LogIfA x
#ifdef PROGRESS_BAR
#define DEBUGLOGTIMEA(x) LogTime x
#else
#define DEBUGLOGTIMEA(x) DebugLogTimeA x
#endif
// Define generic symbols
#ifdef UNICODE
#define DEBUGMSG(x) DEBUGMSGW(x)
#define DEBUGMSG_IF(x) DEBUGMSGW_IF(x)
#define ELSE_DEBUGMSG(x) ELSE_DEBUGMSGW(x)
#define ELSE_DEBUGMSG_IF(x) ELSE_DEBUGMSGW_IF(x)
#define DEBUGLOGTIME(x) DEBUGLOGTIMEW(x)
#else
#define DEBUGMSG(x) DEBUGMSGA(x)
#define DEBUGMSG_IF(x) DEBUGMSGA_IF(x)
#define ELSE_DEBUGMSG(x) ELSE_DEBUGMSGA(x)
#define ELSE_DEBUGMSG_IF(x) ELSE_DEBUGMSGA_IF(x)
#define DEBUGLOGTIME(x) DEBUGLOGTIMEA(x)
#endif // UNICODE
#else // !defined(DEBUG)
//
// No-debug constants
//
#define SET_RESETLOG()
#define CLR_RESETLOG()
#define RESETLOG()
#define SET_DOLOG()
#define CLR_DOLOG()
#define DOLOG()
#define SETTRACKCOMMENT(RetType,Msg,File,Line)
#define CLRTRACKCOMMENT
#define SETTRACKCOMMENT_VOID(Msg,File,Line)
#define CLRTRACKCOMMENT_VOID
#define DISABLETRACKCOMMENT()
#define ENABLETRACKCOMMENT()
#define DEBUGMSG(x)
#define DEBUGMSGA(x)
#define DEBUGMSGW(x)
#define DEBUGMSG_IF(x)
#define DEBUGMSGA_IF(x)
#define DEBUGMSGW_IF(x)
#define ELSE_DEBUGMSG(x)
#define ELSE_DEBUGMSGA(x)
#define ELSE_DEBUGMSGW(x)
#define ELSE_DEBUGMSG_IF(x)
#define ELSE_DEBUGMSGA_IF(x)
#define ELSE_DEBUGMSGW_IF(x)
#ifdef PROGRESS_BAR
#define DEBUGLOGTIME(x) LogTime x
#else
#define DEBUGLOGTIME(x)
#endif
#endif // DEBUG
|