int writeCfgCond(void) {
	config_t cfg;
	config_setting_t *tminTemp = 0;
	config_setting_t *tmaxTemp = 0;
	config_setting_t *tminHum = 0;
	config_setting_t *tmaxHum = 0;
	config_setting_t *twebOR = 0;

	config_init(&cfg);

	if (!config_read_file(&cfg, config_cond_path))
	{
		printf("\n%s:%d - %s", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg));
		config_destroy(&cfg);
		return -1;
	}

	/* lookup variables in config file */
	tminTemp = config_lookup(&cfg, "minTemp");
	tmaxTemp = config_lookup(&cfg, "maxTemp");
	tminHum = config_lookup(&cfg, "minHum");
	tmaxHum = config_lookup(&cfg, "maxHum");
	twebOR = config_lookup(&cfg, "webOR");

	/* get variables from config file then print the variables that changed */
	if (config_setting_get_int(tminTemp) != minTemp) {
		printf("\nminTemp: %i -> ", config_setting_get_int(tminTemp));
		config_setting_set_int(tminTemp, minTemp);
		printf("%i", config_setting_get_int(tminTemp));
	}
	if (config_setting_get_int(tmaxTemp) != maxTemp) {
		printf("\nmaxTemp: %i -> ", config_setting_get_int(tmaxTemp));
		config_setting_set_int(tmaxTemp, maxTemp);
		printf("%i", config_setting_get_int(tmaxTemp));
	}
	if (config_setting_get_int(tminHum) != minHum) {
		printf("\nminHum: %i -> ", config_setting_get_int(tminHum));
		config_setting_set_int(tminHum, minHum);
		printf("%i", config_setting_get_int(tminHum));
	}
	if (config_setting_get_int(tmaxHum) != maxHum) {
		printf("\nmaxHum: %i -> ", config_setting_get_int(tmaxHum));
		config_setting_set_int(tmaxHum, maxHum);
		printf("%i", config_setting_get_int(tmaxHum));
	}
	if (config_setting_get_int(twebOR) != webOR) {
		printf("\nwebOR: %i -> ", config_setting_get_int(twebOR));
		config_setting_set_int(twebOR, webOR);
		printf("%i", config_setting_get_int(twebOR));
	}

	/* write the modified config file */
	config_write_file(&cfg, config_cond_path);
	config_destroy(&cfg);
	return 0;
}
Example #2
0
config_setting_t *config_setting_set_int_elem(config_setting_t *vector,
                                              int idx, int value)
{
  config_setting_t *element = NULL;

  if((vector->type != CONFIG_TYPE_ARRAY) && (vector->type != CONFIG_TYPE_LIST))
    return(NULL);

  if(idx < 0)
  {
    if(! __config_vector_checktype(vector, CONFIG_TYPE_INT))
      return(NULL);

    element = config_setting_create(vector, NULL, CONFIG_TYPE_INT);
  }
  else
  {
    element = config_setting_get_elem(vector, idx);

    if(! element)
      return(NULL);
  }

  if(! config_setting_set_int(element, value))
    return(NULL);

  return(element);
}
Example #3
0
int main()
{
  /* Initialize the configuration */
  config_init(&cfg);

  /* Load the file */
  printf("loading [test.cfg]..");
  if (!config_load_file(&cfg, "test.cfg")) printf("failed\n");
  else {
    printf("ok\n");

    /* Add setting "foo" */
    printf("add setting \"foo\"..");
    config_setting_t *setting = config_setting_add(cfg.root,"foo",CONFIG_TYPE_INT);
    if (!setting) printf("failed\n");
    else {
      config_setting_set_int(setting,1234);
      printf("ok\n");

      /* Save to "testfoo.cfg" */
      printf("saving [testfoo.cfg]..");
      config_save_file(&cfg, "testfoo.cfg");
      printf("ok\n");

      printf("Done!\n");
    }
  }

  /* Free the configuration */
  config_destroy(&cfg);

  return 0;
}
Example #4
0
void config_setting_copy_simple(config_setting_t *parent, const config_setting_t *src)
{
	if (config_setting_is_aggregate(src)) {
		config_setting_copy_aggregate(parent, src);
	}
	else {
		config_setting_t *set;
		
		if( config_setting_get_member(parent, config_setting_name(src)) != NULL )
			return;
		
		if ((set = config_setting_add(parent, config_setting_name(src), config_setting_type(src))) == NULL)
			return;

		if (CONFIG_TYPE_INT == config_setting_type(src)) {
			config_setting_set_int(set, config_setting_get_int(src));
			config_setting_set_format(set, src->format);
		} else if (CONFIG_TYPE_INT64 == config_setting_type(src)) {
			config_setting_set_int64(set, config_setting_get_int64(src));
			config_setting_set_format(set, src->format);
		} else if (CONFIG_TYPE_FLOAT == config_setting_type(src)) {
			config_setting_set_float(set, config_setting_get_float(src));
		} else if (CONFIG_TYPE_STRING == config_setting_type(src)) {
			config_setting_set_string(set, config_setting_get_string(src));
		} else if (CONFIG_TYPE_BOOL == config_setting_type(src)) {
			config_setting_set_bool(set, config_setting_get_bool(src));
		}
	}
}
Example #5
0
int main(int argc, char **argv)
{
  static const char *output_file = "newconfig.cfg";
  config_t cfg;
  config_setting_t *root, *setting, *group, *array;
  int i;

  config_init(&cfg);
  root = config_root_setting(&cfg);

  /* Add some settings to the configuration. */
  group = config_setting_add(root, "address", CONFIG_TYPE_GROUP);

  setting = config_setting_add(group, "street", CONFIG_TYPE_STRING);
  config_setting_set_string(setting, "1 Woz Way");

  setting = config_setting_add(group, "city", CONFIG_TYPE_STRING);
  config_setting_set_string(setting, "San Jose");

  setting = config_setting_add(group, "state", CONFIG_TYPE_STRING);
  config_setting_set_string(setting, "CA");

  setting = config_setting_add(group, "zip", CONFIG_TYPE_INT);
  config_setting_set_int(setting, 95110);

  array = config_setting_add(root, "numbers", CONFIG_TYPE_ARRAY);

  for(i = 0; i < 10; ++i)
  {
    setting = config_setting_add(array, NULL, CONFIG_TYPE_INT);
    config_setting_set_int(setting, 10 * i);
  }

  /* Write out the new configuration. */
  if(! config_write_file(&cfg, output_file))
  {
    fprintf(stderr, "Error while writing file.\n");
    config_destroy(&cfg);
    return(EXIT_FAILURE);
  }

  fprintf(stderr, "New configuration successfully written to: %s\n",
          output_file);

  config_destroy(&cfg);
  return(EXIT_SUCCESS);
}
Example #6
0
/*********************************************
Update an entry from a network frame
return RET_NOK on error
*********************************************/
ret_code_t entry_update(char * data)
{
	char * elements[5] = {NULL,NULL,NULL,NULL,NULL};
	config_setting_t * setting;
	const config_t * config= NULL;
	int value;
	char * token;
	int index = 0;
	ret_code_t ret = RET_NOK;

	token = _strsep(&data,NETWORK_DELIMITER);
	while( token != NULL ) {
		elements[index] = strdup(token);
		index++;
		if(index>5) {
			werr(LOGDEV,"Split string error");
			goto entry_update_cleanup;
		}
		token = _strsep(&data,NETWORK_DELIMITER);
	}

	SDL_LockMutex(entry_mutex);
	config = get_config(elements[1],elements[2]);
	if(config==NULL) {
		goto entry_update_cleanup;
	}

	setting = config_lookup (config, elements[3]);
	if(setting==NULL) {
		goto entry_update_cleanup;
	}

	if( strcmp(elements[0],ENTRY_TYPE_INT) == 0 ) {
		value = atoll(elements[4]);
		if(config_setting_set_int (setting, value) == CONFIG_FALSE) {
			werr(LOGUSER,"Errror setting %s/%s/%s to %d",elements[1],elements[2],elements[3],value);
		} else {
			write_config(config,elements[1],elements[2]);
		}
	} else if( strcmp(elements[0],ENTRY_TYPE_STRING) == 0 ) {
		if(config_setting_set_string (setting,elements[4]) == CONFIG_FALSE) {
			werr(LOGUSER,"Errror setting %s/%s/%s to %s",elements[1],elements[2],elements[3],elements[4]);
		} else {
			write_config(config,elements[1],elements[2]);
		}
	}

	ret = RET_OK;

entry_update_cleanup:
	SDL_UnlockMutex(entry_mutex);
	for(index=0; index<5; index++) {
		if(elements[index]) {
			free(elements[index]);
		}
	}

	return ret;
}
Example #7
0
void MainDialog::configSetInt(const char* key, int val) {
  config_setting_t* setting = config_lookup(&config_, key);
  if(!setting) { // setting not found
    // add a new setting for it
    config_setting_t* root = config_root_setting(&config_);
    setting = config_setting_add(root, key, CONFIG_TYPE_INT);
  }
  config_setting_set_int(setting, val);
}
Example #8
0
 int store_settings(char *cfg_file,
                    int show_line_numbers,
                    int show_lang,
                    int show_spelling_errors,
                    int defualt_window_width,
                    int default_window_height,
                    int undo_level,
                    int show_full_path
                    #ifdef AUTO_TAB_TOGGLE
                    ,
                    int auto_tab
                    #endif
                    ){
	config_t cfg;
	config_setting_t *root, *setting, *group, *UI;
	config_init(&cfg);
	int ret=0;
	root = config_root_setting(&cfg);
	group = config_setting_add(root,"User_Pref", CONFIG_TYPE_GROUP);
	
	setting = config_setting_add(group,"LineNumbers", CONFIG_TYPE_INT);
	config_setting_set_int(setting, show_line_numbers);
	
	setting = config_setting_add(group,"Spelling", CONFIG_TYPE_INT);
	config_setting_set_int(setting, show_spelling_errors);

	setting = config_setting_add(group,"ShowLang", CONFIG_TYPE_INT);
	config_setting_set_int(setting, show_lang);
	#ifdef AUTO_TAB_TOGGLE 
	setting = config_setting_add(group,"Auto_Tab", CONFIG_TYPE_INT);
	config_setting_set_int(setting, auto_tab);
	#endif
	setting = config_setting_add(group,"Show_Full_Path", CONFIG_TYPE_INT);
	config_setting_set_int(setting, show_full_path);
	 
	UI = config_setting_add(root,"User_Interface_Settings", CONFIG_TYPE_GROUP);

	setting = config_setting_add(UI,"Default_Window_Width", CONFIG_TYPE_INT);
	config_setting_set_int(setting, defualt_window_width);

	setting = config_setting_add(UI,"Default_Window_Height", CONFIG_TYPE_INT);
	config_setting_set_int(setting, default_window_height);
	 
	setting = config_setting_add(UI,"Undo_Level", CONFIG_TYPE_INT);
	config_setting_set_int(setting, undo_level);
	 

	 
	if (! config_write_file(&cfg,(char*)cfg_file)) ret=0;
	else ret=1;
	config_destroy(&cfg);
	return(ret);
 }
