Changes in kernel/generic/src/console/kconsole.c [690ad20:fdfb24e] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/console/kconsole.c
r690ad20 rfdfb24e 39 39 */ 40 40 41 #include <assert.h> 42 #include <console/kconsole.h> 43 #include <console/console.h> 44 #include <console/chardev.h> 45 #include <console/cmd.h> 46 #include <console/prompt.h> 47 #include <stdio.h> 48 #include <panic.h> 49 #include <typedefs.h> 41 50 #include <adt/list.h> 42 51 #include <arch.h> 43 #include <assert.h> 44 #include <console/chardev.h> 45 #include <console/cmd.h> 46 #include <console/console.h> 47 #include <console/kconsole.h> 48 #include <console/prompt.h> 52 #include <macros.h> 49 53 #include <debug.h> 54 #include <halt.h> 55 #include <str.h> 56 #include <sysinfo/sysinfo.h> 57 #include <symtab.h> 50 58 #include <errno.h> 51 #include <halt.h> 52 #include <macros.h> 53 #include <panic.h> 54 #include <stdio.h> 59 #include <putchar.h> 55 60 #include <stdlib.h> 56 #include <str.h>57 #include <symtab.h>58 #include <sysinfo/sysinfo.h>59 #include <typedefs.h>60 61 61 62 /** Simple kernel console. … … 157 158 158 159 /** Print count times a character */ 159 _NO_TRACE static void print_cc(char ch, size_t count) 160 { 161 // FIXME: only lock once 162 163 for (size_t i = 0; i < count; i++) 164 putstr(&ch, 1); 160 _NO_TRACE static void print_cc(char32_t ch, size_t count) 161 { 162 size_t i; 163 for (i = 0; i < count; i++) 164 putuchar(ch); 165 165 } 166 166 … … 347 347 if (ch == '\n') { 348 348 /* Enter */ 349 put str("\n", 1);349 putuchar(ch); 350 350 break; 351 351 } … … 358 358 if (wstr_remove(current, position - 1)) { 359 359 position--; 360 put str("\b", 1);360 putuchar('\b'); 361 361 printf("%ls ", current + position); 362 362 print_cc('\b', wstr_length(current) - position + 1); … … 368 368 /* Tab completion */ 369 369 370 size_t i = position; 371 while (current[i] && !isspace(current[i])) 372 i++; 373 374 char32_t stash = current[i]; 375 current[i] = 0; 376 printf("%ls", ¤t[position]); 377 current[i] = stash; 378 position = i; 370 /* Move to the end of the word */ 371 for (; (current[position] != 0) && (!isspace(current[position])); 372 position++) 373 putuchar(current[position]); 379 374 380 375 /* … … 435 430 */ 436 431 size_t off = 0; 437 for (size_t i = 0; (ch = str_decode(tmp, &off, STR_NO_LIMIT)); i++) 432 size_t i = 0; 433 while ((ch = str_decode(tmp, &off, STR_NO_LIMIT)) != 0) { 438 434 if (!wstr_linsert(current, ch, position + i, MAX_CMDLINE)) 439 435 break; 436 437 i++; 438 } 440 439 441 440 if (found > 1) { … … 467 466 /* Left */ 468 467 if (position > 0) { 469 put str("\b", 1);468 putuchar('\b'); 470 469 position--; 471 470 } … … 476 475 /* Right */ 477 476 if (position < wstr_length(current)) { 478 p rintf("%lc",current[position]);477 putuchar(current[position]); 479 478 position++; 480 479 }
Note:
See TracChangeset
for help on using the changeset viewer.