diff options
author | Michael Brown <mcb30@ipxe.org> | 2024-06-20 16:21:28 -0700 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2024-06-20 16:24:38 -0700 |
commit | 1c3c5e2b22ca31bbf77c39aef51671d0b6e95767 (patch) | |
tree | 822160fed4bc9e189bbbc70087c3e43e1b3098c6 | |
parent | 039019039e89aedf4c5a0d81c351638a1e036335 (diff) | |
download | ipxe-1c3c5e2b22ca31bbf77c39aef51671d0b6e95767.tar.gz |
[dynui] Add concept of a secret user interface item
For interactive forms, the concept of a secret value becomes
meaningful (e.g. for password fields).
Add a flag to indicate that an item represents a secret value, and
allow this flag to be set via the "--secret" option of the "item"
command.
This flag has no meaning for menu items, but is silently accepted
anyway to keep the code size minimal.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r-- | src/hci/commands/dynui_cmd.c | 6 | ||||
-rw-r--r-- | src/include/ipxe/dynui.h | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/hci/commands/dynui_cmd.c b/src/hci/commands/dynui_cmd.c index 557c5db5d..5aed3d034 100644 --- a/src/hci/commands/dynui_cmd.c +++ b/src/hci/commands/dynui_cmd.c @@ -116,6 +116,8 @@ struct item_options { unsigned int key; /** Use as default */ int is_default; + /** Value is a secret */ + int is_secret; /** Use as a separator */ int is_gap; }; @@ -128,6 +130,8 @@ static struct option_descriptor item_opts[] = { struct item_options, key, parse_key ), OPTION_DESC ( "default", 'd', no_argument, struct item_options, is_default, parse_flag ), + OPTION_DESC ( "secret", 's', no_argument, + struct item_options, is_secret, parse_flag ), OPTION_DESC ( "gap", 'g', no_argument, struct item_options, is_gap, parse_flag ), }; @@ -177,6 +181,8 @@ static int item_exec ( int argc, char **argv ) { /* Add dynamic user interface item */ if ( opts.is_default ) flags |= DYNUI_DEFAULT; + if ( opts.is_secret ) + flags |= DYNUI_SECRET; item = add_dynui_item ( dynui, name, ( text ? text : "" ), flags, opts.key ); if ( ! item ) { diff --git a/src/include/ipxe/dynui.h b/src/include/ipxe/dynui.h index 5ba007032..5029e5850 100644 --- a/src/include/ipxe/dynui.h +++ b/src/include/ipxe/dynui.h @@ -44,6 +44,9 @@ struct dynamic_item { /** Dynamic user interface item is default selection */ #define DYNUI_DEFAULT 0x0001 +/** Dynamic user interface item represents a secret */ +#define DYNUI_SECRET 0x0002 + extern struct dynamic_ui * create_dynui ( const char *name, const char *title ); extern struct dynamic_item * add_dynui_item ( struct dynamic_ui *dynui, const char *name, |