Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[editbox] Allow for password widgets that do not display their contents
  • Loading branch information
Michael Brown committed Feb 17, 2009
1 parent cff4191 commit 67ee41a
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
11 changes: 8 additions & 3 deletions src/hci/mucurses/widgets/editbox.c
Expand Up @@ -38,11 +38,11 @@
* @v row Row
* @v col Starting column
* @v width Width
*
* @v flags Flags
*/
void init_editbox ( struct edit_box *box, char *buf, size_t len,
WINDOW *win, unsigned int row, unsigned int col,
unsigned int width ) {
unsigned int width, unsigned int flags ) {
memset ( box, 0, sizeof ( *box ) );
box->string.buf = buf;
box->string.len = len;
Expand All @@ -51,6 +51,7 @@ void init_editbox ( struct edit_box *box, char *buf, size_t len,
box->row = row;
box->col = col;
box->width = width;
box->flags = flags;
}

/**
Expand Down Expand Up @@ -86,7 +87,11 @@ void draw_editbox ( struct edit_box *box ) {
len = ( strlen ( box->string.buf ) - first );
if ( len > width )
len = width;
memcpy ( buf, ( box->string.buf + first ), len );
if ( box->flags & EDITBOX_STARS ) {
memset ( buf, '*', len );
} else {
memcpy ( buf, ( box->string.buf + first ), len );
}

/* Print box content and move cursor */
if ( ! box->win )
Expand Down
2 changes: 1 addition & 1 deletion src/hci/tui/settings_ui.c
Expand Up @@ -123,7 +123,7 @@ static void load_setting ( struct setting_widget *widget ) {
init_editbox ( &widget->editbox, widget->value,
sizeof ( widget->value ), NULL, widget->row,
( widget->col + offsetof ( struct setting_row, value )),
sizeof ( ( ( struct setting_row * ) NULL )->value ) );
sizeof ( ( ( struct setting_row * ) NULL )->value ), 0);
}

/**
Expand Down
12 changes: 10 additions & 2 deletions src/include/gpxe/editbox.h
Expand Up @@ -24,14 +24,22 @@ struct edit_box {
unsigned int width;
/** First displayed character */
unsigned int first;
/** Flags */
unsigned int flags;
};

/** Editable text box widget flags */
enum edit_box_flags {
/** Show stars instead of contents (for password widgets) */
EDITBOX_STARS = 0x0001,
};

extern void init_editbox ( struct edit_box *box, char *buf, size_t len,
WINDOW *win, unsigned int row, unsigned int col,
unsigned int width )
unsigned int width, unsigned int flags )
__attribute__ (( nonnull (1, 2) ));
extern void draw_editbox ( struct edit_box *box ) __nonnull;
static inline int __pure edit_editbox ( struct edit_box *box, int key ) __nonnull;
static inline int edit_editbox ( struct edit_box *box, int key ) __nonnull;

/**
* Edit text box widget
Expand Down

0 comments on commit 67ee41a

Please sign in to comment.