From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 099C8C282CB for ; Wed, 6 Feb 2019 00:01:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C2063217F9 for ; Wed, 6 Feb 2019 00:01:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726622AbfBFABN (ORCPT ); Tue, 5 Feb 2019 19:01:13 -0500 Received: from mga09.intel.com ([134.134.136.24]:8499 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725967AbfBFABN (ORCPT ); Tue, 5 Feb 2019 19:01:13 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Feb 2019 16:01:12 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,337,1544515200"; d="scan'208";a="113999003" Received: from jtkirshe-desk1.jf.intel.com ([134.134.177.96]) by orsmga006.jf.intel.com with ESMTP; 05 Feb 2019 16:01:12 -0800 From: Jeff Kirsher To: linville@tuxdriver.com Cc: Nicholas Nunley , netdev@vger.kernel.org, nhorman@redhat.com, sassmann@redhat.com, Jeff Kirsher Subject: [PATCH v2 1/6] ethtool: move option parsing related code into function Date: Tue, 5 Feb 2019 16:01:01 -0800 Message-Id: <20190206000106.24364-1-jeffrey.t.kirsher@intel.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nicholas Nunley Move option parsing code into find_option function. No behavior changes. Based on patch by Kan Liang Signed-off-by: Nicholas Nunley Signed-off-by: Jeff Kirsher --- ethtool.c | 49 +++++++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/ethtool.c b/ethtool.c index 2f7e96b..8b7c224 100644 --- a/ethtool.c +++ b/ethtool.c @@ -5265,6 +5265,29 @@ static int show_usage(struct cmd_context *ctx) return 0; } +static int find_option(int argc, char **argp) +{ + const char *opt; + size_t len; + int k; + + for (k = 0; args[k].opts; k++) { + opt = args[k].opts; + for (;;) { + len = strcspn(opt, "|"); + if (strncmp(*argp, opt, len) == 0 && + (*argp)[len] == 0) + return k; + + if (opt[len] == 0) + break; + opt += len + 1; + } + } + + return -1; +} + int main(int argc, char **argp) { int (*func)(struct cmd_context *); @@ -5284,24 +5307,14 @@ int main(int argc, char **argp) */ if (argc == 0) exit_bad_args(); - for (k = 0; args[k].opts; k++) { - const char *opt; - size_t len; - opt = args[k].opts; - for (;;) { - len = strcspn(opt, "|"); - if (strncmp(*argp, opt, len) == 0 && - (*argp)[len] == 0) { - argp++; - argc--; - func = args[k].func; - want_device = args[k].want_device; - goto opt_found; - } - if (opt[len] == 0) - break; - opt += len + 1; - } + + k = find_option(argc, argp); + if (k >= 0) { + argp++; + argc--; + func = args[k].func; + want_device = args[k].want_device; + goto opt_found; } if ((*argp)[0] == '-') exit_bad_args(); -- 2.20.1