talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 9429105abbc1356c3fd57ca72f2c65ae2af18ea5
parent 4b57070e2afc09f4267ff9a1f9c391c29ba13002
Author: Paweł Pękala <c0rn@gazeta.pl>
Date:   Thu, 24 Nov 2011 16:52:11 +0000

2011-11-24 [pawel]	3.7.10cvs103

	* src/prefs_filtering.c
		Complete cvs102, forgot to commit this

Diffstat:
MChangeLog | 5+++++
MPATCHSETS | 1+
Mconfigure.ac | 2+-
Msrc/prefs_filtering.c | 88++-----------------------------------------------------------------------------
4 files changed, 9 insertions(+), 87 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,8 @@ +2011-11-24 [pawel] 3.7.10cvs103 + + * src/prefs_filtering.c + Complete cvs102, forgot to commit this + 2011-11-24 [pawel] 3.7.10cvs102 * src/account.c diff --git a/PATCHSETS b/PATCHSETS @@ -4306,3 +4306,4 @@ ( cvs diff -u -r 1.1.2.24 -r 1.1.2.25 src/gtk/gtkcmctree.c; ) > 3.7.10cvs100.patchset ( cvs diff -u -r 1.1.2.25 -r 1.1.2.26 src/gtk/gtkcmctree.c; ) > 3.7.10cvs101.patchset ( cvs diff -u -r 1.61.2.103 -r 1.61.2.104 src/account.c; cvs diff -u -r 1.60.2.59 -r 1.60.2.60 src/filtering.c; cvs diff -u -r 1.21.2.20 -r 1.21.2.21 src/filtering.h; cvs diff -u -r 1.1.2.67 -r 1.1.2.68 src/imap_gtk.c; cvs diff -u -r 1.2.2.39 -r 1.2.2.40 src/mh_gtk.c; cvs diff -u -r 1.60.2.77 -r 1.60.2.78 src/prefs_actions.c; cvs diff -u -r 1.5.2.7 -r 1.5.2.8 src/prefs_actions.h; ) > 3.7.10cvs102.patchset +( cvs diff -u -r 1.59.2.87 -r 1.59.2.88 src/prefs_filtering.c; ) > 3.7.10cvs103.patchset diff --git a/configure.ac b/configure.ac @@ -12,7 +12,7 @@ MINOR_VERSION=7 MICRO_VERSION=10 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=102 +EXTRA_VERSION=103 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/prefs_filtering.c b/src/prefs_filtering.c @@ -646,97 +646,13 @@ void prefs_filtering_rename_path(const gchar *old_path, const gchar *new_path) static void rename_path(GSList * filters, const gchar * old_path, const gchar * new_path) { - gchar *base; - gchar *prefix; - gchar *suffix; - gchar *dest_path; - gchar *old_path_with_sep; - gint destlen; - gint prefixlen; - gint oldpathlen; - GSList * action_cur; GSList * cur; - const gchar *separator=G_DIR_SEPARATOR_S; - gboolean matched = FALSE; -#ifdef G_OS_WIN32 -again: -#endif - oldpathlen = strlen(old_path); - old_path_with_sep = g_strconcat(old_path,separator,NULL); for (cur = filters; cur != NULL; cur = cur->next) { FilteringProp *filtering = (FilteringProp *)cur->data; - - for(action_cur = filtering->action_list ; action_cur != NULL ; - action_cur = action_cur->next) { - - FilteringAction *action = action_cur->data; - - if (action->type == MATCHACTION_SET_TAG || - action->type == MATCHACTION_UNSET_TAG) - continue; - if (!action->destination) - continue; - - destlen = strlen(action->destination); - - if (destlen > oldpathlen) { - prefixlen = destlen - oldpathlen; - suffix = action->destination + prefixlen; - - if (!strncmp(old_path, suffix, oldpathlen)) { - prefix = g_malloc0(prefixlen + 1); - strncpy2(prefix, action->destination, prefixlen); - - base = suffix + oldpathlen; - while (*base == G_DIR_SEPARATOR) base++; - if (*base == '\0') - dest_path = g_strconcat(prefix, - separator, - new_path, NULL); - else - dest_path = g_strconcat(prefix, - separator, - new_path, - separator, - base, NULL); - - g_free(prefix); - g_free(action->destination); - action->destination = dest_path; - matched = TRUE; - } else { /* for non-leaf folders */ - /* compare with trailing slash */ - if (!strncmp(old_path_with_sep, action->destination, oldpathlen+1)) { - - suffix = action->destination + oldpathlen + 1; - dest_path = g_strconcat(new_path, - separator, - suffix, NULL); - g_free(action->destination); - action->destination = dest_path; - matched = TRUE; - } - } - } else { - /* folder-moving a leaf */ - if (!strcmp(old_path, action->destination)) { - dest_path = g_strdup(new_path); - g_free(action->destination); - action->destination = dest_path; - matched = TRUE; - } - } - } + filtering_action_list_rename_path(filtering->action_list, + old_path, new_path); } - - g_free(old_path_with_sep); -#ifdef G_OS_WIN32 - if (!strcmp(separator, G_DIR_SEPARATOR_S) && !matched) { - separator = "/"; - goto again; - } -#endif } static gboolean prefs_filtering_rename_path_func(GNode *node, gpointer data)