forked from enlightenment/rage
parent
77aabdae63
commit
8f126343af
6 changed files with 130 additions and 14 deletions
@ -0,0 +1,77 @@ |
||||
#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); |
||||
} |
||||
} |
@ -0,0 +1,16 @@ |
||||
#ifndef _CONFIG_H__ |
||||
#define _CONFIG_H__ 1 |
||||
|
||||
typedef struct _Config Config; |
||||
|
||||
struct _Config |
||||
{ |
||||
const char *emotion_engine; |
||||
}; |
||||
|
||||
void config_init(void); |
||||
void config_shutdown(void); |
||||
Config *config_get(void); |
||||
void config_save(void); |
||||
|
||||
#endif |
Loading…
Reference in new issue