diff options
Diffstat (limited to 'src/burn/engine/core.cpp')
| -rw-r--r-- | src/burn/engine/core.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/burn/engine/core.cpp b/src/burn/engine/core.cpp index 0bbf7039..be8c011f 100644 --- a/src/burn/engine/core.cpp +++ b/src/burn/engine/core.cpp | |||
| @@ -1044,6 +1044,12 @@ static HRESULT CoreRecreateCommandLine( | |||
| 1044 | ExitOnFailure(hr, "Failed to append relation type to command-line."); | 1044 | ExitOnFailure(hr, "Failed to append relation type to command-line."); |
| 1045 | } | 1045 | } |
| 1046 | 1046 | ||
| 1047 | if (pInternalCommand->fArpSystemComponent) | ||
| 1048 | { | ||
| 1049 | hr = StrAllocConcatFormatted(psczCommandLine, L" /%ls", BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT); | ||
| 1050 | ExitOnFailure(hr, "Failed to append system component to command-line."); | ||
| 1051 | } | ||
| 1052 | |||
| 1047 | if (fPassthrough) | 1053 | if (fPassthrough) |
| 1048 | { | 1054 | { |
| 1049 | hr = StrAllocConcatFormatted(psczCommandLine, L" /%ls", BURN_COMMANDLINE_SWITCH_PASSTHROUGH); | 1055 | hr = StrAllocConcatFormatted(psczCommandLine, L" /%ls", BURN_COMMANDLINE_SWITCH_PASSTHROUGH); |
| @@ -1633,6 +1639,29 @@ extern "C" HRESULT CoreParseCommandLine( | |||
| 1633 | } | 1639 | } |
| 1634 | } | 1640 | } |
| 1635 | } | 1641 | } |
| 1642 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], lstrlenW(BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT), BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT, lstrlenW(BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT))) | ||
| 1643 | { | ||
| 1644 | // Get a pointer to the next character after the switch. | ||
| 1645 | LPCWSTR wzParam = &argv[i][1 + lstrlenW(BURN_COMMANDLINE_SWITCH_SYSTEM_COMPONENT)]; | ||
| 1646 | |||
| 1647 | // Switch without an argument is allowed. An empty string means FALSE, everything else means TRUE. | ||
| 1648 | if (L'\0' != wzParam[0]) | ||
| 1649 | { | ||
| 1650 | if (L'=' != wzParam[0]) | ||
| 1651 | { | ||
| 1652 | fInvalidCommandLine = TRUE; | ||
| 1653 | TraceLog(E_INVALIDARG, "Invalid switch: %ls", argv[i]); | ||
| 1654 | } | ||
| 1655 | else | ||
| 1656 | { | ||
| 1657 | pInternalCommand->fArpSystemComponent = L'\0' != wzParam[1]; | ||
| 1658 | } | ||
| 1659 | } | ||
| 1660 | else | ||
| 1661 | { | ||
| 1662 | pInternalCommand->fArpSystemComponent = TRUE; | ||
| 1663 | } | ||
| 1664 | } | ||
| 1636 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], -1, BURN_COMMANDLINE_SWITCH_EMBEDDED, -1)) | 1665 | else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], -1, BURN_COMMANDLINE_SWITCH_EMBEDDED, -1)) |
| 1637 | { | 1666 | { |
| 1638 | if (i + 3 >= argc) | 1667 | if (i + 3 >= argc) |
