I addressed esthetic changes in the patch.
please find the modified patch attached.

Thanks
Sasi

On Wed, Jan 11, 2012 at 8:06 PM, Giuseppe Scrivano <[email protected]>wrote:

> Thanks for the patch, except some minor esthetic changes, like an empty
> space between the function name and '(', that I can fix before apply it,
> the patch seems ok.
>
> Before I can apply it though, you need to get copyright assignments with
> the FSF.  I am going to send more information in private to you.
>
> Cheers,
> Giuseppe
>
>
>
> Sasikanth <[email protected]> writes:
>
> > Sorry guys In my previous mail I attached  .patch extension file instead
> of
> > .txt extension.
> > Now correctly attached
> >
> > Thanks
> > Sasi
> >
> > ---------- Forwarded message ----------
> > From: Sasikanth <[email protected]>
> > Date: Wed, Jan 11, 2012 at 3:18 PM
> > Subject: [PATCH] [wget-bug #33210], Add an option to output bandwidth in
> > bits
> > To: [email protected]
> >
> >
> > Hi all,
> >
> >     I added a new option --bits as requested in
> > https://savannah.gnu.org/bugs/?33210.
> >    This patch will display all data length in bits format for --bits
> option.
> >     I had verified it with http and ftp. Please let me know If I missed
> out
> > anything.
> >
> >    Attachments: patch and change log entry file
> >
> > Thanks
> > Sasi
> >
> > diff -ru orig/wget-1.13.4/src/ftp.c wget-1.13.4/src/ftp.c
> > --- orig/wget-1.13.4/src/ftp.c        2012-01-09 14:06:31.273731044 +0530
> > +++ wget-1.13.4/src/ftp.c     2012-01-11 14:05:33.793990983 +0530
> > @@ -217,18 +217,18 @@
> >  static void
> >  print_length (wgint size, wgint start, bool authoritative)
> >  {
> > -  logprintf (LOG_VERBOSE, _("Length: %s"), number_to_static_string
> (size));
> > +  logprintf (LOG_VERBOSE, _("Length: %s"), number_to_static_string
> (convert_to_bits(size)));
> >    if (size >= 1024)
> > -    logprintf (LOG_VERBOSE, " (%s)", human_readable (size));
> > +    logprintf (LOG_VERBOSE, " (%s)", human_readable
> (convert_to_bits(size)));
> >    if (start > 0)
> >      {
> >        if (size - start >= 1024)
> >          logprintf (LOG_VERBOSE, _(", %s (%s) remaining"),
> > -                   number_to_static_string (size - start),
> > -                   human_readable (size - start));
> > +                   number_to_static_string (convert_to_bits(size -
> start)),
> > +                   human_readable (convert_to_bits(size - start)));
> >        else
> >          logprintf (LOG_VERBOSE, _(", %s remaining"),
> > -                   number_to_static_string (size - start));
> > +                   number_to_static_string (convert_to_bits(size -
> start)));
> >      }
> >    logputs (LOG_VERBOSE, !authoritative ? _(" (unauthoritative)\n") :
> "\n");
> >  }
> > @@ -1564,7 +1564,7 @@
> >                       : _("%s (%s) - %s saved [%s]\n\n"),
> >                       tms, tmrate,
> >                       write_to_stdout ? "" : quote (locf),
> > -                     number_to_static_string (qtyread));
> > +                     number_to_static_string
> (convert_to_bits(qtyread)));
> >          }
> >        if (!opt.verbose && !opt.quiet)
> >          {
> > @@ -1573,7 +1573,7 @@
> >               time. */
> >            char *hurl = url_string (u, URL_AUTH_HIDE_PASSWD);
> >            logprintf (LOG_NONVERBOSE, "%s URL: %s [%s] -> \"%s\" [%d]\n",
> > -                     tms, hurl, number_to_static_string (qtyread),
> locf, count);
> > +                     tms, hurl, number_to_static_string
> (convert_to_bits(qtyread)), locf, count);
> >            xfree (hurl);
> >          }
> >
> > @@ -1792,7 +1792,7 @@
> >                    /* Sizes do not match */
> >                    logprintf (LOG_VERBOSE, _("\
> >  The sizes do not match (local %s) -- retrieving.\n\n"),
> > -                             number_to_static_string (local_size));
> > +                             number_to_static_string
> (convert_to_bits(local_size)));
> >                  }
> >              }
> >          }       /* opt.timestamping && f->type == FT_PLAINFILE */
> > @@ -2206,7 +2206,7 @@
> >                          sz = -1;
> >                        logprintf (LOG_NOTQUIET,
> >                                   _("Wrote HTML-ized index to %s
> [%s].\n"),
> > -                                 quote (filename),
> number_to_static_string (sz));
> > +                                 quote (filename),
> number_to_static_string (convert_to_bits(sz)));
> >                      }
> >                    else
> >                      logprintf (LOG_NOTQUIET,
> > diff -ru orig/wget-1.13.4/src/http.c wget-1.13.4/src/http.c
> > --- orig/wget-1.13.4/src/http.c       2012-01-09 14:06:31.274730346 +0530
> > +++ wget-1.13.4/src/http.c    2012-01-11 14:24:02.721099726 +0530
> > @@ -2423,19 +2423,19 @@
> >            logputs (LOG_VERBOSE, _("Length: "));
> >            if (contlen != -1)
> >              {
> > -              logputs (LOG_VERBOSE, number_to_static_string (contlen +
> contrange));
> > +              logputs (LOG_VERBOSE, number_to_static_string
> (convert_to_bits (contlen) + contrange));
> >                if (contlen + contrange >= 1024)
> >                  logprintf (LOG_VERBOSE, " (%s)",
> > -                           human_readable (contlen + contrange));
> > +                           human_readable (convert_to_bits(contlen) +
> contrange));
> >                if (contrange)
> >                  {
> >                    if (contlen >= 1024)
> >                      logprintf (LOG_VERBOSE, _(", %s (%s) remaining"),
> > -                               number_to_static_string (contlen),
> > -                               human_readable (contlen));
> > +                               number_to_static_string
> (convert_to_bits(contlen)),
> > +                               human_readable
> (convert_to_bits(contlen)));
> >                    else
> >                      logprintf (LOG_VERBOSE, _(", %s remaining"),
> > -                               number_to_static_string (contlen));
> > +                               number_to_static_string
> (convert_to_bits(contlen)));
> >                  }
> >              }
> >            else
> > @@ -2625,6 +2625,7 @@
> >    bool send_head_first = true;
> >    char *file_name;
> >    bool force_full_retrieve = false;
> > +  char *out_data_fmt = opt.bits_fmt? "bits": "bytes";
> >
> >    /* Assert that no value for *LOCAL_FILE was passed. */
> >    assert (local_file == NULL || *local_file == NULL);
> > @@ -3038,13 +3039,13 @@
> >                           : _("%s (%s) - %s saved [%s/%s]\n\n"),
> >                           tms, tmrate,
> >                           write_to_stdout ? "" : quote
> (hstat.local_file),
> > -                         number_to_static_string (hstat.len),
> > -                         number_to_static_string (hstat.contlen));
> > +                         number_to_static_string
> (convert_to_bits(hstat.len)),
> > +                         number_to_static_string
> (convert_to_bits(hstat.contlen)));
> >                logprintf (LOG_NONVERBOSE,
> >                           "%s URL:%s [%s/%s] -> \"%s\" [%d]\n",
> >                           tms, u->url,
> > -                         number_to_static_string (hstat.len),
> > -                         number_to_static_string (hstat.contlen),
> > +                         number_to_static_string
> (convert_to_bits(hstat.len)),
> > +                         number_to_static_string
> (convert_to_bits(hstat.contlen)),
> >                           hstat.local_file, count);
> >              }
> >            ++numurls;
> > @@ -3074,10 +3075,10 @@
> >                               : _("%s (%s) - %s saved [%s]\n\n"),
> >                               tms, tmrate,
> >                               write_to_stdout ? "" : quote
> (hstat.local_file),
> > -                             number_to_static_string (hstat.len));
> > +                             number_to_static_string
> (convert_to_bits(hstat.len)));
> >                    logprintf (LOG_NONVERBOSE,
> >                               "%s URL:%s [%s] -> \"%s\" [%d]\n",
> > -                             tms, u->url, number_to_static_string
> (hstat.len),
> > +                             tms, u->url, number_to_static_string
> (convert_to_bits(hstat.len)),
> >                               hstat.local_file, count);
> >                  }
> >                ++numurls;
> > @@ -3096,8 +3097,9 @@
> >                                                   connection too soon */
> >              {
> >                logprintf (LOG_VERBOSE,
> > -                         _("%s (%s) - Connection closed at byte %s. "),
> > -                         tms, tmrate, number_to_static_string
> (hstat.len));
> > +                         _("%s (%s) - Connection closed at %s %s. "),
> > +                         tms, tmrate, out_data_fmt,
> > +                         number_to_static_string
> (convert_to_bits(hstat.len)));
> >                printwhat (count, opt.ntry);
> >                continue;
> >              }
> > @@ -3119,8 +3121,8 @@
> >            if (hstat.contlen == -1)
> >              {
> >                logprintf (LOG_VERBOSE,
> > -                         _("%s (%s) - Read error at byte %s (%s)."),
> > -                         tms, tmrate, number_to_static_string
> (hstat.len),
> > +                         _("%s (%s) - Read error at %s %s (%s)."),
> > +                         tms, tmrate, out_data_fmt,
> number_to_static_string (convert_to_bits(hstat.len)),
> >                           hstat.rderrmsg);
> >                printwhat (count, opt.ntry);
> >                continue;
> > @@ -3129,9 +3131,9 @@
> >              {
> >                logprintf (LOG_VERBOSE,
> >                           _("%s (%s) - Read error at byte %s/%s (%s). "),
> > -                         tms, tmrate,
> > -                         number_to_static_string (hstat.len),
> > -                         number_to_static_string (hstat.contlen),
> > +                         tms, tmrate, out_data_fmt,
> > +                         number_to_static_string
> (convert_to_bits(hstat.len)),
> > +                         number_to_static_string
> (convert_to_bits(hstat.contlen)),
> >                           hstat.rderrmsg);
> >                printwhat (count, opt.ntry);
> >                continue;
> > diff -ru orig/wget-1.13.4/src/init.c wget-1.13.4/src/init.c
> > --- orig/wget-1.13.4/src/init.c       2012-01-09 14:06:31.273731044 +0530
> > +++ wget-1.13.4/src/init.c    2012-01-11 14:39:07.075984135 +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 -ru orig/wget-1.13.4/src/main.c wget-1.13.4/src/main.c
> > --- orig/wget-1.13.4/src/main.c       2012-01-09 14:06:31.272730625 +0530
> > +++ wget-1.13.4/src/main.c    2012-01-11 14:29:15.766987978 +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 },
> > @@ -703,7 +704,11 @@
> >      N_("\
> >    -np, --no-parent                 don't ascend to the parent
> directory.\n"),
> >      "\n",
> > -
> > +    N_("\
> > +Output format:\n"),
> > +    N_("\
> > +       --bits                      Output all data length in bits.\n"),
> > +    "\n",
> >      N_("Mail bug reports and suggestions to <[email protected]>.\n")
> >    };
> >
> > diff -ru orig/wget-1.13.4/src/options.h wget-1.13.4/src/options.h
> > --- orig/wget-1.13.4/src/options.h    2012-01-09 14:06:31.272730625 +0530
> > +++ wget-1.13.4/src/options.h 2012-01-11 14:28:41.687373786 +0530
> > @@ -255,6 +255,7 @@
> >
> >    bool show_all_dns_entries; /* Show all the DNS entries when resolving
> a
> >                                  name. */
> > +  bool bits_fmt;              /*Output in bits format*/
> >  };
> >
> >  extern struct options opt;
> > diff -ru orig/wget-1.13.4/src/retr.c wget-1.13.4/src/retr.c
> > --- orig/wget-1.13.4/src/retr.c       2012-01-09 14:06:31.274730346 +0530
> > +++ wget-1.13.4/src/retr.c    2012-01-11 13:36:26.138988119 +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,10 @@
> >  calc_rate (wgint bytes, double secs, int *units)
> >  {
> >    double dlrate;
> > +  double in_bits = 8.0;
> > +
> > +  if (!opt.bits_fmt)
> > +     in_bits = 1.0;
> >
> >    assert (secs >= 0);
> >    assert (bytes >= 0);
> > @@ -613,16 +618,16 @@
> >         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 < (1024.0 * in_bits))
> >      *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 < (1024.0 * 1024.0 * in_bits))
> > +    *units = 1, dlrate /= (1024.0 * in_bits);
> > +  else if (dlrate < (1024.0 * 1024.0 * 1024.0 * in_bits))
> > +    *units = 2, dlrate /= (1024.0 * 1024.0 * in_bits);
> >    else
> >      /* Maybe someone will need this, one day. */
> > -    *units = 3, dlrate /= (1024.0 * 1024.0 * 1024.0);
> > +    *units = 3, dlrate /= (1024.0 * 1024.0 * 1024.0 * in_bits);
> >
> >    return dlrate;
> >  }
> > diff -ru orig/wget-1.13.4/src/utils.c wget-1.13.4/src/utils.c
> > --- orig/wget-1.13.4/src/utils.c      2012-01-09 14:06:31.271732441 +0530
> > +++ wget-1.13.4/src/utils.c   2012-01-11 14:21:16.206991121 +0530
> > @@ -1608,8 +1608,8 @@
> >            double val = n / 1024.0;
> >            /* Print values smaller than 10 with one decimal digits, and
> >               others without any decimals.  */
> > -          snprintf (buf, sizeof (buf), "%.*f%c",
> > -                    val < 10 ? 1 : 0, val, powers[i]);
> > +          snprintf (buf, sizeof (buf), "%.*f%c%c",
> > +                    val < 10 ? 1 : 0, val, powers[i],
> opt.bits_fmt?'b':'B');
> >            return buf;
> >          }
> >        n /= 1024;
> > @@ -1826,6 +1826,15 @@
> >    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.  */
> >
> > 2012-01-11   Sasikantha babu   <[email protected]>
> >       * utils.c (human_readable): modified snprintf to print b(indicates
> >                bits) if --bits option enabled otherwise B (Bytes)
> >                (convert_to_bits): Added new function convert_to_bits to
> >                 convert bytes to bits
> >       * retr.c (calc_rate): Modified the function to handle --bits option
> >         and download rate calculated per bits per sec for --bits
> otherwise
> >         bytes.
> >               (retr_rate): Rates will display in bits per sec for --bits
> >       * options.h (struct opt): Added --bit option bool variable bits_fmt
> >       * main.c (print_help) : Added help for --bit
> >       * init.c: Defined command for --bit option
> >       * http.c (gethttp & http_loop): Handled --bits option while priting
> >       data length
> >       * ftp.c (print_length, ftp_retrieve_list & ftp_loop_internal):
> >       Handled  --bits option while priting data length
>
diff -ur orig/wget-1.13.4/src/ftp.c wget-1.13.4/src/ftp.c
--- orig/wget-1.13.4/src/ftp.c  2011-09-13 13:35:12.000000000 +0530
+++ wget-1.13.4/src/ftp.c       2012-01-11 22:39:47.527962001 +0530
@@ -217,18 +217,18 @@
 static void
 print_length (wgint size, wgint start, bool authoritative)
 {
-  logprintf (LOG_VERBOSE, _("Length: %s"), number_to_static_string (size));
+  logprintf (LOG_VERBOSE, _("Length: %s"), number_to_static_string 
(convert_to_bits (size)));
   if (size >= 1024)
-    logprintf (LOG_VERBOSE, " (%s)", human_readable (size));
+    logprintf (LOG_VERBOSE, " (%s)", human_readable (convert_to_bits (size)));
   if (start > 0)
     {
       if (size - start >= 1024)
         logprintf (LOG_VERBOSE, _(", %s (%s) remaining"),
-                   number_to_static_string (size - start),
-                   human_readable (size - start));
+                   number_to_static_string (convert_to_bits (size - start)),
+                   human_readable (convert_to_bits (size - start)));
       else
         logprintf (LOG_VERBOSE, _(", %s remaining"),
-                   number_to_static_string (size - start));
+                   number_to_static_string (convert_to_bits (size - start)));
     }
   logputs (LOG_VERBOSE, !authoritative ? _(" (unauthoritative)\n") : "\n");
 }
