Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d7560cc0feb1324fff2ef25cad5a725166031bb8
commit d7560cc0feb1324fff2ef25cad5a725166031bb8 Author: Michel Hermier <[email protected]> Date: Tue Aug 19 13:59:07 2014 +0200 libpacman: Use FPtrList where possible, drop __pmlist_t definition. diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/cache.cpp index 6e3660f..9054537 100644 --- a/lib/libpacman/cache.cpp +++ b/lib/libpacman/cache.cpp @@ -94,7 +94,7 @@ void _pacman_db_free_pkgcache(Database *db) _pacman_db_clear_grpcache(db); } -pmlist_t *_pacman_db_get_pkgcache(Database *db) +FPtrList *_pacman_db_get_pkgcache(Database *db) { ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL)); @@ -147,7 +147,7 @@ int _pacman_db_remove_pkgfromcache(Database *db, Package *pkg) static Group *_pacman_db_get_grpfromlist(FPtrList *list, const char *target) { - pmlist_t *i; + FPtrList *i; if(_pacman_strempty(target)) { return(NULL); @@ -168,7 +168,7 @@ Group *_pacman_db_get_grpfromlist(FPtrList *list, const char *target) */ int _pacman_db_load_grpcache(Database *db) { - pmlist_t *lp; + FPtrList *lp; ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); @@ -177,7 +177,7 @@ int _pacman_db_load_grpcache(Database *db) _pacman_log(PM_LOG_DEBUG, _("loading group cache for repository '%s'"), db->treename); for(; lp; lp = f_ptrlistitem_next(lp)) { - pmlist_t *i; + FPtrList *i; Package *pkg = f_ptrlistitem_data(lp); if(!(pkg->flags & INFRQ_DESC)) { @@ -216,7 +216,7 @@ int _pacman_db_clear_grpcache(Database *db) return 0; } -pmlist_t *_pacman_db_get_grpcache(Database *db) +FPtrList *_pacman_db_get_grpcache(Database *db) { ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL)); diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h index 4d37504..f731e10 100644 --- a/lib/libpacman/cache.h +++ b/lib/libpacman/cache.h @@ -30,9 +30,9 @@ int _pacman_db_load_pkgcache(libpacman::Database *db); void _pacman_db_free_pkgcache(libpacman::Database *db); int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package *pkg); int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package *pkg); -pmlist_t *_pacman_db_get_pkgcache(libpacman::Database *db); +FPtrList *_pacman_db_get_pkgcache(libpacman::Database *db); /* groups */ -pmlist_t *_pacman_db_get_grpcache(libpacman::Database *db); +FPtrList *_pacman_db_get_grpcache(libpacman::Database *db); libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const char *target); #endif /* _PACMAN_CACHE_H */ diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp index aff6195..7b3ec5c 100644 --- a/lib/libpacman/conflict.cpp +++ b/lib/libpacman/conflict.cpp @@ -45,15 +45,15 @@ using namespace libpacman; -/* Returns a pmlist_t* of pmdepmissing_t pointers. +/* Returns a FPtrList* of pmdepmissing_t pointers. * * conflicts are always name only */ -pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) +FPtrList *_pacman_checkconflicts(pmtrans_t *trans, FPtrList *packages) { Package *info = NULL; - pmlist_t *i, *j, *k; - pmlist_t *baddeps = NULL; + FPtrList *i, *j, *k; + FPtrList *baddeps = NULL; pmdepmissing_t *miss = NULL; int howmany, remain; double percent; @@ -101,7 +101,7 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) baddeps = _pacman_depmisslist_add(baddeps, miss); } else { /* see if dp provides something in tp's conflict list */ - pmlist_t *m; + FPtrList *m; for(m = dp->provides(); m; m = f_ptrlistitem_next(m)) { if(!strcmp(f_stringlistitem_to_str(m), conflict)) { /* confict */ @@ -129,7 +129,7 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) baddeps = _pacman_depmisslist_add(baddeps, miss); } else { /* see if otp provides something in tp's conflict list */ - pmlist_t *m; + FPtrList *m; for(m = otp->provides(); m; m = f_ptrlistitem_next(m)) { if(!strcmp(f_stringlistitem_to_str(m), conflict)) { _pacman_log(PM_LOG_DEBUG, _("targs vs targs: found %s as a conflict for %s"), @@ -144,7 +144,7 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) /* CHECK 3: check database against targets */ _pacman_log(PM_LOG_DEBUG, _("checkconflicts: db vs targ '%s'"), tp->name()); for(k = _pacman_db_get_pkgcache(db_local); k; k = f_ptrlistitem_next(k)) { - pmlist_t *conflicts = NULL; + FPtrList *conflicts = NULL; int usenewconflicts = 0; info = (Package *)f_ptrlistitem_data(k); @@ -152,7 +152,7 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) /* a package cannot conflict with itself -- that's just not nice */ continue; } - /* If this package (*info) is also in our packages pmlist_t, use the + /* If this package (*info) is also in our packages FPtrList, use the * conflicts list from the new package, not the old one (*info) */ for(j = packages; j; j = f_ptrlistitem_next(j)) { @@ -175,9 +175,9 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) baddeps = _pacman_depmisslist_add(baddeps, miss); } else { /* see if the db package conflicts with something we provide */ - pmlist_t *m; + FPtrList *m; for(m = conflicts; m; m = f_ptrlistitem_next(m)) { - pmlist_t *n; + FPtrList *n; for(n = tp->provides(); n; n = f_ptrlistitem_next(n)) { if(!strcmp(f_stringlistitem_to_str(m), f_stringlistitem_to_str(n))) { _pacman_log(PM_LOG_DEBUG, _("db vs targs: found %s as a conflict for %s"), @@ -195,14 +195,14 @@ pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages) return(baddeps); } -/* Returns a pmlist_t* of file conflicts. +/* Returns a FPtrList* of file conflicts. * Hooray for set-intersects! * Pre-condition: both lists are sorted! */ -static pmlist_t *chk_fileconflicts(pmlist_t *filesA, pmlist_t *filesB) +static FPtrList *chk_fileconflicts(FPtrList *filesA, FPtrList *filesB) { - pmlist_t *ret = NULL; - pmlist_t *pA = filesA, *pB = filesB; + FPtrList *ret = NULL; + FPtrList *pA = filesA, *pB = filesB; while(pA && pB) { const char *strA = f_stringlistitem_to_str(pA); @@ -232,14 +232,14 @@ static pmlist_t *chk_fileconflicts(pmlist_t *filesA, pmlist_t *filesB) return(ret); } -pmlist_t *_pacman_db_find_conflicts(pmtrans_t *trans) +FPtrList *_pacman_db_find_conflicts(pmtrans_t *trans) { - pmlist_t *i, *j, *k; + FPtrList *i, *j, *k; char *filestr = NULL; char path[PATH_MAX+1]; struct stat buf; - pmlist_t *conflicts = NULL; - pmlist_t *targets = trans->packages; + FPtrList *conflicts = NULL; + FPtrList *targets = trans->packages; Package *p, *dbpkg; double percent; int howmany, remain; @@ -260,7 +260,7 @@ pmlist_t *_pacman_db_find_conflicts(pmtrans_t *trans) for(j = i; j; j = f_ptrlistitem_next(j)) { Package *p2 = (Package*)f_ptrlistitem_data(j); if(strcmp(p1->name(), p2->name())) { - pmlist_t *ret = chk_fileconflicts(p1->files(), p2->files()); + FPtrList *ret = chk_fileconflicts(p1->files(), p2->files()); for(k = ret; k; k = f_ptrlistitem_next(k)) { pmconflict_t *conflict = _pacman_malloc(sizeof(pmconflict_t)); if(conflict == NULL) { diff --git a/lib/libpacman/conflict.h b/lib/libpacman/conflict.h index 9723f20..ab52393 100644 --- a/lib/libpacman/conflict.h +++ b/lib/libpacman/conflict.h @@ -33,8 +33,8 @@ struct __pmconflict_t { char ctarget[PKG_NAME_LEN]; }; -pmlist_t *_pacman_checkconflicts(pmtrans_t *trans, pmlist_t *packages); -pmlist_t *_pacman_db_find_conflicts(pmtrans_t *trans); +FPtrList *_pacman_checkconflicts(pmtrans_t *trans, FPtrList *packages); +FPtrList *_pacman_db_find_conflicts(pmtrans_t *trans); #endif /* _PACMAN_CONFLICT_H */ diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp index b2f8ed0..0561e0f 100644 --- a/lib/libpacman/db.cpp +++ b/lib/libpacman/db.cpp @@ -84,9 +84,9 @@ Database::~Database() free(path); } -pmlist_t *Database::filter(const PackageMatcher &packagematcher) +FPtrList *Database::filter(const PackageMatcher &packagematcher) { - pmlist_t *i, *ret = NULL; + FPtrList *i, *ret = NULL; for(i = _pacman_db_get_pkgcache(this); i; i = f_ptrlistitem_next(i)) { Package *pkg = (Package *)f_ptrlistitem_data(i); @@ -98,14 +98,14 @@ pmlist_t *Database::filter(const PackageMatcher &packagematcher) return ret; } -pmlist_t *Database::filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags) +FPtrList *Database::filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags) { return filter(PackageMatcher(strmatcher, packagestrmatcher_flags)); } FPtrList *Database::filter(const FStringList *needles, int packagestrmatcher_flags, int strmatcher_flags) { - pmlist_t *i, *j, *ret = NULL; + FPtrList *i, *j, *ret = NULL; for(i = needles; i; i = f_ptrlistitem_next(i)) { const char *pattern = f_stringlistitem_to_str(i); @@ -139,7 +139,7 @@ FPtrList *Database::filter(const char *pattern, int packagestrmatcher_flags, int Package *Database::find(const PackageMatcher &packagematcher) { Package *ret = NULL; - pmlist_t *i; + FPtrList *i; for(i = _pacman_db_get_pkgcache(this); i; i = f_ptrlistitem_next(i)) { Package *pkg = (Package *)f_ptrlistitem_data(i); @@ -174,7 +174,7 @@ FPtrList *Database::whatPackagesProvide(const char *target) return filter(target, PM_PACKAGE_FLAG_PROVIDES); } -pmlist_t *Database::test() const +FPtrList *Database::test() const { /* testing sync dbs is not supported */ return f_ptrlist_new(); @@ -236,7 +236,7 @@ int Database::write(Package *info, unsigned int inforeq) RET_ERR(PM_ERR_WRONG_ARGS, -1); // Not supported } -pmlist_t *Database::getowners(const char *filename) +FPtrList *Database::getowners(const char *filename) { return NULL; } diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index 7f4b704..c5c61ec 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -51,7 +51,7 @@ public: virtual ~Database(); /* Prototypes for backends functions */ - virtual pmlist_t *test() const; + virtual FPtrList *test() const; virtual int open(int flags = 0); virtual int close(); @@ -67,8 +67,8 @@ public: virtual int write(libpacman::Package *info, unsigned int inforeq); // Cache operations - pmlist_t *filter(const libpacman::PackageMatcher &packagematcher); - pmlist_t *filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags); + FPtrList *filter(const libpacman::PackageMatcher &packagematcher); + FPtrList *filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags); FPtrList *filter(const FStringList *needles, int packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL); FPtrList *filter(const char *pattern, int packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL); libpacman::Package *find(const libpacman::PackageMatcher &packagematcher); @@ -78,15 +78,15 @@ public: int strmatcher_flags = FStrMatcher::EQUAL); FPtrList *whatPackagesProvide(const char *target); - virtual pmlist_t *getowners(const char *filename); /* Make pure virtual */ + virtual FPtrList *getowners(const char *filename); /* Make pure virtual */ ::libpacman::Handle *m_handle; char *path; char treename[PATH_MAX]; libpacman::Timestamp cache_timestamp; - pmlist_t *pkgcache; - pmlist_t *grpcache; - pmlist_t *servers; + FPtrList *pkgcache; + FPtrList *grpcache; + FPtrList *servers; protected: Database(libpacman::Handle *handle, const char *treename); diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index ff7661a..262ff10 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -134,7 +134,7 @@ int LocalPackage::remove() int _pacman_localpackage_remove(Package *pkg, pmtrans_t *trans, int howmany, int remain) { - pmlist_t *lp; + FPtrList *lp; struct stat buf; int position = 0; Handle *handle = trans->m_handle; @@ -180,7 +180,7 @@ int _pacman_localpackage_remove(Package *pkg, pmtrans_t *trans, int howmany, int * see the big comment block in db_find_conflicts() for an * explanation. */ int skipit = 0; - pmlist_t *j; + FPtrList *j; for(j = trans->skiplist; j; j = f_ptrlistitem_next(j)) { if(!strcmp(file, f_stringlistitem_to_str(j))) { skipit = 1; @@ -251,12 +251,12 @@ LocalPackage *_pacman_localdb_pkg_new(LocalDatabase *db, const struct dirent *di return pkg; } -pmlist_t *LocalDatabase::test() const +FPtrList *LocalDatabase::test() const { struct dirent *ent; char path[PATH_MAX]; struct stat buf; - pmlist_t *ret = f_ptrlist_new(); + FPtrList *ret = f_ptrlist_new(); while ((ent = readdir(m_dir)) != NULL) { snprintf(path, PATH_MAX, "%s/%s", this->path, ent->d_name); @@ -422,9 +422,9 @@ void _pacman_localdb_write_string(const char *entry, const char *value, FILE *st } static -void _pacman_localdb_write_stringlist(const char *entry, const pmlist_t *values, FILE *stream) +void _pacman_localdb_write_stringlist(const char *entry, const FPtrList *values, FILE *stream) { - const pmlist_t *lp; + const FPtrList *lp; if(values != NULL) { fprintf(stream, "%%%s%%\n", entry); @@ -527,12 +527,12 @@ cleanup: return(retval); } -pmlist_t *LocalDatabase::getowners(const char *filename) +FPtrList *LocalDatabase::getowners(const char *filename) { struct stat buf; int gotcha = 0; char rpath[PATH_MAX]; - pmlist_t *lp, *ret = NULL; + FPtrList *lp, *ret = NULL; if(stat(filename, &buf) == -1 || realpath(filename, rpath) == NULL) { RET_ERR(PM_ERR_PKG_OPEN, NULL); @@ -547,7 +547,7 @@ pmlist_t *LocalDatabase::getowners(const char *filename) for(lp = _pacman_db_get_pkgcache(this); lp; lp = f_ptrlistitem_next(lp)) { Package *info = (Package *)f_ptrlistitem_data(lp); - pmlist_t *i; + FPtrList *i; for(i = info->files(); i; i = f_ptrlistitem_next(i)) { char path[PATH_MAX]; diff --git a/lib/libpacman/db/localdb.h b/lib/libpacman/db/localdb.h index 6536125..847798c 100644 --- a/lib/libpacman/db/localdb.h +++ b/lib/libpacman/db/localdb.h @@ -51,7 +51,7 @@ public: LocalDatabase(libpacman::Handle *handle, const char *treename); virtual ~LocalDatabase(); - virtual pmlist_t *test() const; + virtual FPtrList *test() const; virtual int close(); @@ -61,7 +61,7 @@ public: virtual int write(libpacman::Package *info, unsigned int inforeq); - virtual pmlist_t *getowners(const char *filename); + virtual FPtrList *getowners(const char *filename); protected: virtual int open(int flags, libpacman::Timestamp *timestamp); diff --git a/lib/libpacman/db/localdb_files.cpp b/lib/libpacman/db/localdb_files.cpp index 5620782..daafd73 100644 --- a/lib/libpacman/db/localdb_files.cpp +++ b/lib/libpacman/db/localdb_files.cpp @@ -65,7 +65,7 @@ int _pacman_localdb_desc_fread(Package *info, FILE *fp) { char line[512]; int sline = sizeof(line)-1; - pmlist_t *i; + FPtrList *i; Handle *handle = info->database()->m_handle; while(!feof(fp)) { diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp index 2acf022..1b3c894 100644 --- a/lib/libpacman/db/syncdb.cpp +++ b/lib/libpacman/db/syncdb.cpp @@ -152,7 +152,7 @@ SyncPackage *_pacman_syncdb_pkg_new(SyncDatabase *db, const struct archive_entry int _pacman_syncdb_update(Database *db, int force) { char path[PATH_MAX], dirpath[PATH_MAX]; - pmlist_t *files = NULL; + FPtrList *files = NULL; Timestamp newmtime; Timestamp timestamp; int ret, updated=0; diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp index fed975b..e2b0bc6 100644 --- a/lib/libpacman/deps.cpp +++ b/lib/libpacman/deps.cpp @@ -75,9 +75,9 @@ __pmdepmissing_t::__pmdepmissing_t(const char *target, unsigned char type, unsig } static -int _pacman_depmiss_isin(pmdepmissing_t *needle, pmlist_t *haystack) +int _pacman_depmiss_isin(pmdepmissing_t *needle, FPtrList *haystack) { - pmlist_t *i; + FPtrList *i; for(i = haystack; i; i = f_ptrlistitem_next(i)) { pmdepmissing_t *miss = f_ptrlistitem_data(i); @@ -89,7 +89,7 @@ int _pacman_depmiss_isin(pmdepmissing_t *needle, pmlist_t *haystack) return(0); } -pmlist_t *_pacman_depmisslist_add(pmlist_t *misslist, pmdepmissing_t *miss) +FPtrList *_pacman_depmisslist_add(FPtrList *misslist, pmdepmissing_t *miss) { if(!_pacman_depmiss_isin(miss, misslist)) { misslist = f_ptrlist_add(misslist, miss); @@ -111,15 +111,15 @@ pmlist_t *_pacman_depmisslist_add(pmlist_t *misslist, pmdepmissing_t *miss) * mode should be either PM_TRANS_TYPE_ADD or PM_TRANS_TYPE_REMOVE. This * affects the dependency order sortbydeps() will use. * - * This function returns the new pmlist_t* target list. + * This function returns the new FPtrList* target list. * */ -pmlist_t *_pacman_sortbydeps(pmlist_t *targets, int mode) +FPtrList *_pacman_sortbydeps(FPtrList *targets, int mode) { - pmlist_t *newtargs = NULL; - pmlist_t *i, *j, *k; - pmlist_t *vertices = NULL; - pmlist_t *vptr; + FPtrList *newtargs = NULL; + FPtrList *i, *j, *k; + FPtrList *vertices = NULL; + FPtrList *vptr; pmgraph_t *vertex; int found; @@ -193,7 +193,7 @@ pmlist_t *_pacman_sortbydeps(pmlist_t *targets, int mode) if(mode == PM_TRANS_TYPE_REMOVE) { /* we're removing packages, so reverse the order */ - pmlist_t *tmptargs = _pacman_list_reverse(newtargs); + FPtrList *tmptargs = _pacman_list_reverse(newtargs); /* free the old one */ FREELISTPTR(newtargs); newtargs = tmptargs; @@ -204,18 +204,18 @@ pmlist_t *_pacman_sortbydeps(pmlist_t *targets, int mode) return(newtargs); } -/* Returns a pmlist_t* of missing_t pointers. +/* Returns a FPtrList* of missing_t pointers. * * dependencies can include versions with depmod operators. * */ -pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packages) +FPtrList *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, FPtrList *packages) { pmdepend_t depend; - pmlist_t *i, *j, *k; + FPtrList *i, *j, *k; int cmp; int found = 0; - pmlist_t *baddeps = NULL; + FPtrList *baddeps = NULL; pmdepmissing_t *miss = NULL; Database *db_local = trans->m_handle->db_local; @@ -335,7 +335,7 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packag } /* check database for provides matches */ if(!found) { - pmlist_t *m; + FPtrList *m; k = db_local->whatPackagesProvide(depend.name); for(m = k; m && !found; m = f_ptrlistitem_next(m)) { /* look for a match that isn't one of the packages we're trying @@ -343,7 +343,7 @@ pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packag * package, we'll defer to the NEW one, not the one already * installed. */ Package *p = f_ptrlistitem_data(m); - pmlist_t *n; + FPtrList *n; int skip = 0; for(n = packages; n && !skip; n = f_ptrlistitem_next(n)) { Package *ptp = f_ptrlistitem_data(n); @@ -474,15 +474,15 @@ out: return(0); } -/* return a new pmlist_t target list containing all packages in the original +/* return a new FPtrList target list containing all packages in the original * target list, as well as all their un-needed dependencies. By un-needed, * I mean dependencies that are *only* required for packages in the target * list, so they can be safely removed. This function is recursive. */ -pmlist_t *_pacman_removedeps(Database *db, pmlist_t *targs) +FPtrList *_pacman_removedeps(Database *db, FPtrList *targs) { - pmlist_t *i, *j, *k; - pmlist_t *newtargs = targs; + FPtrList *i, *j, *k; + FPtrList *newtargs = targs; if(db == NULL) { return(newtargs); @@ -554,14 +554,14 @@ pmlist_t *_pacman_removedeps(Database *db, pmlist_t *targs) * * make sure *list and *trail are already initialized */ -int _pacman_resolvedeps(pmtrans_t *trans, Package *syncpkg, pmlist_t *list, - pmlist_t *trail, pmlist_t **data) +int _pacman_resolvedeps(pmtrans_t *trans, Package *syncpkg, FPtrList *list, + FPtrList *trail, FPtrList **data) { - pmlist_t *i, *j; - pmlist_t *targ; - pmlist_t *deps = NULL; + FPtrList *i, *j; + FPtrList *targ; + FPtrList *deps = NULL; Handle *handle = trans->m_handle; - pmlist_t *dbs_sync = handle->dbs_sync; + FPtrList *dbs_sync = handle->dbs_sync; if(dbs_sync == NULL || syncpkg == NULL) { return(-1); @@ -600,7 +600,7 @@ int _pacman_resolvedeps(pmtrans_t *trans, Package *syncpkg, pmlist_t *list, } /* check provides */ for(j = dbs_sync; !ps && j; j = f_ptrlistitem_next(j)) { - pmlist_t *provides; + FPtrList *provides; provides = ((Database *)f_ptrlistitem_data(j))->whatPackagesProvide(miss->depend.name); if(provides) { ps = f_ptrlistitem_data(provides); @@ -727,8 +727,8 @@ static int str_cmp(const void *s1, const void *s2) return(strcmp(s1, s2)); } -int inList(pmlist_t *lst, char *lItem) { - pmlist_t *ll; +int inList(FPtrList *lst, char *lItem) { + FPtrList *ll; ll = lst; while(ll) { if(!strcmp(lItem, (char *)f_ptrlistitem_data(ll))) { @@ -740,9 +740,9 @@ int inList(pmlist_t *lst, char *lItem) { } extern "C" { -int pacman_output_generate(pmlist_t *targets, pmlist_t *dblist) { - pmlist_t *found = NULL; - pmlist_t *k = NULL, *j = NULL; +int pacman_output_generate(FPtrList *targets, FPtrList *dblist) { + FPtrList *found = NULL; + FPtrList *k = NULL, *j = NULL; Package *pkg = NULL; char *match = NULL; int foundMatch = 0; diff --git a/lib/libpacman/deps.h b/lib/libpacman/deps.h index 62db51d..33d0bf0 100644 --- a/lib/libpacman/deps.h +++ b/lib/libpacman/deps.h @@ -45,18 +45,18 @@ typedef struct __pmgraph_t { int state; /* 0: untouched, -1: entered, other: leaving time */ void *data; struct __pmgraph_t *parent; /* where did we come from? */ - pmlist_t *children; - pmlist_t *childptr; /* points to a child in children list */ + FPtrList *children; + FPtrList *childptr; /* points to a child in children list */ } pmgraph_t; -pmlist_t *_pacman_depmisslist_add(pmlist_t *misslist, pmdepmissing_t *miss); +FPtrList *_pacman_depmisslist_add(FPtrList *misslist, pmdepmissing_t *miss); -pmlist_t *_pacman_sortbydeps(pmlist_t *targets, int mode); -pmlist_t *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, pmlist_t *packages); +FPtrList *_pacman_sortbydeps(FPtrList *targets, int mode); +FPtrList *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, FPtrList *packages); int _pacman_splitdep(char *depstr, pmdepend_t *depend); -pmlist_t *_pacman_removedeps(libpacman::Database *db, pmlist_t *targs); -int _pacman_resolvedeps(pmtrans_t *trans, libpacman::Package *syncpkg, pmlist_t *list, - pmlist_t *trail, pmlist_t **data); +FPtrList *_pacman_removedeps(libpacman::Database *db, FPtrList *targs); +int _pacman_resolvedeps(pmtrans_t *trans, libpacman::Package *syncpkg, FPtrList *list, + FPtrList *trail, FPtrList **data); int _pacman_depcmp(libpacman::Package *pkg, pmdepend_t *dep); #endif /* _PACMAN_DEPS_H */ diff --git a/lib/libpacman/group.h b/lib/libpacman/group.h index 34cf8b3..e617ab0 100644 --- a/lib/libpacman/group.h +++ b/lib/libpacman/group.h @@ -24,6 +24,7 @@ #include "pacman.h" #include "kernel/fobject.h" +#include "util/fptrlist.h" #define GRP_NAME_LEN 256 @@ -38,7 +39,7 @@ public: ~Group(); char name[GRP_NAME_LEN]; - pmlist_t *packages; /* List of unowned strings */ + FPtrList *packages; /* List of unowned strings */ }; } diff --git a/lib/libpacman/handle.cpp b/lib/libpacman/handle.cpp index 82a63d2..ffa2479 100644 --- a/lib/libpacman/handle.cpp +++ b/lib/libpacman/handle.cpp @@ -169,7 +169,7 @@ Database *Handle::createDatabase(const char *treename, pacman_cb_db_register cal Database *Handle::getDatabase(const char *treename) { - pmlist_t *i; + FPtrList *i; if(strcmp(treename, "local") == 0) { return db_local; diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h index f991d4e..268629a 100644 --- a/lib/libpacman/handle.h +++ b/lib/libpacman/handle.h @@ -31,6 +31,7 @@ #include "trans.h" #include "kernel/fobject.h" +#include "util/fptrlist.h" namespace libpacman { @@ -61,7 +62,7 @@ public: pmaccess_t access; uid_t uid; libpacman::Database *db_local; - pmlist_t *dbs_sync; /* List of (libpacman::Database *) */ + FPtrList *dbs_sync; /* List of (libpacman::Database *) */ FILE *logfd; FFileLock *filelock; pmtrans_t *trans; @@ -72,10 +73,10 @@ public: char *logfile; char *hooksdir; char *triggersdir; - pmlist_t *noupgrade; /* List of strings */ - pmlist_t *noextract; /* List of strings */ - pmlist_t *ignorepkg; /* List of strings */ - pmlist_t *holdpkg; /* List of strings */ + FPtrList *noupgrade; /* List of strings */ + FPtrList *noextract; /* List of strings */ + FPtrList *ignorepkg; /* List of strings */ + FPtrList *holdpkg; /* List of strings */ unsigned char usesyslog; time_t upgradedelay; time_t olddelay; @@ -86,7 +87,7 @@ public: unsigned short nopassiveftp; unsigned short chomp; /* if eye-candy features should be enabled or not */ unsigned short maxtries; /* for downloading */ - pmlist_t *needles; /* for searching */ + FPtrList *needles; /* for searching */ char *language; int *dlremain; int *dlhowmany; diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index c4def29..14f04e8 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -156,12 +156,12 @@ pkg_error: return false; } -/* Test for existence of a package in a pmlist_t* +/* Test for existence of a package in a FPtrList* * of Package* */ -Package *_pacman_pkg_isin(const char *needle, pmlist_t *haystack) +Package *_pacman_pkg_isin(const char *needle, FPtrList *haystack) { - pmlist_t *lp; + FPtrList *lp; if(needle == NULL || haystack == NULL) { return(NULL); @@ -252,7 +252,7 @@ int Package::filename(char *str, size_t size) const */ char *Package::fileneedbackup(const char *file) const { - const pmlist_t *lp; + const FPtrList *lp; ASSERT(!_pacman_strempty(file), RET_ERR(PM_ERR_WRONG_ARGS, NULL)); diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 5e7e3c7..d46c3b8 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -191,7 +191,7 @@ private: int _pacman_pkg_delete(libpacman::Package *self); int _pacman_pkg_cmp(const void *p1, const void *p2); -libpacman::Package *_pacman_pkg_isin(const char *needle, pmlist_t *haystack); +libpacman::Package *_pacman_pkg_isin(const char *needle, FPtrList *haystack); #endif /* _PACMAN_PACKAGE_H */ diff --git a/lib/libpacman/package/packagecache.cpp b/lib/libpacman/package/packagecache.cpp index 518cc1b..c89ba8c 100644 --- a/lib/libpacman/package/packagecache.cpp +++ b/lib/libpacman/package/packagecache.cpp @@ -42,9 +42,9 @@ int _pacman_packagecache_clean(int level) /* incomplete cleanup: we keep latest packages and partial downloads */ DIR *dir; struct dirent *ent; - pmlist_t *cache = NULL; - pmlist_t *clean = NULL; - pmlist_t *i, *j; + FPtrList *cache = NULL; + FPtrList *clean = NULL; + FPtrList *i, *j; dir = opendir(dirpath); if(dir == NULL) { diff --git a/lib/libpacman/packages_transaction.cpp b/lib/libpacman/packages_transaction.cpp index f83d231..4f2306a 100644 --- a/lib/libpacman/packages_transaction.cpp +++ b/lib/libpacman/packages_transaction.cpp @@ -43,7 +43,7 @@ static int _pacman_packages_transaction_set_state(pmtrans_t *trans, int new_state) { const char *root, *triggersdir, *trigger_function; - const pmlist_t *lp; + const FPtrList *lp; triggersdir = trans->m_handle->triggersdir; root = trans->m_handle->root; diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp index d58468e..7e9a45e 100644 --- a/lib/libpacman/pacman.cpp +++ b/lib/libpacman/pacman.cpp @@ -172,7 +172,7 @@ void _pacman_handle_set_option_string(const char *option, char **string, const c } static -void _pacman_handle_set_option_stringlist(const char *option, pmlist_t **stringlist, const char *value) +void _pacman_handle_set_option_stringlist(const char *option, FStringList **stringlist, const char *value) { if(!_pacman_strempty(value)) { *stringlist = _pacman_stringlist_append(*stringlist, value); @@ -509,7 +509,7 @@ int pacman_db_setserver(pmdb_t *_db, char *url) found = 1; } } else { - pmlist_t *i; + FPtrList *i; for(i = handle->dbs_sync; i && !found; i = f_ptrlistitem_next(i)) { Database *sdb = f_ptrlistitem_data(i); if(strcmp(db->treename, sdb->treename) == 0) { @@ -600,7 +600,7 @@ pmlist_t *pacman_db_getpkgcache(pmdb_t *_db) ASSERT(handle != NULL, return(NULL)); ASSERT(db != NULL, return(NULL)); - return(_pacman_db_get_pkgcache(db)); + return c_cast(_pacman_db_get_pkgcache(db)); } /** Get the list of packages that a package provides @@ -617,7 +617,7 @@ pmlist_t *pacman_db_whatprovides(pmdb_t *_db, char *name) ASSERT(db != NULL, return(NULL)); ASSERT(!_pacman_strempty(name), return(NULL)); - return db->whatPackagesProvide(name); + return c_cast(db->whatPackagesProvide(name)); } /** Get a group entry from a package database @@ -650,7 +650,7 @@ pmlist_t *pacman_db_getgrpcache(pmdb_t *_db) ASSERT(handle != NULL, return(NULL)); ASSERT(db != NULL, return(NULL)); - return(_pacman_db_get_grpcache(db)); + return c_cast(_pacman_db_get_grpcache(db)); } /** @} */ @@ -872,7 +872,7 @@ pmlist_t *pacman_pkg_getowners(const char *filename) ASSERT(handle->db_local != NULL, RET_ERR(PM_ERR_DB_NULL, NULL)); ASSERT(!_pacman_strempty(filename), RET_ERR(PM_ERR_WRONG_ARGS, NULL)); - return handle->db_local->getowners(filename); + return c_cast(handle->db_local->getowners(filename)); } /** Create a package from a file. @@ -1010,7 +1010,7 @@ pmlist_t *pacman_db_test(pmdb_t *_db) ASSERT(handle != NULL, return(NULL)); ASSERT(db != NULL, return(NULL)); - return db->test(); + return c_cast(db->test()); } /** Searches a database @@ -1020,7 +1020,7 @@ pmlist_t *pacman_db_test(pmdb_t *_db) pmlist_t *pacman_db_search(pmdb_t *_db) { Database *db = cxx_cast(_db); - pmlist_t *ret; + FPtrList *ret; /* Sanity checks */ ASSERT(handle != NULL, return(NULL)); @@ -1032,7 +1032,7 @@ pmlist_t *pacman_db_search(pmdb_t *_db) PM_PACKAGE_FLAG_NAME | PM_PACKAGE_FLAG_DESCRIPTION | PM_PACKAGE_FLAG_PROVIDES, FStrMatcher::ALL_IGNORE_CASE); FREELIST(handle->needles); - return(ret); + return c_cast(ret); } /** @} */ @@ -1150,7 +1150,7 @@ int pacman_trans_prepare(pmlist_t **data) ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1)); ASSERT(handle->trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1)); - return handle->trans->prepare(data); + return handle->trans->prepare((FPtrList **)data); } /** Commit a transaction. @@ -1170,7 +1170,7 @@ int pacman_trans_commit(pmlist_t **data) ASSERT((handle->access == PM_ACCESS_RW) || (handle->trans->flags & PM_TRANS_FLAG_PRINTURIS), RET_ERR(PM_ERR_BADPERMS, -1)); - return handle->trans->commit(data); + return handle->trans->commit((FPtrList **)data); } /** Release a transaction. @@ -1304,7 +1304,7 @@ int pacman_logaction(const char *format, ...) */ pmlist_iterator_t *pacman_list_begin(pmlist_t *list) { - return c_cast(list); + return (pmlist_iterator_t *)f_ptrlist_first(cxx_cast(list)); } /** Get the iterator to end of a list. @@ -1313,7 +1313,7 @@ pmlist_iterator_t *pacman_list_begin(pmlist_t *list) */ pmlist_iterator_t *pacman_list_end(pmlist_t *list) { - return NULL; + return (pmlist_iterator_t *)f_ptrlist_end(cxx_cast(list)); } /** Free a list. @@ -1324,7 +1324,8 @@ int pacman_list_free(pmlist_t *list) { ASSERT(list != NULL, return(-1)); - FREELIST(list); + FPtrList *tmp = cxx_cast(list); + FREELIST(tmp); return(0); } @@ -1337,7 +1338,7 @@ int pacman_list_count(pmlist_t *list) { ASSERT(list != NULL, return(-1)); - return(f_ptrlist_count(list)); + return f_ptrlist_count(cxx_cast(list)); } /** Free a list iterator. @@ -1359,7 +1360,7 @@ pmlist_iterator_t *pacman_list_iterator_next(pmlist_iterator_t *iterator) { ASSERT(iterator != NULL, return NULL); - return c_cast(f_ptrlistitem_next(cxx_cast(iterator))); + return (pmlist_iterator_t *)f_ptrlistitem_next((FPtrListItem *)iterator); } /** Get the data of a list iterator. @@ -1370,7 +1371,7 @@ void *pacman_list_iterator_getdata(pmlist_iterator_t *iterator) { ASSERT(iterator != NULL, return NULL); - return f_ptrlistitem_data(cxx_cast(iterator)); + return f_ptrlistitem_data((FPtrListItem *)iterator); } /** @} */ diff --git a/lib/libpacman/pacman_p.h b/lib/libpacman/pacman_p.h index 4656348..611e1d9 100644 --- a/lib/libpacman/pacman_p.h +++ b/lib/libpacman/pacman_p.h @@ -23,6 +23,8 @@ #include "pacman.h" +#include "util/fptrlist.h" + #define DEFINE_CAST(c_type, cxx_type) \ static inline c_type *c_cast(cxx_type *obj) \ { return (c_type *)obj; } \ @@ -40,10 +42,12 @@ class Package; } DEFINE_CAST(struct __pmdb_t, libpacman::Database) -DEFINE_CAST(struct __pmlist_iterator_t, struct __pmlist_t) DEFINE_CAST(struct __pmgrp_t, libpacman::Group) DEFINE_CAST(struct __pmhandle_t, libpacman::Handle) +DEFINE_CAST(struct __pmlist_t, FPtrList) +//DEFINE_CAST(struct __pmlist_iterator_t, FPtrListItem) DEFINE_CAST(struct __pmpkg_t, libpacman::Package) +//DEFINE_CAST(struct __pmtrans_t, libpacman::Transaction) #undef DEFINE_CAST diff --git a/lib/libpacman/server.cpp b/lib/libpacman/server.cpp index 4eb43d3..a47b1d4 100644 --- a/lib/libpacman/server.cpp +++ b/lib/libpacman/server.cpp @@ -343,7 +343,7 @@ error: * * RETURN: 0 for successful download, -1 on error */ -int _pacman_downloadfiles(Handle *handle, pmlist_t *servers, const char *localpath, pmlist_t *files, int skip) +int _pacman_downloadfiles(Handle *handle, FPtrList *servers, const char *localpath, FPtrList *files, int skip) { if(_pacman_downloadfiles_forreal(handle, servers, localpath, files, NULL, NULL, skip) != 0) { return(-1); @@ -365,13 +365,13 @@ int _pacman_downloadfiles(Handle *handle, pmlist_t *servers, const char *localpa * 1 if the mtimes are identical * -1 on error */ -int _pacman_downloadfiles_forreal(Handle *handle, pmlist_t *servers, const char *localpath, - pmlist_t *files, const Timestamp *mtime1, Timestamp *mtime2, int skip) +int _pacman_downloadfiles_forreal(Handle *handle, FPtrList *servers, const char *localpath, + FPtrList *files, const Timestamp *mtime1, Timestamp *mtime2, int skip) { - pmlist_t *lp; + FPtrList *lp; int done = 0; - pmlist_t *complete = NULL; - pmlist_t *i; + FPtrList *complete = NULL; + FPtrList *i; pmserver_t *server; int *remain = handle->dlremain, *howmany = handle->dlhowmany; @@ -628,8 +628,8 @@ char *_pacman_fetch_pkgurl(Handle *handle, char *target) _pacman_log(PM_LOG_DEBUG, _("%s is already in the cache\n"), fn); } else { pmserver_t *server; - pmlist_t *servers = NULL; - pmlist_t *files; + FPtrList *servers = NULL; + FPtrList *files; if((server = _pacman_malloc(sizeof(pmserver_t))) == NULL) { return(NULL); diff --git a/lib/libpacman/server.h b/lib/libpacman/server.h index aa3a6bc..1f37534 100644 --- a/lib/libpacman/server.h +++ b/lib/libpacman/server.h @@ -49,9 +49,9 @@ struct __pmdownload_t { pmserver_t *_pacman_server_new(char *url); void _pacman_server_free(void *data); -int _pacman_downloadfiles(::libpacman::Handle *handle, pmlist_t *servers, const char *localpath, pmlist_t *files, int skip); -int _pacman_downloadfiles_forreal(::libpacman::Handle *handle, pmlist_t *servers, const char *localpath, - pmlist_t *files, const libpacman::Timestamp *mtime1, libpacman::Timestamp *mtime2, int skip); +int _pacman_downloadfiles(::libpacman::Handle *handle, FPtrList *servers, const char *localpath, FPtrList *files, int skip); +int _pacman_downloadfiles_forreal(::libpacman::Handle *handle, FPtrList *servers, const char *localpath, + FPtrList *files, const libpacman::Timestamp *mtime1, libpacman::Timestamp *mtime2, int skip); char *_pacman_fetch_pkgurl(::libpacman::Handle *handle, char *target); diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index 745fb9d..480f4b7 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -130,7 +130,7 @@ __pmtrans_t::~__pmtrans_t() static int _pacman_trans_compute_triggers(pmtrans_t *trans) { - pmlist_t *lp; + FPtrList *lp; /* NOTE: Not the most efficient way, but will do until we add some string hash. */ for(lp = trans->packages; lp; lp = f_ptrlistitem_next(lp)) { @@ -192,12 +192,12 @@ int _pacman_trans_event(pmtrans_t *trans, unsigned char event, void *data1, void return 0; } -/* Test for existence of a package in a pmlist_t* of pmsyncpkg_t* +/* Test for existence of a package in a FPtrList* of pmsyncpkg_t* * If found, return a pointer to the respective pmsyncpkg_t* */ pmsyncpkg_t *__pmtrans_t::find(const char *pkgname) const { - pmlist_t *i; + FPtrList *i; for(i = syncpkgs; i != NULL ; i = f_ptrlistitem_next(i)) { pmsyncpkg_t *ps = f_ptrlistitem_data(i); @@ -244,7 +244,7 @@ static int pkg_cmp(const void *p1, const void *p2) static int check_olddelay(Handle *handle) { - pmlist_t *i; + FPtrList *i; Timestamp tm; if(!handle->olddelay) { @@ -304,10 +304,10 @@ Package *_pacman_filedb_load(Database *db, const char *name) // FIXME: Make returning a pmsyncpkg_t in the future int __pmtrans_t::add(const char *target, pmtranstype_t type, int flags) { - pmlist_t *i; + FPtrList *i; Package *pkg_new, *pkg_local, *pkg_queued = NULL; Database *db_local; - pmlist_t *dbs_sync = m_handle->dbs_sync; + FPtrList *dbs_sync = m_handle->dbs_sync; /* Sanity checks */ ASSERT((db_local = m_handle->db_local) != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); @@ -335,7 +335,7 @@ int __pmtrans_t::add(const char *target, pmtranstype_t type, int flags) spkg = dbs->find(targ); if(spkg == NULL) { /* Search provides */ - pmlist_t *p; + FPtrList *p; _pacman_log(PM_LOG_FLOW2, _("target '%s' not found -- looking for provisions"), targ); p = dbs->whatPackagesProvide(targ); if(p != NULL) { @@ -358,7 +358,7 @@ int __pmtrans_t::add(const char *target, pmtranstype_t type, int flags) _pacman_log(PM_LOG_FLOW2, _("target '%s' not found -- looking for provisions"), targ); for(i = dbs_sync; i && !spkg; i = f_ptrlistitem_next(i)) { Database *dbs = f_ptrlistitem_data(i); - pmlist_t *p = dbs->whatPackagesProvide(targ); + FPtrList *p = dbs->whatPackagesProvide(targ); if(p != NULL) { spkg = f_ptrlistitem_data(p); _pacman_log(PM_LOG_DEBUG, _("found '%s' as a provision for '%s'"), spkg->name(), targ); @@ -493,15 +493,15 @@ error: return(-1); } -int __pmtrans_t::prepare(pmlist_t **data) +int __pmtrans_t::prepare(FPtrList **data) { Database *db_local; - pmlist_t *lp; - pmlist_t *deps = NULL; - pmlist_t *list = NULL; /* list allowing checkdeps usage with data from packages */ - pmlist_t *trail = NULL; /* breadcrum list to avoid running into circles */ - pmlist_t *asked = NULL; - pmlist_t *i, *j, *k, *l, *m; + FPtrList *lp; + FPtrList *deps = NULL; + FPtrList *list = NULL; /* list allowing checkdeps usage with data from packages */ + FPtrList *trail = NULL; /* breadcrum list to avoid running into circles */ + FPtrList *asked = NULL; + FPtrList *i, *j, *k, *l, *m; int ret = 0; /* Sanity checks */ @@ -814,13 +814,13 @@ int __pmtrans_t::prepare(pmlist_t **data) /* Look through the upset package's dependencies and try to match one up * to a provisio from the package we want to remove */ for(k = conflictp->depends(); k && !pfound; k = f_ptrlistitem_next(k)) { - pmlist_t *m; + FPtrList *m; for(m = leavingp->provides(); m && !pfound; m = f_ptrlistitem_next(m)) { if(!strcmp(f_stringlistitem_to_str(k), f_stringlistitem_to_str(m))) { /* Found a match -- now look through final for a package that * provides the same thing. If none are found, then it truly * is an unresolvable conflict. */ - pmlist_t *n, *o; + FPtrList *n, *o; for(n = syncpkgs; n && !pfound; n = f_ptrlistitem_next(n)) { pmsyncpkg_t *sp = f_ptrlistitem_data(n); for(o = sp->pkg_new->provides(); o && !pfound; o = f_ptrlistitem_next(o)) { @@ -865,7 +865,7 @@ int __pmtrans_t::prepare(pmlist_t **data) #ifndef __sun__ /* check for free space only in case the packages will be extracted */ if(!(flags & PM_TRANS_FLAG_NOCONFLICTS)) { - if(_pacman_check_freespace(this, data) == -1) { + if(_pacman_check_freespace(this, (pmlist_t **)data) == -1) { /* pm_errno is set by check_freespace */ ret = -1; goto cleanup; @@ -897,7 +897,7 @@ cleanup: if(lp != NULL) { if((m_type == PM_TRANS_TYPE_REMOVE) && (flags & PM_TRANS_FLAG_CASCADE)) { while(lp) { - pmlist_t *i; + FPtrList *i; for(i = lp; i; i = f_ptrlistitem_next(i)) { pmdepmissing_t *miss = (pmdepmissing_t *)f_ptrlistitem_data(i); Package *pkg_local = db_local->scan(miss->depend.name, INFRQ_ALL); @@ -967,7 +967,7 @@ cleanup: _pacman_log(PM_LOG_FLOW1, _("cleaning up")); for (lp = packages; lp!=NULL; lp = f_ptrlistitem_next(lp)) { Package *pkg_new = (Package *)f_ptrlistitem_data(lp); - pmlist_t *rmlist; + FPtrList *rmlist; for (rmlist=pkg_new->removes(); rmlist!=NULL; rmlist = f_ptrlistitem_next(rmlist)) { char rm_fname[PATH_MAX]; @@ -997,7 +997,7 @@ cleanup: } #ifndef __sun__ - if(_pacman_check_freespace(this, data) == -1) { + if(_pacman_check_freespace(this, (pmlist_t **)data) == -1) { /* pm_errno is set by check_freespace */ return(-1); } @@ -1019,7 +1019,7 @@ int _pacman_fpmpackage_install(Package *pkg, pmtranstype_t type, pmtrans_t *tran struct archive_entry *entry; Handle *handle = trans->m_handle; Database *db_local = handle->db_local; - pmlist_t *lp; + FPtrList *lp; char expath[PATH_MAX], cwd[PATH_MAX] = ""; ASSERT(db_local != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); @@ -1313,7 +1313,7 @@ int _pacman_fpmpackage_install(Package *pkg, pmtranstype_t type, pmtrans_t *tran } static -int _pacman_cachedpkg_check_integrity(Package *spkg, __pmtrans_t *trans, pmlist_t **data) +int _pacman_cachedpkg_check_integrity(Package *spkg, __pmtrans_t *trans, FPtrList **data) { char str[PATH_MAX], pkgname[PATH_MAX]; char *md5sum1, *md5sum2, *sha1sum1, *sha1sum2; @@ -1412,11 +1412,11 @@ struct trans_event_table_item { } }; -int __pmtrans_t::commit(pmlist_t **data) +int __pmtrans_t::commit(FPtrList **data) { Database *db_local; int howmany, remain; - pmlist_t *targ, *lp; + FPtrList *targ, *lp; pmtrans_t *tr = NULL; char pm_install[PATH_MAX]; @@ -1434,7 +1434,7 @@ int __pmtrans_t::commit(pmlist_t **data) _pacman_trans_set_state(this, STATE_COMMITING); if(m_type == PM_TRANS_TYPE_SYNC) { - pmlist_t *i, *j, *files = NULL; + FPtrList *i, *j, *files = NULL; char ldir[PATH_MAX]; int retval = 0, tries = 0; int varcache = 1; @@ -1540,7 +1540,7 @@ int __pmtrans_t::commit(pmlist_t **data) } if(!retval) { state = STATE_COMMITING; - pmlist_t *i, *j; + FPtrList *i, *j; int replaces = 0; if(m_handle->sysupgrade) { @@ -1632,13 +1632,13 @@ int __pmtrans_t::commit(pmlist_t **data) if(ps->type == PM_SYNC_TYPE_REPLACE) { Package *pkg_new = db_local->find(ps->pkg_name); for(j = ps->data; j; j = f_ptrlistitem_next(j)) { - pmlist_t *k; + FPtrList *k; Package *old = f_ptrlistitem_data(j); /* merge lists */ for(k = old->requiredby(); k; k = f_ptrlistitem_next(k)) { if(!_pacman_list_is_strin(f_stringlistitem_to_str(k), pkg_new->requiredby())) { /* replace old's name with new's name in the requiredby's dependency list */ - pmlist_t *m; + FPtrList *m; Package *depender = db_local->find(f_stringlistitem_to_str(k)); if(depender == NULL) { /* If the depending package no longer exists in the local db, @@ -1804,7 +1804,7 @@ int __pmtrans_t::commit(pmlist_t **data) depinfo = db_local->find(depend.name); if(depinfo == NULL) { /* look for a provides package */ - pmlist_t *provides = db_local->whatPackagesProvide(depend.name); + FPtrList *provides = db_local->whatPackagesProvide(depend.name); if(provides) { /* TODO: should check _all_ packages listed in provides, not just * the first one. @@ -1852,7 +1852,7 @@ int __pmtrans_t::commit(pmlist_t **data) * looking for packages depending on the package to add */ for(lp = _pacman_db_get_pkgcache(db_local); lp; lp = f_ptrlistitem_next(lp)) { Package *tmpp = f_ptrlistitem_data(lp); - pmlist_t *tmppm = NULL; + FPtrList *tmppm = NULL; if(tmpp == NULL) { continue; } @@ -1897,7 +1897,7 @@ int __pmtrans_t::commit(pmlist_t **data) depinfo = db_local->find(depend.name); if(depinfo == NULL) { /* look for a provides package */ - pmlist_t *provides = db_local->whatPackagesProvide(depend.name); + FPtrList *provides = db_local->whatPackagesProvide(depend.name); if(provides) { /* TODO: should check _all_ packages listed in provides, not just * the first one. diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h index 6b5aacb..6d06719 100644 --- a/lib/libpacman/trans.h +++ b/lib/libpacman/trans.h @@ -61,8 +61,8 @@ struct __pmtrans_t pmsyncpkg_t *find(const char *pkgname) const; - int prepare(pmlist_t **data); - int commit(pmlist_t **data); + int prepare(FPtrList **data); + int commit(FPtrList **data); pmsyncpkg_t *add(pmsyncpkg_t *syncpkg, int flags); int add(libpacman::Package *pkg, pmtranstype_t type, int flags); @@ -74,7 +74,7 @@ struct __pmtrans_t unsigned int flags; unsigned char state; FStringList *targets; - pmlist_t *packages; /* pmlist_t of (pmpkg_t *) or (pmsyncpkg_t *) */ + FPtrList *packages; /* FPtrList of (pmpkg_t *) or (pmsyncpkg_t *) */ FPtrList *syncpkgs; /* FPtrList of (pmsyncpkg_t *) */ FStringList *skiplist; FStringList *triggers; diff --git a/lib/libpacman/trans_sysupgrade.cpp b/lib/libpacman/trans_sysupgrade.cpp index 4ec2325..86b9e51 100644 --- a/lib/libpacman/trans_sysupgrade.cpp +++ b/lib/libpacman/trans_sysupgrade.cpp @@ -70,10 +70,10 @@ static int istoonew(Package *pkg) int _pacman_trans_sysupgrade(pmtrans_t *trans) { - pmlist_t *i, *j, *k; + FPtrList *i, *j, *k; Handle *handle; Database *db_local; - pmlist_t *dbs_sync; + FPtrList *dbs_sync; /* Sanity checks */ ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1)); @@ -90,7 +90,7 @@ int _pacman_trans_sysupgrade(pmtrans_t *trans) for(j = _pacman_db_get_pkgcache(f_ptrlistitem_data(i)); j; j = f_ptrlistitem_next(j)) { Package *spkg = f_ptrlistitem_data(j); for(k = spkg->replaces(); k; k = f_ptrlistitem_next(k)) { - pmlist_t *m; + FPtrList *m; for(m = _pacman_db_get_pkgcache(db_local); m; m = f_ptrlistitem_next(m)) { Package *lpkg = f_ptrlistitem_data(m); if(!strcmp(f_stringlistitem_to_str(k), lpkg->name())) { diff --git a/lib/libpacman/util.cpp b/lib/libpacman/util.cpp index 7a3740d..02ffbfa 100644 --- a/lib/libpacman/util.cpp +++ b/lib/libpacman/util.cpp @@ -36,6 +36,7 @@ #include "sync.h" #include "error.h" #include "pacman.h" +#include "pacman_p.h" #include <sys/wait.h> #include <sys/statvfs.h> @@ -124,9 +125,9 @@ typedef struct __cache_t { int hit; } cache_t; -static int list_startswith(char *needle, pmlist_t *haystack) +static int list_startswith(char *needle, FPtrList *haystack) { - pmlist_t *i; + FPtrList *i; for (i = haystack; i; i = f_ptrlistitem_next(i)) { cache_t *c = f_ptrlistitem_data(i); @@ -143,7 +144,7 @@ int _pacman_unpack(const char *archive, const char *prefix, const char *fn) register struct archive *_archive; struct archive_entry *entry; char expath[PATH_MAX]; - pmlist_t *cache = NULL, *i; + FPtrList *cache = NULL, *i; DIR *handle; struct dirent *ent; struct stat buf; @@ -481,7 +482,7 @@ static long long get_freespace(void) int _pacman_check_freespace(pmtrans_t *trans, pmlist_t **data) { - pmlist_t *i; + FPtrList *i; long long pkgsize=0, freespace; for(i = trans->packages; i; i = f_ptrlistitem_next(i)) { @@ -509,13 +510,15 @@ int _pacman_check_freespace(pmtrans_t *trans, pmlist_t **data) return(-1); } *ptr = pkgsize; - *data = f_ptrlist_add(*data, ptr); + *data = c_cast(f_ptrlist_add(cxx_cast(*data), ptr)); if((ptr = (long long*)malloc(sizeof(long long)))==NULL) { - FREELIST(*data); + FPtrList *tmp = cxx_cast(*data); + FREELIST(tmp); + *data = NULL; return(-1); } *ptr = freespace; - *data = f_ptrlist_add(*data, ptr); + *data = c_cast(f_ptrlist_add(cxx_cast(*data), ptr)); } pm_errno = PM_ERR_DISK_FULL; return(-1); diff --git a/lib/libpacman/util/fptrlist.cpp b/lib/libpacman/util/fptrlist.cpp index 0897e77..f91e860 100644 --- a/lib/libpacman/util/fptrlist.cpp +++ b/lib/libpacman/util/fptrlist.cpp @@ -232,7 +232,7 @@ int f_ptrlist_fini(FPtrList *self, FVisitor *visitor) #ifndef F_NOCOMPAT FPtrList *f_ptrlist_append(FPtrList *list, void *data) { - pmlist_t *ptr, *lp; + FPtrList *ptr, *lp; ptr = list; if(ptr == NULL) { diff --git a/lib/libpacman/util/fptrlist.h b/lib/libpacman/util/fptrlist.h index e0a2c63..c453e43 100644 --- a/lib/libpacman/util/fptrlist.h +++ b/lib/libpacman/util/fptrlist.h @@ -28,22 +28,20 @@ #include "util/fcallback.h" -/* Chained list struct */ -struct __pmlist_t { - struct __pmlist_t *m_previous; - struct __pmlist_t *m_next; - void *m_data; -}; - #ifndef __cplusplus typedef struct FCList FCList; typedef struct FCListItem FCListItem; +typedef struct FCListItem FPtrList; +typedef struct FCListItem FPtrListItem; + #else +typedef class FCListItem FPtrList; +typedef class FCListItem FPtrListItem; + class FCListItem - : public __pmlist_t { public: FCListItem() @@ -54,9 +52,11 @@ public: : m_next(next), m_previous(previous) { } - virtual ~FCListItem() = 0; + virtual ~FCListItem() + { } // FIXME: Make pure virtual - virtual void *c_data() const = 0; + virtual void *c_data() const + { return m_data; } // FIXME: Make pure virtual FCListItem *next() { @@ -78,11 +78,12 @@ public: return m_previous; } -protected: +//protected: // Disable for now bool insert_after(FCListItem *previous); FCListItem *m_next; FCListItem *m_previous; + void *m_data; // Enabled for now }; class FCList @@ -171,14 +172,6 @@ protected: extern "C" { #endif -#ifndef F_NOCOMPAT -typedef struct __pmlist_t FPtrList; -typedef struct __pmlist_t FPtrListItem; -#else -typedef struct FPtrList FPtrList; -typedef struct FPtrListItem FPtrListItem; -#endif - #define _FREELIST(p, f) do { if(p) { FVisitor visitor = { (FVisitorFunc)f, NULL }; f_ptrlist_delete(p, &visitor); p = NULL; } } while(0) #define FREELIST(p) _FREELIST(p, free) diff --git a/lib/libpacman/util/stringlist.h b/lib/libpacman/util/stringlist.h index 1a9a283..9289f1e 100644 --- a/lib/libpacman/util/stringlist.h +++ b/lib/libpacman/util/stringlist.h @@ -29,8 +29,8 @@ extern "C" { #endif #ifndef F_NOCOMPAT -typedef struct __pmlist_t FStringList; -typedef struct __pmlist_t FStringListItem; +typedef FPtrList FStringList; +typedef FPtrList FStringListItem; #else typedef struct FStringList FStringList; typedef struct FStringListItem FStringListItem; _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
