X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=zypp%2Fparser%2FRepoFileReader.cc;h=cdda52f792a2b949fb967c9870aef44b07b77e83;hb=b1beb1b072b979e151700e9267329918ec03010f;hp=25ededf23d4b1c8c958d3fb9d5ccf7683f387d97;hpb=e7df77d3f25679515f05aba52f358389f74de9af;p=platform%2Fupstream%2Flibzypp.git diff --git a/zypp/parser/RepoFileReader.cc b/zypp/parser/RepoFileReader.cc index 25ededf..cdda52f 100644 --- a/zypp/parser/RepoFileReader.cc +++ b/zypp/parser/RepoFileReader.cc @@ -46,64 +46,33 @@ namespace zypp { 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 & baseurls( const std::string & section_r ) { return _baseurls[section_r]; } - std::list & gpgkeys( const std::string & section_r ) - { return _gpgkeys[section_r]; } - private: - void legacyStoreUrl( std::list & 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 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 _inBaseurls; std::map> _baseurls; - std::map> _gpgkeys; }; } //namespace @@ -142,12 +111,15 @@ namespace zypp 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 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" ) @@ -183,8 +155,6 @@ namespace zypp info.addBaseUrl( url ); } - info.setGpgKeyUrls( std::move(dict.gpgkeys( *its )) ); - info.setFilepath(is.path()); MIL << info << endl; // add it to the list.