diff --git a/src/lib-sieve-tool/mail-raw.c b/src/lib-sieve-tool/mail-raw.c index 18079fbf2644a9c0dafa43202a14a1a1db3a9d3e..3d3e8068a85447f49877765c93db2f8ab78a5b7b 100644 --- a/src/lib-sieve-tool/mail-raw.c +++ b/src/lib-sieve-tool/mail-raw.c @@ -56,14 +56,15 @@ struct mail_raw_user { */ static int seekable_fd_callback -(const char **path_r, void *context ATTR_UNUSED) +(const char **path_r, void *context) { + struct mail_user *ruser = (struct mail_user *)context; const char *dir, *p; string_t *path; int fd; - path = t_str_new(128); - str_append(path, "/tmp/dovecot.sieve-tool."); + path = t_str_new(128); + mail_user_set_get_temp_prefix(path, ruser->set); fd = safe_mkstemp(path, 0600, (uid_t)-1, (gid_t)-1); if (fd == -1 && errno == ENOENT) { dir = str_c(path); @@ -95,8 +96,8 @@ static int seekable_fd_callback return fd; } -static struct istream *create_raw_stream -(int fd, time_t *mtime_r, const char **sender) +static struct istream *mail_raw_create_stream +(struct mail_user *ruser, int fd, time_t *mtime_r, const char **sender) { struct istream *input, *input2, *input_list[2]; const unsigned char *data; @@ -143,7 +144,7 @@ static struct istream *create_raw_stream input_list[0] = input2; input_list[1] = NULL; input = i_stream_create_seekable(input_list, MAIL_MAX_MEMORY_BUFFER, - seekable_fd_callback, NULL); + seekable_fd_callback, (void*)ruser); i_stream_unref(&input2); return input; } @@ -227,7 +228,7 @@ struct mail_raw *mail_raw_open_file if ( path == NULL || strcmp(path, "-") == 0 ) { path = NULL; - input = create_raw_stream(0, &mtime, &sender); + input = mail_raw_create_stream(ruser, 0, &mtime, &sender); } mailr = mail_raw_create(ruser, input, path, sender, mtime);