summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Chantry <shiningxc@gmail.com>2009-12-09 23:20:29 +0100
committerDan McGee <dan@archlinux.org>2009-12-14 06:22:16 +0100
commita2c9cbdbdc8ca1ad1653fa42eb4b7571bfe744ec (patch)
tree159827aa7421c5e77be0b392a49a2d86ccb4916f
parentb8b8c78627b2f1791a2b46b0d6c87d7a9b90f376 (diff)
downloadpacman-a2c9cbdbdc8ca1ad1653fa42eb4b7571bfe744ec.tar.gz
pacman-a2c9cbdbdc8ca1ad1653fa42eb4b7571bfe744ec.tar.xz
improve download_internal error messages
download_internal is supposed to always set pm_errno but did not in many cases. The most important (and tested) change is the one concerning fetchStat. This is typically where the code will fail when the network is down for example. Before commit d2dbb04a9af7a18da, this fetchStat call did not exist and the same kind of errors would be encountered in the fetchXGet call that follows. I just copied the error printing to restore the old behavior. Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--lib/libalpm/dload.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
index 05555f2e..6bf9b4db 100644
--- a/lib/libalpm/dload.c
+++ b/lib/libalpm/dload.c
@@ -118,13 +118,14 @@ static int download_internal(const char *url, const char *localpath,
filename = get_filename(url);
if(!filename) {
- return(-1);
+ _alpm_log(PM_LOG_ERROR, _("url '%s' is invalid\n"), url);
+ RET_ERR(PM_ERR_SERVER_BAD_URL, -1);
}
fileurl = fetchParseURL(url);
if(!fileurl) {
_alpm_log(PM_LOG_ERROR, _("url '%s' is invalid\n"), url);
- RET_ERR(PM_ERR_SERVER_BAD_URL, -1);
+ RET_ERR(PM_ERR_LIBFETCH, -1);
}
destfile = get_destfile(localpath, filename);
@@ -179,6 +180,9 @@ static int download_internal(const char *url, const char *localpath,
* non-stat request, so avoid it. */
fetchLastErrCode = 0;
if(fetchStat(fileurl, &ust, "") == -1) {
+ pm_errno = PM_ERR_LIBFETCH;
+ _alpm_log(PM_LOG_ERROR, _("failed retrieving file '%s' from %s : %s\n"),
+ filename, gethost(fileurl), fetchLastErrString);
ret = -1;
goto cleanup;
}
@@ -230,6 +234,7 @@ static int download_internal(const char *url, const char *localpath,
dl_thisfile = 0;
localf = fopen(tempfile, "wb");
if(localf == NULL) { /* still null? */
+ pm_errno = PM_ERR_RETRIEVE;
_alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s\n"),
tempfile, strerror(errno));
ret = -1;
@@ -247,6 +252,7 @@ static int download_internal(const char *url, const char *localpath,
size_t nwritten = 0;
nwritten = fwrite(buffer, 1, nread, localf);
if((nwritten != nread) || ferror(localf)) {
+ pm_errno = PM_ERR_RETRIEVE;
_alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s\n"),
tempfile, strerror(errno));
ret = -1;