This function is useful for frontends to annotate package upgrades
that will be ignored.

Signed-off-by: Allan McRae <[email protected]>
---
 lib/libalpm/alpm.h    |  9 +++++++++
 lib/libalpm/deps.c    |  4 ++--
 lib/libalpm/package.c |  2 +-
 lib/libalpm/package.h |  1 -
 lib/libalpm/sync.c    | 14 +++++++-------
 5 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 29b9f37..2c8c1e6 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -793,6 +793,15 @@ alpm_list_t *alpm_pkg_compute_requiredby(alpm_pkg_t *pkg);
  */
 alpm_list_t *alpm_pkg_compute_optionalfor(alpm_pkg_t *pkg);
 
+/** Test if a package should be ignored.
+ * Checks if the package is ignored via IgnorePkg, or if the package is
+ * in a group ignored via IgnoreGroup.
+ * @param handle the context handle
+ * @param pkg the package to test
+ * @return 1 if the package should be ignored, 0 otherwise
+ */
+int alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg);
+
 /** @name Package Property Accessors
  * Any pointer returned by these functions points to internal structures
  * allocated by libalpm. They should not be freed nor modified in any
diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c
index 745eac1..cf7605e 100644
--- a/lib/libalpm/deps.c
+++ b/lib/libalpm/deps.c
@@ -664,7 +664,7 @@ static alpm_pkg_t *resolvedep(alpm_handle_t *handle, 
alpm_depend_t *dep,
                pkg = _alpm_db_get_pkgfromcache(db, dep->name);
                if(pkg && _alpm_depcmp_literal(pkg, dep)
                                && !alpm_pkg_find(excluding, pkg->name)) {
-                       if(_alpm_pkg_should_ignore(handle, pkg)) {
+                       if(alpm_pkg_should_ignore(handle, pkg)) {
                                int install = 0;
                                if(prompt) {
                                        QUESTION(handle, 
ALPM_QUESTION_INSTALL_IGNOREPKG, pkg,
@@ -693,7 +693,7 @@ static alpm_pkg_t *resolvedep(alpm_handle_t *handle, 
alpm_depend_t *dep,
                         * possibly be the same string */
                        if(pkg->name_hash != dep->name_hash && 
_alpm_depcmp(pkg, dep)
                                        && !alpm_pkg_find(excluding, 
pkg->name)) {
-                               if(_alpm_pkg_should_ignore(handle, pkg)) {
+                               if(alpm_pkg_should_ignore(handle, pkg)) {
                                        int install = 0;
                                        if(prompt) {
                                                QUESTION(handle, 
ALPM_QUESTION_INSTALL_IGNOREPKG,
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index cfdbb3f..1294f8e 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -753,7 +753,7 @@ alpm_pkg_t SYMEXPORT *alpm_pkg_find(alpm_list_t *haystack, 
const char *needle)
  *
  * @return 1 if the package should be ignored, 0 otherwise
  */
-int _alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg)
+int SYMEXPORT alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg)
 {
        alpm_list_t *groups = NULL;
 
diff --git a/lib/libalpm/package.h b/lib/libalpm/package.h
index b7c3358..07b043c 100644
--- a/lib/libalpm/package.h
+++ b/lib/libalpm/package.h
@@ -148,7 +148,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_compare_versions(alpm_pkg_t *local_pkg, alpm_pkg_t *pkg);
-int _alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg);
 
 #endif /* _ALPM_PACKAGE_H */
 
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index a4b1bb8..066f1f2 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -93,8 +93,8 @@ static int check_literal(alpm_handle_t *handle, alpm_pkg_t 
*lpkg,
                _alpm_log(handle, ALPM_LOG_DEBUG, "new version of '%s' found 
(%s => %s)\n",
                                lpkg->name, lpkg->version, spkg->version);
                /* check IgnorePkg/IgnoreGroup */
-               if(_alpm_pkg_should_ignore(handle, spkg)
-                               || _alpm_pkg_should_ignore(handle, lpkg)) {
+               if(alpm_pkg_should_ignore(handle, spkg)
+                               || alpm_pkg_should_ignore(handle, lpkg)) {
                        _alpm_log(handle, ALPM_LOG_WARNING, _("%s: ignoring 
package upgrade (%s => %s)\n"),
                                        lpkg->name, lpkg->version, 
spkg->version);
                } else {
@@ -105,8 +105,8 @@ static int check_literal(alpm_handle_t *handle, alpm_pkg_t 
*lpkg,
        } else if(cmp < 0) {
                if(enable_downgrade) {
                        /* check IgnorePkg/IgnoreGroup */
-                       if(_alpm_pkg_should_ignore(handle, spkg)
-                                       || _alpm_pkg_should_ignore(handle, 
lpkg)) {
+                       if(alpm_pkg_should_ignore(handle, spkg)
+                                       || alpm_pkg_should_ignore(handle, 
lpkg)) {
                                _alpm_log(handle, ALPM_LOG_WARNING, _("%s: 
ignoring package downgrade (%s => %s)\n"),
                                                lpkg->name, lpkg->version, 
spkg->version);
                        } else {
@@ -148,8 +148,8 @@ static alpm_list_t *check_replacers(alpm_handle_t *handle, 
alpm_pkg_t *lpkg,
                        int doreplace = 0;
                        alpm_pkg_t *tpkg;
                        /* check IgnorePkg/IgnoreGroup */
-                       if(_alpm_pkg_should_ignore(handle, spkg)
-                                       || _alpm_pkg_should_ignore(handle, 
lpkg)) {
+                       if(alpm_pkg_should_ignore(handle, spkg)
+                                       || alpm_pkg_should_ignore(handle, 
lpkg)) {
                                _alpm_log(handle, ALPM_LOG_WARNING,
                                                _("ignoring package replacement 
(%s-%s => %s-%s)\n"),
                                                lpkg->name, lpkg->version, 
spkg->name, spkg->version);
@@ -270,7 +270,7 @@ alpm_list_t SYMEXPORT *alpm_find_group_pkgs(alpm_list_t 
*dbs,
                        if(alpm_pkg_find(ignorelist, pkg->name)) {
                                continue;
                        }
-                       if(_alpm_pkg_should_ignore(db->handle, pkg)) {
+                       if(alpm_pkg_should_ignore(db->handle, pkg)) {
                                ignorelist = alpm_list_add(ignorelist, pkg);
                                int install = 0;
                                QUESTION(db->handle, 
ALPM_QUESTION_INSTALL_IGNOREPKG, pkg,
-- 
1.8.4


Reply via email to