------- =_aaaaaaaaaa0
Content-Type: image/jpeg
Content-Disposition: attachment;
- filename*0="This is an example of a rather long filename that is lon";
- filename*1="ger than would fit on a normal line.jpg"
+ filename*0="This is an example of a rather long filename that is lo";
+ filename*1="nger than would fit on a normal line.jpg"
Content-Transfer-Encoding: base64
/9g=
------- =_aaaaaaaaaa0
Content-Type: image/jpeg
Content-Disposition: attachment;
- filename*0="This is an example of a rather long filename that is lon";
- filename*1="ger than would fit on a normal line.jpg"
+ filename*0*=UTF-8''This%20is%20an%20%C3%ABxample%20of%20a%20rather;
+ filename*1=" long filename that is longer than would fit on a norma";
+ filename*2="l line.jpg"
Content-Transfer-Encoding: base64
/9g=
* section.
* - There are 8-bit characters within N bytes of our section start.
* N is calculated based on the number of bytes it would take to
- * reach CPERLIN - 1. Specifically:
+ * reach CPERLIN. Specifically:
* 8 (starting tab) +
* strlen(param name) +
* 4 ('* for section marker, '=', opening/closing '"')
* strlen (index)
* is the number of bytes used by everything that isn't part of the
- * value. So that gets subtracted from CPERLIN - 1.
+ * value. So that gets subtracted from CPERLIN.
*/
snprintf(indexchar, sizeof(indexchar), "%d", index);
- maxfit = CPERLIN - (13 + len + strlen(indexchar));
+ maxfit = CPERLIN - (12 + len + strlen(indexchar));
if ((eightbit && index == 0) || contains8bit(start, start + maxfit)) {
*encode = 1;
}
pm->pm_lang = getcpy(NULL); /* Default to a blank lang tag */
len++; /* For the encoding marker */
+ maxfit--;
if (index == 0) {
- len += strlen(pm->pm_charset) + strlen(pm->pm_lang) + 2;
+ int enclen = strlen(pm->pm_charset) + strlen(pm->pm_lang) + 2;
+ len += enclen;
+ maxfit-= enclen;
} else {
/*
- * We know we definitely need to include an index.
+ * We know we definitely need to include an index. maxfit already
+ * includes the section marker.
*/
len += strlen(indexchar);
}