summaryrefslogtreecommitdiffstatshomepage
path: root/mlg.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2008-12-08 16:29:57 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2008-12-08 16:29:57 +0000
commit4cfe3bb512af4b91885cb7ab426ab406a4882ebb (patch)
treec5ce1f7d1bf7591de2bfd56afaff2ac5ed874a3b /mlg.c
parentfc4521dc8c1b84bf19e7b81d0eb40e925cd097c1 (diff)
downloadmandoc-4cfe3bb512af4b91885cb7ab426ab406a4882ebb.tar.gz
mandoc-4cfe3bb512af4b91885cb7ab426ab406a4882ebb.tar.zst
mandoc-4cfe3bb512af4b91885cb7ab426ab406a4882ebb.zip
*** empty log message ***
Diffstat (limited to 'mlg.c')
-rw-r--r--mlg.c39
1 files changed, 30 insertions, 9 deletions
diff --git a/mlg.c b/mlg.c
index 2cf178a0..ff8f702a 100644
--- a/mlg.c
+++ b/mlg.c
@@ -1,4 +1,4 @@
-/* $Id: mlg.c,v 1.21 2008/12/08 12:46:28 kristaps Exp $ */
+/* $Id: mlg.c,v 1.22 2008/12/08 16:29:57 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -543,7 +543,7 @@ mlg_atom_special(struct md_mlg *p, int tok,
if ( ! mlg_string(p, start, *more++))
return(0);
- assert(NULL == *more);
+ /*assert(NULL == *more);*/ /* FIXME: ROFF_Sx */
return(mlg_endtag(p, MD_NS_INLINE, tok));
}
@@ -790,6 +790,8 @@ mlg_msg(struct md_mlg *p, enum roffmsg lvl,
const char *buf, const char *pos, const char *msg)
{
char *level;
+ char b[256];
+ int i;
switch (lvl) {
case (ROFF_WARN):
@@ -803,12 +805,31 @@ mlg_msg(struct md_mlg *p, enum roffmsg lvl,
default:
abort();
}
-
- if (pos)
- (void)fprintf(stderr, "%s:%zu: %s: %s (column %zu)\n",
- p->rbuf->name, p->rbuf->line, level,
- msg, pos - buf);
- else
- (void)fprintf(stderr, "%s: %s: %s\n",
+
+ if (pos) {
+ assert(pos >= buf);
+ if (0 < p->args->verbosity) {
+ (void)snprintf(b, sizeof(b),
+ "%s:%zu: %s: %s\n",
+ p->rbuf->name, p->rbuf->line,
+ level, msg);
+ (void)strlcat(b, "Error at: ", sizeof(b));
+ (void)strlcat(b, p->rbuf->linebuf, sizeof(b));
+
+ (void)strlcat(b, "\n ", sizeof(b));
+ for (i = 0; i < pos - buf; i++)
+ (void)strlcat(b, " ", sizeof(b));
+ (void)strlcat(b, "^", sizeof(b));
+
+ } else
+ (void)snprintf(b, sizeof(b),
+ "%s:%zu: %s: %s (col %zu)",
+ p->rbuf->name, p->rbuf->line,
+ level, msg, pos - buf);
+ } else
+ (void)snprintf(b, sizeof(b), "%s: %s: %s",
p->rbuf->name, level, msg);
+
+ (void)fprintf(stderr, "%s\n", b);
}
+