dovecot-2.2: lib-lda: sendmail_path setting can contain paramete...
dovecot at dovecot.org
dovecot at dovecot.org
Mon Aug 12 15:45:09 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/ca4628975fde
changeset: 16687:ca4628975fde
user: Timo Sirainen <tss at iki.fi>
date: Mon Aug 12 15:44:39 2013 +0300
description:
lib-lda: sendmail_path setting can contain parameters now.
diffstat:
src/lib-lda/smtp-client.c | 31 ++++++++++++++++++-------------
1 files changed, 18 insertions(+), 13 deletions(-)
diffs (57 lines):
diff -r 5de1e4fdb758 -r ca4628975fde src/lib-lda/smtp-client.c
--- a/src/lib-lda/smtp-client.c Sun Aug 11 22:54:32 2013 +0300
+++ b/src/lib-lda/smtp-client.c Mon Aug 12 15:44:39 2013 +0300
@@ -2,7 +2,7 @@
#include "lib.h"
#include "ioloop.h"
-#include "buffer.h"
+#include "array.h"
#include "str.h"
#include "safe-mkstemp.h"
#include "execv-const.h"
@@ -55,27 +55,32 @@
const char *destination,
const char *return_path, int fd)
{
- const char *argv[7], *sendmail_path;
+ const char *const *sendmail_args, *const *argv, *str;
+ ARRAY_TYPE(const_string) args;
+ unsigned int i;
- /* deliver_set's contents may point to environment variables.
- deliver_env_clean() cleans them up, so they have to be copied. */
- sendmail_path = t_strdup(set->sendmail_path);
+ sendmail_args = t_strsplit(set->sendmail_path, " ");
+ t_array_init(&args, 16);
+ for (i = 0; sendmail_args[i] != NULL; i++)
+ array_append(&args, &sendmail_args[i], 1);
- argv[0] = sendmail_path;
- argv[1] = "-i"; /* ignore dots */
- argv[2] = "-f";
- argv[3] = return_path != NULL && *return_path != '\0' ?
+ str = "-i"; array_append(&args, &str, 1); /* ignore dots */
+ str = "-f"; array_append(&args, &str, 1);
+ str = return_path != NULL && *return_path != '\0' ?
return_path : "<>";
- argv[4] = "--";
- argv[5] = destination;
- argv[6] = NULL;
+ array_append(&args, &str, 1);
+
+ str = "--"; array_append(&args, &str, 1);
+ array_append(&args, &destination, 1);
+ array_append_zero(&args);
+ argv = array_idx(&args, 0);
if (dup2(fd, STDIN_FILENO) < 0)
i_fatal("dup2() failed: %m");
master_service_env_clean();
- execv_const(sendmail_path, argv);
+ execv_const(argv[0], argv);
}
static struct smtp_client *
More information about the dovecot-cvs
mailing list