=================================================================== RCS file: /cvs/mandoc/Attic/xml.c,v retrieving revision 1.2 retrieving revision 1.5 diff -u -p -r1.2 -r1.5 --- mandoc/Attic/xml.c 2008/11/30 23:05:57 1.2 +++ mandoc/Attic/xml.c 2008/12/01 16:01:28 1.5 @@ -1,4 +1,4 @@ -/* $Id: xml.c,v 1.2 2008/11/30 23:05:57 kristaps Exp $ */ +/* $Id: xml.c,v 1.5 2008/12/01 16:01:28 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -28,7 +28,7 @@ #include "libmdocml.h" #include "private.h" -#define INDENT 4 +#define MAXINDENT 8 #define COLUMNS 60 #ifdef __linux__ /* FIXME */ @@ -40,7 +40,8 @@ enum md_tok { MD_BLKOUT, MD_IN, MD_OUT, - MD_TEXT + MD_TEXT, + MD_OVERRIDE }; struct md_xml { @@ -140,11 +141,11 @@ mbuf_indent(struct md_xml *p) assert(p->pos == 0); /* LINTED */ - for (i = 0; i < MIN(p->indent, INDENT); i++) + for (i = 0; i < MIN(p->indent, MAXINDENT); i++) if ( ! md_buf_putstring(p->mbuf, " ")) return(0); - p->pos += i * INDENT; + p->pos += i * 4; return(1); } @@ -194,7 +195,7 @@ mbuf_data(struct md_xml *p, int space, char *buf) return(0); if ( ! mbuf_nputstring(p, bufp, sz)) return(0); - if (p->indent * INDENT + sz >= COLUMNS) { + if (p->indent * MAXINDENT + sz >= COLUMNS) { if ( ! mbuf_newline(p)) return(0); continue; @@ -329,8 +330,19 @@ rofftail(void *arg) static int roffspecial(void *arg, int tok) { + struct md_xml *p; - /* FIXME */ + assert(arg); + p = (struct md_xml *)arg; + + switch (tok) { + case (ROFF_Ns): + p->last = MD_OVERRIDE; + break; + default: + break; + } + return(1); } @@ -481,6 +493,8 @@ roffout(void *arg, int tok) assert(arg); p = (struct md_xml *)arg; + /* Continue with a regular out token. */ + if (0 == p->pos && ! mbuf_indent(p)) return(0); @@ -543,3 +557,4 @@ roffdata(void *arg, int space, char *buf) p->last = MD_TEXT; return(1); } +