forked from enlightenment/enlightenment
parent
21009504f9
commit
79e0f41973
108
src/config.c
108
src/config.c
|
@ -1,48 +1,76 @@
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
|
|
||||||
static char cfg_grabs_db[4096];
|
static char cfg_grabs_db[4096] = "";
|
||||||
static char cfg_settings_db[4096];
|
static char cfg_settings_db[4096] = "";
|
||||||
static char cfg_actions_db[4096];
|
static char cfg_actions_db[4096] = "";
|
||||||
static char cfg_borders[4096];
|
static char cfg_borders_db[4096] = "";
|
||||||
|
static char cfg_user_dir[4096] = "";
|
||||||
|
static char cfg_images_dir[4096] = "";
|
||||||
|
static char cfg_fonts_dir[4096] = "";
|
||||||
|
|
||||||
|
void
|
||||||
|
e_config_init(void)
|
||||||
|
{
|
||||||
|
if (!e_file_is_dir(e_config_user_dir()))
|
||||||
|
{
|
||||||
|
char buf[4096];
|
||||||
|
|
||||||
|
sprintf(buf, "%s", e_config_user_dir());
|
||||||
|
e_file_mkdir(buf);
|
||||||
|
sprintf(buf, "%sappearance", e_config_user_dir());
|
||||||
|
e_file_mkdir(buf);
|
||||||
|
sprintf(buf, "%sappearance/borders", e_config_user_dir());
|
||||||
|
e_file_mkdir(buf);
|
||||||
|
sprintf(buf, "%sbehavior", e_config_user_dir());
|
||||||
|
e_file_mkdir(buf);
|
||||||
|
sprintf(buf, "%sbehavior/grabs.db", e_config_user_dir());
|
||||||
|
e_file_cp(PACKAGE_DATA_DIR"/data/config/behavior/default/grabs.db", buf);
|
||||||
|
sprintf(buf, "%sbehavior/settings.db", e_config_user_dir());
|
||||||
|
e_file_cp(PACKAGE_DATA_DIR"/data/config/behavior/default/settings.db", buf);
|
||||||
|
sprintf(buf, "%sbehavior/actions.db", e_config_user_dir());
|
||||||
|
e_file_cp(PACKAGE_DATA_DIR"/data/config/behavior/default/actions.db", buf);
|
||||||
|
|
||||||
|
sprintf(buf, "%sappearance/borders/border.bits.db", e_config_user_dir());
|
||||||
|
e_file_cp(PACKAGE_DATA_DIR"/data/config/appearance/default/borders/border.bits.db", buf);
|
||||||
|
sprintf(buf, "%sappearance/borders/border2.bits.db", e_config_user_dir());
|
||||||
|
e_file_cp(PACKAGE_DATA_DIR"/data/config/appearance/default/borders/border2.bits.db", buf);
|
||||||
|
sprintf(buf, "%sappearance/borders/borderless.bits.db", e_config_user_dir());
|
||||||
|
e_file_cp(PACKAGE_DATA_DIR"/data/config/appearance/default/borders/borderless.bits.db", buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
e_config_user_dir(void)
|
||||||
|
{
|
||||||
|
if (cfg_user_dir[0]) return cfg_user_dir;
|
||||||
|
sprintf(cfg_user_dir, "%s/.e/", e_file_home());
|
||||||
|
return cfg_user_dir;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define E_CONF(_key, _var, _args...) \
|
||||||
|
{ \
|
||||||
|
if (!strcmp(type, _key)) \
|
||||||
|
{ \
|
||||||
|
if ((_var)[0]) return (_var); \
|
||||||
|
sprintf((_var), ## _args); \
|
||||||
|
return (_var); \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
e_config_get(char *type)
|
e_config_get(char *type)
|
||||||
{
|
{
|
||||||
if (!strcmp(type, "grabs"))
|
E_CONF("grabs", cfg_grabs_db,
|
||||||
{
|
PACKAGE_DATA_DIR"/data/config/behavior/default/grabs.db");
|
||||||
sprintf(cfg_grabs_db,
|
E_CONF("settings", cfg_settings_db,
|
||||||
PACKAGE_DATA_DIR"/data/config/behavior/default/grabs.db");
|
PACKAGE_DATA_DIR"/data/config/behavior/default/settings.db");
|
||||||
return cfg_grabs_db;
|
E_CONF("actions", cfg_actions_db,
|
||||||
}
|
PACKAGE_DATA_DIR"/data/config/behavior/default/actions.db");
|
||||||
if (!strcmp(type, "settings"))
|
E_CONF("borders", cfg_borders_db,
|
||||||
{
|
PACKAGE_DATA_DIR"/data/config/appearance/default/borders/");
|
||||||
sprintf(cfg_settings_db,
|
E_CONF("images", cfg_images_dir,
|
||||||
PACKAGE_DATA_DIR"/data/config/behavior/default/settings.db");
|
PACKAGE_DATA_DIR"/data/images/");
|
||||||
return cfg_settings_db;
|
E_CONF("fonts", cfg_fonts_dir,
|
||||||
}
|
PACKAGE_DATA_DIR"/data/fonts/");
|
||||||
if (!strcmp(type, "actions"))
|
|
||||||
{
|
|
||||||
sprintf(cfg_actions_db,
|
|
||||||
PACKAGE_DATA_DIR"/data/config/behavior/default/actions.db");
|
|
||||||
return cfg_actions_db;
|
|
||||||
}
|
|
||||||
if (!strcmp(type, "borders"))
|
|
||||||
{
|
|
||||||
sprintf(cfg_borders,
|
|
||||||
PACKAGE_DATA_DIR"/data/config/appearance/default/borders/");
|
|
||||||
return cfg_borders;
|
|
||||||
}
|
|
||||||
if (!strcmp(type, "images"))
|
|
||||||
{
|
|
||||||
sprintf(cfg_borders,
|
|
||||||
PACKAGE_DATA_DIR"/data/images/");
|
|
||||||
return cfg_borders;
|
|
||||||
}
|
|
||||||
if (!strcmp(type, "fonts"))
|
|
||||||
{
|
|
||||||
sprintf(cfg_borders,
|
|
||||||
PACKAGE_DATA_DIR"/data/fonts/");
|
|
||||||
return cfg_borders;
|
|
||||||
}
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
7
src/e.h
7
src/e.h
|
@ -348,6 +348,11 @@ void e_resist_border(E_Border *b);
|
||||||
|
|
||||||
time_t e_file_modified_time(char *file);
|
time_t e_file_modified_time(char *file);
|
||||||
void e_set_env(char *variable, char *content);
|
void e_set_env(char *variable, char *content);
|
||||||
|
int e_file_exists(char *file);
|
||||||
|
int e_file_is_dir(char *file);
|
||||||
|
char *e_file_home(void);
|
||||||
|
int e_file_mkdir(char *dir);
|
||||||
|
int e_file_cp(char *src, char *dst);
|
||||||
|
|
||||||
void e_exec_set_args(int argc, char **argv);
|
void e_exec_set_args(int argc, char **argv);
|
||||||
void e_exec_restart(void);
|
void e_exec_restart(void);
|
||||||
|
@ -355,4 +360,6 @@ pid_t e_exec_run(char *exe);
|
||||||
pid_t e_exec_run_in_dir(char *exe, char *dir);
|
pid_t e_exec_run_in_dir(char *exe, char *dir);
|
||||||
pid_t e_run_in_dir_with_env(char *exe, char *dir, int *launch_id_ret, char **env, char *launch_path);
|
pid_t e_run_in_dir_with_env(char *exe, char *dir, int *launch_id_ret, char **env, char *launch_path);
|
||||||
|
|
||||||
|
void e_config_init(void);
|
||||||
|
char *e_config_user_dir(void);
|
||||||
char *e_config_get(char *type);
|
char *e_config_get(char *type);
|
||||||
|
|
|
@ -38,9 +38,10 @@ setup(void)
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
atexit(cb_exit);
|
||||||
e_exec_set_args(argc, argv);
|
e_exec_set_args(argc, argv);
|
||||||
|
|
||||||
atexit(cb_exit);
|
e_config_init();
|
||||||
e_display_init(NULL);
|
e_display_init(NULL);
|
||||||
e_ev_signal_init();
|
e_ev_signal_init();
|
||||||
e_event_filter_init();
|
e_event_filter_init();
|
||||||
|
|
61
src/util.c
61
src/util.c
|
@ -17,3 +17,64 @@ e_set_env(char *variable, char *content)
|
||||||
sprintf(env, "%s=%s", variable, content);
|
sprintf(env, "%s=%s", variable, content);
|
||||||
putenv(env);
|
putenv(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
e_file_exists(char *file)
|
||||||
|
{
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
if (stat(file, &st) < 0) return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
e_file_is_dir(char *file)
|
||||||
|
{
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
if (stat(file, &st) < 0) return 0;
|
||||||
|
if (S_ISDIR(st.st_mode)) return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
e_file_home(void)
|
||||||
|
{
|
||||||
|
static char *home = NULL;
|
||||||
|
|
||||||
|
if (home) return home;
|
||||||
|
home = getenv("HOME");
|
||||||
|
if (!home) home = getenv("TMPDIR");
|
||||||
|
if (!home) home = "/tmp";
|
||||||
|
return home;
|
||||||
|
}
|
||||||
|
|
||||||
|
static mode_t default_mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
|
||||||
|
|
||||||
|
int
|
||||||
|
e_file_mkdir(char *dir)
|
||||||
|
{
|
||||||
|
if (mkdir(dir, default_mode) < 0) return 0;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
e_file_cp(char *src, char *dst)
|
||||||
|
{
|
||||||
|
FILE *f1, *f2;
|
||||||
|
char buf[4096];
|
||||||
|
size_t num;
|
||||||
|
|
||||||
|
f1 = fopen(src, "rb");
|
||||||
|
if (!f1) return 0;
|
||||||
|
f2 = fopen(dst, "wb");
|
||||||
|
if (!f2)
|
||||||
|
{
|
||||||
|
fclose(f2);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
while ((num = fread(buf, 1, 4096, f1)) > 0) fwrite(buf, 1, num, f2);
|
||||||
|
fclose(f1);
|
||||||
|
fclose(f2);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue