Changes in kernel/generic/src/console/kconsole.c [690ad20:583c2a3] in mainline
- File:
-
- 1 edited
-
kernel/generic/src/console/kconsole.c (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/console/kconsole.c
r690ad20 r583c2a3 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. … … 84 85 SPINLOCK_INITIALIZE(cmd_lock); /**< Lock protecting command list. */ 85 86 LIST_INITIALIZE(cmd_list); /**< Command list. */ 86 87 #define MAX_SYMBOL_NAME 6488 87 89 88 static char32_t history[KCONSOLE_HISTORY][MAX_CMDLINE] = { }; … … 157 156 158 157 /** 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); 158 _NO_TRACE static void print_cc(char32_t ch, size_t count) 159 { 160 size_t i; 161 for (i = 0; i < count; i++) 162 putuchar(ch); 165 163 } 166 164 … … 347 345 if (ch == '\n') { 348 346 /* Enter */ 349 put str("\n", 1);347 putuchar(ch); 350 348 break; 351 349 } … … 358 356 if (wstr_remove(current, position - 1)) { 359 357 position--; 360 put str("\b", 1);358 putuchar('\b'); 361 359 printf("%ls ", current + position); 362 360 print_cc('\b', wstr_length(current) - position + 1); … … 368 366 /* Tab completion */ 369 367 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; 368 /* Move to the end of the word */ 369 for (; (current[position] != 0) && (!isspace(current[position])); 370 position++) 371 putuchar(current[position]); 379 372 380 373 /* … … 435 428 */ 436 429 size_t off = 0; 437 for (size_t i = 0; (ch = str_decode(tmp, &off, STR_NO_LIMIT)); i++) 430 size_t i = 0; 431 while ((ch = str_decode(tmp, &off, STR_NO_LIMIT)) != 0) { 438 432 if (!wstr_linsert(current, ch, position + i, MAX_CMDLINE)) 439 433 break; 434 435 i++; 436 } 440 437 441 438 if (found > 1) { … … 467 464 /* Left */ 468 465 if (position > 0) { 469 put str("\b", 1);466 putuchar('\b'); 470 467 position--; 471 468 } … … 476 473 /* Right */ 477 474 if (position < wstr_length(current)) { 478 p rintf("%lc",current[position]);475 putuchar(current[position]); 479 476 position++; 480 477 } … … 600 597 /* It's a number - convert it */ 601 598 uint64_t value; 602 c onst char *end;599 char *end; 603 600 errno_t rc = str_uint64_t(text, &end, 0, false, &value); 604 601 if (end != text + len)
Note:
See TracChangeset
for help on using the changeset viewer.
