{
if ( key_r == "baseurl" )
{
- _inMultiline = MultiLine::baseurl;
+ setInBaseurls( true );
_baseurls[section_r].push_back( Url(value_r) );
}
- else if ( key_r == "gpgkey" )
- {
- _inMultiline = MultiLine::gpgkey;
- legacyStoreUrl( _gpgkeys[section_r], value_r );
- }
else
{
- _inMultiline = MultiLine::none;
+ setInBaseurls( false );
IniDict::consume( section_r, key_r, value_r );
}
}
virtual void garbageLine( const std::string & section_r, const std::string & line_r )
{
- switch ( _inMultiline )
- {
- case MultiLine::baseurl:
- _baseurls[section_r].push_back( Url(line_r) );
- break;
-
- case MultiLine::gpgkey:
- legacyStoreUrl( _gpgkeys[section_r], line_r );
- break;
-
- case MultiLine::none:
- IniDict::garbageLine( section_r, line_r ); // throw
- break;
- }
+ if ( _inBaseurls )
+ _baseurls[section_r].push_back( Url(line_r) );
+ else
+ IniDict::garbageLine( section_r, line_r ); // throw
}
std::list<Url> & baseurls( const std::string & section_r )
{ return _baseurls[section_r]; }
- std::list<Url> & gpgkeys( const std::string & section_r )
- { return _gpgkeys[section_r]; }
-
private:
- void legacyStoreUrl( std::list<Url> & store_r, const std::string & line_r )
- {
- // Legacy:
- // commit 4ef65a442038caf7a1e310bc719e329b34dbdb67
- // - split the gpgkey line and take the first one as url to avoid
- // crash when creating an url from the line, as Fedora hat the
- // *BRILLIANT* idea of using more than one url per line.
- std::vector<std::string> keys;
- str::split( line_r, std::back_inserter(keys) );
- for ( auto && str : keys )
- store_r.push_back( Url(std::move(str)) );
- }
-
- enum class MultiLine { none, baseurl, gpgkey };
- MultiLine _inMultiline = MultiLine::none;
+ void setInBaseurls( bool yesno_r )
+ { if ( _inBaseurls != yesno_r ) _inBaseurls = yesno_r; }
+ DefaultIntegral<bool,false> _inBaseurls;
std::map<std::string,std::list<Url>> _baseurls;
- std::map<std::string,std::list<Url>> _gpgkeys;
};
} //namespace
info.setAutorefresh( str::strToTrue( it->second ) );
else if ( it->first == "mirrorlist" && !it->second.empty())
info.setMirrorListUrl(Url(it->second));
+ else if ( it->first == "gpgkey" && !it->second.empty())
+ {
+ std::vector<std::string> keys;
+ str::split( it->second, std::back_inserter(keys) );
+ if ( ! keys.empty() )
+ info.setGpgKeyUrl( Url(*keys.begin()) );
+ }
else if ( it->first == "gpgcheck" )
- info.setGpgCheck( str::strToTriBool( it->second ) );
- else if ( it->first == "repo_gpgcheck" )
- info.setRepoGpgCheck( str::strToTrue( it->second ) );
- else if ( it->first == "pkg_gpgcheck" )
- info.setPkgGpgCheck( str::strToTrue( it->second ) );
+ info.setGpgCheck( str::strToTrue( it->second ) );
else if ( it->first == "keeppackages" )
info.setKeepPackages( str::strToTrue( it->second ) );
else if ( it->first == "service" )
info.addBaseUrl( url );
}
- info.setGpgKeyUrls( std::move(dict.gpgkeys( *its )) );
-
info.setFilepath(is.path());
MIL << info << endl;
// add it to the list.