summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/pacman/callback.c2
-rw-r--r--src/pacman/util.c19
-rw-r--r--src/pacman/util.h1
3 files changed, 21 insertions, 1 deletions
diff --git a/src/pacman/callback.c b/src/pacman/callback.c
index 3c98d398..59b40643 100644
--- a/src/pacman/callback.c
+++ b/src/pacman/callback.c
@@ -203,7 +203,7 @@ void cb_trans_evt(pmtransevt_t event, void *data1, void *data2)
(char *)alpm_pkg_get_name(data1),
(char *)alpm_pkg_get_version(data2),
(char *)alpm_pkg_get_version(data1));
- display_optdepends(data1);
+ display_new_optdepends(data2,data1);
break;
case PM_TRANS_EVT_INTEGRITY_START:
printf(_("checking package integrity...\n"));
diff --git a/src/pacman/util.c b/src/pacman/util.c
index 14ae0ed3..fd0d38c7 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -609,6 +609,25 @@ void display_synctargets(const alpm_list_t *syncpkgs)
alpm_list_free(rpkglist);
}
+/* Helper function for comparing strings using the
+ * alpm "compare func" signature */
+int str_cmp(const void *s1, const void *s2)
+{
+ return(strcmp(s1, s2));
+}
+
+void display_new_optdepends(pmpkg_t *oldpkg, pmpkg_t *newpkg)
+{
+ alpm_list_t *old = alpm_pkg_get_optdepends(oldpkg);
+ alpm_list_t *new = alpm_pkg_get_optdepends(newpkg);
+ alpm_list_t *optdeps = alpm_list_diff(new,old,str_cmp);
+ if(optdeps) {
+ printf(_("New optional dependencies for %s\n"), alpm_pkg_get_name(newpkg));
+ list_display_linebreak(" ", optdeps);
+ }
+ alpm_list_free(optdeps);
+}
+
void display_optdepends(pmpkg_t *pkg)
{
alpm_list_t *optdeps = alpm_pkg_get_optdepends(pkg);
diff --git a/src/pacman/util.h b/src/pacman/util.h
index 66a9c4e7..cdb12bd6 100644
--- a/src/pacman/util.h
+++ b/src/pacman/util.h
@@ -54,6 +54,7 @@ void list_display(const char *title, const alpm_list_t *list);
void list_display_linebreak(const char *title, const alpm_list_t *list);
void display_targets(const alpm_list_t *pkgs, int install);
void display_synctargets(const alpm_list_t *syncpkgs);
+void display_new_optdepends(pmpkg_t *oldpkg, pmpkg_t *newpkg);
void display_optdepends(pmpkg_t *pkg);
int yesno(char *fmt, ...);
int noyes(char *fmt, ...);