111 lines
2.5 KiB
C
111 lines
2.5 KiB
C
/***
|
|
**
|
|
** Module: T1Instal
|
|
**
|
|
** Description:
|
|
** This is a Win32 DLL specific module, that implements
|
|
** the error logging mechanism under Win32.
|
|
**
|
|
** Author: Michael Jansson
|
|
** Created: 12/18/93
|
|
**
|
|
***/
|
|
|
|
|
|
/***** INCLUDES */
|
|
#include <windows.h>
|
|
#include "types.h"
|
|
#include "t1local.h"
|
|
#ifdef NOMSGBOX
|
|
#include <stdio.h>
|
|
#endif
|
|
|
|
|
|
|
|
/***** CONSTANTS */
|
|
/*-none-*/
|
|
|
|
|
|
|
|
/***** GLOBALS */
|
|
extern HANDLE hInst; /* Cached in the T1Instal module. */
|
|
|
|
|
|
|
|
/***** PROTOTYPES */
|
|
extern int __cdecl sprintf(char *, const char *, ...);
|
|
|
|
|
|
/***
|
|
** Function: LogError
|
|
**
|
|
** Description:
|
|
** Add another message to the error log.
|
|
***/
|
|
void LogError(const long type, const long id, const char *arg)
|
|
{
|
|
char caption[256];
|
|
char msg[256];
|
|
WORD etype;
|
|
HANDLE h;
|
|
DWORD logit;
|
|
DWORD size;
|
|
HKEY key;
|
|
|
|
/* Map the internal envent type to EventLog type. */
|
|
if (type==MSG_INFO)
|
|
etype = EVENTLOG_INFORMATION_TYPE;
|
|
else if (type==MSG_WARNING)
|
|
etype = EVENTLOG_WARNING_TYPE;
|
|
else
|
|
etype = EVENTLOG_ERROR_TYPE;
|
|
|
|
/* Access the REG data base. */
|
|
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, SUBKEY_TYPE1INSTAL, 0,
|
|
KEY_QUERY_VALUE, &key)==ERROR_SUCCESS) {
|
|
|
|
size = sizeof(logit);
|
|
if (RegQueryValueEx(key, (LPTSTR)SUBKEY_LOGFILE, NULL,
|
|
NULL, (LPVOID)&logit, &size)==ERROR_SUCCESS &&
|
|
logit!=0) {
|
|
|
|
h = RegisterEventSource(NULL, STR_APPNAME);
|
|
if (h!=NULL) {
|
|
ReportEvent(h, etype, 0, id, NULL, 1, 0, (LPSTR *)&arg, NULL);
|
|
DeregisterEventSource(h);
|
|
}
|
|
|
|
if (etype==EVENTLOG_WARNING_TYPE) {
|
|
LoadString(hInst, (UINT)id, caption, sizeof(caption));
|
|
sprintf(msg, caption, arg);
|
|
LoadString(hInst, IDS_CAPTION, caption, sizeof(caption));
|
|
#if NOMSGBOX
|
|
fputs("WARNING- ", stderr);
|
|
fputs(msg, stderr);
|
|
fputs("\n", stderr);
|
|
#else
|
|
MessageBox(NULL, msg, caption, INFO);
|
|
#endif
|
|
SetLastError(0); /* MessageBox(NULL,...) is broken */
|
|
}
|
|
}
|
|
|
|
if (etype==EVENTLOG_ERROR_TYPE) {
|
|
LoadString(hInst, (UINT)id, caption, sizeof(caption));
|
|
sprintf(msg, caption, arg);
|
|
LoadString(hInst, IDS_CAPTION, caption, sizeof(caption));
|
|
#if NOMSGBOX
|
|
fputs("ERROR - ", stderr);
|
|
fputs(msg, stderr);
|
|
fputs("\n", stderr);
|
|
#else
|
|
MessageBox(NULL, msg, caption, INFO);
|
|
#endif
|
|
SetLastError(0); /* MessageBox(NULL,...) is broken */
|
|
}
|
|
RegCloseKey(key);
|
|
}
|
|
}
|
|
|
|
|