[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 19/22] tools/utils: add pointer to in-progress settings to CfgParseContext



Rather than needing the full structure, for many operations the settings
pointer is enough.

Signed-off-by: Elliott Mitchell <ehem+xen@xxxxxxx>
---
 tools/libs/util/libxlu_cfg.c   | 13 ++++++++-----
 tools/libs/util/libxlu_cfg_y.y |  1 +
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/tools/libs/util/libxlu_cfg.c b/tools/libs/util/libxlu_cfg.c
index 91e056bb33..3c0703f9df 100644
--- a/tools/libs/util/libxlu_cfg.c
+++ b/tools/libs/util/libxlu_cfg.c
@@ -67,10 +67,13 @@ XLU_Config *xlu_cfg_init(FILE *report, const char 
*report_source) {
     return cfg;
 }
 
-static int ctx_prep(CfgParseContext *ctx, XLU_Config *cfg) {
+static int ctx_prep(CfgParseContext *ctx, XLU_Config *cfg,
+    XLU_ConfigSetting **psettings)
+{
     int e;
 
     ctx->cfg= cfg;
+    ctx->psettings = psettings;
     ctx->err= 0;
     ctx->lexerrlineno= -1;
     ctx->likely_python= 0;
@@ -112,7 +115,7 @@ int xlu_cfg_readfile(XLU_Config *cfg, const char 
*real_filename) {
     int e;
 
     CfgParseContext ctx;
-    e = ctx_prep(&ctx, cfg);
+    e = ctx_prep(&ctx, cfg, &cfg->settings);
     if (e) { ctx.err= e; goto xe; }
 
     f= fopen(real_filename, "r");
@@ -139,7 +142,7 @@ int xlu_cfg_readdata(XLU_Config *cfg, const char *data, int 
length) {
     YY_BUFFER_STATE buf= 0;
 
     CfgParseContext ctx;
-    e= ctx_prep(&ctx, cfg);
+    e = ctx_prep(&ctx, cfg, &cfg->settings);
     if (e) { ctx.err= e; goto xe; }
 
     buf = xlu__cfg_yy_scan_bytes(data, length, ctx.scanner);
@@ -619,8 +622,8 @@ void xlu__cfg_set_store(CfgParseContext *ctx, char *name,
     set->value = val;
     set->op = op;
     set->lineno= lineno;
-    set->next= ctx->cfg->settings;
-    ctx->cfg->settings= set;
+    set->next = *ctx->psettings;
+    *ctx->psettings = set;
     return;
 out:
     assert(ctx->err);
diff --git a/tools/libs/util/libxlu_cfg_y.y b/tools/libs/util/libxlu_cfg_y.y
index 5c7e31222d..5bd4cbb0ab 100644
--- a/tools/libs/util/libxlu_cfg_y.y
+++ b/tools/libs/util/libxlu_cfg_y.y
@@ -21,6 +21,7 @@
 
 typedef struct {
     XLU_Config *cfg;
+    XLU_ConfigSetting **psettings;
     int err, lexerrlineno, likely_python;
     void *scanner;
 } CfgParseContext;
-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |       ehem+sigmsg@xxxxxxx      PGP 87145445       |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445






 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.