All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2] common: add a grepenv command
@ 2011-04-01 22:46 Kim Phillips
  2011-04-01 22:59 ` Wolfgang Denk
  2011-04-01 23:06 ` Mike Frysinger
  0 siblings, 2 replies; 10+ messages in thread
From: Kim Phillips @ 2011-04-01 22:46 UTC (permalink / raw)
  To: u-boot

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.phillips@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

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2011-04-27 22:57 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-04-01 22:46 [U-Boot] [PATCH v2] common: add a grepenv command Kim Phillips
2011-04-01 22:59 ` Wolfgang Denk
2011-04-01 23:06 ` Mike Frysinger
2011-04-04 19:45   ` [U-Boot] [PATCH v3] " Kim Phillips
2011-04-04 20:57     ` Wolfgang Denk
2011-04-05  1:18       ` [U-Boot] [PATCH v4] " Kim Phillips
2011-04-05 15:00         ` Peter Tyser
2011-04-05 15:46           ` Mike Frysinger
2011-04-05 17:15             ` [U-Boot] [PATCH v5] " Kim Phillips
2011-04-27 22:57               ` Wolfgang Denk

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.