The patch fixes the warning messages when syncing a package where
the local version is newer that the db version. Also, all messages
are suppressed when using --print-uris and messages about upgrading
or reinstalling are suppressed when using --downloadonly

Signed-off-by: Allan McRae <[EMAIL PROTECTED]>
---
 lib/libalpm/sync.c |   33 +++++++++++++++++++++++++++------
 1 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index 3dc54d0..f10e1b3 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -333,19 +333,40 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t 
*db_local, alpm_list_t *dbs_sy
 
        local = _alpm_db_get_pkgfromcache(db_local, alpm_pkg_get_name(spkg));
        if(local) {
-               if(_alpm_pkg_compare_versions(local, spkg) == 0) {
-                       /* spkg is NOT an upgrade */
+               int cmp = alpm_pkg_vercmp(alpm_pkg_get_version(spkg), 
alpm_pkg_get_version(local));
+
+               if(cmp == -1) {
+                       /* local is newer than spkg */
+                       _alpm_db_read(spkg->origin_data.db, spkg, INFRQ_DESC);
+                       if(spkg->force) {
+                               if(!(trans->flags & (PM_TRANS_FLAG_DOWNLOADONLY 
| PM_TRANS_FLAG_PRINTURIS))) {
+                                       _alpm_log(PM_LOG_WARNING, _("%s: 
forcing upgrade to version %s\n"),
+                                                       
alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
+                               }
+                       } else {
+                               /* we are downgrading */
+                               if(!(trans->flags & (PM_TRANS_FLAG_DOWNLOADONLY 
| PM_TRANS_FLAG_PRINTURIS))) {
+                                       pmdb_t *db = spkg->origin_data.db;
+                                       _alpm_log(PM_LOG_WARNING, _("%s-%s is 
newer than in %s -- downgrading\n"),
+                                                       
alpm_pkg_get_name(local), alpm_pkg_get_version(local),
+                                                       alpm_db_get_name(db));
+                               }
+                       }
+               } else if(cmp == 0) {
+                       /* spkg has same version as local */
                        if(trans->flags & PM_TRANS_FLAG_NEEDED) {
-                               _alpm_log(PM_LOG_WARNING, _("%s-%s is up to 
date -- skipping\n"),
-                                               alpm_pkg_get_name(local), 
alpm_pkg_get_version(local));
+                               if(!(trans->flags & PM_TRANS_FLAG_PRINTURIS)) {
+                                       _alpm_log(PM_LOG_WARNING, _("%s-%s is 
up to date -- skipping\n"),
+                                                       
alpm_pkg_get_name(local), alpm_pkg_get_version(local));
+                               }
                                return(0);
                        } else {
-                               if(!(trans->flags & 
PM_TRANS_FLAG_DOWNLOADONLY)) {
+                               if(!(trans->flags & (PM_TRANS_FLAG_DOWNLOADONLY 
| PM_TRANS_FLAG_PRINTURIS))) {
                                        _alpm_log(PM_LOG_WARNING, _("%s-%s is 
up to date -- reinstalling\n"),
                                                        
alpm_pkg_get_name(local), alpm_pkg_get_version(local));
                                }
                        }
-               }
+               } /* else cmp == 1 - spkg is newer than local */
        }
 
        /* add the package to the transaction */
-- 
1.5.5.3


_______________________________________________
pacman-dev mailing list
[email protected]
http://archlinux.org/mailman/listinfo/pacman-dev

Reply via email to