X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=hdrline.c;h=716a5dfb86212ba943fae0f40d174300c3ebdf44;hp=63046087a313523b8d0b9f303d4d9445b992da7e;hb=4eaac5c4a87b84ea9ec0668b4e088ac27e2d1106;hpb=df70e07e24add1869bcc9b7af2277d9d0c09a281 diff --git a/hdrline.c b/hdrline.c index 6304608..716a5df 100644 --- a/hdrline.c +++ b/hdrline.c @@ -1,19 +1,10 @@ /* + * Copyright notice from original mutt: * Copyright (C) 1996-2000,2002 Michael R. Elkins - * - * 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 @@ -23,9 +14,14 @@ #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 #include @@ -34,16 +30,16 @@ 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; } @@ -52,7 +48,7 @@ int mutt_is_subscribed_list (ADDRESS * addr) * return 1. Otherwise, simply return 0. */ static int -check_for_mailing_list (ADDRESS * adr, char *pfx, char *buf, int buflen) +check_for_mailing_list (ADDRESS * adr, const char *pfx, char *buf, int buflen) { for (; adr; adr = adr->next) { if (mutt_is_subscribed_list (adr)) { @@ -211,6 +207,7 @@ int mutt_user_is_recipient (HEADER * h) * %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 */ @@ -593,7 +590,7 @@ static const char *hdr_format_str (char *dest, snprintf (dest, destlen, fmt, (Tochars && ((i = mutt_user_is_recipient (hdr))) < - mutt_strlen (Tochars)) ? Tochars[i] : ' '); + str_len (Tochars)) ? Tochars[i] : ' '); break; case 'u': @@ -634,6 +631,25 @@ static const char *hdr_format_str (char *dest, 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 = ' '; @@ -665,7 +681,7 @@ static const char *hdr_format_str (char *dest, ((i = mutt_user_is_recipient (hdr)) < - mutt_strlen (Tochars)) ? + str_len (Tochars)) ? Tochars[i] : ' '))); mutt_format_s (dest, destlen, prefix, buf2); break; @@ -689,7 +705,7 @@ static const char *hdr_format_str (char *dest, && (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; }