diff options
Diffstat (limited to 'src/burn/engine/variable.cpp')
-rw-r--r-- | src/burn/engine/variable.cpp | 51 |
1 files changed, 27 insertions, 24 deletions
diff --git a/src/burn/engine/variable.cpp b/src/burn/engine/variable.cpp index 3947e29e..9b6fecaf 100644 --- a/src/burn/engine/variable.cpp +++ b/src/burn/engine/variable.cpp | |||
@@ -342,7 +342,6 @@ extern "C" HRESULT VariablesParseFromXml( | |||
342 | { | 342 | { |
343 | HRESULT hr = S_OK; | 343 | HRESULT hr = S_OK; |
344 | BOOL fXmlFound = FALSE; | 344 | BOOL fXmlFound = FALSE; |
345 | IXMLDOMNode* pixnCommandLine = NULL; | ||
346 | IXMLDOMNodeList* pixnNodes = NULL; | 345 | IXMLDOMNodeList* pixnNodes = NULL; |
347 | IXMLDOMNode* pixnNode = NULL; | 346 | IXMLDOMNode* pixnNode = NULL; |
348 | DWORD cNodes = 0; | 347 | DWORD cNodes = 0; |
@@ -356,27 +355,6 @@ extern "C" HRESULT VariablesParseFromXml( | |||
356 | 355 | ||
357 | ::EnterCriticalSection(&pVariables->csAccess); | 356 | ::EnterCriticalSection(&pVariables->csAccess); |
358 | 357 | ||
359 | // select command-line node | ||
360 | hr = XmlSelectSingleNode(pixnBundle, L"CommandLine", &pixnCommandLine); | ||
361 | ExitOnRequiredXmlQueryFailure(hr, "Failed to select CommandLine node."); | ||
362 | |||
363 | // @Variables | ||
364 | hr = XmlGetAttributeEx(pixnCommandLine, L"Variables", &scz); | ||
365 | ExitOnRequiredXmlQueryFailure(hr, "Failed to get CommandLine/@Variables."); | ||
366 | |||
367 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"upperCase", -1)) | ||
368 | { | ||
369 | pVariables->commandLineType = BURN_VARIABLE_COMMAND_LINE_TYPE_UPPER_CASE; | ||
370 | } | ||
371 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, scz, -1, L"caseSensitive", -1)) | ||
372 | { | ||
373 | pVariables->commandLineType = BURN_VARIABLE_COMMAND_LINE_TYPE_CASE_SENSITIVE; | ||
374 | } | ||
375 | else | ||
376 | { | ||
377 | ExitWithRootFailure(hr, E_INVALIDARG, "Invalid value for CommandLine/@Variables: %ls", scz); | ||
378 | } | ||
379 | |||
380 | // select variable nodes | 358 | // select variable nodes |
381 | hr = XmlSelectNodes(pixnBundle, L"Variable", &pixnNodes); | 359 | hr = XmlSelectNodes(pixnBundle, L"Variable", &pixnNodes); |
382 | ExitOnFailure(hr, "Failed to select variable nodes."); | 360 | ExitOnFailure(hr, "Failed to select variable nodes."); |
@@ -507,7 +485,6 @@ extern "C" HRESULT VariablesParseFromXml( | |||
507 | LExit: | 485 | LExit: |
508 | ::LeaveCriticalSection(&pVariables->csAccess); | 486 | ::LeaveCriticalSection(&pVariables->csAccess); |
509 | 487 | ||
510 | ReleaseObject(pixnCommandLine); | ||
511 | ReleaseObject(pixnNodes); | 488 | ReleaseObject(pixnNodes); |
512 | ReleaseObject(pixnNode); | 489 | ReleaseObject(pixnNode); |
513 | ReleaseStr(scz); | 490 | ReleaseStr(scz); |
@@ -1150,6 +1127,32 @@ LExit: | |||
1150 | return hr; | 1127 | return hr; |
1151 | } | 1128 | } |
1152 | 1129 | ||
1130 | extern "C" BOOL VariableIsHiddenCommandLine( | ||
1131 | __in BURN_VARIABLES* pVariables, | ||
1132 | __in_z LPCWSTR wzVariable | ||
1133 | ) | ||
1134 | { | ||
1135 | BURN_VARIABLE* pVariable = NULL; | ||
1136 | BOOL fHidden = FALSE; | ||
1137 | |||
1138 | ::EnterCriticalSection(&pVariables->csAccess); | ||
1139 | |||
1140 | for (DWORD i = 0; i < pVariables->cVariables; ++i) | ||
1141 | { | ||
1142 | pVariable = pVariables->rgVariables + i; | ||
1143 | |||
1144 | if (pVariable->fHidden && CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, pVariable->sczName, -1, wzVariable, -1)) | ||
1145 | { | ||
1146 | fHidden = TRUE; | ||
1147 | break; | ||
1148 | } | ||
1149 | } | ||
1150 | |||
1151 | ::LeaveCriticalSection(&pVariables->csAccess); | ||
1152 | |||
1153 | return fHidden; | ||
1154 | } | ||
1155 | |||
1153 | 1156 | ||
1154 | // internal function definitions | 1157 | // internal function definitions |
1155 | 1158 | ||
@@ -1587,7 +1590,7 @@ static HRESULT InsertUserVariable( | |||
1587 | 1590 | ||
1588 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, wzVariable, 3, L"Wix", 3)) | 1591 | if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, 0, wzVariable, 3, L"Wix", 3)) |
1589 | { | 1592 | { |
1590 | ExitWithRootFailure(hr, E_INVALIDARG, "Attempted to insert variable with reserved prefix: %ls", wzVariable); | 1593 | ExitWithRootFailure(hr, E_INVALIDARG, "Attempted to insert variable with reserved prefix: %ls", wzVariable); |
1591 | } | 1594 | } |
1592 | 1595 | ||
1593 | hr = InsertVariable(pVariables, wzVariable, iPosition); | 1596 | hr = InsertVariable(pVariables, wzVariable, iPosition); |