]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/clean.cc
testcases runable as root
[apt.git] / apt-pkg / clean.cc
index 9c167eaa505b82b3ae593f5c226f9c20506d49a8..6edce5b6db0edf3e57759dc3f8a20055ccac8c21 100644 (file)
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/aptconfiguration.h>
 #include <apt-pkg/fileutl.h>
 #include <apt-pkg/configuration.h>
 #include <apt-pkg/aptconfiguration.h>
 #include <apt-pkg/fileutl.h>
+#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/cacheiterators.h>
 
 
+#include <string>
+#include <string.h>
 #include <dirent.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <dirent.h>
 #include <sys/stat.h>
 #include <unistd.h>
 bool pkgArchiveCleaner::Go(std::string Dir,pkgCache &Cache)
 {
    bool CleanInstalled = _config->FindB("APT::Clean-Installed",true);
 bool pkgArchiveCleaner::Go(std::string Dir,pkgCache &Cache)
 {
    bool CleanInstalled = _config->FindB("APT::Clean-Installed",true);
-      
+
+   if(Dir == "/")
+      return _error->Error(_("Clean of %s is not supported"), Dir.c_str());
+
    DIR *D = opendir(Dir.c_str());
    if (D == 0)
       return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
    DIR *D = opendir(Dir.c_str());
    if (D == 0)
       return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
@@ -81,12 +88,13 @@ bool pkgArchiveCleaner::Go(std::string Dir,pkgCache &Cache)
       if (*I != '.')
         continue;
       std::string const Arch = DeQuoteString(std::string(Start,I-Start));
       if (*I != '.')
         continue;
       std::string const Arch = DeQuoteString(std::string(Start,I-Start));
-      
+
+      // ignore packages of unconfigured architectures
       if (APT::Configuration::checkArchitecture(Arch) == false)
         continue;
       
       // Lookup the package
       if (APT::Configuration::checkArchitecture(Arch) == false)
         continue;
       
       // Lookup the package
-      pkgCache::PkgIterator P = Cache.FindPkg(Pkg);
+      pkgCache::PkgIterator P = Cache.FindPkg(Pkg, Arch);
       if (P.end() != true)
       {
         pkgCache::VerIterator V = P.VersionList();
       if (P.end() != true)
       {
         pkgCache::VerIterator V = P.VersionList();
@@ -104,7 +112,7 @@ bool pkgArchiveCleaner::Go(std::string Dir,pkgCache &Cache)
               break;
            }
            
               break;
            }
            
-           // See if this verison matches the file
+           // See if this version matches the file
            if (IsFetchable == true && Ver == V.VerStr())
               break;
         }
            if (IsFetchable == true && Ver == V.VerStr())
               break;
         }
@@ -123,3 +131,5 @@ bool pkgArchiveCleaner::Go(std::string Dir,pkgCache &Cache)
    return true;
 }
                                                                        /*}}}*/
    return true;
 }
                                                                        /*}}}*/
+
+APT_CONST pkgArchiveCleaner::~pkgArchiveCleaner() {}