-/* $Id: mmain.h,v 1.1 2009/02/22 22:58:39 kristaps Exp $ */
+/* $Id: mmain.h,v 1.4 2009/02/23 15:34:53 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
/*
* This is a convenience library for utilities implementing mdoc(3)
* accepting a similar set of command-line patterns. mmain handles
- * error reporting (to the terminal), preparing and reading the input
- * file, and enacting the parse itself.
+ * error reporting (to the terminal), command-line parsing, preparing
+ * and reading the input file, and enacting the parse itself.
*/
#include "mdoc.h"
+/* Rules for "dead" functions: */
+#if defined(__NetBSD__)
+#define dead_pre __dead
+#define dead_post __attribute__((__noreturn__))
+#elif defined(__OpenBSD__)
+#define dead_pre __dead
+#define dead_post /* Nothing. */
+#else
+#define dead_pre /* Nothing. */
+#define dead_post __attribute__((__noreturn__))
+#endif
+
__BEGIN_DECLS
struct mmain;
struct mmain *mmain_alloc(void);
-__dead void mmain_exit(struct mmain *, int);
-int mmain_getopt(struct mmain *, int,
- char *[], const char *);
-int mmain_isopt(int);
+dead_pre void mmain_exit(struct mmain *, int) dead_post;
+int mmain_getopt(struct mmain *, int, char *[],
+ const char *, const char *, void *,
+ int (*)(void *, int, const char *));
struct mdoc *mmain_mdoc(struct mmain *);
void mmain_usage(const char *);