/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2001 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2002 Hiroyuki Yamamoto
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
if (mimeinfo->next)
return mimeinfo->next;
+ if (mimeinfo->main) {
+ mimeinfo = mimeinfo->main;
+ if (mimeinfo->next)
+ return mimeinfo->next;
+ }
+
for (mimeinfo = mimeinfo->parent; mimeinfo != NULL;
mimeinfo = mimeinfo->parent) {
if (mimeinfo->next)
return;
}
-
for (npart = 0;; npart++) {
MimeInfo *partinfo;
gboolean eom = FALSE;
prev_fpos = fpos;
+ debug_print("prev_fpos: %ld\n", fpos);
partinfo = procmime_scan_mime_header(fp);
if (!partinfo) break;
partinfo->sub = sub = procmime_scan_mime_header(fp);
if (!sub) break;
+
sub->level = partinfo->level + 1;
sub->parent = partinfo->parent;
sub->main = partinfo;
- if (sub->mime_type == MIME_MULTIPART) {
- if (sub->level < 8)
+ if (sub->level < 8) {
+ if (sub->mime_type == MIME_MULTIPART) {
procmime_scan_multipart_message
(sub, fp);
+ } else if (sub->mime_type == MIME_MESSAGE_RFC822) {
+ fseek(fp, sub->fpos, SEEK_SET);
+ procmime_scan_multipart_message
+ (sub, fp);
+ }
}
}
break;
}
}
- if (p == NULL)
- eom = TRUE; /* broken MIME message */
+ if (p == NULL) {
+ /* broken MIME, or single part MIME message */
+ buf[0] = '\0';
+ eom = TRUE;
+ }
fpos = ftell(fp);
+ debug_print("fpos: %ld\n", fpos);
partinfo->size = fpos - prev_fpos - strlen(buf);
+ debug_print("partinfo->size: %d\n", partinfo->size);
+ if (partinfo->sub && !partinfo->sub->sub &&
+ !partinfo->sub->children) {
+ partinfo->sub->size = fpos - partinfo->sub->fpos - strlen(buf);
+ debug_print("partinfo->sub->size: %d\n",
+ partinfo->sub->size);
+ }
+ debug_print("boundary: %s\n", buf);
if (eom) break;
}