tool_sleep.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /***************************************************************************
  2. * _ _ ____ _
  3. * Project ___| | | | _ \| |
  4. * / __| | | | |_) | |
  5. * | (__| |_| | _ <| |___
  6. * \___|\___/|_| \_\_____|
  7. *
  8. * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
  9. *
  10. * This software is licensed as described in the file COPYING, which
  11. * you should have received as part of this distribution. The terms
  12. * are also available at https://curl.se/docs/copyright.html.
  13. *
  14. * You may opt to use, copy, modify, merge, publish, distribute and/or sell
  15. * copies of the Software, and permit persons to whom the Software is
  16. * furnished to do so, under the terms of the COPYING file.
  17. *
  18. * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  19. * KIND, either express or implied.
  20. *
  21. * SPDX-License-Identifier: curl
  22. *
  23. ***************************************************************************/
  24. #include "tool_setup.h"
  25. #ifdef HAVE_SYS_SELECT_H
  26. # include <sys/select.h>
  27. #elif defined(HAVE_UNISTD_H)
  28. # include <unistd.h>
  29. #endif
  30. #ifdef HAVE_POLL_H
  31. # include <poll.h>
  32. #elif defined(HAVE_SYS_POLL_H)
  33. # include <sys/poll.h>
  34. #endif
  35. #ifdef MSDOS
  36. # include <dos.h>
  37. #endif
  38. #include "tool_sleep.h"
  39. #include "memdebug.h" /* keep this as LAST include */
  40. void tool_go_sleep(long ms)
  41. {
  42. #if defined(MSDOS)
  43. delay(ms);
  44. #elif defined(_WIN32)
  45. Sleep((DWORD)ms);
  46. #elif defined(HAVE_POLL_FINE)
  47. (void)poll((void *)0, 0, (int)ms);
  48. #else
  49. struct timeval timeout;
  50. timeout.tv_sec = ms / 1000L;
  51. ms = ms % 1000L;
  52. timeout.tv_usec = (int)ms * 1000;
  53. select(0, NULL, NULL, NULL, &timeout);
  54. #endif
  55. }