From patchwork Sun Jun 5 17:41:32 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ladislav Michl X-Patchwork-Id: 630453 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3rN4rd5KVtz9t50 for ; Mon, 6 Jun 2016 03:41:37 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 5AB604B9F9; Sun, 5 Jun 2016 19:41:36 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id R7sMb_6ZyCHu; Sun, 5 Jun 2016 19:41:36 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 063254B801; Sun, 5 Jun 2016 19:41:36 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 790C74B801 for ; Sun, 5 Jun 2016 19:41:34 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 48JSB96Zy-Ps for ; Sun, 5 Jun 2016 19:41:34 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from cvs.linux-mips.org (eddie.linux-mips.org [148.251.95.138]) by theia.denx.de (Postfix) with ESMTP id 52D1C4B77D for ; Sun, 5 Jun 2016 19:41:34 +0200 (CEST) Received: (from localhost user: 'ladis' uid#1021 fake: STDIN (ladis@eddie.linux-mips.org)) by eddie.linux-mips.org id S27033676AbcFERleK-eCP (ORCPT ); Sun, 5 Jun 2016 19:41:34 +0200 Date: Sun, 5 Jun 2016 19:41:32 +0200 From: Ladislav Michl To: u-boot@lists.denx.de Message-ID: <20160605174132.GC26814@localhost.localdomain> References: <20160605173453.GA26656@localhost.localdomain> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20160605173453.GA26656@localhost.localdomain> User-Agent: Mutt/1.5.23 (2014-03-12) Cc: Tom Rini , Stefan Roese , Harald Welte , Scott Wood Subject: [U-Boot] [PATCH 3/6] cmd: mtdparts: consolidate mtdparts reading from env X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Signed-off-by: Ladislav Michl --- cmd/mtdparts.c | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/cmd/mtdparts.c b/cmd/mtdparts.c index 995cb87..7860ed9 100644 --- a/cmd/mtdparts.c +++ b/cmd/mtdparts.c @@ -1516,6 +1516,23 @@ static int spread_partitions(void) #endif /* CONFIG_CMD_MTDPARTS_SPREAD */ /** + * The mtdparts variable tends to be long. If we need to access it + * before the env is relocated, then we need to use our own stack + * buffer. gd->env_buf will be too small. + * + * @param buf temporary buffer pointer MTDPARTS_MAXLEN long + * @return mtdparts variable string, NULL if not found + */ +static const char *getenv_mtdparts(char *buf) +{ + if (gd->flags & GD_FLG_ENV_READY) + return getenv("mtdparts"); + if (getenv_f("mtdparts", buf, MTDPARTS_MAXLEN) != -1) + return buf; + return NULL; +} + +/** * Accept character string describing mtd partitions and call device_parse() * for each entry. Add created devices to the global devices list. * @@ -1538,15 +1555,7 @@ static int parse_mtdparts(const char *const mtdparts) } /* re-read 'mtdparts' variable, mtd_devices_init may be updating env */ - if (gd->flags & GD_FLG_ENV_READY) - p = getenv("mtdparts"); - else { - if (getenv_f("mtdparts", tmp_parts, MTDPARTS_MAXLEN) != -1) - p = tmp_parts; - else - p = NULL; - } - + p = getenv_mtdparts(tmp_parts); if (!p) p = mtdparts; @@ -1691,6 +1700,7 @@ static int parse_mtdids(const char *const ids) return 0; } + /** * Parse and initialize global mtdids mapping and create global * device/partition list. @@ -1718,19 +1728,7 @@ int mtdparts_init(void) /* get variables */ ids = getenv("mtdids"); - /* - * The mtdparts variable tends to be long. If we need to access it - * before the env is relocated, then we need to use our own stack - * buffer. gd->env_buf will be too small. - */ - if (gd->flags & GD_FLG_ENV_READY) - parts = getenv("mtdparts"); - else { - if (getenv_f("mtdparts", tmp_parts, MTDPARTS_MAXLEN) != -1) - parts = tmp_parts; - else - parts = NULL; - } + parts = getenv_mtdparts(tmp_parts); current_partition = getenv("partition"); /* save it for later parsing, cannot rely on current partition pointer