* mdocml: Move `At' handling from mdoc_action.c into mdoc_validate.c.
@ 2010-11-29 14:50 kristaps
0 siblings, 0 replies; only message in thread
From: kristaps @ 2010-11-29 14:50 UTC (permalink / raw)
To: source
Log Message:
-----------
Move `At' handling from mdoc_action.c into mdoc_validate.c.
Modified Files:
--------------
mdocml:
mdoc_action.c
mdoc_validate.c
Revision Data
-------------
Index: mdoc_validate.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_validate.c,v
retrieving revision 1.125
retrieving revision 1.126
diff -Lmdoc_validate.c -Lmdoc_validate.c -u -p -r1.125 -r1.126
--- mdoc_validate.c
+++ mdoc_validate.c
@@ -112,7 +112,7 @@ static int pre_sh(PRE_ARGS);
static int pre_ss(PRE_ARGS);
static v_post posts_an[] = { post_an, NULL };
-static v_post posts_at[] = { post_at, NULL };
+static v_post posts_at[] = { post_at, post_defaults, NULL };
static v_post posts_bd_bk[] = { hwarn_eq0, bwarn_ge1, NULL };
static v_post posts_bf[] = { hwarn_le1, post_bf, NULL };
static v_post posts_bl[] = { bwarn_ge1, post_bl, NULL };
@@ -1159,6 +1159,12 @@ post_defaults(POST_ARGS)
if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "..."))
return(0);
break;
+ case (MDOC_At):
+ if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "AT&T"))
+ return(0);
+ if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, "UNIX"))
+ return(0);
+ break;
case (MDOC_Li):
if ( ! mdoc_word_alloc(mdoc, nn->line, nn->pos, ""))
return(0);
@@ -1179,15 +1185,39 @@ post_defaults(POST_ARGS)
static int
post_at(POST_ARGS)
{
+ const char *p, *q;
+ char *buf;
+ size_t sz;
+ /*
+ * If we have a child, look it up in the standard keys. If a
+ * key exist, use that instead of the child; if it doesn't,
+ * prefix "AT&T UNIX " to the existing data.
+ */
+
if (NULL == mdoc->last->child)
return(1);
+
assert(MDOC_TEXT == mdoc->last->child->type);
- if (mdoc_a2att(mdoc->last->child->string))
- return(1);
- return(mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_BADATT));
-}
+ p = mdoc_a2att(mdoc->last->child->string);
+
+ if (p) {
+ free(mdoc->last->child->string);
+ mdoc->last->child->string = mandoc_strdup(p);
+ } else {
+ mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_BADATT);
+ p = "AT&T UNIX ";
+ q = mdoc->last->child->string;
+ sz = strlen(p) + strlen(q) + 1;
+ buf = mandoc_malloc(sz);
+ strlcpy(buf, p, sz);
+ strlcat(buf, q, sz);
+ free(mdoc->last->child->string);
+ mdoc->last->child->string = buf;
+ }
+ return(1);
+}
static int
post_an(POST_ARGS)
Index: mdoc_action.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_action.c,v
retrieving revision 1.81
retrieving revision 1.82
diff -Lmdoc_action.c -Lmdoc_action.c -u -p -r1.81 -r1.82
--- mdoc_action.c
+++ mdoc_action.c
@@ -51,7 +51,6 @@ struct actions {
static int concat(struct mdoc *, char *,
const struct mdoc_node *, size_t);
-static int post_at(POST_ARGS);
static int post_bl(POST_ARGS);
static int post_bl_head(POST_ARGS);
static int post_bl_tagwidth(POST_ARGS);
@@ -126,7 +125,7 @@ static const struct actions mdoc_actions
{ NULL, NULL }, /* Ac */
{ NULL, NULL }, /* Ao */
{ NULL, NULL }, /* Aq */
- { NULL, post_at }, /* At */
+ { NULL, NULL }, /* At */
{ NULL, NULL }, /* Bc */
{ NULL, NULL }, /* Bf */
{ NULL, NULL }, /* Bo */
@@ -382,47 +381,6 @@ post_st(POST_ARGS)
free(n->child->string);
n->child->string = mandoc_strdup(p);
}
- return(1);
-}
-
-
-/*
- * Look up the standard string in a table. We know that it exists from
- * the validation phase, so assert on failure. If a standard key wasn't
- * supplied, supply the default ``AT&T UNIX''.
- */
-static int
-post_at(POST_ARGS)
-{
- struct mdoc_node *nn;
- const char *p, *q;
- char *buf;
- size_t sz;
-
- if (n->child) {
- assert(MDOC_TEXT == n->child->type);
- p = mdoc_a2att(n->child->string);
- if (p) {
- free(n->child->string);
- n->child->string = mandoc_strdup(p);
- } else {
- p = "AT&T UNIX ";
- q = n->child->string;
- sz = strlen(p) + strlen(q) + 1;
- buf = mandoc_malloc(sz);
- strlcpy(buf, p, sz);
- strlcat(buf, q, sz);
- free(n->child->string);
- n->child->string = buf;
- }
- return(1);
- }
-
- nn = n;
- m->next = MDOC_NEXT_CHILD;
- if ( ! mdoc_word_alloc(m, nn->line, nn->pos, "AT&T UNIX"))
- return(0);
- m->last = nn;
return(1);
}
--
To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2010-11-29 14:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-29 14:50 mdocml: Move `At' handling from mdoc_action.c into mdoc_validate.c kristaps
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).