summaryrefslogtreecommitdiff
path: root/apt-pkg
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg')
-rw-r--r--apt-pkg/acquire-item.cc102
-rw-r--r--apt-pkg/acquire-item.h44
-rw-r--r--apt-pkg/acquire-method.cc2
-rw-r--r--apt-pkg/acquire.cc5
-rw-r--r--apt-pkg/acquire.h24
-rw-r--r--apt-pkg/algorithms.cc28
-rw-r--r--apt-pkg/algorithms.h8
-rw-r--r--apt-pkg/cachefile.cc3
-rw-r--r--apt-pkg/cacheiterators.h36
-rw-r--r--apt-pkg/cdrom.cc18
-rw-r--r--apt-pkg/cdrom.h9
-rw-r--r--apt-pkg/clean.cc1
-rw-r--r--apt-pkg/contrib/hashes.cc11
-rw-r--r--apt-pkg/contrib/mmap.cc108
-rw-r--r--apt-pkg/contrib/mmap.h2
-rw-r--r--apt-pkg/contrib/sha256.cc32
-rw-r--r--apt-pkg/depcache.cc121
-rw-r--r--apt-pkg/depcache.h56
-rw-r--r--apt-pkg/indexcopy.cc16
-rw-r--r--apt-pkg/indexcopy.h22
-rw-r--r--apt-pkg/indexfile.cc1
-rw-r--r--apt-pkg/indexrecords.cc14
-rw-r--r--apt-pkg/orderlist.cc10
-rw-r--r--apt-pkg/packagemanager.cc4
-rw-r--r--apt-pkg/pkgcache.h48
-rw-r--r--apt-pkg/pkgcachegen.cc1
-rw-r--r--apt-pkg/pkgcachegen.h8
-rw-r--r--apt-pkg/pkgrecords.h8
-rw-r--r--apt-pkg/policy.cc29
-rw-r--r--apt-pkg/vendorlist.cc19
30 files changed, 418 insertions, 372 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc
index 09ea5da02..39ae327cb 100644
--- a/apt-pkg/acquire-item.cc
+++ b/apt-pkg/acquire-item.cc
@@ -131,9 +131,7 @@ void pkgAcquire::Item::Rename(string From,string To)
}
}
/*}}}*/
-
-
-// AcqDiffIndex::AcqDiffIndex - Constructor
+// AcqDiffIndex::AcqDiffIndex - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* Get the DiffIndex file first and see if there are patches availabe
* If so, create a pkgAcqIndexDiffs fetcher that will get and apply the
@@ -184,7 +182,7 @@ pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire *Owner,
QueueURI(Desc);
}
-
+ /*}}}*/
// AcqIndex::Custom600Headers - Insert custom request headers /*{{{*/
// ---------------------------------------------------------------------
/* The only header we use is the last-modified header. */
@@ -202,9 +200,8 @@ string pkgAcqDiffIndex::Custom600Headers()
return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime);
}
-
-
-bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile)
+ /*}}}*/
+bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile) /*{{{*/
{
if(Debug)
std::clog << "pkgAcqIndexDiffs::ParseIndexDiff() " << IndexDiffFile
@@ -291,8 +288,8 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile)
std::clog << "Can't find a patch in the index file" << std::endl;
return false;
}
-
-void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+ /*}}}*/
+void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/
{
if(Debug)
std::clog << "pkgAcqDiffIndex failed: " << Desc.URI << std::endl
@@ -305,8 +302,8 @@ void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
Status = StatDone;
Dequeue();
}
-
-void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash,
+ /*}}}*/
+void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/
pkgAcquire::MethodConfig *Cnf)
{
if(Debug)
@@ -335,10 +332,8 @@ void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash,
Dequeue();
return;
}
-
-
-
-// AcqIndexDiffs::AcqIndexDiffs - Constructor
+ /*}}}*/
+// AcqIndexDiffs::AcqIndexDiffs - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* The package diff is added to the queue. one object is constructed
* for each diff and the index
@@ -372,9 +367,8 @@ pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner,
QueueNextDiff();
}
}
-
-
-void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+ /*}}}*/
+void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/
{
if(Debug)
std::clog << "pkgAcqIndexDiffs failed: " << Desc.URI << std::endl
@@ -383,9 +377,8 @@ void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
ExpectedHash);
Finish();
}
-
-
-// helper that cleans the item out of the fetcher queue
+ /*}}}*/
+// Finish - helper that cleans the item out of the fetcher queue /*{{{*/
void pkgAcqIndexDiffs::Finish(bool allDone)
{
// we restore the original name, this is required, otherwise
@@ -420,10 +413,8 @@ void pkgAcqIndexDiffs::Finish(bool allDone)
Dequeue();
return;
}
-
-
-
-bool pkgAcqIndexDiffs::QueueNextDiff()
+ /*}}}*/
+bool pkgAcqIndexDiffs::QueueNextDiff() /*{{{*/
{
// calc sha1 of the just patched file
@@ -469,10 +460,8 @@ bool pkgAcqIndexDiffs::QueueNextDiff()
return true;
}
-
-
-
-void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash,
+ /*}}}*/
+void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/
pkgAcquire::MethodConfig *Cnf)
{
if(Debug)
@@ -543,8 +532,7 @@ void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash,
return Finish(true);
}
}
-
-
+ /*}}}*/
// AcqIndex::AcqIndex - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* The package file is added to the queue and a second class is
@@ -594,8 +582,7 @@ string pkgAcqIndex::Custom600Headers()
return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime);
}
/*}}}*/
-
-void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/
{
bool descChanged = false;
// no .bz2 found, retry with .gz
@@ -630,8 +617,7 @@ void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
Item::Failed(Message,Cnf);
}
-
-
+ /*}}}*/
// AcqIndex::Done - Finished a fetch /*{{{*/
// ---------------------------------------------------------------------
/* This goes through a number of states.. On the initial fetch the
@@ -735,7 +721,7 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash,
QueueURI(Desc);
Mode = decompProg;
}
-
+ /*}}}*/
// AcqIndexTrans::pkgAcqIndexTrans - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* The Translation file is added to the queue */
@@ -744,7 +730,6 @@ pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire *Owner,
: pkgAcqIndex(Owner, URI, URIDesc, ShortDesc, HashString(), "")
{
}
-
/*}}}*/
// AcqIndexTrans::Failed - Silence failure messages for missing files /*{{{*/
// ---------------------------------------------------------------------
@@ -764,8 +749,7 @@ void pkgAcqIndexTrans::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
Item::Failed(Message,Cnf);
}
/*}}}*/
-
-pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire *Owner,
+pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire *Owner, /*{{{*/
string URI,string URIDesc,string ShortDesc,
string MetaIndexURI, string MetaIndexURIDesc,
string MetaIndexShortDesc,
@@ -854,7 +838,7 @@ void pkgAcqMetaSig::Done(string Message,unsigned long Size,string MD5,
}
/*}}}*/
-void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf)/*{{{*/
{
string Final = _config->FindDir("Dir::State::lists") + URItoFileName(RealURI);
@@ -890,8 +874,8 @@ void pkgAcqMetaSig::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
Item::Failed(Message,Cnf);
}
-
-pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire *Owner,
+ /*}}}*/
+pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire *Owner, /*{{{*/
string URI,string URIDesc,string ShortDesc,
string SigFile,
const vector<struct IndexTarget*>* IndexTargets,
@@ -910,7 +894,6 @@ pkgAcqMetaIndex::pkgAcqMetaIndex(pkgAcquire *Owner,
QueueURI(Desc);
}
-
/*}}}*/
// pkgAcqMetaIndex::Custom600Headers - Insert custom request headers /*{{{*/
// ---------------------------------------------------------------------
@@ -926,8 +909,8 @@ string pkgAcqMetaIndex::Custom600Headers()
return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime);
}
-
-void pkgAcqMetaIndex::Done(string Message,unsigned long Size,string Hash,
+ /*}}}*/
+void pkgAcqMetaIndex::Done(string Message,unsigned long Size,string Hash, /*{{{*/
pkgAcquire::MethodConfig *Cfg)
{
Item::Done(Message,Size,Hash,Cfg);
@@ -968,8 +951,8 @@ void pkgAcqMetaIndex::Done(string Message,unsigned long Size,string Hash,
}
}
}
-
-void pkgAcqMetaIndex::RetrievalDone(string Message)
+ /*}}}*/
+void pkgAcqMetaIndex::RetrievalDone(string Message) /*{{{*/
{
// We have just finished downloading a Release file (it is not
// verified yet)
@@ -1007,8 +990,8 @@ void pkgAcqMetaIndex::RetrievalDone(string Message)
chmod(FinalFile.c_str(),0644);
DestFile = FinalFile;
}
-
-void pkgAcqMetaIndex::AuthDone(string Message)
+ /*}}}*/
+void pkgAcqMetaIndex::AuthDone(string Message) /*{{{*/
{
// At this point, the gpgv method has succeeded, so there is a
// valid signature from a key in the trusted keyring. We
@@ -1041,8 +1024,8 @@ void pkgAcqMetaIndex::AuthDone(string Message)
Rename(SigFile,VerifiedSigFile);
chmod(VerifiedSigFile.c_str(),0644);
}
-
-void pkgAcqMetaIndex::QueueIndexes(bool verify)
+ /*}}}*/
+void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/
{
for (vector <struct IndexTarget*>::const_iterator Target = IndexTargets->begin();
Target != IndexTargets->end();
@@ -1084,8 +1067,8 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify)
(*Target)->ShortDesc, ExpectedIndexHash);
}
}
-
-bool pkgAcqMetaIndex::VerifyVendor(string Message)
+ /*}}}*/
+bool pkgAcqMetaIndex::VerifyVendor(string Message) /*{{{*/
{
// // Maybe this should be made available from above so we don't have
// // to read and parse it every time?
@@ -1171,9 +1154,8 @@ bool pkgAcqMetaIndex::VerifyVendor(string Message)
return true;
}
- /*}}}*/
-// pkgAcqMetaIndex::Failed - no Release file present or no signature
-// file present /*{{{*/
+ /*}}}*/
+// pkgAcqMetaIndex::Failed - no Release file present or no signature file present /*{{{*/
// ---------------------------------------------------------------------
/* */
void pkgAcqMetaIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
@@ -1210,9 +1192,7 @@ void pkgAcqMetaIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
// back to queueing Packages files without verification
QueueIndexes(false);
}
-
/*}}}*/
-
// AcqArchive::AcqArchive - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* This just sets up the initial fetch environment and queues the first
@@ -1495,14 +1475,13 @@ void pkgAcqArchive::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
}
}
/*}}}*/
-// AcqArchive::IsTrusted - Determine whether this archive comes from a
-// trusted source /*{{{*/
+// AcqArchive::IsTrusted - Determine whether this archive comes from a trusted source /*{{{*/
// ---------------------------------------------------------------------
bool pkgAcqArchive::IsTrusted()
{
return Trusted;
}
-
+ /*}}}*/
// AcqArchive::Finished - Fetching has finished, tidy up /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -1514,7 +1493,6 @@ void pkgAcqArchive::Finished()
StoreFilename = string();
}
/*}}}*/
-
// AcqFile::pkgAcqFile - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* The file is added to the queue */
diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h
index a48f7f7e5..36a926a0f 100644
--- a/apt-pkg/acquire-item.h
+++ b/apt-pkg/acquire-item.h
@@ -34,7 +34,7 @@
* \file acquire-item.h
*/
-/** \brief Represents the process by which a pkgAcquire object should
+/** \brief Represents the process by which a pkgAcquire object should {{{
* retrieve a file or a collection of files.
*
* By convention, Item subclasses should insert themselves into the
@@ -261,8 +261,8 @@ class pkgAcquire::Item
*/
virtual ~Item();
};
-
-/** \brief Information about an index patch (aka diff). */
+ /*}}}*/
+/** \brief Information about an index patch (aka diff). */ /*{{{*/
struct DiffInfo {
/** The filename of the diff. */
string file;
@@ -273,8 +273,8 @@ struct DiffInfo {
/** The size of the diff. */
unsigned long size;
};
-
-/** \brief An item that is responsible for fetching an index file of
+ /*}}}*/
+/** \brief An item that is responsible for fetching an index file of {{{
* package list diffs and starting the package list's download.
*
* This item downloads the Index file and parses it, then enqueues
@@ -348,8 +348,8 @@ class pkgAcqDiffIndex : public pkgAcquire::Item
pkgAcqDiffIndex(pkgAcquire *Owner,string URI,string URIDesc,
string ShortDesc, HashString ExpectedHash);
};
-
-/** \brief An item that is responsible for fetching all the patches
+ /*}}}*/
+/** \brief An item that is responsible for fetching all the patches {{{
* that need to be applied to a given package index file.
*
* After downloading and applying a single patch, this item will
@@ -477,8 +477,8 @@ class pkgAcqIndexDiffs : public pkgAcquire::Item
string ShortDesc, HashString ExpectedHash,
vector<DiffInfo> diffs=vector<DiffInfo>());
};
-
-/** \brief An acquire item that is responsible for fetching an index
+ /*}}}*/
+/** \brief An acquire item that is responsible for fetching an index {{{
* file (e.g., Packages or Sources).
*
* \sa pkgAcqDiffIndex, pkgAcqIndexDiffs, pkgAcqIndexTrans
@@ -545,8 +545,8 @@ class pkgAcqIndex : public pkgAcquire::Item
pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc,
string ShortDesc, HashString ExpectedHash, string compressExt="");
};
-
-/** \brief An acquire item that is responsible for fetching a
+ /*}}}*/
+/** \brief An acquire item that is responsible for fetching a {{{
* translated index file.
*
* The only difference from pkgAcqIndex is that transient failures
@@ -579,8 +579,8 @@ class pkgAcqIndexTrans : public pkgAcqIndex
pkgAcqIndexTrans(pkgAcquire *Owner,string URI,string URIDesc,
string ShortDesc);
};
-
-/** \brief Information about an index file. */
+ /*}}}*/
+/** \brief Information about an index file. */ /*{{{*/
struct IndexTarget
{
/** \brief A URI from which the index file can be downloaded. */
@@ -597,8 +597,8 @@ struct IndexTarget
*/
string MetaKey;
};
-
-/** \brief An acquire item that downloads the detached signature
+ /*}}}*/
+/** \brief An acquire item that downloads the detached signature {{{
* of a meta-index (Release) file, then queues up the release
* file itself.
*
@@ -660,8 +660,8 @@ class pkgAcqMetaSig : public pkgAcquire::Item
const vector<struct IndexTarget*>* IndexTargets,
indexRecords* MetaIndexParser);
};
-
-/** \brief An item that is responsible for downloading the meta-index
+ /*}}}*/
+/** \brief An item that is responsible for downloading the meta-index {{{
* file (i.e., Release) itself and verifying its signature.
*
* Once the download and verification are complete, the downloads of
@@ -756,8 +756,8 @@ class pkgAcqMetaIndex : public pkgAcquire::Item
const vector<struct IndexTarget*>* IndexTargets,
indexRecords* MetaIndexParser);
};
-
-/** \brief An item that is responsible for fetching a package file.
+ /*}}}*/
+/** \brief An item that is responsible for fetching a package file. {{{
*
* If the package file already exists in the cache, nothing will be
* done.
@@ -840,8 +840,8 @@ class pkgAcqArchive : public pkgAcquire::Item
pkgRecords *Recs,pkgCache::VerIterator const &Version,
string &StoreFilename);
};
-
-/** \brief Retrieve an arbitrary file to the current directory.
+ /*}}}*/
+/** \brief Retrieve an arbitrary file to the current directory. {{{
*
* The file is retrieved even if it is accessed via a URL type that
* normally is a NOP, such as "file". If the download fails, the
@@ -902,7 +902,7 @@ class pkgAcqFile : public pkgAcquire::Item
string Desc, string ShortDesc,
const string &DestDir="", const string &DestFilename="");
};
-
+ /*}}}*/
/** @} */
#endif
diff --git a/apt-pkg/acquire-method.cc b/apt-pkg/acquire-method.cc
index acf1156dc..fe066741c 100644
--- a/apt-pkg/acquire-method.cc
+++ b/apt-pkg/acquire-method.cc
@@ -446,7 +446,6 @@ void pkgAcqMethod::Status(const char *Format,...)
exit(100);
}
/*}}}*/
-
// AcqMethod::Redirect - Send a redirect message /*{{{*/
// ---------------------------------------------------------------------
/* This method sends the redirect message and also manipulates the queue
@@ -478,7 +477,6 @@ void pkgAcqMethod::Redirect(const string &NewURI)
QueueBack = I->Next;
}
/*}}}*/
-
// AcqMethod::FetchResult::FetchResult - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc
index daea234d3..68ff393d0 100644
--- a/apt-pkg/acquire.cc
+++ b/apt-pkg/acquire.cc
@@ -484,7 +484,7 @@ double pkgAcquire::PartialPresent()
Total += (*I)->PartialSize;
return Total;
}
-
+ /*}}}*/
// Acquire::UriBegin - Start iterator for the uri list /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -501,7 +501,6 @@ pkgAcquire::UriIterator pkgAcquire::UriEnd()
return UriIterator(0);
}
/*}}}*/
-
// Acquire::MethodConfig::MethodConfig - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -515,7 +514,6 @@ pkgAcquire::MethodConfig::MethodConfig()
Next = 0;
}
/*}}}*/
-
// Queue::Queue - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -727,7 +725,6 @@ void pkgAcquire::Queue::Bump()
Cycle();
}
/*}}}*/
-
// AcquireStatus::pkgAcquireStatus - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h
index eaadded55..6c130c1b3 100644
--- a/apt-pkg/acquire.h
+++ b/apt-pkg/acquire.h
@@ -30,7 +30,7 @@
##################################################################### */
/*}}}*/
-/** \defgroup acquire Acquire system
+/** \defgroup acquire Acquire system {{{
*
* \brief The Acquire system is responsible for retrieving files from
* local or remote URIs and postprocessing them (for instance,
@@ -54,7 +54,7 @@
* once, but it is not clear what its behavior in this case is, and
* no subclass of pkgAcquire::Item seems to actually use this
* capability.
- */
+ */ /*}}}*/
/** \addtogroup acquire
*
@@ -78,7 +78,7 @@ using std::string;
class pkgAcquireStatus;
-/** \brief The core download scheduler.
+/** \brief The core download scheduler. {{{
*
* This class represents an ongoing download. It manages the lists
* of active and pending downloads and handles setting up and tearing
@@ -366,8 +366,8 @@ struct pkgAcquire::ItemDesc
/** brief The underlying item which is to be downloaded. */
Item *Owner;
};
-
-/** \brief A single download queue in a pkgAcquire object.
+ /*}}}*/
+/** \brief A single download queue in a pkgAcquire object. {{{
*
* \todo Why so many protected values?
*/
@@ -528,8 +528,8 @@ class pkgAcquire::Queue
*/
~Queue();
};
-
-/** \brief Iterates over all the URIs being fetched by a pkgAcquire object. */
+ /*}}}*/
+/** \brief Iterates over all the URIs being fetched by a pkgAcquire object. {{{*/
class pkgAcquire::UriIterator
{
/** The next queue to iterate over. */
@@ -568,8 +568,8 @@ class pkgAcquire::UriIterator
}
}
};
-
-/** \brief Information about the properties of a single acquire method. */
+ /*}}}*/
+/** \brief Information about the properties of a single acquire method. {{{*/
struct pkgAcquire::MethodConfig
{
/** \brief The next link on the acquire method list.
@@ -621,8 +621,8 @@ struct pkgAcquire::MethodConfig
*/
MethodConfig();
};
-
-/** \brief A monitor object for downloads controlled by the pkgAcquire class.
+ /*}}}*/
+/** \brief A monitor object for downloads controlled by the pkgAcquire class. {{{
*
* \todo Why protected members?
*
@@ -762,7 +762,7 @@ class pkgAcquireStatus
pkgAcquireStatus();
virtual ~pkgAcquireStatus() {};
};
-
+ /*}}}*/
/** @} */
#endif
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index 2ad064319..a30a02edb 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -442,7 +442,6 @@ bool pkgMinimizeUpgrade(pkgDepCache &Cache)
return true;
}
/*}}}*/
-
// ProblemResolver::pkgProblemResolver - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -985,26 +984,11 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
// Consider other options
if (InOr == false)
{
- if (Cache.AutoInstOk(I, Cache[I].CandidateVerIter(Cache),Start) == true)
- {
- if (Debug == true)
- clog << " Removing " << I.Name() << " rather than change " << Start.TargetPkg().Name() << endl;
- Cache.MarkDelete(I);
- if (Counter > 1)
- {
- if (Scores[Pkg->ID] > Scores[I->ID])
- Scores[I->ID] = Scores[Pkg->ID];
- }
- } else {
- /* The dependency of the TargetPkg would be satisfiable with I but it is
- forbidden to install I automatical, so anything we can do is hold
- back the TargetPkg.
- */
- if (Debug == true)
- clog << " Hold back " << Start.TargetPkg().Name() <<
- " rather than change denied AutoInstall " << I.Name() << endl;
- Cache.MarkKeep(Start.TargetPkg());
- }
+ if (Debug == true)
+ clog << " Removing " << I.Name() << " rather than change " << Start.TargetPkg().Name() << endl;
+ Cache.MarkDelete(I);
+ if (Counter > 1 && Scores[Pkg->ID] > Scores[I->ID])
+ Scores[I->ID] = Scores[Pkg->ID];
}
}
}
@@ -1323,7 +1307,6 @@ void pkgProblemResolver::InstallProtect()
}
}
/*}}}*/
-
// PrioSortList - Sort a list of versions by priority /*{{{*/
// ---------------------------------------------------------------------
/* This is ment to be used in conjunction with AllTargets to get a list
@@ -1354,7 +1337,6 @@ void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List)
qsort(List,Count,sizeof(*List),PrioComp);
}
/*}}}*/
-
// CacheFile::ListUpdate - update the cache files /*{{{*/
// ---------------------------------------------------------------------
/* This is a simple wrapper to update the cache. it will fetch stuff
diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h
index d183cd213..cee30b679 100644
--- a/apt-pkg/algorithms.h
+++ b/apt-pkg/algorithms.h
@@ -39,7 +39,7 @@
using std::ostream;
-class pkgSimulate : public pkgPackageManager
+class pkgSimulate : public pkgPackageManager /*{{{*/
{
protected:
@@ -75,8 +75,8 @@ private:
pkgSimulate(pkgDepCache *Cache);
};
-
-class pkgProblemResolver
+ /*}}}*/
+class pkgProblemResolver /*{{{*/
{
pkgDepCache &Cache;
typedef pkgCache::PkgIterator PkgIterator;
@@ -124,7 +124,7 @@ class pkgProblemResolver
pkgProblemResolver(pkgDepCache *Cache);
~pkgProblemResolver();
};
-
+ /*}}}*/
bool pkgDistUpgrade(pkgDepCache &Cache);
bool pkgApplyStatus(pkgDepCache &Cache);
bool pkgFixBroken(pkgDepCache &Cache);
diff --git a/apt-pkg/cachefile.cc b/apt-pkg/cachefile.cc
index 5b5e26497..0b1efb9ff 100644
--- a/apt-pkg/cachefile.cc
+++ b/apt-pkg/cachefile.cc
@@ -24,7 +24,6 @@
#include <apti18n.h>
/*}}}*/
-
// CacheFile::CacheFile - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -108,8 +107,6 @@ bool pkgCacheFile::Open(OpProgress &Progress,bool WithLock)
return true;
}
/*}}}*/
-
-
// CacheFile::Close - close the cache files /*{{{*/
// ---------------------------------------------------------------------
/* */
diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h
index cf79b3a6b..3d35e4298 100644
--- a/apt-pkg/cacheiterators.h
+++ b/apt-pkg/cacheiterators.h
@@ -32,7 +32,7 @@
#define PKGLIB_CACHEITERATORS_H
-// Package Iterator
+// Package Iterator /*{{{*/
class pkgCache::PkgIterator
{
friend class pkgCache;
@@ -96,8 +96,8 @@ class pkgCache::PkgIterator
};
inline PkgIterator() : Pkg(0), Owner(0), HashIndex(0) {};
};
-
-// Version Iterator
+ /*}}}*/
+// Version Iterator /*{{{*/
class pkgCache::VerIterator
{
Version *Ver;
@@ -155,8 +155,8 @@ class pkgCache::VerIterator
Ver = Owner.VerP;
};
};
-
-// Description Iterator
+ /*}}}*/
+// Description Iterator /*{{{*/
class pkgCache::DescIterator
{
Description *Desc;
@@ -199,8 +199,8 @@ class pkgCache::DescIterator
Desc = Owner.DescP;
};
};
-
-// Dependency iterator
+ /*}}}*/
+// Dependency iterator /*{{{*/
class pkgCache::DepIterator
{
Dependency *Dep;
@@ -258,8 +258,8 @@ class pkgCache::DepIterator
};
inline DepIterator() : Dep(0), Type(DepVer), Owner(0) {};
};
-
-// Provides iterator
+ /*}}}*/
+// Provides iterator /*{{{*/
class pkgCache::PrvIterator
{
Provides *Prv;
@@ -311,8 +311,8 @@ class pkgCache::PrvIterator
Prv = Owner.ProvideP;
};
};
-
-// Package file
+ /*}}}*/
+// Package file /*{{{*/
class pkgCache::PkgFileIterator
{
pkgCache *Owner;
@@ -358,8 +358,8 @@ class pkgCache::PkgFileIterator
inline PkgFileIterator(pkgCache &Owner) : Owner(&Owner), File(Owner.PkgFileP) {};
inline PkgFileIterator(pkgCache &Owner,PackageFile *Trg) : Owner(&Owner), File(Trg) {};
};
-
-// Version File
+ /*}}}*/
+// Version File /*{{{*/
class pkgCache::VerFileIterator
{
pkgCache *Owner;
@@ -390,8 +390,8 @@ class pkgCache::VerFileIterator
inline VerFileIterator() : Owner(0), FileP(0) {};
inline VerFileIterator(pkgCache &Owner,VerFile *Trg) : Owner(&Owner), FileP(Trg) {};
};
-
-// Description File
+ /*}}}*/
+// Description File /*{{{*/
class pkgCache::DescFileIterator
{
pkgCache *Owner;
@@ -422,8 +422,8 @@ class pkgCache::DescFileIterator
inline DescFileIterator() : Owner(0), FileP(0) {};
inline DescFileIterator(pkgCache &Owner,DescFile *Trg) : Owner(&Owner), FileP(Trg) {};
};
-
-// Inlined Begin functions cant be in the class because of order problems
+ /*}}}*/
+// Inlined Begin functions cant be in the class because of order problems /*{{{*/
inline pkgCache::VerIterator pkgCache::PkgIterator::VersionList() const
{return VerIterator(*Owner,Owner->VerP + Pkg->VersionList);};
inline pkgCache::VerIterator pkgCache::PkgIterator::CurrentVer() const
@@ -442,5 +442,5 @@ inline pkgCache::VerFileIterator pkgCache::VerIterator::FileList() const
{return VerFileIterator(*Owner,Owner->VerFileP + Ver->FileList);};
inline pkgCache::DescFileIterator pkgCache::DescIterator::FileList() const
{return DescFileIterator(*Owner,Owner->DescFileP + Desc->FileList);};
-
+ /*}}}*/
#endif
diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc
index 370687f24..891c59836 100644
--- a/apt-pkg/cdrom.cc
+++ b/apt-pkg/cdrom.cc
@@ -160,7 +160,7 @@ bool pkgCdrom::FindPackages(string CD,
return !_error->PendingError();
}
-
+ /*}}}*/
// Score - We compute a 'score' for a path /*{{{*/
// ---------------------------------------------------------------------
/* Paths are scored based on how close they come to what I consider
@@ -210,7 +210,6 @@ int pkgCdrom::Score(string Path)
return Res;
}
-
/*}}}*/
// DropBinaryArch - Dump dirs with a string like /binary-<foo>/ /*{{{*/
// ---------------------------------------------------------------------
@@ -248,8 +247,7 @@ bool pkgCdrom::DropBinaryArch(vector<string> &List)
return true;
}
-
-
+ /*}}}*/
// DropRepeats - Drop repeated files resulting from symlinks /*{{{*/
// ---------------------------------------------------------------------
/* Here we go and stat every file that we found and strip dup inodes. */
@@ -304,7 +302,6 @@ bool pkgCdrom::DropRepeats(vector<string> &List,const char *Name)
return true;
}
/*}}}*/
-
// ReduceSourceList - Takes the path list and reduces it /*{{{*/
// ---------------------------------------------------------------------
/* This takes the list of source list expressed entires and collects
@@ -513,9 +510,8 @@ bool pkgCdrom::WriteSourceList(string Name,vector<string> &List,bool Source)
return true;
}
-
-
-bool pkgCdrom::Ident(string &ident, pkgCdromStatus *log)
+ /*}}}*/
+bool pkgCdrom::Ident(string &ident, pkgCdromStatus *log) /*{{{*/
{
stringstream msg;
@@ -573,9 +569,8 @@ bool pkgCdrom::Ident(string &ident, pkgCdromStatus *log)
return true;
}
-
-
-bool pkgCdrom::Add(pkgCdromStatus *log)
+ /*}}}*/
+bool pkgCdrom::Add(pkgCdromStatus *log) /*{{{*/
{
stringstream msg;
@@ -844,3 +839,4 @@ bool pkgCdrom::Add(pkgCdromStatus *log)
return true;
}
+ /*}}}*/
diff --git a/apt-pkg/cdrom.h b/apt-pkg/cdrom.h
index 68d61c098..608cb0e2f 100644
--- a/apt-pkg/cdrom.h
+++ b/apt-pkg/cdrom.h
@@ -8,7 +8,7 @@
using namespace std;
-class pkgCdromStatus
+class pkgCdromStatus /*{{{*/
{
protected:
int totalSteps;
@@ -29,8 +29,8 @@ class pkgCdromStatus
// Progress indicator for the Index rewriter
virtual OpProgress* GetOpProgress() {return NULL; };
};
-
-class pkgCdrom
+ /*}}}*/
+class pkgCdrom /*{{{*/
{
protected:
enum {
@@ -65,7 +65,6 @@ class pkgCdrom
bool Ident(string &ident, pkgCdromStatus *log);
bool Add(pkgCdromStatus *log);
};
-
-
+ /*}}}*/
#endif
diff --git a/apt-pkg/clean.cc b/apt-pkg/clean.cc
index 3fa67e8e6..0d1dfbf74 100644
--- a/apt-pkg/clean.cc
+++ b/apt-pkg/clean.cc
@@ -19,7 +19,6 @@
#include <sys/stat.h>
#include <unistd.h>
/*}}}*/
-
// ArchiveCleaner::Go - Perform smart cleanup of the archive /*{{{*/
// ---------------------------------------------------------------------
/* Scan the directory for files to erase, we check the version information
diff --git a/apt-pkg/contrib/hashes.cc b/apt-pkg/contrib/hashes.cc
index fcc2f887c..52b9bfbe6 100644
--- a/apt-pkg/contrib/hashes.cc
+++ b/apt-pkg/contrib/hashes.cc
@@ -34,7 +34,7 @@ HashString::HashString(string Type, string Hash) : Type(Type), Hash(Hash)
{
}
-HashString::HashString(string StringedHash)
+HashString::HashString(string StringedHash) /*{{{*/
{
// legacy: md5sum without "MD5Sum:" prefix
if (StringedHash.find(":") == string::npos && StringedHash.size() == 32)
@@ -50,9 +50,8 @@ HashString::HashString(string StringedHash)
if(_config->FindB("Debug::Hashes",false) == true)
std::clog << "HashString(string): " << Type << " : " << Hash << std::endl;
}
-
-
-bool HashString::VerifyFile(string filename) const
+ /*}}}*/
+bool HashString::VerifyFile(string filename) const /*{{{*/
{
FileFd fd;
MD5Summation MD5;
@@ -83,7 +82,7 @@ bool HashString::VerifyFile(string filename) const
return (fileHash == Hash);
}
-
+ /*}}}*/
const char** HashString::SupportedHashes()
{
return _SupportedHashes;
@@ -94,13 +93,11 @@ bool HashString::empty() const
return (Type.empty() || Hash.empty());
}
-
string HashString::toStr() const
{
return Type+string(":")+Hash;
}
-
// Hashes::AddFD - Add the contents of the FD /*{{{*/
// ---------------------------------------------------------------------
/* */
diff --git a/apt-pkg/contrib/mmap.cc b/apt-pkg/contrib/mmap.cc
index 04a45811b..5f56178f4 100644
--- a/apt-pkg/contrib/mmap.cc
+++ b/apt-pkg/contrib/mmap.cc
@@ -13,17 +13,13 @@
libc6 generates warnings -- which should be errors, g++ isn't properly
strict.
- The configure test notes that some OS's have broken private mmap's
- so on those OS's we can't use mmap. This means we have to use
- configure to test mmap and can't rely on the POSIX
- _POSIX_MAPPED_FILES test.
-
##################################################################### */
/*}}}*/
// Include Files /*{{{*/
#define _BSD_SOURCE
#include <apt-pkg/mmap.h>
#include <apt-pkg/error.h>
+#include <apt-pkg/configuration.h>
#include <apti18n.h>
@@ -31,6 +27,8 @@
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
+#include <stdlib.h>
+#include <signal.h>
#include <cstring>
/*}}}*/
@@ -141,6 +139,20 @@ bool MMap::Sync(unsigned long Start,unsigned long Stop)
}
/*}}}*/
+// DynamicMMapSegfaultHandler /*{{{*/
+// ---------------------------------------------------------------------
+/* In theory, the mmap should never segfault because we check the available
+ size of our mmap before we use it, but there are a few reports out there
+ which state that the mmap segfaults without further notice. So this handler
+ will take care of all these segfaults which should never happen... */
+void DynamicMMapSegfaultHandler(int)
+{
+ _error->Error(_("Dynamic MMap segfaults, most likely because it ran out of room. "
+ "Please increase the size of APT::Cache-Limit. (man 5 apt.conf)"));
+ _error->DumpErrors();
+ exit(EXIT_FAILURE);
+}
+ /*}}}*/
// DynamicMMap::DynamicMMap - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -166,13 +178,30 @@ DynamicMMap::DynamicMMap(FileFd &F,unsigned long Flags,unsigned long WorkSpace)
/*}}}*/
// DynamicMMap::DynamicMMap - Constructor for a non-file backed map /*{{{*/
// ---------------------------------------------------------------------
-/* This is just a fancy malloc really.. */
+/* We try here to use mmap to reserve some space - this is much more
+ cooler than the fallback solution to simply allocate a char array
+ and could come in handy later than we are able to grow such an mmap */
DynamicMMap::DynamicMMap(unsigned long Flags,unsigned long WorkSpace) :
MMap(Flags | NoImmMap | UnMapped), Fd(0), WorkSpace(WorkSpace)
{
if (_error->PendingError() == true)
return;
-
+
+ if (_config->FindB("MMap::SegfaultHandler",true) == true)
+ {
+ struct sigaction sa;
+ sa.sa_handler = DynamicMMapSegfaultHandler;
+ sigaction(SIGSEGV, &sa, NULL);
+ }
+
+#ifdef _POSIX_MAPPED_FILES
+ // use anonymous mmap() to get the memory
+ Base = (unsigned char*) mmap(0, WorkSpace, PROT_READ|PROT_WRITE,
+ MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
+ if(Base != MAP_FAILED)
+ return;
+#endif
+ // fallback to a static allocated space
Base = new unsigned char[WorkSpace];
memset(Base,0,WorkSpace);
iSize = 0;
@@ -185,7 +214,11 @@ DynamicMMap::~DynamicMMap()
{
if (Fd == 0)
{
+#ifdef _POSIX_MAPPED_FILES
+ munmap(Base, WorkSpace);
+#else
delete [] (unsigned char *)Base;
+#endif
return;
}
@@ -207,14 +240,16 @@ unsigned long DynamicMMap::RawAllocate(unsigned long Size,unsigned long Aln)
iSize = Result + Size;
- // Just in case error check
- if (Result + Size > WorkSpace)
+ // try to grow the buffer
+ while(Result + Size > WorkSpace)
{
- _error->Error(_("Dynamic MMap ran out of room. Please increase the size "
- "of APT::Cache-Limit. Current value: %lu. (man 5 apt.conf)"), WorkSpace);
- return 0;
+ if(!Grow())
+ {
+ _error->Error(_("Dynamic MMap ran out of room. Please increase the size "
+ "of APT::Cache-Limit. Current value: %lu. (man 5 apt.conf)"), WorkSpace);
+ return 0;
+ }
}
-
return Result;
}
/*}}}*/
@@ -234,7 +269,6 @@ unsigned long DynamicMMap::Allocate(unsigned long ItemSize)
if (I->ItemSize == ItemSize)
break;
}
-
// No pool is allocated, use an unallocated one
if (I == Pools + PoolCount)
{
@@ -270,14 +304,17 @@ unsigned long DynamicMMap::WriteString(const char *String,
unsigned long Len)
{
unsigned long Result = iSize;
- // Just in case error check
- if (Result + Len > WorkSpace)
+ // try to grow the buffer
+ while(Result + Len > WorkSpace)
{
- _error->Error(_("Dynamic MMap ran out of room. Please increase the size "
- "of APT::Cache-Limit. Current value: %lu. (man 5 apt.conf)"), WorkSpace);
- return 0;
- }
-
+ if(!Grow())
+ {
+ _error->Error(_("Dynamic MMap ran out of room. Please increase the size "
+ "of APT::Cache-Limit. Current value: %lu. (man 5 apt.conf)"), WorkSpace);
+ return 0;
+ }
+ }
+
if (Len == (unsigned long)-1)
Len = strlen(String);
iSize += Len + 1;
@@ -286,3 +323,32 @@ unsigned long DynamicMMap::WriteString(const char *String,
return Result;
}
/*}}}*/
+// DynamicMMap::Grow - Grow the mmap /*{{{*/
+// ---------------------------------------------------------------------
+/* This method will try to grow the mmap we currently use. This doesn't
+ work most of the time because we can't move the mmap around in the
+ memory for now as this would require to adjust quite a lot of pointers
+ but why we should not at least try to grow it before we give up? */
+bool DynamicMMap::Grow()
+{
+#ifdef _POSIX_MAPPED_FILES
+ unsigned long newSize = WorkSpace + 1024*1024;
+
+ if(Fd != 0)
+ {
+ Fd->Seek(newSize - 1);
+ char C = 0;
+ Fd->Write(&C,sizeof(C));
+ }
+
+ Base = mremap(Base, WorkSpace, newSize, 0);
+ if(Base == MAP_FAILED)
+ return false;
+
+ WorkSpace = newSize;
+ return true;
+#else
+ return false;
+#endif
+}
+ /*}}}*/
diff --git a/apt-pkg/contrib/mmap.h b/apt-pkg/contrib/mmap.h
index 19cf7582d..bde62217d 100644
--- a/apt-pkg/contrib/mmap.h
+++ b/apt-pkg/contrib/mmap.h
@@ -84,6 +84,8 @@ class DynamicMMap : public MMap
unsigned long WorkSpace;
Pool *Pools;
unsigned int PoolCount;
+
+ bool Grow();
public:
diff --git a/apt-pkg/contrib/sha256.cc b/apt-pkg/contrib/sha256.cc
index ecda3d8e8..e380c13ae 100644
--- a/apt-pkg/contrib/sha256.cc
+++ b/apt-pkg/contrib/sha256.cc
@@ -1,5 +1,5 @@
/*
- * Cryptographic API.
+ * Cryptographic API. {{{
*
* SHA-256, as specified in
* http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf
@@ -17,7 +17,7 @@
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
- */
+ */ /*}}}*/
#ifdef __GNUG__
#pragma implementation "apt-pkg/sha256.h"
@@ -65,20 +65,20 @@ static inline u32 Maj(u32 x, u32 y, u32 z)
#define H6 0x1f83d9ab
#define H7 0x5be0cd19
-static inline void LOAD_OP(int I, u32 *W, const u8 *input)
+static inline void LOAD_OP(int I, u32 *W, const u8 *input) /*{{{*/
{
W[I] = ( ((u32) input[I * 4 + 0] << 24)
| ((u32) input[I * 4 + 1] << 16)
| ((u32) input[I * 4 + 2] << 8)
| ((u32) input[I * 4 + 3]));
}
-
+ /*}}}*/
static inline void BLEND_OP(int I, u32 *W)
{
W[I] = s1(W[I-2]) + W[I-7] + s0(W[I-15]) + W[I-16];
}
-static void sha256_transform(u32 *state, const u8 *input)
+static void sha256_transform(u32 *state, const u8 *input) /*{{{*/
{
u32 a, b, c, d, e, f, g, h, t1, t2;
u32 W[64];
@@ -240,8 +240,8 @@ static void sha256_transform(u32 *state, const u8 *input)
a = b = c = d = e = f = g = h = t1 = t2 = 0;
memset(W, 0, 64 * sizeof(u32));
}
-
-SHA256Summation::SHA256Summation()
+ /*}}}*/
+SHA256Summation::SHA256Summation() /*{{{*/
{
Sum.state[0] = H0;
Sum.state[1] = H1;
@@ -255,8 +255,8 @@ SHA256Summation::SHA256Summation()
memset(Sum.buf, 0, sizeof(Sum.buf));
Done = false;
}
-
-bool SHA256Summation::Add(const u8 *data, unsigned long len)
+ /*}}}*/
+bool SHA256Summation::Add(const u8 *data, unsigned long len) /*{{{*/
{
struct sha256_ctx *sctx = &Sum;
unsigned int i, index, part_len;
@@ -291,8 +291,8 @@ bool SHA256Summation::Add(const u8 *data, unsigned long len)
return true;
}
-
-SHA256SumValue SHA256Summation::Result()
+ /*}}}*/
+SHA256SumValue SHA256Summation::Result() /*{{{*/
{
struct sha256_ctx *sctx = &Sum;
if (!Done) {
@@ -340,7 +340,7 @@ SHA256SumValue SHA256Summation::Result()
return res;
}
-
+ /*}}}*/
// SHA256SumValue::SHA256SumValue - Constructs the sum from a string /*{{{*/
// ---------------------------------------------------------------------
/* The string form of a SHA256 is a 64 character hex number */
@@ -349,7 +349,6 @@ SHA256SumValue::SHA256SumValue(string Str)
memset(Sum,0,sizeof(Sum));
Set(Str);
}
-
/*}}}*/
// SHA256SumValue::SHA256SumValue - Default constructor /*{{{*/
// ---------------------------------------------------------------------
@@ -358,7 +357,6 @@ SHA256SumValue::SHA256SumValue()
{
memset(Sum,0,sizeof(Sum));
}
-
/*}}}*/
// SHA256SumValue::Set - Set the sum from a string /*{{{*/
// ---------------------------------------------------------------------
@@ -391,9 +389,7 @@ string SHA256SumValue::Value() const
return string(Result);
}
-
-
-
+ /*}}}*/
// SHA256SumValue::operator == - Comparator /*{{{*/
// ---------------------------------------------------------------------
/* Call memcmp on the buffer */
@@ -402,8 +398,6 @@ bool SHA256SumValue::operator == (const SHA256SumValue & rhs) const
return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0;
}
/*}}}*/
-
-
// SHA256Summation::AddFD - Add content of file into the checksum /*{{{*/
// ---------------------------------------------------------------------
/* */
diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc
index b1b8f970f..e17b7b0e8 100644
--- a/apt-pkg/depcache.cc
+++ b/apt-pkg/depcache.cc
@@ -27,8 +27,8 @@
#include <sys/stat.h>
#include <apti18n.h>
-
-// helper for Install-Recommends-Sections and Never-MarkAuto-Sections
+ /*}}}*/
+// helper for Install-Recommends-Sections and Never-MarkAuto-Sections /*{{{*/
static bool
ConfigValueInSubTree(const char* SubTree, const char *needle)
{
@@ -47,8 +47,8 @@ ConfigValueInSubTree(const char* SubTree, const char *needle)
}
return false;
}
-
-pkgDepCache::ActionGroup::ActionGroup(pkgDepCache &cache) :
+ /*}}}*/
+pkgDepCache::ActionGroup::ActionGroup(pkgDepCache &cache) : /*{{{*/
cache(cache), released(false)
{
++cache.group_level;
@@ -76,7 +76,7 @@ pkgDepCache::ActionGroup::~ActionGroup()
{
release();
}
-
+ /*}}}*/
// DepCache::pkgDepCache - Constructors /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -161,8 +161,7 @@ bool pkgDepCache::Init(OpProgress *Prog)
return true;
}
/*}}}*/
-
-bool pkgDepCache::readStateFile(OpProgress *Prog)
+bool pkgDepCache::readStateFile(OpProgress *Prog) /*{{{*/
{
FileFd state_file;
string state = _config->FindDir("Dir::State") + "extended_states";
@@ -200,8 +199,8 @@ bool pkgDepCache::readStateFile(OpProgress *Prog)
return true;
}
-
-bool pkgDepCache::writeStateFile(OpProgress *prog, bool InstalledOnly)
+ /*}}}*/
+bool pkgDepCache::writeStateFile(OpProgress *prog, bool InstalledOnly) /*{{{*/
{
if(_config->FindB("Debug::pkgAutoRemove",false))
std::clog << "pkgDepCache::writeStateFile()" << std::endl;
@@ -283,7 +282,7 @@ bool pkgDepCache::writeStateFile(OpProgress *prog, bool InstalledOnly)
return true;
}
-
+ /*}}}*/
// DepCache::CheckDep - Checks a single dependency /*{{{*/
// ---------------------------------------------------------------------
/* This first checks the dependency against the main target package and
@@ -701,9 +700,7 @@ void pkgDepCache::Update(PkgIterator const &Pkg)
P.end() != true; P++)
Update(P.ParentPkg().RevDependsList());
}
-
/*}}}*/
-
// DepCache::MarkKeep - Put the package in the keep state /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -750,7 +747,7 @@ void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser,
#endif
if (DebugMarker == true)
- std::clog << OutputInDepth(Depth) << "MarkKeep " << Pkg << std::endl;
+ std::clog << OutputInDepth(Depth) << "MarkKeep " << Pkg << " FU=" << FromUser << std::endl;
RemoveSizes(Pkg);
RemoveStates(Pkg);
@@ -772,7 +769,7 @@ void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser,
// ---------------------------------------------------------------------
/* */
void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge,
- unsigned long Depth)
+ unsigned long Depth, bool FromUser)
{
// Simplifies other routines.
if (Pkg.end() == true)
@@ -794,8 +791,12 @@ void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge,
if (Pkg->VersionList == 0)
return;
+ // check if we are allowed to install the package
+ if (IsDeleteOk(Pkg,rPurge,Depth,FromUser) == false)
+ return;
+
if (DebugMarker == true)
- std::clog << OutputInDepth(Depth) << "MarkDelete " << Pkg << std::endl;
+ std::clog << OutputInDepth(Depth) << "MarkDelete " << Pkg << " FU=" << FromUser << std::endl;
RemoveSizes(Pkg);
RemoveStates(Pkg);
@@ -811,6 +812,23 @@ void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge,
AddSizes(Pkg);
}
/*}}}*/
+// DepCache::IsDeleteOk - check if it is ok to remove this package /*{{{*/
+// ---------------------------------------------------------------------
+/* The default implementation just honors dpkg hold
+ But an application using this library can override this method
+ to control the MarkDelete behaviour */
+bool pkgDepCache::IsDeleteOk(PkgIterator const &Pkg,bool rPurge,
+ unsigned long Depth, bool FromUser)
+{
+ if (FromUser == false && Pkg->SelectedState == pkgCache::State::Hold)
+ {
+ if (DebugMarker == true)
+ std::clog << OutputInDepth(Depth) << "Hold prevents MarkDelete of " << Pkg << " FU=" << FromUser << std::endl;
+ return false;
+ }
+ return true;
+}
+ /*}}}*/
// DepCache::MarkInstall - Put the package in the install state /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -846,6 +864,11 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
// We dont even try to install virtual packages..
if (Pkg->VersionList == 0)
return;
+
+ // check if we are allowed to install the package
+ if (IsInstallOk(Pkg,AutoInst,Depth,FromUser) == false)
+ return;
+
/* Target the candidate version and remove the autoflag. We reset the
autoflag below if this was called recursively. Otherwise the user
should have the ability to de-auto a package by changing its state */
@@ -874,12 +897,12 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
AddStates(Pkg);
Update(Pkg);
AddSizes(Pkg);
-
+
if (AutoInst == false)
return;
if (DebugMarker == true)
- std::clog << OutputInDepth(Depth) << "MarkInstall " << Pkg << std::endl;
+ std::clog << OutputInDepth(Depth) << "MarkInstall " << Pkg << " FU=" << FromUser << std::endl;
DepIterator Dep = P.InstVerIter(*this).DependsList();
for (; Dep.end() != true;)
@@ -1004,8 +1027,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
}
}
- if (InstPkg.end() == false &&
- AutoInstOk(InstPkg, (*this)[InstPkg].CandidateVerIter(*this), Start))
+ if (InstPkg.end() == false)
{
if(DebugAutoInstall == true)
std::clog << OutputInDepth(Depth) << "Installing " << InstPkg.Name()
@@ -1043,30 +1065,30 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
PkgIterator Pkg = Ver.ParentPkg();
if (Start->Type != Dep::DpkgBreaks)
- {
- if(AutoInstOk(Pkg, VerIterator(*this), Start))
- MarkDelete(Pkg);
- }
- else
- if (PkgState[Pkg->ID].CandidateVer != *I &&
- AutoInstOk(Pkg, VerIterator(*this, PkgState[Pkg->ID].CandidateVer), Start))
- MarkInstall(Pkg,true,Depth + 1, false, ForceImportantDeps);
+ MarkDelete(Pkg,false,Depth + 1, false);
+ else if (PkgState[Pkg->ID].CandidateVer != *I)
+ MarkInstall(Pkg,true,Depth + 1, false, ForceImportantDeps);
}
continue;
}
}
}
-
-// DepCache::AutoInstOk - check if it is to install this package /*{{{*/
+ /*}}}*/
+// DepCache::IsInstallOk - check if it is ok to install this package /*{{{*/
// ---------------------------------------------------------------------
/* The default implementation just honors dpkg hold
- But an application using this library can override this method
+ But an application using this library can override this method
to control the MarkInstall behaviour */
-bool pkgDepCache::AutoInstOk(const PkgIterator &Pkg,
- const VerIterator &v,
- const DepIterator &d)
+bool pkgDepCache::IsInstallOk(PkgIterator const &Pkg,bool AutoInst,
+ unsigned long Depth, bool FromUser)
{
- return (Pkg->SelectedState != pkgCache::State::Hold);
+ if (FromUser == false && Pkg->SelectedState == pkgCache::State::Hold)
+ {
+ if (DebugMarker == true)
+ std::clog << OutputInDepth(Depth) << "Hold prevents MarkInstall of " << Pkg << " FU=" << FromUser << std::endl;
+ return false;
+ }
+ return true;
}
/*}}}*/
// DepCache::SetReInstall - Set the reinstallation flag /*{{{*/
@@ -1168,7 +1190,6 @@ const char *pkgDepCache::StateCache::StripEpoch(const char *Ver)
return Ver;
}
/*}}}*/
-
// Policy::GetCandidateVer - Returns the Candidate install version /*{{{*/
// ---------------------------------------------------------------------
/* The default just returns the highest available version that is not
@@ -1205,7 +1226,6 @@ pkgCache::VerIterator pkgDepCache::Policy::GetCandidateVer(PkgIterator Pkg)
return Last;
}
/*}}}*/
-
// Policy::IsImportantDep - True if the dependency is important /*{{{*/
// ---------------------------------------------------------------------
/* */
@@ -1231,8 +1251,7 @@ bool pkgDepCache::Policy::IsImportantDep(DepIterator Dep)
return false;
}
/*}}}*/
-
-pkgDepCache::DefaultRootSetFunc::DefaultRootSetFunc()
+pkgDepCache::DefaultRootSetFunc::DefaultRootSetFunc() /*{{{*/
: constructedSuccessfully(false)
{
Configuration::Item const *Opts;
@@ -1261,8 +1280,8 @@ pkgDepCache::DefaultRootSetFunc::DefaultRootSetFunc()
constructedSuccessfully = true;
}
-
-pkgDepCache::DefaultRootSetFunc::~DefaultRootSetFunc()
+ /*}}}*/
+pkgDepCache::DefaultRootSetFunc::~DefaultRootSetFunc() /*{{{*/
{
for(unsigned int i = 0; i < rootSetRegexp.size(); i++)
{
@@ -1270,9 +1289,8 @@ pkgDepCache::DefaultRootSetFunc::~DefaultRootSetFunc()
delete rootSetRegexp[i];
}
}
-
-
-bool pkgDepCache::DefaultRootSetFunc::InRootSet(const pkgCache::PkgIterator &pkg)
+ /*}}}*/
+bool pkgDepCache::DefaultRootSetFunc::InRootSet(const pkgCache::PkgIterator &pkg) /*{{{*/
{
for(unsigned int i = 0; i < rootSetRegexp.size(); i++)
if (regexec(rootSetRegexp[i], pkg.Name(), 0, 0, 0) == 0)
@@ -1280,8 +1298,8 @@ bool pkgDepCache::DefaultRootSetFunc::InRootSet(const pkgCache::PkgIterator &pkg
return false;
}
-
-pkgDepCache::InRootSetFunc *pkgDepCache::GetRootSetFunc()
+ /*}}}*/
+pkgDepCache::InRootSetFunc *pkgDepCache::GetRootSetFunc() /*{{{*/
{
DefaultRootSetFunc *f = new DefaultRootSetFunc;
if(f->wasConstructedSuccessfully())
@@ -1292,7 +1310,7 @@ pkgDepCache::InRootSetFunc *pkgDepCache::GetRootSetFunc()
return NULL;
}
}
-
+ /*}}}*/
bool pkgDepCache::MarkFollowsRecommends()
{
return _config->FindB("APT::AutoRemove::RecommendsImportant", true);
@@ -1303,7 +1321,7 @@ bool pkgDepCache::MarkFollowsSuggests()
return _config->FindB("APT::AutoRemove::SuggestsImportant", false);
}
-// the main mark algorithm
+// pkgDepCache::MarkRequired - the main mark algorithm /*{{{*/
bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc)
{
bool follow_recommends;
@@ -1348,8 +1366,8 @@ bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc)
return true;
}
-
-// mark a single package in Mark-and-Sweep
+ /*}}}*/
+// MarkPackage - mark a single package in Mark-and-Sweep /*{{{*/
void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg,
const pkgCache::VerIterator &ver,
bool follow_recommends,
@@ -1468,8 +1486,8 @@ void pkgDepCache::MarkPackage(const pkgCache::PkgIterator &pkg,
}
}
}
-
-bool pkgDepCache::Sweep()
+ /*}}}*/
+bool pkgDepCache::Sweep() /*{{{*/
{
// do the sweep
for(PkgIterator p=PkgBegin(); !p.end(); ++p)
@@ -1492,3 +1510,4 @@ bool pkgDepCache::Sweep()
return true;
}
+ /*}}}*/
diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h
index 10f9c1091..0306861a1 100644
--- a/apt-pkg/depcache.h
+++ b/apt-pkg/depcache.h
@@ -363,20 +363,6 @@ class pkgDepCache : protected pkgCache::Namespace
*/
virtual bool MarkFollowsSuggests();
- /** \return \b true if it's OK for MarkInstall to recursively
- * install the given version of the given package.
- *
- * \param p the package that MarkInstall wants to install.
- * \param v the version being installed, or an end iterator
- * if p is being removed.
- * \param d the dependency being fixed.
- *
- * The default implementation unconditionally returns \b true.
- */
- virtual bool AutoInstOk(const PkgIterator &p,
- const VerIterator &v,
- const DepIterator &d);
-
/** \brief Update the Marked and Garbage fields of all packages.
*
* This routine is implicitly invoked after all state manipulators
@@ -406,7 +392,7 @@ class pkgDepCache : protected pkgCache::Namespace
void MarkKeep(PkgIterator const &Pkg, bool Soft = false,
bool FromUser = true, unsigned long Depth = 0);
void MarkDelete(PkgIterator const &Pkg, bool Purge = false,
- unsigned long Depth = 0);
+ unsigned long Depth = 0, bool FromUser = true);
void MarkInstall(PkgIterator const &Pkg,bool AutoInst = true,
unsigned long Depth = 0, bool FromUser = true,
bool ForceImportantDeps = false);
@@ -417,7 +403,45 @@ class pkgDepCache : protected pkgCache::Namespace
/** Set the "is automatically installed" flag of Pkg. */
void MarkAuto(const PkgIterator &Pkg, bool Auto);
// @}
-
+
+ /** \return \b true if it's OK for MarkInstall to install
+ * the given package.
+ *
+ * See the default implementation for a simple example how this
+ * method can be used.
+ * Overriding implementations should use the hold-state-flag to cache
+ * results from previous checks of this package - also it should
+ * be used if the default resolver implementation is also used to
+ * ensure that these packages are handled like "normal" dpkg holds.
+ *
+ * The parameters are the same as in the calling MarkInstall:
+ * \param Pkg the package that MarkInstall wants to install.
+ * \param AutoInst needs a previous MarkInstall this package?
+ * \param Depth recursive deep of this Marker call
+ * \param FromUser was the install requested by the user?
+ */
+ virtual bool IsInstallOk(const PkgIterator &Pkg,bool AutoInst = true,
+ unsigned long Depth = 0, bool FromUser = true);
+
+ /** \return \b true if it's OK for MarkDelete to remove
+ * the given package.
+ *
+ * See the default implementation for a simple example how this
+ * method can be used.
+ * Overriding implementations should use the hold-state-flag to cache
+ * results from previous checks of this package - also it should
+ * be used if the default resolver implementation is also used to
+ * ensure that these packages are handled like "normal" dpkg holds.
+ *
+ * The parameters are the same as in the calling MarkDelete:
+ * \param Pkg the package that MarkDelete wants to remove.
+ * \param Purge should we purge instead of "only" remove?
+ * \param Depth recursive deep of this Marker call
+ * \param FromUser was the remove requested by the user?
+ */
+ virtual bool IsDeleteOk(const PkgIterator &Pkg,bool Purge = false,
+ unsigned long Depth = 0, bool FromUser = true);
+
// This is for debuging
void Update(OpProgress *Prog = 0);
diff --git a/apt-pkg/indexcopy.cc b/apt-pkg/indexcopy.cc
index 9e5c03e0b..22ee29697 100644
--- a/apt-pkg/indexcopy.cc
+++ b/apt-pkg/indexcopy.cc
@@ -542,8 +542,8 @@ bool SigVerify::Verify(string prefix, string file, indexRecords *MetaIndex)
return true;
}
-
-bool SigVerify::CopyMetaIndex(string CDROM, string CDName,
+ /*}}}*/
+bool SigVerify::CopyMetaIndex(string CDROM, string CDName, /*{{{*/
string prefix, string file)
{
char S[400];
@@ -563,8 +563,8 @@ bool SigVerify::CopyMetaIndex(string CDROM, string CDName,
return true;
}
-
-bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
+ /*}}}*/
+bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList, /*{{{*/
vector<string> PkgList,vector<string> SrcList)
{
if (SigList.size() == 0)
@@ -665,10 +665,9 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
return true;
}
-
-
-bool TranslationsCopy::CopyTranslations(string CDROM,string Name,vector<string> &List,
- pkgCdromStatus *log)
+ /*}}}*/
+bool TranslationsCopy::CopyTranslations(string CDROM,string Name, /*{{{*/
+ vector<string> &List, pkgCdromStatus *log)
{
OpProgress *Progress = NULL;
if (List.size() == 0)
@@ -840,3 +839,4 @@ bool TranslationsCopy::CopyTranslations(string CDROM,string Name,vector<string>
return true;
}
+ /*}}}*/
diff --git a/apt-pkg/indexcopy.h b/apt-pkg/indexcopy.h
index 7778ae595..9e5ad4e43 100644
--- a/apt-pkg/indexcopy.h
+++ b/apt-pkg/indexcopy.h
@@ -22,7 +22,7 @@ class FileFd;
class indexRecords;
class pkgCdromStatus;
-class IndexCopy
+class IndexCopy /*{{{*/
{
protected:
@@ -45,8 +45,8 @@ class IndexCopy
pkgCdromStatus *log);
virtual ~IndexCopy() {};
};
-
-class PackageCopy : public IndexCopy
+ /*}}}*/
+class PackageCopy : public IndexCopy /*{{{*/
{
protected:
@@ -57,8 +57,8 @@ class PackageCopy : public IndexCopy
public:
};
-
-class SourceCopy : public IndexCopy
+ /*}}}*/
+class SourceCopy : public IndexCopy /*{{{*/
{
protected:
@@ -69,8 +69,8 @@ class SourceCopy : public IndexCopy
public:
};
-
-class TranslationsCopy
+ /*}}}*/
+class TranslationsCopy /*{{{*/
{
protected:
pkgTagSection *Section;
@@ -79,9 +79,8 @@ class TranslationsCopy
bool CopyTranslations(string CDROM,string Name,vector<string> &List,
pkgCdromStatus *log);
};
-
-
-class SigVerify
+ /*}}}*/
+class SigVerify /*{{{*/
{
bool Verify(string prefix,string file, indexRecords *records);
bool CopyMetaIndex(string CDROM, string CDName,
@@ -91,7 +90,6 @@ class SigVerify
bool CopyAndVerify(string CDROM,string Name,vector<string> &SigList,
vector<string> PkgList,vector<string> SrcList);
};
-
-
+ /*}}}*/
#endif
diff --git a/apt-pkg/indexfile.cc b/apt-pkg/indexfile.cc
index b38596143..08f71feb0 100644
--- a/apt-pkg/indexfile.cc
+++ b/apt-pkg/indexfile.cc
@@ -41,7 +41,6 @@ pkgIndexFile::Type *pkgIndexFile::Type::GetType(const char *Type)
return 0;
}
/*}}}*/
-
// IndexFile::ArchiveInfo - Stub /*{{{*/
// ---------------------------------------------------------------------
/* */
diff --git a/apt-pkg/indexrecords.cc b/apt-pkg/indexrecords.cc
index 502f454a8..77fe03d45 100644
--- a/apt-pkg/indexrecords.cc
+++ b/apt-pkg/indexrecords.cc
@@ -9,7 +9,7 @@
#include <apt-pkg/strutl.h>
#include <apti18n.h>
#include <sys/stat.h>
-
+ /*}}}*/
string indexRecords::GetDist() const
{
return this->Dist;
@@ -31,7 +31,7 @@ const indexRecords::checkSum *indexRecords::Lookup(const string MetaKey)
return Entries[MetaKey];
}
-bool indexRecords::Load(const string Filename)
+bool indexRecords::Load(const string Filename) /*{{{*/
{
FileFd Fd(Filename, FileFd::ReadOnly);
pkgTagFile TagFile(&Fd, Fd.Size() + 256); // XXX
@@ -85,8 +85,8 @@ bool indexRecords::Load(const string Filename)
string Strdate = Section.FindS("Date"); // FIXME: verify this somehow?
return true;
}
-
-vector<string> indexRecords::MetaKeys()
+ /*}}}*/
+vector<string> indexRecords::MetaKeys() /*{{{*/
{
std::vector<std::string> keys;
std::map<string,checkSum *>::iterator I = Entries.begin();
@@ -96,8 +96,8 @@ vector<string> indexRecords::MetaKeys()
}
return keys;
}
-
-bool indexRecords::parseSumData(const char *&Start, const char *End,
+ /*}}}*/
+bool indexRecords::parseSumData(const char *&Start, const char *End, /*{{{*/
string &Name, string &Hash, size_t &Size)
{
Name = "";
@@ -154,7 +154,7 @@ bool indexRecords::parseSumData(const char *&Start, const char *End,
Start = EntryEnd; //prepare for the next round
return true;
}
-
+ /*}}}*/
indexRecords::indexRecords()
{
}
diff --git a/apt-pkg/orderlist.cc b/apt-pkg/orderlist.cc
index ca18f1d75..01b150722 100644
--- a/apt-pkg/orderlist.cc
+++ b/apt-pkg/orderlist.cc
@@ -129,7 +129,6 @@ bool pkgOrderList::IsMissing(PkgIterator Pkg)
return true;
}
/*}}}*/
-
// OrderList::DoRun - Does an order run /*{{{*/
// ---------------------------------------------------------------------
/* The caller is expeted to have setup the desired probe state */
@@ -282,7 +281,6 @@ bool pkgOrderList::OrderConfigure()
return DoRun();
}
/*}}}*/
-
// OrderList::Score - Score the package for sorting /*{{{*/
// ---------------------------------------------------------------------
/* Higher scores order earlier */
@@ -433,7 +431,6 @@ int pkgOrderList::OrderCompareB(const void *a, const void *b)
return strcmp(A.Name(),B.Name());
}
/*}}}*/
-
// OrderList::VisitDeps - Visit forward install dependencies /*{{{*/
// ---------------------------------------------------------------------
/* This calls the dependency function for the normal forwards dependencies
@@ -590,7 +587,6 @@ bool pkgOrderList::VisitNode(PkgIterator Pkg)
return true;
}
/*}}}*/
-
// OrderList::DepUnPackCrit - Critical UnPacking ordering /*{{{*/
// ---------------------------------------------------------------------
/* Critical unpacking ordering strives to satisfy Conflicts: and
@@ -668,13 +664,12 @@ bool pkgOrderList::DepUnPackCrit(DepIterator D)
}
return true;
}
-
+ /*}}}*/
// OrderList::DepUnPackPreD - Critical UnPacking ordering with depends /*{{{*/
// ---------------------------------------------------------------------
/* Critical PreDepends (also configure immediate and essential) strives to
ensure not only that all conflicts+predepends are met but that this
- package will be immediately configurable when it is unpacked.
-
+ package will be immediately configurable when it is unpacked.
Loops are preprocessed and logged. */
bool pkgOrderList::DepUnPackPreD(DepIterator D)
{
@@ -892,7 +887,6 @@ bool pkgOrderList::DepRemove(DepIterator D)
return true;
}
/*}}}*/
-
// OrderList::AddLoop - Add a loop to the loop list /*{{{*/
// ---------------------------------------------------------------------
/* We record the loops. This is a relic since loop breaking is done
diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc
index 304d1c653..cc9ce21c7 100644
--- a/apt-pkg/packagemanager.cc
+++ b/apt-pkg/packagemanager.cc
@@ -26,7 +26,7 @@
#include <apti18n.h>
#include <iostream>
#include <fcntl.h>
-
+ /*}}}*/
using namespace std;
// PM::PackageManager - Constructor /*{{{*/
@@ -117,7 +117,6 @@ bool pkgPackageManager::FixMissing()
return Resolve.ResolveByKeep() == true && Cache.BrokenCount() == 0;
}
/*}}}*/
-
// PM::ImmediateAdd - Add the immediate flag recursivly /*{{{*/
// ---------------------------------------------------------------------
/* This adds the immediate flag to the pkg and recursively to the
@@ -152,7 +151,6 @@ void pkgPackageManager::ImmediateAdd(PkgIterator I, bool UseInstallVer)
return;
}
/*}}}*/
-
// PM::CreateOrderList - Create the ordering class /*{{{*/
// ---------------------------------------------------------------------
/* This populates the ordering list with all the packages that are
diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h
index e58515fb1..38733713f 100644
--- a/apt-pkg/pkgcache.h
+++ b/apt-pkg/pkgcache.h
@@ -27,7 +27,7 @@
using std::string;
class pkgVersioningSystem;
-class pkgCache
+class pkgCache /*{{{*/
{
public:
// Cache element predeclarations
@@ -146,8 +146,8 @@ class pkgCache
pkgCache(MMap *Map,bool DoMap = true);
virtual ~pkgCache() {};
};
-
-// Header structure
+ /*}}}*/
+// Header structure /*{{{*/
struct pkgCache::Header
{
// Signature information
@@ -195,8 +195,8 @@ struct pkgCache::Header
bool CheckSizes(Header &Against) const;
Header();
};
-
-struct pkgCache::Package
+ /*}}}*/
+struct pkgCache::Package /*{{{*/
{
// Pointers
map_ptrloc Name; // Stringtable
@@ -217,8 +217,8 @@ struct pkgCache::Package
unsigned int ID;
unsigned long Flags;
};
-
-struct pkgCache::PackageFile
+ /*}}}*/
+struct pkgCache::PackageFile /*{{{*/
{
// Names
map_ptrloc FileName; // Stringtable
@@ -239,24 +239,24 @@ struct pkgCache::PackageFile
unsigned int ID;
time_t mtime; // Modification time for the file
};
-
-struct pkgCache::VerFile
+ /*}}}*/
+struct pkgCache::VerFile /*{{{*/
{
map_ptrloc File; // PackageFile
map_ptrloc NextFile; // PkgVerFile
map_ptrloc Offset; // File offset
unsigned short Size;
};
-
-struct pkgCache::DescFile
+ /*}}}*/
+struct pkgCache::DescFile /*{{{*/
{
map_ptrloc File; // PackageFile
map_ptrloc NextFile; // PkgVerFile
map_ptrloc Offset; // File offset
unsigned short Size;
};
-
-struct pkgCache::Version
+ /*}}}*/
+struct pkgCache::Version /*{{{*/
{
map_ptrloc VerStr; // Stringtable
map_ptrloc Section; // StringTable (StringItem)
@@ -276,8 +276,8 @@ struct pkgCache::Version
unsigned int ID;
unsigned char Priority;
};
-
-struct pkgCache::Description
+ /*}}}*/
+struct pkgCache::Description /*{{{*/
{
// Language Code store the description translation language code. If
// the value has a 0 lenght then this is readed using the Package
@@ -292,8 +292,8 @@ struct pkgCache::Description
unsigned int ID;
};
-
-struct pkgCache::Dependency
+ /*}}}*/
+struct pkgCache::Dependency /*{{{*/
{
map_ptrloc Version; // Stringtable
map_ptrloc Package; // Package
@@ -306,8 +306,8 @@ struct pkgCache::Dependency
unsigned char Type;
unsigned char CompareOp;
};
-
-struct pkgCache::Provides
+ /*}}}*/
+struct pkgCache::Provides /*{{{*/
{
map_ptrloc ParentPkg; // Pacakge
map_ptrloc Version; // Version
@@ -315,13 +315,13 @@ struct pkgCache::Provides
map_ptrloc NextProvides; // Provides
map_ptrloc NextPkgProv; // Provides
};
-
-struct pkgCache::StringItem
+ /*}}}*/
+struct pkgCache::StringItem /*{{{*/
{
map_ptrloc String; // Stringtable
map_ptrloc NextItem; // StringItem
};
-
+ /*}}}*/
#include <apt-pkg/cacheiterators.h>
inline pkgCache::PkgIterator pkgCache::PkgBegin()
@@ -334,7 +334,7 @@ inline pkgCache::PkgFileIterator pkgCache::FileEnd()
{return PkgFileIterator(*this,PkgFileP);};
// Oh I wish for Real Name Space Support
-class pkgCache::Namespace
+class pkgCache::Namespace /*{{{*/
{
public:
@@ -352,5 +352,5 @@ class pkgCache::Namespace
typedef pkgCache::Dep Dep;
typedef pkgCache::Flag Flag;
};
-
+ /*}}}*/
#endif
diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc
index 397c19829..7833d6476 100644
--- a/apt-pkg/pkgcachegen.cc
+++ b/apt-pkg/pkgcachegen.cc
@@ -652,7 +652,6 @@ unsigned long pkgCacheGenerator::WriteUniqString(const char *S,
return ItemP->String;
}
/*}}}*/
-
// CheckValidity - Check that a cache is up-to-date /*{{{*/
// ---------------------------------------------------------------------
/* This just verifies that each file in the list of index files exists,
diff --git a/apt-pkg/pkgcachegen.h b/apt-pkg/pkgcachegen.h
index b6715294a..108b34207 100644
--- a/apt-pkg/pkgcachegen.h
+++ b/apt-pkg/pkgcachegen.h
@@ -28,7 +28,7 @@ class OpProgress;
class MMap;
class pkgIndexFile;
-class pkgCacheGenerator
+class pkgCacheGenerator /*{{{*/
{
private:
@@ -76,8 +76,8 @@ class pkgCacheGenerator
pkgCacheGenerator(DynamicMMap *Map,OpProgress *Progress);
~pkgCacheGenerator();
};
-
-// This is the abstract package list parser class.
+ /*}}}*/
+// This is the abstract package list parser class. /*{{{*/
class pkgCacheGenerator::ListParser
{
pkgCacheGenerator *Owner;
@@ -126,7 +126,7 @@ class pkgCacheGenerator::ListParser
ListParser() : FoundFileDeps(false) {};
virtual ~ListParser() {};
};
-
+ /*}}}*/
bool pkgMakeStatusCache(pkgSourceList &List,OpProgress &Progress,
MMap **OutMap = 0,bool AllowMem = false);
bool pkgMakeOnlyStatusCache(OpProgress &Progress,DynamicMMap **OutMap);
diff --git a/apt-pkg/pkgrecords.h b/apt-pkg/pkgrecords.h
index 17f3b1569..c2c98188a 100644
--- a/apt-pkg/pkgrecords.h
+++ b/apt-pkg/pkgrecords.h
@@ -22,7 +22,7 @@
#include <apt-pkg/fileutl.h>
#include <vector>
-class pkgRecords
+class pkgRecords /*{{{*/
{
public:
class Parser;
@@ -42,8 +42,8 @@ class pkgRecords
pkgRecords(pkgCache &Cache);
~pkgRecords();
};
-
-class pkgRecords::Parser
+ /*}}}*/
+class pkgRecords::Parser /*{{{*/
{
protected:
@@ -73,5 +73,5 @@ class pkgRecords::Parser
virtual ~Parser() {};
};
-
+ /*}}}*/
#endif
diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc
index b9a951990..26d1c17bd 100644
--- a/apt-pkg/policy.cc
+++ b/apt-pkg/policy.cc
@@ -123,6 +123,14 @@ pkgCache::VerIterator pkgPolicy::GetCandidateVer(pkgCache::PkgIterator Pkg)
signed Max = GetPriority(Pkg);
pkgCache::VerIterator Pref = GetMatch(Pkg);
+ // no package = no candidate version
+ if (Pkg.end() == true)
+ return Pref;
+
+ // packages with a pin lower than 0 have no newer candidate than the current version
+ if (Max < 0)
+ return Pkg.CurrentVer();
+
/* Falling through to the default version.. Setting Max to zero
effectively excludes everything <= 0 which are the non-automatic
priorities.. The status file is given a prio of 100 which will exclude
@@ -256,8 +264,10 @@ class PreferenceSection : public pkgTagSection
Stop = (const char*) memchr(Stop,'\n',End-Stop);
}
};
-
-
+ /*}}}*/
+// ReadPinDir - Load the pin files from this dir into a Policy /*{{{*/
+// ---------------------------------------------------------------------
+/* */
bool ReadPinDir(pkgPolicy &Plcy,string Dir)
{
if (Dir.empty() == true)
@@ -268,12 +278,12 @@ bool ReadPinDir(pkgPolicy &Plcy,string Dir)
return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
vector<string> List;
-
+
for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D))
{
if (Ent->d_name[0] == '.')
continue;
-
+
// Skip bad file names ala run-parts
const char *C = Ent->d_name;
for (; *C != 0; C++)
@@ -281,17 +291,17 @@ bool ReadPinDir(pkgPolicy &Plcy,string Dir)
break;
if (*C != 0)
continue;
-
+
// Make sure it is a file and not something else
string File = flCombine(Dir,Ent->d_name);
struct stat St;
if (stat(File.c_str(),&St) != 0 || S_ISREG(St.st_mode) == 0)
continue;
-
- List.push_back(File);
- }
+
+ List.push_back(File);
+ }
closedir(D);
-
+
sort(List.begin(),List.end());
// Read the files
@@ -300,7 +310,6 @@ bool ReadPinDir(pkgPolicy &Plcy,string Dir)
return false;
return true;
}
-
/*}}}*/
// ReadPinFile - Load the pin file into a Policy /*{{{*/
// ---------------------------------------------------------------------
diff --git a/apt-pkg/vendorlist.cc b/apt-pkg/vendorlist.cc
index 8e5d09e8a..589997081 100644
--- a/apt-pkg/vendorlist.cc
+++ b/apt-pkg/vendorlist.cc
@@ -10,7 +10,7 @@ pkgVendorList::~pkgVendorList()
delete *I;
}
-// pkgVendorList::ReadMainList - Read list of known package vendors /*{{{*/
+// pkgVendorList::ReadMainList - Read list of known package vendors /*{{{*/
// ---------------------------------------------------------------------
/* This also scans a directory of vendor files similar to apt.conf.d
which can contain the usual suspects of distribution provided data.
@@ -31,8 +31,8 @@ bool pkgVendorList::ReadMainList()
return CreateList(Cnf);
}
-
-bool pkgVendorList::Read(string File)
+ /*}}}*/
+bool pkgVendorList::Read(string File) /*{{{*/
{
Configuration Cnf;
if (ReadConfigFile(Cnf,File,true) == false)
@@ -40,8 +40,8 @@ bool pkgVendorList::Read(string File)
return CreateList(Cnf);
}
-
-bool pkgVendorList::CreateList(Configuration& Cnf)
+ /*}}}*/
+bool pkgVendorList::CreateList(Configuration& Cnf) /*{{{*/
{
for (vector<const Vendor *>::const_iterator I = VendorList.begin();
I != VendorList.end(); I++)
@@ -110,8 +110,8 @@ bool pkgVendorList::CreateList(Configuration& Cnf)
return !_error->PendingError();
}
-
-const Vendor* pkgVendorList::LookupFingerprint(string Fingerprint)
+ /*}}}*/
+const Vendor* pkgVendorList::LookupFingerprint(string Fingerprint) /*{{{*/
{
for (const_iterator I = VendorList.begin(); I != VendorList.end(); ++I)
{
@@ -121,8 +121,8 @@ const Vendor* pkgVendorList::LookupFingerprint(string Fingerprint)
return NULL;
}
-
-const Vendor* pkgVendorList::FindVendor(const std::vector<string> GPGVOutput)
+ /*}}}*/
+const Vendor* pkgVendorList::FindVendor(const std::vector<string> GPGVOutput) /*{{{*/
{
for (std::vector<string>::const_iterator I = GPGVOutput.begin(); I != GPGVOutput.end(); I++)
{
@@ -142,3 +142,4 @@ const Vendor* pkgVendorList::FindVendor(const std::vector<string> GPGVOutput)
return NULL;
}
+ /*}}}*/