Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=df1e0b12864de4e62b40348ec3efce858d68fd41
commit df1e0b12864de4e62b40348ec3efce858d68fd41 Author: Michel Hermier <[email protected]> Date: Wed May 7 13:23:56 2014 +0200 libpacman: Make Package::database a getter. diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/cache.cpp index 7a9c6d0..4d967c1 100644 --- a/lib/libpacman/cache.cpp +++ b/lib/libpacman/cache.cpp @@ -198,7 +198,7 @@ int _pacman_db_load_grpcache(Database *db) Package *pkg = lp->data; if(!(pkg->flags & INFRQ_DESC)) { - pkg->database->read(pkg, INFRQ_DESC); + pkg->read(INFRQ_DESC); } for(i = pkg->groups(); i; i = i->next) { diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index 50877ec..4e9912f 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -48,7 +48,7 @@ using namespace libpacman; -LocalPackage::LocalPackage(Database *database) +LocalPackage::LocalPackage(LocalDatabase *database) : Package(database) { } @@ -57,6 +57,11 @@ LocalPackage::~LocalPackage() { } +LocalDatabase *LocalPackage::database() const +{ + return static_cast<LocalDatabase *>(Package::database()); +} + static int _pacman_localpkg_file_reader(Database *db, Package *pkg, unsigned int flags, unsigned int flags_masq, const char *file, int (*reader)(Package *, FILE *)) { @@ -83,6 +88,7 @@ int LocalPackage::read(unsigned int flags) { struct stat buf; char path[PATH_MAX]; + LocalDatabase *database = this->database(); ASSERT(database != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); if(f_strempty(name()) || f_strempty(version())) { @@ -124,7 +130,7 @@ LocalDatabase::~LocalDatabase() } static -LocalPackage *_pacman_localdb_pkg_new(Database *db, const struct dirent *dirent, unsigned int inforeq) +LocalPackage *_pacman_localdb_pkg_new(LocalDatabase *db, const struct dirent *dirent, unsigned int inforeq) { Package *pkg; const char *dname; diff --git a/lib/libpacman/db/localdb.h b/lib/libpacman/db/localdb.h index 51c2221..ea531e5 100644 --- a/lib/libpacman/db/localdb.h +++ b/lib/libpacman/db/localdb.h @@ -30,13 +30,17 @@ const pmdb_ops_t _pacman_localdb_ops; namespace libpacman { +class LocalDatabase; + class LocalPackage : public libpacman::Package { public: - LocalPackage(Database *database = 0); + LocalPackage(LocalDatabase *database = 0); virtual ~LocalPackage(); + virtual LocalDatabase *database() const; + virtual int read(unsigned int flags); }; diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp index bd785eb..10e061f 100644 --- a/lib/libpacman/db/syncdb.cpp +++ b/lib/libpacman/db/syncdb.cpp @@ -61,7 +61,7 @@ int suffixcmp(const char *str, const char *suffix) return strcmp(str + len - suflen, suffix); } -SyncPackage::SyncPackage(Database *database) +SyncPackage::SyncPackage(SyncDatabase *database) : Package(database) { } @@ -70,6 +70,11 @@ SyncPackage::~SyncPackage() { } +SyncDatabase *SyncPackage::database() const +{ + return static_cast<SyncDatabase *>(Package::database()); +} + static int _pacman_syncpkg_file_reader(Database *db, Package *pkg, unsigned int flags, unsigned int flags_masq, int (*reader)(Package *, FILE *)) { @@ -88,6 +93,7 @@ int _pacman_syncpkg_file_reader(Database *db, Package *pkg, unsigned int flags, int SyncPackage::read(unsigned int flags) { int descdone = 0, depsdone = 0; + SyncDatabase *database = this->database(); ASSERT(database != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); if(name()[0] == 0 || version()[0] == 0) { @@ -124,7 +130,7 @@ SyncDatabase::~SyncDatabase() } static -SyncPackage *_pacman_syncdb_pkg_new(Database *db, const struct archive_entry *entry, unsigned int inforeq) +SyncPackage *_pacman_syncdb_pkg_new(SyncDatabase *db, const struct archive_entry *entry, unsigned int inforeq) { Package *pkg; const char *dname; diff --git a/lib/libpacman/db/syncdb.h b/lib/libpacman/db/syncdb.h index 40885b9..880dd12 100644 --- a/lib/libpacman/db/syncdb.h +++ b/lib/libpacman/db/syncdb.h @@ -32,13 +32,17 @@ int _pacman_syncdb_update(libpacman::Database *db, int force); namespace libpacman { +class SyncDatabase; + class SyncPackage : public libpacman::Package { public: - SyncPackage(Database *database = 0); + SyncPackage(SyncDatabase *database = 0); virtual ~SyncPackage(); + virtual SyncDatabase *database() const; + virtual int read(unsigned int flags); }; diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index c7f4ae3..268f89f 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -49,8 +49,8 @@ using namespace libpacman; -Package::Package(Database *_database) - : database(_database), m_reason(PM_PKG_REASON_EXPLICIT) +Package::Package(Database *database) + : m_database(database), m_reason(PM_PKG_REASON_EXPLICIT) { } @@ -69,7 +69,7 @@ Package::Package(const char *name, const char *version) Package::Package(const libpacman::Package &other) { - database = other.database; + m_database = other.m_database; flags = other.flags; STRNCPY(m_name, other.m_name, PKG_NAME_LEN); @@ -126,11 +126,16 @@ Package::~Package() } } -libpacman::Package *Package::dup() const +Package *Package::dup() const { return new Package(*this); } +Database *Package::database() const +{ + return m_database; +} + bool Package::set_filename(const char *filename, int witharch) { if(splitname(filename, m_name, m_version, witharch)) { @@ -260,10 +265,10 @@ bool Package::splitname(const char *target, char *name, char *version, int witha int Package::read(unsigned int flags) { - ASSERT(database != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); + ASSERT(m_database != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); if(~this->flags & flags) { - return database->read(this, flags); + return m_database->read(this, flags); } return 0; } @@ -272,9 +277,9 @@ int Package::write(unsigned int flags) { int ret; - ASSERT(database != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); + ASSERT(m_database != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); - if((ret = database->write(this, flags)) != 0) { + if((ret = m_database->write(this, flags)) != 0) { _pacman_log(PM_LOG_ERROR, _("could not update requiredby for database entry %s-%s"), name(), version()); } @@ -283,9 +288,9 @@ int Package::write(unsigned int flags) int Package::remove() { - ASSERT(database != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); + ASSERT(m_database != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); - return database->remove(this); + return m_database->remove(this); } int Package::filename(char *str, size_t size) const diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 21badb4..3df0028 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -106,6 +106,8 @@ public: virtual libpacman::Package *dup() const; + libpacman::Database *database() const; + virtual int read(unsigned int flags); virtual int write(unsigned int flags); /* Optional */ virtual int remove(); /* Optional */ @@ -119,7 +121,7 @@ public: FStringList *provides() const; bool provides(const char *pkgname); - libpacman::Database *database; + libpacman::Database *m_database; unsigned int flags; char m_name[PKG_NAME_LEN]; _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
