From d9a15b8af7da2bc27d4d55ee745242f5b4e39071 Mon Sep 17 00:00:00 2001 From: default Date: Sun, 16 Oct 2022 18:03:28 +0200 Subject: Attachments are now starting to get real. --- xs_io.h | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'xs_io.h') diff --git a/xs_io.h b/xs_io.h index 62af82c..ca243ad 100644 --- a/xs_io.h +++ b/xs_io.h @@ -59,26 +59,29 @@ d_char *xs_readline(FILE *f) d_char *xs_read(FILE *f, int *sz) /* reads up to size bytes from f */ { - d_char *s; - int size = *sz; - int rdsz = 0; + d_char *s = NULL; + int size = *sz; + int rdsz = 0; errno = 0; - s = xs_str_new(NULL); - while (size > 0 && !feof(f)) { - char tmp[2048]; + char tmp[4096]; int n, r; if ((n = sizeof(tmp)) > size) n = size; r = fread(tmp, 1, n, f); - s = xs_append_m(s, tmp, r); - size -= r; + /* open room */ + s = xs_realloc(s, rdsz + r); + + /* copy read data */ + memcpy(s + rdsz, tmp, r); + rdsz += r; + size -= r; } *sz = rdsz; -- cgit v1.2.3