int cfg_gui_read() { debug_start(); config_init(&cfg); char cfg_file[512]; sprintf( cfg_file, "%s/skin.cfg", pmenu->skin_dir ); if (!config_read_file( &cfg, cfg_file ) ) { debug_errorf ("config_read_file() failed : %s (line %d of %s)\n", cfg_file, (__LINE__ -1), __FILE__);; config_destroy(&cfg); debug_end(); return -1; } else { if ( gui != NULL ) { free( gui ); } gui = (GUI_CONFIG *) malloc( sizeof(GUI_CONFIG)); config_setting_t *search = NULL; search = config_lookup(&cfg, "gui_main"); if (!search) { error("config_lookup() failed\n"); config_destroy(&cfg); debug_end(); return -1; } else { /* skin data files */ config_setting_t *tmp = config_setting_get_member(search, "background_applications"); if(tmp) { strcpy( gui->background_applications, config_setting_get_string(tmp)); } else { debug_errorf( "could not find background_applications in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "background_media"); if(tmp) { strcpy( gui->background_media, config_setting_get_string(tmp)); } else { debug_errorf( "could not find background_media in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "background_settings"); if(tmp) { strcpy( gui->background_settings, config_setting_get_string(tmp)); } else { debug_errorf( "could not find background_settings in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "highlight"); if(tmp) { strcpy( gui->highlight, config_setting_get_string(tmp)); } else { debug_errorf( "could not find highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "highlight_enabled"); if(tmp) { gui->highlight_enabled = config_setting_get_int(tmp); } else { debug_errorf( "could not find highlight_enabled in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "application_highlight"); if(tmp) { strcpy( gui->application_highlight, config_setting_get_string(tmp)); } else { debug_errorf( "could not find application_highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "favorites_icon"); if(tmp) { strcpy( gui->favorites_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find favorites_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "favorites_icon_highlight"); if(tmp) { strcpy( gui->favorites_icon_highlight, config_setting_get_string(tmp)); } else { debug_errorf( "could not find favorites_icon_highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "emulators_icon"); if(tmp) { strcpy( gui->emulators_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find emulators_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "emulators_icon_highlight"); if(tmp) { strcpy( gui->emulators_icon_highlight, config_setting_get_string(tmp)); } else { debug_errorf( "could not find emulators_icon_highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "games_icon"); if(tmp) { strcpy( gui->games_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find games_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "games_icon_highlight"); if(tmp) { strcpy( gui->games_icon_highlight, config_setting_get_string(tmp)); } else { debug_errorf( "could not find games_icon_highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "misc_icon"); if(tmp) { strcpy( gui->misc_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find misc_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "misc_icon_highlight"); if(tmp) { strcpy( gui->misc_icon_highlight, config_setting_get_string(tmp)); } else { debug_errorf( "could not find misc_icon_highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_icon"); if(tmp) { strcpy( gui->media_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find media_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_icon_highlight"); if(tmp) { strcpy( gui->media_icon_highlight, config_setting_get_string(tmp)); } else { debug_errorf( "could not find media_icon_highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_file_icon"); if(tmp) { strcpy( gui->media_file_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find media_file_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_folder_icon"); if(tmp) { strcpy( gui->media_folder_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find media_folder_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "settings_icon"); if(tmp) { strcpy( gui->settings_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find settings_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "settings_icon_highlight"); if(tmp) { strcpy( gui->settings_icon_highlight, config_setting_get_string(tmp)); } else { debug_errorf( "could not find settings_icon_highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "confirm_box"); if(tmp) { strcpy( gui->confirm_box, config_setting_get_string(tmp)); } else { debug_errorf( "could not find confirm_box in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "no_icon"); if(tmp) { strcpy( gui->no_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find no_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "no_preview"); if(tmp) { strcpy( gui->no_preview, config_setting_get_string(tmp)); } else { debug_errorf( "could not find no_preview in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "cpu_icon"); if(tmp) { strcpy( gui->cpu_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find cpu_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "sd1_icon"); if(tmp) { strcpy( gui->sd1_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find sd1_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "sd2_icon"); if(tmp) { strcpy( gui->sd2_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find sd2_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "clock_icon"); if(tmp) { strcpy( gui->clock_icon, config_setting_get_string(tmp)); } else { debug_errorf( "could not find clock_icon in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "font_big"); if(tmp) { strcpy( gui->font_big, config_setting_get_string(tmp)); } else { debug_errorf( "could not find font_big in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "font_small"); if(tmp) { strcpy( gui->font_small, config_setting_get_string(tmp)); } else { debug_errorf( "could not find font_small in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "font_small_size" ); if(tmp) { gui->font_small_size = config_setting_get_int(tmp); } else { debug_errorf( "could not find font_small_size in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "font_small_color" ); if(tmp) { gui->font_small_color = config_setting_get_int(tmp); } else { debug_errorf( "could not find font_small_color in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "font_small_color_highlight" ); if(tmp) { gui->font_small_color_highlight = config_setting_get_int(tmp); } else { debug_errorf( "could not find font_small_color_highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "font_small_aliasing" ); if(tmp) { gui->font_small_aliasing = config_setting_get_int(tmp); } else { debug_errorf( "could not find font_small_aliasing in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "font_small_style" ); if(tmp) { gui->font_small_style = config_setting_get_int(tmp); } else { debug_errorf( "could not find font_small_style in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "font_big_size" ); if(tmp) { gui->font_big_size = config_setting_get_int(tmp); } else { debug_errorf( "could not find font_big_size in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "font_big_color" ); if(tmp) { gui->font_big_color = config_setting_get_int(tmp); } else { debug_errorf( "could not find font_big_color in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "font_big_color_highlight" ); if(tmp) { gui->font_big_color_highlight = config_setting_get_int(tmp); } else { debug_errorf( "could not find font_big_color_highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "font_big_aliasing" ); if(tmp) { gui->font_big_aliasing = config_setting_get_int(tmp); } else { debug_errorf( "could not find font_big_aliasing in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "font_big_style" ); if(tmp) { gui->font_big_style = config_setting_get_int(tmp); } else { debug_errorf( "could not find font_big_style in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "applications_box_x"); if(tmp) { gui->applications_box_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find applications_box_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "applications_box_y"); if(tmp) { gui->applications_box_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find applications_box_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "applications_box_w"); if(tmp) { gui->applications_box_w = config_setting_get_int(tmp); } else { debug_errorf( "could not find applications_box_w in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "confirm_box_x"); if(tmp) { gui->confirm_box_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find confirm_box_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "confirm_box_y"); if(tmp) { gui->confirm_box_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find confirm_box_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "preview_pic_x"); if(tmp) { gui->preview_pic_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find preview_pic_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "preview_pic_y"); if(tmp) { gui->preview_pic_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find preview_pic_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "preview_pic_w"); if(tmp) { gui->preview_pic_w = config_setting_get_int(tmp); } else { debug_errorf( "could not find preview_pic_w in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "emulators_icon_x"); if(tmp) { gui->emulators_icon_x = config_setting_get_int(tmp); category_icon_x[EMULATORS] = gui->emulators_icon_x; } else { debug_errorf( "could not find emulators_icon_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "emulators_icon_y"); if(tmp) { gui->emulators_icon_y = config_setting_get_int(tmp); category_icon_y[EMULATORS] = gui->emulators_icon_y; } else { debug_errorf( "could not find emulators_icon_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "emulators_title"); if(tmp) { strcpy( gui->title[EMULATORS], config_setting_get_string(tmp)); } else { debug_errorf( "could not find emulators_title in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "games_icon_x"); if(tmp) { gui->games_icon_x = config_setting_get_int(tmp); category_icon_x[GAMES] = gui->games_icon_x; } else { debug_errorf( "could not find games_icon_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "games_icon_y"); if(tmp) { gui->games_icon_y = config_setting_get_int(tmp); category_icon_y[GAMES] = gui->games_icon_y; } else { debug_errorf( "could not find games_icon_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "games_title"); if(tmp) { strcpy( gui->title[GAMES], config_setting_get_string(tmp)); } else { debug_errorf( "could not find games_title in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "misc_icon_x"); if(tmp) { gui->misc_icon_x = config_setting_get_int(tmp); category_icon_x[MISC] = gui->misc_icon_x; } else { debug_errorf( "could not find misc_icon_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "misc_icon_y"); if(tmp) { gui->misc_icon_y = config_setting_get_int(tmp); category_icon_y[MISC] = gui->misc_icon_y; } else { debug_errorf( "could not find misc_icon_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "misc_title"); if(tmp) { strcpy( gui->title[MISC], config_setting_get_string(tmp)); } else { debug_errorf( "could not find misc_title in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_icon_x"); if(tmp) { gui->media_icon_x = config_setting_get_int(tmp); category_icon_x[MEDIA] = gui->media_icon_x; } else { debug_errorf( "could not find media_icon_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_icon_y"); if(tmp) { gui->media_icon_y = config_setting_get_int(tmp); category_icon_y[MEDIA] = gui->media_icon_y; } else { debug_errorf( "could not find media_icon_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_title"); if(tmp) { strcpy( gui->title[MEDIA], config_setting_get_string(tmp)); } else { debug_errorf( "could not find media_title in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_text_font"); if(tmp) { strcpy( gui->media_text_font, config_setting_get_string(tmp) ); } else { debug_errorf( "could not find media_text_font in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_text_size" ); if(tmp) { gui->media_text_size = config_setting_get_int(tmp); } else { debug_errorf( "could not find media_text_size in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_text_color" ); if(tmp) { gui->media_text_color = config_setting_get_int(tmp); } else { debug_errorf( "could not find media_text_color in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_text_color_highlight" ); if(tmp) { gui->media_text_color_highlight = config_setting_get_int(tmp); } else { debug_errorf( "could not find media_text_color_highlight in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "media_text_aliasing" ); if(tmp) { gui->media_text_aliasing = config_setting_get_int(tmp); } else { debug_errorf( "could not find media_text_aliasing in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "media_text_style" ); if(tmp) { gui->media_text_style = config_setting_get_int(tmp); } else { debug_errorf( "could not find media_text_style in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "media_max_files_per_page"); if(tmp) { gui->media_max_files_per_page = config_setting_get_int(tmp); } else { debug_errorf( "could not find media_max_files_per_page in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "favorites_icon_x"); if(tmp) { gui->favorites_icon_x = config_setting_get_int(tmp); category_icon_x[FAVORITES] = gui->favorites_icon_x; } else { debug_errorf( "could not find favorites_icon_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "favorites_icon_y"); if(tmp) { gui->favorites_icon_y = config_setting_get_int(tmp); category_icon_y[FAVORITES] = gui->favorites_icon_y; } else { debug_errorf( "could not find favorites_icon_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "favorites_title"); if(tmp) { strcpy( gui->title[FAVORITES], config_setting_get_string(tmp)); } else { debug_errorf( "could not find favorites_title in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "settings_icon_x"); if(tmp) { gui->settings_icon_x = config_setting_get_int(tmp); category_icon_x[SETTINGS] = gui->settings_icon_x; } else { debug_errorf( "could not find settings_icon_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "settings_icon_y"); if(tmp) { gui->settings_icon_y = config_setting_get_int(tmp); category_icon_y[SETTINGS] = gui->settings_icon_y; } else { debug_errorf( "could not find settings_icon_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } /* cpu infos */ tmp = config_setting_get_member(search, "cpu_icon_x"); if(tmp) { gui->cpu_icon_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find cpu_icon_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "cpu_icon_y"); if(tmp) { gui->cpu_icon_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find cpu_icon_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "cpu_text_x"); if(tmp) { gui->cpu_text_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find cpu_text_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "cpu_text_y"); if(tmp) { gui->cpu_text_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find cpu_text_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "cpu_text_font" ); if(tmp) { strcpy( gui->cpu_text_font, config_setting_get_string(tmp)); } else { debug_errorf( "could not find cpu_text_font in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "cpu_text_size" ); if(tmp) { gui->cpu_text_size = config_setting_get_int(tmp); } else { debug_errorf( "could not find cpu_text_size in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "cpu_text_color" ); if(tmp) { gui->cpu_text_color = config_setting_get_int(tmp); } else { debug_errorf( "could not find cpu_text_color in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "cpu_text_aliasing" ); if(tmp) { gui->cpu_text_aliasing = config_setting_get_int(tmp); } else { debug_errorf( "could not find cpu_text_aliasing in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "cpu_text_style" ); if(tmp) { gui->cpu_text_style = config_setting_get_int(tmp); } else { debug_errorf( "could not find cpu_text_style in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } /*sd1 infos*/ tmp = config_setting_get_member(search, "sd1_icon_x"); if(tmp) { gui->sd1_icon_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd1_icon_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "sd1_icon_y"); if(tmp) { gui->sd1_icon_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd1_icon_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "sd1_text_x"); if(tmp) { gui->sd1_text_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd1_text_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "sd1_text_y"); if(tmp) { gui->sd1_text_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd1_text_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "sd1_text_font" ); if(tmp) { strcpy( gui->sd1_text_font, config_setting_get_string(tmp)); } else { debug_errorf( "could not find sd1_text_font in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "sd1_text_size" ); if(tmp) { gui->sd1_text_size = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd1_text_size in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "sd1_text_color" ); if(tmp) { gui->sd1_text_color = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd1_text_color in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "sd1_text_aliasing" ); if(tmp) { gui->sd1_text_aliasing = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd1_text_aliasing in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "sd1_text_style" ); if(tmp) { gui->sd1_text_style = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd1_text_style in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } /*sd2 infos*/ tmp = config_setting_get_member(search, "sd2_icon_x"); if(tmp) { gui->sd2_icon_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd2_icon_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "sd2_icon_y"); if(tmp) { gui->sd2_icon_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd2_icon_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "sd2_text_x"); if(tmp) { gui->sd2_text_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd2_text_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "sd2_text_y"); if(tmp) { gui->sd2_text_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd2_text_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "sd2_text_font" ); if(tmp) { strcpy( gui->sd2_text_font, config_setting_get_string(tmp)); } else { debug_errorf( "could not find sd2_text_font in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "sd2_text_size" ); if(tmp) { gui->sd2_text_size = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd2_text_size in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "sd2_text_color" ); if(tmp) { gui->sd2_text_color = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd2_text_color in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "sd2_text_aliasing" ); if(tmp) { gui->sd2_text_aliasing = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd2_text_aliasing in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "sd2_text_style" ); if(tmp) { gui->sd2_text_style = config_setting_get_int(tmp); } else { debug_errorf( "could not find sd2_text_style in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } /*clock infos*/ tmp = config_setting_get_member(search, "clock_icon_x"); if(tmp) { gui->clock_icon_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find clock_icon_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "clock_icon_y"); if(tmp) { gui->clock_icon_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find clock_icon_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "clock_text_x"); if(tmp) { gui->clock_text_x = config_setting_get_int(tmp); } else { debug_errorf( "could not find clock_text_x in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "clock_text_y"); if(tmp) { gui->clock_text_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find clock_text_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "clock_text_font" ); if(tmp) { strcpy( gui->clock_text_font, config_setting_get_string(tmp)); } else { debug_errorf( "could not find clock_text_font in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "clock_text_size" ); if(tmp) { gui->clock_text_size = config_setting_get_int(tmp); } else { debug_errorf( "could not find clock_text_size in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "clock_text_color" ); if(tmp) { gui->clock_text_color = config_setting_get_int(tmp); } else { debug_errorf( "could not find clock_text_color in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "clock_text_aliasing" ); if(tmp) { gui->clock_text_aliasing = config_setting_get_int(tmp); } else { debug_errorf( "could not find clock_text_aliasing in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member( search, "clock_text_style" ); if(tmp) { gui->clock_text_style = config_setting_get_int(tmp); } else { debug_errorf( "could not find clock_text_style in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "settings_title"); if(tmp) { strcpy( gui->title[SETTINGS], config_setting_get_string(tmp)); } else { debug_errorf( "could not find settings_title in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "show_category_title"); if(tmp) { gui->show_category_title = config_setting_get_int(tmp); } else { debug_errorf( "could not find show_category_title in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "max_app_per_page"); if(tmp) { gui->max_app_per_page = config_setting_get_int(tmp); } else { debug_errorf( "could not find max_app_per_page in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "settings_text_spacing"); if(tmp) { gui->settings_text_spacing = config_setting_get_int(tmp); } else { debug_errorf( "could not find settings_text_spacing in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "icon_scale_max" ); if(tmp) { gui->icon_scale_max = config_setting_get_int(tmp); } else { debug_errorf( "could not find icon_scale_max in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "icon_scale_min" ); if(tmp) { gui->icon_scale_min = config_setting_get_int(tmp); } else { debug_errorf( "could not find icon_scale_min in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "applications_spacing" ); if(tmp) { gui->applications_spacing = config_setting_get_int(tmp); } else { debug_errorf( "could not find applications_spacing in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } tmp = config_setting_get_member(search, "applications_title_description_y" ); if(tmp) { gui->applications_title_description_y = config_setting_get_int(tmp); } else { debug_errorf( "could not find applications_title_description_y in %s", cfg_file ); config_destroy(&cfg); debug_end(); return 0; } } } config_destroy(&cfg); debug_end(); return 1; }
int config_setting_get_int_elem(const config_setting_t *vector, int idx) { const config_setting_t *element = config_setting_get_elem(vector, idx); return(element ? config_setting_get_int(element) : 0); }
int config_get_services(config_t *config,service ***final_services){ config_setting_t *cs_services=NULL; if((cs_services=config_lookup(config,"services"))==NULL){ return 1; } int service_count=config_setting_length(cs_services); service **services=NULL; services=malloc((service_count+1)*sizeof(service *)); int services_len=0; for(int n=0;n<service_count;n++){ //printf("service: %d\n",n); config_setting_t *cs_service=NULL; if((cs_service=config_setting_get_elem(cs_services,n))==NULL){ //printf("failed to retrieve service\n"); continue; } int enabled=0; if(config_setting_lookup_bool(cs_service,"enabled",&enabled)){ //printf(" enabled: %s\n",enabled?"true":"false"); if(enabled==0){ continue; } } config_setting_t *cs_host=NULL; if((cs_host=config_setting_get_member(cs_service,"host"))==NULL){ continue; } char *host=NULL; host=strdup(config_setting_get_string(cs_host)); if(host==NULL){ printf("failed to retrieve host\n"); continue; } config_setting_t *cs_port=NULL; if((cs_port=config_setting_get_member(cs_service,"port"))==NULL){ free(host); continue; } char *port=NULL; switch(config_setting_type(cs_port)){ case CONFIG_TYPE_INT: port=calloc(16,sizeof(*port)); sprintf(port,"%lu",config_setting_get_int(cs_port)); break; case CONFIG_TYPE_STRING: port=strdup(config_setting_get_string(cs_port)); break; } if(port==NULL){ printf("failed to retrieve port\n"); free(host); continue; } config_setting_t *cs_names=NULL; if((cs_names=config_setting_get_member(cs_service,"names"))==NULL){ free(host); free(port); continue; } int name_count=config_setting_length(cs_names); char **names=malloc((name_count+1)*sizeof(*names)); int names_len=0; for(int ni=0;ni<name_count;++ni){ const char *name=config_setting_get_string_elem(cs_names,ni); if(name!=NULL && strlen(name)>0){ names[names_len]=strdup(name); //printf(" \"%s\"\n",names[names_len]); names_len++; } } names[names_len]=NULL; services[services_len]=malloc(sizeof(service)); services[services_len]->host=host; services[services_len]->port=port; services[services_len]->names=names; services_len++; } services[services_len]=NULL; *final_services=services; return 0; }
int read_config_node_local_config(config_t * config) { config_setting_t * config_node_setting = config_lookup(config, "config_node"); if (config_node_setting == NULL) { message(LOG_WARNING, FACILITY_CONFIG, "Config node section is missing, using and config node this node"); zfs_config.config_node.node_id = zfs_config.this_node.node_id; zfs_config.config_node.host_port = zfs_config.this_node.host_port; xstringdup(&zfs_config.config_node.node_name, &zfs_config.this_node.node_name); return CONFIG_TRUE; } config_setting_t * setting_node_id = config_setting_get_member(config_node_setting, "id"); config_setting_t * setting_node_name = config_setting_get_member(config_node_setting, "name"); config_setting_t * setting_node_host = config_setting_get_member(config_node_setting, "host"); if (setting_node_id == NULL || setting_node_name == NULL || setting_node_host == NULL) { message(LOG_ERROR, FACILITY_CONFIG, "In local config node section name, node id or host name is missing, please add them to local config.\n"); return CONFIG_FALSE; } if (config_setting_type(setting_node_id) != CONFIG_TYPE_INT) { message(LOG_ERROR, FACILITY_CONFIG, "In local node section key id has wrong type, it should be int.\n"); return CONFIG_FALSE; } if (config_setting_type(setting_node_name) != CONFIG_TYPE_STRING) { message(LOG_ERROR, FACILITY_CONFIG, "In local node section key name has wrong type, it should be string.\n"); return CONFIG_FALSE; } if (config_setting_type(setting_node_host) != CONFIG_TYPE_STRING) { message(LOG_ERROR, FACILITY_CONFIG, "In local node section key name has wrong type, it should be string.\n"); return CONFIG_FALSE; } zfs_config.config_node.node_id = config_setting_get_int(setting_node_id); if (!is_valid_node_id(zfs_config.config_node.node_id)) { message(LOG_ERROR, FACILITY_CONFIG, "Node in config node id is invalid, please fix is.\n"); return CONFIG_FALSE; } if (zfs_config.this_node.node_id == zfs_config.config_node.node_id) { message(LOG_ERROR, FACILITY_CONFIG, "Node in config node id is same as this node id.\n"); return CONFIG_FALSE; } const char * local_node_name = config_setting_get_string(setting_node_name); if (!is_valid_node_name(local_node_name)) { message(LOG_ERROR, FACILITY_CONFIG, "Node name in config node is invalid.\n"); return CONFIG_FALSE; } xmkstring(&zfs_config.config_node.node_name, local_node_name); if (stringeq(&zfs_config.config_node.node_name, &zfs_config.this_node.node_name)) { message(LOG_ERROR, FACILITY_CONFIG, "Node name in config node is same as this node name.\n"); return CONFIG_FALSE; } const char * local_node_host = config_setting_get_string(setting_node_host); if (!is_valid_host_name(local_node_host)) { message(LOG_ERROR, FACILITY_CONFIG, "Host name in config node is invalid.\n"); return CONFIG_FALSE; } xmkstring(&(zfs_config.config_node.host_name), local_node_host); /*read port configuration*/ zfs_config.config_node.host_port = read_tcp_port_setting(config_node_setting); return CONFIG_TRUE; }
int read_groups_local_config(config_t * config) { const char * default_group; config_setting_t * groups_settings = config_lookup(config, "groups"); if (groups_settings == NULL) { //TODO: set nogroup or nobody as gid message(LOG_ERROR, FACILITY_CONFIG, "In groups local config section is missing, please add is to local config.\n"); return CONFIG_FALSE; } config_setting_t * setting_default_gid = config_setting_get_member(groups_settings, "default_gid"); config_setting_t * setting_default_group = config_setting_get_member(groups_settings, "default_group"); if (setting_default_gid != NULL && setting_default_group != NULL) { message(LOG_ERROR, FACILITY_CONFIG, "In groups local config is default_gid and default_groups.\n"); return CONFIG_FALSE; } if (setting_default_gid == NULL && setting_default_group == NULL) { message(LOG_ERROR, FACILITY_CONFIG, "In groups local config are missing default_uid and default_group.\n"); return CONFIG_FALSE; } if (setting_default_gid != NULL) { if (config_setting_type(setting_default_gid) != CONFIG_TYPE_INT) { message(LOG_ERROR, FACILITY_CONFIG, "In groups local config default_gid is wrong type, it should be int.\n"); return CONFIG_FALSE; } zfs_config.default_node_gid = config_setting_get_int(setting_default_gid); return CONFIG_TRUE; } if (config_setting_type(setting_default_group) != CONFIG_TYPE_STRING) { message(LOG_ERROR, FACILITY_CONFIG, "In groups local config default_group is wrong type, it should be string.\n"); return CONFIG_FALSE; } default_group = config_setting_get_string(setting_default_group); if (default_group == NULL) { message(LOG_ERROR, FACILITY_CONFIG, "In groups local config default_group is wrong type, it should be string.\n"); return CONFIG_FALSE; } if (!set_default_gid(default_group)) { message(LOG_ERROR, FACILITY_CONFIG, "In groups local config is unknown (local) group.\n", default_group); return CONFIG_FALSE; } return CONFIG_TRUE; }
int read_users_local_config(config_t * config) { const char * default_user; config_setting_t * users_settings = config_lookup(config, "users"); if (users_settings == NULL) { //TODO: set uid to nobody message(LOG_ERROR, FACILITY_CONFIG, "In users local config section is missing, please add is to local config.\n"); return CONFIG_FALSE; } config_setting_t * setting_default_uid = config_setting_get_member(users_settings, "default_uid"); config_setting_t * setting_default_user = config_setting_get_member(users_settings, "default_user"); if (setting_default_uid != NULL && setting_default_user != NULL) { message(LOG_ERROR, FACILITY_CONFIG, "In users local config is default_uid and default_user.\n"); return CONFIG_FALSE; } if (setting_default_uid == NULL && setting_default_user == NULL) { message(LOG_ERROR, FACILITY_CONFIG, "In users local config are missing default_uid and default_user.\n"); return CONFIG_FALSE; } if (setting_default_uid != NULL) { if (config_setting_type(setting_default_uid) != CONFIG_TYPE_INT) { message(LOG_ERROR, FACILITY_CONFIG, "In users local config default_uid is wrong type, it should be int.\n"); return CONFIG_FALSE; } zfs_config.default_node_uid = config_setting_get_int(setting_default_uid); return CONFIG_TRUE; } if (config_setting_type(setting_default_user) != CONFIG_TYPE_STRING) { message(LOG_ERROR, FACILITY_CONFIG, "In users local config default_user is wrong type, it should be string.\n"); return CONFIG_FALSE; } default_user = config_setting_get_string(setting_default_user); if (default_user == NULL) { message(LOG_ERROR, FACILITY_CONFIG, "In users local config default_user is wrong type, it should be string.\n"); return CONFIG_FALSE; } if (!set_default_uid(default_user)) { message(LOG_ERROR, FACILITY_CONFIG, "In users local config is unknown (local) user.\n", default_user); return CONFIG_FALSE; } return CONFIG_TRUE; }