[evolution] I#1208 - Keep the space in the filenames upon saving
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] I#1208 - Keep the space in the filenames upon saving
- Date: Thu, 5 Nov 2020 14:09:30 +0000 (UTC)
commit 224b46f4c973e37fee7fcd38487ebc9f82bd4931
Author: Milan Crha <mcrha redhat com>
Date: Thu Nov 5 15:08:16 2020 +0100
I#1208 - Keep the space in the filenames upon saving
Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/1208
data/org.gnome.evolution.shell.gschema.xml.in | 5 +++++
src/addressbook/gui/widgets/eab-gui-util.c | 2 +-
src/calendar/gui/e-comp-editor.c | 2 +-
src/e-util/e-attachment-store.c | 2 +-
src/e-util/e-attachment.c | 2 +-
src/e-util/e-misc-utils.c | 32 +++++++++++++++++++++++++++
src/e-util/e-misc-utils.h | 1 +
src/e-util/e-web-view.c | 2 +-
src/e-util/gal-view-instance.c | 3 ++-
src/libemail-engine/mail-config.c | 2 +-
src/libemail-engine/mail-folder-cache.c | 4 ++--
src/mail/e-mail-backend.c | 2 +-
src/mail/e-mail-display.c | 2 +-
src/mail/e-mail-paned-view.c | 4 ++--
src/mail/e-mail-reader-utils.c | 2 +-
src/mail/em-utils.c | 4 ++--
src/plugins/mail-to-task/mail-to-task.c | 2 +-
src/shell/e-migrate-base-dirs.c | 4 ++--
src/shell/e-shell-utils.c | 2 +-
19 files changed, 59 insertions(+), 20 deletions(-)
---
diff --git a/data/org.gnome.evolution.shell.gschema.xml.in b/data/org.gnome.evolution.shell.gschema.xml.in
index 2512a02169..dd1291e7a4 100644
--- a/data/org.gnome.evolution.shell.gschema.xml.in
+++ b/data/org.gnome.evolution.shell.gschema.xml.in
@@ -135,6 +135,11 @@
<_summary>Minimum font size to be used by WebKitGTK</_summary>
<_description>The minimum font size in pixels used to display text in WebKitGTK. This setting controls
the absolute smallest size. Values other than 0 can potentially break page layouts. Negative values are
treated as 0.</_description>
</key>
+ <key name="filename-illegal-chars" type="s">
+ <default>'\'"&`();|<>$%{}!'</default>
+ <_summary>Set of additional illegal characters in the filename</_summary>
+ <_description>When generating file names from custom strings some non-printable or reserved characters
are replaced with an underscore. Here's a set of additional characters to be replaced.</_description>
+ </key>
<child name="window" schema="org.gnome.evolution.window"/>
</schema>
</schemalist>
diff --git a/src/addressbook/gui/widgets/eab-gui-util.c b/src/addressbook/gui/widgets/eab-gui-util.c
index 8698ccf4e4..6d41d4b401 100644
--- a/src/addressbook/gui/widgets/eab-gui-util.c
+++ b/src/addressbook/gui/widgets/eab-gui-util.c
@@ -268,7 +268,7 @@ make_safe_filename (gchar *name)
else
safe = g_strdup (name);
- e_filename_make_safe (safe);
+ e_util_make_safe_filename (safe);
return safe;
}
diff --git a/src/calendar/gui/e-comp-editor.c b/src/calendar/gui/e-comp-editor.c
index 6978bbb822..98cc498dc9 100644
--- a/src/calendar/gui/e-comp-editor.c
+++ b/src/calendar/gui/e-comp-editor.c
@@ -642,7 +642,7 @@ ece_save_component_attachments_sync (ECalClient *cal_client,
g_return_val_if_fail (I_CAL_IS_COMPONENT (component), FALSE);
tmp = g_strdup (i_cal_component_get_uid (component));
- e_filename_make_safe (tmp);
+ e_util_make_safe_filename (tmp);
filename_prefix = g_strconcat (tmp, "-", NULL);
g_free (tmp);
diff --git a/src/e-util/e-attachment-store.c b/src/e-util/e-attachment-store.c
index 234622aa54..3a2b512679 100644
--- a/src/e-util/e-attachment-store.c
+++ b/src/e-util/e-attachment-store.c
@@ -914,7 +914,7 @@ e_attachment_store_run_save_dialog (EAttachmentStore *store,
name = _("attachment.dat");
allocated = g_strdup (name);
- e_filename_make_safe (allocated);
+ e_util_make_safe_filename (allocated);
gtk_file_chooser_set_current_name (file_chooser, allocated);
diff --git a/src/e-util/e-attachment.c b/src/e-util/e-attachment.c
index 00e08a9f0e..20723936ba 100644
--- a/src/e-util/e-attachment.c
+++ b/src/e-util/e-attachment.c
@@ -2974,7 +2974,7 @@ attachment_save_new_candidate (SaveContext *save_context)
display_name = _("attachment.dat");
allocated = g_strdup (display_name);
- e_filename_make_safe (allocated);
+ e_util_make_safe_filename (allocated);
basename = get_new_name_with_count (allocated, save_context->count);
diff --git a/src/e-util/e-misc-utils.c b/src/e-util/e-misc-utils.c
index cb62f32ae6..4f62b39065 100644
--- a/src/e-util/e-misc-utils.c
+++ b/src/e-util/e-misc-utils.c
@@ -4655,3 +4655,35 @@ e_util_ensure_scrolled_window_height (GtkScrolledWindow *scrolled_window)
gtk_scrolled_window_set_min_content_height (scrolled_window, require_scw_height);
}
+
+void
+e_util_make_safe_filename (gchar *filename)
+{
+ const gchar *unsafe_chars = "/\\";
+ GSettings *settings;
+ gchar *pp, *ts, *illegal_chars;
+ gunichar cc;
+
+ g_return_if_fail (filename != NULL);
+
+ settings = e_util_ref_settings ("org.gnome.evolution.shell");
+ illegal_chars = g_settings_get_string (settings, "filename-illegal-chars");
+ g_clear_object (&settings);
+
+ pp = filename;
+
+ while (pp && *pp) {
+ cc = g_utf8_get_char (pp);
+ ts = pp;
+ pp = g_utf8_next_char (pp);
+
+ if (!g_unichar_isprint (cc) ||
+ (cc < 0xff && (strchr (unsafe_chars, cc & 0xff) ||
+ (illegal_chars && *illegal_chars && strchr (illegal_chars, cc & 0xff))))) {
+ while (ts < pp)
+ *ts++ = '_';
+ }
+ }
+
+ g_free (illegal_chars);
+}
diff --git a/src/e-util/e-misc-utils.h b/src/e-util/e-misc-utils.h
index 3a98e87051..41683262e6 100644
--- a/src/e-util/e-misc-utils.h
+++ b/src/e-util/e-misc-utils.h
@@ -341,6 +341,7 @@ const ESupportedLocales *
void e_util_ensure_scrolled_window_height
(GtkScrolledWindow *scrolled_window);
+void e_util_make_safe_filename (gchar *filename);
G_END_DECLS
diff --git a/src/e-util/e-web-view.c b/src/e-util/e-web-view.c
index 6911b1fb0d..eebe00018a 100644
--- a/src/e-util/e-web-view.c
+++ b/src/e-util/e-web-view.c
@@ -2637,7 +2637,7 @@ e_web_view_suggest_filename (EWebView *web_view,
filename = class->suggest_filename (web_view, uri);
if (filename != NULL)
- e_filename_make_safe (filename);
+ e_util_make_safe_filename (filename);
return filename;
}
diff --git a/src/e-util/gal-view-instance.c b/src/e-util/gal-view-instance.c
index 03b957b8c9..bf0469a95d 100644
--- a/src/e-util/gal-view-instance.c
+++ b/src/e-util/gal-view-instance.c
@@ -38,6 +38,7 @@
#include <libedataserver/libedataserver.h>
#include "e-unicode.h"
+#include "e-misc-utils.h"
#include "e-xml-utils.h"
#include "gal-view-instance-save-as-dialog.h"
@@ -363,7 +364,7 @@ gal_view_instance_construct (GalViewInstance *instance,
instance->instance_id = g_strdup ("");
safe_id = g_strdup (instance->instance_id);
- e_filename_make_safe (safe_id);
+ e_util_make_safe_filename (safe_id);
user_directory =
gal_view_collection_get_user_directory (instance->collection);
diff --git a/src/libemail-engine/mail-config.c b/src/libemail-engine/mail-config.c
index 9b9c3bc147..32913af642 100644
--- a/src/libemail-engine/mail-config.c
+++ b/src/libemail-engine/mail-config.c
@@ -207,7 +207,7 @@ mail_config_folder_to_cachename (CamelFolder *folder,
g_free (basename);
folder_uri = e_mail_folder_uri_from_folder (folder);
- e_filename_make_safe (folder_uri);
+ e_util_make_safe_filename (folder_uri);
basename = g_strdup_printf ("%s%s", prefix, folder_uri);
filename = g_build_filename (config_dir, "folders", basename, NULL);
g_free (basename);
diff --git a/src/libemail-engine/mail-folder-cache.c b/src/libemail-engine/mail-folder-cache.c
index 653164537c..4e7b7dda4d 100644
--- a/src/libemail-engine/mail-folder-cache.c
+++ b/src/libemail-engine/mail-folder-cache.c
@@ -1392,9 +1392,9 @@ rename_folders (MailFolderCache *cache,
/* rename the meta-data we maintain ourselves */
config_dir = mail_session_get_config_dir ();
olduri = e_mail_folder_uri_build (store_info->store, old);
- e_filename_make_safe (olduri);
+ e_util_make_safe_filename (olduri);
newuri = e_mail_folder_uri_build (store_info->store, fi->full_name);
- e_filename_make_safe (newuri);
+ e_util_make_safe_filename (newuri);
oldfile = g_strdup_printf ("%s/custom_view-%s.xml", config_dir, olduri);
newfile = g_strdup_printf ("%s/custom_view-%s.xml", config_dir, newuri);
if (g_rename (oldfile, newfile) == -1 && errno != ENOENT) {
diff --git a/src/mail/e-mail-backend.c b/src/mail/e-mail-backend.c
index 6e70bf94c4..a70ba6189f 100644
--- a/src/mail/e-mail-backend.c
+++ b/src/mail/e-mail-backend.c
@@ -98,7 +98,7 @@ mail_backend_uri_to_evname (const gchar *uri,
data_dir = mail_session_get_data_dir ();
safe = g_strdup (uri);
- e_filename_make_safe (safe);
+ e_util_make_safe_filename (safe);
basename = g_strdup_printf ("%s%s.xml", prefix, safe);
filename = g_build_filename (data_dir, basename, NULL);
g_free (basename);
diff --git a/src/mail/e-mail-display.c b/src/mail/e-mail-display.c
index 6d5ebfd36b..57821f9cfa 100644
--- a/src/mail/e-mail-display.c
+++ b/src/mail/e-mail-display.c
@@ -1965,7 +1965,7 @@ mail_display_save_part_for_drop (CamelMimePart *mime_part,
part_filename = "mail-part";
tmp = g_strdup (part_filename);
- e_filename_make_safe (tmp);
+ e_util_make_safe_filename (tmp);
filename = g_build_filename (path, tmp, NULL);
g_free (tmp);
diff --git a/src/mail/e-mail-paned-view.c b/src/mail/e-mail-paned-view.c
index afdc780e3f..f3a1b9cdc4 100644
--- a/src/mail/e-mail-paned-view.c
+++ b/src/mail/e-mail-paned-view.c
@@ -979,7 +979,7 @@ empv_create_view_id (CamelFolder *folder)
g_return_val_if_fail (folder_uri != NULL, NULL);
/* to be able to migrate previously saved views */
- e_filename_make_safe (folder_uri);
+ e_util_make_safe_filename (folder_uri);
/* use MD5 checksum of the folder URI, to not depend on its length */
checksum = g_checksum_new (G_CHECKSUM_MD5);
@@ -1083,7 +1083,7 @@ mail_paned_view_update_view_instance (EMailView *view)
g_clear_object (&priv->view_instance);
view_id = empv_create_view_id (folder);
- e_filename_make_safe (view_id);
+ e_util_make_safe_filename (view_id);
folder_cache = e_mail_session_get_folder_cache (e_mail_backend_get_session (e_mail_reader_get_backend
(reader)));
diff --git a/src/mail/e-mail-reader-utils.c b/src/mail/e-mail-reader-utils.c
index 37cc415b2e..90ac4d9d0d 100644
--- a/src/mail/e-mail-reader-utils.c
+++ b/src/mail/e-mail-reader-utils.c
@@ -1589,7 +1589,7 @@ mail_reader_print_parse_message_cb (GObject *source_object,
CAMEL_FOLDER (async_context->folder),
e_mail_part_list_get_message_uid (part_list),
NULL);
- e_filename_make_safe (export_basename);
+ e_util_make_safe_filename (export_basename);
e_mail_printer_set_export_filename (printer, export_basename);
g_free (export_basename);
diff --git a/src/mail/em-utils.c b/src/mail/em-utils.c
index 2ee4f8c6fd..71d8526e34 100644
--- a/src/mail/em-utils.c
+++ b/src/mail/em-utils.c
@@ -1017,7 +1017,7 @@ em_utils_selection_set_urilist (GtkSelectionData *data,
basename = em_utils_build_export_basename (
folder, uids->pdata[0], NULL);
}
- e_filename_make_safe (basename);
+ e_util_make_safe_filename (basename);
filename = g_build_filename (tmpdir, basename, NULL);
g_free (basename);
@@ -1066,7 +1066,7 @@ em_utils_selection_set_urilist (GtkSelectionData *data,
basename = em_utils_build_export_basename (
folder, uids->pdata[ii], ".pdf");
- e_filename_make_safe (basename);
+ e_util_make_safe_filename (basename);
filename = g_build_filename (tmpdir, basename, NULL);
g_free (basename);
diff --git a/src/plugins/mail-to-task/mail-to-task.c b/src/plugins/mail-to-task/mail-to-task.c
index 9685aade1d..ea223738f6 100644
--- a/src/plugins/mail-to-task/mail-to-task.c
+++ b/src/plugins/mail-to-task/mail-to-task.c
@@ -433,7 +433,7 @@ set_attachments (ECalClient *client,
g_return_if_fail (comp_uid != NULL);
tmp = g_strdup (comp_uid);
- e_filename_make_safe (tmp);
+ e_util_make_safe_filename (tmp);
filename_prefix = g_strconcat (tmp, "-", NULL);
g_free (tmp);
diff --git a/src/shell/e-migrate-base-dirs.c b/src/shell/e-migrate-base-dirs.c
index 6a9913dd56..37560820f6 100644
--- a/src/shell/e-migrate-base-dirs.c
+++ b/src/shell/e-migrate-base-dirs.c
@@ -147,9 +147,9 @@ shell_xdg_migrate_rename_files (const gchar *src_directory,
home_dir = g_get_home_dir ();
old_base_dir = g_build_filename (home_dir, ".evolution", NULL);
- e_filename_make_safe (old_base_dir);
+ e_util_make_safe_filename (old_base_dir);
new_base_dir = g_strdup (e_get_user_data_dir ());
- e_filename_make_safe (new_base_dir);
+ e_util_make_safe_filename (new_base_dir);
while ((basename = g_dir_read_name (dir)) != NULL) {
GString *buffer;
diff --git a/src/shell/e-shell-utils.c b/src/shell/e-shell-utils.c
index 34f18ef76c..6fef91b405 100644
--- a/src/shell/e-shell-utils.c
+++ b/src/shell/e-shell-utils.c
@@ -141,7 +141,7 @@ e_shell_run_save_dialog (EShell *shell,
gchar *current_name;
current_name = g_strdup (suggestion);
- e_filename_make_safe (current_name);
+ e_util_make_safe_filename (current_name);
gtk_file_chooser_set_current_name (file_chooser, current_name);
g_free (current_name);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]