}
/* open [message_id].eml file for writing */
- mbox_file = modefopen(mbox_path, "wb", SPOOL_MODE);
- if (mbox_file == NULL)
+
+ if (!(mbox_file = modefopen(mbox_path, "wb", SPOOL_MODE)))
{
log_write(0, LOG_MAIN|LOG_PANIC, "%s", string_open_failed(errno,
"scan file %s", mbox_path));
"${if def:sender_address{X-Envelope-From: <${sender_address}>\n}}"
"${if def:recipients{X-Envelope-To: ${recipients}\n}}");
- if (temp_string != NULL)
- {
- i = fwrite(temp_string, Ustrlen(temp_string), 1, mbox_file);
- if (i != 1)
+ if (temp_string)
+ if (fwrite(temp_string, Ustrlen(temp_string), 1, mbox_file) != 1)
{
log_write(0, LOG_MAIN|LOG_PANIC, "Error/short write while writing \
mailbox headers to %s", mbox_path);
goto OUT;
}
- }
- /* write all header lines to mbox file */
- my_headerlist = header_list;
- for (my_headerlist = header_list; my_headerlist != NULL;
- my_headerlist = my_headerlist->next)
- {
- /* skip deleted headers */
- if (my_headerlist->type == '*') continue;
+ /* write all non-deleted header lines to mbox file */
- i = fwrite(my_headerlist->text, my_headerlist->slen, 1, mbox_file);
- if (i != 1)
- {
- log_write(0, LOG_MAIN|LOG_PANIC, "Error/short write while writing \
- message headers to %s", mbox_path);
- goto OUT;
- }
- }
+ for (my_headerlist = header_list; my_headerlist;
+ my_headerlist = my_headerlist->next)
+ if (my_headerlist->type != '*')
+ if (fwrite(my_headerlist->text, my_headerlist->slen, 1, mbox_file) != 1)
+ {
+ log_write(0, LOG_MAIN|LOG_PANIC, "Error/short write while writing \
+ message headers to %s", mbox_path);
+ goto OUT;
+ }
/* End headers */
if (fwrite("\n", 1, 1, mbox_file) != 1)
do
{
- j = fread(buffer, 1, sizeof(buffer), data_file);
+ uschar * s;
+
+ if (!spool_file_wireformat || source_file_override)
+ j = fread(buffer, 1, sizeof(buffer), data_file);
+ else /* needs CRLF -> NL */
+ if ((s = US fgets(CS buffer, sizeof(buffer), data_file)))
+ {
+ uschar * p = s + Ustrlen(s) - 1;
+
+ if (*p == '\n' && p[-1] == '\r')
+ *--p = '\n';
+ else if (*p == '\r')
+ ungetc(*p--, data_file);
+
+ j = p - buffer;
+ }
+ else
+ j = 0;
if (j > 0)
- {
- i = fwrite(buffer, j, 1, mbox_file);
- if (i != 1)
+ if (fwrite(buffer, j, 1, mbox_file) != 1)
{
log_write(0, LOG_MAIN|LOG_PANIC, "Error/short write while writing \
message body to %s", mbox_path);
goto OUT;
}
- }
} while (j > 0);
(void)fclose(mbox_file);
mbox_path = string_sprintf("%s/scan/%s", spool_directory, spooled_message_id);
- tempdir = opendir(CS mbox_path);
- if (!tempdir)
+ if (!(tempdir = opendir(CS mbox_path)))
{
debug_printf("Unable to opendir(%s): %s\n", mbox_path, strerror(errno));
/* Just in case we still can: */
return;
}
/* loop thru dir & delete entries */
- while((entry = readdir(tempdir)) != NULL)
+ while((entry = readdir(tempdir)))
{
uschar *name = US entry->d_name;
int dummy;
file_path = string_sprintf("%s/%s", mbox_path, name);
debug_printf("unspool_mbox(): unlinking '%s'\n", file_path);
- dummy = unlink(CS file_path);
+ dummy = unlink(CS file_path); dummy = dummy; /* compiler quietening */
}
closedir(tempdir);