=================================================================== RCS file: /cvs/mandoc/Attic/validate.c,v retrieving revision 1.2 retrieving revision 1.4 diff -u -p -r1.2 -r1.4 --- mandoc/Attic/validate.c 2008/11/29 16:11:42 1.2 +++ mandoc/Attic/validate.c 2008/11/30 18:50:44 1.4 @@ -1,4 +1,4 @@ -/* $Id: validate.c,v 1.2 2008/11/29 16:11:42 kristaps Exp $ */ +/* $Id: validate.c,v 1.4 2008/11/30 18:50:44 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -52,7 +52,7 @@ static void roffmsg(void *arg, enum roffmsg, static int roffhead(void *); static int rofftail(void *); static int roffin(void *, int, int *, char **); -static int roffdata(void *, char *); +static int roffdata(void *, int, char *); static int roffout(void *, int); static int roffblkin(void *, int, int *, char **); static int roffblkout(void *, int); @@ -60,7 +60,7 @@ static int roffspecial(void *, int); static int mbuf_newline(struct md_valid *); static int mbuf_indent(struct md_valid *); -static int mbuf_data(struct md_valid *, char *); +static int mbuf_data(struct md_valid *, int, char *); static int @@ -92,7 +92,7 @@ mbuf_newline(struct md_valid *p) static int -mbuf_data(struct md_valid *p, char *buf) +mbuf_data(struct md_valid *p, int space, char *buf) { size_t sz; char *bufp; @@ -133,10 +133,7 @@ mbuf_data(struct md_valid *p, char *buf) continue; } - if ( ! md_buf_putchar(p->mbuf, ' ')) - return(0); - - p->pos += sz + 1; + p->pos += sz; continue; } @@ -145,14 +142,14 @@ mbuf_data(struct md_valid *p, char *buf) return(0); if ( ! mbuf_indent(p)) return(0); - } + } else if (space) + if ( ! md_buf_putchar(p->mbuf, ' ')) + return(0); if ( ! md_buf_putstring(p->mbuf, bufp)) return(0); - if ( ! md_buf_putchar(p->mbuf, ' ')) - return(0); - p->pos += sz + 1; + p->pos += sz + (space ? 1 : 0); } return(1); @@ -227,13 +224,15 @@ roffhead(void *arg) assert(arg); p = (struct md_valid *)arg; - if ( ! md_buf_putstring(p->mbuf, "BEGIN")) + if ( ! md_buf_putstring(p->mbuf, "\n")) return(0); - p->indent++; - if ( ! mbuf_newline(p)) + + if ( ! md_buf_putstring(p->mbuf, "")) return(0); + p->indent++; - return(1); + return(mbuf_newline(p)); } @@ -247,10 +246,7 @@ rofftail(void *arg) if (0 != p->pos && ! mbuf_newline(p)) return(0); - - if ( ! md_buf_putstring(p->mbuf, "END\n")) - return(0); - return(1); + return(md_buf_putstring(p->mbuf, "\n")); } @@ -334,14 +330,15 @@ roffin(void *arg, int tok, int *argcp, char **argvp) if (0 == p->pos && ! mbuf_indent(p)) return(0); - if ( ! md_buf_putstring(p->mbuf, "<")) + /* FIXME: not always with a space... */ + if ( ! md_buf_putstring(p->mbuf, " <")) return(0); if ( ! md_buf_putstring(p->mbuf, toknames[tok])) return(0); if ( ! md_buf_putstring(p->mbuf, ">")) return(0); - p->pos += strlen(toknames[tok]) + 2; + p->pos += strlen(toknames[tok]) + 3; return(1); } @@ -362,10 +359,10 @@ roffout(void *arg, int tok) return(0); if ( ! md_buf_putstring(p->mbuf, toknames[tok])) return(0); - if ( ! md_buf_putstring(p->mbuf, "> ")) + if ( ! md_buf_putstring(p->mbuf, ">")) return(0); - p->pos += strlen(toknames[tok]) + 3; + p->pos += strlen(toknames[tok]) + 2; return(1); } @@ -406,11 +403,11 @@ roffmsg(void *arg, enum roffmsg lvl, static int -roffdata(void *arg, char *buf) +roffdata(void *arg, int space, char *buf) { struct md_valid *p; assert(arg); p = (struct md_valid *)arg; - return(mbuf_data(p, buf)); + return(mbuf_data(p, space, buf)); }