/*
+ * Copyright notice from original mutt:
* Copyright (C) 1996-2000,2002 Michael R. Elkins <me@mutt.org>
- *
- * 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
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * 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., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ *
+ * This file is part of mutt-ng, see http://www.muttng.org/.
+ * It's licensed under the GNU General Public License,
+ * please see the file GPL in the top level source directory.
*/
#if HAVE_CONFIG_H
#include "mutt.h"
#include "mutt_curses.h"
#include "sort.h"
+#include "thread.h"
#include "charset.h"
#include "mutt_crypt.h"
#include "mutt_idna.h"
+#include "mime.h"
+
+#include "lib/str.h"
+#include "lib/rx.h"
#include <ctype.h>
#include <stdlib.h>
int mutt_is_mail_list (ADDRESS * addr)
{
- if (!mutt_match_rx_list (addr->mailbox, UnMailLists))
- return mutt_match_rx_list (addr->mailbox, MailLists);
+ if (!rx_list_match (UnMailLists, addr->mailbox))
+ return rx_list_match (MailLists, addr->mailbox);
return 0;
}
int mutt_is_subscribed_list (ADDRESS * addr)
{
- if (!mutt_match_rx_list (addr->mailbox, UnMailLists)
- && !mutt_match_rx_list (addr->mailbox, UnSubscribedLists))
- return mutt_match_rx_list (addr->mailbox, SubscribedLists);
+ if (!rx_list_match (UnMailLists, addr->mailbox)
+ && !rx_list_match (UnSubscribedLists, addr->mailbox))
+ return rx_list_match (SubscribedLists, addr->mailbox);
return 0;
}
* %u = user (login) name of author
* %v = first name of author, unless from self
* %W = where user is (organization)
+ * %X = number of MIME attachments
* %y = `x-label:' field (if present)
* %Y = `x-label:' field (if present, tree unfolded, and != parent's x-label)
* %Z = status flags */
snprintf (dest, destlen, fmt,
(Tochars
&& ((i = mutt_user_is_recipient (hdr))) <
- mutt_strlen (Tochars)) ? Tochars[i] : ' ');
+ str_len (Tochars)) ? Tochars[i] : ' ');
break;
case 'u':
optional = 0;
break;
+ case 'X':
+ {
+ int count = 0;
+
+ if (option (OPTCOUNTATTACH)) {
+ if (!hdr->content->parts)
+ mutt_parse_mime_message(ctx, hdr);
+ count = mutt_count_body_parts(hdr, 0);
+ }
+
+ /* The recursion allows messages without depth to return 0. */
+ if (optional)
+ optional = count != 0;
+
+ snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
+ snprintf (dest, destlen, fmt, count);
+ }
+ break;
+
case 'Z':
ch = ' ';
((i =
mutt_user_is_recipient
(hdr)) <
- mutt_strlen (Tochars)) ?
+ str_len (Tochars)) ?
Tochars[i] : ' ')));
mutt_format_s (dest, destlen, prefix, buf2);
break;
&& (hdr->thread->parent && hdr->thread->parent->message
&& hdr->thread->parent->message->env->x_label))
htmp = hdr->thread->parent->message;
- if (htmp && mutt_strcasecmp (hdr->env->x_label,
+ if (htmp && str_casecmp (hdr->env->x_label,
htmp->env->x_label) == 0)
i = 0;
}