Mercurial > hg > octave-lyh
diff src/cutils.c @ 4086:ddc722b38e87
[project @ 2002-10-03 19:08:45 by jwe]
author | jwe |
---|---|
date | Thu, 03 Oct 2002 19:08:45 +0000 |
parents | babc519f245b |
children | 0435429c1050 |
line wrap: on
line diff
--- a/src/cutils.c +++ b/src/cutils.c @@ -24,6 +24,17 @@ #include <config.h> #endif +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#if defined (__WIN32__) && ! defined (_POSIX_VERSION) + +#include <windows.h> + +#else + #ifdef HAVE_UNISTD_H #ifdef HAVE_SYS_TYPES_H #include <sys/types.h> @@ -39,37 +50,7 @@ #include <sys/poll.h> #endif -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -static void -do_octave_usleep (unsigned int useconds) -{ -#if defined (HAVE_USLEEP) - - usleep (useconds); - -#elif defined (HAVE_SELECT) - - struct timeval delay; - - delay.tv_sec = 0; - delay.tv_usec = useconds; - - select (0, 0, 0, 0, &delay); - -#elif defined (HAVE_POLL) - - struct pollfd pfd; - int delay = useconds / 1000; - - if (delay > 0) - poll (&fd, 0, delay); - #endif -} void octave_sleep (unsigned int seconds) @@ -88,9 +69,42 @@ unsigned int usec = useconds % 1000000; if (sec > 0) - sleep (sec); + octave_sleep (sec); + +#if defined (__WIN32__) && ! defined (_POSIX_VERSION) + + /* Round to the nearest millisecond, with a minimum of 1 millisecond + if usleep was called with a a non-zero value. */ + + if (usec > 500) + Sleep ((usec+500)/1000); + else if (usec > 0) + Sleep (1); + else + Sleep (0); + +#elif defined (HAVE_USLEEP) + + usleep (usec); - do_octave_usleep (usec); +#elif defined (HAVE_SELECT) + + struct timeval delay; + + delay.tv_sec = 0; + delay.tv_usec = usec; + + select (0, 0, 0, 0, &delay); + +#elif defined (HAVE_POLL) + + struct pollfd pfd; + int delay = usec / 1000; + + if (delay > 0) + poll (&fd, 0, delay); + +#endif } int