int last_beep_new;
int force_refresh;
int snippet_is_new;
- char snippet[256];
+ char sender_snippet[128];
+ char subject_snippet[128];
};
static clist mboxes;
}
static void
-prepare_snippet(struct mbox *b, char *sender, char *subject)
+prepare_snippets(struct mbox *b, char *sender, char *subject)
{
+ char *pos, *term;
+
while (*sender == ' ' || *sender == '\t')
sender++;
while (*subject == ' ' || *subject == '\t')
subject++;
- char *pos = b->snippet;
- char *term = b->snippet + sizeof(b->snippet) - 1;
+ pos = b->sender_snippet;
+ term = pos + sizeof(b->sender_snippet) - 1;
if (sender[0] && (b->o.sender_mbox || b->o.sender_personal))
- {
- add_addr_snippet(&pos, term, sender, b->o.sender_mbox, b->o.sender_personal);
- add_snippet(&pos, term, ": ");
- }
+ add_addr_snippet(&pos, term, sender, b->o.sender_mbox, b->o.sender_personal);
+ else
+ *pos = 0;
+
+ pos = b->subject_snippet;
+ term = pos + sizeof(b->subject_snippet) - 1;
if (subject[0])
add_subject_snippet(&pos, term, subject);
else
add_snippet(&pos, term, "No subject");
}
+static void
+build_snippet(char *buf, char *term, struct mbox *b)
+{
+ if (b->sender_snippet[0])
+ {
+ add_snippet(&buf, term, b->sender_snippet);
+ add_snippet(&buf, term, ": ");
+ }
+ add_snippet(&buf, term, b->subject_snippet);
+}
+
static int mb_fd, mb_pos;
static unsigned char mb_buf[4096], *mb_cc, *mb_end;
if (new || (flagged && !b->snippet_is_new))
{
b->snippet_is_new = new;
- prepare_snippet(b, sender, subject);
+ prepare_snippets(b, sender, subject);
}
int ct = 1;
attrset(attrs[cc][0][M_FLAG]); /* We avoid the highlight intentionally */
snip = 1;
}
- if (snip && b->o.snippets && b->snippet[0])
+ if (snip && b->o.snippets)
{
int xx, yy;
getyx(stdscr, yy, xx);
int remains = COLS-1-xx;
- if (remains > 2)
+
+ char snip[256];
+ build_snippet(snip, snip + sizeof(snip) - 1, b);
+
+ if (snip[0] && remains > 2)
{
#ifdef CONFIG_WIDE_CURSES
- size_t len = strlen(b->snippet)+1;
- wchar_t snip[len];
- mbstowcs(snip, b->snippet, len);
- addnwstr(snip, remains);
+ size_t len = strlen(snip)+1;
+ wchar_t snip2[len];
+ mbstowcs(snip2, snip, len);
+ addnwstr(snip2, remains);
#else
- printw("%-.*s", remains, b->snippet);
+ printw("%-.*s", remains, snip);
#endif
}
}