return 1;
}
+static void
+mb_skip(int len)
+{
+ while (len)
+ {
+ int avail = mb_end - mb_cc;
+ if (!avail)
+ {
+ if (mb_ll_get() < 0)
+ return;
+ len--;
+ }
+ else
+ {
+ int next = (avail < len) ? avail : len;
+ len -= next;
+ mb_cc += next;
+ }
+ }
+}
+
static void
scan_mbox(struct mbox *b, struct stat *st)
{
while ((c = mb_get()) >= 0 && c != '\n')
;
+ int content_length = -1;
int new = 1;
int flagged = 0;
sender[0] = 0;
strcpy(sender, buf+5);
else if (!strncasecmp(buf, "Subject:", 8))
strcpy(subject, buf+8);
+ else if (!strncasecmp(buf, "Content-Length:", 15))
+ content_length = atoi(buf + 15);
}
b->total++;
if (flagged)
b->flagged++;
if (debug_mode > 1)
- debug("new=%d flagged=%d sender=<%s> subject=<%s>\n", new, flagged, sender, subject);
+ debug("new=%d flagged=%d len=%d sender=<%s> subject=<%s>\n", new, flagged, content_length, sender, subject);
if (new || (flagged && !b->snippet_is_new))
{
b->snippet_is_new = new;
prepare_snippets(b, sender, subject);
}
+ if (content_length >= 0)
+ mb_skip(content_length);
+
int ct = 1;
while (from[ct])
{