cttyhack: serial console detection is Linux-specific
authorJeremie Koenig <jk@jk.fr.eu.org>
Fri, 30 Jul 2010 04:21:21 +0000 (06:21 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 30 Jul 2010 15:40:37 +0000 (17:40 +0200)
Signed-off-by: Jeremie Koenig <jk@jk.fr.eu.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
shell/cttyhack.c

index a80d49dc355cf9cabe05f3a1b36882056954e263..3a78bae29fde072c8d1ed3d1bab6f2a696e9f0b8 100644 (file)
@@ -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
 //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);