renaming errstr to format
adding hprint
This commit is contained in:
parent
689de59fd2
commit
ef4e3f0f54
1 changed files with 25 additions and 15 deletions
34
cmarkdown.c
34
cmarkdown.c
|
@ -36,7 +36,8 @@ struct Tag {
|
||||||
char *tag;
|
char *tag;
|
||||||
};
|
};
|
||||||
|
|
||||||
void eprint(const char *errstr, ...); /* Prints error and exits */
|
void eprint(const char *format, ...); /* Prints error and exits */
|
||||||
|
void hprint(const char *begin, const char *end); /* escapes HTML and prints it to stdout*/
|
||||||
void process(const char *begin, const char *end);
|
void process(const char *begin, const char *end);
|
||||||
/* Processes range between begin and end with parser (NULL = all parsers) */
|
/* Processes range between begin and end with parser (NULL = all parsers) */
|
||||||
unsigned int doreplace(const char *begin, const char *end);
|
unsigned int doreplace(const char *begin, const char *end);
|
||||||
|
@ -74,22 +75,31 @@ struct Tag surround[] = {
|
||||||
char * replace[][2] = {
|
char * replace[][2] = {
|
||||||
{ "\n---\n", "\n<hr />\n" },
|
{ "\n---\n", "\n<hr />\n" },
|
||||||
{ "\n\n", "<br />\n<br />\n" },
|
{ "\n\n", "<br />\n<br />\n" },
|
||||||
{ "<", "<" },
|
|
||||||
{ ">", ">" },
|
|
||||||
{ "&", "&" },
|
|
||||||
{ "\"", """ },
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
eprint(const char *errstr, ...) {
|
eprint(const char *format, ...) {
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
va_start(ap, errstr);
|
va_start(ap, format);
|
||||||
vfprintf(stderr, errstr, ap);
|
vfprintf(stderr, format, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
hprint(const char *begin, const char *end) {
|
||||||
|
const char *p;
|
||||||
|
|
||||||
|
for(p = begin; p && p != end; p++) {
|
||||||
|
if(*p == '&') fputs("&",stdout);
|
||||||
|
else if(*p == '"') fputs(""",stdout);
|
||||||
|
else if(*p == '>') fputs(">",stdout);
|
||||||
|
else if(*p == '<') fputs("<",stdout);
|
||||||
|
else putchar(*p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int
|
unsigned int
|
||||||
dolink(const char *begin, const char *end) {
|
dolink(const char *begin, const char *end) {
|
||||||
int img;
|
int img;
|
||||||
|
@ -148,7 +158,7 @@ dosurround(const char *begin, const char *end) {
|
||||||
if(surround[i].process)
|
if(surround[i].process)
|
||||||
process(begin + strlen(surround[i].search), p);
|
process(begin + strlen(surround[i].search), p);
|
||||||
else
|
else
|
||||||
fwrite(begin + strlen(surround[i].search), p - begin - l, sizeof(char), stdout);
|
hprint(begin + strlen(surround[i].search), p);
|
||||||
printf("</%s>",surround[i].tag);
|
printf("</%s>",surround[i].tag);
|
||||||
return p - begin + l;
|
return p - begin + l;
|
||||||
}
|
}
|
||||||
|
@ -199,7 +209,7 @@ dolineprefix(const char *begin, const char *end) {
|
||||||
if(lineprefix[i].process)
|
if(lineprefix[i].process)
|
||||||
process(buffer,buffer+strlen(buffer));
|
process(buffer,buffer+strlen(buffer));
|
||||||
else
|
else
|
||||||
fwrite(buffer,strlen(buffer), sizeof(char),stdout);
|
hprint(buffer,buffer+strlen(buffer));
|
||||||
printf("</%s>",surround[i].tag);
|
printf("</%s>",surround[i].tag);
|
||||||
free(buffer);
|
free(buffer);
|
||||||
return p - begin;
|
return p - begin;
|
||||||
|
@ -226,7 +236,7 @@ dounderline(const char *begin, const char *end) {
|
||||||
if(underline[i].process)
|
if(underline[i].process)
|
||||||
process(begin+1, begin + l + 1);
|
process(begin+1, begin + l + 1);
|
||||||
else
|
else
|
||||||
fwrite(begin+1,l,sizeof(char),stdout);
|
hprint(begin+1, begin + l + 1);
|
||||||
printf("</%s>",underline[i].tag);
|
printf("</%s>",underline[i].tag);
|
||||||
return j + l + 2;
|
return j + l + 2;
|
||||||
}
|
}
|
||||||
|
@ -245,7 +255,7 @@ process(const char *begin, const char *end) {
|
||||||
for(i = 0; i < LENGTH(parsers) && affected == 0; i++)
|
for(i = 0; i < LENGTH(parsers) && affected == 0; i++)
|
||||||
affected = parsers[i](p, end);
|
affected = parsers[i](p, end);
|
||||||
if(affected == 0) {
|
if(affected == 0) {
|
||||||
putchar(*p);
|
hprint(p,p+1);
|
||||||
p++;
|
p++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Reference in a new issue