@@ -1564,7 +1564,7 @@
                      : _("%s (%s) - %s saved [%s]\n\n"),
                      tms, tmrate,
                      write_to_stdout ? "" : quote (locf),
-                     number_to_static_string (qtyread));
+                     number_to_static_string (convert_to_bits (qtyread)));
         }
       if (!opt.verbose && !opt.quiet)
         {
@@ -1573,7 +1573,7 @@
              time. */
           char *hurl = url_string (u, URL_AUTH_HIDE_PASSWD);
           logprintf (LOG_NONVERBOSE, "%s URL: %s [%s] -> \"%s\" [%d]\n",
-                     tms, hurl, number_to_static_string (qtyread), locf, 
count);
+                     tms, hurl, number_to_static_string (convert_to_bits 
(qtyread)), locf, count);
           xfree (hurl);
         }
 
@@ -1792,7 +1792,7 @@
                   /* Sizes do not match */
                   logprintf (LOG_VERBOSE, _("\
 The sizes do not match (local %s) -- retrieving.\n\n"),
-                             number_to_static_string (local_size));
+                             number_to_static_string (convert_to_bits 
(local_size)));
                 }
             }
         }       /* opt.timestamping && f->type == FT_PLAINFILE */
@@ -2206,7 +2206,7 @@
                         sz = -1;
                       logprintf (LOG_NOTQUIET,
                                  _("Wrote HTML-ized index to %s [%s].\n"),
-                                 quote (filename), number_to_static_string 
(sz));
+                                 quote (filename), number_to_static_string 
(convert_to_bits (sz)));
                     }
                   else
                     logprintf (LOG_NOTQUIET,
diff -ur orig/wget-1.13.4/src/http.c wget-1.13.4/src/http.c
--- orig/wget-1.13.4/src/http.c 2011-09-07 16:28:01.000000000 +0530
+++ wget-1.13.4/src/http.c      2012-01-11 22:40:22.039962001 +0530
@@ -2423,19 +2423,19 @@
           logputs (LOG_VERBOSE, _("Length: "));
           if (contlen != -1)
             {
-              logputs (LOG_VERBOSE, number_to_static_string (contlen + 
contrange));
+              logputs (LOG_VERBOSE, number_to_static_string (convert_to_bits 
(contlen) + contrange));
               if (contlen + contrange >= 1024)
                 logprintf (LOG_VERBOSE, " (%s)",
-                           human_readable (contlen + contrange));
+                           human_readable (convert_to_bits (contlen) + 
contrange));
               if (contrange)
                 {
                   if (contlen >= 1024)
                     logprintf (LOG_VERBOSE, _(", %s (%s) remaining"),
-                               number_to_static_string (contlen),
-                               human_readable (contlen));
+                               number_to_static_string (convert_to_bits 
(contlen)),
+                               human_readable (convert_to_bits (contlen)));
                   else
                     logprintf (LOG_VERBOSE, _(", %s remaining"),
-                               number_to_static_string (contlen));
+                               number_to_static_string (convert_to_bits 
(contlen)));
                 }
             }
           else
