Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1bfcf55796595d334c00778d53c1b346998521c6

commit 1bfcf55796595d334c00778d53c1b346998521c6
Author: Michel Hermier <herm...@frugalware.org>
Date:   Sat Oct 18 12:10:12 2014 +0200

libpacman: Introduce package_ptr abstraction, will be a refcounted_ptr in the 
future.

diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp
index 5983b53..e498ea9 100644
--- a/lib/libpacman/database_cache.cpp
+++ b/lib/libpacman/database_cache.cpp
@@ -56,7 +56,7 @@ int _pacman_db_load_grpcache(Database *db);
static
int _pacman_db_load_pkgcache(Database *db)
{
-       Package *info;
+       package_ptr info;

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));

@@ -99,7 +99,7 @@ libpacman::package_set &Database::get_packages()
return pkgcache;
}

-int Database::add_pkgincache(Package *pkg)
+int Database::add_pkgincache(package_ptr pkg)
{
if(pkg == NULL) {
return(-1);
@@ -114,7 +114,7 @@ int Database::add_pkgincache(Package *pkg)
return(0);
}

-int Database::remove_pkgfromcache(Package *pkg)
+int Database::remove_pkgfromcache(package_ptr pkg)
{
if(pkg == NULL) {
return(-1);
@@ -162,7 +162,7 @@ int _pacman_db_load_grpcache(Database *db)
_pacman_log(PM_LOG_DEBUG, _("loading group cache for repository '%s'"), 
db->treename());

for(auto it = cache.begin(), end = cache.end(); it != end; ++it) {
-               Package *pkg = *it;
+               package_ptr pkg = *it;

if(!(pkg->flags & INFRQ_DESC)) {
pkg->read(INFRQ_DESC);
diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp
index 3d14123..84f265c 100644
--- a/lib/libpacman/db.cpp
+++ b/lib/libpacman/db.cpp
@@ -235,7 +235,7 @@ int Database::rewind()
return -1;
}

-Package *Database::readpkg(unsigned int inforeq)
+package_ptr Database::readpkg(unsigned int inforeq)
{
return NULL;
}
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index a7cfc12..2967331 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -65,14 +65,14 @@ public:

/* Package iterator */
virtual int rewind();
-       virtual libpacman::Package *readpkg(unsigned int inforeq);
-       virtual libpacman::Package *scan(const char *target, unsigned int 
inforeq) = 0;
+       virtual libpacman::package_ptr readpkg(unsigned int inforeq);
+       virtual libpacman::package_ptr scan(const char *target, unsigned int 
inforeq) = 0;

virtual int write(libpacman::Package *info, unsigned int inforeq);

/* Cache operations */
-       int add_pkgincache(libpacman::Package *pkg);
-       int remove_pkgfromcache(libpacman::Package *pkg);
+       int add_pkgincache(libpacman::package_ptr pkg);
+       int remove_pkgfromcache(libpacman::package_ptr pkg);
void free_pkgcache();

FList<libpacman::Package *> filter(const libpacman::PackageMatcher 
&packagematcher);
diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp
index 93a972b..48b2c6f 100644
--- a/lib/libpacman/db/localdb.cpp
+++ b/lib/libpacman/db/localdb.cpp
@@ -228,13 +228,13 @@ LocalDatabase::~LocalDatabase()
}

static
-LocalPackage *_pacman_localdb_pkg_new(LocalDatabase *db, const struct dirent 
*dirent, unsigned int inforeq)
+package_ptr _pacman_localdb_pkg_new(LocalDatabase *db, const struct dirent 
*dirent, unsigned int inforeq)
{
LocalPackage *pkg;
const char *dname;

-       ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL));
-       ASSERT(dirent != NULL, return NULL);
+       ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, nullptr));
+       ASSERT(dirent != NULL, return nullptr);

dname = dirent->d_name;
if((pkg = new LocalPackage(db)) == NULL ||
@@ -244,7 +244,7 @@ LocalPackage *_pacman_localdb_pkg_new(LocalDatabase *db, 
const struct dirent *di
pkg->release();
pkg = NULL;
}
-       return pkg;
+       return package_ptr(pkg);
}

FStringList LocalDatabase::test() const
@@ -319,7 +319,7 @@ int LocalDatabase::rewind()
return 0;
}

-Package *LocalDatabase::readpkg(unsigned int inforeq)
+package_ptr LocalDatabase::readpkg(unsigned int inforeq)
{
struct dirent *ent = NULL;
struct stat sbuf;
@@ -338,7 +338,7 @@ Package *LocalDatabase::readpkg(unsigned int inforeq)
return NULL;
}

