From b93304ffba392fef30dd302b2f048d27e021fdd7 Mon Sep 17 00:00:00 2001 From: "gottox@rootkit.lan" Date: Thu, 13 Dec 2007 14:12:58 +0100 Subject: [PATCH] two sequently paragraphs are now recognized properly --- cmarkdown.c | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/cmarkdown.c b/cmarkdown.c index 86134aa..7476c6f 100644 --- a/cmarkdown.c +++ b/cmarkdown.c @@ -12,7 +12,7 @@ #define BUFFERSIZE 512 #define LENGTH(x) sizeof(x)/sizeof(x[0]) #define ADDC(b,i) if((i + 1) % BUFFERSIZE == 0) \ - { b = realloc(b,((i + 1)+ BUFFERSIZE) * sizeof(b)); if(!b) eprint("Malloc failed."); }; b[i] + { b = realloc(b,((i + 1)+ BUFFERSIZE) * sizeof(b)); if(!b) eprint("Malloc failed."); }; b[i+1] = '\0'; b[i] typedef unsigned int (*Parser)(const char *, const char *); @@ -268,6 +268,8 @@ dolist(const char *begin, const char *end) { if(*p == '\n') { if(p[1] == '\n') { p++; + ADDC(buffer,i) = '\n'; + i++; run = 0; } q = p + 1; @@ -282,28 +284,21 @@ dolist(const char *begin, const char *end) { j = 0; } for(;q[j] == ' ' && j < indent; j++); - //printf("--%i %i--\n",j,indent); if(j == indent) { + ADDC(buffer,i) = '\n'; + i++; p += indent; run = 1; if(q[0] == ' ') p++; else break; - ADDC(buffer,i) = '\n'; - i++; } - ADDC(buffer,i) = '\n'; - i++; } ADDC(buffer,i) = *p; } - ADDC(buffer,i) = '\0'; - if(run == 0) - while(buffer[--i] == '\n') - buffer[i] = '\0'; fputs("
  • ",stdout); - process(buffer,buffer+i+1); + process(buffer,buffer+i); fputs("
  • \n",stdout); } puts(ul ? "" : ""); @@ -328,7 +323,7 @@ doparagraph(const char *begin, const char *end) { fputs("\n

    ",stdout); process(begin+2,p); fputs("

    \n",stdout); - return p - begin + 1; + return p - begin; } unsigned int @@ -468,13 +463,13 @@ process(const char *begin, const char *end) { if(affected) p += affected; else { - for(q = p; *q && *q == '\n' && q != end; q++); - if(q == end || !*q) - return; - else if(nohtml) - hprint(p,p+1); - else - putchar(*p); + for(q = p; *q == '\n' && q != end; q++); + if(q != end && *q) { + if(nohtml) + hprint(p,p+1); + else + putchar(*p); + } p++; } }