[git commit master] ip rule: unify parsing args

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Tue May 25 16:48:33 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=1b3549875cf8beb236a17a456fc0cab66bfd1d72
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
do_iprule                                             83     134     +51
print_rule                                           736     726     -10
iprule_list                                           73       -     -73
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 1/1 up/down: 51/-83)            Total: -32 bytes

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
 networking/libiproute/iprule.c |   36 +++++++++++-------------------------
 1 files changed, 11 insertions(+), 25 deletions(-)

diff --git a/networking/libiproute/iprule.c b/networking/libiproute/iprule.c
index 535019d..835529e 100644
--- a/networking/libiproute/iprule.c
+++ b/networking/libiproute/iprule.c
@@ -69,11 +69,9 @@ static int FAST_FUNC print_rule(const struct sockaddr_nl *who UNUSED_PARAM,
 	else if (r->rtm_family == AF_IPX)
 		host_len = 80;
 */
-	if (tb[RTA_PRIORITY])
-		printf("%u:\t", *(unsigned*)RTA_DATA(tb[RTA_PRIORITY]));
-	else
-		printf("0:\t");
-
+	printf("%u:\t", tb[RTA_PRIORITY] ?
+					*(unsigned*)RTA_DATA(tb[RTA_PRIORITY])
+					: 0);
 	printf("from ");
 	if (tb[RTA_SRC]) {
 		if (r->rtm_src_len != host_len) {
@@ -310,25 +308,13 @@ int do_iprule(char **argv)
 {
 	static const char ip_rule_commands[] ALIGN1 =
 		"add\0""delete\0""list\0""show\0";
-	int cmd = 2; /* list */
-
-	if (!*argv)
-		return iprule_list(argv);
-
-	cmd = index_in_substrings(ip_rule_commands, *argv);
-	switch (cmd) {
-		case 0: /* add */
-			cmd = RTM_NEWRULE;
-			break;
-		case 1: /* delete */
-			cmd = RTM_DELRULE;
-			break;
-		case 2: /* list */
-		case 3: /* show */
-			return iprule_list(argv+1);
-			break;
-		default:
-			bb_error_msg_and_die("unknown command %s", *argv);
+	if (*argv) {
+		smalluint cmd = index_in_substrings(ip_rule_commands, *argv);
+		if (cmd > 3)
+			bb_error_msg_and_die(bb_msg_invalid_arg, *argv, applet_name);
+		argv++;
+		if (cmd < 2)
+			return iprule_modify((cmd == 0) ? RTM_NEWRULE : RTM_DELRULE, argv);
 	}
-	return iprule_modify(cmd, argv+1);
+	return iprule_list(argv);
 }
-- 
1.6.3.3



More information about the busybox-cvs mailing list