From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]) by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id 3e207c00 for ; Sun, 14 Apr 2019 11:27:04 -0500 (EST) Date: Sun, 14 Apr 2019 11:27:04 -0500 (EST) X-Mailinglist: mandoc-source Reply-To: source@mandoc.bsd.lv MIME-Version: 1.0 From: schwarze@mandoc.bsd.lv To: source@mandoc.bsd.lv Subject: docbook2mdoc: Parse internal subset declarations in tags as X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Message-ID: Log Message: ----------- Parse internal subset declarations in tags as XML; in particular, they can contain XML comments. Similar to parts of parse.c rev. 1.23, but simpler. Modified Files: -------------- docbook2mdoc: statistics.c Revision Data ------------- Index: statistics.c =================================================================== RCS file: /home/cvs/mdocml/docbook2mdoc/statistics.c,v retrieving revision 1.25 retrieving revision 1.26 diff -Lstatistics.c -Lstatistics.c -u -p -r1.25 -r1.26 --- statistics.c +++ statistics.c @@ -211,10 +211,10 @@ parse_file(int fd, char *fname) size_t rlen; /* Number of bytes in b[]. */ size_t poff; /* Parse offset in b[]. */ size_t pend; /* Offset of the end of the current word. */ - int in_tag, in_arg, in_quotes, elem_end; + int in_tag, in_arg, in_quotes, in_doctype, elem_end; rlen = 0; - in_tag = in_arg = in_quotes = 0; + in_tag = in_arg = in_quotes = in_doctype = 0; while ((rsz = read(fd, b + rlen, sizeof(b) - rlen - 1)) >= 0) { if ((rlen += rsz) == 0) break; @@ -251,6 +251,11 @@ parse_file(int fd, char *fname) if (elem_end) stack_pop(NULL); } else if (in_tag) { + if (in_doctype && b[pend] == '[') { + in_tag = in_doctype = 0; + pend++; + continue; + } if (advance(b, rlen, &pend, " =>") && rsz > 0) break; elem_end = 0; @@ -301,6 +306,9 @@ parse_file(int fd, char *fname) if (b[++poff] == '/') { elem_end = 1; poff++; + } else if (strcasecmp(b + poff, + "!DOCTYPE") == 0) { + in_doctype = 1; } else if (b[poff] != '!' && b[poff] != '?') { table_add(stacki > 0 ? stack[stacki - 1] : "ROOT", -- To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv