[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-wget] Fwd: [PATCH] [wget-bug #33210], Add an option to output
From: |
Giuseppe Scrivano |
Subject: |
Re: [Bug-wget] Fwd: [PATCH] [wget-bug #33210], Add an option to output bandwidth in bits |
Date: |
Sat, 28 Jan 2012 14:14:10 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) |
hi,
I will take a deeper look after your copyright assignment process is
completed. As a suggestion for the futur: it will be better if you ask
on the mailing list before start working on a task next time (unless it
is a bug). Not all new feature requests can be accepted into wget.
Cheers,
Giuseppe
Sasikanth <address@hidden> writes:
> Modified the calc_rate function to calculate bandwidth in powers of ten
> (SI-prefix format)
> for --bits option.
>
> Please review the changes
>
> Thanks
> Sasi
>
> ---------- Forwarded message ----------
> From: Sasikanth <address@hidden>
> Date: Wed, Jan 18, 2012 at 5:43 PM
> Subject: Re: [Bug-wget] [PATCH] [wget-bug #33210], Add an option to output
> bandwidth in bits
> To: Hrvoje Niksic <address@hidden>
> Cc: address@hidden
>
> On Sun, Jan 15, 2012 at 8:51 PM, Hrvoje Niksic <address@hidden> wrote:
>
> Sasikanth <address@hidden> writes:
>
> > No one asked. i had just thought it will be good to display all the
> output
> > in either bits or bytes to avoid confusion to the user (I had
> > confused).
>
> I understand that, but I have never seen a downloading agent output data
> length in bits, so displaying the data in bits would likely cause much
> more confusion and/or be less useful. (Data throughput in bits, on the
> other hand, is quite common.) With the original implementation of
> --bits I expect that someone would soon ask for
> --bits-for-bandwidth-only.
>
> > Anyhow thanks I will modify the patch.
>
> Thanks.
>
> Note that the patch has another problem: while Wget's "K", "M", and "G"
> refer to (what is now known as) kibibytes, mebibytes, and gibibytes,
> bandwidth is measured in kilobits, megabits, and gigabits per second.
> Bandwidth units all refer to powers of ten, not to powers of two, so it
> is incorrect for calc_rate to simply increase the byte multipliers by 8.
>
> Hrvoje
>
>
> Modified the calc_rate function to calculate bandwidth in powers of ten
> (SI-prefix format)
> for --bits option.
>
> Please review the changes
>
> Thanks
> Sasi
>
>
> diff -ur orig/wget-1.13.4/src/init.c wget-1.13.4/src/init.c
> --- orig/wget-1.13.4/src/init.c 2011-08-19 15:36:20.000000000 +0530
> +++ wget-1.13.4/src/init.c 2012-01-18 14:42:56.240973950 +0530
> @@ -126,6 +126,7 @@
> { "backups", &opt.backups, cmd_number },
> { "base", &opt.base_href, cmd_string },
> { "bindaddress", &opt.bind_address, cmd_string },
> + { "bits", &opt.bits_fmt, cmd_boolean},
> #ifdef HAVE_SSL
> { "cacertificate", &opt.ca_cert, cmd_file },
> #endif
> diff -ur orig/wget-1.13.4/src/main.c wget-1.13.4/src/main.c
> --- orig/wget-1.13.4/src/main.c 2011-09-06 19:20:11.000000000 +0530
> +++ wget-1.13.4/src/main.c 2012-01-18 14:42:56.241973599 +0530
> @@ -166,6 +166,7 @@
> { "backups", 0, OPT_BOOLEAN, "backups", -1 },
> { "base", 'B', OPT_VALUE, "base", -1 },
> { "bind-address", 0, OPT_VALUE, "bindaddress", -1 },
> + { "bits", 0, OPT_BOOLEAN, "bits", -1 },
> { IF_SSL ("ca-certificate"), 0, OPT_VALUE, "cacertificate", -1 },
> { IF_SSL ("ca-directory"), 0, OPT_VALUE, "cadirectory", -1 },
> { "cache", 0, OPT_BOOLEAN, "cache", -1 },
> @@ -704,6 +705,11 @@
> -np, --no-parent don't ascend to the parent directory.\n"),
> "\n",
>
> + N_("\
> +Output format:\n"),
> + N_("\
> + --bits Output bandwidth in bits.\n"),
> + "\n",
> N_("Mail bug reports and suggestions to <address@hidden>.\n")
> };
>
> diff -ur orig/wget-1.13.4/src/options.h wget-1.13.4/src/options.h
> --- orig/wget-1.13.4/src/options.h 2011-08-06 15:54:32.000000000 +0530
> +++ wget-1.13.4/src/options.h 2012-01-18 14:42:56.247982676 +0530
> @@ -255,6 +255,7 @@
>
> bool show_all_dns_entries; /* Show all the DNS entries when resolving a
> name. */
> + bool bits_fmt; /*Output bandwidth in bits format*/
> };
>
> extern struct options opt;
> diff -ur orig/wget-1.13.4/src/progress.c wget-1.13.4/src/progress.c
> --- orig/wget-1.13.4/src/progress.c 2011-01-01 17:42:35.000000000 +0530
> +++ wget-1.13.4/src/progress.c 2012-01-18 14:42:56.249098685 +0530
> @@ -861,7 +861,7 @@
> struct bar_progress_hist *hist = &bp->hist;
>
> /* The progress bar should look like this:
> - xx% [=======> ] nn,nnn 12.34K/s eta 36m 51s
> + xx% [=======> ] nn,nnn 12.34KB/s eta 36m 51s
>
> Calculate the geometry. The idea is to assign as much room as
> possible to the progress bar. The other idea is to never let
> @@ -873,7 +873,7 @@
> "xx% " or "100%" - percentage - 4 chars
> "[]" - progress bar decorations - 2 chars
> " nnn,nnn,nnn" - downloaded bytes - 12 chars or very rarely
> more
> - " 12.5K/s" - download rate - 8 chars
> + " 12.5KB/s" - download rate - 9 chars
> " eta 36m 51s" - ETA - 14 chars
>
> "=====>..." - progress bar - the rest
> @@ -977,10 +977,11 @@
> *p++ = ' ';
> }
>
> - /* " 12.52K/s" */
> + /* " 12.52Kb/s or 12.52KB/s" */
> if (hist->total_time > 0 && hist->total_bytes)
> {
> - static const char *short_units[] = { "B/s", "K/s", "M/s", "G/s" };
> + static const char *short_units[] = { "B/s", "KB/s", "MB/s", "GB/s" };
> + static const char *short_units_bits[] = { "b/s", "Kb/s", "Mb/s",
> "Gb/s" };
> int units = 0;
> /* Calculate the download speed using the history ring and
> recent data that hasn't made it to the ring yet. */
> @@ -988,7 +989,7 @@
> double dltime = hist->total_time + (dl_total_time - bp->recent_start);
> double dlspeed = calc_rate (dlquant, dltime, &units);
> sprintf (p, " %4.*f%s", dlspeed >= 99.95 ? 0 : dlspeed >= 9.995 ? 1 :
> 2,
> - dlspeed, short_units[units]);
> + dlspeed,
> !opt.bits_fmt?short_units[units]:short_units_bits[units]);
> move_to_end (p);
> }
> else
> diff -ur orig/wget-1.13.4/src/retr.c wget-1.13.4/src/retr.c
> --- orig/wget-1.13.4/src/retr.c 2011-08-30 19:17:33.000000000 +0530
> +++ wget-1.13.4/src/retr.c 2012-01-18 17:27:18.383987006 +0530
> @@ -578,6 +578,7 @@
> {
> static char res[20];
> static const char *rate_names[] = {"B/s", "KB/s", "MB/s", "GB/s" };
> + static const char *rate_names_bits[] = {"b/s", "Kb/s", "Mb/s", "Gb/s" };
> int units;
>
> double dlrate = calc_rate (bytes, secs, &units);
> @@ -585,7 +586,7 @@
> e.g. "1022", "247", "12.5", "2.38". */
> sprintf (res, "%.*f %s",
> dlrate >= 99.95 ? 0 : dlrate >= 9.995 ? 1 : 2,
> - dlrate, rate_names[units]);
> + dlrate, !opt.bits_fmt? rate_names[units]: rate_names_bits[units]);
>
> return res;
> }
> @@ -602,6 +603,13 @@
> calc_rate (wgint bytes, double secs, int *units)
> {
> double dlrate;
> + double bibyte = 1000.0;
> +
> + if (!opt.bits_fmt)
> + {
> + bibyte = 1024.0;
> + }
> +
>
> assert (secs >= 0);
> assert (bytes >= 0);
> @@ -613,16 +621,17 @@
> 0 and the timer's resolution, assume half the resolution. */
> secs = ptimer_resolution () / 2.0;
>
> - dlrate = bytes / secs;
> - if (dlrate < 1024.0)
> + dlrate = convert_to_bits (bytes) / secs;
> + if (dlrate < bibyte)
> *units = 0;
> - else if (dlrate < 1024.0 * 1024.0)
> - *units = 1, dlrate /= 1024.0;
> - else if (dlrate < 1024.0 * 1024.0 * 1024.0)
> - *units = 2, dlrate /= (1024.0 * 1024.0);
> + else if (dlrate < (bibyte * bibyte))
> + *units = 1, dlrate /= bibyte;
> + else if (dlrate < (bibyte * bibyte * bibyte))
> + *units = 2, dlrate /= (bibyte * bibyte);
> +
> else
> /* Maybe someone will need this, one day. */
> - *units = 3, dlrate /= (1024.0 * 1024.0 * 1024.0);
> + *units = 3, dlrate /= (bibyte * bibyte * bibyte);
>
> return dlrate;
> }
> diff -ur orig/wget-1.13.4/src/utils.c wget-1.13.4/src/utils.c
> --- orig/wget-1.13.4/src/utils.c 2011-08-29 13:31:24.000000000 +0530
> +++ wget-1.13.4/src/utils.c 2012-01-18 14:42:56.253098685 +0530
> @@ -1826,6 +1826,17 @@
> ringpos = (ringpos + 1) % RING_SIZE;
> return buf;
> }
> +
> +/* Converts the byte to bits format if --bits option is enabled
> + */
> +wgint
> +convert_to_bits (wgint num)
> +{
> + if (opt.bits_fmt)
> + return num * 8;
> + return num;
> +}
> +
>
> /* Determine the width of the terminal we're running on. If that's
> not possible, return 0. */
- [Bug-wget] [PATCH] [wget-bug #33210], Add an option to output bandwidth in bits, Sasikanth, 2012/01/11
- [Bug-wget] Fwd: [PATCH] [wget-bug #33210], Add an option to output bandwidth in bits, Sasikanth, 2012/01/11
- Re: [Bug-wget] [PATCH] [wget-bug #33210], Add an option to output bandwidth in bits, Hrvoje Niksic, 2012/01/12
- Re: [Bug-wget] [PATCH] [wget-bug #33210], Add an option to output bandwidth in bits, Sasikanth, 2012/01/14
- Re: [Bug-wget] [PATCH] [wget-bug #33210], Add an option to output bandwidth in bits, Sasikanth, 2012/01/14
- Re: [Bug-wget] [PATCH] [wget-bug #33210], Add an option to output bandwidth in bits, Hrvoje Niksic, 2012/01/15
- Re: [Bug-wget] [PATCH] [wget-bug #33210], Add an option to output bandwidth in bits, Sasikanth, 2012/01/18
- [Bug-wget] Fwd: [PATCH] [wget-bug #33210], Add an option to output bandwidth in bits, Sasikanth, 2012/01/27
- Re: [Bug-wget] Fwd: [PATCH] [wget-bug #33210], Add an option to output bandwidth in bits,
Giuseppe Scrivano <=