windows-nt/Source/XPSP1/NT/base/ntsetup/hwdb/utils/inc/log.h
2020-09-26 16:20:57 +08:00

353 lines
6.3 KiB
C

/*++
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
Init_Log (
IN HWND LogPopupParentWnd
);
VOID
Exit_Log (
VOID
);
BOOL
LogReInit (
IN HWND *NewParent, OPTIONAL
OUT HWND *OrgParent OPTIONAL
);
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 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