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

Diff for /mandoc/tbl_opts.c between version 1.12 and 1.13

version 1.12, 2011/09/18 14:14:15 version 1.13, 2014/04/20 16:46:05
Line 62  struct tbl_phrase {
Line 62  struct tbl_phrase {
 static  const struct tbl_phrase keys[KEY_MAXKEYS] = {  static  const struct tbl_phrase keys[KEY_MAXKEYS] = {
         { "center",      TBL_OPT_CENTRE,        KEY_CENTRE},          { "center",      TBL_OPT_CENTRE,        KEY_CENTRE},
         { "centre",      TBL_OPT_CENTRE,        KEY_CENTRE},          { "centre",      TBL_OPT_CENTRE,        KEY_CENTRE},
         { "delim",       0,                     KEY_DELIM},          { "delim",       0,                     KEY_DELIM},
         { "expand",      TBL_OPT_EXPAND,        KEY_EXPAND},          { "expand",      TBL_OPT_EXPAND,        KEY_EXPAND},
         { "box",         TBL_OPT_BOX,           KEY_BOX},          { "box",         TBL_OPT_BOX,           KEY_BOX},
         { "doublebox",   TBL_OPT_DBOX,          KEY_DBOX},          { "doublebox",   TBL_OPT_DBOX,          KEY_DBOX},
         { "allbox",      TBL_OPT_ALLBOX,        KEY_ALLBOX},          { "allbox",      TBL_OPT_ALLBOX,        KEY_ALLBOX},
         { "frame",       TBL_OPT_BOX,           KEY_FRAME},          { "frame",       TBL_OPT_BOX,           KEY_FRAME},
         { "doubleframe", TBL_OPT_DBOX,          KEY_DFRAME},          { "doubleframe", TBL_OPT_DBOX,          KEY_DFRAME},
Line 76  static const struct tbl_phrase keys[KEY_MAXKEYS] = {
Line 76  static const struct tbl_phrase keys[KEY_MAXKEYS] = {
         { "nospaces",    TBL_OPT_NOSPACE,       KEY_NOSPACE},          { "nospaces",    TBL_OPT_NOSPACE,       KEY_NOSPACE},
 };  };
   
 static  int              arg(struct tbl_node *, int,  static  int              arg(struct tbl_node *, int,
                                 const char *, int *, enum tbl_ident);                                  const char *, int *, enum tbl_ident);
 static  void             opt(struct tbl_node *, int,  static  void             opt(struct tbl_node *, int,
                                 const char *, int *);                                  const char *, int *);
   
   
 static int  static int
 arg(struct tbl_node *tbl, int ln, const char *p, int *pos, enum tbl_ident key)  arg(struct tbl_node *tbl, int ln, const char *p, int *pos, enum tbl_ident key)
 {  {
Line 93  arg(struct tbl_node *tbl, int ln, const char *p, int *
Line 94  arg(struct tbl_node *tbl, int ln, const char *p, int *
         /* Arguments always begin with a parenthesis. */          /* Arguments always begin with a parenthesis. */
   
         if ('(' != p[*pos]) {          if ('(' != p[*pos]) {
                 mandoc_msg(MANDOCERR_TBL, tbl->parse,                  mandoc_msg(MANDOCERR_TBL, tbl->parse,
                                 ln, *pos, NULL);                      ln, *pos, NULL);
                 return(0);                  return(0);
         }          }
   
Line 107  arg(struct tbl_node *tbl, int ln, const char *p, int *
Line 108  arg(struct tbl_node *tbl, int ln, const char *p, int *
          */           */
   
         switch (key) {          switch (key) {
         case (KEY_DELIM):          case KEY_DELIM:
                 if ('\0' == p[(*pos)++]) {                  if ('\0' == p[(*pos)++]) {
                         mandoc_msg(MANDOCERR_TBL, tbl->parse,                          mandoc_msg(MANDOCERR_TBL, tbl->parse,
                                         ln, *pos - 1, NULL);                              ln, *pos - 1, NULL);
                         return(0);                          return(0);
                 }                  }
   
                 if ('\0' == p[(*pos)++]) {                  if ('\0' == p[(*pos)++]) {
                         mandoc_msg(MANDOCERR_TBL, tbl->parse,                          mandoc_msg(MANDOCERR_TBL, tbl->parse,
                                         ln, *pos - 1, NULL);                              ln, *pos - 1, NULL);
                         return(0);                          return(0);
                 }                  }
                 break;                  break;
         case (KEY_TAB):          case KEY_TAB:
                 if ('\0' != (tbl->opts.tab = p[(*pos)++]))                  if ('\0' != (tbl->opts.tab = p[(*pos)++]))
                         break;                          break;
   
                 mandoc_msg(MANDOCERR_TBL, tbl->parse,                  mandoc_msg(MANDOCERR_TBL, tbl->parse,
                                 ln, *pos - 1, NULL);                      ln, *pos - 1, NULL);
                 return(0);                  return(0);
         case (KEY_LINESIZE):          case KEY_LINESIZE:
                 for (i = 0; i < KEY_MAXNUMSZ && p[*pos]; i++, (*pos)++) {                  for (i = 0; i < KEY_MAXNUMSZ && p[*pos]; i++, (*pos)++) {
                         buf[i] = p[*pos];                          buf[i] = p[*pos];
                         if ( ! isdigit((unsigned char)buf[i]))                          if ( ! isdigit((unsigned char)buf[i]))
Line 142  arg(struct tbl_node *tbl, int ln, const char *p, int *
Line 143  arg(struct tbl_node *tbl, int ln, const char *p, int *
   
                 mandoc_msg(MANDOCERR_TBL, tbl->parse, ln, *pos, NULL);                  mandoc_msg(MANDOCERR_TBL, tbl->parse, ln, *pos, NULL);
                 return(0);                  return(0);
         case (KEY_DPOINT):          case KEY_DPOINT:
                 if ('\0' != (tbl->opts.decimal = p[(*pos)++]))                  if ('\0' != (tbl->opts.decimal = p[(*pos)++]))
                         break;                          break;
   
                 mandoc_msg(MANDOCERR_TBL, tbl->parse,                  mandoc_msg(MANDOCERR_TBL, tbl->parse,
                                 ln, *pos - 1, NULL);                      ln, *pos - 1, NULL);
                 return(0);                  return(0);
         default:          default:
                 abort();                  abort();
Line 182  again: /*
Line 183  again: /*
          * options      ::= option_list [:space:]* [;][\n]           * options      ::= option_list [:space:]* [;][\n]
          * option_list  ::= option option_tail           * option_list  ::= option option_tail
          * option_tail  ::= [:space:]+ option_list |           * option_tail  ::= [:space:]+ option_list |
          *              ::= epsilon           *              ::= epsilon
          * option       ::= [:alpha:]+ args           * option       ::= [:alpha:]+ args
          * args         ::= [:space:]* [(] [:alpha:]+ [)]           * args         ::= [:space:]* [(] [:alpha:]+ [)]
          */           */
Line 215  again: /*
Line 216  again: /*
         while (isspace((unsigned char)p[*pos]))          while (isspace((unsigned char)p[*pos]))
                 (*pos)++;                  (*pos)++;
   
         /*          /*
          * Look through all of the available keys to find one that           * Look through all of the available keys to find one that
          * matches the input.  FIXME: hashtable this.           * matches the input.  FIXME: hashtable this.
          */           */
Line 231  again: /*
Line 232  again: /*
                  * of the sequence altogether.                   * of the sequence altogether.
                  */                   */
   
                 if (keys[i].key)                  if (keys[i].key)
                         tbl->opts.opts |= keys[i].key;                          tbl->opts.opts |= keys[i].key;
                 else if ( ! arg(tbl, ln, p, pos, keys[i].ident))                  else if ( ! arg(tbl, ln, p, pos, keys[i].ident))
                         return;                          return;
Line 239  again: /*
Line 240  again: /*
                 break;                  break;
         }          }
   
         /*          /*
          * Allow us to recover from bad options by continuing to another           * Allow us to recover from bad options by continuing to another
          * parse sequence.           * parse sequence.
          */           */

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

CVSweb