mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
Fix too-many-spaces problem for multibyte progress bars, when ETA string not displayed.
This commit is contained in:
parent
202caab4c2
commit
16b833c16d
@ -1,3 +1,9 @@
|
||||
2008-04-30 Micah Cowan <micah@cowan.name>
|
||||
|
||||
* progress.c (create_image): Fix glitch where too many spaces are
|
||||
printed on lines that don't display the ETA, in multibyte
|
||||
locales.
|
||||
|
||||
2008-04-27 Rabin Vincent <rabin@rab.in>
|
||||
|
||||
* http.c (http_loop): Fix return for the case where we don't
|
||||
|
@ -797,15 +797,14 @@ count_cols (const char *mbs)
|
||||
# define count_cols(mbs) ((int)(strlen(mbs)))
|
||||
#endif
|
||||
|
||||
/* Translation note: "ETA" is English-centric, but this must
|
||||
be short, ideally 3 chars. Abbreviate if necessary. */
|
||||
static const char eta_str[] = N_(" eta %s");
|
||||
static const char *eta_trans;
|
||||
static int bytes_cols_diff;
|
||||
|
||||
const char *
|
||||
get_eta (void)
|
||||
get_eta (int *bcd)
|
||||
{
|
||||
/* Translation note: "ETA" is English-centric, but this must
|
||||
be short, ideally 3 chars. Abbreviate if necessary. */
|
||||
static const char eta_str[] = N_(" eta %s");
|
||||
static const char *eta_trans;
|
||||
static int bytes_cols_diff;
|
||||
if (eta_trans == NULL)
|
||||
{
|
||||
int nbytes;
|
||||
@ -829,6 +828,9 @@ get_eta (void)
|
||||
bytes_cols_diff = nbytes - ncols;
|
||||
}
|
||||
|
||||
if (bcd != NULL)
|
||||
*bcd = bytes_cols_diff;
|
||||
|
||||
return eta_trans;
|
||||
}
|
||||
|
||||
@ -881,6 +883,10 @@ create_image (struct bar_progress *bp, double dl_total_time, bool done)
|
||||
int dlbytes_size = 1 + MAX (size_grouped_len, 11);
|
||||
int progress_size = bp->width - (4 + 2 + dlbytes_size + 8 + 14);
|
||||
|
||||
/* The difference between the number of bytes used,
|
||||
and the number of columns used. */
|
||||
int bytes_cols_diff = 0;
|
||||
|
||||
if (progress_size < 5)
|
||||
progress_size = 0;
|
||||
|
||||
@ -1023,7 +1029,8 @@ create_image (struct bar_progress *bp, double dl_total_time, bool done)
|
||||
bp->last_eta_time = dl_total_time;
|
||||
}
|
||||
|
||||
sprintf (p, get_eta(), eta_to_human_short (eta, false));
|
||||
sprintf (p, get_eta(&bytes_cols_diff),
|
||||
eta_to_human_short (eta, false));
|
||||
move_to_end (p);
|
||||
}
|
||||
else if (bp->total_length > 0)
|
||||
@ -1035,11 +1042,16 @@ create_image (struct bar_progress *bp, double dl_total_time, bool done)
|
||||
else
|
||||
{
|
||||
/* When the download is done, print the elapsed time. */
|
||||
int nbytes;
|
||||
int ncols;
|
||||
|
||||
/* Note to translators: this should not take up more room than
|
||||
available here. Abbreviate if necessary. */
|
||||
strcpy (p, _(" in "));
|
||||
move_to_end (p); /* not p+=6, think translations! */
|
||||
nbytes = strlen (p);
|
||||
ncols = count_cols (p);
|
||||
bytes_cols_diff = nbytes - ncols;
|
||||
p += nbytes;
|
||||
if (dl_total_time >= 10)
|
||||
strcpy (p, eta_to_human_short ((int) (dl_total_time + 0.5), false));
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user