From: Andrea Claudi Date: Fri, 28 Jun 2019 16:03:45 +0000 (+0200) Subject: utils: move parse_percent() to tc_util X-Git-Tag: v5.3.0~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1e5746d5e13d895b63da954f0290cffbb076cefa;p=thirdparty%2Fiproute2.git utils: move parse_percent() to tc_util As parse_percent() is used only in tc. This reduces ip, bridge and genl binaries size: $ bloat-o-meter -t bridge/bridge bridge/bridge.new add/remove: 0/1 grow/shrink: 0/0 up/down: 0/-109 (-109) Total: Before=50973, After=50864, chg -0.21% $ bloat-o-meter -t genl/genl genl/genl.new add/remove: 0/1 grow/shrink: 0/0 up/down: 0/-109 (-109) Total: Before=30298, After=30189, chg -0.36% $ bloat-o-meter ip/ip ip/ip.new add/remove: 0/1 grow/shrink: 0/0 up/down: 0/-109 (-109) Total: Before=674164, After=674055, chg -0.02% Signed-off-by: Andrea Claudi Signed-off-by: David Ahern --- diff --git a/include/utils.h b/include/utils.h index ec0231f97..1d9c11276 100644 --- a/include/utils.h +++ b/include/utils.h @@ -146,7 +146,6 @@ int get_addr_rta(inet_prefix *dst, const struct rtattr *rta, int family); int get_addr_ila(__u64 *val, const char *arg); int read_prop(const char *dev, char *prop, long *value); -int parse_percent(double *val, const char *str); int get_hex(char c); int get_integer(int *val, const char *arg, int base); int get_unsigned(unsigned *val, const char *arg, int base); diff --git a/lib/utils.c b/lib/utils.c index be0f11b00..5da9a4784 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -101,22 +101,6 @@ out: return -1; } -/* Parse a percent e.g: '30%' - * return: 0 = ok, -1 = error, 1 = out of range - */ -int parse_percent(double *val, const char *str) -{ - char *p; - - *val = strtod(str, &p) / 100.; - if (*val == HUGE_VALF || *val == HUGE_VALL) - return 1; - if (*p && strcmp(p, "%")) - return -1; - - return 0; -} - int get_hex(char c) { if (c >= 'A' && c <= 'F') diff --git a/tc/tc_util.c b/tc/tc_util.c index e5d152815..53d15e08e 100644 --- a/tc/tc_util.c +++ b/tc/tc_util.c @@ -190,6 +190,22 @@ static const struct rate_suffix { { NULL } }; +/* Parse a percent e.g: '30%' + * return: 0 = ok, -1 = error, 1 = out of range + */ +int parse_percent(double *val, const char *str) +{ + char *p; + + *val = strtod(str, &p) / 100.; + if (*val == HUGE_VALF || *val == HUGE_VALL) + return 1; + if (*p && strcmp(p, "%")) + return -1; + + return 0; +} + static int parse_percent_rate(char *rate, size_t len, const char *str, const char *dev) { diff --git a/tc/tc_util.h b/tc/tc_util.h index 825fea36a..eb4b60db3 100644 --- a/tc/tc_util.h +++ b/tc/tc_util.h @@ -101,6 +101,7 @@ int print_tc_classid(char *buf, int len, __u32 h); char *sprint_tc_classid(__u32 h, char *buf); int tc_print_police(FILE *f, struct rtattr *tb); +int parse_percent(double *val, const char *str); int parse_police(int *argc_p, char ***argv_p, int tca_id, struct nlmsghdr *n); int parse_action_control(int *argc_p, char ***argv_p,