diff options
author | Joe Hershberger <joe.hershberger@ni.com> | 2015-05-20 14:27:19 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2015-05-21 09:13:19 -0400 |
commit | cca98fd6aa111f622be09ffdb5c59684c5e160af (patch) | |
tree | b6390d453a085825c1d260dbe69a2433d6f86b77 /common | |
parent | 032ea185d644cfe420822dd3dc84734623ffac91 (diff) | |
download | u-boot-cca98fd6aa111f622be09ffdb5c59684c5e160af.zip u-boot-cca98fd6aa111f622be09ffdb5c59684c5e160af.tar.gz u-boot-cca98fd6aa111f622be09ffdb5c59684c5e160af.tar.bz2 |
env: Allow env_attr_walk to pass a priv * to callback
In some cases it can be helpful to have context in the callback about
the calling situation. This is needed for following patches.
Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common')
-rw-r--r-- | common/cmd_nvedit.c | 10 | ||||
-rw-r--r-- | common/env_attr.c | 5 | ||||
-rw-r--r-- | common/env_callback.c | 6 | ||||
-rw-r--r-- | common/env_flags.c | 6 |
4 files changed, 15 insertions, 12 deletions
diff --git a/common/cmd_nvedit.c b/common/cmd_nvedit.c index be792ae..6ca5a2e 100644 --- a/common/cmd_nvedit.c +++ b/common/cmd_nvedit.c @@ -427,7 +427,8 @@ int do_env_ask(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) #endif #if defined(CONFIG_CMD_ENV_CALLBACK) -static int print_static_binding(const char *var_name, const char *callback_name) +static int print_static_binding(const char *var_name, const char *callback_name, + void *priv) { printf("\t%-20s %-20s\n", var_name, callback_name); @@ -489,7 +490,7 @@ int do_env_callback(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) puts("Static callback bindings:\n"); printf("\t%-20s %-20s\n", "Variable Name", "Callback Name"); printf("\t%-20s %-20s\n", "-------------", "-------------"); - env_attr_walk(ENV_CALLBACK_LIST_STATIC, print_static_binding); + env_attr_walk(ENV_CALLBACK_LIST_STATIC, print_static_binding, NULL); puts("\n"); /* walk through each variable and print the callback if it has one */ @@ -502,7 +503,8 @@ int do_env_callback(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) #endif #if defined(CONFIG_CMD_ENV_FLAGS) -static int print_static_flags(const char *var_name, const char *flags) +static int print_static_flags(const char *var_name, const char *flags, + void *priv) { enum env_flags_vartype type = env_flags_parse_vartype(flags); enum env_flags_varaccess access = env_flags_parse_varaccess(flags); @@ -559,7 +561,7 @@ int do_env_flags(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) "Variable Access"); printf("\t%-20s %-20s %-20s\n", "-------------", "-------------", "---------------"); - env_attr_walk(ENV_FLAGS_LIST_STATIC, print_static_flags); + env_attr_walk(ENV_FLAGS_LIST_STATIC, print_static_flags, NULL); puts("\n"); /* walk through each variable and print the flags if non-default */ diff --git a/common/env_attr.c b/common/env_attr.c index 6e13184..b9de16f 100644 --- a/common/env_attr.c +++ b/common/env_attr.c @@ -26,7 +26,8 @@ * list = entry[,list] */ int env_attr_walk(const char *attr_list, - int (*callback)(const char *name, const char *attributes)) + int (*callback)(const char *name, const char *attributes, void *priv), + void *priv) { const char *entry, *entry_end; char *name, *attributes; @@ -93,7 +94,7 @@ int env_attr_walk(const char *attr_list, if (strlen(name) != 0) { int retval = 0; - retval = callback(name, attributes); + retval = callback(name, attributes, priv); if (retval) { free(entry_cpy); return retval; diff --git a/common/env_callback.c b/common/env_callback.c index d03fa03..f4d3dbd 100644 --- a/common/env_callback.c +++ b/common/env_callback.c @@ -90,7 +90,7 @@ static int clear_callback(ENTRY *entry) /* * Call for each element in the list that associates variables to callbacks */ -static int set_callback(const char *name, const char *value) +static int set_callback(const char *name, const char *value, void *priv) { ENTRY e, *ep; struct env_clbk_tbl *clbkp; @@ -126,9 +126,9 @@ static int on_callbacks(const char *name, const char *value, enum env_op op, hwalk_r(&env_htab, clear_callback); /* configure any static callback bindings */ - env_attr_walk(ENV_CALLBACK_LIST_STATIC, set_callback); + env_attr_walk(ENV_CALLBACK_LIST_STATIC, set_callback, NULL); /* configure any dynamic callback bindings */ - env_attr_walk(value, set_callback); + env_attr_walk(value, set_callback, NULL); return 0; } diff --git a/common/env_flags.c b/common/env_flags.c index 985f92e..5189f5b 100644 --- a/common/env_flags.c +++ b/common/env_flags.c @@ -435,7 +435,7 @@ static int clear_flags(ENTRY *entry) /* * Call for each element in the list that defines flags for a variable */ -static int set_flags(const char *name, const char *value) +static int set_flags(const char *name, const char *value, void *priv) { ENTRY e, *ep; @@ -463,9 +463,9 @@ static int on_flags(const char *name, const char *value, enum env_op op, hwalk_r(&env_htab, clear_flags); /* configure any static flags */ - env_attr_walk(ENV_FLAGS_LIST_STATIC, set_flags); + env_attr_walk(ENV_FLAGS_LIST_STATIC, set_flags, NULL); /* configure any dynamic flags */ - env_attr_walk(value, set_flags); + env_attr_walk(value, set_flags, NULL); return 0; } |