[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/sysadmin/libqapt/src
From:       Jonathan Michael Thomas <echidnaman () kubuntu ! org>
Date:       2010-12-22 15:51:28
Message-ID: 20101222155128.AB9EAAC8AB () svn ! kde ! org
[Download RAW message or body]

SVN commit 1208629 by jmthomas:

Re-apply the packageCacheFile port from revision 1191219 with a few changes to fix \
regressions that led to that revision's reversion. We have saved ~50 lines of code \
and are no longer rolling our own APT cache code.


 M  +12 -45    cache.cpp  


--- trunk/extragear/sysadmin/libqapt/src/cache.cpp #1208628:1208629
@@ -22,12 +22,10 @@
 
 #include <QtCore/QCoreApplication>
 
-#include <apt-pkg/depcache.h>
-#include <apt-pkg/error.h>
-#include <apt-pkg/sourcelist.h>
-#include <apt-pkg/pkgcachegen.h>
-#include <apt-pkg/policy.h>
+#include <apt-pkg/cachefile.h>
 
+#include <unistd.h>
+
 namespace QApt {
 
 class CacheBuildProgress : public OpProgress
@@ -45,33 +43,20 @@
 {
 public:
     CachePrivate()
-        : mmap(0)
-        , cache(0)
-        , policy(0)
-        , depCache(0)
-        , list(new pkgSourceList)
+        : cache(0)
         , trustCache(new QHash<pkgCache::PkgFileIterator, pkgIndexFile*>)
     {
     }
 
     virtual ~CachePrivate()
     {
-        delete list;
         delete cache;
-        delete policy;
-        delete depCache;
-        delete mmap;
         delete trustCache;
     }
 
-    CacheBuildProgress m_progressMeter;
-    MMap *mmap;
-
-    pkgCache *cache;
-    pkgPolicy *policy;
-
+    CacheBuildProgress progressMeter;
+    pkgCacheFile *cache;
     pkgDepCache *depCache;
-    pkgSourceList *list;
 
     QHash<pkgCache::PkgFileIterator, pkgIndexFile*> *trustCache;
 };
@@ -94,41 +79,23 @@
     // delete any old structures
     delete d->cache;
     d->cache = 0;
-
-    delete d->policy;
-    d->policy = 0;
-
-    delete d->depCache;
     d->depCache = 0;
 
-    delete d->mmap;
-    d->mmap = 0;
+    bool shouldLock = (geteuid == 0);
 
+    d->cache = new pkgCacheFile();
+
     // Read the sources list
-    if (!d->list->ReadMainList()) {
+    if (!d->cache->Open(&d->progressMeter, shouldLock)) {
         return false;
     }
 
-    pkgMakeStatusCache(*(d->list), d->m_progressMeter, &(d->mmap), true);
-    d->m_progressMeter.Done();
     if (_error->PendingError()) {
         return false;
     }
 
-    // Open the cache file
-    d->cache = new pkgCache(d->mmap);
-    d->policy = new pkgPolicy(d->cache);
-    if (!ReadPinFile(*(d->policy)) || !ReadPinDir(*(d->policy))) {
-        return false;
-    }
+    d->depCache = *d->cache;
 
-    if (_error->PendingError()) {
-        return false;
-    }
-
-    d->depCache = new pkgDepCache(d->cache, d->policy);
-    d->depCache->Init(&(d->m_progressMeter));
-
     d->trustCache->clear();
 
     if (d->depCache->DelCount() != 0 || d->depCache->InstCount() != 0) {
@@ -149,7 +116,7 @@
 {
     Q_D(const Cache);
 
-    return d->list;
+    return d->cache->GetSourceList();
 }
 
 QHash<pkgCache::PkgFileIterator, pkgIndexFile*> *Cache::trustCache() const


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic