diff options
Diffstat (limited to 'roms/ipxe/src/include/ipxe/editstring.h')
-rw-r--r-- | roms/ipxe/src/include/ipxe/editstring.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/roms/ipxe/src/include/ipxe/editstring.h b/roms/ipxe/src/include/ipxe/editstring.h new file mode 100644 index 00000000..2ef546a6 --- /dev/null +++ b/roms/ipxe/src/include/ipxe/editstring.h @@ -0,0 +1,48 @@ +#ifndef _IPXE_EDITSTRING_H +#define _IPXE_EDITSTRING_H + +/** @file + * + * Editable strings + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +/** An editable string */ +struct edit_string { + /** Buffer for string */ + char *buf; + /** Size of buffer (including terminating NUL) */ + size_t len; + /** Cursor position */ + unsigned int cursor; + + /* The following items are the edit history */ + + /** Last cursor position */ + unsigned int last_cursor; + /** Start of modified portion of string */ + unsigned int mod_start; + /** End of modified portion of 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 void replace_string ( struct edit_string *string, + const char *replacement ) __nonnull; +extern int edit_string ( struct edit_string *string, int key ) __nonnull; + +#endif /* _IPXE_EDITSTRING_H */ |