+int mdoc_valid(struct mdoc *, int, int,
+ int, const char *[],
+ int, const struct mdoc_arg *);
+
+int mdoc_argv(struct mdoc *, int,
+ struct mdoc_arg *, int *, char *);
+void mdoc_argv_free(int, struct mdoc_arg *);
+int mdoc_args(struct mdoc *, int,
+ int *, char *, int, char **);
+#define ARGS_ERROR (-1)
+#define ARGS_EOLN (0)
+#define ARGS_WORD (1)
+#define ARGS_PUNCT (2)
+
+#define ARGS_QUOTED (1 << 0)
+#define ARGS_DELIM (1 << 1)
+
+int xstrlcat(char *, const char *, size_t);
+int xstrlcpy(char *, const char *, size_t);
+int xstrcmp(const char *, const char *);
+void *xcalloc(size_t, size_t);
+char *xstrdup(const char *);
+
+int macro_obsolete(MACRO_PROT_ARGS);
+int macro_constant_quoted(MACRO_PROT_ARGS);
+int macro_constant_obsolete(MACRO_PROT_ARGS);
+int macro_constant_argv(MACRO_PROT_ARGS);
+int macro_constant(MACRO_PROT_ARGS);
+int macro_constant_delimited(MACRO_PROT_ARGS);