diff options
author | Ladislav Michl <ladis@linux-mips.org> | 2016-07-12 20:28:24 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2016-07-22 14:46:14 -0400 |
commit | 1c2a262a9d6132e52108a1b6bd36499ee1f06377 (patch) | |
tree | fb8978c7eb9a30aebd6f013d2e2b8935c849825a /cmd | |
parent | 06a040a31bcfc2673ab0670ee95fb9b078c4fdda (diff) |
cmd: mtdparts: consolidate mtdparts reading from env
Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/mtdparts.c | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/cmd/mtdparts.c b/cmd/mtdparts.c index 995cb87b73a..7860ed9f520 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 |