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

Diff for /texi2mdoc/main.c between version 1.34 and 1.39

version 1.34, 2015/02/23 14:36:03 version 1.39, 2015/02/23 20:54:53
Line 14 
Line 14 
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */   */
   #if defined(__linux__) || defined(__MINT__)
   # define _GNU_SOURCE /* memmem */
   #endif
 #include <sys/mman.h>  #include <sys/mman.h>
 #include <sys/stat.h>  #include <sys/stat.h>
   
Line 106  static const struct texitok __texitoks[TEXICMD__MAX] =
Line 109  static const struct texitok __texitoks[TEXICMD__MAX] =
         { doinline, "code", 4 }, /* TEXICMD_CODE */          { doinline, "code", 4 }, /* TEXICMD_CODE */
         { dosymbol, ":", 1 }, /* TEXICMD_COLON */          { dosymbol, ":", 1 }, /* TEXICMD_COLON */
         { NULL, "columnfractions", 15 }, /* TEXICMD_COLUMNFRACTIONS */          { NULL, "columnfractions", 15 }, /* TEXICMD_COLUMNFRACTIONS */
           { dosymbol, "comma", 5 }, /* TEXICMD_COMMA */
         { doinline, "command", 7 }, /* TEXICMD_COMMAND */          { doinline, "command", 7 }, /* TEXICMD_COMMAND */
         { doignline, "c", 1 }, /* TEXICMD_COMMENT */          { doignline, "c", 1 }, /* TEXICMD_COMMENT */
         { doignline, "comment", 7 }, /* TEXICMD_COMMENT_LONG */          { doignline, "comment", 7 }, /* TEXICMD_COMMENT_LONG */
Line 225  static const struct texitok __texitoks[TEXICMD__MAX] =
Line 229  static const struct texitok __texitoks[TEXICMD__MAX] =
         { dosection, "section", 7 }, /* TEXICMD_SECTION */          { dosection, "section", 7 }, /* TEXICMD_SECTION */
         { dovalue, "set", 3 }, /* TEXICMD_SET */          { dovalue, "set", 3 }, /* TEXICMD_SET */
         { doignline, "setchapternewpage", 17 }, /* TEXICMD_SETCHAPNEWPAGE */          { doignline, "setchapternewpage", 17 }, /* TEXICMD_SETCHAPNEWPAGE */
           { doignline, "setcontentsaftertitlepage", 25 }, /* TEXICMD_SETCONTENTSAFTER */
         { doignline, "setfilename", 11 }, /* TEXICMD_SETFILENAME */          { doignline, "setfilename", 11 }, /* TEXICMD_SETFILENAME */
         { dotitle, "settitle", 8 }, /* TEXICMD_SETTITLE */          { dotitle, "settitle", 8 }, /* TEXICMD_SETTITLE */
         { doignline, "shortcontents", 13 }, /* TEXICMD_SHORTCONTENTS */          { doignline, "shortcontents", 13 }, /* TEXICMD_SHORTCONTENTS */
Line 239  static const struct texitok __texitoks[TEXICMD__MAX] =
Line 244  static const struct texitok __texitoks[TEXICMD__MAX] =
         { dodisplay, "smallindentblock", 16 }, /* TEXICMD_SMALLINDENTBLOCK */          { dodisplay, "smallindentblock", 16 }, /* TEXICMD_SMALLINDENTBLOCK */
         { dosymbol, "{", 1 }, /* TEXICMD_SQUIGGLE_LEFT */          { dosymbol, "{", 1 }, /* TEXICMD_SQUIGGLE_LEFT */
         { dosymbol, "}", 1 }, /* TEXICMD_SQUIGGLE_RIGHT */          { dosymbol, "}", 1 }, /* TEXICMD_SQUIGGLE_RIGHT */
           { dosymbol, "ss", 2 }, /* TEXICMD_SS */
         { doinline, "strong", 6 }, /* TEXICMD_STRONG */          { doinline, "strong", 6 }, /* TEXICMD_STRONG */
         { dosubsection, "subheading", 10 }, /* TEXICMD_SUBHEADING */          { dosubsection, "subheading", 10 }, /* TEXICMD_SUBHEADING */
         { dosubsection, "subsection", 10 }, /* TEXICMD_SUBSECTION */          { dosubsection, "subsection", 10 }, /* TEXICMD_SUBSECTION */
