]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
script utility now supports the script using stdio/stdout for communication.
authorTimo Sirainen <tss@iki.fi>
Fri, 28 Jan 2011 17:41:03 +0000 (19:41 +0200)
committerTimo Sirainen <tss@iki.fi>
Fri, 28 Jan 2011 17:41:03 +0000 (19:41 +0200)
src/plugins/quota/quota.c
src/util/script.c

index 00b4ec8d7eee589d879c09fe85e499b59790f335..c3f11161f4f0334c1d08aad5d572b6f00034a533 100644 (file)
@@ -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');
index d5455ab328cec08fcd76d630298b21fc089f7250..c53828c684c7cf2670328c8f683c6fd981c0b4ff 100644 (file)
@@ -11,7 +11,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 
-#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 <lf>
           arg 2 <lf>
           ...
-          <lf> */
+          <lf>
+          [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");