u-boot environments, esp. when boards are shared across multiple users, can get pretty large and time consuming to visually parse. The grepenv command this patch adds can be used in lieu of printenv to facilitate searching. grepenv works like printenv but limits its output only to environment strings (variable name and value pairs) that match the user specified substring.
Signed-off-by: Kim Phillips <kim.phill...@freescale.com> --- v2: rebased common/cmd_nvedit.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 51 insertions(+), 0 deletions(-) diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c index fb69c24..532167b 100644 --- a/common/cmd_nvedit.c +++ b/common/cmd_nvedit.c @@ -160,6 +160,49 @@ int do_env_print (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return rcode; } +int do_grepenv (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + char buf[CONFIG_SYS_CBSIZE], *searchstr; + int i = 0, j = 0, k = 0; + int rcode = 1; + + if (argc != 2) { + cmd_usage(cmdtp); + return 1; + } + + searchstr = argv[1]; + + /* find and print matching env vars */ + do { + buf[j] = env_get_char(i); + if (buf[j] == searchstr[k]) { + k++; + if (searchstr[k] == '\0') { + /* match complete */ + rcode = 0; + do { + i++; j++; + buf[j] = env_get_char(i); + } while (buf[j] != '\0'); + puts(buf); puts("\n"); + j = 0; k = 0; + } else + j++; + } else { + k = 0; + if (buf[j] == '\0') { + j = 0; + if (ctrlc()) + return -1; + } else + j++; + } + i++; + } while (!(j == 0 && env_get_char(i) == '\0')); + + return rcode; +} /* * Set a new environment variable, * or replace or delete an existing one. @@ -904,6 +947,14 @@ U_BOOT_CMD_COMPLETE( ); U_BOOT_CMD_COMPLETE( + grepenv, 2, 0, do_grepenv, + "search environment", + "fixed-string\n" + " - list environment name and value pairs matching 'fixed-string'", + var_complete +); + +U_BOOT_CMD_COMPLETE( setenv, CONFIG_SYS_MAXARGS, 0, do_env_set, "set environment variables", "name value ...\n" -- 1.7.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot