[BACK]Return to statistics.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / docbook2mdoc

Diff for /docbook2mdoc/statistics.c between version 1.13 and 1.28

version 1.13, 2019/04/03 18:52:40 version 1.28, 2019/04/14 18:28:41
Line 46 
Line 46 
  *   *
  * Example usage:   * Example usage:
  * statistics tgroup colspec < filenames.txt | grep colspec   * statistics tgroup colspec < filenames.txt | grep colspec
    *
    * Synchronized with parse.c up to rev. 1.42.
  */   */
   
 struct entry {  struct entry {
Line 209  parse_file(int fd, char *fname)
Line 211  parse_file(int fd, char *fname)
         size_t           rlen;  /* Number of bytes in b[]. */          size_t           rlen;  /* Number of bytes in b[]. */
         size_t           poff;  /* Parse offset in b[]. */          size_t           poff;  /* Parse offset in b[]. */
         size_t           pend;  /* Offset of the end of the current word. */          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;          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) {          while ((rsz = read(fd, b + rlen, sizeof(b) - rlen - 1)) >= 0) {
                 if ((rlen += rsz) == 0)                  if ((rlen += rsz) == 0)
                         break;                          break;
Line 249  parse_file(int fd, char *fname)
Line 251  parse_file(int fd, char *fname)
                                 if (elem_end)                                  if (elem_end)
                                         stack_pop(NULL);                                          stack_pop(NULL);
                         } else if (in_tag) {                          } else if (in_tag) {
                                   if (in_doctype && b[pend] == '[') {
                                           in_tag = in_doctype = 0;
                                           pend++;
                                           continue;
                                   }
                                 if (advance(b, rlen, &pend, " =>") && rsz > 0)                                  if (advance(b, rlen, &pend, " =>") && rsz > 0)
                                         break;                                          break;
                                 elem_end = 0;                                  elem_end = 0;
Line 299  parse_file(int fd, char *fname)
Line 306  parse_file(int fd, char *fname)
                                 if (b[++poff] == '/') {                                  if (b[++poff] == '/') {
                                         elem_end = 1;                                          elem_end = 1;
                                         poff++;                                          poff++;
                                   } else if (strcasecmp(b + poff,
                                       "!DOCTYPE") == 0) {
                                           in_doctype = 1;
                                 } else if (b[poff] != '!' && b[poff] != '?') {                                  } else if (b[poff] != '!' && b[poff] != '?') {
                                         table_add(stacki > 0 ?                                          table_add(stacki > 0 ?
                                             stack[stacki - 1] : "ROOT",                                              stack[stacki - 1] : "ROOT",
                                             b + poff);                                              b + poff);
                                         stack_push(b + poff);                                          stack_push(b + poff);
                                           if (strcmp(b + poff, "sbr") == 0)
                                                   elem_end = 1;
                                 }                                  }
                                 if (elem_end)                                  if (elem_end)
                                         stack_pop(b + poff);                                          stack_pop(b + poff);
Line 314  parse_file(int fd, char *fname)
Line 326  parse_file(int fd, char *fname)
                         }                          }
                 }                  }
                 assert(poff > 0);                  assert(poff > 0);
                 memmove(b, b + poff, rlen - poff);  
                 rlen -= poff;                  rlen -= poff;
                   memmove(b, b + poff, rlen);
         }          }
         if (rsz < 0)          if (rsz < 0)
                 perror(fname);                  perror(fname);
