The progress bar already did this. But the init event and up to date message allways printed the full file name, which doesn't match the progress bar. --- src/pacman/callback.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/pacman/callback.c b/src/pacman/callback.c index 9cc7541d..6ed7557a 100644 --- a/src/pacman/callback.c +++ b/src/pacman/callback.c @@ -749,18 +749,34 @@ static void init_total_progressbar(void) totalbar->rate = 0.0; } +static char *clean_filename(const char *filename) +{ + int len = strlen(filename); + char *p; + char *fname = malloc(len + 1); + memcpy(fname, filename, len + 1); + /* strip package or DB extension for cleaner look */ + if((p = strstr(fname, ".pkg")) || (p = strstr(fname, ".db")) || (p = strstr(fname, ".files"))) { + len = p - fname; + fname[len] = '\0'; + } + + return fname; +} + static void draw_pacman_progress_bar(struct pacman_progress_bar *bar) { int infolen; int filenamelen; - char *fname, *p; + char *fname; /* used for wide character width determination and printing */ - int len, wclen, wcwid, padwid; + int wclen, wcwid, padwid; wchar_t *wcfname; unsigned int eta_h = 0, eta_m = 0, eta_s = bar->eta; double rate_human, xfered_human; const char *rate_label, *xfered_label; int file_percent = 0; + int len = strlen(bar->filename); const unsigned short cols = getcols(); @@ -776,14 +792,8 @@ static void draw_pacman_progress_bar(struct pacman_progress_bar *bar) eta_m = eta_s / 60; eta_s -= eta_m * 60; - len = strlen(bar->filename); - fname = malloc(len + 1); - memcpy(fname, bar->filename, len + 1); - /* strip package or DB extension for cleaner look */ - if((p = strstr(fname, ".pkg")) || (p = strstr(fname, ".db")) || (p = strstr(fname, ".files"))) { - len = p - fname; - fname[len] = '\0'; - } + fname = clean_filename(bar->filename); + infolen = cols * 6 / 10; if(infolen < 50) { @@ -859,7 +869,9 @@ static void dload_init_event(const char *filename, alpm_download_event_init_t *d (void)data; if(!dload_progressbar_enabled()) { - printf(_(" %s downloading...\n"), filename); + char *cleaned_filename = clean_filename(filename); + printf(_(" %s downloading...\n"), cleaned_filename); + free(cleaned_filename); return; } @@ -992,7 +1004,9 @@ static void dload_complete_event(const char *filename, alpm_download_event_compl if(data->result == 1) { console_cursor_goto_bar(index); - printf(_(" %s is up to date"), bar->filename); + char *cleaned_filename = clean_filename(filename); + printf(_(" %s is up to date"), cleaned_filename); + free(cleaned_filename); /* The line contains text from previous status. Erase these leftovers. */ console_erase_line(); } else if(data->result == 0) { -- 2.30.0