Example #9
0
config_setting_t *cfgSetInt(config_setting_t *parent, const TCHAR *name, int value)
{
	config_setting_t *setting;
	char uName[CONFIG_UTF8_MAXSTRING];

	UTF8_Encode(name, uName, CONFIG_UTF8_MAXSTRING);

	setting = config_setting_add(parent, uName, CONFIG_TYPE_INT);
	config_setting_set_int(setting, value);

	return setting;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
int general_settings_save_configuration (config_setting_t *setting) 
{
		config_setting_t *s = NULL ;
		
		s = config_setting_add(setting, "path_1_wire_directory", CONFIG_TYPE_STRING) ;
		if (s != NULL) config_setting_set_string(s, path_1_wire_directory->str);
		s = config_setting_add(setting, "path_data_directory", CONFIG_TYPE_STRING) ;
		if (s != NULL) config_setting_set_string(s, path_data_directory->str);
		s = config_setting_add(setting, "write_samples_interval", CONFIG_TYPE_INT) ;
		if (s != NULL) config_setting_set_int(s, write_samples_interval);
		
		return 0 ;
} ;
Example #11
0
void Settings::Save()
{
	config_t cfg;
	config_setting_t *root, *setting, *group;

	config_init(&cfg);
	root = config_root_setting(&cfg);

	group = config_setting_add(root, "Graphics", CONFIG_TYPE_GROUP);
	setting = config_setting_add(group, "Fullscreen", CONFIG_TYPE_INT);
  config_setting_set_int(setting, FullScreen);

	group = config_setting_add(root, "Audio", CONFIG_TYPE_GROUP);
	setting = config_setting_add(group, "PlaySFX", CONFIG_TYPE_INT);
  config_setting_set_int(setting, PlaySFX);
	setting = config_setting_add(group, "PlayMusic", CONFIG_TYPE_INT);
  config_setting_set_int(setting, PlayMusic);

	group = config_setting_add(root, "Input", CONFIG_TYPE_GROUP);
	setting = config_setting_add(group, "keyLeft", CONFIG_TYPE_INT);
  config_setting_set_int(setting, keyLeft);
	setting = config_setting_add(group, "keyRight", CONFIG_TYPE_INT);
  config_setting_set_int(setting, keyRight);
	setting = config_setting_add(group, "keyUp", CONFIG_TYPE_INT);
  config_setting_set_int(setting, keyUp);
	setting = config_setting_add(group, "keyDown", CONFIG_TYPE_INT);
  config_setting_set_int(setting, keyDown);
	setting = config_setting_add(group, "keyFire1", CONFIG_TYPE_INT);
  config_setting_set_int(setting, keyFire1);
	setting = config_setting_add(group, "keyFire2", CONFIG_TYPE_INT);
  config_setting_set_int(setting, keyFire2);
	setting = config_setting_add(group, "keyQuit", CONFIG_TYPE_INT);
  config_setting_set_int(setting, keyQuit);

	config_write_file( &cfg, "settings.cfg" );
	config_destroy(&cfg);
}
Example #12
0
int main(int argc, char **argv)
{
  char *file = "sample.cfg", *var = "x";

  if(argc >= 2)
    file = argv[1];

  if(argc >= 3)
    var = argv[2];

/* Initialize the configuration */
  config_init(&cfg);

  /* Load the file */
  printf("loading [%s]...", file);
  if(!config_read_file(&cfg, file))
    printf("failed\n");
  else
  {
    config_setting_t *setting = NULL;

    printf("ok\n");

    /* Get the variable setting from the configuration.. */
    printf("increment \"%s\"...", var);
    setting = config_lookup(&cfg, var);
    if(!setting)
      printf("failed\n");
    else
    {
      long x = config_setting_get_int(setting);
      x++;
      config_setting_set_int(setting, x);
      printf("ok (%s=%lu)\n", var, x);

      /* Save the changes */
      printf("saving [%s]...", file);
      config_write_file(&cfg, file);
      printf("ok\n");

      printf("Done!\n");
    }
  }

  /* Free the configuration */
  config_destroy(&cfg);

  return 0;
}
Example #13
0
/*******************************************************************************
 函数名称  : webauth_rdx_set_int_setting
 功能描述  : 向配置结构中增加整数型配置
 输入参数  : onfig_setting_t * setting  配置结构
               char* attr                  配置属性名
               int val                     配置属性值
               int def                     配置默认属性
 输出参数  :
 返 回 值  :
--------------------------------------------------------------------------------
 最近一次修改记录 :
 修改作者   :      王群
 修改目的   :      新添加函数
 修改日期   :      2010-08-16
*******************************************************************************/
void webauth_rdx_set_int_setting (config_setting_t * setting, char *attr, int val,
                              int def)
{
    config_setting_t *s;

    if (val != def)
    {
        s = config_setting_add (setting, attr, CONFIG_TYPE_INT);
        if (NULL != s)
        {
            config_setting_set_int (s, val);
        }
    }

    return;
}
Example #14
0
void rtm_init_params(struct fins_module *module) {
	metadata_element *root = config_root_setting(module->params);
	metadata_element *exec_elem = config_setting_add(root, "exec", CONFIG_TYPE_GROUP);
	if (exec_elem == NULL) {
		PRINT_DEBUG("todo error");
		exit(-1);
	}

	metadata_element *get_elem = config_setting_add(root, "get", CONFIG_TYPE_GROUP);
	if (get_elem == NULL) {
		PRINT_DEBUG("todo error");
		exit(-1);
	}

	metadata_element *set_elem = config_setting_add(root, "set", CONFIG_TYPE_GROUP);
	if (set_elem == NULL) {
		PRINT_DEBUG("todo error");
		exit(-1);
	}

	metadata_element *sub = config_setting_add(exec_elem, "test", CONFIG_TYPE_GROUP);
	if (sub == NULL) {
		PRINT_DEBUG("todo error");
		exit(-1);
	}

	metadata_element *elem = config_setting_add(sub, "key", CONFIG_TYPE_INT);
	if (elem == NULL) {
		PRINT_DEBUG("todo error");
		exit(-1);
	}

	uint32_t value = 10;
	int status = config_setting_set_int(elem, *(int *) &value);
	if (status == CONFIG_FALSE) {
		PRINT_DEBUG("todo error");
		exit(-1);
	}
}
Example #15
0
/*********************
return RET_NOK on error
*********************/
static ret_code_t __write_int(const char * table, const char * file, int data, va_list ap)
{
	config_setting_t * setting;
	const config_t * config;

	SDL_LockMutex(entry_mutex);
	config = get_config(table,file);
	if(config==NULL) {
		SDL_UnlockMutex(entry_mutex);
		return RET_NOK;
	}

	setting = create_tree(config,NULL,NULL,NULL,CONFIG_TYPE_INT,ap);

	/* update int */
	if(config_setting_set_int(setting, data)==CONFIG_FALSE) {
		SDL_UnlockMutex(entry_mutex);
		return RET_NOK;
	}

	write_config(config,table,file);
	SDL_UnlockMutex(entry_mutex);
	return RET_OK;
}
Example #16
0
int writeCfg (void)
{
	config_t cfg;
	config_setting_t *tonTemp = 0;
	config_setting_t *toffTemp = 0;
	config_setting_t *thighTemp = 0;
	config_setting_t *tonHum = 0;
	config_setting_t *toffHum = 0;
	config_setting_t *twebOR = 0;
	config_setting_t *ttempState = 0;
	config_setting_t *thumState = 0;

	config_init(&cfg);

	if (!config_read_file(&cfg, config_file_name))
	{
		printf("\n%s:%d - %s", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg));
		config_destroy(&cfg);
		return -1;
	}

	/* lookup variables in config file */
	tonTemp = config_lookup(&cfg, "onTemp");
	toffTemp = config_lookup(&cfg, "offTemp");
	thighTemp = config_lookup(&cfg, "highTemp");
	tonHum = config_lookup(&cfg, "onHum");
	toffHum = config_lookup(&cfg, "offHum");
	twebOR = config_lookup(&cfg, "webOR");
	ttempState = config_lookup(&cfg, "tempState");
	thumState = config_lookup(&cfg, "humState");

	/* get variables from config file then print the variables that changed */
	if (config_setting_get_int(tonTemp) != onTemp) {
		printf("\nonTemp: %i -> ", config_setting_get_int(tonTemp));
		config_setting_set_int(tonTemp, onTemp);
		printf("%i", config_setting_get_int(tonTemp));
	}

	if (config_setting_get_int(toffTemp) != offTemp) {
		printf("\noffTemp: %i -> ", config_setting_get_int(toffTemp));
		config_setting_set_int(toffTemp, offTemp);
		printf("%i", config_setting_get_int(toffTemp));
	}

	if (config_setting_get_int(thighTemp) != highTemp) {
		printf("\nhighTemp: %i -> ", config_setting_get_int(thighTemp));
		config_setting_set_int(thighTemp, highTemp);
		printf("%i", config_setting_get_int(thighTemp));
	}

	if (config_setting_get_int(tonHum) != onHum) {
		printf("\nonHum: %i -> ", config_setting_get_int(tonHum));
		config_setting_set_int(tonHum, onHum);
		printf("%i", config_setting_get_int(tonHum));
	}

	if (config_setting_get_int(toffHum) != offHum) {
		printf("\noffHum: %i -> ", config_setting_get_int(toffHum));
		config_setting_set_int(toffHum, offHum);
		printf("%i", config_setting_get_int(toffHum));
	}

	if (config_setting_get_int(twebOR) != webOR) {
		printf("\nwebOR: %i -> ", config_setting_get_int(twebOR));
		config_setting_set_int(twebOR, webOR);
		printf("%i", config_setting_get_int(twebOR));
	}

	if (config_setting_get_int(ttempState) != tempState) {
		printf("\ntempState: %i -> ", config_setting_get_int(ttempState));
		config_setting_set_int(ttempState, tempState);
		printf("%i", config_setting_get_int(ttempState));
	}

	if (config_setting_get_int(thumState) != humState) {
		printf("\nhumState: %i -> ", config_setting_get_int(thumState));
		config_setting_set_int(thumState, humState);
		printf("%i", config_setting_get_int(thumState));
	}

	/* write the modified config file */
	config_write_file(&cfg, config_file_name);

	config_destroy(&cfg);

	return 0;
}
Example #17
0
//-----------------------------------------------------------------------------
int t_display_save_configuration (config_setting_t *setting, T_Display *d)
{
		config_setting_t *s, *sp = NULL ;
		
		s = config_setting_add(setting, NULL, CONFIG_TYPE_GROUP) ;
		
		sp = config_setting_add(s, "type", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->type);
		sp = config_setting_add(s, "width", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->canvas->allocation.width);
		sp = config_setting_add(s, "height", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->canvas->allocation.height);
		sp = config_setting_add(s, "position_x", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->canvas->allocation.x);
		sp = config_setting_add(s, "position_y", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->canvas->allocation.y);
		
		sp = config_setting_add(s, "time_range", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->time_range);
		sp = config_setting_add(s, "last_time", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->last_time);
		sp = config_setting_add(s, "time_step", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->time_step);
		sp = config_setting_add(s, "temp_max", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->temp_max);
		sp = config_setting_add(s, "temp_min", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->temp_min);
		sp = config_setting_add(s, "temp_step", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->temp_step);
		sp = config_setting_add(s, "font_size", CONFIG_TYPE_INT) ;
		config_setting_set_int(sp, d->font_size);
		sp = config_setting_add(s, "show_legend", CONFIG_TYPE_BOOL) ;
		config_setting_set_bool(sp, d->show_legend);
		
		//		sp = config_setting_add(s, "n_plots", CONFIG_TYPE_INT) ;
		//		config_setting_set_int(sp, g_list_length(d->plots));
		sp = config_setting_add(s, "Plots", CONFIG_TYPE_LIST) ;
		
		GList *tmp = d->plots ;
		while (tmp != NULL) {
				
				t_plot_save_configuration(sp, (T_Plot*)tmp->data) ;
				
				tmp = g_list_next(tmp) ;
		} ;
		
		return 0 ;
} ;
int writeCfgState(void) {
	config_t cfg;
	config_setting_t *ttempState = 0;
	config_setting_t *thumState = 0;
	config_setting_t *tRHeatTS = 0;
	config_setting_t *tRHumTS = 0;
	config_setting_t *tRHepaTS = 0;
	config_setting_t *tRFanTS = 0;
	config_setting_t *twfactor = 0;
	config_setting_t *trelay1o = 0;
	config_setting_t *trelay2o = 0;
	config_setting_t *trelay3o = 0;
	config_setting_t *trelay4o = 0;
	config_setting_t *trelay5o = 0;
	config_setting_t *trelay6o = 0;
	config_setting_t *trelay7o = 0;
	config_setting_t *trelay8o = 0;

	config_init(&cfg);

	if (!config_read_file(&cfg, config_state_path))
	{
		printf("\n%s:%d - %s", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg));
		config_destroy(&cfg);
		return -1;
	}

	/* lookup variables in config file */
	ttempState = config_lookup(&cfg, "tempState");
	thumState = config_lookup(&cfg, "humState");
	trelay1o = config_lookup(&cfg, "relay1o");
	trelay2o = config_lookup(&cfg, "relay2o");
	trelay3o = config_lookup(&cfg, "relay3o");
	trelay4o = config_lookup(&cfg, "relay4o");
	trelay5o = config_lookup(&cfg, "relay5o");
	trelay6o = config_lookup(&cfg, "relay6o");
	trelay7o = config_lookup(&cfg, "relay7o");
	trelay8o = config_lookup(&cfg, "relay8o");
	tRHeatTS = config_lookup(&cfg, "RHeatTS");
	tRHumTS = config_lookup(&cfg, "RHumTS");
	tRHepaTS = config_lookup(&cfg, "RHepaTS");
	tRFanTS = config_lookup(&cfg, "RFanTS");
	twfactor = config_lookup(&cfg, "wfactor");

	/* get variables from config file then print the variables that changed */
	if (config_setting_get_int(ttempState) != tempState) {
		printf("\ntempState: %i -> ", config_setting_get_int(ttempState));
		config_setting_set_int(ttempState, tempState);
		printf("%i", config_setting_get_int(ttempState));
	}
	if (config_setting_get_int(thumState) != humState) {
		printf("\nhumState: %i -> ", config_setting_get_int(thumState));
		config_setting_set_int(thumState, humState);
		printf("%i", config_setting_get_int(thumState));
	}
	if (config_setting_get_int(trelay1o) != relay1o) {
		printf("\nrelay1o: %i -> ", config_setting_get_int(trelay1o));
		config_setting_set_int(trelay1o, relay1o);
		printf("%i", config_setting_get_int(trelay1o));
	}
	if (config_setting_get_int(trelay2o) != relay2o) {
		printf("\nrelay2o: %i -> ", config_setting_get_int(trelay2o));
		config_setting_set_int(trelay2o, relay2o);
		printf("%i", config_setting_get_int(trelay2o));
	}
	if (config_setting_get_int(trelay3o) != relay3o) {
		printf("\nrelay3o: %i -> ", config_setting_get_int(trelay3o));
		config_setting_set_int(trelay3o, relay3o);
		printf("%i", config_setting_get_int(trelay3o));
	}
	if (config_setting_get_int(trelay4o) != relay4o) {
		printf("\nrelay4o: %i -> ", config_setting_get_int(trelay4o));
		config_setting_set_int(trelay4o, relay4o);
		printf("%i", config_setting_get_int(trelay4o));
	}
	if (config_setting_get_int(trelay5o) != relay5o) {
		printf("\nrelay5o: %i -> ", config_setting_get_int(trelay5o));
		config_setting_set_int(trelay5o, relay5o);
		printf("%i", config_setting_get_int(trelay5o));
	}
	if (config_setting_get_int(trelay6o) != relay6o) {
		printf("\nrelay6o: %i -> ", config_setting_get_int(trelay6o));
		config_setting_set_int(trelay6o, relay6o);
		printf("%i", config_setting_get_int(trelay6o));
	}
	if (config_setting_get_int(trelay7o) != relay7o) {
		printf("\nrelay7o: %i -> ", config_setting_get_int(trelay7o));
		config_setting_set_int(trelay7o, relay7o);
		printf("%i", config_setting_get_int(trelay7o));
	}
	if (config_setting_get_int(trelay8o) != relay8o) {
		printf("\nrelay8o: %i -> ", config_setting_get_int(trelay8o));
		config_setting_set_int(trelay8o, relay8o);
		printf("%i", config_setting_get_int(trelay8o));
	}
	if (config_setting_get_int(tRHeatTS) != RHeatTS) {
		printf("\nRHeatTS: %i -> ", config_setting_get_int(tRHeatTS));
		config_setting_set_int(tRHeatTS, RHeatTS);
		printf("%i", config_setting_get_int(tRHeatTS));
	}
	if (config_setting_get_int(tRHumTS) != RHumTS) {
		printf("\nRHumTS: %i -> ", config_setting_get_int(tRHumTS));
		config_setting_set_int(tRHumTS, RHumTS);
		printf("%i", config_setting_get_int(tRHumTS));
	}
	if (config_setting_get_int(tRHepaTS) != RHepaTS) {
		printf("\nRHepaTS: %i -> ", config_setting_get_int(tRHepaTS));
		config_setting_set_int(tRHepaTS, RHepaTS);
		printf("%i", config_setting_get_int(tRHepaTS));
	}
	if (config_setting_get_int(tRFanTS) != RFanTS) {
		printf("\nRFanTS: %i -> ", config_setting_get_int(tRFanTS));
		config_setting_set_int(tRFanTS, RFanTS);
		printf("%i", config_setting_get_int(tRFanTS));
	}
	if (config_setting_get_float(twfactor) != wfactor) {
		printf("\nwfactor: %i -> ", config_setting_get_float(twfactor));
		config_setting_set_float(twfactor, wfactor);
		printf("%i", config_setting_get_float(twfactor));
	}

	/* write the modified config file */
	config_write_file(&cfg, config_state_path);
	config_destroy(&cfg);
	return 0;
}
Example #19
0
/*********************
return RET_NOK on error
*********************/
ret_code_t entry_copy_config(config_setting_t * source, config_setting_t * dest)
{
	config_setting_t * new_source;
	config_setting_t * new_dest;
	int index = -1;
	int int_value;
	long long long_value;
	double double_value;
	const char * string;

	while((new_source=config_setting_get_elem(source,index+1))!= NULL ) {
		index++;
		if(config_setting_is_group(new_source)) {
			if(!entry_copy_aggregate(new_source,dest,CONFIG_TYPE_GROUP)) {
				return RET_NOK;
			}
		}

		else if(config_setting_is_array(new_source)) {
			if(!entry_copy_aggregate(new_source,dest,CONFIG_TYPE_ARRAY)) {
				return RET_NOK;
			}
		}

		else if(config_setting_is_list(new_source)) {
			if(!entry_copy_aggregate(new_source,dest,CONFIG_TYPE_LIST)) {
				return RET_NOK;
			}
		}

		else {
			switch(config_setting_type(new_source)) {
			case CONFIG_TYPE_INT:
				int_value = config_setting_get_int(new_source);
				new_dest = config_setting_add (dest, config_setting_name(new_source),CONFIG_TYPE_INT);
				config_setting_set_int(new_dest,int_value);
				continue;
			case CONFIG_TYPE_INT64:
				long_value = config_setting_get_int64(new_source);
				new_dest = config_setting_add (dest, config_setting_name(new_source),CONFIG_TYPE_INT64);
				config_setting_set_int64(new_dest,long_value);
				continue;
			case CONFIG_TYPE_FLOAT:
				double_value = config_setting_get_float(new_source);
				new_dest = config_setting_add (dest, config_setting_name(new_source),CONFIG_TYPE_FLOAT);
				config_setting_set_float(new_dest,double_value);
				continue;
			case CONFIG_TYPE_BOOL:
				int_value = config_setting_get_bool(new_source);
				new_dest = config_setting_add (dest, config_setting_name(new_source),CONFIG_TYPE_BOOL);
				config_setting_set_bool(new_dest,int_value);
				continue;
			case CONFIG_TYPE_STRING:
				string = config_setting_get_string(new_source);
				new_dest = config_setting_add (dest, config_setting_name(new_source),CONFIG_TYPE_STRING);
				config_setting_set_string(new_dest,string);
				continue;
			default:
				return RET_NOK;
			}
		}
	}

	return RET_OK;
}