]> git.saurik.com Git - apt.git/commitdiff
Merge branch 'debian/experimental' of https://github.com/DonKult/apt into debian...
authorJulian Andres Klode <jak@debian.org>
Fri, 14 Aug 2015 08:50:56 +0000 (10:50 +0200)
committerJulian Andres Klode <jak@debian.org>
Fri, 14 Aug 2015 08:50:56 +0000 (10:50 +0200)
35 files changed:
Makefile
apt-pkg/algorithms.cc
apt-pkg/cacheiterators.h
apt-pkg/contrib/fileutl.cc
apt-pkg/contrib/sptr.h
apt-pkg/depcache.cc
apt-pkg/depcache.h
apt-pkg/orderlist.cc
apt-pkg/packagemanager.cc
apt-pkg/pkgcache.h
apt-pkg/pkgcachegen.cc
apt-pkg/policy.cc
apt-pkg/policy.h
apt-pkg/tagfile.cc
apt-private/private-cmndline.cc
apt-private/private-install.cc
buildlib/config.h.in
cmdline/apt-cache.cc
cmdline/apt-get.cc
configure.ac
doc/apt.8.xml
doc/apt_preferences.5.xml
doc/po/apt-doc.pot
doc/po/de.po
doc/po/es.po
doc/po/fr.po
doc/po/it.po
doc/po/ja.po
doc/po/pl.po
doc/po/pt.po
doc/po/pt_BR.po
ftparchive/writer.cc
po/fr.po
test/integration/test-bug-543966-downgrade-below-1000-pin
test/integration/test-policy-pinning

index 6e1edbd5f1010617317f7a6a5a1af790d717ef7b..0393b424f7bdc598f806e57cf98b1049f62f2555 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -9,7 +9,7 @@ endif
 .PHONY: default
 default: startup all
 
-.PHONY: headers library clean veryclean all binary program doc test update-po
+.PHONY: fast headers library clean veryclean all binary program doc test update-po
 all headers library clean veryclean binary program doc manpages docbook test update-po startup dirs:
        $(MAKE) -C vendor $@
        $(MAKE) -C apt-pkg $@
@@ -23,6 +23,16 @@ all headers library clean veryclean binary program doc manpages docbook test upd
        $(MAKE) -C po $@
        $(MAKE) -C test $@
 
+fast:
+       $(MAKE) -C vendor all
+       $(MAKE) -C apt-pkg all
+       $(MAKE) -C apt-inst all
+       $(MAKE) -C apt-private all
+       $(MAKE) -C methods all
+       $(MAKE) -C cmdline all
+       $(MAKE) -C ftparchive all
+       $(MAKE) -C test all
+
 all headers library clean veryclean binary program doc manpages docbook test update-po: startup dirs
 
 dirs: startup
index 747b73e05b9880d566b18244d194871fe6ce59fd..446afa08d44824e1d468eb8ae111e415e349e673 100644 (file)
@@ -476,8 +476,8 @@ void pkgProblemResolver::MakeScores()
    }
 
    // Copy the scores to advoid additive looping
-   SPtrArray<int> OldScores = new int[Size];
-   memcpy(OldScores,Scores,sizeof(*Scores)*Size);
+   std::unique_ptr<int[]> OldScores(new int[Size]);
+   memcpy(OldScores.get(),Scores,sizeof(*Scores)*Size);
       
    /* Now we cause 1 level of dependency inheritance, that is we add the 
       score of the packages that depend on the target Package. This 
@@ -702,17 +702,17 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
       operates from highest score to lowest. This prevents problems when
       high score packages cause the removal of lower score packages that
       would cause the removal of even lower score packages. */
-   SPtrArray<pkgCache::Package *> PList = new pkgCache::Package *[Size];
-   pkgCache::Package **PEnd = PList;
+   std::unique_ptr<pkgCache::Package *[]> PList(new pkgCache::Package *[Size]);
+   pkgCache::Package **PEnd = PList.get();
    for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I)
       *PEnd++ = I;
    This = this;
