Module: wine Branch: master Commit: 706b54daa75330df9f52f6f57e53b3e411cc95aa URL: http://source.winehq.org/git/wine.git/?a=commit;h=706b54daa75330df9f52f6f57e...
Author: Hans Leidekker hans@codeweavers.com Date: Fri Dec 24 15:31:43 2010 +0100
msi: Use a function to determine if a feature is selected.
---
dlls/msi/action.c | 25 +++++++++++++------------ 1 files changed, 13 insertions(+), 12 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c index db3eda8..c5661c0 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -1877,6 +1877,11 @@ static void ACTION_GetFeatureInstallStates(MSIPACKAGE *package) } }
+static inline BOOL is_feature_selected( MSIFEATURE *feature, INT level ) +{ + return (feature->Level > 0 && feature->Level <= level); +} + static BOOL process_state_property(MSIPACKAGE* package, int level, LPCWSTR property, INSTALLSTATE state) { @@ -1889,8 +1894,7 @@ static BOOL process_state_property(MSIPACKAGE* package, int level,
LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry ) { - if (strcmpW( property, szRemove ) && - (feature->Level <= 0 || feature->Level > level)) + if (strcmpW( property, szRemove ) && !is_feature_selected( feature, level )) continue;
if (!strcmpW(property, szReinstall)) state = feature->Installed; @@ -1981,10 +1985,9 @@ UINT MSI_SetFeatureStates(MSIPACKAGE *package) { LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry ) { - BOOL feature_state = ((feature->Level > 0) && - (feature->Level <= level)); + if (!is_feature_selected( feature, level )) continue;
- if (feature_state && feature->ActionRequest == INSTALLSTATE_UNKNOWN) + if (feature->ActionRequest == INSTALLSTATE_UNKNOWN) { if (feature->Attributes & msidbFeatureAttributesFavorSource) msi_feature_set_state(package, feature, INSTALLSTATE_SOURCE); @@ -2000,20 +2003,19 @@ UINT MSI_SetFeatureStates(MSIPACKAGE *package) { FeatureList *fl;
- if (feature->Level > 0 && feature->Level <= level) - continue; + if (is_feature_selected( feature, level )) continue;
LIST_FOR_EACH_ENTRY( fl, &feature->Children, FeatureList, entry ) msi_feature_set_state(package, fl->feature, INSTALLSTATE_UNKNOWN); } } - else + else /* preselected */ { LIST_FOR_EACH_ENTRY( feature, &package->features, MSIFEATURE, entry ) { - BOOL selected = feature->Level > 0 && feature->Level <= level; + if (!is_feature_selected( feature, level )) continue;
- if (selected && feature->ActionRequest == INSTALLSTATE_UNKNOWN) + if (feature->ActionRequest == INSTALLSTATE_UNKNOWN) { msi_feature_set_state(package, feature, feature->Installed); } @@ -2031,8 +2033,7 @@ UINT MSI_SetFeatureStates(MSIPACKAGE *package) debugstr_w(feature->Feature), feature->Level, feature->Installed, feature->ActionRequest, feature->Action);
- if (!feature->Level) - continue; + if (!is_feature_selected( feature, level )) continue;
/* features with components that have compressed files are made local */ LIST_FOR_EACH_ENTRY( cl, &feature->Components, ComponentList, entry )