[pacman-dev] [PATCH] src/pacman/sync.c : cleanup of pacman_sync

Xavier shiningxc at gmail.com
Mon Jun 2 05:55:30 EDT 2008


>From 4cc1e73f8fcc5920fd2880b8d6fcb8ce6f9841cb Mon Sep 17 00:00:00 2001
From: Xavier Chantry <shiningxc at gmail.com>
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 <shiningxc at gmail.com>
---
 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




More information about the pacman-dev mailing list