From 775cef8b4c6723fdff10a7c3e4db11e373c45026 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 4 Feb 2012 11:34:13 +0000 Subject: [PATCH] [EVENTLOG] - Change LogfInitializeNew and LogfInitializeExisting to return an NTSTATUS code instead of a BOOL value. - LogfInitializeExisting no longer calls LogfInitializeNew when reading a log file fails but returns a proper status code instead. svn path=/trunk/; revision=55406 --- reactos/base/services/eventlog/eventlog.h | 4 -- reactos/base/services/eventlog/file.c | 66 +++++++++++------------ 2 files changed, 33 insertions(+), 37 deletions(-) diff --git a/reactos/base/services/eventlog/eventlog.h b/reactos/base/services/eventlog/eventlog.h index 613998f933b..4f1059328ea 100644 --- a/reactos/base/services/eventlog/eventlog.h +++ b/reactos/base/services/eventlog/eventlog.h @@ -168,10 +168,6 @@ LogfClose(PLOGFILE LogFile, VOID LogfCloseAll(VOID); -BOOL LogfInitializeNew(PLOGFILE LogFile); - -BOOL LogfInitializeExisting(PLOGFILE LogFile); - DWORD LogfGetOldestRecord(PLOGFILE LogFile); DWORD LogfGetCurrentRecord(PLOGFILE LogFile); diff --git a/reactos/base/services/eventlog/file.c b/reactos/base/services/eventlog/file.c index 30d935e05de..306617d3ba9 100644 --- a/reactos/base/services/eventlog/file.c +++ b/reactos/base/services/eventlog/file.c @@ -18,7 +18,8 @@ static CRITICAL_SECTION LogFileListCs; /* FUNCTIONS ****************************************************************/ -BOOL LogfInitializeNew(PLOGFILE LogFile) +static NTSTATUS +LogfInitializeNew(PLOGFILE LogFile) { DWORD dwWritten; EVENTLOGEOF EofRec; @@ -46,7 +47,7 @@ BOOL LogfInitializeNew(PLOGFILE LogFile) NULL)) { DPRINT1("WriteFile failed:%d!\n", GetLastError()); - return FALSE; + return STATUS_UNSUCCESSFUL; } EofRec.Ones = 0x11111111; @@ -67,19 +68,21 @@ BOOL LogfInitializeNew(PLOGFILE LogFile) NULL)) { DPRINT1("WriteFile failed:%d!\n", GetLastError()); - return FALSE; + return STATUS_UNSUCCESSFUL; } if (!FlushFileBuffers(LogFile->hFile)) { DPRINT1("FlushFileBuffers failed:%d!\n", GetLastError()); - return FALSE; + return STATUS_UNSUCCESSFUL; } - return TRUE; + return STATUS_SUCCESS; } -BOOL LogfInitializeExisting(PLOGFILE LogFile) + +static NTSTATUS +LogfInitializeExisting(PLOGFILE LogFile) { DWORD dwRead; DWORD dwRecordsNumber = 0; @@ -94,7 +97,7 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) INVALID_SET_FILE_POINTER) { DPRINT1("SetFilePointer failed! %d\n", GetLastError()); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } if (!ReadFile(LogFile->hFile, @@ -104,34 +107,34 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) NULL)) { DPRINT1("ReadFile failed! %d\n", GetLastError()); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } if (dwRead != sizeof(EVENTLOGHEADER)) { DPRINT("EventLog: Invalid file %S.\n", LogFile->FileName); - return LogfInitializeNew(LogFile); + return STATUS_EVENTLOG_FILE_CORRUPT; } if (LogFile->Header.HeaderSize != sizeof(EVENTLOGHEADER) || LogFile->Header.EndHeaderSize != sizeof(EVENTLOGHEADER)) { DPRINT("EventLog: Invalid header size in %S.\n", LogFile->FileName); - return LogfInitializeNew(LogFile); + return STATUS_EVENTLOG_FILE_CORRUPT; } if (LogFile->Header.Signature != LOGFILE_SIGNATURE) { DPRINT("EventLog: Invalid signature %x in %S.\n", LogFile->Header.Signature, LogFile->FileName); - return LogfInitializeNew(LogFile); + return STATUS_EVENTLOG_FILE_CORRUPT; } if (LogFile->Header.EndOffset > GetFileSize(LogFile->hFile, NULL) + 1) { DPRINT("EventLog: Invalid eof offset %x in %S.\n", LogFile->Header.EndOffset, LogFile->FileName); - return LogfInitializeNew(LogFile); + return STATUS_EVENTLOG_FILE_CORRUPT; } /* Set the read location to the oldest record */ @@ -139,7 +142,7 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) if (dwFilePointer == INVALID_SET_FILE_POINTER) { DPRINT1("SetFilePointer failed! %d\n", GetLastError()); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } for (;;) @@ -149,7 +152,7 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) if (dwFilePointer == INVALID_SET_FILE_POINTER) { DPRINT1("SetFilePointer failed! %d\n", GetLastError()); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } /* If the EVENTLOGEOF info has been reached and the oldest record was not immediately after the Header */ @@ -167,7 +170,7 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) NULL)) { DPRINT1("ReadFile failed! %d\n", GetLastError()); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } if (dwRead != sizeof(dwRecSize)) @@ -180,7 +183,7 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) NULL)) { DPRINT1("ReadFile() failed! %d\n", GetLastError()); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } if (dwRead != sizeof(dwRecSize)) @@ -199,22 +202,21 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) FILE_CURRENT) == INVALID_SET_FILE_POINTER) { DPRINT1("SetFilePointer() failed! %d", GetLastError()); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } RecBuf = (PEVENTLOGRECORD) HeapAlloc(MyHeap, 0, dwRecSize); - - if (!RecBuf) + if (RecBuf == NULL) { DPRINT1("Can't allocate heap!\n"); - return FALSE; + return STATUS_NO_MEMORY; } if (!ReadFile(LogFile->hFile, RecBuf, dwRecSize, &dwRead, NULL)) { DPRINT1("ReadFile() failed! %d\n", GetLastError()); HeapFree(MyHeap, 0, RecBuf); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } if (dwRead != dwRecSize) @@ -248,7 +250,7 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) { DPRINT1("LogfAddOffsetInformation() failed!\n"); HeapFree(MyHeap, 0, RecBuf); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } HeapFree(MyHeap, 0, RecBuf); @@ -266,7 +268,7 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) INVALID_SET_FILE_POINTER) { DPRINT1("SetFilePointer() failed! %d\n", GetLastError()); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } if (!WriteFile(LogFile->hFile, @@ -276,16 +278,16 @@ BOOL LogfInitializeExisting(PLOGFILE LogFile) NULL)) { DPRINT1("WriteFile failed! %d\n", GetLastError()); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } if (!FlushFileBuffers(LogFile->hFile)) { DPRINT1("FlushFileBuffers failed! %d\n", GetLastError()); - return FALSE; + return STATUS_EVENTLOG_FILE_CORRUPT; } - return TRUE; + return STATUS_SUCCESS; } @@ -299,7 +301,7 @@ LogfCreate(PLOGFILE *LogFile, OBJECT_ATTRIBUTES ObjectAttributes; IO_STATUS_BLOCK IoStatusBlock; PLOGFILE pLogFile; - BOOL bResult, bCreateNew = FALSE; + BOOL bCreateNew = FALSE; NTSTATUS Status = STATUS_SUCCESS; pLogFile = (LOGFILE *) HeapAlloc(MyHeap, HEAP_ZERO_MEMORY, sizeof(LOGFILE)); @@ -376,15 +378,12 @@ LogfCreate(PLOGFILE *LogFile, pLogFile->Permanent = Permanent; if (bCreateNew) - bResult = LogfInitializeNew(pLogFile); + Status = LogfInitializeNew(pLogFile); else - bResult = LogfInitializeExisting(pLogFile); + Status = LogfInitializeExisting(pLogFile); - if (!bResult) - { - Status = STATUS_UNSUCCESSFUL; + if (!NT_SUCCESS(Status)) goto fail; - } RtlInitializeResource(&pLogFile->Lock); @@ -415,6 +414,7 @@ LogfCreate(PLOGFILE *LogFile, return Status; } + VOID LogfClose(PLOGFILE LogFile, BOOL ForceClose)