diff --git a/src/wtp/configure.c b/src/wtp/configure.c index 58739dd3..a06072cf 100644 --- a/src/wtp/configure.c +++ b/src/wtp/configure.c @@ -14,7 +14,7 @@ static int config_cb(struct cw_ElemHandlerParams * params, uint8_t * elems_ptr, { cw_dbg(DBG_X,"*** Configurations Status Response received ****"); cw_cfg_copy(params->cfg, params->conn->global_cfg,DBG_CFG_UPDATES,"GlbalCfg"); - cw_cfg_save(bootcfg.cfgfilename, params->conn->global_cfg, + cw_cfg_save(bootcfg.config_file, params->conn->global_cfg, "#\n# This file is igenerated by WAT\n# If you edit this, your cahnges might be overwritten\n#\n"); cw_dbg(DBG_X,"*** Cnofig Saved ***"); diff --git a/src/wtp/run.c b/src/wtp/run.c index 393844a6..7d141dee 100644 --- a/src/wtp/run.c +++ b/src/wtp/run.c @@ -35,7 +35,7 @@ static int update_cb(struct cw_ElemHandlerParams * params, uint8_t * elems_ptr, // cw_dbg(DBG_X," **** Configuration Update Request Received ***"); // cw_cfg_dump(params->conn->global_cfg); cw_cfg_copy(params->cfg, params->conn->global_cfg,DBG_CFG_UPDATES,"GlobalCfg"); - cw_cfg_save(bootcfg.cfgfilename, params->conn->global_cfg, + cw_cfg_save(bootcfg.config_file, params->conn->global_cfg, "#\n# This file is igenerated by WAT\n# If you edit this, your cahnges might be overwritten\n#\n"); // cw_dbg(DBG_X," **** Configuration Update Request Received Saved ***"); return 0; diff --git a/src/wtp/wtp.h b/src/wtp/wtp.h index 4779051b..8340304a 100644 --- a/src/wtp/wtp.h +++ b/src/wtp/wtp.h @@ -27,7 +27,8 @@ struct bootcfg{ const char * modnames[MAX_MODS]; int nmods; const char * modpath; - const char * cfgfilename; + const char * config_file; + const char * startup_file; }; extern struct bootcfg bootcfg; diff --git a/src/wtp/wtp_main.c b/src/wtp/wtp_main.c index 39651323..8a974597 100644 --- a/src/wtp/wtp_main.c +++ b/src/wtp/wtp_main.c @@ -32,9 +32,10 @@ static int parse_args (int argc, char *argv[], struct bootcfg * bootcfg) int c; opterr = 1; - bootcfg->cfgfilename = "config.ckv"; + bootcfg->config_file = "config.ckv"; + bootcfg->startup_file = "startup.ckv"; - while ( (c = getopt (argc, argv, "p:d:vc:m:h")) != -1) { + while ( (c = getopt (argc, argv, "s:p:d:vc:m:h")) != -1) { switch (c) { case 'v': @@ -59,7 +60,10 @@ static int parse_args (int argc, char *argv[], struct bootcfg * bootcfg) cw_mod_set_path(optarg); break; case 'c': - bootcfg->cfgfilename = optarg; + bootcfg->config_file = optarg; + break; + case 's': + bootcfg->startup_file = optarg; break; case '?': exit(EXIT_FAILURE); @@ -86,7 +90,7 @@ int main (int argc, char **argv) struct cw_Conn * conn=NULL; //FILE * file; cw_Cfg_t * global_cfg =NULL; - //const cw_Type_t ** ti; + cw_Cfg_t * cfg=NULL; int i; int rc=EXIT_FAILURE; struct cw_DiscoveryResults * results; @@ -120,14 +124,31 @@ int main (int argc, char **argv) cw_log(LOG_ERR, "Error creating global_cfg: %s", strerror(errno)); goto errX; } + global_cfg->name = "Global CFG"; - /* read the initial config file */ - rc = cw_cfg_load(bootcfg.cfgfilename,global_cfg); + + /* read the startup config file */ + rc = cw_cfg_load(bootcfg.startup_file,global_cfg); if (rc){ - cw_log(LOG_ERR,"Can't open file '%s':%s",bootcfg.cfgfilename, strerror(errno)); + cw_log(LOG_ERR,"Can't open file '%s':%s",bootcfg.startup_file, strerror(errno)); goto errX; } + /* Create a temp. cfg */ + cfg = cw_cfg_create(); + if (cfg==NULL) + goto errX; + + /* read the current config file into temp. cfg */ + rc = cw_cfg_load(bootcfg.config_file,cfg); + if (rc){ + cw_cfg_destroy(cfg); + cw_log(LOG_ERR,"Can't open file '%s':%s",bootcfg.config_file, strerror(errno)); + goto errX; + } + + /* copy the temp. cfg into startup cfg - and show debug messages */ + cw_cfg_copy(cfg, global_cfg,DBG_CFG_UPDATES,"Startup CFG"); /* create a connection object */ conn = conn_create_noq(-1, NULL); @@ -137,6 +158,8 @@ int main (int argc, char **argv) goto errX; } + cw_cfg_destroy(cfg); + /* conn->mod=mod;*/ conn->detected = 1;