diff options
Diffstat (limited to 'net/rabbitmq-c-devel/files/patch-tools_common.c')
-rw-r--r-- | net/rabbitmq-c-devel/files/patch-tools_common.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/net/rabbitmq-c-devel/files/patch-tools_common.c b/net/rabbitmq-c-devel/files/patch-tools_common.c new file mode 100644 index 000000000000..99406bae52a4 --- /dev/null +++ b/net/rabbitmq-c-devel/files/patch-tools_common.c @@ -0,0 +1,57 @@ +--- ./tools/common.c.orig 2010-03-31 03:28:20.000000000 +0200 ++++ ./tools/common.c 2010-06-01 13:26:57.576932723 +0200 +@@ -58,7 +58,9 @@ + #include <unistd.h> + #include <fcntl.h> + #include <errno.h> ++#ifdef HAVE_SPAWN_H + #include <spawn.h> ++#endif + #include <sys/wait.h> + + #include <popt.h> +@@ -327,6 +329,7 @@ + } + } + ++#ifdef HAVE_SPAWN_H + void pipeline(const char * const *argv, struct pipeline *pl) + { + posix_spawn_file_actions_t file_acts; +@@ -356,6 +359,36 @@ + + pl->infd = pipefds[1]; + } ++#else ++void pipeline(const char * const *argv, struct pipeline *pl) ++{ ++ int pipefds[2]; ++ if (pipe(pipefds)) ++ die_errno(errno, "pipe"); ++ ++ pl->pid = fork(); ++ ++ if (pl->pid == -1) ++ die_errno(errno, "fork: %s", argv[0]); ++ else ++ if (pl->pid == 0) { ++ if (dup2(pipefds[0], 0)) ++ die_errno(errno, "dup2()"); ++ if (close(pipefds[0])) ++ die_errno(errno, "close()"); ++ if (close(pipefds[1])) ++ die_errno(errno, "close()"); ++ execvp(argv[0], argv); ++ die_errno(errno, "execvp()"); ++ } ++ else { ++ if (close(pipefds[0])) ++ die_errno(errno, "close"); ++ } ++ ++ pl->infd = pipefds[1]; ++} ++#endif + + int finish_pipeline(struct pipeline *pl) + { |