mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-22 15:58:50 -05:00
Make alpm_pkg_find public
This function is particularly useful, so make it public. Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
7a24f909fc
commit
62f1c590fc
@ -67,7 +67,7 @@ int SYMEXPORT alpm_add_pkg(alpm_handle_t *handle, alpm_pkg_t *pkg)
|
|||||||
|
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "adding package '%s'\n", pkgname);
|
_alpm_log(handle, ALPM_LOG_DEBUG, "adding package '%s'\n", pkgname);
|
||||||
|
|
||||||
if(_alpm_pkg_find(trans->add, pkgname)) {
|
if(alpm_pkg_find(trans->add, pkgname)) {
|
||||||
RET_ERR(handle, ALPM_ERR_TRANS_DUP_TARGET, -1);
|
RET_ERR(handle, ALPM_ERR_TRANS_DUP_TARGET, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -689,6 +689,13 @@ alpm_list_t *alpm_db_search(alpm_db_t *db, const alpm_list_t *needles);
|
|||||||
int alpm_pkg_load(alpm_handle_t *handle, const char *filename, int full,
|
int alpm_pkg_load(alpm_handle_t *handle, const char *filename, int full,
|
||||||
alpm_siglevel_t level, alpm_pkg_t **pkg);
|
alpm_siglevel_t level, alpm_pkg_t **pkg);
|
||||||
|
|
||||||
|
/** Find a package in a list by name.
|
||||||
|
* @param haystack a list of alpm_pkg_t
|
||||||
|
* @param needle the package name
|
||||||
|
* @return a pointer to the package if found or NULL
|
||||||
|
*/
|
||||||
|
alpm_pkg_t *alpm_pkg_find(alpm_list_t *haystack, const char *needle);
|
||||||
|
|
||||||
/** Free a package.
|
/** Free a package.
|
||||||
* @param pkg package pointer to free
|
* @param pkg package pointer to free
|
||||||
* @return 0 on success, -1 on error (pm_errno is set accordingly)
|
* @return 0 on success, -1 on error (pm_errno is set accordingly)
|
||||||
|
@ -281,7 +281,7 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(alpm_handle_t *handle,
|
|||||||
|
|
||||||
for(i = pkglist; i; i = i->next) {
|
for(i = pkglist; i; i = i->next) {
|
||||||
alpm_pkg_t *pkg = i->data;
|
alpm_pkg_t *pkg = i->data;
|
||||||
if(_alpm_pkg_find(rem, pkg->name) || _alpm_pkg_find(upgrade, pkg->name)) {
|
if(alpm_pkg_find(rem, pkg->name) || alpm_pkg_find(upgrade, pkg->name)) {
|
||||||
modified = alpm_list_add(modified, pkg);
|
modified = alpm_list_add(modified, pkg);
|
||||||
} else {
|
} else {
|
||||||
dblist = alpm_list_add(dblist, pkg);
|
dblist = alpm_list_add(dblist, pkg);
|
||||||
@ -495,7 +495,7 @@ static int can_remove_package(alpm_db_t *db, alpm_pkg_t *pkg,
|
|||||||
{
|
{
|
||||||
alpm_list_t *i;
|
alpm_list_t *i;
|
||||||
|
|
||||||
if(_alpm_pkg_find(targets, pkg->name)) {
|
if(alpm_pkg_find(targets, pkg->name)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -517,7 +517,7 @@ static int can_remove_package(alpm_db_t *db, alpm_pkg_t *pkg,
|
|||||||
/* see if other packages need it */
|
/* see if other packages need it */
|
||||||
for(i = _alpm_db_get_pkgcache(db); i; i = i->next) {
|
for(i = _alpm_db_get_pkgcache(db); i; i = i->next) {
|
||||||
alpm_pkg_t *lpkg = i->data;
|
alpm_pkg_t *lpkg = i->data;
|
||||||
if(_alpm_dep_edge(lpkg, pkg) && !_alpm_pkg_find(targets, lpkg->name)) {
|
if(_alpm_dep_edge(lpkg, pkg) && !alpm_pkg_find(targets, lpkg->name)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -591,7 +591,7 @@ static alpm_pkg_t *resolvedep(alpm_handle_t *handle, alpm_depend_t *dep,
|
|||||||
for(i = dbs; i; i = i->next) {
|
for(i = dbs; i; i = i->next) {
|
||||||
alpm_pkg_t *pkg = _alpm_db_get_pkgfromcache(i->data, dep->name);
|
alpm_pkg_t *pkg = _alpm_db_get_pkgfromcache(i->data, dep->name);
|
||||||
if(pkg && _alpm_depcmp_literal(pkg, dep)
|
if(pkg && _alpm_depcmp_literal(pkg, dep)
|
||||||
&& !_alpm_pkg_find(excluding, pkg->name)) {
|
&& !alpm_pkg_find(excluding, pkg->name)) {
|
||||||
if(_alpm_pkg_should_ignore(handle, pkg)) {
|
if(_alpm_pkg_should_ignore(handle, pkg)) {
|
||||||
int install = 0;
|
int install = 0;
|
||||||
if(prompt) {
|
if(prompt) {
|
||||||
@ -616,7 +616,7 @@ static alpm_pkg_t *resolvedep(alpm_handle_t *handle, alpm_depend_t *dep,
|
|||||||
/* with hash != hash, we can even skip the strcmp() as we know they can't
|
/* with hash != hash, we can even skip the strcmp() as we know they can't
|
||||||
* possibly be the same string */
|
* possibly be the same string */
|
||||||
if(pkg->name_hash != dep->name_hash && _alpm_depcmp(pkg, dep)
|
if(pkg->name_hash != dep->name_hash && _alpm_depcmp(pkg, dep)
|
||||||
&& !_alpm_pkg_find(excluding, pkg->name)) {
|
&& !alpm_pkg_find(excluding, pkg->name)) {
|
||||||
if(_alpm_pkg_should_ignore(handle, pkg)) {
|
if(_alpm_pkg_should_ignore(handle, pkg)) {
|
||||||
int install = 0;
|
int install = 0;
|
||||||
if(prompt) {
|
if(prompt) {
|
||||||
@ -730,7 +730,7 @@ int _alpm_resolvedeps(alpm_handle_t *handle, alpm_list_t *localpkgs,
|
|||||||
alpm_list_t *deps = NULL;
|
alpm_list_t *deps = NULL;
|
||||||
alpm_list_t *packages_copy;
|
alpm_list_t *packages_copy;
|
||||||
|
|
||||||
if(_alpm_pkg_find(*packages, pkg->name) != NULL) {
|
if(alpm_pkg_find(*packages, pkg->name) != NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -685,7 +685,7 @@ int _alpm_pkg_cmp(const void *p1, const void *p2)
|
|||||||
/* Test for existence of a package in a alpm_list_t*
|
/* Test for existence of a package in a alpm_list_t*
|
||||||
* of alpm_pkg_t*
|
* of alpm_pkg_t*
|
||||||
*/
|
*/
|
||||||
alpm_pkg_t *_alpm_pkg_find(alpm_list_t *haystack, const char *needle)
|
alpm_pkg_t SYMEXPORT *alpm_pkg_find(alpm_list_t *haystack, const char *needle)
|
||||||
{
|
{
|
||||||
alpm_list_t *lp;
|
alpm_list_t *lp;
|
||||||
unsigned long needle_hash;
|
unsigned long needle_hash;
|
||||||
|
@ -140,7 +140,6 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
|
|||||||
|
|
||||||
int _alpm_pkg_cmp(const void *p1, const void *p2);
|
int _alpm_pkg_cmp(const void *p1, const void *p2);
|
||||||
int _alpm_pkg_compare_versions(alpm_pkg_t *local_pkg, alpm_pkg_t *pkg);
|
int _alpm_pkg_compare_versions(alpm_pkg_t *local_pkg, alpm_pkg_t *pkg);
|
||||||
alpm_pkg_t *_alpm_pkg_find(alpm_list_t *haystack, const char *needle);
|
|
||||||
int _alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg);
|
int _alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg);
|
||||||
|
|
||||||
#endif /* _ALPM_PACKAGE_H */
|
#endif /* _ALPM_PACKAGE_H */
|
||||||
|
@ -68,7 +68,7 @@ int SYMEXPORT alpm_remove_pkg(alpm_handle_t *handle, alpm_pkg_t *pkg)
|
|||||||
|
|
||||||
pkgname = pkg->name;
|
pkgname = pkg->name;
|
||||||
|
|
||||||
if(_alpm_pkg_find(trans->remove, pkgname)) {
|
if(alpm_pkg_find(trans->remove, pkgname)) {
|
||||||
RET_ERR(handle, ALPM_ERR_TRANS_DUP_TARGET, -1);
|
RET_ERR(handle, ALPM_ERR_TRANS_DUP_TARGET, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ static int remove_prepare_cascade(alpm_handle_t *handle, alpm_list_t *lp)
|
|||||||
alpm_pkg_t *info = _alpm_db_get_pkgfromcache(handle->db_local, miss->target);
|
alpm_pkg_t *info = _alpm_db_get_pkgfromcache(handle->db_local, miss->target);
|
||||||
if(info) {
|
if(info) {
|
||||||
alpm_pkg_t *copy;
|
alpm_pkg_t *copy;
|
||||||
if(!_alpm_pkg_find(trans->remove, info->name)) {
|
if(!alpm_pkg_find(trans->remove, info->name)) {
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "pulling %s in target list\n",
|
_alpm_log(handle, ALPM_LOG_DEBUG, "pulling %s in target list\n",
|
||||||
info->name);
|
info->name);
|
||||||
if(_alpm_pkg_dup(info, ©) == -1) {
|
if(_alpm_pkg_dup(info, ©) == -1) {
|
||||||
@ -137,7 +137,7 @@ static void remove_prepare_keep_needed(alpm_handle_t *handle, alpm_list_t *lp)
|
|||||||
for(i = lp; i; i = i->next) {
|
for(i = lp; i; i = i->next) {
|
||||||
alpm_depmissing_t *miss = i->data;
|
alpm_depmissing_t *miss = i->data;
|
||||||
void *vpkg;
|
void *vpkg;
|
||||||
alpm_pkg_t *pkg = _alpm_pkg_find(trans->remove, miss->causingpkg);
|
alpm_pkg_t *pkg = alpm_pkg_find(trans->remove, miss->causingpkg);
|
||||||
if(pkg == NULL) {
|
if(pkg == NULL) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -171,11 +171,11 @@ static void remove_notify_needed_optdepends(alpm_handle_t *handle, alpm_list_t *
|
|||||||
alpm_pkg_t *pkg = i->data;
|
alpm_pkg_t *pkg = i->data;
|
||||||
alpm_list_t *optdeps = alpm_pkg_get_optdepends(pkg);
|
alpm_list_t *optdeps = alpm_pkg_get_optdepends(pkg);
|
||||||
|
|
||||||
if(optdeps && !_alpm_pkg_find(lp, pkg->name)) {
|
if(optdeps && !alpm_pkg_find(lp, pkg->name)) {
|
||||||
alpm_list_t *j;
|
alpm_list_t *j;
|
||||||
for(j = optdeps; j; j = alpm_list_next(j)) {
|
for(j = optdeps; j; j = alpm_list_next(j)) {
|
||||||
alpm_depend_t *optdep = j->data;
|
alpm_depend_t *optdep = j->data;
|
||||||
if(_alpm_pkg_find(lp, optdep->name)) {
|
if(alpm_pkg_find(lp, optdep->name)) {
|
||||||
EVENT(handle, ALPM_EVENT_OPTDEP_REQUIRED, pkg, optdep);
|
EVENT(handle, ALPM_EVENT_OPTDEP_REQUIRED, pkg, optdep);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -159,7 +159,7 @@ static alpm_list_t *check_replacers(alpm_handle_t *handle, alpm_pkg_t *lpkg,
|
|||||||
|
|
||||||
/* If spkg is already in the target list, we append lpkg to spkg's
|
/* If spkg is already in the target list, we append lpkg to spkg's
|
||||||
* removes list */
|
* removes list */
|
||||||
tpkg = _alpm_pkg_find(handle->trans->add, spkg->name);
|
tpkg = alpm_pkg_find(handle->trans->add, spkg->name);
|
||||||
if(tpkg) {
|
if(tpkg) {
|
||||||
/* sanity check, multiple repos can contain spkg->name */
|
/* sanity check, multiple repos can contain spkg->name */
|
||||||
if(tpkg->origin_data.db != sdb) {
|
if(tpkg->origin_data.db != sdb) {
|
||||||
@ -204,7 +204,7 @@ int SYMEXPORT alpm_sync_sysupgrade(alpm_handle_t *handle, int enable_downgrade)
|
|||||||
for(i = _alpm_db_get_pkgcache(handle->db_local); i; i = i->next) {
|
for(i = _alpm_db_get_pkgcache(handle->db_local); i; i = i->next) {
|
||||||
alpm_pkg_t *lpkg = i->data;
|
alpm_pkg_t *lpkg = i->data;
|
||||||
|
|
||||||
if(_alpm_pkg_find(trans->add, lpkg->name)) {
|
if(alpm_pkg_find(trans->add, lpkg->name)) {
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "%s is already in the target list -- skipping\n", lpkg->name);
|
_alpm_log(handle, ALPM_LOG_DEBUG, "%s is already in the target list -- skipping\n", lpkg->name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -257,7 +257,7 @@ alpm_list_t SYMEXPORT *alpm_find_group_pkgs(alpm_list_t *dbs,
|
|||||||
for(j = grp->packages; j; j = j->next) {
|
for(j = grp->packages; j; j = j->next) {
|
||||||
alpm_pkg_t *pkg = j->data;
|
alpm_pkg_t *pkg = j->data;
|
||||||
|
|
||||||
if(_alpm_pkg_find(ignorelist, pkg->name)) {
|
if(alpm_pkg_find(ignorelist, pkg->name)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(_alpm_pkg_should_ignore(db->handle, pkg)) {
|
if(_alpm_pkg_should_ignore(db->handle, pkg)) {
|
||||||
@ -268,7 +268,7 @@ alpm_list_t SYMEXPORT *alpm_find_group_pkgs(alpm_list_t *dbs,
|
|||||||
if(!install)
|
if(!install)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(!_alpm_pkg_find(pkgs, pkg->name)) {
|
if(!alpm_pkg_find(pkgs, pkg->name)) {
|
||||||
pkgs = alpm_list_add(pkgs, pkg);
|
pkgs = alpm_list_add(pkgs, pkg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -448,7 +448,7 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
/* Set DEPEND reason for pulled packages */
|
/* Set DEPEND reason for pulled packages */
|
||||||
for(i = resolved; i; i = i->next) {
|
for(i = resolved; i; i = i->next) {
|
||||||
alpm_pkg_t *pkg = i->data;
|
alpm_pkg_t *pkg = i->data;
|
||||||
if(!_alpm_pkg_find(trans->add, pkg->name)) {
|
if(!alpm_pkg_find(trans->add, pkg->name)) {
|
||||||
pkg->reason = ALPM_PKG_REASON_DEPEND;
|
pkg->reason = ALPM_PKG_REASON_DEPEND;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -482,8 +482,8 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
alpm_pkg_t *rsync, *sync, *sync1, *sync2;
|
alpm_pkg_t *rsync, *sync, *sync1, *sync2;
|
||||||
|
|
||||||
/* have we already removed one of the conflicting targets? */
|
/* have we already removed one of the conflicting targets? */
|
||||||
sync1 = _alpm_pkg_find(trans->add, conflict->package1);
|
sync1 = alpm_pkg_find(trans->add, conflict->package1);
|
||||||
sync2 = _alpm_pkg_find(trans->add, conflict->package2);
|
sync2 = alpm_pkg_find(trans->add, conflict->package2);
|
||||||
if(!sync1 || !sync2) {
|
if(!sync1 || !sync2) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -545,7 +545,7 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
int found = 0;
|
int found = 0;
|
||||||
for(j = trans->add; j && !found; j = j->next) {
|
for(j = trans->add; j && !found; j = j->next) {
|
||||||
alpm_pkg_t *spkg = j->data;
|
alpm_pkg_t *spkg = j->data;
|
||||||
if(_alpm_pkg_find(spkg->removes, conflict->package2)) {
|
if(alpm_pkg_find(spkg->removes, conflict->package2)) {
|
||||||
found = 1;
|
found = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -556,7 +556,7 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "package '%s' conflicts with '%s'\n",
|
_alpm_log(handle, ALPM_LOG_DEBUG, "package '%s' conflicts with '%s'\n",
|
||||||
conflict->package1, conflict->package2);
|
conflict->package1, conflict->package2);
|
||||||
|
|
||||||
alpm_pkg_t *sync = _alpm_pkg_find(trans->add, conflict->package1);
|
alpm_pkg_t *sync = alpm_pkg_find(trans->add, conflict->package1);
|
||||||
alpm_pkg_t *local = _alpm_db_get_pkgfromcache(handle->db_local, conflict->package2);
|
alpm_pkg_t *local = _alpm_db_get_pkgfromcache(handle->db_local, conflict->package2);
|
||||||
int doremove = 0;
|
int doremove = 0;
|
||||||
QUESTION(handle, ALPM_QUESTION_CONFLICT_PKG, conflict->package1,
|
QUESTION(handle, ALPM_QUESTION_CONFLICT_PKG, conflict->package1,
|
||||||
@ -590,7 +590,7 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
|
|||||||
alpm_pkg_t *spkg = i->data;
|
alpm_pkg_t *spkg = i->data;
|
||||||
for(j = spkg->removes; j; j = j->next) {
|
for(j = spkg->removes; j; j = j->next) {
|
||||||
alpm_pkg_t *rpkg = j->data;
|
alpm_pkg_t *rpkg = j->data;
|
||||||
if(!_alpm_pkg_find(trans->remove, rpkg->name)) {
|
if(!alpm_pkg_find(trans->remove, rpkg->name)) {
|
||||||
alpm_pkg_t *copy;
|
alpm_pkg_t *copy;
|
||||||
_alpm_log(handle, ALPM_LOG_DEBUG, "adding '%s' to remove list\n", rpkg->name);
|
_alpm_log(handle, ALPM_LOG_DEBUG, "adding '%s' to remove list\n", rpkg->name);
|
||||||
if(_alpm_pkg_dup(rpkg, ©) == -1) {
|
if(_alpm_pkg_dup(rpkg, ©) == -1) {
|
||||||
|
Loading…
Reference in New Issue
Block a user