From 1d999ddd1daa6da2779d21b293ea9b275780bff8 Mon Sep 17 00:00:00 2001 From: Thomas Rast Date: Tue, 16 Jul 2013 11:27:36 +0200 Subject: daemon/shell: refactor redirection of 0/1/2 from /dev/null Both daemon.c and shell.c contain logic to open FDs 0/1/2 from /dev/null if they are not already open. Move the function in daemon.c to setup.c and use it in shell.c, too. While there, remove a 'not' that inverted the meaning of the comment. The point is indeed to *avoid* messing up. Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano --- setup.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'setup.c') diff --git a/setup.c b/setup.c index 1b120175f..12a85d161 100644 --- a/setup.c +++ b/setup.c @@ -872,3 +872,15 @@ const char *resolve_gitdir(const char *suspect) return suspect; return read_gitfile(suspect); } + +/* if any standard file descriptor is missing open it to /dev/null */ +void sanitize_stdfds(void) +{ + int fd = open("/dev/null", O_RDWR, 0); + while (fd != -1 && fd < 2) + fd = dup(fd); + if (fd == -1) + die_errno("open /dev/null or dup failed"); + if (fd > 2) + close(fd); +} -- cgit v1.2.1