version 1.1, 2008/11/30 21:41:35 |
version 1.2, 2008/11/30 23:05:57 |
Line 74 static int mbuf_putstring(struct md_xml *, |
|
Line 74 static int mbuf_putstring(struct md_xml *, |
|
const char *); |
const char *); |
static int mbuf_nputstring(struct md_xml *, |
static int mbuf_nputstring(struct md_xml *, |
const char *, size_t); |
const char *, size_t); |
|
static int mbuf_puts(struct md_xml *, const char *); |
|
static int mbuf_nputs(struct md_xml *, |
|
const char *, size_t); |
|
|
|
|
static int |
static int |
Line 87 mbuf_putstring(struct md_xml *p, const char *buf) |
|
Line 90 mbuf_putstring(struct md_xml *p, const char *buf) |
|
static int |
static int |
mbuf_nputstring(struct md_xml *p, const char *buf, size_t sz) |
mbuf_nputstring(struct md_xml *p, const char *buf, size_t sz) |
{ |
{ |
|
size_t i; |
|
|
|
for (i = 0; i < sz; i++) { |
|
switch (buf[i]) { |
|
case ('&'): |
|
if ( ! md_buf_puts(p->mbuf, "&", 5)) |
|
return(0); |
|
p->pos += 5; |
|
break; |
|
case ('"'): |
|
if ( ! md_buf_puts(p->mbuf, """, 6)) |
|
return(0); |
|
p->pos += 6; |
|
break; |
|
default: |
|
if ( ! md_buf_putchar(p->mbuf, buf[i])) |
|
return(0); |
|
p->pos++; |
|
break; |
|
} |
|
} |
|
return(1); |
|
} |
|
|
|
|
|
static int |
|
mbuf_nputs(struct md_xml *p, const char *buf, size_t sz) |
|
{ |
|
|
p->pos += sz; |
p->pos += sz; |
return(md_buf_puts(p->mbuf, buf, sz)); |
return(md_buf_puts(p->mbuf, buf, sz)); |
} |
} |
|
|
|
|
static int |
static int |
|
mbuf_puts(struct md_xml *p, const char *buf) |
|
{ |
|
|
|
return(mbuf_nputs(p, buf, strlen(buf))); |
|
} |
|
|
|
|
|
static int |
mbuf_indent(struct md_xml *p) |
mbuf_indent(struct md_xml *p) |
{ |
{ |
size_t i; |
size_t i; |
Line 169 mbuf_data(struct md_xml *p, int space, char *buf) |
|
Line 208 mbuf_data(struct md_xml *p, int space, char *buf) |
|
if ( ! mbuf_indent(p)) |
if ( ! mbuf_indent(p)) |
return(0); |
return(0); |
} else if (space) { |
} else if (space) { |
if ( ! mbuf_nputstring(p, " ", 1)) |
if ( ! mbuf_nputs(p, " ", 1)) |
return(0); |
return(0); |
} |
} |
|
|
Line 253 roffhead(void *arg) |
|
Line 292 roffhead(void *arg) |
|
assert(arg); |
assert(arg); |
p = (struct md_xml *)arg; |
p = (struct md_xml *)arg; |
|
|
if ( ! mbuf_putstring(p, "<?xml version=\"1.0\" " |
if ( ! mbuf_puts(p, "<?xml version=\"1.0\" " |
"encoding=\"UTF-8\"?>\n")) |
"encoding=\"UTF-8\"?>\n")) |
return(0); |
return(0); |
if ( ! mbuf_nputstring(p, "<block:mdoc>", 12)) |
if ( ! mbuf_puts(p, "<mdoc xmlns:block=\"block\" " |
|
"xmlns:special=\"special\" " |
|
"xmlns:inline=\"inline\">")) |
return(0); |
return(0); |
|
|
p->indent++; |
p->indent++; |
Line 276 rofftail(void *arg) |
|
Line 317 rofftail(void *arg) |
|
if (0 != p->pos && ! mbuf_newline(p)) |
if (0 != p->pos && ! mbuf_newline(p)) |
return(0); |
return(0); |
|
|
if ( ! mbuf_nputstring(p, "</block:mdoc>", 13)) |
if ( ! mbuf_puts(p, "</mdoc>")) |
return(0); |
return(0); |
|
|
p->last = MD_BLKOUT; |
p->last = MD_BLKOUT; |
Line 311 roffblkin(void *arg, int tok, int *argc, char **argv) |
|
Line 352 roffblkin(void *arg, int tok, int *argc, char **argv) |
|
} else if ( ! mbuf_indent(p)) |
} else if ( ! mbuf_indent(p)) |
return(0); |
return(0); |
|
|
if ( ! mbuf_nputstring(p, "<", 1)) |
if ( ! mbuf_nputs(p, "<", 1)) |
return(0); |
return(0); |
if ( ! mbuf_nputstring(p, "block:", 6)) |
if ( ! mbuf_nputs(p, "block:", 6)) |
return(0); |
return(0); |
if ( ! mbuf_putstring(p, toknames[tok])) |
if ( ! mbuf_puts(p, toknames[tok])) |
return(0); |
return(0); |
|
|
|
/* FIXME: xml won't like standards args (e.g., p1003.1-90). */ |
|
|
for (i = 0; ROFF_ARGMAX != argc[i]; i++) { |
for (i = 0; ROFF_ARGMAX != argc[i]; i++) { |
if ( ! mbuf_nputstring(p, " ", 1)) |
if ( ! mbuf_nputs(p, " ", 1)) |
return(0); |
return(0); |
if ( ! mbuf_putstring(p, tokargnames[argc[i]])) |
if ( ! mbuf_puts(p, tokargnames[argc[i]])) |
return(0); |
return(0); |
if ( ! mbuf_nputstring(p, "=\"", 2)) |
if ( ! mbuf_nputs(p, "=\"", 2)) |
return(0); |
return(0); |
if ( ! mbuf_putstring(p, argv[i] ? argv[i] : "true")) |
if ( ! mbuf_putstring(p, argv[i] ? argv[i] : "true")) |
return(0); |
return(0); |
if ( ! mbuf_nputstring(p, "\"", 1)) |
if ( ! mbuf_nputs(p, "\"", 1)) |
return(0); |
return(0); |
} |
} |
|
|
if ( ! mbuf_nputstring(p, ">", 1)) |
if ( ! mbuf_nputs(p, ">", 1)) |
return(0); |
return(0); |
|
|
p->last = MD_BLKIN; |
p->last = MD_BLKIN; |
Line 358 roffblkout(void *arg, int tok) |
|
Line 401 roffblkout(void *arg, int tok) |
|
} else if ( ! mbuf_indent(p)) |
} else if ( ! mbuf_indent(p)) |
return(0); |
return(0); |
|
|
if ( ! mbuf_nputstring(p, "</", 2)) |
if ( ! mbuf_nputs(p, "</", 2)) |
return(0); |
return(0); |
if ( ! mbuf_nputstring(p, "block:", 6)) |
if ( ! mbuf_nputs(p, "block:", 6)) |
return(0); |
return(0); |
if ( ! mbuf_putstring(p, toknames[tok])) |
if ( ! mbuf_puts(p, toknames[tok])) |
return(0); |
return(0); |
if ( ! mbuf_nputstring(p, ">", 1)) |
if ( ! mbuf_nputs(p, ">", 1)) |
return(0); |
return(0); |
|
|
p->last = MD_BLKOUT; |
p->last = MD_BLKOUT; |
Line 396 roffin(void *arg, int tok, int *argc, char **argv) |
|
Line 439 roffin(void *arg, int tok, int *argc, char **argv) |
|
case (MD_TEXT): |
case (MD_TEXT): |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
case (MD_OUT): |
case (MD_OUT): |
if ( ! mbuf_nputstring(p, " ", 1)) |
if ( ! mbuf_nputs(p, " ", 1)) |
return(0); |
return(0); |
break; |
break; |
default: |
default: |
Line 407 roffin(void *arg, int tok, int *argc, char **argv) |
|
Line 450 roffin(void *arg, int tok, int *argc, char **argv) |
|
|
|
p->last = MD_IN; |
p->last = MD_IN; |
|
|
if ( ! mbuf_nputstring(p, "<", 1)) |
if ( ! mbuf_nputs(p, "<", 1)) |
return(0); |
return(0); |
if ( ! mbuf_nputstring(p, "inline:", 7)) |
if ( ! mbuf_nputs(p, "inline:", 7)) |
return(0); |
return(0); |
if ( ! mbuf_putstring(p, toknames[tok])) |
if ( ! mbuf_puts(p, toknames[tok])) |
return(0); |
return(0); |
|
|
for (i = 0; ROFF_ARGMAX != argc[i]; i++) { |
for (i = 0; ROFF_ARGMAX != argc[i]; i++) { |
if ( ! mbuf_nputstring(p, " ", 1)) |
if ( ! mbuf_nputs(p, " ", 1)) |
return(0); |
return(0); |
if ( ! mbuf_putstring(p, tokargnames[argc[i]])) |
if ( ! mbuf_puts(p, tokargnames[argc[i]])) |
return(0); |
return(0); |
if ( ! mbuf_nputstring(p, "=\"", 2)) |
if ( ! mbuf_nputs(p, "=\"", 2)) |
return(0); |
return(0); |
if ( ! mbuf_putstring(p, argv[i] ? argv[i] : "true")) |
if ( ! mbuf_putstring(p, argv[i] ? argv[i] : "true")) |
return(0); |
return(0); |
if ( ! mbuf_nputstring(p, "\"", 1)) |
if ( ! mbuf_nputs(p, "\"", 1)) |
return(0); |
return(0); |
} |
} |
return(mbuf_nputstring(p, ">", 1)); |
return(mbuf_nputs(p, ">", 1)); |
} |
} |
|
|
|
|
Line 443 roffout(void *arg, int tok) |
|
Line 486 roffout(void *arg, int tok) |
|
|
|
p->last = MD_OUT; |
p->last = MD_OUT; |
|
|
if ( ! mbuf_nputstring(p, "</", 2)) |
if ( ! mbuf_nputs(p, "</", 2)) |
return(0); |
return(0); |
if ( ! mbuf_nputstring(p, "inline:", 7)) |
if ( ! mbuf_nputs(p, "inline:", 7)) |
return(0); |
return(0); |
if ( ! mbuf_putstring(p, toknames[tok])) |
if ( ! mbuf_puts(p, toknames[tok])) |
return(0); |
return(0); |
return(mbuf_nputstring(p, ">", 1)); |
return(mbuf_nputs(p, ">", 1)); |
} |
} |
|
|
|
|