diff options
author | Aaron Griffin <aaron@archlinux.org> | 2007-02-04 08:26:52 +0000 |
---|---|---|
committer | Aaron Griffin <aaron@archlinux.org> | 2007-02-04 08:26:52 +0000 |
commit | 63000584b6442412dbcdf1dd867e09fbde404afe (patch) | |
tree | 5ac1028f9aaf0ff5a75d9d2144a9ecc337dc2211 /src | |
parent | b2da4b42344444dc22f1e5b01fb4cd09033adc1d (diff) |
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();
Diffstat (limited to 'src')
-rw-r--r-- | src/pacman/conf.h | 1 | ||||
-rw-r--r-- | src/pacman/pacman.c | 2 | ||||
-rw-r--r-- | src/pacman/query.c | 13 | ||||
-rw-r--r-- | src/pacman/util.c | 4 | ||||
-rw-r--r-- | src/pacman/util.h | 2 |
5 files changed, 18 insertions, 4 deletions
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); |