wget: if stderr is not a tty, progress bar shouldn't use tty-tricks
authorDenys Vlasenko <vda.linux@googlemail.com>
Fri, 23 Oct 2015 00:01:38 +0000 (02:01 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 23 Oct 2015 00:01:38 +0000 (02:01 +0200)
function                                             old     new   delta
bb_progress_update                                   706     768     +62

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/progress.c

index 6154dca1784e84d3a8dc6c311ac216174128784c..3c2f01667a273baecb54505e8252192dd8550b36 100644 (file)
@@ -73,7 +73,7 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
 {
        uoff_t beg_and_transferred;
        unsigned since_last_update, elapsed;
-       int barlength;
+       int notty;
        int kiloscale;
 
        //transferred = 1234; /* use for stall detection testing */
@@ -130,14 +130,17 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
                }
        }
 
+       notty = !isatty(STDERR_FILENO);
+
        if (ENABLE_UNICODE_SUPPORT)
-               fprintf(stderr, "\r%s", p->curfile);
+               fprintf(stderr, "\r%s" + notty, p->curfile);
        else
-               fprintf(stderr, "\r%-20.20s", p->curfile);
+               fprintf(stderr, "\r%-20.20s" + notty, p->curfile);
 
        beg_and_transferred = beg_size + transferred;
 
        if (totalsize != 0) {
+               int barlength;
                unsigned ratio = 100 * beg_and_transferred / totalsize;
                fprintf(stderr, "%4u%%", ratio);
 
@@ -197,4 +200,6 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
                hours = eta / 3600;
                fprintf(stderr, "%3u:%02u:%02u ETA", hours, secs / 60, secs % 60);
        }
+       if (notty)
+               fputc('\n', stderr);
 }