summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2013-07-19 08:43:35 +0200
committerJohn Crispin <blogic@openwrt.org>2013-07-22 08:18:46 +0200
commitc676a0cbb705a7164ca1306dc6212a45edcad495 (patch)
treee7157115590cbc8314c3fa51b40fea592437c15d
parent36d79a90c28ac9d655ccd8261b3ac0b497a5aec1 (diff)
downloadunitd-c676a0cbb705a7164ca1306dc6212a45edcad495.tar
unitd-c676a0cbb705a7164ca1306dc6212a45edcad495.zip
early: keep stdio files open
At the end of the 'early_console' function, the file descriptor is closed unconditionally. This 'close' call closes the stdio files if the fd returned by the 'open(dev/console)' call equals with any of the STD{IN,OUT,ERR}_FILENO values. When this happens, all subsequent accesses to the stdio files will fail and early console access won't work. To avoid this, don't close the file descriptor if that equals with any of the STD*_FILENO values. Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-rw-r--r--early.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/early.c b/early.c
index 27d0929..204623b 100644
--- a/early.c
+++ b/early.c
@@ -65,7 +65,11 @@ static void early_console(const char *dev)
dup2(dd, STDIN_FILENO);
dup2(dd, STDOUT_FILENO);
dup2(dd, STDERR_FILENO);
- close(dd);
+
+ if (dd != STDIN_FILENO &&
+ dd != STDOUT_FILENO &&
+ dd != STDERR_FILENO)
+ close(dd);
}
static void early_env(void)