Example #1
0
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;
}
Example #2
0
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);
}
Example #3
0
File: config.c Project: joshdk/muxd
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;
}
Example #4
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;
}
Example #5
0
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;

}
Example #6
0
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;
}