commit 011da9d2ed24e7e98f736a9ba8cf2a342f7b23aa
parent 91f0b5d0d1e6088a005ed36c3289b48f7f771442
Author: Tristan Chabredier <wwp@claws-mail.org>
Date: Thu, 6 Mar 2008 13:57:49 +0000
2008-03-06 [wwp] 3.3.1cvs13
* src/folder_item_prefs.c
* src/prefs_template.c
* src/prefs_template.h
* src/quote_fmt.c
* src/common/template.c
Complete 3.3.1cvs12, thanks to Colin.
Diffstat:
8 files changed, 54 insertions(+), 22 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,12 @@
+2008-03-06 [wwp] 3.3.1cvs13
+
+ * src/folder_item_prefs.c
+ * src/prefs_template.c
+ * src/prefs_template.h
+ * src/quote_fmt.c
+ * src/common/template.c
+ Complete 3.3.1cvs12, thanks to Colin.
+
2008-03-06 [wwp] 3.3.1cvs12
* src/compose.c
diff --git a/PATCHSETS b/PATCHSETS
@@ -3247,3 +3247,4 @@
( cvs diff -u -r 1.87.2.55 -r 1.87.2.56 src/folder.h; cvs diff -u -r 1.207.2.197 -r 1.207.2.198 src/folderview.c; cvs diff -u -r 1.395.2.355 -r 1.395.2.356 src/summaryview.c; cvs diff -u -r 1.68.2.42 -r 1.68.2.43 src/summaryview.h; ) > 3.3.1cvs10.patchset
( cvs diff -u -r 1.395.2.356 -r 1.395.2.357 src/summaryview.c; cvs diff -u -r 1.68.2.43 -r 1.68.2.44 src/summaryview.h; ) > 3.3.1cvs11.patchset
( cvs diff -u -r 1.382.2.441 -r 1.382.2.442 src/compose.c; cvs diff -u -r 1.2.2.28 -r 1.2.2.29 src/folder_item_prefs.c; cvs diff -u -r 1.2.2.16 -r 1.2.2.17 src/folder_item_prefs.h; cvs diff -u -r 1.105.2.126 -r 1.105.2.127 src/prefs_account.c; cvs diff -u -r 1.52.2.59 -r 1.52.2.60 src/prefs_folder_item.c; cvs diff -u -r 1.1.2.27 -r 1.1.2.28 src/prefs_quote.c; cvs diff -u -r 1.12.2.58 -r 1.12.2.59 src/prefs_template.c; cvs diff -u -r 1.8.2.29 -r 1.8.2.30 src/quote_fmt.c; cvs diff -u -r 1.5.12.16 -r 1.5.12.17 src/quote_fmt.h; cvs diff -u -r 1.2.4.25 -r 1.2.4.26 src/common/template.c; cvs diff -u -r 1.1.4.9 -r 1.1.4.10 src/common/template.h; ) > 3.3.1cvs12.patchset
+( cvs diff -u -r 1.2.2.29 -r 1.2.2.30 src/folder_item_prefs.c; cvs diff -u -r 1.12.2.59 -r 1.12.2.60 src/prefs_template.c; cvs diff -u -r 1.1.16.8 -r 1.1.16.9 src/prefs_template.h; cvs diff -u -r 1.8.2.30 -r 1.8.2.31 src/quote_fmt.c; cvs diff -u -r 1.2.4.26 -r 1.2.4.27 src/common/template.c; ) > 3.3.1cvs13.patchset
diff --git a/configure.ac b/configure.ac
@@ -11,7 +11,7 @@ MINOR_VERSION=3
MICRO_VERSION=1
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=12
+EXTRA_VERSION=13
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
diff --git a/src/common/template.c b/src/common/template.c
@@ -95,6 +95,7 @@ void template_free(Template *tmpl)
g_free(tmpl->load_filename);
g_free(tmpl->name);
g_free(tmpl->subject);
+ g_free(tmpl->from);
g_free(tmpl->to);
g_free(tmpl->cc);
g_free(tmpl->bcc);
diff --git a/src/folder_item_prefs.c b/src/folder_item_prefs.c
@@ -183,13 +183,15 @@ static FolderItemPrefs *folder_item_prefs_clear(FolderItemPrefs *prefs)
prefs->compose_with_format = FALSE;
prefs->compose_subject_format = NULL;
prefs->compose_body_format = NULL;
+ prefs->compose_override_from_format = NULL;
prefs->reply_with_format = FALSE;
prefs->reply_quotemark = NULL;
prefs->reply_body_format = NULL;
+ prefs->reply_override_from_format = NULL;
prefs->forward_with_format = FALSE;
prefs->forward_quotemark = NULL;
prefs->forward_body_format = NULL;
-
+ prefs->forward_override_from_format = NULL;
return prefs;
}
@@ -208,10 +210,13 @@ void folder_item_prefs_free(FolderItemPrefs * prefs)
g_free(prefs->default_reply_to);
g_free(prefs->compose_subject_format);
g_free(prefs->compose_body_format);
+ g_free(prefs->compose_override_from_format);
g_free(prefs->reply_quotemark);
g_free(prefs->reply_body_format);
+ g_free(prefs->reply_override_from_format);
g_free(prefs->forward_quotemark);
g_free(prefs->forward_body_format);
+ g_free(prefs->forward_override_from_format);
g_free(prefs);
}
@@ -265,12 +270,15 @@ void folder_item_prefs_copy_prefs(FolderItem * src, FolderItem * dest)
tmp_prefs.compose_with_format = src->prefs->compose_with_format;
tmp_prefs.compose_subject_format = g_strdup(src->prefs->compose_subject_format);
tmp_prefs.compose_body_format = g_strdup(src->prefs->compose_body_format);
+ tmp_prefs.compose_override_from_format = g_strdup(src->prefs->compose_override_from_format);
tmp_prefs.reply_with_format = src->prefs->reply_with_format;
tmp_prefs.reply_quotemark = g_strdup(src->prefs->reply_quotemark);
tmp_prefs.reply_body_format = g_strdup(src->prefs->reply_body_format);
+ tmp_prefs.reply_override_from_format = g_strdup(src->prefs->reply_override_from_format);
tmp_prefs.forward_with_format = src->prefs->forward_with_format;
tmp_prefs.forward_quotemark = g_strdup(src->prefs->forward_quotemark);
tmp_prefs.forward_body_format = g_strdup(src->prefs->forward_body_format);
+ tmp_prefs.forward_override_from_format = g_strdup(src->prefs->forward_override_from_format);
*dest->prefs = tmp_prefs;
folder_item_prefs_save_config(dest);
diff --git a/src/prefs_template.c b/src/prefs_template.c
@@ -615,17 +615,19 @@ static GSList *prefs_template_get_list(void)
return tmpl_list;
}
-gboolean prefs_template_string_is_valid(gchar *string, gint *line, gboolean escaped_string)
+gboolean prefs_template_string_is_valid(gchar *string, gint *line, gboolean escaped_string, gboolean email)
{
+ gboolean result = TRUE;
if (string && *string != '\0') {
gchar *parsed_buf;
MsgInfo dummyinfo;
+ PrefsAccount *account = account_get_default();
memset(&dummyinfo, 0, sizeof(MsgInfo));
#ifdef USE_ASPELL
- quote_fmt_init(&dummyinfo, NULL, NULL, TRUE, NULL, escaped_string, NULL);
+ quote_fmt_init(&dummyinfo, NULL, NULL, TRUE, account, escaped_string, NULL);
#else
- quote_fmt_init(&dummyinfo, NULL, NULL, TRUE, NULL, escaped_string);
+ quote_fmt_init(&dummyinfo, NULL, NULL, TRUE, account, escaped_string);
#endif
quote_fmt_scan_string(string);
quote_fmt_parse();
@@ -635,9 +637,19 @@ gboolean prefs_template_string_is_valid(gchar *string, gint *line, gboolean esca
*line = quote_fmt_get_line();
return FALSE;
}
+ if (email) {
+ const gchar *start = strrchr(parsed_buf, '<');
+ const gchar *end = strrchr(parsed_buf, '>');
+ const gchar *at = strrchr(parsed_buf, '@');
+ const gchar *space = strrchr(parsed_buf, ' ');
+ if (!at)
+ result = FALSE;
+ if (at && space && (!start || !end || end < start || start < space))
+ result = FALSE;
+ }
quote_fmt_reset_vartable();
}
- return TRUE;
+ return result;
}
static gboolean prefs_template_list_view_set_row(gint row)
@@ -667,7 +679,7 @@ static gboolean prefs_template_list_view_set_row(gint row)
g_free(value);
value = NULL;
}
- if (!prefs_template_string_is_valid(value, &line, FALSE)) {
+ if (!prefs_template_string_is_valid(value, &line, FALSE, FALSE)) {
alertpanel_error(_("Template body format error at line %d."), line);
g_free(value);
return FALSE;
@@ -712,31 +724,31 @@ static gboolean prefs_template_list_view_set_row(gint row)
subject = NULL;
}
- if (!prefs_template_string_is_valid(to, NULL, FALSE)) {
+ if (!prefs_template_string_is_valid(from, NULL, FALSE, TRUE)) {
alertpanel_error(_("Template From format error."));
g_free(from);
g_free(value);
return FALSE;
}
- if (!prefs_template_string_is_valid(to, NULL, FALSE)) {
+ if (!prefs_template_string_is_valid(to, NULL, FALSE, TRUE)) {
alertpanel_error(_("Template To format error."));
g_free(to);
g_free(value);
return FALSE;
}
- if (!prefs_template_string_is_valid(cc, NULL, FALSE)) {
+ if (!prefs_template_string_is_valid(cc, NULL, FALSE, TRUE)) {
alertpanel_error(_("Template Cc format error."));
g_free(cc);
g_free(value);
return FALSE;
}
- if (!prefs_template_string_is_valid(bcc, NULL, FALSE)) {
+ if (!prefs_template_string_is_valid(bcc, NULL, FALSE, TRUE)) {
alertpanel_error(_("Template Bcc format error."));
g_free(bcc);
g_free(value);
return FALSE;
}
- if (!prefs_template_string_is_valid(subject, NULL, FALSE)) {
+ if (!prefs_template_string_is_valid(subject, NULL, FALSE, FALSE)) {
alertpanel_error(_("Template subject format error."));
g_free(subject);
g_free(value);
diff --git a/src/prefs_template.h b/src/prefs_template.h
@@ -22,6 +22,7 @@
#define __PREFS_TEMPLATES_H__
void prefs_template_open(void);
-gboolean prefs_template_string_is_valid(gchar *string, gint *line, gboolean escaped_string);
+gboolean prefs_template_string_is_valid(gchar *string, gint *line,
+ gboolean escaped_string, gboolean email);
#endif /* __PREFS_TEMPLATES_H__ */
diff --git a/src/quote_fmt.c b/src/quote_fmt.c
@@ -499,13 +499,13 @@ void quotefmt_check_new_msg_formats(gboolean use_format,
if (use_format) {
gint line;
- if (override_from_fmt && !prefs_template_string_is_valid(override_from_fmt, NULL, FALSE))
+ if (override_from_fmt && !prefs_template_string_is_valid(override_from_fmt, NULL, FALSE, TRUE))
alertpanel_error(_("New message From format error."));
- if (!prefs_template_string_is_valid(subject_fmt, NULL, FALSE))
+ if (!prefs_template_string_is_valid(subject_fmt, NULL, FALSE, FALSE))
alertpanel_error(_("New message subject format error."));
- if (!prefs_template_string_is_valid(body_fmt, &line, TRUE)) {
+ if (!prefs_template_string_is_valid(body_fmt, &line, TRUE, FALSE)) {
alertpanel_error(_("New message body format error at line %d."), line);
}
}
@@ -519,13 +519,13 @@ void quotefmt_check_reply_formats(gboolean use_format,
if (use_format) {
gint line;
- if (!prefs_template_string_is_valid(quotation_mark, NULL, FALSE))
+ if (!prefs_template_string_is_valid(quotation_mark, NULL, FALSE, FALSE))
alertpanel_error(_("Message reply quotation mark format error."));
- if (override_from_fmt && !prefs_template_string_is_valid(override_from_fmt, NULL, FALSE))
+ if (override_from_fmt && !prefs_template_string_is_valid(override_from_fmt, NULL, FALSE, TRUE))
alertpanel_error(_("Message reply From format error."));
- if (!prefs_template_string_is_valid(body_fmt, &line, TRUE)) {
+ if (!prefs_template_string_is_valid(body_fmt, &line, TRUE, FALSE)) {
alertpanel_error(_("Message reply format error at line %d."), line);
}
}
@@ -539,13 +539,13 @@ void quotefmt_check_forward_formats(gboolean use_format,
if (use_format) {
gint line;
- if (!prefs_template_string_is_valid(quotation_mark, NULL, FALSE))
+ if (!prefs_template_string_is_valid(quotation_mark, NULL, FALSE, FALSE))
alertpanel_error(_("Message forward quotation mark format error."));
- if (override_from_fmt && !prefs_template_string_is_valid(override_from_fmt, NULL, FALSE))
+ if (override_from_fmt && !prefs_template_string_is_valid(override_from_fmt, NULL, FALSE, TRUE))
alertpanel_error(_("Message forward From format error."));
- if (!prefs_template_string_is_valid(body_fmt, &line, TRUE)) {
+ if (!prefs_template_string_is_valid(body_fmt, &line, TRUE, FALSE)) {
alertpanel_error(_("Message forward format error at line %d."), line);
}
}