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

Diff for /texi2mdoc/main.c between version 1.14 and 1.15

version 1.14, 2015/02/19 08:09:55 version 1.15, 2015/02/19 09:28:42
Line 60  enum texicmd {
Line 60  enum texicmd {
         TEXICMD_CONTENTS,          TEXICMD_CONTENTS,
         TEXICMD_COPYING,          TEXICMD_COPYING,
         TEXICMD_COPYRIGHT,          TEXICMD_COPYRIGHT,
           TEXICMD_DEFFN,
           TEXICMD_DEFFNX,
           TEXICMD_DEFMAC,
           TEXICMD_DEFMACX,
           TEXICMD_DEFTP,
           TEXICMD_DEFTPX,
         TEXICMD_DEFTYPEFN,          TEXICMD_DEFTYPEFN,
         TEXICMD_DEFTYPEFNX,          TEXICMD_DEFTYPEFNX,
         TEXICMD_DEFTYPEFUN,          TEXICMD_DEFTYPEFUN,
         TEXICMD_DEFTYPEFUNX,          TEXICMD_DEFTYPEFUNX,
         TEXICMD_DEFTYPEVAR,          TEXICMD_DEFTYPEVAR,
           TEXICMD_DEFTYPEVARX,
         TEXICMD_DEFTYPEVR,          TEXICMD_DEFTYPEVR,
           TEXICMD_DEFTYPEVRX,
           TEXICMD_DEFUN,
           TEXICMD_DEFUNX,
           TEXICMD_DEFVAR,
           TEXICMD_DEFVARX,
           TEXICMD_DEFVR,
           TEXICMD_DEFVRX,
         TEXICMD_DETAILMENU,          TEXICMD_DETAILMENU,
         TEXICMD_DFN,          TEXICMD_DFN,
         TEXICMD_DIRCATEGORY,          TEXICMD_DIRCATEGORY,
Line 77  enum texicmd {
Line 91  enum texicmd {
         TEXICMD_END,          TEXICMD_END,
         TEXICMD_ENUMERATE,          TEXICMD_ENUMERATE,
         TEXICMD_ENV,          TEXICMD_ENV,
           TEXICMD_ERROR,
         TEXICMD_EXAMPLE,          TEXICMD_EXAMPLE,
         TEXICMD_FILE,          TEXICMD_FILE,
         TEXICMD_GROUP,          TEXICMD_GROUP,
Line 108  enum texicmd {
Line 123  enum texicmd {
         TEXICMD_LATEX,          TEXICMD_LATEX,
         TEXICMD_MATH,          TEXICMD_MATH,
         TEXICMD_MENU,          TEXICMD_MENU,
           TEXICMD_NEED,
         TEXICMD_NEWLINE,          TEXICMD_NEWLINE,
         TEXICMD_NODE,          TEXICMD_NODE,
         TEXICMD_NOINDENT,          TEXICMD_NOINDENT,
Line 119  enum texicmd {
Line 135  enum texicmd {
         TEXICMD_PRINTINDEX,          TEXICMD_PRINTINDEX,
         TEXICMD_R,          TEXICMD_R,
         TEXICMD_REF,          TEXICMD_REF,
           TEXICMD_RESULT,
         TEXICMD_SAMP,          TEXICMD_SAMP,
         TEXICMD_SANSSERIF,          TEXICMD_SANSSERIF,
         TEXICMD_SC,          TEXICMD_SC,
Line 226  struct texi {
Line 243  struct texi {
 static  void doblock(struct texi *, enum texicmd, const char *, size_t, size_t *);  static  void doblock(struct texi *, enum texicmd, const char *, size_t, size_t *);
 static  void dobracket(struct texi *, enum texicmd, const char *, size_t, size_t *);  static  void dobracket(struct texi *, enum texicmd, const char *, size_t, size_t *);
 static  void dobye(struct texi *, enum texicmd, const char *, size_t, size_t *);  static  void dobye(struct texi *, enum texicmd, const char *, size_t, size_t *);
 static  void dodeftypefun(struct texi *, enum texicmd, const char *, size_t, size_t *);  static  void dodefn(struct texi *, enum texicmd, const char *, size_t, size_t *);
 static  void dodeftypevar(struct texi *, enum texicmd, const char *, size_t, size_t *);  
 static  void dodisplay(struct texi *, enum texicmd, const char *, size_t, size_t *);  static  void dodisplay(struct texi *, enum texicmd, const char *, size_t, size_t *);
 static  void doenumerate(struct texi *, enum texicmd, const char *, size_t, size_t *);  static  void doenumerate(struct texi *, enum texicmd, const char *, size_t, size_t *);
 static  void doexample(struct texi *, enum texicmd, const char *, size_t, size_t *);  static  void doexample(struct texi *, enum texicmd, const char *, size_t, size_t *);
Line 276  static const struct texitok texitoks[TEXICMD__MAX] = {
Line 292  static const struct texitok texitoks[TEXICMD__MAX] = {
         { doignline, "contents", 8 }, /* TEXICMD_CONTENTS */          { doignline, "contents", 8 }, /* TEXICMD_CONTENTS */
         { doignblock, "copying", 7 }, /* TEXICMD_COPYING */          { doignblock, "copying", 7 }, /* TEXICMD_COPYING */
         { dosymbol, "copyright", 9 }, /* TEXICMD_COPYRIGHT */          { dosymbol, "copyright", 9 }, /* TEXICMD_COPYRIGHT */
         { dodeftypefun, "deftypefn", 9 }, /* TEXICMD_DEFTYPEFN */          { dodefn, "deffn", 5 }, /* TEXICMD_DEFFN */
         { dodeftypefun, "deftypefnx", 10 }, /* TEXICMD_DEFTYPEFNX */          { dodefn, "deffnx", 6 }, /* TEXICMD_DEFFNX */
         { dodeftypefun, "deftypefun", 10 }, /* TEXICMD_DEFTYPEFUN */          { dodefn, "defmac", 6 }, /* TEXICMD_DEFMAC */
         { dodeftypefun, "deftypefunx", 11 }, /* TEXICMD_DEFTYPEFUNX */          { dodefn, "defmacx", 7 }, /* TEXICMD_DEFMACX */
         { dodeftypevar, "deftypevar", 10 }, /* TEXICMD_DEFTYPEVAR */          { dodefn, "deftp", 5 }, /* TEXICMD_DEFTP */
         { dodeftypevar, "deftypevr", 9 }, /* TEXICMD_DEFTYPEVR */          { dodefn, "deftpx", 6 }, /* TEXICMD_DEFTPX */
           { dodefn, "deftypefn", 9 }, /* TEXICMD_DEFTYPEFN */
           { dodefn, "deftypefnx", 10 }, /* TEXICMD_DEFTYPEFNX */
           { dodefn, "deftypefun", 10 }, /* TEXICMD_DEFTYPEFUN */
           { dodefn, "deftypefunx", 11 }, /* TEXICMD_DEFTYPEFUNX */
           { dodefn, "deftypevar", 10 }, /* TEXICMD_DEFTYPEVAR */
           { dodefn, "deftypevarx", 11 }, /* TEXICMD_DEFTYPEVARX */
           { dodefn, "deftypevr", 9 }, /* TEXICMD_DEFTYPEVR */
           { dodefn, "deftypevrx", 10 }, /* TEXICMD_DEFTYPEVRX */
           { dodefn, "defun", 5 }, /* TEXICMD_DEFUN */
           { dodefn, "defunx", 6 }, /* TEXICMD_DEFUNX */
           { dodefn, "defvar", 6 }, /* TEXICMD_DEFVAR */
           { dodefn, "defvarx", 7 }, /* TEXICMD_DEFVARX */
           { dodefn, "defvr", 5 }, /* TEXICMD_DEFVR */
           { dodefn, "defvrx", 6 }, /* TEXICMD_DEFVRX */
         { doignblock, "detailmenu", 10 }, /* TEXICMD_DETAILMENU */          { doignblock, "detailmenu", 10 }, /* TEXICMD_DETAILMENU */
         { dofont, "dfn", 3 }, /* TEXICMD_DFN */          { dofont, "dfn", 3 }, /* TEXICMD_DFN */
         { doignline, "dircategory", 11 }, /* TEXICMD_DIRCATEGORY */          { doignline, "dircategory", 11 }, /* TEXICMD_DIRCATEGORY */
Line 293  static const struct texitok texitoks[TEXICMD__MAX] = {
Line 323  static const struct texitok texitoks[TEXICMD__MAX] = {
         { NULL, "end", 3 }, /* TEXICMD_END */          { NULL, "end", 3 }, /* TEXICMD_END */
         { doenumerate, "enumerate", 9 }, /* TEXICMD_ENUMERATE */          { doenumerate, "enumerate", 9 }, /* TEXICMD_ENUMERATE */
         { doinline, "env", 3 }, /* TEXICMD_ENV */          { doinline, "env", 3 }, /* TEXICMD_ENV */
           { dosymbol, "error", 5 }, /* TEXICMD_ERROR */
         { doexample, "example", 7 }, /* TEXICMD_EXAMPLE */          { doexample, "example", 7 }, /* TEXICMD_EXAMPLE */
         { doinline, "file", 4 }, /* TEXICMD_FILE */          { doinline, "file", 4 }, /* TEXICMD_FILE */
         { doblock, "group", 5 }, /* TEXICMD_GROUP */          { doblock, "group", 5 }, /* TEXICMD_GROUP */
Line 324  static const struct texitok texitoks[TEXICMD__MAX] = {
Line 355  static const struct texitok texitoks[TEXICMD__MAX] = {
         { dosymbol, "LaTeX", 5 }, /* TEXICMD_LATEX */          { dosymbol, "LaTeX", 5 }, /* TEXICMD_LATEX */
         { domath, "math", 4 }, /* TEXICMD_MATH */          { domath, "math", 4 }, /* TEXICMD_MATH */
         { doignblock, "menu", 4 }, /* TEXICMD_MENU */          { doignblock, "menu", 4 }, /* TEXICMD_MENU */
           { doignline, "need", 4 }, /* TEXICMD_NEED */
         { dosymbol, "\n", 1 }, /* TEXICMD_NEWLINE */          { dosymbol, "\n", 1 }, /* TEXICMD_NEWLINE */
         { doignline, "node", 4 }, /* TEXICMD_NODE */          { doignline, "node", 4 }, /* TEXICMD_NODE */
         { doignline, "noindent", 8 }, /* TEXICMD_NOINDENT */          { doignline, "noindent", 8 }, /* TEXICMD_NOINDENT */
Line 335  static const struct texitok texitoks[TEXICMD__MAX] = {
Line 367  static const struct texitok texitoks[TEXICMD__MAX] = {
         { doignline, "printindex", 10 }, /* TEXICMD_PRINTINDEX */          { doignline, "printindex", 10 }, /* TEXICMD_PRINTINDEX */
         { dofont, "r", 1 }, /* TEXICMD_R */          { dofont, "r", 1 }, /* TEXICMD_R */
         { dobracket, "ref", 3 }, /* TEXICMD_REF */          { dobracket, "ref", 3 }, /* TEXICMD_REF */
           { dosymbol, "result", 6 }, /* TEXICMD_RESULT */
         { dofont, "samp", 4 }, /* TEXICMD_SAMP */          { dofont, "samp", 4 }, /* TEXICMD_SAMP */
         { dofont, "sansserif", 9 }, /* TEXICMD_SANSSERIF */          { dofont, "sansserif", 9 }, /* TEXICMD_SANSSERIF */
         { dobracket, "sc", 2 }, /* TEXICMD_SC */          { dobracket, "sc", 2 }, /* TEXICMD_SC */
Line 941  parsesingle(struct texi *p, const char *buf, size_t sz
Line 974  parsesingle(struct texi *p, const char *buf, size_t sz
                 (*texitoks[cmd].fp)(p, cmd, buf, sz, pos);                  (*texitoks[cmd].fp)(p, cmd, buf, sz, pos);
 }  }
   
   static int
   parselinearg(struct texi *p, const char *buf, size_t sz, size_t *pos)
   {
   
           while (*pos < sz && isws(buf[*pos])) {
                   p->seenws = 1;
                   advance(p, buf, pos);
           }
   
           if (*pos < sz && '{' == buf[*pos])
                   parsebracket(p, buf, sz, pos);
           else if ('\n' != buf[*pos])
                   parsesingle(p, buf, sz, pos);
           else
                   return(0);
   
           return(1);
   }
   
 /*  /*
  * Parse til the end of the buffer.   * Parse til the end of the buffer.
  */   */
Line 1049  parsefile(struct texi *p, const char *fname)
Line 1101  parsefile(struct texi *p, const char *fname)
 }  }
   
 static void  static void
 dodeftypevar(struct texi *p, enum texicmd cmd,  dodefn(struct texi *p, enum texicmd cmd,
         const char *buf, size_t sz, size_t *pos)          const char *buf, size_t sz, size_t *pos)
 {  {
         const char      *blk;          const char      *blk;
   
         blk = TEXICMD_DEFTYPEVR == cmd ?  
                 "deftypevr" : "deftypevar";  
   
         if (p->ign) {  
                 parseto(p, buf, sz, pos, blk);  
                 return;  
         }  
   
         texivspace(p);  
         if (TEXICMD_DEFTYPEVR == cmd) {  
                 parsebracket(p, buf, sz, pos);  
                 texiputchars(p, ":\n");  
         }  
         teximacroopen(p, "Vt");  
         parseeoln(p, buf, sz, pos);  
         teximacroclose(p);  
         texivspace(p);  
         parseto(p, buf, sz, pos, blk);  
 }  
   
 static void  
 dodeftypefun(struct texi *p, enum texicmd cmd,  
         const char *buf, size_t sz, size_t *pos)  
 {  
         const char      *blk;  
   
         blk = NULL;          blk = NULL;
         switch (cmd) {          switch (cmd) {
           case (TEXICMD_DEFFN):
           case (TEXICMD_DEFTP):
         case (TEXICMD_DEFTYPEFN):          case (TEXICMD_DEFTYPEFN):
         case (TEXICMD_DEFTYPEFUN):          case (TEXICMD_DEFTYPEFUN):
           case (TEXICMD_DEFTYPEVAR):
           case (TEXICMD_DEFTYPEVR):
           case (TEXICMD_DEFUN):
           case (TEXICMD_DEFVAR):
           case (TEXICMD_DEFVR):
                 blk = texitoks[cmd].tok;                  blk = texitoks[cmd].tok;
                 break;                  break;
         default:          default:
Line 1091  dodeftypefun(struct texi *p, enum texicmd cmd, 
Line 1124  dodeftypefun(struct texi *p, enum texicmd cmd, 
         }          }
   
         if (p->ign) {          if (p->ign) {
                 if (NULL != blk)                  NULL != blk ?
                         parseto(p, buf, sz, pos, blk);                          parseto(p, buf, sz, pos, blk) :
                           parseeoln(p, buf, sz, pos);
                 return;                  return;
         }          }
   
           if (NULL != blk)
                   texivspace(p);
   
         switch (cmd) {          switch (cmd) {
         case (TEXICMD_DEFTYPEFN):          case (TEXICMD_DEFMAC):
           case (TEXICMD_DEFMACX):
                   texiputchars(p, "Macro");
                   break;
           case (TEXICMD_DEFTYPEVAR):
           case (TEXICMD_DEFTYPEVARX):
           case (TEXICMD_DEFVAR):
           case (TEXICMD_DEFVARX):
                   texiputchars(p, "Variable");
                   break;
         case (TEXICMD_DEFTYPEFUN):          case (TEXICMD_DEFTYPEFUN):
                 texivspace(p);          case (TEXICMD_DEFTYPEFUNX):
           case (TEXICMD_DEFUN):
           case (TEXICMD_DEFUNX):
                   texiputchars(p, "Function");
                 break;                  break;
         default:          default:
                   parselinearg(p, buf, sz, pos);
                 break;                  break;
         }          }
         if (TEXICMD_DEFTYPEFN == cmd ||  
                         TEXICMD_DEFTYPEFNX == cmd) {          texiputchars(p, ":\n");
                 parsebracket(p, buf, sz, pos);  
                 texiputchars(p, ":\n");          switch (cmd) {
           case (TEXICMD_DEFMAC):
           case (TEXICMD_DEFMACX):
                   teximacroopen(p, "Dv");
                   while (parselinearg(p, buf, sz, pos))
                           /* Spin. */ ;
                   teximacroclose(p);
                   break;
           case (TEXICMD_DEFFN):
           case (TEXICMD_DEFFNX):
           case (TEXICMD_DEFUN):
           case (TEXICMD_DEFUNX):
                   teximacroopen(p, "Fo");
                   parselinearg(p, buf, sz, pos);
                   teximacroclose(p);
                   teximacroopen(p, "Fa");
                   while (parselinearg(p, buf, sz, pos))
                           /* Spin. */ ;
                   teximacroclose(p);
                   teximacro(p, "Fc");
                   break;
           case (TEXICMD_DEFTYPEFUN):
           case (TEXICMD_DEFTYPEFUNX):
           case (TEXICMD_DEFTYPEFN):
           case (TEXICMD_DEFTYPEFNX):
                   teximacroopen(p, "Ft");
                   parselinearg(p, buf, sz, pos);
                   teximacroclose(p);
                   teximacroopen(p, "Fo");
                   parselinearg(p, buf, sz, pos);
                   teximacroclose(p);
                   teximacroopen(p, "Fa");
                   while (parselinearg(p, buf, sz, pos))
                           /* Spin. */ ;
                   teximacroclose(p);
                   teximacro(p, "Fc");
                   break;
           case (TEXICMD_DEFTP):
           case (TEXICMD_DEFTPX):
           case (TEXICMD_DEFTYPEVAR):
           case (TEXICMD_DEFTYPEVARX):
           case (TEXICMD_DEFTYPEVR):
           case (TEXICMD_DEFTYPEVRX):
                   teximacroopen(p, "Vt");
                   while (parselinearg(p, buf, sz, pos))
                           /* Spin. */ ;
                   teximacroclose(p);
                   break;
           case (TEXICMD_DEFVAR):
           case (TEXICMD_DEFVARX):
           case (TEXICMD_DEFVR):
           case (TEXICMD_DEFVRX):
                   teximacroopen(p, "Va");
                   while (parselinearg(p, buf, sz, pos))
                           /* Spin. */ ;
                   teximacroclose(p);
                   break;
           default:
                   abort();
         }          }
         teximacroopen(p, "Ft");  
         parsesingle(p, buf, sz, pos);  
         teximacroclose(p);  
         teximacroopen(p, "Fn");  
         parsesingle(p, buf, sz, pos);  
         teximacroclose(p);  
         teximacroopen(p, "Li");  
         parseeoln(p, buf, sz, pos);  
         teximacroclose(p);  
         texivspace(p);          texivspace(p);
         if (NULL != blk)          if (NULL != blk)
                 parseto(p, buf, sz, pos, blk);                  parseto(p, buf, sz, pos, blk);
Line 1351  dosymbol(struct texi *p, enum texicmd cmd, 
Line 1451  dosymbol(struct texi *p, enum texicmd cmd, 
         case (TEXICMD_DOTS):          case (TEXICMD_DOTS):
                 texiputchars(p, "...");                  texiputchars(p, "...");
                 break;                  break;
           case (TEXICMD_ERROR):
                   texiputchars(p, "error\\(->");
                   break;
         case (TEXICMD_LATEX):          case (TEXICMD_LATEX):
                 texiputchars(p, "LaTeX");                  texiputchars(p, "LaTeX");
                 break;                  break;
         case (TEXICMD_QUESTIONMARK):          case (TEXICMD_QUESTIONMARK):
                 texiputchar(p, '?');                  texiputchar(p, '?');
                   break;
           case (TEXICMD_RESULT):
                   texiputchars(p, "\\(rA");
                 break;                  break;
         case (TEXICMD_SQUIGGLE_LEFT):          case (TEXICMD_SQUIGGLE_LEFT):
                 texiputchars(p, "{");                  texiputchars(p, "{");

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.15

CVSweb