src/server/config/conf.c

changeset 38
d07810b02147
parent 36
450d2d5f4735
child 39
de4bc3cd2d36
--- a/src/server/config/conf.c	Sat Dec 15 16:05:03 2012 +0100
+++ b/src/server/config/conf.c	Sat Dec 29 18:08:23 2012 +0100
@@ -286,12 +286,15 @@
     directive->directive_type = sstrdup_mp(mp, name);
     directive->type_num = cfg_get_directive_type_num(name);
     directive->condition = NULL; // set later by main parsing function
-    directive->param = NULL;
+    //directive->param = NULL;
 
     sstr_t param_str;
     param_str.ptr = name.ptr + i;
     param_str.length = line.length - i;
     param_str = sstrtrim(param_str);
+    directive->value = sstrdup_mp(mp, param_str);
+    
+    /*
     sstr_t pname;
     sstr_t pvalue;
     for(;;) {
@@ -314,12 +317,43 @@
 
         // add param to list
         
-        directive->param = ucx_list_append(directive->param, param);
+        //directive->param = ucx_list_append(directive->param, param);
     }
-
+    */
+    
     return directive;
 }
 
+UcxList* cfg_param_list(sstr_t param_str, UcxMempool *mp) {
+    sstr_t pname;
+    sstr_t pvalue;
+    UcxList *plist = NULL;
+    for(;;) {
+        param_str = cfg_param(param_str, &pname, &pvalue);
+        if(pname.length <= 0) {
+            break;
+        }
+        
+
+        // create param object
+        ConfigParam *param = OBJ_NEW(mp, ConfigParam);
+        param->name = sstrdup_mp(mp, pname);
+
+        if(pvalue.length > 0) {
+            param->value = sstrdup_mp(mp, pvalue);
+        } else {
+            param->value.ptr = NULL;
+            param->value.length = 0;
+        }
+
+        // add param to list
+        plist = ucx_list_append(plist, param); // TODO: use mp
+    }
+    return plist;
+}
+
+
+
 /*
  * gets the directive type number from a type string
  * valid types are:
@@ -519,13 +553,15 @@
         n.length = 0;
         return n;
     }
-    return cfg_directive_pstr1(d);
+    //return cfg_directive_pstr1(d);
+    return d->value;
 }
 
 /*
  * returns the name of the first parameter of the directive
  * useful for 'name value' directives
  */
+/*
 sstr_t cfg_directive_pstr1(ConfigDirective *dir) {
     if(dir->param == NULL) {
         fprintf(stderr, "%s", "Error: cfg_directive_pstr1: param is NULL\n");
@@ -538,5 +574,5 @@
     ConfigParam *p = dir->param->data;
     return p->name;
 }
+*/
 
-

mercurial