When apply_filter() runs the external (clean or smudge) filter program, it needs to pass the writable end of a pipe as its stdout. For this purpose, it used to dup2(2) the file descriptor explicitly to stdout. Now we use the facilities of start_command() to do it for us. Furthermore, the path argument of a subordinate function, filter_buffer(), was not used, so here we replace it to pass the fd instead. Signed-off-by: Johannes Sixt <johannes.sixt@xxxxxxxxxx> --- convert.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) diff --git a/convert.c b/convert.c index 6d64994..c870817 100644 --- a/convert.c +++ b/convert.c @@ -201,7 +201,7 @@ static char *crlf_to_worktree(const char *path, const char *src, unsigned long * return buffer; } -static int filter_buffer(const char *path, const char *src, +static int filter_buffer(int fd, const char *src, unsigned long size, const char *cmd) { /* @@ -214,6 +214,7 @@ static int filter_buffer(const char *path, const char *src, memset(&child_process, 0, sizeof(child_process)); child_process.argv = argv; child_process.in = -1; + child_process.out = fd; if (start_command(&child_process)) return error("cannot fork to run external filter %s", cmd); @@ -265,10 +266,8 @@ static char *apply_filter(const char *path, const char *src, return NULL; } if (!child_process.pid) { - dup2(pipe_feed[1], 1); close(pipe_feed[0]); - close(pipe_feed[1]); - exit(filter_buffer(path, src, *sizep, cmd)); + exit(filter_buffer(pipe_feed[1], src, *sizep, cmd)); } close(pipe_feed[1]); -- 1.5.3.3.1134.gee562 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html