talons

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

commit b47dcab5e840b5475933931f1e033e882f137dce
parent 3dd94f67dcb66f69787bb3f449444e993b952933
Author: Colin Leroy <colin@colino.net>
Date:   Tue,  3 Mar 2009 17:25:11 +0000

2009-03-03 [colin]	3.7.0cvs77

	* src/prefs_filtering.c
		Win32: Fix bug 1865, 'IMAP account name changes
		are not followed at filter actions'

Diffstat:
MChangeLog | 6++++++
MPATCHSETS | 1+
Mconfigure.ac | 2+-
Msrc/prefs_filtering.c | 27+++++++++++++++++++++------
4 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,9 @@ +2009-03-03 [colin] 3.7.0cvs77 + + * src/prefs_filtering.c + Win32: Fix bug 1865, 'IMAP account name changes + are not followed at filter actions' + 2009-03-02 [colin] 3.7.0cvs76 * src/imap.c diff --git a/PATCHSETS b/PATCHSETS @@ -3738,3 +3738,4 @@ ( cvs diff -u -r 1.1.2.23 -r 1.1.2.24 src/printing.c; ) > 3.7.0cvs74.patchset ( cvs diff -u -r 1.1.2.2 -r 1.1.2.3 manual/es/account.xml; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 manual/es/ack.xml; cvs diff -u -r 1.1.2.1 -r 1.1.2.2 manual/es/addrbook.xml; cvs diff -u -r 1.1.2.14 -r 1.1.2.15 manual/es/advanced.xml; cvs diff -u -r 1.1.2.3 -r 1.1.2.4 manual/es/claws-mail-manual.xml; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 manual/es/faq.xml; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 manual/es/glossary.xml; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 manual/es/gpl.xml; cvs diff -u -r 1.1.2.5 -r 1.1.2.6 manual/es/handling.xml; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 manual/es/intro.xml; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 manual/es/keyboard.xml; cvs diff -u -r 1.1.2.6 -r 1.1.2.7 manual/es/plugins.xml; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 manual/es/starting.xml; cvs diff -u -r 1.60.2.56 -r 1.60.2.57 po/es.po; ) > 3.7.0cvs75.patchset ( cvs diff -u -r 1.179.2.243 -r 1.179.2.244 src/imap.c; ) > 3.7.0cvs76.patchset +( cvs diff -u -r 1.59.2.78 -r 1.59.2.79 src/prefs_filtering.c; ) > 3.7.0cvs77.patchset diff --git a/configure.ac b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=7 MICRO_VERSION=0 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=76 +EXTRA_VERSION=77 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/prefs_filtering.c b/src/prefs_filtering.c @@ -653,9 +653,13 @@ static void rename_path(GSList * filters, 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,G_DIR_SEPARATOR_S,NULL); + old_path_with_sep = g_strconcat(old_path,separator,NULL); for (cur = filters; cur != NULL; cur = cur->next) { FilteringProp *filtering = (FilteringProp *)cur->data; @@ -685,28 +689,30 @@ static void rename_path(GSList * filters, while (*base == G_DIR_SEPARATOR) base++; if (*base == '\0') dest_path = g_strconcat(prefix, - G_DIR_SEPARATOR_S, + separator, new_path, NULL); else dest_path = g_strconcat(prefix, - G_DIR_SEPARATOR_S, + separator, new_path, - G_DIR_SEPARATOR_S, + 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, - G_DIR_SEPARATOR_S, + separator, suffix, NULL); g_free(action->destination); action->destination = dest_path; + matched = TRUE; } } } else { @@ -715,10 +721,19 @@ static void rename_path(GSList * filters, dest_path = g_strdup(new_path); g_free(action->destination); action->destination = dest_path; + matched = TRUE; } } } } + + 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)