Hello everyone. I see a problem with --noprogressbar output, but it seems to be 
dependent on server/network. Can anyone confirm with the following settings?

# append to pacman.conf
[mingw64]
Server = 
ftp://ftp.heanet.ie/mirrors/download.sourceforge.net/pub/sourceforge/m/ms/msys2/REPOS/MINGW/x86_64

$ pacman -Syy --noprogressbar

My output contains multiple "downloading" lines for this DB:

downloading mingw64.db...
downloading mingw64.db...
downloading mingw64.db...
downloading mingw64.db...
downloading mingw64.db...

It seems that the cause is libcurl calling the progress callback multiple times 
before the first bytes get downloaded, which then in turns `cb_dl_progress` 
multiple times with `file_xfered` = 0, which then prints the message each time.

I don't want to just complain, so I whipped up a quick patch. I can submit it 
properly if it gets an upvote.

diff --git a/src/pacman/callback.c b/src/pacman/callback.c
index 695e38d..3bc43b7 100644
--- a/src/pacman/callback.c
+++ b/src/pacman/callback.c
@@ -628,6 +628,7 @@ void cb_dl_progress(const char *filename, off_t 
file_xfered, off_t file_total)
        static double rate_last;
        static off_t xfered_last;
        static int64_t initial_time = 0;
+       static char *filename_last = NULL;
        int infolen;
        int filenamelen;
        char *fname, *p;
@@ -646,7 +647,11 @@ void cb_dl_progress(const char *filename, off_t 
file_xfered, off_t file_total)
        const unsigned short cols = getcols();
 
        if(config->noprogressbar || cols == 0 || file_total == -1) {
-               if(file_xfered == 0) {
+               if(filename_last != NULL || strcmp(filename_last, filename) != 
0) {
+                       if(filename_last != NULL) {
+                               free(filename_last);
+                       }
+                       filename_last = strdup(filename);
                        printf(_("downloading %s...\n"), filename);
                        fflush(stdout);
                }

-- 
David Macek

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to