aboutsummaryrefslogtreecommitdiff
path: root/src/engine/dependency.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/dependency.cpp')
-rw-r--r--src/engine/dependency.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/engine/dependency.cpp b/src/engine/dependency.cpp
index 51aca239..1bd0c7d4 100644
--- a/src/engine/dependency.cpp
+++ b/src/engine/dependency.cpp
@@ -19,7 +19,8 @@ static HRESULT DetectPackageDependents(
19static HRESULT SplitIgnoreDependencies( 19static HRESULT SplitIgnoreDependencies(
20 __in_z LPCWSTR wzIgnoreDependencies, 20 __in_z LPCWSTR wzIgnoreDependencies,
21 __deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies, 21 __deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies,
22 __inout LPUINT pcDependencies 22 __inout LPUINT pcDependencies,
23 __out BOOL* pfIgnoreAll
23 ); 24 );
24 25
25static HRESULT JoinIgnoreDependencies( 26static HRESULT JoinIgnoreDependencies(
@@ -194,7 +195,7 @@ extern "C" HRESULT DependencyInitialize(
194 // Add the list of dependencies to ignore. 195 // Add the list of dependencies to ignore.
195 if (wzIgnoreDependencies) 196 if (wzIgnoreDependencies)
196 { 197 {
197 hr = SplitIgnoreDependencies(wzIgnoreDependencies, &pRegistration->rgIgnoredDependencies, &pRegistration->cIgnoredDependencies); 198 hr = SplitIgnoreDependencies(wzIgnoreDependencies, &pRegistration->rgIgnoredDependencies, &pRegistration->cIgnoredDependencies, &pRegistration->fIgnoreAllDependents);
198 ExitOnFailure(hr, "Failed to split the list of dependencies to ignore."); 199 ExitOnFailure(hr, "Failed to split the list of dependencies to ignore.");
199 } 200 }
200 201
@@ -816,12 +817,14 @@ LExit:
816static HRESULT SplitIgnoreDependencies( 817static HRESULT SplitIgnoreDependencies(
817 __in_z LPCWSTR wzIgnoreDependencies, 818 __in_z LPCWSTR wzIgnoreDependencies,
818 __deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies, 819 __deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies,
819 __inout LPUINT pcDependencies 820 __inout LPUINT pcDependencies,
821 __out BOOL* pfIgnoreAll
820 ) 822 )
821{ 823{
822 HRESULT hr = S_OK; 824 HRESULT hr = S_OK;
823 LPWSTR wzContext = NULL; 825 LPWSTR wzContext = NULL;
824 STRINGDICT_HANDLE sdIgnoreDependencies = NULL; 826 STRINGDICT_HANDLE sdIgnoreDependencies = NULL;
827 *pfIgnoreAll = FALSE;
825 828
826 // Create a dictionary to hold unique dependencies. 829 // Create a dictionary to hold unique dependencies.
827 hr = DictCreateStringList(&sdIgnoreDependencies, INITIAL_STRINGDICT_SIZE, DICT_FLAG_CASEINSENSITIVE); 830 hr = DictCreateStringList(&sdIgnoreDependencies, INITIAL_STRINGDICT_SIZE, DICT_FLAG_CASEINSENSITIVE);
@@ -842,6 +845,11 @@ static HRESULT SplitIgnoreDependencies(
842 845
843 hr = DictAddKey(sdIgnoreDependencies, wzToken); 846 hr = DictAddKey(sdIgnoreDependencies, wzToken);
844 ExitOnFailure(hr, "Failed to add \"%ls\" to the string dictionary.", wzToken); 847 ExitOnFailure(hr, "Failed to add \"%ls\" to the string dictionary.", wzToken);
848
849 if (!*pfIgnoreAll && CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, NORM_IGNORECASE, L"ALL", -1, wzToken, -1))
850 {
851 *pfIgnoreAll = TRUE;
852 }
845 } 853 }
846 } 854 }
847 855