X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fsrc%2Fspool_mbox.c;h=7b6a796079c535d519753eb38346eaa83a0a30bf;hb=4c2efd7a1bc5b018f2e05a0d739fd856967e3de7;hp=05f90a819c57fbd520f312706bf7236ec5f08885;hpb=1bd642c265dae5643f16d023879043b7576f66a9;p=exim.git diff --git a/src/src/spool_mbox.c b/src/src/spool_mbox.c index 05f90a819..7b6a79607 100644 --- a/src/src/spool_mbox.c +++ b/src/src/spool_mbox.c @@ -36,16 +36,15 @@ uschar buffer[16384]; uschar *temp_string; uschar *mbox_path; FILE *mbox_file = NULL, *l_data_file = NULL, *yield = NULL; -header_line *my_headerlist; struct stat statbuf; -int i, j; -void *reset_point; +int j; +rmark reset_point; mbox_path = string_sprintf("%s/scan/%s/%s.eml", spool_directory, message_id, message_id); if (mbox_fname) *mbox_fname = mbox_path; -reset_point = store_get(0); +reset_point = store_mark(); /* Skip creation if already spooled out as mbox file */ if (!spool_mbox_ok) @@ -88,7 +87,7 @@ if (!spool_mbox_ok) /* write all non-deleted header lines to mbox file */ - for (my_headerlist = header_list; my_headerlist; + for (header_line * 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) @@ -116,9 +115,9 @@ if (!spool_mbox_ok) else { message_subdir[1] = '\0'; - for (i = 0; i < 2; i++) + for (int i = 0; i < 2; i++) { - message_subdir[0] = split_spool_directory == (i == 0) ? message_id[5] : 0; + set_subdir_str(message_subdir, message_id, i); temp_string = spool_fname(US"input", message_subdir, message_id, US"-D"); if ((l_data_file = Ufopen(temp_string, "rb"))) break; } @@ -147,7 +146,7 @@ if (!spool_mbox_ok) { uschar * s; - if (!spool_file_wireformat || source_file_override) + if (!f.spool_file_wireformat || source_file_override) j = fread(buffer, 1, sizeof(buffer), l_data_file); else /* needs CRLF -> NL */ if ((s = US fgets(CS buffer, sizeof(buffer), l_data_file))) @@ -209,14 +208,13 @@ unspool_mbox(void) spam_ok = 0; malware_ok = 0; -if (spool_mbox_ok && !no_mbox_unspool) +if (spool_mbox_ok && !f.no_mbox_unspool) { - uschar *mbox_path; uschar *file_path; struct dirent *entry; DIR *tempdir; - - mbox_path = string_sprintf("%s/scan/%s", spool_directory, spooled_message_id); + rmark reset_point = store_mark(); + uschar * mbox_path = string_sprintf("%s/scan/%s", spool_directory, spooled_message_id); if (!(tempdir = opendir(CS mbox_path))) { @@ -241,7 +239,7 @@ if (spool_mbox_ok && !no_mbox_unspool) /* remove directory */ rmdir(CS mbox_path); - store_reset(mbox_path); + store_reset(reset_point); } spool_mbox_ok = 0; }