if (pptr < content_end)
ptr = pptr;
}
+
+
next_boundary = NULL;
- for (srch=ptr; srch<content_end; ++srch) {
+ for (srch=ptr;
+ (srch != NULL) && (srch < content_end);
+ srch = memchr(srch, '-', content_end - srch))
+ {
if (!memcmp(srch,
m->b[startary].Key,
m->b[startary].len))
next_boundary = srch;
srch = content_end;
}
+ else srch ++;
+
}
}
encoding,
&decoded,
&bytes_decoded);
- if ((rc < 0) || (decoded == NULL)) {
+ if (rc < 0) {
printf("failed to decode content\n");
return;
}
- rc = write(STDOUT_FILENO, content, length);
- free(decoded);
+ if (rc == 0){
+ rc = write(STDOUT_FILENO, content, length);
+ }
+ else {
+ rc = write(STDOUT_FILENO, decoded, bytes_decoded);
+ free(decoded);
+ }
}
}