Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=2ea1b27baf67b10d1af75466ba5bfd7aeb84f004

commit 2ea1b27baf67b10d1af75466ba5bfd7aeb84f004
Author: Miklos Vajna <[EMAIL PROTECTED]>
Date:   Wed Apr 9 02:37:13 2008 +0200

pacman_trans_release(): return PM_ERR_TRANS_DOWNLOADING if called during a 
download
- closes #2598

diff --git a/lib/libpacman/error.c b/lib/libpacman/error.c
index c6238a5..4de8b5c 100644
--- a/lib/libpacman/error.c
+++ b/lib/libpacman/error.c
@@ -148,6 +148,8 @@ char *pacman_strerror(int err)
return _("could not create new cache directory");
case PM_ERR_WRONG_ARCH:
return _("this package is not for this architecture");
+               case PM_ERR_RETRIEVE:
+                       return _("coult not retrieve the file");
default:
return _("unexpected error");
}
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 402edf9..68e4b4c 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -887,11 +887,14 @@ int pacman_trans_release()
ASSERT(trans->state != STATE_IDLE, RET_ERR(PM_ERR_TRANS_NULL, -1));

/* during a commit do not interrupt inmediatelly, just after a target */
-       if(trans->state == STATE_COMMITING || trans->state == 
STATE_INTERRUPTED) {
+       if(trans->state == STATE_COMMITING || trans->state == 
STATE_DOWNLOADING) {
if(trans->state == STATE_COMMITING) {
trans->state = STATE_INTERRUPTED;
+                       pm_errno = PM_ERR_TRANS_COMMITING;
+               } else if(trans->state == STATE_DOWNLOADING) {
+                       trans->state = STATE_INTERRUPTED;
+                       pm_errno = PM_ERR_TRANS_DOWNLOADING;
}
-               pm_errno = PM_ERR_TRANS_COMMITING;
return(-1);
}

diff --git a/lib/libpacman/sync.c b/lib/libpacman/sync.c
index ec11b36..fe24b45 100644
--- a/lib/libpacman/sync.c
+++ b/lib/libpacman/sync.c
@@ -859,6 +859,7 @@ int _pacman_sync_commit(pmtrans_t *trans, pmdb_t *db_local, 
pmlist_t **data)
}
if(_pacman_downloadfiles(current->servers, ldir, files) == -1) {
_pacman_log(PM_LOG_WARNING, _("failed to retrieve some files from %s\n"), 
current->treename);
+                                       trans->state = STATE_INTERRUPTED;
RET_ERR(PM_ERR_RETRIEVE, -1);
}
FREELIST(files);
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to