curl: progress bar refresh, get width using ioctl()

Get screen width from the environment variable COLUMNS first, if set. If
not, use ioctl(). If nether works, assume 79.

Closes #2242

The "refresh" is for the -# output when no total transfer size is
known. It will now only use a single updated line even for this case:

The "-=O=-" ship moves when data is transferred. The four flying
"hashes" move (on a sine wave) on each refresh, independent of data.
This commit is contained in:
Daniel Stenberg 2018-01-16 11:46:03 +01:00
parent 9d82cde7b2
commit 993dd5651a
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
3 changed files with 95 additions and 21 deletions

View file

@ -7,7 +7,7 @@
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
* Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
@ -33,6 +33,9 @@ struct ProgressData {
int width;
FILE *out; /* where to write everything to */
curl_off_t initial_size;
unsigned int tick;
int bar;
int barmove;
};
void progressbarinit(struct ProgressData *bar,