X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/bb3d9b5a7d9f27925fc7284fcb2394b29406be8d..385fcebc577fc7002f25313cbc70de3b4d69c99e:/tetris/input.c?ds=sidebyside diff --git a/tetris/input.c b/tetris/input.c index b21ad834..cae49c8a 100644 --- a/tetris/input.c +++ b/tetris/input.c @@ -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 #include +#include #include #include @@ -65,44 +66,41 @@ } /* - * 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