summaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c55
1 files changed, 27 insertions, 28 deletions
diff --git a/main.c b/main.c
index db8d57a0..9fd1b9c6 100644
--- a/main.c
+++ b/main.c
@@ -78,11 +78,12 @@ enum outt {
};
struct curparse {
- const char *file; /* Current parse. */
- int fd; /* Current parse. */
- int line; /* Line number in the file. */
- enum mandoclevel wlevel; /* Ignore messages below this. */
- int wstop; /* Stop after a file with a warning. */
+ const char *file; /* current file-name */
+ enum mandoclevel file_status; /* error status of current parse */
+ int fd; /* current file-descriptor */
+ int line; /* line number in the file */
+ enum mandoclevel wlevel; /* ignore messages below this */
+ int wstop; /* stop after a file with a warning */
enum intt inttype; /* which parser to use */
struct man *pman; /* persistent man parser */
struct mdoc *pmdoc; /* persistent mdoc parser */
@@ -241,7 +242,6 @@ static void version(void) __attribute__((noreturn));
static int woptions(struct curparse *, char *);
static const char *progname;
-static enum mandoclevel file_status = MANDOCLEVEL_OK;
static enum mandoclevel exit_status = MANDOCLEVEL_OK;
int
@@ -378,7 +378,7 @@ pfile(const char *file, struct curparse *curp)
if (-1 == (fd = open(file, O_RDONLY, 0))) {
perror(file);
- file_status = MANDOCLEVEL_SYSERR;
+ curp->file_status = MANDOCLEVEL_SYSERR;
return(0);
}
@@ -396,7 +396,7 @@ pfile(const char *file, struct curparse *curp)
if (-1 == close(fd))
perror(file);
- return(MANDOCLEVEL_FATAL > file_status ? 1 : 0);
+ return(MANDOCLEVEL_FATAL > curp->file_status ? 1 : 0);
}
@@ -500,7 +500,7 @@ fdesc(struct curparse *curp)
curp->mdoc = NULL;
curp->man = NULL;
- file_status = MANDOCLEVEL_OK;
+ curp->file_status = MANDOCLEVEL_OK;
/* Make sure the mandotory roff parser is initialised. */
@@ -513,26 +513,26 @@ fdesc(struct curparse *curp)
pdesc(curp);
- if (MANDOCLEVEL_FATAL <= file_status)
+ if (MANDOCLEVEL_FATAL <= curp->file_status)
goto cleanup;
/* NOTE a parser may not have been assigned, yet. */
if ( ! (curp->man || curp->mdoc)) {
fprintf(stderr, "%s: Not a manual\n", curp->file);
- file_status = MANDOCLEVEL_FATAL;
+ curp->file_status = MANDOCLEVEL_FATAL;
goto cleanup;
}
/* Clean up the parse routine ASTs. */
if (curp->mdoc && ! mdoc_endparse(curp->mdoc)) {
- assert(MANDOCLEVEL_FATAL <= file_status);
+ assert(MANDOCLEVEL_FATAL <= curp->file_status);
goto cleanup;
}
if (curp->man && ! man_endparse(curp->man)) {
- assert(MANDOCLEVEL_FATAL <= file_status);
+ assert(MANDOCLEVEL_FATAL <= curp->file_status);
goto cleanup;
}
@@ -544,7 +544,7 @@ fdesc(struct curparse *curp)
* the requested level, do not produce output.
*/
- if (MANDOCLEVEL_OK != file_status && curp->wstop)
+ if (MANDOCLEVEL_OK != curp->file_status && curp->wstop)
goto cleanup;
/* If unset, allocate output dev now (if applicable). */
@@ -619,8 +619,8 @@ fdesc(struct curparse *curp)
assert(curp->roff);
roff_reset(curp->roff);
- if (exit_status < file_status)
- exit_status = file_status;
+ if (exit_status < curp->file_status)
+ exit_status = curp->file_status;
return;
}
@@ -639,7 +639,7 @@ pdesc(struct curparse *curp)
*/
if ( ! read_whole_file(curp, &blk, &with_mmap)) {
- file_status = MANDOCLEVEL_SYSERR;
+ curp->file_status = MANDOCLEVEL_SYSERR;
return;
}
@@ -655,6 +655,11 @@ pdesc(struct curparse *curp)
free(blk.buf);
}
+/*
+ * Main parse routine for an opened file. This is called for each
+ * opened file and simply loops around the full input file, possibly
+ * nesting (i.e., with `so').
+ */
static void
parsebuf(struct curparse *curp, struct buf blk, int start)
{
@@ -666,12 +671,6 @@ parsebuf(struct curparse *curp, struct buf blk, int start)
int lnn; /* line number in the real file */
unsigned char c;
- /*
- * Main parse routine for an opened file. This is called for
- * each opened file and simply loops around the full input file,
- * possibly nesting (i.e., with `so').
- */
-
memset(&ln, 0, sizeof(struct buf));
lnn = curp->line;
@@ -816,7 +815,7 @@ rerun:
pos = 0;
continue;
case (ROFF_ERR):
- assert(MANDOCLEVEL_FATAL <= file_status);
+ assert(MANDOCLEVEL_FATAL <= curp->file_status);
break;
case (ROFF_SO):
if (pfile(ln.buf + of, curp)) {
@@ -833,7 +832,7 @@ rerun:
* call, make sure we don't continue parsing.
*/
- if (MANDOCLEVEL_FATAL <= file_status)
+ if (MANDOCLEVEL_FATAL <= curp->file_status)
break;
/*
@@ -881,7 +880,7 @@ rerun:
curp->line, ln.buf, of);
if (0 == rc) {
- assert(MANDOCLEVEL_FATAL <= file_status);
+ assert(MANDOCLEVEL_FATAL <= curp->file_status);
break;
}
@@ -1062,8 +1061,8 @@ mmsg(enum mandocerr t, void *arg, int ln, int col, const char *msg)
fprintf(stderr, ": %s", msg);
fputc('\n', stderr);
- if (file_status < level)
- file_status = level;
+ if (cp->file_status < level)
+ cp->file_status = level;
return(level < MANDOCLEVEL_FATAL);
}