default:
switch (ct->c_encoding) {
case CE_7BIT:
- putc ('\n', out);
+ /* Special case: if this is a non-MIME message with no
+ body, don't emit the newline that would appear between
+ the headers and body. In that case, the call to
+ write8Bit() shouldn't be needed, but is harmless. */
+ if (ct->c_ctinfo.ci_attrs[0] != NULL ||
+ ct->c_begin != ct->c_end) {
+ putc ('\n', out);
+ }
result = write8Bit (ct, out);
break;
write8Bit (CT ct, FILE *out)
{
int fd;
+ size_t inbytes;
char c, *file, buffer[BUFSIZ];
- CE ce = ct->c_cefile;
+ CE ce = &ct->c_cefile;
file = NULL;
if ((fd = (*ct->c_ceopenfnx) (ct, &file)) == NOTOK)
return NOTOK;
c = '\n';
- while (fgets (buffer, sizeof(buffer) - 1, ce->ce_fp)) {
- c = buffer[strlen (buffer) - 1];
- fputs (buffer, out);
+ while ((inbytes = fread (buffer, 1, sizeof buffer, ce->ce_fp)) > 0) {
+ c = buffer[inbytes - 1];
+ fwrite (buffer, 1, inbytes, out);
}
if (c != '\n')
putc ('\n', out);
int fd;
char *cp, *file;
char c, buffer[BUFSIZ];
- CE ce = ct->c_cefile;
+ CE ce = &ct->c_cefile;
file = NULL;
if ((fd = (*ct->c_ceopenfnx) (ct, &file)) == NOTOK)
{
int fd, result;
char *file;
- CE ce = ct->c_cefile;
+ CE ce = &ct->c_cefile;
file = NULL;
if ((fd = (*ct->c_ceopenfnx) (ct, &file)) == NOTOK)