/* INCLUDES *****************************************************************/
#include "precomp.h"
+#include <stdarg.h>
/* GLOBALS ******************************************************************/
HANDLE hLogFile = NULL;
+#define FORMAT_BUFFER_SIZE 512
+#define LINE_BUFFER_SIZE 1024
+
/* FUNCTIONS ****************************************************************/
BOOL WINAPI
}
-BOOL WINAPI
-SYSSETUP_LogItem(IN const LPSTR lpFileName,
- IN DWORD dwLineNumber,
- IN DWORD dwSeverity,
- IN LPWSTR lpMessageText)
+VOID
+CDECL
+pSetupDebugPrint(
+ IN PCWSTR pszFileName,
+ IN INT nLineNumber,
+ IN PCWSTR pszTag,
+ IN PCWSTR pszMessage,
+ ...)
{
- LPCSTR lpSeverityString;
- LPSTR lpMessageString;
- DWORD dwMessageLength;
- DWORD dwMessageSize;
+ PWSTR pszFormatBuffer = NULL;
+ PWSTR pszLineBuffer = NULL;
+ PSTR pszOutputBuffer = NULL;
+ ULONG ulLineSize, ulOutputSize;
DWORD dwWritten;
- CHAR Buffer[6];
- CHAR TimeBuffer[30];
SYSTEMTIME stTime;
+ va_list args;
- /* Get the severity code string */
- switch (dwSeverity)
- {
- case SYSSETUP_SEVERITY_INFORMATION:
- lpSeverityString = "Information : ";
- break;
-
- case SYSSETUP_SEVERITY_WARNING:
- lpSeverityString = "Warning : ";
- break;
+ if (hLogFile == NULL)
+ return;
- case SYSSETUP_SEVERITY_ERROR:
- lpSeverityString = "Error : ";
- break;
-
- case SYSSETUP_SEVERITY_FATAL_ERROR:
- lpSeverityString = "Fatal error : ";
- break;
+ GetLocalTime(&stTime);
- default:
- lpSeverityString = "Unknown : ";
- break;
+ if (pszMessage)
+ {
+ pszFormatBuffer = HeapAlloc(GetProcessHeap(),
+ HEAP_ZERO_MEMORY,
+ FORMAT_BUFFER_SIZE * sizeof(WCHAR));
+ if (pszFormatBuffer == NULL)
+ goto done;
+
+ va_start(args, pszMessage);
+ vsnwprintf(pszFormatBuffer,
+ FORMAT_BUFFER_SIZE,
+ pszMessage,
+ args);
+ va_end(args);
}
+ pszLineBuffer = HeapAlloc(GetProcessHeap(),
+ HEAP_ZERO_MEMORY,
+ LINE_BUFFER_SIZE * sizeof(WCHAR));
+ if (pszLineBuffer == NULL)
+ goto done;
+
+ _snwprintf(pszLineBuffer,
+ LINE_BUFFER_SIZE,
+ L"%02d/%02d/%04d %02d:%02d:%02d.%03d, %s, %d, %s, %s\r\n",
+ stTime.wMonth,
+ stTime.wDay,
+ stTime.wYear,
+ stTime.wHour,
+ stTime.wMinute,
+ stTime.wSecond,
+ stTime.wMilliseconds,
+ pszFileName ? pszFileName : L"",
+ nLineNumber,
+ pszTag ? pszTag : L"",
+ pszFormatBuffer ? pszFormatBuffer : L"");
+
/* Get length of the converted ansi string */
- dwMessageLength = wcslen(lpMessageText) * sizeof(WCHAR);
- RtlUnicodeToMultiByteSize(&dwMessageSize,
- lpMessageText,
- dwMessageLength);
+ ulLineSize = wcslen(pszLineBuffer) * sizeof(WCHAR);
+ RtlUnicodeToMultiByteSize(&ulOutputSize,
+ pszLineBuffer,
+ ulLineSize);
/* Allocate message string buffer */
- lpMessageString = (LPSTR) HeapAlloc(GetProcessHeap(),
- HEAP_ZERO_MEMORY,
- dwMessageSize);
- if (!lpMessageString)
- return FALSE;
+ pszOutputBuffer = HeapAlloc(GetProcessHeap(),
+ HEAP_ZERO_MEMORY,
+ ulOutputSize);
+ if (pszOutputBuffer == NULL)
+ goto done;
/* Convert unicode to ansi */
- RtlUnicodeToMultiByteN(lpMessageString,
- dwMessageSize,
+ RtlUnicodeToMultiByteN(pszOutputBuffer,
+ ulOutputSize,
NULL,
- lpMessageText,
- dwMessageLength);
+ pszLineBuffer,
+ ulLineSize);
/* Set file pointer to the end of the file */
SetFilePointer(hLogFile,
NULL,
FILE_END);
- /* Write Time/Date */
- GetLocalTime(&stTime);
-
- snprintf(TimeBuffer, sizeof(TimeBuffer),
- "%02d/%02d/%02d %02d:%02d:%02d.%03d",
- stTime.wMonth,
- stTime.wDay,
- stTime.wYear,
- stTime.wHour,
- stTime.wMinute,
- stTime.wSecond,
- stTime.wMilliseconds);
-
- WriteFile(hLogFile,
- TimeBuffer,
- strlen(TimeBuffer),
- &dwWritten,
- NULL);
-
- /* Write comma */
- WriteFile(hLogFile, ",", 1, &dwWritten, NULL);
-
- /* Write file name */
- WriteFile(hLogFile,
- lpFileName,
- strlen(lpFileName),
- &dwWritten,
- NULL);
-
- /* Write comma */
- WriteFile(hLogFile, ",", 1, &dwWritten, NULL);
-
- /* Write line number */
- snprintf(Buffer, sizeof(Buffer), "%lu", dwLineNumber);
- WriteFile(hLogFile,
- Buffer,
- strlen(Buffer),
- &dwWritten,
- NULL);
-
- /* Write comma */
- WriteFile(hLogFile, ",", 1, &dwWritten, NULL);
-
- /* Write severity code */
- WriteFile(hLogFile,
- lpSeverityString,
- strlen(lpSeverityString),
- &dwWritten,
- NULL);
-
- /* Write message string */
WriteFile(hLogFile,
- lpMessageString,
- dwMessageSize,
+ pszOutputBuffer,
+ ulOutputSize,
&dwWritten,
NULL);
- /* Write newline */
- WriteFile(hLogFile, "\r\n", 2, &dwWritten, NULL);
+done:
+ if (pszOutputBuffer)
+ HeapFree(GetProcessHeap(), 0, pszOutputBuffer);
- HeapFree(GetProcessHeap(),
- 0,
- lpMessageString);
+ if (pszLineBuffer)
+ HeapFree(GetProcessHeap(), 0, pszLineBuffer);
- return TRUE;
+ if (pszFormatBuffer)
+ HeapFree(GetProcessHeap(), 0, pszFormatBuffer);
}
/* EOF */
switch (lpnm->code)
{
case PSN_SETACTIVE:
+ LogItem(L"BEGIN", L"WelcomePage");
/* Enable the Next button */
PropSheet_SetWizButtons(GetParent(hwndDlg), PSWIZB_NEXT);
if (pSetupData->UnattendSetup)
}
break;
+ case PSN_WIZNEXT:
+ LogItem(L"END", L"WelcomePage");
+ break;
+
case PSN_WIZBACK:
pSetupData->UnattendSetup = FALSE;
break;
if (cchDrives == 0 || cchDrives >= _countof(wszDrives))
{
/* buffer too small or failure */
- LogItem(SYSSETUP_SEVERITY_INFORMATION, L"GetLogicalDriveStringsW failed");
+ LogItem(NULL, L"GetLogicalDriveStringsW failed");
return FALSE;
}
{
WCHAR wszBuf[MAX_PATH];
wsprintf(wszBuf, L"%sreactos\\system32\\ntoskrnl.exe", pwszDrive);
- LogItem(SYSSETUP_SEVERITY_INFORMATION, wszBuf);
+ LogItem(NULL, wszBuf);
if (GetFileAttributesW(wszBuf) != INVALID_FILE_ATTRIBUTES)
{
/* the file exists, so this is the right drive */
MSG msg;
PSETUPDATA pSetupData = NULL;
+ LogItem(L"BEGIN_SECTION", L"InstallWizard");
+
/* Allocate setup data */
pSetupData = HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY,
sizeof(SETUPDATA));
if (pSetupData == NULL)
{
+ LogItem(NULL, L"SetupData allocation failed!");
MessageBoxW(NULL,
L"Setup failed to allocate global data!",
L"ReactOS Setup",
DeleteObject(pSetupData->hTitleFont);
HeapFree(GetProcessHeap(), 0, pSetupData);
+
+ LogItem(L"END_SECTION", L"InstallWizard");
}
/* EOF */
/* Log File APIs */
-#define SYSSETUP_SEVERITY_INFORMATION 0
-#define SYSSETUP_SEVERITY_WARNING 1
-#define SYSSETUP_SEVERITY_ERROR 2
-#define SYSSETUP_SEVERITY_FATAL_ERROR 3
-
-
BOOL WINAPI
InitializeSetupActionLog(IN BOOL bDeleteOldLogFile);
VOID WINAPI
TerminateSetupActionLog(VOID);
-BOOL WINAPI
-SYSSETUP_LogItem(IN const LPSTR lpFileName,
- IN DWORD dwLineNumber,
- IN DWORD dwSeverity,
- IN LPWSTR lpMessageText);
-
-#define LogItem(dwSeverity, lpMessageText) \
- SYSSETUP_LogItem(__FILE__, __LINE__, dwSeverity, lpMessageText)
+VOID
+CDECL
+pSetupDebugPrint(
+ IN PCWSTR pszFileName,
+ IN INT nLineNumber,
+ IN PCWSTR pszTag,
+ IN PCWSTR pszMessage,
+ ...);
+
+#define __WFILE__ TOWL1(__FILE__)
+#define TOWL1(p) TOWL2(p)
+#define TOWL2(p) L##p
+
+#define LogItem(lpTag, lpMessageText...) \
+ pSetupDebugPrint(__WFILE__, __LINE__, lpTag, lpMessageText)
#endif /* __SYSSETUP_H_INCLUDED__ */