static int _e_config_save_cb(void *data);
static void _e_config_free(void);
static int _e_config_cb_timer(void *data);
-static void _e_config_eet_close_handle(Eet_File *ef, char *file);
+static int _e_config_eet_close_handle(Eet_File *ef, char *file);
/* local subsystem globals */
static int _e_config_save_block = 0;
e_config_profile_save(void)
{
Eet_File *ef;
- char buf[4096];
+ char buf[4096], buf2[4096];
char *homedir;
int ok = 0;
homedir = e_user_homedir_get();
snprintf(buf, sizeof(buf), "%s/.e/e/config/profile.cfg",
homedir);
+ snprintf(buf2, sizeof(buf2), "%s.tmp", buf);
free(homedir);
- ef = eet_open(buf, EET_FILE_MODE_WRITE);
+ ef = eet_open(buf2, EET_FILE_MODE_WRITE);
if (ef)
{
ok = eet_write(ef, "config", _e_config_profile,
strlen(_e_config_profile), 0);
- _e_config_eet_close_handle(ef, buf);
+ if (_e_config_eet_close_handle(ef, buf2))
+ ecore_file_mv(buf2, buf);
+ else
+ ecore_file_unlink(buf2);
}
return ok;
}
e_config_domain_save(char *domain, E_Config_DD *edd, void *data)
{
Eet_File *ef;
- char buf[4096];
+ char buf[4096], buf2[4096];
char *homedir;
int ok = 0;
ecore_file_mkpath(buf);
snprintf(buf, sizeof(buf), "%s/.e/e/config/%s/%s.cfg",
homedir, _e_config_profile, domain);
+ snprintf(buf2, sizeof(buf2), "%s.tmp", buf);
E_FREE(homedir);
ef = eet_open(buf, EET_FILE_MODE_WRITE);
if (ef)
{
ok = eet_data_write(ef, edd, "config", data, 1);
- _e_config_eet_close_handle(ef, buf);
+ if (_e_config_eet_close_handle(ef, buf2))
+ ecore_file_mv(buf2, buf);
+ else
+ ecore_file_unlink(buf2);
}
return ok;
}
return 0;
}
-static void
+static int
_e_config_eet_close_handle(Eet_File *ef, char *file)
{
Eet_Error err;
ecore_file_unlink(file);
e_util_dialog_show(_("Enlightenment Configration Write Problems"),
erstr, file);
+ return 0;
}
+ return 1;
}
}
wd->path = strdup(buf);
if (wd->preview)
- _e_wid_fsel_preview_file(wd);
+ _e_wid_fsel_preview_file(wd);
e_widget_entry_text_set(wd->o_entry, ici->file);
evas_list_free(selected);
if (wd->chg_func) wd->chg_func(wd->chg_data, wd->obj);
EAPI Evas_Object *
e_widget_fsel_add(Evas *evas, char *dev, char *path, char *selected, char *filter,
void (*sel_func) (void *data, Evas_Object *obj), void *sel_data,
- void (*chg_func) (void *data, Evas_Object *obj), void *chg_data, int preview)
+ void (*chg_func) (void *data, Evas_Object *obj), void *chg_data,
+ int preview)
{
Evas_Object *obj, *o;
E_Widget_Data *wd;