source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Move all man_action.c routines into man_validate.c
@ 2010-11-30 15:24 kristaps
  0 siblings, 0 replies; only message in thread
From: kristaps @ 2010-11-30 15:24 UTC (permalink / raw)
  To: source

Log Message:
-----------
Move all man_action.c routines into man_validate.c

Modified Files:
--------------
    mdocml:
        man_action.c
        man_validate.c

Revision Data
-------------
Index: man_action.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man_action.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -Lman_action.c -Lman_action.c -u -p -r1.42 -r1.43
--- man_action.c
+++ man_action.c
@@ -31,15 +31,9 @@ struct	actions {
 	int	(*post)(struct man *);
 };
 
-static	int	  post_TH(struct man *);
-static	int	  post_fi(struct man *);
-static	int	  post_nf(struct man *);
-static	int	  post_AT(struct man *);
-static	int	  post_UC(struct man *);
-
 const	struct actions man_actions[MAN_MAX] = {
 	{ NULL }, /* br */
-	{ post_TH }, /* TH */
+	{ NULL }, /* TH */
 	{ NULL }, /* SH */
 	{ NULL }, /* SS */
 	{ NULL }, /* TP */
@@ -62,18 +56,18 @@ const	struct actions man_actions[MAN_MAX
 	{ NULL }, /* na */
 	{ NULL }, /* i */
 	{ NULL }, /* sp */
-	{ post_nf }, /* nf */
-	{ post_fi }, /* fi */
+	{ NULL }, /* nf */
+	{ NULL }, /* fi */
 	{ NULL }, /* r */
 	{ NULL }, /* RE */
 	{ NULL }, /* RS */
 	{ NULL }, /* DT */
-	{ post_UC }, /* UC */
+	{ NULL }, /* UC */
 	{ NULL }, /* PD */
 	{ NULL }, /* Sp */
-	{ post_nf }, /* Vb */
-	{ post_fi }, /* Ve */
-	{ post_AT }, /* AT */
+	{ NULL }, /* Vb */
+	{ NULL }, /* Ve */
+	{ NULL }, /* AT */
 	{ NULL }, /* in */
 };
 
@@ -101,182 +95,5 @@ man_action_post(struct man *m)
 }
 
 
