summaryrefslogtreecommitdiffstats
path: root/man.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2009-03-25 21:03:13 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2009-03-25 21:03:13 +0000
commit0516216740b04a6adb890cc3d4639da26aee1f83 (patch)
tree8ca40ec0505a82a52471516d2c22311fdce11281 /man.c
parent6523a18ca02eff88194a52b582daa4f0b84b6ac8 (diff)
downloadmandoc-0516216740b04a6adb890cc3d4639da26aee1f83.tar.gz
Added pflags to man_alloc.
Abstract fflags -> pflags in main.c.
Diffstat (limited to 'man.c')
-rw-r--r--man.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/man.c b/man.c
index 9165ad21..58db4f79 100644
--- a/man.c
+++ b/man.c
@@ -18,7 +18,6 @@
*/
#include <assert.h>
#include <ctype.h>
-#include <err.h>
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
@@ -83,7 +82,7 @@ man_free(struct man *man)
struct man *
-man_alloc(void *data, const struct man_cb *cb)
+man_alloc(void *data, int pflags, const struct man_cb *cb)
{
struct man *p;
@@ -98,6 +97,8 @@ man_alloc(void *data, const struct man_cb *cb)
p->htab = man_hash_alloc();
p->data = data;
+ p->pflags = pflags;
+
return(p);
}
@@ -287,8 +288,7 @@ man_pmacro(struct man *m, int ln, char *buf)
i++;
if (0 == buf[i])
return(1);
- warnx("invalid syntax");
- return(0);
+ return(man_vwarn(m, ln, 0, "invalid syntax"));
}
if (buf[1] && '\\' == buf[1])
@@ -307,13 +307,25 @@ man_pmacro(struct man *m, int ln, char *buf)
mac[i - 1] = 0;
if (i == 5 || i <= 1) {
- warnx("unknown macro: %s", mac);
- goto err;
- }
+ if ( ! (MAN_IGN_MACRO & m->pflags)) {
+ (void)man_verr(m, ln, 1,
+ "ill-formed macro: %s", mac);
+ goto err;
+ }
+ if ( ! man_vwarn(m, ln, 1, "ill-formed macro: %s", mac))
+ goto err;
+ return(1);
+ }
if (MAN_MAX == (c = man_hash_find(m->htab, mac))) {
- warnx("unknown macro: %s", mac);
- goto err;
+ if ( ! (MAN_IGN_MACRO & m->pflags)) {
+ (void)man_verr(m, ln, 1,
+ "unknown macro: %s", mac);
+ goto err;
+ }
+ if ( ! man_vwarn(m, ln, 1, "unknown macro: %s", mac))
+ goto err;
+ return(1);
}
/* The macro is sane. Jump to the next word. */