diff options
Diffstat (limited to 'src/pacman.c')
-rw-r--r-- | src/pacman.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/pacman.c b/src/pacman.c index 5ea0c1a7..779fc581 100644 --- a/src/pacman.c +++ b/src/pacman.c @@ -76,6 +76,7 @@ unsigned short pmo_s_sync = 0; unsigned short pmo_s_search = 0; unsigned short pmo_s_clean = 0; PMList *pmo_noupgrade = NULL; +PMList *pmo_ignorepkg = NULL; /* list of sync_t structs for sync locations */ @@ -379,6 +380,7 @@ int pacman_sync(pacdb_t *db, PMList *targets) } } else if(pmo_s_upgrade) { int newer = 0; + int ignore = 0; for(i = pm_packages; i && allgood; i = i->next) { int cmp, found = 0; pkginfo_t *local = (pkginfo_t*)i->data; @@ -400,6 +402,12 @@ int pacman_sync(pacdb_t *db, PMList *targets) /*fprintf(stderr, "%s: not found in sync db. skipping.", local->name);*/ continue; } + /* check if package should be ignored */ + if(is_in((char*)i->data, pmo_ignorepkg)) { + fprintf(stderr, ":: %s: ignoring package upgrade\n", (char*)i->data); + ignore = 1; + continue; + } /* compare versions and see if we need to upgrade */ cmp = rpmvercmp(local->version, sync->pkg->version); if(cmp > 0) { @@ -438,7 +446,7 @@ int pacman_sync(pacdb_t *db, PMList *targets) } } } - if(newer && allgood) { + if((newer || ignore) && allgood) { fprintf(stderr, ":: Above packages will be skipped. To manually upgrade use 'pacman -S <pkg>'\n"); } } else { |