Line 348  main(int argc, char *argv[])
Line 360  main(int argc, char *argv[])
   
         /* Exclude relations that are already fully implemented. */          /* Exclude relations that are already fully implemented. */
         if (show_all == 0) {          if (show_all == 0) {
                   table_add("ROOT", "article");
                   table_add("ROOT", "book");
                   table_add("ROOT", "chapter");
                 table_add("ROOT", "refentry");                  table_add("ROOT", "refentry");
                 table_add("acronym", "TEXT");                  table_add("acronym", "TEXT");
                   table_add("affiliation", "orgdiv");
                   table_add("affiliation", "orgname");
                   table_add("appendix", NULL);
                   table_add("application", "TEXT");
                   table_add("arg", "option");
                   table_add("article", NULL);
                   table_add("articleinfo", "author");
                   table_add("articleinfo", "authorgroup");
                   table_add("articleinfo", "copyright");
                   table_add("articleinfo", "date");
                   table_add("articleinfo", "legalnotice");
                   table_add("articleinfo", "pubdate");
                   table_add("articleinfo", "releaseinfo");
                   table_add("articleinfo", "subtitle");
                   table_add("articleinfo", "title");
                   table_add("author", "affiliation");
                   table_add("author", "contrib");
                   table_add("author", "email");
                   table_add("author", "firstname");
                   table_add("author", "othername");
                   table_add("author", "surname");
                   table_add("author", "TEXT");
                   table_add("authorgroup", "author");
                   table_add("authorgroup", "editor");
                   table_add("authorgroup", "othercredit");
                   table_add("blockquote", NULL);
                   table_add("book", NULL);
                   table_add("bookinfo", "authorgroup");
                   table_add("bookinfo", "copyright");
                   table_add("bookinfo", "legalnotice");
                   table_add("bookinfo", "pubdate");
                   table_add("bookinfo", "releaseinfo");
                   table_add("bookinfo", "subtitle");
                   table_add("bookinfo", "title");
                 table_add("chapter", NULL);                  table_add("chapter", NULL);
                   table_add("citerefentry", "manvolnum");
                   table_add("citerefentry", "refentrytitle");
                   table_add("citetitle", "TEXT");
                   table_add("cmdsynopsis", "arg");
                   table_add("cmdsynopsis", "command");
                   table_add("cmdsynopsis", "group");
                 table_add("code", "TEXT");                  table_add("code", "TEXT");
                   table_add("command", "TEXT");
                   table_add("computeroutput", "TEXT");
                 table_add("constant", "TEXT");                  table_add("constant", "TEXT");
                   table_add("contrib", "TEXT");
                   table_add("copyright", "holder");
                   table_add("copyright", "year");
                   table_add("date", "TEXT");
                   table_add("editor", "affiliation");
                   table_add("editor", "firstname");
                   table_add("editor", "surname");
                   table_add("email", "TEXT");
                 table_add("emphasis", "TEXT");                  table_add("emphasis", "TEXT");
                 table_add("entry", NULL);                  table_add("entry", NULL);
                 table_add("errorname", "TEXT");                  table_add("errorname", "TEXT");
                 table_add("filename", "TEXT");                  table_add("filename", "TEXT");
                   table_add("firstname", "TEXT");
                   table_add("firstterm", "TEXT");
                 table_add("funcdef", "function");                  table_add("funcdef", "function");
                 table_add("funcdef", "TEXT");                  table_add("funcdef", "TEXT");
                 table_add("funcprototype", "funcdef");                  table_add("funcprototype", "funcdef");
Line 365  main(int argc, char *argv[])
Line 432  main(int argc, char *argv[])
                 table_add("funcsynopsis", "funcsynopsisinfo");                  table_add("funcsynopsis", "funcsynopsisinfo");
                 table_add("funcsynopsisinfo", "TEXT");                  table_add("funcsynopsisinfo", "TEXT");
                 table_add("function", "TEXT");                  table_add("function", "TEXT");
                   table_add("glossary", "glossdiv");
                   table_add("glossary", "glossentry");
                   table_add("glossdef", "para");
                   table_add("glossdiv", "glossentry");
                   table_add("glossentry", "glossdef");
                   table_add("glossentry", "glossterm");
                   table_add("glossentry", "indexterm");
                   table_add("glosslist", "glossentry");
                   table_add("glossterm", "TEXT");
                   table_add("group", "arg");
                   table_add("holder", "TEXT");
                 table_add("indexterm", "primary");                  table_add("indexterm", "primary");
                 table_add("indexterm", "secondary");                  table_add("indexterm", "secondary");
                 table_add("informaltable", "tgroup");                  table_add("informaltable", "tgroup");
                 table_add("itemizedlist", "listitem");                  table_add("itemizedlist", "listitem");
                   table_add("keycap", "TEXT");
                   table_add("keycode", "TEXT");
                   table_add("keysym", "TEXT");
                   table_add("legalnotice", NULL);
                   table_add("link", NULL);
                 table_add("listitem", NULL);                  table_add("listitem", NULL);
                 table_add("literal", "TEXT");                  table_add("literal", "TEXT");
                 table_add("literallayout", NULL);                  table_add("literallayout", NULL);
                   table_add("manvolnum", "TEXT");
                   table_add("markup", "TEXT");
                 table_add("member", "TEXT");                  table_add("member", "TEXT");
                   table_add("note", NULL);
                   table_add("option", "TEXT");
                 table_add("orderedlist", "listitem");                  table_add("orderedlist", "listitem");
                   table_add("orgdiv", "TEXT");
                   table_add("orgname", "TEXT");
                   table_add("othercredit", "affiliation");
                   table_add("othercredit", "contrib");
                   table_add("othercredit", "email");
                   table_add("othercredit", "firstname");
                   table_add("othercredit", "othername");
                   table_add("othercredit", "surname");
                   table_add("othername", "TEXT");
                 table_add("para", NULL);                  table_add("para", NULL);
                 table_add("paramdef", "parameter");                  table_add("paramdef", "parameter");
                 table_add("paramdef", "TEXT");                  table_add("paramdef", "TEXT");
                 table_add("parameter", "TEXT");                  table_add("parameter", "TEXT");
                   table_add("part", NULL);
                   table_add("personname", "firstname");
                   table_add("personname", "surname");
                   table_add("phrase", "TEXT");
                   table_add("preface", NULL);
                 table_add("primary", NULL);                  table_add("primary", NULL);
                 table_add("programlisting", NULL);                  table_add("programlisting", NULL);
                   table_add("property", "TEXT");
                   table_add("pubdate", "TEXT");
                   table_add("quote", "literal");
                   table_add("quote", "TEXT");
                   table_add("refentry", "refentryinfo");
                 table_add("refentry", "refmeta");                  table_add("refentry", "refmeta");
                 table_add("refentry", "refnamediv");                  table_add("refentry", "refnamediv");
                 table_add("refentry", "refsect1");                  table_add("refentry", "refsect1");
                 table_add("refentry", "refsynopsisdiv");                  table_add("refentry", "refsynopsisdiv");
                   table_add("refentryinfo", "author");
                   table_add("refentryinfo", "copyright");
                   table_add("refentryinfo", "date");
                   table_add("refentrytitle", "TEXT");
                 table_add("refmeta", "manvolnum");                  table_add("refmeta", "manvolnum");
                 table_add("refmeta", "refentrytitle");                  table_add("refmeta", "refentrytitle");
                   table_add("refmeta", "refmiscinfo");
                   table_add("refmiscinfo", "TEXT");
                 table_add("refname", "TEXT");                  table_add("refname", "TEXT");
                 table_add("refnamediv", "refname");                  table_add("refnamediv", "refname");
                 table_add("refnamediv", "refpurpose");                  table_add("refnamediv", "refpurpose");
                 table_add("refpurpose", "TEXT");                  table_add("refpurpose", "TEXT");
                 table_add("refsect1", NULL);                  table_add("refsect1", NULL);
                 table_add("refsect2", NULL);                  table_add("refsect2", NULL);
                   table_add("refsynopsisdiv", "cmdsynopsis");
                 table_add("refsynopsisdiv", "funcsynopsis");                  table_add("refsynopsisdiv", "funcsynopsis");
                   table_add("releaseinfo", "TEXT");
                   table_add("replaceable", "TEXT");
                   table_add("returnvalue", "TEXT");
                 table_add("row", "entry");                  table_add("row", "entry");
                 table_add("screen", NULL);                  table_add("screen", NULL);
                 table_add("secondary", NULL);                  table_add("secondary", NULL);
Line 402  main(int argc, char *argv[])
Line 518  main(int argc, char *argv[])
                 table_add("sect3", NULL);                  table_add("sect3", NULL);
                 table_add("sect4", NULL);                  table_add("sect4", NULL);
                 table_add("sgmltag", "TEXT");                  table_add("sgmltag", "TEXT");
                   table_add("simpara", NULL);
                 table_add("simplelist", "member");                  table_add("simplelist", "member");
                   table_add("simplesect", NULL);
                 table_add("structfield", "TEXT");                  table_add("structfield", "TEXT");
                 table_add("structname", "TEXT");                  table_add("structname", "TEXT");
                   table_add("subtitle", "TEXT");
                   table_add("surname", "TEXT");
                 table_add("symbol", "TEXT");                  table_add("symbol", "TEXT");
                   table_add("synopsis", "TEXT");
                   table_add("systemitem", "TEXT");
                 table_add("table", "tgroup");                  table_add("table", "tgroup");
                 table_add("table", "title");                  table_add("table", "title");
                 table_add("tbody", "row");                  table_add("tbody", "row");
Line 415  main(int argc, char *argv[])
Line 537  main(int argc, char *argv[])
                 table_add("tgroup", "thead");                  table_add("tgroup", "thead");
                 table_add("thead", "row");                  table_add("thead", "row");
                 table_add("title", "TEXT");                  table_add("title", "TEXT");
                   table_add("trademark", "TEXT");
                 table_add("type", "TEXT");                  table_add("type", "TEXT");
                   table_add("ulink", NULL);
                 table_add("userinput", "TEXT");                  table_add("userinput", "TEXT");
                 table_add("variablelist", "varlistentry");                  table_add("variablelist", "varlistentry");
                 table_add("varlistentry", "listitem");                  table_add("varlistentry", "listitem");
                 table_add("varlistentry", "term");                  table_add("varlistentry", "term");
                   table_add("varname", "TEXT");
                   table_add("warning", NULL);
                   table_add("year", "TEXT");
         }          }
         table_add(NULL, NULL);          table_add(NULL, NULL);
   

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.28

CVSweb