new->value = str_dup (buffer);
- debug_print (2, ("`%s' = `%s'\n", new->attribute ? new->attribute : "",
+ debug_print (2, ("`%s' = `%s'\n", new->attribute ? new->attribute : "",
new->value ? new->value : ""));
/* Add this parameter to the list */
* digest 1 if reading a multipart/digest, 0 otherwise
*/
-BODY *mutt_parse_multipart (FILE * fp, const char *boundary, LOFF_T end_off,
+BODY *mutt_parse_multipart (FILE * fp, const char *boundary, off_t end_off,
int digest)
{
#ifdef SUN_ATTACHMENT
char scratch[SHORT_STRING];
/* Don't modify our argument. Fixed-size buffer is ok here since
- * the date format imposes a natural limit.
+ * the date format imposes a natural limit.
*/
strfcpy (scratch, s, sizeof (scratch));
if (hdr) {
hdr->lines = atoi (p);
- /*
+ /*
* HACK - mutt has, for a very short time, produced negative
- * Lines header values. Ignore them.
+ * Lines header values. Ignore them.
*/
if (hdr->lines < 0)
hdr->lines = 0;
* f stream to read from
*
* hdr header structure of current message (optional).
- *
+ *
* user_hdrs If set, store user headers. Used for recall-message and
* postpone modes.
- *
+ *
* weed If this parameter is set and the user has activated the
* $weed option, honor the header weed list for user headers.
* Used for recall-message.
- *
+ *
* Returns: newly allocated envelope structure. You should free it by
* mutt_free_envelope() when envelope stay unneeded.
*/
LIST *last = NULL;
char *line = mem_malloc (LONG_STRING);
char *p;
- LOFF_T loc;
+ off_t loc;
int matched;
size_t linelen = LONG_STRING;
char buf[LONG_STRING + 1];
int count_body_parts_check(LIST **checklist, BODY *b, int dflt) {
LIST *type;
ATTACH_MATCH *a;
-
+
/* If list is null, use default behavior. */
if (! *checklist) {
/*return dflt;*/
return 0;
}
-
+
for (type = *checklist; type; type = type->next) {
a = (ATTACH_MATCH *)type->data;
debug_print(5, ("cbpc: %s %d/%s ?? %s/%s [%d]... ",
#define AT_COUNT(why) { shallcount = 1; }
#define AT_NOCOUNT(why) { shallcount = 0; }
-int count_body_parts (BODY *body, int flags) {
+int count_body_parts (BODY *body, int flags) {
int count = 0;
int shallcount, shallrecurse;
BODY *bp;
-
+
if (body == NULL)
return 0;
-
+
for (bp = body; bp != NULL; bp = bp->next) {
/* Initial disposition is to count and not to recurse this part. */
AT_COUNT("default");
shallrecurse = 0;
-
+
debug_print(5, ("bp: desc=\"%s\"; fn=\"%s\", type=\"%d/%s\"\n",
bp->description ? bp->description : ("none"),
bp->filename ? bp->filename :
bp->d_filename ? bp->d_filename : "(none)",
bp->type, bp->subtype ? bp->subtype : "*"));
-
+
if (bp->type == TYPEMESSAGE) {
shallrecurse = 1;
-
+
/* If it's an external body pointer, don't recurse it. */
if (!ascii_strcasecmp (bp->subtype, "external-body"))
shallrecurse = 0;
-
+
/* Don't count containers if they're top-level. */
if (flags & M_PARTS_TOPLEVEL)
AT_NOCOUNT("top-level message/*");
shallrecurse = 1;
if (!str_casecmp(bp->subtype, "alternative"))
shallrecurse = 0;
-
+
/* Don't count containers if they're top-level. */
if (flags & M_PARTS_TOPLEVEL)
AT_NOCOUNT("top-level multipart");
}
-
+
if (bp->disposition == DISPINLINE &&
bp->type != TYPEMULTIPART && bp->type != TYPEMESSAGE && bp == body)
AT_NOCOUNT("ignore fundamental inlines");
-
+
/* If this body isn't scheduled for enumeration already, don't bother
* profiling it further. */
-
+
if (shallcount) {
/* Turn off shallcount if message type is not in ok list,
* or if it is in except list. Check is done separately for
AT_NOCOUNT("excluded");
}
}
-
+
if (shallcount)
count++;
bp->attach_qualifies = shallcount ? 1 : 0;
-
- debug_print(5, ("cbp: %08x shallcount = %d\n", (unsigned int)bp, shallcount));
-
+
+ debug_print(5, ("cbp: %p shallcount = %d\n", bp, shallcount));
+
if (shallrecurse) {
- debug_print(5, ("cbp: %08x pre count = %d\n", (unsigned int)bp, count));
+ debug_print(5, ("cbp: %p pre count = %d\n", bp, count));
bp->attach_count = count_body_parts(bp->parts, flags & ~M_PARTS_TOPLEVEL);
count += bp->attach_count;
- debug_print(5, ("cbp: %08x post count = %d\n", (unsigned int)bp, count));
+ debug_print(5, ("cbp: %p post count = %d\n", bp, count));
}
}
-
+
debug_print(5, ("bp: return %d\n", count < 0 ? 0 : count));
return count < 0 ? 0 : count;
}
return (0);
if (hdr->attach_valid && !(flags & M_PARTS_RECOUNT))
return hdr->attach_total;
-
+
if (AttachAllow || AttachExclude || InlineAllow || InlineExclude)
hdr->attach_total = count_body_parts(hdr->content, flags | M_PARTS_TOPLEVEL);
else
hdr->attach_total = 0;
-
+
hdr->attach_valid = 1;
return hdr->attach_total;
}