char *c_partno; /* within multipart content */
/* Content-Type info */
+ boolean crlf; /* are the line ending CRLF */
struct CTinfo c_ctinfo; /* parsed elements of Content-Type */
int c_type; /* internal flag for content type */
int c_subtype; /* internal flag for content subtype */
state = FLD2;
/* FALL */
case FLD2:
+ if (compnum == 1) {
+ ct->crlf = f.value[f.valuelen-2] == '\r';
+ }
compnum++;
/* add the header data to the list */
*++dp = '\0';
/* record boundary separators */
- m->mp_start = concat(bp, "\n", NULL);
- m->mp_stop = concat(bp, "--\n", NULL);
+ if (!ct->crlf) {
+ m->mp_start = concat(bp, "\n", NULL);
+ m->mp_stop = concat(bp, "--\n", NULL);
+ } else {
+ m->mp_start = concat(bp, "\r\n", NULL);
+ m->mp_stop = concat(bp, "--\r\n", NULL);
+ }
+
if (!ct->c_fp && (ct->c_fp = fopen(ct->c_file, "r")) == NULL) {
advise(ct->c_file, "unable to open for reading");