mirror of
https://github.com/ipxe/ipxe
synced 2025-12-08 18:30:28 +03:00
[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>
This commit is contained in:
@@ -116,6 +116,8 @@ struct item_options {
|
|||||||
unsigned int key;
|
unsigned int key;
|
||||||
/** Use as default */
|
/** Use as default */
|
||||||
int is_default;
|
int is_default;
|
||||||
|
/** Value is a secret */
|
||||||
|
int is_secret;
|
||||||
/** Use as a separator */
|
/** Use as a separator */
|
||||||
int is_gap;
|
int is_gap;
|
||||||
};
|
};
|
||||||
@@ -128,6 +130,8 @@ static struct option_descriptor item_opts[] = {
|
|||||||
struct item_options, key, parse_key ),
|
struct item_options, key, parse_key ),
|
||||||
OPTION_DESC ( "default", 'd', no_argument,
|
OPTION_DESC ( "default", 'd', no_argument,
|
||||||
struct item_options, is_default, parse_flag ),
|
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,
|
OPTION_DESC ( "gap", 'g', no_argument,
|
||||||
struct item_options, is_gap, parse_flag ),
|
struct item_options, is_gap, parse_flag ),
|
||||||
};
|
};
|
||||||
@@ -177,6 +181,8 @@ static int item_exec ( int argc, char **argv ) {
|
|||||||
/* Add dynamic user interface item */
|
/* Add dynamic user interface item */
|
||||||
if ( opts.is_default )
|
if ( opts.is_default )
|
||||||
flags |= DYNUI_DEFAULT;
|
flags |= DYNUI_DEFAULT;
|
||||||
|
if ( opts.is_secret )
|
||||||
|
flags |= DYNUI_SECRET;
|
||||||
item = add_dynui_item ( dynui, name, ( text ? text : "" ), flags,
|
item = add_dynui_item ( dynui, name, ( text ? text : "" ), flags,
|
||||||
opts.key );
|
opts.key );
|
||||||
if ( ! item ) {
|
if ( ! item ) {
|
||||||
|
|||||||
@@ -44,6 +44,9 @@ struct dynamic_item {
|
|||||||
/** Dynamic user interface item is default selection */
|
/** Dynamic user interface item is default selection */
|
||||||
#define DYNUI_DEFAULT 0x0001
|
#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_ui * create_dynui ( const char *name, const char *title );
|
||||||
extern struct dynamic_item * add_dynui_item ( struct dynamic_ui *dynui,
|
extern struct dynamic_item * add_dynui_item ( struct dynamic_ui *dynui,
|
||||||
const char *name,
|
const char *name,
|
||||||
|
|||||||
Reference in New Issue
Block a user