Changes in / [fb75979:a65ccc4] in mainline
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
common/include/str.h
rfb75979 ra65ccc4 149 149 extern char *str_tok(char *, const char *, char **); 150 150 151 extern size_t str_sanitize(char *, size_t, uint8_t); 152 151 153 extern errno_t str_uint8_t(const char *, const char **, unsigned int, bool, 152 154 uint8_t *); … … 165 167 extern void bin_order_suffix(const uint64_t, uint64_t *, const char **, bool); 166 168 167 extern size_t str_sanitize(char *str, size_t n, uint8_t replacement);168 169 169 /* 170 170 * TODO: Get rid of this. -
common/str.c
rfb75979 ra65ccc4 547 547 548 548 for (; n > 0 && b[0]; b++, n--) { 549 if (b[0] < ' ') { 550 /* C0 control codes */ 551 b[0] = replacement; 552 count++; 553 continue; 554 } 555 549 556 int cont = _continuation_bytes(b[0]); 550 557 if (__builtin_expect(cont, 0) == 0) … … 584 591 } 585 592 593 bool c1_control = (b[0] == 0b11000010 && b[1] < 0b10100000); 594 if (cont == 1 && c1_control) { 595 b[0] = replacement; 596 count++; 597 continue; 598 } 599 586 600 /* 0b1110!!!! 0b10!xxxxx 0b10xxxxxx */ 587 601 if (cont == 2 && !(b[0] & 0b00001111) && !(b[1] & 0b00100000)) { … … 619 633 } 620 634 635 /** Replaces any byte that's not part of a complete valid UTF-8 character 636 * encoding with a replacement byte. 637 * Also replaces C0 and C1 control codes. 638 */ 621 639 size_t str_sanitize(char *str, size_t n, uint8_t replacement) 622 640 { -
kernel/generic/src/console/console.c
rfb75979 ra65ccc4 384 384 data[size] = 0; 385 385 386 uint8_t substitute = '\x1a'; 387 str_sanitize(data, size, substitute); 388 386 389 switch (cmd) { 387 390 case KIO_WRITE:
Note:
See TracChangeset
for help on using the changeset viewer.