[Commits] [SCM] claws branch, master, updated. 4.3.0-31-gd92dfd137
paul at claws-mail.org
paul at claws-mail.org
Wed Aug 14 15:56:06 UTC 2024
The branch, master has been updated
via d92dfd13745aac59923d8ff88e89057d966295b5 (commit)
from b9c9f6396734350b659f1fadd46a238d38ae8ea7 (commit)
Summary of changes:
src/common/file-utils.c | 16 +++++++++++++++-
src/common/file-utils.h | 5 ++++-
src/mimeview.c | 5 +++++
src/prefs_common.c | 4 ++++
src/prefs_common.h | 1 +
src/prefs_folder_item.c | 20 ++------------------
src/prefs_other.c | 37 +++++++++++++++++++++++++++++++++++++
7 files changed, 68 insertions(+), 20 deletions(-)
- Log -----------------------------------------------------------------
commit d92dfd13745aac59923d8ff88e89057d966295b5
Author: Paul <paul at claws-mail.org>
Date: Wed Aug 14 16:56:02 2024 +0100
implement RFE 4706, 'add config option for chmod of saved attachments'
diff --git a/src/common/file-utils.c b/src/common/file-utils.c
index 5fc7e3e83..6b00adb50 100644
--- a/src/common/file-utils.c
+++ b/src/common/file-utils.c
@@ -1,6 +1,6 @@
/*
* Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2018 Colin Leroy and the Claws Mail team
+ * Copyright (C) 1999-2024 the Claws Mail team and Colin Leroy
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -870,3 +870,17 @@ FILE *str_open_as_stream(const gchar *str)
rewind(fp);
return fp;
}
+
+gint prefs_chmod_mode(gchar *chmod_pref)
+{
+ gint newmode = 0;
+ gchar *tmp;
+
+ if (chmod_pref) {
+ newmode = strtol(chmod_pref, &tmp, 8);
+ if (!(*(chmod_pref) && !(*tmp)))
+ newmode = 0;
+ }
+
+ return newmode;
+}
diff --git a/src/common/file-utils.h b/src/common/file-utils.h
index 13cfc69ac..a5d8028d5 100644
--- a/src/common/file-utils.h
+++ b/src/common/file-utils.h
@@ -1,6 +1,6 @@
/*
* Claws Mail -- a GTK based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2018 Colin Leroy and the Claws Mail team
+ * Copyright (C) 1999-2024 the Claws Mail team and Colin Leroy
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -100,4 +100,7 @@ gint str_write_to_file (const gchar *str,
const gchar *file,
gboolean safe);
+gint prefs_chmod_mode (gchar *chmod_pref);
+
+
#endif
diff --git a/src/mimeview.c b/src/mimeview.c
index cb84b50fb..2948e437a 100644
--- a/src/mimeview.c
+++ b/src/mimeview.c
@@ -1839,6 +1839,11 @@ static gint mimeview_write_part(const gchar *filename,
return 0;
}
+ if (prefs_common.attach_save_chmod) {
+ if (chmod(filename, prefs_common.attach_save_chmod) < 0)
+ FILE_OP_ERROR(filename, "chmod");
+ }
+
return 1;
}
diff --git a/src/prefs_common.c b/src/prefs_common.c
index 2b876a308..91c8fcb74 100644
--- a/src/prefs_common.c
+++ b/src/prefs_common.c
@@ -110,6 +110,8 @@ static PrefParam param_os_specific[] = {
/* Message */
{"attach_save_directory", NULL,
&prefs_common.attach_save_dir, P_STRING, NULL, NULL, NULL},
+ {"attach_save_chmod", "",
+ &prefs_common.attach_save_chmod, P_INT, NULL, NULL, NULL},
{"attach_load_directory", NULL,
&prefs_common.attach_load_dir, P_STRING, NULL, NULL, NULL},
@@ -804,6 +806,8 @@ static PrefParam param[] = {
NULL, NULL, NULL},
{"attach_save_directory", NULL,
&SPECIFIC_PREFS.attach_save_dir, P_STRING, NULL, NULL, NULL},
+ {"attach_save_chmod", "",
+ &SPECIFIC_PREFS.attach_save_chmod, P_INT, NULL, NULL, NULL},
{"attach_load_directory", NULL,
&SPECIFIC_PREFS.attach_load_dir, P_STRING, NULL, NULL, NULL},
diff --git a/src/prefs_common.h b/src/prefs_common.h
index bb1feb893..5961cac9e 100644
--- a/src/prefs_common.h
+++ b/src/prefs_common.h
@@ -380,6 +380,7 @@ struct _PrefsCommon
gchar *mime_textviewer;
gchar *mime_open_cmd;
gchar *attach_save_dir;
+ gint attach_save_chmod;
gchar *attach_load_dir;
GList *mime_open_cmd_history;
diff --git a/src/prefs_folder_item.c b/src/prefs_folder_item.c
index b5b4f1f03..727631cae 100644
--- a/src/prefs_folder_item.c
+++ b/src/prefs_folder_item.c
@@ -48,6 +48,7 @@
#include "quote_fmt.h"
#include "combobox.h"
#include "stock_pixmap.h"
+#include "file-utils.h"
#if USE_ENCHANT
#include "gtkaspell.h"
@@ -193,8 +194,6 @@ static gboolean general_save_recurse_func(GNode *node, gpointer data);
static gboolean compose_save_recurse_func(GNode *node, gpointer data);
static gboolean templates_save_recurse_func(GNode *node, gpointer data);
-static gint prefs_folder_item_chmod_mode (gchar *folder_chmod);
-
static void clean_cache_cb(GtkWidget *widget, gpointer data);
static void folder_regexp_test_cb(GtkWidget *widget, gpointer data);
static void folder_regexp_set_subject_example_cb(GtkWidget *widget, gpointer data);
@@ -746,7 +745,7 @@ static void general_save_folder_prefs(FolderItem *folder, FolderItemGeneralPage
prefs->enable_folder_chmod =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->checkbtn_folder_chmod));
buf = gtk_editable_get_chars(GTK_EDITABLE(page->entry_folder_chmod), 0, -1);
- prefs->folder_chmod = prefs_folder_item_chmod_mode(buf);
+ prefs->folder_chmod = prefs_chmod_mode(buf);
g_free(buf);
}
@@ -1799,21 +1798,6 @@ static void prefs_folder_item_templates_save_func(PrefsPage *page_)
}
-static gint prefs_folder_item_chmod_mode(gchar *folder_chmod)
-{
- gint newmode = 0;
- gchar *tmp;
-
- if (folder_chmod) {
- newmode = strtol(folder_chmod, &tmp, 8);
- if (!(*(folder_chmod) && !(*tmp)))
- newmode = 0;
- }
-
- return newmode;
-}
-
-
static void clean_cache_cb(GtkWidget *widget, gpointer data)
{
FolderItemGeneralPage *page = (FolderItemGeneralPage *) data;
diff --git a/src/prefs_other.c b/src/prefs_other.c
index 85e1f23d2..a86a8732f 100644
--- a/src/prefs_other.c
+++ b/src/prefs_other.c
@@ -47,6 +47,8 @@
#include "imap-thread.h"
#endif
+#include "file-utils.h"
+
typedef struct _OtherPage
{
PrefsPage page;
@@ -65,6 +67,7 @@ typedef struct _OtherPage
GtkWidget *checkbtn_askonfilter;
GtkWidget *checkbtn_use_shred;
GtkWidget *checkbtn_real_time_sync;
+ GtkWidget *entry_attach_save_chmod;
GtkWidget *flush_metadata_faster_radiobtn;
GtkWidget *flush_metadata_safer_radiobtn;
GtkWidget *checkbtn_transhdr;
@@ -370,6 +373,8 @@ static void prefs_other_create_widget(PrefsPage *_page, GtkWindow *window,
GtkWidget *checkbtn_askonfilter;
GtkWidget *checkbtn_use_shred;
GtkWidget *checkbtn_real_time_sync;
+ GtkWidget *label_attach_save_chmod;
+ GtkWidget *entry_attach_save_chmod;
GtkWidget *frame_metadata;
GtkWidget *vbox_metadata;
@@ -510,6 +515,32 @@ static void prefs_other_create_widget(PrefsPage *_page, GtkWindow *window,
PACK_CHECK_BUTTON (vbox2, checkbtn_real_time_sync,
_("Synchronise offline folders as soon as possible"));
+
+ hbox1 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8);
+ gtk_widget_show(hbox1);
+ gtk_box_pack_start(GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
+
+ label_attach_save_chmod = gtk_label_new (_("Save attachments with chmod"));
+ gtk_widget_show(label_attach_save_chmod);
+ gtk_box_pack_start(GTK_BOX (hbox1), label_attach_save_chmod, FALSE, FALSE, 0);
+
+ entry_attach_save_chmod = gtk_entry_new();
+ gtk_entry_set_width_chars(GTK_ENTRY(entry_attach_save_chmod), 5);
+ gtk_widget_set_tooltip_text(entry_attach_save_chmod,
+ _("By default attachments are saved with chmod value 600: "
+ "readable and writeable by the user only. If this is too "
+ "restrictive for you, set a chmod value here, otherwise leave "
+ "blank to use the default."));
+ gtk_widget_show(entry_attach_save_chmod);
+ gtk_box_pack_start(GTK_BOX(hbox1), entry_attach_save_chmod, FALSE, FALSE, 0);
+ if (prefs_common.attach_save_chmod) {
+ gchar *buf;
+
+ buf = g_strdup_printf("%o", prefs_common.attach_save_chmod);
+ gtk_entry_set_text(GTK_ENTRY(entry_attach_save_chmod), buf);
+ g_free(buf);
+ }
+
#ifndef PASSWORD_CRYPTO_OLD
vbox_passphrase = gtkut_get_options_frame(vbox1, &frame_passphrase, _("Primary passphrase"));
@@ -580,6 +611,7 @@ static void prefs_other_create_widget(PrefsPage *_page, GtkWindow *window,
prefs_other->checkbtn_askonfilter = checkbtn_askonfilter;
prefs_other->checkbtn_use_shred = checkbtn_use_shred;
prefs_other->checkbtn_real_time_sync = checkbtn_real_time_sync;
+ prefs_other->entry_attach_save_chmod = entry_attach_save_chmod;
prefs_other->flush_metadata_safer_radiobtn = flush_metadata_safer_radiobtn;
prefs_other->flush_metadata_faster_radiobtn = flush_metadata_faster_radiobtn;
#ifndef PASSWORD_CRYPTO_OLD
@@ -593,6 +625,7 @@ static void prefs_other_save(PrefsPage *_page)
OtherPage *page = (OtherPage *) _page;
GtkSettings *settings = gtk_settings_get_default();
gboolean gtk_enable_accels;
+ gchar *buf;
prefs_common.add_address_by_click = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_addaddrbyclick));
@@ -624,6 +657,10 @@ static void prefs_other_save(PrefsPage *_page)
gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_real_time_sync));
+ buf = gtk_editable_get_chars(GTK_EDITABLE(page->entry_attach_save_chmod), 0, -1);
+ prefs_common.attach_save_chmod = prefs_chmod_mode(buf);
+ g_free(buf);
+
prefs_keybind_preset_changed(GTK_COMBO_BOX(page->keys_preset_combo));
#ifndef PASSWORD_CRYPTO_OLD
-----------------------------------------------------------------------
hooks/post-receive
--
Claws Mail
More information about the Commits
mailing list