@@ -2625,6 +2625,7 @@
   bool send_head_first = true;
   char *file_name;
   bool force_full_retrieve = false;
+  char *out_data_fmt = opt.bits_fmt? "bits": "bytes";
 
   /* Assert that no value for *LOCAL_FILE was passed. */
   assert (local_file == NULL || *local_file == NULL);
@@ -3038,13 +3039,13 @@
                          : _("%s (%s) - %s saved [%s/%s]\n\n"),
                          tms, tmrate,
                          write_to_stdout ? "" : quote (hstat.local_file),
-                         number_to_static_string (hstat.len),
-                         number_to_static_string (hstat.contlen));
+                         number_to_static_string (convert_to_bits (hstat.len)),
+                         number_to_static_string (convert_to_bits 
(hstat.contlen)));
               logprintf (LOG_NONVERBOSE,
                          "%s URL:%s [%s/%s] -> \"%s\" [%d]\n",
                          tms, u->url,
-                         number_to_static_string (hstat.len),
-                         number_to_static_string (hstat.contlen),
+                         number_to_static_string (convert_to_bits (hstat.len)),
+                         number_to_static_string (convert_to_bits 
(hstat.contlen)),
                          hstat.local_file, count);
             }
           ++numurls;
@@ -3074,10 +3075,10 @@
                              : _("%s (%s) - %s saved [%s]\n\n"),
                              tms, tmrate,
                              write_to_stdout ? "" : quote (hstat.local_file),
