Changes in / [fb75979:a65ccc4] in mainline


Ignore:
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • common/include/str.h

    rfb75979 ra65ccc4  
    149149extern char *str_tok(char *, const char *, char **);
    150150
     151extern size_t str_sanitize(char *, size_t, uint8_t);
     152
    151153extern errno_t str_uint8_t(const char *, const char **, unsigned int, bool,
    152154    uint8_t *);
     
    165167extern void bin_order_suffix(const uint64_t, uint64_t *, const char **, bool);
    166168
    167 extern size_t str_sanitize(char *str, size_t n, uint8_t replacement);
    168 
    169169/*
    170170 * TODO: Get rid of this.
  • common/str.c

    rfb75979 ra65ccc4  
    547547
    548548        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
    549556                int cont = _continuation_bytes(b[0]);
    550557                if (__builtin_expect(cont, 0) == 0)
     
    584591                }
    585592
     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
    586600                /* 0b1110!!!! 0b10!xxxxx 0b10xxxxxx */
    587601                if (cont == 2 && !(b[0] & 0b00001111) && !(b[1] & 0b00100000)) {
     
    619633}
    620634
     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 */
    621639size_t str_sanitize(char *str, size_t n, uint8_t replacement)
    622640{
  • kernel/generic/src/console/console.c

    rfb75979 ra65ccc4  
    384384                data[size] = 0;
    385385
     386                uint8_t substitute = '\x1a';
     387                str_sanitize(data, size, substitute);
     388
    386389                switch (cmd) {
    387390                case KIO_WRITE:
Note: See TracChangeset for help on using the changeset viewer.