summaryrefslogtreecommitdiff
path: root/src/pacman
diff options
context:
space:
mode:
Diffstat (limited to 'src/pacman')
-rw-r--r--src/pacman/Makefile.am3
-rw-r--r--src/pacman/add.c2
-rw-r--r--src/pacman/callback.c (renamed from src/pacman/trans.c)260
-rw-r--r--src/pacman/callback.h (renamed from src/pacman/trans.h)28
-rw-r--r--src/pacman/downloadprog.c162
-rw-r--r--src/pacman/downloadprog.h28
-rw-r--r--src/pacman/log.c73
-rw-r--r--src/pacman/log.h4
-rw-r--r--src/pacman/pacman.c4
-rw-r--r--src/pacman/remove.c2
-rw-r--r--src/pacman/sync.c2
-rw-r--r--src/pacman/util.c67
-rw-r--r--src/pacman/util.h1
13 files changed, 277 insertions, 359 deletions
diff --git a/src/pacman/Makefile.am b/src/pacman/Makefile.am
index 21099657..241188ab 100644
--- a/src/pacman/Makefile.am
+++ b/src/pacman/Makefile.am
@@ -16,14 +16,13 @@ pacman_SOURCES = \
add.c \
conf.h conf.c \
deptest.c \
- downloadprog.h downloadprog.c \
log.h log.c \
package.h package.c \
pacman.h pacman.c \
query.c \
remove.c \
sync.c \
- trans.h trans.c \
+ callback.h callback.c \
util.h util.c
pacman_LDADD = $(top_builddir)/lib/libalpm/.libs/libalpm.la \
diff --git a/src/pacman/add.c b/src/pacman/add.c
index 7a8f7809..3d0622cc 100644
--- a/src/pacman/add.c
+++ b/src/pacman/add.c
@@ -31,7 +31,7 @@
/* pacman */
#include "pacman.h"
#include "log.h"
-#include "trans.h"
+#include "callback.h"
#include "conf.h"
#include "util.h"
diff --git a/src/pacman/trans.c b/src/pacman/callback.c
index e67d5607..d86c7d9c 100644
--- a/src/pacman/trans.c
+++ b/src/pacman/callback.c
@@ -1,8 +1,8 @@
/*
- * trans.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ * callback.c
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
@@ -24,28 +24,105 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/time.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <wchar.h>
+#include <math.h>
#include <alpm.h>
/* pacman */
-#include "trans.h"
+#include "callback.h"
#include "util.h"
#include "log.h"
#include "conf.h"
/* TODO this should not have to be defined twice- trans.c & log.c */
#define LOG_STR_LEN 256
+#define FILENAME_TRIM_LEN 23
extern config_t *config;
+/* download progress bar */
+static float rate_last;
+static int xfered_last;
+static struct timeval initial_time;
+
+/* transaction progress bar ? */
static int prevpercent=0; /* for less progressbar output */
-/* Callback to handle transaction events
- */
+/* refactored from cb_trans_progress */
+static void fill_progress(const int percent, const int proglen)
+{
+ const unsigned short chomp = alpm_option_get_chomp();
+ const unsigned int hashlen = proglen - 8;
+ 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(percent == 0) {
+ lasthash = 0;
+ mouth = 0;
+ }
+
+ /* magic numbers, how I loathe thee */
+ if(proglen > 8) {
+ printf(" [");
+ for(i = hashlen; i > 1; --i) {
+ /* if special progress bar enabled */
+ if(chomp) {
+ if(i > hashlen - hash) {
+ printf("-");
+ } else if(i == hashlen - hash) {
+ if(lasthash == hash) {
+ if(mouth) {
+ printf("\033[1;33mC\033[m");
+ } else {
+ printf("\033[1;33mc\033[m");
+ }
+ } else {
+ lasthash = hash;
+ mouth = mouth == 1 ? 0 : 1;
+ if(mouth) {
+ printf("\033[1;33mC\033[m");
+ } else {
+ printf("\033[1;33mc\033[m");
+ }
+ }
+ } else if(i%3 == 0) {
+ printf("\033[0;37mo\033[m");
+ } else {
+ printf("\033[0;37m \033[m");
+ }
+ } /* else regular progress bar */
+ else if(i > hashlen - hash) {
+ printf("#");
+ } else {
+ printf("-");
+ }
+ }
+ printf("]");
+ }
+ /* print percent after progress bar */
+ if(proglen > 5) {
+ printf(" %3d%%", percent);
+ }
+
+ if(percent == 100) {
+ printf("\n");
+ } else {
+ printf("\r");
+ }
+ fflush(stdout);
+}
+
+
+
+/* callback to handle messages/notifications from libalpm transactions */
void cb_trans_evt(pmtransevt_t event, void *data1, void *data2)
{
char str[LOG_STR_LEN] = "";
@@ -154,6 +231,7 @@ void cb_trans_evt(pmtransevt_t event, void *data1, void *data2)
}
}
+/* callback to handle questions from libalpm transactions (yes/no) */
void cb_trans_conv(pmtransconv_t event, void *data1, void *data2,
void *data3, int *response)
{
@@ -278,6 +356,7 @@ void cb_trans_conv(pmtransconv_t event, void *data1, void *data2,
}
}
+/* callback to handle display of transaction progress */
void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent,
int howmany, int remain)
{
@@ -377,7 +456,172 @@ void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent,
if(percent >= 100) {
set_output_padding(0); /* restore padding */
}
+}
+
+/* callback to handle display of download progress */
+void cb_dl_progress(const char *filename, int xfered, int total)
+{
+ const int infolen = 50;
+ char *fname, *p;
+
+ float rate = 0.0, timediff = 0.0, f_xfered = 0.0;
+ unsigned int eta_h = 0, eta_m = 0, eta_s = 0;
+ int percent;
+ char rate_size = 'K', xfered_size = 'K';
+
+ if(config->noprogressbar) {
+ return;
+ }
+
+ /* XXX: big fat hack: due to the fact that we switch out printf/pm_fprintf,
+ * not everything honors our 'neednl' newline hackery. This forces a newline
+ * if we need one before drawing the progress bar */
+ MSG(NL,NULL);
+
+ /* this is basically a switch on xferred: 0, total, and anything else */
+ if(xfered == 0) {
+ /* set default starting values */
+ gettimeofday(&initial_time, NULL);
+ xfered_last = 0;
+ rate_last = 0.0;
+ timediff = get_update_timediff(1);
+ rate = 0.0;
+ eta_s = 0;
+ set_output_padding(1); /* we need padding from pm_fprintf output */
+ } else if(xfered == total) {
+ /* compute final values */
+ struct timeval current_time;
+ float diff_sec, diff_usec;
+
+ gettimeofday(&current_time, NULL);
+ 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 = (float)total / (timediff * 1024.0);
+
+ /* round elapsed time to the nearest second */
+ eta_s = (int)floorf(timediff + 0.5);
+
+ set_output_padding(0); /* shut off padding */
+ } else {
+ /* compute current average values */
+ timediff = get_update_timediff(0);
+
+ if(timediff < UPDATE_SPEED_SEC) {
+ /* return if the calling interval was too short */
+ return;
+ }
+ rate = (float)(xfered - xfered_last) / (timediff * 1024.0);
+ /* average rate to reduce jumpiness */
+ rate = (float)(rate + 2*rate_last) / 3;
+ eta_s = (unsigned int)(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;
+ eta_m = eta_s / 60;
+ eta_s -= eta_m * 60;
+ fname = strdup(filename);
+ /* strip extension if it's there
+ * NOTE: in the case of package files, only the pkgname is sent now */
+ if((p = strstr(fname, PM_EXT_PKG)) || (p = strstr(fname, PM_EXT_DB))) {
+ *p = '\0';
+ }
+ if(strlen(fname) > FILENAME_TRIM_LEN) {
+ strcpy(fname + FILENAME_TRIM_LEN -3,"...");
+ }
+
+ /* Awesome formatting for progress bar. We need a mess of Kb->Mb->Gb stuff
+ * here. We'll use limit of 2048 for each until we get some empirical */
+ /* rate_size = 'K'; was set above */
+ if(rate > 2048.0) {
+ rate /= 1024.0;
+ rate_size = 'M';
+ if(rate > 2048.0) {
+ rate /= 1024.0;
+ rate_size = 'G';
+ /* we should not go higher than this for a few years (9999.9 Gb/s?)*/
+ }
+ }
+
+ f_xfered = (float) xfered / 1024.0; /* convert to K by default */
+ /* xfered_size = 'K'; was set above */
+ if(f_xfered > 2048.0) {
+ f_xfered /= 1024.0;
+ xfered_size = 'M';
+ if(f_xfered > 2048.0) {
+ f_xfered /= 1024.0;
+ xfered_size = 'G';
+ /* I should seriously hope that archlinux packages never break
+ * the 9999.9GB mark... we'd have more serious problems than the progress
+ * bar in pacman */
+ }
+ }
+
+ printf(" %-*s %6.1f%c %#6.1f%c/s %02u:%02u:%02u", FILENAME_TRIM_LEN, fname,
+ f_xfered, xfered_size, rate, rate_size, eta_h, eta_m, eta_s);
+
+ free(fname);
+
+ fill_progress(percent, getcols() - infolen);
+ return;
+}
+
+/* Callback to handle notifications from the library */
+void cb_log(unsigned short level, char *msg)
+{
+ char str[LOG_STR_LEN] = "";
+
+ if(!strlen(msg)) {
+ return;
+ }
+
+ switch(level) {
+ case PM_LOG_DEBUG:
+ sprintf(str, _("debug"));
+ break;
+ case PM_LOG_ERROR:
+ sprintf(str, _("error"));
+ break;
+ case PM_LOG_WARNING:
+ sprintf(str, _("warning"));
+ break;
+ case PM_LOG_FUNCTION:
+ /* TODO we should increase the indent level when this occurs so we can see
+ * program flow easier. It'll be fun
+ */
+ sprintf(str, _("function"));
+ break;
+ default:
+ sprintf(str, "???");
+ break;
+ }
+
+#ifdef PACMAN_DEBUG
+ /* If debug is on, we'll timestamp the output */
+ if(alpm_option_get_logmask() & PM_LOG_DEBUG) {
+ time_t t;
+ struct tm *tmp;
+ char timestr[10] = {0};
+
+ t = time(NULL);
+ tmp = localtime(&t);
+ strftime(timestr, 9, "%H:%M:%S", tmp);
+ timestr[8] = '\0';
+
+ MSG(NL, "[%s] %s: %s", timestr, str, msg);
+ } else {
+ MSG(NL, "%s: %s", str, msg);
+ }
+#else
+ MSG(NL, "%s: %s", str, msg);
+#endif
}
/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/trans.h b/src/pacman/callback.h
index 0c0f9e01..bc7038d3 100644
--- a/src/pacman/trans.h
+++ b/src/pacman/callback.h
@@ -1,8 +1,8 @@
/*
- * trans.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
+ * callback.h
+ *
+ * Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
@@ -15,25 +15,31 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
-#ifndef _PM_TRANS_H
-#define _PM_TRANS_H
+#ifndef _PM_CALLBACK_H
+#define _PM_CALLBACK_H
#include <alpm.h>
-/* callback to handle messages/notifications from pacman transactions */
+/* callback to handle messages/notifications from libalpm transactions */
void cb_trans_evt(pmtransevt_t event, void *data1, void *data2);
-/* callback to handle questions from pacman transactions (yes/no) */
+/* callback to handle questions from libalpm transactions (yes/no) */
void cb_trans_conv(pmtransconv_t event, void *data1, void *data2,
void *data3, int *response);
-/* callback to handle display of the progress bar for transactions */
+/* callback to handle display of transaction progress */
void cb_trans_progress(pmtransprog_t event, const char *pkgname, int percent,
int howmany, int remain);
-#endif /* _PM_TRANS_H */
+/* callback to handle display of download progress */
+void cb_dl_progress(const char *filename, int xfered, int total);
+
+/* callback to handle messages/notifications from pacman library */
+void cb_log(unsigned short level, char *msg);
+
+#endif /* _PM_CALLBACK_H */
/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/downloadprog.c b/src/pacman/downloadprog.c
deleted file mode 100644
index fccdc322..00000000
--- a/src/pacman/downloadprog.c
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * downloadprog.c
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/time.h>
-#include <math.h>
-
-#include <alpm.h>
-
-/* pacman */
-#include "downloadprog.h"
-#include "util.h"
-#include "log.h"
-#include "conf.h"
-
-/* progress bar */
-static float rate_last;
-static int xfered_last;
-static struct timeval initial_time;
-
-/* pacman options */
-extern config_t *config;
-
-#define FILENAME_TRIM_LEN 23
-
-void log_progress(const char *filename, int xfered, int total)
-{
- const int infolen = 50;
- char *fname, *p;
-
- float rate = 0.0, timediff = 0.0, f_xfered = 0.0;
- unsigned int eta_h = 0, eta_m = 0, eta_s = 0;
- int percent;
- char rate_size = 'K', xfered_size = 'K';
-
- if(config->noprogressbar) {
- return;
- }
-
- /* XXX: big fat hack: due to the fact that we switch out printf/pm_fprintf,
- * not everything honors our 'neednl' newline hackery. This forces a newline
- * if we need one before drawing the progress bar */
- MSG(NL,NULL);
-
- /* this is basically a switch on xferred: 0, total, and anything else */
- if(xfered == 0) {
- /* set default starting values */
- gettimeofday(&initial_time, NULL);
- xfered_last = 0;
- rate_last = 0.0;
- timediff = get_update_timediff(1);
- rate = 0.0;
- eta_s = 0;
- set_output_padding(1); /* we need padding from pm_fprintf output */
- } else if(xfered == total) {
- /* compute final values */
- struct timeval current_time;
- float diff_sec, diff_usec;
-
- gettimeofday(&current_time, NULL);
- 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 = (float)total / (timediff * 1024.0);
-
- /* round elapsed time to the nearest second */
- eta_s = (int)floorf(timediff + 0.5);
-
- set_output_padding(0); /* shut off padding */
- } else {
- /* compute current average values */
- timediff = get_update_timediff(0);
-
- if(timediff < UPDATE_SPEED_SEC) {
- /* return if the calling interval was too short */
- return;
- }
- rate = (float)(xfered - xfered_last) / (timediff * 1024.0);
- /* average rate to reduce jumpiness */
- rate = (float)(rate + 2*rate_last) / 3;
- eta_s = (unsigned int)(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;
- eta_m = eta_s / 60;
- eta_s -= eta_m * 60;
-
- fname = strdup(filename);
- /* strip extension if it's there
- * NOTE: in the case of package files, only the pkgname is sent now */
- if((p = strstr(fname, PM_EXT_PKG)) || (p = strstr(fname, PM_EXT_DB))) {
- *p = '\0';
- }
- if(strlen(fname) > FILENAME_TRIM_LEN) {
- strcpy(fname + FILENAME_TRIM_LEN -3,"...");
- }
-
- /* Awesome formatting for progress bar. We need a mess of Kb->Mb->Gb stuff
- * here. We'll use limit of 2048 for each until we get some empirical */
- /* rate_size = 'K'; was set above */
- if(rate > 2048.0) {
- rate /= 1024.0;
- rate_size = 'M';
- if(rate > 2048.0) {
- rate /= 1024.0;
- rate_size = 'G';
- /* we should not go higher than this for a few years (9999.9 Gb/s?)*/
- }
- }
-
- f_xfered = (float) xfered / 1024.0; /* convert to K by default */
- /* xfered_size = 'K'; was set above */
- if(f_xfered > 2048.0) {
- f_xfered /= 1024.0;
- xfered_size = 'M';
- if(f_xfered > 2048.0) {
- f_xfered /= 1024.0;
- xfered_size = 'G';
- /* I should seriously hope that archlinux packages never break
- * the 9999.9GB mark... we'd have more serious problems than the progress
- * bar in pacman */
- }
- }
-
- printf(" %-*s %6.1f%c %#6.1f%c/s %02u:%02u:%02u", FILENAME_TRIM_LEN, fname,
- f_xfered, xfered_size, rate, rate_size, eta_h, eta_m, eta_s);
-
- free(fname);
-
- fill_progress(percent, getcols() - infolen);
- return;
-}
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/downloadprog.h b/src/pacman/downloadprog.h
deleted file mode 100644
index e79fcc51..00000000
--- a/src/pacman/downloadprog.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * downloadprog.h
- *
- * Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
- * USA.
- */
-#ifndef _PM_DOWNLOADPROG_H
-#define _PM_DOWNLOADPROG_H
-
-void log_progress(const char *filename, int xfered, int total);
-
-#endif /* _PM_DOWNLOADPROG_H */
-
-/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/log.c b/src/pacman/log.c
index e6298743..5a4fbf2e 100644
--- a/src/pacman/log.c
+++ b/src/pacman/log.c
@@ -47,58 +47,6 @@ void set_output_padding(int on)
needpad = on;
}
-/* Callback to handle notifications from the library
- */
-void cb_log(unsigned short level, char *msg)
-{
- char str[LOG_STR_LEN] = "";
-
- if(!strlen(msg)) {
- return;
- }
-
- switch(level) {
- case PM_LOG_DEBUG:
- sprintf(str, _("debug"));
- break;
- case PM_LOG_ERROR:
- sprintf(str, _("error"));
- break;
- case PM_LOG_WARNING:
- sprintf(str, _("warning"));
- break;
- case PM_LOG_FUNCTION:
- /* TODO we should increase the indent level when this occurs so we can see
- * program flow easier. It'll be fun
- */
- sprintf(str, _("function"));
- break;
- default:
- sprintf(str, "???");
- break;
- }
-
-#ifdef PACMAN_DEBUG
- /* If debug is on, we'll timestamp the output */
- if(alpm_option_get_logmask() & PM_LOG_DEBUG) {
- time_t t;
- struct tm *tmp;
- char timestr[10] = {0};
-
- t = time(NULL);
- tmp = localtime(&t);
- strftime(timestr, 9, "%H:%M:%S", tmp);
- timestr[8] = '\0';
-
- MSG(NL, "[%s] %s: %s", timestr, str, msg);
- } else {
- MSG(NL, "%s: %s", str, msg);
- }
-#else
- MSG(NL, "%s: %s", str, msg);
-#endif
-}
-
/* Wrapper to fprintf() that allows to choose if we want the output
* to be appended on the current line, or written to a new one
*/
@@ -146,25 +94,8 @@ void pm_fprintf(FILE *file, unsigned short line, char *fmt, ...)
neednl = (str[strlen(str)-1] == '\n') ? 0 : 1;
}
-/* Check verbosity option and, if set, print the
- * string to stdout
- */
-void vprint(char *fmt, ...)
-{
- va_list args;
-
- char str[LOG_STR_LEN];
-
- if(config->verbose > 0) {
- va_start(args, fmt);
- vsnprintf(str, LOG_STR_LEN, fmt, args);
- va_end(args);
- pm_fprintf(stdout, NL, str);
- }
-}
-
-/* presents a prompt and gets a Y/N answer
- */
+/* presents a prompt and gets a Y/N answer */
+/* TODO there must be a better way */
int yesno(char *fmt, ...)
{
char str[LOG_STR_LEN];
diff --git a/src/pacman/log.h b/src/pacman/log.h
index 1205e8e6..f9aea4de 100644
--- a/src/pacman/log.h
+++ b/src/pacman/log.h
@@ -42,11 +42,7 @@ enum {
void set_output_padding(int on);
-/* callback to handle messages/notifications from pacman library */
-void cb_log(unsigned short level, char *msg);
-
void pm_fprintf(FILE *file, unsigned short line, char *fmt, ...);
-void vprint(char *fmt, ...);
int yesno(char *fmt, ...);
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 9eef9dde..1be43ee8 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -44,7 +44,7 @@
#include "pacman.h"
#include "util.h"
#include "log.h"
-#include "downloadprog.h"
+#include "callback.h"
#include "conf.h"
#include "package.h"
@@ -517,7 +517,7 @@ int main(int argc, char *argv[])
}
/* set library parameters */
- alpm_option_set_dlcb(log_progress);
+ alpm_option_set_dlcb(cb_dl_progress);
if(config->verbose > 0) {
printf("Root : %s\n", alpm_option_get_root());
diff --git a/src/pacman/remove.c b/src/pacman/remove.c
index 941eab52..d3c0648c 100644
--- a/src/pacman/remove.c
+++ b/src/pacman/remove.c
@@ -32,7 +32,7 @@
#include "pacman.h"
#include "util.h"
#include "log.h"
-#include "trans.h"
+#include "callback.h"
#include "conf.h"
extern config_t *config;
diff --git a/src/pacman/sync.c b/src/pacman/sync.c
index 5b20147c..b963eb84 100644
--- a/src/pacman/sync.c
+++ b/src/pacman/sync.c
@@ -39,7 +39,7 @@
#include "util.h"
#include "log.h"
#include "package.h"
-#include "trans.h"
+#include "callback.h"
#include "conf.h"
extern config_t *config;
diff --git a/src/pacman/util.c b/src/pacman/util.c
index a7259e25..376582a7 100644
--- a/src/pacman/util.c
+++ b/src/pacman/util.c
@@ -369,71 +369,4 @@ float get_update_timediff(int first_call)
return(retval);
}
-/* refactored from cb_trans_progress */
-void fill_progress(const int percent, const int proglen)
-{
- const unsigned short chomp = alpm_option_get_chomp();
- const unsigned int hashlen = proglen - 8;
- 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(percent == 0) {
- lasthash = 0;
- mouth = 0;
- }
-
- /* magic numbers, how I loathe thee */
- if(proglen > 8) {
- printf(" [");
- for(i = hashlen; i > 1; --i) {
- /* if special progress bar enabled */
- if(chomp) {
- if(i > hashlen - hash) {
- printf("-");
- } else if(i == hashlen - hash) {
- if(lasthash == hash) {
- if(mouth) {
- printf("\033[1;33mC\033[m");
- } else {
- printf("\033[1;33mc\033[m");
- }
- } else {
- lasthash = hash;
- mouth = mouth == 1 ? 0 : 1;
- if(mouth) {
- printf("\033[1;33mC\033[m");
- } else {
- printf("\033[1;33mc\033[m");
- }
- }
- } else if(i%3 == 0) {
- printf("\033[0;37mo\033[m");
- } else {
- printf("\033[0;37m \033[m");
- }
- } /* else regular progress bar */
- else if(i > hashlen - hash) {
- printf("#");
- } else {
- printf("-");
- }
- }
- printf("]");
- }
- /* print percent after progress bar */
- if(proglen > 5) {
- printf(" %3d%%", percent);
- }
-
- if(percent == 100) {
- printf("\n");
- } else {
- printf("\r");
- }
- fflush(stdout);
-}
-
/* vim: set ts=2 sw=2 noet: */
diff --git a/src/pacman/util.h b/src/pacman/util.h
index 85ce6ede..e43208aa 100644
--- a/src/pacman/util.h
+++ b/src/pacman/util.h
@@ -43,7 +43,6 @@ int reg_match(char *string, char *pattern);
void list_display(const char *title, alpm_list_t *list);
void display_targets(alpm_list_t *syncpkgs);
float get_update_timediff(int first_call);
-void fill_progress(const int percent, const int proglen);
#endif /* _PM_UTIL_H */