/*
* Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail Team
- * Copyright (C) 2006-2012 Ricardo Mones
+ * Copyright (C) 2006-2015 Ricardo Mones and the Claws Mail Team
*
* 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
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifdef HAVE_CONFIG_H
/** Identifier for the hook. */
static guint hook_id;
-#ifdef G_OS_UNIX
-/**
- * Builds a single regular expresion from an array of srings.
- *
- * @param strings The lines containing the different sub-regexp.
- *
- * @return The newly allocated regexp.
- */
-static gchar *build_complete_regexp(gchar **strings)
-{
- int i = 0;
- gchar *expr = NULL;
- while (strings && strings[i] && *strings[i]) {
- int old_len = expr ? strlen(expr):0;
- int new_len = 0;
- gchar *tmpstr = NULL;
-
- if (g_utf8_validate(strings[i], -1, NULL))
- tmpstr = g_strdup(strings[i]);
- else
- tmpstr = conv_codeset_strdup(strings[i],
- conv_get_locale_charset_str_no_utf8(),
- CS_INTERNAL);
-
- if (strstr(tmpstr, "\n"))
- *(strstr(tmpstr, "\n")) = '\0';
-
- new_len = strlen(tmpstr);
-
- expr = g_realloc(expr,
- expr ? (old_len + strlen("|()") + new_len + 1)
- : (strlen("()") + new_len + 1));
-
- if (old_len) {
- strcpy(expr + old_len, "|(");
- strcpy(expr + old_len + 2, tmpstr);
- strcpy(expr + old_len + 2 + new_len, ")");
- } else {
- strcpy(expr+old_len, "(");
- strcpy(expr+old_len + 1, tmpstr);
- strcpy(expr+old_len + 1 + new_len, ")");
- }
- g_free(tmpstr);
- i++;
- }
- return expr;
-}
-#endif
-/**
- * Creates the matcher.
- *
- * @return A newly allocated regexp matcher or null if no memory is available.
- */
-MatcherList * new_matcherlist(void)
-{
- MatcherProp *m = NULL;
- GSList *matchers = NULL;
- gchar **strings = g_strsplit(attwarnerprefs.match_strings, "\n", -1);
-
-#ifdef G_OS_UNIX
- gchar *expr = NULL;
- expr = build_complete_regexp(strings);
- debug_print("building matcherprop for expr '%s'\n", expr?expr:"NULL");
-
- m = matcherprop_new(MATCHCRITERIA_SUBJECT, NULL, MATCHTYPE_REGEXP,
- expr, 0);
- if (m == NULL) {
- /* print error message */
- debug_print("failed to allocate memory for matcherprop\n");
- } else {
- matchers = g_slist_append(matchers, m);
- }
-
- g_free(expr);
-#else
- int i = 0;
- while (strings && strings[i] && *strings[i]) {
- m = matcherprop_new(MATCHCRITERIA_SUBJECT, NULL, MATCHTYPE_MATCHCASE,
- strings[i], 0);
- if (m == NULL) {
- /* print error message */
- debug_print("failed to allocate memory for matcherprop\n");
- } else {
- matchers = g_slist_append(matchers, m);
- }
- i++;
- }
-#endif
- g_strfreev(strings);
-
- return matcherlist_new(matchers, FALSE);
-}
-
static AttachWarnerMention *aw_matcherlist_string_match(MatcherList *matchers, gchar *str, gchar *sig_separator)
{
MsgInfo info;
AttachWarnerMention *mention = NULL;
MatcherList *matchers = NULL;
- matchers = new_matcherlist();
+ matchers = matcherlist_new_from_lines(attwarnerprefs.match_strings, FALSE, attwarnerprefs.case_sensitive);
if (matchers == NULL) {
g_warning("couldn't allocate matcher");
AlertValue aval;
gchar *button_label;
gchar *message;
+ gchar *bold_text;
debug_print("user has to decide\n");
if (compose->sending)
- button_label = _("+_Send");
+ button_label = g_strconcat("+", _("_Send"), NULL);
else
- button_label = _("+_Queue");
+ button_label = g_strconcat("+", _("_Queue"), NULL);
+ bold_text = g_strdup_printf("<span weight=\"bold\">%.20s</span>...",
+ mention->context);
message = g_strdup_printf(
- _("An attachment is mentioned in the mail you're sending, but no file was attached. Mention appears on line %d, which begins with text: <span weight=\"bold\">%.20s</span>...\n\n%s it anyway?"),
+ _("An attachment is mentioned in the mail you're sending, "
+ "but no file was attached. Mention appears on line %d, "
+ "which begins with text: %s\n\n%s"),
mention->line,
- mention->context,
- compose->sending?_("Send"):_("Queue"));
+ bold_text,
+ compose->sending?_("Send it anyway?"):_("Queue it anyway?"));
aval = alertpanel(_("Attachment warning"), message,
GTK_STOCK_CANCEL, button_label, NULL);
g_free(message);
+ g_free(bold_text);
if (aval != G_ALERTALTERNATE)
return TRUE;
}