18#include <zypp-core/base/InputStream> 
   19#include <zypp-core/parser/IniDict> 
   24#undef ZYPP_BASE_LOGGER_LOGGROUP 
   25#define ZYPP_BASE_LOGGER_LOGGROUP "parser" 
   52      struct CredentialFileReaderImpl : 
public parser::IniParser
 
   56        struct StopParsing {};
 
   58        CredentialFileReaderImpl( 
const Pathname & input_r, 
const ProcessCredentials & callback_r )
 
   60        , _callback( callback_r )
 
   63          _lastChange = pi.
mtime();
 
   74        void beginParse()
 override 
   78        void consume( 
const std::string & section_r )
 override 
   81          _secret.reset( 
new AuthData );
 
   84            _secret->setUrl( Url(section_r) );
 
   86          catch ( 
const url::UrlException & )
 
   88            ERR << 
"Ignore invalid URL '" << section_r << 
"' in file " << _input << endl;
 
   93        void consume( 
const std::string & section_r, 
const std::string & key_r, 
const std::string & value_r )
 override 
   95          if ( !_secret && section_r.empty() )
 
   96            _secret.reset( 
new AuthData );      
 
  100            if ( key_r == 
"username" )
 
  101              _secret->setUsername( value_r );
 
  102            else if ( key_r == 
"password" )
 
  103              _secret->setPassword( value_r );
 
  105              _secret->extraValues()[key_r] = value_r;
 
  111        void endParse()
 override 
  115            if ( _secret->valid() )
 
  117              _secret->setLastDatabaseUpdate( _lastChange );
 
  118              if ( !_callback( _secret ) )
 
  119                throw( StopParsing() );
 
  122              ERR << 
"Ignore invalid credentials for URL '" << _secret->url() << 
"' in file " << _input << endl;
 
  127        const Pathname &                _input;
 
  128        const ProcessCredentials &      _callback;
 
  142    { CredentialFileReaderImpl( crfile_r, callback_r ); }
 
 
Wrapper class for stat/lstat.
Easy-to use interface to the ZYPP dependency resolver.