Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4c05e1dfa3a2d6114416174c6f1970e6181565c1
commit 4c05e1dfa3a2d6114416174c6f1970e6181565c1 Author: Michel Hermier <[email protected]> Date: Tue Apr 29 13:58:13 2014 +0200 libpacman: More Package objectifications. diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index d7338b2..1d2c623 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -123,7 +123,7 @@ LocalDatabase::~LocalDatabase() } static -Package *_pacman_localdb_pkg_new(Database *db, const struct dirent *dirent, unsigned int inforeq) +LocalPackage *_pacman_localdb_pkg_new(Database *db, const struct dirent *dirent, unsigned int inforeq) { Package *pkg; const char *dname; @@ -132,8 +132,9 @@ Package *_pacman_localdb_pkg_new(Database *db, const struct dirent *dirent, unsi ASSERT(dirent != NULL, return NULL); dname = dirent->d_name; - if((pkg = _pacman_pkg_new_from_filename(dname, 0, db)) == NULL || - db->read(pkg, inforeq) == -1) { + if((pkg = new LocalPackage(db)) == NULL || + !pkg->set_filename(dname, 0) || + db->read(pkg, inforeq) == -1) { _pacman_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), dname); delete pkg; pkg = NULL; diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp index a7a6bd4..1e99dcb 100644 --- a/lib/libpacman/db/syncdb.cpp +++ b/lib/libpacman/db/syncdb.cpp @@ -124,7 +124,7 @@ SyncDatabase::~SyncDatabase() } static -Package *_pacman_syncdb_pkg_new(Database *db, const struct archive_entry *entry, unsigned int inforeq) +SyncPackage *_pacman_syncdb_pkg_new(Database *db, const struct archive_entry *entry, unsigned int inforeq) { Package *pkg; const char *dname; @@ -133,8 +133,9 @@ Package *_pacman_syncdb_pkg_new(Database *db, const struct archive_entry *entry, ASSERT(entry != NULL, return NULL); dname = archive_entry_pathname((struct archive_entry *)entry); - if((pkg = _pacman_pkg_new_from_filename(dname, 0, db)) == NULL || - db->read(pkg, inforeq) == -1) { + if((pkg = new SyncPackage(db)) == NULL || + !pkg->set_filename(dname, 0) || + db->read(pkg, inforeq) == -1) { _pacman_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), dname); delete pkg; pkg = NULL; diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index a0c4fe8..8a178a9 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -180,17 +180,9 @@ unsigned int _pacman_pkg_parm_to_flag(unsigned char parm) } */ -Package *_pacman_pkg_new_from_filename(const char *filename, int witharch, Database *database) +bool Package::set_filename(const char *filename, int witharch) { - Package *pkg; - - ASSERT(pkg = new Package(database), return NULL); - - if(_pacman_pkg_splitname(filename, pkg->name, pkg->version, witharch) == -1) { - delete pkg; - pkg = NULL; - } - return pkg; + return Package::splitname(filename, name, version, witharch); } int _pacman_pkg_delete(Package *self) @@ -292,13 +284,13 @@ Package *_pacman_pkg_isin(const char *needle, pmlist_t *haystack) return(NULL); } -int _pacman_pkg_splitname(const char *target, char *name, char *version, int witharch) +bool Package::splitname(const char *target, char *name, char *version, int witharch) { char *tmp; char *p, *q; if ((tmp = _pacman_basename(target)) == NULL) { - return -1; + return false; } /* trim file extension (if any) */ if((p = strstr(tmp, PM_EXT_PKG))) { @@ -315,11 +307,11 @@ int _pacman_pkg_splitname(const char *target, char *name, char *version, int wit for(q = --p; *q && *q != '-'; q--); if(*q != '-' || q == tmp) { - return(-1); + return false; } for(p = --q; *p && *p != '-'; p--); if(*p != '-' || p == tmp) { - return(-1); + return false; } if(version) { STRNCPY(version, p+1, PKG_VERSION_LEN); @@ -330,7 +322,7 @@ int _pacman_pkg_splitname(const char *target, char *name, char *version, int wit STRNCPY(name, tmp, PKG_NAME_LEN); } - return(0); + return true; } int Package::read(unsigned int flags) diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 216f3f7..1ede18d 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -105,6 +105,9 @@ public: int filename(char *str, size_t size) const; char *fileneedbackup(const char *file) const; + bool set_filename(const char *filename, int witharch); + static bool splitname(const char *target, char *name, char *version, int witharch); + libpacman::Database *database; unsigned int flags; @@ -148,13 +151,11 @@ public: #define FREELISTPKGS(p) _FREELIST(p, _pacman_pkg_delete) -libpacman::Package *_pacman_pkg_new_from_filename(const char *filename, int witharch, libpacman::Database *database = 0); int _pacman_pkg_delete(libpacman::Package *self); int _pacman_pkg_cmp(const void *p1, const void *p2); int _pacman_pkg_is_valid(const libpacman::Package *pkg, const pmtrans_t *trans, const char *pkgfile); libpacman::Package *_pacman_pkg_isin(const char *needle, pmlist_t *haystack); -int _pacman_pkg_splitname(const char *target, char *name, char *version, int witharch); void *_pacman_pkg_getinfo(libpacman::Package *pkg, unsigned char parm); pmlist_t *_pacman_pkg_getowners(const char *filename); diff --git a/lib/libpacman/package/packagecache.cpp b/lib/libpacman/package/packagecache.cpp index e441787..090af3a 100644 --- a/lib/libpacman/package/packagecache.cpp +++ b/lib/libpacman/package/packagecache.cpp @@ -31,6 +31,8 @@ #include "package.h" #include "handle.h" +using namespace libpacman; + int _pacman_packagecache_clean(int level) { char dirpath[PATH_MAX]; @@ -70,7 +72,7 @@ int _pacman_packagecache_clean(int level) if(strstr(str, PM_EXT_PKG ".part")) { continue; } - if(_pacman_pkg_splitname(str, name, version, 1) != 0) { + if(!Package::splitname(str, name, version, 1)) { clean = _pacman_stringlist_append(clean, str); continue; } @@ -84,7 +86,7 @@ int _pacman_packagecache_clean(int level) if(strstr(s, PM_EXT_PKG ".part")) { continue; } - if(_pacman_pkg_splitname(s, n, v, 1) != 0) { + if(!Package::splitname(s, n, v, 1)) { continue; } if(!strcmp(name, n)) { _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
