|
@@ -42,6 +42,9 @@
|
|
|
#include <common.h>
|
|
|
#include <command.h>
|
|
|
#include <environment.h>
|
|
|
+#if defined(CONFIG_CMD_EDITENV)
|
|
|
+#include <malloc.h>
|
|
|
+#endif
|
|
|
#include <watchdog.h>
|
|
|
#include <serial.h>
|
|
|
#include <linux/stddef.h>
|
|
@@ -502,6 +505,34 @@ int do_askenv ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+/************************************************************************
|
|
|
+ * Interactively edit an environment variable
|
|
|
+ */
|
|
|
+#if defined(CONFIG_CMD_EDITENV)
|
|
|
+int do_editenv(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|
|
+{
|
|
|
+ char buffer[CONFIG_SYS_CBSIZE];
|
|
|
+ char *init_val;
|
|
|
+ int len;
|
|
|
+
|
|
|
+ if (argc < 2) {
|
|
|
+ cmd_usage(cmdtp);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Set read buffer to initial value or empty sting */
|
|
|
+ init_val = getenv(argv[1]);
|
|
|
+ if (init_val)
|
|
|
+ len = sprintf(buffer, "%s", init_val);
|
|
|
+ else
|
|
|
+ buffer[0] = '\0';
|
|
|
+
|
|
|
+ readline_into_buffer("edit: ", buffer);
|
|
|
+
|
|
|
+ return setenv(argv[1], buffer);
|
|
|
+}
|
|
|
+#endif /* CONFIG_CMD_EDITENV */
|
|
|
+
|
|
|
/************************************************************************
|
|
|
* Look up variable from environment,
|
|
|
* return address of storage for that variable,
|
|
@@ -597,6 +628,15 @@ int envmatch (uchar *s1, int i2)
|
|
|
|
|
|
/**************************************************/
|
|
|
|
|
|
+#if defined(CONFIG_CMD_EDITENV)
|
|
|
+U_BOOT_CMD(
|
|
|
+ editenv, 2, 0, do_editenv,
|
|
|
+ "edit environment variable",
|
|
|
+ "name\n"
|
|
|
+ " - edit environment variable 'name'"
|
|
|
+);
|
|
|
+#endif
|
|
|
+
|
|
|
U_BOOT_CMD(
|
|
|
printenv, CONFIG_SYS_MAXARGS, 1, do_printenv,
|
|
|
"print environment variables",
|