tImproved error reporting for incorrect boolean configuration variables - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 81b19143416188eca0c13971a780468b2e1889fb
 (DIR) parent 7b1208f1e56d5539ce80984621f6050223a1d869
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Mon, 24 Sep 2001 22:02:55 +0000
       
       Improved error reporting for incorrect boolean configuration variables
       
       
       Diffstat:
         M src/dopewars.c                      |      41 ++++++++++++++++++++-----------
       
       1 file changed, 26 insertions(+), 15 deletions(-)
       ---
 (DIR) diff --git a/src/dopewars.c b/src/dopewars.c
       t@@ -1490,6 +1490,8 @@ void SetConfigValue(int GlobalIndex,int StructIndex,gboolean IndexGiven,
           int IntVal,NewNum;
           Player *tmp;
           GSList *list,*StartList;
       +   gboolean parsed;
       +
           if (!CheckMaxIndex(scanner,GlobalIndex,StructIndex,IndexGiven)) return;
           if (Globals[GlobalIndex].NameStruct[0]) {
              GlobalName=g_strdup_printf("%s[%d].%s",Globals[GlobalIndex].NameStruct,
       t@@ -1519,27 +1521,36 @@ void SetConfigValue(int GlobalIndex,int StructIndex,gboolean IndexGiven,
                                       NULL,NULL,FALSE); return;
              }
           } else if (Globals[GlobalIndex].BoolVal) {
       -      scanner->config->identifier_2_string=TRUE;
              scanner->config->cset_identifier_first=
       -          G_CSET_a_2_z " ._0123456789" G_CSET_A_2_Z G_CSET_LATINS G_CSET_LATINC;
       +          G_CSET_a_2_z "01" G_CSET_A_2_Z;
              scanner->config->cset_identifier_nth=
       -          G_CSET_a_2_z " ._0123456789" G_CSET_A_2_Z G_CSET_LATINS G_CSET_LATINC;
       +          G_CSET_a_2_z G_CSET_A_2_Z;
              token=g_scanner_get_next_token(scanner);
       -      if (token==G_TOKEN_INT || token==G_TOKEN_STRING) {
       -         *((gboolean *)GetGlobalPointer(GlobalIndex,StructIndex))=
       -            (token==G_TOKEN_INT && scanner->value.v_int>0) ||
       -            (token==G_TOKEN_STRING && 
       -             (strcasecmp(scanner->value.v_string,_("TRUE"))==0 ||
       -              strcasecmp(scanner->value.v_string,_("YES"))==0 ||
       -              strcasecmp(scanner->value.v_string,_("ON"))==0));
       -      } else {
       -         g_scanner_unexp_token(scanner,G_TOKEN_INT,NULL,NULL,
       -                               NULL,NULL,FALSE); return;
       -      }
       -      scanner->config->identifier_2_string=FALSE;
              scanner->config->cset_identifier_first=G_CSET_a_2_z "_" G_CSET_A_2_Z;
              scanner->config->cset_identifier_nth=
                      G_CSET_a_2_z "._0123456789" G_CSET_A_2_Z;
       +      parsed=FALSE;
       +      if (token==G_TOKEN_IDENTIFIER) {
       +         if (strcasecmp(scanner->value.v_identifier,_("TRUE"))==0 ||
       +             strcasecmp(scanner->value.v_identifier,_("YES"))==0 ||
       +             strcasecmp(scanner->value.v_identifier,_("ON"))==0 ||
       +             strcmp(scanner->value.v_identifier,"1")==0) {
       +            parsed=TRUE;
       +            *((gboolean *)GetGlobalPointer(GlobalIndex,StructIndex))=TRUE;
       +         } else if (strcasecmp(scanner->value.v_identifier,_("FALSE"))==0 ||
       +             strcasecmp(scanner->value.v_identifier,_("NO"))==0 ||
       +             strcasecmp(scanner->value.v_identifier,_("OFF"))==0 ||
       +             strcmp(scanner->value.v_identifier,"0")==0) {
       +            parsed=TRUE;
       +            *((gboolean *)GetGlobalPointer(GlobalIndex,StructIndex))=FALSE;
       +         }
       +      }
       +      if (!parsed) {
       +         g_scanner_unexp_token(scanner,G_TOKEN_NONE,NULL,NULL,NULL,
       +                 _("expected a boolean value (one of 0, OFF, NO, FALSE, "
       +                 "1, ON, YES, TRUE)"),FALSE);
       +         return;
       +      }
           } else if (Globals[GlobalIndex].PriceVal) {
              token=g_scanner_get_next_token(scanner);
              if (token==G_TOKEN_INT) {