Line 254  static const struct texitok __texitoks[TEXICMD__MAX] =
Line 260  static const struct texitok __texitoks[TEXICMD__MAX] =
         { dotable, "table", 5 }, /* TEXICMD_TABLE */          { dotable, "table", 5 }, /* TEXICMD_TABLE */
         { doignblock, "tex", 3 }, /* TEXICMD_TEX */          { doignblock, "tex", 3 }, /* TEXICMD_TEX */
         { dosymbol, "TeX", 3 }, /* TEXICMD_TEXSYM */          { dosymbol, "TeX", 3 }, /* TEXICMD_TEXSYM */
           { dosymbol, "tie", 3 }, /* TEXICMD_TIE */
         { doaccent, "~", 1 }, /* TEXICMD_TILDE */          { doaccent, "~", 1 }, /* TEXICMD_TILDE */
         { doignline, "tindex", 6 }, /* TEXICMD_TINDEX */          { doignline, "tindex", 6 }, /* TEXICMD_TINDEX */
         { doignline, "title", 5 }, /* TEXICMD_TITLE */          { doignline, "title", 5 }, /* TEXICMD_TITLE */
Line 323  dodefn(struct texi *p, enum texicmd cmd, 
Line 330  dodefn(struct texi *p, enum texicmd cmd, 
         blk = NULL;          blk = NULL;
         switch (cmd) {          switch (cmd) {
         case (TEXICMD_DEFFN):          case (TEXICMD_DEFFN):
           case (TEXICMD_DEFMAC):
         case (TEXICMD_DEFTP):          case (TEXICMD_DEFTP):
         case (TEXICMD_DEFTYPEFN):          case (TEXICMD_DEFTYPEFN):
         case (TEXICMD_DEFTYPEFUN):          case (TEXICMD_DEFTYPEFUN):
Line 527  doignblock(struct texi *p, enum texicmd cmd, 
Line 535  doignblock(struct texi *p, enum texicmd cmd, 
          */           */
         term = memmem(&buf[*pos], sz, end, endsz);          term = memmem(&buf[*pos], sz, end, endsz);
         endpos = NULL == term ? sz :          endpos = NULL == term ? sz :
                 *pos + term - &buf[*pos];                  *pos + (size_t)(term - &buf[*pos]);
         assert(endpos <= sz);          assert(endpos <= sz);
         while (*pos < endpos)          while (*pos < endpos)
                 advance(p, buf, pos);                  advance(p, buf, pos);
Line 659  doverbatim(struct texi *p, enum texicmd cmd, 
Line 667  doverbatim(struct texi *p, enum texicmd cmd, 
          */           */
         term = memmem(&buf[*pos], sz, end, endsz);          term = memmem(&buf[*pos], sz, end, endsz);
         endpos = NULL == term ? sz :          endpos = NULL == term ? sz :
                 *pos + term - &buf[*pos];                  *pos + (size_t)(term - &buf[*pos]);
   
         teximacro(p, "Bd -literal -offset indent");          teximacro(p, "Bd -literal -offset indent");
         assert(endpos <= sz);          assert(endpos <= sz);
Line 1010  dosymbol(struct texi *p, enum texicmd cmd, 
Line 1018  dosymbol(struct texi *p, enum texicmd cmd, 
         case (TEXICMD_BULLET):          case (TEXICMD_BULLET):
                 texiputchars(p, "\\(bu");                  texiputchars(p, "\\(bu");
                 break;                  break;
           case (TEXICMD_COMMA):
                   texiputchar(p, ',');
                   break;
         case (TEXICMD_COPYRIGHT):          case (TEXICMD_COPYRIGHT):
                 texiputchars(p, "\\(co");                  texiputchars(p, "\\(co");
                 break;                  break;
Line 1044  dosymbol(struct texi *p, enum texicmd cmd, 
Line 1055  dosymbol(struct texi *p, enum texicmd cmd, 
         case (TEXICMD_SLASH):          case (TEXICMD_SLASH):
                 texiputchar(p, '/');                  texiputchar(p, '/');
                 break;                  break;
           case (TEXICMD_SS):
                   texiputchars(p, "\\(ss");
                   break;
         case (TEXICMD_SQUIGGLE_LEFT):          case (TEXICMD_SQUIGGLE_LEFT):
                 texiputchars(p, "{");                  texiputchars(p, "{");
                 break;                  break;
Line 1053  dosymbol(struct texi *p, enum texicmd cmd, 
Line 1067  dosymbol(struct texi *p, enum texicmd cmd, 
         case (TEXICMD_TEXSYM):          case (TEXICMD_TEXSYM):
                 texiputchars(p, "TeX");                  texiputchars(p, "TeX");
                 break;                  break;
           case (TEXICMD_TIE):
                   texiputchars(p, "\\ ");
                   break;
         case (TEXICMD_COLON):          case (TEXICMD_COLON):
         case (TEXICMD_HYPHEN):          case (TEXICMD_HYPHEN):
                 break;                  break;
Line 1195  dolink(struct texi *p, enum texicmd cmd, 
Line 1212  dolink(struct texi *p, enum texicmd cmd, 
                 break;                  break;
         case (TEXICMD_XREF):          case (TEXICMD_XREF):
                 texiputchars(p, "See Section");                  texiputchars(p, "See Section");
                 teximacroopen(p, "Qq");                  teximacroopen(p, "Dq");
                 break;                  break;
         case (TEXICMD_PXREF):          case (TEXICMD_PXREF):
                 texiputchars(p, "see Section");                  texiputchars(p, "see Section");
                 teximacroopen(p, "Qq");                  teximacroopen(p, "Dq");
                 break;                  break;
         case (TEXICMD_INFOREF):          case (TEXICMD_INFOREF):
                 texiputchars(p, "See Info file node");                  texiputchars(p, "See Info file node");
                 teximacroopen(p, "Qq");                  teximacroopen(p, "Dq");
                 break;                  break;
         default:          default:
                 abort();                  abort();
Line 1341  dosp(struct texi *p, enum texicmd cmd, 
Line 1358  dosp(struct texi *p, enum texicmd cmd, 
         const char *buf, size_t sz, size_t *pos)          const char *buf, size_t sz, size_t *pos)
 {  {
   
         texivspace(p);          if (p->literal)
                   texiputchar(p, '\n');
           else
                   texivspace(p);
         /* FIXME: ignore and parseeoln. */          /* FIXME: ignore and parseeoln. */
         advanceeoln(p, buf, sz, pos, 1);          advanceeoln(p, buf, sz, pos, 1);
 }  }
Line 1617  main(int argc, char *argv[])
Line 1637  main(int argc, char *argv[])
 {  {
         struct texi      texi;          struct texi      texi;
         int              c;          int              c;
         char            *path, *dir;          char            *dirpath, *dir, *ccp;
         const char      *progname, *Idir, *cp;          const char      *progname, *Idir, *cp;
   
         progname = strrchr(argv[0], '/');          progname = strrchr(argv[0], '/');
Line 1642  main(int argc, char *argv[])
Line 1662  main(int argc, char *argv[])
         if (0 == (argc -= optind))          if (0 == (argc -= optind))
                 goto usage;                  goto usage;
   
         if (NULL == (path = strdup(argv[0])))          if (NULL == (dirpath = strdup(argv[0])))
                 texiabort(&texi, NULL);                  texiabort(&texi, NULL);
         else if (NULL == (dir = dirname(path)))          if (NULL == (dir = dirname(dirpath)))
                 texiabort(&texi, NULL);                  texiabort(&texi, NULL);
   
         free(path);  
   
         if (NULL != (cp = strrchr(argv[0], '/')))          if (NULL != (cp = strrchr(argv[0], '/')))
                 texi.title = strdup(cp + 1);                  texi.title = strdup(cp + 1);
         else          else
Line 1656  main(int argc, char *argv[])
Line 1674  main(int argc, char *argv[])
   
         if (NULL == texi.title)          if (NULL == texi.title)
                 texiabort(&texi, NULL);                  texiabort(&texi, NULL);
         else if (NULL != (path = strchr(texi.title, '.')))          else if (NULL != (ccp = strchr(texi.title, '.')))
                 *path = '\0';                  *ccp = '\0';
   
         texi.ign = 1;          texi.ign = 1;
         texi.dirs = parsedirs(&texi, dir, Idir, &texi.dirsz);          texi.dirs = parsedirs(&texi, dir, Idir, &texi.dirsz);
           free(dirpath);
         parsefile(&texi, argv[0], 1);          parsefile(&texi, argv[0], 1);
         /* We shouldn't get here. */          /* We shouldn't get here. */
         texiexit(&texi);          texiexit(&texi);

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.39

CVSweb