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

Diff for /mandoc/main.c between version 1.38 and 1.39

version 1.38, 2009/07/07 09:52:08 version 1.39, 2009/07/24 14:00:59
Line 72  struct curparse {
Line 72  struct curparse {
 #define NO_IGN_ESCAPE    (1 << 1)       /* Don't ignore bad escapes. */  #define NO_IGN_ESCAPE    (1 << 1)       /* Don't ignore bad escapes. */
 #define NO_IGN_MACRO     (1 << 2)       /* Don't ignore bad macros. */  #define NO_IGN_MACRO     (1 << 2)       /* Don't ignore bad macros. */
 #define NO_IGN_CHARS     (1 << 3)       /* Don't ignore bad chars. */  #define NO_IGN_CHARS     (1 << 3)       /* Don't ignore bad chars. */
   #define IGN_ERRORS       (1 << 4)       /* Ignore failed parse. */
         enum intt         inttype;      /* Input parsers... */          enum intt         inttype;      /* Input parsers... */
         struct man       *man;          struct man       *man;
         struct man       *lastman;          struct man       *lastman;
Line 161  main(int argc, char *argv[])
Line 162  main(int argc, char *argv[])
         if (NULL == *argv) {          if (NULL == *argv) {
                 curp.file = "<stdin>";                  curp.file = "<stdin>";
                 curp.fd = STDIN_FILENO;                  curp.fd = STDIN_FILENO;
                 if ( ! fdesc(&blk, &ln, &curp))  
                         rc = 0;                  c = fdesc(&blk, &ln, &curp);
                   if ( ! (IGN_ERRORS & curp.fflags))
                           rc = 1 == c ? 1 : 0;
                   else
                           rc = -1 == c ? 0 : 1;
         }          }
   
         while (rc && *argv) {          while (rc && *argv) {
                 if ( ! ffile(&blk, &ln, *argv, &curp))                  c = ffile(&blk, &ln, *argv, &curp);
                         rc = 0;                  if ( ! (IGN_ERRORS & curp.fflags))
                           rc = 1 == c ? 1 : 0;
                   else
                           rc = -1 == c ? 0 : 1;
   
                 argv++;                  argv++;
                 if (*argv && rc) {                  if (*argv && rc) {
                         if (curp.lastman)                          if (curp.lastman)
Line 283  ffile(struct buf *blk, struct buf *ln, 
Line 292  ffile(struct buf *blk, struct buf *ln, 
         curp->file = file;          curp->file = file;
         if (-1 == (curp->fd = open(curp->file, O_RDONLY, 0))) {          if (-1 == (curp->fd = open(curp->file, O_RDONLY, 0))) {
                 warn("%s", curp->file);                  warn("%s", curp->file);
                 return(0);                  return(-1);
         }          }
   
         c = fdesc(blk, ln, curp);          c = fdesc(blk, ln, curp);
Line 324  fdesc(struct buf *blk, struct buf *ln, struct curparse
Line 333  fdesc(struct buf *blk, struct buf *ln, struct curparse
                 blk->buf = realloc(blk->buf, sz);                  blk->buf = realloc(blk->buf, sz);
                 if (NULL == blk->buf) {                  if (NULL == blk->buf) {
                         warn("realloc");                          warn("realloc");
                         return(0);                          return(-1);
                 }                  }
                 blk->sz = sz;                  blk->sz = sz;
         }          }
Line 334  fdesc(struct buf *blk, struct buf *ln, struct curparse
Line 343  fdesc(struct buf *blk, struct buf *ln, struct curparse
         for (lnn = pos = comment = 0; ; ) {          for (lnn = pos = comment = 0; ; ) {
                 if (-1 == (ssz = read(curp->fd, blk->buf, sz))) {                  if (-1 == (ssz = read(curp->fd, blk->buf, sz))) {
                         warn("%s", curp->file);                          warn("%s", curp->file);
                         return(0);                          return(-1);
                 } else if (0 == ssz)                  } else if (0 == ssz)
                         break;                          break;
   
Line 346  fdesc(struct buf *blk, struct buf *ln, struct curparse
Line 355  fdesc(struct buf *blk, struct buf *ln, struct curparse
                                 ln->buf = realloc(ln->buf, ln->sz);                                  ln->buf = realloc(ln->buf, ln->sz);
                                 if (NULL == ln->buf) {                                  if (NULL == ln->buf) {
                                         warn("realloc");                                          warn("realloc");
                                         return(0);                                          return(-1);
                                 }                                  }
                         }                          }
   
Line 393  fdesc(struct buf *blk, struct buf *ln, struct curparse
Line 402  fdesc(struct buf *blk, struct buf *ln, struct curparse
   
                         if ( ! (man || mdoc) && ! pset(ln->buf,                          if ( ! (man || mdoc) && ! pset(ln->buf,
                                                 pos, curp, &man, &mdoc))                                                  pos, curp, &man, &mdoc))
                                 return(0);                                  return(-1);
   
                         pos = comment = 0;                          pos = comment = 0;
   
Line 441  fdesc(struct buf *blk, struct buf *ln, struct curparse
Line 450  fdesc(struct buf *blk, struct buf *ln, struct curparse
   
         if (man && curp->outman)          if (man && curp->outman)
                 if ( ! (*curp->outman)(curp->outdata, man))                  if ( ! (*curp->outman)(curp->outdata, man))
                         return(0);                          return(-1);
         if (mdoc && curp->outmdoc)          if (mdoc && curp->outmdoc)
                 if ( ! (*curp->outmdoc)(curp->outdata, mdoc))                  if ( ! (*curp->outmdoc)(curp->outdata, mdoc))
                         return(0);                          return(-1);
   
         return(1);          return(1);
 }  }
Line 551  static int
Line 560  static int
 foptions(int *fflags, char *arg)  foptions(int *fflags, char *arg)
 {  {
         char            *v, *o;          char            *v, *o;
         char            *toks[6];          char            *toks[7];
   
         toks[0] = "ign-scope";          toks[0] = "ign-scope";
         toks[1] = "no-ign-escape";          toks[1] = "no-ign-escape";
         toks[2] = "no-ign-macro";          toks[2] = "no-ign-macro";
         toks[3] = "no-ign-chars";          toks[3] = "no-ign-chars";
         toks[4] = "strict";          toks[4] = "ign-errors";
         toks[5] = NULL;          toks[5] = "strict";
           toks[6] = NULL;
   
         while (*arg) {          while (*arg) {
                 o = arg;                  o = arg;
Line 576  foptions(int *fflags, char *arg)
Line 586  foptions(int *fflags, char *arg)
                         *fflags |= NO_IGN_CHARS;                          *fflags |= NO_IGN_CHARS;
                         break;                          break;
                 case (4):                  case (4):
                           *fflags |= IGN_ERRORS;
                           break;
                   case (5):
                         *fflags |= NO_IGN_ESCAPE |                          *fflags |= NO_IGN_ESCAPE |
                                    NO_IGN_MACRO | NO_IGN_CHARS;                                     NO_IGN_MACRO | NO_IGN_CHARS;
                         break;                          break;

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

CVSweb