-static int
-post_fi(struct man *m)
-{
-
-	if ( ! (MAN_LITERAL & m->flags))
-		if ( ! man_nmsg(m, m->last, MANDOCERR_NOSCOPE))
-			return(0);
-	m->flags &= ~MAN_LITERAL;
-	return(1);
-}
-
-
-static int
-post_nf(struct man *m)
-{
-
-	if (MAN_LITERAL & m->flags)
-		if ( ! man_nmsg(m, m->last, MANDOCERR_SCOPEREP))
-			return(0);
-	m->flags |= MAN_LITERAL;
-	return(1);
-}
-
-
-static int
-post_TH(struct man *m)
-{
-	struct man_node	*n;
-
-	if (m->meta.title)
-		free(m->meta.title);
-	if (m->meta.vol)
-		free(m->meta.vol);
-	if (m->meta.source)
-		free(m->meta.source);
-	if (m->meta.msec)
-		free(m->meta.msec);
-	if (m->meta.rawdate)
-		free(m->meta.rawdate);
-
-	m->meta.title = m->meta.vol = m->meta.rawdate =
-		m->meta.msec = m->meta.source = NULL;
-	m->meta.date = 0;
-
-	/* ->TITLE<- MSEC DATE SOURCE VOL */
-
-	n = m->last->child;
-	assert(n);
-	m->meta.title = mandoc_strdup(n->string);
-
-	/* TITLE ->MSEC<- DATE SOURCE VOL */
-
-	n = n->next;
-	assert(n);
-	m->meta.msec = mandoc_strdup(n->string);
-
-	/* TITLE MSEC ->DATE<- SOURCE VOL */
-
-	/*
-	 * Try to parse the date.  If this works, stash the epoch (this
-	 * is optimal because we can reformat it in the canonical form).
-	 * If it doesn't parse, isn't specified at all, or is an empty
-	 * string, then use the current date.
-	 */
-
-	n = n->next;
-	if (n && n->string && *n->string) {
-		m->meta.date = mandoc_a2time
-			(MTIME_ISO_8601, n->string);
-		if (0 == m->meta.date) {
-			if ( ! man_nmsg(m, n, MANDOCERR_BADDATE))
-				return(0);
-			m->meta.rawdate = mandoc_strdup(n->string);
-		}
-	} else
-		m->meta.date = time(NULL);
-
-	/* TITLE MSEC DATE ->SOURCE<- VOL */
-
-	if (n && (n = n->next))
-		m->meta.source = mandoc_strdup(n->string);
-
-	/* TITLE MSEC DATE SOURCE ->VOL<- */
-
-	if (n && (n = n->next))
-		m->meta.vol = mandoc_strdup(n->string);
-
-	/*
-	 * Remove the `TH' node after we've processed it for our
-	 * meta-data.
-	 */
-	man_node_delete(m, m->last);
-	return(1);
-}
-
-
-static int
-post_AT(struct man *m)
-{
-	static const char * const unix_versions[] = {
-	    "7th Edition",
-	    "System III",
-	    "System V",
-	    "System V Release 2",
-	};
-
-	const char	*p, *s;
-	struct man_node	*n, *nn;
-
-	n = m->last->child;
-
-	if (NULL == n || MAN_TEXT != n->type)
-		p = unix_versions[0];
-	else {
-		s = n->string;
-		if (0 == strcmp(s, "3"))
-			p = unix_versions[0];
-		else if (0 == strcmp(s, "4"))
-			p = unix_versions[1];
-		else if (0 == strcmp(s, "5")) {
-			nn = n->next;
-			if (nn && MAN_TEXT == nn->type && nn->string[0])
-				p = unix_versions[3];
-			else
-				p = unix_versions[2];
-		} else
-			p = unix_versions[0];
-	}
-
-	if (m->meta.source)
-		free(m->meta.source);
-
-	m->meta.source = mandoc_strdup(p);
-
-	return(1);
-}
-
-
-static int
-post_UC(struct man *m)
-{
-	static const char * const bsd_versions[] = {
-	    "3rd Berkeley Distribution",
-	    "4th Berkeley Distribution",
-	    "4.2 Berkeley Distribution",
-	    "4.3 Berkeley Distribution",
-	    "4.4 Berkeley Distribution",
-	};
-
-	const char	*p, *s;
-	struct man_node	*n;
-
-	n = m->last->child;
-
-	if (NULL == n || MAN_TEXT != n->type)
-		p = bsd_versions[0];
-	else {
-		s = n->string;
-		if (0 == strcmp(s, "3"))
-			p = bsd_versions[0];
-		else if (0 == strcmp(s, "4"))
-			p = bsd_versions[1];
-		else if (0 == strcmp(s, "5"))
-			p = bsd_versions[2];
-		else if (0 == strcmp(s, "6"))
-			p = bsd_versions[3];
-		else if (0 == strcmp(s, "7"))
-			p = bsd_versions[4];
-		else
-			p = bsd_versions[0];
-	}
-
-	if (m->meta.source)
-		free(m->meta.source);
 
-	m->meta.source = mandoc_strdup(p);
 
-	return(1);
-}
Index: man_validate.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man_validate.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -Lman_validate.c -Lman_validate.c -u -p -r1.50 -r1.51
--- man_validate.c
+++ man_validate.c
@@ -54,14 +54,26 @@ static	int	  check_sec(CHKARGS);
 static	int	  check_text(CHKARGS);
 static	int	  check_title(CHKARGS);
 
