/[CvsGraph]/cvsgraph/readconf.c
ViewVC logotype

Diff of /cvsgraph/readconf.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.15, Thu Aug 5 09:35:49 2004 UTC revision 1.16, Sun Aug 15 16:58:22 2004 UTC
# Line 98  Line 98 
98          { "branch_dupbox",      TYPE_BOOLEAN,   { &conf.branch_dupbox } },          { "branch_dupbox",      TYPE_BOOLEAN,   { &conf.branch_dupbox } },
99          { "branch_fold",        TYPE_BOOLEAN,   { &conf.branch_fold } },          { "branch_fold",        TYPE_BOOLEAN,   { &conf.branch_fold } },
100          { "branch_foldall",     TYPE_BOOLEAN,   { &conf.branch_foldall } },          { "branch_foldall",     TYPE_BOOLEAN,   { &conf.branch_foldall } },
101            { "branch_subtree",     TYPE_STRING,    { &conf.branch_subtree } },
102          { "upside_down",        TYPE_BOOLEAN,   { &conf.upside_down } },          { "upside_down",        TYPE_BOOLEAN,   { &conf.upside_down } },
103          { "left_right",         TYPE_BOOLEAN,   { &conf.left_right } },          { "left_right",         TYPE_BOOLEAN,   { &conf.left_right } },
104          { "auto_stretch",       TYPE_BOOLEAN,   { &conf.auto_stretch } },          { "auto_stretch",       TYPE_BOOLEAN,   { &conf.auto_stretch } },
# Line 114  Line 115 
115          { "parse_logs",         TYPE_BOOLEAN,   { &conf.parse_logs } },          { "parse_logs",         TYPE_BOOLEAN,   { &conf.parse_logs } },
116          { "html_level",         TYPE_NUMBER,    { &conf.html_level } },          { "html_level",         TYPE_NUMBER,    { &conf.html_level } },
117          { "thick_lines",        TYPE_NUMBER,    { &conf.thick_lines } },          { "thick_lines",        TYPE_NUMBER,    { &conf.thick_lines } },
118            { "msg_color",          TYPE_COLOR,     { &conf.msg_color } },
119            { "msg_font",           TYPE_FONT,      { &conf.msg_font.gdfont } },
120            { "msg_ttfont",         TYPE_STRING,    { &conf.msg_font.ttfont } },
121            { "msg_ttsize",         TYPE_DOUBLE,    { &conf.msg_font.ttsize } },
122          { "rev_color",          TYPE_COLOR,     { &conf.rev_color } },          { "rev_color",          TYPE_COLOR,     { &conf.rev_color } },
123          { "rev_bgcolor",        TYPE_COLOR,     { &conf.rev_bgcolor } },          { "rev_bgcolor",        TYPE_COLOR,     { &conf.rev_bgcolor } },
124          { "rev_font",           TYPE_FONT,      { &conf.rev_font.gdfont } },          { "rev_font",           TYPE_FONT,      { &conf.rev_font.gdfont } },
# Line 168  Line 173 
173          { "map_rev_alt",        TYPE_STRING,    { &conf.map_rev_alt } },          { "map_rev_alt",        TYPE_STRING,    { &conf.map_rev_alt } },
174          { "map_diff_href",      TYPE_STRING,    { &conf.map_diff_href } },          { "map_diff_href",      TYPE_STRING,    { &conf.map_diff_href } },
175          { "map_diff_alt",       TYPE_STRING,    { &conf.map_diff_alt } },          { "map_diff_alt",       TYPE_STRING,    { &conf.map_diff_alt } },
176            { "map_merge_href",     TYPE_STRING,    { &conf.map_merge_href } },
177            { "map_merge_alt",      TYPE_STRING,    { &conf.map_merge_alt } },
178          { "jpeg",               TYPE_VALUE,     { (void *)IMAGE_JPEG } },          { "jpeg",               TYPE_VALUE,     { (void *)IMAGE_JPEG } },
179          { "png",                TYPE_VALUE,     { (void *)IMAGE_PNG } },          { "png",                TYPE_VALUE,     { (void *)IMAGE_PNG } },
180          { "gif",                TYPE_VALUE,     { (void *)IMAGE_GIF } },          { "gif",                TYPE_VALUE,     { (void *)IMAGE_GIF } },
# Line 535  Line 542 
542                                                  c[1] = get_input();                                                  c[1] = get_input();
543                                                  c[2] = '\0';                                                  c[2] = '\0';
544                                                  if(!isxdigit((int)(unsigned char)c[0]) || !isxdigit((int)(unsigned char)c[1]))                                                  if(!isxdigit((int)(unsigned char)c[0]) || !isxdigit((int)(unsigned char)c[1]))
545                                                          yyerror("Invalid hex escape");                                                          stack_msg(MSG_ERR, "config: %d: Invalid hex escape", line_number);
546                                                  add_str((int)strtol(c, NULL, 16));                                                  add_str((int)strtol(c, NULL, 16));
547                                                  break;                                                  break;
548                                          case '0':                                          case '0':
# Line 596  Line 603 
603                                  skw.keyword = get_str();                                  skw.keyword = get_str();
604                                  kw = bsearch(&skw, keywords, NKEYWORDS, sizeof(keywords[0]), cmp_kw);                                  kw = bsearch(&skw, keywords, NKEYWORDS, sizeof(keywords[0]), cmp_kw);
605                                  if(!kw)                                  if(!kw)
606                                          yyerror("Unknown keyword '%s'", skw.keyword);                                  {
607                                            stack_msg(MSG_ERR, "config: %d: Unknown keyword '%s'", line_number, skw.keyword);
608                                            yylval.kw = NULL;
609                                            return TYPE_KEYWORD;
610                                    }
611                                  xfree(skw.keyword);                                  xfree(skw.keyword);
612                                  if(kw->type == TYPE_VALUE)                                  if(kw->type == TYPE_VALUE)
613                                  {                                  {
# Line 632  Line 643 
643                                  {                                  {
644                                          yylval.d = strtod(s, &eptr);                                          yylval.d = strtod(s, &eptr);
645                                          if(*eptr)                                          if(*eptr)
646                                                  yyerror("Invalid floating point number");                                                  stack_msg(MSG_ERR, "config: %d: Invalid floating point number", line_number);
647                                  }                                  }
648                                  else                                  else
649                                  {                                  {
650                                          yylval.i = strtol(s, &eptr, 0);                                          yylval.i = strtol(s, &eptr, 0);
651                                          if(*eptr)                                          if(*eptr)
652                                                  yyerror("Invalid number");                                                  stack_msg(MSG_ERR, "config: %d: Invalid number", line_number);
653                                  }                                  }
654                                  xfree(s);                                  xfree(s);
655                                  return type;                                  return type;
# Line 656  Line 667 
667          if(*s != '#' || strlen(s) != 7)          if(*s != '#' || strlen(s) != 7)
668          {          {
669  colorerror:  colorerror:
670                  yyerror("Invalid color value");                  stack_msg(MSG_ERR, "config: %d: Invalid color value '%s'", line_number, s);
671                    return;
672          }          }
673          c->b = strtol(s+5, &cptr, 16);          c->b = strtol(s+5, &cptr, 16);
674          if(*cptr)          if(*cptr)
# Line 714  Line 726 
726                  if(token == EOF)                  if(token == EOF)
727                  {                  {
728                          if(state)                          if(state)
729                                  yyerror("Unexpected EOF");                                  stack_msg(MSG_ERR, "config: %d: Unexpected EOF", line_number);
730                          break;                          break;
731                  }                  }
732    
# Line 727  Line 739 
739                                  state = 1;                                  state = 1;
740                          }                          }
741                          else if(token != ';')                          else if(token != ';')
742                                  yyerror("Keyword expected");                                  stack_msg(MSG_ERR, "config: %d: Keyword expected", line_number);
743                          break;                          break;
744                  case 1:                  case 1:
745                          if(token != '=')                          if(token != '=')
746                                  yyerror("'=' expected");                          {
747                          state = 2;                                  stack_msg(MSG_ERR, "config: %d: '=' expected", line_number);
748                                    while(1)
749                                    {
750                                            token = config_lex();
751                                            if(token == ';')
752                                            {
753                                                    state = 0;
754                                                    break;
755                                            }
756                                            else if(token == EOF)
757                                                    break;
758                                    }
759                            }
760                            else
761                                    state = 2;
762                          break;                          break;
763                  case 2:                  case 2:
764                            if(!kw)
765                            {
766                                    /* Error recovery of failed keyword */
767                                    state = 3;
768                                    break;
769                            }
770                          if(kw->type == TYPE_FONT || kw->type == TYPE_BOOLEAN)                          if(kw->type == TYPE_FONT || kw->type == TYPE_BOOLEAN)
771                                  t = TYPE_NUMBER;                                  t = TYPE_NUMBER;
772                          else if(kw->type == TYPE_COLOR)                          else if(kw->type == TYPE_COLOR)
# Line 754  Line 786 
786                                  char *e;                                  char *e;
787                                  switch(kw->type)                                  switch(kw->type)
788                                  {                                  {
789                                  case TYPE_STRING:       e = "String"; break;                                  case TYPE_STRING:       e = "String"; yylval.str = xstrdup("error recovery"); break;
790                                  case TYPE_NUMBER:       e = "Number"; break;                                  case TYPE_NUMBER:       e = "Number"; yylval.i = 0; break;
791                                  case TYPE_COLOR:        e = "Color"; break;                                  case TYPE_COLOR:        e = "Color"; yylval.str = xstrdup("#123456"); break;
792                                  case TYPE_FONT:         e = "Font"; break;                                  case TYPE_FONT:         e = "Font"; yylval.i = 0; break;
793                                  case TYPE_BOOLEAN:      e = "Boolean"; break;                                  case TYPE_BOOLEAN:      e = "Boolean"; yylval.i = 0; break;
794                                  case TYPE_DOUBLE:       e = "Double"; break;                                  case TYPE_DOUBLE:       e = "Double"; yylval.d = 0.0; break;
795                                  default:                e = "Internal error: Unknown type"; break;                                  default:                e = "Internal error: Unknown type"; yylval.i = 0; break;
796                                  }                                  }
797                                  yyerror("%s expected", e);                                  stack_msg(MSG_ERR, "config: %d: %s expected", line_number, e);
798                          }                          }
799  #ifdef DEBUG  #ifdef DEBUG
800                          printf("processing: '%s'\n", kw->keyword);                          printf("processing: '%s'\n", kw->keyword);
# Line 798  Line 830 
830                          break;                          break;
831                  case 3:                  case 3:
832                          if(token != ';')                          if(token != ';')
833                                  yyerror("';' expected");                                  stack_msg(MSG_ERR, "config: %d: ';' expected", line_number);
834                          state = 0;                          state = 0;
835                          break;                          break;
836                  default:                  default:

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

  ViewVC Help
Powered by ViewVC 1.1.0 with CvsGraph 1.7.0