From bd4cc8e98cc894d716942ec3173bc4d237dc43b1 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 28 Jan 2011 19:41:03 +0200 Subject: [PATCH] script utility now supports the script using stdio/stdout for communication. --- src/plugins/quota/quota.c | 2 +- src/util/script.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/plugins/quota/quota.c b/src/plugins/quota/quota.c index 00b4ec8d7e..c3f11161f4 100644 --- a/src/plugins/quota/quota.c +++ b/src/plugins/quota/quota.c @@ -1015,7 +1015,7 @@ static void quota_warning_execute(struct quota_root *root, const char *cmd) } str = t_str_new(1024); - str_append(str, "VERSION\tscript\t1\t0\n"); + str_append(str, "VERSION\tscript\t2\t0\n"); for (; *args != NULL; args++) { str_append(str, *args); str_append_c(str, '\n'); diff --git a/src/util/script.c b/src/util/script.c index d5455ab328..c53828c684 100644 --- a/src/util/script.c +++ b/src/util/script.c @@ -11,7 +11,7 @@ #include #include -#define SCRIPT_MAJOR_VERSION 1 +#define SCRIPT_MAJOR_VERSION 2 #define SCRIPT_READ_TIMEOUT_SECS 10 static ARRAY_TYPE(const_string) exec_args; @@ -44,7 +44,9 @@ static void client_connected(struct master_service_connection *conn) arg 1 arg 2 ... - */ + + [data] + */ alarm(SCRIPT_READ_TIMEOUT_SECS); do { prev_size = input->used; @@ -82,6 +84,13 @@ static void client_connected(struct master_service_connection *conn) } if (close(MASTER_STATUS_FD) < 0) i_error("close(status) failed: %m"); + + if (write(conn->fd, "1\n", 2) != 2) + i_error("write() failed: %m"); + + if (dup2(conn->fd, STDIN_FILENO) < 0 || + dup2(conn->fd, STDOUT_FILENO) < 0) + i_error("dup2() failed: %m"); if (close(conn->fd) < 0) i_error("close() failed: %m"); -- 2.47.3