-   qsort(PList,PEnd - PList,sizeof(*PList),&ScoreSort);
+   qsort(PList.get(),PEnd - PList.get(),sizeof(PList[0]),&ScoreSort);
 
    if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true)
    {
       clog << "Show Scores" << endl;
-      for (pkgCache::Package **K = PList; K != PEnd; K++)
+      for (pkgCache::Package **K = PList.get(); K != PEnd; K++)
          if (Scores[(*K)->ID] != 0)
          {
            pkgCache::PkgIterator Pkg(Cache,*K);
@@ -734,7 +734,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
    for (int Counter = 0; Counter != 10 && Change == true; Counter++)
    {
       Change = false;
-      for (pkgCache::Package **K = PList; K != PEnd; K++)
+      for (pkgCache::Package **K = PList.get(); K != PEnd; K++)
       {
         pkgCache::PkgIterator I(Cache,*K);
 
@@ -845,8 +845,8 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
            /* Look across the version list. If there are no possible
               targets then we keep the package and bail. This is necessary
               if a package has a dep on another package that can't be found */
-           SPtrArray<pkgCache::Version *> VList = Start.AllTargets();
-           if (*VList == 0 && (Flags[I->ID] & Protected) != Protected &&
+           std::unique_ptr<pkgCache::Version *[]> VList(Start.AllTargets());
+           if (VList[0] == 0 && (Flags[I->ID] & Protected) != Protected &&
                Start.IsNegative() == false &&
                Cache[I].NowBroken() == false)
            {          
@@ -863,7 +863,7 @@ bool pkgProblemResolver::ResolveInternal(bool const BrokenFix)
            }
            
            bool Done = false;
-           for (pkgCache::Version **V = VList; *V != 0; V++)
+           for (pkgCache::Version **V = VList.get(); *V != 0; V++)
            {
               pkgCache::VerIterator Ver(Cache,*V);
               pkgCache::PkgIterator Pkg = Ver.ParentPkg();
@@ -1233,8 +1233,8 @@ bool pkgProblemResolver::ResolveByKeepInternal()
               clog << "Package " << I.FullName(false) << " " << Start << endl;
 
            // Look at all the possible provides on this package
-           SPtrArray<pkgCache::Version *> VList = Start.AllTargets();
-           for (pkgCache::Version **V = VList; *V != 0; V++)
+           std::unique_ptr<pkgCache::Version *[]> VList(Start.AllTargets());
+           for (pkgCache::Version **V = VList.get(); *V != 0; V++)
            {
               pkgCache::VerIterator Ver(Cache,*V);
               pkgCache::PkgIterator Pkg = Ver.ParentPkg();
index f8321079aee5407ecb598a002b00f97abf237cc3..48547e56431cfa31202b58d0e8978f2bc01e5ceb 100644 (file)
@@ -157,11 +157,7 @@ class pkgCache::PkgIterator: public Iterator<Package, PkgIterator> {
        inline const char *Name() const { return Group().Name(); }
        // Versions have sections - and packages can have different versions with different sections
        // so this interface is broken by design. Run as fast as you can to Version.Section().
-       APT_DEPRECATED inline const char *Section() const {
-          APT_IGNORE_DEPRECATED_PUSH
-          return S->Section == 0?0:Owner->StrP + S->Section;
-          APT_IGNORE_DEPRECATED_POP
-       }
+       APT_DEPRECATED inline const char *Section() const;
        inline bool Purge() const {return S->CurrentState == pkgCache::State::Purge ||
                (S->CurrentVer == 0 && S->CurrentState == pkgCache::State::NotInstalled);}
        inline const char *Arch() const {return S->Arch == 0?0:Owner->StrP + S->Arch;}
@@ -518,5 +514,7 @@ inline pkgCache::VerFileIterator pkgCache::VerIterator::FileList() const
        {return VerFileIterator(*Owner,Owner->VerFileP + S->FileList);}
 inline pkgCache::DescFileIterator pkgCache::DescIterator::FileList() const
        {return DescFileIterator(*Owner,Owner->DescFileP + S->FileList);}
+APT_DEPRECATED inline const char * pkgCache::PkgIterator::Section() const
+       {return S->VersionList == 0 ? 0 : VersionList().Section();}
                                                                        /*}}}*/
 #endif
index 4cc8112af9fb99366e28c45914b845b0a395483b..1be782bac8c4629dd7fc81e1f276189db107d701 100644 (file)
@@ -52,6 +52,7 @@
 
 #include <set>
 #include <algorithm>
+#include <memory>
 
 #ifdef HAVE_ZLIB
        #include <zlib.h>
@@ -159,7 +160,7 @@ bool CopyFile(FileFd &From,FileFd &To)
       return false;
    
    // Buffered copy between fds
-   SPtrArray<unsigned char> Buf = new unsigned char[64000];
+   std::unique_ptr<unsigned char[]> Buf(new unsigned char[64000]);
    unsigned long long Size = From.Size();
    while (Size != 0)
    {
@@ -167,8 +168,8 @@ bool CopyFile(FileFd &From,FileFd &To)
       if (Size > 64000)
         ToRead = 64000;
       
-      if (From.Read(Buf,ToRead) == false || 
-         To.Write(Buf,ToRead) == false)
+      if (From.Read(Buf.get(),ToRead) == false ||
+         To.Write(Buf.get(),ToRead) == false)
         return false;
       
       Size -= ToRead;
@@ -2251,22 +2252,32 @@ bool DropPrivileges()                                                   /*{{{*/
       return _error->Error("No user %s, can not drop rights", toUser.c_str());
 
    // Do not change the order here, it might break things
+   // Get rid of all our supplementary groups first
    if (setgroups(1, &pw->pw_gid))
       return _error->Errno("setgroups", "Failed to setgroups");
 
+   // Now change the group ids to the new user
+#ifdef HAVE_SETRESGID
+   if (setresgid(pw->pw_gid, pw->pw_gid, pw->pw_gid) != 0)
+      return _error->Errno("setresgid", "Failed to set new group ids");
+#else
    if (setegid(pw->pw_gid) != 0)
       return _error->Errno("setegid", "Failed to setegid");
 
    if (setgid(pw->pw_gid) != 0)
       return _error->Errno("setgid", "Failed to setgid");
+#endif
 
+   // Change the user ids to the new user
+#ifdef HAVE_SETRESUID
+   if (setresuid(pw->pw_uid, pw->pw_uid, pw->pw_uid) != 0)
+      return _error->Errno("setresuid", "Failed to set new user ids");
+#else
    if (setuid(pw->pw_uid) != 0)
       return _error->Errno("setuid", "Failed to setuid");
-
-   // the seteuid() is probably uneeded (at least thats what the linux
-   // man-page says about setuid(2)) but we cargo culted it anyway
    if (seteuid(pw->pw_uid) != 0)
       return _error->Errno("seteuid", "Failed to seteuid");
+#endif
 
    // Verify that the user has only a single group, and the correct one
    gid_t groups[1];
index e2e811b1d1696937776ee38f367feae88073a0c9..92f4cdec827e9bf510b0145f4bb35684be917a73 100644 (file)
@@ -22,7 +22,7 @@
 #define SMART_POINTER_H
 
 template <class T>
-class SPtr
+class APT_DEPRECATED SPtr
 {
    public:
    T *Ptr;
@@ -43,7 +43,7 @@ class SPtr
 };
 
 template <class T>
-class SPtrArray
+class APT_DEPRECATED SPtrArray
 {
    public:
    T *Ptr;
index 02f61bf13ba28d6528795caf55a11200c47e15d4..3676058263dc7f70ede6f89f694254632f7b0a03 100644 (file)
@@ -1281,9 +1281,9 @@ bool pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst,
         Otherwise we remove the offender if needed */
       else if (Start.IsNegative() == true && Start->Type != pkgCache::Dep::Obsoletes)
       {
-        SPtrArray<Version *> List = Start.AllTargets();
+        std::unique_ptr<Version *[]> List(Start.AllTargets());
         pkgCache::PkgIterator TrgPkg = Start.TargetPkg();
-        for (Version **I = List; *I != 0; I++)
+        for (Version **I = List.get(); *I != 0; I++)
         {
            VerIterator Ver(*this,*I);
            PkgIterator Pkg = Ver.ParentPkg();
@@ -2010,7 +2010,7 @@ bool pkgDepCache::MarkAndSweep(InRootSetFunc &rootFunc)
 }
 bool pkgDepCache::MarkAndSweep()
 {
-   std::auto_ptr<InRootSetFunc> f(GetRootSetFunc());
+   std::unique_ptr<InRootSetFunc> f(GetRootSetFunc());
    if(f.get() != NULL)
       return MarkAndSweep(*f.get());
    else
index aa281f695c0de1699bbdf1b2f3050ceab9f513f4..6a1d6f8b37e17b796093282b979da54bdc341721 100644 (file)
@@ -250,7 +250,7 @@ class pkgDepCache : protected pkgCache::Namespace
       inline bool Keep() const {return Mode == ModeKeep;};
       inline bool Protect() const {return (iFlags & Protected) == Protected;};
       inline bool Upgrade() const {return Status > 0 && Mode == ModeInstall;};
-      inline bool Upgradable() const {return Status >= 1;};
+      inline bool Upgradable() const {return Status >= 1 && CandidateVer != NULL;};
       inline bool Downgrade() const {return Status < 0 && Mode == ModeInstall;};
       inline bool Held() const {return Status != 0 && Keep();};
       inline bool NowBroken() const {return (DepState & DepNowMin) != DepNowMin;};
index edbdd09ab4088c1b5812416a723d661c21459825..dae37e8f8f8bc55d147af020eb54ee924ba2e26f 100644 (file)
@@ -142,9 +142,9 @@ bool pkgOrderList::DoRun()
 {   
    // Temp list
    unsigned long Size = Cache.Head().PackageCount;
-   SPtrArray<Package *> NList = new Package *[Size];
-   SPtrArray<Package *> AfterList = new Package *[Size];
-   AfterEnd = AfterList;
+   std::unique_ptr<Package *[]> NList(new Package *[Size]);
+   std::unique_ptr<Package *[]> AfterList(new Package *[Size]);
+   AfterEnd = AfterList.get();
    
    Depth = 0;
    WipeFlags(Added | AddPending | Loop | InList);
@@ -154,7 +154,7 @@ bool pkgOrderList::DoRun()
 
    // Rebuild the main list into the temp list.
    iterator OldEnd = End;
-   End = NList;
+   End = NList.get();
    for (iterator I = List; I != OldEnd; ++I)
       if (VisitNode(PkgIterator(Cache,*I), "DoRun") == false)
       {
@@ -163,12 +163,12 @@ bool pkgOrderList::DoRun()
       }
    
    // Copy the after list to the end of the main list
-   for (Package **I = AfterList; I != AfterEnd; I++)
+   for (Package **I = AfterList.get(); I != AfterEnd; I++)
       *End++ = *I;
    
    // Swap the main list to the new list
    delete [] List;
-   List = NList.UnGuard();
+   List = NList.release();
    return true;
 }
                                                                        /*}}}*/
@@ -512,8 +512,8 @@ bool pkgOrderList::VisitRProvides(DepFunc F,VerIterator Ver)
    against it! */
 bool pkgOrderList::VisitProvides(DepIterator D,bool Critical)
 {
-   SPtrArray<Version *> List = D.AllTargets();
-   for (Version **I = List; *I != 0; ++I)
+   std::unique_ptr<Version *[]> List(D.AllTargets());
+   for (Version **I = List.get(); *I != 0; ++I)
    {
       VerIterator Ver(Cache,*I);
       PkgIterator Pkg = Ver.ParentPkg();
@@ -541,7 +541,7 @@ bool pkgOrderList::VisitProvides(DepIterator D,bool Critical)
    }
    if (D.IsNegative() == false)
       return true;
-   for (Version **I = List; *I != 0; ++I)
+   for (Version **I = List.get(); *I != 0; ++I)
    {
       VerIterator Ver(Cache,*I);
       PkgIterator Pkg = Ver.ParentPkg();
@@ -1075,9 +1075,9 @@ void pkgOrderList::WipeFlags(unsigned long F)
    this fails to produce a suitable result. */
 bool pkgOrderList::CheckDep(DepIterator D)
 {
-   SPtrArray<Version *> List = D.AllTargets();
+   std::unique_ptr<Version *[]> List(D.AllTargets());
    bool Hit = false;
-   for (Version **I = List; *I != 0; I++)
+   for (Version **I = List.get(); *I != 0; I++)
    {
       VerIterator Ver(Cache,*I);
       PkgIterator Pkg = Ver.ParentPkg();
index 78142ab13a2f8291f5f9f99b1df6fa45c2b5c081..dcae0112614911ae276dc8e0c8fec0bd4a8ec4fc 100644 (file)
@@ -390,9 +390,9 @@ bool pkgPackageManager::SmartConfigure(PkgIterator Pkg, int const Depth)
          // to do anything at all
         for (DepIterator Cur = Start; true; ++Cur)
         {
-           SPtrArray<Version *> VList = Cur.AllTargets();
+           std::unique_ptr<Version *> VList(Cur.AllTargets());
 
-           for (Version **I = VList; *I != 0; ++I)
+           for (Version **I = VList.get(); *I != 0; ++I)
            {
               VerIterator Ver(Cache,*I);
               PkgIterator DepPkg = Ver.ParentPkg();
@@ -440,9 +440,9 @@ bool pkgPackageManager::SmartConfigure(PkgIterator Pkg, int const Depth)
          // probably due to loops.
         for (DepIterator Cur = Start; true; ++Cur)
         {
-           SPtrArray<Version *> VList = Cur.AllTargets();
+           std::unique_ptr<Version *> VList(Cur.AllTargets());
 
-           for (Version **I = VList; *I != 0; ++I)
+           for (Version **I = VList.get(); *I != 0; ++I)
            {
               VerIterator Ver(Cache,*I);
               PkgIterator DepPkg = Ver.ParentPkg();
@@ -515,9 +515,9 @@ bool pkgPackageManager::SmartConfigure(PkgIterator Pkg, int const Depth)
         // Search for dependencies which are unpacked but aren't configured yet (maybe loops)
         for (DepIterator Cur = Start; true; ++Cur)
         {
-           SPtrArray<Version *> VList = Cur.AllTargets();
+           std::unique_ptr<Version *> VList(Cur.AllTargets());
 
-           for (Version **I = VList; *I != 0; ++I)
+           for (Version **I = VList.get(); *I != 0; ++I)
            {
               VerIterator Ver(Cache,*I);
               PkgIterator DepPkg = Ver.ParentPkg();
@@ -726,8 +726,8 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
            // Look for easy targets: packages that are already okay
            for (DepIterator Cur = Start; Bad == true; ++Cur)
            {
-              SPtrArray<Version *> VList = Cur.AllTargets();
-              for (Version **I = VList; *I != 0; ++I)
+              std::unique_ptr<Version *> VList(Cur.AllTargets());
+              for (Version **I = VList.get(); *I != 0; ++I)
               {
                  VerIterator Ver(Cache,*I);
                  PkgIterator Pkg = Ver.ParentPkg();
@@ -750,8 +750,8 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
            // Look for something that could be configured.
            for (DepIterator Cur = Start; Bad == true && Cur.end() == false; ++Cur)
            {
-              SPtrArray<Version *> VList = Cur.AllTargets();
-              for (Version **I = VList; *I != 0; ++I)
+              std::unique_ptr<Version *[]> VList(Cur.AllTargets());
+              for (Version **I = VList.get(); *I != 0; ++I)
               {
                  VerIterator Ver(Cache,*I);
                  PkgIterator DepPkg = Ver.ParentPkg();
@@ -806,8 +806,8 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int c
                  End->Type == pkgCache::Dep::Obsoletes ||
                  End->Type == pkgCache::Dep::DpkgBreaks)
         {
-           SPtrArray<Version *> VList = End.AllTargets();
-           for (Version **I = VList; *I != 0; ++I)
+           std::unique_ptr<Version *[]> VList(End.AllTargets());
+           for (Version **I = VList.get(); *I != 0; ++I)
            {
               VerIterator Ver(Cache,*I);
               PkgIterator ConflictPkg = Ver.ParentPkg();
index e59697c28545ef9c884a39b03ebd77d1d8768054..ff250b53206545ced2953614b777616d4f56fad1 100644 (file)
@@ -429,12 +429,6 @@ struct pkgCache::Package
    map_pointer_t VersionList;       // Version
    /** \brief index to the installed version */
    map_pointer_t CurrentVer;        // Version
-   /** \brief indicates nothing (consistently)
-       This field used to contain ONE section the package belongs to,
-       if those differs between versions it is a RANDOM one.
-       The Section() method tries to reproduce it, but the only sane
-       thing to do is use the Section field from the version! */
-   APT_DEPRECATED map_ptrloc Section; // StringItem
    /** \brief index of the group this package belongs to */
    map_pointer_t Group;             // Group the Package belongs to
 
index ef7afda944d177f21ab56a322e2a19c0d5bf0c8e..68175a24ab3dbb9e4c7b750387729eb450853838 100644 (file)
@@ -1250,8 +1250,8 @@ static bool CheckValidity(const string &CacheFile,
 
    // Map it
    FileFd CacheF(CacheFile,FileFd::ReadOnly);
-   SPtr<MMap> Map = new MMap(CacheF,0);
-   pkgCache Cache(Map);
+   std::unique_ptr<MMap> Map(new MMap(CacheF,0));
+   pkgCache Cache(Map.get());
    if (_error->PendingError() == true || Map->Size() == 0)
    {
       if (Debug == true)
@@ -1260,8 +1260,8 @@ static bool CheckValidity(const string &CacheFile,
       return false;
    }
 
-   SPtrArray<bool> RlsVisited = new bool[Cache.HeaderP->ReleaseFileCount];
-   memset(RlsVisited,0,sizeof(*RlsVisited)*Cache.HeaderP->ReleaseFileCount);
+   std::unique_ptr<bool[]> RlsVisited(new bool[Cache.HeaderP->ReleaseFileCount]);
+   memset(RlsVisited.get(),0,sizeof(RlsVisited[0])*Cache.HeaderP->ReleaseFileCount);
    std::vector<pkgIndexFile *> Files;
    for (pkgSourceList::const_iterator i = List.begin(); i != List.end(); ++i)
    {
@@ -1295,8 +1295,8 @@ static bool CheckValidity(const string &CacheFile,
 
    /* Now we check every index file, see if it is in the cache,
       verify the IMS data and check that it is on the disk too.. */
-   SPtrArray<bool> Visited = new bool[Cache.HeaderP->PackageFileCount];
-   memset(Visited,0,sizeof(*Visited)*Cache.HeaderP->PackageFileCount);
+   std::unique_ptr<bool[]> Visited(new bool[Cache.HeaderP->PackageFileCount]);
+   memset(Visited.get(),0,sizeof(Visited[0])*Cache.HeaderP->PackageFileCount);
    for (std::vector<pkgIndexFile *>::const_reverse_iterator PkgFile = Files.rbegin(); PkgFile != Files.rend(); ++PkgFile)
    {
       if (Debug == true)
@@ -1342,7 +1342,7 @@ static bool CheckValidity(const string &CacheFile,
    }
    
    if (OutMap != 0)
-      *OutMap = Map.UnGuard();
+      *OutMap = Map.release();
    return true;
 }
                                                                        /*}}}*/
@@ -1483,16 +1483,16 @@ static bool writeBackMMapToFile(pkgCacheGenerator * const Gen, DynamicMMap * con
    return true;
 }
 static bool loadBackMMapFromFile(std::unique_ptr<pkgCacheGenerator> &Gen,
-      SPtr<DynamicMMap> &Map, OpProgress * const Progress, std::string const &FileName)
+      std::unique_ptr<DynamicMMap> &Map, OpProgress * const Progress, std::string const &FileName)
 {
-   Map = CreateDynamicMMap(NULL, 0);
+   Map.reset(CreateDynamicMMap(NULL, 0));
    FileFd CacheF(FileName, FileFd::ReadOnly);
    map_pointer_t const alloc = Map->RawAllocate(CacheF.Size());
    if ((alloc == 0 && _error->PendingError())
         || CacheF.Read((unsigned char *)Map->Data() + alloc,
            CacheF.Size()) == false)
       return false;
-   Gen.reset(new pkgCacheGenerator(Map.Get(),Progress));
+   Gen.reset(new pkgCacheGenerator(Map.get(),Progress));
    return true;
 }
 APT_DEPRECATED bool pkgMakeStatusCache(pkgSourceList &List,OpProgress &Progress,
@@ -1578,7 +1578,7 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress
    }
 
    // At this point we know we need to construct something, so get storage ready
-   SPtr<DynamicMMap> Map = CreateDynamicMMap(NULL, 0);
+   std::unique_ptr<DynamicMMap> Map(CreateDynamicMMap(NULL, 0));
    if (Debug == true)
       std::clog << "Open memory Map (not filebased)" << std::endl;
 
@@ -1599,7 +1599,7 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress
    {
       if (Debug == true)
         std::clog << "srcpkgcache.bin is NOT valid - rebuild" << std::endl;
-      Gen.reset(new pkgCacheGenerator(Map.Get(),Progress));
+      Gen.reset(new pkgCacheGenerator(Map.get(),Progress));
 
       TotalSize += ComputeSize(&List, Files.begin(),Files.end());
       if (BuildCache(*Gen, Progress, CurrentSize, TotalSize, &List,
@@ -1607,7 +1607,7 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress
         return false;
 
       if (Writeable == true && SrcCacheFile.empty() == false)
-        if (writeBackMMapToFile(Gen.get(), Map.Get(), SrcCacheFile) == false)
+        if (writeBackMMapToFile(Gen.get(), Map.get(), SrcCacheFile) == false)
            return false;
    }
 
@@ -1620,7 +1620,7 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress
         return false;
 
       if (Writeable == true && CacheFile.empty() == false)
-        if (writeBackMMapToFile(Gen.get(), Map.Get(), CacheFile) == false)
+        if (writeBackMMapToFile(Gen.get(), Map.get(), CacheFile) == false)
            return false;
    }
 
@@ -1644,7 +1644,7 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress
    }
 
    if (OutMap != nullptr)
-      *OutMap = Map.UnGuard();
+      *OutMap = Map.release();
 
    if (Debug == true)
       std::clog << "Everything is ready for shipping" << std::endl;
@@ -1662,7 +1662,7 @@ bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **O
    if (_system->AddStatusFiles(Files) == false)
       return false;
 
-   SPtr<DynamicMMap> Map = CreateDynamicMMap(NULL, 0);
+   std::unique_ptr<DynamicMMap> Map(CreateDynamicMMap(NULL, 0));
    map_filesize_t CurrentSize = 0;
    map_filesize_t TotalSize = 0;
    
@@ -1671,7 +1671,7 @@ bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **O
    // Build the status cache
    if (Progress != NULL)
       Progress->OverallProgress(0,1,1,_("Reading package lists"));
-   pkgCacheGenerator Gen(Map.Get(),Progress);
+   pkgCacheGenerator Gen(Map.get(),Progress);
    if (_error->PendingError() == true)
       return false;
    if (BuildCache(Gen,Progress,CurrentSize,TotalSize, NULL,
@@ -1680,7 +1680,7 @@ bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **O
 
    if (_error->PendingError() == true)
       return false;
-   *OutMap = Map.UnGuard();
+   *OutMap = Map.release();
    
    return true;
 }
index c12d8699bd48468eb3216bdf6bdba74cc54009a9..4711372bc4db61601711adf0207f5689a2643f44 100644 (file)
@@ -100,8 +100,8 @@ bool pkgPolicy::InitDefaults()
    }
 
    // Apply the defaults..
-   SPtrArray<bool> Fixed = new bool[Cache->HeaderP->PackageFileCount];
-   memset(Fixed,0,sizeof(*Fixed)*Cache->HeaderP->PackageFileCount);
+   std::unique_ptr<bool[]> Fixed(new bool[Cache->HeaderP->PackageFileCount]);
+   memset(Fixed.get(),0,sizeof(Fixed[0])*Cache->HeaderP->PackageFileCount);
    StatusOverride = false;
    for (vector<Pin>::const_iterator I = Defaults.begin(); I != Defaults.end(); ++I)
    {
@@ -368,11 +368,12 @@ APT_PURE signed short pkgPolicy::GetPriority(pkgCache::PkgIterator const &Pkg)
       return Pins[Pkg->ID].Priority;
    return 0;
 }
-APT_PURE signed short pkgPolicy::GetPriority(pkgCache::VerIterator const &Ver)
+APT_PURE signed short pkgPolicy::GetPriority(pkgCache::VerIterator const &Ver, bool considerFiles)
 {
    if (VerPins[Ver->ID].Type != pkgVersionMatch::None)
       return VerPins[Ver->ID].Priority;
-
+   if (!considerFiles)
+      return 0;
 
    int priority = std::numeric_limits<int>::min();
    for (pkgCache::VerFileIterator file = Ver.FileList(); file.end() == false; file++)
@@ -477,11 +478,18 @@ bool ReadPinFile(pkgPolicy &Plcy,string File)
       }
       for (; Word != End && isspace(*Word) != 0; Word++);
 
-      short int priority = Tags.FindI("Pin-Priority", 0);
+      int priority = Tags.FindI("Pin-Priority", 0);
+      if (priority < std::numeric_limits<short>::min() ||
+          priority > std::numeric_limits<short>::max() ||
+         _error->PendingError()) {
+        return _error->Error(_("%s: Value %s is outside the range of valid pin priorities (%d to %d)"),
+                             File.c_str(), Tags.FindS("Pin-Priority").c_str(),
+                             std::numeric_limits<short>::min(),
+                             std::numeric_limits<short>::max());
+      }
       if (priority == 0)
       {
-         _error->Warning(_("No priority (or zero) specified for pin"));
-         continue;
+         return _error->Error(_("No priority (or zero) specified for pin"));
       }
 
       istringstream s(Name);
index b3e1ec6b1638f12c5f8b18989913a438f9c0694f..5be6657e9a3d3c5ef0ff331aecedfc9935668052 100644 (file)
@@ -80,7 +80,7 @@ class pkgPolicy : public pkgDepCache::Policy
    // Things for the cache interface.
    virtual pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
    virtual signed short GetPriority(pkgCache::PkgIterator const &Pkg) APT_OVERRIDE;
-   virtual signed short GetPriority(pkgCache::VerIterator const &Pkg);
+   virtual signed short GetPriority(pkgCache::VerIterator const &Pkg, bool ConsiderFiles = true);
    virtual signed short GetPriority(pkgCache::PkgFileIterator const &File) APT_OVERRIDE;
 
    bool InitDefaults();
index 253b1b7a33d6ab58022cdaa113d09aff03c1bebf..8acecd735f9da90642a3f2a29e0b3766c5295f97 100644 (file)
@@ -533,9 +533,16 @@ signed int pkgTagSection::FindI(const char *Tag,signed long Default) const
       return Default;
    strncpy(S,Start,Stop-Start);
    S[Stop - Start] = 0;
-   
+
+   errno = 0;
    char *End;
    signed long Result = strtol(S,&End,10);
+   if (errno == ERANGE)
+      _error->Errno("strtol", _("Cannot convert %s to integer"), S);
+   if (Result < std::numeric_limits<int>::min() || Result > std::numeric_limits<int>::max()) {
+      errno = ERANGE;
+      _error->Errno("", _("Cannot convert %s to integer"), S);
+   }
    if (S == End)
       return Default;
    return Result;
index cfdc13259837c92b03f4a301d3e1a79e9eb50819..fa84168242680d30d7270d4e8465bcbb2c8d7b4f 100644 (file)
@@ -242,6 +242,7 @@ static bool addArgumentsAPT(std::vector<CommandLine::Args> &Args, char const * c
    if (CmdMatches("list"))
    {
       addArg(0,"installed","APT::Cmd::Installed",0);
+      addArg(0,"upgradeable","APT::Cmd::Upgradable",0);
       addArg(0,"upgradable","APT::Cmd::Upgradable",0);
       addArg(0,"manual-installed","APT::Cmd::Manual-Installed",0);
       addArg('v', "verbose", "APT::Cmd::List-Include-Summary", 0);
index 0748749032aa1d61433f4cf3a31cab0c36de83e5..d2b4bed51ee927541e0b5acac833076c8850880b 100644 (file)
@@ -128,7 +128,7 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask, bool Safety)
    pkgSourceList *List = Cache.GetSourceList();
    
    // Create the package manager and prepare to download
-   SPtr<pkgPackageManager> PM= _system->CreatePM(Cache);
+   std::unique_ptr<pkgPackageManager> PM(_system->CreatePM(Cache));
    if (PM->GetArchives(&Fetcher,List,&Recs) == false || 
        _error->PendingError() == true)
       return false;
@@ -492,9 +492,9 @@ bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, CacheFile &Cache,
    if (Cache->BrokenCount() != 0)
       BrokenFix = true;
 
-   SPtr<pkgProblemResolver> Fix;
+   std::unique_ptr<pkgProblemResolver> Fix(nullptr);
    if (_config->FindB("APT::Get::CallResolver", true) == true)
-      Fix = new pkgProblemResolver(Cache);
+      Fix.reset(new pkgProblemResolver(Cache));
 
    unsigned short fallback = MOD_INSTALL;
    if (strcasecmp(CmdL.FileList[0],"remove") == 0)
@@ -526,8 +526,8 @@ bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, CacheFile &Cache,
    }
 
 
-  TryToInstall InstallAction(Cache, Fix, BrokenFix);
-  TryToRemove RemoveAction(Cache, Fix);
+  TryToInstall InstallAction(Cache, Fix.get(), BrokenFix);
+  TryToRemove RemoveAction(Cache, Fix.get());
 
    // new scope for the ActionGroup
    {
index 66ab33c2ba8704327ee83a1cf949a560c93128ca..c6b1ee6698ce81477c1b222ed18bb343649a0296 100644 (file)
 /* If there is no socklen_t, define this for the netdb shim */
 #undef NEED_SOCKLEN_T_DEFINE
 
-/* We need the getresuid() function */
+/* Check for getresuid() function and similar ones */
 #undef HAVE_GETRESUID
 #undef HAVE_GETRESGID
+#undef HAVE_SETRESUID
+#undef HAVE_SETRESGID
 
 /* Define to the size of the filesize containing structures */
 #undef _FILE_OFFSET_BITS
index e61914298ba8fefb2d3afcb647779ad343c56a84..117a4429235c07aad383f6ec692086b0c2a806a8 100644 (file)
@@ -749,9 +749,9 @@ static bool ShowDepends(CommandLine &CmdL, bool const RevDepends)
              }
            
            // Display all solutions
-           SPtrArray<pkgCache::Version *> List = D.AllTargets();
-           pkgPrioSortList(*Cache,List);
-           for (pkgCache::Version **I = List; *I != 0; I++)
+           std::unique_ptr<pkgCache::Version *[]> List(D.AllTargets());
+           pkgPrioSortList(*Cache,List.get());
+           for (pkgCache::Version **I = List.get(); *I != 0; I++)
            {
               pkgCache::VerIterator V(*Cache,*I);
               if (V != Cache->VerP + V.ParentPkg()->VersionList ||
@@ -1667,19 +1667,33 @@ static bool Policy(CommandLine &CmdL)
       pkgCache::PkgIterator I = Cache->PkgBegin();
       for (;I.end() != true; ++I)
       {
-        if (Plcy->GetPriority(I) == 0)
+        // Old code for debugging
+        if (_config->FindI("APT::Policy", 1) < 1) {
+           if (Plcy->GetPriority(I) == 0)
+              continue;
+
+           // Print the package name and the version we are forcing to
+           cout << "     " << I.FullName(true) << " -> ";
+
+           pkgCache::VerIterator V = Plcy->GetMatch(I);
+           if (V.end() == true)
+              cout << _("(not found)") << endl;
+           else
+              cout << V.VerStr() << endl;
+
            continue;
+        }
+        // New code
+        for (pkgCache::VerIterator V = I.VersionList(); !V.end(); V++) {
+           auto Prio = Plcy->GetPriority(V, false);
+           if (Prio == 0)
+              continue;
 
-        // Print the package name and the version we are forcing to
-        cout << "     " << I.FullName(true) << " -> ";
-        
-        pkgCache::VerIterator V = Plcy->GetMatch(I);
-        if (V.end() == true)
-           cout << _("(not found)") << endl;
-        else
-           cout << V.VerStr() << endl;
-      }     
-      
+           cout << "     ";
+           // Print the package name and the version we are forcing to
+           ioprintf(cout, _("%s -> %s with priority %d\n"), I.FullName(true).c_str(), V.VerStr(), Prio);
+        }
+      }
       return true;
    }
 
@@ -1715,7 +1729,7 @@ static bool Policy(CommandLine &CmdL)
         cout << V.VerStr() << endl;
 
       // Pinned version
-      if (Plcy->GetPriority(Pkg) != 0)
+      if (_config->FindI("APT::Policy", 1) < 1 && Plcy->GetPriority(Pkg) != 0)
       {
         cout << _("  Package pin: ");
         V = Plcy->GetMatch(Pkg);
@@ -1733,7 +1747,10 @@ static bool Policy(CommandLine &CmdL)
            cout << " *** " << V.VerStr();
         else
            cout << "     " << V.VerStr();
-        cout << " " << Plcy->GetPriority(V) << endl;
+        if (_config->FindI("APT::Policy", 1) < 1)
+           cout << " " << Plcy->GetPriority(Pkg) << endl;
+        else
+           cout << " " << Plcy->GetPriority(V) << endl;
         for (pkgCache::VerFileIterator VF = V.FileList(); VF.end() == false; ++VF)
         {
            // Locate the associated index files so we can derive a description
index b0e6468339361dc9f309073ca3dc81a0c42bde5c..61ed41164c52384cf7dbe813486bb33da30245e7 100644 (file)
@@ -701,7 +701,7 @@ static bool DoSource(CommandLine &CmdL)
    AcqTextStatus Stat(std::cout, ScreenWidth,_config->FindI("quiet",0));
    pkgAcquire Fetcher(&Stat);
 
-   SPtrArray<DscFile> Dsc = new DscFile[CmdL.FileSize()];
+   std::unique_ptr<DscFile[]> Dsc(new DscFile[CmdL.FileSize()]);
    
    // insert all downloaded uris into this set to avoid downloading them
    // twice
@@ -1000,7 +1000,7 @@ static bool DoBuildDep(CommandLine &CmdL)
    {
       string Src;
       pkgSrcRecords::Parser *Last = 0;
-      SPtr<pkgSrcRecords::Parser> LastOwner;
+      std::unique_ptr<pkgSrcRecords::Parser> LastOwner;
 
       // an unpacked debian source tree
       using APT::String::Startswith;
@@ -1012,7 +1012,7 @@ static bool DoBuildDep(CommandLine &CmdL)
          std::string TypeName = "Debian control file";
          pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(TypeName.c_str());
          if(Type != NULL)
-            LastOwner = Last = Type->CreateSrcPkgParser(*I);
+            LastOwner.reset(Last = Type->CreateSrcPkgParser(*I));
       }
       // if its a local file (e.g. .dsc) use this
       else if (FileExists(*I))
@@ -1023,7 +1023,7 @@ static bool DoBuildDep(CommandLine &CmdL)
          string TypeName = "Debian " + flExtension(*I) + " file";
          pkgIndexFile::Type *Type = pkgIndexFile::Type::GetType(TypeName.c_str());
          if(Type != NULL)
-            LastOwner = Last = Type->CreateSrcPkgParser(*I);
+            LastOwner.reset(Last = Type->CreateSrcPkgParser(*I));
       } else {
          // normal case, search the cache for the source file
         Last = FindSrc(*I,SrcRecs,Src,Cache);
index 2221833a183ac32791ba7a2dc1e372064f6bb9b1..feba7be61a34d3ae3f41958dd3d4a1abc43865ef 100644 (file)
@@ -174,9 +174,11 @@ AC_EGREP_HEADER(h_errno, netdb.h, [AC_MSG_RESULT(normal)],
 
 
 dnl check for setuid checking function
-AC_CHECK_FUNCS(getresuid getresgid)
+AC_CHECK_FUNCS(getresuid getresgid setresuid setresgid)
 AC_SUBST(HAVE_GETRESUID)
 AC_SUBST(HAVE_GETRESGID)
+AC_SUBST(HAVE_SETRESUID)
+AC_SUBST(HAVE_SETRESGID)
 
 dnl Check for doxygen
 AC_PATH_PROG(DOXYGEN, doxygen)
index 29bf96751832bb997d84a3aa934476fa7cda4eeb..e00b6417af2dda826d349170462c210327ed1a70 100644 (file)
@@ -44,7 +44,8 @@
      display a list of packages. It supports shell pattern for matching 
      package names and the following options:
        <option>--installed</option>, 
-       <option>--upgradable</option>, 
+       <option>--upgradable</option>,
+       <option>--upgradeable</option>,
        <option>--all-versions</option>
      are supported.
      </para></listitem>
index 5ea59bf9cb250b045ef78bc168525ab8c22cb055..28b795d430abadfa0bf8d4490d32610afce5236c 100644 (file)
@@ -339,14 +339,21 @@ only if there is no installed version of the package</simpara></listitem>
 <term>P &lt; 0</term>
 <listitem><simpara>prevents the version from being installed</simpara></listitem>
 </varlistentry>
+<varlistentry>
+<term>P = 0</term>
+<listitem><simpara>has undefined behaviour, do not use it.</simpara></listitem>
+</varlistentry>
 </variablelist>
 </para>
 
-<para>If any specific-form records match an available package version then the
-first such record determines the priority of the package version.  
-Failing that,
-if any general-form records match an available package version then the
-first such record determines the priority of the package version.</para>
+<para>
+The first specific-form record matching an available package version determines
+the priority of the package version.
+Failing that, the priority of the package is defined as the maximum of all
+priorities defined by generic-form records matching the version.
+Records defined using patterns in the Pin field other than "*" are treated like
+specific-form records.
+</para>
 
 <para>For example, suppose the APT preferences file contains the three
 records presented earlier:</para>
index fc3b5a6c6872435c53096fe39dcd00bc41d36152..35db9571d2109dbaef8f19f4cb0b0ab97a9303e9 100644 (file)
@@ -531,7 +531,8 @@ msgid ""
 "<literal>list</literal> is used to display a list of packages. It supports "
 "shell pattern for matching package names and the following options: "
 "<option>--installed</option>, <option>--upgradable</option>, "
-"<option>--all-versions</option> are supported."
+"<option>--upgradeable</option>, <option>--all-versions</option> are "
+"supported."
 msgstr ""
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
index 12d6a4c4d3338ca7199c4f9efbf23a4a28caa0d7..4f001b85e71d2c451c0b1510efbc180f744157ac 100644 (file)
@@ -662,13 +662,13 @@ msgstr ""
 msgid ""
 "<literal>list</literal> is used to display a list of packages. It supports "
 "shell pattern for matching package names and the following options: "
-"<option>--installed</option>, <option>--upgradable</option>, <option>--all-"
+"<option>--installed</option>, <option>--upgradable</option>, <option>--upgradeable</option>, <option>--all-"
 "versions</option> are supported."
 msgstr ""
 "<literal>list</literal> wird benutzt, um eine Paketliste anzuzeigen. Es "
 "unterstützt Shell-Muster zur Beschränkung auf passende Paketnamen. Die "
 "folgenden Optionen werden unterstützt: <option>--installed</option>, "
-"<option>--upgradable</option>, <option>--all-versions</option>."
+"<option>--upgradable</option>, <option>--upgradeable</option>, <option>--all-versions</option>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml:54
index 9ace0bd4f01ca50d2814dd540f70472246b458a8..84dd3a127d0ff8ded6fd3ca57c09eb258f1b5ec3 100644 (file)
@@ -742,7 +742,7 @@ msgstr ""
 msgid ""
 "<literal>list</literal> is used to display a list of packages. It supports "
 "shell pattern for matching package names and the following options: "
-"<option>--installed</option>, <option>--upgradable</option>, <option>--all-"
+"<option>--installed</option>, <option>--upgradable</option>, <option>--upgradeable</option>, <option>--all-"
 "versions</option> are supported."
 msgstr ""
 
index 8d7c29f37bbaa6d210ae4f25c44a2c2286bcfd1d..d1e60a655af1322e7d1b3b8bef39e12c1714011e 100644 (file)
@@ -658,7 +658,7 @@ msgstr ""
 msgid ""
 "<literal>list</literal> is used to display a list of packages. It supports "
 "shell pattern for matching package names and the following options: "
-"<option>--installed</option>, <option>--upgradable</option>, <option>--all-"
+"<option>--installed</option>, <option>--upgradable</option>, <option>--upgradeable</option>, <option>--all-"
 "versions</option> are supported."
 msgstr ""
 "La commande <literal>list</literal> est utilisée pour afficher une liste de "
index 21d5611ea372b6a9a7e1e3180a3d73e82a589664..af5fa2914c0e62ed197019bf3de7a5314df8633d 100644 (file)
@@ -710,13 +710,13 @@ msgstr ""
 msgid ""
 "<literal>list</literal> is used to display a list of packages. It supports "
 "shell pattern for matching package names and the following options: "
-"<option>--installed</option>, <option>--upgradable</option>, <option>--all-"
+"<option>--installed</option>, <option>--upgradable</option>, <option>--upgradeable</option>, <option>--all-"
 "versions</option> are supported."
 msgstr ""
 "<literal>list</literal> viene usato per visualizzare un elenco di pacchetti. "
 "Permette l'uso dei modelli di shell per la corrispondenza con nomi di "
 "pacchetto e sono gestite le seguenti opzioni: <option>--installed</option>, "
-"<option>--upgradable</option>, <option>--all-versions</option>."
+"<option>--upgradable</option>, <option>--upgradeable</option>, <option>--all-versions</option>."
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
 #: apt.8.xml:54
index 5d6c183cb65b4a04477a09dafa04b9a837fd75cb..a74d2af3aa7d990985cf28f2cd9d13d8922e60f6 100644 (file)
@@ -704,12 +704,12 @@ msgstr ""
 msgid ""
 "<literal>list</literal> is used to display a list of packages. It supports "
 "shell pattern for matching package names and the following options: "
-"<option>--installed</option>, <option>--upgradable</option>, <option>--all-"
+"<option>--installed</option>, <option>--upgradable</option>, <option>--upgradeable</option>, <option>--all-"
 "versions</option> are supported."
 msgstr ""
 "パッケージ一覧を表示するには <literal>list</literal> を使います。パッケージ名"
 "のマッチングにシェルパターン、そしてオプション <option>--installed</"
-"option>、 <option>--upgradable</option>、 <option>--all-versions</option> を"
+"option>、 <option>--upgradable</option>, <option>--upgradeable</option>、 <option>--all-versions</option> を"
 "サポートしています。"
 
 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
index 3d89db060bb980032bde9717eeda929b22fec4da..229ac02c11b52ca5af30232c2a73b76f337ecf0e 100644 (file)
@@ -700,7 +700,7 @@ msgstr ""
 msgid ""
 "<literal>list</literal> is used to display a list of packages. It supports "
 "shell pattern for matching package names and the following options: "
-"<option>--installed</option>, <option>--upgradable</option>, <option>--all-"
+"<option>--installed</option>, <option>--upgradable</option>, <option>--upgradeable</option>, <option>--all-"
 "versions</option> are supported."
 msgstr ""
 
index dc91fddca0dc8bcfd6604f5608bd418e7fff6388..35efdfe3089ca29b7f352e6c16bdc544bf5e1bdc 100644 (file)
@@ -707,7 +707,7 @@ msgstr ""
 msgid ""
 "<literal>list</literal> is used to display a list of packages. It supports "
 "shell pattern for matching package names and the following options: "
-"<option>--installed</option>, <option>--upgradable</option>, <option>--all-"
+"<option>--installed</option>, <option>--upgradable</option>, <option>--upgradeable</option>, <option>--all-"
 "versions</option> are supported."
 msgstr ""
 "<literal>list</literal> é usado para mostrar uma lista de pacotes. Suporta "
index b6bd0fe092d3333bf858d9d0c4337e534e6f12ab..9a9f8ec5604e27a7f188745617a8ec4bad033a15 100644 (file)
@@ -523,7 +523,7 @@ msgstr ""
 msgid ""
 "<literal>list</literal> is used to display a list of packages. It supports "
 "shell pattern for matching package names and the following options: "
-"<option>--installed</option>, <option>--upgradable</option>, <option>--all-"
+"<option>--installed</option>, <option>--upgradable</option>, <option>--upgradeable</option>, <option>--all-"
 "versions</option> are supported."
 msgstr ""
 
index 1bc926d2157dcea06f457b7dc89d435f7e21862f..7f09a3758580d59cd7c2904acc3f4f48674cb7cc 100644 (file)
@@ -420,7 +420,7 @@ bool PackagesWriter::DoPackage(string FileName)
       Architecture = Arch;
    else
       Architecture = Tags.FindS("Architecture");
-   auto_ptr<Override::Item> OverItem(Over.GetItem(Package,Architecture));
+   unique_ptr<Override::Item> OverItem(Over.GetItem(Package,Architecture));
    
    if (Package.empty() == true)
       return _error->Error(_("Archive had no package field"));
@@ -434,7 +434,7 @@ bool PackagesWriter::DoPackage(string FileName)
         ioprintf(c1out, _("  %s has no override entry\n"), Package.c_str());
       }
       
-      OverItem = auto_ptr<Override::Item>(new Override::Item);
+      OverItem = unique_ptr<Override::Item>(new Override::Item);
       OverItem->FieldOverride["Section"] = Tags.FindS("Section");
       OverItem->Priority = Tags.FindS("Priority");
    }
@@ -660,7 +660,7 @@ bool SourcesWriter::DoPackage(string FileName)
    string BestPrio;
    string Bins = Tags.FindS("Binary");
    char Buffer[Bins.length() + 1];
-   auto_ptr<Override::Item> OverItem(0);
+   unique_ptr<Override::Item> OverItem(nullptr);
    if (Bins.empty() == false)
    {
       strcpy(Buffer,Bins.c_str());
@@ -673,7 +673,7 @@ bool SourcesWriter::DoPackage(string FileName)
       unsigned char BestPrioV = pkgCache::State::Extra;
       for (unsigned I = 0; BinList[I] != 0; I++)
       {
-        auto_ptr<Override::Item> Itm(BOver.GetItem(BinList[I]));
+        unique_ptr<Override::Item> Itm(BOver.GetItem(BinList[I]));
         if (Itm.get() == 0)
            continue;
 
@@ -685,7 +685,7 @@ bool SourcesWriter::DoPackage(string FileName)
         }       
 
         if (OverItem.get() == 0)
-           OverItem = Itm;
+           OverItem = std::move(Itm);
       }
    }
    
@@ -698,23 +698,23 @@ bool SourcesWriter::DoPackage(string FileName)
         ioprintf(c1out, _("  %s has no override entry\n"), Tags.FindS("Source").c_str());
       }
       
-      OverItem = auto_ptr<Override::Item>(new Override::Item);
+      OverItem.reset(new Override::Item);
    }
    
    struct stat St;
    if (stat(FileName.c_str(), &St) != 0)
       return _error->Errno("fstat","Failed to stat %s",FileName.c_str());
 
-   auto_ptr<Override::Item> SOverItem(SOver.GetItem(Tags.FindS("Source")));
-   // const auto_ptr<Override::Item> autoSOverItem(SOverItem);
+   unique_ptr<Override::Item> SOverItem(SOver.GetItem(Tags.FindS("Source")));
+   // const unique_ptr<Override::Item> autoSOverItem(SOverItem);
    if (SOverItem.get() == 0)
    {
       ioprintf(c1out, _("  %s has no source override entry\n"), Tags.FindS("Source").c_str());
-      SOverItem = auto_ptr<Override::Item>(BOver.GetItem(Tags.FindS("Source")));
+      SOverItem = unique_ptr<Override::Item>(BOver.GetItem(Tags.FindS("Source")));
       if (SOverItem.get() == 0)
       {
         ioprintf(c1out, _("  %s has no binary override entry either\n"), Tags.FindS("Source").c_str());
-        SOverItem = auto_ptr<Override::Item>(new Override::Item);
+        SOverItem = unique_ptr<Override::Item>(new Override::Item);
         *SOverItem = *OverItem;
       }
    }
index 0e3ae69b144e9679b208627659a298bf6241f1fe..eb41bb221c9d927dfbe22e87673aee07886e5ca8 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -1507,7 +1507,7 @@ msgstr ""
 #. careful with hard to type or special characters (like non-breaking spaces)
 #: apt-private/private-install.cc:195
 msgid "Yes, do as I say!"
-msgstr "Oui, faites ce que je vous dis !"
+msgstr "Oui, faites ce que je vous dis !"
 
 #: apt-private/private-install.cc:197
 #, c-format
index ede9ad6aa6bfce0f0b7eecf64c51005b72b4beca..435b6876e0bd990000e704db92cb1961fa997f77 100755 (executable)
@@ -33,20 +33,17 @@ Pin-Priority: $2" > rootdir/etc/apt/preferences
 
 
 testpinning() {
-       local PKGPIN=''
        local PKGPINPRIO=''
        local REPPINPRIO=''
        if [ "$1" != '*' ]; then
                PKGPINPRIO=''
                REPPINPRIO=' 500'
-               PKGPIN='Package pin: 5.0.0
-  '
        fi
        writepin "$1" '99'
        testsuccessequal "base-files:
   Installed: 5.0.0-1
   Candidate: 5.0.0-1
-  ${PKGPIN}Version table:
+  Version table:
  *** 5.0.0-1 100
         100 $STATUS
      5.0.0 ${PKGPINPRIO:-99}
@@ -56,7 +53,7 @@ testpinning() {
        testsuccessequal "base-files:
   Installed: 5.0.0-1
   Candidate: 5.0.0-1
-  ${PKGPIN}Version table:
+  Version table:
  *** 5.0.0-1 100
         100 $STATUS
      5.0.0 ${PKGPINPRIO:-100}
@@ -66,7 +63,7 @@ testpinning() {
        testsuccessequal "base-files:
   Installed: 5.0.0-1
   Candidate: 5.0.0-1
-  ${PKGPIN}Version table:
+  Version table:
  *** 5.0.0-1 100
         100 $STATUS
      5.0.0 ${PKGPINPRIO:-999}
@@ -76,7 +73,7 @@ testpinning() {
        testsuccessequal "base-files:
   Installed: 5.0.0-1
   Candidate: 5.0.0
-  ${PKGPIN}Version table:
+  Version table:
  *** 5.0.0-1 100
         100 $STATUS
      5.0.0 ${PKGPINPRIO:-1000}
index c4f478efceaa84753101457922cfeaa34a55605d..d54e1bc366b7e602fe29a7ebf0aa60c07b958d1b 100755 (executable)
@@ -89,11 +89,6 @@ testequalpolicycoolstuff() {
        local AB="$3"
        local AS="$4"
        local PB="$5"
-       local PINVERSION="$6"
-       if [ -n "$PINVERSION" ]; then
-               PINVERSION="Package pin: $PINVERSION
-  "
-       fi
        local IS=""
        local IB=""
        local SB=""
@@ -118,7 +113,7 @@ testequalpolicycoolstuff() {
        testsuccessequal "coolstuff:
   Installed: $INSTALLED
   Candidate: $CANDIDATE
-  ${PINVERSION}Version table:${BPO2ARCHIVE}
+  Version table:${BPO2ARCHIVE}
  $IB 2.0~bpo1 $PB
 ${BPO1ARCHIVE}$SB
  $IS 1.0 $AS