78 lines
1.9 KiB
C
78 lines
1.9 KiB
C
|
#include <Elementary.h>
|
||
|
#include "main.h"
|
||
|
#include "config.h"
|
||
|
|
||
|
static Config *config = NULL;
|
||
|
static Eet_Data_Descriptor *edd_base = NULL;
|
||
|
|
||
|
void
|
||
|
config_init(void)
|
||
|
{
|
||
|
Eet_Data_Descriptor_Class eddc;
|
||
|
Eet_File *ef;
|
||
|
char buf[PATH_MAX];
|
||
|
|
||
|
elm_need_efreet();
|
||
|
efreet_init();
|
||
|
|
||
|
eet_eina_stream_data_descriptor_class_set
|
||
|
(&eddc, sizeof(eddc), "Config", sizeof(Config));
|
||
|
edd_base = eet_data_descriptor_stream_new(&eddc);
|
||
|
EET_DATA_DESCRIPTOR_ADD_BASIC
|
||
|
(edd_base, Config, "emotion_engine", emotion_engine, EET_T_STRING);
|
||
|
snprintf(buf, sizeof(buf), "%s/rage/config/standard/base.cfg", efreet_config_home_get());
|
||
|
ef = eet_open(buf, EET_FILE_MODE_READ);
|
||
|
if (ef)
|
||
|
{
|
||
|
config = eet_data_read(ef, edd_base, "config");
|
||
|
eet_close(ef);
|
||
|
}
|
||
|
if (!config)
|
||
|
{
|
||
|
config = calloc(1, sizeof(Config));
|
||
|
if (!config) abort();
|
||
|
// xine vlc gstreamer1
|
||
|
config->emotion_engine = eina_stringshare_add("gstreamer1");
|
||
|
config_save();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void
|
||
|
config_shutdown(void)
|
||
|
{
|
||
|
if (config->emotion_engine) eina_stringshare_del(config->emotion_engine);
|
||
|
free(config);
|
||
|
if (edd_base)
|
||
|
{
|
||
|
eet_data_descriptor_free(edd_base);
|
||
|
edd_base = NULL;
|
||
|
}
|
||
|
efreet_shutdown();
|
||
|
}
|
||
|
|
||
|
Config *
|
||
|
config_get(void)
|
||
|
{
|
||
|
return config;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
config_save(void)
|
||
|
{
|
||
|
Eet_File *ef;
|
||
|
Eina_Bool ok;
|
||
|
char buf[PATH_MAX], buf2[PATH_MAX];
|
||
|
|
||
|
snprintf(buf, sizeof(buf), "%s/rage/config/standard/", efreet_config_home_get());
|
||
|
ecore_file_mkpath(buf);
|
||
|
snprintf(buf, sizeof(buf), "%s/rage/config/standard/base.cfg.tmp", efreet_config_home_get());
|
||
|
snprintf(buf2, sizeof(buf2), "%s/rage/config/standard/base.cfg", efreet_config_home_get());
|
||
|
ef = eet_open(buf, EET_FILE_MODE_WRITE);
|
||
|
if (ef)
|
||
|
{
|
||
|
ok = eet_data_write(ef, edd_base, "config", config, 1);
|
||
|
eet_close(ef);
|
||
|
if (ok) ecore_file_mv(buf, buf2);
|
||
|
}
|
||
|
}
|