+ mutt_format_s_tree (dest, destlen, prefix, hdr->tree);
+ }
+ else
+ mutt_format_s (dest, destlen, prefix, NONULL (hdr->env->subject));
+ break;
+
+ case 'S':
+ if (hdr->deleted)
+ ch = 'D';
+ else if (hdr->attach_del)
+ ch = 'd';
+ else if (hdr->tagged)
+ ch = '*';
+ else if (hdr->flagged)
+ ch = '!';
+ else if (hdr->replied)
+ ch = 'r';
+ else if (hdr->read && (ctx && ctx->msgnotreadyet != hdr->msgno))
+ ch = '-';
+ else if (hdr->old)
+ ch = 'O';
+ else
+ ch = 'N';
+
+ /* FOO - this is probably unsafe, but we are not likely to have such
+ a short string passed into this routine */
+ *dest = ch;
+ *(dest + 1) = 0;
+ break;
+
+ case 't':
+ buf2[0] = 0;
+ if (!check_for_mailing_list (hdr->env->to, "To ", buf2, sizeof (buf2)) &&
+ !check_for_mailing_list (hdr->env->cc, "Cc ", buf2, sizeof (buf2))) {
+ if (hdr->env->to)
+ snprintf (buf2, sizeof (buf2), "To %s", mutt_get_name (hdr->env->to));
+ else if (hdr->env->cc)
+ snprintf (buf2, sizeof (buf2), "Cc %s", mutt_get_name (hdr->env->cc));
+ }
+ mutt_format_s (dest, destlen, prefix, buf2);
+ break;
+
+ case 'T':
+ snprintf (fmt, sizeof (fmt), "%%%sc", prefix);
+ snprintf (dest, destlen, fmt,
+ (Tochars
+ && ((i = mutt_user_is_recipient (hdr))) <
+ mutt_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));
+ if ((p = strpbrk (buf2, "%@")))
+ *p = 0;
+ }
+ else
+ buf2[0] = 0;
+ mutt_format_s (dest, destlen, prefix, buf2);
+ break;
+
+ case 'v':
+ if (mutt_addr_is_user (hdr->env->from)) {
+ if (hdr->env->to)
+ mutt_format_s (buf2, sizeof (buf2), prefix,
+ mutt_get_name (hdr->env->to));
+ else if (hdr->env->cc)
+ mutt_format_s (buf2, sizeof (buf2), prefix,
+ mutt_get_name (hdr->env->cc));
+ else
+ *buf2 = 0;
+ }
+ else
+ mutt_format_s (buf2, sizeof (buf2), prefix,
+ mutt_get_name (hdr->env->from));
+ if ((p = strpbrk (buf2, " %@")))
+ *p = 0;
+ mutt_format_s (dest, destlen, prefix, buf2);
+ break;
+
+ case 'W':
+ if (!optional)
+ mutt_format_s (dest, destlen, prefix,
+ hdr->env->organization ? hdr->env->organization : "");
+ else if (!hdr->env->organization)
+ optional = 0;
+ break;
+
+ case 'Z':
+
+ ch = ' ';
+
+ if (WithCrypto && hdr->security & GOODSIGN)
+ ch = 'S';
+ else if (WithCrypto && hdr->security & ENCRYPT)
+ ch = 'P';
+ else if (WithCrypto && hdr->security & SIGN)
+ ch = 's';
+ else if ((WithCrypto & APPLICATION_PGP) && hdr->security & PGPKEY)
+ ch = 'K';
+
+ snprintf (buf2, sizeof (buf2),
+ "%c%c%c", (THREAD_NEW ? 'n' : (THREAD_OLD ? 'o' :
+ ((hdr->read
+ && (ctx
+ && ctx->msgnotreadyet !=
+ hdr->msgno))
+ ? (hdr->
+ replied ? 'r' : ' ') : (hdr->
+ old ?
+ 'O' :
+ 'N')))),
+ hdr->deleted ? 'D' : (hdr->attach_del ? 'd' : ch),
+ hdr->tagged ? '*' : (hdr->
+ flagged ? '!' : (Tochars
+ &&
+ ((i =
+ mutt_user_is_recipient
+ (hdr)) <
+ mutt_strlen (Tochars)) ?
+ Tochars[i] : ' ')));
+ mutt_format_s (dest, destlen, prefix, buf2);
+ break;
+
+ case 'y':
+ if (optional)
+ optional = hdr->env->x_label ? 1 : 0;
+
+ mutt_format_s (dest, destlen, prefix, NONULL (hdr->env->x_label));
+ break;
+
+ case 'Y':
+ if (hdr->env->x_label) {
+ i = 1; /* reduce reuse recycle */
+ htmp = NULL;
+ if (flags & M_FORMAT_TREE
+ && (hdr->thread->prev && hdr->thread->prev->message
+ && hdr->thread->prev->message->env->x_label))
+ htmp = hdr->thread->prev->message;
+ else if (flags & M_FORMAT_TREE
+ && (hdr->thread->parent && hdr->thread->parent->message
+ && hdr->thread->parent->message->env->x_label))
+ htmp = hdr->thread->parent->message;
+ if (htmp && safe_strcasecmp (hdr->env->x_label,
+ htmp->env->x_label) == 0)
+ i = 0;
+ }
+ else
+ i = 0;