-/* $Id: demandoc.c,v 1.23 2015/10/20 02:01:31 schwarze Exp $ */
+/* $Id: demandoc.c,v 1.33 2019/03/03 11:01:15 schwarze Exp $ */
/*
* Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
#include <assert.h>
#include <ctype.h>
-#include <getopt.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include "mandoc.h"
#include "roff.h"
#include "man.h"
#include "mdoc.h"
-#include "mandoc.h"
+#include "mandoc_parse.h"
static void pline(int, int *, int *, int);
static void pman(const struct roff_node *, int *, int *, int);
argv += optind;
mchars_alloc();
- mp = mparse_alloc(MPARSE_SO, MANDOCLEVEL_BADARG, NULL, NULL);
+ mp = mparse_alloc(MPARSE_SO | MPARSE_UTF8 | MPARSE_LATIN1 |
+ MPARSE_VALIDATE, MANDOC_OS_OTHER, NULL);
assert(mp);
if (argc < 1)
for (i = 0; i < argc; i++) {
mparse_reset(mp);
- if (mparse_open(mp, &fd, argv[i]) != MANDOCLEVEL_OK) {
+ if ((fd = mparse_open(mp, argv[i])) == -1) {
perror(argv[i]);
continue;
}
static void
pmandoc(struct mparse *mp, int fd, const char *fn, int list)
{
- struct roff_man *man;
+ struct roff_meta *meta;
int line, col;
mparse_readfd(mp, fd, fn);
- mparse_result(mp, &man, NULL);
+ close(fd);
+ meta = mparse_result(mp);
line = 1;
col = 0;
- if (man == NULL)
- return;
- if (man->macroset == MACROSET_MDOC) {
- mdoc_validate(man);
- pmdoc(man->first->child, &line, &col, list);
- } else
- pman(man->first->child, &line, &col, list);
+ if (meta->macroset == MACROSET_MDOC)
+ pmdoc(meta->first->child, &line, &col, list);
+ else
+ pman(meta->first->child, &line, &col, list);
if ( ! list)
putchar('\n');
{
for ( ; p; p = p->next) {
- if (MDOC_LINE & p->flags)
+ if (NODE_LINE & p->flags)
pline(p->line, line, col, list);
if (ROFFT_TEXT == p->type)
pstring(p->string, p->pos, col, list);
{
for ( ; p; p = p->next) {
- if (MAN_LINE & p->flags)
+ if (NODE_LINE & p->flags)
pline(p->line, line, col, list);
if (ROFFT_TEXT == p->type)
pstring(p->string, p->pos, col, list);