From adf462fe0508e7229bcfabfd8ae7012aa57e5066 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sun, 13 Nov 2005 11:06:48 +0000 Subject: [PATCH] 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. --- CHANGES | 5 +++++ RELEASE-NOTES | 3 ++- src/main.c | 13 ++++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 47c76f714..aee71cdcf 100644 --- 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 diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 0bfb637ac..81da353ba 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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) diff --git a/src/main.c b/src/main.c index 99edc61d7..c43241930 100644 --- a/src/main.c +++ b/src/main.c @@ -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;