/*++ Copyright (C) Microsoft Corporation, 2000 Module Name: LogT Abstract: This module implements the logging capabilities of SCTest, specifically the part build for both Unicode and ANSI. Author: Eric Perlin (ericperl) 07/21/2000 Environment: Win32 Notes: ?Notes? --*/ #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #include #include #include #include "TString.h" #include "Log.h" extern BOOL g_fVerbose; extern FILE *g_fpLog; /*++ LogThisOnly: Implements logging according to the following matrix: Console Output: | Verbose | Not | ----------------------------- Not Exp.| cerr | cerr | ----------------------------- Expected| cout | / | ----------------------------- If a log was specified, everything is logged. Arguments: szMsg supplies the content to be logged fExpected indicates the expected status Return Value: None. Author: Eric Perlin (ericperl) 05/31/2000 --*/ void LogThisOnly( IN LPCTSTR szMsg, IN BOOL fExpected ) { LogLock(); if (!fExpected) { LogString2FP(stderr, szMsg); } else if (g_fVerbose) { LogString2FP(stdout, szMsg); } if (NULL != g_fpLog) { LogString2FP(g_fpLog, szMsg); } LogUnlock(); } /*++ LogString: Arguments: szHeader supplies a header szMsg supplies the content to be logged Return Value: None. Author: Eric Perlin (ericperl) 07/26/2000 --*/ void LogString( IN PLOGCONTEXT pLogCtx, IN LPCTSTR szHeader, IN LPCTSTR szS ) { if (szHeader) { LogString(pLogCtx, szHeader); } if (NULL == szS) { LogString(pLogCtx, _T("")); } else if (0 == _tcslen(szS)) { LogString(pLogCtx, _T("")); } else { LogString(pLogCtx, szS); } if (szHeader) { LogString(pLogCtx, _T("\n")); } } /*++ LogMultiString: Arguments: szMS supplies the multi-string to be logged szHeader supplies a header Return Value: None. Author: Eric Perlin (ericperl) 07/26/2000 --*/ void LogMultiString( IN PLOGCONTEXT pLogCtx, IN LPCTSTR szMS, IN LPCTSTR szHeader ) { if (szHeader) { LogString(pLogCtx, szHeader, _T(" ")); } if (NULL == szMS) { LogString(pLogCtx, _T(" ")); if (szHeader) { LogString(pLogCtx, _T("\n")); } } else if ( (TCHAR)'\0' == *szMS ) { LogString(pLogCtx, _T(" ")); if (szHeader) { LogString(pLogCtx, _T("\n")); } } else { LPCTSTR sz = szMS; while ( (TCHAR)'\0' != *sz ) { // Display the value. LogString(pLogCtx, _T(" "), sz); // Advance to the next value. sz = sz + _tcslen(sz) + 1; } } }