-void summarize_message(int num, long msgnum, int is_new) {
- char buf[SIZ];
-
- memset(&WC->summ[num], 0, sizeof(struct message_summary));
- safestrncpy(WC->summ[num].subj, "(no subject)", sizeof WC->summ[num].subj);
- WC->summ[num].is_new = is_new;
- WC->summ[num].msgnum = msgnum;
-
- /* ask for headers only with no MIME */
- sprintf(buf, "MSG0 %ld|3", msgnum);
- serv_puts(buf);
- serv_getln(buf, sizeof buf);
- if (buf[0] != '1') return;
-
- while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) {
- if (!strncasecmp(buf, "from=", 5)) {
- safestrncpy(WC->summ[num].from, &buf[5], sizeof WC->summ[num].from);
- }
- if (!strncasecmp(buf, "subj=", 5)) {
- if (strlen(&buf[5]) > 0) {
- safestrncpy(WC->summ[num].subj, &buf[5],
- sizeof WC->summ[num].subj);
-#ifdef HAVE_ICONV
- /* Handle subjects with RFC2047 encoding */
- utf8ify_rfc822_string(WC->summ[num].subj);
-#endif
- if (strlen(WC->summ[num].subj) > 75) {
- strcpy(&WC->summ[num].subj[72], "...");
- }
- }
- }
-
- if (!strncasecmp(buf, "node=", 5)) {
- if ( ((WC->room_flags & QR_NETWORK)
- || ((strcasecmp(&buf[5], serv_info.serv_nodename)
- && (strcasecmp(&buf[5], serv_info.serv_fqdn)))))
- ) {
- strcat(WC->summ[num].from, " @ ");
- strcat(WC->summ[num].from, &buf[5]);
- }
- }
-
- if (!strncasecmp(buf, "rcpt=", 5)) {
- safestrncpy(WC->summ[num].to, &buf[5], sizeof WC->summ[num].to);
- }
-
- if (!strncasecmp(buf, "time=", 5)) {
- WC->summ[num].date = atol(&buf[5]);
- }
- }
-
-#ifdef HAVE_ICONV
- /* Handle senders with RFC2047 encoding */
- utf8ify_rfc822_string(WC->summ[num].from);
-#endif
- if (strlen(WC->summ[num].from) > 25) {
- strcpy(&WC->summ[num].from[22], "...");
- }
-}