From 30c446194e388d77490a642810c88b575124b4e7 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 10 Jan 2007 16:32:29 +0000 Subject: [PATCH] fix segv in border - file prop work SVN revision: 27894 --- src/bin/e_border.c | 4 +++- src/bin/e_fm_prop.c | 31 ++++++++++++++++++++++++++++--- src/bin/e_widget_entry.h | 2 +- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 2582d832e..8945fabbd 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -5470,7 +5470,8 @@ _e_border_eval(E_Border *bd) if (rem->prop.border) { if (bd->bordername) evas_stringshare_del(bd->bordername); - bd->bordername = evas_stringshare_add(rem->prop.border); + if (rem->prop.border) bd->bordername = evas_stringshare_add(rem->prop.border); + else bd->bordername = NULL; bd->client.border.changed = 1; } } @@ -5557,6 +5558,7 @@ _e_border_eval(E_Border *bd) bordername = "skipped"; else bordername = e_config->theme_default_border_style; + if (!bordername) bordername = "default"; if ((!bd->client.border.name) || (strcmp(bd->client.border.name, bordername))) { diff --git a/src/bin/e_fm_prop.c b/src/bin/e_fm_prop.c index 32f58b76e..5a9282a8d 100644 --- a/src/bin/e_fm_prop.c +++ b/src/bin/e_fm_prop.c @@ -87,8 +87,8 @@ e_fm_prop_file(E_Container *con, E_Fm2_Icon_Info *fi) v->free_cfdata = _free_data; v->basic.apply_cfdata = _basic_apply_data; v->basic.create_widgets = _basic_create_widgets; - v->advanced.apply_cfdata = _advanced_apply_data; - v->advanced.create_widgets = _advanced_create_widgets; +// v->advanced.apply_cfdata = _advanced_apply_data; +// v->advanced.create_widgets = _advanced_create_widgets; /* create config diaolg for NULL object/data */ cfd = e_config_dialog_new(con, _("File Properties"), @@ -146,14 +146,38 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { + char buf[4096]; + int fperm = 0; + + if (((fi->statinfo.st_mode & S_IRUSR) && (cfdata->owner_read)) || + ((!fi->statinfo.st_mode & S_IRUSR) && (!cfdata->owner_read))) + fperm = 1; + if (((fi->statinfo.st_mode & S_IWUSR) && (cfdata->owner_write)) || + ((!fi->statinfo.st_mode & S_IWUSR) && (!cfdata->owner_write))) + fperm = 1; + if (((fi->statinfo.st_mode & S_IROTH) && (cfdata->others_read)) || + ((!fi->statinfo.st_mode & S_IROTH) && (!cfdata->others_read))) + fperm = 1; + if (((fi->statinfo.st_mode & S_IWOTH) && (cfdata->others_write)) || + ((!fi->statinfo.st_mode & S_IWOTH) && (!cfdata->others_write))) + fperm = 1; + snprintf(buf, sizeof(buf), "%s/%s", + e_fm2_real_path_get(cfdata->fi->fm), cfdata->fi->file); + if (fperm) + { + /* FIXME: modify st_mode */ + chmod(buf, fi->statinfo.st_mode); + } return 1; /* Apply was OK */ } +#if 0 static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { return 1; /* Apply was OK */ } +#endif /**--GUI--**/ static Evas_Object * @@ -288,6 +312,7 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf return o; } +#if 0 static Evas_Object * _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { @@ -297,7 +322,7 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data o = e_widget_table_add(evas, 0); return o; } - +#endif diff --git a/src/bin/e_widget_entry.h b/src/bin/e_widget_entry.h index 6d2cf2e75..499211696 100644 --- a/src/bin/e_widget_entry.h +++ b/src/bin/e_widget_entry.h @@ -11,7 +11,7 @@ EAPI void e_widget_entry_text_set (Evas_Object *entry, const EAPI const char *e_widget_entry_text_get (Evas_Object *entry); EAPI void e_widget_entry_clear (Evas_Object *entry); EAPI void e_widget_entry_password_set (Evas_Object *entry, int password_mode); -EAPI void e_widget_entry_readonly_set (Evas_Object *entry, int readonly_mode); +EAPI void e_widget_entry_readonly_set (Evas_Object *entry, int readonly_mode); EAPI Evas_Object *e_widget_entry_editable_object_get (Evas_Object *entry); #endif