summaryrefslogtreecommitdiff
path: root/run-command.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-12-12 00:49:45 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-12-12 00:49:45 (GMT)
commita9572072f0ab0ac97e64b0dc01254a3ad95befe1 (patch)
tree2375e3b4aea11444375f9f587c8ca4cd8d22d6d0 /run-command.c
parent423325a2d24638ddcc82ce47be5e40be550f4507 (diff)
parentb825e6ff5d003db8efd1ed43cdbbb9d637df0a0c (diff)
downloadgit-93ea4a9599564101be20507a3a756d38427a70ac.zip
git-93ea4a9599564101be20507a3a756d38427a70ac.tar.gz
git-93ea4a9599564101be20507a3a756d38427a70ac.tar.bz2
GIT 0.99.9m aka 1.0rc5v1.0rc5v0.99.9m
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'run-command.c')
-rw-r--r--run-command.c15
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);
}