]> sjero.net Git - wget/commitdiff
Accept --bit option
authorSasikantha Babu <sasikanth.v19@gmail.com>
Mon, 5 Mar 2012 21:23:06 +0000 (22:23 +0100)
committerGiuseppe Scrivano <gscrivano@gnu.org>
Mon, 5 Mar 2012 21:23:06 +0000 (22:23 +0100)
NEWS
src/ChangeLog
src/init.c
src/main.c
src/options.h
src/progress.c
src/retr.c
src/retr.h
src/utils.c

diff --git a/NEWS b/NEWS
index 5c8184b44fa38debbc76053cc7bb1e2b95e5121a..311a2f1a13fe0c6227bcb025740679c9b311b04d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -20,6 +20,8 @@ Please send GNU Wget bug reports to <bug-wget@gnu.org>.
 ** Print some diagnostic messages to stderr not to stdout.
 
 ** Report stdout close errors.
 ** Print some diagnostic messages to stderr not to stdout.
 
 ** Report stdout close errors.
+
+** Accept the --bit option.
 \f
 * Changes in Wget 1.13.4
 
 \f
 * Changes in Wget 1.13.4
 
index caebc5e4c040a33b5d0eb4c37cbaff1a11bc2a88..a156c479f5746259d37b3918d8bce8f7034114ab 100644 (file)
@@ -1,3 +1,16 @@
+2012-03-06   Sasikantha Babu   <sasikanth.v19@gmail.com>
+
+       * utils.c (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 as bits per sec (SI-prefix)
+       for --bits otherwise bytes (IEC-prefix).
+       (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.
+       * retr.h: Added function prototype.
+
 2012-02-26  Giuseppe Scrivano  <gscrivano@gnu.org>
 
        * main.c: Include "closeout.h"
 2012-02-26  Giuseppe Scrivano  <gscrivano@gnu.org>
 
        * main.c: Include "closeout.h"
index d2fba82cebda62d5e70f8b17e2f5a21eec481f43..c890956c1e813ecaf19a7298b1d19d44be389d47 100644 (file)
@@ -127,6 +127,7 @@ static const struct {
   { "backups",          &opt.backups,           cmd_number },
   { "base",             &opt.base_href,         cmd_string },
   { "bindaddress",      &opt.bind_address,      cmd_string },
   { "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
 #ifdef HAVE_SSL
   { "cacertificate",    &opt.ca_cert,           cmd_file },
 #endif
index 3e731e9d02924bf9dda268ad54d75f9f8193767f..a12aaf1b43e2ebde3ba36427b521acb26f6f9c7f 100644 (file)
@@ -167,6 +167,7 @@ static struct cmdline_option option_data[] =
     { "backups", 0, OPT_BOOLEAN, "backups", -1 },
     { "base", 'B', OPT_VALUE, "base", -1 },
     { "bind-address", 0, OPT_VALUE, "bindaddress", -1 },
     { "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 },
     { IF_SSL ("ca-certificate"), 0, OPT_VALUE, "cacertificate", -1 },
     { IF_SSL ("ca-directory"), 0, OPT_VALUE, "cadirectory", -1 },
     { "cache", 0, OPT_BOOLEAN, "cache", -1 },
@@ -746,6 +747,11 @@ Recursive accept/reject:\n"),
   -np, --no-parent                 don't ascend to the parent directory.\n"),
     "\n",
 
   -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 <bug-wget@gnu.org>.\n")
   };
 
     N_("Mail bug reports and suggestions to <bug-wget@gnu.org>.\n")
   };
 
index 0be66814209254c403ad834c601abec1b85c9181..1f429906dcdc8378653f3b6de262d6c0753484a7 100644 (file)
@@ -266,6 +266,7 @@ struct options
 
   bool show_all_dns_entries; /* Show all the DNS entries when resolving a
                                 name. */
 
   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;
 };
 
 extern struct options opt;
index 219b5beaef7a0dba92213648e03e397c9db490e5..799d6e37e53584bb58e894013e994a378e694ad7 100644 (file)
@@ -861,7 +861,7 @@ create_image (struct bar_progress *bp, double dl_total_time, bool done)
   struct bar_progress_hist *hist = &bp->hist;
 
   /* The progress bar should look like this:
   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
 
      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 @@ create_image (struct bar_progress *bp, double dl_total_time, bool done)
      "xx% " or "100%"  - percentage               - 4 chars
      "[]"              - progress bar decorations - 2 chars
      " nnn,nnn,nnn"    - downloaded bytes         - 12 chars or very rarely more
      "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
      "  eta 36m 51s"   - ETA                      - 14 chars
 
      "=====>..."       - progress bar             - the rest
@@ -977,10 +977,11 @@ create_image (struct bar_progress *bp, double dl_total_time, bool done)
       *p++ = ' ';
     }
 
       *p++ = ' ';
     }
 
-  /* " 12.52K/s" */
+  /* " 12.52Kb/s or 12.52KB/s" */
   if (hist->total_time > 0 && hist->total_bytes)
     {
   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.  */
       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 @@ create_image (struct bar_progress *bp, double dl_total_time, bool done)
       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,
       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
       move_to_end (p);
     }
   else
index 8c8cdf5b4d6016ca1d919eec87aaf5074b40b385..5f33c7a77355ce30a02424990902021d515331a1 100644 (file)
@@ -620,6 +620,7 @@ retr_rate (wgint bytes, double secs)
 {
   static char res[20];
   static const char *rate_names[] = {"B/s", "KB/s", "MB/s", "GB/s" };
 {
   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);
   int units;
 
   double dlrate = calc_rate (bytes, secs, &units);
@@ -627,7 +628,7 @@ retr_rate (wgint bytes, double secs)
      e.g. "1022", "247", "12.5", "2.38".  */
   sprintf (res, "%.*f %s",
            dlrate >= 99.95 ? 0 : dlrate >= 9.995 ? 1 : 2,
      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;
 }
 
   return res;
 }
@@ -644,6 +645,11 @@ double
 calc_rate (wgint bytes, double secs, int *units)
 {
   double dlrate;
 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);
 
   assert (secs >= 0);
   assert (bytes >= 0);
@@ -655,16 +661,17 @@ calc_rate (wgint bytes, double secs, int *units)
        0 and the timer's resolution, assume half the resolution.  */
     secs = ptimer_resolution () / 2.0;
 
        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;
     *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. */
   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;
 }
 
   return dlrate;
 }
index 22ab9ecd8a5ec39919f67eefcb7415f64ec25253..776238b1298395d7a156b830d7acba846c47e2c5 100644 (file)
@@ -75,4 +75,6 @@ void set_local_file (const char **, const char *);
 
 bool input_file_url (const char *);
 
 
 bool input_file_url (const char *);
 
+wgint convert_to_bits (wgint num);
+
 #endif /* RETR_H */
 #endif /* RETR_H */
index 509088b644a6566da06cdedb7818974c0f8c6c75..244b03cdebcbd0f6c78a8c3bfd95ca24ded475f0 100644 (file)
@@ -1825,6 +1825,17 @@ number_to_static_string (wgint number)
   ringpos = (ringpos + 1) % RING_SIZE;
   return buf;
 }
   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;
+}
+
 \f
 /* Determine the width of the terminal we're running on.  If that's
    not possible, return 0.  */
 \f
 /* Determine the width of the terminal we're running on.  If that's
    not possible, return 0.  */