Author: ekohl
Date: Sat Nov 22 15:14:51 2008
New Revision: 37568
URL:
http://svn.reactos.org/svn/reactos?rev=37568&view=rev
Log:
Make the event viewer unicode-enabled and build the unicode version.
Modified:
trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c
trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rbuild
Modified: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.c [iso-8859-1] Sat Nov 22
15:14:51 2008
@@ -35,18 +35,18 @@
#define _CRT_SECURE_NO_DEPRECATE // all deprecated 'unsafe string functions
#endif
-static const LPSTR EVENT_SOURCE_APPLICATION = "Application";
-static const LPSTR EVENT_SOURCE_SECURITY = "Security";
-static const LPSTR EVENT_SOURCE_SYSTEM = "System";
-static const TCHAR szWindowClass[] = _T("EVENTVWR"); // the main
window class name
+static const LPTSTR EVENT_SOURCE_APPLICATION = _TEXT("Application");
+static const LPTSTR EVENT_SOURCE_SECURITY = _TEXT("Security");
+static const LPTSTR EVENT_SOURCE_SYSTEM = _TEXT("System");
+static const TCHAR szWindowClass[] = _TEXT("EVENTVWR"); // the main
window class name
//MessageFile message buffer size
#define EVENT_MESSAGE_EVENTTEXT_BUFFER 1024*10
#define EVENT_MESSAGE_FILE_BUFFER 1024*10
-#define EVENT_DLL_SEPARATOR ";"
-#define EVENT_MESSAGE_FILE "EventMessageFile"
-#define EVENT_CATEGORY_MESSAGE_FILE "CategoryMessageFile"
-#define EVENT_PARAMETER_MESSAGE_FILE "ParameterMessageFile"
+#define EVENT_DLL_SEPARATOR _TEXT(";")
+#define EVENT_MESSAGE_FILE _TEXT("EventMessageFile")
+#define EVENT_CATEGORY_MESSAGE_FILE _TEXT("CategoryMessageFile")
+#define EVENT_PARAMETER_MESSAGE_FILE _TEXT("ParameterMessageFile")
#define MAX_LOADSTRING 255
@@ -139,16 +139,16 @@
void
-TrimNulls(LPSTR s)
-{
- char *c;
-
- if ( s != (char *) NULL )
- {
- c = s + strlen ( s ) - 1;
- while ( c >= s && isspace ( *c ) )
+TrimNulls(LPTSTR s)
+{
+ TCHAR *c;
+
+ if (s != NULL)
+ {
+ c = s + _tcslen(s) - 1;
+ while (c >= s && _istspace(*c))
--c;
- *++c = '\0';
+ *++c = _TEXT('\0');
}
}
@@ -157,7 +157,7 @@
GetEventMessageFileDLL(IN LPCTSTR lpLogName,
IN LPCTSTR SourceName,
IN LPCTSTR EntryName,
- OUT LPSTR ExpandedName)
+ OUT LPTSTR ExpandedName)
{
DWORD dwSize;
BYTE szModuleName[MAX_PATH];
@@ -166,8 +166,8 @@
HKEY hSourceKey = NULL;
BOOL bReturn = FALSE; // Return
- _tcscpy(szKeyName, TEXT("SYSTEM\\CurrentControlSet\\Services\\EventLog"));
- _tcscat(szKeyName, _T("\\"));
+ _tcscpy(szKeyName,
_TEXT("SYSTEM\\CurrentControlSet\\Services\\EventLog"));
+ _tcscat(szKeyName, _TEXT("\\"));
_tcscat(szKeyName, lpLogName);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
@@ -191,7 +191,7 @@
&dwSize) == ERROR_SUCCESS)
{
// Returns a string containing the requested substituted environment
variable.
- ExpandEnvironmentStrings ((LPCTSTR)szModuleName, ExpandedName,
MAX_PATH);
+ ExpandEnvironmentStrings((LPCTSTR)szModuleName, ExpandedName, MAX_PATH);
// Succesfull
bReturn = TRUE;
@@ -245,19 +245,19 @@
if (lpMsgBuf)
{
// Trim the string
- TrimNulls((LPSTR)lpMsgBuf);
+ TrimNulls((LPTSTR)lpMsgBuf);
// Copy the category name
- strcpy(CategoryName, (LPCTSTR)lpMsgBuf);
+ _tcscpy(CategoryName, (LPCTSTR)lpMsgBuf);
}
else
{
- strcpy(CategoryName, (LPCTSTR)lpMsgBuf);
+ _tcscpy(CategoryName, (LPCTSTR)lpMsgBuf);
}
}
else
{
- strcpy(CategoryName, "None");
+ _tcscpy(CategoryName, _TEXT("None"));
}
if (hLibrary != NULL)
@@ -271,7 +271,7 @@
}
}
- strcpy(CategoryName, "None");
+ _tcscpy(CategoryName, _TEXT("None"));
return FALSE;
}
@@ -285,8 +285,8 @@
{
DWORD i;
HANDLE hLibrary = NULL;
- char SourceModuleName[1000];
- char ParameterModuleName[1000];
+ TCHAR SourceModuleName[1000];
+ TCHAR ParameterModuleName[1000];
LPTSTR lpMsgBuf = NULL;
TCHAR szStringIDNotFound[MAX_LOADSTRING];
LPTSTR szDll;
@@ -301,7 +301,7 @@
szMessage = (LPTSTR)((LPBYTE)pevlr + pevlr->StringOffset);
// Allocate space for parameters
- szArguments = (LPTSTR*)malloc(sizeof(LPVOID)* pevlr->NumStrings);
+ szArguments = (LPTSTR*)malloc(sizeof(LPVOID) * pevlr->NumStrings);
if (!szArguments)
{
return FALSE;
@@ -309,7 +309,7 @@
for (i = 0; i < pevlr->NumStrings ; i++)
{
- if (strstr(szMessage , "%%"))
+ if (_tcsstr(szMessage , _TEXT("%%")))
{
if (GetEventMessageFileDLL(KeyName , SourceName,
EVENT_PARAMETER_MESSAGE_FILE, ParameterModuleName))
{
@@ -317,16 +317,16 @@
}
szArguments[i] = szMessage;
- szMessage += strlen(szMessage) + 1;
+ szMessage += _tcslen(szMessage) + 1;
}
else
{
szArguments[i] = szMessage;
- szMessage += strlen(szMessage) + 1;
+ szMessage += _tcslen(szMessage) + 1;
}
}
- szDll = strtok(SourceModuleName, EVENT_DLL_SEPARATOR);
+ szDll = _tcstok(SourceModuleName, EVENT_DLL_SEPARATOR);
while ((szDll != NULL) && (!bDone))
{
hLibrary = LoadLibraryEx(szDll,
@@ -335,7 +335,7 @@
if (hLibrary == NULL)
{
// The DLL could not be loaded try the next one (if any)
- szDll = strtok(NULL, EVENT_DLL_SEPARATOR);
+ szDll = _tcstok(NULL, EVENT_DLL_SEPARATOR);
}
else
{
@@ -349,10 +349,10 @@
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf,
0,
- szArguments) == 0)
+ (va_list*)szArguments) == 0)
{
// We haven't found the string , get next DLL (if any)
- szDll = strtok (NULL, EVENT_DLL_SEPARATOR);
+ szDll = _tcstok(NULL, EVENT_DLL_SEPARATOR);
}
else
{
@@ -362,10 +362,10 @@
bDone = TRUE;
// Trim the string
- TrimNulls((LPSTR)lpMsgBuf);
+ TrimNulls((LPTSTR)lpMsgBuf);
// Copy the event text
- strcpy(EventText ,lpMsgBuf);
+ _tcscpy(EventText ,lpMsgBuf);
}
}
@@ -394,7 +394,7 @@
VOID
GetEventType(IN WORD dwEventType,
- OUT LPSTR eventTypeText)
+ OUT LPTSTR eventTypeText)
{
switch (dwEventType)
{
@@ -423,11 +423,12 @@
}
BOOL
-GetEventUserName(EVENTLOGRECORD *pelr, OUT LPSTR pszUser)
+GetEventUserName(EVENTLOGRECORD *pelr,
+ OUT LPTSTR pszUser)
{
PSID lpSid;
- char szName[1024];
- char szDomain[1024];
+ TCHAR szName[1024];
+ TCHAR szDomain[1024];
SID_NAME_USE peUse;
DWORD cbName = 1024;
DWORD cbDomain = 1024;
@@ -446,7 +447,7 @@
&cbDomain,
&peUse))
{
- strcpy(pszUser, szName);
+ _tcscpy(pszUser, szName);
return TRUE;
}
}
@@ -494,22 +495,22 @@
EVENTLOGRECORD *pevlr;
BYTE bBuffer[MAX_PATH];
DWORD dwRead, dwNeeded, dwThisRecord, dwTotalRecords, dwCurrentRecord = 1,
dwRecordsToRead = 0, dwFlags;
- LPSTR lpSourceName;
- LPSTR lpComputerName;
- LPSTR lpEventStr;
- LPSTR lpData;
+ LPTSTR lpSourceName;
+ LPTSTR lpComputerName;
+ LPTSTR lpEventStr;
+ LPTSTR lpData;
BOOL bResult = TRUE; // Read succeeded.
- char szWindowTitle[MAX_PATH];
- char szStatusText[MAX_PATH];
- char szLocalDate[MAX_PATH];
- char szLocalTime[MAX_PATH];
- char szEventID[MAX_PATH];
- char szEventTypeText[MAX_PATH];
- char szCategoryID[MAX_PATH];
- char szUsername[MAX_PATH];
- char szEventText[EVENT_MESSAGE_FILE_BUFFER];
- char szCategory[MAX_PATH];
+ TCHAR szWindowTitle[MAX_PATH];
+ TCHAR szStatusText[MAX_PATH];
+ TCHAR szLocalDate[MAX_PATH];
+ TCHAR szLocalTime[MAX_PATH];
+ TCHAR szEventID[MAX_PATH];
+ TCHAR szEventTypeText[MAX_PATH];
+ TCHAR szCategoryID[MAX_PATH];
+ TCHAR szUsername[MAX_PATH];
+ TCHAR szEventText[EVENT_MESSAGE_FILE_BUFFER];
+ TCHAR szCategory[MAX_PATH];
SYSTEMTIME time;
LVITEM lviEventItem;
@@ -583,21 +584,21 @@
while (dwRead > 0)
{
- strcpy(szUsername , "N/A");
- strcpy(szEventText , "N/A");
- strcpy(szCategory , "None");
+ _tcscpy(szUsername , _TEXT("N/A"));
+ _tcscpy(szEventText , _TEXT("N/A"));
+ _tcscpy(szCategory , _TEXT("None"));
// Get the event source name.
- lpSourceName = (LPSTR)((LPBYTE)pevlr + sizeof(EVENTLOGRECORD));
+ lpSourceName = (LPTSTR)((LPBYTE)pevlr + sizeof(EVENTLOGRECORD));
// Get the computer name
- lpComputerName = (LPSTR)((LPBYTE)pevlr + sizeof(EVENTLOGRECORD) +
lstrlen(lpSourceName) + 1);
+ lpComputerName = (LPTSTR)((LPBYTE)pevlr + sizeof(EVENTLOGRECORD) +
(_tcslen(lpSourceName) + 1) * sizeof(TCHAR));
// This ist the data section of the current event
- lpData = (LPSTR)((LPBYTE)pevlr + pevlr->DataOffset);
+ lpData = (LPTSTR)((LPBYTE)pevlr + pevlr->DataOffset);
// This is the text of the current event
- lpEventStr = (LPSTR)((LPBYTE) pevlr + pevlr->StringOffset);
+ lpEventStr = (LPTSTR)((LPBYTE)pevlr + pevlr->StringOffset);
// Compute the event type
EventTimeToSystemTime(pevlr->TimeWritten, &time);
@@ -611,8 +612,8 @@
GetEventType(pevlr->EventType, szEventTypeText);
GetEventCategory(lpLogName, lpSourceName, pevlr, szCategory);
- wsprintf(szEventID, "%u", (DWORD)(pevlr->EventID &
0xFFFF));
- wsprintf(szCategoryID, "%u", (DWORD)(pevlr->EventCategory));
+ wsprintf(szEventID, _TEXT("%u"), (DWORD)(pevlr->EventID &
0xFFFF));
+ wsprintf(szCategoryID, _TEXT("%u"),
(DWORD)(pevlr->EventCategory));
lviEventItem.mask = LVIF_IMAGE | LVIF_TEXT | LVIF_PARAM;
lviEventItem.iItem = 0;
@@ -671,8 +672,8 @@
// All events loaded
EndDialog(hwndDlg, 0);
- wsprintf(szWindowTitle, "%s - %s Log on \\\\%s", szTitle , lpLogName ,
lpComputerName);
- wsprintf(szStatusText, "%s has %d event(s)", lpLogName , dwTotalRecords);
+ wsprintf(szWindowTitle, _TEXT("%s - %s Log on \\\\%s"), szTitle, lpLogName,
lpComputerName);
+ wsprintf(szStatusText, _TEXT("%s has %d event(s)"), lpLogName,
dwTotalRecords);
// Update the status bar
SendMessage(hwndStatus, SB_SETTEXT, (WPARAM)0, (LPARAM)szStatusText);
@@ -766,7 +767,7 @@
hwndStatus = CreateWindowEx(0, // no extended
styles
STATUSCLASSNAME, // status bar
- "Done.", // no text
+ _TEXT("Done."), // no text
WS_CHILD | WS_BORDER | WS_VISIBLE, // styles
0, 0, 0, 0, // x, y, cx, cy
hwndMainWindow, // parent window
@@ -779,7 +780,7 @@
// LVS_EX_ styles cannot be set in CreateWindowEx().
hwndListView = CreateWindowEx(WS_EX_CLIENTEDGE,
WC_LISTVIEW,
- _T(""),
+ _TEXT(""),
LVS_SHOWSELALWAYS | WS_CHILD | WS_VISIBLE |
LVS_REPORT,
0,
0,
@@ -1013,23 +1014,23 @@
VOID
DisplayEvent(HWND hDlg)
{
- char szEventType[MAX_PATH];
- char szTime[MAX_PATH];
- char szDate[MAX_PATH];
- char szUser[MAX_PATH];
- char szComputer[MAX_PATH];
- char szSource[MAX_PATH];
- char szCategory[MAX_PATH];
- char szEventID[MAX_PATH];
- char szEventText[EVENT_MESSAGE_EVENTTEXT_BUFFER];
- char szEventData[MAX_PATH];
+ TCHAR szEventType[MAX_PATH];
+ TCHAR szTime[MAX_PATH];
+ TCHAR szDate[MAX_PATH];
+ TCHAR szUser[MAX_PATH];
+ TCHAR szComputer[MAX_PATH];
+ TCHAR szSource[MAX_PATH];
+ TCHAR szCategory[MAX_PATH];
+ TCHAR szEventID[MAX_PATH];
+ TCHAR szEventText[EVENT_MESSAGE_EVENTTEXT_BUFFER];
+ TCHAR szEventData[MAX_PATH];
BOOL bEventData = FALSE;
LVITEM li;
EVENTLOGRECORD* pevlr;
int iIndex;
// Get index of selected item
- iIndex = (int)SendMessage (hwndListView ,LVM_GETNEXTITEM, -1 , LVNI_SELECTED |
LVNI_FOCUSED);
+ iIndex = (int)SendMessage (hwndListView, LVM_GETNEXTITEM, -1, LVNI_SELECTED |
LVNI_FOCUSED);
li.mask = LVIF_PARAM;
li.iItem = iIndex;
@@ -1049,9 +1050,18 @@
ListView_GetItemText(hwndListView, iIndex, 5, szEventID, sizeof(szEventID));
ListView_GetItemText(hwndListView, iIndex, 6, szUser, sizeof(szUser));
ListView_GetItemText(hwndListView, iIndex, 7, szComputer, sizeof(szComputer));
- ListView_GetItemText(hwndListView, iIndex, 8, szEventData, sizeof(szEventData));
-
- bEventData = !(strlen(szEventData) == 0);
+
+ bEventData = !(pevlr->DataLength == 0);
+
+ if (pevlr->DataLength > 0)
+ {
+ MultiByteToWideChar(CP_ACP,
+ 0,
+ (LPCSTR)((LPBYTE)pevlr + pevlr->DataOffset),
+ pevlr->DataLength,
+ szEventData,
+ MAX_PATH);
+ }
GetEventMessage(lpSourceLogName, szSource, pevlr, szEventText);
@@ -1072,8 +1082,8 @@
else
{
MessageBox(NULL,
- "No Items in ListView",
- "Error",
+ _TEXT("No Items in ListView"),
+ _TEXT("Error"),
MB_OK | MB_ICONINFORMATION);
}
}
@@ -1113,47 +1123,42 @@
return (INT_PTR)TRUE;
case WM_COMMAND:
- if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
- {
- EndDialog(hDlg, LOWORD(wParam));
- return (INT_PTR)TRUE;
- }
-
- if (LOWORD(wParam) == IDPREVIOUS)
- {
- SendMessage(hwndListView, WM_KEYDOWN, VK_UP, 0);
-
- // Show event info on dialog box
- DisplayEvent(hDlg);
- return (INT_PTR)TRUE;
- }
-
- if (LOWORD(wParam) == IDNEXT)
- {
- SendMessage(hwndListView, WM_KEYDOWN, VK_DOWN, 0);
-
- // Show event info on dialog box
- DisplayEvent(hDlg);
- return (INT_PTR)TRUE;
- }
-
- if (LOWORD(wParam) == IDC_BYTESRADIO)
- {
- return (INT_PTR)TRUE;
- }
-
- if (LOWORD(wParam) == IDC_WORDRADIO)
- {
- return (INT_PTR)TRUE;
- }
-
- if (LOWORD(wParam) == IDHELP)
- {
- MessageBox(NULL,
- _TEXT("Help not implemented yet!"),
- _TEXT("Event Log"),
- MB_OK | MB_ICONINFORMATION);
- return (INT_PTR)TRUE;
+ switch (LOWORD(wParam))
+ {
+ case IDOK:
+ case IDCANCEL:
+ EndDialog(hDlg, LOWORD(wParam));
+ return (INT_PTR)TRUE;
+
+ case IDPREVIOUS:
+ SendMessage(hwndListView, WM_KEYDOWN, VK_UP, 0);
+
+ // Show event info on dialog box
+ DisplayEvent(hDlg);
+ return (INT_PTR)TRUE;
+
+ case IDNEXT:
+ SendMessage(hwndListView, WM_KEYDOWN, VK_DOWN, 0);
+
+ // Show event info on dialog box
+ DisplayEvent(hDlg);
+ return (INT_PTR)TRUE;
+
+ case IDC_BYTESRADIO:
+ return (INT_PTR)TRUE;
+
+ case IDC_WORDRADIO:
+ return (INT_PTR)TRUE;
+
+ case IDHELP:
+ MessageBox(NULL,
+ _TEXT("Help not implemented yet!"),
+ _TEXT("Event Log"),
+ MB_OK | MB_ICONINFORMATION);
+ return (INT_PTR)TRUE;
+
+ default:
+ break;
}
break;
}
Modified: trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rbuild [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/eventvwr/eventvwr.rbuild [iso-8859-1] Sat Nov
22 15:14:51 2008
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<rbuild
xmlns:xi="http://www.w3.org/2001/XInclude">
-<module name="eventvwr" type="win32gui"
installbase="system32" installname="eventvwr.exe"
allowwarnings="true">
+<module name="eventvwr" type="win32gui"
installbase="system32" installname="eventvwr.exe"
unicode="yes">
<include base="eventvwr">.</include>
<library>kernel32</library>
<library>user32</library>