source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* 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).