1 #ifndef _IPXE_EDITSTRING_H 2 #define _IPXE_EDITSTRING_H 3 4 /** @file 5 * 6 * Editable strings 7 * 8 */ 9 10 FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); 11 12 /** An editable string */ 13 struct edit_string { 14 /** Buffer for string */ 15 char *buf; 16 /** Size of buffer (including terminating NUL) */ 17 size_t len; 18 /** Cursor position */ 19 unsigned int cursor; 20 21 /* The following items are the edit history */ 22 23 /** Last cursor position */ 24 unsigned int last_cursor; 25 /** Start of modified portion of string */ 26 unsigned int mod_start; 27 /** End of modified portion of string */ 28 unsigned int mod_end; 29 }; 30 31 /** 32 * Initialise editable string 33 * 34 * @v string Editable string 35 * @v buf Buffer for string 36 * @v len Length of buffer 37 */ init_editstring(struct edit_string * string,char * buf,size_t len)38static inline void init_editstring ( struct edit_string *string, char *buf, 39 size_t len ) { 40 string->buf = buf; 41 string->len = len; 42 } 43 44 extern void replace_string ( struct edit_string *string, 45 const char *replacement ) __nonnull; 46 extern int edit_string ( struct edit_string *string, int key ) __nonnull; 47 48 #endif /* _IPXE_EDITSTRING_H */ 49