]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - tetris/input.c
Sort and remove duplicates.
[bsdgames-darwin.git] / tetris / input.c
index b21ad834527241251b5fd040f17a684304d60114..cae49c8a5694d429c96c56c52fe4c3f2ec8472b7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: input.c,v 1.4 1999/01/03 02:00:17 hubertf Exp $        */
+/*     $NetBSD: input.c,v 1.8 2002/12/29 15:12:17 kristerw Exp $       */
 
 /*-
  * Copyright (c) 1992, 1993
@@ -44,6 +44,7 @@
 
 #include <sys/types.h>
 #include <sys/time.h>
+#include <sys/poll.h>
 
 #include <errno.h>
 #include <unistd.h>
        }
 
 /*
- * Do a `read wait': select for reading from stdin, with timeout *tvp.
+ * Do a `read wait': poll for reading from stdin, with timeout *tvp.
  * On return, modify *tvp to reflect the amount of time spent waiting.
  * It will be positive only if input appeared before the time ran out;
  * otherwise it will be zero or perhaps negative.
  *
- * If tvp is nil, wait forever, but return if select is interrupted.
+ * If tvp is nil, wait forever, but return if poll is interrupted.
  *
  * Return 0 => no input, 1 => can read() from stdin
  */
 int
 rwait(tvp)
-       register struct timeval *tvp;
+       struct timeval *tvp;
 {
-       int i;
-       struct timeval starttv, endtv, *s;
+       struct pollfd set[1];
+       struct timeval starttv, endtv;
+       int timeout;
 #define        NILTZ ((struct timezone *)0)
 
-       /*
-        * Someday, select() will do this for us.
-        * Just in case that day is now, and no one has
-        * changed this, we use a temporary.
-        */
        if (tvp) {
                (void) gettimeofday(&starttv, NILTZ);
                endtv = *tvp;
-               s = &endtv;
+               timeout = tvp->tv_sec * 1000 + tvp->tv_usec / 1000;
        } else
-               s = 0;
+               timeout = INFTIM;
 again:
-       i = 1;
-       switch (select(1, (fd_set *)&i, (fd_set *)0, (fd_set *)0, s)) {
+       set[0].fd = STDIN_FILENO;
+       set[0].events = POLLIN;
+       switch (poll(set, 1, timeout)) {
 
        case -1:
                if (tvp == 0)
                        return (-1);
                if (errno == EINTR)
                        goto again;
-               stop("select failed, help");
+               stop("poll failed, help");
                /* NOTREACHED */
 
        case 0: /* timed out */
@@ -120,7 +118,7 @@ again:
 }
 
 /*
- * `sleep' for the current turn time (using select).
+ * `sleep' for the current turn time.
  * Eat any input that might be available.
  */
 void