tHandle multiline base64 content - scribo - Email-based phlog generator
(HTM) git clone git://git.z3bra.org/scribo.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit f03f0be08b98eb5096d147a398c8ffe2a0cd0c77
(DIR) parent b87a87f72abf43c16c68ff9878b4612632222620
(HTM) Author: Willy Goiffon <dev@z3bra.org>
Date: Wed, 9 Sep 2020 22:43:08 +0200
Handle multiline base64 content
Diffstat:
M scribo.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
---
(DIR) diff --git a/scribo.c b/scribo.c
t@@ -215,22 +215,28 @@ write_8bit(FILE *in, FILE *out)
int
write_base64(FILE *in, FILE *out)
{
- size_t bufsiz;
+ size_t n, bufsiz;
ssize_t len;
- char *msg, *b64;
+ char *msg, *line, *b64;
b64 = NULL;
bufsiz = 0;
- while ((len = getline(&b64, &bufsiz, in)) > 0);
+ line = NULL;
+ n = 0;
+
+ while ((len = getline(&line, &n, in)) > 0) {
+ bufsiz += len;
+ b64 = realloc(b64, bufsiz);
+ strlcat(b64, line, bufsiz);
+ }
len = base64_unfold(b64, bufsiz);
len = base64_decode(&msg, (unsigned char *)b64, len);
- free(b64);
-
fwrite(msg, 1, len, out);
+ free(b64);
free(msg);
return 0;