diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2017-01-09 01:37:03 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2017-01-09 01:37:03 +0000 |
commit | 6769f9615389aedbeaaf3a3c3153aec49c88954c (patch) | |
tree | 2c7cd176802f9d756266208308bdd826d26a0e86 | |
parent | 84899683ac7364eaba7f2fbd1ff194612d1a7db0 (diff) | |
download | mandoc-6769f9615389aedbeaaf3a3c3153aec49c88954c.tar.gz |
Warnings and errors that occur during mdoc_validate()
or during man_validate() have to affect the mandoc(1) EXIT STATUS.
Many thanks to <Yuri dot Pankov at gmail dot com> (illumos developer)
for reporting this regression.
-rw-r--r-- | main.c | 3 | ||||
-rw-r--r-- | mandoc.3 | 29 | ||||
-rw-r--r-- | mandoc.h | 1 | ||||
-rw-r--r-- | read.c | 7 |
4 files changed, 37 insertions, 3 deletions
@@ -1,7 +1,7 @@ /* $Id$ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> - * Copyright (c) 2010-2012, 2014-2016 Ingo Schwarze <schwarze@openbsd.org> + * Copyright (c) 2010-2012, 2014-2017 Ingo Schwarze <schwarze@openbsd.org> * Copyright (c) 2010 Joerg Sonnenberger <joerg@netbsd.org> * * Permission to use, copy, modify, and distribute this software for any @@ -781,6 +781,7 @@ parse(struct curparse *curp, int fd, const char *file) break; } } + mparse_updaterc(curp->mp, &rc); } static void @@ -1,7 +1,7 @@ .\" $Id$ .\" .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> -.\" Copyright (c) 2010-2016 Ingo Schwarze <schwarze@openbsd.org> +.\" Copyright (c) 2010-2017 Ingo Schwarze <schwarze@openbsd.org> .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -34,7 +34,8 @@ .Nm mparse_reset , .Nm mparse_result , .Nm mparse_strerror , -.Nm mparse_strlevel +.Nm mparse_strlevel , +.Nm mparse_updaterc .Nd mandoc macro compiler library .Sh SYNOPSIS .In sys/types.h @@ -100,6 +101,11 @@ .Fo mparse_strlevel .Fa "enum mandoclevel" .Fc +.Ft void +.Fo mparse_updaterc +.Fa "struct mparse *parse" +.Fa "enum mandoclevel *rc" +.Fc .In roff.h .Ft void .Fo deroff @@ -181,6 +187,9 @@ or .Fn man_validate , respectively; .It +if information about the validity of the input is needed, fetch it with +.Fn mparse_updaterc ; +.It iterate over parse nodes with starting from the .Fa first member of the returned @@ -416,6 +425,22 @@ Declared in .In mandoc.h , implemented in .Pa read.c . +.It Fn mparse_updaterc +If the highest warning or error level that occurred during the current +.Fa parse +is higher than +.Pf * Fa rc , +update +.Pf * Fa rc +accordingly. +This is useful after calling +.Fn mdoc_validate +or +.Fn man_validate . +Declared in +.In mandoc.h , +implemented in +.Pa read.c . .El .Ss Variables .Bl -ohang @@ -435,3 +435,4 @@ void mparse_result(struct mparse *, const char *mparse_getkeep(const struct mparse *); const char *mparse_strerror(enum mandocerr); const char *mparse_strlevel(enum mandoclevel); +void mparse_updaterc(struct mparse *, enum mandoclevel *); @@ -867,6 +867,13 @@ mparse_result(struct mparse *curp, struct roff_man **man, } void +mparse_updaterc(struct mparse *curp, enum mandoclevel *rc) +{ + if (curp->file_status > *rc) + *rc = curp->file_status; +} + +void mandoc_vmsg(enum mandocerr t, struct mparse *m, int ln, int pos, const char *fmt, ...) { |