commit 31aa9f59f584734a946777192b4a2ba28f7fdb6c from: Omar Polo date: Sat Mar 20 21:36:43 2021 UTC drop funny characters at reading-time commit - a5845bb51f3d8897129c98344197970f402ec5be commit + 31aa9f59f584734a946777192b4a2ba28f7fdb6c blob - e000a06edf698c34c0f6e2d5139a551c9af038b8 blob + 7ad4add47961309bb1c37e54bb4b1ab70cf17e5e --- parser.c +++ parser.c @@ -64,17 +64,25 @@ int parser_foreach_line(struct parser *p, const char *buf, size_t size, parsechunkfn fn) { - const char *b, *e; - size_t l, len; + char *b, *e; + unsigned int ch; + size_t i, l, len; - if (p->len == 0) { - b = buf; - len = size; - } else { - if (!parser_append(p, buf, size)) - return 0; - b = p->buf; - len = p->len; + if (!parser_append(p, buf, size)) + return 0; + b = p->buf; + len = p->len; + + /* drop every "funny" ASCII character */ + for (i = 0; i < len; ) { + ch = b[i]; + if ((ch >= ' ' || ch == '\n' || ch == '\t') + && ch != 127) { /* del */ + ++i; + continue; + } + memmove(&b[i], &b[i+1], len - i); + len--; } while (len > 0) {