+static	int	  post_AT(CHKARGS);
+static	int	  post_fi(CHKARGS);
+static	int	  post_nf(CHKARGS);
+static	int	  post_TH(CHKARGS);
+static	int	  post_UC(CHKARGS);
+
+static	v_check	  posts_at[] = { post_AT, NULL };
 static	v_check	  posts_eq0[] = { check_eq0, NULL };
-static	v_check	  posts_th[] = { check_ge2, check_le5, check_title, NULL };
+static	v_check	  posts_fi[] = { check_eq0, post_fi, NULL };
+static	v_check	  posts_le1[] = { check_le1, NULL };
+static	v_check	  posts_nf[] = { check_eq0, post_nf, NULL };
 static	v_check	  posts_par[] = { check_par, NULL };
 static	v_check	  posts_part[] = { check_part, NULL };
 static	v_check	  posts_sec[] = { check_sec, NULL };
-static	v_check	  posts_le1[] = { check_le1, NULL };
+static	v_check	  posts_th[] = { check_ge2, check_le5, check_title, post_TH, NULL };
+static	v_check	  posts_uc[] = { post_UC, NULL };
+static	v_check	  posts_vb[] = { check_le1, post_nf, NULL };
 static	v_check	  pres_bline[] = { check_bline, NULL };
 
+
 static	const struct man_valid man_valids[MAN_MAX] = {
 	{ NULL, posts_eq0 }, /* br */
 	{ pres_bline, posts_th }, /* TH */
@@ -87,18 +99,18 @@ static	const struct man_valid man_valids
 	{ NULL, posts_eq0 }, /* na */ /* FIXME: should warn only. */
 	{ NULL, NULL }, /* i */
 	{ NULL, posts_le1 }, /* sp */ /* FIXME: should warn only. */
-	{ pres_bline, posts_eq0 }, /* nf */
-	{ pres_bline, posts_eq0 }, /* fi */
+	{ pres_bline, posts_nf }, /* nf */
+	{ pres_bline, posts_fi }, /* fi */
 	{ NULL, NULL }, /* r */
 	{ NULL, NULL }, /* RE */
 	{ NULL, posts_part }, /* RS */
 	{ NULL, NULL }, /* DT */
-	{ NULL, NULL }, /* UC */
+	{ NULL, posts_uc }, /* UC */
 	{ NULL, NULL }, /* PD */
 	{ NULL, posts_le1 }, /* Sp */ /* FIXME: should warn only. */
-	{ pres_bline, posts_le1 }, /* Vb */ /* FIXME: should warn only. */
-	{ pres_bline, posts_eq0 }, /* Ve */
-	{ NULL, NULL }, /* AT */
+	{ pres_bline, posts_vb }, /* Vb */ /* FIXME: should warn only. */
+	{ pres_bline, posts_fi }, /* Ve */
+	{ NULL, posts_at }, /* AT */
 	{ NULL, NULL }, /* in */
 };
 
@@ -335,3 +347,174 @@ check_bline(CHKARGS)
 	return(1);
 }
 
