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>