aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/cttyhack.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/shell/cttyhack.c b/shell/cttyhack.c
index a80d49dc3..3a78bae29 100644
--- a/shell/cttyhack.c
+++ b/shell/cttyhack.c
@@ -13,7 +13,6 @@
//config:config CTTYHACK
//config: bool "cttyhack"
//config: default y
-//config: depends on PLATFORM_LINUX
//config: help
//config: One common problem reported on the mailing list is "can't access tty;
//config: job control turned off" error message which typically appears when
@@ -59,6 +58,10 @@
//usage: "\nStarting interactive shell from boot shell script:"
//usage: "\n setsid cttyhack sh"
+#if !defined(__linux__) && !defined(TIOCGSERIAL)
+# warning cttyhack will not be able to detect a controlling tty on this system
+#endif
+
/* From <linux/vt.h> */
struct vt_stat {
unsigned short v_active; /* active vt */
@@ -112,13 +115,19 @@ int cttyhack_main(int argc UNUSED_PARAM, char **argv)
close(fd);
} else {
/* We don't have ctty (or don't have "/dev/tty" node...) */
- if (ioctl(0, TIOCGSERIAL, &u.sr) == 0) {
+ if (0) {}
+#ifdef TIOCGSERIAL
+ else if (ioctl(0, TIOCGSERIAL, &u.sr) == 0) {
/* this is a serial console */
sprintf(console + 8, "S%d", u.sr.line);
- } else if (ioctl(0, VT_GETSTATE, &u.vt) == 0) {
+ }
+#endif
+#ifdef __linux__
+ else if (ioctl(0, VT_GETSTATE, &u.vt) == 0) {
/* this is linux virtual tty */
sprintf(console + 8, "S%d" + 1, u.vt.v_active);
}
+#endif
if (console[8]) {
fd = xopen(console, O_RDWR);
//bb_error_msg("switching to '%s'", console);