-                             number_to_static_string (hstat.len));
+                             number_to_static_string (convert_to_bits 
(hstat.len)));
                   logprintf (LOG_NONVERBOSE,
                              "%s URL:%s [%s] -> \"%s\" [%d]\n",
-                             tms, u->url, number_to_static_string (hstat.len),
+                             tms, u->url, number_to_static_string 
(convert_to_bits (hstat.len)),
                              hstat.local_file, count);
                 }
               ++numurls;
@@ -3096,8 +3097,9 @@
                                                  connection too soon */
             {
               logprintf (LOG_VERBOSE,
-                         _("%s (%s) - Connection closed at byte %s. "),
-                         tms, tmrate, number_to_static_string (hstat.len));
+                         _("%s (%s) - Connection closed at %s %s. "),
+                         tms, tmrate, out_data_fmt, 
+                         number_to_static_string (convert_to_bits 
(hstat.len)));
               printwhat (count, opt.ntry);
               continue;
             }
@@ -3119,8 +3121,8 @@
           if (hstat.contlen == -1)
             {
               logprintf (LOG_VERBOSE,
-                         _("%s (%s) - Read error at byte %s (%s)."),
-                         tms, tmrate, number_to_static_string (hstat.len),
+                         _("%s (%s) - Read error at %s %s (%s)."),
+                         tms, tmrate, out_data_fmt, number_to_static_string 
(convert_to_bits (hstat.len)),
                          hstat.rderrmsg);
               printwhat (count, opt.ntry);
               continue;
@@ -3129,9 +3131,9 @@
             {
               logprintf (LOG_VERBOSE,
                          _("%s (%s) - Read error at byte %s/%s (%s). "),
-                         tms, tmrate,
-                         number_to_static_string (hstat.len),
-                         number_to_static_string (hstat.contlen),
+                         tms, tmrate, out_data_fmt,
+                         number_to_static_string (convert_to_bits (hstat.len)),
+                         number_to_static_string (convert_to_bits 
(hstat.contlen)),
                          hstat.rderrmsg);
               printwhat (count, opt.ntry);
               continue;
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-11 22:35:41.195962002 +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-11 22:35:41.229962001 +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 },
@@ -703,7 +704,11 @@
     N_("\
   -np, --no-parent                 don't ascend to the parent directory.\n"),
     "\n",
-
+    N_("\
+Output format:\n"),
+    N_("\
+       --bits                      Output all data length in bits.\n"),
+    "\n",
     N_("Mail bug reports and suggestions to <[email protected]>.\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-11 22:35:41.230962001 +0530
@@ -255,6 +255,7 @@
 
   bool show_all_dns_entries; /* Show all the DNS entries when resolving a
                                 name. */
+  bool bits_fmt;              /*Output in bits format*/
 };
 
 extern struct options opt;
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-11 22:35:41.231962001 +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,10 @@
 calc_rate (wgint bytes, double secs, int *units)
 {
   double dlrate;
+  double in_bits = 8.0;
+ 
+  if (!opt.bits_fmt)
+     in_bits = 1.0;
 
   assert (secs >= 0);
   assert (bytes >= 0);
@@ -613,16 +618,16 @@
        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 < (1024.0 * in_bits))
     *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 < (1024.0 * 1024.0 * in_bits))
