summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2008-01-22 23:11:31 -0600
committerDan McGee <dan@archlinux.org>2008-02-27 18:58:24 -0600
commitc2dbbd60bc8a4c90ec32fdbe9098ffae222d00d7 (patch)
treec7d3cf6624b9408b40227cb306a35f07411dece6
parent4fe7eb66eb62ad8537801d8581e472ec594f19f3 (diff)
downloadpacman-c2dbbd60bc8a4c90ec32fdbe9098ffae222d00d7.tar.xz
Start removing some junk from the function template
I screwed up originally when I accepted the TotalDownload patch, 8ec27835f40e3df1ce409bc3d913587c474a30c3. I didn't realize how deeply it modified libalpm and I probably shouldn't have let it do what it did. This commit reverts much of what that patch added in order to clean up our internal function calls. We can find another way to do it right down the road here but for now it has to go. Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--lib/libalpm/alpm.h3
-rw-r--r--lib/libalpm/dload.c27
-rw-r--r--src/pacman/callback.c67
-rw-r--r--src/pacman/callback.h3
4 files changed, 28 insertions, 72 deletions
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index d605004f..2f9eae77 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -78,8 +78,7 @@ int alpm_logaction(char *fmt, ...);
* Downloading
*/
-typedef void (*alpm_cb_download)(const char *filename, int file_xfered,
- int file_total, int list_xfered, int list_total);
+typedef void (*alpm_cb_download)(const char *filename, int xfered, int total);
/*
* Options
diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
index 85b5d726..f0c1ca90 100644
--- a/lib/libalpm/dload.c
+++ b/lib/libalpm/dload.c
@@ -70,8 +70,7 @@ static struct url *url_for_file(const char *url, const char *filename)
/* TODO temporary private declaration */
int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
- alpm_list_t *files, time_t mtime1, time_t *mtime2, int *dl_total,
- unsigned long totalsize);
+ alpm_list_t *files, time_t mtime1, time_t *mtime2);
/* TODO implement these as real functions */
@@ -86,7 +85,7 @@ int _alpm_download_single_file(const char *filename,
files = alpm_list_add(files, (char*)filename);
ret = _alpm_downloadfiles_forreal(servers, localpath,
- files, mtimeold, mtimenew, NULL, 0);
+ files, mtimeold, mtimenew);
/* free list (data was NOT duplicated) */
alpm_list_free(files);
@@ -99,7 +98,7 @@ int _alpm_download_files(alpm_list_t *files,
int ret;
ret = _alpm_downloadfiles_forreal(servers, localpath,
- files, 0, NULL, NULL, 0);
+ files, 0, NULL);
return(ret);
}
@@ -112,19 +111,13 @@ int _alpm_download_files(alpm_list_t *files,
* than mtime1.
* - if *mtime2 is non-NULL, it will be filled with the mtime of the remote
* file.
- * - if *dl_total is non-NULL, then it will be used as the starting
- * download amount when TotalDownload is set. It will also be
- * set to the final download amount for the calling function to use.
- * - totalsize is the total download size for use when TotalDownload
- * is set. Use 0 if the total download size is not known.
*
* RETURN: 0 for successful download
* 1 if the mtimes are identical
* -1 on error
*/
int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
- alpm_list_t *files, time_t mtime1, time_t *mtime2, int *dl_total,
- unsigned long totalsize)
+ alpm_list_t *files, time_t mtime1, time_t *mtime2)
{
int dl_thisfile = 0;
alpm_list_t *lp;
@@ -177,9 +170,6 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
_alpm_log(PM_LOG_DEBUG, "existing file found, using it\n");
fileurl->offset = (off_t)st.st_size;
dl_thisfile = st.st_size;
- if (dl_total != NULL) {
- *dl_total += st.st_size;
- }
localf = fopen(output, "a");
chk_resume = 1;
} else {
@@ -256,8 +246,7 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
/* Progress 0 - initialize */
if(handle->dlcb) {
- handle->dlcb(pkgname, 0, ust.size, dl_total ? *dl_total : 0,
- totalsize);
+ handle->dlcb(pkgname, 0, ust.size);
}
int nread = 0;
@@ -289,13 +278,9 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
}
dl_thisfile += nread;
- if (dl_total != NULL) {
- *dl_total += nread;
- }
if(handle->dlcb) {
- handle->dlcb(pkgname, dl_thisfile, ust.size,
- dl_total ? *dl_total : 0, totalsize);
+ handle->dlcb(pkgname, dl_thisfile, ust.size);
}
}
diff --git a/src/pacman/callback.c b/src/pacman/callback.c
index ef161855..47b538e5 100644
--- a/src/pacman/callback.c
+++ b/src/pacman/callback.c
@@ -83,17 +83,14 @@ static float get_update_timediff(int first_call)
}
/* refactored from cb_trans_progress */
-static void fill_progress(const int graph_percent, const int display_percent,
- const int proglen)
+static void fill_progress(const int percent, const int proglen)
{
const unsigned int hashlen = proglen - 8;
- const unsigned int hash = graph_percent * hashlen / 100;
+ const unsigned int hash = percent * hashlen / 100;
static unsigned int lasthash = 0, mouth = 0;
unsigned int i;
- /* printf("\ndebug: proglen: %i\n", proglen); DEBUG*/
-
- if(graph_percent == 0) {
+ if(percent == 0) {
lasthash = 0;
mouth = 0;
}
@@ -138,10 +135,10 @@ static void fill_progress(const int graph_percent, const int display_percent,
}
/* print percent after progress bar */
if(proglen > 5) {
- printf(" %3d%%", display_percent);
+ printf(" %3d%%", percent);
}
- if(graph_percent == 100) {
+ if(percent == 100) {
printf("\n");
} else {
printf("\r");
@@ -388,7 +385,7 @@ void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent,
free(wcstr);
/* call refactored fill progress function */
- fill_progress(percent, percent, getcols() - infolen);
+ fill_progress(percent, getcols() - infolen);
if(percent == 100) {
alpm_list_t *i = NULL;
@@ -404,8 +401,7 @@ void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent,
}
/* callback to handle display of download progress */
-void cb_dl_progress(const char *filename, int file_xfered, int file_total,
- int list_xfered, int list_total)
+void cb_dl_progress(const char *filename, int xfered, int total)
{
const int infolen = 50;
const int filenamelen = infolen - 27;
@@ -416,43 +412,22 @@ void cb_dl_progress(const char *filename, int file_xfered, int file_total,
float rate = 0.0, timediff = 0.0, f_xfered = 0.0;
unsigned int eta_h = 0, eta_m = 0, eta_s = 0;
- int graph_percent = 0, display_percent = 0;
+ int percent;
char rate_size = 'K', xfered_size = 'K';
- int xfered = 0, total = 0;
-
- /* Need this variable when TotalDownload is set to know if we should
- * reset xfered_last and rate_last. */
- static int has_init = 0;
if(config->noprogressbar) {
return;
}
- /* Choose how to display the amount downloaded, rate, ETA, and
- * percentage depending on the TotalDownload option. */
- if (config->totaldownload && list_total > 0) {
- xfered = list_xfered;
- total = list_total;
- } else {
- xfered = file_xfered;
- total = file_total;
- }
-
/* this is basically a switch on file_xferred: 0, file_total, and
* anything else */
- if(file_xfered == 0) {
- /* set default starting values, but only once for TotalDownload */
- if (!(config->totaldownload && list_total > 0) ||
- (config->totaldownload && list_total > 0 && !has_init)) {
- gettimeofday(&initial_time, NULL);
- timediff = get_update_timediff(1);
- xfered_last = 0;
- rate_last = 0.0;
- has_init = 1;
- }
- rate = 0.0;
- eta_s = 0;
- } else if(file_xfered == file_total) {
+ if(xfered == 0) {
+ /* set default starting values */
+ gettimeofday(&initial_time, NULL);
+ xfered_last = 0;
+ rate_last = 0.0;
+ timediff = get_update_timediff(1);
+ } else if(xfered == total) {
/* compute final values */
struct timeval current_time;
float diff_sec, diff_usec;
@@ -461,7 +436,7 @@ void cb_dl_progress(const char *filename, int file_xfered, int file_total,
diff_sec = current_time.tv_sec - initial_time.tv_sec;
diff_usec = current_time.tv_usec - initial_time.tv_usec;
timediff = diff_sec + (diff_usec / 1000000.0);
- rate = xfered / (timediff * 1024.0);
+ rate = total / (timediff * 1024.0);
/* round elapsed time to the nearest second */
eta_s = (int)(timediff + 0.5);
@@ -475,12 +450,14 @@ void cb_dl_progress(const char *filename, int file_xfered, int file_total,
}
rate = (xfered - xfered_last) / (timediff * 1024.0);
/* average rate to reduce jumpiness */
- rate = (rate + 2*rate_last) / 3;
+ rate = (rate + 2 * rate_last) / 3;
eta_s = (total - xfered) / (rate * 1024.0);
rate_last = rate;
xfered_last = xfered;
}
+ percent = (int)((float)xfered) / ((float)total) * 100;
+
/* fix up time for display */
eta_h = eta_s / 3600;
eta_s -= eta_h * 3600;
@@ -552,11 +529,7 @@ void cb_dl_progress(const char *filename, int file_xfered, int file_total,
free(fname);
free(wcfname);
- /* The progress bar is based on the file percent regardless of the
- * TotalDownload option. */
- graph_percent = (int)((float)file_xfered) / ((float)file_total) * 100;
- display_percent = (int)((float)xfered) / ((float)total) * 100;
- fill_progress(graph_percent, display_percent, getcols() - infolen);
+ fill_progress(percent, getcols() - infolen);
return;
}
diff --git a/src/pacman/callback.h b/src/pacman/callback.h
index aa8d9370..39d59d8b 100644
--- a/src/pacman/callback.h
+++ b/src/pacman/callback.h
@@ -33,8 +33,7 @@ void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent,
int howmany, int remain);
/* callback to handle display of download progress */
-void cb_dl_progress(const char *filename, int file_xfered, int file_total,
- int list_xfered, int list_total);
+void cb_dl_progress(const char *filename, int file_xfered, int file_total);
/* callback to handle messages/notifications from pacman library */
void cb_log(pmloglevel_t level, char *fmt, va_list args);