version 1.5, 2019/01/10 06:29:00 |
version 1.9, 2020/01/19 16:44:50 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2014,2015,2016,2017,2018 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2014-2020 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
*/ |
*/ |
|
#include "config.h" |
|
|
#include <stdarg.h> |
#include <stdarg.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
Line 27 static const enum mandocerr lowest_type[MANDOCLEVEL_MA |
|
Line 29 static const enum mandocerr lowest_type[MANDOCLEVEL_MA |
|
MANDOCERR_WARNING, |
MANDOCERR_WARNING, |
MANDOCERR_ERROR, |
MANDOCERR_ERROR, |
MANDOCERR_UNSUPP, |
MANDOCERR_UNSUPP, |
MANDOCERR_MAX, |
MANDOCERR_BADARG, |
MANDOCERR_MAX |
MANDOCERR_SYSERR |
}; |
}; |
|
|
static const char *const level_name[MANDOCLEVEL_MAX] = { |
static const char *const level_name[MANDOCLEVEL_MAX] = { |
Line 81 static const char *const type_message[MANDOCERR_MAX] = |
|
Line 83 static const char *const type_message[MANDOCERR_MAX] = |
|
"missing manual title, using \"\"", |
"missing manual title, using \"\"", |
"missing manual section, using \"\"", |
"missing manual section, using \"\"", |
"unknown manual section", |
"unknown manual section", |
"missing date, using today's date", |
"missing date, using \"\"", |
"cannot parse date, using it verbatim", |
"cannot parse date, using it verbatim", |
"date in the future, using it anyway", |
"date in the future, using it anyway", |
"missing Os macro, using \"\"", |
"missing Os macro, using \"\"", |
Line 191 static const char *const type_message[MANDOCERR_MAX] = |
|
Line 193 static const char *const type_message[MANDOCERR_MAX] = |
|
"data block open at end of tbl", |
"data block open at end of tbl", |
|
|
/* related to document structure and macros */ |
/* related to document structure and macros */ |
NULL, |
|
"duplicate prologue macro", |
"duplicate prologue macro", |
"skipping late title macro", |
"skipping late title macro", |
"input stack limit exceeded, infinite loop?", |
"input stack limit exceeded, infinite loop?", |
Line 238 static const char *const type_message[MANDOCERR_MAX] = |
|
Line 239 static const char *const type_message[MANDOCERR_MAX] = |
|
"eqn delim option in tbl", |
"eqn delim option in tbl", |
"unsupported tbl layout modifier", |
"unsupported tbl layout modifier", |
"ignoring macro in table", |
"ignoring macro in table", |
|
|
|
/* bad command line arguments */ |
|
NULL, |
|
"bad command line argument", |
|
"duplicate command line argument", |
|
"option has a superfluous value", |
|
"missing option value", |
|
"bad option value", |
|
"duplicate option value", |
|
"no such tag", |
|
|
|
/* system errors */ |
|
NULL, |
|
"dup", |
|
"exec", |
|
"fdopen", |
|
"fflush", |
|
"fork", |
|
"fstat", |
|
"getline", |
|
"glob", |
|
"gzclose", |
|
"gzdopen", |
|
"mkstemp", |
|
"open", |
|
"pledge", |
|
"read", |
|
"wait", |
|
"write", |
}; |
}; |
|
|
static FILE *fileptr = NULL; |
static FILE *fileptr = NULL; |
static const char *filename = NULL; |
static const char *filename = NULL; |
static enum mandocerr min_type = MANDOCERR_MAX; |
static enum mandocerr min_type = MANDOCERR_BADARG; |
static enum mandoclevel rc = MANDOCLEVEL_OK; |
static enum mandoclevel rc = MANDOCLEVEL_OK; |
|
|
|
|
Line 295 mandoc_msg(enum mandocerr t, int line, int col, const |
|
Line 325 mandoc_msg(enum mandocerr t, int line, int col, const |
|
va_list ap; |
va_list ap; |
enum mandoclevel level; |
enum mandoclevel level; |
|
|
if (t < min_type && t != MANDOCERR_FILE) |
if (t < min_type) |
return; |
return; |
|
|
level = MANDOCLEVEL_UNSUPP; |
level = MANDOCLEVEL_SYSERR; |
while (t < lowest_type[level]) |
while (t < lowest_type[level]) |
level--; |
level--; |
mandoc_msg_setrc(level); |
mandoc_msg_setrc(level); |
Line 324 mandoc_msg(enum mandocerr t, int line, int col, const |
|
Line 354 mandoc_msg(enum mandocerr t, int line, int col, const |
|
va_end(ap); |
va_end(ap); |
} |
} |
fputc('\n', fileptr); |
fputc('\n', fileptr); |
|
} |
|
|
|
void |
|
mandoc_msg_summary(void) |
|
{ |
|
if (fileptr != NULL && rc != MANDOCLEVEL_OK) |
|
fprintf(fileptr, |
|
"%s: see above the output for %s messages\n", |
|
getprogname(), level_name[rc]); |
} |
} |