diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2009-03-19 18:30:26 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2009-03-19 18:30:26 +0000 |
commit | 94e75ede705a99ffe81500ad50e2c57d100be2a7 (patch) | |
tree | f7e6974185e2b7870f1ce1d670b531885937266f /main.c | |
parent | 36ca5446d30ace05d796a3cdb1c9781f41b090cc (diff) | |
download | mandoc-94e75ede705a99ffe81500ad50e2c57d100be2a7.tar.gz mandoc-94e75ede705a99ffe81500ad50e2c57d100be2a7.tar.zst mandoc-94e75ede705a99ffe81500ad50e2c57d100be2a7.zip |
Fixed mandoc read from stdin.
Added some more groff_chars.
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 36 |
1 files changed, 25 insertions, 11 deletions
@@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.3 2009/03/19 16:40:49 kristaps Exp $ */ +/* $Id: main.c,v 1.4 2009/03/19 18:30:26 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@openbsd.org> * @@ -165,19 +165,33 @@ main(int argc, char *argv[]) mdoc = mdoc_alloc(&wflags, fflags, &cb); - while (*argv) { - if ( ! file(&line, &linesz, &buf, &bufsz, *argv, mdoc)) - break; - if (outrun && ! (*outrun)(outdata, mdoc)) - break; + /* + * Loop around available files. + */ - /* Reset the parser for another file. */ - mdoc_reset(mdoc); - argv++; + if (NULL == *argv) { + c = fdesc(&line, &linesz, &buf, &bufsz, + "stdin", STDIN_FILENO, mdoc); + rc = 0; + if (c && NULL == outrun) + rc = 1; + else if (c && outrun && (*outrun)(outdata, mdoc)) + rc = 1; + } else { + while (*argv) { + c = file(&line, &linesz, &buf, + &bufsz, *argv, mdoc); + if ( ! c) + break; + if (outrun && ! (*outrun)(outdata, mdoc)) + break; + /* Reset the parser for another file. */ + mdoc_reset(mdoc); + argv++; + } + rc = NULL == *argv; } - rc = NULL == *argv; - if (buf) free(buf); if (line) |