Esempio n. 1
0
mCfgGrp *mms_get_multi_by_field(mCfg *cfg, Octstr *name, Octstr *field, Octstr *value)
{

     gw_assert(name);         
     gw_assert(is_multigroup(name) == 1);
     
     if (!valid_in_group(name, field))
	  panic(0, "Request for invalid field/variable `%s' in group `%s', unexpected!",
		octstr_get_cstr(field), octstr_get_cstr(name));

     if (cfg->xcfg == NULL) {
	  mCfgGrp *grp;
	  Octstr *val;
	  List *r;
	  int i;	  
	  r = dict_get(cfg->grps, name);     
	  if (r)
	       for (i = 0; i < gwlist_len(r); i++)
		    if ((grp = gwlist_get(r, i)) != NULL && 
			(val = dict_get(grp->fields, field)) != NULL &&
			octstr_compare(val, value) == 0)
			 return grp;     
	  return NULL;
     } else 
	  return cfg->cfg_funcs->get_multi_by_field(cfg->xcfg, name, field, value);

}
Esempio n. 2
0
static void check_and_add_field(mCfgGrp *grp, Octstr *field, Octstr *value, int lineno)
{
     if (!valid_in_group(grp->name, field))
	  mms_info(0, "mms_cfg", NULL, "field `%s' is not expected within group `%s' at line %d in conf file - skipped",
	       octstr_get_cstr(field), octstr_get_cstr(grp->name), lineno);
     else if (dict_put_once(grp->fields, field, octstr_duplicate(value)) == 0)
	  mms_error(0, "mms_cfg", NULL, "Duplicate field `%s' at line %d in conf file, ignored", 
		octstr_get_cstr(field), lineno);     
}
Esempio n. 3
0
Octstr *mms_cfg_get(mCfgGrp *grp, Octstr *name)
{
     Octstr *val;

     gw_assert(grp);

     if (!valid_in_group(grp->name, name))
	  panic(0, "Request for invalid field/variable `%s' in group `%s', unexpected!",
		octstr_get_cstr(name), octstr_get_cstr(grp->name));
     
     val = dict_get(grp->fields, name);
     
     if (!val)
	  return NULL;
     else 
	  return octstr_duplicate(val);
}
Esempio n. 4
0
Octstr *mms_cfg_get(mCfg *cfg, mCfgGrp *grp, Octstr *name)
{
     Octstr *val;
     Octstr *grp_name = cfg->xcfg ? cfg->cfg_funcs->get_grp_name(cfg->xcfg, grp) :
	  octstr_duplicate(grp->name);
     
     if (!valid_in_group(grp_name, name))
	  panic(0, "Request for invalid field/variable `%s' in group `%s', unexpected!",
		octstr_get_cstr(name), octstr_get_cstr(grp_name));
     
     octstr_destroy(grp_name);
     if (cfg->xcfg == NULL) {
	  gw_assert(grp);
	  val = dict_get(grp->fields, name);
	  val = octstr_duplicate(val);
     } else {
	  val = cfg->cfg_funcs->get(cfg->xcfg, grp, name);
	  if (val) 
	       fixup_value(val, 0); 
     }
     return val;
}