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

Diff for /mandoc/main.c between version 1.134 and 1.143

version 1.134, 2011/01/04 12:06:21 version 1.143, 2011/02/06 20:36:36
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
Line 146  static const char * const mandocerrs[MANDOCERR_MAX] = 
Line 146  static const char * const mandocerrs[MANDOCERR_MAX] = 
         /* related to macros and nesting */          /* related to macros and nesting */
         "skipping obsolete macro",          "skipping obsolete macro",
         "skipping paragraph macro",          "skipping paragraph macro",
           "skipping no-space macro",
         "blocks badly nested",          "blocks badly nested",
         "child violates parent syntax",          "child violates parent syntax",
         "nested displays are not portable",          "nested displays are not portable",
Line 158  static const char * const mandocerrs[MANDOCERR_MAX] = 
Line 159  static const char * const mandocerrs[MANDOCERR_MAX] = 
         "list type must come first",          "list type must come first",
         "tag lists require a width argument",          "tag lists require a width argument",
         "missing font type",          "missing font type",
           "skipping end of block that is not open",
   
         /* related to bad macro arguments */          /* related to bad macro arguments */
         "skipping argument",          "skipping argument",
Line 178  static const char * const mandocerrs[MANDOCERR_MAX] = 
Line 180  static const char * const mandocerrs[MANDOCERR_MAX] = 
         "unknown escape sequence",          "unknown escape sequence",
         "unterminated quoted string",          "unterminated quoted string",
   
         /* related to tables */  
         "extra data cells",  
   
         "generic error",          "generic error",
   
         /* related to tables */          /* related to tables */
Line 190  static const char * const mandocerrs[MANDOCERR_MAX] = 
Line 189  static const char * const mandocerrs[MANDOCERR_MAX] = 
         "no table layout cells specified",          "no table layout cells specified",
         "no table data cells specified",          "no table data cells specified",
         "ignore data in cell",          "ignore data in cell",
           "data block still open",
           "ignoring extra data cells",
   
         "input stack limit exceeded, infinite loop?",          "input stack limit exceeded, infinite loop?",
         "skipping bad character",          "skipping bad character",
           "escaped character not allowed in a name",
         "skipping text before the first section header",          "skipping text before the first section header",
         "skipping unknown macro",          "skipping unknown macro",
         "NOT IMPLEMENTED: skipping request",          "NOT IMPLEMENTED, please use groff: skipping request",
         "line scope broken",          "line scope broken",
         "argument count wrong",          "argument count wrong",
         "skipping end of block that is not open",          "skipping end of block that is not open",
Line 655  pdesc(struct curparse *curp)
Line 657  pdesc(struct curparse *curp)
 static void  static void
 parsebuf(struct curparse *curp, struct buf blk, int start)  parsebuf(struct curparse *curp, struct buf blk, int start)
 {  {
           const struct tbl_span   *span;
         struct buf       ln;          struct buf       ln;
         enum rofferr     rr;          enum rofferr     rr;
         int              i, of, rc;          int              i, of, rc;
Line 683  parsebuf(struct curparse *curp, struct buf blk, int st
Line 686  parsebuf(struct curparse *curp, struct buf blk, int st
                 }                  }
   
                 while (i < (int)blk.sz && (start || '\0' != blk.buf[i])) {                  while (i < (int)blk.sz && (start || '\0' != blk.buf[i])) {
   
                           /*
                            * When finding an unescaped newline character,
                            * leave the character loop to process the line.
                            * Skip a preceding carriage return, if any.
                            */
   
                           if ('\r' == blk.buf[i] && i + 1 < (int)blk.sz &&
                               '\n' == blk.buf[i + 1])
                                   ++i;
                         if ('\n' == blk.buf[i]) {                          if ('\n' == blk.buf[i]) {
                                 ++i;                                  ++i;
                                 ++lnn;                                  ++lnn;
Line 717  parsebuf(struct curparse *curp, struct buf blk, int st
Line 730  parsebuf(struct curparse *curp, struct buf blk, int st
                                 continue;                                  continue;
                         }                          }
   
                         /* Found escape & at least one other char. */                          /*
                            * Found escape and at least one other character.
                            * When it's a newline character, skip it.
                            * When there is a carriage return in between,
                            * skip that one as well.
                            */
   
                           if ('\r' == blk.buf[i + 1] && i + 2 < (int)blk.sz &&
                               '\n' == blk.buf[i + 2])
                                   ++i;
                         if ('\n' == blk.buf[i + 1]) {                          if ('\n' == blk.buf[i + 1]) {
                                 i += 2;                                  i += 2;
                                 /* Escaped newlines are skipped over */  
                                 ++lnn;                                  ++lnn;
                                 continue;                                  continue;
                         }                          }
Line 837  rerun:
Line 857  rerun:
   
                 if (ROFF_TBL == rr) {                  if (ROFF_TBL == rr) {
                         assert(curp->man || curp->mdoc);                          assert(curp->man || curp->mdoc);
                         if (curp->man)                          while (NULL != (span = roff_span(curp->roff))) {
                                 man_addspan(curp->man, roff_span(curp->roff));                                  if (curp->man)
                         else                                          man_addspan(curp->man, span);
                                 mdoc_addspan(curp->mdoc, roff_span(curp->roff));                                  else
                                           mdoc_addspan(curp->mdoc, span);
                           }
                   } else if (ROFF_EQN == rr) {
                           assert(curp->man || curp->mdoc);
                 } else if (curp->man || curp->mdoc) {                  } else if (curp->man || curp->mdoc) {
                         rc = curp->man ?                          rc = curp->man ?
                                 man_parseln(curp->man,                                  man_parseln(curp->man,

Legend:
Removed from v.1.134  
changed lines
  Added in v.1.143

CVSweb