From e227c9c980f115f812dde257c6959d712745738c Mon Sep 17 00:00:00 2001 From: "gottox@rootkit.lan" Date: Tue, 11 Dec 2007 22:34:18 +0100 Subject: [PATCH] dolist and doparagraph are working better now --- cmarkdown.c | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/cmarkdown.c b/cmarkdown.c index e638f36..c43f95c 100644 --- a/cmarkdown.c +++ b/cmarkdown.c @@ -186,57 +186,68 @@ dolink(const char *begin, const char *end) { unsigned int dolist(const char *begin, const char *end) { unsigned int i,j,k,indent,run,ul; - const char *p; + const char *p, *q; char *buffer; - if(*begin != '\n' || !begin[1] || !begin[2]) + if(*begin != '\n') return 0; p = begin; + if(p[1] == '\n') + p++; + q = p; if(strchr("+-*",p[1]) && p[2] == ' ') { ul = 1; p++; } else { - for(p = begin + 1; *p && p != end && *p <= '0' && *p >= '9';p++); + for(p++; *p && p != end && *p <= '0' && *p >= '9';p++); p++; if(!*p || p[0] != '.' || p[1] != ' ') return 0; ul = 0; } for(p++; *p && p != end && *p == ' '; p++); - indent = p - begin - 1; + indent = p - q - 1; - if(!(buffer = malloc(end - begin+1))) + if(!(buffer = malloc(end - q+1))) eprint("Malloc failed."); puts(ul ? "" : ""); free(buffer); - return p - begin; + while(*(--p) == '\n'); + return p + 1 - begin; } unsigned int @@ -245,8 +256,8 @@ doparagraph(const char *begin, const char *end) { if(strncmp(begin,"\n\n",2)) return 0; - if(!(p = strstr(begin+2,"\n\n"))) - p = end; + if(!(p = strstr(begin + 2,"\n\n"))) + p = end - 1; if(p > end) return 0; if(p - begin - 2 <= 0) @@ -426,7 +437,6 @@ main(int argc, char *argv[]) { eprint("Malloc failed."); } } - process(buffer,buffer+strlen(buffer)); free(buffer); }