diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2009-03-02 17:14:46 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2009-03-02 17:14:46 +0000 |
commit | f57412d689f445d6786167aac98dfde81c90ea12 (patch) | |
tree | 412635fca540b14d5139e91a039f78f70a7cf3d8 /mdoc.c | |
parent | aaee43f80d524f98453fc13d60a657085867666f (diff) | |
download | mandoc-f57412d689f445d6786167aac98dfde81c90ea12.tar.gz |
Added new old escape sequence \*[nn].
Initial correct .Bd support (still only text in literal displays).
Symbols put into tables (character-encoding).
Diffstat (limited to 'mdoc.c')
-rw-r--r-- | mdoc.c | 21 |
1 files changed, 16 insertions, 5 deletions
@@ -180,6 +180,12 @@ mdoc_endparse(struct mdoc *mdoc) } +/* + * Main line-parsing routine. If the line is a macro-line (started with + * a '.' control character), then pass along to the parser, which parses + * subsequent macros until the end of line. If normal text, simply + * append the entire line to the chain. + */ int mdoc_parseln(struct mdoc *mdoc, int line, char *buf) { @@ -191,20 +197,24 @@ mdoc_parseln(struct mdoc *mdoc, int line, char *buf) mdoc->linetok = 0; - /* - * FIXME: should puke on whitespace in non-literal displays. - */ - if ('.' != *buf) { + /* + * Free-form text. Not allowed in the prologue. + */ if (SEC_PROLOGUE == mdoc->lastnamed) return(mdoc_perr(mdoc, line, 0, - "no text in document prologue")); + "no text in prologue")); + if ( ! mdoc_word_alloc(mdoc, line, 0, buf)) return(0); mdoc->next = MDOC_NEXT_SIBLING; return(1); } + /* + * Control-character detected. Begin the parsing sequence. + */ + if (buf[1] && '\\' == buf[1]) if (buf[2] && '\"' == buf[2]) return(1); @@ -238,6 +248,7 @@ mdoc_parseln(struct mdoc *mdoc, int line, char *buf) mdoc->flags |= MDOC_HALT; return(0); } + return(1); } |