+#define merr(m, t) nerr((m), (m)->last, (t))
+static int
+nerr(struct mdoc *m, const struct mdoc_node *n, enum merr type)
+{
+ char *p;
+
+ p = NULL;
+
+ switch (type) {
+ case (ENOWIDTH):
+ p = "missing width argument";
+ break;
+ }
+
+ assert(p);
+ return(mdoc_nerr(m, n, p));
+}
+
+
+#define mwarn(m, t) nwarn((m), (m)->last, (t))
+static int
+nwarn(struct mdoc *m, const struct mdoc_node *n, enum mwarn type)
+{
+ char *p;
+ int c;
+
+ p = NULL;
+ c = WARN_SYNTAX;
+
+ switch (type) {
+ case (WBADSEC):
+ p = "inappropriate document section in manual section";
+ c = WARN_COMPAT;
+ break;
+ case (WNOWIDTH):
+ p = "cannot determine default width";
+ break;
+ case (WBADDATE):
+ p = "malformed date syntax";
+ break;
+ }
+
+ assert(p);
+ return(mdoc_nwarn(m, n, c, p));
+}
+
+
+static int
+post_ex(struct mdoc *mdoc)
+{
+
+ /*
+ * If `.Ex -std' is invoked without an argument, fill it in with
+ * our name (if it's been set).
+ */
+
+ if (NULL == mdoc->last->args)
+ return(1);
+ if (mdoc->last->args->argv[0].sz)
+ return(1);
+
+ assert(mdoc->meta.name);
+
+ mdoc_msg(mdoc, "writing %s argument: %s",
+ mdoc_argnames[MDOC_Std],
+ mdoc->meta.name);
+
+ assert(1 == mdoc->last->args->argv[0].sz);
+
+ mdoc->last->args->argv[0].sz = 1;
+ mdoc->last->args->argv[0].value = xcalloc(1, sizeof(char *));
+ mdoc->last->args->argv[0].value[0] = xstrdup(mdoc->meta.name);
+ return(1);
+}
+
+