Imported Upstream version 15.0.0
[platform/upstream/libzypp.git] / zypp / parser / RepoFileReader.cc
index 25ededf..cdda52f 100644 (file)
@@ -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<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
@@ -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<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" )
@@ -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.