Debian bug report 338681 by Jan Kunder: make curl better detect and report bad
authorDaniel Stenberg <daniel@haxx.se>
Sun, 13 Nov 2005 11:06:48 +0000 (11:06 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 13 Nov 2005 11:06:48 +0000 (11:06 +0000)
limit-rate units: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now
curl will return error if a bad unit is used.

CHANGES
RELEASE-NOTES
src/main.c

diff --git a/CHANGES b/CHANGES
index 47c76f7..aee71cd 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -9,6 +9,11 @@
 
 
 Daniel (13 November 2005)
+- Debian bug report 338681 by Jan Kunder: make curl better detect and report
+  bad limit-rate units:
+  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now curl will return
+  error if a bad unit is used.
+
 - Thanks to this nice summary of poll() implementations:
   http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene
   Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote
index 0bfb637..81da353 100644 (file)
@@ -18,6 +18,7 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ o curl outputs error on bad --limit-rate units
  o fixed libcurl's use of poll() on cygwin
  o the GnuTLS code didn't support client certificates
  o TFTP over IPv6 works
@@ -48,6 +49,6 @@ advice from friends like these:
 
  Dave Dribin, Bradford Bruce, Temprimus, Ofer, Dima Barsky, Amol Pattekar, Jaz
  Fresh, tommink[at]post.pl, Gisle Vanem, Nis Jorgensen, Vilmos Nebehaj,
- Dmitry Bartsevich, David Lang, Eugene Kotlyarov
+ Dmitry Bartsevich, David Lang, Eugene Kotlyarov, Jan Kunder
 
         Thanks! (and sorry if I forgot to mention someone)
index 99edc61..c432419 100644 (file)
@@ -1497,7 +1497,11 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
           /* We support G, M, K too */
           char *unit;
           curl_off_t value = curlx_strtoofft(nextarg, &unit, 0);
-          switch(nextarg[strlen(nextarg)-1]) {
+
+          if(strlen(unit) != 1)
+            unit="w"; /* unsupported */
+
+          switch(*unit) {
           case 'G':
           case 'g':
             value *= 1024*1024*1024;
@@ -1510,6 +1514,13 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
           case 'k':
             value *= 1024;
             break;
+          case 'b':
+          case 'B':
+            /* for plain bytes, leave as-is */
+            break;
+          default:
+            warnf(config, "unsupported rate unit. Use G, M, K or B!\n");
+            return PARAM_BAD_USE;
           }
           config->recvpersecond = value;
           config->sendpersecond = value;