--- gforth/engine/select.c 1997/05/21 20:40:11 1.1 +++ gforth/engine/select.c 1998/12/13 23:30:03 1.4 @@ -1,6 +1,6 @@ /* select replacement for DOS computers for ms only - Copyright (C) 1995 Free Software Foundation, Inc. + Copyright (C) 1995,1998 Free Software Foundation, Inc. This file is part of Gforth. @@ -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))); }