From 9bb420a19538321789b8300051cd595d6c00c710 Mon Sep 17 00:00:00 2001
From: Sean Hall <r.sean.hall@gmail.com>
Date: Mon, 21 Mar 2022 23:19:46 -0500
Subject: Add related command line switches for DEPENDENT_ADDON,
 DEPENDENT_PATCH.

Implements 4504, needed for 3796/6252
---
 src/burn/engine/core.cpp | 20 ++++++++++++++++++--
 src/burn/engine/core.h   |  2 ++
 2 files changed, 20 insertions(+), 2 deletions(-)

(limited to 'src/burn')

diff --git a/src/burn/engine/core.cpp b/src/burn/engine/core.cpp
index becece86..e077d224 100644
--- a/src/burn/engine/core.cpp
+++ b/src/burn/engine/core.cpp
@@ -945,8 +945,12 @@ extern "C" LPCWSTR CoreRelationTypeToCommandLineString(
     case BOOTSTRAPPER_RELATION_UPDATE:
         wzRelationTypeCommandLine = BURN_COMMANDLINE_SWITCH_RELATED_UPDATE;
         break;
-    case BOOTSTRAPPER_RELATION_DEPENDENT_ADDON: __fallthrough;
-    case BOOTSTRAPPER_RELATION_DEPENDENT_PATCH: __fallthrough;
+    case BOOTSTRAPPER_RELATION_DEPENDENT_ADDON:
+        wzRelationTypeCommandLine = BURN_COMMANDLINE_SWITCH_RELATED_DEPENDENT_ADDON;
+        break;
+    case BOOTSTRAPPER_RELATION_DEPENDENT_PATCH:
+        wzRelationTypeCommandLine = BURN_COMMANDLINE_SWITCH_RELATED_DEPENDENT_PATCH;
+        break;
     case BOOTSTRAPPER_RELATION_NONE: __fallthrough;
     default:
         wzRelationTypeCommandLine = NULL;
@@ -1676,12 +1680,24 @@ extern "C" HRESULT CoreParseCommandLine(
 
                 LogId(REPORT_STANDARD, MSG_BURN_RUN_BY_RELATED_BUNDLE, LoggingRelationTypeToString(pCommand->relationType));
             }
+            else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], -1, BURN_COMMANDLINE_SWITCH_RELATED_DEPENDENT_ADDON, -1))
+            {
+                pCommand->relationType = BOOTSTRAPPER_RELATION_DEPENDENT_ADDON;
+
+                LogId(REPORT_STANDARD, MSG_BURN_RUN_BY_RELATED_BUNDLE, LoggingRelationTypeToString(pCommand->relationType));
+            }
             else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], -1, BURN_COMMANDLINE_SWITCH_RELATED_PATCH, -1))
             {
                 pCommand->relationType = BOOTSTRAPPER_RELATION_PATCH;
 
                 LogId(REPORT_STANDARD, MSG_BURN_RUN_BY_RELATED_BUNDLE, LoggingRelationTypeToString(pCommand->relationType));
             }
+            else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], -1, BURN_COMMANDLINE_SWITCH_RELATED_DEPENDENT_PATCH, -1))
+            {
+                pCommand->relationType = BOOTSTRAPPER_RELATION_DEPENDENT_PATCH;
+
+                LogId(REPORT_STANDARD, MSG_BURN_RUN_BY_RELATED_BUNDLE, LoggingRelationTypeToString(pCommand->relationType));
+            }
             else if (CSTR_EQUAL == ::CompareStringW(LOCALE_INVARIANT, NORM_IGNORECASE, &argv[i][1], -1, BURN_COMMANDLINE_SWITCH_RELATED_UPDATE, -1))
             {
                 pCommand->relationType = BOOTSTRAPPER_RELATION_UPDATE;
diff --git a/src/burn/engine/core.h b/src/burn/engine/core.h
index 6ba1aa2a..cee71aec 100644
--- a/src/burn/engine/core.h
+++ b/src/burn/engine/core.h
@@ -23,7 +23,9 @@ const LPCWSTR BURN_COMMANDLINE_SWITCH_LOG_MODE = L"burn.log.mode";
 const LPCWSTR BURN_COMMANDLINE_SWITCH_RELATED_DETECT = L"burn.related.detect";
 const LPCWSTR BURN_COMMANDLINE_SWITCH_RELATED_UPGRADE = L"burn.related.upgrade";
 const LPCWSTR BURN_COMMANDLINE_SWITCH_RELATED_ADDON = L"burn.related.addon";
+const LPCWSTR BURN_COMMANDLINE_SWITCH_RELATED_DEPENDENT_ADDON = L"burn.related.dependent.addon";
 const LPCWSTR BURN_COMMANDLINE_SWITCH_RELATED_PATCH = L"burn.related.patch";
+const LPCWSTR BURN_COMMANDLINE_SWITCH_RELATED_DEPENDENT_PATCH = L"burn.related.dependent.patch";
 const LPCWSTR BURN_COMMANDLINE_SWITCH_RELATED_UPDATE = L"burn.related.update";
 const LPCWSTR BURN_COMMANDLINE_SWITCH_PASSTHROUGH = L"burn.passthrough";
 const LPCWSTR BURN_COMMANDLINE_SWITCH_DISABLE_UNELEVATE = L"burn.disable.unelevate";
-- 
cgit v1.2.3-55-g6feb