@ -195,7 +195,7 @@ static std::string GetReleaseForSourceRecord(pkgSourceList *SrcList,
// FindSrc - Find a source record /*{{{*/
// ---------------------------------------------------------------------
/* */
static pkgSrcRecords : : Parser * FindSrc ( const char * Name , pkgRecords & Recs ,
static pkgSrcRecords : : Parser * FindSrc ( const char * Name ,
pkgSrcRecords & SrcRecs , string & Src ,
CacheFile & CacheFile )
{
@ -303,16 +303,10 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
( VF . File ( ) . Archive ( ) ! = 0 & & VF . File ( ) . Archive ( ) = = RelTag ) | |
( VF . File ( ) . Codename ( ) ! = 0 & & VF . File ( ) . Codename ( ) = = RelTag ) )
{
pkgRecords : : Parser & Parse = Recs . Lookup ( VF ) ;
Src = Parse . SourcePkg ( ) ;
// no SourcePkg name, so it is the "binary" name
if ( Src . empty ( ) = = true )
Src = TmpSrc ;
Src = Ver . SourcePkgName ( ) ;
// the Version we have is possibly fuzzy or includes binUploads,
// so we use the Version of the SourcePkg (empty if same as package)
VerTag = Parse . SourceVer ( ) ;
if ( VerTag . empty ( ) = = true )
VerTag = Ver . VerStr ( ) ;
// so we use the Version of the SourcePkg
VerTag = Ver . SourceVerStr ( ) ;
break ;
}
}
@ -343,10 +337,10 @@ static pkgSrcRecords::Parser *FindSrc(const char *Name,pkgRecords &Recs,
pkgCache : : VerIterator Ver = Cache - > GetCandidateVer ( Pkg ) ;
if ( Ver . end ( ) = = false )
{
pkgRecords : : Parser & Parse = Recs . Lookup ( Ver . FileList ( ) ) ;
Src = Parse . SourcePkg ( ) ;
if ( VerTag . empty ( ) = = true )
VerTag = Parse . SourceVer ( ) ;
if ( strcmp ( Ver . SourcePkgName ( ) , Ver . ParentPkg ( ) . Name ( ) ) ! = 0 )
Src = Ver . SourcePkgName ( ) ;
if ( VerTag . empty ( ) = = true & & strcmp ( Ver . SourceVerStr ( ) , Ver . VerStr ( ) ) ! = 0 )
VerTag = Ver . SourceVerSt r ( ) ;
}
}
}
@ -731,7 +725,6 @@ static bool DoSource(CommandLine &CmdL)
pkgSourceList * List = Cache . GetSourceList ( ) ;
// Create the text record parsers
pkgRecords Recs ( Cache ) ;
pkgSrcRecords SrcRecs ( * List ) ;
if ( _error - > PendingError ( ) = = true )
return false ;
@ -760,7 +753,7 @@ static bool DoSource(CommandLine &CmdL)
for ( const char * * I = CmdL . FileList + 1 ; * I ! = 0 ; I + + , J + + )
{
string Src ;
pkgSrcRecords : : Parser * Last = FindSrc ( * I , Recs , SrcRecs , Src , Cache ) ;
pkgSrcRecords : : Parser * Last = FindSrc ( * I , SrcRecs , Src , Cache ) ;
if ( Last = = 0 ) {
return _error - > Error ( _ ( " Unable to find a source package for %s " ) , Src . c_str ( ) ) ;
@ -1037,7 +1030,6 @@ static bool DoBuildDep(CommandLine &CmdL)
pkgSourceList * List = Cache . GetSourceList ( ) ;
// Create the text record parsers
pkgRecords Recs ( Cache ) ;
pkgSrcRecords SrcRecs ( * List ) ;
if ( _error - > PendingError ( ) = = true )
return false ;
@ -1090,7 +1082,7 @@ static bool DoBuildDep(CommandLine &CmdL)
Last = Type - > CreateSrcPkgParser ( * I ) ;
} else {
// normal case, search the cache for the source file
Last = FindSrc ( * I , Recs , SrcRecs , Src , Cache ) ;
Last = FindSrc ( * I , SrcRecs , Src , Cache ) ;
}
if ( Last = = 0 )
@ -1441,21 +1433,15 @@ static bool DoBuildDep(CommandLine &CmdL)
* pool / next to the deb itself )
* Example return : " pool/main/a/apt/apt_0.8.8ubuntu3 "
*/
static string GetChangelogPath ( CacheFile & Cache ,
pkgCache : : PkgIterator Pkg ,
static string GetChangelogPath ( CacheFile & Cache ,
pkgCache : : VerIterator Ver )
{
string path ;
pkgRecords Recs ( Cache ) ;
pkgRecords : : Parser & rec = Recs . Lookup ( Ver . FileList ( ) ) ;
string srcpkg = rec . SourcePkg ( ) . empty ( ) ? Pkg . Name ( ) : rec . SourcePkg ( ) ;
string ver = Ver . VerStr ( ) ;
// if there is a source version it always wins
if ( rec . SourceVer ( ) ! = " " )
ver = rec . SourceVer ( ) ;
path = flNotFile ( rec . FileName ( ) ) ;
path + = srcpkg + " _ " + StripEpoch ( ver ) ;
string path = flNotFile ( rec . FileName ( ) ) ;
path . append ( Ver . SourcePkgName ( ) ) ;
path . append ( " _ " ) ;
path . append ( StripEpoch ( Ver . SourceVerStr ( ) ) ) ;
return path ;
}
/*}}}*/
@ -1469,7 +1455,6 @@ static string GetChangelogPath(CacheFile &Cache,
* http : //packages.medibuntu.org/pool/non-free/m/mplayer/mplayer_1.0~rc4~try1.dsfg1-1ubuntu1+medibuntu1.changelog
*/
static bool GuessThirdPartyChangelogUri ( CacheFile & Cache ,
pkgCache : : PkgIterator Pkg ,
pkgCache : : VerIterator Ver ,
string & out_uri )
{
@ -1484,7 +1469,7 @@ static bool GuessThirdPartyChangelogUri(CacheFile &Cache,
return false ;
// get archive uri for the binary deb
string path_without_dot_changelog = GetChangelogPath ( Cache , Pkg , Ver ) ;
string path_without_dot_changelog = GetChangelogPath ( Cache , Ver ) ;
out_uri = index - > ArchiveURI ( path_without_dot_changelog + " .changelog " ) ;
// now strip away the filename and add srcpkg_srcver.changelog
@ -1502,25 +1487,20 @@ static bool DownloadChangelog(CacheFile &CacheFile, pkgAcquire &Fetcher,
* GuessThirdPartyChangelogUri for details how )
*/
{
string path ;
string descr ;
string server ;
string changelog_uri ;
// data structures we need
pkgCache : : PkgIterator Pkg = Ver . ParentPkg ( ) ;
// make the server root configurable
server = _config - > Find ( " Apt::Changelogs::Server " ,
string const server = _config - > Find ( " Apt::Changelogs::Server " ,
" http://packages.debian.org/changelogs " ) ;
path = GetChangelogPath ( CacheFile , Pkg , Ver ) ;
string const path = GetChangelogPath ( CacheFile , Ver ) ;
string changelog_uri ;
strprintf ( changelog_uri , " %s/%s/changelog " , server . c_str ( ) , path . c_str ( ) ) ;
if ( _config - > FindB ( " APT::Get::Print-URIs " , false ) = = true )
{
std : : cout < < ' \' ' < < changelog_uri < < ' \' ' < < std : : endl ;
return true ;
}
pkgCache : : PkgIterator const Pkg = Ver . ParentPkg ( ) ;
string descr ;
strprintf ( descr , _ ( " Changelog for %s (%s) " ) , Pkg . Name ( ) , changelog_uri . c_str ( ) ) ;
// queue it
new pkgAcqFile ( & Fetcher , changelog_uri , " " , 0 , descr , Pkg . Name ( ) , " ignored " , targetfile ) ;
@ -1531,7 +1511,7 @@ static bool DownloadChangelog(CacheFile &CacheFile, pkgAcquire &Fetcher,
if ( ! FileExists ( targetfile ) )
{
string third_party_uri ;
if ( GuessThirdPartyChangelogUri ( CacheFile , Pkg , Ver , third_party_uri ) )
if ( GuessThirdPartyChangelogUri ( CacheFile , Ver , third_party_uri ) )
{
strprintf ( descr , _ ( " Changelog for %s (%s) " ) , Pkg . Name ( ) , third_party_uri . c_str ( ) ) ;
new pkgAcqFile ( & Fetcher , third_party_uri , " " , 0 , descr , Pkg . Name ( ) , " ignored " , targetfile ) ;