aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mandoc.h
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-03-20 11:41:24 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-03-20 11:41:24 +0000
commit179cbff3ea0ec44e732bf8f748222d79c649cdac (patch)
treea9eb5935c11629198915cd228e856d0f714e039b /mandoc.h
parent35c10ef758b5988b60e709cadaf25f74a26383b6 (diff)
downloadmandoc-179cbff3ea0ec44e732bf8f748222d79c649cdac.tar.gz
mandoc-179cbff3ea0ec44e732bf8f748222d79c649cdac.tar.zst
mandoc-179cbff3ea0ec44e732bf8f748222d79c649cdac.zip
Split the document parsing sequence out of main.c and into read.c,
putting the interface into mandoc.h. This effectively makes the function of main.c be command-line handling, invoking the parser, and sending its output to the output handler. The sequence of parsing (pfile(), pdesc(), etc.) has changed very little but for clean-up of some state variables (curp->fd, etc.).
Diffstat (limited to 'mandoc.h')
-rw-r--r--mandoc.h27
1 files changed, 26 insertions, 1 deletions
diff --git a/mandoc.h b/mandoc.h
index 0398f636..cb793543 100644
--- a/mandoc.h
+++ b/mandoc.h
@@ -1,4 +1,4 @@
-/* $Id: mandoc.h,v 1.61 2011/03/17 12:08:01 kristaps Exp $ */
+/* $Id: mandoc.h,v 1.62 2011/03/20 11:41:24 kristaps Exp $ */
/*
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -328,11 +328,36 @@ enum mdelim {
DELIM_CLOSE
};
+/*
+ * The type of parse sequence. This value is usually passed via the
+ * mandoc(1) command line of -man and -mdoc. It's almost exclusively
+ * -mandoc but the others have been retained for compatibility.
+ */
+enum mparset {
+ MPARSE_AUTO, /* magically determine the document type */
+ MPARSE_MDOC, /* assume -mdoc */
+ MPARSE_MAN /* assume -man */
+};
+
typedef void (*mandocmsg)(enum mandocerr, void *,
int, int, const char *);
+typedef int (*mevt_open)(void *, const char *);
+typedef void (*mevt_close)(void *, const char *);
+
+struct mparse;
+struct mdoc;
+struct man;
__BEGIN_DECLS
+void mparse_free(struct mparse *);
+void mparse_reset(struct mparse *);
+struct mparse *mparse_alloc(enum mparset, mevt_open,
+ mevt_close, mandocmsg, void *);
+void mparse_setstatus(struct mparse *, enum mandoclevel);
+enum mandoclevel mparse_readfd(struct mparse *, int, const char *);
+void mparse_result(struct mparse *, struct mdoc **, struct man **);
+
void *mandoc_calloc(size_t, size_t);
void *mandoc_malloc(size_t);
void *mandoc_realloc(void *, size_t);