add support for image dimensions and fix a crash - smu - smu - simple markup (Markdown) processor (fork, fixes + features)
 (HTM) git clone git://git.codemadness.org/smu
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 84c908fb6f3609c25ea60c57c7009490c3c77044
 (DIR) parent 9f36d5824c364b655100d211cf156e7c580464c4
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Tue, 11 May 2021 01:47:41 +0200
       
       add support for image dimensions and fix a crash
       
       input for image dimensions:
       
       ![a](b =2x3) or
       ![a](b =2)
       
       input to crash:
       
       ![a](b ")
       
       Diffstat:
         M smu.c                               |      17 ++++++++++++++---
       
       1 file changed, 14 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/smu.c b/smu.c
       @@ -251,7 +251,9 @@ dolineprefix(const char *begin, const char *end, int newblock) {
        
        int
        dolink(const char *begin, const char *end, int newblock) {
       +        long width = 0, height = 0;
                int img, len, sep, parens_depth = 1;
       +        char *numend;
                const char *desc, *link, *p, *q, *descend, *linkend;
                const char *title = NULL, *titleend = NULL;
        
       @@ -288,9 +290,14 @@ dolink(const char *begin, const char *end, int newblock) {
                        title = p + 1;
                        /* strip trailing whitespace */
                        for(linkend = p; linkend > link && isspace(*(linkend - 1)); linkend--);
       -                for(titleend = q - 1; titleend > link && isspace(*(titleend)); titleend--);
       -                if(*titleend != sep) {
       -                        return 0;
       +                for(titleend = title; titleend < q && *titleend != sep; titleend++);
       +                for(p = titleend + 1; p < end && isspace(*p); p++);
       +                /* image dimensions */
       +                if(*p == '=') {
       +                        width = strtol(++p, &numend, 10);
       +                        p = numend;
       +                        if(*numend == 'x')
       +                                height = strtol(++p, &numend, 10);
                        }
                }
                else {
       @@ -315,6 +322,10 @@ dolink(const char *begin, const char *end, int newblock) {
                                hprintattr(title, titleend);
                                fputs("\" ", stdout);
                        }
       +                if(width > 0)
       +                        printf("width=\"%ld\" ", width);
       +                if(height > 0)
       +                        printf("height=\"%ld\" ", height);
                        fputs("/>", stdout);
                }
                else {