@ -63,8 +63,8 @@ pkgVersionMatch::pkgVersionMatch(string Data,MatchType Type) : Type(Type)
if ( isdigit ( Data [ 0 ] ) )
RelVerStr = Data ;
else
RelArchiv e = Data ;
RelReleas e = Data ;
if ( RelVerStr . length ( ) > 0 & & RelVerStr . end ( ) [ - 1 ] = = ' * ' )
{
RelVerPrefixMatch = true ;
@ -87,19 +87,21 @@ pkgVersionMatch::pkgVersionMatch(string Data,MatchType Type) : Type(Type)
{
if ( strlen ( Fragments [ J ] ) < 3 )
continue ;
if ( stringcasecmp ( Fragments [ J ] , Fragments [ J ] + 2 , " v= " ) = = 0 )
RelVerStr = Fragments [ J ] + 2 ;
else if ( stringcasecmp ( Fragments [ J ] , Fragments [ J ] + 2 , " o= " ) = = 0 )
RelOrigin = Fragments [ J ] + 2 ;
else if ( stringcasecmp ( Fragments [ J ] , Fragments [ J ] + 2 , " a= " ) = = 0 )
RelArchive = Fragments [ J ] + 2 ;
else if ( stringcasecmp ( Fragments [ J ] , Fragments [ J ] + 2 , " n= " ) = = 0 )
RelCodename = Fragments [ J ] + 2 ;
else if ( stringcasecmp ( Fragments [ J ] , Fragments [ J ] + 2 , " l= " ) = = 0 )
RelLabel = Fragments [ J ] + 2 ;
else if ( stringcasecmp ( Fragments [ J ] , Fragments [ J ] + 2 , " c= " ) = = 0 )
RelComponent = Fragments [ J ] + 2 ;
}
if ( RelVerStr . end ( ) [ - 1 ] = = ' * ' )
{
RelVerPrefixMatch = true ;
@ -169,15 +171,16 @@ bool pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator File)
{
if ( MatchAll = = true )
return true ;
/* cout << RelVerStr << ',' << RelOrigin << ',' << RelArchive << ',' << RelLabel << endl;
cout < < File . Version ( ) < < ' , ' < < File . Origin ( ) < < ' , ' < < File . Archive ( ) < < ' , ' < < File . Label ( ) < < endl ; */
if ( RelVerStr . empty ( ) = = true & & RelOrigin . empty ( ) = = true & &
RelArchive . empty ( ) = = true & & RelLabel . empty ( ) = = true & &
RelRelease . empty ( ) = = true & & RelCodename . empty ( ) = = true & &
RelComponent . empty ( ) = = true )
return false ;
if ( RelVerStr . empty ( ) = = false )
if ( File - > Version = = 0 | |
MatchVer ( File . Version ( ) , RelVerStr , RelVerPrefixMatch ) = = false )
@ -187,11 +190,19 @@ bool pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator File)
stringcasecmp ( RelOrigin , File . Origin ( ) ) ! = 0 )
return false ;
if ( RelArchive . empty ( ) = = false )
{
if ( File - > Archive = = 0 | |
if ( File - > Archive = = 0 | |
stringcasecmp ( RelArchive , File . Archive ( ) ) ! = 0 )
return false ;
}
return false ;
if ( RelCodename . empty ( ) = = false )
if ( File - > Codename = = 0 | |
stringcasecmp ( RelCodename , File . Codename ( ) ) ! = 0 )
return false ;
if ( RelRelease . empty ( ) = = false )
if ( ( File - > Archive = = 0 | |
stringcasecmp ( RelRelease , File . Archive ( ) ) ! = 0 ) & &
( File - > Codename = = 0 | |
stringcasecmp ( RelRelease , File . Codename ( ) ) ! = 0 ) )
return false ;
if ( RelLabel . empty ( ) = = false )
if ( File - > Label = = 0 | |
stringcasecmp ( RelLabel , File . Label ( ) ) ! = 0 )
@ -202,7 +213,7 @@ bool pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator File)
return false ;
return true ;
}
if ( Type = = Origin )
{
if ( OrSite . empty ( ) = = false ) {
@ -213,7 +224,7 @@ bool pkgVersionMatch::FileMatch(pkgCache::PkgFileIterator File)
return false ;
return ( OrSite = = File . Site ( ) ) ; /* both strings match */
}
return false ;
}
/*}}}*/