--- gforth/engine/select.c 1997/05/21 20:40:11 1.1 +++ gforth/engine/select.c 2003/08/25 14:17:52 1.7 @@ -1,6 +1,6 @@ /* select replacement for DOS computers for ms only - Copyright (C) 1995 Free Software Foundation, Inc. + Copyright (C) 1995,1998,2000,2003 Free Software Foundation, Inc. This file is part of Gforth. @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. */ @@ -31,22 +31,13 @@ int select(int n, fd_set *a, fd_set *b, gettimeofday(&time1,&zone1); time1.tv_sec += timeout->tv_sec; time1.tv_usec += timeout->tv_usec; - if(time1.tv_usec >= 1000000) - { - time1.tv_sec += time1.tv_usec / 1000000; - time1.tv_usec %= 1000000; - } - do - { - gettimeofday(&time2,&zone1); - } - while(time2.tv_sec < time1.tv_sec); - - do - { - gettimeofday(&time2,&zone1); - } - while(time2.tv_usec < time1.tv_usec && - time2.tv_sec == time1.tv_sec); - + if(time1.tv_usec >= 1000000) { + time1.tv_sec += time1.tv_usec / 1000000; + time1.tv_usec %= 1000000; + } + do { + gettimeofday(&time2,&zone1); + } while((time2.tv_sec < time1.tv_sec) || + ((time2.tv_usec < time1.tv_usec) && + (time2.tv_sec == time1.tv_sec))); }