From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756143AbdLOVty (ORCPT ); Fri, 15 Dec 2017 16:49:54 -0500 Received: from mx2.suse.de ([195.135.220.15]:60400 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755795AbdLOVtw (ORCPT ); Fri, 15 Dec 2017 16:49:52 -0500 From: Michal Suchanek To: Hari Bathini , linuxppc-dev , lkml , Ankit Kumar , Mahesh J Salgaonkar Cc: Michal Suchanek Subject: [PATCH] Optimize final quote removal. Date: Fri, 15 Dec 2017 22:49:41 +0100 Message-Id: <20171215214941.4871-1-msuchanek@suse.de> X-Mailer: git-send-email 2.13.6 In-Reply-To: <151075906562.14434.17655499193254963975.stgit@hbathini.in.ibm.com> References: <151075906562.14434.17655499193254963975.stgit@hbathini.in.ibm.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is additional patch that avoids the memmove when processing the quote on the end of the parameter. --- lib/cmdline.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/cmdline.c b/lib/cmdline.c index c5335a79a177..b1d8a0dc60fc 100644 --- a/lib/cmdline.c +++ b/lib/cmdline.c @@ -191,7 +191,13 @@ bool parse_option_str(const char *str, const char *option) return false; } +#define break_arg_end(i) { \ + if (isspace(args[i]) && !in_quote && !backslash && !in_single) \ + break; \ + } + #define squash_char { \ + break_arg_end(i + 1); \ memmove(args + 1, args, i); \ args++; \ i--; \ @@ -209,8 +215,7 @@ char *next_arg(char *args, char **param, char **val) char *next; for (i = 0; args[i]; i++) { - if (isspace(args[i]) && !in_quote && !backslash && !in_single) - break; + break_arg_end(i); if ((equals == 0) && (args[i] == '=')) equals = i; -- 2.13.6