diff options
-rw-r--r-- | src/pacman/conf.c | 3 | ||||
-rw-r--r-- | src/pacman/download.c | 36 | ||||
-rw-r--r-- | src/pacman/pacman.c | 1 |
3 files changed, 38 insertions, 2 deletions
diff --git a/src/pacman/conf.c b/src/pacman/conf.c index 3fc5e158..7bf02d03 100644 --- a/src/pacman/conf.c +++ b/src/pacman/conf.c @@ -39,6 +39,7 @@ extern list_t *pmo_holdpkg; extern char *pmo_proxyhost; extern unsigned short pmo_proxyport; extern char *pmo_xfercommand; +extern unsigned short pmo_chomp; extern unsigned short pmo_nopassiveftp; extern list_t *pmc_syncs; @@ -126,6 +127,8 @@ int parseconfig(char *file) return(1); } vprint("config: usesyslog\n"); + } else if(!strcmp(key, "ILOVECANDY")) { + pmo_chomp = 1; } else { ERR(NL, "config: line %d: syntax error\n", linenum); return(1); diff --git a/src/pacman/download.c b/src/pacman/download.c index 7727473b..efd40fbf 100644 --- a/src/pacman/download.c +++ b/src/pacman/download.c @@ -50,6 +50,7 @@ extern char *pmo_xfercommand; extern unsigned short pmo_proxyport; extern unsigned short pmo_nopassiveftp; +extern unsigned short pmo_chomp; extern int maxcols; @@ -60,6 +61,11 @@ static int log_progress(netbuf *ctl, int xfered, void *arg) int i, cur; struct timeval t1; float timediff; + /* a little hard to conceal easter eggs in open-source software, but + * they're still fun. ;) + */ + static unsigned short mouth; + static unsigned int lastcur = 0; gettimeofday(&t1, NULL); if(xfered+offset == fsz) { @@ -92,13 +98,39 @@ static int log_progress(netbuf *ctl, int xfered, void *arg) printf(" %s [", sync_fnm); cur = (int)((maxcols-64)*pct/100); for(i = 0; i < maxcols-64; i++) { - (i < cur) ? printf("#") : printf(" "); + if(pmo_chomp) { + if(i < cur) { + printf("-"); + } else { + if(i == cur) { + if(lastcur == cur) { + if(mouth) { + printf("\033[1;33mC\033[m"); + } else { + printf("\033[1;33mc\033[m"); + } + } else { + mouth = mouth == 1 ? 0 : 1; + if(mouth) { + printf("\033[1;33mC\033[m"); + } else { + printf("\033[1;33mc\033[m"); + } + } + } else { + printf("\033[0;37m*\033[m"); + } + } + } else { + (i < cur) ? printf("#") : printf(" "); + } } if(rate > 1000) { printf("] %3d%% %6dK %6.0fK/s %02d:%02d:%02d\r", pct, ((xfered+offset) / 1024), rate, eta_h, eta_m, eta_s); } else { printf("] %3d%% %6dK %6.1fK/s %02d:%02d:%02d\r", pct, ((xfered+offset) / 1024), rate, eta_h, eta_m, eta_s); } + lastcur = cur; fflush(stdout); return(1); } @@ -202,7 +234,7 @@ int downloadfiles_forreal(list_t *servers, const char *localpath, char *host; unsigned port; host = (pmo_proxyhost) ? pmo_proxyhost : server->server; - port = (pmo_proxyhost) ? pmo_proxyport : 80; + port = (pmo_proxyport) ? pmo_proxyport : 80; if(strchr(host, ':')) { vprint("connecting to %s\n", host); } else { diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index 0cdf2df1..51f1daeb 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -73,6 +73,7 @@ list_t *pmo_holdpkg = NULL; char *pmo_proxyhost = NULL; unsigned short pmo_proxyport = 0; char *pmo_xfercommand = NULL; +unsigned short pmo_chomp = 0; unsigned short pmo_nopassiveftp = 0; PM_DB *db_local; |