while ((p = fgets(buf, sizeof(buf), fp)) != NULL)
if (IS_BOUNDARY(buf, boundary, boundary_len)) break;
if (!p) return;
+ } else if (mimeinfo->parent && mimeinfo->parent->boundary) {
+ boundary = mimeinfo->parent->boundary;
+ boundary_len = strlen(boundary);
}
if ((fpos = ftell(fp)) < 0) {
for (;;) {
MimeInfo *partinfo;
gboolean eom = FALSE;
+ gint len;
prev_fpos = fpos;
debug_print("prev_fpos: %ld\n", fpos);
partinfo = procmime_scan_mime_header(fp);
if (!partinfo) break;
procmime_mimeinfo_insert(mimeinfo, partinfo);
+ debug_print("content-type: %s\n",
+ partinfo->content_type);
}
if (partinfo->mime_type == MIME_MULTIPART ||
buf[0] = '\0';
eom = TRUE;
}
+ debug_print("boundary: %s\n", buf);
+
fpos = ftell(fp);
debug_print("fpos: %ld\n", fpos);
- partinfo->size = fpos - prev_fpos - strlen(buf);
+ len = strlen(buf);
+ partinfo->size = fpos - prev_fpos - len;
debug_print("partinfo->size: %d\n", partinfo->size);
if (partinfo->sub && !partinfo->sub->sub &&
!partinfo->sub->children) {
debug_print("partinfo->sub->size: %d\n",
partinfo->sub->size);
}
- debug_print("boundary: %s\n", buf);
+
+ if (mimeinfo->mime_type == MIME_MESSAGE_RFC822) {
+ if (len > 0 && fseek(fp, fpos - len, SEEK_SET) < 0)
+ perror("fseek");
+ break;
+ }
if (eom) break;
}