try and be more robust on profile.cfg load.
SVN revision: 45014
This commit is contained in:
parent
07ccfbae03
commit
bbd8bddc1e
|
@ -49,6 +49,43 @@ static E_Config_DD *_e_config_syscon_action_edd = NULL;
|
||||||
EAPI int E_EVENT_CONFIG_ICON_THEME = 0;
|
EAPI int E_EVENT_CONFIG_ICON_THEME = 0;
|
||||||
EAPI int E_EVENT_CONFIG_MODE_CHANGED = 0;
|
EAPI int E_EVENT_CONFIG_MODE_CHANGED = 0;
|
||||||
|
|
||||||
|
static char *
|
||||||
|
_e_config_profile_name_get(Eet_File *ef)
|
||||||
|
{
|
||||||
|
/* profile config exists */
|
||||||
|
char *data, *s = NULL;
|
||||||
|
int data_len = 0;
|
||||||
|
|
||||||
|
data = eet_read(ef, "config", &data_len);
|
||||||
|
if ((data) && (data_len > 0))
|
||||||
|
{
|
||||||
|
int ok = 1;
|
||||||
|
|
||||||
|
for (s = data; s < (data + data_len); s++)
|
||||||
|
{
|
||||||
|
// if profile is not all ascii (valid printable ascii - no
|
||||||
|
// control codes etc.) or it contains a '/' (invalid as its a
|
||||||
|
// directory delimiter) - then it's invalid
|
||||||
|
if ((*s < ' ') || (*s > '~') || (*s == '/'))
|
||||||
|
{
|
||||||
|
ok = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ok)
|
||||||
|
{
|
||||||
|
s = malloc(data_len + 1);
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
memcpy(s, data, data_len);
|
||||||
|
s[data_len] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
/* externally accessible functions */
|
/* externally accessible functions */
|
||||||
EAPI int
|
EAPI int
|
||||||
e_config_init(void)
|
e_config_init(void)
|
||||||
|
@ -68,7 +105,13 @@ e_config_init(void)
|
||||||
/* try user profile config */
|
/* try user profile config */
|
||||||
e_user_dir_concat_static(buf, "config/profile.cfg");
|
e_user_dir_concat_static(buf, "config/profile.cfg");
|
||||||
ef = eet_open(buf, EET_FILE_MODE_READ);
|
ef = eet_open(buf, EET_FILE_MODE_READ);
|
||||||
if (!ef)
|
if (ef)
|
||||||
|
{
|
||||||
|
_e_config_profile = _e_config_profile_name_get(ef);
|
||||||
|
eet_close(ef);
|
||||||
|
ef = NULL;
|
||||||
|
}
|
||||||
|
if (!_e_config_profile)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -76,9 +119,15 @@ e_config_init(void)
|
||||||
{
|
{
|
||||||
e_user_dir_snprintf(buf, sizeof(buf), "config/profile.%i.cfg", i);
|
e_user_dir_snprintf(buf, sizeof(buf), "config/profile.%i.cfg", i);
|
||||||
ef = eet_open(buf, EET_FILE_MODE_READ);
|
ef = eet_open(buf, EET_FILE_MODE_READ);
|
||||||
if (ef) break;
|
if (ef)
|
||||||
|
{
|
||||||
|
_e_config_profile = _e_config_profile_name_get(ef);
|
||||||
|
eet_close(ef);
|
||||||
|
ef = NULL;
|
||||||
|
if (_e_config_profile) break;
|
||||||
}
|
}
|
||||||
if (!ef)
|
}
|
||||||
|
if (!_e_config_profile)
|
||||||
{
|
{
|
||||||
/* use system if no user profile config */
|
/* use system if no user profile config */
|
||||||
e_prefix_data_concat_static(buf, "data/config/profile.cfg");
|
e_prefix_data_concat_static(buf, "data/config/profile.cfg");
|
||||||
|
@ -87,24 +136,11 @@ e_config_init(void)
|
||||||
}
|
}
|
||||||
if (ef)
|
if (ef)
|
||||||
{
|
{
|
||||||
/* profile config exists */
|
_e_config_profile = _e_config_profile_name_get(ef);
|
||||||
char *data;
|
|
||||||
int data_len = 0;
|
|
||||||
|
|
||||||
data = eet_read(ef, "config", &data_len);
|
|
||||||
if ((data) && (data_len > 0))
|
|
||||||
{
|
|
||||||
_e_config_profile = malloc(data_len + 1);
|
|
||||||
if (_e_config_profile)
|
|
||||||
{
|
|
||||||
memcpy(_e_config_profile, data, data_len);
|
|
||||||
_e_config_profile[data_len] = 0;
|
|
||||||
}
|
|
||||||
free(data);
|
|
||||||
}
|
|
||||||
eet_close(ef);
|
eet_close(ef);
|
||||||
|
ef = NULL;
|
||||||
}
|
}
|
||||||
else
|
if (!_e_config_profile)
|
||||||
{
|
{
|
||||||
/* no profile config - try other means */
|
/* no profile config - try other means */
|
||||||
char *link = NULL;
|
char *link = NULL;
|
||||||
|
@ -1438,7 +1474,7 @@ e_config_domain_save(const char *domain, E_Config_DD *edd, const void *data)
|
||||||
ret = ecore_file_mv(buf2, buf);
|
ret = ecore_file_mv(buf2, buf);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
{
|
{
|
||||||
printf("*** Error saving profile. ***");
|
printf("*** Error saving config. ***");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ecore_file_unlink(buf2);
|
ecore_file_unlink(buf2);
|
||||||
|
|
3
x-ui.sh
3
x-ui.sh
|
@ -6,12 +6,13 @@
|
||||||
#Xephyr :1 -noreset -ac -br -dpi 186 -screen 480x272x16 &
|
#Xephyr :1 -noreset -ac -br -dpi 186 -screen 480x272x16 &
|
||||||
#Xephyr :1 -noreset -ac -br -dpi 181 -screen 320x320x16 &
|
#Xephyr :1 -noreset -ac -br -dpi 181 -screen 320x320x16 &
|
||||||
#Xephyr :1 -noreset -ac -br -dpi 183 -screen 320x480x16 -host-cursor &
|
#Xephyr :1 -noreset -ac -br -dpi 183 -screen 320x480x16 -host-cursor &
|
||||||
Xephyr :1 -noreset -ac -br -dpi 183 -screen 480x320x16 -host-cursor &
|
#Xephyr :1 -noreset -ac -br -dpi 183 -screen 480x320x16 -host-cursor &
|
||||||
#Xephyr :1 -noreset -ac -br -dpi 183 -screen 480x800x16 &
|
#Xephyr :1 -noreset -ac -br -dpi 183 -screen 480x800x16 &
|
||||||
#Xephyr :1 -noreset -ac -br -dpi 183 -screen 800x480x16 &
|
#Xephyr :1 -noreset -ac -br -dpi 183 -screen 800x480x16 &
|
||||||
#Xephyr :1 -noreset -ac -br -dpi 284 -screen 480x640x16 &
|
#Xephyr :1 -noreset -ac -br -dpi 284 -screen 480x640x16 &
|
||||||
#Xephyr :1 -noreset -ac -br -dpi 284 -screen 640x480x16 -host-cursor &
|
#Xephyr :1 -noreset -ac -br -dpi 284 -screen 640x480x16 -host-cursor &
|
||||||
|
|
||||||
|
Xephyr :1 -noreset -ac -br -dpi 284 -screen 480x800 -host-cursor &
|
||||||
#Xephyr :1 -noreset -ac -br -dpi 284 -screen 480x640 &
|
#Xephyr :1 -noreset -ac -br -dpi 284 -screen 480x640 &
|
||||||
#Xephyr :1 -noreset -ac -br -dpi 284 -screen 640x480 &
|
#Xephyr :1 -noreset -ac -br -dpi 284 -screen 640x480 &
|
||||||
#Xephyr :1 -noreset -ac -br -dpi 181 -screen 320x320 &
|
#Xephyr :1 -noreset -ac -br -dpi 181 -screen 320x320 &
|
||||||
|
|
Loading…
Reference in New Issue