+static int
+post_TH(CHKARGS)
+{
+
+	if (m->meta.title)
+		free(m->meta.title);
+	if (m->meta.vol)
+		free(m->meta.vol);
+	if (m->meta.source)
+		free(m->meta.source);
+	if (m->meta.msec)
+		free(m->meta.msec);
+	if (m->meta.rawdate)
+		free(m->meta.rawdate);
+
+	m->meta.title = m->meta.vol = m->meta.rawdate =
+		m->meta.msec = m->meta.source = NULL;
+	m->meta.date = 0;
+
+	/* ->TITLE<- MSEC DATE SOURCE VOL */
+
+	n = n->child;
+	assert(n);
+	m->meta.title = mandoc_strdup(n->string);
+
+	/* TITLE ->MSEC<- DATE SOURCE VOL */
+
+	n = n->next;
+	assert(n);
+	m->meta.msec = mandoc_strdup(n->string);
+
+	/* TITLE MSEC ->DATE<- SOURCE VOL */
+
+	/*
+	 * Try to parse the date.  If this works, stash the epoch (this
+	 * is optimal because we can reformat it in the canonical form).
+	 * If it doesn't parse, isn't specified at all, or is an empty
+	 * string, then use the current date.
+	 */
+
+	n = n->next;
+	if (n && n->string && *n->string) {
+		m->meta.date = mandoc_a2time
+			(MTIME_ISO_8601, n->string);
+		if (0 == m->meta.date) {
+			man_nmsg(m, n, MANDOCERR_BADDATE);
+			m->meta.rawdate = mandoc_strdup(n->string);
+		}
+	} else
+		m->meta.date = time(NULL);
+
+	/* TITLE MSEC DATE ->SOURCE<- VOL */
+
+	if (n && (n = n->next))
+		m->meta.source = mandoc_strdup(n->string);
+
+	/* TITLE MSEC DATE SOURCE ->VOL<- */
+
+	if (n && (n = n->next))
+		m->meta.vol = mandoc_strdup(n->string);
+
+	/*
+	 * Remove the `TH' node after we've processed it for our
+	 * meta-data.
+	 */
+	man_node_delete(m, m->last);
+	return(1);
+}
+
+static int
+post_nf(CHKARGS)
+{
+
+	if (MAN_LITERAL & m->flags)
+		man_nmsg(m, n, MANDOCERR_SCOPEREP);
+
+	m->flags |= MAN_LITERAL;
+	return(1);
+}
+
+static int
+post_fi(CHKARGS)
+{
+
+	if ( ! (MAN_LITERAL & m->flags))
+		man_nmsg(m, n, MANDOCERR_NOSCOPE);
+
+	m->flags &= ~MAN_LITERAL;
+	return(1);
+}
+
+static int
+post_UC(CHKARGS)
+{
+	static const char * const bsd_versions[] = {
+	    "3rd Berkeley Distribution",
+	    "4th Berkeley Distribution",
+	    "4.2 Berkeley Distribution",
+	    "4.3 Berkeley Distribution",
+	    "4.4 Berkeley Distribution",
+	};
+
+	const char	*p, *s;
+
+	n = n->child;
+	n = m->last->child;
+
+	if (NULL == n || MAN_TEXT != n->type)
+		p = bsd_versions[0];
+	else {
+		s = n->string;
+		if (0 == strcmp(s, "3"))
+			p = bsd_versions[0];
+		else if (0 == strcmp(s, "4"))
+			p = bsd_versions[1];
+		else if (0 == strcmp(s, "5"))
+			p = bsd_versions[2];
+		else if (0 == strcmp(s, "6"))
+			p = bsd_versions[3];
+		else if (0 == strcmp(s, "7"))
+			p = bsd_versions[4];
+		else
+			p = bsd_versions[0];
+	}
+
+	if (m->meta.source)
+		free(m->meta.source);
+
+	m->meta.source = mandoc_strdup(p);
+	return(1);
+}
+
+static int
+post_AT(CHKARGS)
+{
+	static const char * const unix_versions[] = {
+	    "7th Edition",
+	    "System III",
+	    "System V",
+	    "System V Release 2",
+	};
+
+	const char	*p, *s;
+	struct man_node	*nn;
+
+	n = n->child;
+
+	if (NULL == n || MAN_TEXT != n->type)
+		p = unix_versions[0];
+	else {
+		s = n->string;
+		if (0 == strcmp(s, "3"))
+			p = unix_versions[0];
+		else if (0 == strcmp(s, "4"))
+			p = unix_versions[1];
+		else if (0 == strcmp(s, "5")) {
+			nn = n->next;
+			if (nn && MAN_TEXT == nn->type && nn->string[0])
+				p = unix_versions[3];
+			else
+				p = unix_versions[2];
+		} else
+			p = unix_versions[0];
+	}
+
+	if (m->meta.source)
+		free(m->meta.source);
+
+	m->meta.source = mandoc_strdup(p);
+	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-30 15:24 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-30 15:24 mdocml: Move all man_action.c routines into man_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).