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