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

Diff for /mandoc/main.c between version 1.247 and 1.252

version 1.247, 2015/10/11 21:12:54 version 1.252, 2015/10/22 21:03:43
Line 59  enum outmode {
Line 59  enum outmode {
         OUTMODE_ONE          OUTMODE_ONE
 };  };
   
 typedef void            (*out_mdoc)(void *, const struct roff_man *);  
 typedef void            (*out_man)(void *, const struct roff_man *);  
 typedef void            (*out_free)(void *);  
   
 enum    outt {  enum    outt {
         OUTT_ASCII = 0, /* -Tascii */          OUTT_ASCII = 0, /* -Tascii */
         OUTT_LOCALE,    /* -Tlocale */          OUTT_LOCALE,    /* -Tlocale */
Line 77  enum outt {
Line 73  enum outt {
   
 struct  curparse {  struct  curparse {
         struct mparse    *mp;          struct mparse    *mp;
         struct mchars    *mchars;       /* character table */  
         enum mandoclevel  wlevel;       /* ignore messages below this */          enum mandoclevel  wlevel;       /* ignore messages below this */
         int               wstop;        /* stop after a file with a warning */          int               wstop;        /* stop after a file with a warning */
         enum outt         outtype;      /* which output to use */          enum outt         outtype;      /* which output to use */
         out_mdoc          outmdoc;      /* mdoc output ptr */  
         out_man           outman;       /* man output ptr */  
         out_free          outfree;      /* free output ptr */  
         void             *outdata;      /* data for output */          void             *outdata;      /* data for output */
         struct manoutput *outopts;      /* output options */          struct manoutput *outopts;      /* output options */
 };  };
Line 422  main(int argc, char *argv[])
Line 414  main(int argc, char *argv[])
         if (search.argmode == ARG_FILE && ! moptions(&options, auxpaths))          if (search.argmode == ARG_FILE && ! moptions(&options, auxpaths))
                 return (int)MANDOCLEVEL_BADARG;                  return (int)MANDOCLEVEL_BADARG;
   
         curp.mchars = mchars_alloc();          mchars_alloc();
         curp.mp = mparse_alloc(options, curp.wlevel, mmsg,          curp.mp = mparse_alloc(options, curp.wlevel, mmsg, defos);
             curp.mchars, defos);  
   
         /*          /*
          * Conditionally start up the lookaside buffer before parsing.           * Conditionally start up the lookaside buffer before parsing.
Line 475  main(int argc, char *argv[])
Line 466  main(int argc, char *argv[])
                         mparse_reset(curp.mp);                          mparse_reset(curp.mp);
         }          }
   
         if (curp.outfree)          if (curp.outdata != NULL) {
                 (*curp.outfree)(curp.outdata);                  switch (curp.outtype) {
                   case OUTT_HTML:
                           html_free(curp.outdata);
                           break;
                   case OUTT_UTF8:
                   case OUTT_LOCALE:
                   case OUTT_ASCII:
                           ascii_free(curp.outdata);
                           break;
                   case OUTT_PDF:
                   case OUTT_PS:
                           pspdf_free(curp.outdata);
                           break;
                   default:
                           break;
                   }
           }
         mparse_free(curp.mp);          mparse_free(curp.mp);
         mchars_free(curp.mchars);          mchars_free();
   
 out:  out:
         if (search.argmode != ARG_FILE) {          if (search.argmode != ARG_FILE) {
Line 659  parse(struct curparse *curp, int fd, const char *file)
Line 666  parse(struct curparse *curp, int fd, const char *file)
   
         /* If unset, allocate output dev now (if applicable). */          /* If unset, allocate output dev now (if applicable). */
   
         if ( ! (curp->outman && curp->outmdoc)) {          if (curp->outdata == NULL) {
                 switch (curp->outtype) {                  switch (curp->outtype) {
                 case OUTT_HTML:                  case OUTT_HTML:
                         curp->outdata = html_alloc(curp->mchars,                          curp->outdata = html_alloc(curp->outopts);
                             curp->outopts);  
                         curp->outfree = html_free;  
                         break;                          break;
                 case OUTT_UTF8:                  case OUTT_UTF8:
                         curp->outdata = utf8_alloc(curp->mchars,                          curp->outdata = utf8_alloc(curp->outopts);
                             curp->outopts);  
                         curp->outfree = ascii_free;  
                         break;                          break;
                 case OUTT_LOCALE:                  case OUTT_LOCALE:
                         curp->outdata = locale_alloc(curp->mchars,                          curp->outdata = locale_alloc(curp->outopts);
                             curp->outopts);  
                         curp->outfree = ascii_free;  
                         break;                          break;
                 case OUTT_ASCII:                  case OUTT_ASCII:
                         curp->outdata = ascii_alloc(curp->mchars,                          curp->outdata = ascii_alloc(curp->outopts);
                             curp->outopts);  
                         curp->outfree = ascii_free;  
                         break;                          break;
                 case OUTT_PDF:                  case OUTT_PDF:
                         curp->outdata = pdf_alloc(curp->mchars,                          curp->outdata = pdf_alloc(curp->outopts);
                             curp->outopts);  
                         curp->outfree = pspdf_free;  
                         break;                          break;
                 case OUTT_PS:                  case OUTT_PS:
                         curp->outdata = ps_alloc(curp->mchars,                          curp->outdata = ps_alloc(curp->outopts);
                             curp->outopts);  
                         curp->outfree = pspdf_free;  
                         break;                          break;
                 default:                  default:
                         break;                          break;
                 }                  }
           }
   
           mparse_result(curp->mp, &man, NULL);
   
           /* Execute the out device, if it exists. */
   
           if (man == NULL)
                   return;
           if (man->macroset == MACROSET_MDOC) {
                   mdoc_validate(man);
                 switch (curp->outtype) {                  switch (curp->outtype) {
                 case OUTT_HTML:                  case OUTT_HTML:
                         curp->outman = html_man;                          html_mdoc(curp->outdata, man);
                         curp->outmdoc = html_mdoc;  
                         break;                          break;
                 case OUTT_TREE:                  case OUTT_TREE:
                         curp->outman = tree_man;                          tree_mdoc(curp->outdata, man);
                         curp->outmdoc = tree_mdoc;  
                         break;                          break;
                 case OUTT_MAN:                  case OUTT_MAN:
                         curp->outmdoc = man_mdoc;                          man_mdoc(curp->outdata, man);
                         curp->outman = man_man;  
                         break;                          break;
                 case OUTT_PDF:                  case OUTT_PDF:
                         /* FALLTHROUGH */  
                 case OUTT_ASCII:                  case OUTT_ASCII:
                         /* FALLTHROUGH */  
                 case OUTT_UTF8:                  case OUTT_UTF8:
                         /* FALLTHROUGH */  
                 case OUTT_LOCALE:                  case OUTT_LOCALE:
                         /* FALLTHROUGH */  
                 case OUTT_PS:                  case OUTT_PS:
                         curp->outman = terminal_man;                          terminal_mdoc(curp->outdata, man);
                         curp->outmdoc = terminal_mdoc;  
                         break;                          break;
                 default:                  default:
                         break;                          break;
                 }                  }
         }          }
           if (man->macroset == MACROSET_MAN) {
         mparse_result(curp->mp, &man, NULL);                  switch (curp->outtype) {
                   case OUTT_HTML:
         /* Execute the out device, if it exists. */                          html_man(curp->outdata, man);
                           break;
         if (man == NULL)                  case OUTT_TREE:
                 return;                          tree_man(curp->outdata, man);
         if (curp->outmdoc != NULL && man->macroset == MACROSET_MDOC)                          break;
                 (*curp->outmdoc)(curp->outdata, man);                  case OUTT_MAN:
         if (curp->outman != NULL && man->macroset == MACROSET_MAN)                          man_man(curp->outdata, man);
                 (*curp->outman)(curp->outdata, man);                          break;
                   case OUTT_PDF:
                   case OUTT_ASCII:
                   case OUTT_UTF8:
                   case OUTT_LOCALE:
                   case OUTT_PS:
                           terminal_man(curp->outdata, man);
                           break;
                   default:
                           break;
                   }
           }
 }  }
   
 static void  static void
Line 896  woptions(struct curparse *curp, char *arg)
Line 903  woptions(struct curparse *curp, char *arg)
                         curp->wstop = 1;                          curp->wstop = 1;
                         break;                          break;
                 case 1:                  case 1:
                         /* FALLTHROUGH */  
                 case 2:                  case 2:
                         curp->wlevel = MANDOCLEVEL_WARNING;                          curp->wlevel = MANDOCLEVEL_WARNING;
                         break;                          break;

Legend:
Removed from v.1.247  
changed lines
  Added in v.1.252

CVSweb