aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-07-20 15:26:41 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-07-20 15:26:41 +0000
commitc257c8a3f34243f4c544a843c2ec61577f07aabe (patch)
treeade03e4176844a2393bdd330d50b88b375366c64
parent0d1c0a686376f865341ab91184438f959f98dc68 (diff)
downloadmandoc-c257c8a3f34243f4c544a843c2ec61577f07aabe.tar.gz
mandoc-c257c8a3f34243f4c544a843c2ec61577f07aabe.tar.zst
mandoc-c257c8a3f34243f4c544a843c2ec61577f07aabe.zip
For -Tlint, put parser messages on stdout instead of stderr.
Originally, naddy@ requested this in 2011 (or maybe even earlier). It was discussed with joerg@, kristaps@, naddy@, and espie@ in 2011, and everybody agreed in principle, but it was postponed because kristaps@ wanted to do some cleanup of the message system first. Meanwhile, message infrastructure was improved about a dozen times... This makes long, tedious commands like "mandoc -Tlint *.1 2>&1 | less" unnecessary and allows simple ones like "man -l -Tlint *.1".
-rw-r--r--TODO11
-rw-r--r--main.c17
-rw-r--r--mandoc.18
3 files changed, 16 insertions, 20 deletions
diff --git a/TODO b/TODO
index ed71dab0..e23f811b 100644
--- a/TODO
+++ b/TODO
@@ -1,6 +1,6 @@
************************************************************************
* Official mandoc TODO.
-* $Id: TODO,v 1.242 2017/07/20 12:54:02 schwarze Exp $
+* $Id: TODO,v 1.243 2017/07/20 15:26:41 schwarze Exp $
************************************************************************
Many issues are annotated for difficulty as follows:
@@ -436,11 +436,6 @@ are mere guesses, and some may be wrong.
Probably, this should be fixed somewhere in termp_it_pre(), not sure.
loc * exist ** algo ** size * imp **
-- In .Bl -tag, if a tag exceeds the right margin and must be continued
- on the next line, it must be indented by -width, not width+1;
- see "rule block|pass" in OpenBSD ifconfig(8).
- loc * exist *** algo ** size * imp **
-
- When the -width string contains macros, the macros must be rendered
before measuring the width, for example
.Bl -tag -width ".Dv message"
@@ -492,10 +487,6 @@ are mere guesses, and some may be wrong.
but just the overall format
loc ** exist ** algo *** size ** imp **
-- -Tlint parser errors and warnings to stdout
- to tech@mdocml, naddy@ Wed, 28 Sep 2011 11:21:46 +0200
- wait! kristaps@ Sun, 02 Oct 2011 17:12:52 +0200
-
************************************************************************
* documentation issues
************************************************************************
diff --git a/main.c b/main.c
index ef051e53..8b600bbc 100644
--- a/main.c
+++ b/main.c
@@ -1,4 +1,4 @@
-/* $Id: main.c,v 1.299 2017/07/04 14:40:38 schwarze Exp $ */
+/* $Id: main.c,v 1.300 2017/07/20 15:26:41 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2012, 2014-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -111,6 +111,7 @@ static const int sec_prios[] = {1, 4, 5, 8, 6, 3, 7, 2, 9};
static char help_arg[] = "help";
static char *help_argv[] = {help_arg, NULL};
static enum mandoclevel rc;
+static FILE *mmsg_stream;
int
@@ -190,6 +191,7 @@ main(int argc, char *argv[])
curp.mmin = MANDOCERR_MAX;
curp.outopts = &conf.output;
options = MPARSE_SO | MPARSE_UTF8 | MPARSE_LATIN1;
+ mmsg_stream = stderr;
use_pager = 1;
tag_files = NULL;
@@ -994,6 +996,7 @@ toptions(struct curparse *curp, char *arg)
else if (0 == strcmp(arg, "lint")) {
curp->outtype = OUTT_LINT;
curp->mmin = MANDOCERR_BASE;
+ mmsg_stream = stdout;
} else if (0 == strcmp(arg, "tree"))
curp->outtype = OUTT_TREE;
else if (0 == strcmp(arg, "man"))
@@ -1083,21 +1086,21 @@ mmsg(enum mandocerr t, enum mandoclevel lvl,
{
const char *mparse_msg;
- fprintf(stderr, "%s: %s:", getprogname(),
+ fprintf(mmsg_stream, "%s: %s:", getprogname(),
file == NULL ? "<stdin>" : file);
if (line)
- fprintf(stderr, "%d:%d:", line, col + 1);
+ fprintf(mmsg_stream, "%d:%d:", line, col + 1);
- fprintf(stderr, " %s", mparse_strlevel(lvl));
+ fprintf(mmsg_stream, " %s", mparse_strlevel(lvl));
if ((mparse_msg = mparse_strerror(t)) != NULL)
- fprintf(stderr, ": %s", mparse_msg);
+ fprintf(mmsg_stream, ": %s", mparse_msg);
if (msg)
- fprintf(stderr, ": %s", msg);
+ fprintf(mmsg_stream, ": %s", msg);
- fputc('\n', stderr);
+ fputc('\n', mmsg_stream);
}
static pid_t
diff --git a/mandoc.1 b/mandoc.1
index 88ea880f..1db4d325 100644
--- a/mandoc.1
+++ b/mandoc.1
@@ -1,4 +1,4 @@
-.\" $Id: mandoc.1,v 1.216 2017/07/07 16:20:30 schwarze Exp $
+.\" $Id: mandoc.1,v 1.217 2017/07/20 15:26:41 schwarze Exp $
.\"
.\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
.\" Copyright (c) 2012, 2014-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -15,7 +15,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: July 7 2017 $
+.Dd $Mdocdate: July 20 2017 $
.Dt MANDOC 1
.Os
.Sh NAME
@@ -238,7 +238,9 @@ See
.It Fl T Cm lint
Parse only: produce no output.
Implies
-.Fl W Cm all .
+.Fl W Cm all
+and redirects parser messages, which usually appear
+on standard error output, to standard output.
.It Fl T Cm locale
Encode output using the current locale.
This is the default.