env: Add a command to display details about env flags
Similar to the env callback command, this will show details about the options available, the static list, and the currently active variables. Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
This commit is contained in:
parent
30fd4fadb3
commit
fffad71bc4
1
README
1
README
@ -816,6 +816,7 @@ The following options need to be configured:
|
||||
CONFIG_CMD_EEPROM * EEPROM read/write support
|
||||
CONFIG_CMD_ELF * bootelf, bootvx
|
||||
CONFIG_CMD_ENV_CALLBACK * display details about env callbacks
|
||||
CONFIG_CMD_ENV_FLAGS * display details about env flags
|
||||
CONFIG_CMD_EXPORTENV * export the environment
|
||||
CONFIG_CMD_EXT2 * ext2 command support
|
||||
CONFIG_CMD_EXT4 * ext4 command support
|
||||
|
@ -443,6 +443,59 @@ 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)
|
||||
{
|
||||
enum env_flags_vartype type = env_flags_parse_vartype(flags);
|
||||
|
||||
printf("\t%-20s %-20s\n", var_name, env_flags_get_vartype_name(type));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int print_active_flags(ENTRY *entry)
|
||||
{
|
||||
enum env_flags_vartype type;
|
||||
|
||||
if (entry->flags == 0)
|
||||
return 0;
|
||||
|
||||
type = (enum env_flags_vartype)
|
||||
(entry->flags & ENV_FLAGS_VARTYPE_BIN_MASK);
|
||||
printf("\t%-20s %-20s\n", entry->key, env_flags_get_vartype_name(type));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Print the flags available and what variables have flags
|
||||
*/
|
||||
int do_env_flags(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
{
|
||||
/* Print the available variable types */
|
||||
printf("Available variable type flags (position %d):\n",
|
||||
ENV_FLAGS_VARTYPE_LOC);
|
||||
puts("\tFlag\tVariable Type Name\n");
|
||||
puts("\t----\t------------------\n");
|
||||
env_flags_print_vartypes();
|
||||
puts("\n");
|
||||
|
||||
/* Print the static flags that may exist */
|
||||
puts("Static flags:\n");
|
||||
printf("\t%-20s %-20s\n", "Variable Name", "Variable Type");
|
||||
printf("\t%-20s %-20s\n", "-------------", "-------------");
|
||||
env_attr_walk(ENV_FLAGS_LIST_STATIC, print_static_flags);
|
||||
puts("\n");
|
||||
|
||||
/* walk through each variable and print the flags if non-default */
|
||||
puts("Active flags:\n");
|
||||
printf("\t%-20s %-20s\n", "Variable Name", "Variable Type");
|
||||
printf("\t%-20s %-20s\n", "-------------", "-------------");
|
||||
hwalk_r(&env_htab, print_active_flags);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Interactively edit an environment variable
|
||||
*/
|
||||
@ -913,6 +966,9 @@ static cmd_tbl_t cmd_env_sub[] = {
|
||||
#if defined(CONFIG_CMD_ENV_CALLBACK)
|
||||
U_BOOT_CMD_MKENT(callbacks, 1, 0, do_env_callback, "", ""),
|
||||
#endif
|
||||
#if defined(CONFIG_CMD_ENV_FLAGS)
|
||||
U_BOOT_CMD_MKENT(flags, 1, 0, do_env_flags, "", ""),
|
||||
#endif
|
||||
#if defined(CONFIG_CMD_EXPORTENV)
|
||||
U_BOOT_CMD_MKENT(export, 4, 0, do_env_export, "", ""),
|
||||
#endif
|
||||
@ -974,6 +1030,9 @@ static char env_help_text[] =
|
||||
#if defined(CONFIG_CMD_EXPORTENV)
|
||||
"env export [-t | -b | -c] [-s size] addr [var ...] - export environment\n"
|
||||
#endif
|
||||
#if defined(CONFIG_CMD_ENV_FLAGS)
|
||||
"env flags - print variables that have non-default flags\n"
|
||||
#endif
|
||||
#if defined(CONFIG_CMD_GREPENV)
|
||||
"env grep string [...] - search environment\n"
|
||||
#endif
|
||||
|
@ -43,6 +43,40 @@
|
||||
#endif
|
||||
|
||||
static const char env_flags_vartype_rep[] = "sdxb" ENV_FLAGS_NET_VARTYPE_REPS;
|
||||
#ifdef CONFIG_CMD_ENV_FLAGS
|
||||
static const char * const env_flags_vartype_names[] = {
|
||||
"string",
|
||||
"decimal",
|
||||
"hexadecimal",
|
||||
"boolean",
|
||||
#ifdef CONFIG_CMD_NET
|
||||
"IP address",
|
||||
"MAC address",
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
* Print the whole list of available type flags.
|
||||
*/
|
||||
void env_flags_print_vartypes(void)
|
||||
{
|
||||
enum env_flags_vartype curtype = (enum env_flags_vartype)0;
|
||||
|
||||
while (curtype != env_flags_vartype_end) {
|
||||
printf("\t%c -\t%s\n", env_flags_vartype_rep[curtype],
|
||||
env_flags_vartype_names[curtype]);
|
||||
curtype++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the name of the type.
|
||||
*/
|
||||
const char *env_flags_get_vartype_name(enum env_flags_vartype type)
|
||||
{
|
||||
return env_flags_vartype_names[type];
|
||||
}
|
||||
#endif /* CONFIG_CMD_ENV_FLAGS */
|
||||
|
||||
/*
|
||||
* Parse the flags string from a .flags attribute list into the vartype enum.
|
||||
|
@ -47,6 +47,17 @@ enum env_flags_vartype {
|
||||
#define ENV_FLAGS_LIST_STATIC \
|
||||
CONFIG_ENV_FLAGS_LIST_STATIC
|
||||
|
||||
#ifdef CONFIG_CMD_ENV_FLAGS
|
||||
/*
|
||||
* Print the whole list of available type flags.
|
||||
*/
|
||||
void env_flags_print_vartypes(void);
|
||||
/*
|
||||
* Return the name of the type.
|
||||
*/
|
||||
const char *env_flags_get_vartype_name(enum env_flags_vartype type);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Parse the flags string from a .flags attribute list into the vartype enum.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user