Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
1.5 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1999
//
// File: cedebug.cpp
//
// Contents: Debug support
//
//----------------------------------------------------------------------------
#include <pch.cpp>
#pragma hdrstop
#include "celib.h"
#include <stdarg.h>
//+-------------------------------------------------------------------------
//
// Function: ceDbgPrintf
//
// Synopsis: outputs debug info to stdout and debugger
//
// Returns: number of chars output
//
//--------------------------------------------------------------------------
int WINAPIV
ceDbgPrintf(
IN BOOL fDebug,
IN LPCSTR lpFmt,
...)
{
va_list arglist;
CHAR ach[4096];
int cch = 0;
HANDLE hStdOut;
DWORD dwErr;
dwErr = GetLastError();
if (fDebug)
{
__try
{
va_start(arglist, lpFmt);
cch = _vsnprintf(ach, sizeof(ach), lpFmt, arglist);
ach[ARRAYSIZE(ach)-1] = L'\0';
va_end(arglist);
if (0 > cch)
{
strcpy(&ach[sizeof(ach) - 5], "...\n");
}
if (!IsDebuggerPresent())
{
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (hStdOut != INVALID_HANDLE_VALUE)
{
fputs(ach, stdout);
fflush(stdout);
}
}
OutputDebugStringA(ach);
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
// return failure
cch = 0;
}
}
SetLastError(dwErr);
return(cch);
}