Commit 24ab5a1914283b891fa50bc285128bc5fd4ac50a
Committed by
Tom Rini
1 parent
267541f776
Exists in
master
and in
54 other branches
env: Add setenv force support
Now that we have support for permissions, add a way to override them. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Showing 1 changed file with 23 additions and 6 deletions Side-by-side Diff
common/cmd_nvedit.c
... | ... | @@ -200,7 +200,24 @@ |
200 | 200 | int i, len; |
201 | 201 | char *name, *value, *s; |
202 | 202 | ENTRY e, *ep; |
203 | + int env_flag = H_INTERACTIVE; | |
203 | 204 | |
205 | + debug("Initial value for argc=%d\n", argc); | |
206 | + while (argc > 1 && **(argv + 1) == '-') { | |
207 | + char *arg = *++argv; | |
208 | + | |
209 | + --argc; | |
210 | + while (*++arg) { | |
211 | + switch (*arg) { | |
212 | + case 'f': /* force */ | |
213 | + env_flag |= H_FORCE; | |
214 | + break; | |
215 | + default: | |
216 | + return CMD_RET_USAGE; | |
217 | + } | |
218 | + } | |
219 | + } | |
220 | + debug("Final value for argc=%d\n", argc); | |
204 | 221 | name = argv[1]; |
205 | 222 | value = argv[2]; |
206 | 223 | |
... | ... | @@ -214,7 +231,7 @@ |
214 | 231 | |
215 | 232 | /* Delete only ? */ |
216 | 233 | if (argc < 3 || argv[2] == NULL) { |
217 | - int rc = hdelete_r(name, &env_htab, H_INTERACTIVE); | |
234 | + int rc = hdelete_r(name, &env_htab, env_flag); | |
218 | 235 | return !rc; |
219 | 236 | } |
220 | 237 | |
... | ... | @@ -241,7 +258,7 @@ |
241 | 258 | |
242 | 259 | e.key = name; |
243 | 260 | e.data = value; |
244 | - hsearch_r(e, ENTER, &ep, &env_htab, H_INTERACTIVE); | |
261 | + hsearch_r(e, ENTER, &ep, &env_htab, env_flag); | |
245 | 262 | free(value); |
246 | 263 | if (!ep) { |
247 | 264 | printf("## Error inserting \"%s\" variable, errno=%d\n", |
... | ... | @@ -1109,10 +1126,10 @@ |
1109 | 1126 | U_BOOT_CMD_COMPLETE( |
1110 | 1127 | setenv, CONFIG_SYS_MAXARGS, 0, do_env_set, |
1111 | 1128 | "set environment variables", |
1112 | - "name value ...\n" | |
1113 | - " - set environment variable 'name' to 'value ...'\n" | |
1114 | - "setenv name\n" | |
1115 | - " - delete environment variable 'name'", | |
1129 | + "[-f] name value ...\n" | |
1130 | + " - [forcibly] set environment variable 'name' to 'value ...'\n" | |
1131 | + "setenv [-f] name\n" | |
1132 | + " - [forcibly] delete environment variable 'name'", | |
1116 | 1133 | var_complete |
1117 | 1134 | ); |
1118 | 1135 |