diff --git a/src/hci/mucurses/widgets/editbox.c b/src/hci/mucurses/widgets/editbox.c index 40e22d629..5d2ba56cc 100644 --- a/src/hci/mucurses/widgets/editbox.c +++ b/src/hci/mucurses/widgets/editbox.c @@ -46,8 +46,7 @@ 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 flags ) { memset ( box, 0, sizeof ( *box ) ); - box->string.buf = buf; - box->string.len = len; + init_editstring ( &box->string, buf, len ); box->string.cursor = strlen ( buf ); box->win = ( win ? win : stdscr ); box->row = row; diff --git a/src/hci/readline.c b/src/hci/readline.c index e76d2d09a..666ebf0c4 100644 --- a/src/hci/readline.c +++ b/src/hci/readline.c @@ -93,8 +93,7 @@ char * readline ( const char *prompt ) { printf ( "%s", prompt ); memset ( &string, 0, sizeof ( string ) ); - string.buf = buf; - string.len = sizeof ( buf ); + init_editstring ( &string, buf, sizeof ( buf ) ); buf[0] = '\0'; while ( 1 ) { diff --git a/src/include/ipxe/editstring.h b/src/include/ipxe/editstring.h index 5c1a18bea..26cb434cf 100644 --- a/src/include/ipxe/editstring.h +++ b/src/include/ipxe/editstring.h @@ -28,6 +28,19 @@ struct edit_string { unsigned int mod_end; }; +/** + * Initialise editable string + * + * @v string Editable string + * @v buf Buffer for string + * @v len Length of buffer + */ +static inline void init_editstring ( struct edit_string *string, char *buf, + size_t len ) { + string->buf = buf; + string->len = len; +} + extern int edit_string ( struct edit_string *string, int key ) __nonnull; #endif /* _IPXE_EDITSTRING_H */