* please see the file GPL in the top level source directory.
*/
-#include <lib-lib/lib-lib.h>
+#include <lib-ui/lib-ui.h>
#include <lib-mime/mime.h>
-#include <lib-ui/curses.h>
#include <lib-mx/mx.h>
-#include <lib-crypt/crypt.h>
#include "mutt.h"
#include "alias.h"
+#include "crypt.h"
#include "sort.h"
#include "thread.h"
#include "charset.h"
HEADER *hdr, *htmp;
CONTEXT *ctx;
char fmt[STRING], buf2[STRING], ch, *p;
- int do_locales, i;
+ int do_locales, i, c;
int optional = (flags & M_FORMAT_OPTIONAL);
int threads = ((Sort & SORT_MASK) == SORT_THREADS);
int is_index = (flags & M_FORMAT_INDEX);
optional = 0;
break;
-#ifdef USE_NNTP
- case 'g':
- mutt_format_s (dest, destlen, prefix,
- hdr->env->newsgroups ? hdr->env->newsgroups : "");
- break;
-#endif
-
case 'H':
/* (Hormel) spam score */
if (optional)
case 'O':
if (!optional) {
make_from_addr (hdr->env, buf2, sizeof (buf2), 1);
- if (!option (OPTSAVEADDRESS) && (p = strpbrk (buf2, "%@")))
+ if ((p = strpbrk (buf2, "%@")))
*p = 0;
mutt_format_s (dest, destlen, prefix, buf2);
}
break;
case 'T':
- snprintf (fmt, sizeof (fmt), "%%%sc", prefix);
- snprintf (dest, destlen, fmt,
- ((i = mutt_user_is_recipient(hdr)) < m_strlen(Tochars)) ? Tochars[i] : ' ');
+ i = mutt_user_is_recipient(hdr);
+ assert (i >= 0); /* help compiler to see c is initialized */
+
+ if (Charset_is_utf8) {
+ const char *s = Tochars;
+
+ snprintf (fmt, sizeof (fmt), "%%%slc", prefix);
+ while (i-- >= 0) {
+ c = m_ustrgetc(s, &s);
+ if (c <= 0) {
+ c = ' ';
+ break;
+ }
+ }
+
+ snprintf(dest, destlen, fmt, c);
+ } else {
+ snprintf(fmt, sizeof (fmt), "%%%sc", prefix);
+ snprintf(dest, destlen, fmt, i < m_strlen(Tochars) ? Tochars[i] : ' ');
+ }
break;
case 'u':
else if (hdr->security & PGPKEY)
ch = 'K';
- snprintf(buf2, sizeof (buf2), "%c%c%c",
+ if (hdr->tagged) {
+ c = '*';
+ } else
+ if (hdr->flagged) {
+ c = '!';
+ } else {
+ i = mutt_user_is_recipient(hdr);
+ assert (i >= 0); /* help compiler to see c is initialized */
+
+ if (Charset_is_utf8) {
+ const char *s = Tochars;
+
+ snprintf (fmt, sizeof (fmt), "%%%slc", prefix);
+ while (i-- >= 0) {
+ c = m_ustrgetc(s, &s);
+ if (c <= 0) {
+ c = ' ';
+ break;
+ }
+ }
+ } else {
+ c = i < m_strlen(Tochars) ? Tochars[i] : ' ';
+ }
+ }
+ snprintf(buf2, sizeof (buf2), Charset_is_utf8 ? "%c%c%lc" : "%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 ? '!'
- : ((i = mutt_user_is_recipient(hdr)) < m_strlen(Tochars) ? Tochars[i] : ' ')));
+ hdr->deleted ? 'D' : (hdr->attach_del ? 'd' : ch), c);
mutt_format_s (dest, destlen, prefix, buf2);
break;
hfi.hdr = hdr;
hfi.ctx = ctx;
- m_strformat(dest, destlen, COLS - SW, s, hdr_format_str, &hfi, flags);
+ m_strformat(dest, destlen, getmaxx(main_w), s, hdr_format_str, &hfi, flags);
}