Add INFGetBollean method
[tedtools.git] / prs_inf.c
index 5651e33..1f4b633 100644 (file)
--- a/prs_inf.c
+++ b/prs_inf.c
@@ -327,4 +327,48 @@ INFGetString(InfMap *inf, char *sect, char *key, char **val) {
        return 1;
 }
 
+static int
+parseBool(char *str)
+{
+       struct {
+               char *key;
+               int      val;
+       }
+               bdata[] = 
+               {
+                       {"1",   1},
+                       {"0",   0},
+                       {"on",  1},
+                       {"off", 0},
+                       {"enable",      1},
+                       {"disable",     0},
+                       {"true",        1},
+                       {"false",       0},
+                       {"yes", 1},
+                       {"no",  0}
+               };
+       int i;
+
+       while(*str && isspace(*str))
+               str++;
+
+       for(i=0;i<lengthof(bdata);i++)
+               if ( strcasecmp(bdata[i].key, str) == 0 )
+                       return bdata[i].val;
+
+       tlog(TL_ALARM|TL_EXIT, "Unknown value '%s' for boolean variable", str);
+
+       return 0;
+}
+
+int
+INFGetBoolean(InfMap *inf, char *sect, char *key, int *val) {
+       inf = INFFindInfMap(inf, sect, key);
+       if (inf) {
+               *val=parseBool(inf->value);
+               return 0;
+       }
+       return 1;
+}
+