summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2007-10-05 01:13:09 +0200
committerAaron Griffin <aaronmgriffin@gmail.com>2007-10-05 01:13:09 +0200
commit98bcd1f5b1023b9eb219589c809fb2505079965d (patch)
tree55c0e3eb36ce5c28d45248419125db6262126b88
parent02ec82b8c6fb2b2b89df92d79e9f8a28ce093cbe (diff)
downloadpacman-98bcd1f5b1023b9eb219589c809fb2505079965d.tar.gz
pacman-98bcd1f5b1023b9eb219589c809fb2505079965d.tar.xz
Fix -Sy and -Sp operations.
When the -Sy operation failed, the lock wasn't removed because alpm_trans_release wasn't called. This is fixed now. Also, after my last change in commit 52e7e6d74733f7a431376a9e528c4fe4d3732068 , Sp didn't do anything anymore. That's because needs_transaction returned false for -Sp, so the sync transaction wasn't run. However, the current implementation of -Sp requires a sync transaction. Also, since a transaction creates the lock file at the beginning, and releases it at the end, this mean that -Sp requires root access anyway.. I think I understand now why Aaron found that the current -Sp implementation is hackish :) Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
-rw-r--r--src/pacman/sync.c3
-rw-r--r--src/pacman/util.c3
2 files changed, 3 insertions, 3 deletions
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 78ce9b71..6a7d50e7 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -414,7 +414,8 @@ int sync_trans(alpm_list_t *targets, int sync_only)
alpm_logaction("synchronizing package lists");
if(!sync_synctree(config->op_s_sync, sync_dbs)) {
fprintf(stderr, _("error: failed to synchronize any databases\n"));
- return(1);
+ retval = 1;
+ goto cleanup;
}
if(sync_only) {
goto cleanup;
diff --git a/src/pacman/util.c b/src/pacman/util.c
index d82b5769..2c007536 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -49,8 +49,7 @@ int needs_transaction()
{
if(config->op != PM_OP_MAIN && config->op != PM_OP_QUERY && config->op != PM_OP_DEPTEST) {
if((config->op == PM_OP_SYNC && !config->op_s_sync &&
- (config->op_s_search || config->group || config->op_q_list || config->op_q_info
- || config->flags & PM_TRANS_FLAG_PRINTURIS))
+ (config->op_s_search || config->group || config->op_q_list || config->op_q_info))
|| config->op == PM_OP_DEPTEST) {
/* special case: PM_OP_SYNC can be used w/ config->op_s_search by any user */
return(0);