readonly configuration files
authorHoà Viêt Dinh <dinh.viet.hoa@free.fr>
Tue, 5 Jun 2001 22:56:48 +0000 (22:56 +0000)
committerHoà Viêt Dinh <dinh.viet.hoa@free.fr>
Tue, 5 Jun 2001 22:56:48 +0000 (22:56 +0000)
12 files changed:
ChangeLog.claws
src/compose.c
src/prefs.c
src/prefs.h
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
src/quote_fmt_parse.h [new file with mode: 0644]

index 3fd43f008628b8972704b7fc70a4bcfbc7540207..0b94cf36579f5924890f448045ce99e601c29d15 100644 (file)
@@ -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.
index 7f133f78505ec5f8ba720dbd0f350bee214d24b8..c78da09ad916089713b89fdd5785729fde4b9018 100644 (file)
 #  include "rfc2015.h"
 #endif
 
-/* #include "quote_fmt_parse.h" */
+#include "quote_fmt_parse.h"
 
 typedef enum
 {
index 1bc0153705f63da7935884c8b03e031d370446e6..21da865afd33c07d1e561bc7a3c65c18e331a840 100644 (file)
@@ -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;
+}
index 3a7ed5a9226b06bd716b0bd7ff20c1ba4577c5e6..a11479518ed7c9ac84406edf3dc12c472cc7b135 100644 (file)
@@ -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__ */
index 8fcccd9d1210abd866220bb7444408e9eea52bde..f9083f563e03c5d5e33b6534527ad83d0889abe8 100644 (file)
@@ -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();
index 2d161b5ed3437bcb317b703959a1068081f66943..026b6fc0f540ccc189955950d93a68dba3fbc802 100644 (file)
@@ -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) {
index 15fa6111213d5755b54bbe9ef545eb8dbfeb3838..d6ee3db7d38bd27215838d6eef95791538b042ab 100644 (file)
@@ -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();
        }
index 820a0c533e3bff1e6f40b5240ec5a5c31a3ec54c..99beec23ef31d2e0a451780305556d0410f4d371 100644 (file)
@@ -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();
        }
index 14f8e6ca40bf2d66bfac03b8fc9cf8bb180eaf88..24438db5f1796ed2ca22d2c2efacb9bcf109ce9a 100644 (file)
@@ -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) {
index 3edaf6d6dc16fc4627b695d2c5b9ad1a55522754..cf111e9c9bcdca463f760cd6dd4f63ba0cf0b71e 100644 (file)
@@ -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) {
index b91be23c7856f207504e1bb387a37896fad66b5a..7eeddbb4ceeacb30a5e316d83c65f3803733790c 100644 (file)
@@ -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 (file)
index 0000000..8ac5689
--- /dev/null
@@ -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