* krlogin.c
authorRichard Basch <probe@mit.edu>
Wed, 28 Dec 1994 23:30:34 +0000 (23:30 +0000)
committerRichard Basch <probe@mit.edu>
Wed, 28 Dec 1994 23:30:34 +0000 (23:30 +0000)
* krlogind.c
* krsh.c
* krshd.c
   Corrected the arguments to select, based on sizeof fd_set.
Converted what remained to use FD_* macros, instead of bitshift

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

src/appl/bsd/ChangeLog
src/appl/bsd/krlogin.c
src/appl/bsd/krlogind.c
src/appl/bsd/krsh.c
src/appl/bsd/krshd.c

index c51c6ca51a9c186de98e45effafcb465a0bcb85e..2667ac9072774cdf40d4ad3fd341d2c4babf5218 100644 (file)
@@ -1,5 +1,12 @@
 Wed Dec 28 14:59:58 1994  Richard Basch  (probe@tardis)
 
+       * krlogin.c
+       * krlogind.c
+       * krsh.c
+       * krshd.c
+               Corrected the arguments to select, based on sizeof fd_set.
+               Converted what remained to use FD_* macros, instead of bitshift
+
        * login.c
                Changed uid_type to uid_t, gid_type to gid_t
                Added shadow password support
index 508b0d3b58a10db1136d9a84682c54558cab296b..5b69465727d5b6d2144463f72a9fe4a8e8ba3fb7 100644 (file)
@@ -1010,7 +1010,7 @@ writer()
     for (;;) {
        FD_ZERO(&waitread);
        FD_SET(0, &waitread);
-       n = select(1, &waitread, 0, 0, 0, 0);
+       n = select(8*sizeof(waitread), &waitread, 0, 0, 0, 0);
        if (n < 0 && errno == EINTR)
          continue;
        if (n > 0)
index 44688a1b5f5e6b78db0220fdb65b440412afaa5e..c894ddad7dedaec75eb7938aed2b96bc586545e8 100644 (file)
@@ -953,7 +953,7 @@ protocol(f, p)
                FD_SET(p, &ibits);
        FD_SET(p, &ebits);
        
-       if (select(16, &ibits, &obits, &ebits, 0) < 0) {
+       if (select(8*sizeof(ibits), &ibits, &obits, &ebits, 0) < 0) {
            if (errno == EINTR)
              continue;
            fatalperror(f, "select");
index 7bfba4ea13714b6985fded94d0921c727ae7ad57..f863d70e761ed82125af992dc74bd530f40aabd6 100644 (file)
@@ -44,6 +44,10 @@ char copyright[] =
 #include <pwd.h>
 #include <netdb.h>
 
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+
 #ifdef HAVE_SYS_FILIO_H
 /* get FIONBIO from sys/filio.h, so what if it is a compatibility feature */
 #include <sys/filio.h>
@@ -101,7 +105,7 @@ main(argc, argv0)
     char *host=0, *cp, **ap, buf[BUFSIZ], *args, **argv = argv0, *user = 0;
     register int cc;
     struct passwd *pwd;
-    int readfrom, ready;
+    fd_set readfrom, ready;
     int one = 1;
     struct servent *sp;
 #ifdef POSIX_SIGNALS
@@ -392,7 +396,10 @@ main(argc, argv0)
     ioctl(rfd2, FIONBIO, &one);
     ioctl(rem, FIONBIO, &one);
     if (nflag == 0 && pid == 0) {
-       char *bp; int rembits, wc;
+       char *bp;
+       int wc;
+       fd_set rembits;
+       
        (void) close(rfd2);
       reread:
        errno = 0;
@@ -401,15 +408,16 @@ main(argc, argv0)
          goto done;
        bp = buf;
       rewrite:
-       rembits = 1<<rem;
-       if (select(16, 0, &rembits, 0, 0) < 0) {
+       FD_ZERO(&rembits);
+       FD_SET(rem, &rembits);
+       if (select(8*sizeof(rembits), 0, &rembits, 0, 0) < 0) {
            if (errno != EINTR) {
                perror("select");
                exit(1);
            }
            goto rewrite;
        }
-       if ((rembits & (1<<rem)) == 0)
+       if (FD_ISSET(rem, &rembits) == 0)
          goto rewrite;
        wc = write(rem, bp, cc);
        if (wc < 0) {
@@ -432,35 +440,37 @@ main(argc, argv0)
     sigsetmask(omask);
 #endif
 #endif /* POSIX_SIGNALS */
-    readfrom = (1<<rfd2) | (1<<rem);
+    FD_ZERO(&readfrom);
+    FD_SET(rfd2, &readfrom);
+    FD_SET(rem, &readfrom);
     do {
        ready = readfrom;
-       if (select(16, &ready, 0, 0, 0) < 0) {
+       if (select(8*sizeof(ready), &ready, 0, 0, 0) < 0) {
            if (errno != EINTR) {
                perror("select");
                exit(1);
            }
            continue;
        }
-       if (ready & (1<<rfd2)) {
+       if (FD_ISSET(rfd2, &ready)) {
            errno = 0;
            cc = read(rfd2, buf, sizeof buf);
            if (cc <= 0) {
                if ((errno != EWOULDBLOCK) && (errno != EAGAIN))
-                 readfrom &= ~(1<<rfd2);
+                   FD_CLR(rfd2, &readfrom);
            } else
              (void) write(2, buf, cc);
        }
-       if (ready & (1<<rem)) {
+       if (FD_ISSET(rem, &ready)) {
            errno = 0;
            cc = read(rem, buf, sizeof buf);
            if (cc <= 0) {
                if ((errno != EWOULDBLOCK) && (errno != EAGAIN))
-                 readfrom &= ~(1<<rem);
+                   FD_CLR(rem, &readfrom);
            } else
              (void) write(1, buf, cc);
        }
-    } while (readfrom);
+    } while (FD_ISSET(rem, &readfrom) || FD_ISSET(rfd2, &readfrom));
     if (nflag == 0)
       (void) kill(pid, SIGKILL);
     exit(0);
index 1a9e3e5dc8d6d87974fa6c5c9fd14b2885f7afb5..413e42e6347fb54ea3d48e38ac4f9366b3ba4635 100644 (file)
@@ -1063,7 +1063,7 @@ doit(f, fromp)
            /* should set s nbio! */
            do {
                ready = readfrom;
-               if (select(16, &ready, (fd_set *)0,
+               if (select(8*sizeof(ready), &ready, (fd_set *)0,
                           (fd_set *)0, (struct timeval *)0) < 0)
                  break;
                if (FD_ISSET(s, &ready)) {