-Package *LocalDatabase::scan(const char *target, unsigned int inforeq)
+package_ptr LocalDatabase::scan(const char *target, unsigned int inforeq)
{
struct dirent *ent = NULL;
struct stat sbuf;
diff --git a/lib/libpacman/db/localdb.h b/lib/libpacman/db/localdb.h
index dd4bc44..59d2e29 100644
--- a/lib/libpacman/db/localdb.h
+++ b/lib/libpacman/db/localdb.h
@@ -56,8 +56,8 @@ public:
virtual int close();

virtual int rewind();
-       virtual libpacman::Package *readpkg(unsigned int inforeq);
-       virtual libpacman::Package *scan(const char *target, unsigned int 
inforeq);
+       virtual libpacman::package_ptr readpkg(unsigned int inforeq);
+       virtual libpacman::package_ptr scan(const char *target, unsigned int 
inforeq);

virtual int write(libpacman::Package *info, unsigned int inforeq);

diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp
index b572497..8e8e35c 100644
--- a/lib/libpacman/db/syncdb.cpp
+++ b/lib/libpacman/db/syncdb.cpp
@@ -128,7 +128,7 @@ SyncDatabase::~SyncDatabase()
}

static
-SyncPackage *_pacman_syncdb_pkg_new(SyncDatabase *db, const struct 
archive_entry *entry, unsigned int inforeq)
+package_ptr _pacman_syncdb_pkg_new(SyncDatabase *db, const struct 
archive_entry *entry, unsigned int inforeq)
{
SyncPackage *pkg;
const char *dname;
@@ -144,7 +144,7 @@ SyncPackage *_pacman_syncdb_pkg_new(SyncDatabase *db, const 
struct archive_entry
pkg->release();
pkg = NULL;
}
-       return pkg;
+       return package_ptr(pkg);
}

int _pacman_syncdb_update(Database *db, int force)
@@ -233,7 +233,7 @@ int SyncDatabase::rewind()
return open(0, NULL);
}

-Package *SyncDatabase::readpkg(unsigned int inforeq)
+package_ptr SyncDatabase::readpkg(unsigned int inforeq)
{
struct archive_entry *entry = NULL;

@@ -257,7 +257,7 @@ Package *SyncDatabase::readpkg(unsigned int inforeq)
return NULL;
}

-Package *SyncDatabase::scan(const char *target, unsigned int inforeq)
+package_ptr SyncDatabase::scan(const char *target, unsigned int inforeq)
{
char name[PKG_FULLNAME_LEN];
char *ptr = NULL;
diff --git a/lib/libpacman/db/syncdb.h b/lib/libpacman/db/syncdb.h
index 70803ff..e167a16 100644
--- a/lib/libpacman/db/syncdb.h
+++ b/lib/libpacman/db/syncdb.h
@@ -55,8 +55,8 @@ public:
virtual int close();

virtual int rewind();
-       virtual libpacman::Package *readpkg(unsigned int inforeq);
-       virtual libpacman::Package *scan(const char *target, unsigned int 
inforeq);
+       virtual libpacman::package_ptr readpkg(unsigned int inforeq);
+       virtual libpacman::package_ptr scan(const char *target, unsigned int 
inforeq);

protected:
virtual int open(int flags, libpacman::Timestamp *timestamp);
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 5aecd25..9df27bd 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -186,7 +186,12 @@ public:
bool operator () (const Package *pkg1, const Package *pkg2);
};

-       typedef flib::set<libpacman::Package *, libpacman::less<const 
libpacman::Package *>> package_set;
+       #if 0
+               typedef flib::refcounted_ptr<libpacman::Package> package_ptr;
+       #else
+               typedef libpacman::Package *package_ptr;
+       #endif
+       typedef flib::set<libpacman::package_ptr, libpacman::less<const 
libpacman::Package *>> package_set;

class PackageMatcher
: FMatcher<const libpacman::Package *>
diff --git a/lib/libpacman/sync.h b/lib/libpacman/sync.h
index 80521f0..385a267 100644
--- a/lib/libpacman/sync.h
+++ b/lib/libpacman/sync.h
@@ -37,9 +37,9 @@ struct __pmsyncpkg_t
pmtranstype_t type;
const char *pkg_name;
int m_flags;
-       libpacman::Package *pkg_new;
-       libpacman::Package *pkg_local;
-       FList<libpacman::Package *> m_replaces;
+       libpacman::package_ptr pkg_new;
+       libpacman::package_ptr pkg_local;
+       FList<libpacman::package_ptr> m_replaces;
};

#endif /* _PACMAN_SYNC_H */
diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp
index a3fab40..7aa25c5 100644
--- a/lib/libpacman/trans.cpp
+++ b/lib/libpacman/trans.cpp
@@ -1571,7 +1571,7 @@ int __pmtrans_t::commit(FPtrList **data)
howmany = syncpkgs.size();

for(auto targ = syncpkgs.begin(), end = syncpkgs.end(); targ != end; ++targ) {
-               Package *pkg_new = (*targ)->pkg_new, *pkg_local = 
(*targ)->pkg_local;
+               package_ptr pkg_new = (*targ)->pkg_new, pkg_local = 
(*targ)->pkg_local;
void *event_arg0 = NULL, *event_arg1 = NULL;
pmtranstype_t type = m_type;
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to