diff options
| -rw-r--r-- | main.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -40,7 +40,7 @@ txt_insert(DynStr *s, int i, Str ins) } int -txt_delete(DynStr *s, int i, int n) +txt_delete_byte(DynStr *s, int i, int n) { if (n > i) n = i; if (n > 0) { @@ -51,6 +51,17 @@ txt_delete(DynStr *s, int i, int n) } int +txt_delete(DynStr *s, int i, int n) +{ + while (n--) { + i = txt_delete_byte(s, i, 1); + while (i > 0 && (~s->v[i-1] & 0x80)) + i = txt_delete_byte(s, i, 1); + } + return i; +} + +int read_all(FILE *f, DynStr *out, Arena *a) { char buf[256]; |
