source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* docbook2mdoc: Add refmetainfo, which seems to be a holdover from early
@ 2014-04-30 12:54 kristaps
  0 siblings, 0 replies; only message in thread
From: kristaps @ 2014-04-30 12:54 UTC (permalink / raw)
  To: source

Log Message:
-----------
Add refmetainfo, which seems to be a holdover from early DocBook days.
Also add the -W flag to differentiate failure and warning in scanning output.

Modified Files:
--------------
    docbook2mdoc:
        docbook2mdoc.1
        docbook2mdoc.c
        extern.h
        rules.c

Revision Data
-------------
Index: extern.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/docbook2mdoc/extern.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -Lextern.h -Lextern.h -u -p -r1.20 -r1.21
--- extern.h
+++ extern.h
@@ -52,6 +52,7 @@ enum	nodeid {
 	NODE_REFENTRYINFO,
 	NODE_REFENTRYTITLE,
 	NODE_REFMETA,
+	NODE_REFMETAINFO,
 	NODE_REFMISCINFO,
 	NODE_REFNAME,
 	NODE_REFNAMEDIV,
Index: docbook2mdoc.1
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/docbook2mdoc/docbook2mdoc.1,v
retrieving revision 1.3
retrieving revision 1.4
diff -Ldocbook2mdoc.1 -Ldocbook2mdoc.1 -u -p -r1.3 -r1.4
--- docbook2mdoc.1
+++ docbook2mdoc.1
@@ -38,7 +38,11 @@ If unspecified or
 .Ar \&- ,
 .Ar file
 is taken to be standard input.
-It accepts no arguments.
+The arguments are as follows:
+.Bl -tag -width Ds
+.It Fl W
+Output non-fatal warning messages.
+.El
 .Pp
 .Nm
 supports only well-formed XML DocBook V4.x until V5.1.
Index: docbook2mdoc.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/docbook2mdoc/docbook2mdoc.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -Ldocbook2mdoc.c -Ldocbook2mdoc.c -u -p -r1.37 -r1.38
--- docbook2mdoc.c
+++ docbook2mdoc.c
@@ -133,6 +133,7 @@ static	const struct node nodes[NODE__MAX
 	{ "refentryinfo", NODE_IGNTEXT }, 
 	{ "refentrytitle", 0 }, 
 	{ "refmeta", NODE_IGNTEXT }, 
+	{ "refmetainfo", NODE_IGNTEXT }, 
 	{ "refmiscinfo", NODE_IGNTEXT }, 
 	{ "refname", 0 }, 
 	{ "refnamediv", NODE_IGNTEXT }, 
@@ -169,6 +170,8 @@ static	const struct node nodes[NODE__MAX
 	{ "year", NODE_IGNTEXT }, 
 };
 
+static	int warn = 0;
+
 static void
 pnode_print(struct parse *p, struct pnode *pn);
 
@@ -346,32 +349,35 @@ xml_elem_start(void *arg, const XML_Char
 			if (0 == strcmp(*att, attrkeys[key]))
 				break;
 		if (ATTRKEY__MAX == key) {
-			fprintf(stderr, "%s:%zu:%zu: warning: "
-				"unknown attribute \"%s\"\n", 
-				ps->fname, 
-				XML_GetCurrentLineNumber(ps->xml),
-				XML_GetCurrentColumnNumber(ps->xml), 
-				*att);
+			if (warn) 
+				fprintf(stderr, "%s:%zu:%zu: warning: "
+					"unknown attribute \"%s\"\n", 
+					ps->fname, 
+					XML_GetCurrentLineNumber(ps->xml),
+					XML_GetCurrentColumnNumber(ps->xml), 
+					*att);
 			continue;
 		} else if ( ! isattrkey(node, key)) {
-			fprintf(stderr, "%s:%zu:%zu: warning: "
-				"bad attribute \"%s\"\n", 
-				ps->fname, 
-				XML_GetCurrentLineNumber(ps->xml),
-				XML_GetCurrentColumnNumber(ps->xml), 
-				*att);
+			if (warn)
+				fprintf(stderr, "%s:%zu:%zu: warning: "
+					"bad attribute \"%s\"\n", 
+					ps->fname, 
+					XML_GetCurrentLineNumber(ps->xml),
+					XML_GetCurrentColumnNumber(ps->xml), 
+					*att);
 			continue;
 		}
 		for (val = 0; val < ATTRVAL__MAX; val++)
 			if (0 == strcmp(*(att + 1), attrvals[val]))
 				break;
 		if (ATTRVAL__MAX != val && ! isattrval(key, val)) {
-			fprintf(stderr, "%s:%zu:%zu: warning: "
-				"bad attribute value \"%s\"\n", 
-				ps->fname, 
-				XML_GetCurrentLineNumber(ps->xml),
-				XML_GetCurrentColumnNumber(ps->xml), 
-				*(att + 1));
+			if (warn)
+				fprintf(stderr, "%s:%zu:%zu: warning: "
+					"bad attribute value \"%s\"\n", 
+					ps->fname, 
+					XML_GetCurrentLineNumber(ps->xml),
+					XML_GetCurrentColumnNumber(ps->xml), 
+					*(att + 1));
 			continue;
 		}
 		pattr = calloc(1, sizeof(struct pattr));
@@ -1468,15 +1474,28 @@ main(int argc, char *argv[])
 	XML_Parser	 xp;
 	const char	*fname;
 	char		*buf;
-	int		 fd, rc;
+	int		 fd, rc, ch;
+	const char	*progname;
+
+	progname = strrchr(argv[0], '/');
+	if (progname == NULL)
+		progname = argv[0];
+	else
+		++progname;
 
 	fname = "-";
 	xp = NULL;
 	buf = NULL;
 	rc = 0;
 
-	if (-1 != getopt(argc, argv, ""))
-		return(EXIT_FAILURE);
+	while (-1 != (ch = getopt(argc, argv, "W")))
+		switch (ch) {
+		case ('W'):
+			warn = 1;
+			break;
+		default:
+			goto usage;
+		}
 
 	argc -= optind;
 	argv += optind;
@@ -1510,4 +1529,8 @@ main(int argc, char *argv[])
 	if (STDIN_FILENO != fd)
 		close(fd);
 	return(rc ? EXIT_SUCCESS : EXIT_FAILURE);
+
+usage:
+	fprintf(stderr, "usage: %s [-W]\n", progname);
+	return(EXIT_FAILURE);
 }
Index: rules.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/docbook2mdoc/rules.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -Lrules.c -Lrules.c -u -p -r1.20 -r1.21
--- rules.c
+++ rules.c
@@ -267,6 +267,8 @@ isparent(enum nodeid node, enum nodeid p
 	case (NODE_COPYRIGHT):
 		switch (parent) {
 		case (NODE_INFO):
+		case (NODE_REFENTRYINFO):
+		case (NODE_REFMETAINFO):
 			return(1);
 		default:
 			break;
@@ -784,6 +786,8 @@ isparent(enum nodeid node, enum nodeid p
 		}
 	case (NODE_REFMETA):
 		return(parent == NODE_REFENTRY);
+	case (NODE_REFMETAINFO):
+		return(parent == NODE_REFMETA);
 	case (NODE_REFMISCINFO):
 		return(parent == NODE_REFMETA);
 	case (NODE_REFNAME):
--
 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:[~2014-04-30 12:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-30 12:54 docbook2mdoc: Add refmetainfo, which seems to be a holdover from early 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).