Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=fd3b41734206f2607917fcd1663ccae1236af491
commit fd3b41734206f2607917fcd1663ccae1236af491 Author: Michel Hermier <[email protected]> Date: Thu Sep 4 08:13:03 2014 +0200 libpacman: Make Package::requiredby not a pointer. diff --git a/lib/libpacman/db/localdb_files.cpp b/lib/libpacman/db/localdb_files.cpp index 0adf851..4c38cd3 100644 --- a/lib/libpacman/db/localdb_files.cpp +++ b/lib/libpacman/db/localdb_files.cpp @@ -208,7 +208,7 @@ int _pacman_localdb_depends_fread(Package *info, FILE *fp) if(!strcmp(line, "%DEPENDS%")) { _pacman_db_read_lines(info->m_depends, line, sline, fp); } else if(!strcmp(line, "%REQUIREDBY%")) { - _pacman_db_read_lines(&info->m_requiredby, line, sline, fp); + _pacman_db_read_lines(info->m_requiredby, line, sline, fp); } else if(!strcmp(line, "%CONFLICTS%")) { _pacman_db_read_lines(&info->m_conflicts, line, sline, fp); } else if(!strcmp(line, "%PROVIDES%")) { diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp index 9745126..2b46ce7 100644 --- a/lib/libpacman/deps.cpp +++ b/lib/libpacman/deps.cpp @@ -235,8 +235,8 @@ FPtrList *_pacman_checkdeps(pmtrans_t *trans, unsigned char op, FPtrList *packag if(pkg_local != NULL) { found = 0; - FStringList *requiredby = pkg_local->requiredby(); - for(auto j = requiredby->begin(), j_end = requiredby->end(); j != j_end; j = j->next()) { + auto &requiredby = pkg_local->requiredby(); + for(auto j = requiredby.begin(), j_end = requiredby.end(); j != j_end; j = j->next()) { const char *requiredby_name = f_stringlistitem_to_str(j); if(op == PM_TRANS_TYPE_UPGRADE) { @@ -523,8 +523,8 @@ FPtrList *_pacman_removedeps(Database *db, FPtrList *targs) } /* see if other packages need it */ - auto requiredby = dep->requiredby(); - for(auto k = requiredby->begin(), k_end = requiredby->end(); k != k_end && !needed; k = k->next()) { + auto &requiredby = dep->requiredby(); + for(auto k = requiredby.begin(), k_end = requiredby.end(); k != k_end && !needed; k = k->next()) { Package *dummy = db->find(f_stringlistitem_to_str(k)); if(!_pacman_pkg_isin(dummy->name(), targs)) { needed = 1; diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index 2fa16d3..1015108 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -71,7 +71,6 @@ Package::~Package() FREELIST(desc_localized); FREELIST(m_files); FREELIST(m_conflicts); - FREELIST(m_requiredby); FREELIST(m_groups); FREELIST(m_provides); FREELIST(m_replaces); @@ -329,7 +328,7 @@ int _pacman_strmatcher_match(const FStrMatcher *strmatcher, Package *pkg, int fl ((flags & PM_PACKAGE_FLAG_BACKUP) && f_stringlist_any_match(&pkg->backup(), strmatcher)) || ((flags & PM_PACKAGE_FLAG_DEPENDS) && f_stringlist_any_match(&pkg->depends(), strmatcher)) || ((flags & PM_PACKAGE_FLAG_REMOVES) && f_stringlist_any_match(&pkg->removes(), strmatcher)) || - ((flags & PM_PACKAGE_FLAG_REQUIREDBY) && f_stringlist_any_match(pkg->requiredby(), strmatcher)) || + ((flags & PM_PACKAGE_FLAG_REQUIREDBY) && f_stringlist_any_match(&pkg->requiredby(), strmatcher)) || ((flags & PM_PACKAGE_FLAG_CONFLICTS) && f_stringlist_any_match(pkg->conflicts(), strmatcher)) || ((flags & PM_PACKAGE_FLAG_PROVIDES) && f_stringlist_any_match(pkg->provides(), strmatcher)) || ((flags & PM_PACKAGE_FLAG_TRIGGERS) && f_stringlist_any_match(pkg->triggers(), strmatcher))) { diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 605ebcd..d1bca2c 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -158,7 +158,7 @@ public: FStringList m_backup; FStringList m_depends; FStringList m_removes; - FStringList *m_requiredby; + FStringList m_requiredby; FStringList *m_conflicts; FStringList *m_provides; FStringList *m_triggers; diff --git a/lib/libpacman/package_properties.h b/lib/libpacman/package_properties.h index f4b19d5..acbfc92 100644 --- a/lib/libpacman/package_properties.h +++ b/lib/libpacman/package_properties.h @@ -31,7 +31,7 @@ LIBPACMAN_PACKAGE_PROPERTY(FStringList *, provides, PROVIDES ) LIBPACMAN_PACKAGE_PROPERTY(unsigned char, reason, REASON ) LIBPACMAN_PACKAGE_PROPERTY(FStringList &, removes, REMOVES ) LIBPACMAN_PACKAGE_PROPERTY(FStringList *, replaces, REPLACES ) -LIBPACMAN_PACKAGE_PROPERTY(FStringList *, requiredby, REQUIREDBY) +LIBPACMAN_PACKAGE_PROPERTY(FStringList &, requiredby, REQUIREDBY) LIBPACMAN_PACKAGE_PROPERTY(unsigned char, stick, STICKY ) LIBPACMAN_PACKAGE_PROPERTY(FStringList *, triggers, TRIGGERS ) LIBPACMAN_PACKAGE_PROPERTY(const char *, url, URL ) diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp index 44dc7b8..9eb3890 100644 --- a/lib/libpacman/pacman.cpp +++ b/lib/libpacman/pacman.cpp @@ -815,7 +815,7 @@ void *pacman_pkg_getinfo(pmpkg_t *_pkg, unsigned char parm) case PM_PKG_SHA1SUM: data = pkg->sha1sum; break; case PM_PKG_DEPENDS: data = &pkg->depends(); break; case PM_PKG_REMOVES: data = &pkg->removes(); break; - case PM_PKG_REQUIREDBY: data = pkg->requiredby(); break; + case PM_PKG_REQUIREDBY: data = &pkg->requiredby(); break; case PM_PKG_PROVIDES: data = pkg->provides(); break; case PM_PKG_CONFLICTS: data = pkg->conflicts(); break; case PM_PKG_FILES: data = pkg->files(); break; diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index 597b513..566ff57 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -700,7 +700,7 @@ int __pmtrans_t::prepare(FPtrList **data) ret = -1; goto cleanup; } - q->m_requiredby = _pacman_list_strdup(local->requiredby()); + q->m_requiredby = local->requiredby(); if(ps->type != PM_SYNC_TYPE_REPLACE) { /* switch this sync type to REPLACE */ ps->type = PM_SYNC_TYPE_REPLACE; @@ -1625,9 +1625,9 @@ int __pmtrans_t::commit(FPtrList **data) for(auto j = list->begin(), end = list->end(); j != end; j = j->next()) { Package *old = f_ptrlistitem_data(j); /* merge lists */ - FPtrList *requiredby = old->requiredby(); - for(auto k = requiredby->begin(), end = requiredby->end(); k != end; k = k->next()) { - if(!_pacman_list_is_strin(f_stringlistitem_to_str(k), pkg_new->requiredby())) { + auto &requiredby = old->requiredby(); + for(auto k = requiredby.begin(), end = requiredby.end(); k != end; k = k->next()) { + 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 */ Package *depender = db_local->find(f_stringlistitem_to_str(k)); if(depender == NULL) { @@ -1649,7 +1649,7 @@ int __pmtrans_t::commit(FPtrList **data) pkg_new->name(), pkg_new->version()); } /* add the new requiredby */ - pkg_new->m_requiredby = f_stringlist_add(pkg_new->m_requiredby, f_stringlistitem_to_str(k)); + f_stringlist_add(&pkg_new->m_requiredby, f_stringlistitem_to_str(k)); } } } @@ -1812,7 +1812,7 @@ int __pmtrans_t::commit(FPtrList **data) } } /* splice out this entry from requiredby */ - _pacman_list_remove(depinfo->requiredby(), pkg_local->name(), str_cmp, (void **)&data); + _pacman_list_remove(&depinfo->requiredby(), pkg_local->name(), str_cmp, (void **)&data); FREE(data); _pacman_log(PM_LOG_DEBUG, _("updating 'requiredby' field for package '%s'"), depinfo->name()); if(db_local->write(depinfo, INFRQ_DEPENDS)) { @@ -1856,7 +1856,7 @@ int __pmtrans_t::commit(FPtrList **data) } if(f_ptrlistitem_data(tmppm) && (!strcmp(depend.name, pkg_new->name()) || pkg_new->provides(depend.name))) { _pacman_log(PM_LOG_DEBUG, _("adding '%s' in requiredby field for '%s'"), tmpp->name(), pkg_new->name()); - pkg_new->m_requiredby = f_stringlist_add(pkg_new->m_requiredby, tmpp->name()); + f_stringlist_add(&pkg_new->m_requiredby, tmpp->name()); } } } @@ -1907,7 +1907,7 @@ int __pmtrans_t::commit(FPtrList **data) } } _pacman_log(PM_LOG_DEBUG, _("adding '%s' in requiredby field for '%s'"), pkg_new->name(), depinfo->name()); - depinfo->m_requiredby = f_stringlist_add(depinfo->requiredby(), pkg_new->name()); + f_stringlist_add(&depinfo->requiredby(), pkg_new->name()); if(db_local->write(depinfo, INFRQ_DEPENDS)) { _pacman_log(PM_LOG_ERROR, _("could not update 'requiredby' database entry %s-%s"), depinfo->name(), depinfo->version()); _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
