Don't use the TIOCLSET ioctl unless we're not using POSIX_TERMIOS.
authorTheodore Tso <tytso@mit.edu>
Thu, 6 Jul 1995 00:05:35 +0000 (00:05 +0000)
committerTheodore Tso <tytso@mit.edu>
Thu, 6 Jul 1995 00:05:35 +0000 (00:05 +0000)
Don't just blindly set the file status flags to 0.  Instead, do a
fcntl(0, F_GETFL), and then reset the nonblocking flags.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@6227 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/bsd/ChangeLog
src/appl/bsd/login.c

index 148886cd09c4899e3b62a4378157b3462a184c87..f7321f5558c4bcd759fdd881d99b7b6533f5968f 100644 (file)
@@ -1,3 +1,10 @@
+Wed Jul  5 20:03:37 1995  Theodore Y. Ts'o  (tytso@dcl)
+
+       * login.c (main): Don't use the TIOCLSET ioctl unless we're not
+               using POSIX_TERMIOS.  Don't just blindly set the file
+               status flags to 0.  Instead, do a fcntl(0, F_GETFL), and
+               then reset the nonblocking flags.
+
 Sun Jul  2 19:48:27 1995  Sam Hartman  <hartmans@tertius.mit.edu>
 
        * krcp.c: make errno extern
index 958fb234271e91b5741f6ab986980e437a4e0096..d32f6fc942a001f96fdd588743dd422eee539392 100644 (file)
@@ -399,17 +399,24 @@ int main(argc, argv)
        if (*argv)
                username = *argv;
 
-#if !defined(_AIX)
+#if !defined(POSIX_TERMIOS) && defined(TIOCLSET)
        ioctlval = 0;
-#ifdef TIOCLSET
-       /* linux, sco don't have this line discipline interface */
+       /* Only do this we we're not using POSIX_TERMIOS */
        (void)ioctl(0, TIOCLSET, (char *)&ioctlval);
 #endif
+       
 #ifdef TIOCNXCL
        (void)ioctl(0, TIOCNXCL, (char *)0);
 #endif
-       (void)fcntl(0, F_SETFL, ioctlval);
+       
+       ioctlval = fcntl(0, F_GETFL);
+#ifdef O_NONBLOCK
+       ioctlval &= ~O_NONBLOCK;
+#endif
+#ifdef O_NDELAY
+       ioctlval &= ~O_NDELAY;
 #endif
+       (void)fcntl(0, F_SETFL, ioctlval);
 
 #ifdef POSIX_TERMIOS
        (void)tcgetattr(0, &tc);