From: Hoà Viêt Dinh Date: Tue, 5 Jun 2001 22:56:48 +0000 (+0000) Subject: readonly configuration files X-Git-Tag: VERSION_0_5_0~102 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=fdf58a32b35726d6c7cc8bbaacd0015c5063a885 readonly configuration files --- diff --git a/ChangeLog.claws b/ChangeLog.claws index 3fd43f008..0b94cf365 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,22 @@ +2001-06-06 [hoa] + + * added src/quote_fmt_parse.h + * src/compose.c + removed warnings + + * src/prefs.[ch] + don't modify readonly configuration files + + * src/prefs_account.c + * src/prefs_common.c + * src/prefs_customheader.c + * src/prefs_display_header.c + * src/prefs_filter.c + * src/prefs_filtering.c + * src/prefs_scoring.c + don't open dialog box when configuration files + are readonly + 2001-06-05 [sergey] * configure.in: added AM_PROG_LEX and AC_PROG_YACC. diff --git a/src/compose.c b/src/compose.c index 7f133f785..c78da09ad 100644 --- a/src/compose.c +++ b/src/compose.c @@ -103,7 +103,7 @@ # include "rfc2015.h" #endif -/* #include "quote_fmt_parse.h" */ +#include "quote_fmt_parse.h" typedef enum { diff --git a/src/prefs.c b/src/prefs.c index 1bc015370..21da865af 100644 --- a/src/prefs.c +++ b/src/prefs.c @@ -267,6 +267,11 @@ PrefFile *prefs_write_open(const gchar *path) g_return_val_if_fail(path != NULL, NULL); + if (prefs_is_readonly(path)) { + g_warning(_("no permission - %s\n"), path); + return NULL; + } + tmppath = g_strconcat(path, ".tmp", NULL); if ((fp = fopen(tmppath, "w")) == NULL) { FILE_OP_ERROR(tmppath, "fopen"); @@ -768,3 +773,26 @@ void prefs_set_spinbtn(PrefParam *pparam) pparam->type); } } + +gboolean prefs_is_readonly(const gchar * path) +{ + if (path == NULL) + return TRUE; + + return (access(path, W_OK) != 0 && access(path, F_OK) == 0); +} + +gboolean prefs_rc_is_readonly(const gchar * rcfile) +{ + gboolean result; + gchar * rcpath; + + if (rcfile == NULL) + return TRUE; + + rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, rcfile, NULL); + result = prefs_is_readonly(rcpath); + g_free(rcpath); + + return result; +} diff --git a/src/prefs.h b/src/prefs.h index 3a7ed5a92..a11479518 100644 --- a/src/prefs.h +++ b/src/prefs.h @@ -150,5 +150,7 @@ void prefs_set_data_from_toggle (PrefParam *pparam); void prefs_set_toggle (PrefParam *pparam); void prefs_set_data_from_spinbtn(PrefParam *pparam); void prefs_set_spinbtn (PrefParam *pparam); +gboolean prefs_is_readonly(const gchar * path); +gboolean prefs_rc_is_readonly(const gchar * rcfile); #endif /* __PREFS_H__ */ diff --git a/src/prefs_account.c b/src/prefs_account.c index 8fcccd9d1..f9083f563 100644 --- a/src/prefs_account.c +++ b/src/prefs_account.c @@ -427,6 +427,9 @@ PrefsAccount *prefs_account_open(PrefsAccount *ac_prefs) { gboolean new_account = FALSE; + if (prefs_rc_is_readonly(ACCOUNT_RC)) + return ac_prefs; + debug_print(_("Opening account preferences window...\n")); inc_autocheck_timer_remove(); diff --git a/src/prefs_common.c b/src/prefs_common.c index 2d161b5ed..026b6fc0f 100644 --- a/src/prefs_common.c +++ b/src/prefs_common.c @@ -638,6 +638,9 @@ void prefs_common_save_config(void) void prefs_common_open(void) { + if (prefs_rc_is_readonly(COMMON_RC)) + return; + inc_autocheck_timer_remove(); if (!dialog.window) { diff --git a/src/prefs_customheader.c b/src/prefs_customheader.c index 15fa61112..d6ee3db7d 100644 --- a/src/prefs_customheader.c +++ b/src/prefs_customheader.c @@ -99,6 +99,9 @@ static PrefsAccount *cur_ac = NULL; void prefs_custom_header_open(PrefsAccount *ac) { + if (prefs_rc_is_readonly(CUSTOM_HEADER_RC)) + return; + if (!customhdr.window) { prefs_custom_header_create(); } diff --git a/src/prefs_display_header.c b/src/prefs_display_header.c index 820a0c533..99beec23e 100644 --- a/src/prefs_display_header.c +++ b/src/prefs_display_header.c @@ -140,6 +140,9 @@ static void prefs_display_header_set_default(void) void prefs_display_header_open(void) { + if (prefs_rc_is_readonly(DISPLAY_HEADER_RC)) + return; + if (!dispheader.window) { prefs_display_header_create(); } diff --git a/src/prefs_filter.c b/src/prefs_filter.c index 14f8e6ca4..24438db5f 100644 --- a/src/prefs_filter.c +++ b/src/prefs_filter.c @@ -119,6 +119,9 @@ static void prefs_filter_ok (void); void prefs_filter_open(void) { + if (prefs_rc_is_readonly(FILTER_RC)) + return; + inc_autocheck_timer_remove(); if (!filter.window) { diff --git a/src/prefs_filtering.c b/src/prefs_filtering.c index 3edaf6d6d..cf111e9c9 100644 --- a/src/prefs_filtering.c +++ b/src/prefs_filtering.c @@ -202,6 +202,9 @@ gchar * action_text [] = { void prefs_filtering_open(void) { + if (prefs_rc_is_readonly(FILTERING_RC)) + return; + inc_autocheck_timer_remove(); if (!filtering.window) { diff --git a/src/prefs_scoring.c b/src/prefs_scoring.c index b91be23c7..7eeddbb4c 100644 --- a/src/prefs_scoring.c +++ b/src/prefs_scoring.c @@ -111,6 +111,9 @@ static gint cur_kill_score; void prefs_scoring_open(FolderItem * item) { + if (prefs_rc_is_readonly(SCORING_RC)) + return; + inc_autocheck_timer_remove(); if (!scoring.window) { diff --git a/src/quote_fmt_parse.h b/src/quote_fmt_parse.h new file mode 100644 index 000000000..8ac5689aa --- /dev/null +++ b/src/quote_fmt_parse.h @@ -0,0 +1,9 @@ +#ifndef QUOTE_FMT_PARSE_H + +#define QUOTE_FMT_PARSE_H + +gchar * quote_fmt_get_buffer(); +void quote_fmt_init(MsgInfo * info, gchar * my_quote_str); +int quote_fmtparse(void); + +#endif