| 
				
			 | 
			
			
				
				@@ -18,6 +18,7 @@ 
			 | 
		
		
	
		
			
			| 
				18
			 | 
			
				18
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				19
			 | 
			
				19
			 | 
			
			
				
				 #include <assert.h> 
			 | 
		
		
	
		
			
			| 
				20
			 | 
			
				20
			 | 
			
			
				
				 #include <string.h> 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				21
			 | 
			
			
				
				+#include <gpxe/keys.h> 
			 | 
		
		
	
		
			
			| 
				21
			 | 
			
				22
			 | 
			
			
				
				 #include <gpxe/editstring.h> 
			 | 
		
		
	
		
			
			| 
				22
			 | 
			
				23
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				23
			 | 
			
				24
			 | 
			
			
				
				 /** @file 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -124,6 +125,7 @@ static void kill_eol ( struct edit_string *string ) { 
			 | 
		
		
	
		
			
			| 
				124
			 | 
			
				125
			 | 
			
			
				
				  */ 
			 | 
		
		
	
		
			
			| 
				125
			 | 
			
				126
			 | 
			
			
				
				 int edit_string ( struct edit_string *string, int key ) { 
			 | 
		
		
	
		
			
			| 
				126
			 | 
			
				127
			 | 
			
			
				
				 	int retval = 0; 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				128
			 | 
			
			
				
				+	size_t len = strlen ( string->buf ); 
			 | 
		
		
	
		
			
			| 
				127
			 | 
			
				129
			 | 
			
			
				
				  
			 | 
		
		
	
		
			
			| 
				128
			 | 
			
				130
			 | 
			
			
				
				 	/* Prepare edit history */ 
			 | 
		
		
	
		
			
			| 
				129
			 | 
			
				131
			 | 
			
			
				
				 	string->last_cursor = string->cursor; 
			 | 
		
		
	
	
		
			
			| 
				
			 | 
			
			
				
				@@ -135,33 +137,39 @@ int edit_string ( struct edit_string *string, int key ) { 
			 | 
		
		
	
		
			
			| 
				135
			 | 
			
				137
			 | 
			
			
				
				 		/* Printable character; insert at current position */ 
			 | 
		
		
	
		
			
			| 
				136
			 | 
			
				138
			 | 
			
			
				
				 		insert_character ( string, key ); 
			 | 
		
		
	
		
			
			| 
				137
			 | 
			
				139
			 | 
			
			
				
				 	} else switch ( key ) { 
			 | 
		
		
	
		
			
			| 
				138
			 | 
			
				
			 | 
			
			
				
				-	case 0x08: /* Ctrl-H */ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				140
			 | 
			
			
				
				+	case KEY_BACKSPACE: 
			 | 
		
		
	
		
			
			| 
				139
			 | 
			
				141
			 | 
			
			
				
				 		/* Backspace */ 
			 | 
		
		
	
		
			
			| 
				140
			 | 
			
				142
			 | 
			
			
				
				 		backspace ( string ); 
			 | 
		
		
	
		
			
			| 
				141
			 | 
			
				143
			 | 
			
			
				
				 		break; 
			 | 
		
		
	
		
			
			| 
				142
			 | 
			
				
			 | 
			
			
				
				-	case 0x04: /* Ctrl-D */ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				144
			 | 
			
			
				
				+	case KEY_DC: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				145
			 | 
			
			
				
				+	case CTRL_D: 
			 | 
		
		
	
		
			
			| 
				143
			 | 
			
				146
			 | 
			
			
				
				 		/* Delete character */ 
			 | 
		
		
	
		
			
			| 
				144
			 | 
			
				147
			 | 
			
			
				
				 		delete_character ( string ); 
			 | 
		
		
	
		
			
			| 
				145
			 | 
			
				148
			 | 
			
			
				
				 		break; 
			 | 
		
		
	
		
			
			| 
				146
			 | 
			
				
			 | 
			
			
				
				-	case 0x0b: /* Ctrl-K */ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				149
			 | 
			
			
				
				+	case CTRL_K: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				150
			 | 
			
			
				
				+		/* Delete to end of line */ 
			 | 
		
		
	
		
			
			| 
				147
			 | 
			
				151
			 | 
			
			
				
				 		kill_eol ( string ); 
			 | 
		
		
	
		
			
			| 
				148
			 | 
			
				152
			 | 
			
			
				
				 		break; 
			 | 
		
		
	
		
			
			| 
				149
			 | 
			
				
			 | 
			
			
				
				-	case 0x01: /* Ctrl-A */ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				153
			 | 
			
			
				
				+	case KEY_HOME: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				154
			 | 
			
			
				
				+	case CTRL_A: 
			 | 
		
		
	
		
			
			| 
				150
			 | 
			
				155
			 | 
			
			
				
				 		/* Start of line */ 
			 | 
		
		
	
		
			
			| 
				151
			 | 
			
				156
			 | 
			
			
				
				 		string->cursor = 0; 
			 | 
		
		
	
		
			
			| 
				152
			 | 
			
				157
			 | 
			
			
				
				 		break; 
			 | 
		
		
	
		
			
			| 
				153
			 | 
			
				
			 | 
			
			
				
				-	case 0x05: /* Ctrl-E */ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				158
			 | 
			
			
				
				+	case KEY_END: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				159
			 | 
			
			
				
				+	case CTRL_E: 
			 | 
		
		
	
		
			
			| 
				154
			 | 
			
				160
			 | 
			
			
				
				 		/* End of line */ 
			 | 
		
		
	
		
			
			| 
				155
			 | 
			
				
			 | 
			
			
				
				-		string->cursor = strlen ( string->buf ); 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				161
			 | 
			
			
				
				+		string->cursor = len; 
			 | 
		
		
	
		
			
			| 
				156
			 | 
			
				162
			 | 
			
			
				
				 		break; 
			 | 
		
		
	
		
			
			| 
				157
			 | 
			
				
			 | 
			
			
				
				-	case 0x02: /* Ctrl-B */ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				163
			 | 
			
			
				
				+	case KEY_LEFT: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				164
			 | 
			
			
				
				+	case CTRL_B: 
			 | 
		
		
	
		
			
			| 
				158
			 | 
			
				165
			 | 
			
			
				
				 		/* Cursor left */ 
			 | 
		
		
	
		
			
			| 
				159
			 | 
			
				166
			 | 
			
			
				
				 		if ( string->cursor > 0 ) 
			 | 
		
		
	
		
			
			| 
				160
			 | 
			
				167
			 | 
			
			
				
				 			string->cursor--; 
			 | 
		
		
	
		
			
			| 
				161
			 | 
			
				168
			 | 
			
			
				
				 		break; 
			 | 
		
		
	
		
			
			| 
				162
			 | 
			
				
			 | 
			
			
				
				-	case 0x06: /* Ctrl-F */ 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				169
			 | 
			
			
				
				+	case KEY_RIGHT: 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				170
			 | 
			
			
				
				+	case CTRL_F: 
			 | 
		
		
	
		
			
			| 
				163
			 | 
			
				171
			 | 
			
			
				
				 		/* Cursor right */ 
			 | 
		
		
	
		
			
			| 
				164
			 | 
			
				
			 | 
			
			
				
				-		if ( string->cursor < ( string->len - 1 ) ) 
			 | 
		
		
	
		
			
			| 
				
			 | 
			
				172
			 | 
			
			
				
				+		if ( string->cursor < len ) 
			 | 
		
		
	
		
			
			| 
				165
			 | 
			
				173
			 | 
			
			
				
				 			string->cursor++; 
			 | 
		
		
	
		
			
			| 
				166
			 | 
			
				174
			 | 
			
			
				
				 		break; 
			 | 
		
		
	
		
			
			| 
				167
			 | 
			
				175
			 | 
			
			
				
				 	default: 
			 |