Browse Source

merge patch apt_0.9.7.7ubuntu2~md1.debdiff, thanks to Marc Deslauriers

tags/debian/0.9.8
Michael Vogt 8 years ago
parent
commit
f6f06a8f24
3 changed files with 47 additions and 13 deletions
  1. +3
    -2
      ftparchive/apt-ftparchive.cc
  2. +41
    -10
      ftparchive/writer.cc
  3. +3
    -1
      ftparchive/writer.h

+ 3
- 2
ftparchive/apt-ftparchive.cc View File

@@ -254,7 +254,8 @@ bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats)
SrcDone = true;
// Create a package writer object.
SourcesWriter Sources(flCombine(OverrideDir,BinOverride),
SourcesWriter Sources(_config->Find("APT::FTPArchive::DB"),
flCombine(OverrideDir,BinOverride),
flCombine(OverrideDir,SrcOverride),
flCombine(OverrideDir,SrcExtraOverride));
if (SrcExt.empty() == false && Sources.SetExts(SrcExt) == false)
@@ -705,7 +706,7 @@ bool SimpleGenSources(CommandLine &CmdL)
SOverride.c_str());
// Create a package writer object.
SourcesWriter Sources(Override,SOverride);
SourcesWriter Sources(_config->Find("APT::FTPArchive::DB"),Override,SOverride);
if (_error->PendingError() == true)
return false;


+ 41
- 10
ftparchive/writer.cc View File

@@ -562,8 +562,9 @@ TranslationWriter::~TranslationWriter()
// SourcesWriter::SourcesWriter - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
SourcesWriter::SourcesWriter(string const &BOverrides,string const &SOverrides,
string const &ExtOverrides)
SourcesWriter::SourcesWriter(string const &DB, string const &BOverrides,string const &SOverrides,
string const &ExtOverrides) :
Db(DB), Stats(Db.Stats)
{
Output = stdout;
AddPattern("*.dsc");
@@ -575,7 +576,9 @@ SourcesWriter::SourcesWriter(string const &BOverrides,string const &SOverrides,
DoMD5 = _config->FindB("APT::FTPArchive::Sources::MD5",DoMD5);
DoSHA1 = _config->FindB("APT::FTPArchive::Sources::SHA1",DoSHA1);
DoSHA256 = _config->FindB("APT::FTPArchive::Sources::SHA256",DoSHA256);
DoSHA512 = _config->FindB("APT::FTPArchive::Sources::SHA512",DoSHA512);
NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false);
DoAlwaysStat = _config->FindB("APT::FTPArchive::AlwaysStat", false);

// Read the override file
if (BOverrides.empty() == false && BOver.ReadOverride(BOverrides) == false)
@@ -740,19 +743,16 @@ bool SourcesWriter::DoPackage(string FileName)
if (DoSHA1 == true && Tags.Exists("Checksums-Sha1"))
ostreamSha1 << "\n " << string(SHA1.Result()) << " " << St.st_size << " "
<< strippedName << "\n " << Tags.FindS("Checksums-Sha1");
string const ChecksumsSha1 = ostreamSha1.str();

std::ostringstream ostreamSha256;
if (DoSHA256 == true && Tags.Exists("Checksums-Sha256"))
ostreamSha256 << "\n " << string(SHA256.Result()) << " " << St.st_size << " "
<< strippedName << "\n " << Tags.FindS("Checksums-Sha256");
string const ChecksumsSha256 = ostreamSha256.str();

std::ostringstream ostreamSha512;
if (Tags.Exists("Checksums-Sha512"))
if (DoSHA512 == true && Tags.Exists("Checksums-Sha512"))
ostreamSha512 << "\n " << string(SHA512.Result()) << " " << St.st_size << " "
<< strippedName << "\n " << Tags.FindS("Checksums-Sha512");
string const ChecksumsSha512 = ostreamSha512.str();

// Strip the DirStrip prefix from the FileName and add the PathPrefix
string NewFileName;
@@ -768,7 +768,7 @@ bool SourcesWriter::DoPackage(string FileName)
string Directory = flNotFile(OriginalPath);
string Package = Tags.FindS("Source");

// Perform the delinking operation over all of the files
// Perform operation over all of the files
string ParseJnk;
const char *C = Files.c_str();
char *RealPath = NULL;
@@ -780,9 +780,36 @@ bool SourcesWriter::DoPackage(string FileName)
ParseQuoteWord(C,ParseJnk) == false ||
ParseQuoteWord(C,ParseJnk) == false)
return _error->Error("Error parsing file record");
char Jnk[2];

string OriginalPath = Directory + ParseJnk;

// Add missing hashes to source files
if ((DoSHA1 == true && !Tags.Exists("Checksums-Sha1")) ||
(DoSHA256 == true && !Tags.Exists("Checksums-Sha256")) ||
(DoSHA512 == true && !Tags.Exists("Checksums-Sha512")))
{
if (Db.GetFileInfo(OriginalPath, false, false, false, DoMD5, DoSHA1, DoSHA256, DoSHA512, DoAlwaysStat)
== false)
{
return _error->Error("Error getting file info");
}

if (DoSHA1 == true && !Tags.Exists("Checksums-Sha1"))
ostreamSha1 << "\n " << string(Db.SHA1Res) << " "
<< Db.GetFileSize() << " " << ParseJnk;

if (DoSHA256 == true && !Tags.Exists("Checksums-Sha256"))
ostreamSha256 << "\n " << string(Db.SHA256Res) << " "
<< Db.GetFileSize() << " " << ParseJnk;

if (DoSHA512 == true && !Tags.Exists("Checksums-Sha512"))
ostreamSha512 << "\n " << string(Db.SHA512Res) << " "
<< Db.GetFileSize() << " " << ParseJnk;
}

// Perform the delinking operation
char Jnk[2];

if (readlink(OriginalPath.c_str(),Jnk,sizeof(Jnk)) != -1 &&
(RealPath = realpath(OriginalPath.c_str(),NULL)) != 0)
{
@@ -797,6 +824,10 @@ bool SourcesWriter::DoPackage(string FileName)
if (Directory.length() > 2)
Directory.erase(Directory.end()-1);

string const ChecksumsSha1 = ostreamSha1.str();
string const ChecksumsSha256 = ostreamSha256.str();
string const ChecksumsSha512 = ostreamSha512.str();

// This lists all the changes to the fields we are going to make.
// (5 hardcoded + checksums + maintainer + end marker)
TFRewriteData Changes[5+2+1+SOverItem->FieldOverride.size()+1];
@@ -844,7 +875,7 @@ bool SourcesWriter::DoPackage(string FileName)

Stats.Packages++;
return true;
return Db.Finish();
}
/*}}}*/



+ 3
- 1
ftparchive/writer.h View File

@@ -157,6 +157,7 @@ class ContentsWriter : public FTWScanner

class SourcesWriter : public FTWScanner
{
CacheDB Db;
Override BOver;
Override SOver;
char *Buffer;
@@ -165,6 +166,7 @@ class SourcesWriter : public FTWScanner
public:

bool NoOverride;
bool DoAlwaysStat;
// General options
string PathPrefix;
@@ -174,7 +176,7 @@ class SourcesWriter : public FTWScanner

virtual bool DoPackage(string FileName);

SourcesWriter(string const &BOverrides,string const &SOverrides,
SourcesWriter(string const &DB,string const &BOverrides,string const &SOverrides,
string const &ExtOverrides=string());
virtual ~SourcesWriter() {free(Buffer);};
};


Loading…
Cancel
Save