/* Copyright (c) Tom Kistner <tom@duncanthrax.net> 2003 - 2015
* License: GPL
- * Copyright (c) The Exim Maintainers 2016 - 2018
+ * Copyright (c) The Exim Maintainers 2016 - 2020
*/
/* Code for setting up a MBOX style spool file inside a /scan/<msgid>
FILE *mbox_file = NULL, *l_data_file = NULL, *yield = NULL;
struct stat statbuf;
int j;
-void *reset_point;
+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)
message_subdir[1] = '\0';
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;
}
if (spool_mbox_ok && !f.no_mbox_unspool)
{
- uschar *mbox_path;
uschar *file_path;
- struct dirent *entry;
DIR *tempdir;
+ rmark reset_point = store_mark();
+ uschar * mbox_path = string_sprintf("%s/scan/%s", spool_directory, spooled_message_id);
- mbox_path = string_sprintf("%s/scan/%s", spool_directory, spooled_message_id);
-
- if (!(tempdir = opendir(CS mbox_path)))
+ if (!(tempdir = exim_opendir(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)))
+ for (struct dirent *entry; entry = readdir(tempdir); )
{
uschar *name = US entry->d_name;
int dummy;
/* remove directory */
rmdir(CS mbox_path);
- store_reset(mbox_path);
+ store_reset(reset_point);
}
spool_mbox_ok = 0;
}