+    *units = 1, dlrate /= (1024.0 * in_bits);
+  else if (dlrate < (1024.0 * 1024.0 * 1024.0 * in_bits))
+    *units = 2, dlrate /= (1024.0 * 1024.0 * in_bits);
   else
     /* Maybe someone will need this, one day. */
-    *units = 3, dlrate /= (1024.0 * 1024.0 * 1024.0);
+    *units = 3, dlrate /= (1024.0 * 1024.0 * 1024.0 * in_bits);
 
   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-11 22:38:49.418962001 +0530
@@ -1608,8 +1608,8 @@
           double val = n / 1024.0;
           /* Print values smaller than 10 with one decimal digits, and
              others without any decimals.  */
-          snprintf (buf, sizeof (buf), "%.*f%c",
-                    val < 10 ? 1 : 0, val, powers[i]);
+          snprintf (buf, sizeof (buf), "%.*f%c%c",
+                    val < 10 ? 1 : 0, val, powers[i], opt.bits_fmt?'b':'B');
           return buf;
         }
       n /= 1024;
@@ -1826,6 +1826,16 @@
   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.  */
2012-01-11   Sasikantha babu   <[email protected]>
        * utils.c (human_readable): modified snprintf to print b(indicates
                 bits) if --bits option enabled otherwise B (Bytes)
                 (convert_to_bits): Added new function convert_to_bits to
                  convert bytes to bits
        * retr.c (calc_rate): Modified the function to handle --bits option
          and download rate calculated per bits per sec for --bits otherwise 
          bytes.
                (retr_rate): Rates will display in bits per sec for --bits
        * options.h (struct opt): Added --bit option bool variable bits_fmt
        * main.c (print_help) : Added help for --bit
        * init.c: Defined command for --bit option
        * http.c (gethttp & http_loop): Handled --bits option while priting
        data length
        * ftp.c (print_length, ftp_retrieve_list & ftp_loop_internal):
        Handled  --bits option while priting data length 

Reply via email to