framework/source/services/substitutepathvars.cxx | 107 ++++++++++------------- 1 file changed, 49 insertions(+), 58 deletions(-)
New commits: commit 120d8fc75c164555058d63ef7dca8bfbd8316a5a Author: Stephan Bergmann <[email protected]> Date: Tue Sep 27 15:45:20 2016 +0200 Use FixedVariable::bAbsPath to check for special path vars Change-Id: I526c45ecf3c7e21b87c16eef5047707f74da7668 diff --git a/framework/source/services/substitutepathvars.cxx b/framework/source/services/substitutepathvars.cxx index cd6bead..4d02998 100644 --- a/framework/source/services/substitutepathvars.cxx +++ b/framework/source/services/substitutepathvars.cxx @@ -1091,9 +1091,7 @@ throw ( RuntimeException ) if ( nPos >= 0 ) { bool bMatch = true; - if ( i.eVariable == PREDEFVAR_USERNAME || - i.eVariable == PREDEFVAR_LANGID || - i.eVariable == PREDEFVAR_VLANG ) + if ( !aFixedVarTable[i.eVariable].bAbsPath ) { // Special path variables as they can occur in the middle of a path. Only match if they // describe a whole directory and not only a substring of a directory! commit 02f114096d56f717da4b1665b1d2d3a9dac20f4e Author: Stephan Bergmann <[email protected]> Date: Tue Sep 27 15:39:28 2016 +0200 Remove redundant FixedVariable::nEnumValue Change-Id: I39a2a65e06cdf421786fbbfedecad604fcb3abd2 diff --git a/framework/source/services/substitutepathvars.cxx b/framework/source/services/substitutepathvars.cxx index 833c6d4..cd6bead 100644 --- a/framework/source/services/substitutepathvars.cxx +++ b/framework/source/services/substitutepathvars.cxx @@ -184,6 +184,40 @@ enum PreDefVariable PREDEFVAR_COUNT }; +struct FixedVariable +{ + const char* pVarName; + bool bAbsPath; +}; + +// Table with all fixed/predefined variables supported. +static const FixedVariable aFixedVarTable[PREDEFVAR_COUNT] = +{ + { "$(inst)", true }, // PREDEFVAR_INST + { "$(prog)", true }, // PREDEFVAR_PROG + { "$(user)", true }, // PREDEFVAR_USER + { "$(work)", true }, // PREDEFVAR_WORK, special variable + // (transient) + { "$(home)", true }, // PREDEFVAR_HOME + { "$(temp)", true }, // PREDEFVAR_TEMP + { "$(path)", true }, // PREDEFVAR_PATH + { "$(username)", false }, // PREDEFVAR_USERNAME + { "$(langid)", false }, // PREDEFVAR_LANGID + { "$(vlang)", false }, // PREDEFVAR_VLANG + { "$(instpath)", true }, // PREDEFVAR_INSTPATH + { "$(progpath)", true }, // PREDEFVAR_PROGPATH + { "$(userpath)", true }, // PREDEFVAR_USERPATH + { "$(insturl)", true }, // PREDEFVAR_INSTURL + { "$(progurl)", true }, // PREDEFVAR_PROGURL + { "$(userurl)", true }, // PREDEFVAR_USERURL + { "$(workdirurl)", true }, // PREDEFVAR_WORKDIRURL, special variable + // (transient) and don't use for + // resubstitution + { "$(baseinsturl)", true }, // PREDEFVAR_BASEINSTURL + { "$(userdataurl)", true }, // PREDEFVAR_USERDATAURL + { "$(brandbaseurl)", true } // PREDEFVAR_BRANDBASEURL +}; + struct PredefinedPathVariables { // Predefined variables supported by substitute variables @@ -288,13 +322,6 @@ private: css::uno::Reference< css::uno::XComponentContext > m_xContext; }; -struct FixedVariable -{ - const char* pVarName; - PreDefVariable nEnumValue; - bool bAbsPath; -}; - struct TableEntry { const char* pOSString; @@ -339,31 +366,6 @@ static const sal_Int16 aEnvPrioTable[ET_COUNT] = 99, // ET_UNKNOWN }; -// Table with all fixed/predefined variables supported. -static const FixedVariable aFixedVarTable[] = -{ - { "$(inst)", PREDEFVAR_INST, true }, - { "$(prog)", PREDEFVAR_PROG, true }, - { "$(user)", PREDEFVAR_USER, true }, - { "$(work)", PREDEFVAR_WORK, true }, // Special variable (transient)! - { "$(home)", PREDEFVAR_HOME, true }, - { "$(temp)", PREDEFVAR_TEMP, true }, - { "$(path)", PREDEFVAR_PATH, true }, - { "$(username)", PREDEFVAR_USERNAME, false }, - { "$(langid)", PREDEFVAR_LANGID, false }, - { "$(vlang)", PREDEFVAR_VLANG, false }, - { "$(instpath)", PREDEFVAR_INSTPATH, true }, - { "$(progpath)", PREDEFVAR_PROGPATH, true }, - { "$(userpath)", PREDEFVAR_USERPATH, true }, - { "$(insturl)", PREDEFVAR_INSTURL, true }, - { "$(progurl)", PREDEFVAR_PROGURL, true }, - { "$(userurl)", PREDEFVAR_USERURL, true }, - { "$(workdirurl)", PREDEFVAR_WORKDIRURL, true }, // Special variable (transient) and don't use for resubstitution! - { "$(baseinsturl)", PREDEFVAR_BASEINSTURL, true }, - { "$(userdataurl)", PREDEFVAR_USERDATAURL, true }, - { "$(brandbaseurl)",PREDEFVAR_BRANDBASEURL, true } -}; - // Implementation helper classes OperatingSystem SubstitutePathVariables_Impl::GetOperatingSystemFromString( const OUString& aOSString ) @@ -723,7 +725,7 @@ SubstitutePathVariables::SubstitutePathVariables( const Reference< XComponentCon // Create hash map entry m_aPreDefVarMap.insert( VarNameToIndexMap::value_type( - m_aPreDefVars.m_FixedVarNames[i], aFixedVarTable[i].nEnumValue ) ); + m_aPreDefVars.m_FixedVarNames[i], PreDefVariable(i) ) ); } // Sort predefined/fixed variable to path length @@ -736,7 +738,7 @@ SubstitutePathVariables::SubstitutePathVariables( const Reference< XComponentCon // and it could be possible that it will be resubstituted by itself!! // Example: WORK_PATH=c:\test, $(workdirurl)=WORK_PATH => WORK_PATH=$(workdirurl) and this cannot be substituted! ReSubstFixedVarOrder aFixedVar; - aFixedVar.eVariable = aFixedVarTable[i].nEnumValue; + aFixedVar.eVariable = PreDefVariable(i); aFixedVar.nVarValueLength = m_aPreDefVars.m_FixedVar[(sal_Int32)aFixedVar.eVariable].getLength(); m_aReSubstFixedVarOrder.push_back( aFixedVar ); } commit 02c079fc4f111865252fb89d705361792b289caf Author: Stephan Bergmann <[email protected]> Date: Tue Sep 27 15:26:20 2016 +0200 Remove unnecessary typedefs Change-Id: I0c65720a3db88242bdf36338864f6961478f547f diff --git a/framework/source/services/substitutepathvars.cxx b/framework/source/services/substitutepathvars.cxx index 05324ad..833c6d4 100644 --- a/framework/source/services/substitutepathvars.cxx +++ b/framework/source/services/substitutepathvars.cxx @@ -216,8 +216,6 @@ struct ReSubstUserVarOrder } }; -typedef std::list< ReSubstFixedVarOrder > ReSubstFixedVarOrderVector; -typedef std::list< ReSubstUserVarOrder > ReSubstUserVarOrderVector; typedef ::cppu::WeakComponentImplHelper< css::util::XStringSubstitution, css::lang::XServiceInfo > SubstitutePathVariables_BASE; @@ -285,8 +283,8 @@ private: SubstituteVariables m_aSubstVarMap; // Active rule set map indexed by variable name! PredefinedPathVariables m_aPreDefVars; // All predefined variables SubstitutePathVariables_Impl m_aImpl; // Implementation class that access the configuration - ReSubstFixedVarOrderVector m_aReSubstFixedVarOrder; // To speed up resubstitution fixed variables (order for lookup) - ReSubstUserVarOrderVector m_aReSubstUserVarOrder; // To speed up resubstitution user variables + std::list<ReSubstFixedVarOrder> m_aReSubstFixedVarOrder; // To speed up resubstitution fixed variables (order for lookup) + std::list<ReSubstUserVarOrder> m_aReSubstUserVarOrder; // To speed up resubstitution user variables css::uno::Reference< css::uno::XComponentContext > m_xContext; }; commit da2e1ea7d4a919a13caf159d1afce13843f7a621 Author: Stephan Bergmann <[email protected]> Date: Tue Sep 27 15:24:35 2016 +0200 Use range-based for Change-Id: If112967db4828f8570692af5dbbbd9e3c2a837aa diff --git a/framework/source/services/substitutepathvars.cxx b/framework/source/services/substitutepathvars.cxx index bc94563..05324ad 100644 --- a/framework/source/services/substitutepathvars.cxx +++ b/framework/source/services/substitutepathvars.cxx @@ -746,12 +746,11 @@ SubstitutePathVariables::SubstitutePathVariables( const Reference< XComponentCon m_aReSubstFixedVarOrder.sort(); // Sort user variables to path length - SubstituteVariables::const_iterator pIter; - for ( pIter = m_aSubstVarMap.begin(); pIter != m_aSubstVarMap.end(); ++pIter ) + for (auto const & i: m_aSubstVarMap) { ReSubstUserVarOrder aUserOrderVar; - aUserOrderVar.aVarName = "$(" + pIter->second.aSubstVariable + ")"; - aUserOrderVar.nVarValueLength = pIter->second.aSubstVariable.getLength(); + aUserOrderVar.aVarName = "$(" + i.second.aSubstVariable + ")"; + aUserOrderVar.nVarValueLength = i.second.aSubstVariable.getLength(); m_aReSubstUserVarOrder.push_back( aUserOrderVar ); } m_aReSubstUserVarOrder.sort(); @@ -1085,18 +1084,16 @@ throw ( RuntimeException ) { bool bVariableFound = false; - for (ReSubstFixedVarOrderVector::const_iterator i( - m_aReSubstFixedVarOrder.begin()); - i != m_aReSubstFixedVarOrder.end(); ++i) + for (auto const & i: m_aReSubstFixedVarOrder) { - OUString aValue = m_aPreDefVars.m_FixedVar[i->eVariable]; + OUString aValue = m_aPreDefVars.m_FixedVar[i.eVariable]; sal_Int32 nPos = aURL.indexOf( aValue ); if ( nPos >= 0 ) { bool bMatch = true; - if ( i->eVariable == PREDEFVAR_USERNAME || - i->eVariable == PREDEFVAR_LANGID || - i->eVariable == PREDEFVAR_VLANG ) + if ( i.eVariable == PREDEFVAR_USERNAME || + i.eVariable == PREDEFVAR_LANGID || + i.eVariable == PREDEFVAR_VLANG ) { // Special path variables as they can occur in the middle of a path. Only match if they // describe a whole directory and not only a substring of a directory! @@ -1123,7 +1120,7 @@ throw ( RuntimeException ) { aURL = aURL.replaceAt( nPos, aValue.getLength(), - m_aPreDefVars.m_FixedVarNames[i->eVariable]); + m_aPreDefVars.m_FixedVarNames[i.eVariable]); bVariableFound = true; // Resubstitution not finished yet! break; } @@ -1131,11 +1128,9 @@ throw ( RuntimeException ) } // This part can be iterated more than one time as variables can contain variables again! - for (ReSubstUserVarOrderVector::const_iterator i( - m_aReSubstUserVarOrder.begin()); - i != m_aReSubstUserVarOrder.end(); ++i) + for (auto const & i: m_aReSubstUserVarOrder) { - OUString aVarValue = i->aVarName; + OUString aVarValue = i.aVarName; sal_Int32 nPos = aURL.indexOf( aVarValue ); if ( nPos >= 0 ) { commit 2c5934b1a10f36525be1220db062d1738b6aac62 Author: Stephan Bergmann <[email protected]> Date: Tue Sep 27 15:24:12 2016 +0200 Reduce var scope Change-Id: I5b5ea9968c7648e38a5cacda5e1f6ba8bea78749 diff --git a/framework/source/services/substitutepathvars.cxx b/framework/source/services/substitutepathvars.cxx index dd1747a..bc94563 100644 --- a/framework/source/services/substitutepathvars.cxx +++ b/framework/source/services/substitutepathvars.cxx @@ -714,13 +714,11 @@ SubstitutePathVariables::SubstitutePathVariables( const Reference< XComponentCon SubstitutePathVariables_BASE(m_aMutex), m_xContext( xContext ) { - int i; - SetPredefinedPathVariables(); m_aImpl.GetSharePointsRules( m_aSubstVarMap ); // Init the predefined/fixed variable to index hash map - for ( i = 0; i < PREDEFVAR_COUNT; i++ ) + for ( int i = 0; i < PREDEFVAR_COUNT; i++ ) { // Store variable name into struct of predefined/fixed variables m_aPreDefVars.m_FixedVarNames[i] = OUString::createFromAscii( aFixedVarTable[i].pVarName ); @@ -731,7 +729,7 @@ SubstitutePathVariables::SubstitutePathVariables( const Reference< XComponentCon } // Sort predefined/fixed variable to path length - for ( i = 0; i < PREDEFVAR_COUNT; i++ ) + for ( int i = 0; i < PREDEFVAR_COUNT; i++ ) { if (( i != PREDEFVAR_WORKDIRURL ) && ( i != PREDEFVAR_PATH )) { _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
