From 025c85f8dcdbf732bf673e71431f2e46a472b14f Mon Sep 17 00:00:00 2001 From: Oleg Hahm Date: Fri, 23 Oct 2015 14:59:06 +0000 Subject: [PATCH] shell: simplify ping6 parameter parsing Removes some duplication. --- sys/shell/commands/sc_icmpv6_echo.c | 59 ++++++++++------------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/sys/shell/commands/sc_icmpv6_echo.c b/sys/shell/commands/sc_icmpv6_echo.c index 0799658b53..507f705337 100644 --- a/sys/shell/commands/sc_icmpv6_echo.c +++ b/sys/shell/commands/sc_icmpv6_echo.c @@ -143,51 +143,30 @@ int _icmpv6_ping(int argc, char **argv) timex_t min_rtt = { UINT32_MAX, UINT32_MAX }, max_rtt = { 0, 0 }; timex_t sum_rtt = { 0, 0 }; timex_t start, stop; + int param_offset = 0; - switch (argc) { - case 0: - case 1: + if (argc < 2) { + usage(argv); + return 1; + } + else if ((count = atoi(argv[1])) > 0) { + if (argc < 3) { usage(argv); return 1; + } + param_offset = 1; + } + else { + count = 3; + } - case 2: - addr_str = argv[1]; - break; + addr_str = argv[1 + param_offset]; - case 3: - count = atoi(argv[1]); - if (count > 0) { - addr_str = argv[2]; - } - else { - count = 3; - addr_str = argv[1]; - payload_len = atoi(argv[2]); - } - - break; - - case 4: - count = atoi(argv[1]); - if (count > 0) { - addr_str = argv[2]; - payload_len = atoi(argv[3]); - } - else { - count = 3; - addr_str = argv[1]; - payload_len = atoi(argv[2]); - _a_to_timex(&delay, argv[3]); - } - break; - - case 5: - default: - count = atoi(argv[1]); - addr_str = argv[2]; - payload_len = atoi(argv[3]); - _a_to_timex(&delay, argv[4]); - break; + if (argc > (2 + param_offset)) { + payload_len = atoi(argv[2 + param_offset]); + } + if (argc > (3 + param_offset)) { + _a_to_timex(&delay, argv[3 + param_offset]); } if ((ipv6_addr_from_str(&addr, addr_str) == NULL) || (((int)payload_len) < 0)) {