diff options
author | Junio C Hamano <junkio@cox.net> | 2005-12-12 00:49:45 (GMT) |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-12-12 00:49:45 (GMT) |
commit | a9572072f0ab0ac97e64b0dc01254a3ad95befe1 (patch) | |
tree | 2375e3b4aea11444375f9f587c8ca4cd8d22d6d0 /run-command.c | |
parent | 423325a2d24638ddcc82ce47be5e40be550f4507 (diff) | |
parent | b825e6ff5d003db8efd1ed43cdbbb9d637df0a0c (diff) | |
download | git-93ea4a9599564101be20507a3a756d38427a70ac.zip git-93ea4a9599564101be20507a3a756d38427a70ac.tar.gz git-93ea4a9599564101be20507a3a756d38427a70ac.tar.bz2 |
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'run-command.c')
-rw-r--r-- | run-command.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/run-command.c b/run-command.c index 5787a50..8bf5922 100644 --- a/run-command.c +++ b/run-command.c @@ -2,13 +2,19 @@ #include "run-command.h" #include <sys/wait.h> -int run_command_v(int argc, char **argv) +int run_command_v_opt(int argc, char **argv, int flags) { pid_t pid = fork(); if (pid < 0) return -ERR_RUN_COMMAND_FORK; if (!pid) { + if (flags & RUN_COMMAND_NO_STDIO) { + int fd = open("/dev/null", O_RDWR); + dup2(fd, 0); + dup2(fd, 1); + close(fd); + } execvp(argv[0], (char *const*) argv); die("exec %s failed.", argv[0]); } @@ -36,6 +42,11 @@ int run_command_v(int argc, char **argv) } } +int run_command_v(int argc, char **argv) +{ + return run_command_v_opt(argc, argv, 0); +} + int run_command(const char *cmd, ...) { int argc; @@ -54,5 +65,5 @@ int run_command(const char *cmd, ...) va_end(param); if (MAX_RUN_COMMAND_ARGS <= argc) return error("too many args to run %s", cmd); - return run_command_v(argc, argv); + return run_command_v_opt(argc, argv, 0); } |