From 63000584b6442412dbcdf1dd867e09fbde404afe Mon Sep 17 00:00:00 2001 From: Aaron Griffin Date: Sun, 4 Feb 2007 08:26:52 +0000 Subject: Implemented a crappy version of -Qu (query upgrades). This simply outputs the packages to be upgraded in a -Su operation. Much of the code is duplicated from sync.c. TODO: move the implementation to upgrades.c, and reimplement the sync_sysupgrade function in terms of this: trans->packages = alpm_get_upgrades(); --- src/pacman/conf.h | 1 + src/pacman/pacman.c | 2 +- src/pacman/query.c | 13 +++++++++++++ src/pacman/util.c | 4 ++-- src/pacman/util.h | 2 +- 5 files changed, 18 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/pacman/conf.h b/src/pacman/conf.h index ddd20ffc..60e3661b 100644 --- a/src/pacman/conf.h +++ b/src/pacman/conf.h @@ -43,6 +43,7 @@ typedef struct __config_t { unsigned short op_q_owns; unsigned short op_q_search; unsigned short op_q_changelog; + unsigned short op_q_upgrade; unsigned short op_s_clean; unsigned short op_s_dependsonly; unsigned short op_s_downloadonly; diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index c473227c..3c1c8a75 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -372,7 +372,7 @@ static int parseargs(int argc, char *argv[]) break; case 'u': config->op_s_upgrade = 1; - /* TODO config->op_q_upgrade = 1; */ + config->op_q_upgrade = 1; break; case 'v': (config->verbose)++; break; case 'w': diff --git a/src/pacman/query.c b/src/pacman/query.c index be7ca837..36b4af80 100644 --- a/src/pacman/query.c +++ b/src/pacman/query.c @@ -124,6 +124,19 @@ int pacman_query(alpm_list_t *targets) } } + if(config->op_q_upgrade) { + MSG(NL, _("Checking for package upgrades")); + alpm_list_t *syncpkgs; + + if((syncpkgs = alpm_get_upgrades()) != NULL) { + display_targets(syncpkgs); + return(0); + } else { + MSG(NL, _("no upgrades found")); + return(1); + } + } + for(i = targets; !done; i = (i ? alpm_list_next(i) : NULL)) { if(targets == NULL) { done = 1; diff --git a/src/pacman/util.c b/src/pacman/util.c index a30ae617..ac29879f 100644 --- a/src/pacman/util.c +++ b/src/pacman/util.c @@ -263,14 +263,14 @@ void list_display(const char *title, alpm_list_t *list) * `pkgs` should be a list of pmsyncpkg_t's, * retrieved from a transaction object */ -void display_targets(alpm_list_t *pkgs) +void display_targets(alpm_list_t *syncpkgs) { char *str; alpm_list_t *i, *j; alpm_list_t *targets = NULL, *to_remove = NULL; unsigned long totalsize = 0, totalisize = 0, totalrsize = 0; - for(i = pkgs; i; i = alpm_list_next(i)) { + for(i = syncpkgs; i; i = alpm_list_next(i)) { pmsyncpkg_t *sync = alpm_list_getdata(i); pmpkg_t *pkg = alpm_sync_get_package(sync); diff --git a/src/pacman/util.h b/src/pacman/util.h index 61bf09ee..45759310 100644 --- a/src/pacman/util.h +++ b/src/pacman/util.h @@ -59,7 +59,7 @@ char *strtoupper(char *str); char *strtrim(char *str); int reg_match(char *string, char *pattern); void list_display(const char *title, alpm_list_t *list); -void display_targets(alpm_list_t *pkgs); +void display_targets(alpm_list_t *syncpkgs); float get_update_timediff(int first_call); void fill_progress(const int percent, const int proglen); -- cgit v1.2.3