The attached patch will cause ws_percenttitle() to do nothing if the relevant
variables have not been initialized. This is what the code did before I changed
it. I changed it because it seemed that the code was making allowances for
things that should not happen and I thought an assert would be more appropriate.
Though, I guess doing thing this way will make the code more robust against
future changes (and thus make the Windows port less of a maintenance burden).
The patch also clamps the percentage value instead of just returning when it's
out-of-range. This is so it will update the title to display the percentage as
100 in the arcane case when the previous percentage was < 100 and the new
percentage is > 100. It also includes Gisle Vanem's fix for retr.c.
[I know my assignment is pending but hopefully this patch is small enough to
squeak-by until it's been processed.]
2004-03-02 David Fritz <[EMAIL PROTECTED]>
* retr.c (fd_read_body): Under Windows, only call
ws_percenttitle() if verbose. Fix by Gisle Vanem.
* mswindows.c (ws_percenttitle): Guard against future changes by
doing nothing if the proper variables have not been initialized.
Clamp percentage value.
Index: src/mswindows.c
===
RCS file: /pack/anoncvs/wget/src/mswindows.c,v
retrieving revision 1.27
diff -u -r1.27 mswindows.c
--- src/mswindows.c 2004/02/26 14:34:17 1.27
+++ src/mswindows.c 2004/03/03 03:21:27
@@ -180,19 +180,24 @@
void
ws_percenttitle (double percentage_float)
{
- int percentage = (int) percentage_float;
+ int percentage;
- /* Only update the title when the percentage has changed. */
- if (percentage == old_percentage)
+ if (!title_buf || !curr_url)
return;
- old_percentage = percentage;
+ percentage = (int) percentage_float;
+ /* Clamp percentage value. */
+ if (percentage < 0)
+percentage = 0;
if (percentage > 100)
+percentage = 100;
+
+ /* Only update the title when the percentage has changed. */
+ if (percentage == old_percentage)
return;
- assert (title_buf != NULL);
- assert (curr_url != NULL);
+ old_percentage = percentage;
sprintf (title_buf, "Wget [%d%%] %s", percentage, curr_url);
SetConsoleTitle (title_buf);
Index: src/retr.c
===
RCS file: /pack/anoncvs/wget/src/retr.c,v
retrieving revision 1.84
diff -u -r1.84 retr.c
--- src/retr.c 2003/12/14 13:35:27 1.84
+++ src/retr.c 2004/03/03 03:21:31
@@ -311,7 +311,7 @@
if (progress)
progress_update (progress, ret, wtimer_read (timer));
#ifdef WINDOWS
- if (toread > 0)
+ if (opt.verbose && toread > 0)
ws_percenttitle (100.0 *
(startpos + sum_read) / (startpos + toread));
#endif