X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=hdrline.c;h=b47e2bd9398bfe5181a4abe98beb7fb02be6c421;hp=39ab459b159f1692b56f6e5e819f276f8a519075;hb=cac1491258e026b8c8459b2ad408a6bf2e8a03bc;hpb=08b24cfbdc0c35af65891f5b2478dc0ee33feb7e diff --git a/hdrline.c b/hdrline.c index 39ab459..b47e2bd 100644 --- a/hdrline.c +++ b/hdrline.c @@ -18,9 +18,11 @@ #include "charset.h" #include "mutt_crypt.h" #include "mutt_idna.h" -#include "mime.h" -#include "lib/str.h" +#include + +#include + #include "lib/rx.h" #include @@ -28,14 +30,14 @@ #include #include -int mutt_is_mail_list (ADDRESS * addr) +int mutt_is_mail_list (address_t * addr) { if (!rx_list_match (UnMailLists, addr->mailbox)) return rx_list_match (MailLists, addr->mailbox); return 0; } -int mutt_is_subscribed_list (ADDRESS * addr) +int mutt_is_subscribed_list (address_t * addr) { if (!rx_list_match (UnMailLists, addr->mailbox) && !rx_list_match (UnSubscribedLists, addr->mailbox)) @@ -48,7 +50,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_t * adr, const char *pfx, char *buf, int buflen) { for (; adr; adr = adr->next) { if (mutt_is_subscribed_list (adr)) { @@ -64,7 +66,7 @@ check_for_mailing_list (ADDRESS * adr, char *pfx, char *buf, int buflen) * If one is found, print the address of the list into buf, then return 1. * Otherwise, simply return 0. */ -static int check_for_mailing_list_addr (ADDRESS * adr, char *buf, int buflen) +static int check_for_mailing_list_addr (address_t * adr, char *buf, int buflen) { for (; adr; adr = adr->next) { if (mutt_is_subscribed_list (adr)) { @@ -77,7 +79,7 @@ static int check_for_mailing_list_addr (ADDRESS * adr, char *buf, int buflen) } -static int first_mailing_list (char *buf, size_t buflen, ADDRESS * a) +static int first_mailing_list (char *buf, size_t buflen, address_t * a) { for (; a; a = a->next) { if (mutt_is_subscribed_list (a)) { @@ -106,7 +108,7 @@ static void make_from (ENVELOPE * hdr, char *buf, size_t len, int do_lists) else if (me && hdr->cc) snprintf (buf, len, "Cc %s", mutt_get_name (hdr->cc)); else if (hdr->from) - strfcpy (buf, mutt_get_name (hdr->from), len); + m_strcpy(buf, len, mutt_get_name(hdr->from)); else *buf = 0; } @@ -130,12 +132,12 @@ static void make_from_addr (ENVELOPE * hdr, char *buf, size_t len, else if (me && hdr->cc) snprintf (buf, len, "%s", hdr->cc->mailbox); else if (hdr->from) - strfcpy (buf, hdr->from->mailbox, len); + m_strcpy(buf, len, hdr->from->mailbox); else *buf = 0; } -static int user_in_addr (ADDRESS * a) +static int user_in_addr (address_t * a) { for (; a; a = a->next) if (mutt_addr_is_user (a)) @@ -207,6 +209,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 */ @@ -265,7 +268,7 @@ static const char *hdr_format_str (char *dest, !first_mailing_list (dest, destlen, hdr->env->cc)) dest[0] = 0; if (dest[0]) { - strfcpy (buf2, dest, sizeof (buf2)); + m_strcpy(buf2, sizeof(buf2), dest); mutt_format_s (dest, destlen, prefix, buf2); break; } @@ -274,13 +277,13 @@ static const char *hdr_format_str (char *dest, case 'b': if (ctx) { if ((p = strrchr (ctx->path, '/'))) - strfcpy (dest, p + 1, destlen); + m_strcpy(dest, destlen, p + 1); else - strfcpy (dest, ctx->path, destlen); + m_strcpy(dest, destlen, ctx->path); } else - strfcpy (dest, "(null)", destlen); - strfcpy (buf2, dest, sizeof (buf2)); + m_strcpy(dest, destlen, "(null)"); + m_strcpy(buf2, sizeof(buf2), dest); mutt_format_s (dest, destlen, prefix, buf2); break; @@ -486,7 +489,7 @@ static const char *hdr_format_str (char *dest, snprintf (dest, destlen, fmt, ctx->msgcount); } else - strfcpy (dest, "(null)", destlen); + m_strcpy(dest, destlen, "(null)"); break; case 'n': @@ -589,12 +592,12 @@ static const char *hdr_format_str (char *dest, snprintf (dest, destlen, fmt, (Tochars && ((i = mutt_user_is_recipient (hdr))) < - str_len (Tochars)) ? Tochars[i] : ' '); + m_strlen(Tochars)) ? Tochars[i] : ' '); break; case 'u': if (hdr->env->from && hdr->env->from->mailbox) { - strfcpy (buf2, mutt_addr_for_display (hdr->env->from), sizeof (buf2)); + m_strcpy(buf2, sizeof(buf2), mutt_addr_for_display(hdr->env->from)); if ((p = strpbrk (buf2, "%@"))) *p = 0; } @@ -630,6 +633,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 = ' '; @@ -644,7 +666,7 @@ static const char *hdr_format_str (char *dest, ch = 'K'; snprintf (buf2, sizeof (buf2), - "%c%c%c%c", (THREAD_NEW ? 'n' : (THREAD_OLD ? 'o' : + "%c%c%c", (THREAD_NEW ? 'n' : (THREAD_OLD ? 'o' : ((hdr->read && (ctx && ctx->msgnotreadyet != @@ -661,10 +683,8 @@ static const char *hdr_format_str (char *dest, ((i = mutt_user_is_recipient (hdr)) < - str_len (Tochars)) ? - Tochars[i] : ' ')), - (hdr->content && hdr->content->type == TYPEMULTIPART) ? - 'A' : ' '); + m_strlen(Tochars)) ? + Tochars[i] : ' '))); mutt_format_s (dest, destlen, prefix, buf2); break; @@ -687,7 +707,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 && str_casecmp (hdr->env->x_label, + if (htmp && m_strcasecmp(hdr->env->x_label, htmp->env->x_label) == 0) i = 0; }