>From 4cc1e73f8fcc5920fd2880b8d6fcb8ce6f9841cb Mon Sep 17 00:00:00 2001
From: Xavier Chantry <[EMAIL PROTECTED]>
Date: Wed, 28 May 2008 22:55:03 +0200
Subject: [PATCH] src/pacman/sync.c : cleanup of pacman_sync

By putting the search / group / info / list operations just after the -Sy
op, we can simplify several checks :
1) the check for "missing targets". Since we took care of the above
operations, we now have less cases to consider :
* -Sy : we can end now (this is actually a bugfix)
* -Su : we can proceed
* -S : this op requires targets, so exit with an error
2) the check to see if a transaction is needed. If we arrive at the end of
the function, it is either because we have -Su or -S <targets> so we already
know a transaction is needed there.

Signed-off-by: Xavier Chantry <[EMAIL PROTECTED]>
---
 src/pacman/sync.c |   76 +++++++++++++++++++++++++---------------------------
 1 files changed, 37 insertions(+), 39 deletions(-)

diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 134d4db..7fb8649 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -794,15 +794,6 @@ int pacman_sync(alpm_list_t *targets)
                return(1);
        }

-       if(targets == NULL && !(config->op_s_sync || config->op_s_upgrade
-                               || config->op_s_search || config->group
-                               || config->op_s_info || config->op_q_list)) {
-               /* don't proceed here unless we have an operation that doesn't 
require
-                * a target list */
-               pm_printf(PM_LOG_ERROR, _("no targets specified (use -h for 
help)\n"));
-               return(1);
-       }
-
        if(config->op_s_sync) {
                /* grab a fresh package list */
                printf(_(":: Synchronizing package databases...\n"));
@@ -810,35 +801,6 @@ int pacman_sync(alpm_list_t *targets)
                if(!sync_synctree(config->op_s_sync, sync_dbs)) {
                        return(1);
                }
-               config->op_s_sync = 0;
-       }
-
-       if(needs_transaction()) {
-               alpm_list_t *targs = alpm_list_strdup(targets);
-               if(!(config->flags & (PM_TRANS_FLAG_DOWNLOADONLY |
PM_TRANS_FLAG_PRINTURIS))) {
-                       /* check for newer versions of packages to be upgraded 
first */
-                       alpm_list_t *packages = syncfirst();
-                       if(packages) {
-                               printf(_(":: The following packages should be 
upgraded first :\n"));
-                               list_display("   ", packages);
-                               if(yesno(1, _(":: Do you want to cancel the 
current operation\n"
-                                                               ":: and upgrade 
these packages now?"))) {
-                                       FREELIST(targs);
-                                       targs = packages;
-                                       config->flags = 0;
-                                       config->op_s_upgrade = 0;
-                               } else {
-                                       FREELIST(packages);
-                               }
-                               printf("\n");
-                       }
-               }
-
-               int ret = sync_trans(targs);
-               FREELIST(targs);
-               if(ret == 1) {
-                       return(1);
-               }
        }

        /* search for a package */
@@ -861,7 +823,43 @@ int pacman_sync(alpm_list_t *targets)
                return(sync_list(sync_dbs, targets));
        }

-       return(0);
+       if(targets == NULL) {
+               if(config->op_s_sync) {
+                       return(0);
+               } else if(config->op_s_upgrade) {
+                       /* proceed */
+               } else {
+                       /* don't proceed here unless we have an operation that 
doesn't require a
+                        * target list */
+                       pm_printf(PM_LOG_ERROR, _("no targets specified (use -h 
for help)\n"));
+                       return(1);
+               }
+       }
+
+       alpm_list_t *targs = alpm_list_strdup(targets);
+       if(!(config->flags & (PM_TRANS_FLAG_DOWNLOADONLY |
PM_TRANS_FLAG_PRINTURIS))) {
+               /* check for newer versions of packages to be upgraded first */
+               alpm_list_t *packages = syncfirst();
+               if(packages) {
+                       printf(_(":: The following packages should be upgraded 
first :\n"));
+                       list_display("   ", packages);
+                       if(yesno(1, _(":: Do you want to cancel the current 
operation\n"
+                                                       ":: and upgrade these 
packages now?"))) {
+                               FREELIST(targs);
+                               targs = packages;
+                               config->flags = 0;
+                               config->op_s_upgrade = 0;
+                       } else {
+                               FREELIST(packages);
+                       }
+                       printf("\n");
+               }
+       }
+
+       int ret = sync_trans(targs);
+       FREELIST(targs);
+
+       return(ret);
 }

 /* vim: set ts=2 sw=2 noet: */
-- 
1.5.5.1

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

Reply via email to