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;