diff options
Diffstat (limited to 'src/burn/engine/logging.cpp')
-rw-r--r-- | src/burn/engine/logging.cpp | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/src/burn/engine/logging.cpp b/src/burn/engine/logging.cpp index 2db7defd..6b19cc8a 100644 --- a/src/burn/engine/logging.cpp +++ b/src/burn/engine/logging.cpp | |||
@@ -15,7 +15,11 @@ static CONST LPWSTR LOG_FAILED_EVENT_LOG_MESSAGE = L"Burn Engine Fatal Error: fa | |||
15 | // internal function declarations | 15 | // internal function declarations |
16 | 16 | ||
17 | static void CheckLoggingPolicy( | 17 | static void CheckLoggingPolicy( |
18 | __out DWORD *pdwAttributes | 18 | __inout DWORD* pdwAttributes |
19 | ); | ||
20 | static HRESULT InitializeLogging( | ||
21 | __in BURN_LOGGING* pLog, | ||
22 | __in BURN_ENGINE_COMMAND* pInternalCommand | ||
19 | ); | 23 | ); |
20 | static HRESULT GetNonSessionSpecificTempFolder( | 24 | static HRESULT GetNonSessionSpecificTempFolder( |
21 | __deref_out_z LPWSTR* psczNonSessionTempFolder | 25 | __deref_out_z LPWSTR* psczNonSessionTempFolder |
@@ -26,8 +30,9 @@ static HRESULT GetNonSessionSpecificTempFolder( | |||
26 | 30 | ||
27 | extern "C" HRESULT LoggingOpen( | 31 | extern "C" HRESULT LoggingOpen( |
28 | __in BURN_LOGGING* pLog, | 32 | __in BURN_LOGGING* pLog, |
33 | __in BURN_ENGINE_COMMAND* pInternalCommand, | ||
34 | __in BOOTSTRAPPER_COMMAND* pCommand, | ||
29 | __in BURN_VARIABLES* pVariables, | 35 | __in BURN_VARIABLES* pVariables, |
30 | __in BOOTSTRAPPER_DISPLAY display, | ||
31 | __in_z LPCWSTR wzBundleName | 36 | __in_z LPCWSTR wzBundleName |
32 | ) | 37 | ) |
33 | { | 38 | { |
@@ -35,8 +40,8 @@ extern "C" HRESULT LoggingOpen( | |||
35 | LPWSTR sczLoggingBaseFolder = NULL; | 40 | LPWSTR sczLoggingBaseFolder = NULL; |
36 | LPWSTR sczPrefixFormatted = NULL; | 41 | LPWSTR sczPrefixFormatted = NULL; |
37 | 42 | ||
38 | // Check if the logging policy is set and configure the logging appropriately. | 43 | hr = InitializeLogging(pLog, pInternalCommand); |
39 | CheckLoggingPolicy(&pLog->dwAttributes); | 44 | ExitOnFailure(hr, "Failed to initialize logging."); |
40 | 45 | ||
41 | if (pLog->dwAttributes & BURN_LOGGING_ATTRIBUTE_VERBOSE || pLog->dwAttributes & BURN_LOGGING_ATTRIBUTE_EXTRADEBUG) | 46 | if (pLog->dwAttributes & BURN_LOGGING_ATTRIBUTE_VERBOSE || pLog->dwAttributes & BURN_LOGGING_ATTRIBUTE_EXTRADEBUG) |
42 | { | 47 | { |
@@ -94,7 +99,7 @@ extern "C" HRESULT LoggingOpen( | |||
94 | HRESULT hrOriginal = hr; | 99 | HRESULT hrOriginal = hr; |
95 | 100 | ||
96 | hr = HRESULT_FROM_WIN32(ERROR_INSTALL_LOG_FAILURE); | 101 | hr = HRESULT_FROM_WIN32(ERROR_INSTALL_LOG_FAILURE); |
97 | SplashScreenDisplayError(display, wzBundleName, hr); | 102 | SplashScreenDisplayError(pCommand->display, wzBundleName, hr); |
98 | 103 | ||
99 | ExitOnFailure(hrOriginal, "Failed to open log: %ls", pLog->sczPath); | 104 | ExitOnFailure(hrOriginal, "Failed to open log: %ls", pLog->sczPath); |
100 | } | 105 | } |
@@ -709,7 +714,7 @@ extern "C" LPWSTR LoggingStringOrUnknownIfNull( | |||
709 | // internal function declarations | 714 | // internal function declarations |
710 | 715 | ||
711 | static void CheckLoggingPolicy( | 716 | static void CheckLoggingPolicy( |
712 | __out DWORD *pdwAttributes | 717 | __inout DWORD *pdwAttributes |
713 | ) | 718 | ) |
714 | { | 719 | { |
715 | HRESULT hr = S_OK; | 720 | HRESULT hr = S_OK; |
@@ -743,6 +748,28 @@ static void CheckLoggingPolicy( | |||
743 | ReleaseRegKey(hk); | 748 | ReleaseRegKey(hk); |
744 | } | 749 | } |
745 | 750 | ||
751 | static HRESULT InitializeLogging( | ||
752 | __in BURN_LOGGING* pLog, | ||
753 | __in BURN_ENGINE_COMMAND* pInternalCommand | ||
754 | ) | ||
755 | { | ||
756 | HRESULT hr = S_OK; | ||
757 | |||
758 | // Check if the logging policy is set and configure the logging appropriately. | ||
759 | CheckLoggingPolicy(&pLog->dwAttributes); | ||
760 | |||
761 | pLog->dwAttributes |= pInternalCommand->dwLoggingAttributes; | ||
762 | |||
763 | if (pInternalCommand->sczLogFile) | ||
764 | { | ||
765 | hr = StrAllocString(&pLog->sczPath, pInternalCommand->sczLogFile, 0); | ||
766 | ExitOnFailure(hr, "Failed to copy log file path from command line."); | ||
767 | } | ||
768 | |||
769 | LExit: | ||
770 | return hr; | ||
771 | } | ||
772 | |||
746 | static HRESULT GetNonSessionSpecificTempFolder( | 773 | static HRESULT GetNonSessionSpecificTempFolder( |
747 | __deref_out_z LPWSTR* psczNonSessionTempFolder | 774 | __deref_out_z LPWSTR* psczNonSessionTempFolder |
748 | ) | 775 | ) |